Archive
GET /うんたらかんたら
pthread なメモ
aacgain で音量の調節
放送そのままの音量だとかなり小さい音量なので、 TvTest で見るときも基本的に
音量増幅 x2 で再生しています。
アンプ通せば良いんですけど、警告音とかが突然大音量で流れるのは心臓に悪いので、
通常利用優先ですね。
エンコード後も、そのままでは音量が小さいので、 AAC な音声を調節するツール
aacgain を使って音量を調節してみました。
aacgain のオプションは、以下のようにしました。
aacgain /g 5.0 /t
3dB 違うと、倍の音量になるのですが、倍でも少し小さいので、 5dB に、
一応、テンポラリファイル作る設定にしました。
ついでにドロップするだけで 5dB 上げるバッチファイルも作ってみました。
[DL] aacgain
同じフォルダに aacgain.exe を入れておくと使えます。
今日のメモ
今日の新発見
strpos と rtirm のメモ
// 初期化
int max = strlen(str);
int cnt = 0;
int flg;
// ターゲットと同じか \0 まで繰り返す
while (*str != tar && *str != ‘\0‘) {
str++;
cnt++;
// 文字数を超えたら break
if (len < cnt)
break;
}
// ターゲットがあれば位置を返す
if (*str == ‘\0‘ || len < cnt) {
return(-1);
} else {
return(cnt);
}
}
char *rtrim (char *str) {
// 改行コードの位置を取得
int rpos = strpos(str, ‘\n‘);
// 改行コードの位置を \0 に置き換え
if (rpos > -1)
str[(rpos-1)] = ‘\0‘;
return(str);
}
まだまだ、 C はダメダメです。
ちなみに、 PHP の strpos は、指定文字が見つからない場合 0 を返してきますので、
型の判断を必要とする !== を使って
$str = "abcdefg";
if (strpos($str, "c") !== false) {
print "str の中に c が見つかりました!";
} else {
print "str の中に c が見つかりませんでした。";
}
と、してやる必要がありますね。
ファイルサイズに 512 加算される謎
read.js では、スレッドのファイルサイズに対して 512 加算して表示しています。
前々から、この 512 は一体何なのだろう?と考えていたのですが、
今日、readc.cgi を修正するときに気がつきました。
ずばり、 kB 対策です。
スレッドの kB は、(ファイルサイズ + 512) / 1024 で計算され、
小数点以下は round で四捨五入されるのです。
このとき、スレッドのファイルサイズが 511 だと 1024 で割った際に
0.5 を切ってしまい、 0kB と表示されてしまうのです。
これを防ぐために、あらかじめ 512 を加算し計算しているのではないかと。
大したことではないのですが、何となくスッキリしました。
ということで、容量表示には 512 を加算しましょう運動開始。
プログラムが書けるようになるには?
ハードディスクがギリギリになったのは、ちょっと理由があって、
2ちゃんねる(N.T.Technology)の有料サービス● のお試し版が株式会社ゼロ運営のゲーム
ニダークエスト2で貰えたため、それを使って過去ログを集めてました。
ざっと、現在までにニュース速報VIPやPCゲーム板など数十万スレッドが収集でき、
当分、読む物には困りそうもありません。
# 前にもこんな事書いた気がする。
これが勉強がてらC言語で書いたディレクトリリストと datファイルの先頭4文字を判断するプログラム。
CodeGearのサイトにあったリファレンスを見つつ作ってみたんだけども、意外と簡単に動くものです。
こうやって少しづつ作っていくことで、段々と作れる物が増えて行ければいいなぁ。
PHPは、関数が豊富なのと、実用的というか、直ぐ使えるような関数が一杯なので、
それと較べると、C言語は結構しんどいです。
「PHPポケットリファレンス」みたいな本がC言語にも有ればいいのになぁ。
「プログラミング言語C」の第2版は読んでみましたが、結構大変。
構造体とかが使えるようになれば、また一段と作れる物が増えるんだろうなぁ。
行数のカウント
用途が用途だけに行数をカウントする処理を結構書いたりするのですが、
今まで file 関数で配列に入れて count 関数で取得という方法を主に使っていたんですよね。
最近になって、クローラーの改良時に実は foepn も結構早いんじゃね?
ファイルアクセスも減るんじゃね?という感じでベンチマークを取ってみました。
まずは、 file 関数を使った例。count も sizeof もエイリアスなので、どちらでもOK。
$buf = file(”hogehoge.dat”); //1001行のファイル
$count1 = count($buf);
unset($buf);
これは、1000回ループで 4.653011 秒という結果になりました。
一方 fopen を使ってカウントする例。
$fp = fopen(”hogehoge.dat”, “r”); //1001行のファイル
for ($count2=0;!feof($fp),fgets($fp);$count2++);
fclose($fp);
こちらは、 3.800635 秒とコンマ7程度早くなりました。
しかし、結局1000回実行してやっとコンマ7という結果でした。
早いには変わりないと思いますが…、まぁこんなもんなのかなぁ。