1. 程式要呼叫 「log4net.Config.BasicConfigurator.Configure();」
如下:
static class Program
{
private static readonly log4net.ILog log =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
/// 應用程式的主要進入點。
/// </summary>
[STAThread]
static void Main()
{
//初始化log4net
log4net.Config.BasicConfigurator.Configure();
//
log.Debug("Test");
}
}
2. AssemblyInfo要加[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
如下:
// Log4Net Configuration.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
3.確認 log4net.config內容及檔案存。
2013年6月18日 星期二
2013年5月20日 星期一
網頁定時(排程)寄出郵件
面對某些需求,會需要寫出能「定時寄出信件」的功能,或定時作什麼。
網路上找到可行的作法,但嚴謹度可能不足,以下整理:
作法: 將功能寫於某頁面之下,再設定windows排程,定時執行指定之bat,bat檔中寫好開啟該網頁之指令。
重點:
1.為避免被任意執行,可以自訂密碼,透過網頁參數傳遞。如:SendMail.aspx?pwd=test123
2.bat檔內容如下:
cd C:\Program Files\Internet Explorer\
iexplore "http://www.google.com.tw/"
3.頁面需加上javascrip,執行完畢後自動關閉,否則頁面會一直一直開啟。
參考網站:http://bloginsect.blogspot.tw/2009/06/windows.html
網路上找到可行的作法,但嚴謹度可能不足,以下整理:
作法: 將功能寫於某頁面之下,再設定windows排程,定時執行指定之bat,bat檔中寫好開啟該網頁之指令。
重點:
1.為避免被任意執行,可以自訂密碼,透過網頁參數傳遞。如:SendMail.aspx?pwd=test123
2.bat檔內容如下:
cd C:\Program Files\Internet Explorer\
iexplore "http://www.google.com.tw/"
3.頁面需加上javascrip,執行完畢後自動關閉,否則頁面會一直一直開啟。
參考網站:http://bloginsect.blogspot.tw/2009/06/windows.html
2012年8月8日 星期三
LINQ 動態組條件式
範例:如果a為0,就不要作條件式sch.filed1
== b。
var systemA = from sch in db.dbname
let
isAppendWhere = (a == "0")
where sch.sys_lockmark.ToString().Trim() == "00"
&&
(isAppendWhere? true : sch.filed1 == b)
select sch;
l
let isAppendWhere= (a == "0")
說明:要給isSearchAll一個布林值
l
(isAppendWhere? true : sch.filed1 == b)
這是if的簡短式,(條件? “true作的事” : ”false作的事”)
所以如果isAppendWhere為true,就作true(等於沒條件)
反之若如果isAppendWhere為false,就作sch.filed1 == b 條件式
2012年6月10日 星期日
WPF 設定Install project 的部屬專案屬性
WPF 設定Install project 的部屬專案屬性,指定專案的製造商名稱(Manufacturer Name)
小妹我實在找了很久,終於發現必須在方案總管的頁籤中點選install project
,再直接切換到屬性頁籤,就可以看到設定Manufacturer Name的地方囉!
2012年1月29日 星期日
透過程式動態產生WebUserControl物件
- 先建立自訂的WebUserControl -- SingleQues.ascx
- 建立:
ASP.singleques sq = ( ASP.singleques )LoadControl("~/Controls/SingleQues.ascx");
需注意,SingleQues.ascx要先編譯成功無語法錯誤後,在要動態產生WebUserControl的aspx頁面中,需在前面加上<%@ Register TagName="
SingleQues " TagPrefix="MyWUC" Src="~/Controls/
SingleQues.ascx " %>。
2011年10月6日 星期四
WPF 設定應用程式icon
視窗的圖示:
<Window Icon="/PostManager;component/images/barcode.ico" />
安裝後,程式集上面的圖示:
至專案「properties」中,應用程式分頁中「資源」作設定。
<Window Icon="/PostManager;component/images/barcode.ico" />
安裝後,程式集上面的圖示:
至專案「properties」中,應用程式分頁中「資源」作設定。
2011年9月22日 星期四
如何讓expander展開後,Focus子項目
如何讓expander展開後,就Focus在子項目
說明:若將textbox1.Focus()直接寫在expander的expanded裡會回傳false,因為在展開時,該textbox1並未看的見,故無法focus();
作法:
1.建立一個boolean值,控制是否要focus。如beFocus = false;
2.於expander的Expanded事件中,將beFocus設為true;
3.於要被Focus的子項目之IsVisibleChanged事件中,撰寫若visible = true 則focus 自己,並將beFocus改回false。
Example
private bool beFocus = false;
private void expander1_Expanded(object sender, RoutedEventArgs e)
{
beFocus = true;
}
private void textbox1_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (((bool)e.NewValue == true) && beFocus) {
textbox1_.Focus();
beFocus = false;
}
}
說明:若將textbox1.Focus()直接寫在expander的expanded裡會回傳false,因為在展開時,該textbox1並未看的見,故無法focus();
作法:
1.建立一個boolean值,控制是否要focus。如beFocus = false;
2.於expander的Expanded事件中,將beFocus設為true;
3.於要被Focus的子項目之IsVisibleChanged事件中,撰寫若visible = true 則focus 自己,並將beFocus改回false。
Example
private bool beFocus = false;
private void expander1_Expanded(object sender, RoutedEventArgs e)
{
beFocus = true;
}
private void textbox1_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (((bool)e.NewValue == true) && beFocus) {
textbox1_.Focus();
beFocus = false;
}
}
2011年6月21日 星期二
文字與影音資料之個人觀感
今天上網查找資料時,突然對影音資料感到十分耗時,
文字資料可以隨個人的閱讀習慣,跳躍、掃讀,挺不錯的;
但我想是缺乏影音資料的具體。
相對影音資料,網路播放器都不支援快速播放,趕時間時挺耗時的!
但它還是具有影音豐富的多樣性!
只是個人偏好,我喜歡文字。可以帶動想像與省時,nice!
文字資料可以隨個人的閱讀習慣,跳躍、掃讀,挺不錯的;
但我想是缺乏影音資料的具體。
相對影音資料,網路播放器都不支援快速播放,趕時間時挺耗時的!
但它還是具有影音豐富的多樣性!
只是個人偏好,我喜歡文字。可以帶動想像與省時,nice!
2011年6月8日 星期三
敲門的學問
今天無意間連到天下雜誌的連結,裡面教導著上班族的十大禮儀。
其中敲門禮儀是讓我印像最深刻的,
原來,毃一至二聲是敲廁所門,毃三至四聲則是辦公室門。
蠻有趣的,(原來我以前都在敲廁所門,真不好意思),下次會記得敲三聲的!!
其中敲門禮儀是讓我印像最深刻的,
原來,毃一至二聲是敲廁所門,毃三至四聲則是辦公室門。
蠻有趣的,(原來我以前都在敲廁所門,真不好意思),下次會記得敲三聲的!!
2010年9月11日 星期六
Android - onTouchEvent 、 onClickEvent 、 onLongClickEvent 初步認識
昨天花了將近一天搞了touch event 和 Long touch event。
來做一下筆記吧。(內容有問題,歡迎指正哦^^)
1.定義event Listener並註冊Listener.(Define an event listener and register it with the View.)
Listener的名稱規則 - On Listener
註冊 - setOnClickListener().
2. 覆寫View原有的callback 方法 (Override an existing callback method for the View.)
例:onTouchEvent() 、onTrackballEvent() 、onKeyDown()
大致上就是View家族與 Activity家族,會擁有onTouchEvent。
而比較重要的是當我們所認知的「一次觸碰」,其實發生了ACTION_DOWN與ACTION_UP。
這麼多類別都有擁有onTouchEvent,會引起的議題即是優先順序。
我們先建立一個Activity 並放置一個LinearLayout。LinearLayout中放置一個TextView。並分別添加onTouchEvent,可參考下圖:
可能還是搞不懂我要做什麼,我們作一個測試,當觸碰TextView時TouchEvent的處理順序為何。
測試結果是TextView → LinearLayout→Activity 。
但實際上的Log是四筆:
TextView_onTouch
LinearLayout_onTouch
Activity_onTouch
Activity_onTouch
為什麼Activity_onTouch會被觸發二次?因為「ACTION_DOWN」一次,「ACTION_UP」再一次。
為什麼 ACTION_UP不會觸發TextView與LinearLayout的Touch event?因為在「ACTION_DOWN」時,TextView與LinearLayout都 return false ,故事件不會再傳入。
重要的來了!MotionEvent 一但回傳true後,同一個event都會交由該 function(指回傳true的function)處理,不會再向上呼叫。
同理,如果將TouchEvent稍作修改。TextView - onTouch() 回傳true,結果將會變更為:
TextView_onTouch_ACTION_DOWN
TextView_onTouch_ACTION_UP
後面寫的有亂…有空再來修修…抱歉囉!
來做一下筆記吧。(內容有問題,歡迎指正哦^^)
官方文件提到與UI的事件通知,有以下二種方式:
1.定義event Listener並註冊Listener.(Define an event listener and register it with the View.)
Listener的名稱規則 - On
註冊 - setOnClickListener().
2. 覆寫View原有的callback 方法 (Override an existing callback method for the View.)
例:onTouchEvent() 、onTrackballEvent() 、onKeyDown()
onTouchEvent()
而比較重要的是當我們所認知的「一次觸碰」,其實發生了ACTION_DOWN與ACTION_UP。
這麼多類別都有擁有onTouchEvent,會引起的議題即是優先順序。
我們先建立一個Activity 並放置一個LinearLayout。LinearLayout中放置一個TextView。並分別添加onTouchEvent,可參考下圖:
可能還是搞不懂我要做什麼,我們作一個測試,當觸碰TextView時TouchEvent的處理順序為何。
測試結果是TextView → LinearLayout→Activity 。
但實際上的Log是四筆:
TextView_onTouch
LinearLayout_onTouch
Activity_onTouch
Activity_onTouch
為什麼Activity_onTouch會被觸發二次?因為「ACTION_DOWN」一次,「ACTION_UP」再一次。
為什麼 ACTION_UP不會觸發TextView與LinearLayout的Touch event?因為在「ACTION_DOWN」時,TextView與LinearLayout都 return false ,故事件不會再傳入。
重要的來了!MotionEvent 一但回傳true後,同一個event都會交由該 function(指回傳true的function)處理,不會再向上呼叫。
同理,如果將TouchEvent稍作修改。TextView - onTouch() 回傳true,結果將會變更為:
TextView_onTouch_ACTION_DOWN
TextView_onTouch_ACTION_UP
後面寫的有亂…有空再來修修…抱歉囉!
2010年8月10日 星期二
Eclipse作的事! tomcat 也要作!
從上班到現在,有好幾次遇到這個問題了…
當我用Eclipse建立一個專案,用Eclipse裡的server startup,一切都正常佈屬與執行!
但一旦我將專案移到tomcat webapp資料夾下,用tomcat/bin/startup.bat
一切卻都不能用…一直都是404!!!
昨天請教了高手!
原來…我們用eclipse啟動的時候,IDE 幫我們作了很多事!
在tomcat/conf/server.xml裡補上:
原來…java在預設的classes要放在WEB-INF/classes
一切大災難才就此解決!!
當我用Eclipse建立一個專案,用Eclipse裡的server startup,一切都正常佈屬與執行!
但一旦我將專案移到tomcat webapp資料夾下,用tomcat/bin/startup.bat
一切卻都不能用…一直都是404!!!
昨天請教了高手!
原來…我們用eclipse啟動的時候,IDE 幫我們作了很多事!
在tomcat/conf/server.xml裡補上:
OK, 終於找的到網頁了!但我要運行servlet的時候…卻又出現404
原來…java在預設的classes要放在WEB-INF/classes
一切大災難才就此解決!!
2010年6月16日 星期三
2010年6月10日 星期四
2010年6月9日 星期三
認識Print-on-demand
從這篇文章首段最後一段話看到的!
Turn the Page: What's Next for Publishing?
Print On Demand (wiki)
中文有人翻意:按需印刷、隨選列印
相對的名詞有:BOD (Books on Demand)
我的心得,看看就好:
簡單說就是一種新的出版模式。讀者與廣告商因為科技的演變,習慣都變的不一樣,出版商也轉型為POD模式營運。
Turn the Page: What's Next for Publishing?
Print On Demand (wiki)
中文有人翻意:按需印刷、隨選列印
相對的名詞有:BOD (Books on Demand)
我的心得,看看就好:
簡單說就是一種新的出版模式。讀者與廣告商因為科技的演變,習慣都變的不一樣,出版商也轉型為POD模式營運。
2010年1月25日 星期一
Opera browser 內建發音功能
使用Opera的日子不多,就發現它有很多我喜歡的功能!!
1.內建發音 (對我這個英語音痴來說,很有用!)
使用方法:反白要發音的字,右鍵>發音。
註:首次使用,需下載一些檔案。別擔心!很簡單,Opera只要你點選確定就會自動完成!
設定男/女生發音:工具>功能設定>進階>聲控>詳細資料>…這裡有很多設定囉!
2.研發工具
開啟方式:工具>進階>研發工具
這對程式設計師跟網頁設計師應該都有幫助,詳細表示DOM、request紀錄。(我只列我知道的,應該還很多)
1.內建發音 (對我這個英語音痴來說,很有用!)
使用方法:反白要發音的字,右鍵>發音。
註:首次使用,需下載一些檔案。別擔心!很簡單,Opera只要你點選確定就會自動完成!
設定男/女生發音:工具>功能設定>進階>聲控>詳細資料>…這裡有很多設定囉!
2.研發工具
開啟方式:工具>進階>研發工具
這對程式設計師跟網頁設計師應該都有幫助,詳細表示DOM、request紀錄。(我只列我知道的,應該還很多)
2009年11月20日 星期五
[JSP]getParameter與getAttribute差異
◆ 功能說明:
-getAttribute("name") & setAttribute("name",value):◆ 範例
通常傳回值是一個object,用setAttribute將object放入。
-getParameter("name"):通常傳回值是String,可能來自網頁元素或網址後方參數。
Example
1
2
3
4
5
6
7
8TreeMap mytree= new TreeMap( );
request.setAttribute("Mytree",mytree); //將mytree 放入attribute.
TreeMap gettree=(TreeMap)request.getAttribute("Mytree");
//取出名稱為Mytree 的attribute
request.getParameter("myid");
//若網頁元素中有id為myid的物件,則會取得myid的內容值。
或網址中包含myid='123',亦會取出123。
[Java]字串轉數字
◆ 功能說明:將字串(String)轉換成數字(Int)型態
◆ 範例
Example
1
2
int i = Integer.valueOf(str).intValue();
int i = Integer.parseInt(str);
◆ 資料來源:http://fredwang.blogspot.com/2005/07/java.html
[Java]String ,StringBuffer, StringBuild(J2SE 5.0新類別)
以下內容是參考資料來源所整理,所以希望更深入瞭解的朋友們可以參考資料來源囉!
◆ 延續學習:String ,StringBuffer, StringBuild(J2SE 5.0新類別)三者的差別
◆ 功能說明:
-String:每次改變都會生成新的對象。需要多次修改時不建議使用,建議改用StringBuffer。
-StringBuffer:每次結果都會對 StringBuffer 對象本身進行操作,而不是生成新的對象,
在字串一直合併時,效能最佳。
-StringBuild:跟StringBuffer 類似,但有固定字串緩衝區,不支援同步。
◆ 資料來源:http://www.blogjava.net/chenpengyi/archive/2006/05/04/44492.html
2009年10月18日 星期日
[Java] JRE1.5版後enum為保留字
◆ 問題:原本在測試網路上的一個範例,卻在下方第一行程式就出現錯誤訊息。
Error
1
2
Enumeration enum = table.elements();
while(enum.hasMoreElements()) {...}
◆ Eclipse錯誤訊息:enumeration cannot be resolved.
◆ 解決方式:將第1行中的 enum 改成其他變數名稱就行囉!
Success
1
2
Enumeration enum1 = table.elements();
while(enum1.hasMoreElements()) {...}
◆ 原因:enum在JRE1.5版後為保留字。
2009年9月30日 星期三
[JavaScript]IE與Firefox相容問題
- 不支援 ID.style.visibility 的用法。
ID.style.visibility='visible';
在IE可以正確運行,但是在Firefox卻是不認識的id名,
因此必須寫成:
document.getElementById('ID').style.visibility='visible'; - 不支援 innerText
document.getElementById('ID').innerText = "";
document.getElementById('ID').textContent = ""; - disabled屬性設置。
document.getElementById('ID').disabled=true;
document.getElementById('ID').disabled=false; - 不支援onkeyup屬性,可以轉成onkeydown或onkeypress。
- 物件集合用法:
原寫法(ie):ID[i].value
修改成(firefox):document.getElementsByName(ID)[i]
訂閱:
文章 (Atom)


