ActivePerlでLF(0x0a)単体の出力
2006-12-14-1 / カテゴリ: [win][programming][perl] / [permlink]

ActivePerlだと、"\n"は当然、"\x0a"でも、出力時に 0x0d が着いちゃうんだよね。
0x0a 単体を出力するには、(UNIX/Linux作業時は半ばおまじないと化していた) binmode を使用する。

binmode STDOUT;
print "\n";
これで 0x0a 単体。

ファイルハンドル出力なら
open F, "> file.txt"
  or die;
binmode F;
print F "\n";
close F;

もはや Windows 上での開発(C/C++)のソース解析・修正用にしか使ってないな・・・<Perl

関数一覧表示
2006-12-08-1 / カテゴリ: [programming][emacs][meadow] / [permlink]

関数を一覧表示する — summarye.el
現在のバッファのソースコード内にある関数定義の一覧を表示する。
navi.el の方が(デフォルトでは)使いやすそうだったけど、あいにく手元の(一覧を表示したい)C++ソースでちゃんと動いてくれなかったんで summarye.el を使用。
便利なり。

iniファイルの読み書き
2006-09-13-1 / カテゴリ: [win][programming][c] / [permlink]

お手軽簡単。設定ファイルの読込み。
int n;

n = GetPrivateProfileInt("Option", "foo", 100, "config.ini");

[Option]
foo=1024
bar=c:\winnt
なconfig.iniを読み込む。n は 1024 になる。(fooがなければ100)

文字列の場合は
char str[BUF];

GetPrivateProfileString("Option", "bar", "c:\\windows", str, sizeof(str), "config.ini");
で、str に "c:\winnt" が入る(barがなければ c:\windows)
戻り値はstrに入った文字列長。

iniファイルへの書き込みは
WritePrivateProfileString("Option", "baz", "qux", "config.ini");
config.iniのセクション"Option"に"baz=qux"を書く。セクション・キーがなければ新規に作成される。成功すれば0以外、失敗は0が返る。キー名をNULLにすればセクションが、値をNULLにすればキーが削除される。
数値を直接書くAPIはないので、sprintfあたりで文字列を生成して書き込む。

BCCで文字コード変換
2006-09-08-1 / カテゴリ: [win][programming][c] / [permlink]

とゆーアレで。
普段ならPerlでJcodeなり使ってとっとこやるとこだけど、妹さん(winユーザ)からアプリ(数千通のメールの集計処理)のリクエストなのでPerlインタプリタは候補からはずれる。
BCC(Borland C++ Compiler)で文字コードを変更する必要が。
ざっと検索した感じでは、iconvのWindows用DLLが使えそう。
続きを読む

日毎のファイルで「続きを読む」(タイトル修正)
2006-07-31-1 / カテゴリ: [perl][programming][changelog][chalow] / [permlink]

(タイトル間違えた… デフォルトの「アイテム毎で続きを読む」を改造、だ)
できた^^;
というか、かなり無理矢理;
続きを読む

DESで暗号化
2006-07-25-2 / カテゴリ: [programming][暗号][perl] / [permlink]

Crypt::DES で。超概略。

暗号化
use Crypt::DES;

my $data = ...;
my $key = ...;

my $cipher = Crypt::DES->new($key);
my $encdata = $cipher->encrypt($data);

復号
my $encdata = ...;
my $key = ...;

my $data = $cipher->decrypt($encdata);
平文($data)と鍵($key)は8バイトであること。

DES(Data Encryption Standard)ノート
2006-07-25-1 / カテゴリ: [programming][暗号] / [permlink]

3DESでなくDES。今更と言うべからず。仕事で(SDKにないから)作るハメになったのでメモ。

1. FIPS 46-2 (DES), Data Encryption Standard
2. DESの解説
3. DESアルゴリズムチェッカー
4. DES暗号プログラム

2はわかりやすくてgood。デバッグは3で^^;
完成品(C/C++)は4で。

構造体メンバのクラスはデストラクタされない
2006-04-23-1 / カテゴリ: [programming][c++] / [permlink]

typedef struct _Foo {
  ClsA a;
  ClsB b;
} Foo;

Foo *pFoo = (Foo*)malloc(sizeof(Foo));
:
:
free(pFoo);  // pFoo->a と pFoo->b のデストラクタは動作しなかった
Referrer (Inside): [2006-12-21-2]

参照渡し
2006-04-13-1 / カテゴリ: [programming][c++] / [permlink]

type function(type &value) {
  :
}

x = 123;
function(&x);

function の中で value に変更を加えると、呼び出し元の x も変更される。

配列の operator
2006-04-12-1 / カテゴリ: [programming][c++] / [permlink]

operator[](type foo) const

Makefile メモ(超基礎編)
2006-03-20-1 / カテゴリ: [c][programming] / [permlink]

ターゲット:<タブ>依存ファイル
<タブ>コマンド列

foo.c 1個のとき (実行ファイルfooをgccで生成)
foo:<tab>foo.c
<tab>gcc -o $@ $^
$@ は、ターゲットに展開される(-> foo)
$^ は、全ての依存ファイルに展開される(-> foo.c)

foo.c と foo.h のとき(foo.c は foo.h を include)
foo:<tab>foo.c
<tab>gcc -o $@ $^
foo.o:<tab>foo.h

clean は
clean:
<tab>$(RM) foo *.o *~
とか

(数字の)文字列を16進のバイト列とみなして変換
2006-03-14-1 / カテゴリ: [programming][perl] / [permlink]

文字列 "616263640a" を "0x61 0x62 0x63 0x64 0x0a" として処理
$str = "616263640a";
$str2 = join "", map { chr oct "0x".$_} ($str =~ /.{2}/g);
($str2 は "abcd\n")
きっと,もっとウマい方法があるはず…(/_-)

16進表記の文字列を数値として取得する
2006-03-13-3 / カテゴリ: [programming][c] / [permlink]

char hexstr[] = "0x80";
int  n;
sscanf(hexstr, "0x%02X", &n);
n は 128

[2005-04-20-1] 応用力が足りないな>私

ネットワークバイトオーダへの変換
2006-03-13-1 / カテゴリ: [network][programming][c] / [permlink]

htonl ... long int htonl(long int hostLong) /* host to network long */
htons ... short int htons(short int hostLong) /* host to network short */
ntohl ... long int ntohl(long int netLong) /* network to host long */
ntohs ... short int ntohs(short int netLong) /* network to host short */
ようやく「読める」ようになった.
参考: TCP/IP ソケットプログラミング C言語編

:
struct sockaddr_in server;
:

:
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(PORT);
:

スタイルの変更
2006-03-06-2 / カテゴリ: [programming][c][meadow][emacs] / [permlink]

ずっと Perl やってたからかな? C でも BSD なスタイル(↓)で書いてる.
int function() {
    :
}
(Javaもこのスタイルっぽい)

まぁ,いろいろあって GNU スタイル(↓)に改宗しよーと思い,
int function()
{
    :
}
Meadow でコードを書いてたら,関数は良いが制御構文が…
if (foobar)
  {
    :
  }
えー!? ナニコレ!?

http://www.02.246.ne.jp/~torutk/cxx/emacs/indentation.html
どーやら Emacs では,デフォルトのスタイル(c-set-style で設定)は gnu で,上記の自動インデントを行うみたい.さすがに括弧の位置はインデントしたくないので,stroustrup を使うことにする.これなら関数も制御構文も
foobar
{
    :
}
になってくれた.

.emacs はこんな感じ
(add-hook 'c-mode-common-hook
          '(lambda ()
             (c-set-style "stroustrup")
             (setq c-basic-offset 4)       ; インデントは4文字
             (setq indent-tabs-mode nil))) ; ハードタブじゃなくてスペース

タグジャンプ(定義位置の参照)
2006-03-06-1 / カテゴリ: [programming][meadow][emacs] / [permlink]

あらかじめ
% etags *.{c,h}
としておく.すると TAGS というバイナリファイルができる.
多分 VC++ における bsc ファイルだ.
この状態で Meadow で参照対象にカーソルを合わせ
Esc .  (M-x find-tag)
(または M-.)すればジャンプする.
おまけで,M-/ の補完も賢くなる.
etags.exe は $MEADOW/bin 以下.パス通しとけ.

標準ライブラリの関数や定数なんかも含めたければ,/usr/include/*.h /usr/include/*/*.h も引数に入れれば良い.
が,Cygwin + Meadow 環境では
% etags *.{c,h} c:/usr/include/*.h c:/usr/include/*/*.h
じゃないと「ンなファイルねぇよ」になる.

会社のデスクのリラックマは
2006-02-21-1 / カテゴリ: [ぬいぐるみ][][programming] / [permlink]

「プログラミング作法 第5章 デバッグ」より引用
自分のコードを他人に説明してみよう

ある大学の計算機センターのヘルプデスクのそばにはテディベアのぬいぐるみが常備されており,摩訶不思議なバグに悩む学生は,人間のスタッフに相談する前にそのぬいぐるみに向かって説明しなければならないことになっていた.
バグが見つからないとき,自分のコードを見つめなおす一つの手段に他人に説明する,というのが有効という話.相手はプログラマでないどころか人でなくても構わない.期待されるのは他者の助けではなく,自分の頭を整理する事なのだ.

そう.会社のデスクにリラックマのぬいぐるみを置いているのは,こーゆー理由なんだよ.[2005-10-16-1]

会社にいねーけどな(笑)

ループ制御
2006-02-03-1 / カテゴリ: [c][perl][programming] / [permlink]

ループを抜ける
break (C)
last  (Perl)

ループ条件を再評価(次のループ)
continue (C)
next     (Perl)

あれ、Perl にも continue あったような…
man perlfunc "continue BLOCK"

C にも unless が欲しいな…

QRコード メモ
2006-01-10-3 / カテゴリ: [programming][携帯] / [permlink]

取得サイズが 31 とかなのに、printf %s してみても、10文字程度しか出力されない… 0x00 が入ってるのかと 31 バイト全部 dump してみると、やっぱり 0x00 が。つか、他にも制御コードがやたら入ってる。

http://www.denso-wave.com/qrcode/qrfeature.html より
QRコードは、数字・英字・漢字・カナ・ひらがな・記号・バイナリ・制御コード等あらゆるデータを扱う事が可能です
ぉぉぅ、何でもアリだったか。

(携帯カテゴリでいいのかな…)

定義・参照位置のズレを直す(VC6.0)
2005-12-16-1 / カテゴリ: [win][programming][c][VC++] / [permlink]

いつのまにか「定義位置を表示」「参照位置を表示」が実際の位置からズレてしまうことがある。
プロジェクトのブラウズ情報である .SBR と .BSC がおかしくなっている状態なので、一度この2つのファイルを削除して、「定義位置を表示」とかすれば、ブラウズ情報を生成するためにプロジェクトをリビルドしますか? と聞いてくる。

.SBR と .BSC は Debug ディレクトリ以下にあるかも。

// VC++ カテゴリを追加...
カテゴリ: programming / 前ページ 1 2 3 4 5 6 7 次ページ

最終更新時間: 2013-05-02 16:12