2015年4月28日 星期二

指定 Laravel 建立的版本

建立 4.2.0 版的 Laravel
$ composer create-project laravel/laravel=4.2 foo --prefer-dist
建立 Laravel 4 的最後版本
$ composer create-project laravel/laravel foo ~4.0 --prefer-dist

2015年4月23日 星期四

Sphinx 正體中文搜尋的擴充套件

網路搜尋的資料都要修改 Sphinx 的程式碼,對用 pip 作套件管理的系統並不好。 參考 Sphinx 的擴充套件教學後,就基於 bosbyj/sphinx.search.zh_CN 加入了一些例外處理和從設定檔自訂字典檔的功能,做了正體中文的擴充套件 sphinx.ext.search.zh_TW 也提交給 Sphinx,不知道會不會 marge 到未來版本。

安裝結巴中文分詞
$ pip install jieba
安裝正體中文的擴充套件
$ git clone https://github.com/enhao/sphinx.ext.search.zh_TW.git _extension
修改專案目錄下的 conf.py
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('_extension'))

...

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['search-zh_TW']

...

# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
#   'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
#   'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
html_search_language = 'zh_TW'

# A dictionary with options for the search language support, empty by default.
# Now only 'ja' uses this config value
html_search_options = {'dict': '_extension/dict/zh.dict'}
sphinx.ext.search.zh_TW 的字典檔是用結巴中文分詞的 dict.txt.big ,不設定 html_search_options 的話,會使用結巴中文分詞的預設字典

參考

2015年4月21日 星期二

常用的 SyntaxHighlighter 參數

brush 指定程式語言,first-line 和 highlight 分別是開始和要反白的行號
...
會顯示為
#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
    return 0;
}
如果不要顯示行號
...
常用的程式語言

Brush name Brush aliases
Bash/shell bash, shell
C++ cpp, c
CSS css
Diff diff, patch
JavaScript js, jscript, javascript
Java java
Perl perl, pl
PHP php
Plain Text plain, text
Python py, python
Ruby rails, ror, ruby
Scala scala
SQL sql
XML xml, xhtml, xslt, html, xhtml

參考

2015年4月20日 星期一

C/C++ snippet: between_addr()

#include <errno.h> /* errno */
#include <arpa/inet.h> /* htonl */
#include <netinet/in.h> /* in_addr_t */

/**
 * @param start start IP adress in host byte order
 * @param end end IP address in host byte order
 * @param addr_cb callback
 * @param data callback argument.
 * @return If failed, between_addr() returns -1. Otherwise, retrun a value from callback
 */
int between_addr(uint32_t start, uint32_t end, int (*addr_cb)(in_add_t, const void *), void *data)
{
    int ret = -1;
    uint32_t addr, limit;

    if (!addr_cb) {
        errno = EINVAL;
        return ret;
    }

    addr = start < end ? start : end;
    limit = start > end ? end : start;

    for (; addr < limit; addr++) {
        ret = addr_cb(htonl(addr), data);
        if (!ret)
            break;
    }

    return ret;
}

Sphinx 的中文搜尋

最簡單的方式就是直接用日文分詞演算法

修改專案目錄下的 conf.py
...

# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
#   'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
#   'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
html_search_language = 'ja'

# A dictionary with options for the search language support, empty by default.
# Now only 'ja' uses this config value
html_search_options = {'type': 'default'}

參考

2015年4月13日 星期一

Sphinx 匯出 HTML 到指定路徑

Sphinx 匯出 HTML 的預設路徑在專案目錄下的 _build/html
  $ make html
  $ ls _build
  doctrees html
而在 _build 下會產生快取的目錄 doctrees

匯出到指定路徑只要在專案目錄下執行
  $ sphinx-build -d _build/doctrees . /usr/local/nginx/html
其中 -d 是指定快取的目錄,/usr/local/nginx/html 是匯出的目錄

Sphinx 匯出中文 PDF

安裝 MacTeX

修改專案目錄下的 conf.py
...

language = 'zh_TW'

...

latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
'papersize': 'a4paper',

# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',

'classoptions': ',english',
'inputenc': '',
'utf8extra': '',

# Additional stuff for the LaTeX preamble.
'preamble': '''
\usepackage{xeCJK}
\setCJKmainfont[BoldFont=Heiti TC, ItalicFont=STKaiti]{Heiti TC}  % 設定中日韓字型
\setCJKmonofont[Scale=0.8]{Courier New}  % 設定中日韓等寬字型
\XeTeXlinebreaklocale "zh"  % 設定斷行演算法為中文
\XeTeXlinebreakskip = 0pt plus 1pt  % 設定中文字距與英文字距
''',

# Latex figure (float) alignment
#'figure_align': 'htbp',
}
字型可以參考網頁中英文字型(font-family)跨平台設定最佳化或檢視系統已安裝的字型
  $fc-list :lang=zh-tw
匯出 PDF
  $ make latex
  $ cd _build/latex
  $ xelatex *.tex

參考