No Such Blog or Diary
eXist の XQuery で POST と GET を区別するには?
POST でアップされたデータが request:get-data() で取れるらしいのでこいつでデータが取れなかったら GET,取れたら POST と判断してみる.ただ,POST でない場合 Exception が飛んでたのでutil:catch で捕らえてやる.こんな具合に:
let $postData := util:catch("java.lang.IllegalArgumentException", request:get-data(), "")
こんなんでいいのだろうか?
- Comments: 0
- TrackBack (Close): -
停電?
- 2006-08-14 (Mon)
- 一般
どうやら東京で大規模な停電があったらしいのでビデオの予約が吹っ飛んでないか微妙に心配.電車も止まったみたいだし,昨日の内に実家に帰ってきてたのは正解だったようだ.とりあえず,もう少し頑丈に出来ないものかねぇ.一箇所にまとまってる電線切っただけで長時間落ちるとは情けない.
- Comments: 0
- TrackBack (Close): -
eXist で XQuery の結果を XML にする…
eXist で,XQuery から XML を生成するとデフォルトでは html のDOCTYPE
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
が付いてしまうので,COCOON の $EXIST_HOME/xquery/sitemap.xmap を編集してXML でシリアライズするようにしなければならない.そのためには,sitemap.xmap のなかの,
<map:pipelines> <map:pipeline>
の中に
<map:match pattern="book-query.xq*"> <map:generate src="book-query.xq" type="xquery"> <map:parameter name="create-session" value="true"/> </map:generate> <map:serialize encoding="UTF-8" type="xml"/> </map:match>
を追加する.意味は generate で生成して serialize で UTF-8 の xml にシリアライズすると.
余談として,*.xq だと COCOON (XqueryGenerator) に渡されるらしい. COCOON に渡った後の処理は,各所の sitemap.xmap で記述する. *.xql とかだと XQueryServlet に渡されてHTMLが吐かれる(XMLにできるのかなぁ?) この設定は $EXIST_HOME/WEB-INF/web.xml に書かれている.
さて,一つの問題は解決した.次に移ろう.
- Comments: 0
- TrackBack (Close): -
合宿最終日
- 2006-08-12 (Sat)
- 一般
G:最小包含円を求めよ.
凸法を使って平均的な実行オーダーの良い実装をしてもらったけど間に合わず.3点に接する円の半径とかその円に対する点の内外判定が良くわからず… 残念でした.
とりあえず見事に最下位取得.初日にA問題をちゃんと実装していれば上位に食い込めたが… ま,今回は順位はどうでも良いとしてたのでよしとしよう.そして,Haskellで平衡木を実装するのが非常に面倒だと思う今日この頃.
- Comments: 0
- TrackBack (Close): -
合宿2日目
- 2006-08-11 (Fri)
- 一般
C:円周上の点を4つつないで出来る四角形の面積を最大化.
とりあえず2次オーダのアルゴリズムで実装してもらったが….対角線を一つずらしたときの残りの頂点の変更方をちゃんと理解してもらえていなかった模様.
D:最大15000個の宝物があるので定められたサイズの長方形でなるべく多くの宝物を囲め.
O(n^2) のアルゴリズムを実装して正解.y軸値ごとに宝ものリストをx軸でソートして,それを使うことで長方形の移動による囲まれた宝物数の変化をO(1)で求める形にした.とりあえず出題者の求める平衡木を利用した回答は絶対に2時間では実装できません.
E:リング状に和が1である様な数字が並んでいる.一つの数字を選んで左右の数字にその数字を足しこみ自身は符号を反転させるという操作を繰り替えすとき,すべてを正の数に出来る最小の手数を求めよ.
ここからメンバーが3人に.残りの二人に考えてもらって正しいものが出来上がる.ただ,真の正解にたどり着くには数学的に式を弄り回す必要があり… ちと時間内には無理ですよと.
F:コンビネータで書かれた式を評価するインタプリタを書け.
Haskell でパターンマッチで頑張る.簡約自体をHaskellにやらせたかったけど型の扱いが良くわからなくなり断念.とりあえず正解.
うーん,自分の書いたところは点が取れたが… 微妙な結果に.とりあえずAlgoは4人のペアプレイで2回とも勝利.
- Comments: 0
- TrackBack (Close): -
合宿初日
- 2006-08-10 (Thu)
- 一般
A:円柱が立ってるので光源の方向を変えたときの影の幅の最大と最小を求めよ.
やり方はわかっていても実装する時間なし.去年に引き続きサンプル入力だけ正しいプログラムを書いて逃げる.
B:辞書順最小となるように重複要素を取り除け.
アルゴリズムを考えてもらってそれの実装を手伝う,というか隣でタイプすべき文字をしゃべり続ける.結局間違ったアルゴリズムの実装を2回行い時間切れ.
うーん,各セッションで一人一問しか書けないという縛りの上,二人しかチームにいない状況で一人がプログラムを組めないって… 当然のごとく最下位.
- Comments: 0
- TrackBack (Close): -