2014年10月23日木曜日

Homebrew でインストールした MySQL で /tmp/mysql.sock が開けなかった時の対応


バージョン確認
  
$ sw_vers -productName
Mac OS X

$ sw_vers -productVersion 
10.10

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.21, for osx10.10 (x86_64) using  EditLine wrapper

$ brew -v
Homebrew 0.9.5

バージョン確認してみるが失敗 '/tmp/mysql.sock'が無い
  
$ /usr/local/Cellar/mysql/5.6.21/bin/mysql -version
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

起動失敗。Service is disabled

$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/hogehoge.local.pid).

エラー確認
  
$ tail -n 10  /usr/local/var/mysql/hogehoge.local.err
tail: /usr/local/var/mysql/hogehoge.local.err: Permission denied

パーミッション確認
  
$ ls /usr/local/var/mysql
-rw-r-----+  1 _mysql      wheel    597055 10 23 13:05 hogehoge.local.err
-rw-r--r--+  1 user_name   wheel      4772  4 12  2012 my.cnf
drwx------+ 74 user_name   wheel      2516  4 12  2012 mysql

パーミッション変更
ファイルオーナーがuser_nameなので、_mysqlに変更
  
$ sudo chown -R _mysql /usr/local/var/mysql
$ sudo chmod -R o+rwx /usr/local/var/mysql

再度、起動。成功。
  
$ mysql.server start

ソケットファイル存在確認
  
$ ls -al /tmp/mysql.sock
srwxrwxrwx  1 _mysql  wheel  0 10 23 13:09 /tmp/mysql.sock

2014年10月8日水曜日

Apple Wireless Keyboard に、お茶をこぼしたときの話

Apple Wireless Keyboard に、お茶をこぼしたときの話

やっちまった

お茶の入ったコップを、キーボード上で勢い良く移動。
お茶が波打って、キーボードに少しかかる。
急いで拭き取る。
しばらくして、問題発覚。
キーボードビュアーを表示して、詳細を確認する。

症状


