plasmasphere.net -プラズマスフィア ドットネット-

Diary

« 1... 65 66 67 68 69 ...98 »

「SNSは安全」という罠

2006/10/13(Fri) 00:10

どこぞの会社の社員が、彼女とハメ撮りしてた画像ファイルをShare経由でウイルスにかかり、Shareで流出させたそうで。
流出させたファイルの中に本名が入ってて、それをmixiで検索したら大当たり。
該当のコミュニティやマイページは大荒れになりましたとさ。

という事がマジであったわけですが。
以前Winnyについて書いたことがありましたけど、要はそれと同じ事で…。
今回はShareというP2Pを媒介に、mixiというSNSを経由して広まったと。

これ、誰が悪いのか。

どうも某ゲンダイとかいう新聞では、mixiが悪いってことになっとるようで。
おおっぴらに新聞にまで載せて、煽っているのは誰かしら…。

本名をソーシャルネットワーキングシステムというクローズネットワーク内とは言え、晒すのは良くないと。
それは分かるんですが。
mixiはソリューションを提供しているだけで、ユーザ間で起こった問題とかは結局ユーザの問題なんですよね。
そこで起こった問題をmixi側に問いかけるのはバカだと。

因みにmixiの登録人数はこれを書いている時点で約710万人
これを閉鎖空間と見るかどうかは個人の判断ですが…。

P2Pに関しては、Winnyの項を参考してくれればと。

要は、流出させた奴が一番悪い。
そういう事になるんですが…世の中上手くできているもので、それ相応の物を得るためには相応のリスクも負う事になるんですね。
流出したファイルは、多分この先未来永劫無くなる事はないでしょうね。大げさでなく。
人類の歴史の終わりとか言われたら、そりゃ無くなるだろうけど(笑)

まぁ何が言いたいかっつと。
仕事ではないとはいえ、最低限のPCリテラシーを学ぶ事。
知らないのに手を出すなという事。
ゲンダイはクソ。


F1

2006/10/08(Sun) 00:10

皇帝が…_| ̄|○
鈴鹿だけは皇帝にぶっちぎってほしかった。


PHPでクイックソート

2006/10/06(Fri) 00:10

昨日のバブルソートに続き、クイックソート(Quick Sort)のソースも置いておきます。
PHPのソートソースって、探しても見つからないんですよね。なんでだろ。

qsort.php

<?php

$val = array(12,50,20,1574,67,54,2,35,21);

echo "ソート前";
echo "<pre>";
print_r($val);
echo "</pre>";

qsort($val, 0, count($val)-1);

echo "ソート後";
echo "<pre>";
print_r($val);
echo "</pre>\n<hr />\n";


$arr = array(
			"0" => array( "name" => "名前1", "No" => "3", "value" => "******"),
			"1" => array( "name" => "名前2", "No" => "1", "value" => "******"),
			"2" => array( "name" => "名前3", "No" => "2", "value" => "******"),
			"3" => array( "name" => "名前4", "No" => "5", "value" => "******"),
			"4" => array( "name" => "名前5", "No" => "4", "value" => "******"),
		);

echo "ソート前";
echo "<pre>";
print_r($arr);
echo "</pre>";

qsort($arr, 0, count($val)-1, $flag = "No");

echo "ソート後";
echo "<pre>";
print_r($arr);
echo "</pre>\n<hr />";

/*
 * クイックソート
 * $int_array = ソートする配列
 * $left = 開始位置(0で決め打ち)
 * $right = 終了位置($int_arrayの要素数:決め打ち)
 * $flag = ソート対象の配列要素
 * $order = ソートの昇順(ASC)・降順(DESC) デフォルトは昇順
*/
function swap(&$v, $i, $j) {
	$temp = $v[$i];
	$v[$i] = $v[$j];
	$v[$j] = $temp;
}

function qsort(&$int_array, $left = 0, $right, $flag = "", $order = "ASC") {
	if ($left >= $right) {
		return;
	}
	swap ($int_array, $left, intval(($left+$right)/2));
	$last = $left;
	for ($i = $left + 1; $i <= $right; $i++) {
		if($flag) {
			if($order=="DESC") {
				if ($int_array[$i]["".$flag.""] > $int_array[$left]["".$flag.""]) {
					swap($int_array, ++$last, $i);
				}
			} else {
				if ($int_array[$i]["".$flag.""] < $int_array[$left]["".$flag.""]) {
					swap($int_array, ++$last, $i);
				}
			}
		} else {
			if($order=="DESC") {
				if ($int_array[$i] > $int_array[$left]) {
					swap($int_array, ++$last, $i);
				}
			} else {
				if ($int_array[$i] < $int_array[$left]) {
					swap($int_array, ++$last, $i);
				}
			}
		}
	}
	swap($int_array, $left, $last);
	qsort($int_array, $left, $last-1, $flag = $flag, $order = $order);
	qsort($int_array, $last+1, $right, $flag = $flag, $order = $order);
}
?>

まぁ、落ちてたソースを多次元配列に対応させただけですけどね。
とりあえず関数であっても邪魔にはならないので、最近作るWebには大体入れてます。

