Atom Feed 格式說明
簡介Atom Syndication Format 中文翻譯作 Atom 聯合格式,是一種基於 XML 用來對網站內容做格式化的規範,與 RSS 一樣可作為 Feed 讓閱讀器能更新資料等功能。完整的規範可以在 RFC 4287 查看,本文以表格的方式整理說明。 命名空間Atom 1.0 版命名空間為 http://www.w3.org/2005/Atom MIME TypeMIME Type(Content Type 或稱為 Media Type) 為 application/atom+xml 結構與定義基本資料型態atomTextConstruct資料型態為 atomTextConstruct 的 Element 定義以下屬性 Attribute 必要 說明 type X 類型 Element內容依據type不同變化,規則如下: text: 純文字,不可有子節點 html: HTML 格式的純文字,不可有子節點 xhtml: XHTML 之節點內容,以 <xhtml:div> 起始 atomDateConstructRFC3339 標準,也 ...
C# 在非 Web 專案模擬 HttpContext 進行單元測試
開發 Web 專案時常會使用到 HttpContext 物件,例如使用 HttpContext.Current 取得資料,而有時候我們可能會因為單元測試方便、分工或其他因素,將一些功能寫在別的類別庫專案再進行引用。但是非 Web 專案使用到 HttpContext.Current 就會發現他是 Null 而無法使用,所以我們必須自行模擬建立 HttpContext 物件: 首先加入參考,於 [.NET] 的頁籤加入 [System.Web];如果找不到的話,先調整專案屬性,於 [應用程式] => [目標Framework] 選擇非 Client Profile 的版本,例如 .NET Framework 4 接著加入以下程式碼即可 1234567891011121314151617using System.Web;using System.Web.SessionState;using System.Security.Principal;using System.IO;// ...HttpContext.Current = new HttpContext(new Http ...
MySQL EXPLAIN - 效能分析語句
有時候在開發程式會遇到一些效能上的瓶頸,可能是 SQL 語法下的不好或者是索引建立不當所造成,不過在初期開發資料量不大的時候,可能無法明顯的感覺到效能上的差異,我們可以透過 EXPLAIN 語句來分析查詢語句的效能,確保在開發初期就能使用有效率的 SQL 語句。EXPLAIN 用法如下 1EXPLAIN [EXTENDED] SELECT select_options 簡單的說,就是在你的查詢 SELECT 語法之前加上 EXPLAIN 就可以了 現在我們建立一個資料表 users 與一些測試資料如下 1234567891011121314151617CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `sex` tinyint(4) NOT NULL, `age` tinyint(4) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM D ...
SQL SERVER 如何 Truncate 具有 Foreign Key 的資料表
當想要清空資料表時,我們可以用 TRUNCATE 語句來達到,但是當該資料表有使用外部索引鍵時,會出現如下錯誤: 12無法截斷資料表'Table',因為該資料表正由FOREIGN KEY 條件約束參考Cannot truncate table 'Table' because it is being referenced by a FOREIGN KEY constraint 因為外部索引鍵的關係造成無法執行 TRUNCATE 語句,當然我們可以直接用 DELETE 語句來清空資料,不過資料表中如果具有自動增值 (Auto increase) 的識別 (Identity) 欄位,編號並不會重新計算。這時候可以用兩種方法來達成目的: 第一種: 先刪除 FK 的限制後,使用 TRUNCATE 語句,最後再將 FK 重新建立回來。 第二種: 當資料表很多又可能有很多 FK 的時候,使用第一種方式顯然是相當麻煩,這時候可以使用下面的語句達到目的 12345USE [DbName]GODELETE [Table];DBCC CHECKIDENT(' ...
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 ...





