Tech

Entries

Google Developer Day Tokyo の video を見た

Date
2007-06-05 (Tue)
Category
Tech

Google Developer Day Tokyo - 鵜飼 文敏 を見てみました。先に自戒も含めてダメだしすると、話す事は決まってても滑らかに、テンポよくはなせた方がカッコいいよね。電車で通勤してた頃はずっと IT Conversations をひたすら聴きまくっていて --まぁアレは選りすぐりだから単純な比較は出来ないけれど-- 欧米人のプレゼンの巧さに舌を巻いていたものでした。

それはさておき。今回新たに知った内容を簡単にまとめておきます。

Design Doc

新しいプロジェクトを始めるときなどに書くものらしい。

背景・目的
(Why)
設計
(How)コードが常に見られるようになっているので、余り細かい設計は書かない。むしろコードではわからないような事を主に。
メンバー
(Who)後から全く別な部署などからコンタクトがあったときのために。
セキュリティ/プライヴァシーの考察
テスト・モニタプラン
ダウンタイムを少なくするための工夫があるか、とか。

セキュリティ/プライヴァシーの考察が一番最初の企画書に書き込まれているのはとても興味深い。僕が修論制作でとあるサービスを企画して、発表した時に一番ネガティヴな反応はプライヴァシー上の問題だった。ある人に取っては全く些細な事でも、それが大事な人も居る。また企画書を読む人は、作る人の意思ではなく、読む人の理解の範囲でしか物事を理解しない。1つネガティヴな事があると、使う側は使わないし、作る側はやる気がそがれる。その時、僕が得た教訓、実際ユーザを相手にするときは双方の信頼が大事、という事をこれは大きく裏付けてくれている。

三大言語

C++
インフラに近い所
Java
Frontend でよく使われるようになってきた
Python
内部サービス。Housekeeping 的。Guido の書いた Mondrian というレビューシステムがあるらしい。

他にもブラウザ上での Javascript やファイナンスなどでグラフを描画するのに ActionScript を使う、とか。Sawsall は鵜飼さん自身は“たまに”触るらしい。そうなのか…

コーディング規約重視

EWT Review を通らないと、コミット制限がある。

Eric Schmidt の言葉

Build for scale as the world and the internet are both very big places. Don't accept anything less than being the best.

全体を通して感じたのは、未来のため、っていう意識の高さ、でしょうか。僕も前職では(まぁプログラマではなかったけれど)まったく記録なんてとろうと思わなかったけれど、今では率先して書いてるし。そういう意識を保つのは大事ですね。

Design Patter by PHP[3]: Template Method

Date
2006-10-18 (Wed)
Category
Design Pattern | Tech | php

日々是鍛錬。

第三回目は Template Method です。コードは前回に引き続き、Subversion のレポジトリ

http://svn.nydd.org/dpxphp/

をどうぞ。

今回の気づき

  • 毎回思っていたけれど、PHP では名前空間の制約が厳しく、標準ライブラリに存在する関数と同じ名前の関数を定義できない。前2回分では、SPL で宣言されているクラス名と当たっていて、今回は標準関数の print だった。特に関数はなんとかしてもらいたい所ではある。だって内側から呼ぶのも $this つけなきゃ行けないわけだし、ambiguity はなさそうだけれども…
  • println ってなかったっけ??
  • 字数を数えるのにちょっと苦労した。以下 StringDisplay.php より
    $this->width = mb_strlen($this->str);
          if ( $this->width != strlen($this->str) ) {
             $this->width = $this->width * 2;
          }
    要するに、mb_strlen と strlen で数えてみて、一致してなかったらマルチバイト文字列と判断して、そうだったら、とりあえず2倍にしてある。ホントは private $is_mb とかつけて、printLine() を工夫すべきか、な。
    • 少し正確に話すと、unicode では(ASCII 互換以外の文字列、いわゆるダブルバイトと呼ばれているもの)1文字3byte消費しているの(だよね?)で、『あ』の1文字で strlen では 3 という返り値、mb_strlen では 1 という返り値を得る。ま〜正確ではあるけど、使いやすくはないのかな〜
    • 追記 on March 2007: Unicode 、と一緒くたに語っていますが、これは正確じゃない。例えば(日本語の wikipedia によればほとんど使われていないらしいが) UTF-1 は 8-bit (≒ 1byte) コード。ここで語ろうとしている UTF-8 はマルチバイトで可変長 ( 1〜4 byte ) 。『あ』が 3byte だったのは“たまたま”。この実装は間違いですな。

実行結果は

$ php main.php 
<<HHHHH>>
+-------------+
|Hello, World.|
|Hello, World.|
|Hello, World.|
|Hello, World.|
|Hello, World.|
+-------------+
+------------+
|こんにちは。|
|こんにちは。|
|こんにちは。|
|こんにちは。|
|こんにちは。|
+------------+

でした。

Design Patter by PHP[2]: Adapter

Date
2006-10-16 (Mon)
Category
Design Pattern | Tech | php

前回の イテレータ パターン からはだいぶ時間が空いてしまいました。本を友人に貸していたからなんですが、まぁ言い訳はこのくらいにして。

未だ Chpater 2: Adapter Pattern です。今回からは(昨日から運用開始した)Subversion を使ってレポジトリを公開〜。まだ非常に稚拙なコードですが、興味のある人は、

http://svn.nydd.org/dpxphp/

をどうぞ。

今回の気づき

  • Java の super() は PHP で parent:: となる。
    • PHP4 では class 名と同じ function がコンストラクタに、いわゆる Java と同じ形式だけだったのに、PHP5 から Object に __construct() という特殊関数ができて、誰が使うんだろーなー、と正直思っていたけれど、なるほど確かに parent::__construct() を呼ぶのに、統一的かつ合理的にするには __construct() を使うべきだと思いました。ちなみにマニュアルにはこう書いてあります。
      For backwards compatibility, if PHP 5 cannot find a __construct() function for a given class, it will search for the old-style constructor function, by the name of the class. Effectively, it means that the only case that would have compatibility issues is if the class had a method named __construct() which was used for different semantics.
      実際実験してみましたが、__construct() を class 宣言の中に含めなくても parent::__construct() で呼び出すことができています。
  • PHP とは関係なく、svnX の使い勝手の問題なんですが、Working Copies ウィンドウから開けるところで、Update ボタンを押すと、"Are you sure you want to update this working copy to the latest revision?" って聞いてくれるのだけれども、Yes を押すと、どれが変わるとかは言ってくれないで、黙ってアップデートされてるのがすこし気になった。

