IE 隐私报告 cookie

今天开发一个浏览器 bookmarklet 的应用,加载一些 Javascript。

在 Firefox 上测试都很顺利,搬到 IE 上居然不能执行!

点击书签后,仔细观察浏览器的反应,看到状态栏突然出现一个图标,是“隐私报告”,打开后,提示我要访问的网站有第三方 cookie,已被阻止。

我就很奇怪了,另一个 bookmarklet 应用是同一套流程开发的,怎么没出现这样的问题?

把两边的代码改成一样的,结果还是不行!

把浏览器的设置全部重置一遍,依然不行。

我已经要抓狂了!

最后,我抱着试试看的想法,把书签的 url 路径改了一下,在测试,居然成功了!

后来分析,是因为 url 中包含一个单词 “collect”!

原来 IE 发现你的 script 的 src 是第三方域名,并且路径包含 collect,就会自动阻止访问!

IE 真是满身坑啊!

 

——–

2012-2-24 更新

之前的理解有误,不是单词的问题。资源不能加载成功的原因是 javascript 代码不严谨,定义数组的最后一个元素以逗号 “,” 结尾了。在 Firefox 下没问题,在 IE 下会失败。

关于隐私错误,我进一步的理解是:请求跨域的 script 资源,浏览器会把第三方域名的 cookie 附带在请求中一起发出去。IE 会对部分 cookie 做限制。

如果第三方希望通过 cookie 获取用户状态,在 IE 设置了高级别的隐私政策后,有可能失效。

Tags:

PUTTY WINSCP 中文版有后门程序

请立即停止使用 PUTTY,WINSCP,SSH SECURE SHELL 的中文汉化版,这些“汉化”的软件会在你登陆服务器的时候将密码发送到某个指定的网站。

我强烈建议:凡是安全相关的软件,都不要使用国内的软件,或者汉化的。简单的英文界面涉及到的英文单词没几个,花点时间查查就都明白了。

我的判断,使用这些工具的中文版的工程师,多半是主动性很差的。他们害怕遇到陌生词汇,不想花时间查词霸。同样的,在技术上遇到难题,多半也是选择逃避,不会硬着头皮去钻研和解决。

 

Tags:

grep 归档日志的好办法

归档的日志文件,想要从中找出匹配的数据,我最近才知道有更好的办法。

先说说我以前的笨方法:

* 先解压 bz2 文件到纯文本

* 再 grep 这个文本

* 完成后再删除这个纯文本

整个过程很麻烦。

 

有位高手告诉我更简单的办法:

bzcat debug_log.bz2 | grep ‘pattern’ > result.txt

这个是一边解压一边 grep,不用创建新文件,不太占 IO。

试了下,效果还不错,可以同时处理好几个,系统负载也不高。

Tags:

WordPress 自动转义 画蛇添足

WordPress 在显示文章时,会把英文半角的双引号、双减号自动转换成全角的双引号和单个破折号。

这个功能真是画蛇添足。

找到了这段逻辑,在下面这个文件中。

wp-includes/formatting.php

涉及到的变量有 $static_characters、$static_replacements、$dynamic_characters 还有 $dynamic_replacements。

把这些替换成空数组应该就能解决问题,等有空多测试下再搞吧。

Mark 一下。

Tags:

使用 rsync 备份多台服务器

今天对服务器备份的脚本进行了重构,把配置参数独立成文件,使用 PHP 代替不熟悉的 shell,理顺了思路,分享一下。

【环境】

一共3台服务器,server-1 和 server-2 是线上生产环境,backup-server 是专门用于备份的服务器。

【目的】

定期把 server-1 和 server-2 的 user 目录下的所有文件同步到 backup-server 的指定目录下。

【前提】

backup-server 上有一个用户 backup,他用 ssh-keygen 生成公钥,传到 server-1 和 server-2,这样 backup 用户登录这 2 台线上服务器时不再需要密码。

[backup@backup-server rsync]$ ssh-keygen -t rsa -b 1024

在 ~/.ssh/ 下生成 id_rsa 和 id_rsa.pub,分别是私钥和公钥。

把 id_rsa 重命名成 identity,chmod 600。

把 id_rsa.pub 复制到 server-1 的 /home/user/.ssh/ 目录下,把内容追加到 authorized_keys 文件中,注意此文件也要 chmod 600。

server-2 也如此操作。

之后,backup 用户可以随意 ssh user@server-1 和 ssh user@server-2,不会再问密码。

【功能列表】
* 根据配置文件的 serverName,生成 shell 命令
* 判断是否为唯一 rsync 进程,如果有正在执行的进程,则不执行任何操作
* 确认没有重复进程之后,执行 rsync 命令同步文件,并输出进度信息到 logs 目录
* php 的程序只输出 shell 命令,确认无误后用管道输出给 bash 来运行

【使用方法】
[backup@backup-server rsync]$ /usr/bin/php /home/backup/script/rsync/rsync_web.php server-1 | sh

【详情】

根据 server-1 这个关键字,找到对应的配置信息。

根据一些列规则,生成一串管道命令,输出如下所示:

rsync_process_num=$(ps ax | grep ‘rsync’ | grep -v ‘grep’ | grep ‘server-1’ | grep ‘bwlimit’ | wc -l) && test $rsync_process_num -lt 1 && /usr/bin/nohup /usr/bin/rsync –links –delete –recursive –itemize-changes –progress –exclude-from=/home/backup/script/rsync/conf/exclude.server-1.conf –bwlimit=110 user@server-1:/home/user/* /home/backup/server-1/home/user/ >> /home/backup/script/rsync/logs/rsync_web.server-1.log 2>&1 &

对比“功能列表”,可以看明白这一串命令都在干嘛。

【SVN】

具体的代码,我提交到了 googlecode,欢迎指正:http://leakon.googlecode.com/svn/trunk/server/script/rsync/

 

Tags: ,

换个模板 重新开张

农历新年马上就要过完了,在这放假的几天里,为将来的一年做了各种计划。

计划太多,时间太少。

搞的我无从下手,不知道从哪一步开始。走哪条路,都发现这条路好远好远,似乎永远也走不到终点。

以前的几年也是这样浑浑噩噩虚度过来,其实,只要每天坚持走,用不了多久,回头看看,就会发现原来已经走了很远。

说到时间太少这个问题,我觉得不如说是给自己找借口。

不能回家看爸妈,不能陪爸妈说话,不能给爸妈做饭,不能带爸妈出去逛街。

所有一切的接口都是忙,没时间。

其实,只要你想去做,就一定有时间。

就好像,混的很落魄的小学同学约你吃饭,你会以工作忙要加班为接口推掉。

要是你的 Boss 或有个 VC 约你吃饭,你可能会为此放弃春节回家的机会。

另一方面,之所以忙,是因为你不会管理时间,不会高效办事。

反正吧,在我看来,时间是自己管理的,你想做什么,就一定有时间。

计划已经列好,该做什么,想做什么,都很清楚。

接下来这一年,管理好自己的时间,不要管终点有多远,利用好每一秒,一步一步往前走。

今天,把博客又恢复了出来,我不想给博客备案了,实在搞不定。

重新开张!

Tags:

坏脾气的小肥

有段时间我很迷FourSquare,它被墙之后,渐渐又冷了。再后来玩开开,因为陪我一起玩的人不多,渐渐又冷了。最近两年有几位业内人士(包括我眼中的业界精英)不解问我:签到有个屁的意思啊?解释许久,他们仍难以索解。从数据上来看,纯粹的签到在国内确实是个窄众应用,但并不影响它在业内的名声。

几个月前,一件小事令我印象深刻。有位同行来咨询我,问我对一款主打“图文并茂”的美食分享产品的看法。我看了看说,用户拍摄相片质量这么差,一看就没胃口吖,此产品前景堪忧。这位同行立刻反驳说,不对,我这个吃货一看图片就食指大动,反而是大众点评那种纯文本的用户评价索然无味。

由于他是以用户身份,而非业内人士的身份提出意见,我当时就羞愧了。老纸又主观了。同样一张美食相片,我看了大倒胃口,他看了口水横流,个体差异极其鲜明。既然鸡同鸭讲,我又有什么资格张口即喷呢?

另一个小小例子关于“讲笑话”这款应用,主打“语音笑话UGC”。我一开始极不看好,觉得需求弱,产品个性也不够强,尤其无法直观地辨识内容质量,大大降低了信息甄别获取的效率,恐不长久。结果又过了两三个月一看,嘿,它不仅活着,还涌现出来一大批讲笑话专业户,平均每人讲十几条笑话,质量也不低。虽然远远谈不上大红大紫,至少人家顽强地生长着,有了一定数量的优质内容沉淀。

这时我再去试图分析它的用户心态,很多人并没有原创笑话的本事,但配音效果佳,绘声绘色地讲出来,相当于二次创作,颇有成就感。这批在我预料之外的骨干用户,支撑起了“讲笑话”的血脉。

类似的情景还有很多很多。以前我经常说,老纸看好的项目未必成功,不看好的则一定失败。现在已经不敢再开这种黄腔。只能说,我不看好的项目很难成长为日访问百万级的大产品,不过能捕捉到目标受众的话,生存发展可能也不是问题。所以别人来咨询新产品,我会指出一些显而易见的硬伤,但不再轻言成败,因为他面向的用户群,很可能是我完全陌生,毫无了解的。

互联网的市场很大很大,已有十几亿的人口,其中显而易见的,共性强烈的的用户需求基本已被填满。这时再去追求百万访问级的大产品,难,真难,劝君莫作痴汉。还有什么共性强烈的需求是你能看见,别人看不见,你能满足,别人搞不定的呢?

在互联网蓬勃发展了15年之后,新产品主打的必然是个性,包括产品的个性,需求的个性,用户群的个性。在不断细分的领域内找到并谄媚你的用户。而四亿人口的国内市场,能容纳千百种奇奇怪怪的个性,异想天开的心态,将人类的多样性发挥得淋漓尽致。没有一个human敢说,自己一下子就能看懂市场上1/10的用户需求,恰恰是这参差多态,给予了新产品生存发展的机会。

近来,我越来越认同欧美投资领域流行的一个观点,那些老奸巨猾的投资商跟创业者说:“想清楚了就去做,别问东问西。”试想,当年克罗利如果“虚心听取意见”来判断是否创立FourSquare,哪里还有如今的签到市场。即便在签到发展近3年之后,用户群也不足大盘的10%,这意味着你现在去跟10个人谈地理位置签到,9个人会无情地笑话你,奚落你,打击你。然而FourSquare注册用户今年6月业已突破了1000万大关。

这个案例,也就是“少问,多做”这句创业箴言的本意。在数亿用户的大市场里面,即便是非常窄的应用也有百万级的用户基础。创业者作前期调研的时候,除非确保访谈的一定是目标用户,否则你鸡同鸭讲,所得到的回答便全是误导。即便访谈目标用户吧,如果没有真实的应用情景来启发,全凭脑补,他的回答也很难靠谱。不如快速拿出原型推向市场,让数据告诉你答案。

因此,主观与敏捷已经成为了当下新产品发布的不二法门。不过这条金科玉律完全不适合大中型公司,很容易被滥用,上一大堆烂到无法言说的臭作——反正他照领工资。只有自负其责,个人荣辱完全与项目绑定的创业小队,才有资格讲“主观”,讲“敏捷”。

至于一开始从窄众做起的个性化应用,是否有机会慢慢生长成大树,这很难讲。我们不能将“做大”作为赤裸裸的产品追求——就像同样是个性化应用起家,既有Twitter参天大树,也有消沉的Delicious昔日明星。未必两家产品创始人谁比谁更牛逼,只是Twitter恰恰具备了更强的感染力和流行性罢了。但创始人如果不能追随自己的产品灵感,非要计较天花板的高低,很可能一事无成,蹉跎终老。

说白了,这就是命。你的生活方式与知识结构决定你的灵感,灵感衍生出来的主题与个性又决定了产品的市场前景。创业最顺的路径不是嗅探市场流行风向,而是听从自己的心。当成百上千个项目组都具备强悍的研发能力,足以左右成败的,既不是你的点子多,技术强,资源丰厚;也不是你跑得快,肯加班,笨鸟先飞;比别人更了解某一个“窄众市场需求”(大路货也轮不到你来发现),这才是最关键的竞争因素。

“对窄需求的把握,产品灵感,研发能力”,三者所产生的化学反应决定了新产品的走势。行业里很多人只重视后两条,但我觉得,第一条才是新产品新项目的基石。这更多取决于“你是个什么样的人”——唯有从你的兴趣爱好、人生经历、生活习惯中,才能真正把握好需求。所谓仁者见仁,智者见智,淫者见淫。

叹口气,这就是命。

来源:http://firecacada.blog.163.com/blog/static/7074376201192492255308/

Tags:

Tunnelier Client connection closed before completion of protocol

I eventually received confirmation from the SSH server owner that indeed port forwarding was disabled in their sshd_config file (AllowTcpForwarding: “no”).
At my request, they reset AllowTcpForwarding to “yes”. That solved the connectivity problem. Now I can connect Firefox to Internet using Tunnelier’s SOCKS proxy and my host’s SSH server. This means secure and anonymous browsing.

还有一种说法,是大网关的临时性 block 指令强行切断了连接,过一会儿就恢复。