<?xml version="1.0" encoding="UTF-8" ?>
<feed
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
	xml:lang="ja-JP"
>
	<title>私とデブサミ</title>
	<subtitle>最新5件を表示します。</subtitle>
	<id>tag:txqz.net,1970:/genre/%E3%83%87%E3%83%96%E3%82%B5%E3%83%9F</id>
	<link rel="self" href="http://txqz.net/genre/%E3%83%87%E3%83%96%E3%82%B5%E3%83%9F.atom"/>
	<link rel="alternate" type="application/rss+xml" href="http://txqz.net/genre/%E3%83%87%E3%83%96%E3%82%B5%E3%83%9F.rdf"/>
	<link rel="alternate" type="application/xhtml+xml" href="http://txqz.net/genre/%E3%83%87%E3%83%96%E3%82%B5%E3%83%9F.xhtml"/>
	<link rel="alternate" type="text/html" href="http://txqz.net/genre/%E3%83%87%E3%83%96%E3%82%B5%E3%83%9F.html"/>
	<link rel="contents" href="http://txqz.net/genre" title="タグ一覧"/>
	<link rel="first" href="http://txqz.net/genre/%28%E7%A6%8F%29" title="(福)"/>
	<link rel="prev" href="http://txqz.net/genre/%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E5%90%8D%E7%84%A1%E3%81%97" title="デフォルト名無し"/>
	<link rel="next" href="http://txqz.net/genre/%E3%83%87%E3%83%96%E3%82%B5%E3%83%9F2008" title="デブサミ2008"/>
	<link rel="last" href="http://txqz.net/genre/%EF%BD%83%EF%BD%83TLD" title="ｃｃTLD"/>
	<author>
		<name>陽坂智佐</name>
		<email>spambasket@txqz.net</email>
	</author>
	<entry>
		<title>デブサミ2008 13-D-7: JavaScript Tips &amp; Technique</title>
		<id>tag:txqz.net,2008-02-13:/blog/2008/02/13/1852</id>
		<link rel="alternate" href="http://txqz.net/blog/2008/02/13/1852"/>
		<content type="xhtml">
			<div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://d.hatena.ne.jp/amachang/" title="IT戦記">id:amachang</a>のターン。例のJavaScriptの歴史シートからプレゼン開始。JavaScriptは初心者向け言語であり、オブジェクト指向言語であり、プロトタイプベース言語であり、関数指向言語でもある一粒で4度おいしい言語なのだというお話。</p>
