アーカイブ

‘PHP’ カテゴリーのアーカイブ

Mobitterをいじる

性凝りもなく、Mobitterを改造。

今回は、

  • 他人のアーカイブラインと友達ラインを見にいけるようにした
  • 画像ファイルを自サーバ上に一旦キャッシュする。かつPEAR::Image_Transform(GD)で縮小する ・・・携帯なんでなるべくちっちゃく。ライン上の表示が2回目以降の人の画像はさらにちっちゃくする
  • ついでに2回目以降表示された人はURLにもしない

なんてことをしてみる。このblogを動かしているサーバでPEARが動かせるようになったから試しにやってみた。
PEAR::Image_Transform(GD) 性能はどうだか知らないけど、お手軽さはMAX。結構すごいっす。

おまけ:いろいろテスト中に電車運行情報がTwitterされるサービス?を発見。こいつぁ便利だ。でもこれって文字数オーバーじゃない?
http://twitter.com/train_kanto

関連記事:Twitterモバイル「Mobitter」

カテゴリー: PHP, Twitter タグ:

何でも簡単にいじれて動かせる現代だからこそ、基礎って重要だなあ

ホームページを作る人のネタ帳PHPが出来るという事で採用した新人は、PRINTの時点でもうわからない

彼らがつまずいていたところは、for文とif文を徹底的に教えてみてはどうかと提案した。
なぜなら、printはそういった一つの流れがあって始めて意味を成すものであって、単独でprintする意味というのは確かに理解できない部分もあるからです。

そこで気が付いたんですが、ホームページを作るというスキルが全くない人は、実はprintでつまずく事も無いんです。
彼らがprintを受け入れられない理由はそこにあったのではないかと思う。

感覚的には同感。面談で「PHP出来ます」という言葉をチェックせずに信じた時点で採用側の負けだとは思うが、程度の差こそあれ、昨今似たような境遇に陥ることはよくある。

しかし、こうした人のばあい、ifやfor以前に、まずそもそもプログラムが何故必要か?何のためにプログラムつくるの?ってところから教えるべきなのかも知れない。

事例にあがっている< ?php print "こんにちは";?>ってのは、C言語でいえばK&Rの有名な”Hello, world.”のノリだけど、要するにこれすなわち、プログラムとはなんぞや?ということは知っている前提で成り立つ「事始め」であるということか。

やっぱプログラミング初心者に対していきなりWeb系プログラミングってのは敷居が高いよ。まずはstdin/outを使った処理系でソートや検索のアルゴリズムから教えるのが良いと思う。急がば回れ。

カテゴリー: PHP, 記事に反応! タグ:

XREAでPEARを使う

いま間借りしているレンタルサーバXREA.COMでも、PEARを使いたい。
ってことで、インストールを試みた。

うるめねっと技研 – Linux派 -」というところで先人の知恵が入手できる。感謝。

実際、ほぼ書いてあるとおりにすればインストール完了。
1点、びびったのは、index.php というのがインストールディレクトリにあると上書きされる。自分の場合は本blogの index.php がモロ上書きされる場所にあったため、go-pear.cgi でインストールされる index.php は pear.php と名前をインストール画面で変えておく。

go-pear.cgiの実行の様子
go-pear_1 go-pear_2

次に、index.php(自分の場合はpear.php)を呼び出して、個々のPackageをインストールする。先人の教え通り、依存関係が解決できずちょっとウザイが、まあそんなに依存が深いのも多くなさそうなので地道にPackage検索&インストールを繰り返す。

PEAR::Package::MDB2のインストールは、こんな感じ
go-pear_6

とりあえず必要なPackageをインストールしたら、PEARのディレクトリ書き込み権限を外すのを忘れずに行う。

Packageインストール完了後に、戻るアンカーをクリックすると以下のエラーが。array_walk_recursive()が未定義ですか。
そっか、これPHP5用だった。自分のサーバは何も考えずに動かすとPHP4になるんだった。

Fatal error: Call to undefined function: array_walk_recursive() in /virtual/ookawara01/public_html/PEAR/PEAR/Frontend/Web.php on line 850

でも問題の箇所のソースを見ると「Package詳細情報出力」らしいし、メニュー押せば戻るのでとりあえず放置。

MDB2のお試しソースをアップして動かす。あれ?あっさり動いた。PEARのパスを指定していないのにどうやって動いたんだろう。
・・・もしかしてPEAR::Package::MDB2は既に入っているのか?
・・・うーん、じゃ試しに、たぶんデフォルトで入れたりはしないであろうPEAR::Package::Image_Graphのサンプルソースをアップして呼び出すと・・・やっぱり未定義エラー。

で、PHPソース先頭に、
set_include_path('/virtual/ookawara01/public_html/PEAR'.PATH_SEPARATOR.get_include_path());
してやると、動いた。(Fontがないと怒られたのでそこのソースはコメントにしたけど)

ということは・・・PEAR::Package::MDB2はやっぱりデフォルトインストールされてるの?
stableなPackageはインストール済とかいうオチか?

まあいいや。どうせ自分で入れたほうを使う予定だし、そのうち調べよう。



カテゴリー: PHP タグ:

PEARを使う

PHP組込み関数直コールってのも勉強には良いが、まとまった何かを開発するとなると辛い。そこで便利なものをどんどん使おう、ということでPEAR(PHP Extension and Application Repository)をインストール。
現時点で400個以上のパッケージが公開されている。ありがたや、ありがたや。

PEAR自体は「sudo apt-get install php-pear」でインストールする。PEARパッケージのインストールその他は「pear」コマンドを使う。

$ sudo pear install DB
/tmp/glibctest8Tjfp8:1:22: error: features.h: No such file or directory
downloading DB-1.7.11.tgz ...
Starting to download DB-1.7.11.tgz (132,064 bytes)
.............................done: 132,064 bytes
install ok: channel://pear.php.net/DB-1.7.11
$ sudo pear install mdb2
/tmp/glibctestjOjMv1:1:22: error: features.h: No such file or directory
downloading MDB2-2.4.1.tgz ...
Starting to download MDB2-2.4.1.tgz (119,790 bytes)
.....done: 119,790 bytes
install ok: channel://pear.php.net/MDB2-2.4.1
MDB2: Optional feature fbsql available (Frontbase SQL driver for MDB2)
MDB2: Optional feature ibase available (Interbase/Firebird driver for MDB2)
MDB2: Optional feature mysql available (MySQL driver for MDB2)
MDB2: Optional feature mysqli available (MySQLi driver for MDB2)
MDB2: Optional feature mssql available (MS SQL Server driver for MDB2)
MDB2: Optional feature oci8 available (Oracle driver for MDB2)
MDB2: Optional feature pgsql available (PostgreSQL driver for MDB2)
MDB2: Optional feature querysim available (Querysim driver for MDB2)
MDB2: Optional feature sqlite available (SQLite2 driver for MDB2)
To install use "pear install pear/MDB2#featurename"
$ sudo pear install MDB2_Driver_mysql
/tmp/glibctestS6lHqn:1:22: error: features.h: No such file or directory
downloading MDB2_Driver_mysql-1.4.1.tgz ...
Starting to download MDB2_Driver_mysql-1.4.1.tgz (36,481 bytes)
..........done: 36,481 bytes
install ok: channel://pear.php.net/MDB2_Driver_mysql-1.4.1

glibc関係のエラーが出てるけどインストール自体はできるのでいまは気にせず使うことにする。

PEARは「ペア」と読むらしい。「ぴあ」かと思ってた。

カテゴリー: PHP タグ:

Twitterモバイル「Mobitter」

プログラミングのリハビリがてら、携帯版Twitter「Mobitter」を作成した。
Twitterらしい、ユルユルなAPIが提供されているおかげで、片意地はらずに作ってみたりできるところがいい。

既にネット上には「携帯版Twitter」「Twitter APIをたたいてみたソース」などがあちらこちらに存在していて、今更感は漂っているのだが、まあ6~7年ぶりにプログラミングに復帰したハンチクSEの自己満足なのでスルーしてください。

興味わいたら使ってみて下さい。

  • 本日現在、機能は「Public timeline」「With Friends」「My Archive」「update」のみです
  • いまのところFOMA専用です(それだのにモバイル版なんて名乗ってごめんなさい)
  • ログインすると、ユーザ名とパスワードをMySQLデータベースに保持します。パスワードは可逆暗号化して格納します
  • FOMAの個体識別情報に対応しているので、一度FOMAでログインした後はOKボタン一発で簡単アクセスできます
    (逆にログイン画面にてユーザ名、パスワードを入力すると個体識別情報を使わないで認証する…Twitter側でパスワード変更や、携帯機種変した場合など)
  • セッション管理は、ページ毎にハッシュを生成してhttpリクエストパラメータに付加しつつDBへも格納、ロードされたページ側ではパラメータに乗ってきた直前のハッシュをDB値とつき合わせてチェックする方式です
     -携帯はクッキー使えないので、こんなのしか思いつきませんでした
     -誰か心優しい方がいたらもうちょっとよい方法を教えてください
  • 画像は表示サイズの調整しかしていないのでダウンロードサイズは大きいままです(パケホーダイじゃない人、注意して)

いちお超簡単に注意事項なども

  • MobitterのDBに格納した利用者の情報はMobitter以外には使用しません
  • Mobitterを通じて入出力されるTwitterデータの内容および損害について一切の責任をおいません
  • Mobitterに不具合があった場合は可及的速やかに改修を努力しますが、Mobitter不具合による利用者の損害については責任を負いません(要するに、もしバグったり止まったりしても太平洋の如き広い心でゆるしてください)
  • Mobitterの提供サービス内容を予告なく変更することがあります
  • Mobitterの運営を予告なく停止することがあります

今後の予定

  • TwitterにあってMobitterにない機能の実装
  • 画像ファイルのサイズ変更、および表示OFFの設定を可能にする
  • せっかく携帯なので携帯メアドを任意登録してもらいTimelineからメール送信できるようにしようかな
  • DBにあるユーザのハッシュを最終アクセス日時から一定期間後に削除するようにする
  • DBにあるユーザデータそのものも、一定期間アクセスなければ削除するようにしようと思ってます(あきたりして使うのやめた人のデータをいつまでも残さない)
  • FOMA以外の対応(試験ができない…)
  • その他、思いついたり言われたりしたこと

カテゴリー: PHP, Twitter タグ: