December 19th, 2014
前言:
在上完一個禮拜的Intel課程後,本週可以在辦公室專心做事情.可以專心的好好的把工作進度來超前一下.加上coursera的課程都上完了,應該可以有更多的時間可以好好的看看. 本週重點是學習iOS HealthKit 跟 etcd,當然還是有工作上管理伺服器的一些事情…..
筆記:
- [Unix] 如何增加一個客製化的服務(custom service)
- [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的翻譯還沒有.
- 舒張壓的資料型態(Type)是 HKQuantityTypeIdentifierBloodPressureDiastolic
- 應該會把這個部分整理一下,變成一篇教學.畢竟網路上教學算很少的.
- 你現在需要量血壓,血壓有兩種數值收縮壓(Diastolic)與舒張壓(Systolic),這時候你需要知道以下一些東西:
- 參考:
- [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
- 這樣才會正確地執行成功.
- 權限的問題,原本在script裡面直接使用
- 問題:
- [C++] 關於C++回傳char*的討論與挑錯
- [Unix]針對SIGPIPE的繼續研究
- 這此修改,主要是上次修改SIGPIPE針對IGN的處理會造成connection broken斷掉的時候沒有一個妥善的處理.這次決定幾把handler接回來,先強迫讓整個process強制結束.
- 參考: