<?xml version="1.0" encoding="utf-8"?>
<!-- name="generator" content="pyblosxom/1.4.1 7/27/2007" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">
<channel>
<title>DaemonFreaks Blog   </title>
<link>http://www.daemonfreaks.com/blog</link>
<description>DaemonFreaks Blog</description>
<language>ja</language>
<item>
  <title>第4回梅田Pythonごはんの会 参加者募集のお知らせ</title>
  <link>http://www.daemonfreaks.com/blog/200811161538.html</link>
  <description><![CDATA[
<p>今月も開催するみたいです。もちろん僕も参加します。</p>
<p>今回は創作だし巻きのお店らしいです……ゴクリ。</p>
<p><a href="http://groups.google.co.jp/group/python-kansai/web/python">第４回 梅田Pythonごはんの会 - Python関西 | Google グループ</a></p>

]]></description>
</item>

<item>
  <title>iPod miniのバッテリーとディスクを交換</title>
  <link>http://www.daemonfreaks.com/blog/200811142241.html</link>
  <description><![CDATA[
<p>手元にお下がりで貰った初期型iPod miniがあり、<a href="http://www.rockbox.org/">ROCKbox</a>をインストールして使っているのですが、</p>
<ol>
<li>容量が4GBしかない</li>
<li>バッテリーがヘタってて2時間ぐらいしか持たない</li>
</ol>
<p>という理由でかなり不満に思っていたのですが、何気なくネットで調べていたら、自分でバッテリー交換とディスク交換ができるという事を知り、早速試してみました。</p>
<p>交換用バッテリーは、<a href="http://www.mammyshop.com/main_page/product_info/cPath/352_356/products_id/819/">マミーショップというお店</a>で注文しました。1300円ぐらいで安かったです。</p>
<p>ディスクは、標準では4GBのマイクロドライブが入っているようなのですが、コンパクトフラッシュがそのまま使えるという事らしいので、Amazonで<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012Q2PD6/daemonfreaks-22/ref=nosim/" name="amazletlink" target="_blank">トランセンドの32GBコンパクトフラッシュ</a>を注文しました。</p>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012Q2PD6/daemonfreaks-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/513zkU84WyL._SL160_.jpg" alt="Transcend  32GB CF CARD (133X TYPE I ) TS32GCF133" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012Q2PD6/daemonfreaks-22/ref=nosim/" name="amazletlink" target="_blank">Transcend  32GB CF CARD (133X TYPE I ) TS32GCF133</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B0012Q2PD6/daemonfreaks-22/ref=nosim/" title="Transcend  32GB CF CARD (133X TYPE I ) TS32GCF133" target="_blank">amazlet</a> at 08.11.14</div></div><div class="amazlet-detail">トランセンド・ジャパン (2008-03-31)<br />売り上げランキング: 4279<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012Q2PD6/daemonfreaks-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<p>こちらは9000円ぐらいでした。</p>
<p>注文して2～3日後、手元にモノが一通り揃ったので早速作業を開始。</p>
<p><a href="http://www.flickr.com/photos/daemonfreaks/3029865000/" title="iPod mini メンテナンス前 by daemonfreaks, on Flickr"><img src="http://farm4.static.flickr.com/3215/3029865000_675b339dfa.jpg" width="500" height="375" alt="iPod mini メンテナンス前" /></a></p>
<p>上蓋を開けるのに非常に苦戦しましたが、なんとか全部バラせましたの図。上蓋はドライヤーで温めてからマイナスドライバーを差し込む、という手順で開けると良いみたいです。</p>
<p><a href="http://www.flickr.com/photos/daemonfreaks/3029865004/" title="iPod mini メンテナンス中 by daemonfreaks, on Flickr"><img src="http://farm4.static.flickr.com/3187/3029865004_dfe8cfb05b.jpg" width="375" height="500" alt="iPod mini メンテナンス中" /></a></p>
<p>で、無事にバッテリーとコンパクトフラッシュを換装し終わり、ROCKboxをインストールして内容量を確認してみたところ、ちゃんと30GB近く認識されてました～。</p>
<p><a href="http://www.flickr.com/photos/daemonfreaks/3029865008/" title="iPod mini メンテナンス後 by daemonfreaks, on Flickr"><img src="http://farm4.static.flickr.com/3245/3029865008_764350661e.jpg" width="375" height="500" alt="iPod mini メンテナンス後" /></a></p>
<p>微妙に重量も軽くなったし、動作も軽快になったし、バッテリーも長時間もつし、沢山音楽を入れる事ができるし、言う事なしです!!!これであと2年は戦える。</p>
<p>以下、参考にしたサイト。</p>
<ul>
<li><a href="http://www.macunion.com/~mac03/mini%20battery.html">mini battery</a></li>
<li><a href="http://blog.ringo-juice.net/?eid=737151">Masato's Something New(Something Old) | iPod mini 16GB !!（コンパクトフラッシュで改造）</a></li>
</ul>

]]></description>
</item>

