2013-01-01から1年間の記事一覧

Ruby で Scala の Option っぽいやつを実装してみた話

こんな感じで実装できた。Option (Haskell で言うところの Maybe)はモナドの中でもかなりわかりやすく実装しやすい。foreach とか filter は実装してない。 ただ、これだけがあっても、map や flatmap とか foreach とかを組み合わせたときに読みやすい感じ…

「オブジェクトをイミュータブルにしろ」って言うけど、それってたとえば状態が変わったらオブジェクト作り直すってことでしょ、ちょう非効率じゃん。って思ってたんだけど、

オブジェクトの内部の値がイミュータブルであれば、今後もその値は変更されないことが保証されているので、新しい状態を持った新しいオブジェクトの内部の値のうち、変更のない部分(つまり値のうちのほとんど)は古いオブジェクトの値をそのまま参照すればよ…

Re: チャットとかでパスワードを教えるとき暗号化すると良い

この記事。3ヶ月以上前のやつなんだけどちょうどいい題材なので今更これに反応してというか勝手に乗っかって秘密鍵と公開鍵のことについて書く。 この記事では同じキーを使って暗号化と復号化を行っているけれど、これだと「じゃあそのキーをどうやって共有…

やったー Akka 2.2 でチャットサーバーできたよ〜

https://github.com/Shinpeim/ChatServerAkka2_2 もっとキレイに書けないもんなのかな〜

日本一わかりやすいというほどでもない Akka2.2 の IO まわりと Pipeline まわり

!!!!!!この記事は古い情報を扱っています!!!!!! Akka 2.3 からは Pipeline はなくなっています。この記事の内容は古いです。気をつけてください 前回までのあらすじ 自信満々で日本一わかりやすい Akka の IOManager と SocketHandle(やServerHa…

Akka 2.2 でエコーサーバー

前回のエントリ にあまりに悲しいオチが付いたが、気をたしかにもって Akka 2.2 でのエコーサーバーを書いてみた。 このあたりの感じは IOManager のときとあまり変わらない。むしろわかりやすくなっている気がする。 Mainから読んでいって Server.scala、Cl…

日本一わかりやすい Akka の IOManager と SocketHandle(やServerHandle)、それに IO.Iteratee と IO.IterateeRef

ちょっとこのあたりが複雑に感じたので、一度整理しておく。まぁ全部「公式読めば書いてあるよ」で OK なんだけど、それではあまりにマッチョすぎるしわたしがあとから参照したいしみたいな感じ。 IOManager とはなにか Akka でIOを扱うときには、 IOManager…

Scala + akka の簡単なチャットサーバーを改良してみた

スナップショット => https://github.com/Shinpeim/ScalaChatServerSample/tree/d18399985dcca22f4f593593ad02230c4a9f402f サーバーソケットに責任を持つアクターと、クライアントソケットに責任を持つアクターを別々にしてみた ひとつの接続に対してひとつ…

Scala + akka で簡単なチャットサーバーを書いてみたので解説してみるよ

!!!CAUTION!!! この記事で扱っている IO のインターフェイスは Akka 2.2 で すでに old-io 扱いとなり( http://doc.akka.io/docs/akka/2.2.0/scala/io-old.html )、Akka 2.3 からは削除されてしまっています。 今ならばこちらを参考にされたほうがいい…

新しく使う技術は、お仕事で使う前に UserStreams 常駐系の twitter bot を作ると良い。運用も体験できていろいろな勘所がわかる。ということに気づいた

こちらからは以上です。

突然死 bot が生まれ変わりました

以前 Ruby の練習として、following の発言を 突然死ナイズする Twitter の bot を書きましたが、おそらく鍵アカに対してもホイホイ follow リクエスト送るみたいな挙動がお行儀が悪かったのでしょう、だいぶ昔にアカウントが凍結されておりました。 そのあ…

言葉を上手に使うのなんてほんとうはくだらないという話

ちょっと自信過剰なようだけど、わたしはたぶん平均レベルよりも上手に言葉を使うことができる人間だと思う。process-book とか Git をはじめからていねいに とか、自画自賛だけど上手に言葉が使える人間じゃないと書けないもん。 でも、「言葉を上手に使う…

Git のかなり良い入門ドキュメント一通り書けたので読んでください

git

例の これ なんだけど、かなり内容が充実してきたので自画自賛で宣伝します。 2013/5/7 22:14追記:一通り書き終わった。 日本語で読める Git の網羅的なドキュメントには公式の Git - book があります。こういうドキュメントを読み慣れているひとには充分わ…

Git を怖くなくする 荒技 tips

git

プログラマーに対しては「四の五の言わずに覚えろ」でいいんだけど、そうじゃないひとにも使ってほしいみたいなことって仕事であると思う。だから前の記事みたいなやつ書いてるんだけど、どう考えてもコミットメッセージ 書くときにターミナルで使うエディタ…

Git の入門資料めっちょ丁寧に書いてる

git

ウェッブケーとかアイテーケーならデザイナーさんとかでも Git 使えたほうがいいと思う。でもいつまでたっても Git こわいです黒い画面怖いですみたいなの、デザイナーさんとかならしょうがないとも思う。でも Git 使ってもらわないとふつうに仕事で困る。困…

かんたんな supervisor のつくりかた

鍵アカ: $ command ruby script/nyan.rbってやるだけでruby script/nyan.rbを裏でやり、commandのプロセスにHUPとか送るだけでruby script/nyan.rbをやりなおすやつとかでいいんですよ〜 という話が TL であったのだけれど、既存のツールだと foreman とか p…

Ruby の C Extension を作ったのでどういうことをやったかまとめた

waveずたずたのための ruby の C Extension 書いたんだけど、どうやって書いたのかまとめると有益っぽいのでまとめた。 ビルドするためにどうすんの Cだから当然コンパイルしないと動かない。普通は make でビルドしたいと思うんだけど、そのための仕組みと…

WaveずたずたがいろんなOSに対応した(と思う)

けっこう評判がよくてうれしい WZZ ですが、不自由で邪悪な mac OS でしかリアルタイムプレイが動かないのがちょっと残念でした。そんな折、 「そうだ、OpenAL使えばいろんなプラットフォームで動くんじゃね?」思い立った わたしの TL がなぜか空前のC Exte…

はてなブックマークは人間をダメにする、あるいはVote Linksってどうなったの

はてなブックマーク数、じつは記事の価値とかに全然関係ないんだけど、まるでブックマークたくさんされたものは価値があるみたいな感じになって、書く方も読む方もなんかはてブに踊らされ始めていろいろおかしくなる。もともとすごいいい記事たくさん書いて…

waveずたずたが激ヤバになった

まずはこれを見てくれ waveずたずたシーケンサー そうです。waveずたずたがリアルタイム演奏に対応しました。 waveずたずたってなんだよ WaveZutaZutaというおもちゃを書いている話 を参照してください。 中身 @nagachika さんが書いた、 ruby から coreaudi…

jsonpatcher gem をリリースしました

なにであってなにでないのか semantically wrong な JSON を semantically right に書き換えるためのDSLを提供する gem です。syntactically wrong な JSON を syntactically right に書き換えるものではありません。 なぜこんなニッチなものを twitter とか…

Macでワンライナーでカップラーメンタイマー

$ sleep 180 && say -v Zarvox ramen de ki ta yo TLのドラがわりとかにもどうぞ

Redisを題材にしたデータ型と計算量の話を書き始めている

プロセスのやつ書いてるときに、自分自身がすごい勉強になって、またなんか書きたいなというのがまずあって、あと、以前からデータ型と計算量の話はわかりやすくまとめておきたいという気持ちがあった。 最近(というかもうずいぶんまえから)Redisが話題にな…

Array#bsearchについて

書いた

半径 3m のインターネットの話

久々の雑文。 「インターネット業界」みたいな感じのところで働いているのだけれど、わたしはあまりインターネットが好きじゃない、と感じることがある。でも一方で「やっぱりインターネット好きだな」って思うことも結構あって、わたしの中でインターネット…

CRuby の hash.c を一部読んだ

ツイッターで「Ruby の Hash のキーにするオブジェクトに hash と eql? を定義しないといけないのなんでなんだろう」という話題が出て、「おそらく Hash の名前の通り、Hash テーブルを lookup するのにキーの hash 値を計算するのに使ってるんだろうね」と…

process-book、ePub と pdf 出た

https://github.com/Shinpeim/process-book/blob/master/release/ ここです。 @moznion が Rakefile 書いてくれたからそれまるっと使ってる。@moznion ++。 pr 送ってくれて、それが merge された場合(というかリポジトリのコミットログに名前が含まれる場合…

process-book、少しずつ良くなってる

いろんなひとが pull req くれたり、gist で修正例送ってくれたり( thanks to @hayajo )のおかげで、だいぶプロセスさんが成長してきた。 @hayajo さんのおかげでリダイレクトの順序についての補足が書けて、内容がいっそう充実したので、ここで報告しておき…

Niigata.ll が開催されるので長野からエア参加します

新潟の LLer たちが集まってワイワイするイベント Niigata.ll が本日開催されるそうです。わたしは個人的な事情で現在長野県におり参加できないので、資料だけ送りつけて長野からエア参加します。 Perlなめんな 内容は、別言語のひとたちから DIS られがちで…

Unixのプロセスまわりについて書いてたやつ Github に移行した

書き終わったらけっこうなボリュームになってしまったので、gist じゃなくて Github で管理するようにしました。 Shinpeim/process-book URL変わっちゃうのとせっかくスター付けてくれたひとたちには申し訳ない感じなんだけど、pull reqが受け取れるっていう…