PG
先日、Oracle Certified Expert, Java EE 6 Web Component Developer (1Z0-899)(以下、ocej-wcd と略記) を取得しました。 http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-899&p_org_id=70&lang…
前回の続きです。 ビューデータバインダを書く サーバから受け取ったデータを、html ビューにバインドする処理を、javascript を使って書いていきます。この処理には、css と jquery の組み合わせは非常に有用です。java では jsp があったり、django にもテ…
前回の続きです。今回はビューの作成です。普段仕事で html/css を使う機会がないので、その奥深さに戦きます。 各画面を書く 続いて、各画面の html/css を書いていきます。今回の ToDo アプリでは画面がふたつ存在します。 ToDo 一覧を表示する画面 ひとつ…
前回の続きです。もはや趣味では違うコードを書いているので、この記事のモチベーションを保つのが難しい。 画面遷移の方法 以前に書いた通り、このアプリのすべての主要な画面は、最初のアクセス時にすべてブラウザにロードするようにします。つまり、アプ…
前回の続きです。 実装は簡単なのに話しが長くなってきて、いつまで続くのか不安です。今回ここで作ったToDo アプリは、スケッチ用に作ってみたものですが、よくよく見回してみると ToDo アプリはけっこうあるもんです。Gmail も ToDo を管理する用途の機能…
前回の続きです。 リクエストハンドラを実装していく 続いて、GAEp のリクエストハンドラを実装していきます。各実装ごとに部分的に書いていきます。 MainView の実装 MainView#get() では、単純に html を出力します。todo/handlers.py内 import os from go…
前回の続きです。 GAEp 上にリクエストハンドラを定義する 続いて、リクエストハンドラを定義していきます。 今回は、4つのリクエストハンドラを定義します。各リクエストハンドラの用途は以下です。 ビューとなる html の取得 ToDo アイテムのリスト取得API…
前回の続きです。 GAEp 上にモデルを定義する ようやくGAEpのソースコードが出てきます。 モデルの整理 今回の ToDo アプリで必要な要件を整理します。 * ひとつの ToDo を表すアイテム(ToDo アイテム)が存在する * ひとつの ToDo アイテムは、必ず誰かのア…
前回の続きです。 GAEpプロジェクトとそのファイル構成 Google App Engine Pythonプロジェクトの作成 プロジェクト作成方法は、スタートガイドあたりを参考に適当に。ここでは割愛。 プロジェクト内のファイル構成 以下のようなファイル構成にしました。 <project dir>/ +</project>…
時間があきましたが、前回の続きです。 アーキテクチャについて アーキテクチャと呼ぶほどたいしたものではないですが、概要を説明しておきます。 構成の概要とシーケンス 下図のようにしています。 まずユーザが、URLからビューとなるHTMLファイルをリクエ…
前回の続きです。 iPhoneっぽくなるスタイルシートを書く ネイティブアプリのように見せる部品ごとのスタイルシートを書いていきます。以下を説明します。 NavigationBar のように見せる部品スタイル設定 BarButtonItem のように見せる部品スタイル設定 Tabl…
前回の続きです。 ネイティブアプリのように見せる全体的な設定 次の内容を説明します。 表示領域の固定 ブラウザのアドレスバーとツールバーを消す設定 ステータスバーの色を変更する設定 html ファイルの head タグでは、5つの指定をします。 表示領域の固…
はじめに Google App Engine Python を使ったiPhone向けWebアプリを作ってみました。今後暇を見つけて、何回かにわけてこのブログにその内容を掲載したいと考えています。iPhone向けアプリはたくさんありますが、たいていはiTunes App Storeに登録されている…
最近ちょっと思うトコロがあってGAEを勉強している。とりあえずiTunes App Storeのカテゴリ別ランキング検索Webアプリを作ってみた。 iTunes App Storeでアプリを公開していると、自分のアプリがランキングの何位に位置しているかが気になる。それを簡単に調…
OSをSnow Leopardにアップグレードしたらgvim(vim-app)が動かなくなったコトについカッとなって、 $ sudo port -f uninstall installed を実行してしもうた。。。svnやらなにやら必要なものが。。。というワケで、覚え書き。 まずはMacPorts自身のアップデー…
TsureDureの開発、現在止まってます。ここ1か月くらい止まってる。期待していただいている方がいたら申し訳ないですが、ここのところ仕事が忙しいのとちょっと別の開発に興味があるのとで後ろ伸ばしになってしまっております。まだTsureDureでやりたいこと…
http://journal.mycom.co.jp/column/java/049/ http://codezine.jp/a/article.aspx?aid=318 (検索ワード:サーバ 実装 スレッド java - Google 検索)▼関連メモ ふたつのサーバ機能(サーバントとユーザリストサーバ) while(true)による多クライアント多接続 S…
2006-11-29 - メモ日記の記事の課題2。データ構造にダミーのデータコンストラクタが入ったのは、tParseというクラスメソッドをすべてのデータ型に対して実装しようとしたのが原因。これをしようとしたことで、tParseの引数と返り値が(a,[String])という型で…
亀プログラム処理系の発展を考える。 課題は、 パースエラー時、エラーメッセージ出力 BNFデータ構造のダミーコンストラクタを消す Expandで新しい木構造を作るのはメモリのムダ遣いなのでやめる
まず課題1。亀プログラム処理系プログラムがエラーメッセージを返せないのは、すべてのエラーがMaybeモナドのNothingになってしまい、それ以外の情報を抽出できないため。一方で、Maybeモナドを亀プログラム処理系プログラムで使用するのは自然。なぜならモ…
亀プログラム。 もともとは、「増補改訂版Java言語で学ぶデザインパターン入門」のInterpreterパターンの章で出てくる簡易言語(亀プログラム)の解釈をHaskellで書いたらどう書くのかという試み。BNF参考 <program> ::= program <command list> <command list> ::= <command>*end <command> ::= <repeat command> | <primitive command> <repeat command> ::= repeat <number> <command list> </command></number></repeat></primitive></repeat></command></command></command></command></program>
亀プログラムに向けて型と型クラスの練習。go/left/rightだけ考えてみる。型クラスはJavaでいうトコロのインタフェースに相当する。型クラスの関数を実装してインスタンス化。ムリヤリMaybeも入れてみるが、そのせいなのかなんなのかいまいちピンと来ず。ダ…
再帰的手続きには、再帰的プロセスと反復的プロセスのふたつの種類がある(そうだ)。 階乗計算の例で言うと、 再帰的プロセス -- 階乗(再帰) myfact_r n = if n == 1 then 1 else n * myfact_r (n-1)これは遅延演算を行っている。再帰の最後になってみないと…
再帰的プロセスは、計算の木構造をめいっぱい展開することになる。 だから再帰的プロセスより反復的プロセスのほうが低コスト。 以下、反復的プロセスが、再帰的プロセスよりも低コストになる典型例 再帰版フィボナッチ数計算 -- フィボナッチ数(高コスト) m…
平方根 -- 平均値 myaverage x y = (x + y) / 2 -- 平方根 mysqrt x = let { good_enough guess y = ( abs((guess*guess - y) / y) < 1e-10 ) ; val_improve guess y = myaverage guess (y/guess) ; sqrt_iter guess y = if (good_enough guess y) then gues…
リストのすべての要素に処理を行う。ただそれだけ。 Main> map myreverse [[1,2,3,5], [3,5,2,5], [2,4,6,8]] [[5,3,2,1],[5,2,5,3],[8,6,4,2]] Main> map (mymsort (<)) [[4,2,1,5], [3,5,2,5], [6,4,2,8]] [[1,2,4,5],[2,3,5,5],[2,4,6,8]]
Haskellの標準ライブラリのリファレンスを探してます。 リバース2 (++)を使わないリバースは降参。思いつきません。 挿入ソート -- insert sort myisort _ [] = [] myisort f (x:xs) = [y|y<-sorted, (not (f x y))] ++ (x:[y|y<-sorted, (f x y)]) where so…
リバース (myreverse xs ++ x)じゃダメ。myreverse.hs myreverse [] = [] myreverse (x:xs) = myreverse xs ++ [x] マージソート mymsort.hs mymerge (f) [] x = x mymerge (f) x [] = x mymerge (f) x y = if (f) (head x) (head y) then [head x] ++ (myme…
●行の定義 メッセージは文字のラインに分割される。ラインは2つの文字、キャリッジリ ターンとラインフィードで区切られた一連の文字である;それはキャリッジリ ターン文字(CR, ASCIIコードで13)にすぐ続いてラインフィード文字(LF, ASCIIコードで10)で…
ホームページビルダーのように、ドラッグ&ドロップで画像を配置し、レイアウトを決めることができるアプリのWeb版。JavaScriptでできる?。それともJavaアプレット?。