2010/12/24

今日の elisp (insert-index)

さまざまなコードを書く仕事柄 Emacs は仕事では欠かせないツールですが、自宅と会社と .emacs をいろいろいじっていたのは昔の話でした。ところで最近、海外のサーバーから飛ばした若干狭い Window 上で Emacs を動かす機会が増えて来て、メニューバーが邪魔に感じるようになり .emacs に (menu-bar-mode 0) を追加して消してすっきり。メニューバーが必要になったら M-` で呼び出せばいいんです。

さて今日の elisp は insert-index。コードを書いていて変数に連番を入れたい時に重宝します。
例えば、

data[0]
data[1]
data[2]
...
data[9]

めんどうくさいし、間違ったら面倒。そういう時に、data[] をコピーして縦に必要数ペーストした後、先頭(最後)のカッコの中でマーク(C-SPC)して、最後(先頭)のカッコの中にカーソルを移動(ポイント)。その後に M-x insert-index を呼び出すだけ。若い行の方から 0 を初期値としてインクリメントした数値を埋めて行きます。その他、初期値を変更したり、フォーマットをオプションで変えられる関数も作ってみたけど、結局シンプルな今の関数に落ち着きました。
コードはいかに示す通り(二つの関数で構成されてます)。別ファイルにしてもいいのだけど、短いので .emacs に入れてしまってもいいかも。また、キーバインドに余裕があれば、お好きなキーにアサインして下さい。

※とりあえず以下を全部 .emacs にコピーペーストすれば関数が C-t で起動するようになります。

;; キーバインドの例 (任意)
(global-set-key "\C-t" 'insert-index)

;; insert-index 関数本体 insert-index-calc も必要です
(defun insert-index (beg end)
  (interactive "r")
  (let ((num 0)
(istart 0)
(istep  1))
    (setq num (1- (* istep (count-lines beg end))))
    (goto-char beg)
    (insert-index-calc istart num istep)))

(defun insert-index-calc (index end step)
  (if (> index end)
      nil
    (progn
      (let ((str ""))
(setq str (format "%d" index))
(insert str)
(forward-char (- (length str)))
(next-line 1)
(insert-index-calc (+ index step) end step)))))

2009/11/08

SSD 断念

勢いで SSD 32GB IDE を購入しようと馬場のクレバリーに行ったら、お目当ての品が入荷待ち。
ホッとして帰る。
今すぐ HDD レコーダー使いまくるようになるとも思えんし、同じお金出すならマジックマウス欲しい〜。

2009/11/06

KORG D12 を分解してみた

KORG D12 の HDD が SSD に交換出来ないかと画策中。
D16 の事例もあるようだから、どうにかなるかも。
バラスにはとりあえず裏のネジ 5本外せば簡単に空きます。
HDD も簡単に外れそうですね。

ちょっと浮気

mixi の日記を blogger に差し替えテスト。

2009/02/20

エリカ様

昨日 Amazon より届きました。
エリカ様の名前は Web でちらほら見かけていたのですが、この本を執筆してたとは。。手元に届いてから始めて知りました。

Xcode の使い方や、iPhone Developer Program にもそれなりに触れてはいますがまるっきり初心者向けではありません。Objective-C の初歩は知っていることが前提で、iPhone SDK でチュートリアルは一応こなしたけど次なにしよう?という人向けです。

最初の例題から Interface Builder は使わないという、ある意味正統派?なアプローチがなされています。
2-3 章ではビューのドラッグというレシピが紹介されてるのですが、こんな単純な方法でドラッグできるとは。。目から鱗です。勉強になります。

2009/01/16

iPhone 本




年末に iPhone SDK プログラミング大全の発売をHMDT Journalの書き込みで知り、書店でちら見してから買おうかどうかと悩んだ挙げ句 amazon で注文。年明け早々引っ越しもあったので送り先は会社。発売早々の 1/8 に確実にゲットできました。
すごい売れ行きのようでもう増刷だそうです。書店で買おうとしていたらまだゲットできていなかったかも。。。

ところで、ようやく斜め読みしながらポチポチ試しはじめたところです。
既にお試しで基本的な UI を使ってアプリを一つ作ってみたことはあるので全くの素人というわけではありませんが、包括的にザックリ書かれた本書は自分のようなちょっとかじった人間にとってとっかかりに丁度よいかなと思ってます。他の本のように本棚の肥やしにならないようにせねば。

とりあえず iPhone のアプリ開発に興味があるならあって悪く無い本だと思います(よいしょっと。いや、ホント)。あと今更ですがここでプレゼントキャンペーンやってます〜。

2008/08/13

iPhone の同期


仕事柄、細かくスケジュールを管理することはないのでカレンダー系のソフトはあまり使っていなかった。でも iPhone 購入をきっかけにつかってみてる。そうするとついつい、個人のスケジュールと会社のスケジュールを両方詰め込みたくなるのだが、これが思ったようにいかない。最終的にはどうにかマージして運用をはじめた。

自分の場合、自宅の Mac + iCal と mobile me。会社は Microsoft Exchange。こういう環境である。
結論から言うと、会社の Win PC 上の Outlook と Mac の iCal でそれぞれ iTunes を使い同期をとることにした。

会社の IT は iPhone を正式にサポートしてはいないのだが VPN 接続でき、Exchange server の設定もちゃんとできる。メールもカレンダーも iPhone の気持ちのよいインターフェースで読めるし、会議の出席要請があれば iPhone から承諾できる。勿論 iPhone からメールを書いたり、スケジュールをカレンダーに書ける。
しかし、うちの会社の設定なのか、他の Exchange server も同様なのか、iPhone のセキュリティレベルがグンとアップする。具体的にはスリープ解除ボタンを押すたびにパスコードという最低5桁だったかな?を毎度入力しなければならなくなる。また一旦スリープ解除してパスコードを入力しても、最長で 5分以内にまたパスコードを入力しなければならない。これがすごく「うっとうしい」
しかも社内では他人のカレンダーを参照できるのだが、iPhone で書いたスケジュールはプライベート設定が無いので、同期直後で見せたくないスケジュールにプライベートのフラグを立てるまでは他人にプライベートなスケジュールを他人に見られる可能性がある。
あとはカレンダーのカテゴリーは Exchange に同期したとたん無くなってしまった。。知人の iPod touch OS 2.0 では Calendar というカテゴリーが表示されたようだけど自分のは無し。結局、会社のメールは見づらいけど Safari を使って読めるし、パスコードは面倒なのでこの方法は却下した。
Exchange に関連するカレンダーのカテゴリーやメールアカウントのデータにアクセスするときだけセキュリティを厳しくしてくれればいいのに。。。

他の手段として、Win 用の iTunes についている mobile me のツールを使って Outlook と mobile me の同期をとろうと試みたが、流石に会社の Fire Wall はそれを許さない。もちろんこれも却下。

ところで iPhone のカレンダーを mobile me に同期させると、Exchange, Outlook や iCal とは同期はとれない。mobile me から 3G or Wi-Fi 経由で同期がかかるのでご注意を。

最終的にカレンダーは mobile me での同期、及び Exchange の使用も諦め、Win PC 上の Outlook と Mac の iCal で同期をとることにした。データのマージはそれ程難しくはない。一旦 Win PC で iPhone に会社のスケジュールを入れ、Mac で同期をとるとデータをマージしてくるか上書きするかなど聞いてくるのでマージするにすればよい。もう一度 Win PC で同期をとると、Outlook にもそれが反映される。Outlook 側には iCal で使っていたカテゴリーの名前で新しいカレンダーが追加される(Outlook のカレンダーは Calendar という名前になる)。Calendar 以外のカテゴリーは他人からは見えないようなので、これで安心してプライベートなデータを手間をかけずに入力出来る。
ただ、最初に Mac の iCal のデータが入った iPhone を同様に Win に持っていってマージしようとしたけど、マージ中にエラーが出てうまくいかなかった。どっちを先に入れて、マージするかは試行錯誤が必要かも。

とりあえず、これで会社と自宅のスケジュールを同期することが出来たわけだ。残念ながら mobile me での変更は、iPhone にプッシュできないし、その逆もできない。もちろん Mac に接続して同期する場合は mobile me のデータと iCal の同期は可能なのでそこで始めてアップデートが全てになされる。もっとも iPhone を持ち歩くなら Web 経由で mobile me を見たり変更したりしないだろうし、現状で動作が遅く不安定な mobile me を使ってスケジュールなんぞ入力したくない。とりあえずやりたいことがだいたい出来たのでここらでカレンダーのマージは止めときます。