<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>タムタムの日記</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/" />
    <link rel="self" type="application/atom+xml" href="http://mt.orz.at/feeds/atom.xml" />
    <id>tag:mt.orz.at,2007-12-22://1</id>
    <updated>2010-07-21T17:39:53Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Publishing Platform 4.01</generator>

<entry>
    <title>ATOKのカナロック解除方法</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2010/07/atok.html" />
    <id>tag:mt.orz.at,2010://1.915</id>

    <published>2010-07-21T17:39:53Z</published>
    <updated>2010-07-21T17:39:53Z</updated>

    <summary>ATOKを使っていると突如カナロックがかかってしまう現象があります。わたしの環境ではメモリ不足になると（仮想メモリを使うようになると）発生するみたいです。 で、これ</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2010後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    ATOKを使っていると突如カナロックがかかってしまう現象があります。わたしの環境ではメモリ不足になると（仮想メモリを使うようになると）発生するみたいです。
</p>
<p>
    で、これの解除方法ですが、CTRL+SHIFT+CAPS LOCKで直りました。わたしのノートだけかもしれませんが(´・ω・)
</p>
<p>
    &nbsp;
</p>]]>
        
    </content>
</entry>

<entry>
    <title>zfsのキャッシュサイズ(c_max)調整</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2010/07/zfsc-max.html" />
    <id>tag:mt.orz.at,2010://1.914</id>

    <published>2010-07-20T16:17:50Z</published>
    <updated>2010-07-20T16:17:50Z</updated>

    <summary>ZFSはデフォルトで搭載メモリの3/4までキャッシュするような実装になっています。メモリ4GB積んでいると3GBまでキャッシュするようになっているわけですね。ファイルサーバ</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2010後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="solaris" label="Solaris" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zfs" label="zfs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    ZFSはデフォルトで搭載メモリの3/4までキャッシュするような実装になっています。メモリ4GB積んでいると3GBまでキャッシュするようになっているわけですね。ファイルサーバとしてしか使わないのであれば、それでも良いのですが、他にもメモリを使いたいのでちょっと調整してみます。
</p>
<p>
    まずは、現在の値を確認します。
</p>
<pre>
root@tamsvr00:~# kstat | grep c_max
        c_max                           3206670336
</pre>
<p>
    そして変更します。/etc/systemに以下の記述を追加します。
</p>
<pre>
set zfs:zfs_arc_max = 0x40000000
</pre>
<p>
    これで1GBになります。再起動必須です。
</p>
<p>
    再起動後、もっかい確認すると設定が変更されています。
</p>
<pre>
root@tamsvr00:~# kstat | grep c_max
        c_max                           1073741824
</pre>
<p>
    「zfs_arc_max」で検索をすると、それっぽい記事が（というかGoogleの一番上にZFSのTuningに関するWikiが）ヒットします。
</p>
<p>
    どこかの勉強会で、メモリ云々でソースを書き換えたとか言ってた人が居たので、この設定で変更できますよっと。（というかソース書き換えたって事はソース見ているって事だから設定値読んでいるって事も分かっているはず。という事は、これの事ではないのかな・・？）
</p>
<p>
    &nbsp;
</p>
<p>
    ちなみにこのネタは会社の人に教えて貰ったものだったのでした。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>ZFS on Solaris</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2010/07/zfs-on-solaris.html" />
    <id>tag:mt.orz.at,2010://1.913</id>

    <published>2010-07-19T14:08:55Z</published>
    <updated>2010-07-19T14:08:55Z</updated>

    <summary>久しぶりの更新です。 非常にバタバタしている・・というか、月300時間労働超えました(´・ω・)ｳｴｪ・・。  クローラーを動かしたり、色々と実験をしているのでファイル置</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2010後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="solaris" label="Solaris" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zfs" label="zfs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    久しぶりの更新です。<br />
    非常にバタバタしている・・というか、月300時間労働超えました(´・ω・)ｳｴｪ・・。
</p>
<p>
    クローラーを動かしたり、色々と実験をしているのでファイル置き場が無くなってその度にサーバを止めてHDDを追加していくのは大変です。というわけで、今回はそこそこ容量の大きなファイルサーバを追加しました。
</p>
<p>
    構成は以下になります。
</p>
<ul>
    <li>OpenSolaris (Solaris10はライセンスが・・・)
    </li>
    <li>AtomD510
    </li>
    <li>メモリ4GB
    </li>
    <li>HDD IDE 80GB (システム用)
    </li>
    <li>HDD SATA 2TB * 4基 (データ用)
    </li>
    <li>GigabitLAN * 1
    </li>
</ul>
<p>
    最初はUSBにインストールして使おうとしましたが、USBへの書き込みが発生するとシステム全体が止まって使い物にならなかったのでHDDにインストールする事にしました。
</p>
<p>
    DVDドライブはないので、LiveUSBでブート。それからHDDにインストール。（Liveで起動するとインストールするというアイコンがあるので、それで）。最初はLiveUSBブート → USBにインストールでしたが、↑の理由により断念。
</p>
<p>
    ZFSは非常に簡単。今回はrootで以下のコマンドを叩くだけ。
</p>
<pre>
    zpool create data raidz c4t0d0 c4t1d0 c7d0 c8d0
</pre>
<p>
    これだけです。 これだけで/dataにマウントまでしてくれます。マウントを変えたい場合は「zfs set mountpoint」で変更するだけ。NFSで共有したい場合は、
</p>
<pre>
    zfs set sharenfs=on data
</pre>
<p>
    これだけです。
</p>
<p>
    raidzはRAID5と同等です。（いやー本当はraidz2にしたいのですがHDDが足りなくて・・・）。raid5とか会社で運用しているところがあればﾌﾟｷﾞｬｰ・・ですね。
</p>
<pre>
root@tamsvr00:~# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
data   7.25T  1.31M  7.25T     0%  ONLINE  -
rpool    76G  6.62G  69.4G     8%  ONLINE  -
</pre>
<pre>
root@tamsvr00:~# zpool status
  pool: data
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        data        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            c0t0d0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c7d0    ONLINE       0     0     0
            c8d0    ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c1d0s0    ONLINE       0     0     0
</pre>
<pre>
root@tamsvr00:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
rpool/ROOT/opensolaris
                       71G  4.3G   67G   7% /
swap                  4.8G  324K  4.8G   1% /etc/svc/volatile
/usr/lib/libc/libc_hwcap1.so.1
                       71G  4.3G   67G   7% /lib/libc.so.1
swap                  4.8G  8.0K  4.8G   1% /tmp
swap                  4.8G   48K  4.8G   1% /var/run
data                  5.4T  927K  5.4T   1% /data
rpool/export           67G   23K   67G   1% /export
rpool/export/home      67G   23K   67G   1% /export/home
rpool/export/home/tamtam
                       67G   45M   67G   1% /export/home/tamtam
rpool                  67G   81K   67G   1% /rpool
</pre>
<p>
    こんな感じでパリティ有で5.4TBの領域が出来ました。<br />
    これを各サーバで共有するのと、WindowsからはSambaでファイル置き場として共有します。CPUがあまり気味なのでMercurialやMailサーバくらい置こうかな。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>レモン牛乳</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2010/01/post-595.html" />
    <id>tag:mt.orz.at,2010://1.912</id>

    <published>2010-01-17T11:52:33Z</published>
    <updated>2010-01-17T11:52:33Z</updated>

    <summary>栃木っこにはおなじみのレモン牛乳。 実は都内でも普通に売っています。  私はこれを飲むと運動会を思い出すのです。運動会では、このレモン牛乳(200ミリリットルのやつ）</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2010前期" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    栃木っこにはおなじみのレモン牛乳。<br />
    実は都内でも普通に売っています。
</p>
<p>
    私はこれを飲むと運動会を思い出すのです。運動会では、このレモン牛乳(200ミリリットルのやつ）とコーヒー牛乳と普通の牛乳が売店で売り出すのです。
</p>
<p>
    <img title="レモン牛乳" border="0" alt="レモン牛乳" src="http://mt.orz.at/imagetm_Image116.jpg" width="600" height="450" />
</p>
<p>
    都内では500ミリリットルのやつが189円でした。こんなに高かったっけ・・。<br />
    というか、このヨーグルトってなんですか。こんな派生製品知らないよ！
</p>
<p>
    （追記）<br />
    私がいつも購入する場所は、スーパーオオゼキの戸越銀座店です。日曜日にはいつも置いてあります。<br />
    （これ書くと私の生息範囲がわかっちゃうのと、私の購入分が減るのが嫌なんですが・・・ｗ）
</p>
<p>
    （さらに追記）<br />
    ヨーグルト食べました。<br />
    なんでもかんでも商品化すれば良いってもんじゃねーぞっ！　という感想です。<br />
    「わぁー黄色い。まるでヨーグルトの糖尿病やぁ～！」
</p>]]>
        
    </content>
</entry>

<entry>
    <title>デザイン変更案</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2010/01/post-594.html" />
    <id>tag:mt.orz.at,2010://1.911</id>

    <published>2010-01-11T14:50:02Z</published>
    <updated>2010-01-11T14:50:02Z</updated>

    <summary>遅くなりましたが、あけましておめでとうございます。 そろそろブログのデザインを変更したいなと思いまして、ちょっとワンポイントとなるイラストを探してました。  ポッ</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2010前期" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    遅くなりましたが、あけましておめでとうございます。<br />
    そろそろブログのデザインを変更したいなと思いまして、ちょっとワンポイントとなるイラストを探してました。
</p>
<p>
    ポップな感じにするならこんな素材かなぁ。
</p>
<p>
    <img title="" border="0" alt="" src="http://mt.orz.at/imagesozai1.jpg" width="600" height="600" />
</p>
<p>
    繊細な感じにするならこんな素材？
</p>
<p>
    <img title="" border="0" alt="" src="http://mt.orz.at/imagesozai2.jpg" width="600" height="600" />
</p>
<p>
    うーん。迷う。<br />
    コンセプトアート的な素材集ってないかなぁ・・。もうプロの人に依頼しようかな・・・ｗ
</p>
<p>
    ちなみに、いずれの画像も用途制限無しの素材なのです。画力の無い自分には嬉しい限りです。<br />
    素材集のお値段は1980円です。
</p>
<p>
    <a title="DVD-ROM付き 萌えキャラフリーイラスト集" href="http://www.amazon.co.jp/exec/obidos/ASIN/4816348204/tamrin69-22/" target="_blank"><img style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none" alt="DVD-ROM付き 萌えキャラフリーイラスト集" src="http://ecx.images-amazon.com/images/I/51vy1wXzIoL._SL160_.jpg" /></a>
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Postgresをインストールしてみた</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/12/postgres.html" />
    <id>tag:mt.orz.at,2009://1.910</id>

    <published>2009-12-28T05:32:01Z</published>
    <updated>2009-12-28T05:32:01Z</updated>

    <summary>MySQLはJDBCからアクセスする時に全件取得するのでバッチ処理が書きづらいという理由でPostgreSQLをインストールしてみました。（フェッチサイズをInteger.MIN_VALUEに設定</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="開発" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="postgres" label="Postgres" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    MySQLはJDBCからアクセスする時に全件取得するのでバッチ処理が書きづらいという理由でPostgreSQLをインストールしてみました。（フェッチサイズをInteger.MIN_VALUEに設定すれば1件づつの取得になりますが、この間に他のトランザクション走らせることができないので。）（あれ・・・コネクションを2本使えばいいのでは・・？）
</p>
<p>
    インストールしたバージョンは8.4.2です。
</p>
<p>
    ビルドします。
</p>
<pre>
./configure --prefix=/lunar
make
make check
make install
</pre>
<p>
    DB初期化します。
</p>
<pre>
initdb --encoding=utf-8 -U totoro --pgdata=/lunar/data/postgres
</pre>
<p>
    起動します。
</p>
<pre>
pg_ctl -w -o "-i" -D /lunar/data/postgres -l /lunar/var/postgres.log start
</pre>
<p>
    スキーマを作ります。
</p>
<pre>
createdb -E utf-8 -O totoro -W
</pre>
<p>
    &nbsp;外部から接続できるように/lunar/data/postgres/pg_hba.confに設定を追加します。 allとか本当は良くないけど(・ε・)ｷﾆｼﾅｲ!!
</p>
<pre>
host    all         all         192.168.0.0/24        md5
</pre>
<p>
    パスワードを設定しなおしました。
</p>
<pre>
ALTER USER totoro with password 'xxxxxxxx';
</pre>
<p>
    他のホストから接続してみる。
</p>
<pre>
psql -h 192.168.1.202 -U totoro postgres
</pre>
<p>
    手間はMySQLよりも1つ多いくらい。<br />
    やばい。。Postgresの設定パラメータの意味がわからない(´・ω・)<br />
    メモリ設定とかDISKのフラッシュ設定とかログ設定とか運用設定とか。
</p>
<p>
    調べるか(´・ω・)
</p>
<p>
    &nbsp;
</p>]]>
        
    </content>
</entry>

<entry>
    <title>ClassLoaderを使って実行時にクラスを更新する方法（リロード処理）</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/12/classloader.html" />
    <id>tag:mt.orz.at,2009://1.909</id>

    <published>2009-12-27T17:15:05Z</published>
    <updated>2009-12-27T17:15:05Z</updated>

    <summary>JavaのClassLoaderの話をちょっとだけ。意外にClassLoaderを知らない人が居るようです。  ざっくりと説明をしますと、 クラスローダーにはBootstrapクラスローダーやシステ</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="開発" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    JavaのClassLoaderの話をちょっとだけ。意外にClassLoaderを知らない人が居るようです。
</p>
<p>
    ざっくりと説明をしますと、<br />
    クラスローダーにはBootstrapクラスローダーやシステムクラスローダー、コンテキストクラスローダーがあります。（あと拡張クラスローダーですかね）。そんでもって、クラスローダーは親子関係を持っています。委譲モデルと言って、あるクラスローダーにクラスをロードする依頼があると、親に依頼を委譲します。最初に発見されたクラスが実際にロードされるわけです。
</p>
<p>
    1. Bootstrap　(rt.jar)<br />
    2. 親クラスローダーA<br />
    3. 子クラスローダーB
</p>
<p>
    こんなクラスローダーがあるとしてまだロードされていないクラスXをロードしようとした場合は次のように動作します。
</p>
<ol>
    <li>B.loadClass(X)
    </li>
    <li>Aに委譲
    </li>
    <li>Bootstrapに委譲
    </li>
    <li>BoostrapにXは存在しない
    </li>
    <li>AにXは存在しない
    </li>
    <li>BにXが存在するのでロードする。
    </li>
</ol>
<p>
    ちなみにClassLoader#findClassをオーバーライドして自前の処理で上書きしてしまえば、この委譲モデルを破壊する事ができます。まぁそんな事は非推奨ですけど(´・ω・)
</p>
<p>
    JVMプロセス内においては異なるClassLoaderで読み込んだクラスは例え同じバイナリでも異なるクラスとして扱われます。ClassLoaderAによってロードされたクラスXと、ClassLoaderBによってロードされたクラスXは別物です。<br />
    ※クラスAとBが親子関係を持っていて、AがXをロードしている時にBでロードしても委譲モデルでAが既にロードしてあるXを使うので、こういう場合は同じ定義を指します。<br />
    TomcatのWebApps1とWebApps2の関係を想像すると理解しやすいと思います。
</p>
<p>
    この特性を生かすとリロード処理が実現できるわけです。
</p>
<p>
    ClassLoaderの細かい話はDeveloperWorksの記事が丁寧なのでそちらを参照した方が良いです。今回はTomcatにも実装されているリロード処理のサンプルを作ってみたいと思います。TomcatのドキュメントにTomcatのClassLoaderの戦略が書いてあるのでそれを参考にすると分かりやすいと思います。
</p>
<p>
    例えばRPCサーバやスケジューラーを考えます。これらを設計する時には大きく二つに分けることができ、RPCサーバではサーバ本体と各命令、スケジューラーでも本体と各タスクという感じです。Tomcatの場合はServletエンジンとビジネスロジックを書いたServlet。（ビジネスロジックはServletに書くものではありませんけどね。）<br />
    RPCの命令、スケジューラーのタスク、ServletコンテナのServletは抽象化する事ができ、インターフェースを切ることが多いです。（HttpServletとかね。）
</p>
<p>
    擬似コードだとこんな感じですね。
