Mac OSX 10.8にmatplotlibをインストールする

昔からmatplotlibのインストールはめんどくさかったんだが、OSX 10.8には全然入らない、入る気配すらみせない。

インストールできたと思ってもipython --pylabするとAbort trap: 6する。python対話環境からimportしてみると

Symbol not found: _png_set_longjmp_fn

がでる。sofみたらln -sでいけるでっていうのを見つけたんだけど、「えーこれで解決すんの?」と思いつつやってみたけどやっぱダメだった。

さらに色々調べていたら、Mac OSX 10.7 LionにNumpy,Scipy,Matplotlibなどをインストールするというエントリをみつけて、Scipy Superpackを入れてみたらあっさりインストールできた。

仮想環境じゃないけどまぁいいかなぁと。

  • Numpy
  • Scipy
  • Matplotlib
  • iPython
  • Pandas

がインストールされるのでPython for Data Analysisを読む準備が整った。

ProductName Python for Data Analysis
Wes Mckinney
Oreilly & Associates Inc / 3634円 ( 2012-10-29 )


HTML5 ★ BOILERPLATEを読んでみた

14th Knock!のセッションでHTML5 Boilerplate読みをやるよーっていう案内を見て、そういえば僕もH5BPの中身を読んだことなかったわーということで読んでみた。

もともとInitiailzr経由でbootstrapを使い始めたのだけど、その際にH5BPかbootstarpのどちらかを選択するみたいな印象を受けたので、両者は同じようなフレームワークなのかぁと勝手に理解してたんだけど、改めて読んでみたら全然違った。

H5BPはhtml5のボイラープレートとレスポンシブ・ウェブデザインのためのcssがちょっと含まれている。一方でtwitter-bootstrapはgridシステムとかUIを備えたcssのフレームワークって感じで、実は補完する関係なのね。Initiailzrでbootstrapのセットをダウンロードするときについてくるindex.htmlのスケルトンはH5BP由来だった。

ソース読むのが手っ取り早かったけど、H5BPのドキュメントもよかった。特にExtend and customise HTML5 Boilerplateはメタデータとかマイクロフォーマットが完結にまとまっていた。

興味があれば

14th Knock!は2013年4月19日(金)19:30〜21:30だそうです

ScipyをLionにインストール

なんかエラーが出たのでちょっとはまった。

....ARPACK/FWRAPPERS/veclib_cabi_c.o" failed with exit status 1

みたいなやつ。

Installing SciPy / Mac OS Xにあるように環境変数を設定してから再度pipしたらインストールできた。

$ export CC=clang
$ export CXX=clang
$ export FFLAGS=-ff2c

できたのでよし。

ゼロから理解する コメの基本

家庭菜園やっていると連作障害は悩ましい問題なんだけど、稲は連作障害が出ないのが不思議なんだよね。でも、水田というシステムによるものなのか、稲自体が連作障害を起こしにくいのかはよく分からなかった。

  • コメは1hでは機械経費がかかるので赤字
  • 国産のコメは中国産のインディカ米の6倍

まぁ色々難しいよね。

ジャガイモを植えつけた

去年はキタアカリを植えたが今年はオーソドックスな男爵にしてみた。

1363490801

畝間を大きくとりたかったんだけど、種イモの数の関係で畝が三列になったのでちょっと窮屈になってしまった。

1363490802

セオリー通りに種イモの間に化成肥料置いて土をかぶせた。

1363490807

来週あたりに人参の種を蒔く予定。ズッキーニはどうするかなぁ、今年はベランダで育ててみようかな。

ニンニクは順調

1363490804

ブロッコリーは小さいが収穫した。わき芽を取りにくる暇もないので処分した。

1363490806

最近飲んだ日本酒(と焼酎)

色々あって最近焼酎も少し取り入れ始めた。何年ぶりだろうか。

1363259207

相模灘の濁りはシュワシュワ感がたまらない。キリッとした感じ。

1363258952

志太泉のおりがらみはキレイな感じで、スッキリしつつも酸がしっかりとあって飲みやすい。

1363258953

白隠正宗は生もとの純米のラベル違いバージョンらしい。どっしりとしていて、燗つけると深みが増す。でもちょっと飲んだ後に残る感じはあるかな。飲み飽きはしないけど。

1363258955

ところで、この花見ラベルには杜氏が隠れているらしい(ウォーリーを探せ風に)ので探してみるとよいでしょう。

1363258956

それから白隠正宗からでている米焼酎は美味いので一度は飲むと良いでしょう。先々週初めて飲んで旨さにやられた。

1363259697

Sass x SyntaxCheck x Linting = Emacs & Flymake

Sass+Comapss用にEmacsをいじっていった結果、Flymakeによるリアルタイム構文チェックまでたどり着いて快適になった。livereloadを組み合わせるとさらによい。

  • scss --checkによるコンパイルチェック(エラー検出)
  • scss-lintによるLinting

更新を検知してリアルタイムに上のチェック、エラーがあれば該当行が赤く染まる。カーソルを該当行にのせると何がいけないのかがミニバッファに表示されるのでエラーが把握しやすい。

