16122012 macbook
移行アシスタントで丸二日かかったので、thundervolt-LANとかそういう有線のケーブルは必須かなと思った。
ちなみにきちんと確認せずに買ったUSB-100の変換アダプタは遅すぎて役に立たなかったが、出張先のホテルでLANケーブルに差す時には重宝するんだろうなぁ。
16122012 macbook
移行アシスタントで丸二日かかったので、thundervolt-LANとかそういう有線のケーブルは必須かなと思った。
ちなみにきちんと確認せずに買ったUSB-100の変換アダプタは遅すぎて役に立たなかったが、出張先のホテルでLANケーブルに差す時には重宝するんだろうなぁ。
15122012 Haskell
普段はrequests+pyqueryでやるが、今はHaskell強化月間なのでHandsomeSoupを使ってみた。
import Text.HandsomeSoup import Text.XML.HXT.Core main = do doc <- fromUrl "http://matome.naver.jp/odai/2135350364969742801" links <- runX $ doc >>> css ".MTMItemThumb" ! "src" mapM_ (putStrLn . show) links
調べてわかったんだが、Haskellって意外とスクレイピング用のライブラリが充実していた。
12122012 life
初めての広島は寒かった。何日か前には雪も降ったらしい。
講義の感触はいまいちわからないんだが、質問はよくされていたので良しとしよう。
僕も色々勉強になったし良かった。

100枚スライドを用意していって80枚しか使わなかったのだけど、最後の20枚はopensourceとどう付き合うかとか、勉強会にいこうみたいなキャリアをどう考えるかみたいなどうでもいい話だったので出さなくて良かった。
10年以上この業界にいてその当時と変わったなーと思うことはいくつかあった。
(あれば便利なのはあるが(PipelinePilotなど))
クラスタも今はEC2があるし気軽にランできる
(VPSは便利)
教育のためのレールも引かれつつある(見つけにくいだけで)
講演とか講義のために資料をまとめると自分の頭も整理されていい。
10122012 macbook
週末に移行作業する。

純正品を買うのもどうかなーと思ったので、planexで。
信者じゃないのでこだわらない。
PLANEX Mini Displayport -]VGA端子変換アダプタ (MacBook MacBook Pro MacBook Air) PL-MDPVG0210122012 life
挫折した。
解像度が高いものをホット、低いものをクールと呼ぶ。
クールなメディアないし人間は人びとに参加と関わりあいを要求する。人びとが反応する余地が残っているからである
09122012 Haskell twitter-bootstrap
次回の三島Haskell無名の関数の会は懇親会を鈴木屋@三島でやることが決定しているので、前回のホルモン画像を使ってみた。

使ったもの
Shizudevつくる会でbootstrapの勉強会をやりたいなーと思っているんだけど誰か興味ある人いないじゃろか?
08122012 twitter-bootstrap
BootstrapのCSSを簡単にいい感じにカスタマイズできる厳選サービス2+1つ紹介で二つ紹介されてたので、両方触ってみた。
PaintStrapはAdobe kulerとCOLORloversの配色を取り込んでbootstrapに設定してくれる。
が、kulerがいまいち使えないというか、気に入ったパターンをアプライするとごちゃごちゃした感じになるので「えーこんなの使えねーじゃん」と最初は結構悩んだ。
どういうパターンを選択するのがよいかということになるわけだが、kulerを使った誰にでもできそうなWeb配色を参考にした。というわけで、同系色の濃淡+アクセントカラーというパターンを選ぶとうまくいくことが多いかなと。
natureとかいい感じ

kulerだと7:2.5:0.5とか色の面積比で見ることができないので、面積力がなくてバランスが掴めない場合にはCOLORloversの比率付きで出ているパレットを使ったほうが全体のイメージが掴みやすいかもしれない。それから色で検索できるので個人的にはこっちを使うほうが楽かなと思う。lavish(後述)でつくったセットが気に入らない場合に色で検索できる。
写真からbootstrapの配色を決定しくれるサービスなのでお手軽。自分の写真から配色つくれば、オリジナルの写真をherounitにでも設定すれば素敵になるし。