Subversion を Dreamhost で使ってみる。

Date
2006-10-15 (Sun)
Category
Tech

『え〜今更〜』などの突っ込みは華麗にスルーする予定です。しかも先に結論を言うと Dreamhost にはデフォルトで Subversion がインストールしてあるので、難しいことは何一つしていません。使い初めなのでとりあえず事足りていますが、ま〜将来必要になれば build & install してエントリ書くかもしれませんが。

環境など

  • PowerPC G5 dual 2GHz
  • Mac OS X 10.4.8

ソフトウェア

手順

  1. まずは Subversion のソフトウェアをローカルのシステムにインストールする。
    自分でビルドするのも悪くないですが、pkg にしてくれている人を発見。Marting Ott: subversion現時点(2006/Oct/15)で最新の Subversion 1.4.0 をダウンロードしてインストール。
  2. ローカルにレポジトリを作っていくつかテストをしてみて、ちゃんと動くことを確認。
    参照: hyuki.com: Subversionの基礎練習
    bluegate.org: Subversionによるバージョン管理(日本語訳)
    チョとハマったのは svn import かな。結城さんの所で、
    svn import file:///C:/home/repos/myproject -m "Initial import."
    とあるけれども、これは『カレントディレクトリ以下を新しいモジュールmyprojectとしてリポジトリにインポート』する場合。インポートするディレクトリを選ぶ場合は、
    svn import /LOCAL/FILE/PATH/YOU/WANT/TO/IMPORT PROTOCOL://PATH/TO/REPOSITORY -m "message" --username USERNAME
    という感じになる。import 後の第一引数が レポジトリに入れたいフォルダ で、第二引数が レポジトリのパス 。ただし必ずプロトコルを指定しなくてはいけない。例えば HTTP とか SVN とか FILE とか。-m はコメントをつけるし、--username はインポート(コミット)するユーザ名。かな。
  3. 次に Dreamhost 側にレポジトリを作る。通常の管理と一緒で、Web Admin Panel より行う。Goodies -> Subversion を選び、プロジェクトネームなどを登録。
  4. Mac OS X 上の client ソフトは svnX を使う。
    RapidSVNも使ったけれど、wxWidgets を使っている UI の見た目があまり僕にはしっくりこなかったし、svnX の方が、動作が機敏のような気がする。
  5. svnX の設定。さっきコマンドラインからインポートしてあるので Repositories ウィンドウから設定して、項目をダブルクリックすれば、直ぐに作業中のファイルが確認できるはず。
  6. svnX で svn checkout ボタンを押せば、レポジトリからのチェックアウトが直ぐに行える。これは Working Copies というローカル作業環境の管理ウィンドウと連携している。
  7. svnX で作業を commit したいときは、この Working Copiesから行う。設定項目をダブルクリックすると、もう一枚ウィンドウが開き、もし更新されたファイルがあればここに表示される。

とりあえずこんな所でしょうか。ふむ。

Page Age Needle

Date
2006-07-15 (Sat)
Category
Project | Tech

page age needle

Map the data of any web site page, with putting them on ONE linear and meaningful criteria. What will be the one? I think there are a lot of attributes, which each page has. I, currently, come up with ideas as a list follows.

  • Data size
  • Last Update
  • Page Visit

With using database backended file system, Page Age Needle (hereinafter PAN) will give you where the page you are watching locates in the site. For example, say you as a site owner want to show the Last Update Indicator on the site, you make include a small javascript piece.

<javascript type="text/javascript" src="pan.js"></javascript>

then you will get JSON object called "PAN" on the page you're watching at.

You as a site owner are expected to implement the callback function, to give the data presentation layer.

phpMyAdmin

Date
2006-04-02 (Sun)
Category
Tech

Tiger 設定日記。

phpMyAdmin のインストール。このアプリケーション自体、圧縮を伸張して、それで終わりというすばらしいアプリケーションだと思います(PEAR に入ればいいのにな。そうならない理由があった気がするけど)。でも、設定の仕方だけはあまりいただけない。command line で動く、対話式の ./configuration.php みたいなのを作ると需要はあるかもしれないね。

2.8 以降、設定すべき点がすこし違った気がするので(ローカルだし、今は急いでいるのでとりあえず)、今回は 2.7 をダウンロードしました。適当な場所に展開して、まずは httpd.conf を作る。僕は /etc/httpd/users/ 以下に、サービスごとに設定ファイルを書くのがお気に入り。00xpma.conf とかを書く(x には数字を入れます。apache が起動するとき読み込む順番になる、はず)。

Alias /ABSOLUTE/URI_PATH /ABSOLUTE_PATH/IN/FILE_SYSTEM
<Directory "/ABSOLUTE_PATH/IN/FILE_SYSTEM">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

とか。apachectl restart を忘れない。で、とりあえず config.default.php を config.inc.php にコピーして、設定したのは以下

  • $cfg['PmaAbsoluteUri']
  • $cfg['Servers'][$i]['password']

するとトップページになんか妙なエラーが日本語で出てる。英語に戻すと "cannot load MySQL extension, please check PHP Configuration" だとか。ははぁ、と思い出して以下の項目を追加。

  • $cfg['Servers'][$i]['extension']

mysqli ですね。

Local domain の設定の仕方

Date
2006-04-01 (Sat)
Category
Tech

Tiger 再設定日記となりつつありますが。さて。

Mac OS に限らず、ローカルで Web 開発するとき、ローカルドメインがあると、何かと便利です。という訳でおさらい。

Mac OS X の場合

NetInfo Manager を使うのが流儀らしいです。NetInfo というのは NeXT 発祥の Directory Service だったっけ?それはともかく。起動すると開くウィンドウ、上半分はコラムビューになっています。一番左が / (root)で、次がサービス名? aliases, groups, machines... と並んでいます。

ローカルドメインの設定は、/machines 以下に入ってます。デフォルトエントリとして、おそらく braodcasthost と localhost が入ってますね?単純に、localhost を複製して(ウィンドウ上部にボタンがあります)、下半分のプロパティリスト中、name をお望みの名前にして、それで終了。再起動は必要ありません。

Windows XP の場合

驚いたことに、unix の hosts ファイルと同じ形式です。が、場所が特殊。

C:\WINDOWS\SYSTEM32\DRIVERS\ETC

にあります。適当なテキストエディタで開いて、編集しましょう。最初に例があるので、迷うことは無いと思います。多分、Windows 2000 も同じ形式でしたが、system32 じゃなかったかも。それ以前の OS はググると、

Windows XP  	=  	C:\WINDOWS\SYSTEM32\DRIVERS\ETC
Windows 2K = C:\WINNT\SYSTEM32\DRIVERS\ETC
Win 98/ME = C:\WINDOWS

だそうです。

ところでマウスも壊れました。長らく愛用してきた Sony vaio note 用 USB mouse 。数年前に生産中止。渡米の際、友人に頼んで Sofmap の中古を2個準備してきたものの、3年経って2個とも消費したようです。かれこれ5代目だったかしらん。適度な小ささと重心、Wheel 感も僕にはぴったりだったのに。しばらく新しいの探そうと思います。

MySQL 5 の 64bit 版は、PHP 5 の mysqli の構築に失敗する

Date
2006-03-30 (Thu)
Category
Tech

前回に引き続き、Tiger に環境を再構築中。PHP と MySQL をインストールします。

まず、Tiger 自身についてくる PHP をアンインストールしましょう。というか整理してとっておきますが。僕がまとめたファイルとしては、

  • /usr/lib/php
  • /usr/include/php
  • /usr/bin/php*

の三カ所。/usr/bin/には、

  • php
  • php-config
  • phpextdist
  • phpize

という4つのコマンドラインが入ってますので、mv /usr/bin/php* /path/to/somewhere/ とかしてどけましょう。

MySQL は、インストール自体は簡単。MySQL Downloads から自分の環境にあったものを入れればいいだけ!といいたいところですが、表題の通り、PowerMac G5 では、MySQL 5.0 の 64bit 版を入れておくと、PHP 5 の mysqli の構築に失敗します。

なぜか?よくわかりません。出るエラーは "configure: error: wrong mysql library version or lib not found" です。MySQL Improved Extension の User Contribute Note にいくつか例が出てますが、それとも違うみたい。同じ状況としては、

MySQL Bugs: #15916: PHP configure failed with MySQLi library error.

かな。OS は違うけど、CPU は一緒だし、出てるエラーの出方もそっくり。で、これは解決されてない。ので、どうしたかというと、MySQL 5.0.19 - Max - Mac OS X 10.4(PowerPC) をインストールしたのでした。ま、64 bit だからどうだという性能差は僕の環境では使わないでしょうし。

最後にようやく PHP の設定。とりあえず最初に入ってる状況からは余りかえず、libxml2 だけ入れて、あとはシンプルに。以下 configuration オプション。

--with-apxs \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--sysconfdir=/private/etc \
--enable-mbstring=all \
--enable-mbregex \
--enable-exif \
--with-libxml-dir=/usr/local/lib \
--with-xmlrpc \
--with-zlib-dir=/usr \
--enable-trans-sid \
--enable-sockets \
--with-xml \
--with-iodbc=/usr \
--with-curl=/usr \
--with-config-file-path=/etc \
--with-mysqli=/usr/local/mysql/bin/mysql_config


そうだ。Developer Tools をインストールした時に、思いあまって WebObjects もインストールしました。すると、デフォルトバックエンドとして、OpenBase がセットアップされて毎回起動します。それはウザイけど止める方法は書いてない、と。単純に、/Library/StartupItems/OpenBase というディレクトリを、消せば止まります。僕はディレクトリ名の頭に . (dot) をつけて、不可視にしましたが。

Tiger と週末

Date
2006-03-30 (Thu)
Category
Tech

前々から調子の悪かった、PowerMac G5 なんですが、ついに先週末再起動不能になりまして、先週末は再起のためにすべての時間を費やしたといっても過言ではありませんでした。。壊れたのは標準搭載 Graphics card の ATI Radeon 9600 Pro(64MB)。加えて前から壊れていた内蔵 Optical drive の Pioneer DVR-106PB も交換することに。

使っているモニタが Apple Studio Display 17 inch なので、ADC(Apple Display Connector)しかついていません。。当初の予定では、今回はとりあえず SuperDrive だけ取り替えて、バックアップをとって、その場を凌ぐつもりが、結局起動しなくなって、Graphics Card も…みたいな流れで。。まぁ急に思い立って買った割にはずいぶん安くついたのでよしとしましょうシクシク。

ついでに Tiger にアップデートしたのはいいけれど…モニタカード入れ替えたところで、バックアップ作業をすればいいものを、なんか下手に ATI の Graphics Card driver を入れたりアップデートしたりしていたら、、、Panther が再起不能な(というか ATI driver tool しか立ち上がらない!)状況に陥り、ここ数年で初めて、データ消失をやらかしました。おかげで、未だに完全復旧にはいたっていません。。。

今回の散財

  • ATI Radeon 9800 256MB
  • Apple DVI-ADC connector
  • Pioneer DVR-110

Cisco VPN と Windows XP Firewall の共存

Date
2006-02-28 (Tue)
Category
Tech

Allowing VPN Access under Windows XP Service Pack 2

詳しくはリンク先に書いてある通りなんですが、日本語情報が見当たらなかったので。

Windows XP SP2 以降に搭載された Firewall 機能を on にすると Cisco VPN の接続に失敗します。そこで exception ルールを一つ追加するだけで、接続は可能になります。

  1. スタートメニュー → コントロールパネル → Windows Firewall
  2. “例外” タブを選んで “ポートを追加” を押す。
  3. サービス名を “Cisco Port”(ホントはなんでもいい)Port 番号に “62515” そして UDP のラジオボタンを選択。
  4. OK を押して設定を終了。

実際は落としているパケットが結構いっぱいあるらしく、接続維持が出来なくなるようですが、そもそも使わずに接続しっぱなしというのは非効率ですし、VPN の為に Firewall を使わないのは馬鹿げているので、よろしいのではないでしょうか。

LED Sensing..

Date
2006-02-26 (Sun)
Category
Tech

http://mrl.nyu.edu/~jhan/ledtouch/index.html

よく出来てるよ。というか ITP な人たちからこう言うのが出てこなくなったのは、もう時代の限界と言うことかもしれないし、現役の彼らに(その表層でも)危機意識が少ないのは残念なことだ。

ITP というのは、技術者であろうとする姿勢に欠けているからね。何が起こっているのか知らないままに、行動を起こせるのはやはり天才だけだと思うなぁ。世代上の Tom Igoe やら Dan Rozin は(その僕が問題とする)ITP を作った人で、彼らの功績は讃えるとしても、新時代に対応できない罪は重い。

新時代というか、今時代が求めているのは、Denis Crowley, Dan Schiffman のような強い Programming background を持って(そう言う意味では最初に挙げた漢クンはその系列だ)いて、それをアートに昇華できる統合能力の持ち主。Denis / Dan 以降に big name を輩出できてないのは、僕らの責任でもあるが。

なんちて。

Illustrator CS Bug?

Date
2006-02-23 (Thu)
Category
Tech

Sub Layer のある Layer を複製しようとすると、かならず落ちるようですが、これは仕様でしょうか??正確には、

  • Layer 内に Sub Layer を作り、その Sub Layer 内に何かしらの Object を作る。
  • Sub Layer を含めた Parent Layer を Layer menu (Layer Floating window の右上はしにある丸を押すと出てくる奴)のレイヤーを複製を押す
  • Crash!

環境

Mac OS X 10.3.9 Adobe Illustrator CS (11.0.1)

と思ったら 11.0.2 ってのがあった。けど、変わらん。というか、このインストールの仕方凄いな…Splash 画面のバージョンも変わらんし。

対処法

Option キー押下のドラッグコピーは可能なので、それでやるのが吉か。

delicate (working title) on delicious

Date
2006-02-21 (Tue)
Category
Tech

Delicious を使った project の片鱗。pre-alpha level ですが、milestone 5 ということで。

b005

上記 b005 をクリックするか、それを bookmark bar に drag'n'drop するかして、何処かのページで実行。そいで、delicious のアカウント名(なんでもいい)を入れる。すると…

Firefox のみ。Safari だと script タグの onload ハンドラが動かない。これって… prototype でカヴァーできる範囲だ、よな。。

眠くて説明書くのしんどいのでまたこんど。わかる人だけ、ということで。

javscript {Obfuscator | compressor | optimizer}

Date
2006-02-20 (Mon)
Category
Tech

ある project で bookmarklet をやっているのだけれども、Prototype.js と Script.aculo.us がどうしても使いたい。でも個別にロードすると、(script.aculo.us は prototype に依存しているので)ロードタイミングでうまく動かなかったりして、結局 library ファイルだけ一個にして、main の logic だけを別に、という形でいこうと思ってる。

しかし(ちょっと前にあった議論だけれども)script.aculo.us の Effects と Dragdrop だけ(勿論 prototype も入れて)でなんと 100k を超えている!!う〜ん。どうしよう。と思って思い付いたのが、Obfuscator(難読化)ツール。結構ありそうなのに探してみると、多くは有償だったりして、すごい驚きました。と言うわけで無償で使えそうなのをいくつか。

Creativyst CSS & JavaScript Compressor (v2.2c)

オンラインツール。一番僕のニーズには合ってる感じ。コメントと余計な空白/改行などを取り除く。関数・変数名の変更は無しで、全ての改行を取り除くわけでなさそう。試したらちゃんと動きました。ちなみに約 20% のスリム化。

Javascript compressor
オンラインツール。これは文字通り Obfuscator なので、関数・変数名 が変更されてしまう。なのでどういう関数なのかは全くわからなくなるし、改行も全て無くなる。。でもおかげで、圧縮率はちょっと高めで、約 35% スリム化に成功。ただ出てきたもので試してないので動くかどうかはわかりませぬ(無責任)。。

jsjam - Compress JavaScript code
ローカルで実行する Perl script。僕の環境(Mac OS X 10.3.9, Perl 5.8.1rc3)では Segmentation Fault で動きませんでした。~/Library/Logs/CrashReporter/perl.crash.log によるとどうやら正規表現周りで落ちてるっぽいけどそんなの追っかけられないのでパスしました。

自分で新しいの書くかな。。考え中。でも昨日 JSAN でだいぶコード見たけど、compressor 通ってる感じだったんだよねぇ。。みんな何使ってんだろ?

FeedBurner への移転方法

Date
2006-02-19 (Sun)
Category
Tech

管理している sudoyuko.com/blogFeedBurner を利用してみました。まだ使い込んでませんけど(Circulation と Hits の違いって何?Unique Vistor と Hit 数の違いかな?)最初に数字じゃなくて表が出てくるのは面白いですね。Google Analystics もそうだけど。

何処かの blog で移転方法の簡単なアイデアを読んだけど、何処で読んだか忘れたので自分用にメモを作ってみました。でもその前に、

FeedBurner の仕組み

を説明しましょう。技術的には、Feedburner も Feed file 収集(aggregator)サーバーアプリケーションの一種。代表的なものとしては Bloglines とか、はてなRSS とか、Google Reader とかでしょうか。ここに挙げた3つが、どれも

Input
→ Output
各種 Feed ファイル
→ Browser 上で確認できるファイル

の変換に対して、Feedburner は

Input
→ Output
各種 Feed ファイル
各種 Feed ファイル (as Browser 上で確認できるファイル)

という変換をしてくれると云う所。Feed → Feed って意味ないじゃん!と思うかもしれないけれども、僕が思うに利点は以下の3点。

  • Feed 転送量の肩代わり
  • Feed 読者の便利機能
  • Feed 発行者の便利機能

まず、僕の様な弱小blog でも、今や atom.xml のリクエストが一番多いという事実。アルファブロガーとかになっちゃうような人はどうか知りませんが、サイト運用者にとって、転送量は ambivalent な存在。いろんな人に読んで欲しいけど、多すぎるとどうなるのか考えたくない。(もちろんコストを肩代わりしてくれるのだから、何かしらの方法で支払いをするわけですが。。)

読者の便利機能としては、Browser 表示用スタイルと有名サーバー型 Feed Aggregator への講読リンクかな。Feedburner の Output に括弧で“as Browser 上で確認できるファイル”と書いたのはこのこと。ブラウザ用の style なんて技術的には対したこと無いですけど、MT のデフォルトでは当たってないし、これはこれで便利な機能だと思います。

発行者の便利機能は、統計だけど、此の部分でお金を払うと、すごい解析/最適化が使えるらしい。しかし僕は払ってないのでよくわかりません(詳しくは “Why Go Pro?”)。

さてそれでは移転方法

戦略としては以下。

<これまで>

sudoyuko.com/blog → 3種Feed ファイル → 読者 Feed リーダー

<これから>

sudoyuko.com/blog → Atom.xml → FeedBurner → 読者 Feed リーダー

ついでにもうFeed リーダーに登録してくれてる人も FeedBurner 経由にしてもらいたいけれども、その辺はサーバー側でなんとかしたい。これは blog.bulknes.net の “RSS の移転” を参考にする。

具体的なやりかた

1. FeedBurner 用の Feed を設定

MovableType ではデフォルトで、3種類の Feed を作っています。テンプレート管理ページ(メイン・メニュー > [Blog の名前] > テンプレート)より行えます。MT 3.2 になっていると、タブがいくつかありますが、その中で インデックス を選んで(おそらくデフォルト)、以下の3つが Feed 用ファイル。

テンプレート名
出力ファイル名
Atom Index
atom.xml
RSS 1.0 Index
index.rdf
RSS 2.0 Index
index.xml

最初にするのは、FeedBurner だけが収集する Feed ファイルを作ります。僕は深く考えずに Atom を形式を配布することにしました。今ある atom.xml には既に購読者がついているでしょうから、違う名前で作り直すように設定。テンプレート管理ページで、テンプレート名をクリックして、そこで出力ファイル名を適当に付ける。

既存の feed ファイル群も FeedBurner にリンクして欲しいので、各ファイルをクリックして、再構築オプションのチェックを外しておく。

2. FeedBurner で 新規 Feed を作成

新しく作った Feed を登録する。簡単すぎるので割愛。

3. 既存ファイルを 301 で FeedBurner へ Redirect

前述の宮川さんの記事によれば、301 で飛ばせば、ちゃんと Feedリーダー側でなんとかしてくれるらしいので、.htaccess ファイルを作成。mod_alias の Redirect ディレクティブ で設定できる。具体的には、


Redirect permanent /blog/index.rdf http://feeds.feedburner.com/YukoTheSmileGrabber
Redirect permanent /blog/index.xml http://feeds.feedburner.com/YukoTheSmileGrabber
Redirect permanent /blog/atom.xml http://feeds.feedburner.com/YukoTheSmileGrabber

となる。

第一引数に permanent と指定すると 301 Moved Permanently となる。

第二引数は元あった Feed ファイル群。ポイントはドキュメントルートからの絶対パスであるということ。

第三引数は Redirect 先。

あ、chmod 644 .htaccess として属性の変更 644(RW-R--R--)も忘れずに!

4. Index template の作り直し

デフォルトでは Main Index に以下の様な3行が、header 内にある筈

<link rel="alternate" type="application/atom+xml" title="Atom" href="<$MTBlogURL$>atom.xml" />
<link rel="alternate" type="application/rss+xml" title="RSS 1.0" href="<$MTBlogURL$>index.rdf" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<$MTBlogURL$>index.xml" />

これらは全部削除して、代わりに

<link rel="alternate" type="application/atom+xml" title="Atom" href="http://feeds.feedburner.com/YukoTheSmileGrabber" />

を挿入しておきます。

Make it draggable!: 何でも動かせるようににする javascript

Date
2006-01-30 (Mon)
Category
Tech

だい〜ぶ前に、JavaScript++かも日記: 【jsGadet】ドラッガブルフロートなDIV を見て、なんか汎用的な lib にならないかなと思って作っていた libDrag 。今回はこれを Bookmarklet から呼び出して、遊んでみました。

Drag!

これをブックマークバーなんかにドラッグしてみてください。他のページに行ってこのブックマークレットを起動すると、web ページ上の特定の部分(ポインタを乗せると赤い枠の出る部分)がマウスでぐりぐり動かせるようになります。また別の部分を動かしたいときは一度 ESC キーを押して下さい。また別の部分が動かせるようになります。

技術的な説明

僕は上の Bookmarklet を bootstrap と呼んでいます。なぜなら、この bookmarklet は launcher.js という他の javascript を呼び出すだけだからです。そして launcher.js はまず libDrag を読み込んで、Document に interaction を設定しています。

ソースを読めばわかると思いますけど、div タグのみを操作対象にしています。

既知の問題点

  • Safari だと ESC キーの操作がうまく行かないなので、Firefox で試してみて下さい。
  • 対象 div 上でクリックして、確認の dialog が出ている時にマウスポインタのフォーカスが離れると、うまく移動可能に出来ない。
  • 複数個の div が入れ子状に存在する場合、一番外側の div しか移動可能に出来ない?
  • 対象 div に border が設定されていた場合、設定を上書きしてしまう。

感想、などはコメントにどうぞ。

Windows IE バグ: &ldquo;Operation aborted&rdquo;

Date
2006-01-24 (Tue)
Category
Tech

仕事で Internet Explorer の画面チェックを行っていた時に見つけたバグです。IE だけは、途中までページ読込んで、以下の様なエラーが出て、ファイルが読み込めない(いわゆる 404 のエラー画面)に切り替わっていました。

operation_aborted.png

最初は理由がさっぱりわからず途方に暮れていたのですが、ググってわかりました。なんと Microsoft の developer コミュニティニュースサイトの Channel9 に Wiki があって、IE のバグとかいっぱい書いてあるのですね。素晴らしい。

Internet Explorer Programming Bugs

上記ページで "Operation aborted" とページ内検索をすると出て来ると思います。

Continue reading

Aparche worm ログ切り出し

Date
2006-01-23 (Mon)
Category
Tech

サーバ管理を業者に委託することになったので、すぐには必要ではないのだけれども。デスクトップを整理していたら出てきたので、一応ここに置いておきます。

W32.HLLW.Gaobot.gen という worm がいます。Windows NT 系に感染してバックドアを開く奴らしいです。FreeBSD で動いている Apache には基本的には関係ないのですが、一回アクセスされると 32KB もの巨大なアクセスログを残してくれる、嬉しくない奴なので、ログからそれだけ切り出したい、というのが今回の目的です。

マンボウの雑文置き場』 という weblog があったのですが、今だけ?はネットから消失しているみたいです。。なので、Wayback Machine のリンクをば。【続2】撃滅!SEARCH /¥x90¥x02¥xb1ほにゃらら

Continue reading

Update log: Chap. 3 --Application setup on Server(FreeBSD)

Date
2005-11-13 (Sun)
Category
MovableType | Tech | Web

Backup がうまく行くことが解ったので、今度は Server 側の準備。前提として cvsup で ports を追いかけてあります。当然ですが。

Continue reading

Update log: Chap. 2 --MySQL backup

Date
2005-11-13 (Sun)
Category
MovableType | Tech | Web | php

大した量ではないけれど、無くなったり、文字化けしたりしたら悲しいので、慎重に行きたい database の backup 。MySQL 自体もアップデートしたいので、これを機に db ファイル群全部再構築しようと言う魂胆。

