Featured

Mengupgrade pip setelah mengupgrade python3.8 di ubuntu 16.04

Setelah melakukan upgrade dari python 3.5 ke python 3.8 , baca : https://notes.its.ac.id/roy/2020/06/18/mengupgrade-ke-python-3-8-di-ubuntu-16-04/, maka problem berikutnya adalah terkadang pip3 tidak dapat dijalankan dengan baik.

Padahal pip3 adalah salah satu penyedia package terbanyak yang bisa kita gunakan untuk produktifitas kita dalam pemrograman python. banyak package library yang sangat berguna, seperti contohnya requests, docker, flask dan lain sebagainya

Untuk kasus ini yang perlu kita lakukan adalah

  1. Uninstall pip bawaan dari Ubuntu 16.04, dengan cara
    $ sudo apt remove python3-pip
  2. Dapatkan installer pip terbaru di pypa.io dengan cara
    $ sudo curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  3. Jalankan file get-pip.py tersebut dengan cara
    $ sudo python3 get-pip.py
  4. Setelah selesai, maka pip akan terinstall, kita cek dengan cara
    $ pip -V
    pip 20.1.1 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)
  5. Agar lebih nyaman, perlu kita letakkan pip tersebut di /usr/bin, dengan cara
    $ cd /usr/bin
    $ ln -s /usr/local/bin/pip3.8 pip
    $ ln -s /usr/local/bin/pip3.8 pip3

Pada saat ini pip sudah seharusnya menggunakan yang terbaru (versi 20, pada saat tulisan ini dibuat)

Terima kasih

Membuat PGP Key

Salah satu cara untuk mengamankan komunikasi adalah dengan menggunakan asymetric encryption. asymetric encryption merupakan mekanisme dengan menggunakan 2 kunci yang berbeda. sebut saja K1 dan K2

Dalam asymetric encryption, berlaku hal seperti ini. message yang di encrypt dengan K1 hanya bisa di decrypt (dibuka) oleh K2. dan juga sebaliknya, semua message yang diencrypt dengan K2 hanya bisa dibuka oleh K1.

Dalam prakteknya biasanya kita akan mengenal istilah public key dan private key. K1 adalah public key dan K2 adalah private key. public key bebas diketahui umum, sedangkan private key harus bersifat rahasia. mekanisme ini biasanya digunakan dengan harapan semua message yang diencrypt dengan public key , HANYA BISA dibuka oleh pemilik key tersebut (dengan private key). sehingga bisa dipastikan bahwa komunikasi berjalan privat. dan kalaupun jatuh ke tangan user lain / aplikasi lain secara tidak sengaja , maka yang bukan pemilik key tidak akan bisa mengetahui isinya (karena tidak memiliki private key)

Salah satu pengunaannya adalah dalam komunikasi email. terkadang dalam email ataupun komunikasi yang lain, email akan diforward ke orang yang tidak dimaksudkan untuk membaca. dengan penggunaan enkripsi akan membuat pengirim yakin bahwa pesan tersebut hanya bisa dibuka oleh yang dituju.
Salah satu prakteknya adalah menggunakan PGP key untuk mengirimkan dan menerima message.

Membuat Key

Berikut ini adalah cara untuk create PGP key. Untuk membuat kombinasi private key dan public key


gpg --full-generate-key

akan menghasilkan 2 jenis key yaitu private dan public
untuk melihat fingerprint (id) dari public key, gunakan

Melihat daftar key

gpg --list-keys

akan memunculkan semua key beserta fingerprintnya

Mengekspor public key
untuk mengekspor public key dalam bentuk file teks (ascii). gunakan

gpg --armor --export

gunakan public key ini untuk keperluan umum. seperti ID yang merepresentasikan indiviual yang nantinya dapat diupload ke key server publik, sehingga bisa dicari secara online


Mengekspor private key
untuk mengekspor private key key dalam bentuk file teks (ascii). gunakan

gpg --armor --export-secret-keys

private key ini nantinya akan digunakan untuk mengenkrip ataupun mendekrip

Menggunakan Python Embedded Web Server untuk mencoba kode HTML

Pada saat kita belajar menggunakan HTML untuk membuat website, terkadang kita tidak bisa langsung membuat file .html, meletakkannya di file system, kemudian mengisinya dengan kode HTML dan berikutnya menggunakan fasilitas file->open di browser untuk melihat hasilnya.

Pada saat berada di lingkungan production, ketika browser berada di tempat yang berbeda dengan object HTTP, tentu saja browser tidak bisa menggunakan cara yang sama ketika kita meletakkan object di file system

Oleh karena itu, kita memerlukan sebuah lingkungan development yang paling tidak mirip dengan lingkungan production, yaitu adanya http server atau yang lazim disebut dengan web server

Beberapa menilai bahwa instalasi web server membutuhkan waktu dan pengetahuan khusus. Hal itu memang benar adanya, jika digunakan untuk lingkungan production yang tujuannya untuk melayani request dalam jumlah yang besar. akan tetapi untuk development, kita bisa memanfaatkan web server yang tinggal pakai seperti yang dimiliki oleh bahasa python.

Hal ini akan sangat berguna misalkan kita menjumpai sepotong kode html dan kita ingin mencobanya, maka kita bisa langsung gunakan dan melihat hasilnya seperti ketika kita gunakan lingkungan production

python memiliki modul yang bernama http.server yang siap digunakan kapan saja, bahkan ketika kita tidak paham python pun kita dapat menggunakannya

Dalam contoh ini, saya menggunakan linux sebagai lingkungan development saya untuk membuat sebuah halaman .html

Sebagai contoh, saya mempunyai halaman html, dengan nama file index.html seperti berikut ini

<DOCTYPE html>
<BODY>
<h1> Hello </h1>
Hello, saya belajar HTML code disini
</BODY>

setelah itu buatlah sebuah direktori/folder , saya akan gunakan home directory saya untuk keperluan ini, nantinya lingkungan development adalah di directory belajar_html

$ mkdir belajar_html
$ cd belajar_html

kita cek directory dimana kita berada

$ pwd
/home/royyana/belajar_html

saat ini kita sudah berada di dalam directory belajar_html, copykan file index.html ke dalam directory ini. setelah index.html berada di directory ini, maka struktur nya akan seperti ini

$ tree
.
└── index.html

kita lihat hanya satu file index.html

Berikutnya kita jalankan webserver dengan satu command line saja, yaitu

$ python3 -m http.server

akan memunculkan bahwa kita sudah menjalankan http server di port 8000

$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) …

port 8000 merupakan port default yang bisa kita ganti dengan port berapapun yang kita inginkan. saran saya gunakan port diatas 1024. misalkan, kita gunakan port 8899, caranya adalah

$ python3 -m http.server 8899
Serving HTTP on 0.0.0.0 port 8899 (http://0.0.0.0:8899/) …

pada saat ini webserver sudah siap menerima request dari browser. dalam hal ini kita akan menggunakan browser chrome untuk mengakses halaman index.html yang berada di server di port 8899

akseslah url http://localhost:8899/index.html dengan browser chrome, kita lihat di sisi server akan memperlihatkan rekaman akses dari browser

$ python3 -m http.server 8899
Serving HTTP on 0.0.0.0 port 8899 (http://0.0.0.0:8899/) …
127.0.0.1 - - [18/Jun/2020 22:19:05] "GET /index.html HTTP/1.1" 200 -
127.0.0.1 - - [18/Jun/2020 22:19:07] "GET /index.html HTTP/1.1" 304 -
127.0.0.1 - - [18/Jun/2020 22:19:25] "GET /index.html HTTP/1.1" 304 -

chrome browser akan menunjukkan

gambar chrome browser mengakses ke python web server di port 8899 untuk meminta object index.html

Kita bisa menambahkan file file html yang lain di directory yang sama dan mengaksesnya dengan cara yang sama dengan index.html ini

Posting ini telah membahas bagaimana menggunakan python builtin web server untuk menyediakan lingkungan cepat dalam mencoba-coba kode html

Mengupgrade ke Python 3.8 di Ubuntu 16.04

Pendahuluan

Pada suatu ketika, saya ingin menggunakan python versi 3.5 keatas dalam sebuah ubuntu. ketika saya masuk ke console, saya menjumpai bahwa ubuntu ini adalah ubuntu 16.04 yang mana versi builtin python3 nya adalah 3.5. Beberapa kasus mengharuskan kita untuk menggunakan python 3.5 keatas.

cek versi python3 yang sedang berjalan

~/o365_gw# python3 -V
Python 3.5.2

Mengupgrade Python

untuk mengupgrade ke versi python setelah 3.5 perlu kita lakukan beberapa instalasi pendahuluan. tujuan kita adalah menginstall python versi 3.8

$ sudo apt update

$ sudo apt install software-properties-common python-software-properties

dan kita akan menggunakan metode ppa dari deadsnakes

$ sudo add-apt-repository ppa:deadsnakes/ppa

setelah itu akan muncul beberapa informasi pendahuluan tentang Ubuntu dan versi python yang disupport. pada saat tulisan ini dibuat, terakhir yang bisa disupport adalah python 3.9 untuk ubuntu 16.04

  • Ubuntu 16.04 (xenial) Python 2.3 - Python 2.6, Python 3.1 - Python3.4, Python 3.6 - Python3.9
  • Ubuntu 18.04 (bionic) Python2.3 - Python 2.6, Python 3.1 - Python 3.5, Python3.7 - Python3.9
  • Ubuntu 20.04 (focal) Python3.5 - Python3.7, Python3.9
  • Note: Python2.7 (all), Python 3.5 (xenial), Python 3.6 (bionic), Python 3.8 (focal) are not provided by deadsnakes as upstream ubuntu p
    rovides those packages.
  • Note: for focal, older python versions require libssl1.0.x so they are not currently built

Setelah selesai, maka kita lanjutkan menginstall python 3.9

$ sudo apt install python-3.8

mari kita cek versi dari python3.8 yang sudah terinstall

$ python3.8 -V

pada saat ini, binary python3 masih mengarah ke python versi 3.5 yang lama. untuk memastikan

$ sudo which python3
/usr/bin/python3
$ sudo ls -la /usr/bin/python3
lrwxrwxrwx 1 root root 9 Apr 23 14:06 /usr/bin/python3 -> python3.5

Kita perlu memindahkan, agar python3 menuju ke versi python 3.8 yang barusan kita install

$ cd /usr/bin && sudo rm -f python3 && sudo ln -s python3.8 python3

Setelah menjalankan ini, kita cek binary /usr/bin/python3 apakah sudah mengarah ke python 3.8 atau belum

$ python3 -V
Python 3.8.3

atau jalankan langsung python REPL

$ python3
Python 3.8.3 (default, May 14 2020, 22:09:32)
[GCC 5.4.0 20160609] on linux

Pada saat ini python 3 yang kita gunakan sudah menggunakan python3.8.

Kesimpulan

Tulisan ini telah membahas bagaimana cara mengupgrade versi python di ubuntu 16.04 yang menggunakan versi default 3.5 menjadi versi 3.8 dengan menggunakan metode PPA