黑客们为什么青睐邮件列表

2012 年 1 月 27 日 分类 :爱折腾 0

现在通过网络来于人交流的工具和手段多不胜数,但在多次和技术圈的前辈们的交流中,他们都极力推荐我用“邮件”、“邮件列表”这种方式与人交流。这不得不说是一个比较“神奇”的现象。因为邮件列表只诞生至今已有几十年的历史,可以说是自有网络、有邮件,就有这种交流方式。但网络世界变幻风云,网络产品更新换代、以新代旧的过程是飞快的,为什么“邮件列表”能一直屹立,从众多工具中脱颖而出,成为备受黑客青睐的线上交流方式呢?

什么是邮件列表

简单说,邮件列表是一种可以多人参与讨论的邮件形式。用户将要发表、分享的内容放送到这个平台,邮件列表系统自动发送给其他订阅这个列表的用户。如果其他用户有东西要反馈、交流,也可以以回复的形式发送到这个平台,系统也自动投递给其他用户,从而到达多人交流的目的。

如果这是这样,邮件列表不是和当下的论坛和IM群聊类似吗?当然不止,邮件列表当然还有它的“过人之处”,或者说是它还有一些足以让黑客们兴奋的特点。

邮件列表的特点

其实我用邮件列表、喜欢上邮件列表的时间也不长,但它的一些优点给我的印象很深刻。(我想当然)也许这就是黑客前辈们青睐邮件列表的原因吧。

“分布式”

与论坛这种平台不同,邮件列表可以说是“分布式”的。邮件列表的核心是一个邮件“群发”平台,系统只负责邮件的处理、投递。而邮件的内容则是订阅者人手一份,这样我们不必像在论坛上交流一样担心有一天论坛由于某些原因不在了,上面的内容也没了。对于优秀的邮件内容我们可以收藏或者“标记”起来,方便以后查阅。就算某一天,这个邮件列表关闭了,我们“到手”的邮件也还是在的。显然对于优秀的邮件内容,黑客们是不会放过的。

由于邮件列表的这个特点,也成就了它另外一个特点——发出后便无法修改。

公开、无法撤销或者修改

大多数邮件列表的内容是公开的,只要符合要求都可以申请订阅,甚至平等地和其他朋友交流。同时因为邮件列表系统只负责处理、投递,邮件内容一旦发出便无法修改,甚至是管理员也没有!有人认为这是一个缺点,因为有时有些“不合适”的内容进入列表后,无法撤销,会因此给订阅者造成影响。诚然如此,但也有一个优点是显著的。由于发出后内容无法修改,而个人的言论通常代表了个人的素养,参与讨论的成员对自己的言论会更加谨慎,每一个字,每一句话他们都会斟酌、三思,这无疑提高了邮件列表内容的质量!这也是邮件列表区别于论坛的一大优势。

所以邮件列表里的内容通常简约明了,内容精干,闲聊瞎扯的比较少。这对于只对技术痴迷、时间宝贵的黑客们来说又是一大优势。

跨时间限制

这个优点其实是邮件列表从邮件继承来的。每个人安排时间都是不一样的,当你有空时别人不一定有空,而邮件列表正好避免了这种情况。你把你要分享、讨论的内容发送出去,有空或者有兴趣的朋友自然会“找上来”,加入讨论。也因为邮件列表是跨时间限制的,所以通过邮件列表,我们可以真正地于世界各地的朋友们进行交流。

这也是邮件列表区别于其他IM群聊的最大特点,同时因为邮件是全球“通用”的,所以不存在“软件”上的隔离。(比如国外流行MSN、国内则QQ用户居多)

内容精炼、质量高

前面说过了,每个邮件发出前都经过多多少少的思考,所以质量高。再加上,一般邮件列表都执行比较严格的管理,很少有与列表主题不相关的内容进入列表,灌水的情况和内容也比较少(相比论坛和QQ群聊来说可以说是少很多!)。同时,订阅、进入同一列表的朋友都是冲着共同的爱好来的,他们普遍都会仔细这一个共同的交流平台。不得不说的是,邮件列表里的朋友,可以说是我碰过在线上平等交流、素养较高的一群人!

以上只是我个人的一点想法和体会,各位对技术有“浓厚”兴趣的同学可以自己参与一些邮件列表,亲自体会这种交流方式的“优越性”。这种黑客们青睐的交流方式。:)

 

推荐阅读:Thomas Yao(shlug管理员 @ghosTM55) 邮件列表的文化与礼节  一篇介绍邮件列表的文章

语言的二三事

2012 年 1 月 21 日 分类 :爱生活 0

年關已至,發現這一年比起以前少記了很多博客,倒是水了不少微博。也罷,欠下的遲早要還的,趁着這點安寧,稍稍回憶並着記下之前的一些事和一點思考。

也說不上是多有意義的事,只是發現零零散散給我印象比較深的事都和“語言”這事有關。

審核令

去年年底,《广东省国家通用语言文字规定》“通過”,並將12年3月起生效。其中關於所謂“禁粵”的原文如下:

第十一条广播电台、电视台及其网络音视频节目以普通话作为播音、节目主持、采访的基本用语。

使用方言播音的,应当经国务院广播电视部门或者省广播电影电视部门批准。电视台用方言播音时,应当在屏幕上显示规范汉字。

影视剧的语言应当以普通话为主,影视屏幕上的字幕及其他公示性文字,应当使用规范汉字。

好吧,其實“禁粵”可以說是個僞命題:首先,這個“規定”是再全廣東有效的,針對的不僅僅是粵語,主要受影響的包括:粵語、潮汕話、客家話。如果“粵”代表的是整個廣東,那還勉強;其次,準確說是“限粵”,而不是“禁”。

爲什麼是廣東?

從之前的“推普廢粵”風波,到現在的“規定”,爲什麼是廣東?或者不如說“爲什麼是廣州?”這是讓人比較鬱悶的一點。我給想了幾個“藉口”:

1.廣東外來人口多。在廣州讀書的幾個月,確實能感到作爲“外地人”的壓力,你不會說粵語的話,出去買東西,有時總會碰到異樣的眼光,甚至是冷遇。這樣有時真的容易醞釀某些“矛盾”。大概有些人的思路就是,如果大家都說普通話了,矛盾也就能緩解點,再過段時間也就沒有以“語言”爲分割綫的“種族觀念”了。

2.廣東僅僅是個開始。隨着經濟的發展,全國各地的人口流動必將加大,各個地方其實都存在類似廣東的情況,但廣東,僅僅是作爲一個實驗田。沒錯,他們在下一盤很大的棋。

對於,第一點,我都不好意思說了。作爲“外地人”,我們是傳入別人的“領地”在先的,現在倒好,要強迫原住民說和你一樣的語言?這不是強盜嗎?既然選擇了廣東,爲了更好融入這裏,應該是我們學習本地語言對吧?這讓我想起了杯具的印第安人。

於第二點,確實,他們在下一盤很大的棋。這盤棋其實是有歷史淵源的,自胡亂華……原來的中原人就一直在南遷,中國又有北高南低的觀念,長期以來,南方一直被視爲蠻夷。南方的文化也長期處於被壓制的狀態。集權社會搞的就是“統一”搞的就是控制。

僅僅是限?

笑話。讓你控制了准入規則,又由你一家做決定,限與禁,僅僅只需你一字之言。純屬溫水煮青蛙。

陰謀論:挑撥

明顯,如果人民們太團結了,抱團了,有人就會輾轉難眠了吧?這樣一來好了,時不時挑撥你們一下下,讓人們產生“禁粵”是外地人導致的,這樣一來便有了各種“排外”,各種“種族”矛盾。

黃皮白心

過年回家之前,我去拜訪了在廣州的一位長輩,聽她說了一個“心酸”的事:她家是個“國際”家庭,平時兒女都分佈在幾個國家工作。其中她有一個女外孫,年齡和我相仿(也就小了我三天:) ,是在日本出生的,三歲以後又隨父母去了加拿大。加拿大分法語區和英語區,她的小學和中學分別是在“法語區”和“英語區”完成的,這樣下來,她就掌握了法語和英語。後來她自己在學校學習了西班牙語和日語(她認爲她在日本出生所以得學日語)。令人遺憾的是,她不會中文。或者應該說:“她不願意說中文”。當她姥姥跟我說這事時,她打了個比喻:香蕉,黃皮白心——中國人的外表,白種人的心,她的眼神裏充滿了悲傷和無奈,甚至她會激動得手在不自覺地抖。

很難想象吧,三代以後,面對一個流着一樣血液的孫女,不能用一樣的語言交流,她只能用手比比畫畫來溝通。還好的是,她老伴會點法語,有時還能簡單交流下。

