jquery的选择器列表
javascript要选择ID还是比较麻烦的。但是最近知道jquery的如此强大,《锋利的jquery》一书算是帮我总结了吧。其实也就是对于jquery的doc一个中文翻译。
但是为了方便以后自己学习,还是摘抄在这里吧。
总结一下 #xxx 表示选择 id=”xxx”的元素
.xxx表示选择class=”xxx”元素
xxx 表示所有的 xxx 标签元素
1. 基本选择器
$(“#test”) 选取id=”test”的元素
$(“.test”) 选取class=”test”的元素
$(“p”) 选取所有
元素
$(“*”) 选取所有的元素
$(“div,span,p.myClass”) 选取所有
标签的一组元素
2. 层次选择器
$(“div span”) 选取
$(“div > span”) 选取
$(‘.one + div’) 选取class=”one”的下一个
$(‘#two~div’) 选取id=”two”的元素后面的所有
3. 基本过滤选择器
$(“div:first”) 选取所有
$(“div:last”) 选取所有
$(“input:not(.myClass)”) 选取所有class不等于myClass的元素
$(“input:even”) 选取索引是偶数的元素
$(“input:odd”) 选取索引是奇数的元素
$(“input:eq(1)”) 选取索引等于1的元素
$(“input:gt(1)”) 选取索引大于1的元素,但是不包括1
$(“input:lt(1)”) 选取索引小于1的元素,但是不包括1
$(“:header”) 选取网页中所有的
,,…..
$(“div:animated”) 选取正在执行动画的元素
4. 内容过滤选择器
$(“div:contain(‘我’)”) 选取含有文本”我”的
元素
$(“div:empty”) 选取不包含子元素(包括文本元素)的
空元素
$(“div:has(p)”) 选取含有元素的
元素
$(“div:parent”) 选取拥有子元素(包括文本元素)的元素
5. 可见性过滤选择器
$(“:hidden”) 选取所有不可见的元素。包括,
……
$(“div:visible”) 选取所有可见的
元素
6. 属性过滤选择器
$(“div[id]“) 选取拥有属性id的元素
$(“div”) 选取属性title=”test”的
元素
$(“div”) 选取属性title不等于”test”的元素(注意:没有属性title的元素也会被选取)
$(“div”) 选取属性title以”test”开始的
元素
$(“div”) 选取属性title以”test”结束的元素
$(“div”) 选取属性title含有”test”的元素
$(“div[id]“) 选取拥有属性id,并且属性title以”test”结束的
元素
7. 子元素过滤选择器
$(“:nth-child(index/even/odd/equation)”) 为每一个父元素匹配子元素,并且:nth-child(index)的index是从1开始的
$(“ul li:first-child”) 选取每个
中第一个- 元素
$(“ul li:last-child”) 选取每个
中最后一个- 元素
$(“ul li:only-child”) 在中选取是唯一子元素的- 元素
8. 表单对象属性过滤选择器
$(“#form1:enabled”) 选取id为”form1”的表单内的所有可用元素
$(“#form2:disabled”) 选取id为”form2”的表单内所有不可用的元素
$(“input:checked”) 选取所有被选中的元素
$(“select:selected”) 选取所有被选中的选项元素
9. 表单对象属性过滤示例
$(“:input”) 选取所有,
$(“:text”) 选取所有的单行文本框
$(“:password”) 选取所有的密码框
$(“:radio”) 选取所有的单选框
$(“:checkbox”) 选取所有的复选框
$(“:submit”) 选取所有的提交按钮
$(“:image”) 选取所有的图像按钮
$(“:reset”) 选取所有的重置按钮
$(“:button”) 选取所有的按钮
$(“:file”) 选取所有的上传域
$(“:hidden”) 选取所有不可建元素
###########################################
Best regards
Timo Seven
()
Linux System Admin & MySQL DBA
闲聊网站
过去快6个月了,也应该可以说了,毕竟你们也没有给我保密费用。
之前在一个SNS网站的时候,领导高瞻远瞩说要开发日本市场,于是我就发现我们项目组内很多人都是有留学日本经历的,并且还建立了日本办事处,他们主要负责商务和产品设计。
但是到了今年,这个项目组突然就出问题了。主要来自以下几个方面。
首先日本商务开发不成功,虽然日本的头是以前yahoo日本的副总裁,但是我们跟yahoo的合作却不是很顺利,没有导入太多yahoo日本的用户,造成用户数增长缓慢,本来预计的250W用户量迟迟到不了。虽然我们公司和yahoo日本都是老孙投的,但是不知道为什么跟yahoo日本的合作会那么难。
其次是日本的产品设计人员,日本是一个崇尚终身制的国家,所以我们很难招到非常有经验的产品设计人员,虽然有很多有经验的产品设计人员,但是实际上是很难从其它公司挖过来的。因为日本人一般都把自己的公司当家。而我们国内的设计人员根本无法了解日本人的习惯,所以设计的东西也就那样了。
最后一个是领导是否重视,记得项目组刚成立的时候,沉一船同志几乎是每天都来看一下,那时候虽然大家都非常忙,很少有哪天不加班的,但是大家都感觉都过的特充实,特有干劲,也来了一批很有实力的同事。可一年多过去了,这个项目也不温不火下去,注册人数一直没有很好的提高。
根据后台的数据统计,发现日本人的行为习惯还真是太奇怪了。注册流程中居然是在须知部分停留大部分的时间,看来是真够谨慎的。而日本网站也不允许在网站中输入其它网站的密码,所以根本不能象kaixin001这种直接导入msn帐号啥的。而且我们发现日本用户的忠诚度非常高,一旦他注册了你们网站,有20%–30%的人会后面每天都来。但是他们并不喜欢推荐自己的朋友来。而我们网站的对象居然来了很多小朋友,这实在是太出人意外了。
另外一个情况是日本人对于手机非常重视,非常注重网站在手机上的体验。另外不反对为服务支付。这个应该对于国内网站的站长真是太羡慕了。但是日本人也是非常苛刻的,对于网站一个任何小问题都会给你提出要求,而一旦你没有调整的话,那他就会跟好多人说不要来了。并且会投诉到日本通信省。并且日本人对于隐私非常重视,所以我们在一开始的时候犯了很多错误。
虽然我们是2个靠的很近的国家,但是差别太大了。现在的中国到底还有多少人会把公司当成自己的家吗?而且我们很少会为服务付费。免费一直是我们的原则。于是除了电子商务网站,其它网站几乎都是靠网络广告而存活。
不过在移动互联网浪潮即将到来,同时手机支付也在越来越流行的情况下,我想我们也是会为服务付费的。比如现在买windows和office正版的人越来越多了,还有apple store这样的存在,更是促进了这种浪潮的来临。现在国内在手机应用的公司越来越多了。
###########################################
Best regards
Timo Seven
初用addslashes
最近一直忙一个php版本的nginx平台管理系统,需要将很多不同的nginx配置文件存入到mysql中。
但是nginx配置文件中单引号,双引号,斜杠这些符号比较多,一直没法存入到数据库中。于是找了下看看php有什么通过转义的方式存入mysql。发现居然还是有的。在php.ini文件中进行如下设置就好了。
magic_quotes_gpc = On (Get/Post/Cookie) magic_quotes_runtime = Off magic_quotes_sybase = On
经过如上设置就很容易的将Nginx配置文件存入到数据库中,但是会把’(单引号)存为’’(2个单引号)。这种就会让我每次还得把2个单引号转为1个单引号再进行发布。看了上面3个方法的官方文档,居然从5.3后是被默认关闭的,并且在6中就被废弃掉了。那看来只能找其它的代替。还好文档中提到了用addslaashes()方法来代替。用了下还真是比较好用。
使用如下:
addslashes() $str=addslashes($str);
应用运维和系统运维
运维工作对于很多人来说其实就是看一个看说明书的工作。从man page到各种软件的readme,install file都要看。理论上看着挺简单的。但是接触多了这就分了应用运维和系统运维。
我这2个都做过。老实说系统运维是更轻松的,毕竟系统级别的改变一般是比较少的,比如碰到系统内核升级,centos版本升级,数据库版本升级,CDN改造这些不是一直要做的事情。这是一个长期过程。系统级别的更改往往是非常慎重的,得经过非常多的测试,比较和优化才可以进行上线。
系统运维首先需要保证的就是系统的稳定性,毕竟所有应用都是架设在系统平台上的。所以系统运维既是一个基础的工作,又是一个非常重要的工作。说基础是因为它是一切应用的基础的,说重要是因为要是系统不稳定,那何谈应用的稳定性呢?系统稳定性,这个基本是由于驱动导致的,有些驱动问题在一般情况是看不到的,但是一旦在高并发的情况下,比如AS5对于某些品牌的网卡在大流量下网卡会崩溃掉。还好linux的驱动开发者还是非常热心的,一般很快有patch会出来。但是还是由于我们测试不够仔细才会有这样的问题产生。
系统的优化也是非常重要的,曾经有个以前同事说他们的游戏服务器压力很大,主要的压力是在io上,其实就是磁盘上。vmstat看到io部分值非常高。这个有应用导致的,也有系统平台和系统软件导致的。比如这个问题就是由于使用sendfile读写大文件,而改成使用普通的read方法就立刻降下来了。但是有时候还有缓存读写等等原因。另外一个优化是对于系统参数和网络参数的优化。其实这些都是要根据这个服务器具体跑什么应用来决定的。
下面说下当初做应用运维的日子。在那个SNS网站的日子,我就彻底经历过了。应用运维是要保证应用层的稳定性。但是对于大型SNS网站,网站更新是一个常态的过程。于是你就会发现发布成为一个天天进行的东西。但是发布和到底怎么发?发了后的预期结果是什么?到底会对现有应用有什么副作用?这次发布是代码的发布还是一个新的应用组件的发布?
于是应用运维首先要建立一个严格化的发布和测试流程。但是有时候开发会用点非常新的软件为了实现产品需求,但是应用运维如果不知道这个东西,那一旦出了问题你就没法一下子确定问题的症结就麻烦了,特别是对应用的稳定性造成影响后,那你身上的压力就特别大了。
这次velocity会议上淘宝运维的九峰同学的PPT还是非常不错的。基本上对于应用运维做了一个很好的总结。一个好的应用运维基本要在产品设计阶段就要加入进去,这个时候加入进去对于你理解业务逻辑是非常有好处的,同时你可以发现某些肯定会对系统稳定性产生问题的设计提出自己的修改意见,毕竟产品一般都是不怎么懂得技术的。当然我们更关注的是产品的稳定性,至于产品要达到什么效果那是产品仔细考虑的东西。
而在开发阶段,那需要跟开发商量通过哪些现有的开源程序可以达到产品需求,这个时候尽量使用那些你了解的,稳定的,最好版本已经超过0.5的那些软件。而不要使用那些你都不知道它的工作机制的软件。这个过程通常比较容易,毕竟开发也想这是一个稳定的应用,但是有些激进的开发者往往会自己造轮子,那你得明白这个轮子是怎么工作的。曾经在的那个视频公司就有这样的问题,很多东西都是开发自己造的轮子,连数据同步这些都是自己造的,但是由于不够稳定,给我工作造成了极大的麻烦。
测试阶段,分为功能测试和压力测试。大部分公司都是这样分为2种,如果只有功能测试的公司,那你得注意了,应用的稳定性跟压力有时候是成正比的。
发布阶段,这个比较简单,备份备份备份,可回滚可回滚可回滚。
前面这些其实都是应用运维的先期工作,应用运维真正的工作现在才开始呢。通过各种工具查看系统和应用状态。基础的有:cpu使用率,内存使用率,io情况,网络连接数,网络流量等等。业务方面的可以看下现在的pv,uv以及你自己定制的各种事务流程。而这些数据不光是看应用是否有问题的,而且还是以后扩展这个应用还是砍掉这个应用的核心数据。
应用运维的报警工作,比如pop3服务是否正确,应用的内部调用是否正常,有阻塞没? 这些要是能做到预警机制那对你非常有利,在运营还没发现问题的时候你就解决了问题,那不是很好阿。当然这些你需要对这个应用的内部逻辑非常清楚才会方便的建立好。
通过上面你可以发现应用运维包含了部分系统运维的工作。系统运维对于系统软件的工作机制和文档和各种操作系统发行版的文档要非常熟悉。而应用运维有时候更象是一个架构师和应用说明书。
具体的troubshooting就不说了。
###########################################
Best regards
Timo Seven
一个expect自动登录问题解决
批量改配置的时候发现有些机器的密码第一位是 ‘-‘ 这样在expect的send 方法中会转为方法,这样造成了无法自动登录。出现的错误如下:
spawn ssh root@10.xx.xxx.xxx ": must be -i, -h, -s, -null, -0, -raw, -break, or -- while executing "send_user "$PASSWORDr"" (file "./ssh_login" line 20)
google搜索下也没什么答案,只好看下man page,发现有这样一段
The – flag forces the next argument to be interpreted as a string rather than a flag. Any string can be preceded by “–”
whether or not it actually looks like a flag. This provides a reliable mechanism to specify variable strings without being
tripped up by those that accidentally look like flags. (All strings starting with “-“ are reserved for future options.)
于是改成 send – “$PASSWORDr”; 就解决了。
###########################################
Best regards
Timo Seven
个人尊严
公司搞优惠的时候买了一本王小波的《个人尊严》
一直挺喜欢王小波的杂文的,要是他现在还活着的话估计跟刘晓波的待遇差不多。言归正转。先叙述一下里面的一个事情。
小波有一次通宵写东西,一写就写到天亮了,于是就出去走走,发现路边有卖小馄饨的,心想,这一通宵下来,吃点热乎热乎的小馄饨多美阿,于是就想去吃了。他这人吃之前还看看人家的洗碗桶,结果发现一个个碗都泡在脏水中,于是一下子大倒胃口,也没法吃了。小波住的应该是现在是北大西门那边,那边现在还有很多平房,上次我经过确实挺脏的。书中的描写是那边路边都是鸡鸭的内脏阿等等。而这些卖小吃的就住在这种环境下,按现在说法这还是北五环以内呢,可谁能想到这里现在还是如此呢。
结论是一个住在这种环境下的人,你能指望他们卖给你的东西会很干净吗?我想来倒也是这样一个道理。对于公共卫生我们国人一直不太注重,遛狗出门拉屎很多人还是不知道去把屎给丢到垃圾桶中。就算我现在住在万柳附近这种号称高档的地区。我没出国过,但是小波去过,外国人对于公共卫生是极为讲究的,你家里环境人家管不着,但是公共的区域人家都很热心的管。
我们现在处于一个个人尊严缺失的社会中,个人的尊严往往不被尊重,而大家似乎都去尊重金钱和权势。于是就出现了“我爸是李刚”这样的狂妄之语。而我们就成了沉默的大多数。记得有个德国牧师说过”当纳粹屠杀共产党人时,我没有反对,因为我不是共产党人;当纳粹屠杀基督徒的时候,我没有反对,因为我不是基督徒;当纳粹屠杀犹太人的时候,我没有反对,因为我不是犹太人;当纳粹的屠刀对准我的时候,已没有人反对,因为他们全被杀光了。” 这就是为什么这些人会如此的狂妄,如此的无耻。而善良的人们却大多选择了私了,选择了向他们低头。
可预测的非理性
怪诞行为学–可预测的非理性
该书证明了很多很多日常中,我们很多行为都是非理性的。而现在这种非理性的行为其实都是可预测的。
当我们面前遇到很多路可以选择的时候,很多人都会先选择这个,过会再换一个,以此往复下去,结果比任何一条路走到底都差。这就是为什么当我们只有一条路可供选择的时候,我们才会全力以赴。项羽破斧沉舟才会有良好的结果,而项羽肯定也没看过《可预测的非理性》。
而社会规范和市场规范带给我们的快乐居然差别那么大。比如我现在是自觉自愿的写我的blog,我会看一些书来完成这篇blog,而当有人给我钱去写书的时候,我想我的想法会不一样,那样变成了一种任务了,虽然可以坚持下去,但是快乐程度却下降了很多。所以我特别写了好多计算机书籍的steven,估计这哥们写的时候是当作爱好来完成的。其实好多作家的文集都是靠平时一篇一篇牢骚合起来的,比如王小波的一些杂文集。
关于免费的概念。免费会让人神经质。:-) 以前我好像也会这样的。但是作为理性的经济人,更应该看重的成本价和实际价格的差价。而不应该光看是否免费。只是现在物价飞涨,国民党统治区民不聊生,所以从节省角度来说,拿点免费的东西也是应该的,毕竟从支出的角度来说,减少支出是最重要的目标,在民不聊生的时候还有多少人会追求更高的生活品质呢。
相对论,这个可不是那个相对论。在实际生活中,我们都知道有比较才知道好坏。所以有些人以此来混淆我们的正确思维。比如有2W预算我们可以去巴黎,也可以去洛杉矶。这个时候我们会比较难以选择,但是又多出一个选择2W2可以去巴黎加伦敦,这样我想很多人其实都会选择2W2的那个。但是其实我们之前只想去巴黎或者洛杉矶,不经意间我们又被忽悠了。
价格魔力。作者举了很多西医的教训,特别是虚假手术也会让病人感觉好转。但是我想其实中医更是存在这样问题,心理疗法还是非常强大的。当2种物品在我们面前,一个价格昂贵,一个价格便宜,特别是当我们不太了解这2种物品的时候,我们自然而然认为价格贵的会比较好。可事实是否这样只有定价的人才知道吧。不过自从有了网络,这个问题似乎解决了很多,但是现实生活中很多人不用网络的,而且网络上现在托也非常多。
预期的效应。这就是为什么前期宣传的重要性。因为当你有了一些预期之后,你对同一事物的看法会跟有另外一种预期的人会有截然不同的看法。比如这次陈凯歌的《赵氏孤儿》注定不会太成功,因为什么? 我想应该是N年前《无极》改编的《一个馒头引发的血案》。所以大家对于《赵氏孤儿》肯定会有不好的预期,不过有人如果改变《赵氏孤儿》估计也会有很好的效果。老百姓通俗的说法就是成见。
所有权的效应。这个最常见的就是买卖双方讨价还价。特别是大宗商品。比如二手房买卖,二手车买卖。因为大宗商品涉及到金额巨大,而且一般原所有者一定是花了很大的代价买下的,要他降价卖给你是很难的,如果拥有这个商品时间越长,卖主就会越看重它的附加价值。比如你们家的欢乐,你们家对你来说温馨的装修等等。但是这些在买主看来其实基本是一文不值的,你的装修在他看来还得花钱去拆呢。
综上都是作者丹.艾瑞里书中的一些例子。但是我们生活中的非理性远不止这些。我们买卖股票的时候是理性的吗? 我们买房的时候是理性的吗? 当前中国的房地产价格远超过普通百姓的收入,但是还是很多人会去买,难道这些人都是理性的。
我想,要是大家都是理性的话,那我们的房地产价格可不会这样高,这个泡沫在2008年就已经破灭了。但是人性的本质可不是理性,而是冲动阿。以及投机的心理。而在一个冲动投机的大群体中,就一个理性,那是一种幸运吗? 我想估计是的,因为这些非理性的东西终究会走向理性,只是这个过程会让你备受煎熬。
###########################################
Best regards
Timo Seven
velocity china侧记
velocity的2天会议很快就结束了。
大家都围绕着wpo(web performance optimization)分享了很多。
web性能优化总的来说是分前端和后端,但是steve souders告诉我们前端的优化更重要,于是近些年大家围绕着前端做了很多优化,各种前端优化的工具也非常多,有chrome web development tool, speed tracer for firebug, yslow等等工具都是告诉我们如何优化的。以及这次的perload,no-locked js下载等等。
国内很多公司也在前端优化上投入了很多,但是想法都比较老套。比如腾讯现在正在使用的在域名前面带上用户地域等等,这些我在视频网站的时候早就已经这样做了,当时还能细化到各个城市。而CDN也是比较老的东西,大家比拼的其实都是IP列表的精准度和有钱程度,看你能否多布机房和带宽。
基本国内分享的公司就讲个大的概念,什么实时调度阿,什么定制服务器,定制read参数等等。基本上不是不透露技术细节,就是很多公司根本没法实现。
而facebook的2位老兄david wei和changhao jiang分享的东西还是很不错的,细节到位,基本上谁都可以在技术上进行实施的。而另外一个原则就是wpo必须要由一个专门的团队来做,而不是各个业务线自己去完成。不过这个在国内似乎很难实现,因为基本上每个部门都喜欢抢权,有权有的捞啊,这个原则无论在官场还是商场,这种中国特色文化还是非常一致的。
还是来点实际的东西。changhao jiang主要分享了3个技术: quickling, pagecache和bigpipe。提出了一个概念 TTI(time to ineract)通俗的说法就是首屏展现时间,而在首屏展现中我们其实也是有先后的。
罪恶的国际团
国际团就是一个骗子网站,将个人信息随意的贩卖。 骗子电话是15321361813,153-2136-1813
前几日在国际团(www.guojituan.com)上订了一个北京婚博会的门票。结果门票没有送到,倒是骗子的电话来了。非要我留下身份证号码。
这就奇怪了,只是普通门票为什么要身份证号,这个又不是航空公司登机牌一定要身份证,然后进行安检。于是没说,结果对方很不耐烦。绕了好久不肯给,对方就挂了。居然假借说什么男性非要25周岁以上才可以领票,:-),你想手机人家信息也不用找这样的理由。
身份证是一个人非常重要的证件,一旦丢失就非常麻烦,同时就算是复印件也要保存好,特定用途的复印件一定要写上“xxx专用”这样的字样,以防止被滥用。
作为警觉,我就把那个手机号码输入到google里搜索下,原来这个手机号码一定在网上被人登记很多了,都是用来套取个人信息的。
可惜我的手机号码和公司地址都被骗子知道了,还好没留家里的。
…..
$(“div:animated”) 选取正在执行动画的元素
4. 内容过滤选择器
$(“div:contain(‘我’)”) 选取含有文本”我”的
元素
$(“div:empty”) 选取不包含子元素(包括文本元素)的
空元素
$(“div:has(p)”) 选取含有元素的
元素
$(“div:parent”) 选取拥有子元素(包括文本元素)的元素
5. 可见性过滤选择器
$(“:hidden”) 选取所有不可见的元素。包括,
……
$(“div:visible”) 选取所有可见的
元素
6. 属性过滤选择器
$(“div[id]“) 选取拥有属性id的元素
$(“div”) 选取属性title=”test”的
元素
$(“div”) 选取属性title不等于”test”的元素(注意:没有属性title的元素也会被选取)
$(“div”) 选取属性title以”test”开始的
元素
$(“div”) 选取属性title以”test”结束的元素
$(“div”) 选取属性title含有”test”的元素
$(“div[id]“) 选取拥有属性id,并且属性title以”test”结束的
元素
7. 子元素过滤选择器
$(“:nth-child(index/even/odd/equation)”) 为每一个父元素匹配子元素,并且:nth-child(index)的index是从1开始的
$(“ul li:first-child”) 选取每个
中第一个- 元素
$(“ul li:last-child”) 选取每个
中最后一个- 元素
$(“ul li:only-child”) 在中选取是唯一子元素的- 元素
8. 表单对象属性过滤选择器
$(“#form1:enabled”) 选取id为”form1”的表单内的所有可用元素
$(“#form2:disabled”) 选取id为”form2”的表单内所有不可用的元素
$(“input:checked”) 选取所有被选中的元素
$(“select:selected”) 选取所有被选中的选项元素
9. 表单对象属性过滤示例
$(“:input”) 选取所有,
$(“:text”) 选取所有的单行文本框
$(“:password”) 选取所有的密码框
$(“:radio”) 选取所有的单选框
$(“:checkbox”) 选取所有的复选框
$(“:submit”) 选取所有的提交按钮
$(“:image”) 选取所有的图像按钮
$(“:reset”) 选取所有的重置按钮
$(“:button”) 选取所有的按钮
$(“:file”) 选取所有的上传域
$(“:hidden”) 选取所有不可建元素
###########################################
Best regards
Timo Seven
()
Linux System Admin & MySQL DBA
闲聊网站
过去快6个月了,也应该可以说了,毕竟你们也没有给我保密费用。
之前在一个SNS网站的时候,领导高瞻远瞩说要开发日本市场,于是我就发现我们项目组内很多人都是有留学日本经历的,并且还建立了日本办事处,他们主要负责商务和产品设计。
但是到了今年,这个项目组突然就出问题了。主要来自以下几个方面。
首先日本商务开发不成功,虽然日本的头是以前yahoo日本的副总裁,但是我们跟yahoo的合作却不是很顺利,没有导入太多yahoo日本的用户,造成用户数增长缓慢,本来预计的250W用户量迟迟到不了。虽然我们公司和yahoo日本都是老孙投的,但是不知道为什么跟yahoo日本的合作会那么难。
其次是日本的产品设计人员,日本是一个崇尚终身制的国家,所以我们很难招到非常有经验的产品设计人员,虽然有很多有经验的产品设计人员,但是实际上是很难从其它公司挖过来的。因为日本人一般都把自己的公司当家。而我们国内的设计人员根本无法了解日本人的习惯,所以设计的东西也就那样了。
最后一个是领导是否重视,记得项目组刚成立的时候,沉一船同志几乎是每天都来看一下,那时候虽然大家都非常忙,很少有哪天不加班的,但是大家都感觉都过的特充实,特有干劲,也来了一批很有实力的同事。可一年多过去了,这个项目也不温不火下去,注册人数一直没有很好的提高。
根据后台的数据统计,发现日本人的行为习惯还真是太奇怪了。注册流程中居然是在须知部分停留大部分的时间,看来是真够谨慎的。而日本网站也不允许在网站中输入其它网站的密码,所以根本不能象kaixin001这种直接导入msn帐号啥的。而且我们发现日本用户的忠诚度非常高,一旦他注册了你们网站,有20%–30%的人会后面每天都来。但是他们并不喜欢推荐自己的朋友来。而我们网站的对象居然来了很多小朋友,这实在是太出人意外了。
另外一个情况是日本人对于手机非常重视,非常注重网站在手机上的体验。另外不反对为服务支付。这个应该对于国内网站的站长真是太羡慕了。但是日本人也是非常苛刻的,对于网站一个任何小问题都会给你提出要求,而一旦你没有调整的话,那他就会跟好多人说不要来了。并且会投诉到日本通信省。并且日本人对于隐私非常重视,所以我们在一开始的时候犯了很多错误。
虽然我们是2个靠的很近的国家,但是差别太大了。现在的中国到底还有多少人会把公司当成自己的家吗?而且我们很少会为服务付费。免费一直是我们的原则。于是除了电子商务网站,其它网站几乎都是靠网络广告而存活。
不过在移动互联网浪潮即将到来,同时手机支付也在越来越流行的情况下,我想我们也是会为服务付费的。比如现在买windows和office正版的人越来越多了,还有apple store这样的存在,更是促进了这种浪潮的来临。现在国内在手机应用的公司越来越多了。
###########################################
Best regards
Timo Seven
初用addslashes
最近一直忙一个php版本的nginx平台管理系统,需要将很多不同的nginx配置文件存入到mysql中。
但是nginx配置文件中单引号,双引号,斜杠这些符号比较多,一直没法存入到数据库中。于是找了下看看php有什么通过转义的方式存入mysql。发现居然还是有的。在php.ini文件中进行如下设置就好了。
magic_quotes_gpc = On (Get/Post/Cookie) magic_quotes_runtime = Off magic_quotes_sybase = On
经过如上设置就很容易的将Nginx配置文件存入到数据库中,但是会把’(单引号)存为’’(2个单引号)。这种就会让我每次还得把2个单引号转为1个单引号再进行发布。看了上面3个方法的官方文档,居然从5.3后是被默认关闭的,并且在6中就被废弃掉了。那看来只能找其它的代替。还好文档中提到了用addslaashes()方法来代替。用了下还真是比较好用。
使用如下:
addslashes() $str=addslashes($str);
应用运维和系统运维
运维工作对于很多人来说其实就是看一个看说明书的工作。从man page到各种软件的readme,install file都要看。理论上看着挺简单的。但是接触多了这就分了应用运维和系统运维。
我这2个都做过。老实说系统运维是更轻松的,毕竟系统级别的改变一般是比较少的,比如碰到系统内核升级,centos版本升级,数据库版本升级,CDN改造这些不是一直要做的事情。这是一个长期过程。系统级别的更改往往是非常慎重的,得经过非常多的测试,比较和优化才可以进行上线。
系统运维首先需要保证的就是系统的稳定性,毕竟所有应用都是架设在系统平台上的。所以系统运维既是一个基础的工作,又是一个非常重要的工作。说基础是因为它是一切应用的基础的,说重要是因为要是系统不稳定,那何谈应用的稳定性呢?系统稳定性,这个基本是由于驱动导致的,有些驱动问题在一般情况是看不到的,但是一旦在高并发的情况下,比如AS5对于某些品牌的网卡在大流量下网卡会崩溃掉。还好linux的驱动开发者还是非常热心的,一般很快有patch会出来。但是还是由于我们测试不够仔细才会有这样的问题产生。
系统的优化也是非常重要的,曾经有个以前同事说他们的游戏服务器压力很大,主要的压力是在io上,其实就是磁盘上。vmstat看到io部分值非常高。这个有应用导致的,也有系统平台和系统软件导致的。比如这个问题就是由于使用sendfile读写大文件,而改成使用普通的read方法就立刻降下来了。但是有时候还有缓存读写等等原因。另外一个优化是对于系统参数和网络参数的优化。其实这些都是要根据这个服务器具体跑什么应用来决定的。
下面说下当初做应用运维的日子。在那个SNS网站的日子,我就彻底经历过了。应用运维是要保证应用层的稳定性。但是对于大型SNS网站,网站更新是一个常态的过程。于是你就会发现发布成为一个天天进行的东西。但是发布和到底怎么发?发了后的预期结果是什么?到底会对现有应用有什么副作用?这次发布是代码的发布还是一个新的应用组件的发布?
于是应用运维首先要建立一个严格化的发布和测试流程。但是有时候开发会用点非常新的软件为了实现产品需求,但是应用运维如果不知道这个东西,那一旦出了问题你就没法一下子确定问题的症结就麻烦了,特别是对应用的稳定性造成影响后,那你身上的压力就特别大了。
这次velocity会议上淘宝运维的九峰同学的PPT还是非常不错的。基本上对于应用运维做了一个很好的总结。一个好的应用运维基本要在产品设计阶段就要加入进去,这个时候加入进去对于你理解业务逻辑是非常有好处的,同时你可以发现某些肯定会对系统稳定性产生问题的设计提出自己的修改意见,毕竟产品一般都是不怎么懂得技术的。当然我们更关注的是产品的稳定性,至于产品要达到什么效果那是产品仔细考虑的东西。
而在开发阶段,那需要跟开发商量通过哪些现有的开源程序可以达到产品需求,这个时候尽量使用那些你了解的,稳定的,最好版本已经超过0.5的那些软件。而不要使用那些你都不知道它的工作机制的软件。这个过程通常比较容易,毕竟开发也想这是一个稳定的应用,但是有些激进的开发者往往会自己造轮子,那你得明白这个轮子是怎么工作的。曾经在的那个视频公司就有这样的问题,很多东西都是开发自己造的轮子,连数据同步这些都是自己造的,但是由于不够稳定,给我工作造成了极大的麻烦。
测试阶段,分为功能测试和压力测试。大部分公司都是这样分为2种,如果只有功能测试的公司,那你得注意了,应用的稳定性跟压力有时候是成正比的。
发布阶段,这个比较简单,备份备份备份,可回滚可回滚可回滚。
前面这些其实都是应用运维的先期工作,应用运维真正的工作现在才开始呢。通过各种工具查看系统和应用状态。基础的有:cpu使用率,内存使用率,io情况,网络连接数,网络流量等等。业务方面的可以看下现在的pv,uv以及你自己定制的各种事务流程。而这些数据不光是看应用是否有问题的,而且还是以后扩展这个应用还是砍掉这个应用的核心数据。
应用运维的报警工作,比如pop3服务是否正确,应用的内部调用是否正常,有阻塞没? 这些要是能做到预警机制那对你非常有利,在运营还没发现问题的时候你就解决了问题,那不是很好阿。当然这些你需要对这个应用的内部逻辑非常清楚才会方便的建立好。
通过上面你可以发现应用运维包含了部分系统运维的工作。系统运维对于系统软件的工作机制和文档和各种操作系统发行版的文档要非常熟悉。而应用运维有时候更象是一个架构师和应用说明书。
具体的troubshooting就不说了。
###########################################
Best regards
Timo Seven
一个expect自动登录问题解决
批量改配置的时候发现有些机器的密码第一位是 ‘-‘ 这样在expect的send 方法中会转为方法,这样造成了无法自动登录。出现的错误如下:
spawn ssh root@10.xx.xxx.xxx ": must be -i, -h, -s, -null, -0, -raw, -break, or -- while executing "send_user "$PASSWORDr"" (file "./ssh_login" line 20)
google搜索下也没什么答案,只好看下man page,发现有这样一段
The – flag forces the next argument to be interpreted as a string rather than a flag. Any string can be preceded by “–”
whether or not it actually looks like a flag. This provides a reliable mechanism to specify variable strings without being
tripped up by those that accidentally look like flags. (All strings starting with “-“ are reserved for future options.)
于是改成 send – “$PASSWORDr”; 就解决了。
###########################################
Best regards
Timo Seven
个人尊严
公司搞优惠的时候买了一本王小波的《个人尊严》
一直挺喜欢王小波的杂文的,要是他现在还活着的话估计跟刘晓波的待遇差不多。言归正转。先叙述一下里面的一个事情。
小波有一次通宵写东西,一写就写到天亮了,于是就出去走走,发现路边有卖小馄饨的,心想,这一通宵下来,吃点热乎热乎的小馄饨多美阿,于是就想去吃了。他这人吃之前还看看人家的洗碗桶,结果发现一个个碗都泡在脏水中,于是一下子大倒胃口,也没法吃了。小波住的应该是现在是北大西门那边,那边现在还有很多平房,上次我经过确实挺脏的。书中的描写是那边路边都是鸡鸭的内脏阿等等。而这些卖小吃的就住在这种环境下,按现在说法这还是北五环以内呢,可谁能想到这里现在还是如此呢。
结论是一个住在这种环境下的人,你能指望他们卖给你的东西会很干净吗?我想来倒也是这样一个道理。对于公共卫生我们国人一直不太注重,遛狗出门拉屎很多人还是不知道去把屎给丢到垃圾桶中。就算我现在住在万柳附近这种号称高档的地区。我没出国过,但是小波去过,外国人对于公共卫生是极为讲究的,你家里环境人家管不着,但是公共的区域人家都很热心的管。
我们现在处于一个个人尊严缺失的社会中,个人的尊严往往不被尊重,而大家似乎都去尊重金钱和权势。于是就出现了“我爸是李刚”这样的狂妄之语。而我们就成了沉默的大多数。记得有个德国牧师说过”当纳粹屠杀共产党人时,我没有反对,因为我不是共产党人;当纳粹屠杀基督徒的时候,我没有反对,因为我不是基督徒;当纳粹屠杀犹太人的时候,我没有反对,因为我不是犹太人;当纳粹的屠刀对准我的时候,已没有人反对,因为他们全被杀光了。” 这就是为什么这些人会如此的狂妄,如此的无耻。而善良的人们却大多选择了私了,选择了向他们低头。
可预测的非理性
怪诞行为学–可预测的非理性
该书证明了很多很多日常中,我们很多行为都是非理性的。而现在这种非理性的行为其实都是可预测的。
当我们面前遇到很多路可以选择的时候,很多人都会先选择这个,过会再换一个,以此往复下去,结果比任何一条路走到底都差。这就是为什么当我们只有一条路可供选择的时候,我们才会全力以赴。项羽破斧沉舟才会有良好的结果,而项羽肯定也没看过《可预测的非理性》。
而社会规范和市场规范带给我们的快乐居然差别那么大。比如我现在是自觉自愿的写我的blog,我会看一些书来完成这篇blog,而当有人给我钱去写书的时候,我想我的想法会不一样,那样变成了一种任务了,虽然可以坚持下去,但是快乐程度却下降了很多。所以我特别写了好多计算机书籍的steven,估计这哥们写的时候是当作爱好来完成的。其实好多作家的文集都是靠平时一篇一篇牢骚合起来的,比如王小波的一些杂文集。
关于免费的概念。免费会让人神经质。:-) 以前我好像也会这样的。但是作为理性的经济人,更应该看重的成本价和实际价格的差价。而不应该光看是否免费。只是现在物价飞涨,国民党统治区民不聊生,所以从节省角度来说,拿点免费的东西也是应该的,毕竟从支出的角度来说,减少支出是最重要的目标,在民不聊生的时候还有多少人会追求更高的生活品质呢。
相对论,这个可不是那个相对论。在实际生活中,我们都知道有比较才知道好坏。所以有些人以此来混淆我们的正确思维。比如有2W预算我们可以去巴黎,也可以去洛杉矶。这个时候我们会比较难以选择,但是又多出一个选择2W2可以去巴黎加伦敦,这样我想很多人其实都会选择2W2的那个。但是其实我们之前只想去巴黎或者洛杉矶,不经意间我们又被忽悠了。
价格魔力。作者举了很多西医的教训,特别是虚假手术也会让病人感觉好转。但是我想其实中医更是存在这样问题,心理疗法还是非常强大的。当2种物品在我们面前,一个价格昂贵,一个价格便宜,特别是当我们不太了解这2种物品的时候,我们自然而然认为价格贵的会比较好。可事实是否这样只有定价的人才知道吧。不过自从有了网络,这个问题似乎解决了很多,但是现实生活中很多人不用网络的,而且网络上现在托也非常多。
预期的效应。这就是为什么前期宣传的重要性。因为当你有了一些预期之后,你对同一事物的看法会跟有另外一种预期的人会有截然不同的看法。比如这次陈凯歌的《赵氏孤儿》注定不会太成功,因为什么? 我想应该是N年前《无极》改编的《一个馒头引发的血案》。所以大家对于《赵氏孤儿》肯定会有不好的预期,不过有人如果改变《赵氏孤儿》估计也会有很好的效果。老百姓通俗的说法就是成见。
所有权的效应。这个最常见的就是买卖双方讨价还价。特别是大宗商品。比如二手房买卖,二手车买卖。因为大宗商品涉及到金额巨大,而且一般原所有者一定是花了很大的代价买下的,要他降价卖给你是很难的,如果拥有这个商品时间越长,卖主就会越看重它的附加价值。比如你们家的欢乐,你们家对你来说温馨的装修等等。但是这些在买主看来其实基本是一文不值的,你的装修在他看来还得花钱去拆呢。
综上都是作者丹.艾瑞里书中的一些例子。但是我们生活中的非理性远不止这些。我们买卖股票的时候是理性的吗? 我们买房的时候是理性的吗? 当前中国的房地产价格远超过普通百姓的收入,但是还是很多人会去买,难道这些人都是理性的。
我想,要是大家都是理性的话,那我们的房地产价格可不会这样高,这个泡沫在2008年就已经破灭了。但是人性的本质可不是理性,而是冲动阿。以及投机的心理。而在一个冲动投机的大群体中,就一个理性,那是一种幸运吗? 我想估计是的,因为这些非理性的东西终究会走向理性,只是这个过程会让你备受煎熬。
###########################################
Best regards
Timo Seven
velocity china侧记
velocity的2天会议很快就结束了。
大家都围绕着wpo(web performance optimization)分享了很多。
web性能优化总的来说是分前端和后端,但是steve souders告诉我们前端的优化更重要,于是近些年大家围绕着前端做了很多优化,各种前端优化的工具也非常多,有chrome web development tool, speed tracer for firebug, yslow等等工具都是告诉我们如何优化的。以及这次的perload,no-locked js下载等等。
国内很多公司也在前端优化上投入了很多,但是想法都比较老套。比如腾讯现在正在使用的在域名前面带上用户地域等等,这些我在视频网站的时候早就已经这样做了,当时还能细化到各个城市。而CDN也是比较老的东西,大家比拼的其实都是IP列表的精准度和有钱程度,看你能否多布机房和带宽。
基本国内分享的公司就讲个大的概念,什么实时调度阿,什么定制服务器,定制read参数等等。基本上不是不透露技术细节,就是很多公司根本没法实现。
而facebook的2位老兄david wei和changhao jiang分享的东西还是很不错的,细节到位,基本上谁都可以在技术上进行实施的。而另外一个原则就是wpo必须要由一个专门的团队来做,而不是各个业务线自己去完成。不过这个在国内似乎很难实现,因为基本上每个部门都喜欢抢权,有权有的捞啊,这个原则无论在官场还是商场,这种中国特色文化还是非常一致的。
还是来点实际的东西。changhao jiang主要分享了3个技术: quickling, pagecache和bigpipe。提出了一个概念 TTI(time to ineract)通俗的说法就是首屏展现时间,而在首屏展现中我们其实也是有先后的。
罪恶的国际团
国际团就是一个骗子网站,将个人信息随意的贩卖。 骗子电话是15321361813,153-2136-1813
前几日在国际团(www.guojituan.com)上订了一个北京婚博会的门票。结果门票没有送到,倒是骗子的电话来了。非要我留下身份证号码。
这就奇怪了,只是普通门票为什么要身份证号,这个又不是航空公司登机牌一定要身份证,然后进行安检。于是没说,结果对方很不耐烦。绕了好久不肯给,对方就挂了。居然假借说什么男性非要25周岁以上才可以领票,:-),你想手机人家信息也不用找这样的理由。
身份证是一个人非常重要的证件,一旦丢失就非常麻烦,同时就算是复印件也要保存好,特定用途的复印件一定要写上“xxx专用”这样的字样,以防止被滥用。
作为警觉,我就把那个手机号码输入到google里搜索下,原来这个手机号码一定在网上被人登记很多了,都是用来套取个人信息的。
可惜我的手机号码和公司地址都被骗子知道了,还好没留家里的。
4. 内容过滤选择器
$(“div:contain(‘我’)”) 选取含有文本”我”的
$(“div:empty”) 选取不包含子元素(包括文本元素)的
$(“div:has(p)”) 选取含有
元素的
$(“div:parent”) 选取拥有子元素(包括文本元素)的
5. 可见性过滤选择器
$(“:hidden”) 选取所有不可见的元素。包括,
$(“div:visible”) 选取所有可见的
6. 属性过滤选择器
$(“div[id]“) 选取拥有属性id的元素
$(“div”) 选取属性title=”test”的
$(“div”) 选取属性title不等于”test”的
$(“div”) 选取属性title以”test”开始的
$(“div”) 选取属性title以”test”结束的
$(“div”) 选取属性title含有”test”的
$(“div[id]“) 选取拥有属性id,并且属性title以”test”结束的
7. 子元素过滤选择器
$(“:nth-child(index/even/odd/equation)”) 为每一个父元素匹配子元素,并且:nth-child(index)的index是从1开始的
$(“ul li:first-child”) 选取每个
- 中第一个
- 元素
$(“ul li:last-child”) 选取每个
- 中最后一个
- 元素
$(“ul li:only-child”) 在- 中选取是唯一子元素的
- 元素
8. 表单对象属性过滤选择器
$(“#form1:enabled”) 选取id为”form1”的表单内的所有可用元素$(“#form2:disabled”) 选取id为”form2”的表单内所有不可用的元素
$(“input:checked”) 选取所有被选中的元素
$(“select:selected”) 选取所有被选中的选项元素9. 表单对象属性过滤示例
$(“:input”) 选取所有,$(“:text”) 选取所有的单行文本框
$(“:password”) 选取所有的密码框
$(“:radio”) 选取所有的单选框
$(“:checkbox”) 选取所有的复选框
$(“:submit”) 选取所有的提交按钮
$(“:image”) 选取所有的图像按钮
$(“:reset”) 选取所有的重置按钮$(“:button”) 选取所有的按钮
$(“:file”) 选取所有的上传域
$(“:hidden”) 选取所有不可建元素###########################################
Best regards
Timo Seven()
Linux System Admin & MySQL DBA
- 元素
- 元素
闲聊网站
过去快6个月了,也应该可以说了,毕竟你们也没有给我保密费用。
之前在一个SNS网站的时候,领导高瞻远瞩说要开发日本市场,于是我就发现我们项目组内很多人都是有留学日本经历的,并且还建立了日本办事处,他们主要负责商务和产品设计。
但是到了今年,这个项目组突然就出问题了。主要来自以下几个方面。
首先日本商务开发不成功,虽然日本的头是以前yahoo日本的副总裁,但是我们跟yahoo的合作却不是很顺利,没有导入太多yahoo日本的用户,造成用户数增长缓慢,本来预计的250W用户量迟迟到不了。虽然我们公司和yahoo日本都是老孙投的,但是不知道为什么跟yahoo日本的合作会那么难。
其次是日本的产品设计人员,日本是一个崇尚终身制的国家,所以我们很难招到非常有经验的产品设计人员,虽然有很多有经验的产品设计人员,但是实际上是很难从其它公司挖过来的。因为日本人一般都把自己的公司当家。而我们国内的设计人员根本无法了解日本人的习惯,所以设计的东西也就那样了。
最后一个是领导是否重视,记得项目组刚成立的时候,沉一船同志几乎是每天都来看一下,那时候虽然大家都非常忙,很少有哪天不加班的,但是大家都感觉都过的特充实,特有干劲,也来了一批很有实力的同事。可一年多过去了,这个项目也不温不火下去,注册人数一直没有很好的提高。
根据后台的数据统计,发现日本人的行为习惯还真是太奇怪了。注册流程中居然是在须知部分停留大部分的时间,看来是真够谨慎的。而日本网站也不允许在网站中输入其它网站的密码,所以根本不能象kaixin001这种直接导入msn帐号啥的。而且我们发现日本用户的忠诚度非常高,一旦他注册了你们网站,有20%–30%的人会后面每天都来。但是他们并不喜欢推荐自己的朋友来。而我们网站的对象居然来了很多小朋友,这实在是太出人意外了。
另外一个情况是日本人对于手机非常重视,非常注重网站在手机上的体验。另外不反对为服务支付。这个应该对于国内网站的站长真是太羡慕了。但是日本人也是非常苛刻的,对于网站一个任何小问题都会给你提出要求,而一旦你没有调整的话,那他就会跟好多人说不要来了。并且会投诉到日本通信省。并且日本人对于隐私非常重视,所以我们在一开始的时候犯了很多错误。
虽然我们是2个靠的很近的国家,但是差别太大了。现在的中国到底还有多少人会把公司当成自己的家吗?而且我们很少会为服务付费。免费一直是我们的原则。于是除了电子商务网站,其它网站几乎都是靠网络广告而存活。
不过在移动互联网浪潮即将到来,同时手机支付也在越来越流行的情况下,我想我们也是会为服务付费的。比如现在买windows和office正版的人越来越多了,还有apple store这样的存在,更是促进了这种浪潮的来临。现在国内在手机应用的公司越来越多了。
###########################################
Best regards
Timo Seven
初用addslashes
最近一直忙一个php版本的nginx平台管理系统,需要将很多不同的nginx配置文件存入到mysql中。
但是nginx配置文件中单引号,双引号,斜杠这些符号比较多,一直没法存入到数据库中。于是找了下看看php有什么通过转义的方式存入mysql。发现居然还是有的。在php.ini文件中进行如下设置就好了。
magic_quotes_gpc = On (Get/Post/Cookie) magic_quotes_runtime = Off magic_quotes_sybase = On
经过如上设置就很容易的将Nginx配置文件存入到数据库中,但是会把’(单引号)存为’’(2个单引号)。这种就会让我每次还得把2个单引号转为1个单引号再进行发布。看了上面3个方法的官方文档,居然从5.3后是被默认关闭的,并且在6中就被废弃掉了。那看来只能找其它的代替。还好文档中提到了用addslaashes()方法来代替。用了下还真是比较好用。
使用如下:
addslashes() $str=addslashes($str);
应用运维和系统运维
运维工作对于很多人来说其实就是看一个看说明书的工作。从man page到各种软件的readme,install file都要看。理论上看着挺简单的。但是接触多了这就分了应用运维和系统运维。
我这2个都做过。老实说系统运维是更轻松的,毕竟系统级别的改变一般是比较少的,比如碰到系统内核升级,centos版本升级,数据库版本升级,CDN改造这些不是一直要做的事情。这是一个长期过程。系统级别的更改往往是非常慎重的,得经过非常多的测试,比较和优化才可以进行上线。
系统运维首先需要保证的就是系统的稳定性,毕竟所有应用都是架设在系统平台上的。所以系统运维既是一个基础的工作,又是一个非常重要的工作。说基础是因为它是一切应用的基础的,说重要是因为要是系统不稳定,那何谈应用的稳定性呢?系统稳定性,这个基本是由于驱动导致的,有些驱动问题在一般情况是看不到的,但是一旦在高并发的情况下,比如AS5对于某些品牌的网卡在大流量下网卡会崩溃掉。还好linux的驱动开发者还是非常热心的,一般很快有patch会出来。但是还是由于我们测试不够仔细才会有这样的问题产生。
系统的优化也是非常重要的,曾经有个以前同事说他们的游戏服务器压力很大,主要的压力是在io上,其实就是磁盘上。vmstat看到io部分值非常高。这个有应用导致的,也有系统平台和系统软件导致的。比如这个问题就是由于使用sendfile读写大文件,而改成使用普通的read方法就立刻降下来了。但是有时候还有缓存读写等等原因。另外一个优化是对于系统参数和网络参数的优化。其实这些都是要根据这个服务器具体跑什么应用来决定的。
下面说下当初做应用运维的日子。在那个SNS网站的日子,我就彻底经历过了。应用运维是要保证应用层的稳定性。但是对于大型SNS网站,网站更新是一个常态的过程。于是你就会发现发布成为一个天天进行的东西。但是发布和到底怎么发?发了后的预期结果是什么?到底会对现有应用有什么副作用?这次发布是代码的发布还是一个新的应用组件的发布?
于是应用运维首先要建立一个严格化的发布和测试流程。但是有时候开发会用点非常新的软件为了实现产品需求,但是应用运维如果不知道这个东西,那一旦出了问题你就没法一下子确定问题的症结就麻烦了,特别是对应用的稳定性造成影响后,那你身上的压力就特别大了。
这次velocity会议上淘宝运维的九峰同学的PPT还是非常不错的。基本上对于应用运维做了一个很好的总结。一个好的应用运维基本要在产品设计阶段就要加入进去,这个时候加入进去对于你理解业务逻辑是非常有好处的,同时你可以发现某些肯定会对系统稳定性产生问题的设计提出自己的修改意见,毕竟产品一般都是不怎么懂得技术的。当然我们更关注的是产品的稳定性,至于产品要达到什么效果那是产品仔细考虑的东西。
而在开发阶段,那需要跟开发商量通过哪些现有的开源程序可以达到产品需求,这个时候尽量使用那些你了解的,稳定的,最好版本已经超过0.5的那些软件。而不要使用那些你都不知道它的工作机制的软件。这个过程通常比较容易,毕竟开发也想这是一个稳定的应用,但是有些激进的开发者往往会自己造轮子,那你得明白这个轮子是怎么工作的。曾经在的那个视频公司就有这样的问题,很多东西都是开发自己造的轮子,连数据同步这些都是自己造的,但是由于不够稳定,给我工作造成了极大的麻烦。
测试阶段,分为功能测试和压力测试。大部分公司都是这样分为2种,如果只有功能测试的公司,那你得注意了,应用的稳定性跟压力有时候是成正比的。
发布阶段,这个比较简单,备份备份备份,可回滚可回滚可回滚。
前面这些其实都是应用运维的先期工作,应用运维真正的工作现在才开始呢。通过各种工具查看系统和应用状态。基础的有:cpu使用率,内存使用率,io情况,网络连接数,网络流量等等。业务方面的可以看下现在的pv,uv以及你自己定制的各种事务流程。而这些数据不光是看应用是否有问题的,而且还是以后扩展这个应用还是砍掉这个应用的核心数据。
应用运维的报警工作,比如pop3服务是否正确,应用的内部调用是否正常,有阻塞没? 这些要是能做到预警机制那对你非常有利,在运营还没发现问题的时候你就解决了问题,那不是很好阿。当然这些你需要对这个应用的内部逻辑非常清楚才会方便的建立好。
通过上面你可以发现应用运维包含了部分系统运维的工作。系统运维对于系统软件的工作机制和文档和各种操作系统发行版的文档要非常熟悉。而应用运维有时候更象是一个架构师和应用说明书。
具体的troubshooting就不说了。
###########################################
Best regards
Timo Seven
一个expect自动登录问题解决
批量改配置的时候发现有些机器的密码第一位是 ‘-‘ 这样在expect的send 方法中会转为方法,这样造成了无法自动登录。出现的错误如下:
spawn ssh root@10.xx.xxx.xxx ": must be -i, -h, -s, -null, -0, -raw, -break, or -- while executing "send_user "$PASSWORDr"" (file "./ssh_login" line 20)
google搜索下也没什么答案,只好看下man page,发现有这样一段
The – flag forces the next argument to be interpreted as a string rather than a flag. Any string can be preceded by “–”
whether or not it actually looks like a flag. This provides a reliable mechanism to specify variable strings without being
tripped up by those that accidentally look like flags. (All strings starting with “-“ are reserved for future options.)
于是改成 send – “$PASSWORDr”; 就解决了。
###########################################
Best regards
Timo Seven
个人尊严
公司搞优惠的时候买了一本王小波的《个人尊严》
一直挺喜欢王小波的杂文的,要是他现在还活着的话估计跟刘晓波的待遇差不多。言归正转。先叙述一下里面的一个事情。
小波有一次通宵写东西,一写就写到天亮了,于是就出去走走,发现路边有卖小馄饨的,心想,这一通宵下来,吃点热乎热乎的小馄饨多美阿,于是就想去吃了。他这人吃之前还看看人家的洗碗桶,结果发现一个个碗都泡在脏水中,于是一下子大倒胃口,也没法吃了。小波住的应该是现在是北大西门那边,那边现在还有很多平房,上次我经过确实挺脏的。书中的描写是那边路边都是鸡鸭的内脏阿等等。而这些卖小吃的就住在这种环境下,按现在说法这还是北五环以内呢,可谁能想到这里现在还是如此呢。
结论是一个住在这种环境下的人,你能指望他们卖给你的东西会很干净吗?我想来倒也是这样一个道理。对于公共卫生我们国人一直不太注重,遛狗出门拉屎很多人还是不知道去把屎给丢到垃圾桶中。就算我现在住在万柳附近这种号称高档的地区。我没出国过,但是小波去过,外国人对于公共卫生是极为讲究的,你家里环境人家管不着,但是公共的区域人家都很热心的管。
我们现在处于一个个人尊严缺失的社会中,个人的尊严往往不被尊重,而大家似乎都去尊重金钱和权势。于是就出现了“我爸是李刚”这样的狂妄之语。而我们就成了沉默的大多数。记得有个德国牧师说过”当纳粹屠杀共产党人时,我没有反对,因为我不是共产党人;当纳粹屠杀基督徒的时候,我没有反对,因为我不是基督徒;当纳粹屠杀犹太人的时候,我没有反对,因为我不是犹太人;当纳粹的屠刀对准我的时候,已没有人反对,因为他们全被杀光了。” 这就是为什么这些人会如此的狂妄,如此的无耻。而善良的人们却大多选择了私了,选择了向他们低头。
可预测的非理性
怪诞行为学–可预测的非理性
该书证明了很多很多日常中,我们很多行为都是非理性的。而现在这种非理性的行为其实都是可预测的。
当我们面前遇到很多路可以选择的时候,很多人都会先选择这个,过会再换一个,以此往复下去,结果比任何一条路走到底都差。这就是为什么当我们只有一条路可供选择的时候,我们才会全力以赴。项羽破斧沉舟才会有良好的结果,而项羽肯定也没看过《可预测的非理性》。
而社会规范和市场规范带给我们的快乐居然差别那么大。比如我现在是自觉自愿的写我的blog,我会看一些书来完成这篇blog,而当有人给我钱去写书的时候,我想我的想法会不一样,那样变成了一种任务了,虽然可以坚持下去,但是快乐程度却下降了很多。所以我特别写了好多计算机书籍的steven,估计这哥们写的时候是当作爱好来完成的。其实好多作家的文集都是靠平时一篇一篇牢骚合起来的,比如王小波的一些杂文集。
关于免费的概念。免费会让人神经质。:-) 以前我好像也会这样的。但是作为理性的经济人,更应该看重的成本价和实际价格的差价。而不应该光看是否免费。只是现在物价飞涨,国民党统治区民不聊生,所以从节省角度来说,拿点免费的东西也是应该的,毕竟从支出的角度来说,减少支出是最重要的目标,在民不聊生的时候还有多少人会追求更高的生活品质呢。
相对论,这个可不是那个相对论。在实际生活中,我们都知道有比较才知道好坏。所以有些人以此来混淆我们的正确思维。比如有2W预算我们可以去巴黎,也可以去洛杉矶。这个时候我们会比较难以选择,但是又多出一个选择2W2可以去巴黎加伦敦,这样我想很多人其实都会选择2W2的那个。但是其实我们之前只想去巴黎或者洛杉矶,不经意间我们又被忽悠了。
价格魔力。作者举了很多西医的教训,特别是虚假手术也会让病人感觉好转。但是我想其实中医更是存在这样问题,心理疗法还是非常强大的。当2种物品在我们面前,一个价格昂贵,一个价格便宜,特别是当我们不太了解这2种物品的时候,我们自然而然认为价格贵的会比较好。可事实是否这样只有定价的人才知道吧。不过自从有了网络,这个问题似乎解决了很多,但是现实生活中很多人不用网络的,而且网络上现在托也非常多。
预期的效应。这就是为什么前期宣传的重要性。因为当你有了一些预期之后,你对同一事物的看法会跟有另外一种预期的人会有截然不同的看法。比如这次陈凯歌的《赵氏孤儿》注定不会太成功,因为什么? 我想应该是N年前《无极》改编的《一个馒头引发的血案》。所以大家对于《赵氏孤儿》肯定会有不好的预期,不过有人如果改变《赵氏孤儿》估计也会有很好的效果。老百姓通俗的说法就是成见。
所有权的效应。这个最常见的就是买卖双方讨价还价。特别是大宗商品。比如二手房买卖,二手车买卖。因为大宗商品涉及到金额巨大,而且一般原所有者一定是花了很大的代价买下的,要他降价卖给你是很难的,如果拥有这个商品时间越长,卖主就会越看重它的附加价值。比如你们家的欢乐,你们家对你来说温馨的装修等等。但是这些在买主看来其实基本是一文不值的,你的装修在他看来还得花钱去拆呢。
综上都是作者丹.艾瑞里书中的一些例子。但是我们生活中的非理性远不止这些。我们买卖股票的时候是理性的吗? 我们买房的时候是理性的吗? 当前中国的房地产价格远超过普通百姓的收入,但是还是很多人会去买,难道这些人都是理性的。
我想,要是大家都是理性的话,那我们的房地产价格可不会这样高,这个泡沫在2008年就已经破灭了。但是人性的本质可不是理性,而是冲动阿。以及投机的心理。而在一个冲动投机的大群体中,就一个理性,那是一种幸运吗? 我想估计是的,因为这些非理性的东西终究会走向理性,只是这个过程会让你备受煎熬。
###########################################
Best regards
Timo Seven
velocity china侧记
velocity的2天会议很快就结束了。
大家都围绕着wpo(web performance optimization)分享了很多。
web性能优化总的来说是分前端和后端,但是steve souders告诉我们前端的优化更重要,于是近些年大家围绕着前端做了很多优化,各种前端优化的工具也非常多,有chrome web development tool, speed tracer for firebug, yslow等等工具都是告诉我们如何优化的。以及这次的perload,no-locked js下载等等。
国内很多公司也在前端优化上投入了很多,但是想法都比较老套。比如腾讯现在正在使用的在域名前面带上用户地域等等,这些我在视频网站的时候早就已经这样做了,当时还能细化到各个城市。而CDN也是比较老的东西,大家比拼的其实都是IP列表的精准度和有钱程度,看你能否多布机房和带宽。
基本国内分享的公司就讲个大的概念,什么实时调度阿,什么定制服务器,定制read参数等等。基本上不是不透露技术细节,就是很多公司根本没法实现。
而facebook的2位老兄david wei和changhao jiang分享的东西还是很不错的,细节到位,基本上谁都可以在技术上进行实施的。而另外一个原则就是wpo必须要由一个专门的团队来做,而不是各个业务线自己去完成。不过这个在国内似乎很难实现,因为基本上每个部门都喜欢抢权,有权有的捞啊,这个原则无论在官场还是商场,这种中国特色文化还是非常一致的。
还是来点实际的东西。changhao jiang主要分享了3个技术: quickling, pagecache和bigpipe。提出了一个概念 TTI(time to ineract)通俗的说法就是首屏展现时间,而在首屏展现中我们其实也是有先后的。
罪恶的国际团
国际团就是一个骗子网站,将个人信息随意的贩卖。 骗子电话是15321361813,153-2136-1813
前几日在国际团(www.guojituan.com)上订了一个北京婚博会的门票。结果门票没有送到,倒是骗子的电话来了。非要我留下身份证号码。
这就奇怪了,只是普通门票为什么要身份证号,这个又不是航空公司登机牌一定要身份证,然后进行安检。于是没说,结果对方很不耐烦。绕了好久不肯给,对方就挂了。居然假借说什么男性非要25周岁以上才可以领票,:-),你想手机人家信息也不用找这样的理由。
身份证是一个人非常重要的证件,一旦丢失就非常麻烦,同时就算是复印件也要保存好,特定用途的复印件一定要写上“xxx专用”这样的字样,以防止被滥用。
作为警觉,我就把那个手机号码输入到google里搜索下,原来这个手机号码一定在网上被人登记很多了,都是用来套取个人信息的。
可惜我的手机号码和公司地址都被骗子知道了,还好没留家里的。