前の月 / 次の月 / 最新

hiChangeLog / 2007-09

2007-09
SMTWTFS
1
2345678
9101112131415
16171819202122
23242526272829
30

2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12

2007-09-29 Sat

pythonでファイル入出力 [python]

初歩の初歩だが、pythonのファイル入出力についてメモ。
下記コードは、既存のテキストファイル(拡張子txt)の先頭に'hello'を加える。
ファイルのオープンが2回あるのがダサいので直したいけど、まあ動いてるからいいや。

import glob, sys

for fname in glob.glob('*.txt'):
    f = open(fname, 'r')
    str = f.read()
    f.close
    f = open(fname, 'w')
    f.write('hello\n')
    f.write(str)

2007-09-25 Tue

pythonのCGIのデバッグを行う際にはcgitbモジュールが便利 [python]

プログラム開発に動作テストやデバッグは必須。でもCGIの場合、実行結果はHTTPサーバを通じブラウザで見るので、通常と比べエラー出力の吟味などデバッグ作業がやや不便である。

だがpythonにはcgitbなるモジュールが用意されており、これがある程度克服できる。

import cgitb; cgitb.enable()
とスクリプトの先頭に書いておくと、スクリプト実行に失敗した折にその内容がHTMLで見られる。

もっとちゃんとした説明は以下を参照:
11.2.9 CGI スクリプトをデバッグする

URLのリダイレクトはCGIでもmetaタグでもできる [HTML]

タイトルの通り。

CGIでやるならば、下記のような出力をCGIにさせればよい。

print "Location: http://www.issp.u-tokyo.ac.jp/\n\n"

HTMLタグでもできる。ただし実装はブラウザに依存するそうなので、本質的ではないだろう。
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://www.issp.u-tokyo.ac.jp/">

上記はリダイレクト - futomi's CGI Cafeの引用に過ぎません。

2007-09-02 Sun

C言語でカレントディレクトリのファイルを列挙する [C/C++]

カレントディレクトリのファイル一覧はlsやdirコマンドで取得できる。これをC言語からやるにはどうすればよいか?

system("ls")
がひとつの解。でもコマンドを使わない方法もある。

UNIX/Linux環境ならopendir/readdir/closedirが使えるようだ。
#include <stdio.h>
#include <dirent.h>

unsigned int ListFilesAndCountFileNum(void){
      DIR *dir;
      int filenum;
      struct dirent *dp;
      if((dir=opendir("./"))==NULL) return -1;

      filenum = 0;
      while((dp = readdir(dir)) != NULL){
              filenum++;
              printf("#%d: %s\n", filenum, dp->d_name);
      }
      closedir(dir);
      return filenum-2;       // subtracting current-directory (.) and parent-directory (..)

}

WindowsならFindFirstFileとか。
int ListAndCountFiles(const TCHAR* mask){
  WIN32_FIND_DATA w32fd;
  HANDLE hfind = FindFirstFile(mask, &w32fd);
  int i = 0;
  if (hfind != INVALID_HANDLE_VALUE) {
    do {
      i++;
      printf("#%d: %s\n", i, w32fd.cFileName);
    } while(FindNextFile(hfind, &w32fd));
  }
  FindClose( hfind );
  return i-2;       // subtracting current-directory (.) and parent-directory (..)
}


参考:
-コンピューター:C言語講座:ディレクトリ内容の読み出し
-C言語で、カレントディレクトリのファイル一覧を表示する、コマンドってありますか?
-サブフォルダ(サブディレクトリ)も含めてファイルを検索するには?

C言語でログを取る関数を書いた。 [C/C++]

表題の通り。何の工夫もないが、時間を扱うためのコード雛形としてメモっとく。

#inlucde <stdio.h>
#include <time.h>
void log(const char* str){
        FILE *fp;
        struct tm *st;
        time_t t;
        char month[][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

        t = time(NULL);
        st = localtime(&t);

        fp = fopen("log", "a");
        fprintf(fp, "%d %s %.2d: %.2d:%.2d:%.2d\n", st->tm_year+1900, month[st->tm_mon], st->tm_mday, st->tm_hour, st->tm_min, st->tm_sec);
        fprintf(fp, "%s\n\n", str);
        fclose(fp);
}

2007-09-01 Sat

古い.procmailrcが残っていたのでローカル宛メールが勝手に古い振り分け規則に従っていた

汎用性ゼロの自分用日記。
普段メールの振り分けにmaildropを使用している。だがその振り分け先にいくつかmh形式でメールが配送されていることに気付いた。それらは皆ローカル宛メールだった。ローカル宛メールは取得の設定をした覚えがないので、それらが何故maildropの指定先に、しかもmh形式となって、ちゃっかり紛れているのか大変不思議に思った。

発見当時はかなり悩んだが、何てことはない、古い.procmailrcが残っていたのだ。maildropの振り分け先も基本的にそれを踏襲したので、紛らわしい場所に振り分けられてしまっていたのである。
教訓:後片付けを怠らない

2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2010-03-08 22:21