<h3>JavaScriptは初心者向け言語</h3>
<ul>
<li>すぐに始められる</li>
<li>すぐに公開できる。ツッコマレビリティが重要。PHPだとサーバが必要だけどJSだとブログでもいい</li>
<li>おもしろい</li>
<li><a href="https://addons.mozilla.org/ja/firefox/addon/1843" title="Firebug :: Firefox Add-ons">Firebug</a>とか<a href="http://www.asahi-net.or.jp/~xe4r-kmt/jsh/jsh.html" title="jsh">jsh</a>とか環境が充実</li>
</ul>
<h3>JavaScriptはオブジェクト指向言語</h3>
<p>JavaScriptのメッセージには角括弧"[]"のメッセージと丸括弧"()"のメッセージがあると考えると見通しが良くなる。</p>
<pre><code class="javascript">a = [1,2,3]
a[1] #=> 2</code></pre>
<p>ドット"."は角括弧"[]"のシンタックスシュガーである。<code class="javascript">obj.hoge = 1</code> と <code class="javascript">obj["hoge"] = 1</code> は同じ。同様に<code class="javascript">obj.fuga()</code> と <code class="javascript">obj["fuga"]()</code> は同じ。関数以外にも使えて:</p>
<pre><code class="javascript">f = function(a) {return a + 1}
f(1) #=> 2</code></pre>
<p>式は演算子以外は全て値とメッセージ、つまり[]と()でできている。変数も値とメッセージ。with文の復習をすると分かる。withされたメッセージに角括弧のメッセージを送るということ。</p>
<h3>JavaScriptはプロトタイプベース言語</h3>
<p>オブジェクトがundefinedのときにはプロトタイプの値を使う。</p>
<h3>JavaScriptは関数指向言語</h3>
<p><dfn>関数指向言語</dfn>というのはラムダ計算を使ってプログラミングをするもの。<dfn>カリー化</dfn>(1引数の関数にすること)したりできる。add(1,2) を curriedAdd(1)(2) というふうにできる。1個目の引数と2個目の引数を別のタイミングで決められるのが利点。たとえば:</p>
<pre><code class="javascript">add5 = curriedAdd(5);
add5(10); #=> 15
add5(15); #=> 20</code></pre>
<p>メモ化が重要。</p>
<h3>おすすめライブラリ</h3>
<p><a href="http://jquery.com/" title="jQuery: The Write Less, Do More, JavaScript Library">jQuery</a>と<a href="http://extjs.com/" title="Ext JS - JavaScript Library">Ext JS</a>のススメ。jQueryはやわらかいライブラリで1番人気? メソッドチェーンにこだわり。すごいのはend()メソッド。効率よく、しかも早いしきれいに書けるのがすごいところ。プラグインもたくさんあるよ! 私もjQuery大好き!</p>
<p>EXT JSは反対に固いライブラリ(大規模開発にも使える的な意味で)。3万行もあるライブラリで、GUIを作るための強力なクラス群が魅力。名前の付け方にセンスがあって、beforeがb4になっていたりする。アスペクト指向的なところもある。</p>
<pre><code class="javascript">Ext.componentMgr.create({
    xtype: window,
    width: 300, height: 200
})
win.show();</code></pre>
<p>(上のソースはプレゼンで紹介されていたソースをおぼろげに書き写したものなので正確なものでないかも)</p>
<p><a href="http://d.hatena.ne.jp/shinichitomita/" title="snippets from shinichitomita’s journal">id:shinichitomita</a>が作った<a href="http://afrous.com/" title="Afrous - Ajax-powered mash up engine for the rest of us : Top">Afrous</a>がすごいよ! きょうはIE7
の自動更新日ですね! こんにちは! などなど</p>
			</div>
		</content>
		<category term="JavaScript"/>
		<category term="デブサミ"/>
		<category term="デブサミ2008"/>
		<trackback:ping>http://txqz.net/blog/2008/02/13/1852/tb</trackback:ping>
		<published>2008-02-16T15:33:32+09:00</published>
		<updated>2008-02-16T16:12:02+09:00</updated>
	</entry>
	<entry>
		<title>デブサミ2008 13-D-5: 次世代ウェブフレームワークの幕開け～ステートフルはじめました/君が僕を望むなら僕は君を忘れない～</title>
		<id>tag:txqz.net,2008-02-13:/blog/2008/02/13/1626</id>
		<link rel="alternate" href="http://txqz.net/blog/2008/02/13/1626"/>
		<content type="xhtml">
			<div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://yoshiori.org/blog/" title="Yoshioriの日記">Yoshioriさん</a>のターン。お姉さんが「僕が君を」のあたりを読み上げるときに班笑いになっていたのが面白かった。ステートフルのお話だけどRESTと競合したり敵対するものじゃないよというお断りから。というか受付で資料を受け取って驚いた。トナーがー</p>
<p>httpプロトコルはステートレス。COOKIEとかGETパラメータとかPOSTパラメータとか他のヘッダとかを使って擬似的にステートフルにできている。あとsessionにnullgwdocomoと書くと端末情報を入手できるのらしい。</p>
<p>ステートレスだけで処理しようとすると問題が起こる。[入力]→[確認]→[完了]と画面が推移するとき、ユーザが入力した情報をhiddenパラメータなどでクライアントに返してしまうと、確認の前と完了の前とで2回データチェックする必要が出てくる。</p>
<p>HTTPプロトコルがステートレスなのにアプリがステートフルを要求している。いまさらHTTPプロトコルは変えようがない。そこのギャップをフレームワークがうまく解決してくれる。</p>
<p>クライアントに値を返すとバリデートが2回必要になるとか、戻るボタン対策やダブルサブミット対策やマルチウィンドウ対策やF5対策などの問題をフレームワーク側で引き受けてくれるので、ビジネスロジックに注力できるようになる。逆にデメリットとしては学習コストがかかったり、選択肢が少なかったり、session乱発でメモリ使いまくりで負荷分散が大変だったりする。でもきょうび32ギガメモリとかフツーなので平気ですよね<span class="face">^^</span></p>
<p>次にJBoss Seamの話。JBoss SeamはJBossによるはじめてのフレームワーク。SeamはJSF(VとC)とEJB3(M)をつなぐGlue(糊)の役割。<a href="http://flickr.com/photos/nekop/2110953958/" title="Japan JBug on Flickr - Photo Sharing!">みんな大好きぎゃびんきんぐ</a>。</p>
<p>そしてWicketの話。Swingのようなコーディングができて良い感じ。VとC。コンポーネント指向。HTMLとJavaだけで完結。XML使わないの最高。書いてると分かりやすい。</p>
<p>さてこれらのフレームワークに移行すべきだろうか。まずステートフルフレームワークの存在を認識してほしい。これらのフレームワークはかれた技術の集合であるRoRとは対極にあるものだ。ステートフルフレームワークを<em>抽象的に</em>理解することが大事。「具体的なこと」は本質を表していないことが多い。「すごい速い馬が欲しい」と顧客に言われたら車を用意するのがエンジニア。本質は「速く移動すること」だから。</p>
<p>最後のメッセージがとても心に残った。「みなさん発表しましょう! 間違えはマイナスにならない。文句よりどうしたいかを言うようにしよう。」ブログでもjava-jaや1000speakersなどのカンファレンスでも。そして「彼らを何とかする」</p>
			</div>
		</content>
		<category term="Java"/>
		<category term="デブサミ"/>
		<category term="デブサミ2008"/>
		<category term="フレームワーク"/>
		<trackback:ping>http://txqz.net/blog/2008/02/13/1626/tb</trackback:ping>
		<published>2008-02-16T16:40:44+09:00</published>
		<updated>2008-02-16T16:40:44+09:00</updated>
	</entry>
	<entry>
		<title>デブサミライブ: Ruby と Adobe AIRで実現、メッセージングアプリ構築法</title>
		<id>tag:txqz.net,2008-02-13:/blog/2008/02/13/1515</id>
		<link rel="alternate" href="http://txqz.net/blog/2008/02/13/1515"/>
		<content type="xhtml">
			<div xmlns="http://www.w3.org/1999/xhtml">
