pythonのモジュールの補完が出来ればいいなぁと思い、ac-pythonを入れてみたのだけどwindowに補完候補が表示されない。
Pythonのバッファを開いてみると、以下のようにemacs.completeによって補完候補がきちんと 返されている。

動的略語展開(M-/,C-o)のほうで拾えるのでそんなに困らないんだけど、理由がわからないのでちょっと気持ち悪い。
pythonのモジュールの補完が出来ればいいなぁと思い、ac-pythonを入れてみたのだけどwindowに補完候補が表示されない。
Pythonのバッファを開いてみると、以下のようにemacs.completeによって補完候補がきちんと 返されている。

動的略語展開(M-/,C-o)のほうで拾えるのでそんなに困らないんだけど、理由がわからないのでちょっと気持ち悪い。
09112012 life
飲食店経営者の成功自慢的なエピソードかなと思って読み始めたんだけど、全然違って、商売とはどういうものかということが分かりやすく書かれている(が実践するのは難しいんだろう)。さらりとやってのけるあたりがすごいなぁと思う。
店を作るときは、どんな店をやったら流行るかばかりを考えるんじゃなく、自分自身が心から楽しいと思える店をやる。それが、長く商売を続けていく基本
売るということ
創薬もいっしょですな
09112012 Emacs
Emacs Rocks! Episode 01: From var to thisを見ていて、これってEmacsで複数行の行頭空白を削除する方法の逆パターンか!と思ったのだがkill-rectangleはC-x r kにアサインされていることを知った。
それから、C-sで検索すると検索開始位置が勝手にマークされるのを知らなかった。もっと使おうっと。
このブログはmarkdown記法で書いているのでコードを貼り付けるときにスペース4文字挿入しないといけないんだけど、文字幅0の短形領域を選択すれば簡単にspace x 4を挿入できる。いままではdmacro.elで繰り返してたけど、C-x r tのやり方のほうが快適だ。
使い始めると短形領域をkillしたりyankしたりしたくなるとおもうんだけど、それはC-x r k(y)でオッケー
参考
08112012 Emacs
そのままでは23での.emacs.dの設定が動かなかったので、スクラッチから書き直している。
大きく変えたのは
magitとかjs2-modeはインストールしただけで動くし結構楽かな。一方でmaximize-windowっていうコマンドが使えるようになったのだけどosxでは動かないし、window-sizeを変更すると上の何行かにアクセスできなくなったりして困っている。
ちょうどいいのでGitHubで管理するようにしたけどコマンド一発で環境ができるようにしたいなぁ。
07112012 macbook
今はmacbook 2008 earlyにメモリを4G,HDDを500Gに増設してつかっているのだが、Titanium Mobileのアプリのbuildにやたら時間がかかるのでそろそろ買い換えたい気分になってきた。
前提として、HDDにデータが250Gくらい入っていて、そのうち150Gくらいは写真とmp3だったりするので写真はDVDに焼いてNASに移動したんだけど、mp3はTraktor使っている関係であまり多くは移せなさそう。結局70Gは必要そう。となると128Gは全然足りなくて、必然的に最低256Gが必要ってことになる。
先にも書いたようにTitanium Mobileアプリが快適にビルドされて欲しいのでメモリも8G必須
ノートブックをあーでもないこーでもないと比較した挙句、候補としては
macbook pro retinaだったらmacbook pro retina 15 256G SSDと変わんないじゃん!?っていう値段になっていて、だったらそっちにしたほうがいいじゃんという気持ちもある。
Apple MacBook Pro withRetinaDisplay15.4/2.3GHzQuadCorei7/8GB/256GB MC975J/A一方で、そろそろ毎日車で通勤往復二時間は飽きたなっていうところもあって、電車通勤したいなーと考えた場合にmacbook airの軽さは魅力。macbook airを買ってその勢いで転職活動をしてしまえという勢いも感じなくはない。静岡は美味しいものいっぱいあるし、泰平居酒屋だって行ってみたい。それか東京に新幹線通勤でもいいしなー。
結局macbook airでいいかなぁーと思っていたところ、これ読んでぐらついた(スナップショットが綺麗なんだもん)
というわけでmacbook pro retina 13に踏み切れない自分がいるのであった。
子連れはさすがに場違いかなーと思いつつも、日曜はマッタリ感が漂っているのでそれほどでもなかったかな(他にも子供連れがいたしな)

一番奥のヒダのついているのはシカクマメというらしい。シャキシャキの食感が美味しかった。その手前の白いのは人参、香りも人参だった。これまたうまい。

コンフィ最高。その前に長谷川農園のマッシュルームのオイル煮を食べてるんだけど。

鶏の唐揚げは旨かったんだけど、量が結構あったので頼みすぎたかな。

娘のデザート。りんごの食感が良かった。

また行きたい
05112012 javascript Ti
ドキュメントによると、
Alloy uses Backbone.js to provide support for its models and collections. Alloy also borrows the concepts of migrations and adapters from Rails for storage integration.
ということでmodelの仕組みはbackbone.jsっぽくてマイグレーションはRoRっぽいが、設定周りがちょっと違う。
とどのストレージを使うか選ぶ。backbone.jsとかspine.jsだとlocalstrageかrestなところが選択肢が増えたことで型とか設定するようになっている。
モデルの変更とかで送られてくるイベントの種類はドキュメントに書いてないのでソースコード読まないといけないっぽいんだけど、backbone.jsと同じかなと思っている。
alloy / test / apps / models / propertiesを眺めてみたんだけどcollectionの位置づけがわからなかった(backbone.jsのコレクションとモデルって分かれてるよね)。
なんか書いてみないとダメだな。
04112012 javascript Ti
alloy / test / apps / advanced / themesはconfig.jsonでプラットフォームごとにテーマを切り替えるというサンプル。

TSSっていうのはAlloyのスタイルシート(CSS)みたいなものだが、exprを使うと演算できる。昨日@k0sukeyが言ってたのはこれのことかと今更理解したわけだが。
スライダーが縦になっているが、これはTSSをみると
"#slider": { leftTrackImage: '/title_green.png', top: 228, left: -145, width: 350, transform: expr(Titanium.UI.create2DMatrix().rotate(-90)) },
こんな感じで縦方向に-90度回転されている。
04112012 javascript Ti
alloy / test / apps / advanced / inheritanceを読んでみた。継承は分かりやすいが、windowまわりがいまいちわからん。
controller/index.js
$.index.open(); function openDialog(e) { Alloy.createController(e.source.title, { message: 'Opened ' + e.source.title }).openDialog($.index); }
createControllerメソッドで文字列を渡すとコントローラーが作られる。
views/index.xmlはこんな感じになっていて
<Alloy> <Window> <View layout="vertical"> <Button onClick="openDialog">baseDialog</Button> <Button onClick="openDialog">animatedDialog</Button> </View> </Window> </Alloy>
Buttonのtextじゃなくてtitleで渡される(e.source.title)みたいだ。コード追っかけててちょっと引っかかった。
openDialogメソッドはそれぞれのコントローラーで実装されている。
controllers/baseDialog.js
var args = arguments[0] || {}; $.message.text = args.message || 'dialog'; exports.openDialog = function(win) { $.refWin = win; $.refWin.add($.cover); $.refWin.add($.dialog); } exports.closeDialog = function() { $.refWin.remove($.cover); $.refWin.remove($.dialog); $.refWin = $.cover = $.dialog = null; }
refWinってなんだよ?と思ったが新しい属性作って放り込んでいるだけなのかな?あとWindowにWindowを追加してんの?($.refWin.add)。それとも$.cover,$dialogはviewなんだろうか?コンパイル後のコードを読むにはどうしたらいいんだろうか?
継承はexports.baseControllerにスーパークラスを指定する。あとは普通にメソッドを上書きすればいい。
// Establish inheritance from baseDialog exports.baseController = 'baseDialog'; // Override baseDialog's openDialog() function. We will still // be able to use baseDialog's closeDialog() function. exports.openDialog = function(win) { $.refWin = win; ... }
04112012 life
すっかりおばさん顔

ジャーキーがろうそく代わり
