Monthly Archives: July 2012

伦敦奥运开幕式感想

英国给了大家一次惊奇的奥运开幕式。 4:30才爬起来,错过了开头的历史部分,却正好赶上女王的入场,于是立刻被这场戏谑风格的开幕式吸引住了。 有多少国家在典礼上能如此嬉闹:女王和 James Bond 从直升机上跳伞入场;伦敦交响乐团演奏 Chariots of Fire 时 Mr. Bean 插科打诨还做白日梦;串吧时英伦流行乐中 Sex Pistols 的 Pretty Vacant。 但同时,这也是一场个人和社团的盛大聚会:社区中的火炬传递;演唱 God Save the Queen 的手语唱诗班;护士和孩子们演绎的喧闹童话;火炬入场时伦敦碗建筑工人的列队;最后点燃火炬的7名名不见经传的少年运动员的合作。 对名人的戏谑和对普通人的尊重,和其个性化的展现,这是我喜欢这届奥运开幕式的理由。 最后无数子火炬合成主火炬的一幕很美。 PS:回头补了下前两幕,Isles of Wonder,田园时代和工业时代的英国图景,是比较标准的历史回顾,但也演绎的有声有色。

Posted in News | Tagged | Leave a comment

DOMjudge结构简介

最近在公司里架了个 DOMjudge。简单介绍下它的结构吧。 DOMjudge 是一个自动化的编程竞赛的判定系统,由一个 DOMjudge server 和复数个 Judgehost 构成。 DOMjudge server 给用户、评委、管理员提供网页界面。它是一个典型的 LAMP 网络应用的架构,运行于 Linux 操作系统,Apache 提供网页服务,PHP 作为 CGI 脚本,MySQL 存储数据。用户界面主要显示队伍、排名、文件提交和提交状态;评委界面是管理员界面的子集,主要用来查看队伍的答题情况,可以显示提交的源代码、测试例的输出比较等,以便评委和进行验证。管理员界面用来管理竞赛、队伍、题目等配置,大多数的配置也可以通过直接编辑 domjudge 数据库中的 configure 表进行。 Judgehost 负责编译和运行队伍提交的源代码,给出判定结果。鉴于性能考虑,Judgehost 可以有复数台,且一般不和 DOMjudge server 运行于同一台服务器。它通过守护进程连接 DOMjudge server,通过轮询的方式检查 server 是否有需要判定的代码,如有,则编译运行代码,并做出判定。有趣的是,除了编译运行的部分,Judgehost 的结构和 server 的结构非常相似。守护进程仅仅是一个 PHP 脚本,而每次轮询贯彻了 … Continue reading

Posted in ACM, Computer and Internet, Operation System and Linux | Tagged , , | Leave a comment

2011电影版莎剧Coriolanus

名角 Ralph Fiennes 自导自演,莎士比亚悲剧 Coriolanus 在现代的演绎。于是就有了端着M16的罗马人和扛着AK的沃尔西人的战争。同时,剧中所有对白都是莎剧的原著。Coriolanus 的勇敢和骄傲,议员 Menenius 的友情和无奈,母亲 Volumnia 对儿子的自豪和亲情,护民官 Brutus 和 Sicinius 的无耻和狡诈,民众的自私和善变,在剧情的展开中表现的淋漓尽致。Volumnia 说服 Coriolanus 放过罗马的一幕是全剧的高潮,Coriolanus 从固执己见到逐渐被 Volumnia 感动和说服的过程极其感人。 剧中可以明显看到莎士比亚的性格悲剧和社会悲剧的元素,但另一方面主人公的性格有些欠缺发展性。 同时,这部莎剧大概算是政治敏感度相当高的一部了。Coriolanus 被反复无常的民众反对的一幕中他愤而指责民主政治为“allow crows to peck the eagles”的情节大概不会太合西方政治的胃口。

Posted in Entertainment, Film | Tagged , | Leave a comment

hashing 的一些变形和应用

最近看的 blog / code 多少都涉及到 hashing,于是就写一个杂谈吧。 首先是 ELF 动态库 的载入过程。程序载入动态库的时候需要在库的动态符号表中查找需要的符号并进行重定位。不难想象查找的过程使用了 hash 表以提高效率。几年前 GNU ELF 对原有的实现作了增强,其中之一就是在 hash 表的查找之前加了一个 Bloom 过滤器。Bloom 过滤器是一个用一组独立的 Hash 函数实现的用来测试元素是否属于某集合的随机数据结构,存在第二类错误(元素不属于集合,但测试表示属于),不存在第一类错误。因为在动态载入过程中,一般只有一个库会拥有给定符号,所以 Bloom 过滤器往往能直接过滤掉大多数库中不存在的符号,跳过更昂贵的查找动态符号表的过程。GNU Hash ELF Sections 这篇 blog 给了更详尽的介绍和实现细节。 另一种是在常在分布式系统中使用的 一致 hashing(consisitent hashing)。简单而言,就是给 hash 值空间加上距离的测度,同时将各分布式的服务器(随机的)映射到值空间上的数个点,最后按照值到服务器的距离将数据存放到对应的服务器。Consistent Hashing 这篇 blog 有非常直观的介绍。一个应用是分布式 … Continue reading

Posted in Computer and Internet, Programming and Algorithm, Science | Tagged , | Leave a comment