PIXNET Logo登入

Felix's Spaces

跳到主文

部落格全站分類:

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 11月 03 週二 200909:58
  • 談論主題 [IIS] 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。

 
引述
[IIS] 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。

 


訊息:



已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.


發生原因:



SQLClient 集區已經用盡 SqlInternalConnection 物件。


發生原因:



程式使用的連線太多,導致Connection Pool用完。Max Pool Size預設值為100。


處理方式:



檢查程式有無開啟(open)而無關閉(close)連線的狀況。


檢查程式有無遞迴呼叫,導致連線用完的狀況。


檢查系統使用量是否真的很多,導致連線用完的狀況。


修改連線字串,增加Max Pool Size的上限,例如:Max Pool Size=300


參考資料:



http://support.microsoft.com/?scid=kb%3Ben-us%3B830118&x=9&y=7


http://msdn.microsoft.com/en-us/library/8xx3tyca%28VS.71%29.aspx




文章資料:
 
使用Using來宣告Connection來Connection自動關閉回收,避免忘記回收關閉
 
物件Object的New,Dispose與Connection的Open,Close概念分享
 
Dispose 測試:Dispose時是否立即釋放記憶體
 
(繼續閱讀...)
文章標籤

felix 發表在 痞客邦 留言(0) 人氣(14,707)

  • 個人分類:技術文件
▲top
  • 8月 08 週六 200918:02
  • MBTI 職業性格測試報告

吐舌頭在網路上看到一篇MBTI 職業性格測試報告
想說測試一下,看自己適合哪方面的工作,
結果還真的和目前工作一樣耶,看來我還是適合從事這方面工作
不過公務型的意思,是不是該找份穩定收入的工作呢?
 
我的測試結果:
分析:您的性格類型是「ISTJ」( 公務型 )
沉靜,認真;貫徹始終、得人信賴而取得成功。講求實際,注重事實和有責任感。能夠合情合理地去決定應做的事情,而且堅定不移地把它完成,不會因外界事物而分散精神。以做事有次序、有條理為樂---不論在工作上, 家庭上或者生活上。重視傳統和忠誠。 ISTJ型的人是嚴肅的、有責任心的和通情達理的社會堅定分子。他們值得信賴,他們重視承諾,對他們來說,言語就是莊嚴的宣誓。 ISTJ型的人工作縝密,講求實際,很有頭腦也很現實。他們具有很強的集中力、條理性和 準確性。無論他們做什麼,都相當有條理和可靠。他們具有堅定不移、深思熟慮的思想,一旦他們著手自己相信是最好的行動方法時,就很難轉變或變得沮喪。ISTJ型的人特別安靜和勤奮,對於細節有很強的記憶和判斷。 他們能夠引證準確的事實支持自己的觀點,把過去的經歷運用到現在的決策中。他們重視和利用符合邏輯、客觀的分析,以堅持不懈的態度準時地完成工作,並且總是安排有序,很有條理。他們重視必要的理論體系和傳統 慣例,對於那些不是如此做事的人則很不耐煩。ISTJ型的人總是很傳統、謹小甚微。他們聆聽和喜歡確實、清晰地陳述事物。ISTJ型的人天生不喜歡顯露,即使危機之時,也顯得很平靜。他們總是顯得責無旁貸、堅定不變 、但是在他們冷靜的外表之下,也許有強烈卻很少表露的反應。

您適合的領域有:工商業領域、政府機構 金融銀行業、政府機構、技術領域、醫務領域


