- リダイヤルしまくる電話アプリ [tohsaki]
- Scala から Java の protected static メンバーにアクセス [otsuka]
- Scala から Java の protected static メンバーにアクセス [NetPenguin]
- override 修飾子の意味 [NetPenguin]
- Windows CDT winsock [otsuka]
- Windows CDT winsock [NetPenguin]
- JavaScriptの正規表現でDOTALLは無理 [otsuka]
- JavaScriptの正規表現でDOTALLは無理 [kuriyama]
2010年1月18日
Programming | リダイヤルしまくる電話アプリ
http://blogs.dion.ne.jp/vita/archives/8446294.html
http://twitter.com/ohaz/status/6453985249
http://twitter.com/isako0223/status/6589293224
http://www.android-app.info/2009/08/09/android-app-idea/
iPhoneでもAndroidでも携帯Javaいいんだけど、プレイガイド(に限らないけど)に繋がるまで自動リダイヤルしまくるアプリって作れないのかな?
電話かけるメソッドを呼んで、通話課金が始まったイベントとかが取れればできそうな気がするんだけど、そんなことはさせてくれないんだろうな。
Androidのtelephony APIはざっと調べたけど、無理そう。
2009年10月15日
Programming | Scala から Java の protected static メンバーにアクセス
Nabble - Scala - User - Accessing protected static field from a superclass
Scala の勉強も兼ねて、ある Java のプログラムを Scala から使うコードを書いていた。Java のクラスを継承した Scala クラスを作ってたんだけど、Eclipse の Scala Plugin ではエラーが出まくってコンパイルできない。僕のコードに間違いはないはずなのにと、いつもの思い込みをして、Scala Plugin はまだ使えねーなと、久々に Ant を使ってコンパイルを試みる。幸い Scala Ant Task も用意されていたので。
ところが、scalac も Eclipse Scala Plugin と同じエラーを吐いてくる。なんで!? と調べていたところ、Scala クラス内で呼んでいたメソッドは、親クラスの protected static メソッドだった。そういえば確か Scala には static 修飾子に直接該当するものは存在しないので、どうすんだべ? と更に調べを進めていたところ、上記のフォーラム記事を見つけた。
「As far as I can determine there's no way to access protected static members in java classes without either rewriting the class in scala or inserting a java class to expose the protected members.」
ダメなのか、Scala からでは不可能なのか。知らなかった。
こういう点を考えると、Java クラスを使うプログラムを Scala で開発するのは怖いな。
2009年10月 6日
Programming | Memoize
Young risk taker.: [Ruby] MemoizationのRubyによる高機能な実装Memoizeを作った。
Django のソースを見ていたときに、memoize() というデコレータ的な関数が使われているのを見つけ、「memoize」ってどういう意味だろう?と調べてみた。
Wikipedia に Memoization というエントリーでやたら詳しく書かれているけど、日本語では上記のページに簡潔にまとめられている。日本語では「メモ化」と呼ぶみたい。
「キャッシュ」の概念と何が違うのか今一つ分からないけど、関数の呼び出し結果をキャッシュすることを「Memoization」と呼ぶのかな?
memoize の関数自体の実装は簡単で、Python ではデコレータとして実装するのが一般的。
Django AMF のある関数に適用してみたら、かなり速くなるケースがあった。プロセスをまたいでキャッシュさせられるように memcached とか使ってキャッシュするのはやり過ぎなのか判断に迷うところ。
関係ないけど、Python のデコレータをクラスとして実装できることは知らなかった。
2009年9月24日
Programming | override 修飾子の意味
昔の“常識”,今の“非常識” - 記者の眼:ITproAS3 でコードを書いていて時々面倒くさいなと思うことが、派生クラスでメソッドをオーバーライドするときに override 修飾子を付けなければいけないこと。加えて,クラス継承には「脆弱な基底クラス」(fragile base class)と呼ばれる問題がある。基底クラスのあるメソッドfが内部で別のメソッドgを呼び出している場合に,派生クラスでgの振る舞いを変更(オーバーライド)するとfの振る舞いまで変わってしまう,というのがその例だ。こうした問題が発生するかどうかは基底クラスにおけるfの実装に依存するため,クラスを継承する際に基底クラスをブラックボックスとして扱うことができない。
付け忘れるとコンパイルエラーが出るので、override 修飾子が必要ない Java に慣れていると、なんでわざわざこんな修飾子を付けなければいけないんだろうと疑問だった。
先日 Scala 本を読んでいて、ようやくこの疑問が解決した。Scala でも AS3 と同様、オーバーライドするには override 修飾子を付ける必要があるのだけど、この修飾子は上の記事にも書かれている「脆弱な基底クラス」問題を防ぐためのものだった。つまり、知らないうちに基底クラスの振る舞いを変更(「不測のオーバーライド Accidental Overrides」と言うらしい)してしまわないため、派生クラスで明示的に override 修飾子を付けないとコンパイルエラーになるようにしている。
override 修飾子には重要な意味があったんだね。全然知らなかったよ。
Java には @Override アノテーションがあるけど、今後はこのアノテーションがないとコンパイルエラーになるようにするのかな。
2009年6月 9日
Programming | Happy Surprise!
Google Japan Blog: Google Developer Day 2009 Japanが、パシフィコ横浜でいよいよスタート!
長いものには巻かれろ、ってことで3年ぶりに参加した Google Developer Day。
早起きして朝一の基調講演から参加した甲斐がありました。Android 携帯端末をタダで貰えました。参加の事前登録をして且つ基調講演を聴いた参加者だけにもらえるお土産でした。打倒 iPhone のためにはこれくらいやらないとダメなのかも知れませんね。
その Google の心意気を買って、何かアプリを作ってみようと早速帰りに本屋さんで「 Google Androidアプリケーション開発入門」という本を購入。開発言語は Java なので取っ付きやすそう。
が、今この端末をオークションに出したら結構いい値段が付くのではないかと、邪な気持ちも。
セッションは、Google App Engine のものを中心に。これはやっぱり凄いかもと思い始め、Office Hours で GAE Expert の方に、こんな風に使えますか?と、実際の仕事で使う上での質問をしてみたところ、それは GAE 向きではないと言われてしまいました。でも色々と丁寧に解説していただけました。ありがとうございます。
2009年5月29日
Programming | JavaScript マウスホイールイベント
// IE
document.attachEvent('onmousewheel', eventHandler);
// Firefox
window.addEventListener('DOMMouseScroll', eventHandler, false);
// Safari
window.addEventListener('mousewheel', eventHandler, false);
2009年5月27日
Programming | ビール
プロジェクトの合間でちょっと余裕があるこの数日。次のプロジェクトの準備をすればいいんだろうけど、気分転換に Win32 API を pywin からいじったりしている。さっぱり分からん。
Windows プログラミングの本を探しに近所の TSUTAYA に行ってみたのだが、そんな本はTSUTAYAにはなかった。なぜ大きい本屋さんは新宿にしかないんだ。
IE を COM 経由で操作する何かを作ろうとしていたのだけど、大して面白くもないので、IE のツールバーを作ってみようと思う。
まずは何をやればいいんだ? 考える前に会社の冷蔵庫にあったビールを飲んでしまったので、もう酔っぱらってきた。
ビールはうまいな。いつも飲んでる発泡酒や第三のビールとは違う。
2009年3月23日
Programming | Windows CDT winsock
Visual Studioには今ひとつ馴染めなかったので、MinGWをインストールしてEclipse CDTの環境を構築していたのだけど、やっとWinsockを使ったネットワークプログラムをコンパイルできるようになった。
プロジェクトのプロパティ > C/C++ビルド > 設定 > MinGW C リンカー > ライブラリー に「wsock32」とだけ追加すればいいことが分かるまでに数時間。疲れ果てた。
ここで設定した「ライブラリー」というのはJavaで言うjarファイルみたいなもの?
「ライブラリー検索パス」がクラスパス?
「JavaプログラマーのためのC言語プログラミング with Eclipse」的な書籍を出して欲しい。
2009年1月 9日
Programming | 2009年的技術
たまには技術的な話題でも。
去年はストリッパーズのプロジェクト以外の仕事時間の大部分は執筆に関する作業に当てていて、いろんなものに手を出すことができなかったけど、今年はいくつかちょっかいを出してみたい分野がある。
まず言語としてはPython 3.0とC++。C++は昨年末にうちのボスが何かやってたのでそれにつられて入門書籍を読みつつ勉強しているところ。特に目的があるわけではないけれど、新しい言語を学ぶことで他の言語の理解を深めようかなと。PythonのモジュールをC++で作るのもありかな。
今まで学んだ限りでは、Javaの方がC++より後発なので多重継承以外の大抵の特徴は取り込んでるのかと思ってたんだけど、比較的最近までなかったものや未だにないものもあるんだなあといった印象。
次にこれがメインとなりそうなちょっかいだけど、去年のバスワード大賞を受賞できそうな単語「クラウド」に関連して、Amazon EC2/S3とGoogle App Engine。この正月には「Amazon EC2/S3クラウド入門」を読んだのと、Google App Engine(GAE)を初めて使ってDjango AMFアプリを作ってみた。
昨年知り合いからAmazon EC2/S3を使うプロジェクトに誘われて、すごく面白そうだったんだけど残念ながらスケジュールの折り合いがつかず参加できなかった。
キャンペーンサイトとか広告系のサイトを運営していると、バナーの出稿やメディアへの露出時に一気にアクセスが増えるので、帯域・サーバリソースともにそういったタイミングで柔軟に調整するにはEC2が向いているのではないかと考えてるところ。従量課金が見積りを難しくする悩ましい部分ではあるけれど。
勝手な予測だけど、GAEは今年終わりあたりに正式リリースして基準の帯域やCPU使用量以上を使った場合に有料になるのではないかと。GAEはEC2とは違って勝手にスケールしてくれるそうなので、その点はEC2より楽そうだけど、データのバックアップやCron的処理とかどうすりゃいいんだという不安点がある。
最後にFlashプラットフォーム。昨年はFlex 3、AIR 1.0のリリースからFlash 10やFMS 3.5のリリースまでAdobeの動きは激しかったけど、今年はリリースラッシュは落ち着きそうな気がする。
Flash周りは否が応でも仕事関係でやることになりそうだけど、今年はFlash Liteに手を付けてみたい。とりあえず1.1ではなく自分の携帯端末に合わせて2.0から。
そうこうしているうちにAndroid(Google携帯)が日本でも出てくるのかも知れないけど、当分はiPhoneと同じでギーク向けなのではないかと予測。
2007年8月17日
Programming | JavaScriptの正規表現でDOTALLは無理
僕が普段使ういくつかの言語では正規表現の特殊文字「.」を改行にもマッチさせる方法が用意されているけど、JavaScriptではそんな方法は用意されてないことが分かった。
一難去ってまた一難。
2007年8月15日
Programming | Safariで選択範囲のRangeオブジェクト
Versionate Blog | Getting range objects from DOM selection
var range = document.createRange(); var selection = window.getSelection(); range.setStart( selection.baseNode, selection.baseOffset ); range.setEnd( selection.extentNode, selection.extentOffset );
Safariでは Selection.getRangeAt() がサポートされておらず困っていたところ、workaroundがあった。これで何とかSafari対応もできそう。
Programming | Firefoxの正規表現 \s
半隠遁日記 - Firefoxの正規表現 \s には全角スペースも含まれる
このことに先程気がついた。何故 \s に全角スペースまで含めてしまうのか。Firefox日本語版だけの仕様? 何故そんな日本語フレンドリーな仕様なのか。半角のホワイトスペースだけにマッチさせたい場合、いちいち細かく指定しなきゃいけないのか。面倒くさい。
\s に該当するのは [ \f\n\r\t] かな。今使ってるprototype.jsのコードも書き換えないと。
2007年8月13日
Programming | 週番号
日付/時刻関数と演算子PostgreSQLの週番号は月曜始まり。JavaのDateFormatの週番号は日曜始まり。
その日の年間通算での週を計算します。(ISO 8601の)定義では、その年の1月4日の週を第1週とします(ISO 8601では、週は月曜日から始まるとしています)。
PostgreSQLで日曜始まりの週番号を取りたいんだけど、日曜だったら週番号を+1する関数を自作するしかない? どっかの設定で一発で挙動を変えられたりしないかな。
日曜始まりの週番号を返すweek(timestamp)関数をサクッと書いてみた。
create or replace function week(timestamp with time zone) returns double precision as $$ select case extract(dow from $1) when 0 then extract(week from $1) + 1 else extract(week from $1) end $$ language sql;
Pythonでは、datetime.datetime.today.strftime('%U') で日曜始まりの週番号を取得できるけど、1月最初の日曜日までは「0」週として扱う。PostgreSQLの週番号とは算出方法が異なるためズレが生じる。
週番号は結構やっかいだなあ。
2007年8月10日
Programming | クロスドメインクッキー
昨日書いた<script src='CGIパス' >タグを使った方法でクロスドメインのCGIを実行し、そのレスポンスにクッキーをセットすると、IE7だとプライバシーレポート表示が出てそのクッキーがブロックされることが分かった。
クロスドメインクッキーはダメなのか。確かに怪しい感じはするけど。ウムム。。
2007年8月 8日
Programming | JSONP
ここが危ない!Web2.0のセキュリティ:第3回 JSONPでのクロスドメインアクセス|gihyo.jp
JavaScriptからクロスドメインでのAjax的なRPC実行には、このJSONPという方法を採ればいいということを知りました。
JSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScript
ここも参考になった。随分前からこのやり方は認知されていたんですね。
2007年6月 1日
Programming | マグラス みづ紀
昨日のGDD2007で一番最初に壇上に登場したのがマグラスみづ紀さん。後でkakudaさんに訊いたら有名な方とのことだったんだけど、初めて聞く名前でインパクト十分でした。
年齢不詳な感じですが、美人でした。僕の身体をくまなく検索してもらいたいと思いました。
2007年4月 9日
Programming | XHR
XMLHttpRequest - Wikipedia, the free encyclopedia
「XHR」という単語を時々見かけては何のことかさっぱり分からなかったのだけど、今日それが「XMLHttpRequest」の略語だということが分かった。
関係ないけど、「SWF」は「スウィフ」って読むこと知ってた?
2007年2月27日
Programming | ポインタのポインタ
Googleで「何か検索ワード "**"」と、アスタリスクを2つ以上付けて検索すると、結果リストの文字がボールドで表示されるという裏技(バグ?)を発見した。何の役にも立たないけど。
なんでそんなことに気付いたかというと、C言語のポインタのポインタを調べるため。ポインタむずいよ。
2007年1月31日
Programming | Rubyで月末日付
Date.new(2007, 2, -1).to_s # => "2007-02-28"1月31日が出てきそうな感じだが、これで指定月の月末日付を取得できる。
Railsから翌月末日を求めるなら
Time.now.next_month.end_of_month.to_date.to_sうーん、スバラシイ。
2006年12月15日
Programming | Googleの隠れAPI
角丸画像を瞬時に生成するGoogleの隠れAPI! | p o p * p o p
隠れAPIって、ゲームの裏技みたいな感じだね。ファミマガのウル技風に言うと、これは「大関技」レベル。
そのうち、ウソ技みたいなAPI紹介ブログエントリーが表れるかも。ウソなのにみんな試さないから、ソーシャルブックマークの数だけは大きくなってたりとか。
関係ないけど、ウソ技の話になると、必ずグラディウスのウソ技に引っかかった友達の話を披露する友達のことを思い出しました。調べてみたけど、この14号の横綱技だったのかな。「オップション」って・・・
2006年11月 6日
Programming | ネガティブキャッシュ
技術資料を読んでいて出会った言葉。「キャッシュのキーに対する値が存在しないことを示すもの」だそうだ。ひとつ語彙が増えました。
DNSではあるドメイン名が存在しないというデータをネガティブキャッシュとして保持するらしい。
プログラムで説明するとこんな感じ。
Map cache = new HashMap();
public Object getCache(String key) {
Object value = cache.get(key);
if (value != null) {
return value;
}
if (cache.containsKey(key)) { // valueはnullだけどkeyはcacheに存在する
// ネガティブキャッシュ
return null;
}
}
2006年9月 4日
Programming | Google Code Jam 2006
Google Code Jam 2006, Powered by TopCoder
今年も参加。去年は1問しか解けなかったので、今年は2問解くことが目標。
2006年9月 3日
Programming | The Python Challengeにチャレンジ
難しい・・・
5問目で躓き、解くのに一時間以上掛かった。途中、Forumのヒントを見ちゃったけど。次は6問目にチャレンジ。
それにしてもこれは勉強になるね。
[追記]
半日考えているが、7問目が解けない。PILインストールして、あのグレースケールのバー部分を抽出して何かするんだと思うのだけど、そのすべき何かが分からない。悔しい。
[追記2]
読めた! でも今度は表れたメッセージの意味が分からない。うむむ。
[追記3]
うぉー、やっと解けた!
2006年9月 1日
Programming | PEP
日本語 PEP 集Pythonのお勉強を初めて、所々で参照されているPEPとは何ぞや?と思い、調べてみた。Javaで言うところのJSR(Java Specification Reqest)だね。Python Enhancement Proposal 略して PEP は Python を改良する案を文書にまとめたものである。 RFC などと違って、実際には採用されないものも存在する。
2006年8月31日
Programming | PyGreSQL on Windows
Windows環境にpythonのPostgreSQLドライバ「PyGreSQL」をインストールして、import pg(またはpgdb)を実行すると、「ImportError: DLL load failed」とエラーが出て止まってしまう。ググってみると、libpq.dllのディレクトリ(PostgreSQLのbinディレクトリ)にPATHが通っている必要があるとのことだった。
早速PATHを通して、再度挑戦。今度は「プロシージャエントリポイント HMAC_CTX_set_flagsがダイナミックライブラリlibeay32.dllから見つかりませんでした」とやたら難しいダイアログが表示された。これまたググってみると、libpq.dllがPATHの先頭にあればいいんじゃないというヒントが。
早速PostgreSQLのbinディレクトリをPATHの先頭に持ってきて、再度挑戦。接続できました!
2006年6月 2日
2006年5月18日
2006年5月13日
Programming | LivedoorWeather.php
Livedoor Weather Hacksを用いてお天気情報を取得しようと思って、ちょっと調べてみた。
RSSとREST Webサービスの形式が用意されていて、Webサービスの方は当日を含めて明後日までの予報しか含まれていない。一方RSSの方は一週間先の予報まで提供している。「晴れのち曇り」みたいな予報と最高気温、最低気温を摂氏で取得するだけならRSSの方が情報量が多いということなる。
サクッと天気情報を取得できるPHPのライブラリが公開されていないか探してみたらいくつか見つかったのだけど、どれもWebサービスを利用したものだった。
ということで一週間分の天気予報が取得できるPHPクラスを作りました。LivedoorWeather.php.zip
使い方はこんな感じ。
// 明日の東京の天気
$forcast = LivedoorWeather::get('東京', 'tomorrow');
print($forcast['telop']'); // 曇時々雨
print($forcast['maxTemperature']); // 20 (単位は℃)
print($forcast['minTemperature']); // 12
// 7日先の東京の天気
$forcast = LivedoorWeather::get('東京', 7);
$forcast = LivedoorWeather::get('東京'); // 日にちのデフォルトは'today'
$forcast = LivedoorWeather::get('東京', 'today'); // LivedoorWeather::get('東京', 0); と同じ
$forcast = LivedoorWeather::get('東京', 'tomorrow'); // LivedoorWeather::get('東京', 1); と同じ
$forcast = LivedoorWeather::get('東京', 'dayaftertomorrow'); // LivedoorWeather::get('東京', 2); と同じ
// 一週間分一気に
$forcasts = LivedoorWeather::get('東京', 'week'); // 配列のキーは日付のタイムスタンプ (時間は0:00:00)
// 都道府県名を指定すれば、県庁所在地に自動変換。
$forcast = LivedoorWeather::get('北海道'); // LivedoorWeather::get('札幌'); と同じ
$forcast = LivedoorWeather::get('京都府'); // LivedoorWeather::get('京都'); と同じ
2006年5月 1日
Programming | PHP 5.1のタイムゾーン
「date.timezone」という設定ディレクティブが5.1から追加されていた。これをセットしていなかったせいなのか、タイムゾーン絡みの日付関連バグが頻発。修正してたら朝になってしまった。
PEAR Dateオブジェクトをプロパティに持つクラスのオブジェクトを、他のクラスのメソッドに渡すと、そのDateオブジェクトのタイムゾーンが失われる症状がまだ解決できない。むむぅ。
2006年4月30日
Programming | PEAR Mail_Mime
PEAR :: Manual :: Mail_Mime - 例
この例は間違ってない? コンストラクタに「\r\n」を渡しているけど、「通常、 $crlfパラメーターをセットすることは必要ありません。 しかし、 生成されたMIMEメッセージをMail を用いて送信する場合、 $crlfに"\n" を指定します。」という説明がコンストラクタのドキュメントに書かれている。
コンストラクタに明示的に"\n"を渡していなかったので、添付ファイルがきちんと表示されずハマりました。
添付ファイルの名前が日本語だと、メールに含まれる添付ファイル名が表示されないのだけど、どうしたらいいのでしょう?
「日本語.jpg」というファイル名だと、メールでは「.jpg」と、拡張子の前の文字がなくなっている。画像ファイル自体はちゃんと表示されてるんだけどね。
微妙に使いにくいよね、Mail_Mime。
2006年4月26日
Programming | WinBinder
WinBinder: A native Windows binding for PHPPHPでWindowsアプリを作れる。WinBinder is a new open source extension for PHP, the script programming language. It allows PHP programmers to easily build native Windows applications.
2006年4月25日
Programming | Google Account Authentication
Google Account Authentication先日公開されたGoogle CalendarのGData APIの勉強として一つ簡単なプロダクトを作ってみようと思ったのだけど、現在提供されている認証の方法ではWebアプリではあまり好ましくなかった。GDataのページとは別にGoogle認証についての説明ページが設けられていて、そこでは今月後半にWebアプリ用の認証プロキシをリリースとアナウンスされていた。そろそろかな。Account Authentication Proxy for Web Applications (expected release in late April)
2006年4月12日
Programming | PHP Prepared Statmentで日本語が入るとエラー
$pdo = new PDO(DSN); $sql = "select * from people where /*日本語*/ state != ?"; $stmt = $pdo->prepare($sql); $stmt->bindValue(1, '東京都'); $stmt->execute();PHP 5.1.2とPostgreSQL 8.1.3ともにWindows上で稼働。エンコーディング設定はPHPもPostgresも全てUTF-8。
で、上記のようにPrepared Statementの元のSQLの中に日本語が入っていると(コメントじゃなく値として入ってても)、Postgres側でsyntax errorにより実行できない。どこかで文字化けしてしまって、おかしなことになってる様子。
Prepared Statementでも、プレースホルダ無しのSQLなら日本語を含んでいても大丈夫だった。値をバインドする時におかしくなってるのかも。
PDOを使わないようにして確認はしてないのだけど、PostgresのPDOドライバが悪いのか?
日本語の値は全てバインドするようにすれば、このエラーには遭遇しないから深刻なことにはならないのだけど、気になる。
2006年4月 8日
Programming | PhingのSyncタスク
Antではディレクトリを同期させるSyncタスクが標準で備わっているのだけど、Phingではない。誰か作ってる人いないかなぁ。自分で作るの面倒くさい。。。
2006年3月 6日
Programming | Zend Framework
Preview版を落としてみた。Demoがそのままでは動かない。。。何か環境の設定が悪いのかも知れないけど、フレームワークのクラスをいくつか修正してとりあえず動くようになった。
Demoに含まれていないMailクラスを使ってメール送信プログラムを書いてみた。MailクラスはCommons Emailと同じような形で至極簡単に使える。ただし、iso-2022-jpでの日本語メールは送信できなかった。
PHPフレームワークとして本命視されているけど、Productionレベルまではもうちょっと時間が掛かりそう。
2005年12月 1日
Programming | 日本語ファイル名でのダウンロード
ヘルプ求む。
response.setContentType("application/octet-stream");こんな感じで、ファイルをダウンロードさせるサーブレットを作ってるんですが、OperaとSafariで日本語ファイル名が文字化けしてしまいます。
response.setHeader("Content-Disposition", "attachment; filename=\"" + downloadFileName + "\"");
対処方法をご存じの方がいらっしゃいましたら教えてください。お礼にムフフ画像を差し上げます。
参考
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=21865
なんだか難しいようだね。
http://question.excite.co.jp/kotaeru.php3?q=1806234
2005年11月 1日
2005年8月23日
Programming | Google Code Jam
挑戦中。250点の問題は何とか解けたけど、750点の問題が難しすぎ。ようやく問題の意味を理解したけど、解き方がさっぱり浮かばない・・・ あと15分残っているけど、解けそうもない。
250点の方の問題を解くのに時間が掛かりすぎた。日頃いかにライブラリに頼り切っているかを痛感した。
2005年8月 2日
Programming | Google Code Jam チャレンジャー
nirvashの日記 | Google Code Jam 2005
チャレンジャーとしてリンクされてる・・・
うちのボスも参戦予定です。優勝してGoogleに買収されるのが夢。で、次の記念日のGoogleロゴはどうする?と毎日考えるのが仕事。
だが、参加要項の英語も未だに理解できない。
2005年7月27日
2005年7月15日
Programming | Google Mapsを介して座標取得するPerlスクリプト
ささやかなる実験場の開発室(HSJ.jp): Google Mapsを介して座標取得するPerlスクリプト
なるほど、緯度経度の情報が含まれてるのか。
2005年5月18日
2005年5月13日
Programming | PHPでRSS生成
PHPでRSSの生成を行うライブラリを探しているのだけど、これしか見つけられなかった。何か他にお勧めのものがあれば教えてください。
この位なら自分で作ってもいいのだが。。。
2005年5月 7日
Programming | OML for Perl
メール送信のPerlモジュールで満足いくものが見つけられなかったので、ozacc-mail libraryをPerlにポートすることに。とりあえず文字コードをちゃんと変換してシンプルに送信するところまではできた。PerlでVelocityの代わりとなるテンプレートエンジンみたいなものはあるのだろうか?
2005年3月17日
2005年3月 5日
2005年2月19日
Programming | AWS マーケットプレイス価格
日本では出品価格を円でしか設定できないのに、小数点付きの値の入力が通るようになっている。例えば「152.8」円を入力すると、実際には「153」円として扱われるのだけど、これがAmazon Webサービス経由だと入力値の「152.8」円のまま返ってくる。
で、これがAxisの内部でエラーを引き起こしているようだ。
java.lang.NumberFormatException: For input string: "152.8"
at org.apache.axis.encoding.ser.SimpleDeserializer.onEndElement
(SimpleDeserializer.java:174)...
USドルのように普段から少数点を使う通貨の場合は、例外起こりまくりのはずなんだけど、外国の人たちはAxisを使ってAWSにアクセスはしないのかなあ??
今回の用途では商品のマーケットプレイス価格は必要なかったので、Response Groupsを「Medium」から「Small」・「ItemAttributes」・「Images」の三つに変更して解決。受信するデータ量を減らす意味でもこうすべきだね。
2005年2月17日
Programming | AWS テスト用キーワード
最近、Amazon Webサービス(今はECSって言うのかな?)のJava用検索ライブラリを制作中なんだけど、今回はテストファーストを徹底してるつもり。
キーワードで検索するメソッドのテスト(実際にAmazonから結果を取得する)を作っても、翌日テストすると結果数や結果順序(売れてる順)が変わってたりして、なかなかうまくいかない。結果数も順序も未来永劫変わらない、そんな廃れたキーワードが欲しい。
2005年1月21日
2005年1月 3日
Programming | JSDoc
JSDoc HomepageJavaScript版のJavaDoc。@constructorタグと@privateタグが追加されている。JSDoc is a tool that parses inline documentation in JavaScript source files, and produces an HTML summary.
JavaScriptはメソッドのオーバーロードに対応しておらず、メソッドの引数が定義されていても、呼び出し時に渡さなければ、undefinedとなるだけで呼び出しエラーということにはならない。
なので、内部で引数判定を行っているようなメソッドは、引数についてしっかりドキュメント化しておく必要がある。
2005年1月 2日
Programming | JavaScript
JavaScriptを仕事で使うときは、サイト毎にその都度一から書いているのだけど、今年はJavaScriptコードもライブラリ化していこうと考え、先日からJavaScriptをきちんと勉強中。O'reilly SafariでJavaScript Definitive Guideを読んで、一通りの仕様は理解できた(つもり)。当然といえば当然なんだけど、ECMA Scriptの実装だからActionScript 1.0と同じなんだね。忘れてたよ。AS 1.0で理解不足だった点も補えて、得した気分。
今後JavaScriptは機能別にクラス化しておいて、そのクラス毎にファイル保存し、CVS管理する。で、使用する時はHTMLの中で、
<script type="text/javascript" src="path/to/class.js"></script>のようにしてJavaScriptクラスを読み込む。(document.writeメソッドを使ってクラスファイルを読み込むようにして、そのコードを含む他の実行コードは外部JSファイル化してしまう方がいいかも。)
<script type="text/javascript">
var obj = new Class();
obj.doSomething();
</script>
このページを読むと、JavaScriptも奥が深いなあと思う。
Effective JavaScript - Dynamic Scripting
2004年12月29日
Programming | document.body and doctype switching
Javascript - document.body and doctype switchingJavaScriptが意図した通り動かないので調べていたら、HTMLにDOCTYPEを指定しているとプロパティ名が変わる場合があることを知った。DOCTYPE指定によって、ブラウザのレンダリングが変わることは知っていたけど、JavaScriptにまで影響があるとは知らなかった。If you use a DOCTYPE that puts Explorer 6 in standards compliant mode, some properties of document.body are reassigned to document.documentElement.
この前知ったDOCTYPEに関わる注意点が、FirefoxでFlashを100%表示させる場合。解決法はここに。
2004年12月22日
2004年12月 8日
Programming | 質問 イベント処理クラス名
イベント処理を行うクラス(インターフェース)の名前には、XxxListener、XxxHandler、XxxCallbackの3タイプあると思うんですが、こういう場合はListenerで、そういう場合はHandlerみたいな使い分けの基準があるのでしょうか?
この辺りについて詳しい人がいたら、是非ご教授ください。
2004年12月 5日
Programming | $と@
昨夜、Programming Perlを読んで初めて知った。
Perlの変数に使う"$"と"@"は、それぞれ"scalar"、"array"の頭文字"s"、"a"を表していることを。
常識?
1,000ページ中8ページを読了。Perlマスターへの道は遠い。
2004年10月26日
Programming | guesswork 0.0.1リリース
guessworkバージョンナンバーが随分細かいけど、待ちに待ったguessworkのリリースです。素敵なポリシーを掲げています。既に稼働しているサーバでも簡単に導入できるよう以下の二点をポリシーに設計されました。
* 設定ファイルなんて邪魔
* ディレクトリ構成、ファイル名くらい自由に決めたい
ドキュメントもまとまっていて、グー!!
次にPHPで開発するときには使ってみよう。
サイト内に「プログラマの三大美徳」が書かれてるんだけど、そんな美徳初めて知った。しかも僕は全部満たしている。
2004年10月14日
Programming | Javascript Form Field Validator
iWeb Toolkit: Javascript Form Field ValidatorThis handy javascript library provides for simple validation of the data within form fields.
MEMO。
2004年9月 9日
Programming | PukiWikiでリファラを制限
blog.keitap.com: PukiWikiちょっとしたことだけど、ステキだ。make_link.phpの338行目(Link_urlクラスのtoStringメソッド)を以下のように書き換えればOK。
return "<a href=\"http://www.google.com/url?sa=D&q=" . urlencode($this->name) ."\" target=\"_blank\">{$this->alias}</a>";
前にReferer経由で友人の非公開Wikiサイトに辿り着いたことがある(Basic認証を掛け忘れていた)。1ページ見たところで、見ちゃいけないような気がしたのでブラウザを閉じたけど。
2004年9月 2日
2004年8月19日
Programming | PHP 5
PHP 5を使って初めてプログラミング。クラスのメンバーをprivateやpublicでアクセス制御できるようになってる。クラス以外にインターフェースも作れるようになってるけど、PHPでは型で参照するわけではないので、あまり意味がないような。
2004年8月 4日
2004年7月17日
Programming | Beyond APIs
「なぜ表示は遅くなるのか?」という特集に惹かれて久しぶりにWeb Designingを購入した。この特集ではSafariが激速ってことは分かった。
それよりも、トーサキ氏の連載で、最後に書かれていた「提供されるAPIありきでものごとを考えると、気づかないうちに妥協してしまうことがある」という一文に深く考えさせられる。
言い換えるとAPIに縛られているということだろうか。自分の開発姿勢を見返すと確かにそうだ。「Don't re-invent the wheel」の格言を盾に、使用する言語やライブラリ、フレームワークから提供されるAPIの範疇で、プログラム制作というか設計を行っている。
ある機能を提供するAPIがなかったら、自分はこの機能をどう実装したか。技術者は敢えて車輪を再発明する位の意気込みでいないと、表現や実現できる機能の幅が狭まってしまうかも知れない。
このWeb Designingには、Web制作会社の最新求人案内もまとめてあったが、せっかくだから女子社員比率を載せててくれれば役に立つのに。少なくとも僕には。
2004年7月15日
2004年7月14日
Programming | PHP 5 Final Release
リリースされちゃったよ。全く追ってなかったから、何がどう変わったのかさっぱりだ。build-in SOAPなんてオモシロそう。日本語情報ならここか。Do You PHP?
PHP 5上で、PHP 4のスクリプトはこれまで通り動くのか? まずはこれを確認しないことには開発サーバ上にもインストールすることができない。あっ、この間作ったDebian Thinkpadがあるか。
2004年6月25日
Programming | guesswork
コンセプトも含め、とても良さそうなPHPフレームワーク。入手できるようになった是非使ってみたい。(ライセンス体系はまだ分かりませんが。)「高い保守性を維持しつつ、PHPで楽にコーディングしたい」をテーマにしたPHP用MVCフレームワーク「guesswork」のご紹介です(まだダウンロードはできませんです)。
先日、php.MVCなるフレームワークを検証していたのだけど、ドキュメントを読んで使用を断念した。正しくここで述べられている通りだった。
フォーム処理がguessworkではどのようになるのか気になるところ。何にせよ、期待大。
2004年6月21日
Programming | GIF特許
ようやく。Sun JDKがImageIOでのGIF書き込みを標準サポートしてくれないかなあ。2004年6月20日、日本においても Unisys社の特許が有効期限が切れました。
2004年6月18日
Programming | php.MVC
php.MVC is a PHP port of Jakarta Struts. It currently supports many features of Struts, including declarative application configuration via the XML digester. For example, mappings from the various Action business logic components to appropriate results pages can be specified declaratively in the XML configuration file.PHPでもStrutsみたいなMVCフレームワークを使いたい!!と、探して見つけたのがコレ。
まだPHPではこれぞ決定版といったフレームワークは存在しないようだ。他にもいくつかフレームワークを見つけたけど、ドキュメントが充実していたので、まずはこれに絞って学習してみる。
ムムッ、ドキュメントを印刷中なんだが、うちのレーザープリンタの調子が悪い。用紙が全体的に黒ずんでいる。そろそろトナーの変え時か? それともドラムが悪いのか? 買ってからまだ一度もトナー交換してないのに先にドラムがおかしくなることがあっていいのか!?
Programming | PHP4 static変数
staticなんていう命令があることを初めて知った。気づくの遅すぎ。変数のスコープに関する別の重要な機能は、静的 (static) 変数です。静的変数はローカル関数スコープのみに 存在しますが、プログラム実行がこのスコープの外で行われるようになっ てもその値を失わないません。
2004年5月15日
Programming | 新しい武器
アスペクト指向プログラミングに対する学習曲線が急激に上昇してきた。SpringのAOP機能は、実用面でほぼマスター。AOPは強力な武器になりそう。ドラクエの武器に例えるなら「破壊の剣」といったところ。
2004年5月13日
Programming | AOP
今までなかなか理解できなかったアスペクト指向の概念っていうか、仕組みっていうか、何かその辺りのことが今理解できたような気がする。用語は未だによく分かんないんだけどさ。
これから毎年5月13日はAOP記念日とする。
2004年4月27日
Programming | Perl
久々にPerl仕事。が、もうほとんどPerlの関数を忘れてしまっている。ファイル出力ですら、リファレンス本を見ないと思い出せなかった。
Javaばかりでなく、たまにはPerlやPHPを使って小規模なシステム作る仕事をやらないと。
MTのソースを追ってみるのもいいかも知れない。
WEB+DB PRESSでも昔はPerlやPHPの記事が結構あったのに、最近はJavaばっかり。時々C#記事はあるけど、JAVA PRESSとの違いを明確にするためにも、もうちょっとその他の言語の記事も扱って欲しい。需要は少なくとも。
2004年3月 2日
Programming | Perl de CGI
今日からはCGI制作に集中。運用環境はPerl 5.004のレンタル共有サーバで、Telnetもなし。勿論Rootインストールが必要なモジュールなんて使えない。こういう環境の制約は、自分を試されているようで燃える。が、この環境だとさすがに萎える。
2003年11月30日
Programming | 久々のPerl
Webの開発で久しぶりにPerlを使った。
先方のサーバが共用レンタルで、Perl以外の選択肢がなかった。しかもPerlのバージョンも5.004と古い。さらに、SSHやTelnetでのアクセスもできず、HTTP以外の接点はFTPのみ。
もちろんデータベースは何も使えないのでファイルベースで。Perl5なのでオブジェクト指向な設計を行い、ビジネスオブジェクトはそれぞれシリアライズできるようにする。DAOっぽいクラスを作って、そこでファイルのやりとりとオブジェクトの保存/復元を担当させる。これでデータの永続化はクリア。
運用サーバ上のテストでInternalServerErrorが起こったときに、原因が調べられないのでデバックが大変だったけど、それ以外は久々のPerlプログラミングを楽しめた。
2003年11月17日
2003年10月14日
Programming | 世界で最も誤解されているプログラミング言語
JavaScript: The World's Most Misunderstood Programming Language
誤解してました。