SuperCache:一个Rails缓存小组件

前言

SuperCache最早由我在负责糗事百科开发工作时,所使用的缓存手段发展而来。当时糗事百科使用了页面整个静态缓存,而页面上诸如登录信息、每个文章的分数评论等,由Ajax载入,这样可以最大化缓存的效率。
但在扩展到两台应用服务器之后,caches_pagecaches_action就显得比较局限了。于是我将页面缓存放入了Memcached,由Nginx直接根据页面地址为key在memcached中查找,如果没有对应缓存才访问Rails层。经过一系列优化,最后变成了现在的SuperCache。现在“暴走漫画”也用的是这套方式。

为什么不用caches_action

caches_action可以指定路径,通过:store_options参数也可以指定rawtrue(默认情况下会序列化,nginx无法读取)以及失效时间,然而caches_action使用了fragment的存储方式,会始终在key前面加上views/,这就使得nginx在处理上变得麻烦。导致caches_action必须走Rails层,导致效率变低。

为什么不用caches_page

caches_page是将页面内容存到磁盘上作为静态文件,这样可以直接通过nginx或者Apache等服务器进行存取,不通过Rails进程,可以极大提高速度。但是caches_page并不支持将页面存入诸如memcache,这样就把caches_pages的应用局限于一台服务器上,要求nginx和rails都在一台服务器上。而且缓存很难共享或者是进行清理。当然也许可以通过nfs或者fuse挂载memcache等方式实现,但这些的增加了部署的复杂度,同时也不知性能如何。

为什么不用rack-cache

rack-cache是符合HTTP标准的透明反向代理,其失效和过期都要使用HTTP头来操作,无法使用Sweeper来清理缓存。和rack-cache作用类似的有Squid和Varnish,但是本人并不了解他们的配置,所以

所以SuperCache的目的就是解决这些问题:可以在多服务器的环境下运作,可以直接由前端的反向代理直接读取缓存而不用经过rails进程。并且可以像Rails原有操作缓存一样进行清理。

使用方法

安装

Gemfile中加入以下

然后命令行下更新:

使用

caches_actioncaches_page一样在Controller中指定所需缓存的页面:

super_caches_page可以有以下参数:

  • cache_path 指定缓存的key,默认是请求的路径
  • expires_in 控制了失效的时间

nginx配置

如果要发挥SuperCache的能力,那必须还得通过nginx的配置:

这样,如果nginx后端有多台Rails服务器,也可以使用静态页面缓存了。

其他好东西

除了上述的简单功能之外,我还正在筹划以下功能:

Dog-Pile Effect

所谓Dog-Pile Effect是指当某个缓存失效的时候,同时有大量请求发现没有缓存,进而请求后端的应用服务要求建立缓存,从而导致服务器卡顿甚至系统宕机的现象。

事实上很多场景下,当缓存失效的时候,只需要其中一个请求去建立新缓存,而其他请求可以使用过期的缓存继续服务。在SuperCache中,我使用Memcache来建立一个锁机制:当缓存失效的时候,只有获得锁的请求可以向后端发送请求并建立新缓存,其他未能获得锁的请求,直接缓存过期的版本。
这样就可以使缓存失效时,系统负载不会突然提升而能平稳过渡。

当然还有一些别的方式来处理这种现象,比如可以在请求之后直接更新缓存(类似Write through机制),而不是等缓存失效之后再处理,但我认为这种方式比较复杂。

目前暴走漫画使用了SuperCache的这种机制之后大大提高了响应并发的能力。

Cache Meta Info

手工处理缓存的清理非常复杂,在SuperCache将来的版本中,我会加入对缓存依赖对象的跟踪,也就是记录和ActiveRecord相关的cache key,当记录发生变更的时候,只需遍历删除对象所影响的Cache key,就可以一次搞定所有问题。

暴走漫画网站已经应用了这套逻辑,相关代码已经提交在了cache_meta_info分支中。


将来我会不断完善SuperCache这个小组件,希望朋友么多多支持,不吝赐教。

关于关闭小组创建的通知

http://www.bling0.com/blinger/guan-yu-guan-bi-xiao-zu-chuang-jian-de-tong-zhi

最近注册的新用户激增,大家在创建小组上有很多想法,所以增加了很多新小组,非常感谢大家的热情,但是由于我没有过多精力来管理这些小组,所以我决定暂时先暂停用户个人创建小组的功能。之前创建的小组以后会进行一些整理,分类,但暂时决定不会关闭。

此功能将于2011年10月12号0:00起暂时关闭。

但是如果任何朋友有心维护一个话题小组,可以发帖申请,阐述一下小组的主题方向管理办法等,然后可以为之创建。

谢谢大家的热情支持。

秘密 – 手机上的私密社区

每个人都有自己的秘密,有些秘密很美好,有些秘密很肮脏,有生活的秘密,有爱情的秘密,有性的秘密。

有些秘密让你快乐,有些秘密让你始终挥之不去,情书,白日梦,这些都是你的秘密。有趣的是,有时候,这些秘密,只有当你分享出来,它才变得更好。

最近糗事百科发布了一款名字叫“秘密”的 iPhone 应用,让你通过这个应用,分享自己的秘密,发现别人的秘密。

秘密的主页上这样写着:

传说,以前人们心中有秘密的时侯,就会跑到山上,找一棵树,在树上挖一个洞,然后把秘密全说进去,再用泥巴把洞封上。秘密就会永远留在那棵树里,没有人会知道。

今天,秘密App提供了一个完全匿名的网络,不能和家人朋友说的秘密,不能在QQ和微博上说的秘密,都可以在这里说出来,透过网络还能获得他人的帮助,真正释放心灵的压力。

秘密是一款免费的 iOS 应用,支持 iPhone,iPod Touch 和 iPad,Android 版也即将发布。

点击这里去苹果商店下载。(分享秘密,没有秘密)

 

更新:收到糗事百科创始人王坚的邮件,补充一些内容:

秘密是一个私密社区,建立的目的是为大家提供一个安全的地方(微博和SNS之外的地方)和可以找人商量一些比较私密的事情,社区的设计类似Quora,最有价值的回复会被顶起来以便于提问者看到。为了兼顾私密和整个社区内容的有效性,目前秘密只能通过app访问。

秘密app是8月15日通过apple审核的,上线之后发现了一些内容刷新的bug,当天就提交了一个新的版本并且写信给apple希望能走一个加急审核的流程,apple处理的很快,更新版在17日正式上线了,用微博和糗事百科网站做了一些推广。

现在应用的注册用户数突破1万,在app store中国lifestyle排名21位。从整个社区氛围来看,已经实现了我们当初的预想,很多人的心事都得到了有价值的回复。秘密的国际版本和android版本即将发布,我们将会尝试用中国区的运营经验将这个产品国际化。

除非注明,本站文章均为原创或编译,转载请注明: 文章来自36氪

GS美神

中学时期看过的一些没看全的漫画,最近几年有幸能在网上补完一下,其中一个是椎名高志的《GS美神-极乐大作战》。当时手头不知道哪里来的一本,但画风和搞笑风格让我印象深刻,由于当时只看了14卷,又正好是主线剧情之一,前后都不知道,一直觉得非常遗憾。所以在网上翻看了一下,以了却心愿,看完之后还有不少感触。

首先,这部漫画在人物设计上,没有把主人公们设计得多么高大完美,而是各有个的缺陷(个性),但内心都还有着人类的一些美好品质。这种比较合理的设计也是我所喜欢的,虽然有点夸张,过度贪财和过度好色。男主角横岛的情况感觉和《机器猫》中的康夫一样,这种近乎普通人的男主角是比较容易引起读者共鸣的,相信他一定程度上也是作者自身的投影。但这种设定其实正是人类本能和文化的反映

整部漫画中在细节上还用了非常不正经的对现实各种讽刺和无厘头的搞笑,比如“我最讨厌少年漫画的模式,升级太快了”,都非常不错。整个漫画起始的风格就是这样比较搞笑的。

由于出了主线之外,还补充了很多搞笑的小单元故事,类似于《机器猫》和《名侦探柯南》(还有《奥特曼》……),但是我并不喜欢这种短剧的形式,一个 是太短,没法展开所以就不过瘾;另外一个每集之间没有什么联系;最后就是模式太接近,不过《GS美神》中的很多小单元设计地还是不错的,不过始终还是比不上主 线剧情。

作者在整个故事的世界观上建立地也还不错,相信作者应该对宗教尤其是佛学有所研究,漫画中反复出现了一些(我感觉上是的)佛学的思想。在漫画过程中可以看出,作者并没有把正义和邪恶绝对地对立起来,很多双方打斗过程中都有搞笑的对白和休息。作者借大BOSS亚舍塔罗的真正目的,还有美神的前世为魔族,以及人类与魔族和其他妖物的感情来揭示。而作者也揭示了人类的所谓“恶”的品质,往往是人类生存的最根本动力;以及要活在当下(结局点出)等等。

而“缘”和“命运”也是漫画非常重要的因素。我尤其喜欢作者对男女主人公之间“缘”的刻画。

首先是从第二卷第二话《爱在时光倒流里》,作者描写男主角误食自我毁灭药,在不断退行的时光中,通过与女主角的缘分脱离了危险,揭示了男女主人公之间剪不断的缘分。接着又在女主角追溯前世的时候,发掘出了男女主角前世的约定,也升华二者的感情。最后又有来自未来的男主角来拯救女主角(未来的妻子)的情节,让男女主人公的感情更近一步。而无论是时光退行、前世约定和来自未来的拯救,最后都以一个“忘”字结尾,让人感触颇深,很有佛学味道。

漫画最大的败笔在于亚舍塔罗篇中,横岛移情别恋到露斯雅身上,最后却又让露斯雅牺牲这一设定。在这个问题上有很多人对此不满,认为作者已经偏离了本应的剧情设定和风格,在整部搞笑漫画中,这里是最令人哀伤的。我认为作者确实处理地有些问题,但还是可以理解和接受的。我认为比较合理的解释是横岛的前世对于露斯雅和美神两者认同上的混合。横岛前世高岛机缘巧合救下美神前世,却不幸送命,两者无法虽然两者也有约定,而横岛今世与露斯雅的相逢,不想重演千年的轮回。其实我认为最后保美神而弃露斯雅,最后让露斯雅通过横岛子女的形式重生,不失为一个折衷的办法,虽然转生会忘记前世的一切——可惜最后作者并没有把这个剧情写出来(但看他后来继续画了3卷,可能是有所意图的)。还可能是因为没有人珍惜横岛,所以才令横岛对这份感情非常珍惜(小绢不算人了),与其爱一个不爱自己的,不如爱一个爱自己的。我其他的猜测诸如作者失恋,或者太太生了个女儿,所以对感情的把握有点偏差,哈哈。我想当时作者自己也很苦恼吧。

再撇开第三者,再看男女主角的感情,其实都是随着横岛自己的成长而推进的。主角美神本身是一个非常独立的人,她无须依靠其他人便自己活得很好,绝对的御姐甚至是女王。而在漫画的大多数时候,横岛基本上就是一个胆小懦夫,美神在骨子里是看不起他的。虽然她和横岛有缘分,并且也确实喜欢,但并没有达到可以身相许的程度,美神和横岛其实更接近于漫画中所说的“女王与狗”的关系,横岛平时不过是个“宠物”,战斗时候基本上也只是辅助而已,如果横岛不在,美神也只是觉得有些寂寞和无聊。女人怎么会找一个比自己差这么多的男人呢,这点在“陌生人的乐土”中,是表现地比较明显的,这里美神明确表示,如果她早知道会和横岛结婚,那不如先把横岛干掉(故事这里顺便讽刺了《机器猫》里面关于康夫未来妻子的设定的改变)。所以,要想推进两者感情,横岛必须从冒失男孩成长真正的男人(纯爷们),也就是成为一个可靠可信的男人,最好实力还要超过美神。这几点都在亚舍塔罗篇中实现了。在“最佳人选”中,美神被横岛击败的时候,就应该认可了这个男人,整个亚舍塔罗篇的最后,彻底被折服了(理想状态,最后美神都说到生小孩了,是否是暗示与横岛未来的结合?)。这点上还是引起了我的共鸣XD。

虽然最后3卷中的故事其实也不错,但是从漫画整体上看来,让人觉得属于蛇尾了,虽然极力描写了几个出现的新人物却没有出现什么实质的剧情,估计作者觉得也没法继续写下去而结尾了吧。

我认为比较好的方式是在审判日结束之后就让整个故事结束,或者在这之后再拿出39卷的大结局也不错,因为39卷的大结局通过梦见200年之后的情况,也是表达了作者灌输在漫画中的人生理念。这也是个非常不错的创意。

总之,我认为《GS美神》在整体上算是一部上乘之作,作者对漫画中的世界观也启发了我所要策划的游戏世界。单纯的打斗和热血其实已经让我不敢兴趣了,人物心理和感情的变化,才让我更加刻骨铭心。其实我对前世今生也很感兴趣啊,哈哈。