b -> ⌘ + b
[ -> ⌘ + [
Left ⌘ -> ⌘ + b
Right ⌘ -> ⌘ + [
0 -> 0-
- -> 0-

bのキーを押すと、⌘ + bと解釈されている。
⌘のキーを押すと、⌘ + bと解釈されている。

保存のショートカット⌘ + sを押そうとすると、
⌘のキーを押した時点で、⌘ + bと解釈さる。

0のキーを押すと、0と-(ハイフン)が入力される
-(ハイフン)のキーを押すと、0と-(ハイフン)が入力される

一般的な対応をしてみる

1. 再起動 効果無し
2. pramリセット 効果無し


調査

システム環境設定 の キーボード の 修飾キーの設定で、
Commandキー(⌘)をoffにすると
b -> b
[ -> [
となる

システム環境設定 の キーボード の 修飾キーの設定で、
CommandキーにCaps Lockキーを割り当てると、Caps Lockキーとして動く。
b -> b
[ -> [
Left ⌘ -> ⌘
Right ⌘ -> ⌘
となる

CommandキーとCaps Lockキーをスワップすると、
リマップしたCommandキーは意図通りに動く。
リマップしたCaps Lockキーと、b 、[ で、問題が発生。
b -> Shift + b
[ -> Shift + [
Left Cpas Lock -> Shift + b
Right Cpas Lock -> Shift + [

どうやら、キーボードレイアウトデータがおかしいらしい。


解決


システム環境設定 の キーボード の 入力ソース から U.S.追加 U.S.に切り替え
U.S. で、症状が出ないことを確認
ことえりを削除、後、ことえりを追加
ことえり で、症状が出ないことを確認

2014年7月12日土曜日

Ruby で Terminal の文字を1秒ごとに flush して、 count down する


Rubyでカウントダウン。
ターミナルの文字を1秒毎にフラッシュする。
RubyでTerminalの文字を1秒ごとにflushして、count down する

ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin13.1.0]


#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-

#
def move_left
  print "\e[1D"
end

#
def del_char
  print "\e[1D"
  print " "
end

#
def del_line(n)
  #print "\e[1D"
  n.times do |x|
      del_char
      move_left
  end
end

#
def count_down(num)
  num.times do |x|
    print num - x
    sleep(1)
    n = num.to_s.length
    del_line(n)
  end
end

if __FILE__ == $0
  
  num = 15
  count_down(num)
  print "\a"
end

__END__

=begin
\e[1A <- up
\e[1B <- down
\e[1C <- right
\e[1D <- left
\a    <- beep
=end

Rubyで Stringで指定された名前の、instanceをdynamicに生成する

#文字列を指定して、動的にインスタンスを生成できるか?
#指定したStringで、instanceをdynamicに生成する
#インスタンス変数を動的に作成する

ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin13.1.0]


#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-

class Cat
    def initialize(name)
        @name = name
    end
    attr_accessor :name
    #attr_reader :name
    def say
        puts "hello i'm #{@name}."
    end
end

if __FILE__ == $0

  class_name = "Cat"
  name_of_cat = "chibi"
  res = eval "@#{name_of_cat} = #{class_name}.new('#{name_of_cat}')"
  p res
  @chibi.say

  puts "----"
  puts
  
  cat_name_list =["tama", "mike", "kuro"]
  cat_name_list.each do | cat_name|
    eval "@#{cat_name} = #{class_name}.new('#{cat_name}')"
  end
  
  cat_name_list.each do | cat_name |
    eval "@#{cat_name}.say"
  end
  
  
end

__END__

2014年7月11日金曜日

Mac の Terminal から、file を、GUI アプリで open する。


Mac の Terminal から、file を、GUI アプリで open する。

テキストファイルをコマンドラインから開く
open -a TextEdit sample.text
open -a CotEditor sample.text
open -a /Applications/TextWrangler.app sample.text

画像ファイルをコマンドラインから開く
open -a /Applications/Preview.app ~/Pictures/sample.jpg

動画ファイルをコマンドラインから開く
open -a /Applications/MPlayerX.app ~/Movies/sample.mp4

フォルダをファインダーで開く
open 'file://localhost/Volumes/Macintosh HD/Applications/'

URLを既定のブラウザで開く
open http://www.apple.com/

2014年6月4日水曜日

Mac OS X の Terminal で wav ファイルを m4a ファイルに 変換する


コマンドラインでwavファイルをm4aファイルに変換する


sayコマンドでwavを作る
$ say -v kyoko "こんにちは" -o ~/Music/hi.wav --data-format=LEF32@8000
出力フォーマットを指定しない場合は、aiffになる

wavファイルを mp4 audioファイルに変換する
$ afconvert ~/Music/hi.wav -f 'mp4f' -d 'aac' ~/Music/hi.m4a

コマンドラインで、変換済みのファイルを再生する
$ afplay ~/Music/hi.m4a &

コマンドラインで mp3 に変換する

brew install lame してある場合
$ /usr/local/bin/lame --alt-preset cbr 128 ~/Music/say_talk.wav

brew install ffmpegしてある場合
$ /usr/local/bin/ffmpeg -i ~/Music/hi.wav  -f mp3 -acodec libmp3lame ~/Music/hi.mp3

Mac OS X の command line で spotlight


command line で spotlight

コマンドラインで spotlight

rubyという単語を含むファイルを探す
$ mdfind "ruby"

rubyとrailstを含むファイルを探す
$ mdfind "ruby && rails "
mdfind "ruby  rails "

rubyとrailstまたはpythonとdjangoを含むファイルを探す
$ mdfind "(ruby && rails)||(python && django) "

rubyという単語を含み、かつ、pythonまたはperlという単語を含まないファイルを探す
$ mdfind "ruby -python -perl"


rubyという文字を含んだファイル名、かつ、pdfファイルを探す
$ mdfind "(kMDItemDisplayName = *ruby*) && (kMDItemContentType = com.adobe.pdf)"


mdls コマンドで、ファイルやフォルダのメタデータ属性の詳細を確認できる。


kMDItemKind = "Portable Document Format(PDF)"
kMDItemContentType = "com.adobe.pdf"
kMDItemNumberOfPages = 40
kMDItemFSSize = 840659
kMDItemLogicalSize = 840659
kMDItemFSName = "scheme-in-ruby.pdf"
kMDItemDisplayName = "scheme-in-ruby.pdf"

kMDItemKind = "電子出版物(ePub)"
kMDItemContentType = "org.idpf.epub-container"

kMDItemKind = "Video Media"
kMDItemContentType = "public.mpeg-4"
kMDItemDurationSeconds = 343.3983333333333
kMDItemPixelHeight = 720
kMDItemPixelWidth = 1280


kMDItemFSCreationDate = 2013-04-16 07:46:24 +0000
kMDItemContentCreationDate = 2013-04-16 07:46:24 +0000
kMDItemContentModificationDate = 2013-04-16 07:46:24 +0000


kMDItemKind = "Apple MPEG-4 オーディオ"
kMDItemContentType = "com.apple.m4a-audio"

kMDItemKind = "MP3 オーディオ"
kMDItemContentType = "public.mp3"
kMDItemAudioBitRate = 266000
kMDItemAudioChannelCount = 2
kMDItemAudioSampleRate = 44100
kMDItemDurationSeconds = 341.0808163265306


kMDItemKind = "JPEG イメージ"
kMDItemContentType = "public.jpeg"
kMDItemProfileName = "sRGB IEC61966-2.1"
kMDItemPixelHeight = 1244
kMDItemPixelWidth = 2122
kMDItemResolutionHeightDPI = 72
kMDItemResolutionWidthDPI = 72
kMDItemCreator = "Adobe Photoshop CS2 Windows"

kMDItemKind = "PNG イメージ"
kMDItemContentType = "public.png"
kMDItemResolutionHeightDPI = 300
kMDItemResolutionWidthDPI = 300
kMDItemCreator = "Adobe ImageReady"

kMDItemKind = "RAR Archive"
kMDItemContentType = "com.rarlab.rar-archive"

kMDItemKind = "ZIP アーカイブ"
kMDItemContentType = "public.zip-archive"

Mac OS X ターミナルから screenshot を 撮る

したいこと・しりたいこと・目標

Mac OS X の ターミナルから screenshot を 撮る
Mac OS X のTerminal から screenshot を 撮る
Mac OS X のCommand line から screenshot を 撮る
command line から screen caputre

実行サンプル
$screencapture ~/Pictures/screenshot_`date +%Y-%m-%d_%H%M%S`.jpg

実行サンプル カーソル付き
$screencapture -C ~/Pictures/screenshot_`date +%Y-%m-%d_%H%M%S`.jpg

実行サンプル カーソル付き、消音
$screencapture -xC ~/Pictures/screenshot_`date +%Y-%m-%d_%H%M%S`.jpg 

Mac OS X の コマンドラインから iSight で 撮影

Mac OS X の コマンドラインから iSight で 撮影

Mac OS X の コマンドラインから iSight で 撮影
Mac OS X の command line から iSight で 撮影

前提

Homebrewがインストール済みである

コマンドをインストール
$ brew install imagesnap

実行
$ imagesnap ~/Pictures/camera_`date +%Y-%m-%d_%H%M%S`.jpg

コマンドラインにメッセージを出さずに実行
$ imagesnap -q ~/Pictures/camera_`date +%Y-%m-%d_%H%M%S`.jpg

コマンドラインにメッセージを出さずに、かつ、3.5秒のウェイトをつけて実行
$ imagesnap -q -w 3.5 ~/Pictures/camera_`date +%Y-%m-%d_%H%M%S`.jpg

参考

http://iharder.sourceforge.net/current/macosx/imagesnap/
http://iharder.sourceforge.net/current/macosx/imagesnap/

Ruby から Mac OS X の Notification Center に通知を送る

rubyからMac OS XのNotification Centerに通知を送る


gemのインストール
$ gem install terminal-notifier      

サンプルファイル notification.rb
TerminalNotifier.notify('Hello World', :title => 'Terminal', :subtitle => 'Programming Language Ruby', :sound => 'Hero')     

実行
$ ruby notification.rb     

参考

https://github.com/alloy/terminal-notifier/
https://github.com/alloy/terminal-notifier/

コマンドラインで誤って大事なファイルを削除しないために rmtrash を使う


コマンドラインで誤って大事なファイルを削除しないためにrmtrashを使う


前提

Homebrewがインストールされている
Homebrew
http://brew.sh

rmtrashコマンドをインストール
$ brew install rmtrash

~/.bash_profile に 以下追記
alias rm="echo Use del, or full path name for rm"
alias del="rmtrash" #del is shorter as rmtrash, or simply use rmtrash directly

使い方

$ rm foo.txt
Use del, or full path name for rm foo.txt
警告される

$ del foo.txt
としても、
foo.txtは削除されず、~/.Trash/foo.txtに移動されるだけ。

ゴミ箱の中に移動されるだけなので、間違えたら戻すことができる。
ゴミ箱を空にした場合は、戻せない。

参考

http://apple.stackexchange.com/questions/17622/how-can-i-make-rm-move-files-to-the-trash-can
http://apple.stackexchange.com/questions/17622/how-can-i-make-rm-move-files-to-the-trash-can

2014年4月17日木曜日

docker 0.10.0 で ubuntu 14.04 の Custom Base Image を作成する


docker 0.10.0 で ubuntu 14.04 の Custom Base Image を作成する

環境

ubuntu 14.04 beta

debootstra(インストーラ)をインストール。

$ sudo apt-get install debootstra

作業ディレクトリの作成。

$ mkdir ~/dockerImage
$ cd ~/dockerImage

turstyディレクトリを自動作成し、必要なファイルを集める。

$ sudo debootstrap trusty trusty > /dev/null
$ ls

turstyディレクトリをdockerイメージとしてインポートする

$ sudo tar -C trusty -c . | sudo docker import - trusty:14.04
$ sudo docker images

不要なものは消す

$ sudo rm -R ./trusty

参考

Create a Base Image
http://docs.docker.io/en/latest/articles/baseimages/

2014年4月16日水曜日

Fedora19 から Fedora20 へのアップグレード

Fedora19 から Fedora20 へのアップグレードした

環境

Fedora19
VirtualBox 4.3.8

Fedora19 から Fedora20 へのアップグレード


fedupコマンドを使うのでインストール

# yum install fedup

fedora-releaseを更新

# yum update fedora-release

fedupを使ってFedora 20へアップグレード

# fedup --network 20

VBoxGuestAddition の更新


# VBOX_VERSION=$(cat /etc/vagabond_vbox_version)
# wget http://download.virtualbox.org/virtualbox/$VBOX_VERSION/VBoxGuestAdditions_$VBOX_VERSION.iso
# mount -o loop,ro VBoxGuestAdditions_$VBOX_VERSION.iso /mnt
# sudo sh /mnt/VBoxLinuxAdditions.run
# sudo umount /mnt

FreeBSD 10 で デスクトップ環境を構築する

FreeBSD 10 で デスクトップ環境を構築する

pkgの使い方


  • pkg update -f #パッケージのデータベースを最新版にする
  • pkg search curl #curlを探す
  • pkg info curl #curlの情報を見る
  • pkg install curl #curlをインストールする
  • pkg delete curl #インストール済みのcurlを削除する
  • pkg autoremove curl #不要なダウンロード済みパッケージを削除する
  • pkg upgrade #インストール済みのパッケージをすべてアップグレード

参考
freebsd.org/doc/handbook Using pkgng for Binary Package Management

Docker 0.10.0 を Ubuntu 14.04 で試す



環境


ubuntu 14.04 beta
$ uname -a
Linux krakenbeal-ubuntu1404 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

$ docker version
Client version: 0.10.0
Client API version: 1.10
Go version (client): go1.2.1
Git commit (client): dc9c28f

2014年4月15日火曜日

xv6 を ubuntu 上で動かしてみる


xv6とは、マサチューセッツ工科大学の教材として、UNIX v6を x86 CPU向けに ANSI Cで書きなおしたものです。

環境

ubuntu 14.04 beta

作業ディレクトリの用意


$ mkdir unix_v6
$ cd unix_v6

git と qemu の インストール


$ sudo apt-get install git qemu build-essential

$ which qemu
/usr/bin/qemu

$ ls /usr/bin | grep qemu-system

xv6 の ダウンロード


$ git clone git://pdos.csail.mit.edu/xv6/xv6.git

2013年7月3日水曜日

Ubuntu に Node.js を入れる

UbuntuにNode.jsを入れる

事前に必要なものをインストール

$ sudo apt-get update
$ sudo apt-get install git-core curl build-essential openssl libssl-dev


nvmをインストール

Node Version Manager
異なるのバージョンのNode.jsをインストールし、管理できる

$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh
$ ls ~/.nvm

~/.bashrc 以下1行追記
. ~/.nvm/nvm.sh

~/.bashrc を反映する
$ source ~/.bashrc


Node.js のインストール


インストール可能バージョンを調べる
$ nvm ls-remote

Node.js のインストール
$ nvm install v0.11.3

インストール済みバージョンを調べる
$ nvm ls
$ nvm use v0.11.3
$ node -v

.bashrc 以下1行追記
nvm use 0.11.3

~/.bashrc を反映する
$ source ~/.bashrc


Node.jsのバージョンを調べる
$ node --version
$ node -v


Node.jsを起動してみる
$ node

Node.jsの終了の仕方

> process.kill()

または

> process.exit()

Node Package Manager


npm バージョン確認
$ npm --version
$ npm -v



npmを使ってcoffee-scriptをインストール


coffee-scriptをインストール
$ npm install -g coffee-script
$ coffee --version
$ cofee -v


coffee-scriptを実行
$ coffee test.coffee

coffee-scriptをjsにコンパイル
$ coffee -c test.coffee

jsにコンパイルされたコードの実行
$ node test.js

coffee-scriptをアンインストールする
$ npm uninstall -g coffee-script




Mint Linux 14 nadia から Mint Linux 15 oliviaへアップグレードする


したこと


Mint Linux 14 nadiaで更新ファイルが無いか確認。
あったらアップグレードする
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade


sources.listを変更
$ sudo sed -i 's/quantal/raring/' /etc/apt/sources.list
$ sudo sed -i 's/nadia/olivia/' /etc/apt/sources.list

Mint Linux 15 oliviaへアップグレードする
$ sudo apt-get update
$ sudo apt-get dist-upgrade

その他

KDE版は
$ sudo sed -i 's/quantal/raring/' /etc/apt/sources.lis.d/ubuntu.list
$ sudo sed -i 's/nadia/olivia/' /etc/apt/sources.list.d/mint.list
となる

2013年7月2日火曜日

Mac用Web Browser リンク 2013年版


無料部門


Amaya
http://www.w3.org/Amaya/
w3c製。オーサリングツールとしても利用できる。


Camino
http://caminobrowser.org/
レンダリングエンジンにGekkoを採用


Chrome
http://www.google.com/intl/us/chrome/browser/
http://www.google.com/intl/ja/chrome/browser/
WebKitを元に、GoogleがChroniumを元に開発。Chroniumを元に開発されたウェブブラウザ。


Firefox
http://www.mozilla.org/en-US/
http://www.mozilla.jp/firefox/
NCSA Mosaicを受け継ぐ形で1994年にリリースされたウェブブラウザNetscapeの後継ウェブブラウザ。レンダリングエンジンにGekkoを採用。


Iron
http://www.srware.net/en/software_srware_iron.php
Chroniumを元に開発されたウェブブラウザ。


Maxton
http://www.maxthon.com/
中国の傲游製。


OmniWeb
http://www.omnigroup.com/products/omniweb/
1995年5月17日に1.0がリリース。Internet Explorerの1995年8月24日よりも前から存在しているブランド。


Opera
http://www.opera.com/
NCSA Mosaicを受け継ぐ形で開発されていないブラウザ。Netscape/Mozilla, Internet Explorerに続く第3のブラウザとも呼ばれたことがあった(過去形)。



QQBrowser
http://browser.qq.com/mac/
中国の検索サービス会社 腾讯网製。


Safari
http://www.apple.com/safari/
KDE環境用のウェブブラウザKonquerorのレンダリングエンジンKHTMLをベースに開発されたWebKitを元に、Appleが開発したウェブブラウザ。


seamonkey
http://www.seamonkey-project.org/
Mozilla製。オーサリングツールとしても利用できる。


Sleipnir
http://www.fenrir-inc.com/jp/sleipnir/
日本製。


Torch
http://www.torchbrowser.com/
WebKitを元に開発されたウェブブラウザ。


Yandex
http://browser.yandex.com/
WebKitを元に開発されたウェブブラウザ。ロシアの検索サービス会社Yandex製。

有料部門


iCab
http://www.icab.de/
レンダリングエンジンにWebKitを採用。


2013年5月24日金曜日

notify-send を使ってデスクトップに通知する


したいこと・しりたいこと・目標

プログラムから何かのメッセージを受け付け、受け取ったメッセージをデスクトップに通知する

環境

xubuntu 13.04 64bit

xubuntuの、デフォルトのnotifyd設定ファイル
/usr/share/dbus-1/services/org.xfce.xfce4-notifyd.Notifications.service

xubuntuの、デフォルトになっているnotifyデーモン
/usr/lib/x86_64-linux-gnu/xfce4/notifyd/xfce4-notifyd

command lineから、デスクトップに通知する
$ notify-send "my message"

pythonから、デスクトップに通知する
import os
s = "python message string"
os.system('notify-send "%s"' % s)

rubyから、デスクトップに通知する
s = "ruby message string"
result = system("notify-send \"#{s}\"")

その他

ubuntu 13.04では
notifyd設定ファイル
/usr/share/dbus-1/services/org.freedesktop.Notifications.service
notifyデーモン
/usr/lib/x86_64-linux-gnu/notify-osd