<p>この時間には予約を入れておらずブースでも見て回ろうかなと思っていたのだけれども、「デブサミライブ」なるものが会場のひとつで行われていることを見つけたのでそのまま入ってみた。<a href="http://codezine.jp/devsumi/2008/live/index.html" title="デブサミライブ！－Developers Summit 2008 - デブサミ2008">デブサミライブが事前登録不要であること</a>は後で知った。この時間の資料は<a href="http://blog.masuidrive.jp/" title="masuidrive on rails">masuidrive on rails</a>で公開されるとのこと。</p>
<ins class="ps" datetime="2008-02-16T15:32:56+09:00" id="PS20080216153256">
<p><a href="http://blog.masuidrive.jp/index.php/2008/02/13/air_blazeds_ruby/" title="masuidrive on rails » Blog Archive » [予告編 30分]AIRとBlazeDSとRubyでメッセンジャーを作る[129ページ]">公開された</a>。</p>
</ins>
<p>とにかく、AIRで作るのにあたっては日本語処理が問題なのらしい。BlazeDSは面白そうなので、後で調べてみたい。</p>
			</div>
		</content>
		<category term="デブサミ"/>
		<category term="デブサミ2008"/>
		<trackback:ping>http://txqz.net/blog/2008/02/13/1515/tb</trackback:ping>
		<published>2008-02-16T15:32:56+09:00</published>
		<updated>2008-02-16T16:09:55+09:00</updated>
	</entry>
	<entry>
		<title>デブサミ2008 13-B-3: ふつうのRubyプログラマに贈るRubyプログラミング講座</title>
		<id>tag:txqz.net,2008-02-13:/blog/2008/02/13/1415</id>
		<link rel="alternate" href="http://txqz.net/blog/2008/02/13/1415"/>
		<content type="xhtml">
			<div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://www.loveruby.net/ja/" title="LoveRubyNet">青木峰郎さん</a>によるRubyのお話。Rubyではprotectedなんてほとんど使わないよとか、制御構造は選り好みせずに使おうとかの話。Javaのイメージを引きずってRubyでもprotectedとか使うと残念なことになるとかsendメソッドの話とか、Rubyでプログラミングをするときに気をつけるべき点をいくつも知れて勉強になった。以下メモったこと。</p>
