C# 如何設定 Windows Form 顯示為全螢幕模式
在 C# 中,只要簡單設定 Form 物件的屬性就可以達到全螢幕的效果,可從設計頁或用程式碼方式去設定,而依據使用情境又可使用不同方式來實作,這邊說明兩種情境: 情境一:程式全螢幕阻擋讓程式全螢幕並且永遠在最上層,無法縮小 方法一:設計頁設定屬性於設計頁介面點選 Form 物件設定以下屬性: FormBorderStyle 為 None,去掉外框。 WindowState 為 Maximized,視窗最大化。 TopMost 為 true,最上層。 方法二:使用程式碼設定屬性於 InitializeComponent() 之後加入: 123this.FormBorderStyle = FormBorderStyle.None;this.WindowState = FormWindowState.Maximized;this.TopMost = true; 情境二:程式全螢幕可縮小讓程式全螢幕,當用切換到別的程式時,視窗縮小 屬性設定方法同上,除了 TopMost 不設定 (為 false),另外 Form 還需實作 Deactivate 事件 1234private void F ...
ASP.NET C# Routing(IIS URL Rewrite 替代方案)
使用 apache 時可以方便的使用 mod_rewrite,來做重寫網址的功能,而到了 IIS 則可使用 IIS URL Rewrite Module 來達成,而 .NET 3.5 SP1 之後新增加了 System.Web.Routing 的組件,他可以做到和 IIS URL Rewrite Module 類似的事情,但是在背後運作的機制和使用上有不同之處,在本篇就不多做介紹。 本篇將說明如何使用 Routing 組件來達成 URL 重寫的功能,例如 Blog.aspx?User=emn178 的網址,以 emn178/Blog 的樣式呈現,此篇文章以實作 IRouteHandler 方式處理。 開發模式要在開發時套用此功能,依照以下步驟設定 專案 [加入參考] => [.NET] => [System.Web.Routing] 組件 VS2008 不會自動將模組加入 Web.config,所以需要額外加入以下內容,請找到相對應的位置加入 1234567891011121314151617181920<configuration> ...
PHP 使用者 (會員) 權限設計 - 以位元表示
網路上有人提到這個問題,整理了一下自己提出的回應寫成這篇提供參考。一般做法通常使用資料表紀錄人與權限的關聯,甚至是有群組和角色等更複雜的機制,在檢查是否具有權限時可能要 Join 許多 Table 來達成。而此篇文章則以不同的方式來設計,簡單的以位元的方式來表示使用者具有之權限,並使用 php 與 mysql 實作範例,範例不包含群組和角色等機制。 首先建立一權限資料表包含 index 欄位表示第幾個 bit,型別為 int;name 欄位表示權限的名稱,型別為 varchar,並建立一些權限,例如: Table: authorities index name 1 Authority1 2 Authority2 … … bigint 版本接著於使用者資料表包含一欄位表示具有之權限,例如 authority, 型別為 bigint unsigned,並建立一些使用者,例如: Table: users id authority 1 7 2 1 3 18446744073709551615 Case 1要檢驗使用者1是否具有 Authority ...
修正 SyntaxHighlighter 單行與卷軸顯示問題
之前在在痞客邦使用 SyntaxHighlighter 為程式碼上色這篇文章提到如何使用,但在實際使用了一段時間之後就發現到一個問題:overflow 的捲軸顯示不正常,尤其是在只有一行的程式碼時。 在不同瀏覽器下有不同的情況,例如: IE7: 高度少一行,所以只有一行又有捲軸時,區塊剩下捲軸,看不到程式碼。 IE8: 只有一行時,該有捲軸卻沒有。(早期的 Firefox 版本也有,現在已經沒有了) Chrome 和 Safari: 垂直卷軸一直存在。 總之有很多問題,在花了不少時間研究之後,終於改出了一個稍微正常的版本,在 Firefox、Chrome 和 Safari 實測看起來都正常,但是 IE8 單行仍然不是很正常,但勉強可用;IE7 單行時正常,但多行時仍然會少一行而出現垂直卷軸。 除此之外,將關於的按鈕移到左邊,不會擋住程式碼。 修改 shCoreDefault.css 的部分程式碼如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 ...
Java 如何解析命令列參數
網路上有很多專門處理參數的套件,而本文使用 apache 的 commons-cli 來做說明。如果沒有這個套件請先下載(例如撰寫此文時最新的版本是 commons-cli-1.2-bin.zip)。解壓縮後,可用加入外部 jar 檔或其他方式,讓你的專案能夠使用這個套件。 接著你可以使用 Options 類別來定義可用的選項 (Option) 12Options options = new Options();options.addOption(選項名稱, 選項別名, 是否帶參數, 選項描述); 例如: 12Options options = new Options();options.addOption("u", "username", true, "enter username"); 你的程式將可接受 -u 或 --username 的選項 要將可用選項列出說明可使用 HelpFormatter 類別 12HelpFormatter formatter = new HelpFormatter();formatter. ...
清除 SQL Server Log 檔
如果沒有限制資料庫的Log成長,一不小心某天就發現硬碟竟然滿了,此時會出現這樣的錯誤訊息: 12訊息 9002 ....資料庫 'TestDB' 的交易記錄已滿。如果要了解為何無法重複使用記錄中的空間,請參閱 sys.databases 中的 log_reuse_wait_desc 資料行。 結果發現都是Log檔佔掉了空間,高達幾十GB都有可能,這時候只好先想辦法清空Log資料,SQL Server 2008的話可以嘗試以下的指令來做清除: SQL SERVER 2008 123456USE [資料庫名稱]GOALTER DATABASE [資料庫名稱] SET RECOVERY SIMPLE WITH NO_WAITDBCC SHRINKFILE(記錄檔邏輯名稱, 1)ALTER DATABASE [資料庫名稱] SET RECOVERY FULL WITH NO_WAITGO 邏輯名稱可在資料庫上按右鍵=>[屬性]=>[檔案]中查看,注意邏輯名稱不一定會和檔名相同,例如: 123456USE [TestDB]GOALTER D ...
Java 如何新增檔案和資料夾
例如我們要建立一個檔案路徑為 logs/test.log,使用 File 類別如下 12String filePath = "logs/test.log";File file = new File(filePath); 此時如果直接 createNewFile() 123456789if(!file.exists()){ try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }} 會因為 parent 的資料夾不存在而失敗,而這時直接使用 mkdirs() 12345678910if(!file.exists()){ file.mkdirs(); try { file.createNewFile(); } catch (I ...
Linux chmod 修改資料夾和子資料夾權限
有時候會需要針對一個目錄下的所有資料夾和子資料夾做 chmod,例如從 Windows 傳過來的檔案或 zip 解開的檔案,權限會變成 777,這時候可以使用搭配 find 指令來找出特定類型的資料處理: 將目前資料夾下的所有資料夾和子資料夾改為 755 1find . -type d -exec chmod 755 {} \; 或是要將目前資料夾下的所有檔案和子資料夾中的檔案改為 644 1find . -type f -exec chmod 644 {} \;
Java 讀取設定檔
在 Java 中可以使用 Properties 的類別來讀取設定檔,例如有一個設定檔 config.properties 其中包含以下設定 123host = jdbc:mysql://localhost/dbusername = userpassword = 123456 而在 Java 程式中可以用以下方式讀取 12345678910111213141516171819202122232425262728Properties properties = new Properties();String configFile = "config.properties";try { properties.load(new FileInputStream(configFile));} catch (FileNotFoundException ex) { ex.printStackTrace(); return;} catch (IOException ex) { ex.printStackTrac ...
C# 以屬性的方式存取陣列元素
本文於 2012/02/09 更新:此需求應為陣列元素唯讀,又能使用索引的方式讀取,故更新此文章。 在網路上有人提出這個問題,想要以屬性 (Property) 的方式存取陣列元素,而我回應了一個解決方案,主要使用了泛型 (Generics) 和索引子 (Indexer) 的方式: 利用泛型先做一個通用的屬性陣列類別 1234567891011121314151617class PropertyArray<T>{ private T[] array; public PropertyArray(T[] array) { this.array = array; } public T this[int index] { get { return array[index]; } }} 在需要此功能的類別中加入上面的類別為屬性成員 12345678910111213 ...