2007-11-01から1ヶ月間の記事一覧

textproc/php-jsonをインストール

Ext 2.0のアーカイブを展開したすると examples/tree/get-nodes.php というファイルが出来るが、このスクリプトでは json_encode 関数が使われている。phpをpkgsrcからインストールしている場合は textproc/php-json をインストールした後、${LOCALBASE}/etc…

DBIのbind_columns

SELECT文を使ってデータを取得する場合、DBIから配列やハッシュで取得する以外に「列と変数を bind する」という方法がある。以下のようなテーブルがあるとする。 CREATE TABLE table1 ( id integer PRIMARY KEY, name text, email text ); 結果をハッシュで…

DBIx::Class::Schema::Loaderのクラスをカスタマイズする

人のデータを表すテーブルがあるとする。 CREATE TABLE person ( id integer PRIMARY KEY, first_name text, last_name text ); first_nameとlast_nameをつなげた full_name という仮想的な列があると便利。 package TestDB; use base qw/DBIx::Class::Schem…

Adobe AIR (Flex)のテキストファイルの読み込み方

プログラムの初期化時にテキストファイルを読み出して表示する。 ファイル自体を表現するクラスの「File」 ファイル中のバイト列を表現するクラスの「FileStream」 を組み合わせて使う。 <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" title="Read File" creationComplete="initApp()"> <mx:Script> </mx:script></mx:windowedapplication>

Ext 2.0のAccordion

「Accordion」と呼ばれているインターフェースは、実は使い所が難しいような気がしてきた。 <head> <script type="text/javascript" src="ext-2.0/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext-2.0/ext-all.js"></script> <script type="text/javascript"> Ext.onReady(function() { var panel = new Ext.Viewport({ layout:'acco…</head>

Dojo 1.0のAccordion

いつの間にかものすごいWebサイトにドキュメントが用意されているDojoのAccordionレイアウトの使い方。少し前まで「ドキュメント無いな〜」という感じだったのに。AccordionContainerの中にAccordionPaneを入れればOK。 <html> <head> <script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad: true"> </script> <script type="text/javascript"> dojo.require("dijit.layout.Acc</head></html>…

Adobe AIR (Flex)のNativeMenu(Windows)

Adobe AIR Beta 2 + Flex 3 で Windows 上でプログラムを作るときにNativeMenuを使う方法。ドキュメントや、Web検索で見つかるサンプルと少し違うような……。 <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" title="Hello World" creationComplete="initApp()"> <mx:Script> </mx:script></mx:windowedapplication>

DBIx::Class の newメソッドでレコードを作った場合に serial が増分されるタイミング

DBIx::Class で new をつかって新しい行を作っても、insert を実行するまでは serial から id の割り当てはしないらしい。実験データベース CREATE TABLE url_path ( id serial PRIMARY KEY, url text UNIQUE, title text not null ); INSERT INTO url_path(…

nkf のオプション

メモ コード in out UTF-8 -W -w ISO-2022-JP -J -j EUC-JP -E -e Shift_JIS -S -s 適当に推測するとよく間違う。

Dojo 1.0のタブ

こちらは TabContainer の中に ContentPane titleはつけないとクリックするところが出てこない レイアウト周りはExt 使うより易しい気がする。 <html> <head> <script type="text/javascript" src="dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script> </head></html>

Dojo 1.0のレイアウト

以前にExtでやった「左にメニュー、右にコンテンツ」みたいなレイアウト(http://d.hatena.ne.jp/jgoamakf/20071105)を Dojo 1.0 でやった場合のソース。 LayoutContainer の中に ContentPane 場所は layoutAlign で指定 がポイントか? <html> <head> </head></html>

bbsmenu.html の Parse

最初にbbsmenu.htmlをダウンロードする。 ftp http://menu.2ch.net/bbsmenu.html 「<BR><BR>」で始まっている行がセクションの始まりなので、文字列を取得して現在のセクションに設定する。 空行でセクションの終わり。 セクションの始まりと終わりの間にでてきたリ…

Ext 2.0 のTabPanel

API Documentのサンプルと一緒。 <script type="text/javascript"> Ext.onReady(function() { var tab_panel = new Ext.TabPanel({ renderTo: 'tab-area', activeTab: 0, deferredRender: false, items:[ { contentEl: 'tab0-div', title: 'Tab 0' }, { contentEl: 'tab1-div', title: 'Tab </script>…

Ext 2.0 でレイアウト

とりあえず左右に分けてみた。「左側にメニューがあって……」みたいな画面ならこれでOK。 <html> <head> <script type="text/javascript" src="ext-2.0/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext-2.0/ext-all.js"></script> <script type="text/javascript"> Ext.onReady(function() { var viewport = new Ext.Viewport({ layout…</head></html>

PRIMARY KEY、UNIQUEが2つ以上の列で構成されているときのfind

テーブルを作る。 CREATE TABLE table1( c1 integer, c2 text, PRIMARY KEY(c1, c2) ); INSERT INTO table1 VALUES(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd'),(5, 'e'); findの引数にはPRIMARY KEYになっている列の値を全て指定する。 $row = $db_schema->results…

UNIQUEを設定したフィールドを使って検索する

UNIQUEフィールドを持つテーブルをつくる。 CREATE TABLE table2( c1 integer CONSTRAINT c1_unique UNIQUE ); INSERT INTO table2 VALUES(1),(2),(3),(4),(5); % psql -f testdb2.sql -d testdb1つのテーブルについて複数のUNIQUE制約を設定することができ…

PRIMARY KEYを設定したフィールドを使って検索する

PostgreSQLでテーブルをつくる。 CREATE TABLE table1( c1 integer PRIMARY KEY ); INSERT INTO table1 VALUES(1),(2),(3),(4),(5); % createdb testdb % psql -f testdb.sql -d testdbPRIMARY KEYに指定したフィールドの値を使って検索する。 package TestD…