Self语言更新

Self语言经过长期缓慢的维护,现在有了一个独立的网站 http://selflanguage.org/ 同时也推出了Self 4.4,特别终于有了Linux x86的版本。

Self这种动态的基于原型的面向对象系统一直是我非常喜欢的,加上曾在视频中见识到的Morphic开发环境(现在在Squeak中也有),也是我非常向往的。

大家可以在其网站上下载 self 4.4 alpha,然后将加压后的Self设置为可执行,运行./Self -s Demo.snap 即可体验!

开心农场

开心农场
开心农场

《开心农场》是校内上非常热门的一个“Social game”。据说对于小团队而言,是获得了巨大的成功的。它的创意其实简单,就是模仿以前一款叫做《牧场物语》的游戏。它给玩家几块地,玩家在商店内购买种子,种在这些地上,种子会发芽、长大、开花结果,之后玩家就可以收获并将产品卖出,作物生长中可能会长虫子,地面可能会干旱、可能会长草,这些会影响作物的生长,因此需要定期上去照料,照料、收获可以让玩家获得经验值,玩家以此升级,不同的作物有着不同的等级。它的引入了一些社会性的元素,增强了SNS上好友的互动,比如,可以帮助朋友照料作物(有少量经验奖励),并且还可以使坏,最绝的是可以偷窃他人的果实,这样你来我往,不亦乐乎。开心农场的一些道具,是需要使用校内豆来购买的,比如防止他人偷窃的狗,加快作物生长的高速化肥(只有最普通的化肥可以用游戏中的货币),以及提供了很多装饰的道具,满足大家的娱乐需求。

其实写这篇文章并非是想介绍开心农场,而是因为最近突然又出现了若干山寨产品:《开心农民》和《阳光牧场》。这二者和《开心农产》的游戏模式完全一样,而且也都是在校内上的。

开心农民
开心农民

刚看见《开心农民》的时候,我还以为是《开心农场》升级了,因为《开心农民》的画面布局和《开心农场》完全一致,可以购买的植物也差不多,图标都差不多,但是多了种花、养鸡和养牛。从评价来看,《开心农民》的玩家有些认为它是对《开心农场》的抄袭,所以评价非常低,而另外一些玩家则认为,《开心农民》增加了新的东西,而且所有道具都可以通过游戏中的货币购买(而不像开心农场,高级东西都需要F币),所以评价又很高。

其中,《开心农民》特别增加的种花,在收获后可以得到鲜花并可作为礼品送给朋友,号称“自己种出来的礼物才够面子”。

从我个人角度来看,《开心农民》对《开心农场》的画面进行了优化,速度也比《开心农场》快(比如载入速度和响应速度,可能是因为人少的缘故)。但是素材和界面外观几乎是赤裸裸的抄袭,这是让我非常惊讶的。

至于目前所有的道具都可以用游戏中的货币购买,我认为只是是为了和《开心农场》竞争,暂时这么做,以后肯定还会出现需要校内豆购买的道具。

阳光牧场
阳光牧场

当《阳光牧场》出现的时候,我彻底晕了,怎么短短的时间内出现这么多克隆产品。《阳光牧场》对《开心农场》的素材做了调整,没有那么多作物,去掉了“除草”这一项,但是《阳光牧场》的游戏节奏非常快,其中的“萝卜”,各个生命周期都只需要几分钟时间,上面两者的生命周期基本一致,做个对比:《开心农场》中,胡萝卜从种子开始的成熟周期是15个小时,而《阳光牧场》中是45分钟(幸好这里的萝卜不能被施肥);《开心农场》中南瓜是45小时成熟,但是《阳光牧场》中则是7个半小时。货币单位也做了调整,使得数值没有上面两者那么大。并且《阳光牧场》增加了一个“增收量”的概念:当作物的健康度良好的时候,其产出会更高。同时出现虫子和干旱的频率非常高。

《阳光牧场》目前还没有什么装饰品,只有邀请朋友可以获得的蝴蝶和狗狗,蝴蝶可以在游戏区域飞来飞去,神奇的是狗只有30天寿命。当然,高级的化肥道具,还是需要校内豆购买的。

《阳光牧场》由于节奏较快,玩起来就没有上面两个轻松。个人的直觉是《阳光牧场》还不是非常完善,不知为何。

《开心农场》的成功带动了山寨版的《开心农民》和《阳光牧场》的出现,居然还都是在同一个校内平台上,我觉得这是对我朝山寨精神的最佳诠释。我认为《阳光牧场》的抄袭还不至于那么赤裸裸,然而《开心农民》就是“高仿品”了。我也在想这个上面会有什么法律问题,也不知道Facebook是否允许他的平台上出现几乎完全相同的应用。但这种竞争方式,对大家都没有好处;我隐约觉得,校内自己的平台,它要起到它应有的责任。

Programming in Erlang

上上周搬了家,把宽带迁了,借着青黄不接的几天不能上网的光景,看完了”Programming in Erlang“。

Erlang是一门面向并发和分布式的编程语言。Programming in Erlang以非常浅显的语言,介绍了Erlang的各个方面的基础,是一本合适的入门教材。作为入门教材,能够提到OTP的一些常用内容和常用的分布式设计的思想,已经非常不错了,加上书后的参考。我更感兴趣的是如何使用erlang来构建高并发、分布式系统,包括它的设计模式、部署模式等等,并没有在本书中涉及,非常关键的OTP、Mnesia也仅仅只涉及了一些基础。当然它还是给出了深入学习的途径。

看完了本书,加上翻阅了一些资料,我对Erlang有了更深入的了解,也纠正了一些错误概念:

过去曾认为Erlang就代表高并发,高并发就代表高性能,同时认为Erlang就只是高并发的代名词。其实,Erlang的并发性能也并非最强。首先Erlang的虚拟机是C写的,其次诸如Haskell、OCaml + JoCaml,以及Python的PyPy,其实都能提供不弱于Erlang的并发能力。

同时Erlang在顺序计算上的性能也不佳,甚至不能超过Python、Lua这类脚本语言(也许是和其本身的特殊性质有关)。所以就更落后于Haskell和OCaml这类可编译的语言。然而即使并发和并行也需要顺序计算,所以单从并发性能上来说,Erlang还不是最强的。

Erlang写的Yaws这个Web服务器,虽然能承受高并发,但性能,尤其是IO性能依然无法与lighttpd、nginx这种C写的Web服务相比——Erlang的虚拟机本身也是C写的。

同时,Erlang本身设计为一个结构化编程语言而非面向对象编程语言。这就令其较难应用更有开发效率的面向对象的项目开发流程和方法。

那么为何Erlang在并发、分布式编程中如此受推崇?我认为因为它本身是并发和并行在语义、处理上的一致,所以它编写此类程序更加方便。同时,它提供的是一个关于并发、并行以及分布式的统一的解决方案,而不仅仅是高并发。它的目的是构建有容错能力、有伸缩性的可靠系统,同时又能最简化编程工作。这就是它的真正的优势。

初到上海工作的生活指南

很多朋友大学毕业之后希望到上海来闯一闯,因为上海是一个国际大都市。不过上海快节奏的生活很容易使刚来上海的同学觉得不适应和苦闷。我是个不容易快速适应新环境的人,在上海花了很久才稍微习惯这里的生活,下面我说一些关键点让准备进军上海的同学们有所准备。

住和行是到上海最关键的两个方面

如果没地方住,那么就不可能留下来工作,如果住的不好,则影响生活质量,所以我们先来讨论如何找个住处。

在上海租个好房子很不容易的。我推荐的找房流程是这样,先找到自己工作单位的地址,然后在图吧丁丁地图上找到他的位置,接着搜索附近的公交线路,根据公交线路来看看附近有哪些小区,并根据各个租房网上该小区的大体租金价格来确定自己要住在哪个范围,最后就是直接到该区域去找一个中介,剩下的事情就是挑一个合适房子。

这么做的原因是由于上海的房东基本上都是不上网的中老年人,而且为了有担保,都会将房源挂到附近的中介,而且这样也可以让中介托管,很多事情不用操心。所以,即使在一些租房网站,能找到的房源多数还是在中介手中。其实这些租房中介也会给我们租房的人提供很多便利,因为他们之间会互相共享很多房源信息,还会带领我们去附近的房源看。

关于房租首付,上海多数地方都是付三押一(预付3个月租金,押一个月租金)或者是付二押二,中介会收取一定比例的中介费,比如月租的60%,一般是房客房东各付30%。有些繁华地段很有可能会要求全部由房客来付,因为房东是很拽的,对比没有地方住的房客来说,他们不急,而对于中介,哪个房东把房源给中介,就是给中介赚钱,中介也会尽量讨好他们。因为多数人一开始会选择合租,至少应该准备5000元现金。

