PHPの書き方を元々知らん事を思い出した
でかいデータはエクセルで開かないよね
ネット環境がいいところに来たときにでかいデータを取り込む機会があった。
5MB超えるのは重いっす。
そんな私に対して1GB超えのtxtが。
うーん、エディタでもきついからとりあえず要るものだけ取り出すか。
テキストにしてきれいにするかとカチャカチャ。
エクセルにベタっとしてコピってtxtにベタっとするだろうからタブにしてと。
<?php
print ‘しょりちゅうです’;
//////////////////////////////////////////////////
//セッティング
$file = “file.txt”;
$fin = “fin.txt”;
//////////////////////////////////////////////////
$d = dirname(__file__);
$dir = “{$d}/{$file}”;
$fin = “{$d}/{$fin}”;
if (! $fpr = fopen($dir,”r”)){ printf( “{$dir}が開けません”); sleep(30); exit; }
if (! $fpw = fopen($fin,”w”)){ printf( “{$fin}が開けません”); sleep(30); exit; }
while (!feof($fpr)) {
$data = trim(fgets($fpr) );
$line = explode(“\t”, $data);
if( strpos( $line[1] , ‘なんか抜き出すきっかけの文字’ ) !== false ){
$str = “{$line[0]}\t{$line[1]}\t\t{$line[2]}\t{$line[8]}\t”;
fwrite( $fpw, $str . “\n” );
}
}
fclose($fpr);
fclose($fpw);
//////////////////////////////////////////////////
print ‘おわり’;
sleep(30);
exit;
?>
先にpreg_matchだったよなーとやっててはまる。
strposと書く順番も逆じゃねーか。
こんなん書くのに1時間近く掛かった。
そういえば自分はphpの正しい書き方知らないんだったという事を思い出した。
ループ回す前に抜き出せないんかこれ。
ローカル保存してある解説で調べるのも時間が掛かる。
ググれないとめちゃきついな。
ネット万歳。
MS Access の2GB制限を思い出した
MS Accessはデータの2GB上限上げてくれないかなぁ。
2GB超えをaccessで処理とかの方が頭悪い気がするが。
accessで扱えないサイズとかこうやって小さくしてやっとった。
access使ってたから文字コードがめんどくさくてbatでfindstrで処理して、batからphpで処理してbatからaccessのマクロでエクスポートとかやっとった。
そういやphpの書き方も知らんかったのだったな。
accessはDBにデータ取り込むと面倒なので外部リンク機能でtxtとかtsvとかcsvにリンク張ってテーブルみたいに取り扱うと楽です。
DBメンテも処理早くなるし、コピーも楽。
ネットワーク越しにリンク張るとめちゃ楽。
ネットワーク負荷を考えると10MB以下までかな、ネットワーク越しでリンク張るのは。
会社だと社内ネットワークの性能が良かったから100MB超えるまではいいかと判断してたけど社内ネットワークの負荷が掛かるから他でアップロードしてる時間帯や社内で人がいる時間は避けて動かすように仕込んでいた。
この処理は結構ハードな負荷だと思ってたんだがそれよりやばい事を他の部署がやってしまっていたらしく、怒られていた。
なんだか知らんがネットワーク強くするという話になってたけどこれ以上負荷高い事ぽんぽんやってる方も悪いんじゃないか?
リンク張ってるだけだからコピーしてきてローカルにリンク張って集計、元データ更新するときは上書きコピーで済むので全部そう変えてしまったが。
人は工夫するもの
集計全部accessでやっとった自分は元データが2GB超えた時に発狂した。
仕方ないので2GBに収まるように前処理してたけど、面倒。
そもそも処理するのが仕事じゃなくて、処理した結果から考えて動くのが仕事だし。
元ファイルもう一月で数十GBまでいってんだよなぁ。
アクセスログかっつーの。
必要なもの抜いて他のデータと時間系列でソートして一致したら書き出すとか懐かしい。
いつかあれも動かなくなるだろうな。
まぁ、誰か直すだろうな。
いやぁ、あれ直すくらいなら最初からそういう風に作った方が早いな。
他人の作ったDBとかわけわからんし。
access挟まなきゃもっと処理早いでしょ。
accessのクエリからどう処理してるかは分かるけどどうしてそう処理してるかはわからん。
最終データだけあればいい。
そんなものはプログラマーが書いた方が早いし、処理も負荷も少なくてすむ。
問題は誰の仕事なのかって事くらいかな。
必要なデータはころころ変わる
必要なデータはコロコロ変わる。
作ったって結局そこから何もわからない事もある。
重要なのはそのデータから何が言えるかって事だけ。
ちょっとこういうの見たい。
結果、それからでは分からなかった。
じゃあこういう切り口はどうであろう。
なんてコロコロ変えていると他人に作ってもらうと都度打ち合わせとかすっごい時間がかかる。
相手はデータ作り係じゃないし。
じゃあ、こういうデータを見ればこういう事が分かるというところに時間を掛けると、違ってた時にもっと時間が掛かる。
なので、自分でできた方が仮説・実行・検証が早い。
有効な検証結果が出て打ち合わせでそうなのかどうかを議論する方が早いし有益ではある。
相手に処理を頼むにしても、どのくらい時間を奪う事になるか大体わかる。
これも程度の問題だと思うけど、相手に適したやり方が一番だろうなぁ。
そもそもの議論があさっての方向に行き、その処理を頼み、出てきた結果から何もわからないという事が多いがそもそも話す相手を間違えている事もある。
どう動くかの前段階でこんな感じで、結局こうする、と決まってしまう事もある。
さて、この人たちをどう評すべきなのかな。
ディスカッション
コメント一覧
まだ、コメントがありません