Tuesday, November 3, 2015

Sourcetree dan Github

Untuk para pemakai Ms. Windows dan Mac Os sekarang ada client git yang cukup bagus, dengan interface yang mudah, yaitu: Sourcetree. Aplikasi Sourcetree dibuat dan diberikan secara cuma-cuma (=gratis) oleh perusahaan Atlassian. Perusahaan Atlassian adalah pemilik situs Bitbucket yang merupakan penyedia layanan git, sejenis Github.

Karena kemudahannya saya sudah mulai memakai aplikasi Sourcetree untuk matakuliah yang saya ajarkan. Berikut adalah bahan dalam bentuk presentasi Prezi yang saya pakai dalam mengajar Sourcetree:


Perhatikan presentasinya memiliki link ke sejumlah video Youtube.

Semoga bermanfaat.

Kembali ke: Belajar Git

Sunday, February 10, 2013

Hubungkan Eclipse dengan Github

Langkah-langkah untuk menghubungkan Eclipse dengan Github:
  1. Anda harus terlebih dahulu harus memiliki SSH key dan mendaftarkannya ke Github. Jika belum, anda dapat mengikuti langkah-langkah pada tulisan ini;
  2. Jika repository yang akan di-clone belum ada maka terlebih dahulu buat repository baru dengan cara: 
    1. login ke github,
    2. Klik pada tombol New Repository , dan 
    3. Isi informasi yang diminta.
  3. Catat alamat repository-nya. Sebagai contoh berikut tampilan salah satu repository saya dengan alamat:
    [email protected]:rahmad-dawood/mobile.git
    
  4. Jalankan Eclipse dan buka perspective untuk Git:
    Jika Perspective untuk Git belum ada, maka tekan ikon perspective, pilihlah menu Other, dan pilihlah Git Repository Exploring dari daftar  yang muncul seperti berikut:
  5. Berikut akan muncul perspective untuk Git yang tampilannya seperti berikut:
  6. Klik link Clone a Git Repository yang akan membuka dialog box untuk memasukkan informasi repository yang akan di-clone.  Pada dialog box tersebut: tuliskan alamat repository pada textbox URI (sesuai yang anda catat di langkah 2), pilih SSH sebagai Protocol, dan tekan tombol Next. Tampilan dialog box-nya kira-kira akan seperti berikut:
    Perhatikan informasi Host dan Repository Path dapat diturunkan dari URI dan akan diisi otomatis oleh Eclipse;
  7. Nanti anda akan diminta untuk memasukki password agar Eclipse dapat mengakses key SSH anda. Tampilannya kira-kita akan seperti berikut:
  8. Jika sukses maka semua branch yang aktif, saat itu, dari repository tersebut akan muncul. Jika ini repository baru makan hanya akan ada branch master. Tampilannya akan seperti berikut:
  9. Tekan tombol Next untuk memasukkan informasi dimana repository akan disimpan di komputer anda, yang tampilannya seperti berikut:
    Informasi terpenting disini adalah:
    • Directory yang merupakan lokasi dimana repository akan di-clone pada komputer anda, dan 
    • Checkbox Clone Submodules yang menentukan apakah semua submodule yang ada juga ikut di-clone;
  10. Tunggu sesat agar repository di-clone ke computer anda dan setelah proses clone selesai perspective Git Repositories akan berpenampilan seperti berikut:
  11. Dengan demikian repository lokal anda sudah siap untuk dipakai dengan membuat project di dalamnya.


Kembali ke: Belajar Git


Sunday, January 27, 2013

Menandakan Rilis

Sudah pasti pada saat pengembangan suatu perangkat lunak kita akan mengeluarkan rilis-rilis, misanya: versi alpha, versi beta 2, versi 1.0, atau versi 2.3. Untuk menandai rilis-rilis demikian Git menyediakan fungsi yang disebut dengan Tag (=menandai), dengan kata lain kita me-tag (=menandai) versi kode sekarang dengan rilis tertentu.

Perintah-perintah

  1. Untuk melakukan tag cukup menjalankan perintah berikut:
    git tag -a v1.0 -m "Rilis versi 1.0"
    Perhatikan v1.0 merupakan nama rilis yang anda hendak berikan dimana disini saya cantumkan sebagai v1.0 (versi 1.0);
  2. Untuk melihat semua tag yang sudah ada jalankan perintah berikut:
    git tag
  3. Untuk melihat informasi suatu tag perintahnya adalah:
    git show v1.0
    Perhatikan v1.0 merupakan nama tag yang saya hendak lihat.

Kembali ke: Belajar Git


Wednesday, May 16, 2012

Belajar Flask: Form

Cara ketiga untuk memerintahkan atau mengirimkan informasi ke suatu aplikasi web adalah dengan memakai Form. Kalau kedua cara sebelumnya (Query String dan URI) memakai perintah HTTP GET maka Form akan memakai perintah HTTP POST.

