Wednesday, November 22, 2017

Integrasi React.JS dan ES6 Dengan Webpack


The best way to learn is to write that down
OMFG that was from me, please somebody put my photo with some long exposure effect and add that quote awyisss...

Okayyyy langsung aja sebelum install dependensi package, mari di init dulu npmnya.. caranya ??? ._. (its always you)
oke gua kasi tau, sama kaya git init cuma syntaxnya aja beda karna dia npm jadi npm init (didalam folder apps kita)



sorry nama usernya jijik, dikarenakan pc saya itu BARU(GTX 1050 Ti inside).. belum sempat install ulang dan pemilik sebelumnya menamainya mungkin mencerminkan diri nya untuk memotivasi...
oke step selanjutnya tinggal kita install saja package berikut yg saya lampirkan

  • - babel-plugin-transform-es2015-arrow-functions 
  • - babel-preset-react 
  • - babel-core 
  • - babel-cli 
  • - babel-loader 
  • - babel-preset-es2015
  • - babel-preset-stage-2
  • - webpack
  • - webpack-dev-server
  • - react
  • - react-dom



silahkan tunggu.. proses memang agak sedikit lama tergantung koneksi internet anda~ anjay.
Jika proses sudah selesai maka ada file package.json anda yang berisi:


jika anda membaca artikel ini dan package tersebut sudah update mungkin akan ada beberapa error karna beberapa package yg terupdate akan tidak compatible dengan package yg outdated, berikut saya berikan isi package.json saya:



{
  "name": "testing",
  "version": "1.0.0",
  "description": "test",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "adit guantengz",
  "license": "ISC",
  "dependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-2": "^6.24.1",
    "react": "^16.1.1",
    "react-dom": "^16.1.1",
    "webpack": "^3.8.1",
    "webpack-dev-server": "^2.9.4"
  }
}

Copas ke package.json aja kalo artikel ini sudah outdate..
Oke jika sudah, silahkan tambahkan beberapa folder kedalam folder apps kita, untuk kasus ini saya menamakan nama directory apps yaitu "react", mari kita tambahkan beberapa folder kedalam folder react




Dist

Direktori ini menyimpan halaman html atau php kita yang siap di deploy kedalam production, nantinya webpack akan membundle file javascript yang telah kita gabungkan menjadi 1 juga meminified(optional) dan akan diletakan pada folder Dist

src

Direktori ini menyimpan file javascript,css,assets bagi web anda, di direktori ini adalah direktori proses Development anda, jadi semua js,css,image yang akan menjadi assets dan akan di bundle oleh webpack tersimpan pada direktori ini, contoh kita akan menggabungkan file logic.js dan react.js oleh webpack, anggap logic.js akan menangani semua frontend tentang logicnya.. dan react.js akan menangani letak front end dan layout element kita.

sebelum menambahkan file lainnya, mari menambahkan file webpack.config dan .babelrc untuk mengkonfigutasi library tersebut


berikut isi file dari .babelrc, saya screenshoot saja karna cuma sedikit :)


dan silahkan isi file webpack.config.js anda seperti dibawah ini:

const webpack = require('webpack');
const path = require('path');

const config = {
 entry: {
  app: [
   path.resolve('src/react.js'), 
   path.resolve('src/logic.js')
  ]
 },
 output:{
  path: path.resolve('dist'),
  filename: 'bundle.js'
 },
 module:{
  rules:[
   {
    test: /\.js$/,
    loader: 'babel-loader',
   }
  ]
 },

 devServer: {
  contentBase: path.join(__dirname, "dist"),
  compress:true,
  port:9000
 }
};
module.exports = config;

Ini adalah configurasi untuk webpack, anda harus memberi tahu webpack file apa saja yang akan dibundle dan di deploy olehnya, maka dari itu anda harus menuliskan webpack.config ini. Saya sebenarnya sangat menyarankan anda baca dokumentasi lengkap webpack pada website berikut : webpack .. agar anda dapat mengoreksi saya jika saya salah, akan saya jelaskan versi saya. Disini yang penting adalah entry dan output, mari hiraukan module dan devserver dulu.


Entry

Object Entry berisi object array, dimana nama objectnya akan menjadi sesuatu yang akan dibundle dan di deploy ke direktori Dist. Ingat direktori Dist berisi file yang siap untuk production. Dan pada kasus ini semua js akan di bundle kedalam 1 file js yaitu bundle.js. Jadi singkatnya object Entry berisi array app(ini alias, mari hiraukan) yang berisi file yang akan dibundle
menjadi 1.

Output

Output berisi beberapa object yang mempunyai fungsi masing masing 
path berisi path direktori production kita, dimana lokasi direktori itu adalah target dari semua javascript yang akan kita bundle
- filename berisi suatu nama semua javascript yang dibundle guna di import dari html nanti, contoh bundle.js

Module

Module ini berisi rule mengenai loader apa yang akan memproses suatu extension file, jika anda membundle css juga, maka anda membutuhkan css-loader (mari hiraukan ini).
dalam kasus ini, semua file ber extensi .js akan diload menggunakan loader yang bernama Babel-loader disinilah code ES6, si Babel ini yang akan mengcompile sintaks es6 kedalam es5 

Devserver

Config ini hanya untuk mengkonfigurasi package webpack-dev-server(auto reload dkk) silahkan lihat tentang webpack dev server disini

yup jika semua sudah di set, mari tambahkan file html untuk mengetest ini semua, tambahkan index.html pada direktori Dist yang berisi :



Dan tambahkan ini pada package.json:



mari tambahkan component React pada file react.js untuk menguji apakah react sudah bisa dicompile oleh babel:


dan tambahkan kode seperti dibawah didalam file logic.js untuk menguji apakah file tersebut dibundle webpack

okay semua sudah siap, silahkan jalankan perintah npm start pada command prompt atau terminal anda


silahkan buka http://localhost:9000/ untuk melihat apps kita yang dihosting oleh Webpack Dev Server (tetap berjalan pada Node.JS).


Yup ternyata react mudah sekali di integrasikan melalui webpack, oh iya jangan takut pakai webpack ya gan karna library ini sudah teruji handal dipakai oleh beberapa website. karna Twitter aja assetsnya dibundle oleh webpack ;)
Sekian ... 
Read More

Monday, November 13, 2017

Webpack is love

Seiring berjalannya waktu.. kita harus bersedia mempelajari tools & bahasa pemrograman baru agar menjadi kids progammer zaman now. Dengan berkembangnya teknologi dengan nama Node.JS sekarang yang di prediksi akan sangat Populer pada tahun mendatang, lahir lah library & tools third party yang dilahirkan oleh Node.JS.. Ada ratusan bahkan ribuan tools yang dibuat oleh developer untuk memudahkan developer lainnya menemukan esensi programming yang super efektif yang di kepalai oleh si Node.JS (apasih gua).

Oke kali ini gue mau share salah satu tools yang sangat bermanfaat bagi web programmer, tools ini disebut Webpack

Webpack

Apa sih webpack ? anak mana dia ? kenapa dia dilahirkan ?
Yak untuk mengetahui info detailnya silahkan masuk ke website webpack itu sendiri : https://webpack.js.org wkwkw.
Yak webpack singkatnya adalah suatu module bundler, maksud module bundler ini adalah suatu module yang membundle (membungkus) banyak module menjadi 1!! ingat ya banyak module di kemas kedalam 1 module, sehingga kita tidak perlu mengimport banyak (capek bro).

Contoh ya, misalnya kalian ingin membuat website pakai bootstrap + jquery + library js lainnya.. otomatis kalian harus meng import file css dan js dari framework tersebut berulang kali dan menuliskannya di head(untuk css) dan setelah tag body(untuk js) dan apabila ditengah jalan projek kalian diharuskan menambahkan suatu library tertentu agar fitur yang di rencanakan berjalan dengan baik, akhirnya kalian download library tersebut dan lagi dan lagi menambahkannya pada tag head dan body.

this is the old school way:


but, we could create better structure and have a better life with webpack m8.
dengan webpack kita bisa nge bundle css + js kedalam 1 file javascript dan kalian tinggal cuma nge import 1 file js saja dan jika di projek kalian sekiranya akan menambah file library yang baru, kalian tinggal menambahkannya melalui webpack saja tanpa harus menambahkannya dengan tag script.. Asyik kan

this is the programmer zaman now way:


dan webpack juga punya webpack-dev-server dia sangat berguna ketika kalian sudah malas untuk menekan tombol ctrl + r untuk mereload browser setiap kali kalian mengubah css/js/html kalian. Webpack dev server akan automatis me reload tampilan html apabila ada css,js atau element html  yang berubah.
Dan yang paling hebat dari webpack adalah dia gratis :D Huehuehuehue...
untuk menginstall webpack kalian diharuskan agar menginstall node.js dulu ya sahabat~
yang masih pakai oldschoolway buru buru tobat gan apalagi yang ngoding masih pake notepad++ wwkwkwkw.

-Webpack is love, Webpack is life

Read More

Saturday, May 20, 2017

Virtual Reality Berbasis Website (VRVIEW) Menggunakan API Google



Jujur sebenernya gue gatau ini api atau apa bahasanya, tapi yang jelas aplikasi vrview google ini bisa nge embed gambar panorama dijadiin aplikasi kaya google street gini loh yang bisa di geser geser


kaya google street khann, yaiyalah wong ini emang dari google :p btw kalo dibuka lewat android/ipon itu bisa di tilt lho untuk gesernya.
. nah kita sebut saja API VRVIEW ya biar gampang, gue jelasin step stepnya untuk bisa embed gambar apapun yang lu mau dijadikan 360 view

  1. Fork API Google VRVIEW di github
  2. upload gambar apapun yang lo mau
  3. selesai, tinggal embed via Iframe

API Google VRVIEW

singkat cerita api ini dibikin oleh google, dan api nya ini dibikin cuma pakai JS tjuy so pastinya dibanding plugin third party kaya WebGL, ini lebih ringan sih (sotoi bgt). karna api ini dibuat pakai JS jadi ndak perlu server sprt apache, nginx buat ngecompile. dan penggunaan api ini juga cukup simpel, tinggal taro api nya di local/hosting anda dan upload image yang mau dijadiin kaya google street, terus tinggal dipanggil aja via url. dalam kasus ini gue hosting api nya di github, jadi nanti gambar gambar yang mau di embed pun bakalan gue upload di github.

Step 1 Hosting API di github

2017 developer gatau github ? kayak dokter yang gatau sama jarum suntik, kayanya minimum requirement untuk bisa kerja sebagai developer apapun itu butuh pengetahuan tentang version control (git,scm)so harusnya ini harga mati brur untuk dipahami sbg dev, tapi github disini gak berfungsi sebagai version control, lebih kaya tempat hosting aja sich. langsung aja fork api nya dari repositori google https://github.com/googlevr/vrview 

yaelah harusnya ini gua gausah ngejelasin cara fork elah!
Jadi Fork ini kaya duplikat semua file, branch pada suatu repositori dan mentransfer isinya ke repositori milik kalian singkatnya gitu CMIIW.

Step 2 Upload Gambar Ke Repositori GITHUB


kalo udah di fork, langsung aja menuju ke repositori akun kalian dan lihat isi API nya dari yang kalian barusan fork.
Disini ada banyak folder dan file yang gausah kita utak atik karna emang ini udah dijadiin kaya framework yak ._. yang perlu diperhatiin disini itu adalah branching (sumpah gua gamau jelasin detail apa itu branching). 
singkat cerita Github itu punya fitur yang namanya static pages. kita bisa bikin static pages di setiap repositori yang kita bikin dengan membuat branch dengan nama "gh-pages", nah semua repositori yang ada branch gh-pages itu bisa diakses sebagai halaman HTML, jadi bukan sebagai file raw, di akses sebagai HTML!!!
contoh nih, gua punya repositori bernama "clean-bootstrap" yang isinya template sampahan yg gua buat untuk belajar, nah disitu gua bikin branch bernama "gh-pages" supaya bisa diakses sebagai html, nih silahkan visit: https://squalvj.github.io/clean-bootstrap . nah index.html nya ini gue hosting di github pada branch "gh-pages" makanya bisa diakses.
disini gua jelasin pattern static pages url github, yaitu
https://<nama_akun_github>.github.io/<nama_repository> 
biar gua gak ngebahas kemana mana, gua anggep udah ngerti static pages nya github, lanjut kita upload gambar, disitu ada folder images yang gunanya buat nampung file image untuk nanti bisa di embed dimana saja (iframe), sebelum upload file gambar, pastiin dulu kalian upload gambar di branch "gh-pages" ya karna kalo tidak, nanti gabisa diakses static pagesnya. silahkan pastiin dulu samain kaya gambar dibawah ini
pastiin gh-pagesnya yang ke checklist dipilihan branch di kiri atas brur.
kalo udah silahkan upload image nya ke dalam folder image, gatau juga caranya ? *astaghfirulloh.
masuk ke folder image > create new file > upload dah image yang mau lu upload
nih gua kasih contoh gambar panorama nya ya kek gini

