嘸蝦米 加字加詞檔

BQ; <blockquote><cite></cite></blockquote>
BR; <br />
CODE; <code></code>
HR; <hr />
MORE; <!--more-->
I; 愛妳啾^3^
IMG; <img src="" />
P; <p></p>
REF; <ref></ref>
SEP; <div class="sep">我是分隔線</div>
SPF; &nbsp;&nbsp;&nbsp;&nbsp;
SPAN; <span></span>

FDZ Direct External Link

// ==UserScript==
// @name           FDZ Direct External Link
// @description    FDZ Direct External Link
// @run-at document-end
// @include        http://forum.fdzone.org/viewthread.php?tid=*
// @include        http://forum.*.fdzone.org/viewthread.php?tid=*
// ==/UserScript==
var links=document.querySelectorAll("a[href*='j.php?u']");
for(var i=0;i<links.length;i++)
    links[i].href=decodeURIComponent(links[i].href.replace(/.*j.php\?u=/,''));

滑鼠左右鍵切換視窗

~LButton & RButton::AltTab

快速複製PasteCopy.NET全部清單

快速複製PasteCopy.NET全部清單
加速整理Wretch相簿連結 XD
editor.OpenFile("D:\\軟體\\PasteCopy\\Clipboard.txt",eeEncodingUTF8,eeOpenAllowNewWindow);
document.selection.Replace("^(Nt,)","",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace("R\\+,新類別\\n","",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace("(http://.*)$\\n","<a target=\"blank\" href=\"\\1\">\\1</a><br />\\n",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.SelectAll();
document.selection.Copy(eeCopyUnicode);
document.close();
  1. 開啟ClipBoard.txt
  2. RegExp取代^(Nt,)
  3. RegExp取代R\+,新類別\n
  4. 把網址替換成超連結>
  5. 全選
  6. 複製
  7. 關閉檔案

EmEditor Help: Macro Reference

查詢硬碟剩餘空間(using WinAPI)

using System.Runtime.InteropServices;
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
    out ulong lpFreeBytesAvailable,
    out ulong lpTotalNumberOfBytes,
    out ulong lpTotalNumberOfFreeBytes);

string drive = "D:\\";      // 要查詢剩餘空間的磁碟
ulong FreeBytesAvailable;
ulong TotalNumberOfBytes;
ulong TotalNumberOfFreeBytes;
bool success = GetDiskFreeSpaceEx(drive, out FreeBytesAvailable, out TotalNumberOfBytes, out TotalNumberOfFreeBytes);

if (!success)    throw new System.ComponentModel.Win32Exception();

double free_kilobytes = (double)(Int64)TotalNumberOfFreeBytes / 1024.0;
double free_megabytes = free_kilobytes / 1024.0;
double free_gigabytes = free_megabytes / 1024.0;

//取得Server IP
System.Net.IPAddress sever_ip = new System.Net.IPAddress(System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList[0].Address);
Response.Write(sever_ip.ToString() + " 剩餘 " + free_gigabytes.ToString("0.00") + " GB");

[C#]查詢硬碟剩餘空間(透過WinAPI) - .NET菜鳥自救會- 點部落
C# 如何取得本機(Server)的IP @ R~福氣拉! :: 隨意窩 Xuite日誌

Firefox tete009 PGO 安裝流程

雖然步驟很簡單,但是還是筆記一下,免得老來失憶。

  1. 先到tete009官網下載最新版的Firefox和Module binder for Private Build
  2. 上述兩樣檔案,都解壓縮至目前Firefox所安裝的資料夾
  3. 執行tbind.exe(依照你的系統環境優化模組)
  4. 第一次執行後,安裝Language packs
  5. 網址列輸入about:config
  6. Filter欄位輸入general.useragent.locale,修改語系成zh-TW
  7. 重新啟動Firefox
  8. 收工

Software - Tete's Atelier
Firefox想要更快?升級PGO+CPU指令集加速版 :: 綠色工廠 Easylife Blog

Rebinding events in jQuery after Ajax update (updatepanel)

function pageLoad(sender, args) {
    if (args.get_isPartialLoad()) {
        //Do something what you want.
    }
}

asp.net - Rebinding events in jQuery after Ajax update (updatepanel) - Stack Overflow

[FireGestures] Browser Position

使用寬螢幕(1920 x 1280)時,快速切換Browser位置至左、中、右,寬度為1280,高度為screen.availHeight

FireGestures.BrowserPosition = function (x) {
    window.resizeTo(1280, screen.availHeight);
    window.screenX = x;
    window.screenY = 0;
};
FireGestures.generatePopup(event,
    [
        { label: "Left" ,oncommand: "this.BrowserPosition(0);" },
        { label: "Center" ,oncommand: "this.BrowserPosition((screen.width - 1280)/2);" },
        { label: "Right" ,oncommand: "this.BrowserPosition(screen.width-1280);" }
    ]
);

FireGestures :: Make Scripts
FireGestures :: Get Scripts -> [Popup] Resize Window

[FireGestures] Copy Page URL to Clipboard (CLS URL)

改寫官方提供的Copy Page Title and URL to Clipboard,並加入多餘參數清除功能,方便貼在MSN
目前支援:
  • Youtube
  • RSS Source
  • Mobile01
  • Mobile01 貼圖區

const AS_HTML = true;

function htmlEscape(s) {
  s = s.replace(/&/g, "&amp;");
  s = s.replace(/>/g, "&gt;");
  s = s.replace(/</g, "&lt;");
  s = s.replace(/"/g, "&quot;");
  return s;
}
var l=window.content.location, tmp=l.href;
if(/(\?|&)utm_source.*/.test(tmp)) tmp=tmp.replace(/(\?|&)utm_source.*/i,'');
if((l.href.indexOf('youtube.com')!=-1) && (/(v=.{11})/.test(l.search))) tmp='http://www.youtube.com/watch'+l.search.replace(/.*(v=.{11}).*/i,'?$1');
if(/www\.mobile01\.com/.test(tmp)) tmp=tmp.replace(/&last=.*/,'');
if(/www\.mobile01\.com/.test(tmp) && /gallerydetail\.php/.test(tmp)) tmp=tmp.replace(/&fp=(\d{1})/,'');
var title = window.content.document.title;
var txt = AS_HTML ? '<a href="' + htmlEscape(tmp) + '">' + htmlEscape(title) + '</a>' : title + "\n" + tmp;
var clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
clipboard.copyString(txt);

FireGestures :: Get Scripts
相關文章:
delicious URL Clean

delicious URL Clean

加入delicious時,自動清除Youtube、Mobile01、RSS Source多餘參數

// ==UserScript==
// @name           delicious URL Clean
// @description    delicious URL Clean
// @author    NKid
// @version    2012-06-08
// @run-at document-end
// @include        http://delicious.com/save?url=*
// ==/UserScript==
var argUrl=/url=(.*)&title/.exec(decodeURIComponent(location.search))[1], tmp;
if(argUrl.indexOf('utm_source')!=-1){
    tmp=argUrl.replace(/(\?|&)utm_source.*/i,'');
}
else if((argUrl.indexOf('youtube.com')!=-1) && (/(feature|hd|NR|playnext|list|p)=.*?/.test(argUrl))){
    tmp='http://www.youtube.com/watch?' + argUrl.replace(/.*(v=.{11}).*/i,'$1');
}
else if(/www\.mobile01\.com/.test(argUrl) && /&fp=/.test(argUrl)) {
    tmp=argUrl.replace(/&fp=(\d{1})/,'');
}
else if((argUrl.indexOf('mobile01.com')!=-1) && (/&last=/.test(argUrl))){
    tmp=argUrl.substring(0,argUrl.indexOf('&last'));
}
if(tmp.length != 0) location.assign(location.pathname+'?url='+encodeURIComponent(tmp)+'&title'+location.search.replace(/\?url.*?&title/,''));

相關文章:
[FireGestures] Copy Page URL to Clipboard (CLS URL)

Improve your jQuery - 25 excellent tips

  1. Load the framework from Google Code
  2. Use a cheat sheet
  3. Combine all your scripts and minify them
  4. Use Firebug's excellent console logging facilities
  5. Keep selection operations to a minimum by caching
  6. Keep DOM manipulation to a minimum
  7. Wrap everything in a single element when doing any kind of DOM insertion
  8. Use IDs instead of classes wherever possible
  9. Give your selectors a context
  10. Use chaining properly
  11. Learn to use animate properly
  12. Learn about event delegation
  13. Use classes to store state
  14. Even better, use jQuery's internal data() method to store state
  15. Write your own selectors
  16. Streamline your HTML and modify it once the page has loaded
  17. Lazy load content for speed and SEO benefits
  18. Use jQuery's utility functions
  19. Use noconflict to rename the jquery object when using other frameworks
  20. How to tell when images have loaded
  21. Always use the latest version
  22. How to check if an element exists
  23. Add a JS class to your HTML attribute
  24. Return 'false' to prevent default behaviour
  25. Shorthand for the ready event

Improve your jQuery - 25 excellent tips

Create Shortcut URL

簡化下載檔案時,常會使用的動作流程

;建立URL(Win + V)
#v::
if WinActive("ahk_class CabinetWClass")    ;Explorer才執行
{
    strlen:=StrLen(Clipboard)    ;取得剪貼簿字串長度
    if(strlen > 0)
    {
        URL=%Clipboard%    ;從剪貼簿取得URL
        Send !d    ;焦點移至網址列 Alt + D
        Send ^c    ;Ctrl + C
        ClipWait 1    ;等待OS 1秒
        Send +{Tab}    ;取消焦點
        FileAppend,[InternetShortcut]`nURL=%URL%`nIconFile=`nIconIndex=1,%Clipboard%\URL.url
    }
}
Return
;複製URL(Win + C)
#c::
if WinActive("ahk_class CabinetWClass")    ;Explorer才執行
{
    Send !{Enter}    ;開啟內容
    WinWaitActive, 內容, , 1
    Send ^c    ;Ctrl + C
    ClipWait 1    ;等待OS 1秒
    Send !{F4}    ;關閉內容
}
Return
;反向選取(Win + A)
#a::
if WinActive("ahk_class CabinetWClass")    ;Explorer才執行
{
    Send {Alt}
    Send e
    Send i
}
Return
;滑鼠左右鍵切換視窗
~LButton & RButton::AltTab
;關閉主程式(Win + X)
#x::
ExitApp

定時重新整理網頁

// ==UserScript==
// @name          AutoReload
// @description   自動定時重新整理
// @include       http://elearning.npust.edu.tw/moodle/user/index.php?contextid=265782
// @version       2010-11-08
// ==/UserScript==
var infoBlock=document.createElement('p');
    infoBlock.style.position='absolute';
    infoBlock.style.top='10px';
    infoBlock.style.left='40px';
    infoBlock.style.fontSize='1.8em';
    infoBlock.innerHTML=1;
document.body.appendChild(infoBlock);
function AR(){
    var i=setInterval(function(){Info();},1000);
    setTimeout(function(){clearInterval(i);location.reload();},60*1000);
}
function Info(){
    infoBlock.innerHTML=parseInt(infoBlock.innerHTML,10)+1;
}
window.addEventListener('DOMContentLoaded',AR,false);

Places query URIs

找出最近新增已整理的Wretch相簿(20筆)
place:folder=BOOKMARKS_MENU&queryType=1&sort=12&maxResults=20&uri=http://www.wretch.cc/album&uriIsPrefix=true NOTE:
folder=BOOKMARKS_MENU → 書籤功能表
queryType=1 → 書籤(排除未排序書籤)
sort=12 → Sort by date added, most recent first.
maxResults=20 → 20筆資料
uri=http://www.wretch.cc/album → The URI to match.
uriIsPrefix=true → 過濾
Places query URIs - MDC Doc Center
Firefox書籤整理術:智慧書籤篇 - Mulberry的時間事件簿
Places query syntax • mozillaZine Forums
Places query URIs - MDC

Node.replaceChild()

var oldEle=document.querySelectorAll('#bigcontainer table')[2]; //Original Element
var newEle=document.createElement('div'); //New Element
oldEle.parentNode.replaceChild(newEle,oldEle);

Node.replaceChild - MDC Doc Center

Visual Studio 2008 中文字型

  1. OpenX:\Documents and Settings\Administrator\Application Data\Microsoft\VisualStudio\9.0
  2. 用任何文字編輯器打開VsFontLk.dat
  3. 找到0404|MingLiU|細明體
  4. 改成0404|Microsoft JhengHei|微軟正黑體
NOTE:
0404是16進制,對應10進制是1028,也就是繁體中文的lang id了。後面是字體。
解決Consolas在VS2008的中文顯示問題 - 黑暗執行緒

parseInt()

If the radix parameter is omitted, JavaScript assumes the following:
  • If the string begins with "0x", the radix is 16 (hexadecimal)
  • If the string begins with "0", the radix is 8 (octal). This feature is deprecated
  • If the string begins with any other value, the radix is 10 (decimal)

JavaScript parseInt() Function

字串補齊(padLeft)

padLeft function padLeft(str, lenght) {
    if (str.length >= lenght) return str;
    else return padLeft("0" + str, lenght);
}

PadLeft及PadRight @ 男丁格爾 in Xuite
convert '1' to '0001' in JavaScript - Stack Overflow

無法存取Application Data等資料夾

Windows 7 其實並沒有 Application Data 目錄,Application Data 對應路徑為 AppData\Roaming
或者可以使用環境變數
%USERPROFILE%
win 7 無法存取Application Data等資料夾

FDZ Article Link Clean

自動清除主題連結多餘參數,目前已整合至FDZ Keyword Hightlight
// ==UserScript==
// @name           FDZ Article Link Clean
// @description    FDZ Article Link Clean
// @include        http://forum.fdzone.org/forumdisplay.php?fid=99*
// @include        http://forum.*.fdzone.org/forumdisplay.php?fid=99*
// ==/UserScript==
var links=document.querySelectorAll('span[id^=thread] a');
for(var i=0;i<links.length;i++)
    links[i].href=links[i].href.replace(/&i.*/i,'');

NPUST Net Flow Check

這支程式的誕生,只是一個小小的念頭閃過
想說有時候用之前寫的『自動抓取流量排行榜(ASP.Net)』還是不夠快速
練練Javascript,順便把『click後,自動切換ip所在offsetTop』實作出來
// ==UserScript==
// @name           NPUST Net Flow Check
// @description    NPUST Net Flow Check
// @include        http://140.127.35.245/flowview/func/report/main_netflow_inout_theday_fast.php*
// ==/UserScript==
var osTop = new Array(); //記錄IP所在置位的offsetTop
var osTopSeq = 0; //預設顯示第幾筆位置,同時也用來記錄顯示至第幾筆位置
var trs = document.querySelectorAll('#maintable_netflow_inout > tbody > tr'); //表格內全部列
//切換位置
function movePos() {
    osTopSeq++;
    if (osTopSeq >= osTop.length) osTopSeq = 0;
    window.scrollTo(0, osTop[osTopSeq]);
}
for (var i = 1; i < trs.length; i++) {
    if (/140\.127\.22\.(228|234)/.test(trs[i].innerHTML)) {
        //記錄ip所在offsetTop
        osTop.push(trs[i].offsetTop);
        //Highlight
        for (var j = 0; j < trs[i].childNodes.length; j++)
            if (trs[i].childNodes[j].nodeType == 1) trs[i].childNodes[j].style.backgroundColor = 'red';
    }
}
//切換置預設位置
if (osTop.length != 0) window.scrollTo(0, osTop[0]);
//click表格可切換ip
document.getElementById('maintable_netflow_inout').addEventListener('click', movePos, false);

M01 Hightlight Today

修改自Mobile01 Today
用querySelectorAll和Regexp改寫後,程式碼大幅縮短

2011-03-09    M01改版

M01 Hightlight Today

M01 Gallery Tradition View Redirect

M01改版後,已不適用
// ==UserScript==
// @name           M01 Gallery Tradition View Redirect
// @description    M01 Gallery Tradition View Redirect
// @include        http://www.mobile01.com/gallerydetail.php*
// @include        https://www.mobile01.com/gallerydetail.php*
// ==/UserScript==
/*var links = document.links;
for(var i = 0; i < links.length; i++) {
    if (links[i].href.indexOf('topicdetail') != -1)
    {
        location.assign(links[i].href);
        break;
    }
}*/
location.assign(document.querySelector('a[href^="topicdetail.php"]').href);

M01 URL Redirect

// ==UserScript==
// @name           M01 URL Redirect
// @description    M01 URL Redirect
// @include        http://www.play01.com/*
// @include        http://www.shopping01.com/*
// @include        http://5i01.com/*
// ==/UserScript==
location.assign(location.href.replace(/(5i01|www\.play01|www\.shopping01)/i,'www.mobile01'));

M01 Auto Load Img

在參考過userscript.org中的Mobile01 image shower by wenjieMobile01 image shower by kclonline
又去翻了一下M01的原始碼,決定直接透過unsafeWindow直接呼叫原網頁函數,一行KO!!

Update : 2010/10/19
整合Auto Page後,自動載入圖片
// ==UserScript==
// @name           M01 Auto Load Img
// @description    Auto Load M01 Img
// @include        http://www.mobile01.com/topicdetail.php?f=*
// @include        https://www.mobile01.com/topicdetail.php?f=*
// ==/UserScript==
unsafeWindow.LoadAttachImage();
window.addEventListener("AutoPagerize_DOMNodeInserted", function(){unsafeWindow.LoadAttachImage();}, false);

unsafeWindow - GreaseSpot
[Greasemonkey] 使用UnsafeWindow呼叫原頁面函數或變動的方法

相關文章:
M01 Auto Page Fix Img

M01 Auto Page Fix Img

身為一位阿宅,常逛M01是天經地義的事,雖有AutoPagerize加持
但還是美中不足,遇上圖片多的文章還是不夠方便,故開發此script加強之,讚!!

// ==UserScript==
// @name           M01 Auto Page Fix Img
// @description    AutoPage後,自動載入圖片
// @include        https://www.mobile01.com/*
// @include        http://www.mobile01.com/*
// ==/UserScript==
var i = 0;
function AP(event) {
    var n = event.target;
    if (n.tagName == 'DIV') {
        if (i < document.getElementsByClassName('forum_content_main').length) {
            unsafeWindow.LoadAttachImage();
            i = document.getElementsByClassName('forum_content_main').length
        }
    }
}
window.addEventListener("DOMNodeInserted", AP, false);

Update : 2010/10/19
// ==UserScript==
// @name           M01 Auto Page Fix Img
// @description    AutoPage後,自動載入圖片
// @include        http://www.mobile01.com/topicdetail.php?f=*
// @include        https://www.mobile01.com/topicdetail.php?f=*
// ==/UserScript==
window.addEventListener("AutoPagerize_DOMNodeInserted", function(){unsafeWindow.LoadAttachImage();}, false);

DOM events - Wikipedia
Gecko-Specific DOM Events - MDC
event.target - MDC
element.addEventListener - MDC
Mobile01 image shower collocate with AutoPagerize

相關文章:
AutoPagerize DOM Event
M01 Auto Load Img

最新留言 (Sidebar, 留言欄)

Sidebar
<style>
    #RecentComments p { font-size:1em; }
    #RecentComments a.s { font-size:0.8em; }
</style>
<script type="text/javascript">
    function recentcomments(json) {
        var d = document.getElementById('RecentComments');
        var author, content, url;
        for (var i = 0, l = json.feed.entry.length; i < l; i++) {
            author = (json.feed.entry[i].author[0].name.$t == 'Anonymous') ? '你是誰' : json.feed.entry[i].author[0].name.$t;
            url = json.feed.entry[i].link[2].href;
            content = (json.feed.entry[i].title.$t.length > 14) ? json.feed.entry[i].title.$t.substring(0, 14) + '<a class="s" href="' + url + '">(略)</a>' : json.feed.entry[i].title.$t;
            var r = document.createElement('p');
            r.innerHTML = '<a href="' + url + '">' + author + '</a> 說: <br />' + content;
            d.appendChild(r);
        }
    }
</script>
<div id="RecentComments"></div>
<script src="/feeds/comments/default?max-results=5&alt=json-in-script&callback=recentcomments"></script>

留言欄
//方法1 (判斷nodeType等於TEXT_NODE)
var ca=document.getElementsByClassName('comment-author');
for(var i=0;i<ca.length;i++)
{
    for(var j=0;j<ca[i].childNodes.length;j++)
        if((ca[i].childNodes[j].nodeType ==3) && (ca[i].childNodes[j].nodeValue.indexOf('匿名') != -1))
            ca[i].childNodes[j].nodeValue=ca[i].childNodes[j].nodeValue.replace('匿名','不知道是誰');
}
//方法2 (使用textContent屬性,IE不支援)
var ca=document.getElementsByClassName('comment-author');
for(var i=0;i<ca.length;i++)
    if(ca[i].textContent.indexOf('匿名') != -1)
        ca[i].textContent=ca[i].textContent.replace('匿名','不知道是誰');

JSON Feeds - Beautiful Beta
Blogger Feed 大全 « Centrifuge
Abin's Tech Note: 「最新回應」模組 (Recent Comments)
XML DOM - Node Types

data URI scheme

Example:
取選下面這張圖片,然後右鍵「檢視選取範圍原始碼」

Fennec(Firefox for mobile)
Online Tools:
DataURLMaker | Sveinbjorn Thordarson
data: URI | dopiaza.org

data URI scheme
利用 Data URL 加速你的網頁
Img2DataURI « 男丁格爾's 脫殼玩
[IE8]運用Data URI技術加快網頁載入速度
淺嚐Data URI - 黑暗執行緒

重新介紹 JavaScript - MDC

&& 以及 || 運算子用的是「短路邏輯」(short-circuit logic),也就是說,第二個運算值是否會被執行靠的是第一個運算值。這用來在存取一個物件的屬性前檢查物件是否為空 (null) 非常有用:
var name = o && o.getName();
或是用來設預設值:
var name = otherName || "預設";
JavaScript 也有三元運算子 (tertiary operator),可以用來寫單行的條件陳述式:
var allowed = (age > 18) ? "是" : "否";
利用上述,便可以像下列一樣在陣列上做迴圈:
for (var i = 0; i < a.length; i++) {
    //處理 a[i]
}

這樣不是很有效率,因為每迴圈一次就會查詢一次 length 屬性。比較好的做法是:
for (var i = 0, len = a.length; i < len; i++) {
    //處理 a[i]
}

也可以使用while:
var i = arr.length; 
while (i--) {
a[i]
}

另外一個做迴圈的方法是用 for...in 迴圈。不過,假如有人用 Array.prototype 新增新的屬性,那些屬性也會被這種迴圈讀到:
for (var i in a) {
  //處理 a[i]
}

重新介紹 JavaScript - MDC

about:blank - Feenec

搭配FennecFox效果更佳!!

array.sort(compare function)

var KWs = ['1080', 'smg', 'MU', 'MEGAUPLOAD', 'MULTIUPLOAD', 'xuite', 'FB', 'FileBase', '多免空', 'JDOWNLOADER', '台版', '三區'];
function descStrLen(a, b) {
    if (a.length < b.length) return 1;
}
KWs.sort(descStrLen);

Random Array Sort
Sorting a JavaScript array using array.sort()
螞蟻的 JavaScript: Array:變動方法
sort - MDC

C# 控制項拖曳

control.AllowDrop = True;    //記得一定要開,否則下面程式都不會跑
private void control_DragDrop(object sender, DragEventArgs e)
{
    string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));
    foreach (string fileLoc in filePaths)
    {

    }
}
private void control_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Link;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }
}

Drag and Drop Text Files from Windows Explorer to your Windows Form Application
Visual Basic 2005 – 如何拖放圖片 @ 章立民研究室
4.5托曳事件 - Happy VB開心農莊

C# Debug

using System.Diagnostics;
Debug.Print("xxx");
Debug.WriteLine("xxx");

Debug 方法 (System.Diagnostics)

Javascript 數值、字串 資料型態

有數字的字串當中使用「 + 」號時,運算式則視它為字串,假如有「 – 」號或其它運算子,運算式則視它為數值。
x = "The answer is " + 50    //回傳值為 "The answer is 50"
y = 50 + " is the answer"    //回傳值為 "50 is the answer"
"50" - 5            //回傳值為 45(將字串型態的值轉換為數值型態)
"50" + 5            //回傳值為 505(將數值型態的值轉換為字串型態)
"50" - 0 + 5            //回傳直為 55(數值字串遇到-0(減零)會先轉變成數值型態)

JavaScript1.5 資料型態(Datatype)

FDZ Title Keyword Hightlight

2010-10-04    基本架構完成
2010-10-05    使用GM API存取關鍵字
2010-10-06    使用GM_addStyle修正Inline stylesheet所引起的多次取代
2010-10-10    使用array.sort(compare function),自動排列關鍵字,字數較多者優先
2010-12-26    程式更名『FDZ Title Keyword Hightlight』
2011-03-05    文章描述加入搜尋
2011-03-09    加入開啟連結於新分頁和GUI

// ==UserScript==
// @name    FDZ Title Keyword Hightlight
// @description    自動高亮文章標題關鍵字
// @author    nightkid@FDZ
// @version    2011-03-09
// @include    http://forum.fdzone.org/forumdisplay.php?fid=*
// @include    http://forum.*.fdzone.org/forumdisplay.php?fid=*
// ==/UserScript==
GM_registerMenuCommand('FDZ Title Keyword Hightlight - Setting Keywords', settingKeywords);
GM_registerMenuCommand('FDZ Title Keyword Hightlight - Keywords List', listKeywords);
GM_registerMenuCommand('FDZ Title Keyword Hightlight - Open Link in New Tab', openNewTab);
//GM_registerMenuCommand('FDZ Title Find RegExp - DEL', DEL);
GM_addStyle('.GM_gotit {color:#000;background-color:#FBED73;-moz-border-radius:3px;padding:0 2px;}');    //Highlight Keyword Style
GM_addStyle('#GM_newtab {-moz-border-radius: 3px; color: #000000; cursor: pointer; font-size: 10px; height: 10px; position: fixed; right: 3px; top: 3px; width: 10px;} .GM_newtabOn {background-color: #00FF00} .GM_newtabOff {background-color: #FF0000}');    //NewTab State
/*function DEL() {GM_deleteValue("keywords");}*/

//setting Keywords
function settingKeywords() {
    var KWs = (decodeURI(GM_getValue("keywords")) == 'undefined') ? '' : decodeURI(GM_getValue("keywords"));
    var newKWs = prompt('Please Enter the Keywords.\n(use commas to separate)', KWs).split(',');
    newKWs.sort(descStrLen);
    GM_setValue("keywords", encodeURI(newKWs.join()));
    refreshPage();
}
//list Keywords
function listKeywords() {
    var listKWs = decodeURI(GM_getValue("keywords")).split(',');
    alert(listKWs.join('\n'));
}
//Open articles in new tab
function openNewTab() {
    GM_setValue("newtab", confirm("Open articles in new tab?"));
    refreshPage();
}
//sort function (by string length)
function descStrLen(a, b) {
    if (a.length < b.length) return 1;
}
//Message Refresh Page
function refreshPage() {
    alert('Please Refresh Page.');
}
function main() {
    var KWs = decodeURI(GM_getValue('keywords')).split(',');    //keywords array
    var titles = document.querySelectorAll('span[id^=thread_]');    //all articles' title
    var descs=document.querySelectorAll("[id^='desc_']");    //all articles' description
  
    //new tab state
    var tar=GM_getValue('newtab');
    var newtabState = document.createElement("div");
    newtabState.id="GM_newtab";
    newtabState.title="Open articles in newtab ?";
    newtabState.className=(tar)?"GM_newtabOn":"GM_newtabOff";
    document.getElementsByTagName("body")[0].appendChild(newtabState);
    document.getElementById('GM_newtab').addEventListener('click',function(){GM_setValue("newtab", 1-GM_getValue("newtab")); refreshPage(); },false);
  
    var i, j, k, r, titleStr, descStr;
    //先把KeyWord轉換成RegExp
    var rKWs = new Array(); //RegExp KeyWords
    for (k = 0; k < KWs.length; k++) {
        r = new RegExp('(' + KWs[k] + ')', 'ig');
        rKWs[k] = r;
    }
    for (i = 0; i < titles.length; i++) {
        //取出文章標題超連結的文字
        titleStr = titles[i].childNodes[0].innerHTML;
        //比對關鍵字
        for (j = 0; j < rKWs.length; j++) {
            if (rKWs[j].test(titleStr)) titleStr = titleStr.replace(rKWs[j], '<span class=\"GM_gotit\">$1</span>');
        }
        titles[i].childNodes[0].innerHTML = titleStr;
        titles[i].childNodes[0].target=(tar)?"_blank":"";
    }
    for (i = 0; i< descs.length; i++) {
        //取出文章描述的文字
        descStr = descs[i].innerHTML;
        //比對關鍵字
        for (j = 0; j < rKWs.length; j++) {
            if (rKWs[j].test(descStr)) descStr = descStr.replace(rKWs[j], '<span class=\"gotit\">$1</span>');
        }
        descs[i].innerHTML = descStr;
    }
}
main();

Note:
把字串陣列,轉換成RegExp陣列
var Strs = ['aa', 'bb', 'cc', 'dd', 'ee'];
var rStrs = new Array(); //用來存放轉換完的RegExp
for (i = 0; i < Strs.length; i++) {
    t = new RegExp('(' + Strs[i] + ')', 'i');
    rStrs[i] = t;
}

Greasemonkey Manual:API - GreaseSpot
修改 Textarea Backup 支援中文
GreaseMonkey的User Script Command怎麼使用?
Core Object - 正規表達式物件(RegExp Object) | JavaScript
MEMO-用Javascript RegExp將<x>置換成<span class="x"> - 黑暗執行緒
JavaScript join() Method
JavaScript split() Method

文章超連結出現<、> (HTML Special Characters)

如果超連結出現<、>,在發佈文章時會出現錯誤
依照下列步驟,即可解決!!
  1. 切換至『撰寫』模式
  2. 選取超連結,點選『連結』功能,貼上網址
或是使用HTML Encoder
HTML 4.0 Special Entities

FDZ Post Img(List)

開啟新頁,並列出文章裡所有外連圖片
點擊圖片即可重新讀取圖片

javascript: (function () {
    var img = document.querySelectorAll("div[id^=postmessage] img"),
        tmp = '';
    for (var i = 0; i < img.length; i++) {
        if (img[i].src.indexOf(location.host) == -1) tmp += '<img onclick=\"this.src=this.src + \'?\'+new Date().getTime();\" style=\"border:1pt solid #000;margin:5px 0;padding:5px\" src=\"' + img[i].src + '\"><br>';
    }
    var n = window.open('', '').document;
    n.open();
    n.write(tmp);
    n.close();
})()

FDZ Post Img(List)
Note:
img.src=img.src+'?'+new Date().getTime(); //強制重新載入圖片,略過cache
強制重新載入圖片 | CFSOHO BLOG

For...In Statement

for (variable in object) {
    code to be executed
}

Note: The code in the body of the for...in loop is executed once for each element/property.

FDZ ScrollTo Attach

// ==UserScript==
// @name           FDZ ScrollTo Attach
// @description    開啟主題後,自動捲動至附件
// @include        http://forum.*.fdzone.org/viewthread.php?tid=*
// @include        http://forum.fdzone.org/viewthread.php?tid=*
// ==/UserScript==
function doit()
{
    window.scrollTo(0,document.getElementsByClassName('t_attachlist')[0].offsetTop);
}
window.addEventListener ("DOMContentLoaded", doit, false);

Note: window.addEventListener ("load", doSomething, false); //load事件的觸發要等網頁全部圖片、檔案下載完畢才會執行
window.addEventListener ("DOMContentLoaded", doSomething, false); //DOMContentLoaded事件的觸發不必等到圖片、檔案等下載完畢,就會執行
window.scrollTo(0,element.offsetTop); //垂直捲動網頁至element
DOMContentLoaded

Blogger 文章、回覆總數

<script>
function totalArticles(json) {
    var tA = document.createElement('p');
    tA.appendChild(document.createTextNode('文章總數 : ' + json.feed.openSearch$totalResults.$t));
    document.getElementById('HTML1').appendChild(tA);
}

function totalComments(json) {
    var tC = document.createElement('p');
    tC.appendChild(document.createTextNode('回覆總數 : ' + json.feed.openSearch$totalResults.$t));
    document.getElementById('HTML1').appendChild(tC);
}
</script>
<script src="/feeds/posts/default?alt=json-in-script&callback=totalArticles&&max-results=0" type="text/javascript"/></script>
<script src="/feeds/comments/default?alt=json-in-script&callback=totalComments&&max-results=0" type="text/javascript"/></script>

計算 Blog 的文章總數和回應總數
版面 Script更新‧Ⅴ
JSON Feeds

Google字典

在網頁中選取所要查詢的字串,再點擊本Bookmarklet
即可把所選取字串丟至Google字典查詢
P.S.連input、textarea都通吃了

javascript: (function () {
    function getInputText() {
        var it = document.getElementsByTagName('input');
        for (var i = 0; i < it.length; i++) {
            if (it[i].type == 'text') {
                var startPos = it[i].selectionStart;
                var endPos = it[i].selectionEnd;
                if (startPos == endPos) {
                    return 0;
                }
                return it[i].value.substring(startPos, endPos);
            }
        }
        return 0;
    }
    function getTextarea() {
        var ta = document.getElementsByTagName('textarea');
        for (var j = 0; j < ta.length; j++) {
            if (ta[j].selectionStart != ta[j].selectionEnd) return ta[j].value.substring(ta[j].selectionStart, ta[j].selectionEnd);
        }
        return 0;
    }
    var s = document.getSelection();
    if (s.length == 0) s = getInputText();
    if (s == 0) s = getTextarea();
    if (s == 0) s = prompt('Enter a vocabulary.', '');
    if (s.length != 0) window.open('http://www.google.com.tw/dictionary?aq=f&langpair=en|zh-TW&q=' + s + '&hl=zh-TW');
})()

Google字典

全域Google, Yahoo字典查詢

#g::    ;定義按 Win + G 鍵,啟用 Google 字典
    Clipboard =     ;清空剪貼簿
    Send, ^c    ;送出 Ctrl + C
    strlen:=StrLen(Clipboard)    ;取得剪貼簿字串長度
    if(strlen > 0)
    {
        ClipWait, 1    ;等待OS,剪貼簿等待1秒
        Run , firefox.exe "http://www.google.com.tw/dictionary?aq=f&langpair=en|zh-TW&hl=zh-TW&q=%Clipboard%"
    }
Return
#y::    ;定義按 Win + Y 鍵,啟用 Yahoo 字典
    Clipboard =     ;清空剪貼簿
    Send, ^c    ;送出 Ctrl + C
    strlen:=StrLen(Clipboard)    ;取得剪貼簿字串長度
    if(strlen > 0)
    {
        ClipWait, 1    ;等待OS,剪貼簿等待1秒
        Run , firefox.exe "http://tw.dictionary.yahoo.com/dictionary?p=%Clipboard%"
    }
Return

FileBase.to Skip

// ==UserScript==
// @name           FileBase.to
// @description    自動抓取下載連結
// @include        http://filebase.to/files/*
// ==/UserScript==
if (document.getElementById('dl_free3'))
    document.forms[0].submit();
if (document.getElementById('captcha'))
    document.forms[0].submit();
if (document.getElementsByTagName('form')[0].action.indexOf('#') == -1)
    prompt('Done.', document.getElementsByTagName('form')[0].action);

Click Rex

/****************************************************
 * Copyright (c) 2010, NKid. All Rights Reserved.  
 * PROJECT:Click Rex                               
 * DESCRIPTION:全自動背景傳送MSN來電震動                         
 * VERSION:2                                       
 ****************************************************/
#x::    ;按下win + x執行程式
    SetCapsLockState, off    ;把CapsLock設為關
    TrayTip, Click Rex, Turn On, 1    ;顯示開始訊息
    Loop
    {
        ;按下CapsLock即停止程式
        if GetKeyState("CapsLock", "T") {
        TrayTip, Click Rex, Turn Off, 1
        SetCapsLockState, off
        Break 
          }
    SetTitleMatchMode,2
    ControlClick ,x130 y487,rexob7w
    ;Click    ;按左鍵
    ;Send, ...{enter}
    Sleep 10
    }

使用Bookmarklet開啟新視窗並寫入原始碼

  1. 把所要寫入的原始碼進行Compress HTML
  2. 壓縮後,把HTML屬性的雙引號(")取代成
    \"
  3. 接著,再把javascript裡的換行符號(\n)取代成
    \\n
  4. 補充,javascript裡的反斜線(\)取代成
    \\
  5. 置入here的部份
    var n = window.open("", "").document, c;
    c = "here";
    n.open();
    n.write(c);
    n.close();
  6. 取代完成後,把上述步驟所有程式碼使用Bookmarklet Builder製成Bookmarklet

Note:
  • HTML使用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <title></title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        </head>
        <body>
      
        </body>
    </html>
  • javascript撰寫部份使用單引號
  • 步驟2、3、4皆在處理跳脫字元,可寫成巨集

Multiple commands in cmd

字元語法定義
& [...]Command1 &Command2在一個命令列上,用來分割多個命令。Cmd.exe 會執行第一個命令,然後,再執行第二個命令。
&& [...]Command1 &&Command2唯有 && 符號前面的命令成功時,才執行該符號之後的命令。Cmd.exe 會執行第一個命令,並且只有當第一個命令完全成功時,才會執行第二個命令。
|| [...]Command1 || Command2唯有 || 前的命令失敗時,才執行 || 之後的命令。Cmd.exe 會執行第一個命令,並且只有當第一個命令未成功完成 (接收到大於 0 的錯誤字碼) 時,才執行第二個命令。
( ) [...](Command1 & Command2)用於組合或巢狀處理多個命令。
;,Command1 Parameter1;Parameter2用於分割命令參數。

命令殼層概觀
Solved: multiple commands in CMD?
How to Group Multiple Commands in cmd.exe

變更Firefox介面樣式 (userChrome.css)

  1. 開啟Profile\chrome\
  2. 複製userChrome-example.css為userChrome.css
  3. 鍵入 *{font-family:Microsoft JhengHei !important; font-size: 1em !important;}
    /*拿掉功能表按鈕預設字串*/
    #appmenu-button .button-text {display:none !important;}
    /*功能表按鈕換上自訂字串*/
    #appmenu-button .button-box .box-inherit:before {content: "NKid";color: white;}
    /*拿掉功能表按鈕箭頭符號*/
    #appmenu-button .button-menu-dropmarker {display: none !important;}
  4. 重新啟動Firefox

Windows cmd Consolas 字型

  1. 先 chcp 65001 切到 UTF-8
  2. 在 cmd.exe 的內容裡,利用「字型」頁籤,選擇 Consolas 字型
  3. 按「確定」關閉「內容」視窗,儲存成為適用於全部
  4. 重新開啟 cmd.exe,切到「內容」的「版面設定」頁籤,隨便修改一個值
  5. 按「確定」關閉「內容」視窗,儲存成為適用於全部
  6. 重新開啟 cmd.exe,下 chcp 950 指令
  7. 開啟「內容」,此時會位於「版面設定」頁籤,修改成原來的值,但不要切到任何別的頁籤
  8. 按「確定」關閉「內容」視窗,儲存成為適用於全部
  9. 重新啟動 cmd.exe,完成。
這應該是利用到了 cmd.exe 的漏洞:若是「字型」這一個頁籤,沒有被開啟,則不會修正字型的設定。

因此,我們先利用第 4 步,讓「內容」的頁籤「定位」在「版面設定」裡,切回 codepage 950 之後,重新啟動「內容」,此時頁籤是在「版面設定」,而不是「字型」,修改設定值後存檔,再關閉 cmd.exe,就可以把 codepage 的設定,連同版面設定,但不含字型設定,給儲存起來。

Consolas in Windows Console

DIR

顯示檔案清單以列出目錄中的檔案及子目錄。

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]]  [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              指定要顯示的磁碟機、目錄或檔案。

  /A          依照指定的檔案屬性來顯示檔案。
  attributes   D  目錄                R  唯讀檔
               H  隱藏檔              A  保存檔
               S  系統檔案            -  無意義
               L  重新分析點          -  首碼表示否定
  /B          使用單純格式 (沒有標頭資訊或摘要)。
  /C          顯示檔案大小千位數分隔符號。這是預設值。使用 /-C 來停用
              分隔符號的顯示。
  /D          與寬的列表格式相同,但是依照欄來排序。
  /L          使用小寫顯示。
  /N          使用新的長列表格式,檔名會顯示在最右方。
  /O          依照指定的排序順序來列出檔案。
  sortorder    N  依名稱 (英文字母)   S  依大小 (最小的在前)
               E  依副檔名 (英文字母) D  依照日期與時間 (日期較早的在前)
               G  先列出子目錄        -  表示相反的順序
  /P          當資料填滿整個螢幕時暫停顯示。
  /Q          顯示檔案擁有者。
  /R          顯示檔案的替代資料流。
  /S          顯示指定目錄及所有子目錄中的檔案。
  /T          指定用來顯示或排序的時間欄位
  timefield   C  建立
              A  上次檔案存取時間
              W  上次寫入檔案時間
  /W          使用寬的列表格式。
  /X          顯示對非 8.3 格式的檔案產生的短檔名。這個格式和 /N 相同,
              但是短檔名會插入在長檔名之前。如果沒有長檔名存在,該處會
              顯示空白。
  /4          顯示四位數的年份

參數可能會在 DIRCMD 環境變數預先設定。您可以在任何參數使用連字號字首(-)
來覆蓋預先的設定--例如: /-W。

輸出資料夾檔案及目錄名稱至List.txt
DIR /B /OG > List.txt

ROBOCOPY


-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                             
-------------------------------------------------------------------------------
              使用方式 :: ROBOCOPY source destination [file [file]...] [options]

             source :: 來源目錄 (drive:\path 或 \\server\share\path)。
        destination :: 目的地目錄  (drive:\path 或 \\server\share\path)。
               file :: 要複製的檔案  (名稱/萬用字元: 預設值是 "*.*")。

::
:: 複製選項 :
::
                 /S :: 複製子目錄,但是空的子目錄例外。
                 /E :: 複製子目錄,包括空的子目錄。
             /LEV:n :: 只複製來源目錄的前 n 層。

                 /Z :: 在可重新啟動模式複製檔案。
                 /B :: 在備份模式複製檔案。
                /ZB :: 使用可重新啟動模式; 如果拒絕存取,則使用備份模式。
            /EFSRAW :: 在 EFS RAW 模式複製所有加密檔案。

  /COPY:copyflag[s] :: 要為檔案複製什麼內容 (預設值是 /COPY:DAT)。
                       (複製旗標: D=資料、A=屬性、T=時間戳記)。
                       (S=安全性=NTFS ACL、O=擁有者資訊、U=稽核資訊)。

           /DCOPY:T :: 複製目錄時間戳記。

               /SEC :: 複製包含安全性的檔案 (相當於 /COPY:DATS)。
           /COPYALL :: 複製所有檔案資訊 (相當於 /COPY:DATSOU)。
            /NOCOPY :: 不複製檔案資訊 (可用於 /PURGE)。

            /SECFIX :: 修正所有檔案的安全性,即使略過的檔案也包含在內。
            /TIMFIX :: 修正所有檔案的檔案時間,即使略過的檔案也包含在內。

             /PURGE :: 刪除來源已經不存在的目的地檔案/目錄。
               /MIR :: 鏡像樹狀目錄 (相當於 /E 加 /PURGE)。

               /MOV :: 移動檔案 (複製後從來源刪除)。
              /MOVE :: 移動檔案和目錄 (複製後從來源刪除)。

     /A+:[RASHCNET] :: 將指定的屬性新增至複製的檔案。
     /A-:[RASHCNET] :: 從複製的檔案移除指定的屬性。

            /CREATE :: 只建立樹狀目錄和長度為零的檔案。
               /FAT :: 只使用 8.3 FAT 檔案名稱,建立目的地檔案。
               /256 :: 關閉特長路徑 (> 256 個字元) 支援。

             /MON:n :: 監視來源; 看到 n 個字元以上時再次執行。
             /MOT:m :: 監視來源; m 分鐘後如果變更,則再次執行。

      /RH:hhmm-hhmm :: 執行時數 - 新複本可以開始的時間。
                /PF :: 根據每一個檔案為基礎,檢查執行時數 (不是根據每一次通過)。

             /IPG:n :: 慢速線路可用頻寬,封包之間的差距 (毫秒)。

                /SL :: 複製符號連結與目標。

            /MT[:n] :: 以 n 個執行緒執行多執行緒複製 (預設值為 8)。
                       n 必須至少為 1,但不可以大於 128。
                       此選項與 /IPG 和 /EFSRAW 選項不相容。
                       使用 /LOG 選項重新導向輸出,以獲得更好的效能。

::
:: 檔案選取選項 :
::
                 /A :: 只複製已設定保存屬性的檔案。
                 /M :: 只複製包含保存屬性的檔案並重設。
    /IA:[RASHCNETO] :: 只包含附帶任何指定屬性的檔案。
    /XA:[RASHCNETO] :: 排除附帶任何指定屬性的檔案。

 /XF file [file]... :: 排除符合指定名稱/路徑/萬用字元的檔案。
 /XD dirs [dirs]... :: 排除符合指定名稱/路徑的目錄。

                /XC :: 排除變更的檔案。
                /XN :: 排除較新的檔案。
                /XO :: 排除較舊的檔案。
                /XX :: 排除其他檔案和目錄。
                /XL :: 排除孤立的檔案和目錄。
                /IS :: 包含相同的檔案。
                /IT :: 包含調整的檔案。

             /MAX:n ::檔案大小上限 - 排除大於 n 個位元組的檔案。
             /MIN:n :: 檔案大小下限 - 排除小於 n 個位元組的檔案。

          /MAXAGE:n :: 檔案期限上限 - 排除 n 日/日期之前的檔案。
          /MINAGE:n :: 檔案期限下限 - 排除 n 日/日期之後的檔案。
          /MAXLAD:n :: 上次存取日期上限 -排除自 n 日後未使用的檔案。
          /MINLAD:n :: 上次存取日期下限 - 排除自 n 日後使用的檔案。
                       (如果 n < 1900 則 n = n 日,否則 n = YYYYMMDD 日期)。

                /XJ :: 排除交叉點。(一般會預設包含)。

               /FFT :: 使用 FAT 檔案時間 (2 秒精細度)。
               /DST :: 補償 1 小時 DST 時差。

               /XJD :: 排除目錄的交叉點。
               /XJF :: 排除檔案的交叉點。

::
:: 重試選項:
::
               /R:n :: 失敗複本的重試次數: 預設值是 1 百萬次。
               /W:n :: 重試之間等候時間: 預設值是 30 秒。

               /REG :: 將 /R:n 和 /W:n 儲存至登錄中,變成預設值。

               /TBD :: 等候共用名稱。即將定義 (重試錯誤 67)。

::
:: 記錄選項:
::
                 /L :: 限清單 - 不複製、刪除任何檔案或加上戳記。
                 /X :: 報告所有其他檔案,不僅是這些選取的檔案而已。
                 /V :: 產生詳細資訊輸出,顯示略過的檔案。
                /TS :: 在輸出中包含來源檔案時間戳記。
                /FP :: 在輸出中包含檔案的完整路徑名稱。
             /BYTES :: 將大小列印成位元組。

                /NS :: 沒有大小 - 不記錄檔案大小。
                /NC :: 沒有類別 - 不記錄檔案類型。
               /NFL :: 沒有檔案清單 - 不記錄檔案名稱。
               /NDL :: 沒有目錄清單 - 不記錄目錄名稱。

                /NP :: 無進度 - 不顯示複製百分比。
               /ETA :: 顯示複製的檔案預估到達時間。

          /LOG:file :: 輸出狀態至記錄檔 (覆寫現有的記錄檔)。
         /LOG+:file :: 輸出狀態至記錄檔 (附加至現有的記錄檔)。

       /UNILOG:file :: 輸出狀態至記錄檔,變成 UNICODE (覆寫現有的記錄檔)。
      /UNILOG+:file :: 輸出狀態至記錄檔,變成 UNICODE (附加至現有的記錄檔)。

               /TEE :: 輸出至主控台視窗,以及記錄檔。

               /NJH :: 沒有工作標頭。
               /NJS :: 沒有工作摘要。

           /UNICODE :: 輸出狀態為 UNICODE。

::
:: 工作選項:
::
       /JOB:jobname :: 從命名的工作檔案取得參數。
      /SAVE:jobname :: 將參數儲存至命名的工作檔案
              /QUIT :: 處理命令列後結束 (檢視參數)。
              /NOSD :: 未指定來源目錄。
              /NODD :: 未指定目的地目錄。
                /IF :: 包含以下檔案。

Windows7 開機片

可用於無法進入OS,使用指令(XCOPY、ROBOCOPY)救援
  1. 使用安裝片開機
  2. 進入選單後
  3. 按下Shift + F10

一抹淺藍部落格 - Windows 7 的開機片 [信手拈來版]

製作透明背景ICO

  1. 使用PhotoImpact編輯圖片
  2. 新增圖像時,背景要選透明
  3. 儲存成png檔
  4. 使用Aveicon轉換成ico檔

Google Docs Viewer

網頁中的超連結如有包含.doc、.pdf、.tiff、.ppt、.docx、.pptx、.xls、.xlsx、.svg
將自動上色且點擊後使用Google Docs Viewer開啟
javascript: (function () {
    var link = document.links;
    for (var i = 0; i < link.length; i++) {
        if (/\.(doc|pdf|tiff|ppt|docx|pptx|xls|xlsx|svg)$/i.test(link[i].href)) {
            link[i].href = 'http://docs.google.com/viewer?url=' + encodeURIComponent(link[i].href);
            link[i].target = '_blank';
            link[i].style.backgroundColor = '#00CC00';
            link[i].style.color = '#FFF';
            link[i].style.fontWeight = 'bold';
        }
    }
})()

Google Docs Viewer
範例網頁
RegExp Object可以直接引用
/\.(doc|pdf|tiff|ppt|docx|pptx|xls|xlsx|svg)$/i.test(link[i].href)
View PDFs With Google Docs Viewer Bookmarklet [Update: Greasemonkey Script]
Bookmarklet for "Google Docs Viewer"