2008年2月21日星期四

some converter tools

some converter tools

highlight - An universal source code to formatted text converter
html2text - An advanced HTML to text converter
src2tex - A converter from source program files to TeX format files
mhonarc - Mail to HTML converter
libhtml-clean-perl: /usr/bin/htmlclean

checkbox - test plain for mutt

<table width="100%">
<tr class=tablelist_tr>
<td align="center" class=tt><input value="全选" type="button" onclick="setAll()"></td>
<td align="center" class=tt><input value="清除" type="button" onclick="clsAll()"><br></td>
</tr>
<tr class=tablelist_tr>
<td align="center" class=tt><input id="g11" type="checkbox">g11<br></td>
<td align="center" class=tt><input id="g12" type="checkbox">g12<br><br></td>
</tr>
<tr class=tablelist_tr>
<td align="center" class=tt><input id="g21" type="checkbox">g21<br></td>
<td align="center" class=tt><input id="g22" type="checkbox">g22<br><br></td>
</tr>
<tr class=tablelist_tr>
<td align="center" class=tt><input id="g31" type="checkbox">g31<br></td>
<td align="center" class=tt><input id="g32" type="checkbox">g32<br><br></td>
</tr>
<tr class=tablelist_tr>
<td align="center" class=tt><input value="全选" type="button" onclick="setAll()"></td>
<td align="center" class=tt><input value="清除" type="button" onclick="clsAll()"><br></td>
</tr>
</table>
<br>

<script>
function setAll() {
var cs = document.getElementsByTagName("input");
for(var i = 0; i < cs.length; i++) {
if(cs[i].type == "checkbox") {
cs[i].checked=true;
}
}
}
function clsAll() {
var cs = document.getElementsByTagName("input");
for(var i = 0; i < cs.length; i++) {
if(cs[i].type == "checkbox") {
cs[i].checked=false;
}
}
}
</script>

checkbox - test html for mutt


g11
g12

g21
g22

g31
g32



function setAll() { var cs = document.getElementsByTagName("input"); for(var i = 0; i < type ="=" checked="true;" cs =" document.getElementsByTagName(" i =" 0;" type ="=" checked="false;">

2008年2月19日星期二

Use wicket from maven2

Use wicket from maven2

mvn archetype:create -DarchetypeGroupId=org.apache.wicket
-DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.3.1
-DgroupId=org.g11n -DartifactId=wqs

2008年2月17日星期日

mutt 与 gpg 数字签名邮件

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (OpenBSD)

iQEcBAEBAgAGBQJHt89uAAoJEAQBqiBG05f/gjoH/jG6ZABGYnGCWXPhIYQyrQJU
pkHJlBCExxg1kYw9Ig04wfx05secy28mcSQjSEds/TTBqhh0VGC04ZGg0j8N9aBn
NWYtV+gIRDgrqtcUPyQVcTh/3lWwl+/IFVGVnsga+R8pSpnXyxgO4i/eGZXMcG5l
tU3hHp4L7G6u8I1NkB8DtQEc0SVzgWvutaxrktGKTpHhS7izmZRIUsbPdyF16Z3a
DazpAzYYMwaJk4hjNYNyeKm9T3TUfNlG/i9h6vecvQ12iBZ5n+SpOnU2yktgdoxx
3O6ESM5WFmN8Z9AZmZcQ8sWUjEyqV94fSAHYXDwcZArqwkWmWY3NEESlwg7V4d4=
=9iyr
-----END PGP SIGNATURE-----
默认的 mutt 数字签名邮件,在 gmail 中显示为附件 noname,在 live/hotmail
中显示为附件 ATT*.DAT。这个非常不直观/美观,如果能象 Enigmail 等显示为
附件 signature.asc 就好了。下面是我基于
Sertaç Ö. Yıldız <sertac.liste@gmail.com> 的补丁给出的解决方案:

http://marc.info/?l=mutt-users&m=120315252214068&w=3

$OpenBSD$
--- pgp.c.orig Wed Apr 25 04:12:16 2007
+++ pgp.c Sat Feb 16 16:15:36 2008
@@ -35,6 +35,7 @@
#include "pgp.h"
#include "mime.h"
#include "copy.h"
+#include "rfc2047.h" /* for content-description */

#include <sys/wait.h>
#include <string.h>
@@ -1104,9 +1105,13 @@ BODY *pgp_sign_message (BODY *a)
t->type = TYPEAPPLICATION;
t->subtype = safe_strdup ("pgp-signature");
t->filename = safe_strdup (sigfile);
- t->use_disp = 0;
- t->disposition = DISPINLINE;
+ t->use_disp = 1;
+ t->disposition = DISPATTACH;
t->encoding = ENC7BIT;
+ t->d_filename = safe_strdup ("signature.asc");
+ t->description = safe_strdup (_("Digital Signature"));
+ rfc2047_encode_string (&t->description);
+ mutt_set_parameter ("name", "signature.asc", &t->parameter);
t->unlink = 1; /* ok to remove this file after sending. */

return (a);


$OpenBSD$
--- crypt-gpgme.c.orig Fri Jul 27 03:43:39 2007
+++ crypt-gpgme.c Sat Feb 16 16:15:14 2008
@@ -34,6 +34,7 @@
#include "copy.h"
#include "pager.h"
#include "sort.h"
+#include "rfc2047.h" /* for content-description */

#include <sys/wait.h>
#include <string.h>
@@ -893,13 +894,19 @@ static BODY *sign_message (BODY *a, int use_smime)
t->use_disp = 1;
t->disposition = DISPATTACH;
t->d_filename = safe_strdup ("smime.p7s");
+ t->description = safe_strdup (_("Digital Signature"));
+ rfc2047_encode_string (&t->description);
}
else
{
t->subtype = safe_strdup ("pgp-signature");
- t->use_disp = 0;
- t->disposition = DISPINLINE;
+ mutt_set_parameter ("name", "signature.asc", &t->parameter);
+ t->use_disp = 1;
+ t->disposition = DISPATTACH;
t->encoding = ENC7BIT;
+ t->d_filename = safe_strdup ("signature.asc");
+ t->description = safe_strdup (_("Digital Signature"));
+ rfc2047_encode_string (&t->description);
}
t->filename = sigfile;
t->unlink = 1; /* ok to remove this file after sending. */

2008年2月3日星期日

OpenBSD with CVSup

#
# cvsup -L1 cvsup.conf
#

# Defaults that apply to all the collections
*default host=rt.fm
#*default host=wiretapped.net
#*default host=mirror.osn.de

*default compress
*default base=/home/dongsheng/wc prefix=/home/dongsheng/wc/repo
*default umask=002 release=cvs delete use-rel-suffix

OpenBSD-ports
OpenBSD-src
OpenBSD-www
OpenBSD-xenocara

OpenBSD with CVSync

$ cat /etc/cvsync.conf
#
# cvsync -v cvsync.conf
#
config {
hostname cvsync.de.openbsd.org
compress
protocol ipv4

collection {
name openbsd-ports release rcs
prefix /home/dongsheng/wc/repo
errormode fixup
umask 002
}

collection {
name openbsd-src release rcs
prefix /home/dongsheng/wc/repo
errormode fixup
umask 002
}

collection {
name openbsd-www release rcs
prefix /home/dongsheng/wc/repo
errormode fixup
umask 002
}

collection {
name openbsd-xenocara release rcs
prefix /home/dongsheng/wc/repo
errormode fixup
umask 002
}
}