jQuery ajax Error

$(function() {
$(document).ajaxError(function(event, xhr, status, thrown) {
console.log(thrown.message);
console.log(status.url);
console.log(xhr.status);
});
$.post("nonexist.html", function(data) {
console.log(data);
});
});
view raw ajaxError.js hosted with ❤ by GitHub

Get QueryString parameters

// Method 1
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
// Method 2
var urlParams;
(window.onpopstate = function () {
var match,
pl = /\+/g, // Regex for replacing addition symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
query = window.location.search.substring(1);
urlParams = {};
while (match = search.exec(query))
urlParams[decode(match[1])] = decode(match[2]);
})();
// Method 3
function QueryString(name) {
var AllVars = window.location.search.substring(1);
var Vars = AllVars.split("&");
for (i = 0; i < Vars.length; i++) {
var Var = Vars[i].split("=");
if (Var[0] == name) return decodeURIComponent(Var[1]);
}
return "";
}
view raw demo.js hosted with ❤ by GitHub

將圖片製作成網頁,並建成Android桌面捷徑

  1. 將圖片編碼成base64
  2. 以Data URI的方式,製作成網頁
    <html>
    <head>
    <meta charset="UTF-8">
    <title>
    MRT MAP
    </title>
    </head>
    <body>
    <img src="data:image/png;base64,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">
    </body>
    </html>
    view raw gistfile1.html hosted with ❤ by GitHub
  3. 將網頁檔放置手機
  4. 使用Firefox開啟該網頁檔,並長按網址列選擇新增至裝置主畫面

Search in xml (with xmlns)

Dim xmlDoc As New XmlDocument
xmlDoc.Load("D:\Web.config")
Dim strXPath As String = "//ns:configuration/ns:appSettings/ns:add[@key='Money']" 'XPath節點位置
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(xmlDoc.NameTable)
nsmgr.AddNamespace("ns", "http://schemas.microsoft.com/.NetConfiguration/v2.0")
Dim xmlFoundNode As XmlNode = xmlDoc.DocumentElement.SelectSingleNode(strXPath, nsmgr) '符合XPath的全部節點
txtContent.Text = xmlFoundNode.Attributes("value").Value
view raw gistfile1.vb hosted with ❤ by GitHub

using WebClient login and scraping other page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Using wc As New WebClientWithCookie
Try
'略過SSL
System.Net.ServicePointManager.ServerCertificateValidationCallback = _
New Net.Security.RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
Dim para As New NameValueCollection
para.Add("screen", "login")
para.Add("username", "admin")
para.Add("password", "testpwd")
para.Add("action", "Login")
wc.Encoding = Encoding.UTF8
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded")
Dim bResult() As Byte = wc.UploadValues("https://127.0.0.1/Login", para)
'Response.Write(Encoding.UTF8.GetString(bResult))
'Response.Flush()
Dim strTmp As String = wc.DownloadString("https://127.0.0.1/View")
Response.Write(strTmp)
Response.Flush()
Catch ex As Exception
Response.Write(ex.InnerException)
End Try
End Using
End Sub
Private Function ValidateServerCertificate(ByVal sender As Object, ByVal certificate As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyerrors As Net.Security.SslPolicyErrors) As Boolean
Return True
End Function
Public Class WebClientWithCookie
Inherits WebClient
Private cc As New CookieContainer()
Private lastPage As String
Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest
Dim R = MyBase.GetWebRequest(address)
If TypeOf R Is HttpWebRequest Then
With DirectCast(R, HttpWebRequest)
.CookieContainer = cc
If Not lastPage Is Nothing Then
.Referer = lastPage
End If
End With
End If
lastPage = address.ToString()
Return R
End Function
End Class
view raw demo.vb hosted with ❤ by GitHub

圖片組合、串接

垂直連接圖片
convert -append *.jpg out.jpg
montage -mode concatenate -tile 1x *.jpg out.jpg

水平連接圖片
convert +append *.jpg out.jpg
montage -mode concatenate -tile x1 *.jpg out.jpg

縮圖+排版
montage *.jpg -tile 1x -geometry 1024x+0+0 output.jpg

geometry: 縮圖大小跟邊界(設成x+0+0表示不縮圖)
tile: 排版成 X×Y 張

view raw cmd.md hosted with ❤ by GitHub

IMG convert to TAR

  1. 使用tar打包
  2. 使用md5sum 加入md5

刷了CWM再刷回原廠Recovery - Android 台灣中文網 - Android(安卓,安致)討論區 - Powered by Discuz! How to Convert .img Recovery to .tar.md5 Flashable File (Windwos) - W0lfDroid [Tool][[windows] Make CWM Recovery .img's into .tar.md5 odin flash-able files 1 CLICK - xda-developers

SQL Paging

ROW_NUMBER Function (MS SQL 2005+)
DECLARE @rowsPerPage int,
@startNum int,
@endNum int,
@pageIndex int
SET @pageIndex = 1
SET @rowsPerPage = 10
SET @startNum = @rowsPerPage * @pageIndex
SET @endNum = @startNum + @rowsPerPage
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY AccountID) 'RowNum',AccountID,FullName
FROM Member
) AS NewTable
WHERE RowNum >= @startNum AND RowNum <= @endNum
view raw gistfile1.sql hosted with ❤ by GitHub
Temp Table
CREATE PROCEDURE [dbo].[SP_CUST_SQL_Paging]
@pageIndex int
AS
BEGIN
DECLARE @rowsPerPage int,
@startNum int,
@endNum int
SET @rowsPerPage = 10
SET @startNum = @rowsPerPage * @pageIndex
SET @endNum = @startNum + @rowsPerPage
IF OBJECT_ID('tempdb..#tmpTable') IS NOT NULL
DROP TABLE #tmpTable
CREATE TABLE #tmpTable (
[ROWNUM] int IDENTITY(1,1),
[id] [text] NULL,
[name] [varchar](50) NULL,
)
INSERT INTO #tmpTable ([id],[name])
SELECT *
FROM [Members]
ORDER BY postdate DESC
--SELECT COUNT(ROWNUM) 'TotalCount' FROM #tmpTable
SELECT id,name
FROM #tmpTable
WHERE ROWNUM > @startNum AND ROWNUM <= @endNum
DROP TABLE #tmpTable
END
GO
view raw gistfile1.sql hosted with ❤ by GitHub

Sublime Text Packages

  • BracketHighlighter
  • Emmet
  • EncodingHelper
  • IMESupport
  • jQuery
  • JsFormat
  • Package Control
  • Theme - Flatland
  • Theme - Soda
  • Theme - Spacegray
  • Tomorrow Color Schemes

String.prototype.smartShort()

String.prototype.smartShort = function(len) {
var smartStr = [];
var count = 0;
for (var i = 0; i < this.length; i++) {
if (count > len) {
smartStr.push('...');
break;
} else if (count === len) {
smartStr.push('....');
break;
}
if (/[^\x00-\xff]/.test(this.charAt(i))) {
count = count + 2;
} else {
count = count + 1;
}
smartStr.push(this.charAt(i));
};
return smartStr.join('');
}
console.log('Audi New A3 Sportback 1.8 TFSI'.smartShort(10));
console.log('獨領前衛風潮 掀背再出擊'.smartShort(10));
console.log('1996年的奧迪A3車系'.smartShort(10));
//Audi New A....
//獨領前衛風....
//1996年的奧....
view raw gistfile1.js hosted with ❤ by GitHub

Samsung Driver Without Install

  1. 使用7z解壓縮SAMSUNG_USB_Driver_for_Mobile_Phones_x.x.x.x.exe
  2. 手機進入Download Mode
  3. 使用USB線,接上電腦 (會顯示"Gadget Serial" 裝置)
  4. 選擇剛解壓縮出來的資料夾,當作驅動資料夾來源
  5. 安裝完成

[18.07.2013 LATEST] Samsung USB Drivers for Mobile Phones 1.5.27.0 [Win 8/7/XP] | ADB & Fastboot - Android Software - MoDaCo

xda Post Calculate Elapsed Days

Before:

After:

// ==UserScript==
// @name [XDA] Site Helper
// @description 回文標記幾天前
// @author NKid
// @version 2013-08-09
// @include http://forum.xda-developers.com/showthread.php?*
// @include http://forum.xda-developers.com/showpost.php?p=*
// ==/UserScript==
Date.prototype.toLongDateTimeString = function() {
return (this.getFullYear() + '/' + (this.getMonth() + 1) + '/' + this.getDate() + '&nbsp;&nbsp;' + padLeft(this.getHours(), 2) + ':' + padLeft(this.getMinutes(), 2));
}
function padLeft(nr, n, str) {
return Array(n - String(nr).length + 1).join(str || '0') + nr;
}
function elapsedDays(dtStartDay) {
var dtNow = new Date();
var dtToday = new Date();
var intTotalDay, intY, intM, intD, strTime = '';
dtToday.setFullYear(dtNow.getFullYear(), dtNow.getMonth(), dtNow.getDate());
intTotalDay = parseInt((dtToday - dtStartDay) / 86400000, 10);
intY = Math.floor(intTotalDay / 365);
intM = Math.floor((intTotalDay - intY * 365) / 30);
intD = (intTotalDay - intY * 365 - intM * 30);
if (intY > 0) strTime = intY + '年 ';
if (intM > 0) strTime += intM + '個月 ';
if (intD > 0) strTime += intD + '天';
return strTime;
}
function chkStringDayName(n) {
return !/Today|Yesterday/.test(n);
}
function convertPostDate(eles) {
for (var i = 0; i < eles.length; i++) {
if (chkStringDayName(eles[i].textContent)) {
var strPostDate = eles[i].textContent.replace(/th|st|nd|rd|,/g, '');
var dtPostDate = new Date(strPostDate);
var intElapsedDays = elapsedDays(dtPostDate)
var strTmp = dtPostDate.toLongDateTimeString() + '&nbsp;&nbsp;(' + intElapsedDays + ')';
eles[i].innerHTML = strTmp;
}
}
}
function convertLastEdit(eles) {
for (var i = 0; i < eles.length; i++) {
var strLastEdit = /;\s(.*)<span\sclass=\"time\">(.*)<\/span>\./.exec(eles[i].innerHTML);
var dtLastEdit = new Date(strLastEdit[1].replace(/th|st|nd|rd|at/g, '') + ' ' + strLastEdit[2]);
if (chkStringDayName(strLastEdit)) {
var intElapsedDays = elapsedDays(dtLastEdit)
var strTmp = '&nbsp;&nbsp;' + dtLastEdit.toLongDateTimeString() + '&nbsp;&nbsp;(' + intElapsedDays + ')';
eles[i].innerHTML = eles[i].innerHTML.replace(strLastEdit[0], strTmp);
}
}
}
convertPostDate(document.querySelectorAll('.postDate'));
convertLastEdit(document.querySelectorAll('.lastEdited'));
window.addEventListener("AutoPagerize_DOMNodeInserted", function(e) {
convertPostDate(e.target.querySelectorAll('.postDate'));
convertLastEdit(e.target.querySelectorAll('.lastEdited'));
}, false);
view raw gistfile1.js hosted with ❤ by GitHub

