diary/category/プログラミング

ID: 33 | 作成日: 2009/08/12 [Wed] 17:06:00 | 最終更新: 2012/09/12 [Wed] 16:07:55
FrontPage / diary / category / プログラミング

2009/08/12 [Wed]

新"AWS"に対応させた

"Product Advertising API"と名称変更され電子署名が必要になったAmazonのAPIですが、旧式での利用が残り三日となり、さすがに手をつけないとまずいなぁということで利用しているスクリプトを修正した。

参考リンク

2009/07/08 [Wed]

「Trac Lightning」が重たい

せっかく「Trac Lightning」を入れたので、リポジトリブラウザ以外にもいろいろ使ってみたいのですが、前記事にも書いたように自分の環境ではTracの表示が全般重たくて、他の部分はまだ試していません。

今までも、プログラミングによるアプリケーション開発に関するバグ・タスク管理や作業メモ等は別のツールでやっていたんだけど、どうせなので近々Tracにその辺の作業も移行させたいなぁと。

あと、ローカルPCで動かしているため他者が見るわけではないので見た目にこだわる必要はないのですが、どうにも標準のテンプレートは寂しいのでテンプレートもどうにかしたいですね。

作るのも面倒なので、良さそうなテンプレートが配布されているのならそちらを使いたい。

今後じっくり使うためにも解決策やテンプレートとかも含めて、近いうちに調べてみようかとは思っていますが。

2009/07/07 [Tue]

バージョン管理まわりを整えて作業がやりよくなった

ここ1~2ヶ月は「i-revoレトロゲーム」とかフリーゲームばかりプレイしていたわけですが、二週間ほど前からやりたいと思っていた利用Wikiクローンの改良に着手。

主にページデータの保存方法自体を改変するために面倒な部分が多かったのですが、数日前にとりあえずの作業を完了して実際にサイトでも改良したものを動かしてみましたが、問題ないようで良かったなぁと。
とはいっても、細かい部分でもう少し改良したいので、あとしばらくは“これ”の作業の予定です。

今いじりたいと思っている部分がツール内で使いまわしているユーザー定義関数なので、その関数を利用しているプラグインのスクリプトとかをすべて修正しないといけないのが面倒だと思っていたわけですが、最近整備したバージョン管理ツールのおかげでかなり楽に作業が進んでいます。

差分のチェックやソースの検索がブラウザ環境で出来るのは、やはりいいですね。
ただ、自分の環境では導入した「Trac Lightning」が重たいんだけど、あんなもんなのかなぁ?

使い方も慣れてきたので、他の製作物や改変したPivot・Scuttleあたりも改変前と後が分かるようにプロジェクト作っておくかな。

2009/03/14 [Sat]

PHP4・5のセッションであせった

PHP4と5が共存状態で作業をして、ちょっとあせることになったわけですが。

利用しているレンタルサーバ「ロリポップ!」が去年末からPHP5を導入。
以後の新規ユーザーは始めからPHP5、これまでのユーザーは当面PHP4・5共存。
ユーザーで任意にPHP5完全移行を設定できるが、PHP5にすると以前の共存環境には戻せずPHP4は使えなくなる。
共存環境では、拡張子“.php”はPHP4、拡張子“.php5”はPHP5として動く。

・・・で、僕は現在、PHP5導入以前からのユーザーでPHP5にはまだ移行させていないため、PHP4と5の共存状態になっています。

実は先日、ちょっと確かめたいことがあってPHPスクリプトを拡張子を“.php5”にしてPHP5として動かしてみました。
そのスクリプトがログインして使うものでセッションを利用していたのですが、それが元で他のPHP4で動いているセッションを利用するスクリプトがことごとくエラーを返す状態に・・・

どうもPHP5で操作したセッションが残っていて、それが元でエラーを返しているようだったので、PHP5でとりあえずセッション開放試してみようと拡張子“.php5”で「session_unset」(これ試した後で調べてみたら、セッション開放は「$_SESSION = array();」のほうがいいって記述も見たけど、実際のところはどうなんだ?)実行したら、PHP4のスクリプトもエラーを返さなくなりました。

