跳到主要內容

好用的小工具 ngrok

最近工作上因為要測試,有些服務的  port 被防火牆擋住了
同事推薦實用的小工具 ngrok

ngrok 官網
https://ngrok.com

裝好後,把你本機開發的服務先帶起來
( 假設服務起來 listen port 為 3000 )

下指令
$ ngrok http 3000










然後把它產生的連結,就可以打破防火牆限制,提供給需要的服務啦

對方連過來後,實際畫面


留言

這個網誌中的熱門文章

Google - Cloud SQL for PostgreSQL adds high availability and replication (Google 雲端 PostgreSQL 資料庫新增了 HA & Replicas )

就在本月, 等了好一陣子的 Cloud SQL  for PostgreSQL 終於加上了 High availability & Replicas 機制; 雖然目前還是 beta 版,不過已經讓人開心,想叫老闆跟同事,趕快使用看看。 相關文件 https://cloudplatform.googleblog.com/2017/11/Cloud-SQL-for-PostgreSQL-adds-high-availability-and-replication.html 另外,也今年夏季也加入了 19 項 PostgreSQL extensions 相關文件 https://cloudplatform.googleblog.com/2017/08/Cloud-SQL-for-PostgreSQL-updated-with-new-extensions.html

Goose - a database migration tool for Go 資料庫遷移工具

Goose Go 語言下,好用的資料庫遷移工具。特別是跟同事協同開發時,做好資料庫版本管理的好幫手。除了用 SQL 外,你也可以自己產生對映的 Go 程式。 Goose is a database migration tool. Manage your database schema by creating incremental SQL changes or Go functions. github repo. (程式庫連結) https://github.com/pressly/goose Install (安裝) $ go get -u github.com/pressly/goose/cmd/goose Usage (語法) kz@KZ ~/Blogger/bloggerfiles (master) $ goose Usage: goose [OPTIONS] DRIVER DBSTRING COMMAND Drivers: postgres mysql sqlite3 redshift Examples: goose sqlite3 ./foo.db status goose sqlite3 ./foo.db create init sql goose sqlite3 ./foo.db create add_some_column sql goose sqlite3 ./foo.db create fetch_user_data go goose sqlite3 ./foo.db up goose postgres "user=postgres dbname=postgres sslmode=disable" status goose mysql "user:password@/dbname" status goose redshift "postgres://user:password@qwerty.us-east-1.redshift.amazonaws.com:5439/db" status Options: -dir string dire...

Arduino 切換開關點亮 LED - 處理 Bounce 問題

原來機械式開關還存在所謂的「彈跳 (Bounce)」問題 解決方式: 1. 延遲時間 (輪詢式) 2. 使用程式庫 Bounce2       官方出了新版的 library Bounce2      參考官方文件作法,調整為 #include <Bounce2.h> #define SERIAL_BAUDRATE 19200 #define LED_PIN 11 #define SWITCH_PIN 7 Bounce bouncer = Bounce(); boolean led_status; void setup() {   Serial.begin(SERIAL_BAUDRATE);   pinMode(LED_PIN, OUTPUT);   pinMode(SWITCH_PIN, INPUT);   // After setting up the button, setup the object   bouncer.attach(SWITCH_PIN);   bouncer.interval(5);      led_status = LOW;   digitalWrite(LED_PIN, led_status); } void loop() {      if(bouncer.update() == true && bouncer.read() == HIGH){     led_status = !led_status;     digitalWrite(LED_PIN, led_status);   } } 3. 延遲時間 (硬體中斷) 參考資料: 1. Arduino 輕鬆入門-範例分析與實作設計  葉難 著  博碩  2015.07 初版3刷 !!! 支持台灣本土作者、支持 TAAZE 讀冊生活 !!!