C#、软件工程、破解、骇入、应用程序、php、html、sql、网页方面的遍程
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]
在台湾,想要做网站创业,他们用家里的宽频 10M/2M,自己的电脑开24小时,就能够当作 server 来使用。

先從常識說起:世上所有网站,都是一台台的 http server,对用户回应。

每个网站,有自己的“域名”。xia4.org 就是一个“域名”,是全球独一无二的。我注册了这个域名,别人就不能够使用。

这个域名会通过一个叫做 DNS server 的服务器,转换成 ip 地址。

每个ISP都有自己的DNS server,像TM Net的 DNS server,就是 202.188.0.133 及 202.188.1.5 这两台电脑。

当你在 IE 或 firefox 输入 xia4.org时,DNS server就会把“xia4.org”转换成一个固定的IP 地址:“208.113.236.13”

这个地址,会指向美国的一台服务器,那台服务器是我每个月用USD 9.95向一家叫做Dreamhost的公司租用的(我只是租用一部分)。

我的blog的全部文章、密码、图片,都放在那台电脑上面。

如果有人要访问 xia4.org时,那台电脑就会“回应”他,把“夏之星系”这个blog的首页展现给他看。

所以世上的网站,从本质上来说,没有差异。只是作为回应的服务器,可能放在马来西亚、美国或中国,性能有强弱之分,如此而已。

服务器必须24小时和外界连线——如果中间有故障,它便不能够回应外界的查询。这时候,你输入“xia4.org”,就得不到回应,也就是“site down”。

如果是要正式经营一个网站,这是不可接受的。

在台湾,想做网站创业,他们可以用自己的电脑来做服务器。也就是说,他们注册一个域名,把ip地址,指向他们家里的那台电脑。

这样做的好处之一,是省钱。以dreamhost来说,如果我要租一台服务器,这种叫做dedicated hosting,每月可要四百美元以上。

在马来西亚想省钱,用家里电脑当服务器?

一来,台湾的宽频是10Mbps/2Mbps,马来西亚的才1Mbps/512kbps,上载速度差很多。二来,Streamyx 会故障,一旦故障,用户就进不来了。

我中学时,就曾经这样玩过,尝试用自己的电脑,当作http server来用。

那时候,网络不像现在那么发达,当时的个人网站,只能够放在Tripod.com上,空间大小及流量都有很大的限制。

于是我想,用自己的电脑来做server,不就可以提供庞大的存储空间吗?要放上整堆mp3给人下载,都轻而易举。

后来测试一下,56kbps的拨接速度,使用者要打开一个网页,都要不少时间。再加上当时一小时的拨接费用,要 RM 1.50,这样玩法一个月可要数百元,只好放弃了这种想法。

印象中,那时候台湾已经开始在用宽频,速度比56kbps快这点,姑且不论。更重要的是“不依时间收费”、“和电话分割”这种种好处。

我一直到2002年,都还是在使用56kbps的拨接。到2004年,才开始安装 Streamyx,可以无限上网。和国外相比,马来西亚的网络世界,落后了多少年呢?
我觉得,到了现代,Hacker的Hack,也可以泛指为“鑽入已有的庞大体系或机器内,修改内部数据或程式,以创造新的类型”

为什麽别的行业很少出现hacker一词,是因为程式天生就有一个本质很特别:一个庞大程式往往可以只修改当中短短几行,便可以改变很多的特性。

比如你给我一个OS或者软件的源代码,我需要修改里面的一小部分,我只需要进入源代码之中,改动里面的几行代码,我会把这种行为称作 Hack。

如果我重新开发大部分的程式,我会把这种行为成为 development。

一般上Hack是有着“不正规、杂乱、创意、难解读”的特性,和OOP或软件工程讲求“明确、清晰、开发流程”成为对比。

开始的时候,是对程式代码的 Hack。有人说 Open source的开发,就是建立在一个又一个 Hack上面。我改动一点,你改动一点,结果慢慢变成大程式。

后来就慢慢应用到网络环境的 Hack,也同样是进入已有的程式作修改。到最后演变成侵入别人的电脑、破解别人的主机,也变成是 Hacker了。

Php 4.0 走入历史

[ 2007/07/14 04:16 | by haryewkun ]
点击在新窗口中浏览此图片昨天,官方终于宣布即将于今年年底,停止对于 Php4 的支持,让 Php4走入历史,由 Php5 继续这个航程。

就好像 Win95 - win98 - win2000 - winxp - vista,当新的平台运作得足够成熟之后,旧有的平台就会逐渐走入历史,更新的平台则在继续开发。

