サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
www3.vis.ne.jp/~asaki
■ [執筆]書籍のレビュー進行中 執筆中の書籍の原稿をコミュニティの方々にレビューしていただいているのですが、間違っている部分の指摘や、自分の知らなかった情報など、有意義なコメントを多数いただいています。恥を忍んで(?)お願いしてよかったなぁと思います(というか、お願いしていなかったらどうなっていたことか…)。そんなわけでここ数日はいただいたコメントの反映をメインに、まだ書けていない部分の執筆を少しずつ進めています。あとは雑誌の長編特集記事の校正は終わったし、別の雑誌の特集記事はあと原稿の取りまとめをして週明けに送るだけなので、来週からはまた書籍の作業に集中できるかなと思います。そういえば、次の書籍もそろそろ何かしないといけない季節な気がしますが、年内はちょっと余裕がなさげですねぇ…。 ■ [Java]Javaでパスワード付きZIPファイルを作成するライブラリ 使うかもしれないのでメモして
www3.vis.ne.jp
■ [Seasar]S2JDBCとS2JDBC-Genあれこれ S2JDBC-Genはエンティティや名前クラス(Namesクラス)だけでなく、テストケースや、SQLファイルをテストするためのテストケースなども生成してくれる非常に便利なツールです。SQLファイルの一括テストはDBFluteにそういう機能があると聞いて「いいなー」と思っていたのですが、S2JDBCでもS2JDBC-Genを使えば実現できたのでした。個人的にエンティティごとにサービスを作るのは、特にS2JDBC(のSQL自動生成で検索する場合)には向いていないと思います。そもそもエンティティ毎にサービス(Dao)を作ると各業務依存のメソッドが大量に作成されて収集がつかなくなる可能性が非常に高いですが、S2JDBCだとさらにLazyロードができないので、同じ検索条件でジョインするエンティティだけが違うメソッドが作られることになるは
■ 高校生による鋭いツッコミ 先日中高生にオープンソースについて語ってきたのですが、講義のあとの質疑応答タイムでオープンソースについて話しているのに、なんで講義のスライドはOpenOfficeじゃなくてPowerPointなんですか? という鋭すぎるツッコミが!!ごめんなさい!!!「一応本とか書くときはOpenOffice使ってるんだけどー」とアピールをしつつ、猛省して平謝りしました。
■ [GAE]Google App Engineで携帯Webアプリ 何がイタイってGoogleアカウントの認証機能が使えないのがイタイです…。Google App Engine for JavaではUserServiceというインターフェースでGoogleアカウントの認証関連の機能を利用できるのですが、認証処理そのものをやってくれるわけではなく、ログイン・ログアウト用ページのURLを生成するメソッドと、アプリ側でログイン状態を判定するためのメソッドしかありません。しかし、ログインページが携帯に対応しておらず、携帯でログインページにアクセスすると「サポートされていません」みたいなメッセージが表示されます。もちろん独自に認証機能を作りこめばよいのですが、GAEはGoogleアカウントを持っている人ならアプリ毎のユーザ登録をせずに使えるのがサービス提供者、利用者双方にとっての大きな魅力の1つだと
■ [GAE]流れるJDO GAE/JでJDOのQueryオブジェクトを使った検索が面倒くさくて仕方ないのでこんなユーティリティを作ってみました。S2JDBCのJdbcManagerのパクりなのですが、使い方はこんな感じです。List<Entry> entries = PersistenceService .from(Entry.class) .filter("userId == ?") .ordering("updateDate desc") .range(0, 20) .getResultList(userId); このユーティリティを使うことでdeclareParameters()や結果のキャストをしなくても済むし、一件だけ取得したり、件数を取得したりとかも簡単にできます。 kazunori279『これ便利ですね! 使ってみたいのですが、ライセンスは何でしょうか? またQueryは自
■ [Work]フレームワークの選択は開発者の趣味 ある打ち合せでの話。「フレームワークによる開発効率の差は開発者視点の趣味レベルの話でしかない」 「何を使っても開発コストは大差ない、それよりも安心して導入できることが大切だ」 思わず絶句してしまうほど個人的に衝撃的なお言葉でした。今回はそんなに大きなプロジェクトじゃないんだから、効率的なやり方を考えたほうがいいんじゃない?と思っていたのですが、「決められた枠の中でどう効率的にやるのかを考えるのが開発会社の仕事」とか、いったいこの人は何を言っているのだろう?と思いました。ちなみにこの発言をした方は客観的に見て非常に優秀な技術者なのです。立場がそう言わせているのか、もともとそういう考え方の人なのかはよくわかりません。前者だとしたら残念なことですし、後者だとしたらできれば関わりたくないものです…。 ■ [Amateras]AIR GEAR 1.
■ [Seasar]Seasar Conference 2009 Springに行ってきました Seasar Conference 2009 Springに行ってきました。自分の発表ですが、スライドは最初のと比べると随分削ったのですが、一番話したかった「今後の課題」の前で時間切れ…。ユニットテストのExcel自動生成やWebDriverのデモも考えていたのですが、到底無理でした。かなり急いだつもりだったのですが、その分バタバタしてしまいましたし、なんかものすごく残念な感じです。やっぱり事例紹介じゃなくてプロダクト紹介でエントリーすればよかったなー。なにはともあれ見苦しい発表になってしまい申し訳ありませんでした。資料はあとでカンファレンスのサイトのほうに掲載されると思いますのでご覧いただければと思います。他のセッションでは、Mobyletがとても面白かったです。Mobylet自体よりも前段の
■ [書籍]フリーフォントガイドブック FOR WINDOWS〈Vol.2〉 前作は持っていて、いまだにデザイン系のお仕事をするときには重宝しているのですが、2007年にVol.2が出ていました。収録されているフォントの数もかなり増えているので買い換えてもいいかなぁ、と思いました。 ちなみに前作はこちら。フォントのカタログを見ていて気付いたのですが、中田ヤスタカってフォント作ってたりしたんですね…。 手持ちのPhotoshopやIllustratorのバージョンが古すぎてVistaで動かないので、最近はGIMPやInkscapeを使っています。使いこなすにはまだまだ修行が必要そうですが、最近は安いネットブックも出ているのでPhotoshop用にXPマシンを一台買ってもいいかもと思ったのですが、よく考えたらPC買うくらいならCS4を買ったほうがいい気がしてきました。 ■ [Java]Solr
■ [ニコカレ]Google App Engineでニコニコカレンダーはじめました とりあえず動くようになりました。Googleアカウントを持っている方であればどなたでも参加できます。以下のURLからどうぞ。 http://niko2cal.appspot.com/ いまのところの機能は単純に気分とメッセージを入力してカレンダとして表示するだけですが(無駄にAjaxを使っていますが…)、将来的にはランキングとか、コミュニケーション的な機能なんかもつけていきたいと思っています。特定のグループで運用するというよりは(そういう用途であればスタンドアロン版を使ってもらえればいいと思うので)オープンソーシャルなニコニコカレンダーを目指したいです。ちなみにスタンドアロン版ではグループ機能、ランキング・新着表示機能、ユーザ毎のカレンダ表示、インポート・エクスポート等の管理機能などなど、様々な機能がすでに
■ [Click]Google App EngineでClickを動かす ClickのMLでも早速Google App Engineの話題が出ています。Nutch、TikaのコミッタであるSirenさんがGAE/JでClickを動かすことにトライしたみたいです。注意点は以下の通り。 appengine-web.xmlで静的ファイルから*.htm(ClickではVelocityテンプレートとして処理される)を除外する。 OGNLセキュリティマネージャにnullを設定すること。OgnlRuntime.setSecurityManager(null); ファイルシステムへの書き込みが許可されていないため、自動デプロイされるファイルを手動でデプロイする必要がある。 Commons FileUploadはデフォルトではファイルに書き込むが、上記の理由により動作しないのでストリーミングAPIを使用する
■ [S2Click]S2Clickの事例 昨年の11月頃から今年の3月まで、S2ClickとS2JDBCを使ったアジャイルプロセスでのシステム開発を行っていました。本当はSeasar Conferenceなどで事例紹介をさせていただければと思っていたのですが、わけあって3月のカンファレンスには参加できなかったので、ここで書いておこうと思います。 ページとフォームを分ける S2Clickではページクラスとフォームクラスを別のクラスに分離する構成を推奨しています。またフォームクラスを実装する際に便利な抽象基底クラスを用意しています。これは以前Clickを使ったプロジェクトで、ページクラスでフォームの組み立てまで行うとページクラスの見通しが非常に悪くなるという反省に基づいているのですが、やはり分けて正解だったと思います。ページクラスの見通しが良くなるだけでなく、フォームクラスを登録画面と更新画
■ [Perl]ひどいCGIスクリプト 個人的に頼まれてネットで配られているCGIスクリプトの改造なんかをすることがあるのですが、巷でもよく言われているようにCGI系サイトで配布されているものは本当にひどいコードが多いです。折角なのでこれらのひどいコードに共通する例をいくつかあげてみようと思います。 もちろんuse strict;などとは書かれていない myとか一切使わない ソースがShiftJISで書かれている モジュールは一切使っていないが(たぶん必要に迫られて)jcode.plだけは使っている Perl4で時が止まっている 関数は使っているが値は全てグローバル変数で受け渡している 以上のような理由によりmod_perlでは動きそうな気配がまったくない 変数名や関数名が無闇に短い インデントされてない(全ての行が左寄せになっている) 空白も空行も全部詰めて書く 意味もなく1行にたくさん
■ [Hudson]Hudsonでいろいろ自動化 いま自社でやっているS2Click+S2JDBCなプロジェクトではHudsonをかなり活用させていただいています。Hudson自体のインストールというか動作させるのは簡単ですし、機能が豊富な割には特別操作に迷うような部分もありませんでした。Hudsonの使い道として、s2jdbc-genでエンティティのJARファイルを作ったり、アプリケーションのWARファイルを作ったりするのは当然ですが、開発環境のデータベースのダンプもHudsonからシェルスクリプトをキックして自動化していました。これはバックアップという目的もあるのですが、アジャイルで開発しているというプロジェクトの性格上、それなりの頻度でアプリケーションをお客様に提供して動作を確認していただく必要があるのですが、「Hudsonで生成したWARファイルとデータベースのダンプファイルをその
■ [Eclipse]EclipSKY200902 Eclipseプラグイン開発の勉強会が久々に開催されるそうです。例によって例の如く僕は参加できませんが、今のところの参加者を見ると相当なマニアさんたちの集会になりそうな気がします。ちなみにEclipseプラグイン開発徹底攻略の改訂版ですが、オープンソースカンファレンス2009でも販売されるそうです。追記:うちの会社のWebサイトでもEclipseプラグイン開発徹底攻略を紹介してもらっています。 ■ [Seasar]HOT deployでハマった実例あれこれ せっかくなのでSAStruts、S2Click、S2JDBCを使ったアプリケーションの開発において、僕が実際にHOT deployでハマった実例を挙げておきます。 ClassCastExceptionが発生することがある セッションやアプリケーションスコープを使う場合は前述のとおりse
■ [Seasar]SeasarのHOT deployは難しい SeasarのHOT deployは開発時は非常に強力な機能ですが、取り扱いには注意が必要な機能でもあります。とりわけ問題になるのがHOT deployとCOOL deployの挙動の違いです。まず良くハマるのが、HOT deploy時のクラスローダの問題です。HOT deploy時はリクエスト毎にクラスがロードされるため、セッションやアプリケーションスコープに格納するオブジェクトについては普通に入れるだけだと取り出すときにClassCastExceptionが発生したりします。回避策としては以下のような方法があります。 コンテキストクラスローダで先にロードしておき、HOT deploy対象外にする マップなどに変換して格納しておくか、取り出すときにBeansなどでリフレクションを使ってコピーする フレームワークの拡張を行う場
■ [Hudson]Hudsonの便利なプラグインたち Seasarプロジェクトで運用されているHudsonにインストールされていたプラグインの中でこれは便利と思ったものを2つ。 Task Scanner Plugin - ソースコードをスキャンしてTODOやFIXMEなどのタスクタグを抽出して一覧表示してくれるものです。 Warnings Plugin - ビルドログをスキャンしてコンパイラの警告を一覧表示してくれるものです。 他にもレポート系の便利そうなプラグインがいくつかあります。S2ClickはMavenを使っていないので、Hudson側でこの手のレポートを出力してくれるのはなかなか便利です。S2ClickではCoberturaをAntのビルドファイルに組み込んでカバレッジレポートを出すなど頑張ってはいますが、Mavenはこのあたりはプラグインを追加するだけで簡単にレポートを出して
■ [Seasar]S2Chronosを実戦投入 いまやっているプロジェクトではバッチ処理にS2Chronosを使っています。S2ChronosはS2ベースのジョブスケジューラで、Webアプリケーションに組み込んで使えるのが大きなメリットです。cron等の設定が不要になるのでwarファイルをデプロイするだけで動かすことができますし、Webアプリケーションで使っているサービスやエンティティなどを共有できるのも便利です。OSSのWebアプリケーションにバッチ処理を組み込みたいというようなケースではかなり有力な選択肢になるのではないでしょうか。インストールガイドが用意されていますが、Webアプリケーションに組み込む場合はこの他にもweb.xmlの設定が必要です。このあたりは作者の方のブログで書かれています。この他に、タスク単位にトランザクションを切りたかったのでcustomizer.diconの
■ [Java]OSCacheを使ってみよう その2 続いてGeneralCacheAdministratorの使い方です。キャッシュの作成とキャッシュからの取得については一昨日の日記に書きました。今回はグループの概念についてです。OSCacheではキャッシュの削除の基本は「全部消すか」「キーを指定してエントリを消すか」のどちらかです。// 全部消す admin.flushAll(); // キーを指定して消す admin.flushCacheEntry("key"); アプリケーションの稼働中は絶対に変わらない値をキャッシュするとか、特定のタイミングで特定のキャッシュを更新・削除できればよいとか、キャッシュを削除するときは全部消してOKみたいな場合は特に気にする必要はないのですが、「特定の条件に一致する複数のキャッシュを削除したい」という場合にはちょっと困ったことになります。このような場
■ [Java]OSCacheを使ってみよう その1 OSCacheはJavaのキャッシュライブラリです。CacheFilterでレスポンスを丸ごとキャッシュしたり、カスタムタグでJSPの一部をキャッシュしたりすることもできますが、もちろん任意のJavaコード中でキャッシュライブラリとして使用することもできます。フィルタやカスタムタグの設定や使い方に関してはすでに日本語の情報もあるので今回はマニアックに攻めてみたいと思います。まず、普通にJavaのコードからライブラリとして使う場合はこんな感じになると思います。// キャッシュマネージャを初期化(クラスパスルートのoscache.propertiesで初期化される) GeneralCacheAdministrator admin = new GeneralCacheAdministrator(); try { // キャッシュから取得 St
■ [Java]Apache Ivyを試してみた Apache IvyとはApache Antのサブプロジェクトとして開発されているもので、ライブラリの依存性を解決してくれるものです。んで、ライブラリ依存性解決と言えばMavenなのですが、IvyはMavenのメタデータにも対応しているので、ライブラリを指定するとMavenリポジトリから依存性を解決して必要なJARをダウンロードしてきてくれます。Mavenと違うのはあくまでライブラリの依存性の解決に特化しているところ。それ以外のことはAntで頑張れというスタンスです。まあ、Antのサブプロジェクトなので当然かもしれませんが。インストールはIvyのWebサイトから依存ライブラリ込みのディストリビューション(binary-with-dependencies)をダウンロードし、含まれているJARファイルをANT_HOME/libにコピーするだけ。
次のページ
このページを最初にブックマークしてみませんか?
『www3.vis.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く