在Windows中使用命令行發起HTTP請求

0   92 轉為簡體

在開發mpv的插件時,需要發起http請求,但是mpv並沒有提供HTTP的api。

因此我們可以用VBScript或者PowerShell來發起請求。

運行cscript /nologo httpget.vbs “http://example.com”

或者:

這兩種方法均可以將響應輸出到stdout。Windows會將輸出的內容都重新編碼為系統默認代碼頁,比如簡體中文系統中會被編碼為CP936。但是我們有時只想獲得原始的內容,而不是便於顯示在屏幕上的內容(比如下載文件或者不便於進行編碼轉換的時候)。

所以我們可以將響應輸出到文件:

或者:

然後我們讀取out.txt就可以獲得響應內容了。

使用Redis協議來調試ngx.shared

0   224 轉為簡體

有時候用ngx.shared的時候想看一下到底存進去的值是什麼,或者想列一下滿足條件的鍵,或者想批量操作,所以這個項目就是用來解決這個問題的。

除了支持ngx.shared提供的操作以外,學習Redis增加了PING(測試連通性),KEYS(列出符合條件的鍵)和EVAL(在服務器上執行Lua腳本)。

已上傳到opm,可以通過

opm install fffonion/lua-resty-shdict-server

一鍵安裝。

由於目前stream和http子系統是兩個獨立的Lua VM,因此不能通過全局變量來共享數據。另外兩個子系統的shdict是分別定義的,因此也不能互擼。所以如果想用這個模塊來在redis-cli里擼http子系統下定義的shdict,需要這個補丁

示例配置:

然後

 

Python局部變量的坑

0   756 轉為簡體

最近碰到這麼個問題,有這麼個函數,用來將HTML轉義字符變回原來的字符:

其中unichr用來將一個整數轉換成Unicode字符,僅在Python2中存在。Python3中,chr可以同時處理ASCII字符和Unicode字符。所以我們在Python3環境中將unichr映射到chr上。

運行這段代碼會在第8行報錯:NameError: free variable ‘unichr’ referenced before assignment in enclosing scope。而且只有Python2會報錯,Python3不會。

 

首先從問題上看,報錯的原因是在閉包replc里unichr沒有定義。

但是Python2明明是有unichr這個內置函數的,為啥就變成未定義呢?

Read More

ngx_http_geoip_module開啟utf8支持

0   698 轉為簡體

ipip.tk中使用這個模塊時,返回了類似這樣的輸出:

Canada, Quebec, Montr�al

發現有人提過PATCH。於是去喵了一眼源碼,發現有一個文檔里沒有提到的隱藏參數。

可以使用

這樣來啟用utf8。默認是iso-8859-1,或者叫latin-1。

MySQL默認也是latin-1。大概因為是單字節的,所以大家都愛默認用它;可是除了肉眼可見的字符,別的控制符除了會在終端里用以外並沒有什麼卵用。

還有libzip里默認用的是CP437,是DOS版的單字節編碼。因為大概只有中文版的windows自帶的壓縮功能會生成GB18030編碼的zip文件,所以還魔改過一個中國特色的libzip

 

Sphinx 2.2.11和2.3.2的mmseg分詞補丁(基於Coreseek)

0   1520 轉為簡體

English Version

補丁包括了nzinfo在coreseek中貢獻的mmseg補丁,以及我提交的日語假名補丁(詳見這篇博客)。詳細更改見這裡

打上補丁之後,可以使用mmseg來做分詞器。如果是對大篇幅的文章做索引,推薦使用mmseg處理結巴分詞的詞庫來生成一個比較靠譜的詞庫。

Sphinx 2.11.1:Github下載 本地下載

Sphinx 2.3.2:Github下載 本地下載

Read More