今天看到麦田的蚂蚁在K68做Logo的事儿,觉得挺有意思,和Robin、Louie商量了一下,决定我们也试试。
这是在K68的任务方案,如果你有兴趣,希望你能帮我们设计一个简单、大方、有想象力的Logo。
财帮子上线快两个月了,谢谢大家的关心,目前一切运转良好,我们也会更加努力的
Archive for the 'Other' Category
经过一个月的内部测试,我们终于把财帮子拉出来见人了。
def PR_What_is_财帮子
了解各种基金信息和数据
定制自己的基金看板,把握最新动态
整理购买的基金,获得详尽收益报告
结交更多朋友,分享理财经验
end
呵呵,没错,财帮子是用Rails开发的,一个帮助你关注自己的基金信息,获得收益报告,结交朋友,分享经验的社区。信息还是那些,但是我们希望做出一些好玩儿、好用、有意义的东西来。今天,我们终于走出了第一步。
闷头开发了两个月,所有的晚上、周末加上春节,终于又能体会全身心的投入去做好一件事情的兴奋和快乐。财帮子会是我们今后很长一段时间全心、全职去做的事情,希望大家多提意见多拍砖,谢谢!
我记着百度知道推出的时候的一句广告词就是“这个世界上总有一个人知道这个问题的答案”,对此,我深信不疑。
今天吃饭的时候一边在看劲爆体育的世界杯进球集锦,非常喜欢动感十足的配乐,于是,我在Google里敲下“劲爆体育 世界杯进球 音乐”,不出所料,结果的第二条就给了我答案。
劲爆体育回顾世界杯进球时所播放的歌曲名称是什么_百度知道
前两天在看《创世纪》的时候听到里面一首非常好听的英文歌,于是,我去找Google,她告诉我那首歌叫“Promise don’t come easy”。
我认为,在这个互联网上的一个角落里,一定有你想要的问题的答案。这些答案是遍布在互联网每个角落的每个草根所创造的。麦田说他不看好中文UGC(User Generated Content),问题是,我们给了用户什么样的平台去创造内容?是那些像黄色网站一样的视频分享网站么?
不知道大家现在还有没有听收音机的习惯?
如果有,强烈推荐一下北京音乐台(FM97.4)每天早上9点到11点的流行编年录,一档回顾从1977到2007的中国流行乐坛的节目,主持人分别是园园、伍洲彤(估计很多人听他的零点乐话吧?呵呵)、朱云和陆凌涛。每周回顾1年,这周回顾到了1985年,今天刚刚听到谭咏麟、张国荣称霸歌坛,张学友刚刚出来,呵呵,Fan学友的米嘉等同学要注意了。
听这样的节目很有趣,虽然那个年代我还很小,不过很多歌儿在后来都是耳熟能详的。有时候真的觉得每首歌都能让你想起一段往事,挺有意思的。周一的时候提到威猛乐队来北京开演唱会,5块钱一张门票还送卡带,然后放了经典的“无心快语”;昨天提到了经典的”we are the world”和“明天会更好”,听到“明天会更好”的时候,一下子让我想起了本科新年晚会排练这首歌的时候,转眼已经快10年了,天。
不多说了,接着干活儿去。如果你早上有时间,一定要试试哦。
周六下雨,周日下雪,周一刮风,嗯,让我觉得今天一定是一个大晴天,于是,今天上班特意带上相机,来照照五道口的样子。
搬到五道口有一段时间了,坐在窗边的位置,可惜一直没时间用心欣赏窗外的风景,简直浪费了海景房啊
嗯,别跑的太急,有时候,停下来看看路边的风景也挺好的。
嗯,其实回来好几天了,好多朋友让我把照片贴上来。比较懒,直到明天就要上班了,今晚才赶紧整理了一下照片,挑了一些给大家看看。
我发现,这样的的休假对于回来真是一种折磨,一想起明天要上班我就头痛
不过想了想,这是2006的最后一周了,怎么说也得画个圆满的句号,还是好好去工作吧。
贴几张照片在下面,怀念一下那一周美好的时光。照片都在Flickr上,要看大的就直接到那里吧。
明天开始休假,嗯,其实是从今天开始
明天出发,到一个有太阳、有沙滩、没人烟、没烦恼的地方,把脑子掏空,好好休息一下。
如果那里能接入互联网,我会发照片的。
别上火,这可不是各种BBS里面那种炒的脸红脖子粗的”Java与C++”哪个更好,”Ruby会不会取代Java”类似的帖子,而是偶尔看到的一篇用女人来比喻编程语言的文章,对与不对放在一边,挺逗的。
Java – Bulky with big boobs. Does everything you want but slowly. Hardly complains about how you want it in bed. The kind of woman who is not sexy, but gives you amazing satisfaction. You have tried several women, but this one doesn’t get off your mind so you always go back to her.
Ruby on [...]
说起来,工作3年,这是第一次通宵加班。
嗯,也是我最近及其罕见的熬夜了,不知道生活的规律对于我算是一件好事儿还是坏事儿?
现在还不到1点,还没正式开始Deploy,就继续写会儿,往前数数以前通宵熬夜的日子吧。
1年前,Xerdoc DSearch还在风风火火的开发的时候,我,大米和曹飞每周通宵几次几乎是家常便饭,不但周末熬,平时下班了也经常熬,那段时间真是疯狂啊。
往前,应该是上研究生的时候。有一段做香港地铁的项目,每天测试都得等到晚上1点香港地铁停运才能进行,所以那段时间每天晚上1点到早晨6点工作,整整1个月。
再往前,就应该是上大学的时候了,那会儿生活及其不规律,只要周末在家,一定通宵。还有就是做毕设的时候,我和大米、吉子在如心楼401通宵。。。
再再往前,似乎就没了,除了小时候除夕通宵。
嗯,快开始了,祈祷一切顺利,早晨就可以回家睡觉了,哈。
Cross Finger……
微软著名的C++大师Herb Sutter在2005年初的时候曾经写过一篇重量级的文章:”The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software“,预言OO之后软件开发将要面临的又一次重大变革-并行计算。
摩尔定律统制下的软件开发时代有一个非常有意思的现象:”Andy giveth, and Bill taketh away.”。不管CPU的主频有多快,我们始终有办法来利用它,而我们也陶醉在机器升级带来的程序性能提高中。
我记着我大二的时候曾经做过一个五子棋的程序,当时的算法就是预先设计一些棋型(有优先级),然后扫描棋盘,对形势进行分析,看看当前走哪部对自己最重要。当然下棋还要堵别人,这就需要互换双方的棋型再计算。如果只算一步,很可能被狡猾的对手欺骗,所以为了多想几步,还需要递归和回朔。在当时的机器上,算3步就基本上需要3秒左右的时间了。后来大学毕业收拾东西的时候找到这个程序,试了一下,发现算10步需要的时间也基本上感觉不出来了。
不知道你是否有同样的经历,我们不知不觉的一直在享受着这样的免费午餐。可是,随着摩尔定律的提前终结,免费的午餐终究要还回去。虽然硬件设计师还在努力:Hyper Threading CPU(多出一套寄存器,相当于一个逻辑CPU)使得Pipeline尽可能满负荷,使多个Thread的操作有可能并行,使得多线程程序的性能有5%-15%的提升;增加Cache容量也使得包括Single-Thread和Multi-Thread程序都能受益。也许这些还能帮助你一段时间,但问题是,我们必须做出改变,面对这个即将到来的变革,你准备好了么?
Concurrency Programming != Multi-Thread Programming。很多人都会说MultiThreading谁不会,问题是,你是为什么使用/如何使用多线程的?我从前做过一个类似AcdSee一样的图像查看/处理程序,我通常用它来处理我的数码照片。我在里面用了大量的多线程,不过主要目的是在图像处理的时候不要Block住UI,所以将CPU Intensive的计算部分用后台线程进行处理。而并没有把对图像矩阵的运算并行分开。
我觉得Concurrency Programming真正的挑战在于Programming Model的改变,在程序员的脑子里面要对自己的程序怎样并行化有很清楚的认识,更重要的是,如何去实现(包括架构、容错、实时监控等等)这种并行化,如何去调试,如何去测试。
在Google,每天有海量的数据需要在有限的时间内进行处理(其实每个互联网公司都会碰到这样的问题),每个程序员都需要进行分布式的程序开发,这其中包括如何分布、调度、监控以及容错等等。Google的MapReduce正是把分布式的业务逻辑从这些复杂的细节中抽象出来,使得没有或者很少并行开发经验的程序员也能进行并行应用程序的开发。
MapReduce中最重要的两个词就是Map(映射)和Reduce(规约)。初看Map/Reduce这两个词,熟悉Function Language的人一定感觉很熟悉。FP把这样的函数称为”higher order function”(”High order function”被成为Function Programming的利器之一哦),也就是说,这些函数是编写来被与其它函数相结合(或者说被其它函数调用的)。如果说硬要比的化,可以把它想象成C里面的CallBack函数,或者STL里面的Functor。比如你要对一个STL的容器进行查找,需要制定每两个元素相比较的Functor(Comparator),这个Comparator在遍历容器的时候就会被调用。
拿前面说过图像处理程序来举例,其实大多数的图像处理操作都是对图像矩阵进行某种运算。这里的运算通常有两种,一种是映射,一种是规约。拿两种效果来说,”老照片”效果通常是强化照片的G/B值,然后对每个象素加一些随机的偏移,这些操作在二维矩阵上的每一个元素都是独立的,是Map操作。而”雕刻”效果需要提取图像边缘,就需要元素之间的运算了,是一种Reduce操作。再举个简单的例子,一个一维矩阵(数组)[0,1,2,3,4]可以映射为[0,2,3,6,8](乘2),也可以映射为[1,2,3,4,5](加1)。它可以规约为0(元素求积)也可以规约为10(元素求和)。
面对复杂问题,古人教导我们要“分而治之”,英文中对应的词是”Divide and Conquer“。Map/Reduce其实就是Divide/Conquer的过程,通过把问题Divide,使这些Divide后的Map运算高度并行,再将Map后的结果Reduce(根据某一个Key),得到最终的结果。
Googler发现这是问题的核心,其它都是共性问题。因此,他们把MapReduce抽象分离出来。这样,Google的程序员可以只关心应用逻辑,关心根据哪些Key把问题进行分解,哪些操作是Map操作,哪些操作是Reduce操作。其它并行计算中的复杂问题诸如分布、工作调度、容错、机器间通信都交给Map/Reduce Framework去做,很大程度上简化了整个编程模型。
MapReduce的另一个特点是,Map和Reduce的输入和输出都是中间临时文件(MapReduce利用Google文件系统来管理和访问这些文件),而不是不同进程间或者不同机器间的其它通信方式。我觉得,这是Google一贯的风格,化繁为简,返璞归真。
接下来就放下其它,研究一下Map/Reduce操作。(其它比如容错、备份任务也有很经典的经验和实现,论文里面都有详述)
Map的定义:
Map, written by the user, takes an input pair and produces a set of intermediate key/value pairs. The MapReduce library [...]