Bagaimana cara memakai Form di Flask?

Dengan memakai contoh yang sama dengan yang ada pada tulisan tentang pemakaian query string, maka template untuk dasar.html dan apakabar.html tidak akan mengalami perubahan. Tetapi template pertama.html harus kita ubah karena sekarang kita perlu membuat form untuk mengirimkan informasi ini. Berkas pertama.html sekarang menjadi:
{% extends "dasar.html" %}

{% block isi %}
    Kirim salam ke siapa?
    <form method="post">
        Nama: 
        <input type="text" name="depan">
        <input type="text" name="belakang">
        <br />
        <input type="submit" name="name" value="Kirim">
    </form>
{% endblock %}
Perhatikan dapa deklarasi form ini saya tidak mencantumkan atribut action yang berarti form ini akan dikirim kembali ke alamat yang menampilkan form ini, dalam hal ini URL /. Dengan demikian fungsi yang menampilkan template yang berisikan form ini harus juga memproses form ini. Sehingga program python-nya menjadi:
from flask import Flask, render_template, request, redirect, \
                  url_for
app = Flask(__name__)

@app.route("/", methods=['POST', 'GET'])
def pertama():
    if request.method == 'POST':
        if 'depan' in request.form and \
           'belakang' in request.form:
            depan = request.form['depan']
            belakang = request.form['belakang']
            return render_template("apakabar.html", 
                                   namaDepan=depan, 
                                   namaBelakang=belakang)

    return render_template("pertama.html")

if __name__ == '__main__':
    app.run(debug=True, host="127.0.0.1", port=8080)

Mari kita bedah perbedaan dalam program ini:
  • Baris 5, pada decorator app.route saya tambahkan satu parameter yaitu methods yang berisikan daftar perintah HTTP apa saja yang akan diterima serta akan diproses oleh fungsi ini; kalau parameter ini tidak dicantumkan maka Flask akan secara otomatis menganggap fungsi tersebut hanya menerima perintah GET
  • Karena pada deklarasi form saya tidak mencamtukan atribut action (lihat baris 5 pada berkas pertama.html) maka form ini akan dikirim oleh browser ke alamat yang sama, yang berarti fungsi pertama bukan hanya bertugas menampilkan template pertama.html tetapi juga bertugas menangani form ini. Oleh karenanya methods harus saya  deklarasi untuk memberitahu Flask bahwa fungsi ini akan memproses perintah GET dan perintah POST;
  • Baris 7, karena fungsi ini sekarang menangani dua perintah HTTP maka saya terlebih dahulu harus tahu perintah mana yang masuk: apa GET (berarti saat menampilkan halaman ini saat pertama sekali) atau POST (berarti karena pengiriman form);
  • Ingat kembali kalau variable request memiliki dictionary bernama args untuk menampung variable-variable pada query string. Nah khusus untuk form, variable request juga ada dictionary khusus yang bernama form yang berisikan semua elemen dari form yang dikirim;
  • Baris 8-9, karena saya sudah tahu ini merupakan  pengiriman form maka saya mau memastikan saja kesemua elemen dalam form ini yang saya butuhkan ikut terkirim;
  • Baris 10, saya mengambil isi dari input text yang bernama depan (lihat baris 7 dari berkas apakabar.html);
  • Baris 11, saya mengambil isi dari input text yang bernama belakang (lihat baris 8 dari berkas apakabar.html);
  • Baris 12-14, membangkitkan template apakabar.html dengan mengirimkan kedua variable yang dibutuhkannya;
  • Baris 16, akan dijalankan jika perintah yang ditangani adalah perintah GET yang hanya menampilkan template pertama.html.


Kembali ke: Belajar Flask


Saturday, May 12, 2012

Belajar Flask: URI

Cara kedua untuk memerintahkan atau mengirimkan informasi ke suatu aplikasi web adalah dengan memakai URI. Ini juga merupakan cara yang dianjurkan oleh konsep REST.

URI adalah singkatan untuk Uniform Resource Identifier atau standar (=uniform) penamaan (=identifier) suatu sumber daya (=resource) di web. Sumber daya disini bisa berupa: gambar, video, audio, berkas, ebook, halaman HTML, berkas PDF, dll. Sedangkan URL (Uniform Resource Locator) merupakan alamat dimana URI itu bisa ditemukan. Dalam URI tidak dikenal istilah query string sehingga pemakaiannya seperti pada cara pertama sangat dihindari disini, dan juga oleh konsep REST.

Kalau tidak bisa memakai query string terus bagaimana kita mengirim parameter? Dengan menanggap path itu merupakan deklarasi parameter. Misalnya alamat pada contoh pada tulisan sebelum ini tentang query string:
http://localhost:8080?par1=rahmad&par2=dawood
dapat kita tulis ulang menjadi:
http://localhost:8080/rahmad/dawood
Pada contoh ini, saya telah menetapkan directory level pertama sebagai nilai dari parameter par1 dan directory level kedua sebagai nilai dari parameter par2.

Terus bagaimana memakai konsep URI ini di Flask?

Dengan memakai contoh yang sama dengan yang ada pada tulisan sebelum ini tentang pemakaian query string, maka template untuk dasar.html dan apakabar.html tidak akan mengalami perubahan. Tetapi template pertama.html harus kita ubah karena URL-nya berubah dari memakai query string ke memakai URI. Berkas pertama.html sekarang menjadi:
{% extends "dasar.html" %}

{% block isi %}
    Kirim salam ke siapa?
    <ul>
        <li>
            <a href="/apakabar/Rahmad/Dawood">
                Rahmad Dawood
            </a>
        </li>
    </ul>
{% endblock %}
Terus program python-nya menjadi:
from flask import Flask, render_template, request
from flask import redirect, url_for

app = Flask(__name__)

@app.route("/")
def pertama():
    return render_template("pertama.html")

@app.route("/apakabar/<depan>/<belakang>")
def apakabar(depan, belakang):
    return render_template("apakabar.html", 
                           namaDepan=depan,
                           namaBelakang=belakang)

app.run(debug=True, host="127.0.0.1", port=8080)
Mari kita bedah perubahan pada program ini:

  • Baris 10, pada  pemetaan URL, ada tambahan <depan> dan <belakang> yang menandakan bahwa kedua elemen ini merupakan parameter yang wajib ada pada perintah ini. Perhatikan juga fungsi apakabar sekarang memerlukan dua parameter yang namanya sama dengan yang tercatat dibagian pemetaan URL, yaitu: depan dan belakang;
  • Disini perintah if yang sebelumnya ada untuk memeriksa apakah parameter-parameter ini dikirim juga telah hilang karena sudah ditangani langsung oleh Flask;
  • Baris 12-14 adalah proses pengiriman variable depan dan belakang ke template apakabar.html untuk ditampilkan.
Disamping secara konsep lebih kompak juga secara pemrograman lebih gampang! :)


Kembali ke: Belajar Flask


Referensi


Belajar Flask: Query String

Seperti yang telah saya tuliskan sebelumnya, query string merupakan cara pertama untuk memerintahkan atau mengirimkan informasi ke suatu aplikasi web.

Query string pada dasarnya adalah bagian dari URL setelah karakter tanda tanya (?). Misalnya, pada URL berikut:
http://localhost:8080?par1=rahmad&par2=dawood
Yang dimaksud query string disini adalah segala sesuatu setelah tanda tanya (?) dan disini terdapat dua parameter yang dipisahkan oleh karakter dan (&), yaitu: parameter par1 yang bernilai rahmad dan parameter par2 yang bernilai dawood.

Nah sekarang bagaimana memakai query string di Flask?

Dalam contoh berikut halaman utama (dengan URL "/") akan mengirimkan sebuah nama ke halaman dengan URL "/apakabar" untuk ditampilkan. Kedua halaman ini akan memakai dasar.html sebagai fondasinya.

Isi dasar.html:
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
       {% block isi %}{% endblock %}
    </body>
</html>

URL "/apakabar" akan menampilkan template apakabar.html yang berisi:
{% extends "dasar.html" %}

{% block isi %}
    <h1>Apakabar {{ namaDepan }} {{ namaBelakang }}...</h1>
{% endblock %}
Perhatikan pada baris 4 ada tag khusus {{ namaDepan }} dan {{ namaBelakang }}yang merupakan perintah ke Jinja (dan Flask) untuk mengambil nilai dari kedua variable ini dan tampikan dilokasi tersebut.

Sedangkan halaman utama pada URL "/" akan menampilkan template pertama.html yang berisi:
{% extends "dasar.html" %}

{% block isi %}
    Kirim salam ke siapa?
    <ul>
        <li>
            <a href="/apakabar?depan=Rahmad&belakang=Dawood">
                Rahmad Dawood
            </a>
        </li>
    </ul>
{% endblock %}

Sedangkan program python-nya sendiri akan seperti berikut:
from flask import Flask, render_template, request
from flask import redirect, url_for

app = Flask(__name__)

@app.route("/")
def pertama():
    return render_template("pertama.html")

@app.route("/apakabar")
def apakabar():
    if "depan" in request.args and "belakang" in request.args:
        return render_template("apakabar.html", 
                        namaDepan=request.args["depan"],
                        namaBelakang=request.args["belakang"])
    return redirect(url_for("pertama"))

