富士宮のレストラン ビオスに行ってきた

ビオファーム松木でやっているレストランであるところのビオスにお邪魔してきた。

三度くらい振られているので、初訪問が三周年記念をやっていたという(オープン当時からずっと狙っていた)。西富士道路を通って行くと西富士宮駅からビオスまで山一つ超えるんだけどこの道が超狭い。助手席に座っていたんだけど手に汗握った。帰りは芝川のほうに下りていって富士宮イオンのほうにぬける道を使って帰ってきた。

サラダはマッシュルームと三年物のニジマス。ニジマスは富士宮の名産品なので外せないな。マッシュルームは生でした(つまりナマッシュ)ということは長谷川農産のマッシュルームだな。

1354701661

ひょうたんカボチャのスープ。ビオスのテーブルの真中に野菜が置かれていて、これがひょうたんカボチャですよって見せてくれる演出はいいなと思った。写真には取ってないけど野菜を育てているヒトには楽しめる演出だと思った。

1354701663

7種の野菜のグリル。レッドムーンと紫のサツマイモとか。太いごぼうは大浦ごぼうかな?味付けは塩とバターだけとのことで、ゴテゴテしないシンプルな味わいで美味しかった。

1354701665

夢幻豚(でいいのか?)の肩ロース。言うことなし。

1354701668

デザートは玉ねぎのアイスクリームとリンゴのタルト。アイスクリームの玉ねぎ感はすごかったが、バルサミコ酢のソースとは合うな。アイスに玉ねぎの香りがついてるのは賛否あるだろうなぁ。そういえば椎茸プリンをgawaで食べた時の衝撃と似たようなもんかな。

1354701669

満足のランチだった。また行きたい。

ProductName 農はショーバイ!
松木 一浩
アールズ出版 / 1365円 ( 2010-09-15 )


やっぱ料理は楽しいと思う。

ProductName ビオファームまつき 畑から届いた採れたて野菜レシピ
松木一浩
学研パブリッシング / ?円 ( 2010-09-29 )


器も色々欲しいが審美眼はない

ProductName 料理と食器
北大路 魯山人
/ ?円 ( 2012-09-14 )


HaskellでSQLiteにアクセスする

Haskell力をあげるために、少しの間Pythonを封印してみることにした(職場で)。

いつもならSQLAlchemyを使うところでHDBCを使っているが、本を読んで分かった気になっていただけだったと思い知らされた。

使ってみてDBIっぽいなぁと思ったらゆるく参考にしているらしい

HDBC is modeled loosely on Perl's DBI interface http://search.cpan.org/~timb/DBI/DBI.pm, though it has also been influenced by Python's DB-API v2, JDBC in Java, and HSQL in Haskell. Database.HDBC

結果のフェッチの仕方を調べてみると用途に応じて色々なやり方で結果を返すことができるようになっていた。

  • listで返すかassociation listで返すか、それともMapで返すか
  • 正格、非性格
  • 全てのrowを返すか、一つを返すか
  • SQLValue型かMaybe String型で返すか

必ず答えが返ってくるのが分かっているなら、Maybe Stringで返してfromJustでstringにすればいい。自分のブログ(Flask製)のdatabaseを使ってみる。

import Database.HDBC
import Database.HDBC.Sqlite3
import Data.Maybe

main = do
  conn <- connectSqlite3 "/Users/kzfm/blog.db"
  stmt <- prepare conn "select title from entry"
  execute stmt []
  results <- sFetchAllRows stmt
  mapM_ (putStrLn . fromJust) $ concat results

RWHの日本語版のEpubかmobiが欲しいなぁ。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan
オライリージャパン / 3990円 ( 2009-10-26 )


UXの考え方を参考に、サイト内検索から得られるデータを分析する

UXとアクセス解析の交わりは面白そう

1354437349

「ウェブ上を検索しているのは惹きつけたい人達で、自分のサイトを検索しているのはつなぎとめたいカスタマー」p.14

統計っぽくないのでSEOはあんまり興味ないけど、SSA(Sight Search Analytics)というのは非常に興味を持った。イントラサイトの運用だとSEOはほとんど必要ないけど、SSAは超重要なのに見過ごされている気がする。

SEOはウェブ全体の検索エンジンで自分のサイトを見つけやすくする方法です。一方SSAは、サイト内に実装された独自の検索エンジンで実行されるサイト内検索を改善する方法です

自サイト内の検索ログから、仮説を立てて検証してみたいなPDCAサイクルをどう回していくかっていう内容です。失敗を如何に評価して改善につなげるかというあたりの説明に重点をおいている。

  • 誰が何をいつ検索したか、から学ぶ
  • 言葉の粒の大きさ
  • セグメント分割の重要性
  • 入力されるクエリのほとんどが収まる幅を検索結果から把握する

どうぶつの森ダウンロード版は中途半端な「サンタ・クロース最適化(SCO)」

子供に「サンタに3DSかどうぶつの森お願いする」って言われたら、3DS一択なのか?!と思ったが、コンビニでダウンロードカードを調達すればいいのか。

でも紙かよーと思っていたら、大体みんな同じように悩むのな。

ProductName ニンテンドー3DS コバルトブルー

任天堂 / 14250円 ( 2012-03-22 )


出版・新聞絶望未来

元出版社編集長による電子出版市場に対する懐疑的な意見の本。Kindle前に出版されたので読んでみた。

著者は電子出版が進展しない7つの理由を挙げている

  1. タイトルが少なすぎる
  2. タブレット端末の普及不足
  3. 著作権処理が複雑で手間がかかりすぎる
  4. 出版社側に著作隣接権がない
  5. 紙と電子で販売制度が違う
  6. フォーマット乱立
  7. 厳しいDRM規制

ProductName 出版・新聞絶望未来
山田 順
東洋経済新報社 / 1575円 ( 2012-11-02 )


電子書籍は、現時点では紙より制作費(ほとんど人件費)がかかるらしい。

リフロー型電子書籍はテキストだけの読み物なら比較的簡単に制作できるが、実用書、学術書など、レイアウトや図版が複雑なものになればなるほど手間と時間がかかる

まぁ、でもいまの電子書籍の端末の解像度だとそんな複雑な図版にはできないんじゃないかなぁと思ったが、紙の図版を電子書籍化するのは面倒だろうな。

それから8章の課金モデルに対する取り組みと9章の著者の資本主義に対する考え方は読み甲斐があった。

個人的には、1,6の問題は時間が解決すると思うし、7に関しても音楽と一緒で棲み分けるだろう。2もiTunesと一緒で一度移行したら戻れない気がする(快適だし)。3,4,5の問題もユーザーにはあんまり関係ないし、できるところから進んでいくんじゃないかなぁ。本は言語の問題があるから難しいのかもしれないけど、英語の書籍はもうepub,mobi以外は買わないと思う。

Blogのデザインを変えた

RSSへのリンクが切れてたり、横長のアドセンスが邪魔だったので、ちょっとデザインを変更した。

Nexus7では快適に、iPhoneではまぁまぁ快適に読めるようになった。

1354413008

twitter bootsrapを使っていて分からなかったところがあったのでメモっておく

  • marginの設定が効かない(例えばプロフィール画像とか)ので、画像と文字がくっついてしまって困っている

ChEMBLのデータにアクセスしたくなったらSQLAlchemyを使うとよい

ローカルに構築したChEMBLにアクセスする場合には生のSQLじゃなくてSQLALchemyを使ったほうが楽だ。その場合にはMetaDataのrelflectをTrueで。

from sqlalchemy import create_engine, MetaData

db = create_engine('mysql://user:password@localhost/chembl_14?charset=utf8&use_unicode=0')
metadata = MetaData(bind=db, reflect=True)

table = metadata.tables['target_dictionary']
stmt = table.select(table.c['organism'] == 'Homo sapiens')

for r in stmt.execute():
    print r.chembl_id, r.pref_name

ChEMBLって、生物種を正規化してないのね。パフォーマンスの問題かな?

ProductName Bioinformatics Programming Using Python
Mitchell L. Model
Oreilly & Associates Inc / 5075円 ( 2009-12-23 )


Pythonとかのちょっとしたスクリプトをforeverでデーモン化する

pythonでちょっとしたクローラーを書いて終夜で流したい時に、夜中に落ちたりすると時間がもったいないので、死んでも生き返るようにしておきたいことがある。

追記121203

はてブで指摘された通り

forever start -c python crawler.py

で良かった。ドキュメントにちゃんと書いてあった。


node.jsで書いた場合にはforeverが使えて便利だが、他の言語で書いた場合にはchild_processで子プロセスにして呼び出せばいいので、javascriptをちょっと書いておけば、PythonでもPerlでもHaskellでもなんでも使える。

でもjavascriptを毎回書くのは(忘れるし)面倒なのでforever用のjavascriptを出力するスクリプトをpythonで書いてみた(foreverizeっていう名前)。

#!/usr/bin/env python

import sys

js_str = """var spawn = require('child_process').spawn;
var app   = spawn('{}', [{}]);
app.stdout.on('data', function(data) {{
  console.log('stdout: ' + data);
}});

app.stderr.on('data', function(data) {{
  console.log('stderr: ' + data);
}});

app.on('exit', function(code) {{
  console.log('exit code: ' + code);
}});
"""

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print "Usage: {} [command]".format(sys.argv[0])
    else:
        command = sys.argv[1]
        options = ""
        if len(sys.argv) >= 2:
            options = ",".join(["'{}'".format(op) for op in sys.argv[2:]])
        print js_str.format(command, options)

使い方は簡単

foreverize python crawler.py > crawler.js
forever start crawler.js

これで、デーモン化されて夜でも安心。

Titanium Studioでドハマリ中 -> XCodeを使って一部解決

最近Alloy+Emacsで快適に開発していたのだが、ちょっと実機転送したいアプリがあったので久々にTitanium Studioを起動したら思いっきりハマっている。

run iOS deviceすると次の画面が出てきて何を直したらいいのかさっぱり分からん。

titanium studio

そもそも、App IDとプロビジョニングプロファイルをきちんと理解していないからなぁ。ドキュメントをきちんと読んでおかないとダメだな。

あと、そのうち東京のもくもく会にも行ってみたいなぁ。

追記121128

KitchenSinkでも同じようなことになった。

初回インポートしてApp IDを変更して実機転送したところ初回は

一般設定して

general

次にcertificatesの設定して

certificate

最後にプロビジョニングプロファイルを登録

provisioning

これで実機転送できる。

しかし二度目の実機転送を行おうとするとPlease add a provisioning profileという画面が出て先に進まなくなる。

TitaniumのQAで似たようなのを見つけた

Xcodeのコマンドラインツールを再インストールしたら直ったというコメントがあったので、ついでに4.4.1から4.5.2にあげてみたけど変わらず。他のヒトが試したようにTitanium Studioを再インストールしたり、titanium, alloyを最新版にあげてみたけどダメ。

あとは、コメントにあったとおりにpreview version入れてみるくらいだけど、時間切れなので帰ってきたらやる

121128追記

RC(3.0.0.201211271925)とNightlyBuild(3.1.0.201211271945)入れてみたけど変わらず。

ところで、

titanium build -p iphone -T device -P XXXXXX -V "XXX XXXX"

とやってみたけどシミュレータが立ち上がってしまうのはなんでなんだろ?オプションでなにか足りないものがあるのかなぁ、、、

XCodeを使ったらちょっと前進 (追記2012.11.30)

XCodeを使ってみることにした

titanium build -b -f -p iphone -T device -F iphone -P [UUID] -V [NAME]

でapp/build/[application].xcodeprojができているので、それをXCodeで開いて実機を選択してrunすればいい。

これで、KitchenSinkは実機に転送できた。

Alloyで作ったアプリも転送できるんだが、

couldn't find app.js

というエラーが出る。

fayを使えと心に直接呼びかけられた

(……きこえますか…きこえますか…JSerの…みなさん… 三島Ha…無名…会です… 今… あなたの…心に…直接… 呼びかけています…フロントエンドは…underscore.jsを…使う場合では…ありません…あなたが…使う…言語は… Clojure某でも…ありません…Haskellです…Haskellを…使うのです…fayでコンパイルするのです…)

fayはHaskellコードをjavascriptにコンパイルするツールで最近精力的に開発が進んでいるようで素晴らしいですね、心に呼びかけられるのも納得です。

import Language.Fay.Prelude

mylist :: [Int]
mylist = [1..10]

-- test
main :: Fay ()
main = print $ any (==2) mylist

fayコマンドでhaskellをjavascriptにコンパイルすればnode.jsで動かせるようになります。

$ fay test.hs 
$ node test.js 
true

underscore.jsに載ってた他の関数もこんな感じ。findなんかはMaybe型で返ってくるので値がなかった場合の処理も楽ちんです。

-- each
mapM_ print mylist

-- map
map (3*) mylist

-- reduce
foldl (+) 0 mylist

-- reduceRight
foldr (+) 0 mylist

-- find
find even mylist

-- filter
filter even mylist

-- reject
filter (not . even) mylist

-- all
all (>0) mylist

-- any
any (>5) mylist

-- contains
any (==2) mylist

すごいHaskellをKindleで読む時が来ましたね!これは内側からなぜか湧き上がる物欲ですが、、、、

ProductName すごいHaskellたのしく学ぼう!
Miran Lipovaca
オーム社 / ?円 ( 2012-09-21 )


ProductName Kindle Paperwhite

Amazon.co.jp / 7980円 ( 2012-11-19 )


三島Haskell無名関数の会は一緒にHaskellを学ぶお友達を絶賛募集中です。今度は三島でHaskell勉強してホルモン食べながらビールを飲みます。