2020年10月7日 星期三

[CMake] FAQ

  • Build Type
    • cmake -DCMAKE_BUILD_TYPE=Debug/Release ..
       
  • Dump all variables
      function(dump_cmake_variables)
        get_cmake_property(_variableNames VARIABLES)
        list (SORT _variableNames)
        foreach (_variableName ${_variableNames})
            if (ARGV0)
                unset(MATCHED)
                string(REGEX MATCH ${ARGV0} MATCHED ${_variableName})
                if (NOT MATCHED)
                    continue()
                endif()
            endif()
            message(STATUS "${_variableName}=${${_variableName}}")
        endforeach()
    endfunction()
      
  • Q: 加了 link_directories, link 時仍找不到 library
  • Q: How to enable C++11?
    • set(CMAKE_CXX_STANDARD 11)
      set(CMAKE_CXX_STANDARD_REQUIRED ON)
      
    • 或是
      ADD_DEFINITIONS(
          -std=c++11 # or -std=c++0x
      )
      

2020年10月2日 星期五

[Business] 管理上的盲點

  • 現象
    • 團隊年齡無斷層, 處理能力卻有斷層
      • 看到主管累個半死, 但下屬無力分擔? 或是 team leader離開後, 群龍無首, 明明團隊平均年資 5-10年, 但競爭力有如 0-5年的團隊?
  • 原因
    • 環境造就強者恆強, 弱者恆弱
      • 有價值(重要)的事務永遠留給核心單一人物, 能力培養的資源分配不均, 最後只有高階(重要)與低階(雜務)的人才, 沒有中階人才
  • 解決的方法
    • (仲裁) 權力下放給 junior member, 並搭配 instructor/mentor
      • 賽車手能力提升, 仍須多跑(有實際實務經驗作累積), instructor / mentor 能針對錯誤給予即時性的回饋, 能有不斷進步的成績
    • 調整團隊重要與緊急的事務排序
      • 低階 / 中階 / 高階沒有明確對應的責任, e.g. GUI 應該留在低階, 專案內客戶 coordinate / 內部時程與團隊間溝通由中階負責, 長期與系統規劃由高階管理
      • 雖有明確規劃, 但專案進行時, 由於時間壓力, 並沒有在對的時間安排對的人做對的事情.

[Society] 適合居住的國家

  • 矛盾
  • 適合生存或適合居住並沒有統一的定義, 適合居住不代表生育率就高, 但生育率低是不是生活的環境或是社會上的價值觀, 環境或生活空間本身就創造了某種環境賀爾蒙? 社會定義了每個人的價值在於工業上的產出, 或是感情上的付出?

2020年9月11日 星期五

[Django] 0. Intro

[Django] 1. Architecture


  • Architecture
    • Route + Model-View-Template
      • urls.py:
        • 負責做 url 的 route, pattern matching, 並把 request pass給對應的 view function.
      • views.py:
        • 屬於 django 的核心, 比較算是 MVC model 中的 controller, 由各 view針對 request 做出 response, 中間的過程可能包含了 template generation 與 model (database) 的 read/write.
      • models.py:
        • MVC model 中的 Model, 將資料庫細節抽象化, 以 class 方式來做存取.
      • templates:
        • html 檔案的位置, MVC 中的 views, 相關 CSS 設計, html div 規劃皆在此.
  • Resource

2020年9月9日 星期三

[Web] Bootstrap with CSS / JS template

  • What is Bootstrap?
    • responsive open source front-end toolkit
    • 簡單說, 就是快速的套用設計與互動模組, 並且支援各種 devices
  • Usage
    • starter template 入手, 參考 examples 使用對應的 codes
      • CSS
      • <!-- CSS only -->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
      • Javascript
      • <!-- JS, Popper.js, and jQuery -->
        <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
      • Responsive
      • <meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport"></meta>
    • examples 包含了 layout (framework), components
  • Reference: Bootstrap

[Tool] using gnu-sed on Mac OSX

  • 問題: 
    • Mac OS 上的 sed 為 BSD sed, 與 Linux上的 gnu sed 差異非常大, 像是不支援 -i, -e 等, 相當煩人
  • 解決方法:
    • 方法一: 用 brew 安裝 gnu-sed, 並將 PATH 環境變數優先指到 gnu-sed$ brew install gnu-sed
    • $ vim ~/.bash_profile
        PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
      $ source ~/.bash_profile
    • 方法二: build from source, 並將 PATH 環境變數優先指到 gnu-sed

2020年9月5日 星期六

[Python] pyenv - Python 版本管理工具

  • What
    • pyenv 是一套管理 Python 版本的好工具
  • Installation
    • MacOSX
      • Homebrew (本來都是用 MacPorts, 但要克服滿多問題, 趁這機會改用 Homebrew玩玩)
        • brew install pyenv
        • 若需要安裝 Homebrew, 可用以下指令:
          /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)
        • Note: Mac OSX 上一般套件管理會選擇使用 MacPorts 或 Homebrew, 各有優缺, 兩個都是會拉 source code, build, install, 比較大的差異是
          • MacPorts 較不依賴系統 libraries (intall package會需要較長時間), 且安裝在 /opt/local/ 下 (權限較沒問題)
          • Homebrew 依賴系統 libraries, 且安裝在 /usr/local 下
          • Reference: 比較 Fink, macports, 和 homebrew 
      • Usage
        • 可安裝清單:
          pyenv install --list
        • 已安裝版本:
          pyenv versions
        • 安裝版本(e.g. 3.7.4):
          pyenv install 3.7.4
        • 系統切換版本:
          pyenv global 3.7.4
        • session 切換版本:
          pyenv local 3.7.4
      • Reference

    2020年9月3日 星期四

    [NAS] 讓 NAS 能在區網外做外部存取 (external access)

    • Router setting
      • 若 server 是架在區網內, 且區網透過數據機與 Router 來連接 Internet, 則 Router 的部分應該要注意以下三個部分: (以 Synology來說, 也可透過 Synology的服務, 來進行設定).
        • WAN(Wide Area Network): 設定 Router 對外連網
          • 注意是動態 IP or 靜態 IP 上網
            • 以 Hinet為例, 20Mbps以上的資費即可申請固定 IP
            • 撥接的帳號通常也不太一樣 (e.g. Hinet 固定 IP 用 yourHinetID@ip.hinet.net帳號, 動態 IP 則用 yourHinetID@hinet.net 當帳號)
        • DDNS (Dynamic Domain Name Service): 註冊 Domain Name, 每次連線自動配對 Domain Name與動態取得的 IP
          • DDNS server 註冊帳號, e.g. 免費的 FreeDNS
          • Router 註冊 DDNS updater
        • NAT (Network Address Translation): 轉換對外 port 與 Router 內部機器的 port
    • Reference