2013年6月18日 星期二

WinForm 與 log4net

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年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

2012年8月8日 星期三

LINQ 動態組條件式


範例:如果a0,就不要作條件式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作的事”)
所以如果isAppendWheretrue,就作true(等於沒條件)
反之若如果isAppendWherefalse,就作sch.filed1 == b 條件式

2012年6月10日 星期日

WPF 設定Install project 的部屬專案屬性


WPF 設定Install project 的部屬專案屬性,指定專案的製造商名稱(Manufacturer Name)

小妹我實在找了很久,終於發現必須在方案總管的頁籤中點選install project ,再直接切換到屬性頁籤,就可以看到設定Manufacturer Name的地方囉!



2012年1月29日 星期日

透過程式動態產生WebUserControl物件

  1. 先建立自訂的WebUserControl -- SingleQues.ascx
  2. 建立:
    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」中,應用程式分頁中「資源」作設定。

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;
     }
}

2011年6月21日 星期二

文字與影音資料之個人觀感

今天上網查找資料時,突然對影音資料感到十分耗時,
文字資料可以隨個人的閱讀習慣,跳躍、掃讀,挺不錯的;
但我想是缺乏影音資料的具體。
相對影音資料,網路播放器都不支援快速播放,趕時間時挺耗時的!
但它還是具有影音豐富的多樣性!

只是個人偏好,我喜歡文字。可以帶動想像與省時,nice!

2011年6月8日 星期三

敲門的學問

今天無意間連到天下雜誌的連結,裡面教導著上班族的十大禮儀。

其中敲門禮儀是讓我印像最深刻的,

原來,毃一至二聲是敲廁所門,毃三至四聲則是辦公室門。

蠻有趣的,(原來我以前都在敲廁所門,真不好意思),下次會記得敲三聲的!!

2010年9月11日 星期六

Android - onTouchEvent 、 onClickEvent 、 onLongClickEvent 初步認識

昨天花了將近一天搞了touch event 和 Long touch event。
來做一下筆記吧。(內容有問題,歡迎指正哦^^)

官方文件提到與UI的事件通知,有以下二種方式:

1.定義event Listener並註冊Listener.(Define an event listener and register it with the View.)

Listener的名稱規則 - OnListener
註冊 - setOnClickListener().

2. 覆寫View原有的callback 方法 (Override an existing callback method for the View.)

例:onTouchEvent() 、onTrackballEvent() 、onKeyDown()

onTouchEvent()

大致上就是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

後面寫的有亂…有空再來修修…抱歉囉!

2010年8月10日 星期二

Eclipse作的事! tomcat 也要作!

從上班到現在,有好幾次遇到這個問題了…



當我用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模式營運。

2010年1月25日 星期一

Opera browser 內建發音功能

使用Opera的日子不多,就發現它有很多我喜歡的功能!!

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
8

TreeMap 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相容問題

  1. 不支援 ID.style.visibility 的用法。

    ID.style.visibility='visible';

    在IE可以正確運行,但是在Firefox卻是不認識的id名,
    因此必須寫成:

    document.getElementById('ID').style.visibility='visible';
  2. 不支援 innerText
    document.getElementById('ID').innerText = "";
    document.getElementById('ID').textContent = "";
  3. disabled屬性設置。
    document.getElementById('ID').disabled=true;
    document.getElementById('ID').disabled=false;
  4. 不支援onkeyup屬性,可以轉成onkeydown或onkeypress。
  5. 物件集合用法:
    原寫法(ie):ID[i].value
    修改成(firefox):document.getElementsByName(ID)[i]