租房应该考虑一下房子的格局,尽量选择卧室朝南方向的,因为上海靠海,湿度大,需要阳光消除湿气,否则对身体影响很大,同时尽量不要选择一楼,一楼靠近地面尤其容易受到湿气影响,而且大楼之间一楼不容易晒到阳光。同时尤其是女生特别要注意这个问题。也可以顺便看看风水哈。

大家还可能会用到宽带。服务最稳定的就是电信的ADSL了,网通和有线通速度常常让人无法接受。然而,电信也是很拽的,办理宽带业务需要身份证,如果是上海本地身份证,可以免交押金(大约是500元)。但是房东通常是不会轻易将身份证外借,原因是:

  • 他们害怕房客随意乱打电话导致巨额费用最后还不交钱就走人
  • 他们担心办理了这个之后,将来的房客又不需要而浪费

所以我刚来上海的时候,和房东协商没结果,最后办理宽带是用的自己的身份证,花了近1000元办了初装,这还只是包月的,如果是上海本地人,当时1800就可以包年了。然而,我觉得办理自己的线也有好处,因为多数房子是没有宽带的——我住的三个地方都没有装,如果每次都和房东协商使用他们的,估计得烦死。

电信办理业务需要到附近的营业厅,具体位置要咨询房东或中介。手续办妥之后一周内上门安装好(每次搬迁我都要催很多次)。
有线通服务态度很差,而且不是每个小区都有有线通,如果有的话,按照他们的话应该是下一个工作日就能上门安装,并且不需要到营业厅办理手续。至于网通我没有接触过。

上海的城市很大,交通也很发达。但是我强烈建议上班或下班的路程时间在一个小时内,并尽量减少转乘。假如花更长时间在路途中,那么会浪费很多时间,这些时间本来可以去做自己想做的事情(如睡个懒觉、玩玩游戏等),然而在车上往往只能无所事事,因为在车上颠簸、车上很挤、没有座位以及神经紧张——防范小偷以及随时准备要下车,使得无法集中精神去做一些有价值的事情,久而久之会对上下班产生厌烦情绪,加上公司的事情,可能会加剧这种感觉。所以应该想办法减少路途上的花费。

在上海,公交车往往比地铁更为方便,因为它更有灵活性,地铁站附近的房子也更加昂贵,所以前面我建议大家找一站公交可以到公司的小区。

刚到上海一定到尽快办理一张交通卡,交通卡可以在绝大多数的地铁站购买,价格为30元。使用交通卡有很多好处:

  • 免去硬币烦恼,乘无人售票公交车找不到硬币是很郁闷的
  • 更方便快捷,省得每次去地铁都要买票
  • 转乘有优惠,一定时间内转乘公交或地铁可以省一元钱

尤其是第一条,我就曾经吃过几次苦头。有一次下班回家一摸口袋,发现只有1.5元,这时车来了,上车之后和司机师傅沟通了一下,还好司机师傅大量,放我上去了。另一次是发现没硬币,就只有5元,只好这么投了。另外没有交通卡,我只好每天到便利店买水换零钱。所以,一定要事先买好交通卡。

交通卡可以在地铁站、部分公交车终点站充值,有些便利店如好德也可以。

这里介绍两个小知识:由于上海很多路都非常长,为了能准确表示某个地点的位置,常常会使用离该地点最近的十字路口的两条路来表示,比如,如果有人告诉你他在“淮海路西藏路”,就表示他处在这两条路的十字路口。如果用在公交上面,前面的那条路则表示车辆停靠在这条路上。这个知识对于打车非常有用。

出租车也是重要的交通工具。上海出租车的起步价为3公里11元,3公里至10公里之内1公里2.1元,超过10公里按每公里3.1计算,等候期间为5分钟算作1公里,这是每天早7点到晚11点白天时段的计费。夜间则起步费14元,超出每公里2.7元,10公里以上每公里4元。 记得主动索要发票,一般来说司机也会主动给你。(我认为上海的出租车和出租车司机的素质应该是中国数一数二的)

其他

其实如果住和行没有问题,其他也没有什么问题了。

还有一个比较重要的就是“吃”,这个我实在没有什么好的建议,我基本上天天在外面的饭店吃快餐、拉面之类的东西。其实自己做饭也是很有意思的。

