Category Archives

412 Articles
WordPress, NGINX, HHVM, dan Monit

WordPress, NGINX, HHVM, dan Monit

Bagi yang sudah pernah berurusan dengan situs yang berat, Anda pasti juga jengah dengan kelakuan PHP-FPM. Ada beberapa solusi yang saat ini tersedia:

Beberapa waktu yang lalu saya sudah membahas tentang uWSGI. Sekarang, saya mau mencoba teknologi HHVM. Doakan saja supaya saya tidak malas dan juga mau mencoba HippyVM dan PHP7-FPM sehingga saya bisa menuliskan untuk Anda.

Pasang HHVM

Cara pasang HHVM di berbagai sistem operasi ada di sini. Saya asumsikan hendak dipasang di sistem operasi Debian Jessie.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
sudo apt-get install hhvm

Perintah-perintah ini pada intinya memasang kunci paket repo HHVM dan menambahkan repo tersebut ke daftar repositori sistem. Kemudian, perbaharui daftar paket yang tersedia dan pasang HHVM.

Selanjutnya, ubah konfigurasi HHVM di /etc/hhvm/server.ini menjadi

; php options

pid = /var/run/hhvm/pid

; hhvm specific 
hhvm.server.file_socket=/var/run/hhvm/hhvm.sock
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.level = Warning
hhvm.log.always_log_unhandled_exceptions = true
hhvm.log.runtime_error_reporting_level = 8191
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
hhvm.mysql.typed_results = false

; Generate JIT codes sooner!
hhvm.eval.jit_warmup_requests = 1

; Disable Perf debugging
hhvm.keep_perf_pid_map = 0
hhvm.perf_pid_map = 0
hhvm.perf_data_map = 0

Ada beberapa perbedaan dengan konfigurasi biasa. Berikut yang penting:

  • Saya memilih untuk menggunakan socket dari pada port TCP karena lebih aman dalam menentukan hak akses.
  • Saya menyuruh HHVM untuk segera mengaktifkan optimasi dari sejak awal. Hal ini mengakibatkan peladen agak lama di awal.
  • Saya mematikan fungsi profiling. Fungsi ini berguna kalau Anda mau men-debug kode PHP Anda yang dieksekusi oleh HHVM. Kemungkinan besar, Anda terlalu malas seperti saya. Fungsi ini hanya akan memenuhi /tmp dengan berkas peta performa.

Pasang NGINX

Pertama-tama, pasang NGINX:

sudo apt-get install nginx

Set upstream NGINX ke HHVM di berkas /etc/nginx/conf.d/upstream.conf

# Upstream to abstract backend connection(s) for PHP.
upstream php-hhvm {
  server unix:/var/run/hhvm/hhvm.sock;
}

Lalu, buat sebuah blok konfigurasi /etc/nginx/php-hhvm

location ~ \.(hh|php)$ {
    try_files $uri =404;

    fastcgi_keep_conn on;
    fastcgi_pass   php-hhvm;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Ini saya ambil dan modifikasi sedikit dari hhvm.conf yang biasanya terpasang saat kita memasang HHVM.

Nah, setiap Virtual Host yang mau menggunakan, tinggal mengikutkan berkas php-hhvm di dalam berkas konfigurasinya. Misalnya, kita buat sebuah berkas /etc/nginx/sites-available/default

server {
    # Anything not directed at specific host will hit "Welcome to nginx"
    listen 80 default_server;
    server_name _;
    
    root /var/www/html;
    index index.php index.html index.htm;

    location / {
            try_files $uri $uri/ /index.php?$args ;
    }

        include php-hhvm;

}

Jangan lupa, ini cuma contoh! Untuk mesin produksi, tolong ubah berkas direktori dan tambahkan beberapa aturan untuk menghindari injeksi.

Selanjutnya, pasang seperti biasa ala Debian:

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
sudo invoke-rc.d nginx reload

Beres.

Eits! Nanti dulu, Kisanak! Supaya situs tetap berjalan, mari pasang Monit untuk memonitor keberadaan HHVM. Menurut pengalaman saya, awal-awal HHVM rentan terhadap aplikasi yang harus dinyalakan ulang.

Pasang Monit

Pasang Monit.

sudo apt-get install monit

Buat konfigurasi Monit untuk HHVM di /etc/monit/conf.d/hhvm yang isinya:

check process hhvm with pidfile /var/run/hhvm/pid
  group hhvm
  start program = "/usr/sbin/service hhvm start" with timeout 60 seconds
  stop program = "/usr/sbin/service hhvm stop"
  if failed unixsocket /var/run/hhvm/hhvm.sock then restart
  if mem > 400.0 MB for 1 cycles then restart
  if 5 restarts with 5 cycles then timeout

Untuk dapat memonitor Monit, langkah opsional yang dapat diambil adalah dengan mengubah 3 baris berikut pada /etc/monit/monitrc

set httpd port 2812 and
   use address localhost  # only accept connection from localhost
   allow localhost        # allow localhost to connect to the server and

Kalau pada konfigurasi Jessie, baris-baris itu mulai dari baris ke-130.

Setelah selesai, muat ulang Monit:

invoke-rc.d restart monit

Kalau mau lihat Monit, silakan ketik:

sudo monit status

Tentunya, langkah opsional dikerjakan. Bila tidak, maka Monit tak dapat dilihat.

Selesai!

The High Performance Story

Many thought in the past that NGINX only as a slave to his CGI/FastCGI/WSGI masters. NGINX could only served documents provided by his master. Helplessly, he could only turned 50x every single time its master died.

Why, why did it so having bad luck? Twas never his fault at memory leaking because his master doing forbidden arts. He could only sighted on its masters. Even though he knew his master innate ability was insufficient, he could only watched as the master fallen into depth of hell, died.

Heaven was not cruel. Or perhaps, there were karmic universe that balanced everything. Soon NGINX found out about something.

On the night of the living dead, NGINX found a script on a cave. It was a Moonscript. A script formed by one of the divine language, Lua.

What luck was this? His innate ability was Lua. He understood every single thing that the script compiled at him.

Inside the perch there was a set of divine arts. An art called Lapis Web Framework. It contained many MVC and clean programming methods. It could tied databases and CSRF for save programming.

How could this be? Could it be? Find out more next episode.

RE: Tak Mau Kalah dengan…

RE: Tak Mau Kalah dengan…

Tulisan ini merupakan tanggapan saya dari artikel menarik dari Lae Silaban mengenai adanya penyedia video lokal. Saya tulis di blog ini soalnya di sana tak bisa isi komentar. Inti tulisan itu adalah tantang berat penyedia konten lokal menghadapi YouTube.

Fokus, Diversifikasi, dan Terbaik

Saya setuju dengan pendapat Lae kita itu. Dari tampilan konten yang diberikan oleh Vidio.com maupun MeTube, terlihat bahwa kedua situs tersebut hanya merupakan klon dari YouTube. Tentu saja bakal kalah dengan YouTube yang jauh lebih kuat infrastruktur dan SDM-nya.

Sebagai pasar niche, seharusnya penyedia video lokal menerapkan model mittelstand: fokus, diversifikasi, dan terbaik. Fokus, tidak berusaha menjangkau semua kebutuhan, tetapi bersedia konsentrasi penuh kepada kebutuhan lokal. Diversifikasi, menyediakan layanan yang tidak ada di YouTube. Terbaik, layanan yang terdiversifikasi ini akan selalu yang terbaik.

Sebagai layanan video, penyedia video lokal dapat fokus kepada komunitas-komunitas lokal. Ia tidak perlu menyediakan layanan umum seperti YouTube. Fokus ini misalnya dapat diwujudkan dengan menyediakan saluran, situs, dan forum yang terintegrasi. Oh, dan tentu saja terminologi yang ramah Bahasa Indonesia.

Fokus saja tidak cukup, ia harus berani menggebrak. Misalnya, Nico-Nico Douga menciptakan antarmuka dan program yang membuat penyedia konten menjadi bintang. Bintang-bintang baru seperti Kero, ClariS, dan lainnya bermunculan setelah konten-konten mereka menjadi populer.

Terbaik adalah satu yang menjadi inti mengapa produk Jerman selalu mahal tetapi laku. Kelakuan produk Indonesia biasanya menurun seiring perkembangan dan sudah berbasis pengambilan keuntungan. Itu sebabnya, jarang ada loyalis kepada suatu produk lokal kecuali karena rasa kebangsaan.

Kendati Nico-Nico Douga tampilannya seperti dari era Geocities, penggunanya sudah familiar. Sedikit demi sedikit, mereka memoles situs sambil mendapatkan masukan dari komunitas. Mereka pelan-pelan menyediakan komunitas yang vibran.

Ya, sudah pastilah, yah, penyedia konten video sekarang pasti berbentuk media sosial. Tidak mungkin hanya penyedia konten biasa saja. Sayangnya, Google masih seperti pulau-pulau yang tak terintegrasi. Itu makanya, Google Plus jarang dipakai kecuali oleh para pakar SEO yang suka menambah-nambahi saya di Google+! [Baiklah, saya berhenti di sini sebelum ada curcol]

Ya, itu, intinya, seperti Nico-Nico Douga, jika memang serius, penyedia video lokal dapat membangun komunitas yang organik.

Sarana Berbagi

Kendati pada awalnya layanan situs-situs berbeda, ujung-ujungnya semua situs yang berbeda itu menjadi produk yang serupa. Ya, Facebook, Instagram, Pinterest, dan lain sebagainya. Semua mengarah kepada social platform.

Social Platform adalah istilah saya untuk produk-produk web yang bertindak sebagai mediator untuk setiap entitas di atasnya dapat berinteraksi. Berbeda dengan layanan web biasa (web service), ada unsur penyediaan identitas di dalamnya sehingga setiap interaksi, layanan, dan entititas memiliki keterhubungan.

Intinya, dia menyediakan layanan berbagi. Seperti yang Lae Silaban bilang, layanan itu dapat berupa API, Embed, dan lain sebagainya.

Kalau Facebook memiliki OpenGraph, yang lainnya memilih untuk menggunakan protokol Open Social.

Di Jepang, menurut artikel di IEEE yang sayangnya sebagian besar Anda tak punya akses, Open Social digunakan oleh media-media sosial lokal untuk berhubungan dengan aplikasi pihak ketiga. Evolusi mobile game di sana berkembang dengan menyediakan integritas media sosial dan penyediaan konten berdasarkan waktu (event-based game content).

Ya, intinya, ganti mobile game dengan enterprise platform atau situs blog. Integrasi yang apik menggunakan standar terbuka, maka penyedia konten video dapat membuka peluang masuk ke pasar penyedia konten bagi korporat atau blogger biasa.

Legal

Saya rasa Youtube tidak mungkin rugi. Mana mungkin Ellen mengambil begitu saja video dari YouTube tanpa ada kerja sama hitam di atas putih dengan Google. Kerja sama afiliasi dengan Google pasti tidak akan gratis begitu saja. Lembaga-lembaga non-profit yang memiliki dana pun tertarik untuk menggunakan Google dalam mendokumentasikan karya mereka.

Ya, kalau saya boleh langsung tarik, saya rasa Pemda-Pemda akan tertarik menaruh konten kerja sama mereka ke dalam penyedia lokal. Asalkan ada program yang jelas, mereka pasti tertarik dalam mendokumentasikan wisata atau pun hal lain dari daerah mereka. Setidaknya penyedia konten lokal dikasih uang rokok, dong.

Dalam pengaturan perjanjian ini, termasuk dengan penyedia konten pribadi, aspek legal yang paling penting. Setidaknya, penyedia konten lokal harus siap dengan tiga hal: sangkalan, perjanjian akhir, dan kebijakan privasi.

Selain itu, penyedia konten lokal harus menyediakan antarmuka pelaporan. Antarmuka pelaporan ini berjalan dua sisi. Satu dari sisi pihak luar yang merasa kontennya dipakai orang. Satu lagi pihak pengguna yang merasa dizolimi dengan tuduhan. Sebagai penyedia lokal, seharusnya aspek hukum lokal lebih dipenuhi dan unggul dibandingkan dengan YouTube.

Tentunya, tantangan terbesar adalah batas izin penyedia konten. Ini masih abu-abu dan tidak jelas. Hampir tidak mungkin penyedia konten amatir menyediakan konten lokal tanpa melanggar hak cipta. Sejauh mana negara (pemerintah dan pihak-pihak terkait) mau bermain?

Kalau Amerika Serikat, mereka menggunakan Amandemen Pertama UUD mereka untuk melindungi pengguna-pengguna amatir ini. Beberapa negara produsen konten menggunakan tindakan pasif. Artinya, kalau sang pemilik konten tidak menuntut, pihak berwenang akan membiarkan konten yang melanggar hak cipta tersebut.

Misalnya, seorang Ibu takkan ditangkap karena memosting video anaknya ulang tahun. Selama Disney Indonesia tidak menuntut Ibu itu karena menyanyikan lagu “Happy Birthday to You”, pihak kepolisian tidak akan secara aktif menangkap Ibu itu. Pihak penyedia konten video pun membiarkan saja.

Ada manajemen artis yang enggan saya sebut namanya yang secara aktif mendeaktivasi konten-konten milik artis manajemennya di YouTube dan penyedia konten lainnya. Ada juga artis yang secara terang-terangan mendukung penyebaran konten yang dihasilkannya. Pasti akan ada friksi dari dua pandangan tersebut.

Penyedia konten lokal dapat menjadi mediator atau secara aktif mempromosikan pandangan yang jelas kepada semua pihak. Ia tentu bisa jadi yang terdepan karena proses bisnis yang dihasilkan sesuai dengan arahan bangsa ini.

Contohnya, Vevo mendekati pemusik/manajemen artis untuk menggunakan jasa dia. Sehingga, video resmi yang dikelola di YouTube di bawah kendali Vevo. Vevo pun punya kekuatan khusus sehingga Google menerapkan enkripsi khusus bagi video Vevo.

Akhir Cerita (TL;DR)

Kalau penyedia video lokal bersedia menyediakan social platform dengan kearifan lokal, kemungkinan mereka bisa lebih hebat dan bertahan. Nico-nico Douga contohnya.

Akses Ke Layanan Awan OneDrive

Akses Ke Layanan Awan OneDrive

Mereka menginvasi tempat kerja dan tempat belajar. Mereka pikir bisa memaksa kita untuk meninggalkan FOSS atau GNU/Linux? Mereka salah! Kita tetap bisa bebas walaupun terpaksa menggunakan layanan tertutup. GNU/Linux tetap bisa dipakai!

Ada 2 cara untuk bertahan menggunakan GNU/Linux:

  1. Gunakan API yang disediakan oleh OneDrive dengan aplikasi onedrive-d.
  2. Gunakan WebDav dengan davfs2.

Saya akan membahas kedua cara tersebut. Kali ini saya akan membahas yang pertama saja.

Cara 1: Menggunakan onedrive-d

Aplikasi onedrive-d menggunakan pustaka inotify yang dimiliki kernel Linux untuk mengawasi sebuah direktori. Ketika ada berkas yang berubah pada direktori tersebut, ia akan menjalankan proses sinkronisasi dengan menggunakan API OneDrive.

OneDrive menggunakan OAuth2 sebagai proses autorisasi. Untuk dapat mengakses API OneDrive, aplikasi onedrive-d sebelumnya harus diberi izin terlebih dahulu. Itu sebabnya, dibutuhkan peramban untuk mengakses laman autentikasi Microsoft. Jadi, walau pun proses pemasangan berjalan menggunakan terminal, tetap saja proses ini dijalankan pada lingkungan grafis.

Memasang onedrive-d

Sebelum memulai, pasang manajer paket untuk Python3. Pada Ubuntu ini biasanya belum terpasang:

sudo apt-get install python3-pip

Unduh dengan menggunakan GIT aplikasi onedrive-d

git clone https://github.com/xybu/onedrive-d.git

Setelah mengunduh kode sumber onedrive-d, lakukan pemasangan seperti yang dijelaskan di halaman GitHub onedrive-d.

cd onedrive-d
./install.sh

Skrip pemasangan akan memasang paket-paket yang diperlukan. Sampai ini pemasangan sudah selesai.

Kenapa? Kegampangan? 😛

Persiapan Mengonfigurasi onedrive-d

Sejujurnya, Anda cukup ikuti cara yang ada di halaman GitHub onedrive-d. Tetapi, saya mau memasang dengan asumpsi aplikasi ini akan digunakan pada lingkungan banyak pengguna. Apalagi, cara pemasangan yang terlalu gampang sepertinya membuat bobot tutorial ini serasa kurang geek.

Buat satu pengguna yang akan jadi pengguna onedrive-d.

sudo adduser --system --group --no-create-home --disabled-login onedrive

Buat direktori konfigurasi per pengguna

mkdir ~/.onedrive

Buat berkas log dan jadikan itu milik onedrive.

sudo touch /var/log/onedrive_d.log
sudo chmod 0660 /var/log/onedrive_d.log
sudo chown onedrive:onedrive /var/log/onedrive_d.log

Untuk setiap pengguna yang hendak menggunakan onedrive-d,  tambahkan ke grup onedrive. Misalnya:

adduser user onedrive

Selanjutnya adalah konfigurasi OneDrive.

Mengonfigurasi onedrive-d

Pada saat penulisan, perkakas GUI onedrive-d tidak dapat dijalankan di Ubuntu. Maka, kita perlu menjalankan konfigurasi di terminal. Seperti yang saya bilang sebelum ini, sebaiknya terminal dijalankan pada lingkungan grafis agar mudah menjalankan peramban.

Jalankan wisaya konfigurasi:

onedrive-pref --ui=cli
Loading configuration ... OK
[2015-05-22 19:29:26,545] DEBUG: thread_mgr: started.
Setting up onedrive-d...

Selanjutnya proses pada wisaya konfigurasi ini akan saya jabarkan satu persatu.

Otorisasi OAuth2

Langkah pertama, wisaya akan meminta Anda untuk menyalin sebuah URL dan menjalankannya pada peramban.

(STEP 1/4) Do you want to authorize sign in with your OneDrive account? [Y/n] 

You will need to visit the OneDrive sign-in page in a browser, 
log in and authorize onedrive-d, and then copy and paste the 
callback URL, which should start with 
"https://login.live.com/oauth20_desktop.srf".

The callback URL is the URL where the sign-in page finally goes blank.

Please visit the sign-in URL in your browser:

Sign in to your Microsoft account

No Description

Please paste the callback URL:

Buka peramban Anda dan salin URL panjang tersebut untuk login ke OneDrive.

This slideshow requires JavaScript.

Masuk ke OneDrive. Beri izin akses kepada aplikasi onedrive-d. Pada saat selesai otorisasi, peramban Anda akan dibawa ke sebuah laman kosong. URL itu berisi tiket otorisasi yang diperlukan aplikasi onedrive-d untuk masuk ke OneDrive. Salin seluruh URL untuk digunakan pada konfigurasi.

Melanjutkan proses tadi, masukkan URL yang dibutuhkan:

Please paste the callback URL:

No Title

No Description

[2015-05-22 19:32:38,675] DEBUG: MainThread: config saved. onedrive-d has been successfully authorized.

Tentu saja, saya menyensor kode saya. Itu isinya alfanumerik.

Menentukan Direktori yang Akan Ditautkan OneDrive

Selanjutnya, wisaya akan menanyakan direktori yang akan ditautkan.

(STEP 2/4) Do you want to specify path to local OneDrive repository? [Y/n] 
Please enter the abs path to sync with your OneDrive (default: /home/user/OneDrive): /home/user/Dokumen/OneDrive
The path "/home/user/Dokumen/OneDrive" does not exist. Try creating it.
[2015-05-22 19:33:07,139] DEBUG: MainThread: config saved.
Path successfully set.

Menentukan Beberapa Hal

Selanjutnya, Anda dapat menentukan beberapa hal:

  1. Berapa lama yang ditoleransikan untuk menunggu jaringan yang gagal.
  2. Berapa ukuran minimal berkas yang dikirimkan dalam bentuk potongan-potongan. Lebih kecil dari nilai ini, berkas akan dikirim utuh.
(STEP 3/4) Do you want to change the numeric settings? [Y/n] 
How many seconds to wait for before retrying a network failure (current: 10)?

Files larger than what size (in MiB) will be uploaded blocks by blocks? (current: 4.0)?

When a file is uploaded blocks by blocks, what is the block size (in KiB)? (current: 512.0)?
[2015-05-22 19:33:32,067] DEBUG: MainThread: config saved.

Proses ini bisa diabaikan sebenarnya.

Menentukan Daftar Berkas yang Tidak Disinkronisasi

Selanjutnya, Anda akan diminta untuk menetapkan aturan untuk berkas-berkas yang tidak masuk konfigurasi. Pada proses ini, bila Anda setuju, wisaya akan membuka berkas ~/.onedrive/ignore_v2.ini dalam penyunting terminal.

(STEP 4/4) Do you want to edit the ignore list file? [Y/n] 
Calling your default editor...
You have exited from the text editor.

All steps are finished.
[2015-05-22 19:33:55,722] DEBUG: Dummy-2: config saved.

Selesai wisaya.

Terakhir

Setelah proses wisaya, untuk menjalankan layanan onedrive-d, jalankan perintah:

onedrive-d start

Bila mau menghentikan layanan onedrive-d:

onedrive-d stop

Untuk lihat apakah layanan berjalan:

onedrive-d status

Selesai.

Waduh, saya pikir singkat, ternyata ada banyak juga. Ya, sudah. Kalau begitu cara kedua akan saya bahas di tulisan mendatang.

Akses Ke Layanan Awan Box

Akses Ke Layanan Awan Box

Layanan box.com tidak memiliki klien untuk GNU/Linux. Akan tetapi, dia menyediakan Webdav untuk koneksi. Dengan memanfaatkan davfs2, direktori box.com dapat diperlakukan selayaknya direktori biasa. Saya menulis tutorial ini dengan menggunakan Ubuntu Vivid.

Pemasangan davfs2

Pertama-tama, pasang davfs2

sudo apt-get install davfs2

Anda akan ditanyakan untuk memasang bit SUID pada mount.dav agar bisa dijalankan oleh pengguna biasa. Bilamana Anda sudah terlanjur memasang atau dialog tersebut tidak muncul, silakan jalankan berikut:

sudo dpkg-reconfigure davfs2

Entah melalui pemasangan pertama kali atau rekonfigurasi, Anda akan ditanyakan konfigurasi SUID

davfs2 configuration in Debian asking for SUID permission.

davfs2 configuration in Debian asking for SUID permission.

Pilih saja <Ya> supaya bisa dijalankan oleh pengguna biasa. Selanjutnya mengonfigurasi BOX.

Konfigurasi BOX di fstab

Konfigurasi BOX untuk ditautkan pada direktori tertentu. Misalnya, saya mengaitkan direktori box.com saya pada subdirektori Dokumen. Anda tidak harus melakukan ini di terminal, bisa menggunakan penyunting kesayangan Anda. Tetapi, supaya terlihat keren, caranya begini:

echo "https://dav.box.com/dav/ /home/user/Dokumen/Box  davfs  _netdev,rw,user 0 0" | sudo tee -a /etc/fstab

Ingat, ya, sebenarnya baris perintah itu menambahkan baris berikut pada /etc/fstab

https://dav.box.com/dav/ /home/user/Dokumen/Box  davfs  _netdev,rw,user 0 0

Selanjutnya, tambahkan login Anda supaya tak perlu memasukkan sandi lagi.

Konfigurasi Login Otomatis

Supaya login dilakukan secara otomatis, perlu dibuatkan sebuah berkas rahasia yang berisi pengguna dan sandi box.com.

Buat direktori untuk konfigurasi davfs2

mkdir ~/.davfs2

Buat berkas yang salah satu baris berisi kresedensial box.com Anda dan tambahkan kresedensial Anda. Cara kerennya berikut:

echo "https://dav.box.com/dav user@email.com s4nD1ku" >> ~/.davfs2/secrets

Ingat! Baris yang hendak ditambahkan pada berkas ~/.davfs2/secrets

https://dav.box.com/dav user@email.com s4nD1ku

Ganti “user@email.com” dengan login Anda dan “s4nD1ku” dengan sandi Anda di box.com.

Tautkan box.com

Tunggu dulu, Kisanak! Sebelum kisanak dapat menautkan box.com, kisanak harus menambahkan pengguna ke grup davfs2 supaya dapat menautkan direktori itu.

Tambahkan pengguna user ke grup davfs2

sudo adduser user davfs2

Kisanak dapat saja keluar dari sistem lalu masuk lagi. Tetapi, kalau saya cukup perbaharui saja daftar grup saya supaya tidak perlu keluar. Caranya:

newgrp davfs2

Nah, setelah itu, kisanak dapat menautkan direktori box.com yang telah kisanak konfigurasi.

mount ~/Dokumen/Box

Selesai.

High Quality Ripping in GNU/Linux

High Quality Ripping in GNU/Linux

ONE OK ROCK and Perfume CD

ONE OK ROCK and Perfume CD

I just remembered this noon that I still have CDs that were not opened yet. Two of them was ONE OK ROCK “35xxxv” and Perfume “LEVEL3”. Those CDs had been in my backpack for a long time. Oh, well, time to rip.

There are many ways to rip CD and you can search my blog to have it. Right now I’m using Morituri. Morituri is a command line tool to rip CD using AccurateRip™ technology and CDParanoia. Two of the best tools for accurately ripping CD.

Preparations

We got two process here: getting pycdio and morituri itself. If you think you won’t need the Paranoia, then you can just jump to getting Morituri.

Getting pycdio

Morituri needs pycdio for interfacing with CDParanoia. It isn’t packaged yet in Ubuntu. We have to install it manually. This package is optional, but I want CD Paranoia!

Let’s install the alternative Python Package Installer (pip):

sudo apt-get install python-pip

Install pycdio dependencies:

sudo apt-get install python-dev libcdio-dev libiso9660-dev swig pkg-config

Alright! Let’s install pycdio:

sudo pip install pycdio

Next let’s get down with Morituri.

Getting Morituri

Install Morituri:

sudo apt-get install morituri

Now, we are ready to get the tracks.

Ripping

There are three parts of ripping the CD using Morituri. First, deciding the CD offset based on your CD drive. Second, optionally get the right MusicBrainz tags. Lastly, rip it with fire!

Getting The Right Offset

The purpose of AccurateRip™ is for determining read offset of your CD drive. You could browse their database if you confident that your CD drive is well-known.

If you have an exotic CD drive, you are not so sure, or you just getting really paranoid, you could check your hardware yourself. Get a relatively well-known CD to test and start analyzing:

rip offset find

This takes a while. It takes two turns to check the drive. I was getting bored and only manage to wait for the first pass before I canceled the execution. Besides, my CD drive is well-known. From dmesg, I got this:

$ dmesg | grep DVD
[    2.400198] ata5.00: ATAPI: HL-DT-ST DVDRAM GH40F, MG01, max UDMA/100
[    2.510952] scsi 4:0:0:0: CD-ROM            HL-DT-ST DVDRAM GH40F     MG01 PQ: 0 ANSI: 5

I confirm from the database and from my offset searching, my CD drive has an offset of 667.

Getting The Right Song Title

You can retag it if you want. But, to get the right title, I suggest to browse MusicBrainz database to find out the right title. If your CD is popular enough, it would have many names.

For example, my Perfume CD, LEVEL3, had 17 names. I picked the CD version. I got its ID by getting the serial number in its URL. It was 92d793f1-316a-4d66-ab1e-b9660d2682f7.

Getting It All Together

Alright, all is well. Our preparation is complete. Let’s rip:

rip cd rip --offset 667 -R 92d793f1-316a-4d66-ab1e-b9660d2682f7 --track-template="%A/%d/%t - %a - %n" --disc-template="%A/%d/%A - %d"

I love to get the layout”Album Artist/Album Name/TrackNumber – Artist – Title”. You may have different format. Well, each to one’s own. Here’s the list taken from the man page:

Tracks are named according to the track template, filling in the variables and adding the file extension.  Variables exclusive to the track template are:

  • %t: track number
  • %a: track artist
  • %n: track title
  • %s: track sort name

Disc files (.cue, .log, .m3u) are named according to the disc template, filling in the variables and adding the file extension.  Variables for both disc and track template are:

  • %A: album artist
  • %S: album sort name
  • %d: disc title
  • %y: release year
  • %r: release type, lowercase
  • %R: Release type, normal case
  • %x: audio extension, lowercase
  • %X: audio extension, uppercase

If you got any error, try to remove the offset parameter. It seems there are many variables to disc perfect. Sometimes hidden track(s) made the offset change. May be, that’s probably just my hunch.

Oh, well, all is good. On to the next original CD.

One Plus One

One Plus One

Saya kehilangan LG G2 saya sehingga saya tak lagi bisa mengoprek perangkat tersebut. Saya memutuskan untuk mencoba perangkat legendaris, One Plus One (OPO). Perangkat ini murah, tetapi spesifikasi seperti G3 dan Note 4. Hanya saja, dia seperti GMail masa Beta, Anda takkan bisa memesan langsung tanpa undangan.

Setelah mengemis meminta bantuan undangan di media sosial, rekan saya memberitahukan tentang program Lazada. Akhirnya, saya mendaftarkan diri di forum One Plus dan langsung mendapatkan 1 undangan yang hanya berlaku 48 jam. Kejam nian! Ah, bulan ini saya terpaksa mengencangkan ikat pinggang.

Saya baca banyak tulisan, terutama program 4 Maret 2015 Lazada yang membuka pemesanan One Plus One selama sejam. Mereka bilang perangkat ini bisa sampai sangat lama. Hitungannya minimal 2 minggu. Untungnya saya, dalam tiga hari perangkat ini telah ada di tangan saya. Terima kasih, Tuhan.

Kesan Pertama

Nanti saya coba unggah hasil video membuka bungkusan. Saya terkesan dengan pemaketan One Plus One. Isi dari paket yang datang, antara lain:

  • Telepon OPO
  • Pengisi daya 2100 mA, kabelnya bisa dicopot untuk penhubung USB.
  • Satu tempat tambahan untuk Nano SIM (kartu SIM nano).
  • Satu pin pembuka tempat USIM (kartu SIM mikro).

Tempat USIM menyatu dengan perangkat, sehingga sekilas tidak terlihat. Sungguh luar biasa disain OPO. Saya pikir sulit, tetapi ternyata hanya mencolokkan pin pembuka maka tempat USIM terpental keluar.

Kulit OPO seperti bahan teflon, kasar dan lengket. Di satu sisi, lapisan ini membuat OPO tidak gampang terlepas dari tangan. Tapi, saya pikir bakal itu juga yang membuat OPO gampang kotor. Ternyata, setelah tak sengaja membuat kotor, kotoran dapat mudah dibersihkan.

Yang saya tak duga, OPO menghasilkan foto yang cukup tajam. Wow, sayangnya saya tidak suka selfie.

Silakan klik sendiri untuk gambar aslinya.

Pindah ROM

Seperti motto dari OPO, saya tidak suka ROM pabrikan. Terutama, saya tidak suka ROM pabrikan OPO. Berikut alasan saya:

  • ROM dibuat dari CyanogenMOD 11s, masih KitKat.
  • WhatsApp mengenali OPO sebagai ROM Kustom.
  • Semenjak saya mengaktifkan ART, tampilan saya sering tidak mau menyala. Sepertinya ada galat pada sensor proksimitas. Lagipula, sepertinya OPO CM11s tidak kompatibel sehingga kembali ke Dalvik.

Kalau saya baca, kemungkinan bulan depan akan muncul versi resmi ROM OPO yang Lollipop. OPO menyebutnya Oxygen OS. Kalau lihat dari komposisi timnya, sepertinya Oxygen OS akan dibuat dari Paranoid Android. Kita lihat saja nanti, tetapi sebelum itu, saya mau pasang yang lain.

Buat Salinan Data Anda!

Proses membuka kunci bakal menghapus data di Internal Storage. Simpan data Anda terlebih dahulu! Serius!

Bahan-bahan

Sebelum memulai, silakan unduh bahan-bahan berikut.

Saya sengaja memberi 2 jenis tautan. Halaman yang berisi daftar ROM dan ROM versi langsung. Saya menyarankan agar memilih halaman daftar ROM dan memilih versi baru. Biasanya lebih stabil.

Selain TWRP, semua ZIP unduh ke OPO. TWRP membutuhkan cara khusus untuk masuk.

Buka Kunci OPO

Sebelum lanjut, pastikan bahwa perkakas fastboot maupun ADB dapat mengakses perangkat Anda.

ROM CM Recovery tidak dapat dipakai untuk memasang ROM berbeda. Saya harus memasang TWRP untuk itu. Saya mendapatkan cara memasangnya dari sebuah trit di Forum OPO.

Masuk ke dalam Fastboot

  1. Matikan OPO. Jangan hubungkan kabel USB.
  2. Tekan tombol Volume Naik + Daya untuk masuk ke modus Fastboot.
  3. Setelah masuk ke Fastboot, hubungkan OPO ke komputer dengan kabel USB.

PERHATIAN! PROSEDUR SETELAH INI AKAN MENGHAPUS SEMUA (FACTORY RESET). PASTIKAN ANDA SUDAH MENYELAMATKAN DATA ANDA! KEHILANGAN DATA SALAH SENDIRI.

Buka kuncian OPO:

fastboot oem unlock

Masuk ulang ke OPO:

fastboot reboot

Karena proses ini melakukan factory reset, pastikan kembali bahwa perkakas fastboot maupun ADB dapat mengakses perangkat Anda. Aktifkan kembali USB Debugging.

Non-aktifkan proteksi CM Recovery. Caranya:

  1. Masuk ke Setelan => Opsi pengembang
  2. Hapus tanda centang/non-aktifkan Update Cyanogen recovery

Selanjutnya, pasang TWRP

Memasang TWRP

Masuk kembali ke Fastboot dan pasang TWRP di mode tersebut:

fastboot flash recovery openrecovery-twrp-2.8.5.1-bacon.img

Selanjutnya, masuk ke TWRP:

fastboot reboot recovery

Di dalam TWRP inilah nantinya kita memasang sistem kita.

Pasang ROM

Pertama-tama, hapus tembolok, sistem, dan data. Seperti biasa:

Wipe => Advanced Wipe => Pilih Dalvik Cache, System, Data, Cache => Swipe to Wipe

Dua partisi, Internal Storage dan USB-OTG tidak dipilih.

Selanjutnya, kembali ke menu utama. Pilih Install. Pasang ROM dengan urutan:

  1. cm-12-20150312-ROBBIEL811-SM4.8-bacon.zip
  2. Slim_mini_gapps.BETA.5.0.x.build.0.x-20150313.zip
  3. bacon_firmware_update_2015_01_29.zip
  4. UPDATE-SuperSU-v2.46.zip

Setelah itu, nyalakan ulang OPO untuk masuk ke sistem yang baru.

Selesai.

CM12 build by Robbiel811

CM12 build by Robbiel811

Referensi

Getting KF5’s Yakuake on Kubuntu

Ini adalah Yakuake versi yang belum dirilis dan berjalan pada sistem yang belum rilis pula, Kubuntu 14.10. Saya cuma mau menulis catatan saja. Itu sebabnya, saya tidak akan menulis dengan lengkap.

Pagi ini Yakuake saya rusak. Penyebabnya adalah Yakuake masih menggunakan Konsole dari KDE4, sedangkan Kubuntu telah mengganti dengan KF5 (nama resmi KDE5 adalah KF5). Ya, sudah, saya pun mencari kode sumber untuk dapat memasang Yakuake.

Saya mesti memasang:

 

sudo apt-get install extra-cmake-module libkf5notifyconfig-dev libkf5newstuff-dev libkf5parts-dev libqt5x11extras5-dev

Selanjutnya saya mengambil Yakuake dari cabang GIT untuk KF5:

git clone git://anongit.kde.org/yakuake.git -b frameworks

Ciptakan direktori untuk kompilasi dan masuk ke sana.

mkdir yakuake/bangun && cd yakuake/bangun
cmake ../     -DCMAKE_BUILD_TYPE=Release     -DCMAKE_INSTALL_PREFIX=/usr     -DLIB_INSTALL_DIR=lib     -DKDE_INSTALL_USE_QT_SYS_PATHS=ON     -DSYSCONF_INSTALL_DIR=/etc
make -j3
sudo make install

Selesai.

Referensi

Cara Pasang Raspberry Pi 2

Cara Pasang Raspberry Pi 2

Sesuai janji dengan seseorang, inilah tulisan tentang memasang di Raspberry Pi 2. Maaf penulisan tidak rapi.

Persiapan

Saat ini saya lagi menjadi fakir MicroSD. MicroSD saya yang kencang ada di rumah. Saat ini saya hanya menggunakan MicroSD pinjaman dari kelas sebelah. Makanya, untuk menyiasati itu, saya menyediakan satu direktori terpisah di komputer.

Konsepnya, saya pasang segala sesuatu pada direktori tersebut. Setelah semuanya selesai, baru isinya dipindahkan ke MicroSD. Mudah bukan?

Siapkan direktori sementara untuk ditulisi. Saya buat /tmp/ROOTFS, tapi Anda bisa beda. Malah lebih baik. Saya, ‘kan, kebetulan memori 32GB dan /tmp dipasangi tmpfs

Buat konvensi:

export ROOTFS=/tmp/ROOT
export REALROOTFS=/mnt/realroot
export REALBOOTFS=/mnt/realboot

Keterangan:

  • Variabel $ROOTFS merupakan direktori sementara yang akan kita pakai untuk memasang-masang sistem sebelum disalin ke MicroSD.
  • Variabel $REALROOTFS merupakan direktori tempat kita nantinya akan mengaitkan partisi utama MicroSD.
  • Variabel $REALBOOTFS merupakan direktori tempat kita nantinya akan mengaitkan partisi boot MicroSD.

Buat direktorinya kalau belum ada.

sudo mkdir $ROOTFS $REALROOTFS $REALBOOTFS

Firmware

Unduh firmware untuk Raspberry Pi.

wget https://github.com/raspberrypi/firmware/archive/master.zip && unzip master.zip

Atau, salin repositori GIT-nya supaya bisa diperbaharui nanti.

Cara kedua.

git clone https://github.com/raspberrypi/firmware.git firmware

Biar tidak bingung, mari buat konvensi direktori firmware ada di sini:

export FIRMWARE_DIR=/home/user/Unduhan/firmware-master

Atau:

export FIRMWARE_DIR=/home/user/Unduhan/firmware

Selanjutnya memasang perkakas pada sistem.

Persiapan Sistem dengan QEMU

Pasang QEMU.

sudo apt-get install qemu binfmt-support qemu-user-static

Lakukan Debootstrap dengan QEMU.

sudo qemu-debootstrap --no-check-gpg --arch=armhf sid $ROOTFS http://kambing.ui.ac.id/debian/

Setelah selesai memasang sistem, lakukan:

sudo qemu-debootstrap --no-check-gpg --arch=armhf sid $ROOTFS http://kambing.ui.ac.id/debian/

Salin modul kernel ke dalam sistem

sudo cp -r $FIRMWARE_LIB/modules $ROOTFS/lib/

 

Masuk ke sistem:

sudo chroot $ROOTFS

Persiapan Sistem Di Dalam QEMU

Siapkan FSTAB

# cat > /etc/fstab << EOF > /dev/mmcblk0p1          /boot           vfat            defaults        0 2
> /dev/mmcblk0p2          none            swap            sw              0 0
> /dev/mmcblk0p3          /               xfs             defaults,noatime,nodiratime        0 1
> EOF

Siapkan bahasa.

apt-get install locales

Aktifkan Bahasa Indonesia

dpkg-reconfigure locales

Siapkan Zona Waktu

dpkg-reconfigure tzdata

Sampai sini, sih, seharusnya sistem siap dipasangi apa pun. Biar cantik, pasang ini:

apt-get install vim

Yang terakhir tergantung agama dan kepercayaan masing-masing. Saya tidak sedang memaksa Anda pindah agama.

Pengguna

Pasang sudo untuk pengguna admin.

apt-get install sudo

Buat satu pengguna.

# adduser jp
Adding user `jp' ...
Adding new group `jp' (1000) ...
Adding new user `jp' (1000) with group `jp' ...
Creating home directory `/home/jp' ...
Copying files from `/etc/skel' ...
Masukkan sandi Unix yang baru :
Ketik ulang sandi Unix:
passwd: kata sandi diperbaharui dengan sukses
Mengubah informasi pengguna dari jp
Masukkan nilai baru atau tekan ENTER untuk nilai bawaan
        Nama Lengkap []: Jan Peter Alexander Rajagukguk
        Nomor Ruangan []: 1145
        Telepon Kantor []: 
        Telepon Rumah []: 
        Lain-lain []: 
Is the information correct? [Y/n] Y

Buat dia sebagai admin.

adduser jp sudo

Pasang perkakas sistemberkas yang Anda gunakan. Saya menggunakan XFS, jadi saya pasang:

apt-get install xfsprogs dosfstools ntfs-3g

Saya hanya memilih XFS, FAT32/16, dan NTFS. Untuk perkakas EXT2/3/4 nampaknya sudah otomatis terpasang. Selanjutnya memasang sistem dasar.

Siapkan Peladen SSH

Pasang Dropbear, peladen SSH yang lebih ringan dari OpenSSH.

apt-get install dropbear openssh-client

Aktifkan dia supaya jalan di awal.

sed -i 's/NO_START=1/NO_START=0/g' /etc/default/dropbear

Sampai sini sistem dasar sudah selesai. Silakan keluar dari CHROOT dengan CTRL+D atau ketik “quit” atau “exit”. Setelah puas memasang segala sesuatu, saatnya sistem ditaruh ke dalam mount.

Menaruh Aplikasi Ke MicroSD

Saya diberi pinjaman sebuah MicroSD sebesar 4GB. Saya partisi dengan:

  • BOOT: 128MB
  • SWAP: 384MB
  • ROOT: Sisanya.

Saya tidak tahu sisanya itu ada berapa. Tapi silakan lihat gambar. Saya menggunakan pemartisi KDE.

Raspberry Pi 2 Partitions

My Raspberry Pi 2 partition scheme

Partisi BOOT memang harus FAT32 atau FAT16. Ya, saya pilih FAT16 saja. Yang menarik, saya memberikan partisi utama dengan sistemberkas XFS. GUNAKAN SAJA EXT3/4!

Persiapan Partisi BOOT

Anda bisa lakukan ini di penjelajah berbasis GUI favorit Anda (Nautilus/Dolphin/dsb.) atau gunakan cara yang lebih sulit.

Saya asumsikan partisi MicroSD ada di partisi /dev/sde1 ini tergantung sistem Anda. Berikut caranya:

sudo mount /dev/sde1 $REALBOOTFS

Salin dari unduhan kita ke direktori itu

sudo cp -r $FIRMWARE_DIR/boot/* $REALBOOTFS

Tambahkan baris parameter pada berkas cmdline.txt, biasanya belum ada.

 echo "root=/dev/mmcblk0p3 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop" | sudo tee $REALBOOTFS/cmdline.txt

Selesai, jangan lupa sinkronisasikan perubahan ke dalam MicroSD.

sync

Persiapan Partisi Utama

Sekali lagi, Anda tidak perlu menyusahkan diri. Tapi, kalau mau pakai cara ini, ya, sudah.

sudo mount /dev/sde3 $REALROOTFS

Salin semua kerjaan kita ke sana.

sudo cp -a $ROOTFS/* $REALROOTFS/

Dan jangan lupa,

sync

Setelah ini selesai, lepas kaitan dan masukkan ke dalam RaspberryPi.

sudo umount $REALROOTFS $REALBOOTFS

Selesai.

Referensi

Transparansi DKI dan Kekuatan OpenData

Adanya ketegangan antara Gubernur DKI Jakarta dengan DPRD terkait Rancangan APBD (RAPBD) yang dikirim ke Kementerian Dalam Negeri membuat cerita seru di warung-warung kopi. Kalau cuma debat di koran, saya takkan bahas itu di sini. Namun, Pak Basuki Tjahja Purnama (Ahok) sebagai Gubernur membuka RAPBD.

Nah, di situ baru keseruan terjadi.

Ainun Najib, salah satu yang menukangi Kawal Pemilu mempublikasikan data yang dibuka tersebut dalam jurnal Facebooknya:

Dalam salah satu statusnya, Najib mempublikasikan data-data yang sudah ditabulasi:

Ada juga yang mengolah data tabulasi RAPBD versi Pemprov DKI  dengan menggunakan D3.js secara visual.

Visualisasi ini menggambarkan sekitar 20 item penting yang diagregat paling banyak bakal menghabiskan anggaran. Dalam jangka sependek ini, Beliau menunjukkan bahwa data yang banyak dapat dipartisi untuk memberikan persepsi yang lebih baik. Hal ini penting dalam penampilan Data Besar (Big Data).

Ketika saya mempublikasikan data tersebut, rekan saya bertanya di mana yang versi DPRD. Tak lama kemudian, sebuah twit dari rekan lain muncul.

Situs yang dibuat Najib pada awalnya berat untuk diakses (menurut orang, sebab memori 32GB pada PC saya membuat saya tidak mengalaminya). Sebuah twit dari Ilya Alexander S. memberitahukan tentang data RAPBN versi DPRD yang diunduh dan diubahnya menjadi berkas CSV:

Terakhir, Pahlevi Fikri Auliya berusaha membuat perbandingan tabel keduanya.

Dengan menggunakan data tabulasi tersebut, Auliya membuat sebuah tabel yang dapat disaring sesuai dengan hal-hal tertentu. Aplikasi ini dapat lebih memudahkan proses periksa-silang bagi publik yang tertarik.

Kolaborasi yang menarik ini membuktikan bahwa gotong royong yang terjadi antara para penggiat data terbuka menghasilkan sesuatu yang bila dikerjakan oleh satu entitas bisa berbiaya mahal. Tetapi, nyatanya itu bisa dikerjakan oleh orang-orang yang tepat. Dan publik sebagai saksi pengerjaan tersebut dapat menjadi hakim.

Menurut U.S. PIRG Education Fund, transparansi RAPBD ini merupakan hal yang fundamental bagi demokrasi. Transparansi dalam pemerintahan mencegah korupsi, meningkatkan kepercayaan publik, dan meningkatkan efektivitas dan kebertanggungjawaban penggunaan pajak.

Ingat! Negeri ini bukan kerajaan, tetapi republik. Dana yang dikelola oleh negara berhak diketahui oleh warga negara Indonesia sebagai pemilik. Tentunya, kerahasiaan perlu berlaku juga untuk sebagian hal tertentu seperti misalnya belanja pertahanan.

Terlepas dari siapa yang benar — itu di luar ranah blog saya. Data yang disajikan merupakan awal dari transparansi yang melanda negeri ini. Masih sulit orang untuk mengolahnya tanpa mengerti domain keahlian ini. Semoga masa mendatang bisa dilembagakan sehingga Indonesia bisa maju beberapa langkah dan data bisa lebih mudah dikonsumsi oleh publik awam.

Addendum

Rekan saya mentwit sebuah aplikasi web gotong royong untuk membandingkan keduanya:

Bacaan Lebih Lanjut

Membuat WIFI Sendiri dengan hostapd, dhcpd, dan nftables

Membuat WIFI Sendiri dengan hostapd, dhcpd, dan nftables

Access point configuration

Access point configuration

Saya hendak membuat sebuah jaringan nirkabel. Jaringan nirkabel itu terhubung ke sebuah komputer yang berfungsi sebagai router. Setiap akses dari perangkat-perangkat dalam jaringan tersebut dienkapsulasi dalam NAT dan dikirim ke Internet/jaringan lainnya.

Komputer yang saya gunakan adalah GNU/Linux Gentoo dengan spesifikasi sebagai berikut:

  • Kernel Linux 3.19-pf1
  • Systemd 219

Saya pun tertarik menggunakan nftables karena dia yang akan menggantikan iptables di masa mendatang. Perkakas nftables pertama kali ada di Linux 3.13. Jadi, ya, lumayan relatif baru.

Aktifkan IP Forwarding

Setiap kali mau memakai NAT, jangan lupa mengaktifkan IP Forwarding di kernel. Lihat dulu kalau dia aktif:

$ sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

Kalau nilainya 0, berarti belum aktif. Aktifkan:

sudo sysctl -w net.ipv4.ip_forward=1

Supaya permanen, tambahkan ke konfigurasi. Ingat! Sistem ini menggunakan systemd. Jadi, berkasnya ada di /etc/sysctl.d

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf

Ini kalau tadi sebelumnya IPv4 belum menyala. Kalau sudah, lewati saja. Tapi, biasanya distro-distro bakunya mematikan fitur ini.

nftables

Ada beberapa langkah yang dilakukan untuk memasang nftables:

  1. Memasang kernel yang sudah mendukung nftables.
  2. Memasang perkakas nftables.
  3. Memasang unit systemd.

Modul Kernel

Saya tidak tahu Anda menggunakan kernel versi apa. Tapi, seandainya kernel tersebut di atas 3.13, kemungkinan ada. Kalau saya kebetulan mengompilasi sendiri kernel saya. Jadinya, saya aktifkan nftables pada bagian:

-> Networking support
  -> Networking options
    -> Network packet filtering framework (Netfilter)
      -> Core Netfilter Configuration

Lalu saya centang saja semua yang berbau nf_tables di konfigurasi seperti terlihat pada gambar.

I just opt-in every "nf_tables" in Core Netfilter Configuration

I just opt-in every “nf_tables” in Core Netfilter Configuration

Setelah saya kompilasi dan pasang kernel saya. Lalu saya masuk ke sistem dengan menggunakan kernel tersebut. Selanjutnya saya memasang perkakas nftables untuk bisa memanipulasi tabel nftables.

Perkakas

Saya memasang nftables dengan cara berikut:

sudo emerge -av net-firewall/nftables

Atau gunakan pemaket dari distro kesayangan Anda masing-masing. Untuk Debian dan turunannya, ada bacaan menarik mengenai cara cepat membuat perkakas ini.

Jika sudah, ada beberapa contoh penggunaan nftables yang menarik, misalnya:

  • Melihat seluruh isi tabel:
    nft list ruleset
  • Menghapus seluruh tabel:
    nft flush ruleset
  • Menyimpan seluruh tabel ke berkas konfigurasi:
    nft list ruleset > /var/lib/nftables/rules-save
  • Memuat konfigurasi dari berkas konfigurasi:
    nft -f /var/lib/nftables/rules-save

Saya mengikuti tata letak berkas di Gentoo. Dia menaruh aturan iptables, nftables, ebtables, dan lain-lain di direktori /var/lib. Kalau Debian menaruhnya di /etc. Anda terserah mau taruh di mana, yang penting konsisten.

Inisialisasi Aturan nftables

Awal-awalnya nftables masih kosong. Saya menggunakan aturan yang telah disediakan gentoo untuk IPv4 NAT. Gentoo saat ini menaruh berbagai aturan siap pakai di /etc/nftables.

Mengapa saat ini? Karena biasanya aturan siap pakai ditaruh di /usr/share. Mungkin saja bilamana nftables sudah stabil, aturan-aturan ini dipindahkan ke sana. Ya, sudah, pakai saja:

sudo nft -f /etc/nftables/ipv4-nat

Supaya Anda tidak penasaran, isi berkas itu sebenarnya cuma aturan biasa:

#!/sbin/nft -f

table nat {
    chain prerouting    { type nat hook prerouting priority -150; }
    chain postrouting   { type nat hook postrouting priority -150; }
}

Mirip-miriplah dengan tutorial nftables NAT yang resmi.

Lalu tambahkan aturan yang mentranslasi semua paket jaringan dari wlan0 ke eth0.

sudo nft add rule nat postrouting ip saddr 10.10.0.0/24 meta oif eth0 snat 192.168.0.5

Ganti 192.168.0.5 dengan IP kartu ethernet Anda. Lihat gambar awal mengenai skema jaringan yang hendak dibangun.

Padanan di iptables

Aturan ini padanannya di iptables seperti ini:

sudo iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j SNAT --to 192.168.0.5

Lalu mengapa tidak menggunakan iptables saja biar sederhana? Judul artikel ini belajar nftables. Lagipula, sebenarnya lebih sederhana nftables, hanya saja ia belum terintegrasi dengan distro-distro yang ada saat ini. Dia masih baru, bahkan kernel yang mendukung belum masuk.

Sebelum ini saya biasanya menggunakan perintah berikut untuk iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Nanti saya coba di Wheezy, deh. Kalau tidak malas, tapinya. Untuk saat ini jangan lupa untuk mematikan NAT di iptables supaya tidak kacau!

sudo rmmod iptable_nat

Menyimpan Aturan nftables

Kalau sudah selesai, seharusnya aturan nftables akan sebagai berikut:

$ sudo nft list ruleset
table ip nat {
    chain prerouting {
         type nat hook prerouting priority -150;
    }

    chain postrouting {
         type nat hook postrouting priority -150;
         ip saddr 10.10.0.0/24 oif eth0 snat 192.168.0.5
    }
}

Nah, kalau di Gentoo, dia sudah menyediakan skrip initnya. Sayangnya cuma untuk OpenRC. Kita bisa memanfaatkan skrip itu untuk menyimpan aturan NAT:

sudo /etc/init.d/nftables save

Atau cara manualnya:

sudo mkdir -p /var/lib/nftables
sudo nft list ruleset | sudo tee /var/lib/nftables/rules-save

Selanjutnya membuat aturan systemd supaya dijalankan otomatis.

Aturan systemd untuk nftables

Belum ada aturan untuk nftables. Ada seseorang yang berbaik hati untuk membuat skrip untuk systemd. Tetapi, saya memilih untuk membuat sendiri.

Skrip orang itu membuat nftables sebagai layanan. Tetapi, saya pikir seharusnya perilaku nftables sama seperti skrip ALSA dan iptables. Ia hanya perlu dijalankan sekali saja. Itu sebabnya, sama seperti kedua subsistem, saya memecah nftables menjadi tiga berkas aturan.

Aturan /usr/lib/systemd/system/nftables.service

[Unit]
Description=Store and restore nftables firewall rules
Documentation=man:nftables(8)

[Install]
Also=nftables-store.service
Also=nftables-restore.service

Aturan /usr/lib/systemd/system/nftables-restore.service

[Unit]
Description=Restore nftables firewall rules
# if both are queued for some reason, don't store before restoring 🙂
Before=nftables-store.service
# sounds reasonable to have firewall up before any of the services go up
Before=network.target
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=/sbin/nft -f /var/lib/nftables/rules-save

[Install]
WantedBy=basic.target

Aturan /usr/lib/systemd/system/nftables-store.service

[Unit]
Description=Store nftables firewall rules
Before=shutdown.target
DefaultDependencies=No

[Service]
Type=oneshot
ExecStart=/bin/sh -c "/sbin/nft list ruleset > /var/lib/nftables/rules-save"

[Install]
WantedBy=shutdown.target

Selanjutnya, pasang ketiga layanan tersebut:

sudo systemctl enable nftables

Selesai untuk nftables, selanjutnya mengonfigurasi antarmuka jaringan.

Mengonfigurasi Antarmuka Jaringan

Sudah menjadi aturan umum kalau firewall berjalan sebelum antarmuka jaringan diaktifkan. Dengan memulai firewall terlebih dahulu, tidak ada jeda yang bisa dipakai untuk masuk. Tidak ada waktu antara menjalankan antarmuka jaringan dengan menyalakan firewall. Itu sebabnya, nftables dipasang pertama kali sebelum antarmuka jaringan.

Kalau Anda pengguna destop, kemungkinan sudah ada NetworkManager. Untuk konfigurasi minimal, NetworkManager biasanya tidak dipasang. Antarmuka jaringan harus dipasang dengan cara lain.

Saya gagal menggunakan metode systemd-networkd. Kalau saya menggunakan infrastruktur itu, firewall (nftables/iptables) tidak ada yang berjalan! Mungkin saya ada yang kurang. Entahlah, yang pasti saya mengonfigurasi statik dengan cara lain saja.

Antarmuka eth0

Gentoo menggunakan pendekatan yang sama dengan Arch Linux. Mereka menggunakan systemd untuk menjalankan skrip Gentoo. Dengan demikian, konfigurasi Gentoo yang lama bisa dibaca. Ini konfigurasi lama saya di  /etc/conf.d/net

dns_servers=( "8.8.8.8" )

config_eth0="192.168.0.5 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"

Cara mengaktifkan layanan adalah dengan membuat tautan simbolik dari net@.service ke net@eth0.service.

sudo ln -s /usr/lib/systemd/system/net@{,eth0}.service

Kalau Anda tidak percaya diri dengan menggunakan enumerasi BASH, bentuk lain dari perintah itu adalah

sudo ln -s /usr/lib/systemd/system/net@.service /usr/lib/systemd/system/net@eth0.service

Setelah itu, pasang layanan ini ke systemd agar dijalankan pada waktu komputer baru menyala.

sudo systemctl enable net@eth0

Kalau Debian, seperti biasa ada di /etc/network/interfaces. Jadi, mungkin systemd tidak terlalu dibutuhkan.

Antarmuka wlan0

Saya menggunakan Linksys WUSB54GC. Kemampuan yang dimiliki:

    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point

Dia bisa menjadi Access Point (AP)!

Implementasi yang kita pilih merupakan implementasi statik. Kita bisa dengan aman berasumsi bahwa IP yang dipakai tidak akan berubah.

Saya tadinya ingin membuat seperti antarmuka Ethernet. Tapi, konfigurasi gagal karena RFKill selalu memblokir wlan0 dengan soft block. Saya pun memutuskan untuk membuat sebuah layanan kecil untuk menjalankan wlan0 di /usr/lib/systemd/system/ap-static.service

[Unit]
Description=Static WLAN0 as an Access Point
Documentation=man:rfkill(8) man:ip(8)
After=network.target
After=time-sync.target

[Service]
Type=oneshot
RemainAfterExit=yes 
ExecStart=/usr/sbin/rfkill unblock all
ExecStart=/bin/ip addr add 10.10.0.1/24 dev wlan0
ExecStart=/bin/ip link set wlan0 up

[Install]
WantedBy=multi-user.target

Seperti biasa, pasang layanan ini:

sudo systemctl enable ap-static

Untuk antarmuka nirkabel sudah selesai. Saatnya memasang layanan yang akan mengonfigurasi klien WIFI.

Layanan Konfigurator WIFI

Ada dua layanan utama yang dipakai untuk tutorial kali ini. Keduanya masing-masing bisa diganti dengan yang lain. Namun, saat ini saya menggunakan dua layanan ini karena keduanya dapat dikembangkan untuk kebutuhan kompleks.

hostapd
Hostapd adalah aplikasi penyedia Access Point. Dia menyediakan autentikator, mengatur antarmuka WIFI, dan sejenisnya. Selain memiliki autentikator internal, hostapd dapat terhubung ke Radius dan mendukung ACS.
DHCPd
DHCPd adalah penyedia layanan DHCP. Layanan ini yang mengatur kepemilikan IP dan sejenisnya kepada klien. Sebenarnya masih ada udhcpd yang lebih sederhana. Yah, namanya juga belajar.

Mari konfigurasi keduanya.

Layanan hostapd

Setiap distro umum memiliki paket hostapd. Saya sendiri di Gentoo mengunakan hostapd versi:

$ sudo hostapd -v
hostapd v2.3
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2014, Jouni Malinen <j@w1.fi> and contributors

Pertama-tama, konfigurasikan AP yang hendak kita buat. Berikut contohnya pada /etc/hostapd/hostapd.conf

# WiFi Hotspot
interface=wlan0
driver=nl80211
# Access Point
ssid=AP Lo Nyambung2
hw_mode=g
ieee80211d=1
country_code=ID  ### 802.11d/h harus ada kode negara
# WiFi Channel:
ieee80211h=1  
channel=3     ### Channel 3
wmm_enabled=1 ### QoS
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=s4nD1Al4yFtW
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Saya menyalin skrip layanan systemd hostapd yang disediakan oleh Gentoo menjadi /usr/lib/systemd/system/hostapd-wlan0.service. Alasan saya supaya kalau ada pembaharuan sistem, skrip ini tidak berubah. Lagipula, saya mengubah agar layanan berjalan setelah ap-static.service sudah berjalan. Isinya:

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=network.target
After=ap-static.service

[Service]
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf

[Install]
WantedBy=multi-user.target

Setelah itu, pasang layanan ini.

sudo systemctl enable hostapd-wlan0

Selesai.

Layanan dhcpd

Seperti saya bilang, sebenarnya DHCPd agak mubazir. Tapi, berhubung sistem ringan, saya pasang saja. Oh, iya, kalau di Debian, nama paketnya isc-dhcp-server.

Gentoo:

sudo emerge -av net-misc/dhcp

Debian dan turunannya:

sudo apt-get install isc-dhcp-server

Setelah terpasang, buat berkas konfigurasi /etc/dhcp/dhcpd.conf

ddns-update-style none;
log-facility local7;
subnet 10.10.0.0 netmask 255.255.255.0 {
    range 10.10.0.2 10.10.0.32;
    option domain-name-servers 8.8.8.8;
    option routers 10.10.0.1;
}

Jangkauan IP tidak saya buat jauh karena pun jumlah maksimal klien yang terhubung ke AP tidak begitu banyak. Lain cerita kalau misalnya DHCPd kita pakai juga untuk yang lain.

Seperti biasa, saya menyalin berkas systemd DHCPd dan menamainya menjadi /usr/lib/systemd/system/dhcpd4-wlan0.service

[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
After=ap-static.service

[Service]
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcp -group dhcp --no-pid

[Install]
WantedBy=multi-user.target

Terakhir, pasang layanan DHCPd:

sudo systemctl enable dhcpd4-wlan0

Selesai.

Terakhir

Matikan dan kemudian hidupkan kembali komputer yang dipakai sebagai AP. Kalau benar, maka otomatis layanan ini akan berjalan.

Example on working AP.

Example on working AP from my phone.

Tamat.

Membuka Raspberry Pi 2

Membuka Raspberry Pi 2

Pagi ini saya bahagia. Raspberry Pi 2 (Raspi2) yang dibeli telah tiba! Kami sekantor memesan beramai-ramai. Tapi, untungnya, saya yang duluan membuka Raspberry Pi 2.

“Ih, Anda lebay sekali membuat tulisan tentang Raspberry Pi 2!”

Sebelum kalimat itu terlontar, saya cuma mau bilang bahwa Raspi2 berbeda dengan model pendahulunya.

All components of Raspberry Pi 2

All components of Raspberry Pi 2

Berbeda dengan sebelumnya, Raspi2 datang dengan buku manual. Buku manual itu sekedar penjelasan singkat. Namun, buku ini tebal karena diterjemahkan ke pelbagai bahasa.

This time Raspberry Pi 2 really is on a card form factor

This time Raspberry Pi 2 really is on a card form factor! A Universitas Indonesia student card as a comparison.

Kali ini Raspi2 benar-benar berukuran kartu. Coba lihat KIM UI dibandingkan dengan Raspi2. Ya, memang saya bukan fotografer profesional, tapi setidaknya terlihatlah kalau itu sama.

Untuk spesifikasi teknis, menurut bungkus Raspi:

  • Prosesor Quad Core Broadcom BCM2836 dengan memori 1GB.
  • GPIO dengan jumlah pin 40.
  • Kali ini menggunakan MicroSD, bukan lagi SDCard!
  • Keluaran yang disediakan ada 4 USB, 1 HDMI,  dan 1 lubang untuk RCA. Ada juga ekstensi untuk modul kamera dan DSI.
  • Seperti biasa, masukan daya bisa dengan pengisi daya telepon genggam (MicroUSB).

Nah, perhatikan kata satu lubang untuk RCA! Awalnya saya bingung. Apakah artinya Raspi2 tidak lagi bisa dicolokkan ke dalam TV?

Salah satu cita-cita saya sebenarnya ingin menjadikan Raspberry Pi sebagai komputer yang bisa digunakan di pedalaman. Dia tidak membutuhkan banyak catu daya sehingga bisa menggunakan energi dari panel surya misalnya. Apalagi, Raspberry Pi cukup handal untuk bisa digunakan dalam kondisi yang agak beda.

Ternyata, dari sumber yang saya temui, Raspberry Pi menggunakan sebuah kabel 3,5 inci ke RCA. Artinya, dia menggunakan kabel seperti ini:

3.5" to 3-ways RCA

Image taken from the Raspberry Forum http://www.raspberrypi.org/forums/viewtopic.php?f=91&t=83446

Kalau mau bikin sendiri, ini gambarannya:

Image taken from the Raspberry Pi Forum.

Seperti yang dilihat, ada banyak jenis 3,5″ RCA yang beredar di pasaran. Menurut forum itu, kabel yang benar adalah kabel untuk Zune. Kabel untuk iPod Video pun dapat dipakai, walau pun kiri dan kanan tertukar. Tinggal mengganti kabel merah dan putih, sih.

Aduh, ini kabel cari di mana, ya?

Kali ini saya belum bisa uji coba menyalakan Raspi2. Yang saya punya hanya SDCard. Saya harus mengambil dari rumah MicroSD saya. Ya, bisa, sih, diambil dari telepon genggam. Cuma, saya takut nanti saya dibilang anti sosial karena sulit dihubungi.

Saya juga agak malas. Raspberry Pi 2 sekarang sudah mendukung Windows 10. Microsoft menyediakannya gratis untuk diunduh. Nampaknya mereka memang mau besar-besaran ke komputasi awan. Windows 10 disediakan oleh Microsoft sebagai program mereka dalam Internet of Things.

Thesis saya dulu tentang konsep IoT. Tapi, saya sekarang lebih barokah belajar DoTA 2. Hadiahnya saja sudah jutaan dollar… 😛

Demikian laporan pandangan mata sekilas mengenai hasil pembongkaran Raspberry Pi 2 yang baru datang.

Bacaan lebih lanjut:

 

CPU_FLAGS_X86 introduction

CPU_FLAGS_X86 introduction

The USE flags corresponding to the instruction sets and other features specific to the x86 (amd64) architecture are being moved into a separate USE flag group called CPU_FLAGS_X86. In order not to lose CPU-specific optimizations, users will be required to update their make.conf (and package.use) file. For example, if the following USE flags were present: USE=”mmx mmxext sse sse2 sse3″ Those flags need to be copied into: CPU_FLAGS_X86=”mmx mmxext sse sse2 sse3″ Please note that the same CPU_FLAGS_X86 variable is used both on x86 and amd64 systems. When in doubt, you can consult the flag descriptions using one of the commonly available tools, e.g. `equery uses` from gentoolkit: $ equery uses media-video/ffmpeg Most of the flag names match /proc/cpuinfo names, with the notable exception of SSE3 which is called ‘pni’ in /proc/cpuinfo (please also do not confuse it with distinct SSSE3). To help users enable the correct USE flags, we are providing a Python script that generates the correct value using /proc/cpuinfo. It can be found in the app-portage/cpuinfo2cpuflags package: $ emerge -1v app-portage/cpuinfo2cpuflags $ cpuinfo2cpuflags-x86 In order to ensure safe migration and maintain compatibility with external repositories, it is recommended to preserve the old USE settings for a period of one year or until no package of interest is still using them.

PS: This is a verbatim copy of a reminder in ESELECT NEWS. I take it to this blog as a reminder for myself in the future.

Steam Market Sebagai Model Ekonomi Maya (Digital)
Steam

Steam Market Sebagai Model Ekonomi Maya (Digital)

Yanis Varoufakis baru saja dilantik menjadi Menteri Keuangan Yunani yang baru. Dia dikenal sebagai seorang ekonom yang menentang bail-out Yunani. Yang menarik, dia sebelumnya adalah ekonom yang disewa Valve untuk pengembangan sistem ekonomi Steam.

Dia mendeskripsikan dirinya sebagai Marxist Libertarian. Pantas saja Steam dibuat menjadi lebih sebagai ekosistem yang dibangun secara bebas untuk para pengembang dan pemain. Valve sebagai penyedia ekosistem memastikan partisipasi aktif setiap orang yang tergabung dalam ekonomi digital yang dibangunnya.

Sebagai seorang ekonom, tentunya dia lebih berpengalaman dibandingkan yang lain. Dengan menggunakan Steam, dia dapat menerapkan berbagai model ekonomi. Ditambah lagi, Valve punya kendali khusus untuk menambah/mengurangi jumlah parameter atau menetapkan konstanta-konstanta dalam menjadikan Steam sebagai pasar yang unik.

Pandangan dia yang lain yang menarik adalah mengenai ekonometrik. Bahwa ekonomi sering kali dipandang sebagai sebuah peristiwa yang dapat dicocokkan dengan berbagai teori yang mana teori-teori tersebut bisa jadi saling berkompetisi/bertentangan. Sehingga, apabila ada dua atau lebih teori yang bertentangan, setiap ekonom harus memilih salah satu dari teori yang bertentangan dan mengabaikan teori yang lainnya. Itulah sebabnya, teori-teori tersebut hanya mampu menjelaskan secara empiris fenomena-fenomena ekonomi dengan asumsi ceteris paribus.[1]

Yang menarik dari Steam adalah perubahan paradigma bahwa nilai ekonomis tidak saja dipengaruhi oleh permintaan, penawaran, dan kekuatan menawar. Adanya sistem barter yang diterapkan oleh Valve di dalam Steam membuat perhitungan ekonomis menjadi kacau. Ada faktor sosial, terutama persepsi pengguna tentang barter sebagai sarana memberikan hadiah dan barter sebagai alat tukar.

Hal ini dijelaskan lebih lanjut dengan adanya salah tafsir dalam fondasi ekonomi barter dan mengapa ada suatu nilai tukar. Setidaknya, dari penemuan-penemuan arkeologis, diketemukan bahwa uang awalnya bukan sebagai murni alat tukar semata, tetapi sebagai penanda utang. Uang baru menjadi penting ketika ada pemaksaan sosial dalam mengatur produksi dan distribusi. Pemaksaan sosial melalui strata sosial (hierarki, kasta),  kewajiban, dan kekerasan terorganisasi membentuk konvensi sosial tersebut. Hal inilah yang melahirkan nilai-nilai sosial dalam masyarakat modern saat ini, termasuk penggunaan uang sebagai nilai tukar.

Ada faktor filosofis yang membentuk pertukaran ekonomi. Saya jadi teringat mengenai perbedaan antara pasar (in-game market) dalam  permainan-permainan Asia Timur dengan pasar permainan Masyarakat Barat. Nanti saya tulis, deh. Tapi, syaratnya jangan tertawakan saya bila ilmu saya masih kurang.

Aduh, saya perlu berhenti sebelum tulisan ini jauh dari ranah pengetahuan saya. Saya cuma mau bilang bahwa ekonom dibalik Steam sekarang menjadi Menteri Keuangan Yunani yang baru. Intinya, ya, itulah alasan mengapa saya memakai Steam setiap malam.

Ahem, maksud saya, penelitian Steam sebagai pasar permainan membuktikan bahwa suatu ekosistem ekonomi dibangun dengan multi-dimensi yang mana TIK salah satu pemeran di dalamnya. Saya berharap rekan-rekan dengan ranah sosial bisa menjelaskan beberapa faktor dalam Steam.


  1. Saya tidak tahu bagaimana menjelaskan empirical regularities dengan bahasa manusia. Tulisan ini jauh di luar ranah saya. ^

Bacaan Lebih Lanjut

Peramban Baru Vivaldi
Vivaldi browser change color like chameleon.

Peramban Baru Vivaldi

Phoronix mengumumkan tentang Vivaldi, sebuah peramban baru. Vivaldi dibangun oleh mantan CEO Opera dengan tujuan membangkitkan fitur-fitur Opera seperti dahulu. Fitur seperti mendengar para kontributor dan pengguna.

Seperti peramban baru lainnya, Vivaldi dibangun dengan menggunakan Chromium. Setelah beberapa kali mencoba, saya menemukan beberapa fitur unik:

  • Penggunaan papan ketik didukung. Pintasan-pintasan papan ketik cukup kuat untuk para pengguna mahir. Setidaknya itu yang saya lihat dari daftar pintasan papan ketik.
  • Warna dasar peramban berubah mengikuti situs yang dikunjungi. Ini menimbulkan efek immersive experience.
  • Tampilan sederhana.

Yak, kira-kira TL;DR-nya seperti itu.

Cara Pasang

Vivaldi menyediakan paket RPM dan Debian untuk dipasang. Silakan gunakan cara yang disarankan pada masing-masing sistem operasi Anda. Berhubung saya menggunakan Gentoo, cara saya berbeda. Saya asumsikan Anda sudah mengunduh berkas Debian Vivaldi_TP_1.0.83.38-1_amd64.deb (versi terbaru saat penulisan). Silakan ganti dengan versi yang lain.

Ekstraksi Vivaldi.

ar p Vivaldi_TP_1.0.83.38-1_amd64.deb \
  tar xvfJ -

Lalu pindahkan ke sistem.

sudo mv opt/vivaldi /opt
sudo mv usr/bin/vivaldi-browser /usr/bin

Jangan lupa sandbox Chromium harus punya setuid.

sudo chmod 4755 /opt/vivaldi/vivaldi-sandbox

Selesai.

Cuplikan

Tidak enak tanpa cuplikan. Omong-omong, saya ubah-ubah sedikit sebelum ambil cuplikan. Saya menyesuaikan tata letak dengan Opera saya yang dulu.

 

Teknologi Pendidikan

Teknologi Pendidikan

Ada beberapa hal yang penting yang disebutkan di dalam video ini:

  1. Teknologi takkan pernah merevolusi pendidikan. Ia hanya bentuk evolusi saja. Pendidikan tetap membutuhkan interaksi guru dan murid.
  2. Hal yang terpenting dalam proses pembelajaran adalah apa yang terjadi di dalam kepala murid. Tugas guru untuk menginspirasi murid. Tugas teknologi hanya memicu proses di dalam kepala murid.
  3. Lingkungan (experience/pengalaman?) yang paling efektif menstimulus kegiatan di dalam kepala murid adalah hal yang seharusnya menjadi fokus pencarian dalam menemukan Sistem Pendidikan yang sempurna.

Sedikit catatan dari saya mengenai lingkungan. Lingkungan adalah perpaduan antara interaksi guru-murid dengan teknologi sebagai alat bantu yang menstimulus murid untuk berpikir. Dalam proses berpikir ini, kemudian murid menghasilkan pengetahuan. Pengetahuan ini yang memperkaya hidup murid dalam mengambil keputusan-keputusan dalam menghadapi hidupnya.

Cogito ergo sum.

Selamat Tahun Baru!
2015

Selamat Tahun Baru!

Selamat tahun baru 2015 bagi yang merayakan! Banyak sekali perubahan yang dialami tahun baru ini. Saya sendiri berharap ada banyak perubahan yang menarik di tahun ini.

Perubahan Status

Lembaga TIK di Universitas Indonesia, tempat saya bekerja telah berganti pimpinan mengikuti kepemimpinan rektor yang baru, Prof. Dr. Ir. Muhammad Anis, M.Met.. Dari Ibu Prof. Dr. Ir. Riri Fitri Sari, M.Sc., M.M. menjadi Ibu Betty Purwandari, S.Kom., M.Sc., PhD.. Tak terasa sudah 8 tahun semenjak saya pertama di bawah kepemimpinan Ibu Riri. Wow, waktu tak terasa dan sudah banyak pencapaian yang dicapai. Ya, begitulah, saya tidak pintar bersantun kata. Selamat jalan Ibu, selamat datang Ibu.

Selain itu, struktur lembaga tempat saya bekerja pun berubah. Kami tak lagi langsung di bawah Rektor, tetapi sudah berstatus direktorat. Nama pun berubah, dari Pusat Pengembangan dan Pelayanan Sistem Informasi (PPSI) menjadi Direktorat Sistem dan Teknologi Informasi.

Saya tertarik bagaimana perubahan status kelembagaan akan berpengaruh terhadap kewenangan. Kira-kira bagaimana pengaruhnya mengenai pengelolaan data digital di Universitas Indonesia, fungsi pengawasan sistem informasi, dan stategi UI terkait arahan sistem informasi. Tantangan dan peluang, itu yang sementara ini yang saya simpulkan.

Ekonomi Kreatif

Sejauh mana keseriusan pemerintahan Jokowi-JK terhadap ekonomi kreatif akan teruji dalam kedua hal ini:

  1. Pembebasan Vimeo dari daftar cekal.
  2. Penataan jalur arus lintas data yang murah dan terjangkau.

Berikut alasannya.

Vimeo

Vimeo adalah situs de facto untuk para sineas. Anda boleh lihat semua film bebas/pendek yang didistribusikan, bahkan yang mendapatkan penghargaan. Semua pastinya ada di Vimeo. Saya bahkan kesulitan menemukan film yang ada di Youtube (kecuali yang telah diunggah tanpa izin oleh orang lain).

Berbeda dengan Youtube, Vimeo menargetkan langsung sineas-sineas independen untuk menyimpan film mereka dan menampilkannya langsung ke format HD. Ya, intinya, Vimeo tempat berkumpulnya sineas-sineas independen, salah satu aktor penting dalam ekonomi kreatif. Jadi, kalau memang Indonesia benar-benar mendukung industri kreatif, tidak seharusnya Vimeo dicekal.

Vimeo Staff's pick on this time of writing.

Vimeo Staff’s pick on front page taken at this time of writing. (Color down-sampled to 256-bit for convenience bandwith saving)

Saya lampirkan halaman depan Vimeo bagian kurasi staf Vimeo sebagai bukti bahwa Vimeo adalah tempat gaulnya orang-orang kreatif.

Lebar Pita Internet

Strategi yang saya lihat yang dilakukan pemerintah akhir-akhir ini adalah sering mengadakan pameran-pameran UMKM dan hasil unik daerah. Siapakah target atensi pemerintah? Sesama pegawai pemerintah yang mengetahui acara tersebut? Orang-orang yang memang memiliki waktu dan usaha lebih untuk acara-acara tersebut? Orang-orang yang kebetulan lagi ada di sekitar seperti saya? Mereka saja, ‘kah?

Lalu bagaimana dengan orang-orang yang lain? Apakah mereka tidak potensial untuk menjadi pelanggan?

Beberapa waktu ini saya memperhatikan perilaku pengguna di Steam, sebuah pasar daring yang berkembang pesat. Lebih spesifik lagi, perilaku pengguna dari Indonesia di dalam kompetisi DoTA 2 se-Asia.

Valve, perusahaan pemilik Steam dan DoTA 2, menjalankan strategi penggalangan dana bernama DoTA 2 Asia Championship 2015 Compendium. Setiap pengguna membeli poin Compendium dan 25%-nya masuk ke total hadiah yang akan diberikan kepada para pemenang. Saat penulisan ini, sudah terkumpul lebih dari satu juta dua ratus ribu dolar Amerika!

Setiap orang yang sudah membeli poin Compendium namanya akan berwarna merah, sedangkan kami yang tidak tetap berwarna putih. Dari awal dimulainya Compendium dan sampai hari ini saya bermain, sudah puluhan jam, saya lupa tepatnya, selalu ada pemain Indonesia yang namanya berwarna merah. Padahal, satu DoTA 2 Asia Compendium seharga Rp122.999,00!

Ini bisa jadi sebuah indikasi bahwa orang Indonesia sudah tidak takut lagi bertransaksi daring. Lihat saja, OLX dan berniaga.com saja sudah berani memasang iklan. Hanya saja, saya bayangkan bagaimana sulitnya mempublikasikan hasil karya ke Internet dengan koneksi Internet seadanya dan terkadang diputus-putus. Itu saja masih di pulau Jawa, apalagi daerah luar Jawa.

Kita butuh infrastruktur Internet yang cukup (memadai).

Masa Depan Demokrasi

Tahun 2014 etika jurnalistik benar-benar diuji. Dari tidak berimbangnya media dalam pemberitaan Pemilu 2014 sampai peliputan tidak etis dalam kecelakaan AirAsia. Semua ini bisa menimbulkan stigma di masyarakat bahwa media terlalu bebas.

Bayangkan bahaya laten yang akan muncul. Pemerintah akan punya legitimasi untuk mencekik jurnalistik dengan alasan etika moral. Alasan tersebut menjadi legitimasi sensor terhadap demokrasi dan sensor terhadap fungsi check and balance. Waduh, kolonialisme korporasi, kemiskinan, dan utang yang tiba-tiba mencekik bisa terjadi!

Saya berharap di tahun 2015 ini, yang mana pun wadah aliansi Pers-nya, sama-sama setuju bahwa etika jurnalistik perlu diutamakan. Aliansi Pers boleh bertarung satu sama lain untuk supremasi, tapi lindungilah kebebasan jurnalistik yang ada sekarang.

Pemimpin Indonesia

Saya akhiri 2015 dengan pencapaian yang menarik, Indonesia dipimpin oleh non-militer dengan segudang prestasi. Beberapa menterinya memang patut dipertanyakan. Tetapi, tidaklah rusak susu sebelanga.

Terobosan perubahan mental, kira-kira itu tema yang dia anut. Hasilnya, kebijakan aneh-aneh yang sengaja dibuat untuk menstimulus perubahan mental. Kadang terlalu aneh sampai dibuat parodi, misalnya pernikahan PNS.

Saya setuju. Indonesia adalah negara Republik, dari rakyat untuk rakyat. Artinya, peran serta rakyat tidak berpangku tangan kepada pemerintah. Kita semua punya tanggung jawab masing-masing demi kemajuan bangsa Indonesia.

Mulailah dengan membuang sampah pada tempatnya. 🙂

MERDEKA!

Sistem Smart City Jakarta

Sistem Smart City Jakarta

Tentang

Tanggal 15 Desember 2014 kemarin PEMDA DKI Jakarta menerbitkan aplikasi Smart City Jakarta. Menurut situs tersebut, aplikasi ini adalah

Smart City Jakarta logo Portal Smart City adalah aplikasi yang dimiliki oleh Pemerintah Provinsi DKI Jakarta untuk memberikan masyarakat informasi kondisi Jakarta melalui mitra aplikasi yang bekerjasama dengan Pemerintah Provinsi DKI Jakarta seperti QLUE, WAZE & TWITTER. Portal Smart City akan memberikan informasi yang transparan kepada masyarakat dengan memperlihatkan hasil kinerja pemerintahan Jakarta dalam menangani permasalahan yang ada di Jakarta. Portal Smart City juga dapat membantu masyarakat untuk mengetahui fasilitasi umum untuk dijadikan referensi dan informasi sesuai kebutuhan sehari-hari.

Sesuai dengan penjelasan situs Smart City ini, ada tiga aplikasi yang diintegrasikan oleh Smart City; Qlue, Waze, dan Twitter.

Qlue

Aplikasi Qlue yang dikembangkan oleh TerralogiQ. TerralogiQ adalah perusahaan yang bergerak di bidang solusi pencitraan bumi. Menurut situs TerralogiQ, perusahaan ini salah satu rekanan Google Enterprise yang resmi di Indonesia. Pantas saja aplikasi ini begitu terintegrasi dengan Android dan Google Maps.

Qlue Login Page

Qlue Login Page

Beberapa fitur Qlue yang saya lihat sekilas:

  1. Sistem pelaporan terpadu yang sudah terkategori.
  2. Sistem geotagging terpadu untuk urun daya penandaan tempat-tempat di Jakarta.
  3. Integrasi dengan Google Maps dan Google Street View.
  4. Integrasi dengan login Google dan Facebook.

Pada saat penulisan kali ini, implementasi dengan menggunakan akun Google saya gagal. Padahal, saya melihat bahwa aplikasi ini sudah terhubung dengan Google Play. Ya, sudah, saya tak bisa membahas lebih lanjut. Mungkin nanti saya akan coba lagi.

Waze

Perusahaan yang sudah dibeli oleh Google ini menggunakan pelaporan terpadu dari penggunanya tentang lalu lintas, terutama kemacetan dan penyebabnya. Situs Smart City menggunakan masukan dari API Waze untuk menentukan:

  • Kondisi Lalu Lintas
  • Laporan Macet
  • Laporan Kecelakaan
  • Laporan Bencana Alam

Dengan menggunakan API Waze, data-data pada peta pun lebih kaya. Terutama dari faktor urun daya pelaporan kemacetan di jalan.

Twitter

Peran media sosial ini adalah menyediakan pelaporan waktu-nyata (realtime) dengan menggunakan dua tagar “#banjir” dan “#petajkt” (tanpa tanda petik).

Oh, seandainya kita mau melapor melalui Twitter, dapat langsung membuat sebuah twit publik dengan menggunakan dua tagar tersebut. Berarti nanti aplikasi Smart City akan membaca tagar tersebut dan meneruskannya. Mungkin contoh pelaporan:

#banjir #petajkt ada di Kampung Melayu, setinggi 1 meter.

Sepertinya Pemprov DKI Jakarta harus lebih menyosialisasikan tentang fitur ini. Apakah aplikasi Smart City membaca juga geotag yang disediakan oleh Twitter, saya pun tak tahu. Kalau iya, akan jauh lebih kaya fitur. Artinya Masyarakat bisa saja melaporkan melalui Twitter, bukan terhubung langsung dengan aplikasi.

Dalam hal ini, anonimitas masih bisa dijamin. Skenario ini dicapai misalnya dengan membuat akun sejenis Jonru versi benar dan jujur. Akun anonim ini bisa digunakan untuk melaporkan berbagai hal bila ada warga yang cukup mengerti tentang privasi namun mau ikut berpartisipasi secara anonim.

Analisis Aplikasi

Sepertinya pengembang aplikasi Smart City Jakarta adalah TerralogiQ. Soalnya, situs ini mirip sekali dengan demo produk VMAP yang dimiliki oleh TerralogiQ. Saya, sih, menduga aplikasi ini dibangun dengan menggunakan VMAP dengan kustomisasi tambahan seperti integrasi beberapa aplikasi yang telah disebutkan, ada beberapa yang penting:

  • Pengaksesan CCTV, stasiun Trans Jakarta, dan sejenisnya.
  • Peta bencana seperti tinggi air, kebakaran, dan sejenisnya.
  • Peta pelaporan masyarakat.
  • Integrasi dengan Waze.

Cara pakai

Ada lima kategori menu yang bisa diaktifkan.

  • Laporan Masyarakat (Qlue)
  • Laporan Banjir Peta Jakarta
  • Peta Manajemen Bencana
  • Waze Social GPS Maps & Traffic
  • Informasi Pendukung
  • Destinasi Lokal

Secara baku, pertama-tama situs Smart City hanya menampilkan penanda dari Qlue. Untuk bisa mengaktifkan penanda-penanda tertentu, menu pada logo Jakarta harus diaktifkan. Misalnya, untuk mengaktifkan penanda kebakaran, tanda centang pada item kebakaran harus aktif .

e.g. enable Waze marker for traffics.

e.g. enable Waze marker for traffics.

Setiap penanda pada peta bisa diklik/sentuh untuk mengaktifkan detail kejadian.

A marker detail

A marker detail. (Image resized and reduced to 128-bit color)

Bahkan bisa melihat komentar dari kejadian tersebut. Komentar dari orang lain bisa membuat pelapor merasa dihargai karena telah bersusah payah melapor.

Comments

Interactivity can be a self-rewarding achievement for reporting.

Selanjutnya, saya jabarkan kelebihannya dan kekurangannya.

Kelebihan

Saya hanya menjabarkan empat baris, namun keempat fitur itu adalah sesuatu yang sangat wah. Saya kagum dengan ambisi Pemprov DKI Jakarta dengan aplikasi ini. Ini model yang patut dicontoh oleh pemerintah daerah lainnya.

Penggunaan Waze dan pelaporan aktif membuat partisipasi aktif masyarakat dengan pemerintah. Sistem ini bisa menjadi hub yang menghubungkan antar anggota masyarakat DKI Jakarta dan sekitarnya. Bahkan, seperti dibahas sebelumnya, interaktivitas membuat keterlibatan masyarakat dalam aplikasi ini.

Penggunaan beberapa sistem mengakibatkan kemacetan terpantau lebih efektif. Selama ini Google Map memiliki kekurangan karena terbaharui setiap sekitar 15 menit sampai setengah jam. Dengan CCTV, Waze, dan pelaporan sendiri, diharapkan masyarakat dapat mendapatkan informasi secepat-cepatnya. Ya, setidaknya CCTV memperlihatkan informasi lalu lintas lebih cepat.

Saya baru menggunakan aplikasi ini, tapi saya sudah melihat banyak manfaat seperti adanya pelaporan tempat-tempat tertentu. Saya bayangkan, seandainya di masa depan saya bisa melakukan eksplorasi ke Jakarta dan menemukan tempat-tempat baru yang menarik. Wow! Pariwisata yang menyenangkan.

Kelemahan

Saya harus melihat satu halaman intro yang memuat sebuah gambar berukuran besar sebelum saya bisa menggunakan situs ini. Ah, terkandung sebuah doa bahwa di era Jokowi ini Internet akan menjadi lebih murah dan cepat bagi rakyat Indonesia umumnya dan rakyat DKI Jakarta khususnya. Amin.

Tapi, apakah memang gambar yang hanya 343 KB itu membuat berat?

Saya sudah hitung aset-aset gambar yang ada. Cukup teroptimasi, apalagi menggunakan pelayanan dari Google. Jadi, sebenarnya ukuran gambar seharusnya tidak masalah.

Ternyata, penggunaan Javascript yang disamarkan (obfuscated)-lah yang menambah lama waktu untuk situs ini bisa fungsional. Peramban membutuhkan waktu yang agak lama untuk mengompilasi kode-kode yang sebenarnya dapat dengan mudah dipecahkan bila niat.

Saya membuka aplikasi ini di tiga mesin peramban: Presto (Opera 12.15), Gecko (Firefox 33.0), dan Chromium (Opera Developer 27.0.1683.0 dan Google Chrome 35.0.1912.2). Kesimpulannya:

  • Presto tidak dapat menjalankan Javascript yang tersamarkan sehingga animasi gambar awal mati dan peta berwarna putih. Tapi, newsticker yang ada di bawah dan menu bisa dimuat dan animasinya berjalan.
  • Gecko dapat menjalankan semua fungsi yang saya uji. Namun, animasinya patah-patah. Peramban saya selalu crash ketika saya mengklik salah satu gambar. Padahal, memori komputer saya 16GB.
  • Chromium menjalankan semuanya dengan sempurna. Nampaknya aplikasi ini dibangun untuk Chromium.

Cuma satu kekurangan teknis ini saja, sih. Sisanya aplikasi ini menakjubkan. Terutama, untuk niat baik Pemerintah yang mau membuka diri.

Tampilan Pada Perangkat Pintar

Saya pun menyertakan tampilan situs ini pada peramban LG G2 dengan sistem operasi Android CM12 Lollipop 5.0.1.

Saya lihat tampilan sempurna bila menggunakan peramban pada Android saya. Penanda-penanda dapat dengan jelas dipencet untuk dapat diaktifkan.

Saran

Aplikasi ini sungguh menakjubkan. Namun, untuk penggunaan yang sebenarnya masih ada beberapa perbaikan. Dari analisis sederhana saya, ada dua jenis saran.

Saran Teknis

Berikut saran teknis saya:

  • Hentikan penyamaran Javascript. Lebih baik konsentrasi kepada kestabilan penyediaan layanan dari pada berusaha menyembunyikan kode sumber.
  • Sebaiknya layar utama langsung ke peta. Intro dapat ditaruh ke easter egg atau layar tentang.
  • Gunakan URI yang benar sesuai dengan standar web! [lazy javascript is lazy!]

Contoh penggunaan URI yang benar adalah seperti ini:

http://smartcity.jakarta.go.id/#mitrakerjasama
URI yang menunjukkan laman Mitra Kerja sama, misalnya.
http://smartcity.jakarta.go.id/#@-6.1896744,106.836843,15z
URI yang menunjukkan Stasiun Gondangdia, misalnya.
https://www.google.co.id/maps/@-6.1896744,106.836843,15z?hl=id
Contoh URI yang menunjukkan satu resource Stasiun Gondangdia oleh Google Maps.

 

Saya mungkin bisa saja bilang, tolong jangan bikin Sir Tim Berners-Lee menangis. Tapi, alasan utama mengapa pentingnya penggunaan URI yang benar adalah tempat-tempat dan kejadian dapat direferensikan. Hal ini bisa membuat aplikasi ini berguna. Misalnya, dipakai sebagai referensi oleh orang lain dalam dokumen hukum, blog situs, atau pun sekedar dalam percakapan maya.

Contoh kecilnya, seseorang bisa memanfaatkan lokasi Warung unik pada situs untuk memberitahukan tempat makan unik tersebut sebagai titik berkumpul kepada rekan-rekan lainnya.

Saran Berkelanjutan

Agar proyek ini berkelanjutan dan dapat dikembangkan lebih lanjut, saya berharap:

  • Pemprov DKI telah mengevaluasi kontraknya. Pastikan bahwa kode sumber dan hak milik ada di tangan Pemprov DKI. Bisa jadi alasan utamanya adalah karena aplikasi ini dibiayai dari uang rakyat dan menggunakan data-data dari partisipasi rakyat Indonesia.
  • Nah, seandainya memang milik Pemprov DKI, data-data tersebut sebaiknya dapat dirilis dan diakses oleh pihak ketiga dengan menggunakan API yang terpublikasi. Artinya, sesuai dengan OpenGov, Pemprov DKI menyediakan Smart City API yang bisa dimanfaatkan oleh pihak ketiga.
  • Pihak ketiga yang punya kebutuhan khusus dapat juga diberi akses untuk memperkaya data-data yang ada.
  • Fasilitas anonimitas sebagai syarat pelaporan diakomodasi oleh hukum Indonesia. Alangkah baiknya kalau bisa melaporkan secara anonim secara eksplisit tanpa harus melakukan teknik-teknik tertentu.

Menurut saya, sudah saatnya paradigma penyediaan platform daripada end product. Pemprov mungkin hanya menyediakan data umum untuk kebutuhan spesifik. Tapi, data-data ini bisa jadi sangat berguna untuk suatu kebutuhan unik (niche) yang lain.

Akhir Kata

Aplikasi Smart City sangat menakjubkan. Berhubung baru diterbitkan, wajarlah ada kelemahan di beberapa tempat. Saya sangat mengagumi langkah Pemprov DKI dan berharap Pemerintah Daerah lainnya menyusul dan membentuk konsorsium OpenGov.

Oh, iya, kepada pengembang, selamat! Aplikasi Anda bagus.

~lolImHavingGoosebumps

Bacaan Lebih Lanjut

[CM12][Lollipop] Temasek Source for LG G2

I won’t bother translate my writing into Bahasa Indonesia. This is seriously experimental and could brick said device. Besides, I’m speed writing to myself.

I stopped using MIUI because of the new Lollipop. The battery life was not that long, one day only, with the last MIUI built. There were too many wake up locks and I was seeing packets being sent to servers.

That being said, MIUI impressively blocked short message ads. I was not getting any short message ads at all. I realized that after I changed my ROM. The short messages returned.

Anyway, moving on to Cyannogen Mod 12 (CM12), I’ve tried many CM12 ROMs. The CM12 build that lasted for me is Resurrection Remix 2.2.1 build. But, after Temasek built, AlegenMod, was released today, I’m wavering to that ROM. Simply because it has the richest feature as of right now.

Here’s the procedure for every CM12 I’ve installed. The different only in ROM’s ZIP. Everything is practically the same.

  1. Advance Wipe deleting system, apps, cache and dalvik cache. Basically, everything but the Internal Storage.
  2. Install ROM zip, e.g. AlegenMod.
  3. Install GApps zip, I chose Micro GAPPS from PA.
  4. Install RenderBroken kernel zip.

After the first reboot to the system, I installed these packages:

  1. Synapse, a kernel configurator. This is mandatory. My LG G2 was hotter (in temperature, obviously) and the battery depleted faster  without this one.
  2. F-Droid, a Free/Open Source Software market.
  3. AdAway, an ad blocker that could only be installed from F-Droid. Hey, I’ve paid my connection! I won’t pay those bytes for downloading ads.
  4. ZXing, the ultimate barcode reader.
  5. Spirit2 experimental built for FM radio. Do note that this is experimental. I had to wait for about 15 seconds to turn it ON/OFF. Meaning, you have to wait for 15 seconds every time you turn the button ON/OFF.

A shout out to an app: Alkitab by YUKU, the best Bible software in Android. He was banned from Google Play for no particular reason. Oh, wait, just found out he is now uploading the new Alkitab as Alkitab SABDA in Google Play with different publisher name. Still, I’m using the original Alkitab 4.0 BETA 11. 😛

What’s missing now is the IR blaster software. Everything else is ready for daily driver.