:::: MENU ::::

C.a.T!

CATch a TAIL!

Japanese sub culture and tech.

  • 2011/04/13
  • 0
engineer

TwitterクローンのStatusNetを使ってみた

バックアップの完了イベントとかBuildの完了イベントとかを通知する汎用的な手段が欲しいなあ、と思っていて、普通に考えるとIRCということで会社で採用しようとしたのですが、思いの他IRC文化がなく、なかなか浸透させれずにいました。

それで別の手段を考えたわけですが、まあWebならみんなさすがに使えるでしょ、ということでTwitterクローンに通知する作戦に変更。

Twitterクローンで結構良さげなStatusNetというのを構築してみました。

その辺のメモ。

うちはユーザデータベースをLDAPで持っていて、そちらで認証させたかったのですが、思いのほか情報が少なかったのでまとめてみました。

Ubuntu へのインストールケースで書きますが、他のディストリビューションでもほとんど苦労しないと思います。

まず、関連パッケージのインストール。

# sudo apt-get install mysql-server mysql-client
# sudo apt-get install apache2
# sudo apt-get install php5 libapache2-mod-php5 php5-cli \
php5-common php5-curl php5-gd php5-ldap php5-tidy \
php5-xmlrpc php5-suhosin php5-memcache php5-mysql \
php5-dbg php-apc php-mail-mime php-mail-mimedecode
# sudo apt-get install prosody
# sudo apt-get install memcached

次に、StatusNetのアーカイヴをApacheで公開可能なディレクトリに解凍します。

ここでは、/var/www/statusnet に解凍したとします。

オーナは、Apacheユーザにしておきましょう。

解凍したアーカイヴの直下に、config.php.sample というのがあると思います。

これが設定ファイルのサンプルですが、ごちゃごちゃしてるので使いません。

同じ直下に config.php というファイルを作成し、以下のように設定します。

  • config.php
<?php
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
// 基本的な設定
$config['site']['name'] = 'サイトの名前(necotter)';
$config['site']['server'] = 'サイトを運営するサーバ(example.com)';
$config['site']['path'] = 'サイトのパス(necotter)';
$config['site']['fancy'] = true;
$config['db']['database'] = 'mysqli://statusnet:パスワード(necopass)@localhost/statusnet';
$config['db']['type'] = 'mysql';
$config['mail']['check_domain'] = false;
$config['mail']['notifyfrom'] = '通知メールのFrom(Necoadmin <[email protected]>)';
$config['mail']['domain'] = 'メールアドレス生成に使うドメイン(example.com)';
$config['mail']['backend'] = 'sendmail';
$config['mail']['params'] = array(
'sendmail_path' => '/usr/sbin/sendmail',
);
// LDAPの設定
addPlugin('apacheAuthentication',
array('provider_name'=>'LDAPの名前、なんでもいい(necodap)',
'authoritative'=>'ture',
'autoregistration'=>'false',
'domain'=>'ドメイン(example.com)',
'email_changeable'=>'false',
'password_changeable'=>'false',
'password_encoding'=>'ssha',
'host'=>'LDAPサーバホスト(localhost)',
'port'=>'LDAPサーバのポート(389)',
'starttls'=>'false', // LDAPS使うならここはtrue
'binddn'=>'管理者ユーザのDN(cn=admin,dc=example,dc=com)',
'bindpw'=>'管理者ユーザのパスワード(necopass)',
'basedn'=>'ユーザのベースDN(ou=People,dc=example,dc=com',
'scope'=>'sub',
'attributes'=>array(
'username'=>'ユーザIDに使うLDAP属性(uid)',
'nickname'=>'ニックネームに使うLDAP属性(uid)',
'email'=>'メールアドレスに使うLDAP属性(mail)',
'fullname'=>'フルネームに使うLDAP属性(cn)')
));

続いて、Apache の設定です。

ちょっと変なのですが、Apache側でLDAPで認証させてそれをもってStatusNet側の認証も通すのですが、StatusNet側ではフルネームなどのアカウント情報を改めてLDAPから取得します。

StatusNet側の認証をLDAPで直接やるプラグインもあるのですが、どう設定してもうまく動いてくれなかったので、こんな方法をとってます。

  • /etc/apache2/site-avairable/necotter
Alias /necotter /var/www/necotter
<Directory "/var/www/necotter">
  # funcyURLの設定
RewriteEngine On
  # NOTE: change this to your actual StatusNet base URL path,
  # minus the domain part:
  #
  #   http://example.com/        => /
  #   http://example.com/mublog/ => /mublog/
  #
RewriteBase /necotter/
  ## Uncomment these if having trouble with API authentication
  ## when PHP is running in CGI or FastCGI mode.
  #
  #RewriteCond %{HTTP:Authorization} ^(.*)
  #RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?p=$1 [L,QSA]
<FilesMatch ".(ini)">
    Order allow,deny
</FilesMatch>
  # LDAPの設定
AuthType Basic
AuthName "necotter"
AuthBasicProvider ldap
AuthLDAPURL ldap://localhost/dc=example,dc=com?uid
Require valid-user
</Directory>

次にMySQLデータベース。

ユーザとデータベースだけ作っておきます。

# mysql -u root -p
mysql> create database statusnet;
mysql> grant all privileges on statusnet.* to statusnet@localhost identified by 'necopass';
mysql> quit;

この時点で一度 Apache を起動して StatusNet 上の設定の場合 http://example.com/necotter/ にアクセスして、問題なく画面が表示されることを確認しておきます。

実は、画面を確認することが目的ではなくて、データベースを初期化することが目的なのですが。

画面が問題なく表示させたら、再び mysql に接続して、データベースのスキーマを少し変更します。

これは、メールアドレスの重複を許すためのチートです。

StatusNetでは、メールアドレスが必須なのですが、Botを作り始めると同じメアドを使いたくなるので。

そういうことしないのであればこの操作はいりません。

# mysql -u statusnet -p
mysql> alter table user drop index email;
mysql> quit;

以上でおわりです。

これで、Twitterと同じような MicroBlog が立ちあがります。

APIもTwitterとほぼ同じなので、Botはほぼ同じ実装で機能させれます。

なかなかよくできていて、企業内の限られた人数で運用するにはぴったりと思います。

  • 2011/04/1
  • 0
mac

Macをメディアサーバ化するPlexのススメ

f:id:clover-leaf:20110402003342p:image:w300

英語blogに以前書いたのですが、MacのFrontRowの強化版のようなアプリにPlexというものがあります。

iTunesのライブラリや、ディレクトリから音楽ファイルやらムービーファイルを検出してライブラリ化して見ることができます。

メニュー構成とかがとてもカッコよくて、それだけでも使いたくなります。

更に、プラグインを追加することによって、Youtubeなど、様々なネット動画サービスに接続できるようになり機能的にも FrontRow よりずっと優れています。

こんな感じでずらっと。

f:id:clover-leaf:20110402003343p:image:w300

しばらく更新がなかったのですが、今年に入ってアップデートがあり少し問題があった品質面でもかなり安定してきました。

この間 MacbookPro を買って空いた Macbook を、メディアサーバとして再構築しDVI-HDMI変換ケーブルでTVに接続しています。

前からメディアサーバは立てていましたが、ずっと昔の Mac だったので、不安定でちょっと使いづらかったのですが、これでようやく安定しました。

オススメの使い方は、音楽はPlexが勝手に認識してくれるiTunesライブラリをそのまま使う、ムービーはディレクトリ指定してスキャナで取り込むパターンです。

自分は、ムービーもiTunesライブラリとして取り込んでいるので、iTunesライブラリとして認識してくれることを期待したのですが、どうもダメっぽいです。

ということで、ディレクトリ指定でiTunesライブラリのMoviesフォルダを取り込むのですが、単なるムービーとして取り込むとアニメのシリーズとか関係なくフラットにメニューに並ぶようになってしまいます。

丁度、FrontRowと同じ状態で、数が多いとちょっとサーチするのキツい。

それを回避しようと思うと、TV Showsとして取り込む手段があります。

TV Showsは、シリーズとかをメニューとして整理してくれて、階層的に作品を管理できるようになります。

ただ、Plex標準のTV Showsのスキャナだと、iTunesのムービーの設定のうち『ビデオ』に該当する番組情報とか埋めてないと認識してくれません。しかも、シーズン番号とかエピソード番号とか入れてないと無視されます。

自分は、そもそも番組情報を入れず、音楽ファイルと同様の情報しか入れていません。

iTunesのムービーの設定のうち『情報』に該当するやつですね。

これ。

f:id:clover-leaf:20110402003344p:image:w300

これじゃそのまま使えねー、ということでスキャナを書きました。

ソースはこんな感じ。

これを、~/Library/Application Support/Plex Media Server/Scanners/Series/Simple Series Scanner.py に保存しておいてやると、Plex Media Server のツールである Plex Media Manager のライブラリ追加で Media scanner として Simple Series Scanner が使えるようになります。

こいつを選択して、Section type に、TV Shows、Primary metadata agent に Personal Media Shows あたりを選択しておいてやると、上で書いたiTunesのムービーの設定のうち『情報』を元に、アルバム情報とかからシリーズ構成を作成してくれるはずです。

また、エピソード番号にあたるトラック番号とかが入力されていなくても、適当な番号でごまかして取り込みます。

こんな感じで、アルバムで整理され、

f:id:clover-leaf:20110402003345p:image:w300

ドリルダウンすると、ちゃんと同じアルバムのムービーが並びます。

f:id:clover-leaf:20110402003346p:image:w300

ちょっと適当な整理だけど、自分には十分使いやすくなりました。

Plexは、マジオススメなんで、ぜひ使ってみて。

  • 2011/03/20
  • 2
mac

MacBook Pro early 2011 を買いました

f:id:clover-leaf:20110320213017p:image

そういや地震ですっかり飛んでいましたが、メインのMacBookを買い替えたのでした。

今まで使っていたものは、おおよそ3年ものでメモリも4Gまでということで、丁度いい時期かなと思い。

ここ数年はずっとメインマシンをノートにしていて、不自由したことはないのですがこの間まで使っていた13インチはちょっと外でコード書いたりするには画面がちっちゃいと感じていました。

自分はそんなに長距離持ち運ぶということがないので、重さより作業のしやすさを取ろうということで再び15インチに戻しました。

というわけで買ったのは、こんな構成。

MBP 15.4/CTO

2.2GHz Quad-core Intel Core i7

4GB 1333MHz DDR3 SDRAM – 2x2GB (これは購入後8Gにリプレースした)

256GB Solid State Drive

8x Double-Layer SuperDrive

MBP 15″HR Antiglare WS Display

Mini DisplayPort-DVI Adapter

No iWork preinstalled

No Final Cut Express preinstd

No Aperture Preinstalled

No Logic Express Preinstalled

No FileMaker Preinstalled

No MSO preinstalled

US Keyboard/Users Guide-JPA

Country Kit-JPN

OS自体の起動、アプリの起動、Android エミュの起動などがすごく速くなって、ストレスはほぼなし。

AdobeCS5とか以外は、ほぼDockで1ポップ以内で起動します。

これは、CPUよりはSSDの威力なんだろうなあ。

素晴しい。

ビデオメモリも1Gなので、動画編集なんかもサクサクいけるはず。

とりあえず3年はがんばってくれると信じている。

  • 2011/03/19
  • 0
misc

クレバーに動こう

地震、津波、原発と大混乱の日本が続いています。

自分の周りも直接的に大きな被害があったわけではないですが、買い占めや計画停電など生活に少しずつ変化が出てきています。

こういった不便はしばらくは仕方ないでしょうね。

会社でもあたふたして空回りしている人を見かけます。

自分の上司もちょっとあたふたしてて頼りない。

しっかりしてよ。

こんなときだから、冷静に優先度を付けて行動しないと。

自分が今週優先したのは、地震初日の移動の混乱、帰宅難民の状況を見て、移動しなくても仕事を継続できる仕組みを組むことでした。

そのために一部予定していた作業を止めたりもしました。

うまくいったと思う。

うちのチームは、家からでもなんとか作業できるはず。

今後、電力不足は続くだろうから、この状況は長期化すると思っていたので、まっさきに作ろうと思った。

不謹慎かもだけど、後輩と一緒に楽しみながらやってます。

これを通じて新しいことを覚えられてるからね。

買い占めなどもどう考えても論理的な行動じゃない。

自分にとって、周囲にとってメリットになるか考えて行動しよう。

心理的に仕方ないんだけど。

動ける人、特に子供がいらっしゃる家庭で共働きじゃない家庭は、苦労しながら暮すよりは一時的に中部、関西に疎開するのもいいでしょう。

ホテル暮しはきついので、親類が居る方ということになると思いますが。

自分がその立場だったら子供学校休ませて、奥さんと関西の実家に疎開させます。

原発、物不足で苦労させながら暮らすよりはよっぽど安心。

とはいえ自分も冷静かというと、余震が結構怖い。

今のところ原発より怖い。

だって即死できるし。

その辺でストレス感じてるけど、音楽聴いたりできるだけ何かに集中して紛らわしてます。

しばらくこんな状態が続くでしょうが、頑張りましょう。

あ、停電やらの混乱で深夜アニメ録画めちゃくちゃなのなんとかして。。。

  • 2011/03/11
  • 0
misc

阪神大震災と今回の大地震を体験して

コンスタントにblogを書く目標を立てておきながら、1ヶ月書けませんでした。

久しぶりのポストがこんな悲しい出来事というのは遺憾ですが。

私は、元々関西の人間で阪神大震災の時期も向こうに居たのですが、こんな短期間に2度も大地震を体験するとは。

今日の地震時は、オフィスに居たのですが、ビルの最上階で少し高かったこともありかなりの揺れでした。

周りの人達は結構冷静だったのですが、自分は結構動転していました。

同じ阪神の震災を体験した方も同じように結構動転していたので、やっぱり体験している人間の方が深刻に捉えていたみたいです。

みんな逃げだすなどのパニックは起きなかったのはよかったです。

二つの大地震を体験して感じたことは、やはりネットの進化です。

今回、地震時うちのオフィスはすぐに停電になったのですが、すぐにスマホ使って Twitter で情報収集できました。

Docomoは苦戦していたみたいですが、Softbank や au は結構いけました。

阪神大震災のときはこんな情報収集はできなかった。

ネットはもちろんあったけど、まだ Twitter のようなサービスと呼べるものはなかったから、せいぜいメール。

情報のほとんどを報道に頼るしかなかった。

なので、神戸の映像が入ってきたときは、とても驚いたものです。

大学に行って友人から各地の状況を聞いてようやく見えてきた。

今回は、揺れてる最中からネットで状況を知ることができたのは、冷静さを保てた要素の一つかもしれません。

近くではない、とか、都心勤務の人も無事そう、とか、深刻度を知ることができたので、ある程度冷静でいられました。

落ちついた後、ワンセグで報道を確認して震源地や震源地の津波の情報を知って恐しくなりましたが。

ネットが確実に緊急時の情報インフラとして、多大な効果を上げていることを実感した一日でした。

内閣官房のページや東電のページなども相当アクセスが来ていると思いますが落ちずにもっているのも、さすがです。

政府は、今回の震災でネットというインフラの価値をもっと理解してほしいです。

今日は、冷え込むみたいです。

家に辿りつけていない方は、今日はあきらめて学校や公共施設に避難して朝を待ちましょう。

津波被害など大きな被害が出ている地方の方々の無事を祈ります。

  • 2011/01/27
  • 0
java

プライベートなMavenリポジトリを立てる

Mavenは、複数のリポジトリから依存ライブラリをかき集めてBuildすることができますが、もちろん自身が開発した物件をプロジェクト内だけで使うプライベートなMavenリポジトリでホストしてプロジェクトチーム内で共有することができます。

リビジョン管理とこのようなリリースBuildのコントロールによって、テストなどのレポート、解析を効率よく進めることができます。

立てる方法もやってみるとすごく簡単。

  • 必要なもの
    • Maven
    • scp でファイルを受けとってくれるサーバ (ftpとかでもいい)
    • Nexus か HTTPサーバ

1. リポジトリとなるサーバを立てる

まずリポジトリサーバを立てます。

今回は、クライアントからリリース物件の転送を scp を使う方法で作ってみるので、Linuxで立てるのが楽です。

まず、リポジトリのメンテナンスユーザを作ります。

自分は、プロジェクト名のユーザを大体作ります。

# sudo useradd necomimi

次に、scp をするためにリポジトリとなるディレクトリを作成します。

necomimi# mkdir /project/maven

次に、Nexus を上げます。

Nexus は、Mavenリポジトリのプロキシとしての役割りを果たしてくれて、外部のMavenリポジトリをキャッシュしてくれたりするのですごく便利です。

今回のテーマであるプライベートリポジトリを立てるのに必須ではないのだけど、Mavenをがっつり使うのであればマストと言っていいツールです。

Nexus と Hudson は、マスト。

といっても、これは Nexus の war を Tomcat などの JEE サーバに配備するだけなので割愛。

今使ってるプロジェクトでは、Jetty で運用しています。

Nexus を立てて基本的な設定が済んだら、リポジトリの Add で Hosted Repository を追加します。

この辺の画面見てください。

これは、自前のプライベートリポジトリを立てる機能です。

いくつか設定がありますが、ほとんどデフォルトでよくて、IDやNameは適当なものを入れて、Override Local Storage Location のところに上で作ったリポジトリ用のディレクトリを入力します。

上の例だと、/project/maven

これで保存したら終了。

2. クライアントを設定する

リリース作業を行なうクライアントの設定をします。

リリース作業は、各開発者よりはリリースを管理するリリース担当者がやるので、その人の端末の設定になります。

まずは、Mavenの設定にリポジトリサーバの認証情報などを設定します。

いろいろやりかたはあるのですが、今回はssh-keyベースの認証で scp するようにします。

まず、ssh-keyを作ります。

既に作成済なら、それを使えばよいです。

someone# ssh-keygen

これで、~/.ssh に id_dsa (秘密鍵), id_dsa.pub (公開鍵)ができるので、id_dsa.pub の内容を1で作ったリポジトリサーバのリポジトリのメンテナンスユーザのホームの .ssh/authorized_keys に追記します。

上の例だったら necomimi ユーザのファイルです。

なければ作成してください。

これは、パーミッションを600 にして勝手に書き替えられないようにしておいてください。

次は、Mavenの設定にリポジトリサーバの情報を設定します。

以下のように設定ファイルを書きます。

  • ~/.m2/settings.xml
<servers>
...
<server>
<id>necomimi-repository</id>
<username>necomimi</username>
<privateKey>/home/someone/.ssh/id_dsa</privateKey>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration>
<sshExecutable>/usr/bin/ssh</sshExecutable>
<scpExecutable>/usr/bin/scp</scpExecutable>
<sshArgs></sshArgs>
</configuration>
</server>
</servers>

これでクライアントの設定は完了。

3. プロジェクトのpom.xmlの設定

最後に、リリース対象となるプロジェクトのpom.xmlを設定します。

設定すべきことは、リポジトリサーバの指定と、scp を実行してくれる拡張機能の設定です。

拡張機能には ftp などもあるので、サーバの環境に合わせて変更してください。

ここでは、詳しくは書きません。

  • pom.xml
<project>
...
<distributionManagement>
<repository>
<id>necomimi-repository</id>
<url>scpexe://example.com/project/maven</url>
</repository>
</distributionManagement>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh-external</artifactId>
<version>1.0-beta-6</version>
</extension>
</extensions>
</build>
..
</project>

これで設定は完了。

リリース作業は、

someone# mvn deploy

だけです。

これで、リポジトリサーバの /project/maven 以下に、Mavenリポジトリにおなじみのディレクトリ構成とリリース物件である jar や チェックサムファイルなどが配備されているはずです。

これを、Nexus の Hosted Repository 経由で参照できるので、プライベートなMavenリポジトリとして利用できます。

Nexus を使わないのであれば、ApacheHTTPなどを立てて、リポジトリディレクトリを公開するだけでもOKです。

この辺、大した時間かからないけど、方法を調べたりしてると意外に面倒でなかなか実行しないことが多いので、まとめてみました。

  • 2011/01/26
  • 0
engineer

git のマージツールを設定する

会社で導入したら、周りの人間に使い方理解できないとか、意味不明なことを言われている git ですが、マージツールとかを使いやすいものに替えるだけでも障壁を下げれるのかと思いその辺の設定をまとめておきます。

マージツールのオススメは、マルチプラットフォームで動く Perforce Visual Merge and Diff Tools (p4merge) です。

こいつを git のマージツールとして設定します。

Mac前提でまとめますが、他の環境でも同じなので多分問題ないです。

まず、p4merge をインストール。

Macなので /Application にドロップするだけ。

次に、以下のようなシェルを書きパスが通ったディレクトリに保存して実行権を付けておきます。

Linuxとかなら P4MERGE 変数をインストールした p4merge コマンドに書き替えるだけ。

  • p4merge
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
${P4MERGE} $*
  • p4diff
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
[ $# -eq 7 ] && ${P4MERGE} "$2" "$5"

次に、git のグローバルコンフィグに以下のエントリを足して、git mergetool で使うツールとして p4merge を指定します。

  • ~/.gitconfig
[merge]
keepBackup = false;
tool = p4merge
[mergetool "p4merge"]
cmd = p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
keepTemporaries = false
trustExitCode = false
keepBackup = false
[diff]
external = p4diff

これで、git mergetool でグラフィカルにサクサクマージしましょう。

  • 2011/01/17
  • 0
engineer

Squidで中間Proxyを立てる

実験環境なんかで、プライベートなネットワーク組むことがよくあるのですが、その際外部ネットワークに HTTP だけは通したいことがよくあります。

OSのパッケージインストールとか、Mavenビルドとかね。

そういうときには Proxy を立てますが、いっつも忘れるのでメモ。

構成的には、プライベートネットワーク内のマシンは、ここで立てるProxyサーバを通して社内ネットワークに接続。

社内ネットワークには、インターネットに出るための社内Proxyサーバが別途立っていて、そこを通らないと Firewall が越えられない前提。

さらに、社内ネットワークのマシン群には、社内Proxyを通さずにHTTPする必要がある。

微妙に、特殊かもしれませんが。

使うのは定番のSquidです。

Ubuntu だと、

# sudo apt-get install squid

で、/etc/squid/squid.conf を以下のように。

#1

http_access allow CONNECT SSL_ports

#2

cache_peer parent.proxy-server parent 3128 7 no-query

#3

acl local-servers dstdomain my.internal.domain

always_direct allow local-servers

#4

never_direct allow CONNECT

#5

forwarded_for off

#1 で SSLポート(デフォルトで定義がある)への接続を許可。

#2 で 社内Proxy(parent.proxy-server)を親Proxyとして設定。これで、外へのアクセスは、社内Proxyへパス。

#3 で 社内ネットワーク(my.internal.domain) へのアクセスは社内Proxyにパスせず直接接続。

#4 で 社外ネットワークに接続する場合のSSL接続は、社内Proxyへパス(SSLはデフォルトで直接接続しようとする)

#5 で 一応IP隠す。

という感じ。

設定は、順番で動作が変わるのでその辺はまることがある。

  • 2011/01/13
  • 0
misc

スーパーやよいおりうさちゃんタイム

f:id:clover-leaf:20110113213325p:image:w250

MacBook Air 11インチ欲しい!

欲しいんだけど はてなダイアリ は、Android 端末でサクっと書いちゃうので、Androidアプリ書くのに使います。

どうせなら、はてなもお外で書こうとかいうコンセプトで iPad とか NexusS とかプレゼントした方がおもしろいと思うけどなあ。

こないだ買った 003sh GALAPAGOS ですが、予想どおり付属ランチャとかは置換して上のような状態に。

アイマス2発売直前うさぎ年なので、やよいおりうさちゃん壁紙から変えられません。

使用感は、概ね満足しています。

edyとかSuicaが使えるようになったらもっと満足できそう。

  • 2011/01/10
  • 0
misc

今週英語blogに書いたトピック

せっかくなので、英語blogに書いたトピックも週ごとにまとめていこう。

英語側の blog は、YET ANOTHER Catch a TAIL! と言います。

今回は初めてなので、先週までに英語側に書いたもの全部。

余っているMacでAppleTVっぽくメディアサーバを作ってるのですが、そこで使ったPlexのミニhack。

Plexすごくいいよ。

2010年よかったCDアルバム。

ソラノヲトは、マジよいです。

opoona のサントラレビュー。

崎元、岩田コンビらしい曲が多くて、昔からのファンにはすごいオススメ

固定ページ:1...55565758596061...69