2014年2月24日 星期一

Advanced JS Chapter 9

安裝MongoDB:
http://qqboxy.blogspot.com/2013/08/mongodb-nosql-server-on-windows.html

Node.js安裝Mongoose Addon:


Mongoose手冊:
http://mongoosejs.com/docs/guide.html

學習步驟:
1. 學習SQL、NoSQL的基礎概念。
2. 學習建立MongoDB資料庫。
3. 學習使用Mongoose建立一筆資料。

作業:
1. 使用Mongoose建立CRUD(Create、Read、Update、Delete)的動作。

2014年2月19日 星期三

2014年2月17日 星期一

Advanced JS Chapter 7

流暢介面寫法:
http://codeboxy.blogspot.com/2013/10/fluent-interface-with-prototype.html

學習步驟:
1. 學習使用流暢介面寫法撰寫程式碼。

作業:
1. 建立網站登入系統及APP操作介面採用流暢介面寫法撰寫。

2014年2月13日 星期四

Advanced JS Chapter 6

Express資料夾權限控制:
http://codeboxy.blogspot.com/2013/10/folder-access-restrictions-in-nodejs.html

學習步驟:
1. 學習使用Session建立網頁權限控制。

作業:
1. 建立網站登入系統及APP操作介面。

2014年2月12日 星期三

Advanced JS Chapter 5

使用JavaScript在目標前後插入或包覆標籤:
http://codeboxy.blogspot.com/2011/10/javascript-insertbefore-insertafter.html

學習步驟:
1. 學習虛擬物件的概念。
2. 虛擬物件的應用。

作業:
1. 使用虛擬物件完善網站。

Advanced JS Chapter 4

