2009-08-01から1ヶ月間の記事一覧
RMagickを使って簡単なアニメーションGIFを作るサンプルです。基本的な手順としては Magick::ImageListのインスタンスを作成 ImageListにアニメーションのフレームとなる画像を追加。 後は「ImageList.write」でリストをgif形式で保存すれば、アニメーション…
RMagickを使って、画像内で使用されている色の統計を取得するサンプルを書いてみました。使用されている色ごとに割合を算出し、使用量の多い順に出力します。 require 'rubygems' require 'RMagick' imgs = Magick::Image.read("./kitten.jpg") img = imgs.f…
昨日の続き。Google翻訳APIでは文字列の言語を特定する機能も提供されているので、それを利用して元の言語を自動判定してから翻訳するようにしてみました。これで言語を気にせずにがしがし変換できます。ついでにto_itやto_frなど翻訳可能な言語に対応する変…
Google翻訳APIで文字列を翻訳するモジュールを書きました。 対象とする文字列と翻訳元/翻訳先言語を指定して呼び出すと、翻訳された文字列が返されます。 使用可能な言語はこの辺を参照。 プロキシが必要なら「Translate.set_proxy」で事前に設定してくださ…
PushbackReaderを使うと、Readerで読み込んだ文字を再度Readerに戻す(読まなかったことにする)ことができます。以下は簡単な利用例。連続する文字を1つにまとめつつ、出力します。 // PushbackReader を作成 PushbackReader reader = new PushbackReader( ne…
CSVの仕様書(RFC4180)を読んだので、ずっと疑問だったことについて、ちょろっとまとめてみます。 ヘッダーの有無の判定 CSVにはヘッダーが付いている場合がある訳ですが、形式がデータ行と同じなので、文字列だけ見ても判断が付きません。これについて仕様書…
RMagickを使って画像にエフェクトをかけるサンプルです。 require 'rubygems' require 'RMagick' imgs = Magick::Image.read("./kitten.jpg") img = imgs.first img = img.sketch( 5.0, 5.0, -45 ) # スケッチエフェクトを適用 img.write( "./sketched.jpg" …
RMagickは画像処理ライブラリ「ImageMagick」のRubyインターフェイスです。これを使うと、 画像を解析して情報を取り出す。 画像を読み込んでエフェクトを適用する。 画像を新規に作成する。 といった操作がさくっと行えます。ということで、ローカルにイン…
余力情報の取得に対応しました。 →Github - unageanu / clickclient_scrap モバトレ君の「口座/余力確認」ページで確認できる情報を取得できるようにしています。 サンプル $: << "../lib" require 'clickclient_scrap' require 'constants' # ログイン c = …
「miibot」は、かわいいねこの写真をつぶやくTwitter Botです。→ Twitter - miibot機能は以下の2つ。 オススメのねこ写真を毎日つぶやきます。 「疲れた」とreplayすると、ねこ写真で励ましてくれます。 疲れたときにどうぞ。
Google App Engine上でも普通に使えましたよ > Google GuiceのAOP。ということで、動作確認に使った簡単なサーブレットを公開してみます。 import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletReque…
Google App EngineのURLフェッチ機能では、HttpURLConnectionが普通に使える訳ですが、Basic認証が必要なサイトにアクセスしたいと思って以下のように書いてデプロイしたら実行時エラーに。 static { Authenticator.setDefault( new Authenticator(){ @Overr…
以下のような書き方が個人的に流行中。 String[] strs = // 略 // 配列がnullでなければ各要素に対して処理を実行 if ( strs != null ) for ( String str : strs ) { // 処理 } forで列挙する対象がMap.Entryとかになると、Genericsもあって行がすぐに長くな…
RubyクラスをJSONでアクセスできるWebサービス化するJSONBrokerのJava版クライアントを書いてみました。 サンプル 以下はクライアントを使ってjijiにアクセスし、レート情報を取得するサンプルです。 /** * レート情報を提供するサービス */ static interfac…
画像編集は何気にAdobe Fireworks派だったりするわけです。比較的リーズナブルな上、Web向けの画像編集に必要な機能が一通りそろっていてUIも使いやすい。さらに、なんといってもJavaScriptでマクロを書けたりするのが便利だよね!(いやPhotoshopとかでも使え…
エージェントエディタの一新など、いくつかの機能強化、バグフィクスを行ったjiji-1.2.0をリリースしました。 →Github - unageanu/jiji 更新内容、更新手順については、こちらを参照ください。 さて、昨日嵌っていたgemがビルドされない問題は、どうもリポジ…
エージェントエディタの一新など、いくつかの機能強化、バグフィクスを行ったjiji-1.2.0をリリース、、、といいたいところですが、GitHubにコミットしたものの1時間待ってもgemがビルドされず・・・・。→オープン・フリーのFX自動取引システム「jiji」 →Gith…
タプルを書いてみた。 import static java.util.Arrays.deepEquals; import static java.util.Arrays.deepHashCode; /** * タプル */ public class Tuple { /** * ペア * * @param <A> Aの型 * @param <B> Bの型 */ public static class Pair<A,B> { private final A a;</a,b></b></a>…
Locatorから取得できます。 XMLFilterImpl#setDocumentLocator()をオーバーライドしておくとLocatorが渡されてくるので、 必要なタイミンクでLocator#getLinenumber()を呼び出して、行番号を取得すればOK 以下は、各要素の行番号とカラム番号を出力するサン…
LinkedHashMapを使うとFIFO方式のキャッシュがさくっと作成できます。新しいエントリが追加されるたびに呼び出されるremoveEldestEntry()をオーバーライドして、削除するかどうかの判定処理を書くだけでOK。 public static void main( String[] args ) { // …
JSONICを使うと、任意のJavaBeanをJSONにさくっと変換できます。 // テスト用クラス static final class Kitten { private String name; private int age; public Kitten() {} public Kitten( String name, int age ) { this.name = name; this.age = age; }…
Rubyではいくつかの演算子はクラスのメソッドとして再定義することが可能です。ということは、演算子式の戻り値を変えてやれば、代入式の評価結果を変更できるんじゃね?と思いたって試してみましたがやはり不可でした。 class Foo def var=(value) return "v…
ちょっと前からCygwinで以下のエラーが発生するようになった。 8 [main] ruby 5172 C:\cygwin\bin\ruby.exe: *** fatal error - unable to remap C:\cygwin\bin\cyggcrypt-11.dll to same address as parent(0x370000) != 0x5710000 12 [main] ruby 5752 for…
クリック証券デモ取引のWebサービス提供終了を受けて、クリック証券デモ取引プラグインを無効化したjiji-1.1.4をリリースしました。→Github - unageanu/jiji 変更点 クリック証券デモ取引プラグインを無効化。 マニュアルの「サポートしている証券会社」から…
今週のはじめからクリック証券デモ取引に接続できなくなってるなーと思っていたら、デモ取引のWebサービスも停止になったみたいですねー。これで本格的にClickClientが海の藻屑に。ぬー。jijiがらみでちょい修正しようと思ってGitHubにソースを移したりとか…
Yahoo! UI Library のTreeViewで以下の条件を満たす場合、クリックイベントの引数で渡されてくるeventの「ctrlKey」プロパティが参照できなくなります。 クリックイベントとダブルクリックイベントの両方にリスナが登録されている。 ブラウザがIE IE7+Yahoo!…
いまさらだけど、JavaScriptでは「||=」は使えないのか・・・。「+=」は使えるのに・・・。 // fooがnullとかundefinedなら"foo"を代入 foo ||= "foo"; // エラー! ↑はこう書くしかないか。ぬー。 foo = foo || "foo";
普通のクリックとダブルクリック、および名前変更のときに使う遅めのダブルクリック?(「かち、かち」っていうやつね)を判定するユーティリティを書いてみました。利用例は以下の通り。ちょい汎用的な形にしておいたので、ダブルクリック以外に三三七拍子とか…
ContainerJSでは、コンポーネントの依存関係が循環している場合でも単純な循環であればエラーとせずに依存関係を解決できたりします。たとえば以下のようなパターンであれば問題なく解決可能です。 function main() { // 循環参照するコンポーネントも以下の…
optgroupでドロップダウンリストの選択肢をグループ化できます。 selectの子要素、optionの親要素とします。 label属性で、グループの表示名を指定できます。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> </body></html>