<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>マキノ式ブログ</title>
    <link>http://blog.makino-style.org/</link>
    <description>上海見聞録、Java考察、ハイテク関連などを中心として日々の思いをぶちまけます。</description>
    <!-- optional tags -->
    <language>ja</language>           <!-- valid langugae goes here -->
    <generator>Nucleus CMS v3.21</generator>
    <copyright>ｩ</copyright>             <!-- Copyright notice -->
    <category>Weblog</category>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>http://blog.makino-style.org//nucleus/nucleus2.gif</url>
      <title>マキノ式ブログ</title>
      <link>http://blog.makino-style.org/</link>
    </image>
    <item>
 <title><![CDATA[Twitter公式ページ用のGreasemonkeyによるRTスクリプト]]></title>
 <link>http://blog.makino-style.org/item/232</link>
<description><![CDATA[<div class="leftbox"></div>作りました。<br />
GreaseMonkeyが入ってれば動くはずです。<br />
<a href="http://blog.makino-style.org/userrt.user.js">userrt.user.js</a><br />
利用方法は簡単。上記をインストールした後、twitter.comのページで背景をダブルクリックすればRTボタンが現れます。<br />
自動更新でTLが更新されたらまた背景をダブルクリックしてください。<br />
# なおunsafeWindow使ってるのでChromeでは動きません。Chrome対応はそのうち・・・<br />
]]></description>
 <category>Programing</category>
<comments>http://blog.makino-style.org/item/232</comments>
 <pubDate>Fri, 12 Mar 2010 11:02:02 +0900</pubDate>
</item><item>
 <title><![CDATA[CodeIgniterのform_validationでcallbackを利用するときの注意]]></title>
 <link>http://blog.makino-style.org/item/231</link>
<description><![CDATA[<div class="rightbox"></div>色々事情がありまして、PHPをやってるわけですが、今回はフレームワークとして軽量なことで話にあがるCodeIgniterを採用しています。<br />
まあ詳しい部分は公式ドキュメントや、日本語化されたドキュメントが素晴らしいのでそちらを見てほしいわけです。<br />
<br />
CodeIgniter - Open source PHP web application framework<br />
<a href="http://codeigniter.com/">http://codeigniter.com/</a><br />
<br />
日本CodeIgniterユーザ会<br />
<a href="http://codeigniter.jp/">http://codeigniter.jp/</a><br />
<br />
で、本題にはいりますが、<br />
<b>form_validationでcallbackを利用するときのコールバックされるメソッド名に注意が必要</b><br />
です。<br />
<br />
<a href="http://codeigniter.jp/user_guide_ja/libraries/form_validation.html#callbacks">ドキュメントどおりの場合</a>、usernameのカスタムチェックをコールバックで行う場合には、CodeIgniterのコントローラー内において下記のように記述します。<br />
ちなみこのクラスは<i>http://localhost/index.php/form</i>または<i>http://localhost/index.php/form/index</i>で呼び出されるとしましょう。<br />
<pre><?php<br />
class Form extends Controller {<br />
  function index()<br />
  {<br />
    $this->load->helper(array('form', 'url'));<br />
    $this->load->library('form_validation');<br />
    $this->form_validation->set_rules('username', 'ユーザ名', 'callback_username_check');<br />
    $this->form_validation->set_rules('password', 'パスワード', 'required');<br />
    $this->form_validation->set_rules('passconf', 'パスワードの確認', 'required');<br />
    $this->form_validation->set_rules('email', 'メールアドレス', 'required');<br />
    if ($this->form_validation->run() == FALSE)<br />
    {<br />
      $this->load->view('myform');<br />
    }<br />
    else<br />
    {<br />
      $this->load->view('formsuccess');<br />
    }<br />
  }<br />
    <br />
  function username_check($str)<br />
  {<br />
    if ($str == 'test')<br />
    {<br />
      $this->form_validation->set_message(<br />
        'username_check', 'フィールド %s に、"test"は使えません');<br />
      return FALSE;<br />
    }<br />
    else<br />
    {<br />
      return TRUE;<br />
    }<br />
  }<br />
}<br />
?></pre>要するに、<br />
<pre>$this->form_validation->set_rules('username', 'ユーザ名', 'callback_username_check');</pre>と<pre>function username_check($str)</pre>と<pre>$this->form_validation->set_message(<br />
  'username_check','フィールド %s に、"test"は使えません');</pre>の部分が対応するわけです。<br />
<br />
<b>ところが！</b>ですね。<br />
CodeIgniterのコントローラの仕様上、標準状態では<a href="http://codeigniter.jp/user_guide_ja/general/controllers.html#private">コントローラーのメソッドが_（アンダースコア）で始まっていない場合</a>は下記のようなURLで呼び出せてしまいます。<br />
<i>http://localhost/index.php/form/username_check</i><br />
さらに標準の仕様では、メソッド名より後ろの部分にスラッシュで文字列を追加すると<a href="http://codeigniter.jp/user_guide_ja/general/controllers.html#passinguri">自動的に引数</a>になってしまいます。<br />
<i>http://localhost/index.php/form/username_check/username</i><br />
→ つまり $form->username_check('username');を実行したのと同じ。<br />
<br />
<b>まずいですね・・・・。</b><br />
カスタムチェックでDBアクセスとかしてたらさらにまずいですね。<br />
<br />
で、ぱっと思い浮かんだ対応方法としては<br />
<br />
<b>１、</b> <a href="http://codeigniter.jp/user_guide_ja/general/controllers.html#remapping"><i>_remap</i>をオーバーライド</a>してコントローラの振る舞いを再実装する。<br />
<b>２、 </b>コールバックメソッドを_（アンダースコア）付きにして、コールバック指定のところでちゃんと_（アンダースコア）を入れてやる。<br />
<br />
の２つです。１はだるいので２がおすすめです。<br />
<br />
さっきの場合だと下記のように修正します。<br />
<b>callback_（アンダースコア）_（アンダースコア）username_check</b><br />
<pre>$this->form_validation->set_rules('username', 'ユーザ名', 'callback__username_check');</pre><b>_（アンダースコア）username_check</b><br />
<pre>function _username_check($str)<br />
$this->form_validation->set_message(<br />
  '_username_check','フィールド %s に、"test"は使えません');</pre><br />
以上で、コールバックメソッドも無事に隠蔽されます。<br />
他にうまい方法有ったり、間違っているようならご指摘してください。]]></description>
 <category>メモ</category>
