2014-11-24

ASP.NET MVC - 如何讓Form參數內的XML字串綁定到Model

最近在學習MVC,目前有個需求,需要使用者將Form Post到某個Action內,裡面的參數還會有xml文字,整個參數會像底下一樣:
A=123&B=abc&C=<Root><A>123</A><B>abc</B><C>kkk</C><D>iii</D></Root>

其中A與B是普通字串,而C是XML字串

在Visual Studio 2013裡有個好用的功能,可以將XML或JSON字串轉成Class,只要使用選擇性貼上即可。底下就是寫好的一個使用者參數的Model:
public class SendModel
{
    [Required(AllowEmptyStrings = false, ErrorMessage = "{0}不可為空")]
    [StringLength(3, MinimumLength = 3, ErrorMessage = "{0}長度必須為{2}")]
    public string A { get; set; }
 
    [Required(AllowEmptyStrings = false, ErrorMessage = "{0}不可為空")]
    [StringLength(3, MinimumLength = 3, ErrorMessage = "{0}長度必須為{2}")]
    public string B { get; set; }
 
 
    [Required(AllowEmptyStrings = false, ErrorMessage="xml不可為空,請檢查格式是否正確")]
    public SendXmlModel C { get; set; }
 
    //這個類別就是將XML貼上之後所產生的,格式相同就可序列化成字串或反序列化回該類別的物件
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute("Root", Namespace = "", IsNullable = false)]
    public partial class SendXmlModel {
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
        public string D { get; set; }
    }
}


2014-10-06

雲豹200更換前叉油DIY


200豹騎了也四萬多公里了,前叉變得很軟,尤其現在每天需要雙載,稍微一個煞車就點頭,台灣的拉力路面也是對避震非常的有挑戰性!(抱怨一下,每天需要走的汐止明峰街,那路面真他媽的爛...)所以興起了換一下前叉油的念頭。

2014-07-15

偵測檔案使用的編碼是Utf-8或Big5-新版

前一篇文章討論到如何偵測檔案的編碼方式,但由於還是有很小的機會會誤判,心裡總是有疙瘩在,不確定廠商到底會丟怎樣的資料來(廠商的代名詞就是腦X),而且訂單XML內中文字的數量很少,若只有一筆,很可能只有三個中文字而已,於是從utf-8是如何編碼開始研究起。

沒想到規則意外的簡單,因為我不須知道太詳細的細節,只需知道幾個重點:

  1. 只要是0開頭的byte就表示是ascii編碼,也就是0xxxxxxx後面的七碼x相容於傳統ascii編碼
  2. 非ascii編碼,一律以1開頭再接0,並且最少兩個1
  3. 1的數量指出這個字是由幾個byte所組成,如1110xxxxx表示這個字要3個byte
  4. 其後每個子byte都為10開頭
  5. 最多每個字4個byte

偵測檔案使用的編碼是Utf-8或Big5

使用程式處理文字檔,最麻煩的就是要選擇開啟檔案時所採用的編碼方式。在台灣常見的就是utf-8或是big5兩種編碼,只要選錯了,那麼檔案裡面的中文字99.999%以上會變成亂碼或是莫名其妙的中文字。這也是非英語系國家的痛啊!

2014-06-23

如何讓Ubuntu Server在安裝時使用SoftRaid

一般來說,如果要架設Server,最好使用硬體來做Raid,較省資源和穩定。但有時候預算或其他問題,沒辦法使用到硬體的Raid卡來做,那麼使用軟體提供的SoftRaid也很不錯。缺點是較吃CPU資源和效能影響及發生問題時恢復資料的難度較高。但現在電腦的CPU都很強大了,所以在有限的資源下也可考慮看看。

現在網路上比較容易查到的,都是已經裝好Server作業系統,然後教你怎樣設定和加入Raid,但我是全新安裝(或重灌),在做Raid就卡關了是要怎麼把作業系統裝進去啊?

沒關係,現在一步步來。

2014-06-22

[筆記] 解決Ubuntu 14.04 使用SoftRAID或LVM開機出現diskfilter writes are not supported

Ubuntu Server出了新版14.04,剛好最近公司Mail Server掛點,乾脆就重灌成這版吧,比起不熟悉的OpenSUSE,我還是更習慣Ubuntu

使用SoftRAID安裝好後,重開機,但這時畫面卻出現這個:


2014-06-20

Ubuntu 使用 bind9 架設DNS Server

這是寫給自己看的安裝筆記,所以比較簡單。

1. 首先安裝必要套件
sudo apt-get install bind9 bind9-doc dnsutils

2. 進入到/etc/bind目錄,會看到底下目錄結構:

紅框的兩個檔案是我們要修改的。
named.conf.local 裡面可以設定正反解的zone,如果不想改,也可以新增自己喜歡的檔案,但要記得在named.conf裡面include他
named.conf.options 主要在設定dns的一些選項和安全性。
其他的檔案就是預設的一些localhost的正反解相關,這裡我們不用理他沒關係。

2014-05-08

給windows使用者的簡易Git環境架設



我們公司屬於小型開發團隊,使用windows開發.net or asp程式,而開發的專案都屬於封閉專案,不能對外公開,所以要導入版本控制還是自己架設版控的Server比較保險。

隱約還記得前一篇文章講到架設比較簡易的SVN Server(明明就沒幾天),現在閱讀完介紹Git的書之後,才發現原來自己大錯特錯! Git Server的架設超簡單的啊!

雖然網路上搜尋如何架設Git Server的文章很多,但幾乎都只寫給Linux user看的,好我知道你們很強對指令都很熟悉,但難道使用windows的開發團隊就只能旁邊畫圈嗎?

windows使用者看了google來的Git教學文章,應該通常第一個疑問就是:
「那些指令在哪打?命令提示字元(cmd)裡面沒有耶!」
對,所以假設你跟我一樣是超新手,底下從頭開始,順便幫自己筆記一下...

2014-05-07

使用Ubuntu架設SVN Server + WebSVN

一直都想架設版本控管系統,雖然現在已經有Git這種分散式控管的版本控制,網路上也有像githubbitbucket這種很大又免費的Git Server,但小研究了一下,他的控管方式跟SVN不太一樣,可能會顛覆原本的觀念。公司開發程式的工程師就兩位,所有的專案又不能對外公開,那就先研究一下比較好架設的SVN就好,Git就等之後學會了再來慢慢轉換過去。

目標:
  1. 能夠版本控制(廢話)
  2. 可以透過svn://或是http://連線
  3. 能有web介面看到現在所有的專案
  4. 有帳號密碼才能存取
綜合網路上各篇文章吸收研究後,底下是我採用的方法,步驟紀錄就筆記一下。

2014-05-01

為Visual Studio增強編寫網頁功能性

之前用Visual Studio 2012開發網頁,有一天赫然發現它會自動幫我的js檔另存成最小化的.min.js,還有CSS檔只要有顏色相關的屬性設定,都會顯示顏色給你看。一開始還以為是內建功能,想說一直都沒發現原來VS這麼貼心,後來換成VS 2013,啊這些功能怎麼都沒有了?還以為2013比較不貼心...

原來,只要裝了Web Essentials這個擴充套件就行啦!(我的VS2012之前不曉得什麼時候亂看擴充功能然後就裝了,一直都不知道XD)



2014-04-27

SQL Server Express開啟遠端管理Port

裝好SQL Server Express後,想要從遠端連線管理,防火牆也開了1433 port,但怎麼樣就是連不上呀!!怎麼會這樣? 原來是Express版預設沒有打開TCP/IP連線。

底下是解決辦法:

2014-04-17

開啟Windows 8的安全模式

windows 8的使用者,有時候電腦想進去安全模式,卻發現F8一直按都沒用...

底下告訴你如何進去:


2014-04-10

使用MacType,讓字型渲染更好看

從vista開始,微軟好不容易把系統預設字型從新細明體改成微軟正黑體,個人覺得無襯線的黑體比有襯線的新細明體好看太多了!!MacOS底下系統預設字型也一直都是無襯線的黑體,看起來就賞心悅目,尤其是在螢幕上顯示,在小字時由於有襯線字體太複雜,會影響閱讀效率甚至心情~

而微軟內建的ClearType渲染效果也有限,所以就有人開發出類似Mac系統所使用的MacType渲染,讓windows平台也可使用,看起來真的舒服多啦!!

就網頁來看,底下兩張比較圖就可看出差異(OS: win8.1  Browser: Chrome):

2014-04-08

在Blogger內加入程式碼高亮-使用Google Code Prettify

之前剛轉換到Blogger來,介紹過一篇使用SyntaxHighlighter來讓程式碼高亮,但用起來始終不那麼順手,或許是因為還要打太多字的關係,要手動指定class="brush:xxx",實在太麻煩了,而且新版的顯示的方式不是那麼喜歡(還是舊版好)。

所以繼續搜尋,終於找到另外一套google推出的google-code-prettify,可用很簡單的方式讓程式碼高亮,而且可自行調整的地方很多喔!

p.s. 因為google code快要關了,這個專案也改到GitHub去,所以如果底下連結找不到的話,在GitHub上也有喔!

為Postfix增加廣告信抵擋 - Postgrey

有鑑於公司自己架設的mail server最近一直收到很多廣告信,所以我們還是得增加一些抵擋這些垃圾的機制。

公司mail server採用Postfix,剛好有套postgrey可以幫助他過濾垃圾信。原理是基於許多發送垃圾信的server通常都射後不理,只要發送出去就好,不管對方有沒有收到都算成功;而正常的mail server會在沒有收到對方回應的時候,停一段時間再重試,所以這個套件就是記錄對方來源,第一次阻擋,等收到第二次重送的時候再放行。我們也可以自己手動增加白名單,在白名單內的位址就不去判斷,一律放行。

以下以本公司的作業系統OpenSuSE來說明如何設定。

2014-04-02

TableAdapter傳回單一值Query型態問題

因為之前開發.net程式都是用vb在寫,對於資料型態的要求並不那麼嚴謹,會自動判斷並轉型,但後來改用C#來寫,每個資料型態都很要求,萬一型態不同,必須指定轉型的資料型態。

最近有些DataSet檔案裡面,需要修改TableAdapter裡面某些回傳單一值的Query,但修改完一跑,怎麼程式報錯?看看程式裡面,竟然回傳的型態變成Object了!!

在Blogger內加入程式碼高亮-使用SyntaxHighlighter

因為懶得再續約domain name,所以從自己架的wordpress轉換到blogger來。但麻煩的是wordpress因為自己完全控制,所以自由度很高,但使用別人家的服務,就必須遵守人家的規則。其他美化什麼的都還好,反正這裡是工作筆記,但就因為是工作筆記,放上程式碼是家常便飯,但blogger並沒提供這個功能,於是只好自己搜尋看有沒有什麼方法...

2014-03-05

用CSS3+DIV繪圖

其實網路上很多神人早就利用CSS+div來畫圖了,像畫apple的logoopera的logo小叮噹(會叫小叮噹的都是有年紀的了…@@)…等等(更多可看看這裡這裡)~

我也沒想過要自己試試看,但最近寫了全新專案,想說錯誤頁也要自己訂個有個性一點的,所以就自己畫了超陽春,但純CSS的畫面…..