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;
        else
            return 0;
    }
    
    int myAtoi(string str) {
        double testVal = 0.0;
        int absVal = 0;
        int sign = 1;
        
        int i = 0;
        // prefix
        for (i = 0; i < str.length(); i++) {
            // whitespace
            if (str[i] == ' ')
                continue;
            else if (str[i] == '+' || str[i] == '-') {
                if (str[i] == '-') sign = -1;
                i++;
                break;
            } else if (isValidChar(str[i])) {
                break;
            } else {    // illegal prefix
                return 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


2019年1月25日 星期五

[Portal] Sports

[Portal] Child




  • Food
  • Education
  • 衛生用品
  • 出國用品
  • House
  • Playground
  • Exercise
    • Swim
      • 嬰兒游泳: babyFish
      • 小兒游泳: 大安運動中心 古蕓瑋教練
    • 馬術
    • 體操
      • 飛奇兒 信義
    • 舞蹈
      • 雲門舞集 信義館
    • 音樂
      • YAMAHA 功學社 光復分校
    相片書
    • 健豪 PhotoBook
  • Store
    • baby carrier (BECO 雙子星)
    • toys
      • 風車寶貝 (Food 超人)
      • LEGO: A13有零件牆
      • 文具 / 玩具批發
        • 台北
          • 久大文具
          • 張媽媽批發
          • 東東玩具城
            • 算是種類最齊全, 各式商品都有 (e.g. 連 Hape 品牌區 / Food 超人 / WoW / LEGO / 等), 長安與太原路商圈的話個人大概是在東東跟 101 兩間選擇產品
            • 價格街 8 折, 會員 95 折
          • 101 玩具王國
            • 較多高科技性 (e.g. 飛行機/娃娃機), 品質也較細緻(包含模型也是較高檔)的商品, 價格皆 8 折
          • 芃芃玩具
            • 滿有柑仔店的味道, 比較不像我的菜, 跟六信進的低階產品比較像, 但規模又沒有像六信, 感覺高階產品不多
        • 台中
          • 六信批發商
            • 種類滿完整, 比東東玩具城還多了很多大型玩具
            • 但滿多高檔與陸製產品混搭
      • rental service
    • department stores

    [Tool] 用 ExifTool 修改影片日期


    • 用 ExifTool 來修改照片或影片的日期
      • What is ExifTool? What is EXIF?
        • ExifTool: 一個可以修改 EXIF metadata 的 command line 軟體
        • EXIF: 簡單說就是相機為了儲存一些資訊, 在 video/image 檔案前面填了一些額外的資訊
      • How?
        • 安裝:
          • Mac
            • sudo port install exiftool
        • 執行:
          • 更改時間
            • exiftool -alldates="2018:01:01 00:00:00" "-filemodifydate" fileOrDirName
          • 顯示目前時間相關的 tag
            • exiftool -a -s -G0:1 -time:all fileOrDirName
      • Reference

    2019年1月20日 星期日

    [House] 天然氣管線更換

    • 天然氣的安全性
      • 天然氣主要的成分是甲烷, 可能會引發爆炸
      • 燃燒天然氣會產生一氧化碳 (燃燒未完全) 或二氧化碳, 而造成缺氧
    • 天然氣管線更換 (請人來通浴室水管, 結果維修員一進來就說聞到瓦斯味@@)
      • 大台北瓦斯公司來檢查, 還真有瓦斯漏氣
        • 檢查方式: 除了用專用儀器檢測外, 最方便的還是肥皂水
        • 更換方式:
          • 瓦斯管其實分段分的滿清楚的, 一段一段接起來, 所以哪段有問題就換那段就好了. 只是這次剛好卡在牆壁那段比較麻煩就是 XD.



      2019年1月1日 星期二

      [Marketing] 廣告的市場永遠都在

      • 公司的規模來考慮對廣告的需求
        • 大公司需要穩定成長
          • 成長來自新產品
          • 或是新客戶
            • 每年或是每季必定會有新產品拉攏既有的老客戶
            • 以及拉攏新會員新客戶, 
          • 而新品的推銷或是品牌的樹立都有賴廣告的媒介
        • 小公司需要增加曝光度
          • 買產品其實就是買信任, 不論是信任產頻品質或是優質服務, 而一般來說, 人是很好騙的, 曝光度與熟悉度常常會默默地增加你的信任度.
      • 媒合的角度來思考
        • 賣家常常不確定自己是不是打到最匹配的消費群
        • 而買家常常不清楚是不是這就是自己要的品牌、產品
        • 而媒合其實就是同時幫買家與賣家打廣告的中間角色.