メイン | 2010年11 月 »

31 posts from 2010年10 月

2010/10/02

TwitTagタグ検出調整

地味ーに自分用Twitter Browserとして利用しているTwitTagsですが、

年始に少しいじってみました。
取得daemon
・URLをTag検出から除外
・@hogehoge といったUserIDを除外
表示App
・Cloud生成時に2文字以内の英字を破棄
・頻出する不要タグの除外機能(手メンテ)
・アイコン表示
Twitter Stream APIを利用している中で特徴的な以下の点があります。
■Friends Time Lineをまねるために
Stream APIではFriends time lineはありません。
Filter指定でトラックする単語ないし、user_idを指定して使うことになります。
ということで、Friends time lineのようにするには、Friends Listを取得して、
そのuser_idでフィルタリングすることになります。
■上記がもたらす影響
単純な話なんですが、
@hogehoge おはー
みたいな、Followしていない人からFollowしている人へのreplyを拾ってしまいます。
これが、友達間でTwitter利用しているだけならいいのですが、
Follow対象者がちょー有名人だったとき、
タイムラインがそのユーザーへのreplyでうまります。
通常の表示はもういっぱいクライアントアプリあるからそっちにお任せしますが、
TwitTagsの場合、Followerの多い人のuser_idがタグとして上位にきてしまってました。
欲しいのはそうじゃなくて、会話にひそんでいる単語なわけです。
ということで今回いじってみました。
アイコンも出したかったのをほったらかしていたんですが、
これを機に取得。
意外と便利なのですよ。
friends time lineには出てこない話題も拾えるので、
たとえば@miyagawaへのPlack関連の質問なんかも追えたりします。
Twitterでの情報収集ってまだまだ未来がある気がします。
たのしー

 

CodeIgniterとKohana

PHPでOpenSocialなアプリを作ろうと思いまして。

ということでどのように作るか。
Web Application Frameworkの選定で新しいWAF調べたので記録
PHP軽量WAF
http://php.tekmemo.net/?p=899
↑とかを見てもらえればわかるように、けっこう出てます。
どれがベストかなんてわからんですよね。
去年の初春に、同様にPHP用WAFを調べたんですが、
バージョンも進化し、ドキュメントも進化し、
はたまた分家したプロジェクトもあり。
なかなか変わったようです。
そんな中で個人的な感想
・ちいたん
名前が。。
昨年見たときはドキュメントがまだ少なかったのもあり、
あまり心揺さぶられなかったのですが、ずいぶん美味しそうなフレームワークになったようです。
ただ、甚だ個人的な趣味であれなんですが、requireを各クラス内で書くのはイヤでして。。
というか名前が。。。
で不採用でした。
ただ、GAE/J版が分家されているようで、
こちらはPHPのソース資源を生かしたクラウド開発が出来そうなので、
トラックしておきたいです。
いいフレームワークなのは間違いないよね。
・CodeIgniter
昨年はこれを採用しました。
公式サイトがかっこいい。というのも理由の一つでした。
それはそれとして、フルスタックのフレームワークなので、
機能は十分です。
機能が多いので重くなるのではないかとか思われつつ、
コアの設計が小さく、ほとんどの機能がオプションモジュールなので、
ロードは早かったです。Cakeとの比較ベンチマークどっかてみたな。。数倍出てた。
昨年こちらを採用した理由は、他のフレームワークに比べてドキュメントが充実していたからです。
ドキュメントが充実しているかどうかは、採用条件として重視しますよね。
これ読んどいて。であらかた説明済むし。
・Kohana
今回これにとっても心奪われました。
CodeIgniterからの分家とのことで。
CodeIgniterは既知の課題として
・デフォルトだとセッションデータをCookieのvalueに持つ
という不安極まりない作りをしています。
さすがにプロダクション環境でそんなことしたら、いくら暗号化していても不安で夜も眠れないので、
カスタマイズしたりとちょくちょくめんどくさい実装をしていました。
この点を、一般的なセッションの構造に直していただいたようでして。
また、CodeIgniterがphp4互換だったのをphp5専用にしています。
後方互換自体は別にいいんだけど、
古いコード体系や、無駄なバリデーションがコアに入ってしまうので、
php4の足切り自体が更なる軽量化につながるかなーと思っています。
という感じで、Kohana使い始めてみました。

 

Wicket試してみたい

ということで、読んどくメモ。

 

http://sourceforge.jp/projects/wicket-ja/wiki/Maven2%E3%81%A7QuickStart

http://true-teck.net/blog/post/2009/07/29/Google-App-Engine-for-Javae381a6Wickete38292e4bdbfe381a3e3819fWebe382a2e38395e383aae38292e585ace9968be38197e381a6e381bfe3828b.aspx

ついでに本買った。

http://www.amazon.co.jp/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E5%BE%B9%E5%BA%95%E6%B4%BB%E7%94%A8-Wicket%E3%81%AB%E3%82%88%E3%82%8BWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-%E7%9F%A2%E9%87%8E-%E5%8B%89/dp/4798022217/ref=sr_1_1?ie=UTF8&qid=1248866994&sr=8-1

 

Catalyst APIってやつにはまってみる

あとで読んどくリスト。

http://d.hatena.ne.jp/foosin/20090326/1238077646
http://blog.livedoor.jp/sasata299/archives/51210958.html
http://d.hatena.ne.jp/foosin/20090317/1237308976
http://d.hatena.ne.jp/foosin/20090323/1237815364
http://blog.hide-k.net/archives/2007/10/catalystmodelad.php

 

備忘録:Oracle CSV出力

よくわすれるのでメモ。

コピペ用。

 

■固定長でのCSV出力

set echo off
set linesize 1000
set pagesize 0
set trimspool on
set feedback off
set colsep ','
spool c:\temp\emp.csv
select * from emp;
E01,D01,名字1  ,名前1  , 10
E02,D01,名字2  ,名前2  , 50
E03,D02,名字3  ,名前3  , 100
spool off

 

■可変長でのCSV出力

set echo off
set linesize 1000
set pagesize 0
spool c:\temp\emp.csv
select emp_id ||','|| dept_id ||','|| first_name ||','|| last_name ||','||salary from emp;
E01,D01,名字1,名前1,10
E02,D01,名字2,名前2,50
E03,D02,名字3,名前3,100
spool off

めんどくさいですね

 

SAStrutsとDolteng

SAStrutsでアプリを書く機会がございましたので雑感を。


・Seasar2
Dolteng様の効果によりあまり意識することなくアプリがかけましたね。
SAStrursの雛形にマージされているというか。。
HOT Deployはきもちよかったですね。
PHPとかとかわならい感覚で開発できました。

・Dolteng
Seasar2のフレームワーク用Eclipseプラグイン
これのおかげでなーんも気にすることなくアプリ雛形が生成されてきました。
TEST用ソースツリーまで自動生成いただいてしまい、
らくちんきわまりない。

・SAStruts
Strutsの現代版ラッパーということのようですが、
快適すぎてはまりそうです。
綺麗にフルスタックなので、とくに悩むことなくガリガリ作っていけるかと。
Seasar2が各コンポーネントの呼び込みをやってくれるので、
オレオレライブラリとの結合も簡単。
ビジネスロジックをPojoで書きすすめられるので、
フレームワーク依存した脳みそにならないで済みそうです。

・S2JDBC
流れるようなIFのORマッパーということですね。
流れるように検索出来ます。更新できます。
ぐらいしかいいようがないですね。簡単快適。

・S2Dxo
今回、
DBのEntity <-> Dto <-> Json
というフローのAPIアプリだったので、
Entity <-> Dto変換で利用。
これまた何を定義しないでも綺麗に変換してくれるもので。
感謝感激ですね。

・JSONIC
Seasar2とは関係ないですが、素晴らしいライブラリでした。
Dto <-> Json
の変換で利用していたのですが、
変換時に変換先のクラスを指定するだけで、多重のオブジェクトまで、しっかり変換。
プロパティがListであればそれもしっかり詰めてくれます。
2環境のJavaでJsonを橋渡しにやりとりをするアプリだったんですが、
気持ちイイくらいさくさくデータの出し入れができました。
しかもJsonだから中身デバッグしやすい。
感謝。

とまぁ、なかなか最新の構成でJava開発をしてみました。
Javaのめんどくさいイメージはほぼほぼ払拭することができるのではないかなーとか、
Javaってまだまだいけてんじゃね?
という感想を持てましたね。

プロダクション環境へのデプロイはPHPとかよりは手間かかりますが、
これは更新頻度によっては問題にならないですかね。

次はSlim3によるAppEngineが楽しみですね。
遊びたい。

 

SnowLeopard + PHP5.3でのMySQLリモート接続

MacPortでインストールしたPHP5.3では、

mysqlnd(php5.3のmysql native client)が適用される。
しかし、CentOSなどのyumでインストールできるMySQLサーバーとの相性がよろしくない。
PHP Warning:  mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using old authentication
というエラーが現れ、接続することができません。
mysqlndを利用しないよう再コンパイルが必要となる。
2010/07/30 追記
portのvariants指定によりインストールを選べました。
sudo port install php5-mysql +mysql5
ただ、portのPHPを自分で再コンパイルしたい時もあると思うので、
以下記述は残します。
php -iで出てくるport版のcomplileオプションを参照し、
php5.3.2を再コンパイルした。
この際、MySQLのライブラリ指定で癖があったのでメモ。
--with-mysql=/opt/local/include/mysql5/mysql
で試してみたのだが、ライブラリ類とヘッダーの相対パスがずれているため、
必要なファイルが見つからないと申している。
> cd /tmp
> mkdir php5mysql5
> ln -s /opt/local/lib/mysql5 php5mysql5/lib
> ln -s /opt/local/include/mysql5 php5mysql5/include
>
> Then use --with-mysql=/tmp/php5mysql5 in your php configure line  
> instead. Then delete /tmp/php5mysql5 when you're done.
上記のように、tmpにライブラリ類のシンボリックリンクを作成し、コンパイルをおこなうことで成功。
mysqlndめんどい。

 

PHP Xdebug

利用したのでインストールメモ

■サーバー側

pecl install xdebug
mv /usr/local/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so
/usr/local/lib/php/extensions/
echo "extension=xdebug.so" >> /usr/local/lib/php.ini 

 
vi php.ini
xdebug.profiler_enable_trigger = 1
xdebug.profiler_enable = On;


■クライアント(プロファイル結果を見るマシン)

Mac OSXの場合、
sudo port install kcachegrind 


起動方法
$ kcachegrind [プロファイルした結果]
出てくるもの
サーバー応答がなんかのボトルネックで死ぬ直前のスナップショットが取れた。
※↑のはちがうよ
ボトルネックの分別は完了したので、あとはチューニングです。
きっついねー

 

Synergyc設定インストールめも

MacProの再設定しているんですが、
毎度毎度めんどくさいsynergycの設定をキャプっときます。
まずは、コマンドラインでの起動について。
以下 -f をつけるとフロントで起動してくれます。

 

screen synergy command
 



os 10.5.8 と synergy 1.3.1だったんですが、
なぜかデーモンモードで起動しないので
/dev/nullに捨てるようにして起動。
自動起動用にapplescript

screen synergy applescript2
 



screen synergy applescript



 

 

VoxからMixiへ投稿するためのPlagger設定

Voxの皆様や、Hatenaから自動投稿死たりしている方のモノをぱくってますが

まあ需要あるんだろう ということで記載

 

 

global:
 assets_path: /usr/local/share/assets/
 timezone: Asia/Tokyo
 log:
  level: debug

 

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://taikimen.vox.com/library/posts/atom-full.xml

  - module: Filter::Reverse

  - module: Filter::Rule
    rule:
      module: Deduped
      path: /home/shimazu/.vox2mixi.db

#エントリ内の画像を取得して最初の3枚を投稿
  - module: Filter::FindEnclosures
  - module: Filter::FetchEnclosure
    config:
      dir: /tmp

#エントリ内の<a> <img>を変換
  - module: Filter::Regexp
    config:
      regexp: s//([m:133]$1)/g
  - module: Filter::Regexp
    config:
      regexp: s/(.*?)<\/a>/link:$1/g
  - module: Filter::Regexp
    config:
      regexp: s/.*enclosure-asset-name.*\n//g
  - module: Filter::TinyURL

  - module: Publish::MixiDiary
    config:
      "username": "[email protected]"
      "password": "hogehoge"

 

 

 

 

 

 

 

画像の投稿は失敗してますね。
デバッグする気も起きません。

元々はTitle
のように、<a hreg="url">Title</a>の書式が対象のようだが、
個人的には<a hreg="url">url</a>とするので、TinyURLプラグイン追加

というかPluginつくった。
http://github.com/taikimen/Plagger-Plugin-Filter-TinyURL

Vox上での改行は詰まってMixiに表示されるので、
結局投稿した後にすこし調整したりしてます。

でも、本文マルチポストとかより楽なので重宝してます。