<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
   <channel>
      <title>hamashun.com blog</title>
      <link>http://www.hamashun.com/blog/</link>
      <description>Webクリエイター浜　俊太朗の、ポートフォリオblogです。</description>
      <language>ja</language>
      <copyright>Copyright 2012</copyright>
      <lastBuildDate>Fri, 21 May 2010 15:17:22 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>ブログ移転します、</title>
         <description><![CDATA[<div class="section">
<p>ブログ移転します。 移転先でも扱う内容はそんなに変わりません。<br />
<a href="http://www.hamashun.me/">hamashun.me</a></p>
</div>

<div class="section">
<p>新ブログは、livedoor BlogをHTML5でカスタマイズしてます。
まだデザインができてないのですが、<a href="http://www.hamashun.com/">hamashun.com</a>のリニューアルタイミングに合わせたかったので取り急ぎ。</p>

<p>こっちのブログは、とりあえず更新停止します。</p>
</div>]]></description>
         <link>http://www.hamashun.com/blog/2010/05/post_50.html</link>
         <guid>http://www.hamashun.com/blog/2010/05/post_50.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Memo</category>
        
        
         <pubDate>Fri, 21 May 2010 15:17:22 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：タイマーなど4本更新</title>
         <description><![CDATA[<div class="column">
<div class="section">
<ul>
<li><a href="/javascript1000/201001/4-canvas.html">canvasでグラフを描いてみる</a></li>
<li><a href="/javascript1000/201002/1-timer.html">タイマー</a></li>
<li><a href="/javascript1000/201002/2-lunch.html">ランチに迷ったら</a></li>
<li><a href="/javascript1000/201002/3-drag.html">ドラッグドロップ で jQuery UI を試してみる</a></li>
</ul>
</div>

<div class="section">
<h3>概要</h3>
<p>溜まってる分をある程度一気にやりました。</p>
</div>

<div class="section">
<h3>感想など</h3>
<h4>canvasでグラフ</h4>
<p>例によって手書きでグラフを書いてみたんですが、canvasの座標は左上からだけどグラフの座標は左下なのが面倒でした。 今度はカンマ区切りとかの値を渡して表示させたい。</p>

<h4>組み込みオブジェクト</h4>
<p>ここ最近は、DateオブジェクトとかMathオブジェクトとかいう、いわゆる組み込みオブジェクトを使う機会がありました。 本で読んだ事はあったんですが、実際に使った事はあまりなかったので新鮮でした。 便利だなーと言うか。</p>
<p>タイマーとかランチとかは完全に自分用です。</p>

<h4>jQuery UI</h4>
<p>簡単便利。 サンプルが超分かりやすいですね。 英語は読めないけどコードだけ読んだらどうにかなる感じ。<br />
idやclassを自由に変えられるっていうのがマークアッパー好みですね。 すごいなーこれ。</p>

</div>
</div>]]></description>
         <link>http://www.hamashun.com/blog/2010/03/js4.html</link>
         <guid>http://www.hamashun.com/blog/2010/03/js4.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Mon, 22 Mar 2010 19:19:29 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：canvasでモンドリアン風の絵を描いてみる</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="/javascript1000/201001/3-canvas.html">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>1月3週目分のJavaScriptです。 canvasにさわってみようがテーマ。 塗りと直線で構成されたモンドリアンっぽい絵ならすぐに描けるんじゃね、って思いついて試してみました。</p>
</div>

<div class="section">
<h3>ソースコード</h3>
<pre><code>$(function(){

var canvas = document.getElementById('test');

if(!canvas.getContext) return;
var ctx = canvas.getContext("2d");

ctx.fillStyle = "rgb(200, 0, 0)";
ctx.fillRect(100, 0, 300, 300);

ctx.fillStyle = "rgb(0, 0, 0)";
ctx.fillRect(85, 0, 15, 400);

ctx.fillStyle = "rgb(0, 0, 0)";
ctx.fillRect(0, 150, 85, 25);

ctx.fillStyle = "rgb(0, 0, 0)";
ctx.fillRect(0, 300, 400, 15);

ctx.fillStyle = "rgb(0, 0, 0)";
ctx.fillRect(350, 310, 15, 90);

ctx.fillStyle = "rgb(0, 0, 0)";
ctx.fillRect(365, 350, 40, 15);


ctx.fillStyle = "rgb(0, 0, 200)";
ctx.fillRect(0, 315, 85, 85);

ctx.fillStyle = "rgb(250, 250, 0)";
ctx.fillRect(365, 365, 35, 35);

});</code></pre>
</div>

<div class="section">
<h3>感想など</h3>
<h4>めんどくさい</h4>
<p>手動で描くと大分面倒くさい。</p>

<h3>次回は</h3>
<p>今回はRectしか使ってないので、もっと色々使ってみたい。</p>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2010/03/jscanvas.html</link>
         <guid>http://www.hamashun.com/blog/2010/03/jscanvas.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Wed, 03 Mar 2010 01:22:19 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：ページ内のリストの中から目的の物を探し出す</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="/javascript1000/201001/2-search_text.html">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>1月2週目のJavaScriptです。 フォームにテキストを入力してボタンを押すと、リストの中から該当した物だけを残して非表示にします。 jQuery使用。</p>
</div>

<div class="section">
<h3>ソースコード</h3>
<pre><code>$(function (){
  var ranking_list = $('#designerList li');
  function list_search() {
    $(ranking_list).show('fast');
    var search_word = $('#searchInput').val();
    if(search_word){
      $(ranking_list).not($(ranking_list + ':contains(' + search_word + ')').closest('li')).hide('fast');
    } // end if
  }
  $('#searchButton').click(function(){
    list_search();
  });
  /*@cc_on
  var key_code = 0;
  $('#searchInput').keydown(function(down){
    if (down.keyCode == '13')
    list_search();
  });
  @*/
});</code></pre>
</div>

<div class="section">
<h3>感想など</h3>
<h4>IE用の部分</h4>
<p>IEは入力フォームでエンターを押しても動作してくれなかったので、キーコードを直接送る事で対応しました。<br />
今回もIEにのみ読み込ませるようにしたのだけど、この手の部分はどうするのが良いのかなあ。 Firefoxなども適用してしまっていいんだろうか。</p>
<h4>苦労した部分</h4>
<p>テキストノードを取得する部分と、非表示にするのは該当した物以外である所が大分苦労しました。 会社のプログラマーの人に聞いたりして。</p>


<h3>改良したい点</h3>
<ul>
<li>アルファベットのケースの差を吸収したい。</li>
</ul>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2010/02/js_3.html</link>
         <guid>http://www.hamashun.com/blog/2010/02/js_3.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sun, 07 Feb 2010 19:01:41 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：imageのフォームボタンをロールオーバー</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><ins>2010-02-01：サンプルページのリンクが切れていたので直しました。</ins></p>
</div>

<div class="section">
<p><a href="/javascript1000/201001/1-btn_image.html">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>1月1週目のJavaScriptです。 type=&quot;image&quot;なフォームボタンをマウスオンでロールオーバーします。 jQuery使用。</p>
</div>

<div class="section">
<h3>ソースコード</h3>
<pre><code>$(function () {
  var preload_btn_num = $('div.submit input[type=&quot;image&quot;]');
  for(var i=0; i&lt;preload_btn_num.length; i++) {
    var preload_btn_src = $(preload_btn_num[i]).attr('src').replace('.png', '');
    var preload_btn = preload_btn_src + '_on.png';
    $('&lt;img&gt;').attr('src', preload_btn);
  }

  $('div.submit input[type=&quot;image&quot;]').hover(function(){
    var btn_src_full = $(this).attr('src');
    var btn_src = btn_src_full.replace('.png', '');
    var on_src = btn_src + '_on.png';
    $(this).attr('src', on_src)
  }, function(){
    var btn_src_png = $(this).attr('src');
    var btn_src = btn_src_png.replace('_on', '');
    $(this).attr('src', btn_src)
  });
});</code></pre>
</div>

<div class="section">
<p>処理を変数に代入→次の行でそれを使って処理をして変数に代入、みたいな部分は一行で書いた方がいいんだろうか。 個人的には別々にした方が読みやすいのだけど。</p>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2010/01/jsimage.html</link>
         <guid>http://www.hamashun.com/blog/2010/01/jsimage.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sun, 31 Jan 2010 08:48:54 +0900</pubDate>
      </item>
            <item>
         <title>CSS HappyLife ZERO がいい感じな件</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="http://css-happylife.com/">CSS HappyLife</a>の平澤さんが<a href="http://css-happylifezero.com/">CSS HappyLife ZERO</a>という、<q cite="http://css-happylifezero.com/">主にCSS初心者・中級者の方を対象にしたCSSに関するアレコレがつまったサイト</q>を公開しました。</p>
<p>まだ未完成との事ですが、関連・参考ページなどへのリンクが逐一載っていたり、対応ブラウザをアイコンで示したり、スクリーンショットを細かに乗せていたりと、凄く丁寧に作ってあります。 これ作るの、すげー大変だったろうなあ……。</p>
</div>

<div class="section">
<p>個人的に特にいいなと思ったのが、デザインでした。 アカデミック臭が良い意味でしないと言うか、初学者な人は取っ付きやすいんじゃないでしょうか。</p>
<p>もちろん「仕様書読め」ってのは正しいですし通るべき道なんですが、慣れてないとあの見た目は結構、圧倒される物があります。 そんな人がワンクッション置くには合ってるんじゃないかなとか。</p>
</div>

<div class="section">
<p>ちょうどうちの会社にインターン生が来ているので、早速紹介しました。 凄く嬉しいタイミングでの公開でした。</p>
<p>しかし平澤さん、<a href="http://takashi-hira.jp/">フリーランスになって</a>更に活動に磨きがかかってて凄いなあ。</p>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2010/01/css_happylife_zero.html</link>
         <guid>http://www.hamashun.com/blog/2010/01/css_happylife_zero.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Note</category>
        
        
         <pubDate>Mon, 18 Jan 2010 22:23:08 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：IEでもimg要素のlabelを効かせる（ライブラリ無し版）</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="/javascript1000/200912/5-label_for_ie.html">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>12月5週目のJavaScriptです。 <a href="http://www.hamashun.com/javascript1000/200911/3-label_for_ie">IEでもimg要素のlabelを効かせる</a>のjQuery無しでも動く版です（<a href="http://webtech-walker.com/">hokaccha</a>さんアドバイスありがとうございます！）。</p>
<p>IE以外では必要ないので、<a href="http://blog.clouder.jp/archives/001005.html">@cc_on ってなに？ - Clouder::Blogger</a>を参考にして振り分けてみました。</p>
</div>

<div class="section">
<h3>ソースコード</h3>
<pre><code>/*@cc_on
var labels = document.getElementsByTagName('label');
for(var i=0; i&lt;labels.length; i++) {
  labels[i].labelFor = labels[i].getAttributeNode('for').nodeValue;
  labels[i].onclick = function () {
    var cursorTarget = document.getElementById(this.labelFor);
    cursorTarget.focus();
    cursorTarget.click();
  }
}
@*/</code></pre>
</div>

<div class="section">
<p>ここの所忙しいのもあって、ちょっと遅れ気味だなあ。 まあ遅れるのを見越して目標設定しているのでギリセーフ。</p>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2010/01/jsieimglabel_1.html</link>
         <guid>http://www.hamashun.com/blog/2010/01/jsieimglabel_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sat, 16 Jan 2010 08:02:41 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：JavaScriptで簡易的なTwitterクライアントのような物を作ってみる試み その1</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="/javascript1000/200912/4-twitter">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>12月4週目のJavaScriptです。 <a href="/javascript1000/200912/2-twitter_search">Twitter Search的な何か</a>をもう少し発展させてみました。</p>
</div>

<div class="section">
<h3>ソースコード（API部分）</h3>
<p>jQueryを使用しています。</p>
<pre><code>$(function () {

  $('#friendTweetForm').after('&lt;ul id=&quot;friendTweet&quot; class=&quot;tweetList&quot;&gt;&lt;/ul&gt;');
  function friendTweet() {
    $.ajax({
      url: 'http://twitter.com/statuses/home_timeline.json',
      data: {
        'callback': 'friendtweet',
        'count': 100
      },
      type: 'get',
      dataType: 'jsonp',
      success: function(friend_data){
        $.each(friend_data, function(i, friend_item) {
          $('#friendTweet').append('&lt;li class=&quot;tweet&quot;&gt;&lt;a href=&quot;http://twitter.com/'+ friend_item.user.screen_name +'/&quot; class=&quot;icon&quot;&gt;&lt;img src=&quot;'+ friend_item.user.profile_image_url +'&quot; alt=&quot;&quot; width=&quot;48&quot; height=&quot;48&quot; /&gt;&lt;span class=&quot;name&quot;&gt;'+ friend_item.user.name +'&lt;/span&gt;&lt;/a&gt;&lt;p class=&quot;text&quot;&gt;'+ friend_item.text +'&lt;a href=&quot;http://twitter.com/'+ friend_item.user.screen_name +'/status/'+ friend_item.id +'&quot;&gt;Status page&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;');
        });
      }
    });
  }
  $('#friendTweetBtn').click(function(){
    $('#friendTweet').empty();
    friendTweet();
  });

  $('#mentionsTweetForm').after('&lt;ul id=&quot;mentionsTweet&quot; class=&quot;tweetList&quot;&gt;&lt;/ul&gt;');
  function mentionsTweet() {
    $.ajax({
      url: 'http://twitter.com/statuses/mentions.json',
      data: {
        'callback': 'mentionstweet',
        'count': 20
      },
      type: 'get',
      dataType: 'jsonp',
      success: function(mentions_data){
        $.each(mentions_data, function(i, mentions_item) {
          $('#mentionsTweet').append('&lt;li class=&quot;tweet&quot;&gt;&lt;a href=&quot;http://twitter.com/'+ mentions_item.user.screen_name +'/&quot; class=&quot;icon&quot;&gt;&lt;img src=&quot;'+ mentions_item.user.profile_image_url +'&quot; alt=&quot;&quot; width=&quot;48&quot; height=&quot;48&quot; /&gt;&lt;span class=&quot;name&quot;&gt;'+ mentions_item.user.name +'&lt;/span&gt;&lt;/a&gt;&lt;p class=&quot;text&quot;&gt;'+ mentions_item.text +'&lt;a href=&quot;http://twitter.com/'+ mentions_item.user.screen_name +'/status/'+ mentions_item.id +'&quot;&gt;Status page&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;');
        });
      }
    });
  }
  $('#mentionsBtn').click(function(){
    $('#mentionsTweet').empty();
    mentionsTweet();
  });


  $('#searchTweetForm').after('&lt;ul id=&quot;searchTweet&quot; class=&quot;tweetList&quot;&gt;&lt;/ul&gt;');
  function twitterSearch(searchWord) {
    $.ajax({
    url: 'http://search.twitter.com/search.json',
    data: {
      'q': searchWord,
      'rpp': 10,
      'lang': 'ja'
    },
    type: 'get',
    dataType: 'jsonp',
    success: function(search_data){
      $.each(search_data.results, function(i, search_item) {
        $('#searchTweet').append('&lt;li class=&quot;tweet&quot;&gt;&lt;a href=&quot;http://twitter.com/'+search_item.from_user+'/&quot; class=&quot;icon searchResultUser&quot;&gt;&lt;img src=&quot;' + search_item.profile_image_url + '&quot; alt=&quot;&quot; width=&quot;48&quot; /&gt;&lt;span class=&quot;name&quot;&gt;'+search_item.from_user+'&lt;/span&gt;&lt;/a&gt;&lt;p class=&quot;text searchResultText&quot;&gt;'+search_item.text+'&lt;a href=&quot;http://twitter.com/'+search_item.from_user+'/status/'+search_item.id+'&quot;&gt;Status page&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;');
        });
      }
    });
  }
  $('#searchTwitter').click(function(){
    $('#twitterSearch').empty();
    var searchWord = $('#searchWord').val();
    twitterSearch(searchWord);
  });

});</code></pre>
</div>

<div class="section">
<h3>ソースコード（UI部分）</h3>
<p>jQueryを使用しています。</p>
<pre><code>$(function () {
  $('.wrap').hide();
  $('#friendTweetWrap').show();
  $('h3.twitterHeadline').css({
    'position': 'absolute'
  });
  $('#twitter h3').click(function(){
    $('h3.twitterHeadline').attr('class', 'twitterHeadline');
    $(this).attr('class', 'now twitterHeadline');
    var clickTabId = $(this).attr('id');
    var showTargetForm = clickTabId.replace('Headline', 'Wrap');
    var showTargetUl = clickTabId.replace('Headline', '');
    $('div.wrap').hide();
    $('ul.tweetList').hide();
    $('#' + showTargetForm).show();
    $('#' + showTargetUl).show();
  });
});</code></pre>
</div>

<div class="section">
<h3>改良したい点</h3>
<ul>
<li>検索以外は再取得する際に新規分のみ追加したいのだけど、since_id がうまい事動かせられない。 eachで回してる最後のidを取得して、2回目以降のみ指定するってやればいいはずなんだけどそれをコードにできていない感じ。</li>
<li>Postもしたかったのだけど全然だめ。 こちらはさっぱりだめ。 参考になりそうな物を探したけど見つからない。</li>
</ul>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2010/01/jsjavascripttwitter_1.html</link>
         <guid>http://www.hamashun.com/blog/2010/01/jsjavascripttwitter_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sat, 09 Jan 2010 16:47:53 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：clearfixジェネレータ</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="/javascript1000/200912/3-clearfix_generator">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>12月3週目のJavaScriptです。 適用したいセレクタを入力してclearfixのコードを吐き出す何かを作ってみました。 出力のセレクタ部分はカンマで改行することもできます。</p>
<p>単純に文字列を取得して定型文に組み込んでいるだけなんですが、組み込む場所がまちまちだったりして書いてる内に混乱してきました。 シンプルにできる事を複雑にしてしまってる気がする。。。</p>
</div>

<div class="section">
<h3>ソースコード</h3>
<p>jQueryを使用しています。</p>
<pre><code>$(function () {
  $('#clearfixGeneration').click(function(){
    $(this).empty();
    var new_line_switch = $('#newLineOn').attr('checked');
    var selecter_val = $('#selecterInput').val();
    var comma_length = selecter_val.split(',').length;
    var selecter_text = selecter_val.split('\n');

    for(i=0; i&lt;comma_length; i++) {
      var selecter_ie6 = '* html ' + selecter_text[i];
      var selecters_ie6 = selecter_ie6.replace('\n', '');
      if (ie6) {
        ie6 = ie6 + selecters_ie6;
        if(new_line_switch) {ie6 = ie6.replace(',*', ',\n*');}
      } else {
        var ie6 = selecters_ie6;
        if(new_line_switch) {ie6 = ie6.replace(',*', ',\n*');}
      };
      var selecter_ie7 = '*:first-child+html ' + selecter_text[i];
      var selecters_ie7 = selecter_ie7.replace('\n', '');
      if (ie7) {
        ie7 = ie7 + selecters_ie7;
        if(new_line_switch) ie7 = ie7.replace(',*', ',\n*');
      } else {
        var ie7 = selecters_ie7;
        if(new_line_switch) ie7 = ie7.replace(',*', ',\n*');
      };
      var selecter_modernbrowser = selecter_text[i] + ':after';
      var selecter_modernbrowser_substitution = selecter_modernbrowser.replace(',:after',':after,');
      var selecters_modernbrowser = selecter_modernbrowser_substitution.replace('\n', '');
      if (modernbrowser) {
        if(new_line_switch) {
          modernbrowser = modernbrowser + selecters_modernbrowser.replace(':after,', ':after,\n');
        } else {
          modernbrowser = modernbrowser + selecters_modernbrowser;
        }
      } else {
        if(new_line_switch) {
          var modernbrowser = selecters_modernbrowser.replace(':after,', ':after,\n');
        } else {
          var modernbrowser = selecters_modernbrowser;
        }
      };
      $('#clearfixDone').val(''+ ie6 +' {\n\tzoom: 1;\n}\n\n'+ ie7 +' {\n\tzoom: 1;\n}\n\n'+ modernbrowser +' {\n\tcontent: &quot;.&quot;;\n\tdisplay: block;\n\tclear: both;\n\theight: 0;\n\tvisibility: hidden;\n}');
    }
  });
});</code></pre>
</div>

<div class="section">
<h3>改良したい点</h3>
<ul>
<li>なんかもっと短くまとめて書けると思う。 ブラウザごとに似た処理を3回やってるので、そこを関数にすればいいんだろうか。 でもそうなると引数が多くなるような気がするけどそこは気にしないでいいのかなーとか。 もにょもにょ。</li>
<li>入力するセレクタは改行くぎりでないと思った通りにならないので（split()を\nでやってるので）、カンマ区切りにも対応したい</li>
</ul>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2009/12/jsclearfix.html</link>
         <guid>http://www.hamashun.com/blog/2009/12/jsclearfix.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sun, 27 Dec 2009 11:21:59 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：Twitter Search的な何か</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="http://www.hamashun.com/javascript1000/200912/2-twitter_search">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>12月2週目のJSです。 ごくごく簡単なTwitter APIを練習してみました。 やりたかった事は以下です。</p>
<ul>
<li>APIなる物をさわってAjaxなる物をやってみたい</li>
<li>Twitterネタで何かやりたい</li>
</ul>
</div>

<div class="section">
<h3>ソースコード</h3>
<p>jQueryを使用しています。</p>
<pre><code>$(function () {
  function twitterSearch(searchWord) {
    $.ajax({
    url: 'http://search.twitter.com/search.json',
    data: {
      'q': searchWord,
      'rpp': 10,
      'lang': 'ja'
    },
    type: 'get',
    dataType: 'jsonp',
    success: function(data){
      $.each(data.results, function(i, itm) {
        $('#twitterSearch').append('&lt;li&gt;&lt;a href=&quot;http://twitter.com/'+itm.from_user+'/&quot; class=&quot;searchResultUser&quot;&gt;&lt;img src=&quot;' + itm.profile_image_url + '&quot; alt=&quot;&quot; width=&quot;48&quot; /&gt;&lt;span&gt;'+itm.from_user+'&lt;/span&gt;&lt;/a&gt;&lt;p class=&quot;searchResultText&quot;&gt;'+itm.text+'&lt;a href=&quot;http://twitter.com/'+itm.from_user+'/status/'+itm.id+'&quot;&gt;Status page&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;');
        });
      }
    });
  }
  $('#searchTwitter').click(function(){
    $('#twitterSearch').empty();
    var searchWord = $('#searchWord').val();
    twitterSearch(searchWord);
  });
});</code></pre>
</div>

<div class="section">
<h3>学んだ事や雑感</h3>
<h4>Ajaxって何だか難しそう、と思っていた時代が僕にもありました</h4>
<p>jQueryを使うと、なんとか理解できるくらいにはなりました。<br />
忘れないようにと復習も兼ねて今回のコードで解説すると、まず一行目の</p>
<pre><code> $('#searchTwitterForm').after('&lt;ul id=&quot;twitterSearch&quot;&gt;&lt;/ul&gt;');</code></pre>
<p>は、検索結果を出力する場所を作っています。</p>
<pre><code>$.ajax({
    url: 'http://search.twitter.com/search.json',
    data: {
      'q': searchWord,
      'rpp': 10,
      'lang': 'ja'
    },
    type: 'get',
    dataType: 'jsonp',
</pre>
<p>ここまでが前半で、Twitter に欲しい内容を伝えるための部分。 なんとなくCSSっぽい書式で親しみ深いです。</p>

<pre><code>success: function(data){
      $.each(data.results, function(i, itm) {
        $('#twitterSearch').append('&lt;li&gt;&lt;a href=&quot;http://twitter.com/'+itm.from_user+'/&quot; class=&quot;searchResultUser&quot;&gt;&lt;img src=&quot;' + itm.profile_image_url + '&quot; alt=&quot;&quot; width=&quot;48&quot; /&gt;&lt;span&gt;'+itm.from_user+'&lt;/span&gt;&lt;/a&gt;&lt;p class=&quot;searchResultText&quot;&gt;'+itm.text+'&lt;a href=&quot;http://twitter.com/'+itm.from_user+'/status/'+itm.id+'&quot;&gt;Status page&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;');

        });
</code></pre>
<p>これが、通信が成功した後に取ってきたデータをどう処理するのか、という部分。<br />
ここまでの流れが、jQueryでAjax開発をする時の基本的な部分かなと。</p>

<pre><code>$('#searchTwitter').click(function(){
    $('#twitterSearch').empty();
    var searchWord = $('#searchWord').val();
    twitterSearch(searchWord);
  });
</code></pre>
<p>ここは、フォームに入力したテキストを上記の処理に渡すための部分です。</p>


<h4>APIとクロスドメインの問題</h4>
<p>セキュリティの関係上、JavaScriptではドメインの異なるファイルは取得できません。 それをバックエンドに頼らず簡単に解決してくれるのが今回も使ったjsonpなのです。 …が、ちょっとまだ理解しきれてないと言うか。 いや、ソースとして取得するっていうのは解ったんですが、言葉でなく心で理解するまでには至ってないと言うか。 まあ、なじんでないだけかも。</p>
</div>

<div class="section">
<h3>改善した事など</h3>
<ul>
<li>検索結果をURLに持たせたい（少し調べたらいけそう）</li>
<li>ページングを出したい</li>
</ul>
</div>

<p>※IE8では動作が確認できたんですが、IE Testerだと6,7,8でダメでした。 時間と環境が取れたら純正IE6,7環境でも試してみます。</p>
</div>

]]></description>
         <link>http://www.hamashun.com/blog/2009/12/jstwitter_search.html</link>
         <guid>http://www.hamashun.com/blog/2009/12/jstwitter_search.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sat, 19 Dec 2009 18:50:49 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：チェックボックスの一括チェック・解除</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="http://www.hamashun.com/javascript1000/200912/1-checkbox">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>12月1週目のJavaScriptです。仕事で似たような物を使う機会があったので、それをまとめてみました。 やりたかった事は以下です。</p>
<ul>
<li>チェックボックスのチェックを、まとめてオンオフしたい</li>
<li>オンオフはそれぞれに専用のボタンがあるんじゃなくて、一つにしたい</li>
</ul>
</div>

<div class="section">
<h3>ソースコード</h3>
<p>jQueryを使用しています。</p>
<pre><code>$(function () {
  var checkBoxs = $('input.checkbox');
  $('#allCheck').click(function(){
    if(this.checked) {
      checkBoxs.attr('checked', 'checked');
    } else {
      checkBoxs.removeAttr('checked');
    }
  });
});</code></pre>
</div>

<div class="section">
<h3>学んだ事や雑感</h3>
<h4>仕様決めの時点的な事</h4>
<p>最初は、ボタンでトグルするようにオンオフをしようと思っていたのだけど、それだとオンになるのかオフになるのかがわかりづらいし、オンオフが混在している場合にはどういう動作になるかが微妙だった。</p>
<p>ので、「全てチェック用のチェックボックス」を用意してそれに合わせる事にした。</p>
</div>

</div>
]]></description>
         <link>http://www.hamashun.com/blog/2009/12/js_2.html</link>
         <guid>http://www.hamashun.com/blog/2009/12/js_2.html</guid>
        
        
         <pubDate>Tue, 08 Dec 2009 20:45:57 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：Lightbox風の物を作ってみる</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="/javascript1000/200911/4-lightbox_fuu.html">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>ちょっと遅れましたが、11月4週目のJavaScriptです。やりたかった事は以下。</p>
