發表文章

目前顯示的是有「程式筆記本」標籤的文章

距離天數計算機

以下是建構在github的距離天數計算機 以下是建構在github的距離天數計算機 開始日期為欲計算天數的開始。 預設的指定日期為當天,取消勾選即可選擇特定日期。 預設的計算天數包含開始當天。 更多工具可以在以下 我的程式工具網頁

台北新北捷運各捷運站距離圖

以下是建構在github的台北新北捷運各捷運站距離圖 台北新北捷運各捷運站距離圖 最外圈紅圈為距離700公尺的範圍,內圈藍圈為450公尺的範圍。 圖中即可辨識與捷運站步行費力程度,可當作房地產地點的參考。 使用python、folium、geopy、scipy作圖,台北捷運與環狀線車站資料參考台北市政府。 台北市政府資料大平台 機場捷運使用機場捷運官網並手動查找。 機場捷運各車站資訊 更多工具可以在以下 我的程式工具網頁

排隊時間模擬預估工具

以下是建構在github的排隊時間預估模擬網頁工具 排隊時間模擬預估工具 使用店家的座位數、排隊中的顧客和預估的用餐時間,重複多次隨機模擬,推估可能的等待時間。 更多工具可以在以下 我的程式工具網頁

中文造字工具網頁

 以下是建構在github上的中文造字工具網頁 :  中文造字工具網頁   工具支持新增文字素材、矩形橡皮擦、字體大小變更、矩形剪裁、智慧套鎖剪裁、剪裁下來的部首貼上功能。 原始碼可以在 中文造字工具原始碼   更多工具與程式 我的程式工具網站  

使用Pyinstaller打包多個文件與資料夾

  使用Pyinstaller打包多個文件與資料夾到單一執行檔 >使用Pyinstaller打包多個文件與資料夾到單一執行檔 2025-08-14 指令的介紹 在 Windows 系統中使用Pyinstaller非常簡單,尤其是只有包含一個主程式( .py 檔案) PowerShell pyinstaller main.py 執行完此一程式後,會生成兩個資料夾 build 和 dist ,build裡面會寫入log檔案和工作檔案,dist裡面會寫入main.py的可執行檔,並且生成一個以第一個 .py 檔名命名的 .spec 檔案 舉例來說 : PowerShell pyinstaller main.py 會生成一個 main.spec 以及一個 ./dist/main.exe 然而對於需要調用其他目錄下資料的Python程式,例如 : PowerShell main_folder/ │ ├── main.py # Flask 後端程式 ├── templates/ │ ├── form.html # 表單頁面(前端) │ └── result.html # 顯示生成 Prompt 結果 ├── static/ # (可放 CSS/JS 資源) └── README.md # 專案說明文件 如果不強求把它封裝成單一的執行檔,也就是執行檔與整份資料夾的結構不能有路徑的變化,那可以維持IDE模式下的相對路徑。 這也是pyinstaller預設的封裝方式 -D, --onedir 但如果想要把所有資料完整的封裝成一個單一的執行檔,則需要 -F, --onefile 這道指令 而且如果主程式 main.py 會需要調用目錄中 templates/ 下的所有檔案,就不能單單只用一行指令混過去了。 而是需要增加如以下使用 --add-data 這個指令 PowerShell pyinstaller main.py -F --add...

在 Windows 建立 Python 虛擬環境時,無法執行Activate.ps1的問題

  在 Windows 建立 Python 虛擬環境時啟用 PowerShell 的 Execution Policy 教學 在 Windows 建立 Python 虛擬環境後,PowerShell 無法啟用 Activate.ps1 的解決方案 2025-08-13 在 Windows 系統中建立 Python 虛擬環境,例如透過 PowerShell python -m venv venv 後,會生成一個 venv 資料夾。當你在 PowerShell 下嘗試啟用虛擬環境: PowerShell venv\Scripts\Activate.ps1 可能會出現以下警告: PowerShell cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. 原因說明 這是由於 PowerShell 的安全性機制 Execution Policy 所致。在預設情況下,Execution Policy 可能是最嚴格的 Restricted ,不允許執行任何腳本。 可以用以下指令查詢目前狀態: PowerShell Get-ExecutionPolicy # 知道目前的狀態 若結果為: PowerShell Restricted 表示當前環境禁止執行腳本(包含 Activate.ps1 )。 解決方法 將 Execution Policy 從 Restricted 暫時調整為 Unrestricted ,以便執行啟用腳本。以下提供兩種方式: 方法一:系統層級(需管理員權限,較不建議日常使用) PowerShell(以系統管理員執行) Set-ExecutionPolicy Unrestricted 使用後請記得在完成工作後,恢復原本的設定以維持系統安全。 ...

