<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>CreativeStyle &#187; プログラミング</title>
	<atom:link href="http://www.kadoppe.net/archives/category/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0/feed" rel="self" type="application/rss+xml" />
	<link>http://www.kadoppe.net</link>
	<description>見たこと、聴いたこと、考えたこと</description>
	<lastBuildDate>Sat, 04 Sep 2010 06:50:55 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/category/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0/feed" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>[PEAR] Spreadsheet_Excel_Writerをインストール</title>
		<link>http://www.kadoppe.net/archives/2010/09/pear-spreadsheet-excel-writer-install.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=pear-spreadsheet-excel-writer-install</link>
		<comments>http://www.kadoppe.net/archives/2010/09/pear-spreadsheet-excel-writer-install.html#comments</comments>
		<pubDate>Fri, 03 Sep 2010 12:36:31 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=528</guid>
		<description><![CDATA[


 photo credit: DaseinDesign
PHPからExcelファイルを出力することができるPEARライブラリ「Spreadsheet_Excel_Writer」をインストールしたのでメモ。
PHPか [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F09%252Fpear-spreadsheet-excel-writer-install.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fc5SP5q%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%5BPEAR%5D%20Spreadsheet_Excel_Writer%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%22%20%7D);"></div>
<p><a title="Volta: Seckel Pear Almond Cakes" href="http://www.flickr.com/photos/14099920@N06/4949653444/" target="_blank"><img src="http://farm5.static.flickr.com/4101/4949653444_b00d2a8aa5_m.jpg" border="0" alt="Volta: Seckel Pear Almond Cakes" /></a><br />
<small><a title="Attribution-NonCommercial License" href="http://creativecommons.org/licenses/by-nc/2.0/" target="_blank"><img src="http://www.kadoppe.net/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="DaseinDesign" href="http://www.flickr.com/photos/14099920@N06/4949653444/" target="_blank">DaseinDesign</a></small></p>
<p>PHPからExcelファイルを出力することができるPEARライブラリ「<a href="http://pear.php.net/package/Spreadsheet_Excel_Writer/" target="_blank">Spreadsheet_Excel_Writer</a>」をインストールしたのでメモ。</p>
<p>PHPからExcelファイルを操作したいのであれば<a href="http://phpexcel.codeplex.com/" target="_blank">PHPExcel</a>というライブラリを使うのが主流みたいなんですけど、動作環境が「PHP 5.2以降」だったので、こちらをインストールしました。</p>
<p>ほんの少しだけ手間取りました。まずは失敗ログから。</p>
<h4>失敗ログ &#8211; 誤った方法</h4>
<p>以下のコマンドでインストールしようとしたところエラーが発生してしまいました。</p>
<p>[code gutter="false"]<br />
$ sudo pear install Spreadsheet_Excel_Writer</p>
<p>Failed to download pear/Spreadsheet_Excel_Writer within preferred state "stable", latest release is version 0.9.2, stability "beta", use "channel://pear.php.net/Spreadsheet_Excel_Writer-0.9.2"; to install<br />
install failed<br />
[/code]</p>
<h4>成功ログ &#8211; 正しい方法</h4>
<p>どうやら、安定版（stable)のSpread_Excel_Writerは提供されておらず、代わりにベータ版（beta）をインストールして使え、とのこと。</p>
<p>以下の記事によると、PEARではパッケージ名の末尾に「-beta」を付け加えるとベータ版を指定してインストールできるみたいです。</p>
<ul>
<li><a href="http://blog.plastik.jp/archives/13" target="_blank">pear コマンド alpha、beta バージョンのインストール方法 &#8211; blog.plastik.jp</a></li>
</ul>
<p>実際に試してみましたところ、無事インストール成功となりました。<br />
よかったよかった。</p>
<p>[code gutter="false"]<br />
$ sudo pear install Spreadsheet_Excel_Writer-beta</p>
<p>downloading Spreadsheet_Excel_Writer-0.9.2.tgz ...<br />
Starting to download Spreadsheet_Excel_Writer-0.9.2.tgz (57,629 bytes)<br />
..............done: 57,629 bytes<br />
downloading OLE-1.0.0RC1.tgz ...<br />
Starting to download OLE-1.0.0RC1.tgz (12,153 bytes)<br />
...done: 12,153 bytes<br />
install ok: channel://pear.php.net/OLE-1.0.0RC1<br />
install ok: channel://pear.php.net/Spreadsheet_Excel_Writer-0.9.2<br />
[/code]</p>
<h4>まとめ</h4>
<p>今まで何回かPEARを使ったことがありますが、beta版を指定してインストールする方法は知りませんでした。<br />
そういえば何度か同じエラーメッセージを見たことがあるようなないような・・・</p>
<p>なにはともあれ、うまくインストールできてよかったです！<br />
それでは！</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/09/pear-spreadsheet-excel-writer-install.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/09/pear-spreadsheet-excel-writer-install.html" />
	</item>
		<item>
		<title>The International Obfuscated C Code Contest &#8211; 国際わかりにくいC言語プログラムコンテスト</title>
		<link>http://www.kadoppe.net/archives/2010/08/the-international-obfuscated-c-code-contest.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-international-obfuscated-c-code-contest</link>
		<comments>http://www.kadoppe.net/archives/2010/08/the-international-obfuscated-c-code-contest.html#comments</comments>
		<pubDate>Sun, 22 Aug 2010 14:07:49 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[contest]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=480</guid>
		<description><![CDATA[

 photo credit: pigpogm
Code Readingという本を読んでいて、「The International Obfuscated C Code Contest」という面白いコンテストの存在を知り [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F08%252Fthe-international-obfuscated-c-code-contest.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fbp8G5s%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22The%20International%20Obfuscated%20C%20Code%20Contest%20-%20%E5%9B%BD%E9%9A%9B%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%AB%E3%81%8F%E3%81%84C%E8%A8%80%E8%AA%9E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%B3%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88%22%20%7D);"></div>
<p><a href="http://www.flickr.com/photos/55672723@N00/4883472282/" title="(C)" target="_blank"><img src="http://farm5.static.flickr.com/4123/4883472282_99dc81cf37_m.jpg" alt="(C)" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" title="Attribution-NonCommercial-ShareAlike License" target="_blank"><img src="http://www.kadoppe.net/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/55672723@N00/4883472282/" title="pigpogm" target="_blank">pigpogm</a></small></p>
<p><a href="http://www.amazon.co.jp/gp/product/4839912653?ie=UTF8&#038;tag=creativestylekadoppe-22&#038;linkCode=as2&#038;camp=247&#038;creative=1211&#038;creativeASIN=4839912653" target="_blank">Code Reading</a>という本を読んでいて、「The International Obfuscated C Code Contest」という面白いコンテストの存在を知りました。</p>
<ul>
<li><a href="http://www0.us.ioccc.org/main.html" target="_blank">The International Obfuscated C Code Contest</a></li>
</ul>
<h4>どんなコンテスト？</h4>
<p>直訳すると「国際わかりにくいC言語プログラムコンテスト」。</p>
<p>コンテストの目的がホームページに掲載されていたので訳してみました。</p>
<blockquote>
<ul>
<li>以下のルールに則って、一番不明瞭でわかりにくいC言語プログラムを書く</li>
<li>皮肉的な方法で、プログラミングスタイルの重要性を示すこと</li>
<li>普通じゃないコードでCコンパイラに負荷をかけること。</li>
<li>ある種のC言語の緻密さ・巧妙さを示すこと</li>
<li>残念なC言語プログラムのための議論の場を提供すること</li>
</ul>
</blockquote>
<p>あえて理解しにくいコードを書くことによって、適切なプログラミングスタイルに則ってコードを書くことの重要性を世に広める、ということが主な目的のようです。<br />
（ジョーク的な意味合いも強いのかも）</p>
<h4>わかりにくいプログラムって？</h4>
<p>具体的にわかりにくいプログラムってどういうものなのでしょうか？</p>
<p>歴代のコンテスト勝者のコードが以下のページからダウンロードできますので、その中から2000年度大会の勝者の一人「Glyn Anderson」さんのコードを例としてあげてみたいと思います。</p>
<ul>
<li><a href="http://www0.us.ioccc.org/winners.html" target="_blank">Winners &#8211; about the authors of winning IOCCC entries</a></li>
</ul>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">char</span>
<span style="color: #339933;">*</span>T<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;IeJKLMaYQCE]jbZRskc[SldU^V\\X\\|/_&lt;[&lt;:90!<span style="color: #000099; font-weight: bold;">\&quot;</span>$434-./2&gt;]s&quot;</span><span style="color: #339933;">,</span>
K<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,*</span>F<span style="color: #339933;">,</span>x<span style="color: #339933;">,</span>A<span style="color: #339933;">,*</span>M<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,*</span>J<span style="color: #339933;">,</span>r<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,*</span>g<span style="color: #339933;">,</span>N<span style="color: #339933;">,</span>Y<span style="color: #339933;">,*</span>Q<span style="color: #339933;">,</span>W<span style="color: #339933;">,*</span>k<span style="color: #339933;">,</span>q<span style="color: #339933;">,</span>D<span style="color: #339933;">;</span>X<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>r  <span style="color: #009900;">&#91;</span>r
<span style="color: #009900;">&#91;</span>r<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>M<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">-</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&amp;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">*</span>r<span style="color: #339933;">=</span>W<span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=*</span>Q<span style="color: #339933;">+</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>x<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #339933;">+</span>Y<span style="color: #339933;">,*</span>g<span style="color: #339933;">++=</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">&amp;</span>     <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&gt;&gt;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">?*</span>r<span style="color: #339933;">:</span>r<span style="color: #009900;">&#91;</span>x<span style="color: #339933;">&gt;&gt;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">++</span>x<span style="color: #339933;">&lt;*</span>r<span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span>X<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>E<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>A<span style="color: #339933;">||</span>X<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span>g       <span style="color: #339933;">=</span>J
<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>x<span style="color: #339933;">=</span><span style="color: #0000dd;">7</span><span style="color: #339933;">&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>T<span style="color: #339933;">&gt;&gt;</span>A<span style="color: #339933;">*</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>J<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span>F<span style="color: #009900;">&#93;</span><span style="color: #339933;">-</span>W<span style="color: #339933;">-</span>x<span style="color: #009900;">&#41;</span><span style="color: #339933;">^</span>A<span style="color: #339933;">*</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>Q<span style="color: #009900;">&#91;</span>x<span style="color: #339933;">&amp;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">^</span>A<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>M<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span>         <span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>
x<span style="color: #339933;">&amp;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>g<span style="color: #339933;">=</span>J<span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span><span style="color: #339933;">-</span>W<span style="color: #009900;">&#41;</span><span style="color: #339933;">^</span>A<span style="color: #339933;">*</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>A<span style="color: #339933;">,</span>g<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>M<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">*</span>g<span style="color: #339933;">=</span>M<span style="color: #009900;">&#91;</span>T<span style="color: #339933;">+=</span>A            <span style="color: #339933;">,</span><span style="color: #0000dd;">1</span>
<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>x<span style="color: #339933;">&amp;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>x<span style="color: #339933;">&amp;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span>A<span style="color: #339933;">^=</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span>E<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>J<span style="color: #339933;">+=</span>W<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>l<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>E<span style="color: #009900;">&#40;</span><span style="color: #339933;">--</span>q<span style="color: #339933;">&amp;&amp;</span>l              <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>B<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #339933;">*</span>J<span style="color: #339933;">&amp;&amp;</span>B<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>D<span style="color: #339933;">=*</span>J<span style="color: #339933;">,</span>Q<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&lt;</span>D<span style="color: #339933;">&amp;&amp;</span>D<span style="color: #339933;">&lt;</span>k<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>g<span style="color: #339933;">++=</span><span style="color: #0000dd;">1</span>                <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>D<span style="color: #339933;">-</span>W<span style="color: #339933;">&amp;&amp;</span>D<span style="color: #339933;">-</span><span style="color: #0000dd;">9</span><span style="color: #339933;">&amp;&amp;</span>D<span style="color: #339933;">-</span><span style="color: #0000dd;">10</span><span style="color: #339933;">&amp;&amp;</span>D<span style="color: #339933;">-</span><span style="color: #0000dd;">13</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!*</span>r<span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>g<span style="color: #339933;">++=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>                   <span style="color: #339933;">,*</span>
r<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">||</span><span style="color: #0000dd;">64</span><span style="color: #339933;">&lt;</span>D<span style="color: #339933;">&amp;&amp;</span>D<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">91</span><span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>r<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,*</span>g<span style="color: #339933;">++=</span>D<span style="color: #339933;">-</span><span style="color: #0000dd;">63</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">||</span>D                     <span style="color: #339933;">&gt;=</span>
<span style="color: #0000dd;">97</span><span style="color: #339933;">&amp;&amp;</span>D<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">123</span><span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>r<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,*</span>g<span style="color: #339933;">++=</span>D<span style="color: #339933;">-</span><span style="color: #0000dd;">95</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">||!</span><span style="color: #009900;">&#40;</span>D<span style="color: #339933;">-</span>k<span style="color: #009900;">&#91;</span>                       <span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>r<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,*</span>g<span style="color: #339933;">++=</span><span style="color: #0000dd;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">||</span>D<span style="color: #339933;">&gt;</span>k<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&amp;&amp;</span>D<span style="color: #339933;">&lt;=</span>k<span style="color: #009900;">&#91;</span>                          <span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span>
<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>r<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,*</span>g<span style="color: #339933;">++=</span>D<span style="color: #339933;">-</span><span style="color: #0000dd;">47</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>J<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>j<span style="color: #009900;">&#40;</span>                            <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
putchar<span style="color: #009900;">&#40;</span>A<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>b<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#40;</span>j<span style="color: #009900;">&#40;</span>A<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>K<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span>D<span style="color: #339933;">*</span>                              W<span style="color: #339933;">+</span>
r<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">*</span>Y<span style="color: #339933;">+</span>x<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,++</span>x<span style="color: #339933;">&lt;</span>Y<span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span>b<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>t                                 <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span><span style="color: #009900;">&#40;</span>j<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>b<span style="color: #009900;">&#40;</span>D<span style="color: #339933;">=</span>q<span style="color: #009900;">&#91;</span>g<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>x<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>A<span style="color: #339933;">=</span>W<span style="color: #009900;">&#41;</span>                                   <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #339933;">++</span>q<span style="color: #339933;">&lt;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>r<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&lt;</span>Y<span style="color: #339933;">?*</span><span style="color: #009900;">&#40;</span>r<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span>                                     Y<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span>t<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>R<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#40;</span>A<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>t<span style="color: #009900;">&#40;</span>                                        q<span style="color: #339933;">=</span>
<span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>j<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,++</span>r                                          <span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span>
<span style="color: #009900;">&#93;</span><span style="color: #339933;">&lt;</span>N<span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span>R<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>O<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>                                            <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#40;</span>
j<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>r<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span>R<span style="color: #009900;">&#40;</span>                                              <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>r<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-=</span>q<span style="color: #009900;">&#41;</span>                                                <span style="color: #339933;">&amp;&amp;</span>
O<span style="color: #009900;">&#40;</span>g<span style="color: #339933;">-=-</span>q<span style="color: #009900;">&#41;</span>                                                  <span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#40;</span>                                                     J<span style="color: #339933;">=</span>
gets                                                      <span style="color: #009900;">&#40;</span>K
<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span>C<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>B<span style="color: #009900;">&#40;</span>g<span style="color: #339933;">=</span>K<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,*</span>r<span style="color: #339933;">=!</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!*</span>r<span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>g<span style="color: #339933;">++=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>r<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span>r<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>g<span style="color: #339933;">-</span>K<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>g<span style="color: #339933;">=</span>K<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span>
<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>r<span style="color: #009900;">&#91;</span>
<span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&amp;&amp;</span>
O<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;;</span><span style="color: #009900;">&#125;</span>
main
<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>C
<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>l<span style="color: #009900;">&#40;</span>
<span style="color: #009900;">&#40;</span>J<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>
A<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#91;</span>K<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
A<span style="color: #009900;">&#91;</span>M<span style="color: #009900;">&#93;</span>
<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>F<span style="color: #339933;">=</span>
<span style="color: #009900;">&#40;</span>k<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>
M<span style="color: #009900;">&#91;</span><span style="color: #339933;">!</span>A
<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>Q
<span style="color: #339933;">=</span>T<span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>
q<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>Y
<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>W<span style="color: #339933;">=</span>
<span style="color: #0000dd;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>
<span style="color: #009900;">&#40;</span>N<span style="color: #339933;">=</span><span style="color: #0000dd;">4</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">+</span>N<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span>
<span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000dd;">7</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>Y<span style="color: #339933;">=</span>
N<span style="color: #339933;">&lt;&lt;</span><span style="color: #009900;">&#40;</span>
<span style="color: #339933;">*</span>r<span style="color: #339933;">=!</span>
<span style="color: #339933;">-</span>A<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;;</span><span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>うん、まずはきれいに整形することから始めないとですね！<br />
リファクタリングの基本！</p>
<h4>まとめ</h4>
<p>2006年から2007年にかけて行われた第19回大会を最後に開催されていないみたいですが、完全になくなってしまったわけではなく、今後も開催される可能性がありそうだとのこと。</p>
<p><a href="http://www.amazon.co.jp/gp/product/4839912653?ie=UTF8&#038;tag=creativestylekadoppe-22&#038;linkCode=as2&#038;camp=247&#038;creative=1211&#038;creativeASIN=4839912653" target="_blank">Code Reading</a>にも書いてありましたが、上記のようなコードをわかりやすくリファクタリングしていくことによって、自分自身のリファクタリング力のトレーニングになりそうですね！</p>
<p>うーん、世の中には面白いことがたくさんあるなぁ。<br />
それでは！</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/08/the-international-obfuscated-c-code-contest.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/08/the-international-obfuscated-c-code-contest.html" />
	</item>
		<item>
		<title>[Cocoa] NSMutableArrayのインスタンスを&#8221;Mutable&#8221;なまま複製したいときは&#8221;mutableCopy&#8221;メソッドを使おう</title>
		<link>http://www.kadoppe.net/archives/2010/08/nsmutablearray-copy.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=nsmutablearray-copy</link>
		<comments>http://www.kadoppe.net/archives/2010/08/nsmutablearray-copy.html#comments</comments>
		<pubDate>Sat, 07 Aug 2010 16:02:13 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=468</guid>
		<description><![CDATA[


 photo credit: alberthuynhphoto
iPadアプリの開発をしていて少しハマってしまったのでメモ。
最近よくハマるので、どんどんブログ記事にしてまとめていきたいと思います。
問題
NSMu [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F08%252Fnsmutablearray-copy.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FcB4BX4%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%5BCocoa%5D%20NSMutableArray%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%92%5C%22Mutable%5C%22%E3%81%AA%E3%81%BE%E3%81%BE%E8%A4%87%E8%A3%BD%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AF%5C%22mutableCopy%5C%22%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86%22%20%7D);"></div>
<p><a title="coo coo" href="http://www.flickr.com/photos/38042235@N02/4810241294/" target="_blank"><img src="http://farm5.static.flickr.com/4095/4810241294_a76d8048e1_m.jpg" border="0" alt="coo coo" /></a><br />
<small><a title="Attribution-NonCommercial-NoDerivs License" href="http://creativecommons.org/licenses/by-nc-nd/2.0/" target="_blank"><img src="http://www.kadoppe.net/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="alberthuynhphoto" href="http://www.flickr.com/photos/38042235@N02/4810241294/" target="_blank">alberthuynhphoto</a></small></p>
<p>iPadアプリの開発をしていて少しハマってしまったのでメモ。<br />
最近よくハマるので、どんどんブログ記事にしてまとめていきたいと思います。</p>
<h4>問題</h4>
<p>NSMutableArrayのインスタンス（つまり変更可能な配列）を複製して、複製先の配列にオブジェクトを挿入しようとしたときのことです。</p>
<p>下記のようなコードを実行すると途中で例外が発生し、プログラムが停止してしまいました。</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSMutableArray</span><span style="color: #002200;">*</span> originalArray;
<span style="color: #400080;">NSMutableArray</span><span style="color: #002200;">*</span> duplicatedArray;
&nbsp;
originalArray <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSMutableArray</span> alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;
duplicatedArray <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>originalArray copy<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>duplicatedArray addObject<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;str&quot;</span><span style="color: #002200;">&#93;</span>; <span style="color: #11740a; font-style: italic;">// NSInvalidArgumentException</span></pre></div></div>

<p>具体的には、最後の行で「duplicatedArrayにはaddObjectなんていうメソッドは存在しないよ」と怒られてしまいます。</p>
<p>duplicatedArrayはNSMutableArrayクラスのインスタンスとして宣言しているはずなのに・・。<br />
どうしてでしょうか？</p>
<h4>原因・解決</h4>
<p>どうやら、copyメソッドを呼び出してNSMutableArrayクラスのインスタンスを複製しようとした場合、生成されるのはNSArrayクラスのインスタンスになってしまうみたいです。</p>
<p>NSArrayクラスは変更不可能な配列であり、addObjectメソッドは宣言されていないため、先程のような例外が発生してしまいます。</p>
<p>色々調べたところ、NSMutableArrayクラスのインスタンスを&#8221;Mutable（変更可能）な状態のまま複製するためには、どうやらcopyメソッドではなくmutableCopyメソッドを使えばいいみたいです。</p>
<p>早速先ほどのコードを以下のように修正してみます。<br />
すると、無事に配列にオブジェクトが追加できることを確認できました。</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSMutableArray</span><span style="color: #002200;">*</span> originalArray;
<span style="color: #400080;">NSMutableArray</span><span style="color: #002200;">*</span> duplicatedArray;
&nbsp;
originalArray <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSMutableArray</span> alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;
duplicatedArray <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>originalArray mutableCopy<span style="color: #002200;">&#93;</span>; <span style="color: #11740a; font-style: italic;">// copy から mutableCopyに変更</span>
&nbsp;
<span style="color: #002200;">&#91;</span>duplicatedArray addObject<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;str&quot;</span><span style="color: #002200;">&#93;</span>; <span style="color: #11740a; font-style: italic;">// 無事配列にオブジェクトを追加できた。</span></pre></div></div>

<h4>まとめ</h4>
<p>結構些細なことが原因なのに、小一時間このことについて悩まされてしまいました。</p>
<p>ちゃんとリファレンスにしっかり目を通しておかなきゃいけないな、と再確認させられた僕なのでした。。<br />
それでは！</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/08/nsmutablearray-copy.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/08/nsmutablearray-copy.html" />
	</item>
		<item>
		<title>iOS 4とiPhone OS 3.xにおける[UIImage imageNamed]の動作の違い</title>
		<link>http://www.kadoppe.net/archives/2010/07/ios-4%e3%81%a8iphone-os-3-x%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8buiimage-imagenamed%e3%81%ae%e5%8b%95%e4%bd%9c%e3%81%ae%e9%81%95%e3%81%84.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ios-4%25e3%2581%25a8iphone-os-3-x%25e3%2581%25ab%25e3%2581%258a%25e3%2581%2591%25e3%2582%258buiimage-imagenamed%25e3%2581%25ae%25e5%258b%2595%25e4%25bd%259c%25e3%2581%25ae%25e9%2581%2595%25e3%2581%2584</link>
		<comments>http://www.kadoppe.net/archives/2010/07/ios-4%e3%81%a8iphone-os-3-x%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8buiimage-imagenamed%e3%81%ae%e5%8b%95%e4%bd%9c%e3%81%ae%e9%81%95%e3%81%84.html#comments</comments>
		<pubDate>Fri, 09 Jul 2010 12:52:48 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=343</guid>
		<description><![CDATA[

 photo credit: blakespot
iPhoneアプリを開発していて、少しハマってしまったのでメモ。
UIImageクラスのimageNamedメソッド
指定した名前の画像ファイルを読み込み、UIIma [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F07%252Fios-4%2525e3%252581%2525a8iphone-os-3-x%2525e3%252581%2525ab%2525e3%252581%25258a%2525e3%252581%252591%2525e3%252582%25258buiimage-imagenamed%2525e3%252581%2525ae%2525e5%25258b%252595%2525e4%2525bd%25259c%2525e3%252581%2525ae%2525e9%252581%252595%2525e3%252581%252584.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FazjDXW%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22iOS%204%E3%81%A8iPhone%20OS%203.x%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%5BUIImage%20imageNamed%5D%E3%81%AE%E5%8B%95%E4%BD%9C%E3%81%AE%E9%81%95%E3%81%84%22%20%7D);"></div>
<p><a href="http://www.flickr.com/photos/35448539@N00/4773693893/" title="my iPhone family pile" target="_blank"><img src="http://farm5.static.flickr.com/4143/4773693893_4ea90d9483_m.jpg" alt="my iPhone family pile" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by/2.0/" title="Attribution License" target="_blank"><img src="http://www.kadoppe.net/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/35448539@N00/4773693893/" title="blakespot" target="_blank">blakespot</a></small></p>
<p>iPhoneアプリを開発していて、少しハマってしまったのでメモ。</p>
<h4>UIImageクラスのimageNamedメソッド</h4>
<p>指定した名前の画像ファイルを読み込み、UIImageクラスのオブジェクトを生成するためのメソッドです。<br />
このメソッド、OSのバージョンが3.x系かiOS 4かで、微妙に動作が違ってくることがわかりました。</p>
<blockquote><p>On iOS 4 and later, the name of the file is not required to specify the filename extension. Prior to iOS 4, you must specify the filename extension.<br />
<a href="http://developer.apple.com/iphone/library/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/clm/UIImage/imageNamed:" target="_blank">iPhone OS Reference Library : UIImage Class Reference</a></p></blockquote>
<h5>iPhone OS 3.xまで</h5>
<p>iPhone OS 3.xまでは、以下のように拡張子も含めたファイル名を引数としてimageNamedメソッドに渡していました。<br />
<strong>拡張子は必ず含めなければなりません。</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;">UIImage<span style="color: #002200;">*</span> image <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIImage imageNamed<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;face.png&quot;</span><span style="color: #002200;">&#93;</span>;    <span style="color: #11740a; font-style: italic;">// iPhone OS 3.x</span></pre></td></tr></table></div>

<h5>iOS 4から</h5>
<p>一方、iOS 4では、下記のように<strong>拡張子を含めなくても</strong>画像を読み込めるように修正されました。<br />
（従来のiPhone OS 3.xの方法もサポートされています。）</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;">UIImage<span style="color: #002200;">*</span> image <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIImage imageNamed<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;face&quot;</span><span style="color: #002200;">&#93;</span>;    <span style="color: #11740a; font-style: italic;">// iOS 4</span></pre></td></tr></table></div>

<h4>何が問題？</h4>
<h5>せっかく作ったアプリが、OS 3.x系端末で動かない…</h5>
<p>「iPhone SDK 4でアプリを開発したけど、iPhone OS 3.x系がインストールされた端末でも動かしたい」<br />
こういう要望・希望もまだまだあるかと思います。</p>
<p>ですが、iPhone SDK 4でコンパイルしたアプリケーションに、上述の拡張子を含めない方法で書かれたコードが含まれていた場合、そのアプリはiPhone OS 3.xがインストールされた端末では動きません。</p>
<h5>拡張子ぐらい書こうぜ！</h5>
<p>画像ファイルの拡張子なんてピリオドいれて、せいぜい4~5文字程度。<br />
もし、どちらのバージョンでも動作するアプリを作りたい場合は、面倒くさがらずに、きちんと拡張子を含めて画像のファイル名を指定するようにしましょう。</p>
<p>と、自分に強く言い聞かせてみたのでした。。<br />
それでは！</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/07/ios-4%e3%81%a8iphone-os-3-x%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8buiimage-imagenamed%e3%81%ae%e5%8b%95%e4%bd%9c%e3%81%ae%e9%81%95%e3%81%84.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/07/ios-4%e3%81%a8iphone-os-3-x%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8buiimage-imagenamed%e3%81%ae%e5%8b%95%e4%bd%9c%e3%81%ae%e9%81%95%e3%81%84.html" />
	</item>
		<item>
		<title>MacPorts (Snow Leopard) でPHP 5.2.13をインストールしようとしたらエラー → 一応解決</title>
		<link>http://www.kadoppe.net/archives/2010/06/macports-snow-leopard-php-5-2-13-error.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=macports-snow-leopard-php-5-2-13-error</link>
		<comments>http://www.kadoppe.net/archives/2010/06/macports-snow-leopard-php-5-2-13-error.html#comments</comments>
		<pubDate>Tue, 01 Jun 2010 16:35:58 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[trouble]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=310</guid>
		<description><![CDATA[


 photo credit: sporras
※ 2010.6.3 追記
現在は問題なくインストールできるようです。
MacPorts (Snow Leopard)を使ってPHP5.2.13をインストールしようとし [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F06%252Fmacports-snow-leopard-php-5-2-13-error.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FcHKik0%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22MacPorts%20%28Snow%20Leopard%29%20%E3%81%A7PHP%205.2.13%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%9F%E3%82%89%E3%82%A8%E3%83%A9%E3%83%BC%20%E2%86%92%20%E4%B8%80%E5%BF%9C%E8%A7%A3%E6%B1%BA%22%20%7D);"></div>
<p><a title="The Robot compilando unas patatas y friendo un compilador de Haskell, o no sé qué" href="http://www.flickr.com/photos/78696157@N00/2777917522/" target="_blank"><img src="http://farm4.static.flickr.com/3292/2777917522_efa497d8d6_m.jpg" border="0" alt="The Robot compilando unas patatas y friendo un compilador de Haskell, o no sé qué" /></a><br />
<small><a title="Attribution-ShareAlike License" href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank"><img src="http://www.kadoppe.net/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="sporras" href="http://www.flickr.com/photos/78696157@N00/2777917522/" target="_blank">sporras</a></small></p>
<p><strong>※ 2010.6.3 追記</strong><br />
現在は問題なくインストールできるようです。</p>
<p>MacPorts (Snow Leopard)を使ってPHP5.2.13をインストールしようとしたら次のようなエラーが発生してしまいました。</p>
<pre>$ sudo port -d install php52 +apache2 +mysql5 +pear
（中略）
Undefined Undefinedsymbols:
   "_zif_setlocale", symbolsreferenced:
from :
"   _zif_setlocale " ,  _basic_functionsreferenced  infrom :basic_functions.o
ld:
symbol  ( s) not found
_basic_functions in basic_functions.o
ld: symbol(s) not found
collect2: collect2: ld returned 1 exit status
ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
make: *** Waiting for unfinished jobs....
make: *** [libs/libphp5.bundle] Error 1</pre>
<p>色々調べてみたところ、gettextというパッケージが悪さをしていることが判明しました。</p>
<ul>
<li><a href="https://trac.macports.org/ticket/24934" target="_blank">#24934 (php4, php52: build fails with gettext 0.18) – MacPorts</a></li>
</ul>
<p>どうやら、gettextのバージョンを0.18から0.17に下げる必要があるみたい。</p>
<p>以下のコマンドを実行し、gettextをダウングレードします。<br />
（参考：<a href="http://blog.sakatam.net/2009/06/how-to-install-outdated-port-packages/" target="_blank">【port / MacPorts】古いバージョンのパッケージをインストールする方法 sakatam blog</a>）</p>
<pre>$ sudo port deactivate gettext
$ cd ~/Downloads
$ svn co -r 30842 http://svn.macports.org/repository/macports/trunk/dports/devel/gettext
$ cd gettext
$ sudo port install</pre>
<p>gettextをダウングレードしたので、gettextパッケージに依存しているすべてのパッケージをリビルドする必要があります。</p>
<p>autoconfが依存するgawkというパッケージに関しては、MacPortsでインストールされるのが少し古いバージョンなので、アンインストールしてシステムにデフォルトでインストールされているものが使われるようにします。</p>
<pre>$ sudo port deactivate gawk
$ sudo port clean gawk
$ sudo port -n upgrade --force autoconf</pre>
<p>他のパッケージもリビルドしていきます。</p>
<pre>$ sudo port -n upgrade --force libidn
$ sudo port -n upgrade --force curl</pre>
<p>これでインストールの準備は完了、と言いたいところですが、まだしなければいけないことがあります。</p>
<p>このままMacPortsでインストールを実行するとautoconfの部分でエラーが発生してしまうので、手動でautoconfを実行しなければなりません。<br />
MacPortsでインストールしたautoconfを使っていることがエラーの原因なので、システムにデフォルトでインストールされているautoconfを使ってコンフィグレーションファイルを作成します。</p>
<pre>$ sudo port clean php52
$ sudo port -d configure php52 +apache2 +mysql5 +pear
$ cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_php52/work/php-5.2.13/
$ sudo autoconf</pre>
<p>さらに、手動で./configureも実行してしまいます。</p>
<p># めちゃくちゃ長いコマンドです。MacPortsによる自動インストールの時に実行されるコマンドと全く同じものです。<br />
# このコマンドはphp52パッケージインストール時に指定するvariantsによって変わってきます。（下の例は僕の場合）<br />
# 実際のコマンドは「port -d configure php52 ＜variants＞  」を実行した時の出力で確認することができます。</p>
<pre>$ sudo ./configure --prefix=/opt/local --mandir=/opt/local/share/man --infodir=/opt/local/share/info --with-config-file-path=/opt/local/etc/php5 --with-config-file-scan-dir=/opt/local/var/db/php5 --enable-calendar --with-iconv=/opt/local --enable-exif --enable-ftp --enable-wddx --with-zlib=/opt/local --with-bz2=/opt/local --without-sqlite --without-pdo-sqlite --with-libxml-dir=/opt/local --with-gettext=/opt/local --with-libexpat-dir=/opt/local --with-xmlrpc --enable-soap --enable-bcmath --enable-mbstring --enable-dba --enable-zip --with-openssl=/opt/local --with-mhash=/opt/local --with-mcrypt=/opt/local --with-mime-magic --with-xsl=/opt/local --with-curl=/opt/local --with-pcre-regex=/opt/local --with-gd --with-jpeg-dir=/opt/local --with-png-dir=/opt/local --enable-gd-native-ttf --with-freetype-dir=/opt/local --with-ldap=/usr --with-kerberos=/usr --with-iodbc=/usr --with-apxs2=/opt/local/apache2/bin/apxs --with-mysql=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_php52/work/mysql5 --with-pdo-mysql=/opt/local/bin/mysql_config5 --with-mysql-sock=/opt/local/var/run/mysql5/mysqld.sock --with-mysqli=/opt/local/bin/mysql_config5 --with-pear=/opt/local/lib/php</pre>
<p>これでようやくPHPをインストールする準備が整いました。<br />
以下のコマンドを実行して、PHP 5.2.13をインストールします。</p>
<pre>$ sudo port -d install php52 +apache2 +mysql5 +pear
$ sudo cp /opt/local/etc/php5/php.ini-dist /opt/local/etc/php5/php.ini
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" /opt/local/apache2/modules/libphp5.so</pre>
<p>エラーが表示されなければ、無事インストール完了です。</p>
<p>autoconfのあたりが少々スマートじゃないですが、一時的な対応策ということでよしということにしておきます。<br />
早く、gettextの開発者が対応してくれるといいですね！</p>
<p>それでは！</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/06/macports-snow-leopard-php-5-2-13-error.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/06/macports-snow-leopard-php-5-2-13-error.html" />
	</item>
		<item>
		<title>HTML5 Hackathon in Kyoto に参加してきました。</title>
		<link>http://www.kadoppe.net/archives/2010/05/html5-hackathon-in-kyoto.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=html5-hackathon-in-kyoto</link>
		<comments>http://www.kadoppe.net/archives/2010/05/html5-hackathon-in-kyoto.html#comments</comments>
		<pubDate>Tue, 18 May 2010 15:10:40 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[イベント]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[hackathon]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[report]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=282</guid>
		<description><![CDATA[


 photo credit: AndyArmstrong
京都GTUG主催のHTML5 Hackathon in Kyotoに参加してきました。
一週間に行われたIdeathonの様子はコチラ。
チームメンバーのみ [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F05%252Fhtml5-hackathon-in-kyoto.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F98OHew%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22HTML5%20Hackathon%20in%20Kyoto%20%E3%81%AB%E5%8F%82%E5%8A%A0%E3%81%97%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%22%20%7D);"></div>
<p><a title="Gabor" href="http://www.flickr.com/photos/95236086@N00/4527342327/" target="_blank"><img src="http://farm5.static.flickr.com/4069/4527342327_32406a3eb7_m.jpg" border="0" alt="Gabor" /></a><br />
<small><a title="Attribution-ShareAlike License" href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank"><img src="http://www.kadoppe.net/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="AndyArmstrong" href="http://www.flickr.com/photos/95236086@N00/4527342327/" target="_blank">AndyArmstrong</a></small></p>
<p><a href="http://kyoto-gtug.org/" target="_blank">京都GTUG</a>主催の<a href="http://kyoto-gtug.org/event/html5hackathoninkyotoboshuukaishi">HTML5 Hackathon in Kyoto</a>に参加してきました。</p>
<p>一週間に行われたIdeathonの様子は<a href="http://www.kadoppe.net/archives/2010/05/html5-hackathon-kyoto-ideathon.html">コチラ</a>。</p>
<p>チームメンバーのみんなで一丸となって作品作りに取り組んだ結果、最後に行った投票で僕たちの作品は見事9チーム中2位に選ばれました！いえーい！やったぜ！</p>
<p>作ったのはDJが使うターンテーブルのようなWebアプリです。<br />
主な機能として、</p>
<ul>
<li>二つのレコードが同時に再生できる</li>
<li>再生中はレコードが回転する</li>
<li>音量やミックスのバランスを調整できる</li>
<li>スクラッチ機能（マウスドラッグによるレコードの回転、スクラッチ音が鳴る、回転させた分だけ再生位置が戻ったり進んだりする）</li>
<li>レコードを交換できる</li>
</ul>
<p>を実装しました。</p>
<p>僕が参加したチームにはプログラマが一人（僕）しかいなかったので、ちゃんと実装出来るのか、正直少し不安でした。</p>
<p>ですがそんな不安をよそに、チームメンバーがお互いの足りない部分をおぎないながら、上手く作業を分担して作品作りに取り組むことができたので、なんとか完成度の高い作品を作り上げることができました。</p>
<p>本当に良いチームだったと思います。チームメンバーのみなさん、本当にありがとうございました！</p>
<p>さて、Hackathonに参加してよかったと思った点を簡単にまとめてみます。</p>
<ul>
<li><strong>色んな人のアイデアや作品を見ることでモチベーションが上がった</strong><br />
ブラウザでVNCクライアント（のようなもの）を作ったチームがいましたが（投票結果1位） 、「すごい！」と思うのと同時に何だか悔しい気持ちになりました。<br />
「次参加するときは絶対に1位になれるように頑張って勉強するぞ！」と、モチベーションがぐーんと上がりました。</li>
<li><strong>JavaScriptがある程度書けるようになった</strong><br />
今までほぼ書けなかったのでこれは大きな進歩。いいきっかけになりました。</li>
<li><strong>普段のコーディングスピードが上がった</strong><br />
今まで「当日中に作品を完成させなければならない」ようなシビアな時間制限の中でコーディングをした経験があまりなかったので、とてもいい経験になりました。<br />
翌日、会社でコーディングをしていると、「あ、俺、速くなってる」と実感することができました。</li>
<li><strong>チームメンバーをはじめいろんな人と出会い、いろんな事を話せた</strong><br />
チームメンバーはもちろん、懇親会でもいろんな人と楽しくお話できました。技術的な話が多く、タメになりました。そろそろ人見知りもマシになってきたかな？</li>
</ul>
<p>こんな感じでいいことずくめ！<br />
次回も是非参加して、次こそは1位になれるように頑張りたいと、いまから闘争心を燃やしています。</p>
<p>みなさんも一度参加してみてはどうでしょうか？<br />
いい経験になると思いますよ！</p>
<p>それでは！</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/05/html5-hackathon-in-kyoto.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/05/html5-hackathon-in-kyoto.html" />
	</item>
		<item>
		<title>HTML5 Hackathon in Kyoto 事前ミーティングに参加してきました</title>
		<link>http://www.kadoppe.net/archives/2010/05/html5-hackathon-kyoto-ideathon.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=html5-hackathon-kyoto-ideathon</link>
		<comments>http://www.kadoppe.net/archives/2010/05/html5-hackathon-kyoto-ideathon.html#comments</comments>
		<pubDate>Sun, 09 May 2010 02:37:54 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[イベント]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[hackathon]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[ideathon]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[study]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=265</guid>
		<description><![CDATA[


 photo credit: Igal Koshevoy
2010年5月8日に京都リサーチパークで開催された、Kyoto Google Technology User Group（京都GTUG）主催のHTML5勉強 [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F05%252Fhtml5-hackathon-kyoto-ideathon.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FdABUrj%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22HTML5%20Hackathon%20in%20Kyoto%20%E4%BA%8B%E5%89%8D%E3%83%9F%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AB%E5%8F%82%E5%8A%A0%E3%81%97%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%22%20%7D);"></div>
<p><a title="Our mighty volunteer army" href="http://www.flickr.com/photos/64244423@N00/4502269450/" target="_blank"><img src="http://farm5.static.flickr.com/4020/4502269450_aa1ce37bcb_m.jpg" border="0" alt="Our mighty volunteer army" /></a><br />
<small><a title="Attribution-NonCommercial License" href="http://creativecommons.org/licenses/by-nc/2.0/" target="_blank"><img src="http://www.kadoppe.net/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="Igal Koshevoy" href="http://www.flickr.com/photos/64244423@N00/4502269450/" target="_blank">Igal Koshevoy</a></small></p>
<p>2010年5月8日に京都リサーチパークで開催された、<a href="http://kyoto-gtug.org/" target="_blank">Kyoto Google Technology User Group（京都GTUG）</a>主催の<a href="http://sites.google.com/a/kyoto-gtug.org/home/event/html5hackathoninkyotoboshuukaishi">HTML5勉強会 &amp; HTML5 Hackathon in Kyoto 事前ミーティング（Ideathon）</a>に参加してきました。</p>
<p>Hackathonは、参加者が一日中ひたすらコーディングをし、あるテーマに沿ったソフトウェアを開発するイベントです。<br />
Hackathonにはたいてい開催日前に勉強会とIdeathon（Hackathon当日に何を作るのかを話しあうミーティング）が用意されており、今回僕はそれに参加しました。</p>
<p>参加者は大体40人くらいだったかな？<br />
それだけHTML5って注目されているんですね！</p>
<p>ちなみに僕は今回がHackathon初参加です。<br />
HTML5やJavaScriptに関する知識も、「興味がある」という程度でほとんど持っていないので、若干緊張した気持ちで参加しました。</p>
<p>以下、簡単なレポート。</p>
<h4>HTML5勉強会</h4>
<p>村岡正和さんによる「HTML5で広がるリッチインターネットアプリケーション開発の未来」というタイトルでの発表。</p>
<p>HTML5で強化される点のうち、RIA開発に関係する部分に焦点をあてて紹介されてました。</p>
<p>RIA開発用にHTML5で追加されたAPIの概要に加えて、それらのAPIを使ったデモサイトも併せて紹介されていたので、聴いていてとても面白かったです。<br />
発表が進むにつれて、僕の中のHTML5に対する期待がどんどん膨らんでいきました。</p>
<p>紹介されていたHTML5のデモのなかでも、一番僕がすごいと感じたのは次のデモ。</p>
<ul>
<li><a href="http://media.chikuyonok.ru/ambilight/" target="_blank">Ambilight for video tag</a></li>
</ul>
<p>動画の周りに、スクリーンの光が周りに反射しているような効果が表示されてます。<br />
なんとこれ、動画の描画情報をリアルタイムにcanvas要素にコピーして、そのcanvas要素を拡大して動画にマスクすることで実現しているみたいなんです！（間違っていたらごめんなさい）</p>
<p>今までのWebにおける動画ってFlashで完結してしまってたけど、HTML5で標準化されることで他のHTML要素との連携が簡単になり、単に「動画を再生する」ということ以上のモノが実現できるんですね！</p>
<p>HTML5の可能性と、その可能性を最大限引き出すためのJavaScriptの必要性を実感することができた勉強会でした。<br />
これだけでも参加してよかった！</p>
<h4>Ideathon</h4>
<p>勉強会の後はIdeathonです。</p>
<p>まず、参加者が作りたいと思っているものによって大まかにチーム分けが行われました。<br />
あらかじめ９つのグループが用意されていたので、参加者はどれか一つを選択する感じ。<br />
（用意されていたのは、Game, Multimedia, GWT, Tool, Geolocation, Other, Graphic, Network, 入門、だったかな？）</p>
<p>僕はHTML5のオーディオ再生機能を使って「あるモノ」を作りたいと思っていたので、Multimediaチームを選択しました。</p>
<p>個人での開発を基本とするHackathonもあるみたいなんですが、今回のHackathonはGTUGの方針でチーム開発を重視しているそうです。</p>
<p>最初、Multimediaチームは僕1人でどうなることかと不安でしたが、主催者様のお気遣いにより晴れて３人チームを組むことができました。</p>
<p>各チーム30分の議論ののち、みんなの前でアイデアの発表。</p>
<p>どのチームも面白いものを作ろうとしていて、とてもいい刺激になりました。<br />
中には「本当にできるのかなぁ？」というすごいアイデアもあったり（笑）</p>
<p>最後に参加者全員による投票を行い、一番面白かったアイデアを考えたチームには商品が贈呈されていました。</p>
<h4>まとめ</h4>
<p>今回の勉強会 &amp; Ideathonに参加して、HTML5の可能性も実感することができたし、Hackathonに向けてその周辺技術を習得しなければならない状況に自分を追い込むこともできたので、本当によかったと思います。</p>
<p>何よりIdeathonでの色んな人達の様々なアイデアを聞くことができて、自分のモチベーション向上につながったのが良かったです！</p>
<p>僕たちMultimediaチームのアイデアは投票であまり人気がなかったけど、その下馬評を覆すような作品を作って、みんなの前で発表できるように頑張りたいな。</p>
<p>そのためにはまずHTML5とJavaScriptの勉強をしなければ！</p>
<p>頑張るぞー！！</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/05/html5-hackathon-kyoto-ideathon.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/05/html5-hackathon-kyoto-ideathon.html" />
	</item>
		<item>
		<title>Cocoa勉強会関西に参加します</title>
		<link>http://www.kadoppe.net/archives/2010/04/cocoa-kansai.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cocoa-kansai</link>
		<comments>http://www.kadoppe.net/archives/2010/04/cocoa-kansai.html#comments</comments>
		<pubDate>Wed, 21 Apr 2010 12:06:33 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[イベント]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=230</guid>
		<description><![CDATA[


 photo credit: Digital Sextant
先日、Cocoa勉強会関西というコミュニティに、メンバーとして参加させていただくことになりました。

Cocoa勉強会関西

Cocoaというのは、Ma [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F04%252Fcocoa-kansai.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fc0Sm8t%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Cocoa%E5%8B%89%E5%BC%B7%E4%BC%9A%E9%96%A2%E8%A5%BF%E3%81%AB%E5%8F%82%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%22%20%7D);"></div>
<p><a title="Hot Chocolate and Truffles" href="http://www.flickr.com/photos/61098690@N00/4491293893/" target="_blank"><img src="http://farm3.static.flickr.com/2794/4491293893_ef39ac9d38_m.jpg" border="0" alt="Hot Chocolate and Truffles" /></a><br />
<small><a title="Attribution License" href="http://creativecommons.org/licenses/by/2.0/" target="_blank"><img src="http://www.kadoppe.net/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="Digital Sextant" href="http://www.flickr.com/photos/61098690@N00/4491293893/" target="_blank">Digital Sextant</a></small></p>
<p>先日、Cocoa勉強会関西というコミュニティに、メンバーとして参加させていただくことになりました。</p>
<ul>
<li><a href="http://kansai.cocoa-study.com/" target="_blank">Cocoa勉強会関西</a></li>
</ul>
<p>Cocoaというのは、Mac OS Xのクライアントアプリケーションや、iPhoneアプリケーションを開発する際に用いるフレームワークです。</p>
<p>仕事で、MacアプリやiPhoneアプリの開発に関わることになったのと、趣味で個人的にiPhoneアプリをリリースしてみたいと思っていたことから、関西でCocoaを扱っている勉強会をWebを探していたのですが、僕の求めているコミュニティとほぼドンピシャなところが見つかりました。</p>
<p>Cocoa勉強会関西は、関西で活動しているIT勉強会の中では比較的昔から存在するコミュニティです。二ヶ月に一度開催される例会はすでに32回も開催されています。</p>
<p>まずは見学からということで、2010年4月3日に開催された例会を見学させていただきました。見学した結果、Xcodeを使った開発やiPhoneアプリを開発する時に役立ちそうな濃い内容の発表をたくさん聞く事ができたので、今後もこの勉強会に参加させていただくことに決めました。</p>
<p>まだまだCocoa初心者な僕ですが、ゆくゆくは自分も発表者として他の参加者のみなさんにとって役に立つような発表ができるように、頑張って勉強していきたいと思います。仕事ももっとサクサクできるようになりたいですしね！</p>
<p>今後ともどうぞよろしくお願いいたします。</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/04/cocoa-kansai.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/04/cocoa-kansai.html" />
	</item>
		<item>
		<title>[Java] StringBuilderとStringBufferの速度差</title>
		<link>http://www.kadoppe.net/archives/2010/03/java-string-buffer-builder.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=java-string-buffer-builder</link>
		<comments>http://www.kadoppe.net/archives/2010/03/java-string-buffer-builder.html#comments</comments>
		<pubDate>Tue, 02 Mar 2010 04:24:34 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=189</guid>
		<description><![CDATA[


Javaには、変更可能な文字列を表すクラスとして、StringBuilderとSringBufferの2種類のクラスが存在しています。
StringBuilderは非スレッドセーフ、StringBufferはスレッ [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F03%252Fjava-string-buffer-builder.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FaGzk1q%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%5BJava%5D%20StringBuilder%E3%81%A8StringBuffer%E3%81%AE%E9%80%9F%E5%BA%A6%E5%B7%AE%22%20%7D);"></div>
<p><a href="http://www.flickr.com/photos/86672335@N00/4395682765/" title="Riflessi" target="_blank"><img src="http://farm5.static.flickr.com/4034/4395682765_a9857c5c49_m.jpg" alt="Riflessi" border="0" /></a></p>
<p>Javaには、変更可能な文字列を表すクラスとして、StringBuilderとSringBufferの2種類のクラスが存在しています。</p>
<p>StringBuilderは非スレッドセーフ、StringBufferはスレッドセーフ、その分StringBuilderの方がStringBufferより動作速度が速い、という点が二つのクラス間の大きな違いのようです。</p>
<p>いったいどれくらい速いのか、ということについて気になったので、以下のコードを実行して調べてみました。StringBuilderとStringBufferを用いて&#8221;Hello, world!&#8221;という文字列を100万回結合し、その所要時間を計測しています。</p>
<p>ちなみに、環境はMac OS X 10.6 + JDK5です。</p>
<h4>StringBuilder実験用コード</h4>
<p>[java toolbar=false]<br />
public class StringBuilderTest {<br />
     public static void main(String[] args) {<br />
          StringBuilder sb = new StringBuilder();<br />
          long start = System.currentTimeMillis();<br />
          for (int i = 0; i < 1000000; i++) {<br />
               sb.append("Hello, world!");<br />
          }<br />
          long end = System.currentTimeMillis();</p>
<p>          System.out.println("required time: " + (end - start));<br />
     }<br />
}<br />
[/java]</p>
<h4>StringBuffer実験用コード</h4>
<p>[java toolbar=false]<br />
public class StringBufferTest {<br />
     public static void main(String[] args) {<br />
          StringBuffer sb = new StringBuffer();<br />
          long start = System.currentTimeMillis();<br />
          for (int i = 0; i < 1000000; i++) {<br />
               sb.append("Hello, world!");<br />
          }<br />
          long end = System.currentTimeMillis();</p>
<p>          System.out.println("required time: " + (end - start));<br />
     }<br />
}<br />
[/java]</p>
<h4>結果</h4>
<p>上記のプログラムを10回ずつ実行し、所要時間の平均値を計算したところ、結果は以下のようになりました。</p>
<ul>
<li>StringBuilder：平均<strong>132.6</strong> msec</li>
<li>StringBuffer：平均<strong>170.7</strong> msec</li>
</ul>
<p>StringBuilderはStringBufferの約78%の時間で処理を完了出来ていることがわかります。</p>
<p>Javaプログラマからすれば常識のようなのですが、上記の結果からもマルチスレッドからの文字列操作を行わない場合は、基本的にStringBuilderを使うのがよい、ということが言えそうです。一つ勉強になりました。</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/03/java-string-buffer-builder.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/03/java-string-buffer-builder.html" />
	</item>
		<item>
		<title>「休日Webアプリクリエイターズ（仮）」のようなコミュニティを作りたい or 参加したい</title>
		<link>http://www.kadoppe.net/archives/2010/02/webappcreators.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=webappcreators</link>
		<comments>http://www.kadoppe.net/archives/2010/02/webappcreators.html#comments</comments>
		<pubDate>Thu, 11 Feb 2010 14:05:24 +0000</pubDate>
		<dc:creator>kadoppe</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[announcement]]></category>

		<guid isPermaLink="false">http://www.kadoppe.net/?p=175</guid>
		<description><![CDATA[



このところ、新しいWebアプリのアイデア創出、開発、公開、運営を、本業（仕事 or 学業）とは別にメンバー各人が休日に行えるようなコミュニティがあればいいのに、と考えるようになりました。
僕としては、以下の項目に [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kadoppe.net%252Farchives%252F2010%252F02%252Fwebappcreators.html%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F91J9t7%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%E3%80%8C%E4%BC%91%E6%97%A5Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%AF%E3%83%AA%E3%82%A8%E3%82%A4%E3%82%BF%E3%83%BC%E3%82%BA%EF%BC%88%E4%BB%AE%EF%BC%89%E3%80%8D%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%82%92%E4%BD%9C%E3%82%8A%E3%81%9F%E3%81%84%20or%20%E5%8F%82%E5%8A%A0%E3%81%97%E3%81%9F%E3%81%84%22%20%7D);"></div>
<p><a title="48 hour challenge, second day" href="http://www.flickr.com/photos/24829225@N07/3412189308/" target="_blank"><img src="http://farm4.static.flickr.com/3372/3412189308_8f1c190b5f_m.jpg" border="0" alt="48 hour challenge, second day" /></a><span style="font-size: small;"><span><br />
</span></span></p>
<p>このところ、<strong>新しいWebアプリのアイデア創出、開発、公開、運営を、本業（仕事 or 学業）とは別にメンバー各人が休日に行えるようなコミュニティ</strong>があればいいのに、と考えるようになりました。</p>
<p>僕としては、以下の項目に該当するような人たちが集まっていて、自分が出来る範囲で活動にコミットできるようなゆるい感じのコミュニティをイメージしています。</p>
<ul>
<li>Webアプリのアイデアが持っている、けど一人で作れるかどうか不安。</li>
<li>プログラミングがしたい、けど作りたいもののアイデアが特にあるわけではない。</li>
<li>オープンソースプロジェクトに参加するのはまだ少し敷居が高く感じる。</li>
</ul>
<p>それを仕事とするのではなく、あくまで趣味の範囲での活動です。起業とも関係ありません。</p>
<p>Twitter上で色々な方とお話していると、作りたいWebアプリのアイデアがポッと湧き出てくることがあります。<strong>そういうアイデアをTwitter上でゆるい感じで知り合った皆さんと協力して具現化できるような枠組みがあれば面白そうだ！</strong>とふと思ったのが、今回の件を考え始めたきっかけです。</p>
<p>「ある特定の場所に住んでいる人」のように限定されたコミュニティである必要はないと思っています。たとえ離れていても、必要なミーティングはSkypeなどを用いてビデオでもチャットでも行うことができますし、開発もきっとできるはず？</p>
<p>とまぁ、ものすごく漠然としているのですが、僕が今考えていることはこんな感じです。</p>
<p>もし、すでに同じコンセプトで活動されているコミュニティがあればどうか入れてください。まだ、そういうコンセプトのコミュニティがないのであれば、頑張って作ってみたいと思います。</p>
<p>「そんなコミュニティいらねぇよ」「一緒にやってみたい」「こんなコミュニティがあるよ」など、コメント・ツッコミ等いただけると幸いです。</p>
<p>どうぞ、よろしくお願いいたします。</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kadoppe.net/archives/2010/02/webappcreators.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kadoppe.net/archives/2010/02/webappcreators.html" />
	</item>
	</channel>
</rss>
