分類: Windows

  • 用PYTHON每日更新追蹤香港COVID-19確診或到訪大廈名單

    過了農曆新年, 全港疫情大爆發, 好多香港人都會每日上網看看”衛生署”的確診名單 , 尤其對做物管及做公司ADMIN朋友 , 某程度上有少許幫助 , 但間中最好抽查https://www.chp.gov.hk/files/pdf/building_list_chi.pdf

    所以我寫了一個小程式來追蹤指定大廈是否在確診名單內

    本身我寫的程式在 LINUX 運行 , 每天會自動執行一次再電郵給我 , 但好多人公司或家用電腦都是行 windows 所以我修改程式適合在 windows 行及輸出檔案是 EXCEL FILE

    設計該程式概念 : 先下載衛生署 PDF 名單 , 轉換成文字檔方便程式讀取 , 之後程式核對 自定名單同衛生署名單有沒有匹配 , 記錄你要找的數據 , 把文字檔轉換成 EXCEL FILE

    步驟一:

    先安裝 windows 版 OPENJDK 下載網址:https://docs.microsoft.com/zh-tw/java/openjdk/download

    64bit windows 下載64bit版, 32bit windows 下載32bit版

    下載完直接安裝

    步驟二:

    安裝 Python 程式語言 , 下載網址: https://www.python.org/downloads/release/python-3102/

    下載完直接安裝

    完成後要裝程序需要的python模組

    按 “win key” + R , 執行 “CMD”

    升級 python pip 下載器 , 在 “命令提示字元” 內 輸入 :

    pip install –upgrade pip

    注意 : –upgrade 前是兩個 – 減號

    安裝python模組, 在 “命令提示字元” 內 輸入 :

    pip3 install requests tabula-py Workbook datetime openpyxl

    步驟三:

    如果你的電腦已經有軟件可以開啟 UTF8 FILE可以 忽略這個

    安裝 notepad++ 軟件 , 免費好用 ! 下載網址: https://notepad-plus-plus.org/downloads/

    步驟四:

    我編寫的程式 : Download

    解壓後內有3個FILE , “run.cmd” “main.py” “udata.csv”

    值得注意的是 , 有些朋友會 “不經意” 把繁簡字混亂使用 , 例子: “厦” 及 “廈” 前者簡體 後者繁體 ! 對系統來說這是不同的字 , 如果你輸入的 “某某大厦” 是會找不到的, 應該”某某大廈”才能找到 , 所以我建議不要用全名, 用 “某某”

    用 notepadd++ 修改 udata.csv , 編碼 utf-8

    run.cmd 內容如下所示

    double click “run.cmd” 會執行程式, 如下圖

    同時會有5個FILE 產生 , “building_list_chi.pdf” 是從衛生署下載的名單 , “data.csv” 是從PDF轉換成文字檔, “email.csv” 是輸出文字備用EMAIL, “record.csv” 是記錄你找到的記錄, “checklist.xlsx” 是可以用 EXCEL 開啟的記錄

    備註: 所有 CSV 檔案都是 UTF8 編碼, 用 EXCEL 開會亂碼 , 如果真的要開用 NOTEPAD++ 或者用 libreoffice 都可以正常顯示中文字

    如有疑問可電郵至 info@kenng.hk

  • ARDUINO NANO 不能寫入 , 有什麼方法重設成出廠狀態呢?

    應該有不少朋友會遇到玩死了 自己的 NANO , 原因例如有 : 寫 program 入NANO 時 arduino java error 跳出了 , 當機了都有可能使 arduino nano 出現錯誤不能再寫入 !

    本來諗住要放進垃圾桶內, 但心想上網找找有沒有人同我一樣玩死了 NANO , 找了一會原來可以試吓重新燒錄 bootloader !

    紅色麵包板 NANO 是用來當作燒錄器, 綠色麵包板是不能寫入程序的 NANO

    我們今次會用 ICSP 來重新寫入 bootloader , ICSP 是什麼 ?

    “ICSP 代表電路串行程式設計,這是可用於程式設計 Arduino 板的幾種方法之一。通常,Arduino 引導載入程式用於程式設計Arduino板,但如果引導載入器丟失或損壞,則可以使用ICSP。ICSP 可用於恢復遺失或損壞的引導載入器。”

    用杜邦線連上 被燒錄NANO 的 ICSP , 被燒錄的 ICSP RST 腳連接燒錄器上的 D10 腳 , 如下圖 :

    如果你用作燒錄器的板子不是 NANO , 那你找出 SPI 的引腳連接就是了 .

    另一種接法就是用板子 SPI , 像以下圖片

    完成了接線後, 我們先把作為燒錄器的 NANO 連接上 PC

    打開 Arduino — > File —> Examples —> 11.ArduinoISP

    然後到 Tools 選擇你自己用作 “燒錄器” 的板子 , 我的是 Board: “Arduino Nano” —> Processor: “ATmega328P (Old Bootloader)” —> 我的電腦連接是 Port: “COM12” ( 你的電腦可能是別的 COM PORT )

    如果你用作燒錄器板子是別的型號 , 就要選上正確型號: 例如UNO , 就選UNO

    按 “箭頭” 把 Arduino ISP 程序寫入燒錄器板子

    成功寫入如下圖 :

    凖備工作好了 , 現在開始重寫 bootloader 了 , 我們再次選擇要被燒 bootloader 的板子了 , “Arduino Nano” —> “ATmega328p (Old Bootlooder” , 如果要燒的是 UNO 就選 UNO 板子.

    再選擇 Programmer : “Arduino as ISP”

    之後就可以 Burn Bootloader

    如果成功了, 就會出現 “Done burning bootloader. “

    完成後可以找一些範例 , 寫一次入去重新燒錄bootloader 的板子了 !

  • 用 EXCEL VBA 製作密碼產生器

    我想很多 IT 的朋友都會遇過要大量產生密碼的時候 , 好多人都會設定同一密碼之後要求用戶再更改對嗎 ? 但好像存在某情度的風險對吧!

    所以我今次要分享用 EXCEL VBA 製作產生隨機密碼的小程序 , 你想了解一下什麼是 VBA 可以參考以下網址 :

    https://docs.microsoft.com/zh-tw/office/vba/api/overview/language-reference

    首先一想起隨機產生數字, 好多朋友會想到 EXCEL 內置的 RANDBETWEEN , 但我們要的是更複習的密碼 !

    例如 : 英文 + 數字+ 特殊字符 (kswdhn8772!@#$) 所以 randbetween 就不能滿足我了

    我的 VBA 內產生隨機字元的部分來自於以下網址 :

    https://www.thespreadsheetguru.com/the-code-vault/generate-string-random-characters-vba-codet?rq=Create%20a%20Randomized%20String%20of%20Characters

    我在這些代碼內再作修改 , 增加了可設定密碼長度和密碼數量 !

    但要提醒下載了我提供的 EXCEL 朋友不要立即啟用內含『巨集』的程式,不論是我提供的程式或其他網站下載的程式,都不能立即啟用,先去看看程式內有沒有一些不對的代碼!

    下載 隨機密碼產生器_V1.7z , 要用 7 ZIP 解壓呀 !

    如何開啟開發人員選項呢? 可以參考以下網址 : https://officeguide.cc/excel-show-developer-tab-tutorial/

    以下是我的 VBA 代碼 :

    Private Sub CommandButton1_Click()
    '取用部分原始碼 網址如下
    'PURPOSE: Create a Randomized String of Characters
    'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
    '增加了密碼長度設定及可設定生成密碼數量 BY KEN NG
    'www.kenng.hk/wp/wp/
    '還有我取消了" i, l, 1, " 等會使人唔會的字元 , 如果想要全字母及全數字可以自己修改 , 我留了那部分自己 uncommt
    Dim CharacterBank As Variant
    Dim x As Long
    Dim str As String
    Dim Length As Integer
    Dim i As Integer
    Dim j As Integer
    Length = 工作表1.Range("C1").Value
    If VarType(工作表1.Range("E1").Value) < 0 Then
    j = 1
    ElseIf VarType(工作表1.Range("E1").Value) > 1 Then
    j = Val(工作表1.Range("E1").Value)
    End If
    For i = 1 To j
    last111 = 工作表1.Cells(工作表1.Rows.Count, "A").End(xlUp).Row
    'Test Length Input
    If Length < 1 Then
    MsgBox "密碼長度不可以設定為零"
    Exit Sub
    End If
    CharacterBank = Array("a", "b", "c", "d", "e", "f", "g", "h", "j", _
    "k", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", _
    "y", "z", "0", "2", "3", "4", "5", "6", "7", "8", "9", "!", "@", _
    "#", "$", "%", "^", "&", "*", "A", "B", "C", "D", "E", "F", "G", "H", _
    "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", _
    "W", "X", "Y", "Z")
    'CharacterBank = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", _
    ' "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", _
    ' "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "!", "@", _
    ' "#", "$", "%", "^", "&", "*", "A", "B", "C", "D", "E", "F", "G", "H", _
    ' "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", _
    ' "W", "X", "Y", "Z")
    'Randomly Select Characters One-by-One
    For x = 1 To Length
    Randomize
    str = str & CharacterBank(Int((UBound(CharacterBank) - LBound(CharacterBank) + 1) * Rnd + LBound(CharacterBank)))
    Next x
    'Output Randomly Generated String
    工作表1.Range("A" & last111 + 1).Activate
    工作表1.Range("A" & last111 + 1).Value = str
    str = ""
    Next i
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo 0 With Cells(Windows(1).ScrollRow, Windows(1).ScrollColumn) CommandButton1.Top = .Top + 10 CommandButton1.Left = .Left + 400 End With
    End Sub

    因為避免用戶看錯密碼, 所以我廢除了 ( i , l , 1 ) 等使人有機會看錯的字符

    稍為解釋一下代碼 : Private Sub CommandButton1_Click() 是當你按下那按鈕時執行的程序 ! 讀取 C1 及 E1 的數值 , 決定產生密碼長度及數量 , 再由 FOR LOOP 隨機生成 密碼字符 , 再輸出至 A 列 最後一行

    至於 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 內的代碼是把 “產生隨機密碼程序” 那按鈕固定位置 , 不會因為 A 列不斷增加而消失

  • 使用 Arduino NANO V3.0 顯示二進制時間

    今次要玩的是 arduino nano V3.0 這個版子是什麼東西呢?

    Arduino Nano V3.0是一塊基與開放原始代碼的超小Simple i/o平台,與之前的USB版Arduino Diecimila相比較,Arduino Nano在體積上佔很大優勢,Arduino即可以用來開發出需要獨立運行,並且具有互動效果的電子用品;也可以用來開發出與電腦相連接,同 Flash,Processing,Max/Msp,PD,VVVV等軟件一同合作完成的互動作品。

    之前用過 orange pi GPIO + python 做過 2 進制的時鐘 , 網址如下 :

    https://www.kenng.hk/wp/wp/orangepi-%e5%8f%a6%e9%a1%9e%e7%8e%a9%e6%b3%95/

    今次就是用這版子做 2 進制時鐘 , 大家先要了解這版的引腳先

    再來了解 1088BS 引腳代表什麼 ,  但要留意的是那是基於引腳從左至右看 !  

    下列是 1088BS 官方引腳定義, 是基如引腳是從下至上看的 ! 

    計時方面不同用 orangepi 讀取電腦時間,  Arduino Nano  要用計時模組 , 我今次用的是 DS1307 RTC 

    DS1307 這模組同 MCU 用 I2C 連接的, 想了解更多 I2C 協定可以參考以下網址 : 

    https://www.itread01.com/content/1545445450.html

    https://zh.wikipedia.org/zh-tw/I%C2%B2C

    Arduino Nano V3.0  的 I2C 引腳在 A4及A5 

    連接 1088BS 的引腳 , 第一列開始分別是  ( 2,3,4,5,6,A1,8)  pin  , 因為我們第7列不使用的, 所以隨便用A1腳, A1不用插東西

    第一行開始分別是 ( 13,13,13,9,13,10,11,12) ,   其中 1,2,3,5 行不使用的 , 所以隨便指派13腳代替, 都是不用插東西

    如果你們有另一想法想用全部」「 自己相應找其他引腳代替連接 A1 及 13 

    下載我編寫的 程式代碼  ( 當然有些是從別人的代碼借來用 , 例如 : 十進轉二進那一段)

    這張圖用 RIGHT CLICK , OPEN WITH NEW WINDOWS 睇會清楚一點

    更新一下我寫的程式先 , 上面我寫的那段程式碼有點缺陷, 就是不能手動UPDATE 時間, 要 DELETE CACHE 再編譯才能從電腦更新時間 , 所以 21年1月15日更新可以不用重新編譯, 手動更新時間程式碼 .

    下載程式碼

    下載了程式 , UPLOAD 上去 NANO , 以後要手動 UPDATE 時間, 就開 SERIAL MONITOR , 115200 baud , 按一下 ENTER 就會出現以下畫面 :

    之後按 “Y” 設定時間 , 按照指示就可以了 .

  • ConvertZZ 軟件 (繁簡轉換開源軟件)

    今次介紹的軟件, 或許有很多用家都不佰生 , 舊版本是十分好用, 我自己多數是用來轉換繁簡體字幕檔 ^_^ 用就是 CONVERZ 了, 但舊版已經不再更生了 ! 現在新版本 ConvertZZ 網址 : https://github.com/flier268/ConvertZZ

    經常下載簡體文件的朋友們應該都有這個困擾吧,文件下載下來,常常看到的都是一堆亂碼 亂碼的原因是因為兩國的慣用編碼不同,簡體使用GBK,而繁體使用BIG5,當GBK的文字「直接」看做BIG5時,就會出現亂碼

    一直以來,我慣用的簡繁轉換程式’ConvertZ’,但一直不太喜歡它的設計,為什麼上面總是要有一條Bar在那邊?為什麼開啟要等好幾秒?為什麼它有時候還會轉換失敗?為什麼作者好像都沒再更新了? 於是我開始計畫,意圖取代舊有的ConvertZ,改善這些問題。

    由於是繼承自ConvertZ,因此取名ConvertZZ

    下載連結 : https://github.com/flier268/ConvertZZ/releases

  • 在win 10 使用 adobe acrobat XI 會出現自動閃退解決辦法

    參考網頁來自 adobe support community

    https://community.adobe.com/t5/acrobat/adobe-acrobat-xi-standard-automatically-closes-after-opening/m-p/10698981?page=1#M226305

    只要下載更新升級到 11.0.23 版本就能暫時解決這問題 , 但不知道會不會隨著WIN10的下次更新又會使 ADOBE ACROBAT XI 失效

    下載網址

  • Ubuntu 20.04 LTS 上架 Win10 應用商店

    以下內容轉載自 IT 之家 URL : https://www.ithome.com/0/483/457.htm

    IT之家4月19日消息 Ubuntu 20.04 LTS on Windows 已经上架 Microsoft Store 应用商店,Ubuntu 20.04 on Windows允许使用Ubuntu Terminal并运行Ubuntu命令行实用程序,包括bash,ssh,git,apt等。请注意,Windows 10 S不支持运行此应用程序。

    Ubuntu 20.04 LTS on Windows需要Windows 10 版本 16215.0 或更高版本,支持ARM64、x64体系结构。

    据IT之家了解,要启动Ubuntu 20.04 on Windows,请在命令行提示符(cmd.exe)上使用“ ubuntu2004”,或在“开始”菜单中单击Ubuntu磁贴。

    要使用此功能,首先需要使用“打开或关闭Windows功能”并选择“Windows Subsystem for Linux”,单击“确定”,重新启动,然后使用此应用程序。

    也可以使用Administrator PowerShell提示符执行以上步骤:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

    这个应用会在Windows Subsystem for Linux上安装Ubuntu 20.04 LTS版本。

    请注意,应用程序更新不会更改Ubuntu安装。要升级到新版本,请在Ubuntu Terminal终端中运行do-release-upgrade。

  • ImDisk Toolkit 軟件

    今次介紹ImDisk用來做什麼的呢?

    ImDisk在創建物理內存/虛擬內存重疊還是很容易的,加載ISO副本也沒有問題,如果你想把數據放在內存裡,那還是要折騰一下的。

    因為ImDisk虛擬的內存硬盤重新啟動後就會消失,所以就需要批處理來自動解決這個問題,大致思路是讓ImDisk自啟動並加載虛擬磁盤,如果是存放臨
    時數據,那麼關機的時候就不用管 了,因為數據不要了。

    先去下載 imdisk URL = https://sourceforge.net/projects/imdisk-toolkit/

    製作 Ram driver

    可以掛載 ISO , Virtual HD , Virtual floppy 等等….

  • 新 Microsoft Edge

    下載以Chromium 為基礎的 Microsoft Edge

    適用於: EdgeWindows 10
    • 新的 Microsoft Edge 以 Chromium 為基礎,於 2020 年 1 月 15日正式發行。它與所有支援的 Windows 和 macOS 版本相容。
    • 下載瀏覽器將取代 Windows 10 PC 上的舊版 Microsoft Edge 。它具有速度、效能、網站和擴充功能的一流相容性,以及內建的隱私權與安全性功能,是您唯一需要的瀏覽器。