<ul>
<li>いわゆるLightbox的なアレを作ってみたい</li>
<li>サムネイルをクリックするとリンク先の画像を読み込んでサイズを取得、それに合わせてポラロイド風の枠線を付ける</li>
<li>できるだけ使いまわしやすく・かつカオスにならないようにする</li>
</ul>
</div>

<div class="section">
<h3>ソースコード</h3>
<p>jQueryを使用しています。 IEは naturalWidth が効かないので、まだ対応できてません。</p>
<pre><code>
$(function () {
  var thumbnail = $('#thumbnail li a');                               // このセレクタを変えれば使いまわし可能
  
  thumbnail.click(function(event){
    event.preventDefault();                                           // リンクの遷移を止める
    var clickHref = $(this).attr('href');                             // 以下、クリックしたサムネのリンク先を取得して表示
    $('&lt;img&gt;').attr('src', clickHref).bind('load', function(){        // 内部でDOM生成。続きは画像のロードが終わってから進む
      var htmlElement = $('html');                                    // ブラウザの表示領域（高さ）を取得
      var htmlHeight = htmlElement.height();                          // ブラウザの表示領域（高さ）を取得
      htmlElement.css('height', htmlHeight + 'px');                   // 背景が見切れないようにheightを指定
      var originalImageSize = this.naturalWidth;                      // リンク先の画像サイズ取得
      $('body').append('&lt;div id=&quot;hmsnBox&quot;&gt;&lt;div id=&quot;hmsnBoxOuter&quot; style=&quot;height: ' + htmlHeight + 'px;&quot;&gt;&lt;/div&gt;&lt;p id=&quot;hmsnBoxInner&quot; style=&quot;width: ' + originalImageSize + 'px&quot;&gt;&lt;img src=&quot;' + clickHref + '&quot; alt=&quot;&quot; /&gt;&lt;span id=&quot;hmsnBoxClose&quot;&gt;Close&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;');  
      $('#hmsnBoxClose').click(function(){                            // 閉じる
        $('#hmsnBox').remove();
      });
    });
  });
});
</code></pre>
</div>

<div class="section">
<h3>学んだ事や雑感</h3>
<h4>ブラウザの表示領域</h4>
<p>$(&quot;body&quot;)で高さを取得したら、縦marginの影響でズレてしまったので、$(&quot;html&quot;)で取得したら思い通りになった。</p>

<h4>$(this)と$(&quot;this&quot;)の違い</h4>
<p>なんか違うらしい。</p>

<h4>生成したDOMの中で変数を展開する</h4>
<ul>
<li>src=&quot;&apos; + clickHref + &apos;&quot;</li>
<li>style=&quot;height: ' + htmlHeight + 'px;&quot;</li>
</ul>
<p>こんな感じ。</p>

<h4>処理を入れ子にしていく</h4>
<p>これまで他の人が書いたコードを見て「なんでこんなにたくさん入れ子になりまくるんだろう」と思っていたのだけど、なんとなくわかったような気がしないでもない。</p>