Php这个语言,开发于1994年。不知不觉间,也已经有13年的历史了。第三版推出于1997年,第四版推出于2000年,第五版推出于2004年的7月13日。原来,昨天是 Php 5 推出的三周年纪念。

作为程序员的人,便是这样随着时代,而必须适应不停开发出来的新语言、新架构。每一个版本的间隔有三、四年,看似很长,但要专精一个语言,这个时间其实并不长。

现在最稳定的 php5 版本是 5.2.3。而 php6 已经在开发中。相信再过三、四年,可能就是 php7的时代了。

对于主机服务商来说,这也许是一件好事。终于可以少支援一项语言了。对开发商来说,也可以全面发挥 php5 的功能,而不必兼顾和 php4 的兼容性。看似缓慢,但时代终究不停地往前走了呵……
这件事和我无关,而是一个发生在台湾网友的真实个案。

他做好了网页,发包方以“网页不能在Firefox上打开”为理由,拒绝付他剩下的款项。

有人认为,这是发包者有意要不付尾款,存心不良。

也有人认为,现在写网页,要能够通过七种browser,已经是基本配备。

而我觉得,合理与否应该是看当初报价。总不可能马币一千元写数百页的网站还要全部通过七种browser的测试,HTML validator就更不用说了。

举另一个例子,写程式,会不会要求说在Windows 95、98、2000、NT、XP、Vista上面全部都跑过可用性测试?中间有一个版本不能够执行,客户就不付钱?

我总有办法找出第八种browser让你的HTML无法正常显示。除非你有本事连Lynx都测过。问题是这样要报价多少?

所以我觉得合理与否是要看当初报价。如果报价马币一万,却 IE-only,那就不是很合理。如果报价马币五千以下,那就……

当然,这是站在职业道德的立场来看。如果根据商人的立场,当然是合约条文怎样写就怎样算……

C# 真的太容易被反组译了

[ 2006/08/17 17:28 | by haryewkun ]
听说﹐几乎没有共享软件(shareware) 是用 C# 写的。

因为﹐真的太容易被反组译(Decompile)了﹐而且反组译出来的源代码﹐和原本的源代码完全一模一样。

当然﹐要是拿来做开发源代码的专案﹐是再美妙不过了。

不用声明 GPL﹐也自动GPL。那个獃子要拿来盗版﹖根本无法封堵。

可是﹐要是拿来做商业产品﹐就很不妙了。比方说﹐SQL 的格式﹑资料库的密码﹐统统都可以被看光﹐怎样做商业应用﹖

网上着名的反组译程式 Reflector 就是免费下载的。要看看自己做出来的 EXE 或者 DLL 会被反组译到怎样的程度﹐下载来看看就知道了。

另外﹐C# compile 出的 DLL 也是可以被 Decompile 的﹐已经测试过了。

Visual Studio 2003 裡面包含的 Dotfocastor 只是普通版﹐听说效果超烂。

真正professional 版要 1495 美金……而且也无法阻止人家看到代码﹐只是名词全部被换掉﹐要理解比较困难而已。

令人又爱又恨的 Mambo

[ 2005/01/10 11:50 | by haryewkun ]
点击在新窗口中浏览此图片

忙了一整天,想要设定这个非常著名的 CMS:Mambo。好不容易装上了 4.51.a 黄金版本,却没办法装上 phpBB for Mambo,而且速度非常地慢。

于是一怒之下,洗掉全部已经安装了的东东,下载较旧的 4.5.09版本。到截稿为止,还在努力中。。。这种东西真的是害人不浅哪。

Mambo 的界面的确非常地美观,http://www.mambochina.net/。不过要着实运用它的潜力看来并不容易。。。单单是要让它结合 phpBB、phpShop 等一起运行,就够困难了。

而且也发现了 RSS 的一个问题:里面如果有 local reference 的 URL,别人就没办法看到。。。

(除非我修改 RSS 的 code filter 掉类似 img/rimg 等 code 吧)

VTK Applet 的开发进度

[ 2005/01/06 12:38 | by haryewkun ]
点击在新窗口中浏览此图片

VTK 是一种 3D 的 visualization 处理 API,由 kitware 发布的开源计划。听说在很多大学中都是被广泛用作 visualiation 的实作示范,它包含的 class 真的是多到很恐怖的……

当然还有更大的专案,但对我来说,一人之力,这种 source file及 class 已经超过一千个的专案,已经算是够大了。