注意要经常检查邮箱,电费、水费、煤气费、宽带帐单都是邮寄过来的,你可以选择网上支付、去便利店(如好德)、去邮局、去银行交。注意这些帐单都有最后缴款日期,过期的话就只能到相应的业务受理点去交了。

通常大家一开始都会为了降低成本而选择合租,但我建议有以下情况的人不要合租:

  • 情侣同住
  • 养宠物
  • 有洁癖
  • 凡事精打细算、斤斤计较
  • 与合租的另一方不熟

因为大家生活习惯的不同,兴趣爱好不同,工作情况不同等等,可能会产生一些问题和矛盾,往往又碍于面子不会直说,久而久之住在一起会很难过。举几个简单的例子,抢阳台晾衣服、抢洗衣机洗衣服、抢厕所,帐单费用能否平分。另外我也听到过合租或群租发生过失窃的事情,所以,若非关系很好的同学,建议不要选择合租(要解决这些问题,要注意有效沟通)。

还有一个很重要的居住证的问题,有了居住证就相当于上海人了,只有大型国企、外企的员工才能享受这个待遇。但是办理居住证需要租房的合同以及完税证明——一般房东都不会去上税,所以需要办理居住证的同学一定要注意了。

最后

我大致分析了一下到上海来之后遇到的一些困难,并给出了一些办法,希望能对来上海的朋友有所帮助。


g.zhen.ning 问:“…看来手上没1W都不能往上海找工作。是这样的么?”

我认为应该说初始的钱多多益善,钱少就艰苦点,钱多就舒服点。这里举个例子,有一个朋友他说的:当时他来上海的时候身上只有20元,他起初专找包吃包住的工作,工作了一个月,然后拿了几百元钱就换了工作,并到学校附近的小旅馆租了一张床,一天几元的样子。他现在也挺过来了。

如果身上钱不够,可以多找几个同学合租,或者和房东谈,将房租改成付二押一甚至付一押一等,还有可以找公司预支工资等等。

Passenger (mod_rails)介绍

Passenger是一个用于Apache2的模块,用它可以方便、高效地部署Rails应用程序。但目前它还只能用于*nix的操作系统。

Passenger的安装十分简单,在装好了Ruby,有Rubygems的系统中输入:

等待安装完成,然后输入:

然后安装程序便会自动查找编译需要的包(g++、Apache、APR、Rake)并进行编译,如果没有找到相应的包,安装程序还会根据操作系统告诉你要执行哪些操作来安装那些包。安装程序完成编译后,它会给出Apache配置中的指令,只需复制到Apache的配置文件中即可。

当Apache加载了Passenger模块后,Passenger会自动检测每个虚拟主机(VirtualHost)的文档根目录(DocumentRoot)是否是一个合格的Rails应用,如果是,那么它就会自动启动Rails的运行时(这个自动检测可以用RailsAutoDetect off指令来关闭)。

其他的指令和问题可以查看用户手册

Passenger的运行机制和Apache的FastCGI比较类似,可以根据请求的数量动态产生Rails的运行时并接受请求,用户可以自己设定产生运行时的最大数量(RailsMaxPoolSize)。

总体上来说,Passenger的部署是所有Rails部署方式中最简单的,而且支持自动产生运行时实例可以解决很多Mongrel方式的并发问题,相信前途是一片光明。如果能直接进入Ubuntu、Gentoo、CentOS、Rpmforge等软件包仓库,那么还能进一步简化他的安装。唯一的缺憾便是它不支持Windows。

MySQL初级性能调整脚本

来源:http://www.day32.com/MySQL/

MySQL初级性能调整脚本

该脚本从“SHOW STATUS LIKE…”和“SHOW VARIABLES LIKE…”中提取信息来给出调整服务器变量的合理建议。他可以兼容所有MySQL 3.23以及更高版本(包括5.1)。

目前它会对以下内容做出建议:

  • Slow Query Log
  • Max Connections
  • Worker Threads
  • Key Buffer
  • Query Cache
  • Sort Buffer
  • Joins
  • Temp Tables
  • Table (Open & Definition) Cache
  • Table Locking
  • Table Scans (read_buffer)
  • Innodb Status

MySQL复制从服务器延迟跟踪器

检查MySQL复制从服务器状态

MYSQL_BACKUP.sh

更多内容请看原页面:http://www.day32.com/MySQL/