外省仔

小表妹從小在深圳長大,不會說潮汕話,只說普通話,她爸爸說她成了"外省仔"。

購物

在廣州出去購物的次數越多,我就越不想出去。我能感覺到語言劃出的“種族”,我遭遇過這樣那樣的冷遇。好吧,我只是個誤竄者,我始終會有離開的一天。不帶任何抱怨,只有些許歉意:哦,抱歉,我打破了你們的安寧。

付:《广东省国家通用语言文字规定》全文:http://news.ifeng.com/mainland/detail_2011_12/18/11402971_0.shtml

浅谈Chrome/Chromium OS 编译

2011 年 9 月 6 日 分类 :爱Linux 0

最近心血来潮,折腾起ChromiumOS,其实玩的很没水平,因为现在ChromiumOS的编译机制已经很方便了,照着 《Chromium OS Developer Guide》做也基本都能把系统整出来。虽然如此,但网上中文的资料有点滞后,当下ChromiumOS的编译过程已经有所改变,所以还是把这个过程记录下。因为玩得没什么深度,所以本文内容也基本是对《Chromium OS Developer Guide》的低水平翻译加上我自己编译过程中的一些体会。

» 阅读全文

Ubuntu Unity Launcher API 之 Quicklist

2011 年 8 月 26 日 分类 :爱Linux| 爱折腾 2

好几天前了,整理了关于Desktop Entry的两篇文章《Desktop Entry——Linux下的“快捷方式”机制》《Desktop Entry的其他一些参数》,其实当时就是在了解Ubuntu Unity API。

Unity Launcher API主要提供了三个功能,先说说Quicklist这个很简单但很实用的功能。Quicklist提供了一种在Launcher上的快捷菜单,可以通过右键点击唤出,完成一些常用的操作,就像下面应用在Exaile一样:

 

» 阅读全文

Desktop Entry的其他一些参数

2011 年 8 月 21 日 分类 :爱Linux 0

几天前《Desktop Entry——Linux下的“快捷方式”机制》一文记录了Desktop Entry的一些基本用法,这几天在实践中又发现了另外一些“参数”,所以总结下:

OnlyShowIn

常用值:GNOME;KDE;Unity;

根据实践,我的理解是“只在XXX中显示”,比如OnlyShowIn的值为“GNOME”,那么你所写的desktop文件就只能在Gnome环境中才能充分实现所有功能。值得一提的是,假如你使用的桌面环境为Unity,并且你想实现Quicklists,那么你必须加上“Unity;”,Quicklists效果才会显现。

OnlyShowIn可以有多个值,例如“OnlyShowIn=GNOME;Unity;KDE”。与OnlyShowIn相对应的参数有NotShowIn,可以“屏蔽”值对应桌面环境的“效果”。

X-Ubuntu-Gettext-Domain

这个参数与翻译有关(哈哈,我最从Tualatrix得知的),虽然上一篇文章说过可以“[LOCALE]”的方法来本地化,可是如果一个一个翻译不是很坑爹么,这时X-Ubuntu-Gettext-Domain就有用了。让X-Ubuntu-Gettext-Domain的值为程序的名称,如:一个Exaile的desktop文件,让“X-Ubuntu-Gettext-Domain=exaile”,系统就会自动套用Exaile的有关翻译,当然有时是不完整的,这时再通过[LOCALE]的方法进行翻译。

Encoding

用于指定桌面环境编码,如“Encoding=UTF-8”。

X-GNOME-DocPath

用于指定程序的帮助文件路径。

X-GNOME-Bugzilla-Bugzilla

这个据说与debug有关,我没具体用过,详细情况未知。

MimeType

这个和格式支持有关,比如你为libreoffice writer写一个desktop文件,那么可以在这里写明libreofficewriter支持的格式,以后把对应格式的文档拖放倒这个图标上,就会用writer打开。

如libreoffice writer的MimeType部分的内容如下:

MimeType=application/vnd.oasis.opendocument.text;application/vnd.oasis.opendocument.text-template;application/vnd.oasis.opendocument.text-web;application/vnd.oasis.opendocument.text-master;application/vnd.sun.xml.writer;application/vnd.sun.xml.writer.template;application/vnd.sun.xml.writer.global;application/vnd.stardivision.writer;application/msword;application/vnd.ms-word;application/x-doc;application/rtf;text/rtf;application/vnd.wordperfect;application/wordperfect;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-word.document.macroenabled.12;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/vnd.ms-word.template.macroenabled.12;

 

