对解决交通问题的几点建议星期一, 十月 20. 2008上海最大的问题是什么?不是房价,不是物价,而是交通。有钱的堵在桥上就得玩完,没钱的闷在地铁里更是悲惨。现在不是拥不拥挤的问题,是根本挤不上车。交通问题不解决,城市就没办法建设的更大。 对于解决交通问题,是非提出以下几点建议,有用没用,看过便罢。 一、拆掉公交地铁上所有的座椅。一张椅子所占的位置,足够站至少四个人的,而且,不管男女老少,上车抢位子已经成为了上海不文明行为之中最令人恐怖的行为。拆掉座椅,少说可以让地铁在不加车的情况下增加30%的运能,让公交车直接增加至少50%的运能,同时又能减少抢座现象,从一定层面上提高上海的精神文明水平。 当然,为了照顾那些确实需要的人,地铁上可以留下一节车厢的位子,由乘警负责看管,不属于老弱病残孕的人想坐这个座位,先打残了再说。 二、要求所有小学和幼儿园上课时间不得早于9点半,所有老弱病残孕不允许在交通高峰时间上地铁和公交,(自己实在想上也无所谓,反正没位子,大家都像饼子一样挤在一起,挤出个三长两短来,没人负责。) 另外,可以最大化的利用错峰上下班,分散双休日,甚至可以让一部分公司晚上上班,比如晚上9点到早上5点。不但可以大大减轻交通压力,还能跟美国的工作时间接轨,大大有利于外包业务公司和进出口公司的业务发展。 三、卖掉一半的出租车,拿这些钱去补充公交车的数量,争取让每一路公交车的等车时间稳定在10分钟以内,高峰时段在5分钟以内。配合第一步的话,再繁忙的线路也能解决问题。 四、政府出资在各个密集的居民区建设大型联合办公区,让那些不需要集中办公的人就近上班。这样即可以解决交通问题,又可以解决让员工在家办公导致的不信任。这样,所有的可以通过网络进行办公的人,都可以到这个地方来集中上班,由集中的物业管理公司统一处理上班打卡之类的问题。只此一招,至少可以减少30%的交通需求,不管是坐车的还是开车的。不但可以减少交通压力,还可以减少废气排放污染,响应国家节能减排的政策。 这四招除了最后一招成本稍高(但是效果最显著),其它几招都简单易行,只不过是发几个文而已,绝对不比取消五一黄金周更复杂。至于有没有效果,想想就知道了。 偷的多了就不叫偷了星期一, 十月 20. 2008很久很久以前,人类还没有掌握刀耕火种的时候,大家都是靠天吃饭,天上掉什么,地里长什么,就吃什么。所以基本上,没有人吃饱过。 后来,经过一番进化和变异,突然,有一位神童领悟了掌控大自然的力量,学会了种植,摆脱了大自然的控制,终于让自己吃上了饱饭。另外一些人也找到了其它的控制大自然的方式,有人种瓜,有人种菜,日子越过越好。而剩下的那些人觉得,靠天吃饱也没什么不好的,自己种植还要劳神费力,所以也懒的去学习和研究他的种植技术,依然过着有一顿没一顿的日子。 后来,这位神童随着种植的技艺不断成熟,加上自己的刻苦努力,使得种植的效率和成果大大的提高,于是,他的农场不断的扩大,而随着收成的提高,他自己不可能吃得完所有的东西,于是就拿出剩余的部分去出售,跟其它大户互相购买对方手里的东西,过上了富足而奢侈的生活。 而随着农场的扩大,他也不可能管得过来所有的农场,于是,那些懒人们开始跑到他的农场里收割他的粮食。一开始,人们这么做的时候很有一种愧疚感,称之为“盗”。而后来,随着日复一日,年复一年,人们已经习惯了每天到他的农场去收割,然后当成自己的,享受的心安理得。 终于有一天,突降天灾,他家的农场也受到了连累,收成大不如前,由于他现在家大业大,需要养的人也多,原来家旁边那些地不够吃的了,于是到更远一点的地方去收粮食,结果发现,这里一点也没有剩下。 虽然他知道他的粮食每天都被那些人随便拿去,但是他以前没有在意过,因为他还有更重要的事做,他也希望这些人能够喜欢他种出来的粮食,而从此放弃靠天吃饭的念头,所以以前他也从来没有公开的站出来批评过那些偷东西的人。但是现在,他不得不这么做了。 于是他发了一条公告,所有偷拿他粮食的人,必须停止这种行为,想吃就拿钱来买,否则,以后他会不定期的给粮食洒农药,后果自负。 此言一出,天下大乱,人们都开始怒吼,你凭什么收我们的钱,你这么多年都让我们随便拿了,凭什么现在来要钱。我们多年没有去山上捡果子吃,导致果树都荒死了,你现在想饿死我们吗?等等等等。 无论如何,饭还是要吃的,只是胆大的,不怕中毒的人仍然敢去他的田里偷,胆小的就只好一边骂娘一边想其它办法了。因为他虽然说了不定期的洒农药,却没有说一定会洒在哪里,洒多少。 db4o,写小工具更简单的方法星期二, 九月 16. 2008第一次看到db4o这个东西还是两年前,那时候只有Java版,现在已经发展到了V7,而且已经有了.net版,而且已经支持.net 3.5和linq。 简单来说,db4o是一个可以让你直接保存对象到硬盘的组件,任何对象都可以直接保存,以简单的方式查询调用,是一个用于替代数据库的组件。如果你的程序需要保存格式化的数据到单一位置,你不再需要定义数据库结构,写SQL语句,还得考虑程序迁移问题,有了db4o,一切变得更简单。 比如你定义一个Article类,然后ar=new Article();然后就可以db.Store(ar);直接把这个Article对象保存到硬盘上,下次要使用的时候,可以直接把这个对象Load起来,不需要数据库,不需要转换和映射,对于数据库管理类程序,节省至少一半的代码。 虽然在官方的文档里说db4o的插入和查询性能比一般的数据库更强大更高效,但是在我的实际使用中发现并不是这么回事,它的查询效率不高。(总共只有不到一万个Article对象,但是比较大,数据库体积200多M,查询一次远远达不到官方说的毫秒级,当然,按ID直接定位某个对象是很快的。)另外,它并不是启动和查询的时候把所有的对象放到内存里,而是只查询出符合条件的ID放入内存,实际使用这个对象的时候再去数据库里取,所以你要一直开着这个db,不能close它。总体来说,它并不是很适合用来在保存大量数据的情况下替代数据库。但是,如果用来替代保存程序配置信息,或者用于某些软件里面保存量不大的数据,(比如我写的博客备份软件,用来备份抓取下来的博客文章),那是相当合适的。 这个组件虽然下载的安装文件很大,但是在.net中实际需要引用的只有一个400多K的dll文件,你需要使用的函数只有十几个,而最常用的,只有四个。 但是,要注意的一点,它默认的使用方法是不支持多线程的,所以不适合用于并发环境下的WEB,而更适用于单人使用的客户端程序,把db声明为全局变量,在程序启动的时候打开数据库,程序关闭的时候关闭数据库,就OK了。当然,它也有并发模式,但是需要在一个独立的地方启动一个Server程序,定义一个IP和端口进行监听,其它的客户端使用TCP的方式连接到这个Server,就可以操作这个数据库,所以,它仍然不适于做WEB,因为虚拟主机是不能启动一个单独的程序的。 对于所有用.net写Windows客户端小程序,而且有些数据需要保存的,该组件属于强烈推荐级别。 BTW:它是免费的。 Manyou API开发感受星期一, 九月 15. 2008做完了校内的API版本以后,本想做海内和开心网的,找半天没有一点关于API的消息,似乎从来没有公布过一样。但是里面的那些应用又不像全部是公司开发的,难道属于内测阶段? 于是转去研究UCenter的API-Manyou。初看起来,Manyou的API完成度更高,文档也更细,而且已经有了MYQL和MYJS,比校内的更加成熟。结果,真正开发起来,才发现简直是场恶梦。 注册新程序的流程跟校内一样,但是少一个映射URL的选项,也就是说你的程序没有短路径。 API的函数和参数的说明都不少,但是偏偏没有如何调用。(有,但是是PHP版的,而且是PHP开发包的调用方法,如果你想自己做Post请求,Sorry,即找不到服务器地址,也找不到接收到的参数的说明。) Python已经有了一个开发包,结果装上以后却说有一个函数未定义,启动不起来。 尝试了N多种方法,都没有办法成功的发送一个Post。 然后放弃了这种方法,只接收用户ID,不打算进行验证了。界面终于显示出来了。又发现其它页面的相对链接都不对了。又是一阵调试加猜测,总算找对了方法,把链接都改成相对于你的目录的链接,但是又不是相对链接,而是写绝对链接。 最后,看起来所有的页面都显示正确了,但是一个Form的Post又遇到了困难。我没办法让这个Form往正确的地址Post。换了多种方法,始终提示Bad Request。而且,Form里面被插入的隐藏变量居然跟Get的时候不一样,没有my_sig_uid字段…… 算了,放弃了。浪费我一天的时间。 可爱到极致的机器人:WALL·E星期六, 九月 13. 20082110年,地址表面的垃圾已经多到不适合居住,于是最后的人类坐上太空飞船离开了地址,生活在太空中。地球上只留下了一些垃圾清理机器人,型号为WALL·E。七百年后,仅有一个机器人还在继续工作。这个看上去老旧的机器人,每天的工作就是出去把各种垃圾扫进自己的盒子里,压成一个广场,然后集中摆放。整个地址已经立起了数不清的垃圾大厦。WALL·E在工作之余喜欢收集各种各样的小玩意,带回自己的家里收藏起来。还喜欢不停的年一段歌舞剧。晚上会把自己放到货架上像摇篮一样的睡觉,早上会睡眼惺忪的起来穿鞋子(履带),甚至还喜欢按塑料隔膜上的泡泡。(他家里还有个能用的IPOD。) 后来人类派出来查找绿色生命的新型机器人EVA来到地球,其华丽的外表、超强的功能、优雅的举止简直让WALL·E一见钟情,只是,她还喜欢乱开炮。 WALL·E把EVA邀请到自己家里,拿出自己珍藏的各种小玩意给她看,当看到一株绿色的小草的时候,EVA突然将它收入身体,进入了休眠状态。于是WALL·E一直守在她的周围,为她遮风挡雨,还在墙上用激光刻上WALL·E Love EVA的记号。 当人类的飞船回来接EVA的时候,WALL·E拼命的抓住了船,来到了人类的太空基地。人类由于待在微重力环境中造成了严重的骨流失,已经基本失去行为能力,从小就坐在自己的会飞的椅子上,凭面前的一张屏幕与外界交流。 根据人类最初的计划,当再次在地球上发现绿色生命的时候,就是人类返回地球之时,但是有些人却并不愿意回去,于是,一场大战在所难免。 冲突,往往总是由新鲜血液引起的,一个外来的老旧机器人,给飞船上正常而规律的生活带来了变化,冲突由此而起。 片中各式各样的机器人令人眼花缭乱,两个机器人在太空中的一段空中芭蕾也着实拍的赏心悦目。整个片子台词很少,人类的台词更是没几句,基本全部由简单的机器人语言来完成。在没有台词的情况下,在体形简单,面部更加简单的机器人身上使用肢体语言和表情来完成表演,显然有着更大的难度。但是,本片完美的解决了这个挑战。将来的很长一段时间里,机器人类的影片,恐怕都很难超越这样的高度了。 总体来说,这还是一部励志型的影片,由机器人的爱情作为主线,又是一部老少皆宜的Disney佳作。 校内API开发简易指南星期三, 九月 10. 2008是时候研究一下国内的开放式API了,所以抽时间搞了一下,先从校内下手吧,相对来讲他的资料算是最多的了。但是即使如此,想从零开始写一个应用出来,还真是花了我不少功夫。资料实在是太难找了。校内的API从6、7月份就出来了,还弄了个专门的Wiki作为开放平台的门户,但是里面的资料出奇的少,除了对几个api函数的说明,对xnml的简单说明,其它的几乎为0。所谓的一个上手指南只讲了怎么注册用户和怎么注册程序,注册完以后的开放过程却一点也没提。想根据这份东西写个真正的应用出来,简直是不可能的任务。没办法,上Google,上社区,上应用的论坛,一篇篇帖子里找线索,最后总算是把一个应用给凑出来了。 如此糟糕的技术支持能力,直接决定了校内API应用的未来。 开发过程简介: 首先需要注册成校内用户,然后在自己的菜单上有个应用,添加一个“开发者”应用,这里面包括一个社区,一些开发所需要的链接。进入这个应用以后,可以看到一个申请开发许可证的按钮,点击就进入设置应用属性的环节,起名字,定URL之类的。(这一步在校内的Wiki上是有说明的。)有个安装到校内的选项,默认是否,结果选了以后我的应用就变成了外部应用,在校内只提供一个链接进入而已,这当然不行了。当我把应用删了重新添加的时候,原来使用的那个URL被占用了,无耐,换了个更难看的URL。应用还有一个重要的属性,就是运行状态,是以iframe形式还是xnml形式,这个待会再讲。第一次建议先选iframe形式,这个是随时可以修改的。 这些东西都设置完,应用就生成了。你会得到一个api_key,一个secret key,不过这两个东西都没什么用。 校内应用的工作原理: 如果是xnml方式的应用,用户访问apps.xiaonei.com/xxxxx/yyyyy这样一个地址的时候,xxxxx代表你申请一个应用的时候自己定义的那个URL,校内的API服务器会在后台将用户对该页面的请求(包括所有参数)转发给你的应用,也就是你申请应用的时候填的那个自己的应用地址。如果你的应用在你的服务器上是www.aaa.com/xxxxx/这样一个目录,那么上面这个请求就会被转发到www.aaa.com/xxxxx/yyyyy这里,不管yyyyy是个html页面还是个目录形式。转发的同时,还会多几个参数过来,包括当前用户的id,当前用户的sessionid,还有你的api key。你后续的所有的页面的链接,都要写成以apps.xiaonei.com开头的地址,由它来转发请求。 如果是iframe的应用就简单多了,海内直接生成一个iframe,把你注册时填的那个起始地址放进去,同时包括前面说的几个相同的参数。剩下的事情他们就不管了。 因为每次请求都是校内的服务器发给你,所以你的服务器上写Cookie或者session之类的东西是没有用的,必须每次取得这几个参数来决定当前用户是哪一个。(校内在这里有一个极其严重的设计失误,那就是没有用到创建程序时生成的那个secret key。校内发过来的这三个参数只能帮你确定是哪一个userid发过来的请求,而这三个参数之间是没有什么关联性的,比如你无法根据sessionid来判断这个userid是否合法。而在iframe状态的应用里,这三个参数直接暴露在浏览器代码里,用户只要复制下来,把userid改成另外一个数字放到浏览器地址栏里就OK了。现在,如果你想确保访问用户的合法性,就必须要通过校内的API调用,到他的服务器上去,把这三个参数发过去,看它的返回结果,多一次网络调用所带来的时间损失,远远大于任何的数据库运算或者数字运算。实际上,校内只要加上第四个参数,也就是你的secret key和其中任何一个参数合并后的md5码,你在取值以后用同样的算法生成md5码,比较一下跟传过来的值是否相等就OK了,完全不需要为了验证用户合法性而增加一次网络调用。更可恶的是,每个页面你都要做一次这样的网络调用。当然,你也可以在验证合法以后用自己的服务器保存一下userid和sessionid的对应关系,下次请求如果仍然是这两个数值就不用再网络验证了,但是这又增加了无谓的数据库调用。) 你已经拿到了用户在校内上的用户ID,并且确认他已经成功登录校内,接下来就是处理你自己的业务逻辑。比如在你的数据库里新增加一个用户,并绑定到这个校内ID上,然后对该用户进行某些操作。最后就是返回页面内容。 这里就到了iframe和xnml模式的区别。如果是iframe模式,你返回的页面内容直接显示在iframe里,那自由度就大多了,跟普通的网页一样,想怎么做就怎么做。不过要小心iframe跨域的js问题。 如果是xnml模式,你返回的内容(还是普通的html,但是没有body标签了)是由校内的api服务器接收到的,他们对内容进行解析,然后显示在自己的层里,展现给用户。为了防止一些非法操作,xnml规定了哪些html语法是合法的,如果出现不合法的语法,会直接报错。(这里又缺少一个可用的debug方式,一旦在这个步骤出现页面错误,极难调试。)Wiki的文档里写了这里是不允许出现自己的css语法的,但是实际上现在又是可以用css的,至少style和class两个关键字都是允许的。除了普通的html语法,xnml还定义了一些他自己的语法,通过这些语法,你可以在页面上直接显示出用户的姓名头像链接好友等等信息,而无需在你的程序里通过API调用去获取。 如果你要使用form来post数据,把form的action定义成相对路径,相对于你的这个应用的实际路径,比如,如果你的原始action应该是www.aaa.com/xxxxx/save.jsp,那么只要写action='save.jsp'就可以了,在显示出来的时候,校内会将它替换成他们自己的相对路径,然后转发到正确的地址。 最后说说最有技术味道的东西,对校内API的调用。 现在校内一共只公开了为数不多的几个API,可以获取用户信息,好友信息,给用户发通知,现在还可以增加用户的新鲜事。对这些API的用户方式都是通过Post来实现的,Post的地址是固定的,就是这个地址:http://api.xiaonei.com/restserver.do,你需要对这个地址进行Post,发送几个参数过去,包括api_key,session_key,也就是校内传过来的那两个值,还有method,就是你要调用的方法名,然后不同的方法需要使用不同的参数,这些就可以去看校内的API文档了。这些参数Post过去以后,校内会返回一个xml,(虽然所有的调用都有个response格式的参数,可以选择xml还是json,但是,即使你选了json,它还是返回xml。)xml里要么包含错误码,要么,包含了你需要得到的信息,自己解析一下就行了。 所有的调用过程,包括你返回的参数和传递的参数,还有校内给你的参数,全部是utf8格式的,包括你生成的html。 这里只是一个开发过程的简单描述,不涉及代码,有兴趣的可以去看看校内自己的示例代码,是java的。有必要的话我也可以用代码的方式来写个demo,看大家的需要了。(论坛上面的hello world的demo对于实际开发的帮助几乎为0)。 |
关于我![]() 搜索网站订阅到推荐文章友情链接系统管理 |


最新回复
21/11/2008 11:41
没什么大不了的 商业就是为了赚 钱 你可以不用百度 用百度总归要 付出点什么 忍受点什么
20/11/2008 17:02
同意楼上的!
20/11/2008 14:04
中国国情,我国特色,什么到中国 都会变味的
20/11/2008 13:45
有钱的企业排前面,很正确啊。有 钱的企业还不是在电视上出现的机 会高。医院什么 [...]
19/11/2008 17:46
反正我不喜欢百度的竞价方式!
19/11/2008 16:30
反垄断法只是限制微软用恶意手段 打击竞争对手,并不是限制微软必 须要20块钱卖自 [...]
19/11/2008 16:16
不是法律,那么反垄断法呢?
19/11/2008 15:30
写的好~~~ 世界在变 inte rnet 需要新的生活、思考方式