ナラタージュ読了.

ナラタージュ

ナラタージュ


明日からのサークル合宿@有馬でこの作品について話し合ってきます.
著者の他の作品についても時間があったら読んでいこうと思ったけど,無理だったorz
以下,メモ的に感想.ネタバレもあるかも.

続きを読む

今更だけどvimperatorが便利すぎる.

dでタブを消したときにtabかescを押さないと
フォーカスがvimperatorを離れているような気がする.
そこだけ改善されたらいいのだけど,どこかに情報ないかしら.*1
以下,.vimperatorrcと入れてるプラグイン

[更新:2009/04/19]

echo "Loading...."

set titlestring=Fx3
set guioptions=
set hlsearch

set visualbell

set wildoptions=auto
set complete=sl
set focuscontent
set ignorecase
set ui.key.generalAccessKey=0
set verbose=1
set history=5000
set hintmatching=custom

let g:ex_ime_mode = "inactive"
let g:textarea_ime_mode = "inactive"

let g:hintsio="iO"
let g:hintchars="HJKLASDFGYUIOPQWERTNMZXCVB"

colorscheme sweets

noremap j 20j
noremap k 20k

noremap <C-j> gt
noremap <C-k> gT

cnoremap <C-j> <Tab>
cnoremap <C-k> <S-Tab>

map <C-C> :copy titleAndURL<CR>
map c :copy<Space>
map s :gsearch<Space>

" copy.js
javascript <<EOM
liberator.globalVariables.copy_templates = [
 { label: 'titleAndURL',    value: '%TITLE%\n%URL%' },
 { label: 'title',          value: '%TITLE%', map: ',y' },
 { label: 'url',            value: '%URL%' },
 { label: 'anchor',         value: '<a href="%URL%">%TITLE%</a>' },
 { label: 'selanchor',      value: '<a href="%URL%" title="%TITLE%">%SEL%</a>' },
 { label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' },
 { label: 'ASIN',           value: 'copy ASIN code from Amazon', custom: function() content.document.getElementById('ASIN').value},
 { label: 'hatena',         value: '[%URL%:title=%TITLE%]' },
];
EOM

" Google Reader
autocmd LocationChange .* js modes.passAllKeys = false
autocmd LocationChange www\\.google\\.(co\\.jp|com)/reader js modes.passAllKeys = true

" disable accesskey
" javascript <<EOM
" liberator.options.setPref(’ui.key.generalAccessKey’, 0);
" EOM

" Gmail
js <<EOF
autocommands.add('LocationChange',/mail\.google\.com\/(mail|a)\//,[
  'js plugins.feedKey.setup(',
  '"c / y j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc".split(/ +/).map(function(i) [i, "4" + i])',
  ');'
].join(''));
EOF

echo "done"
" vim: set ft=vimperator:
  • 入れたplugin
    • char-hints-mod.js
    • commandBookmarklet.js
    • copy.js
    • feedSomeKeys.js
    • googlesuggest.js
  • 入れたtheme
    • sweets

*1:ぐぐれかすですね,わかります

読む本,読んでいる本,読んだ本

ナラタージュ

9月のサークル合宿で行われる読書会の課題本.
Amazonであらすじを確認.甘い甘い,青い春の物語のよう.
こういう小説って背中のあたりがかゆくなる.
甘ったるいのは苦手なので,さっさと買ってさくっと読みたい.*1

ナラタージュ

ナラタージュ

サイ本

今更ながら,JavaScript絶賛入門中.
サイ本をひたすら読んでは,コードを書いている.
いつも通り「こう書けるんじゃないかな?」と思ったコードが書けたり書けなかったり.
もう慣れしかないですね.あとは,愛.

JavaScript 第5版

JavaScript 第5版

はがれん20巻

読んだ後に読まなくても良かったかなと思った.
その理由として,

  • この先に「転」があることがわかると,「承」になかなか価値を見いだせないからなのか
  • 単純に,読んで満足してしまったからなのか

よくわからない.でも,はがれんは良い作品です.
誇って輸出していい作品だと俺は思う.

鋼の錬金術師 20 (ガンガンコミックス)

鋼の錬金術師 20 (ガンガンコミックス)

*1:とか言いつつ,読んで切なくなってほろりときたりするんだろうなぁ

あっづい

連日の猛暑がすんごいですね.
大阪の家の僕の部屋には,エアコンがないのです;
そのため,扇風機で頑張っていましたが,
この暑さは集中力をそぎ落とすほどの力がある;

なんとかならないものかと,Google先生にお伺いを立ててみました.

