スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Web] Firefoxのプラグイン Web Developer が凄く便利

Firefox のプラグインにはいろいろと便利なものがあって重宝しているのですが、
もうこれがあるというだけで他のブラウザに抜ける気がなくなりました。

使わない人にはまったく用はないのでしょうが、"Web Developer" という代物です。

Webdeveloperのダウンロード:ミナトラボ
http://lab.tubonotubo.jp/tools/webdeveloper/index.html

なにをするもんかというと、Web制作の補助をしてくれるものです。

 正直なところ私、つい最近までスタイルシート嫌いでした。
何がWeb標準かと、それなりに見えればいいじゃないかと、
デザイナならまだしも、なんでWebプログラマがそんなこと
まで気をつけないといけないのかと。

 とはいえ時代の波にはどうしようもなく、扱うWebページには
スタイルシートはつきものになり、Webツールの何をいじるにも
スタイルシートを編集するという作業は必須になりました。

 しかし何が私をこれから遠ざけていたかというと、HTMLページと
CSSファイルの分離にあったわけです。そのほうが後々のためとはいえ、
字を赤にするだけでもCSSで定義し、さらにその定義をHTMLにあてはめると
いう作業はどうしてもなじめませんでした。

 ましてや自分が作ったものならまだしも、人の作ったものを変更するときに
「この文字はなんで変な隙間が空くのか」「この画像はどこをいじれば変更できるのか」
などとファイルの中身を見ながら考えるという非効率な作業を強いられるわけです。

 前置きが長くなりました。"Web Developer" は、いろいろ機能があるようですが、
(実際あまり使いこなしてはいない)

「ページをWebブラウザで見ながら、CSSでの定義内容が把握できる」

 これが素晴らしい。

Web Developer みほん


 ようは↑こういうことで、ブラウジングしているページの箇所を指定することで
どんなスタイルが適用されているかその画面内で確認できるわけです。
上記の例でいうと、<p> および <p> の rand_text が適用されています。
それがどのファイルに定義されているかも表示されています。

 すごく快適。昔にフォント弄りに血道をあげた時期もありましたが、
毎回 <font> タグを書いていたのが馬鹿馬鹿しいです。
スポンサーサイト

[PHP] カウンタ (画像で表示)



簡易なカウンタです。
データファイルはUTF-8(BOM無し)を想定しています。
(数値ですから、特に意味はないのですが)
リロード防止のため、初回アクセスの際にセッションを生成し、
何か値がセットされていればカウントしないようにしています。

ファイルの読み出しから書き込みまでロックを行っていないのと、
セッションを利用しているため、多くのアクセスがあるサイトには向きません。
同時にアクセスが起こった際に正しくカウントが行えなかったり、
セッションを保持する負荷がかかることが考えられます。

動作条件:
特になし。このサーバは PHP5ですが、4でも問題ないでしょう。


<?php

//セッションを利用
session_start();

//-----------------------------
//設定
//-----------------------------
$file_dat = "./dat/count.dat";
//画像ファイル位置
$dir_img = "./img/";
//画像ファイル名(共通部分)
$file_img = "cnt";
//画像拡張子
$ext_img = ".gif";
//画像を使うか(使う:1)
$use_img = 1;
//空白画像のファイル名の数値部分
$file_null_ch = "n";
//画像の幅・縦
$img_width = 14;
$img_height = 19;

//-----------------------------
//初期化
//-----------------------------
//出力
$buf = "";
//imgタグ src 部分
$img_tag_src = "";

//以前このページにアクセスされたかをセッション変数の内容で確認する
$ses_item = isset( $_SESSION['ses_item'] ) ? $_SESSION['ses_item'] : "";

//カウント数をファイルから取得
$f_buf = file( $file_dat );
$cnt = $f_buf[0];
$cnt = trim( $cnt );
$cnt = str_replace( "\n", "", $cnt );
$cnt = str_replace( "\r", "", $cnt );

//既にアクセスを行っている
if( strlen( $ses_item ) > 0 ){
//更新しない
}
//初アクセス(もしくはアクセスしてからタイムアウトとなる時間が経過している)
else{
//数値として取得できなければ更新しない
if( is_numeric( $cnt ) ){
if( $fp = fopen( $file_dat, 'w') ){
$cnt++;
fwrite( $fp, $cnt );
fclose( $fp );
}
}
//アクセスとしてカウントしたことを示す(中身は何でも良い)
$_SESSION['ses_item'] = "counted";
}

//-------------------------------
//カウンタの表示
//-------------------------------
$str_cnt = str_pad( $cnt, 7, $file_null_ch, STR_PAD_LEFT );
if( $use_img == 1 ){
for( $i = 0; $i < 7; $i++ ){
//一文字ずつ取得
$ch = mb_substr( $str_cnt, $i, 1, "UTF-8" );
//画像に置き換え
$img_tag_src = $dir_img.$file_img.$ch.$ext_img;
$buf .= "<img src=\"".$img_tag_src."\" width=\"".$img_width."\" height=\"".$img_height."\">";
}
}
else{
$buf = $str_cnt;
}

