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