2007-01-01から1年間の記事一覧
遙か昔に書いた、指定した銘柄の一定期間の株価を取得してくるプログラムです。Yahoo! ファイナンス 株価・投信・為替時系列データにアクセスしてスクレイピングでデータを抽出しています。 使い方 引数で銘柄コード、取得開始日、終了日を指定します。 put_…
ちょっと古いけど、ネタがないので喰いついてみます。→Hello, world!その2 「Hello, world!」と表示するプログラムを作ってください。ただし、コード中に同じアルファベットが2回出現してはいけません。アルファベットとは、小文字のa-zと大文字のA-Zを指…
メソッド内の処理でそのメソッド自身への参照を簡単に得る方法。Java5.0以降のみですが、JavaScriptで使えるarguments.calleeみたいなのが簡単に実現できます。...まぁ、Class#getMahod()でとれるっちゃーとれるんですが、これだとメソッド名を指定する必要…
昨日の続き。フィールド値の読み込みなど、他に気になっている操作についても測ってみました。 特定の処理を50万回実行した場合の合計所要時間を計測する。(←回数を増やした) 10回試行し平均を取得。 JRE1.4,1.5,1.6でそれぞれ測る。 書き忘れたけど、計測マ…
遅い遅いと敬遠されがちなリフレクションですが、最近のJDKでもやっぱり遅いのか計測してみました。 setメソッドを呼び出して値を設定する処理を10万回実行した際の所要時間を計測 10回試行し平均を取得。 JRE1.5,1.6でそれぞれ試した 結果 JDK1.5.0_09 JDK1…
GMOインターネット証券 WebServiceにログインするRubyスクリプトです。参照系優先で他の機能もちょっとづつ作っていく所存。 使い方 c = GMO::Client.new # ログインしてブロックを実行しログアウトする。 c.session( "<ユーザーID>", "<パスワード>" ) { pu…
パスワードをそろそろちゃんとしたい。一応ランダムでそれなりに長い文字列を使用しているのですが、憶えられないという理由で多くのサービスで同じパスワードを使っていたりする...申し訳ない。これだとどこかのサービスでパスワードが漏洩した場合に影響範…
可変長引数について。 メソッドの引数の型の末尾に「...」を付けると可変長引数を受け付けるメソッドができます。 可変長にできる引数は、一番最後の引数1つのみです。 メソッド内部では、可変長引数に配列としてアクセスできます。 /** * 可変長引数を受け…
「@Hoge("xxx")」といった感じで、パラメータを指定できるアノテーションを作ります。 作り方 アノテーションを作ります。 アノテーションにパラメータの値を返すメソッドを定義します。 メソッド追加により、パラメータを指定できるようになります。 メソッ…
タイプセーフなPropertiesを作ってみます。 用件 整数など任意の型を記録できるjava.util.Propertiesみたいなのを作りたい。 値の型はキーごとに決まるので、キーに合わせてタイプセーフにしたい。 Stringを取り得るキーの場合、値をStringで設定でき、Strin…
るびまのRSpecの記事を見たときから密かに気になってた振舞駆動開発 (Behaviour Driven Development:BDD)ですが、IBM developerWorks ビヘイビア駆動開発を舞台にした冒険より「Jbehave」というJavaでBDDするライブラリがあるらしいのでちょっと使ってみまし…
クラスやメソッドの型パラメータ指定では、"&"を使って受け付けるクラスの条件を結合することができます。これを使用して、「インターフェイスA,インターフェイスBの両方を実装したクラスのみ受け付ける」といった制約を行うことができます。 "&"で結合でき…
クラスのパラメータ化について復習。 クラス名の後に「」をつけることで、パラメータとして受け付ける型を指定できる。 例) 「class Hoge {}」 「extends」を使用すると、受け付ける型を限定することができる。 「class Hoge {}」とすると... 型パラメータを…
昨日の続き。「Set<String>」,「Set」,「Set」,「Set」の挙動について。 要素の追加 「set.add(object);」で縦軸の型のオブジェクトを追加可能かどうか。 Set<String> Set Set Set Object × × × × String ○ × × ○ Object型のオブジェクトはどれにも追加できない。 「Set<String>」,「</string></string></string>…
どうやら「Set」は「Set」と違うらしい(!)ので、「Set」,「Set」,「Set」,「Set」の挙動についてまとめてみた。 要素の追加 「set.add(object);」で縦軸の型のオブジェクトを追加可能かどうか。 Set<Object> Set<String> Set Set Object ○ × × ○ String ○ ○ × ○ 「Set」,「Se</string></object>…
そんな名前かどうかは知りませんが、「>」みたいな自分で自分を使うジェネリックタイプの使い方。最初見たとき、これはないだろー、と思ったけど、ありみたいです。 どういう時に使うか 自分自身を返すAPIを持つようなクラスで 返す型をパラメータで指定した…
Genericsを使って引数を任意の型にキャストする関数を書いてみました。クラス名が長くても、これを使うと簡潔にキャストすることができます。 /** * オブジェクトを望みの型にキャストする。 * @param <T> キャスト後の型 * @param o オブジェクト * @return キ</t>…
命名規則に従って、イメージボタンをさくっと作る関数を書いてみた。 使い方 1.htmlにボタン化するaタグを書く。 href属性にクリックした際の動作を記述しておく。 <a id="test" href="javascript:buttonCicked('1');" /> <a id="test2" href="javascript:buttonCicked('2');" /> 2.aタグのIDと画像IDを指定してボタン作成関数を呼び出す。 実行するとaタグが以下の画像</a></a>…
Enumerable#sort_byと組み込み関数のrandの組み合わせで1発です。 array = [ "a", "b", "c", "d", "e", "f", "g" ] puts array.join(",") # 配列をランダムに並べ替える array = array.sort_by {|item| rand } puts array.join(",") array = array.sort_by {…
「Mii touch」は、かわいい猫の写真をみるためのiPod touch用Webアプリケーションです。ご利用は以下から。>「Mii touch」以前作成したMiiをiPod touch用にカスタマイズしたものです。表示する画像サイズなどを調整しています。 仕組み Flickr Web Serviceで…
コントロール(というか任意の要素)をフェードイン/フェードアウトするユーティリティを書きました。 一定時間放置するとフェードアウトして消えます。 特定の操作(マウスを動かすなど)をするとフェードインします。 仕組み タイマーを仕込んで一定時間後にフ…
Adobe Shareクライアントに以下の機能を実装。 ファイルアップロード フォルダ作成 ファイル/フォルダの削除 使い方 require "share-client" # クライアントを作る cl = Share::Client.new( <APIキー>, <shared secret>, <ユーザーID>, <パスワード> ) # セッションを開始 cl.session</shared></apiキー>…
昨日作成した、複数のデータをboundaryで連結するIOもどきをちょっと修正。 サイズを得るAPIを追加。 ただし、IOからはサイズがとれないので、IOが追加されている場合、エラーとなる。 add_file()の時点でファイルを開くのはもったいないため、必要になった…
multipart/form-dataの送信のため、複数のデータ(ファイルパス、IO、文字列のいずれか)を指定したboundaryで連結するIOもどきを作った。IOのAPIを一式実装しようかと思ったけど多すぎるので速やかに挫折。Net::HTTPで使えればいいのでread(length)だけ実装し…
リクエストボディをストリームで指定するには、Net::HTTPRequest#body_stream=()を使用します。 何がうれしいか ストリームを使うと、ボディを文字列で指定する場合に比べ、メモリ消費を抑えられるというメリットがあります。 ボディを文字列で指定する 送信…
iPod touch + Safariの環境でjson.jsを使ったJSONのパーズ時間を計測してみました。 iPod touch + Safari JSONデータのサイズ 平均 最大 最小 2k 181ms 208ms 167ms 8k 677ms 734ms 658ms 40k 3553ms 3874ms 3450ms 120k - - - ※5回試行し、平均、最大、最小…
遅ればせながら、iPod touchが届きました!touchといえばWi-Fi & Safariということで、iPod touch + Safariで以前作成したサンプルコードを動かして遊んでみました。 機能 動作 説明 Flash × Flex SDKで作成したサンプルで試しましたが、エラーになります。 C…
Adobe Share APIにアクセスして、認証→セッションを開始→ノード情報を取得するところまで作った。呼び出し例。 # クライアントを作る cl = Share::Client.new( <APIキー>, <shared secret>, <ユーザーID>, <パスワード> ) # セッションを開始 cl.session { |session| # ルートフォル</shared></apiキー>…
Adobe Share APIですが、なんとか認証まではできました。以下はここまでの道のりです。 APIキーの取得 Share APIを利用するには、APIキーが必要です。Share Developers siteの「Manage/Get API Developer Key」から発行してもらいます。このとき認証で使う「…