app.run(debug=True, host="127.0.0.1", port=8080)
Mari kita bedah program ini:
  • Baris 1-2 untuk memuat segala class dan fungsi yang akan dipakai;
  • Baris 4 untuk menginisialisasi aplikasi Flask ini;
  • Baris 18 untuk menjalankan program aplikasi web pada alamat http://127.0.0.1:8080
  • Baris 6-8 untuk menampilkan halaman utama pada URL "/" (atau URL lengkapnya "http://127.0.0.1:8080/") dari template pertama.html;
  • Baris 10-16 untuk menampilkan URL "/apakabar" (atau URL lengkapnya "http://127.0.0.1:8080/apakabar");
  • Perlu diketahui bahwa Flask akan secara otomatis memilah query string yang diterimanya dan menempatkan semua parameter yang ditemukannya pada dictionary yang bernama args yang merupakan bagian dari variable request. Key dari dictionary args adalah nama-nama parameter yang ditemukan pada query string tersebut sedangkan value-nya adalah nilai dari parameter tersebut;
  • Baris 12 untuk memeriksa apakah ada parameter depan dan belakang. Jika kedua parameter ini ada maka nilainya akan diambil dan dikirimkan ke halaman apakabar.html untuk ditampilkan (baris 13-15). Jika salah satu saja dari parameter ini tidak ditemukan pada query string maka perintah-perintah yang dilindungi oleh pernyataan if (baris 13-15) akan diabaikan dan langsung ke baris 16;
  • Perintah if ini saya tulis untuk menjaga dari kemungkinkan pengiriman URL yang salah yang mungkin terjadi jika seorang user salah mengetikkan URL ini dan bukannya mengklik link yang disediakan. Misalnya URL yang diketik adalah http://localhost:8080/apakabar?dpan=Rahmad&belakang=Dawood dimana parameter dpan salah diketik yang seharusnya depan;
  • Perhatikan disini parameter kedua dan ketiga saat memanggil fungsi render_template (baris 15-16) adalah namaDepan dan namaBelakang yang namanya sama dengan variable-variable yang akan ditampilkan pada halaman apakabar.html (lihat kembali baris 4 pada apakabar.html di atas);
  • Baris 16 untuk  memerintah Flask untuk mengalihkan (=redirect) ke fungsi yang bernama pertama, yang akan kembali menampilkan URL "http://127.0.0.1:8080/". Fungsi url_for akan membantu untuk membangkitkan URL yang benar, saya bisa saja tidak memakai fungsi ini dan langsung menuliskan "/".

Kembali ke: Belajar Flask


Referensi

Belajar Flask: Pengiriman Informasi

Disamping mampu memberikan informasi yang kita butuhkan, suatu aplikasi web juga harus mampu menerima informasi dari kita. Secara umum terdapat tiga cara untuk mengirimkan informasi ke suatu aplikasi web. Dua dari tiga cara ini akan memakai perintah GET (yaitu: query string dan URI) dan satu cara akan memakai perintah POST (yaitu: form). Sebenarnya sih ada beberapa cara lain yang memakai perintah-perintah HTTP lainnya tetapi kedua perintah ini yang paling sering dipakai.

Dalam beberapa tulisan berikut akan saya uraikan cara memakai ketiga cara ini di Flask. Tetapi sebelum memulai, perlu saya jelaskan sedikit tentang perintah HTTP GET dan POST.

GET merupakan perintah HTTP yang dikirimkan oleh browser ke web server saat anda mengklik suatu link. Perintah GET pada dasarnya adalah permintaan oleh browser ke server untuk mengambil (GET) suatu dokumen yang telah dimintakan oleh seorang user. Perintah GET ini juga bisa disertakan dengan parameter-parameter, misalnya: ambil dokumen versi PDF bukan HTML atau ubah warna tulisannya menjadi biru tua. Dalam konteks aplikasi web, GET dipergunakan untuk memerintahkan aplikasi web untuk melakukan sesuatu atau untuk menjalankan suatu fungsi. Sedangkan parameter dari perintah GET dipakai sebagai cara untuk mengirimkan parameter-parameter tertentu ke perintah atau fungsi yang hendak dijalankan.

Sedangkan POST merupakan perintah HTTP yang dikirimkan oleh browser ke web server saat anda mengisi dan mengirimkan sebuah form. Contoh form yang sudah pasti pernah anda kirim adalah form untuk login. Pada form login anda diminta mengisi username, mengisi password, dan menekan tombol login atau submit (=kirim). Pada saat anda menekan tombol ini maka browser akan mengambil semua informasi yang telah anda isikan dan mengirimkannya ke server dengan perintah HTTP POST. Dalam konteks aplikasi web, perintah POST juga dipergunakan untuk keperluan yang sama.

Kembali ke: Belajar Flask