<comments>http://blog.makino-style.org/item/231</comments>
 <pubDate>Thu, 17 Dec 2009 04:44:07 +0900</pubDate>
</item><item>
 <title><![CDATA[虹口を散歩]]></title>
 <link>http://blog.makino-style.org/item/230</link>
<description><![CDATA[上海の3号線赤峰駅から上海外語大学を通って、虹口足球場駅まで散歩をしてきました。<br />
その時の写真。<br />
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&captions=1&hl=ja&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FFumitaka.Makino%2Falbumid%2F5414066649636645377%3Falt%3Drss%26kind%3Dphoto%26hl%3Dja" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>]]></description>
 <category>@上海</category>
<comments>http://blog.makino-style.org/item/230</comments>
 <pubDate>Sat, 12 Dec 2009 23:13:36 +0900</pubDate>
</item><item>
 <title><![CDATA[なけなしのやる気を返してくれElectricBoxめ！]]></title>
 <link>http://blog.makino-style.org/item/229</link>
<description><![CDATA[こいつは、みんなのなけなしのやる気と貴重な睡眠時間を喰い潰してくれますよ。<br />
それでも良かったら続きをwiPhone版もあるんだけど、Flash版（無料）もある。<br />
iPhone版はLiteはLv10まで無料。<br />
<br />
<br />
要するに色々な変換媒体を使って電気を流すというパズルゲーム。<br />
音楽とシンプルさがたまらん。<br />
<br />
<b>Free Online Flash Games | Candystand.com</b><br />
<a href="http://www.candystand.com/play/electric-box">http://www.candystand.com/play/electric-box</a><br />
<br />
これを見た皆のなけなしのやる気と呼ばれるような何かがどうか消えてなくなりますよーにw]]></description>
 <category>徒然</category>
<comments>http://blog.makino-style.org/item/229</comments>
 <pubDate>Fri, 04 Dec 2009 21:47:05 +0900</pubDate>
</item><item>
 <title><![CDATA[「差別と日本人」読了]]></title>
 <link>http://blog.makino-style.org/item/227</link>
<description><![CDATA[<div class="rightbox"><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=fumitakamakin-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4047101931" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
</div>野中広務と辛淑玉が「部落とは、在日とは、なぜ差別は続くのか？」をテーマに対談をしている。<br />
一方的な被害者の視点や誰が悪いのかというような形ではなく、近代日本においての現象として、構造としての差別に焦点を当てつつ彼らの実体験を重ねており素直に読める内容である。<br />
どのような構造で差別というものが生み出されていくのか、そしてそれがどのような結果をもたらしたのか、対談者はそれらにどのように携わってきたのかという視点であり差別が連鎖していくメカニズムをとてもわかりやすく説明している。<br />
<br />
<b>▽ 感想として</b><br />
TwitterやTumblr、ブログや2ch、またはそのまとめサイトを見ているとどうしたって右傾的（というよりむしろレイシズム）な意見を見聞きし、どこかで自分もどこかしらそのような思想を取り込んでしまっているということを実感させられた。<br />
 それは例えば、ネットをやってると誰しも目にするような在日朝鮮人、被差別部落への侮蔑の言葉や怪文書（だれそれは在日とか）への無批判な精神的迎合などである。<br />
これは本書の中で辛淑玉が指摘している行為そのものだ、<br />
<br />
<i>自分は他者より優位だという感覚は「享楽」そのものであり、一度その享楽を味わうと、何度でも繰り返したくなる。特に人は、自分より強いものから存在価値を否定されたり、劣等感をもたらされたりしたとき、自己の劣等意識を払拭するために、より差別を受けやすい人々を差別することで傷ついた心のバランスをとろうとする。</i><br />
<br />
この構造は、とても良く理解できる。なぜなら、日々鬱憤がたまり自身が苦しんでいる時（例えばブラック企業で疲弊しきっているとき）、真実かどうか自身では確認していない事実に基づいて会ったこともない在日朝鮮人や被差別部落、特定の宗教団体、生活保護と母子加算を受けているどこかの女性、過剰な権利を要求している労務者をシンボルとして叩くのは快感だからだ。<br />
ただのイジメの構造を義憤や公憤、愛国心に置き換えられるので後ろめたさもなくさらに気持ちが良い。<br />
本書は、自分の中にあるそういう下劣な部分を強く認識される一冊であった。<br />
]]></description>
 <category>徒然</category>
<comments>http://blog.makino-style.org/item/227</comments>
 <pubDate>Mon, 30 Nov 2009 18:30:04 +0900</pubDate>
</item><item>
 <title><![CDATA[ExcelをVB.NETからcloseする方法]]></title>
 <link>http://blog.makino-style.org/item/226</link>
<description><![CDATA[友人が困っていたので私も興味から調べてみました。<br />
現象としてはVB.NETからExcelを開いて色々したあと閉じるとExcelのプロセスが残留するというものです。<br />
<br />
下記のサイトがもっとも良いかも。<br />
<b>50 Ways to Kill Excel</b><br />
<a href="http://www.devcity.net/PrintArticle.aspx?ArticleID=239">http://www.devcity.net/PrintArticle.aspx?ArticleID=239</a><br />
<br />
前置きにも<i><br />
"How do I kill Excel" is a very common question asked in development forums and answered hundreds of times.<br />
</i>と書いてありますが、かなりポピュラーな問題のようです。<br />
COMとか詳しくないのですが、外部リソースの終了処理の際にGCによる.NET側の開放とのタイミングの問題で上手にリソースが開放されてないために起きるようで、正規の手順を踏んでもダメな場合はもうこれはKillするしかないみたいですね。<br />
<br />
で、大まかな流れとしては、ちゃんと開いて、ちゃんと閉じる。これを試して無理なら強制終了だ！そうです。<br />
<pre>Excel Inception<br />
　1. Open Excel<br />
　2. The MAIN Sub<br />
Excel Closure<br />
　1. Ask Nicely<br />
　2. COM Interface Management<br />
　3. Garbage Collection and Memory Management<br />
Excel Force-Kill<br />
　Kill the Process</pre><br />
最後のForce-Killのところには、こんな一文もw<br />
<i>In most cases ... you need to kill a <b>particular instance</b> of Excel</i><br />
]]></description>
 <category>メモ</category>
<comments>http://blog.makino-style.org/item/226</comments>
 <pubDate>Wed, 25 Nov 2009 21:03:36 +0900</pubDate>
</item><item>
 <title><![CDATA[ChromiumOS（GoogleChromeOS）の構築]]></title>
 <link>http://blog.makino-style.org/item/225</link>
<description><![CDATA[ついにGoogleのChromeOSが発表されました。<br />
<a href="http://dev.chromium.org/chromium-os">http://dev.chromium.org/chromium-os</a><br />
<br />
まあ、どういうものかは上記から見てもらうとして、とりあえず<a href="http://sites.google.com/a/chromium.org/dev/chromium-os/building-chromium-os/build-instructions">Build Instructions (The Chromium Projects)</a>にしたがって構築してみました。<br />
<br />
<b>▽ 環境</b><br />
 Ubuntu9.04(64bit)<br />
 Ubuntu8.04(linodeのVPS、32bit)<br />
<br />
<b>▽ ビルドの流れ</b><br />
1: 各種ダウンロード<br />
 ChromiumOSのソースコード/Chromiumのバイナリ<br />
2: ローカルリポジトリ構築<br />
3: chrootでBuild環境に切り替え<br />
4: パッケージ構築<br />
5: カーネル構築<br />
6: イメージ構築<br />
<br />
<b>▽ ビルドの時の簡易手順（飽くまでも参考、ちゃんとドキュメント読むこと！）</b><br />
・前準備、作業は全て自分のホームディレクトリ<br />
<pre>wget http://build.chromium.org/buildbot/archives/chromiumos-0.4.22.8.tar.gz<br />
tar xfz chromiumos-0.4.22.8.tar.gz<br />
ln -s ./chromiumos-0.4.22.8 chromiumos<br />
wget http://build.chromium.org/buildbot/snapshots/chromium-rel-linux-chromiumos/32528/chrome-linux.zip<br />
mkdir -p ~/chromiumos/src/build/x86/local_assets<br />
cp ./chrome-linux.zip ~/chromiumos/src/build/x86/local_assets/chrome-chromeos.zip</pre><br />
・構築環境の準備<br />
→ 例えば中国とかでGFWの内側にいる人は任意のProxyを通さないとmake_chroot.shで失敗するので、<i>export http_proxy="http://****:***"</i>とかでProxyを設定しておかないとダメです。<br />
<pre>cd ~/chromiumos/src/scripts<br />
./make_local_repo.sh<br />
./make_chroot.sh</pre><br />
・構築環境へchroot<br />
<pre>./enter_chroot.sh</pre><br />
---以下はchroot環境中での作業<br />
・任意のローカルアカウント名、共有ユーザのパスワードの設定<br />
<pre>( cd ../platform/pam_google && ./enable_localaccount.sh ローカルアカウント名 )<br />
./set_shared_user_password.sh</pre><br />
・ビルド<br />
<pre>./build_platform_packages.sh<br />
./build_kernel.sh<br />
./build_image.sh</pre><br />
---chroot終了<br />
<pre>exit</pre><br />
・VMwareのイメージ作成<br />
→ ビルドマニュアルには書いてないけど<i>sudo apt-get install qemu</i>しないと失敗します。<br />
<pre>./image_to_vmware.sh --from=~/chromiumos/src/build/images/999.999.32309.213245-a1</pre><br />
・USBディスクのイメージ作成<br />
→ 2GBだとギリギリ足りないので、まあ4GB程度あると良い。下記はUSBストレージが<i>/dev/sdc</i>の場合。<br />
<pre>./image_to_usb.sh --from=~/chromiumos/src/build/images/999.999.32309.213245-a1　--to=/dev/sdc</pre><br />
<br />
<b>▽ 中国在住の人向け：GFWをProxyで回避する場合</b><br />
ROOTイメージ内の下記ファイル<br />
<pre>/usr/bin/chromeos-chrome</pre><br />
にて<i>--proxy-server=host:port</i>オプションを指定すれば良い。]]></description>
 <category>メモ</category>
<comments>http://blog.makino-style.org/item/225</comments>
 <pubDate>Fri, 20 Nov 2009 07:17:10 +0900</pubDate>
</item><item>
 <title><![CDATA[Ubuntu9.04のkernel更新後、音が出なくなった。]]></title>
 <link>http://blog.makino-style.org/item/224</link>
<description><![CDATA[自動更新によりUbuntu9.04のkernelを<i>2.6.28-15-generic</i>から<i>2.6.28-16-generic</i>へ更新したら、再起動後から音が出なくなってジジジッってノイズが聞こえるだけになってしまった。<br />
<br />
スペック<br />
▽SOYO SY-N8V-RL<br />
MCP78V、いわゆるGeForce8100系<br />
▽SoundChip<br />
Realtech ALC662<br />
aplay -l の結果は下記<br />
カード 0: NVidia [HDA NVidia], デバイス 0: ALC662 Analog [ALC662 Analog]<br />
▽カーネル<br />
2.6.28-16-generic<br />
<br />
結論から言うと下記で音が出るようになる。（モジュールのデフォルトのポート設定でも変わったのかな？？？）<br />
<br />
サウンドポートの設定を追加する。これはM/Bによって違うが背面にジャックが3ポートの一般的な場合。<br />
/etc/modprobe.d/alsa-baseの一番下に下記追加<br />
<pre>options snd-hda-intel model=3stack-6ch</pre>]]></description>
 <category>メモ</category>
<comments>http://blog.makino-style.org/item/224</comments>
 <pubDate>Fri, 23 Oct 2009 22:30:26 +0900</pubDate>
</item><item>
 <title><![CDATA[The Bund (Oct, 2009)]]></title>
 <link>http://blog.makino-style.org/item/223</link>
<description><![CDATA[散歩にいったついでに撮影。<br />
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.co.jp/s/c/bin/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.co.jp&hl=ja&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.co.jp%2Fdata%2Ffeed%2Fapi%2Fuser%2FFumitaka.Makino%2Falbumid%2F5395618936785242225%3Falt%3Drss%26kind%3Dphoto%26hl%3Dja" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>]]></description>
 <category>@上海</category>
<comments>http://blog.makino-style.org/item/223</comments>
 <pubDate>Fri, 23 Oct 2009 11:42:03 +0900</pubDate>
</item><item>
 <title><![CDATA[M2とGAE/J]]></title>
 <link>http://blog.makino-style.org/item/222</link>
<description><![CDATA[下記にSDKのライブラリのインストール、POMの記述法あり。<br />
<br />
Shalin Says...: Google App Engine and Maven<br />
<a href="http://shalinsays.blogspot.com/2009/04/google-app-engine-and-maven.html">http://shalinsays.blogspot.com/2009/04/google-app-engine-and-maven.html</a><br />
<br />
ちなみに私の場合はこんな感じです。<br />
<pre>mvn install:install-file \<br />
-Dfile=$ECLIPSE_HOME/plugins/com.google.appengine.eclipse.sdkbundle_1.2.2.v200907291526/appengine-java-sdk-1.2.2/lib/shared/appengine-local-runtime-shared.jar \<br />
-DgroupId=com.google -DartifactId=appengine-local-runtime-shared -Dversion=1.2.2 -Dpackaging=jar -DgeneratePom=true<br />
<br />
mvn install:install-file \<br />
-Dfile=$ECLIPSE_HOME/plugins/com.google.appengine.eclipse.sdkbundle_1.2.2.v200907291526/appengine-java-sdk-1.2.2/lib/user/appengine-api-1.0-sdk-1.2.2.jar \<br />
-DgroupId=com.google -DartifactId=appengine-sdk-1.2.2-api -Dversion=1.2.2 -Dpackaging=jar -DgeneratePom=true<br />
<br />
mvn install:install-file \<br />
-Dfile=$ECLIPSE_HOME/plugins/com.google.appengine.eclipse.sdkbundle_1.2.2.v200907291526/appengine-java-sdk-1.2.2/lib/user/orm/datanucleus-appengine-1.0.2.final.jar \<br />
-DgroupId=org.datanucleus -DartifactId=datanucleus-appengine -Dversion=1.0.2.final -Dpackaging=jar -DgeneratePom=true</pre><br />
<br />
]]></description>
 <category>メモ</category>
<comments>http://blog.makino-style.org/item/222</comments>
 <pubDate>Sun, 27 Sep 2009 20:19:10 +0900</pubDate>
</item>
  </channel>
</rss>