Microsoft ASP.NET AJAX UpdatePanel

//pageLoad is executed after every postback, synchronous or asynchronous.
//pageLoad is a reserved function name in ASP.NET AJAX that is for this purpose.
function pageLoad(sender, args) {
alert('Ajaxed');
}
// beginRequest 事件會在非同步回傳的處理開始之前,以及回傳傳送到伺服器之前引發。
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
function BeginRequestHandler(sender, args) {
alert('Request Begin');
console.log(args.get_postBackElement()) //觸發元件
}
//在完成非同步回傳,並將控制項傳回到瀏覽器之後,便會引發 endRequest 事件。
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler() {
alert('Request End');
}
view raw gistfile1.js hosted with ❤ by GitHub

PageRequestManager 事件 ASP.NET AJAX > Overview > ASP.NET AJAX Client Life-Cycle Events asp.net ajax - How to have a javascript callback executed after an update panel postback? - Stack Overflow

MediaScannerService wakelocks

問題:SD卡裡面有壞掉的圖檔,導致系統一直重讀,而lock住。
解法:
  1. 刪除壞掉圖檔
  2. 設定 -> 應用程式 -> 全部 -> 媒體儲存空間
  3. 清除資料、清除快取
  4. 重新開機

[心得分享]解決圖片庫造成的android.process.media一直強佔CPU使用率100%的問題 MediaScannerService wakelocks Media Scanner Service is an annoying little *BLEEP*

BetterBatteryStats (Root)

  1. 安裝BetterBatteryStats
  2. 設定Advanced -> Root features打勾
  3. 放電1-4小時
  4. 觀察Partial Wakelocks,找出耗電app

[APP][2.1+] BetterBatteryStats [某魚]找出耗電原因補充之補完 - 詳解 BetterBatteryStats

Parameter組合SQL WHERE IN

Dim sb As New StringBuilder
Dim strTmp As String = String.Empty
For i As Integer = 0 To aryDeptID.Length - 1
strTmp = strTmp + "@param" + i.ToString + ","
Next
sb.AppendLine(" SELECT AccountID ")
sb.AppendLine(" FROM tb_Members ")
sb.AppendLine(" WHERE DeptID IN (")
sb.Append(strTmp.TrimEnd(","))
sb.Append(")")
cmd = dbConn.GetSqlStringCommand(sb.ToString)
For i As Integer = 0 To aryDeptID.Length - 1
dbConn.AddInParameter(cmd, "@param" + i.ToString, DbType.String, aryDeptID(i))
Next
dtDeptAcc = dbConn.ExecuteDataSet(cmd).Tables(0)
view raw gistfile1.vb hosted with ❤ by GitHub

解決ASP.NET的SqlCommand,利用SqlParameter來下SQL指令"Where In"的問題 - F6 Team- 點部落

js String.format

if (!String.prototype.format) {
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined' ? args[number] : match;
});
};
}
view raw gistfile1.js hosted with ❤ by GitHub

JavaScript equivalent to printf/string.format - Stack Overflow

TimerExist

註1:可搭配這款stopwatch使用。
註2:GLOBAL interval可調整偵測頻率(預設3秒/次)。
#F1::
GLOBAL winTitle
GLOBAL counter = 0
GLOBAL interval = 3
WinGetTitle, winTitle, A
TrayTipTime(,"【" winTitle "】監視中")
ControlSend, , rs, Stop Watch
t := interval * 1000
SETTIMER, chkExist, %t%
RETURN
chkExist:
{
counter++
IfWinNotExist %winTitle%
{
calcElapsedTime()
ControlSend, , t, Stop Watch
MSGBOX 【 %winTitle% 】 視窗已關閉.`n`n%counter%
SETTIMER , chkExist, OFF
RETURN
}
}
calcElapsedTime()
{
totalSec := counter * interval
M := totalSec // 60
S := totalSec - M * 60
counter = Elapsed Time : %M% min. %S% sec.
}
TrayTipTime(Title="", Text="", Time=1500, Style=0)
{
TrayTip, %Title%, %Text%,, %Style%
SetTimer, TrayTipRemove, %Time%
Return
TrayTipRemove:
TrayTip
SetTimer, TrayTipRemove, Off
Return
}
view raw gistfile1.ahk hosted with ❤ by GitHub

系統已開機時間

@ECHO OFF
FOR /F "delims=" %%a IN ('SYSTEMINFO ^| FIND "系統存留時間"') DO ECHO %%a
PING -n 3 127.0.0.1 > NUL

UNION ALL vs UNION

  • UNION ALL 和 UNION 不同 之處在於 UNION ALL 會將每一筆符合條件的資料都列出來,無論資料值 有無重複。 
  • SQL1 union SQL2 : SQL1+SQL2 後的資料會自動重新排序, 且 SQL1 與 SQL2 的重複資料只顯示一筆。
  • SQL1 union all SQL2: SQL1+SQL2 後資料不會自動重新排序, 且 SQL2 資料直接銜接到 SQL1 資料之後, 也就是 SQL1 與 SQL2 可以有重複資料。
SQL UNION ALL - 1Keydata SQL語法教學 昭佑.天翔: Oracle PL/SQL 的 union 與 union all 這兩種聯集的比較

RegExp Match All

RegExp.prototype.execAll = function(string) {
var match = null;
var matches = new Array();
while(match = this.exec(string)) {
var matchArray = [];
for(i in match) {
if(parseInt(i) == i) {
matchArray.push(match[i]);
}
}
matches.push(matchArray);
}
return matches;
}
// Example
var someTxt = 'abc123 def456 ghi890';
var results = /[a-z]+(\d+)/g.execAll(someTxt);
// Output
// [
// ["abc123", "123"],
// ["def456", "456"],
// ["ghi890", "890"]
// ]
view raw gistfile1.js hosted with ❤ by GitHub

How can I match multiple occurrences with a regex in JavaScript similar to PHP's preg_match_all()? - Stack Overflow

Firefox Memory Cache

browser.cache.disk.capacity: 0

browser.cache.disk.enable: false

browser.cache.memory.enable: true

browser.cache.memory.capacity: 128000
註:KB 為單位

privacy.clearOnShutdown.cache: false
註:要設為 false 才可以回存

[備忘] 設定 Firefox 17 Cache Memory | Kenmingの鮮思維

Download.ashx

Dim strFileName As String = "demo.txt"
Dim strFilePath As String = System.Web.HttpContext.Current.Server.MapPath("UploadFiles\") & strFileName
context.Response.ClearHeaders()
context.Response.Clear()
context.Response.Expires = 0
context.Response.Buffer = True
context.Response.AddHeader("Accept-Language", "zh-tw")
context.Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(strFileName))
context.Response.ContentType = "application/octet-stream"
context.Response.WriteFile(strFilePath)
context.Response.End()
view raw gistfile1.vb hosted with ❤ by GitHub

php環境設定 (使用Built-in web server)

  1. 下載Windows 5.4.14 Binaries Releases
  2. 解壓縮至C:\php
  3. 設定環境變數%php% → C:\php
  4. 設定php.inidate.timezone = Asia/Taipei
  5. 使用Built-in web server PHP -S Localhost:8000 -t X:\web | START http://Localhost:8000 -S <addr>:<port> Run with built-in web server.
    -t <docroot>     Specify document root <docroot> for built-in web server.

[folder] Jpg90

@ECHO OFF
SET PATH="D:\JpgTools\ImageMagick"
SET PATH=%PATH%;C:\WINDOWS\system32
FOR %%i IN ("%~1\*.jpg") DO (
convert -quality 90 "%%~i" "%%~i"
ECHO %%~nxi
)
PING 127.0.0.1 -n 3 -w 1000 >NUL
view raw gistfile1.bat hosted with ❤ by GitHub

StringBuffer (js字串連接效能問題)

function StringBuffer () {
this._strings_ = new Array();
}
StringBuffer.prototype.append = function(str) {
this._strings_.push(str);
};
StringBuffer.prototype.toString = function() {
return this._strings_.join("");
};
view raw gistfile1.js hosted with ❤ by GitHub

你不得不知道的關於JavaScript 中字符串連接的性能問題 - 黃明恩 - 博客園

Batch Delay(Wait, Sleep) (批次檔延遲)

ping 127.0.0.1 -n 5 -w 1000 > nul
The Will Will Web | 如何在批次檔(Batch)中實現 sleep 命令讓任務暫停執行 n 秒

Visual Studio 環境設定

devenv.exe /nosplash
環境 → 一般 → 動畫環境工具 → 取消勾選
環境 → 一般 → 啟動 → 啟動時 → 顯示空白環境
專案和方案 → 在方案總管中追蹤現用項目 → 取消勾選
文字編輯器 → 追蹤修訂 → 取消勾選
The Will Will Web | 加快 Visual Studio 執行速度與提升工作效率

Wordsmith (bookmarklet)

javascript: (function() {
var el = document.createElement('div'),
b = document.getElementsByTagName('body')[0],
msg = '';
el.id = 'jq-nk-mod';
el.style.position = 'fixed';
el.style.height = '30';
el.style.width = '200';
el.style.margin = '5px';
el.style.top = '0';
el.style.left = '0';
el.style.padding = '5px';
el.style.backgroundColor = '#F99';
el.style.color = '#000';
el.style.borderRadius = '5px';
el.style.zIndex = 1001;
el.innerHTML = msg;
getScript('http://code.jquery.com/jquery.min.js', function() {
if(typeof jQuery == 'undefined') {
msg = 'Sorry, but jQuery wasn\'t able to load';
showMsg();
} else {
getScript('http://getwordsmith.co/downloads/wordsmith.min.js?v=1.01', function() {
jQuery('body').wordsmith({
maxWordLength: 600,
popupWidth: 800,
popupHeight: 300,
lookupMessage: '查詢這單字的解釋',
lookupUrl: 'http://translate.google.com.tw/#auto/zh-TW/{word}'
});
msg = 'Wordsmith';
showMsg();
});
}
});
function getScript(url, success) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0],
done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function() {
if(!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
done = true;
success();
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
function showMsg() {
el.innerHTML = msg;
b.appendChild(el);
window.setTimeout(function() {
if(typeof jQuery == 'undefined') {
b.removeChild(el);
} else {
jQuery(el).fadeOut('slow', function() {
jQuery(this).remove();
});
if(otherlib) {
$jq = jQuery.noConflict();
}
}
}, 2500);
}
})();
view raw gistfile1.js hosted with ❤ by GitHub

Wordsmith [jQ]Wordsmith 1.01 | 男丁格爾's 脫殼玩

Check Overflow (檢查元素是否有捲軸)

function isOverflowed(element) {
return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;
}
view raw gistfile1.js hosted with ❤ by GitHub

javascript css check if overflow - Stack Overflow

EnableDelayedExpansion

EnableDelayedExpansion
batch 變數陷阱 @ 味味A cmd - windows batch SET inside IF not working - Stack Overflow

MD5 HASH

MD5 HASH
MD5 and SHA1 File Checksum Calculcator - B# .NET Blog

Transparentizing Window (透明化視窗)

  • Win + 滾輪上:增加透明度
  • Win + 滾輪下:減少透明度
  • Win + O:還原正常
  • 註:排除桌面透明化

Transparentizing Window

How To Change Window Transparency in Windows 7 with a Hotkey

Detect 64bit OS (判斷64bit作業系統)

IF @ProcessorArch = "X64" Then
    Msgbox(0,"Demo","X64")
Else
    Msgbox(0,"Demo","X86")
EndIf
EXIT

How to detect a 64-Bit OS - General Help and Support - AutoIt Forums

TaiTrain

嗯...不說明...就這樣

/*
javascript: (function(
) {})()
*/
var doc = document.getElementsByTagName('frame')[2].contentDocument;
var gn = function(n) {
return doc.getElementsByName(n)[0]
};
var sv = function(n, v) {
gn(n).value = v;
};
var ds = function(n) {
var _this = gn(n),
i = 0;
switch(n) {
case 'getin_date':
i = _this.options.length - 4;
break;
case 'getin_date2':
i = _this.options.length - 2;
break;
}
_this.selectedIndex = i;
};
sv('person_id', 'N124306618'); //身份證字號
sv('from_station', '100'); //起站代碼
sv('to_station', '185'); //到站代碼
sv('train_no', '524'); //[去]車次代碼
sv('order_qty_str', '1'); //[去]訂票張數
ds('getin_date'); //[去]乘車日期
sv('train_no2', '326'); //[回]車次代碼
sv('order_qty_str2', '1'); //[回]訂票張數
ds('getin_date2'); //[回]乘車日期
gn('ctno2').submit();
view raw gistfile1.js hosted with ❤ by GitHub

Determine identity column (判斷識別規格欄位)

IF ((SELECT OBJECTPROPERTY( OBJECT_ID(N'table_name_here'), 'TableHasIdentity')) = 1)
    PRINT 'Yes'
ELSE
    PRINT 'No'

sql server - How do you determine what SQL Tables have an identity column programatically - Stack Overflow

HashBytes (MD5、SHA1)

Right(UPPER(sys.fn_VarBinToHexStr(HashBytes('md5', '123password456'))),32);
好用的 MS SQL 2005 欄位字串加密應用 ( MD5 與 SHA1 ) - IT X 4- 點部落

Command Prompt Here (在此處開啟命令視窗)

REG ADD "HKLM\Software\Classes\Folder\Shell\Cmd Here\command" /f /t REG_SZ /ve /d "cmd.exe /k cd %1" REG ADD "HKLM\Software\Classes\Folder\Shell\Cmd Here\command" /f /t REG_SZ /ve /d "cmd.exe /k pushd %1" Note:以batch執行時,請將%1更改為%%1
Add Command Prompt Here Shortcut to Windows Explorer
Add Command prompt here to right-click menu in Windows XP

Driver Signing (驅動程式簽署)

Local $HLMPolicy = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Driver Signing","Policy")
Local $HLMNPolicy = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Non-Driver Signing","Policy")
Local $HCUPolicy = RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Driver Signing","Policy")
Local $HCUBOFV = RegRead("HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows NT\Driver Signing","BehaviorOnFailedVerify")
Local $c=MsgBox(3,"Driver Signing","(HLM) Driver Signing: " & $HLMPolicy & @LF & "(HLM) Non-Driver Signing: " & $HLMNPolicy & @LF & "(HCU) Driver Signing: " & $HCUPolicy & @LF & "BehaviorOnFailedVerify: "& $HCUBOFV)
If $c = 6 Then
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Driver Signing","Policy","REG_BINARY",Binary('0x' & '00'))
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Non-Driver Signing","Policy","REG_BINARY",Binary('0x' & '00'))
    RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Driver Signing","Policy","REG_DWORD","00000000")
    RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows NT\Driver Signing","BehaviorOnFailedVerify","REG_DWORD","00000000")
ElseIf $c = 7 Then
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Driver Signing","Policy")
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Non-Driver Signing","Policy")
    RegDelete("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Driver Signing","Policy")
    RegDelete("HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows NT\Driver Signing","BehaviorOnFailedVerify")
EndIf
EXIT

Driver signing registry values cannot be modified directly in Windows
程式只能讀取作狀態判斷
雖然可以寫值進去,但還是無效
需從“我的電腦 →內容 → 硬體 → 驅動程式簽署 → 略過”進行手動更改才有效
自動模擬版(XP)
$title = "系統內容"
Run("control.exe sysdm.cpl")
WinWaitActive($title)
ControlCommand($title, "", "SysTabControl321", "TabRight", "")
ControlCommand($title, "", "SysTabControl321", "TabRight", "")
ControlClick($title, "驅動程式簽署(&S)", "Button4")
ControlClick("驅動程式碼簽署選項", "略過 - 直接安裝軟體,不需要我的同意(&I)","Button1")
ControlClick("驅動程式碼簽署選項", "確定","Button5")
ControlClick($title, "確定", "Button8")

Aut2Exe (編譯au3為EXE執行檔)

"C:\Program Files\AutoIt3\Aut2Exe\Aut2Exe.exe" /in %1 /out "%~dpn1.exe" /comp 4 /unicode

S3 feature.xml

<CscFeature_Contact_EnableCallButtonInList>true</CscFeature_Contact_EnableCallButtonInList><CscFeature_Camera_ShutterSoundMenu>true</CscFeature_Camera_ShutterSoundMenu>

S3 Samsung Chinese IME

  1. Extract Stock Rom
  2. Save fileapp\SamsungChineseIME_HKTW_Phone.apk
  3. Save filelib\libjni_secime.so
  4. Copy into your SGS3 and permissions to 644.system\app\SamsungChineseIME_HKTW_Phone.apk
  5. Copy into your SGS3 and permissions to 644.system\lib\libjni_secime.so
  6. Reboot.

S3 Extract Stock Rom

  1. Download Stock Rom  (Region:BRI)
  2. Extract the firmware zip to get .tar or .tar.md5 file.
  3. Use sgs2toext4 to convert .img files to ext4.img.
  4. Use DiskInternals Linux Reader to mount ext4.img.
  5. Get anything what you want.

Samsung Galaxy S3 Secret Codes

工程模式
*#197328640#
[2]>[2]>[4](出廠日期)

工程測試
*#0*#

版本
*#1234#
ap → kernel版本
cp → 基頻,通訊模組的韌體或稱之為modem/baseband/ap/radio
csc → Firmware地區資料(台名/APN/語言等等),加入TGY與BRI的CSC地區資料,才能正確顯示中文電信商名稱與正確的APN設定

Android 電池校正 (root)

  1. 將手機接上充電器
  2. 等待手機充電至100%
  3. 將手機上從充電器拔開,停止充電
  4. 按取Battery Calibration(電池校正)的按鈕
P.S.(建議但非必要)
電池校正後,將手機用至1%,再接上充電器不中斷的直接充電至100%,以建立1~100%的正確電量電池資訊。

Battery Calibration - Google Play Android 應用程式

ADB Backup (without root)

adb shell pm list packages
adb shell pm disable <com.package.name>
adb backup -apk nexti.android.bustaipei -f "E:\taipeibus.ab"
adb backup -apk com.goodmooddroid.gesturecontrol -f "E:\GMD.ab"


adb backup [-system|-nosystem] -all [-apk|-noapk] [-shared|-noshared] -f <檔案名稱>

[-system|-nosystem]
這個指令是告訴adb 在備份時是否要連同系統一起備份
若沒有打的話 預設是-system 表示會一起備份系統
注意!若連系統一起備份 在還原的時候會覆蓋系統檔案 對於已經升級後的手機是非常不好的
我不知道在沒有ROOT的情況下 adb是否有權限去還原系統檔案 但就算如此 還是不建議這樣做
因此 -nosystem是建議一定要打上的指令

-all
這個指令除非只是要備份單一APP 不然是一定要打上去的
這個是問你是否要備份全部的APP 若有加上-nosystem的指令
那麼他就只會備份你目前已經安裝上去的APP 而不會連系統APP一起備份

[-apk|-noapk]
預設是-noapk 這個的意思是是否連安裝的APK一起備份
若為-noapk 則只會備份APK的資料檔(像是遊戲存檔 設定 之類的)
但我會建議連APK一起備份 因為這樣才不會有版本衝突的問題

[-shared|-noshared]
預設是-noshared 這個會問你是否連手機儲存空間或是SD卡的檔案一起備份
我是不知道若有APP安裝在SD卡上的時候 沒打這指令是否會略過
但若大部分的APP都安裝在內務空間的話 這個就可以不用打了
(註:HTC有保留一個名為com.android.sharedstoragebackup的APK
這個APK會將SD卡或是手機空間的資料都備份 因此除非使用-nosystem指令
否則對於HTC手機來說 不管有無打-shared 手機空間的資料一定會備份)

-f <檔案名稱>
這個是指定備份完之後 要存在電腦的哪個地方
不過記得要打檔名 而副檔名則一定要打.ab
這個我會在後面實作的部分會再做說明


(7/29更新)免ROOT! 使用adb來備份手機程式(ICS以上限定) (第1頁) - HTC (Android) - Mobile01

Firefox Portable Run Multiple Instances (portableapps.com)

  1. Copy "\FirefoxPortable\Data\settings\FirefoxPortableSettings.ini" to "\FirefoxPortable"  (the same folder with FirefoxPortable.exe)
  2. Add content and saveAllowMultipleInstances=false
  3. Creating a shortcut to "FirefoxPortable.exe" with startup parameters "-no-remote"

檢視主題 - [問題]雙開 firefox (portable firefox 與本機 firefox 並全的方法) • MozTW 討論區

List all the columns in a table

List all the columns in a table
sql - How do I list all the columns in a table? - Stack Overflow

MyHotKey

  • Press ESC twice to close current window.
  • Press middle button in Expolorer to go parent folder. 
  • Press hold LButton and Press RButton to open quick menu.
  • Press MButton in taskbar to mute.
  • Win + Wheel down, window to minimize.
  • Win + Wheel up, window to maximize.
  • Win + MButton, Pin on top.
  • Win + NumpadAdd, Increase the transparency of the active window.
  • Win + NumpadSub, Decrease the transparency of the active window.
  • Win + Numpad0, Reset the transparency of the active window.
  • Win + V, Pure text.
  • Win + X, Exit App.
  • Win + S, Folder "MySoftware".
  • Win + G, Greenshot.
  • Win + C, Copy file/folder path.
  • Win + N, NotePad++.
  • Win + T, Paste FormatTime "yyMMddHHmmss".
  • Win + Q, Quick App Menu.
  • Win + E, Open My Computer without folder list.
  • Win + W, Resize the active window to 800x600.
  • Win + LButton, Move the active window without having to click on the title bar.

網路伺服器當機造成使用者開啟檔案總管無反應

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"NoNetCrawling"=dword:00000001

網路伺服器當機使用者開啟本機檔案反應都會很慢 - iT邦幫忙::IT知識分享社群

Youtube Popup Player

Youtube Popup Player Youtube Popup Player

Firefox如果無法彈出,請設定about:config
browser.link.open_newwindow.restriction
值:整數 (Integer)
新連結開啟於分頁或新視窗

Random js array

Random js array
How to randomize a javascript array? - Stack Overflow

Object.keys()

Object.keys()
Object.keys 函式 (JavaScript)
keys - JavaScript | MDN

Object.create()

Object.create()
Object.create Function (JavaScript)
Object.create - JavaScript | MDN

Javascript 編程風格

  • 大括號
    • 表示區塊起首的大括號,不要另起一行。因為Javascript會自動添加句末的分號,導致一些難以察覺的錯誤。
  • 圓括號
    • 調用函數的時候,函數名與左括號之間沒有空格。
    • 函數名與參數序列之間,沒有空格。
    • 所有其他語法元素與左括號之間,都有一個空格。
  • 不要省略句末的分號。
  • 使用"嚴格相等"(===)運算符,取代"相等"(==)運算符。
  • 全區變數,採用大寫表示。
  • 建構式函數名,採用首字母大寫;其他函數名,一律首字母小寫。
  • 總是使用大括號表示區塊。

Javascript編程風格 - 阮一峰的網絡日志

SqlDataSource使用IF…ELSE

威筆記: SqlDataSource設計模式中SelectCommand使用If…Else條件

javascript 偏方怪法

string repeat join, split 應用
JavaScript字符串操作的偏方怪法 - Ider - 博客園

0.1+0.2 != 0.3

0.1+0.2 != 0.3 javascript一些小技巧 - 916122797 - 博客園

javascript 遍歷正則式結果

javascript 遍歷正則式結果 javascript一些小技巧 - 916122797 - 博客園

javascript 物件導向

//不建議使用
//new Object
var person = new Object();
person.name = 'Tom';
person.age = 25;
person.sayHi = function() {
console.log('Hi, I am ' + this.name + '.');
};
//Factory Paradigm
function createPerson(name, age) {
var o = new Object();
o.name = name;
o.age = age;
o.sayHi = function() {
console.log('Hi, I am ' + o.name + '.');
};
return o;
}
var person1 = createPerson('Tom', 20);
var person2 = createPerson('Joe', 21);
//如有共用的方法,建議加在prototype中
//Object Literal
var person = {
name: 'Tom',
age: 25,
sayHi: function() {
console.log('Hi, I am ' + this.name + '.');
}
};
//Constructor Paradigm
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHi = function() {
console.log('Hi, I am ' + this.name + '.');
};
}
var person1 = new Person('Tom', 20);
var person2 = new Person('Joe', 21);
//Hybrid Constructor / Prototype Paradigm
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHi = function() {
console.log('Hi, I am ' + this.name + '.');
};
view raw OOP.js hosted with ❤ by GitHub
JavaScript 物件導向的寫法
JavaScript 物件導向介紹 | MDN

SQL Joins

Coding Horror: A Visual Explanation of SQL Joins
SQL 教學 » Join (連接) - SQL Tutorial

Rotate Img

Rotate Image
無通信的圖像旋轉 | JS Mix

Javascript Array methods

[1, 2, 3, 4].forEach(console.log);
/*
1 0 [ 1, 2, 3, 4 ]
2 1 [ 1, 2, 3, 4 ]
3 2 [ 1, 2, 3, 4 ]
4 3 [ 1, 2, 3, 4 ]
*/
[1, 2, 3, 4].forEach(function(item, index, array) {
console.log();
});
/*
1
2
3
4
*/
view raw forEach.js hosted with ❤ by GitHub
every()--------在陳例的每個元素上運行給定函數,如果給定函數對每個項都返回true,則返回true
filter()---------在陣列的每個元素上運行給定函數,並返回包含令給定函數返回true的那些元素
forEach()------在陣列的每個元素上運行給定函數,該方法沒有返回值
map()---------在陣列的每個元素上運行給定函數並返回每次給定函數的返回值組成的陣列
some()--------在陣列的每個元素上運行給定函數,如果給定函數在任意一個元素上返回true,則返回true

Javascript新特性:數組的擴展 - iRavior - 博客園
Array every method - JavaScript | MDN
Array some method - JavaScript | MDN
Array filter method - JavaScript | MDN
Array map method - JavaScript | MDN
Array.forEach - JavaScript | MDN 

解除禁止選取

javascript: (function () {
    function R(a) {
        ona = "on" + a;
        if (window.addEventListener) window.addEventListener(a, function (e) {
            for (var n = e.originalTarget; n; n = n.parentNode) n[ona] = null;
        }, true);
        window[ona] = null;
        document[ona] = null;
        if (document.body) document.body[ona] = null;
    }

    function userSelect() {
        var css = document.createElement("style");
        css.type = "text/css";
        document.getElementsByTagName("head")[0].appendChild(css);
        css.innerHTML = "*{-moz-user-select:text!important}";
    }
    R("contextmenu");
    R("click");
    R("mousedown");
    R("mouseup");
    R("selectstart");
    userSelect();
})()

user-select

user-select - CSS | MDN

::selection

::selection - CSS | MDN
Overriding The Default Text Selection Color With CSS | CSS-Tricks

S3 Touchwiz 首頁已停止

Touchwiz刪除頁面時,無法刪除,並出現Touchwiz首頁已停止訊息
  1. 設定
  2. 開發人員選項
  3. 繪圖
  4. "動畫影時間伸縮效果" 不要設定為"已關閉動畫"
  5. 重開手機
在刪除多余空白頁面時,無法刪除,出現Touchwiz主頁已停,三星 i9300(Galaxy S III)論壇好不好怎麼樣怎麼選