2017/03/15

火線獵殺 - 野境 (Ghost Recon - Wildlands) 心得

完了 Ghost Recon - Wildlands (以下簡稱 GRw) 覺得開放式地圖做的實在不錯,各地區皆有隨機事件,破關方法也可以隨個人喜好自行調整。

但還是覺得有些可惜的地方,像是:

  • 遊戲難度平衡沒有調整的很好
  • 交通工具不好操控
  • 聯合軍有開外掛的感覺
  • 休閒模式還是要練等級,才能看劇情 QQ




我完全不會開飛機 XD


=== 2017/03/17 補充 ===

玩了 35 小時,覺得「野境」裡面中,「聯合軍」的設計,真的把整個遊戲的平衡性給毀了。

攻擊聯合軍只會讓對方的強度越來越高,而且永遠不會減弱,相當於玩家不使用匿蹤的方式進行遊戲就會再見,這樣還好意思說野境是一個任玩家自由採取行動的遊戲?

2017/03/07

為 Gitlab 加上 CI runner 做自動化測試

gitlab-ci-runner 可以裝在 local 也可以跑在 docker container,我自己是安裝在 docker container
docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

上面步驟完成以後,可以先進入 Gitlab 的 Admin => Runner,這邊會顯示 runner access token:



在該頁面可以找到 token,如果要讓之前設定的 token 失效,可以先點選「Reset」換一個 acces token:


先把 access token 複製下來,接下來建立一個 runner 並連接到 Gitlab 上:
docker exec -it gitlab-runner gitlab-runner register

設定說明:
  • gitlab-ci coordinator URL:輸入欲使用 runner 的 Gitlab 網址
  • gitlab-ci token:就是你剛剛複製下來的 access token
  • gitlab-ci description:輸入 runner 的名稱,例如 runner-php56 或是 runner-php70。這個名稱會在 Gitlab 上面看到,建議填寫清楚的名稱以供辨識。
  • executor:我這邊要讓 runner 在 docker container 裡面跑,所以選擇「docker」
  • Docker image:在 docker container 執行時,要使用哪個 image 當作 base。我自己懶的自己 built,用的是「edbizarro/gitlab-ci-pipeline-php
  • gitlab-ci tags for this runner:這邊會請你輸入幾個關鍵字,假設在 project 設定中,出現這幾個關鍵字,則 Gitlab 會自動把符合的 executor on 起來跑。我自己會設定「docker」、「phptest」等等

到這邊若沒看到什麼錯誤,在 Gitlab 的 runner 頁面重新整理後,則頁面最下方可以看到剛剛設定好的 gitlab-ci description (runner name):


這頁有看到的話,可以依樣畫胡驢,在需要使用到的專案 runner 設定頁面,使用這個 runner 來跑測試。



在 Gitlab 上將 runner 設定好,接下來只要在專案上加入「.gitlab.ci.yml」,當 git push 後 Gitlab 便會檔案中的設定自動把 executor on 起來跑,設定方法可以參考 Gitlab 提供的 gitlab-ci.yml 說明

簡易的 PHP library (不包含任何 framework) project 的 .gitlab-ci.yml 大概長這樣:
image: edbizarro/gitlab-ci-pipeline-php:5.6


syntax-check:
    script:
        - "find . -name '*.php' -print0 | xargs -0 -n1 php -l"
    tags:
        - docker

unit-test:
    script:
        - composer install --prefer-dist --no-ansi --no-interaction --no-progress --no-scripts
        - ./vendor/bin/phpunit -v --coverage-text --colors=never --stderr
    tags:
        - docker

上面可以看到我要求 executor 一定要使用「edbizarro/gitlab-ci-pipeline-php:5.6」這個 image,不過由於 tasks 有特別設定 tags,所以這行也不是必要。

而這邊設定了二個 tasks 要求 executor 協助執行:「syntax-check」和「unit-test」。因此 executor 會先跑 syntax-check,確認沒有錯誤後,再去執行 unit-test。

完成後,只要 Gitlab 收到 commit 且就會依照 .gitlab-ci.yml 的設定下去跑。結果會自動顯示在「Pipeline」的列表當中:




Reference:

2017/03/05

Laravel 5.3 的 API routing

弄了很久才搞清楚 5.3 版的 routing 是怎麼搞的,覺得作者把事情弄的更複雜了,也少了一些彈性。

Laravel 5.3 中,routes 已經不是放在 App/Http 底下了,將設定獨立出來放在根目錄:
johnroyer@box:~/devel/laravel53$ tree routes
routes
├── api.php
├── console.php
└── web.php

有個 API 專用 routing 看了當然開心,只是怎麼樣都是不出來 api.php 這邊的設定要怎樣才能起作用。

後來找了很久才發現 Route 功能,已經在 provider 階段把 web / api 的 routing rule 寫死,所以 API 的 routing 有固定的 prefix,在網址是上必須是「http://laravel.root/api」開頭,才會吃到 api.php 的設定。該項 rule 被寫在 RouteServiceProvider 中:
    protected function mapApiRoutes()
    {
        Route::group([
            'middleware' => 'api',
            'namespace' => $this->namespace,
            'prefix' => 'api',
        ], function ($router) {
            require base_path('routes/api.php');
        });
    }


Reference:

2017/02/24

Nginx + PHP + MySQL 的 windows 懶人包

以前都是 WAMP 懶人包,現在終於看到已 Nginx + php-fpm + MySQL 為主的懶人包了:WPN-XM


WPN-XM 看起來已經有不少人在維護,新的 RC 版本也開始支援 PHP 7.x 了,看起來可以關注一下。

2017/02/17

Garmin fenix 3 HR (反串) 開箱文

買了隻 Garmin 的 fenix 3 HR 智慧手錶,按照慣例,網路上已經有不少精美的開箱文,所以按照慣例,我就來記錄一下開箱以後一些個人覺得較不喜歡的地方。


矽膠腕帶

因為 3 HR 有心律感應器,所以錶背需要貼上皮膚上,所以長時間帶會覺得悶熱 (但或許是我不習慣的關係吧)



感應器校準

3 HR 第一次啟動有數個設定需要校準,例如時間、高度計。高度計使用 GPS 訊號做校準不說,但為何時間不能透過和手機連線來設定,只能手動設定或是使用 GPS 資料設定時間?
因此,第一次啟動你必須到室外收 GPS 才能完成所有的基礎設定。


手機通知同步

其實我沒有很想要在手錶上面看到通知訊息  XD
但留意到目前 3 HR 會跳出的通知,僅限主流通訊軟體,像是 Gmail、LINE 等,但 Telegram 的通知,我目前還沒有收到過,感覺頗微妙的。

補充:經朋友告知,預設的確只有常用的 app 通知,但是可以從 Garmin 手機的 app 中,新增需要轉播到手錶的 app 通知。


按鈕

3 HR 的按鈕按鍵重量不輕,因此按按鈕一定需要在按鈕的另一側用手指頂住以免造成皮膚拉扯不舒服,5 個按鈕中,其中的 4 個按鈕另一側均有另一個按鈕,可能會導致誤觸。因此操作時並沒有非常順手。


帳號整合問題

平常有在使用 RunKeeper 當作運動記錄的輔助,但是發現 RunKeeper 要連接智慧手錶時,需要先登入 Garmin 帳號取得授權。

Garmin 設計成可以使用第三方帳號登入

但是使用 RunKeeper 連到 Garmin 登入時,卻沒有使用第三方帳號登入的選項:



已寄信至客服,希望有個好的答覆。



如果你還沒看過別人的開箱文,個人推薦以下幾篇介紹: