前一段由于收了某个 zip 文件,用 Ubuntu 自带的归档管理器打开,哎呦,那真不是一般的蛋疼……因为里面全是中文文件名,那个乱码啊……
于是我就下决心要解决这个问题。
虽然我的系统还在 9.10,但看到网上一篇文章教人如何在 10.04 中解决这个问题,我就了解了,这个问题至今没有解决。那么什么叫做“半完美”呢?大概意思就是说,对我来说差不多完美了,不过还是很可能出问题的……
Read the rest of this entry »
前一段由于收了某个 zip 文件,用 Ubuntu 自带的归档管理器打开,哎呦,那真不是一般的蛋疼……因为里面全是中文文件名,那个乱码啊……
于是我就下决心要解决这个问题。
虽然我的系统还在 9.10,但看到网上一篇文章教人如何在 10.04 中解决这个问题,我就了解了,这个问题至今没有解决。那么什么叫做“半完美”呢?大概意思就是说,对我来说差不多完美了,不过还是很可能出问题的……
Read the rest of this entry »
Comments
今天突然有兴致来对比一下我在过去的一年中主要学习的两种语言,Python 和 Erlang,他们都是很神奇的语言。不过,在我看来,更神奇的是,这两种语言几乎是完全对立的!
下面我弄了张表格来对比他们:
| 名称 | Python | Erlang |
|---|---|---|
| 主要范型 | 面向对象 | 函数式、面向并发 |
| 开发者 | Python 基金会 | 商业公司 爱立信 |
| 文件编码 | 在 Python 2 中默认为 ASCII,Python 3 中默认为 UTF-8,但都可以制定任意编码。 | 默认为 Latin-1,不允许指定文件编码。不过事实上编译器并不会在意文件中是否存在“不正确”的字符。 |
| 变量 | 几乎什么都是变量,变量都可以不断变化,无论是值还是类型。甚至你可以改变 True 和 False,让他们颠倒。(当然,也有例外,如 None,我至今没找到改变他的方法) | 且不说原子是显然不可变的,任何一个变量被赋值之后,他的值也是不可变的,这是所谓变量绑定。(单次赋值) |
| 字符串 | 拥有完善的字符串支持,在 Python 3 中这更是发挥到了极致。 | 根本不存在字符串类型,一切字符串都是字符列表,因此就更没有什么强大的字符串处理函数了。 |
| 列表 | 可以根据下标索引快速获取列表任意位置的内容。 | 考虑效率的话,只能从列表的头部摘取内容。 |
| 模块 | 依据文件系统的文件分布构建层级式的模块体系,使用模块前必须声明将模块引入当前名字空间。 | 所有模块是平行的,在同一层中,模块名称强制与文件名相同。使用模块时模块必须已经被编译,Erlang 将会自动寻找模块并读取。 |
| 并行 | 通过 GIL 这一全局锁将所有多线程操作退化为单线程操作,不存在任何并发性。(不过 Python 正在尝试加入新的模块来改变这一问题) | 天生就是面向并发的……用他仅做顺序编程是一种莫大的浪费…… |
| C 接口 | 使用 Python.h 编写接口,编译为动态链接库,运行时调入 Python 内使用。 | 编写外部程序,通过标准输入输出与 Erlang 主进程交换数据,在 Erlang 进程空间外单独运行。(也有一种在进程空间内运行的接口,不过不推荐使用) |
| 函数重载 | 不支持任何形式的函数重载,但支持可选参数。 | 支持参数数量不同的同名函数,但不支持可选参数。而且基于模式匹配,支持同一函数的不同分支的定义。 |
| 数据库 | 内置了通用的 SQLite 数据库支持,可以通过 SQL 语句进行数据库操作,储存的信息限制在文本、数字等几种。 | 内置了专用的 Mnesia,可以与 Erlang 无缝衔接地储存任何内容,通过 Erlang 的 qlc 模块不使用 SQL 语句进行数据库操作。(NoSQL) |
| 代码热替换 | 支持使用 reload 函数重新载入一个模块。 | 模块的新版本被编译后任何调用即采用新的代码。 |
可以看到这两种语言真的是非常非常不同,我想这和他们的设计初衷和适用范围是很有关系的:Python 大多数时候被用于快速的原型开发、用作胶水语言、创建小型桌面级应用程序;而 Erlang 则在一开始就被用在电信,这一对容错、并发要求较苛刻的领域。
不过我还是觉得,这两种语言都是非常优美的,以他们自己的专长而言。不过 Python 已经非常不错了,Erlang 在我看来则还有很大的发展空间~
PS:以上仅仅是就我自己的了解给出的一些对比,疏漏和错误在所难免,也希望看到了及时告诉我~
Comments
我们的 C++ 老师给我布置了 C++ 的大作业来替代其他同学交的无聊题目。大作业的第一题就是完整的高精度库,并且要求使用运算符重载。因为原来用 C 写过,这次写,思路上没有太大问题,不过全部程序被我 C++ 化了,代码看过去很诡异……呃……
我自己的机子上,自然使用 g++ 编译,不过我猜老师会要求 VC6 能够编译……我就用上次安装的 VC6 编译了一下,发现好几个错误和无数警告……其实也是我意料之中的。
Read the rest of this entry »
Comments
什么叫 BMP 到 HTML 呢……?就是生成一个网页,里面用不同颜色的字符拼出那个图片……很无聊的功能嗯,而且原理上说,生成的 HTML 文件如果要表现整个 BMP 的所有细节,大小肯定大大超过原 BMP 文件……
为什么会做这个呢?主要是受到我们 C++ 老师的启发,尝试去做的。不过我没有用 C++ 写,而是选用了寒假学的 Erlang,这也是我写的第一个 Erlang 程序。
为什么会选用 Erlang 呢?主要是基于两点原因:1、寒假学了半天,一点都没有练过,就拿这个来练练;2、看中了 Erlang 强大的模式匹配和比特语法。比特语法在 Erlang 里面原来是用来解决网络传输协议中的二进制数据的,不过这里拿来处理二进制文件着实是一个很好的选择~不过其实 Erlang 真正最重要的特性:面向并发,我完全没有用到,而是继续使用了顺序编程。主要是,BMP to HTML 没什么可以并发化的,而且就算并发了,也是大传输小计算,并没有什么很大的优势。因为是第一次写 Erlang 程序,如果有 Erlang 高手路过,还请多多指点咯~
另外一点,为什么选用 BMP 这种几乎被人抛弃的格式呢?因为最容易呗……而且我这里还用了 BMP 中最简单的一种:真彩色无压缩格式。这是最直接的图形表示方式了,就是一个点一个点的,每个点三个字节表示一种颜色。所以还是很简单的。
下面说干就干。
Read the rest of this entry »
Comments
我发觉研究的东西多了,就会看到各种神奇的 Bug……
今天写的这个 Bug 是关于 Apache 的 Rewrite 模块的。先来看一个很正常的 Rewrite 规则:
1 2 | RewriteCond %{REQUEST_URI} \.u$ RewriteRule ^(.*)\.u$ $1 |
这个什么意思呢?用过的人一定看得出来,就是把一个 .t 结尾的请求发送到一个去掉 .t 的文件上面。比如我如果请求 upsuper.u 就会自动调用 upsuper 这个文件来返回。这没有什么疑问。
然后,我们发现,.u 文件浏览器不知道是什么,而 upsuper 这个文件在服务器上又是没有类型的,于是 Apache 不知道告诉浏览器(或者错误地告诉了一个)MIME-Type。这样即使这个文件是个网页,浏览器上也会出现下载提示或者当作纯文本直接输出。
翻阅了一下 Rewrite 模块的资料,我们了解到可以使用 T 这个标志符来强制指定 MIME-Type 类型,于是规则变成了下面这样:
1 2 | RewriteCond %{REQUEST_URI} \.u$ RewriteRule ^(.*)\.u$ $1 [T=text/html] |
可是无效!
Bug 开始出现了~
Read the rest of this entry »
Comments
由于某些众所周知的原因,我准备将空间搬到米国去了。由于另一个众所周知的原因,现在的域名也将很快停止使用。
我已经申请好了新的空间,近期可能就要搬过去了。先做个广告:在此诚招空间合租者一位,无限空间无限流量,PHP、Python、Perl、RoR、CGI、CGI-BIN、MySQL、PgSQL 全功能 Linux 空间,可自定义 php.ini,提供域名对应的邮箱储存、邮箱别名服务,支持 POP3、IMAP、邮件列表,独立 FTP 管理,带免费自签名证书的 SSL 服务,含一个免费域名及一个独立 IP,3年共计525元RMB。有意者邮箱联系 quanxunzhen@gmail.com
不过因为新空间还没摸索清楚,还在研究搬迁事宜。
Read the rest of this entry »
Comments
做完了上次那个音乐征集系统的投票平台,又积累了些新的东西。因为投票平台的一些设计这么早发出来不大好,所以就先发一个发现~
IE 的 Bug 已经说太多了,今天转过来,看看这次做的过程中发现的一个 Firefox 的 Bug~这个 Bug 的触发条件我已经初步探明了。
Read the rest of this entry »
Comments
今天做投票系统的界面的时候又遇到了那个问题:用图片表示的部分和纯色部分衔接有问题。我开始还以为是我当时编写的时候就有问题,由于显示器的缘故儿没有发现。今天想解决一下这个问题,找找原因。
我先打开了 GIMP,把用的背景图片打开,取了颜色,发现颜色就是其他部分的颜色。我就奇怪了,从数值上说应该是一样的才对。然后我就取了 Firefox 里面的色,发现 Firefox 里面图片对应位置的颜色被修改了?!
下面是一个关于这一 bug 的演示:

如果你看了觉得看到的是一个完全的纯色的区域,那么说明你没有遇到这一问题。但如果你看到不是一个纯色区域,那么就说明你也遇到了同样的问题……找了一圈,没有发现相关的中文资料,觉得非常无语,难道都没人发现这么严重的问题么……
Read the rest of this entry »
Comments
17号的时候虫子向我求助,想要我帮忙做一个支持海地的小网站。大体的思路就是,在上面的放一个大地图,然后大家可以留言、上传照片什么的,然后就在地图上出现亮点,然后亮点点进去可以看到留言和照片~这个网站已经进入公测了,大家可以在这里查看:Haiti <3(话说我曾经问虫子“<3”是什么意思,她告诉我,是爱心的意思~)
我猜从来没做过网站的人一定会觉得这个很简单,但我觉得一点都不简单……不过似乎可以实现~这种无疑又是对我技术的一次挑战!
Read the rest of this entry »
Comments
众所周知,Windows 下的中文程序使用的是 GBK 或 GB18030 编码,而 Linux 下则默认是 UTF-8 编码。对于图形界面的程序,wine 对中文的处理似乎已经做的不错了,但对于文字界面就无能为力了……
在网上找了找,发现很多人的方法是改 .profile 或者 .bashrc,在里面把 LANG 和 LC_ALL 设置为 zh_CN.gbk 或 zh_CN.gb18030。这种方法对于只在 Windows 下用终端连接 Linux 的用户当然没问题,可是对于像我这样惯用 Linux 的人怎么办?
Read the rest of this entry »
Comments