Author Archives: Enrico

\ & ¥的顯示

在line chrome extension,常常看到 \ 顯示成 ¥,其實這是因為字型的問題,部分日本字型會有此行為,其中一個是Gothic字型 原因可參考: https://tex.stackexchange.com/questions/406247/yen-%C2%A5-symbol-for-backslash-in-texworks Some Japanese fonts, e.g., MS, Yu, IPA, and Meiryo, render U+005C (REVERSE SOLIDUS) as a yen symbol while yen symbol is assigned to U+00A5 and 0xA5 in Latin-1 encoding. This stems from … Continue reading

Posted in Front-end | Leave a comment

boost build with fPIC

在build so檔時如果要static link boost ,出現error message … can not be used when making a shared object; recompile with -fPIC 需要將boost static build加上PIC的參數 ./b2 cxxflags=”-fPIC” link=static install 參考: https://stackoverflow.com/questions/49129115/linking-boost-static-libraries

Posted in C++ Language | Leave a comment

CentOS 7 routing metric modification

nmcli connection modify “enp3s0” ipv4.route-metric 200 綁定多張網卡在同網段時,系統預設會加上route,透過metric的設定可以相規則排序。 範例中透過nmcli將enp3s0的metric設成200 可以看到以下 /etc/sysconfig/network-scripts/ifcfg-enp3s0 的IPV4_ROUTE_METRIC被設定為200,設定完需重新啟動network service

Posted in System Administration | Leave a comment

Set-Cookie notes

在chrome測試set cookie時,發現有時候http可以set成功,可是有時候會set失敗 通常set cookie失敗,主要是一些條件不符合,例如有Secure字串,可是不是透過https,或是SameSite=None可是沒有Secure 上面這個例子很單純,Path (cookie作用路徑),HttpOnly不讓js code存取cookie,但是瀏覽器卻報錯: This Set-Cookie was blocked because it was not sent over a secure connection and would have overwritten a cookie with the Secure attribute. 在確認server side送出來的Set-Cookie header的確沒有Secure後,查了一下網路資料 https://stackoverflow.com/questions/52763345/browsers-ignore-set-cookie-response-header-if-we-try-to-set-a-cookie-which-was-s https://www.petefreitag.com/item/857.cfm 上面提到如果browser同時有該網站的http/https cookie,如果在https cookie中有設定Secure,則該屬性會影響到http的Set-Cookie行為 另外參考 https://tools.ietf.org/html/rfc6265#section-8.5 … Continue reading

Posted in Front-end | Leave a comment

scp from remote to local

要透過ssh從遠端複製檔案到local 有很多工具可用,例如sftp, scp,rsync over ssh sftp 透過get -r 可以recursively抓下整個資料夾 這邊介紹使用scp方式 scp -p -r remote_server:/dir_path local_path 上面的 -p 是保留檔案的modified time,不然預設複製回來時,檔案時間會是複製時的寫入時間 如同cp一樣,前面的參數是 src 後面是 dest,一般我們在使用scp常常是將local 檔案copy到remote: scp -r local_dir remote_server: 用法其實很類似,只是src和dest的位置交換了。 其實透過rsync可以更方便的同步資料夾,特別是要檢查檔案時間改變才更新下載時 ref:https://unix.stackexchange.com/questions/105140/how-to-copy-only-new-files-using-scp-command/205018

Posted in System Administration | Leave a comment

Node.js event .once 使用時機

Node.js EventEmitter裡註冊接收事件一般使用 .on(‘event name’, handler) 的方式,但有一個api是 .once,也就是註冊後觸發listener會自動remove,可參考 https://nodejs.org/docs/latest-v12.x/api/events.html#events_emitter_once_eventname_listener .once 在一般情境較少用到,原因是處理接收事件常常是跟著發送事件的物件生命週期(例如stream的’data’事件,.once只做一次性的handle,能使用到的情境比較像是需要接收到狀態變更,系統落入A狀態要等待切換到B狀態,因此在A狀態時註冊一個接收切換到B狀態的listener,一旦切換到B狀態就remove listener,等待下一次落入A狀態時再註冊 在Node.js doc介紹stream的地方有個不錯的範例 https://nodejs.org/docs/latest-v12.x/api/stream.html#stream_stream 節錄於下 可以注意 當writer.write 失敗時,就休息等待’drain’ event,再繼續write,也就是如上描述的 – 等待新的狀態變更。

Posted in nodejs | 1 Comment

two’s complement overflow detection

two’s complement overflow有兩種情況會發生 carry in without carry out carry out without carry in 用8 bit signed int為例 -100 + (-30) 1001 1100 + 1110 0010 ———— 1 0000 0000 <- carry bit C S = 1 0111 1110 C的位置是carry out(就是我們一般說的carry), … Continue reading

Posted in C Language | Leave a comment

one’s & two’s complement number system

在計算機的底層是用0、1來表示資料,因此人類的符號系統要透過電腦表示就需要做編碼轉換,ASCII、Unicode等都是做此用途,而在(整數)數字系統的編碼,比較常見的有 ASCII (將數字用ASCII表示) -200 => 2D 32 30 30 BCD 189 => 01 08 09 (packed BCD) one’s complement (assume 8-bit size) 0 => 0000 0000b -0 => 1111 1111b (unsigned = 255) -1=> 1111 1110b (unsigned = 254) 127 … Continue reading

Posted in C Language | Leave a comment

ssl cert – EasyRSA

要產生自簽憑證,可以透過openssl command的方式產生ca, 用ca簽發憑證,不過步驟繁瑣,透過EasyRSA可以快速地完成 https://github.com/OpenVPN/easy-rsa 目前最新版是3.0.7,網路上有些介紹使用v2版本,此處介紹v3版本 解開EasyRSA-3.0.7.tgz 需要修改的是vars檔案,先將vars.example改成vars 裡面的設定大部分使用預設值即可,以下跟機構相關資訊一般會修改,憑證有效時間也可以修改,預設CA是3560天。 set_var EASYRSA_REQ_COUNTRY “US”set_var EASYRSA_REQ_PROVINCE “California”set_var EASYRSA_REQ_CITY “San Francisco”set_var EASYRSA_REQ_ORG “Copyleft Certificate Co”set_var EASYRSA_REQ_EMAIL “me@example.net”set_var EASYRSA_REQ_OU “My Organizational Unit” 設定完後首先初始化pki ./easyrsa init-pki 建立CA ./easyrsa build-ca 產生server csr & key, client csr & key … Continue reading

Posted in System Administration | Leave a comment

C/C++中macro的ifndef

以下節錄一段icu unicode lib的文件裡的sample 理論上,這類的macro會定義在header file,而一般header file都會有include guard,所以不會重複include那為什麼要在U_CHARSET_IS_UTF8再檢查一次是否定義過呢? 主要的原因是發生了不在此header定義了這個macro可能來自於其他header,也可能來自於compiler參數例如 g++ … -DU_CHARSET_IS_UTF8=1 這樣就可以透過makefile來做一些動態的macro值改變的處理

Posted in C++ Language | Leave a comment