0

作るということ

字幕.inというサイト自体はそんなに興味がないけど、これを一人で作って会社にしてるというところにすごく魅力を感じる。

あの「字幕.in」が会社になった–ネット上の字幕サービスをBtoBで提供

僕がやりたいのはまさにこれ。

一人もしくは少人数でWEBアプリを作って、広告収入で食べていく。
たまに受託開発やB向けにカスタマイズして販売したりして。

少しのお金と少しの自由な時間を得るために。

やったもん価値ではないけど、この手のサイトはまさにアイデア勝負。
この次点で儲けなくてOK。
今はこの段階(グループ?)に上がることが大事。

ネットのニュースで取り上げられて、アルファギークにいじられる。
まずは、このステージ。

今運営中のサイトは、中にはアイデア勝負のサイトもあるけど大半はただ稼ぐだけのサイト。

後々、今のサイトの収益で自由な時間を作り、アイデア勝負のサイトをバンバン立ち上げるのが予定にしてたけど、ふと気付くと利益先行のサイトばかり手を入れている。

奮い立て、自分。

まずは形にしよう。
アイデア勝負のサイトをこの夏中に立ち上げよう。

0

IE6のCSSバグ

CSSでIE6だけ表示がずれるのはよくある話です。
ボックスの計算式がおかしいというのがもっとも一般的です。

今日ははまりまくったのは別のバグ。
ボックスを並べると中にあるテキストがどんどん左によってくるというもの。
みた感じ、タグのとじ忘れかと思うような症状ですが、これは立派なIE6固有のバグです。
そういえばブログか本で読んだことはあったけど、自分が実際にこのバグにぶちあたるとは思いませんでした。
というのも、このエラーがでる引き金は下記の3つがそろった時。

-「divの中にdiv」など、ブロック要素を2重にする
– 外側のブロック要素に、border-leftとpadding-bottomを定義する
– これらが繰り返される

するとpadding-bottomの値の分だけ左によっていきます。

padding-bottom:5px;

なら一つ目は問題ないけど2つ目は左に5pxずれます。
3つ目は左に10pxずれます。
ぱっと見、タグのとじ忘れかなと思うこのエラーは発見するまでが大変だった。
結局0pxならエラーがでないので0pxに書き換えて一件落着。
PHPやMTでHTMLを生成する際ループでボックスを繰り返しつくる場合は気をつけときましょう。

0

pear:DBのautoExecuteの罠

pear:DBでautoExecuteでmySQLの関数を使いたい時以下の点に注意。
てか、mySQLの関数はほぼ使えない?
下記のように’time’の値はNOW()ってしたいところですが、これではPHPの未知の関数として扱われて、当然の如くエラーとなります。
“”で囲っても同じ。今度は文字列として扱われます。
一番無難な回避方法として、PHPのdate関数で整形していれてます。

$table_name = 'hoge';
$fields_values = array(
'num' => NULL,
'com' => $com,
'time' => date("Y-m-d H:i:s")
);
$res = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_INSERT);
if (PEAR::isError($res)) {
die($res->getMessage());
}

0

prototype.js

PHPやPerlなどのサーバーサイドのプログラムばかりやってきた僕としては、Javascriptはどうしてもとっつきにくい存在でした。
フォーム関係でJavascriptつかったりAjax系のライブラリ試すくらいで決して得意といえず、おもしろさも感じませんでした。

ただ、最近Javascriptに本腰いれてみるとかなり楽しい。
PHPでDB接続ができた、Perlでファイルの読み書きができた、など一線を越えると言語の習得が一気に加速しおもしろみがでてくるものですが、ことJavascriptに関して言えばその一線はDOM操作かと思ってます。

そんかんやでprototype.jsでDOMを超簡単に扱う時のメモ。
$(‘hoge’)がdocument.getElementById() 関数へのショートカットの役割をしてくれます。

function test1() {
var element = $('div1');
// "内容"が出力される
alert(element.innerHTML);
// "div1"が出力される
alert(element.id);
// "classvalue"が出力される
alert(element.class);
// "新しい内容"が置き換わる
this.element.innerHTML = "新しい内容";
}
<div id="div1" class="classvalue" onclick="test1();">内容</div>

0

MODIPHI

元フィードパスの小川氏プロデュースのフィードサービスがローンチされました。

「ウェブは星、フィードは光」–小川浩プロデュースのRSS生成サービス「MODIPHI」 – CNET Japan

正直、氏に関してはいいイメージがないが、このサービスはおもしろそうと思った。
なんか俺もつくっちゃおうかなーと思えるサービス。

確かに、フィードで事が完結してしませば、それでよしとする人も多いだろう。
フィードの全文配信云々が一時騒がれたけど、このサービスではそんなことはどうでもいいはず。
フィードは更新通知とかフィードは単なるメタデータとかいわれるけど、別にそれ以外の使い方が便利であればそれでいいはず。

ビジネスとしてはメルマガみたいになるのかな?
でも、それじゃあメルマガでいいんじゃね、メーラーがフィードリーダーにかわっただけ、とかいわれるからその辺の差別化は重要ですね。

まだまだフィードの世界にはチャンスが眠ってそう。