<item>
  <title>関西オープンソース2008</title>
  <link>http://www.daemonfreaks.com/blog/200811091534.html</link>
  <description><![CDATA[
<p>11/8のKOF2008に行ってきました。</p>
<p>いくつかの講演・発表を拝聴させていただいてまた色々とネタが浮かんだので、参加してよかったなぁと思いました。本当は11/7にも参加してMySQL関連の講演を聞きたかったのですが、仕事が抜けられなくて叶わず。残念。</p>
<p>来年は是非<a href="http://groups.google.co.jp/group/python-kansai">Python関西</a>な方々とブースでも出したいですね。</p>

]]></description>
</item>

<item>
  <title>X-ファイル:真実を求めて</title>
  <link>http://www.daemonfreaks.com/blog/200811091352.html</link>
  <description><![CDATA[
<p><a href="http://movies.foxjapan.com/xfilesmovie/">映画「X-ファイル:真実を求めて」オフィシャルサイト</a></p>
<p>新作の噂が出てはやn年、まさか本当に新作が公開される日がくるなんて…嬉しすぎる!!ということで公開初日のレイトショーで早速観てきました。</p>
<p>作品の感想としては<a href="http://www.eigaseikatu.com/imp/23215/434820/">このレビュー</a>に概ね同意ですね。TVシリーズを一通り観た人には、X-ファイルの本質はモルダーとスカリーの関係描写であり、SFやオカルト的な部分は味付けにすぎない、という事がわかっているはずなので今作の内容でも比較的楽しめると思いますが、「X-ファイル=オカルト」という先入観で観た人や何も知らずに観た人には中途半端な印象しか与えないかも知れません。</p>
<p>逆にTVシリーズを知らずにこの作品を観てしまった人には、是非TVシリーズを観ていただきたいなーと思います。かーなーり面白いので。</p>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000QUTRXU/daemonfreaks-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/21hssh0EhoL._SL160_.jpg" alt="X-ファイル ファースト・シーズン DVD-BOX" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000QUTRXU/daemonfreaks-22/ref=nosim/" name="amazletlink" target="_blank">X-ファイル ファースト・シーズン DVD-BOX</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B000QUTRXU/daemonfreaks-22/ref=nosim/" title="X-ファイル ファースト・シーズン DVD-BOX" target="_blank">amazlet</a> at 08.11.09</div></div><div class="amazlet-detail">20世紀フォックスホームエンターテイメントジャパン (2007-07-27)<br />売り上げランキング: 1044<br /></div><div class="amazlet-review" style="margin-top:10px; margin-bottom:10px"><div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5.0" /></div><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 全シーズン観ていきたい<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 傑作ＳＦドラマの幕開け！<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> X-ファイルの廉価版<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000QUTRXU/daemonfreaks-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<p>ていうか再発版のDVD-BOX安いですね…僕が全巻揃えた時はそれぞれ定価が2万弱してたんですが…。</p>

]]></description>
</item>

