Browse Source

nodejs 포함

tobby48 6 years ago
parent
commit
32540c8dcd
40 changed files with 1583 additions and 0 deletions
  1. 1
    0
      src/main/nodejs/.gitignore
  2. 20
    0
      src/main/nodejs/README.md
  3. 5
    0
      src/main/nodejs/api-call.js
  4. 76
    0
      src/main/nodejs/build.gradle
  5. 25
    0
      src/main/nodejs/client.js
  6. 27
    0
      src/main/nodejs/eventloop.js
  7. 29
    0
      src/main/nodejs/express-app.js
  8. 19
    0
      src/main/nodejs/express-mysql-ranking.js
  9. 7
    0
      src/main/nodejs/file-async.js
  10. 9
    0
      src/main/nodejs/file-async2.js
  11. 6
    0
      src/main/nodejs/file-sync.js
  12. 10
    0
      src/main/nodejs/hello-world-server.js
  13. 5
    0
      src/main/nodejs/hello.html
  14. 1
    0
      src/main/nodejs/input.txt
  15. 23
    0
      src/main/nodejs/mysql.js
  16. 32
    0
      src/main/nodejs/naver-router/main.js
  17. 19
    0
      src/main/nodejs/naver-search.js
  18. 23
    0
      src/main/nodejs/naver-views/index.html
  19. 32
    0
      src/main/nodejs/naver-views/search.ejs
  20. 5
    0
      src/main/nodejs/nodejs.html
  21. 747
    0
      src/main/nodejs/package-lock.json
  22. 17
    0
      src/main/nodejs/package.json
  23. 4
    0
      src/main/nodejs/public/css/style.css
  24. BIN
      src/main/nodejs/public/img/nodejs.png
  25. 5
    0
      src/main/nodejs/python.html
  26. 21
    0
      src/main/nodejs/router/main.js
  27. 29
    0
      src/main/nodejs/router/mysql-module.js
  28. 235
    0
      src/main/nodejs/sample.sql
  29. 7
    0
      src/main/nodejs/server.js
  30. 17
    0
      src/main/nodejs/summer-winter.js
  31. 7
    0
      src/main/nodejs/summer.html
  32. 32
    0
      src/main/nodejs/url-module.js
  33. 8
    0
      src/main/nodejs/views/body.ejs
  34. 2
    0
      src/main/nodejs/views/header.ejs
  35. 16
    0
      src/main/nodejs/views/index.ejs
  36. 8
    0
      src/main/nodejs/views/index1.ejs
  37. 9
    0
      src/main/nodejs/views/nodejs.html
  38. 5
    0
      src/main/nodejs/views/python.html
  39. 33
    0
      src/main/nodejs/views2/index.ejs
  40. 7
    0
      src/main/nodejs/winter.html

+ 1
- 0
src/main/nodejs/.gitignore View File

@@ -0,0 +1 @@
1
+/node_modules/

+ 20
- 0
src/main/nodejs/README.md View File

@@ -0,0 +1,20 @@
1
+
2
+
3
+# HelloWorld
4
+
5
+
6
+
7
+## Usage
8
+
9
+
10
+
11
+## Developing
12
+
13
+
14
+
15
+### Tools
16
+
17
+Created with [Nodeclipse](https://github.com/Nodeclipse/nodeclipse-1)
18
+ ([Eclipse Marketplace](http://marketplace.eclipse.org/content/nodeclipse), [site](http://www.nodeclipse.org))   
19
+
20
+Nodeclipse is free open-source project that grows with your contributions.

+ 5
- 0
src/main/nodejs/api-call.js View File

@@ -0,0 +1,5 @@
1
+var request=require('request');
2
+request('API 주소',function(error, response, body){
3
+if(!error&&response.statusCode==200)
4
+  console.log(body);
5
+});

+ 76
- 0
src/main/nodejs/build.gradle View File

@@ -0,0 +1,76 @@
1
+/*		Node.js
2
+*	http://www.nodeclipse.org/projects/gradle
3
+* Nodeclipse/Enide build.gradle template/drop-in for Node.js/Avatar.js project, version 0.16
4
+*	https://github.com/Nodeclipse/nodeclipse-1/blob/master/org.nodeclipse.ui/templates/hello-world/build.gradle
5
+* This file lets you optionally run Node.js app as Java Avatar.js app
6
+* Usage
7
+*	1. put in project root
8
+*	2. check version numbers, OS (no x32 bit OS support)
9
+*	3. execute `gradle copyLibs` to get libraries locally (then you can proceed even without gradle)
10
+*	4. use from command line `gradle run` or with http://marketplace.eclipse.org/content/gradle Run As ->
11
+* Support for this template
12
+*	https://github.com/nodeclipse/nodeclipse-1/issues/
13
+* History
14
+*	2014-04-25 rename to run, add <<
15
+*	2014-04-29 state that `gradle copyLibs` step is required
16
+*	2014-05-20 =['src'] instead of 'src'
17
+* @author Paul Verest
18
+*/
19
+println GradleVersion.current().prettyPrint()
20
+
21
+apply plugin: 'java'
22
+apply plugin: 'eclipse'
23
+apply plugin: 'idea'
24
+
25
+repositories {
26
+	maven {
27
+        url "https://maven.java.net/content/repositories/public/"
28
+    }
29
+    //mavenCentral()
30
+    //jcenter()
31
+}
32
+
33
+dependencies {
34
+    compile "com.oracle:avatar-js:0.10.25-SNAPSHOT"
35
+    compile "com.oracle:libavatar-js-win-x64:0.10.25-SNAPSHOT"
36
+    //compile fileTree(dir: 'libs', include: '*.jar')
37
+    //testCompile "junit:junit:4.11"
38
+}
39
+
40
+task copyLibs(type: Copy) {
41
+    from configurations.compile
42
+    into 'lib' // ! not libs
43
+    //TODO files need to be renamed
44
+}
45
+
46
+/* uncomment for adding Java sources
47
+sourceSets {
48
+    main {
49
+        java.srcDirs = ['src']
50
+        resources.srcDirs = ['src']
51
+    }
52
+    test {
53
+        java.srcDirs = ['tests']
54
+        resources.srcDirs = ['tests']
55
+    }
56
+}
57
+task initSourceFolders { // add << before { to prevent executing during configuration phase
58
+   sourceSets*.java.srcDirs*.each { it.mkdirs() }
59
+   sourceSets*.resources.srcDirs*.each { it.mkdirs() }
60
+}
61
+*/
62
+
63
+task run(type: Exec) <<{
64
+	println 'runHelloWorld1'
65
+	// java -Djava.library.path=lib -jar lib/avatar-js.jar hello-world-server.js
66
+	commandLine 'java', '-Djava.library.path=lib', '-jar', 'lib/avatar-js.jar', 'hello-world-server.js'
67
+	println 'runHelloWorld1 finished'
68
+}
69
+task run2(type: JavaExec) <<{
70
+	println 'runHelloWorld2'
71
+	args 'hello-world-server.js'
72
+	main 'com.oracle.avatar.js.Server'
73
+	systemProperties 'java.library.path':'lib'
74
+	classpath 'lib/avatar-js.jar'
75
+	println 'runHelloWorld2 finished'
76
+}

+ 25
- 0
src/main/nodejs/client.js View File

@@ -0,0 +1,25 @@
1
+var http = require('http');
2
+
3
+// HTTPRequest의 옵션 설정
4
+var options = {
5
+   host: 'localhost',
6
+   port: '1337'
7
+};
8
+
9
+// 콜백 함수로 Response를 받아온다
10
+var callback = function(response){
11
+   // response 이벤트가 감지되면 데이터를 body에 받아온다
12
+   var body = '';
13
+   response.on('data', function(data) {
14
+      body += data;
15
+   });
16
+   
17
+   // end 이벤트가 감지되면 데이터 수신을 종료하고 내용을 출력한다
18
+   response.on('end', function() {
19
+      // 데이저 수신 완료
20
+      console.log(body);
21
+   });
22
+}
23
+// 서버에 HTTP Request 를 날린다.
24
+var req = http.request(options, callback);
25
+req.end();

+ 27
- 0
src/main/nodejs/eventloop.js View File

@@ -0,0 +1,27 @@
1
+var events = require('events');
2
+var eventEmitter = new events.EventEmitter();
3
+eventEmitter.on('event', function print(){
4
+    console.log("이벤트 동작");
5
+});
6
+eventEmitter.emit('event');
7
+
8
+var events = require('events');
9
+var eventEmitter = new events.EventEmitter();
10
+eventEmitter.on('event', () =>{
11
+    console.log("익명 이벤트 동작");
12
+});
13
+eventEmitter.emit('event');
14
+
15
+var events = require('events');
16
+var eventEmitter = new events.EventEmitter();
17
+eventEmitter.on('event', function(a){
18
+    console.log(a + " : 이벤트 동작");
19
+});
20
+eventEmitter.emit('event', 'function X 매개변수');
21
+
22
+var events = require('events');
23
+var eventEmitter = new events.EventEmitter();
24
+eventEmitter.on('event', (a) =>{
25
+    console.log(a + " : 이벤트 동작");
26
+});
27
+eventEmitter.emit('event', 'function O 매개변수');

+ 29
- 0
src/main/nodejs/express-app.js View File

@@ -0,0 +1,29 @@
1
+//var express = require('express');
2
+//var app = express();
3
+//
4
+//app.get('/', function(req, res){
5
+//    res.send('Hello World');
6
+//});
7
+//
8
+//var server = app.listen(3000, function(){
9
+//    console.log("Express server has started on port 3000")
10
+//})
11
+
12
+var express = require('express');
13
+var app = express();
14
+//	라우터 모듈인 main.js 를 불러와서 app 에 전달
15
+var router = require('./router/main')(app);
16
+
17
+//	서버에서 읽을 수 있는 HTML의 위치
18
+app.set('views', __dirname + '/views');
19
+
20
+//	서버가 HTML렌더링을 할 때, EJS 엔진을 사용
21
+app.set('view engine', 'ejs');
22
+app.engine('html', require('ejs').renderFile);
23
+
24
+var server = app.listen(3000, function(){
25
+    console.log("Express server has started on port 3000")
26
+});
27
+
28
+//서버에서 읽을 수 있는 정적 파일 위치
29
+app.use(express.static('public'));

+ 19
- 0
src/main/nodejs/express-mysql-ranking.js View File

@@ -0,0 +1,19 @@
1
+var express = require('express');
2
+
3
+var app = express();
4
+//	라우터 모듈인 mysql-module.js 를 불러와서 app 에 전달
5
+var router = require('./router/mysql-module')(app);
6
+
7
+//	서버에서 읽을 수 있는 HTML의 위치
8
+app.set('views', __dirname + '/views2');
9
+
10
+//	서버가 HTML렌더링을 할 때, EJS 엔진을 사용
11
+app.set('view engine', 'ejs');
12
+app.engine('html', require('ejs').renderFile);
13
+
14
+var server = app.listen(3000, function(){
15
+    console.log("Express server has started on port 3000")
16
+});
17
+
18
+//서버에서 읽을 수 있는 정적 파일 위치
19
+app.use(express.static('public'));

+ 7
- 0
src/main/nodejs/file-async.js View File

@@ -0,0 +1,7 @@
1
+var fs = require("fs");
2
+
3
+fs.readFile('input.txt', function (err, data) {
4
+    if (err) return console.error(err);
5
+    console.log(data.toString());
6
+});
7
+console.log("프로그램 종료");

+ 9
- 0
src/main/nodejs/file-async2.js View File

@@ -0,0 +1,9 @@
1
+var fs = require("fs");
2
+
3
+var f = function (err, data) {
4
+    if (err) return console.error(err);
5
+    console.log(data.toString());
6
+}
7
+
8
+fs.readFile('input.txt', f);
9
+console.log("프로그램 종료");

+ 6
- 0
src/main/nodejs/file-sync.js View File

@@ -0,0 +1,6 @@
1
+var fs = require("fs");
2
+
3
+var data = fs.readFileSync('input.txt');
4
+
5
+console.log(data.toString());
6
+console.log("프로그램 종료");

+ 10
- 0
src/main/nodejs/hello-world-server.js View File

@@ -0,0 +1,10 @@
1
+var http = require('http');
2
+var fs = require('fs');
3
+http.createServer(function handler(req, res) {
4
+	fs.readFile('hello.html', function(err, data) {
5
+	    res.writeHead(200, {'Content-Type': 'text/html'});
6
+	    res.write(data);
7
+	    res.end();
8
+	  });
9
+}).listen(1337, '127.0.0.1');
10
+console.log('Server running at http://127.0.0.1:1337/');

+ 5
- 0
src/main/nodejs/hello.html View File

@@ -0,0 +1,5 @@
1
+<html>
2
+<body>
3
+	<h1>Hello</h1>
4
+</body>
5
+</html>

+ 1
- 0
src/main/nodejs/input.txt View File

@@ -0,0 +1 @@
1
+제가 먼저 읽어오나요?

+ 23
- 0
src/main/nodejs/mysql.js View File

@@ -0,0 +1,23 @@
1
+var mysql = require('mysql');
2
+var connection = mysql.createConnection({
3
+  host     : 'localhost',
4
+  user     : 'root',
5
+  password : 'tokki1127',
6
+  port     : 3306,
7
+  database : 'sample'
8
+});
9
+
10
+connection.connect();
11
+
12
+connection.query('SELECT * from policy', function(err, rows, fields) {
13
+  if (!err){
14
+	  for(var i=0; i < rows.length; i++){
15
+		  console.log(rows[i]);
16
+		  console.log(rows[i].rank + " " + rows[i].keyword + " " + rows[i].num);
17
+	  }
18
+  }
19
+  else
20
+    console.log('Error while performing Query.', err);
21
+});
22
+
23
+connection.end();

+ 32
- 0
src/main/nodejs/naver-router/main.js View File

@@ -0,0 +1,32 @@
1
+
2
+module.exports = function(app, fs)
3
+{
4
+     app.get('/',function(req,res){
5
+    	 res.render('index.html')
6
+     });
7
+     app.get('/search', function (req, res) {
8
+    	 var client_id = 'OJgN42xxZiJXpnZtCH1j';
9
+    	 var client_secret = 'crXggqJhhW';
10
+    	 var api_url = 'https://openapi.naver.com/v1/search/blog?query=' + encodeURI(req.query.query); // json 결과
11
+//   	var api_url = 'https://openapi.naver.com/v1/search/blog.xml?query=' + encodeURI(req.query.query); // xml 결과
12
+    	 var request = require('request');
13
+    	 var options = {
14
+    			 url: api_url,
15
+    			 headers: {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret': client_secret}
16
+    	 };
17
+    	 request.get(options, function (error, response, body) {
18
+    		 if (!error && response.statusCode == 200) {
19
+//    			 res.writeHead(200, {'Content-Type': 'text/json;charset=utf-8'});
20
+//    			 res.end(body);
21
+    			 var body = JSON.parse(body); 
22
+    			 res.render('search', {
23
+					title: req.query.query + " 키워드",
24
+					values: body.items
25
+    			 })
26
+    		 } else {
27
+    			 res.status(response.statusCode).end();
28
+    			 console.log('error = ' + response.statusCode);
29
+    		 }
30
+    	 });
31
+	});
32
+}

+ 19
- 0
src/main/nodejs/naver-search.js View File

@@ -0,0 +1,19 @@
1
+var express = require('express');
2
+var app = express();
3
+
4
+//라우터 모듈인 main.js 를 불러와서 app 에 전달
5
+var router = require('./naver-router/main')(app);
6
+
7
+//	서버에서 읽을 수 있는 HTML의 위치
8
+app.set('views', __dirname + '/naver-views');
9
+
10
+//	서버가 HTML렌더링을 할 때, EJS 엔진을 사용
11
+app.set('view engine', 'ejs');
12
+app.engine('html', require('ejs').renderFile);
13
+
14
+//서버에서 읽을 수 있는 정적 파일 위치
15
+app.use(express.static('public'));
16
+
17
+app.listen(3000, function () {
18
+	console.log('http://127.0.0.1:3000 app listening on port 3000!');
19
+});

+ 23
- 0
src/main/nodejs/naver-views/index.html View File

@@ -0,0 +1,23 @@
1
+<html>
2
+	<head>
3
+		<meta charset="utf-8">
4
+		<title>네이버 블로그 검색순위</title>
5
+		
6
+		<script type="text/javascript">
7
+			function goSearch(){
8
+ 				/*
9
+	 				const http = new XMLHttpRequest()
10
+					http.open("GET", "/search?query=" + document.getElementById("test").value)
11
+					http.send()
12
+				*/
13
+				location.href = "/search?query=" + document.getElementById("test").value;
14
+			}
15
+		</script>
16
+	</head>
17
+	<body>
18
+    	<h1>네이버 블로그 검색순위</h1>
19
+    	<input id="test" type="text" />
20
+    	<input type="button" onclick="goSearch()" value="검색" />
21
+  	</body>
22
+  	
23
+</html>

+ 32
- 0
src/main/nodejs/naver-views/search.ejs View File

@@ -0,0 +1,32 @@
1
+<html>
2
+	<head>
3
+  		<title><%= title %></title>
4
+  	</head>
5
+  	<body>
6
+	    <h1><%= title %></h1>
7
+	    <table>
8
+			<thead>
9
+				<tr>
10
+					<th>제목</th>
11
+					<th>블로그이름</th>
12
+					<th>링크</th>
13
+				</tr>
14
+			</thead>
15
+			<tbody>
16
+				<% for(var i=0; i<values.length; i++){ %>
17
+				<tr>
18
+					<td>
19
+		                <%= values[i].title %>
20
+	            	</td>
21
+	            	<td>
22
+		                <%= values[i].bloggername %>
23
+	            	</td>
24
+	            	<td>
25
+		                <a href="<%= values[i].link %>" target="_blank" > <%= values[i].bloggername %> </a>
26
+	            	</td>
27
+	            </tr>
28
+	        	<% } %>
29
+		    </tbody>
30
+		</table>
31
+  	</body>
32
+</html>

+ 5
- 0
src/main/nodejs/nodejs.html View File

@@ -0,0 +1,5 @@
1
+<html>
2
+<body>
3
+	<h1>nodejs</h1>
4
+</body>
5
+</html>

+ 747
- 0
src/main/nodejs/package-lock.json View File

@@ -0,0 +1,747 @@
1
+{
2
+  "name": "swhnodejs",
3
+  "version": "1.0.0",
4
+  "lockfileVersion": 1,
5
+  "requires": true,
6
+  "dependencies": {
7
+    "accepts": {
8
+      "version": "1.3.7",
9
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
10
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
11
+      "requires": {
12
+        "mime-types": "~2.1.24",
13
+        "negotiator": "0.6.2"
14
+      }
15
+    },
16
+    "ajv": {
17
+      "version": "6.10.2",
18
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
19
+      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
20
+      "requires": {
21
+        "fast-deep-equal": "^2.0.1",
22
+        "fast-json-stable-stringify": "^2.0.0",
23
+        "json-schema-traverse": "^0.4.1",
24
+        "uri-js": "^4.2.2"
25
+      }
26
+    },
27
+    "array-flatten": {
28
+      "version": "1.1.1",
29
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
30
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
31
+    },
32
+    "asn1": {
33
+      "version": "0.2.4",
34
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
35
+      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
36
+      "requires": {
37
+        "safer-buffer": "~2.1.0"
38
+      }
39
+    },
40
+    "assert-plus": {
41
+      "version": "1.0.0",
42
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
43
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
44
+    },
45
+    "asynckit": {
46
+      "version": "0.4.0",
47
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
48
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
49
+    },
50
+    "aws-sign2": {
51
+      "version": "0.7.0",
52
+      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
53
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
54
+    },
55
+    "aws4": {
56
+      "version": "1.8.0",
57
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
58
+      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
59
+    },
60
+    "bcrypt-pbkdf": {
61
+      "version": "1.0.2",
62
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
63
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
64
+      "requires": {
65
+        "tweetnacl": "^0.14.3"
66
+      }
67
+    },
68
+    "bignumber.js": {
69
+      "version": "7.2.1",
70
+      "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz",
71
+      "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ=="
72
+    },
73
+    "caseless": {
74
+      "version": "0.12.0",
75
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
76
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
77
+    },
78
+    "combined-stream": {
79
+      "version": "1.0.8",
80
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
81
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
82
+      "requires": {
83
+        "delayed-stream": "~1.0.0"
84
+      }
85
+    },
86
+    "content-disposition": {
87
+      "version": "0.5.2",
88
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
89
+      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
90
+    },
91
+    "content-type": {
92
+      "version": "1.0.4",
93
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
94
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
95
+    },
96
+    "cookie-signature": {
97
+      "version": "1.0.6",
98
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
99
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
100
+    },
101
+    "core-util-is": {
102
+      "version": "1.0.2",
103
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
104
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
105
+    },
106
+    "dashdash": {
107
+      "version": "1.14.1",
108
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
109
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
110
+      "requires": {
111
+        "assert-plus": "^1.0.0"
112
+      }
113
+    },
114
+    "debug": {
115
+      "version": "2.6.9",
116
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
117
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
118
+      "requires": {
119
+        "ms": "2.0.0"
120
+      }
121
+    },
122
+    "delayed-stream": {
123
+      "version": "1.0.0",
124
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
125
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
126
+    },
127
+    "destroy": {
128
+      "version": "1.0.4",
129
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
130
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
131
+    },
132
+    "ecc-jsbn": {
133
+      "version": "0.1.2",
134
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
135
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
136
+      "requires": {
137
+        "jsbn": "~0.1.0",
138
+        "safer-buffer": "^2.1.0"
139
+      }
140
+    },
141
+    "ee-first": {
142
+      "version": "1.1.1",
143
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
144
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
145
+    },
146
+    "ejs": {
147
+      "version": "2.4.2",
148
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.4.2.tgz",
149
+      "integrity": "sha1-cFfrSBKVj7cxhBzZyjUzQ+/ll7E="
150
+    },
151
+    "encodeurl": {
152
+      "version": "1.0.2",
153
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
154
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
155
+    },
156
+    "escape-html": {
157
+      "version": "1.0.3",
158
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
159
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
160
+    },
161
+    "etag": {
162
+      "version": "1.8.1",
163
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
164
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
165
+    },
166
+    "express": {
167
+      "version": "4.16.4",
168
+      "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
169
+      "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
170
+      "requires": {
171
+        "accepts": "~1.3.5",
172
+        "array-flatten": "1.1.1",
173
+        "body-parser": "1.18.3",
174
+        "content-disposition": "0.5.2",
175
+        "content-type": "~1.0.4",
176
+        "cookie": "0.3.1",
177
+        "cookie-signature": "1.0.6",
178
+        "debug": "2.6.9",
179
+        "depd": "~1.1.2",
180
+        "encodeurl": "~1.0.2",
181
+        "escape-html": "~1.0.3",
182
+        "etag": "~1.8.1",
183
+        "finalhandler": "1.1.1",
184
+        "fresh": "0.5.2",
185
+        "merge-descriptors": "1.0.1",
186
+        "methods": "~1.1.2",
187
+        "on-finished": "~2.3.0",
188
+        "parseurl": "~1.3.2",
189
+        "path-to-regexp": "0.1.7",
190
+        "proxy-addr": "~2.0.4",
191
+        "qs": "6.5.2",
192
+        "range-parser": "~1.2.0",
193
+        "safe-buffer": "5.1.2",
194
+        "send": "0.16.2",
195
+        "serve-static": "1.13.2",
196
+        "setprototypeof": "1.1.0",
197
+        "statuses": "~1.4.0",
198
+        "type-is": "~1.6.16",
199
+        "utils-merge": "1.0.1",
200
+        "vary": "~1.1.2"
201
+      },
202
+      "dependencies": {
203
+        "body-parser": {
204
+          "version": "1.18.3",
205
+          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
206
+          "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
207
+          "requires": {
208
+            "bytes": "3.0.0",
209
+            "content-type": "~1.0.4",
210
+            "debug": "2.6.9",
211
+            "depd": "~1.1.2",
212
+            "http-errors": "~1.6.3",
213
+            "iconv-lite": "0.4.23",
214
+            "on-finished": "~2.3.0",
215
+            "qs": "6.5.2",
216
+            "raw-body": "2.3.3",
217
+            "type-is": "~1.6.16"
218
+          }
219
+        },
220
+        "bytes": {
221
+          "version": "3.0.0",
222
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
223
+          "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
224
+        },
225
+        "cookie": {
226
+          "version": "0.3.1",
227
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
228
+          "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
229
+        },
230
+        "depd": {
231
+          "version": "1.1.2",
232
+          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
233
+          "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
234
+        },
235
+        "iconv-lite": {
236
+          "version": "0.4.23",
237
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
238
+          "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
239
+          "requires": {
240
+            "safer-buffer": ">= 2.1.2 < 3"
241
+          }
242
+        },
243
+        "raw-body": {
244
+          "version": "2.3.3",
245
+          "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
246
+          "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
247
+          "requires": {
248
+            "bytes": "3.0.0",
249
+            "http-errors": "1.6.3",
250
+            "iconv-lite": "0.4.23",
251
+            "unpipe": "1.0.0"
252
+          }
253
+        }
254
+      }
255
+    },
256
+    "extend": {
257
+      "version": "3.0.2",
258
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
259
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
260
+    },
261
+    "extsprintf": {
262
+      "version": "1.3.0",
263
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
264
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
265
+    },
266
+    "fast-deep-equal": {
267
+      "version": "2.0.1",
268
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
269
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
270
+    },
271
+    "fast-json-stable-stringify": {
272
+      "version": "2.0.0",
273
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
274
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
275
+    },
276
+    "finalhandler": {
277
+      "version": "1.1.1",
278
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
279
+      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
280
+      "requires": {
281
+        "debug": "2.6.9",
282
+        "encodeurl": "~1.0.2",
283
+        "escape-html": "~1.0.3",
284
+        "on-finished": "~2.3.0",
285
+        "parseurl": "~1.3.2",
286
+        "statuses": "~1.4.0",
287
+        "unpipe": "~1.0.0"
288
+      }
289
+    },
290
+    "forever-agent": {
291
+      "version": "0.6.1",
292
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
293
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
294
+    },
295
+    "form-data": {
296
+      "version": "2.3.3",
297
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
298
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
299
+      "requires": {
300
+        "asynckit": "^0.4.0",
301
+        "combined-stream": "^1.0.6",
302
+        "mime-types": "^2.1.12"
303
+      }
304
+    },
305
+    "forwarded": {
306
+      "version": "0.1.2",
307
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
308
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
309
+    },
310
+    "fresh": {
311
+      "version": "0.5.2",
312
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
313
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
314
+    },
315
+    "getpass": {
316
+      "version": "0.1.7",
317
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
318
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
319
+      "requires": {
320
+        "assert-plus": "^1.0.0"
321
+      }
322
+    },
323
+    "har-schema": {
324
+      "version": "2.0.0",
325
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
326
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
327
+    },
328
+    "har-validator": {
329
+      "version": "5.1.3",
330
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
331
+      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
332
+      "requires": {
333
+        "ajv": "^6.5.5",
334
+        "har-schema": "^2.0.0"
335
+      }
336
+    },
337
+    "http-errors": {
338
+      "version": "1.6.3",
339
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
340
+      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
341
+      "requires": {
342
+        "depd": "~1.1.2",
343
+        "inherits": "2.0.3",
344
+        "setprototypeof": "1.1.0",
345
+        "statuses": ">= 1.4.0 < 2"
346
+      },
347
+      "dependencies": {
348
+        "depd": {
349
+          "version": "1.1.2",
350
+          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
351
+          "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
352
+        }
353
+      }
354
+    },
355
+    "http-signature": {
356
+      "version": "1.2.0",
357
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
358
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
359
+      "requires": {
360
+        "assert-plus": "^1.0.0",
361
+        "jsprim": "^1.2.2",
362
+        "sshpk": "^1.7.0"
363
+      }
364
+    },
365
+    "inherits": {
366
+      "version": "2.0.3",
367
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
368
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
369
+    },
370
+    "ipaddr.js": {
371
+      "version": "1.9.0",
372
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
373
+      "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
374
+    },
375
+    "is-typedarray": {
376
+      "version": "1.0.0",
377
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
378
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
379
+    },
380
+    "isarray": {
381
+      "version": "1.0.0",
382
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
383
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
384
+    },
385
+    "isstream": {
386
+      "version": "0.1.2",
387
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
388
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
389
+    },
390
+    "jsbn": {
391
+      "version": "0.1.1",
392
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
393
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
394
+    },
395
+    "json-schema": {
396
+      "version": "0.2.3",
397
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
398
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
399
+    },
400
+    "json-schema-traverse": {
401
+      "version": "0.4.1",
402
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
403
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
404
+    },
405
+    "json-stringify-safe": {
406
+      "version": "5.0.1",
407
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
408
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
409
+    },
410
+    "jsprim": {
411
+      "version": "1.4.1",
412
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
413
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
414
+      "requires": {
415
+        "assert-plus": "1.0.0",
416
+        "extsprintf": "1.3.0",
417
+        "json-schema": "0.2.3",
418
+        "verror": "1.10.0"
419
+      }
420
+    },
421
+    "media-typer": {
422
+      "version": "0.3.0",
423
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
424
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
425
+    },
426
+    "merge-descriptors": {
427
+      "version": "1.0.1",
428
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
429
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
430
+    },
431
+    "methods": {
432
+      "version": "1.1.2",
433
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
434
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
435
+    },
436
+    "mime": {
437
+      "version": "1.4.1",
438
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
439
+      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
440
+    },
441
+    "mime-db": {
442
+      "version": "1.40.0",
443
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
444
+      "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
445
+    },
446
+    "mime-types": {
447
+      "version": "2.1.24",
448
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
449
+      "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
450
+      "requires": {
451
+        "mime-db": "1.40.0"
452
+      }
453
+    },
454
+    "ms": {
455
+      "version": "2.0.0",
456
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
457
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
458
+    },
459
+    "mysql": {
460
+      "version": "2.17.1",
461
+      "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.17.1.tgz",
462
+      "integrity": "sha512-7vMqHQ673SAk5C8fOzTG2LpPcf3bNt0oL3sFpxPEEFp1mdlDcrLK0On7z8ZYKaaHrHwNcQ/MTUz7/oobZ2OyyA==",
463
+      "requires": {
464
+        "bignumber.js": "7.2.1",
465
+        "readable-stream": "2.3.6",
466
+        "safe-buffer": "5.1.2",
467
+        "sqlstring": "2.3.1"
468
+      }
469
+    },
470
+    "negotiator": {
471
+      "version": "0.6.2",
472
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
473
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
474
+    },
475
+    "oauth-sign": {
476
+      "version": "0.9.0",
477
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
478
+      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
479
+    },
480
+    "on-finished": {
481
+      "version": "2.3.0",
482
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
483
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
484
+      "requires": {
485
+        "ee-first": "1.1.1"
486
+      }
487
+    },
488
+    "parseurl": {
489
+      "version": "1.3.3",
490
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
491
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
492
+    },
493
+    "path-to-regexp": {
494
+      "version": "0.1.7",
495
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
496
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
497
+    },
498
+    "performance-now": {
499
+      "version": "2.1.0",
500
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
501
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
502
+    },
503
+    "process-nextick-args": {
504
+      "version": "2.0.1",
505
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
506
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
507
+    },
508
+    "proxy-addr": {
509
+      "version": "2.0.5",
510
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
511
+      "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
512
+      "requires": {
513
+        "forwarded": "~0.1.2",
514
+        "ipaddr.js": "1.9.0"
515
+      }
516
+    },
517
+    "psl": {
518
+      "version": "1.2.0",
519
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz",
520
+      "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA=="
521
+    },
522
+    "punycode": {
523
+      "version": "2.1.1",
524
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
525
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
526
+    },
527
+    "qs": {
528
+      "version": "6.5.2",
529
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
530
+      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
531
+    },
532
+    "range-parser": {
533
+      "version": "1.2.1",
534
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
535
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
536
+    },
537
+    "readable-stream": {
538
+      "version": "2.3.6",
539
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
540
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
541
+      "requires": {
542
+        "core-util-is": "~1.0.0",
543
+        "inherits": "~2.0.3",
544
+        "isarray": "~1.0.0",
545
+        "process-nextick-args": "~2.0.0",
546
+        "safe-buffer": "~5.1.1",
547
+        "string_decoder": "~1.1.1",
548
+        "util-deprecate": "~1.0.1"
549
+      }
550
+    },
551
+    "request": {
552
+      "version": "2.88.0",
553
+      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
554
+      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
555
+      "requires": {
556
+        "aws-sign2": "~0.7.0",
557
+        "aws4": "^1.8.0",
558
+        "caseless": "~0.12.0",
559
+        "combined-stream": "~1.0.6",
560
+        "extend": "~3.0.2",
561
+        "forever-agent": "~0.6.1",
562
+        "form-data": "~2.3.2",
563
+        "har-validator": "~5.1.0",
564
+        "http-signature": "~1.2.0",
565
+        "is-typedarray": "~1.0.0",
566
+        "isstream": "~0.1.2",
567
+        "json-stringify-safe": "~5.0.1",
568
+        "mime-types": "~2.1.19",
569
+        "oauth-sign": "~0.9.0",
570
+        "performance-now": "^2.1.0",
571
+        "qs": "~6.5.2",
572
+        "safe-buffer": "^5.1.2",
573
+        "tough-cookie": "~2.4.3",
574
+        "tunnel-agent": "^0.6.0",
575
+        "uuid": "^3.3.2"
576
+      }
577
+    },
578
+    "safe-buffer": {
579
+      "version": "5.1.2",
580
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
581
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
582
+    },
583
+    "safer-buffer": {
584
+      "version": "2.1.2",
585
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
586
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
587
+    },
588
+    "send": {
589
+      "version": "0.16.2",
590
+      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
591
+      "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
592
+      "requires": {
593
+        "debug": "2.6.9",
594
+        "depd": "~1.1.2",
595
+        "destroy": "~1.0.4",
596
+        "encodeurl": "~1.0.2",
597
+        "escape-html": "~1.0.3",
598
+        "etag": "~1.8.1",
599
+        "fresh": "0.5.2",
600
+        "http-errors": "~1.6.2",
601
+        "mime": "1.4.1",
602
+        "ms": "2.0.0",
603
+        "on-finished": "~2.3.0",
604
+        "range-parser": "~1.2.0",
605
+        "statuses": "~1.4.0"
606
+      },
607
+      "dependencies": {
608
+        "depd": {
609
+          "version": "1.1.2",
610
+          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
611
+          "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
612
+        }
613
+      }
614
+    },
615
+    "serve-static": {
616
+      "version": "1.13.2",
617
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
618
+      "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
619
+      "requires": {
620
+        "encodeurl": "~1.0.2",
621
+        "escape-html": "~1.0.3",
622
+        "parseurl": "~1.3.2",
623
+        "send": "0.16.2"
624
+      }
625
+    },
626
+    "setprototypeof": {
627
+      "version": "1.1.0",
628
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
629
+      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
630
+    },
631
+    "sqlstring": {
632
+      "version": "2.3.1",
633
+      "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
634
+      "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
635
+    },
636
+    "sshpk": {
637
+      "version": "1.16.1",
638
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
639
+      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
640
+      "requires": {
641
+        "asn1": "~0.2.3",
642
+        "assert-plus": "^1.0.0",
643
+        "bcrypt-pbkdf": "^1.0.0",
644
+        "dashdash": "^1.12.0",
645
+        "ecc-jsbn": "~0.1.1",
646
+        "getpass": "^0.1.1",
647
+        "jsbn": "~0.1.0",
648
+        "safer-buffer": "^2.0.2",
649
+        "tweetnacl": "~0.14.0"
650
+      }
651
+    },
652
+    "statuses": {
653
+      "version": "1.4.0",
654
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
655
+      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
656
+    },
657
+    "string_decoder": {
658
+      "version": "1.1.1",
659
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
660
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
661
+      "requires": {
662
+        "safe-buffer": "~5.1.0"
663
+      }
664
+    },
665
+    "tough-cookie": {
666
+      "version": "2.4.3",
667
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
668
+      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
669
+      "requires": {
670
+        "psl": "^1.1.24",
671
+        "punycode": "^1.4.1"
672
+      },
673
+      "dependencies": {
674
+        "punycode": {
675
+          "version": "1.4.1",
676
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
677
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
678
+        }
679
+      }
680
+    },
681
+    "tunnel-agent": {
682
+      "version": "0.6.0",
683
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
684
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
685
+      "requires": {
686
+        "safe-buffer": "^5.0.1"
687
+      }
688
+    },
689
+    "tweetnacl": {
690
+      "version": "0.14.5",
691
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
692
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
693
+    },
694
+    "type-is": {
695
+      "version": "1.6.18",
696
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
697
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
698
+      "requires": {
699
+        "media-typer": "0.3.0",
700
+        "mime-types": "~2.1.24"
701
+      }
702
+    },
703
+    "unpipe": {
704
+      "version": "1.0.0",
705
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
706
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
707
+    },
708
+    "uri-js": {
709
+      "version": "4.2.2",
710
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
711
+      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
712
+      "requires": {
713
+        "punycode": "^2.1.0"
714
+      }
715
+    },
716
+    "util-deprecate": {
717
+      "version": "1.0.2",
718
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
719
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
720
+    },
721
+    "utils-merge": {
722
+      "version": "1.0.1",
723
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
724
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
725
+    },
726
+    "uuid": {
727
+      "version": "3.3.2",
728
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
729
+      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
730
+    },
731
+    "vary": {
732
+      "version": "1.1.2",
733
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
734
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
735
+    },
736
+    "verror": {
737
+      "version": "1.10.0",
738
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
739
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
740
+      "requires": {
741
+        "assert-plus": "^1.0.0",
742
+        "core-util-is": "1.0.2",
743
+        "extsprintf": "^1.2.0"
744
+      }
745
+    }
746
+  }
747
+}

+ 17
- 0
src/main/nodejs/package.json View File

@@ -0,0 +1,17 @@
1
+{
2
+  "name": "swhnodejs",
3
+  "version": "1.0.0",
4
+  "description": "Created with [Nodeclipse](https://github.com/Nodeclipse/nodeclipse-1)\r  ([Eclipse Marketplace](http://marketplace.eclipse.org/content/nodeclipse), [site](http://www.nodeclipse.org))",
5
+  "main": "index.js",
6
+  "scripts": {
7
+    "test": "echo \"Error: no test specified\" && exit 1"
8
+  },
9
+  "dependencies": {
10
+    "express": "~4.16.4",
11
+    "ejs": "~2.4.1",
12
+    "mysql": "2.17.1",
13
+    "request": "2.88.0"
14
+  },
15
+  "author": "",
16
+  "license": "ISC"
17
+}

+ 4
- 0
src/main/nodejs/public/css/style.css View File

@@ -0,0 +1,4 @@
1
+body{
2
+	background-color: black;
3
+	color: white;
4
+}

BIN
src/main/nodejs/public/img/nodejs.png View File


+ 5
- 0
src/main/nodejs/python.html View File

@@ -0,0 +1,5 @@
1
+<html>
2
+<body>
3
+	<h1>python</h1>
4
+</body>
5
+</html>

+ 21
- 0
src/main/nodejs/router/main.js View File

@@ -0,0 +1,21 @@
1
+/*
2
+module.exports = function(app)
3
+{
4
+     app.get('/',function(req,res){
5
+        res.render('nodejs.html')
6
+     });
7
+     app.get('/python',function(req,res){
8
+        res.render('python.html');
9
+    });
10
+}
11
+*/
12
+
13
+module.exports = function(app, fs)
14
+{
15
+     app.get('/',function(req,res){
16
+         res.render('index', {
17
+             title: "SWH",
18
+             length: 5
19
+         })
20
+     });
21
+}

+ 29
- 0
src/main/nodejs/router/mysql-module.js View File

@@ -0,0 +1,29 @@
1
+var mysql = require('mysql');
2
+
3
+module.exports = function(app, fs)
4
+{
5
+	app.get('/',function(req,res){
6
+
7
+		var connection = mysql.createConnection({
8
+			host     : '192.168.0.41',
9
+			user     : 'root',
10
+			password : 'swhacademy!',
11
+			port     : 3306,
12
+			database : 'sample'
13
+		});
14
+		connection.connect();
15
+		connection.query('SELECT * from policy', function(err, rows, fields) {
16
+			if (!err)
17
+				res.render('index', {
18
+					title: "2018년 7월 정치 키워드",
19
+					values: rows
20
+				})
21
+			else
22
+				res.render('index', {
23
+					title: "2018년 7월 정치 키워드",
24
+					values: err
25
+				})
26
+		});
27
+		connection.end();
28
+	});
29
+}

+ 235
- 0
src/main/nodejs/sample.sql View File

@@ -0,0 +1,235 @@
1
+-- --------------------------------------------------------
2
+-- 호스트:                          127.0.0.1
3
+-- 서버 버전:                        10.2.9-MariaDB - mariadb.org binary distribution
4
+-- 서버 OS:                        Win64
5
+-- HeidiSQL 버전:                  9.4.0.5125
6
+-- --------------------------------------------------------
7
+
8
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
9
+/*!40101 SET NAMES utf8 */;
10
+/*!50503 SET NAMES utf8mb4 */;
11
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
12
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
13
+
14
+
15
+-- sample 데이터베이스 구조 내보내기
16
+CREATE DATABASE IF NOT EXISTS `sample` /*!40100 DEFAULT CHARACTER SET utf8 */;
17
+USE `sample`;
18
+
19
+-- 테이블 sample.policy 구조 내보내기
20
+CREATE TABLE IF NOT EXISTS `policy` (
21
+  `rank` int(11) NOT NULL,
22
+  `keyword` varchar(50) DEFAULT NULL,
23
+  `num` int(11) DEFAULT NULL,
24
+  PRIMARY KEY (`rank`)
25
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
26
+
27
+-- 테이블 데이터 sample.policy:~0 rows (대략적) 내보내기
28
+DELETE FROM `policy`;
29
+/*!40000 ALTER TABLE `policy` DISABLE KEYS */;
30
+INSERT INTO `policy` (`rank`, `keyword`, `num`) VALUES
31
+	(1, '대통령', 14455),
32
+	(2, '트럼프', 7583),
33
+	(3, '위원장', 7039),
34
+	(4, '민주당', 5582),
35
+	(5, '트럼프_대통령', 4742),
36
+	(6, '비핵화', 4509),
37
+	(7, '정상회담', 4487),
38
+	(8, '한국당', 4198),
39
+	(9, '지방선거', 3794),
40
+	(10, '김정은', 3350),
41
+	(11, '싱가포르', 3276),
42
+	(12, '청와대', 3173),
43
+	(13, '한반도', 2879),
44
+	(14, '자유한국당', 2630),
45
+	(15, '당선인', 2430),
46
+	(16, '당선자', 2265),
47
+	(17, '바른미래당', 2089),
48
+	(18, '더불어민주당', 1858),
49
+	(19, '문재인', 1814),
50
+	(20, '폼페이오', 1734),
51
+	(21, '북미정상회담', 1597),
52
+	(22, '국회의원', 1584),
53
+	(23, '러시아', 1542),
54
+	(24, '교육감', 1506),
55
+	(25, '이재명', 1387),
56
+	(26, '후보들', 1328),
57
+	(27, '무소속', 1297),
58
+	(28, '원내대표', 1235),
59
+	(29, '사전투표', 1230),
60
+	(30, '대변인', 1198),
61
+	(31, '판문점', 1122),
62
+	(32, '투표율', 1025),
63
+	(33, '일자리', 940),
64
+	(34, '백악관', 929),
65
+	(35, '유권자', 916),
66
+	(36, '여론조사', 914),
67
+	(37, '위원회', 913),
68
+	(38, '부위원장', 886),
69
+	(39, '홍준표', 865),
70
+	(40, '폼페이오_장관', 831),
71
+	(41, '정의당', 773),
72
+	(42, '서울시장', 752),
73
+	(43, '안철수', 748),
74
+	(44, '김정은_위원장', 715),
75
+	(45, '지지율', 713),
76
+	(46, '시민들', 698),
77
+	(47, '의원들', 697),
78
+	(48, '투표소', 690),
79
+	(49, '후보자', 679),
80
+	(50, 'CVID', 648),
81
+	(51, '단일화', 642),
82
+	(52, '종전선언', 637),
83
+	(53, '선거운동', 629),
84
+	(54, '김경수', 628),
85
+	(55, '지도부', 612),
86
+	(56, '국방부', 610),
87
+	(57, '합의문', 610),
88
+	(58, '북미_정상회담', 607),
89
+	(59, '베이징', 604),
90
+	(60, '박원순', 593),
91
+	(61, '구청장', 580),
92
+	(62, '드루킹', 578),
93
+	(63, '토론회', 568),
94
+	(64, '김성태', 549),
95
+	(65, '주한미군', 545),
96
+	(66, '권한대행', 537),
97
+	(67, '문재인_대통령', 537),
98
+	(68, '인터뷰', 537),
99
+	(69, '미사일', 536),
100
+	(70, '출구조사', 533),
101
+	(71, '유권자들', 529),
102
+	(72, '변호사', 526),
103
+	(73, '마지막', 519),
104
+	(74, '김부선', 517),
105
+	(75, '김영철', 510),
106
+	(76, '경기도', 492),
107
+	(77, '선관위', 490),
108
+	(78, '분위기', 478),
109
+	(79, '이야기', 474),
110
+	(80, '최저임금', 474),
111
+	(81, '부총리', 459),
112
+	(82, '대한민국', 455),
113
+	(83, '선거구', 425),
114
+	(84, '연합훈련', 424),
115
+	(85, '이산가족', 408),
116
+	(86, '남경필', 408),
117
+	(87, '김문수', 404),
118
+	(88, '기자회견', 403),
119
+	(89, '시의원', 399),
120
+	(90, '득표율', 398),
121
+	(91, '도지사', 392),
122
+	(92, '통일부', 387),
123
+	(93, '박근혜', 385),
124
+	(94, '기초단체장', 380),
125
+	(95, '공무원', 380),
126
+	(96, '매티스', 373),
127
+	(97, '사전투표율', 362),
128
+	(98, '국무총리', 360),
129
+	(99, '개성공단', 357),
130
+	(100, '공동성명', 353),
131
+	(101, '사람들', 352),
132
+	(102, '김종필', 348),
133
+	(103, '도의원', 348),
134
+	(104, '인수위', 345),
135
+	(105, '국정원', 338),
136
+	(106, '김태호', 335),
137
+	(107, '민주평화당', 332),
138
+	(108, '포인트', 331),
139
+	(109, '비대위', 330),
140
+	(110, '국민들', 328),
141
+	(111, '단체장', 326),
142
+	(112, '비례대표', 323),
143
+	(113, '한미연합훈련', 319),
144
+	(114, '지역구', 319),
145
+	(115, '경기도지사', 317),
146
+	(116, '사무소', 311),
147
+	(117, '투표용지', 310),
148
+	(118, '평화당', 308),
149
+	(119, '주민들', 308),
150
+	(120, '서울시', 300),
151
+	(121, '광역단체장', 296),
152
+	(122, '이재명_후보', 293),
153
+	(123, '지난달', 287),
154
+	(124, '스캔들', 284),
155
+	(125, '중앙당', 284),
156
+	(126, '푸틴_대통령', 284),
157
+	(127, '보좌관', 283),
158
+	(128, '외교부', 283),
159
+	(129, '정치인', 281),
160
+	(130, '구체적', 278),
161
+	(131, '전당대회', 275),
162
+	(132, '수사권', 274),
163
+	(133, '수석대표', 269),
164
+	(134, '재확인', 265),
165
+	(135, '수도권', 264),
166
+	(136, '제주도', 264),
167
+	(137, 'UFG', 262),
168
+	(138, '고위급', 262),
169
+	(139, '6개월', 258),
170
+	(140, '간담회', 254),
171
+	(141, '현수막', 253),
172
+	(142, '핵무기', 251),
173
+	(143, '원희룡', 250),
174
+	(144, '평화체제', 248),
175
+	(145, '문재인_정부', 247),
176
+	(146, '활성화', 246),
177
+	(147, '최고위원', 242),
178
+	(148, '인프라', 241),
179
+	(149, '오거돈', 235),
180
+	(150, '부의장', 232),
181
+	(151, '시진핑', 232),
182
+	(152, '정치권', 229),
183
+	(153, '워싱턴', 227),
184
+	(154, '금강산', 225),
185
+	(155, '페이스북', 224),
186
+	(156, '원구성', 224),
187
+	(157, '아베_총리', 223),
188
+	(158, '박남춘', 218),
189
+	(159, '목소리', 217),
190
+	(160, '현충일', 216),
191
+	(161, '항공기', 215),
192
+	(162, '도널드', 215),
193
+	(163, '전교조', 214),
194
+	(164, '현대화', 214),
195
+	(165, 'SNS', 213),
196
+	(166, '혁신성장', 212),
197
+	(167, '추미애', 210),
198
+	(168, '네거티브', 209),
199
+	(169, '전문가', 208),
200
+	(170, '국무장관', 207),
201
+	(171, '여배우', 207),
202
+	(172, '노무현', 206),
203
+	(173, '남북경협', 205),
204
+	(174, '상임위원장', 204),
205
+	(175, '매티스_장관', 202),
206
+	(176, '인천시장', 200),
207
+	(177, '대법원', 200),
208
+	(178, '김동연', 200),
209
+	(179, '경제협력', 196),
210
+	(180, '사전투표소', 196),
211
+	(181, '아이들', 195),
212
+	(182, '센토사', 195),
213
+	(183, '국방장관', 195),
214
+	(184, '허위사실', 193),
215
+	(185, '미세먼지', 193),
216
+	(186, '동북아', 193),
217
+	(187, '부산시장', 190),
218
+	(188, '권영진', 189),
219
+	(189, '평화협정', 189),
220
+	(190, '노동자', 188),
221
+	(191, '유승민', 188),
222
+	(192, '재보선', 187),
223
+	(193, '재건축', 187),
224
+	(194, '미군_유해', 187),
225
+	(195, '2차관', 186),
226
+	(196, '지도자', 184),
227
+	(197, '새누리당', 183),
228
+	(198, '필리핀', 183),
229
+	(199, '카펠라', 181),
230
+	(200, '공동대표', 181);
231
+/*!40000 ALTER TABLE `policy` ENABLE KEYS */;
232
+
233
+/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
234
+/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
235
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

+ 7
- 0
src/main/nodejs/server.js View File

@@ -0,0 +1,7 @@
1
+var http = require('http');
2
+http.createServer(function handler(req, res) {
3
+    res.writeHead(200, {'Content-Type': 'text/html'});
4
+    res.write("Hello");
5
+    res.end();
6
+}).listen(1337, '127.0.0.1');
7
+console.log('Server running at http://127.0.0.1:1337/');

+ 17
- 0
src/main/nodejs/summer-winter.js View File

@@ -0,0 +1,17 @@
1
+var http = require('http');
2
+var url = require('url');
3
+var fs = require('fs');
4
+
5
+http.createServer(function (req, res) {
6
+  var q = url.parse(req.url, true);
7
+  var filename = "." + q.pathname;
8
+  fs.readFile(filename, function(err, data) {
9
+    if (err) {
10
+      res.writeHead(404, {'Content-Type': 'text/html'});
11
+      return res.end("404 Not Found");
12
+    }  
13
+    res.writeHead(200, {'Content-Type': 'text/html'});
14
+    res.write(data);
15
+    return res.end();
16
+  });
17
+}).listen(8080);

+ 7
- 0
src/main/nodejs/summer.html View File

@@ -0,0 +1,7 @@
1
+<!DOCTYPE html>
2
+<html>
3
+<body>
4
+<h1>Summer</h1>
5
+<p>I love the sun!</p>
6
+</body>
7
+</html>

+ 32
- 0
src/main/nodejs/url-module.js View File

@@ -0,0 +1,32 @@
1
+//var url = require('url');
2
+//var adr = 'http://localhost:1337/index.html?student=홍길동&classname=nodejs';
3
+//var q = url.parse(adr, true);
4
+//
5
+//console.log(q.host);		//	returns 'localhost:1337'
6
+//console.log(q.pathname);	//	returns '/index.html'
7
+//console.log(q.search);		//	returns '?student=홍길동&classname=nodejs'
8
+//
9
+//var qdata = q.query; 		//	returns an object: { student: '홍길동', classname: 'nodejs' }
10
+//console.log(qdata.classname); //	returns 'february'
11
+
12
+
13
+var http = require('http');
14
+var url = require('url');
15
+var fs = require('fs');
16
+
17
+http.createServer(function (req, res) {
18
+  var q = url.parse(req.url, true);
19
+  //	'.'은 현재 디렉토리를 의미하며, ./nodejs.html은 현재 디렉토리의 nodejs.html파일
20
+  var filename = "." + q.pathname; 
21
+  console.log(filename);
22
+  fs.readFile(filename, function(err, data) {
23
+    if (err) {
24
+      res.writeHead(404, {'Content-Type': 'text/html'});
25
+      return res.end("404 Not Found");
26
+    }  
27
+    res.writeHead(200, {'Content-Type': 'text/html'});
28
+    res.write(data);
29
+    return res.end();
30
+  });
31
+}).listen(1337);	//	listen(1337, '127.0.0.1') 와 동일
32
+console.log('Server running at http://127.0.0.1:1337/');

+ 8
- 0
src/main/nodejs/views/body.ejs View File

@@ -0,0 +1,8 @@
1
+<h1>Loop it!</h1>
2
+<ul>
3
+	<% for(var i=0; i<length; i++){ %>
4
+		<li>
5
+			<%= "LOOP" + i %>
6
+		</li>
7
+	<% } %>
8
+</ul>

+ 2
- 0
src/main/nodejs/views/header.ejs View File

@@ -0,0 +1,2 @@
1
+<title><%= title %></title>
2
+<link rel="stylesheet" type="text/css" href="css/style.css">

+ 16
- 0
src/main/nodejs/views/index.ejs View File

@@ -0,0 +1,16 @@
1
+<html>
2
+	<head>
3
+  		<title><%= title %></title>
4
+		<link rel="stylesheet" type="text/css" href="css/style.css">
5
+  	</head>
6
+  	<body>
7
+	    <h1>Loop it!</h1>
8
+    	<ul>
9
+	        <% for(var i=0; i<length; i++){ %>
10
+            	<li>
11
+	                <%= "LOOP" + i %>
12
+            	</li>
13
+        	<% } %>
14
+    	</ul>
15
+  	</body>
16
+</html>

+ 8
- 0
src/main/nodejs/views/index1.ejs View File

@@ -0,0 +1,8 @@
1
+<html>
2
+	<head>
3
+		<% include ./header.ejs %>
4
+	</head>
5
+	<body>
6
+		<% include ./body.ejs %>
7
+	</body>
8
+</html>

+ 9
- 0
src/main/nodejs/views/nodejs.html View File

@@ -0,0 +1,9 @@
1
+<html>
2
+<head>
3
+    <link rel="stylesheet" type="text/css" href="css/style.css">
4
+  </head>
5
+<body>
6
+	<h1>nodejs</h1>
7
+	<img src="img/nodejs.png">
8
+</body>
9
+</html>

+ 5
- 0
src/main/nodejs/views/python.html View File

@@ -0,0 +1,5 @@
1
+<html>
2
+<body>
3
+	<h1>python</h1>
4
+</body>
5
+</html>

+ 33
- 0
src/main/nodejs/views2/index.ejs View File

@@ -0,0 +1,33 @@
1
+<html>
2
+	<head>
3
+  		<title><%= title %></title>
4
+		<link rel="stylesheet" type="text/css" href="css/style.css">
5
+  	</head>
6
+  	<body>
7
+	    <h1><%= title %></h1>
8
+	    <table>
9
+			<thead>
10
+				<tr>
11
+					<th>랭킹</th>
12
+					<th>키워드</th>
13
+					<th>빈도수</th>
14
+				</tr>
15
+			</thead>
16
+			<tbody>
17
+				<% for(var i=0; i<values.length; i++){ %>
18
+				<tr>
19
+					<td>
20
+		                <%= values[i].rank %>
21
+	            	</td>
22
+	            	<td>
23
+		                <%= values[i].keyword %>
24
+	            	</td>
25
+	            	<td>
26
+		                <%= values[i].num %>
27
+	            	</td>
28
+	            </tr>
29
+	        	<% } %>
30
+		    </tbody>
31
+		</table>
32
+  	</body>
33
+</html>

+ 7
- 0
src/main/nodejs/winter.html View File

@@ -0,0 +1,7 @@
1
+<!DOCTYPE html>
2
+<html>
3
+<body>
4
+<h1>Winter</h1>
5
+<p>I love the snow!</p>
6
+</body>
7
+</html>