2009/04/02
c# Replace字串
{
int pos = originalStr.IndexOf(repleasStr);
int len = repleasStr.Length;
if (pos != -1)
{
string strLeft = originalStr.Substring(0, pos);
string strRight = originalStr.Substring(pos + len);
return strLeft + newStr + strRight;
}
else
return originalStr;
}
c# 將string array轉成文字
{
string[] org = inString.Split('\n');
int count = org.Length - 1;
string[] outString = new string[count];
try
{
for (int i = 0; i < count; i++)
{
if (org[i].IndexOf('\r') == -1)
org[i] = org[i];
else
org[i] = org[i].Remove(org[i].IndexOf('\r'));
//int j = org[i].IndexOf('\r');
outString[i] = org[i];
}
}
catch
{
return null;
}
return outString;
}
c# 建立空的StreamReader
{
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
sw.Write("");
sw.Flush();
StreamReader sr = new StreamReader(ms);
return sr;
}
c# 取得檔案列表
public bool FileList(string folderName)
{
try
{
DirectoryInfo dirinfo = new DirectoryInfo(folderName);
FileInfo[] sortList = dirinfo.GetFiles();
string[] dirList = new string[sortList.Length];
string[] fileName = new string[sortList.Length];
for (int i = 0; i < sortList.Length; i++)
{
dirList[i] = sortList[i].Name.ToString();
fileName[i] = sortList[i].FullName.ToString();
}
FullFileName = fileName;
FileName = dirList;
return true;
}
catch (Exception ex)
{
_errorMessage = ex.ToString();
return false;
}
}
C# 取得文字檔中的內容
public string FileContent(string fileName)
{
StreamReader stmRdr = new StreamReader(fileName);
string line = stmRdr.ReadLine();
string sLine = null;
while (line != null)
{
if (line.Length != 0)
sLine = sLine + line + '\n';
line = stmRdr.ReadLine();
}
stmRdr.Close();
return sLine;
}
c# FTP的使用 -- 修改檔名(mv)
public bool FtpRename()
{
if (this.InputValidation())
{
try
{
Uri UriFtpMove = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + remotefile);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpMove);
request.Method = WebRequestMethods.Ftp.Rename;
request.RenameTo = renamefile;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
return true;
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
return false;
}
}
else
{
throw new ArgumentException(returnmsg);
}
}
c# FTP的使用 -- 取得FTP Server的檔案列表(ls)
public string[] FtpDir()
{
string Result = "";
if (this.InputValidation())
{
try
{
Uri UriFtpDir = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + filter);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpDir);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
StreamReader MyStreamReader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
Result = MyStreamReader.ReadToEnd();
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
throw new ArgumentException(returnmsg);
}
}
else
{
throw new ArgumentException(returnmsg);
}
return Strings.StringToLines(Result);
}
c# FTP的使用 -- 取得FTP Server的檔案(get)
//public StreamReader FtpGet()
public bool FtpGet()
{
FileStream fileStream = null;
Stream responseStream = null;
if (this.InputValidation())
{
try
{
Uri UriFtpGet = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + remotefile);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpGet);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
responseStream = response.GetResponseStream();
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
// Write into file
if (localfile == null)
localfile = Path.GetFileName(request.RequestUri.AbsolutePath);
fileStream = File.Create(localPath + @"\" + localfile);
byte[] buffer = new byte[1024];
int bytesRead;
while (true)
{
bytesRead = responseStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
}
responseStream.Close();
fileStream.Close();
return true;
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
return false;
}
}
else
{
throw new ArgumentException(returnmsg);
}
}
2009/03/31
ora-12154 tns could not resolve the connect identifier specified
接著我設定組態,也成功連結到資料庫
但在使用SQL/Plus以及 PL/SQL的時候出現:
ora-12154 tns could not resolve the connect identifier specified
上網搜尋後,也有很多人遇到相同的問題,我依方法進行確認
發現我環境變數path是:
d:\oracle11g\client_1\bin;d:\oracle11g\client_2\bin;...
修改成
d:\oracle11g\client_1;d:\oracle11g\client_1\bin;...
就可以使用SQL/Plus 和 PL/SQL 了
2009/02/23
省錢大作戰 - 第2週
- 2/23
統一快煮拉麵 NT$43
健康狀元蛋 NT$49 -- 應該是蛋蛋裡頭算比較貴的,下次考慮去咁仔店買
白吐司 NT$25
康寶濃湯香菇雞 NT$69 -- 應該可以吃 2 ~ 3餐
今天早上一樣是吐司 + 花生醬 + 魚鬆 (看我何時會吃到吐)
中午樓下餐廳 NT$55、晚餐則所肉燥麵 + 隨身杯 (肉燥麵實在不怎麼好吃)
本週的費用:食物花費 NT$241
- 2/24
小碗 NT$39
洗面乳 NT$117
大陸A菜 NT$ 13
湯勺 NT$39
午餐 NT$55
本週的費用:食物花費 NT$396、日常用品 NT$117
- 2/25
本週的費用:食物花費 NT$501、日常用品 NT$117
2009/02/18
省錢大作戰 - 第1週
- 餅乾一包:NT$68
- 五木蔬菜拉麵:NT$40
- 五木乾拌麵:NT$36
- 白吐司一條:NT$36
- 花生醬一罐:NT$63
- 小白菜一包:NT$6
給自己一個機會,看本月在吃的花費上需要花多少錢,有沒有可能在 NT$1,000 內搞定,還好之前已經買了奶妢,所以早上吐司配牛奶應該是沒有問題,中午吃公司的餐廳,一餐 NT$55 還可以接受,下午肚子餓可以吃買的餅乾,晚上可以利用加班的時間免費吃公司餐廳,或是自己煮麵,其實也可以買白飯再配調理包。以下就是我的流水帳:
- 2/18
晚餐:煮麵加小白菜,湯多喝一點,可以讓自己有飽足感。
- 2/19 預計菜單
早餐:花生吐司配牛奶 (烤了三片吐司,抹了花生還有之前買的魚鬆)
中餐:樓下餐廳 NT$55
晚餐:麵 + 蛋 + 小白菜 or 在公司加班^^ (沒有 + 蛋~~)
再去全聯買蛋 + 肉絲 + 調理包
------------------------------------------------------------------------------
本來是想買蛋回來的,但是想想,明天就要回家了,蛋放太久也不太新鮮,還是週日晚上再去全聯買好了,今天的早、晚餐是沒有花到錢啦,但還是去全聯買了一些東西回來吃,總不能每天晚上都一樣吧,然後也買了日常用品,總共花了我 NT$442,內容有…
- 康寶獨享杯 x 2 = NT$ 78 -->煮乾麵時或吃飯時可以喝
- 楓康PE保鮮袋 NT$67
- 白鴿洗衣精 NT$105
- 浴室清潔劑 NT$68
- 日式咖哩雞調理包 NT$26
- 菜瓜布 NT$38
- 關東麵條 nt$38 --> 可以配調理包
- 冰糖 NT$34
除了洗衣精跟吃的無關外,食物花費共 NT$337,日常用品 NT$105
到今天的小計:食物花費 NT$641,日常用品 NT$105
------------------------------------------------------------------------------
- 2/20
到今天的小計:食物花費 NT$641,日常用品 NT$105,交通費用 NT$40
- 2/21
到今天的小計:食物花費 NT$641,日常用品 NT$105,交通費用 NT$580
- 2/22
今天去了一趟台北,買了水果拜訪朋友家裡,花了 NT$590,從台北回來,花了 NT$40過路費,早餐花了 NT$35,晚上去聽了法藍瓷的音樂會,雖然不需要門票,但停車費花了 NT$120。
到今天的小計:食物花費 NT$676,日常用品 NT$105,交通費用 NT$740、人情事故費NT590
代名詞與先行詞的一致性
The number of... 與 a number of...
- The number of -- singlar
- A number of -- plural
Neither/Either of 指的也是單數,如: Neither of the children will do her work.
而連接詞 neither, either, or 則是要看靠近動詞的先行詞為複數或單數,來決定是否為複數或單數代名詞:
Captain Parker or his men were rescued on their fourth day at sea.
Neither the attendants nor pilot the gave his opinion about the mishap.
Every/Each 指的是單數,如:Every cat, dog, and rabbit had received its vaccine.
Some of... 並不一定指的就是複數,要依後面的名詞而定,若 of 後面接的是不可數名詞,則需用單數代名詞,如:Some of the sugar fell out of its bag. 不只是 some,還有 any, none, all, most 都適用此規則:Some indefinite pronouns that are modified by a prepositional phrase may be either singular or plural.
A few 的使用:Many people saw the show, but only a few reported their reactions to it.
2009/02/09
.Net 新手之global.asax - application 的用法 (2)
<script runat="server">
void Application_Start(Object sender, EventArgs e) {
Application.Set("Time", System.DateTime.Now);
}
// 1.
void Application_BeginRequest(Object sender, EventArgs e)
{
Response.Write("<b>Process</b>");
Response.Write("Request is starting...<br>");
}
// 2.
void Application_AuthorizeRequest(Object sender, EventArgs e)
{
Response.Write("Authorizing request...<br>");
}
// 3.
void Application_ResolveRequestCache(Object sender, EventArgs e)
{
Response.Write("Resolving request cache...<br>");
}
// 4.
void Session_Start(Object sender, EventArgs e)
{
Response.Write("Session is starting...<br>");
}
// 5.
void Application_AcquireRequestState(Object sender, EventArgs e)
{
Response.Write("Acquiring request session state" + "...<br>");
}
// 6.
void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
Response.Write("Pre Request handler executed...<br>");
}
// 7. 已處理完後的流程
void Application_PostRequestHandlerExecute(Object sender, EventArgs e)
{
Response.Write("Post Request handler executed...<br>");
}
// 8.
void Application_ReleaseRequestState(Object sender, EventArgs e)
{
Response.Write("Releasing request state...<br>");
}
// 9.
void Application_UpdateRequestCache(Object sender, EventArgs e)
{
Response.Write("Updating request cache...<br>");
}
void Application_AuthenticateRequest(Object sender, EventArgs e)
{
Application.Set("Time", System.DateTime.Now);
}
// 10.
void Application_EndRequest(Object sender, EventArgs e)
{
Response.Write("Request is ending...<br>");
}
// 11.
void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
Response.Write("Receiving request headers...<br>");
}
// 12.
void Application_PreSendRequestContent(Object sender, EventArgs e)
{
Response.Write("Receiving request content...<br>");
}
// Exception
void Application_Error(Object sender, EventArgs e)
{
Response.Write( " is authenticating request...<br>");
}
</script>
2009/02/08
實用英語句型
當我們到我們不熟悉的地方時,想請問別人有什麼地方好去或好吃時,我們可以用…
Would/Do you know of a place ...
- Would you know of a place we can get a lunch?
- Do you know of a place nearby to eat?
- Would you know of a place we can get
- Would you know of any airline ...
- Would you know of any decent deli ...
- Would you know of any website we can ...
In that case 的用法:In that case 中文翻譯是「那樣的話」,在書本上看到這一個 phrase 的時候,應該可以把這一個 phrase 用在很多地方,譬如說當對方在表達對方的想法或意見的時候我們可以回答:
- In that case, why don't we eat at night market.
- In that case, I'll book other meeting for topic.
I'm afraid (that) + 子句 ... 這一種句型我們常常見到,有表「恐怕」的意思,例如說:
- I'm afraid I am busy at the afternoon.
- I'm afraid their decision is final.
- I'm afraid of ghost.
- I'm afraid of my mother.
- I'm afraid not. 恐怕不行。
- I'm afraid so. 恐怕是這樣。
2009/02/06
.Net 新手之global.asax - application 的用法 (1)
- 每一個網頁的 header 都要出現 "歡迎光臨"
- 每一個網頁的 footer 都要看到網頁出現的時間
- 當有 Error 時,網頁上要出現 "資料庫忙錄中"
<script runat="server">
void Application_Start(Object sender, EventArgs e) {
}
void Application_OnBeginRequest(Object sender, EventArgs E)
{
Response.Write("歡迎光臨<br>");
}
protected void Application_OnEndRequest()
{
Response.Write("<hr>This page was served at " +DateTime.Now.ToString());
}
protected void Application_Error(Object sender, EventArgs e)
{
Response.Write("<span >");
Response.Write("資料庫忙碌中<hr></font>");
Response.Write("<font face=\"Arial\" size=\"2\">");
Server.ClearError();
}
</script>
在 Application_Error 裡頭,也可以將 Error message 寫入 log file 或是以 email 呈現在網頁上,以下是我在網路上所看到的範例:
{
string Message = "";
Exception ex = Server.GetLastError();
Message = "發生錯誤的網頁:{0}錯誤訊息:{1}堆疊內容:{2}";
Message = String.Format(Message, Request.Path + Environment.NewLine, ex.GetBaseException().Message + Environment.NewLine, Environment.NewLine + ex.StackTrace);
//寫入事件撿視器,方法一
System.Diagnostics.EventLog.WriteEntry("WebAppError", Message, System.Diagnostics.EventLogEntryType.Error);
//寫入文字檔,方法二
System.IO.File.AppendAllText(Server.MapPath(string.Format("Log\\{0}.txt", DateTime.Now.Ticks.ToString())), Message);
//寄出Email,方法三
//此方法請參考System.Net.Mail.MailMessage
//清除Error
Server.ClearError();
Response.Write("系統錯誤,請聯絡系統管理員!!");
}
而我們也可以利用 web.config file,依據錯誤的類型而導到不同的網頁,xml tag 是 <customErrors>,如下:
<error statuscode="404" redirect="FileNotFound.htm"/>
</customErrors>
可以利用Application_BeginRequest,在使用瀏灠網頁時,記錄user id, current time(System.DateTime.Now) 以及 Path(Request.AppRelativeCurrentExecutionFilePath) 等等資訊,可以做為使用者的喜好分析或是檔案下載分析……
2009/02/05
尋求建議與提供建議
- Have you got any ideas about ... 你對於…有什麼樣的想法嗎?
- I'm thinking of ... What do you think? 我考慮…你覺得如何?
- Can I ask your opinion about ... 關於…我可以問你的意見嗎?
- I need some advice ... 我需要一些關於…建議
- I suggest you ... 我建議你…
- Here's a good tip. 我有一個好辦法
- It seems to me ... 在我看來…
- What you need is ... 你所需要的是…
- Why don't you ... 你為什麼不…
- What I would do is ... 是我的話我就會…
- If I were you, ... 如果我是你…
- The best thing to do ... 最好的辦法是…
- You might want to think ... 你或許該考慮…
- That’s a good idea, but ... 這是一個好的建議,但是…
- Good suggestion, but I ... 這辦法,但是…
- I am not really sure about that. 我對這樣不是很確定耶
- Do you think so? 你真的是這樣想嗎?
2009/02/04
.Net 的第一堂課的筆記
一開始,老師先教我怎麼啟動Visual Studio以及如何開一個新的WebSite,並且做相關的喜好設定,不過這些設定依個人喜歡進行設定,沒有一定的規則。
- 「工具」-->「選項」:在左下方先勾選「顯示所有設定」:會發現上方的選項會增加許多。
- 點選上方選項「專案和方案」,在選邊勾選「永遠顯示方案」
- 從「檔案」-->「新增專案」,因為我們是要建的是網頁程式(web application)所以請選擇「Visual C#」-->「Web」,在右邊的選項請選擇「ASP .NET Web應用程式」。
- 在下方的「名稱」請填寫你專案的名稱,例如 "JulianWebApplication",並且填寫此專案的位置,例如 "d:\Visual Studio 2008\Projects"。
- 按下「確定」即可
寫了幾個簡單的元件操作:
- 在網頁上輸入姓名,然後顯示「xxx 歡迎您」。
- 創建一個下拉式選單,選擇 item 後,出現 「您最喜歡吃的是 xxx 嗎?」。
- 上傳檔案到 web server 上。
- 在網頁上輸入姓名,然後顯示「xxx 歡迎您」,如下圖。
- 在左邊的「工具箱」-->「標準」拖拉「Label」元件,並修改「屬性」-->「Text」為 "請輸入姓名"
- 在左邊的「工具箱」-->「標準」拖拉「TextBox」元件,置於Label右方,並修改「屬性」-->「(ID)」為 "TextName"
- 在左邊的「工具箱」-->「標準」拖拉「Button」元件,置於「請輸入姓名」的下方,並修改「屬性」-->「Text」為 "登入"
- 在左邊的「工具箱」-->「標準」拖拉「Label」元件,並修改「屬性」-->「Text」將其它容清除。
之後請雙擊「登入」,即可看到 Button1_Click 的Method,請在Button1_Click Method 中加入以下二行並存檔執行,即可以看到執行結果。
protected void Button1_Click(object sender, EventArgs e)
{
string strName = TextName.Text;
LabelOutput.Text = strName + "歡迎您";
}
在創建一個專案或是網站的之後,會在其相對應的目錄中產生 .sln 的檔案,欲開啟舊專案或網站時,請點選 .sln 的檔案即可。
一個 ASP.NET 的網頁,會產生二個檔案:
當我們創建一個 ASP.NET 的網頁,會產生二個檔案,副檔 .aspx 是網頁的 layout,而副檔 .aspx.cs 是網頁的程式碼,如Button Action。
若要將外部的 ASP.NET 網頁加入現在的網站或專案中,必須將檔案複製或是搬移到網站或專案的目錄中,加入之後,在方案總管的上方點選「重新整理」的按鈕即可。
上了三小時的課,回家做了一些功課,內容如下:
- 使用者進登入畫面,輸入帳密碼
- 驗證失敗則回到登入畫面,成功則進入主畫面 (帳號、密碼檔為XML File)
- 主畫面中有一個連結可以進個人資料畫面
- 個人資料畫面可以上傳圖檔
會議結束時的用法
事實上,要結束一個會議 biz 在 2/2 中的教材建議可以使用下面例句 (1 ~ 4):
- Why don't we call it a day. 今天就到此為止吧。
- If there are not other comments, we'll wrap this meeting up ( or wrap up this meeting). 如果沒有其它意見,我們就結束會議吧。
- Let's bring this to a close for today. 今天就到這兒吧。
- The meeting is finished; we'll meet again next Wednesday. 會議結束;下週三我們再開會
- I guess that will be all for today.
- Anybody got anything else that they desperately want to raise before we wrap up?
- It's time to wrap up. 該結束會議了
- If no one has anything else to add, then I think we'll wrap this up.
- It looks like we've run out of time, so I guess we'll finish here.
- Okay - any other business? 還有其它事情嗎?
- Right, I think that's probably about it. 好了,我想就大概是這些吧。
- I would like to say something...
- We'll meet again on the first of next month.
- Oh, before you leave, please make sure to sign the attendance sheet.
- Don't forget to put your ballot in the box on your way out.
- Before I let you go let's all give a big thank you (everyone claps) to Thomas for baking these delicious cookies.
- If you could all return your chair to Room 7 that would be appreciated.
- Please take all of your papers with you and throw out any garbage on your way out.
- Thank You's and Congratulations
- Again, I want to thank you all for taking time out of your busy schedules to be here today.
2009/02/03
PHP 課程 (2)
<?php
echo "以分行符號 <br> 做區隔 <br>";
echo "Hi, I am Julian! <br>";
echo "Who are you?";
?>
<br>
<?php
echo "以不分行符號<br>做區隔<br>";
echo "Hi, I am Julian!";
echo "Who are you?"
?>
而網頁呈現的結果是……
以分行符號 <br> 做區隔
Hi, I am Julian!
Who are you?
以不分行符號 <br> 做區隔
Hi, I am Julian!Who are you?
由上面可以看到其結果,沒有加上分行符合的,即使在程式中看起來是有分行,但實際上,最終的呈現仍未分行。
相關內容可參考此網站 Jollen's PHP 或是這裡
2009/02/02
我 PHP 的第一堂課
因為擔心在這一波經濟衰退的風暴下成為無業遊民的一員,於是乎我決定要培養我的第二專長,就是學習PHP,以免失業後,找不到工作,所以決定啦,要以 PHP + Apache + MySQL 做為以後混飯吃的工具之一,不過在一開始我就遇到了一個問題,在依前輩們的指示,安裝了Apach、MySQL、PHP 之後
第一sample就是創建一個 index.php 的網頁於 htdocs 目錄中,呼叫 phpinfo() function (如下)
<?
phpinfo()
?>
但是卻未如預其出現相關資訊,頁面呈現為空白
經過爬文後,原本以為是 php.ini (於PHP安裝目錄) 中 disable_functions 參數設定的問題,但我將其參數 mark (;disable_functions) 之後並沒有改差,頁面仍然空白,經由不斷的 search 之後,原來要修改的是要將short_open_tag 設定成 On 之後就可以顯示頁面了,修改 php.ini 之後,需要重新啟動 Apach 。
看樣子這是 PHP5 的限制,若沒有將 short_open_tag 設定打開,則需要加上 php ,如下所示:
<?php
phpinfo()
?>
當然在此之前需要修改 Apache 安裝目錄下的 conf\httppd.conf ,中的 ServerName 在這裡我是設定 localhost ,在網址列輸入 http://localhost/index.php
以下是我安裝順序以及安裝的版本:
- Apache 2.2 (apache_2.2.11-win32-x86-openssl-0.9.8i.msi)
- MySQL 5.1 (mysql-5.1.30-win32.zip)
- PHP 5 (php-5.2.8-win32-installer.msi)
如何將Blogger 的文章加以分類並隱藏 navbar
Blogger 沒有提供分類功能,一直是讓人覺得頭大的事情,我在想是否真的需要以暴力來編輯範本,才能對文章做分類,因為懶~~~~所以我放棄用 Blogger 撰寫 blog 的念頭已經很久了,但上網 search 之後,發現有許多的有心人提供 Blogger 分類的好方法,就是結合 Furl ,經由頁面 Step by Step 的方式,也可以將 Blogger 文章快速的分類哦!
雖然需要花點時加創建頁面以及將文章分類,還好我的文章量很少,所以快快的分類完畢!
還有我一直覺得Blogger navbar 實在不怎麼好看,於是乎又上google search 了一下,發現有很多種隱藏 blogger navbar 的方法,我選擇其中一種方式來隱藏,只要在 header 前面加上下面這二行即可,其它的方式可以看這裡。
#navbar-iframe{opacity:0.0;filter:alpha(Opacity=0)}
#navbar-iframe:hover{opacity:1.0;filter:alpha(Opacity=100, FinishedOpacity=100)}