Friday, March 29, 2019

Python 3 Virtual Environment di Mac OS

Setiap proyek pengembangan akan membutuhkan sejumlah libray, modul, dll. Kebutuhan ini akan berbeda-beda dari satu proyek ke proyek yang sama.

Virtual Environment ada mekanisme dimana instalasi dari berbagai kebutuhan suatu proyek dapat dilokalisir pada directory proyek tersebut sehingga tidak menggangu instalasi umum pada komputer maupun mengganggu proyek lain yang mungkin ada pada komputer tesebut. Misalnya jika proyek A memelukan library OpenCV sedangkan proyek B tidak, maka library hanya akan terinstalasi pada proyek A dan tidak akan terlihat pada proyek B.

Python 3 sudah memiliki module Virtual Environment bernama venv.

Langkah-langkah untuk menginisiasi dan memakainya adalah sbb:
  • Asumsi directory proyek adalah: ~/Workspace/UnsyiahAPT
  • Iniasi Virtual Environment
  • $ python3 -m venv ~/Workspace/UnsyiahAPT
    

  • Virtual Environment harus diaktifkan agar bisa dipakai, jika berhasil perhatikan prompt akan berubah diawali dengan nama directory dari Virtual Environment
  • $ source ~/Workspace/UnsyiahAPT/bin/activate
    (UnsyiahAPT) $ 
    

  • Melakukan coding 
  • Setelah selesai Virtual Environment dideaktifasi, perhatikan prompt akan kembali normal
  • (UnsyiahAPT) $ deactivate
    $

Instalasi Python di Mac OS

Cara paling cepat adalah dengan memakai Homebrew:
  • Pastikan Homebrew terbaru telah terinstalasi
  • $ brew update  
    

  • Instalasi Python versi 2
  • $ brew install python 
    

  • Uji, saat penulisan artikel ini versi terkini adalah 2.7.16
  • $ python -V 
    Python 2.7.16
    

  • Instalasi Python versi 3
  • $ brew install [email protected] 
    

  • Uji, saat penulisan artikel ini versi terkini adalah 3.7.3
  • $ python3 -V 
    Python 3.7.3
    

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