博文

目前显示的是 一月, 2007的博文

xml or json?

今天下午一直在考虑一个问题,究竟是使用xml还是json在服务器和客户端之间传递数据。
xml的好处是通用性,就算把程序的架构从B/S改为C/S,server端的代码也不需要改动。
而json的好处是客户端的代码好写,xml就显得很繁杂。但是xml的话,服务器端的代码好写。
目前比较头疼的是,根本找不到到什么C/C++ 的json库(生成json代码),sourceforge上是有几个,但是都是alpha/beta版本,作者只是在svn中开发测试,还没有release.
另一条路就是xml/xslt,不过这个。。。。我对xslt只是一知半解,部门里的其它人也差不多,会xslt的designer是很难寻的。
有一个计划就是在dojo的基础上开发一个server端的cgi库。是因为,我可以从服务器端直接发送dojo格式的xml代码到客户端。然后利用dojo的xml parser就可以显示出来。那么我就可以在服务器端直接创建widget了。
但是我现在想要,把所有的显示的代码都移动到客户端,而不是服务器端。cgi只负责处理、发送数据。不必理会数据怎么显示。
头疼,滥用js导致客户端的cpu占有率暴涨。
实在没有好路子的话,我就在server端用xml+xslt好了。

寻gnome下的日程管理软件

找啊找
ports中软件很多,就是不知道哪个用起来方便

闷,上不去

网管封了cvs和nntp端口。上不去新闻组啊,连下个emacs都得四处找http代理

check out emacs23中

也不知道是公司的网络禁止了2401,还是说网络环境实在太差,总之我换了N种方式,包括清华大学的ftp,都没有能够把emacs23下载下来。(emacs可是我的命根儿啊)
终于,我发现原来开发版的cvs支持http proxy.
然后从 http://ftp.gnu.org/non-gnu/cvs/source/feature/ 下载了cvs-1.12.13a,不幸的是zip格式的,而且configure脚本很有问题,在我机器上无法执行。aclocal/automake/autoconf摆弄了很久也搞不定。然后就重新下载了cvs-1.12.13.tar.bz2格式。然后就是一路顺风了。网上随便找了一个http代理,check
out中。
cvs -z3 -d ":pserver;proxy=195.175.37.6;proxyport=8080:anonymous@cvs.savannah.gnu.org:/sources/emacs"
co -r emacs-unicode-2 emacs

openoffice的编译条件真苛刻

"To build OOo, you should have a lot
of free diskspace (~ 9GB) and memory (~ 2GB)."
硬盘倒是小事,2G的内存~~~~估计很少有PC能有。

flash player 9 for Linux released

下载地址:
http://fpdownload.macromedia.com/get/flashplayer/current/install\_flash\_player\_9\_linux.tar.gz
Freebsd下使用时,
首先要安装linux-firefox
然后解开flash的压缩包
然后使用/compat/linux/bin/sh运行安装脚本,安装到
/usr/local/lib/linux-firefox目录下即可。
----------- Install Action Summary -----------
Adobe Flash Player 9 will be installed in the following directory:
Browser installation directory = /usr/local/lib/linux-firefox
Proceed with the installation? (y/n/q): y
Installation complete.
Perform another installation? (y/n): n
Please log out of this session and log in for the changes to take effect.
The Adobe Flash Player installation is complete.
然后打开linux-firefox,在地址栏输入about:plugins
可以看到
Shockwave Flash
File name: libflashplayer.so
Shockwave Flash 9.0 r31
但是native的firefox下无法使用,因为libflashplayer.so使用了glibc库。
小小的郁闷一下~

gftp crashed unexpected

gftp等基于gtk的程序死的不明不白。后来根据core dump信息来看,似乎与librsvg2有关。
#1 0x2d9f8b34 in __do_global_dtors_aux ()
from /usr/local/lib/gtk-2.0/2.10.0/loaders/svg_loader.so
#2 0x2d9f8eac in _fini ()
from /usr/local/lib/gtk-2.0/2.10.0/loaders/svg_loader.so
#3 0x2809440b in _rtld_error () from /libexec/ld-elf.so.1
#4 0x28094cb9 in elf_hash () from /libexec/ld-elf.so.1
#5 0x28bd674f in __cxa_finalize () from /lib/libc.so.6
#6 0x28bd63aa in exit () from /lib/libc.so.6
#7 0x08068979 in ?? ()
#8 0x00000000 in ?? ()
#9 0x081d91f0 in ?? ()
#10 0xbfbfe078 in ?? ()
#11 0x0806896f in ?? ()
#12 0x081da010 in ?? ()
#13 0x081aef80 in ?? ()
#14 0xbfbfe098 in ?? ()
#15 0x08053ff6 in ?? ()
#16 0x08086037 in ?? ()
#17 0x081d91f0 in ?? ()
#18 0xbfbfe0b8 in ?? ()
#19 0x287f4d2c in g_value_peek_pointer ()
from /usr/local/lib/libgobject-2.0.so.0
怎么办?
到底是libgobject的问题,还是gtk?

wordpress中隐藏及清空一个分类

首先要获得该分类的id,然后去数据库运行:
隐藏:
UPDATE `wp_posts`,wp_post2cat set wp_posts.post_status = "private"
WHERE wp_post2cat.post_id =wp_posts.id and wp_post2cat.category_id=11
清空:
delete wp_posts from `wp_posts`,wp_post2cat WHERE wp_post2cat.post_id =wp_po
sts.id and wp_post2cat.category_id=11

我的make.conf

SUPHOST=cvsup.FreeBSD.org
CPUTYPE=athlon-xp
WITH_CPUFLAGS=yes
WITH_OPTIMIZED_CFLAGS=yes
MASTER_SITE_OVERRIDE= \
http://ports.hshh.org/${DIST\_SUBDIR}/
FETCH_CMD= wget
FETCH_BEFORE_ARGS= -c -t 1
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
KERNCONF=snnn
另外再推荐个教育网镜像:
ftp://ftp2.tsinghua.edu.cn/mirror/FreeBSD/ports/distfiles/
如果要设置代理可以这样:
FETCH_ENV=http_proxy=http://222.66.5.205:80
FETCH_ENV=ftp_proxy=http://222.66.5.205:80

实变考完了

阿弥陀佛~大学里面最难的一门课了。
不过相较而言,我觉得还是概率论与数理统计更晦涩些。不过学完测度收敛后再看概率论的大数定律,就要明朗的多了。
泛函部分与实变相比,真是要简单的多了。我现在只要看见“测度”两个字就要抓狂。 还好,今天题答的很顺利,2个小时的题,只花了50分钟就over了,竟然都会做。哈哈~
不过那老师也真变态的,最后一节课的复习题果真是一个都不考,而且,试卷上的题远比他 的复习题简单多了。

平方绝对可积

我终于明白为什么p幂绝对Lebesgue可积空间中平方绝对Lebesgue可积空间最为出名了。因为它是Hilbert空间,而其它的不是。(1/p+1/q=1)
Hilbert空间的一个很好的性质就是它的共轭空间就是它自身。
但是我还是不明白。共轭性究竟体现在哪里?

打开一次dashboard居然花了30多秒

点击“登录”后, 迟迟没有响应。打开一次dashboard居然花了30多秒
大家猜是为什么?
因为wordpress尝试从外部读取多个rss(3个以上),然后我就等啊等。害得我都不敢打开后台的index.php了。
t...m....d!!!把那些垃圾代码删除后,刷的一下,就ok了!

首页重写计划

还记得我的第一个homepage是在01-02年左右的时候,用chinaren的在线工具做出来的。傻乎乎的拿了个特花的图做背景。后来也就没搭理了。
后来02年冬,开始学html/javascript,用windows的notepad在freewebs手写了自己的第一个首页。整天钻研的就是怎么用js在状态栏或是页面上显示当前系统时间。后来被告知系统右下角就有,我为何还要多此一举呢?
04年的时候,狂热于sql-xml,用sql-xml开始重写首页。做了一半,放弃了。后来干脆用XML/XSLT/XSL-FO把整个首页重构了一下,提供xml、html、pdf、rtf等多种访问格式。后来发现华而不实,只好作罢。
现在的首页是上周吧,刚弄的。用php+smarty 胡写的。 可是我对php真的很不满。打算用c/c++ cgi自己写一个简单的 CMS。呵呵,反正这个就是我的主要工作嘛。计划是用类似于smarty的方式,不过还是采用xml+xsl的方式来运作。否则要我自己去做语法分析,我真没那个兴致。等我ocaml稍微熟悉一点再试,用lex/yacc作语法分析真是让人想吐~~

可怕的实变

昨天晚上看实变函数书,偶尔看到前言,才终于弄懂测度、可测函数、Lebesgue可积之间的关系,明白他为什么要搞可测集、可测函数这么一套理论出来。它干嘛不先讲Lebesgue可积啊?
哎,看书应该先看前言,好歹能迅速对整本书有一个全局的认识。不过,像我这种临时抱佛脚的学生,大概是很少能有耐心去看前言的(因为老师肯定不会考前言)
p.s.一个空间,可分又怎样?不可分又怎样?

再次迁移

唉,无奈。
数据全部遗失,我已经懒得去找那白痴的客服了。
再次迁移,临时的域名是。。。。(算了,反正是临时的,就不说了)
正在购买域名中。。。。
谢谢南理工 的朋友们

两件事

今天接连发生两件事,一件值得我庆贺的,一件让我要哭的
1、我在北京租到房子了,离工作的地方只有2.5km,非常的近,而且很便宜。一个同事就住我对门
2、前几日我在ifastnet注册了一个账号。今天发现,数据全被删了。原因是刚注册的一周内我就上传了4-6个页面,访问量很小或是根本就没有。然后它就给我发了一封信说我的帐户因为出于不活跃状态所以被删除了。但是我发现并没有被删除,还是能用。就一直用到了现在。上周刚刚被google收录,sogou之类的也来爬了几圈,yahoo几乎是天天爬。我正乐着呢,突然啥都没有了。悔之不备份啊!话说,早已打算自己买空间,但其实还是很希望能把空间放在国外,即使速度慢一些。
既然事已至此,那么就沉默一段时间吧。

用ocaml实现汉诺塔游戏

这是要交的算法作业这东西真的是想了很久才想出这么一个算法。以前也尝试过不少,但是都以实现过于复杂而放弃。(* 程序说明: *)(* 汉诺塔(移盘子)游戏,本程序绘图并求解了该问题。 *)(* 规则简介: *)(* 三个柱子,上面串着若干个大小各不相等的盘子。 *)(* 初始状态:所有的盘子都在最左侧的柱子上,从上往下按从小到大依次叠在一起。 *)(* 终止状态:所有的盘子都在最右侧的柱子上,从上往下按从小到大依次叠在一起。 *)(* 操作规则:一次只许移动一个盘子,将其从一个柱子移动到另一个柱子上。 *)(* 要求小盘子不能放在大盘子下面。 *)(* 算法分析: *)(* 由于这是一个典型的递归问题,所以我采用了ocaml语言编写。 *)(* 我的算法基于如下两个猜测: *)(* 1、最优解的解法是唯一的。 *)(* 2、当前步的决策只与当前步的状态有关,与上一步(及前几步)所执行的操作无关。 *)(* 后者使得我不需要使用数据结构来存储除当前盘子的位置状态以外的任何信息(很多的人 *)(* 在求解此问题的时候使用了栈),这使得程序编写得以更简便。 *)(* 算法的实现: *)(* 算法的核心问题在于如何根据当前的盘子的位置来决定该把哪个盘子移动到哪里。 *)(* 把盘子按从小到大编号为:1、2、3、4、5、6、... *)(* 三个柱子分别是A,B,C *)(* 初始状态下,所有的盘子都在A上,他们应该被移动到C上。 *)(* 设编号为x的盘子当前的实际位置是spos,在当前步应该被移动到pos,那么 *)(* 我的规则是: *)(* 1、最大的盘子,pos=C. *)(* 2、设x是一个盘子,它在当前步的实际位置是M。 *)(* 若x的实际位置是M,并且应该被移动到M,那么(x-1)应该被移动到M *)(* 否则,若x应该被移动到L,并且可以在当前步被移动到L,那么移动它到L。 *)(* 否则,(x-1)应该被移动到三根柱子的另外一根。(既非L也非M) *)(* 测试环境: *)(* 系统:FreeBSD 6.2-RELEASE #19,i386 *)(* 编译器/解释器: ocaml 3.09.3 *)(* POSIX下的sleep函数会因为收到信号而被信号处理函数打断,而 * ocaml的graphics库的实现是基于信号的刷新同步。所以 * Unix…

提供mywallop.com的搬家服务

曾几何时,mywallop 凤光无限,它独步的SN理念,它most beautiful的UI,它专门的中文支持团团队……
一切都不重要了,因为唯一值得留念的是朋友。而武大的那帮朋友已经毕业,其它大部分已经迁移到新老婆,也就是剩下freeyun,花花姐几个人还在死守着那片寂静的土地。
黯然……
好吧,闲话不说了。
众所周知,mywallop 将于本月底关站,为了抢救数据,我写了个工具可以把wallop的blog导入到wordpress,wallop.com,cnblog,等诸多凡是支持rss导入的站点。
无搬家打算的,可要求获取html格式或xml格式存档。
缺点: (抱歉,我技术有限)
1、图片无法保存、导入
2、评论无法保存
趁我考试前,有此需要的朋友,请尽快联系我。
(sorry,导入导出真的很花时间。如果你没有联系方式的话,那么不必联系我了,我帮不上你的忙)

收到了ifastnet的回信

收到了ifastnet的回信
虽说很模板,不过有回应总比没有回应强Hi there, We had some minor technical issues with one of our servers this morning. The issues have now been resolved. Please try again now. Thanks, Technical Support YourSupportGroup

ifastnet的主机发生故障

我的新blog上不去了
OMG~
过来哀悼一下

Freebsd 6 cvs已经冻结?

刚刚用cvsup更新的时候,发现在UPDATING文件里已经有
20070114:
FreeBSD 6.2-RELEASE.
不过有些奇怪,就算是美国时间,也不会是14号啊?

预告:本月之内搬走

谢谢大家一直以来的支持。
按后台的统计,每个月的访问量大概在800-900左右,而且大部分来自于google和baidu,所以我是蛮舍不得这块地方的。但是思虑再三,从长远考虑,还是决定换个地方。
因为毕竟
1、这个是免费的,数据备份和维护都不是很方便。
2、live space变得越来越庞大,页面打开速度太慢
3、这个是微软的,它对除ie以外的浏览器支持的不是很好。而我很少用windows。
4、我决定买一块自己的空间。
临时的落脚之处在http://snnn.ifastnet.com/blog/
本人对空间设置、dns购买不大熟悉,路过的朋友,请不吝赐教。
另,mywallop即将关站,有打算将mywallop的东西迁走的朋友,请不妨到上面的地址赶紧注册个account,备份工具下周之内推出。不过搬家工具大概要等到月底。

把autotoolset update了一下

SIGIO中断了sleep的执行

最近发现一个问题,ocaml中,在调用graphics.open之间,Unix.sleep可以很好的工
作。但是之后就不行了。sleep就像没调用一样。
后来网上查了一下,Ocaml的graphics库大量的使用了 signals,而负责刷新屏幕的 SIGIO 打断了sleep.
OK,那我现在的问题是,我该如何实现动画的效果?
就是,刷新,然后停一秒,然后再刷新,这样的。

wxWidget2.8发布了

上个月的事情(2006-12-13),但是我现在才发现。
Ubuntu 用户可以这样获得二进制包:

deb http://apt.tt-solutions.com/ubuntu/ dapper main
加入到/etc/apt/sources.list
然后用
curl http://www.tt-solutions.com/vz/key.asc | apt-key add -
获取public key
然后用
apt-get update更新。
然后用
apt-cache search --names-only wx*2.8
的方式安装
Freebsd用户:
请先用
portsnap fetch update或cvsup更新ports tree
然后用
portinstall wxgtk26-common
的方式安装。

configure的这个问题终于搞明白了

喜欢自己编译程序的BSD用户可能经常遇到这样的情况,
configure的时候,机器上明明有这个库,但是它就是没有找到。原因是这个库不在/usr/include和/usr/lib下,而是在
/usr/local/include和/usr/local/lib下。
解决方法:
对于用户:
这样来做
./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
对于solaris用户可能还要加上-rpath=/usr/local/lib
但是这样做偶尔会导致compiler的santy check 失败。
解释:
CFLAGS是在编译的时候传递给编译器的参数
LDFLAGS是链接时传递给linker的参数
一般而言,如果你没有设置CFLAGS,那么autoconf/automake会自动把cflags设置为"-g
-O2"。如果你设置了,它就从这里读取。
而这两个参数全局的影响configure中的test的过程以及后面的编译。
对于开发者:
检查你的configure.ac中有没有
AC_CANONICAL_HOST
这样的调用(直接的或者间接的)
没有的话,加上。

奇怪的错误

今天突然反复的出现这个错误
configure: error: cannot find install-sh or install.sh in "." "./.."
"./../.."
无论我怎么autoclean,reconf 都不行。
后来发现
原因竟然是我在AC_INIT的后面加了一句
AC_CANONICAL_TARGET
OMG~................
why????!!!!

全面升级autoconf/automake

刚刚装了autoconf261和automake110,还没找到哪里写的有what's
new.不过粗略的看了一下文档,感觉差别蛮大的。
至少我以前的autotoolset的LC_CONFIGUERE_CC和LC_CONFIGUERE_CXX
应当被抛弃了。
autotoolset在2003年就停止开发了。我曾经试图修补过它,但是无奈的是我对m4也是一知半解,唉。。。。
顺便说一下,以前的
AC_PROG_CC
AC_PROG_CXX
要被修改为
AC_LANG(C)
AC_LANG(C++)
看了下,autoconf支持的主要语言还是C,C++,fortran,object C,不过今天在这里看见了Erlang的影子。
另外一个改变就是
AM_CONFIG_HEADER(config.h)
被改为
AC_CONFIG_HEADERS([config.h])
automake110的一个好处就是,以往会显示满屏幕的
/usr/X11R6/share/aclocal/xmms.m4:17: warning: underquoted definition of
XMMS_TEST_VERSION
run info '(automake)Extending aclocal'
or see
http://sources.redhat.com/automake/automake.html\#Extending-aclocal
/usr/X11R6/share/aclocal/xmms.m4:62: warning: underquoted definition of
AM_PATH_XMMS
/usr/X11R6/share/aclocal/KXL.m4:6: warning: underquoted definition of
AM_PATH_KXL
这样的信息,检测到一个就显示一个,现
在它只显示一次。
$ aclocal110
/usr/local/share/aclocal/speex.m4:10: warning: underquoted definition
of XIPH_PATH_SPEEX
/usr/local/share/aclocal/speex.m4:10: run info '(automake)Extending
aclocal'
/usr/local/share/ac…

恨死sohu/163邮箱末尾的广告

难道我要在我的每篇blog的末尾都加上一段sogou输入法的广告吗?
(不过也比某些网站挑逗性的色情广告要好的多)

怎么装rpm?

linux_base-fc-4_9中的rpm似乎有点问题。我安装过后,chroot到
/usr/compat/linux,但是运行rpm的时候会提示
sh-3.00# rpm
rpm: error while loading shared libraries: librpm-4.4.so: cannot open
shared object file: No such file or directory
我把fc4的rpm-4.4.1-23.i386.rpm包解压缩来看,发现的确找不到这个so.
用ldd查看,
librpm-4.4.so => not found
librpmdb-4.4.so => not found
哎。。。。。。。。。。。。
sh-3.00# rpm
ELF binary type "0" not known.
sh: /bin/rpm: cannot execute binary file
sh-3.00# rpm
error: Unable to open /usr/lib/rpm/rpmrc for reading: No such file or
directory.
然后手动把*.so和rpmrc copy过去。
sh-3.00# rpm
RPM version 4.1
Copyright (C) 1998-2002 - Red Hat, Inc.
This program may be freely redistributed under the terms of the GNU GPL
Usage: rpm [-a|--all] [-f|--file] [-g|--group] [-p|--package]
[--specfile]
[--whatrequires] [--whatprovides] [-c|--configfiles]
[-d|--docfiles]
[--dump] [-l|--list] [--queryformat=QUERYFORMAT] [-s|--state]
[--nomd5] [--nofiles] [--nodeps] [--noscript] [--addsign]
[-K|--checksig] [--import] [--resign] [--nodigest]
[--nosignature]
[--initd…

杀毒记

前两天想下个13张的麻将游戏,看见exe就乱点,然后就中招了。。。
我点完exe后看见良久不显示安装界面,只听见硬盘狂响,方知出事了。赶紧停止。然后简单的处理了一下,也没咋搭理。
后来诺顿频频报告Downloader病毒,msnhost.dll。却又无法给出进一步的信息。算了,反正很少用win,就懒得管。
然后今天上网的时候,打开某个网页,再打开IE的时候,惊奇的发现被装了工具条。无法在IE的"管理加载项"里面禁用。无法从注册表删除。它的程序文件一旦被删除就会立即冒出来。
然后我换安全模式,用诺顿扫一趟,无果,一无所获。
然后装AVG,就是以前的 ewido,能发现工具条,但是无法清除,相反,AVG自身会被杀掉。这多少让我有些爆汗,ewido都杀不掉的流氓软件,看来真是非同小可。
那个工具条的程序文件一旦被删除就会立即冒出来,于是我的首要问题是找出,哪个后台进程在监视和创建这个文件。于是我从微软的网站下了Filemon,监视该文件的所有举动。无果。只能检测到我的删除,检测不到是谁创建的。
我一下子陷入了沉闷。这是为什么?tasklist中的进程屈指可数,服务列表里面的东西我也是了若指掌,绝对没有可疑的东西。于是我将所有的猜测集中到一点,驱动。该病毒肯定是以驱动的方式加载(即使在控制台模式的安全模式下也自动加载),以ring0的特权等级在内核态下运行。
然后我就进drivers目录,把文件按最后修改日期排列。(可惜不能按创建时间排序)
在该目录的末尾发现几个文件是新近才有的。立即删除,重起。发现问题依旧。而且,被删除的驱动又被恢复了。这更证明了我的猜测。系统的sfc我是尽最大努力禁掉了的,dllcache目录也是删除了的。系统文件一旦被删除是不可能再被sfc恢复的。那么,就只能说明它是病毒了。
怎么办?
可惜手上现有的软件都不足以处理驱动加载列表。后来想起来我以前在处理D-Tools
4的时候用过一个叫做ServiWin.exe的软件可以做到这点。翻箱倒柜,找不着,然后重新下。然后进安全模式,打开它,
找到那两个被我删除的驱动的文件名,atmsig.sys,parcls.sys,用ServiWin停止掉。
然后去删除工具条的程序文件,修改注册表,一切OK。
Oh I know,这个病毒果真是和3721一样以驱动方式加载的。
但是重起后,问题依旧。
然后我想到一个问题,文件的时间未…

今天在freebsd下把opencv装上了

今天在freebsd下把opencv装上了,本来ports中有,但是版本是0.96。趁着opencv 1.0新近发布,我想了想,还是自己编译吧。感觉Intel似乎对该程序的Linux版不怎么关心。samples目录下的代码居然只有代码,想编译测试下都不行。还好,因为有opencv.pc, 用pkg-config很快就编译完了。 (花花姐的糖真好吃)