include( "counter.tmpl" );

?>

[PHP] ディレクトリを探査

スクリプト以下のディレクトリ名を最下層まで探査します。
再帰的に探索するのがエレガントかと思いますが、配列に格納したディレクトリ名を
ひとつずつ対象にし、新たに見つかったディレクトリは後で探査を行うものとして、配列に追加します。

動作条件:
特になし。このサーバは PHP5ですが、4でも問題ないでしょう。





//---------------------------
// 初期化
//---------------------------
// ディレクトリ名を格納する配列
// 現在ディレクトリで初期セット
$idx_ary[0] = ".";
// 上記配列の位置を示す添字
$idx = 0;
// 上記配列の最大添字
$max_idx = 0;

//-------------------------------------------
// ディレクトリ名を格納している配列を頭から最大まで
//-------------------------------------------
while( $idx <= $max_idx ){

//配列で指定されたディレクトリを探査
$dir = dir( $idx_ary[$idx] );

//ディレクトリの要素をひとつずつ処理
while( $item = $dir->read() ){

// 現在位置(.)、親(..)、以外のディレクトリを、
// 新規ディレクトリとして末尾に追加格納
// 現在探査中のディレクトリ名( $idx_ary[$idx] ) と連結することで相対パスとする
if( is_dir( $idx_ary[$idx]."/".$item ) && $item != "." && $item != ".." ){
//先に最大数をインクリメント
$max_idx++;
//増やした末尾にディレクトリ名を格納
$idx_ary[$max_idx] = $idx_ary[$idx]."/".$item;
}
}
//いったん閉じる
$dir->close();

//探査対象を進める
// 次々と見つかれば配列も伸びていく
$idx++;
}

//すべての探査を終えたので、名称でソートをかける
sort( $idx_ary );

//出力
for( $i = 0; $i <= $max_idx; $i++ ){
echo $idx_ary[$i]."
";
}

?>

[Web] 2ch 殺人予告検知・犯行予告検知

外部検索窓を使用しています。
新たに検知ソフトを作るぐらいなら、現在の技術で効率よく探査する方法を模索するのが
よいと思うのです。検索ポチポチ定期的にするなら、そう技術力もいりません。

予告.inは面白い試みです。
文脈などを判断するには人間の目と判断が必要になるのは、現在ではどうしようもないことで、
ならばその判断をどう効率的にするのかというのが適切なアプローチでしょう。

2ちゃんねる 検索窓




たとえば、現在(2008/06/16)「殺します」で調べると
「ムネアカオオアリです。今からクロオオアリ殺します」が出ますが、これが
通報に値することかは人間が見れば一瞬でわかることです。

検知ソフトを作るとするなら、
・人間に関係のないワードを辞書的に登録し、それが含まれているものは除外
 (上記で言えば「クロオオアリ」が存在すれば除外)
・一定のスレ(「タイトル」もしくは「URL」)を登録し、問題のないと判断された
 情報を登録、次回巡回時に無視
 などと作りこむのでしょうが、一定のロジックで検知をするのですからそのロジックから
 外れれば意味をなさないことは自明です。
 「コ□ス」「殺巣」などと書けば済むことです。

 現に予告.outが出ておりますし、画像になれば文字列検知は効きません。
もっとも、画像を読み込んで文字に変換するのは、 CAPTCHA が破られることから見ても
可能なことであり、また解読を難しくするのも可能です。

くどくどと同じようなことを書いていますが、ようは検知ソフトをつくって
犯罪を予防しようというのは、いたちごっこだし、コストに合わないからおやめなさいということです。

これはインターネットをよく利用しているユーザにとっては、多くの同意を得られると思います。
2ちゃんねるでは確かに犯罪予告も多く、それで逮捕されたケースもありますが、
すぐに「通報しますた」となり、余程に頭のネジの緩んだ人でなければ、やらないのも実情です。

参考:ネット掲示板 犯行予告 事件一覧

読む人がほとんどいないような携帯の勝手サイトで予告して、誰か通報するでしょうか。
パスワードのかかっている学校裏サイトで、いじめの実態を先生に告げるでしょうか。
だからといって、それを検知しようと力をかけることが犯罪を防止することに大きく貢献するでしょうか。

大多数の凶悪犯罪は、予告もされることなく、突然起こっているのです。

[PHP] session_start()がエラーになる

Q.
session_start()をHTML出力前に書いているつもりですが、
session_start(): Cannot send session ~ のようなエラーになります。

A.
PHPの文字コードがUTF-8ではありませんか?
BOMつきの場合、出力文字列とみなされるのかそういったエラーになります。
仕様上問題なければBOMなしのUTF-8に変更してみてください。
検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。