Mimetype Table
Node.js (extTypes.js):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
module.exports = {
"3gp" : "video/3gpp",
"a" : "application/octet-stream",
"ai" : "application/postscript",
"aif" : "audio/x-aiff",
"aiff" : "audio/x-aiff",
"asc" : "application/pgp-signature",
"asf" : "video/x-ms-asf",
"asm" : "text/x-asm",
"asx" : "video/x-ms-asf",
"atom" : "application/atom+xml",
"au" : "audio/basic",
"avi" : "video/x-msvideo",
"bat" : "application/x-msdownload",
"bin" : "application/octet-stream",
"bmp" : "image/bmp",
"bz2" : "application/x-bzip2",
"c" : "text/x-c",
"cab" : "application/vnd.ms-cab-compressed",
"cc" : "text/x-c",
"chm" : "application/vnd.ms-htmlhelp",
"class" : "application/octet-stream",
"com" : "application/x-msdownload",
"conf" : "text/plain",
"cpp" : "text/x-c",
"crt" : "application/x-x509-ca-cert",
"css" : "text/css",
"csv" : "text/csv",
"cxx" : "text/x-c",
"deb" : "application/x-debian-package",
"der" : "application/x-x509-ca-cert",
"diff" : "text/x-diff",
"djv" : "image/vnd.djvu",
"djvu" : "image/vnd.djvu",
"dll" : "application/x-msdownload",
"dmg" : "application/octet-stream",
"doc" : "application/msword",
"dot" : "application/msword",
"dtd" : "application/xml-dtd",
"dvi" : "application/x-dvi",
"ear" : "application/java-archive",
"eml" : "message/rfc822",
"eps" : "application/postscript",
"exe" : "application/x-msdownload",
"f" : "text/x-fortran",
"f77" : "text/x-fortran",
"f90" : "text/x-fortran",
"flv" : "video/x-flv",
"for" : "text/x-fortran",
"gem" : "application/octet-stream",
"gemspec" : "text/x-script.ruby",
"gif" : "image/gif",
"gz" : "application/x-gzip",
"h" : "text/x-c",
"hh" : "text/x-c",
"htm" : "text/html",
"html" : "text/html",
"ico" : "image/vnd.microsoft.icon",
"ics" : "text/calendar",
"ifb" : "text/calendar",
"iso" : "application/octet-stream",
"jar" : "application/java-archive",
"java" : "text/x-java-source",
"jnlp" : "application/x-java-jnlp-file",
"jpeg" : "image/jpeg",
"jpg" : "image/jpeg",
"js" : "application/javascript",
"json" : "application/json",
"log" : "text/plain",
"m3u" : "audio/x-mpegurl",
"m4v" : "video/mp4",
"man" : "text/troff",
"mathml" : "application/mathml+xml",
"mbox" : "application/mbox",
"mdoc" : "text/troff",
"me" : "text/troff",
"mid" : "audio/midi",
"midi" : "audio/midi",
"mime" : "message/rfc822",
"mml" : "application/mathml+xml",
"mng" : "video/x-mng",
"mov" : "video/quicktime",
"mp3" : "audio/mpeg",
"mp4" : "video/mp4",
"mp4v" : "video/mp4",
"mpeg" : "video/mpeg",
"mpg" : "video/mpeg",
"ms" : "text/troff",
"msi" : "application/x-msdownload",
"odp" : "application/vnd.oasis.opendocument.presentation",
"ods" : "application/vnd.oasis.opendocument.spreadsheet",
"odt" : "application/vnd.oasis.opendocument.text",
"ogg" : "application/ogg",
"p" : "text/x-pascal",
"pas" : "text/x-pascal",
"pbm" : "image/x-portable-bitmap",
"pdf" : "application/pdf",
"pem" : "application/x-x509-ca-cert",
"pgm" : "image/x-portable-graymap",
"pgp" : "application/pgp-encrypted",
"pkg" : "application/octet-stream",
"pl" : "text/x-script.perl",
"pm" : "text/x-script.perl-module",
"png" : "image/png",
"pnm" : "image/x-portable-anymap",
"ppm" : "image/x-portable-pixmap",
"pps" : "application/vnd.ms-powerpoint",
"ppt" : "application/vnd.ms-powerpoint",
"ps" : "application/postscript",
"psd" : "image/vnd.adobe.photoshop",
"py" : "text/x-script.python",
"qt" : "video/quicktime",
"ra" : "audio/x-pn-realaudio",
"rake" : "text/x-script.ruby",
"ram" : "audio/x-pn-realaudio",
"rar" : "application/x-rar-compressed",
"rb" : "text/x-script.ruby",
"rdf" : "application/rdf+xml",
"roff" : "text/troff",
"rpm" : "application/x-redhat-package-manager",
"rss" : "application/rss+xml",
"rtf" : "application/rtf",
"ru" : "text/x-script.ruby",
"s" : "text/x-asm",
"sgm" : "text/sgml",
"sgml" : "text/sgml",
"sh" : "application/x-sh",
"sig" : "application/pgp-signature",
"snd" : "audio/basic",
"so" : "application/octet-stream",
"svg" : "image/svg+xml",
"svgz" : "image/svg+xml",
"swf" : "application/x-shockwave-flash",
"t" : "text/troff",
"tar" : "application/x-tar",
"tbz" : "application/x-bzip-compressed-tar",
"tcl" : "application/x-tcl",
"tex" : "application/x-tex",
"texi" : "application/x-texinfo",
"texinfo" : "application/x-texinfo",
"text" : "text/plain",
"tif" : "image/tiff",
"tiff" : "image/tiff",
"torrent" : "application/x-bittorrent",
"tr" : "text/troff",
"txt" : "text/plain",
"vcf" : "text/x-vcard",
"vcs" : "text/x-vcalendar",
"vrml" : "model/vrml",
"war" : "application/java-archive",
"wav" : "audio/x-wav",
"wma" : "audio/x-ms-wma",
"wmv" : "video/x-ms-wmv",
"wmx" : "video/x-ms-wmx",
"wrl" : "model/vrml",
"wsdl" : "application/wsdl+xml",
"xbm" : "image/x-xbitmap",
"xhtml" : "application/xhtml+xml",
"xls" : "application/vnd.ms-excel",
"xml" : "application/xml",
"xpm" : "image/x-xpixmap",
"xsl" : "application/xml",
"xslt" : "application/xslt+xml",
"yaml" : "text/yaml",
"yml" : "text/yaml",
"zip" : "application/zip"
};

轉址下載用法
Node.js (main.js):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var express = require("./node_modules/express"),
fs = require("fs"),
extTypes = require("./extTypes.js");
var app = express();
var port = 1337;
app.listen(port);
app.use('/', express.static(__dirname + '/html/'));
app.get("/download", function(req, res) {
var file = "./upload/20140210/ahg056fg01sa40df8sd9";
var filename = "firefox.png";
var mimetype = extTypes["png"];
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
console.log("Start express server");

學習步驟:
1. 檔案網路安全概念。
2. 學習如何將現有下載功能改成轉址方式。

作業:
1. 採用更安全的方式,利用讀檔寫檔設計一個可編輯公告內容的網站。