您適合的職業有:


  • 審計師
  • 會計
  • 財務經理
  • 辦公室行政管理
  • 後勤和供應管理
  • 中層經理
  • 公務(法律、稅務)執行人員
  • 銀行信貸員
  • 預算分析師
  • 保險精算師
  • 稅務經紀人
  • 稅務檢查員
  • 機械、電氣工程師
  • 計算機程式設計師
  • 資料庫管理員
  • 地質、氣象學家
  • 法律研究者
  • 律師
  • 外科醫生
  • 藥劑師
  • 實驗室技術人員
  • 牙科醫生
  • 醫學研究員
  • 資訊主管
  • 證券經紀人
  • 會計
  • 文字處理

  •  
     
    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(29)

    • 個人分類:
    ▲top
    • 7月 16 週四 200915:10
    • 能夠一起飛,才是...人生最大的福氣

    文章出處:網路上
     
    我先生一直在外商工作,出國開會,晚上應酬是常事。
    我們結婚一年小孩就出生了,我先生工作更忙,
    而我剛好也轉換一個新工作,早上7點半要到公司開早會,聽解盤。
    我一個新手媽媽,不懂訣竅,小孩凌晨一點喝奶,清晨五點喝奶,
    我的睡眠時間被分割,新換的業務工作壓力,也常常讓我失眠。
    而我先生依然如常的上下班,我一肩扛起照顧小孩的責任,
    有時凌晨一點起床餵奶同時,還一邊替他準備解酒茶水及熱毛巾,
    因為他剛應酬回家。
     
    小孩四個月大時,他爭取到美國St.
    Jose外訓行程一個月,
    我們發生了很大的爭執,希望他放棄,希望他在家陪我,因為我累了,
    新工作和照顧新生兒的壓力,讓我瘦的比產前還瘦。
    我先生告訴我,我不懂他的志向,像故事中的邱先生,自比為大鳥。
    我含淚讓他去美國,一個人早上送小孩去保母家,下班接回小孩,週末去陪他父母吃飯。
     
    一個月後他回來了,公司Promote他,他志得意滿,人生似乎很平順。
    可是我的身體越來越差,我決定和他一起分攤照顧小孩的工作,
    我請他晚上幫忙照顧小孩,讓我好好睡一個月。
    他答應一個月不應酬,每晚回家帶小孩。
     
    不到一個月時間,有天我早晨醒來,看到他坐在身旁,
    他顯然是很早起床,要不就沒睡,他很慎重的問:
    『老婆我問你,這半年來你照顧小孩,都是這樣睡睡醒醒嗎?』
    我答:『是啊。』
    他問:『妳怎沒說?』
    我答:『我說了,但你體會不到。』
    沉默了一會兒,他說:
    『如果我累了,可辭職回家帶小孩,養家是男人的天職。』
    但我告訴他:『他也不懂我的志向,我和他受同樣的教育,
    我也有自己想要的人生,我也想被認同。』
    《我們是在國外求學時認識,一回國就結婚。》
    他沉默許久,很憐惜的看著我說:『老婆,妳真的好辛苦。』
     
    從此以後,我先生很少應酬,一回家就換下衣服陪小孩。
    但出差到國外還是少不了,我也不再阻止。
    幾年後我們有了第二個兒子,生活更加忙碌,但我們很少爭執,
    因為我們各自在自己崗位上發展,並且互相支援。
     
    這幾年外商漸漸撤離台灣,我先生也面臨短暫失業,有天他對我說:
    『老婆,妳有工作讓我減輕不少壓力,我可以慢慢尋找適合的工作。』
    後來他到一家上市公司負責中國南方的經營策略,常常海峽兩岸奔走,
    我還是一個人接送小孩,一個人上下班,週末陪他父母吃飯。
    最近他有較長的時間在台灣,回想結婚這十年來,
    他像大鵬鳥一樣四處飛翔,剛出社會時覺得太早結婚,
    婚姻某種程度上是他的牽絆,但現在卻老想回家。
    他說走遍世界各地,每到夜晚最想念的還是家裡的大床。
    我倒覺得我先生越來越像我兩個兒子,回到家總愛黏著我。
    我每天回家都聽兒子講學校發生的事,培養和小孩互動機會,
    我先生也急於和我分享他工作上的大小事,我因為從事承銷業務,
    對上市公司財務業務接觸廣泛,也常能提供他一些訊息及建議。
     
    我的感覺是婚姻是兩人Compromise的結果,
    沒有誰是大鳥,誰是小鳥。
    如果你飛的比較快,記得停下來等等對方,兩人要心存感激,互相扶持,
    讓兩人可以飛得久久長長。
    畢竟…能夠一起飛,才是…人生最大的福氣。
     
    『夫子曰:如果你沒有準備好和對方一起走,切勿輕言結婚!』
    夫妻如果沒有共同的理想、抱負,其中一方就會像《良駒》一樣,
    很痛苦地和《一般牛》擠在同一柵欄中吃食;
    而《美麗的鳳凰》,也會很委屈地和《普通雞》一樣,被關在同一籠中餵食。
     
     
    ------------ 幸福思考;聰明行動 ------------
    幸福的保障,不在於別人的承諾,而是自我心態的調整。
    在享受快樂的時候 ,做好擁抱痛苦的心理準備。
    看信是一種幸福、它代表你有空閒
    沒空看信也是一種幸福、它代表你有比看信更重要的事忙著
    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(12)

    • 個人分類:網路文章
    ▲top
    • 6月 26 週五 200916:35
    • jQuery 教學 - 基礎篇

    文章出處:jsGears技術論壇
     

    jQuery 教學 - 基礎篇


    [前言]
    jQuery 是一套 JavaScript 的 Library,因此,你必須稍具 JavaScript 的基礎,至少寫過一些 JavaScript 才比較容易上手,並且看得懂後續的教學。jQuery 的核心程式並非包山包海、什麼都可以幫你做,相反地,jQuery 主要是用在 DOM 文件的操作,包含「快速選取元素(Element)」並且「做一些事情」,快速選取元素可以讓你一次選取單一或多個的元素,然後你可以將這些被選取的元素做一些改變,例如隱藏、顯示等等。此外 jQuery 的核心程式還加強了非同步傳輸(AJAX)以及事件(Event)的功能,讓你更容易操作遠端文件及事件。
    以上看得出來 jQuery 是針對 JavaScript 內在不足的地方加以增進,你仍然需要自己寫一些程式來完成你需要的各種功能,不同的是,正確地使用了 jQuery 可以讓你的程式碼更精簡、更優雅的表達出來,這在後續的範例中可以看到,更重要的是,應該也會讓你更快速的開發出你要的功能。
    或許你會想說,在這個 Web 2.0 的時代,我需要多點漂亮、絢麗的 Widgets 來裝飾我的網站,就像 Yahoo UI 或 ExtJS 提供的那些功能一樣,jQuery 有嗎?其實 jQuery 的設計上有考慮到這類擴展性的問題,目前 jQuery 的 plugin 已經有上百個了,你也不一定要完全自己動手寫,上 jQuery 官方網站找找看,或許你需要的功能別人已經幫你做好了。以 UI 來講, jQuery 跟 UI 相關的 plugins 已經做過了一些整合,目前獨立發佈為 jQuery UI (http://ui.jquery.com/),如果你之前沒聽過 jQuery UI,建議你上去網站上看一下展示的範例,嗯,雖然可能還有一些 bug 存在,但是整體來說已經有相當的水準了,或許你會對 jQuery 更有興趣了。
    以下的教學內容,主要是擷取了 jQuery 作者 John Resig 的一篇簡報 "Building Interactive
    Prototypes with jQuery" 的內容加以調整並註解,希望能以比較忠實的方式來呈現 jQuery 的設計含意。
    [初探]
    jQuery 怎麼用來「快速選取元素」並且「做一些事情」呢?請看看程式碼:





    1. $("div").addClass("special");  
    $("div").addClass("special");

    錢記號 $ 是 jQuery 的物件,使用 $("div") 就是用 jQuery 來選取元素,這個範例可以選取文件內所有的 <div> 元素。後面接著的 .addClass("special") 就是用來做一些事情,這個範例是將先前所選取到的所有元素都加上一個名為 "special" 的 class。也就是透過 $("div").addClass("special") 的語法,可以讓你一次幫文件上有的 <div> 元素都加入 special 的 class。
    請注意喔,剛剛的例子可以針對已選取的多個元素做批次的操作,也就是說如果文件上有三個 <div>,那就會一次找出三個 <div> 並且全部套用後續的動作。這和你原本自己使用 JavaScript 來寫程式有很大的差異,原本自己寫可能會需要用到迴圈之類的語法,而 jQuery 的函數大多具有批次處理的功能,光是這點就可以讓你的程式更簡潔了。
    關於錢記號 $ 將會是你學習及使用 jQuery 的過程中最重要的物件(或者你要把 $ 當成一個函數也可以,事實上也是這樣),使用方式就像剛剛你看到的,用來找元素用的,把參數帶入即可。或許你不習慣錢記號也可以當成函數名稱,那麼你也可以用 jQuery 這個名字,錢記號其實是被當成 jQuery 的縮寫,讓你的函數看起來更簡潔一些,如果你要自己設定另外一個縮寫,例如 $j,也是可以的,這部份後續再解釋,先看看已下的範例,結果將會和上面的範例是一模一樣的:





    1. jQuery("div").addClass("special");  
    jQuery("div").addClass("special");


    [選取元素]


    前面的例子使用 $("div") 來選取元素,帶入的參數 div 是表示你要找的元素,這是 CSS 選擇器(CSS Selector) 的語法,就如同 CSS 在做排版和外觀所使用的選擇器語法一樣。jQuery 所支援的 CSS Selector 包含了 CSS 1、CSS2 以及仍未正式發佈的 CSS3,此外透過 plugin 還可支援常用的 XPath 語法,善用這些 CSS、XPath 語法就可以很容易地找到你要處理的網頁元素,底下來看看更多的範例。
    這是一段原始的 HTML:





    1. <div id="body">  

    2.   <h2>Some Header</h2>  

    3.   <div class="contents">  

    4.     <p>...</p>  

    5.     <p>...</p>  

    6.   </div>  

    7. </div>  
    <div id="body">
      <h2>Some Header</h2>
      <div class="contents">
        <p>...</p>
        <p>...</p>
      </div>
    </div>

    以下用一連串的範例,以藍色字體展示一些基本的語法並且以深色字顯示文件中會被選取的元素。
    $("div")
    <div id="body">
      <h2>Some Header</h2>
      <div class="contents">
        <p>...</p>
        <p>...</p>
      </div>
    </div>

    解釋:選取所有 <div>
    $("#body")
    <div id="body">
      <h2>Some Header</h2>
      <div class="contents">
        <p>...</p>
        <p>...</p>
      </div>
    </div>

    解釋:選取 id 為 body 的元素
    $("div#body")
    <div id="body">
      <h2>Some Header</h2>
      <div class="contents">
        <p>...</p>
        <p>...</p>
      </div>
    </div>

    解釋:選取 id 為 body 的 <div>
    $("div.contents p")
    <div id="body">
      <h2>Some Header</h2>
      <div class="contents">
        <p>...</p>
        <p>...</p>

      </div>
    </div>

    解釋:選取 class 為 contents 的 <div> 所包住的所有下層的 <p>
    $("div > div")
    <div id="body">
      <h2>Some Header</h2>
      <div class="contents">
        <p>...</p>
        <p>...</p>
      </div>
    </div>

    解釋:選取被 <div> 包住的下一層 <div>
    $("div:has(div)")
    <div id="body">
      <h2>Some Header</h2>
      <div class="contents">
        <p>...</p>
        <p>...</p>
      </div>
    </div>

    解釋:和前一個範例相反,這邊是選取至少有包住一個 <div> 的 <div>
    [做一些事情]
    前一段的教學中介紹了如何使用 jQuery 來選取元素,其中大部份的語法都是可以讓你快速地一次選取多個元素,接下來當然就是要來對這些選取到的元素做些改變囉。透過 jQuery 內建的函數,你可以:



    • 對 DOM 進行操作,例如對文件節點的新增或修改
    • 添加事件處理
    • 做一些基本的視覺效果,例如隱藏、顯示、下拉顯示、淡出淡入等等
    • 使用 AJAX 傳送表單內容或取得遠端文件


    [範例1] 選取所有有 target 屬性的 <a>,並且在其節點下加入一段文字。





    1. $("a[target]").append(" (Opens in New Window)");  
    $("a[target]").append(" (Opens in New Window)");

    這是一段原始的 HTML :





    1. <a href="http://jsgears.com">jsGears</a>  

    2. <a href="http://google.com" target="_blank">Google</a>  

    3. <a href="http://amazon.com" target="_blank">Amazon</a>  
    <a href="http://jsgears.com">jsGears</a>
    <a href="http://google.com" target="_blank">Google</a>
    <a href="http://amazon.com" target="_blank">Amazon</a>

    選取有 target 屬性並加入文字後的結果:





    1. <a href="http://jsgears.com">jsGears</a>  

    2. <a href="http://google.com" target="_blank">Google (Opens in New Window)</a>  

    3. <a href="http://amazon.com" target="_blank">Amazon (Opens in New Window)</a>  
    <a href="http://jsgears.com">jsGears</a>
    <a href="http://google.com" target="_blank">Google (Opens in New Window)</a>
    <a href="http://amazon.com" target="_blank">Amazon (Opens in New Window)</a>

    [範例2] 選取 id 為 body 的元素,並且修改兩個 css 屬性。





    1. $("#body").css({   

    2.   border: "1px solid green",   

    3.   height: "40px"  

    4. });  
    $("#body").css({
      border: "1px solid green",
      height: "40px"
    });

    這是一段原始的 HTML :





    1. <div id="body">  

    2.   ...   

    3. </div>  
    <div id="body">
      ...
    </div>

    選取 id 為 body 的元素並修改 css 後的結果(示意):





    1. <div id="body" style="border: 1px solid green; height: 40px">  

    2.   ...   

    3. </div>  
    <div id="body" style="border: 1px solid green; height: 40px">
      ...
    </div>

    [範例3] 在網頁上的表單送出時加入一個判斷,如果 username 這個欄位是空值的話,就顯示 help 這個區塊內的文字。





    1. $("form").submit(function() {   

    2.   if ($("input#username").val() == "")   

    3.     $("span.help").show();   

    4. });  
    $("form").submit(function() {
      if ($("input#username").val() == "")
        $("span.help").show();
    });

    可作用在類似以下的 HTML,一開始 span.help 是隱藏的,如果沒有輸入 username,才會顯示:





    1. <style type="text/css">  

    2.   .help {display: none}   

    3. </style>  

    4. <form>  

    5.   <label for="username">請輸入大名</label>  

    6.   <input type="text" id="username" name="username" />  

    7.   <span class="help">這個欄位必填喔</span>  

    8. </form>  
    <style type="text/css">
      .help {display: none}
    </style>
    <form>
      <label for="username">請輸入大名</label>
      <input type="text" id="username" name="username" />
      <span class="help">這個欄位必填喔</span>
    </form>

    [範例4] 當 user 點選 id 為 open 的連結時,顯示 id 為 menu 的區塊,並回傳 false 避免瀏覽器真的換頁。





    1. $("a#open").click(function() {   

    2.   $("#menu").show();   

    3.   return false;   

    4. });  
    $("a#open").click(function() {
      $("#menu").show();
      return false;
    });

    可作用在類似以下的 HTML:





    1. <style type="text/css">  

    2.   #menu {display: none}   

    3. </style>  

    4. <a id="open" href="#">控制面板</a>  

    5. <ul id="menu">  

    6.   <li><a href="#1">控制面板首頁</a></li>  

    7.   <li><a href="#2">編輯個人資料</a></li>  

    8.   <li><a href="#3">個人空間管理</a></li>  

    9. </ul>  
    <style type="text/css">
      #menu {display: none}
    </style>
    <a id="open" href="#">控制面板</a>
    <ul id="menu">
      <li><a href="#1">控制面板首頁</a></li>
      <li><a href="#2">編輯個人資料</a></li>
      <li><a href="#3">個人空間管理</a></li>
    </ul>

    [範例5] 將 id 為 menu 的區塊以下拉布幕的動態效果快速顯示:





    1. $("#menu").slideDown("fast");  
    $("#menu").slideDown("fast");

    可作用在類似以下的 HTML,原本隱藏的選單會以動態下拉的方式顯示出來:





    1. <style type="text/css">  

    2.   #menu {display: none}   

    3. </style>  

    4. <ul id="menu">  

    5.   <li><a href="#1">控制面板首頁</a></li>  

    6.   <li><a href="#2">編輯個人資料</a></li>  

    7.   <li><a href="#3">個人空間管理</a></li>  

    8. </ul>  
    <style type="text/css">
      #menu {display: none}
    </style>
    <ul id="menu">
      <li><a href="#1">控制面板首頁</a></li>
      <li><a href="#2">編輯個人資料</a></li>
      <li><a href="#3">個人空間管理</a></li>
    </ul>

    [範例6] 將所有的 <div> 漸變為寬 300px、文字與邊界寬 20px





    1. $("div").animate({   

    2.     width: '300px',   

    3.     padding: '20px'  

    4.   }, 'slow');  
    $("div").animate({
        width: '300px',
        padding: '20px'
      }, 'slow');

    可作用在類似以下的 HTML:





    1. <div style="width: 100px; border: solid 1px red;">  

    2.   Hello world!   

    3. </div>  
    <div style="width: 100px; border: solid 1px red;">
      Hello world!
    </div>

    PS. jQuery 核心程式的 animate 函數能改變的元素屬性並不多,但是可以透過其他 plugin 提供更多的動態效果。
    [範例7] 動態效果的 callback 的範例,將所有的 <div> 以 0.5 秒的動態效果隱藏後,再以 0.5 秒的動態效果顯示。hide() 的第二個參數就是一個 callback 函數,其中 $(this) 是原本程式所處理的各個元素。





    1. $("div").hide(500, function(){   

    2.   // $(this) 是每一個各別的 <div>   

    3.   $(this).show(500);   

    4. });  
    $("div").hide(500, function(){
      // $(this) 是每一個各別的 <div>
      $(this).show(500);
    });

    可作用在類似以下的 HTML:





    1. <div style="width: 100px; border: solid 1px red;">  

    2.   Hello world!   

    3. </div>  

    4. <div style="width: 100px; border: solid 1px red;">  

    5.   jsGears.com!   

    6. </div>  
    <div style="width: 100px; border: solid 1px red;">
      Hello world!
    </div>
    <div style="width: 100px; border: solid 1px red;">
      jsGears.com!
    </div>

    [範例8] 取得 sample.html 並將找出文件內所有 <div> 下一層的 <h1> 填入原本文件 id 為 body 的元素內





    1. $("#body").load("sample.html div > h1");  
    $("#body").load("sample.html div > h1");

    這是一段原始的 HTML :





    1. <div id="body"></div>  
    <div id="body"></div>

    sample.html 的片段:





    1. <div>  

    2.   <h1>Hello world!</h1>  

    3.   <h2>This is H2</h2>  

    4.   <h1>jsGears.com!</h1>  

    5. </div>  
    <div>
      <h1>Hello world!</h1>
      <h2>This is H2</h2>
      <h1>jsGears.com!</h1>
    </div>

    執行程式碼之後的結果:





    1. <div id="body">  

    2.   <h1>Hello world!</h1>  

    3.   <h1>jsGears.com!</h1>  

    4. </div>  
    <div id="body">
      <h1>Hello world!</h1>
      <h1>jsGears.com!</h1>
    </div>

    [範例9] 透過 getJSON() 取得 JSON 格式的資料,並透過 callback 函數處理資料





    1. $.getJSON("test.json", function(data){   

    2.   for (var idx in data)   

    3.     $("#menu").append("<li>" + data[idx] + "</li>");   

    4. });  
    $.getJSON("test.json", function(data){
      for (var idx in data)
        $("#menu").append("<li>" + data[idx] + "</li>");
    });

    這是一段原始的 HTML:





    1. <ul id="menu">  

    2.   <li>項目1</li>  

    3. </ul>  
    <ul id="menu">
      <li>項目1</li>
    </ul>

    test.json 的內容:





    1. [   

    2.   "Hello world!",    

    3.   "jsGears.com!"  

    4. ]  
    [
      "Hello world!",
      "jsGears.com!"
    ]

    執行程式碼之後的結果:





    1. <ul id="menu">  

    2.   <li>項目1</li>  

    3.   <li>Hello world!</li>  

    4.   <li>jsGears.com!</li>  

    5. </ul>  
    <ul id="menu">
      <li>項目1</li>
      <li>Hello world!</li>
      <li>jsGears.com!</li>
    </ul>


    [連續使用函數]
    jQuery 很重要的一個特性是可以連續地使用函數(Chaining),當你選取了一個或一組的元素後,可以連續對這些元素進行多個處理。以下範例會將所有的 <div> 隱藏,修改文字顏色為藍色,再將 <div> 以下拉布幕的效果顯示出來:





    1. $("div").hide();   

    2. $("div").css("color", "blue");   

    3. $("div").slideDown();  
    $("div").hide();
    $("div").css("color", "blue");
    $("div").slideDown();

    這樣的三行程式碼可以用以下一行的程式碼取代,結果會是完全相同的:





    1. $("div").hide().css("color", "blue").slideDown();  
    $("div").hide().css("color", "blue").slideDown();

    是否感到很神奇呢?在 jQuery 的架構設計上,大部分的函數都會在處理完該做的事情後,再將原本傳入的元素給回傳回去,因此函數都可以連續這樣一個接著一個的使用。還記得一開始所說的 jQuery 可以讓你的程式碼更精簡嗎?看了上面的一些範例後,現在應該有點感覺了吧。
    講到 jQuery 的函數連續使用,有兩個很重要的函數必須在此介紹一下。第一個是 end(),這個函數執行後,會回傳「前一組找到的元素」。另一個是 find(),這個函數的用法如同使用 $() 找文件內的元素一樣是帶入 CSS 選擇器,執行後回傳找到的元素,不同的是 $() 是找整個文件,而 find() 是根據先前找到的元素再找其底下的元素,像是一個再過濾的功能。





    1. $("ul.open")                // [ ul, ul, ul ]   

    2.   .children("li")           // [ li, li, li ]   

    3.   .addClass("open")         // [ li, li, li]   

    4.   .end()                    // [ ul, ul, ul ]   

    5.   .find("a")                // [ a, a, a ]   

    6.   .click(function(){   

    7.     $(this).next().toggle();   

    8.     return false;   

    9.   })                        // [ a, a, a ]   

    10.   .end();                   // [ ul, ul, ul ]  
    $("ul.open")                // [ ul, ul, ul ]
      .children("li")           // [ li, li, li ]
      .addClass("open")         // [ li, li, li]
      .end()                    // [ ul, ul, ul ]
      .find("a")                // [ a, a, a ]
      .click(function(){
        $(this).next().toggle();
        return false;
      })                        // [ a, a, a ]
      .end();                   // [ ul, ul, ul ]

    上面這一段程式碼連續使用多個函數,且透過 end() 和 find() 來分別對不同的元素進行操作,詳細的步驟解釋如下:



    • 找出文件內所有 class 為 open 的 <ul>
    • 過濾出下一層的所有 <li>
    • 對這些 <li> 新增一個 class
    • 回前一次搜尋的結果,也就是所有的 <ul>
    • 再找出底下所有的 <a>
    • 對 <a> 新增事件處理
    • 回前一次搜尋的結果

    [document ready 事件]
    有些時候,我們必須在網頁下載完成之後立即執行一些程式,可能是想要把游標放在預設的輸入框,或是馬上顯示一些歡迎訊息等等。過去你可能用過 window.onload 來處理,或是直接在 <body> 標籤上加入 onload 的事件處理函數,但是 jQuery 提供了另一種選擇,請參考下面的範例:





    1. $(document).ready(function() {   

    2.   alert('您好,歡迎來到 jsGears.com ~');   

    3. });  
    $(document).ready(function() {
      alert('您好,歡迎來到 jsGears.com ~');
    });

    先透過 $() 取得 document 物件,接著使用 ready() 帶入一個函數,就可以在網頁下載完成後立即執行。jQuery 的 document ready 事件是模擬 W3C DOM 標準的 DOMContentLoaded 事件,DOMContentLoaded 和 window.onlad 的差異在於前者是在 DOM 文件下載完成後觸發,而後者是文件和所有文件內的元件,包含圖檔等等全部下載完成後才會觸發,因此通常 window.onload 的發生時間要比 DOMContentLoaded 晚一點(如果你的網頁內確實有用到一些圖檔),有時候你所需要執行的程式並不需要等所有圖檔都下載完成,因此,放到 DOMContentLoaded 事件內處理是比較合適的。但是,IE 目前的版本 6 和 7 並不支援 DOMContentLoaded 事件,所以 jQuery 用了一些技巧來達到模擬 DOMContentLoaded 的事件,而成果就是上面看到的這個例子的用法。
    DOMContentLoaded 和 window.onlad 的另一個差異在於 window.onload 並沒有辦法多次指定不同的函數來執行,最後指定的那個函數會複寫掉先前的,例如以下範例:





    1. window.onload = function() {   

    2.   alert('Hello world!');   

    3. };   

    4. window.onload = function() {   

    5.   alert('您好,歡迎來到 jsGears.com ~');   

    6. };  
    window.onload = function() {
      alert('Hello world!');
    };
    window.onload = function() {
      alert('您好,歡迎來到 jsGears.com ~');
    };

    上面的例子在同一個頁面上用了兩次 window.onload,結果將會是後面的函數會被執行到,前面的函數將消失無影蹤,當然,只要你稍具 JavaScript 處理 Event 的技巧,真要連續指定兩個函數來執行也不是太困難,不過用 jQuery 會更容易,看看以下相同的範例:





    1. $(document).ready(function() {   

    2.   alert('Hello world!');   

    3. });   

    4. $(document).ready(function() {   

    5.   alert('您好,歡迎來到 jsGears.com ~');   

    6. });  
    $(document).ready(function() {
      alert('Hello world!');
    });
    $(document).ready(function() {
      alert('您好,歡迎來到 jsGears.com ~');
    });

    相同的例子使用 jQuery 的 document ready 函數,則帶入的兩個函數都會被執行到,很簡單吧,完全不需用到什麼技巧。再提供一個精簡的語法, document ready 函數也可以這樣用:





    1. $(function() {   

    2.   alert('您好,歡迎來到 jsGears.com ~');   

    3. });  
    $(function() {
      alert('您好,歡迎來到 jsGears.com ~');
    });

    直接把函數放到 $() 裡面就可以了,是不是超精簡啊。
    [$() 別名]
    前面用到了很多 $(),包含剛介紹的 document ready 及先前的選取功能,都是透過這個簡短的錢記號來達成,其實這個錢記號是 「jQuery」這個物件的縮寫,也就是剛剛所有你看到用 $() 的地方,都可以改寫成用 jQuery(),例如:





    1. jQuery(document).ready(function() {   

    2.   jQuery("div").addClass("special");   

    3. });  
    jQuery(document).ready(function() {
      jQuery("div").addClass("special");
    });

    沒事應該不會有人想用比較長的名稱來寫程式,簡短的 $ 不是挺好的。但是,某些情況可能你無法使用 $(),例如你進行中的專案已經使用了其他的 JavaScript Library,而 $ 這個名稱已經被使用了,例如另一套知名的 prototype,也使用了 $() 這樣的函數名稱,這時如果你需要再搭配使用 jQuery 的話,jQuery 本身有提供一個方式來避免 $() 的衝突:





    1. jQuery.noConflict();   

    2. jQuery(document).ready(function() {   

    3.   jQuery("div").addClass("special");   

    4. });  
    jQuery.noConflict();
    jQuery(document).ready(function() {
      jQuery("div").addClass("special");
    });

    使用 jQuery 前,先下達 jQuery.noConflict() 這樣就可以避免掉 $() 衝突的問題,接著再用 jQuery 物件來進行操作即可。此外,你也可以自行幫 jQuery 這個物件設定另一個別名,例如:





    1. var $j = jQuery.noConflict();   

    2. $j(document).ready(function() {   

    3.   $j("div").addClass("special");   

    4. });  
    var $j = jQuery.noConflict();
    $j(document).ready(function() {
      $j("div").addClass("special");
    });

    使用一個變數來接 jQuery.noConflict() 的回傳值,這個變數就可以做為 jQuery 的一個別名,透過這個別名不但避免了和其他 Library 錢記號的衝突,也可以將函數名稱縮短,算是 jQuery 一個蠻貼心的設計。

    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(537)

    • 個人分類:技術文件
    ▲top
    • 6月 24 週三 200900:36
    • 『為什麼妳要道歉…?!』

    文章出處:牛頭牌...
     

    「小外甥在學校闖禍了!」接到爸爸的電話。


    「什麼事啊?!」我問。


    「聽說把小朋友打到流鼻血啦!」


    爸爸有些緊張,他要我立即前往學校了解情況並處理。


    我一直很疼小外甥,他個性很憨厚,為何會出手打人呢?我實在搞不懂!


    於是立即放下手邊工作,逕往學校去……


    進導師辦公室時,映入眼簾的是:


    我的大姊一直彎腰卑恭的向對方家長道歉…


    但是對方家長似乎完全不領情,脾氣火得像什麼似的…


    對方家長還一直說要找警察來,一定要把小外甥關起來…!!!


    看看站在一旁的小外甥,他的臉色鐵青,一肚子火氣,


    我知道他從小的脾氣就是拗,但是從來不和人惡搞的!


    他今天動手打人,我相信一定有他的原因…


     


    我一進去導師室,什麼話都懶得說,直接抱起了小外甥,說:


    『不要怕!舅舅來了!你什麼話都可以說!』


    這時小外甥終於忍不住哭了起來…


    『打人就不對了!說什麼說!還有臉哭?!』對方家長劈頭就這樣堵我!


    我火氣也來了,決定嚇對方一下,開口就操台語開罵:


    『幹!你是三小!沒看見恁倍在教厝裡的小孩講實話喔?!』


    『你不滿的話,去傳人過來!』


    『恁倍最看不起不懂事理就說:打人就不對ㄟ人!』


    對方先是愣住了!頓時聲音變得一片寧靜…


    (看來,社會上多數還真的欺負善良的人…!)


    打破沉寂,直接問老師發生事情的原委!


    沒想到老師也說不出所以然(這時候我的火氣真的來了),


    於是我讓小外甥告訴大家為何他要打人!


    同時我要求被打的小朋友一起站在老師面前,要他們當面對質!


     


    『美術課,我在做我的勞作啊!』


    『他很沒禮貌,過來借我的東西都不說一下!』


    『但是我不想要借他啊!』


    『他每次向人家借東西都不還,也不會珍惜…!』


    『今天他拿了我的萬能糊就跑!我就衝過去要拿回來!』


    『但是他都不還我,我也搶不回來!』


    『他突然把我的萬能糊往窗外丟,別的同學幫我撿起來!』


    『他還用很難聽的話一直罵我…』


    『我叫他不要再亂罵,他就對我比中指,還向我吐口水…』指著自己的鞋子。


    『所以我生氣就一拳打過去…』


    『他…流鼻血了…』


    小外甥低著頭,很後悔的表情。


    …………………


    ……………………………


    ……………………………………………


    當小外甥敘述過程的同時,我一直盯著這個小朋友和家長,


    並不斷確認對方的反應,其實我完全相信小外甥不會亂說…


     


    我回頭問挨打的小朋友:『那時候老師呢?!』


    「上廁所…」他小聲的說。


    『他講的有沒有不對的呢…?!』我接著問。


    「我有跟他借啊!」他反駁。


    『借個萬能糊也沒什麼啊…!』對方家長從旁幫腔。


    『但是他有答應要借你嗎?!』我不讓他閃躲,他回答不上來…。


    『小氣!借我們不就好了嗎…?!』對方家長這時理直氣壯的說。


    我狠狠的瞪了對方家長一眼,這下真的是秀才遇到兵了…


    知道不來些突然的手腕可能沒完沒了,立即轉頭告訴老師:


    「既然家長這麼喜歡請警察來,


    還是請你撥電話請東門派出所的員警先生來一趟好了!」


    這句話一出來,全部的人都愣住了!(包括對方家長)


    接著我緩緩的說:


    『今天我們的小孩的確打人,犯了錯,實在傷害了同學!』


    『我們願意就法律層面完全負責,包括醫療賠償!』


    『但沒經過別人的同意,私下拿就是偷,公開強取就是搶!』


    『畢竟起因是對方強奪我們的物品,我們絕對不會放過!』


    『搶奪他人財物屬於公訴罪,屬於非告訴乃論,一經提告就無法撤銷!』


    『未來提告的話,那個部分請他們自己負責!我就此先聲明!』


    知道自己語氣說得很緩,但是絕對有很強的殺傷力!


     


    老師當然不願意打這通電話,立即出來緩頰…


    但是我態度非常堅持,我說:


    『既然你們讓我出來處理,對方家長也只認為是我們家的小孩很小氣,


    似乎所有的錯都是我們造成的!我們何必再多有爭執呢?!』


    『讓這件事直接交給司法公正單位處理,對大家不是另一種學習嗎?!』


    頓時對方家長突然像洩了氣的皮球,不能再多說什麼…!


    趁著氣勢正強,我直接補了一句:


    『還是不要麻煩警察先生來這兒好了,我們一起前往警察局,好嗎?!』


    我直接走向對方家長面前,正式的邀約…


     


    半响,對方家長看著我說:『有這麼嚴重嗎?!』


    情勢演變讓我覺得對我方有利,但必須忍著些,我皺著眉頭說:


    『我不知道!』


    『因為是你們的態度讓我覺得很嚴重啊!!!』


    『要找警察來,是你們先提出來的!』


    『一定要關我們家的小孩,也是你們堅持的!』


    『換作是你,不嚴重嗎…?!』


    『只是我覺得來龍去脈既然我們都清楚了,我也認為必須採取行動啊!』


    『我不袒護自己的小孩,他有錯,就該承擔受罰!』


    『但起因是你們的小孩搶奪,我也必須讓我的小孩知道我行事公正!』


    『是非對錯我們何必再浪費彼此的時間,私下在這兒討論個沒完沒了呢?!』


    『讓法官和執法單位來教育我們的小孩,難道不好嗎?!』


    …………………..


    空氣又凝結了起來………….


     


    對方的媽媽突然問我:『你要告我們什麼?』


    『搶劫或搶奪吧?!我再問一下律師會好一些!』我故意說嚴重些。


    我看見他們已經在計算如果我這樣一告的話,他們會很麻煩…


    頓時決定來個火上加油的手腕,


    把胸前的錄音機(當時只有小型錄音機)拿出來,對他們說:


    『從我進這個門,我們所有對話我都錄下音,需要時可提供法官參考!』


    我知道這個動作是很具有挑戰性的,


    通常的人一旦面對麥克風或者錄音、錄影時,都會收斂許多…


    我看他們立即壓低聲音討論起來,然後對我很防備…


     


    趁著對方陷入抉擇與討論之際,我看著小外甥說:


    『你覺得你自己有錯嗎?!』


    他點點頭。


    『你覺得你應該怎麼辦呢?!』我問他。


    『道歉……!!!』他小聲的說。


    『但是不是做錯事情,靠著道歉都可以解決啊!你知道嗎?!』我補充。


    大姊在一旁著急,但是我請她把事情交給我,不要再表示任何意見…


     


    『你們討論結果如何呢?!我們可以一起去警察局了嗎?!』


    我再次邀約對方家長。


    『有其他方式解決嗎?!』這時對方爸爸口氣委婉許多。


    『你說呢?!我想聽聽你的意見!!!』我回答。


    『你們的小孩向我們道歉!這件事就算了!』


    他似乎認為這是解決的方式,而且說得有些勉強…。


    在一旁的老師似乎認為這很合理,還猛然點頭…


    結果,我直接拒絕,說:


    『不!!!』


    這個拒絕一出現,大家又都愣住了…


    『為什麼?!』對方家長認為我很無禮拒絕他們的善意。


    我清了清喉嚨,說:


    『該道歉的不應該只有我們家的小孩!』


    『起因是誰呢?!你認為你們的小孩沒有錯嗎?!』


    『請不要告訴我:被打和流血的人已經夠可憐了,所以可以免責!』


    『那麼你認為該如何?!』對方家長問。


    我知道他是壓抑著火氣,也知道他有些小來頭…


    『你們的小孩也必須道歉!』我認真的說。


    我看見他鐵綠著臉的表情實在很好玩,於是補充一句:


    『還要正式寫和解書,請老師當第三公證人!』


    此話一出,相信大家都會認為我不通情理,其實這是為了避免未來產生麻煩。


     


    事情的結局就是如我的要求:


    一、這2個小孩彼此道歉,互相寫一份道歉卡給對方。


    二、雙方家長簽立和解書,老師當公證人。


    三、此間醫療費用憑收據由我方支付。(其實也不需要看醫生,所以免付)


    *****************************************


    後來回到大姐家時,我問她:『為什麼妳要道歉…?!』


    她說:『對方家長很兇,對方小孩也流鼻血…!』


    後來我們聊很多,我略作整理如下:(僅供大家參考)


    一、『闖禍』有時是一種無價的學習!


    1.不要讓小孩子因此退縮了!


    2.即使在外頭打架,先問清楚原因!(不要急著揍小孩,這也是一種教育!)


    3.有時候我還會告訴自己的小孩:『打得好!』『我也一樣會忍不住去K他!』


    4.但是事後等小孩心平氣和之後再引導:如果重來一次,有其他方式嗎?!


    5.不論如何,當家長的心情必須很平緩!


    二、即使小孩真的犯錯了,家長不必急著去道歉:


      1.又不是家長犯錯,所以請家長不必『強出頭』吧!


      2.要道歉的是小孩子,所以小孩必須在過程中了解『錯在哪』!


      3.如果家長一直搶著道歉,就等於幫小孩子到處在「擦屁股」!會養成小孩倚賴!


      4.『不積極作為』其實就是一種『作為』,但是家長必須耐住火候!


      5.引導小孩子從單一事件,了解到「如果再有近似的情況,該怎麼辦!?」


      6.讓小孩子自己知進退,這才是教育!(壓抑不是唯一或者最棒的管教方式)


    三、家長必須多為自己打氣與加油:


      1.全家人的『健康』必須排在第一位!


      2.『成績』必須排在『品格』的後面!(太多家長排錯了!)


      3.多找機會和小朋友聊天!(543的亂哈啦也很好!)


      4.不要讓自己當『一輩子』的家長!當小孩25歲之後,該當朋友比較好!


      5.不要把小孩子的問題『放大』!但要將他們的好『放大』!


      6.常常給自己加油一番!


      7.『家』是最好的一個一個倚靠!向著家人要能夠敞開!


      8.好朋友之間也常常一起互相鼓舞!


     


    【補充】:


    本文只是描述一段過去發生的事情,絕無批評的意思…


    但是我後來發現:「把談判朝向破局的方式來談,不失為一個好方向!」

    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(19)

    • 個人分類:網路文章
    ▲top
    • 6月 05 週五 200921:33
    • 你是海螺嗎?

    文章出處:網路上
     
    (這是一個年薪200萬的竹科高階主管與大家分享的心得。)
    當我女朋友告訴我,要走出來學習成長、找備胎時,我心想我的工作這麼好了,還要出來學什麼,找什麼備胎?

    我的女友看到了我看不到的危機,便告訴我
    ”你的工作非常的好,但是拿掉你的專業,你剩什麼?“


    她講了一個故事:
    有一隻海螺,常看到漁夫拿著長長的釣竿要釣他,每當他看到這危機時,他的頭就縮進去他認為十分安全的殼內,躲避一切。

    隔了幾天,他想伸出頭來看看風景,呼吸一下空氣。
    他突然發現… 周遭環境變的都不太一樣了,他身處在一家海產店,外面標價:50元。

    我就像這個海螺,遇到困難都躲起來。在老闆眼中,也只是一個價錢。

       

    我的女友又說:在順境時找出路比在逆境時找退路還來的簡單。

    在我上班的公司
    ,若有一個人要升遷,要三位主管聯合視訊開會,
    其中一位主管得報告為何要讓他升遷,有2/3的人通過,那被提名的人才可以升遷。

    上個月,我有位部屬因為工作表現不佳,副總一句話,他就走路。
    升遷要很多人同意,可是離職卻只是一個人講就得走。

    我們的未來就掌握在一個人的二片薄薄的嘴唇上。
    但是透過女友的一句話
    ,我讓我的未來掌握在自已手中。

    她說:
    如果你認為你是個人才,那你要放在對的舞台,不然老闆會把你當木材燒
    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(8)

    • 個人分類:網路文章
    ▲top
    • 5月 19 週二 200918:10
    • 如何透過 SQLCMD 程式和 T-SQL 指令備份 SQL 資料庫

    文章出處:The Will Will Web
     

    以下共有兩支程式  BackupAllDB.bat 與 BackupScript.bat,最後還有批次檔的參考網址與部分說明。



    BackupAllDB.bat 用來定義你要備份哪幾個資料庫,需呼叫 BackupScript.bat 執行備份動作!


    BackupScript.bat 用來執行備份的動作


    檔案如下: 



    BackupAllDB.bat
    ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


    @echo off


    set DBList=Northwind DBname2  DBName3
    for %%a IN (%DBList%) DO (
        CALL BackupScript.bat %%a
    )


    echo ----------------
    echo 資料庫備份檔完成
    echo ----------------


    pause



    BackupScript.bat
    ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


    @echo off
    ::
    :: 預設的 %BackupFile% 為「一天備份一次」的檔名
    ::


    ::■■■■■■■■■■■■■■■■■
    ::             基本需求
    ::■■■■■■■■■■■■■■■■■
    ::
    :: 1. 要安裝 7-zip 壓縮軟體(可不裝)
    :: 2. 預設資料庫備份目錄夾在 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup (此為SQLExpress預設目錄,可修改)
    :: 3. 資料庫備份目錄夾必須可讓 SQLExpress / SQL 2005 的服務執行帳戶有寫入權限!
    :: 4. 預設是使用「信任式連線」
    ::
    ::■■■■■■■■■■■■■■■■■
    ::             參數設定
    ::■■■■■■■■■■■■■■■■■


    :: 備份資料夾目錄 ( 最後「不要」加上斜線 )
    set BackupDir=C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup
    :: 封存資料夾
    set ArchiveDir=\\SomeOtherNetworkShare\SQLDBBackup
    :: 資料庫名稱 ( 由指令參數傳入 )
    set DBName=%1
    :: 資料庫位址
    set DBHost=(local)\SQLExpress
    :: 壓縮檔(7-zip)位址
    set ZipProgram="c:\Program Files\7-Zip\7z.exe"


    ::■■■■■■■■■■■■■■■■■
    ::          取得日期時間
    ::■■■■■■■■■■■■■■■■■


    :: Setting environment variables with todoy's date values
    for /f "tokens=1-4 delims=-/ " %%i IN ('date /t') DO (
    set year=%%i
    set month=%%j
    set day=%%k
    )


    for /f "tokens=1-3 delims=:" %%i IN ('time /t') DO (
    set hour=%%i
    set minute=%%j
    )


    for /f "tokens=1 delims= " %%i IN ("%hour%") DO (
    set hour=%%i
    )


    ::■■■■■■■■■■■■■■■■■
    ::           設定備份檔名
    ::■■■■■■■■■■■■■■■■■


    :: 備份的檔名
    set BackupFile=%BackupDir%\%DBName%_%year%-%month%-%day%.bak


    ::■■■■■■■■■■■■■■■■■
    ::             執行備份
    ::■■■■■■■■■■■■■■■■■


    IF "%DBName%" NEQ "" goto ExecuteBackup
        echo ■■■■■■■■■■■■■■■■■■
        echo ★★★★★未指定資料庫名稱★★★★★
        echo ■■■■■■■■■■■■■■■■■■
        pause
        exit 0


    :ExecuteBackup


    echo === 備份 %DBName% 資料庫
    echo ---------------------------------------------------------------------------


    echo 執行備份到 %BackupDir%
    ::echo sqlcmd -S %DBHost% -E -Q "BACKUP DATABASE [%DBName%]  TO DISK='%BackupFile%'"
    sqlcmd -S %DBHost% -E -Q "BACKUP DATABASE [%DBName%]  TO DISK='%BackupFile%'"


    IF EXIST %ZipProgram% goto CheckBackupFile
        echo ■■■■■■■■■■■■■■■■■
        echo ★★★★★備份資料庫失敗★★★★★
        echo ■■■■■■■■■■■■■■■■■
        pause
        exit 0
    :CheckBackupFile


    ::■■■■■■■■■■■■■■■■■
    ::   壓縮資料庫備份檔 ( 7z 格式 )
    ::■■■■■■■■■■■■■■■■■


    IF NOT EXIST %ZipProgram% goto ZipBackupFile
        :: 7z a -mx=9 "%year%-%month%-%day%-%hour%-%minute%.7z" %workspace%
        echo ----------------
        echo 壓縮資料庫備份檔
        %ZipProgram% a -mx=9 "%BackupFile%.7z" "%BackupFile%" > nul
    :ZipBackupFile


    ::■■■■■■■■■■■■■■■■■
    ::         刪除資料庫備份檔
    ::■■■■■■■■■■■■■■■■■


    set ZipBackupFile=%BackupFile%.7z
    ::echo %ZipBackupFile%


    IF NOT EXIST "%ZipBackupFile%" goto DeleteBackupFile
        echo ----------------
        echo 刪除資料庫備份檔(僅留下壓縮檔即可)
        del "%BackupFile%"
    :DeleteBackupFile


    ::■■■■■■■■■■■■■■■■■
    ::   搬移資料庫備份檔到封存資料夾
    ::■■■■■■■■■■■■■■■■■


    if "%ArchiveDir%" EQU "" goto MoveToArchiveEnd


        IF NOT EXIST "%BackupFile%.7z" goto NoZippedBackupFile
            echo ----------------
            echo 搬移資料庫備份檔到封存資料夾 "%ArchiveDir%"
            move "%BackupFile%.7z" "%ArchiveDir%"
        :NoZippedBackupFile
       
        IF NOT EXIST "%BackupFile%" goto NoBackupFile
            echo ----------------
            echo 搬移資料庫備份檔到封存資料夾 "%ArchiveDir%"
            move "%BackupFile%" "%ArchiveDir%"
        :NoBackupFile


    :MoveToArchiveEnd


    echo ---------------------------------------------------------------------------


     


    參考資料



    Batch File Command Reference for Windows 2000
    http://labmice.techtarget.com/articles/batchcmds.htm


    Batch FOR loops
    http://www.robvanderwoude.com/index.html


    % (variable)


    %0          代表正在執行的這支 Batch 檔名
    %1 to %9    代表傳入的指令列參數

    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(3,556)

    • 個人分類:技術文件
    ▲top
    • 5月 19 週二 200903:41
    • 利用批次檔備份 DNS 資料(標準主要區)

    文章出處:Weithenn Study Daily
     
    【前言】
    若您所建立的 DNS Service 未跟 Active Directory 整合,則您建立的 DNS 為標準主要區,若是跟 Active Directory 整合則為 Active Directory 整合主要區,本文為說明備份 DNS 標準主要區。
  • DNS 未跟 AD 整合:標準主要區
  • DNS 跟 AD 整合:Active Directory 整合主要區

  • 如何備份 DNS 標準主要區?
  • 備份二處機碼 (Registry)

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS

  • 備份 .dns 檔案

    • C:\Windows\System32\DNS 下

    如何還原 DNS 標準主要區?
  • 停止 DNS Service
  • 匯入備份的機碼 (Registry)
  • 貼上所複製的 .dns 檔案至 C:\Windows\System32\DNS 下
  • 啟動 DNS Service

  • 【作業環境】
    Windows Server 2003
    【自動備份 DNS 實作】
    您可將下面內容貼至筆記本後存檔為 .bat 並配合排定的工作來達成自動備份 DNS 標準主要區資料的目的。
    實作、利用 xcopy、regedit 指令來自動備份 DNS 標準主要區
  • 匯出 DNS 機碼:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server
  • 匯出 DNS 機碼:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS
  • DNS 標準主要區備份來源: C:\WINDOWS\system32\dns
  • DNS 標準主要區備份至: D:\dns\當天日期\
  • 備份時 Log 寫入至: D:\log\reg\當天日期.log
  • 備份使用指令: xcopy /S (/S 複製每個目錄及其包含的子目錄,不複製空目錄)



  • rem ----- 將匯出機碼時間寫入 log 紀錄中 -----
    echo 開始匯出機碼及複製 .dns >> D:\log\reg\%date:~0,4%%date:~5,2%%date:~8,2%.log
    TIME /T    >> D:\log\reg\%date:~0,4%%date:~5,2%%date:~8,2%.log
    rem ----- 開始匯出機碼及複製 .dns -----
    rem /S 複製每個目錄及其包含的子目錄,不複製空目錄
    C:\WINDOWS\regedit.exe /e D:\dns\%date:~0,4%%date:~5,2%%date:~8,2%\DNS_Server.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server"
    C:\WINDOWS\regedit.exe /e D:\dns\%date:~0,4%%date:~5,2%%date:~8,2%\DNS.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS"
    xcopy C:\WINDOWS\system32\dns D:\dns\%date:~0,4%%date:~5,2%%date:~8,2%\ /S >> D:\log\reg\%date:~0,4%%date:~5,2%%date:~8,2%.log
    rem ----- 將結束匯出機碼及複製 .dns時間寫入 log 紀錄中 -----
    echo 結束匯出機碼及複製 .dns >> D:\log\reg\%date:~0,4%%date:~5,2%%date:~8,2%.log
    TIME /T    >> D:\log\reg\%date:~0,4%%date:~5,2%%date:~8,2%.log



    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(991)

    • 個人分類:技術文件
    ▲top
    • 5月 19 週二 200903:33
    • 利用bat 配合7-zip定期備份資料夾

    文章出處:Weithenn Study Daily
     
    排程於每天凌晨一點利用備份批次檔(webbk.bat),定期壓縮備份網頁目錄 (web01 ~ web05) 至 D:\Web_Backup 資料夾內,以下為 webbk.bat 內容說明:


     mkdir "%date:~0,4%%date:~5,2%%date:~8,2%"                                    //建立以日期命名的資料夾
    "C:\Program Files\7-Zip\7z.exe" a -t7z web01.7z "C:\Webroot\web01"            //壓縮指定資料夾
    "C:\Program Files\7-Zip\7z.exe" a -t7z web02.7z "C:\Webroot\web02"
    "C:\Program Files\7-Zip\7z.exe" a -t7z web03.7z "C:\Webroot\web03"
    "C:\Program Files\7-Zip\7z.exe" a -t7z web04.7z "C:\Webroot\web04"
    "C:\Program Files\7-Zip\7z.exe" a -t7z web05.7z "C:\Webroot\web05"
    move "D:\Web_Backup\*.7z" "D:\Web_Backup\%date:~0,4%%date:~5,2%%date:~8,2%"  //搬移所有的壓縮檔至指定的資料夾



    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(4,699)

    • 個人分類:技術文件
    ▲top
    • 5月 19 週二 200903:03
    • 7-Zip的命令列指令


    文章出處:簡睿隨筆 《科技篇》


    7z.exe的命令語法如下:


    7z 命令 [選項] 壓縮檔名 要處理的檔名列

    命令:有a,d,e,l,t,u, x等幾個命令。




































    aAdd將檔名列中的檔案加入壓縮檔-i (Include)
    -m (Method)
    -p (Set Password)
    -r (Recurse)
    -sfx (create SFX)
    -si (use StdIn)
    -so (use StdOut)
    -t (Type of archive)
    -u (Update)
    -v (Volumes)
    -w (Working Dir)
    -x (Exclude)
    dDelete將指定檔名由壓縮檔內移除

    -i (Include)
    -m (Method)
    -p (Set Password)
    -r (Recurse)
    -u (Update)
    -w (Working Dir)
    -x (Exclude)

    eExtract將指定檔名由壓縮檔中擷取出來

    -ai (Include archives)
    -an (Disable parsing of archive_name)
    -ao (Overwrite mode)
    -ai (Exclude archives)
    -i (Include)
    -o (Set Output Directory)
    -p (Set Password)
    -r (Recurse)
    -so (use StdOut)
    -x (Exclude)
    -y (Assume Yes on all queries)

    lList顯示壓縮檔案內的檔案資訊

    -ai (Include archives)
    -an (Disable parsing of archive_name)
    -ai (Exclude archives)
    -i (Include)
    -p (Set Password)
    -r (Recurse)
    -x (Exclude)

    tTest, 測試壓縮檔的完整性

    -ai (Include archives)
    -an (Disable parsing of archive_name)
    -ai (Exclude archives)
    -i (Include)
    -p (Set Password)
    -r (Recurse)
    -x (Exclude)

    uUpdate, 用較新的同名檔案更新壓縮檔內較舊的檔案

    -i (Include)
    -m (Method)
    -p (Set Password)
    -r (Recurse)
    -sfx (create SFX)
    -si (use StdIn)
    -so (use StdOut)
    -t (Type of archive)
    -u (Update)
    -w (Working Dir)
    -x (Exclude)

    xeXtract with full paths以完整路徑的格式解出檔案

    -ai (Include archives)
    -an (Disable parsing of archive_name)
    -ao (Overwrite mode)
    -ai (Exclude archives)
    -i (Include)
    -o (Set Output Directory)
    -p (Set Password)
    -r (Recurse)
    -so (use StdOut)
    -x (Exclude)
    -y (Assume Yes on all queries)


    範例:

    • 壓縮檔案:7z a -tzip archive.zip test1.txt test2.txt test3.txt
    • 刪除檔案:7z d archive.zip *.bak
    • 解壓縮到目前資料夾:7z e archive.zip
    • 解壓縮所有的.cpp檔案案件到指定資料夾:7z e archive.zip -oc:\soft *.cpp
    • 顯示壓縮檔內的資訊:7z l archive.zip
    • 依壓縮檔內的檔案路徑解壓縮到指定資料夾:7z x archive.zip -oc:\soft *.cpp
    更詳細的內容直接看到7-zip.chm即可。
    做了一點小測試:將資料夾內30個檔案大小共260,823,040 Bytes的檔案(SQL Server資料庫備份出的資料檔案),分別使用7-Zip、PkzipC、WinRAR 3.0
    壓縮,大小分別同下:

    • 7-Zip: 43,791,855 Bytes
    • WinRAR: 50,415,283 Bytes
    • PKZipC: 63,701,625 Bytes
    獲勝的是7-Zip。
    (繼續閱讀...)
    文章標籤

    felix 發表在 痞客邦 留言(0) 人氣(31,183)

    • 個人分類:技術文件
    ▲top
    12...4»

    自訂側欄

    自訂側欄

    個人資訊

    felix
    暱稱:
    felix
    分類:
    好友:
    累積中
    地區:

    熱門文章

    • (14,707)談論主題 [IIS] 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。
    • (3,556)如何透過 SQLCMD 程式和 T-SQL 指令備份 SQL 資料庫
    • (991)利用批次檔備份 DNS 資料(標準主要區)

    文章分類

    • 健康 (1)
    • 資訊安全 (1)
    • 理財&基金 (3)
    • 開懷一笑 (1)
    • 職場三兩事 (3)
    • 網路文章 (11)
    • 技術文件 (9)
    • 未分類文章 (1)

    最新文章

    • 談論主題 [IIS] 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。
    • MBTI 職業性格測試報告
    • 能夠一起飛,才是...人生最大的福氣
    • jQuery 教學 - 基礎篇
    • 『為什麼妳要道歉…?!』
    • 你是海螺嗎?
    • 如何透過 SQLCMD 程式和 T-SQL 指令備份 SQL 資料庫
    • 利用批次檔備份 DNS 資料(標準主要區)
    • 利用bat 配合7-zip定期備份資料夾
    • 7-Zip的命令列指令

    動態訂閱

    文章精選

    文章搜尋

    誰來我家

    參觀人氣

    • 本日人氣:
    • 累積人氣: