高速文字列解析の世界を読み始めた

僕のフィールドには一応Bioinformatics,Chemoinformaticsも含まれているので、文字列だけでどこまでいけるのかは非常に興味がある。まぁ物理法則を無視できなくなってくると文字列処理ではどうしようもないんだけどね。

3章のBWTまで読んだけど、3-4のBWTの性質と復元のところがさらっと流されていてさっぱり分からなかったので、検索したらわかりやすい説明を見つけた。

が、全体的には丁寧に解説されていて、分かりやすいと思うし、読んでて楽しい。

個人的にはSMILESみたいな構造情報を文字列にしたものをBWTで扱えないかなぁと考えている(chemoinformaticsに応用してみたい)。構造変換ルールにもイディオムみたいなのあるしね。MMPを高速に検索できても嬉しいだろうし、なんか使い道がありそうな気がするんだけど。

巳年

ひねりなし

ary = [32, 95, 95, 95, 95, 95, 95, 95, 95,
       95, 95, 95, 95, 95, 95, 95, 95, 95,
       95, 95, 95, 95, 95, 95, 95, 47, 32,
       32, 79, 32, 92, 95, 95, 95, 47, 10,
       60, 95, 47, 95, 92, 95, 47, 95, 92,
       95, 47, 95, 92, 95, 47, 95, 92, 95,
       47, 95, 92, 95, 47, 95, 95, 95, 95,
       95, 95, 95, 47, 32, 32, 32, 92, 10]

print "".join([chr(c) for c in ary])

python

YesodのBlogのExampleがちょっとわかりにくい

Yesod本のBlogのExampleがyesod initでできるスキャフォールドとかけ離れていてわかりにくい。

ProductName Developing Web Applications With Haskell and Yesod
Michael Snoyman
Oreilly & Associates Inc / 2805円 ( 2012-05-04 )


Foundation.hsとかに丁寧なコメント書いてあるだろうっていうツッコミもあるだろうけど、写経できるに越したことはないよなぁと思う。

wikiのほうを先にやるかな。

ウェブで政治を動かす!

僕はKindle版で読んだけど、これは読んでおくべき良書だと思う。個人的にはウェブで動かすのは地方政治であるべきかな。facebookあるしね。

政治家は、政策を実現するための道具です。その道具を使いこなすためのメディアとして、インターネットは公開性が高く、コストもかからない。さらに、各委員会、審議会は公開の場で行い、テーマごとに議事録も整理して、インターネット上で閲覧できる仕組みを作るべきだと考えます。

ProductName ウェブで政治を動かす! (朝日新書)
津田大介
朝日新聞出版 / 861円 ( 2012-11-13 )


デモとは

個人的にはデモの意義は勉強になった。

フランスの市民デモに「異議申立てのため、ただ、参加するだけでいい」「デモは楽しいもの」という共通点があることを我々は知っておくべきだ。

民主主義というのは多数派が少数派の意見を効率良く無視するためのシステムだというのは周知のとおりであり、小選挙区制というのはそれが顕著に現れていると思う。

デモとは何か。それは、もはや暴力に訴えかけていかなければ統制できないほどの群衆が街中に出現することである。

そして、選挙区を超えて、密度を高めて主張する手段がデモなのかなぁと思った。少数派の意見を効率良く無視させないシステムだな。そう考えるとウォール街を占拠せよなんかは興味深い。

双方向性

地方政治にこそ双方向性を持ち込む必要があるよなぁと思う。

ホームページというのはもう古いんですよね。更新は遅いし、双方向性も共有性もない。要は石器のようなものです。

まぁ、富士市のtwitterFacebookも双方向性を完全にシャットアウトしていてどうしようもないなぁと思うんだけどリノベートできるようにある程度API的なものを整備してくれないかなぁと思っている。

そんだけやれば市民で勝手に仕組みを作るでしょ。

追記 13.01.02

双方向の仕組みも模索しているようだ。頑張って欲しい。

正月は家でグダグダしながらコードを書いている

昨日長野から帰ってきて、今日は朝からぐーたらしている。風が強すぎて外に出る気も起きないのでDJ ShadowのMixを聴きながら、大那を飲みつつYesodいじってた。

1357096629

年末に頂いた赤目の処理をして、幾つかを煮物にしてもらう。

1357096630

ついでにustもしてみた。リキッドとAdele多めで

Rolling In The Deep (NuTone Remix) / Adele
Long Distance / Fred V & Grafix
Some Disco / LSB
Long Distance / DJ Marky & Makoto
Keep Me Down (Ft. Angela Johnson) / Makoto
The Stand / High Contrast
Hometown Glory (High Contrast Remix) / Adele
The Plan That Cannot Fail / London Elektricity
Through The Night (Club Mix) / Drumsound & Bassline Smith
All Yours (S.P.Y Remix) / Submotion Orchestra
Habitation / The Prototypes
New Drums / Teddy Killerz
Requiem / Uman & No Money
The First Note Is Silent (feat. Tiesto & Underworld) / High Contrast

YesodのdefaultLayout

defaultLayoutがどうなっているのか気になったので、ソースコードを追いかけてみた。

messageの処理とwidget埋め込みをやるようになっていた。

defaultLayout :: GWidget sub a () -> GHandler sub a RepHtml
defaultLayout w = do
    p <- widgetToPageContent w
    mmsg <- getMessage
    hamletToRepHtml [hamlet|
$newline never
$doctype 5

<html>
    <head>
        <title>#{pageTitle p}
        ^{pageHead p}
    <body>
        $maybe msg <- mmsg
            <p .message>#{msg}
        ^{pageBody p}
|]

ProductName Developing Web Applications With Haskell and Yesod
Michael Snoyman
Oreilly & Associates Inc / 2805円 ( 2012-05-04 )


カクレモモジリ

捕まえた

1357096004

捕獲方法

あけましておめでとうございます

去年とは違い、まったりと年を越した。

1356990296 1356990299

今年はHaskellでひとつくらいはウェブアプリケーションを作るのと、AlloyでつくったiPhoneアプリを幾つかリリースできればと思っている。

それから山歩きくらいは再開したい。

飯綱高原スキー場に行ったら空いてて最高だった(レンタルボード以外は)

子供の雪遊びのために、そり遊びしてきた。それほど混んでなくて良かった。昨日の雨でちょっとアイスバーンっぽくなっていたけどソリにはまったく関係ないし。

1356939803

もともと、子供の面倒を見るつもり120%だったので、板を持っていかなかったのだけど、ちょっと滑れそうだったのでレンタルした。

けど、短いのしかないし、ビンががたがたしてるし、右足マイナス振ってないし(これはしょうがないけど)で、4,5本滑ったら良くなってしまった。

夜に美味しいワインが控えているので疲れる前にやめておいた。

というわけで今年の更新は最後だ。今からワインをがぶがぶしてくる。

YesodでAjax

Yesod本の写経。addJullius, AddHamletでtoWidgetを使えというdeprecated warningが出たので本家サイトのように書きなおした。

hamletはtoWidgetよりはwhamletのほうが見やすいかな。

{-# LANGUAGE QuasiQuotes, TypeFamilies, OverloadedStrings #-}
{-# LANGUAGE MultiParamTypeClasses, TemplateHaskell #-}

import Yesod
data R = R

mkYesod "R" [parseRoutes|
/ RootR GET
/#String NameR GET
|]

instance Yesod R

getRootR = defaultLayout $ do
  setTitle "Homepage"
  addScriptRemote "http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"
  toWidget [julius|
$(function(){
  $("#ajax a").click(function(){
    jQuery.getJSON($(this).attr("href"), function(o){
      $("div").text(o.name);
    });
    return false;
  });
});
|]

  let names = words "Larry Moe Curly"
  [whamlet|
<h2>AJAX Version
<div #results>
  AJAX results will be placed here when you click #
  the names below
<ul #ajax>
  $forall name <- names
    <li>
      <a href=@{NameR name}>#{name}
<h2>HTML Version
<p>
  Clicking the names below will redirect the page #
  to an HTML version
<ul #html>
  $forall name <- names
    <li>
      <a href=@{NameR name}>#{name}
|]

getNameR name = do
  let widget = do
        setTitle $ toHtml name
        [whamlet|Looks like you have Javascript off Name: #{name}|]
  let json = object ["name" .= name]
  defaultLayoutJson widget json

main = warpDebug 3000 R

ProductName Developing Web Applications With Haskell and Yesod
Michael Snoyman
Oreilly & Associates Inc / 2805円 ( 2012-05-04 )