8051小筆記---什麼是PSW

PSW的英文全名叫做(Program Status Word) 中文翻成"程式狀態字組" 他是一個2Bytes(8bits)大小的資料 在記憶體位置D0到D7 從英文全名我們可以推斷它紀錄著程式狀態 接下來我們詳細的講述PSW PSW內的各項旗標(Flags) 總共有七種不同的功能 (Register bank select功能的旗標有兩個) 分別如以下: Carry flag AC F0 Register bank select Overflow flag Reserved bit Parity bit 各項旗標的功能介紹 Carry flag 他的符號為 : CY 記憶體位址在 : D7H   顧名思義就是記錄著程式的進位(Carry) 當今天我們的程式8bits裝著#FDH的資料 如果我們對這個資料加上#05H 這時資料會變為#02H Carry flag被設為1   以此類推,減法也有這個機制 如果我們對#02H這個資料減#05H 資料會變為#FDH Carry flag被設為1 AC 他的符號為 : AC 記憶體位址在 : D6H 他的英文全名為Auxiliary Carry flag 顧名思義,其功能也跟進位有關 而具體來說,他在BCD( Binary-coded Decimal)的進位非常有幫助 因為他檢測的進位並不是最高位元(左邊第一個) 而是兩個Byte的中間(三和四bit) 就如以下這樣 :  #9BH + #0CH 100 1,1 011 + 000 0,1 100 = 101 0,0 111 經過上面的加法操作 唯一的進位發生在三和四bit間 所以AC被設為1、CY保持0 F0 他的符號為 :F0 記憶體位址在 : D5H 他的英文全名為Flag 0 沒什麼特別的功能 可以供程式設計師自行運用 Register bank select 他的符號為 :RS1、RS0 記憶體位址在 : D4H、D3H     這兩個bits的作用是選擇Register bank 並且可以知道總共有四種數值的組合 分別對應到四個不同的Register bank (關於Register bank我之後會再寫一篇文章)   不同Register bank的最大好處是可以減少記憶體stack堆疊的次數 像是 : ...

8051小筆記---基本的八種定址模式

因為之前搞不清楚加上#或是@的用意 還有各種定址模式的差異 所以在此記錄一下我學習後的心得 大致可以分為八種 分別是 直接定址法(Direct addressing) 間接定址法(Indirect addressing) 暫存器定址法(Register addressing) 立即值定址法(Immediate constant) 索引定址法(Indexed addressing) 絕對定址法(Absolute addressing) 長定址法(Long addressing) 相對定址法(Relative addressing)  下面讓我詳細說明 直接定址法(Direct addressing) 顧名思義就是直接給記憶體的位址 例如 : MOV A , 06H  就是把在記憶體位置06H的資料 移動到A 間接定址法(Indirect addressing) 他和直接定址法的概念差不多 最大的差別是以暫存器內的數值做為目標地址 所以可以說直接定址法是固定的 而間接定址法可以用運算改變目標地址 例如 : MOV A , @R0  這裡就是以R0內的數值最為目標位址 假如R0內儲存的數值是55H 那就是把在記憶體位置55H的資料 移動到A 暫存器定址法(Register addressing) 這應該是最好理解的 直接將要使用的暫存器寫出來 和Python或是C++一樣 A = B + C 這樣簡單 例如 : MOV A , R0  就是把R0內的資料 移動到A 立即值定址法(Immediate constant) 當我們想要初始化即可使用這種方式 類似於Python或是 C++的 A = 12 例如 : MOV A , #55H 在A存入數值55H 索引定址法(Indexed addressing) 了解這個之前須要先知道8051的記憶體架構 索引定址法用在程式記憶體(ROM)中 與間接定址法最大的不同在於 他需要base register當作基準(PC 或是 DPTR等等) 並以A暫存器作為地址上下的調整運算元 例如 : MOVC A , @A+PC 這樣的例子就是要讀取程式記憶體 以A當作接收和調整地址位置 PC則是基準的位置 相對定址法(Relative addressing) 使用在JUMP這類指令中 名為相對是因為...

Python小筆記---跳出無限迴圈的方式

這幾天想要做出一個Python的計時器 但是當我們開始計時 進入一個無限迴圈 像是下面這樣 while ( True ):     #要執行的函式     Pass 想要暫停時卻跳不出迴圈 又不想讓終端機暫停(想要畫面有秒數) 找 網路上的資料 發現可以這樣寫 try :     while ( True ):         #想要執行的函式         Pass except KeyboardInterrupt :     Pass 這樣的意思是 我們今天按 Ctrl + C 則迴圈會進到例外區 也就是退出迴圈 完美解決問題 小缺點是不能自己控制要甚麼按鍵