0

Comments

今天大学军训完了,不想做什么正经事,就想到前一段时间想做的寻找相似汉字的程序,用以寻找更高仿的贴吧 ID。用程序来寻找相似汉字,从另一个角度,也是从 Matrix67 大牛的一篇日志里得到的启发。不过 Matrix67 大牛使用的是 Mathematica 来寻找,我不大会 Mathematica,就想用我熟悉的 Python 来解决,毕竟 Python 是一个很强大的东西~
Read the rest of this entry »


0

Comments

虽然说现在在澳洲度假,应该写的是游记,不过免不了还是胡思乱想一番,于是一早起来来写这篇文章。题目看起来很技术,其实这篇文章我一点也不准备讲技术。

我觉得,Windows 就像毒品,而 Mac 和 Linux 则是两种不同的信仰。

Mac 为什么是信仰其实并不需要多说。苹果的东西做得确实非常好,无论是外表、用户体验还是科技创新。不过果粉们选择 Mac 的理由和这些都没有关系,反倒更像某个讽刺果粉买 iPhone 的短片里说的那样,因为这是苹果。这就是一种宗教般的狂热。

而 Linux 则代表了软件界中一种开放和自由的精神,追捧它的人们所怀有的是一种乌托邦式的梦想和希望。这种精神是极有号召力的,且不说默默无闻的第二大软件公司 Oracle,也不说妇孺皆知的 IBM、Intel 和 nVIDIA,就连把 Linux 视作最大敌人之一的微软,都曾经想要为 Linux 贡献代码。

反观 Windows,虽然有无数的人离不开它,依赖它,但是同时听到的,也是种种的抱怨和不满伴随着 Windows 的成长。人们知道 Windows 有种种麻烦,而且今后可能需要为此付出许多额外的开销,但是仍然义无反顾地选择 Windows,而离开它却需要经历一个痛苦的过程,这完全与毒品无异。

可,这就是现实。绝大多数游戏除了家用机的版本外,基本只有 Windows 版;许许多多精巧有趣的小程序和专业性较强的软件,也并非全都有 Mac 和 Linux 版。这就是现实,现实和狂热的信仰,和梦想和希望之间总有那么些距离。因此有时我们不得不向现实妥协。wine (可视为 Mac 和 Linux 下的 Windows 模拟器) 就是一种妥协,Parallels (Mac 下的 Windows 虚拟机) 就是一种妥协。

但是,存在现实并不代表我们不能像 Martin Luther King 那样拥有梦想,并不代表我们不能拥有狂热的信仰。向现实的妥协有时不过是为了更好的追求我们所追求的那些东西。

毕竟,构成这个世界的,虽然有90%的现实,但也有9%的狂热和1%的理想;

毕竟,hope is a good thing, and maybe the best of things.


0

Comments

貌似很久没发文章了,无聊冒出来发一个……

这次发的东西是很无聊的,大家知道最近世界杯在踢。不过呢,作为一个对体育几乎毫不关心的人,这事基本上也跟我没什么关系……不过我要说的呢,是关于世界杯竞猜的“赌博”游戏,貌似不止百度再做,还有网易、校内什么的都在搞。不过鉴于百度这个,比较经常上,我就也来参加了~

当然,发在这里的东西总归要有一些技术性……这次也不例外的……

我看到网易的竞猜不仅有各种形式,而且最重要的是有赔率!而百度只显示投注金额,显然不够专业,于是我就拿 Greasemonkey 插件,可以在百度投注金额的下面显示当前赔率~就像下面这样:

安装了 Firefox 的 Greasemonkey 插件的,可以点击这里安装这个脚本:tieba_guess.user.js

哦,有人大概会注意到我在前面那张图里面下注给了韩国。倒不是我多喜欢棒子,只是因为我几乎完全不懂足球,所以就根据赔率压冷门……话说压冷门有的时候其实很划算的,比如昨晚我压瑞士,赔率40!赚翻了~强大吧~


2

Comments

前一段由于收了某个 zip 文件,用 Ubuntu 自带的归档管理器打开,哎呦,那真不是一般的蛋疼……因为里面全是中文文件名,那个乱码啊……

于是我就下决心要解决这个问题。

虽然我的系统还在 9.10,但看到网上一篇文章教人如何在 10.04 中解决这个问题,我就了解了,这个问题至今没有解决。那么什么叫做“半完美”呢?大概意思就是说,对我来说差不多完美了,不过还是很可能出问题的……
Read the rest of this entry »


QR code 生成器

2

Comments

前几天在找 Android 应用的时候,又见到了 QR code。说到 QR code,记得2006年,我还在维基活跃的时候,有一个人在维基的 QQ 群上发了这个的东西,然后大家就觉得很好玩。很早的事情了。寒假回福州的时候,在乌山公园,不少地方也有这个二维码,是移动设置的“物联网试验区”。

二维码着实是一个很有趣的东西。据我去过日本的同学讲,这个东西在日本已经十分普及了。在维基上查了一下,QR code 是开放的,有专利但没有被行使。而且识别算法似乎已经十分稳定成熟了。Android 手机里面安装一个 Barcode Scanner 就可以利用摄像头扫描二维码了,非常方便~

二维码可以干嘛呢?它可以储存网址、储存电话、储存名片信息,扫描一下就可以读取出来,将人从人工的复制方式中解脱出来~

于是我便也做了一个 CGI 的 QR code 生成器。
Read the rest of this entry »


4

Comments

因为某些原因,在长期懒得翻出去更新 Twitter 之后,昨天又心血来潮的想上一上。考虑到我现在只有 VPN,整天挂着不太好,便在自己服务器上挂了个 Twitter 的 API,这样可以用支持 API 的客户端上,还是很好的~

找到了一个 Twitter 的 Python API 和 PHP API,不过由于 Python 的那个是为 GAE 弄的,所以就用不了了,弄了个 PHP 的 twip 下来。2.x 似乎用不了,直接弄了个 3.0,虽然还是 Beta,不过能用就行。

其实我这个服务器吧,有一个比较囧的地方,似乎是不能用 twip 默认的认证方式的,于是查了半天,最后找到一种方法,是在 index.php 当中把 $options['cgi_workaround'] 变成了 “YES I DO NEED THE WORKAROUND!”,然后 API 填写的地址后面再加上 用户名:密码/ 就可以了~

比如 http://example.com/t/ 是 twip 的话,我登入的时候就填写 API http://example.com/t/upsuperx:XXXX/ (当然,我的密码肯定不会是XXXX咯……)。

这样就可以用了~

为了防止被和谐呢,我还特意弄了个 SSL,虽然那个证书是自签名的(也就是不可信的),不过其实我要的只是加密不随便被 ban 而已~估计大墙什么的也不会监听我这个东西,所以也就不理他了……

最后选用了 pino 作为客户端。不过似乎不太好用的说……不知道是不是因为服务器速度不行,所以通讯过程容易被打断……此外 Android 上面的 Seesmic 的菜单打不开,Swift 似乎用不了这个 API,于是我就感觉到很囧……

谁有好的 Linux 下客户端推荐一下唉……doggy 曾经向我推荐 twhirl,不过我考虑到我上网本 Atom N270 的 CPU 和 Linux 下悲剧的 Flash 效率,我非常怀疑这个基于 Adobe AIR 的客户端的运行效率,以至于完全不想去尝试……


1

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:以上仅仅是就我自己的了解给出的一些对比,疏漏和错误在所难免,也希望看到了及时告诉我~


0

Comments

因为以后可能要用到,于是今天用 Erlang 写了一个 0-1 背包算法,这算是我第一次用 Erlang 写算法,也是我第二次写 Erlang 程序……

以前都使用正常语言写,各种算法自然不会难写。所谓正常的语言,呃……也就是我们平时用的最多的语言了,像 C++、Python 什么的在我看来都还算正常的语言。那么 Erlang 到底哪里不正常了呢?

其实 Erlang 只要两个不正常的地方就足够囧死人了……那就是:

  1. 没有循环,必须用递归代替
  2. 数组不能随机访问,只能从头部读写

其实说数组不能随机访问吧,应该也是能的,只不过时间恐怕就不是 O(1) 了罢了。
Read the rest of this entry »


1

Comments

今天看到一个网站叫做 Cleverbot.com,这个网站非常有趣,你可以跟这个网站里的机器人聊天~

这个机器人可不是一般的机器人,你跟他说英语他会说英语,你和他说中文(拼音,不支持汉字……),他会说中文。你如果和他说“Chun ge chun ye men.”,我看到了几种不同回答:“Tie xue zhen han zi.”,“Zeng ge chun ye men.”……

可谓相当智能!不过电脑的智能从哪里来呢?其中肯定有问题!

如果你问他“Ni shi zhen ren hai shi ji qi ren.”,他会告诉你“Wo shi zhen ren.”,不但如此,你还可以问他诸如,你是哪里人,你是男的还是女的,等等问题,他多可以做出符合逻辑的回答。

于是我做出这样的猜测:这个机器人根本是骗人的,他是直接抓两个类似的人来聊天!不过很快这个想法就被否定了,因为他会答非所问……于是我就做出了新的猜测,估计这个机器人会自动考虑自己是否有能力回答一个句子,如果没有能力,他就抓一个真人,然后学习真人的回答。

这个系统的机理我估计就是这样,不过要抓到符合条件的真人还是需要一些方法的。

最后,这个东西有一些很有意思的话,比如刚才我看到这个机器人告诉我“Ni jiao wo zuo ai ba.”这种东西,囧……

然后我有了一个想法,我们可以写一个程序,用一句“Chun ge chun ye men.”开始,然后开两个让他们对聊。然后我们再利用搜狗云输入法将这些拼音转为汉字,默默的旁观,多么有意思啊~原理上非常简单,而且交换的数据可以直接通过抓包解决,至于搜狗云的接口更是早已被众多 Linuxer 摸熟了~

有意思有意思~有时间说不定会考虑弄一个出来~当然,如果谁有兴趣自己弄了,说一声让我来旁观哈~


3

Comments

每当感觉到系统卡的时候,最好的方法无外乎进入 tty,登入,打开一个 top 监视。可是每次到了需要的时候才去开,打开的效率自然不敢恭维。于是便想,每次开机的时候,记起来就跑到 tty 下面去先开起来。不过这件事情总归是麻烦的,于是才有了现在的方案。

既然 tty 那么多,那我们就把他利用一下吧~让他开机自动在某个 tty 里面启动 top 无疑最方便了~
Read the rest of this entry »