EverET.org

好记性不如烂笔头

[分享]How to Become a Hacker——如何成为黑客

| Comments

作者:Eric Steven Raymond

译者 : 刘海粟   (此文部分内容参考Ken Lee 前辈的译文

本文的PDF文档可以从这里 获得。

为何有此文章?

身为《黑客辞典1 和其他一些知名文档的作者, 我常收到热心的网络新人的电子邮件, 问及“如何可以成为一名神奇的黑客?”。 早在1996年我便注意到,好像还没有任何一个“常见问题”或者网络文档论述过这个重要的问题,于是我决定撰写此文。我相信很多黑客都在考虑我现在考虑的这些问题。然而,我并不认为我在这个问题上是唯一的权威,如果你不认同下面读到的这些内容,那请你写下你的看法。

如果你正在阅读离线文档,那么你可以在这里 找到本文的最新版。

本文的装饰物——这个五点九宫图被称为“滑翔机”。在一款令无数黑客痴迷的名为“生命游戏”2 的数学仿真游戏中,这个简单的图案蕴含着令人吃惊的特性。我认为它是一个能够彰显黑客本质的图形徽章——抽象,起初在表面上有些神秘,但自身拥有一个具有错综复的逻辑性的入口通向整个世界。在这里 可以了解更多关于滑翔机徽章的信息。

神奇的Python:解析OGRE配置文件

| Comments

OGRE(Object-Oriented Graphics Rendering Engine,即:面向对象图形渲染引擎)是一个用C++开发的面向场景、非常灵活的3D引擎,它旨在让开发人员更容易、更直接地利用硬件加速的3D图形系统开发应用。这个类库隐藏了底层系统库(如:Direct3D和OpenGL)的所有细节,提供了一个基于世界对象和其他直观类的接口。 译者注:ogre在英文中意为:食人魔鬼, 怪物, 象鬼的人,故其LOGO是一个怪物头。

以上引用自百度百科。

OGRE的很多东西都通过配置文件来控制,这样会很灵活。

配置文件的例子如下:

1
2
3
4
5
6
7
8
9
10
11
[Bootstrap]
Zip=../media/packs/OgreCore.zip

# Resource locations to be added to the default path
[General]
FileSystem=../media
FileSystem=../media/fonts
FileSystem=../media/sounds
Zip=../media/packs/ogretestmap.zip
Zip=../media/packs/skybox.zip
#Zip=../media/packs/chiropteraDM.pk3

它分了section,在section下有许多配置语句,也就是一些赋值语句。

其配置文件的文法类似如下:

神奇的Python:格式化UltraDemo的文法

| Comments

SimpleParse是一款非常简洁的Python解析模板,可以自己定义EBNF文法,然后SimpleParse会输出结构化的。

SimpleParse的介绍可以见,http://www.ibm.com/developerworks/cn/linux/sdk/python/charm-23/index.html,我也是从IBM的网站上看到这个神奇的模块的。

我们有如下的UltraDemo的文法,这个是我们之前写在word文档里面的。

他们很乱,于是我们要对其进行格式化。

不幸的是,我们没有现成的工具可以格式化它,所以我们要自己定制一个小工具来完成我们的任务。

此时我们可以借助SimpleParse。

下面的原始的文法,很乱是不是:

Clover折纸数据结构的文件保存

| Comments

Clover的数据结构是由面层,边层和点层所组成。

面层

面层是一棵二叉树外加一个面组用于实现重叠的面的拾取和避免Z-Buffer失效。当发生折叠的时候,肯定至少有一个面会被分割成为两个面,所以二叉树的叶子增加两个节点,叶子更新,渲染层也需要更新。

facetree

边层

边层是二叉树组成的森林,

facetree

C#的模板

| Comments

一个很2B的求两个List的差集的作为示例

cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        List<T> Minus<T>(List<T> list1, List<T> list2)
        {
            List<T> ret = new List();

            foreach (T e in list1)
            {
                if (!list2.Contains(e))
                {
                    ret.Add(e);
                }
            }

            return ret;
        }

当然地球人会这样写:

List beDeletedEdges = currentEdgeList.Except(originEdgeList).ToList();

好吧,我喜欢把C#当Python写……

What?Bugzilla Is Down

| Comments

Bugzilla是基于Web的通用软件缺陷追踪工具。目前Linux Kernel,Apache,Mozilla,Gnome,KDE,Open Office,Eclipse,Facebook,Nokia,Yahoo! 等等都采用了Bugzilla这个缺陷追踪工具。

这段时间写代码我们的bug list都是写在一个txt里面,真是弱爆了……于是想用有效的工具来管理我们的bug。

据说在微软,大家上班第一件事就是打开缺陷追踪工具看看昨天测试人员找出了什么bug,然后开始一天的工作。

确实,只有有效的设计、实现、测试和管理才能保证软件的质量。否则我们的软件都是不堪一击的。

于是偶装了bugzilla来管理我们的一些项目。

在偶改完设置后,Bugzilla就显示“Bugzilla is down”,然后偶就很无语,发现在首页登录都登录不进去了,这要我如何是好。

Google了下,发现访问 http://bug.everet.org/editparams.cgi 就可以进去修改去设置了。后来发现是我在shutdownhtml的框里填了东西,他就down了。清空它的值就好了。

这真是弱爆了的用户体验啊。不过也怪我没仔细看说明。

shutdownhtml

  If this field is non-empty, then Bugzilla will be completely disabled and this text will be displayed instead of all the Bugzilla pages.

给笔记本加装了SSD

| Comments

一直感觉电脑性能的瓶颈在硬盘上,于是就决定加装一个SSD。做法是把光驱卸掉,把硬盘装到硬盘架上插到光驱里面。于是就把最没用的部件从电脑上拆掉了。

我们4个人一起买了镁光的64GB的SSD,里面也只有60GB,又是硬盘厂商经典的计算方法……

我的主板只支持SATA2的接口,所以读取速度只到250MB/s就没什么变化了。

我们来看看笔记本里机械硬盘的速度

UltraDemo的界面用C#重写

| Comments

UltraDemo是一款数据结构的实践与演示的平台,可以在上面编写类C的代码。

通过UltraDemo,我们将可以以图形化的信息观察到我们写的数据结构的变化的过程。

UltraDemo是由编译器、汇编解释器和动画框架加上动画组成的平台。可以单步调试,查看内存变量等之外还可以观看动画形式的数据结构,这样可以方便初学者更快地理解各种数据结构。

原来的界面是C++/MFC写的,长得和VS2008差不多,看上去风格挺古老的。

image

给电脑装了6块硬盘后

| Comments

今天在光驱位装了块硬盘,于是想在弄过几块硬盘看看到了Z盘会发生什么事情。

最后发现到了Z盘后,就识别不了新的硬盘了。Windows果然弱爆了。

今天贡献硬盘的有洪科,晓彬,钦杰,桐文,谢谢他们啊~~

见证历史的图!!