どうやらキュウリを食べるのがいいらしい!(無知
キュウリかじりながらビールですかねこりゃ.

Pythonでのエンコーディングの設定

Pythonで,日本語を用いる場合や文字列処理を行う場合には,エンコーディングの設定めも

Pythonのsite-packagesの場所確認方法

site-packagesの場所はOSやPython のインストー ル場所によって異なるのでまずは場所の確認.
シェル上から以下のコマンドを実行する.

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Pythonのエンコーディング

site-packagesディレクトリ以下にsitecustomize.pyというファイルを作成する.
sitecustomize.pyの内容は、UTF-8の場合には下記のようにする.

import
sys
sys.setdefaultencoding('utf-8')

エンコード設定を行わない場合のエラー

Pythonをインストールした初期設定のままだと,'ascii'などが内部エンコーディングに使用される.

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinalnot in range(128)

辞書でvalueからkeyを引く

valueが数値のとき,
「valueがもっとも小さいものから5つkeyが知りたい」
「valueがもっとも大きいものから5つkeyが知りたい」
という場合.*1

testdic = {'hoge':5, 'fuga':50, 'piyo':25}
testlist = zip(testdic.keys(), testdic.values())
#[('fuga', 50), ('piyo', 25), ('hoge', 5)]
testlist.sort(lambda a, b: cmp(a[1], b[1]))
#[('hoge', 5), ('piyo', 25), ('fuga', 50)]

もっと簡単にもかけるようです.(コメントでアドバイスいただきました)

testdic = {'hoge':5, 'fuga':50, 'piyo':25}
testlist = testdic.items()
#[('fuga', 50), ('piyo', 25), ('hoge', 5)]
testlist.sort(key=lambda a: a[1])
#[('hoge', 5), ('piyo', 25), ('fuga', 50)]

(うーん,items()とかいつも使っているのに,不覚...)

あとはスライシングするとか.

for k, v in testlist[:2]:
    print k

とかとか.
たまーにvalueからkeyを引きたいんだけど,
どうしようと思うときがあるのでめもめも.

*1:任意のvalueをもつkeyが複数有る場合は知らない

virtual-pythonとsetuptools

id:cubicdaiyaに「日記をいつ書くんだ」と言われ,
毎回「来月になったら本気出す!」と言っているid:aircastleことワサビこと木浦でございます.*1
突然ですが,大学でvirtual-pythonを入れて作業をしなければならないことになりました.
virtual-pythonだけではなくて,setuptoolsも入れることになったので,インストールの覚え書きです.
なお,ここでは手元のMacBookでテストを行ったことについて書きます.

virtual-python

virtual-pythonとは

virtual-pythonはサーバなどにインストールされたpython環境を
ホームディレクトリ内などに構築するためのものです.
「どういう場合に必要なんだ!」という人のために説明を書くと,
例えばレンタルサーバなどがあります.
レンタルサーバでsetuptoolsを使おうとすると,
権限の関係でpackageをインストールできなかったりします.
こういう場合には,自分のホームディレクトリ内などに,
python環境を作り,ホームディレクトリ内のpython環境を用いてsetuptoolを実行すれば,
ホームディレクトリ内の特定フォルダにpython packageをインストールすることが可能です.
なので,ここに書くことはさくらインターネットなどにも,まま応用可能です.

インストール方法

先にコマンドを書いてしまうと下記の通りです.

%pwd
/Users/wasabi/
%wget http://peak.telecommunity.com/dist/virtual-python.py
%mkdir python
%python2.5 virtual-python.py --prefix=/Users/wasabi/python

複数バージョンのpythonをインストールしていてなおかつ,
特定のバージョンに対してvirtual-pythonをインストールしたい場合は,
virtual-python.pyを実行するpythonコマンドを明確に指定しましょう.
ここでは,上記の通り,python2.5コマンドを用いて実行します.

デフォルトエンコーディングの設定

これでインストールができたので,デフォルトエンコーディングの設定を行っておきます.
ホームディレクトリ以下のpython環境のsite-packagesの中にsitecustomize.pyというファイルを作ります.

%pwd
/Users/wasabi
%cd python/lib/python2.5/site-packages
%touch sitecustomize.py
%emacs sitecustomize.py

sitecustomize.pyには以下のように書きます.

import sys
sys.setdefaultencoding('utf-8')

日本語を用いた処理などを行わないのであれば,この設定は必要有りません.

作った環境についての詳しいこと
%ls -R ~/python

などとすると,ディレクトリ構造がわかります.
binフォルダには,各種コマンドがインストールされ,
libフォルダには各種ライブラリがインストールされていることがわかります.

setuptools

setuptoolsとは

setuptoolsはpythonでのパッケージ管理システムです.
setuptoolsをインストールすれば,easy_installというコマンドができ,
pythonで作られた便利なパッケージをpythonから利用することが可能です.

インストールの前に!

setuptoolsのインストールをする前に,以下の2つを設定する必要があります.

  • setuptoolsを用いてパッケージをインストールする場所
  • setuptoolsを用いてインストールしたコマンドを入れる場所

これらを.pydistutils.cfgとして設定します.*2

%pwd
/Users/wasabi/
%touch .pydistutils.cfg
%emacs .pydistutils.cfg

このファイル内に設定を行います.
virtual-pythonを用いて設定したのはホームディレクトリのpythonフォルダでしたね.
このフォルダの下のほうには先に示したようにsite-packagesフォルダがあります.
また,binフォルダの中にコマンドが入っているので,
ここにsetuptoolsでインストールしたコマンドを入れるのがよいでしょう.
というわけで,.pydistutils.cfgには以下のように設定してみました.

[install]
install_lib = ~/python/lib/python2.5/site-packages
install_scripts = ~/python/bin
インストール

やっとこれでsetuptoolsのインストールができます.

%pwd
/Users/wasabi
%wget http://peak.telecommunity.com/dist/ez_setup.py
%~/python/bin/python ez_setup.py

これで,setuptoolsのインストールができました.
~/python/bin以下にeasy_installがあればインストールは成功です.

%~/python/bin/easy_install simplejson

などとして,simplejsonがインストールできるかどうか確認しましょう.

%~/python/bin/python

として,インタラクティブシェルからimport simplejsonができることも確認しておきましょう.
最後にPATHの設定をして,終了です.

*1:あ,ちなみにはてなアルバイターになりました.

*2:設定をしなくてもインストールは可能かもしれません.Macの場合にはこの設定をしたほうがよいでしょう.詳しくはhttp://peak.telecommunity.com/DevCenter/EasyInstall