ScalaとApache Wicketのウェブアプリの続き。RESTについての考察
Markdown展開
2012年12月2日日曜日
2012年11月29日木曜日
2012年9月8日土曜日
また世界を更新してしまった
クラッシュ・バンディクー1 TA(タイムアタック)の記録を更新しました。
Peercast Record/クラッシュバンディクー
一応ルール
使用ハードはPS2(ディスク通常読込)
以下ラップタイム
パプパプ 0:07:12
リパールー 0:15:34
コアラコング 0:28:17
ピンストライプ 0:36:22
ブリオ 0:47:31
コルテックス 0:50:45
まだ猶予があるので極まれば50分は切れそうです。
極まればね
Peercast Record/クラッシュバンディクー
一応ルール
- タイトル画面のスタートで開始
- コルテックス撃破後、画面が切り替わった所で終了
- とかげでだいジャンプ、ゆうやけのはいきょの壁登りバグ禁止
使用ハードはPS2(ディスク通常読込)
以下ラップタイム
パプパプ 0:07:12
リパールー 0:15:34
コアラコング 0:28:17
ピンストライプ 0:36:22
ブリオ 0:47:31
コルテックス 0:50:45
まだ猶予があるので極まれば50分は切れそうです。
極まればね
2012年8月30日木曜日
クラッシュ・バンディクー1 TA 全一宣言
昨日の配信で達成。
Peercast Record/クラッシュバンディクー
ラップタイム
パプパプ 0:07:17
リパールー 0:15:51
コアラコング 0:28:52
ピンストライプ 0:37:21
ブリオ 0:48:22
コルテックス 0:51:39
私より速く走れる方がいらっしゃいましたらご連絡ください^^
追記
抜かれたので再挑戦中
追記
Peercast Record/クラッシュバンディクー
ラップタイム
パプパプ 0:07:17
リパールー 0:15:51
コアラコング 0:28:52
ピンストライプ 0:37:21
ブリオ 0:48:22
コルテックス 0:51:39
追記
2012年8月25日土曜日
夏のプログラミングシンポジウムを見てきました
夏のプログラミングシンポジウムに午前中だけ行ってきたの感想を書きました。
プログラミング美学
- プログラミング美学
- プログラム美学
- プログラミング言語美学
ギリシャ時代の美への探求を例に出してプログラミングの美に関する考察など。
鑑賞に知的活動が必要→「つまり素人には理解できないということであります」
(´;ω;`)
「コンピューターを非機械的に扱える人はプログラミングのセンスがある」
クラス一つ一つが人か何かに見えてくればセーフかな?
「受注というスタイルでは美を追求することは難しいだろう」
等。後半はさっぱり話についていけなくなった。
最後にデモがあったけど今までの話と何がつながってたのかよくわからなかった。「美しい」って、やっぱり鑑賞用とかじゃなくて、整理整頓するってことじゃないのかなあ。プロ勢怖い…
Beautiful Error Handling
エラー処理は汚くなる
一般的できれいな方法がない
美しいプログラムは理解しやすい。変更しやすい。バグりにくい
これ。これを目指したいですよね。
エラー処理:堅牢なプログラムに必要な処理
- タイムアウト
- 無線が切れた
- 自分のバグ
「(自分要因だろうが他人要因だろうが)通知しなきゃならない。最近のトレンドは例外を飛ばす」
エラーの抽象化 / エラーを受け取る側の抽象化
の2つの話で成り立ってるわけね
まとめ
プログラマは職人であるべきだけど、現実に職人である人は少なくて、多数の凡人も職人のようにプログラムを書ける必要がある。(だからHaskellを使いましょう)
Beautiful Programming Language and Beautiful Testing
このプレゼン資料emacsなんですけどぉ(どやぁ
Haskellの規律
Haskellのお勉強。pure関数とそうじゃない関数に分かれてるという話。副作用がある場合は「IO」という構文が入る。やばいちょっと楽しそう。
型チェックが固いからバグが入りにくい。型が台無しにならない。→値に関する誤りは残る(0除算など)→Haskellでもテストを書くべき
Haddock
利用例ドキュメントとテストコードを兼ねる記述。C#とかJavaとかにも欲しいなあ
バグのない二分探索が実装できたのは発明から12年後
Haskellerはもっとテストを書きましょう
一言に「美しいコード」と言っても、整理整頓されたコードだったり見た目が美しいコードだったり、いろいろ考えさせられるものがありました。
2012年7月22日日曜日
2012年6月17日日曜日
7/1 Peercast勉強会
開催が近くなってきたので詳細をまとめておきます。
主催がPeercastにチャンネルを立てて、発表者の配信を中継します。
(PeCaハッカソン成果発表会と同様のスタイル)
あれくま
ぷろぐれch
目的:
ぺか勢でIT勉強会チックな事をして、Peercast本体やツール、コンテンツ等の知見を交換する。日時:
2012年7月1日(日) 18:00~21:00頃(予定)主催がPeercastにチャンネルを立てて、発表者の配信を中継します。
(PeCaハッカソン成果発表会と同様のスタイル)
主催:
ぷろぐれchスピーカー(敬称略・ABC順):
TP管理人あれくま
ぷろぐれch
ライトニングトーク:
未定(飛び入り歓迎)2012年5月30日水曜日
Async CTPの再インストール
何かしらの原因でAsync CTPが動作しなくなったので再インストールしようとしたら苦戦した話です。
Async CTP v3 がインストールできない場合の対処
この記事の通りKBをアンインストールする必要があるのですが、
KB2635973、KB2549864だけでは足りず、
KB2645410等もアンインストールする必要があるようでした。
一先ず報告まで。
Async CTP v3 がインストールできない場合の対処
この記事の通りKBをアンインストールする必要があるのですが、
KB2635973、KB2549864だけでは足りず、
KB2645410等もアンインストールする必要があるようでした。
一先ず報告まで。
2012年5月28日月曜日
Apache WicketにMVVMを適用する
Apache WicketとはWebアプリケーションフレームワークの一つで、
ピュアHTMLとJavaで動的なWebページを作ることの出来るフレームワークです。
一方MVVMとはアプリケーションの設計モデルの一つで、
マイクロソフトのWPFやWindows Formと非常に相性がいい設計モデルです。
最近ウェブサイトを作る機会があったので、
久々にWicketを触るのと同時に、設計モデルとしてMVVMを適用してみました。
MVVMを適用することで、ロジックや画面構成と、画面デザインや画面関係のフレームワークとを完全に分離することができます。
例えば、綺礼にMVVMを適用したWindows Formアプリケーションは、ロジックを全く書き換えずにViewだけをWPFに置き換えることが出来ます。
適用の前にMVVMについて軽く記述しておきます。
MVCがModel-View-Controllerの3つに分かれているのに対して、
MVVMはModel-View-ViewModelの3つに分かれています。
ModelとViewの意味は、MVCでもMVVMでもほぼ同じです。
・Model→データ及び業務ロジック、つまりオブジェクト
・View→画面デザイン
MVCではこれにControllerが加わります。
・Controller→Viewの構築やModelの更新
一方で、MVVMのViewModelとはViewを構成するModelという意味です。
一つのViewにつき一つのViewModelを紐付け、互いに交換可能です。
詳細についてはWPFやMVVMについての別の記事を参照してください。
さて、このMVVMをWicketに適用すると、おおよそ以下のようになります。
・Model→業務ロジック・エンティティ・Daoなど
・View→htmlおよびそれに対応する.java・ViewModel→Viewに割り当てるDefaultModel
ViewのjavaでViewModelを生成してDefaultModelに割り当て、CompoundPropertyModelで画面に表示します。
リンクやフォームなどの操作は、ViewModelのCommandを通して行います。
画面遷移については通常通りViewが行います。
以上、思いついたとおりに書き殴ったので分かりにくい点が多々ありますので、
そのうち実際のパッケージ構成なり画像なりを加えて再構成したいと思います。
ピュアHTMLとJavaで動的なWebページを作ることの出来るフレームワークです。
一方MVVMとはアプリケーションの設計モデルの一つで、
マイクロソフトのWPFやWindows Formと非常に相性がいい設計モデルです。
最近ウェブサイトを作る機会があったので、
久々にWicketを触るのと同時に、設計モデルとしてMVVMを適用してみました。
MVVMを適用することで、ロジックや画面構成と、画面デザインや画面関係のフレームワークとを完全に分離することができます。
例えば、綺礼にMVVMを適用したWindows Formアプリケーションは、ロジックを全く書き換えずにViewだけをWPFに置き換えることが出来ます。
適用の前にMVVMについて軽く記述しておきます。
MVCがModel-View-Controllerの3つに分かれているのに対して、
MVVMはModel-View-ViewModelの3つに分かれています。
ModelとViewの意味は、MVCでもMVVMでもほぼ同じです。
・Model→データ及び業務ロジック、つまりオブジェクト
・View→画面デザイン
MVCではこれにControllerが加わります。
・Controller→Viewの構築やModelの更新
一方で、MVVMのViewModelとはViewを構成するModelという意味です。
一つのViewにつき一つのViewModelを紐付け、互いに交換可能です。
詳細についてはWPFやMVVMについての別の記事を参照してください。
さて、このMVVMをWicketに適用すると、おおよそ以下のようになります。
・Model→業務ロジック・エンティティ・Daoなど
・View→htmlおよびそれに対応する.java・ViewModel→Viewに割り当てるDefaultModel
ViewのjavaでViewModelを生成してDefaultModelに割り当て、CompoundPropertyModelで画面に表示します。
リンクやフォームなどの操作は、ViewModelのCommandを通して行います。
画面遷移については通常通りViewが行います。
以上、思いついたとおりに書き殴ったので分かりにくい点が多々ありますので、
そのうち実際のパッケージ構成なり画像なりを加えて再構成したいと思います。
2012年5月27日日曜日
オープンライブキャスティング勉強会
今日の配信で決めたことを幾つか報告します。
【オープンライブキャスティング勉強会】
日時:6月30日 7月1日予定
スピーカーとの調整で後ろにずらす可能性あり
場所:Peercast内 当日になん実で鏡さんの協力があればなん実でも配信
テーマ「配信」
(配信に結び付けられればどんな話でもOK)
内容:
・メインセッション(2,30分 × n人)
・ライトニングトーク(5分 × n人)
それに先立って第2回Peercastハッカソンを開きます。
【第2回Peercastハッカソン】
日時:6月8日~6月10日
内容は前回のハッカソンに準じて調整します。
以上
【オープンライブキャスティング勉強会】
日時:
スピーカーとの調整で後ろにずらす可能性あり
場所:Peercast内 当日になん実で鏡さんの協力があればなん実でも配信
テーマ「配信」
(配信に結び付けられればどんな話でもOK)
内容:
・メインセッション(2,30分 × n人)
・ライトニングトーク(5分 × n人)
それに先立って第2回Peercastハッカソンを開きます。
【第2回Peercastハッカソン】
日時:6月8日~6月10日
内容は前回のハッカソンに準じて調整します。
以上
2012年5月26日土曜日
オープンライブキャスティング勉強会
ぺか勢やなん実勢(特にプログラマ勢)向けの勉強会を開こうと考えています。
メインセッション&LTのよくあるIT勉強会風のスタイルで、配信やツールの情報交換などができたらいいなと思っています。
【重要】
現在どのくらい参加者が集まりそうか?確認するためのアンケートを行なっています。
少しでも気になっている方は投票をお願いします。
http://tsunotter.com/3197
・目的
Peercastやなんでも実況Vのツール開発者同士で集まり、行なっている活動を発表し合う事で、
コミュニティ発展の方向性の確認や、開発者同士の知識交換・技術向上を図る。
・場所
可能そうなら関東か関西かに場所を確保する。
もしくは配信で行う。
【要調査】
・日時
6月か7月か
【要調整】
メインセッション&LTのよくあるIT勉強会風のスタイルで、配信やツールの情報交換などができたらいいなと思っています。
【重要】
現在どのくらい参加者が集まりそうか?確認するためのアンケートを行なっています。
少しでも気になっている方は投票をお願いします。
http://tsunotter.com/3197
・目的
Peercastやなんでも実況Vのツール開発者同士で集まり、行なっている活動を発表し合う事で、
コミュニティ発展の方向性の確認や、開発者同士の知識交換・技術向上を図る。
・場所
可能そうなら関東か関西かに場所を確保する。
もしくは配信で行う。
【要調査】
・日時
6月か7月か
【要調整】
2012年3月23日金曜日
2012年2月23日木曜日
Nullless型
Scalaやらの関数型言語にはOptionという「値が入ってるか入っていないかはっきりしない」というすんばらしいジェネリッククラスがあります。
C++なんかにもBoostライブラリにOptionalの実装があったりします。
(C#にも一応Nullableという型がありますが、これはstructにnullを入れるようにするだけの機能しかありません。)
近代的なプログラミングだとこれらとNullクラスパターンでnullポインタと無効値をキッチリ切り分けることが出来るわけです。
ところが実務だとそんなことお構いなしで
ガンガンnull値を返してnullチェックを強要するわ、明らかにnullを返さないパスだろうが「nullチェックを入れろ」とか言ってくるわけです。嘆かわしい限りですね。
そこで、そんなら参照型でも絶対にnullが入ってないことを保証することは出来ないもんか、という発想に至ります。
こんな感じで。
// null禁止型
class Nullless<T>
{
public T Instance { get; private set; }
// 引数なしコンストラクタは持たない(初期化時に必ずインスタンスがセットされる)
public Nullless(T instance)
{
if (instance == null)
// nullを入れようとするとexception
throw new ArgumentNullException();
Instance = instance;
}
// 他にcastとかも定義する
}
これをこんな感じで使います。
//生のクラスをそのまま突っ込める
Nullless<Hoge> hoge1 = new Hoge();
// nullを挿したらException
Nullless<Hoge> hoge2 = null; <-- ArgumentNullException
//挿し替えはOK
hoge2 = new Hoge();
// メソッドはInstanceプロパティを介して
hoge.Instance.method();
で、Nullableのごとく
//生のクラスをそのまま突っ込める
Hoge! hoge1 = new Hoge();
// nullを挿したらException
Hoge! hoge2 = null; <-- ArgumentNullException
//挿し替えはOK
hoge2 = new Hoge();
// そのままメソッド叩けたら素敵
hoge.method();
こんな感じで使えたら素敵かなと。
自分で使った事無いので実用性は実際のところわからないですけどね。
以上、思うことを適当に書き綴りました。
C++なんかにもBoostライブラリにOptionalの実装があったりします。
(C#にも一応Nullableという型がありますが、これはstructにnullを入れるようにするだけの機能しかありません。)
近代的なプログラミングだとこれらとNullクラスパターンでnullポインタと無効値をキッチリ切り分けることが出来るわけです。
ところが実務だとそんなことお構いなしで
ガンガンnull値を返してnullチェックを強要するわ、明らかにnullを返さないパスだろうが「nullチェックを入れろ」とか言ってくるわけです。嘆かわしい限りですね。
そこで、そんなら参照型でも絶対にnullが入ってないことを保証することは出来ないもんか、という発想に至ります。
こんな感じで。
// null禁止型
class Nullless<T>
{
public T Instance { get; private set; }
// 引数なしコンストラクタは持たない(初期化時に必ずインスタンスがセットされる)
public Nullless(T instance)
{
if (instance == null)
// nullを入れようとするとexception
throw new ArgumentNullException();
Instance = instance;
}
// 他にcastとかも定義する
}
これをこんな感じで使います。
//生のクラスをそのまま突っ込める
Nullless<Hoge> hoge1 = new Hoge();
// nullを挿したらException
Nullless<Hoge> hoge2 = null; <-- ArgumentNullException
//挿し替えはOK
hoge2 = new Hoge();
// メソッドはInstanceプロパティを介して
hoge.Instance.method();
で、Nullableのごとく
//生のクラスをそのまま突っ込める
Hoge! hoge1 = new Hoge();
// nullを挿したらException
Hoge! hoge2 = null; <-- ArgumentNullException
//挿し替えはOK
hoge2 = new Hoge();
// そのままメソッド叩けたら素敵
hoge.method();
こんな感じで使えたら素敵かなと。
自分で使った事無いので実用性は実際のところわからないですけどね。
以上、思うことを適当に書き綴りました。
2012年2月1日水曜日
SCFH DSFのパッチ内容
先日SCFH DSFへコミットした修正の内容をまとめます。
SCFH DSFはmosamosa氏が作成した、peercastやニコニコ動画などのストリーミング配信において有用なツールです。
オリジナル版のサイトはこちら(SCFH DSFは旧コンテンツにあります)
SCFH DSFは非常に使いやすくて便利なツールですが、最近の環境では幾つか問題がありました。
一つはvista以降の環境だとハードウェアによる拡大縮小ができない点、
もう一つは特定の環境で音声が乱れる・取り込みが停止する点です。
暫くソースコードを舐め回した結果、修正どころがわかってきました。
一つ目はvista以降から画面周りの扱いが変わったことから起きたと思われるものです。
これはサーフェスのバッファの取り方を変えたら何故か動くようになりました。
二つ目はCPUの動作周波数が変わる環境で、(バグか仕様かはわかりませんが)タイマがずれてしまうことによるものです。
これはタイマをずれないものに差し替えました。
#ちなみに環境依存の問題なのでpullリクエストは出していません。
以下に該当する方は元のファイルを差し替えて使ってみてください。
・OSがvista/7の方
・エンコード中に音がずれる、映像と音が合わない、音が消える、映像が止まる等が起きる方
ダウンロード
(ページ右上の元のファイルをダウンロードをクリックしてください)
使い方
1. ダウンロードしたアーカイブをSCFH DSFのフォルダに解凍します
2. エンコーダとSCFH DSFを起動します。
3. SCFH DSFのウィンドウの、スレッド数を1にして、縮小方法をNearest(DirectDraw 1pass扱いになります)、またはBilinear(DirectDraw 2pass扱いになります)を選択します。
ソースはこちら
progre/SCFH DSF - github
以上。
SCFH DSFはmosamosa氏が作成した、peercastやニコニコ動画などのストリーミング配信において有用なツールです。
オリジナル版のサイトはこちら(SCFH DSFは旧コンテンツにあります)
SCFH DSFは非常に使いやすくて便利なツールですが、最近の環境では幾つか問題がありました。
一つはvista以降の環境だとハードウェアによる拡大縮小ができない点、
もう一つは特定の環境で音声が乱れる・取り込みが停止する点です。
暫くソースコードを舐め回した結果、修正どころがわかってきました。
一つ目はvista以降から画面周りの扱いが変わったことから起きたと思われるものです。
これはサーフェスのバッファの取り方を変えたら何故か動くようになりました。
二つ目はCPUの動作周波数が変わる環境で、(バグか仕様かはわかりませんが)タイマがずれてしまうことによるものです。
これはタイマをずれないものに差し替えました。
#ちなみに環境依存の問題なのでpullリクエストは出していません。
以下に該当する方は元のファイルを差し替えて使ってみてください。
・OSがvista/7の方
・エンコード中に音がずれる、映像と音が合わない、音が消える、映像が止まる等が起きる方
ダウンロード
(ページ右上の元のファイルをダウンロードをクリックしてください)
使い方
1. ダウンロードしたアーカイブをSCFH DSFのフォルダに解凍します
2. エンコーダとSCFH DSFを起動します。
3. SCFH DSFのウィンドウの、スレッド数を1にして、縮小方法をNearest(DirectDraw 1pass扱いになります)、またはBilinear(DirectDraw 2pass扱いになります)を選択します。
ソースはこちら
progre/SCFH DSF - github
以上。
2012年1月27日金曜日
最近の開発状況(2)
自作スクリーンキャプチャが落ち着きつつある一方、頭に浮かんでいるのがゲーム開発です。
内容は爆東か音ゲーで、HTML5技術でやるつもりです。
というのもきっかけはInfoQのAngry birdがhtml5に移植されたという記事を読んでから。
Joel Webber氏がAngry BirdsのHTML5への移植を語る
もういいかげんhtml5でゲーム作ってもいいんじゃないかというか大手から先行事例が来てしまったので、やってみたくなったわけです。
今はネットワーク周りの技術検証段階で、開発着手はそれを突破できるか次第ですね。
最近の開発状況(1)
火水木とROCK BANDやってきましたね。多分今日もやります。
月曜からプログラミング配信が滞ってしまいましたが、やることは固めています。配信外で。
今回のフェーズはSCFHにDirect3D9画処理を組み込んだところでクローズする見通しで、自作スクリーンキャプチャは当分凍結かもです。
SCFHの改造だけで要件の半分は満たせそうなので。シェアウェア配布が遠のくのは痛いですが他にやりたいことが出てきたので仕方なし。
月曜からプログラミング配信が滞ってしまいましたが、やることは固めています。配信外で。
今回のフェーズはSCFHにDirect3D9画処理を組み込んだところでクローズする見通しで、自作スクリーンキャプチャは当分凍結かもです。
SCFHの改造だけで要件の半分は満たせそうなので。シェアウェア配布が遠のくのは痛いですが他にやりたいことが出てきたので仕方なし。
2012年1月15日日曜日
2012年1月13日金曜日
CS:Sネタ鯖案 その3
敵を見つけたら「be enemy!」が再生されるとか色々考えが膨らみます。
HDD漁ったらkamikaze鯖のソースが出てきたのでプラグインのアップデートさえすれば
おそらく動くのではないかと。
あとはこれをベースに作る。
やるなら、ですけど。
HDD漁ったらkamikaze鯖のソースが出てきたのでプラグインのアップデートさえすれば
おそらく動くのではないかと。
あとはこれをベースに作る。
やるなら、ですけど。
2012年1月11日水曜日
CS:Sネタ鯖案
ムスカ鯖クローンのネタをなんとなく考えたのをメモ。
メインストリーム:どうでしょう
bot側最強:ミスター(Mr.どうでしょう、みすた君)
プレイヤー側ボス:ヒゲ(甘い物大魔神、ゲンゴロウ)
すずむしさんは主にナレーションで参加?
テーマ1:ビーマニ
前半5鍵、後半7鍵
テーマ2:シリアスサム
前半1st&2nd、後半3:BFE
deマップはCT側でT側kamikazeがbombを設置する前に全員排除する(以前のkamikaze鯖のルール)
csマップは某だるま鯖ルール
で、これ考えてたら闇雲に鯖作ってもドM鯖以外のネタ鯖住人分断させるだけかなーって思った所でやる気解除しました。
メインストリーム:どうでしょう
bot側最強:ミスター(Mr.どうでしょう、みすた君)
プレイヤー側ボス:ヒゲ(甘い物大魔神、ゲンゴロウ)
すずむしさんは主にナレーションで参加?
テーマ1:ビーマニ
前半5鍵、後半7鍵
テーマ2:シリアスサム
前半1st&2nd、後半3:BFE
deマップはCT側でT側kamikazeがbombを設置する前に全員排除する(以前のkamikaze鯖のルール)
csマップは某だるま鯖ルール
で、これ考えてたら闇雲に鯖作ってもドM鯖以外のネタ鯖住人分断させるだけかなーって思った所でやる気解除しました。
ブログ始めました
数年ぶりにブログを始めました。
以前ホームページ代わりにブログを書いていたこともありましたが、
今回はホームページとは別に開設しました。
最近はTwitterで時折時折つぶやいては居ますが、それより内容の濃い話を書きなぐったりアイディアを書き溜めたりできればいいかなと。
当面の課題は配信クラスタとエンジニアクラスタをどう住み分けるか、でしょうか。
以前ホームページ代わりにブログを書いていたこともありましたが、
今回はホームページとは別に開設しました。
最近はTwitterで時折時折つぶやいては居ますが、それより内容の濃い話を書きなぐったりアイディアを書き溜めたりできればいいかなと。
当面の課題は配信クラスタとエンジニアクラスタをどう住み分けるか、でしょうか。
2012年1月10日火曜日
登録:
投稿 (Atom)