けちゃぶろぐ

Golang とか Ruby とか Vim とか……。

Raspberry Pi を買いました

何だか面白そうだったので

数日前、会社で Raspberry Pi ってのがあると聞いて、何だか面白そうだったので 土曜日に秋葉原まで。

Raspberry Pi Type B 512MB と専用ケースのセットで5千円ちょいで売ってました。

f:id:kechako:20130722204151j:plain

SDHC に OS イメージを焼く

Raspberry Pi のサイトの Downloads からイメージをダウンロード。

Mac の SD カードスロットに SDHC カードを差し込みます。 FAT32でフォーマットされている必要があるらしいです。

SDHCカードのデバイス情報を確認します。

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            120.5 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:                  Apple_HFS KETCHUP EXT             999.9 GB   disk1s2
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *16.1 GB    disk2
   1:             Windows_FAT_32 boot                    58.7 MB    disk2s1
   2:                      Linux                         16.0 GB    disk2s2

/dev/disk2SDHCカードのようです。

イメージを書き込む

ディスクをアンマウントします。

$ diskutil unmountDisk /dev/disk2

イメージをSDHCカードに書き込みます。

$ sudo dd bs=1m if=2013-05-25-wheezy-raspbian.img of=/dev/disk2

of= の指定なんかを間違えると死にたくなるので気を付けてください。 Ctrl + t で途中の状況を確認できます。

SDHCの性能にもよりますが、けっこう待たされます。 のんびりコーヒーでも飲みながら待ちます。

終わったら、イジェクトしてSDHCカードを抜きます。

$ diskutil eject /dev/disk2

Raspberry Pi 起動

SDHCカードを Raspberry Pi に差し込んで、USBにキーボード差したりHDMIをTVなんかに繋ぎます。

そして、microUSB に電源を繋ぎます。

f:id:kechako:20130722221609j:plain

今日はここまで。

Mac で ISO イメージをブートできるように USB メモリーに書き込む

Ubuntu 13.04 を PC にインストールしようと思ったのですが、手元に DVD-R が無かったので USB メモリを使用してインストールすることにしました。 普段使用している Mac Book Air で、ISO イメージからブート可能な USB メモリーを作成します。

追記(2018-02-19)

macOS では、ディスクデバイスとして、/dev/rdisk と /dev/disk があります。

/dev/rdisk は、キャラクタスペシャルデバイスで、ランダムアクセスはサポートしませんが、バッファーを使用しないため高速にアクセスできます。

一方、/dev/disk は、バッファされたブロックスペシャルデバイスで、ランダムアクセスをサポートします。

dd コマンドによる ISO イメージの書き込みは、ランダムアクセスが必要ないため、of=/dev/rdisk とすることで、書き込みが高速になります。

イメージを変換する

ISO イメージをそのまま書き込んでもブートできないので、読み書き可能な UDIF (Universal Disk Image Format) に変換します。

$ hdiutil convert -format UDRW -o ./ubuntu-ja-13.04-desktop-i386.dmg ./ubuntu-ja-13.04-desktop-i386.iso

USB メモリの情報を確認する

USB メモリのデバイス情報を確認します。

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            120.5 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:                  Apple_HFS KETCHUP EXT             999.9 GB   disk1s2
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                            Ubuntu 13.04 ja        *2.0 GB     disk2

僕の Mac Book Air には外付けHDDも接続されているので、USB メモリー/dev/disk2 のようです。(既に Ubuntu のイメージが焼いてあるので、TYPE NAME がそれっぽいです。)

イメージを書き込む

バイスがわかったので、あとは変換されたイメージを書き込みます。

ひとまず、ディスクをアンマウントします。

$ diskutil umountDisk /dev/disk2

イメージを実際に書き込みます。

$ sudo dd bs=8192 if=./ubuntu-ja-13.04-desktop-i386.dmg of=/dev/disk2

Ctrl + t で途中の状況を確認できます。

書き込み終わったら、イジェクトして USB メモリーを取り外します。

$ diskutil eject /dev/disk2

emacs-evernote-mode をデベロッパートークンで

久しぶりとかそんなレベルを通り越して久々の更新です。

emacs-evernote-note が使えない?

少し前から、emacs-evernote-modeで認証エラーが出るようになりました。 consumerKey が INVALID_AUTH とかそんな感じの。

