技術 Archive

Cloud Foundry Advent Calendar 2011開催中です


最近ちょくちょく寄稿しているU1TBにて、Cloud FoundryのAdvent Calendarを開催しています。

Cloud Foundry Advent Calendar 2011やります!

自分も参加しています。最初の記事は12/2に公開予定です。
ちなみにこのブログではなく、U1TBに展開する予定です。

Advent Calendarに参加希望の方はこちらからどうぞ!
Cloud Foundry jp Advent Calendar 2011

英数字が混在しているかどうか、正規表現で判定する

パスワードに英数字がきちんと混在してるかどうかチェックいれてねー。記号は英字と同じ扱いということでよろしく! とか言われたのでどうやって実現するか迷った。

いろいろ調べた結果、ここのエントリーが大変参考になった。
8文字以上で英小文字、英大文字、数字が混在する文字列の判定

http://blogs.wankuma.com/ognac/archive/2008/09/04/155433.aspx

で、結果書いたのがこんなの
/^(?=.*\d)(?=.*[!-/:-~])[!-~]{1,}$/

今のところ意図したとおりに動いてくれている様子。
自分の力だけだと絶対書けなかっただろうなあ・・・。

OpenSocial勉強会やります

*Update 開催日時決定しました

mixi platformの公開で日本でもにわかに盛り上がり始めてる(ような気がする)OpenSocial。
この流れに乗らないはもったいない・・・!

ということで、OpenSocial勉強会なんてのをやろうと思います。

自分の思いつきで開く感じなので、詳しい内容はあまりまだ決まってないのですが・・・
というか自分自身OpenSocialは未経験という駄目っぷりではありますが、皆さんと一緒に学んで行きたいと思ってます。

参加希望者はこちらで日程の登録をお願いします。
http://www.tatamilab.jp/~toshi_i/schedule/List?h=00d4fec19bc9336f37d0ec3499abfd49

参加希望者の日程を見る限り、5/6日が一番集まりがよさそうなので5/6日に行います!
時間は10:00スタート。
academyhills 1階入り口付近に集合です。

日程はフィックスしましたが、参加者はまだまだ募集中なので気軽にお越しください!

VIMA入れてみた

ESXiの管理コンソールを提供するVIMAなるものがあると知ったので、早速Virtual Applianceで入れてみた。
http://www.vmware.com/support/developer/vima/index.html

中身はRHELでした。ていうことは、適当なRPMパッケージ持ってくればRubyとかPHPも動かせる?
ESXiを管理するための様々なコマンドが用意されてるんですが、何が何だかさっぱり分らない。
VMWareのサイトにリファレンスが用意されているので、それを参照しながら弄っていくしかなさそう。

TwitterとLive Messengerのステータス完全連携を実現する

u-ichiが書け書けと言ってきたので書いておく。
もともとは今年の頭にmixiの日記に書いていたものです。
なので、今はもっと良いやり方があるかもしれませんし、スクリプト変更方法も変わっちゃってるかもしれません。今でも通じるかどうかは未確認ですが、2008年3月の段階ではうまくいっていたやり方です。

以下そのまま転記。
//////////////////////////////////////////////////////
twitterからWindows Live Messengerのステータスをいじる方法

http://d.hatena.ne.jp/myrmecoleon/20070522/1179845918

上のリンク先で解説されているrss2psm Nutzを使ってTwitterのRSSからタイトルを拾ってきてメッセンジャーのステータス欄に表示させたんだけど、それとは逆にTwitPSMという、ステータス欄を変更すると同じ内容をTwitterにポストするスクリプトがある。

じゃあそれを組み合わせたら相互連携が実現できるんじゃね?とかうーいちが言うので試してみたら、カオスなことに。

rss2psm NutsがRSSを拾ってきてステータス欄を更新

更新した瞬間にTwitPSMが変更を検知してTwitterにポスト

rss2psmがポストを拾ってきてステータス欄に反映

その瞬間またTwitPSMが変更検知してTwitterにポスト

・・・という恐ろしい無限ループに入ることが判明。

実験中に何回か無限ループにいれてしまってTwitterのポストがカオスになってしまったw

そこで、MPScriptのドキュメントとにらめっこしてスクリプト改造に着手。

http://mpscripts.net/docs/

まず最初に、相互連携とはちょっと関係ないけれどrss2psmの欠点解消に着手。
rss2psmのせいじゃないけども、rssのtitleをそのまま反映してるので
「jacopen: 発言」
のように、自分のTwitterネームが入ってしまう。でも自分の発言しか拾わせてないのに、わざわざネームを表示する必要はないのでこれを除去したい。

解決するには2つの方法しかない。
1.Titleから名前を除去したRSSを新たに生成
2.RSSを読ませてからスクリプト側で名前部分を除去

1はいろいろ応用が利くんだけど、どうもエレガントじゃない。あとめんどい
2のほうがシンプルなので2のほうを実装。

スクリプトの中からtitleを扱っている変数を見つけ出して、それにjavascriptのsubstr()メソッドを使って文字列から指定文字数を除去。jacopen: を除去するなら、substr(8)になる。たったこれだけ。ね、簡単でしょう?

if ( readTitle.length > 0 ) postTitle = readTitle[0].firstChild.nodeValue.substr(8);

こんな感じ。

次に無限ループの解消に着手。
TwitPSMはMPScriptのOnEvent_MyPsmChangeイベントを使って動いている様子。
なので、やり方としては

1.rss2psmがステータス変更するときに、一時的にイベントハンドラを削除する
2.特定の条件のときだけポストを見送る

の2つが思いつく。
1はremoveEventListenerで消せばいいけど、その後addEventListenerをして本当に動くのかちょっと不安だった。ので、もっとシンプルに2のほうを実装。

rss2psmはTitleを読んだ時に、最後に “by twitter”の文字を挿入する(変更可能だけど。)ので、変更された文字列にby twitterがマッチしたときはtwitterにpostしないという処理を追加。

具体的には

function OnEvent_MyPsmChange(new_psm){
Debug.Trace(new_psm);
Twitter.send(new_psm);
}

function OnEvent_MyPsmChange(new_psm){
if (!new_psm.match(/by\stwitter/)){
Debug.Trace(new_psm);
Twitter.send(new_psm);
}
}

にしただけ。ね、簡単でしょう?

まあそんなこんなで相互連携が実現しましたとさ。

MindTouch Dekiのインストールは簡単だが罠があった

文句なしとまで大絶賛されている、MindTouchのDeki。
MOONGIFT: >> 文句なしのWiki「MindTouch Deki Wiki」

以前VMWare版を触ったことがあるんだけど、確かにこれはスゴイ。
1つのパッケージとしてほとんど完成されている感じで、不足をまったく感じない。
が、内部にmonoなどを利用していることもあって、インストールが若干煩雑な印象を持っていたため、自分のサーバーに入れるのは避けていた。

しかし、ちょっと都合でdekiを使おうかなと思うところがあったので、今回ESXi上で動くUbuntu8.0.4にインストールしてみた。

Ubuntuへのインストール方法は、MindTouchのサイトに紹介されているので、それに沿ってやれば問題なく動く。実際にやってみると、apt-getだけでOKで、思った以上に簡単にセットアップできたので驚き。以前はもっと面倒だった記憶があるんだけどなあ。

ただ一つだけ罠があった。

Dekiの日本語解説ページを読むと、上にInstall Guideへのリンクがあることに気づくと思う。が、このリンク先、実は有償のEnterprise版のインストール方法なのだ。
それに気づかずインストールしてしまうと、インストール後の画面で「30日Free版」のような表示がでて、「あれ?」と思うことになる。

無償でインストールできる、Community版のInstall Guideはこっちなので要注意。
Official MindTouch Deki Community Edition Installation Guides

Ubuntuの場合、Enterprise版とCommunity版のインストール方法の違いは、

#apt-get install dekiwiki

#apt-get install deki-enterprise

に変わるくらいなんですけどね。
ただ、間違えてしまうとremoveした後に再度installになるので、2度手間になってしまう。
インストールする際には要注意。

まあ、私はばっちり間違えたからこうやってエントリーにしてるんですけどね!

CuteFlowでメーリングリストのリストが消えない件

タイトル通りですが、またわかりにくいタイトルですねw
CuteFlowで回覧→新規の回覧 と進むと、回覧を投稿する画面に飛びます。
そこで利用するメーリングリストを選択するのですが、そこのリストがちょっとおかしい。
テストのために作って、削除したはずのメーリングリストもリストに表示されるという現象が起こっていました。あれれ。

なので、該当のソースを見てみます。

pages/selectmailinglist.php の80行目付近

if (mysql_select_db($DATABASE_DB, $nConnection))
{
  //--- read the values of the user
  $strQuery = "SELECT * FROM cf_mailinglist WHERE bISEdited <> '1' ORDER BY strName ASC";
  $nResult = mysql_query($strQuery, $nConnection);

このクエリの部分、WHERE bISEdited <> ’1′  ってなってますね。
しかしテーブルを見てみると、削除されたメーリングリストはdDeletedが1になってます。
削除されたものを非表示にするなら、このdDeletedが1のものを外すクエリにしないといけない。bISEditedが何のための項目なのかはまだ分かっていないので、ひとまず上記のコードを以下のように変更。

if (mysql_select_db($DATABASE_DB, $nConnection))
{
  //--- read the values of the user
  //$strQuery = "SELECT * FROM cf_mailinglist WHERE bISEdited <> '1' ORDER BY strName ASC";
  $strQuery = "SELECT * FROM cf_mailinglist WHERE bDeleted = '0' ORDER BY strName ASC";
  $nResult = mysql_query($strQuery, $nConnection);

これで削除されたメーリングリストが表示されることは無くなりました。

ホーム > 技術

Search
Feeds
Meta

Return to page top