2007年7月28日星期六

From Beryl to Compiz-Fusion

当初,Compiz 社区的一部分人员,因为 David R. 不愿意接受某些 patch,决定分家,独立出 Beryl。
现在,Beryl 和 Compiz 的开发人员意识到分家的问题,终于决定再次携手。虽然某些分歧仍然存在,虽然目前合并主要在 plugins 部分进行,但是毕竟,合并开始了。
新的项目被称作 Compiz-Fusion,从名字上看仍然偏向于 Compiz,毕竟祖先是 Compiz。
从 git 上面抓了代码,opencompositing 社区有个脚本,能够自动抓代码并编译,但是 BSD 上面跑还是有些问题。
首先,很多地方缺编译参数 -I/usr/local/include ,很多 plugins 缺编译参数 -I/usr/local/include/libxml2。Linux 的 find 相当于 BSD 的 find . ,有些 Makefile 以及独立下载的 plugin 的 Makefile 有这个问题。
奇怪的是 3d 插件,这个 beryl 当中非常重要的插件,不在 compiz 的默认安装里,不在 plugins-main里,甚至不在 plugin-extra里,以至于 plugins-unsupported 和 plugins-wip (Working in progress) 里面,不知道怎么打算的…… 还要独立搞下来,patch Makefile,再装……
合并的插件基本功能都有,某些做得还不够好,比如边缘吸力就像瞬移效果…… 但会慢慢好起来的。
合并之后,大家为同一个项目努力,新功能也在不断被开发。比如 Motion Blur, Reflection, Window Reflection。各个方面也有不少细节改进,虽然合并过来的 plugins 的选项和功能还有待改善。
Window Manager 功能还是有缺陷,比不上 kwin 等的完整。但是,发展是迅速的,未来是值得期待的~


Old Blog Link: http://computer.mblogger.cn/henryhu/posts/67224.aspx

2007年7月16日星期一

Beryl / AIGLX /ATI : AIGLX ok!

某日,在 FreeBSD Problem Report Database 看见 bug: kern/112984,是关于 AIGLX 和 radeon 驱动的,问题一模一样。于是我去搞了个Follow-up。
昨天晚上,发现那个 PR 有更新了:某人帖了个从前某人在 maillist 里贴的 patch,能够基本搞定这个问题。今天,开机,打 patch,重编译 kernel 和 xorg-server,修改 make.conf 开 AIGLX,重启,startx ... 成功了~ AIGLX enabled~ 速度可能是快了一些吧…… 我也不知道。但是,可能是本地编译 xorg-server 的关系,本来 beryl 会 crash 的问题,比如拖动扁的窗口,神灯1/2,弯曲折叠,梦幻效果都没了,而且桌面显示比原来效果好了(主要是半透明立方体的时候)。

Old Blog Link: http://computer.mblogger.cn/henryhu/posts/66802.aspx

2007年7月8日星期日

WLM的屏蔽名单?

早上打算了解一下WLM的登陆协议,也就是MSNP**,于是开个ethereal抓些包看看。
之后发现随着一个标记为GCF的响应,发回来一个Xml结构的东西,根节点为 Policies 。
下层有几个Policy,第二个的type属性为SHIELDS,然后下层为config,再下层,经过一个shield节点,就到了一个block节点。
下层先是一个空的hashes节点,可能以后能通过hash屏蔽?…… 然后就是一个叫regexp的节点,看来是以正则表达式表示的屏蔽信息。
regexp下层都是类似于这样的节点:
<imtext value="XC5waWY=" /&rt;=.
有许多个,用掉四个多IP包(每个的TCP负载大约1460)。当中有许多Base64编码的正则表达式。比如\.pif,\.scr,nihao52\.com,t35\.com,quicknews\.info,shusu\.cn,... 奇怪的是还有symantec\.com/security_response/writeup\.jsp\?docid=2004-120714-0643-99,...这样的,不清楚是什么用意。
完整列表:
\.pif ; \.scr ; grouppicture\.php ; groupicture\.php ; gallery\.php ; staff\.php ; pics\.php ; rottentomatoes\.us ; msn\.php\?email= ; download\.php ; 69\.56\.129\.67/gift\.com ; xmas-2006 ; miralafoto/foto\.exe ; 168\.169\.78\.19 ; profile\.php\? ; tufoto ; verti2/fantasma\.zip ; armazfiles\.smtp\.ru ; sweetpictures\.myphotos\.cc/katiesex\.pif ; 201\.22\.6\.4/fotos/safada\.html ; chnstudio\.com/upload/impluse\.exe ; shurl\.org/myhomepage ; p1377\.pic-myspace\.info ; pic831\.mp3-myspace\.com ; 88chi\.com ; nihao52\.com ; 81copy\.com ; myonlinecam\.net ; 77885\.cn ; 51zhaogu\.com ; 51shejiao\.cn ; gangen\.cn ; wangw\.cn ; uglyphotos\.net ; funpic\.de ; 505united\.com ; t35\.com ; quicknews\.info ; symantec\.com/security_response/writeup\.jsp\?docid=2004-120714-0643-99 ; members\.lycos\.co\.uk/svy21/t/contact\.php ; sonresimler1\.googlepages\.com/ozelresimler\.htm ; viotagallery\.com ; image001\.png ; image002\.gif ; funbuddyicons\.com ; wellwell\.biz ; casedinjertionkderunhdaseo\.com ; jertionkdewiondaserunf\.com ; butuinkdesionmas\.com ; imp\.exe ; bush-gracioso\.exe ; memebers\.lycos\.co\.uk/getmessenger ; get-messenger ; belgravehelpdesk\.com ; xpimad\.com ; album\.zip ; malbranche\.goracer\.de ; albrahem\.com ; improfile\.net ; unknowntools\.com ; hetandunhasde\.com ; thecoolpics\.net ; .*www\.provnarkotika\.com.* ; gratishost\.com ; dreamlife365\.com ; whoadmitsyou\.com ; blockoo\.com ; baratinha\.mypets\.ws ; messangerstats\.net ; messengertools\.org ; stuffplug\.com/temp/downgrdr\.exe ; hornymatches\.com ; iwantu\.com ; block-checker\.com ; amigosparasempre\.smtp\.ru ; amigosparasempro\.smtp\.ru ; chinacircle\.com ; mensagemparavc\.mail15\.com ; mprofiles\.net/members\.php\?msn= ; 930le\.com ; 66663\.cn ; shusu\.cn ; 1717wan\.cn ; 995ba\.com ; mydipan\.cn ; 51kongqi\.com ; 94nile\.com ; life365\.com ; photogbase\.com/pictures\.php\?photo656\.jpg ; mypengyou\.com ; 51pingguo\.cn ; spotyourface\.net/main/pictures/sexy ; windowslivemessenger\.biz ; mensageirovirtual\.land\.ru ; provnarkotika\.com ; tinyurl\.com/asdkfh13/ ; wasedinterfunva\.com ; qerunherdasfunkin\.com ; photos\.zip ; .*2nnvc7.* ; .*urltea\.com.* ; urltea\.com/p2s ; tinyurl\.com/2nnvc7 ; linkangel\.net/msn ; messenger-tips\.com ; imrealm\.com ; blocknblock\.com ; imtract\.com ; blockinrio ; messaging-names ; .*messengerlive\.info.* ; tebloqueo\.com ; mesns\.com ; .*messengerweb\.info.* ; .*messengerhome\.info.* ; .*yourmessenger\.info.* ; .*newmessenger\.info.* ; .*hotmessenger\.info.* ; .*messenger-tips\.com.* ; .*get-messenger\.com.* ; .*messengerforyou\.info.* ; .*messengersite\.info.* ; .*newmsn\.info.* ; .*hotbeachpics\.net.* ; .*wadesuntiondketunhasde\.com.* ; .*msnhome\.info.* ; .*la\.gg/upl.* ; cbswest\.com ; newmsn ;
解码用Perl,写得不太好:
#!/usr/bin/perl
use MIME::Base64 qw(decode_base64);
while (<>)
{
$a = $_;
$x = "";
while (1)
{
$a=m//;
if ($1 eq $x) { exit; }
print decode_base64($1);
print " ; ";
$x = $1;
$a=s///;
}
}
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/66585.aspx

2007年7月3日星期二

随便修改BSD的引导配置的危险……

这两天,通过亲身经历,才知道BSD的引导配置是不能乱改的……
一天,启动的时候觉得显示菜单的过程把前面的东西清掉了令人不爽,于是跑到/boot下面,修改beastie.4th。某一行的内容为: hide,我认为是这行导致的清屏,于是模仿前面注释的样子,在前面加\,变成了\ boot。谁知之后启动到加载kernel附近就自动重启,通过反复观察,还发现重启之前打印出了CPU寄存器,估计loader crash掉了。后来,通过使用5.2的一张disk1(之后都是网络升级,没有刻过光盘)启动,然后卸掉5.2的kernel,加载6.2的kernel,再启动,才启动到BSD下,把beastie.4th改了回去(我没有做fixit软盘的习惯……)
有一天,我觉得启动的时候屏幕上显示多个Loading /boot/defaults/loader.conf太慢,反正有/boot/loader.conf,于是把/boot/defaults改名/boot/default,结果问题就出来了…… 之后启动,就显示不能读取kernel、不认识分区的样子。因为之前我试了一下在VMWare里面使用真实硬盘分区,我怀疑VMWare把分区表搞坏了…… 但用Ubuntu的一张盘启动,挂好分区,看见文件都在。再用5.2的盘,启动也挺好。最后才想到/boot/default的事情,改回来就好了……
顺便说一下那个loader.conf:从前只有/boot/defaults/loader.conf,我拷了一个出来,稍做修改,就作为/boot/loader.conf。其实/boot/loader.conf应该只有很少的内容,也就是你的配置和/boot/defaults/loader.conf不同的内容,这个从安装光盘的结构就可以看出。我那样两份文件重了,自然慢得多。但是,没有defaults/loader.conf是不行的。

Old Blog Link: http://computer.mblogger.cn/henryhu/posts/66462.aspx

2007年5月15日星期二

Beryl / AIGLX / ATI : 完成版

终于跑起来beryl了~ 速度不错。
贴图可见http://easyhu.blogspot.com/2007/05/beryl-aiglx.html
详细方法可见http://www.freebsdchina.org/forum/viewtopic.php?p=194263#194263


texture.c改动的地方,估计也不是写程序时候的Bug,而是AIGLX正常情况下的用法。因为我现在其实还是Direct Rendering,没有用上AIGLX(不过Indirect奇慢无比…… 不知道是什么问题)。我现在直接用--use-copy还是--force-aiglx的时候还是会看见显示混乱,估计是改了的结果。


后记:更新xorg-server,dri,libGL*后,beryl不稳定了,有时候Bus Error,一个问题是“曲线收起”就会Bus Error,还有剩下的几率比较小,但是发生原因不明。


另:我不喜欢我家的鼠标有自动双击功能!……


Old Blog Link: http://computer.mblogger.cn/henryhu/posts/64943.aspx

2007年4月23日星期一

.Net under unix-like systems: mono

MS看着Java凭借着可移植性占领了广大的市场,自然不甘心,于是搞出了.Net——MS版Java。实话说,.Net和Java很多地方差不多的……
由于.Net需要可移植性,因此.Net程序里面其实并不是机器码——实际上是MS的一种中间代码,也就是经过了一半编译过程的代码。既然是独立于系统的,.Net也就很容易被移植到MS没有兴趣/不想移植的系统上。由此,mono便诞生了——可以在Linux/BSD/unix-like上跑.Net程序。
貌似mono自己写了.Net的一大堆类库(当然很多还没有写出来…… 但可以混混了~)。
从前装好mono,运行的时候,报告gdiplus.dll找不到。我把Windows下面那个搬到了很多地方,都没有用。今天再试,突然想到可能需要原生的gdiplus,一看,果然发现有libgdiplus这个port,装好之后出现了gdiplus.so等。再运行,就没有原先的问题了。
但是,mono的不完整的实现还是限制了使用…… 我用它运行从前写的ReadAsBmp程序(能够把一个文件的任何部分当作Bmp处理等),基本上可以用,但是PictureBox的Load() mono 没有实现,载入外部图像的时候就挂掉了。而另一个 NewLines 程序 (其实功能和常见的WinLinez差不多,五个珠子连起来就消掉的小游戏,为了解决自动缩放/存盘/跨平台等功能而自己写的,给我妈玩……)由于Form.set_MainMenuStrip() mono  没有实现,窗口都没出来就挂掉了,看来目前还不能使用菜单部分啊~
总的来说,mono 已经不错了,只要能够完善类库,比起Java还是很有竞争力的。

Old Blog Link: http://computer.mblogger.cn/henryhu/posts/64263.aspx

Project: ReadAsBmp

这个东西是我为了更换MP3的Rom里面的图片而开发的,能够在指定参数之后,从文件的某个位置读取BMP格式的图像(或者说把数据当BMP格式读进来并且显示出来~),以及使用各种格式的图像进行替换。开发到现在,已经可以从某个文件中读取图像列表,自动批量显示在列表框里,然后通过点击选择图像(就不用每次都手动输入数据再显示了~ 一劳永逸啊~)。这个功能使得这个程序应该可以适用于各个牌子、各个型号的MP3的Rom~ 也可以根据列表把图片自动提取出来,保存到文件。暂时没有批量读取功能,以后再说~
这个东西是用C#写的,主要是跨平台性好,用起来还比较方便~ 另一方面是为了学习C#,大概是C#的第一个实用项目吧。


Old Blog Link: http://computer.mblogger.cn/henryhu/posts/64264.aspx

评论

# 回复: Project: ReadAsBmp 2008-7-25 3:25 behzad_ahmadpoor666@yahoo.com

评论内容不能为空

Project: TimeCountJava

用来计时的东西,设计出来的时候是给我家的宽带计时用的,所以和上网/断网这个功能结合得太紧密了,现在正在考虑分开来。
其实就是一个计时工具,能够对一小段一小段的时间进行统计,得出每月总和,每日总和,并且能够浏览历史记录。因为是用来统计上网时间的,所以还有上网和断网的功能。
虽然是用Java写的,但是貌似Java没有上下网的方法。所以,需要针对各个系统写一个用来上网/下网的小程序。我现在Windows里面用的是rasphone(系统自带),FreeBSD下面我写了一个ppp的wrapper脚本,这个脚本应该是通用unix-like系统的。
以后要增加达到限制提醒功能,另外多一些配置功能,……


Old Blog Link: http://computer.mblogger.cn/henryhu/posts/64265.aspx

2007年4月3日星期二

Beryl / Compiz / XGL / AIGLX: 新进展


鉴于Xgl的编译困难——没有能够和Mesa共同编译的发布版本,我全面转向AIGLX。新版本的Xorg(7.2)自带了AIGLX,并且默认状态就是激活的。
我原先用git抓下来编译的Xorg,竟然是7.1.99.2,竟然比发布版旧…… 跑起来之后,Xorg会在某个不确定的时刻死掉…… 而且,这个版本就是死活不肯编译 GLX Extension! 就算我 configure 的时候指定 --enable-glx 也没有用。 后来想,既然决定用新的Xorg,干脆用ModularXorg的ports算了。原先是觉得这样弄会很烦,但是也没有别的更简单的办法。
于是就照着FreeBSD wiki里的ModularXorg的方法,先备份ports目录,然后用git抓下新的(大概耗时半小时左右),接着就到ports里的各处安装ModularXorg的各个组成部分,比如xorg-proto,xorg-server,libGL*,libglut,dri,libdrm,xf86-input-mouse,xf86-input-keyboard,xf86-video-ati,还有各个小工具,比如xdpyinfo,iceauth,...
一切OK后,重新配了一下X,顺利进去了。这个X相对git下来那个稳定多了,也有了GLX Extension和Direct Rendering(虽然现在的ports里面的dri不编译glxinfo,glxgears等等,但是可以用git抓下新的Mesa的源代码,然后去progs/xdemos里面编译)。但是这个X没有6.9稳定,比如我切换到命令行再切换回来很容易出问题,而且每次退出基本上都不能正常,总是有"X in free():..."的错误。但无论如何,可以用了。
然后安装了beryl和compiz,原来想着差不多了,但是启动beryl之后…… 就出来那个"white screen of death"了。其实也不是全白,可以转动桌面立方体,弹性窗口效果等等都有,桌面还是蓝颜色的,就是所有的窗口都是白的(还有半透明效果……),没有内容。如果用--use-copy选项启动beryl,能显示内容,但稍有变化就会乱掉,而且速度奇慢(其实不用--use-copy也很慢,但是至少能动),总之就是行不通。
compiz这边,启动的时候显示"no GLXFBConfig for default depth, this isn't work"的错误,而beryl对应的是"no GLXFBConfig for default depth, falling back to visinfo",看来beryl针对这个问题进行了patch。总之就是不能正常使用……
据说这个是glproto从1.4.7升到1.4.8之后导致的一个问题,看来要等更新了……
现在打算去看看beryl的代码,哪里出的问题……
注:beryl是从compiz分离出来的项目,基于compiz的代码,进行了许多改进/创造,目前两个项目正在考虑整合问题。

Old Blog Link: http://computer.mblogger.cn/henryhu/posts/63590.aspx

2007年4月1日星期日

尚未完成: Compiz / Beryl / XGL / AIGLX on FreeBSD

和 Beryl / Xgl / AIGLX 等东西折腾了三天了,还没搞定……
其实说起来很简单:装好各种基础,再装Mesa,然后是Xgl,接着compiz,就可以了。但是Xgl的源代码的编译严重依赖于Mesa的源代码,每次 Mesa有文件上的变化Xgl也要变。但是…… 计划没有变化快…… 最新通过git抓下来的Xgl和Mesa的源代码不能一起编译…… 我常试了各个版本,尚未找到办法……
在网上看见很多安装指南,看来成功编译的不是正好Mesa和Xgl可以共同编译,就是自己做了些小的修正,但是现在的版本差别实在太大……
后来发现新的用git抓下来的Xorg可以和Mesa一起编译,貌似采用了一种更先进的依赖方法…… 于是我试着把它和现在的Xgl整合,但是…… 没有效果……
最后,我终于知道新的Xorg带了一个叫AIGLX的东西,按照www.freedesktop.org上的说法,这个是“Xgl的一个流行的替代品“。目前编译Xorg中……
Compiz倒是很容易编译,就是一直跑不起来,看来一定要跑在Xgl/AIGLX上面……
另一个搞不清楚的是,我编译安装了最新的Mesa(6.5.3 by git),卸掉了ports里的dri和libdrm,也编译安装了新的libdrm,但为什么就是没有direct rendering...

附: 各个版本的Mesa和Xgl的各个不同点
Mesa: 6.5 6.5.1 6.5.2 git cvs Xgl: git cvs
6.5.3 6.5.2
main:
bitset.h No Yes Yes Yes Yes Yes Yes
arrayobj.h No Yes Yes Yes Yes Yes No
mipmap.h No No Yes Yes Yes Yes No
mesa:
array_cache Yes Yes Yes No Yes No Yes
vbo No No No Yes No Yes No
swrast:
s_arbshader Yes Yes Yes No Yes Yes Yes
shader/slang/library:
slang_version.. Yes No No Yes No No Yes
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/63557.aspx

2007年2月14日星期三

好你个中国电信!

这两天上各种网站,常常被转到search.114.vnet.cn,搜索乱七八糟的东西。明显这个不是病毒的问题(哪个病毒这么好心,专门往电信的互联星空网站跑?),再加上现在乱输网址都会跑到sh.vnet.cn,遂怀疑中国电信不干好事。

首先,看nslookup。用nslookup查各个网站(im.qq.com, www.ethereal.com)等倒是没有问题,但是涉及到错误的网址么:

> a

Server: ns-pd.online.sh.cn

Address: 202.96.209.133



Non-authoritative answer:

Name: a

Address: 218.83.175.154

而218.83.175.154和sh.vnet.cn

Name: sh.vnet.cn

Address: 218.83.175.138

是同一个局域网的。难道有叫a的网址…… 而且输b,c,d,aa,.....都一样。



这个也就算了,反正我很少输错网址的~

但是,下面这个问题严重了。比如,我上mobile.qq.com:

注:202.96.209.5 上海的一个DNS

202.96.209.133 上海的另一个DNS

***** From Ethereal (www.ethereal.com) Output ******

(My IP)->202.96.209.5 DNS Standard query AAAA mobile.qq.com

202.96.209.5->(My IP) DNS Standard query response, Server failure

(My IP)->202.96.209.133 DNS Standard query AAAA mobile.qq.com

202.96.209.133->(My IP) DNS Standard query response, Server failure

(My IP)->202.96.209.5 DNS Standard query AAAA mobile.qq.com.HenryPC.org

// 1秒以后

(My IP)->202.96.209.5 DNS Standard query AAAA mobile.qq.com.HenryPC.org

// 又1秒

(My IP)->202.96.209.133 DNS Standard query AAAA mobile.qq.com.HenryPC.org

202.96.209.133->(My IP) DNS Standard query response A 218.83.175.154

// 就是这一行,搞来一个错误的IP

(My IP)->218.83.175.154 HTTP GET / HTTP/1.1

// 当中有host: mobile.qq.com, 说明我的机器把这个IP当作mobile.qq.com了!

218.83.175.154->(My IP) HTTP/1.1 200 OK (text/html)

返回的html:

<script>

s=String(window.location.href);

...

var KeyList = new Array(273);



KeyList[0] = "\262\312\301\345"

...

KeyList[13] = "mp3"

...

KeyList[77] = "msn"

KeyList[78] = "dj"

KeyList[79] = "nba"

...

KeyList[95] = "s.h.e"

...

KeyList[273] = "\267\277\262\372";

t="http://search.114.vnet.cn/search_web.html?id=596&fm=pro&kw="+KeyList[myradom()]+"&s=83";





//t="http://218.30.64.194/response.asp?MT="+mylocal+"&srch=5&prov=&utf8";

document.location.href = t;

</script>

也就是这个HTML,导致浏览器跑到search.114.vnet.cn去了……

后面的纪录就是从search.114.vnet.cn获取网页的过程了……

关键也就是先解析mobile.qq.com不给回答,然后解析mobile.qq.com.HenryPC.org(假如原来的不行,Windows会加上默认的本地域名,我的机器上是HenryPC.org),这个原本应该给出NXDOMAIN(无此域名)的查询,竟然返回了电信的广告网站,问题就这样出现了……

所以说,完全是因为电信的DNS的胡作非为导致了这个问题!



经过用nslookup试验,发现:

当我用A方式查询(也就是IPv4的模式),DNS基本正常,但是NXDOMAIN变成了广告页面。

但是当我用AAAA方式查询(IPv6的模式,一般网站还没有这个模式),电信DNS对普通域名返回SERVFAIL(Server Fail),而对不存在的域名也返回广告!

现在的WindowsXP支持IPv6,所以先用AAAA方式查普通域名,出错;然后用AAAA方式查加上了本地域名的IP,正常应该返回没有或者不支持,然后再用A模式查域名,就好了,但是电信竟然返回了一个广告IP!…… 就这样,XP被误导了!

暂时的解决方式有把域名和对应IP放到C:\WINDOWS\SYSTEM32\DRIVERS\ETC\hosts里面,或许关掉IPv6更好……

缺乏竞争就是不好…… 等这一段过了就去用长城宽带!……

PS: 运行ipv6 uninstall后,问题暂时解决…… XP开始用A查询了……



原理解释:

我们平时打的网址(www.google.com等),其实都是为了帮助记忆,就像寄信寄到市少客站一样。但是,邮递员并不可能光靠这个来投信(特别敬业的除外),所以要知道地址,而在网上,这个就叫IP地址,是四个数字(10.0.0.1这样的),用以表明某台机子/网络。DNS服务器的作用,就是用你给的网址(域名),查询对应的IP,并告诉你结果。如果查不到,应该返回找不到!



Microsoft KB815768:

根据 RFC 1034 的 6.2.4 小节(请参见“参考”),如果 DNS 服务器上存在“A”记录,则当查询“AAAA”记录(或任何非“A”记录)时,DNS 服务器不应返回 NXDOMAIN 或 NAME_ERROR 响应。如果 DNS 服务器没有识别出“AAAA”名称查询,它应该返回 NODATA 或返回无错误 (RCODE 0) 以及一个空的回复部分。

Old Blog Link: http://computer.mblogger.cn/henryhu/posts/62479.aspx

2007年2月4日星期日