早めに自分で対応できたのでよかったですが、正直これは最初びびった。

2009/02/13 [Fri]

らくがき帳にWiki記法を導入

「らくがき帳」のコメント編集はブログ等と同様に普通にHTMLタグを打ち込むやり方だったですが、どうにもいちいちPタグとBRタグ書き込むのが面倒だなぁと。

・・・で、ほとんどのブログのエントリー編集だと、その辺のわずらわしさを解消するためにJavaScriptとか利用してエディタのボタンをクリックするとHTMLタグが挿入されるようになっていますが、JavaScriptは得意ではないので代わりに、いわゆるWiki記法でコメント編集できるようにスクリプトを改変。

書式は普段使っているいくつかのWikiクローンを参考に、一応それっぽい感じのものにしました。(笑)

基本的に「イラストありき」のツールで、実際、簡単なコメントしか付けないので今のところは「PタグとBRタグの自動判断」と太字・傾斜・打消し線くらいしか機能を付けていません。
引用やリスト・整形済みテキスト等をあまり使う内容じゃないし自分しか使わないツールなので現状それでも十分ですが、後々余裕があるときに、もう少し書式を増やす予定です。

これで、コメントの編集がだいぶやりやすくなりました。

2009/02/04 [Wed]

「らくがき帳」のソースを見直す

この三日ほどの間に、「らくがき帳」の更新に使っている自作ツールを大幅改変。
たまにセキュリティ関連で気づいたことがあったときには、ちょこっと修正したりしましたが、本格的にいじったのは一年以上前か・・・

これを作ったのが約二年半前で、PHPの勉強を始めて一週間か十日ぐらいの頃・・・さすがに今見直すと恥ずかしいです。

全体的にプログラム見直しをしたので、やった作業としては「全部」って感じですが(笑)、前々から気になりつつも手を付けずにいた当時に他所の配布スクリプトを利用していたログインの処理を自前に変更、それと文字コードの「UTF-8」化と、それに関連した作業ができたのはよかったです。

Wikiクローンをいじってログインの処理を改変したことはあったのですが、丸々ログイン処理を作ったことがなったので今回の作業は、いい経験になりました。

二ヶ月くらい「i-revoレトロゲーム」のゲーム漬けだったのですが、これ以前の作業も含め一週間以上プログラミング漬けの状態は久しぶりです。

2009/02/03 [Tue]

利用ツールが「PHP5」で動くか確認してみました

この一週間ほど、サーバで利用しているPHP製ツールを「PHP5」環境で動くか、ローカルPC上で確認していました。

まぁ、確認自体はすぐに終わったのですが、そのときについでに自作ツールのいくつかを大幅見直ししてソース書き直したんで、合わせて一週間という感じです。

というのも、利用している「ロリポップ!」のレンタルサーバが去年末にPHP5が導入され、当面は「PHP4」と5の併用された環境となりました。

・・・で、具体的な日程は不明ですが、今春を目処に完全にPHP5に移行予定とアナウンスされているのです。
それで、土壇場で慌てる前に確認しておこうと。

結果は、ほとんど問題ありませんでした。

ただ、使っているツールのひとつが配布元のサポート掲示板に「PHP5で動かなかった」とあったのが気になるところ。
実際にレンタルサーバ上で、じっくり使っていくと何かあるかもしれませんね。

2008/10/26 [Sun]

利用&試したAPIを書き出してみる その3

過去に三回ほど、利用しているものとローカルPCで試してみたWebサービスAPIを列挙しましたが、前記事からさらに試したものが増えたので書き出してみたい思います。

以下で紹介しているものは、新たにサイトで使っているものやローカルPCで試したAPIの一覧です。

PHOTOHITO
写真共有サービス「PHOTOHITO」のタグ検索のRSS。
mooom API
動画等共有サービス「mooom」のAPI。 2011/08にサービスが終了しました。
Yahoo!知恵袋Webサービス 質問検索
「Yahoo!知恵袋」の質問を検索できるAPI。
サグールテレビ検索 Ajax API
動画検索サービス「サグールテレビ」のAPI。
HeartRails Capture
サイトのサムネイルを作成できるWebサービス。オプションによりサイズや枠線などの各種設定が可能、PDF化もできます。

それから、過去の記事も含めてページが飛び飛びになっているので、自分用のメモも兼ねて、この記事も含めたWebサービスAPI列挙の記事で紹介したAPIを、こちらのWikiのページにまとめています。
まだ、すべてを書き出してはいないのですが、合間を見て追記の予定です。

2008/10/24 [Fri]

PHP+JavaScriptで簡易ブログパーツ

今回は、実は7月に書くつもりだったのですが、その時期にブログの更新ツール変更作業をしていて書き逃していたPHP関連のネタです。

WebサービスAPIから引っ張ってきたデータ(たとえば写真共有サービスに自分がアップした画像とか)を、ブログのサイドメニューに簡単なブログパーツ的に表示させたいなぁと。

それを考えたときに1~2年前に試したテキストや画像をクロスフェード(フェードイン・アウト)させることができるJavaScript“Crossfader”のことを思い出し、「PHP+Crossfaderでそれっぽいことができるかも」ということで作ってみました。

ということで、そのときの作業を元に簡単な「PHP+Crossfader」のサンプルや解説をしたいと思います。

まずは簡単に「Crossfader」の説明から・・・ということでサンプル。

<script type="text/javascript" src="./javascript/bsn.Crossfader.js"></script>

<div id="cf1">
その1
</div>
<div id="cf2">
その2
</div>
<div id="cf3">
その3
</div>

<script type="text/javascript">
var cf = new Crossfader(new Array('cf1', 'cf2', 'cf3'), 1000, 5000);
</script>

配布元から「bsn.Crossfader.js」を入手して任意の場所に保存(サンプルでは“javascript”フォルダ)して、HTMLに上記のコードを書き込んで実行してもらうと「その1」・「その2」・「その3」がクロスフェードしながら順繰り順繰り表示されるかと思います。

詳細な説明は省きますが、要するに「new Crossfader」の“Array”で指定されているidの「div」で囲まれた部分がクロスフェード、数字の“1000”の部分がクロスフォードの時間、“5000”がサンプルの場合は「div」の表示時間になります。
時間の数字はミリ秒、当然時間は任意に変更可能です。

以下のページに「Crossfader」の日本語解説があります、僕も今回の作業で参考にさせてもらいました。

続いて、この「Crossfader」とPHPを利用しての解説。
僕の場合、ブログのトップページがPHPファイルなので、PHPの処理をトップページのPHPファイルに追加してHTMLで「bsn.Crossfader.js」を読み込めば簡単なのですが、できればよくあるレンタルのブログパーツみたいに外部からJavaScript呼び出すタグ一行だけで出来るようにしたいと。

そこでPHPに「Crossfader」を取り込んで、PHPスクリプトをJavaScriptとしてHTMLから読み込ませます。
ということで、PHP+Crossfaderの簡単なサンプルです。

<?php
ini_set('default_charset', 'UTF-8');

$fade_time = 1000;
$display_time = 5000;
$text = array(
	"PHP+JavaScriptを使った",
	"クロスフェードのサンプルです。",
	"エフェクトには“bsn.Crossfader.js”を利用。"
);

header("Content-type: text/javascript");
readfile("javascript/bsn.Crossfader.js");

$num = count($text);
$cf = "";
echo "\n\n";
for ($i=0; $i<$num; $i++) {
	$code = '<div id="cf' . ($i+1) . '">' . $text[$i] . "</div>";
	echo "document.write('{$code}');\n";
	if ($i>0) {
		$cf .= ", ";
	}
	$cf .= "'cf" . ($i+1) . "'";
}
echo "var cf = new Crossfader(new Array({$cf}), {$fade_time}, {$display_time});";
?>

