読者です 読者をやめる 読者になる 読者になる

Mac で CD-ROM (ISO)を作って焼く方法

たまにしかやらないので何時まで経っても覚えず、いつもやるときにググってるのも効率悪いなーと思ったので自分のブログにメモっておきます。

OSXでISOイメージを作成する方法


あらかじめフォルダをひとつ作って、その中が CD-ROMを開いたときにルートディレクトリになるようにファイルを配置する。

「ディスクユーティリティ」を起動する。

ファイル > 新規 > フォルダからのイメージ

フォルダを指定して、「イメージ」ボタンをクリック

イメージフォーマットを「ハイブリッドイメージ」に指定。

暗号化はなし。

これで、フォルダ名.dmg ができあがる。.dmgではあるが、ISOファイルである。

OSXでISOを焼く方法

おなじく「ディスクユーティリティ」を起動する。

「ディスクを作成」をクリックする

イメージを選んで「ディスクを作成」

で焼ける。

ターミナル(shell)の小技(ファイル名置換)

ファイル名を簡単に入力する

一生懸命ファイル名の補完を使って入力しても良いのですが、キータイプ数が
増えると入力ミスも増えるというもの。
そこで使うのが、ファイルグロブと呼ばれるファイル名の置換メカニズムです。

*を使うパターン

よくあるのは、* を使って、

% rm *.orig

で、古いファイルを削除するとかですね。
この * って 否定演算子として ^ も組み合わせて使えるって知ってました?

例えば、

% ls
apple banana 

% echo a*
apple
 #=> aから始まるファイル名にマッチ

% echo ^a*
banana
 #=> aから始まらないファイル名にマッチ

などという使い方ができます。

{ と }を使うパターン

もっと便利なのが、{ と } です。

一番多い出番は、手でバックアップするためにファイル名の最後に .orig とかつけたりするパターン。

% cp test.txt{,.orig}
#=> これは、cp test.txt test.txt.orig に展開される


{ } には、いくつでもカンマ区切りで並べれるので、

% mv test{1,2,3}.dat /path/to/data
#=> これは、mv test1.dat test2.dat test3.dat /path/to/data に展開される

こんな使い方もできます。

工夫次第で、自分の普段の入力をよりサポートしてくれると思います。

Have fun !

zsh でウィンドウ名に ホスト名とコマンド名を表示する

iterm2 で複数のタブを使っていたり、tmuxやscreenで複数のウインドウを開いていると、どの端末がどのホストにログインしているのか、何を実行中なのかといった情報が欲しくなります。
どうせなら各ウインドウにフォーカスを移さなくてもわかると便利ですよね。

そこで今回は、各ウィンドウ名に「ホスト名:実行中のコマンド名」というフォーマットで表示させることにします。

zshには preexec() と precmd()という組み込み関数があります。

preexec() コマンドを実行直前に呼び出される
precmd() プロンプトを表示直前に呼び出される

ここら辺の組み込み関数については、zshmisc(1) に記載されています。

preexec()でコマンド名を設定し、precmd() でコマンド名を消去すれば良さそうですね。

ホスト名は hostname コマンドを使って取得したものからホスト名部分を抽出します。

実行コマンドは$1 に入っています。ただし実際に実行コマンドのすべてを表示するのは冗長なので、実行コマンド名のみにして引数は表示しないようにしましょう。

早速設定例です。

preexec() {
    mycmd=(${(s: :)${1}})
    echo -ne "\ek$(hostname|awk 'BEGIN{FS="."}{print $1}'):$mycmd[1]\e\\"
}

precmd() {
    echo -ne "\ek$(hostname|awk 'BEGIN{FS="."}{print $1}'):idle\e\\"
}

ついでに、tmux のステータス欄でもウインドウ名を表示するようにしておきます。

set -g set-titles on
set -g set-titles-string '#W'

これで、どのホスト名のサーバで何を実行しているのかが一目瞭然です。

f:id:yizawa:20120918170929j:plain

OSXのリマインダーにEmacsから一発登録

Emacs の scratch buffer に ToDo をメモっておいたのに、Emacsを再起動させてしまって人生の指針を失ってしまうのは、だれもが通る道だと思います(;・∀・)

そんなことをグチグチといっていったら、Mac の大先生より「リマインダー使え、さもなくば死ね(一部誇張があります)」というありがたいお告げを頂いたので、早速リマインダーを使うことにしました。Emacsから。

"Calendar and Reminders Programming Guide" を読んでみましたが、Objective-C を使うのも牛刀なかんじだったので、さくっと諦めて Automator を使うことにします。

Automator を作る

Automator っていわゆるひとつの Apple Script 実行環境です(よね?)

今回は引数のファイルの中身をリマインダーのタイトルに使って、リマインダーへ新規に登録する Automator を作ります。

  • Automator を起動します。「アプリケーション」を「選択」します。

f:id:yizawa:20120820144814p:plain

  • アクションライブラリから「新規リマインダー項目」を右のワークフローにドラッグ&ドロップします。

f:id:yizawa:20120820144846p:plain

f:id:yizawa:20120820144948p:plain

  • シェルを「/bin/sh」に、入力の引渡し方法を「引数として」に設定します。

f:id:yizawa:20120820145010p:plain

  • これに名前をつけて保存します。

今回は、"createreminder.app"として保存しました。

Emacsから使う

Emacsから先ほどのAutometorを呼ぶ関数を定義します。

(defun send-reminder ()
  (interactive
  (save-excursion
    (let ((tempfile 
	   (make-temp-name
	    (expand-file-name "createreminder"
			      temporary-file-directory)))
	  (crem-prog "/Users/izawa/Documents/createreminder.app")
	  (title (read-string "Reminder: ")))
      (with-temp-buffer
	(insert (concat title "\n"))
	(write-region (point-min) (point-max) tempfile))
      (call-process "/usr/bin/automator" nil nil nil "-i" tempfile crem-prog)
      (delete-file tempfile)))))

これを C-c # から呼べるようにします。

(global-set-key [(?\C-c) (\#)] 'send-reminder)

これで、Emacsのミニバッファに入力した内容がリマインダーに登録されるようになります。

リマインダーをチェックする癖を付けないといけないという噂もありやなしや…。

tesseract で OCR 入門

tesseract とは

Googleで開発されているOCRエンジンです。(http://code.google.com/p/tesseract-ocr/)

とある所要で数字画像の認識エンジンが欲しくなったので、使ってみました。

インストール

ports で一発インストール。

# cd /usr/ports/graphics/tesseract/
# make instal clean

Mac なら brewで一発インストール。

% brew install tesseract

使ってみる

今回は、数字に限定して認識したかったので、文字種を0-9だけにすることで認識率を上げてみます。

準備するもの

  • 数字の写真

というわけで、とりあえず元素材をぱしゃり。

f:id:yizawa:20120424124504j:plain

これを Preview の画像cropを使って、切り取ります。

f:id:yizawa:20120424135138j:plain

number.jpg という名前で保存しました。

tiff に変換する

今回は、ImageMagickで変換します。

% convert number.jpg number.tiff

設定ファイルを作る

以下を、tess.conf として保存します。

tessedit_char_whitelist 0123456789

認識させてみる

では実際に、認識させてみます。今回の元画像は一行のテキストなので、psm で 7 を指定しています。

% tesseract number.tiff out -psm 7 tess.conf
Tesseract Open Source OCR Engine v3.01 with Leptonica
Page 0
%

認識結果は、out.txt に書かれています。

% cat out.txt
9784798032313

% 

んー素晴らしい。

さくらVPSにFreeBSD 9.0R を入れて virtio化したらディスク爆速すぎワロタ!

とりあえず、釣りっぽいタイトルにしてみました(・∀・)

 

一時期は人気過ぎて契約の予約待ち状態だった さくらの VPS ですが、一時期の過熱状態を脱したのか、先週の金曜日に普通に申し込みができたので、一番小さい 1G タイプを使って見ることにしました。

 

◇とりあえずFreeBSD

居酒屋のとりあえずビール的に、デフォルトのCentOS から FreeBSD へ入れ替えます。

「OS再インストール」>「カスタムOSインストール」で、FreeBSD 8.1 amd64 を選択します。

最新の9.0R が選択肢にないので、とりあえず 8.1R をインストール。

vertio化する際に、srcが必要なので、src-all も入れておきます。

インストールが終わったら、おもむろに

# sed -i '' -e 's/=_/=%@_/' /usr/sbin/freebsd-update

# freebsd-update -r 9.0-RELEASE upgrade install

# reboot

# freebsd-update install

# reboot

# freebsd-update install

# reboot

 これで、FreeBSD 9.0R になるはず。

 

◇virtio化

つぎにvirtio化していきます。

 

kernel module を ports からインストール。

# cd /usr/ports/emulators/virtio-kmod
# make install clean

これで、kernel module がインストールされるので、これをロードするように設定します。

/boot/loader.conf に以下を追記します。

virtio_load="YES"
virtio_pci_load="YES"
virtio_blk_load="YES"
if_vtnet_load="YES"
virtio_balloon_load="YES"

 

次に /etc/fstab を virtio 的デバイスに書き換えます。

CDROMドライブ以外のデバイス部分はすべて書き換えていきます。/dev/ad0s1a だったら、/dev/vtbd0s1a になります。

置換ルールとしては s/ad/vtbd/ ってかんじで置換しましょう。

fstab の書き換えが済んだら、

# shutdown -p now

でマシンを落としておきます。

 

次に、ハイパーバイザ側のvirtioを有効化します。

さくらのVPSは、Linuxがインストールされていると virtio が有効になっていますが、FreeBSD だと無効化されています。

そこで、ちょこっとだけLinuxを入れるふりをして、virtioだけ有効化させます。

「OS再インストール」>「カスタムOSインストール」で、

CentOS 5 x86_64 を選択します。

OSのインストーラが起動して、最初の言語選択メニューが表示されたら、コントロールパネルからおもむろに再起動します。

 

これでvirtioが有効化された状態で FreeBSD が上がってきます。

 

◇virtio化の恩恵

 簡単なdisk書き込みテストを実施してみました。

[virtio化まえ]

% sudo time dd if=/dev/zero of=/tmp/hoge bs=16384 count=16384
16384+0 records in
16384+0 records out
268435456 bytes transferred in 4.780483 secs (56152371 bytes/sec)
        4.96 real         0.00 user         0.84 sys

[virtio化あと]

% sudo time dd if=/dev/zero of=/tmp/hoge bs=16384 count=16384
16384+0 records in
16384+0 records out
268435456 bytes transferred in 0.451433 secs (594629745 bytes/sec)
        0.45 real         0.00 user         0.42 sys

 

なんと11倍!(当社比

とりあえずの環境づくりのベースとしてはこんな感じでいいんじゃないですかね。

 

 

 

WCAF Vol.8 に参加してきました。

2012年4月7日(土)に開催された WCAF Vol.8 に参加してきました。

福井での勉強会への参加はこれが初めてで、怖い人ばっかりだったら泣いて帰ろうと思いながら、恐る恐るの参加です。

 

場所は、ふくい産業支援センター。

どんなところだろうかと思ったら、こんな感じのかっこいいビルでしたよ。

f:id:yizawa:20120407124709j:plain

 

お部屋もテーブルと机がなんだかゴージャスな感じ。

f:id:yizawa:20120407134957j:plain

 

さてさて、今回は LT も含めて7人の先生が話してくださるということで、盛りだくさんでした。

 

はじめは、赤坂さんの「デザイナー視点のプログラミング入門 ~心構え編~」。

f:id:yizawa:20120407141148j:plain

ただのデザイナーというポジションに満足することなく、差別化を図ることで、「モテデザイナー」になろう、というお話。

「もっと必要とされたいと思う向上心が大事!」という言葉が心に響きました。

 

次は、清原さんによる「コンパクトウェブ – Remind web compression -」。

f:id:yizawa:20120407145409j:plain

スマホ対応を考えてコンテンツを圧縮してみましょうという話。

いろいろな手法が網羅的に紹介されていました。

ちゃんと One More Thing を用意してあるのが素敵です。

 

次は、西川さんの「WEBクリエイターと電子書籍」。

f:id:yizawa:20120407155433j:plain

電子書籍の中身は、Webクリエーターになじみが深いファイルたちからできあがってますよ、というお話。

最近の電子書籍の動向を教えてもらいました。

個人的に、iBookAuthorで日本語ファイル名で泣かされたので、もう一度チャレンジしてみようかと思えました。

 

そして、今回急遽発表が決まった、東さんによる「LESS楽しいれす(^p^)」。

f:id:yizawa:20120407161510j:plain

 CSSをもっと容易に書く為のメタ言語「less」の入門のお話をしていただきました。

lessはCSSメタ言語の入門用としておすすめとのこと。

メタ言語に落とし込んで書くことで、CSSを書く人の工数削減もさることながら、「考える」という作業そのものに変化を与えるだろうなと思いました。

個人的には、Rails.3xな流れでSCSSの方にも興味あり、です。

 

次は、多田さんによる「UIアニメーションのセオリー」。

f:id:yizawa:20120407165001j:plain

簡単なアニメーションだったら、JQuery無くても作れるよ、UX的に気持ちよいアニメーションのコツ、についてお話いただきました。

 

次は、鈴木さんによる「Windows Phoneでコミュニケーション」。

f:id:yizawa:20120407171801j:plain

People HUBすげーぜ!という思いが、鈴木さんの明るいキャラとともに強烈にImpressしていました。

スライドもメトロ的にかっこよかったです!

iPhoneアプリで People HUB作ってみたくなった :)

 

トリは、一神さんによる「Designing a VISION」。

f:id:yizawa:20120407172727j:plain

デザインというと表層的なイメージと捉えられがちだけど、そうじゃねーよ?というお話。

対象の理解を深めて、しっかりしたビジョン持つことで、より広がりのあるデザインを導出できますよ、というお話でした。

これ、デザインだけじゃなくてもおんなじだよね。大事。

 

今回は、懇親会には参加できませんでしたが、また福井に勉強しに行きたくなるようなアットホームなよい雰囲気でした。