分類
系統技術

使用play-with-docker快速建立mongodb測試環境

使用 play with docker: https://play-with-docker.com 可以快速建立 docker container 環境, 每次可以使用 4個小時, 供測試驗證應用.

進入 play with docker 後, 使用以下指令進行 mongodb 的建立:

docker run --name some-mongo -d mongo

當然因為沒有 mongo 的 image, 所以會進行 pull, 並發起一個 container 執行 mongodb.

接下來可以使用 docker ps 來檢查是否已正常執行.

若要進入該 instance 裡, 可以使用以下指令:

docker exec -it some-mongo /bin/bash

就可以進行該 mongo instance 中的 bash 中, 進入 db 的 shell , 可以再下指令: mongo, 即可正常進入該 mongodb 的 shell 中, 接下來就可以使用大家熟悉的 mongo 指令, 如:

use [db_name]
db.createCollection(“[collection_name]”)
db.[collection_name].insert({xxx})

等指令.

分類
程式技術

使用Google Drive API讀取文件內容供前端應用

有時在做一些小型的前端介面, 需要 CMS (內容管理系統) 的上稿功能, 來進行內容管理, 不過實做上稿系統需要相當的時間與設計, 若能使用更簡便的方式, 將能大量節省維護的成本, 例如使用 WordPress 或今天要介紹的 Google Drive API.

使用共用文件的方式來管理內容, 除了介面不用再實做外, 也可以透過權限管理來做一些設限, 方便存取與更新. 這次介紹的 API 是讀取 Google Docuemnt 的內容來供應前端應用, 所以就是讓程式讀取內容, 而使用者則是使用 Google Document 來更新內容.

會使用到的 API 為 Google Drive API 中的 file export, 目前已是 v3 的版本了, 可以參考:

https://developers.google.com/drive/v3/reference/files/export

如何使用呢, 首先在 Google Drive 新增一個 Google文件(Document)檔案, 並開放為擁有連結的人都可以檢視, 並取得該檔案的 fileId, fileId 就是在 URL 上會看到或是 share link 上會看到的一串英數, 有區分大小寫, 如:

https://docs.google.com/document/d/18De5jl4VhDP8XU7g_UOO2PcZ5qiCCBg4S2B5FOzgLFA/edit?usp=sharing

其中的 18De5jl4VhDP8XU7g_UOO2PcZ5qiCCBg4S2B5FOzgLFA 即為 fileId.

接下來在 google developer console 新增一個專案, 啟用 Google Drive API 功能, 並建立 API key 即可透過以下 API 進行檔案內容存取:

https://www.googleapis.com/drive/v3/files/18De5jl4VhDP8XU7g_UOO2PcZ5qiCCBg4S2B5FOzgLFA/export?mimeType=text/plain&key=[your api key]

其中 fileId 即為該文檔的 fileId, 而 export 為讀取, 後面的 mimeType 可以有以下幾種:

(更多可以參考: https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents)

而最後的 API key 則為在 Google Developer Console 專案內建立的 API Key, 就可以順利讀取內容, 以下則為一個簡單的範例:

http://sample.diary.tw/43/readdoc.php

程式碼如下:

$url = "https://www.googleapis.com/drive/v3/files/18De5jl4VhDP8XU7g_UOO2PcZ5qiCCBg4S2B5FOzgLFA/export?mimeType=text/plain&key=[your api key]";  
  
$data = file_get_contents($url);  
  
echo $data;

如此一來可以方便使用者上稿又能快速更新到前台, 十分方便.

Quota 的部分如下:

每日 10億次, 每 100秒每使用者 1000次, 每 100秒 1萬次, 三個計算基礎以下為免費.

 

 

分類
FreeBSD/Linux

WIFI AP使用頻道掃描

在設置家用 WIFI AP時, 有時會有收訊好, 但品質不好的問題, 若有線沒有問題的狀況下, 即使 WIFI AP 收訊格數不錯, 也沒有好的品質時, 可以將 wifi 的 channel 和附近訊號較強的 wifi ap 分開, 以達成不會互相干擾導致的寬頻不良狀況.

可以使用工具如下(免費):

Android: Wifi Scanner: https://play.google.com/store/apps/details?id=com.farproc.wifi.analyzer
iOS: AirPort 工具程式: https://itunes.apple.com/tw/app/airport-%E5%B7%A5%E5%85%B7%E7%A8%8B%E5%BC%8F/id427276530?mt=8
Windows: Wireless netview: http://www.nirsoft.net/utils/wireless_network_view.html

利用這些工具可以查找 wifi ap 使用的 channel, 參考訊號較強的 ap channel, 必須分開不互相在同一頻道上, 可減少 wifi ap 互相干擾的狀況, wifi ap channel 的設定, 一般出廠值都會設定在 auto, 也就是自動選擇, 若要進行手動調整, 建議是在訊號不錯的狀況下, 但頻寬表現不良時使用, 沒有必要也不需要手動進行調整.

其中以 wifi scanner 來看:

集中在 1, 11 上, 就可以將自己的 ap 設定在 4, 6, 7 上以分離不同頻道來進行 wifi ap 的傳輸優化.

另外 iOS 的 AirPort 工具程式, 要到設定裡, AirPort 中的 Wi-Fi 掃描器打開(預設為關閉), 就可以在不用 JB 的狀況下掃描 wifi ap 的頻道.

參考資料:

https://www.accessagility.com/blog/free-wifi-scanner-for-iphone-and-ipad-without-jailbreak

https://www.technonutty.com/2016/04/wifi-analyzer-channel-scanner.html