参考:いろいろなソートアルゴリズム


PHPでバブルソート

2006/10/05(Thu) 00:10

PHPのソート関数が無いかと探していたら、特に無かったのでバブルソート(Bubble Sort)をJava版からPHPに改変してみました。
rsortとか使えば同じ動作するんで別にいらないんですが…。
ところがどっこい、二次元配列のイチ要素に対してソートを実行しようとすると、そうもいかなかったわけで。

例えば…

Array
(
    [0] => 12
    [1] => 50
    [2] => 20
    [3] => 1574
    [4] => 67
    [5] => 54
    [6] => 2
    [7] => 35
    [8] => 21
)

みたいな配列は普通にrsort使えば問題ないんですが…

Array
(
    [0] => Array
        (
            [name] => 名前1
            [No] => 3
            [value] => ******
        )

    [1] => Array
        (
            [name] => 名前2
            [No] => 1
            [value] => ******
        )

    [2] => Array
        (
            [name] => 名前3
            [No] => 2
            [value] => ******
        )

    [3] => Array
        (
            [name] => 名前4
            [No] => 5
            [value] => ******
        )

    [4] => Array
        (
            [name] => 名前5
            [No] => 4
            [value] => ******
        )

)

みたいな配列をNo要素順にソートしようとするとうまくいかない。
いや、俺が間違ってるだけかもしれんが。

というわけでソース。

bsort.php

<?php

$val = array(12,50,20,1574,67,54,2,35,21);

echo "ソート前";
echo "<pre>";
print_r($val);
echo "</pre>";

bsort($val);

echo "ソート後";
echo "<pre>";
print_r($val);
echo "</pre>\n<hr />\n";


$arr = array(
			"0" => array( "name" => "名前1", "No" => "3", "value" => "******"),
			"1" => array( "name" => "名前2", "No" => "1", "value" => "******"),
			"2" => array( "name" => "名前3", "No" => "2", "value" => "******"),
			"3" => array( "name" => "名前4", "No" => "5", "value" => "******"),
			"4" => array( "name" => "名前5", "No" => "4", "value" => "******"),
		);

echo "ソート前";
echo "<pre>";
print_r($arr);
echo "</pre>";

bsort($arr, $flag = "No");

echo "ソート後";
echo "<pre>";
print_r($arr);
echo "</pre>\n<hr />";

/*
 * バブルソート
 * $val = ソートする配列
 * $flag = ソート対象の配列要素
 * $order = ソートの昇順・降順 デフォルトは昇順
*/
function bsort(&$val, $flag = "", $order = "ASC") {
	for($i=0;$i<count($val)-1;$i++){
		for($j=count($val)-1;$j>i;$j--){
			if($flag) {
				if($order=="DESC") {
					if($val[$j]["".$flag.""]>$val[$j-1]["".$flag.""]){
						$t=$val[$j];
						$val[$j]=$val[$j-1];
						$val[$j-1]=$t;
					}
				} else {
					if($val[$j]["".$flag.""]<$val[$j-1]["".$flag.""]){
						$t=$val[$j];
						$val[$j]=$val[$j-1];
						$val[$j-1]=$t;
					}
				}
			} else {
				if($order=="DESC") {
					if($val[$j]>$val[$j-1]){
						$t=$val[$j];
						$val[$j]=$val[$j-1];
						$val[$j-1]=$t;
					}
				} else {
					if($val[$j]<$val[$j-1]){
						$t=$val[$j];
						$val[$j]=$val[$j-1];
						$val[$j-1]=$t;
					}
				}
			}
		}
	}
}
?>

単純なバブルソート。
要素が30を超えてくると、動作がぬるぬるしだす辺りはやっぱりバブルソートだなぁ…と。
クイックソートはまた明日にでも。

参考:いろいろなソートアルゴリズム


サッカー

2006/10/04(Wed) 00:10

VSガーナ親善試合。
交代枠全部使ったのは楽しかった。
というか、交代しきった後の方が見てて楽しかったのは、きっと播戸と中村憲剛のお陰かな。

ところで巻君の足元が絶望的に下手糞なのは、どうにもならんのでしょうか。
走り出した選手の足元に出すパスが多すぎ。貰う方つんのめってるし。

今回は故障で加地さんがいなかったので残念でした。
代わりの駒野のDFがダメすぎて見てられないです。

まぁ、何でもいいから四年後とかにこんな感じに…なってたらいいなぁ。
http://www.youtube.com/watch?v=Qv-xC1GKmH8
と上の動画見てて2005年のコンフェデを思い出した。
http://www.youtube.com/watch?v=zIKt8BGhh8Y
後にも先にも、凄かったのはこれと同じコンフェデのギリシア戦くらいだったけど。


CSSでタブを作成する為のモジュール2

2006/09/30(Sat) 00:09

タブ型リンクを作成するCSSのモジュールその2。

CSS

.tab2 {
	margin:0;
	padding:5px;
	border-bottom:1px solid #aaa;
}

.tab2 li {
	display:inline;
}

.tab2 li a {
	padding:4px 7px;
	border:1px solid #aaa;
	border-bottom:none;
	margin-right:1px;
	background:#eee;
}

.tab2 li.active_tab a {
	padding:4px 7px;
	border:1px solid #aaa;
	border-bottom:none;
	margin-right:1px;
	background:#fefefe;
}

.tab2 li a:hover {
	padding:4px 7px;
	border:1px solid #aaa;
	border-bottom:none;
	margin-right:1px;
	background:#fefefe;
}

HTML

<ul class="tab2">
<li><a href="/attention.html">Information</a></li>
<li><a href="/archives/">Archives.html</a></li>
<li><a href="/links">Links</a></li>
</ul>

前回のと同じく、まるまるコピー&ペーストで使ってください。
前回と違うのは見た目と、タブが2行になってもなんとかなる所。
多分。


CSSでタブを作成する為のモジュール

2006/09/29(Fri) 00:09

所詮CSSだし、モジュールって言うほどのモンでもないけど、折角なので公開。

CSS

.tab {
	text-align:left;
	margin:0 0 10px 0;
	padding:0 5px 26px 5px;
	_padding-bottom:25px;
	border:1px solid #aaa;
	background:#ccc;
}

.tab li {
	display:inline;
}

.tab li a {
	display:block;
	padding:5px 10px;
	margin-right:4px;
	border:1px solid #aaa;
	border-width:0 1px;
	background:#eee;
	float:left;
	width:100px;
	text-decoration:none;
	text-align:center;
}

.tab li.active_tab a {
	background:#fefefe;
}

.tab li a:hover {
	text-decoration:none;
	background:#f8f8f8;
}

.tab li.active_tab a:hover {
	text-decoration:none;
	background:#fefefe;
}

HTML

<ul class="tab">
<li><a href="/attention.html">Information</a></li>
<li><a href="/archives/">Archives.html</a></li>
<li><a href="/links">Links</a></li>
</ul>

説明するまでもないと思いますけど一応。
ULタグの下にあるLIタグの中にあるAタグをブロック要素にしています。
ワカンネって場合は、とりあえずCSSとHTMLのコードまるまるコピーするとそのまま使えますよ。
ハミ出るって場合は、他のCSSが干渉してるかもしれないので、.tab li a の paddingの値なんかを変更してみてください。


Oracleでページ替え

2006/09/28(Thu) 00:09

先日Oracleを使う機会があって、今まで使ってたMySQL,Postgres SQLと少し違って苦労した点を…。
何でLIMIT使えんのかと。

Webシステムを作ってると、絶対にページ替えってやつはついてまわってくるんですが、それをプログラムとデータベースでやろうと思いまして。
要は、データベースにアクセスするときに…
1ページの場合はデータベースの実行結果の0行目から9行目を返す。
2ページの場合はデータベースの実行結果の10行目から19行目を返す。
って感じでやれば良いんですが、何かOracleさんには良いクエリが無いようで。
一応、指定の行を返すクエリのROWNUMってヤツがあるんですが、こいつがイマイチ使い勝手が悪くて、データを降順で出力したとしても、行はそれに定義されてないんですね。
例えば値段でソートしたとして

行(ROWNUM)商品名値段
1商品1100円
18商品15200円
36商品6300円
5商品23400円

みたいな感じで、実行した結果に行(ROWNUM)を振って、それをさらに値段で降順にソートするから、行の番号は狂い咲き。
かと言ってソートした後にROWNUMを指定するとクエリエラーが返ってくる素敵仕様。
Oracleはおバカちゃんですねとか思いながら、Google大先生に質問を投げかけて、やっと見つけました。
SELECTを入れ子にすればいいんですね。
ただ、降順ソートした結果に行(ROWNUM)を振って、さらにその行(ROWNUM)の0番目から10番目を取り出すとかクエリを書くと、もうアホかってくらいSQL文が伸びます。

SELECT ,商品名,値段 FROM (
	SELECT ROWNUM as ,商品名,値段 FROM (
		SELECT 商品名,値段 FROM 在庫状況 ORDER BY 値段 ASC
	)
) WHERE  between 0 AND 10

値段を降順で取得するようにクエリを渡した実行結果の、値の順番に行番号を振って、その行番号の0から10を取り出す、って読むといいです。
考えればこの方法しかないのはすぐ分かるんだけど、実際やってるとそうそう思いつかないもんです。

地味なトコで地味に詰まったので書き残しておきます。
ていうかWebサービスでOracle使うなと。MySQLで充分だろうと。

真面目に日記書いたのはじめてかもしれない、そんなサイト6年目の秋の夜。

参考にしたページ
http://d.hatena.ne.jp/yone098/20060823/1156329508

ネタ不足に負けた、自分がいます。
実際仕事の結果得られたものを書くと、頑なに拒んできた何かが自分の中で崩れていく非常に悲しい思いに駆られます。
拒んできた何かは何か分かりません。分かりたくありません。実感したくありません。
だから言わないで下さい。お願いします_| ̄|○


« 1... 65 66 67 68 69 ...98 »


 
© 1999- plasmasphere.net All rights reserved.