Author Archives: Enrico

function pointer print

#include #include void test() { } int main() { std::cout

Posted in C++ Language | Leave a comment

git with specific ssh key

需要將github private repo分享時,可針對repo使用collaborator方式加入帳號,缺點是該帳號具有寫入權限,或是在global設定可存取的ssh key,但這樣的key具有整個帳號的存取權限 另一種方式是針對repo加入deploy key,可以設定是否有寫入權限,但缺點是一旦在某個repo設定了key,不能在其他repo加入。 因此透過新生成的key來指定哪些key可以存取repo,而非使用機器預設的ssh key(~/.ssh/id_rsa)便成了一個折衷方式。 這樣一來可以針對每個repo分別gen一組(or多組)唯讀權限的key,與可寫入的key,再分發給使用者操作。 一行產生ssh key在特定位置(此處設為當前目錄) ssh-keygen -t rsa -b 4096 -f ./id_rsa -y -q -N “” git指定 ssh key 參考:https://stackoverflow.com/questions/4565700/specify-private-ssh-key-to-use-when-executing-shell-command ssh-agent bash -c ‘ssh-add /somewhere/id_rsa; git clone git@github.com:user/project.git’ 其他操作亦同 ssh-agent bash -c ‘ssh-add /somewhere/id_rsa; … Continue reading

Posted in System Administration | Leave a comment

latex install

full installation of texlive yum -y install texlive texlive-*.noarch

Posted in System Administration | Leave a comment

ssl key generation one liner

openssl req -subj ‘/CN=example.com/O=O/C=US’ -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout server.key -out server.crt

Posted in System Administration | Leave a comment

add/sub without +, –

同事問到的一題,不用加減法來計算加減法,當然是使用bit operation來操作,這題的想法主要是處理進位問題。 這邊只用recursive來處理,將進位的結果再加回去。 但須注意recursive可能的深度,避免function call stack overflow。(但以32bit整數加法來說 最多呼叫32次)。 事實上此處的recursive是在最尾端(tail recursive),所以在有處理tail call elimination的語言或是compiler有處理tail call optimization則不需擔心深度問題

Posted in Brainstorming | Leave a comment

chromium note

https://github.com/henrypp/chromium/releases Chromium各版本build,在自動化處理網頁連線時,不同版本的chrome是需要的, 因為越新的版本對一些html5的API限縮得越多(例如chrome 66後,AudioContext需要user gesture才能正常init), 一般配合selenium WebDriver 或 chrome dev protocol來進行操作 可參考 https://github.com/GoogleChrome/puppeteer

Posted in System Administration | Leave a comment

ffmpeg audio volume adjust

當多媒體檔案聲音大小需要調整時 可參考 https://trac.ffmpeg.org/wiki/AudioVolume get stats ffmpeg -i INPUT_FILE -filter:a volumedetect -f null NUL (NUL or /dev/null) [Parsed_volumedetect_0 @ 000001be4a046040] n_samples: 26064896 [Parsed_volumedetect_0 @ 000001be4a046040] mean_volume: -32.1 dB [Parsed_volumedetect_0 @ 000001be4a046040] max_volume: -5.6 dB adjust volume ffmpeg -i INPUT_FILE -af “volume=5.6dB” … Continue reading

Posted in System Administration | Leave a comment

division & modulus

a / b, a % b 當b為0時, behavior undefined,這邊討論其中一個operand為負數的情況 C89 整數除法(有負數情況下 implementation defined) -9/7 有可能是 -1 or -2 (rounded up or rounded down) 當然此時對應的 % 就會根據除法的結果而不同 (這邊討論整數的modulus,floating point可以參考fmod) 要符合 dividend = divisor * quotient + remainder -9 = 7 * … Continue reading

Posted in C Language, C++ Language | Leave a comment

版本號convention

Microsoft .NET Assembly major.minor[.build[.revision]] major, minor一般做法都差不多 使用API compatibility, feature來分別(major不同則可能破壞backward compatibility) Build: A difference in build number represents a recompilation of the same source. Different build numbers might be used when the processor, platform, or compiler changes. Revision: Assemblies with the … Continue reading

Posted in Tips | Leave a comment

windows git bash

with VC2015 support 先透過command line 執行 “C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat” amd64 再進入git bash “C:\Program Files\Git\bin\bash.exe” BAT檔呼叫shell script “c:\Program Files\Git\bin\bash.exe” –login -i -c “COMMAND” 需要注意的地方 一般command line需要傳 forward slash參數時 eg. /help 需要加上 forward slash來escape 例如 //help 參考: https://stackoverflow.com/questions/34647591/passing-windows-slash-based-parameters-to-a-program-from-bash-script

Posted in Tips | Leave a comment