ちなみに下のスクリーンショットでは29行目にカーソルを合わせていて、「セレクタは一行に一つづつ書きなさい」とpythonのimportみたいなことを言われている。

flymake scss

install

こんな感じだったと思う。

gem install sass
gem install compass
gem install scss-lint

scsscheckers

scss --checkとscss-lintを実行するスクリプトを用意する。ついでにflymake-cursorに対応させるために出力をいじるが、scss --checkの場合は--traceをつけると偶然にもflymake-cursorの書式に対応するので必要な一行目だけを出力させている。

#!/usr/bin/env python

from subprocess import Popen, PIPE
import sys

for arg in sys.argv[1:]:
    if arg.endswith(".scss"):
        file = arg

p1 = Popen(["scss", "--compass", "--trace", "--check", file],
           stdin=PIPE, stdout=PIPE, stderr=PIPE)

stdout, stderr = p1.communicate()
print  stderr.split("\n")[0]

p2 = Popen(["scss-lint", file],
           stdin=PIPE, stdout=PIPE, stderr=PIPE)

stdout, stderr = p2.communicate()
print stdout.replace(" - ", ": ")

Emacs

scssコマンドをscsscheckersコマンドに変更するためにscss-sass-commandを上書きする。

;;; http://d.hatena.ne.jp/CortYuming/20120110/p1#20120110f1
(defun my-css-electric-pair-brace ()
  (interactive)
  (insert "{")(newline-and-indent)
  (newline-and-indent)
  (insert "}")
  (indent-for-tab-command)
  (previous-line)(indent-for-tab-command)
  )

(defun my-semicolon-ret ()
  (interactive)
  (insert ";")
  (newline-and-indent))

(add-to-list 'auto-mode-alist '("\\.\\(scss\\|css\\)\\'" . scss-mode))
(add-hook 'scss-mode-hook 'ac-css-mode-setup)
(add-hook 'scss-mode-hook
          (lambda ()
            (define-key scss-mode-map "\M-{" 'my-css-electric-pair-brace)
            (define-key scss-mode-map ";" 'my-semicolon-ret)
            (setq css-indent-offset 2)
            (setq scss-sass-command "~/bin/scsscheckers")
            (setq scss-compile-at-save nil)
            ))

(load-library "flymake-cursor")

補足

ここ二週間くらい試したこと

おまけ

Flask+Sass-bootsrap+Coffeescriptなサイトを作っていて、Python,CoffeeScript,Sass全てに対してFlymakeがサポートしてくれるのでつまんないtypoとかのミスで時間をムダにすることがなくなった。

これを機会にWebデザイナー系のヒトもEmacsに入門すると楽しいと思いますよ!

Lean UX と Lean Analyticsが気になる

気になるなぁ。このくらいの内容だと英語がハードだろうしちょっと迷っている。

ProductName Lean UX: Applying Lean Principles to Improve User Experience
Jeff Gothelf
O'Reilly Media / ?円 ( 2013-02-22 )


ProductName Lean Analytics: Use Data to Build a Better Startup Faster
Alistair Croll
O'Reilly Media / ?円 ( 2013-03-08 )


脳には妙なクセがある

脳の仕組みを知って、それをうまく利用して効率的に仕事をこなそうというライフハックはメタプログラミングみたいで好きだ。

技術として読むなら脳が教える! 1つの習慣を読むべきだけど、進化論みたいなサイエンスも絡めたエッセイが読みたければこっちが面白いでしょう。

僕は、expressとかgit clone(最近だとcompass)みたいなスキャフォールドをとりあえず作るようなコマンドが好きなんだけど、よく考えてみると作業を始めるっていう障壁が大きく下がるからなんだろうなぁと思う。watch系も怠惰を肯定しているようで好きだしなぁ。

面倒くさくないこと以外は全て超めんどくさいっていうトートロジックな言葉がよく当てはまる気がする。

ProductName 脳には妙なクセがある
池谷 裕二
扶桑社 / 1680円 ( 2012-08-01 )


  • 脳はブランドに反応する
  • 心理表現と味覚には本質的に関係がある
  • 無意識的な学習が重要
  • 意思は脳から生まれるのではなく、周囲の環境と身体の状態で決まる
  • 怠惰思考
  • 一見抽象的に見えるヒトの高度な思考は、身体の運動から派生している

gntpを使ってgrowl通知をしてみた

gntpを使ってみた。Growlモジュールと違ってurlを渡せばアイコンが表示されるので便利。

gntp

Shizudev作る会は、手を動かす系(ハンズオンとかワークショップ)が多めの不定期の集まりです。最近はHaskellに重点をおいています。興味があれば参加してください。

import requests
import json
import gntp.notifier

r = requests.get("https://api.github.com/orgs/shizuru/members")
members = json.loads(r.content)

growl = gntp.notifier.GrowlNotifier(
    applicationName="Shizuru",
    notifications=["New Updates", "New Messages"],
    defaultNotifications=["Shizuru Members"],
)
growl.register()

for member in members:
    growl.notify(
        noteType="New Messages",
        title=member['login'],
        description=member['html_url'],
        icon=member['avatar_url'],
        sticky=False,
        priority=1,
    )