09:52:49 # Life tlaをつかっていて気づいた点. 先週くらいから,家計簿を電子化しようとしていて,そのツールとして 処理系はawkでバージョン管理は分散レポジトリ形式のtlaを利用する,ということを 試している.awkをつかっているところがなんともoldtypeだが, tlaをつかっているところが味噌. 動機は,tlaが分散レポジトリを扱える,フリーな処理系であること. 出先でノートパソコンを使っていて, ネットワークに接続できなくてもtla commitとかできて, オンラインになれば,tla star-mergeすればよい. イントラネットからしか見れないサーバでバージョン管理をする際などに便利じゃないか,と考えている.
まだ一週間だが,こういう問題があるんだろうなぁ,と今思っている点.
19:06:10 # Life libgcrypt11でhash関数を使う方法を調べてみた. ドキュメントが古かったりして,はめられたが,includeファイルとソースにあたったらどうやら, これでいけるみたい. sha1sumコマンドの出力と同じような出力が出ることは確認...というか,ドキュメントを読むより, sha1sumのソースにあたったほうがはやかったか.
/* Code snippet to calculate SHA1sum using openssl libs. Copyright 2005 Junichi Uekawa, given to public domain. $ gcc openssltest.c -lssl $ ./a.out < ./a.out eae8189278303caaa78f2d89e6a6ebeb7d37b554 $ sha1sum ./a.out eae8189278303caaa78f2d89e6a6ebeb7d37b554 ./a.out */ #include <stdio.h> #include <openssl/sha.h> main () { SHA_CTX s; int i, size; char c[512]; unsigned char hash[20]; SHA1_Init(&s); while ((size=read (0, c, 512)) > 0) SHA1_Update(&s, c, size); SHA1_Final(hash, &s); for (i=0; i < 20; i++) printf ("%.2x", (int)hash[i]); printf ("\n"); }
以下のようになる.
/* Code snippet to calculate SHA1sum using gcrypt. Copyright 2005 Junichi Uekawa, given to public domain. $ gcc hashtest.c $(libgcrypt-config --cflags --libs) $ ./a.out < a.out 46b25183fba09a11c4f71bc5a12804756a362639 $ sha1sum ./a.out 46b25183fba09a11c4f71bc5a12804756a362639 ./a.out */ #include <stdio.h> #include <gcrypt.h> main () { gcry_md_hd_t g; int i, size; char c[512]; unsigned char * hash; gcry_md_open (&g, GCRY_MD_SHA1, 0); while ((size=read (0, c, 512)) > 0) gcry_md_write(g, c, size); gcry_md_final(g); hash=gcry_md_read(g, 0); for (i=0; i < 20; i++) printf ("%.2x", (int)hash[i]); printf ("\n"); }
$Id: dancer-diary.el,v 1.87 2005/04/06 02:41:33 dancer Exp $