<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Elias的邪异门 &#187; 混乱的IT世界</title>
	<atom:link href="http://blog.elias.cn/archives/category/itchaos/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.elias.cn</link>
	<description>倒苦水之家</description>
	<lastBuildDate>Tue, 25 Oct 2011 13:38:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Python 的 ctypes 模块实在太方便了！</title>
		<link>http://blog.elias.cn/archives/399</link>
		<comments>http://blog.elias.cn/archives/399#comments</comments>
		<pubDate>Wed, 24 Mar 2010 02:56:34 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[开放源码]]></category>

		<guid isPermaLink="false">http://blog.elias.cn/?p=399</guid>
		<description><![CDATA[最近用到中文分词库 Bamboo ，开始时有点头疼居然没有 Python 封装。。后来发现用 ctypes 模块来封装实在是太简单、太方便了～几乎被感动到内流满面～有了庞大 C 库和 ctypes 模块的 Python ，真是可比当年的数理化——走遍天下都不怕～下面给出通过 ctypes 模块调用 Bamboo 分词的示例代码： ?Download seg.py#!/usr/bin/env python # -*- coding: utf-8 -*- &#160; from ctypes import * &#160; # 通过 C 接口载入 libbamboo ，“.dylib”是 Mac OSX 下的动态库后缀， Linux 下应该是“libbamboo.so”： libbamboo = CDLL&#40;'libbamboo.dylib'&#41; # 调用 bamboo_init() 函数得到一个分词器实例： bamboo_init = libbamboo.bamboo_init bamboo_init.restype = c_void_p [...]]]></description>
			<content:encoded><![CDATA[<p>最近用到中文分词库 Bamboo ，开始时有点头疼居然没有 Python 封装。。后来发现用 ctypes 模块来封装实在是太简单、太方便了～几乎被感动到内流满面～有了庞大 C 库和 ctypes 模块的 Python ，真是可比当年的数理化——走遍天下都不怕～下面给出通过 ctypes 模块调用 Bamboo 分词的示例代码：</p>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://blog.elias.cn/wp-content/plugins/wp-codebox/wp-codebox.php?p=399&amp;download=seg.py">seg.py</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3992"><td class="code" id="p399code2"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> ctypes <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 通过 C 接口载入 libbamboo ，“.dylib”是 Mac OSX 下的动态库后缀， Linux 下应该是“libbamboo.so”：</span>
libbamboo = CDLL<span style="color: black;">&#40;</span><span style="color: #483d8b;">'libbamboo.dylib'</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;"># 调用 bamboo_init() 函数得到一个分词器实例：</span>
bamboo_init = libbamboo.<span style="color: black;">bamboo_init</span>
bamboo_init.<span style="color: black;">restype</span> = c_void_p
bamboo_handler = bamboo_init<span style="color: black;">&#40;</span>c_char_p<span style="color: black;">&#40;</span><span style="color: #483d8b;">'crf_seg'</span><span style="color: black;">&#41;</span>, <span style="color: #008000;">None</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;"># 如果返回的实例是 None （也即 C 中的 Null ），表示实例生成失败，那我们打印出错原因：</span>
<span style="color: #ff7700;font-weight:bold;">if</span> bamboo_handler <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #008000;">None</span>:
    bamboo_strerror = libbamboo.<span style="color: black;">bamboo_strerror</span>
    bamboo_strerror.<span style="color: black;">restype</span> = c_char_p
    <span style="color: #ff7700;font-weight:bold;">print</span> bamboo_strerror<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
    <span style="color: #808080; font-style: italic;"># 把文本传给分词器准备分词：</span>
    <span style="color: #808080; font-style: italic;"># 待分词的文本必须是 utf-8 编码的 bytes string ，所以我们要把 unicode string encode 一下：</span>
    libbamboo.<span style="color: black;">bamboo_setopt</span><span style="color: black;">&#40;</span>bamboo_handler, c_long<span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>, c_char_p<span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'我爱北京天安门'</span>.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf-8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #808080; font-style: italic;"># 真正开始分词：</span>
    bamboo_parse = libbamboo.<span style="color: black;">bamboo_parse</span>
    bamboo_parse.<span style="color: black;">restype</span> = c_char_p
    <span style="color: #808080; font-style: italic;"># 下一行得到分词结果（空格分隔），格式还是 utf-8 编码的 bytes string ，我们把它 decode 成 unicode ：</span>
    segged = bamboo_parse<span style="color: black;">&#40;</span>bamboo_handler<span style="color: black;">&#41;</span>.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf-8'</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #008000;">type</span><span style="color: black;">&#40;</span>segged<span style="color: black;">&#41;</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>segged<span style="color: black;">&#41;</span>, segged
<span style="color: #808080; font-style: italic;"># 调用 bamboo_clean() 函数释放分词器实例：</span>
libbamboo.<span style="color: black;">bamboo_clean</span><span style="color: black;">&#40;</span>bamboo_handler<span style="color: black;">&#41;</span></pre></td></tr></table></div>


<p>感谢国家，感谢什么什么TV，另外感谢沈仙人，当年正是他的博文<a href="http://eishn.blog.163.com/blog/static/6523182009810115428341/" title="用 Python 写自己的 C Module">用 Python 写自己的 C Module</a>让 ctypes 在我脑海里留下了不可磨灭的印象^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/399/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>北京Open Party小建议</title>
		<link>http://blog.elias.cn/archives/344</link>
		<comments>http://blog.elias.cn/archives/344#comments</comments>
		<pubDate>Fri, 08 Jan 2010 15:51:20 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>
		<category><![CDATA[OpenParty]]></category>

		<guid isPermaLink="false">http://blog.elias.cn/?p=344</guid>
		<description><![CDATA[北京Open Party是我很喜欢的一个非官方技术爱好者集会，不但主题有趣，氛围也很好。虽然不如新加坡、马拉西亚地区的BarCamp那样规模大，但质量绝对不输给他们。稍微夸张一点讲，Open Party是让我觉得北京的开源技术氛围称冠全国的一个重要原因。参加上次Open Party（会议代号：岩上）时，感到会议的时间安排仍嫌不够紧凑，就和组织者之一的田同学交流了一下，这里把他的回信贴出来，以便关心Open Party、愿意献计献策的高人们参与讨论。相信Open Party一定会越办越好的！ × × × × × × × × × × Hi 宋博士： 那天你说的是合理的。我们现在网上社区建立的很不到位。基本上不具备网上投票的功能，我们几个人已经商量在做了。我们会做一个简单的社区，用来管理在Open Party里面的人际关系。我们争取在下次活动前把这个应用搞定。 如果那个时候有了网络投票的基础设施，我们就会鼓励大家在线下提前投票。然后结合现场投票。 我们的活动最早是有一个集体Standup的，每个人只回答三个问题（‘名字’， ‘公司或社团’， ‘角色或者兴趣’）。这样一般15～20分钟就能搞定，而且促进大家相互了解。可是后来因为人越来越多就没法搞了。 现在的方式就是突出话题和拉票。因为现场的拉票可以锻炼演讲者在短时间内总结自己话题的能力。我们国内的开发者这方面的能力都有所欠缺。所以我们觉得这会是个有意义的环节。可是因为引导的问题，现在经常会时间失控，我们会着手解决。 方法可能包括： &#35; 你所说的增加一个计时的闹钟（或者锣），提醒演讲者注意时间，每个人压缩在1分钟至1分半种。 &#35; 修改投票的方式，这个我们没有想好: &#42;* 以前尝试过贴条和画正字，投票会很拥挤 &#42;* 还有一种尝试是最后一同投票，缺点是人家都忘记话题内容了 &#35; 减少前面不容易受控的环节： &#42;* 如新人介绍可以修改为只回答（‘名字’， ‘公司或社团’， ‘角色或者兴趣’）并多问几个人 &#42;* 美女时间剪短，因为不好控制 &#42;* lighttalk要限定将单一主题，不能一个人讲好几个问题。时间控制在每人2分钟以下 &#42;* 重量参与者时间也减去自我介绍，只需要介绍名字和背静就可以，主要是让大家脸熟就可以。时间控制在每人20-30秒 &#35; 落榜话题的问题，我们最好给他们提供一面墙，约定自己的话题时间和小房间，如果有兴趣的朋友可以在那里汇合。解决因此造成的现场的混乱，这次有很多朋友过来问我那些落榜话题在哪里。 &#35; 活动的记录。我想我们可以鼓励大家多带DV并录像，如果不能录像就录音。我下次争取带DV。因为留下视频让没有参加的朋友享受是很好的。而且对于演讲者来说这也是一个宝贵的资源，可以提高他/她的满足感，也能帮助他/她纠正演讲中的瑕疵。 &#35; 我们下次争取把结束时间提前到5:30，解决5:00以后参与人员散场太多的问题（这造成了对最后一轮的speaker不够尊重） 最后，希望宋博士能够在博客中把信中的反馈记录下来，然后ping back回open party的blog，方便更多的朋友能参与到这个讨论中。 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.beijing-open-party.org/">北京Open Party</a>是我很喜欢的一个非官方技术爱好者集会，不但主题有趣，氛围也很好。虽然不如新加坡、马拉西亚地区的BarCamp那样规模大，但质量绝对不输给他们。稍微夸张一点讲，Open Party是让我觉得北京的开源技术氛围称冠全国的一个重要原因。参加<a href="http://www.beijing-open-party.org/2009/12/beijing-open-party-2009-12-event-report/">上次Open Party（会议代号：岩上）</a>时，感到会议的时间安排仍嫌不够紧凑，就和组织者之一的田同学交流了一下，这里把他的回信贴出来，以便关心Open Party、愿意献计献策的高人们参与讨论。相信Open Party一定会越办越好的！</p>

<p>× × × × × × × × × ×</p>

<blockquote>
  <p>Hi 宋博士：</p>
  
  <p>那天你说的是合理的。我们现在网上社区建立的很不到位。基本上不具备网上投票的功能，我们几个人已经商量在做了。我们会做一个简单的社区，用来管理在Open Party里面的人际关系。我们争取在下次活动前把这个应用搞定。</p>
  
  <p>如果那个时候有了网络投票的基础设施，我们就会鼓励大家在线下提前投票。然后结合现场投票。</p>
  
  <p>我们的活动最早是有一个集体Standup的，每个人只回答三个问题（‘名字’， ‘公司或社团’， ‘角色或者兴趣’）。这样一般15～20分钟就能搞定，而且促进大家相互了解。可是后来因为人越来越多就没法搞了。</p>
  
  <p>现在的方式就是突出话题和拉票。因为现场的拉票可以锻炼演讲者在短时间内总结自己话题的能力。我们国内的开发者这方面的能力都有所欠缺。所以我们觉得这会是个有意义的环节。可是因为引导的问题，现在经常会时间失控，我们会着手解决。</p>
  
  <p>方法可能包括：<br />
  &#35; 你所说的增加一个计时的闹钟（或者锣），提醒演讲者注意时间，每个人压缩在1分钟至1分半种。<br />
  &#35; 修改投票的方式，这个我们没有想好:<br />
  &#42;* 以前尝试过贴条和画正字，投票会很拥挤<br />
  &#42;* 还有一种尝试是最后一同投票，缺点是人家都忘记话题内容了<br />
  &#35; 减少前面不容易受控的环节：<br />
  &#42;* 如新人介绍可以修改为只回答（‘名字’， ‘公司或社团’， ‘角色或者兴趣’）并多问几个人<br />
  &#42;* 美女时间剪短，因为不好控制<br />
  &#42;* lighttalk要限定将单一主题，不能一个人讲好几个问题。时间控制在每人2分钟以下<br />
  &#42;* 重量参与者时间也减去自我介绍，只需要介绍名字和背静就可以，主要是让大家脸熟就可以。时间控制在每人20-30秒<br />
  &#35; 落榜话题的问题，我们最好给他们提供一面墙，约定自己的话题时间和小房间，如果有兴趣的朋友可以在那里汇合。解决因此造成的现场的混乱，这次有很多朋友过来问我那些落榜话题在哪里。<br />
  &#35; 活动的记录。我想我们可以鼓励大家多带DV并录像，如果不能录像就录音。我下次争取带DV。因为留下视频让没有参加的朋友享受是很好的。而且对于演讲者来说这也是一个宝贵的资源，可以提高他/她的满足感，也能帮助他/她纠正演讲中的瑕疵。<br />
  &#35; 我们下次争取把结束时间提前到5:30，解决5:00以后参与人员散场太多的问题（这造成了对最后一轮的speaker不够尊重）</p>
  
  <p>最后，希望宋博士能够在博客中把信中的反馈记录下来，然后ping back回open party的blog，方便更多的朋友能参与到这个讨论中。</p>
  
  <p>2009/12/14 Elias Soong <a href="&#109;a&#105;l&#116;o&#x3a;e&#x6c;&#105;&#x61;&#115;&#x2e;&#115;&#x6f;&#111;&#x6e;&#103;&#x40;&#103;&#x6d;&#97;&#x69;&#108;&#x2e;&#99;&#x6f;&#109;">e&#x6c;&#105;&#x61;&#115;&#x2e;&#115;&#x6f;&#111;&#x6e;&#103;&#x40;&#103;&#x6d;&#97;&#x69;&#108;&#x2e;&#99;&#x6f;&#109;</a></p>
  
  <p>　　大田你好，</p>
  
  <p>　　周末这次OpenParty中间休息时候我有跟你提过说建议增加会前的主题网络投票， 这样根据投票结果提前确定部分主要Session的房间安排，以便一定程度上压缩整 个会议时间。</p>
  
  <p>　　其实我觉得网络投票等形式是否有所帮助可以慢慢探讨，这次的主要感觉是主题很 有意思，但主题正式开始前的几个阶段时间没有控制好。</p>
  
  <p>　　记忆里，这次确定各个房间安排开讲时大约已经2点40了，后面每个房间安排了3个主题，大约总共又需要3小时左右，最后全部完成就接近6点了，而实际上一般5点左右就有人开始退场，这就不是很理想了。我觉得主持人可以有意识地控制场面，将主题的开始时间控制在2点左右，这样大致可以在5点左右完成全部活动，会是比较理想的。当然，不能说这是由于前几个阶段过于拖沓，应该说和这次活动开始的时间就有所拖延也有关系。活动最好还是按照预定通知，在一点钟正式开始，虽然每次一点以后还总是有陆续迟到的，不过毕竟他们不至于错过正式主题，应该影响 不大。</p>
  
  <p>　　仅此以供参考，致礼～</p>
  
  <p>　　宋</p>
  
  <p>　　&#8211;<br />
  　　&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
  　　Personal Site: http://www.elias.cn<br />
  　　&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/344/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>福珑2F的高频噪音问题探讨</title>
		<link>http://blog.elias.cn/archives/311</link>
		<comments>http://blog.elias.cn/archives/311#comments</comments>
		<pubDate>Tue, 06 Jan 2009 12:39:58 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>
		<category><![CDATA[龙芯]]></category>

		<guid isPermaLink="false">http://blog.elias.cn/?p=311</guid>
		<description><![CDATA[看网上的一般观点都认为福珑还比较安静，不过我得说这是跟普通台式机比。我希望其工作噪声可以不影响睡眠，因此对我到手的这一台仍然不是十分满意。最初我以为是风扇的问题，是因为风扇本身的工作噪声太大造成了整体的噪音。于是我采取了给原配风扇点润滑油的办法（原装风扇是油封轴承，到我手上的时候有点儿缺油），总体噪声有所降低，但是噪声中的高频部分反而由此显得更加突出。（哪来的高频噪声？这是个问题。）进一步考虑给风扇降低转速来降低噪音，不过不会DIY，只能采取换风扇的做法。偏偏这么小的风扇不好找（3厘米见方），我找来找去只找到一个叶片更小转速更高的。新找到的这一只风扇虽然转速更高，但在未固定到主板上之前其实噪音极小，只有安装上去之后才出现比较刺耳的高频震荡噪声。这才终于弄清了噪声所在：当风扇工作产生震动时，福珑主板由于被螺丝与风扇固定在一起，而被带动形成共振，产生了类似扩音器的效应，扩大了噪声。偏偏福珑的外壳与主板是采用卡槽式比较松散的组装方式，于是无法帮助主板吸收风扇的震动。试验了用塑料泡沫薄片作为螺丝口处缓冲垫的做法，有所改善，但没有彻底消灭问题。 其实把风扇去掉，让福珑工作在无风扇的状况下，拷机也没有出现死机的现象。只是不知道如果在夏天进行无风扇工作，是否会超出龙芯的正常工作温度范围，缩短芯片寿命。总之这个问题还没能解决，需要进一步探讨。 PS：说点无关的，我觉得腾讯现在应该收购云端平台（成都朗弘科技（杨小锋）），然后嵌入到自己的客户端中。这样凭借QQ的装机量，腾讯将有可能成为新一代的操作系统霸主。]]></description>
			<content:encoded><![CDATA[<p>看网上的一般观点都认为福珑还比较安静，不过我得说这是跟普通台式机比。我希望其工作噪声可以不影响睡眠，因此对我到手的这一台仍然不是十分满意。最初我以为是风扇的问题，是因为风扇本身的工作噪声太大造成了整体的噪音。于是我采取了给原配风扇点润滑油的办法（原装风扇是油封轴承，到我手上的时候有点儿缺油），总体噪声有所降低，但是噪声中的高频部分反而由此显得更加突出。（哪来的高频噪声？这是个问题。）进一步考虑给风扇降低转速来降低噪音，不过不会DIY，只能采取换风扇的做法。偏偏这么小的风扇不好找（3厘米见方），我找来找去只找到一个叶片更小转速更高的。新找到的这一只风扇虽然转速更高，但在未固定到主板上之前其实噪音极小，只有安装上去之后才出现比较刺耳的高频震荡噪声。这才终于弄清了噪声所在：当风扇工作产生震动时，福珑主板由于被螺丝与风扇固定在一起，而被带动形成共振，产生了类似扩音器的效应，扩大了噪声。偏偏福珑的外壳与主板是采用卡槽式比较松散的组装方式，于是无法帮助主板吸收风扇的震动。试验了用塑料泡沫薄片作为螺丝口处缓冲垫的做法，有所改善，但没有彻底消灭问题。</p>

<p>其实把风扇去掉，让福珑工作在无风扇的状况下，拷机也没有出现死机的现象。只是不知道如果在夏天进行无风扇工作，是否会超出龙芯的正常工作温度范围，缩短芯片寿命。总之这个问题还没能解决，需要进一步探讨。</p>

<p>PS：说点无关的，我觉得腾讯现在应该收购云端平台（成都朗弘科技（杨小锋）），然后嵌入到自己的客户端中。这样凭借QQ的装机量，腾讯将有可能成为新一代的操作系统霸主。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/311/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>选择恐惧症是这样产生的～</title>
		<link>http://blog.elias.cn/archives/302</link>
		<comments>http://blog.elias.cn/archives/302#comments</comments>
		<pubDate>Mon, 08 Dec 2008 16:56:14 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>
		<category><![CDATA[开放源码]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://blog.elias.cn/?p=302</guid>
		<description><![CDATA[今天算是被源代码版本控制工具雷到了。话说我刚读研那会儿，比较流行的只有CVS一个，于是我踏踏实实地给实验室架了CVS，感觉比较晕，只学会了最简单的用法。后来Subversion出来了，感觉比CVS清晰易用一些，踏踏实实劝说实验室全面转向了Subversion，并且后来还购买了一些相关的技术支持服务。再后来分布式版本控制工具出现了，我考察了一下实验室的具体情况，认为短期内没有必要替换Subversion，而对于业余自用来说，Bazaar-ng是最合适的，因为发布时往静态网站空间上一扔就行了，成本比较低，所以试着在实验室学生中推广Bazaar，但是没有人理我。。再后来想为自己的项目做一些准备，考虑方便合作者使用，因此最好与常用IDE整合插件的成熟度能好一些，于是狠狠心切换成了Mercurial-hg。近期有个项目需要和其他人合作，郁闷地发现对方已经使用了git，这下主要流行的分布式版本控制工具算是都玩过一遍了。这事闹的，怪不得人会变得什么都懂点、什么都不精，这下算是有点明白了，这事儿多少还是较真儿闹的。 话说回来，事情总是发展变化的，我开始用Mercurial的时候，它也开始支持向静态网站空间的发布方式了，而在选用Bazaar的时候还是不灵的；我开始用git的时候，已经有很好的Windows下的二进制移植了（非Cygwin方式），客户端的图形化界面辅助也大大进步，只是与重量级IDE的整合刚刚开始而已，这在以前都是我担心给团队推广造成困难的地方。所以，选择是很难一劳永逸的，我们得经常去重新了解形势发展，还得经常反思到底自己要的是什么（这一点不仅仅适用于IT）。 比较麻烦的是，人的精力是有限的，忘性也总是有的，所以做选择通常还都是一件费劲的事儿。话说国内Python社区里面的ZQ同学首次注意到我的个人网站的时候，大大感叹了一番用Wiki管理个人知识体系要比博客或是书签等方式合理的多，而我当时反而觉得用博客来记录其实更有助于被搜索引擎注意到，因而也更利于积累人气和名声。隔了一阵给ZQ发邮件和他提起一个开源软件的时候，ZQ想起了我这个用Wiki做个人知识管理的家伙，则劝我把内容转移到其他Wiki上更靠谱，毕竟靠个人力量做Wiki是没什么前途的。前者何赞、后者何劝，把我干这儿，都没词回复了。比较明显地，ZQ同学是忘记了咱整这玩意只是个人知识管理，方便自己查询之用，既不是想自建社区，也不是服务于某个项目。我要把我主页上一些零七八碎的非技术内容整到别人Wiki上，人家不因为我乱放垃圾把我屏蔽了那我真得烧个高香^_^忘了就忘了吧，本来就P大点儿事罢了～]]></description>
			<content:encoded><![CDATA[<p>今天算是被源代码版本控制工具雷到了。话说我刚读研那会儿，比较流行的只有CVS一个，于是我踏踏实实地给实验室架了CVS，感觉比较晕，只学会了最简单的用法。后来Subversion出来了，感觉比CVS清晰易用一些，踏踏实实劝说实验室全面转向了Subversion，并且后来还购买了一些相关的技术支持服务。再后来分布式版本控制工具出现了，我考察了一下实验室的具体情况，认为短期内没有必要替换Subversion，而对于业余自用来说，Bazaar-ng是最合适的，因为发布时往静态网站空间上一扔就行了，成本比较低，所以试着在实验室学生中推广Bazaar，但是没有人理我。。再后来想为自己的项目做一些准备，考虑方便合作者使用，因此最好与常用IDE整合插件的成熟度能好一些，于是狠狠心切换成了Mercurial-hg。近期有个项目需要和其他人合作，郁闷地发现对方已经使用了git，这下主要流行的分布式版本控制工具算是都玩过一遍了。这事闹的，怪不得人会变得什么都懂点、什么都不精，这下算是有点明白了，这事儿多少还是较真儿闹的。</p>

<p>话说回来，事情总是发展变化的，我开始用Mercurial的时候，它也开始支持向静态网站空间的发布方式了，而在选用Bazaar的时候还是不灵的；我开始用git的时候，已经有很好的Windows下的二进制移植了（非Cygwin方式），客户端的图形化界面辅助也大大进步，只是与重量级IDE的整合刚刚开始而已，这在以前都是我担心给团队推广造成困难的地方。所以，选择是很难一劳永逸的，我们得经常去重新了解形势发展，还得经常反思到底自己要的是什么（这一点不仅仅适用于IT）。</p>

<p>比较麻烦的是，人的精力是有限的，忘性也总是有的，所以做选择通常还都是一件费劲的事儿。话说国内Python社区里面的ZQ同学首次注意到我的个人网站的时候，大大感叹了一番用Wiki管理个人知识体系要比博客或是书签等方式合理的多，而我当时反而觉得用博客来记录其实更有助于被搜索引擎注意到，因而也更利于积累人气和名声。隔了一阵给ZQ发邮件和他提起一个开源软件的时候，ZQ想起了我这个用Wiki做个人知识管理的家伙，则劝我把内容转移到其他Wiki上更靠谱，毕竟靠个人力量做Wiki是没什么前途的。前者何赞、后者何劝，把我干这儿，都没词回复了。比较明显地，ZQ同学是忘记了咱整这玩意只是个人知识管理，方便自己查询之用，既不是想自建社区，也不是服务于某个项目。我要把我主页上一些零七八碎的非技术内容整到别人Wiki上，人家不因为我乱放垃圾把我屏蔽了那我真得烧个高香^_^忘了就忘了吧，本来就P大点儿事罢了～</p>

<p><a href="http://blog.elias.cn/wp-content/uploads/2008/12/dvcs_example.png"><img src="http://blog.elias.cn/wp-content/uploads/2008/12/dvcs_example.png" alt="" title="dvcs_example" width="500" height="389" class="alignnone size-full wp-image-305" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/302/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>软件“乌托邦”</title>
		<link>http://blog.elias.cn/archives/291</link>
		<comments>http://blog.elias.cn/archives/291#comments</comments>
		<pubDate>Fri, 31 Oct 2008 17:40:27 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>
		<category><![CDATA[开放源码]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://blog.elias.cn/?p=291</guid>
		<description><![CDATA[近来急剧觉得软件实在是相当复杂的一件事，想做好不但要花费大量精力，而且最好还要兼具技术和管理上的若干技巧。工作对象本身的复杂特性，也就造就了与此相关的工作环境的复杂——我指IT业界是相当复杂和混乱的。前几天在社区里看到FreeBSD界的名人——delphij同学的一个简短帖子，大意是说（也许我记错了，并且我的理解并不代表delphij本人的言论）：有些公司用开放源码授权发布软件的一个免费版本，让大家都用，然后却使用其他授权协议发布企业版等方法，将商业用户需要的技术支持绑定到自己公司，于是该领域的产业环境变恶劣了，很多公司会被挤垮，于是在这个领域开展工作的总体力量衰减了，这种方式对产业环境带来的伤害恐怕不亚于微软采取的“盗版占领市场”策略。我觉得这个言论有其合理性，但是当时看完没有什么反应，因为我不知道delphij是以哪个公司作为例子来说的。 我自己所观察到的现实是，很多自称是开放源代码软件的产品其授权协议都相当复杂，不但GPL之类的协议本身即具有“传染性”，而且很多公司还会对产品使用双许可证甚至多许可证（比如MySQL），也有一些公司还会对原始协议添加一些冲突或不冲突的附加条款，比如Alfresco的企业版虽然自称是GPL，但是对二次发布有一些既复杂而小心眼的限制，最终在事实上变成了没法二次发布的GPL，也就是假GPL了。于是当今业界，严肃的用户在使用新的软件模块时，总是小心翼翼地仔细研究附带的许可证条款，而与软件相关的各种侵权诉讼或者叫骂，其结果基本上都成为一笔笔糊涂账。这显然不是大多数人理想中的产业环境，问题出在哪儿呢？我想想觉得还是软件产业比较年轻、开放源代码授权比较年轻，以至于很多公司还没有弄清楚该如何合情合理合法地赚到切切实实的真金白银，慌乱之下，难免做出胡乱制定软件授权等乱七八糟的事情。 我承认，站在用户角度上，能够“不用花钱”就获得完成某件事的能力（比如修改出一张有意思的照片），的确觉得很爽——简直就是天上掉馅饼嘛～可是反过来想，天上不会真的掉馅饼，馅饼仍然总是由某位大师傅做出来的，即使不提大师傅本人应该取得适当的劳动所得，大师傅也总得挣点钱养家糊口吧～免费的馅饼雨难免会有一天变得无以为继。在早期对《大教堂与集市》的分析中，主流观点认为这是“礼物经济”的一个结果，人们制作优秀的开源软件主要目的是获取名声。类似这样的人是有，但是当开源软件影响到整个业界的时候，只让为了名声的人们来干活是不够的，总会有一些以挣钱吃饭甚至发财的目的而进来的人，于是公司或者个人，总要想方设法发掘有效的盈利模式。这样的盈利模式已经有了一些，比如与硬件绑定、提供支持服务、卖广告等等，但具体到一个软件产品上，这些既有模式是否真的有效实在难说得很。 本人最近正打算就着开源软件来做一些工作，因而可以预见我必然会被迫对开源盈利模式方面做一些探索。在遇到困难的时候，人们总是梦想有一个乌托邦（就像《奋斗》里面出现的那样一样）。在软件的乌托邦里，人们可以用合理的代价得到解决目标问题的恰当软件工具。是的，我在这个乌托邦里没有说免费，因为事情总会是有代价的，如果没有再收钱，那肯定是这部分内容的价钱已经体现在其他地方，或者有其他人替扛了这部分代价，亦或许是不知哪位前辈在人类还是猴子的时候为这些事儿奠定了点儿基础^_^在软件的乌托邦里，历史上曾经出现过的软件都是开放源码的，人们即使不能找到现成工具处理自己的问题，至少在大多数时间拥有一些像是那么回事儿的组件。于是解决新问题的门槛儿降低了，这位老兄登高一呼，就有更大的可能出现无数健儿，愿意提供一个合理报价来解决这个问题（在共产主义没实现、货币没有消失之前，恐怕还是会有报价吧）。需要解决问题的仁兄则可以参照报价人在开源社区的名声来选择一个成功率较高的人或者团队来做。最后搞定的新玩意儿也加入开放源码库，造福后人。其实这也不算是乌托邦梦想，即使在现在的环境下，这么做也是现实的。不必被商业公司的垄断报价吓倒，但也不要全盯着免费的馅饼，人们需要弄清楚自己为了面对的问题值得怎样的代价。2008年的人们应该明白，开源不等于免费。当人们愿意向开源界的自由游侠们提供一些资源时，我得说这样的代价会比人们的预想低廉得多，产生的成果也要靠谱得多。不信？这不能靠空言辩论了，去试试看，然后带着事实回来。 PS：忽然很想要loft，可是比没有钱更严重的问题是，发现北京绝大多数声称是loft的房产其实都是伪loft……]]></description>
			<content:encoded><![CDATA[<p>近来急剧觉得软件实在是相当复杂的一件事，想做好不但要花费大量精力，而且最好还要兼具技术和管理上的若干技巧。工作对象本身的复杂特性，也就造就了与此相关的工作环境的复杂——我指IT业界是相当复杂和混乱的。前几天在社区里看到FreeBSD界的名人——delphij同学的一个简短帖子，大意是说（也许我记错了，并且我的理解并不代表delphij本人的言论）：有些公司用开放源码授权发布软件的一个免费版本，让大家都用，然后却使用其他授权协议发布企业版等方法，将商业用户需要的技术支持绑定到自己公司，于是该领域的产业环境变恶劣了，很多公司会被挤垮，于是在这个领域开展工作的总体力量衰减了，这种方式对产业环境带来的伤害恐怕不亚于微软采取的“盗版占领市场”策略。我觉得这个言论有其合理性，但是当时看完没有什么反应，因为我不知道delphij是以哪个公司作为例子来说的。</p>

<p>我自己所观察到的现实是，很多自称是开放源代码软件的产品其授权协议都相当复杂，不但GPL之类的协议本身即具有“传染性”，而且很多公司还会对产品使用双许可证甚至多许可证（比如MySQL），也有一些公司还会对原始协议添加一些冲突或不冲突的附加条款，比如Alfresco的企业版虽然自称是GPL，但是对二次发布有一些既复杂而小心眼的限制，最终在事实上变成了没法二次发布的GPL，也就是假GPL了。于是当今业界，严肃的用户在使用新的软件模块时，总是小心翼翼地仔细研究附带的许可证条款，而与软件相关的各种侵权诉讼或者叫骂，其结果基本上都成为一笔笔糊涂账。这显然不是大多数人理想中的产业环境，问题出在哪儿呢？我想想觉得还是软件产业比较年轻、开放源代码授权比较年轻，以至于很多公司还没有弄清楚该如何合情合理合法地赚到切切实实的真金白银，慌乱之下，难免做出胡乱制定软件授权等乱七八糟的事情。</p>

<p>我承认，站在用户角度上，能够“不用花钱”就获得完成某件事的能力（比如修改出一张有意思的照片），的确觉得很爽——简直就是天上掉馅饼嘛～可是反过来想，天上不会真的掉馅饼，馅饼仍然总是由某位大师傅做出来的，即使不提大师傅本人应该取得适当的劳动所得，大师傅也总得挣点钱养家糊口吧～免费的馅饼雨难免会有一天变得无以为继。在早期对《大教堂与集市》的分析中，主流观点认为这是“礼物经济”的一个结果，人们制作优秀的开源软件主要目的是获取名声。类似这样的人是有，但是当开源软件影响到整个业界的时候，只让为了名声的人们来干活是不够的，总会有一些以挣钱吃饭甚至发财的目的而进来的人，于是公司或者个人，总要想方设法发掘有效的盈利模式。这样的盈利模式已经有了一些，比如与硬件绑定、提供支持服务、卖广告等等，但具体到一个软件产品上，这些既有模式是否真的有效实在难说得很。</p>

<p>本人最近正打算就着开源软件来做一些工作，因而可以预见我必然会被迫对开源盈利模式方面做一些探索。在遇到困难的时候，人们总是梦想有一个乌托邦（就像《奋斗》里面出现的那样一样）。在软件的乌托邦里，人们可以用合理的代价得到解决目标问题的恰当软件工具。是的，我在这个乌托邦里没有说免费，因为事情总会是有代价的，如果没有再收钱，那肯定是这部分内容的价钱已经体现在其他地方，或者有其他人替扛了这部分代价，亦或许是不知哪位前辈在人类还是猴子的时候为这些事儿奠定了点儿基础^_^在软件的乌托邦里，历史上曾经出现过的软件都是开放源码的，人们即使不能找到现成工具处理自己的问题，至少在大多数时间拥有一些像是那么回事儿的组件。于是解决新问题的门槛儿降低了，这位老兄登高一呼，就有更大的可能出现无数健儿，愿意提供一个合理报价来解决这个问题（在共产主义没实现、货币没有消失之前，恐怕还是会有报价吧）。需要解决问题的仁兄则可以参照报价人在开源社区的名声来选择一个成功率较高的人或者团队来做。最后搞定的新玩意儿也加入开放源码库，造福后人。其实这也不算是乌托邦梦想，即使在现在的环境下，这么做也是现实的。不必被商业公司的垄断报价吓倒，但也不要全盯着免费的馅饼，人们需要弄清楚自己为了面对的问题值得怎样的代价。2008年的人们应该明白，开源不等于免费。当人们愿意向开源界的自由游侠们提供一些资源时，我得说这样的代价会比人们的预想低廉得多，产生的成果也要靠谱得多。不信？这不能靠空言辩论了，去试试看，然后带着事实回来。</p>

<p>PS：忽然很想要loft，可是比没有钱更严重的问题是，发现北京绝大多数声称是loft的房产其实都是伪loft……</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/291/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>神奇的Stackless Python</title>
		<link>http://blog.elias.cn/archives/280</link>
		<comments>http://blog.elias.cn/archives/280#comments</comments>
		<pubDate>Tue, 21 Oct 2008 17:09:35 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[并发]]></category>
		<category><![CDATA[性能]]></category>

		<guid isPermaLink="false">http://blog.elias.cn/?p=280</guid>
		<description><![CDATA[前两天看到沈仙人的Eurasia3，非常惊奇这个Web服务器居然能够提供与直接用C语言实现相近甚至更优的性能，恰好后来又受到一篇老外比较Erlang和Stackless Python并发性能的文章的启发，就进一步用那篇文章里面提到的方法比较了Stackless Python与Python标准线程实现方案之间的并发性能差距，详细的实验过程记录在Wiki上的Python几种并发实现方案的性能比较页面。 实验大致证明在纯并发上的性能，Stackless Python提供的机制要比标准线程实现快上几十倍，并且并发控制模型也相当直观易用。或许这个结果从某个方面向我们解释了Eurasia3能够提供强悍并发性能的原因。]]></description>
			<content:encoded><![CDATA[<p>前两天看到沈仙人的<a href="http://code.google.com/p/eurasia/" title="Eurasia3">Eurasia3</a>，非常惊奇这个Web服务器居然能够提供与直接用C语言实现相近甚至更优的性能，恰好后来又受到一篇<a href="http://muharem.wordpress.com/2007/07/31/erlang-vs-stackless-python-a-first-benchmark/">老外比较Erlang和Stackless Python并发性能的文章</a>的启发，就进一步用那篇文章里面提到的方法比较了Stackless Python与Python标准线程实现方案之间的并发性能差距，详细的实验过程记录在Wiki上的<a href="http://www.elias.cn/Develop/PyConcurrency">Python几种并发实现方案的性能比较</a>页面。</p>

<p>实验大致证明在纯并发上的性能，Stackless Python提供的机制要比标准线程实现快上几十倍，并且并发控制模型也相当直观易用。或许这个结果从某个方面向我们解释了<a href="http://code.google.com/p/eurasia/" title="Eurasia3">Eurasia3</a>能够提供强悍并发性能的原因。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/280/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>龙芯盒子入手</title>
		<link>http://blog.elias.cn/archives/180</link>
		<comments>http://blog.elias.cn/archives/180#comments</comments>
		<pubDate>Sun, 13 Jul 2008 07:44:46 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>
		<category><![CDATA[龙芯]]></category>

		<guid isPermaLink="false">http://localhost/blog/?p=180</guid>
		<description><![CDATA[月初刚听说福珑正式出货时，还未来得及付款就听说断货，并发出声明说大约一个月之后会有第二批货。本来挺不满意，向客服抱怨了一下预订过了却没能拿到第一批，打算慢慢等了，结果上周四忽然得到电话通知说可以继续购买了。周五一早完成付款，周日晚上就通过快递拿到了。型号是6003。 感觉做工虽然谈不上是特别精美，但肯定算是扎实，而且运行起来是一点点声音都没有，非常满意！（奇怪的是运行了一段时间之后到半夜风扇的声音又大起来了……）我终于拿到了我梦寐以求的家庭服务器。当时手头没有USB键盘，只接了网络、显示器和鼠标，就可以正常工作，并默认就开启了SSH服务器，于是妥了^_^ 官方说明声称CPU是800-900MHz左右，cat /proc/cpuinfo显示的BogoMIPs是532.48，按照龙芯2的BogoMIPs数值是主频的2/3的比例来计算，主频应该是798.72，也就是800MHz的样子，应该算是不错啦。 要说不大满意的地方，也有一点，硬盘的默认分区方式比较奇怪，80G硬盘分成4个区，30、30、Swap、16，并且第二个30G和16G的分区默认没有被挂载。。其实也还好，系统默认就配置好了中文，并且提供了包括永中Office在内的很多常用软件，算是挺好了。归纳起来主要的问题还是比较缺乏文档，或许大家可以联合起来在这一点上为龙芯做点贡献。 无论如何，总算用上传说中的我们国家自己的CPU了，心情还是蛮好的～ PS：顺带说点题外话，软件这东西想弄到完美还真是不容易。大家一直说Windows下的Office是杀手应用，以前不信，现在试用了一下Mac下的微软Office，发现比Windows版差好多啊，从速度、稳定性、细节功能都有差距，最要命的是所见即所得的排版细节和Windows完全不同。换句话说就是用Mac版的Office打开Windows下创建的文档，版式仍然会稍稍走形。因而在跨平台这一点上，得说堂堂微软比不过OpenOffice.org以及永中Office了。。最终结果是对使用微软Office的愿望大大降低，毕竟用了以后被捆死在这个平台上，心里总觉得不怎么踏实呢。 PPS：后来发现龙芯盒子噪音忽然大起来主要是风扇本身的问题：把风扇拆下来，揭开背面胶纸，点上一两滴缝纫机油，重新装回，噪音就好多了。也试过完全拆掉风扇来运行，在11月初室内大致会造成散热片达到有些烫手的程度。更彻底的办法应该是把这个2.5厘米直径、5V的小风扇换掉……但是还没找到合适的。最后，龙芯盒子的一部分噪音来自于其外壳的共振，找个重东西把它压住不跟着震就好多了……]]></description>
			<content:encoded><![CDATA[<p>月初刚听说福珑正式出货时，还未来得及付款就听说断货，并发出声明说大约一个月之后会有第二批货。本来挺不满意，向客服抱怨了一下预订过了却没能拿到第一批，打算慢慢等了，结果上周四忽然得到电话通知说可以继续购买了。周五一早完成付款，周日晚上就通过快递拿到了。型号是6003。</p>

<p>感觉做工虽然谈不上是特别精美，但肯定算是扎实，而且运行起来是一点点声音都没有，非常满意！（奇怪的是运行了一段时间之后到半夜风扇的声音又大起来了……）我终于拿到了我梦寐以求的家庭服务器。当时手头没有USB键盘，只接了网络、显示器和鼠标，就可以正常工作，并默认就开启了SSH服务器，于是妥了^_^</p>

<p>官方说明声称CPU是800-900MHz左右，cat /proc/cpuinfo显示的BogoMIPs是532.48，按照龙芯2的BogoMIPs数值是主频的2/3的比例来计算，主频应该是798.72，也就是800MHz的样子，应该算是不错啦。</p>

<p>要说不大满意的地方，也有一点，硬盘的默认分区方式比较奇怪，80G硬盘分成4个区，30、30、Swap、16，并且第二个30G和16G的分区默认没有被挂载。。其实也还好，系统默认就配置好了中文，并且提供了包括永中Office在内的很多常用软件，算是挺好了。归纳起来主要的问题还是比较缺乏文档，或许大家可以联合起来在这一点上为龙芯做点贡献。</p>

<p>无论如何，总算用上传说中的我们国家自己的CPU了，心情还是蛮好的～</p>

<p>PS：顺带说点题外话，软件这东西想弄到完美还真是不容易。大家一直说Windows下的Office是杀手应用，以前不信，现在试用了一下Mac下的微软Office，发现比Windows版差好多啊，从速度、稳定性、细节功能都有差距，最要命的是所见即所得的排版细节和Windows完全不同。换句话说就是用Mac版的Office打开Windows下创建的文档，版式仍然会稍稍走形。因而在跨平台这一点上，得说堂堂微软比不过OpenOffice.org以及永中Office了。。最终结果是对使用微软Office的愿望大大降低，毕竟用了以后被捆死在这个平台上，心里总觉得不怎么踏实呢。</p>

<p>PPS：后来发现龙芯盒子噪音忽然大起来主要是风扇本身的问题：把风扇拆下来，揭开背面胶纸，点上一两滴缝纫机油，重新装回，噪音就好多了。也试过完全拆掉风扇来运行，在11月初室内大致会造成散热片达到有些烫手的程度。更彻底的办法应该是把这个2.5厘米直径、5V的小风扇换掉……但是还没找到合适的。最后，龙芯盒子的一部分噪音来自于其外壳的共振，找个重东西把它压住不跟着震就好多了……</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/180/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>手机的第二春</title>
		<link>http://blog.elias.cn/archives/169</link>
		<comments>http://blog.elias.cn/archives/169#comments</comments>
		<pubDate>Sun, 17 Feb 2008 19:03:01 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>

		<guid isPermaLink="false">http://localhost/blog/?p=169</guid>
		<description><![CDATA[我这个人，通常收到的短信是从来不删的，07年后半年在手机里面攒了2500多条短信，占用机身内存一兆多。而无论将短信存在机身或是存储卡上，虽然存储容量对Symbian智能手机来说不会是什么大问题，但是短信操作的反应速度是大大大大地下降以至于不能忍受的程度。当然这也不奇怪，传说Symbian系统是使用的定制过适合小内存环境应用的SQLite作为数据存储引擎，数据一多，操作效率当然会下降。 昨天实在不能忍受这速度了，于是备份导出了全部短信，然后把短信收件箱清空了。结果不但短信操作如飞，机器上启动其他程序的操作也快了无数，几乎接近于S40系统的反应速度了。对这种影响的原理实在是有点百思不解，按说与短信无关的操作，其运行速度应该与短信存储占用的资源没什么关系才对。如果硬解释的话，也许是Symbian对短信收件箱的数据库索引进行了一定缓存，所以开机即会由于短信的数量而占用一些机身内存，删除短信后，机身内存被释放而提高了操作速度。现在开机好像空闲内存有7.8兆了，而短信满的时候大致是6.8兆左右，不过记不清了。 总之，如果感到Symbian的操作速度慢到不能忍受时，把短信之类的数据删一删或许能有相当大的改进，仅此而已～]]></description>
			<content:encoded><![CDATA[<p>我这个人，通常收到的短信是从来不删的，07年后半年在手机里面攒了2500多条短信，占用机身内存一兆多。而无论将短信存在机身或是存储卡上，虽然存储容量对Symbian智能手机来说不会是什么大问题，但是短信操作的反应速度是大大大大地下降以至于不能忍受的程度。当然这也不奇怪，传说Symbian系统是使用的定制过适合小内存环境应用的SQLite作为数据存储引擎，数据一多，操作效率当然会下降。</p>

<p>昨天实在不能忍受这速度了，于是备份导出了全部短信，然后把短信收件箱清空了。结果不但短信操作如飞，机器上启动其他程序的操作也快了无数，几乎接近于S40系统的反应速度了。对这种影响的原理实在是有点百思不解，按说与短信无关的操作，其运行速度应该与短信存储占用的资源没什么关系才对。如果硬解释的话，也许是Symbian对短信收件箱的数据库索引进行了一定缓存，所以开机即会由于短信的数量而占用一些机身内存，删除短信后，机身内存被释放而提高了操作速度。现在开机好像空闲内存有7.8兆了，而短信满的时候大致是6.8兆左右，不过记不清了。</p>

<p>总之，如果感到Symbian的操作速度慢到不能忍受时，把短信之类的数据删一删或许能有相当大的改进，仅此而已～</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/169/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>收藏MSN的个性签名吧～</title>
		<link>http://blog.elias.cn/archives/168</link>
		<comments>http://blog.elias.cn/archives/168#comments</comments>
		<pubDate>Fri, 08 Feb 2008 23:21:08 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>

		<guid isPermaLink="false">http://localhost/blog/?p=168</guid>
		<description><![CDATA[我不得不承认，很多朋友的MSN个性签名很有意思～每次被改掉的时候我都觉得挺可惜的。就像当年BBS的签名档一样，通常我会将我曾经用过的签名档找个地方存下来。当年Twitter火起来的时候，感觉像是一个挺好的叽叽歪歪的地儿，于是很自然想要把MSN个性签名和Twitter结合起来。倒是有一个程序能够自动从Twitter上读取最新消息作为MSN个性签名使用，但是该程序需要.net framework 2.0版本的支持，多装个东西我是很不乐意的，就这样拖了很久。 这两天想想可以反其道而行之，完全可以把个性签名更新到Twitter上，而不是从Twitter读取。因此春节期间花了点时间改了点别人的代码，完成一个Messenger Plus!的插件，能够完成这个功能。详细见Twitter Psm Pusher 唉，搞这个插件写中英文的使用说明大约花了有一个多小时，比改代码的时间还多上好几倍……这年头的事儿啊…… 十分诡异的是，貌似我的Twitter页面上的消息只能加不能删？]]></description>
			<content:encoded><![CDATA[<p>我不得不承认，很多朋友的MSN个性签名很有意思～每次被改掉的时候我都觉得挺可惜的。就像当年BBS的签名档一样，通常我会将我曾经用过的签名档找个地方存下来。当年Twitter火起来的时候，感觉像是一个挺好的叽叽歪歪的地儿，于是很自然想要把MSN个性签名和Twitter结合起来。倒是有一个程序能够自动从Twitter上读取最新消息作为MSN个性签名使用，但是该程序需要.net framework 2.0版本的支持，多装个东西我是很不乐意的，就这样拖了很久。</p>

<p>这两天想想可以反其道而行之，完全可以把个性签名更新到Twitter上，而不是从Twitter读取。因此春节期间花了点时间改了点别人的代码，完成一个Messenger Plus!的插件，能够完成这个功能。详细见<a href="http://www.elias.cn/MyProject/TwitterPsmPusher">Twitter Psm Pusher</a></p>

<p>唉，搞这个插件写中英文的使用说明大约花了有一个多小时，比改代码的时间还多上好几倍……这年头的事儿啊……</p>

<p>十分诡异的是，貌似我的Twitter页面上的消息只能加不能删？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/168/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IT吹泡比赛</title>
		<link>http://blog.elias.cn/archives/138</link>
		<comments>http://blog.elias.cn/archives/138#comments</comments>
		<pubDate>Wed, 21 Mar 2007 22:40:57 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[混乱的IT世界]]></category>

		<guid isPermaLink="false">http://localhost/blog/?p=138</guid>
		<description><![CDATA[最近忽然感觉IT经常就是一个吹泡大会，今天使我回忆起这个感觉主要是由于下面这件事： 话说当年大学毕业的时候俺帮俺们老大攒了一台电脑，本以够用为配置理念，后来为了帮某白痴缓解其自己造成的头脑发热过渡采购超频装备占用资金的问题（亦或是我现在记不清楚了的其他原因），把老大机器上的原配内存和某白痴拥有的某条Kingmax DDR400 512M内存掉换了一下。近期老大考虑扩充一下内存，没想到新买的内存和Kingmax插在一起出现非常严重的兼容性问题，对内存和插槽进行完整的排列组合也是不成。甚至再买新Kingmax内存和原来的Kingmax插在一起也仍然是不行，只能单条使用。 今天我拿过来在我机器上试验，发现和其他内存插在一起仍然是不稳定……于是开始上网查这条内存的参数，想要在BIOS里面根据查到的信息适当降低参数。搜索结果发现，与这条内存对应的型号（MPMC22D-383）竟然都是DDR333而没有DDR400的。而现在这条内存的防伪码多年没有刮开，已经无法弄开播防伪电话试验了。我开始怀疑这条内存是假的，莫非当年某白痴知道自己上当后骗了我一把以求解套？考虑了一下，感觉该白痴当年应该没这么大胆子。于是继续搜索，终于找到事实：当年Kingmax出品这条内存的时候，DDR400还没有成为公共标准，标准中只规定了DDR333的规格，于是Kingmax就猜测了一下DDR400的规格，先做出非标准产品来卖了，再于是这条内存的芯片上自己声称自己是DDR400的。后来DDR400的标准出来了，Kingmax一看自己不符合，就把原来的产品重新标注成DDR333来卖了，已经卖到用户手里的当然没法再改了……于是我手里出现了一条声称自己是DDR400的DDR333。而主板BIOS通常会读取内存上的信息，根据内存对自己的说明进行自动设置，这样事实就是一条高品质的DDR333运行在DDR400下却超出了其实际能力。知道这些以后，我在BIOS里面强制指定成DDR333的内存运行方式，就一切正常了。 其实事情只是Kingmax在当时吹了一个泡，这个泡骗了主板，谋杀了后来很多用户的宝贵时间去解决所谓的“兼容性”问题。当然，有类似某白痴这样的人在，我想Kingmax由于这个吹泡行为应该多赚了不少钱。 PS：老大当时为了能和这条Kingmax一起用，不得不重新新买了“关公红芯”的另一条Kingmax内存条，不但不能和旧的Kingmax一起工作，也同样不能与其他厂商内存一起工作（当然，这事跟老大使用的主板也有关系，不得不说板子不算新）。我只能说我现在对Kingmax印象不佳，把吹泡的功夫放在产品的稳定可靠上多好～]]></description>
			<content:encoded><![CDATA[<p>最近忽然感觉IT经常就是一个吹泡大会，今天使我回忆起这个感觉主要是由于下面这件事：</p>

<p>话说当年大学毕业的时候俺帮俺们老大攒了一台电脑，本以够用为配置理念，后来为了帮某白痴缓解其自己造成的头脑发热过渡采购超频装备占用资金的问题（亦或是我现在记不清楚了的其他原因），把老大机器上的原配内存和某白痴拥有的某条Kingmax DDR400 512M内存掉换了一下。近期老大考虑扩充一下内存，没想到新买的内存和Kingmax插在一起出现非常严重的兼容性问题，对内存和插槽进行完整的排列组合也是不成。甚至再买新Kingmax内存和原来的Kingmax插在一起也仍然是不行，只能单条使用。</p>

<p>今天我拿过来在我机器上试验，发现和其他内存插在一起仍然是不稳定……于是开始上网查这条内存的参数，想要在BIOS里面根据查到的信息适当降低参数。搜索结果发现，与这条内存对应的型号（MPMC22D-383）竟然都是DDR333而没有DDR400的。而现在这条内存的防伪码多年没有刮开，已经无法弄开播防伪电话试验了。我开始怀疑这条内存是假的，莫非当年某白痴知道自己上当后骗了我一把以求解套？考虑了一下，感觉该白痴当年应该没这么大胆子。于是继续搜索，终于找到事实：当年Kingmax出品这条内存的时候，DDR400还没有成为公共标准，标准中只规定了DDR333的规格，于是Kingmax就猜测了一下DDR400的规格，先做出非标准产品来卖了，再于是这条内存的芯片上自己声称自己是DDR400的。后来DDR400的标准出来了，Kingmax一看自己不符合，就把原来的产品重新标注成DDR333来卖了，已经卖到用户手里的当然没法再改了……于是我手里出现了一条声称自己是DDR400的DDR333。而主板BIOS通常会读取内存上的信息，根据内存对自己的说明进行自动设置，这样事实就是一条高品质的DDR333运行在DDR400下却超出了其实际能力。知道这些以后，我在BIOS里面强制指定成DDR333的内存运行方式，就一切正常了。</p>

<p>其实事情只是Kingmax在当时吹了一个泡，这个泡骗了主板，谋杀了后来很多用户的宝贵时间去解决所谓的“兼容性”问题。当然，有类似某白痴这样的人在，我想Kingmax由于这个吹泡行为应该多赚了不少钱。</p>

<p>PS：老大当时为了能和这条Kingmax一起用，不得不重新新买了“关公红芯”的另一条Kingmax内存条，不但不能和旧的Kingmax一起工作，也同样不能与其他厂商内存一起工作（当然，这事跟老大使用的主板也有关系，不得不说板子不算新）。我只能说我现在对Kingmax印象不佳，把吹泡的功夫放在产品的稳定可靠上多好～</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elias.cn/archives/138/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

