前言:

在上完一個禮拜的Intel課程後,本週可以在辦公室專心做事情.可以專心的好好的把工作進度來超前一下.加上coursera的課程都上完了,應該可以有更多的時間可以好好的看看. 本週重點是學習iOS HealthKit 跟 etcd,當然還是有工作上管理伺服器的一些事情…..

筆記:

  • [Unix] 如何增加一個客製化的服務(custom service)
    • 前言:
      • 新增一些伺服器,所以要把舊的伺服器上面的一些服務搬過來.
    • 流程:
      • 複製相關的shell script 到 /etc/default 與 /etc/init.d
        • 這裡要注意,透過windows檔案複製的話會出現”/bin/sh^M : bad interpreter”,解決方式可以參考這裡
        • 要使用dos2unix 去轉換這些script
      • 增加一些設定檔script到 /etc
      • 記得用”initctl reload-configuration”把這些services重讀,參考這裡
  • [iOS] 關於錯誤“Capturing [an object] strongly in this block is likely to lead to a retain cycle”
    • 前言:
      • 因為HealthKit都在搞Async process所以經常在GCD的過程中去使用原先的self process,所以容易產生這個問題.
    • 原因:
      • 根據stackoverflow上面的解釋,主要原因是因為block會保留一份在裡面,如果保留的是self就會造成循環的持有.
    • 解決方式:
      • 加上以下的部分就可以了
__weak typeof(self) weakSelf = self;

[someprocess setCompletionBlockWithSuccess:^(Operation *operation) {
    [weakSelf someOperationInSelf];

} 
  • [iOS] 關於IPWORKS整合
    • 前言:
      • 公司在用的3rd party component,不過每次整合都會忘記,紀錄一下.
    • 步驟:
      • copy IPWORKs, libSSL
      • Add related framework:
        • libz.dylib
        • libssl.a
        • libcrypto.a
      • Add “Preprocessor Macros” in debug
        • IPWORKS_MINSIZE
        • INCLUDE_IPWORKS_XMPP
      • Change “C++ compiler setting in Apple LLVM 6.0 - Language ++”
        • C++ Language Dialect -> Compiler default.
        • Standard Library -> Compiler default.
  • [Go] 準備好好研究一下etcd
    • 前言:
      • 主要起因是因為這個一月份的Golang聚會,裡面有提到etcd很適合作為IOT(Internet Of Thing)的資料庫,所以打算開始survey.看看是不是真的能讓速度快一點.
    • 筆記:
      • 基本上etcd是一個相當快速的key pairing 資料庫,可以透過http直接存取.
      • 其實發現etcd有以下的幾個優點:
        • 可以透過http來讀取與存取. (讀取直接打網址,存可以用Put跟Post)
        • 雖然是Key Pairing Database,但是還是存有index.所以可以記錄之前的資料.也可以透過wait=true達到key-value observing的效果.
    • 參考:
  • [iOS] 關於HealthKit的筆記
    • 玩HealthKit到現在,其實有點困難必須得承認就是對於單位與測量數值的標準化.
    • 簡單的說:
      • 你想要量個血壓,你就得知道你要量血壓單位名稱.還有血壓數值一般轉換的方式.
    • 舉例而言:
      • 你現在需要量血壓,血壓有兩種數值收縮壓(Diastolic)與舒張壓(Systolic),這時候你需要知道以下一些東西:
        • 舒張壓的資料型態(Type)是 HKQuantityTypeIdentifierBloodPressureDiastolic
          • HKQuantityType *DiastolicType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureDiastolic];
        • 舒張壓的單位是(millimeter Of Mercury)
          • HKUnit *DISUnit = [HKUnit millimeterOfMercuryUnit];
        • 接下來,還有取得資料的格式與data formaater的翻譯還沒有.
      • 應該會把這個部分整理一下,變成一篇教學.畢竟網路上教學算很少的.
    • 參考:
  • [Unix] 如何在crontab 裡面加入啟動系統服務的程式碼
    • 問題:
      • 想要從crontab裡面透過shell script去啟動背景服務,但是都會發生啟動失敗.
    • 原因與解決方法:
      • 權限的問題,原本在script裡面直接使用
        • service back_server_foo start
      • 發現會失敗,於是改成
        • root service back_server_foo start
      • 如此一來不會有失敗的訊息,但是還是無法正確的啟動.必須要改成
        • sudo /etc/init.d/ back_server_foo start
      • 這樣才會正確地執行成功.
  • [C++] 關於C++回傳char*的討論與挑錯
  • [Unix]針對SIGPIPE的繼續研究

Evan

Attitude is everything