pcxFirefox Portable 設定

mayuyu版:
改成隨身版的方法,在firefox目錄下建立一個tmemutil.ini
內容
http://pasted.co/47176121

個人設定的資料夾和暫存檔的目錄位置和其他選項可以自行修改
目前是放在同目錄的Profiles和Tmp底下
PortableDataPath=./Profiles
TmpDataPath=./Tmp
自用版:
把pcxFirefox目錄裡的tmemutil-sample.ini改成tmemutil.ini
並設定以下項目
  • Portable=1
  • PortableDataPath=./Profiles
  • TmpDataPath=./Tmp
  • Nocompatete=1

[-Fx-] pcxFirefox 43.0.2 x64/x86版已出 - 看板 Browsers - 批踢踢實業坊

Firefox 繁體中文化

將x86繁中版firefox目錄下的三個omni.ja
覆蓋到x64版對應的目錄下,即可完成中文化。
安裝語言套件也可以 之所以推薦用omni.ja覆蓋的方式
是因為官方的繁體中文版為了修正一些繁中才有的bug
(例如Mactype渲染亂碼的bug)
修改了一些存在omni.ja裡的特性參數和英文版不一樣
而pcxFirefox的繁體中文版和官方繁中版相同
也有特別修正這些特性 如果裝英文版就沒有特別修正
裝了英文版再裝繁中語言套件還是無法修改到這些參數
所以才推薦繁體中文的使用者麻煩一點用覆蓋的方式

[-Fx-] pcxFirefox 43.0.2 x64/x86版已出 - 看板 Browsers - 批踢踢實業坊 Re: [-Fx-] pcxFirefox 43.0.2 x64/x86版已出 - 看板 Browsers - 批踢踢實業坊

Nexus 7 2013 (flo) 手動升級OTA更新

#Nexus 7 2013 (flo) 手動升級OTA更新流程


事前準備檔案


更新手順

  1. 確認平板已連線

adb devices

  1. 重開機進入bootloader模式

adb reboot bootloader

  1. 確認平板已連線

fastboot devices

  1. 還原recovery回上一版原廠

fastboot flash recovery recovery.img

  1. 還原system回上一版原廠

fastboot flash system system.img

  1. 還原boot回上一版原廠

fastboot flash boot boot.img

  1. 使用音量鍵選擇Recovery mode,並按下電源鈕確認

  2. 在面畫上看到一隻倒地的安卓機器人,胸口還有三角形警告標示

  3. 按住電源鈕,然後按音量鍵上一下,就會進入Recovery,且跳出選單

  4. 使用音量鍵選擇Apply update from ADB,並按下電源鈕確認

  5. 刷入更新包

adb sideload update.zip

  1. 使用音量鍵選擇reboot bootloader,並按下電源鈕確認
  2. 刷入TWRP

fastboot flash recovery twrp-2.8.7.0-flo.img

  1. 使用音量鍵選擇Recovery mode,並按下電源鈕確認
  2. 進入TWRP,清除Dalvik-CacheCache
  3. 選擇Install,刷入BETA-SuperSU-v2.66.zip

#Reference

Jpg壓縮比90

$sw = [system.diagnostics.stopwatch]::startNew()
$imgs = get-childitem -path 'C:\2015-11-27' -include *.jpg -recurse
foreach($img in $imgs) {
$Q = C:\identify.exe -format %Q $img
#JPG壓縮比大於90
if($Q -gt 90) {
Write-Host $img.name $Q
C:\convert.exe -quality 90 $img $img
}
}
$sw.Stop()
Write-host Total ElapsedTime: $sw.Elapsed.TotalSeconds Seconds
view raw Jpg90.ps1 hosted with ❤ by GitHub

Xuite Album

var request = require('request').defaults({
encoding: null,
method: 'GET',
headers: {
'User-Agent': 'Mozilla / 5.0(Windows NT 6.1; rv: 35.0) Gecko / 20100101 Firefox / 35.0'
}
});
var cheerio = require('cheerio');
var process = require('child_process');
function getImgLink(link, imgs, cb) {
//第一次呼叫
if (arguments.length < 3) {
cb = imgs;
imgs = [];
}
request({
url: link
}, function(error, res, body) {
if (error) {
console.log(error);
} else {
var $ = cheerio.load(body);
//console.log('第%s頁', $('.page font').html());
//console.log('本頁有%s張照片', $('.photo_cover').length);
var imgTiles = $('.photo_info_title a');
$('.photo_item .photo_cover').each(function(i, elem) {
var elem = $(elem);
var img = {
link: /(\d*)_c/.exec(elem.attr('src'))[1],
title: $(imgTiles[i]).text()
}
imgs.push(img);
});
var nextPage = $('#nav-next').attr('href');
if (!nextPage) {
return cb(null, imgs);
} else {
//console.log('有下一頁:%s', $('#nav-next').attr('href'));
//console.log('===Next Page===');
getImgLink(nextPage, imgs, cb);
return;
}
return cb(null, imgs);
}
});
}
getImgLink('http://photo.xuite.net/ilovebmilk/3497656', function(err, imgs) {
if (err) {
console.log(err);
}
for (var i = 0; i < imgs.length; i++) {
//console.log(imgs[i].title);
//console.log('http://o.0.photo.xuite.net/0/3/9/d/ilovebmilk/3543468/' + imgs[i].link + '.jpg');
var filePath = 'C:/ilovebmilk/陸/' + imgs[i].title;
var link = 'http://o.0.photo.xuite.net/0/3/9/d/ilovebmilk/3497656/' + imgs[i].link + '.jpg';
//需設定referer
process.exec('C:/wget.exe -O "' + filePath + '" ' + link, function(error, stdout, stderr) {
if (error) throw error;
});
}
});
view raw xuite_album.js hosted with ❤ by GitHub

Nexus 7 2013 (flo) 安裝Factory Images

Nexus 7 2013 (flo) 安裝Factory Images

事前準備

Factory Images for Nexus Devices
下載對應版本檔案,例:"razor" for Nexus 7 [2013] (Wi-Fi) → 6.0.0 (MRA58V)

  1. 開啟USB偵錯 (設定→開發者選項→USB偵錯)
  2. USB線連接電腦
  3. 進入Bootloader模式

開機狀態,輸入 adb reboot bootloader
關機狀態,使用 Vol Down + Power

  1. 輸入 fastboot devices,確認裝置已連線
  2. 如果未解鎖,輸入 fastboot oem unlock(註:解鎖會清空個人資料)

接下來分成自動刷入、手動刷入

自動刷入

執行 flash-all.bat 即可
註:如需保留資料請修改flash-all.bat部份內容,如下

-w刪除
fastboot -w update image-razor-mra58v.zip

手動刷入

  1. 將image-razor-mra58v.zip解壓縮

  2. 刷入bootloader
    fastboot flash bootloader bootloader-flo-flo-04.05.img

  3. 重新啟動bootloader
    fastboot reboot-bootloader

  4. 刷入system
    fastboot flash system system.img

  5. 刷入boot
    fastboot flash boot boot.img

  6. 刷入recovery
    fastboot flash recovery recovery.img

  7. 刷入cache
    fastboot flash cache cache.img

  8. 完全清除個人資料,請刷入userdata.img
    fastboot flash userdata userdata.img

  9. 重新開機 fastboot reboot

  10. 耐心等待,進入開機畫面


刷入TWRP

  1. 進入Bootloader模式

  2. 刷入TWRP
    fastboot flash recovery twrp-2.8.7.0-flo.img

  3. 音量鍵選擇 restart bootloader,並按下電源鈕確認,就會進入TWRP


Reference

讀取KML

#取得目錄裡全部KML檔
$kmls = get-childitem C:\河濱KML\*.kml
foreach ($kml in $kmls){
#讀出KML內容
[xml]$doc = Get-Content $kml -Encoding UTF8
#讀出Placemark節點
$marks=Select-Xml -xml $doc -XPath "//kml:Placemark" -Namespace @{kml="http://www.opengis.net/kml/2.2"}
#將Palcemark節點匯出成txt(以name節點為檔名)
$marks | foreach {
$text=$_.node.OuterXML
$filename=$_.node.name
Add-Content D:\$filename.txt $text
}
}
view raw Read KML.ps1 hosted with ❤ by GitHub

LG G3(D855) KDZ 操作步驟

#事前準備


#操作步驟

  1. 使用adb備份App adb backup -nosystem -all -apk -f "Z:\G3_All_APK.ab"

  2. 使用LG Flash Tool 2014刷入V21A KDZ

  • Install KDZ
  • ※ 刷入過程可能超過5分鐘,勿拔除USB線。※
  1. 取得Root權限

[GUIDE][ROOT] Newest Root Method for LG devices
※ 最後會停在Download模式,拔電池重開機。※

  1. 刷入TWRP Recovery
  1. (D855) LG G3 AutoRec-Lollipop - Google Play Android 應用程式
  2. TWRP Manager (ROOT) - Google Play Android 應用程式 => 升級至2.8.7.0
  1. 刷入Xposed

[OFFICIAL] Xposed for Lollipop/Marshmallow

  • 5.0 -> sdk21
  • 5.1 -> sdk22
  • 6.0 -> sdk23
  1. 安裝Xposed模組

Youtube Popup

Youtube Popup

view raw read.md hosted with ❤ by GitHub
// ==UserScript==
// @name YouTube video Popup Window
// @description YouTube video Popup Window
// @author NKid
// @version 2015-11-19
// @include http://www.youtube.com/watch?*
// @include https://www.youtube.com/watch?*
// ==/UserScript==
var t = document.querySelector('#eow-title').parentElement;
var p = document.querySelector('#watch7-main-container');
var i = document.createElement('img');
i.id = 'myPopup';
i.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wsTChE2izT+ZQAAAQVJREFUSMe9069OxEAQx/EPpUAgwZBgTqBRvAA45CU4eAfCA2DvWfD8eQEweBwGLAJ7EMRBuCLaJs1Rtv/5JZvdaWfnuzM7S3NNkDQY86gFpLH+BRLjvKbvE64L9hWeK2IfY4f6tb3JNk8y+6jiUKu4Q9KkXMmCXbV3uZgSfGFaEqioaYMD/aobPOAUs4Dve1fIBx7x2TZQSNEf68Egg6kLJKn7P9ZcS9l8hnHAL8ZuW8hM2mn7OKjw/cZbG8gFbgMlmkuvIc+4VSYv2SjTJkZ4VXi8fXfXGPc4KX7sG7KObWwMCUkW5kEgpcovPsKa6gdWpZUQZA+X0vbrolEIsoXDvsuU6wfggT7sBxRlOgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0xMS0xOVQxMDoxNzo1MyswODowMNtJz1UAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMTEtMTlUMTA6MTc6NTQrMDg6MDBvs0lnAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==';
i.style = 'cursor:pointer;';
i.onclick = function() {
window.open('http://www.youtube.com/embed/' + /v=(.{11})/.exec(location.search)[1], '', 'height=216,width=384,left=' + (window.screenX + 50) + ',top=' + (window.screenY + 50) + '\'');
};
t.insertBefore(i, t.childNodes[0]);

CTE(Common Table Expressions) 遞迴查詢

--建立測試資料表
DECLARE @tbl_Dept TABLE (
UniqueID int IDENTITY,
DeptID varchar(50),
DeptName varchar(100),
ParentDeptID varchar(50)
)
--建立測試資料
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('A1','董事長',NULL)
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('B1','資訊部','A1')
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('B2','會計部','A1')
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('B3','總務部','A1')
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('C1','系統應用課','B1')
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('C2','系統開發課','B1')
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('C3','網路管理課','B1')
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('C4','成本課','B2')
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('C5','會計課','B2')
INSERT INTO @tbl_Dept (DeptID,DeptName,ParentDeptID) VALUES ('C6','人事課','B3')
--列出部門階層
;WITH DEPT_CTE(DeptID,DeptName,Path,Degree) AS
(
SELECT DeptID,DeptName,CAST(DeptName AS nvarchar(max)), 0 AS Degree
FROM @tbl_Dept
WHERE ParentDeptID IS NULL
UNION ALL
SELECT D.DeptID,D.DeptName,CAST(DC.Path + ' > ' + D.DeptName AS nvarchar(max)),Degree + 1
FROM @tbl_Dept D
INNER JOIN DEPT_CTE DC
ON D.ParentDeptID = DC.DeptID
)
SELECT * FROM Dept_CTE ORDER BY Degree
view raw CTE.sql hosted with ❤ by GitHub
DeptID DeptName Path Degree
A1 董事長 董事長 0
B1 資訊部 董事長 > 資訊部 1
B2 會計部 董事長 > 會計部 1
B3 總務部 董事長 > 總務部 1
C1 系統應用課 董事長 > 資訊部 > 系統應用課 2
C2 系統開發課 董事長 > 資訊部 > 系統開發課 2
C3 網路管理課 董事長 > 資訊部 > 網路管理課 2
C4 成本課 董事長 > 會計部 > 成本課 2
C5 會計課 董事長 > 會計部 > 會計課 2
C6 人事課 董事長 > 總務部 > 人事課 2
view raw Result.md hosted with ❤ by GitHub

多個SQL變數使用於in查詢

declare @values table
(
Value varchar(1000)
)
insert into @values values ('A')
insert into @values values ('B')
insert into @values values ('C')
select blah
from foo
where myField in (select value from @values)
view raw query.sql hosted with ❤ by GitHub

Combine Table Cell (合併表格欄位)

function combineEqual(rows, aryChk) {
var rowOdd = rows.filter(':odd');
var rowEven = rows.filter(':even:gt(0)'); //排除標題列
//大於1列,且列的總數量要為奇數(含標題列)
if ((rows.length > 1) && (rows.length % 2 === 1)) {
for (var i = 0; i < rowOdd.length; i++) {
var cellV0 = $(rowOdd[i]).find('td'); //v0列全部cell
var cellV1 = $(rowEven[i]).find('td'); //v1列全部cell
//比對version 0 & 1(最後一欄),AccountID(第2欄)要相等
if ((cellV0[cellV0.length - 1].innerHTML === '0') && (cellV1[cellV1.length - 1].innerHTML === '1') && (cellV0[1].innerHTML === cellV1[1].innerHTML)) {
aryChk.map(function(i) {
//內容相同,就合併
if (cellV0[i].innerHTML === cellV1[i].innerHTML) {
cellV0[i].rowSpan = 2;
$(cellV1[i]).remove();
}
});
}
}
}
}
combineEqual($('#GridView1 tr'), [0, 1, 2, 3, 4]);
view raw x.js hosted with ❤ by GitHub

取得目前執行程式的目錄

System.AppDomain.CurrentDomain.BaseDirectory
勿用Environment.CurrentDirectory,透過其他程式呼叫時,路徑會變動
[C#][ASP.NET] 取得目前執行程式的目錄 - .NET 隨筆- 點部落

nodejs request Get Cookie

var request = require('request');
var j = request.jar();
request({
url: 'http://www.mobile01.com/index.php',
method: 'GET',
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0'
},
jar: j
}, function(error, res, body) {
if (error) {
console.log(error);
} else {
console.log(j.getCookies('http://www.mobile01.com'));
}
});
view raw getCookie.js hosted with ❤ by GitHub

HyperLink to IMG

Enable / Disable CSS

if (document.styleSheets.length > 0) {
cs = !document.styleSheets[0].disabled;
for (var i = document.styleSheets.length; i--;) document.styleSheets[i].disabled = cs;
};
view raw css.js hosted with ❤ by GitHub

變更 Firefox for Android 預設下載路徑

  1. about:config
  2. browser.download.folderList,原本值為1,變更為2
  3. 新增字串,browser.download.dir,並填入自訂路徑

How to change download path or location in android fire fox | Firefox for Android 技術支援討論區 | Mozilla 技術支援

Array method (max,min,sum,avg)

Array.prototype.max = function() {
return Math.max.apply(null, this);
};
Array.prototype.min = function() {
return Math.min.apply(null, this);
};
Array.prototype.sum = Array.prototype.sum || function() {
return this.reduce(function(sum, a) {
return sum + Number(a)
}, 0);
};
Array.prototype.avg = Array.prototype.avg || function() {
return this.sum() / (this.length || 1);
};
view raw ary.js hosted with ❤ by GitHub

Youtube Popup

上班偷看Youtube的小工具XD
可把Youtube變成彈出視窗
http://i.imgur.com/W9AcEJI.png

view raw 1-read.md hosted with ❤ by GitHub
var css = document.createElement('style');
css.type = 'text/css';
css.innerHTML = ".myPopup{box-shadow:inset 0 1px 0 0 #fff;background:-webkit-gradient(linear,left top,left bottom,color-stop(0.05,#ededed),color-stop(1,#dfdfdf));background:-moz-linear-gradient(center top,#ededed 5%,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#dfdfdf');background-color:#ededed;border-radius:10px 10px 0 0;text-indent:0;border:1px solid #dcdcdc;display:block;color:#777;cursor:pointer;font-family:arial;font-size:14px;font-weight:700;font-style:normal;height:24px;line-height:24px;width:62px;text-decoration:none;text-align:center;text-shadow:1px 1px 0 #fff}.myPopup:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(0.05,#dfdfdf),color-stop(1,#ededed));background:-moz-linear-gradient(center top,#dfdfdf 5%,#ededed 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf',endColorstr='#ededed');background-color:#dfdfdf}.myPopup:active{position:relative;top:1px}";
document.head.appendChild(css);
var body = document.getElementsByTagName('body')[0];
var ifms = document.querySelectorAll('iframe[src^="http://www.youtube.com/embed/"],iframe[src^="http://www.youtube.com/embed/"]');
for (var i = 0, max = ifms.length; i < max; i++) {
var pNode = ifms[i].parentNode;
var btn = document.createElement('a');
btn.className = 'myPopup';
btn.innerHTML = 'Popup';
pNode.insertBefore(btn, ifms[i]);
var vid = ifms[i].src.replace(/http(s)?:\/\/www\.youtube\.com\/embed\//, '');
(function(btn, vid) {
btn.addEventListener('click', function() {
window.open('https://youtube.googleapis.com/v/' + vid, (new Date).getTime(), "width=328,height=206,top=0,left=0");
});
})(btn, vid);
}
view raw 2-popup.js hosted with ❤ by GitHub

goo.gl

$.ajax({
url: 'https://www.googleapis.com/urlshortener/v1/url?key=YOUR_API_KEY_PUT_HERE',
type: 'POST',
data: JSON.stringify({
longUrl: 'http://www.playpcesor.com/2015/05/office-2016-google-drive.html'
}),
contentType: 'application/json',
dataType: 'json',
success: function(result, status, xhr) {
console.log(result.id);
}
});
view raw jq.js hosted with ❤ by GitHub
var request = require("request");
request({
method: 'POST',
url: 'https://www.googleapis.com/urlshortener/v1/url?key=YOUR_API_KEY_PUT_HERE',
body: {
longUrl: 'http://www.playpcesor.com/2015/05/office-2016-google-drive.html'
},
json: true
}, function(error, response, body) {
if (error) {
console.log(error);
} else {
console.log(body.id);
}
});
view raw node.js hosted with ❤ by GitHub
var api_url = 'https://www.googleapis.com/urlshortener/v1/url?key=YOUR_API_KEY_PUT_HERE';
var request = new XMLHttpRequest();
request.open('POST', api_url, true);
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/json');
request.onload = function() {
var rep_json = JSON.parse(request.responseText);
if (rep_json.id) {
prompt('goo.gl', rep_json.id);
} else {
alert(rep_json.error.message);
}
};
request.onerror = function() {
alert('Shorten url fail, network error.');
};
request.send('{"longUrl":"' + location.href + '"}');
view raw purejs.js hosted with ❤ by GitHub

node.js request get 302 location

var request = require("request");
request({
method: 'GET',
url: 'http://goo.gl/UgTWRZ',
followRedirect: false
}, function(error, response, body) {
if (error) {
console.log(response.statusCode);
} else {
console.log(response.headers.location);
}
});
view raw 302.js hosted with ❤ by GitHub

HTML FileUpload 重置寫法

jquery - Flie Upload Clearing File input Value Individually - Stack Overflow

GridView Container.DataItemIndex 用法

<asp:GridView ID="GridView1" runat="server" EnableModelValidation="True">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%# Container.DataItemIndex + 1 %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CommandName="ShowRowIndex" Text="Click" CommandArgument='<%# Container.DataItemIndex %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
view raw GridView.aspx hosted with ❤ by GitHub
Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand
If (e.CommandName = "ShowRowIndex") Then
Response.Write(Convert.ToInt32(e.CommandArgument))
End If
End Sub
view raw RowCommand.vb hosted with ❤ by GitHub
c# - ASP.NET GridView RowIndex As CommandArgument - Stack Overflow

File Filter (async & sync)

var fs = require('fs'),
path = require('path'),
strWorkPath = 'E:/Test',
aryFolderPath = fs.readdirSync(strWorkPath);
for (var i = 0; i < aryFolderPath.length; i++) {
//判斷是資料夾
if (fs.statSync(path.join(strWorkPath, aryFolderPath[i])).isDirectory()) {
//撈出全部檔案
var files = fs.readdirSync(path.join(strWorkPath, aryFolderPath[i]));
//過濾jpg檔
files.map(function(file) {
return path.join(strWorkPath, aryFolderPath[i], file);
}).filter(function(file) {
return fs.statSync(file).isFile() && path.extname(file) === '.jpg';
}).forEach(function(file) {
console.log(file);
});
}
}
/* Reslut
E:\Test\FolderA\1.jpg
E:\Test\FolderB\2.jpg
E:\Test\FolderC\3.jpg
*/
view raw async.js hosted with ❤ by GitHub
E:\TEST
├─FolderA
│ ├─1.jpg
│ └─FileA.txt
├─FolderB
│ ├─2.jpg
│ └─FileA.txt
└─FolderC
├─3.jpg
└─FileB.txt
view raw Folder Tree.txt hosted with ❤ by GitHub
var fs = require('fs'),
path = require('path'),
strWorkPath = 'E:/Test';
fs.readdir(strWorkPath, function(err, folders) {
if (err) {
throw err;
}
folders.map(function(folder) {
return path.join(strWorkPath, folder);
}).filter(function(folder) {
return fs.statSync(folder).isDirectory();
}).forEach(function(folder) {
fs.readdir(folder, function(err, files) {
if (err) {
throw err;
}
files.map(function(file) {
return path.join(folder, file);
}).filter(function(file) {
return fs.statSync(file).isFile() && path.extname(file) === '.jpg';
}).forEach(function(file) {
console.log(file);
});
});
});
});
/* Reslut
E:\Test\FolderA\1.jpg
E:\Test\FolderB\2.jpg
E:\Test\FolderC\3.jpg
*/
view raw sync.js hosted with ❤ by GitHub

Get Random Color

function getColor(){
        return '#'+(Math.random()*0xffffff<<0).toString(16);
}

JS insertRule

SJ2000 批次檔自動產生time.txt

將Time.bat,放置在SJ2000根目錄下,雙擊後,產生time.txt,內容為目前時間加上1分鐘
@echo off
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set mydt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2%
echo Local date is [%mydt%]
set timeHour=%ldt:~8,2%
set timeMinute=%ldt:~10,2%
set timeSeconds=%ldt:~12,2%
rem Convert HH:MM to minutes + 1
set /A newTime=timeHour*60 + timeMinute + 1
rem Convert new time back to HH:MM
set /A timeHour=newTime/60, timeMinute=newTime%%60
rem Adjust new hour and minute
if %timeHour% gtr 23 set timeHour=0
if %timeHour% lss 10 set timeHour=0%timeHour%
if %timeMinute% lss 10 set timeMinute=0%timeMinute%
echo %mydt% %timeHour%:%timeMinute%:%timeSeconds%
echo %mydt% %timeHour%:%timeMinute%:%timeSeconds% > time.txt
view raw SJ2000 Time.bat hosted with ❤ by GitHub

iframe元表,綁定事件

$(document).ready(function() {
var $ifm = $('#ifm');
$ifm.attr('src', 'http://' + document.domain + '/Test.aspx');
$ifm.load(function() {
// loaded之後才可以存取iframe.contentWindow
var $contents = $ifm.contents();
$contents.find('head').append('<style type="text/css">a {color: #ff0000 !important;}</style>');
$contents.delegate('a', 'click', function(e) {
e.preventDefault();
alert('hi');
});
});
});
view raw ifm.js hosted with ❤ by GitHub

使用資料表更新資料表

UPDATE TableA
SET TableA.FullName = B.FullName
FROM TableB AS B
WHERE TableA.AccountID = B.Account_ID
view raw update.sql hosted with ❤ by GitHub

sql server - SQL update from one Table to another based on a ID match - Stack Overflow

SQLite3 Create Table 設定欄位預設值為目前時間

CREATE TABLE TestTable (UID INTEGER PRIMARY KEY AUTOINCREMENT,Title TEXT,AddDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP)
view raw GMT.sql hosted with ❤ by GitHub
CREATE TABLE TestTable (UID INTEGER PRIMARY KEY AUTOINCREMENT,Title TEXT,AddDate date DEFAULT (datetime('now','localtime')))
view raw Localtime.sql hosted with ❤ by GitHub

sql - Sqlite: CURRENT_TIMESTAMP is in GMT, not the timezone of the machine - Stack Overflow sql - sqlite database default time value 'now' - Stack Overflow

DataTable 轉 Excel

Dim hssfworkbook As New HSSFWorkbook()
Using msNew As New IO.MemoryStream()
Dim sheet As HSSFSheet = hssfworkbook.CreateSheet("ThisIsSheetName")
Dim nrowHeader As HSSFRow = sheet.CreateRow(0)
For h As Integer = 0 To dt.Columns.Count - 1
nrowHeader.CreateCell(h).SetCellValue(dt.Columns(h).ColumnName)
Next
For intRow As Integer = 0 To dt.Rows.Count - 1
Dim nrowNew As HSSFRow = sheet.CreateRow(intRow + 1)
For intCol As Integer = 0 To dt.Columns.Count - 1
nrowNew.CreateCell(intCol).SetCellValue(dt.Rows(intRow)(intCol).ToString.Trim)
Next
Next
'sheet.AutoSizeColumn(CShort(0))
'sheet.AutoSizeColumn(CShort(1))
'sheet.AutoSizeColumn(CShort(2))
'sheet.AutoSizeColumn(CShort(3))
hssfworkbook.Write(msNew)
hssfworkbook = Nothing
Dim strFileName As String = "Sheet_" & Now.ToString("yyyyMMddHHmmss") & ".xls"
Dim strExcelFilePath As String = Server.MapPath("") & "\" & strFileName
Using fs As IO.FileStream = File.OpenWrite(strExcelFilePath)
msNew.WriteTo(fs)
End Using
Response.Redirect("Download.ashx?file=" & strFileName)
End Using
view raw utils.vb hosted with ❤ by GitHub

EnterpriseLibrary 常用語法

Imports System.Data.Common
Imports Microsoft.Practices.EnterpriseLibrary.Data

npm列出全部安裝套件

npm -g ls --depth=0

調整照片Exif時間 (jhead)

 -ta<+|->h[:mm[:ss]]
            Adjust time by h:mm forwards or backwards.  Useful when having
            taken pictures with the wrong time set on the camera, such as when
            traveling across time zones or DST changes. Dates can be adjusted
            by offsetting by 24 hours or more.  For large date adjustments,
            use the -da option

jhead -ta+48 D:\Pic\*.jpg