2010-01-01から1年間の記事一覧

java内部からプログラムを起動してプロセス通信をして操作する

javaからrubyを利用したら便利そうだと思って調べてみるとプロセス通信を使えばよさそう。 標準入出力についていまいち理解してなかったけど結構面白いです。 標準入出力をつかったプロセス通信を利用すれば異なる言語同士のよいところを取り入れてさくっと…

JavaScriptを含むサイトをrubyでクロールしてみる

価格.comとかは製品一覧の表示をJavaScript使っているのでHpricotやMechanizeだけだと情報をとれないっぽい。 そこでrubyからIEを立ち上げてBotのようにIEを操作して情報を取得しているっぽいwatirというライブラリを試してみた。 やってることの流れとして…

x,y,w,hの4つの値が255以下のときはintのビット演算で処理してみる

x,y,width,heightの値を扱うときRectangleを使ってもいいんですが まぁなんとなく気分でビット演算でやってみようという顔になった enum BitIntTest { INSTANCE; int value; void set(int val, int shift) { value &= ~(255<<(shift<<3)); value |= (val<<(s…

JInternalFrameのタイトルバーを消してウィンドウドラッグで移動するように

http://d.hatena.ne.jp/alpha_neet/20101011/1286772477 前回の続きです。 枠もタイトルバーも消してウィンドウ全体でドラッグ移動するようにしてみました。 オライリーのJAVA SWING HACKSを参考にしました。 import java.awt.*; import java.awt.event.*; i…

JInternalFrameのタイトルバーと枠の長さを取得

JFrameだとgetInsets().topの中にタイトルバーの長さも含まれてるんですが、 JInternalFrameだとLook&Feel(これがまたややこしくて資料が少ない)っぽいのを使ってるぽくて よく分からないんですけど、すこしめんどいことをしないと取得できないっぽいです。…

Fieldを利用して設定ファイルの記述を簡易化

http://d.hatena.ne.jp/alpha_neet/20101001/1285945730 前回のenumを使った簡易化なんですが今見るとかなりひどいです。おまえenum使いたかっただけちゃうんかと自分に思わずツッコミそうです。 今度はFieldを使ったやつに書き換えてみました。今回は型指定…

スコープの実行順

初期化子には static { }, { }, クラス名 { }(コンストラクタのこと)がある。 final staticのフィールドもstatic { }の中では変更できるみたいです。 finalのフィールドは{}とクラス名{}の中なら可能。 http://www.ne.jp/asahi/hishidama/home/tech/java/s…

命名規則によってメニューを自動生成

http://d.hatena.ne.jp/alpha_neet/20100930/1285842300 前回のgetMethod,invokeを応用してメニューを自動生成するクラスを作ってみた 記述をより簡易にするためにenumを使用。というかenumすごそう。 追いきれないで途中で使ってるけどもっといろんなことが…

enumを利用して設定ファイルの記述を簡易化

http://d.hatena.ne.jp/alpha_neet/20101001/1285884675前回から相変わらずenum弄ってます。なかなか面白いです。 enumはコンストラクタの扱いが特殊なので、一度だけ実行する処理がやりづらいです。 そのときはenumのインナークラスとしてprivate enumのシ…

文字列によるクラス、メソッド、フィールドの操作(forName,getMethod,invoke,getFieldなど)

結論としてrubyみたいなclass_eval->define_methodみたいなデスコンボはできなさそうです。新しいフィールド、メソッドの生成はJavaでは難しそう。できるかもしれないけど分からなかったです。既存のクラス、メソッド、フィールドの呼び出しや変更を文字列で…

chromeのF6キー

これがめちゃめちゃ便利だと言う顔になった。 押すごとにアドレスバー→ブックマークバー→Webページに切り替わる。 今までアドレスバーからWebページに戻れなかったりブックマークバーにマウス使ってたりで不便でした。

コンストラクタのオーバーロード

class Size { int w, h; Size(int size) { this(size,size); } Size(int _w, int _h) { w = _w; h = _h; } String toString() { return "w = "+w+"h = "+h; } } void setup() { Size s1 = new Size(10); Size s2 = new Size(10, 20); println("s1: " + s1 + …

画像の左右反転処理

http://processing.org/learning/libraries/mirror.html↑のサンプルはWebカメラで画像を読み取ってちょっと加工して左右反転する処理なんだけど、 これを見る限りだと左右反転の処理を一発呼び出しでできる関数はないっぽい。なぜかない。 公式のサンプルはW…

redraw()のバグ

今回のコードはメタコードなので実行しても意味はない。 int x, y PImage img1, img2; // なんかのイメージ void mousePressed() { // ① x = 100; y = 100; redraw(); } void mouseReleased() { // ② x = 200; y = 200; redraw(); } // 画像をブレンドしてる…

アスキーアートを表示

String aa = " ,. -一……ー- 、 \n /::::{:/::::‐-:、:::丶:\ \n /:::::/´ ̄ ̄__\、::::l,. -―、 \n /::::// /:: ̄、:\::::ヽヽ≦、ス=、、 \n /::::/::|,.イ:l::丶::::::::\:X:::',:::ヽ、 ヽハ ',ヽ \n f´ ̄!:::::l:_|_|\::\--/,r=ミ|::::::lヾく:l::', | | …

参照の比較演算

aとbは別のインスタンス(メモリ空間)を持っているので、イコールじゃfalseになるからString.equals()を使おうという話。 まぁ有名な話ですよね。 String a = new String("hoge"); String b = new String("hoge"); println("aとbは" + (a==b)); // false St…

テキスト周りのまとめ

size(400, 300); background(255); fill(0); textFont(createFont("FixedSys", 32)); int halfW = width>>1, halfH = height>>1; int top = (int)textAscent(); int bottom = (int)textDescent(); String str = "へろーわーるど"+str(top+bottom); int x = h…

コンストラクタからならfinalは変更可能

class hoge { final int x, y; void print() { println(x + " " + y); } hoge(int _x, int _y) { x = _x; y = _y; } } hoge h = new hoge(10, 20); h.print(); // エラー //h.x = 200; h.y = 300; これでpublic getterでprivate setterと大体同じになる!定…

MVCでobserver

ちょっと長いけど、中途半端なサンプルだと一体何のために使うのか分かりづらいので、 最低限どういうときに使えばいいのか分かる程度のサンプルにしてみた。 一応これでもがんばって削りました。 Controller controller; void mousePressed() { controller.…

Chromeにしてみた。

以下はChrome導入のメモ。最小限のアドオンに。最低限の覚えること(キリッ 入れたアドオン Vimlike Smooziee http://code.google.com/p/vimlike-smooziee/ これいれるとキーボードでほとんど操作できる。 使ってるキーについては↓のほうに列挙してある。 http:/…

参照について確認

タグをつけるときにprocessingかJavaにするか悩む。 ほとんど文法的にはJavaなんだけどprocessingはいろいろ省略ができるから javaのほうではコンパイルエラーがでそうなんでprocessingタグになった というか素のjavaはたぶん勉強目的(サンプルソースやライ…

画像データのコピー

ものすごいCPU負荷かかってるなーと思ったらレンダラーをデフォルトのJAVA2Dにしてるせいらしい。 解像度を800*600以上にしただけでCPU負荷が100%状態。 OPENGL使うと凄い軽いんだけど全部描画コードをOPENGLに書きかえないといけないのが…

ファイラが使えなくなったでござる

vim

動画編集とか重い処理する時のようにほどほどにスペックが高いノートPCを新調したんだが、これがいかんせん重いw(重力的な意味で) あまりの重さに肩がこりだしたので仕方ないのでお古のLet's Note T4をひっぱりだすあるさま。 それでようやく香り屋さんと…

ハッシュを適当に自作

processingというよりjavaのハッシュがゴミすぎる気がする。 http://processing.org/reference/HashMap.html これprocessingの公式のHashMapのリファレンスなんだけど、やばすぎるでしょこれは。syレになってない。 もうこことか暗黒微笑しかでないんです…

関数ポインタ的なことをやってみる

Javaで関数ポインタっぽいことをするには getMethod() と invoke() を使うっぽいんだけど、Processingだと多分だけど使えないっぽい。 さらにこいつは恐ろしいことに enum や static すら使えないのでまぁ仕方ないかなという感じ。 class function { void $v…

無名クラスでクロージャ風味

そもそもrubyやJavaScrpit的な言語をあまり使ったことないのでクロージャについて誤解してるような気もするけどとりあえず書いてみた。 ProcessingのコードだけどシンタックスはJavaにしてる。 abstract class func { abstract void run(Object arg); } clas…

hatena.vimで書いてみた

vim

今までtipsコードは http://beanstalkapp.com/ に作った適当なsvnに放り投げてたんだけどvimからhatenaが更新できるらしいので一応こっちにもチラ裏を残しておくことにした。 hatena.vim入れたらすぐ動くと思ったらかなり苦労したんでちょっこりメモ。 http:…