Using aMule

aMule是eMule的一个Clone,在各个平台下都有,用起来几乎和eMule一样,甚至能够读取eMule的部分文件…… 只是没有eMule稳定…… 

aMule是完全UTF-8化的软件,比如说他对我家FAT32分区上的GBK编码的文件名有很多反感的地方…… 而且下载下来的文件名在我看起来也是乱码(我家的工作环境也是GBK的,他存下来是UTF8的……) 办法总是有的嘛~ 搞了个脚本来自动识别并重命名~

#! /usr/bin/perl

use Encode;

while (<*.mp3>)

{

    $raw=decode("utf8",$_);

    if (encode("cp936",$raw)=~/\?/) {

        $euc_CN=$_;

        print "Not Changed: $euc_CN\n";

} else {

        $euc_CN = encode("cp936",$raw);

        rename($_,$euc_CN);

        print "Has Changed: $euc_CN\n";

    }

#     symlink($_,$euc_CN);

}

实话说,这样的检测方法很不怎么样…… 但是用Encode里面的Detect竟然把一个GBK的当成了俄罗斯文…… 汗死…… 还不如这样的“实践有效”的方法~ 也就是:原来GBK的东西用UTF-8解码再用GBK编码会出现一堆"?"...

但是,我也不知道,UTF-8 Decode之后成了什么了…… 还需研究……


Old Blog Link: http://computer.mblogger.cn/henryhu/posts/62324.aspx

统计软件包占用空间的脚本

得益于 FreeBSD 的包管理方法,可以很容易地统计出每个软件包占用的空间大小和总大小~
统计下来,总共3.9G左右,OpenOffice最大(310M左右)。
通过这个还知道了最大的几个包,找到几个没用的删掉~ 空间大了不少~

#! /usr/bin/perl

open(STDOUT,'| sort -n');

$sum=0;

while(<STDIN>)#`pkg_info -s '*'`)

{

if (/^Pack/) { next; }

unless (/for/ || /block/) { next; }

if (/^Info/) {

chop;

/(^.*) (.*):$/;

$x=$2;

} else {

chop;

/(^\d+)/;

$sum+=$1;

print "$_ $x \n";

}

}

printf "%8d(1K-blocks) total\n",$sum;

close(STDOUT);

Old Blog Link: http://computer.mblogger.cn/henryhu/posts/62323.aspx

2007年1月28日星期日

Batch file to automatically pack source

BAT file:



@for /F "tokens=1,2,3 delims=- """ %%i in ("%date%") do @set shortdate=%%i%%j%%k

@for /l %%i in (1,1,100) do @(

@if NOT exist src%shortdate%-%%i.zip @(

@if NOT exist src%shortdate%-%%i.rar @(

@zip -9 -r src%shortdate%-%%i.zip Comm Sender -x *.exe *.~* *ModelSupport* *_history* *.dcu

@echo Zipped into src%shortdate%-%%i.zip

@goto END

)

)

)

:END



用这个脚本来自动压缩源代码~ 比原来方便多了~

Old Blog Link: http://computer.mblogger.cn/henryhu/posts/62095.aspx

2007年1月25日星期四

祝数学三牛好运……

三位数学大牛应该已经到北京了吧……(昨天下午的飞机),祝北京考试顺利!你们原本就应该进去的!连ZH'*都进了,你们怎么会不进呢……
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/62059.aspx

2007年1月21日星期日

Maple Windows version running on FreeBSD!

终于成功地在FreeBSD上跑起了Windows版的Maple!

Maple的界面部分是基于java的,内核不是。所以界面用FreeBSD Native JDK跑,内核用Wine跑,速度还是可以的,但估计比Linux版慢一些……

先在Maple目录里建一个脚本,命名maple(为了简便),然后输入:

java -Xmx567m -Ddefault.browser="firefox %1" -cp

"java/mapleresource.jar:java/mapleresource_ja.jar:java/openviz2.jar:

java/plot.jar:java/mapleclient.jar:java/maplewks.jar:java/mathdoc.jar:

java/mathworksheet.jar:java/mail.jar:java/pen.jar:java/jai_codec.jar:java/jai_core.jar:

java/WMFWriter.jar:java/wksloader.jar:java/mathxmltools.jar:java/mapletbuilder.jar:

java/MapleActivation.jar:java/xercesImpl.jar:java/xmlParserAPIs.jar:java/xalan.jar:

java/externalcall.jar:java/freehep-base.jar:java/freehep-graphics2d.jar:

java/freehep-graphicsio-ps.jar:java/freehep-graphicsio.jar:java/freehep-graphicsio-pdf.jar:

java/update.jar:java/jniwrap-2.5.jar:jre/lib/rt.jar"

-Dmaple.bin.path="/d/tools/math/maple/bin.win"

com.maplesoft.worksheet.application.WmiWorksheet

(不要换行)

这些都是参考了bin.win/maplew.exe的出错信息得到的。最后一个rt.jar是参考了前面那些库之后运行的出错信息得到的(里面说apache的XmlParserImpl找不到…… 基于一定在这里的信心,终于靠枚举找到……)

然后,运行它,你能看见界面出来了。但是,随便建一些东西,回车看看:出来一个“Waiting for kernel connection..."的框。命令行那里能够看见,原来是server不能启动,它启动的是maple.bin.path里面的mserver。所以在bin.win里面建一个脚本,叫mserver,内容如下:

wine mserver.exe $* 1>stdout.txt 2>stderr.txt

再启动试试~ Maple出来了吧~ 随便算一个东西,也可以了~
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/61997.aspx

2007年1月13日星期六

Deadlock Appeared!

procedure TProducer.Execute;

begin

repeat

if n=MAXN then self.Suspend

else begin

n:=n+1;

WriteLn('Produced one item! n=',n);

if n=1 then cons.Resume;

end;

until false;

end;



procedure TConsumer.Execute;

begin

repeat

if n=0 then self.Suspend

else begin

n:=n-1;

WriteLn('Consumed one item! n=',n);

if n=MAXN-1 then prod.Resume;

{ GetItem; ConsumeItem; }

end;

until false;

end;


运行一段时间之后,终于看见DeadLock了……
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/61832.aspx

2007年1月2日星期二

Learning Java

从前有过一段时间看Java,但是没有坚持看完。现在有时间了,终于可以好好看了。正好我有个想了很长时间的项目没有做:我家的ADSL上网是限时的,每个月只有30小时,所以需要一个计时工具。但是网上找来的都要注册,用得很不爽。而且我同时要在FreeBSD和Windows下面计时,因此需要一个跨平台的,这样的网上就更加没有了…… 就一直打算用Java自己写一个,现在就当作顺便学习学习Java,练练手吧。
家里有一本TSU(TUP)出版的《Java语言与面向对象程序设计》,二表哥读书时候留下的,就当作教材了。看得差不多之后,就开始做项目了。其实Java的语法等和C基本上是一样的,面向对象的部分让我感觉怎么和C#一模一样……(其实是C#和他一模一样……),觉得把System.out.println换成Console.WriteLine,把import ...换成using ...,就差不多了…………
主要的新鲜部分是Java的各种系统类、各种控件类,还有——Java damn的控件布局方式! 很难直接指定位置,虽然这样对放大、缩小有好处,但是设计界面的时候,真是………… 控件主要是参考JBuilder的Help,比看书有效~
现在在用JBuilder,这个是很早以前装着的不知道干什么用的~ 开始用一直有问题,光标在这里,按键却发现输入在后面几个字符的地方………… 琢磨一阵后发现:凡是有保留字(显示用的是粗体)的地方后面就会有这种情况,一个保留字就差一格,两个差两格…… 于是到选项里面把保留字的粗体显示给去掉…… 世界恢复正常了~ 真是怪事~
JBuilder似乎自己也是用Java编的? 至少界面可以变成Java经典界面~ 用起来有点慢(Borland 9系列的东西似乎都这样……),易用性还是不错地(我特别喜欢那个Smart indent,的确非常Smart~)
从下午写到晚上,差不多基本功能已经好了(历史纪录也好了),但是还不能监测网络情况,需要点击Button来表示连接/断开。Java也还行了~
PS:JBuilder 9 的那个 Borland Look And Feel 比 Java 标准和 Windows 标准都漂亮多了~ 能整合进去多好~
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/61627.aspx