ラーメン屋の看板娘が経営コンサルタントと手を組んだら

読み物としては面白かったけど、タイトル狙いすぎじゃないのか?

「ラーメン屋の娘がコンサルに立て直しをお願いしました」

ってのが正しいので、GOALにあやかってRAMENとかコンサルのほうが潔い気もするけど。

ハッピーエンドなストーリーものを読むのが好きな人にはイイかも。

個人的にはコンサルに頼むシリーズだったら、ラーメンを題材に取る必要があるのか?とも思ったんだが著者がラーメンフリークらしいので、逆にリアリティがあったのかなぁと思った。

個人的には「激農村の元看板娘のおばあちゃんがコンサルトと手を組んだら」とかいうタイトルで6次産業にチャレンジするネタとかだったら嬉しいかな。

まぁ、だれも結果出してないからね(ラーメンネタは安心して読める)。

MaybeのmplusはPerlのor(||)みたいなもんか

pleacの7.3を解いた

その後環境変数HOMEとLOGDIRを||で繋ぎたいなぁと思ったけど>>=は失敗を運ぶから使えないよなぁと思っていたらmplusがあったかと。

import Data.List.Split
import Control.Applicative
import Control.Monad
import Text.Regex
import System.Environment

getpwnam username = do
  passwds <- map (splitOn ":") <$> lines <$> readFile "/etc/passwd" 
  return (filter (\line -> (line!!0)==username) passwds)

main :: IO ()
main = do
  (path:_) <- getArgs
  case matchRegexAll (mkRegex "^~([^/]*)") path of
    Nothing -> putStrLn path
    Just (_,uhome,subdir,cs) -> 
        if length cs == 1 && length (cs!!0) /= 0
        then do
          dir <- getpwnam (cs!!0) 
          if (length dir) == 1 
          then putStrLn $ ((dir!!0)!!5) ++ subdir
          else putStrLn $ "Error: " ++ uhome ++ " not found"
        else do
          homedir <- lookup "HOME" <$> getEnvironment
          logdir <- lookup "LOGDIR" <$> getEnvironment
          case homedir `mplus` logdir of
            Just home -> putStrLn $ home ++ subdir
            Nothing -> putStrLn "Error: Env[HOME] not found"

これでHOMEが見つかればその後のLOGDIRは無視するし、見つからなければ評価される。

さらにliftM2で書きなおした

else do
   result <- liftM2 mplus (lookup "HOME" <$> getEnvironment) (lookup "LOGDIR" <$> getEnvironment)
   case result of
      Just home -> putStrLn $ home ++ subdir
      Nothing -> putStrLn "Error: Env[HOME] not found"

ウェブ文章術他

時間があったので流し読み

ProductName 零細企業のホームページが繁盛店に化けた理由(ワケ)
望月 聡
技術評論社 / 1554円 ( 2011-06-08 )


amazonの書評の長文、ただの応援メッセージじゃないか?とちょっとステマ臭いのいくつか混じってんなというのはおいといて、マーケとか接客の本ですね。

  • 検索上位と売上は連動しない
  • クリックするとお客が逃げてしまう

二番目の理由から、縦長ページを推していて制作実績にも縦長ページが多かったのでなるほどなぁと思った。なんであんな読みにくい広告みたいな体裁のページが存在するんだろうと思っていたので、参考になった。Web解析とかみると遷移率とか考えるけど、そういうのをすっ飛ばしてもっとシンプルに訴求してんのね。

でも縦長ページはスマホで見る気にはならんでしょね

ProductName お客様から選ばれるウェブ文章術
平野 友朗
日本実業出版社 / 1680円 ( 2011-11-19 )


ウェブサイトを中心にすえて、facebookやtwitterのようなメディアはそれを補完するような位置づけで。っていう全体的な戦略に閑する入門書かな。

  • 文章は読むヒトが知りたいと思うことを先回りして書け
  • 抽象的な質問は避ける

読んで面白いとか役に立つのは多分後者なんだろうけど、新しい発見があった(縦長ページの秘密)のは前者だった。

Haskellで例外を受け取る

IOの例外をキャッチしたくてはまった。

import System.Environment
import Control.Exception
import Prelude hiding (catch)
import System.Exit

main = do
  (file:_) <- getArgs
  catch (putStr =<< readFile file) $ \e -> return (e::SomeException) >> print ("Error on reading file: " ++ file)

-- main = do
--   (file:_) <- getArgs
--   catch (putStr =<< readFile file) $ \_ -> print ("Error on reading file: " ++ file)

例外の型を指定しないといけないらしい。

ラーメン屋バカ一代

飲食業の失敗談を面白おかしく。

ProductName ラーメン屋バカ一代 哀愁の経営失敗物語55
内海啓比己
幻冬舎 / 1050円 ( 2011-07-26 )


学生の頃に飲食店はいくつかバイトしてたけど、つり銭ちょろまかしとか、伝票操作はあるあるだったなぁ。

そういうテクニックの開発力はバイトも社員もすごいよねー(棒)読んでたら色々思い出した。

そういえば、アルバイトしてた店の店長が馬券買うために、店のお釣りのプールを軍資金として流用してるのがバレて首になってたなぁ。

Monadiusのページを改めて読んでみたら、よく理解できたので調子に乗って色々調べていたらいつの間にかFRP方面に迷い込んでいた

ふとMonadiusを読んでみたら、昔はちんぷんかんぷんだったのがかなり理解できるようになったので、自分でも簡単なゲームでも書きたくなってsofを追いかけていたらいつの間にかfunctional reactive programmingの方面に迷い込んでいたらしい。

「Amazonポチッとボタン」もいつの間にか完了していた。

ProductName The Haskell School of Expression: Learning Functional Programming through Multimedia
Professor Paul Hudak
Cambridge University Press / 3963円 ( 2000-06 )


Node.jsにもreactive programmingありそうだよなと思って調べてみたら、Trigger と Stream ベースの Reactive スタイルについて考えるを見つけたのだけど面白そう。あとで追いかける。

そういえば、CTMCPでreactive programmingに触れてたような気がするんだけどなぁとパラパラめくってみたけど、見つけられなかった。

記憶がバグってたのかなぁ

Stateモナドから理解したほうがいいんじゃないかなーと思うんだけど

久しぶりに@ringtaroコミュニティfでもくもくしてきました。

僕はStateモナドを理解してから「MaybeとかEitherよりも先にStateモナドを理解したほうがいいんじゃないかなー」と思ったので、そんな感じのものを書いてみました。

スタックマシンつくってたはずなのにevalが途中でどっかにいっちゃったのでそこはそのうちなおす。

すごいHaskellは読んだほうがいいと思う。

ProductName すごいHaskellたのしく学ぼう!
Miran Lipovača
オーム社 / 2940円 ( 2012-05-23 )


圏論の基礎

自分にはここまで必要なのか?と葛藤している。

ProductName 圏論の基礎

丸善出版 / 4935円 ( 2012-07-17 )


素数夜曲: 女王陛下のLISPを注文した

800ページ超えってことは、CTMCP並の分厚い本が届くということなのだろうか?

ProductName 素数夜曲: 女王陛下のLISP
吉田 武
東海大学出版会 / 3780円 ( 2012-06-26 )


数学学習の“全方位独学法”を提供する。数学の女王と讃えられる整数論を主題とし、その頂に登る為の様々な手法を紹介する。ラムダ計算と函数型言語を論じて整数論をLISPの方言であるSchemeにより表現し、豊富な図版と挿画で本質に迫る。

Schemeで整数論ってことはProject Eulerへの誘いとなっているのだろうかね。

fmapとliftMとliftそしてliftIO

liftIOって結局何のためにあるのかわからないので調べていたらliftとliftIOの違いがわかり易かった。

RWHによれば

  • fmap: 純粋な関数をファンクタのレベルに引き上げる
  • liftM: 純粋な関数をモナドのレベルに引き上げる
  • lift: モナドアクションを変換子層の一つ下のレベルから現在の層へあげる

liftIOはControl.Monad.IO.Class

class (Monad m) => MonadIO m where
    -- | Lift a computation from the 'IO' monad.
    liftIO :: IO a -> m a

参考

RWH3週目終了

ちょっと前からReal World Haskell 3周目を読んでいて、最近読み終わった。

読み始める前のポストイット(理解が曖昧なところに貼ってある)

1288005286

読後(かなり減った)

1342393758

すごいHaskellのおかげで理解がすすんだとことが結構あって、それをテコにしてRWHの内容がすんなり理解できたりしたのが大きかったかも。

ProductName すごいHaskellたのしく学ぼう!
Miran Lipovača
オーム社 / 2940円 ( 2012-05-23 )