这几天见进度延后了,拼了……每天一起来就打开电脑继续研究,每天都通宵做到明天早上太太上班了,自己累倒了,才倒在床上睡觉。日复一日,做到电脑面前已经数不清有多少小时了。

我现在在做的东西是,要在 Java Applet 上面实现 VTK,换言之,signed-applet + JNI + VTK wrapper 是实现唯一的选择。

这个提议是我自己向上司提出的……毕竟要是要靠原本的手动用 Java 一个个 visualization method 实现下去,要做到何年何月才能做得出来?

而且这是重复发明轮子,比方说 contour/ isosurface 这些实现方式,早在 VTK 中就写出来了。

为了要在 Applet 上面使用(目的是要跨平台、在browser 上面使用),而用 Java 一个个程式再写过去,并不是明智之举。

尤其是只有我一个人手……要写到什么时候呢?

我硬着头皮向上司提出,尝试在 Java 里面,用 applet 驱动 VTK 的 DLL (VTK 是用 C/C++ 写的)。

对于我这个毛头小子来说,牵涉的技术未免稍微超过了我的能力范围了……要在browser 里面运行的 applet 中驱动属于 C/C++ 的,JNI 是唯一的解法。

要使用 JNI,第一步就必须用 signed-applet 穿透 JVM 的 sandbox……要不然,applet 是没办法读取 native 的 VTK DLL 的。

这第一关,花了一定的时间,托 Google 之福,大约知道了要怎么做成 signed-JAR,然后就能在 client-PC 上面横行无忌了。

第二关,就是该 applet 到底要驱动 VTK 的什么东西?

我就在这边踢到了铁板。

我以为只要用 JNI 驱动 VTK 的 DLL 就好,但我忘记了,VTK 是一个 visualization 的 API classes,它设计的目的,就是向荧幕输出影像,在 native 下面是没有问题,在 browser 的 applet 环境下面,怎么向它 pass screen 的 buffer?这真的是大大的麻烦!

最后,找到了一些方法解决到了(VTK 有提供相关的 wrapper classes)……坦白说我也不是很明白解决方法的工作原理。所以还是有隐忧的。中间还有种种问题,就不一一细说了。

到了几小时之前,终于在荧幕面前做出了骷髅头的 3D 模型!最大的技术难关应该算是实现了,这才稍微松了一口气。

比如用 JFileChooser 选择本地的档案、或者要怎样拿网上的 file 下来给 VTK class 处理(没办法,VTK 的 reader 是 file-based 的)……这些大概都有方法实现。

整个过程,其实承受了蛮大的压力。这绝对不是劳力活,也没人知道这样子尝试到底行不行得通。新的尝试是自己跟上司争取的,可一上 VTK 的 forum 看看,之前尝试过要把 VTK 用在 Applet 上面的人其实并不少,可是几乎全都哀嚎连天,好像没有听说过谁成功过的!

我自己对 Java 的底层运作一无所知,只好硬着头皮模着石头过河!还不知道河有多长,搞不好那不是河,是海!事实上,我现在也还没走到对岸,是看到了陆地的影子,搞不好那只是荒岛的影子。。。

我的部门里面,没有 senior 了(如果照年资,我自己也算是 senior 了),所以没人可以在前面带路了。

事实上我找了Google 很久,也没看过谁成功做出来过(当然也可能有人做出来了没公布,或者我没找到)。所以,在全世界的范围,也没有成功者在前面带路,大家全都是模着石头过河……

我心里不是不怕的,成果做不出来,这两、三个月的时间就白花了。上司追究下来,以后的信用度就没了。没别的方法,唯有多加苦功,尝试看做不做得出来再说了。

希望一切顺利吧……如果一切顺利,两个星期内我就可以看得更清楚了。不止要考虑能不能 implement 出功能,还要知道到底能不能达到需要的适用程度……

另外,也不是说能运行就行了,有些东西不在我控制的范围之内,例如 VTK 的 classes,如果全放在 JAR 里面下载,就要 700 KB 以上,VTK classes 的数量不是我能控制的。

有时候,可能 VTK + applet 这个点子像炼金术那样,从一开始就注定了是行不通的。我怕的就只是这样。若真如此,不管付出了多少的努力都是白费的。

如果可以行得通,那就有意思了,听上司本来的意思,是有打算要拿来 open source 的。或许可以投给 VTK 的 development team,或许可以有一部分的源代码可以做成 framework。。。

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

JAR里的class呼叫JAR外的class

[ 2005/01/05 09:36 | by haryewkun ]
JAR 是一个很好的压缩性工具,可以把许多 classes 档案压缩进一个 JAR 里面,节省了 HTTP request connection 的需求。

在这同时,也只有把程式压缩成 JAR 的格式,才有可能做出数字签名(signed applet),也只有数字签名,才能让 user 选择要 break the sand box: 也就是 bypass Java 的 security。

我在开发中遇到一个问题,我的所有 class 档案太大了,我的 Java project 包含了一个很庞大的 class 库,至少有一百个 class 档案。

很不巧的,我的 main class 需要 bypass Java 的 security (因为必须要用到 JNI),所以很明显,我的 main class 一定要被包装进 JAR 里面。

如果全都包装进 JAR 里面,档案太大了。而且不是每个档案都会有用到。

可是,如果不把全部档案包含进去,只把 main class 放入 JAR,其他的使用 class 的话,main class 又找不到其他的 class 档案(因为它们不在 main class 所在的 JAR 里面)

解决方法是:
添加一个 manifest.mt 的档案,里面内容加写说
Class-Path: clsHello.jar

那么,这个 clsHello.jar 就算被列入 main JAR 寻找的 classpath 范围内了。也就是说,mainHello.jar 里面的 class,可以呼叫 clsHello.jar 里面的 class 了。

这些知识对于 Java 高手应该是轻而易举,我只是要记录下来怕自己忘记了而已。

附注:如果 main JAR 被 signed 的话,其他 classpath 内的 JAR files (例如 clsHello.jar) 也必须要被 signed。否则会出现数字签名不对的问题。

至于这样搞,download main JAR files 的时候,会不会顺便也 download clsHello.jar,还是等到有用到clsHello 里面的class file的时候才装上,我就不知道了。因为除非监视 IIS或者apache 的log file,否则要查出来也是不容易的。
写 ASP 程式,在测试的时候,老是出现 Can't find page 的错误页面。不管怎样测试、怎样寻找 code 里面是否有错误,都无法找出原因?

问题很可能是出现在 Norton Anti Virus 上面。

相信,有用 Norton Anti Virus 的人应该不少。在 Norton Anti Virus 里面,有个 Script Blocking 的功能,如果开启了它,恰好你又在 develop ASP 这些 script language 的页面的话。。。在测试的时候,它就会让你完全开启不到,只留下一个 Can't find page 的错误页面。

目前我所知道的唯一方法,就是 disable 掉这个功能。原本设定的 Ask me what to do,在我使用中发现,完全不会有任何 dialog box 跑出来问我。
以前读大学的时候,有些同学,从来没有做过系统,只会学校教的C++,JAVA的基础,甚至连VB都不会,却能凭他保持中上的水平成绩。而一些高手,从基础课开始读起,侧重程序忽略理论,PROJECT很好,但FINAL成绩却很滥。

这是否教育制度的错?我也曾经有过这样的感受。。。

后来,我是想开了。因为我发现了这样的想法其实是矛盾的。

首先,我觉得那些没有 programming 能力的人也能拿到很好的成绩,是羞耻的。其实我心里在想的是「应该要很强 programming 的人才应该拿到很好的成绩」。

再细看,我心中其实是这样认为:「project 好但考试差的人,不应该比那些只会考试的人差」。

所以,我的结论是:「只会考试的人,成绩却在会做 project 的人之上,是错误的。这是教育制度的错误。」

后来,我发现了矛盾。

第一,我们是不是低估了优等生?如果有一天,教育制度的设计不一样,全部以 project 的成绩来决定优劣的话,那些优等生把全部的时间投入在project上,可能成绩也一样在我们之上呢!

这绝对不是无中生有。我发现,优等生的时间管理(Time Management)及努力程度一向都十分地高。这才是大公司聘请他们的真正原因。我们以为他们不擅长 programming,其实是错的。

他们知道programming 占的分数不多,所以不想投入太多时间在这边,而投入更多时间在课本上。所以他们赢,我们输,programming 很快就会outdate,他们大可以在毕业过后再迎头赶上!

第二,教育制度是不是真正错误呢?programming 的能力好坏到底是不是 computer science 的重要环节?

要怎样衡量是一个问题。这里用最简单的想法:那一个人可以做比较大的 project,可以得到收入比较高。就实战的衡量,那些programming 很好的人,往往只能做 programmer,收入两千、三千不到。

可是,那些优等生却往往有能力担任 project leader,收入四、五千元以上。不由得不让我深思,那一种人才能为社会作出更大的贡献。

如果 programmer 高手的价值比较高,那么我也不应该在意教育文凭,何必去在意呢?只要我能挣到更好的收入、管理更大的专案,那才是真正衡量我的地位的东西。
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]