Step 3 Akses URL Api nya

contoh lu udah ngupload gambar bernama "pemandangan.jpg" 
nah karna branch gh-pages udah dibuat dan repositori ini bisa diakses sebagai html maka api ini udah bisa jalan brur, monggo diakses via url sebagai format kaya gini nih 
https://<nama_akun_github>.github.io/<nama_repository>/?image/<nama_gambar_buat_dijadiin_vrview>
sebagai contoh ya gua pake akun github gua ya
https://squalvj.github.io/vrview/?image=images/pemandangan.jpg
nih iframe dibawah yang manggil gambar yang udah berhasil kita upload tadi

kalian bisa mengupload gambar sebanyak yang kalian mau asal gak ngelebihi 1gb karna github hanya memperbolehkan setiap repositori free user hanya sebesar 1gb, tinggal ganti aja parameter "image" nya pada url sesuai dengan nama gambarnya, mudah kan.
Ini berguna buat mahasiswa yang ambil tugas akhir judul tentang virtual reality berbasis web nihh, semoga bermanfaat. Support me dengan mengetikan angka 5 dikomentar dan lihat apa yg terjadi ?! :D

credit: Patrick Catanzariti, Google vrview
Read More

Sunday, March 12, 2017

Web Developer Starter Kit V1

Hello Darkness My Old Friend 
Pada hari yg buruk ini, saya ingin sedikit curhat soal kehidupan kuliahan, jadi ceritanya saya tuh lagi bikin judul tugas akhir soal bikin aplikasi android yang dimana bisa tuker tukeran data berbentuk Json lewat server menggunakan metode REST API, untuk aplikasi pada server saya menggunakan Code igniter dan plugin REST Server dan udah clear gak ada masalah, nah untuk yang android ini nih *MAD*. Saya Marah!!! Saya Kesal!!! Saya Benci!!! sama Android Studio #BoikotAndroidStudio, IDE yg satu ini bener bener berat dan buat laptop saya gakuat :( temen ada yang nyaranin pakai eclipse sih, tapi kalau pakai eclipse beberapa dependensi file seperti SDK mesti didownload manual dan di import manual *ppft dan ada beberapa file lainnya yang mesti kita cari sendiri dan import sendiri, sudahlah gausah bahas mereka *grr.
Hi gays Guys, kali ini gue mau ngeshare beberapa tools yang cukup effektif buat kalian yang punya profesi sebagai web developer, ini gak ada unsur sponsor 100% i fking guaranteed it, ini secara pribadi saya anjurkan karna tools tools yang saya akan share benar benar membantu kalian guys yang berkelut dibidang web dev *apacobaberkelut.

1.Prepros


Tools pertama yang mewakili tools tools berikutnya adalah Prepros, tools ini bisa di download di Disini, tools ini free for trial kok jadi cocok buat mahasiswa yg duitnya masih ngentit dari duit bayaran. Gue kasih tau nih intinya aja ya ini tools buat apa, oke dengerin baca nih
  1. Prepros ini punya fitur auto reload, jadi nanti si prepros ini bakalan bikinin mini server(Modelnya kaya localhost gitu) yang tugasnya buat nge Watch apa aja yang berubah dari script yang telah diatur untuk di watch, apabila ada yang berubah, nanti pada browser langsung otomatis kereload, jadi gausah pencet Ctrl+R berkali kali brur.
  2. Auto Compile, nah ini bocah juga punya fitur auto compile buat ngecompile Less atau Sass, CoffeScript, Haml, Pug (jade), dll. nih ya ane biasa ngebuild css pakai Stylus nah yg pakai stylus pasti ngerti capeknya ngetik di cmd "stylus -w file.styl -o file.css" untuk ngecompile manual format stylus ke css, nah dengan pakek prepros ini udah auto bro, gausah ngetik command itu setiap mau mulai

  3. Error Log biasanya kalau ngebuild dengan preprosessor semacam Less & Sass, kadang ada human error misalnya lupa tutup bracket, atau ada beberapa tanda kutip gajelaz yang bikin si compiler ngethrow error, dengan prepros ini log errornya bisa di trace gampil brur.

2. Jade Pug


