The Haskell Platformを2012.4.0.0にあげた

あげたら

cabal install virthualenv
cabal install hlint ghc-mod

と打って開発環境を整える。

三島Haskell無名関数の会 第一回目

11/24に三島Haskell無名関数の会 第一回目をやります(@富士)。

僕は「静岡のHaskellerはEmacsを使う」というタイトルで、初学者向けのHaskell開発環境の話をするつもりなので、Haskellに興味があるけど一歩の踏み出し方の分からないヒトは参加すると幸せになれるかもしれません(Gentooの布教活動も噂されていますが)。

それから、状態計算から理解するモナドという話をしようと思っています。

他にはYesodの話が出るそうです。

なんか話したいネタがあればコメント欄に書いておけば@ando_ando_andoが調整してくれるはず。

local-set-keyに出てくる(interactive)

よく分からないでコピペで増やしたlocal-set-keyだが

(local-set-key "\C-j" (lambda () (interactive) (insert " -> ")))

と、ラムダ式に(interactive)が含まれている。試しに(interactive)を排除して

(local-set-key "\C-j" (insert " -> ")))

を評価(C-x C-e)してC-jを押してみると

Wrong type argument: commandp, (lambda nil (insert " -> "))

とミニバッファにエラーが出力される。commandpとは一体なんだろうか?と f1 f commandp

(commandp FUNCTION &optional FOR-CALL-INTERACTIVELY)

commandかどうかを判定する関数らしいが、よく分からんのでf1 f local-set-keyで見てみると

(local-set-key KEY COMMAND)

関数ではなくてCOMMANDである必要があるらしい。

コマンドとは、定義の最初にinteractiveスペシャルフォームが置かれた関数ですEmacsLISPテクニックバイブル p.79

EmacsLISPテクニックバイブルにちゃんと書いてあった。

ProductName Emacs Lispテクニックバイブル
るびきち
技術評論社 / 3129円 ( 2011-11-26 )


最近elispをよく読むのでかなりお世話になっている本だ。

macbookの要らないファイルを消した(.MobileBackups.trashとか.Spotlight-V100)

次に買うmacbookで悩んでいるわけだが、ファイルサイズが128Gに収まれば選択の幅が広がるかも!なんてことを思いついたので、Traktorで使わないmp3をNASに移して、写真をDVDに焼きつつNASに移したのにまだ200G近くある。

/でdu -m -d 1してみたら、.MobileBackups.trashが50Gと.Spotlight-V100が4Gあったので、

sudo rm -rf /.MobileBackups.trash
sudo tmutil disablelocal #ローカルにバックアップしない
sudo mdutil -i off /
sudo rm -rf /.Spotlight-V100/
sudo mdutil -E -i on /

とやって、140Gぐらいまで減らした。テクノ系のmp3もNASに移せば120Gくらいまで減らせそうな感じはするんだが、そうすると何のためにmacbook買い換えるのか分からなくなってしまうしなぁ。

素直に256GのSSDを選択しようっと。

CoffeeScriptでFlymake

Emacs24にしたので再設定

coffeelintのインストール

npm install -g coffeelint

coffee-modeはM-x list-packagesからiで選んでxで実行

Tabの設定が変だったので、init.elにちょっと追加。ついでにアローとかファットアローを挿入するキーバインドも設定。

(add-hook 'coffee-mode-hook '(lambda ()
  (make-local-variable 'tab-width)
  (set 'tab-width 2)
  (local-set-key "\C-j" (lambda () (interactive)(insert " -> ")))
  (local-set-key "\M-j" (lambda ()(interactive)(insert " => ")))))

flymakeはこの通りに設定しておけばでオッケー

ApressのEbooksDailyDealをGmailに送る

Nexus7を購入してから次の2つの電子書籍のDailyDealにはよく目を通すようになった。

ApressのほうはGoogle Readerでうまく更新されなくてちょっと困ったので、毎朝Gmailに送るようにしてみた。

import requests
import feedparser
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate

EMAIL = 'your_account@gmail.com'
PASSWORD = 'your_password'

def sendmail(subject, body):
    msg = MIMEText(body, 'plain', 'utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = EMAIL
    msg['To'] = EMAIL
    msg['Date'] = formatdate()

    s = smtplib.SMTP('smtp.gmail.com', 587)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login(EMAIL, PASSWORD)
    s.sendmail(EMAIL, EMAIL, msg.as_string())
    s.close()

if __name__ == '__main__':

    r = requests.get("http://www.apress.com/index.php/dailydeals/index/rss")

    if r.status_code == 200:
        d = feedparser.parse(r.content)
        e = d.entries[0]
        sendmail(
            u"[APRESS DailyDeal] {}".format(e.title),
            u"{}\n\n{}".format(e.summary, e.links[0].href)
            )

ちなみに本日のディールはProtect Your Wealth from the Ravages of Inflationという本で僕は想定読者ではなかった。

people who have reached a level of financial stability and whose income is greater than monthly expenses.

HaskellでFlymake

Emacs24だったらghc-modを使うのが簡単。

まずはコマンドラインツールをインストール

cabal install ghc-mod hlint

package.elからflymake,haskell-mode,ghcを入れる。M-x list-packagesでiで選んでxでインストール開始

~/.emacs.d/init.elの設定

;; haskell ghc-mod
;; https://github.com/kazu-yamamoto/ghc-mod
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init) (flymake-mode)))

こんだけで快適な環境が手に入る。

Alloyのダッシュボードのサンプル

alloy / test / apps / ui / dashboardのサンプルが良かった。

dashboard

こんなかんじのをサクッと作れるのがいいですね。

さようならザリオ、こんにちわメダカ

消防祭りでメダカすくいをして10匹くらいゲットしたのだが、水槽がないのでザリガニ(ザリオ、脱皮三回)を逃してメダカを飼うことにした。

ザリオは6ヶ月くらい飼っていて一週間くらい前に脱皮をしてなかなかいい感じのザリガニに育ったので若干愛着が湧いていたのだけど、子供たちが全然世話をしないので、逃がしてやろうかっていう話をしてたのでいい機会だ。

1352623080

メダカすくいで、一緒にもらってきたホテイアオイを浮かべているが、物足りないのでジャンボエンチョーで水草と貝でも買ってきてビオトープっぽくしたい。

個人的には熱帯魚とかには興味ないんだけど、メダカの飼育は楽しいと思う。バランスの取れた生態系というか、バランスをとることが好きなのかもと自己分析してみたがどうなんだろ?

talknote Vol.6に参加した

主催者、講演者、参加者のみなさまお疲れ様でした。僕はかなり楽しめました、というより価値ある半日だった。

1ランク上を目差すためのWeb配色入門 坂本 邦夫さん

もともと、ウェブ配色 コーディネートカタログの著者が公演するということで、行こうと決めたので、坂本さんの話は非常にためになった。

企業内のウェブサービス設計だと、(キャズム理論でいうところの)ラガード対応が非常に重要だったり(年とってて偉いし)、デザイナーさんを雇えるはずもないので、こういうあたりをプログラマーがカバーしないといけないので。

色々な気付きやヒントがちりばめられていて、ちょっと試してみたいことが幾つかできたので職場で試してみようっと。

talknote 配色

「つくること」から「つたえること」へ ~価値をつたえる情報設計 藤田 淳子さん

こちらも示唆に富んだ内容で、非常に面白かったが感想だけ。

僕はどっちかというと反復型の開発手法が好きなので、演者の使っているような手法がどれだけ取り入れられるかよく考えてみる必要があるかなと。ユーザータイムラインは「あー、そういうやり方があるのか!」と思った(これは面白そうなので取り入れてみる)。

ペーパープロトタイピングよりは作ったほうが速いしユーザーフィードバックを受けやすい気もするんだけど、自分の仕事はイントラでの設計で、そもそもターゲットのユーザーを理解しているからそう感じるのかも。あと、ペーパープロトタイピングの経験がないので機会があればやってみたい。

Nexus7 便利だ

今回はコーディングがないのでノートを持っていかずにNexus7にSimpleMindを入れていったのだけど、これが非常に便利だった。軽快に動くし、pngに書き出してgoogle driveに送れるし、学会とかこれでいいやと思った。

というわけで、7インチタブレットは便利だ。

ProductName ウェブ配色 コーディネートカタログ
坂本 邦夫
技術評論社 / 2604円 ( 2011-02-23 )


Emacsでコード補完にJediを使う (Python)

昨日ac-python入れてみたんだけど、@kozo2jediがいいと教えてもらったので、早速使ってみた。

なんも考えないで設定すると/usr/bin/pythonを見ているようで、import errorが起きていたので、JEDI:SOURCE-DIR/env/bin/python に/usr/local/bin/pythonのシンボリックリンク張って解決

それから

(add-hook 'python-mode-hook 'jedi:ac-setup)

がうまく動かなかったので、jedi:setupのほうからC-tabで補完させて使っている。

それから下の順番で読ませないと動かないのはpackage.elのせいなのかなぁ。

;; jedi
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:setup-keys t)
(require 'jedi)

候補が表示されるのはac-pythonと似たような感じ。

jedi

引数が表示されるのはかなり便利だ。Flaskのmodelとか引数の順番結構忘れるので。

jedi