Pages

2016-04-29

System UpTime系統已運行時間

在Win7/2008以後,使用Task Manager可以查看系統已運行時間統計,但舊系統XP/2003系統裏必須使用指令systeminfo查看開機時間,此指令也會因執行權限而有所受限,只能靠微軟提供的外掛Command指令uptime工具。
image
為了簡化流程,因此開發了一個簡單的UI工具來查詢系統已運行時間。顯示介面支援多國語言顯示框架,用戶可以自行擴充其他語言及字詞(在Language子目錄仿作)。
  image
為了能讓UI介面高客製化,相關設定皆定義在Config.json檔中,您可自行修改。例如畫面的長寬、重疊置頂(TopMost)、字體Size皆能調整,並支援畫面上的時間字串格式化顯示、自動刷新間隔秒數。
image

Version History:

2016/04/29:
  1. 設計此工具的專屬Web網站,提昇軟件品質形象,也方便用戶查看及下載。
  2. Config中的下載網址異動默認值,相容最小版次值為20160429。
2016/04/22:
  1. 將畫面自訂長寬Size調整納入「Save Preferences」的儲存範圍內,它會自動計算表單的Width/Height Offset的值。
  2. 表單預設寬度,由原本3位數的Days,縮減至2位數的寬度。

Download: (.NET 4.6.1 Required, 綠化免安裝)

前往下載頁面

2016-04-27

免費Free Private Git Server

GIT是一種分散式控本控管工具,適用程式源碼或者任何多次多次編改的文件管理。Git入門教學,很推薦林慶哲先生所寫的「開始進入GIT世界 | GIT教學」文章。強烈建議您一定要從打git command指令來入門(教學文章裏有批次指令可複製貼上,不需死記但要測試效果),才能理解不同git指令之間的差異,等學會之後才使用UI工具「TortoiseGit」。因為遠端GIT Server服務頁面都會提供git該如何存取它的指令,假如不懂指令架構,又如何理解UI工具上的名詞所代表的背後git動作呢?

要架設Private Git Server服務,目前沒有像VirualSVN Server這樣容易架設SVN服務的整合型軟件,而知名的GitHub服務要建立Private Repository是要付費的,因此我根據以下的網路討論串,試用了各種被推薦免費的免費 Private Git雲端服務:

Revision Control Systems: What is the best free service that hosts private Git repositories? - Quora
https://www.quora.com/Revision-Control-Systems-What-is-the-best-free-service-that-hosts-private-Git-repositories

依其服務功能、限制性及有前景不易倒閉的前提下,擇出兩個較佳Private Git雲端服務:

  1. 微軟Visual Studio Team Services (VSTS)的免費Git服務:
    免費無限制的Private Repository,但Free Users限5人. 由於VS2015內建這樣的服務及git工具,因此若開發團隊人數不多的話,會優先推薦使用這個,雖然不是很喜歡它的遠端管理介面。實測它的上傳速度最快約為每秒300KB左右。
    image
  2. GitLab雲端服務:
    GitLab雲端免費服務基本沒什麼限制,且提供自架伺服器軟件GitLab Community Edition (Linux Platform based),而且專案網址很短,管理介面比較像GitHub一樣簡潔清楚。
    image

以上就依自己的需求來選擇Git雲端服務商,在免費的前提下,Public Repository我會優先使用GitHub, 個人獨用的NET專案會使用微軟VSTS,若是和別人合作開發的Private專案,則會使用GitLab服務。

至於另一種透過DropBox分享和別人同步Git目錄的方式並不推薦,因此一般免費帳號才2GB空間,專案不僅只會放程式碼,還會放文件或圖檔的,這點小小空間實在不夠用。

2016-04-20

完美將TXT轉成電子書epub/mobi檔

要將TXT轉換成epub/mobi電子書格式,很多人一開始會選用online-convert, Convert.Files等線上轉換服務,但它轉換速度不快,對章節擷取不一定正確,也有人用Clibre這套Windows下知名的電子書閱讀軟件來轉換,但它內建的轉換操作介面太過複雜。因此我推薦使用EasyPub這個綠化工具程式,只需要幾個很簡單的步驟,就能把TXT純文字檔轉成高品質、排版性佳的epub/mobi電子書格式。
以下是轉換步驟:
  1. 網上搜尋被推薦的書名,並下載該書TXT純文字檔案,很多網上連載小說網站均有提供。
  2. 利用ConvertZ中文繁簡工具,將TXT檔案BIG5/GB2312轉成UTF8編碼的格式(檔案Size會變大)。
  3. 開啟下圖EasyPub工具,拉入或指定來源TXT檔案(編號1),輸出副檔名(編號2)預設是.epub檔,若想轉成Kindle格式,改成.mobi檔即可。
    image
  4. 具有章節索引對於電子書查閱很重要,先打開TXT檔我們發現下圖40行的章節寫法規則,是前面有空白字元,接著「第X章 章節名稱」,因此它的編寫規則都是上圖編號3的方式,點擊編號4按鈕「章節編輯」來預覽判讀結果。
    image
  5. 程式會依章節規則取出符合的項目名稱,但此TXT檔例子它的每個章節都有重複名,因此可以勾選下圖編號2,凡該章節下的內文不超過1行則刪除,即可呈現不重複的章節項目(下圖編號1)。
    image
  6. 針對這本書的相關規則設定,你都可以儲存起來(*.epsav),若該TXT檔是連載中的小說,你就可定期依以上步驟快速產生完美的轉換過程。最後回到主畫面,點擊「開始轉換」按鈕,就可以產生epub及mobi檔案。
  7. 使用Clibre閱讀程式來觀看效果,章節判讀很正確,下圖編號3章節名稱呈現會有區塊底色,但實際在手機電子書軟件「Moon+ Reader」或Kindle實際閱讀時,均不會有這樣礙眼的底色。頁面的配色效果,也可以在EasyPub工具的「定製CSS」中自訂。
    image

2016-04-10

資料庫好幫手SqlDbUtility工具

SQL Server雖然已是一個很友善操作的資料庫(以下簡稱DB),不過其管理工具SQL Server Management Studio(簡稱SSMS)裏的某些Task操作流程過於冗長,我將其比較常用的功能寫成一個Console獨立程式,它可被第三方陰影備份工具或自動化批次檔呼叫使用,比起受限在SSMS的排程工具,多了一些寬廣的選擇。

App Usage

以下介紹它的指令功能 (請使用*.bat批次檔來執行它,省得每次重複打字)

DB終止使用中連線Kill
SSMS裏很多動作在未強制踢出使用連線,是無法進行操作的,此工具會將該DB所有的SPID (Server Process ID)強制踢除,以進行後續工作。
App.exe -d tempdb -x killspid

指定Config內ConnectionString的Key值
為了在同一個bat批次檔執行不同的DB連線,可以在App.config內設定不同的connectionStrings值,再利用-k參數來指定DB連線字串的KeyName,預設值為Default。
App.exe -d tempdb -x killspid -k "Local"
ConnString


DB離線Offline
要替換不同版本的DB內容,不須Detach/Attach資料庫,只需把DB執行離線Offline動作,其MDF/LDF資料檔就不會呈現In Used,可以直接蓋檔。然而,在SSMO下若該DB有人連線使用中,離線指令會失敗,因此本工具會先踢出該DB連線ID, 再執行離線指令。
App.exe -d tempdb -x offline

DB上線Online
未online的DB無法後續操作,因此替換MDF檔案後可啟用。
App.exe -d tempdb -x online

DB備份Backup
自從知道offline DB能換MDF檔後,已很少使用Backup指令了。輸出檔名支援NOW時間格式字串。若未指明路徑,會在Working Directory下建立以DB+日期為名的備份檔。
App.exe -d tempdb -x backup -f "D:\db_{0:yyyyMMddHHmmss}.bak"

DB還原Restore
此指令是以覆蓋Replace方式還原DB,其bak中記錄的MDF/LDF路徑,因此要注意這些細節。若是重要的DB還原,還是透過SSMS工具比較清楚安全。
App.exe -d tempdb -x restore -f "D:\db_{0:yyyyMMddHHmmss}.bak"

DB壓縮Shrink
對DB進行最小資料壓縮,保留可用空間0%。
App.exe -d tempdb -x shrinkdb

DB清空表格內資料Truncate
清除DB內所有Table裏的資料內容,個人喜歡用Truncate Table指令,因為它會Reseed Identity欄位。單一表格時清除資料,可能因為正規化Constraint限制而無法執行,因此提供了一道清除DB內所有表格資料的強制指令,它會避開Constraint/Trigger等限制。
App.exe -d tempdb -x truncateTable -t TABLE_NAME  // 依正規化清除單表資料
App.exe -d tempdb -x truncateTable -t *   // 避開正規化清除所有表格資料


SQL Script檔案執行
執行SQL Script檔案內容,不回傳結果。
App.exe -d tempdb -x sqlExec -f "D:\in.sql"

SQL Script檔案查詢
執行SQL Script檔案內容,並將查詢結果顯示console上,也可以把結果輸出至CSV檔案。
App.exe -d tempdb -x sqlQuery -f "D:\in.sql"
App.exe -d tempdb -x sqlQuery -f "D:\in.sql" > "D:\out.csv"

image

清除表格/欄位的註解資訊Description
Table欄位有附上註解是好事,尤其在EF架構裏能被引入,對於開發階段很有幫助。若在發行Client單機板程序時,可以清除這些註記,達到保護用途。
App.exe -d tempdb -x clearDesc

重置表格內Identity欄位值為目前最大值
Table的Identity欄位值若想重置(Reseed)為目前欄位的最大值,可以使用這指令來重設,例如Seed值為1000,但實際最大值為50,經過重置後Seed值會變成50。
App.exe -d tempdb -x identMax -t "Table1" -c "Column1"

刪除表格 DropTable

支援刪除多個Table表格(支援*號),可鎖定在某schema owner上。
App.exe -d tempdb -x dropTable -t "a*" [-s "SchemaName"]
Changed database context to 'tempdb'.
DROP TABLE [dbo].[a1]... [OK]
DROP TABLE [dbo].[a2]... [OK]
DROP TABLE [dbo].[a3]... [OK]
Total 3 tables has dropped.


修改表格Schema擁有人
修改多個Table表格(支援*號)的Schema Owner,方便調測用戶權限。
App.exe -d tempdb –x altTableSchema -t "Table1*" -s "OldName,NewName"

取得目前Client連線數量

App.exe -x cltConnCount
3

取得目前Client連線狀態
App.exe -x cltConnStatus
Status      Count    AppName
sleeping    1        Microsoft SQL Server Management Studio
sleeping    1        Microsoft SQL Server Management Studio - Query
running     1        SqlDbUtility


查看SQL Server引擎版本

App.exe -x version
Microsoft SQL Server 2014 - 12.0.4100.1 (X64)
        Apr 20 2015 17:29:27
        Copyright (c) Microsoft Corporation
        Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)


檢查資料庫完整性CheckDb
檢查訊息可在Console呈現,也可寫入文字檔案。
App.exe -d tempdb -x checkDb > “D:\health.txt”



更新記錄:

2016/03/26 Version History:

  • 新增「刪除表格DropTable、修改表格Schema」等2道Table操作指令。
  • 新增「讀取Client連線數量/狀態, 查看SQL Server版本, 檢查CheckDb完整性」等4道DB資訊指令。
  • 調整指令說明及語法範例的顯示,指令改斷義首字大寫說明,但大小寫不影響執行結果。

    2016/01/05 Version History:

  • 調整執行指令的參數為x,取代之前的c值。
  • 調整命令「shink」為「shinkdb」。
  • 調整c參數意義為Column Name。
  • 調整restore命令,加入執行前先踢除使用中連線,並能讀取日期格式化字串檔名。
  • 新增指定app.config內的connectioin string鍵值(-k參數)。
  • 新增s參數為讀取相關string字串(未來用途)
  • 新增重置Reseed表格Identity值為目前的最大值的新命令(identmax)。 

    2014/08/23 Version History:

  • 初版Release,下載含本文Help說明件.
  • 發佈前因停電導致程式源檔損毀,無奈下重寫主程序,也相較之前版本增加了4道指令。

     

    程式下載:(.NET 4.0 Required, Portable, Size: 140KB)
    [百度雲盤: SqlDbUtility_20160326.rar]

  • 2016-04-06

    [APP]CALCU Stylish Calculator時尚計算器

    使用15年的CASIO fx-350TL計算器,發現4位數左下直豎顯示壞了(這個損壞問題很難被發現,是在寫時間秒數推算程式時發現是計算器的初值有錯),也不打算重買,畢竟手機APP有很多計算器軟件可取代。
    Calc Broken
    用過工程型計算器之後,才會發現有優先次序的括號及運算式可顯示、調整是很重要,這樣才能檢查是否按錯。因此我開始在Google Play裏試用所有比較知名的計算器APP,主要訴求有幾點:
    1. 獨立的APP,而非廠牌手機內建的(換手機就不擔心)。
    2. 有括號()按鍵。
    3. 要能顯示運算式及調整修改。
    4. 常用鍵位分佈要相近。
    5. 進階工程按鍵若有更好(加分)
    最後勝出的是CALCU Stylish Calculator這個APP軟件。
    Calc APP UI
    CALCU™時尚計算機 - Google Play Android 應用程式
    https://play.google.com/store/apps/details?id=com.candl.athena
    它的優點有:
    1. 顯屏下方顯示運算式,手指點位置可作修改,且不需要按=號,隨時就能得到計算結果。
    2. 顯屏手勢往下滑就有運算式歷程(History),隨時能點項目出來修改重算。
    3. 數字按鍵盤手勢往上滑就能出現其他工程型功能按鍵,不用在小小屏幕裏顯示所有工程按鍵,能簡化呈現。
    4. 多種外觀Style顏色可選擇,計算結果按一下就可複製文字,貼到別處。
    5. 按鍵能震動(能減少按錯,但它的震值有點太大),數字顯示能千位逗號且換字型。
    6. 免費版上方有廣告,但不影響顯屏數字,付費版66元台幣很值得。
    這APP是在Play市場上經過實際試裝各種計算器APP後,最後最後盲選勝出的,非常值得推薦。

    2016-04-03

    Xamarin.Android官方教學視頻

    由於微軟於Build2016宣布Xamarin全面免費且開源(Open Source),估計Xamarin社群力量會蓬勃發展,官網提供了一鍵安裝所有環境的Xamarin Installer,也提供了Developer教學視頻

    Xamarin Videos

    針對Android開發部分,我覺得這些線上教學視頻做得非常好,雖然是講英文的,但簡報教材上都提供簡短的名詞解釋及示意圖,十分淺顯易懂。每份視頻長度約1小時,建議大家觀看。

    1. Installing Xamarin on Windows (51MB, 720P影片下載)
    2. Introduction to Xamarin.Android (281MB, 720P影片下載) 示範程式碼下載
    3. Activities and Intents (306MB, 720P影片下載)