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%

PHP


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;
}

Python


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"

Ruby


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-else
if var == 10
print “Variable is 10?
else
print “Variable is something else”
end

Node.js


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");
}

Terima Kasih

Meetup #2

By Ribhararnus Pracutiar