2014年12月9日 星期二

PHP檔案上傳設定 php.ini

PHP檔案上傳設定
memory_limit = 1024M
post_max_size = 1024M
upload_max_filesize = 1024M

設定規則
memory_limit > post_max_size > upload_max_filesize

上傳時間(秒)
max_input_time = 360
default_socket_timeout = 360
mysql.connect_timeout = 360

2014年10月29日 星期三

Mathematica指令

展開Expand@多項式D
徹底展開ExpandAll@多項式D
因式分解Factor@多項式D
通分後合併Together@多項式D
部分分式Apart@多項式D
消去共同因子Cancel@多項式D
化簡多項式Simplify@多項式D
取出分式的分母Denominator@分式D
取出分式的分子Numerator@分式D
取出係數Coefficient@多項式, 指定項D
取出多項式的最高次數Exponent@多項式, 指定項D
取出第n項Part@多項式, nD
變數代入ReplaceRepeated@多項式, 指定項D
變數代入多項式//.指定項D

2014年10月22日 星期三

ShellExecute

ShellExecute
http://www.dev.idv.tw/mediawiki/index.php/ShellExecute的用法

HINSTANCE ShellExecute(                                              
    HWND hwnd,         // handle to parent window                
    LPCTSTR lpOperation,    // pointer to string that specifies operation to perform
    LPCTSTR lpFile,        // pointer to filename or folder name string
    LPCTSTR lpParameters,    // pointer to string that specifies executable-file parameters
    LPCTSTR lpDirectory,    // pointer to string that specifies default directory
    INT nShowCmd         // whether file is shown when opened          
   );

其中hwnd是主要執行該程式的視窗,通常就是我們自己的程式視窗。不過也可以給NULL,表示沒有特定的視窗。 lpOperation是您要執行的動 作,這個動作有三個:
  • open -- open的方式是讓系統自己依據檔案的型態來決定以何種方式開啟它。舉例來說,如果lpFile是一個可執行檔,那麼這個檔案就會 被執行。如果他是一個文件檔,則會被對應的軟體所開啟。如果開啟的是一個目錄,自然就是用Explorer來開啟囉。
  • print -- print很明顯的就是將檔案送到 printer queue裡面去列印。
  • explorer -- 原則上只能用在目錄,是用來開啟目錄用的。

lpFile正如前面所說就是一個表示要開啟的檔案。而lpParameters主要用於lpFile所指向的是一個可執行檔時,用這個參數將執行檔所需 的參數傳給它。而lpDirectory是進行開啟動作時的預設路徑,如果是NULL,表示為預設路徑。 最後一個nShowCmd主要表示該檔案開啟時的行為,主要有下面幾個值可用:
  • SW_HIDE 執行檔案時,將視窗隱藏起來。.
  • SW_MAXIMIZE 將視窗最大化執行
  • SW_MINIMIZE 將視窗最小化執行
  • SW_RESTORE 若視窗執行時是最小化,透過此參數,可將其回復原來大小顯示。
  • SW_SHOW 以視窗預設大小顯示,並且設為主動視窗
  • SW_SHOWDEFAULT 同SW_SHOW
  • SW_SHOWMAXIMIZED 執行時將視窗最大化,並且設定為主動視窗。
  • SW_SHOWMINIMIZED 執行時將視窗最小化,並且設定為主動視窗。
  • SW_SHOWMINNOACTIVE 執行時將視窗最小化,並且不會變動現行的主動視窗。
  • SW_SHOWNA 執行時並不會變動現行的主動視窗。
  • SW_SHOWNOACTIVATE 同SW_SHOWNA。
  • SW_SHOWNORMAL 當程式執行時,若為最大化或最小化,將會回復到原來的大小,並且設定為主動視窗。

下面幾個例子介紹幾個常見的用法:
// 開啟某個目錄:                                                    
ShellExecute(NULL, "open", "c:\\windows", NULL, NULL, 0);             
// 開啟某個程式:                                                    
ShellExecute(NULL, "open", "c:\\windows\\notepad.exe", "c:\\xxx.txt", NULL, SW_SHOWNORMAL);
// 列印某份文件:                                                    
ShellExecute(NULL, "print", "c:\\xxx.doc", NULL, NULL, 0);            
// 開啟某個網頁:                                                    
ShellExecute(NULL, "open", "https://www.google.com/", NULL, NULL, 0);

2014年10月16日 星期四

node-windows建立服務

https://github.com/coreybutler/node-windows

var Service = require('node-windows').Service;

// Create a new service object
var svc = new Service({
  name:'Hello World',
  description: 'The nodejs.org example web server.',
  script: 'C:\\path\\to\\helloworld.js'
});

// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
  svc.start();
});

svc.install();

2014年7月8日 星期二

RESTful設計

parse
https://parse.com/docs/rest


淺談 REST 軟體架構風格 - 如何設計 RESTful Web Service?
https://blog.toright.com/posts/1399/
https://blog.toright.com/posts/725/

功能URIHTTP MethodRequestResponseStatus Code
新增http://book.com/booksPOST...void200|400
刪除http://book.com/books/{isbn}DELETEvoidvoid200|400|404
修改http://book.com/books/{isbn}PUT...void200|400|404
查詢http://book.com/books/{isbn}GETvoid...200|400|404
列表http://book.com/booksGETvoid...200|400|404

Build a RESTful API Using Node and Express 4
https://scotch.io/tutorials/build-a-restful-api-using-node-and-express-4

2014年5月6日 星期二

[備份][Tools] 7-Zip的命令列指令

由於原文部落格已經搬家,因此作個備份。
[備份] [Tools] 7-Zip的命令列指令

當我們需要整批壓縮檔案或要透過排程來備份資料時,最方便的還是使用命令列指令。由於從DOS時就慣用PKZIP,因此到現在仍繼續使用它的PkzipC.exe,但最近因為硬碟空間不足且因為Pkzipc是需要付費的,因此順便將之整個更換成7-Zip 的命令列指令:7z.exe,同時將壓縮格式換成7z,使空間能更節省。

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

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

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

aAdd將檔名列中的檔案加入壓縮檔-i (Include)?
-m (Method)?
-p (Set Password)?
-r (Recurse)?
-sfx (create SFX)?
-si (use StdIn)?
-so (use StdOut)?
-t (Type of archive)?
-u (Update)?
-v (Volumes)?
-w (Working Dir)?
-x (Exclude)
dDelete將指定檔名由壓縮檔內移除-i (Include)
-m (Method)
-p (Set Password)
-r (Recurse)
-u (Update)
-w (Working Dir)
-x (Exclude)
eExtract將指定檔名由壓縮檔中擷取出來-ai (Include archives)
-an (Disable parsing of archive_name)
-ao (Overwrite mode)
-ai (Exclude archives)
-i (Include)
-o (Set Output Directory)
-p (Set Password)
-r (Recurse)
-so (use StdOut)
-x (Exclude)
-y (Assume Yes on all queries)
lList顯示壓縮檔案內的檔案資訊-ai (Include archives)
-an (Disable parsing of archive_name)
-ai (Exclude archives)
-i (Include)
-p (Set Password)
-r (Recurse)
-x (Exclude)
tTest測試壓縮檔的完整性-ai (Include archives)
-an (Disable parsing of archive_name)
-ai (Exclude archives)
-i (Include)
-p (Set Password)
-r (Recurse)
-x (Exclude)
uUpdate用較新的同名檔案更新壓縮檔內較舊的檔案-i (Include)
-m (Method)
-p (Set Password)
-r (Recurse)
-sfx (create SFX)
-si (use StdIn)
-so (use StdOut)
-t (Type of archive)
-u (Update)
-w (Working Dir)
-x (Exclude)
xeXtract with full paths以完整路徑的格式解出檔案-ai (Include archives)
-an (Disable parsing of archive_name)
-ao (Overwrite mode)
-ai (Exclude archives)
-i (Include)
-o (Set Output Directory)
-p (Set Password)
-r (Recurse)
-so (use StdOut)
-x (Exclude)
-y (Assume Yes on all queries)

