November 2024 S M T W T F S « Jan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 -
Recent Posts
Recent Comments
Categories
Links
Author Archives: Enrico
make整理
makefile: makefile, Makefile, GNUMakefile 一般結構採用top-down,從general寫到details make -n 只印不執行,適合用在debug make規則整理: 第一條rule為default rule (以cmake為例,第一條是 default_target: all) rule分成target, prerequisite, command target: prerequisites command prerequisite定義target的相依項目,command定義生成target make解析順序: 對prerequsites recursive更新檢查,再對target更新檢查(如果prerequsites時間較新,則要重新生成target) target因為是後生成,除非prerequsites有更新,不然一般要比prerequsites新 prerequisite: 除了檔案或是target,也可以是-lNAME (會搜索 libNAME.so => libNAME.a) 但一般不建議利用make來搜尋library是否存在,原因是通常在compiler選項會設定其他的library search path target跟prerequisite比更新時間, 如果沒有prerequisite時,只有不存在target才會生成 同樣的target可以分開寫,會依序執行檢查 libname.a(module.o) lib target: … Continue reading
Posted in Tips
Leave a comment
tcp dynamic port number
在服務器listen port時,port選擇需要注意衝突問題。以windows os來說, Microsoft has increased the dynamic client port range for outgoing connections in Windows Vista and Windows Server 2008. The new default start port is 49152, and the new default end port is 65535. This is a change … Continue reading
Posted in System Administration
Leave a comment
js convert to number
在要轉成number型態時 可用 |0的方式 null | 0 = 0 undefined | 0 = 0 “” | 0 = 0 true | 0 = 1 false | 0 = 0 但注意 | operator有32 bit限制 如果是像 unix timestamp milliseconds的”字串” (例如從網路傳上來) 轉成number時 “1534478379792”|0 = … Continue reading
Posted in nodejs
Leave a comment
async常用function整理
concat, concatSeries 連接results in arrayeach, eachSeries 分別執行every, everySeries 分別執行並加上true/false判斷(false即返回)filter, filterSeries 分別執行並加上true/false判斷(只回傳true的coll), 與reject相反map, mapSeries 分別執行並回傳resultsreduce 分別執行並往下傳resultseries 分別執行function, 返回值統一在callback resultswaterfall 分別執行function, 返回值往下傳 實際上大概 mapSeries, waterfall比較常用到,特別像是在一個api裡要執行一連串SQL時。 waterfall則用在SQL根據上一個返回結果動態生成時方便使用 參考: https://caolan.github.io/async/docs.html
Posted in nodejs
Leave a comment
link -l tips
ld -l namespec搜尋 libnamespec.so => libnamespec.a -l :filename搜尋 filename 另外注意 -l ordering link library需要的dependeny會往後找而不是往前找,如果有前後循環相依的問題可用–start-group archives –end-group來處理 -static or -Bdynamic: it affects library searching for -l options which follow it. 參考: https://sourceware.org/binutils/docs/ld/Options.html
Posted in Tips
Leave a comment
gcc rpath
linux環境在執行程式時,為了將.so library統一放在特定地方而不想更動LD_LIBRARY_PATH或是/etc/ld.so.conf時,可透過在gcc編譯選項加上 -Wl,-rpath=.-Wl,-rpath=./lib 這樣會搜尋執行檔當前目錄的相對路徑(. 即是當前目錄, ./lib 即是當前目錄/lib)但注意當前目錄不等同執行檔所在位置的目錄(也就是從其他目錄執行程式),所以如果.so是放在執行檔所在目錄下的lib,而從其他目錄執行時,一樣會報錯。一般情況預期的相對目錄是相對於執行檔的目錄,這時候就需要加入$ORIGIN 標示。 -Wl,-rpath,’$$ORIGIN/.’ 注意Makefile裡以上是兩個dollar sign確認是否正確可用readelf debug: readelf -d executable|grep PATH 少一個$ ‘$ORIGIN/.’0x000000000000000f (RPATH) Library rpath: [RIGIN/.] 這邊rpath描述的是執行時的,另外有一個rpath-link是編譯時期的參考:https://linux.die.net/man/1/ldhttps://stackoverflow.com/questions/24573732/difference-between-relative-path-and-using-origin-as-rpathhttps://stackoverflow.com/questions/38058041/correct-usage-of-rpath-relative-vs-absolute chrpath
Posted in Tips
Leave a comment
check object path
在處理json回傳內容時,常常需要驗證內容是否符合預期,或是要存取object nested field,如要檢查該field是否存在 時,可用 但這樣稍嫌麻煩,可用 lodash _.has來處理 參考: https://lodash.com/docs/4.17.10#has
Posted in Front-end
Leave a comment
svn ignore tips
編輯 svn:ignore list注意dirname尾巴不要slash / svn propedit svn:ignore . 刪除svn:ignore svn propdel svn:ignore
Posted in System Administration
Leave a comment
js polyfill tips
polyfill的作法 這個方法是在webpack doc (https://webpack.js.org/guides/shimming/)看到的, 但其實動態load script的方式在很多地方都有應用,例如JSONP Getting Started + 在browser內javascript環境下的io都是asychronous的,所以為了要動態load script並確保執行順序,利用動態插入<script> tag 以及script synchronous load的特性來完成。
Posted in Front-end
Leave a comment
chromium os tips
下載 https://chromium.arnoldthebat.co.uk/?dir=daily 參考此篇安裝 How to Run Google Chrome OS From a USB Drive 其他 進console: Ctrl+Alt+F2 預設帳號: chronos 有些指令是要sudo 例如fdisk 預設是boot from usb 安裝寫入hard disk: root權限 chromeos-install –dst /dev/mmcblk0 (裝置路徑 如/dev/sda) Ctrl+Alt+/ => hot key tips Ctrl + F5 print … Continue reading
Posted in Tips
Leave a comment