由於我的部落格一直沒什麼人氣,所以只好搬家到點部落~~未來有新文章會改po在這裡。
- 8月 15 週日 201021:25
搬家
- 7月 22 週四 201022:55
SQL 考題-1

考題又來了,想 SQL Statment 真的是有活化腦細胞的作用,這次題目如下:
假設有一個 TABLE 欄位如下: 日期, 學生編號, 學生姓名, 成績,可能每隔幾天有一次考試並登入成績。
請問要如何下一個SQL SELECT 查出 每個月 前5名的學生及成績?
(用單月累積 分數最高者為當月第一名)
- 7月 09 週五 201021:49
計算 Byte 數量

最近有個格式化字串的需求,是要計算已知字串的 Byte 數量,每 100 個 Byte 加上一個換行符號(不能超過100)。一開始的想法是一個 char 一個 char 去跑迴圈並計算 Byte 數。不過這樣又似乎不太妥當,想來想去,最後寫成這個樣子:
public static string SetupType(string text) {
//先去除換行字元
text = text.Replace("\r", "").Replace("\n", "");
//每行最大 Byte 數
int bytesCountEachLine = 100;
//記錄目前已處理完成的字元數
int charIndex = 0;
//最後的回傳值
string result = string.Empty;
Encoding ansi = Encoding.Default;
byte[] textBytes = ansi.GetBytes(text);
while (charIndex < text.Length) {
//起始位置
int start = ansi.GetByteCount(text.Substring(0, charIndex)) ;
//利用 Encoding.GetCharCount 從起始位置將 100 個 Bytes 的字元一次取出
int count = 0;
if (textBytes.Length - start > bytesCountEachLine)
count = ansi.GetCharCount(textBytes, start, bytesCountEachLine);
else
count = ansi.GetCharCount(textBytes, start, textBytes.Length - start);
string target = text.Substring(charIndex, count);
//取出來的字串可能會大於 100 Bytes,所以需要把多餘的去掉
while (ansi.GetByteCount(target) > bytesCountEachLine) {
target = target.Substring(0, target.Length - 1);
count -= 1;
}
charIndex += count;
//最後一行不用加斷行符號
if (charIndex < text.Length)
result += target + "\r\n";
else
result += target;
}
return result;
}
- 7月 07 週三 201021:09
預設程式碼樣板

平常用 Visual Studio 新增檔案的時候(例如:aspx、cs...),Visual Studio都會很聰明的產生出一模一樣的檔案,例如下面這張圖: 其實這是因為 Visual Studio 產生檔案時,是從一堆 Template 當中複製過來的。以上面這張圖為例,是在: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplatesCache\Web\CSharp\1033\WebForm.zip\CodeBeside.cs
- 6月 29 週二 201023:26
改寫字串

剛剛看到天才少年 laneser 寫了一段程式碼,為方便說明,我稍微刪掉了一些。大致上如下:
[STAThread]
static unsafe void Main() {
string s = "123";
fixed (char* ps = s) {
ps[0] = '3';
ps[1] = '2';
ps[2] = '1';
}
MessageBox.Show("123");
}
- 6月 20 週日 201019:18
$create()
- 6月 08 週二 201001:28
WCF - 以 IP 取代 HostName

網友問了個問題:WCF 建立時,服務參考的網址是顯示主機名稱,但他想用 IP 取代主機名稱,這該怎麼做呢?其實還挺簡單的,在 IIS 設定一下就行了,下面用對照的方式來看:
設定前:
- 6月 07 週一 201000:05
Fiddler失效

這個問題存在好久了,每次在家裡用Fiddler都攔截不到瀏覽器所送出的HttpRequest資訊。由於在家寫程式多半都不是為了工作,所以也就睜一隻眼閉一隻眼,攔截不到就攔截不到,程式寫得高興就好。 結果今天為了抓某隻程式所發出的HttpRequest,走投無路之下只好乖乖想辦法排除問題,笨笨的試了一個多小時,最後才在官網上看到解決辦法。如下圖般設定就行囉!
- 5月 02 週日 201001:43
透過修改機碼解決IE8的SessionID共用問題

之前發過一篇 SessionID重複 的問題。事隔多日,總算讓我找到好方法,可以透過修改機碼的方式來改變 IE 共用 SessionID 的行為。 只要在 HKCU\Software\Microsoft\Internet Explorer\Main 底下新增一個名為 TabProcGrowth 的 DWORD 值,並將其值設為 0 即可。
- 4月 19 週一 201022:07
SQL - 考題
在網路上看到這個問題,寫起來還挺有趣的,所以記錄一下,避免老了腦袋不靈光,有興趣的朋友不如也來考考自己。 問題如下: 有一個 Table 記載著每位學生每科得的等第,等第由0到5 CREATE TABLE #Test (
STID INT, Math INT, Social INT,
Nature INT, English INT, Chinese INT,
Music INT, Physic INT, Work INT,
)
go
INSERT INTO #Test
VALUES
(9001, 5, 3, 3, 1, 0, 4, 1, 2),
(9002, 0, 2, 3, 5, 1, 4, 5, 1),
(9003, 3, 3, 4, 4, 4, 4, 2, 4),
(9004, 2, 4, 4, 3, 5, 2, 5, 4),
(9005, 4, 3, 1, 2, 4, 2, 5, 1),
(9006, 4, 3, 5, 3, 5, 2, 3, 5),
(9007, 0, 4, 1, 5, 0, 2, 5, 2),
(9008, 3, 5, 3, 1, 5, 4, 3, 5),
(9009, 3, 5, 5, 4, 4, 1, 3, 4),
(9010, 3, 4, 3, 2, 4, 0, 3, 0),
(9011, 5, 1, 1, 4, 3, 0, 0, 3),
(9012, 2, 2, 1, 3, 1, 1, 5, 2),
(9013, 4, 1, 4, 4, 3, 0, 0, 4),
(9014, 3, 3, 5, 0, 5, 2, 1, 1),
(9015, 2, 4, 0, 5, 3, 1, 0, 1)
go
STID INT, Math INT, Social INT,
Nature INT, English INT, Chinese INT,
Music INT, Physic INT, Work INT,
)
go
INSERT INTO #Test
VALUES
(9001, 5, 3, 3, 1, 0, 4, 1, 2),
(9002, 0, 2, 3, 5, 1, 4, 5, 1),
(9003, 3, 3, 4, 4, 4, 4, 2, 4),
(9004, 2, 4, 4, 3, 5, 2, 5, 4),
(9005, 4, 3, 1, 2, 4, 2, 5, 1),
(9006, 4, 3, 5, 3, 5, 2, 3, 5),
(9007, 0, 4, 1, 5, 0, 2, 5, 2),
(9008, 3, 5, 3, 1, 5, 4, 3, 5),
(9009, 3, 5, 5, 4, 4, 1, 3, 4),
(9010, 3, 4, 3, 2, 4, 0, 3, 0),
(9011, 5, 1, 1, 4, 3, 0, 0, 3),
(9012, 2, 2, 1, 3, 1, 1, 5, 2),
(9013, 4, 1, 4, 4, 3, 0, 0, 4),
(9014, 3, 3, 5, 0, 5, 2, 1, 1),
(9015, 2, 4, 0, 5, 3, 1, 0, 1)
go