範例:

  • 壓縮檔案:7z a -tzip archive.zip test1.txt test2.txt test3.txt
  • 刪除檔案:7z d archive.zip *.bak
  • 解壓縮到目前資料夾:7z e archive.zip
  • 解壓縮所有的.cpp檔案案件到指定資料夾:7z e archive.zip -oc:\soft *.cpp
  • 顯示壓縮檔內的資訊:7z l archive.zip
  • 依壓縮檔內的檔案路徑解壓縮到指定資料夾:7z x archive.zip -oc:\soft *.cpp

更詳細的內容直接看到7-zip.chm即可。

做了一點小測試:將資料夾內30個檔案大小共260,823,040 Bytes的檔案(SQL Server資料庫備份出的資料檔案),分別使用7-Zip、PkzipC、WinRAR 3.0
壓縮,大小分別同下:

  • 7-Zip: 43,791,855 Bytes
  • WinRAR: 50,415,283 Bytes
  • PKZipC: 63,701,625 Bytes

獲勝的是7-Zip。

2014年4月16日 星期三

Http Header

referer: 前一個訪問的頁面URL

轉自:http://www.cchere.com/article/290957
REMOTE_ADDR:扔出REQUEST的客戶端IP地址(也可能是路由上最後一個Proxy)
REMOTE_HOST: 扔出REQUEST的客戶端主機名(也可能是路由上最後一個Proxy)
REMOTE_USER:扔出REQUEST的客戶端認證用戶名
REMOTE_PORT:扔出REQUEST的客戶端端口號
REMOTE_IDENT:扔出REQUEST的客戶端用戶名(支持IDENT協議的時候才有用)
HTTP_X_FORWARDED_FOR:接續的原始IP地址
HTTP_VIA:Proxy的信息
HTTP_FORWARDED:Proxy的URI、以及客戶端的全域名(FQDN)
HTTP_CACHE_CONTROL:Cache的控制信息(比如max-age=259200 最長時間)
HTTP_PROXY_CONNECTION:代理的接續狀態
HTTP_SP_HOST:接續的原始IP地址
HTTP_CACHE_INFO:高速緩存信息
HTTP_CLIENT_IP:客戶端IP(TrafficServer或者NetscapeProxy會使用此變量)
HTTP_MAX_FORWARDS:最多路經幾個Proxy
HTTP_ACCEPT: 客戶端的瀏覽器支持的MIME種類
HTTP_ACCEPT_CHARSET:客戶端瀏覽器支持的字符集
HTTP_ACCEPT_ENCODING:客戶端瀏覽器支持的編碼方式(比如gzip,deflate等等)
HTTP_ACCEPT_LANGUAGE:客戶端瀏覽器支持的語種(比如cn,en等等)
HTTP_CONNECTION:HTTP接續的狀態(比如keep-alive等等)
HTTP_COOKIE:對當前URL所保留的相關Cookie信息
HTTP_FROM:客戶端瀏覽器所設定的email地址
HTTP_HOST:客戶端所要訪問的主機名
HTTP_PRAGMA:Cache模式(對HTTP 1.0有效)
HTTP_REFERER:本次訪問前的上次訪問URL地址
HTTP_UA_CPU:客戶端的CPU信息
HTTP_UA_OS:客戶端的OS信息
HTTP_USER_AGENT:客戶但瀏覽器的版本信息

2014年4月8日 星期二

Node.js 時間格式輸出

Moment.js
http://momentjs.com/

var moment = require('moment');
moment().format();


Day.js
https://github.com/iamkun/dayjs

dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');

2014年3月31日 星期一

Node.js 上傳檔案大小限制

原始碼 objects.h 中參數
static const int kMaxLength = 0x3fffffff; //1GB
static const int kMaxLength = 0x10000000000; //1TB

2014年2月19日 星期三

Windows環境變數、標準路徑變數表

Windows Environment Variables:
VariableDefault value: Windows XPDefault value: Windows 7/2008
%ALLUSERSPROFILE%C:\Documents and Settings\All UsersC:\ProgramData
%APPDATA%C:\Documents and Settings\{username}\Application DataC:\Users\{username}\AppData\Roaming
%CommonProgramFiles%C:\Program Files\Common FilesC:\Program Files\Common Files
%COMMONPROGRAMFILES(x86)%C:\Program Files (x86)\Common FilesC:\Program Files (x86)\Common Files
%COMPUTERNAME%{computername}{computername}
%COMSPEC%C:\Windows\System32\cmd.exeC:\Windows\System32\cmd.exe
%HOMEDRIVE%C:C:
%HOMEPATH%\Documents and Settings\{username}\Users\{username}
%LOCALAPPDATA%N/A (but can be manually added LOCALAPPDATA=%USERPROFILE%\Local Settings\Application Data)C:\Users\{username}\AppData\Local
%LOGONSERVER%\\{domain_logon_server}\\{domain_logon_server}
%PATH%C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem;{plus program paths}C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem;{plus program paths}
%PATHEXT%.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS ; .WSF; .WSH;.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS ; .WSF; .WSH; .MSC
%ProgramData%N/AC:\ProgramData
%ProgramFiles%C:\Program FilesC:\Program Files
%ProgramFiles(x86)% 1C:\Program Files (x86)C:\Program Files (x86)
%PROMPT%Code for current command prompt format,usually $P$G C:>Code for current command prompt format,usually $P$G C:>
%PSModulePath%N/A%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\
%Public%N/AC:\Users\Public
%SYSTEMDRIVE%C:C:
%SYSTEMROOT%C:\WindowsC:\Windows
%TEMP% and %TMP%C:\Documents and Settings\{username}\Local Settings\TempC:\Users\{Username}\AppData\Local\Temp
%USERDOMAIN%{userdomain}{userdomain}
%USERNAME%{username}{username}
%USERPROFILE%%SystemDrive%\Documents and Settings\{username}%SystemDrive%\Users\{username}
%WINDIR%C:\WindowsC:\Windows

2014年2月14日 星期五

MongoDB 指令

進入MongoDB主控台
bin/mongo.exe

顯示資料庫們
show dbs

使用資料庫
use test

顯示資料表們
show collections

show tables

搜尋整個資料表
db.YOUR_TABLE.find()

刪除資料表內資料
db.foo.remove({})

刪除資料表
db.foo.drop()

釋放不需要的空間
db.repairDatabase()

FYI:
http://netkiller.github.io/nosql/mongodb/mongo.html

建立 admin 帳號密碼
use admin
db.createUser({
    user: "admin帳號",
    pwd: "admin密碼",
    roles: [ { role: "root", db: "admin" } ]
})

登入 admin 建立一般 user 帳號密碼
use admin
db.auth("admin帳號","admin密碼")

db.createUser({
    user: "user帳號",
    pwd: "user密碼",
    roles: [ { role: "readWrite", db: "user資料庫" } ]
})

(舊)建立admin帳號密碼
use admin
db.createUser(
  {
    user: "admin",
    pwd: "密碼",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

(舊)建立product帳號密碼
use 資料庫
db.createUser(
    {
        user: "帳號",
        pwd: "密碼",
        roles: [ { role: "dbAdmin", db: "資料庫" } ]
    }
)

資料庫還原
mongorestore -d airdental --directoryperdb C:\restore\airdental