<h4>画像のロードを待つ</h4>
<p>jQueryは、単に $('&lt;img&gt;').attr('src', 'hoge.jpg') などとすると、表示はせずに内部で生成してくれる。 で、その画像のサイズを取得する処理が画像自体のロード完了より先に動いてしまうので、上手くいかなかった。</p>
<p>会社の人に聞いて、ロード完了後に取得するようにして解決。 ありがとうございます＞＜</p>

</div>


<div class="section">
<h3>改良したい点</h3>
<ul>
<li>IEに対応したい。 <a href="http://d.hatena.ne.jp/uupaa/20090602/1243933843">JavaScript で、画像本来のサイズ(幅, 高さ)を取得する方法 - latest log</a> で対応できそうなのだけど、理解するのにもう少しかかりそう。</li>
<li>画像のロード中に、ユーザーに何らかのアクションを返したい。 いわゆるロード中のくるくるとか。</li>
</ul>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2009/12/jslightbox.html</link>
         <guid>http://www.hamashun.com/blog/2009/12/jslightbox.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sat, 05 Dec 2009 11:53:35 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：IEでもimg要素のlabelを効かせる</title>
         <description><![CDATA[<div class="column">
<div class="section">
<ins><p>2009年1月16日更新：<a href="/blog/2010/01/jsieimglabel_1.html">ライブラリ無し版</a>を作りました。</p></ins>
<p><a href="/javascript1000/200911/3-label_for_ie">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>11月3週目のJavaScriptです。やりたかった事は以下。</p>
<ul>
<li>IEが、labelに含むimg要素のラベル付けに対応していない件を何とかする</li>
<li>できればjQuery無しで作りたい。（が、しかし…）</li>
</ul>
</div>

<div class="section">
<h3>ソースコード</h3>
<p>結局jQueryを使用しました。</p>
<pre><code>
$(function () {
  var ua = $.browser;
  if(ua.msie) {
    function inputFocus(inputId){
      $(&apos;#&apos; + inputId).focus().click();
    }
    $(&apos;label&apos;).click(function(){
      var labelFor = $(this).attr(&apos;for&apos;);
      inputFocus(labelFor);
    });
  }
});
</code></pre>
</div>

<div class="section">
<h3>学んだ事や雑感</h3>
<h4>ブラウザ間の差</h4>
<p>input要素のtype属性がtextのみなら .focus(); で問題無かったのですが、checkboxやradioがあると .click(); も必要になりました。 で、そうなるとFirefoxでは逆にうまく動かなくなってしまいます。<br />
それでは困るので、hokacchaさんの<a href="http://webtech-walker.com/archive/2007/07/04135627.html">jQueryで簡単UserAgent判別 - Webtech Walker</a>を参考にUAで振り分けました。 ただし、この問題の解決方法は条件付コメントでも良いと思います。</p>

<h4>jQueryを使わない</h4>
<p>今回は比較的、使い回しを考えたコードを書きやすいかもしれないと思ったので、jQuery無しで書いてみようと思いました。 無理でした。</p>
<p>document.getElementById で取得した要素は onclick(); で動くのに、document.getElementsByTagName('label') で取得した要素は onclick(); が動かなくて、それじゃあってんで散々こねくり回した末に、</p>
<pre><code>var labels = document.getElementsByTagName('label');
for(var i=0; i&lt;labels.length; i++){
  var labelFor = labels[i].getAttribute(&apos;for&apos;);
  alert(labelFor);
}</code></pre>
<p>としたら、Firefoxではうまく取得できたけどIEだと nullnullnull... ってなってしまい、心が折れたと言うかヌルヌルすぎと言うか。</p>
</div>

<div class="section">
<h3>改良したい点</h3>
<p>jQuery無しで同じ事ができるようになりたい。 もうちょっと色々分かってきたら、再挑戦したい。</p>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2009/11/jsieimglabel_2.html</link>
         <guid>http://www.hamashun.com/blog/2009/11/jsieimglabel_2.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Mon, 23 Nov 2009 20:53:43 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：タブでコンテンツを切り替える</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="/javascript1000/200911/2-tab">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>11月2週目のJavaScriptです。やりたかった事は以下。</p>
<ul>
<li>いわゆるタブによる、コンテンツの表示非表示の切り替え</li>
<li>コンテンツは同一ページにあって、JSでCSSを操作して切り替える</li>
<li>JSがオフの環境でも情報は問題なく得られるようにする</li>
</ul>
</div>

<div class="section">
<h3>ソースコード</h3>
<p>jQueryを使用しています。</p>
<pre><code>$(function () {

  var wrapper = $('div.wrapper');
  var boxs = $('div.contents');
  var tabBtn = $('h1.title');

  $(wrapper).css({
    height: '224px'
  });
  $(boxs).css({
    position: 'absolute'
  });
  $(tabBtn).css({
    position: 'absolute',
    top: '-98px',
    cursor: 'pointer'
  });

  function zIndexReset(){
    $(boxs).css('z-index','1');
  }

  tabBtn.click(function(){
    var tabBtnVal = $(this).attr('id');
    var divId = tabBtnVal.replace('Title','');
    zIndexReset();
    $('#' + divId).css('z-index','2');
  });

});</code></pre>
</div>

<div class="section">
<h3>学んだ事や雑感</h3>
<h4>関数に名前を付けて後から実行する事。</h4>
<p>「いやそれ常識だしｗ」とか思われそうで恥ずかしいんですが、「処理を関数にして呼び出せるようにする」という感覚が、少しだけ自分になじんだと言うか。 これまでは「jQueryの仕組み上functionと書かないといけないから書く」みたいな使い方が多かった気がします。</p>
<h4>サイ本のこと</h4>
<p>実は以前、半年くらいかけてサイ本をある程度読んだんですけど、実際にJSのコードを書いているとふっと「あ、これサイ本に載ってた記憶がある」みたいな瞬間があって、あのツライ読書（1P読むのに数時間とか）は無駄じゃなかったのかなとか思ったり。 1000本ノックが終わったらまた再読したい。</p>
<h4>汎用性のこと</h4>
<p>書いたJSは「同じ機能なら複数の案件で使いまわせたほうがいい」と考えていたのですが、<a href="http://blog.livedoor.jp/faulist/archives/1298698.html">faultierの人が書いてくれた言及記事</a>や、自分で実際にJSを書いている内に感じた事から、HTMLに使うJSなら、そのHTMLに合わせて（必要なら毎回）書いた方が良いんじゃないかと思えてきました。<br />
あ、もちろん、使いまわせるライブラリを使った方が良いケースもあるんでしょうけど。</p>
</div>

<div class="section">
<h3>改良したい点</h3>
<p>z-indexの操作が満足いってないです。 赤を最上段にしてから青をクリックすると重なり順がおかしくなってしまう。</p>
<p>これを解決するには、「クリックした時点で3つ全てのz-indexを取得して、その中の最大の値に+1して該当の要素に指定する」とか・・・かな・・・！ 難しそうorz あと、若干重箱の隅ですけど、z-indexの最大値の件も問題としてはあると言えばある。</p>
<p>まあ、そもそも何故z-indexでやってるのかと言うと、少しづつズラして配置しているデザインのためなので、3枚とも完全に重なっているデザインなら、displayプロパティでタブ切り替えを行ってしまえば簡単だったりはします。</p>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2009/11/js_1.html</link>
         <guid>http://www.hamashun.com/blog/2009/11/js_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sat, 14 Nov 2009 22:22:11 +0900</pubDate>
      </item>
            <item>
         <title>JS習作：フォームにフォーカスしたらデフォルトテキストを消す</title>
         <description><![CDATA[<div class="column">
<div class="section">
<p><a href="/javascript1000/200911/1-form">サンプルページ</a></p>
</div>

<div class="section">
<h3>概要</h3>
<p>11月1週目のJavaScriptです。やりたかった事は以下。</p>
<ul>
<li>input要素にデフォルトテキストが表示されていて、文字色は薄い</li>
<li>フォーカスすると、デフォルトテキストが消えて文字色を濃く変える</li>
<li>何も入力せずにフォーカスを外すとデフォルトテキストが再び現れる</li>
<li>何か入力してあれば、再びフォーカスしても何も起こらない</li>
</ul>
</div>

<div class="section">
<h3>ソースコード</h3>
<p>jQueryを使用しています。</p>
<pre><code>$(function () {

var searchInpt = $("#searchText");
var defaultVal = searchInpt.attr("value");
searchInpt.css("color","#999");

searchInpt.focus(function() {
  if (searchInpt.attr("value") == defaultVal) {
    $(this).css("color","#ddd").attr("value","");
  }
}).blur(function() {
  var nowVal = searchInpt.attr("value");
  if ($(searchInpt).attr("value") == "") {
    $(this).css("color","#999").attr("value",defaultVal);
  }
});

});</code></pre>
</div>

<div class="section">
<h3>学んだ事</h3>
<p>変数に代入した結果は、その時点で保存されるという事。<br />
例えば最初の方で <code>var defaultVal = searchInpt.attr("value");</code> して、その変数に格納された値は、その後のブラウザ上の操作でvalueを変えても（その変数内では）替わらない。 処理を代入してるんじゃなくて処理の結果を代入していると言うか何と言うか。</p>
<p style="font-size: small;">なんかでも、条件によってはそうでもなかったような事があったような気がするのでその内また解るかも。</p></div>

<div class="section">
<h3>改良したい点</h3>
<p>「スクリプトを適用する要素」を指定する方法（コード1行目）を、ある程度汎用的にしたい。</p>
<p>今はidを直接指定しているので、そこを「jsファイルを読み込ませたら全てよしなにやってくれる」的にしたい。</p>
<p>「inputのtypeがtextで、かつデフォルトでvalueの中身に何か入ってる場合」とかでif文かなー。 JS側でclassをキメて、それをHTMLに書くのはちょっともにょるしなあ。</p>
</div>

</div>]]></description>
         <link>http://www.hamashun.com/blog/2009/11/js.html</link>
         <guid>http://www.hamashun.com/blog/2009/11/js.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">JavaScript</category>
        
        
         <pubDate>Sat, 07 Nov 2009 09:15:59 +0900</pubDate>
      </item>
      
   </channel>
</rss>

