.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还是很有竞争力的。

好你个中国电信!

这两天上各种网站,常常被转到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),而对不存在的域名也返回广告! …

Continue reading ‘好你个中国电信!’ »

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

Maple for Win running on FreeBSD!

终于成功地在FreeBSD上跑起了Windows版的Maple! Maple的界面部分是基于java的,内核不是。所以界面用FreeBSD Native JDK跑,内核用Wine跑,速度还是可以的,但估计比Linux版慢一些…… 技术细节可以参看My Tech Blog。 这下Mathematica和Maple都跑起来了~ 虽然Mathematica的字符显示还有些问题,但是…… 毕竟基本上都可以用了~ 不用装For Linux版本了……

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