VitaBox AD

2023年11月26日 星期日

[C#]在Mdi模式中,如何利用子窗體事件操控父窗體的特定控件

 


關於在Mdi模式中,利用子窗體的特定事件操控父窗體的特定控件,將有助於使用者體驗(UX)和軟體的流程。本文範例的操作效果如上述視頻,其中Form1為父窗體,其具備ToolStripMenu功能。該範例的流程邏輯為當開啟a子窗體並輸入正確密碼,才能解鎖父窗體中的b子窗體開啟按鈕,進而讓使用者可以順利開啟b子窗體,反之密碼錯誤,則無法解鎖父窗體中的b子窗體開啟按鈕。

2023年11月23日 星期四

[Raspberry Pi]如何利用ssh遠端將樹莓派切換連接至陌生的wifi基地台?

當已習慣使用VNC遠端控制樹莓派後,原用來設定樹莓派的電腦螢幕和鍵盤也逐漸挪為它用。此次攜帶樹莓派外出,同時又希望使樹莓派連接當地的wifi AP,利用VNC遠端桌面切換新的wifi AP需要重新設定wifi密碼,但卻無法在VNC遠端桌面看到密碼驗證視窗。

經查閱和測試,利用ssh遠端並搭配nmcli終端機指令,可達到不須額外外接螢幕和鍵盤,即可切換到陌生的wifi AP,該次測試的樹莓派環境為Ubuntu 23.04 Desktop版本。

2023年11月21日 星期二

[Excel]如何取得多項式擬合的R平方值(R-squared)?

 


延續<[Excel]如何取得趨勢線的參數值>一文,有網友提問,如何進一步提取多項式擬合的R平方值(R-squared),並期望隨著參數調整而即時動態取得。經查詢LINEST的語法說明,藉由陣列形式和設定stats為True,可提取動態R平方值(R-squared)。

2023年11月4日 星期六

[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(4):Add Form by Internal Type and Form Builder

 

之前提到Form tools的Internal type和Form builder方式較為受限,因此直接選擇External的direct typecode type來測試。但External的設定方式涉及到較多的前後端程式碼且不易了解,因此有需求者期望能從Internal和Form builder著手,看是否可順利在公司內部導入該系統,並讓同仁回填對應行政表單。(OS: 1. Internal和Form builder方式果然受限,測試期間遇到Linux和publish的坑,在此致謝Books and Pencil的協助 2.看來Form tools開源表單系統真有需求者~~)

2023年10月26日 星期四

[ESP32]如何透過Modbus和Serial port擷取工業數顯表頭資料?

 

對於既有老舊的工業或實驗設備機台,嵌入工業數顯表頭並顯示設備運作參數和數據,以讓巡檢人員或操作人員手抄記錄數據,是常見作法。然而,若可將既有設備機台的表頭更換為具備Modbus通訊功能的表頭,並連接便宜的單晶片開發板,使其自動即時顯示運作參數和紀錄數據,將可釋放巡檢和操作人力並避免手抄錯誤。甚至可進一步連結網路,讓既有老舊的設備機台升級為IIOT設備。

2023年10月16日 星期一

[Excel]如何找到非固定空白格數列的條件數據? 以月份報價表單為例

在群組中看到上述問題,研判應是一份隨月份變動的產品報價表單,空白欄可能表示該月份價格與上個月份一致。這個問題是需要取得最近一次單價和倒數第二次單價,常用且實務的excel案例值得紀錄。

2023年10月15日 星期日

[Excel]如何製作具備關鍵字搜索功能的下拉式選單?

 


利用Excel建立下拉式選單功能,讓使用者得以簡易並快速完成選項需求,然而,若下拉式選單的內容過於冗長,將使簡易並快速完成選項需求的初衷大大折扣,具備簡易搜索功能的下拉選單可以解決這個問題,如影片所示。更重要的是,僅需利用Excel的常用函數和資料驗證視窗,即可完成建立搜索功能的下拉選單,您說CP值夠不夠高?

[Excel VBA]判斷英文字母是否為大寫

 

在Excel VBA中,利用ASC 指令可以取得ASCII碼,將可應用於判斷字元的屬性。

本文利用asc指令製作一支簡易的VBA程式,用以判斷英文字母的大小寫,功能為若原資料為英文大寫字母,則輸出資料為空一格+原資料。程式碼如下,供各位參考。

2023年10月8日 星期日

[C#]在Mdi模式中,如何透過委派(delegate)方式,使兩個子窗體可相互傳送和接收資料?

 

關於在Mdi模式中,子窗體相互拋轉資料是常見的作業方式,同時經查找資料,利用委派(delegate)的方式,可避免耦合等問題。範例的操作效果如上述視頻,其中a窗體為送出資料的子窗體,b窗體為接收資料的子窗體。另外,利用TextChanged事件,讓使用者不需要再點擊按鈕,即可同步接收資料。

2023年9月19日 星期二

[Excel]如何提取指定顏色的儲存格內容並彙整資料?


近日在討論群組中,看到一個辦公室常見的資料處理問題,是關於提取顏色儲存格內容並彙整的資料需求,主要是提取紅色字體內容並彙整到總評欄位中,如下圖所示。

2023年9月16日 星期六

[Excel]如何快速彙整google問卷表單的複選題資料?


Google表單問卷已成為行銷領域的基本工具,藉由問卷回收進行統計分析以進一步了解目標市場和主要客群的動態,將有助於成熟產品的資源配置(如生產設備稼動、銷售渠道等等),甚至影響下一代產品的規格制訂。

因應行銷友人的統計分析需求,其需要將google回收問卷表單的複選題轉換成0101...的格式,如下圖,以進一步將數據帶入SPSS做分析。

2023年9月9日 星期六

[MySQL]同一張資料表的日期欄位相減_派生表(dervied table)的應用

 以往對於MySQL數據庫的應用,大多是基本的增刪改查步驟,因此MySQL大多停留在基本語法階段。然而在實際的數據應用上,若能從數據庫直接運算和抽取運算結果,同時不需要在MySQL中額外建立一個實體表,再好不過。

在MySQL中,虛擬表可符合上述需求,其中虛擬表包含臨時表(temporary table)、派生表(derived table)等等。臨時表的語法需注意嵌入以CREAT TEMPORARY TABLE...為開頭;派生表類似臨時表,語法為在SELECT...FROM中嵌入子查詢語句,同時須注意使用派生表必須具有別名,避免MySQL報錯。

2023年9月2日 星期六

[C#]MDI父窗體新增背景圖片,並隨父窗體縮放

在C#的人機介面應用,多重文件介面(MDI, Multiple-Document Interface)是一個常用的容器,在表單屬性中,將IsMdiContainer設定為true即可生成容器。

然而,生成容器後,父窗體背景的預設值為灰色,在人機介面的視覺效果,實在不親民。因此如何利用Resources.resx新增背景圖片資源,並在程式碼中調用該背景圖片,同時該背景圖片可隨著父窗體縮放,為本文主題。

2023年8月20日 星期日

[Python]視窗軟件的自動化測試工具_pyautogui


軟件測試是確認軟件質量的重要流程之一,一般藉由撰寫自動化測試程序來實現。視窗程式的自動化測試原理也很容易,其利用螢幕像素點作為定位參考,並以程式碼使滑鼠和鍵盤做動,如點擊或輸入文字等動作,使其可模擬人類操作視窗程式,最後自動化執行上千次或上萬次,以確保程式的可靠性。

2023年8月18日 星期五

[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(2):Add Form by External Direct Type

可搭配PHP和SQL的表單開源工具_Form tools(2):Add Form by External Direct Type

延續<[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(1):簡介和建置>一文,完成建置後,接著是在Form tools管理後台內新增表單(Add Form),方便管理不同的回填表單。新增表單分別有Internal, External和Form Builder三種型態供挑選,同時External又可區分為Direct和Code兩種方式,其中Direct是以指向Form tools內process.php的方式進行; Code則是以Form tools API方式引入。由於External方式較為彈性且靈活,本文以External Direct Type來建立表單,同時以報名表網頁為範例來測試。

2023年8月17日 星期四

[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(1):簡介和建置

可搭配PHP和SQL的表單開源工具_Form tools(1):簡介和建置

Form tools是一套可搭配PHP和SQL的表單開源工具,可讓開發者靈活運用,同時其有數個表單模板和應用模組供挑選,方便且彈性。Form tools已開發超過20年,為不同領域的需求者或開發者提供一個自由和開放的平台,使他們可建構自定義的數據表單和格式,並透過網站發布,以及在Form tools管理後台或者MySQL中取得回填表單。另外,可藉由Form tools管理後台設定的資料可視化模組(Data   Visualization Module),讓需求者可實時監看和管理回填表單的狀態,如下兩圖所示。看到這裡,是不是迫不及待想玩玩這個開源工具了呢?  

2023年8月6日 星期日

[LabVIEW]圖像內的物件計算_Count objects

[LabVIEW]圖像內的物件計算_Count objects


NI雖然是以賣硬件為主的公司,但其在軟件(LabVIEW)的著墨也相當深厚,尤其是各類應用模組的更新速度和對應功能。 每每不經意地碰觸到新版本的LabVIEW,都會不由自主地翻閱和嘗試新增模組。

本文藉由兩個模組串接簡易製作一支圖像計數程式,兩個模組分別為<IMAQ Count Objects>和<IMAQ ExtractSingleColorPlane>,流程架構為"讀取圖像"->"圖像格式轉換"->"計算圖像內的物件個數",其中"圖像格式轉換"由<IMAQ ExtractSingleColorPlane>將32bit圖像轉成8bit圖像,再交由<IMAQ Count Objects>執行"計算圖像內的物件個數"。

2023年7月30日 星期日

[Raspberry Pi]如何用VNC遠端控制樹莓派(Ubuntu desktop 23.04)?

如何用VNC遠端控制樹莓派(Ubuntu desktop 23.04)?

之前曾利用VMware探索CentOS,熟悉Linux操作系統的指令和配置運作方式,後來在樹莓派價格飛漲的時期,遇到貴人贈送Raspberry Pi 4 model B / 8GB,這下工具到位了,索性跳過樹莓派官方系統(Raspberry Pi OS),直接裝起Ubuntu做實機測試和應用。

當時利用Ubuntu 22.04做了些簡單的應用,包含配置Apache和MySQL等等伺服器,並讓使用者在BS架構(Bowser-server)下,可用網頁簡易操作開發版並取得感測器數據。近期打算用樹莓派做一個通信協定的模擬數據測試,其在開關機的過程出現死當,剛好可以重做映像檔,試試Ubuntu 23.04。

[Linux]如何配置定期任務腳本,並將執行結果寄到外部郵箱? (下)

 ​延續[Linux]如何配置定期任務腳本,並將執行結果寄到外部郵箱? (上)文章,當了解任務腳本和定期任務的設置後,接續了解該如何使任務執行結果自動寄到外部信箱,讓用戶掌握任務執行狀態。

在Linux中,mailx 是配置郵件的服務,若無該服務,可用yum install mailx -y來安裝。安裝後,使用vim /etc/mail.rc 編輯,將下列的配置指令新增到mail.rc文件的末段。

2023年7月22日 星期六

[Linux]如何配置定期任務腳本,並將執行結果寄到外部郵箱? (上)

在Linux系統中,cron是用於定期執行任務的服務,其中crontab是配置定期任務的管理命令。關於定期執行任務,cron提供系統級和用戶級的配置服務,說明如下:

1.系統級:常用於備份系統數據或是清除系統緩存文件等週期性任務。系統級的最小運作週期是以小時為單位,可將任務腳本置於/etc/cron.hourly路徑中定時執行。另外,相較於用戶級,系統級可避免某個應執行任務被錯過。

2.用戶級:在Linux的不同用戶可依自行需求,設置週期性任務,如每天上午8:00啟動MySQL服務器並於晚上12:00關閉MySQL服務器,或者每三個小時執行一次Python程序。用戶級的最小運作週期是可達到分鐘為單位。

2023年6月22日 星期四

[Excel VBA]如何批量產出QRcode?


QRcode常應用於產品上,不論是為了控管產品工序節點、或是控管產品售後質量,甚至是為了觸及更多消費者的行銷推廣活動。然而,QRcode標籤的產出往往受制於標籤設備的應用程式(當然也有不少方式可以解,例如透過DLL調用),因此經資料查找,可藉由API接口網址來生成,如此一來,方便許多。

2023年6月4日 星期日

[書籍]思考的框架

 圖片來源:博客來書店


《思考的框架》是一本極具啟發性和實用性的書籍,它以系統性和綜合性的方式引導讀者運用跨學科思維來解決問題和拓展思維視野。作者巧妙地整合了來自不同領域的思想家和學者的觀點,從心理學到經濟學,從哲學到科學等,為我們打開了一扇通往智慧和創造力的大門。

2023年5月12日 星期五

[Python]Pipenv虛擬環境的嘗試與Bug解除

 


项目背景:

原項目經打包後,執行檔(.exe)過於龐大,經解讀網路資料後,在pipenv虛擬環境打包可有效縮小執行檔的大小。原因也易理解,因在pipenv中的安裝包可視該項目導入的包需求來安裝,可降低其他無關的安裝包一併被打包成執行檔,換言之,可將pipenv視為一個迷你版的python作業環境。

[Python]Debug for “IndexError: list index out of range“ error message

 這算是debug代碼的紀錄,只求此次碰過的坑,下次可以繞道而過,紀錄,也供分享。

下列兩個簡單的代碼段都會看到IndexError: list index out of range錯誤訊息,其實問題來自於data1[5]和data2[0]無法被print出來,原因是data1是一個1~5的list,而其序號是由0開始計數,即data1[0]=1....data1[4]=5,所以找不到data1[5]。以此類推,data2是一個empty list,自然連data2[0]都沒有元素。

2023年4月23日 星期日

[Excel VBA]ListView和真偽亂數的應用_Pickup


因應業務需求,簡易做一個pickup的VBA介面程式,供使用者易於操作。

撰寫該程式過程中,個人認為有兩個重點,分別為ListView視窗指令和VBA中的真偽亂數(Randomize and Rnd),一併紀錄,也供分享。

2023年3月18日 星期六

[Linux] 如何用yum更新kernel系統?

yum 是一個軟件包管理器,可運用於Redhat或基於Radhat基礎的CentOS版本系統,常用的命令作業包含移除、更新、查找和安裝等等。同時其可由各服務器下載各款應用的RPM包,不論是CentOS的三大官方安裝源(如 base/extras/updates)或是各款應用安裝源(如 httpd/php ),並在安裝過程中自行補齊需要搭配的依賴包。

2023年2月13日 星期一

[Python]如何利用Selenium模塊模擬瀏覽器操作網頁?

銜接<[Python]初探爬蟲(scrapy)>的學習,在Python中,除了善用request安裝包抓取網頁資料之外,還可利用selenium安裝包模擬瀏覽器操作網頁,包含搜尋關鍵字和抓取網頁資料,得以實現機機器人流程自動化(RPA, Robotic process automation)的操作。

2023年1月7日 星期六

[Python]如何將批量的PDF資料匯總為Excel清單?

 在現今電腦化(或稱無紙化)的辦公環境中,往往因為工作需求需將一些資料在不同辦公文件之間轉移,如若需要呈現簡報(.ppt),可能需將word的部分文字複製到ppt上;若需要分析論文中的表格數據,可能需將pdf轉換成excel。然而,若僅僅是少數文件的轉換,或許可簡單用複製和貼上的功能來處理,但若是批量轉換的工作,為了避免重複性勞力和容易出錯,藉由工具來進行批量轉換才是正確的工作方式。