1.首先申請一個GoogleMAP GeoAPI

2.建立csv檔案,將所有要解析的地址放在'address'欄位

3.csv 檔案要用utf8格式

4.如果遇到SSL無法驗證,請安裝Win32OpenSSL

Github: https://github.com/youjunjer/Address2Geo


'''
1.Apply a Google Map Geo API Key
2.Create a csv file and put all addresses in one column with name 'address'
3.csv file must utf8 encoding
4.Install Win64OpenSSL for https protocal. (https://slproweb.com/products/Win32OpenSSL.html)
'''
import requests
import json
import numpy
import pandas as pd
StoreData = pd.read_csv('address.csv') 
geo=[]
storeaddress = StoreData['address'] #address data in the 'address' column
for i in range(storeaddress.size-1):  
  print(i)
  try:
    r = requests.get('https://maps.googleapis.com/maps/api/geocode/json?address=' + storeaddress[i] + '&key=AIzaSyDSDe5BXTPUec8dAfa44MkqsqslA4Sp484',verify=False)  
    if r.status_code ==200:
      data=json.loads(r.text) 
      geo.append(str(data['results'][0]['geometry']['location']['lat']) + ';' + str(data['results'][0]['geometry']['location']['lng']))
  except:
    #give 0;0 if address can't be parsed
    geo.append('0;0')    
df = pd.DataFrame(geo, columns= ['geo']) #export geodata to geo.csv
df.to_csv(r'geo.csv', index = False, header=True)


 


文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

辦公室茶水間的小魚缸內養著一大一小兩隻烏龜,每次我走進茶水間,就會看到兩隻烏龜興奮的探頭互踢,希望有人能丟點飼料餵食他們。
每次我走近魚缸餵食,看著這兩隻烏龜就在這小小的空間內,爭先恐後的搶著餌料,大的那隻通常會把小的那隻壓在底下,想在第一時間搶到食物,而小的那隻並不會屈服,奮力探頭掙扎也想搶個好位置。
有時我會想,這兩隻烏龜的心裡想著什麼?

是如何輾壓對手,獲得最多的食物?
是如何吸引主人注意,獲得餵食的機會?
是如何欺壓對方,讓她知道誰是老大?

我心想,烏龜也是有頭腦,他們怎麼不會思考著更深層的問題,
先從如何跳出這小小的魚缸,掌握自己的龜生開始

自由自在,想去哪就去哪?
與同伴一起補獵、一起遊戲、一起組成家庭
能自由的探索新海洋、發現新世界,完成自己的夢想

好笑的是
當人類笑著烏龜只知道每天搶食物,您是否也注意到你自己的人生?

你是否每天打卡上下班,只為領薪水?
你是否想著如何打敗同僚,只為升官加薪?
你是否每天唱和長官,只為獲得長官青睞

如果你只是想著這些事,那你不就跟那兩隻烏龜一樣了嗎?
烏龜被空間侷限著,所以限制了想像
而你雖然沒有空間限制,但其實
你跟水缸裡的烏龜沒有兩樣

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

當江太太按下收音機的瞬間,復古的音樂悠然響起

「許我向你看...向你看看,多看一眼」

雲之凡調皮的從背景走出,望向江先生一眼,開了門走出房間

而病床上的毫無生氣的江濱柳恍然睜開雙眼,拋開一身的病痛,隨著雲之凡離開

 

此時兩個場景、台詞開始交錯著

一邊是江濱柳與雲之凡,在上海的美麗回憶

一邊則是江太太與護士,在醫院談論著病情

雲之凡是一身高雅,盪著鞦韆,手拿著書,舉止談吐都是瓊瑤式的散文

「好安靜喔,從來沒有見過這麼安靜的上海」、「夜晚停止了,月亮停止了,街燈、鞦韆一切都停止了」

另一邊的江太太,糟糠之妻,鄙俗的紅毛衣配上大嬸般的捲髮,電話中痛苦的訴說著江先生的病情

「台北的車變得很多」「景美的家外面有一棵樹」「我很好我很好」

江濱柳想與雲之凡的時間能停止,卻偶爾羞愧的望向著江太太

最後這場景就在江濱柳把多年來寫的信交給雲之凡時,卻遭到雲之凡的拒絕而結束。

編按:也許你以為描寫的只是男女之間的愛情故事,不過,這暗示的是一整個時代的痛苦與掙扎

 

 

 

 

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


以往在ESP32CAM教學時,偶爾會遇到學生問說,為什麼只有一個人能看,我都會說這是單晶片的限制,心裡想說,一顆兩三百的單晶片能做Stream Webserver已經很厲害了,還要多人連線,會不會太強人所難。

不過有一次一位很好學的學生問:「老師,您說ESP32有雙核心,還能跑多執行緒,現在不能多人連線看影像是不是有點說不過去」。

心想似乎也是,我每次上課都會強調這顆晶片可以跑多執行緒,竟然如此應該來研究一下如何將單人連線程式改寫成多人連線。

不過在研究之前,先Google看看,哲學家都說:「不用重複造輪子」,就發現了這篇:https://www.hackster.io/anatoli-arkhipenko/multi-client-mjpeg-streaming-from-esp32-47768f沒想到真的有大神已經寫好了,馬上把網址傳給那位好問的學生去測試看看,誰叫你愛問,沒想到一測試就成功了,太棒了。

後來又經過我們多次改寫及精簡,現在把輪子程式附上給大家。

image

三個客戶端同時連線:PCx2,手機x1,連線狀況非常好,多人連線也幾乎沒有延遲。


#include <WiFi.h>
#include <WebServer.h>
#include <WiFiClient.h>
#include <Arduino.h>
#include <pgmspace.h>
#include <stdio.h>
#include "esp_log.h"
#include "esp_attr.h"
#include "esp_camera.h"
#include <esp_bt.h>
#include <esp_wifi.h>

文章標籤

夜市 小霸王 發表在 痞客邦 留言(1) 人氣()

每次到新的環境上python課程,就會擔心環境建構問題,尤其要開始談python+Tensorflow-GPU時,就要去對Tensorflow+Keras+cuda+cudnn的版本序號,每次安裝過程都是一種折磨,裝錯版本重來。查版本、安裝、設路徑、測試GPU、反安裝、重開機...無窮loop。

參考: https://www.tensorflow.org/install/source_windows?hl=zh-tw

後來發現原來在anaconda可以直接幫你對齊Tensorflow+cuda+cudnn版本,而且只要一行指令,三個一起裝好,你說服不服。

首先,先將您的nvidia顯示卡安裝好驅動程式。

步驟:

  • 1.開啟anaconda,建立新的環境(或者開啟舊環境),命名為Tensorflow-GPU
     
  • 2.在該環境下執行啟動terminal視窗
    image
  • 3.輸入conda install tensorflow-gpu==1.14,後面的1.14是版本序號,目前最新是2.0,可是我不會用。
    image
  • 4.canda會一起安裝合適版本cuda+cudnn(如上圖)
     
  • 5.在terminal視窗中啟動python,輸入以下指令,檢查GPU是否啟動
    from tensorflow.python.client import device_lib
    print(device_lib.list_local_devices())

     
  • 如果正常的話,會出現以下畫面,檢查是否出現CPU+GPU,以及最後會列出你的顯示卡型號。
    image
  • 安裝Keras2.2.4(此乃對齊tensorflow 1.14版本): conda install keras==2.2.4

打完收工


文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


ESP32是Arduino相容,能完全適用Arduino生態系,套用Arduino的感測器及程式開發,不過ESP32有一個小小的缺點,就是他的腳位寫在背面,如果插入麵包版時,就看不到腳位編號,必須對照圖才能插到正確的腳位,這對初學的學生來說較為麻煩。

在教學上遇到的一些問題,因此我們設計了ESP32教學版ESPro Matrix版,除了將腳位編號寫在正面之外,附帶兩個USB Power Port可以快速開啟USB裝置,用來模擬智慧家電非常方便。

電路圖下載:https://t.ly/Zn4V

 

總體來說,本教學版有以下優點

  • 1.正面提供腳位號碼(GPIO),不用再邊看圖邊插,手忙腳亂
  • 2.內建多種燈號(使用i2c界面控制,附範例程式: https://youyouyou.pixnet.net/blog/post/120417760 )
  • 3.省下麵包板
  • 4.內建兩組usb power控制器,可快速模擬智慧家電開關(附範例程式)
  • 5.內建usb轉tx rx,可控制usb通訊(附範例程式 :https://youyouyou.pixnet.net/blog/post/120418861
  • 6.內建SD卡槽(附範例程式 )
  • 7.電位輸出可撥Switch轉3.3V或5V

ESP32及開發輔助板
image

正面

image
背面

其中USB UART可以對一些裝置下ATCommand,例如上面圖片中的NBIoT裝置

另外對於USB PowerPort則非常有用,插上USB風扇或者USB燈條,可以用藍芽語音控制,非常有趣。

說明一 燈號:https://youyouyou.pixnet.net/blog/post/120417760
說明二 USB Power:https://youyouyou.pixnet.net/blog/post/120418861
說明三 I2C LCD:https://youyouyou.pixnet.net/blog/post/121069748
說明四 SPI TF卡:https://youyouyou.pixnet.net/blog/post/119643441

關於藍芽語音遙控部份,可以參考本篇

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


注意~由於本產品USB接口並未固定,經常無故脫落,因此後續不再推薦及販售~

很多人都用過ESP32CAM,有WIFI藍芽還附帶ov2640鏡頭,不過麻煩的是esp32cam沒有USB接口,都要透過USBTTL線,例如CP2102有四條線黑紅白綠接起來複雜,上傳程式還要對接GND+IO0轉下載模式,對於初學者來說真是有點麻煩。

不過我們已經找到廠商做出整合USBTTL+ESP32CAM的模組了,只要插上Micro USB 就可以上傳程式了,上傳時也不用再對接GND+IO0,我們拉出Flash按鈕,上傳時需要透過RST+Flash就可以切換燒錄及工作模式。

107055429_3816632768352188_8107719808798363870_o

107416995_3816632611685537_3037977642090840672_n

燒錄時,切換下載模式步驟:按住Flash,再按RST,放開RST,放開Flash

完成後,直接按下RST,切換成工作模式

詳細說明,可參考安信可ESP32CAM切換方式: https://youyouyou.pixnet.net/blog/post/119383183

附帶的鏡頭品質也相當優良,效果非常好,另外網路的品質也非常高

106932588_3816632968352168_421216856918979636_o

使用UXGA1600x1200,可以維持5-6fps(PS.測試環境是WiFi AP就在旁邊5m左右)
107670839_3816632795018852_8793873029995165258_o

不過可能要特別注意:USB的頭很脆弱,拔插USB時要非常小心

建議依據以下手勢插入USB,避免USB口脫落

image


文章標籤

夜市 小霸王 發表在 痞客邦 留言(1) 人氣()

在SQL Server Agent中新建一個作業,並在步驟處加入一個步驟,輸入以下的內容,並進入排程設定要啟動的時間


EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GOEXEC sp_configure 'xp_cmdshell',1
GO
RECONFIGURE
GO
USE master
GO
EXEC XP_CMDSHELL 'net use z: \\192.65.xx.xx\aws password /user:"username"'
DECLARE @MyFileName varchar(50)
SET @MyFileName='z:\filename_' + (convert(nvarchar(20),dateadd(DAY,-1,GetDate()),112)) + '.bak'
alter DATABASE [databasename] set SINGLE_USER with rollback immediate
restore DATABASE [databasename] from DISK=@MyFileName
alter DATABASE [databasename] SET MULTI_USER;


解說1:
USE master
GO
本句能讓Server Agent不至於斷線,原因不清楚

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

最近安裝新的VirtualBox,以往Host, Guest都只用Server2008,執行效能、速度都沒什麼問題,一直運作非常正常。

這次使用Server 2016為Host,Guest有2016及2019,結果速度超慢,有時還會開不起來,檢查設定都沒什麼問題

後來偶爾有一次取消了「顯示」內的「啟動3D加速」,竟然就正常了,不知道這是什麼原因,但是分享給有類似問題的人。

image


文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


現在有兩個版本 2020舊版與2022新版,寫在擴充版的左下角,例如下面這張就是2020版本。

image
2020版的USB PowerPort使用的腳位是GPIO 1與GPIO 3,而GPIO1與3也是TXRX的Serial序列監控視窗。所以要使用USB PowerPort(IO 1)時,就不能用Serial序列監控視窗,IO 3 則是輸入,一般是可以不必關閉Serial直接可用。

2022版的USB PowerPort使用的腳位是GPIO 2與GPIO 18,已經有修正,所以Serial不會影響這兩個Port。

下面的程式用來測試USB PowerPort,功能是每兩秒切換一次


//Ver.2022版本使用2,18
int UsbPP1 = 2; // P1: GPIO 2
int UsbPP2 = 18; // P1: GPIO 18
//Ver.2020版本使用1,3
//int UsbPP1 = 1; // P1: GPIO 1
//int UsbPP2 = 3; // P1: GPIO 3
void setup() {
  pinMode(UsbPP1, OUTPUT);
  pinMode(UsbPP2, OUTPUT);
}

void loop() {
  //兩秒一次更換開關
  digitalWrite(UsbPP1, HIGH);

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()