<?xml version="1.0" encoding="utf-8" ?>


<?xml-stylesheet href="http://d.hatena.ne.jp/onozaty/rssxsl" type="text/xsl" media="screen"?>


<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<channel rdf:about="http://d.hatena.ne.jp/onozaty/rss">
<title>Enjoy*Study</title>
<link>http://d.hatena.ne.jp/onozaty/</link>
<description>Enjoy*Study</description>

<dc:creator>onozaty</dc:creator>
<dc:date>2012-02-02T01:20:04+09:00</dc:date>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://d.hatena.ne.jp/onozaty/20120111/p1"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/onozaty/20120107/p1"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/onozaty/20111103/p1"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/onozaty/20111101/p1"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/onozaty/20111026/p1"/>
</rdf:Seq>
</items>
</channel>



<item rdf:about="http://d.hatena.ne.jp/onozaty/20120111/p1">
<title>[misc]文字列を定数として宣言すべきパターン</title>
<link>http://d.hatena.ne.jp/onozaty/20120111/p1</link>
<description> たとえば、文字列リテラルをそのまま使用せずに、定数として宣言して使用した場合と private const string SQL = &#34;SELECT * FROM table1 WHERE id = @id&#34;; private const string ID_PARAM_NAME = &#34;@id&#34;; public Record GetRecord(int id) { return ExecuteS</description>

<content:encoded><![CDATA[
<div class="section">
<p>たとえば、文字列リテラルをそのまま使用せずに、定数として宣言して使用した場合と</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">const</span> <span class="synType">string</span> SQL = <span class="synConstant">&#34;SELECT * FROM table1 WHERE id = @id&#34;</span>;

<span class="synType">private</span> <span class="synType">const</span> <span class="synType">string</span> ID_PARAM_NAME = <span class="synConstant">&#34;@id&#34;</span>;

<span class="synType">public</span> Record GetRecord(<span class="synType">int</span> id)
{
    <span class="synStatement">return</span> ExecuteSql(
               SQL,
               <span class="synStatement">new</span> Dictionary&#60;<span class="synType">string</span>, <span class="synType">object</span>&#62;
               {
                   { ID_PARAM_NAME, id }
               });
}
</pre>

<p>定数として宣言せずにそのまま書いた場合で</p>
<pre class="syntax-highlight">
<span class="synType">public</span> Record GetRecord(<span class="synType">int</span> id)
{
    <span class="synStatement">return</span> ExecuteSql(
               <span class="synConstant">&#34;SELECT * FROM table1 WHERE id = @id&#34;</span>,
               <span class="synStatement">new</span> Dictionary&#60;<span class="synType">string</span>, <span class="synType">object</span>&#62;
               {
                   { <span class="synConstant">&#34;@id&#34;</span>, id }
               });
}
</pre>

<p>私(今現在)は、可読性を考えて後者のような書き方をする場合が多いのですが、パフォーマンス的な観点からなのか、なんでも定数として宣言したうえで使うべきと考える人もいます。(私も昔そんな時期がありました…)</p>
<p>人やプロジェクトによって、優先すべきものが違うので、一概にこれが正しいというのは無いと思っていますが、、定数として宣言してから使うことになると、コード上で見なければならない箇所が増える(すぐ近くで宣言されてればまだいいですが)ので、コードの可読性が下がるというデメリットがあると思ってます。</p>
<p>(似たような話で、ローカル変数の宣言と、最初に使用する箇所が離れているようなのも、可読性を下げる要因かと)</p>
<br>

<p>今のところ、自分の中では、文字列を定数として宣言して使うべき箇所は、下記のように考えています。</p>

<ul>
<li>その文字列を、同じ意味/意図で複数個所で使う場合

<ul>
<li>1箇所にまとめておいたほうが、変更漏れが防げて、メンテナンス性が高くなる</li>
</ul>
</li>
<li>その文字列が、文字列だけでは意味を読み取れない場合

<ul>
<li>たとえば"xyz"という文字がそのまま書かれていても、なんのための文字列だかわからない。それを定数として宣言し、変数名から何を表すものなのか読み取れるようにする。</li>
</ul>
</li>
</ul>
<p>上記以外は、必ずしも定数として宣言する必要はない(逆に、定数として宣言してから使うことにより、可読性が落ちる場合がある)と思ってます。</p>
<br>

<p>あと、ヒアドキュメントが使えない言語(Java)は、複数行に渡るような文字列の宣言がしずらい(読みやすく書けない)ので、早くそういった仕組みを取り入れて欲しいですね！</p>
</div>
]]></content:encoded>
<dc:creator>onozaty</dc:creator>
<dc:date>2012-01-11</dc:date>
<dc:subject>misc</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/onozaty/20120107/p1">
<title>[misc]あけましておめでとうございます</title>
<link>http://d.hatena.ne.jp/onozaty/20120107/p1</link>
<description> 遅くなりましたが、今年もよろしくお願いします。 2011年は停滞してしまいましたが、2012年は頑張ります！ (上の絵は、今年の年賀状用に嫁に作ってもらったやつです) </description>

<content:encoded><![CDATA[
<div class="section">
<p><a href="http://www.flickr.com/photos/24360189@N06/6651902579/" title="2012 Happy new year by onozaty_, on Flickr"><img width="462" alt="2012 Happy new year" src="http://farm8.staticflickr.com/7169/6651902579_0b8dede6f6.jpg" height="500"></a></p>
<p>遅くなりましたが、今年もよろしくお願いします。</p>
<p>2011年は停滞してしまいましたが、2012年は頑張ります！</p>
<p>(上の絵は、今年の年賀状用に嫁に作ってもらったやつです)</p>
</div>
]]></content:encoded>
<dc:creator>onozaty</dc:creator>
<dc:date>2012-01-07</dc:date>
<dc:subject>misc</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/onozaty/20111103/p1">
<title>[Chrome]Chrome ExtensionからのXHRリクエストで、Basic認証ダイアログが表示されなくなった</title>
<link>http://d.hatena.ne.jp/onozaty/20111103/p1</link>
<description> 最新(15.0.874.106)で確認したところ、Chrome ExtensionでXHRでBasic認証がかかっているURLにアクセスした際に、認証のダイアログが表示されなくなっていました。 古いChrome(12.0.742.112)が入っていたPCで確認したところ、ちゃんと認証ダイアログが出ているので、どこかの</description>

<content:encoded><![CDATA[
<div class="section">
<p>最新(15.0.874.106)で確認したところ、Chrome ExtensionでXHRでBasic認証がかかっているURLにアクセスした際に、認証のダイアログが表示されなくなっていました。</p>
<p>古いChrome(12.0.742.112)が入っていたPCで確認したところ、ちゃんと認証ダイアログが出ているので、どこかのタイミングで変わったみたいです。</p>
<p>＃この件に関する変更点は、まだ見つけられてませんが…</p>
<br>

<p><a href="http://www.enjoyxstudy.com/chrome/extension/online_bookmark_incsearch/" target="_blank">Online Bookmark IncSearch</a> を触っていて気がつきました。</p>
<p>どうやって認証させようかなぁ。。</p>
</div>
]]></content:encoded>
<dc:creator>onozaty</dc:creator>
<dc:date>2011-11-03</dc:date>
<dc:subject>Chrome</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/onozaty/20111101/p1">
<title>[Google]Google Developer Day 2011 に参加しました。</title>
<link>http://d.hatena.ne.jp/onozaty/20111101/p1</link>
<description> 東京 - Google Developer Day 2011 朝から一日中いましたが、もっぱらHTML5/Chromeのセッションばっかし聞いてました。 一番おもしろかったのは、Eric Bidelmanさんの「今までにないサイトを作る：HTML5 による最新ウェブアプリ」だったんですが、会場入りするのが遅くて立</description>

<content:encoded><![CDATA[
<div class="section">

<ul>
<li><a href="http://www.google.com/intl/ja/events/developerday/2011/tokyo/" target="_blank">東京 - Google Developer Day 2011</a></li>
</ul>
<p>朝から一日中いましたが、もっぱらHTML5/Chromeのセッションばっかし聞いてました。</p>
<p>一番おもしろかったのは、Eric Bidelmanさんの「今までにないサイトを作る：HTML5 による最新ウェブアプリ」だったんですが、会場入りするのが遅くて立ち見になってしまい、腰痛治りかけの身には辛かったです。</p>
<p>とても刺激的な一日でした。また来年も参加したいです。</p>
<br>

<p>以下は、気になったとこのメモ。</p>

<ul>
<li>Android 4.0 (IceCream Sandwich)

<ul>
<li>Androidビーム

<ul>
<li>NFCで通信、見ているサイトを共有</li>
</ul>
</li>
<li>Face Unlock

<ul>
<li>顔認証でロック解除(精度はどれくらいなんだろ、、)</li>
</ul>
</li>
</ul>
</li>
</ul>

<ul>
<li>HTML5

<ul>
<li>Web Intent

<ul>
<li>AndroidのIntentをWEBに。サンプル見たけど、いまいちしっくりこなかった。(AndroidのIntentはイメージつかめているつもりだけど…)</li>
</ul>
</li>
<li>Audio API

<ul>
<li>いつものやつ</li>
</ul>
</li>
<li>他のデバイス

<ul>
<li>Camera</li>
<li>microphone</li>
</ul>
</li>
<li>prerender

<ul>
<li>WEBページをあらかじめ読み込んでおく</li>
</ul>
</li>
<li>RTC</li>
<li>Mediaに応じたCSSの切り替え

<ul>
<li>matchMedia</li>
</ul>
</li>
<li>webkitdirectory</li>
<li>Polyfill

<ul>
<li>HTML5対応していないブラウザでfallback</li>
<li>いろいろなライブラリ</li>
<li>Chrome Frame</li>
</ul>
</li>
</ul>
</li>
</ul>

<ul>
<li>Chrome Developer Tools

<ul>
<li>DOMの変更に対してBreak Pointを設定可能</li>
<li>難読化されているJSを整形</li>
<li>リモートデバッグ</li>
<li>CSSの編集内容は履歴で管理

<ul>
<li>ファイルにも保存できる</li>
<li>エディタになる</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
]]></content:encoded>
<dc:creator>onozaty</dc:creator>
<dc:date>2011-11-01</dc:date>
<dc:subject>Google</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/onozaty/20111026/p1">
<title>[HTML][JavaScript]第22回HTML5とか勉強会に参加しました</title>
<link>http://d.hatena.ne.jp/onozaty/20111026/p1</link>
<description> 第22回 HTML5とか勉強会 : ATND 今回はグラフィック関連APIってことで、Canvas、SVG、WebGL、その他グラフィック関連のライブラリの話が聞けました。 おもしろかったです。ありがとうございます！ とりあえず、気になったとこだけメモを。 Processing.js Processingはとても</description>

<content:encoded><![CDATA[
<div class="section">

<ul>
<li><a href="http://atnd.org/events/20927" target="_blank">第22回 HTML5とか勉強会 : ATND</a></li>
</ul>
<p>今回はグラフィック関連APIってことで、Canvas、SVG、WebGL、その他グラフィック関連のライブラリの話が聞けました。</p>
<p>おもしろかったです。ありがとうございます！</p>
<p>とりあえず、気になったとこだけメモを。</p>

<ul>
<li>Processing.js

<ul>
<li>Processingはとても構文が簡潔</li>
<li>Processing.jsではProcessingの既存コードをそのまま使える

<ul>
<li>パーサを持っていて、ProcessingのコードをJavaScriptに変換して実行</li>
<li>APIは9割方実装</li>
</ul>
</li>
<li>Canvasで描画</li>
<li>3DはWebGLで</li>
</ul>
</li>
</ul>

<ul>
<li>SVG Overview

<ul>
<li>foreingObjectでSVGの中でHTML書ける</li>
<li>SMIL Animation</li>
<li>textPathでpathに沿ってテキスト書ける

<ul>
<li>テキストは選択可能</li>
</ul>
</li>
<li>フィルタ、グラデーション</li>
</ul>
</li>
</ul>

<ul>
<li>WebGL

<ul>
<li>大変</li>
<li>WebGL、Flash、Unityの比較

<ul>
<li><a href="http://helloracer.com/" target="_blank">HelloRacer&#8482;</a></li>
</ul>
</li>
<li>three.js</li>
</ul>
</li>
</ul>

<ul>
<li>IEでのCanvas、SVG

<ul>
<li>IE9でSVGサポート

<ul>
<li>Animationはサポートされていない</li>
</ul>
</li>
</ul>
</li>
<li><a href="http://samples.msdn.microsoft.com/ietestcenter/" target="_blank">Internet Explorer: Testing Center</a>

<ul>
<li>HTML5関連の各ブラウザでの対応状況を確認、その場でテスト</li>
</ul>
</li>
<li>Web Standards Update for Microsoft Visual Studio 2010 SP1

<ul>
<li>HTML5関連のタグを補完</li>
</ul>
</li>
</ul>

<ul>
<li>HTML5な開発環境のお話

<ul>
<li>HTML5のオーサリングツール

<ul>
<li>Dreamweaver、VisualStudioに期待(MSだと、どっちかというとExpression Webの方かなぁ)</li>
</ul>
</li>
<li>EaseIJS

<ul>
<li>JavaScriptのCanvasのライブラリ</li>
<li>FlashライクなAPI、キュメント完備</li>
</ul>
</li>
<li>Raphael

<ul>
<li>SVGを動的に書くためのライブラリ</li>
</ul>
</li>
<li>Processing.js</li>
<li>three.js</li>
</ul>
</li>
</ul>
</div>
]]></content:encoded>
<dc:creator>onozaty</dc:creator>
<dc:date>2011-10-26</dc:date>
<dc:subject>HTML</dc:subject>
<dc:subject>JavaScript</dc:subject>
</item>
</rdf:RDF>