写真もアクセントカラーの効いてるヤツを選ぶといいみたい(こういうのとか)
Flickrで良さげなのをみつけてアプライするのもいいと思う。
ただ、どうしてもボケた感じになってしまうので、似たような配色をCOLORloversで探してみることは多いかも。あとはFlickr使うとオリジナルの写真を貼付けにくいので、自分のPhotostockの中から使うのがいいかな。
つくったlessは自分用twitter bootstrapを管理するでmy_variablesを配色名にちなんだ名前のファイルにしてヘッダーにオリジナルの画像のURLがlavishとかパターンのurlでもつけておけばいいかなと思う。
こんな感じで使ってみようと思う。
07122012 Haskell
Hakyllのサンプルを読んでいてarrowの使い方がわかりやすくていいなーと思ったんだがarrの必要性がよく分からなかった。
例えばtagblogの22行目のarrとか。
>>> arr (renderDateField "date" "%B %e, %Y" "Date unknown")
renderDateFieldは
renderDateField :: String -- ^ Key in which the rendered date should be placed -> String -- ^ Format to use on the date -> String -- ^ Default value, in case the date cannot be parsed -> Page a -- ^ Page on which this should be applied -> Page a -- ^ Resulting page renderDateField = renderDateFieldWith defaultTimeLocale
だからrenderDateField "date" "%B %e, %Y" "Date unknown"の型は
Page a -> Page a
でarrで持ち上げる必要ないんじゃないかなぁと。
と思ったので、22行目のarrを除いてコンパイルしてみた。
$ ghc --make test.hs [1 of 1] Compiling Main ( test.hs, test.o ) test.hs:22:17: Couldn't match expected type `Compiler (Page String) b0' with actual type `Page a0 -> Page a0' In the return type of a call of `renderDateField'
あれ?arrってCompiler型に持ち上げていたのか。ということはCompiler型ってAllowなのか
みてみると、
data Compiler a b = Compiler { compilerDependencies :: Reader DependencyEnvironment Dependencies , compilerJob :: a -> CompilerM b }
あーなるほど。こういうのもArrowになるのか。
というわけで、arrの使い道がちょっと分かった(気がした)。
@karky7に教えてもらったEmacsのタグジャンプでRedmineの中を探索するのが楽になったが、etagsはHaskell対応していない。
これは困ったとフグったところ、hasktagsをみつけて解決。
hakyllのソースで
hasktags -e .
ってやってTAGSファイルを作ったら、Emacsでタグジャンプできる。
06122012 Haskell
以前書いたのを今みるとグダグダだ。やっぱコピペはダメだな。
今回feedを使ってみた。ファイルの読み込みだったらparseFeedFromFileを使う。
import Text.Feed.Import import Text.Feed.Query import Data.Maybe main = do rss <- parseFeedFromFile "test.rss" mapM_ putStrLn $ map (fromJust . getItemTitle) (getFeedItems rss)
HTTPと組み合わせる場合は
import Text.Feed.Import import Text.Feed.Query import Data.Maybe import Network.HTTP eutils_url = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/erss.cgi?rss_guid=" guid = "1ZQ4a7JQ6X8P3NJNZLWG_ML-XsrLQgH63A06CsXO-jG0m_iEe-" getTitle = (take 60) . fromJust . getItemTitle getItems = getFeedItems . fromJust . parseFeedString main :: IO () main = do res <- simpleHTTP $ getRequest $ eutils_url ++ guid body <- getResponseBody res mapM_ putStrLn $ map getTitle $ getItems body
実行すると
RMol: A Toolset for Transforming SD/Molfile structure inform Adenosiland: Walking through adenosine receptors landscape. Enzyme Informatics. The Use of the R language for Medicinal Chemistry Applicatio Similarity coefficients for binary chemoinformatics data: ov Review on Chemogenomics approach: Interpreting antagonist ac Immunotoxicity, Flow Cytometry and Chemoinformatics: A Revie A Parallel Systematic-Monte Carlo Algorithm for exploring Co Validation of drug-like inhibitors against Mycobacterium tub Desirability-based Multi-criteria Virtual Screening of Selec The use of glycoinformatics in glycochemistry. Role of computational methods in pharmaceutical sciences. High-throughput screening with a miniaturized radioligand co Chemoinformatics: recent advances at the interfaces between ReactionPredictor: Prediction of Complex Chemical Reactions
プロキシとかセッションなんかを使いたい場合にはNetwork.Browserを利用する。
Network.Browserは以下の機能が使えるハイレベルなモジュール。
browseのところに色々挟みこむとよろしくやってくれる(今回はなんもしてないけど)。職場で使う時にはプロキシを挟む必要があるためsimpleHTTPは使えない。
import Text.Feed.Import import Text.Feed.Query import Data.Maybe import Network.HTTP import Network.Browser (browse, request) eutils_url = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/erss.cgi?rss_guid=" guid = "1ZQ4a7JQ6X8P3NJNZLWG_ML-XsrLQgH63A06CsXO-jG0m_iEe-" getTitle = (take 60) . fromJust . getItemTitle getItems = getFeedItems . fromJust . parseFeedString . rspBody main :: IO () main = do (_, res) <- browse $ do request $ getRequest $ eutils_url ++ guid mapM_ putStrLn $ map getTitle $ getItems $ res
ちなみにRMolにはいまいち惹かれないなぁ。Rならではのメリットあるんだろうか?