普段から、お仕事でメモとったりするのに emacs-evernote-mode と org-mode を組み合わせて使っていたので、使えない状態だと非常に困る……。

ということで、emacs-evernote-mode を自分のデベロッパートークンで動かせるようにしてみました。

はじめての GitHub

GitHub を初めて使ってみました。

大きな変更ではないので、patch (Unified diff) で。

emacs-evernote-mode-developer-token

変更したのはevernote-mode.elenclient.rb のみです。

Emacs Lispデベロッパートークンを設定できるようにして、元々のログインとは別にデベロッパートークンでのログイン処理を追加しました。*1

使い方

オリジナルの emacs-evernote-mode は導入されてる前提で。

  1. パッチを当てます。
  2. こちらからデベロッパートークンを発行します。
  3. init.el に以下を追加します。
(setq evernote-developer-token "Your developer token.")

デベロッパートークンを使うと、そのアカウントに対しての完全アクセス権を取得できます。 デベロッパートークンの扱いには十分注意してください。

今後やっときたい事

現状、デベロッパートークンを Emacs Lisp 上に生で記述しているので、EasyPG あたりで暗号化して保存しときたいなぁとか。

*1:ログインしなくても developer token で API コールできるようで、厳密にはログインとかしてないですが。

Google Chrome の textarea を Emacs で編集する

WEB ブラウザでなにかと textarea に文章を入力することがありますが、編集中に思わず C-n とか連打しちゃって、新しいウィンドウが大量に立ち上がる……なんてことが多々あります。
Emacs でテキスト編集してブラウザにコピペ……。それでもいいかもしれませんが少し面倒です。
そこで、Edit with Emacs を導入しました。

Edit with Emacs は、Google Chrome の Extension と、edit-server.el という Emacs Lisp の組み合わせで動作します。

インストール

まず、Google Chrome の Extension をインストールします。

次に、edit-server.el を適当に配置します。
edit-server.el は、Extension のオプションからDLできます。github からも取得できます。

配置したら load-path に追加し、.emacs 等に以下を追加します。

(require 'edit-server)
(edit-server-start)

新しくフレームを開きたくない場合は、

(setq edit-server-new-frame nil)

も書いときます。

これで準備は完了です。

使い方

使い方は簡単。

まず、表示している WEB ページの textarea を右クリックし、コンテキストメニューから Edit with Emacs をクリックします。
すると、Emacs で編集用のバッファが開きます。

ちなみに、Extension のオプションで、textarea の横に edit ボタンを表示したり、Alt + Enter で呼びだせるように設定できます。

textarea に入力済のテキストがあるときは、バッファにテキストが自動挿入されています。

あとはテキストを編集して、C-x C-s*1 を実行すると、編集されたテキストがブラウザに反映されます。
編集をキャンセルする場合は、C-x C-c*2 です。

これだけです。

なんか文字化けする

自宅の Mac 環境だと特に問題はありませんでしたが、会社の Windows 環境だと Emacs で編集用バッファが表示されたときに、もともと入力されていた日本語が文字化けしていました。

原因としては、Extension との通信に使用しているネットワークプロセス の文字コードが指定されておらず、default-process-coding-system に設定されている文字コードが使用されていることです。

私は、default-process-coding-system には諸事情により cp932 を指定しています。
一方、Extension と Emacs 間の通信は HTTP を使用しており、テキストは UTF-8エンコードされているようです。

default-process-coding-system に utf-8 を指定すればいいのですが、それでは他の動作に影響を与えてしまうのでやりたくありません。
なので、edit-server.el に1行加えることにしました。

(make-network-process
 :name "edit-server"
 :buffer edit-server-process-buffer-name
 :family 'ipv4
 :host (if edit-server-host
           edit-server-host
         'local)
 :service edit-server-port
 :log 'edit-server-accept
 :coding '(utf-8-dos . utf-8-dos)    ;;  この1行を追加する
 :server t
 :noquery t)

edit-server-start 関数でネットワークプロセスを生成している箇所があるので、文字コードの指定をしてやります。

これで文字化けすることなく表示することができました。

*1:C-c C-c や C-x # も使えます。私は C-c C-c を使ってます。

*2:個人的には気にいらないので、C-x C-c を削除して、C-c C-k にマップしています。