0%

更動正在執行的 container

有時一個正在執行的 container 是不能停下來的,
如果要在行進間中的車子換輪子是可以做到的。

加上 restart=unless-stopped 的 policy

1
$ docker update --restart unless-stopped d782

update 參數

這是一個修改現存 container 的方法。

師徒年齡

題目:

師:我在你這個年紀時你才五歲,但你到我這個年紀時,我就71歲了!
請問:師徒各幾歲?

思路

不變的是師徒的年齡的差距,71-5是66也是三個年齡段的所有差,
所以師徒的年齡差是22,然後可以得到師49歲,徒27歲.

結論

好像很簡單,但在國小沒有很工具的時候,這題不容易。

介紹

java 對基本的型態和對應的物件的自動轉換是編譯時完成的。
讓我們來簡單是如何做到的。

這樣的轉換叫裝箱及拆封 (box/unbox)。

比如將int的變量轉換成Integer對象,這個過程叫做裝箱,
反之將Integer對象轉換成int類型值,這個過程叫做拆箱。

閱讀全文 »

介紹

小時候所知道的 java 和 c/c++ 有支援 switch/case ,使用上也很好用。
但是我們知道的是支援整數值的,在 java 新的語法中,有支援到 String 。
我們今天就說一下這部份。

閱讀全文 »

手動清除日誌

若果這個 json 日誌文件佔用了大量的磁盤空間,我們可以使用下面的命令清除它。

1
# truncate -s 0 <logfile>

或者我們可以考慮設置一個 cronjob 來定期清除這些 json 日誌文件,但從長遠來看,最好還是設置日誌輪替。

介紹

iconv 是 linux 上字元轉換的工具。因為有很多機會需要把簡體中文轉換為繁體中文。所以 google 介紹了這個好用的工具。

iconv 把指定的檔案從來源字集轉換到目的字集。以我的應用場景,我是需要從簡體中文轉換到繁體中文。

可以查到簡體在 iconv 是 gb2312 而繁體中文是 big5。但是以現在的作業系統來說我們的字集一般是 utf8。

所以實作的操作是先從 utf8 轉換為 gb2312 , 指後再從 gb2312 轉換為 big5 ,最後再從 big5 再轉回 utf8。

使用

列出目前支援的字集。

1
2
3
4
5
6
7
8
9
10
11
 $ iconv -l
The following list contains all the coded character sets known. This does
not necessarily mean that all combinations of these names can be used for
the FROM and TO command line parameters. One coded character set can be
listed with several different names (aliases).

437, 500, 500V1, 850, 851, 852, 855, 856, 857, 858, 860, 861, 862, 863, 864,
865, 866, 866NAV, 869, 874, 904, 1026, 1046, 1047, 8859_1, 8859_2, 8859_3,
8859_4, 8859_5, 8859_6, 8859_7, 8859_8, 8859_9, 10646-1:1993,
10646-1:1993/UCS4, ANSI_X3.4-1968, ANSI_X3.4-1986, ANSI_X3.4,
...

轉換字集

下面的例子是將檔案轉換為簡體。

1
$ iconv -f utf8 -t gb2312 file.txt

實際我們一般會如下進行轉換

1
$ cat file.txt | iconv -f utf8 -t gb2312 | iconv -f gb2312 -t big5 | iconv -f big5 -t utf8

介紹

我們在 linux 上常常需要處理文字檔案。而其中最常就是要對檔案中的文字進行處理。
sed 就是這樣的工具。他可以對字串進行複製、取代、刪除。也可以處理 regex 文字。

取代

直接用範例來說明

1
2
 $ echo 'This is a book' | sed 's/This/That/g'
That is a book

這個例子中,s的指令就是取代,我們將出現的This取代為Thatg代表全部取代。

也可以同時多個操作。

1
2
 $ echo 'This is a book' | sed 's/This/That/g;s/book/dog/g'
That is a dog

在這個例子中,我們同時將Thisbook同時取代為Thatdog

刪除

下面是我們在操作的文字檔案內容。

1
2
3
4
5
6
7
8
9
10
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},

執行下刪除的指令。

1
2
3
4
5
6
 $  sed '/hexo/d' /tmp/abc.json
{
"version": "0.0.0",
"private": true,
"scripts": {
},

原來檔中出現 hexo 的行都不見了。

結論

sed 是很好用的工具,我們以後再來發掘。

介紹

當我們用matplotlib畫圖時會發現一個問題,那就是當我們想要在圖中顯示中文時會變成亂碼,像是下面的例子

1
2
3
4
5
6
7
import matplotlib.pyplot as plt

sales = [100,80,50]
x_labels = ['A品牌','B品牌','C品牌']

plt.bar(x_labels,sales)
plt.show()

注意在下方的中文字成為了方塊。

matplot

閱讀全文 »

1
# haproxy -f /etc/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

可以不中斷服務的重新載入新的設定。

介紹

上一篇有介紹到如何在 linux 及 mac 上列出如何找到系統中的 port 是那個程式開啟的。
今天就把 windows 上如何做到也說明一下

指令

1
C:\> netstat -a -b

語法很簡單,只要加上 -b 的參數即可。

  • 要注意的是,因為需要高權限,如果沒有用使用 administrator 的權限是無法正確執行的。