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 $