2008/6/21 土曜日

メモリリークを解消せよ メモリの無駄遣い

Filed under: 開発技術関係 — admin @ 0:33:43

Javaアプレットで文字を流す文字を修正する場合、動かす文字のy座標の位置を乱数を用いループ表示している。しかし、ここで問題が!

一定時間アプレットを動かしていると流す文字が消えて行ってしまうではないか!

40個のオブジェクト(一個あたりフォントサイズ36px、文字の長さ40文字)の位置配置計算をループでやるといった仕組みだが、3分ほどで一つも流れなくなってしまう。

描画をきれいにするためダブルバッファリングをしている。一時的にバッファを作成し、そこに一時的に描画し、それを再描画するというもの。

これによりメモリが一時的に占領・上書きが繰り返されるため、メモリリークと呼ばれるメモリの断片化が発生してしまう。プログラムのバグでよく多いのがこのメモリリークと呼ばれるもので調べるとメモリリークのバグを見つけるのは困難らしい。フリーソフトなどを使うとパソコンが重くなってしまうのはそのせいだ。

そのため、メモリリークを探すには専用ソフトを使うのが望ましい。

・詳細情報ソース<@IT>
http://www.atmarkit.co.jp/fjava/rensai3/debug02/debug02_1.html

2008/6/9 月曜日

コメント流す技術 Photoip.NET

Filed under: 開発技術関係 — admin @ 1:15:53

絵師様が投稿してくださった画像

うまいなぁ・・・

Photoip.NETの技術をちょこちょこと公開していこうと思うが、なかなか開発が終わらないのが現実。開発状態のを公開してもただのゴミだしなぁ…ここは非常に難しいところかもしれない。

はてさて、画像の上にコメント。このシステムはニコニ●動画が登場する前からあった技術で特に新しいものではない。仕組みとしてはレイヤーを用いる。レイヤーとはPhotoShop等に用いられているアレのことです。画像レイヤーを最背面に配置し、その上に透過レイヤーとしてコメントを流すようにする。横から見れば三次元だが、正面から見れば二次元といった具合だ。

コメントを流すアルゴリズムはニコニ●動画 ではBlackBOX化されているため、それを再現するにはどうしたらよいかが問題となったが、流す処理は難なく製作することができた。流す向きとしては右から左、左から右、上から下、下から上、往復が可能。(HTMLタグ標準、電子掲示板とおなじ)

ここまでは誰でもできる。しかし、問題はここからだ。コメント配置計算と速度処理のアルゴリズムを組まないといけない。(と言ってもすぐできそうな気もしますが、忙しくて時間が…) コメント以外にもさまざまな機能を計画しているが、あとは時間との戦いとなる。

計画が没になったのも多数ある。その中に画像ジェネレータといったものを作ろうとしていた。Web上で画像編集できたら編集ソフトとか買わなくてもいいよね。といった形で作ろうと思っていたが、ググってみたらすでにあった。 orz

http://pixenate.com/

2008/5/31 土曜日

アップロードの問題 PHP セーフモード

Filed under: 開発技術関係 — admin @ 15:53:53

イラスト 新規登録システムの修正版をやっとのことで開発することができた。一か月もかかってしまった・・・。 orz

今回の登録システムはこれまでJPGのみであった登録システムを修正して、新たにアニメーションGIF、PNGファイルを対応させるといったもの。そこで問題になったのはサーバ側のPHPがセーフモードで動作しているという点だ。

セーフモードPHPの場合、PHPスクリプトを使用してアップロードした場合の障害としては、すべてのパーミッションが600になり、所有者がApacheになってしまい、呼び出すことはおろか、URLによる直接指定でも表示できなくなってしまうというもの。

アップロードしたものは使うことができないのか!?

といった問題点があったが、調べれば調べるほど、どうも セーフモードPHPで動作しているレンタルサーバはすべて同様の症状が出るみたいだ。Photoip.Netが動いているXREAサーバの場合、.htaccessファイルを設置できるため、 PHPファイルを無理やりCGIファイルとして認識させることで強制的に所有者(chmod関数)を変更することができる。また、この方法はPHPファイルに何も追記することなくできるのでソースを汚さなくても済む。

◆方法は以下に示すとおり(XREAサーバの場合、ほかのサーバでは使えるかどうかはわからない。)

1.同一ディレクトリに .htaccessを作成し、CGIとして動かしたいPHPファイルを指定し保存する。

・.htaccess の内容

<files test.php>
AddHandler application/x-httpd-phpcgi .php
</files>

※test.phpはCGIとして動かしたいPHPファイル名 。同一階層へ置く必要がある。また、この場合はPHPの負荷が高くなるので注意する必要がある。

上記のファイルを同一階層に置くだけでchmodコマンドが使えるようになる。 (私はアップロードしたファイルからサムネ画像を生成するためにGDを使う必要があり、壁にぶち当たっていた…)

2008/5/14 水曜日

サーバファイル暗号化

Filed under: 開発技術関係 — admin @ 0:16:37

サーバ上のファイルを暗号化するコードを公開。

これは、通常のファイルのバイナリ列を反転させるといったごく単純なもの。ファイル全体をバイナリレベルで読み込み、容量全体を排他的論理和で演算させ、通常では読み込めなくすることで、単純に解読できなくさせる。

暗号化を強化する場合は$seedに当たる文字列をより複雑にすればより強固になる。PHPでファイルを読み出し、コメントを表示するときに使ったりする。


<?php$src_file = “c:\sample\src.txt”;
$dist_file = “c:\sample\src.txt.encode”;
$fh = fopen($src_file,”r”);
if(!$fh){
echo “暗号化するファイルが開けません”;
exit();
}

//ファイルの内容を読み込みます
$src_text = fread($fh, filesize($src_file));
fclose($fh);

$len = strlen($src_text);

for($i=0;$i<=$len;$i++){
$seed .= “1″;
}

//ビット演算XOR(排他的論理和)で暗号化
$enc_text = $src_text ^ $seed;

//echo “暗号化結果: “.$enc_text.”\n”;

//復号化したテキストを保存
$fh = fopen($dist_file,”w”);

//ファイルを開けない場合は終了
if(!$fh){
echo “復号化記録ファイルが開けません”;
exit();
}

fwrite($fh,$enc_text);

//ファイルを閉じる
fclose($fh);

echo “暗号化した文字列をファイルに記録しました”;

?>

2008/5/3 土曜日

is not a valid MySQL-Link resource in エラー

Filed under: 開発技術関係 — admin @ 23:07:36

is not a valid MySQL-Link resource in エラーが出た場合はmysql_close()を疑ってみる。どうやらmysql_connectを使用している場合、自動的にコネクションは切断させるのでmysql_connectを付ける必要はない。某参考書には書いていたのでそれを信じ込んでしまうとエラーが出る。

私自身は ・・・かなり時間をとられた  orz

http://phpspot.net/php/man/php/function.mysql-close.html

情報ソース

どうやらmysql_close()はmysql_pconnect()で永続的接続をしていない場合は自動的に切断されるので必要ないとのことです。mysql_connect()でmysql_close()を使用したのが原因。

作ってたソースの一部を公開~(原因のソース)

//MySQLに接続します
$connect = mysql_connect($server, $user, $password);

//MySQLとの接続を解除します
$connect = mysql_close($connect);

2008/3/12 水曜日

トレンドマイクロ社のwebサイトが改ざん

Filed under: 開発のささやき, 開発技術関係 — admin @ 19:28:47

ウイルスバスターで有名なセキュリティ企業のトレンドマイクロ社のwebサイトが何者かによって書き換えられるといったことが発生した。

http://itpro.nikkeibp.co.jp/article/NEWS/20080312/296062/

webへの攻撃方法はSQLインジェクションと呼ばれる方法。フォームなどのデータをデータベースに登録する際に、妙な文字列を埋め込むことでデータベースのデータ破壊や改竄をすることができる。本サイトでは一応対策してるはずだが、他人事ではないのが味噌。

似たような攻撃方法で XSS(クロスサイトスクリプティング)と呼ばれる攻撃方法もある。これはフォーム登録時にフォーム文章の中にJavaScriptやPHP構文を埋め込んだりすることで、埋め込んだプログラムを実行させようといったものだ。

これらの攻撃を防ぐにはPHP関数htmlspecialcharsやstripcslashesなどを使い、HTMLタグの実行を無効化することができる。簡単な例は < を&lt;に、> を&gt;にしたりすることだ。

コレをすることでフォームから送られてきたタグ命令をただの文字列にすることができる。分散サーバ処理などをすると様々な問題点が付いてくるのでセキュリティ対策をしっかりしないといけない・・・。

2008/3/7 金曜日

ツマンネ

Filed under: 開発技術関係 — admin @ 17:45:11

ツマン ネツマン ネツマ  ンネツ マンネンというわけで描いてみた。

「自分のWebページへ貼り付ける」の場所に設置してあるフォームは1回クリックすることで全部を一気に選択することができる。これはJavascriptを用いることで一気に選択できるようにしている。

肝心のサムネ画像だが、専用のwebページを作成し、外部からIFRAMEを使い、読み出すことで実現している。問題は表示する範囲をうまく調整することが必要になる。

ちなみに一回のクリックでフォーム内の文章を全選択するJavaScript付きのソースはこのような感じ。

<input type=”text” name=”" size=”40″ value=”フォームの値” readonly=”readonly” class=”edit” id=”trackback_url” onfocus=”this.select()” />

2008/3/3 月曜日

Photoip.NETサーバ管理構成

Filed under: 開発技術関係 — admin @ 21:22:13

システム及び各種データの保管をどうするかを考えていたときのフローチャート?を公開します。

1.単一サーバ構成:一般的な方法。サーバ1台で運営するため、システム開発やデータ管理が容易。ただし、容量の堆肥化が発生した場合に対処できない。

2.完全分散サーバ構成:データベースから投稿データ、サムネ、コメントなど全てを分散させる構成。容量の堆肥化に左右されない利点があるが、データベース管理の複雑化や検索クリエ発行時に遅延が大幅に起きるのが問題。

3.データベース一括管理・データ分散サーバ構成:データベースのみ一台のサーバで保管し、投稿データ、サムネ、コメントなどのデータのみ分散させる構成。www1サーバのデータベースのみ堆肥化するが、検索クリエ発行の容易化とデータベース管理がしやすい、データ容量の堆肥化にすぐさま対処できるなどといった利点がある。

といったわけで、3のデータベースのみ一括管理し、他のデータを分散させる方式で開発を進めました。

詳細な図は以下に乗せておきます。

サーバ構成図詳細図

2008/2/29 金曜日

グラフを簡単に作成できるgoogleAPI

Filed under: 開発技術関係 — admin @ 23:29:02

グラフを簡単に出力したい場合等に利用できるのがgoogleChartAPIだ。

サービス詳細はこちら
http://code.google.com/apis/chart/

このサービスはURLにパラメータをつけてgoogleのサーバへ送信することで、自動でPNGファイルを返してくれるといった優れものだ。本サイトではPieChartを利用しているが、PieChart以外にも様々なグラフに対応しているので非常に使い勝手がよい。また、PHPのJPGraphより高画質でしかも無料といった点がよい点だ。

使い方はHTMLタグにパラメータ付きURLを入力し、HTMLコードを貼り付けるだけ。

<img src=”http://chart.apis.google.com/chart
?cht=p&chd=t:99,3,11,11,11,11&chs=435×250
&chl=bad|nomal|nice|good|verygood|excellent
&chtt=Nice%20chart&chco=aabbcc”/
>

ちなみに作成結果はこんな感じ

各種パラメータの詳細説明は以下のとおり(項目ごとは&で区切る)
?cht=p /?cht=3p ・・・チャートのグラフの2D及び3Dを切り替えることができる。
&chd=t :1,2,3,1,2・・・テキストベースの比率(googleserver側で自動修正してくれる)
&chs=435×250・・・グラフ全体の大きさ(計算が3000を超えないようにする。500×600など面積合計300,000限界)※かける=×ではなく、えっくす=xなので注意すること。

&chl=bad|nomal|nice|good|verygood|excellent・・・グラフに利用したい項目(データの数と同じにしておく)
&chtt=Nice%20chart・・・グラフタイトル
&chco=aabbcc・・・背景色

簡単な解説は上記のような感じ。これ以外にも設定項目はあるので、実際に本家に文献(英語のみ)を見てみるのをお勧めします。

2008/2/23 土曜日

検索エンジンを作るその2 ニューラルネットワークその2

Filed under: 開発技術関係 — admin @ 20:02:37

ニューラルネットワークとは主に「考える」ことを計算機上に表現することのようだ。確かではないが、解が複数あり、結果も複数あるといった場合だ。

「考える」というのは一途に言えば簡単だが、問題はどうやってそれをプログラム化するかといった点だ。

人に何か質問された場合に答えるとき、自分のこれまで得た知識の解空間からデータを抽出する。知識を点にし、その点を集めてグループ化し、それぞれで局所検索をすると考えればどうだろう。図に示すとこんな感じじゃないかな?

脳内サーチ

とまあ、論理的な話はどうでもいいからさっさと作れー!という人もいると思うので早く開発しよう・・・

次のページ »

HTML convert time: 0.228 sec. Powered by WordPress ME