投稿者のアーカイブ

Haxe/JSでGoogle maps APIをextern

HaxeからGoogle Maps用JSをたたく必要が有ったのでメモ。
ソースファイルは GoogleMap.zip
Wordからの貼り付けで、枠線抜けや色抜け、行崩れを起こすので画像にしています。

(さらに…)

Facebooktwitterlinkedintumblrmail

Selenium IDEを使った手入力の半自動化

随分と前回から空いてしまっているので、日頃考えていた妄想でも一つ。

目的: ブラウザから手入力で写していたデータをなるべくシステムを触らずに半自動化するサービスサーバを提供する。
利用者はSelenium IDEで記録して、定型に従って修正すれば低コストで複数の自動化が可能。

例えばサイトAで入力された内容を、人力でサイトBに後で入力し直す必要が有る場合等。

  • サイトBはOSSのアプリケーションで、改修するコストが見合わない
  • markdown形式に変えて記入する必要が有る
  • etc…

1. Selenium IDEでサイトBの入力用のテストケースのテンプレートをRecording等で作成しておき、
サービスサーバはサイトAのデータから、テストケースに穴埋めして自動的にファイルを作成できるようにします。
※複数有る場合は、適度にテストスイートにまとめる。

2. 利用者はFirefoxのSelenium IDEからテストを開いて、実行するだけになります。
Selenium Serverなり別のテストツールなり使ってここも自動化出来るかも知れませんが、ログインとか考えると面倒が増えそうです。
※ログイン部分の切り貼りを出来るようなプログラムを別途提供する事で対応可能かも。

まぁデータのやり取りが有るので、サービスサーバにするには向いていないかと思いました。
(Selenium IDE依存になるのも)

Facebooktwitterlinkedintumblrmail

HaxeUIをWindowsターゲットで日本語表示

HaxeUIはWindowsターゲットでビルドすると、日本語を表示してくれませんでした。
そこで、IPAフォントを埋め込みフォントとして使って表示させました。
http://ipafont.ipa.go.jp/

IPAフォントをどれか一つダウンロードしたら、適当な箇所に設置します。
※今回はIPA Gothicをダウンロードして(assets/fonts/ipag.ttf)に設置。

HaxeUIは、

Macros.addStyleSheet("styles/gradient/gradient.css");
Toolkit.init();

のように呼び出しているので、Macroを追記します。

Macros.addStyleSheet("styles/gradient/gradient.css");
Macros.addStyle("Text", "fontName:'assets/fonts/ipag.ttf';fontSize:14");
Toolkit.init();

これで、Textを使っているListViewやTableViewにも日本語表示出来ます。

2013/12/10 追記:
フォントを指定無しにしても表示出来るようです。
Macros.addStyle("Text", "fontName:'';fontSize:14");
日本語フォントの入ってるWindowsなら、これで良いかも知れません。

Facebooktwitterlinkedintumblrmail

CentOS6でchef-soloを9手でインストールして実行する

chef-soloで(一例として)PostgreSQLサーバをインストールして起動するまで。
上手い人はもっと短く出来るんだろうなーと思いつつ。
それと、あわよくばchef-serverを誰か最短手で書いてくれないかなーと思いつつ。

(さらに…)

Facebooktwitterlinkedintumblrmail

VirtualBoxのスナップショットを使おう

開発をしていると、インストール後に有る程度の設定をした状態で色々と試して、駄目だったらその時の状態に戻したい事が有ります。
VirtualBoxで、割と簡単に出来るので使い方を。

保存しておきたい状態にした仮想マシンを一度シャットダウンします。

対象となる仮想マシンを選んで、VirtualBoxメニューにあるスナップショットをクリック。

スナップショットの状態が表示されます。

左上にあるカメラアイコンをクリックしてスナップショットを作成。

名前と説明へ、状態や内容を書いてOKボタンを押します。

今回は名前を変えなかったので、スナップショット 1と表示されています。

色々と試した後、マシンを終了してスナップショットから戻したい場所を右クリックして、スナップショットに復元を選びます。

これで起動すれば、スナップショットを撮った状態まで戻っています。

Facebooktwitterlinkedintumblrmail

このコマンドどのRPMに入ってたっけと言う時

rpm -q –whatprovides /bin/ls
等と打てばRPMを表示してくれます。
前の環境だとこのコマンドが使えたのにどのRPMを入れたら分からないと言った場合に便利です。

digがbind-utilsに入っているとは思わなかったのです。

Facebooktwitterlinkedintumblrmail

jqGridの設定はsetGridParamで(以下略

他人の褌で相撲を取るような内容ですが、jqGridネタが有ったので少し。
getが有るならsetも(多分)有る、と言うのがプログラムです。

データを読み書きに行くURLを変更したい場合は以下のような感じで

$("#grid").jqGrid('setGridParam', {url:rurl,editurl:surl});

任意にリロードを発生させる必要が有るなら
$("#grid").trigger("reloadGrid");

jqGridは他にもonSortColでソート順をいじる、
onSelectRowで判定後にdatepickerを表示したりさせなかったりcss()で背景色を変えたり、
なんて事も出来ます。

Facebooktwitterlinkedintumblrmail

正規化しないと駄目かな

PostgreSQL8.1を使ったあるシステムでのお話しです。

まずユーザデータのテーブルが有り、そのユーザはID(連番)で管理されています。
そしてユーザが登録するデータテーブルには、データごとにそのデータを共有するユーザのIDが複数登録されています。
これはユーザIDをCSV形式の文字列で格納をしているんですが、条件文でLIKEとORを連発するのでデータ量が多くなると検索が非常に重くなります。

正規化しないと駄目かなと考えたんですが、対象となるテーブルが複数有るので修正に必要な箇所が散在していて、そのうえデータ量が多くなるテーブルは1つか2つしかないので、構造を変えずにどうにかならないかと別の方法を探しました。

結果として一応、postgresql-contribに含まれるtsearch2が、分かち書き形式の全文検索が出来るので良い感じかなと言う事でやってみました。
日本語には対応していませんが、今回は不要なので構いません。
(GINインデックスは対応が8.2からだったのでパスしました)

postgresql-contribは既にインストールされているので、postgresユーザになって、
psql dbname -f /usr/share/pgsql/contrib/tsearch2.sql

次にpsql dbnameでログインして、GRANTを掛けます。
GRANT ALL ON pg_ts_cfg TO PUBLIC;
GRANT ALL ON pg_ts_cfgmap TO PUBLIC;
GRANT ALL ON pg_ts_dict TO PUBLIC;
GRANT ALL ON pg_ts_parser TO PUBLIC;

とりあえずテスト。
CREATE TABLE test_tb(testts tsvector);
CREATE INDEX test_tb_testts ON test_tb USING gist (testts);

何事もなく作成されたので、データを入れてみて、SELECT。
データ中に2と4の含まれるデータを検索します。
SELECT * FROM test_tb WHERE testts @@ to_tsquery('default', '2&4'); -- and検索
SELECT * FROM test_tb WHERE testts @@ to_tsquery('default', '2|4'); -- or検索

EXPLAINすると、INDEXを使用しているようです。
Bitmap Heap Scan on test_tb (cost=4.10..108.72 rows=27 width=32)
Filter: (testts @@ ”’2” & ”4”’::tsquery)
-> Bitmap Index Scan on test_tb_index (cost=0.00..4.10 rows=27 width=0)
Index Cond: (testts @@ ”’2” & ”4”’::tsquery)

これを応用して、対象となるhogeテーブルのcol列にtsvector型に対応させたインデックスを作成します。
一応カンマからスペースに変更して、格納するようにreplaceしています。
CREATE INDEX hoge_col ON hoge USING gist (to_tsvector('default', replace(col,',',' ')));
SELECT * FROM hoge WHERE to_tsvector('default', replace(col,',',' ')) @@ to_tsquery('default', '2|4');

これで一応インデックスは効いているようです。
今までのクエリはインデックスを使わないでそのまま使えるし、インデックススキャンが必要なところは都度対応する事が出来ます。
とはいえ、かなり強引かなと思える方法なので、今後見て行かないとこれでOKかは分かりませんが・・・。
それと、どちらも許容範囲では有りますが、メモリ上に一度乗るとインデックス使わない検索の方が早い事も有ります。

何か他に良い方法は無いものか。

Facebooktwitterlinkedintumblrmail

PHP5.1.6-27でのファイルアップロードと文字コード変換

OSはCentOS5.4でphp-5.1.6-27で確認しました。

この状態でencoding_translation = OnにしてFormタグにenctype=”multipart/form-data”を指定すると、同じForm内に入力した文字コードは自動変換されません。
encoding_translation = OffにしてPHPで全変換するか、事前にチェックして書き換えるか、悩みどころです。
encoding_translationの必要があるシステムは可能な限り避けたいなと思いますけどね。

Facebooktwitterlinkedintumblrmail

いつか通った道

富士通のWindows 7ケータイ F-07C ですが、これに似たような物を持っていたなと。
思い出してみると、SHARPのWillcom D4でした。

D4と比べてみるとサイズは少し小さくて、重量に至っては218グラムでD4の半分以下。
非力とはいえ、今この重量でWindows OSの機種は他に無さそうです。
が、iPhoneやGalaxySよりは大きいので、それで大きいと感じる人には向かないですね。
携帯用OSが入っているから、普段は困らないかも知れないですが、それならWindowsは不要じゃないかと言う事にも。

必要か、必要無いかと言えば必要無いんですが。
必要無いんですが。
そろそろ携帯買い替えようかと思っていたところでこんな物が出たら・・・。

取り合えず、安く済ませる事だけ考えるように、他は何も考えないようにしています。

Facebooktwitterlinkedintumblrmail