作死必備 請摸著良心使用
加速樂CDN及抗DDoS功能簡單測試
樹莓派忘記登錄密碼怎麼辦
借給同學之後自己把密碼忘了……雅蠛蝶……可惜沒把顯示屏帶回來,查了一圈之後靈機一動(* ̄▽ ̄)y
如果你有顯示屏+USB鍵盤
- 將SD卡插入電腦(windows下只掛載boot分區)
- 打開boot分區,編輯command.txt(注意不要用記事本,可能會換行符坑爹)
- 在第一行末尾加上init=/bin/sh,完成後大概是這樣
1... root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait init=/bin/sh - 插卡,重啟,連接鍵盤顯示器
- 出現shell後用passwd更改密碼
沒有的話呢?
- 想辦法讓電腦和樹莓派連通,可以用路由器,或者電腦裝個dhcpd等
- 生成一對密鑰對,注意必須是openssh兼容格式而不是putty等密鑰格式
- 使用一個流行的linux發行版,將SD卡插入電腦;如果是老舊的版本,你可能需要手動掛載SD卡里的ext4分區
- 進入/分區,在/root下建立一個.ssh文件夾(如果沒有的話),並chmod 700
- 在/root/.ssh/下建立一個文件authorized_keys,並chmod 600
- 將公鑰內容寫入新創建的文件中
- sync,umount
- 插卡,重啟,ssh使用root賬戶連接,並指定剛才的私鑰
- passwd修改密碼
Coreseek4.x/5.x編譯和一些注意事項
使用ubuntu/debian系統32位的可以在這裡下載我編譯好的coreseek5/csft包
對於>2.2.10的版本,我在這篇博客里提供了完整的補丁,可以應用在sphinx的源碼上編譯。
編譯mmseg
|
1 2 3 4 5 6 |
git clone https://github.com/nzinfo/mmseg cd mmseg automake --add-missing ./bootstrap ./configure --prefix=/usr/local/mmseg make && make install |
編譯coreseek5
|
1 2 3 4 5 6 7 |
apt-get install Cython git clone https://github.com/nzinfo/csft cd csft git checkout r/csft5 sh buildconf.sh automake --add-missing ./configure --prefix=/usr/local/coreseek --with-mysql --with-mmseg-includes=/usr/local/mmseg/include/mmseg --with-mmseg-libs=/usr/local/mmseg/lib |
自動腳本有一些bug :
- 手動運行一次autoconf和automake
- ./configure xxxx之後,修改src/Makefile在LIBS加上-L/usr/local/mmseg3/lib -lmmseg
am__object_1 增加 tokenizer_zhcn.$(OBJEXT)SRC_SPHINX增加tokenizer_zhcn.cppgcc 5.不知道多少版本以後會腦殘,sphinx.cpp里有個地方要加上this->,忘記具體變數了,沒關係gcc會告訴你在哪的
如果用4.1的話不能用最新版的sphinxclient,可以去sphinx_php_api的trunk里找define ( “VER_COMMAND_SEARCH”, 0x117 );的版本(0x117 ->1.23)
最後貼一個圖來表達對xunsearch的…………

又慢(搜索比sphinx慢5~10倍,索引體積比原始數據大7倍,比sphinx大21倍),結果又少(mysql模糊搜索≈coreseek搜索≈740+,這貨只有114,$search->count獲得的精確值是286條)
另外ini文件名和裡面填的project_name不一致會神作
告訴我是我打開方式不對
Memcached擴展的一些坑及強迫症專用PV統計的實現
坑
以下針對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中嵌入一下代碼
|
1 2 3 4 5 6 7 8 9 |
<?php $visiter_key = "visitor_".$newsid."_".get_ip(); $pv_key = "pv_".$newsid; $new_pv_cnt = 0; if(!mc_get($visiter_key)){ mc_set($visiter_key, $expire=3600); mc_touch($pv_key, $expire=600);//renew pv stat for 10min, no matter fail or not $new_pv_cnt = mc_incr($pv_key, $offset=1, $init=1, $expire=600); } |
每個ip一小時內訪問相同頁面只計一次;注意要先touch再increment,因為increment並不會增加超時時間,如果增加了還沒被讀就超時就杯具了;反之如果key不存在touch一下也不會懷孕;每當一個新用戶訪問,增加生命值10min
cron定時入庫
|
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php foreach(mc_getallkeys() as $_ => $key){ if(substr($key, 0, 10) == 'detail_pv_'){//訪問量 $cnt = intval(mc_get($key)); if($cnt >0){ mc_decr($key, $offset=$cnt, $init=0, $expire=600);//10 min //mc_delete($key); $newsid = explode('_', $key)[2]; ##run sql here } } } |
注意這裡不能用delete,因為delete可能會使數據丟失,但是decrement就沒關係了
