UNIX系とBorland C++(dirent.hがあるとはありがたい)でコンパイル可能。VC++の場合は、FindFirstFileとFindNextFileを使わなくちゃいけない。
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
void test(char *name){
/* DIR構造体へのポインタを宣言 */
DIR *dirp;
/* dirent構造体へのポインタを宣言 */
struct dirent *entp;
/* DIR構造体へのポインタを得る(引数はパス) */
dirp = opendir(name);
/* dirent構造体へのポインタを得る */
while ((entp = readdir(dirp)) != NULL){
/* ファイル名を出力 */
printf("%s\n", entp->d_name);
}
closedir(dirp);
}
int main(int argc, char **argv){
if(argc == 1){
test(".");
}else{
test(argv[1]);
}
return 0;
}
file:///usr/include/linux/dirent.h に 構造体direntの宣言 がある。
dirent関数一覧 DIR *opendir(DIR *); int closedir(DIR *); struct dirent *readdir(DIR *); void rewinddir(DIR *); void seekdir(DIR *, off_t); off_t telldir(DIR *); int scandir(const char *, struct dirent ***t, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **)); int alphasort(const struct dirent **, const struct dirent **); size_t getdirentries(int, char *, size_t, off_t *);
Linuxで、構造体DIRが見つからない……どこだろ。とりあえず、他のプラットフォームでも。
Solaris9付属のdirent.hより、構造体DIRは、こんな感じ。
#if !defined(_POSIX_C_SOURCE)
&& !defined(_XOPEN_SOURCE)
typedef struct {
int dd_fd; /* file descriptor */
int dd_loc; /* offset in block */
int dd_size; /* amount of valid data */
char *dd_buf; /* directory block */
} DIR; /* stream data from opendir() */
#else
typedef struct {
int d_fd; /* file descriptor */
int d_loc; /* offset in block */
int d_size; /* amount of valid data */
char *d_buf; /* directory block */
} DIR; /* stream data from opendir() */
#endif
MinGW付属のdirent.hより、構造体DIRは、こんな感じ。
typedef struct
{
/* disk transfer area for this dir */
struct _finddata_t dd_dta;
/* dirent struct to return from dir */
struct dirent dd_dir;
/* _findnext handle */
long dd_handle;
/*
* Status of search:
* 0 = not started yet
* (next entry to read is first entry)
* -1 = off the end
* positive = 0 based index of next entry
*/
short dd_stat;
/* given path for dir with
search pattern (struct is extended) */
char dd_name[1];
} DIR;
参考:
--- 昨日 ---
家に帰ると、郵便局の不在通知書が投函されていた。
立方体の箱が届くらしい。差出人は不明。
電話で郵便局に訊ねると、立方体の大きさは1辺が6cm程度らしい。
不安なので、Webで似たような事例がないか探した。
まさか、炭疽菌(たんそきん)や爆弾では……?
特に同じような事例は見つからなかった。
ふと思った。ルービックキューブの大きさか?
まさか。そんなものが届く予定はない……
--- 今日 ---
Techオリジナル ルービックキューブでした(^_^;
っていうか、差出人ぐらい書いてほしい>Tech総研
あと、無闇にJavaScriptを使ってるのもいまいち!
キューブはありがたくもらうけど。
行きました。ほとんど金のかからないデートスポット? ほとんど、子供連れ家族ばかり……カップル皆無!
ついにCD化。「いっぱいきけて,いっぱいしゃべれるソング」が5つのバージョンで収録されているらしい。初回特典は、スーパーピクチャーレーベル, 腰フリNOVAうさぎPOP. 発売予定日は2003-04-23.
「キャリア・コース」と「ミーハー・コース」に分けているけど、「ミーハー・コース」のアドバイスが少ない。作者が短期集中型&キャリアな人だからかなぁ。長期日常組み込み型の自分にはあまり参考にならない気がする。中身の話は読みやすくておもしろいから、読み物としては良かった。
又聞きの又聞き、小学校の教師から聞いた話。
最近は、子供の成績を見て、学校へ乗り込んでくる親がいるらしい。「なんでウチの子の成績が下がってるの! 説明しなさいよ!」みたいな感じだろうか?
教師は成績が下がった理由を説明しなければならないらしい(^_^;ふぅ。
読み物としておもしろい(お笑い系?)。技術系として役に立つ情報はそれほどないけど、なかなか現場の生の声っぽいところがいい。
著者の経歴を見ると……転職したことがないなら、転職に関してはここまで自分の意見を書かないほうが良いのでは? と思う。
途中途中にあるイラストは、なかなかシュール。比喩表現を淡々と絵にした感じ。イラストレーターは Akihiro Sakaguchi とクレジットされてる。Webを軽く検索したけどみつからないなぁ。
指定したディレクトリ以下に対してコマンドが発行できたらいいなぁ。**/*とかで実現できる気もするけどよくわからない。-r オプションが存在しないコマンドって使いにくいなぁ。
以下は、指定したディレクトリ以下のファイルすべての行数を出力するスクリプト。Bourne Shell 使用。
#!/bin/sh
# if paramters are not exist,
# the START_POINT is set current directory.
if [ $# -eq 0 ]
then
START_POINT=.
else
START_POINT=$1
fi
echo $START_POINT
find $START_POINT | while read FILENAME
do
if [ -f $FILENAME ]
then
LINE=`cat $FILENAME | wc -l`
echo "$LINE $FILENAME"
else
echo "00000000 $FILENAME"
fi
done
コメント部分の英語が英語圏の人に通じるといいなぁ。英語勉強中。
横着プログラミング: 小粒なツールたちを見ると、whileでたくさんのファイルをひとつづつ処理することについて書いてある。while使いになれば -r オプションがなくても問題なし?
C言語の学習用に素数のリストを作成するプログラムを書いた。たぶん3年前。
数値が素数であるかチェックする方法: 対象数値未満の整数(1を除くすべて)で割り切れなければ素数。って、1001が素数であるかを調べるには最高で1000回の計算をしなければいけない……2 * 500 = 1000 だから 500 以上で割るプロセスは無駄になるし……効率がすばらしく悪い。
そこで、知人に教えを請うたところ「割り切れる数値にフラグを立てる」というアルゴリズムを紹介してくれた。対象の数値が素数であるかチェックするのではなく、素数でない数値にフラグを立てていく。この手法は知人のオリジナルだと思いこんでいたのだが……
久々にそんなことを調べていたら IDM | 素因数分解 | エラトステネスの篩い なるページを見つけた。先の手法は「エラトステネスの篩い」という「最も古典的な素数表作成アルゴリズム」であるらしい。数学っておもしろそうだなぁ。
アクセス解析をしてみようと思って、有名なツールをいくつかインストールしてみた。
Analogをインストールすると部分部分で文字化けが発生。他に検索エンジンの検索文字列が化けないように対処するパッチもあるみたいだけどちょっと面倒っぽい。
Webalizerはけっこう画面が綺麗。検索文字列はやっぱり化けるが、対処方法があるみたい。インストールがけっこう面倒な感じなので、バージョンアップ時等は苦労しそう。
//面倒っぽいWeblizerのインストール風景 # tar zxf libpng-1.2.5.tar.gz # cd libpng-1.2.5 # ./configure # cp scripts/makefile.std Makefile # make # make test # make install # cd .. # tar zxf gd-2.0.12.tar.gz # cd gd-2.0.12 # ./configure # make # make check # make install # cd .. # tar zxf webalizer-2.01-10-src.tgz # cd webalizer-2.01-10 # ./configure --with-language=japanese # make # make install
AWStatsは、見た目が綺麗で、高機能で、コンパイル不要(Jcode.pmのインストールってコンパイルしてないんだろうか……)な感じなので期待大。最新版は5.5みたいだけど、5.0を「完全」日本語化してくれている方がいるので、それを利用する。AWStats Ver.5.0完全日本語版のページを参考にしてインストールしたが、特に難しくない(CGIは使わない)。解析結果を見てみたが、いい感じ。パッと見は検索文字列も化けていない(と思ったがいくつか化けてる……)。で、ログファイルの扱いに関してのチューニングは後日するとして、サーバの運用に組み込んだので、とりあえず様子見。
「結婚したいけど、いい男がいない」って言っている女性は単にわがままなのでは?
何かを捨てなきゃ、何かを手にすることは難しい。いろいろ欲しけりゃ、今以上の努力が必要なのでは?
誰ですか! 「ペニス」「サイズ」というキーワードで検索してここに来る人は!
というわけで、Googleでそんなのを検索したら、わはははははははは。おもしろいサイトが次々に見つかる。以下、引用しまくり。
ペニスのサイズについて改めて考えましょう
上記のデータを参考にすると、日本人の平均的なペニスのサイズは、13・14cm前後と言えそうです。ほとんどのデータはペニスを付け根(膀胱のすぐ上)から測っています。まずはご自分のサイズを確認してみてください。ホッとひと安心という方が多いのではないでしょうか。
まず太ってお腹が出ている方は、腹部のダイエットから始めましょう。太った状態だとペニスの根元あたりにも脂肪がついており、体位によっては下腹部が邪魔をして女性との距離を離す事になりますので、深いインサート感が得られない場合があります。
ずーっと昔からある「真空ポンプ」型のペニス増大器具は、いまだに通販で根強い人気を誇っているようです。
最後の手段として外科手術があります。有名な高須クリニックでも、長茎術などのサービスを行っています。
ついにギネスにペニスサイズ部門
インチキ対策も万全で、長さの測定は医者が行わなければならず、それに加えて2人の証人が必要。ギネスブック広報担当者は「これまでオッパイサイズ部門があったので、このペニスサイズ部門を加えることで男女公平になった」とコメントしている。
サイズアップ・アカデミー ペニス増大に関する研究団体
本学は、ペニスの増大に関する専門的な研究・新旧の製品のあらゆる情報を集約し、現代日本の男性諸氏に寄与するための研究団体です。
スラッシュドット ジャパン 国民投票 のネタ。
ソースコードのインデントはを見ると、今のところ「TABにきまってるじゃん」が圧倒的に多い。他人をソースコードを共有することが多い会社員としては、ちょっと安心。自分もTAB派。
「TAB+SPACE混在」はやめてほしい。ホントに。っていうか、ドキュメントとか書くのに TABと半角空白と全角空白を混ぜこぜにしてる人も何とかならんのか……
_ カリウド [確かにTABだよねぇ。でも、TABを2,4,8のどれに設定するのかも決めておかないと表示が崩れるのがヤだね。個人的に..]
_ カリウド [っつーか、何でそんなキーワードでココが引っかかるんだ!?(笑) さすがNI-Lab氏だ。]
_ NI-Lab. [TABの桁数で崩れる問題は、イコールの左辺右辺を合わせるからでは? インデントのみに使えば崩れないはず。UNIX文化..]
_ NI-Lab. [「サイズアップ・アカデミー」という名前にはワラタ。]
_ NI-Lab. [ペニスの《カリ》はなんのためにある? ( http://www5.big.or.jp/~hellcat/news/0..]
参考リンクをメモ。
SDこぼれ話(2)SDの根幹‐ファイリングシステムによると、アメリカでは高校でファイリングシステムを学ぶらしい。
このごろ思うこと。メモの技術って自分の生涯のテーマのひとつ? っていうか、けっこう多くの人がメモについて語る/悩むことを考えると、人類のテーマのひとつか(^_^;
ChangeLogメモを書きはじめてもう1年。これはいいメモツールだ。特に検索には使いやすい。自分の場合は、TODOリストもまぜて書いていたりする。参考: 横着プログラミング: Unixのメモ技術
と妻が申しております。
今日も朝から意味のない「清き一票をよろしく」連発。
「私は○○をやります。○○ができます」という具体案を言ってくれる選挙カーを見かけないなぁ。
選挙活動って失敗している転職活動みたい……
デスマーチ撲滅委員会を見ていて思ったこと。ソフトウェア開発プロジェクトにおけるデスマーチ(death march, 死の行進)の定義ってなんだろう? というわけで、以下ちょっと調べてみた結果。
Edward Yourdon 著 「デスマーチ―なぜソフトウエア・プロジェクトは混乱するのか」によると、以下の4つのどれかに当てはまるプロジェクトは、デスマーチプロジェクトであるらしい。
理想的や常識的なものと倍の差があるということかな。
デスマーチ突入の原因は、以下のようなことらしい(本を読まずにウェブページでいろいろ見た情報を書き出しただけ……)。
参考:
_ ∩ ( '∀')彡 ゴッゴル! ゴッゴル! ( ⊂彡 | | し/⌒J
ヅラがずれたらエラいこっちゃ!
書き手: NI-Lab.
_ カリウド [おぉ!それはオメデトウ。しかし早いねぇ(^^; 次はいつ??]
_ NI-Lab. [次の日が決まった。さて、どうやって休もうか……]
_ NI-Lab. [月曜日って、近いなぁ。]
_ カリウド [カゼ休でしょ(笑)]