|
http://blog.163.com/wb_zhaoyuwei/blog/static/183075439201301535012961/ 首先需要知道一點, svn co 只能check 目錄, 不能co文件; 如果需要co文件, 需要用 svn export; svn co 的用法經常有兩種: 第一種: 直接 svn co http://svnserver/mypro/trunk 此時, 會在你的當前目錄下, 增加一個 trunk文件夾; svn的trunk文件的內容, 在trunk文件夾中。 第二種: svn co http://svnserver/mypro/trunk code 此時, 會在你的當前目錄下, 增加一個 code的文件夾, svn的trunk的文件的內容, 在code中。
From: http://www.cnblogs.com/137913828S2/archive/2012/07/11/2585905.html ----start 有點SQL基礎的人都會寫INSERT語句,可是有很大一部分人不知道DB2的INSERT語句有三種格式,即:一次插入一行,一次插入多行和從SELECT語句中插入。考慮下面的情況: - CREATE TABLE USER
- (
- NAME VARCHAR(20) NOT NULL,---姓名
- BIRTHDAY DATE---生日
- );
現在要求你插入一行數據,我們這么寫: - INSERT INTO USER (NAME,BIRTHDAY) VALUES ('張三','2000-1-1');
現在要求你插入三行數據,我們這么寫: - INSERT INTO USER (NAME,BIRTHDAY) VALUES ('張三','2000-1-1');
- INSERT INTO USER (NAME,BIRTHDAY) VALUES ('李四','2000-1-1');
- INSERT INTO USER (NAME,BIRTHDAY) VALUES ('王五','2000-1-1');
除此之外,我們還可以這么寫: - INSERT INTO USER (NAME,BIRTHDAY) VALUES
- ('張三','2000-1-1'),
- ('李四','2000-1-1'),
- ('王五','2000-1-1');
那么后一種寫法有什么好處呢?有兩點好處: 1、性能更好。 2、由于一條語句,所以它們是一個處理單元,要么都插入,要么都不插入。 除此之外,我們還可以從SELECT中插入,格式如下: - INSERT INTO USER (NAME,BIRTHDAY)
- SELECT <COLUMN1>,<COLUMN2> FROM <TABLE_NAME> WHERE ...
以上比較簡單,我就不舉例子了。 ---更多參見:DB2 SQL 精萃 ----聲明:轉載請注明出處。 ----last updated on 2009.11.5 ----written by ShangBo on 2009.9.24 ----end
jQuery獲取Select選擇的Text和Value: 語法解釋: 1. $("#select_id").change(function(){//code...}); //為Select添加事件,當選擇其中一項時觸發(fā) 2. var checkText=$("#select_id").find("option:selected").text(); //獲取Select選擇的Text 3. var checkValue=$("#select_id").val(); //獲取Select選擇的Value 4. var checkIndex=$("#select_id ").get(0).selectedIndex; //獲取Select選擇的索引值 5. var maxIndex=$("#select_id option:last").attr("index"); //獲取Select最大的索引值 jQuery設置Select選擇的 Text和Value: 語法解釋: 1. $("#select_id ").get(0).selectedIndex=1; //設置Select索引值為1的項選中 2. $("#select_id ").val(4); // 設置Select的Value值為4的項選中 3. $("#select_id option[text='jQuery']").attr("selected", true); //設置Select的Text值為jQuery的項選中 jQuery添加/刪除Select的Option項: 語法解釋: 1. $("#select_id").append("<option value='Value'>Text</option>"); //為Select追加一個Option(下拉項) 2. $("#select_id").prepend("<option value='0'>請選擇</option>"); //為Select插入一個Option(第一個位置) 3. $("#select_id option:last").remove(); //刪除Select中索引值最大Option(最后一個) 4. $("#select_id option[index='0']").remove(); //刪除Select中索引值為0的Option(第一個) 5. $("#select_id option[value='3']").remove(); //刪除Select中Value='3'的Option 5. $("#select_id option[text='4']").remove(); //刪除Select中Text='4'的Option http://www.cnblogs.com/SAL2928/archive/2008/10/28/1321285.html jquery radio取值,checkbox取值,select取值,radio選中,checkbox選中,select選中,及其相關 獲 取一組radio被選中項的值 var item = $('input[name=items][checked]').val(); 獲 取select被選中項的文本 var item = $("select[name=items] option[selected]").text(); select下拉框的第二個元素為當前選中值 $('#select_id')[0].selectedIndex = 1; radio單選組的第二個元素為當前選中值 $('input[name=items]').get(1).checked = true; 獲取值: 文本框,文本區(qū)域:$("#txt").attr("value"); 多選框 checkbox:$("#checkbox_id").attr("value"); 單選組radio: $("input[type=radio][checked]").val(); 下拉框select: $('#sel').val(); 控制表單元素: 文本框,文本區(qū)域:$("#txt").attr("value",'');//清空內容 $("#txt").attr("value",'11');//填充內容 多選框checkbox: $("#chk1").attr("checked",'');//不打勾 $("#chk2").attr("checked",true);//打勾 if($("#chk1").attr('checked')==undefined) //判斷是否已經打勾 單選組 radio: $("input[type=radio]").attr("checked",'2');//設置value=2的項目為當前選中項 下拉框 select: $("#sel").attr("value",'-sel3');//設置value=-sel3的項目為當前選中項 $("<option value='1'>1111</option><option value='2'>2222</option>").appendTo("#sel")//添加下拉框的option $("#sel").empty();//清空下拉框 ---------------------------------------------------------------------------------------------------- //遍歷option和添加、移除option function changeShipMethod(shipping){ var len = $("select[name=ISHIPTYPE] option").length if(shipping.value != "CA"){ $("select[name=ISHIPTYPE] option").each(function(){ if($(this).val() == 111){ $(this).remove(); } }); }else{ $("<option value='111'>UPS Ground</option>").appendTo($("select[name=ISHIPTYPE]")); } } //取得下拉選單的選取值 $(#testSelect option:selected').text(); 或$("#testSelect").find('option:selected').text(); 或$("#testSelect").val(); ////////////////////////////////////////////////////////////////// 記 性不好的可以收藏下: 1,下拉框: var cc1 = $(".formc select[name='country'] option[selected]").text(); //得到下拉菜單的選中項的文本(注意中間有空格) var cc2 = $('.formc select[name="country"]').val(); //得到下拉菜單的選中項的值 var cc3 = $('.formc select[name="country"]').attr("id"); //得到下拉菜單的選中項的ID屬性值 $("#select").empty();//清空下拉框 //$("#select").html(''); $("<option value='1'>1111</option>").appendTo("#select")//添加下拉框的option 稍微解釋一下: 1.select[name='country'] option[selected] 表示具有name 屬性, 并 且該屬性值為'country' 的select元素 里面的具有selected 屬性的option 元素; 2,單選框: $("input[@type=radio][@checked]").val(); //得到單選框的 選中項的值(注意中間沒有空格) $("input[@type=radio][@value=2]").attr("checked",'checked'); //設置單選框value=2的為選中狀態(tài).(注意中間沒有空格) 3,復選框: $("input[@type=checkbox][@checked]").val(); //得到復選框的選中的第一項的值 $("input[@type=checkbox][@checked]").each(function() { //由于復選框一般選中的是多個,所以可以循環(huán)輸出 alert($(this).val()); }); $("#chk1").attr("checked",'');//不打勾 $("#chk2").attr("checked",true);// 打勾 if($("#chk1").attr('checked')==undefined){} //判斷是否已經打勾 當然jquery的選擇器是強大的. 還有很多方法. <script src="jquery-1.2.1.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"> $(document).ready(function(){ $("#selectTest").change(function() { //alert("Hello"); //alert($("#selectTest").attr("name")); //$("a").attr("href","xx.html"); //window.location.href="xx.html"; //alert($("#selectTest").val()); alert($("#selectTest option[@selected]").text()); $("#selectTest").attr("value", "2"); }); }); </script> <a href="#">aaass</a> <!--下拉框--> <select id="selectTest" name="selectTest"> <option value="1">11</option> <option value="2">22</option> <option value="3">33</option> <option value="4">44</option> <option value="5">55</option> <option value="6">66</option> </select> jquery radio取值,checkbox取值,select取值,radio選中,checkbox選中,select選中,及其相關獲取一組radio被選中 項的值 var item = $('input[@name=items][@checked]').val(); 獲取select被選 中項的文本 var item = $("select[@name=items] option[@selected]").text(); select 下拉框的第二個元素為當前選中值 $('#select_id')[0].selectedIndex = 1; radio單選組的第二個 元素為當前選中值 $('input[@name=items]').get(1).checked = true; 獲取值: 文本 框,文本區(qū)域:$("#txt").attr("value"); 多選框 checkbox:$("#checkbox_id").attr("value"); 單選組radio: $("input[@type=radio][@checked]").val(); 下拉框select: $('#sel').val(); 控 制表單元素: 文本框,文本區(qū)域:$("#txt").attr("value",'');//清空內容 $("#txt").attr("value",'11');// 填充內容 多選框checkbox: $("#chk1").attr("checked",'');//不打勾 $("#chk2").attr("checked",true);// 打勾 if($("#chk1").attr('checked')==undefined) //判斷是否已經打勾 單選組radio: $("input[@type=radio]").attr("checked",'2');//設置value=2的項目為當前選中項 下拉框 select: $("#sel").attr("value",'-sel3');//設置value=-sel3的項目為當前選中項 $("<optionvalue='1'& gt;1111</option><optionvalue='2'>2222</option& gt;").appendTo("#sel")//添加下拉框的option $("#sel").empty();// 清空下拉框 獲取一組radio被選中項的值 var item = $('input[@name=items][@checked]').val(); 獲取select被選中項的文本 var item = $("select[@name=items] option[@selected]").text(); select下拉框的第二個元素為當 前選中值 $('#select_id')[0].selectedIndex = 1; radio單選組的第二個元素為當前選中值 $('input[@name=items]').get(1).checked = true; 獲取值: 文本框,文本區(qū)域:$("#txt").attr("value"); 多選框 checkbox:$("#checkbox_id").attr("value"); 單選組radio: $("input[@type=radio][@checked]").val(); 下拉框select: $('#sel').val(); 控 制表單元素: 文本框,文本區(qū)域:$("#txt").attr("value",'');//清空內容 $("#txt").attr("value",'11');// 填充內容 多選框checkbox: $("#chk1").attr("checked",'');//不打勾 $("#chk2").attr("checked",true);// 打勾 if($("#chk1").attr('checked')==undefined) //判斷是否已經打勾 單選組radio: $("input[@type=radio]").attr("checked",'2');//設置value=2的項目為當前選中項 下拉框 select: $("#sel").attr("value",'-sel3');//設置value=-sel3的項目為當前選中項 $("<option value='1'>1111</option><option value='2'>2222</option>").appendTo("#sel")//添加下拉框的option $("#sel").empty();// 清空下拉框
英文原文:The 10 commandments for happiness and success 生命短暫,無可浪費,這我們都知道。然而,大多數人都處中一種缺省狀態(tài)的生活中,逼迫自己去認為很幸福——雖然事實上不是。為什么?因為我們讓社會來指定該如何的去生活、什么才是成功和什么才是幸福。像金錢和名譽這樣的東西被賦予太大的分量,成為禍根,阻礙了我們尋求生活的真正本質:活出自我,做有價值的事情。 如果讓我給一個新生命(比如我未來的孩子)一點建議,我將衷心建議他遵循下面這 10 條誡律: 1/ 不要跟別人比。 自從上小學起,我們就被人們用分數來激勵去競爭,忘記了教育的本質是學習。父母希望他們的孩子成為第一,或者要比 xx 更強,這樣當在學校門口遇到 xx 的父母時,他們能顯得很驕傲。于是,我們的成長過程一直受這種要比他人更強的思想熏染,卻很少能想到真正應該的是超越自己,而不是別人。 2/ 只跟優(yōu)秀的人、積極向上的人在一起。 消極、平庸的人到處都是,他們對你的影響將是毀滅性的。你也許是個很積極向上的人,但如果整天聽到的都是悲觀絕望的話,你最終也將變成這樣的 人。因此,避免他們給你帶來負面影響的最佳辦法就是將這些沒希望的人從你的身邊剔除。當然,如果你在意他們,你有責任將你的積極心態(tài)傳染給他們。 3/ 不要害怕失敗,失敗是你能遇到的最好的事情。 在我們這個社會眼里,失敗是一個人遇到的最糟糕的事情。我個人的經歷:我失敗過,而且很慘。它本應該會對我?guī)頌碾y性的影響,但相反,它使我變 得更強壯,雖然不能用強壯好幾倍來形容,但你真的無法想像我的變化。事實上,失敗鍛煉一個人的性格,它讓你知道錯在哪里,讓你知道如何調整你的生活來防止 這種事情再次發(fā)生。人很容易滿足現狀,特別當事情看起來很順利的時候。失敗是對你的挑戰(zhàn)。如今的飛機之所以這么安全,是因為過去摔過無數。相似的,如果看 看歷史上所有偉大的人,不論男女,你會發(fā)現他們所有人都在生命的某個階段上遇到過嚴重的挫折。所以,不要害怕嘗試,不要擔心失敗。 4/ 找到你的志向,愉快的工作。 每天我都聽到的有人說他們的研究和工作根本不是他們感興趣的。大多時候,這都是由于父母的壓力,讓他們的孩子選擇一條他們看來在社會上能獲得名望的道路。他們很希望能說:我女兒是醫(yī)生或我兒子是律師。用 更通俗的說法,我們生活中這個“面子”很重要的社會里,我們不停的做著我們不喜歡的事,來讓我們在親戚朋友眼里顯的很成功。這能讓我們快樂嗎?我很懷疑。 當有人問你的職業(yè)時,他們的意圖總是含蓄的,甚至直白的表明他們在看你是否在做很體面的事情。為什么不問問自己一個簡單的問題:“你喜歡你的工作嗎?”這是唯一重要的事情,因為唯一能讓我們實現生命價值的東西是我們的熱情。 5/ 對別人說的話保持警惕。 跟上面一點很相似。人們喜歡基于自己的經驗給人建議,但他們的經驗往往不適用于你。所以,不要總是聽取被人的意見,也要相信自己的直覺。 6/ 要慷慨,盡己所能。 很多研究都有力的顯示出“給予”和“幸福”之間有著直接的聯系。基本的解釋是,通過幫助他人,看到自己的行動對他人帶來的積極影響,讓我們將目光從自身轉移出去,使得我們對自己內心自我批判不那么敏感。對這一主題,這有一篇好文章。 7/ 保持健康,健康飲食,鍛煉身體,平衡生活。 這是明擺的事。健康是你的本錢,是讓你完成更多目標的前提條件。雖然生命中有些事情是我們無法掌控的,但有些事情很明顯,我們可以通過保持健康飲食和鍛煉身體來避免很多重大的疾病。 8/ 不要擔心會讓別人失望。 如果他們愛你,他們不會失望。有些人很脆弱,面對不幸和壓力時很容易心理崩潰。有時候這是因為害怕讓他們在意的人失望。前面已經說了,失敗不是壞事,如果他們關系你,他們絕不會指責你勇敢的嘗試。還有,不要擔心因為自己選擇的道路會讓父母失望。 9/ 別看電視,不要過度關注媒體。 它們的任務是來恐嚇你,這是它們掙錢的手段。除此之外,他們的第二個任務是操控你,讓你從真正的問題上分心。如果你還不知道這些, Noam Chomsky 寫的10 media manipulation 策略是你應該去讀的好文章。 10/ 樹立明確的價值觀,堅守它們,矢志不移 有很多很好的價值觀能讓你終身快樂并走向成功。目前這個社會崇尚金錢和地位,讓我們改變它,教育我們的孩子養(yǎng)成以幸福快樂為目標的新價值觀。 如果你贊同,請分享給你的朋友。如果不同意,請留言。 找優(yōu)秀程
From: http://www.cnitblog.com/201/archive/2011/05/25/74069.html 在Bugzilla中通過SMTP發(fā)通知郵件 Posted on 2011/04/05 by admin
Bugzilla 4.0注冊驗證通知等郵件可以通過SendMail之類的來發(fā)送,配置也很簡單,但是它發(fā)出去的郵件后綴地址是localhost.localdomain之類的地址,會被一些郵箱攔截,從而收不到郵件。所以通過SMTP來發(fā)郵件還是很必要的。 文檔上說的配置SMTP也很簡單,但是我在配置的時候遇到幾個問題,在此記錄下來 1、The new value for smtp_username is invalid: SMTP Authentication is not available. Run checksetup.pl for more details. 這是我在Bugzilla中Create New Account的時候發(fā)驗證郵件時產生的,這個的原因是Perl有個模塊沒有安裝,安裝下就可以了 sudo perl install-module.pl Authen::SASL 自己先可以通過$ ./checksetup.pl –check-modules查看下已經安裝了哪些模塊 只要安裝好,上述的這個問題就解決了
所以再次試著注冊一個用戶,提示郵件發(fā)送成功了,于是下面的問題產生了
2、提示郵件成功發(fā)送,但是實際郵件沒有發(fā)送出去,因為我填的郵箱沒有收到郵件 在這里我原先是開啟了use_mailer_queue這個功能 于是我選擇使用Test模式(Parameters -> Email -> mail_delivery_method -> SMTP)再發(fā)了一次,mailer.testfile木有郵件
網 絡上有人和我是一樣的問題,發(fā)不出去郵件,我參看這里http://hi.baidu.com/ever__love/blog/item /62473a9772800846d0135e2c.html的方法,把use_mailer_queue關閉(Parameters -> Email -> use_mailer_queue -> Off),再試著發(fā)送一次,果真mailer.testfile當中有郵件了
這樣就基本定位到問題use_mailer_queue沒有正常工作
于是又把use_mailer_queue開啟 執(zhí)行下面的命令 $ $BUGZILLA_HOME/jobqueue.pl check Configuration looks okay jobqueue.pl running – pid 5317 9 jobs in the queue.
看起來似乎正常,但是提示9 jobs in the queue,并且這個數目一直沒有減少,這說明郵件幾乎都被堵塞在這里了,而并沒有發(fā)出去
于是又Debug發(fā)現 $ $BUGZILLA_HOME/jobqueue.pl -f -d restart Killing 9657 Starting up… TheSchwartz::work_once found no jobs TheSchwartz::work_once found no jobs
幾乎神了,這里又說沒有錯誤,那到底是哪里出問題了呢? 目前無解,求解ING。。。
UPDATE 后來經過分析解決了此問題 雖然debug jobqueue出來的信息開頭幾個沒有發(fā)現什么異常,但是經過很多個“TheSchwartz::work_once found no jobs”之后出來一些錯誤信息,如下: …… TheSchwartz::work_once found no jobs TheSchwartz::work_once found no jobs TheSchwartz::work_once found no jobs ……. TheSchwartz::work_once found no jobs TheSchwartz::work_once found no jobs TheSchwartz::work_once found no jobs TheSchwartz::work_once got job of class ‘Bugzilla::Job::Mailer’ Working on Bugzilla::Job::Mailer … Use of uninitialized value $hostname in concatenation (.) or string at Bugzilla/Mailer.pm line 153. job failed. considering retry. is max_retries of 725 >= failures of 5? job failed: There was an error sending mail from ‘bugzilla_admin@’ to ‘xxxxx@aol.com’:Can’t call method “address” on an undefined value at lib/Email/Send/SMTP.pm line 25. TheSchwartz::work_once found no jobs …… TheSchwartz::work_once found no jobs TheSchwartz::work_once got job of class ‘Bugzilla::Job::Mailer’ Working on Bugzilla::Job::Mailer … Use of uninitialized value $hostname in concatenation (.) or string at Bugzilla/Mailer.pm line 153. job failed. considering retry. is max_retries of 725 >= failures of 5? job failed: There was an error sending mail from ‘bugzilla_admin@’ to ‘xxxxxx@gmail.com’:Can’t call method “address” on an undefined value at lib/Email/Send/SMTP.pm line 25. TheSchwartz::work_once found no jobs …… TheSchwartz::work_once found no jobs
……是我省略掉了很多這樣相同的狀態(tài)
看起來這個jobqueue當中的任務不是立即就執(zhí)行了的,它可能是經過某種算法才執(zhí)行的 否則不應該出現第一個就是“TheSchwartz::work_once found no jobs”,到后面才有任務執(zhí)行的
并且進一步發(fā)現這些任務隊列都是放在數據庫當中的一張表(ts_job)中的,任務成功一個就把它從這張表中刪除
不過此時問題還沒有解決,認真看下錯誤,并且看了指出的錯誤地方的源代碼,覺得應該是mailfrom填錯了,可能我這里填的不完整
又打開SMTP的調試開關(Parameters -> Email -> smtp_debug -> On),這樣能看到更多的詳細信息,基本覺得問題就在這了
于是我填寫了標準的郵件格式“username@example.com”之后再試,郵件還不沒有發(fā)出去,jobqueue的的數量又增加了一個, 看來可能前面的這些包含錯誤信息的隊列已經將后面的阻塞了,于是我試著將ts_job表當中的數據刪除 truncate table ts_job; // 反正我這里是直接truncate掉了的,我不知道這里delete和truncate有沒有區(qū)別
再次注冊了一遍,看到后臺輸出通知郵件發(fā)送成功的信息,如下: TheSchwartz::work_once found no jobs TheSchwartz::work_once got job of class ‘Bugzilla::Job::Mailer’ Working on Bugzilla::Job::Mailer … Net::SMTP>>> Net::SMTP(2.31) Net::SMTP>>> Net::Cmd(2.29) Net::SMTP>>> Exporter(5.63) Net::SMTP>>> IO::Socket::INET(1.31) Net::SMTP>>> IO::Socket(1.31) Net::SMTP>>> IO::Handle(1.28) Net::SMTP=GLOB(0xb79ce68)<<< 220 esmtp4.qq.com Esmtp QQ Mail Server Net::SMTP=GLOB(0xb79ce68)>>> EHLO localhost.localdomain Net::SMTP=GLOB(0xb79ce68)<<< 250-esmtp4.qq.com Net::SMTP=GLOB(0xb79ce68)<<< 250-PIPELINING Net::SMTP=GLOB(0xb79ce68)<<< 250-SIZE 52428800 Net::SMTP=GLOB(0xb79ce68)<<< 250-AUTH LOGIN PLAIN Net::SMTP=GLOB(0xb79ce68)<<< 250-AUTH=LOGIN Net::SMTP=GLOB(0xb79ce68)<<< 250 8BITMIME Net::SMTP=GLOB(0xb79ce68)>>> AUTH LOGIN …… Net::SMTP=GLOB(0xb79ce68)<<< 235 Authentication successful Net::SMTP=GLOB(0xb79ce68)>>> MAIL FROM: Net::SMTP=GLOB(0xb79ce68)<<< 250 Ok Net::SMTP=GLOB(0xb79ce68)>>> RCPT TO: Net::SMTP=GLOB(0xb79ce68)<<< 250 Ok Net::SMTP=GLOB(0xb79ce68)>>> DATA Net::SMTP=GLOB(0xb79ce68)<<< 354 End data with . Net::SMTP=GLOB(0xb79ce68)>>> From: xxxxxx@qq.com Net::SMTP=GLOB(0xb79ce68)>>> To: xxxxxx@gmail.com Net::SMTP=GLOB(0xb79ce68)>>> Subject: Bugzilla: confirm account creation Net::SMTP=GLOB(0xb79ce68)>>> X-Bugzilla-Type: admin Net::SMTP=GLOB(0xb79ce68)>>> X-Bugzilla-URL: Net::SMTP=GLOB(0xb79ce68)>>> Auto-Submitted: auto-generated Net::SMTP=GLOB(0xb79ce68)>>> Content-Type: text/plain; charset=”UTF-8″ Net::SMTP=GLOB(0xb79ce68)>>> MIME-Version: 1.0 Net::SMTP=GLOB(0xb79ce68)>>> Date: Tue, 05 Apr 2011 16:05:23 +0800 Net::SMTP=GLOB(0xb79ce68)>>> Net::SMTP=GLOB(0xb79ce68)>>> Bugzilla has received a request to create a user account Net::SMTP=GLOB(0xb79ce68)>>> using your email address (xxxxxx@gmail.com). Net::SMTP=GLOB(0xb79ce68)>>> Net::SMTP=GLOB(0xb79ce68)>>> To continue creating an account using this email address, visit the Net::SMTP=GLOB(0xb79ce68)>>> following link by April 8, 2011 at 16:05 CST: Net::SMTP=GLOB(0xb79ce68)>>> Net::SMTP=GLOB(0xb79ce68)>>> token.cgi?t=FegLL6OpYM&a=request_new_account Net::SMTP=GLOB(0xb79ce68)>>> PRIVACY NOTICE: Bugzilla is an open bug tracking system. Activity on most Net::SMTP=GLOB(0xb79ce68)>>> bugs, including email addresses, will be visible to the public. We recommend …… Net::SMTP=GLOB(0xb79ce68)>>> . Net::SMTP=GLOB(0xb79ce68)<<< 250 Ok: queued as Net::SMTP=GLOB(0xb79ce68)>>> QUIT Net::SMTP=GLOB(0xb79ce68)<<< 221 Bye job completed TheSchwartz::work_once found no jobs
到QQ Mail也看到發(fā)送成功的郵件,在Gmail也收到了郵件,到此才算基本成功。
Parameters -> Email里面我的基本幾項數據如下 mailfrom : xxxxxx@qq.com // 出現問題就是這里填的不標準 use_mailer_queue : on smtpserver : smtp.qq.com smtp_username : xxxxxx@qq.com smtp_password : ******
如果mail_delivery_method你選擇SendMail或者Test,那么SMTP相關的參數就可以不用填了,如果你是通過SSL加密的SMTP鏈接,應該是要新裝插件了
P.S. 關于use_mailer_queue的信息請挪步http://www.bugzilla.org/releases/4.0/release-notes.html#v34_feat_async
From http://blog.chinaunix.net/uid-209416-id-2410724.html 本文源于http://cranesss.gjjblog.com/archives/884277/ 但原文有錯誤,并且密碼為明文不安全,對其做了修改,適用版本:2.25,主要方法是修改BugMail.pm并做SMTP的測試,請確保你的server能夠連通smtp郵件服務器 具體做法: 一、安裝好bugzilla(具體如何安裝,見其他相關文檔) 二,測試第三方郵件服務器SMTP發(fā)送郵件: 具體方法是,使用telnet,以smtp.163.com為例,其他請參考以下鏈接: http://search.csdn.net/c/blog.csdn.net/cjjky/archive/2007/02/23/1513083.aspx 假設帳號是test@163.com,密碼為test, 1)root下使用perl -MMIME::Base64 -e 'print encode_base64("test")',把test換成實際的用戶名或密碼,記下返回的字串(這里是dGVzdA==),不同的smtp server,有的要求用戶名是@前的(比如test),有的要求是全部(比如test@163.com),可以參考郵件提供商關于outlook等smtp客戶端的設置. 2) telnet smtp.163.com 25 #25為163郵箱的smtp服務端口 Trying 202.108.5.83... Connected to smtp.163.com. Escape character is '^]'. 220 163.com Anti-spam GT for Coremail System (163com[071018]) EHLO smtp.163.com 250-mail 250-PIPELINING 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME AUTH LOGIN 334 dXNlcm5hbWU6 dGVzdA== #使用步聚1,得到的用戶名字符串 334 UGFzc3dvcmQ6 dGVzdA== #使用步聚1,得到的密碼字符串 235 Authentication successful MAIL FROM:<test@163.com> # FROM選項,<>里的必須是現在用的郵件名 250 Mail OK RCPT TO:<test@163.com> #TO 選項,發(fā)給誰 250 Mail OK DATA #準備填充郵件體 354 End data with <CR><LF>.<CR><LF> #按<回車>.<回車>結束 TO: test@163.com FROM: test@163.com SUBJECT: test by telnet/smtp test, just a test. . 250 Mail OK queued as smtp10,wKjADQ2ApxRnnqBE0CWaEw==.38326S3 NOOP 250 OK QUIT 221 Closing connection. Good bye. Connection closed by foreign host. 看有沒有收到郵件,若測試成功,說明smtp server可以使用,記下perl生成的用戶名和密碼的字串,下方我稱之為用戶名密文,密碼密文
三、修改$Bugzilla_DIR/Bugzilla/BugMail.pm,做如下修改: 增加新的郵件發(fā)送方法: sub MessageToMTA { my ($msg) = (@_); return if (Param('mail_delivery_method') eq "none");
my ($header, $body) = $msg =~ /(.*?\n)\n(.*)/s ? ($1, $2) : ('', $msg); my $headers;
if (Param('utf8') and (!is_7bit_clean($header) or !is_7bit_clean($body))) { ($headers, $body) = encode_message($msg); } else { my @header_lines = split(/\n/, $header); $headers = new Mail::Header \@header_lines, Modify => 0; }
# Use trim to remove any whitespace (incl. newlines) my $rcpt_to = trim($headers->get('to'));
use Net::SMTP; my $smtp_server = 'smtp.163.com'; my $smtp_user = 'test@163.com'; #這里用戶名是全的
my $encode_smtpuser ='dGVzdA=='; #用戶名密文 my $encode_smtppass = 'dGVzdA=='; #密碼密文,用密文比明文enconde安全
my $smtp = Net::SMTP->new($smtp_server,Timeout => 60) || die 'Cannot connect to smtp server';
my $result = $smtp->command('AUTH','LOGIN'); my $answer = $smtp->getline(); # 334 VXNlcm5hbWU6
$result = $smtp->command($encode_smtpuser); $answer = $smtp->getline(); # 334 UGFzc3dvcmQ6 $result = $smtp->command($encode_smtppass); $answer = $smtp->getline(); # 235 Authentication successful # or 535 Authentication failed if ($answer =~ /535/i) {print "Sorry,Authentication failed!n";exit;}
$smtp->mail($smtp_user); $smtp->to($rcpt_to); $smtp->data(); $smtp->datasend($msg); $smtp->dataend(); $smtp->quit; } 這個方法與原來的方法重名,所以需要將原來的方法注釋掉或者修改成另外一個名字,這樣就能使用這個新的方法發(fā)送郵件了。 注意黑體部分,將他們替換成你自己的相應的數值。這是將所需參數寫死在這里,就不能在配置界面進行配置了,如果需要再次修改這些參數,需要直接修改這個文件。而設置界面中的關于郵件發(fā)送方式的設置(sendmail/smtp/qmail..等)將不起作用了。
From: http://hi.baidu.com/najftulhmndgswr/item/6d8ba9f0d02e9004d89e7294 本文安裝過程主要參考: http://www.bugzilla.org/docs/3.6/en/html/installation.html
http://www.thegeekstuff.com/2010/05/install-bugzilla-on-linux/
安裝流程:
1. 先檢測下 Perl是否安裝了$ perl -v 如果沒有安裝,下載安裝 2. 安裝一個數據庫,推薦使用 MySQL$ mysql -V 如果沒有安裝的話,用 apt-get即可,server和client都裝下。 在裝 mysql-server的時候會提示輸入 password,記住,再后面創(chuàng)建數據庫的時候會用到。 3. 安裝apache2apt-get install 即可。 測試apache2是否正常: 在瀏覽器的URL欄輸入: http://localhost 或者 http://127.0.0.1; 只要出現: It works! 表示服務器已經正常啟動。 4. 下載并安裝 Bugzilla 下載 Bugzilla 3.6.1,地址: http://www.bugzilla.org/download/下載后在 /var/www/目錄下解壓,然后進入目錄 1)Perl 模塊的安裝 a)首先查看下缺少的模塊 bash# ./checksetup.pl --check-modules b)然后利用這個命令將所缺模塊安裝上 bash# perl install-module.pl <modulename> 必須安裝的模塊有這些: 1. CGI (3.21) 2. Date::Format (2.21) 3. DateTime (0.28) 4. DateTime::TimeZone (0.71) 5. DBI (1.41) 6. DBD::mysql (4.00) if using MySQL 7. Digest::SHA (any) 8. Email::Send (2.00) 9. Email::MIME (1.861) 10. Email::MIME::Encodings (1.313) 11. Email::MIME::Modifier (1.442) 12. Template (2.22) 13. URI (any) 如果未安裝模塊太多,可以執(zhí)行下列命令,全體安裝:
(注意:由于安裝模塊的時候會有權限問題,所以在執(zhí)行下列命令前, sudo chmod 777 -R bugzilla-3.6.1) bash# /usr/bin/perl install-module.pl --all (關于DateTime::TimeZone 模塊安裝失敗的問題,請參考此網站的最后回復,Build) http://www.experts-exchange.com/OS/Linux/Q_25111007.html需要自己下載DateTIme模塊,然后重新編譯,在解壓目錄 perl Build.PL,然后按照上面網站所說!!! 2)成功裝完后,生成本地config bash# ./checksetup.pl bash# vi ./localconfig 修改: $db_pass = 'akaedu'; 修改: $webservergroup = 'www-data'; 保存退出 3)之后在mysql數據庫中加入信息 bash# mysql -u root -p (如果這里要輸入密碼一直過不去,請參考 http://hi.baidu.com/ever__love/blog/item/1c9b3c19cd0866f7af5133c7.html) mysql> GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES, CREATE TEMPORARY TABLES, DROP, REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY 'akaedu'; mysql> FLUSH PRIVILEGES; mysql> quit; mysql的命令必須都以分號結束。 4) 再次安裝 bash# ./checksetup.pl 如果上述一切正常,這次安裝過程中將提示你輸入 郵箱,真名,密碼。 郵箱是你登錄bugzilla的root用戶名,密碼就是密碼。 5. 配置apache的config,與bugzilla的index鏈接bash# vi /etc/apache2/apache2.conf 在內部添加這樣一段: <Directory /var/www/bugzilla-3.6.1> AddHandler cgi-script .cgi Options +Indexes +ExecCGI DirectoryIndex index.cgi AllowOverride Limit </Directory> 然后重啟apache2 bash# /etc/init.d/apache2 restart 6. 到這里應該就能正常訪問bugzilla的主頁了URL: http://localhost/bugzilla (如果不行,就把bugzilla的版本號加上) 就會看到如下圖像,表示正常登錄bugzilla了。  大功告成 進入后,選一個 “File a bug”, 然后輸入root用戶名(郵箱)以及密碼就正常登錄,可以使用了。 目前遺留問題,無法注冊普通用戶,因為注冊時候會發(fā)送確認信件,發(fā)送顯示成功(沒有報錯),但目標信件收不到,不知是哪里出了問題。TODO! 上述郵件發(fā)送問題已經解決了!!! 解決方法: 感覺應該是 bugzilla的設置問題,在bugzilla網頁上登錄后,點擊上端菜單中的 Administration, 然后選擇 Parameters, 在左側欄中選擇E-mail,然后在 mail_delivery_method中選擇 Test,雖然你點擊了發(fā)送郵件,但會被bugzilla自己截獲,存入 data/mailer.testfile文件中。如果發(fā)不出郵件,可以選擇Test,在data/mailer.testfile文件中如果有信息,那 說明郵件服務器有問題,但如果此文件中沒有信息,那就說明有別的問題。 我發(fā)送郵件顯示正常,但目標收不到郵件,檢查 data/mailer.testfile文件,發(fā)現是空的。之前用telnet smtp測試,能正常連通smtp.163.com,思來想去,應該就是bugzilla的設置問題。這個不成功的版本是在同時電腦上測試的,我自己的已 經成功,只不過過程中修改的東西太多,不知如何調試了。于是乎我就想到了diff,網頁上的配置信息對應到源碼中,就是 data/params文件,于是我將我的文件與我同事電腦上的這個文件進行了diff,其中有一項 use_mailer_queue。 不成功: 'use_mailer_queue' => '1', 成功的'use_mailer_queue' => 0, 于是將不成功的修改為 0,結果再嘗試Test, data/mailer.testfile中已經有信息了,將 mail_delivery_method修改為SMTP,也能正常發(fā)送郵件了!
From: http://blog.csdn.net/wy818/article/details/7240294 有兩種方法: 1.將項目打成war包,復制到${tomcat.home}\webapps目錄下.當tomcat啟動時會自動將其解包. 有人說,不能直接將war文件夾直接復制到${tomcat.home}\webapps目錄下. 但是我試過之后,可以。將war包解壓,解壓出的文件夾要和war文件同名(后面可沒有 .war),然后將文件夾放到webapps下面就可以了 2.修改${tomcat.home}\conf\server.xml文件.在Host節(jié)點下增加如下參考代碼: <Context docBase="D:\pafalearning\userapp\dist\tomcat\userapp.war" path="/userapp" reloadable="true"/> - <Context docBase="D:\pafalearning\userapp\dist\tomcat\userapp.war" path="/userapp" reloadable="true"/>
docBase:指向項目的根目錄所在的路徑,由于我將項目打成了war包,所以直接指向這個war包就可以了(我的項目名為:userapp). path:是一個虛擬目錄,這里設置成了"userapp",則啟動Tomcat后,你將通過http://localhost:8080/userapp/*.jsp來訪問項目的相關頁面. reloadable:如果設置為"true",則表示當你修改jsp文件后,不需要重啟服務器就可以實現頁面顯示的同步. 可以這樣理解:將docBase實際目錄下的項目,映射到${tomcat.home}\webapps目錄下的虛擬項目path(這里的配置指的是userapp項目). 也許有些人還不懂war包是什么,其實就是你的項目下的WebRoot文件夾中的內容(不加WebRoot這個文件夾)打成一個壓縮包,后綴用war,其實和rar差不多,不過tomcat就認war。 那為什么war包可以講項目這個發(fā)布出來呢? 1.因為所有新建的文件夾都在WebRoot文件夾下 2.所有的頁面都在WebRoot文件夾下 3.所有的后臺代碼都編譯成了 .class文件,在WebRoot \ WEB-INF \ classes 下面 4.我們習慣將所有的 .jar包放在WebRoot \ WEB-INF \ lib 下面 有了這些,就相當于一個項目完全考到了tomcat下面,這就是用war包發(fā)布項目的原理
1. IFNULL(expr1,expr2) 2. 如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。 IFNULL()返回一個數字或字符串值,取決于它被使用的上下文環(huán)境。 3. mysql> select IFNULL(1,0); 4. -> 1 5. mysql> select IFNULL(0,10); 6. -> 0 7. mysql> select IFNULL(1/0,10); 8. -> 10 9. mysql> select IFNULL(1/0,'yes'); 10. -> 'yes' 11. IF(expr1,expr2,expr3) 12. 如果expr1是TRUE(expr10且 expr1NULL),那么IF()返回expr2,否則它返回expr3。IF()返回一個數字或字符串值,取決于它被使用的上下文。 13. mysql> select IF(1>2,2,3); 14. -> 3 15. mysql> select IF(1 'yes' 18. mysql> select IF(strcmp('test','test1'),'yes','no'); 16. -> 'no' 17. expr1 作為整數值被計算,它意味著如果你正在測試浮點或字符串值,你應該使用一個比較操作來做。 18. mysql> select IF(0.1,1,0); 19. -> 0 20. mysql> select IF(0.10,1,0); 21. -> 1 22. 在上面的第一種情況中,IF(0.1)返回0,因為0.1被變換到整數值, 導致測試IF(0)。這可能不是你期望的。在第二種情況中,比較測試原來的浮點值看它是否是非零,比較的結果被用作一個整數。 23. CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END 24. CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END 33. 第一個版本返回result,其中value=compare-value。第二個版本中如果第一個條件為真,返回result。如果沒有匹配的 result值,那么結果在ELSE后的result被返回。如果沒有ELSE部分,那么NULL被返回。 25. mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END; 26. -> "one" 27. mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END; 28. -> "true" 29. mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END; 30. -> NULL
http://blog.csdn.net/jeamking/article/details/7226656
在MessageFormat.format方法中組裝jason數據字符串:{code:"w1",des:"w2"},起止分別有左大括號和右大括號。方法是將單引號把大括號包含起來。如下: String responseTemplate = "'{'code:\"{0}\",des:\"{1}\"'}'"; System.out.println(MessageFormat.format(responseTemplate, "w1","w2")); 如果格式化字符串中包含單引號,處理方法是用2個單引號進行轉義: String responseTemplate = "'{'code:''{0}'',des:''{1}'''}'"; System.out.println(MessageFormat.format(responseTemplate, "w1","w2")); 處理結果:{code:'w1',des:'w2'}
|