« 2007年9月 | メイン | 2007年11月 »

2007年10月 アーカイブ

2007年10月31日

rosy.js ログウィンドウを色んなページに表示させるBookmarklet

まだ開発中ですが(今週末0.3.0をリリースする予定)。

JavaScript を実行するコマンド入力欄とログコンソールを表示させるBookmarklet です。

start rosy log window

このBookmarkletでは、rosy.js と rosy_bookmarklet.js をロードしていて、rosy_bookmarklet.js の中で rosy.js の関数とかを呼んでいるのですが、普通にロードしただけだと、rosy.js がページにロードされる前にrosy_bookmarklet.jsのコードが実行されてしまい、エラーになってしまいます。

そこをどうやって解決しようかと考えて書いたのが↓このコード(rosy_bookmarklet.js)。

function loadRosyLogWindow(){
	try{
	if(RosyLog && Rosy){
		rlog = new RosyLog();
		rlog.use = true;
		rlog.d('start rosy log window.');
		rlog.d('Rosy.version : ' + Rosy.Version);
		document.getElementById('rosyLogConsoleInput').focus();
		clearInterval(rosyStartTimer);
	}
	}catch(e){
		//
	}
}
var rosyStartTimer;
if(!rosyStartTimer) rosyStartTimer = setInterval(loadRosyLogWindow,500);
var rlog;

rosyStartTimer が定義されていないときだけ setInterval で 0.5秒ごとにloadRosyLogWindow()を実行するようにしてます。 で、loadRosyLogWindow() の中では、rosy.js の中で定義されている RosyLog と Rosy がロードされている(if の条件句に入れたときに true が返ってくる)ときだけ、ログを出力して、rosyStartTimer をclearInterval してやります。

こういう解決法ってどうなんだろ。

2007年10月30日

ステートレスとステートフル

ステートレス、ステートフルについて分かりやすく解説してくれているページです。

yohei-y:weblog: ステートレスとは何か

セッションを利用したアプリケーションでも、セッションを共有することで、スケーラビリティを確保することができるやり方もあります。

この説明に併せて考えると、


  • 客: こんにちは

  • 店員: いらっしゃいませ。○○バーガーへようこそ

  • 客: (会員証を提示して)ハンバーガーセットをお願いします

  • 店員: (会員番号とハンバーガセットをオーダ票に書き込む)サイドメニューは何になさいますか?

  • 客: (会員証を提示して)ポテトで

  • 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出し、ポテトを追加)ドリンクは何になさいますか?

  • 客: (会員証を提示して)ジンジャーエールで

  • 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出し、ジンジャエールを追加)+50円でドリンクをLサイズにできますがいかがですか?

  • 客: (会員証を提示して)Mでいいです

  • 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出す)以上でよろしいですか?

  • 客: (会員証を提示して)はい

  • 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出す)かしこまりました


こんな感じになるのかな。

会員番号がセッションIDのイメージですかね。

セッションを共有するってことは、このオーダ票を店員間で共有するってことで。

確かに作業が繁雑(というか忙しい)感じになりますね。

セッションの共有と言えば、Java で、implements Serializable にしてないオブジェクトをセッションで共有しようとして、エラーが発生して共有できない、なんてことがたまーにあります。基本中の基本ですが、経験の浅いプログラマの方だと知らない人も結構いるみたいで。

僕もエンジニアになって2年目の頃、これにはまったことがあります。

開発環境では動くのに、本番環境では動かない!みたいな。挙げ句、ハードウェアベンダに問い合わせる直前までいった記憶が・・・。恥ずかしいなぁ。

2007年10月29日

rosy.js の ログコンソールに実行用の入力欄を付けてみようかと

最近仕事で JavaScript のコードを書いていて、FireFox だと firebug 超使える!便利!なんだけど、IEだとしょんぼり。

FireFox で上手く動いていたモノが、IEだとエラーを出したり。

しかも常にエラーじゃなくて、なんかの条件でぽろっと左下のステータス欄に黄色い三角形が出てくるわけです。

じゃあIEでも firebug のようにコンソールでJavaScriptを実行できるようにしたらええじゃん、と。

まあ、地道にアドレス欄からjavascript:hogehogeと入力すれば良いんですが、せっかくLogクラスを作っているんでこれに実装しちゃおうかなと。

イメージとしては、bookmarklet を実行してログウィンドウを開き、後は表示された入力欄でガシガシとJavaScriptを実行する、みたいな。

超お試しで作ってみたのが↓このbookmarklet。

start rosy log window


まだまだデバッグが足りない、というか読み込み時にstackのエラーが出ちゃうことが多い。

rosy.js本体のscriptタグをbodyにappendして、内容がコンパイルされないうちに、ウィンドウをロードする関数が動いちゃうんだよなぁ。

しょうがなしに今はtry catch で囲んで、catch句の中で同じ関数を呼び出すという荒技をしてます。このせいでstack overflow が発生するんですよねぇ。

※setInterval で関数が定義されるまで実行を繰り返し行うことで上記問題は対応しました。

世のbookmarkletはどうやってるんだろ。

明日はソースを読もう。そうしよう。

2007年10月28日

S2JDBC

S2JDBCについて言及されているひがさんのブログエントリ。

2007-10-26 - ひがやすを blog

仕事でJava を使いつつも Seaser2 まわりについては割とノーマークだったんだけど(便利で良いモノだと言うことは知っている)、このS2JDBC ってちょっとおもしろそう。

何でもJavaで書こうとすればきっとはまると思いますよ。でも、S2JDBCはそうじゃない。

・from()
・join()
・where()
・orderBy()
・limit()
・offset()

でかける範囲に限定して自動でSQLを生成し、それ以外は、明示的にSQLを書けというスタイルです。

そうなんだよなー。

結局のところ、DBへのアクセスって、生成されるSQLをそこまで意識する必要のない簡単なアクセスか、いくつものテーブルが結合した複雑なSQL の2種類がメインで、中間の適度に複雑なSQLってのはあまりない気がします(僕がそういうのを書かないだけかもしれないけど。いや、そうだな)。

外部にSQLを出せるってことで、O/Rマッパーとしては個人的にiBATISを推してきたけど、S2JDBCに手を出しちゃおうかな。

Rails熱もそろそろ落ち着いてきた頃だし、とりあえず知っているJavaの地盤を固めておこうかなと思ったり。

2007年10月27日

rosy.js 0.2.0 リリース

先日公開したrosy.js の version 0.2.0 をリリースしました。

といっても新しい機能を追加したわけじゃなく。

String の prototype にいくつか関数を追加していたのですが、わざわざString のprototype を汚してまで追加する機能ではなかったので、Rosy.(関数名)として機能を移動しました。

rosy.js

2007年10月26日

ゴミ箱の活用法 - オトナ動画はゴミ箱で管理

3分LifeHacking:ごみ箱に関連する4つのTips - ITmedia Biz.ID

ITmedia Biz にてゴミ箱の使い方のTipsが紹介されていたので、僕も独自に編み出したゴミ箱の活用法を紹介することにします。

皆さん、オトナ動画楽しんでますか?

オトナ動画はインターネットの醍醐味の一つ。ご自分のPCにたんまりと保存されている方も多いのではないでしょうか。

独身なら動画も貯めたい放題、見放題なわけですが、結婚・同棲してしまうと、パートナーの目を盗みつつってことになります。

多くの雑誌で、「オトナ動画の隠し方」的な手法が紹介され、外付けHDDや隠しフォルダ、全く関係ないファイル名を付けるなんてメソッドが紹介されているので、それだけ需要があるってことなんでしょう。

ってことで、本題。

もはやタイトルで言いたいことは言い尽くしてますが、「ゴミ箱メソッド」のやり方とメリットを紹介しておきます。


やり方

オトナ動画(無料サンプルなどの~数10M程度のファイル)を楽しんだ後は、使用済みティッシュよろしくゴミ箱にぽいっと捨てちゃいましょう。

また別の日に見たくなったら、ゴミ箱の中から探し出し、デスクトップなんかに復活させて、使用後またゴミ箱にぽいっと。


メリット

・自分が気に入っている動画が一目瞭然

ゴミ箱の中を「削除した日付」でソートしておけば、よく見ているお気に入りの動画は常に上の方に登場します。逆に、一度見たら十分なファイルはゴミ箱の下の方にたまっていき、やがて消えていくでしょう。その昔流行った「『超』整理法」の整理方法に似てますね。

・意外と見つかりにくい

ゴミ箱の中はユーザ毎に共有されませんから、家でユーザを分けて使っている人は隠しフォルダとかにする必要なく不可視なフォルダに置くことになります。
ユーザを分けていないって人も、意外とゴミ箱の中って見ないものなので、見つかる確率はかなり低いのではと思っています。


いかがでしょうか、ゴミ箱メソッド。

ただし、数100M~数Gの大容量オトナ動画の管理には適さないので、使い分けると良いのではと思っています。

2007-10-30 追記
GIGAZINEで、↓こんな記事がUPされていたのでトラバ打ってみました。
これが必死な男のポルノファイルの隠し方だ! - GIGAZINE

2007年10月25日

rosy.js 0.1.0 リリース。ログクラス作ってみました。

rosy.jsの0.1.0をリリースしました。

rosy.js

0.1.0に盛り込んだのは以下の内容です。

Rosy.setHTMLStyles
 :HTMLElement オブジェクトと、スタイルのオブジェクトを渡して、Elementにセットする関数
Rosy.mappingObj
Rosy.mappingObjArray
 :オブジェクトのキー値を変える関数
String.prototype.toNumberFormat
 :文字列の数値3桁区切り表現をreturn する関数
String.prototype.padZero
 :ゼロ詰めした文字列をreturn する関数
String.prototype.padLeftZero
 :左ゼロ詰めした文字列をreturn する関数
String.prototype.padRightZero
 :右ゼロ詰めした文字列をreturn する関数
Log
 :ログをページ上に書き出すクラス

これまでに紹介していなかったLogクラスについて。

↓デモページはこちら。
rosy.js sample page --- extends string

最初にロガーを生成して、それを利用するとページ上にログウィンドウが表示されて内容が書き出されるって感じです。

var log = new Log();
log.use = true;//ここをfalse にすると書き出されません。

使うときは、

log.debug('ログです。');

みたいな感じ。
カンマ区切りでつっこんでもOKです。

log.debug('ログです。', hoge ,'こんな感じ')

オブジェクトを入れると、プロパティのキーと値を書き出してくれます。(緑色)

エラーオブジェクトを入れると、赤字で書き出してくれます。

あと、console.log()も同時に実行しているので、FireFox で firebug 使っている人も使えます。

FFとIE両方でデバッグするときに便利かなぁと思ったり。

d という名前の関数がいて debug と同じ動きをするので、短く書こうと思ったら、

var l = new Log();
l.use = true;
l.d('ログです。');

とl.d() でログを書くことができます。

思いつきで実装しているので、エラーハンドリングとか甘甘だったり、ログウィンドウと言いつつドラッグ&ドロップできなかったりしますが、とりあえず公開。

突っ込みなどお待ちしております。

2007年10月24日

rosy.js に mappinObj と mappingObjArray を追加

rosy.js に mappinObj と mappingObjArray を追加しました。

mappingObj は、第1引数にObjectを渡し、第2引数にキーのマッピングのObjectを渡して、キーの値を変えるという関数です。

↓使い方はこんな感じ。

var objIn = {"ido":"50","keido":"20"};
var mappingObj = {"ido":"lat","keido":"lng"};
var objOut = Rosy.mappingObj(objIn,mappingObj);
// objOut = {"lat":"50","lng":"20"}


例えばGoogle Map 上に、様々なサイトから取得した情報を表示したいとき、色んなwebサービスから帰ってくるJSONのキーの値がバラバラなときに使えるんじゃないかと。

mappingObjArray はObjectの配列に対して同様の操作を行うというものです。

なんとなく思いつきで実装。

Google Code --- rosy.js

2007年10月23日

ECMAScript 第4版

ECMAScript 第4版の最終ドラフトが公開されたようです。

ECMAScript 第4版の最終ドラフトが公開 - JavaScriptデベロッパは注目を | エンタープライズ | マイコミジャーナル

ECMAScript 第4版 最終ドラフト

リンク先は英語なので、時間を取ってじっくり読まないと・・・。

ECMAScript 4th Editionは将来的にそのままJavaScriptに採用されることになるとみられる。

確か次世代JavaScriptはprototypeベースじゃなくなるんですよね。

せっかく覚えてきたのに、その辺の仕様が変わってしまうのは残念ですが、新しく追加される機能は結構リッチなものが多いです。

3rd Editionと互換性を保ちながらも言語機能(クラス、インタフェース、名前空間、パッケージ、プログラムユニット、アノテーション、静的型チェックと検証)、スクリプティング(構造型、ダック型、型定義、マルチメソッド)、データ型構築子(パラメータ型、アクセッサメソッド、メタレベルメソッド)、制御アブストラクション、イントロスペクションなどに及ぶ、大幅な機能追加/強化が実施されている。

これはこれで面白そう。

でも、今のJavaScriptのお手軽さはなくなりそうな雰囲気ですね。あの自由な感じが好きなのになぁ。

2007年10月22日

チルダ

古くからのサービスだと、ホームページスペースやブログのアドレスに、~ (チルダ)が含まれていることがあります。

パソコンにそれほど詳しくない人にとって、これがかなりのくせ者。

まず、どうやって入力するか分からない。(正解は Shift + 「へ」)

でもって、人に聞くにも言葉で説明しにくい。(「ちょろっとしたやつ」「にょろ」など)

というわけで、サービスの中でチルダを入力する必要があるものは、僕の中でユーザビリティが劣る設計という認識になっています。

2007年10月21日

Yahoo! ニュースサイトにコメント欄設置

ヤフー、ニュースサイトにコメント欄を設置ツꀀインターネット-最新ニュース:IT-PLUS

そういや、そんな機能なかったなぁと思いつつ。

ニュースを軸にコメントを付けるのって2chぽい気がしないでもないけど、どうなんだろ。

コメント欄がどんな感じで盛り上がるのか予想もつかないなぁ。

コメントを投稿できるのは、ヤフーのID登録会員。文字数は400字以内で、何度でも書き込める。同社は1日に約2500本の記事を提供しており、コメントがつけられるのは当初、このうち6割ほどになる。

すべての記事にコメントが付けられるわけじゃなさそうですね。

芸能系のニュースは、コメント付けられる方なのか、付けられない方なのか。ゴシップニュースはコメント欄が荒れそうだね。

2007年10月20日

div の style "overflow":"auto" で隠れているHTMLElementを表示させる

div の style に "overflow":"auto" を指定すると、div に指定された大きさを超えたHTML Element は隠され、スクロールバーが表示されます。

その中身を表示したいときは、document.getElementById などを使って、表示させたいHTMLElement を取得し、scrollIntoView() メソッドを使うとうまく表示してくれます。

2007年10月19日

難読サービスの読み方

3分LifeHacking:難読サービスを読んでみる - ITmedia Biz.ID

ITmedia Biz で読み方が難しいサービスの読み方が紹介されていました。

記事で紹介されているもので、知らなかったのは「SaaS」は「さーす」だってこと。「さーず」じゃないんですね。

個人的に知りたいのは、「iBATIS」と「JSONP」の読み方。

「iBTATIS」は「あいばてぃす」って呼んでいるんですが、どうやら「いーばてぃす」が正しいんじゃないかって人もいたり。

あと「JSONP」は「じぇいそんぴー」だと勝手に思っているのですが、発音がマヌケなので、実は他にかっこええ呼び方があるんじゃないかと思ってたりします。

2007年10月18日

Google Docs × iPhone

Google Docs が iPhone に対応したそうです。

Google Docsにモバイル版登場、iPhoneではプレゼンテーションの閲覧も | エンタープライズ | マイコミジャーナル

といっても日本人の大部分には関係のない話ですね。

ただ、「独自のインターフェース」は気になるところ。プレゼンテーションもスマートに見ることができるみたいですし。

営業の方とかは、これもって客先に行ったらそれだけで注目を浴びるんじゃないでしょうか。

「これすごいねー」と、売り込んだものではなく、iPhone 自体に興味が移りそうですが。

iTouch とかにも対応しているのかな。

2007年10月17日

Re: rosy.js の toNumberFormat を修正

rosy.js の toNumberFormat を修正」のコメントでtomさんからコメントいただいたので、仕様を検討。

×小数点が2つ以上あるときにエラーにならない(たとえばNaN=Not_a_Numberを返すべき) ⇒入力の「文字列」を「数値」として解釈し、カンマ区切りの「文字列」として返す以上、数値として解釈するところでエラーになるパターンがあるはず。いまはできるだけエラーを返さないつもりみたいだけど(文字列があったら無視している)、もう少し厳しい解釈をするほうがライブラリとしての使い勝手が良いのでは?

確かに。

今はかなりゆるーい解釈をしていて、途中に数字以外の文字が入っていても無視してくれちゃうわけです。

こうしたのは理由があって、例えば数値を入力する必要があるテキストフォームの値に定期的にこの関数を実行してやれば、3桁区切りの数値が常に表示されるようなテキストフォームができるんじゃないかなぁと思ったため。

でもまあ確かに、ライブラリとして出すのであれば、ご指摘の通りだと思うので修正します。

isNumber() とか isNumberFormat() とかいう関数を実装してみようかな。


×http://rosy.googlecode.com/svn/trunk/rosy/sample/extends_string.htmlをFireFoxで開くとなぜかソースが表示される

これ、何でですかね・・・。htmlの書き方がまずいのかな。うーん。


>美しくないなぁ。
ソースコードとして美しくないと思う点を。
\d」と「[0-9]」って等価では? ひとつのソースコードに混在させる意味はありますか?
あとaとかbとか配列の名前が可読性を損なってるのかも。一文字変数・関数って非常にGoogleっぽいけど。

これは確かに。正規表現書き慣れていないので、ぶれちゃうんですねぇ。統一します。

でもって、1文字変数・関数は、内部で利用するものだし、こういうところで文字数を減らしておこうという目論見です。

仕事では1文字変数・関数はNGとしているので、こういうところで試しに使ってみようかと。

確かに可読性を損なっちゃいますけどね。

2007年10月16日

Gmail の容量が3Gに

先日Gmailの大幅な容量追加がありました。

利用できる容量が3Gに。

自分のアカウントでログインすると「現在 3427 MB 中 182 MB (5 %) を使用しています。」と書かれていました。実質3.5Gくらいありますね。

グーグル、「Gmail」と「Google Apps」でストレージを増加へ:ニュース - CNET Japan

Microsoftは、11日夜に制限を1GBまでに増加した「Windows Live SkyDrive」サービスを提供しており、Yahooのやや問題のある「Briefcase」サービスでは、Yahoo登録ユーザーのみと共有できるわずか25MBの共有ストレージを提供している(ちなみにこのサイズは、Gmailの添付ファイルサイズの制限にほぼ等しい)。

こうやって見ると、Yahooはこの手のサービスに対して一歩引いている感じがします。MSはGoogle に対抗しなければいけないから頑張っている感じでしょうか。


この新しく追加されたストレージにおいて1つ欠けているものは、ファイルをダンプする場所、つまり長い間待ちわびている「GDrive」である。

そういえばGDriveなんて噂がありましたね。

ただ、最近課金によるストレージの容量追加サービスが始まったので、無料で今より遙かに大規模なストレージが得られるのはしばらく先になりそうですね。

2007年10月15日

document.write()に関するあれこれ

↑これを読んでいて知った document.write()に関する小ネタ。

document.write() と document.writeln() があって、writeln() の方は、引数で渡された文字列 + 改行が出力される。pre タグとかの中身を書き出したいときに便利。

document.write() した後は、document.close() しないと通信中になってしまう。ただ、IE では再現せず。FireFox ではいけました。

document.write() は、ページ表示中に実行しなければ、ページの内容をクリアしてから上書きしてしまう。

document.write() の引数は複数渡せるので、 document.write( 'あなたの名前は' + name + 'です')と + で結合しなくても、document.write('あなたの名前は',name,'です') と書ける。

なんか最初に使ったメソッドの割に知らないこと多かったなぁ。

2007年10月14日

「Adobe AIR完全解説」を購入

↓このとき欲しがっていた「Adobe AIR完全解説」を買ってみました。

Adobe AIR完全解説 (でぃべろっぱーず・さいど)

AS3について書かれた書籍がまだまだ少ないので、この手の本は貴重です。

ちょっと残念だったのが、Flex Builder 3 での開発中心に書かれていたこと。Flex SDK 3でのことも書かれていましたが、量的に少々不満かな。

まあその辺は、最近自分でEclipse を使ってAIR アプリを作る環境を構築したので、そのうち公開します。

さ、12月末までに何か作れるかな・・・。

2007年10月13日

Google アラート で YouTube の新着動画をチェック!

指定したキーワードでインターネットを検索し、新規のトピックを連絡してくれる Google アラートを使って、YouTubeの動画を定期的にチェックする方法です。

↓こんな用途に役立ちます。
・お気に入りのアーティストの動画やPVをチェックしたいとき。
・好きな芸人のコント動画をチェックしたいとき。

やり方は超簡単です。

まずはGoogle アカウントにログイン後、Google アラートのページへ。

ページ右側に入力欄があるので、↓こんな感じで設定します。

GoogleAlertYouTube.jpg

「検索用語」に「site:www.youtube.com (チェックしたいアーティストや芸人名)」を入力、「タイプ」を「ウェブ」、「頻度」を「一日一回」に設定し、「メールアドレス」に通知して欲しいメールアドレスを入力。

これで「アラートの作成」をクリックすればOK。

一日待っていると、検索した結果がメールで通知されます。

応用として、「検索用語」に「site:amazon.co.jp (好きな作家名)」を指定すると、作家の新刊チェッカーとしても使えます。

2007年10月12日

自動改札機起動せず

12日朝、めざましテレビで「一部を除いて首都圏の自動改札が利用できない事態になっている」というニュースを知りました。

その後、家を出てJRの駅へ行くと、確かに改札は素通り状態。

職業柄、このシステム管理しているところは今頃大変だろうなぁと、他人事ながらどきどきしてしまいました。

原因はプログラム上の不具合のようですね。

260万人の朝の足を直撃 プログラムに潜んだ“魔物” - ITmedia News

調べたところ、ネガデータに「ある長さ、ある件数」といった条件が重なった時、データが読み込めなくなるプログラム不具合が判定部側にあることが判明。このため、判定部はエラーを返しながらネガデータ読み込みのリトライをひたすら繰り返す状態に陥り、起動処理が止まった。

ある長さ、ある件数ってのが怖い。どういうプログラムだったんだろ。

プログラマが仕込んだ人為的な不具合(というかサイバーテロか)でなければ良いけど。


ネガデータにダミーを挟むなどして条件を変えれば問題なく読み込めることは分かっているため、当面、始発前にネガデータをシミュレーション環境でテストした上で各改札機に流すようにする。このため、13日から通常通りの起動が可能になるとしている。プログラム改修は13日中にも行う。

始発前のチェック、もちろん担当者がついてやることになっているんでしょうね。

深夜早朝作業で大変だとは思いますが、社会インフラを支える大切なシステムなので、担当者の方々頑張ってください。

2007年10月11日

プログラミング工程を軽視するなかれ

Life is beautiful: ソフトウェアの仕様書は料理のレシピに似ている

同意する部分多し。

「プライムベンダー」と呼ばれる「上流コンサルタント」たちがインドや中国にも仕事を発注できることを理由に、激しく値切り始めたために、今やわずか一人月30万円というケースもあるという。

これと似たような話を僕も経験したことがあって、SIerの知人に「僕は社内に実装を請け負う部門なりベンチャー子会社を作りたいです。」みたいなことを言ったら、「やったらいいじゃん。その代わりお前単価30万だぞ」みたいなことを言われたことあります。

正直、はぁって感じでした。もの作りの工程がだいぶ軽視されているなぁと。

「自分でプログラムを書かない上流のエンジニアが詳細設計書を作り、下流のエンジニアがコーディングをする」という工程そのものが、根本的に間違っているとしか思えないのだ。」

やっぱりね、設計する人もプログラムを書けるべきですよ。

上記引用のような構図はどう考えても間違っているし、気持ち悪いです。

2007年10月10日

javascript の高速化 by amachang

一行で IE の JavaScript を高速化する方法 - IT戦記

はてぶでもうすぐ1000ブクマ。すげーなー。

やり方は簡単で、↓こんなのをJavaScriptの先頭にくっつけるだけ。

/*@cc_on var doc = document;eval('var document = doc');@*/

ただし、例でも10万回ループして0.5秒という高速化なので、体感的には変わらないかもしれないですね。

それよりも気になったのが、/*@cc_on @*/ の記法。

調べてみると、同じように気になって調べていた人がいました。

Clouder::Blogger: @cc_on ってなに?

条件付きコンパイルですか。知らなかったなぁ。

僕的にはこちらの方がへぇ度が上でした。

2007年10月 9日

社内SNS導入企業に対するアンケート結果

社内SNSは「会社の風通しを良くする」 - 社内SNS導入企業アンケート | 経営 | マイコミジャーナル

社内SNS という言葉も、割と一般的になってきた気がします。そんな中の、社内SNS利用企業に対するアンケートの結果。

アンケート結果によると、社内SNSは比較的大規模な組織で有効活用されており、導入により社内のコミュニケーションが円滑になる傾向にあることがわかったという。

前から書いていますが、うちの会社の中にも倉貫さんが作ったSNSがあります。

最近僕は社外常駐でほとんどアクセスできていないのですが、帰社日などにアクセスすると、その都度新しい人が参加&書込をしていて、徐々に広まっている感じはします。

ただ、じゃあ会社全体のコミュニケーションが円滑になったかというと、まだそこまでじゃなくて。

頭の固いおじさん連中は頑なに書き込んだりしようとしないし、若手でもブログとか書き慣れていない人は、自分の考えを書き残すことに対して抵抗があるようです。

個人的に感じている一番の効用は、おそらくSNSがない状態だったら、話もしなかったような違う部署の人とコミュニケーションを取れるようになったことだと思っています。「へー、こんなおもしろいこと考えている人いたんだ」「頭いい人いるなぁ」と、刺激になることもしばしば。

ROMでもそういう書込を見て刺激になるんでしょうが、やはりユーザとして同じ土俵に立ってこそ得られるものもあります。

サイト管理や質疑応答、場の盛り上げ役としてファシリテーター(推進役)を置いている企業は全体の55%に上ることから、ファシリテーターの存在はサイト運営上、重要視される傾向だということがわかる。

確かに、「良いコミュニティ」には「良い先導役」が不可欠だと思います。

話題を振ったり、不適切な発言を諫めたり、もめ事が起こりそうだったら事前に鎮火したり。

僕自身、コミュニティの運営とかは全くの苦手なので、この辺の役割はなかなか向かないんだよなぁ。

いわゆるブログとかメールで自分の意見を書いたり、人の意見にコメントしたりしたことない人が多い会社は、その辺のリテラシを上げるところから目標にした方が良いかも。

あと、こういうコミュニケーションツール(メッセンジャーとかもそうかな)を導入した場合は、対面でのコミュニケーションとの使い分けのセンスも重要になってくるはず。

その辺のバランスの取り方が、実は一番難しいところ何じゃないかと最近思ってます。

2007年10月 8日

rosy.js の toNumberFormat を修正

暇つぶしに JavaScript のライブラリを作ってみることにしました。 」にて、最初に手を付けたString クラスの拡張メソッド toNumberFormat に、コメント欄で会社の先輩tomさんが「負の数と小数にも対応してみてください」とリクエストしてくださったので、対応してみました。

rosy.js sample page --- extends string

<ソース>

さくっと綺麗に書けると思うんだけど、なんだかこってりしたソースになっちゃいました。美しくないなぁ。

<関連エントリ>

暇つぶしに JavaScript のライブラリを作ってみることにしました。 (でぃべろっぱーず・さいど)

2007年10月 7日

Ability Mix Communicator FlyA フライア

以前 mash up award 2nd の受賞者懇親会でご一緒させていただいた船木さんがおもしろいサービスをリリースされてました。

FlyA.jpなるサービスをリリースしました - ホリデープログラミング入門 - Yahoo!ブログ

Ability Mix Communicator【FlyA】フライア

映像(静止画、動画)や音楽を組み合わせて、コンテンツを作成し、共有するというようなサイトです。

提供されている素材を利用して自分でコンテンツを作って公開できるというのは、かなり魅力的。また、絵が上手い人や、音作りが好きな人は、自分が提供した素材で、自分が考えもしなかったような作品が生まれるのを目にすることができるのではないでしょうか。

ということで、僕も試しにサンプル的なモノを作ってみました。


remixdetailFlyA


適当に音楽素材を組み合わせただけですが、なんか楽しかったです。

↓「はじめての方へ」のページにはこんなサンプルがありました。


remixdetailFlyA


Web上で映像・音楽コンテンツが作成できて、すぐに発信できるって、ほんと面白い世の中になってきました。

2007年10月 6日

MashupChallenge

MashupChallenge - quarterly mashup contest

MashupChallenge というMashup のコンテストが開催されています。

期間は、2007/10/1から年末までの3ヶ月間。

商品はWii とか iPod touch が用意されているようですが、一番の商品は「栄誉」だそうです。

おもしろいのはそのコンテストの仕組み。

参加登録をすると、コンテスト対象のAPIからランダムで5つのAPIが指定されるので、その中から少なくとも2つのAPIを利用してmashup サービスを作るのです。

僕も早速参加登録をしてみました。

指定されたのは、Twitter、YouTube、del.icio.us、JotSpot、BBCの5つ。

Twitter 、YouTube 、del.icio.us と3つもメジャーなサービスが入っているのが、ラッキーなのかどうか。

しばらくネタを考えることにします。

2007年10月 5日

AIR ベータ2 公開

そろそろ AIR アプリの開発に手を出してみようかなと思ってます。

先日、AIR のベータ2が公開されたので、どんなもんなのかと思ったら↓下記ページに変更点が詳しく紹介されていました。


Adobe AIRで作るデスクトップアプリケーション:第10回 Adobe AIR ベータ2公開|gihyo.jp

  • ByteArray.inflate()とByteArray.deflate()の両メソッドが無くなり,代わりにByteArray.compress()とByteArray.uncompress()メソッドで引数を指定する形式になりました。引数にはCompressionAlgorithm.DEFLATEまたはCompressionAlgorithm.ZLIBを渡します。
  • TransferableDataクラスとClipboardManagerクラスが無くなり,代わりにClipboardクラスを使うことになりました。クリップボードの読み書きを行う際は,ClipboardManager.accessClipboard()ではなくClipboard.generalClipboardというシングルトンオブジェクトを使います。
  • DragManager.isDraggingはメソッドからプロパティに変更になりました。
  • Doorクラスが無くなり,LoaderInfoクラスのDoor関連APIの名前が変更されました。
    • LoaderInfo.parentDoor → LoaderInfo.parentSandboxBridge
    • LoaderInfo.childDoor → LoaderInfo.childSandboxBridge
  • ・File APIのメソッド名がいくつか変更されました。
    • File.listDirectories() → File.getDirectoryListing()
    • File.listDirectoriesAsync() → File.getDirectoryListingAsync()
    • File.listRootDirectories() → File.getRootDirectories()
    • File.relativize() → File.getRelativePath()
    • File.resolve() → File.resolvePath()
  • NativeWindowコンストラクタのvisibleパラメータが無くなりました。NativeWindowオブジェクトを生成してからvisibleプロパティを設定することになります。
  • NativeWindowCapabiltiesクラスが無くなり,各プロパティはNativeWindowクラスに移動しました。
    • NativeWindowCapabilities.hasWindowIcon → NativeWindow.supportsIcon
    • NativeWindowCapabilities.hasMenu → NativeWindow.supportsMenu
    • NativeWindowCapabilities.windowMinSize → NativeWindow.systemMinSize
    • NativeWindowCapabilities.windowMaxSize → NativeWindow.systemMaxSize
  • Stage.windowプロパティはStage.nativeWindowプロパティに変更されました。
  • System.pause(),System.resume(),System.gc()の各メソッドは,デバッグモードでのみ有効になりました。ADLでの動作確認中はデバッグモードになります(-nodebugオプションを指定しない場合)。
  • System.exit()メソッドはAIRでは使えなくなりました。代わりにShell.exit()メソッドを使います。
  • Beta 1までは相対URLはapp-resource:/ディレクトリを基準としていましたが,Beta 2からはSWF/HTMLコンテンツが基準となります。

結構大幅に変わってますね。

特に、File クラス周りとNativeWindow クラス周り。

デスクトップアプリケーションとして、これまでFlash でなかった辺りの仕様がまだ固まっていない感じなのかなぁ。

まあ、勉強の意味でサンプルアプリでも作ってみようかな。

2007年10月 4日

SPAM using Google I'm feeling lucky!

404 Blog Not Found:Google - I'm feeling TOO lucky!

これ、何がまずいかって、SPAMのリダイレクトに使えちゃうんですね。例えば先ほどうちに着た例では「性欲 ペット」でやってました。しかも、btnI=の後ろは任意なので、referer解析でSPAMMERは効果測定まで出来ちゃう。


そうだよなー。

キーワードでダイレクトにGoogleが最適とするページへ飛べるから、wordarium.net で使っていたんだけど、SPAM として利用できるのは問題だよね。

そもそも I'm feeling lucky って、検索ワードにビタッとくるGoogle オススメのサイトにダイレクトにとばされるわけで、ボタンを押す人はGoogle を信頼してないと押せないだろうし、Google もとばしても問題ないサイトにしかとばしちゃいけないようにすべきじゃないかと思う。

要はSPAM メールフィルタよろしくSPAM サイトフィルタの精度をもっと上げれば良いんじゃないかなと。

Google ブログ検索の検索結果を見ていると、実現するのはかなり難しそうだけど。

2007年10月 3日

次世代 Flash

Adobe MAX 楽しそうです。

次世代 Flash : メディアテクノロジーラボ ブログ

上記リンク先で紹介されている「C/C++ が Flash 上で動く。「C/C++ on Flash」C言語の資産がFlashでも活用できるようになる。描画性能も向上。リンク先2個目のビデオの 5:00 は必見!Quake III を Flash に移植!オーマイガー。 」は↓この映像ですね。

C/C++ のコードから ActionScript3へ簡単にコンバートできるイメージなのかな。

SecondLife とかオンラインゲームとか、Flash 上でできるようになったら便利ですね。インストールの必要ないし、どこでもできるし。

Flash はHD規格の映像にも対応するみたいですし(Flash Player 9が「H.264」をサポートへ - YouTubeもHD化? | パソコン | マイコミジャーナル)、ますますおもしろくなりそうですね。

まあただ、HD化に関しては、ネットワークとか転送量とかその辺の問題をクリアしないといけないような気もしますが。

2007年10月 2日

Adobe のファイル共有サービス Share

Adobe labs で ファイル共有サービスが公開されてました。

CodeZine:Adobeらしいクールなファイル共有サービス「Share」公開(アドビ)

Adobe Labs - Share


アップロードできるファイルは1G。

音楽ファイルや動画ファイルはアップロードできないようです。

早速ログインしてみました。

やっぱFlash はかっこいいっす。Ajax のライブラリもだいぶこなれてきていますが、こういうのを見ちゃうとかすんじゃうなぁ。

ちゃんとAPI が公開されていて、

・ドキュメントのアップロード、ダウンロード ( Upload and download documents )
・ドキュメントをURLで共有 ( Share documents as URLs )
・ドキュメントに権限を設定 ( Set permissions on documents )
・ドキュメントのサムネイルを取得 ( Retrieve document thumbnails )
・ドキュメントのプレビューを取得 ( Retrieve Flash-based document previews 9 )

↑こんなことができるそうです。

Share:API - Adobe Labs

share 単体でも使えそうですが、APIを使っておもしろいサービスが作れそうな気がします。

2007年10月 1日

暇つぶしに JavaScript のライブラリを作ってみることにしました。

Mash up award 3rd 、iGoogle ガジェットコンテスト、gihyo.jpへの連載、社内でのプレゼン、社外でのプレゼン、と今年の夏は結構忙しくしていたのですが、どれも一通り終わり、ちょっと一息モード。

というか、冬の時代が到来しそう。

ということで、こんなときはコードでも書こうと思い、JavaScriptのライブラリを作ってみることにしました。

と言っても、prototype.js や Doja 様々に対抗しようなんざこれっぽっちも思ってなく。Google Code にプロジェクトを作って、たまーに、じみーに更新していこうかなと。

思い立ったが吉日なので、早速プロジェクト作りました。

rosy - Google Code

名前はrosyにしました。

意味は特にありません。妻に「好きな花の名前は?」と聞いたら、「薔薇」と答えてくれたからです。

最初に作ったのは、String オブジェクトを拡張して、3桁区切りの文字列を返してくれるメソッドです。

rosy.js sample page --- extends string


探せばどこにでもありそうなメソッドですが、まあその辺のことは気にせず、自分の勉強のために気楽に作っていこうかなと思ってます。