- 透過 PHP 輸出 CSV 檔案時,常常發生一個狀況,就是如果這個檔案裏面有中文,直接用 excel 打開 CSV 會發現中文都是亂碼!其實只要一個很簡單的方法,就是讓這個 CSV 檔案最前面有 BOM (Byte Order Mark),這樣用 Excel 開起來就不會有問題囉!~方法如下,輸出 \xEF\xBB\xBF 即可 (用於 UTF8)12345678
$fp
=
fopen
(
'file.csv'
,
'w'
);
// output BOM
fwrite(
$fp
,
"\xEF\xBB\xBF"
);
fputcsv
(
$fp
,
$data
);
fclose(
$fp
);
今天開機又發生 Disk IO 大量被吃光的問題! 真是怪了,不是才關掉 連接用户體驗和遙測服務 了嗎? 微軟真的很糟糕,還有一個 Windows 客戶經驗改進計劃 會拖慢....
一樣把他關了吧,除了讓你電腦不要變慢之外,不會發生甚麼事情的!!!- 如果要在畫面上顯示數字,特別是跟錢有關係的,通常都會希望有 千分號,這樣在閱讀上較為方便因為這是常用的東西,所以如果直接改掉 Number 的 phototype 在使用上就更方便囉!!用法很簡單,直接把下面這段 code 放在你的 js 中就可以了!12345678910
Number.prototype.numberFormat =
function
(c, d, t){
var
n =
this
,
c = isNaN(c = Math.abs(c)) ? 2 : c,
d = d == undefined ?
"."
: d,
t = t == undefined ?
","
: t,
s = n < 0 ?
"-"
:
""
,
i = String(parseInt(n = Math.abs(Number(n) || 0).toFixed(c))),
j = (j = i.length) > 3 ? j % 3 : 0;
return
s + (j ? i.substr(0, j) + t :
""
) + i.substr(j).replace(/(\d{3})(?=\d)/g,
"$1"
+ t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) :
""
);
};
使用方式也很簡單,參數分別如下:- 1st: 小數點後有幾位 (超過的部分會四捨五入)
- 2nd: 小數點的符號
- 3rd: 千分位的符號
1123456.789.numberFormat(2,
'.'
,
','
)
輸出的結果會是: 123,456.79若是要改掉逗號跟千分位的符號變成這樣1123456.789.numberFormat(2,
'*'
,
'#'
)
輸出結果就是: 123#456*79方便又好用喔! - 最近遇到 Linux 記憶體不足,但似乎就是真的不足了... 如果沒辦法擴增記憶體,那就只好拿 disk 來用了! 還好是 SSD,應該不會差太多!
- 其他 | 3881 觀看 | 2016-12-30 | 標籤: cat_networking | 洪國恩 上傳
- 臺灣吧 - Taiwan Bar 動畫臺灣史 | 3777 觀看 | 2016-12-28 | 標籤: cat_culture_humanity | Kuann Hung 上傳
如果透過 PHP 的 $_SERVER['REMOTE_ADDR'] 抓取用戶 IP,經常會遇到一個狀況,就是用戶可能有透過 proxy,所以就會抓錯。
透過 proxy 時,會多帶一個 X-Forwarded-For 的 header,表達是為哪個 IP 做 forward 的動作,所以需要看這個 header 來決定。但是,如果是 NAT 時,又要以他的 Public IP 作為遠端 IP,不然看到一大堆 192.168.x.x 也不太有意義。下面的 php function 可以幫忙做這件事情,判斷是否有 X-Forwarded-For,若有,還會過濾看是否為 Private IP,簡單說,呼叫這個參數就可以取得用戶的 IP 囉!!! (當然有時候這種事情不是絕對的,但是已經具有代表性囉!123456789101112131415161718function
getRemoteIP() {
if
( function_exists(
'apache_request_headers'
) ) {
$headers
= apache_request_headers();
}
else
{
$headers
=
$_SERVER
;
}
//Get the forwarded IP if it exists
if
(
array_key_exists
(
'X-Forwarded-For'
,
$headers
) && filter_var(
$headers
[
'X-Forwarded-For'
], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) ) {
$the_ip
=
$headers
[
'X-Forwarded-For'
];
}
elseif
(
array_key_exists
(
'HTTP_X_FORWARDED_FOR'
,
$headers
) && filter_var(
$headers
[
'HTTP_X_FORWARDED_FOR'
], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE )) {
$the_ip
=
$headers
[
'HTTP_X_FORWARDED_FOR'
];
}
else
{
$the_ip
= filter_var(
$_SERVER
[
'REMOTE_ADDR'
], FILTER_VALIDATE_IP );
}
return
$the_ip
;
}
PHP | 4455 觀看 | 2016-12-28 | 標籤: cat_applications | Kuann Hung 上傳這兩天電腦常常出現異常的 Disk IO,大概就是整個效能都不行了! 今天早上開機竟然花了五分鐘.... 我是用 SSD 耶.......
而且硬碟燈恆亮.... 整個 lag 到不行!開好機查測一下後,發現原來是被所謂的 "連接用户體驗和遙測服務",英文是 "Connected User Experiences and Telemetry",服務名稱是 DiagTrack 給拖慢了。Google 一下這是甚麼東西,網路上罵聲一片,大概就是個會默默把你電腦資訊傳送回微軟的機制,總之,關掉就是了!!!- 由於在 Chrome, IE, Firefox, Opera 還有 Safari 都有一些 console 語法不盡相同,為了避免一執行到就掛點,建議可以在你的 js 中加上以下語法,這樣就不會遇到在程式中忘了移除 console.log,結果在 IE8 就直接死掉的問題了!!123456789101112131415161718
(
function
() {
// Union of Chrome, Firefox, IE, Opera, and Safari console methods
var
methods = [
"assert"
,
"cd"
,
"clear"
,
"count"
,
"countReset"
,
"debug"
,
"dir"
,
"dirxml"
,
"error"
,
"exception"
,
"group"
,
"groupCollapsed"
,
"groupEnd"
,
"info"
,
"log"
,
"markTimeline"
,
"profile"
,
"profileEnd"
,
"select"
,
"table"
,
"time"
,
"timeEnd"
,
"timeStamp"
,
"timeline"
,
"timelineEnd"
,
"trace"
,
"warn"
];
var
length = methods.length;
var
console = (window.console = window.console || {});
var
method;
var
noop =
function
() {};
while
(length--) {
method = methods[length];
// define undefined methods as noops to prevent errors
if
(!console[method])
console[method] = noop;
}
})();
JavaScript | 5458 觀看 | 2016-12-27 | 標籤: javascript, console, assert, cat_applications | Kuann Hung 上傳 - 有時候需要在 Windows 設定排程執行批次檔。但是很麻煩的是,如果你登入後,就會一直看到命令提示字元跳出來,然後執行完之後又消失,其實是很擾人的一件事情。還好有個方法,就是透過 WScript 裡面的 Shell 來作。方法很簡單,有人提供了一個 invis.vbs,用法很簡單,就是1
wscript invis.vbs your-batch-
file
.cmd
若是要排一個每小時執行一次的話,就透過 SCHTASKS 比較方便1SCHTASKS
/Create
/SC
HOURLY
/TN
Veritas-Update
/TR
"wscript C:\path\to\invis.vbs C:\patch\to\your-batch-file.cmd"
這邊要注意的是,因為執行的路徑預設都在 system32 下,所以要指定 完整路徑,避免找不到檔案喔!!
- 臺灣吧 - Taiwan Bar 動畫臺灣史 | 3589 觀看 | 2016-12-21 | 標籤: cat_culture_humanity | 洪國恩 上傳
- Windows | 187516 觀看 | 2016-12-17 | 標籤: STATUS_INVALID_IMAGE_FORMAT, 0xc000007b, cat_applications | Kuann Hung 上傳
- Windows | 20043 觀看 | 2016-12-17 | 標籤: mysql, WAMP, WampServer, Apache2.4, PHP5.6, cat_applications | Kuann Hung 上傳
- Windows | 16286 觀看 | 2016-12-12 | 標籤: php, IIS, windows 2008 server, fastcgi, 0x8007010b, cgi, cat_applications | Kuann Hung 上傳