結構良くある、と思うんだけど、MySQL は良く解ってないけど、MovableType のバックエンドでは動かしてて、そろそろ理解も深めてアップデート、なと人のために…なるかもしれません。

Continue reading

Update log: Chap. 1 --preface and MySQL on Mac OS X

Date
2005-11-13 (Sun)
Category
MovableType | Tech | Web | php

長らくほったらかしだった、本サーバーのアップデートを、久々の3連休にやってみようと思い立ち、非常に苦労した、その log です。完璧自分用備忘録。

まずすべきことを考えた。

MySQL Server アップデート
MySQL Database 再構築
Apache アップデート

この3つが大きな題目。

Continue reading

javascript associative array

Date
2005-11-08 (Tue)
Category
Tech

いつも忘れてしまうので、ここにメモ。javascript の連想配列の使い方。一応退屈な前説もするけれど、今回の僕のポイントとしては、連想配列を作るのに(他の言語にあるような)ショートハンドはなさそうだけれども、他に方法がある、ということ。

あと非プログラマには意味がわからない記述ではありますが、正確な記述と時間節約のためです。あしからず。


初期化
var a = new Array();
要素が空の Array オブジェクトを a という名前で初期化。

var a = new Array( int:num );
要素が num 個あるの Array オブジェクトを a という名前で初期化。ただしこれは a の length プロパティに num が代入されるだけで、各要素が空要素などで初期化されるわけではない。

var a = new Array( Object:e1, Object:e2... );
Constructor の引数に複数の値を指定すると、Array オブジェクトを a という名前で初期化し、引数の数だけ(実際には Arguments オブジェクトの length プロパティを参照)各要素を代入する。0から始まる数値が添字として自動的に割り振られるけれども、実際には添字は string 型である。ここでは参照のため Object 型を引数としたが、実際には primitive 型を複数個列挙することも可能。

連想配列(hash table, associative array)を作るには、以上の初期化を終えた上で、

a[String:key] = Object:value;

とすると key を添字とし、value を値となる。

例)
var a = new Array();
a[0] = "zero";
a["one"] = 1;

ただし、連想配列と似た動作をする Object を作成するのも可能である。たとえば、

var b = {
"zero":"0",
"one":1
};

こうすると、連想配列のようにもメンバ変数のようにも にアクセスできる。

例)

alert(b["zero"]); // "0" と表示。
alert(b.one); // 1 と表示。


思い出して JKL.ParseXMLをみると、[{...}]という記述があるので、javascript ではアクセサで、分岐しているんですね(当たり前ですが)。正確に Array として扱うときには [] をアクセサとして使えと。

How to migrate from Bloglines to Google Reader.

Date
2005-10-08 (Sat)
Category
Tech

クラスメイトのために英語でも書いたので、こっちも。

Here I copied the english version of the last article, which I wrote for the class-list. How to migrate your subscrition from Bloglines to Google Reader.

Continue reading

Google Desktop Search

Date
2005-09-09 (Fri)
Category
Tech

会社ではもちろん Windows なので、Google Desktop Search を使ってる。かなり強力なので、Privacy の懸念があるのは確かだけど、引継ぎも何もなかった、まぁ典型的な職場なので非常に重宝しているのだ。あと最近は tag つけモドキなことも GDS を使って実現。そんな、tips を少し紹介。

Continue reading

Two or Three things I got to know about MySQL and PHP..

Date
2005-09-07 (Wed)
Category
Tech

日本語を使う可能性のある MySQL やら PHP のプログラムはしたことなかったので、ちょっとメモ。

全部あってるはずなんだが…うまくいかない。さてどこが間違っているのやら…

その実は Column を作るときに character set latin1 としていたからでした。正解はもちろん、character set utf8 です。なんとも情けない。

Continue reading

crack the password for Eudora,

Date
2005-09-02 (Fri)
Category
Tech

Note for future me and those who works as an IT Specialist but without takeover initiation... Eudora is saving each account password in Eudora.ini file with Base64 encryption.

You can easily decode Base64, but you may use something like this for your convenience..

void is_instance() {...}

Date
2005-08-30 (Tue)
Category
Tech

according to this comment on the manual site, you can check the whethere the class has been instantiated or not.

0 = false ?

Date
2005-07-31 (Sun)
Category
Tech

PHP では値評価の際、0 を false に自動変換してくれること多々です。それって非常に便利なときもあるんですけど、今回もハマりました…

ある文字列を一文字ずつ substr して、parse する、という関数を作りました。なんと言うかは知りませんが、疑似コードではこんな感じ。

while( $char = substr($strings, 0, 1) ) {
	switch ($char) {
		//do something
	}
}

ところが。PHP では文字列の "0" や int型/float型や の 0(.0) などを false と同値に扱ってしまうというたまに便利な仕様があります。ので上の用な形でコードを書いていると、結構ハマりました…

Between maker and user

Date
2005-07-31 (Sun)
Category
Tech

This article describes some typical mistake of making a "system", based on my experieince.

When I make some system -- the way of organizing letters, legos, clothing... any system is ok, but on this article, I am talking about computer software, which is related organizing --, as a dweller of IT world, I tried to understand and systemize the structure, and make it easier to do it. But as an user, it is totally different, sometimes. I mean, sometimes, the way I accept and do is very different from the abstracted ideal framework.

Now I am working on a CMS, specialized for making gallery site, easily. I've been working with a lot of artists. They want to make some fancy web-site, but some of them are kinda aggressive and if they can, they want to do daily updating task by themselves. Which is very good, in terms of designer. As all of you know, updating may be very boring, and recurring "mac-job", right? Anyway, there are a lot of reasons why I'm making it from the scratch, but that's another story.

So, my gallery CMS stands for the following big three cornerstone. 1) Scale free categorization, 2) web-based management, and 3) backend and frontend is separated and communicating by XML.

As No. 1, I adopt so-called "Folksonomy". Simply saying, the "tag". So, in my system, users can add tag on each content, and visitors can see those contents by tags.

Since there are almost no free implementaions of XML-native databases (if someone knows, please lemme know.. at lease some of them don't attract me a lot in many ways), I use RDB (MySQL) as a backend, and I guess there are not many implementaions of folksonomy on it. You know, put the tag on one table, and make another tag-index table, which describe the association between tags and contents. (if you want, you can make it flat, but I prefer two separated..)

But, but, but. The way of visitors exploring the things, and creators' most intuitive ways of organizing contents are a little bit different from the implementations.. Is it my fault of implementaions?? I dunno.. but I guess my lesson from this pit, is that interface can make it easy and I need more user tests...

input element in Safari,

Date
2005-07-31 (Sun)
Category
Tech

我らが Apple Official ブラウザ、Safari 1.3 以降 では DashBoard 拡張の為、input エレメントで、type="search" というのが使えます。例えば以下。

つまり、safari の Google 検索 ボックスと同じのが、HTML エレメントとして使えると言うことです。Source を見ればわかりますが…

placeholder
規定値
results
保存しておく履歴件数
autosave
履歴の保存名?

でしょうか。Safari が何処に履歴を保存しているのか知りませんが、autosave で associate されているものはどのドメインでも参照できそうな感じがするのは気のせい?

when you're in Rome... (PHP's count() in javascript)

Date
2005-07-18 (Mon)
Category
Tech

PHP equivalent in Javascript シリーズ。PHP の count() ってどうやるの!?…

とかいって、結構必死に探してしまった。もうにちゃんで質問しようと思ったくらい。で、書き込む瞬間手前で思い出した。そうだ、Java 配列の長さは length property だったな、と。

javascript でもそうでした。っていうより、当たり前ですよね…使った覚えあるし。なれと言うのは怖いもので…

type in php

Date
2005-07-18 (Mon)
Category
Tech

PHP では int型 0 と boolean型 false が基本的に同値と見なされる、というか値評価の時には int型 0, String型 の "0", と 空白文字列 は boolean型 false に勝手にキャストされる、というのが正確なんですけど…まぁおかげでバグを埋め込んだり(先日あるライブラリにバグを発見して送ってみたら、返事が返ってきて、メンテナをやって欲しそうな感じだった…)、以下の様なことをするのに、やや美しくないことをしなくては行けない。忘れないためのメモでした。

$position = strpos($contents, "\n");
while ( $position !== false ) {
	array_push( $lines, substr($contents, 0, $position) );
	$contents = substr($contents, $position + 1);
	$position = strpos($contents, "\n");
}

PHP's print_r in javascript

Date
2005-07-12 (Tue)
Category
Tech

I google "javascript print_r" and I found BrandNewBox. It's almost same as what I really wanted. So I changed a little bit, and put it here.

PHP の print_r みたいなこと出来る javascript は無いかなぁと思って、Google してみたら、BrandNewBox を見つけました。惜しい!ので、作り直したのを以下に。

function print_r( theObj, outputObjId ){
	if ( theObj.constructor == Array || theObj.constructor == Object ) {
		var superUlElement = document.createElement("UL");
		for ( var p in theObj ){
			var liElement;
			var text;
			liElement = document.createElement("LI");
			if ( theObj[p].constructor == Array || theObj[p].constructor == Object ) {
				text = document.createTextNode( "[" + p + "] => " + typeof(theObj) );
				liElement.appendChild(text);
				if ( childUlElement = print_r( theObj[p], "__super__" ) ) {
					liElement.appendChild(childUlElement);
				}
			} else {
				text = document.createTextNode( "[" + p + "] => " + theObj[p] );
				liElement.appendChild(text);
			}
			superUlElement.appendChild(liElement);
		}
		if ( outputObjId != "__super__" ) {
			document.getElementById(outputObjId).appendChild(superUlElement);
		} else {
			return superUlElement;
		}
	} else {
		return null;
	}
}

CMS

Date
2005-07-05 (Tue)
Category
Tech

実は今、予算をもらって、簡単な CMS を作っています。Content Management System なんていうと聞こえがいいですが、Blog ツールは CMS ですから、使っている人はあれの管理画面なんかを思い浮かべてもらえれば。

しかし、そう思うと、MovalbeType ってよく出来てるなぁ。数週間で作り上げるってのはちょっと難しいです。はい。

Google Map API!!!

Date
2005-06-29 (Wed)
Category
Tech

Finally!! Google Map API is open to people.. I really wanna do it now, but I'm so tired recently.... yawn..

Mojavi -01

Date
2005-06-23 (Thu)
Category
Tech

深い意味はないのだけれど、php も MVC framework, Mojavi をやってみることにした。

とりあえず本家、と思ったら、ファイルがダウンロードできない。日本のコミュニティサイトによると、ディスク障害が数日前に発生したらしい。Subversion 経由ならダウンできるらしいので、やってみた。

Subversion によるバージョン管理

Mac OS X 10.3.9 には Subversion が入ってなかったので、インストール。以下のパッケージを使用。

Mac OS X Packages - Subversion by Metissian

Terminal で以下のコマンドを打つと、作業中のディレクトリに全てのコードをダウンロードしてくれます。

svn co svn://subversion.mojavi.org/mojavi/branches/2.0.0

現在参考にしてるサイトはここ。
Stack *: 【連載】PHP用MVCフレームワーク Mojavi

error_handling.php

Date
2005-06-14 (Tue)
Category
Tech

ある hosting site で、例として載っていた php tips。もし、レンタルサーバーで、php.ini をいじることが出来なくて、でも trigger_error を使ったデバッグがしたい時にとても有効。

使い方は、このファイルを、デバッグしたいファイルの先頭で include すればいいだけ。標準では errors.csv というファイルが、実行中ファイルと同じフォルダに出来ます。まぁ、本当はその辺もちゃんと制御できたらいいんでしょうけど、trigger_error デバッグできる人なら、このソースをいじって、直せると思います。

以下 code 中、back slash が円マーク変換されている可能性もありますが、その辺も読み替えて下さいね。

Continue reading

Flashout

Date
2005-05-31 (Tue)
Category
Tech

前回の続き。Free で Command Line Compiler を使った、Flash 制作に興味津々なので、いろいろツールなどを作っている途中に、Flashout なる Eclipse プラグインがあるのを発見。

これは何をしてくれるかっツゥと、既にある、AS Development Tool (asdt)MTASC compiler をベースにして、Eclipse 内に統合環境を作ってくれる、という物でした。なので、基本的にそれだけでは動きません。

Towards Open Source Flash Development に従って準備を進めますが、ハマったのは以下。

追記 Allen, Christopher S の投稿によると、Mac OS X では動かないらしい。ので、次のエントリにて、解決策をば。

Continue reading

AppleScript

Date
2005-05-31 (Tue)
Category
Tech

最近 MTACS を調べてます。

flash in my del.icio.us

オプションが長い都合、いちいちコンパイラを呼び出すのはちょっとおっくうだったので AppleScript の droplet でも作ってやれ、と最近は随分動いていたのですが、ドキュメント環境が整っている様な、いない様な AppleScript でした。Developer.apple.com はたくさんドキュメントがある一方、検索しづらい。heuristic method な僕には厳し〜。

さて。ハマった点をいくつか。

Continue reading

GMail trivia,

Date
2005-04-29 (Fri)
Category
Tech

Gmail で raw header をみると、一番最初に、X-Gmail-Received: という欄がある。見た感じ 40digits hexadecimal なので、

1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976

の uniqueness を保証する。フム。


2005年4月29日現在、各メールの Date 欄には

Feb 21, 2005 12:46 PM

のような、Human-friendly な形の文字列が表示されるが、SnapperMailから送られたメールだけは

Date: Mon, 21 Feb 2005 12:16 -0500

という、これは 2005年4月1日以前の表示方法。発信者の宣言した timezone designator がついている。これはアレですね。秒がついてない。だからだ。バグかな?

上記の新形式では発信者の(すべき)宣言 timezone designator と、ログイン時にこっそり入力された受信者の timezone とで変換されて表示されている(と思う)。

Finding the Best Programmer's Font

Date
2005-04-28 (Thu)
Category
Tech

いらいらいらいらいら・・・・

と、コレを翻訳するよん、という印

ideas,

Date
2005-04-16 (Sat)
Category
Tech

そう言えば、今それどころじゃないので放置中のアイデアをまとめておきます。

Continue reading

Date

Date
2005-03-31 (Thu)
Category
Tech

前のエントリ 書いた、時刻の変換に関して、当然 PHP にも便利なライブラリがあって、PEAR/Date.php がそれでした。

しかぁし!Stage の PEAR/Date.php は旧いのか、インストールが間違ってるのかよくわからないけど、西暦年の変換に全く失敗する。もちろん自分でアップデートも出来ないので、しょうがなく手動で local lib に移植。存在するけど使えないっていう状況で、同じ名前の class を include しようとすると、当然 name space の conflict が起こるのね。なので、注意深く検索置換ですよ。Nancy sucks... いや、使わないかもなんだけどね…

っていうか最近締めの言葉はみんな誰かを呪ってる気がする。 Xp

RegEx

Date
2005-03-31 (Thu)
Category
Tech

正規表現わかんな過ぎる!

何がイヤって、見た目にあびる優しくないのがよくないね。scary! やってる事自体は単純なのに。それに POSIX と PCRE とでこんなにもなんというか、表現方法が違うとどうしていいのやら。これこそ Bad know-how の固まりの様な気がするし Good Wrapper 書けると思うけどな。Human-friendly な高級 Regex 言語みたいなのをつくって、出力先を選べるの。もうあったりして。

っていうかやってる事はチョー単純で、そんな事もわかんねぇのかよ、って突っ込まれそうですけど。

Continue reading

29 days left..

Date
2005-03-29 (Tue)
Category
Tech

今日から4週間で、最後の Thesis meeting になる。ま、やってる内容が単調だけに、プログラムが動きそう、っていうみんなの期待はすこし感じた ;)。ので、まぁ頑張んないとね。

今日はずーーーーっと、SQL。PHP のメモリの使い方を考えないと mail を grab してる途中でこける。そりゃあれだけたくさんのオブジェクトをいちいちコピーしてたらそりゃそうもなるよな〜。というわけで、コピーしないで、mysql にぶっ込む事にしました。

で、せっかくだから、MySQL の時間フォーマットに合わせておいた方があとあと便利だろうと思って、調べたらそこでハマる。

基本的に Gmail は

Mon, 28 Mar 2005 02:21:51 -0500

みたいな形で date 情報をくれる。それを MySQL などが使う ISO 8601 (参照:MySQL リファレンスマニュアル :: 6.2.2.2 DATETIME、DATE、TIMESTAMP 型)に載せ換えなきゃいけない。問題は MySQL に Timezone Designator がついてなくて、どこかの時間に統一しなくちゃいけないってことね。っていうか、そうやってマニュアルに書いてあるからでほんとはいけるのかもしれないけど試してない。どっちにしても時間関連の処理は勉強になるかも、とかおもって始めたらハマった。

まず桁上がり/下がりが10進数じゃないでしょ。それで計算した後は桁を2桁にそろえないといけない。ほかにも日は月によって不定でしょ、さらに閏年まである!日の変換エンジンまで行って、閏年を思い付いた時にめんどくさすぎる、と思ってなんかいい関数はないかと探してみた。というわけで、MySQL の subtime と、addtime を見つけた。(参照:MySQL リファレンスマニュアル :: 6.3.4 日付と時刻関数

select subtime("2000-03-01 00:00:00", "00:00:10");

MySQL の関数の picky っぷりにはイライラしたが(だって subtime と ( の間に white space があると動かねぇんだもん。って当たり前?)、それより!これってどこから使えんのかな〜って思ったら MySQL 4.1.1 ですって。まぁ結構最近だよね〜。stage はどうよ、って Distrib 3.23.** …絶句。ま、もしかしたら PHP にも似た様な関数はあるだろうからそっち使うかもだけど…

それにしても、もう stage には我慢ならん。絶対 dedicated server 買ってやる。。。

Gmail basic HTML view

Date
2005-03-28 (Mon)
Category
Tech

gmail_basic_HTML_view

Gmail now offers Basic HTML view... which, I guess, may causes a little problem or good issue on my current going issue.. anyway. See waht happens..

34 days left,

Date
2005-03-24 (Thu)
Category
Tech

Tech memo of these days working. Following story contains (a)How to call XML-RPC of MovableType Blog in PHP, (b)How libgmailer (Gmail access lib by PHP) distinguishes Conv-id and Msg-id...

As I touch in the following, I use Edd Dumbill's XML-RPC for PHP lib. But I suddenly come up with Pear. And I found it.. Oh my goodness.. Anyway..

Continue reading

gmail-lite memo

Date
2005-03-17 (Thu)
Category
Tech

http://gmail-lite.sourceforge.net/docs.html

GM_STANDARD と GM_CONVERSATION だと取得できる値が違うのね。で、CONVERSATION を fetchBox するには message の conversation_id が必要。それは GM_STANDARD で一旦 fetchBox してそれからわかるのだ。

これがわかるまでちょっと時間掛り過ぎでした…

Continue reading

Return to Page Top