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

モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。

これはRuby Advent Calendarの21日目の記事です*1。20日目は@sasata299さんのHerokuって便利だし利用までたった3ステップですお!!でした。 はじめに 本当は「Pure Rubyで動くかっこいい形態素解析エンジンができた!!!」みたいな記事を書く予定でしたが、目標…

GuavaのFiles#deleteRecursively/deleteDirectoryContentsは使わないほうが良い(と言うか10.0.1ではdeprecated)

「シンボリックリンクは追わない」という処理を実現するために、 if (!directory.getCanonicalPath().equals(directory.getAbsolutePath())) { return; } という処理をしてるんだけど、directoryが相対パスの場合 "/currentDir".equals("/currentDir/./") み…

Mac、同一画面内でウィンドウを切り替える

環境 Mac OSX 10.6 概要 Spaces使って各画面にコンテキストごとのアプリを配置してる場合、ショートカットで画面切り替えてから同一画面内でタスクスイッチできたほうが効率が良いのでCmd-Tabをどうにかしたい。 Witchでもできないしどうしたものかと思ったら*…

第5回さくさくテキストマイニングで、形態素解析アルゴリズムについて発表しました

今やってる仕事の関係で、形態素解析アルゴリズムについてちょっと調べる必要があったので、ついでにRubyで形態素解析ライブラリを作ってみた。という内容の発表です(のはずだが、Rubyのコードが一文字も書いてないですね……)。 スタート形態素解析 View more pres…

人月がクソな理由

人月商売が悪だと思っている、イノセントなあなたへ - GoTheDistanceメリットとして挙げられているのが「開発側がリスクを取らなくていい」しかない…… お前らそんなに金が欲しいか、私は欲しいですが、しかも多少クソなプロダクトを作っても金もらえるとか最高…

Java、特定の正規表現パターンで容易にStackOverFlowErrorを起こせる

環境: Java1.6 ideone java.util.regex.Pattern.compile("(.|.)+").matcher(longStr).matches(); 1000文字くらいの食わせたら落ちた。JS(FireFox,Node.js)、Ruby(1.9.2)で試したら落ちなかったので、内部の実装に依存するようですね。こわい。 関連資料 Bug …

JSP、EL式内でメソッドを呼ぼうとすると「デフォルトの名前空間が指定されていない時には、関数 xxx はプリフィクス付きで使用しなければいけません」というエラーになる

EL式内でメソッドを呼べるのはJavaEE 6以降だそうです。 Tomcat7では対応、Tomcat6では非対応。

MacBook Airをピカールで磨きました

タイトル通り。 手触りがすべすべしていて気持ちいい、深みのある光沢が得られる。 見た目の変化はすごく地味、地味すぎて写真アップロードがはばかられる。 ちなみにこれが参考画像です(わかりにくい) http://twitpic.com/7reb4i 400番耐水ペーパー→600→800→1200…

Make:Tokyo Meeting 07に人体用電流源を出品しました

人体用電流源とゆうのは人体に電流を流すための装置で、入手可能な部品で簡単に作れるように工夫されています。 三半規管に電流を流すことで身体が傾いたように感じられてたのしい!!!(フラフラ)、みたいな用途に使いますが、危険すぎて他の人に体験してもらうこ…

git、ファイルのモード変更をコミットに反映しない

cygwinだとモードが644->755に突然変わったりして困るので。 $ git config core.filemode false

Ruby,ERB,テンプレートファイル内でERB#result(binding)すると出力が壊れる

問題なしのパターン AAA <%= ERB.new('hoge').result %> BBB AAA hoge BBB これは死 AAA <%= ERB.new('hoge').result binding%> BBB hoge BBB 気をつけましょう このせいで出力がぶっ壊れていちにちじゅうオギョヒーとかいってた。 原因とか根本的対策はしり…

予算数百円でMacBook Airの鋭いエッジから手首を守る。全く目立つことなく。

MBAの魅力といえばあの薄く鋭いデザインですが、ボディ手前側が尖っているので姿勢によっては角の部分で手首を痛めることもしばしば。 外付けのパームレストをつける?屋外で変な姿勢でインターネットするときにいちいちつけてられないし、せっかくの完成された…

アジャイルは手段ではなく目的である

価値あるソフトウェアを作ることが目的、パターンやプラクティスがが手段。一般的な受託開発においてアジャイルなやり方を適用するのが難しいのは、そもそも目的が違うからではないのか。 (一般的な/意識の低い)受託開発において、我々は 価値あるソフトウェ…

Jenkins、Webから再起動する

プラグインのインストール後などには再起動するオプションが表示されるんですけど、それ以外の場合に再起動する方法がわからない……。http://{JENKNS_HOST}/safeRestartにアクセスすることで再起動できます。設定画面からリンク貼ってないよなあ。

Cygwin、アップデートしたらPerlが"fatal error - unable to remap C:\cygwin\bin\cygstdc++-6.dll to same address as parent"とか言う

この現象みたい: windows 7 - Cygwin fatal error unable to remap.. What does it mean? - Super Userrebaseallというコマンドを使うと治るらしいですash.exeかdash.exeの上で実行すればいいみたいなメッセージ出るけど、どうもそのへんの判定がうまく動い…

Mac、AirPortをキーボードショートカットでOn/Offする

環境 Snow Leopard 余談 ちなみにコマンドラインだと networksetup -setairportpower airport [on|off]でいけるそうですね*1。いきなり余談かよ。 本題 ここに書いてある方法で実現できます: 概要としては、 ネットワークの設定で、AirPortを無効化したLocation…

Log4J、コンソールへのログに色をつける

ふつうにエスケープシーケンス使えばいいですね log4j.appender.C.layout.ConversionPattern=\u001b[0;32m%-5p %d %c [%t]\u001b[m %m%nログレベルごとに色変えるとかする場合には、たぶんコード書かなきゃいけないんじゃないでしょうか。 ヘッダに色ついて…

Java、標準ライブラリにおけるオブジェクトの等価性は型で判断されないという話

Set<String> userNames=Sets.newHashSet(); int userId=... String userName=... // Collections<E>#add(E o) // 型が違うのでエラーになってくれる userNames.add(userId); // Collections<E>#contains(Object o) // 引数がObjectなのでコンパイルが通ってしまう! if(use</e></e></string>…

Windows(32bit)、Microsoft SQL Server JDBC Driver 2.0とJava6 Update 29の組み合わせだとコネクション取得時に帰ってこなくなる

環境 Windows XP SP3(32bit) JDK 1.6u29 SQL Server JDBC Driver 2.0(sqljdbc4-2.0.jar) 現象 コネクション取得時に応答が帰ってこなくなる。

YAPC::Asia Tokyo 2011いってきた

スクリプティング用途ではRubyばかり使っててPerlは月2行くらいしか書かないのだが、多言語の文化を知りたいみたいな動機のもとに参加してみた。 と言っても土曜日のみ(ギョーム……)・しかも午後から(これは怠惰による)なのであまり聞けなかった。聞いたのは Mon…

スマフォについて全く詳しくない人間がガラケーについて語る

私のガラケー*1は、ロック解除するために 何かボタンを押す 「オートロック設定あり ロックNo.は?」と聞かれるので4桁の数字を入力する 数字を入力したら決定ボタンを押す 「オートロック 再ロック一時間を解除しました」というダイアログが出るので決定ボ…

Cygwin、Cygwin portsを使ったらgitkが動かなくなったのでどうにかした

graphviz使うためにCygwin ports使ってインストールしたんですが、やたらと依存パッケージが多い。 まあ正常にインストールして使えたんですが、なぜかgitkが動かなくなった!!! $ gitk Application initialization failed: no display name and no $DISPL…

bash-git-completion、__git_ps1のオプションを設定して様々な情報を表示する

bash-git-completionというbash向けのgitコマンド補完パッケージがありまして、プロンプトに各種便利情報を表示するための __git_ps1 関数というのが定義されている。標準だと今いるブランチが表示されて便利ですが、オプションを設定することでさらにいろい…

Scala会議行ってきた

みんな隙あらばモナドの話しだすのでさすがだとおもった(了)

PHP5.3.7のcrypt関数のバグはこうしてリリースされた

話題になってるこのバグ。PHP5.3.7のcrypt関数のバグはこうして生まれた | 徳丸浩の日記「テストしろや」というのを真っ先に思いつくが、実はcryptのテスト自体は存在していて、バグの存在を検出していたのだという。 では、にもかかわらず、なぜリリースさ…

LL PlanetsあるいはJS Planetsに行ってきた/node.jsやCoffeeScriptはなぜ生まれたか/プラットフォームとしてのJavaScript

午前中のメタプログラミング話とLTを除いてはほぼJavaScriptの話だという、時代を象徴するようなLLイベントであった。 面白かったのが、nodeがjsである理由のひとつに「I/Oについての標準的ライブラリがなかったから」というのが挙げられていたこと。スタンダー…

このごろの日記

最近行ったイベント: Rubykaigi 第一回SQL TO勉強会 Start Haskell Growing Object Oriented Software, Guided By Tests読書会 Scrum Boot Camp Tokyo 開発環境勉強会 アジャイルサムライ読書会(渋谷道場) など。GOOSとアジャムライ読書会は平日。いままでは平…

開発環境勉強会というところでLTしてきた

partake.in以前キーボードを切断した話について話してきました。ヒューマンインタフェースはDIYの余地があるので皆さんも色々工作してみるといいんじゃないでしょうか。 貧者のための入力デバイス View more presentations from todesking なんとなく意識高そ…

スタートHaskell第0回に行ってきた+最後にやってたあの難解なLTの解説

スタートHaskell 第0回に行ってきました。「初心者向けで環境構築から始まりハローワールド程度しかやらない勉強会、Haskellに多少触ったことのある人間が行く意味あるのだろうか……」と思いつつ行ってみたものの、予想以上に向こうの想定している「初心者」がハ…

git-svnで特定のサブプロジェクトを扱う

svnリポジトリの構造が、 svn trunk project-a project-b branches rc1 project-a project-b tags v1.0 project-a project-b みたいになってるケースにおいて、subproject-aだけをgitリポジトリとして管理したいというケース。git svn cloneの引数をうまく指…