- crontab -e
- edit 的意思
- format
- sec min hour date month day task
- e.g.
5 * * * * * * $(date) >> ~/logTime.txt
2020年2月15日 星期六
[Linux] cron 例行性工作
[Multimedia] Portal
- Codec
- AOM
- VP9/AV1
- MPEG
- AVC/H.264
- HEVC/H.265
- VVC/H.266
- China
- AVS
- Muxer
- mp4
- mpeg2-ts
- Tool
- MediaInfo
- Feature: 提供讀取 media 的 metadata, 有 CLI 與 GUI 介面
- Install
- (GUI)
sudo port install MediaInfo-gui
- (CLI)
sudo port install mediainfo
- FFmpeg
- probe/codec plugin/player
[FFmpeg] usage
- transcoding
ffmpeg -i input.rmvb -vcodec mpeg4 -b:v 200k -r 15 -an output.mp4
- -r: rate
- show signaling information
ffprobe -show_packets input.flv
2020年2月12日 星期三
[GNU/Linux] Bash
- Who/Whom
- GNU project 下, 供 GNU Operating System / Unix (當然在 GNU/Linux也有) 使用的 Shell.
- When?
- first release 1989
- What?
- GNU Bourne-Again SHell
- 屬於 GNU packages, 基本上是一個 command processor, 可處理指令 (e.g. UNIX commands, like ls, sed, ...etc.) 或是執行 shell script
- Features
- pipeline
- Grammar
- interactive
- Usage
- 環境設定, 切換 shell 為 bash (change shell) (MacOSX 最新預設為 zsh
chsh -s /bin/bash
- Pipeline & redirect
- file descriptor
- 0: stdin
- 1: stdout
- 2: stderr
- Shell Script
- command: ((...))
- variable syntax: $((...))
- 相關 shell script 教學可參考鳥哥
- 常用 scripts
- iteration
for i in $(seq 1 2 10)
for file in `find . -name *.mp4`
find . -type f -exec mv {} dst/ \;- 取代內容
sed 's/orig/replaced/' file.txt
pipe
find . -exec echo `echo "{}" | sed 's/./foo/g'` \;- 字串處理
- 去頭
- 去尾
- 印 timestamp
$(date)
- Config
- /etc/profile, .bashrc, .bash_profile
- Reference:
- man bash
- Wiki
2019年10月30日 星期三
[LeetCode] String to Integer (atoi)
思路: 先處理 prefix, 分別判斷合法字元 +, -, 後面再處理數字部分, 以 double 暫存判斷是否會 overflow or underflow
class Solution {public:int isValidChar(char c) {if (c >= '0' && c <= '9')return 1;elsereturn 0;}int myAtoi(string str) {double testVal = 0.0;int absVal = 0;int sign = 1;int i = 0;// prefixfor (i = 0; i < str.length(); i++) {// whitespaceif (str[i] == ' ')continue;else if (str[i] == '+' || str[i] == '-') {if (str[i] == '-') sign = -1;i++;break;} else if (isValidChar(str[i])) {break;} else { // illegal prefixreturn 0;}}for (; i< str.length(); i++) {if (isValidChar(str[i])) {testVal = 10.0 * absVal + (str[i] - '0');if (sign * testVal >= INT_MAX) {return INT_MAX;} else if (sign * testVal <= INT_MIN) {return INT_MIN;} else {absVal = (int) testVal;}} else {break;}}return sign * absVal;}};
2019年8月29日 星期四
[Management] 個人在組織中的管理與策略
- 做任何事都該有策略
- 在什麼位置, 做不同思考
- 有人說換個位置, 換個腦袋, 帶有貶義, 但其實本來就該因地制宜。
- 以棒球球員為例
- 訂定目標
- 第四棒該以提升打點為目標; 而第九棒或許以安全上壘為目標
- 個人訓練
- 第四棒不用擔心沒有練習機會, 或許可以聽取多方專家建議, 看是否哪邊還能進步以及保持既有最佳狀態 (e.g. 全壘打數), 例如細部姿勢微調, 保持核心肌耐力等。
- 第九棒就像櫻木花道一樣, 穩定的基礎 (安打數) 會是非常重要的, 因為可能教練根本對你也不期待, 因此安打比全壘打重要多了, 想揮大棒反而揮棒落空時, 你只會得到責難還不是加油打氣 (或許可以跟強棒揮大棒而落空時做對比)。
- 心理素質訓練
- 對於第四棒當然就是高期許跟高關注, 每次表現都會被放大檢視, 最好的情形當然是先自我檢視, 專注在自己還能進步的地方, 過濾無意義的輿論, 讓好的建議進得來。
- 反之, 第九棒則是冷落與鄙視, 很多時候甚至好表現會被視為運氣好, 以及一堆雜事可能會落在你身上, 這也是可以理解, 畢竟時薪低, 站在整體最佳化的角度下, 這是必然的。不要讓這些外務影響你自我的訓練, 是非常重要的, 持續保持進步, 否則就算機會來了也留不住。
- 吵糖吃
- 基本原則應該都是用數字說話, 因為球團可能也是看一樣的數字。不過有個情況比較特別, 那就是球團的支出花在教練比花在球員多。這必須拉到另一個檔次, 也就是球隊的獲益誰的貢獻多。這很多時候只有局中人最清楚,是因為球隊管理訓練佳, 再差的人進來都可以變強投強打; 還是球員的努力多過管理的需求?
- 第四棒基本上是尊重, 並簡單的反應, 理論上應該就會有效果。
- 第九棒則是應該在哪天好的機會降臨時, 確實有好表現時再討糖或許比較有效果; 但若真的都沒有什麼好機會, 都在打雜時, 轉換環境確實也是一個選擇。
2019年2月24日 星期日
[FFmpeg] build ffmpeg
- 目的: 產生 FFmpeg binaries
- FFmpeg: 主要做 encode/decode
- FFprobe: 主要做 container及 metadata 的 parsing
- FFplay: based on SDL 的 player, 主要做 display的動作
- How to build
- 同一般 linux project, configure->make->install
./configure --prefix=/Users/hank/Projects/build/ffmpeg --enable-libx265 --enable-libx264 --enable-gpl
- 值得注意的是 ffmpeg 主要搭配非常多 3rdparty libraries
- demuxer
- demuxer 可以理解成 container 的封裝格式, 諸如 dash, mpeg-TS, iso-bmff (mp4) 等格式, 可透過 ffmpeg -formats 或 ffmpeg --list-demuxers 查看
- codec
- codec 則可透過 ffmpeg -codecs 或 ffmpeg -encoders 或 ffmpeg --list decoders 查看.
- e.g. x264(depends on nasm), x265, ...
- filters
- 而這邊則可以針對需要支援的 codecs / container 在 configure 階段進行 link
- e.g. 3rdparty
- codecs: x265, x264, aom
- demuxer: dash
- Q&A
- ./configure 後, Tools 只有看到 ffmpeg, ffprobe, 卻沒有看到 ffplay
- 那是因為 configure 的時候沒有找到 sdl2 library, 而 ffplay depends on sdl2
sudo port install libsdl2
2019年1月26日 星期六
[CS] programming books
- Kernighan & Plauger, "The Elements of Programming Style"
- Wirth, "Algorithms + Data Structures = Programs"
- Oram & Wilson, "Beautiful Code" (中譯本: 美麗程式-頂尖程式設計師的思考方式")
- Coders at Work
- Reference
[CS] Master or famous people in computer science
- Eric Steven Raymond
- Rob Pike
- Book:
- The practice of programming
- The Unix Programming Environment
- Ken Thompson
- UNIX OS designer
- Go programming language designer
- grep
- Dennis Ritchie
- C programming language designer
- UNIX OS designer
- Brian Kernighan
- Linus Benedict Torvalds
- Linux, git
- Richard Stallman
- GNU, GCC, GDB
- Jeff Dean
- Google MapReduce, Tensorflow
2019年1月25日 星期五
訂閱:
文章 (Atom)