おさかな日誌

魚類がプログラミング

圏論1

さいきん圏論を学んでいる。主なソースは黄色い凶器圏論勉強会の資料だ。他にも wikipedia とか読んでる。

ぼくはまったく数学に縁がなかった魚類だけど(微分も対数も高校レベルもまともに解けなかった)、圏論から数学入門するの、とてもいいと思う。

まず絶対必要な予備知識が少ない。最初はメタ圏を考えればいい。そうこうしている内に代数系に興味が湧くだろうから集合、群、モノイドにふれれば良い。そうしている間に数学が好きになっているはずだ。

特に Haskell を学びつつ圏論勉強するの、とても良い。Functor ??? ってなったところにちょうど圏論の関手にふれるし、モナド??? ってなった時に自己関手の圏におけるモノイド的構造をもつ対象にふれる。ghci と触れ合えばいい。

Haskell圏論も知らない人におすすめしたいのだけど、まだ「おもしろいよ!」としか言えない。もっと「計算をこう扱える」とか説明できると相手がメリット感じてくれると思う。ひとまず圏論的には随伴を理解できるまで、あと計算とからめてなにか得られるまでは継続的にやりたい。

最近圏論さわってばっかりでコードかけてないけど有益な気がするし、まあいいかという気分だ。でもやっぱなにか作りたい。

さいきんかった QOL 高めてくれたもの

さいきん買って良かったなーっておもったものたち情報です.

  • 風量多いドライヤー あんまり値もはらず時間と手間をたんしゅくできて良い.

  • BRITA のポット型浄水器 こちらもおやすく QOL をあげてくれる. ナツにサイコーです.

  • ディスプレイアーム それなりの椅子をかったけどディスプレイに自由度がないともちぐされだったので. ひじょうに良いが高い.

tree というコマンドが便利

rubygems.org のドキュメントを眺めていた時に見つけた tree コマンド.

find コマンドを見やすく整形してくれるすぐれものです. 人間フレンドリー. -h オプションでファイルサイズもいっしょに出力してくれる.

でも他のコマンドとパイプでつないだりしにくく, Unix の思想から外れた存在だからか標準で入っていることは少ないみたいなので適当にインストールしましょう.

$ tree app
app
├── assets
│   ├── images
│   │   └── rails.png
│   ├── javascripts
│   │   ├── application.js.coffee
│   │   ├── bootstrap.js.coffee
│   │   ├── home.js.coffee
│   │   ├── items.js.coffee
│   │   └── tags.js.coffee
│   └── stylesheets
│       ├── application.css.scss
│       ├── bootstrap_and_overrides.css.less
│       ├── home.css.scss
│       ├── items.css.scss
│       └── tags.css.scss
├── controllers
│   ├── application_controller.rb
│   ├── home_controller.rb
│   ├── items_controller.rb
│   ├── sessions_controller.rb
│   ├── tags_controller.rb
│   └── users_controller.rb
├── helpers
│   ├── application_helper.rb
│   ├── home_helper.rb
│   ├── items_helper.rb
│   └── tags_helper.rb
├── mailers
├── models
│   ├── comment.rb
│   ├── item.rb
│   ├── tag.rb
│   └── user.rb
└── views
    ├── home
    │   ├── help.html.haml
    │   ├── home.html.haml
    │   └── index.html.haml
    ├── items
    │   ├── _form.html.haml
    │   ├── edit.html.haml
    │   ├── index.html.haml
    │   ├── new.html.haml
    │   └── show.html.haml
    ├── layouts
    │   ├── _sidebar.html.haml
    │   ├── _top_status.html.haml
    │   └── application.html.haml
    ├── share
    │   ├── _comment.html.haml
    │   ├── _item.html.haml
    │   ├── _item_header.html.haml
    │   ├── _item_spacer.html.haml
    │   ├── action.js.erb
    │   └── action_error.js.erb
    ├── tags
    │   ├── index.html.haml
    │   └── show.html.haml
    └── users
        ├── _user_sidebar.html.haml
        ├── index.html.haml
        ├── show.html.haml
        └── stocks.html.haml

外国語学部生が Web 系新卒になるまでに読んだ技術書・コード 書いたコード

ちょうど4月で参考になるエントリを読んだので自分も書いてみる.

背景

ぼくがプログラミングを始めたのは1年半ほど前, Web 系の会社に仕事が決まったのが1年ちょっと前, つい最近入社という感じです. 学んだ当初からプログラミング自体はとても楽しかったけれどこのまま仕事でやっていけるのかしぬほど不安だったのでいろいろ読んだりしました.

プログラミングを始めたのは元から OSS 界隈のあの雰囲気とかがとても好きで, 自分も恩恵を受けている意識があったのでいつか貢献したいなぁと漠然と思っていたのに加えて, 後述のように「ハッカーと画家」を読んだからです.

誰得感ありますが, プログラミング始めたい人の参考になるかもしれないので, その1年半ほどをまとめたいと思います. 書いたコードも push してあるのはのっけたので「これくらいの時期にこのくらい書く感じか〜」とか「こんなコードしかかけてないワロス」とかしてください. 後者はぼくかなしくなるのでやらないでください.

ちなみに大学時代は府中にあるとある外国語大学で誰得な自然言語学んだり地域研究していたりしていました.

続きを読む

MongoDB で drop index (Ruby)

ユニーク index を削除しようと思ってメモ. 一応公式ドキュメントにもいろいろのってるけど, 名前で消せるというのを読み取るのに少し時間かかったのでメモ

with Ruby ドライバー

client = Mongo::MongoClient.new
collection = client.db("your_db").collection("your_collection")

# インデックスを追加
collection.ensure_index({"foo_id" => 1}, {"unique" => true, "dropDups" => true})

# インデックス確認
collection.index_information

# ここに実体があるみたい
client.db("your_db").collection("system.indexes")


# インデックス削除
# 上の index_information で得た name フィールドで
# 消したいインデックスを指定する
collection.drop_index(name)

というチラ裏

Mac で快適に mikutter ァァァッ

ァァァッこんなポストしてしまったァァァ ぼくはお刺身になります.

以前メインマシンの Mac で mikutter 環境を整えたのですが日本語入力周りが壊滅的なのです. 入力できないことはないのですが壊滅的なのです.

なので日本語入力を快適にする mikutter プラグイン + Mac App を作りました. Mac app のほうは MacRuby を使って書いてます.

mikutter プラグイン: mikutter_emeesii

Mac App: mikutter_posting

f:id:aladhi:20130328074412p:plain

インストール方法はまずいつもの mikutter プラグインと同じようにプラグインを入れます.

mkdir -p ~/.mikutter/plugin
git clone git://github.com/taiki45/mikutter_emeesi.git ~/.mikutter/plugin/mikutter_emeesi

http://taiki45.github.com/mikutter_posting/ から最新の Build を DL してきて解凍して好きなところに置きます.

で mikutter を起動して 先ほどの mikutter_posting アプリを起動すると投稿するだけのウィンドウが出てくるのでそこに test とか打ち込んでポストしてみてください.

一応 mikutter のリプライと連携できる機能もあるのですが( mikutter でツイートを右クリックして出る reply with other window を押すと reply_to を設定してリプライとかできる) 不安定なのでおまけ程度でお願いします.

気が向いたらアップデートするかもしれませんが, いまはポストふぁぼすたー時代をたのしんでいるので後になると思います.