Category Archives

18 Articles

mongo好大一个坑

2   74992 转为繁体

因为种种原因被逼着写mongo……

作为一个初学者,我发现了几个坑:

新的协议没文档

官网上只有Legacy Driver Implementation Documentation这个旧的协议文档,新的文档的链接是一个死循环,绕一圈可以回到原地(不信你试试)。可能有用的只有一个视频,还是2011年的,不想看了,哦草。这里还有一个2013年的,从stackoverflow看来的

当然官方给的各种语言的SDK里倒是一直在更新的。

但是给个文档会死啊!

虽然是在用lua写,所以本来也是作死。

但是给个文档会死啊!

因为lua-resty-mongol没有支持新协议,所以会有这么个问题

在update里使用$pull,lua-resty-mongol用getLastError取被修改的行数,永远是返回1(这特么谁设计的),没办法知道改成功了没有。只能update前后各find一次比较了哈哈哈哈哈哈。

设计太坑爹

除了之前的getLastError永远返回1以外,还有一个问题:

之前是2.4.x版本,升级到3.x之后,告诉我admin库需要升级,否则没法登陆,而且需要用2.6.x版本来升级

呵呵

还有一个问题:

现在我有这么个文档post,每个记录是这样的:

首先(只)取所有评论的话是没有问题的↓:

现在我想取出_id是5下的前15条评论

这么写↑,post_content也出来了,post_content好大的啊,不想取怎么办啊

这么写↑,_id没了,其他post_content还在

↑并没有什么卵用


↑这样_id有,其他键没了。

所以结果是_id必须留着……

没错我是强迫症,强迫症多着呢

 

从目前的我所遇到的情况来看,似乎mongodb能干的奇妙功能用SQL数据库一样能搞,无非要再配合别的靠谱的nosql数据库(比如redis这种)。至少写了代码还能预测能发生什么。像mongo这样写着写着给你个惊♂喜的实在受不了了。哦不过也有可能被虐着虐着就有感♂觉了呢(ง •̀_•́)ง

 

PS : 我是mongo初学者,欢迎大神来鞭挞我

 

Memcached扩展的一些坑及强迫症专用PV统计的实现

0   43726 转为繁体

以下针对PHP的Memcached扩展

  • increment/decrement/touch方法必须使用binary protocol($_mc->setOption(Memcached::OPT_BINARY_PROTOCOL,true)),且连续执行两个请求必须先关闭之前的才可以
  • $expiry参数可以是UNIX 时间戳也可以是当前秒数,秒数大于30天会被认为是时间戳,要设置用不超时可以设为0
  • 启用binary protocol后increment/decrement的返回值可能类似1 15415 a2d1,←注意是类似这样的,没关系加个intval就行了
  • 看php.org文档的时候下面的用户留言比上面的有用得多

强迫症专用PV统计

强迫症认为PV统计漏掉一个IP就会浑身难受

在需要统计的页面的PHP中嵌入一下代码

每个ip一小时内访问相同页面只计一次;注意要先touch再increment,因为increment并不会增加超时时间,如果增加了还没被读就超时就杯具了;反之如果key不存在touch一下也不会怀孕;每当一个新用户访问,增加生命值10min

cron定时入库

 

注意这里不能用delete,因为delete可能会使数据丢失,但是decrement就没关系了

简单粗暴解决flash跨域限制以去广告

7   15506 转为繁体

卡饭上说,因为优酷封了api,所以又回到跨域的问题了;其实这东西很好解决。

flash跨域访问策略是一个经常会被用来防止资源盗用的方法。由网站根目录下的crossdomain.xml配置。

下面是优酷的跨域访问策略

目前通过替换播放器的办法去广告的主要有两种,一种是替换为本地播放器,一种是替换为在线播放器;本地版有很多限制,在此略过;对在线版来说,由于托管播放器的host不在allow-access-from中,flash在执行AS时就(其实是自省的规则)无法得到优酷的视频源。

解决方法其实是很多的,比如搭个正向代理啊,而且你看大B站……对吧……

但对于我们个人用户来说,不可能整天电脑挂着nginx,或者为了去广告去买个VPS,那还不如买个会员233

这里提供一种炒鸡方便的办法绕过跨域限制。

需要:

  • 可绑定域名的静态空间,这就多了去了对吧,*AE都是可以的
  • 安装了用户脚本管理器的浏览器
  • 如果是*nix/Mac用户,需要root权限

步骤

  1. 上传播放器文件(可用https://code.google.com/p/haoutil/),假设目标目录为/antiad,以优酷为例,播放器地址为/antiad/player.swf
  2. 空间绑定域名wqnmlgdsb.tdimg.com,或者随便想一个符合allow-access-from规则且不会被土豆/优酷用到的域名
  3. hosts添加一条[空间ip] wqnmlgdsb.tdimg.com
  4. 刷新DNS缓存或重启
  5. 安装YoukuAntiADs(http://userscripts.org/scripts/show/119622)
  6. 修改其中的https://haoutil.googlecode.com/svn/trunk/player/testmod/和https://haoutil.googlecode.com/svn/trunk/player/为http://haha.tdimg.com/antiad/,保存

完成

如果你想偷懒,只要在hosts中添加 211.151.13.46 haha.tdimg.com,然后按第6步中修改即可

 

提示:某些国内空间需要备案才能绑定域名,但是你要绑定的土豆/优酷域名已经备案,所以可以直接拿来用;比如JAE啊什么的www

提示2:可以用尝试京东云

当然如果装了ProxySwitchSharp之类的,你也可以重定向crossdomain.xml到自己修改的url;前提是你浏览器得支持啊233

OpenShift维护后的重生ww

2   25771 转为繁体

昨天openshift说要add some new features然后抛出一个open issue之后,给我的applications报了一天的503error QAQ

更操蛋的是issue close之后这个博客仍然是503!

然后我想是不是它搭牢了没缓过劲来,就去restart了一下

restart之后503木有了:)

但是wordpress说数据库连接出错……

但是过了几分钟之后phpMyAdmin能连上mysql了,正好要去上体育课,就把它晾一边了

吃了饭回来发现尼玛还是连接出错

哥愤怒了于是直接把wp-confIg删掉重练 Read More