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'
これで、どのホスト名のサーバで何を実行しているのかが一目瞭然です。
OSXのリマインダーにEmacsから一発登録
Emacs の scratch buffer に ToDo をメモっておいたのに、Emacsを再起動させてしまって人生の指針を失ってしまうのは、だれもが通る道だと思います(;・∀・)
そんなことをグチグチといっていったら、Mac の大先生より「リマインダー使え、さもなくば死ね(一部誇張があります)」というありがたいお告げを頂いたので、早速リマインダーを使うことにしました。Emacsから。
"Calendar and Reminders Programming Guide" を読んでみましたが、Objective-C を使うのも牛刀なかんじだったので、さくっと諦めて Automator を使うことにします。
Automator を作る
Automator っていわゆるひとつの Apple Script 実行環境です(よね?)
今回は引数のファイルの中身をリマインダーのタイトルに使って、リマインダーへ新規に登録する Automator を作ります。
- Automator を起動します。「アプリケーション」を「選択」します。
- アクションライブラリから「新規リマインダー項目」を右のワークフローにドラッグ&ドロップします。
- 同様に「シェルスクリプトを実行」を先頭にドラッグ&ドロップします。
- シェルを「/bin/sh」に、入力の引渡し方法を「引数として」に設定します。
- シェルスクリプトの内容を "cat $@" のみにします。
- これに名前をつけて保存します。
今回は、"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だけにすることで認識率を上げてみます。
準備するもの
- 数字の写真
というわけで、とりあえず元素材をぱしゃり。
これを Preview の画像cropを使って、切り取ります。
number.jpg という名前で保存しました。
設定ファイルを作る
以下を、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インストール」で、
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 に参加してきました。
福井での勉強会への参加はこれが初めてで、怖い人ばっかりだったら泣いて帰ろうと思いながら、恐る恐るの参加です。
場所は、ふくい産業支援センター。
どんなところだろうかと思ったら、こんな感じのかっこいいビルでしたよ。
お部屋もテーブルと机がなんだかゴージャスな感じ。
さてさて、今回は LT も含めて7人の先生が話してくださるということで、盛りだくさんでした。
はじめは、赤坂さんの「デザイナー視点のプログラミング入門 ~心構え編~」。
ただのデザイナーというポジションに満足することなく、差別化を図ることで、「モテデザイナー」になろう、というお話。
「もっと必要とされたいと思う向上心が大事!」という言葉が心に響きました。
次は、清原さんによる「コンパクトウェブ – Remind web compression -」。
スマホ対応を考えてコンテンツを圧縮してみましょうという話。
いろいろな手法が網羅的に紹介されていました。
ちゃんと One More Thing を用意してあるのが素敵です。
次は、西川さんの「WEBクリエイターと電子書籍」。
電子書籍の中身は、Webクリエーターになじみが深いファイルたちからできあがってますよ、というお話。
最近の電子書籍の動向を教えてもらいました。
個人的に、iBookAuthorで日本語ファイル名で泣かされたので、もう一度チャレンジしてみようかと思えました。
そして、今回急遽発表が決まった、東さんによる「LESS楽しいれす(^p^)」。
CSSをもっと容易に書く為のメタ言語「less」の入門のお話をしていただきました。
メタ言語に落とし込んで書くことで、CSSを書く人の工数削減もさることながら、「考える」という作業そのものに変化を与えるだろうなと思いました。
個人的には、Rails.3xな流れでSCSSの方にも興味あり、です。
次は、多田さんによる「UIアニメーションのセオリー」。
簡単なアニメーションだったら、JQuery無くても作れるよ、UX的に気持ちよいアニメーションのコツ、についてお話いただきました。
次は、鈴木さんによる「Windows Phoneでコミュニケーション」。
People HUBすげーぜ!という思いが、鈴木さんの明るいキャラとともに強烈にImpressしていました。
スライドもメトロ的にかっこよかったです!
iPhoneアプリで People HUB作ってみたくなった :)
トリは、一神さんによる「Designing a VISION」。
デザインというと表層的なイメージと捉えられがちだけど、そうじゃねーよ?というお話。
対象の理解を深めて、しっかりしたビジョン持つことで、より広がりのあるデザインを導出できますよ、というお話でした。
これ、デザインだけじゃなくてもおんなじだよね。大事。
今回は、懇親会には参加できませんでしたが、また福井に勉強しに行きたくなるようなアットホームなよい雰囲気でした。