0%

讀寫分離

我們可以設定兩台 mysql 可以同步資料,分為主及從伺服器。
一般主伺服器是寫入,而從伺服器是用來讀出資料。

如果設定得到,可以用多台伺服器來分擔負載。

master slave 配置

master-slave

master: master1 (172.19.0.2)
slave: slave1 (172.19.0.3)

閱讀全文 »

比特幣交易平台

最近注冊了安幣的交易平台帳號。
如果你沒有找到介紹人,可以讓我當你的介紹人。
經過我的介紹你可以得到 20% 的反現。
下面是我的推薦連接,用下面的連接的註冊我也可以得到相應的反現。

註冊

有需要就請用我的連接註冊吧。

字型

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中看到亂碼的部分問題。

command

1
2
3
$ ansible -i hostfile all -m user \
-a "name=admin update_password=always password={{ newpassword|password_hash('sha512') }}" \
-b --extra-vars "newpassword=12345678"

reference

playbook

或許用 playbook 比較好.

1
2
3
4
5
6
7
8
9
---
- hosts: all
become: yes
tasks:
- name: Change user password
user:
name: admin
update_password: always
password: "{{ newpassword|password_hash('sha512') }}"

phpmyadmin

phpmyadmin是一個廣為使用的 mysql 管理的介面。
我很小的時候就在使用這個工具了,今天就來說說使用的場景。
在我們的環境中有幾個設定是必須要注意的。

  • docker-compose
  • mysql
  • nginx
閱讀全文 »

開發環境

一般我們在 linux 上安裝軟體都是用 package 管理工具進行。
不過總是有些工具是沒有被放進 package 管理裡。
這時候我們就必須要自己編釋了。
那就是要安裝 GNU 的 gcc 的開發環境。

這篇文章就是在記錄該如何在一個乾淨的 centos 安裝一個開發環境。

閱讀全文 »

編碼

個人覺得這個問題和 2000 年的問題差不多,
就是以前的人為了省空間,然後沒有考慮清楚,所以留下來的爛攤子。
不過事情已經發生了我們也只能想我們該如何處理。
所以現在我們都是常常是用 utf-8 來處理我們處理的文字。
但是,就是有這個但是,就是有人會有不同的想法不同的想法不同的現實,所以我們的生活才會精彩無比。
只是不知道是被人精彩還是自己精彩。

其實現在的文字都是 unicode 的,在我小的時候還有 big5 等編碼,不過這個世界就是有很多不同的人。
而那些人是不使用 big5 的,當這兩個世界的人看到對方的編碼用自己的編碼方式看就全是亂碼啦。
例如gb2312的人用gb2312的方式看我們big5的文字,全部都是亂碼,反之已然。

不過在電腦裡看到的東西都是 bytes,而不是 unicode 也不是 big5。
所以我們就需要常常在 unicode 和 bytes 間轉換。

1
2
3
>>> teststr = 'http://tw.yahoo.com'
>>> type(teststr)
<type 'str'>

utf-8

在 python3 裡,我們可以看到 teststr_utf8_bytes 是 bytes。
不過在 python2 我們會看到不一樣的結果,他會是 str

1
2
3
>>> teststr_utf8_bytes = teststr.encode(encoding="utf-8")
>>> type(teststr_utf8_bytes)
<class 'bytes'>

decode

1
2
3
>>> teststr_string = teststr_utf8_bytes.decode()
>>> type(teststr_string)
<class 'str'>

亂碼

讓我們看看我們常常看到的混亂世界是什麼。

1
2
3
4
5
6
7
8
9
10
>>> str1 = '讓我們看看我們常常看到的混亂世界是什麼。'
>>> type(str1)
<class 'str'>
>>> str1_big5_bytes = str1.encode(encoding='big5')
>>> type(str1_big5_bytes)
<class 'bytes'>
>>> str2 = str1_big5_bytes.decode("gb2312")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'gb2312' codec can't decode byte 0xad in position 4: illegal multibyte sequence

python 和我們抱怨他無法正確處理。

總結

我們完成了unicode和bytes的遊戲了,希望大家會喜歡。

compress/decompress

我們有時會有想要壓縮資料及解壓縮資料的需求。
不論是什麼理由要進行壓縮,在python裡,我們可以使用到zlib。

今天讓我們來看看如何在 python 裡使用 zlib 進行壓縮。

zlib

zlib 是一個歷史悠久的工具,我們可能每天都在不知情的情況下使用到了這個工具帶來的結果。
在 python 裡 zlib 模組提供了 Zlib 壓縮的能力,而 Zlib 是由 GNU 專案的一部分。

compress

一般給定一個想要進行壓縮的 byte 字組,就會進行壓縮,回傳同樣是一組 byte 字組。
也可以追加一個 level(0-9) 的參數來指定壓縮的程度。0代表沒有壓縮,9代表最大的壓縮。
我們在進行解壓縮時再一起講範例吧。

decompress

相對於 compress 我們一定會需要 decompress 來進行反相的工作。

1
2
import zlib
c = zlib.compress(b'hello python')

c 的結果是 ‘x\x9c\xcbH\xcd\xc9\xc9W(\xa8,\xc9\xc8\xcf\x03\x00\x1e\xf0\x04\xd7’

1
x = zlib.decompress(c)

同樣的上面會得到原來的字串。
我們也可以用compressobj來進行壓縮。

1
2
3
4
s1 = b'hello python'
c = zlib.compressobj()
s2 = c.compress(s1)
s2 = s2+c.flush()

上面的 s2 會和前面的例子中的 c 有一樣的結果。

1
2
3
d = zlib.decompressobj()
x = d.decompress(s2)
x = x+d.flush()

上面的例子又同樣得到了 b’hello python’

1
print(zlib.ZLIB_VERSION)

在我的 mac 上python用的是 ‘1.2.11’

ssh 設定

ssh 是遠端操控 unix 基礎的好工具。
因為 ssh 的強大,所以 ssh 的選項特別多和繁雜。
如果要簡化這些,有些聰明的方法。
就是透過 ssh config 把常用的設定放在設定檔中。

讓我們來看看我們有那些可以設定。

  • 別名
  • ip/hostname
  • user
  • key file
  • port
  • host key checking
  • agent forward
  • local forward
  • remote forward
  • x11 forward
  • gateway port
  • proxycommand
  • proxyjump
閱讀全文 »

安裝 ps

docker 是好用的東西,但是有時為了精簡系統,有些我們常用的工具也省略了。
ps 常常是會捨棄的部分。
在 ubuntu 中我們要裝何安裝 ps 呢?

1
$ sudo apt-get install -y procps

有時第一次跑會失敗,可以先執行apt-get update就可以正常執行了。