先这些吧,以后还有再补上。

Desktop Entry——Linux下的“快捷方式”机制

2011 年 8 月 18 日 分类 :爱Linux 0

在Windows上,我们几乎都通过在快捷方式上点两下打开一个程序,而在Linux的大部分桌面环境上,也有这样一套机制,就是Desktop Entry。虽然这里将Desktop Entry和Windows上的快捷方式“相提并论”,但其实Desktop Entry要比后者强大得多。

*.desktop

Desktop Entry一般是一个以.desktop为扩展名的文件:

[Desktop Entry] //每个desktop文件都以这个标签开始,说明这是一个Desktop Entry文件
Version = 1.0 //标明Desktop Entry的版本(可选)
Name = Firefox //程序名称(必须),这里以创建一个Firefox的快捷方式为例
GenericName = Web Browser //程序通用名称(可选)
Comment = A Web Browser //程序描述(可选)
Exec = firefox %u //程序的启动命令(必选),可以带参数运行
                  //当下面的Type为Application,此项有效
Icon = firefox //设置快捷方式的图标(可选)
Terminal = false //是否在终端中运行(可选),当Type为Application,此项有效
Type = Application //desktop的类型(必选),常见值有“Application”和“Link”
Categories = GNOME;Application;Network; //注明在菜单栏中显示的类别(可选)

本地化

可以用“关键字段[本地语言]=值”的形式进行翻译:

[Desktop Entry]
Version = 1.0
Name = Firefox
Name[zh_CN]=火狐浏览器
GenericName = Web Browser
GenericName[zh_CN]=网络浏览器
Comment = A Web Browser
Comment[zh_CN]=一个网络浏览器
Exec = firefox %u
Icon = firefox)
Terminal = false
Type = Application
Categories = GNOME;Application;Network;

这就是对前面desktop文件进行简体中文翻译的内容。

实现Qt程序的窗口居中

2011 年 8 月 15 日 分类 :爱Qt 0

通过move实现,代码如下:

//……
ui->setupUi(this);
this->move((QApplication::desktop()->width()-this->width())/2,
           (QApplication::desktop()->height()-this->height())/2);
//……

整多行点就成:

//……
ui->setupUi(this);
int x = (QApplication::desktop()->width()-this->width())/2;
int y = (QApplication::desktop()->height()-this->height())/2;
this->move(x,y);
//……

Phonon在Linux下

2011 年 8 月 11 日 分类 :爱Qt 0

Qt虽然号称跨平台……但在Linux下也有种种坑爹。Phonon算是其中之一了。

出现:

WARNING: Phonon needs QCoreApplication::applicationName to be set to export audio output names through the DBUS interface

这样的提示,只需在代码添加:

app.setApplicationName("YOU POJECT NAME");

WordPress 正文首行缩进

2011 年 8 月 3 日 分类 :爱折腾 0

默认的wordpress对中文格式的文本支持不是很好,没有正文的首行缩进,要自己动下手:

在主题的”style.css”文件中加上:

p {
	margin: 0.7em 0;
	text-indent:2em;
	line-height:1.8em;
}

世界,你好!

2011 年 7 月 28 日 分类 :爱生活 1

一晃又是几年,想起当时高二时,注册了第一个域名,第一次架起博客,得意洋洋地命名自己的领地为“屋拖邦”,如今历历在目,如昨日之事。屋拖邦,曾经记录着点点喜怒哀乐和难表之情。就这样有惊无险地几年过了,哀怨离合几多,有些至今不敢重拾旧忆。嘻嘻哈哈几回,如今想起只剩对岁月的怨念。

再过一个多月,就要去外地读书了,应该算是人生又一个起点吧,我把旧的博客整理下,重新注册了个域名jactry.com。

还叫“屋拖邦”,不知明天又会遇到哪些人,哪些事。

以后不想那么多抱怨了,专注自己的事情,尽力而为即可吧。

要谢谢朋友黑孩儿(Heihaier),他多次提供空间和技术帮助,为人谦逊,技术很牛,但从不摆架子。

#!/usr/bin/python

print('Hello,world!')

 

#include <iostream>
int main()
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

 

#!/usr/bin/ruby
puts "Hello, world!"