ac-pythonで補完リストが表示されない(Emacs24)

pythonのモジュールの補完が出来ればいいなぁと思い、ac-pythonを入れてみたのだけどwindowに補完候補が表示されない。

Pythonのバッファを開いてみると、以下のようにemacs.completeによって補完候補がきちんと 返されている。

ac-python

動的略語展開(M-/,C-o)のほうで拾えるのでそんなに困らないんだけど、理由がわからないのでちょっと気持ち悪い。

トマトが切れれば、メシ屋はできる 栓が抜ければ、飲み屋ができる

飲食店経営者の成功自慢的なエピソードかなと思って読み始めたんだけど、全然違って、商売とはどういうものかということが分かりやすく書かれている(が実践するのは難しいんだろう)。さらりとやってのけるあたりがすごいなぁと思う。

店を作るときは、どんな店をやったら流行るかばかりを考えるんじゃなく、自分自身が心から楽しいと思える店をやる。それが、長く商売を続けていく基本

売るということ

  1. メニューを企画して
  2. 仕入れをして
  3. 作って
  4. それをPRして
  5. お客さんに「どうですか?」ってアフターフォローをする

創薬もいっしょですな

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)でオッケー

参考

Emacsを23系から24.2に変更中

そのままでは23での.emacs.dの設定が動かなかったので、スクラッチから書き直している。

大きく変えたのは

  • パッケージの管理がpackage.el (+ auto-install.el)にした
  • テーマを組み込みのにした

magitとかjs2-modeはインストールしただけで動くし結構楽かな。一方でmaximize-windowっていうコマンドが使えるようになったのだけどosxでは動かないし、window-sizeを変更すると上の何行かにアクセスできなくなったりして困っている。

ちょうどいいのでGitHubで管理するようにしたけどコマンド一発で環境ができるようにしたいなぁ。

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 air 13 256G SSDに8Gメモリを積む(1.35Kg)
  • macbook pro 13 2.9 GHz(2.06 kg)
  • macbook pro retina 13 256G SSD (1.62Kg)

macbook pro retinaだったらmacbook pro retina 15 256G SSDと変わんないじゃん!?っていう値段になっていて、だったらそっちにしたほうがいいじゃんという気持ちもある。

一方で、そろそろ毎日車で通勤往復二時間は飽きたなっていうところもあって、電車通勤したいなーと考えた場合にmacbook airの軽さは魅力。macbook airを買ってその勢いで転職活動をしてしまえという勢いも感じなくはない。静岡は美味しいものいっぱいあるし、泰平居酒屋だって行ってみたい。それか東京に新幹線通勤でもいいしなー。

結局macbook airでいいかなぁーと思っていたところ、これ読んでぐらついた(スナップショットが綺麗なんだもん)

というわけでmacbook pro retina 13に踏み切れない自分がいるのであった。

kichi to naru kitchen にいった

子連れはさすがに場違いかなーと思いつつも、日曜はマッタリ感が漂っているのでそれほどでもなかったかな(他にも子供連れがいたしな)

1352201620

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

1352201622

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

1352201624

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

1352201625

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

1352201627

また行きたい

Alloyのモデル

ドキュメントによると、

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っぽいが、設定周りがちょっと違う。

  • 'sql' for the SQLite database on the Android and iOS platform.
  • 'localStorage' for HTML5 localStorage on the Mobile Web platform.
  • 'properties' for storing data locally in the Titanium SDK context.

とどのストレージを使うか選ぶ。backbone.jsとかspine.jsだとlocalstrageかrestなところが選択肢が増えたことで型とか設定するようになっている。

モデルの変更とかで送られてくるイベントの種類はドキュメントに書いてないのでソースコード読まないといけないっぽいんだけど、backbone.jsと同じかなと思っている。

alloy / test / apps / models / propertiesを眺めてみたんだけどcollectionの位置づけがわからなかった(backbone.jsのコレクションとモデルって分かれてるよね)。

なんか書いてみないとダメだな。

AlloyのTSSで演算させる

alloy / test / apps / advanced / themesはconfig.jsonでプラットフォームごとにテーマを切り替えるというサンプル。

alloy themes

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度回転されている。

Alloyでの継承(というより別のところが理解できてない)

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; 
 ...

}

飼い犬が8歳になった

すっかりおばさん顔

1351985705

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

1351985703