LeopardにPlaggerをインストールしてMixiをGmailで読む方法

 Developer Toolsがインストールされていない場合は、OS付属のディスクからインストールしておく。

 MacPortsがインストールされていない場合は、下記からインストーラをダウンロードしてインストールしておく。
 http://www.macports.org/install.php


 ここからはTerminalで作業する。

where port

 として、

/opt/local/bin/port

 と出力されればオーケー。


 MacPortsを使って予め必要なものをインストールしておく。

sudo port selfupdate
sudo port install sqlite3
sudo port install subversion
sudo port install wget
sudo port install libxml
sudo port install libxml2


 次はCPANの設定をする。

sudo cpan

 とするとずらずらと色々出力される。途中で止まって何か聞かれている場合は基本的に全てエンターで進む。

 そのまま終われば良いが、CPANサーバーが落ちているときがあって、

 --15:48:26--  ftp://ftp.perl.org/pub/CPAN/MIRRORED.BY.gz
  (試行:20) => `-'
ftp.perl.org|163.143.1.21|:21 に接続しています... 接続しました。
anonymous としてログインしています... 
サーバの応答にエラーがあるので、接続を終了します。
中止しました

 とか言われることがあるが、その場合はとりあえず放っておいて

Please enter your CPAN site: []

 と出てくるのを待つ。出てきたら、

http://ftp.nara.wide.ad.jp/pub/CPAN/

 とでもしておく。

Enter another URL or RETURN to quit: [] 

 と出てくるのでとりあえずそのままエンター。

cpan>

 となるので、必要なモジュールを入れていく。

cpan> install Module::Install
cpan> install Test::Base
cpan> install YAML
cpan> install WWW::Mixi::Scraper

 CPANを使うのはここまで。


 PlaggerSubversionを使って最新版を入れる。

svn co http://svn.bulknews.net/repos/plagger/trunk/plagger ~/Desktop/plagger-tmp
cd ~/Desktop/plagger-tmp 
perl Makefile.PL
sudo make
sudo make install

 インストールはここまで。

plagger -v

 として、

Plagger version 0.7.17

 と出力されればオーケー。

 のはずだが、たぶんXML::Atomがないと怒られる。
 ので、インストールする。

cd ~/Desktop/
curl -O http://search.cpan.org/CPAN/authors/id/M/MI/MIYAGAWA/XML-Atom-0.28.tar.gz
tar zxvf XML-Atom-0.28.tar
cd XML-Atom.0.28
perl Makefile.PL
sudo make
sudo make install
cd ~/Desktop/plagger-tmp/
sudo make install

 とすれば今度こそインストール完了。

plagger -v

 として、

Plagger version 0.7.17

 と出力されればオーケー。


 次はPlaggerの設定をする。

mkdir ~/plagger
cd ~/plagger

 ここに、mixi.yamlという名前でファイルを作成する。
 mixi.yamlの中身はこんな感じ。

global:
  plugin_path: /Users/ユーザー名/plagger/assets/plugins/
  assets_path: /Users/ユーザー名/plagger/assets/
  timezone: Asia/Tokyo
  log:
    level: info
  cache:
    base: /Users/ユーザー名/plagger/tmp

plugins:
  - module: CustomFeed::MixiScraper
    config:
      email: example@gmail.com
      password: password
      fetch_body: 1
      fetch_comment: 1
      show_icon: 1
      feed_type:
        - FriendDiary
        - RecentComment
        - Message
        - Log
        - BBS

  - module: Filter::Rule
    rule:
      module: Deduped

  - module: Publish::Gmail
    config:
      mailto: example@gmail.com
      mailfrom: plagger@localhost
      mailroute:
        via: smtp_tls
        host: smtp.gmail.com:587
        username: example@gmail.com
        password: password

 あと、Gmailにメールする部分が使っているテンプレートを用意する。

mkdir assets/plugins/Publish-Gmail
cd assets/plugins/Publis-Gmail
curl -O http://search.cpan.org/src/MIYAGAWA/plagger-0.5.0/templates/plugins/gmail_notify.tt

 これで作業はおしまい。
 

 さてさて、実際に使ってみる。

cd ~/plagger
plagger -c mixi.yaml

 私の場合は、plagger起動用のシェルスクリプトを書いて、それをcronで5分間隔で動かしています。

sudo vi /usr/local/bin/execplagger
cd ~/plagger
plagger -c mixi.yaml
plagger -c livedoor.yaml

 livedoor.yamlLivedoor Readerを購読するYAML

vi ~/cron
MAILTO=""
 */5 * * * * /usr/local/bin/execplagger
crontab ~/cron

デザインプロトタイプ

 number0.jpの一部を改修し始めた。

 PaperVision3D 2.0 Alpha - Great Whiteの学習も兼ねて。

 [参考]

import caurina.transitions.Tweener;
	
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
import flash.geom.Point;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.system.Security;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
	
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.VideoStreamMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;

気になったフリーフォント

 http://www.dafont.com/

 中でも「A La Nage」と「AI pointe」と「Little Days」が良い。
 フォント自体が良いのはもちろんなんだけど、自分が使う名前と相性が良いのが気に入った。
 これだけクオリティが高いフォントをフリーで提供してもらえるのは、私のようなプログラムサイドの人間にとっては非常にありがたい。
 こういう時、プログラムを使って何かを作りたいデザインサイドの人間と一緒に何かやれたらおもしろいなと思う。
 ライブラリへのコミットなど、還元していけるところは還元していきたい。

String型の変数に数値文字参照を使って文字列代入する

 数値文字参照を利用して横を向いた三角(▶)を表現したい場合

public static const TRIANGLE:String = "▶";

 こうするとただの「▶」という文字列になってしまう。

public static const TRIANGLE:String = String.fromCharCode(0x25B6);

 StringクラスのクラスメソッドfromCharCodeを利用する。

AIR Beta 3、Flex Builder 3 Beta 3に移行するの続き

 Flex Builderのプロジェクト構成要素にまた変更があった模様。

 デバッグ用の出力先のデフォルトが「bin」から「bin-debug」に変わったので、プロジェクトディレクトリのsvn:ignoreを書き変える。

svn propedit svn:ignore hoge
.actionScriptProject
.actionScriptProperties
.flexProperties
.flexProject
.project
bin-debug
bin-release
html-template
.settings

 些細なことだけど、全部のプロジェクトを書き換えるのは結構手間がかかる。

 何か良い策はないものか。

prototype.jsのbindとbindAsEventListener

bindとbindAsEventListnerの違いは?


1. 引数の受け取り方が違う
bindの場合

function callback(event, arg1, arg2, ...){...}

bindAsEventListenerの場合

function callback(arg1, arg2, ..., event){...}


2. イベント発生時の挙動の差を吸収
bindAsEventListenerの場合
IEとその他のブラウザでのイベント発生時の挙動の差を吸収してくれる

ただし、Event.observeを使う限りはEvent.observeがイベント発生時の差を吸収してくれるのでわざわざbindAsEventListnerを使う必要はなさそう。

Flex BuilderのプロジェクトをSubversionで管理する方法

 すでにSubversionで管理されているディレクトリ「~/Sites/hogehoge」に、新たに「~/Sites/hogehoge/flex/」というディレクトリを作り、そこにFlex Builderで作ったプロジェクトを置いて、それをSubversionで管理する方法。

 そもそもなぜこんなことを考えなければならないかと言うと、Flex Builderのプロジェクトには、Flex Builderがプロジェクトを管理するために作るファイルがあって、そのファイルのパーミッションFlex Builderのものになっているため、素直にコミットしようとするとエラーになる。

 そこで、Subversionのpropertyのsvn:ignoreを使って、このファイルは管理しませんよ、というのを予め宣言しておかなければならない。

 まず、適当なテキストエディタで除外リストを作り「~/ignore.txt」に保存

.actionScriptProject
.actionScriptProperties
.flexProperties
.flexProject
.project
bin
.settings

 次に、ターミナルでもろもろ下準備

cd ~/Sites/hogehoge
mkdir flex
svn add flex
svn propset svn:ignore -F ignore.txt flex
svn ci .
cd flex

 で、ここまで出来たところでFlex Builderを立ち上げ、Flex BuilderのNavigatorで右クリック→新規→Flex Projectとし、ウィザードの2ページ目の一番上、「Use Default Location」のチェックを外し、すぐ下の「Folder」のところを「~/Sites/hogehoge/flex」にする。

 これでプロジェクトが作成されるので、適当に作業をして保存する。

(さっきの続きの)ターミナルに戻って、

svn add .

 とすると、余計なファイルが除外されてAddされるのがわかる。

svn ci .

 として完了。

 ちなみに、別の人が上記の作業をしてコミットされたものをチェックアウトしたものをFlex Builderに追加するのは、Flex BuilderのNavigatorで右クリック→新規→Flex Projectとし、ウィザードの2ページ目の一番上、「Use Default Location」のチェックを外し、すぐ下の「Folder」のところをチェックアウトしたディレクトリにするだけです。