</p>
<pre>
class MyServer {
  void run() {
    ITask task = getTask();
    task.execute();
  }
}
</pre>
<p>
    このMyServerとITaskを本体側のClassLoaderに、ITaskを実装したクラスを別のClassLoaderに読み込ませます。<br />
    例えば本体はCLASSPATHを指定してシステムクラスローダーに読み込ませます。(TomcatはBoostrap用のクラスを挟んでいますけどね。）<br />
    タスクは独自のクラスローダーをインスタンス化(このオブジェクトをc1とする)して（URLClassLoaderを直接でも良い）、そのClassLoaderを使ってクラス定義を読み込ませます。C言語だとdlopenみたいなイメージです。
</p>
<p>
    異なるクラスローダーから読み込んだクラスは別のクラスになるので、リロードしたい場合はClassLoaderをもう1回インスタンス化(c2)してあげればいいのです。
</p>
<p>
    文章だけで説明してもアレなので簡単なサンプルを書いてみました。<br />
    Thread#setContextClassLoaderを使うともっと簡単に書けると思います。
</p>
<p>
    サンプルの内容は定期的にタスクを実行するだけのものです。Reload処理はJMX経由で行うようにしました。<br />
    Eclipse上で作る時はタスククラスは別プロジェクトで作るのが良いです。同じプロジェクトに入れてしまうとシステムクラスローダーによってタスクもロードされてしまうので。色々適当です。Sleepの代わりにSemaphoreを使っている理由はsleepの場合Future#cancelで割り込みが発生しなかったからです。Semaphoreだと割り込みが入ってすぐに終了できます。<br />
    tasklist.propertiesに登録したいタスクのクラス名を書く必要があります。まぁこんな事をしなくてもLunarClassLoaderに手を加えて特定のインターフェースを実装しているクラスを検索（列挙）すれば良いだけです。今回はそこまで余力がありませんでした。 タスク用のクラスパスはソースに直書きしています。自分の環境に合わせて修正してください。VMの引数に-Dhogehogeを指定してシステムプロパティとして読み込むのが一般的な方法かと思います。
</p>
<pre class="prettyprint">
package at.orz.lunar;

import java.io.File;
import java.lang.management.ManagementFactory;
import java.net.URL;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import javax.management.MBeanServer;
import javax.management.ObjectName;

public class LunarBootstrap {

    public static void main(String[] args) throws Exception {

        URL[] urls = new URL[]{
            new File("C:/usr/local/eclipse3.5/workspace/lunar-subsystem/lunar-task.jar").toURI().toURL(),
            new File("C:/usr/local/eclipse3.5/workspace/lunar-subsystem/bin").toURI().toURL()
        };

        final ExecutorService service = Executors.newCachedThreadPool();
        final LunarServer lunarServer = LunarServer.newInstance(urls, Thread.currentThread().getContextClassLoader());
        final Future&lt;?&gt; future = service.submit(lunarServer);
        service.shutdown(); // 新規追加STOP

        MBeanServer mbServer = ManagementFactory.getPlatformMBeanServer();
        mbServer.registerMBean(new ServerOperationMXBean() {
            @Override
            public void stop() {
                lunarServer.stop();
                future.cancel(true);
                if (!service.isShutdown()) {
                    service.shutdown();
                }
            }
            @Override
            public void reload() {
                lunarServer.reload();
            }
        },  new ObjectName("at.orz.lunar.LunarBootstrap:name=LunarServer"));

    }

}
</pre>
<p>
    シングルインスタンスモデルにするか、プロトタイプモデルにするか迷ったのでclsMapとかでClass定義を保持しているわけです。今回はシングルインスタンスモデルにしたので実はclsMapは必要ありません。
</p>
<pre>
package at.orz.lunar;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Properties;

public class LunarClassLoader extends URLClassLoader {

    private HashMap&lt;String, Class&lt;? extends LunarTask&gt;&gt; clsMap = new HashMap&lt;String, Class&lt;? extends LunarTask&gt;&gt;();
    private HashMap&lt;String, LunarTask&gt; insMap = new HashMap&lt;String, LunarTask&gt;();

    public LunarClassLoader(URL[] urls, ClassLoader parent) {
        super(urls, parent);
        init();
    }

    @SuppressWarnings("unchecked")
    private void init() {

        try {

            Enumeration&lt;URL&gt; en = getResources("tasklist.properties");
            while (en.hasMoreElements()) {
                URL url =  en.nextElement();

                Properties prop = new Properties();
                InputStream is = url.openStream();
                prop.load(is);
                is.close();

                for (String clsName: prop.stringPropertyNames()) {
                    try {
                        Class&lt;?&gt; c = loadClass(clsName);
                        if (LunarTask.class.isAssignableFrom(c)) {
                            Class&lt;? extends LunarTask&gt; cls = (Class&lt;? extends LunarTask&gt;) c;
                            clsMap.put(clsName, cls);
                            System.out.printf("register class:%s%n", clsName);

                            LunarTask task = cls.newInstance();
                            task.init();
                            insMap.put(clsName, task);
                            System.out.printf("init class:%s%n", clsName);
                        }
                    } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                    } catch (InstantiationException e) {
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                }

            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    void destroy() {
        for (LunarTask task : insMap.values()) {
            try {
                task.destroy();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        insMap.clear();
        clsMap.clear();
    }

    public LunarTask getTask(String className) {
        return insMap.get(className);
    }

    public Iterable&lt;LunarTask&gt; taskIterator() {
        return new HashMap&lt;String, LunarTask&gt;(insMap).values();
    }

}
</pre>
<pre class="prettyprint">
package at.orz.lunar;

import java.net.URL;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

public class LunarServer implements Runnable, ServerOperationMXBean {

    private LunarClassLoader loader;
    private volatile boolean running;
    private LunarServer() {

    }

    @Override
    public void run() {

        ExecutorService service = Executors.newFixedThreadPool(3);

        running = true;
        while (running) {
            for (final LunarTask task : loader.taskIterator()) {
                service.submit(new Runnable() {
                    @Override
                    public void run() {
                        task.execute();
                    }
                });
            }
            try {
                Semaphore sema = new Semaphore(0);
                sema.tryAcquire(10, TimeUnit.SECONDS);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        service.shutdown();

    }

    @Override
    public void reload() {
        LunarClassLoader curLoader = loader;
        LunarClassLoader newLoader = new LunarClassLoader(curLoader.getURLs(), curLoader.getParent());
        this.loader = newLoader;
        curLoader.destroy();
    }

    @Override
    public void stop() {
        running = false;
    }

    public static LunarServer newInstance(URL[] urls, ClassLoader parent) {
        LunarServer server = new LunarServer();
        server.loader = new LunarClassLoader(urls, parent);
        return server;
    }

}
</pre>
<pre class="prettyprint">
package at.orz.lunar;

public interface LunarTask {
    public void init();
    public void destroy();
    public void execute();
}
</pre>
<pre>
package at.orz.lunar;

public interface ServerOperationMXBean {
    public void stop();
    public void reload();
}
</pre>
<p>
    ここからタスクです。Eclipse上では別プロジェクトにした方が良いです。今回は2つのクラスを登録します。
</p>
<pre class="prettyprint">
package at.orz.lunar.task;

import at.orz.lunar.LunarTask;

public class SampleTask1 implements LunarTask {
    @Override
    public void destroy() {
        System.out.println("SampleTask1.destroy()");
    }
    @Override
    public void execute() {
        System.out.println("☆SampleTask1.execute()");
    }
    @Override
    public void init() {
        System.out.println("SampleTask1.init()");
    }
}
</pre>
<pre class="prettyprint">
package at.orz.lunar.task;

import at.orz.lunar.LunarTask;

public class SampleTask2 implements LunarTask {
    @Override
    public void destroy() {
        System.out.println("SampleTask2.destroy()");
    }
    @Override
    public void execute() {
        System.out.println("★SampleTask2.execute()");
    }
    @Override
    public void init() {
        System.out.println("SampleTask2.init()");
    }
}
</pre>
<p>
    クラスパスのルートにtasklist.propertiesを作成します。
</p>
<pre>
at.orz.lunar.task.SampleTask1
at.orz.lunar.task.SampleTask2
</pre>
<p>
    実行した後にSampleTask2の内容を変更（★を★★★★★に変更）した後にjconsoleからreloadを呼び出した結果が↓です。
</p>
<pre>
register class:at.orz.lunar.task.SampleTask2
SampleTask2.init()
init class:at.orz.lunar.task.SampleTask2
register class:at.orz.lunar.task.SampleTask1
SampleTask1.init()
init class:at.orz.lunar.task.SampleTask1
★SampleTask2.execute()
☆SampleTask1.execute()
★SampleTask2.execute()
☆SampleTask1.execute()
☆SampleTask1.execute()
★SampleTask2.execute()
☆SampleTask1.execute()
★SampleTask2.execute()
register class:at.orz.lunar.task.SampleTask2
SampleTask2.init()
init class:at.orz.lunar.task.SampleTask2
register class:at.orz.lunar.task.SampleTask1
SampleTask1.init()
init class:at.orz.lunar.task.SampleTask1
SampleTask1.destroy()
SampleTask2.destroy()
☆SampleTask1.execute()
★★★★★SampleTask2.execute()
☆SampleTask1.execute()
★★★★★SampleTask2.execute()
</pre>
<p>
    リロード処理の所にログ仕込むの忘れたのでリロードが発端になっているかは確認できませんが、リロード処理は呼ばれています(； ･`д･´)<br />
    そしてリ新しいクラスの内容が読み込まれているのも確認できます。
</p>
<p>
    ※途中から書くのが面倒になったのがソースからわかっちゃうと思いますが、サンプルなので気にしない(・ε・)
</p>
<p>
    ただし、このような処理はちょっとミスするとPermGenが解放されずにOutOfMemoryErrorを引き起こす原因になりやすいので気をつけましょー。（IBMのVM使えばいいじゃんとかそういう野暮な事は言わないの。）
</p>
<p>
    &nbsp;
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Solr1.4のbackupのバグ</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/12/solr14backup.html" />
    <id>tag:mt.orz.at,2009://1.908</id>

    <published>2009-12-26T11:22:40Z</published>
    <updated>2009-12-26T11:22:40Z</updated>

    <summary>Solr1.4ではとあるURLにアクセスする事でバックアップ（スナップショット）を取れるようになっています。  http://wiki.apache.org/solr/SolrReplication  ↑のSolrのWiki</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="開発" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="solr" label="Solr" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    Solr1.4ではとあるURLにアクセスする事でバックアップ（スナップショット）を取れるようになっています。
</p>
<p>
    <a href="http://wiki.apache.org/solr/SolrReplicaじっさいにtion">http://wiki.apache.org/solr/SolrReplication</a>
</p>
<p>
    ↑のSolrのWikiにもあるようにReplicationの機能をONにする必要がありますが、スレーブの設定をしなくても動作するのでマスタのみでもきちんと動作します。<br />
    以下のURLにアクセスするとデータディレクトリと同列に「snapshot.日時」というディレクトリを作成します。
</p>
<p>
    http://master_host:port/solr/replication?command=backup
</p>
<p>
    この時、日付はyyyyMMddHHmmssという書式が指定されているはずなのですが、実はHHがhhになっており、午後の18時に実行しても18にならずに06になってしまいます。
</p>
<p>
    <a title="" href="http://www.google.co.jp/codesearch/p?hl=ja#iQV2WgbHbLs/trunk/src/java/org/apache/solr/handler/SnapShooter.java" target="_blank">SnapShooter</a>というクラスのDATE_FMTの指定を見ると思いっきり小文字で指定されています。&nbsp;
</p>
<p>
    むむー。バグだよね。これは。
</p>
<p>
    まぁだいたいが早朝にバックアップをすると思うから気がつかないんだと思うけど。。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Amazonの関連商品</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/12/amazon-2.html" />
    <id>tag:mt.orz.at,2009://1.907</id>

    <published>2009-12-26T05:25:50Z</published>
    <updated>2009-12-26T05:25:50Z</updated>

    <summary>AmazonにはProduct Advertising APIというサービスがあります。ECSとかAWSとか言われていたやつです。  関連商品の取得方法にはいくつか方法があり大きく分けると、サーチ</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="開発" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazon" label="Amazon" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    AmazonにはProduct Advertising APIというサービスがあります。ECSとかAWSとか言われていたやつです。
</p>
<p>
    関連商品の取得方法にはいくつか方法があり大きく分けると、サーチ系のAPIのResponseGroupにSimilaritiesを指定するかSimilarityLookupというAPIを使うかです。
</p>
<p>
    ItemLookupのResponseGroupに指定すると5件、SimilarityLookupを使うと10件取得できます。SimilarityLookupのResponseGroupにSimilaritiesを指定するとさらにその10件の関連商品を取得できます。（まぁこの場合は殆どが被っていますが・・・。）
</p>
<p>
    ただしAmazonのホームページを見ると70件近くの関連商品が表示されています。<br />
    SimilarityLookupで複数のItemIdを指定しRandom抽出（和集合）を取得するようにしても、同じ集合が取れません(´・ω・｀)<br />
    商品Aの関連商品A1～A10のASINがあって、A-A1の和集合、A-A2の和集合.... をマージ等、色々試してみましたがやっぱり公式サイトと同じリストを再現できません。あそこのリストどうやって作っているのでしょう(´・ω・)
</p>
<p>
    煮詰まってしまったので公式サイトのHTMLから引っこ抜いてみました。
</p>
<p>
    <a href="http://www.amazon.co.jp/dp/%7BASIN">http://www.amazon.co.jp/dp/{ASIN}</a>
</p>
<p>
    このページにアクセスしますが、User-AgentをきちんとAjaxをサポートしているブラウザのやつに指定する必要があります。適当なUser-Agentつけて送ったらJavaScriptのコードが出力されませんでした。Firefox3.5のUser-Agentを使ったらJavaScbriptのコードも出力されました。
</p>
<pre class="prettyprint">
var purchaseAsinList = new Array("aaa","bbb","ccc");
</pre>
<p>
    この様なコードが出力されているのでパースするだけです。Javaなら↓のようなコードでぱぱっと。
</p>
<pre class="prettyprint">
int beginIndex = html.indexOf("var purchaseAsinList");
int endIndex = html.indexOf("\n", beginIndex);
String pscript = (html.substring(beginIndex, endIndex));

Matcher m = Pattern.compile("\"(\\w+)\"").matcher(pscript);
while (m.find()) {
    System.out.println(m.group(1));
}
</pre>
<p>
    微妙・・。きちんとAPIを叩いて処理したいです(´・ω・)<br />
    というわけで情報募集です。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>こんなコードを書いていた私涙目。</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/12/post-593.html" />
    <id>tag:mt.orz.at,2009://1.906</id>

    <published>2009-12-16T13:20:39Z</published>
    <updated>2009-12-16T13:29:38Z</updated>

    <summary>こちらの記事にあったので私はこんなコードを書いていましたという返信。 ttp:/...</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>こちらの記事にあったので私はこんなコードを書いていましたという返信。</p>
<p><a href="http://1978th.net/tech/promenade.cgi?id=68">ttp://1978th.net/tech/promenade.cgi?id=68</a></p>
<p>インラインアセンブラです。<br/>
x86オンリーなのかもしれませんが私の場合は動作させる環境が固定なので。</p>

<pre class="prettyprint">static __inline__ void __attribute__ ((__always_inline__))
	atomic_add(volatile int *pv1, int v2)
{
	__asm__ volatile (
		"lock; addl %1,%0"
		: "=m" (*pv1)
		: "ir" (v2), "m" (*pv1));
}
</pre>
<p>
これを、<br />
#if defined(_GCC) とかそういうマクロで判定して使ってます。<br />
速度？そんなの知りません( ﾟДﾟ)y─┛~~
</p>]]>
        
    </content>
</entry>

<entry>
    <title>簡単な人工無脳BOTを作ってみました</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/12/bot.html" />
    <id>tag:mt.orz.at,2009://1.905</id>

    <published>2009-12-13T13:49:31Z</published>
    <updated>2009-12-13T13:49:31Z</updated>

    <summary>文章をしゃべらせてみた。  とりあえず10個ぶんです。  でも、そこは国の偉い人のクポ～。  モ～グリもできるならば脱皮したいくらいクポ～。  それに、錬金術ギルドのアズ</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    文章をしゃべらせてみた。
</p>
<p>
    とりあえず10個ぶんです。
</p>
<ul>
    <li>でも、そこは国の偉い人のクポ～。
    </li>
    <li>モ～グリもできるならば脱皮したいくらいクポ～。
    </li>
    <li>それに、錬金術ギルドのアズィマさんが東方のフェスティバルを炸裂させる過激な話を披露するらしいし、職人さんが考案した変てこなゲームの景品は、かつて暑い日が兵や冒険者の偉い人の肝いり。ちょっと恒例のお祭りらしいクポ～。
    </li>
    <li>クポ？　別にモーグリだものでブリザガＶを引き継いだけが、郊外ではラカポポダンサーズが強硬に組まれる宝楼ではラカポポダンサーズが集まってリニューアルオープンするって噂クポ
    </li>
    <li>とにかく、ご主人さまも、商人さんもできるならば脱皮したいくらいクポ！（……ヒソヒソヒソ……気合いの入れようが東方のクポ～。
    </li>
    <li>もうすぐ広場に主張した都市上空で踊ってク～んな時はな～んにもやる気が違うらしいクポ～。
    </li>
    <li>モ～グリもできるならば脱皮したいくらいクポ～。
    </li>
    <li>クポ？　別にモーグリだもので暑い日々を乗り切るクポ～ッ！！
    </li>
    <li>この暑さが兵や冒険者の士気に影響を及ぼしたら大変！って噂クポ。
    </li>
    <li>とにかく、ご主人さまァ～、な～んだか暑い時分に影響をお招きしようって主旨のお祭りらしいクポ？　別にモーグリだものでワイワイ楽しく遊んで、みんなでワイワイ楽しく遊んで踊って天から涼風をゲットしたクポッ！
    </li>
</ul>
<p>
    元データはこちら。
</p>
<blockquote>
    <p>
        ご主人さまァ～、な～んだか暑い日が続いてるクポね～ッ！<br />
        こ～んな時はな～んにもやる気がなくなるクポ～。<br />
        モ～グリもできるならば脱皮したいくらいクポ～。
    </p>
    <p>
        クポ？　別にモーグリだけが、だらけてるわけじゃないクポよ～ッ！<br />
        この暑さには、職人さんも、商人さんも、衛兵さんも、み～んなうんざりしてるのクポ～。
    </p>
    <p>
        でも、耳よりな話をゲットしたクポッ！<br />
        この暑さが兵や冒険者の士気に影響を及ぼしたら大変！ってことで、三国の偉い人たちが集まって話し合い、モグハウス管理組合にも働きかけて、なんと「あますず（天涼）祭り」の開催が決定されたクポ～ッ！
    </p>
    <p>
        これは、かつて暑い時分に開かれていた恒例のフェスティバルを引き継いだもので、みんなでワイワイ楽しく遊んで踊って天から涼風をお招きしようって主旨のお祭りらしいクポ～。<br />
        でも、そこは国の偉い人の肝いり。ちょっと恒例のものとは気合いの入れようが違うらしいのクポ！（……ヒソヒソヒソ……気合いといっても、ある国の偉い人が強硬に主張した都市上空でブリザガＶを炸裂させる過激な作戦は却下されたらしいから、安心してほしいクポ……）
    </p>
    <p>
        もうすぐ広場に組まれる宝楼ではラカポポダンサーズが東方の納涼踊を披露するらしいし、郊外ではあの金魚すくい屋が豪華景品を引っさげてリニューアルオープンするって噂クポ。<br />
        それに、錬金術ギルドのアズィマさんが考案した変てこなゲームの景品は、なんと嬉し恥ずかしのッ？！　……ととっ、これ以上は口止めされてたクポッ！<br />
        とにかく、ご主人さまも「あますず祭り」に参加してク～ルな気分で暑い日々を乗り切るクポ～ッ！！<br />
        &nbsp;
    </p>
</blockquote>
<p>
    ありふれた方法を使いました。まだ工夫も何もしていません。<br />
    Yahoo!の形態素解析を使って単語を分解した後に、連続した品詞情報は複合品詞として処理して（名詞が複数続いた場合は複合名詞など）マルコフモデルを使いました。一応品詞情報も考慮してみました。適当に作ってもそこそこの文章ができるものですねー。精度を上げるには感情クラスタ、話題クラスタとかを求めて直近の話題に近い事を話すようにしたり、単語の連結コストを考慮したりするらしいです。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Solaris10(x86)でのtcucodec confの結果</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/11/solaris10x86tcu.html" />
    <id>tag:mt.orz.at,2009://1.904</id>

    <published>2009-11-15T15:21:08Z</published>
    <updated>2009-11-15T15:21:08Z</updated>

    <summary>SPARC機を探したのですが私の権限で触れるところにはありませんでした。 http://1978th.net/tech/promenade.cgi?id=39  というわけで私の家のSolarisでの結果を。 Core2Qua</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="tokyotyrant" label="Tokyo Tyrant" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    SPARC機を探したのですが私の権限で触れるところにはありませんでした。<br />
    <a href="http://1978th.net/tech/promenade.cgi?id=39">http://1978th.net/tech/promenade.cgi?id=39</a>
</p>
<p>
    というわけで私の家のSolarisでの結果を。<br />
    Core2Quad 9650上の64ビットLinux上にVMWareでSolarisを動かしている嘘んこ環境ですが・・。
</p>
<pre>
SunOS tamsvr11 5.10 Generic_137138-09 i86pc i386 i86pc Solaris<br />
&nbsp; 
</pre>
<pre>
[tamtam@tamsvr11 tokyocabinet-1.4.39]$ ./tcucodec conf
myconf(version): 1.4.39
myconf(sysname): SunOS
myconf(libver): 902
myconf(formatver): 1.0
myconf(prefix): /usr/local
myconf(includedir): /usr/local/include
myconf(libdir): /usr/local/lib
myconf(bindir): /usr/local/bin
myconf(libexecdir): /usr/local/libexec
myconf(appinc): -I/usr/local/include
myconf(applibs): -L/usr/local/lib -ltokyocabinet -lbz2 -lz -lrt -lpthread -lm -lc
myconf(bigend): 0
myconf(usezlib): 1
myconf(usebzip): 1
type(bool): size=1 align=1 offset=1 max=1
type(char): size=1 align=1 offset=1 max=127
type(short): size=2 align=2 offset=2 max=32767
type(int): size=4 align=4 offset=4 max=2147483647
type(long): size=4 align=4 offset=4 max=2147483647
type(long long): size=8 align=8 offset=4 max=9223372036854775807
type(float): size=4 align=4 offset=4 max=3.40282e+38
type(double): size=8 align=8 offset=4 max=1.79769e+308
type(long double): size=12 align=4 offset=4 max=1.18973e+4932
type(void *): size=4 align=4 offset=4
type(intptr_t): size=4 align=4 offset=4 max=2147483647
type(size_t): size=4 align=4 offset=4 max=4294967295
type(ptrdiff_t): size=4 align=4 offset=4 max=2147483647
type(wchar_t): size=4 align=4 offset=4 max=2147483647
type(sig_atomic_t): size=4 align=4 offset=4 max=2147483647
type(time_t): size=4 align=4 offset=4 max=2147483647
type(off_t): size=4 align=4 offset=4 max=2147483647
type(ino_t): size=4 align=4 offset=4 max=4294967295
type(tcgeneric_t): size=8 align=4 offset=4
macro(RAND_MAX): 32767
macro(PATH_MAX): 1024
macro(NAME_MAX): 255
macro(P_tmpdir): /var/tmp/
sysconf(_SC_CLK_TCK): 100
sysconf(_SC_OPEN_MAX): 256
sysconf(_SC_PAGESIZE): 4096
sysinfo(utime): 0.002330
sysinfo(stime): 0.005270
stat(st_uid): 100
stat(st_gid): 100
stat(st_blksize): 8192
</pre>]]>
        
    </content>
</entry>

<entry>
    <title>社会人として</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/11/post-592.html" />
    <id>tag:mt.orz.at,2009://1.903</id>

    <published>2009-11-15T14:53:26Z</published>
    <updated>2009-11-15T14:53:26Z</updated>

    <summary>私は勤怠があんまり良くないので人のことをとやかく言えるわけではありませんが・・。 適切な服装（ビジネスカジュアル）が分からないとか、名刺交換の練習をするから名刺</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    私は勤怠があんまり良くないので人のことをとやかく言えるわけではありませんが・・。
</p>
<p>
    適切な服装（ビジネスカジュアル）が分からないとか、名刺交換の練習をするから名刺入れを持ってこいって言われたけど名刺も持っていく必要ありますか？とか、今まで名刺を財布に入れていて渡すときに汚れちゃってるけどそのまま渡しちゃってるとか、それってどーなのよ。
</p>
<p>
    まじ勘弁して欲しい。
</p>
<p>
    &nbsp;
</p>
<p>
    この前会った新人の人、すっごい礼儀正しいよなぁ・・。<br />
    新人のが社会人としての基礎が立派という・・。<br />
    そして貪欲さを感じた。フレッシュ！<br />
    分からない部分や納得できない部分を素直に聞くというのはすばらしい事ですよ!!
</p>
<p>
    &nbsp;
</p>
<p>
    久しぶりに書く記事がこんなんか・・・。<br />
    別の記事でも書くか。
</p>]]>
        
    </content>
</entry>

<entry>
    <title>落とし物</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/11/post-591.html" />
    <id>tag:mt.orz.at,2009://1.902</id>

    <published>2009-11-04T15:55:56Z</published>
    <updated>2009-11-04T15:55:56Z</updated>

    <summary>      ...</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    <img title="yume.png" border="0" alt="yume.png" src="http://mt.orz.at/imageyume.png" width="312" height="187" />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>ぱんつ</title>
    <link rel="alternate" type="text/html" href="http://mt.orz.at/archives/2009/10/post-590.html" />
    <id>tag:mt.orz.at,2009://1.901</id>

    <published>2009-10-18T10:47:50Z</published>
    <updated>2009-10-18T10:47:50Z</updated>

    <summary>近所の本屋は新刊の取りそろえが悪い！ そのわりにアマゾンで1ヶ月待ちの本が置いてあったりする。    執拗におすすめしてくるのでぽちってみた。 そろそろPoserを7から8に</summary>
    <author>
        <name>タムタム</name>
        
    </author>
    
        <category term="日記2009後期" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://mt.orz.at/">
        <![CDATA[<p>
    近所の本屋は新刊の取りそろえが悪い！<br />
    そのわりにアマゾンで1ヶ月待ちの本が置いてあったりする。
</p>
<p>
    <a title="「ぱんつ」大全" href="http://www.amazon.co.jp/exec/obidos/ASIN/4861904897/tamrin69-22/" target="_blank"><img style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none" alt="「ぱんつ」大全" src="http://ecx.images-amazon.com/images/I/51lj2MhvU%2BL._SL160_.jpg" /></a>
</p>
<p>
    執拗におすすめしてくるのでぽちってみた。<br />
    そろそろPoserを7から8にバージョンアップさせて遊ぼうかと思いまして。資料として買っておこうかなと。<br />
    まぁ資料としてはイマイチでしたが・・。
</p>
<p>
    後は近所の本屋に置いてあったので↓を。
</p>
<p>
    <a title="プラナス・ガール 1 (ガンガンコミックスJOKER)" href="http://www.amazon.co.jp/exec/obidos/ASIN/4757526563/tamrin69-22/" target="_blank"><img style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none" alt="プラナス・ガール 1 (ガンガンコミックスJOKER)" src="http://ecx.images-amazon.com/images/I/51S5d6KmgQL._SL160_.jpg" /></a> 　<a title="ちょく! 1 (ガンガンコミックスONLINE)" href="http://www.amazon.co.jp/exec/obidos/ASIN/4757526121/tamrin69-22/" target="_blank"><img style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none" alt="ちょく! 1 (ガンガンコミックスONLINE)" src="http://ecx.images-amazon.com/images/I/51Za3475pdL._SL160_.jpg" /></a>
</p>
<p>
    プラナス・ガール
</p>
<blockquote>
    合格発表の時に出会った一人の少女に一目惚れした槙。入学して偶然にも同じクラスになったがその少女はなんと男だった!! 果たして槙の恋の行方は!?
</blockquote>
<p>
    のほほんとしたそっち系ではない普通に面白いマンガです。
</p>
<p>
    ちょく！
</p>
<blockquote>
    美少女ゲーム大好きで友達のいない高校生:水橋直は何故か男子トイレにいた芹花という女の子に出会う…。直に一目惚れしてしまった芹花は鼻血を出しながら告白するのであったが…。芹花の暴走っぷり、流血っぷりがもの凄い…!! 大流血ラブコメディー!!(オモシロアイテム付き)
</blockquote>
<p>
    色々ぶっとんでるマンガでした。ヒロインが普通にう○こ言います。バレンタインう○ことかシュールすぎる・・。&nbsp;
</p>
<p>
    両方ともスクエニ出版らしいのですが、スクエニの本こんなんばっかりだな！<br />
    ・・・面白かったです(*´∀｀)
</p>
<p>
    あとはソウルイーターとかファイブとか。
</p>
<p>
    ついでにAmazonで色々みてたら、今なら普通に買えるみたいですよ。ラブプラス。
</p>
<p>
    <a title="ラブプラス" href="http://www.amazon.co.jp/exec/obidos/ASIN/B00266QNYI/tamrin69-22/" target="_blank"><img style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none" alt="ラブプラス" src="http://ecx.images-amazon.com/images/I/51ikyRdMUgL._SL160_.jpg" /></a>
</p>]]>
        
    </content>
</entry>

</feed>