<h3>Rubyでprotected使ってる?</h3>
<ul>
<li>Rubyでprotectedを使っている人? ⇒ 使っていない</li>
<li>Rubyじゃ使いません</li>
<li>95％は間違い。Railsも間違っている</li>
<li>JavaやC++の人がprotected使いまくり。しかも意味がない</li>
<li>JavaやC++はクラス単位。Rubyはオブジェクト単位</li>
<li>具体例 (メモれなかったけど、あとでppt見ればいいよね)</li>
<li>Rubyはprivateとpublicだけ使えばOKなんです ←結論</li>
</ul>
<h3>pとpp</h3>
<ul>
<li>p使ってる人? ⇒ 多い</li>
<li>pp使ってる? ⇒ それほどでもない</li>
<li>ppはpの強力版。読みやすい</li>
<li>requireする。田中哲さんが作った</li>
<li>pはstdoutに出力。strerrではない。inspectメソッドを実装すれば表示を変えられる</li>
<li>to_sとinspectの違い: to_sはオブジェクトを文字列に変換、inspectはデバッグ用表示</li>
</ul>
<h3>unlessとuntil</h3>
<ul>
<li>制御構造は選り好みせずに使おう。redo以外</li>
<li>if/whileで書けるから要らないよ説 → それgotoでできるよ</li>
<li>プリミティブ症候群に陥らないで</li>
<li>unlessの使いどころ: 前提条件</li>
<li>untilの使いどころ: 終了条件をはっきり書きたいとき</li>
</ul>
<h3>クラスと名前空間</h3>
<ul>
<li>モジュールのネストしてる? モジュールはクラスの名前空間を兼ねている</li>
<li>Javaでいうパッケージ</li>
<li>ネストは深くしすぎない。せいぜい3段。見た目が良くない</li>
</ul>
<h3>ファイル名とクラス名</h3>
<ul>
<li>最も代表的なクラスの名前をファイル名にする</li>
<li>ファイル名は小文字で</li>
<li>モジュールの場合はCflat::Nodeクラスだったらcflat/node.rbみたいに</li>
<li>関連するクラスはひとつのファイルにまとめる。Javaのように1クラス1ファイルにはしない</li>
</ul>
<h3>大クラス主義</h3>
<ul>
<li>Rubyは<dfn>大クラス主義</dfn>。いろんな仕事をひとつのクラスにまとめて行わせる</li>
<li>RubyのArrayは配列とスタックとキューを全部兼ねている</li>
<li>StringはStringBuilderやStringBufferを兼ねている</li>
<li>それでいいの? → OKです。うまくいってるしー</li>
<li>マイクロカーネル vs. モノリシックカーネル論争に似てる?</li>
<li>コンポーネントが多いとコンポーネント間の複雑性が増す。結局バランスなんです ←結論</li>
</ul>
<h3>クラス分岐をsendでやる</h3>
<p>ここから第2部。裏世界の話。</p>
<ul>
<li>たくさんのクラスで別の処理をしたい → ポリモーフィズムを使う? → ひとつの処理が複数クラスに細切れになる</li>
<li>Visitorパターンを使う? → 実装が面倒</li>
<li>そこでsend。sendはメソッドを呼び出すメソッド</li>
<li><code class="ruby">obj.send(<var>メソッド名</var>,<var>引数</var>)</code></li>
<li><code class="ruby">p 'str'.size</code> → <code class="ruby">p 'str'.send(:size)</code></li>
</ul>
<h3>リフレクションでバージョン間差異を埋める</h3>
<ul>
<li>Rubyのバージョンが1.9になって対応が面倒。そこで<ol>
<li>1.9は無視する。1.9.0はテンゼロなので危ない → 現実的過ぎてむかつく</li>
<li>両方のバージョンで動かす → 非相互互換性</li></ol></li>
<li><code class="ruby">alias funcall send</code></li>
<li>ポイントは<ol>
<li>if/unless野中にclassを書ける。Cのマクロのようなことが書ける</li>
<li>プログラムの実行時にメソッドを追加できる → オープンクラス。JavaやC++はクローズドクラス</li></ol></li>
</ul>
			</div>
		</content>
		<category term="Ruby"/>
		<category term="デブサミ"/>
		<category term="デブサミ2008"/>
		<trackback:ping>http://txqz.net/blog/2008/02/13/1415/tb</trackback:ping>
		<published>2008-02-16T15:31:34+09:00</published>
		<updated>2008-02-16T15:31:34+09:00</updated>
	</entry>
	<entry>
		<title>developers summit 2008 1日目</title>
		<id>tag:txqz.net,2008-02-13:/blog/2008/02/13/1243</id>
		<link rel="alternate" href="http://txqz.net/blog/2008/02/13/1243"/>
		<content type="xhtml">
			<div xmlns="http://www.w3.org/1999/xhtml">
<p>先週あたりから就職活動のために東京に行きっぱなしになっている。泊めてくれる友人には本当に感謝。今日は午前に面接があって、そのあとデブサミに参加した。無料のチケットを<a href="http://www.seshop.com/" title="SEShop.com">SEショップ</a>で買うというシステムになっているので、自分がどのセミナーに登録したのかを確認したりキャンセルや変更をしたりがすんなりできないような仕様になっている。実際、2日目のセミナーを1つ間違えて登録してしまい、事務局の方にお手数をかけることになってしまった。あと、追加登録をする際にも職業などのアンケートに答えないといけないので、このアンケートは追加登録をする人の割合が増せば増すほど信用性が損なわれてしまう。学生の割合が不当に高くになってしまったら私のせいですね。登録メールアドレスとか名前とかから重複を差っぴいて集計されるとは思いますが。デブサミの感想は<a href="/genre/%E3%83%87%E3%83%96%E3%82%B5%E3%83%9F2008" title="デブサミ2008 # txqz (1/1)">ジャンル別一覧</a>からどうぞ。</p>
			</div>
		</content>
		<category term="イベント"/>
		<category term="デブサミ"/>
		<category term="デブサミ2008"/>
		<trackback:ping>http://txqz.net/blog/2008/02/13/1243/tb</trackback:ping>
		<published>2008-02-16T15:31:11+09:00</published>
		<updated>2008-02-16T15:37:19+09:00</updated>
	</entry>
</feed>