Meetup #2
Mengenal HTTP dan Bahasa Server
Tentang HTTP
HTTP (HyperText Transfer Protocol) adalah dasar komunikasi data untuk WWW (World Wide Web).
Sebuah protokol aplikasi, untuk sebuah sistem terdistribusi, secara kolaboratif, untuk sebuah sistem informasi hypermedia
Gambaran Tekhnis
HTTP berfungsi sebagai protokol request-response dalam model komputasi client-server.
Sebuah web browser, misalnya, dapat menjadi client dan aplikasi yang berjalan di komputer hosting (sebuah website) dapat menjadi server
Client menyerahkan pesan request HTTP kepada server.
Server, yang menyediakan hasil berupa file HTML dan atau konten lainnya, atau bisa juga melakukan fungsi lainnya sebagaimana request yang dilakukan client, lalu mengirim pesan response ke client. Response berisi status informasi mengenai request, dan mungkin juga berisi content yang direquest di dalam body nya
Alur HTTP dari client ke Server
Untuk demo mengenai content yang dikirimkan, bisa klik disini:
http://siliconbengawan.org/demo/http-status/200
Untuk apa mempelajari HTTP?
Mengetahui dibalik proses saat kita browsing.
Sebagai dasar pengetahuan mengembangkan aplikasi web, kita perlu mengetahui alur HTTP.
Pada nantinya, sangat berguna ketika kita mengembangkan sebuah API, dan atau menggunakan API yang dikembangkan dari perusahaan besar, seperti facebook, google, amazon, yahoo dll
Susunan Skema HTTP
URL atau kita biasa menyebutnya link sebenarnya mempunyai susunan.
Sebagai contoh:
http://www.google.com/search?q=belajar+membuat+web
Terdiri dari:
- http sebagai protocol
- google.com sebagai host
- search sebagai path
- q sebagai query, berisi belajar+membuat+web
Untuk lebih jelasnya kita dapat mempelajari skema http
disini
Port Standar dan HTTPS
Port standar yang digunakan HTTP adalah 80
Sedangkan HTTPS, memakai port 443. S dalam HTTPS berarti Secure, artinya semua kode request dan response, aman dan terenkripsi dengan baik.
HTTPS digunakan sebagai protokol standard untuk website yang di dalamnya terdapat transaksi request-response yang rahasia, misal pada website Bank, Login web, dan lain sebagainya
Kode Status HTTP
Ketika kita mengirimkan request dari client ke server. Maka server akan mengembalikan data response diantaranya adalah HTTP Status Code.
Kegunaan HTTP Status Code:
- Nantinya diterjemahkan oleh client, misal pada browser,
status code akan menentukan apa yang akan dilakukan oleh browser selanjutnya, apakah redirect, apakah menampilkan error, dsb
- Untuk crawler, seperti mesin pencari dan aplikasi, Status Code berguna, misal untuk keperluan apakah halaman web tersebut tersedia atau tidak
- Dan lain-lain
Beberapa daftar Status Code yang sering dijumpai
- 200 atau OK, berarti bahwa sebuah response yang dikirim server sukses.
- 301, Moved Permanently, digunakan untuk keperluan redirect, biasanya mesin pencari seperti google, akan mengingat bahwa link sudah pindah di lokasi yang baru
- 302 atau Found, seperti 301, hanya saja tidak permanen, biasanya digunakan untuk redirect setelah login dsb
- 304, Not Modified, artinya client tidak perlu menerima response baru dari server, karena client seperti browser sudah mendownload copynya
- 401, Unauthorized, digunakan ketika user gagal login
- 403, Forbidden, seperti 401 tapi digunakan ketika user mengakses suatu resource, tapi server tidak mengijinkannya
- 404, Not Found, sumberdaya yang direquest, tidak ditemukan, biasanya jg digunakan untuk halaman web yang tidak ditemukan
-
500 Internal Server Error, ada kesalahan di sisi server, kode ini dikirim ketika ada kesalahan di server, sehingga client mampu mengenalinya sebagai error
HTTP Request Method
Ketika request dikirim, HTTP jg mengikutkan metode yang nantinya dibaca oleh server.
Metode ini nantinya sangat fatal bagi aplikasi web untuk menerjemahkan.
Beberapa HTTP Request Method yang sering digunakan:
GET, POST, PUT, DELETE
HTTP GET
Metode yang digunakan untuk mengambil informasi.
Request dengan menggunakan GET hanya mengambil data, dan tidak ada efek lainnya seperti POST yang mengirim data tambahan saat request.
Biasanya GET mendapatkan informasi dari query di dalam URL.
Untuk lebih lengkapnya bisa memainkan demo disini:
HTTP POST
Penjelasan secara sederhana: metode HTTP POST digunakan untuk mengirim data (dengan cara submit data) pada saat request.
Data tersebut nantinya dibaca dan digunakan untuk melakukan operasi, seperti memasukkan data ke dalam database, mencari data dalam database, dan fungsi-fungsi lainnya, tanpa menyediakan informasi dalam URL.
Untuk demo tentang HTTP post:
HTTP Method Lainnya
PUT = biasanya digunakan untuk mengupdate informasi
DELETE = biasanya digunakan untuk menghapus informasi
TRACE, OPTIONS, CONNECT, Dan lainnya
(tidak akan dibahas sekarang karena menyangkut materi tingkat lanjut)
Mengenal Bahasa Server
Untuk membuat Aplikasi Web
Beberapa Bahasa Server
- ASP (*.asp)
- ActiveVFP (*.avfp)
- ASP.NET (*.aspx)
- C (*.c, *.csp) via CGI
- ColdFusion Markup Language (*.cfm)
- Java (*.jsp) via JavaServer Pages
- JavaScript, Server-side JavaScript (*.ssjs, *.js) (example: Node.js)
- Lua (*.lp *.op *.lua)
- Perl CGI (*.cgi, *.ipl, *.pl)
- PHP (*.php)
- R (*.rhtml) - (contoh: rApache)
- Python (*.py) (contoh: Pyramid, Flask, Django)
- Ruby (*.rb, *.rbw) (example: Ruby on Rails)
- SMX (*.smx)
- Lasso (*.lasso)
- Tcl (*.tcl)
- WebDNA (*.dna,*.tpl)
-
Progress WebSpeed (*.r,*.w)
Statistik Penggunaan Bahasa Script di Server
Menurut hasil survey w3techs.com per tanggal 26 April 2014, bahasa yang digunakan untuk membangun sebuah website (keseluruhan di internet)
PHP: 82%
ASP.Net: 17%
Java: 2.7%
ColdFusion: 0.8%
Perl: 0.6%
Ruby: 0.5%
Python: 0.2%
Javascript: 0.1%
Sejarah PHP
PHP diciptakan oleh Rasmus Lerdrof pada tahun 1995. Dulunya PHP memiliki arti Personal Home Page, tapi sekarang sekarang resmi arti dari PHP adalah PHP Hypertext Preprocessor.
Versi terakhir PHP sekarang adalah 5.5. Setiap versi biasanya terdapat penambahan fitur, atau menambal bug dan security.
Rilis yang akan datang adalah 5.6
Web besar yang menggunakan PHP
Facebook (sekarang menggunakan Hack)
Wikipedia
Wordpress
Joomla
Forum-forum berbasis v-bulletin
Drupal
Dan lainnya
Kelebihan dan Kekurangan PHP
Kelebihan:
- Gampang dipelajari
- Banyak komunitas yang bisa membantu kita ketika mendapat kesulitan
- Dokumentasinya jelas
- Banyak lowongan pekerjaan yang membutuhkan skill PHP
- Hampir semua hosting website mendukung PHP (terutama hosting yang bersifat shared)
- Sangat terkenal
Kekurangan
- Lemah di security, kebocoran bugs dan vulnerability sistem website berbasis php banyak bersebaran di internet
- Kode yang jelek, seringkali kode hasil dari coding PHP menghasilkan kode yang jelek
Contoh kode PHP
<!DOCTYPE html>
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
atau
<?php echo 'apa kabar dunia'; ?>
pernyataan if-else:
$x = 0;
if ($x == 0) {
echo $x = 0;
}
Sejarah dan Perkembangan Python
Python sudah direncanakan disusun pada akhir tahun 1980 an, dan mulai dibuat pada december 1989 oleh Guildo van Rossum
Python 2.0 dirilis pada 16 Oktober 2000
Python 3.0 dirilis pada tanggal 3 Desember 2008
Python 2.7 yang sekarang paling banyak digunakan
Sedangkan Python 3.0 yang memiliki fitur-fitur terbaru masih belum banyak digunakan karena masalah kompabilitas dari sistem sebelumnya.
Hampir semua distro Sistem Operasi Linux memiliki python di dalamnya.
Perusahaan besar yang menggunakan Python
Google (tidak seluruhnya)
Youtube
Reddit
Digg
Blogger.com
Quora
Dropbox
Instagr.am
dsb
Kelebihan dan Kekurangan Python
Kelebihan:
- Struktur Bahasa nya rapi dan Indah
- Python sudah terinstall dari awal di beberapa OS linux
- Modular (menambahkan beberapa fungsi hanya jika dibutuhkan)
- Sekarang ini sebagai bahasa pengenal di berbagai mata kuliah komputer sains di luar negeri
- Beberapa cloud hosting mendukung python dari sananya
Kekurangan:
- Komunitasnya kecil
- Memakan memory banyak untuk perhitungan tertentu
- Agak lambat
- Memaksa programmer mengikuti gaya pemogramannya (dengan menggunakan tab)
Contoh kode python (.py)
print "apa kabar dunia"
pernyataan if-else memaksa menggunakan tab
x = 0
if balance < 0:
print "nilai x kurang dari 0"
Sejarah dan perkembangan Ruby
Ruby diciptakan di jepang oleh Yukiro "Matz" Matsumoto di jepang
Pada tahun 2000 an, ruby lebih populer dari python di jepang.
Versi terakhir ruby adalah 2.1.0 yang dirilis pada hari natal (Desember 2013)
Komunitas Ruby pada akhirnya lebih mengerucut pada komunitas Ruby on Rails (sebuah framework untuk ruby)
Beberapa Web Besar yang menggunakan Ruby
Twitter (dulunya, sekarang migrasi ke Scala)
Shopify
Github
Hulu
Slideshare
Scribd
Dan lain-lain
Kelebihan dan Kekurangan Ruby
Kelebihan:
- Struktur bahasa yang indah dan bagus
- Beberapa startup di silicon valley banyak yg menggunakan ruby
Kekurangan:
- Butuh banyak jam terbang dalam belajar ruby
- Ruby sendiri tidak banyak dikenal oleh para developer, melainkan ruby-on-rails (sebuah framework web yang dipakai untuk membuat web berbasis ruby)
- Sedikit hosting yang support (apalagi shared hosting, minimal vps atau dedicated server untuk menjalankan aplikasi ruby)
Contoh Kode Ruby
puts "apa kabar dunia"
pernyataan if-elseif var == 10
print “Variable is 10?
else
print “Variable is something else”
end
Sejarah dan Perkembangan Node.js
Pada awalnya, Ryan Dahl, pencipta node.js ingin menciptakan aplikasi realtime, dimana data dikirim dari server ke client, bukan client ke server, mirip gmail.
Setelah mencoba banyak bahasa pemrograman, dia memilih javascript sebagai bahasa yang digunakan.
Pada tahun 2009, terciptalah node.js
Node.js sendiri menggunakan engine V8 nya google chrome dalam mengeksekusi javascript.
Membuat javascript selain digunakan di dalam browser (client-side) juga dapat digunakan di server (server-side)
Perusahaan web besar yang menggunakan Javascript (Node.js)
Paypal
(dengan kraken.js, dulunya paypal memakai java)
LinkedIn (untuk aplikasi mobile)
Ebay
C9.io
Yahoo (untuk keperluan tertentu)
Storify
dan lain-lain
http://nodejs.org/industry/
Kelebihan Node.js
- Node.js adalah javascript di server, artinya kita mengembangkan aplikasi web dengan bahasa yg sama. Dengan bahasa javascript di client (browser)
- Dapat menjalankan kode asinkron.
- Eksekusinya sangat cepat karena menggunakan v8 nya google, yang dipakai dalam browser google chrome
- Meskipun terbilang baru, perkembangan node.js sangat cepat di website. Dulunya kode-kode di github didominasi oleh ruby, sekarang oleh javascript
- Package Manager
- Komunitasnya bertambah tiap hari
- Grafik peningkatan penggunaan node.js meningkat
- Gampang dipelajari karena javascript sudah dikenal sejak lama (walopun javascript dalam browser)
- Bahasa yang saya gunakan untuk membuat http://siliconbengawan.org
Kekurangan Node.js
- Terbilang tekhnologi baru, API belum stabil
- Harus memahami javascript jika ingin membuat web aplikasi dengan node.js
- Butuh pendalaman dalam belajar (terutama yang terbiasa dengan PHP dan apache)
Contoh Kode Javascript (node.js)
console.log("Apa kabar dunia?");
Pernyataan if-else
var x = 0;
if (x === 0) {
console.log("x = 0");
}