2018年9月29日 星期六

[Python] setup Python environment in Mac OSX


  • Environment setup
    • install Python (via MacPorts)
    • sudo port install python
    • version selection (e.g version: 3.6 or 2.7)
      • check installed version by
      • port installed | grep python
      sudo port select --set python python36 (or python27)
      
      Success message: "Selecting 'python36' for 'python' succeeded. 'python36' is now active."
      
    • install pip & select version (python package manager)
    • sudo port install py36-pip (or py27-pip)
      port select --set pip pip36
      
  • Reference

2018年9月19日 星期三

[Programming] Recursive


  • Programming problems 中重要的一個分類就是 recursive
    • e.g. 著名的 n 階算法
    • int factorial(int n) { if (1 == n) return 1; if (0 == n) return 1; return n * factorial(n-1); }
    • 但更重要的是應該要考慮 recursive 的限制
    • stack overflow
      • 解法: 
        • tail recursive
          • 連結內的解釋相當清楚, 主要是透過寫法不同, 讓 compiler 在 O2, O3的 optimization時, 不用 call function, 而是 jne (jump not equal)
          • int factorial_acc(int n, int acc = 1) 
            {    
                if (n == 1) 
                    return acc;
                else
                    return factorial_acc(n - 1, n * acc);
            }
            
        • iterative
          • int factorial_iterative(int n)
            {
                int acc = 1;
                if (n <= 1) return acc;
                while (n > 1)
                {
                    acc *= n;
                    n--;
                }
                return sum;
            }
    • 延伸閱讀

2018年9月10日 星期一

[Child] 相片書比較


  • 從網路上的資訊, 大概先整理如下表格, 等實際印了, 再來分享
    • 品牌價格相片用紙相片印刷裝訂軟體操作/樣板
      健豪便宜


      蝴蝶本
      點點印
      較亮/色彩較鮮艷
      Li Book



  • Referece:

  • 2018年9月9日 星期日

    [Algorithm] optimize complexity - BUD method


    • 可以從 BUD(Bottleneck, Unnecessary, Duplicate) 來思考.
      • Bottleneck
        • 先拆解演算法步驟
          • step 1. 先排序 O(N) 
          • step 2. 再搜尋 O(logN)
          • 則瓶頸在 step 1.
        • 針對瓶頸替換演算法或是移除此步驟
      • Unnecessary
        • 移除過強的 assumption
          • e.g. 排序後再..., 排序這動作是不是一定要?
      • Duplicate
        • 若某一步驟已經做了, 何必再多做一步? 或是可以 early break?
          • e.g. 找 a+b+c = 10 的 solution, 已經找出 (a, b) 的值, c = 10-a-b, 直接 O(1) 得到, 你是否還多做了一層 iteration?
    • Ref: Cracking the coding interview

    2018年7月21日 星期六

    [Board Game]


    • 適合下午放空 activities


  • 阿瓦隆

    • 兩大陣營, 猜測角色

    [Video Game] Nintendo Switch




  • 還滿適合招待朋友玩樂 (可以8人同時遊玩) 



  • 馬力歐 


  • 賽車經典, like 跑跑卡丁車, 有道具  


  • 煮糊了啦, 燃燒吧廚房

  • 滿不錯玩的遊戲, 需要分工合作才能完成
  • [Friendship] afternoon activity


    • 桌遊
    • video game: PS4, Nintendo Switch

    [House] 決策參考


    • location, location, location
    • 教育
    • 生活機能 (便利商店、生鮮超市)
    • 地點參考
      • 基隆八斗子
        • 早安國
          • 13W/P, 室內 47P, total 65P, 也才 10xx, 相當不錯

    2018年7月19日 星期四

    [Visual Studio] Error C2471 cannot update program database xxx.pdb


    • Problem: 
      • MSVC下 build code時, 若出現 error C2471: cannot update program database 'xxx.pdb
    • Reason:
      • Program database 的 process 未正常關閉.
    • Solution:
      • Ctrl+Alt+Del 叫出 Task Manager
      • 強制關閉 mspdbsrv.exe (Microsoft Program Database)
    • Ref: mspdsrv living forever

    2018年7月18日 星期三

    [Shell] Bash 攻略

    分類 指令 用途
    移動 Ctrl-A 移到最前面
    Ctrl-a 移到最前面
    Ctrl-e 移到最後面
    Ctrl-u 清除游標前指令
    Ctrl-k 清除游標後指令
    螢幕操作 Ctrl-l 清除畫面
    常用指令 history 顯示歷史操作,
    !num
    可執行該行指令
    df -h 顯示空間容量
    ln -s fileName linkName 建立 symoblic link to fileName
    wc -lword count
    uname -ashow kernel info
    Ref: