2008年12月15日星期一

关于IP-SAN的瓶颈

今天和板卡厂商谈判定制板卡的事情,我一直在考虑存储和流媒体转发合一的问题,所以问了一下开发存储板卡的问题。

Jack的意见是:太困难,不可能。

王的意见是:磁盘IO才是瓶颈,存储板卡的CPU不会有这个问题。

--
而如何让自己的内心产生力量,在于自己而不在于别人。等到一跃而过,回头去看的时候,一个人因此获得了宝贵的经验和自信,下一次就可以面对更宽更深的壕沟。关键在于有多少意愿去面对这种犹豫时刻,因为大部分情况下,我们可以选择绕路的方法而回避这种艰难的选择。

2008年12月1日星期一

Questions I asked days ago.

> 8. If i use an separate physical server to deploy the database, could I
> gain some performance improvement? Or the cost of communication between the
> db and the server could hurt the total performance?
>
could go either way. With the effects of Python's GIL I'd expect a
multi-core server with database and game server on one box would be fine
until you hit a scaling limit and your server is eating a whole core. At
that point you need to develop a distributed application model and probably
use multiple servers. If you hit that before you're running 200 users
recheck your business model, if you hit it before 20 users recheck your
architecture.

2008年11月25日星期二

Re: [TopLanguage] Re: C为什么不加入类似STL的库

这是第二个人在这里发自己的BLOG的私密邮箱地址了!

Changsheng Jiang

2008/11/25 一首诗 <newptcai@gmail.com>:
> 也不全是吧,分两种情况:
>
> 1. 不喜欢学习新东西的人。这种占绝大多数
> 2. 有能力学习,但是更喜欢自己掌握一切的人
>
> 对我来说,也许完成一个功能,我自己写一个和我学习某种工具花费的时间是接近的,
> 但我仍然更喜欢去学习一件工具的用法和原理。
>
> 因为我学会了一种东西,就意味着我多了一种解决问题的技能,我有可能去做到一些别人做不到的事情。而且,有的想法如果你从来没有见过,其实是比较难从自
> 身中产生出这样的想法。虽然可能有些自卑,但是我觉得,这个世界上,比我聪明,比我更懂如何coding的人,是常见的。
>
> 也许这更多的是个性使然吧。
>
> On 11月25日, 下午2时38分, Linker <linker.m....@gmail.com> wrote:
>> 不愿意用别人写的库,其实是不愿意主动学习新东西的懒人.
>> Regards,
>> Linker Lin
>> linker.m....@gmail.com
>>
>> 2008/11/25 一首诗 <newpt...@gmail.com>
>>
>> > 这些都不错的,加上你至少不需要每次去找个hash表的实现了。
>>
>> > 但让我痛苦的是,我遇到很多同事,几乎每一个,都不喜欢用第三方的库。
>>
>> > 理由:
>>
>> > 1. 太复杂的库,出了问题很难修改
>> > 2. 太简单的库,"我花5天时间写出来,不信会比较他们写的差"
>>
>> > 也许他们说的是有道理的,是我太偏执了......
>>
>> > On Nov 25, 12:57 pm, pi1ot <pilot...@gmail.com> wrote:
>> > > 很多啊,gnome的glib,apache的apr
>>
>> > > On Nov 25, 12:02 pm, "Rockins Chen" <ybc2...@gmail.com> wrote:
>>
>> > 是的,我知道很多人要讲C不支持模板,不支持泛型。但是我真的真的已经厌倦了每次需要一些简单数据结构的时候都要自己实现的痛苦了。用C来做一个类似STL那样-的库可能通用性不如C++里面的好,但是只要能减轻我的工作量,我很乐意使用这样的东西。另外一个方面来讲,在Linux内核中也有像doublelist,q-ueue,stack这样的实现,通用性都很不错。我现在就希望C标准库中也能有这么一套东西,有vector,map,stack,queue,list等等-。大家有什么看法,欢迎拍砖。
>>
>> > > > --
>> > > > BRs,
>> > > > Rockins Chen
>> > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> > > > UESTC, Chengdu, Sichuan, Chinahttp://
>> > rockins.cn/http://rockins.cublog.cn
>> > > > ybc2...@gmail.com

Re: C为什么不加入类似STL的库

也不全是吧,分两种情况:

1. 不喜欢学习新东西的人。这种占绝大多数
2. 有能力学习,但是更喜欢自己掌握一切的人

对我来说,也许完成一个功能,我自己写一个和我学习某种工具花费的时间是接近的,
但我仍然更喜欢去学习一件工具的用法和原理。

因为我学会了一种东西,就意味着我多了一种解决问题的技能,我有可能去做到一些别人做不到的事情。而且,有的想法如果你从来没有见过,其实是比较难从自
身中产生出这样的想法。虽然可能有些自卑,但是我觉得,这个世界上,比我聪明,比我更懂如何coding的人,是常见的。

