├── .gitbook └── assets │ ├── akses-file-di-server.png │ ├── belajar-asinkron-nodejs.png │ ├── enable.png │ ├── geeklist.png │ ├── get-form.png │ ├── github-service.png │ ├── image-build.png │ ├── image-uploader.png │ ├── klout.png │ ├── learnboost.png │ ├── modul-npm.png │ ├── mypspace.png │ ├── nginx-apache-reqs-sec.png │ ├── node-sqlite3-enkripsi.png │ ├── node-sqlite3-no-enkripsi.png │ ├── notif.png │ ├── npm-flow.png │ ├── person-rest-delete.png │ ├── person-rest-get.png │ ├── person-rest-post.png │ ├── person-rest-update.png │ ├── persons-rest-api.png │ ├── persons-rest-diagram.png │ ├── post-urlencoded-data.png │ ├── server-response-dev-tool.png │ ├── shutterstock.png │ ├── testing-ci.png │ ├── testing-mocha.png │ ├── todatauri.png │ └── yummly.png ├── .github └── FUNDING.yml ├── README.md ├── SUMMARY.md ├── _book ├── asinkron_io_&_event │ ├── README.html │ ├── javascript_&_nodejs.html │ └── php_&_server_http_apache.html ├── cover.jpg ├── cover │ └── cover.xcf ├── cover_small.jpg ├── database │ └── README.html ├── expressjs │ └── README.html ├── gitbook │ ├── app.js │ ├── fonts │ │ ├── fontawesome │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── merriweather │ │ │ ├── 250.woff │ │ │ ├── 250i.woff │ │ │ ├── 400.woff │ │ │ ├── 400i.woff │ │ │ ├── 700.woff │ │ │ ├── 700i.woff │ │ │ ├── 900.woff │ │ │ └── 900i.woff │ │ └── opensans │ │ │ ├── 300.woff │ │ │ ├── 300i.woff │ │ │ ├── 400.woff │ │ │ ├── 400i.woff │ │ │ ├── 600.woff │ │ │ ├── 600i.woff │ │ │ ├── 700.woff │ │ │ └── 700i.woff │ ├── images │ │ └── favicon.ico │ ├── jsrepl │ │ ├── engines │ │ │ └── javascript-default.js │ │ ├── jsrepl.js │ │ ├── langs │ │ │ └── javascript │ │ │ │ └── jsrepl_js.js │ │ ├── sandbox.html │ │ └── sandbox.js │ ├── plugins │ │ └── gitbook-plugin-mathjax │ │ │ └── plugin.js │ ├── print.css │ └── style.css ├── images │ └── npm-flow.gliffy ├── index.html ├── manifest.appcache ├── nodejs │ ├── README.html │ ├── javascript_di_server.html │ └── nodejs_show.html ├── npm │ ├── README.html │ ├── konsep.html │ └── npm.html ├── pemrosesan_data_form_html │ ├── README.html │ ├── multipart.html │ └── url_encoded.html ├── picture_uploader │ └── README.html ├── search_index.json ├── server_file_statis │ ├── README.html │ └── kode.html └── server_http_dasar │ ├── README.html │ └── menjalankan_server.html ├── asinkron_io_and_event ├── README.md ├── javascript_and_nodejs.md └── php_and_server_http_apache.md ├── book.json ├── cover.jpg ├── cover └── cover.xcf ├── cover_small.jpg ├── database ├── README.md ├── mongodb │ ├── README.md │ ├── mongoose.md │ └── node_mongodb.md ├── mysql │ ├── README.md │ └── node_mysql.md └── sqlite │ ├── README.md │ ├── enkripsi │ ├── README.md │ └── sqlchiper.md │ └── node-sqlite3.md ├── expressjs ├── README.md ├── kode.md ├── server │ ├── README.md │ ├── akses_server.md │ └── middleware.md └── server_rest.md ├── image_uploader.md ├── images ├── npm-flow.gliffy ├── persons.gliffy └── todatauri.gliffy ├── memakai_es6.md ├── nodejs ├── README.md ├── javascript_di_server.md └── nodejs_show.md ├── npm ├── README.md ├── konsep.md └── npm.md ├── pemrosesan_data_form_html ├── README.md ├── multipart.md └── url_encoded.md ├── pengarang.md ├── person_rest_api ├── README.md ├── inisialisasi.md ├── kode.md └── testing.md ├── server_file_statis.md ├── server_file_statis └── kode.md ├── server_http_dasar ├── README.md └── menjalankan_server.md ├── testing ├── README.md ├── automasi.md └── rest_testing.md └── todatauri ├── README.md ├── koneksi_mysql.md ├── konverter_gambar_png_ke_data_uri.md └── penggunaan.md /.gitbook/assets/akses-file-di-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/akses-file-di-server.png -------------------------------------------------------------------------------- /.gitbook/assets/belajar-asinkron-nodejs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/belajar-asinkron-nodejs.png -------------------------------------------------------------------------------- /.gitbook/assets/enable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/enable.png -------------------------------------------------------------------------------- /.gitbook/assets/geeklist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/geeklist.png -------------------------------------------------------------------------------- /.gitbook/assets/get-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/get-form.png -------------------------------------------------------------------------------- /.gitbook/assets/github-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/github-service.png -------------------------------------------------------------------------------- /.gitbook/assets/image-build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/image-build.png -------------------------------------------------------------------------------- /.gitbook/assets/image-uploader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/image-uploader.png -------------------------------------------------------------------------------- /.gitbook/assets/klout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/klout.png -------------------------------------------------------------------------------- /.gitbook/assets/learnboost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/learnboost.png -------------------------------------------------------------------------------- /.gitbook/assets/modul-npm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/modul-npm.png -------------------------------------------------------------------------------- /.gitbook/assets/mypspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/mypspace.png -------------------------------------------------------------------------------- /.gitbook/assets/nginx-apache-reqs-sec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/nginx-apache-reqs-sec.png -------------------------------------------------------------------------------- /.gitbook/assets/node-sqlite3-enkripsi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/node-sqlite3-enkripsi.png -------------------------------------------------------------------------------- /.gitbook/assets/node-sqlite3-no-enkripsi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/node-sqlite3-no-enkripsi.png -------------------------------------------------------------------------------- /.gitbook/assets/notif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/notif.png -------------------------------------------------------------------------------- /.gitbook/assets/npm-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/npm-flow.png -------------------------------------------------------------------------------- /.gitbook/assets/person-rest-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/person-rest-delete.png -------------------------------------------------------------------------------- /.gitbook/assets/person-rest-get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/person-rest-get.png -------------------------------------------------------------------------------- /.gitbook/assets/person-rest-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/person-rest-post.png -------------------------------------------------------------------------------- /.gitbook/assets/person-rest-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/person-rest-update.png -------------------------------------------------------------------------------- /.gitbook/assets/persons-rest-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/persons-rest-api.png -------------------------------------------------------------------------------- /.gitbook/assets/persons-rest-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/persons-rest-diagram.png -------------------------------------------------------------------------------- /.gitbook/assets/post-urlencoded-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/post-urlencoded-data.png -------------------------------------------------------------------------------- /.gitbook/assets/server-response-dev-tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/server-response-dev-tool.png -------------------------------------------------------------------------------- /.gitbook/assets/shutterstock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/shutterstock.png -------------------------------------------------------------------------------- /.gitbook/assets/testing-ci.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/testing-ci.png -------------------------------------------------------------------------------- /.gitbook/assets/testing-mocha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/testing-mocha.png -------------------------------------------------------------------------------- /.gitbook/assets/todatauri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/todatauri.png -------------------------------------------------------------------------------- /.gitbook/assets/yummly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/.gitbook/assets/yummly.png -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [junwatu] 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pendahuluan 2 | 3 | > **Note:** This book is written in Bahasa Indonesia and the main reason for that is because most of Node.js beginners in my country Indonesia is having difficulties to find Node.js resources written in my native language. 4 | 5 | Buku ini cocok bagi siapa saja yang ingin mulai belajar pemrograman di platform Node.js khususnya untuk membangun aplikasi web. Syarat yang dibutuhkan adalah pembaca setidaknya pernah atau sudah bisa memakai bahasa pemrograman JavaScript. 6 | 7 | Ebook ini bisa anda akses dibeberapa tempat, 8 | 9 | * [Github IDJS](https://idjs.github.io/belajar-nodejs) 10 | * [Gitbook](https://app.gitbook.com/@junwatu/s/pengenalan-node-js/) 11 | * [Google Play Store](https://play.google.com/store/books/details?id=pdOfDwAAQBAJ) 12 | 13 | ## Feedback 14 | 15 | Untuk pertanyaan, kesalahan ketik atau permintaan silahkan mengisi [Github issue](https://github.com/idjs/belajar-nodejs/issues). 16 | 17 | ## Lisensi 18 | 19 | Pengenalan Node.js oleh [Equan Pr.](https://sajen.id) di kerjakan di bawah lisensi [Creative Commons Attribution-NonCommercial 4.0 International License](http://creativecommons.org/licenses/by-nc/4.0/). 20 | 21 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Table of contents 2 | 3 | * [Pendahuluan](README.md) 4 | * [Node.js](nodejs/README.md) 5 | * [JavaScript Di Server](nodejs/javascript_di_server.md) 6 | * [Node.js In Action](nodejs/nodejs_show.md) 7 | * [Asinkron I/O & Event](asinkron_io_and_event/README.md) 8 | * [PHP & Server HTTP Apache](asinkron_io_and_event/php_and_server_http_apache.md) 9 | * [Javascript & Node.js](asinkron_io_and_event/javascript_and_nodejs.md) 10 | * [Server HTTP Dasar](server_http_dasar/README.md) 11 | * [Menjalankan Server](server_http_dasar/menjalankan_server.md) 12 | * [Server File Statis](server_file_statis.md) 13 | * [Pemrosesan Data Form HTML](pemrosesan_data_form_html/README.md) 14 | * [URL Encode](pemrosesan_data_form_html/url_encoded.md) 15 | * [Multipart Data](pemrosesan_data_form_html/multipart.md) 16 | * [Module npm](npm/README.md) 17 | * [Konsep](npm/npm.md) 18 | * [Paket npm](npm/konsep.md) 19 | * [ExpressJS](expressjs/README.md) 20 | * [Server File](expressjs/server/README.md) 21 | * [Middleware](expressjs/server/middleware.md) 22 | * [Akses Server](expressjs/server/akses_server.md) 23 | * [Server REST](expressjs/server_rest.md) 24 | * [Database](database/README.md) 25 | * [SQLite](database/sqlite/README.md) 26 | * [Node Sqlite3](database/sqlite/node-sqlite3.md) 27 | * [Enkripsi](database/sqlite/enkripsi/README.md) 28 | * [sqlcipher](database/sqlite/enkripsi/sqlchiper.md) 29 | * [MySQL](database/mysql/README.md) 30 | * [Node MySQL](database/mysql/node_mysql.md) 31 | * [MongoDB](database/mongodb/README.md) 32 | * [Node MongoDB](database/mongodb/node_mongodb.md) 33 | * [Mongoose](database/mongodb/mongoose.md) 34 | * [Testing](testing/README.md) 35 | * [REST](testing/rest_testing.md) 36 | * [Automasi](testing/automasi.md) 37 | * [To Data URI](todatauri/README.md) 38 | * [Penggunaan](todatauri/penggunaan.md) 39 | * [todatauri.js](todatauri/konverter_gambar_png_ke_data_uri.md) 40 | * [Koneksi MySQL](todatauri/koneksi_mysql.md) 41 | * [Person REST API](person_rest_api/README.md) 42 | * [Cara Kerja](person_rest_api/inisialisasi.md) 43 | * [Server](person_rest_api/kode.md) 44 | * [Pengetesan](person_rest_api/testing.md) 45 | * [Image Uploader](image_uploader.md) 46 | * [Memakai ES6](memakai_es6.md) 47 | * [Tentang Pengarang](pengarang.md) 48 | 49 | -------------------------------------------------------------------------------- /_book/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/_book/cover.jpg -------------------------------------------------------------------------------- /_book/cover/cover.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/_book/cover/cover.xcf -------------------------------------------------------------------------------- /_book/cover_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/junwatu/pengenalan-nodejs-gitbook/2f412bcbe5cdec618209b8bb71331f3d574de82c/_book/cover_small.jpg -------------------------------------------------------------------------------- /_book/database/README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 |Antar Muka Web atau CLI
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":170,"y":290,"rotation":270,"id":28,"uid":"com.gliffy.shape.basic.basic_v1.default.double_arrow","width":80,"height":30,"lockAspectRatio":false,"lockShape":false,"order":16,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.double_arrow.basic_v1","strokeWidth":2,"strokeColor":"#e2e2e2","fillColor":"#666666","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":[],"linkMap":[]},{"x":379,"y":105,"rotation":0,"id":11,"uid":"com.gliffy.shape.basic.basic_v1.default.line","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":7,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":2,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":false,"interpolationType":"linear","cornerRadius":null,"controlPath":[[-16,13],[93,-11]],"lockSegments":{}}},"children":[{"x":0,"y":0,"rotation":0,"id":13,"uid":null,"width":24,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"both","vposition":"none","hposition":"none","html":"GET
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":33.99999999999997,"y":46,"rotation":0,"id":6,"uid":"com.gliffy.shape.network.network_v3.home.cloud","width":340,"height":213,"lockAspectRatio":false,"lockShape":false,"order":5,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.cloud.network_v3","strokeWidth":2,"strokeColor":"#000000","fillColor":"#ffffff","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":[{"x":2.111801242236025,"y":0,"rotation":0,"id":20,"uid":null,"width":335.7763975155279,"height":41,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"Internet\n
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":490,"y":80,"rotation":0,"id":1,"uid":"com.gliffy.shape.basic.basic_v1.default.square","width":170,"height":170,"lockAspectRatio":true,"lockShape":false,"order":2,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":2,"y":0,"rotation":0,"id":5,"uid":null,"width":166,"height":28,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"
Person REST \n
Server
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":382,"y":140,"rotation":0,"id":14,"uid":"com.gliffy.shape.basic.basic_v1.default.line","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":9,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":false,"interpolationType":"linear","cornerRadius":null,"controlPath":[[-1.1314218345384006,-8.526512829121202e-14],[94.04786015641184,-5.684341886080802e-14]],"lockSegments":{}}},"children":[{"x":0,"y":0,"rotation":0,"id":15,"uid":null,"width":47,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"both","vposition":"none","hposition":"none","html":"DELETE
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":380,"y":178,"rotation":0,"id":16,"uid":"com.gliffy.shape.basic.basic_v1.default.line","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":11,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":false,"interpolationType":"linear","cornerRadius":null,"controlPath":[[-2,-7],[94.04786015641184,-5.684341886080802e-14]],"lockSegments":{}}},"children":[{"x":0,"y":0,"rotation":0,"id":17,"uid":null,"width":24,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"both","vposition":"none","hposition":"none","html":"PUT
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":381,"y":225,"rotation":0,"id":18,"uid":"com.gliffy.shape.basic.basic_v1.default.line","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":13,"graphic":{"type":"Line","Line":{"strokeWidth":2,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":false,"interpolationType":"linear","cornerRadius":null,"controlPath":[[-16,-32],[93,1]],"lockSegments":{}}},"children":[{"x":0,"y":0,"rotation":0,"id":19,"uid":null,"width":32,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"both","vposition":"none","hposition":"none","html":"POST
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":765,"y":110,"rotation":0,"id":23,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":150,"height":16,"lockAspectRatio":false,"lockShape":false,"order":15,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"MongoDB
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null,"linkMap":[]},{"x":680,"y":160,"rotation":0,"id":3,"uid":"com.gliffy.shape.basic.basic_v1.default.double_arrow","width":100,"height":25,"lockAspectRatio":false,"lockShape":false,"order":4,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.double_arrow.basic_v1","strokeWidth":2,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":[],"linkMap":[]},{"x":800,"y":132.5,"rotation":0,"id":0,"uid":"com.gliffy.shape.sitemap.sitemap_v1.default.database","width":80,"height":80,"lockAspectRatio":true,"lockShape":false,"order":1,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.database.sitemap_v1","strokeWidth":2,"strokeColor":"#666666","fillColor":"#6699CC","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":[],"linkMap":[]}],"background":"#FFFFFF","width":913,"height":460,"maxWidth":5000,"maxHeight":5000,"nodeIndex":34,"autoFit":true,"exportBorder":false,"gridOn":true,"snapToGrid":true,"drawingGuidesOn":true,"pageBreaksOn":false,"printGridOn":false,"printPaper":"LETTER","printShrinkToFit":false,"printPortrait":true,"shapeStyles":{"com.gliffy.shape.sitemap.sitemap_v1.default":{"fill":"#6699CC","stroke":"#666666","strokeWidth":2},"com.gliffy.shape.basic.basic_v1.default":{"fill":"#666666","stroke":"#e2e2e2","strokeWidth":2,"shadow":true},"com.gliffy.shape.network.network_v3.home":{"fill":"#ffffff"}},"lineStyles":{"global":{"startArrow":0,"endArrow":2}},"textStyles":{},"themeData":null}} -------------------------------------------------------------------------------- /images/todatauri.gliffy: -------------------------------------------------------------------------------- 1 | {"contentType":"application/gliffy+json","version":"1.1","metadata":{"title":"untitled","revision":0,"exportBorder":false},"embeddedResources":{"index":0,"resources":[]},"stage":{"objects":[{"x":710,"y":362,"rotation":0,"id":34,"uid":"com.gliffy.shape.basic.basic_v1.default.image","width":170,"height":115,"lockAspectRatio":true,"lockShape":false,"order":10,"graphic":{"type":"Image","Image":{"url":"data:image/png;base64,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","strokeWidth":2,"strokeColor":"#000000","dropShadow":false,"shadowX":0,"shadowY":0}},"children":null,"linkMap":[]},{"x":520,"y":388,"rotation":0,"id":32,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":150,"height":14,"lockAspectRatio":false,"lockShape":false,"order":9,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"Simpan
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null,"linkMap":[]},{"x":300,"y":260,"rotation":270,"id":30,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":150,"height":14,"lockAspectRatio":false,"lockShape":false,"order":8,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"Download
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null,"linkMap":[]},{"x":380,"y":150,"rotation":0,"id":26,"uid":"com.gliffy.shape.sitemap.sitemap_v1.default.page","width":35,"height":40,"lockAspectRatio":false,"lockShape":false,"order":6,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.page.sitemap_v1","strokeWidth":2,"strokeColor":"#999999","fillColor":"#6699CC","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":[{"x":2.333333333333334,"y":0,"rotation":0,"id":29,"uid":null,"width":30.333333333333336,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":".png
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":319.99999999999744,"y":250,"rotation":270,"id":24,"uid":"com.gliffy.shape.basic.basic_v1.default.left_arrow","width":150,"height":40,"lockAspectRatio":false,"lockShape":false,"order":0,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.left_arrow.basic_v1","strokeWidth":2,"strokeColor":"#ffffff","fillColor":"#9fc5e8","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[],"linkMap":[]},{"x":522,"y":399.5,"rotation":0,"id":21,"uid":"com.gliffy.shape.basic.basic_v1.default.double_arrow","width":160,"height":40,"lockAspectRatio":false,"lockShape":false,"order":5,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.double_arrow.basic_v1","strokeWidth":2,"strokeColor":"#ffffff","fillColor":"#9fc5e8","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":[],"linkMap":[]},{"x":275,"y":64.99999999999977,"rotation":0,"id":17,"uid":"com.gliffy.shape.network.network_v3.home.cloud","width":230.00000000000003,"height":140,"lockAspectRatio":false,"lockShape":false,"order":3,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.cloud.network_v3","strokeWidth":2,"strokeColor":"#000000","fillColor":"#cfe2f3","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":[{"x":2.5555555555555554,"y":0,"rotation":0,"id":23,"uid":null,"width":224.88888888888894,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"INTERNET
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]},{"x":705,"y":319,"rotation":0,"id":14,"uid":"com.gliffy.shape.sitemap.sitemap_v1.default.database","width":90,"height":90,"lockAspectRatio":true,"lockShape":false,"order":11,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.database.sitemap_v1","strokeWidth":2,"strokeColor":"#999999","fillColor":"#6699CC","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":null,"linkMap":[]},{"x":263,"y":385,"rotation":0,"id":11,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":230,"height":14,"lockAspectRatio":false,"lockShape":false,"order":2,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"$ node ./tdi.js http://uncal.no/lawang.png
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null,"linkMap":[]},{"x":260,"y":362,"rotation":0,"id":8,"uid":"com.gliffy.shape.ui.ui_v2.forms_components.dialog_box","width":240,"height":116,"lockAspectRatio":false,"lockShape":false,"order":1,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.dialog_box.ui_v2","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":false,"state":0,"shadowX":0,"shadowY":0,"opacity":1}},"children":[{"x":2,"y":0,"rotation":0,"id":37,"uid":null,"width":236,"height":14,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"Terminal
","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"linkMap":[]}],"background":"#FFFFFF","width":880,"height":478,"maxWidth":5000,"maxHeight":5000,"nodeIndex":39,"autoFit":true,"exportBorder":false,"gridOn":true,"snapToGrid":true,"drawingGuidesOn":true,"pageBreaksOn":false,"printGridOn":false,"printPaper":"LETTER","printShrinkToFit":false,"printPortrait":true,"shapeStyles":{"com.gliffy.shape.basic.basic_v1.default":{"fill":"#9fc5e8","stroke":"#ffffff","strokeWidth":2,"gradient":false,"shadow":true},"com.gliffy.shape.network.network_v3.home":{"fill":"#cfe2f3"},"com.gliffy.shape.sitemap.sitemap_v1.default":{"fill":"#6699CC","stroke":"#999999","strokeWidth":2}},"lineStyles":{},"textStyles":{},"themeData":null}} -------------------------------------------------------------------------------- /memakai_es6.md: -------------------------------------------------------------------------------- 1 | # Memakai ES6 2 | 3 | Meskipun ECMAScript 2015 atau yang lebih dikenal ES6 sudah [diresmikan](http://www.ecma-international.org/ecma-262/6.0/) tetapi implementasi di browser dan platform Node.js masih terjadi secara _gradual_. Pada saat buku ini ditulis pada platform Node.js 4.x \(LTS\) dan 5.x sudah banyak fitur-fitur ES6 yang _built-in_ dan untuk fitur yang belum didukung anda bisa memakai tool yang bernama Babel. 4 | 5 | Untuk mempelajari ES6 banyak sekali resource online yang menyediakan jadi silahkan anda bereksplorasi dan mencoba konsep-konsep baru yang ditawarkan oleh JavaScript. Anda bisa memulai dari buku online gratis tentang ES6 6 | 7 | * [ExploringJS ES6](http://exploringjs.com/es6/) 8 | 9 | Pada dasarnya Babel berfungsi untuk mengkompilasi ES6 \(atau ES7, 8\) menjadi ES5 sehingga bisa dijalankan pada browser atau platform Node.js yang belum mendukung ES6. Salah satu pertanyaan terbesar kalau anda memakai Babel adalah bagaimana mengkompilasi hanya beberapa fitur ES6 saja jikalau browser ataupun Node.js yang akan kita pakai secara native sudah mendukung sebagian atau beberapa fitur ES6? 10 | 11 | ## Babel on The Fly 12 | 13 | Sejak di release [Babel 6](https://babeljs.io/blog/2015/10/29/6.0.0/), tool ini mendukung kompilasi ES6 berdasarkan plugin artinya anda bisa memilih fitur mana yang akan dikompilasi ke ES5 jika misalnya pada platform Node.js sudah mendukung banyak fitur ES6. 14 | 15 | Kalau anda pernah memakai `babel-node` make sekarang diganti dengan paket `babel-cli` 16 | 17 | ```text 18 | $ npm install -g babel-cli 19 | ``` 20 | 21 | Apa kegunaannya? `babel-cli` sangat berguna untuk mengkompilasi ES6 secara `on the fly` misalnya begini 22 | 23 | **lib/module.js** 24 | 25 | ```text 26 | 'use strict' 27 | export function test() { 28 | console.log('test') 29 | } 30 | ``` 31 | 32 | **main.js** 33 | 34 | ```text 35 | 'use strict' 36 | import {test} from './lib/module' 37 | test() 38 | ``` 39 | 40 | Maka untuk mengeksekusi file `main.js` bisa melalui `babel-node` 41 | 42 | ```text 43 | $ babel-node main.js 44 | ``` 45 | 46 | Jika anda memakai project dengan ES6 selain `babel-cli` maka paket berikut juga perlu di install 47 | 48 | ```text 49 | $ npm install --save-dev babel babel-core babel-loader 50 | ``` 51 | 52 | dan juga setting file `.babelrc` \(meskipun sebenarnya ada beberapa alternatif lain dimana harus menuliskan setting babel tapi cara ini lebih UNIX, tergantung selera masing masing\) 53 | 54 | **.babelrc** 55 | 56 | ```text 57 | { 58 | "plugins": ["transform-es2015-modules-commonjs"] 59 | } 60 | ``` 61 | 62 | Bisa anda lihat bahwa plugins yang akan kita gunakan adalah `transform-es2015-modules-commonjs` jadi harus di install juga 63 | 64 | ```text 65 | $ npm install --save-dev babel-plugin-transform-es2015-modules-commonjs 66 | ``` 67 | 68 | Lalu bagaimana kalau kita menginginkan semua plugin kita pakai? jawabannya adalah dengan memakai `presets` 69 | 70 | ```text 71 | $ npm install --save-dev babel-preset-es2015 72 | ``` 73 | 74 | dan `.babelrc` perlu anda rubah menjadi seperti dibawah ini 75 | 76 | ```text 77 | { 78 | "presets": ["es2015"] 79 | } 80 | ``` 81 | 82 | **Catatan** Penjelasan diatas berlaku untuk JavaScript yang digunakan pada sisi server untuk client atau JavaScript yang berjalan pada browser anda bisa memakai [webpack](https://webpack.github.io/) bersama dengan babel. 83 | 84 | -------------------------------------------------------------------------------- /nodejs/README.md: -------------------------------------------------------------------------------- 1 | # Node.js 2 | 3 | Javascript merupakan bahasa pemrograman yang lengkap hanya saja selama ini di pakai sebagai bahasa untuk pengembangan aplikasi web yang berjalan pada sisi client atau browser saja. Tetapi sejak ditemukannya Node.js oleh Ryan Dhal pada tahun 2009, Javascript bisa digunakan sebagai bahasa pemrograman di sisi server sekelas dengan PHP, ASP, C\#, Ruby dll dengan kata lain Node.js menyediakan platform untuk membuat aplikasi Javascript dapat dijalankan di sisi server. 4 | 5 | Untuk mengeksekusi Javascript sebagai bahasa server diperlukan engine yang cepat dan mempunyai performansi yang bagus. Engine Javascript dari Google bernama V8 yang dipakai oleh Node.js yang merupakan engine yang sama yang dipakai di browser Google Chrome. 6 | 7 | -------------------------------------------------------------------------------- /nodejs/javascript_di_server.md: -------------------------------------------------------------------------------- 1 | # JavaScript Di Server 2 | 3 | Tak terelakkan bahwa Javascript merupakan bahasa pemrograman yang paling populer. Jika anda sebagai developer pernah mengembangkan aplikasi web maka penggunaan Javascript pasti tidak terhindarkan. 4 | 5 | Sekarang dengan berjalannya Javascript di server lalu apa keuntungan yang anda peroleh dengan mempelajari Node.js, kurang lebih seperti ini : 6 | 7 | * Pengembang hanya memakai satu bahasa untuk mengembangkan aplikasi lengkap client & server sehingga mengurangi _Learning Curve_ untuk mempelajari bahasa server yang lain. 8 | * Sharing kode antara client dan server atau istilahnya code reuse. 9 | * Javascript secara native mendukung JSON yang merupakan standar transfer data yang banyak dipakai saat ini sehingga untuk mengkonsumsi data-data dari pihak ketiga pemrosesan di Node.js akan sangat mudah sekali. 10 | * Database NoSQL seperti MongoDB dan CouchDB mendukung langsung Javascript sehingga interfacing dengan database ini akan jauh lebih mudah. 11 | * Node.js memakai V8 yang selalu mengikuti perkembangan standar ECMAScript, jadi tidak perlu ada kekhawatiran bahwa browser tidak akan mendukung fitur-fitur di Node.js. 12 | 13 | -------------------------------------------------------------------------------- /nodejs/nodejs_show.md: -------------------------------------------------------------------------------- 1 | # Node.js In Action 2 | 3 | Supaya anda lebih tertarik dalam belajar Node.js berikut beberapa website terkenal yang sudah memakai Node.js 4 | 5 | www.myspace.com 6 | 7 |  8 | 9 | www.yummly.com 10 | 11 |  12 | 13 | www.shutterstock.com 14 | 15 |  16 | 17 | www.klout.com 18 | 19 |  20 | 21 | www.geekli.st 22 | 23 |  24 | 25 | www.learnboost.com 26 | 27 |  28 | 29 | Apakah masih ragu untuk memakai Node.js ?...Kalau masih penasaran apa yang membuat Node.js berbeda dari backend pada umumnya, silahkan dilanjutkan membaca :smile: 30 | 31 | -------------------------------------------------------------------------------- /npm/README.md: -------------------------------------------------------------------------------- 1 | # Module npm 2 | 3 | `nice people matter` 4 | 5 | npm merupakan package manager untuk Node.js dan untuk nama `npm` bukanlah suatu singkatan. Hanya dalam waktu 2 tahun sejak di releasenya Node.js ke publik jumlah modul melesat jauh bahkan hampir menyamai modul java ataupun ruby gems. 6 | 7 |  8 | 9 | Grafik diatas didapat dari [http://modulecounts.com](http://modulecounts.com). 10 | 11 | Banyaknya push module ke repositori npm dapat diartikan adanya kepercayaan publik terhadap platform ini dan untuk kedepannya Node.js akan menjadi platform yang prospektif untuk berinvestasi. 12 | 13 | -------------------------------------------------------------------------------- /npm/konsep.md: -------------------------------------------------------------------------------- 1 | # Paket npm 2 | 3 | Secara default data paket npm disimpan di registry npmjs.org. Sehingga untuk menginstall paket npm tertentu anda bisa mencari paket ini melalui command `npm` atau langsung melalui website. 4 | 5 | Sejak versi Node.js 0.6.3 command `npm` sudah ter-bundle dengan installer Node.js. Untuk menginstall modul npm yang anda butuhkan ketik misalnya 6 | 7 | ```text 8 | npm install express 9 | ``` 10 | 11 | perintah diatas akan mendownload paket `express` dari `http://npmjs.org` dan secara otomatis akan membuat directory `node_modules`. 12 | 13 | Untuk memakai modul `express` ini cukup dengan membuat file JavaScript baru di luar direktori `node_modules` dan load modul dengan keyword `require`. 14 | 15 | ```text 16 | var app = require('express'); 17 | 18 | // kode lainnya 19 | ``` 20 | 21 | ## Membuat Paket npm 22 | 23 | Sebelum membuat paket npm pastikan fungsionalitas yang anda cari tidak ada dalam registry npm. Caranya yaitu anda bisa menggunakan perintah 24 | 25 | ```text 26 | npm search 27 | ``` 28 | 29 | atau dengan memakai website berikut [npmjs.org](http://npmjs.org), [node-modules.com](http://node-modules.com) atau [npmsearch.com](http://npmsearch.com) 30 | 31 | Untuk membuat paket npm caranya cukup mudah. Berikut alur umum untuk membuat paket npm untuk di publish ke registry `npmjs.org`. 32 | 33 |  34 | 35 | Secara garis besar proses pembuatan paket npm menurut alur diatas akan dijelaskan sebagai berikut 36 | 37 | ### Registrasi 38 | 39 | Sebelum publish ke registry npmjs.org kita harus registrasi dulu melalui perintah berikut 40 | 41 | ```text 42 | npm adduser 43 | ``` 44 | 45 | ### Buat Project 46 | 47 | Untuk membuat project baru dari nol langkah pertama adalah membuat direktori 48 | 49 | ```text 50 | mkdir npmproject 51 | ``` 52 | 53 | Kemudian inisialisasi project tersebut 54 | 55 | ```text 56 | npm init 57 | ``` 58 | 59 | perintah diatas akan membuat file `package.json` yang isinya adalah info dan dependensi project. Ikuti saja tiap pertanyaan dan isi informasi sesuai dengan paket yang ingin anda buat. 60 | 61 | Contohnya pada paket `svh` berikut ini 62 | 63 | `package.json` 64 | 65 | ```text 66 | { 67 | "name": "svh", 68 | "version": "0.0.7-beta", 69 | "author": "Equan Pr.", 70 | "description": "Simple file server for html-javascript web client app development", 71 | "keywords": [ 72 | "process", 73 | "reload", 74 | "watch", 75 | "development", 76 | "restart", 77 | "server", 78 | "monitor", 79 | "auto", 80 | "static", 81 | "nodemon" 82 | ], 83 | "homepage": "https://github.com/junwatu/svh", 84 | "bugs": "https://github.com/junwatu/svh/issues", 85 | "main": "./lib/core.js", 86 | "scripts": { 87 | "test": "./node_modules/mocha/bin/mocha" 88 | }, 89 | "dependencies": { 90 | "async": "~0.2.9", 91 | "chalk": "0.2.x", 92 | "cheerio": "0.12.x", 93 | "commander": "2.0.x", 94 | "compression": "^1.0.2", 95 | "concat-stream": "1.0.x", 96 | "express": "4.x", 97 | "morgan": "^1.1.1", 98 | "send": "^0.3.0", 99 | "watch": "0.8.x", 100 | "wordgenerator": "0.0.1" 101 | }, 102 | "devDependencies": { 103 | "gulp": "^3.5.6", 104 | "gulp-uglifyjs": "^0.3.0", 105 | "gulp-util": "2.2.14", 106 | "mocha": "1.13.x", 107 | "supertest": "0.8.x" 108 | }, 109 | "repository": { 110 | "type": "git", 111 | "url": "http://github.com/junwatu/svh.git" 112 | }, 113 | "bin": { 114 | "svh": "./bin/svh" 115 | }, 116 | "license": "MIT" 117 | } 118 | ``` 119 | 120 | ### Publish Lokal 121 | 122 | Sebelum di publish pastikan paket anda bisa berjalan atau digunakan pada komputer lokal. Perintah berikut akan menginstall paket anda secara global di komputer. 123 | 124 | ```text 125 | npm publish . -g 126 | ``` 127 | 128 | atau jika diinginkan link simbolik bisa memakai perintah npm berikut 129 | 130 | ```text 131 | npm link 132 | ``` 133 | 134 | ### Publish Publik 135 | 136 | ```text 137 | npm publish 138 | ``` 139 | 140 | Untuk lebih jelasnya silahkan kunjungi dokumentasi untuk [developer npm](https://www.npmjs.org/doc/misc/npm-developers.html). 141 | 142 | -------------------------------------------------------------------------------- /npm/npm.md: -------------------------------------------------------------------------------- 1 | # Konsep 2 | 3 | npm memakai sistem modul [CommonJS](http://www.commonjs.org/specs/) yang cukup mudah dalam penggunaanya. Sistem modul ini akan meng-export objek JavaScript ke variabel `exports` yang bersifat global di modul tersebut. 4 | 5 | Sebagai contoh 6 | 7 | `band.js` 8 | 9 | ```text 10 | 'use strict'; 11 | 12 | function Band(){} 13 | 14 | Band.prototype.info = function(){ 15 | return 'Nama Band: '+this.name; 16 | } 17 | 18 | Band.prototype.add = function(name){ 19 | this.name = name; 20 | } 21 | 22 | module.exports = new Band(); 23 | ``` 24 | 25 | Untuk pemakaiannya seperti di bawah ini 26 | 27 | `app.js` 28 | 29 | ```text 30 | var band = require('./band.js'); 31 | band.add('Dewa 19'); 32 | 33 | console.log(band.info); 34 | ``` 35 | 36 | `require()` diatas adalah fungsi sinkron yang meload paket atau modul lain dari sistem file. 37 | 38 | -------------------------------------------------------------------------------- /pemrosesan_data_form_html/README.md: -------------------------------------------------------------------------------- 1 | # Pemrosesan Data Form HTML 2 | 3 | Aplikasi web memperoleh data dari pengguna umumnya melalui pengisian form HTML. Contohnya seperti ketika registrasi di media sosial atau aktifitas update status di Facebook misalnya pasti akan mengisi text field dan kemudian menekan tombol submit ataupun enter agar data bisa terkirim dan diproses oleh server. 4 | 5 | Data yang dikirim oleh form biasanya salah satu dari dua tipe mime berikut 6 | 7 | * application/x-www-form-urlencoded 8 | * multipart/form-data 9 | 10 | Node.js sendiri hanya menyediakan parsing data melalui `body` dari `request` sedangkan untuk validasi atau pemrosesan data akan diserahkan kepada komunitas. 11 | 12 | -------------------------------------------------------------------------------- /pemrosesan_data_form_html/multipart.md: -------------------------------------------------------------------------------- 1 | # Multipart Data 2 | 3 | _Parsing_ data form dan file yang di _upload_ ke server Node.js adalah pekerjaan yang cukup susah kalo dikerjakan secara manual atau dari _scratch_ karena disamping harus _parsing_ data binary yang berupa file juga harus _parsing_ data form. 4 | 5 | Protokol untuk `multipart/form-data` di definisikan secara lengkap di [RFC 2388](https://www.ietf.org/rfc/rfc2388.txt). 6 | 7 | -------------------------------------------------------------------------------- /pemrosesan_data_form_html/url_encoded.md: -------------------------------------------------------------------------------- 1 | # URL Encode 2 | 3 | Hanya akan dibahas untuk 2 metode HTTP yaitu `GET` dan `POST` saja. Metode `GET` untuk menampilkan form html dan `POST` untuk menangani data form yang dikirim 4 | 5 | Ok langsung kita lihat kode server sederhana untuk parsing data form melalui objek `request` dengan data form bertipe `application/x-www-form-urlencoded` yang merupakan default dari tag form. 6 | 7 | ```text 8 | var http = require('http'); 9 | var data = []; 10 | var qs = require('querystring'); 11 | 12 | var server = http.createServer(function(req, res){ 13 | if('/' == req.url){ 14 | switch(req.method){ 15 | case 'GET': 16 | tampilkanForm(res); 17 | break; 18 | case 'POST': 19 | prosesData(req, res); 20 | break; 21 | default: 22 | badRequest(res); 23 | } 24 | } else { 25 | notFound(res); 26 | } 27 | }); 28 | 29 | function tampilkanForm(res){ 30 | var html = 'Haruskah belajar Node.js?
Haruskah belajar Node.js?