0

pear::DB

PHPでデータベースを扱う時はpear:DBをよく使います。
速度を考えるとPHPピュアのを使うのがいい、pear:DBの後継のMDB2がいいといいますが、普段使いとしてはまあこれでいいかなと思ってます。

ただ前から気になってたことが一つ。

Bのデータをすべて取得する際getAllや配列で一行づつ出したりするんですが、getAllでプレースホルダーを使う場合だと、第二引数が配列じゃないから、シンタックスエラーがでます。

$sql = ” SELECT * FROM table_name WHERE id = ?”; // SQL
$result = $db->getAll( $sql, 3); // クエリ送信

でも、こっちはエラーが出ず。
ふ~…

$sql = ” SELECT * FROM table_name WHERE id = ?”; // SQL
$result = $db->query( $sql, 3); // クエリ送信

前者のものを動かそうと思えば一つでもarray(3)とする必要があります。

よく似た二つのコードだけど、気をつけないとだめですね。

0

GMAIL

他人にはかなりどうでもいいけど僕が使ってツール&サービスを紹介。
べたなのばっかりだけど。

まずはgmail
最近ようやく使いだしたって感じです。
googleはすごいと思うけど、あの人間味のなさが嫌で正直検索以外は使ってなかった。カレンダーはたまにつかうけど。
gmailに関してはPOPで外部のメールを受信できる機能を使ってみたかったので、軽い気持ちで試してみた。
あのインタフェースとやはりフォルダの概念がないというのはとっつきにくったけど、何が凄いって<b>スパムフィルター</b>。ものすごい精度。
POPで5アカウントくらいのメールを受信してるんだけど、それらは全部サイト上で公開してるやつ(info@hoge.comみたい)なんでスパムが多い多い。20スパムがきたら1普通のメールがくるといった感じです。
なんで、いるもの抽出するラベルとかよりいらないものを破棄するスパムフィルターを重要視してたわけなんです。
今まではBecky!のBkASPilってのをつかってました。
これはこれでまあまあの精度なんだけどやはり誤配が多い。
フォルダわけの判定する前にスパムの判定をしてごみ箱に入れてしまうためフォルダわけがうまく機能しない。
それをごみ箱から漁ってたら結局スパムフィルターの意味もないし。

と、言いつつも現在はこの2つを併用中です。
受信したメールのインポート・エクスポートがあればいいだけどなー。
この数年間に受信してきたやつもgmailで検索できたらどれだけ楽だろうなー。
いつかできるのかなー。

0

試すということ

WEBでは新しいサービスが日々公開されていきます。
この業界にいる人間の一人としてそういった情報に常にアンテナを高くしています。特に海外系のサイトは。
この習慣を続けていて思ったのが、まず使ってみること。

CNETや人から聞いただけの情報では、どうしてもそのサイトの良さが伝わりません。
機能についても同じく。
トラックバックやRSSのよさを言葉ではなかなか表現できません。
トラックバックは実際にブログを書いてトラックバックを送ること、RSSはRSSリーダーを使って購読すること。

オフィス2007が出たとき、斬新なインタフェースで最初が使いにくいと感じるかもしれません。
でも、まず使ってみること。
いずれは主流となるバージョンで「だるい」「使いにくい」の一言で避けていては、そのまま流れの早いこの業界では置いていかれてしまいます。
数年後、どうしてもオフィス2007をそういった人間が使うころには、もう時代遅れの人です。

年を取るにつれてこういうフットワークが重くなってきます。

「まずは試すこと」

これは、ほんと重要です。

0

サイトのスクリーンショットを取得

はてなスクリーンショットsimpleAPIなどのサイトのスクリーンショットを取得するプログラムを書くことに。
調べるまえは、こんなのきっとpearやそのへんにライブラリがあるのかと思ってました。
ロジックもサイトのHTMLを取得して、CSS取得して、画像取得して、それをGDで画像化みたいな流れでするとかと思ってたけど、これも間違い。

実際多いのはWINDOWSサーバーとコマンドラインから実行可能のキャプチャ取得ソフトを用意します。
そのソフトをPHPから起動&パラメータを投げて実行させてやるといった形です。
キャプチャ取得ソフトはIEコンポーネントなどを使って擬似的にIEで表示してキャプチャを取るって形なんですね。
なんか意外?
擬似的とはいえIEで表示させるとはね。unixでもやりかたは違うけどfirefoxを起動させてキャプチャを取るってがよくある方法。

僕は結局色々考えてCrenaHtml2jpgってのをPHPから動かしてスクリーンショットを取得しています。
もちろん画像の保存方法やサイズの指定ができます。
よくわからなかったのが全画面取得のやりかた。結局、設定ファイルを直接いじることで対応しました。

CrenaHtml2jpg.exeをPHPと同階層において、こんな感じのコマンドをsystem関数を使って動かすだけ。

C:\>CrenaHtml2jpg -otest.jpg -fjpeg -w800x600 -s117x90 -q92 -t25 -uhttp://www.yahoo.co.jp

exeの実行権は要注意。
ちゃんと動かないときはcmd.exeに実行権を与えてください。