daemonfreaks.com

iPod miniのバッテリーとディスクを交換

posted by jun-g at Fri, 14 Nov 2008 23:10 JST

手元にお下がりで貰った初期型iPod miniがあり、ROCKboxをインストールして使っているのですが、

  1. 容量が4GBしかない
  2. バッテリーがヘタってて2時間ぐらいしか持たない

という理由でかなり不満に思っていたのですが、何気なくネットで調べていたら、自分でバッテリー交換とディスク交換ができるという事を知り、早速試してみました。

交換用バッテリーは、マミーショップというお店で注文しました。1300円ぐらいで安かったです。

ディスクは、標準では4GBのマイクロドライブが入っているようなのですが、コンパクトフラッシュがそのまま使えるという事らしいので、Amazonでトランセンドの32GBコンパクトフラッシュを注文しました。

Transcend  32GB CF CARD (133X TYPE I ) TS32GCF133
トランセンド・ジャパン (2008-03-31)
売り上げランキング: 4279

こちらは9000円ぐらいでした。

注文して2~3日後、手元にモノが一通り揃ったので早速作業を開始。

iPod mini メンテナンス前

上蓋を開けるのに非常に苦戦しましたが、なんとか全部バラせましたの図。上蓋はドライヤーで温めてからマイナスドライバーを差し込む、という手順で開けると良いみたいです。

iPod mini メンテナンス中

で、無事にバッテリーとコンパクトフラッシュを換装し終わり、ROCKboxをインストールして内容量を確認してみたところ、ちゃんと30GB近く認識されてました~。

iPod mini メンテナンス後

微妙に重量も軽くなったし、動作も軽快になったし、バッテリーも長時間もつし、沢山音楽を入れる事ができるし、言う事なしです!!!これであと2年は戦える。

以下、参考にしたサイト。

関西オープンソース2008

posted by jun-g at Sun, 09 Nov 2008 16:07 JST

11/8のKOF2008に行ってきました。

いくつかの講演・発表を拝聴させていただいてまた色々とネタが浮かんだので、参加してよかったなぁと思いました。本当は11/7にも参加してMySQL関連の講演を聞きたかったのですが、仕事が抜けられなくて叶わず。残念。

来年は是非Python関西な方々とブースでも出したいですね。

X-ファイル:真実を求めて

posted by jun-g at Sun, 09 Nov 2008 14:15 JST

映画「X-ファイル:真実を求めて」オフィシャルサイト

新作の噂が出てはやn年、まさか本当に新作が公開される日がくるなんて…嬉しすぎる!!ということで公開初日のレイトショーで早速観てきました。

作品の感想としてはこのレビューに概ね同意ですね。TVシリーズを一通り観た人には、X-ファイルの本質はモルダーとスカリーの関係描写であり、SFやオカルト的な部分は味付けにすぎない、という事がわかっているはずなので今作の内容でも比較的楽しめると思いますが、「X-ファイル=オカルト」という先入観で観た人や何も知らずに観た人には中途半端な印象しか与えないかも知れません。

逆にTVシリーズを知らずにこの作品を観てしまった人には、是非TVシリーズを観ていただきたいなーと思います。かーなーり面白いので。

X-ファイル ファースト・シーズン DVD-BOX
20世紀フォックスホームエンターテイメントジャパン (2007-07-27)
売り上げランキング: 1044
おすすめ度の平均: 5.0
5 全シーズン観ていきたい
5 傑作SFドラマの幕開け!
5 X-ファイルの廉価版

ていうか再発版のDVD-BOX安いですね…僕が全巻揃えた時はそれぞれ定価が2万弱してたんですが…。

chumbyでasahi.comのニュースを表示するウィジェット

posted by jun-g at Tue, 04 Nov 2008 00:33 JST

先日chumbyを購入しまして、早速asahi.comのニュースを表示するウィジェットを作ってみました。

まだ日本語が表示できないようなので、CGI側でニューステキストから画像を生成し、Flash側でその画像を横スクロールで表示するようにしてみました。

まずはCGI側。gdを使ってテキストを画像化します。news.cgiという名前で保存して適当なサーバに置きましょう。crossdomain.xmlも忘れずに。

#!/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()

次はActionScript。showNewsImage.asという名前で保存。適当なサンプルを見ながら勢いで書いたので変な事してるところがあるかも。ツッコミ歓迎。

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);
    }

}

でもってコンパイル。MTASCを使用。

$ mtasc -swf showNewsImage.swf -main ./showNewsImage.as -header 320:240:12

swfが出来たらprofile.xmlを作って一緒にUSBメモリに入れ、chumbyに突っ込んでブート。

これですべて上手く行くと思ったんですが…以下の問題が。

  • PC上のブラウザで見るよりスクロールがかなり遅い
  • 画像が途中で切れる?

画像が切れる問題はFlashPlayerでも再現しました。swfdec-playerだと問題ないんですが…。

続きはまた来週。

<<  Page 1 of 1