Ini dia preprosesor andalan buat bikin html bro, yaitu Jade Pug, tadinya namanya Jade singkat cerita jade ini kayanya udah dibeli sama Pug *sotoibanget. dengan adanya Jade Pug gua bikin template html semacem company profile atau Cv itu mudahin gue banget ga harus nutup tag html huehuehue, nanti gue share caranya pakai ini di postingan selanjutnya.


3.Stylus


Nah ini gacokan aing bro, ini lethal weapon buat bikin css nih, karna ini juga gua kalo ngebuild css pada format css suka lupa tutup bracket sama tanda semicolon ';' karna keseringan build css pakai stylus wakakak, Stylus singkatnya tuh kaya Sass dan Less CMIIW, dia ngecompile format file ".styl" ke dalam format ".css", asli enak banget pakai stylus bro, lu gausah mikir soal tutup bracket, titik 2 ':' , semicolon ';' lagi cuy, karna stylus pemisahnya pakek indent. nanti gua share brur cara pakeknya *hore.

4.Sublime Text 3/2


Jangan bilang loe selama ini pakek notepad++ ???? *mad* cukup pijat saja yang plus plus, notepad jangan #BaladaCintaSublime. Sublime tuh text editor yang kaya akan plugin, tampilannya punya background gelap gitu jadi gak terlalu nusuk mata banget kalo ngoding malem + blom mandi, dan yg terpenting ini FREE coeg *yummy. nih kalo mau download Disini, nanti gue share plugin buat sublime yg cool abis pastinya di postingan selanjutnya.

Yak itu semua tools yg gue pakek selama ini buat mempercepat dan mengirit waktu gua buat ngoding, seebenrnya gua mau masukin babel juga tapi belum tau banget soal toolsnya wkwkwk. Ciao!
Read More

Friday, May 20, 2016

Aplikasi Web Streaming Lagu Online dengan PHP



Apa kabar kalian mahasiswa tingkat akhir, pasti sedikit cemas banyak rindunya... ;) Kali ini ane mau share projek kecil kecilan ane nih, Sejenis CMS gitu sih semacam stafaband kaya gitu, tapi pasti ini rawan exploit, soalnya ane buat pakai Native PHP, gak pakai framework sama sekali, dan pasti 100% buatan ane sendiri bray, ane cuma gabungin beberapa snippets2 kode dari google and friends. Dikarenakan ane tidak boleh memakai framework apapun pada projek ini, alhasil tampilan web jadi kurang menarik dan tidak responsive, jadi tinggal diubah aja css nya pakai bootstrap kalo ente mau edit edit broh, jangan lupa sertakan sumber ya kalau mau edit :D.

Website ini namanya "Lagu Laguan", nah di aplikasi website ini hamper sama kaya stafaband, beemp3, skullmp3, pkoknya yang sering download lagu gratisan di google pasti tau dah.

Fitur:
-User and Admin Privillege
-Upload Gambar,Lagu
-Captcha Authentication
-Local File Directory With Rename Function
-Register Page dengan banyak restriction
-Edit Informasi User
-Search Engine untuk cari lagu dan user.
-index website dengan feed top user dan lagu terbaru
-Simple mp3 Player
-Non user tidak boleh download lagu

sebelum pasang aplikasi ini di htdocs, ada beberapa konfig yang harus diatur pada file "php.ini", soalnya jika default upload file size di "php.ini" itu maksimal 2mb, jadi kalo misalnya si user mau upload lagu yang sizenya lebih dari 2mb, maka gabakal bisa nanti apache nya bakalan nolak karena default cuma 2MB, maka dari itulah kita harus merubah "upload_max_filesize" menjadi 20M di konfig "php.ini".

Buka Xampp apache > Config > PHP.ini


ubah jadi "20M"

Ubah Jadi 20M
oke Konfig awal udah selesai, tinggal import database ane dan taro file lagu laguan ini di htdocs kalian yang pada mau coba.
nih beberapa screenshot aplikasi web ane:







Silahkan download database + aplikasi webnya terus jangan lupa di import databasenya, dan masukin aplikasi webnya di htdocs.
oh iya untuk akun admin top level itu usernamenya : "adit", passwordnya : "bismilah" nah admin top level ini gakbisa dihapus ;)
Link: LINK
Passwordnya : uwotm8
Jangan lupa sertakan sumber kalo mau COPAS !

Read More