2007年を振り返って

さて、あと数分で2007年も終わりを告げ、2008年がやってくる。 2007年は、年初には思いもしなかった「いろいろな変化」がやってきた。ずっとこのブログや雑誌の記事執筆はやってきたが、それとは比べ物にならない飛躍の年と言えるかも知れない。 結婚 S2Wicketの開発と公開 java-jaとの出会い いくつかの非生産性向上系Eclipseプラグインの開発と公開 母校での講演* * こみゅすけ...

railsとrakeは似ている

Railsアプリのディレクトリの中で、テストケースを実行するために、 rake test と打たなければならないところを、 rails test と打ってしまうと、もれなくtestアプリケーションがテスト対象アプリの中にできあがる。 Railsアプリを「正しく」作っている(=ちゃんとテストコードを書いて品質を担保している)人々はきっと経験していることではないか、と想像してみるが、いかがだろうか。。。

楽しい楽しい冬休みの宿題

学生の時は、それはもう嫌で嫌で仕方がなかった「冬休みの宿題」。当時の僕は「休みなのに宿題って、休みにならないじゃん」と納得がいかなかったが、30歳を過ぎると、自分で宿題を課すようになった。不思議なことであるが、しかし学生当時と違って、大人の宿題とは「好きなこと【だけ】をやる」であり、モチベーションもそりゃあ違うということだ。 で、今シーズンはというと・・・ Railsのfixturesをごにょごにょする。 activerecord-jdbcでごにょごに...

Java Edge第3回ライブセッションで話をしてきました

中部地区におけるJavaコミュニティ「Java Edge」が主催した第3回ライブセッションが昨日行われた。「こみゅすけの里帰り」という題目で、僕も話をしてきた。 | View | Upload your own ここで、驚くべき出会いが待っていた。僕が社会人2年目のときに、日経ソフトウェアで1年間連載をしていたのだが、その後にJavaの初心者向け連載をした「丸の内とら」さん、さらに「マスタリングJavaEE5」の著者である斉藤さんとお会いすることができた。今後きっと何か一緒にできる...

第一回チキチキ 『ant から maven2へ 』〜血があつい鉄道ならばこまるよね〜 が行われました

やたらと題名が長いJava-jaの勉強会。今回は「 第一回チキチキ 『ant から maven2へ 』〜血があつい鉄道ならばこまるよね〜」と題して、maven2をテーマとして6名のスピーカーが思い思いのテクニックを披露した。僕はと言うと、昨日の丸レクの資料作成に全力を注いだ結果、今回のJava-jaの資料作成に踏み切るだけの元気は既に使い果たしてしまった状態。下の資料を見ればわかる通り、5枚のみの発表となった。 | View | Upload your own ま、とはいえ、何もし...

丸レクでREST on Railsについて話をしてきました

本日、「 丸山先生レクチャーシリーズ RESTfulサービス技術の台頭」で話をしてきた。僕の題目はというと、「Ruby on Rails2.0におけるREST対応」。使用したスライドは下のものである。 | View | Upload your own PDFは こちら 個人的には、やっぱり練習をしていくべきだったかなぁ、と、話し方に関して反省である。何度もRESTとRailsを言い間違えたし、日本語として正しくないよなぁ、と思ってしまうほど文法上酷い言い方をしてしまった部分もあった...

Rails2.0.2がもうあるよ!

JRuby1.0.3がリリースされたので、それにRailsを入れようとした。 なんと、すでに2.0.2がある。この前2.0.1がリリースされたばかりなのに。 というわけで、近日中に2.0.2リリースのアナウンスが正式に来るだろう。

JRuby1.0.3がリリースされました

先週の土曜日、JRubyの安定バージョンとして、1.0.3がリリースされた。これはマイナーバージョンアップであり、バグフィックスが中心となっている。 JRuby 1.0.3 Released - JRuby - Codehaus 参考までに、リリースに関する上記の内容を訳してみた。 — JRubyコミュニティは、JRuby1.0.3のリリースをアナウンスしたことを嬉しく思っています。 Homepage: http://www.jruby.org/ Download: http://d...

あるタグ全体を検証するassert_dom_equalメソッド

RailsにおけるControllerの挙動をテストするために、functionalsテストがある。functionalsテストの対象は各種Controllerクラスのメソッドであり、Webブラウザのリクエストをシミュレートして、それに対するControllerおよび使用されたViewの結果の内容を検証するのが目的。つまり、rhtmlやrxmlなどのViewによってレンダリングされた内容についても、動的に変化する部分に関してはfunctionalsテストの範囲となる。 functiona...

ある冬の出来事

先日、嫁と一緒に自宅近くのDocomoショップに行ったときの話。 僕らは家族割引の変更をしたくて、Docomoショップの中で順番を待っていた。整理券の自動発券機が入り口の正面に置いてあって、自分の番号が来るまで、座ってるか商品を見て待っているのが、大人の振る舞いである。僕らの前には10人ほどいるはずなのだが、店内には10人も見当たらない。整理券だけ取ったけど、時間がかかるし今日はいいや、って感じで帰っちゃう人がいるのだろう。つまり、整理券に書かれている番号ほど待ち時間は長くない、ということ...

assert_selectで属性値を扱う方法

rhtmlのレンダリング結果を確認するために、assert_selectを使用する。この際、要素が持つテキストを確認するのではなく、ある属性の値を検証する必要も出てくるだろう。 ある要素のある属性値を確認するためには、以下のようにすれば良い。 assert_select element, ‘[name=?]’, ‘value’ 上記の例では、ある要素elementに対して、それが持つ”name”属性の値が”value”であることを確認するコードである。つまり、 CSSセレクタの属性セ...

Ruby on Railsでもfacebookアプリは作れます(3)

かなりもったいぶっている「Ruby on Railsでもfacebookアプリは作れます」シリーズだが、やっと今回からrfaceookプラグインを使って実際にfacebookアプリを作る話をしてみようと思う。 rfacebookプラグインを使ったRuby on Railsでのfacebookアプリの作り方は、 前のエントリでも紹介した通り、 RFacebook Quick Start Guide for Rails Using Ruby on Rai...

「Ruby on Rails2.0におけるREST対応」のハンズオンが公開されました

来週の18日に控えている丸レクで使用する資料が、今日から以下のサイトで公開されている。 丸山先生レクチャーシリーズ2007-2008 「 第2回「RESTfulなサービス技術の台頭」 僕の資料は、「第3セッションのハンズアウト」である。興味のある方は、ぜひ見てみて欲しい。もちろん当日会場に来てもらえると、もっと嬉しい。

Ruby on Rails 2.0がリリースされました!

見落としていたのだが、すでにRuby on Rails 2.0が、12月6日にリリースされていた。現在は、すでに2.0.1になっている。 root/tags/rel_2-0-1 - Rails Trac 今日時点で、例えば「jruby -S gem install rails –include-dependencies」すれば、2.0.1一式を得ることができる。ちなみに、僕のmacではヒープサイズが足りなくなったため、「-J-Xmx512m」オプションを追加することによりインストールをす...

DHCPからIPアドレスが振られないこととSafariブラウザの関係性

昨日、自宅のルータの無線LANの調子が悪くなった。有線でつなげると元気なのだが、無線LANでルータとパソコン間の接続が確立され、そしてパケットを投げた途端に、ルータがほぼ100%ハングアップしてしまう。結婚してすぐだから、今年の2月から約10ヶ月使ってきた。寿命とはとても思えないが、いろいろ対策を施してみるも復活することはなく、残念ながら新ルータを購入することとなった。 近くの大手家電店Y電気に行き、ルータを物色。ふむふむ、今は11nなんて規格があるのか。まだドラフトらしいが、子機が11n...

Ruby on Railsでもfacebookアプリは作れます(2)

前のエントリで、facebookアプリがRuby on railsでも開発することができるということを紹介した。数回にわけて、実際にアプリを作るための手順を紹介していこうと思う。もちろん、facebookにアカウントを登録してサインインしていることが前提条件。 まず、アプリケーション開発を行うためのアプリケーション「Developer」を、自分の登録アプリとしなければならない。Developerアプリを使用することで、新規アプリの登録が行えるようになる。Developerアプリの登録は、以...

Ruby on Railsでもfacebookアプリは作れます

facebookが「ソーシャルOS」と呼ばれる所以は、facebook上にアプリケーションを自作して登録し、facebookユーザに使ってもらうことができる、ということにある。自作アプリケーションは、当然facebookが持つ様々な機能と連携することが可能である。例えば、アプリケーションで起きたことをMini-Feedに追加したり、プロフィール画面にアプリケーション固有の区画を追加したり、あるいはアプリケーションを自分の友達に勧めたり、といったことが、比較的簡単に実現できる。とても面白い。...

リソースが3段以上ネストしたときのmap.resourcesの書き方

RESTfulなサービスを実装するとして、対象リソースがその他のリソースとの従属(親子)関係があるときに、Ruby on Railsではmap.resourcesをネストして記述することが可能になっている。例えば、部署(Division)に所属する社員(Employee)のリソース定義であれば、 map.resources :divisions, :path_prefix => ‘/api’ do |divisions| divisions.resources :employees...

いろんなところで講演をします

気がついたら、17日の週は結構大変なことになってた。1週間の中で3回もスピーカーをやることに。しかも、テーマは見事にバラバラ。 [12月18日] 丸山先生レクチャーシリーズ2007-2008 「 第2回「RESTfulなサービス技術の台頭」  【タイトル】Ruby on Rails2.0におけるREST対応 [12月19日] java-ja 「 第一回チキチキ 『ant から maven2へ 』〜血があつい鉄道ならばこまるよね〜」  【タイトル】maven2 + apt で楽々ドキュメント...

ActionController::Resourcesを翻訳しました

「 Active ResourceのREADMEを翻訳してみました」エントリでRESTサービスを叩くためのActiveResourceに関するドキュメントを翻訳したが、またもや勉強のために、今回はActionController::Resourcesに関するドキュメントを翻訳してみた。ActionController::Resourcesには、RESTfulサービスを実装するために必要な知識が記述されている。 ActionController::Resources 原文の中で「route...

「ITアーキテクトの視点」に記事が載りました

ITproのサイトにある「 ITアーキテクトの視点」。この中に「ブログ」コーナーがあり、僕も参加させていただいている。すでに他の方々の記事は掲載されているが、本日僕の記事も公開された。 【ブログ】 ITアーキテクトとして最も面白く感じること かなり自由に書かせてもらっているので、思っていることを素直に書いてみた。が、やっぱり記事を書くのは難しいなぁ、と痛感。 ぜひ一読いただき、もしコメントなどあれば書き残していってもらえると、とっても嬉しい。

腰痛が再発!

一昨日、家でソファーに座って原稿を書いていて、起き上がったその瞬間。 あの、あの恐ろしい腰痛が、なんと再発! 立てない。動けない。うなずくだけでも腰に響く。寝返りできない。踏ん張れないため、人生で片手ほどしかない便秘。すべての動作がスローモーション。 昨日、地元で有名な接骨院に行ったところ、「昔のぎっくり腰(=腰のねんざ)が治ってないよ。結構重症だね」と言われてしまった。ぐりぐりやられて、めっちゃ痛い。この腰痛のおかげで、楽しみにしていたEclipseプラグイン開発勉強会も行けなくなってし...

我が家に暖かい冬がやってきた

今日、家に帰ると嬉しいお知らせを目にした。 そして、今日の食卓には、世界一美味しいモツ煮が並んだ。 今日の日本海側は大雪。東京の夜も気温は5℃程しかない。でも我が家は、とっても温かい。

参加申込者一覧のメール送信機能を追加しました

こみゅすけには、イベントの参加申込を受け付ける機能がある。参加申込時にはメールアドレスも入力させているのだが、ロボットに拾われてスパムメールの情報発信源になるのは避けたかったので、入力されたメールアドレスは表示しない(Ajaxのレスポンスにも含めない)ようにしている。 ただ、それだとイベントの主催側がリマインドメールなどを送信できないので、メールアドレスも含め、参加申込者の一覧をコミュニティ管理者にメール送信する機能を追加した。 コミュニティの登録時に入力したメールアドレスを入力して右...

Dukeスニーカーが届きました!

Sun&リクルート主催で行われたMash up Award 3rdの こみゅすけトリプル受賞からすでに1ヶ月以上経過しているが、先週サン・マイクロシステムズ賞の副賞が届いた。 スニーカー全面にDukeが6パターンちりばめられている。まさにJava好きにはたまらないシューズ。 これ、完全にオーダーメイドなので、1、2万円なのかと思っていたら、とんでもない。その4倍以上したらしい。しかも、Sunの方々の重い重い想い(=念)が詰まっているので、逆に普段履けない。 イベント事に参加する...

Sun Tech Days 2007とSeasar Conference 2007でゲットしたもの

Sun Tech Days 2007と Seasar Conference 2007 Autumnで、いくつかグッズを頂いた。 これはSun Tech Daysでもらったリュック。小さい割には結構いろいろ入りそう。 上は、Sun Tech DaysでもらったDuke Tシャツ。7分丈の袖と、Dukeの姿が特徴的。下は、Seasar Conferenceでもらったスタッフトレーナー。もともと頼んでいたわけではないのだが、余っていたらしく、 まさたかさんから頂いた。昨日着てみたが、サイ...

iCalendar形式でイベント情報をエクスポートできるようにしました

こみゅすけに登録されたイベント情報は、 RSS FeedによってRSSリーダーなどで購読できるようにしている。また、Google Calendarから、イベント情報をGData APIを使ってインポートする機能も提供している。 id:yoshioriさんからの要望もあり、iCalendar形式でイベント情報をエクスポートできるようにしてみた。 これにより、こみゅすけに登録されたイベントを、iCalendar形式に対応したスケジューラ(Google CalendarとかmacのiCal...

参加申し込みページにリンクを配置しました

イベントの参加申し込みを受け付ける機能を持つ こみゅすけ。今までは、参加申し込みページに直接行くことができず、こみゅすけ上でイベントの検索を参加申込者が自分で行わなければならなかった。これだと、利便性が良いとは言えない。 そこで、あるお方からの要望もあり、イベントの参加申し込みページにリンクを設置して、そのリンクを配布することにより直接参加申し込みページに行くことができるようにした。 コミュニティの登録は自由なので、コミュニティを主催されている方は、ぜひこみゅすけに登録して利用してみて...

macのSafari3で文字化けしてたのを解消しました

多くのmacユーザは、Leopard(10.5)に移行したことだろう。僕も販売開始のその日にLeopardに移行した。Leopardには、Safariの新しいバージョン3が搭載されている。このSafari3で こみゅすけを見てみると、なんと見事に文字化けしていた。Safari2でも文字化けしていて直したというのに、だ。 Safari2では、dojoによって読み込まれるjsファイルおよびhtmlテンプレートファイルの両方が文字化けしていたのだが、dojoに手を入れて文字化けの補正をした状態で...

Seasar Conference 2007 AutumnにてS2Wicketのセッションを行いました

11月11日に行われた「 Seasar Conference 2007 Autumn」で、S2Wicketについてのセッションを行った。定員30人の部屋が満席になるほどの人々に来ていただき、Wicketの簡単な紹介とS2Wicketの機能や今後などについて語ることができた。 S2Wicketのセッションにいらしてくれた皆さん、心より感謝いたします。また、スタッフの皆さまにも、感謝いたします。ありがとうございました。 なお、 事後アンケートを募集しているので、来場された方はぜひアンケートの回...

Active ResourceのREADMEを翻訳してみました

Rails 1.2から搭載され、Rails 2.0でいくつか改良されたActive Resource。これを使えば、RESTなWebサービスを簡単に利用できるようになる。これのREADMEが「 ここ」にあるのだが、勉強がてら日本語に翻訳してみたので、公開してみようと思う。 ActiveResource_README_ja.txt RESTfulなWebサービスを利用するクライアントは、Active Resourceを使えばかなり簡単に作れることが、これを見てわかると思う。Active R...

Sun Tech Days 2007 Mash upセッションで話してきました

昨日のSun Tech Days 2007 Day-2にて行われたMash upに関するセッションに登壇し、 こみゅすけについての話を行ってきた。その時のプレゼン資料が↓である。 | View | Upload your own 実際には3人(Sunの藤井さん、リクルートの川崎さん、僕)で担当。藤井さんが司会&全体のまとめ、川崎さんがWeb API提供側としてのMash upに関する話、僕が受賞作品の紹介と個人的に感じている今後のMash upの方向性についての話を行った。かなり内...

単純化&最適化&DRY

問題の局所化およびDRYによるメンテナンスビリティを考えられないプログラマがいるとは、驚きに値する。 人間がミスをおかしにくくするためには、問題領域をできるだけ狭めて、何事にも単純化を行う必要があると僕は思っている。そして、一旦でき上がったシステムを長期的にメンテナンスしていくためには、昔流行った「各コンポーネントがそれぞれ能動的に何かをする(そのためには同一処理が複数箇所で記述されることを許容する)」のではなく、DRY(Don’t repeart yourself)の精神に従った最適化...

JJUG クロスコミュニティカンファレンス 2007 Fallの模様です

本日開催された「JJUG クロスコミュニティカンファレンス 2007 Fall」をUstreamで配信していたのには、みなさんお気付きだっただろうか?同時に録画もしておいたので、もし残念ながら会場に来れなかった方は、ぜひご覧になってもらいたい。 [Part 1 丸山先生レクチャーシリーズ 第1回 Googleの分散処理技術] [Part 2 コミュニティパネル 「Webアプリケーション開発の今後を占う」 - 第1部 ポジショントーク Seasar代表 ひがさん] [Part 3 コミュ...

近頃の中年は腐ってる

新宿で宇都宮線のグリーン車に乗るために並んで待っていると、頭の上が禿げた中年が列の反対側に立った。イメージ的には、下図のような感じ。 ○○○ ○←中年   ↑列の先頭 その中年は、ドラゴンボールの19号にそっくり。 僕は先頭から2番目。さすがに馬鹿じゃないよなぁと思っていたが、期待通りの馬鹿。電車が来た途端に列を無視して電車に乗ろうとしてきた。一刻も早く座りたいらしく、僕に軽くぶつかってきた。 思わず僕は19号に言った。「ちゃんと並べよ」と。 この言葉は中年の心にマイナスの方向で刺さったら...

Seasar Conference 2007 AutumnでS2Wicketについて話します

11月11日に行われる Seasar Conference 2007 Autumnで、「 E3: S2Wicketの紹介」というセッションを行うことになった。 特にWicketは「存在は知ってるけど使ったことがない」という人がほとんどだと思うので、Wicketの簡単な紹介とWicket単体でのデモを行って、その後に S2Wicketの紹介をする予定である。なので、Wicketに関する予習をすることなくS2Wicketを把握することができるよう、敷居は低くするつもりだ。 Wicketに興味が...

Sun Tech Daysでこみゅすけについて話します

Sun&リクルート主催の Mash up Award 3rdで3部門同時受賞に輝いた「 こみゅすけ」について, Sun Tech Daysのセッションで紹介させていただくことになった。 日付: 2007年11月8日(Day-2) 時間: 18時10分〜19時00分 セッション: 2-J1-6 Mash up Award Demonstration こみゅすけ開発のきっかけ,搭載している機能,技術的な解説,そして今後の展望などを,デモンストレーションを交えながらお話させていただく予定...

こみゅすけをJRuby on Glassfishに移行!

機能追加をして久々にmongrelを再起動したら,こみゅすけが起動しなくなった。というか,4つ動かしていたrailsアプリが全滅。すっごい緊急事態。 稼働させているサーバは,Fedora Core 6。64bitのクアッドコアCPUで,uname -aの結果は以下の通り。 Linux chako 2.6.20-1.3002.fc6xen #1 SMP Mon Aug 13 14:21:21 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux yumを...

「Project Zero ナイトセミナーvol2@秋葉原」に参加してきました

稚北ナイトセミナー「Project Zero」の第2回に,先週の木曜日に行ってきた。僕の指名は「Ustream配信係」。200万画素の新しいカメラも買って,ノリノリで参加をした。講師は アークランプのゆーすけ氏。 今回の内容はGroovyの紹介。Rubyが流行ってしまった今日では,Groovyをやってみよう!という人は残念ながら減少傾向。つまりProject Zeroを知るためには,そんなGroovyをまずはちゃんと知らないといけないため,今回はGroovyの基礎編という内容となっていた...

dojo-release-0.9を見てみた

今年も気がつくともう10月。振り返ってみると,dojoを使う機会がすごく多くなった。とはいえ,使用しているのはdojo-0.4.2とか0.4.3。そろそろdojo-1.0が登場する予定なこともあって,0.9を見ておかないといけないぞ,と。dojo使いまくりの こみゅすけの起動速度が遅くなってきているのも気になるので,dojo-release-0.9を試してみることにした。 0.4.3から0.9の差分を中心として,ぱっと見で気になった点を以下にまとめてみる。 dojo一個だ...

「第一回チキチキ 19時だよ全員集合!!ライトニングトーク大会」

一昨日の10月5日,java-jaの第4回目となるイベント「 第一回チキチキ 19時だよ全員集合!!ライトニングトーク大会」を開催した。今回はプレゼンすることをみんな経験しちゃおうぜ!という主旨のもと,参加者全員がライトニングトークを行った。テーマは自由。真面目なテーマな人,自己紹介をテーマにした人,ホワイトボードな人,ウクレレな人,新デバイスな人,ダンスな人,バトルプログラムな人,などなど,個性出まくり。 僕も,体操をテーマに参戦。合言葉は「がんばれ!ニッポン!」 終電の都合上,後片づ...

Mash up Award 3rdで「こみゅすけ」がトリプル受賞を果たしました

8月の初めから開発を初めた「 こみゅすけ」。Sunとリクルートが開催した「 Mash up Award 3rd」コンテストに応募していたのだが,この度なんと「3部門同時受賞」に輝いた。最優秀,マッシュ賞,アップ賞に続く第4位的な感じであり「大賞まであと一歩!」なのだが,とにかく嬉しい!めちゃめちゃ嬉しい!具体的には, サン・マイクロシステムズ賞 テクノラティ賞 面白法人カヤック賞 の3部門である。これはすごい。 こみゅす...

「Project Zero ナイトセミナーvol1@秋葉原」に参加してきました

先週の金曜日(9月28日)に, 「Wakhok Night Seminar」の「Project Zeroコース」の第1回に参加をしてきた。Project ZeroはIBMが始めたアプリケーション開発用のプラットフォーム。話の流れは,Project Zeroの背景として,Web1.0からWeb2.0への移り変わり,Webサービスの変革,そしてRESTという流れの紹介と整理が前半。後半はProject Zero自体の紹介という構成だった。 前半の背景の話は,想定している聞き手の想定が「REST...

MA3 participant sessionに参加してきました

無事 マッシュアップコンテストに応募することができた「 こみゅすけ」。先日の22日に行われた「MA3 participant session」に参加をしてきた。これは,しっかりと作品を作り上げて応募した参加者限定で行われた,いわば「打ち上げ」である。約30作品の作者の方々が集まり,5分後との各作品の紹介を飲み食いしながら楽しむ,といった会だった。 事前に参加作品を一通り見て行ったのだが,使い方がわからないものも多く,デモを楽しみにしていた。率直な感想で言うと,使ってみてわからないものは,デ...

参加申し込み機能を追加しました

勉強会やイベントなどをコミュニティが行う場合,予め「参加者を応募して人数を把握しておく」などが必要となることがある。そこで, こみゅすけにも,参加申し込み機能を追加してみた。 各ミーティングの吹き出しやミーティング情報に,以下のようなリンクを作ってある。 これをクリックすると,以下のような参加者一覧表示&申し込みフォームのパネルが表示され,ここで参加を申し込むことができるようにしてある。 メールアドレスを必須入力としているが,こみゅすけ上でメールアドレスを晒すことはしないようにする...

勉強会やイベントに付箋を貼ることができます

こみゅすけは,未知のコミュニティを知り,そのコミュニティが行っている活動に参加する機会を増やす目的で作ったものである。もちろんリアルに参加して,実際にメンバーと顔を合わせることが重要である。しかし,二次会の場所を決めたり,参加の前にコアメンバーに雰囲気を聞いたりすることも,もちろん重要なコミュニケーションである。さらに,さまざまな情報をメンバーに伝えて共有知とすることも,コミュニティにおいて非常に重要な点である。 こみゅすけには,そんな管理外の非定型な情報を扱うために,コミュニティが主催す...

コミュニティやミーティングを自由に登録できるようにしました

初期の段階では,コミュニティの登録や,イベントや勉強会などのミーティング登録は,Google Calendarの設置が必要だったために,非常に閉じた世界となっていたこみゅすけ。これでは敷居がかなり高いので,こみゅすけ上からコミュニティの登録やミーティングの登録を行えるように機能拡張した。登録は,Wikiの精神に則り,認証などを設けず,自由に行えるようにしている。 まずはコミュニティの登録。これは,上部のツールバーの左から6個目のボタンを押すと,コミュニティの情報を入力するためのフォームが表...

宿泊施設検索機能を追加しました。

コミュニティは日本各地にいろいろな形で存在している。何も都内に住んでいる人が都内で開催される勉強会に参加することだけがコミュニティではない。遠方から都内で開催される勉強会やイベントに参加することもあるだろう。都内のコミュニティが地方でイベントを行うこともあるだろう。そうなった場合,「宿泊」ということをしなくてはいけなくなる。 そこで,会場の近く(2km以内)にある宿泊施設を「じゃらん Webサービス」を使って検索し,一覧表示および地図へのプロットを行う機能を「こみゅすけ」に追加してみた。 ...

二次会お店検索機能を追加しました

勉強会などを主催する立場になると,「終わった後の二次会をどこにしようか?」というタスクも付きまとうようになる。いろんな人が勉強会には来るので,それぞれの好みなんて気にしている場合じゃない。それよりも,勉強会の会場に近く,しかも人数のキャパが多い,そんなところを探し当てなければならない。 そこで こみゅすけに,「 ホットペッパー Webサービス」を使って,勉強会の半径1km以内にある飲食店を検索し,その一覧表示および地図上でプロットする機能を追加してみた。 リストは会場から近い順に並んで...

RBCドリコムノック(長崎)に参加してきます

車酔いを恐れず,果敢にブログエントリを試みる。 ギガプライズ勤務最終日だった昨日から一夜明け,今日は「 Ruby ビジネス・コモンズ ドリコム・ノック」のお手伝いを行うため,九州に旅立つ。福岡には昨年いやというほど行ったのだが,長崎は初めての上陸。このエントリは,大宮から羽田空港に向かうバスの中で書いている。 「 こみゅすけ」の開発に夢中になっている今日この頃だが,すでにRuby on Railsで作ったアプリは4本。10年以上ずっとJavaをやってきた僕が,こんなにRuby on Rai...

「24」風Ustreamプレーヤー,題して「Ustream24」

外国ドラマの「24」風な感じで,Ustreamを見るためのサイトを作ってみた。 題して,「 Ustream24」。 ま,単にUstreamを四方に置いて,真ん中に黄色くLCD的なデジタル時計を置いただけ。ただそれだけ。しかし,何故かこれで見ると「ちょっとした臨調感」を感じれたりするので,勉強会とか,開発合宿とか,納期2日前のプロジェクトの風景とか,そんなものをこれで見ると面白いかもしれない。 Ustream24は,Ruby on RailsとDojoの組み合わせで開発した。もうJava...

Safariでdojoを使うと文字化けする件

こみゅすけは,dojoというライブラリをかなりの勢いで使用している。dojoは数多くあるJavaScriptライブラリの中で,おそらく最も大きなコードセットだろう。イベント処理やIO関連,各種ウィジェットなど,Ajaxでアプリケーションを作る上で必要となる全ての分野について網羅している。今まではそのコードの大きさのために「遅いっ!!」という悪印象があり,利用を敬遠してきた人も多くいることだろう。しかし,0.4.2以降では,テンプレートの読み込みの削減など,動作の遅さを根本解決するための修正...

関連する動画を検索できるようにしました

Sagoolの検索APIを利用して,ミーティングに関連する動画を検索する機能を追加した。 僕が顔を出してUstreamで録画している勉強会しか基本的に今は登録されていないため,僕のブログばかりがヒットしてしまう。今後登録してくれるコミュニティをもっと探して,いろいろと面白い情報が集まるようにしていきたい。

クロスコミュニティ IDEに参加してきました

JJUGが主催した「 クロスコミュニティ IDE」に参加をしてきた。例のごとく,今回もUstreamで模様をリアルタイム配信してみた。録画に失敗しちゃったかと思ったのだが,最初の17分間だけ何故か別動画になってしまっていただけで,一応全部録画できていた。ほっと一安心。 「最初の17分間」 「残り全部」 JDeveloper紹介者の佐藤さんとは,この前のJava Edge発足総会でご挨拶させていただいていたのだが,たけぞうさんときしださんとは初対面。かなり緊張していたのだが,親睦会にてご...

天気予報を表示するようにしました

こみゅすけは,開催される勉強会やセミナーの情報,特に「どこで開催されるか」を中心的な概念として織り込んでいる。どこで行われるか?に関連する情報はいくつか考えられるが,例えば特に勉強会の当日になって気になるのが,「雨降ったりしたらイヤだな」という天候についてではないだろうか。 あるお方からの要望もあって,livedoorが提供している「 お天気Webサービス」を利用して,地図上に天気を表示するようにしてみた。 これは,あくまで「操作している今日の天気予報」である。ミーティング当日の天気予...

こみゅすけに予定を登録する手順

こみゅすけにミーティングを登録するには,コミュニティ毎に登録されているGoogle Calendarに予定を登録します。 Google Calendarには「毎日,毎週,隔週」などの繰り返しや「終日」などの予定登録が可能ですが,現時点では,こみゅすけは「ある1日で時間が決定している」予定のみをサポートしています。具体的に入力して頂きたい項目は,以下の項目です。 タイトル: ミーティングの名前となります。 日付: ミーティングの開始・終了日時となります...

「最寄り駅,関連書籍,関連ブログ」機能を追加しました

開発を始めて3週間ほど経った「こみゅすけ」。基本機能が揃ってきたので,いくつか面白系の機能を追加してみた。 「最寄り駅」機能 「関連書籍」検索機能 「関連ブログ」検索機能 最寄り駅の検索は,「 SimpleAPI vol.2 最寄り駅Webサービス」を使って行っている。SimpeAPIという名前通り,非常に手軽に使えるサービスである。戻りのXMLの内容もシンプルであり,簡単に取り扱うことができた。検索結果を最大3件表示するようにして...

「こみゅすけ」作ってます!

勉強会に顔を出したり,あるいは主催側に回ってみたり,足を使った活動を徐々に増やしている今日この頃。僕がいるIT業界では,多くのコミュニティがそれぞれ「勉強会」と称したミーティング(≒飲み会)を行っている。 そんな勉強会,日々ググっている最中に偶然コミュニティに出会ったり,身近な誰かから聞いたり,といった感じで情報を得ているのがほとんどではないかと思う。せっかくなので,いつどこでどんな勉強会が行われているのか,という情報を提供するサイトを作ってみようと思い,そろそろ形になってきたので公開を開...

こういうの大好き

使用前。 使用後。 外人も。 【ニコニコ動画】愛を取り戻せ! もっとうまい外人。 【ニコニコ動画】雀の雲 愛を取り戻せ さらにSHOCKな外人。 【ニコニコ動画】【北斗の拳】DGM - You Wa Shock!! (愛を取り戻せ!)

東武スーパープールは灼熱でした

お盆休み,高速道路は渋滞ばかり。電車でどっか行くにも,どこも混雑に違いない。しかし,灯台下暗し。住んでいるアパートから車でわずか10分のところに, 東武動物公園がある。小学校のときに数回行ったことはあるのだが,13日に久々に行ってきた。動物を見に行ったわけではなく,「東武スーパープール」に芋を洗いに,だ。 流れるプールは人が多くて,大人が泳ぐことは全くできない。そして,魚雷と化したちびっこが後ろから追突してくる,という状況だった。 開園から1時間以上後に到着したため,日陰の場所は既...

Wicket勉強会を行いました

先日の8月10日,java-ja主催の「 第一回チキチキ そろそろ Wicket について一言いっとくか」,つまりWicket勉強会が開催された。 今回も,yoshioriさんの書道から始まった。 スピーカーは5人の予定だったのだが,仕事の都合で2名が時間までにかけつけることができず。一人は実務でWicketを使っている方だったので,非常に残念だった。 トップバッターはonkさん。Wicketの基本的な紹介とデモが主な内容だった。とはいえ,nekopさんやyone098さんからのす...

seasar.orgの人々と飲みました

一昨日の8月9日,seasar.orgの中の人々にお会いすることができた。 かなりぶれてしまってるのだが,お会いできたのは次の方々だ。 よねさん まさたかさん mopemopeさん 太一さん 大谷さん 本間さん すっごい面々。僕一人では不安だったので(嘘),id:yoshioriさんも一緒に参加していただいた(大遅刻ごめんなさい)。 実はこの集まり,「よねカン」という名...

当たりパナップ,はずれパナップ

嫁とパナップを食べていたら,最近のパナップは「当たり」と「はずれ」があることが判明。 もちろん右が当たりパナップである。

Timeオブジェクトに対するto_jsonメソッド呼び出し

Ajaxを多用したアプリケーションにおいても,Ruby on Railsの採用が今後どんどん増えていくと考えられる。Ajaxと言えば,言葉の通りXMLを連想するかもしれない。しかし,サーバから受け取った後の処理効率を考えると,JSONでやり取りを行ったほうがトータルで都合が良い。近年では,XMLではなくJSONを利用する機会が多いと考えられる。 Ruby on Railsの1.2から,全オブジェクトに対してto_jsonメソッドを呼び出すことができるようになった。これは,active_s...

Java Edge発足総会に参加してきました

昨日の8月3日,名古屋工業大学で行われた「Java Edge発足総会」に参加をしてきた。今回は,単に聴衆としてではなく,パネルディスカッションのパネラーとして僕も参加。 Java Edgeは,名古屋を中心として活動を行っていくJavaのコミュニティであり,JJUG(日本Javaユーザグループ)がバックアップを行っている。最近のJavaやRuby関連のコミュニティは,東京以外の都市を対象として,総会や勉強会,各種イベントを行うことが多くなってきている。Java Edgeに関しても,Javaを...

tracがsubversionの履歴を拾ってくれなくなったとき

気がつくと,ある日からsubversionへのコミット履歴などをtracが拾ってくれなくなっている現象が発生するときがある。今まさに,その状況に直面した。「subversionのリポジトリが壊れたのかっ!?」とtracの表示を信じてしまったのだが,別のsubversionクライアント(subclipse)で覗いてみると,壊れていないっぽい。 ググって調べてみると,tracがsubversionの履歴を拾ってくれなくなったら,以下のコマンドを試すといいらしい。 trac-admin ...

ActiveRecordの属性に「?」で問い合わせる

ActiveRecordオブジェクトは, class Employee < ActiveRecord::Base end とするだけで,上記で言えばemployees表が持つ各種列に対応する属性が利用可能になる。例えば,employees表にname列が定義されていたとすれば, employee.name = ‘Yoichiro’ p employee.name というように,nameアクセッサを利用することができる。とても簡単だ。では, employee.name? と...

Wicket勉強会やります!

来る8月10日,java-ja主催で, 「 第一回チキチキ そろそろ Wicket について一言いっとくか」 と銘打ったWicket勉強会を開催する予定である。 POHP+フルJavaなWebアプリケーションフレームワークであるWicketは, Apacheのトッププロジェクトに名を連ねるところまで来ている。しかし,Wicketを使っているという話は,残念ながらあまり聞かない。 今回のWicket勉強会では,Wicketの初級的紹介から,実際に利用したときの経験談,そしてWicketをより...

Windows XP on Parallelsの起動がめっちゃ速い件

最新MacBook Pro(2.2GHz,4GB)にしてみて,何がびっくりしたって,Windows XPの起動が恐ろしく速い。あまりの衝撃に,録画してみた。 Parallelsには「mac側のファイルのダブルクリックによる起動でParallels内のWindows XPにインストールされたアプリケーションでそのファイルを起動する」という機能があるのだが,この速度でOSが上がってくれれば,その機能の有り難さを感じることができる。 ハイエンドのPCにWindows XPネイティブインストール...

僕と嫁の脳内

「 脳内相性メーカー」より: とても嫁には見せられない orz

結局lighttpdからmungrel_clusterに移行

「 lighttpdで稼働しているrailsアプリでリダイレクトが効かなくなった」件だが,結局原因は判明せず。どうもyumの自動更新によってlighttpdがバージョンアップされたらしく,そのタイミングで動作がおかしくなった模様。 apacheとlighttpdの組み合わせは,mongrelの自動機能の設定を行うのが面倒そう,という安易な理由で選んだのだが,やはり世の中はapacheとmongrelの組み合わせが多数派なようである。いつまでも放置していると,ユーザ(とっても目の肥えた数人)...

SpringNightDreamに行ってきました

昨日の7月27日に,Japan SpringFramework User Group主催の勉強会「 SpringNightDream」に参加してきた。ちょっとお手伝いしつつ,総勢8名の方々のライトニングトークを楽しんだ。ひがさんを除いて(w,皆さんSpringにまつわる話を展開。nekopの上空からの突っ込み,そしてひがさんの鋭い突っ込みなども含め,なかなかレベルの高い勉強会となった。 そして,初の試みとして(参加者の皆さんが気がついていたかどうかわからないが),ustreamで勉強会の内...

lighttpdで稼働しているrailsアプリでリダイレクトが効かなくなった

「 約5時間かかったRuby on Railsの実行環境構築」で頑張ってみたRails運用環境だが,今日になって不具合が出てしまった。昨日までは元気に動いていたのに。。。 昨日の夜に,配置してあるRailsアプリに機能追加を行った。実際には2つRailsアプリを配置してある。形態は「apache2 <=> mod_proxy <=> lighttpd」という組み合わせ。修正は片方のアプリのみなので,もう一つは影響はないはず。加えて,apacheやlighttpdの設...

updated_atを自動でセットしないようにする方法

データベースに格納される情報は,「作成日時」や「更新日時」を付与することが多い。ActiveRecordでは,作成日時や更新日時について,暗黙的にセットする機構が標準で備わっている。例えば, class CreateEmployees < ActiveRecord::Migration def self.up create_table :employees do |t| ・・・ t.column :created_at, :timestamp t.column :updated_a...

叩いた?

「たたいた」を漢字変換して,びびった。なぜなら,第一候補が, 多対多 だったから。普通だったら「叩いた」が最初に出てくるはずなのに。 仕事のしすぎかもしれない。。。

ActiveRecordに置き換えられたfind_allメソッド

ActiveRecordは,Rubyの動的な性質を存分に使って作られた,非常に利便性の高いライブラリだと思う。ActiveRecordをJavaにコピーすることは,きっとできないだろう。しかし,時に初心者(今の僕)は,その動的な特徴故に,期待した通りの動きにならずに苦戦することが多い。 ActiveRecordを使えば,モデル間の関連とそれに関する操作を数行で定義することができる。例えば,部署を表すDivisionモデルと,部署に所属する社員を表すEmployeeモデルがあった場合, ...

Ustreamはじめました

Lingr,Twitterと続き,最新のホットなWebサービスは,「 Ustream」らしい。 ということで,はじめてみた。 うっかり音声をブロードキャストして情報漏えいしないように気をつけなければ。。。

JavaでいうdeprecatedはRubyではobsoleteというらしい

遥か昔に制定した法律や決め事が今日のご時世に合わずに支障を来しているように,プログラムにおいても,過去に作ったものについて現在使って欲しくないという状況がしばしば起きる。実際のプログラミング環境では,「使って欲しくない」という作者の意図が何らかの形でプログラマに伝わらなければならない。 Javaでは,ソースコードに”deprecated”というキーワードを埋めておくことで,プログラマに「このメソッドは非推奨だから使ってはいけません!」と意思表示することができる。例えば,こんな感じ。 /...

options_form_collection_for_selectの初期選択が効かない

アプリケーションでは,データベース内に格納された各種マスタの一覧から1つ選択する,という行為が良く行われる。Webアプリケーションにおいて,マスタの内容を一覧表示する際は,selectタグとoptionタグの組み合わせが多く使われる。Ruby on Railsのactionpackに含まれるaction_viewヘルパーには,あるモデルの集合からoptionタグのセットを生成してくれる便利な機能が提供されている。それが,options_from_collection_for_selectメ...

動的プロキシ問題を解決した素晴らしい二人へ

以前「動的プロキシが循環参照していた際のシリアライズ問題」エントリにおいて僕が解決に至らなかった問題を紹介したが,見事に問題をクリアしたお二方からトラックバックを頂いた。 「 動的プロキシが循環参照していた際のシリアライズ問題」- 矢野勉のはてな日記 「 循環参照問題のよりエレガントな解法」- 矢野勉のはてな日記 「 次期 S2Wicket 仕様断念の原因となった動的オブジェクトの循環参照問題をおいらもみんなのために解いたった!?」- 【見覚え】koichikのひとりごと【あります】 素晴...

学生からの質問に答えます

先日行った いわき明星大学での講演を聞いてくれた学生から,いくつか質問を受けた。このエントリでは,その答えを紹介してみたいと思う。 — Q. 将来の夢はなんですか? A. 尊敬される職人になること。幸せな家庭を築くこと。 — Q. これはやっておいてよかった.もしくは,やっておけば良かったと思うことは何ですか? A. 好きなこと(ソフトウェア関連)に集中できたのは良かったこと。やっておけば良かったと後悔しているのは,英会話,海外旅行,経営学などなど盛り沢山。 — Q. 今,まだ,やりたいこ...

なぜ恋人を「振る」というのか

嫁から「なんで『振る』っていうか知ってるー?」って聞かれ,確かに言葉の由来を考えずに今まで「振る」「振らない」って言ってきたな,と。ある本を見て,嫁も初めて由来を知ったらしい。 恋人と別れる際になぜ「振る」というのか。 それは「昔は女性が交際を断る際に振袖を振って断ったから」という昔の文化から来ている。そして,結婚してしまえば,もう袖を振る必要はないため,留袖を着ることになる,ということのようだ。 詳しくは, 「 恋愛で云う所の「振る」「振られる」の由来は振袖」- Sukima Wind...

せっかく社保庁からアカウントが届いたのに

お客様設定パスワードを失念し,ログイン不能。心当たりをいくつか試すも,ことごとく拒否される。 再申請をしたが,再度4週間以上待たなければいけない。俺としたことが。。。orz

Twitterclipseをバージョンアップしました

Twitterclipseをバージョンアップした。修正内容は,下記の1点のみ。 TwitterのAPIで「source」属性が追加されたことに対応。 ご利用の方は是非バージョンアップを。

僕のJava処女作を恥ずかしげもなく公開!

「 昨日の講演」の中で,僕の卒業研究テーマを取り上げた。その時に作成したプログラム「CASL Simulator for Java」を,恥ずかしげもなく公開しようと思う。 CASL Simulator for Java Version 0.992 解凍後,「java MainWindow」で起動する。File-Openメニューで,同梱されているcslファイルを読み込み,「アセンブル&実行」でcslに書かれた内容が実行され,メモリの内容やレジスタの値が変化するのが見てとれるはず。ステップ実...

母校で講演してきました

昨日(7/19),いわき明星大学(僕の出身校)の電子情報学科3年生を対象に,以下のテーマで講演を行った。 世間の荒波を乗りこなせ! 〜これから社会に出る皆さんにそろそろ一言いっておくか〜 そのときの写真や撮影した動画は,今後大学の方で公開してくれるとのことなので,ここでは講演に使った資料を先行公開する。 お世話になった方々への恩返しのつもりでお話をさせてもらった。聴衆の学生達は,「携帯電話持っている人」という問いに9割の学生が手を挙げないという積極性だったが,私語もあくびもなく聞いていた...

railsでテストが実行できなくなった

快調にRuby on Railsなアプリを開発。そして振り返ると,なーんにもテストコードを書いていない自分に気がつく。Rails上でのテストコードの記述は好きな部類に入るため,テストを書かねばと思い立つ。 あるモデルに対するテストを1メソッド作り,「rake test:units」を実行した。すると, ./test/unit/../test_helper.rb:18: undefined method `use_transactional_fixtures=’ for Test::...

ある意味見慣れている光景

体操は素晴らしいスポーツだ。 最後の技は,跳馬に胸をあてている格好から,通称「レントゲン」と呼ばれている。覚えておいて損はないだろう。

YAMLファイルの読み込みと場所の指定

Ruby on Railsアプリケーションにおいて,実行環境依存で設定を変更したくなるときがある。昨日一応の完成を見た僕の処女作では,最初にログインする際のパスワードについて,正解のパスワードをデータベースからではなく,ファイルから読み込ませるようにしたかった。しかし,IntegrationテストやFunctionalテストのコード中にログイン処理のテストをコーディングする際に,正解のパスワードを記載しなければならないため,production時の正解のパスワードではなく,開発時もしくはテ...

キーマクロ最高!

今更ながらに,「emacsのキーボードマクロ最高!!」と世界の中心で叫びたくなった。 「 GNU Emacs Manual - Keyboard Macros」- GNU Emacs Manual Eclipseにもキーマクロ欲しい。。。

assert_selectでCSSセレクタを使う

Ruby on Railsアプリケーションの統合テストは,ActionController::IntegrationTestクラスを継承して作成する。統合テストは,ユーザが行うアクションを想定してコードでシミュレーションを行い,結果としてアプリケーションが正しく振る舞うかどうかを確認するためのテストである。一般的にWebアプリケーションの場合は,操作の結果としての出力の形式がHTMLという比較的複雑な文字列であるため,正しい動作を行ったかどうかの検証は難しい部類に入る。 Railsの場合...

仕事をロールプレイングゲーム感覚で行うために

僕はPC88エミュを使って,各種RPGのミュージックモードでBGMを聞きながら仕事をする。 昨日はYs3。一昨日はドラスレ6。今日はハイドライド3の銀行で。 フィールドの雑魚キャラをサクサク切って切って切りまくるように,仕事もサクサクこなしている感覚を得ることが可能。 ただ,エミュを実行するためにWindows XPをParallels Desktop使って立ち上げているため,MacOSでの生産性低下は免れない。

datetime型を持つモデルのテスト

Ruby on Railsにおいて,テスト環境がとっても気持ちがいいと「前のエントリ」で書いたが,実際にテストケースを書き始めると,やっぱり知らないことがいろいろと出てきて,サクサクっとはいかない。もちろん,それは俺がバンビーノだからなのだが。。。 datetime型な列があるappointments表のAppointmentモデルをテストすることを考える。fixtureには,こんな感じで記述するだろう。 first: id: 1 promise: 2007-07-10 13:30:0...

Railsアプリを本番環境に配備する際の注意点

MacOS Xで作成したRuby on Railsアプリケーションを,今日Fedora Core 6に配備することにチャレンジした。もちろん一発でうまくいく訳もなく,いくつかハマり箇所があった。同じミスを繰り返さないためにも,ここに残しておく。 [rubyコマンドのパス] 作成したRailsアプリを,「 約5時間かかったRuby on Railsの実行環境構築」エントリで紹介したlighttpd実行環境にファイル一式コピー。lighttpd.confおよびhttpd.confにそれぞれ設定...

「%>」と「-%>」の違い

Ruby on Railsで採用されているERB(eRubyの実装)。これによって,HTML内にRubyコードを記述することで,動的なコンテンツを出力することが可能となっている。 いくつかのサイトや書籍を見ながらRoRアプリケーションを試していたところ,以下の点に気がついた。 「%>」と「-%>」,何が違うのか? マイナス記号が付いている場合と付いていない場合がある。例えば, ‘edit’, :id => user.id -%> といったように。 上記の...

Ruby on Railsのテスト環境が気持ちいい

Javaな世界に10年以上どっぷりと浸かってきたが,Ruby on Rails(RoR)をやっていると「良く考えられているなぁ」と感心してしまう箇所が随所に見られる。とかくScaffoldやActiveRecordに関するコーディングに目が行ってしまいがちだが,僕個人的にはテストに関する環境が最も「おぉ」と感じている。 言うなれば,「JUnit + DbUnit + Cactus」な環境が標準で整備されている,ということだ。 JUnitについては,もちろんTest::Unitがそれに相...

約5時間かかったRuby on Railsの実行環境構築

ここ数日はJavaからほとんど離れて,Ruby on Railsのお勉強に多くの時間を割いている。確かにRoRがこんだけ騒がれる理由がわかる。railsの内部処理に踏み込むと宇宙な世界だが,railsの上でアプリケーションを書いて単体テストをしている分には,この上ない気持ちにさせてくれる。 しかし,RoRアプリの運用環境構築に5時間も苦戦するとは思わなかった。 RoRの運用環境は,現在では以下のパターンがあるらしい。細かく分ければ,もっと多くの組み合わせがあるだろう。 a...

S2Wicketをバージョンアップしました

何ヶ月ぶりかになるが, S2Wicketをバージョンアップした。数ヶ月苦しんだ機能追加ができあがったのではなく,いくつかのバグフィックスを施したのが今回の内容。S2Wicketを使ってくれている NAGASEYASUHiTOさんからのフィードバックを元に,不具合修正を行った。 [JIRA - S2Wicket] バージョン1.2.1のChangeLog 1人でOSSを作っていると,なかなかテストや動作確認を完璧に行うことは難しく,叩いてくれる利用者がいてこそ品質の向上が図れる(残念ながら...

Webブラウザの起動

「 Webブラウザコンポーネントの利用」エントリで紹介したように,EclipseプラグインのViewなどにBrowserコンポーネントを貼り付けることで,効果的なEclipseプラグインを低コストで開発することができるようになる。「〜clipseな技術」の第2弾として,Webブラウザの起動方法について紹介してみたい。 何らかのWebサービスを利用したEclipseプラグインでは,Webサービスの提供元のWebページをWebブラウザ(not Browserコンポーネント)でブラウジングした...

Webブラウザコンポーネントの利用 Part2

「 Webブラウザコンポーネントの利用」エントリで紹介したBrowserコンポーネントを使用すれば,低コストでリッチなEclipseプラグインを開発できる。しかし,嬉しいことばかりではない。このエントリでは,発生し得るいくつかの問題点と,その解決方法について紹介する。 万能に見えるBrowserコンポーネントだが,Webブラウザであること故のデメリットもちゃんと対処してあげなければならない。〜clipseで行っている対処として,以下のものがあげられる。 コンテキストメニ...

夏到来!

昨晩,家に帰ると玄関に「夏到来!」な文字があった。 普段嫌いな夏だけど,今年の夏は元気に乗りきれそうだ。

Webブラウザコンポーネントの利用

「〜clipseな技術」の第1段として,Webブラウザコンポーネントの利用方法について紹介する。 近年,Web2.0的なアプリケーションが数多く登場している。これを支えているのは,RESTなどによる軽量なWebサービスが次々と公開されているという事実であることについては,誰もが認めるところだろう。多くのWebサービスがWebブラウザ上で利用あるいはマッシュアップされることを前提として提供されている。つまり,Webブラウザ上,しかもJavaScriptとの親和性という点が重要である。 何...

Twitterアクセス制限に対応しました

Twitterが「1時間に70回」というアクセス制限を始めた。これに伴い、Twitterclipseも「10秒に1回の更新」を止め、「60秒に1回」(これは初期値で更新頻度は設定で変更可能)に変更を行った。 古いTwitterclipseのままだと、数分のうちに「400エラー」になってしまうので、ご利用の方は是非アップデートをお願いしたい。

Searchclipseのバグフィックスを行いました

修正点は以下の通り。 検索履歴が10個溜まってしまうと,新しいキーワードが履歴として含まれなくなってしまう不具合を修正。 キーワード入力フィールドの大きさを修正。 興味のある方はバージョンアップをして欲しい。 そろそろ「〜clipseな技術」のエントリを始めようと思っている。ちょっとしたテクニックで面白いプラグインを作ることができるんだぜ,的な内容にしていくつもりだ。

Twitterclipseをバージョンアップしました

変更点は以下の通り。 twitterサーバが返答したJSON内に含まれる日付のフォーマットが変更されたことへの対応。 「ぬるったー」「うまくいったー」「しくったー」機能の実装。 2つ目の機能追加は,Eclipse特有のものである。「ぬるったー」機能とは,何らかの理由でコンソールビューに「NullPointerException」が表示された際に,自分のステータスを自動的に「ぬるったー」に更新する機能である。「うまくいったー」「しくったー」機能は,JUn...

食中毒にご注意を

先週の水曜日に発熱し,木曜日の夜に至っては高熱で一睡もできなかった。お腹も下してしまい,体力がどんどん削がれていく。じっとしていることができず,関節や筋肉の痛みも徐々に増してくる。明らかにただの風邪ではない。 さすがに病院に行って診断してもらう。医者は言う。 「食中毒の疑いが強いです」 どうやら細菌の感染による急性胃腸炎ということらしい。時に高熱が出ることがあるらしく,血液検査についても炎症反応があるために,ほぼ間違いないとのこと。2時間ほど点滴を受けながら,その間にお腹のエコー検査などを...

脳内イメージ

脳内メーカーを早速試してみる。 愛だろ、愛。

JSUG勉強会Vol.4に参加してきました

Japan SpringFramework User Groupの 第4回勉強会に参加してきた。ミニレポートをエントリしてみたいと思う。 [JavaOne2007報告] 日立の河村さんのプレゼン。これは5月30日に行われたJavaOne2007報告会で行われたプレゼンとほぼそのままだったので,聞くのは僕個人的には2回目。 前にエントリした通りの内容なので,そちらを参照のこと。 2回目を聞いた感想としては,やはりglassfish v3はやっとかないとあかんな,と。あとJavaOne報告会で...

第一回チキチキ 甘い物食べにいこーぜ!! に参加しました

昨日,さくらばさんとヨシオリさんと僕の3人で, java-ja 2.5と題して新宿タカノフルーツパーラーにスイーツを食してきた。 僕が食べたのは,マンゴーのパフェとワッフルのセット。そしてレモンアイスティー付き。税込1,470円だった。 甘いものは比較的好きな方であり,あっという間に胃袋に消えていった。 女性が含まれていれば,フルーツバーに入ることができて,食べ放題になるらしい。今度,嫁を連れていきたいな,と。 帰りの途中に「Personal Javaってあったよね」とか「Ja...

もうブラウザ増やさないで〜!

昨日開幕したWWDC(Worldwide Developers Conference)で,米Appleのスティーブ・ジョブス氏により,Webブラウザ「Safari」のWindows版が発表され,Public Betaが公開された。 Safari 3 Public Beta - Apple 「あぁ,またテストしなくちゃいけないプラットフォームが増えてしまう。」って思ったWebアプリケーション開発者は,それはそれは多いことだろう。僕もそのうちの1人。 今日では,Webブラウザは早ければいいっ...

JavaでもC++でもLLでもない僕の選択肢

昨日、久々にDelphiで遊んでみた。僕は、DelphiのVer.1からのユーザ。最近のDelphiは「Turbo Delphi」という名前で公開されていて、「 Turbo Delphi 2006 Explorer」が無償版である。 動的言語もいいが、WindowsでしかもGUIを伴ってexeさえ置けばオッケー、なんてツールは、僕にとってはDelphiで作るのが一番手っ取り早い。Object Pascal(今はDelphi言語って呼ぶらしいけど)についても、JavaやLLとは二味くらい...

JavaOne2007報告会に行ってきました

去る5月30日にJavaOne2007報告会がSun用賀で行われ,それに参加してきた。途中からの参加だったので,JavaSEについての岡崎さんのプレゼンは聞くことができず,その後のJavaEEについての動向のプレゼンから聞くことができた。 まず,やはり注目を集めていたのは,JavaFX。RIA向けの製品ということで,JavaFX MobileやJavaFX Scriptが中心だったらしいが,JavaFX EEという言葉もプレゼンの中で出てきていたのは面白い。それがプレゼン者の造語なのか実際...

Searchclipseに履歴機能を追加しました

Eclipseに検索窓を設置できるSearchclipseに機能追加をまたまた行った。 入力したキーワードを履歴として10個記憶し,[Page Up]と[Page Down]キーで履歴を取り出せるようにした。 [Shift]+[F4]キーでフォーカスをキーワード入力フィールドに移動させる際に,エディタで選択されている文字列をキーワードとして入力フィールドにセットするようにした。 我ながら,キーワード履歴は結構便利な機能だと思う。ぜひバージョンアップして...

Google Gearsをとりあえず勘違いしてませんか?

先日,Googleから「Google Gears」とGoogle ReaderのGears対応が発表された。これに伴い,「GoogleがオフラインでAjaxアプリを使えるようになる技術を発表」と各メディアはこぞって伝えている。 しかし,なんか勘違いしていないか?「オフラインでAjaxアプリを使えるようになる技術」は誇張された表現じゃないか? もともとGoogleがGearsを作ってGoogle Readerに適用した動機として,「地下鉄に乗っているときなどネットワークが不安定(ぶちぶち切れ...

動的言語やrails系に走る理由

Ruby on Railsという言葉は誰しも知っている状況であり,さらにJava言語を推進してきたSunでさえJRubyを担ぎ出す今日。米国ではPythonで書かれた大規模サイトがスピード感を持って次々と登場してきている。昔からちょっとしたWebサイトにPHPやPerlといったスクリプト言語は広く使われてきたが,RubyやPythonによって,スクリプト系言語,つまりLLの印象は多くの開発者にとって大きく変わった。 LLがなぜこんなにももてはやされ,そして採用され始めているのか。大きく2つ...

aptを使ってみようかな

アノテーションによってコンポーネント構築を目論んだ次期S2Wicketだが,いくつかエントリした通り,芳しくない結果に終わってしまった。助けてエントリをしてみるも,とてもありがたい「頑張ってください」エールはいくつか頂けたものの,具体的な解決策を得るまでに至らなかった。 もっと別の何かを閃くことができれば,忘れることができるだろう。しかし,思いついたことといえば,TwitterclipseだったりSearchclipseだったり。S2Wicketについては,未解決で終わった問題領域を悶々と...

Searchclipseを更にバージョンアップ

またまたSearchclipseをほんのちょっとバージョンアップした。今回は機能追加を2つ行っている。 [SHIFT]+[↑]または[SHIFT]+[↓]キーで,検索サイトの選択を切り替える。 [ESC]キーで,アクティブなエディタまたはビューにフォーカスを移動する。 「キーワード入力フィールドへのフォーカス移動をショートカットキーで行えるのに,検索サイトの選択をマウスでしないといけない」という使い勝手の悪さを解決するのが,今回の機能拡張の目的である。...

Searchclipseもちょこっとバージョンアップ

Searchclipseをより使いやすくするための修正を行った。修正点は以下の2つ。 [Shift]+[F4]キーで,キーワード入力フィールドにフォーカスが移動する機能を追加。 内部ブラウザを開いたときに,入力されたキーワードをタイトルにセットするように修正。 Searchclipseをお使いの方は,ぜひバージョンアップしていただきたい。

Lingrclipseをちょこっとバージョンアップ

いままでLingrclipseを使っていただいてきた皆さんはご存じかと思うが,今までLingrclipseでlingrにログインすることができなくなっていた。 原因は,APIのRoomにtimezone属性が追加されたこと。今のLingrclipseは,APIとJavaBeansクラスの形が完全に一致しないと例外を吐いてしまう。とりあえず,timezoneに対応したlingrclipse-core(1.3.1)を公開したので,lingrclipseをお使いの方はぜひバージョンアップしていた...

macが退院

「 macが要入院・・・」エントリで紹介した通り,macがこのほど入院してしまったのだが,思っていたよりもかなり早く,今日僕の手元に戻ってきた。修理内容は, 左右のファンの交換 I/Oボードの交換 バッテリの交換 という感じ。ロジックボードの交換はなかった。 今のところ,ちゃんと稼働している。放熱の効率が良くなることを期待していたが,筐体がすっごく熱くなるのは変化なし。残念。 それにしても,福○通運さん,住所に強くなっていただきたい...

Searchclipseをバージョンアップ!

Eclipseに検索窓を設置してくれるSearchclipse,さっそくバージョンアップを行ってみた。修正点は2つ。 キーワードをURLエンコードする際の文字コードを指定可能にした。 ブラウザ起動後に,入力したキーワードを消すか残しておくかを設定可能とした。 細かな点だが,使い勝手やサイト登録の可能性が広がるはずである。ぜひバージョンアップして欲しい。

macが要入院・・・

先週から、macの調子が悪い。 バッテリの残量が40%~50%付近になると、いきなりシャットダウン。今日はもっとひどく、残量が80%くらいあるのに、何の前触れもなく電源が遮断される。怖くて何もできない。 アップルのサポセンに電話したところ、バッテリもしくはロジックボードの不具合だろうということだった。バッテリを取り替えて様子を見るかどうか聞かれたが、この際なので入院させてしっかり診てもらうことにした。明後日、僕の手から旅立つ予定。 何かしてしまった自覚が全くないのだが、ググってみると同じ症...

最近のパナップ

昔は白地にストロベリーの丸が3つあっただけだったが,今は。。。 スマイル!!:)

Searchclipse公開開始!

Rimoclipse,Lingrclipse,Twitterclipseと,どちらかというと生産性を低下させてしまうEclipseプラグインを開発してきたが,「〜clipse」シリーズ第4段として,Searchclipseの公開を開始した。 Searchclipseは,FirefoxやIE7に搭載されている検索バーのようなものだ。 検索サイトとして,インストール直後はGoogleやWikipedia,Exciteの翻訳サイトを登録してある。 検索サイトは,設定画面上で追加することが...

電車内でプログラムなどをするための9つのコツ

java-jaの知り合いに頼まれたエントリ。それは「電車の中でのプログラミングのコツについて」。 僕はここ2,3年,電車や飛行機の中でプログラミングや記事(雑誌やブログなど)の執筆をすることが非常に多い。というか,毎日電車の中でパソコンを開いて,何かしらやっている。このエントリも,宇都宮線の中で書いている。 最近いくつか「〜clipse」というネーミングのEclipseプラグインを開発して公開した。今日もSearchclipseを作って公開を開始したのだが,これらの開発はほぼ完全に電車の中...

Docomo2.0ってどうよ

最近テレビCMで多く流されている「Docomo2.0」。まだ秘密らしく,その詳細はベールに包まれている。しかし,Docomo2.0というネーミングが前面に押し出されていることについて,僕は非常にやるせない気持ちになってしまった。 勝手な推測であるが,Docomo2.0というネーミング,これは間違いなく「Web2.0」を真似た表現だろう。特にIT業界やマーケティング業界において,Web2.0という言葉はもはや一般的な単語である。Docomo2.0と聞いて,「あ,Web2.0を真似たな」と思う...

RISC OSって知ってますか?

何気なく今日Blogのアクセスログを見ていると、聞いたことのないOS名を発見。 RISC OS?RISCチップに最適化されたOSか? Wikipediaで調べたら、 RISC OSは商用UNIXで、BSD系とSystemV系の両方があるらしい。MIPS社のUNIXマシン事業撤退に伴って、開発は凍結されたとある。 RISC OSはどんな画面だったかと興味が沸いたので、Googleイメージ検索を敢行。 全体的にグレー調でまとめられたウィンドウに、多色のアイコンが並んでいるのが特徴的。特...

動的プロキシが循環参照していた際のシリアライズ問題

S2Wicketの新仕様を実装する際に問題となった,動的プロキシのシリアライズ問題だが,ここで直面した問題を整理したいと思う。そのために,問題領域に限定したコードを作成したので,興味のある方,解決策を知ってるぜ!という方は,ぜひ ここからプロジェクトをダウンロードして欲しい。 では,問題の簡単な説明をしていこう。まず,SwingやSWTなどのコンポーネント関連のクラスでよく見られるコンポジットなクラス構造を想像する。 Componentクラスはparentフィールドに他のCompone...

Twitterclipseをバージョンアップしました

TwitterサービスをEclipseで利用するための「Twitterclipse」プラグインをバージョンアップした。 今回は,「@ユーザ名 ステータス」という書式で自分宛のステータスが受信されたときに,ダイアログを表示する機能を追加した。TwitterclipseをFast Viewで利用している場合に,ダイアログを表示するようにしておけば,自分宛のステータスを見逃さずに済むだろう。 是非バージョンアップされたし。 — 追記: 2007/05/16 CodeZineにて本エントリが...

クロージャの再帰処理

最近始めたGroovy。LLちっくな文法やメソッドが多く盛り込まれていて,非常に面白い。RubyかPythonに走ろうと思っていたが,やはり長年Javaをやってきた僕にとっては,Groovyが手に馴染みやすいのかもしれない。 さて,Groovyの文法において,Javaと比べて最も特徴的なものが,やはりクロージャではないかと思う。JavaSE7からクロージャがJava言語にも入るとか入らないとか議論されているが,Groovyではそんなクロージャをいち早く体感することができる。クロージャによ...

新S2Wicket仕様,断念

約2ヶ月間,Wicketをより使いやすくしようとチャレンジしてきたが,力及ばず断念することを判断した。 コンポーネントベース開発を採用しているWicketについて,コーディングの中心はコンポーネントの組み上げ処理であり,SwingやSWTなどのGUIアプリケーションと同じくらいの記述内容と記述量が求められる。コンポーネントの組み上げは「インスタンス生成」と「モデルとの関連付け」,そして「親コンポーネントへの登録」処理の連続であり,共通的に見える割には共通化が難しく,できあがったコードは非常...

Twitterclipseをバージョンアップしました

先日公開を開始した Twitterclipseだが,さっそくバージョンアップを行った。修正点は以下の通り。 IE6で動作させた際にスクリプトエラーが発生してしまう不具合を修正。 サーバチェック後に毎回表示のリフレッシュがかかってしまう現象を回避するように修正。 ステータスの表示を更新日付でソートされるように修正。 ユーザ名の表示を設定されたURL(Blogなど)へのリンクに変更。 表示文字列中...

Twitterclipse公開中!

自分が何をしているのか?友達や知り合いが何しているのか?こんなことを共有して楽しもうというサービスが, twitterである。そんなtwitterを,例のごとくEclipseから利用できるように,プラグインを開発した。その名も,twitterclipse。 eisbahn.jpのアップデートサイト(http://www.eisbahn.jp/update-site/)にtwitterclipseを配置しているので,Eclipse上でインストールを行うことができる。 機能としては, ...

怒りと共にlingrclipseをバージョンアップ

先ほど,lingrclipse-coreを1.3.0にバージョンアップした。昨日あたりからlingrclipseを使ってLingrサービスに入室ができなくなっているはずなので,ぜひすぐにバージョンアップを行って欲しい。 今回の修正は,LingrのAPIに変更が生じたために必要となった。具体的には,Room情報にcreated_at属性(たぶんそのルームが作られた日時)が追加された結果,JSONからJavaBeanへのマッピングに失敗してしまうことが修正理由である。現状の作りは,JSONに含...

動的プロキシをシリアライズする具体的方法

「 Javassistを使った動的プロキシの作成」エントリと「 替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()」エントリを組み合わせると,実行時にその場で作った動的プロキシクラスを元にnewしたインスタンスをシリアライズし,異なるJavaVMプロセスにてデシリアライズできるようになる。今回はその具体的な方法を紹介しよう。 まずは,動的プロキシの対象となる抽象クラスを以下とする。これは「 Javassistを使った動的プロキシの作成」で取り上...

OLAPで脳みそ多次元

とある理由で情報の統計・分析についてのお勉強をすることに。うーん、なんで今まで避けて通ってきたんだろう、と思うくらい、なかなか面白い。 キーワードだけでも、 OLAP、OLTP 多次元データベース データマイニング データマート データウェアハウス VLDB スライシング ドリリング ドリルアップ、ドリルダウン ...

替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()

今回は「 動的プロキシとシリアライズ」エントリで取り上げた通り,writeReplace()メソッドとreadResolve()メソッドの使い方について紹介してみようと思う。 あるオブジェクトをシリアライズしたくなったとする。しかし,時として,そのオブジェクトをそのままシリアライズすることができない理由が出てきたりする。そのままシリアライズしてしまうとサイズが非常に大きくなってしまう,などがすぐに思い付く代表例だろう。その場合,シリアライズしたい情報を自分で決定し,さらに情報を加工するな...

Javassistを使った動的プロキシの作成

前回の「 動的プロキシとシリアライズ」エントリで紹介した通り,今回はその第一歩として,Javassistを使って動的プロキシを作成するための方法を紹介してみようと思う。 Javassistは,動的プロキシを作成するためのライブラリというよりは,バイトコードを操作するためのライブラリである。とは言っても,バイトコードに対する低レベルな処理は,Javassistに完全にお任せで大丈夫である。JavassistのAPIを使っている限りでは,バイトコードに関する知識はほぼ0で良い。Javassi...

動的プロキシとシリアライズ

一般的なDIコンテナに大抵標準装備されている機能に,AOPがある。例えば,あるオブジェクトのあるメソッドが呼び出された際に,そのメソッドを処理する前に何らかの処理を挟み込む,などがAOPである。この機構を実現するためには,動的プロキシと呼ばれる機能が必要となる。 デザインパターンのProxyパターンは,あるオブジェクトと同等のインタフェースを持つProxyクラスを作成し,そのProxyクラスの中から本来のオブジェクトを呼びだすようにする。クライアントは本来のオブジェクトを触っている感覚なの...

第1回java-jaミーティング大成功!

4月13日の金曜日, java-jaの 第1回ミーティングが行われた。下はその様子。実際にはもう少し人が増えて,20人近い人に来ていただいた。ちなみに,幽霊のような残像が,java-ja発起人の yoshioriさん。 まず,会場の提供と準備&後片づけをしてくださった ATL Systemsの皆さん, アークランプゆーすけさんに感謝の意を述べたい。今後も素敵なラウンジをお借りできると,とっても嬉しい。 さて,第1回の内容は こんな感じ。親睦がメインな目的だった割には,自分も含め真面目な...

天使やカイザーの次は・・・

まさか「ラオウ」とは・・(w 「 Java-jaミーティングに行ってきました」- じゃばてな 生産性低下の神様は私の中では身長185センチ、体重90キロ、というのを想像していましたごめんなさい。どういうわけか世紀末覇者的な方かと思っていましたごめんなさい。 Biographyのページに,身長と体重,全体写真(2007/04/14時点)を載せることにより,少なくとも外見は「ラオウ」ではないことがわかるようにしておこう。

今週は海外に行ってきます

2日から6日まで,新婚旅行でケアンズ(オーストラリア)に行ってくる。ほぼ全員に, 「PCを持って行く」=「成田離婚」 と言われているが,そう言われると余計に持っていきたくなるのが男というもの。ま,飛行機の中とか空港での待ち時間とかいろいろとあるので。 ホテルの部屋はネットが使えるらしいしかし,ネットにつなぐのが夜になるのは確実。すぐに返事を返すのは無理だが,何かあればメールをしておいて欲しい。海を見ながらOSSのコーディングをしたいが,うーん,それこそ離婚になってしまうので,自粛予定。 お...

lingrclipseのちょこっとした機能拡張

LingrをEclipse上で使用できるようになる Lingrclipseに,以下のちょこっとした機能拡張を施した。 入室時のパスワード指定。 メッセージの「画像表示」「YouTube表示」「リンク表示」「顔文字表示」に対応。 開発時には外部に漏らしたくないことを話すこともあるだろう。ま,Lingr自体そういった機密情報の話に向いているかというと非常に疑問だが,例えば仲間だけを入室可能にしたいとかの時には,ルームにパスワードをつけることができる。今回の...

次期S2Wicketではこうなります Part2

前のエントリで, S2Wicketの今後の方向性として,以下のコードを示した。 public class HelloWorldPage extends WebPage { @WicketModel private LabelModel helloModel; @WicketComponent private Label hello; @WicketComponent private Link link; @SeasarComponent private HelloService hell...

インスタンスフィールドが勝手に上書きされる!?

さて,以下の抽象クラスがあったとする。これは,コンストラクタの中からfoo()メソッドを呼び出すが,foo()メソッドはサブクラスで実装を提供することを意味している。 abstract class C1 { C1() { foo(); } abstract void foo(); } そして,上記のクラスを継承した下記のクラスがあったとする。ここでは,インスタンスフィールドvalueを宣言し,宣言と同時に値1を代入するように記述している。コンストラクタ内でvalue値を表示し,foo(...

Lingrclipseに通知機能を追加しました

Lingrclipseに,通知機能を追加してみた。新しいバージョンは,lingrclipse-view 1.3.0である。 通知機能とは何かと言うと,Lingrclipseのビューが隠れていた時,例えばFast Viewにしていたとか,他のビューをアクティブにしていたときとかに,入室したルームで誰かが発言をしたことがわかるようにした,ということである。 具体的には,Eclipseの下部のステータスバーに,通常だと, というアイコンが表示されるが,もし誰かが発言したときにビューが表に出て...

次期S2Wicketではこうなります

前のエントリでちょっと触れた S2Wicketの方向性。現在,考えていることが実際に実現可能かどうかを検証している段階である。で,とりあえず次期S2Wicketを使うと,これがこーなります,というコードを掲載しよう。 例えば, public class HelloWorldPage extends WebPage { private LabelModel model; private Label hello; private Link link; @SeasarComponent pr...

Wicketへの挑戦 〜S2Wicketの次なる野望〜(大げさ)

Wicketは,WebアプリケーションをSwingなどに代表されるGUIアプリケーションと同じように開発することができるようにと考え出されたフレームワークである。機構自体は非常に複雑だが,その複雑さは表には一切出てこない。 コンポーネントベースという点ではJSFと同じだが,JSFは拡張性やVisualな開発ツールを意識するあまり,APIセットがプログラマに全くもって親しくない。そして,結局JSPをデフォルトとして採用しているため,相変わらず開発メンバーのロールをはっきりとすることができなく...

ご依頼の修正を行いました

java-jaにて,ある方からLingrclipseに以下の修正願いを頂いた。 メッセージの字を小さくして欲しい(上司に見つからないように) 参加者のアイコン画像を表示しないようにして欲しい(上司に見つからないように) さっそく上記2つの修正を行ってみた。 IEでも程よい大きさの文字にしたつもりなので,まともに利用して頂けるようになったと思う。あと,Viewの右上にあるボタンで,アイコンを表示するかどうかを切り替えられるようにした。すでに受...

Lingrclipseに認証機能を追加しました

先日公開したLingrclipseだが,さっそくバージョンアップを行ってみた。 追加機能は,認証機能である。Lingrにアカウント持っている人は,予め設定(Preference)画面にてメルアドとパスワードを入力しておけば,入室時にLingrにログインされる。もちろん,退室時にはログアウトも行われる。それだけ。 この認証機能,Lingrのヘビーユーザは真っ先に欲しいと思う機能のようだ(僕も思ってたけど)。びっくりしたことに, 「 スゲーっすよ Eclipse の lingr プラグイン...

Lingrclipseの公開を始めました

AjaxとCometによるリアルタイムなチャットサービスが, Lingrである。そのEclipseプラグインを開発してみた。その名も「Lingrclipse」。eisbahn.jpのアップデートサイトにてLingrclipseの公開を先ほどから開始した。 eisbahn.jp アップデートサイト http://www.eisbahn.jp/update-site/ 上記アップデートサイトから,下記のプラグインをインストールすると,Lingrclipseを使用することが可能になる...

Rimoclipseは後始末が必要だった

さっそくだが,知り合いのブログのエントリより。 「 Eclipse のプラグインは超簡単にできるよ」- Yoshioriの日記 Eclipseのプラグインは超簡単に作れます!! いや、マジで。 その通り。特に「画像を表示する」「Webページを表示する」「何か一覧を表示する」ようなViewを作りたいだけだったら,BrowserコンポーネントやCanvasコンポーネント,TableコンポーネントなどのSWTコンポーネントの使い方をAPIドキュメントなどで把握するだけで,あとはウィ...

今日もPythonは僕に冷たい

ちょっと興味が出てきたので,軽くテスト。 Python 2.3.5 (#1, Jan 13 2006, 20:13:11) [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin Type “help”, “copyright”, “credits” or “license” for more information. class Foo(object): … def p(self): …...

僕がPythonでなくRubyを選んだ理由

Welcome to Darwin! beloved:~ yoichiro$ irb irb(main):001:0> print “test” test=> nil irb(main):002:0> quit beloved:~ yoichiro$ python Python 2.3.5 (#1, Jan 13 2006, 20:13:11) [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin Type...

僕のRuby第一歩目

誠に恥ずかしながら,今日初めてRubyコードを書いた。 Weclome to Darwin! beloved:~ yoichiro$ irb irb(main):001:0> print “test” test=> nil irb(main):002:0> “Hello world!”ではなく,”Hello Ruby!”でもなく,”test”。 うーん,センスなし。orz

「冪等」って読めますか?

2007年2月23日に, Lingr APIにいくつかの 機能追加が行われた(現時点の最新のAPIは 3月6日リリースのもの)。その中で, The room.enter method now supports a new idempotent parameter. というものがある。「idempotent」って何だろうか。さっそく ググると,「冪等(idempotent)」というような言葉が多くヒットする。 ん?初めて見る漢字。まず,読めない。しかも,漢字からその意味を全く推測...

Rimo開発日記はじまる

Rimoclipseでお送りするRimoサービスの開発日記が始まった 「 戻るボタンを付けました」- Rimo(リィモ)開発日記 番組をスキップしすぎたとき前の番組に戻れるように「戻るボタン」を付けました。 Rimoに追加される機能は,Rimoclipseでもそのまま有効となるはずだ。なぜなら,Browserコンポーネントに貼り付けているだけなので。。。 どこかに「GyaoよりもRimoの方が閲覧者が多いらしい」と書かれていたが,スタンスがまるで違うサービスなので単純に比較する...

僕が考えるAOPの適用ポリシー

「 Javaナイトセミナー(Vol.3)」で宿題(?)だった「AOPの適用」について,僕なりの意見を以下に述べようと思う。 AOPはトランザクションやロギング,ベースとなる機構で必要な前処理などを適用することが代表例なのは揺るぎのない事実だろう。そして,AOPのこれらの処理に対する適用は,プログラマからテクニカルで毎度毎度のお決まりコーディングを削減することができ,さらに継承やTemplateパターンなどを駆使することなく前処理を実行できるため,対象のクラスを汚す必要がない(何らかのクラス...

Javaナイトセミナー(Vol.3)に参加してきました

27日にSun用賀で行われた「 Javaナイトセミナー(Vol.3)」に参加をしてきた。 題材はSpring Framework2.0の新機能の紹介。ビールで乾杯から始まるセミナーは,いやでもノリ♪なテンションになり,雰囲気はとても良かった。講師の方はとても面白く,しかし聴衆からの質問には冗談を交えながらもポイントをしっかり突いた回答で,さすがだなぁと思いっぱなしだった。僕は対人恐怖症なため,真似はできない。誰も信じてくれないけど。。。 来ている人々は,スーツ姿が結構な割合を占めていた。ま...

今日の服装

気軽に声をかけてください。対人恐怖症ですが,頑張ります。

JRは点検してんのか!?

今日の20時25分頃,宇都宮線の小山駅で信号トラブルが発生。その結果,2時間半以上も電車は止まることになってしまった。もう一度言う。2時間半もだ。20時30分に出発した人は,家に到着するのは少なくとも22時30分を過ぎる。 システムというものは,ダウンタイムが少なければ少ないほど良い。もちろんダウンしないシステムなど存在しないので,冗長にしたり,ダウンする前に交換する,などの工夫を施しながら,ダウンをできるだけ避ける努力をする。性善説ではなく,性悪説が基本だ。 しかし,JRのトラブルは酷い...

TranslationViewプラグイン1.1.4リリース!

Eclipse上で翻訳を行うプラグインである「 TranslationView」プラグインを1.1.4にバージョンアップした。今回は, 翻訳前,翻訳結果のテキストボックス内でCtrl+Vなどをしたときの不具合修正 翻訳結果を持つレスポンスの文字コード指定を追加 の2点を機能追加した( ここに投稿された依頼より)。 Excite翻訳でしか確認していないのだが,どうも他の翻訳サイトを利用したときに,レスポンスの解析に失敗して文字化けしてしまうらしい。文字コ...

tarのエントリは100文字まで?

自宅のサーバのバックアップスクリプトを作成しようとして,Antのビルドスクリプトを着々と書いていた。特にCVSのリポジトリは多くのファイルがあるため,tar形式でファイル群を1つにまとめようと思い,tarタスクを書いた。 … … いざ実行してみると,ほとんどのファイルがtarに入れられず,エラーになってしまった。 [tar] Entry: yoichiro.eclipse.plugins.translationview/src/〜/internal/ui/messages.p...

S2Wicket1.2.0リリースしました

WicketとSeasar2を統合する S2Wicketだが,先ほどVersion 1.2.0をリリースした。 今回のリリースでは,パッケージ名とクラス名,そしてフィールド名について,正規表現でパターンを与え,それに一致するフィールドをインジェクション対象とするFieldNamePatternFieldFilterフィールドフィルタ実装クラスを新たに提供している。これを利用することによって,@SeasarComponentアノテーションすら書かなくても,規約に従ってインジェクションが施され...

maven2のsiteゴールで自作ページを追加する

maven2のsiteゴールは,標準Webページや各種レポートの出力により,プロジェクトの情報共有を行うためのWebページを簡単に生成することができる。もちろんこれだけでも十分魅力的なのだが,特にオープンソースなライブラリなどを開発するプロジェクトであれば,そのライブラリの使用方法やチュートリアル,ダウンロードページなどを追加して,siteゴールのみでコンテンツ全てを賄いたくなってくるだろう。今回は,siteゴールで自作のWebページを追加する方法を紹介しようと思う。 まずは,siteゴ...

Rimoclipseでウキウキプログラミング

はてなが新しく公開を始めたサービス,それが「 Rimo」である。現在は, YouTubeの人気動画を集めてテレビ化されている。 特に意味はないのだが,Rimoを見ながらプログラミングができるよう,Eclipseプラグインを作成してみた。 その名も「Rimoclipse」。 eisbahn.jpのアップデートサイト「http://www.eisbahn.jp/update-site/」からインストールすることができる。Eclipseの対象バージョンは3.1以上とした。インストール後,「Win...

Wicket好きはコーティング好き?

Wicketの特徴として「Javaで何でも書くことにより,Javaプログラマが生き返る」ということがある。これは確かにそのとおり。特にJDK1.1の頃からJavaに携わっている開発者にとって,Wicketでアプリケーションをコーディングした結果は,あの頃のGUIアプリケーションに非常に近い。近年の多くのWebアプリケーションに比べて,自分の時代が戻ってきた!という感覚を開発者は持つだろう(Webアプリしか知らない人には体感できないかも)。 ただしこれは「アプリケーションの記述言語としてJa...

maven2のsiteゴールによるレポートの出力

maven2によって管理されているプロジェクトは,siteゴールを使用することによって,さまざまな情報をWebページとして自動的に出力することができる。これについては,「 maven2のsiteゴールによる標準Webページの出力」エントリで紹介した。今回は,プロジェクトの成果物に関する各種レポートをWebページとして出力するための方法を紹介してみよう。 Javaソフトウェア開発では,ソースコードを元にしてさまざまな2次的成果物を作成することになる。コンパイラによるclassファイルの生成...

Judeで屏風にER図を描いた

ついにJudeでER図が描けるようになった。 「 JUDEのER図,できました!」 - An Agile Way 今後、UMLとERとマインドマップを交えた、新しい方法論にチャレンジしますので、ご期待ください! さっそく使ってみた。使用感は,ERWinに近い気がする。僕はERWinに慣れているので,非常に描きやすい。 今日では,データベースアクセスを行う際には必ずと言っていいほどO/Rマッピングを行うため,ER図の中のエンティティからクラス図の中のクラスへ,そしてその逆へ,ハイ...

maven2のsiteゴールによる標準Webページの出力

ソフトウェアを構成するファイル群やそれらに対するコンパイルやパッケージング,依存関係などを管理してくれるmaven2。プロジェクトに存在するさまざまな情報や処理結果をチームで共有することが開発に必要なのは明らかであり,多くの場合はそのプロジェクト用にWebページを構築して情報をチームメンバーに公開することが行われる。しかし,Webページの更新作業について,手作業ではなかなか難しく,ついつい更新が滞ってしまうことが多くのプロジェクトで見られる。アジャイルやイテレーティブな開発プロセスを採用し...

Javaナイトセミナー参加表明

来る2月27日に,Sun用賀で「Javaナイトセミナー (Vol.3)」が開催される。 Javaナイトセミナー (Vol.3) 〜Spring Framework 2.0:   デファクトスタンダードDIコンテナの現在と未来〜 あまり(というか全くと言っていい程)こういうセミナーに参加してこなかったのだが, java-jaで出会った人に実際に会えるかもしれないということもあり,超重い腰を上げて参加しようと思っている。Spring2.0も気になるところだが,いろんな人々と話をすることで刺激...

「java-ja」には気軽なJavaが待っている

現在はJavaが利用言語トップ3に陣取るIT業界であるが,10年前はJavaと言えば少数派だった。「Javaをやってます」と言えば,「おぉ,先進的ですねぇ」なんて言われたものだ。 今思うと,Javaは登場の最初からコミュニティが支えてきたのではないかと思う。ほとんどのJava牽引者は,最大のコミュニティであったJavaHouse-MLをホームグラウンドとして活動を行い,Q&Aを日々蓄積し,その結果Java人口が増えていった。その成果は,Topicとしてまとめられている。まさにコミュ...

S2Wicket1.1.0リリース!

WicketからSeasar2を利用するための S2Wicketのバージョン1.1.0を本日リリースした。 1.0.0では,@SeasarComponentアノテーションをフィールドに付与することによって,インジェクション対象としていた。1.1.0ではそれを進化させ,どのフィールドをインジェクション対象にするかを判断するロジック(フィールドフィルタ)を,アプリケーション開発者が自作して登録することができるようにした。つまり,インジェクション対象のフィールドをどれにするかという規約を定義する...

結婚しました

2007年2月3日に婚姻届を某市役所に提出し,晴れて結婚いたしました。 これもひとえに皆さんのお力添えがあってのことです。今後はより一層このIT業界に貢献できるよう,頑張る所存でございます。 しかし,今朝すがすがしい気持ちで仕事を始めようとした矢先に,市役所から電話が入る。 「新しい本籍が書かれていませんので,書きに来てください」 現在,僕は結婚しているのか,まだ独身なのか・・・。これぞグレーゾーン。orz

S2Wicket1.0.0公開!

seasar.orgにて, S2Wicket 1.0.0をリリースした。 これは,wicket-seasarとして先日公開したライブラリを,Seasarブランドに仕立て直して再公開したものである。主な変更点は,プロダクト名の変更,パッケージ名の変更,それに伴うサイトの文面の変更があげられる。ソースコードに関しては,パッケージ名以外は変更していない。 とりあえずこれでwicket-springと表面的には肩を並べたわけだが,S2の冠を受けたからには,更なる機能追加をしていかなければならない。...

wicket-seasarはS2Wicketに生まれ変わります

「早!,もうかよ」と思うだろうが,先日公開したWicketとSeasar2の統合ライブラリは,S2Wicketとして公開し直すことにした。seasar.orgからの承認も得て,近日中に http://www.seasar.org/の中にサイトも移行する予定。wicket-seasarは,Seasarブランドの仲間入りをすることになる。移行後は,http://s2wicket.sandbox.seasar.org/ がS2WicketプロジェクトのサイトURLとなる。 それに伴う作業を現在行...

WicketとSeasarを統合するwicket-seasarを公開!

Wicketは,POHPソリューションの代表として今後広く普及するであろうフレームワークである。そして,WicketでDIコンテナの恩恵を受けるために,Spring Frameworkとの統合を行う拡張ライブラリ(wicket-spring)も提供されている。 最近,僕の回りではSpring Frameworkよりも,Seasar2をDIコンテナとして採用する事例がとても多い。さらに,以下のようなエントリを見つけてしまった。 「 Webアプリ作成前に考えたこと」 - めそらぼ - meso...

アプリケーションコードとフレームワークと単体テスト

「 フレークワークに依存しないっていうけどさ」 - ひがやすをblog アプリケーションのコードは、フレームワークに依存せずに済ませられるなら、それに越したことはありませんが、依存して楽できるなら別にいいんじゃないのというのが私の考え。 フレームワークに依存した状態で,更に「それに対する単体テストコードの記述の敷居が高くならなければ(※)」フレームワークに依存したコードを記述することを選択することが最もハッピー。 但し,多くのプロジェクトでは,「※」の条件をクリアすることは実装...

Wicket2は凄そうだ

2007年1月14日時点での,Wicket1.2からWicket2.0への変更点について,以下のURLのページで発表されている。 Migrate-2.0 - Wicket wiki 要約すると,以下のような感じである。英語は苦手なので間違っている箇所があると思うが,構わずに掲載してしまおう。 JavaSE5以上が必須になる。 onAttach()の親実装を先に,onDetach()の親実装を最後に呼び出すように推奨される。 Gen...

DIコンテナの設定ファイル書くの?書かないの?

DIコンテナの設定情報,つまり「オブジェクトの依存関係」や「オブジェクトの設定内容」について,規約重視で暗黙のものとするか,ファイルに記述することで形式のものとするかは,個々人によって主張が異なるようである。何が何でも設定ファイルを書かない,あるいは,何が何でも設定ファイルを書く,といった「原理主義者」も多く,多くの場合は彼らの説明に「コンテキスト」が含まれない。よって,主張を聞いても,実際に何らかのDIコンテナを使う際をイメージした場合,その主張に沿う部分と沿わない部分が僕個人の中で発生...

怪我人続出!?

日本が価値点向上に乗り出した。 「 体操高難度の演技にボーナス点付加を設定」 - 日刊スポーツ アテネ五輪までの体操は,C難度やD難度の技の組み合わせによって全体の価値点を上げ,その完成度が評価された。つまり,単発の大技を出しても,高得点に直接結びつかない。それは,アテネ五輪での中野大輔選手の平行棒種目別決勝の演技に対する評価が表していた。 しかし,現行のルールでは,姿勢欠点などの減点の割合が,全体の演技価値点と比べて,とても低いように感じる。多少姿勢が崩れても,難しい演技をやったほうが高...

Shale Remotingを使ったファイルアップロードの方法

java.sun.comから,こんな記事が掲載されている。 「 Accessing Resources From JavaServer Faces Custom Components」 - java.sun.com JSFのカスタムコンポーネントで,Ajaxによるファイルアップロード系の処理をするためにShale RemotingやDojoを使った例である。全体のコードが掲載されておらず,ポイントしかわからないかもしれない。もし全コードを見渡したい人は,「 Java PetStore 2....

WicketとSpringFrameworkの連携

WicketはPOHPのソリューションとして非常に素晴らしいが,やはりUIに対するライブラリであり,ビジネスロジックに関してはDIコンテナを採用してAOPなどの恩恵を受けることが今日の開発スタイルにマッチすると考えられる。 Wicketでは,DIコンテナであるSpringFrameworkと連携するための2つの方法を提供している。 ApplicationオブジェクトにDIコンテナ管理下のオブジェクトをセッターインジェクションして,各WebPageオブジェクトからgetし...

携帯サイト向けにWicketを使う

携帯端末向けにアプリケーションを開発する場合,作成するコンテンツが小さいために,とにかく余計な記述なしにサクサク開発をしたいと考えるだろう。XHTMLでページを作成していけるソリューションを採用すれば,さらに開発効率は向上するはずだ。そう,Wicketの出番となる。 ただし,WicketはもちろんFirefoxやIEなどのWebブラウザを標準のターゲットにしているために,そのままでは不都合がいくつか存在する。 まず,Wicketの標準では,Webブラウザのマルチウィンドウ対応を行うため...

WebSphere+commons-logging+log4jは使い物にならない

IBM WebSphere6.1(WAS)とBEA Weblogic9.2(WL)のどちらを採用するかを検証する機会が昨年あった。政治的な理由でWASに大きく傾きかけていたのだが,致命的な問題がWASに存在することが発見された。 それは,commons-loggingとlog4jの組み合わせをWebアプリケーションで使っていた場合に,WLやTomcatの場合と比べて,出力ログパターンによって処理性能が著しく低下するというもの。具体的には,「%C」「%M」といった,保守や不具合の原因の発見...

不快なCM

箱根駅伝を見ていると,かなり高い頻度でサッポロビールのCMが流れてくる。 「 ないものは,つくるしかない。」 - サッポロビール 同じ言葉を何度も何度も連呼される。なんか自分が洗脳されかけている気がして,不快だ。

TranslationViewプラグインをバージョンアップしました

Eclipse上で翻訳を行うプラグインである「 TranslationView」プラグインを1.1.3にバージョンアップした。今回は, 翻訳結果で「全て選択」機能(Ctrl+A)を追加 翻訳要求時のパラメータの文字コード指定を追加 の2点を機能追加した( ここに投稿された依頼より)。 個人的には, Exciteの翻訳サイトでしか動作確認していないのだが,Yahoo!翻訳などではMS932ではなく,UTF-8でパラメータを送らないといけないらしい。そこで...