<item>
  <title>chumbyでasahi.comのニュースを表示するウィジェット</title>
  <link>http://www.daemonfreaks.com/blog/200811040016.html</link>
  <description><![CDATA[
<p>先日<a href="http://www.chumby.jp/">chumby</a>を購入しまして、早速asahi.comのニュースを表示するウィジェットを作ってみました。</p>
<p>まだ日本語が表示できないようなので、CGI側でニューステキストから画像を生成し、Flash側でその画像を横スクロールで表示するようにしてみました。</p>
<p>まずはCGI側。gdを使ってテキストを画像化します。news.cgiという名前で保存して適当なサーバに置きましょう。crossdomain.xmlも忘れずに。</p>
<pre>#!/usr/bin/env python
# coding: utf-8

from cStringIO import StringIO
import random
import sys
import urllib2
from xml.etree.ElementTree import ElementTree

import gd


FEED_URL = "http://rss.asahi.com/f/asahi_newsheadlines"
WIDTH = 320
HEIGHT = 240
FONT_SIZE = int(HEIGHT * 0.8)
FONT_NAME = "ipag.ttf"


def _get_news():
    f = urllib2.urlopen(FEED_URL)
    dom = ElementTree(file=f)
    f.close()
    news = list()
    titletag = "{http://purl.org/rss/1.0/}title"
    for item in dom.getiterator()[1:]:
        if item.tag == titletag:
            text = item.text
            if text.startswith(u"AD:"):
                continue
            news.append(item.text)
    return random.choice(news)


def main():
    news = _get_news()
    width = int(HEIGHT * len(news) * 1.07) + (WIDTH * 2)

    img = gd.image((width, HEIGHT))
    color_white = img.colorAllocate((255, 255, 255))
    color_black = img.colorAllocate((0, 0, 0))

    img.fill((0, 0), color_white)
    img.string_ttf(FONT_NAME, FONT_SIZE, 0,
        (WIDTH + 1, HEIGHT - int((HEIGHT - FONT_SIZE) / 2)),
        news.encode("euc-jp", "replace"), color_black)

    f = StringIO()
    img.writeJpeg(f, 20)
    f.seek(0)
    sys.stdout.write("Content-type: image/jpeg\n")
    sys.stdout.write("\n")
    sys.stdout.write(f.read())
    f.close()


if __name__ == '__main__':
    main()
</pre>
<p>次はActionScript。showNewsImage.asという名前で保存。適当なサンプルを見ながら勢いで書いたので変な事してるところがあるかも。ツッコミ歓迎。</p>
<pre>class ShowNewsImage {

    private var mcName:String = "NewsImage";
    private var imageURL:String = "http://example.com/cgi-bin/news.cgi";
    private var displayWidth:Number = 320;
    private var intervalId:Number = 0;

    public function ShowNewsImage(mc:MovieClip) {
        loadImage(mc);
    }

    private function loadImage(mc:MovieClip) {
        mc.createEmptyMovieClip(mcName, mc.getNextHighestDepth());
        var mcl:MovieClipLoader = new MovieClipLoader();
        var listener:Object = new Object();
        var me:ShowNewsImage = this;
        listener.onLoadInit = function(lmc:MovieClip) {
            lmc._x = 0;
            lmc._y = 0;
            me.intervalId = setInterval(me, "onTick", 10);
        }
        mcl.addListener(listener);
        mcl.loadClip(imageURL, mc[mcName]);

    }

    private function onTick():Void {
        if (_root[mcName]._width + _root[mcName]._x - 5 < displayWidth) {
            clearInterval(intervalId);
            loadImage(_root);
            return
        }
        _root[mcName]._x += -5;

    }

    static function main() {
        var app:ShowNewsImage = new ShowNewsImage(_root);
    }

}
</pre>
<p>でもってコンパイル。MTASCを使用。</p>
<pre>$ mtasc -swf showNewsImage.swf -main ./showNewsImage.as -header 320:240:12</pre>
<p>swfが出来たらprofile.xmlを作って一緒にUSBメモリに入れ、chumbyに突っ込んでブート。</p>
<p>これですべて上手く行くと思ったんですが…以下の問題が。</p>
<ul>
<li>PC上のブラウザで見るよりスクロールがかなり遅い</li>
<li>画像が途中で切れる？</li>
</ul>
<p>画像が切れる問題はFlashPlayerでも再現しました。swfdec-playerだと問題ないんですが…。</p>
<p>続きはまた来週。</p>

]]></description>
</item>

</channel>
</rss>
