2019年12月5日 星期四

關於睡眠

睡眠時間夠長,可以避免自己用到意志力
睡得飽,不需要意志力就可以起床跑步
最近自己似乎有點晚睡,平均都睡到七小時多
導致早上起不來,起來了也拖拖拉拉
應該要把睡眠時間調整回十點前

2019年12月1日 星期日

nagios check

Add nagios check

  • files
    • /etc/nagios/nrpe.cfg
    • /usr/lib64/nagios/plugins/*
  • package
    • nrpe
  • service
    • nrpe

2019年11月27日 星期三

bootstrap select

NOte of selectpicker

有時會消失

=> $("#Cc").selectpicker(“refresh”);

2019年11月11日 星期一

20191112

關於攀岩的小筆記…

虛榮者的特性:

  1. 不常攀岩
  2. 一但攀岩必打卡
  3. 會拍天花板照片打卡(通常自己過不去)
  4. 在上述圖片下加上slogan,例:「好久沒攀了」、「沒有過不了的牆」,使人誤以為自己能爬
  5. 下方常有虛榮小夥伴們吹捧「好厲害呀」、「超人~」、「太強了」之類的
  6. 對於錯誤的稱讚通常不加以否認

以上攀岩替代為溯溪、爬山似乎也行得通

2019年10月7日 星期一

FE

前後端分離小心得

  • 格守紀律,決定好的事就不該輕易改變
  • 能不手刻就千萬別手刻
  • 使用如Datatable這類前端庫時,需留意後端是否必須一併配合,並留意是否有相應的庫可使用(例如server-side的東東)
  • 後端盡量用Django,有現成的RESTFUL可用

2019年9月16日 星期一

plain of rock climbing

Phase1
多認識岩友,自己和他們爬,這階段會比較累,可能會每天爬。

Phase2
讓各群的岩友互相認識,並增強他們之間的連結,使他們會主動互相約攀岩。

Phase3
每天都有朋友在岩館攀岩,不用主動約,想攀岩時到岩館,隨時都有繩伴,無被拒風險。

2019年8月26日 星期一

OPS note

OPS note

DPM OPS note

cpu-idle 5% with unknown reason

smstor11:
smstor11
=> mega raid disk checking

2019年8月25日 星期日

唭哩岸站對面的燒烤

七逃仔開的日式串燒
口味太淡了
價格有點貴
地點方便
下次再試試看

ka

ka

卡保逐鹿檢討

  • 手套非必要
  • 中級山我喝水大概2.5L/10hr,由於有混糖水可能不準,需要進一步確認
  • 飲食(以下測試,一天肝糖存量足夠,不會軟腳):
    • 花生牛奶
    • 小饅頭
    • 咖哩+乾燥飯
    • 糖水
  • 走路技巧需加強,消耗過多能量
  • 燃燒過多能量,導致產生過多餘熱、體溫升高,出汗增加,喝水量、進食也增加。
  • 脫上衣有助於散熱、降低體溫,可以減少出汗,避免飲水用盡。
  • 要帶濾水器,這次水差點不夠喝(剩100ml)
  • 濃度過高的糖水會導致脫水
  • 糖水可能得加鹽,或用運動飲料取代(by建宏)

總結

學習休息步
建立能量消耗指標,並評估休息步之效益

2019年7月16日 星期二

pandas note

pandas note

pandas note

https://pandas.pydata.org

read_csv

import pandas as pd
pd.read_csv('<fileanme>', delimiter='<delimeter>', names=['col1', 'col2'])

unique

data['status'].unique()

return

array(['activated', 'running', 'closed', 'transferring', 'finished',
       'holding'], dtype=object)

to_datetime

convert string/int(unix time) to datetime object

pd.to_datetime(data['time'], unit='s')

2019年7月10日 星期三

multipath

multipath

setup multipath

caution
this configuration only work on sl6+promise machine.

  • install packages
    • xfsprogs
    • device-mapper-multipath
  • /etc/multipath.conf
  • reboot machine

/etc/multipath.conf

defaults {
	user_friendly_names yes
}

blacklist {
	devnode "^(sd)[a-z][[0-9]*]"
}

devices {
		device {
		vendor  "Promise"
		product "VTrak"
		path_grouping_policy  group_by_prio
		#getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
		getuid_callout  "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
		#prio_callout "/sbin/mpath_prio_intel /dev/%n"
		prio  alua
		path_checker  tur
		path_selector "round-robin 0"
		hardware_handler  "1 alua"
		failback  immediate
		rr_weight uniform
		rr_min_io 10000
		no_path_retry queue
		features  "1 queue_if_no_path"
		product_blacklist "VTrak V-LUN"
	}
}
  • checking multipath
    if multipath been setup correctly, the output of df -h should be:
Filesystem  Size  Used Avail Use% Mounted on
/dev/sdq2 1.8T  107G  1.6T 7% /
tmpfs  47G 0 47G 0% /dev/shm
/dev/sdq1 194M 82M  103M  45% /boot
/dev/mapper/mpathi 21T  235G 20T 2% /data01
/dev/mapper/mpathb 21T  252G 20T 2% /data02
/dev/mapper/mpatha 21T  243G 20T 2% /data03
/dev/mapper/mpathc 21T  249G 20T 2% /data04
/dev/mapper/mpathg 21T  252G 20T 2% /data05
/dev/mapper/mpathd 21T  255G 20T 2% /data06
/dev/mapper/mpathe 21T  238G 20T 2% /data07
/dev/mapper/mpathh 13T  160G 13T 2% /data08

lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   20T  0 disk  
└─mpathi (dm-0) 253:0    0   20T  0 mpath /data01
sdb               8:16   0   20T  0 disk  
└─mpathb (dm-1) 253:1    0   20T  0 mpath /data02
sdd               8:48   0   20T  0 disk  
└─mpatha (dm-2) 253:2    0   20T  0 mpath /data03
sdc               8:32   0   20T  0 disk  
└─mpathc (dm-3) 253:3    0   20T  0 mpath /data04
sde               8:64   0   20T  0 disk  
└─mpathg (dm-4) 253:4    0   20T  0 mpath /data05
sdf               8:80   0   20T  0 disk  
└─mpathd (dm-5) 253:5    0   20T  0 mpath /data06
sdg               8:96   0   20T  0 disk  
└─mpathe (dm-6) 253:6    0   20T  0 mpath /data07
sdh               8:112  0 12.8T  0 disk  
└─mpathh (dm-7) 253:7    0 12.8T  0 mpath /data08
sdq              65:0    0  1.8T  0 disk  
├─sdq1           65:1    0  200M  0 part  /boot
├─sdq2           65:2    0  1.8T  0 part  /
└─sdq3           65:3    0    8G  0 part  [SWAP]
sdi               8:128  0   20T  0 disk  
└─mpathi (dm-0) 253:0    0   20T  0 mpath /data01
sdj               8:144  0   20T  0 disk  
└─mpathb (dm-1) 253:1    0   20T  0 mpath /data02
sdl               8:176  0   20T  0 disk  
└─mpatha (dm-2) 253:2    0   20T  0 mpath /data03
sdk               8:160  0   20T  0 disk  
└─mpathc (dm-3) 253:3    0   20T  0 mpath /data04
sdm               8:192  0   20T  0 disk  
└─mpathg (dm-4) 253:4    0   20T  0 mpath /data05
sdo               8:224  0   20T  0 disk  
└─mpathe (dm-6) 253:6    0   20T  0 mpath /data07
sdn               8:208  0   20T  0 disk  
└─mpathd (dm-5) 253:5    0   20T  0 mpath /data06
sdp               8:240  0 12.8T  0 disk  
└─mpathh (dm-7) 253:7    0 12.8T  0 mpath /data08

blkid

/dev/sdq1: UUID="bf6357f7-44e8-4f64-9a10-0a58969f070f" TYPE="ext3" 
/dev/sdq2: UUID="77bddbd6-8e9a-4712-8ad4-5dd73ac2538b" TYPE="ext4" 
/dev/sdq3: UUID="e66ef8f7-6c99-44fe-9802-62e7dd8d357f" TYPE="swap" 
/dev/sdb: LABEL="data02" UUID="c88f14b9-056f-443a-ba91-3b842495501e" TYPE="xfs" 
/dev/sdd: LABEL="data03" UUID="cce1537b-31dc-4f5e-b34f-084cefa31604" TYPE="xfs" 
/dev/sdf: LABEL="data06" UUID="a51935d3-56e6-4f42-b302-941d8f0480b1" TYPE="xfs" 
/dev/sdh: LABEL="data08" UUID="e9c3ce71-823d-4121-a1ee-f18150e61e96" TYPE="xfs" 
/dev/sdi: LABEL="data01" UUID="38c17b01-23d7-4e40-b2c4-70a0fe72ec70" TYPE="xfs" 
/dev/sdk: LABEL="data04" UUID="07518c1e-5ff3-44b1-9937-79c446644401" TYPE="xfs" 
/dev/sdm: LABEL="data05" UUID="245602d8-e42e-467c-b81b-4efcb9e659aa" TYPE="xfs" 
/dev/sdo: LABEL="data07" UUID="27208abf-7b8c-4e00-afc2-c1675174a9c2" TYPE="xfs" 
/dev/mapper/mpathi: LABEL="data01" UUID="38c17b01-23d7-4e40-b2c4-70a0fe72ec70" TYPE="xfs" 
/dev/mapper/mpathb: LABEL="data02" UUID="c88f14b9-056f-443a-ba91-3b842495501e" TYPE="xfs" 
/dev/mapper/mpatha: LABEL="data03" UUID="cce1537b-31dc-4f5e-b34f-084cefa31604" TYPE="xfs" 
/dev/mapper/mpathc: LABEL="data04" UUID="07518c1e-5ff3-44b1-9937-79c446644401" TYPE="xfs" 
/dev/mapper/mpathg: LABEL="data05" UUID="245602d8-e42e-467c-b81b-4efcb9e659aa" TYPE="xfs" 
/dev/mapper/mpathd: LABEL="data06" UUID="a51935d3-56e6-4f42-b302-941d8f0480b1" TYPE="xfs" 
/dev/mapper/mpathe: LABEL="data07" UUID="27208abf-7b8c-4e00-afc2-c1675174a9c2" TYPE="xfs" 
/dev/mapper/mpathh: LABEL="data08" UUID="e9c3ce71-823d-4121-a1ee-f18150e61e96" TYPE="xfs"

2019年7月8日 星期一

4/7

Y

4/7和Y以及Y的同學去爬山,現在想想那應該是喜歡上爬山的契機,故此留個記錄。

走的路線是無耳茶壺山=>半屏山=>燦光寮山=>黃金神社,不難,但很熱。過程中有拉繩,有泥巴地,相當有趣。

下了燦光寮山後再往前走一些,向右望去,沿路走過的山在眼前如畫卷般展開,真的好漂亮。好難形容,那不僅是風景優美造成的漂亮,那是親身走過,才能發現的漂亮。

2019年6月22日 星期六

西門新港茶餐廳

乾煸四季豆好吃
蒸餃燒賣普通好吃
炒飯普通好吃

下次可嘗試叉燒麵

2019年4月1日 星期一

SE note

SE note

SE note

mount xrootdfs

xrootdfs -d -o rdr=root://{DPMHEAD}:1094//,uid={USERNAME of current account} {mount point}
http://xrootd.org/doc/man/xrootdfs.1.html

2019年2月20日 星期三

dd

dd

dd用得到的指令

寫一個指定大小的空檔案

dd if=/dev/zero of=dd_1G bs=1M count=1024

寫入映像檔至隨身碟

dd if=<imgfile> -of=</dev/sd...>

2019年2月17日 星期日

firewalld

firewalld

一些firewalld的筆記

新增service

新增指定service
firewall-cmd --zone=\<zone name> --add-service=\<service name>

列出service
firewall-cmd --get-services

自訂service
/etc/firewalld/services/下新增\<service name>.xml檔,格式參考/usr/lib/firewalld/services/下的檔案
並執行
firewall-cmd --reload後就可以用--get-services參數看到該service

新增允許連入的IP

暫時
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'
永久
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'--permanent

Ref

https://blog.gtwang.org/linux/centos-7-firewalld-command-setup-tutorial/2/

2019年2月10日 星期日

dmlite-shell

dmlite-shell

dmlite-shell

這篇筆記中記錄了一些關於dmlite-shell的使用方式

dmlite-shell -e 'command’
-e 參數可以在外部直接執行dmlite-shell的指令,如此便能用python或bash來批次執行指令

2019年2月3日 星期日

openssl

openssl

openssl 常用的指令

X509

X509證書中包含了許多資訊,例如頒發者(Issuer)、主題(Subject)、起始時間(notBefore)、結束時間(notAfter)以及公鑰。這些資訊可以用openssl指令擷取出來,這篇筆記中記錄了一些最近常用的指令。

擷取頒發者資訊

openssl x509 -in <x509 cert file> -noout -issuer

擷取主題資訊

openssl x509 -in usercert.pem -noout -subject

印出證書相關訊息

openssl x509 -in usercert.pem -noout -text

pkcs 12

pkcs 12是種文件格式,副檔名為.p12,內部能包入多個加密對象,設計上具有相當多種功能,實際上大多只用來打包私鑰以及x509證書。在目前的工作中,常使用的功能如下:

輸出pkcs 12文件中的私鑰及證書

openssl pkcs12 -clcerts -nodes -in <filename>.p12 -out clkey.pem
-clcerts:輸出client的資訊
-nodes:不對私鑰進行加密(不加上此參數的話,要輸入密碼)

輸出pkcs 12文件中的私鑰

openssl pkcs12 -nocerts -clcerts -nodes -in <filename>.p12 -out clkey.pem
-nocerts:不要輸出證書

輸出pkcs 12文件中的證書

openssl pkcs12 -nokeys -clcerts -in CERN.p12 -out clcert.pem
-nokeys:別輸出私鑰

檢查

openssl verify -verbose -CAfile trustedca.pem usercert.pem

-CAfile檔案中必須含有信任鍊中的每個證書,以CERN CA為[4]例,把CERN Root Certification Authority 2.crtCERN Root Certification Authority 2.crt兩個檔案相結合即是合法的*-CAfile*

另外,也可以使用這種方式
openssl verify -verbose -CAfile CERN-Root-2.pem -untrusted CERN-GridCA.pem ~/testcert.pem
兩種做法看起來是等價的

ref

[1] openssl manpage
[2] x509 manpage
[3] pkcs12 manpage
[4] CERN CA

Written with StackEdit.

2019年1月26日 星期六

dpm相關指令

dpm相關指令

dpm-開頭的一些指令

這裡會放一些我可能會忘記的dpm相關指令,特別是那些man page沒寫清楚的。

dpm-modifypool

這個指令可以修改pool的屬性,而pool的屬性多可以用dpm-listspace這個指令去查詢。值得一提的是,這些屬性和dpm-modifypool的長參數有時並不會使用相同的名字。

  • --group(s)
    新增可以訪問該pool的group(s),後面的參數和man page寫的格式相同。這個參數會變更dpm-listspaceAuthorized FQANs欄位,在這個欄位中的成員才可以存取該pool的資源。
  • --fss_policy
    設定FS selection policy,也就是選擇file system的依據。這個參數並不存在於man page中,因此目前只確定有maxfreespace能選擇,大多數的情況下

dpm-modifypool man page

rpm

rpm

一些rpm、yum指令

安裝、設定一些軟體時,會使用一些指令,較基礎的是yum installyum search等等。除此之外,尚有一些常用,但又沒有常用到會隨時存在history中的指令,由於實在不好記,因此放在這裡以供自己日後參考。

rpm -qa
rpm “query” "all"的意思,會列出所有安裝的rpm包

rpm -ql <package name>
rpm “query” “List files in package” 的意思,會列出所選的rpm包所包含的檔案及其路徑。

yum provides <file name>
由檔案名反查含有該檔案的package,這在缺少.so檔時很好用

yum info <package name>
查詢已經安裝的packages的相關資訊

yum search|install|provider <args> --disablerepo='<repo name>'
disablerepo長參數用來忽略一些repo,避免搜尋到重覆或過新的的packages

Ref

rpm man page
yum man page
pkgs.ort :查詢、下載rpm包的網站

2019年1月25日 星期五

tmux

tmux

tmux恢復session大小

使用家裡的電腦登入server的tmux session時,有時終端機顯示行數和公司電腦不一樣,導致tmux session的邊框變小,邊框外無法顯示。

為解決此狀況,需要detach tmux session後再attach。使用方法為

tmux detach-client -s <session number>

這個指令我經常忘記,因此放在這裡以供參考。

2019年1月22日 星期二

lcgdm

lcgdm

LcgDM - Data Management Servers

這篇文章是記錄一些小抱怨,和LcgDM不太相關。

做高能實驗的物理學家很愛用縮寫,其中我目前看過最扯的就是LcgDM了。

LcgDM是LCG Data Management(數據管理)的縮寫,而LCG又是LHC Computing Grid(LHC計算網格)的縮寫,其中LHC又是Large Hadron Collider(大強子對撞機)的縮寫。

好好一個 LcgDM project 竟然是三層半的縮寫組成,專有名詞像俄羅斯娃娃似的一個包著一個,在讀文件時一堆這種名詞讓人暈頭轉向。更難過的是,不知是否有意,在多數文檔中很少把全名寫過一次的,這讓新進人員看文件時非常之痛苦。

如果以後有幸能開發軟體,我絕對不會搞這些花招來折騰後人,太缺德了。

2019年1月13日 星期日

CentOS 7 架設 WebDAV

CentOS 7 架設 WebDAV

CentOS 7 架設 WebDAV注意事項

架設過程主要參照這篇文章:
How to Set up WebDAV with Apache on CentOS 7

由於我只是在區網下架設,所以不進行認證,因此conf檔改成以下形式:

DavLockDB /var/www/html/DavLock
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/webdav/
    ErrorLog /var/log/httpd/error.log
    CustomLog /var/log/httpd/access.log combined
        Alias /webdav /var/www/html/webdav
        <Directory /var/www/html/webdav>
            DAV On
            Order allow,deny
            Allow from all
            AuthType None
            Require all granted
            Satisfy Any
        </Directory>
</VirtualHost>

但這樣Client端會無法寫入檔案,此時在 /var/log/httpd/error.log 下會出現以下錯誤訊息:

[Sun Jan 13 20:32:34.870769 2019] [dav:error] [pid 22893] [client 192.168.2.26:63409] The locks could not be queried for verification against a possible "If:" header.  [500, #0]
[Sun Jan 13 20:32:34.870975 2019] [dav:error] [pid 22893] [client 192.168.2.26:63409] Could not open the lock database.  [500, #400]
[Sun Jan 13 20:32:34.871053 2019] [dav:error] [pid 22893] (13)Permission denied: [client 192.168.2.26:63409] Could not open property database.  [500, #1]

這是由於apache沒有寫入 /var/www/html/DavLock的權限,將DB的路徑改到其他有存取權限的地方,或是修改 /var/www/html/ 目錄的owner即可正常使用。

Written with StackEdit.

2019年1月3日 星期四

取出.rpm中的檔案

取出.rpm中的檔案

如何取出.rpm中的檔案

有時候需要再伺服器上安裝一些軟體,偏偏自己沒有root權限,又不想要自己重新編譯,那去下載人家已經編譯好的執行檔是一個常見的方式。

編譯好的執行檔可以在.rpm檔案中找到,這個可以去pkgs.org[2]這類的網站查詢,找到相應的OS版本後,下載下來後,將.rpm檔案解開後,執行檔通常就可以直接使用。以下是解開.rpm檔案的方法:

cd my-dir;
rpm2cpio to-install.rpm | cpio -idv

Ref

[1] superuser.com
[2] pkgs.org