タグ

ブックマーク / d.hatena.ne.jp (73)

  • RubyでMabyeモナドを実装してみた。 - このブログは証明できない。

    最近、Haskellやってません。今日は、Scalaの基文法を読んでました。いいですね、Scala。いや、それよりHaskellを。モナド。モナド、意味わからん。理解しなくても使える気もしますが、それもなんだか気持ち悪い。モナドをある程度(圏論まで踏み込まず)理解するには、どうすればいいでしょうか。 Maybeモナド?それ、Rubyでできるよ。え、できるの?できるかな?やってみましょう。やりましょう。 失敗するかもしれない処理をうまいことやってくれるMaybeモナド。まず、Haskellで。サンプルコードは、「あどけない話」(Haskellと言えば!)から。 Haskell とモナド - あどけない話 db = [("alice", [("title", "Ms."), ("job", "sales")]), ("bob", [("title", "Mr."), ("job", "eng

  • はてな - モヒカン族とは

    (注1:モヒカン族の中にも様々なタイプがあるため、モヒカン族はこれらの要素が全て当てはまる、ということはない) (注2:一部誤解が含まれているかもしれないが、モヒカン族の思想に倣い、躊躇なく修正して欲しい) 会話中の言い間違いや相手の誤解は指摘するほうが良いと考える 「間違いの修正こそ正義」と勘違いしている 「正義は我にあり」と言わんばかりに、他人の間違いにこだわる 一般人から「理系的人間」と呼ばれやすい 間違いさえ修正できれば、人がどう思おうと関係ないという態度が出ている 特に、Webに関する考え方では、以下のような思想を持つモヒカン族がいる。 W3Cの勧告に正しく従うことが合理的であると考える 補注:これを強く主張する人たちは特に「W3C原理主義者」と呼ばれる。 いわゆる「意味と見栄えの分離」を尊重する。 補注:これを強く主張する人たちは特に「CSS原理主義者」と呼ばれることがある。

    はてな - モヒカン族とは
  • Ruby で「Lisp脳」に迫る。 - YNote

    はじめに 再利用性の高いプログラムを書くにはどうしたらよいのだろう、と、いつも思う。 学生のころ、BASIC と C と Verilog を勉強して、社会人になってから Ruby をちゃんと勉強した。正確には学生のころも Ruby さわったことがあったんだけど、「正規表現が使えてセミコロンがいらない C 」くらいにしか思ってなくて、それよりも踏み込んで便利さを知ったのは、けっこう最近。 再利用性が高いプログラムを書くのに、Ruby はやっぱり便利だ。 Ruby が便利な理由としては「メタプログラミングが得意」とか「オブジェクト指向だから」、とか、いろいろ言われるけれども、個人的には「『DoA(Data Oriented Approach)』を気軽に実践できる」というのが大きいと思う。 DoA というのは「データ中心アプローチ」とも言われていて、データ構造の変遷を中心にプログラムを設計してい

    Ruby で「Lisp脳」に迫る。 - YNote
    ainame
    ainame 2012/05/22
    SICPを読んだ時の自分の感想に近い
  • Perlゼミ(サンプルコードPerl入門)

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

    ainame
    ainame 2012/05/15
    これはひどい
  • devel-which を gem にしました - わからん

    devel-which を再配布目的で gem 化して公開しました。Ruby's License です。devel-which は、2002 年に GOTO Kentaro さん が作られたリフレクション系のライブラリです。わりと最近まで RAA からダウンロードできたのですが、現在はリンク切れになっています。仮にソースを取得できたとしても、同梱されている install.rb で、Ruby 1.9 にはない ftools.rb というライブラリを利用しているため、若干インストールが面倒になってしまいます。 gem として RubyGems に登録しておけば、gem install devel-which で誰でもかんたんに試すことができます。 オリジナルからの変更点は以下になります。 devel-which.gemspec を作成しました devel-which.gem を作成しました

    devel-which を gem にしました - わからん
    ainame
    ainame 2012/05/04
    これすげー!!!
  • Sugarのネイティブオブジェクト拡張について調べてみました - 真夜中はプログラマ

    マイコミジャーナルでSugarというJavaScriptライブラリが紹介されていて ちょっと気になったので調べてみました。 直感的なJavaScriptプログラミングを実現する新ライブラリ「Sugar」 | エンタープライズ | マイナビニュース 気になったところ気になったところは、マイコミジャーナルのSugarはJavaScriptのネイティブオブジェクトを拡張するためのライブラリ。一般的なJavaScriptライブラリのように多くの機能を提供するのではなく、ネイティブオブジェクトを拡張することだけに主眼が置かれている。という紹介。 ちょうどJavaScriptパターンを読んでいたところでJavaScriptパターン ―優れたアプリケーションのための作法作者: Stoyan Stefanov,豊福剛出版社/メーカー: オライリージャパン発売日: 2011/02/16メディア: 大型購入

  • 大学生活まとめ あるいはプログラミングを始めた理由 - ギークに憧れて

    友人へるしーぼーいの大学生活を大まかにふり返るに刺激を受けたので、大学生活のまとめとか、プログラミング始めたきっかけについて長々と語って見ることにした。なんで文学部なの先天性の中二病なので、大学受験時の時には「とにかく人が進むのと逆に進みたい」と考えていた。加えてサラリーマン(炎天下にスーツ着て営業するのが嫌だった)にもなりたくなかったため、当時自分が一番興味があった編集者という道に進もうと思い、文学部を中心に受験した。結果、早稲田の文学部に入学することになった。出版サークルへ大学に入学し、新入生の多くがしているようにサークルを見て回った。当時は野球、クリケット、出版など色々体育会系のサークルを掛け持ちしていたのだが(これでも中高は運動部一筋だった)、お金が続かなくて辞めてしまった。なんとなく消去法な感じで出版サークルに入り、受験当時の情熱も綺麗に消え去っていたため、自堕落な日々を過ごして

    ainame
    ainame 2012/02/11
  • 私が好きなラーメン二郎をまとめてみる - そのままなめて

    俺が好きな都内のハンバーガー屋をまとめてみる http://d.hatena.ne.jp/potato_gnocchi/20120201/p1 オレが好きな都内のカレー屋をまとめる http://matome.naver.jp/odai/2132797721651394501 わたしが好きな都内の立ち飲み屋をまとめてみる http://d.hatena.ne.jp/hase0831/20120202 今、好きなべ物屋をまとめると超はてブがつくらしいので私もブームに乗ってみようとしたけれど 良く考えたら二郎しかべてないじゃん!ということで二郎をまとめてみた。 基的に立地条件的なものに大きく左右されてるんで。 量も麺も小金井がNo.1でしょ! ここの麺は安定しておいしくて、量もトップクラスに盛ってくれるのでうれしい。 二郎って、ヤサイがこのくらい盛られていることを前提にした 麺の量であり

    私が好きなラーメン二郎をまとめてみる - そのままなめて
  • Objective-CでRubyっぽいブロック構文を使う。 - このブログは証明できない。

    最近、TitaniumからObjective-Cにもどってきました。久しぶりに使ってみると、なかなかいい言語な気がしています。動的です。ダイナミックです。それで、いろいろ調べていたら、Blocksという言語仕様が導入されていたことを知りました。iOS 4.0から使えます。 こんな感じで、クロージャっぽく。 void (^func)(id) = ^(id x) { NSLog(@"element: %@", x); }; func(@"hoge"); JavaScriptで書くと、これに該当します。 var func = function(x) { console.log("element: " + id); }; func("hoge"); これを使うと、Rubyのブロック構文っぽいことができます。例えば、eachメソッド。Rubyだと、こう。 array = ["foo", "bar"]

  • できちゃったものはしかたがない - Ockham’s Razor for Engineers

    私はもう妊娠7ヶ月も半ばまで来てますので、今更といえば今更ですが、タイトルにつきるかなあと。授かり物、子宝に「しかたがない」とは何事だ、と憤慨していただく分には、日はまだまだ捨てたものではないので、えーと、ありがとうございます言い方わるくてなんかすんません。 1.仕事がしたくでもできない妊娠してから、つわりをピークとして、安定期にはいってからも疲れやすいので通常の8割運転モードを心がけるとか、など、仕事のパフォーマンスがとにかく落ちました。寝っ転がってセンサがはれない、重いものを持つはおろか、六角レンチでネジをしめるだけでも腹が張る。ていうか腹が張ったらうごけない。しょうがないので有限要素法で解析をやってみたら、細かい凡ミスの繰り返し。ただ、有限要素法についてはとにかく椅子にかじりついて、がむしゃらにやってみた。あと、妊婦で仕事量減らしてもらってる今こそチャーンス!とゆーことで外のセミナ

  • 2011年のunkarまとめ - へぼいいいわけ

    あけましておめでとうございます。2011年のunkarを振り返ってみました。 お暇ならこちらもどうぞ 2010年のunkarまとめ unkar開設2周年のまとめ unkar.jp開設(おおよそ)1周年のまとめ アクセス解析 Google Analyticsを利用しています。 総合 2010年と比較すると以下のようになりました。 項目2011年2010年変化率 訪問数277,036,539203,001,14036%UP ページビュー数438,115,202293,965,98449%UP 訪問数、ページビュー数共に、そこそこ増加しているようです。 グラフを見ると気がつくと思いますが、東日大震災の日は極端に訪問数が減っています。 あの地震により極端に広い範囲が停電などの事態に見舞われていたことがなんとなく分かります。 ちなみに訪問数は2011年03月21日に記録した「1,058,453」が

    2011年のunkarまとめ - へぼいいいわけ
  • 例のbotの件 - 夜行快速/低空飛行

    2011-07-06の日記で触れていた、エラーコードの件。解決したっぽい。 s.to_s.gsub(/([^a-zA-Z0-9_.-]+)/n) do これを、 s.to_s.gsub(/([^a-zA-Z0-9_.-]+)/) do に変えたら出なくなった。 最後の「n」は正規表現のオプションで、文字列を単なるバイト列として扱う。ところが、実際にsに代入される文字列はUTF-8でエンコードされていた。もともと、UTF-8でエンコードされているものを、単なるバイト列として扱おうとしていたからエラーが出てたのか。 なお、 s.to_s.gsub(/([^a-zA-Z0-9_.-]+)/u) do にしても出なくなる。ここで、「u」は、文字列をUTF-8でエンコードされているものとして扱うためだ。 関連記事 UTF-8とは 使うほどに良さがわかる正規表現 なお、参考にした書籍は以下。

    例のbotの件 - 夜行快速/低空飛行
  • 2011-12-21 - id:k-z-h

    雑記今月いっぱいを持ちまして、ドワンゴを退職いたします。次の職場は1月頭から出社予定です。ドワンゴに入社したのは「面白いことをやりたい」「独自性のある場所で働きたい」という動機からでした。そのときから3年と9ヶ月経ち、やりたいことが「システムの足下を作りたい」に変化したことが、今回の転職の動機です。それがドワンゴでできないという訳ではないですが、自分にとっては次の会社の方がより良い経験が積めると思い、転職を決意しました。 3年と9ヶ月、短いというには長い気もするし、長いというには短いという気がします。たくさんのことを経験させていただきました。とくにインターネットの先にいるユーザーの皆様を実感を持って体感できたことは他では経験できないことだと思っています。書籍では重要なタスクの舵取りも任せてもらいました。 ドワンゴはこれからも面白くて独自性のあることを続けていくと思います。今まではそうやって

  • 長文日記

  • Rails のユーザー認証機能の新デファクトDeviseでログイン/ログオフ - テクノロジーと広義のデザイン!

    ユーザー認証の新しいデファクトスタンダード、Devise最近はDeviseというプラグインで、Railsでユーザー認証機能を実装するのがデファクトスタンダードになりつつあるようです。以下の機能をDeviseで実装してみます。 仕様 ユーザー登録 / ログイン / ログオフ ユーザー登録にはメール経由でのActivationが必要パスワードの再発行というわけで、実装スタート! Deviseのインストール$ gem install deviseこれで、最新版のdeviseがインストールされます。Gemfileを開き、以下の1行を追加します。 gem devise bundle installをしたあと、deviseをアプリにインストールします。$ bundle install$ rails generate devise:installすると、ターミナルに以下のようなメッセージが出てきます。「

    ainame
    ainame 2011/12/14
    コレのとおりに認証部分作った
  • flyspell-mode の修正候補表示を popup.el で - mooz deceives you

    flyspell-mode + popup.el flyspell-mode という, 英語の苦手な人にとっては大変ありがたい elisp があります. かの flymake-mode よろしくリアルタイムで英単語の綴り間違いを検出しては, 該当部分のハイライトとその修正を行ってくれるというもので, この機能さえ有効にしておけばもう typo など怖くはないといえます. さて, この便利な便利な flyspell-mode ですが, 僕にとっては一つ不満点がありました. それは, 単語の修正を行うインタフェースが (確認できた限りでは) 次の二つしか提供されていないというものです. マウスで (!) 該当する単語を中ボタンクリックし, マウスを (!) 使って修正候補を選ぶ dabbrev ライクなインタフェースで修正候補を選択 (flyspell-auto-correct-word) 1

    ainame
    ainame 2011/12/11
    これは便利そう.Wordのスペルチェック並に機能してくれたらすばらしい.
  • 緑の五月通信

  • PHP のよいところとよくないところ - id:k-z-h

    php前提。PHP はクソ。滅びろ。ruby はしらんが pythonperljava のほうがよっぽど楽。javascript は多分同じかもっと地獄。よいところ導入が安い動作環境的な意味でも、コード的な意味でも。置けば動くし、書けば動く。当に何も知らん人間でもなんとか動く。エンジニアの頭数もそろえやすい。運用コストのスケーリングができるapache+mod_php だけでも普通に早い。apc 入れればそれだけで大抵のリクエストさばける。nginx+php-fpm+apc なんて環境にすればもっとさばける(と思う。まだ試してない。)最悪 HIPHOP-PHP でなんとかできることは Facebook が証明している。ドキュメントが読みやすいphp.net のドキュメントはテンプレートがしっかりしていて全部それにそっているので非常に読みやすい。邦訳も早い。よくないところ標準の

  • シェルスクリプトの中にrubyを書きたい - urekatのスカンク日記3

    単純なファイル移動やらコマンド実行ならbashスクリプトで済むけど ちょっと複雑なこと(最新5件または10日以内は除外とか)をしたいときに rubyで書けたら一瞬なのになあと思ってシェルスクリプトで書けること 「mv aaa bbb」を「`mv aaa bbb`」などと置き換えてスクリプト全体を ruby化したりしてたけどシェルスクリプトの中に複数行のrubyを 埋め込んじゃえばいいんじゃないかと気がついた。 #/bin/sh cd /app/rails/PROJECT/releases ruby <<RUBY_END puts "move old releases." require "pp" require "time" releases = Dir["20*"].sort 5.times{ releases.pop } releases.delete_if do |rel| if T

  • RubyでFizzBuzz。こんな書き方があったか。。 - このブログは証明できない。

    dankogai氏が公開している、ブラウザでLLを実行するlleval。 lleval - run codes from your browser 404 Blog Not Found:Ajax - llevalのサポート言語がさらに増えました FizzBuzzのサンプルがついているのですが、RubyのFizzBuzzがオモシロかったのでメモ。 1.upto(30) do |i| s = [ [:Fizz][ i % 3 ], [:Buzz][ i % 5 ] ] * ''; puts s[1] ? s : i end セミコロンが付いているのはともかく、配列の使い方がウマイ。 まず、[:Fizz][ i % 3 ]のところ。1つめの括弧が配列のリテラルで、2つめの括弧で配列にアクセス。で、インデックスが配列のサイズ以上だとnilが返ります。 p [:Fizz][0] #=> :Fizz