也许这更多的是个性使然吧。

On 11月25日, 下午2时38分, Linker <linker.m....@gmail.com> wrote:
> 不愿意用别人写的库,其实是不愿意主动学习新东西的懒人.
> Regards,
> Linker Lin
> linker.m....@gmail.com
>
> 2008/11/25 一首诗 <newpt...@gmail.com>
>
> > 这些都不错的,加上你至少不需要每次去找个hash表的实现了。
>
> > 但让我痛苦的是,我遇到很多同事,几乎每一个,都不喜欢用第三方的库。
>
> > 理由:
>
> > 1. 太复杂的库,出了问题很难修改
> > 2. 太简单的库,"我花5天时间写出来,不信会比较他们写的差"
>
> > 也许他们说的是有道理的,是我太偏执了......
>
> > On Nov 25, 12:57 pm, pi1ot <pilot...@gmail.com> wrote:
> > > 很多啊,gnome的glib,apache的apr
>
> > > On Nov 25, 12:02 pm, "Rockins Chen" <ybc2...@gmail.com> wrote:
>
> > 是的,我知道很多人要讲C不支持模板,不支持泛型。但是我真的真的已经厌倦了每次需要一些简单数据结构的时候都要自己实现的痛苦了。用C来做一个类似STL那样-的库可能通用性不如C++里面的好,但是只要能减轻我的工作量,我很乐意使用这样的东西。另外一个方面来讲,在Linux内核中也有像doublelist,q-ueue,stack这样的实现,通用性都很不错。我现在就希望C标准库中也能有这么一套东西,有vector,map,stack,queue,list等等-。大家有什么看法,欢迎拍砖。
>
> > > > --
> > > > BRs,
> > > > Rockins Chen
> > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > > UESTC, Chengdu, Sichuan, Chinahttp://
> > rockins.cn/http://rockins.cublog.cn
> > > > ybc2...@gmail.com

2008年11月8日星期六

[转载]最节省时间的方法——学习

最节省时间的方法——学习


|

可以想象并且可以充分理解的是:无论经过怎样的改良,所有的教育体制无一例外都无法做到完美。更进一步令人毫不惊讶的是——它们而实际上通常非常失败,古今中外皆如是。教育体制最为失败的地方在于它对"学习"这个词的"妖魔化作用"——很多人接受所谓"教育",在学校里读了许多年书的最终结果竟然是
"发誓再也不学习了"。过去我总认为拒绝学习的实际上并不多。阴差阳错,我竟然最终以老师为职业,而这许多年的教学经验告诉我,太多太多的学生在不经意之间早已下定决心只要有一天离开学校就"坚决再也不受那罪了!"——他们最终也确实是这么做的,事实上,他们可能很早就开始拒绝学习了,只不过没有那么"嚣张地"表现出来而已。

为了让学生明白学习的意义,我总是尝试着用。我想,如果我运气好的话,在这些年中总是有机会成功地转化了一些人的态度,使他们明白可以通过"学习"不断进化,当很多人实际上不过是猴子的时候,他们早已经通过学习进化为真正的人甚至尼采所说的"超人"(overman)了。

学习的目的本来就不是为了"考试"——只不过基于种种原因,连所谓的主流教育都变成了"应试教育"而已。如果说,车是人类腿脚的延伸——使人们走得更远,望远镜是人类眼睛的眼神——使人们看得更远,计算机是人脑的延伸——使人们算得更快……那么学习就是人类所有能力的延伸——可以使人们拥有更多的能力,并且往往仅需要时间与精力。事实上,学习本身不仅是一种能力,而且对人类来说更是一种天生的能力。很多人拒绝学习,本质上来看,就是在拒绝做人——因为几乎只有人类才有能力有机会"终生学习"。

我见过很多"拒绝学习"的人。我曾经尝试很多次去劝我的一个朋友花20分钟学习一下批处理命令,未果——他拒绝的理由是,现在谁还用dos啊?早就是windows时代了!我尝试过很多次同样未果:劝我的另外一个朋友花10分钟学习一下Google上的通配符的使用——她说,不用那东西也一样找到自己想要的了啊!我曾经替他们着急过,可是后来发现这是个"死结"。为什么呢?1.
因为他们拒绝学习他们就不可能有机会知道学习之后的收获;2. 进而由于他们并不知道学习之后的收获是什么,于是当然不知道那收获有多好多大;3.
既然他们对学习的好处无从了解,于是就没有学习的动力……

进取之路上的人往往更可能觉得吃力而并非轻松,为什么呢?因为在那条路上"一山更比一山高","山外有山,天外有天"。在平庸之路上的人往往更可能并非自卑而是洋洋自得,为什么呢?因为他们总是会遇到比自己更差的人。

如果你曾经有过最终习得某种技能的经验,就知道在习得的那一瞬间,整个世界都会为之而变。或者换一个说法,因为你有能力做更多的事情了,你就不再存在于原本的世界里;因为你所习得的技能,你已经拥有另一个完全不同的世界。比如,你最终可以熟练使用一门外语,你原本生存的世界就多了一扇门,跨过那个门槛就是另外一个世界——这种情况下,再用另外一个说法就是,你比另外一些只能讲母语的人多拥有一个世界。我痴迷于学习,正是基于这样的体会。每次我掌握了一门新的技能(是否足够精通,或者是否比别人强实际上根本不重要)我就感觉我自己重生一次——如此看来,其实人一生原本可以有很多辈子的,只不过是大多数人放弃了而已。很多年前当我学会了BASIC编程语言,我并不知道它这一生都会给我带来无穷的好处,甚至不知道自己已经脱胎换骨;当我学会了当众演讲,世界就变了,就算是脱胎换骨了;当我真正学会了如何教书,我才发现我已经身处另外一个世界,我早已重生无数回……

事实上,有些人可能比其他人更有机会体会这种"一生中的许多辈子"的"诡异"体验。比如说,演员。那些最终演了几十年的演员,往往是因为他们的演技过人(所以才没有被淘汰掉);而他们过人的演技更多来自于勤奋而非天赋——在每一出戏中他们都会用尽一切方法去了解他们所饰演的角色。罗伯特迪尼罗为了演好一名拳击手(《愤怒的公牛》),几个月内增重60磅而后几个月内又减重60磅;梅尔吉普森为了拍好《勇敢的心》,曾经花费几年时间去钻图书馆做他的功课;艾迪哈里斯为了演好贝多芬(《复制贝多芬》)花了好几年时间打磨自己的琴艺并揣摩贝多芬的心迹;刘德华为了演好《阿虎》不知道挨了多少打才不用演就能流露出虎落平阳的神态……看看这些演员二十年前的照片就会发现,他们最明显的变化其实并不是年龄,而是眼神——深邃得很。我的理解是,他们演一出戏就等于重活一辈子,而他们早已经活过不知道多少辈子,他们的眼神不深邃才怪,那眼神想要没有穿透力实在是太难……

学会起码一种技能很重要,无论它多简单,多没什么大不了,学会它总是可以让习得者了解到习得之后与之前的大不同。一旦拥有了一个起点,学习欲望就好像是发了芽的种子,无论多大的石头都压不住它——它会越来越茁壮,越来越坚强。其实,那些拒绝学习或者一不小心受了影响而已经把"学习"两个字妖魔化了的人真的非常可怜,他们每天都在挣扎着想要"管理时间","节约时间","提高效率",却不知道他们因为当初不肯花费十几二十几分钟而其后一生少做了很多事情,错过了了很多机会,并且,一生只有一辈子却都没有过好……

--
有一种人,不知道是因为DNA的变异还是前世的夙缘,总是无法安稳下来。他们的生命之流如同咆哮奔涌的大河,没有一刻能够停顿下来。在寂静无人的深夜里,无梦相扰的安睡中,心中也有猛兽会随时醒来,躁动不安,永无宁日。

2008年10月24日星期五

My Child Dream

For many years, I've forgotten my child dreams.

I mean, I can not remember them now.  I even doubt if I did have them.
But maybe, I had.

Here is some scratches:

* I want to have Noble Price.
* I want to be a scientist.
* I want to know the beauty of the universe.
* I want to write a book which is very humorous and interesting.
* I want to have a big house with a big library.

My dream has never changed.
--
有一种人,不知道是因为DNA的变异还是前世的夙缘,总是无法安稳下来。他们的生命之流如同咆哮奔涌的大河,没有一刻能够停顿下来。在寂静无人的深夜里,无梦相扰的安睡中,心中也有猛兽会随时醒来,躁动不安,永无宁日。

2008年10月11日星期六

A demo of "connection_pool" in soci.

Source File.

//soci.c
#include <soci.h>
#include <soci-postgresql.h>
#include <iostream>
#include <istream>
#include <ostream>
#include <string>
#include <exception>

using namespace soci;
using namespace std;


connection_pool *pool = NULL;

void create_pool()
{
pool = new connection_pool(5);
int pool_size = 5;
session *s[pool_size];
int i = 0;

//Open connection on every session in the pool
for(i = 0; i < pool_size; i ++)
{
s[i] = new session(*pool);
s[i]->open(postgresql, "user=postgres password=milk dbname=mydb host=localhost");
}

//Return every session to pool
for(i = 0; i < pool_size; i ++)
{
delete s[i];
}
}

bool getName(string &name)
{
cout << "Enter name: ";
return cin >> name;
}

int main()
{
try
{
create_pool();

session sql(*pool);

int count;
sql << "select count(*) from phonebook", into(count);

cout << "We have " << count << " entries in the phonebook.\n";

string name;
while (getName(name))
{
string phone;
indicator ind;
sql << "select phone from phonebook where name = :name",
into(phone, ind), use(name);

if (ind == i_ok)
{
cout << "The phone number is " << phone << '\n';
}
else
{
cout << "There is no phone for " << name << '\n';
}
}
}
catch (exception const &e)
{
cerr << "Error: " << e.what() << '\n';
}
}

Makefile:

all:
g++ -g -I/usr/include/postgresql -I/usr/local/include/soci -lsoci_postgresql -lsoci_core soci.c -o soci

--
有一种人,不知道是因为DNA的变异还是前世的夙缘,总是无法安稳下来。他们的生命之流如同咆哮奔涌的大河,没有一刻能够停顿下来。在寂静无人的深夜里,无梦相扰的安睡中,心中也有猛兽会随时醒来,躁动不安,永无宁日。

Fwd: 你们如何和固执的而缺少知识的同事打交道的呢?



---------- Forwarded message ----------
From: 一首诗 <newptcai@gmail.com>
Date: 2008/10/11
Subject: 你们如何和固执的而缺少知识的同事打交道的呢?
To: python-cn`CPyUG`华蟒用户组 <python-cn@googlegroups.com>


Hi

我们最近招了一位同事,主要考虑到他有2/3年的相关工作经验,所以没有仔细考察过。

来了之后发现有两个特点:

1. Very pushy.
2. 非常相信自己的经验,但是缺乏一些必要的知识,并且讨厌学习。

我有一次刚刚看完一点完成端口相关的文章,因为听他以前吹过说他很了解这个,就和他谈了一下,发现他只是用过,完全不清楚为什么这个东西背后原理。他告
诉我之所以完成端口比较快,是因为"后面用了线程"。

这样我和他争论问题的时候,我总感觉他因为缺少一些知识,所以沟通起来很费劲。他找不到说服大家的道理,但是他会很坚定的说"我这么多年的经验告诉
我……"

任何一个技术决策,都会有多方面的考虑,虽然我很多时候相信自己的选择是最优的,但是我不能否认也许我的方案是有负面因素的。

而且更重要的是,虽然我看东西的特别多,了解一些原理方面的东西,但我的开发经验,主要没有在这方面,所以是否实际中有什么问题我不清楚的会造成他说的
情况,我也不能肯定。

于是每次我有争论的时候,我不知不觉得会都让着他。其他同事和他争论的时候,因为没有他那么pushy,所以慢慢也会让着他。

如果你们遇到这种情况,你们会怎么做呢?

是相信他的经验呢,还是相信自己的分析?

反正,现在基本上,除了我觉得一定是有大问题的情况,一般都由着他做了。

呵呵,也许应该就事论事,对事不对人吧。



--
有一种人,不知道是因为DNA的变异还是前世的夙缘,总是无法安稳下来。他们的生命之流如同咆哮奔涌的大河,没有一刻能够停顿下来。在寂静无人的深夜里,无梦相扰的安睡中,心中也有猛兽会随时醒来,躁动不安,永无宁日。

2008年9月30日星期二

ubuntu : 编译工具

Desktop版本的ubuntu不带编译程序的工具,所以你得

sudo apt-get install build-essential

注意必须要联网才能装的上。

--
有一种人,不知道是因为DNA的变异还是前世的夙缘,总是无法安稳下来。他们的生命之流如同咆哮奔涌的大河,没有一刻能够停顿下来。在寂静无人的深夜里,无梦相扰的安睡中,心中也有猛兽会随时醒来,躁动不安,永无宁日。

2008年9月29日星期一

比较几种序列化和反序列化工具

作做一个网络项目,因为组件间通信很麻烦,要传很多数据类型,而且还是异构系统,所以想找一个开放序列化工具。

看了很多,没有一个满意的。

ICE:这个东西不是专门做序列化的,所以没有提供方便的将二进制数据转换为文本的接口。
我如果不能在程序里面把收到的数据打成文本,那么我就得自己写Sniffer插件了。

Thrift:看介绍貌似很强,但是Mail List根本没人在做,看来是要死了。

Google Protocol Buffer:这个没有C#支持还都在Very Early的阶段,哭……

看来现在只能直接用XML了。想想把数据序列化和反序列化但代码,工作量真不是一般的大啊。


--
有一种人,不知道是因为DNA的变异还是前世的夙缘,总是无法安稳下来。他们的生命之流如同咆哮奔涌的大河,没有一刻能够停顿下来。在寂静无人的深夜里,无梦相扰的安睡中,心中也有猛兽会随时醒来,躁动不安,永无宁日。