Feeds:
文章
留言

Archive for the ‘未分類’ Category

今年要在新的主機上佈署開發環境, 本來想說應該很快完成, 結果一直出現奇怪錯誤, 害我對 docker 信心下滑了不少, 後來遇到 apache 的 no MPM Loaded 怎麼調都無法運作, 才發現[1] 討論到 CentOS 搭配 Overlay Storage 有問題, 建議改用 devicemapper. 調整流程(image 會消失!image 會消失!image 會消失!)

環境

  • Centos 7
  • Docker 18.04.0-ce-rc1

 

1. 新增 /etc/docker/daemon.json

 

{
  "storage-driver": "devicemapper"
}

2. 重新啟動 daemon

systemctl stop docker

systemctl start docker

 

補充: docker 切換成 devicemanager 後有警告" devicemapper: usage of loopback devices is strongly discouraged for production use.“, 似乎有更好的做法….

參考資料

[1] php:7.0-apache: AH00534: apache2: Configuration error: No MPM loaded

[2] Use the Device Mapper storage driver

[3] Use the OverlayFS storage driver

[4] Docker storage drivers

廣告

Read Full Post »

今天上完課程獲得不少心得, 講員的內容非常棒釐清了我對於 IoT 和 MQTT 方面的疑惑. 尤其是 Hawk 的以邏輯閘講解 IoT 控制有眼睛一亮的感覺挺特別. 總結 IoT 聯網的目的就是做自動化控制, 所以整理了研討會提到的幾種模式

IFTTT 作為中介

mlubpaw

這個模式簡單說 IoT 設備都比較單純, 感測器數據發送數據到 IFTTT, IFTTT 設定條件觸發到執行動作的IoT設備, 由於 IFTTT 負責條件控制, 所以 IoT 的程式相對簡單

自建類 IFTTT 服務

ercgxue

基本上概念上和 IFTTT運作類似, 由於IFTTT需要收費或公司內部使用可採行這個模式, 主要利用 etcd 可監控key對應值變更通知特性, 我的理解go簡單實作可開兩個 goroutine  ,一個負責監聽數據收集的 key 變動, 另一個監聽動作輸出的 key 變動, 當輸入key異動滿足條件時, 將動作操作寫入對應 key 而不直接連動 IoT 輸出控制, 動作輸出 goroutine 一樣依據條件判斷執行 IoT 設備控制.

MQTT

1iseqns

比較常見的 IoT 自動化做法, 以 MQTT 協定作為通訊基礎, 採行訂閱-發布模式, IoT 端負責邏輯判斷

其他心得

1. Android MQTT App – 方便測試 MQTT 協定

IoT MQTT Dashboard

Linear MQTT Dashboard

2. github 有支援 .ipynb 檢視(Desktop Web Only)

3. Pi 可透過 USB 轉 RS485 與 PLC 通訊

 

 

 

 

 

 

Read Full Post »

檢查是否有

fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;

另外, 如果有啟用 fastcgi cache, 記得將這兩個也列為 cache key, 如

fastcgi_cache_key “$scheme$request_method$host$request_uri$http_if_modified_since$http_if_none_match";

 

Read Full Post »

今天程式發生了一個小插曲, 本該正常的功能出錯了, 本以為是之前權限調整忘了同步異動, 可是權限正常. 後來仔細檢查發現居然是功能使用中的函數被刪掉… 對…被刪掉… 還蠻扯的. 真是什麼情況都會發生

還好有 Git, 本來想用 SmartGit | Blame 不過不好找, 後來發現有個簡單的方法

1. 將受害檔案的 commit 差異轉存檔案

* git log -p LossFunction.php > log.txt

2. 用文字編輯器查找消失的函數名稱, 就可以找到兇手了

 

Read Full Post »

Android 騎士傳說存檔修改

該遊戲使用 Unity 開發, 原本改完 IL 準備好好的玩一場, 結果發現重打包會導致Google Play Game Service 無法登入, 於是換了條路改走離線存檔, 該遊戲的存檔在

/data/data/com.turbochilli.gks/shared_prefs/com.turbochilli.gks.v2.playerprefs.xml

內文類似如下

2016111703

紅色標記就是遊戲的儲存資料, 使用 URL Encode, 轉成可讀的內文如下(我玩到49關的紀錄),  其實最重要的就是錢( Coins) 改高一點就可以玩的很輕鬆, 如果要提高經驗值就改 XP 的值. 改完後逆向操作就在重新打開遊戲立即生效(我的存檔)

20161105

 

2016111704

 

 

Read Full Post »

有個需求是想將 .vue 打包成 .js 可在 <script> 使用, 已獨立元件使用而不是整個 App, 參考 vue-spinner 原來有幾個關鍵

  1. 將要可使用的元件 exports 成獨立 .js 
  2. 設定 webpack.config.js
    1. entry : 指向 exports 的 index.js
    2. output.library : 指定公開的名稱, 如 output.library.VueSpinner, Web 可用 window.VueSpinner
    3. output.libraryTarget: 指定模組格式

Read Full Post »

.NET Core 1.0 初體驗

看到 .NET Core 1.0 (Runtime) 正式發布消息, 於是趕來嘗鮮一下, 結果 sdk 還是 preview 2…

https://www.microsoft.com/net/download#core

算了… 還是試玩一下, 下載 “.NET Core SDK binaries only" 解壓縮即可使用

我的開發環境如下
* Windows 10 x64
* Docker Toolbox 1.11.1
* .NET Core SDK 1.0 Preview 2 x32

.NET Core SDK 目錄結構

建立一個 hello 目錄

依據執行 dotnet new, dotnet restore, dotnet run 就可以看到 Hello World 如下圖

執行到這裡已經產生可跨平台執行的 .dll, 待會用 docker 驗證

目前hello目錄下已經產生如下的目錄結構

其中 hello.dll 就是編譯輸出後的檔案, 可用 dotnet.exe hello.dll 執行

Program.cs 是主程式檔, 如果有多個 .cs 會自動編譯

project.json 是專案描述檔, 編譯就靠這個檔, 如果有調整就需要執行一次 dotnet restore 產生新的 project.lock.json 才能依據新的設定編譯

接下來就啟動 Docker Terminal

先 docker pull microsoft/dotnet:latest

再建立 container, docker run -it -v /c/Users/cwchiu/:/cwchiu microsoft/dotnet:latest

執行剛剛 Windows 上產生的 .dll 如下圖

還有個問題就是每次執行程式都需要 dotnet.exe 才能執行產生 .dll, .NET Core 有提供 self-contained application 可以產生"當下"編譯環境的可執行檔

將 project.json

修改為

依據執行 dotnet restore 和 dotnet build 產生 hello.exe, 可不需要 dotnet.exe

雖然我的 OS 是 Win10 x64, 但因為我使用的是 x86 .NET Core SDK 所以編譯最後選擇產生的是 win10-x86

docker 上的 dotnet 要編譯可執行檔需要使用 runtime 為 debian.8-x64, 其他 runtime 識別碼可參考

https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog

2016.7.6補充輸出非開發平台的原生程式

dotnet publish -r “debian.8-x64″

可以直接輸出目標平台的原生程式, 無需依賴 .NET Core

從 Docker 中執行如下

實際佈署到 CentOS 7.2 可能出現

Failed to load /root/dotnet/bin/libcoreclr.so, error: libunwind.so.8: cannot open shared object file: No such file or directory"

依據網路解法, 安裝 yum install -y icu libunwind

終於看到執行結果

Read Full Post »

Older Posts »