サンプルでは文字コードを「UTF-8」で製作しています、別の文字コードを利用する場合は“ini_set('default_charset', 'UTF-8');”を実行される文字コードにあわせて変更してください。

配列変数「$text」に代入してある文字列をクロスフェードするJavaScriptのコードをPHPを使って出力しています。
配列に文字列を追加すればクロスフェードさせる「div」の数も追加されます。

「readfile」命令でJavaScriptを取り込んでいます、この辺については以下のページが参考になります。

あとはプログラムを「crossfader.php」等の名前で保存して、別名のHTMLファイルを作り

<script type="text/javascript" src="crossfader.php"></script>と記述、ブラウザでHTMLファイルを開けば実際の動作を確認できます。

これを応用することで、たとえば写真共有サービスに自分がアップした画像サムネイル&ページ一覧をWebサービスAPIで取得して表示させることで、サムネイルと元ページのリンクをクロスフェード表示させるといったことが出来るかと思います。

まぁ、Flashで作られた実際のブログパーツと比べると正直地味ですが、「Crossfader」はファイル一枚で動作も軽くWebサービスAPIの扱いに慣れている方ならJavaScriptやFlashが苦手な方でも手軽に導入できるのではないかと。

2008/10/09 [Thu]

PHPの「system」でZIP圧縮&ディレクトリのコピー

今回は、少し前のエントリーで「書く予定」と触れていたPHP関連の解説ネタについて書きます。
サーバにアップしているWikiクローンのデータバックアップやディレクトリの移動をすることになり、PHPの「system」という命令を使ったので、その辺りメモです。

「system」はLinuxのシェルコマンドを実行できます。
そしてコマンドにはZIP圧縮やディレクトリのコピーもあるので、前述の作業をそのコマンドで片付けようというわけです。

以下のサンプルは、「ロリポップ!」のレンタルサーバで試したものです。
ご利用のサーバ環境によって利用できない場合があります、あらかじめご了承ください。

ZIP圧縮には「zip」コマンドを利用します。
僕の場合は、指定ディレクトリ内のファイル・ディレクトリすべてをバックアップする必要があったので、以下のような処理をしました。

$backup_file = "作成するZIPファイルの名前";
$backup_dir = "バックアップしたいディレクトリ";
system("zip -r $backup_file $backup_dir");

ソースは実際に作業で使ったスクリプトから「system」の部分のみ抜粋です、「作成するZIPファイルの名前」と「バックアップしたいディレクトリ」の部分は任意に書き換えてください。
ZIPファイルの名前は“backup.zip”のように、拡張子は「zip」にします。

次は、ディレクトリのコピーです。
元となるディレクトリ内のファイル・ディレクトリもぜんぶ含めて新しいディレクトリへコピーします。

$old_dir = "コピー元となるディレクトリ";
$new_dir = "コピー先となるディレクトリ";
system('cp -r "' . $old_dir . '" "' . $new_dir . '"');

こちらも「system」関連の抜粋のみ。
「コピー元となるディレクトリ」と「コピー先となるディレクトリ」の部分は、前回同様、任意に書き換えてください。

実際に作業で使ったスクリプトは、ZIP圧縮はほとんど上記のソースのままでちょっと付け足した程度ですが、ディレクトリのコピーは利用Wikiクローン内部で使っている複数のディレクトリを移動ということで、そのWikiクローンで用意されている関数を使ってディレクトリの列挙やコピー後の削除までしているため実際はもう少し複雑なソースです。

あまり面倒な手続きなく簡単な処理で済ませられたので、正直ありがたいです。
特にZIP圧縮は、普段使っているFTPクライアントでWikiクローンのログファイルをすべてダウンロードできなかっただけにバックアップが取れて本当によかった。

ZIP等の圧縮ファイルの扱いは、手軽にバックアップに利用できるため便利ではないと思います。