異國Taipei流浪記
2012年6月18日 星期一
讀書心得:Peopleware腦力密集產業的人才管理之道
知道這本書,是從「約耳談軟體」上面看到的
後來跑去書局看了一下,覺得這本書還蠻有趣的
就把這本書買回來了
感覺作者對於管理軟體開發人員的要點,就是...「帶人要帶心」
以前我還待在SI公司的時候
對有些事情不太滿意的地方(不過,我可是很喜歡這間公司的),都在這本書上找到了解答
舉個例來說,以前每個星期都要開專案進度會議
全部門的人,待在會議室排排坐,等著主管一個一個點名報名進度
我一直覺得這是個很浪費時間的做法
要掌控專案進度,有很多種方法,沒有必要花費大家的時間來聽其他人的進度
以及聽主管在罵人
每次開會時間,少則半個小時,多則二個多小時
我後來在這本書上找到了解答
作者說明了主管會以這樣的形式開會,是因為某些原因(當然是不要的原因)
除了這個之外
這本書還說明了何謂團隊殺手
哪些是團隊形成的化學因素
甚至辦公室座位的安排..等等
很有趣的一本書
值得從事軟體開發人員買回家收藏,每年都要拿出來看一次
2012年5月9日 星期三
ASP.NET MVC:改變View的charset編碼(Encoding)
最近有一個case是要將資料用post的方式傳給其他業者
其中有一個參數是中文字
而對方系統是使用big5編碼(都西元2012了...)
我們當然是UTF8
這下子有點玩了
看一下我的處理方式
以前在寫php時,只要在程式裡面加了下面這一行
header('Content-type: text/html; charset=big5');
Web Server在產生網頁時,就會以big5編碼
但是asp.net mvc 3呢
我的處理方式是:
寫一個繼承ActionFilterAttribute的class
protected class Big5CharsetAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.AddHeader("Content-Type", "text/html; charset=big5");
filterContext.HttpContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("Big5");
}
}
重點就是這兩行
filterContext.HttpContext.Response.AddHeader("Content-Type", "text/html; charset=big5");
filterContext.HttpContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("Big5");
將ASP.NET MVC預設的header和編碼改成big5
然後,Controller的action名稱前面再加上[Big5CharsetAttribute]
例如:
[Big5CharsetAttribute]
public ActionResult AutoSubmitForm()
{
//your code
return View();
}
這樣,這個action就會用big5來產生view
還沒完喔,再來是html的部份
view最好要加上這一行
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
這樣兩個系統就能用中文來溝通啦。
(還是老話一句,現在是unicode的時代...)
2012年5月1日 星期二
讀書心得:序
從開始工作以來
一直保持著喜歡看書的習慣
不過大部份看的都是跟軟體開發有關的書
除了自己喜歡學習之後
深深的感覺到,軟體開發這一行
光有經驗是還不夠的
必須再吸收一些新的東西
因為你可能從前輩身上學到的,也不一定是最好的做法
軟體是會隨著時間的淬練(資料、架構、需求的擴大)
來驗證你所開發的軟體是否經得起考驗
因此必須不斷的吸收新知識,來讓自己前進
不過話說回來,我所看的書,大部份是跟系統分析、開發有關的書
之後有時間,我會慢慢的把看了這些書的心得寫上來
除了方便自己記錄之外
也讓想看這些書的人,做個參考。
一直保持著喜歡看書的習慣
不過大部份看的都是跟軟體開發有關的書
除了自己喜歡學習之後
深深的感覺到,軟體開發這一行
光有經驗是還不夠的
必須再吸收一些新的東西
因為你可能從前輩身上學到的,也不一定是最好的做法
軟體是會隨著時間的淬練(資料、架構、需求的擴大)
來驗證你所開發的軟體是否經得起考驗
因此必須不斷的吸收新知識,來讓自己前進
不過話說回來,我所看的書,大部份是跟系統分析、開發有關的書
之後有時間,我會慢慢的把看了這些書的心得寫上來
除了方便自己記錄之外
也讓想看這些書的人,做個參考。
2012年4月23日 星期一
C#:convert to ASCII
在C#中,要將字元或字串轉成ASCII code的方法如下
若是char時,直接用Convert.ToInt32()來轉換即可
若是string,則利用Encoding.ASCII.GetBytes()來取得陣列
以812為例,會取得56 49 50
char charWord = 'a';
int asciiCode = Convert.ToInt32(charWord);
string stringWord = "812";
byte[] asciiBytes = Encoding.ASCII.GetBytes(stringWord);
若是char時,直接用Convert.ToInt32()來轉換即可
若是string,則利用Encoding.ASCII.GetBytes()來取得陣列
以812為例,會取得56 49 50
2012年4月20日 星期五
C#:string convert to DateTime
將日期型態轉成字串格式,最常用的就是:
string testDate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
但是要將字串轉成日期型態就比較麻煩一點的
可以用DateTime.ParseExact()來處理
假設有一個字串格式為yyyyMMddHHmmss
那麼轉換的code如下
string testDate = DateTime.Now.ToString("yyyyMMddHHmmss");
IFormatProvider cultureStyle = new System.Globalization.CultureInfo("zh-TW", true);
DateTime time = DateTime.ParseExact(testDate, "yyyyMMddHHmmss", cultureStyle);
2012年4月9日 星期一
T SQL: stored procedure讀取XML
這裡記錄一下自己覺得好用的讀XML方法
首先,看一下要執行的SP及傳入的XML參數
Exec sp_TestXML
@prdxml ='<products>
<data>
<id>3</id>
<itemdata>
<itemname>notebook</itemname>
<amount>30000</amount>
</itemdata>
<itemdata>
<itemname>CPU</itemname>
<amount>5000</amount>
</itemdata>
</data>
</products>'
XML的格式說明:
<products>的tag裡,只能有一個<data> tag
但是<data>裡可以有多個<itemdata>
也就是master-detail的格式
再來看一下stroed procedure內容:
Create PROCEDURE [dbo].[sp_TestXML]
@prdxml xml
AS
BEGIN
Select x.value('.','VARCHAR(5)') as id
from @prdxml.nodes('/Products/data/id') as params(x)
Select Item.value('(./ItemName)[1]','VARCHAR(max)') as ItemName
,Item.value('(./Amount)[1]','int') as Amount
from @prdxml.nodes('/Products/data/ItemData') as params(x)
Select Item.value('ItemName[1]','VARCHAR(max)') as ItemName
,Item.value('Amount[1]','int') as Amount
from @prdxml.nodes('/Products/data/ItemData') as Product(Item)
RETURN
END
首先,參數要宣告成xml型態
裡面第一段寫法,是要讀XML的master部份
第二段和第三段寫法,都是要讀detail的部份
只是table的名稱有差異
可以比較一下這三段的From子句
以及Select子句的差別
看自己喜歡哪種寫法
2012年4月5日 星期四
SQL: ISNULL(), NVL(), IFNULL() 函數
在寫SQL語法時
若要將SELECT的欄位由NULL轉為空字串(empty string)
以我用過的三個資料庫的函數分別如下:
Oracle: NVL()
SQL Server: ISNULL()
MySQL: IFNULL()
以SQL Server為例,可以用這樣的語法來將null轉為你要替換的字串
不過,寫了這麼多年的SQL
很少遇到要將欄位的空字串轉為NULL
我是用REPLACE()來轉換
SQL Server的用法如下:
若要將SELECT的欄位由NULL轉為空字串(empty string)
以我用過的三個資料庫的函數分別如下:
Oracle: NVL()
SQL Server: ISNULL()
MySQL: IFNULL()
以SQL Server為例,可以用這樣的語法來將null轉為你要替換的字串
SELECT ISNULL(Column,'')
FROM YourTable
不過,寫了這麼多年的SQL
很少遇到要將欄位的空字串轉為NULL
我是用REPLACE()來轉換
SQL Server的用法如下:
SELECT REPLACE(Column,'',NULL)
FROM YourTable
訂閱:
文章 (Atom)