2017年11月23日 星期四

array_filter的注意事項

        今天前端回報一個api的型別問題,發現有一個應該要return array的卻return成object了,
只有array型別是associative array的時候才會return成object,也就是一個key對一個value,但是之前寫的程式沒有任何key的設定,最後發現是array_filter的坑。

        以下是程式碼:

$ary = [1, 2, 3, 4, 5];

$ary = array_filter($ary, function($v) {
    return $v != 3;
});

echo json_encode($ary);

        當$content進入到array_filter之後,array_filter把不符合label的刪除,但同時也會幫你保留keys值的相對位置,進而把你的array變成associative array。

        也就是說結果變成:{"0":1,"1":2,"3":4,"4":5} 。

        所以這裡我們必須對array_filter產出的結果在處理一次:

$ary = [1, 2, 3, 4, 5];

$ary = array_filter($ary, function($v) {
    return $v != 3;
});

$ary = array_values($ary);

echo json_encode($ary);

        用array_values重新轉換成sequential array就行了。

        結果回到我們預想中的:[1,2,4,5]。


        參考資料:


2017年11月22日 星期三

CI/CD Journey from on-premise to AWS Cloud 筆記


  1. 講者推alb
  2. opsworks一堆坑,直接用ec2設定auto scaling
  3. 之前用opsworks,加掛monit做看門狗
  4.  cloudformation沒有提供隱藏或編碼db密碼的function,講者團隊自己寫一個lambda
  5. cliff推薦用serverless framework,對CI/CD會事半功倍

cliff => https://blog.clifflu.net/2016/09/lambda-container-reuse/

ps. 團隊用的是github+circleci+cloudformation做CI/CD

2017年11月14日 星期二

docker port無法釋出的問題

        已經停止所有的container了,但要起一台新的container卻一直無法成功,不然就說是有衝到port,查詢了之後可能是osx版本docker的network還可能佔有的樣子。

        https://github.com/docker/compose/issues/3277

        
         照著指示清除network就沒事了,主要可以先執行最後一行查看目前的port試試。