讀寫分離
我們可以設定兩台 mysql 可以同步資料,分為主及從伺服器。
一般主伺服器是寫入,而從伺服器是用來讀出資料。
如果設定得到,可以用多台伺服器來分擔負載。
master slave 配置
master: master1 (172.19.0.2)
slave: slave1 (172.19.0.3)
1 | $ sudo apt-get install fonts-moe-standard-song fonts-moe-standard-kai fonts-cns11643-sung fonts-cns11643-kai fonts-arphic-ukai fonts-arphic-uming fonts-arphic-bkai00mp fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp fonts-arphic-gkai00mp fonts-cwtex-ming fonts-cwtex-kai fonts-cwtex-heib fonts-cwtex-yen fonts-cwtex-fs fonts-cwtex-docs fonts-wqy-microhei fonts-wqy-zenhei xfonts-wqy fonts-hanazono |
安裝中文需要到的字型,可以解決在firefox和chrome中看到亂碼的部分問題。
1 | $ ansible -i hostfile all -m user \ |
或許用 playbook 比較好.
1 | --- |
個人覺得這個問題和 2000 年的問題差不多,
就是以前的人為了省空間,然後沒有考慮清楚,所以留下來的爛攤子。
不過事情已經發生了我們也只能想我們該如何處理。
所以現在我們都是常常是用 utf-8 來處理我們處理的文字。
但是,就是有這個但是,就是有人會有不同的想法不同的想法不同的現實,所以我們的生活才會精彩無比。
只是不知道是被人精彩還是自己精彩。
其實現在的文字都是 unicode 的,在我小的時候還有 big5 等編碼,不過這個世界就是有很多不同的人。
而那些人是不使用 big5 的,當這兩個世界的人看到對方的編碼用自己的編碼方式看就全是亂碼啦。
例如gb2312的人用gb2312的方式看我們big5的文字,全部都是亂碼,反之已然。
不過在電腦裡看到的東西都是 bytes,而不是 unicode 也不是 big5。
所以我們就需要常常在 unicode 和 bytes 間轉換。
1 | >>> teststr = 'http://tw.yahoo.com' |
在 python3 裡,我們可以看到 teststr_utf8_bytes 是 bytes。
不過在 python2 我們會看到不一樣的結果,他會是 str
。
1 | >>> teststr_utf8_bytes = teststr.encode(encoding="utf-8") |
1 | >>> teststr_string = teststr_utf8_bytes.decode() |
讓我們看看我們常常看到的混亂世界是什麼。
1 | >>> str1 = '讓我們看看我們常常看到的混亂世界是什麼。' |
python 和我們抱怨他無法正確處理。
我們完成了unicode和bytes的遊戲了,希望大家會喜歡。
我們有時會有想要壓縮資料及解壓縮資料的需求。
不論是什麼理由要進行壓縮,在python裡,我們可以使用到zlib。
今天讓我們來看看如何在 python 裡使用 zlib 進行壓縮。
zlib 是一個歷史悠久的工具,我們可能每天都在不知情的情況下使用到了這個工具帶來的結果。
在 python 裡 zlib 模組提供了 Zlib 壓縮的能力,而 Zlib 是由 GNU 專案的一部分。
一般給定一個想要進行壓縮的 byte 字組,就會進行壓縮,回傳同樣是一組 byte 字組。
也可以追加一個 level(0-9) 的參數來指定壓縮的程度。0代表沒有壓縮,9代表最大的壓縮。
我們在進行解壓縮時再一起講範例吧。
相對於 compress 我們一定會需要 decompress 來進行反相的工作。
1 | import zlib |
c 的結果是 ‘x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7’
1 | x = zlib.decompress(c) |
同樣的上面會得到原來的字串。
我們也可以用compressobj來進行壓縮。
1 | s1 = b'hello python' |
上面的 s2 會和前面的例子中的 c 有一樣的結果。
1 | d = zlib.decompressobj() |
上面的例子又同樣得到了 b’hello python’
1 | print(zlib.ZLIB_VERSION) |
在我的 mac 上python用的是 ‘1.2.11’