Quantcast
Channel: Ade Malsasa Akbar
Viewing all 165 articles
Browse latest View live

Bagaimana Menulis Artikel Linux yang Sederhana

$
0
0

Bismillahirrahmanirrahim.

kate

Kadang kita berpikir terlalu rumit untuk menulis tutorial. Sebenarnya tutorial itu tidak perlu megah. Catatan pribadi Anda untuk menyelesaikan 1 masalah di Linux itu sudah disebut tutorial. Cukup kembangkan kerangka karangan ini:

  1. Judul
  2. Perkenalan (misal: apa itu wvdial)
  3. Cara (misal: saya ketik ini maka itu)
  4. Gambar (skrinsot)
  5. Referensi (jika ada)

maka jadilah sebuah tutorial. Sama sekali tidak sulit. Kadang tutorial disebut dengan nama lain semisal panduan, guide, cara, dan sebagainya. Menulislah dengan hati maka jadi. Semoga catatan ini bermanfaat.


Filed under: Linux

Panduan Ringkas Apt-Get

$
0
0

Bismillahirrahmanirrahim.

Tulisan ini tersedia dalam PDF

synapticTulisan ini adalah panduan penggunaan apt-get secara ringkas agar Anda dapat langsung menggunakan Ubuntu ketika pertama mengenalnya. Tulisan ini hanya berisi daftar perintah APT, penjelasannya, gambar-gambarnya, kemudian daftar error beserta solusinya. Dengan tulisan ini, Anda diharapkan mengerti secara gamblang sistem instalasi aplikasi di Ubuntu dengan apt-get. Semoga tulisan ini bermanfaat untuk Anda.

1. Sekilas Kebutuhan apt-get

start-here

Apa saja yang pasti ada dalam instalasi aplikasi di Ubuntu?

  1. Repositori (server yang berisi paket-paket program).
  2. Paket program (formatnya .deb, seperti .exe di Windows).
  3. Internet, atau media yang menyampaikan apt-get kepada repositori.

2. Sekilas Istilah-Istilah Penting

bookmarks1

Apa saja istilah yang harus Anda ketahui supaya mengerti penjelasan ini?

  1. Paket = program = aplikasi. Biasanya, ada sedikit perbedaan nama untuk aplikasi dan paket. Misalnya, nama aplikasinya LibreOffice, tetapi nama paketnya libreoffice. Di sini, yang selalu digunakan adalah nama paket.
  2. Dependensi. Paket-paket yang dibutuhkan oleh paket yang akan kita instal. Inilah inti pekerjaan APT dan dengan sendirinya inti penjelasan tulisan ini.
  3. DEB. Format nama paket di Ubuntu adalah .deb layaknya .exe di Windows.
  4. Indeks. Daftar isi repositori.

3. Skema Metode Instalasi Aplikasi di Ubuntu

Metode instalasi aplikasi di Ubuntu berbeda dengan Windows. Lihat gambar skema ini.

skema-apt2

Skema di atas menjelaskan alur instalasi program di Ubuntu ketika pengguna baru saja selesai memasang Ubuntu di komputernya. Berikut keterangannya.

1. & 2. apt-get mengambil indeks repositori (online).
3. Pengguna meminta instal satu paket kepada apt-get (offline).
4. apt-get mencari paket di dalam indeks (offline).
4. apt-get membuat daftar URL unduhan paket-paket dari indeks (offline)
5. apt-get berangkat mengunduh seluruh URL itu (online).
6. apt-get menginstal semua hasil unduhan itu (offline).

Saya bagi skema di atas berdasarkan tahapan-tahapan, koneksi, langkah kerja, dan legenda. Ada 6 tahapan kerja inti pada instalasi aplikasi di Ubuntu. Silakan cermati skemanya. Kemudian, ada kondisi offline dan ada kondisi online ketika instalasi. Kemudian, saya meletakkan pembagian langkah kerja menjadi 2 bagian besar yakni mendapatkan dependensi dan menginstal dependensi. Inilah pembagian terpenting dalam skema, inti dari sistem instalasi di Ubuntu yang aslinya memang hanya 2 langkah. Ini diletakkan supaya Anda paham betul bagaimana alur kerja apt dan nantinya pemahaman 2 bagian besar ini akan berguna untuk menginstal aplikasi di Ubuntu secara offline.

Perhatikan bahwa indeks repositori sangat penting. Tanpanya, apt-get tidak bisa melakukan instalasi aplikasi (nomor 4, 5, 6). Indeks ini berisi daftar URL lengkap dari seluruh isi server yang berupa paket-paket .deb. Indeks ini sejatinya adalah berkas-berkas teks biasa yang berada di folder /var/lib/apt/lists/. Jadi, APT bisa menginstalkan aplikasi untuk kita itu, dengan membaca indeks ini. Tentulah untuk membaca, indeks harus ada terlebih dulu. Maka tahap 1 dan 2 inilah cara memperoleh indeksnya. Tahap 1 (sudo apt-get update) hanya perlu dilakukan 1 kali untuk berapa kali pun dilakukan tahap setelahnya. Bisa dikatakan, Anda hanya perlu melakukan tahap 1 sekali untuk seumur hidup. Ini berlaku jika Anda hanya menggunakan 1 repositori saja (tidak mencampurnya dengan repositori lain) dan tidak menggantinya.

4. Dasar Umum Metode Instalasi di Linux

system-run

Setelah Anda mencermati skema di atas, Anda masih perlu memahami metode dasar instalasi aplikasi di Linux secara garis besar. Metode yang ringkas ini ada di seluruh distro Linux dan menjadi dasar juga bagi APT. Perhatikan ini.

  1. Mengambil dependensi.
  2. Menginstal dependensi.

Itulah yang terjadi pada seluruh kegiatan instalasi aplikasi di Linux apa pun. Hanya saja, tiap distro memiliki manajer sendiri-sendiri. Kebetulan, di Ubuntu manajernya bernama APT dan akan dibahas pada tulisan ini. APT sendiri bekerja berdasarkan 2 metode ini. Dan dengan mengatahui ini, Anda akan memahami nantinya cara menginstal aplikasi Ubuntu tanpa internet.

5. Dasar Metode Instalasi APT

system-run

Setelah skema dan dasar umum di atas, Anda masih perlu memahami dasar metode APT menginstal suatu aplikasi. Dengan ini diharapkan Anda paham 2 pekerjaan inti APT sehingga mampu menyelesaikan masalah instalasi sendiri.

Untuk Metode Umum 1 – Mendapatkan Dependensi

  1. APT mengambil paket yang kita minta sekaligus dependensinya dari server. Ini dilakukan dengan sudo apt-get install.
  2. Untuk itu, sebelumnya APT memerlukan daftar isi server yang dituju. Ini diatur oleh indeks yakni berkas-berkas di dalam folder /var/lib/apt/lists/.
  3. Untuk itu, sebelumnya APT harus dikonfigurasikan dulu ke server mana (Indonesia atau luar negeri) dia menuju. Ini diatur dengan berkas teks /etc/apt/sources.list.
  4. Untuk memperoleh nomor 2, kita melakukan sudo apt-get update.
  5. Untuk mengatur nomor 3, kita harus menyunting isi teks sources.list entah secara manual atau otomatis dengan bantuan aplikasi lain.
  6. APT mampu mencari dependensi secara tepat 100% di dalam server karena memiliki indeks lalu mengunduh semua dependensi ke dalam folder unduhan yakni /var/cache/apt/archives/.

Untuk Metode Umum 2 – Menginstal Dependensi

  1. APT menyuruh DPKG untuk menginstal dependensi-dependensi yang diperlukan di dalam folder unduhan yakni /var/cache/apt/archives/.
  2. DPKG menyimpan informasi apa pun yang diinstal maupun diuninstal ke dalam berkas teks /var/lib/dpkg/status.

Perlu diperhatikan dengan sangat, berkas status ini. Berkas status ini penting. Berkas inilah yang menyebabkan APT dapat menentukan dependensi-dependensi apa saja untuk Ubuntu kita. Berkas ini akan berguna untuk memecahkan permasalahan instalasi tanpa internet.

6. Daftar Perintah APT

application-vnd.ms-excel

Berikut ini tabel berisi perintah-perintah APT yang pasti akan Anda gunakan. Gantilah <namapaket> dengan nama aplikasi yang ingin diinstal menurut nama paketnya.

Perintah Keterangan Contoh Hasil
sudo apt-get update Ini adalah perintah untuk memperoleh indeks dari server repositori. sudo apt-get update Indeks pada folder indeks Anda akan disesuaikan dengan server yang dipilih di sources.list. Misalnya jika sources.list memilih server UI, maka indeks akan berisi daftar URL dari server UI juga. Perintah ini tidak akan meng-update atau meng-upgrade sistem, juga tidak menambah suatu paket baru.
sudo apt-get install <namapaket> Ini adalah perintah untuk mengunduh dan menginstal suatu aplikasi. sudo apt-get install gimp Aplikasi GIMP diunduh dari server yang ditentukan oleh sources.list lalu diinstal di Ubuntu. Anda bisa membukanya dari menu Ubuntu.
sudo apt-get remove <namapaket> Ini adalah perintah untuk menghapus suatu paket. sudo apt-get remove gimp Aplikasi GIMP dihapus dari sistem Ubuntu tetapi hanya paket gimp itu saja, dependensi gimp –yang ikut ketika gimp diinstal– tidak ikut dihapus.
sudo apt-get autoremove <namapaket> Ini adalah perintah untuk menghapus suatu paket beserta dependensinya. sudo apt-get autoremove gimp Aplikasi GIMP dihapus dari sistem Ubuntu beserta dependensi-dependensinya (dependensi yang ikut kala gimp diinstal).
sudo apt-get purge <namapaket> Menghapus suatu paket beserta berkas-berkas yang dibuatnya di dalam sistem. sudo apt-get purge gimp Aplikasi GIMP dihapus beserta berkas-berkas konfigurasinya (misalnya Recent FilesPreferencesBrushes, dsb.)
sudo apt-get upgrade Meng-upgrade seluruh aplikasi di dalam Ubuntu. sudo apt-get upgrade Seluruh aplikasi di dalam Ubuntu menjadi versi terbaru. Namun versi Ubuntu tidak ikut naik tingkat, 12.04 tetap 12.04.
sudo apt-get -f install Melakukan fix broken packages jika terjadi kesalahan instalasi di sistem. sudo apt-get -f install Hasilnya sama dengan menjalankan menu Fix Broken Packages dari Synaptic Package Manager. Jika ada kerusakan dependensi di Ubuntu, maka akan dicarikan solusi dan APT akan meminta internet untuk menyelesaikannya. Setelahnya, insya Allah semua masalah broken packages akan selesai.

7. Daftar Error APT dan Solusinya

application-vnd.ms-excel

Berikut ini daftar error dari APT maupun DPKG yang dapat saya temukan dengan Google beserta solusinya. Perlu diingat, saya tidak menjamin solusi yang ada 100% berhasil pada masalah Anda. Di sini, posisi saya hanya mengusahakan solusi. Selebihnya, silakan Anda mencari sendiri. Jika Anda mengetahui solusi-solusi lain, silakan hubungi saya.

Error Arti Error Solusi
E: Unable to locate package libraoffice
  1. Anda salah mengetik nama paket.
  2. Anda mengetik nama paket yang tidak ada dalam indeks.
  1. Periksa nama paketnya.
  2. Lakukan sudo apt-get update. Jika tidak ketemu juga, googling dengan pesan error itu sebagai kata kunci.
E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
Anda menjalankan dua aplikasi APT bersamaan. Biasanya satu di Terminal dan satu lagi Ubuntu Software Center. Tutup salah satunya.
dpkg: error: parsing file ‘/var/lib/dpkg/status’ near line 12345 package ‘indicator-displex’:
blank line in value of field ‘Description
Ada kesalahan pada berkas status. http://askubuntu.com/questions/126322/how-do-i-fix-dpkg-errors-after-a-failed-upgrade
(Reading database … dpkg: unrecoverable fatal error, aborting:
unable to open files list file for package `libtheora0′: Input/output error
E: Sub-process /usr/bin/dpkg returned an error code (2)
Ada masalah pada berkas status, pada bagian libtheora0. http://ubuntuforums.org/showthread.php?t=1232143
Errors were encountered while processing:
/var/cache/apt/archives/libjack-jackd2-0_1.9.8~dfsg.2-1precise1_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ada kesalahan pada salah satu paket dependensi, dalam hal ini libjack-jackd2-0_1.9.8~dfsg.2-1precise1_i386.deb http://askubuntu.com/questions/171205/file-is-different-from-the-same-file-on-the-system
dpkg: unrecoverable fatal error, aborting: reading files list for package ‘inkscape’: Input/output error E: Sub-process /usr/bin/dpkg returned an error code (2) Ada kesalahan pada berkas status. http://stackoverflow.com/questions/18602257/sub-process-usr-bin-dpkg-returned-an-error-code-2
dpkg: unrecoverable fatal error, aborting:
files list file for package ‘libopenal1:i386′ is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)
Ada berkas .list yang rusak dan harus dihapus. http://forums.linuxmint.com/viewtopic.php?t=109725&f=34
W: GPG error: ftp://ftp.debian.org/ testing Release:
The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 010908312D230C5FW: There is no public key available for the following key IDs:
010908312D230C5F
Bukan error penting, hanya GPG key yang belum terpasang. Diabaikan pun tidak masalah. http://en.kioskea.net/faq/809-debian-apt-get-no-pubkey-gpg-error

8. Instalasi Aplikasi Secara Offline

ktip

Karena kebanyakan pengguna Linux di Indonesia kesulitan masalah internet, maka perlu sekali dituliskan metode instalasi aplikasi secara offline. Metode ini mirip cara kita kala menginstal aplikasi Windows biasanya yakni ke warnet untuk mengunduh installer lalu pulang menginstalnya. Seperti yang saya tekankan di atas, ada 2 hal pokok dalam instalasi aplikasi di Ubuntu. Berikut ini saya tekankan lagi.

  1. Mendapatkan dependensi.
  2. Menginstal dependensi.

Dua hal ini berlaku untuk instalasi aplikasi secara online juga secara offline. Maka sekarang tersisa pertanyaan: bagaimanakah cara mendapatkan dependensinya? Jawabannya adalah dengan memanfaatkan kemampuan APT itu sendiri untuk mencari dependensi secara 100% tepat dengan memakai berkas status dan berkas indeks. Bagaimana caranya? Caranya dengan perintah khusus. Berikut ini saya jabarkan langkah-langkahnya.

8.1. Mendapatkan Dependensi

sudo apt-get --print-uris --yes install abiword | grep ^\' | cut -d\' -f2 > abiword.txt

Maksud perintah di atas adalah memperoleh URL-URL dependensi dari program Abiword lalu dituliskan ke dalam teks abiword.txt. Berikut ini contoh isi abiword.txt dari Ubuntu saya.

pengantar-avr-linux-ii70

Lihatlah. Ini cara yang sama ketika APT melakukan langkah 4 dan 5 dalam skema kita di atas. Karena APT memiliki URL-URL dependensilah dia bisa mengunduhnya lalu menginstal. Sekarang sama dengan Anda. Dapatkan URL-URL dependensinya lalu pergilah ke warnet untuk mengunduh seluruh URL dalam abiword.txt itu. Gunakanlah download manager macam Uget yang bisa mengunduh seluruh URL dalam 1 berkas TXT secara otomatis ke dalam flash disk. Simpan ke dalam 1 folder dan berilah nama sesuai paketnya, misalnya. Bawa pulang.

pengantar-avr-linux-ii71

8.2. Menginstal Dependensi

  1. Pindahkan folder tadi ke Home Anda.
  2. Gunakan Terminal, pindah ke folder tadi.
  3. sudo dpkg -i *.deb
  4. Tunggu sampai instalasi selesai.

Empat langkah ini sama saja dengan APT pada langkah 6 pada skema kita di atas. Langkah 8.1 sampai 8.2 ini bisa dilakukan dalam kurun waktu kurang dari 30 menit saja.

9. Penutup

system-shutdown

Tulisan ini bagaimanapun hanyalah panduan ringkas. Tulisan ini tidak membahas apt-get di belakang proxy server, atau pengaturan alias, atau perintah-perintah APT lanjutan. Diharapkan dengan adanya tulisan ini, para pembaca yang berpengalaman dapat menulis tulisan yang belum ada itu. Tulisan ini terinspirasi dari referensi nomor 2 di bawah. Semoga tulisan ini menjadi panduan terbaik untuk pemula dalam hal instalasi program.

10. Referensi

  1. http://www.webupd8.org/2009/11/get-list-of-packages-and-dependencies.html
  2. http://wiki.ubuntu-id.org/AptGetHowTo

Filed under: Linux

Sosialisasi Linux untuk Indonesia

$
0
0

Bismillahirrahmanirrahim.

devhelp gimp openofficeorg3.0-writer1 scribus softwarecenter vim

Tulisan ini tersedia dalam PDF.

Anda bersemangat menyebarkan Linux kepada masyarakat? Ingin realisasikan Indonesia belajar Linux? Saya punya beberapa hal yang mungkin berguna. Tulisan ini dibuat dari sudut pandang saya sebagai warga Indonesia biasa dan sebagai newbie. Semoga tulisan ini bermanfaat.

ubuntu-baterai-penuh
1. Pegangan Dasar

Lebih baik serius mengurusi yang sudah ada daripada bersusah payah merengkuh yang belum ada tapi tidak punya niat.

2. Poin-Poin Penting Sosialisasi Linux Kepada Masyarakat

  1. Jika ada orang yang sudah jelas mau menggunakan Linux dari dalam hatinya dan sudah sampai menginstal, lalu ada orang yang tidak punya niat bahkan menolak nasihat Anda untuk menggunakan Linux, maka alihkan perhatian dan tenaga Anda untuk mengurus orang jenis pertama. Tinggalkan dan lupakan orang jenis kedua.
  2. Dengan poin pertama, maka kalau ada orang yang jelas-jelas berniat baik bertanya soal instalasi Linux (walaupun remeh temeh), itu lebih baik Anda jawab daripada Anda mengurusi orang-orang yang jelas-jelas menentang pemakaian aplikasi legal di seantero Indonesia.
  3. Dengan poin pertama dan kedua, kalaupun Anda capek, lebih baik capek dalam mengurusi orang yang sudah jelas niatnya daripada Anda hancur sia-sia meneriaki orang yang sudah jelas tidak mau meninggalkan pembajakan.
  4. Dengan semua poin di atas, lebih baik Anda fokus pada jumlah yang sedikit tapi niat daripada Anda seminar, ceramah, teriak-teriak, ngotot, menulis buku, dan sebagainya kepada jumah yang banyak tetapi tidak niat, tidak punya iktikad baik memakai open source software/aplikasi legal.
  5. Oleh karena itu, karena jumlah yang niat itu masih minoritas dan semuanya newbie, maka bersiap-siaplah fokus mengajar para newbie yang sudah ada dan akan selalu muncul di komunitas sambil bertanya perkara-perkara sepele.
  6. Oleh karena poin 5, maka mulailah saat ini mengusahakan solusi-solusi di Linux apa pun yang Anda mampu. Ini akan saya jelaskan di bagian berikutnya.

3. Permasalahan Sosialisasi

Ini perlu dituliskan sebagai pijakan untuk mengarahkan tenaga kita dalam sosialisasi ini. Tabel permasalahan ini saya susun berdasarkan permasalahan paling besar.

Nomor Masalah
1 Mayoritas orang di Indonesia tidak tahu kalau membajak program komputer itu tidak boleh[1].
2 Mayoritas pengguna komputer di Indonesia menggunakan sistem operasi + aplikasi bajakan, dan mayoritasnya masih tidak mau menggunakan aplikasi legal (baik membeli atau pilih Linux). Sisanya tidak tahu apa-apa masalah ini.
3 Masyarakat hanya tahu solusi-solusi ala Windows secara mutlak.

4. Pemetaan Solusi

Berikut ini tabel masalah dan solusinya dalam sosialisasi Linux di Indonesia. Semua isi tabel diusahakan berasal dari diri saya sendiri. Bukan untuk mengajak kepada diri saya, tetapi semata hanya usaha memberi contoh. Harus sumbut.

Nomor Masalah Solusi
1 Masyarakat tidak tahu cara menggunakan Linux Diadakan panduan-panduan cara menggunakan Linux baik secara global maupun khusus.
2 Masyarakat tidak mengenal Linux
  1. Diketahui dahulu bahwa masalah utamanya lebih kepada masyarakat tidak mengetahui apa saja yang bisa dilakukan dengan Linux.
  2. Diadakan aplikasi yang crossplatform, yang mengenalkan Linux tetapi bisa dijalankan di Windows. Lebih bagus lagi kalau dibuat juga versi mobileContoh: Otodidak.
  3. Diadakan solusi teknologi yang “memaksa” pengguna untuk menggunakan Linux. Contoh: Slitaz yang mampu me-recover sandi Windows yang terlupa.
  4. Disebarkan kepada pengguna Windows, tulisan-tulisan yang berisi gambar tampilan antarmuka Linux yang estetis seperti KDE, DDE, GNOME Shell, dan Tiling Window Manager. Contoh: artikel berseri Belajar Menggunakan KDE.indahnya-kde-i
  5. Diperbanyak skrinsot dalam setiap tulisan mengenai Linux. Contoh: ulasan openSUSE.
3 Aplikasi-aplikasi Linux yang tidak seperti padanannya di Windows baik dari segi kelengkapan fitur maupun kompatibilitas
  1. Diketahui dulu bahwa secara umum aplikasi padanan di Linux itu sudah cukup memenuhi kebutuhan mayoritas pengguna komputer di Indonesia.
  2. Diketahui dulu bahwa masyarakat tidak mengetahui secara umum fitur-fitur aplikasi padanan di Linux itu sudah sama (bahkan pada beberapa kesempatan melampaui lawannya di Windows).
  3. Diadakan penghargaan terhadap kreativitas dalam bidang ini.
  4. Diadakan panduan-panduan khusus yang membahas aplikasi padanan di Linux secara komprehensif sehingga tampak jelas bagi masyarakat aplikasi A sama dengan B di Windows dan seterusnya. Lalu, panduan ini diberikan kepada masyarakat luas. Contoh: artikel Kate pengganti Codevision AVR.atmega-avrdude-ubuntu14
  5. Diadakan aplikasi-aplikasi baru yang fiturnya sama atau melebihi aplikasi padanannya di Windows. ContohShutter.
  6. Diadakan solusi kreatif dalam satu bidang, misalnya solusi kreatif dalam hal dokumen yang menyimpang dari keumuman tetapi justru menarik. Contoh 1: menulis tutorial dengan LaTeXContoh 2: membagikan tutorial-tutorial yang ditulis dengan LaTeX. Contoh 3: membagikan skrinsot Texmaker/Gummi yang sedang dipakai menulis.texmaker-latex
4 Masyarakat tidak tahu fitur aplikasi di Linux demikian luar biasa
  1. Jangan diam saja, mulailah menulis tulisan mengenainya. Contohpengganti EAGLE Proteus Multisim di Linuxpengantar-avr-linux-ii3
  2. Ditulis kumpulan aplikasi yang paling bagus dalam 1 bidang tertentu, misalnya keamanan informasi.
5 Masyarakat tidak tahu aplikasi pengganti di Linux sebagaimana yang mereka pakai di Windows
  1. Jangan diam saja, mulailah menulis  tulisan mengenainya. Tulisan harus disusun sedemikian rupa supaya orang langsung paham dalam sekali lihat bahwa aplikasi A di Windows bisa diganti dengan B di Linux. Contoh 1IDM di LinuxContoh 2Matlab di LinuxContoh 3CorelDRAW di Linuxkget-ilmoe
  2. Disebarluaskan tulisan-tulisan yang membahas aplikasi pengganti baik tulisan itu sifatnya umum ataupun khusus.desain-inkscape-stiker
6 Masyarakat tidak tahu memulai dari distro apa
  1. Dituliskan 1 rekomendasi distro untuk pemula. Contoh: artikel panduan memilih distro.
  2. Disepakati 1 rekomendasi saja jika ada masyarakat bertanya. Selainnya dikesampingkan dahulu.
7 Masyarakat tidak tahu bagaimana melakukan pemrograman di Linux
  1. Diketahui dulu bahwa Linux adalah taman ria bagi setiap programer. Segala kebutuhan pemrograman akan terpenuhi di Linux.
  2. Diketahui dulu bahwa pemrograman yang dilakukan di Windows seluruhnya bisa dilakukan di Linux.
  3. Ditulis artikel pengantar pemrograman di Linux yang jelas menampakkan bahwa orang bisa memrogram di Linux. Contoh 1pengantar CContoh 2pengantar pemrograman GUIContoh 3pengantar pemrograman Qt C++.pemrograman qt
  4. Ditulis artikel berseri pemrograman tertentu di Linux. Harus disertai kode sumber dan skrinsot. Contoh: pemrograman qt 10.
  5. Disebarluaskan kode-kode sumber yang dibuat dengan Linux supaya nyata rasanya bagi masyarakat.
8 Masyarakat tidak tahu hal-hal spesifik di Linux
  1. Diketahui dulu bahwa inilah sebab pertanyaan-pertanyaan yang muncul di semua forum.
  2. Dijawab dengan baik jika mereka bertanya.
  3. Dituliskan artikel mengenai konfigurasi tertentu di Linux. Contoh: mengatur kecerahan layar.
  4. Disebarluaskan artikel konfigurasi kepada masyarakat yang kebetulan memerlukannya. Contoh: simpan URL di KNotes lalu paste kepada setiap warga forum yng bertanya mengenainya.

texmaker-latex17  texmaker-latex18

texmaker-latex19

9 Masyarakat kesulitan masalah modem di Linux
  1. Dibuatkan aplikasi otomasi modem, bisa mengonfigurasikan modem tipe 1, 2, 3[2] secara otomatis. Contoh: Modem Manager GUI.
  2. Dibuatkan 1 web khusus menangani modem dari segala merek segala tipe. Disertakan tutorial, software-software, dan tulisan-tulisan mengenai modem di Linux. Contoh: http://modemlinux.wordpress.com.
  3. Direkomendasikan modem-modem tipe 1 untuk masyarakat yang belum punya modem. Contoh: HUAWEI EC1261-2.
  4. Ditulis skrip-skrip otomasi instalasi modem spesifik. Contoh: pahe.tar.gz dari Erdinote.
10 Masyarakat kesulitan masalah printer di Linux
  1. Dibuatkan aplikasi otomasi printer, bisa mengonfigurasikan printer apa saja dengan sekali klik. Contoh: belum ada.
  2. Dibuatkan 1 web khusus printer di Linux yang berisi driver beserta tutorialnya.
  3. Direkomendasikan printer yang kompatibel 100% dengan Linux kepada seluruh masyarakat.
  4. Dikirimkan surat kepada produsen printer supaya merilis drivernya untuk Linux.
  5. Dituliskan skrip-skrip otomasi instalasi printer spesifik. Contoh: belum ada.
  6. Dibuatkan driver printer untuk Linux. Contoh: tawarkan ini untuk mahasiswa informatika atau elektro atau embedded system yang bertanya ide skripsi.
11 Masyarakat kesulitan membaca tutorial dalam Bahasa Inggris
  1. Dituliskan ulasan aplikasi kamus Inggris-Indonesia di Linux. ContohStardict.
  2. Diterjemahkan tutorial-tutorial paling penting ke Bahasa Indonesia. Contoh: Tutorial Shell Dasar 5 Menit.
  3. Disebarluaskan tutorial terjemahan kepada orang-orang yang memerlukannya.
  4. Dijawab dengan baik pertanyaan-pertanyaan masyarakat yang kesulitan kata kunci atau istilah teknikal dalam artikel berbahasa asing.
12 Masyarakat tidak PEDE menggunakan Linux
  1. Proof of concept bahwa Linux mampu. Contoh: http://desaininkscape.wordpress.com.
  2. Perbanyak proof of concept yang benar-benar berkualitas.
  3. Dua proof of concept di atas harus dilakukan di atas Linux.
13 Masyarakat kesulitan dalam hal instalasi aplikasi yang selalu meminta internet
  1. Dibuatkan solusi sistem yang out of the box untuk menyelesaikan masalah semua orang. Contoh 1http://apt-web.dahy.atContoh 2KeryxContoh 3Cube.
  2. Dibuatkan tulisan untuk menerapkan solusi out of the box itu supaya masyarakat bisa menginstal aplikasi secara offline. Contoh: cara menggunakan apt-web.
  3. Dibuatkan tulisan untuk memahami metode instalasi secara offline ATAU memperkenalkan metode baru dalam instalasi secaa offline yang lebih pasti. Contoh: panduan ringkas apt-get.

5. Langkah-Langkah yang Salah

Berikut ini tabel daftar kesalahan sosialisasi Linux yang pernah saya lakukan. Ini diberikan agar Anda tidak mengikutinya.

Nomor Kesalahan Alasan
1 Mendirikan web Linux yang “berdiri di atas semua golongan” (Ubuntu, Mint, Mandriva, Slackware, FreeBSD, dkk.) alih-alih yang spesifik 1 distro saja. Ini akan merugikan Anda sendiri dari segi waktu, biaya, dan tenaga. Contoh: Teknoplasma. Yang namanya “berdiri di atas semua golongan” itu adalah mustahil dan sebuah kekeliruan. Kalaupun bisa Anda mendirikan, itu tidak akan bertahan lama. Portal itu butuh kontributor. Sedangkan pengguna Linux sendiri masih minoritas, lalu yang berkompetensi menulis hanya segelintir, itu pun masih dihambat oleh kepentingan-kepentingan. Maka keliru jika membuat web Linux untuk semua distro.
2 Memaksa semua pihak untuk menggunakan Linux. Misalnya terlalu bersemangat menyosialisasikan sampai tidak mau tahu keadaan orang, apakah dia itu awam atau tidak. Apakah orang itu mengerti atau tidak, semua di-gradak harus pakai Linux saat itu juga. Contoh: diri saya sendiri pada masa lalu. Masyarakat kita bertingkat-tingkat pemahamannya, tidak satu tingkat saja. Sosialisasi diberikan sesuai daya tangkap masyarakat.
3 Memaksa orang untuk menggunakan Linux tetapi tidak mau mengajarinya atau menyuruh belajar sendiri tanpa melihat usia dan daya tangkap orangnya. Contoh: diri saya sendiri pada masa lalu. Masyarakat kita berbeda-beda jenjang usianya, tidak bisa disamaratakan.
4 Memaksa orang untuk menggunakan Linux tanpa memberi mereka kebebasan memasang antarmuka Windows (misalnya GNOMEXP) dengan alasan kamu harus tinggalkan Windows 100%. Contoh: diri saya sendiri pada masa lalu. Orang yang baru datang ke suatu tempat, harus beradaptasi dahulu dengan masyarakat dan keadaan tempat itu. Sama halnya dengan perkara ini. Seharusnya justru pengguna didukung untuk memakai antarmuka mirip Windows terlabih dahulu lalu diajari perlahan-lahan. Di sini yang salah jelas pelaku sosialisasinya.
5 Fanatik Linux. Kalau tidak Linux tidak mau. Contoh: dengan percaya diri meyakini semua hal bisa dilakukan di Linux tanpa butuh Windows dan aplikasinya sedikit pun. Subjektivitas penilaian yang bodoh. Linux tidak sempurna. Linux desktop, setidaknya saat ini, belum secara sempurna didukung oleh seluruh vendor hardware dan software dunia sedangkan Windows sudah sejak lama. Contohnya saja perusahaan Autodesk, perusahaan perangkat wifi Broadcom, ATI dan NVIDIA, bahkan perlengkapan ngoprek Android pun yang terlengkap malah ada di Windows. Linux tidak sempurna, Linux hanyalah bagian dari dunia ini. Tidak ada fanatisme padanya, pada Windows, dan pada yang lain dari dunia ini.
6 Berlomba-lomba membuat distro baru alih-alih membuat aplikasi yang dibutuhkan masyarakat. Saya tidak pernah melakukannya tetapi pernah mendukung yang semacam ini. Sebuah kekeliruan. Masyarakat kita sebenarnya tidak pernah membutuhkan OS, mereka butuh aplikasi. Lagipula, membuat distro baru = membuat OS baru. Membuat OS itu butuh nama dan duit. Makan waktu lama dan sumber daya terlalu banyak, hasilnya pun lebih sering tidak berguna. Ujung-ujungnya berhenti sia-sia. Contoh: SolusOS, Pear OS, Onebase, Xnuxer, GarudaOS.
7 Merasa hebat dan meremehkan saingan (Microsoft dan Apple). Mereka punya duit, kekuasaan, massa yang banyak dan loyal, dan dukungan vendor yang lengkap. Tambah lagi, pengalaman profesional yang solid selama puluhan tahun. Kita?

6. Penutup

Jika Anda telah mengetahui kekurangan masyarakat itu di sisi mana saja, maka Anda bisa menyediakan solusinya dengan tepat. Semoga tulisan ini bermanfaat.

7. Tentang Tulisan Ini

Tulisan ini bagaimanapun adalah kepanjangan tangan dari esai-esai saya sebelumnya masalah sikap kepada newbie. Baik itu menyoal kebebasan, masalah user friendliness, masalah kemajuan,  dan lain-lain. Tulisan ini sifatnya cuma saran untuk Anda yang sedang melakukan sosialisasi. Saya senang jika masyarakat Indonesia menggunakan Linux tetapi kasihan kepada orang-orang yang terlalu ngotot melakukan ini. Terlalu ngotot sampai kepada newbie yang niat pun sikapnya keras. Oleh karena itu saya menulis ini. Tulisan ini tidak ditutup kemungkinannya untuk direvisi pada masa mendatang.

8. Rujukan

[1] http://www.darussalaf.or.id/fatwa-ulama/hukum-membajak-program-komputer-dan-semisalnya/

[2] http://modemlinux.wordpress.com/klasifikasi-modem/


Filed under: Linux

Aplikasi Editor Pemrograman di Linux

$
0
0

Bismillahirrahmanirrahim.

devhelpButuh pengganti DevC++ atau Microsoft Visual Studio di Linux? Bertanya-tanya apa bisa Eclipse diinstal di Linux? Ingin tahu programer Linux biasanya memakai editor apa? Tulisan ini saya adakan untuk menjawab semua itu. Saya berusaha menuliskan editor (termasuk IDE) pemrograman apa saja yang ada di Linux baik yang hanya dibuat untuk Linux maupun yang crossplatform (ada di semua OS). Saya membagi tulisan ini jadi dua, satu untuk editor yang crossplatform dan satu untuk editor khusus Linux. Saya berharap Anda memiliki gambaran jelas bagaimana pemrograman di Linux setelah membaca tulisan ini. Semoga tulisan ini bermanfaat.

resized_ide-linux

Selayang Pandang

  1. Pemrograman itu sesuatu yang crossplatform. Artinya, pemrograman bisa dilakukan di OS apa pun. Sehingga, aplikasi editor pemrograman sendiri banyak yang bersifat crossplatform. Saya sebut ini karena sebagian orang tidak mengerti kalau Netbeans dan Eclipse itu IDE yang ada di semua OS dan yang paling bagusnya mereka open source software. Crossplatform yang dimaksudkan di sini adalah tersedia versi Linux, bukan semata memaksa versi Windows berjalan di Linux melalui Wine.
  2. Selain IDE yang crossplatform, ada beberapa IDE khusus Linux yang sangat menonjol kemampuannya di kalangan programer. Saya ingin Anda mengetahuinya.
  3. Jika ini telah diketahui, maka kini tinggal saya sebut satu per satu aplikasi editor pemrograman di Linux.

Metode Penulisan

Saya menempuh metode penguraian sederhana di dalam tulisan ini. Saya tidak menyinggung lisensi karena saya sudah memastikan semua editor adalah open source software (kecuali Sublime Text). Metode saya adalah menyebut nama, kemudian menayangkan skrinsot, kemudian saya komentari, kemudian saya sebut fitur-fiturnya. Adapun bahasa-bahasa khusus yang yang saya pergunakan sebagai berikut.

    1. Persoalan instalasi:
      • dari repo Ubuntu: maksudnya tersedia sudah di repo resmi dan cukup sudo apt-get install namaprogram untuk menginstalnya.
      • dari situs resminya: maksudnya tersedia dalam bentuk satu paket siap instal di situs resminya. Biasanya berformat DEB atau RUN. Ini sama halnya dengan EXE Anda biasanya di Windows.
      • dari PPA: maksudnya tidak ada di repo Ubuntu tetapi masih bisa diinstal dari PPA.
      • hanya dari situs resminya: maksudnya tidak ada di repo Ubuntu dan hanya bisa diperoleh dari situs resminya.
    2. Persoalan GUI builder: saya menyebutkan ya untuk editor yang memiliki GUI builder atau didukung secara internal oleh GUI builder lain (semisal Anjuta) atau saya sebutkan yadengancatatan untuk editor yang baru punya GUI builder jika pluginnya diinstal (semacam Codelite). GUI builder ini sangat penting karena menarik untuk orang yang belum kenal pemrograman.
    3. Persoalan istilah saya: editor pemrograman. Saya pakai istilah ini supaya Kate bisa masuk ke sini. Kalau saya pakai istilah IDE, maka tentu Kate, Gedit, Kwrite, dan Sublime Text tidak bisa masuk sini. Padahal saya menulis ini awalnya karena mengetahui superiornya fitur Kate di samping Sublime Text.
    4. Persoalan tata bahasa: karena sangat banyaknya istilah asing dan karena memang saya berpendapat sebaiknya istilah teknis tidak diterjemahkan, maka seluruh fitur berbahasa asing tidak dimiringkan.

1. Editor yang Crossplatform

1.1 Netbeans

netbeans

  • Komentar: Netbeans adalah editor pemrograman pertama bagi saya. Dengan Netbeans saya menghasilkan aplikasi Otodidak. Netbeans adalah editor bahkan IDE yang sangat canggih dan lengkap, sudah termasuk GUI builder dan code editor. Netbeans ditujukan untuk pemrograman Java walaupun sebetulnya juga mendukung bahasa lain. Netbeans direkomendasikan secara resmi oleh pihak Java [CITATION NEEDED]. Kelemahan Netbeans yang saya rasakan (juga untuk aplikasi Java kompleks pada umumnya) adalah berat dijalankan di spesifikasi mesin Celeron 2 GB.
  • Fitur-fitur penting: syntax highlighting, project manager, refactoring, code folding, Java code completing, build settings, toolbar, plugins support, debugger, Matisse
  • VCS: Git, SVN, CVS, Mercurial
  • GUI Builder: ya
  • Instalasi: dari repo Ubuntu atau dari situsnya sendiri
  • Situs resmi: http://netbeans.org

1.2 Eclipse

eclipse-1 eclipse

  • Komentar: Eclipse adalah editor pemrograman khusus Java yang bersaing ketat dengan Netbeans bahkan saya melihat banyak programer lebih menyukainya. Eclipse punya dukungan plugin yang luar biasa out of the box. Walau Eclipse dikhususkan untuk Java, tetapi ia punya plugin untuk memrogram AVR (dengannya Eclipse menjadi “Codevision AVR”1) dan yang pasti Eclipse itu IDE paling umum digunakan orang untuk develop aplikasi Android. Eclipse memiliki GUI builder yang semisal Matisse untuk JavaSE dan termasuk code editor. Kelemahan Eclipse, sebagaimana Netbeans dan teman-temannya, berat.
  • Fitur-fitur penting: syntax highlighting, project manager, refactoring, code folding, Java code completing, build settings, toolbar, Android development environment (terpisah), modeling platform, plugins support2
  • VCS: CVS, SVN (melalui plugin3), Git (melalui plugin4), Bazaar (melalui plugin5), Mercurial (melalui plugin6)
  • GUI Builder: ya (melalui plugin)
  • Instalasi: dari repo Ubuntu atau dari situs resminya
  • Situs resmi: http://eclipse.org

1.3 IntellijIDEA

idea

  • Komentar: IntellijIDEA adalah IDE baru bagi saya (yang tertarik karena antarmukanya yang indah). IntellijIDEA ini sangat canggih sebagaimana Netbeans dan Eclipse, bahkan dipakai oleh Google sebagai editor resmi untuk Android SDK. Walaupun tergolong baru, tetapi IntellijIDEA sudah memiliki Android GUI Builder sendiri. IntellijIDEA dibuat untuk memrogram Java, sama seperti Netbeans dan Eclipse. Walaupun ia juga mendukung bahasa yang lain. Kelemahan IntellijIDEA adalah berat, seperti Netbeans dan Eclipse.
  • Fitur-fitur penting: dark scheme, Android GUI builder, Maven Project Manager, Ant Build System, code folding, syntax highlighting, file manager, project manager, save window layout, productivity guide, diff system, import & export for settings, plugins support7, refactoring
  • VCS: Git, SVN, CVS8
  • GUI Builder: ya
  • Instalasi: hanya dari situs resminya
  • Situs resmi: http://jetbrains.com

1.4 Qt Creator

resized_qtcreator-examples

Ratusan examples siap pakai sudah terintegrasi

qt-creator-1 qt-creator

  • Komentar: IDE khusus untuk pemrograman C++ dengan Qt Framework.
  • Fitur-fitur penting: integrasi VCS, integrasi Git yang elegan, syntax highlighting, code folding, code completing, integrasi manual Qt, debug system, Qt Quick development environment, GUI builder, NOKIA Emulator, build settings, color scheme, split window, advanced HUD search (Ctrl+K), project wizard, console, HTML5 app development support, project manager, macro support, refactoring, ratusan contoh program dan demo (terpisah dalam paket qt4-demos; bisa diinstal dengan apt-get)
  • VCS: Git, Perforce, CVS, Bazaar, SVN
  • GUI Builder: ya
  • Instalasi: dari repo Ubuntu atau dari situs resminya
  • Situs resmi: http://qt-project.org

1.5 Qt Designer

qt-designer

  • Komentar: GUI builder murni, satu kelompok dengan Qt Creator. Kode C++ ditulis dengan Qt Creator, GUI dibangun dengan Qt Designer.
  • Fitur-fitur penting: palet berisi semua kelas GUI dari Qt, properties inspector, simpan ke .ui ala Qt, impor gambar
  • VCS: -
  • GUI Builder: ya
  • Instalasi: dari repo Ubuntu atau dari situs resminya
  • Situs resmi: http://qt-project.org

1.6 Codeblocks

codeblocks

  • Komentar: IDE serbaguna (tidak spesifik satu bahasa seperti Netbeans) yang canggih. Luas jangkauan penggunanya karena build settings yang sangat fleksibel bahkan bisa diatur untuk mengompilasi sekaligus burn .hex AVR Atmega.
  • Fitur-fitur penting: impor proyek DevC++ (inilah pengganti DevC++ di Linux), impor proyek Microsoft Visual C++, impor proyek Microsoft Visual Studio, impor workspace Microsoft Visual Studio, build settings, project manager, debug system, search & replace, global variables editor, syntax highlighting, plugins support9, dukungan untuk banyak kompiler, hex editor (dengan plugin), keyboard shortcut (dengan plugin)
  • VCS: terpisah (dengan mengatur dahulu pada Configure Tools10)
  • GUI Builder: -
  • Instalasi: dari repo Ubuntu atau dari situs resminya
  • Situs resmi: http://codeblocks.org

1.7 Codelite

codelite

Skrinsot diambil dari: http://codelite.org/images/gallery/norm-codelite-wxcrafter.jpg

  • Komentar: IDE serbaguna (seperti Codeblocks) yang juga canggih. Tidak bisa banyak berkomentar.
  • Fitur-fitur penting: build settings, workspaces manager, impor Microsoft Visual Studio Solution, plugins support, scripting system, shortcut key editor, syntax highlighting, refactoring, integrasi CLANG, debugger
  • VCS: Git (dengan plugin)11, SVN (dengan plugin12)
  • GUI Builder: ya, dengan plugin wxCrafter (ada versi gratis; ada juga versi standalone)13 14 15
  • Instalasi: dari repo Ubuntu atau dari situs resminya
  • Situs resmi: http://codelite.org

1.8 Sublime Text

sublime

  • Komentar: editor baru yang sangat canggih dan memukau banyak kalangan programer. Walau shareware, nyatanya banyak juga pengguna Linux (yang biasanya antishareware) memakainya. Sublime Text disuka karena fitur-fiturnya yang luar biasa lengkap selaku editor pemrograman (ia bukan IDE murni).
  • Fitur-fitur penting: mini map scrollbar, advanced search & replace, multiline edit, plugins system (pilihan melimpah), code folding, code completing, syntax highlighting, advanced goto
  • VCS: Git (dengan plugin16), CVS (dengan plugin17 18)
  • GUI Builder: -
  • Instalasi: dari PPA atau dari situs resminya
  • Situs resmi: http://sublimetext.com

1.9 LiveCode

livecode

  • Komentar: IDE out of the box betul-betul, baik dari segi konsep pembuatan GUI maupun bahasa pemrogramannya sendiri yang benar-benar baru. LiveCode ditujukan untuk kalangan orang awam yang belum tahu bagaimana program dibuat. Menariknya, LiveCode bisa deploy ke semua OS dari satu jendela saja. Bagi saya, LiveCode ini serasa YoyoGames Gamemaker (jika Anda pernah memakainya) yang lebih canggih lagi.
  • Fitur-fitur penting: deployment ke seluruh OS mayor (lihat skrinsot di atas), syntax highlighting, bahasa pemrograman baru, resource center (bantuan dan dokumentasi yang lengkap), code examples, debugger, search & replace
  • VCS: -
  • GUI Builder: ya
  • Instalasi: hanya dari situs resminya
  • Situs resmi: http://livecode.com

2. Editor Khusus Linux

2.1 Kate

kate

  • Komentar: KDE Advanced Text Editor. Editor (bukan IDE sepenuhnya) yang sangat elegan untuk segala bahasa pemrograman. Bahkan dengan sedikit pengaturan, ia bisa dijadikan “Codevision AVR” di Linux baik kompilasi maupun pembakaran .hex-nya. Ia memiliki Terminal terintegrasi sehingga memungkinkan kompilasi untuk bahasa apa pun.
  • Fitur-fitur penting: build settings, custom shortcut keys, split window, tabbed editing, project manager, session manager, syntax highlighting (dukungan untuk seluruh bahasa pemrograman; unggul dibanding mayoritas editor yang dibahas di sini), wrap words, line number, bookmark system, color scheme, scrollbar minimap, snippets support, VI input mode, search & replace, plugins support, extensions support, file manager, multi line edit (mulai versi 4.12)
  • VCS: -
  • GUI Builder: -
  • Instalasi: dari repo Ubuntu
  • Situs resmi: http://kate-editor.org

2.2 Kwrite

kwrite-1 kwrite

  • Komentar: saudara kembar Kate. Meski demikian, Kwrite sengaja diciptakan untuk berdiri sendiri sebagai editor pemrograman (setara Notepad++). Ia sangat mirip Kate kecuali tidak memiliki fitur tabbed editing. Kwrite sebagaimana Kate sendiri, hanya editor bukan IDE.
  • Fitur-fitur penting: syntax highlighting (sama lengkapnya dengan Kate), code completing, scrollbar minimap, snippets support, bookmark
  • VCS: -
  • GUI Builder: -
  • Instalasi: dari repo Ubuntu
  • Situs resmi: http://kate-editor.org

2.3 Gedit

gedit-2 gedit-3

  • Komentar: editor (bukan IDE sepenuhnya) yang sangat populer di kalangan pengguna pemula. Namun Gedit sebenarnya sangat canggih jika diaktifkan fitur-fitur pemrogramannya. Karena Gedit asalnya editor, maka dia jauh lebih enteng dibandingkan Netbeans dkk. Gedit didukung masyarakat GNOME dengan plugin-plugin dan schemes yang melimpah.
  • Fitur-fitur penting: syntax highlighting, color scheme19, code folding, code completing, snippets support, integrated Terminal (dengan plugin), split window, tabbed editing, file manager, ASCII character map, color chooser, multiline edit, bookmark, spell checking, help yang baik
  • VCS: Git (dengan plugin20), SVN (dengan plugin21 22), CVS (dengan plugin23), Mercurial (dengan plugin24)
  • GUI Builder: -
  • Instalasi: dari repo Ubuntu
  • Situs resmi: http://gedit.org

2.4 Geany

geany-2 geany

  • Komentar: Geany sangat cocok dipakai kalangan pelajar. Ia adalah IDE untuk segala bahasa pemrograman. Ia serba otomatis. Ketika berkasnya bahasa C, tekan compile maka Geany memakai kompiler gcc. Bahasa C++, Geany otomatis ganti ke g++. Bahasa Java, otomatis ganti ke javac. Bahkan untuk Assembly, ia otomatis menggunakan nasm. Itu semua masih bisa dikonfigurasi ulang dan disesuaikan shortcut key-nya. Geany sangat cocok untuk mengerjakan tugas-tugas pemrograman maupun proyek serius. Geany adalah IDE paling mudah digunakan untuk pemula di antara seluruh IDE yang dibahas di sini. Kelebihan Geany lainnya adalah sangat enteng, jauh dibandingkan Netbeans dan bahkan kadang lebih cepat dari Gedit. Kekurangannya adalah ketiadaan debugger. Geany saya rekomendasikan jika Anda ingin memulai pemrograman di Linux karena kepraktisannya yang luar biasa.
  • Fitur-fitur penting: syntax highlighting, tabbed editing, code folding, code completing, dark scheme25, search & replace, file manager, project manager, class browser, build settings, line wrapping, plugins support26, color chooser
  • VCS: Git, Bazaar, Mercurial, SVK, dan CVS (semuanya dengan plugin27 28)
  • GUI Builder: -
  • Instalasi: dari repo Ubuntu
  • Situs resmi: http://geany.org/

2.5 Kdevelop

kdevelop-2 kdevelop-3 kdevelop-4 kdevelop

Semua skrinsot Kdevelop diambil dari situs resminya.

  • Komentar: IDE yang sangat kompleks dan digunakan untuk membangun KDE. Kdevelop ditujukan untuk pemrograman skala besar dalam bahasa C, C++, dan Python. Selain itu, Kdevelop juga bagus untuk web development (HTML, CSS, Javascript). Dukungan bahasa lainnya mencakup Ada, Pascal, Java, Fortran, Perl, Bash, dan Ruby.
  • Fitur-fitur penting: syntax highlighting, code folding, search & replace, code completing, project manager29, debugger, class browser, project manager, plugins support, hex editor, Doxygen support, quick open
  • VCS: SVN30, CVS31, Git32
  • GUI Builder: -
  • Instalasi: dari repo Ubuntu
  • Situs resmi: http://kdevelop.org

2.6 Anjuta

anjuta-2 anjuta

Semua skrinsot Anjuta diambil dari situs resminya.

  • Komentar: Anjuta adalah IDE untuk C/C++ yang bisa dipasangi Glade sebagai GUI builder internal. Anjuta diciptakan untuk membuat software yang serius di Lingkungan GNOME. Bisa dibilang, Anjuta itu Kdevelop-nya GNOME.
  • Fitur-fitur penting: project manager, wizard, debugger, code editor, VCS, GUI builder (menggunakan Glade), profiler, plugins support, terintegrasi Devhelp (aplikasi buku besar pemrograman Linux yang superlengkap), symbols browser, terintegrasi Terminal
  • VCS: SVN, Git, VCS
  • GUI Builder: ya (dengan Glade)
  • Instalasi: dari repo Ubuntu
  • Situs resmi: http://anjuta.org/index.html

2.7 Glade

glade

Skrinsot Glade diambil dari situs resminya.

  • Komentar: Glade adalah GUI builder murni (bukan IDE bukan text editor) yang bisa digunakan mendesain GUI untuk aplikasi GTK+ (baca: GNOME). Hasil desain disimpan dalam XML dan bisa dipakai bersama pustaka GTK+ dalam bahasa pemrograman Python, Vala, C/C++, Java, Perl, dan lain-lain. Glade ini bahkan digunakan untuk membuat aplikasi Ubuntu bersama bahasa Python dan peralatan pemrograman Quickly. Demo pembuatannya bisa dilihat di Youtube33.
  • Fitur-fitur penting: drag and drop, GUI elements toolbar, terintegrasi Devhelp, properties inspector, widgets browser (search)
  • VCS: -
  • GUI Builder: ya
  • Situs resmi: https://glade.gnome.org/index.html

Penutup

Tulisan ini tidak menyebutkan seluruh editor yang dimiliki oleh Linux melainkan hanya sebagian saja. Editor legendaris seperti Vim dan Emacs sengaja tidak disebutkan karena penulis ingin mengulas yang berbasis GUI saja. Dengan itu penulis harapkan tulisan ini menginspirasi pembaca untuk menulis topik serupa lebih tajam lagi atau topik selainnya dengan komprehensif. Tulisan ini tidak ditutup kemungkinannya untuk direvisi pada masa mendatang. Penulis memohon maaf untuk kesalahan dan kekurangan pada tulisan ini.

Tentang Tulisan Ini

Tulisan ini disusun menggunakan Kate dan Libreoffice di atas Ubuntu 12.04. Tulisan ini mulai disusun pada 7 Februari 2013.

Referensi

23 Ibid.

24 Ibid.

31 Ibid.

32 Ibid.


Filed under: Linux

Bagaimana Menulis Artikel Linux yang Komprehensif

$
0
0

Bismillahirrahmanirrahim.

openofficeorg3.0-writer1Bagi saya, kendala utama persebaran Linux di Indonesia adalah lack of tutorial (kekurangan panduan). Maka solusinya adalah menulis. Saya melakukan “provokasi” pada beberapa pengguna Linux di komunitas untuk menulis artikel. Cara saya adalah menunjukkan satu artikel spesifik lalu mengajak untuk turut menulis artikel serupa. Tentu, saya harus sumbut. Saya harus memfasilitasi mereka yang saya “provokasi”. Maka saya tuliskan tutorial menulis tutorial yang sederhana kemarin. Namun sebagai penulis, saya pun ingin memberikan panduan yang lebih menyeluruh. Tulisan ini adalah catatan kepenulisan saya, bagaimana saya sendiri menulis tutorial sampai hari ini. Ini langkah-langkah yang saya tempuh untuk membuat sebuah artikel panduan Linux berbahasa Indonesia baik di Teknoplasma atau di blog ini. Semoga tulisan ini bermanfaat.

1. Selayang Pandang

Anda akan melihat apa-apa yang harus diperhatikan dalam menulis satu artikel Linux yang komprehensif. Tulisan ini memfokuskan Anda untuk menulis artikel yang bersih, rapi, dan mudah dibaca orang lain.

2. Kebutuhan Dasar

  1. Niat. Saya berniat mencari ridha Allah.
  2. Punya malu. Saya tergolong orang yang malu berat untuk menyingkat kata-kata. Saya malu salah ketik. Bahkan dalam SMS pun saya tidak menyingkat (jika Anda pernah membaca SMS dari saya). Saya menganggap kepatuhan terhadap budaya menyingkat kata-kata adalah sebuah kelemahan. Sejujurnya, ini berawal dari kecintaan saya terhadap membaca. Saya membaca dokumentasi KDE (saat awal menggunakan Linux), artikel dari pengguna Linux Barat, dan percakapan orang Barat soal Linux. Ketika saya membaca tulisan-tulisan orang Indonesia (terutama diskusinya), saya malu. Sekarang rasa malu itu bertambah setelah saya tahu bangsa Arab (bangsanya Nabi Ibrahim ‘alaihis salam dan Nabi Muhammad shallallahu ‘alaihi wasallam) alangkah sangat menghormati bahasa dan telah dikenal keindahan bahasanya di seluruh dunia. Oleh karena itu, saya menolak patuh. Ini yang nomor satu tercetak di benak ketika saya mulai menuang kata-kata. Jika ingin menulis artikel bagus, paling minimalnya buang jauh-jauh budaya SMS. Lalu, Anda harus mulai memerhatikan tata bahasa saat ini juga. Ini kunci kemudahan artikel Anda untuk dibaca.
  3. Hobi membaca. Saya tergolong orang yang senang membaca. Ini adalah modal terbesar saya dalam menulis. Bagaimana bisa seseorang menulis kalau tidak pernah membaca?
  4. Kesadaran bahwa Linux itu sulit. Saya harus sadar dulu bahwa Linux banyak kekurangan, paling utamanya sulit digunakan untuk pemula. Jika sudah tahu Linux itu sulit, maka saya tinggal mengusahakan bagaimana caranya biar mudah. Ini berkebalikan dengan sebagian pandangan orang bahwa Linux sudah mudah secara total sehingga menghasilkan asal jawab kepada newbie, asal menyalahkan newbie (dengan tuduhan tidak mau membaca/mencoba), asal hujat kepada newbie yang tidak tahu apa-apa, atau menimbulkan api permusuhan karena fanatisme buta. Saya menganggap hal itu sebagai gak sumbut dan sesuatu yang bodoh. Saya berpikir begini “kalau memang Linux itu mudah, harusnya tidak perlu ada blog modemlinux.wordpress.com”. Sebaliknya, dengan kesadaran bahwa Linux memang sulit, justru saya dapat berinovasi dengan membuat tulisan dan aplikasi. Jika saya patuh saja, maka saya tidak akan pernah menulis dan tidak akan pernah membuat aplikasi.
  5. Kesadaran bahwa para pemula di Indonesia butuh bimbingan dengan sebaik-baiknya. Saya selalu menganggap newbie yang datang di komunitas sebagai diri saya sendiri ketika pertama mengenal Linux. Saya juga menganggap bahwa yang namanya newbie itu akan selalu ada sampai akhir waktu kelak. Saya termasuk orang yang tidak senang menyuruh googling. Saya punya pikiran begini “kalau kamu mau Indonesia menggunakan Linux, kamu harus tanggung jawab. Kamu harus ajari masyarakat walau dari hal terkecil”. Dengan cara itulah –alhamdulillah– saya bisa menulis.
  6. Kesadaran bahwa tutorial Linux berbahasa Indonesia jumlahnya sangat kurang. Oleh karena itu, saya menerjemahkan tutorial atau menulis tutorial berbahasa Indonesia. Memang banyak artikel Linux, tetapi berbahasa Inggris sedangkan saya hidup di Indonesia. Saya punya pikiran begini “kalau kamu promosikan Linux di Indonesia, bimbing mereka dengan bahasa mereka. Bukan dengan Bahasa Inggris!”.
  7. Kesadaran bahwa keumuman tutorial yang beredar lack of screenshot (kekurangan skrinsot). Saya punya pikiran begini “seorang newbie itu lebih cepat memahami masalah jika dengan gambar”. Oleh karena itu, hampir semua artikel saya berisi banyak skrinsot.

Jangan heran, kebutuhan dasar untuk menulis artikel berkualitas memang banyak.

3. Jenis-Jenis Tulisan

  1. Tutorial.
  2. Review.
  3. Esai bebas.
  4. Kumpulan tautan.
  5. Album skrinsot.

4. Tulisan yang Terlaris

Percaya tidak percaya, ternyata justru kumpulan tautanlah jenis tulisan yang paling laris.

5. Yang Paling Dibutuhkan Pembaca

Saya urutkan jenis artikel berdasar tingkat kepentingannya. Urutan ini bisa salah bisa benar.

  1. Tutorial spesifik untuk suatu bidang khusus. Contohnya pemrograman Qt dan Terminal.
  2. Pengantar untuk suatu bidang khusus. Contohnya pemrograman C dan GUI.
  3. Kumpulan tautan untuk suatu bidang khusus. Contohnya PDF dan modem.
  4. Tutorial penggunaan dasar untuk suatu aplikasi. Contohnya Qt Creator.
  5. Ulasan suatu aplikasi tertentu dibandingkan aplikasi Windows serupa. Contohnya Kate vs Codevision AVR.

Semua jenis artikel saya beri contoh dari tulisan-tulisan saya sendiri. Saya sengaja melakukannya biar sumbut. Saya ngomong begini begitu, karena memang saya sendiri telah melakukannya dahulu.

6. Struktur Tulisan

Saya sampaikan kepada Anda satu kunci saya dalam menulis artikel yang luas dan padat. Kunci itu adalah menulis berdasarkan urutan tertentu. Apa urutan yang dimaksud? Perhatikan ini.

  1. Pembuka.
  2. Isi.
  3. Penutup.

Percaya tidak percaya, semua artikel saya tersusun dari 3 urutan ini. Hanya saja, terkadang saya modifikasi susunan tersebut menjadi demikian:

  1. Pembuka.
  2. Arah Tulisan Ini.
  3. Kode Program.
  4. Skrinsot.
  5. Hasil Program.
  6. Pembahasan.
  7. Referensi.

Struktur tulisan adalah jawaban untuk pertanyaan umum bagaimana membuat tulisan yang baik. Sebagai pembuka, saya biasa menulis langsung maksud tulisan. Lalu, untuk isi, saya pecah-pecah lagi sesuai jenis tulisan yang ingin dikerjakan. Terserah mau membuat penutup apa saja. Saya sendiri mengganti bagian penutup dengan Referensi. Namun kadang saya tetap memberi paragraf penutup sebelum bagian Referensi.

7. Persiapan Ketika Menulis

  1. Skrinsot.
  2. Riset.
  3. Percobaan.
  4. Unggahan.

Mengenai Skrinsot: skrinsot untuk tutorial Linux adalah sebuah kemestian. Walaupun tutorial itu bicara tentang Terminal. Mengapa? Karena audiences kita adalah para pemula. Para pemula itu tidak seperti pengguna berpengalaman. Mereka sulit membayangkan bagaimana bekerja dengan Terminal karena terbiasa dengan click and run. Nah, karena semua masalah Linux 99% (angka kasar) selalu diselesaikan dengan Terminal, maka biasakan mereka memakai Terminal dengan memperbanyak skrinsot. Yakinkan mereka kalau Terminal tidak sulit dengan skrinsot. Kalau Terminal saja begini, maka bagaimana lagi dengan GUI. Saya sengaja memajang skrinsot-skrinsot yang antarmukanya Unity atau Oxygen KDE agar tercetak kesan percaya diri di sisi pembaca. Mengapa? Karena pengguna Linux adalah minoritas. Dan karena untuk memperkenalkan Linux kepada masyarakat kita butuh standardisasi.

Mengenai Riset: Googling. Menulis satu artikel kadang adalah riset tersendiri untuk saya. Ukuran riset saya adalah skala kecil. Riset biaya pribadi dengan segala keterbatasan diri ini. Saya melakukannya dengan googling. Saya terbiasa mencari dahulu dengan Google tutorial sebanyak-banyaknya dalam 1 masalah lalu saya baca semua baru kemudian saya lakukan 1 hal di Linux. Sama juga dengan menulis. Saya kumpulkan dulu semua bahan sebanyak mungkin, go offline, saya pilah-pilah, lalu saya eksekusi yang paling baik. Ada beberapa artikel yang tidak selesai dalam 1 hari semisal Belajar Menggunakan KDE Edisi 4. Ada juga yang benar-benar butuh riset serius seperti Otodidak Versi 1 Dirilis. Saya ingin selalu menghadirkan tulisan yang paling berkualitas, rinci dan mendetail, dan sebisa mungkin lengkap rujukannya. Oleh karena itu, saya meyakini untuk beberapa jenis tulisan, kadang dibutuhkan waktu yang lama untuk bisa terbit. Harus melalui riset dahulu. Lama di sini tentunya relatif, untuk saya, waktu 4 bulan untuk artikel KDE (Oktober — Januari) termasuk lama. Di dalam riset itu, saya melakukan hal-hal yang rumit (bagi saya sendiri) untuk memecahkan suatu permasalahan. Lalu permasalahan itu saya jadikan tulisan. Jangan dikira ini sesuatu yang sulit untuk dilakukan. Jika Anda sekarang menulis artikel mengenai Kingsoft Office, membeberkan beberapa fitur beserta skrinsotnya, maka itu juga riset bagi saya.

Mengenai Percobaan: bagaimana cara Anda menulis artikel mengenai pemrograman? Hanya menulis begitu saja? Tentu tidak. Anda harus mencoba terlebih dahulu, membuat program dahulu, susah payah dahulu untuk bisa menulis tutorial pemrograman. Apalagi jika tulisan itu berseri. Riset dan percobaan selalu saya lakukan untuk tulisan macam Pemrograman Qt dan Qt Creator. Tidak tertutup untuk tulisan Android dan lain-lain.

Mengenai Unggahan: bagaimana jika Anda menemukan tutorial pemrograman yang menjelaskan pengantar, spesifikasi, kode sumber, skrinsot, analisis kode, kesimpulan, lalu kemudian menyertakan paket programnya untuk diunduh? Senang? Saya sendiri menjawab ya dan saya ingin pembaca merasakan kesenangan yang sama. Oleh karena itu, saya mengunggah paket kode sumber Qt saya walau sudah tercantum di dalam tulisan, supaya pembaca dapat langsung menerapkannya. Biar setiap tulisan saya menjadi MWE bagi mereka. Hanya itu? Saya senang jika punya PDF untuk dibaca offline dan saya pun ingin pembaca memperoleh kesenangan yang sama. Saya mengusahakan setiap posting penting memiliki versi PDF. Maka saya membuat versi PDF dengan Libreoffice maupun LaTeX lalu diunggah ke server WordPress. Saya usahakan selalu tercantum “…tersedia dalam PDF…” di banyak tulisan. Dan tentunya tidak hanya memrogram. Kadang kita mendesain. Maka saya pun mengunggah berkas SVG atau XCF (Inkscape dan GIMP) pada blog desain saya. Tujuannya sama, supaya pembaca dapat langsung menerapkannya. Untuk hal ini, tentulah saya harus punya server sendiri. Alhamdulillah semua itu terpenuhi dengan OFE bahkan saya masih punya Mediafire dan lain-lain.

8. Orisinalitas Tulisan

Saya pribadi membenci tulisan hasil menyalin punya orang. Saya tidak menyukai tulisan yang asal-asalan macam itu dan cenderung saya selalu mengabaikannya. Dan seumur hidup saya belum pernah satu kali pun melakukannya di blog-blog saya mulai era Restava sampai Teknoplasma. Tentunya di blog ini juga. Namun dalam masalah kepenulisan, ada pembagian kategori sebagai berikut.

  • Tulisan asli.
  • Tulisan terjemahan.

Ini agar tidak dikira selamanya kita harus menulis sendiri suatu topik dalam masalah Linux. Kadang justru menerjemahkan tulisan orang lain jalan terbaik. Sebagai contoh, ketika saya melihat di komunitas Mint ada artikel Tutorial Shell 5 Menit, saya langsung menerjemahkannya dalam Bahasa Indonesia. Ini saya lakukan karena mempertimbangkan susunan artikel yang bagus dan dalam sekali lihat orang bisa langsung memahami cara menggunakan Terminal, tidak seperti artikel-artikel biasanya. Ternyata benar, alhamdulillah ada saja orang yang terbantu dengan terjemahan ini. Hal ini juga berlaku untuk tulisan-tulisan yang lain semisal laman diskusi komunitas dalam hal IDE untuk LaTeX (jujur saya ingin menerjemahkannya juga), laman daftar aplikasi alternatif Windows di Linux, dan seterusnya. Jadi, Anda tidak harus selalu menulis sendiri. Anda juga bisa menerjemahkan artikel yang kiranya dibutuhkan masyarakat. Pilihkan artikel yang banyak pengguna memerlukannya.

9. Mood Mitos

Saya tidak memercayai keberadaan mood. Bagi saya, mood itu tidak ada. Mood hanyalah alasan orang belakangan yang diada-adakan untuk malas menulis. Dengan kepercayaan ini, saya jadi mudah menulis bahkan dalam keadaan yang sangat terbatas.

10. Penutup

Tulisan ini tidak membatasi gaya penulisan Anda. Setiap orang memiliki gaya tersendiri. Namun jika Anda termasuk orang yang baru memulai, semoga tulisan ini bisa jadi pengantar yang baik. Saya memohon maaf jika banyak kesalahan di sini dan tulisan ini tidak ditutup kemungkinannya untuk direvisi kelak.


Filed under: Linux

Indonesia Masih dalam Masa Transisi

$
0
0

Bismillahirrahmanirrahim.

Jika Anda ingin Indonesia menggunakan GNU/Linux, maka banyak-banyaklah bersabar. Banyak-banyaklah memaklumi. Anda akan menjumpai banyak halangan. Karena masyarakat Indonesia berada dalam masa transisi dari Windows ke GNU/Linux. Esai ini ditulis sebagai pengingat untuk hal-hal yang perlu dimaklumi untuk mencapainya.

Kata kunci: gnu/linux, foss, masyarakat, indonesia, ilmu komputer

Daftar Isi

1  Pendahuluan

1.1  Siapa Penulis Esai Ini?

Penulis adalah seorang pengguna GNU/Linux di Indonesia. Penulis senang jika masyarakat meninggalkan OS bajakan. Penulis senang jika masyarakat menggunakan OS legal (termasuk GNU/Linux).

1.2  Siapa Pembaca Esai Ini?

Pembaca esai ini adalah pengguna GNU/Linux yang ingin masyarakat Indonesia menggunakan GNU/Linux. Pembaca harus condong kepada penggunaan perangkat lunak legal, harus tidak senang dengan yang sebaliknya. Pembaca diharap memiliki naluri belajar otodidak.

1.3  Bagaimana Membaca Esai Ini?

  1. Anda harus sepakat bahwa masyarakat Indonesia harus menggunakan perangkat lunak legal (gratis ataupun tidak).
  2. Anda harus mengenal keadaan umum pengguna GNU/Linux di Indonesia.
  3. Anda harus sepakat untuk mengajari masyarakat sesuai kemampuan.

Jika Anda tidak memenuhi ketiganya, maka tinggalkan esai ini.

1.4  Apa Titik Berat Esai Ini?

Dorongan kepada Anda yang sedang bersemangat mempromosikan GNU/Linux di Indonesia untuk memaklumi kekurangan-kekurangan masyarakat, agar tujuan masyarakat Indonesia menggunakan GNU/Linux tercapai. Esai ini menekankan kepada Anda bahwa menggunakan GNU/Linux sendiri sudah berat bagi masyarakat, maka janganlah diperparah dengan sikap yang salah terhadap masyarakat.

Tujuan paling awal ditulisnya esai ini sebenarnya untuk memprovokasi komunitas supaya menulis. Yang penulis maksudkan dengan esai ini hanyalah mengajak Anda untuk menulis tutorial yang Anda mampu dalam bidang GNU/Linux, demi memperbanyak panduan dalam Bahasa Indonesia untuk masyarakat. Penulis meyakini kesulitan nomor 1 masyarakat ada pada ketidaktahuan dan meyakini pula obatnya adalah dengan menyediakan panduan dalam Bahasa Indonesia. Oleh karena itu, esai ini diharapkan menjadi inspirasi bagi Anda yang sudah atau yang belum menulis. Seiring perkembangan penulisan, esai ini melebar mencakup juga sikap yang semestinya dimiliki untuk mendidik masyarakat agar mampu menggunakan GNU/Linux.

1.5  Apa yang Istimewa dari Esai Ini?

Esai ini mengajak Anda untuk bersama-sama memaklumi bahwa Indonesia benar-benar masih berada dalam masa transisi. Sehingga mustahil menuntut kesempurnaan masyarakat dalam waktu singkat (10 tahun ke depan). Esai ini mengajak Anda bersabar dan memaklumi pengguna. Lebih jauh, esai ini juga mengajak Anda memaklumi keadaan Indonesia saat ini sebagai sebuah proses. Karena berada dalam proses, maka masyarakat memiliki banyak kekurangan mulai dokumentasi GNU/Linux berbahasa Indonesia yang kurang lengkap1, tutorial berbahasa Indonesia yang sangat sedikit2, infrastruktur pendukung GNU/Linux (semacam http://apt-web.ntb.linux.or.id3) yang belum banyak ada4, ketidakmampuan berbahasa Inggris, dan lain-lain. Oleh karena itu, masyarakat membutuhkan banyak guru, dokumentasi berbahasa Indonesia, infrastruktur pendukung, dan lain sebagainya. Kalau ingin masyarakat menggunakan GNU/Linux, maka Anda harus mengajari masyarakat mulai dari hal terkecil. Esai ini diadakan sebagai panduan untuk mewujudkannya.

2  Inti

Esai ini hanyalah wujud usaha mendukung masyarakat untuk menggunakan GNU/Linux5. Esai ini hanya akan berisi baris-baris pertanyaan dan jawaban. Setiap poin berisi judul, satu pertanyaan, dan satu jawaban. Esai ini dibuat agar mirip dengan FAQ6 supaya mudah dibaca. Berikut inilah poin demi poin inti esai Indonesia Masih dalam Masa Transisi.

2.1  Pengguna yang Bodoh I

Pertanyaan: bagaimana jika ada pengguna bertanya sesuatu yang sebenarnya sudah ada di Google?

Jawaban: bersabarlah dan maklumilah. Anda pasti akan banyak menemukan yang seperti ini. Karena banyak rakyat Indonesia tidak kenal Google. Dan hampir semua masyarakat yang bertanya itu tidak mengerti apa kata kuncinya. Maka ajari. Minimal beri mereka tautan untuk melakukan pencarian dengan benar seperti Googling Pun Butuh Kemampuan. Penulis senang melakukan googling kemudian menjawab pertanyaan itu dengan terlebih dahulu menyatakan “…setelah mencari dengan kata kunci XYZ, saya memperoleh solusi KLM…” lalu penulis bubuhkan pesan “…Anda bisa menyelesaikan masalah yang lain dengan cara googling ini..”. Biasanya, setelah itu mereka berterima kasih. Maka lakukan cara ini jika Anda punya banyak waktu. Lebih canggih lagi, Anda bisa meluangkan sedikit waktu untuk menulis panduan googling sebagaimana penulis contohkan di atas. Lebih canggih lagi, Anda bisa meluangkan waktu untuk menciptakan aplikasi yang mendidik pengguna untuk melakukan googling7 (tentu bila Anda memiliki kepandaian pemrograman). Dengan begini, pengguna yang bodoh akan menjadi pintar. Mereka sangat butuh start (ignition). Minimal dia tahu dulu bagaimana mencari hal-hal teknis dengan Google. Anda jangan mengira semua orang itu kenal Google, walaupun Google itu lebih terkenal dari matahari.

2.2  Pengguna yang Bodoh II

Pertanyaan: bagaimana jika ada pengguna membuat pertanyaan yang terlalu global seperti “bagaimana instal modem di ubuntu”?

Jawaban: bersabarlah dan maklumilah. Mereka tidak tahu cara bertanya. Maka ajari. Minimal, arahkan mereka untuk membaca panduan bertanya yang baik. Lebih baik lagi jika Anda berikan contoh bertanya yang baik, entah dalam jawaban ataupun Anda benar-benar membuat pertanyaan. Lebih baik lagi jika Anda termasuk orang yang memiliki dana besar, untuk membuat suatu sayembara berhadiah bagi siapa saja yang bisa bertanya atau menjawab dengan baik di komunitas. Anda jangan mengira semua orang Indonesia sanggup membuat pertanyaan yang baik. Banyak orang perlu diajari menulis atau bertanya dengan baik. Maka banyak-banyaklah mengajari.

2.3  Pengguna yang Bodoh III

Pertanyaan: bagaimana jika ada pengguna membuat judul yang buruk seperti “toloong!”?

Jawaban: bersabarlah dan maklumilah. Anda akan lebih sering lagi menemukan hal demikian. Ini tanda kemampuan berbahasa yang rendah. Maka wajar kalau forum-forum di Indonesia berisi tulisan-tulisan yang amburadul8 dari pengguna yang demikian. Penulisan judul yang tidak informatif ini akibatnya. Masyarakat perlu pelajaran bahasa, utamanya membaca dan menulis. Maka ajari. Beri mereka pendidikan sampai bisa menulis judul yang sesuai isi pertanyaannya. Contoh:

  • Tegur melalui PM yang berisi koreksi terhadap judul dan suruh mereka mengubahnya. Ini yang paling baik.
  • Beri contoh dengan senantiasa menulis judul yang informatif.
  • Tulis komentar yang mendidiknya untuk menulis judul dengan baik.

Anda akan senantiasa melihat kesalahan-kesalahan masyarakat walau sudah disediakan FAQ dan cara bertanya yang baik. Selama tidak ada pengajaran, maka masyarakat akan senantiasa seperti itu. Maka teruslah mengajari.

2.4  Cara Memandang Pengguna

Pertanyaan: bagaimana saya harus memandang pengguna?

Jawaban: pandanglah pengguna seperti ibu dan ayah Anda. Maka Anda akan senang hati memaklumi keadaan mereka. Atau, jika Anda tidak bisa, pandanglah pengguna seperti diri Anda yang dulu. Diri Anda ketika belum tahu apa-apa soal GNU/Linux.

2.5  Jenis-Jenis Pengguna

Pertanyaan: apakah ada klasifikasi pengguna? Perlukah?

Jawaban: belum. Sangat diperlukan. Penting sekali diketahui bahwa pengguna itu bertingkat-tingkat kemampuannya. Ini diketahui supaya tidak salah memberikan pengajaran (sebagaimana yang baru berjalan sudah diminta berlari9). Berikut ini penulis klasifikasikan pengguna jadi 5 tingkatan. Klasifikasi ini tidak bersifat pasti.

  • Pengguna Awam Tingkat I
  • Pengguna Awam Tingkat II
  • Pengguna Pemula
  • Pengguna Menengah
  • Pengguna Ahli

Pengguna awam tingkat I itu orang yang belum menggunakan GNU/Linux dan tidak punya gambaran di benaknya dan pengalaman dengan Windows pun minim. Seringkali tidak bisa diharapkan untuk menggunakan GNU/Linux karena faktor usia atau telah terspesialisasi di bidang selain ilmu komputer.

Pengguna awam tingkat II itu orang yang belum menggunakan GNU/Linux tetapi sudah punya gambaran di benaknya dan ada pengalaman dengan Windows. Pengguna jenis inilah yang biasa disebut newbie di komunitas. Pengguna jenis inilah yang masuk ke dalam komunitas untuk bertanya cara instalasi GNU/Linux. Bimbingan untuk pengguna jenis ini adalah dengan diajari secara pengalaman dan dibimbing agar dapat membaca tutorial.

Pengguna pemula itu orang yang sudah menggunakan GNU/Linux tetapi kurang pengetahuannya sehingga sering menanyakan hal-hal remeh. Bimbingan untuk pengguna tingkatan ini paling banyak sekaligus paling sulit dibanding yang lain. Tingkatan ini belum mampu melakukan pengaturan walau sudah ada tutorial atau dokumentasi. Tingkatan inilah yang paling banyak di Indonesia.

Pengguna menengah itu orang yang sudah menggunakan GNU/Linux juga, memiliki pengalaman selama >1 tahun, tetapi tidak menguasai sistemnya secara menyeluruh. Tingkatan ini sudah mampu melakukan apa saja asalkan ada tutorial atau dokumentasinya. Bimbingan untuk tingkatan ini seringkali cukup dengan tutorial saja atau ditunjukkan referensi. Tingkatan ini memiliki kemampuan Bahasa Inggris yang lebih baik dari 3 tingkatan sebelumnya.

Pengguna ahli itu orang yang sudah menguasai GNU/Linux, berpengalaman selama >= 10 tahun, bisa melakukan apa saja walaupun tanpa tutorial. Tingkatan ini biasanya mendirikan komunitas atau sesekali ikut menjawab pertanyaan pengguna. Tingkatan ini mampu menyelesaikan masalahnya sendirian. Tingkatan ini selalu menjadi spesialis dalam satu bidang tertentu.

2.6  Senior Lain Menjawab dengan Jawaban Bodoh

Pertanyaan: bagaimana jika ada senior lain menjawab pertanyaan semacam “apa itu Linux” dengan jawaban “bodoh” seperti “Linux itu seperti Windows tapi gratis”, padahal saya akan menjawab “Linux itu kernel dan seterusnya”?

Jawaban: bersabarlah dan maklumilah. Indonesia masih dalam masa transisi. Maka jawaban-jawaban yang tampaknya bodoh macam ini akan banyak. Mari ingat kembali kenyataan berikut.

  • Jumlah orang yang paham sistem vs yang cuma semacam “klik ini klik itu”
  • Jumlah orang yang kenal Windows (pernah ubah registry) vs yang tidak
  • Jumlah orang yang tahu Windows itu OS vs yang tidak
  • Jumlah orang yang tahu ada sistem operasi selain Windows vs yang tidak
  • Jumlah orang yang butuh low level access ke kernel vs yang cuma pakai
  • Terakhir, jumlah orang yang tahu GNU/Linux vs yang tidak

Maka dengan memaklumi bahwa Indonesia masih dalam masa transisi beserta kenyataan di atas, kita akan sadar bahwa keliru menjawab pertanyaan Pengguna Awam Tingkatan I & II dan sebagian besar Pengguna Pemula dengan jawaban teknikal. Pendekatan jawaban senior yang tampak bodoh di atas justru yang benar dan tepat. Berikut ini logika sederhananya.

  • Jika kita ingin orang menggunakan Linux, dalam keadaan dia tidak tahu, maka yang paling tepat adalah pendekatan asosiasi yakni menghubungkan nama Linux dengan nama sekaligus kegunaan Windows.

Dengan begitu, otomatis di benak mereka tergambar Linux itu untuk ini dan ini. Berbeda dengan praduga awal. Jika pengguna yang seperti demikian langsung dijawab dengan jawaban teknikal, mereka tidak langsung memahaminya. Start mereka akan berat. Ini penghalang untuk memasuki GNU/Linux bagi masyarakat Indonesia. Maka semestinya digunakan pendekatan senior yang tampak bodoh di atas. Hal penting di sini adalah jawaban diberikan sesuai keadaan pengguna bukan sesuai keadaan penjawab.

2.7  Pengguna Memberitakan Aplikasi Baru

Pertanyaan: bagaimana jika pengguna menulis posting tentang XDMAN (Xtreme Download Manager) sebagai ganti IDM di GNU/Linux sedangkan saya dan senior lain familiar dengan wget? Bagaimana dengan permasalahan serupa?

Jawaban: bersabarlah dan maklumilah. Contoh XDMAN sangat manjur untuk memublikasikan GNU/Linux karena masyarakat memerlukan yang seperti ini. Buka Google, cari web yang mengulas XDMAN maka Anda lihat web macam Kaskus10 pun punya tulisan khusus XDMAN. Ini bukti masyarakat memerlukannya. Maka ini jadi senjata tambahan buat Anda. Hal ini juga berlaku untuk aplikasi-aplikasi lain yang mungkin belum dirilis saat esai ini ditulis. Maka dukunglah pengguna dengan teknologi baru walau Anda telah mapan dengan teknologi lama.

2.8  Kesalahan Adab dan Etika Kepada Pribadi Anda

Pertanyaan: bagaimana jika ada pemula komputer bertanya kepada saya selaku senior dengan bahasa (yang tidak sopan) layaknya teman sendiri?

Jawaban: bersabarlah dan maklumilah. Sedikit orang kenal milis11 dan sedikit lagi yang pernah membaca etika milis. Jika mereka tidak tahu, maka ajari. Beri mereka arahan awal karena mereka orang yang tidak mengerti dari mana memulai. Beri contoh mereka dengan jawaban-jawaban Anda yang sopan dan elegan. Itu cara paling efektif untuk mengajari pengguna.

2.9  Mengulang Pertanyaan yang Sama

Pertanyaan: bagaimana jika pengguna menanyakan sesuatu yang sudah pernah diselesaikan semisal “bagaimana menginstal driver ATI Radeon”? 

Jawaban: bersabarlah dan maklumilah. Banyak orang tidak mengenal komputer, lebih banyak lagi yang tidak mengenal FAQ, dan lebih banyak lagi yang tidak tahu bahwa seseorang bisa cerdas hanya dengan membaca FAQ. Maka ajari. Minimal, berikan link jawaban tetapi jangan lupa bubuhkan pesan agar membaca FAQ dahulu sebelum bertanya. Atau lebih canggih lagi, buat sebuah dokumen yang berisi daftar [SOLVED]12 yang bisa diakses dari mana saja. Atau setingkat lebih canggih lagi, buat sebuah web yang berisi kumpulan sumber daya dalam 1 masalah secara khusus semisal http://modemlinux.wordpress.com yang dibuat untuk masalah modem di Indonesia. Akhirnya, jika ada pengguna yang bertanya kembali, cukup beri satulink.

2.10  Mengulang Permintaan yang Sama

Pertanyaan: bagaimana jika pengguna meminta sesuatu yang sudah berulang kali dibagikan atau diminta seperti “buku panduan remastering”?

Jawaban: bersabarlah dan maklumilah. Anda akan banyak menemukan hal semacam ini juga sebagaimana pada bagian (2.9).

Pengulangan permintaan adalah bukti titik berat kebutuhan masyarakat. Ini justru keuntungan bagi Anda. Anda bisa memilih dari sekian banyak bidang yang paling dibutuhkan masyarakat untuk menyediakan solusinya. Misalkan tutorial yang paling banyak diminta masyarakat adalah pengaturan Squid. Maka Anda bisa menyambut ini dengan menulis bukunya. Atau, bisa juga memakai cara penulis yakni meletakkan URL-URL tutorial yang banyak diminta masyarakat di dalam KNotes13. Kalau ada permintaan yang terulang kembali, penulis cukup buka KNotes lalu menyalinkan URL yang diminta.

2.11  Meminta Rekomendasi Distro Terbaik

Pertanyaan: bagaimana jika pengguna meminta rekomendasi distro?

Jawaban: di sinilah letak pentingnya kesadaran Indonesia masih dalam masa transisi. Di sini pula Anda akan diuji. Kaidah dasar di sini adalah yang penting mereka mau menggunakansoftware legal dulu. Maka, ada dua hal penting yang harus Anda lakukan sebagai berikut.

  • Rekomendasikan Ubuntu. Mengapa? Karena masyarakat Indonesia butuh standardisasi untuk GNU/Linux awal mereka. Standardisasi ini perlu massa yang besar. Maka karena Ubuntu adalah distro yang paling banyak jumlah penggunanya di Indonesia, rekomendasikan. Lupakan sejenak ego yang ada untuk mengarahkan mereka kepada distro kelas teknisi semacam Slackware dan Archlinux (lebih-lebih lagi Gentoo14). Lupakan sampai seluruh proses transisi Indonesia usai. Jangan membuat rekomendasi yang berbeda-beda sehingga malah membuat lari. Demi hal ini, lupakan sejenak ego dan rekomendasikan Ubuntu.
  • “Choose one, master it!” Katakan itu kepadanya. Suruh pengguna untuk memilih 1 distro saja lalu menguasainya. Suruh pengguna untuk fokus. Hal ini jauh lebih baik daripada memaksakan diri memakai banyak distro sekaligus. Mengapa? Karena distraksi itu memiliki banyak risiko mulai dari kehilangan waktu, uang, sampai data. Satu distro saja itu sudah berat bagi pengguna, apalagi lebih. Maka jika terjadi hal yang buruk ketika pengguna memakai banyak distro sekaligus (multibooting), ada kemungkinan mereka akan berhenti menggunakan GNU/Linux. Seperti yang Anda ketahui, hal semacam ini cukup sering terjadi dan ini salah satu hal terburuk. Maka fokus pada 1 distro adalah satu-satunya jalan. Ini adalah jalan terbaik untuk mendukung transisi masyarakat Indonesia.

Penulis memperhitungkan Ubuntu sebagai rekomendasi karena nasihat salah seorang bapak GNU/Linux Indonesia15 dan karena jumlah tutorial Ubuntu dalam Bahasa Indonesia paling banyak dibanding distro lain. Alasan jumlah tutorial ini adalah alasan terkuat penulis untuk merekomendasikan Ubuntu. Anda mesti memahami bahwa setiap orang yang meminta rekomendasi biasanya Pengguna Awam Tingkat II, sementara tingkatan ini yang terbanyak di Indonesia. Maka pilihkan yang termudah supaya dia bisa beradaptasi dahulu. Kira-kira butuh 5 tahun bagi seorang pengguna untuk mapan menggunakan GNU/Linux. Persoalan memakai distro lain, maka penulis sama sekali tidak membatasinya. Pengguna bebas memilih openSUSE, Fedora, bahkan LFS sekalipun. Penulis pun tidak membatasi Anda untuk menggunakannya. Namun karena ini masalah rekomendasi, karena Indonesia masih dalam masa transisi, maka rekomendasikan 1 distro saja yaitu Ubuntu.

Penulis juga tidak merekomendasikan Linux Mint16 karena jumlah tutorial berbahasa Indonesia yang ada masih sedikit dibanding Ubuntu. Walaupun Linux Mint = Ubuntu, tetapi judul-judul tutorial yang ada terbanyak dipegang oleh Ubuntu dan jika dipaksakan maka menambah distraksi (utamanya untuk Pengguna Awam Tingkat II dan Pemula). Sekali lagi, penulis menekankan standardisasi yang rata untuk pengguna. Anggaplah ini sebagai ignition bagi mereka. Setelah nanti mereka menggunakan Ubuntu selancar Windows (sudah mapan), silakan ajak mereka menggunakan distro lain. Indonesia butuh ignition, dan karena masih dalam masa transisi, maka ignition terbaik17 untuk mereka adalah Ubuntu.

2.12  Mengalami Kehilangan Data

Pertanyaan: bagaimana jika pengguna datang untuk melaporkan bahwa mereka kehilangan data setelah instalasi sistem operasi tertentu?

Jawaban: ini bisa diatasi dari 2 sisi. Sisi pertama, dengan mencegah. Sebelum pengguna melakukan instalasi atau kegiatan yang dapat membahayakan sistem menurut pengalaman Anda, maka yang pertama harus Anda katakan adalah backup18. Yang kedua, Anda harus katakan bahwa pengguna harus menanggung sendiri risiko yang terjadi. Yang ketiga, jelaskan kepadanya cara melakukan kegiatan yang ditanyakan tersebut dengan rinci. Sampai di sini, minimal Anda telah kehilangan tanggung jawab untuk memperbaiki sistem pengguna jika benar terjadi kerusakan. Sisi kedua, dengan memberikan semangat dan perangkat lunak data recovery yang canggih semacam Testdisk19. Atau, ingatkan pengguna supaya segera dilakukanrestore20 andaikata backup sudah dilakukan sebelumnya.

2.13  Meminta Dual Boot

Pertanyaan: bagaimana jika pengguna meminta bantuan dual boot 21padahal saya ingin mereka single boot selamanya?

Jawaban: bersabarlah dan maklumilah. Bahasa kasarnya adalah “biarlah dual boot dulu, yang penting mereka mau menggunakan OS legal”. Jika memungkinkan untuk dual boot, maka anjurkanlah. Secara default, pengguna hanya memanfaatkan komputer untuk bekerja. Sehingga sebuah kewajaran jika mereka sangat melindungi isi komputernya. Biarkanlah seluruh pengguna melakukan dual boot, bahkan untuk 20 tahun ke depan. Jangan memaksa mereka untuk menghapus Windows22 karena justru paksaan itulah penghalang terbesar mereka menggunakan GNU/Linux. Indonesia butuh dual boot. Mereka butuh banyak sumber daya seperti internet atau data penting yang hanya dapat ditangani oleh Windows. Oleh karena itu, biarkanlah dulu mereka dual boot. Biarkanlah mereka mengenal GNU/Linux melalui dual boot. Pada gilirannya nanti, mereka akan segera memiliki kemampuan memilih. Untuk mencapainya, maka dibutuhkan waktu yang panjang. Dengan begini, tidak perlu ada perang urat syaraf dan berkuranglah risiko kehilangan data. Anda tidak perlu cemburu dengan banyaknya pengguna yang belum mampu single boot seperti Anda.

2.14  Pengguna Tidak 100% Menggunakan FOSS

Pertanyaan: bagaimana jika pengguna ingin menginstal Wine untuk aplikasi Windows atau ingin menggunakan perangkat lunak proprietari23 atau perangkat lunak lain menggantikan perangkat lunak sumber terbuka yang telah ada (padahal saya ingin mereka 100% menggunakan FOSS24)?

Jawaban: bersabarlah dan maklumilah. Pendekatan kasarnya adalah “biar mereka gunakan Wine25 asalkan tetap pakai GNU/Linux”. Anda tidak berhak melarang pengguna untuk mengemulasikan aplikasi dengan menggunakan FOSS. Biarkan mereka menginstal Google Sketchup di Linux melalui Wine, sebagaimana aplikasi Windows lainnya. Kaidah dasar di sini adalah kebutuhan setiap pengguna komputer itu berbeda. Setiap pengguna berhak memilih perangkat lunaknya sendiri dan tidak boleh ada pembatasan dari siapa pun (baik secara terang-terangan atau hanya sindiran). Maka, penggunaan Wine untuk aplikasi Windows adalah sangat baik untuk pengguna demikian pula proprietari semisal Sublime Text. Hal ini perlu didukung karena ini penting untuk membuat kesan GNU/Linux ramah pengguna. Sebagai tambahan, jika Anda melarang pengguna untuk menggunakan Wine, maka ada konsekuensi buruk yang terjadi sebagai berikut.

  • Manfaat dari perangkat lunak Windows menjadi tidak bisa diambil. Padahal bayangkan saja kalau mahir menggunakan Sketchup di GNU/Linux. Dan masih terlalu banyak freewareproduktif lain26 yang bermanfaat. Yang jadi patokan bukan ketersediaan kode sumbernya tetapi cukup legal atau tidaknya.
  • Wine menjadi tidak berguna sama sekali (lalu untuk apa dia diciptakan?).
  • GNU/Linux kehilangan salah satu fitur terbaiknya yakni bisa menjalankan perangkat lunak Windows.

Maka jangan terburu-buru meninggalkan pengguna yang memerlukan bantuan dalam masalah ini. Justru dukung mereka untuk produktif dengan perangkat lunak tersebut. Lalu biar masyarakat tergerak menggunakan juga. Begitu cara memanfaatkan keadaan.

2.15  Pengguna Tidak Bisa Membaca Dokumen Berbahasa Inggris

Pertanyaan: bagaimana jika ada pengguna GNU/Linux yang tidak mampu membaca tulisan dalam Bahasa Inggris (padahal semua dokumentasinya tersedia lengkap dalam bahasa tersebut)?

Jawaban: bersabarlah dan maklumilah. Sadarilah bahwa Bahasa Inggris bukan bahasa kita. Maka akan sangat banyak pengguna yang bertanya kepada Anda karena tidak memahami apa kata kuncinya dalam Bahasa Inggris. Adapun penyelesaiannya adalah dengan jalan menerjemahkan. Ada 2 pilihan penerjemahan. Yang pertama, terjemahkan secara live saat dia bertanya. Carikan jawabannya lalu terjemahkan untuknya tetapi jangan lupa untuk mengarahkannya kepada Google Translate. Yang kedua, sedikit lebih canggih lagi, terjemahkan satu artikel yang Anda nilai paling bagus untuk pemula dan berikan link-nya setiap ada pertanyaan yang sama. Contoh untuk pilihan kedua ini adalah Tutorial Shell Dasar 5 Menit. Tutorial terjemahan yang seperti ini akan banyak diperlukan untuk bidang-bidang khusus yang memerlukan keahlian mendalam. Oleh karena itu, jika Anda mampu, lakukanlah.

2.16  Pengguna Tidak Menghargai Terjemahan Anda

Pertanyaan: bagaimana jika pengguna di Indonesia sama sekali tidak mau menggunakan antarmuka grafis perangkat lunak yang sudah susah payah saya terjemahkan seluruhnya ke dalam Bahasa Indonesia (saya mengerjakannya di Transifex27 maupun Launchpad28)?

Jawaban: bersabarlah dan maklumilah. Indonesia sedang dalam masa transisi. Anda berhak menerjemahkan segala antarmuka perangkat lunak dari Bahasa Inggris ke dalam Bahasa Indonesia. Namun Anda tidak berhak mengendalikan pengguna untuk menggunakan terjemahan Anda. Perlu diketahui, setiap pengguna membutuhkan standardisasi untuk User Experience (UX). Sedangkan bahasa adalah elemen paling krusial dalam UX yang tidak bisa ditawar-tawar. Perubahan dalam segi bahasa adalah masalah yang sangat besar. Sehingga untuk memigrasikan pengguna dari antarmuka Bahasa Inggris ke Bahasa Indonesia membutuhkan waktu yang lama. Lebih lama daripada migrasi Windows ke GNU/Linux itu sendiri.

Bahasa sama sekali bukan perkara remeh. Bayangkan saja Anda menjalankan shell29 tanpa bahasa apa pun. Apa yang bisa Anda lakukan? Sama halnya dengan pengguna. Jadi, sudah menjadi hak pengguna untuk menggunakan antarmuka berbahasa Inggris karena UX mereka terbangun sejak masih anak-anak. Semua pengguna di Indonesia akrab dengan kata-kata asing semacam copypastecutprint, dan sebagainya. Anda tidak bisa dengan mudah mengubah kebiasaan tersebut menjadi salin, tempel, potong, cetak, dan seterusnya kecuali pengguna memang sudah dididik untuk menggunakan bahasa tersebut semenjak awal atau secara khusus untuk memigrasikan bahasa. Permasalahan paling rumit adalah Anda akan berhadapan dengan jumlah pengguna yang teramat besar dalam hal ini.

Penulis sendiri memilih antarmuka berbahasa Inggris walaupun penulis sanggup dan senang menggunakan antarmuka berbahasa Indonesia. Mengapa? Karena penulis merasa pekerjaan lebih cepat selesai dengan antarmuka tersebut. Penulis tahu ada banyak string yang masih kosong pada banyak perangkat lunak semacam Shutter, Evince, Y PPA Manager, dan lain sebagainya. Karena kekurangan inilah, antarmuka jadi terlihat kurang rapi. Maka jalan terbaik adalah menggunakan bahasa antarmuka asli yakni Bahasa Inggris. Berikut ini penulis sebutkan beberapa kerugian menggunakan bahasa terjemahan yang bukan bahasa asli perangkat lunak.

  • Bahasa Inggris pada seluruh string pada satu perangkat lunak harus diterjemahkan secara lengkap, tidak boleh ada yang tidak diterjemahkan. Sedangkan untuk 1 perangkat lunak saja (misalnya Shutter) ada ribuan string yang menanti untuk diterjemahkan. Terlebih lagi, ada puluhan ribu perangkat lunak yang belum memiliki terjemahan Bahasa Indonesia. Sampai di sini saja jelas sudah betapa berat permasalahan bahasa ini.
  • Jika bahasa antarmuka telah diterjemahkan seluruhnya ke dalam Bahasa Indonesia, maka masih tersisa Help dari perangkat lunak yang bersangkutan menanti untuk diterjemahkan. Help terpisah dari antarmuka dan setiap Help biasanya memiliki ratusan bahkan ribuan halaman berbahasa Inggris hanya untuk cara penggunaan. Ambil contoh Help milik Netbeans. Sayangnya, seluruh perangkat lunak memiliki Help sehingga jumlah total objek penerjemahan meningkat berkali lipat.
  • Jika Help pun sudah diterjemahkan seluruhnya, maka masih tersisa sesuatu yang disukai banyak orang yaitu update. Jika ada suatu update dari upstream untuk antarmuka dan help, maka slot kosong akan bertambah dengan sendirinya, menanti untuk diterjemahkan lagi. Dengan total string dalam 1 perangkat lunak, dikalikan jumlah perangkat lunak yang tersedia di repositori resmi maupun PPA, ditambah jumlah Help dikalikan jumlah perangkat lunak, maka betapa luar biasa besarnya jumlah update yang harus diterjemahkan seandainya setiap perangkat lunak merilis 1 string baru saja. Lihatlah, bahasa sama sekali bukan perkara remeh.

Dengan melihat contoh kerugian di atas, tampaklah bahwa masalah penerjemahan ini sangat besar. Namun, apa yang bisa Anda lakukan dengannya? Berikut ini beberapa solusinya.

  • Terjemahkanlah perangkat lunak terpopuler. Beberapa pengguna kawakan telah berusaha menerjemahkan Mozilla Firefox dengan sangat baik30 ke dalam Bahasa Indonesia. Penulis menilai langkah ini cerdas karena mereka langsung memilih perangkat lunak yang jelas digunakan oleh orang banyak. Secara otomatis, terjemahan akan langsung digunakan dan UX akan terbentuk dengan sendirinya. Anda bisa meniru langkah mereka untuk fokus pada perangkat lunak populer semacam Nautilus atau Dolphin. Untuk bisa melakukan ini, Anda harus memiliki jiwa marketer yakni tahu betul perangkat lunak mana yang paling banyak dipakai oleh pasar.
  • Gunakan kekuasaan Anda. Penerjemahan yang memerlukan sumber daya begitu besar pada paparan di atas akan terasa ringan jika dikerjakan secara gotong royong. Maka, jika Anda seorang manajer, Anda bisa mengajak sekian banyak junior menerjemahkan.

Janganlah Anda kaget jika sedikit pengguna peduli dengan terjemahan Anda dan lebih sedikit lagi yang terlibat. Maka bersabar adalah jalan paling baik. Lakukan saja dengan ikhlas, mulai dari hal kecil, dari diri sendiri, sekarang juga.

2.17  Pengguna Mengkritik Keras Suatu Sistem

Pertanyaan: bagaimana jika pengguna menganggap jelek KDE (padahal saya menyukainya), demikian pula untuk perangkat lunak semacam LibreOffice atau GIMP?

Jawaban: bersabarlah dan maklumilah. Jika Anda ditanya, apakah sistem Anda sempurna, maka apa jawaban Anda? Tentunya tidak. Lebih jauh lagi, jika ditanya apakah Anda developer inti sistem yang bersangkutan? Jika jawabannya juga tidak, maka lebih-lebih lagi Anda harus bersabar. Developer saja mau dikritik (baca: bug report dan feature request).

Kritik terhadap FOSS itu sangat penting demi kemajuannya sendiri. FOSS untuk desktop, dalam bidang desain grafis dan sains, belum menandingi perangkat lunak non-FOSS. Sedangkan pengguna di Indonesia, kebanyakannya adalah pegiat di antara dua bidang ini. Yang bisa kita lakukan hanyalah fokus kepada salah satu FOSS yang ada untuk memperbanyak karya dan tutorialnya. Contohnya seperti web-web berikut:

Maka pilihlah salah satu jalan berikut untuk menghadapinya:

  • Fokus memperbanyak karya dan tutorial untuk 1 FOSS.
  • Fokus mengirim patch untuk 1 FOSS yang banyak dikritik.
  • Fokus menciptakan FOSS baru31 yang lebih baik daripada yang banyak dikritik.
  • Jawablah pengguna yang mengkritik dengan arahan untuk bersabar, sebagaimana Anda juga.

Poin pertama dan keempat dikhususkan untuk pengguna murni. Poin kedua dan ketiga untuk pengguna yang mampu memrogram. Jika Anda pengguna, maka buatlah sebuah blog yang tematik seperti contoh di atas. Dipandang dari segi pengguna, maka masyarakat membutuhkan banyak sekali tutorial dalam Bahasa Indonesia untuk macam-macam FOSS yang ada. Dipandang dari segi developer, masyarakat Indonesia yang sudah sanggup memrogram perlu memperbanyak perangkat lunak GNU/ Linux karena masyarakat Indonesia yang selainnya membutuhkannya.

Penulis memberikan contoh blog tematik apa yang bisa Anda dirikan untuk segi pandangan pertama (pengguna). Anda bisa membuat blog dengan fokus kepada salah satu FOSS ini:

  1. LibreOffice (mewakili perangkat lunak office GNU/Linux),
  2. KDE (bagaimana menggunakan desktop di GNU/Linux),
  3. Wine (bagaimana memakai perangkat lunak Windows di GNU/Linux),
  4. GIMP (bagaimana desain grafis profesional di GNU/Linux),
  5. LaTeX (bagaimana penyusunan skripsi dengan GNU/Linux),
  6. Scilab atau Octave (gantinya Matlab di GNU/Linux),
  7. KicadgEDAavrdude (mewakili elektronika dan embedded system GNU/Linux).

Penulis memandang perlunya ada blog khusus yang fokus kepada tiap-tiap FOSS yang paling banyak digunakan masyarakat. Paling diutamakan adalah LibreOffice. Maka jika Anda menguasai salah satunya, dirikanlah blog tematik khusus FOSS tersebut. Perbanyak tutorialnya. Lalu jika ada pengguna yang mengkritik lagi, paling tidak Anda bisa memberikan linkkepada blog tersebut. Inilah cara memintarkan masyarakat.

Penulis memberikan pula contoh ide untuk perangkat lunak yang patut diadakan bagi masyarakat.

  • Aplikasi pendidikan aqidah dan akhlaq untuk anak,
  • Maktabah Syamilah versi GNU/Linux,
  • Download Manager,
  • Proxy Manager (GUI),
  • Aplikasi pelatihan GNU/Linux,
  • Aplikasi bisnis UKM,
  • Aplikasi pelatihan cara menggunakan komputer untuk orang awam,
  • Aplikasi KBBI32,
  • Aplikasi peta jalan raya Indonesia,
  • GUI Switcher,
  • Personal Cash Manager,
  • Simple Accounting System.

Jika Anda memerhatikan, maka akan tampak bahwa ide-ide yang disebutkan di atas belum terealisasikan atau setidaknya belum banyak diadakan oleh masyarakat. Paling utama untuk platform GNU/ Linux. Maka inilah jalan yang tepat untuk menunjang transisi masyarakat.

2.18  Bagaimana Mempromosikan Aplikasi Kepada Masyarakat?

Pertanyaan: saya menciptakan aplikasi open source yang sangat diperlukan masyarakat tetapi sulit membuat masyarakat menggunakannya. Bagaimana cara promosinya?

Jawaban: penulis tawarkan solusi yang sudah dijawab oleh kedudukan Anda sendiri selaku senior. Terlebih lagi, jika Anda termasuk senior lintas komunitas. Solusi itu hanyalah PM.

  1. Apa Anda lintas komunitas? Apa Anda punya akun di semua forum? Apa Anda setiap hari bisa melihat panel “Warga yang baru bergabung” di forum-forum? PM mereka satu per satu dengan bahasa yang sopan. Istimewa untuk Anda yang memilih forum, selalu sertakanlah gambar (skrinsot) di tiap PM Anda. Ini sangat manjur untuk tipe aplikasi pendidikan semacam Otodidak. Mengapa? Karena setiap warga yang baru bergabung bisa dipastikan 99% semuanya newbie. Sehingga pasti disambut dengan baik oleh mereka karena menyangkut kemaslahatannya dan karena ada gambarnya. Unggah gambar di WordPress Anda lalu masukkan URL-nya ke dalam kode BBCode PM Anda. Dengan ini, otomatis setiap Anda salin-tempel PM, gambar akan selalu ikut dikirim. Jangan remehkan gambar (skrinsot) karena justru karena inilah banyak pengguna mau mengunduh aplikasi Anda.
  2. Apa Anda menciptakan aplikasi untuk nonpemula (misalnya ERP)? Baca daftar nama warga forum satu per satu dimulai dari yang terawal gabung. PM mereka dengan bahasa yang sopan mengenai aplikasi Anda.
  3. Untuk kedua solusi di atas, gunakanlah KNotes untuk menyimpan kode JCode/BBCode/HTML dari posting PM Anda. Cukup sekali menulis lalu Anda bisa salin-tempel berulang kali untuk orang yang berbeda-beda.
  4. Solusi-solusi ini telah diterapkan oleh penulis sendiri dan Anda bisa melakukannya tidak dalam satu hari selesai. Penulis melakukannya sewaktu-waktu perlu.

Jangan gunakan solusi-solusi ini untuk kegiatan spamming. Demi memperjelas solusi penulis berikut ini contoh BBCode penulis untuk aplikasi Otodidak yang penulis PM-kan kepada warga-warga baru di Forum Ubuntu Indonesia:

Bismillahirrahmanirrahim.
Untuk akang yang baru bergabung dan ingin belajar Linux dasar, silakan gunakan aplikasi Otodidak untuk belajar Linux:

http://ubuntu-indonesia.com/forums/ubbthreads.php/topics/136297/1

[img]http://malsasa.files.wordpress.com/2013/02/pemula−1.png[/img]
Bisa juga diberikan untuk kerabat yang baru belajar Linux. Semoga bermanfaat.

Kalimat di atas sudah penulis atur agar tidak ada kesan menggurui untuk warga baru yang ternyata masuk tingkatan menengah bahkan ahli, agar tidak ada kesan promosi atau iklan, dan menjaga kesopanan kepada penerima.

3  Kesimpulan

  1. Bersabarlah menghadapi transisi masyarakat.
  2. Ajarilah masyarakat menggunakan GNU/Linux dengan sebaik-baiknya dan secara terus menerus.
  3. Kumpulkan yang terpisah, yakni satukan materi yang terpisah-pisah tetapi masih satu bidang menjadi satu blog atau tulisan GNU/Linux yang spesifik. Misalnya blog khusus Libreoffice. Menulislah secara konsisten, dan berikan kepada masyarakat yang membutuhkan.
  4. Tulislah sebaik mungkin panduan-panduan mengenai GNU/Linux dalam Bahasa Indonesia.
  5. Perbanyak panduan GNU/Linux yang bermutu dalam Bahasa Indonesia.

4  Penutup

Sekali lagi, Indonesia masih dalam masa transisi. Anda tidak dapat memaksa seluruh masyarakat untuk menggunakan GNU/Linux. Sekali lagi, Anda tidak dapat memaksa seluruh masyarakat untuk menggunakan GNU/Linux. Bagaimana bisa Anda menginginkan masyarakat menggunakan GNU/Linux jika mereka tidak tahu cara menggunakannya? Maka satu hal yang pasti, tulislah tutorial untuk masyarakat. Mulailah memfokuskan diri untuk menulis. Tulislah panduan-panduan penggunaan salah satu FOSS yang Anda kuasai. Biarkan masyarakat menemukan panduan Anda dari Google agar mereka semakin percaya diri. Jika Anda tidak mampu menulis, maka jadilah pemaaf dan bersikaplah ramah terhadap para penanya di komunitas.

Tulisan ini murni pendapat pribadi penulis. Tulisan ini sifatnya hanya saran. Pasti terdapat kesalahan dan oleh karena itu penulis meminta maaf sebesar-besarnya kepada Anda. Jika Anda tidak sepakat dengan tulisan ini, maka tulis esai yang lebih baik.

5  Tentang Dokumen Ini

Dokumen versi web ini mulai ditulis pada 24 Oktober 2013. Dokumen ini ditulis dengan LaTeX dengan antarmuka Gummi (kemudian Texmaker sejak sejak 29 Desember 2013) di atas Ubuntu 12.04. Dokumen ini diubah dari LaTeX menjadi HTML dengan bantuan Hevea. Dokumen ini tidak ditutup kemungkinannya untuk direvisi pada masa mendatang. Jika penulis membuat kesalahan dalam dokumen ini, maka penulis memohon maaf sebesar-besarnya.

6  Ucapan Terima Kasih

Terima kasih penulis sampaikan kepada Akang Ridwan Fajar, Akang Ridlo Widyanto, dan akang-akang lain yang tidak bisa saya sebut namanya. Terima kasih Anda telah mengoreksi esai ini. Terima kasih atas kontribusi Anda yang demikian besar hingga tulisan ini dirilis.

7  Tentang Penulis

Penulis adalah seorang warga Forum Ubuntu Indonesia dan pemilik blog http://malsasa.wordpress.com. Penulis menyediakan buku-buku gratis panduan belajar Linux untuk pemula33. Penulis mendukung penggunaan perangkat lunak legal terutama FOSS di Indonesia. Penulis dapat dihubungi melalui SMS di nomor 0896 7923 7257.


1
Dokumentasi berbahasa Indonesia itu penting sekali karena masyarakat Indonesia berbahasa Indonesia. Ini lebih penting dari antarmuka pengguna berbahasa Indonesia
2
Tutorial terbanyak tersedia dalam Bahasa Inggris. Nomor dua, tutorial terbanyak tersedia dalam Bahasa Indonesia tetapi berbasis Ubuntu. Contoh mudahnya tutorial instalasi modem. Distro lain, belum. Gunakanlah Google untuk mengetahuinya.
3
apt-web adalah sebuah perangkat lunak berbasis web ciptaan Fajran Iman Rusadi yang fungsinya mirip dengan Softpedia.com untuk Windows, yakni menyediakan installer komplet untuk aplikasi-aplikasi Ubuntu. Installer yang diunduh dari apt-web bisa diinstal di Ubuntu secara offline, sama seperti instalasi aplikasi di Windows. apt-web ini sangat memudahkan pengguna Ubuntu yang tidak punya koneksi internet langsung untuk menginstal aplikasi. Sisi kekurangan infrastrukturnya adalah apt-web belum ada untuk distro populer keluarga Ubuntu (DEB) macam Linux Mint, ZorinOS, elementaryOS serta disto berbasis non-apt semacam IGOS (RPM) dan Manjaro (tar.xz). Hal ini menghambat pengguna baru dalam menginstal aplikasi karena GNU/Linux mewajibkan adanya koneksi internet langsung untuk itu.
4
Selain apt-web, masih banyak infrastruktur lain yang sangat bermanfaat untuk msyarakat semisal openSUSE Build Service (https://build.opensuse.org), SUSE Studio (http://susestudio.com), Launchpad (https://launchpad.net), OpenVim (http://openvim.com), dan lain-lain.
5
Utamanya memang GNU/Linux, tetapi FreeBSD sekeluarga dan Windows yang legal tetap direkomendasikan oleh penulis. Jika disebut nama sistem operasi, itu berarti penulis maksudkan beserta seluruh aplikasinya. Misalnya, jika Windows Anda legal maka Microsoft Office-nya juga harus legal. Penulis juga tidak membatasi sistem operasi baru semacam ReactOS.
6
Frequently Asked Question (Pertanyaan yang Sering Ditanyakan). FAQ adalah dokumen yang selalu ada di setiap komunitas komputer. Tujuannya supaya menghemat waktu kedua belah pihak, baik yang ditanya maupun yang bertanya.
7
Manfaat adanya aplikasi pelatihan untuk pengguna selain memintarkan rakyat Indonesia juga memperbanyak jumlah aplikasi buatan masyarakat Indonesia.
8
am.bu.ra.dul [a cak] centang perenang; berantakan; porak-poranda: para penghuni di sekitar tempat itu hanya mampu diam dan kesal, tanpa dapat berbuat apa-apa menyaksikan keadaan yg – (Sumber: Kamus Besar Bahasa Indonesia Edisi III (2005))
9
Hal ini sering terjadi di komunitas.
10
http://kask.us/g8CvzSIAPh
11
Mailing List atau juga dikenal sebagai grup e-mail. Contohnya tanyajawab@linux.or.id.
12
[SOLVED] adalah tag yang wajib dibubuhkan pada judul jika pertanyaan sudah terselesaikan.
13
KNotes adalah aplikasi bawaan KDE untuk menulis catatan yang bisa ditambah dan diakses kapan saja dari system tray.
14
Gentoo adalah disto kelas berat yang instalasinya saja bisa memakan waktu 1 minggu.
15
Rahmad M Samik Ibrahim mengatakan dalam presentasinya tahun 2004 “Samakan dengan teman anda!” pada halaman 13. Beliau juga menegaskan alasan memilih distro yang sama dengan teman Anda (mayoritas pengguna) yaitu “Mudah bertanya/konsultasi”. Beliau menegaskan pula “JANGAN memilih yang “KATANYA BAGUS”. Presentasi tersebut masih bisa dibaca di http://rms46.vlsm.org/1/99.pdf.
16
Penulis memberikan rekomendasi Ubuntu secara global. Jika Anda mengetahui ada masalah pada pengguna yang menghalanginya, maka barulah direkomendasikan Linux Mint, PCLinuxOS, atau distro lain yang bisa meredam penghalang tersebut. Jika pengguna justru bisa menggunakan GNU/Linux dengan baik di distro selain Ubuntu, maka di situ rekomendasi penulis tidak lagi berlaku.
17
Alasan lain yang setara kuatnya masalah rekomendasi Ubuntu adalah persoalan internet masyarakat. Kebanyakan pengguna komputer Indonesia tidak memiliki sambungan internet langsung, sedangkan GNU/Linux selalu meminta internet untuk instalasi aplikasi. Ubuntu memiliki massa yang besar sehingga punya metode-metode instalasi aplikasi offline yang banyak. Di Indonesia, Ubuntu didukung oleh teknologi apt-web buatan Fajran Iman Rusadi sehingga masyarakat bisa menginstal aplikasi secara offline dan ini sudah terbukti. Selain itu, Ubuntu masih punya metode lain yang lebih pasti dan lebih mudah untuk itu yakni dengan perintah spesial apt-get. Ia sudah tersedia di dalam Ubuntu itu sendiri. Selengkapnya bisa Anda baca di http://malsasa.wordpress.com/2014/01/27/panduan-ringkas-apt-get/.
18
Backup adalah kegiatan membuat cadangan data dengan cara copy-paste ke partisi lain. Backup kadang berrmakna hasil kegiatan copy-paste itu sendiri.
19
http://www.cgsecurity.org/wiki/TestDisk Partition Recovery and File Undelete
20
Restore adalah kegiatan mengembalikan data yang sudah di-backup ke tempatnya semula setelah terjadi kerusakan sistem. Ini adalah prosedur paling penting dalam menyelamatkan data.
21
Dual boot adalah kondisi adanya 2 sistem operasi dalam 1 komputer. Biasanya pengguna melakukannya antara Windows dan GNU/Linux. Jika ada 3 sistem operasi, maka namanya menjadi triple boot. Dan seterusnya.
22
Dengan catatan, jika ia legal.
23
Dengan catatan, jika ia legal.
24
Free/Open Source Software.
25
Dengan catatan, program yang diemulasikan adalah legal.
26
Cek majalah komputer untuk mengetahuinya.
27
http://transifex.com
28
http://translations.launchpad.net
29
Shell adalah program penerjemah perintah kepada sistem operasi. Shell adalah program pengguna paling penting dalam sistem operasi. Contoh shell populer adalah Microsoft Command Prompt, sh, tcsh, ksh, bash, dan zsh.
30
https://localize.mozilla.org/id/
31
Bukan distribusi GNU/Linux baru.
32
Kamus Besar Bahasa Indonesia.
33
http://malsasa.wordpress.com/pdf


Filed under: Linux

Kumpulan Ebook Tutorial & Source Code Pemrograman C++ dengan Qt Framework Edisi 12 – 15

$
0
0

Kumpulan PPA Ubuntu yang Berguna

$
0
0

Bismillahirrahmanirrahim.

Tulisan ini tersedia dalam PDF.

distributor-logo-ubuntuAnda butuh aplikasi dari PPA? Ingin tahu aplikasi bagus apa saja yang ada di sana? Ingin instal aplikasi Ubuntu dari PPA? Saya kumpulkan sekian banyak alamat repo PPA yang banyak dibutuhkan masyarakat beserta perintah instalasinya. Tulisan ini terinspirasi dari salah satu laman Askubuntu1 yang mengumpulkan PPA-PPA yang bagus dalam 1 trid. Saya berusaha memberi banyak skrinsot di sini agar menarik. Sebagian besar skrinsot di sini berasal dari laman Askubuntu tersebut atau dari beberapa portal Ubuntu atau langsung dari situs resminya. Semoga tulisan ini bermanfaat.

Catatan Penting! Saya hanya mengumpulkan daftar PPA. Seluruh keputusan instalasi/konfigurasi ada di tangan Anda beserta semua risikonya. Jika Anda belum mengerti bagaimana sistem kerja apt-get, jangan mencoba memasang PPA sebelum memahaminya dahulu. Silakan merujuk ke sini untuk memahami dasar-dasar apt-get.

A. Apa Itu PPA?

Personal Package Archive (PPA) adalah server repo dari Launchpad.net milik Canonical (perusahaan yang membuat Ubuntu) untuk menampung aplikasi-aplikasi buatan developer indie yang tidak termasuk ke dalam repo resmi Ubuntu. PPA pada satu sisi berisi aplikasi yang sama dengan yang di repo tetapi versi terbaru, dan pada sisi lain berisi aplikasi yang tidak ada di repo. Dengan kata lain, PPA menampung banyak aplikasi berguna. Berikut ini gambar dari laman salah satu PPA yang ada di antara sekian banyak lainnya. Anda bisa mengunjungi http://launchpad.net untuk mencari sendiri yang Anda suka.

B. Apa Gunanya PPA?

Untuk Pengguna

  1. Anda ingin Libreoffice terbaru? Jangan menunggu repo resmi karena butuh waktu lama2 sampai paket resmi Libreoffice masuk ke sana. Instal Libreoffice terbaru dari PPA. Demikian pula untuk aplikasi lain semacam uGet, KDE, dan lain-lain.
  2. Anda ingin aplikasi yang tidak ada atau belum ada di repo resmi? Instal dari PPA. Tidak semua aplikasi yang bisa dipakai di Ubuntu itu ada di repo resmi. Biasanya hanya karena beda madzhab. Repo resmi hanya mengizinkan open source sedangkan aplikasinya bukan open source. Contoh yang seperti ini banyak sekali, seperti Sublime Text dan lain-lain.

Untuk Developer

  1. Anda developer? Daripada susah-susah menembus seleksi untuk masuk repo, mending Anda paketkan sendiri aplikasi Anda di PPA. Orang lebih mudah memperoleh aplikasi Anda.
  2. Anda punya aplikasi yang masuk repo resmi? Ingin menyediakan selalu versi baru untuk pengguna tapi sulit memasukkan versi baru ke repo resmi? Buatlah PPA untuk aplikasi Anda. Biar pengguna upgrade aplikasi Anda dari PPA.
  3. Anda ingin feedback dari pengguna berupa bug report? Masukkan aplikasi Anda di PPA Launchpad dan dapatkan gratis fitur bugtrack plus plus.
  4. Anda ingin aplikasi Anda diterjemahkan ke bahasa lain oleh komunitas? Masukkan juga ke PPA dan dapatkan gratis fitur terjemah antarmuka aplikasi yang sangat canggih.

C. Cara Menginstal Aplikasi dari PPA

1. Cara Terminal 1

Jika Anda melihat di tutorial mana pun di dunia 3 baris perintah seperti ini:

sudo add-apt-repository ppa:rye/ubuntuone-extras 
sudo apt-get update 
sudo apt-get install indicator-ubuntuone

maka lakukanlah di terminal 3 perintah tersebut. Lihat gambar Terminal berikut. Perhatikan perintah-perintah yang saya beri garis bawah merah.cara-terminal1

Pada bagian pertama ini, apabila Anda mendapat error pada GPG, abaikan saja. Itu bukan masalah.

caraterminal1b

Pada bagian kedua, biarkan sampai selesai. Apabila ada error, merujuklah ke panduan apt-get ini.

caraterminal1c

2. Cara Terminal 2

Jika Anda melihat di tutorial mana pun tulisan seperti ini:

ppa:rye/ubuntuone-extras lalu instal paket indicator-ubuntuone

maka itu artinya sama dengan cara sebelumnya. Anda hanya perlu memakai perintah apt-add-repository saja. Ini hanya bentuk ringkasnya saja. Lihat gambar ini.

caraterminal2

Catatan: sebenarnya untuk instalasi PPA, yang paling penting hanyalah sepenggal alamat yang diawali tulisan ppa: yang saya beri garis bawah merah di atas.

3. Cara Terminal 3

Jika Anda melihat di tutorial mana pun tulisan seperti ini:

sudo add-apt-repository ppa:rye/ubuntuone-extras && sudo apt-get update && sudo apt-get install indicator-ubuntuone

maka itu artinya perintah one-liner. Itu adalah 3 perintah seperti cara terminal 1 di atas hanya saja disingkat jadi 1 baris. Dengan perintah one-liner seperti ini, Anda tidak usah salin-tempel berulang kali. Ini dimungkinkan karena ada kode penghubung && yang otomatis melanjutkan perintah berikutnya. Lihat gambar berikut.

caraterminal3

4. Cara GUI 1

Jika Anda melihat salah satu dari keduanya, maka buka program Software Updates Anda dari menu Ubuntu > klik tombol Settings > masuk tab Other Software > Add > salin tempel kode yang diawali ppa: semisal ppa:rye/ubuntuone-extras ke dalamnya lalu Add Source. Perhatikan tanda-tanda merah pada gambar di bawah. Tunggu sebentar lalu lakukan sudo apt-get update dari Terminal. Anda akan memperoleh satu repo baru sesuai kode PPA yang Anda masukkan barusan. Tutup program Software Updates lalu instal aplikasi yang diinginkan. Lihat gambar ini.

caragui1

5. Cara GUI 2

Jika Anda bingung dengan cara GUI 1, maka gunakan saja Synaptic Package Manager. Ambil menu Preferences > Repository > buka tab repo > Add > salin tempel kode > OK. Tunggu sebentar lalu klik Reload3. Anda bisa menginstal aplikasi yang diinginkan dengan mencari nama aplikasi yang baru ditambahkan PPA-nya > klik namanya > centang Install > Apply > Add Source > tunggu sampai selesai. Cara GUI 2 ini adalah cara yang saya pilih dalam hampir seluruh kegiatan instalasi saya sendiri. Ini yang termudah menurut hemat saya. Oleh karena itu, kalau Anda baru menginstal Ubuntu, segeralah menginstal synaptic dari repo. Lihat gambar ini.

caragui2

D. PPA untuk Desktop Environment

1. KDE

sudo add-apt-repository ppa:kubuntu-ppa/backports
sudo apt-get update
sudo apt-get install kde-standard kubuntu-desktop

2. GNOME

sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update
sudo apt-get install gnome-shell ubuntu-gnome-desktop

3. XFCE

sudo add-apt-repository ppa:xubuntu-dev/xfce-4.10
sudo apt-get update
sudo apt-get install xubuntu-desktop

4. LXDE

sudo add-apt-repository ppa:lxde/ppa
sudo apt-get update
sudo apt-get install lxde

5. Enlightenment

sudo apt-add-repository ppa:efl/trunk
sudo apt-get update
sudo apt-get install e17

6. LXQT

sudo add-apt-repository ppa:lubuntu-dev/lubuntu-daily
sudo add-apt-repository ppa:gilir/q-project
sudo apt-get update

7. Cinnamon

sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable
sudo apt-get update
sudo apt-get install cinnamon

8. MATE

sudo add-apt-repository "deb http://packages.mate-desktop.org/repo/ubuntu $(lsb_release -cs) main"
sudo add-apt-repository "deb http://repo.mate-desktop.org/ubuntu $(lsb_release -cs) main"
sudo add-apt-repository "deb http://mirror1.mate-desktop.org/ubuntu $(lsb_release -cs) main"
sudo apt-get update
sudo apt-get install mate-archive-keyring
sudo apt-get update
sudo apt-get install mate-core mate-desktop-environment

E. PPA untuk Aplikasi Desktop

1. Wine

Semua orang selalu menggunakan Wine untuk menjalankan aplikasi Windows di Linux.

ppa:ubuntu-wine/ppa
sudo apt-get update 
sudo apt-get install wine

2. Libreoffice

Aplikasi pengganti Microsoft Office yang terbaik saat ini.

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice

3. Ubuntu Tweak

ubuntutweak

Aplikasi tweaking untuk Ubuntu yang sangat lengkap. Ia bisa melakukan segala macam konfigurasi secara GUI tanpa Terminal.

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

4. Sublime Text

sublime-text-3

Sublime Text adalah editor pemrograman yang baru. Ia tidaklah open source tetapi sangat banyak pengguna Linux menyukainya untuk menulis kode. Pengguna menyukainya karena ia memiliki itur yang sangat lengkap, inovatif, dan tampilannya indah. Saat ini, boleh dibilang inilah editor pemrograman nonopen source yang paling populer di kalangan pengguna Linux.

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

5. Adobe Brackets

brackets

Bracket adalah “Dreamweaver” untuk Linux dari Adobe sendiri. Kini Brackets telah menjadi open source dan dikembangkan oleh komunitas. Bracket adalah editor pemrograman untuk desain dan pengembangan web di atas teknologi HTML, CSS, dan Javascript. Mirip Dreamweaver, Brackets mengirimkan perubahan kode HTML secara instan tanpa Save atau Reload sama sekali. Jika Anda mencari pengganti Dreamweaver untuk Linux, ambillah Brackets. Ia tersedia untuk Linux melalui PPA.

sudo add-apt-repository ppa:webupd8team/brackets
sudo apt-get update
sudo apt-get install brackets

6. MyUnity

myunity

Aplikasi khusus untuk tweaking terhadap Unity Desktop Environment (antarmuka Ubuntu yang sekarang).

sudo add-apt-repository ppa:myunity/ppa
sudo apt-get update 
sudo apt-get install myunity

7. Y PPA Manager

yppa

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

8. Emerald Window Decorator

emerald

Salah satu window decorator paling cantik yang legendaris di Linux. Jika dipasang di Ubuntu, tampilan border jendela akan diatur olehnya. Emerald memiliki sangat banyak tema jendela yang memukau.

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install emerald

9. Shutter

Aplikasi skrinsot profesional di Linux. Yang terlengkap saat ini dan bisa menggantikan aplikasi SnagIT di Linux.

sudo add-apt-repository ppa:shutter/ppa
sudo apt-get update
sudo apt-get install shutter

10. Oracle Java

Instal ini jika memerlukan JRE.

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

11. Docky

docky

Aplikasi dock semisal Rocketdock di Windows untuk Linux.

sudo add-apt-repository ppa:docky-core/ppa
sudo apt-get update
sudo apt-get install docky

Sumber gambar: http://www.ubuntugeek.com/how-to-install-docky-from-ubuntu-ppa.html

12. Android Tools

Android Tools dan Fastboot untuk Linux.

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot

13. Chromium

Versi open source dari Google Chrome.

sudo add-apt-repository ppa:chromium-daily/stable
sudo apt-get update
sudo apt-get install chromium-browser

14. Nemo

Hasil modifikasi Nautilus File Manager oleh komunitas Mint.

sudo add-apt-repository ppa:webupd8team/nemo
sudo apt-get update
sudo apt-get install nemo

15. Marlin

File manager enteng buatan komunitas elementaryOS.

sudo add-apt-repository ppa:marlin-devs/marlin-daily 
sudo apt-get update 
sudo apt-get install marlin

16. IGN SDK

Software development kit untuk membuat aplikasi destop berbasis HTML5. Ini dibuat oleh komunitas Indonesia Goes Open Source.

sudo apt-add-repository ppa:ubunteroz/ppa
 sudo apt-get update
 sudo apt-get install ignsdk ignsdk-devtools ignsdk-examples

17. GRUB Customizer

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

18. GRUB Repair

sudo add-apt-repository ppa:yannubuntu/boot-repair 
sudo apt-get update
sudo apt-get install boot-repair

19. BURG

sudo apt-add-repository ppa:n-muench/burg
sudo apt-get update
sudo apt-get install burg

20. Cairo Dock

Aplikasi dock layaknya Docky.

sudo apt-add-repository ppa:cairo-dock-team/ppa
sudo apt-get update
sudo apt-get install cairo-dock cairo-dock-plug-ins

21. Google Chrome

Browser ajaib keluaran Google yang cepat dan disukai banyak orang.

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
 sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
 sudo apt-get update
sudo apt-get install google-chrome-stable

22. uGet Download Manager

uget

Salah satu download manager terbaik di Linux dan favorit saya sampai hari ini. Mendukung proxy authentication dan bisa splitting dengan bantuan curl.

sudo apt-add-repository ppa:plushuang-tw/uget-stable 
sudo apt-get update
sudo apt-get install uget

23. Xtreme Download Manager

Salah satu download manager terbaru di Linux yang kecepatannya setara/lebih baik daripada IDM di Windows. Tampilan dan cara pemakaiannya pun persis IDM. Ini disukai banyak pengguna Linux Indonesia.

sudo add-apt-repository ppa:noobslab/apps 
sudo apt-get update
sudo apt-get install xdman

24. Flareget Download Manager

Salah satu download manager terbaru yang mirip sekali dengan IDM. Cepat dan punya integrasi dengan browser. Ini juga disukai banyak pengguna Linux Indonesia.

sudo add-apt-repository ppa:upubuntu-com/flareget-i386 
sudo apt-get update 
sudo apt-get install flareget

F. PPA untuk Applet

1. System Load Indicator Applet

aplet1 aplet1b

sudo add-apt-repository ppa:indicator-multiload/stable-daily
sudo apt-get update
sudo apt-get install indicator-multiload

2. ClassicMenu Indicator Applet

aplet2

Menu klasik GNOME 2 bisa Anda dapatkan kembali di Ubuntu yang sekarang dengan aplet ini. Ia akan otomatis ter-update jika ada program baru yang Anda instal. Persis seperti menu GNOME 2.

sudo add-apt-repository ppa:diesch/testing
sudo apt-get update
sudo apt-get install classicmenu-indicator

3. Hardware Sensors Indicator Applet

aplet3

Aplikasi indikator yang menayangkan sensor-sensor hardware semisal HDD, CPU, dan VGA.

sudo apt-add-repository ppa:alexmurray/indicator-sensors
sudo apt-get update
sudo apt-get install indicator-sensors

Lalu jalankan aplikasi Hardware Sensors Indicator dari menu Unity atau jalankan indicator-sensors dari Terminal.

4. CPUFreq

aplet4

Aplet ini bisa melakukan underclocking untuk mendinginkan laptop atau netbook Anda. Juga tentunya menghemat baterainya.

sudo apt-add-repository ppa:artfwo/ppa
sudo apt-get update
sudo apt-get install indicator-cpufreq

5. Sysmonitor Indicator Applet

aplet5

aplet5b

Sederhana saja. Hanya menampilkan berapa pemakaian prosesor dan RAM saat ini, dan juga macam-macam suhu dari sensor yang terdeteksi di ssitem Anda.

sudo apt-add-repository ppa:alexeftimie/ppa
sudo apt-get update
sudo apt-get install indicator-sysmonitor

6. Caffeine

aplet6

Caffeine membantu mencegah Ubuntu dari sleep.

sudo apt-add-repository ppa:caffeine-developers/ppa
sudo apt-get update
sudo apt-get install caffeine

7. Ejecter

aplet7

Aplet sederhana yang mirip Safely Removal di taskbar Windows. Ini bisa dipakai untuk USB flash disk, kartu memori, dan hard disk.

sudo apt-add-repository ppa:fredp/ppa
sudo apt-get update
sudo apt-get install ejecter

8. Virtualbox Indicator Applet

Aplet ini menyediakan jalan pintas membuka mesin virtual Anda. Tentunya Anda harus sudah membuatnya dulu di Virtualbox.

Untuk 12.04 ke atas (Python)

sudo apt-add-repository ppa:thebernmeister/ppa
sudo apt-get update
sudo apt-get install indicator-virtual-box

Untuk 11.10 ke bawah (Vala)

sudo apt-add-repository ppa:michael-astrapi/ppa
sudo apt-get update
sudo apt-get install indicator-virtual-box

9. Redshift

Redshift menambahkan suhu warna dari layar berdasarkan kondisi sekitar Anda. Ini membantu mengurangi iritasi mata jika Anda bekerja di depan layar pada malam hari.

sudo apt-add-repository ppa:jonls/redshift-ppa
sudo apt-get update
sudo apt-get install redshift

10. F.lux

F.lux membuat layar komputer Anda terlihat seperti ruangan yang Anda ada di situ, sepanjang waktu. Ketika matahari terbenam, F/lux membuat komputer Anda terlihat seperti cahaya indoor Anda. Di pagi hari, F.lux membuatnya terlihat seperti cahaya matahari lagi.

sudo apt-add-repository ppa:kilian/f.lux
sudo apt-get update
sudo apt-get install fluxgui

11. Ubuntu Cloud Applet

Untuk memantau status sinkronisasi dari akun Ubuntu One Anda.

sudo add-apt-repository ppa:rye/ubuntuone-extras
sudo apt-get update
sudo apt-get install indicator-ubuntuone

12. Tomate Applet

Indikator sederhana ini membantu Anda untuk berkonsentrasi. Anda menyalakannya sebelum ada masalah dan Anda harus berkonsentrasi untuk minimal 10 menit. Setelah aplet menjadi hijau Anda bisa istirahat kerja dan Anda telah menyelesaikan sesuatu.

Anda bisa menemukan informasi lebih lanjut mengenai teknik konsentrasi ini pada situs resminya (http://www.pomodorotechnique.com/). Anda bisa juga membaca laman http://en.wikipedia.org/wiki/Pomodoro_Technique untuk mengetahui teknik konsentrasi ini. Anda memulai pekerjaan, Anda istirahat dan aplet Tomate memberitahukan Anda berapa lama Anda menyelesaikan tugas.

sudo add-apt-repository ppa:stvs/tomate
sudo apt-get update
sudo apt-get install tomate

13. Syspeek Applet

Syspeek adalah indikator monitor sistem yang menampilkan pemakaian CPU, swap, hard disk, dan lalu lintas jaringan.

sudo add-apt-repository ppa:emptythevoid/syspeeknew
sudo apt-get update
sudo apt-get install syspeek

14. Pastie Applet

Aplikasi seperti Klipper di KDE tetapi untuk lingkungan Unity. Sangat bermanfaat untuk menyalin banyak teks tanpa kehilangan satu pun untuk ditempel (paste). Tentu karena semua salinan direkam dan bisa dipilih untuk ditempel.

sudo add-apt-repository ppa:hel-sheep/pastie
sudo apt-get update
sudo apt-get install pastie

15. TypeCatcher

TypeCatcher mampu mencari, menjelajahi, dan mengunduh Google Webfonts untuk pemakaian offline. Anda bisa pratayang fonta dengan ukuran yang bisa diperbesar.

sudo add-apt-repository ppa:andrewsomething/typecatcher
sudo apt-get update
sudo apt-get install typecatcher

16. Keylock Indicator Applet

Indikator ini menampilkan status keylock mana yang aktif dari caps, num, scroll, dan lain-lain.

sudo add-apt-repository ppa:tsbarnes/indicator-keylock
sudo apt-get update
sudo apt-get install indicator-keylock

17. Disper Indicator Applet

Indikator ini adalah antarmuka sederhana untuk Disper. Indikator ini mendeteksi monitor mana yang saat ini terhubung dengan komputer dan memberikan pilihan untuk mengaktifkan konfigurasi layar tunggal, klon, atau extended.

sudo add-apt-repository ppa:nmellegard/disper-indicator-ppa
sudo apt-get update
sudo apt-get install disper-indicator

18. Glipper

Clipboard manager untuk GNOME. Aplet ini seperti Klipper di KDE. Aplet ini menyimpan teks dari keyboard dan mouse sehingga Anda bisa mengakses clipboard dengan mudah menggunakan hotkey.

sudo add-apt-repository ppa:glipper-drivers/ppa
sudo apt-get update
sudo apt-get install glipper

19. Lookit Applet

Lookit adalah program penangkap skrinsot yang bisa dipakai memotret layar keseluruhan atau sebagian. Setelah memotret, Anda bisa menyimpan di destop atau mengunggahkan ke server FTP, SSH, atau Imgur.

sudo add-apt-repository ppa:lookit/ppa
sudo apt-get update
sudo apt-get install lookit

20. Workspaces Indicator Applet

Indikator kecil untuk memudahkan perpindahan workspaces.

sudo add-apt-repository ppa:geod/ppa-geod
sudo apt-get update
sudo apt-get install indicator-workspaces

21. Brightness Indicator Applet

Anda bisa mengatur kecerahan layar dengan aplet ini.

sudo add-apt-repository ppa:indicator-brightness/ppa
sudo apt-get update
sudo apt-get install indicator-brightness

22. Diodon Clipboard Applet

Diodon adalah clipboard manager ringan untuk Linux yang diprogram dengan bahasa Vala yang bertujuan “menjadi clipboard manager terintegrasi yang terbaik untuk GNOME”. Aplet ini sama dengan Klipper di KDE.

sudo add-apt-repository ppa:diodon-team/stable
sudo apt-get update
sudo apt-get install diodon

23. Touchpad Indicator Applet

Anda bisa mematikan dan menyalakan touchpad laptop dengan aplet ini.

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator

24. Clipit

Aplet ini adalah pengembangan (fork) dari aplikasi Parcellite yang sudah diperbaiki dan ditingkatkan.

sudo add-apt-repository ppa:shantzu/clipit
sudo apt-get update
sudo apt-get install clipit

25. Battery Status

Sebuah aplet yang bisa menayangkan informasi detail tetang baterai Anda.

Untuk menjalankan Battery Status sebagai aplet indikator di Ubuntu: /usr/lib/battery-status/battery-status –indicator

sudo add-apt-repository ppa:iaz/battery-status
sudo apt-get update
sudo apt-get install battery-status

26. Recent Notifications

Sebuah aplet yang menyimpan notifikasi-notifikasi terakhir.

sudo add-apt-repository ppa:jconti/recent-notifications
sudo apt-get update
sudo apt-get install indicator-notifications

27. Google Reader Indicator Applet

Google Reader Indicator menampilkan jumlah item yang belum dibaca pada akun Reader Anda beserta judul artikel dan rangkumannya. Klik pada sebuah artikel akan membukanya pada browser.

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install google-reader-indicator

28. Haguichi Appindicator

Aplet ini menyediakan dukungan indikator untuk Haguici, sebuah Hamachi GUI yang populer untuk GNOME.

sudo add-apt-repository ppa:webupd8team/haguichi
sudo apt-get update
sudo apt-get install haguichi-appindicator

29. Indicator Stickynotes

Indikator untuk menambahkan Sticky Notes untuk Unity. Bisa menambahkan banyak notes, menyembunyikannya, atau menampilkan semua dalam satu waktu.

sudo add-apt-repository ppa:umang/indicator-stickynotes
sudo apt-get update
sudo apt-get install indicator-stickynotes

30. Glippy

Clipboard manager untuk Ubuntu yang menyediakan dukungan clipboard untuk history, gambar, teks, dan banyak lagi. Aplet ini sama dengan Klipper di KDE.

sudo add-apt-repository ppa:bikooo/glippy
sudo apt-get update
sudo apt-get install glippy glippy-ubuntu-mono

31. Update Manager Indicator Applet

Aplet ini adalah sebuah indikator update kecil di system tray yang menampilkan informasi mengenai update yang telah tersedia. Bagusnya, aplet ini akan mematikan jendela popup Update Manager yang mengganggu.

sudo add-apt-repository ppa:nilarimogard/webupd8
 sudo apt-get update
 sudo apt-get install indicator-updatemanager

32. Window-List Applet

Aplet ini menampilkan daftar dari jendela-jendela yang terbuka di destop sekarang. Jendela dapay dibuka dengan memilihnya pada daftar menu.

sudo add-apt-repository ppa:jwigley/window-list
sudo apt-get update
sudo apt-get install window-list

jalankan aplikasi dengan perintah Terminal: window-list

33. DesktopNova Indicator Applet

Aplet ini bekerja sama dengan aplikasi DesktopNova Wallpaper Changer.

sudo add-apt-repository ppa:michael-astrapi/ppa
sudo apt-get update
sudo apt-get install desktopnova indicator-desktopnova

34. Unity Privacy Indicator

Privary Indicator ini dapat digunakan untuk mengaktifkan atau menonaktifkan:

  • Online Search Result di menu Unity
  • Pencatatan log oleh Zeitgeist
  • Menampilkan nama asli di panel Unity
sudo add-apt-repository ppa:diesch/testing
sudo apt-get update
sudo apt-get install indicator-privacy

37. PPA Download Statistics Applet

Jika Anda developer, aplet ini akan berguna untuk menampilkan hitungan unduhan dari PPA Anda. Aplet ini dibuat dengan Python3.

sudo add-apt-repository ppa:thebernmeister/ppa
sudo apt-get update
sudo apt-get install indicator-ppa-download-statistics

38. Sound Switcher Applet

Aplet ini mempermudah pergantian dari input suara default (“source” dalam istilah PulseAudio) dan output (“sink”) dengan beberapa klik saja.

sudo add-apt-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher
Setelah itu, cari dan jalankan aplikasi Sound Switcher Indicator.

G. Bonus

1. Skype Indicator

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
sudo apt-get update
sudo apt-get install skype

2. Mounty

Mounty adalah aplet indikator yang sangat sederhana untuk me-mount citra CD/DVD (iso, img, bin, mdf, nrg). Bahkan Mounty bisa membakar citra ke CD/DVD. Anda dapat mengambil paket .deb dengan perintah:

sudo add-apt-repository "deb http://download.learnfree.eu/repository/skss / #SKSS"
wget http://download.learnfree.eu/repository/skss/repo.pub.asc -q -O- | sudo apt-key add -
sudo apt-get update && sudo apt-get install mounty

3. Usb Safe Removal

Indikator kecil untuk meng-eject (safely remove) USB flash disk.

https://github.com/cas–/indicator-usb/releases

4. CrystalHD indicator

Indikator ini menampilkan status dari driver CrystalHD ( Broadcom BCM70012 BCM70015) di Linux: disabled, enabled, working, dan error. Indikator ini bisa menonaktifkan maupun mengaktifkan driver tersebut.

H. Referensi

  1. http://www.omgubuntu.co.uk/2013/12/upgrade-gnome-3-10-ubuntu-13-10
  2. http://linuxg.net/how-to-install-lxde-on-linux-mint-15-and-ubuntu-13-04/
  3. http://ubuntuportal.com/2013/11/how-to-add-the-enlightenment-17-desktop-to-ubuntu-13-10.html
  4. http://ubuntuhandbook.org/index.php/2013/12/install-lxqt-via-ppa-in-ubuntu-14-04-13-10/
  5. http://www.webupd8.org/2012/01/cinnamon-available-to-install-via-ppa.html
  6. http://www.webupd8.org/2013/04/mate-16-released-install-it-in-ubuntu.html
  7. http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
  8. http://www.webupd8.org/2009/11/docky-official-development-ppa.html
  9. http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
  10. http://www.webupd8.org/2012/08/install-adb-and-fastboot-android-tools.html
  11. https://launchpad.net/~chromium-daily/+archive/stable
  12. https://launchpad.net/~webupd8team/+archive/nemo
  13. http://www.unixmen.com/how-to-install-marlin-file-manager-on-ubuntu-and-linuxmint-nautilus-alternative/
  14. https://launchpad.net/~danielrichter2007/+archive/grub-customizer
  15. https://help.ubuntu.com/community/Boot-Repair
  16. http://doc.ubuntu-fr.org/burg
  17. http://technicalworldforyou.blogspot.com/2012/11/install-cairo-dock-311-in-ubuntu.html
  18. http://www.howopensource.com/2011/10/install-google-chrome-in-ubuntu-11-10-11-04-10-10-10-04/

_______

2 Lama karena pengecekan keamanan dan stabilitas suatu paket untuk masuk repo sangat ketat. Oleh karena lama itulah Anda tidak merasakan virus di Ubuntu.

3 Reload di Synaptic sama dengan sudo apt-get update di Terminal yakni mengambil daftar isi dari server-server repo yang sudah Anda tentukan. Termasuk PPA.


Filed under: Linux

Pemrograman Qt 16 – QGraphicsScene dan QGraphicsView untuk Menayangkan Gambar

$
0
0

Bismillahirrahmanirrahim.

Tulisan ini tersedia dalam PDF.

qt-creator-logoPembuatan suatu aplikasi image viewer dengan Qt bisa dilakukan dengan kelas QGraphicsScene dan QGraphicsView. Namun niat saya kali ini hanyalah mempersiapkan suatu penampil gambar paling dasar yang hanya bisa menayangkan gambar tanpa fungsi tambahan. Anda akan belajar bagaimana menggunakan kedua kelas tersebut di sini. Selanjutnya, saya berharap nanti bisa menulis kelanjutan dari tulisan ini agar program dapat memiliki fungsi tambahan semisal pan, zoom, rotate, dan lain-lain. Anda dapat mengunduh kode sumber dari program ini di bagian akhir tulisan. Semoga tulisan ini bermanfaat.

Spesifikasi Sistem

  • Ubuntu 12.04
  • Qt Creator 2.4.1
  • Qt 4.8

Daftar Kelas

  1. QGraphicsScene
  2. QGraphicsView
  3. QPixmap
  4. QHBoxLayout

Daftar Method

  1. addPixmap()
  2. setScene()
  3. show()
  4. setStyleSheet()
  5. setAlignMent()

Arah Tulisan Ini

Kita akan membuat sebuah jendela dengan widget yang menampilkan suatu gambar PNG. Jika gambarnya terlalu besar, otomatis akan ada scrollbar vertikal dan horizontal.

Kode

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    QGraphicsScene *qgs_simpan_gambar = new QGraphicsScene;
    QGraphicsView  *qgv_tayang_gambar = new QGraphicsView;
    QPixmap        gambarnya(":/gambar/ubuntu");

    QHBoxLayout    *layout_h          = new QHBoxLayout;

    QWidget        *widget_utama      = new QWidget;

    qgv_tayang_gambar->setAlignment(Qt::AlignLeft);

    qgs_simpan_gambar->addPixmap(gambarnya);
    qgv_tayang_gambar->setScene(qgs_simpan_gambar);         //begini cara memasukkan QGS ke QGV
    qgv_tayang_gambar->show();

    layout_h->addWidget(qgv_tayang_gambar);                 //QGV langsung masukkan ke layout gak perlu widget
    widget_utama->setLayout(layout_h);
    this->setCentralWidget(widget_utama);   //berhasil secara total tanpa perlu setSizePolicy
                                            //dicapai pada Thursday, February 06, 2014 12:11 PM
}

MainWindow::~MainWindow()
{
    delete ui;
}

Qt Creator dan Kode

apt-get-okular103

Hasil

apt-get-okular104

Analisis

mainwindow.h

Kode pada header ini tidak diubah dari default-nya. Jika belum memahami kode-kode header di Qt, silakan baca dulu tutorial pemrograman Qt pertama ini.

mainwindow.cpp

Kode pada mainwindow.cpp ini hanya memiliki dua bagian penting saja yakni pemakaian kelas QGraphicsScene dan QGrahicsView. Keduanya saya ringkas menjadi QGS dan QGV untuk memudahkan penyebutan. Selebihnya, hanya pembentukan GUI seperti biasanya. Jika belum paham bagaimana membuat GUI di Qt, silakan merujuk ke tautan tutorial pemrograman Qt pertama di atas.

Alasan digunakannya QGraphicsScene dan QGraphicsView pada aplikasi Qt adalah menayangkan gambar pada GUI. Dengan kedua kelas ini, kita bisa membuat aplikasi image viewer (semacam Gwenview atau IrfanView) atau yang semisal dengan itu. Kalau untuk saya, tentu dua kelas ini sangat berguna untuk membangun aplikasi semacam Otodidak. Dengan dua kelas ini Anda bisa menayangkan, rotate, pan, zoom, dan lain-lain selayaknya yang bisa dilakukan dengan aplikasi semacam Gwenview. Namun pada tulisan ini saya hanya fokuskan pada menayangkan gambar tanpa satu pun fungsi lainnya.

Alur pemrograman QGS dan QGV di dalam suatu program adalah: QGS digunakan terlebih dahulu baru QGV digunakan kemudian. Ini karena Anda akan mempersiapkan semua pengaturan gambar dahulu untuk QGS lalu Anda panggil QGV untuk menayangkan isi QGS. Inilah alur yang harus Anda ikuti kali ini.

QGraphicsScene *qgs_simpan_gambar = new QGraphicsScene;
QGraphicsView  *qgv_tayang_gambar = new QGraphicsView;

Dua baris di atas adalah deklarasi objek dari kelas QGS dan QGV. Caranya sama dengan deklarasi objek biasanya.

QPixmap        gambarnya(":/gambar/ubuntu");

Sebaris kode QPixmap ini gunanya untuk mempersiapkan isi QGS. Anda harus membuat variabel yang berisi gambar terlebih dahulu. Dalam hal ini, variabel gambarnya diisi oleh gambar bernama ubuntu. Tentu sebelumnya, Anda harus mengimpor gambar ke dalam proyek dulu. Cara impor gambar bisa dipelajari di tutorial Qt Creator pertama ini. Lihat pengaturan impor pada gambar di bawah ini.

apt-get-okular105

qgs_simpan_gambar->addPixmap(gambarnya);

Sebaris kode dari objek QGS di atas maksudnya memasukkan gambar yang sudah dipersiapkan tadi ke dalam QGS. Di sinilah method addPixmap() milik QGS digunakan. Dan parameternya sudah tentu variabel gambarnya yang tadi.

qgv_tayang_gambar->setScene(qgs_simpan_gambar);         //begini cara memasukkan QGS ke QGV
qgv_tayang_gambar->show();

Dua baris kode dari objek QGV di atas maksudnya untuk menayangkan gambar dari QGS. Alur kodenya selalu seperti ini, yaitu didahului dengan memasang scene dengan method setScene() lalu menayangkannya dengan method show(). Selalu seperti ini.

qgv_tayang_gambar->setAlignment(Qt::AlignLeft);

Adapun sebaris kode di atas, gunanya untuk meratakirikan tayangan gambar pada objek QGV. Parameter lain yang bisa dipakai adalah Qt::AlignRight, Qt::AlignTop, Qt::AlignBottom, dan lain-lain. Gunakan autocomplete pada Qt Creator untuk mengetahuinya.

layout_h->addWidget(qgv_tayang_gambar);

Adapun sebaris kode di atas, gunanya untuk memasangkan objek QGV ke dalam layout. Saya temukan bahwa pemasangan ini tidak membutuhkan kelas QWidget tambahan seperti biasanya. Langsung saja masukkan QGV ke dalam layout.

Kelemahan Program

Karena hanya melakukan penayangan gambar, maka program kali ini memiliki banyak kelemahan. Di antaranya yang paling tampak adalah gambar tidak rata kiri maksimal (ujung kiri atas gambar tidak ditaruh tepat ujung kiri atas QGV). Ini mengakibatkan pengguna harus scroll dulu dengan mouse untuk melihat sisi paling kiri/kanan gambar. Selain itu, belum ada fitur pan, zoom in zoom out, rotate, dan lain-lain.

Kesimpulan

  1. Alur pemrograman penayangan gambar adalah QGS kemudian QGV.
  2. QGV adalah kelas dan objek yang bersentuhan langsung dengan pengguna, sedangkan QGS bekerja di balik layar.

Unduh Kode Sumber

Program kali ini bernama PerangQGV. Dinamakan begitu karena saya menemukan kesulitan untuk membuatnya menayangkan gambar dengan tepat. Silakan unduh kode sumber ini dan bukalah di Qt Creator Anda.

  1. Alamat: http://otodidak.freeserver.me/tarball/PerangQGV.tar.gz
  2. Ukuran: 400 KB

Referensi

Dokumentasi di dalam Qt Creator sendiri mengenai QGraphicScene dan QGraphicsView.

apt-get-okular106


Filed under: Linux, Uncategorized

Pemrograman Qt 17 – Pan, Scroll, Zoom, Flip, dan Rotate untuk QGraphicsView

$
0
0

Bismillahirrahmanirrahim.

qt-creator-logoTulisan ini adalah kelanjutan dari tutorial sebelumnya dalam hal QGraphicsScene dan QGraphicsView. Kita akan membuat sebuah image viewer yang mampu melakukan pan, scroll, zoom in, zoom out, flip, dan rotate. Anda dapat mengunduh kode sumber program berupa proyek Qt Creator di bagian akhir tulisan. Semoga tulisan ini bermanfaat.

Spesifikasi Sistem

  • Ubuntu 12.04
  • Qt Creator 2.4.1
  • Qt 4.8

Daftar Kelas

  • QGraphicsScene
  • QGraphicsView
  • QToolButton
  • QVBoxLayout
  • QHBoxLayout
  • QWidget

Daftar Method

  • setSceneRect() -> milik QGraphicsScene
  • addPixmap() -> milik QGraphicsScene
  • setScene() -> milik QGraphicsView
  • setDragMode() -> milik QGraphicsView
  • scale() -> milik QGraphicsView
  • rotate() -> milik QGraphicsView
  • resetTransform() -> milik QGraphicsView
  • zoomin() -> buatan sendiri
  • zoomout() -> buatan sendiri
  • reset() -> buatan sendiri
  • rotate() -> buatan sendiri
  • flip() -> buatan sendiri

Arah Tulisan Ini

wavemon39

Kode

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

//#include
#include

namespace Ui {
class MainWindow;
}

//extern int pengubah_angka = 0;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QToolButton     *tombol_KDE;
    QToolButton     *tombol_GNOME;
    QToolButton     *tombol_XFCE;
    QToolButton     *tombol_LXDE;
    QToolButton     *tombol_UNITY;

    QGraphicsScene  *objek_QGS;
    QGraphicsView   *objek_QGV;

    QVBoxLayout     *layout_utama;
    QHBoxLayout     *layout_isi_global;
    QVBoxLayout     *layout_kiri_gambar;
    QVBoxLayout     *layout_kanan_tombol;

    QWidget         *fondasi;
    QWidget         *panel_kiri;
    QWidget         *panel_kanan;
    QPixmap         *pixmap;

//    double          scaleFactor;

public slots:
    void            zoomin();
    void            zoomout();
    void            flip_horizontal();
    void            flip_vertikal();
    void            rotate();
    void            reset();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

    QToolButton *tombol_zoomin               = new QToolButton;
    QToolButton *tombol_zoomout              = new QToolButton;
    QToolButton *tombol_rotate               = new QToolButton;
    QToolButton *tombol_reset                = new QToolButton;
    QToolButton *tombol_flip_horizontal      = new QToolButton;
    QToolButton *tombol_flip_vertikal        = new QToolButton;

                objek_QGS = new QGraphicsScene;
                objek_QGV = new QGraphicsView;  //inilah QGV yang dipangkas yang dimaksud di komentar fungsi-fungsi di bawah

    QHBoxLayout *layout_utama = new QHBoxLayout;
    QVBoxLayout *layout_kiri_gambar = new QVBoxLayout;
    QVBoxLayout *layout_kanan_tombol = new QVBoxLayout;

    QWidget     *fondasi      = new QWidget;    //deklarasi objek di CPP harus normal
    QWidget     *panel_kanan  = new QWidget;    //sama sekali tidak boleh diringkas
    QWidget     *panel_kiri   = new QWidget;    //atau, segmentation fault

                pixmap = new QPixmap(":/gambar/ubuntu");    //deklarasi terpotong supaya bisa dipakai di fungsi luar buatan sendiri
                                                            //dan nanti kalau objek pixmap dipanggil di suatu fungsi sebagai
                                                            //parameter, maka dipanggil dengan didahului *

    //coba mengisi layout dengan QGV dan tombol

    layout_kanan_tombol->addWidget(tombol_zoomin);     //sisi kanan
    layout_kanan_tombol->addWidget(tombol_zoomout);
    layout_kanan_tombol->addWidget(tombol_rotate);
    layout_kanan_tombol->addWidget(tombol_reset);
    layout_kanan_tombol->addWidget(tombol_flip_horizontal);
    layout_kanan_tombol->addWidget(tombol_flip_vertikal);

    layout_kiri_gambar->addWidget(objek_QGV);       //sisi kiri

    //sekarang coba atur ukuran minimal para tombol

    tombol_zoomin->setMinimumSize(140,55);
    tombol_zoomout->setMinimumSize(140,55);
    tombol_rotate->setMinimumSize(140,55);
    tombol_reset->setMinimumSize(140,55);
    tombol_flip_horizontal->setMinimumSize(140,55);
    tombol_flip_vertikal->setMinimumSize(140,55);

    //sekarang coba beri nama untuk para tombol

    tombol_zoomin->setText("ZOOM IN");
    tombol_zoomout->setText("ZOOM OUT");
    tombol_rotate->setText("ROTATE");
    tombol_reset->setText("RESET");
    tombol_flip_horizontal->setText("FLIP  HORIZONTALLY");
    tombol_flip_vertikal->setText("FLIP  VERTICALLY");

    //coba memasang layout ke widget

    panel_kiri->setLayout(layout_kiri_gambar);
    panel_kanan->setLayout(layout_kanan_tombol);

    //coba membangun semua layout dulu sekaligus lalu diletakkan objek-objek pada tempatnya sesudahnya

    layout_utama->addWidget(panel_kiri);   //widget panel kiri
    layout_utama->addWidget(panel_kanan);  //widget panel kanan

    //tunggu, kita harus mengurus QGraphics* dulu

    objek_QGS->addPixmap(*pixmap);             //kalau suatu objek dideklarasikan dengan cara terpotong seperti baris 25 di atas
                                               //maka bentuk pemanggilan objek di dalam parameter harus diawali dengan *
                                               //ditemukan pada Yaum al-Arbi'a, Jumaada al-Awal 17, 1435 12:55 PM
                                               //Wednesday, March 19, 2014
                                               //tidak diawali dengan &, tidak diakhiri dengan & atau *

    objek_QGS->setSceneRect(QRectF(0,0,1,1));  //akhirnya setelah berjam-jam ketemu juga
                                               //sumber: http://www.qtcentre.org/threads/22372-QGraphicsScene-Scrollbar-resizing
                                               //ditemukan pada Yaum al-Khamees, Rabi` al-Thaani 19, 1435 11:06 PM / Thursday, February 20, 2014
                                               //gunanya baris ini untuk memaksa sisi kiri gambar tepat sisi kiri QGV, alias
                                               //supaya semua scrollbar selalu berada pada posisi paling awal / default
                                               //jika tidak begini, semua scrollbar selalu berada pada akhir posisinya
                                               //scrollbar nakal jika ukuran resolusi gambar melampaui ukuran QGV
    objek_QGV->setScene(objek_QGS);
    objek_QGV->setInteractive(true);
    objek_QGS->setSceneRect(0,0,pixmap->width(),pixmap->height());  //get image size macam ini saya peroleh dari stackoverflow tapi lupa alamatnya
                                                                  //ini harus ada setelah QRectF di atas
    objek_QGV->setDragMode(QGraphicsView::ScrollHandDrag);
    objek_QGV->show();

    //waktunya merender fondasi
    fondasi->setLayout(layout_utama);
    this->setCentralWidget(fondasi);

    //waktunya mainkan tombol untuk fungsi zoom | Yaum al-Khamees, Rabi` al-Thaani 19, 1435 11:27 PM
    connect(tombol_zoomin,   SIGNAL(clicked()),  this,  SLOT(zoomin()));
    connect(tombol_zoomout,  SIGNAL(clicked()),  this,  SLOT(zoomout()));
    connect(tombol_reset,    SIGNAL(clicked()),  this,  SLOT(reset()));
    connect(tombol_rotate,   SIGNAL(clicked()),  this,  SLOT(rotate()));
    connect(tombol_flip_horizontal,     SIGNAL(clicked()),  this,  SLOT(flip_horizontal()));
    connect(tombol_flip_vertikal,     SIGNAL(clicked()),  this,  SLOT(flip_vertikal()));

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::zoomin()
{
    double scaleFactor = 1.25;
    //kalau mau jalankan fungsi yang menembak langsung objek di dalam kelas utama,
    //maka deklarasi objek kelas yang ditembak harus dipangkas
    //lihat deklarasi QGV di atas
    //diingat kembali pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:13 PM dari Pemrograman Qt 5
//    this->objek_QGV->scale(scaleFactor,scaleFactor);
//    QTransform flip;
    this->objek_QGV->scale(scaleFactor, scaleFactor);

}

void MainWindow::zoomout()
{
    //kalau mau jalankan fungsi yang menembak langsung objek di dalam kelas utama,
    //maka deklarasi objek kelas yang ditembak harus dipangkas
    //lihat deklarasi QGV di atas
    //diingat kembali pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:13 PM dari Pemrograman Qt 5

    double      scaleFactor = 1.3;  //istimewa pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:33 PM
                                     //didapatkan dari
                                     //http://www.qtcentre.org/wiki/index.php?title=QGraphicsView:_Smooth_Panning_and_Zooming
    this->objek_QGV->scale(1.0/scaleFactor,1.0/scaleFactor);
}

void MainWindow::rotate()
{
    //kalau mau jalankan fungsi yang menembak langsung objek di dalam kelas utama,
    //maka deklarasi objek kelas yang ditembak harus dipangkas
    //lihat deklarasi QGV di atas
    //diingat kembali pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:13 PM dari Pemrograman Qt 5
    this->objek_QGV->rotate(45);
}

void MainWindow::reset()
{
    //kalau mau jalankan fungsi yang menembak langsung objek di dalam kelas utama,
    //maka deklarasi objek kelas yang ditembak harus dipangkas
    //lihat deklarasi QGV di atas
    //diingat kembali pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:13 PM dari Pemrograman Qt 5
    this->objek_QGV->resetTransform();

    //fungsi di bawah ini diambil dari kode pada kelas utama
    //gunanya untuk memaksa pucuk kiri atas gambar untuk berada di pucuk kiri atas juga dari QGV
    //ditemukan pada Yaum al-Arbi'a, Jumaada al-Awal 17, 1435 01:02 PM
    //Wednesday, March 19, 2014
    this->objek_QGS->setSceneRect(QRectF(0,0,1,1));
    this->objek_QGS->setSceneRect(0,0,pixmap->width(),pixmap->height());

}

void MainWindow::flip_horizontal()
{
/*
            QTransform gambar_berubah;

                //teknik ini didapat pada Saturday, March 29, 2014 dari https://qt-project.org/forums/viewthread/13780/
                QTransform gambar_berubah_lagi = gambar_berubah.translate(-1,1);  //khusus baris ini, ditemukan sendiri dengan coba-coba
                           //memberanikan diri memakai selain method scale()
                           //ternyata justru translate() yang mampu membolak-balikkan gambar otomatis setiap dipanggilnya fungsi,
                           //tidak seperti scale() yang mengubah gambar 1 kali saja walau dipanggil berulang kali
                           //ditemukan pada Saturday, March 29, 2014 01:00 PM
                           //namun kelemahan kode masih terjadi, sama seperti sebelum branching yakni membalik gambar hanya dari dalam bingkai pixmap BUKANNYA dari dalam QGV
                           //padahal yang diinginkan pembalikan seperti Flip pada GIMP, yakni mutlak dibalik di dalam bingkai QGV (yang terluar)
                QPixmap *pixmap_kedua = new QPixmap(pixmap->transformed(gambar_berubah_lagi));
                this->objek_QGS->addPixmap(*pixmap_kedua);*/

    //pada akhirnya solusi di atas harus dianulir dengan satu baris sederhana ini
    //Saturday, March 29, 2014 01:12 PM
    this->objek_QGV->scale(-1,1);
}

//fungsi ini baru ditambahkan pada Wednesday, April 02, 2014 01:52 PM
void MainWindow::flip_vertikal()
{
    this->objek_QGV->scale(1,-1);
}

Qt Creator dan Kode 

wavemon40

Hasil

Pan (gambar bisa di-drag)

wavemon51

Zoom In

wavemon41

Zoom Outwavemon42

Rotate (Clockwise)wavemon43

Resetwavemon44

Flip Horizontallywavemon45

Flip Verticallywavemon46

Analisis

mainwindow.h

Di header ini, tidak banyak yang harus diperhatikan. Jika Anda belum memahami penulisan header di Qt, silakan merujuk ke tulisan ini.

mainwindow.cpp

Pada berkas ini, ada banyak yang harus diperhatikan. Berikut ini saya daftarkan yang penting-penting.

  1. Pembuatan objek QGraphicsScene dan QGraphicsView.
  2. connect() antara QToolButton dengan fungsinya masing-masing.
  3. Fungsi untuk pan.
  4. Fungsi zoomin().
  5. Fungsi zoomout().
  6. Fungsi rotate().
  7. Fungsi reset().
  8. Fungsi flip_horizontal().
  9. Fungsi flip_vertikal().

Saya akan menjelaskannya satu per satu sebagai berikut.

QGraphicsScene dan QGraphicsView
                objek_QGS = new QGraphicsScene;
                objek_QGV = new QGraphicsView;  //inilah QGV yang dipangkas yang dimaksud di komentar fungsi-fungsi di bawah

Dua baris di atas adalah pembuatan objek (inisialisasi) QGraphicsScene dan QGraphicsView. Model inisialisasinya terpangkas (di bagian awalnya tidak ada nama kelas, hanya ada di bagian akhir) karena dua objek ini akan digunakan di fungsi lain di luar fungsi utama MainWindow.

objek_QGS->addPixmap(*pixmap);             //kalau suatu objek dideklarasikan dengan cara terpotong seperti baris 25 di atas
                                               //maka bentuk pemanggilan objek di dalam parameter harus diawali dengan *
                                               //ditemukan pada Yaum al-Arbi'a, Jumaada al-Awal 17, 1435 12:55 PM
                                               //Wednesday, March 19, 2014
                                               //tidak diawali dengan &, tidak diakhiri dengan & atau *

    objek_QGS->setSceneRect(QRectF(0,0,1,1));  //akhirnya setelah berjam-jam ketemu juga
                                               //sumber: http://www.qtcentre.org/threads/22372-QGraphicsScene-Scrollbar-resizing
                                               //ditemukan pada Yaum al-Khamees, Rabi` al-Thaani 19, 1435 11:06 PM / Thursday, February 20, 2014
                                               //gunanya baris ini untuk memaksa sisi kiri gambar tepat sisi kiri QGV, alias
                                               //supaya semua scrollbar selalu berada pada posisi paling awal / default
                                               //jika tidak begini, semua scrollbar selalu berada pada akhir posisinya
                                               //scrollbar nakal jika ukuran resolusi gambar melampaui ukuran QGV
    objek_QGV->setScene(objek_QGS);
    objek_QGS->setSceneRect(0,0,pixmap->width(),pixmap->height());  //get image size macam ini saya peroleh dari stackoverflow tapi lupa alamatnya
                                                                  //ini harus ada setelah QRectF di atas
    objek_QGV->setDragMode(QGraphicsView::ScrollHandDrag);

Kode di atas ini adalah persiapan untuk menayangkan gambar pada QGraphicsView (selanjutnya disebut QGV). Seperti yang telah dijelaskan kemarin, penayangan gambar di sini memerlukan persiapan QPixmap, kemudian QGraphicsScene (selanjutnya disebut QGS), baru kemudian QGV. Fungsi addPixmap untuk objek_QGS di sini diisi dengan argumen berupa objek pixmap yang berupa ponter (ada tanda *). Tentunya objek pixmap harus diisi gambar dulu sebelumnya. Jika belum mengerti cara memasukkan gambar, silakan merujuk kemari.

Ada hal penting yang harus diperhatikan mengenai posisi gambar dan scrollbar di dalam QGV. Anda harus memasang kode ini:

objek_QGS->setSceneRect(QRectF(0,0,1,1));

dan ini:

objek_QGS->setSceneRect(0,0,pixmap-&gt;width(),pixmap-&gt;height());

Kode pertama gunanya untuk memaksa semua scrollbar berada pada posisinya paling awal. Inilah kondisi normal yang tidak akan tercapat jika tidak menggunakan kode pertama. Berikut ini gambar kesalahannya:

wavemon49

Lalu jika tidak menggunakan kode kedua, maka posisi gambar yang akan meleset jauh dari posisi normal (pojok kiri atas gambar tepat pada pojok kiri atas QGV). Kode kedua adalah pengatur untuk itu. Berikut ini gambar kesalahannya:

wavemon50

Jika kedua kode dipakai dengan benar, maka hasilnya normal seperti bagian awal tulisan ini. Berikut gambarnya.

wavemon39

Kode untuk Pan

Pan itu adalah kemampuan objek untuk berpindah jika dikenai drag oleh mouse. Ini bisa dilakukan dengan memanfaatkan fungsi setDragMode() milik QGV sebagai berikut.

objek_QGV->setDragMode(QGraphicsView::ScrollHandDrag);

Perhatikan bahwa argumen QGraphicsView::ScrollHandDrag yang mengatur pan ini.

connect()

Fungsi connect() adalah bagian yang sangat penting dari Qt Framework. Fungsi ini bertugas menghubungkan antara SIGNAL dan SLOT, dua komponen vital dari Qt Framework. Dalam program ini, yang dihubungkan adalah tombol-tombol (QToolButton) ketika diklik dengan fungsi-fungsi yang sudah dipersiapkan sebelumnya. Fungsi connect() selalu ada setiap ada hubungan SIGNAL dan SLOT. Sedangkan SIGNAL dan SLOT ada setiap kita menginginkan event tertentu berlaku jika ada suatu klik/pemicu lain. SIGNAL dan SLOT di Qt Framework itu mudah dipahami. Berikut ini kodenya.

    connect(tombol_zoomin,   SIGNAL(clicked()),  this,  SLOT(zoomin()));
    connect(tombol_zoomout,  SIGNAL(clicked()),  this,  SLOT(zoomout()));
    connect(tombol_reset,    SIGNAL(clicked()),  this,  SLOT(reset()));
    connect(tombol_rotate,   SIGNAL(clicked()),  this,  SLOT(rotate()));
    connect(tombol_flip_horizontal,     SIGNAL(clicked()),  this,  SLOT(flip_horizontal()));
    connect(tombol_flip_vertikal,     SIGNAL(clicked()),  this,  SLOT(flip_vertikal()));
Fungsi-Fungsi

Bagian paling menarik dari program ini untuk dibahas adalah fungsi-fungsinya. Ada 6 fungsi. Saya akan bahas sebagai berikut.

1. Zoom In
void MainWindow::zoomin()
{
    double scaleFactor = 1.25;
    //kalau mau jalankan fungsi yang menembak langsung objek di dalam kelas utama,
    //maka deklarasi objek kelas yang ditembak harus dipangkas
    //lihat deklarasi QGV di atas
    //diingat kembali pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:13 PM dari Pemrograman Qt 5
//    this->objek_QGV->scale(scaleFactor,scaleFactor);
//    QTransform flip;
    this->objek_QGV->scale(scaleFactor, scaleFactor);

}

Perlu diperhatikan bahwa seluruh transformasi di dalam program ini dilakukan oleh fungsi-fungsi milik QGV itu sendiri. Untuk melakukan zoom in (perbesar ke dalam), kita cukup memanggil fungsi scale() dengan 2 argumennya yakni x dan y. Di sini saya memakai variabel bertipe double dengan ukuran 1.25. Tujuannya supaya sama besar antara perbesaran positif (zoom in) dan perbesaran negatif (zoom out) sebagaimana ditemukan di program pengolah gambar.

2. Zoom Out
void MainWindow::zoomout()
{
    //kalau mau jalankan fungsi yang menembak langsung objek di dalam kelas utama,
    //maka deklarasi objek kelas yang ditembak harus dipangkas
    //lihat deklarasi QGV di atas
    //diingat kembali pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:13 PM dari Pemrograman Qt 5

    double      scaleFactor = 1.25;  //istimewa pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:33 PM
                                     //didapatkan dari
                                     //http://www.qtcentre.org/wiki/index.php?title=QGraphicsView:_Smooth_Panning_and_Zooming
    this->objek_QGV->scale(1.0/scaleFactor,1.0/scaleFactor);
}

Zoom out adalah kebalikan zoom in. Jika di zoom in kita pakai argumen scaleFactor begitu saja (alias 1.0*scaleFactor), maka di zoom out ini kita balik menjadi 1.0/scaleFactor agar gambarnya mengecil. Dengan zoom out, kita tahu bahwa perlu adanya suatu nilai pasti yang menjadi satuan baku perbesaran. Bahasa kasarnya, Anda klik ZOOM IN 2 kali maka gambar membesar, klik ZOOM OUT 2 kali juga maka gambar kembali seperti semula.

3. Rotate
void MainWindow::rotate()
{
    //kalau mau jalankan fungsi yang menembak langsung objek di dalam kelas utama,
    //maka deklarasi objek kelas yang ditembak harus dipangkas
    //lihat deklarasi QGV di atas
    //diingat kembali pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:13 PM dari Pemrograman Qt 5
    this->objek_QGV->rotate(45);
}

Perputaran di sini saya atur 45 derajat searah jarum jam (positif). Ini sama juga dengan sebelumnya, hanya menggunakan fungsi bawaan QGV.

4. Reset
void MainWindow::reset()
{
    //kalau mau jalankan fungsi yang menembak langsung objek di dalam kelas utama,
    //maka deklarasi objek kelas yang ditembak harus dipangkas
    //lihat deklarasi QGV di atas
    //diingat kembali pada Yaum al-Ahad, Rabi` al-Thaani 22, 1435 01:13 PM dari Pemrograman Qt 5
    this->objek_QGV->resetTransform();

    //fungsi di bawah ini diambil dari kode pada kelas utama
    //gunanya untuk memaksa pucuk kiri atas gambar untuk berada di pucuk kiri atas juga dari QGV
    //ditemukan pada Yaum al-Arbi'a, Jumaada al-Awal 17, 1435 01:02 PM
    //Wednesday, March 19, 2014
    this->objek_QGS->setSceneRect(QRectF(0,0,1,1));
    this->objek_QGS->setSceneRect(0,0,pixmap->width(),pixmap->height());

}

Fungsi reset ini maksudnya mengembalikan gambar seperti semula setelah banyak diubah ini dan itu. Sederhana saja, cukup memanggil fungsi resetTransform milik QGV. Lalu memanggil ulang rekonstruksi QGS (yang dua baris itu).

5. Flip Horizontally
void MainWindow::flip_horizontal()
{
/*
            QTransform gambar_berubah;

                //teknik ini didapat pada Saturday, March 29, 2014 dari https://qt-project.org/forums/viewthread/13780/
                QTransform gambar_berubah_lagi = gambar_berubah.translate(-1,1);  //khusus baris ini, ditemukan sendiri dengan coba-coba
                           //memberanikan diri memakai selain method scale()
                           //ternyata justru translate() yang mampu membolak-balikkan gambar otomatis setiap dipanggilnya fungsi,
                           //tidak seperti scale() yang mengubah gambar 1 kali saja walau dipanggil berulang kali
                           //ditemukan pada Saturday, March 29, 2014 01:00 PM
                           //namun kelemahan kode masih terjadi, sama seperti sebelum branching yakni membalik gambar hanya dari dalam bingkai pixmap BUKANNYA dari dalam QGV
                           //padahal yang diinginkan pembalikan seperti Flip pada GIMP, yakni mutlak dibalik di dalam bingkai QGV (yang terluar)
                QPixmap *pixmap_kedua = new QPixmap(pixmap->transformed(gambar_berubah_lagi));
                this->objek_QGS->addPixmap(*pixmap_kedua);*/

    //pada akhirnya solusi di atas harus dianulir dengan satu baris sederhana ini
    //Saturday, March 29, 2014 01:12 PM
    this->objek_QGV->scale(-1,1);
}

Pembalikan gambar (translasi/mirror) ini sebenarnya memusingkan untuk saya yang tidak tahu soal QGV. Setelah melakukan pencarian, berpusing ria, tambal sulam kode, saya akhirnya menggunakan kembali fungsi scale() milik QGV. Hanya saja, di sini nilai argumennya -1 dan 1. Ini akan membuat yang kanan menjadi yang kiri pada gambar.

Kelemahan: jika sebelumnya gambar sudah di-rotate, maka yang dibalik adalah gambar di dalam bingkai pixmap saja, tidak dibalik secara mutlak. Ini akan berbeda dengan aplikasi pengolah gambar biasanya. Saya belum menemukan solusinya.

6. Flip Vertically
void MainWindow::flip_vertikal()
{
    this->objek_QGV->scale(1,-1);
}

Sama dengan yang horizontal, hanya memakai fungsi scale() tetapi dengan nilai argumen 1 dan -1. Ini akan membuat yang atas menjadi yang bawah. Kelemahannya juga sama dengan yang horizontal.

Kesimpulan

  1. Penayangan gambar di Qt Framework bisa dilakukan dengan QPixmap, QGraphicsScene, dan QGraphicsView.
  2. Manipulasi gambar sederhana dengan QGV cukup dilakukan dengan method-method milik QGV itu sendiri.

Unduh Kode Sumber

Program kali ini bernama WajahDepan. Silakan unduh kode sumber berikut dan bukalah di Qt Creator Anda. Semoga bermanfaat.

Penutup

Walau sudah puas sekali, saya masih menyisakan satu misteri mengenai flip pada QGV. Semoga tulisan ini bermanfaat

Referensi


Filed under: Linux

Memutar MP3 Audio Ta’lim dan Online Streaming di Linux

$
0
0

Bismillahirrahmanirrahim.

resized_resized_logo-musik-haramTulisan ini memperkenalkan Anda kepada pemutar audio yang bagus di Linux untuk memutar audio maupun online live streaming. Tulisan ini bertujuan meyakinkan Anda bahwa Linux mampu menggantikan Windows untuk sekadar memutar audio sebagaimana Winamp atau AIMP2, maupun online streaming untuk daurah masyayikh nasional dan daurah asatidzah dengan aplikasi Android Player atau lainnya. Tulisan ini juga ditujukan untuk menjadi daftar aplikasi pengganti Winamp di Linux. Jika dikatakan online streaming, maka itu artinya Anda bisa memutar PLS (berkas playlist milik Winamp) di player yang disebutkan dalam tulisan ini. Walaupun bukan Winamp, tetapi mereka mampu memutar berkas milik Winamp. Tulisan ini juga memperkenalkan beberapa fitur canggih yang tidak akan Anda dapatkan di player-player selain di Linux semisal audio bookmark yang akan membantu Anda belajar. Tulisan ini sama sekali tidak ditujukan supaya Anda memutar musik dengan Linux. Seluruh player yang disebut dalam tulisan ini mampu memutar audio berjenis MP3, OGG, dan WAV. Semoga tulisan ini menjadi sebab kami memperoleh pahala yang banyak dan sebagai wasilah Anda mampu mempelajari Islam dengan sistem operasi yang halal. Semoga tulisan ini bermanfaat.  

Selayang Pandang

Sebelum saya bicara mengenai player, ada baiknya saya perkenalkan dulu sedikit sistem pemutaran online stream dan audio agar kita tidak terkungkung dengan 1 player saja (Winamp).

A. Mengenai Online Streaming

Seluruh layanan online streaming untuk ta’lim kita di Indonesia hanya terdiri dari dua macam sumber. Pertama, sumber alamat soket (URL diikuti nomor port) semacam http://alamat.com:8181. Kedua, sumber alamat dengan berkas playlist dari aplikasi pemutar audio. Yang paling sering kita temukan adalah berkas PLS milik Winamp semacam http://alamat.com/playlist.pls. Kedua sumber ini sebenarnya sama saja. Asalkan Anda memperolehnya, maka Anda bisa memutarnya di semua player yang mendukung streaming dan format Winamp. Oleh karena itu, Anda bisa memutar streaming di Linux insya Allah tanpa kesulitan. Berikut ini gambar skrinsot dari http://almuwahhidiin.com maupun http://ahlussunnahslipi.com/cara-dengar/.

streaming-almuwahhidiin   streaming-ahlussunnahslipi

Cari saja keterangan seperti gambar di atas pada situs ta’lim Anda. Di mana saja ada URL streaming atau PLS streaming, maka Anda bisa memutar streaming-nya dengan semua aplikasi yang dibahas di sini. Berhati-hatilah terhadap situs-situs hizbiyyunAlhamdulillahi rabbil ‘alamin.

B. Mengenai Pemutaran Audio

Sebagaimana umumnya, player di Linux juga mampu memutar audio. Mereka semua memiliki kemampuan mengelola playlist dan queue. Bahkan Audacious mampu mengorganisirnya dalam tab-tab yang diberi judul masing-masing. Impor audio bisa dilakukan dengan mudah, atau dengan sedikit usaha membiasakan diri. Sebagai bonus, Amarok dan Banshee punya fitur audio bookmark untuk membantu Anda belajar.

Aplikasi-Aplikasi Pemutar Audio

1. Banshee

Banshee adalah aplikasi pemutar multimedia bawaan Ubuntu. Banshee mampu memutar audio maupun online streaming. Banshee memiliki fitur playlist, queue, file manageraudio bookmark, track details (ID2 dan ID3) editor, shuffle dan repeat, equalizer, shortcut key, dan terintegrasi dengan panel Ubuntu (juga KDE lewat pengaturan). Anda juga bisa memakainya di desktop selain Unity.

resized_banshee1 

banshee5

1.1 Online Streaming

Untuk mendengarkan online streaming di Banshee, Anda bisa klik aitem Radio (kolom kiri) > Add Station > masukkan alamat streaming semisal http://almuwahhidiin.onlivestreaming.net:8181 ke dalam isian Stream URL > isikan keterangan lainnya juga > OK. Hasilnya, Banshee akan langsung melakukan streaming ke server yang dituju. Anda bisa menggunakan ini untuk ta’lim online maupun daurah masyayikh nasional. Lihat skrinsot berikut.

banshee3

banshee2

2. Rhythmbox

Rhythmbox, sebagaimana Banshee, juga aplikasi pemutar multimedia bawaan Ubuntu. Rhythmbox mampu memutar audio di komputer maupun online streaming. Rhythmbox punya kemampuan playlist, shuffle dan repeat, shortcut key di keyboard (Fn+XXX), track details (ID2 dan ID3) editor, dan ia terintegrasi dengan panel Ubuntu. Sayangnya, Rhytmbox belum memiliki fitur audio bookmark sampai hari ini. Anda bisa memakainya di desktop selain Unity. Dan Rhythmbox belum terintegrasi (secara tray icon) dengan KDE yang saya gunakan.

resized_rhythmbox 

2.1 Online Streaming

Untuk melakukan online streaming di Rhythmbox, Anda cukup buka menu Music > New Internet Radio Station > masukkan alamat streaming semisal http://almuwahhidiin.onlivestreaming.net:8181 > OK. Klik dua kali entrinya jika tidak otomatis diputar. Anda bisa melakukan ini untuk ta’lim online atau daurah masyayikh nasional.

resized_rhythmbox3

3. Amarok

Amarok adalah pemutar audio asli KDE (K Desktop Environment). KDE sendiri bisa diinstal kemudian pada Ubuntu atau bisa diperoleh secara bawaan pada distro Kubuntu, openSUSE, Mageia, dan lain-lain. Amarok mampu memutar audio di komputer maupun online streaming. Amarok memiliki fitur playlistsorting, shuffle dan repeat, file manager, audio bookmark, search tool, equalizer, track details (ID2 dan ID3) editortray icon (KDE maupun Unity), serta OSD lengkap ketika audio berganti.

amarok

3.1 Audio Bookmark

Beginilah audio bookmark ala Amarok. Anda bisa mencatat hal penting apa yang terjadi pada menit sekian detik sekian. Cara menambahkan audio bookmark adalah klik pada tombol bendera hijau di bagian tengah Amarok. Setiap menambahkan bookmark, Anda akan memperoleh tanda biru pada progress bar audio yang bersangkutan tepat pada posisi detik Anda membuatnya. Jika Anda hover kursor di atasnya, Anda bisa menuliskan catatan. Bookmark ini tidak akan hilang kecuali Anda hapus berkas audionya. Anda bisa membuat audio bookmark tanpa batas jumlah untuk suatu audio. Ini akan membantu belajar. Lihat gambar berikut.

resized_amarok4

3.2 Online Streaming

Anda bisa memasukkan alamat streaming semisal http://live.bismillah.us:8333 (radio online milik Masjid Abu Bakar Ash-Shiddiq Surabaya) ke dalam Amarok untuk diputar. Caranya dengan mengambil menu Playlist > Add Stream > paste ke dalam kotaknya > OK. Sesaat kemudian Amarok akan memutarkan stream tersebut. Tentu server kajian harus aktif dan Amarok terhubung ke internet. Cara yang sama juga berlaku untuk daurah masyayikh nasional. Anda cukup mencari stream URL saja.

amarok1

Berikut ini skrinsot Amarok sedang memutar stream Al Ustadz Agus Sua’idy dari http://bismillah.us. Baris berwarna biru pada sebelah kanan itu adalah penanda track yang sedang diputar.

amarok3

4. Audacious

Audacious adalah pemutar audio legendaris di Linux. Audacious mampu memutar audio maupun online streaming. Audacious memiliki fitur playlistmultiple tabequalizer, Winamp skin (lihat gambar di bawah), shortcut keyshuffle dan repeat, track (ID2 dan ID3) details editor, tray icon (bekerja baik di Unity maupun KDE), dan search tool. Sayangnya, Audacious belum memiliki audio bookmark. Namun Audacious mungkin adalah yang paling cocok untuk Anda karena ia memiliki Winamp skin. Tampilannya bisa diatur sama persis dengan Winamp.

resized_audacious

audacious2

4.1 Online Streaming

Anda bisa melakukan online streaming dengan menu File > Add URL > masukkan URL streaming > OK. Klik 2 kali pada entrinya lalu Audacious akan segera memutarnya. Anda bisa melakukan ini untuk ta’lim online ataupun daurah masyayikh nasional.

resized_audacious5

audacious3

Akhirul Kalam

Walau mungkin tulisan ini adalah yang pertama dalam masalah pemutaran audio kajian di Linux, tetapi tulisan ini tidak sempurna. Bahkan XMMS yang lebih legendaris dari Audacious belum dibahas. Dan lagi, asal muasal semua audio player diciptakan untuk musik. Sehingga dimaklumi kalau terdapat banyak fitur yang tidak ada hubungannya dengan ta’lim. Saya berharap saudara-saudara dapat melanjutkan menulis tulisan yang global seperti ini atau spesifik pada salah satu player untuk ta’lim. Pesan saya, jangan sia-siakan waktu Anda dengan mengumpul dan mendengarkan musik. Apalagi jika Anda juga anak muda. Sayangi waktu Anda. Timbalah ilmu agama. Setidaknya dengan audio-audio kajian yang bermanfaat untuk dunia dan akhirat. Semoga tulisan ini bermanfaat. Barakallahu fiykum.


Filed under: Linux

Pengantar Pemrograman OpenGL GLUT C++ di Linux

$
0
0

Bismillahirrahmanirrahim.

geanyTulisan ini didedikasikan untuk Anda yang ingin memrogram OpenGL dengan GLUT (GL Utility Toolkit) di Linux. Jika Anda terbiasa memrogram di WIndows dengan Microsoft Visual C++ dan ingin melakukannya di Linux, maka tulisan ini sesuai untuk Anda. Tulisan ini memperkenalkan kepada Anda OpenGL, GLUT, masalah lisensi GLUT, FreeGLUT sebagai alternatifnya, instalasi FreeGLUT di Ubuntu, pengaturan IDE Geany untuk kompilasi OpenGL dengan g++, dan tentunya contoh-contoh programnya. Semoga tulisan ini bermanfaat.

Isi Tulisan Ini

  1. Apa Itu OpenGL dan GLUT
  2. Bagaimana Pemrograman OpenGL Itu
  3. Masalah Lisensi GLUT
  4. FreeGLUT Sebagai Solusi Terbaik
  5. Menginstal OpenGL dan FreeGLUT di Ubuntu
  6. Menginstal IDE Geany untuk Menulis Kode
  7. Mengatur Konfigurasi Build Options Geany g++
  8. Contoh-Contoh Kode Program OpenGL FreeGLUT
  9. Membaca dan Memahami Dokumentasi Teknis OpenGL
  10. Kumpulan Referensi Lanjutan OpenGL dan GLUT
  11. Referensi Tulisan Ini

1. Apa  Itu OpenGL dan GLUT

OpenGL adalah Open Graphic LIbrary. Ia adalah library, kumpulan header-header yang berisi fungsi khusus, yang berguna untuk membuat grafis di komputer. OpenGL juga merupakan API (Application Programming Interface) yang setara dengan Microsoft Direct3D. Dengan OpenGL, orang bisa membuat grafis digital, animasi, hingga game 2D/3D sebagaimana biasa dilakukan dengan Direct3D juga. OpenGL bisa digunakan dengan bahasa pemrograman C, C++, Python, dan FORTRAN. Tulisan ini hanya membahas OpenGL dengan C++.

GLUT (GL Utility Toolkit) adalah pustaka yang dibuat untuk membantu OpenGL dalam hal I/O ke dalam sistem operasi secara low-level. Dengan kata lain, GLUT yang bertanggung jawab membuat jendela untuk OpenGL. GLUT juga yang bertanggung jawab memroses masukan dari keyboard/mouse pengguna untuk mengendalikan program OpenGL. Tulisan ini akan dititikberatkan pada GLUT daripada OpenGL.

2. Bagaimana Pemrograman OpenGL itu

Pemrograman C++ dengan pustaka OpenGL itu dilakukan untuk menghasilkan suatu gambar di monitor secara manual. Anda akan menjumpai subpustaka-subpustaka di dalam OpenGL  seperti GLUT, GLU, dan GLEW. Secara singkat, Anda akan menemukan fungsi-fungsi program seperti berikut:

  • glBegin()
  • glEnd()
  • glVertex2f()
  • glClear()

digunakan pada program-program C++ yang memanfaatkan OpenGL.  Sederhananya, Anda akan membuat gambar, animasi, atau game dengan kendali 100% di tangan Anda karena menggunakan OpenGL. Jika Anda terbiasa membuat gambar dengan GIMP atau Krita di Linux, maka secara kasar Anda akan membuat gambar per pikselnya di pemrograman OpenGL. Namun keuntungan menggunakan OpenGL adalah Anda tidak perlu menulis kode gambar per piksel karena sudah dilakukan oleh fungsi-fungsi yang tersedia banyak di dalam OpenGL. Panggil fungsi itu ke dalam kode C++ dan jadilah satu gambar. Itulah kegunaan pustaka OpenGL.

Perlu diingat, fungsi-fungsi dalam pemrograman OpenGL itu sangat khas. Di dalam OpenGL, Anda akan menemukan fungsi-fungsi yang selalu diawali dengan gl seperti:

  • glTranslatef()
  • glClear()

GLUT

Sedangkan di dalam GLUT, Anda akan temukan fungsi-fungsinya berawalan glut seperti:

  • glutMainLoop()
  • glutDisplayFunc()
  • glutInit()
  • glutCreateWindow()

GLU

Selain keduanya, Anda juga akan bertemu dengan GLU (OpenGL Utility Library) yakni pustaka inti OpenGL yang merupakan pustaka grafisnya. Pustaka ini mudah dikenali dengan fungsi-fungsinya yang selalu berawalan glu seperti:

  • gluOrtho2D()
  • gluPerspective()
  • gluPickMatrix()

GLEW

GLEW adalah OpenGL Extension Wrangler, suatu pustaka yang bertugas memuat ekstensi-ekstensi (baca: plugin) OpenGL ke dalam kode program. GLEW digunakan dengan #include <GL/glew.h>. Di dalam GLEW, ada fungsi utama glewInit(). Dan Anda bisa memanggil ekstensi OpenGL dengan memakai variabel GLEW_{nama_ekstensinya}.

Singkatnya, pemrograman OpenGL sangat bergantung pada fungsi-fungsi. Maka mau tidak mau, Anda harus tahu (bukan hafal) fungsi-fungsi yang disediakan oleh OpenGL. Sedangkan Anda tidak harus memulai semua pemrograman dari nol karena sudah disediakan dokumentasi resmi dan sangat banyak tersedia contoh-contoh kode program OpenGL di internet. Cukup salin dan jalankan. Maka Anda akan menemukan bahwa siklus pemrograman OpenGL itu sederhananya demikian:

  1. Dapatkan contoh kode program.
  2. Jalankan.
  3. Baca dokumentasi OpenGL (baca fungsi yang dibutuhkan).
  4. Kembali ke tahap 1.

Jika Anda kesulitan menemukan dokumentasi OpenGL yang bagus, gunakan Google untuk mencarinya seperti berikut.

wavemon79

Perlu diketahui, OpenGL adalah pustaka yang sangat terkenal. Jadi akan sangat mudah menemukan contoh program dan panduan di internet. Anda pun bisa mulai membiasakan diri membaca dokumentasi referensi pustaka OpenGL. Berikut ini skrinsot yang diambil dari halaman http://www.opengl.org/sdk/docs/man4/.

wavemon80

3. Masalah Lisensi GLUT

GLUT sendiri adalah pustaka yang proprietari. Selain itu, GLUT telah berakhir pengembangannya pada 1998. Permasalahan pentingnya, lisensi GLUT tidak mengizinkan distribusi pustaka yang telah dimodifikasi.

4. FreeGLUT Sebagai Solusi Terbaik

Karena masalah GLUT, komunitas open source berinisiatif membuat implementasi GLUT yang open source dari nol. Akhirnya muncullah FreeGLUT yang kompatibel 100% (artinya kode fungsi-fungsinya sama) dengan GLUT. FreeGLUT memiliki kelebihan di sisi pengembangan yang aktif dan dukungan komunitas yang besar selain dia open source. Sebagai kabar baik, FreeGLUT telah tersedia di repositori Ubuntu sejak lama.

OpenGL

Logo OpenGL

FreeGLUT

Logo FreeGLUT

Sebenarnya masih ada solusi selain FreeGLUT yaitu OpenGLUT. Namun ia sendiri sudah berhenti dikembangkan pada 2005. Oleh karena itu, FreeGLUT adalah satu-satunya solusi dan yang terbaik untuk memrogram OpenGL di Linux. Tulisan ini akan menyebut FreeGLUT sebagai GLUT untuk memudahkan penjelasan.

5. Menginstal OpenGL dan FreeGLUT di Ubuntu

Instalasi GLUT di Ubuntu sangat mudah. Cukup diselesaikan dalam 1 baris perintah saja (pastikan komputer terhubung ke internet):

sudo apt-get install freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev

wavemon81

Perintah tersebut diadakan karena kita memerlukan paket-paket berikut untuk menginstal GLUT di Ubuntu:

  1. freeglut3
  2. freeglut3-dev
  3. libglew1.5
  4. libglew1.5-dev
  5. libglu1-mesa
  6. libglu1-mesa-dev
  7. libgl1-mesa-glx
  8. libgl1-mesa-dev

Karena kita akan memrogram C++, maka mutlak kita membutuhkan kompiler C++ juga. Di Linux, kompiler C++ terbaik adalah g++. Maka instal saja build-essential dan Anda akan memperoleh semuanya.

sudo apt-get install build-essential

wavemon82

Catatan 1: jika Anda tidak terhubung ke internet, maka gunakanlah cara offline untuk menginstal paket-paket yang dibutuhkan. Dijamin berhasil jika dilaksanakan dengan benar. Silakan pilih tutorial satu atau tutorial dua

Catatan 2: saya menulis tulisan ini pada Ubuntu 12.04 32 bit pada April 2014. Mungkin pada masa depan akan ada perubahan nama paket karena ada pemutakhiran dari developer. 

6. Menginstal IDE Geany untuk Menulis Kode

Jika di Windows Anda terbiasa dengan Microsoft Visual C++, maka di Linux bisa jadi Anda memperoleh penganti yang lebih baik. Dan Anda punya banyak pilihan IDE. Tulisan ini akan menggunakan Geany sebagai IDE untuk menulis, mengompilasi, dan men-debug program C++ OpenGL. Jika tidak suka Geany, Anda bisa menggantinya dengan Codelite, Codeblocks, KDevelop, dan lain-lain. Semuanya tersedia di repositori Ubuntu. Adapun perintah instalasi Geany, sama sederhananya dengan perintah sebelumnya:

sudo apt-get install geany

Berikut ini skrinsot Geany on action:

wavemon83

7. Mengatur Konfigurasi Build Options Geany g++

Untuk bisa memrogram, Anda harus menggunakan kompiler untuk mengubah kode sumber menjadi biner. Untuk melakukan itu, Anda harus tahu perintah kompilasinya. Setelah tahu, Anda harus memasukkan perintah itu ke dalam build options dari IDE Anda. Apa tujuannya? Supaya jika ditekan tombol Compile, perintah kompilasi akan dikerjakan oleh IDE. Begitu juga dengan tombol Build dan Run. Di sini, karena kita menggunakan bahasa C++, maka kita menggunakan kompiler g++. Lalu kita atur supaya perintah kompilasi dan build milik g++ dijalankan otomatis oleh Geany dengan menuliskan perintah g++ ke dalam menu Build > Set Build Options. Ini harus kita lakukan supaya bisa memrogram semudah Microsoft Visual C++ dengan klik untuk kompilasi.

Masukkan dua perintah berikut pada tempatnya masing-masing:

  • Perintah Compile: g++ -Wall -c “%f”
  • Perintah Build: g++ -Wall -o “%e” “%f” -lglut -lGLEW -lGLU

Perhatikan gambar berikut untuk mengetahui di mana tempat menuliskannya.

wavemon90

wavemon89

Adapun maksud perintah g++ Compile di atas adalah:

  • -Wall : Warning All, mengatur supaya g++ melaporkan semua pesan warning.
  • -c : compile, mengatur supaya g++ mengompilasikan kode sumber tetapi tidak melakukan linking.
  • “%f” : file, ini adalah tanda yang hanya dimengerti oleh Geany. Ini digunakan sebagai variabel supaya Geany bisa mengompilasikan kode sumber dengan nama berkas apa pun. Tanpa menggunakan tanda “%f”, Anda harus mengganti Build Options untuk setiap berkas berbeda.

Adapun maksud perintah g++ Build di atas adalah:

  • -Wall : lihat atas.
  • -o : object, menciptakan hasil keluaran bernama file. Nama file akan ditentukan oleh argumen setelah -o ini.
  • “%e” : executable, ini argumen setelah -o yang nantinya akan menjadi nama eksekutabel yang dihasilkan. Tanda “%e” adalah tanda yang hanya dimengerti oleh Geany.
  • “%f” : file, nama berkas kode sumber.
  • -lglut : library glut, opsi spesial g++ untuk menyertakan pustaka glut dari dalam sistem ke dalam linking ketika build. Tanpa ini, Anda tidak akan bisa melakukan include terhadap <GL/glut.h> di dalam kode sumber.
  • -lGLEW : library GLEW, opsi spesial g++ untuk menyertakan pustaka GLEW yang dibutuhkan oleh glut. Lihat kembali penjelasan GLEW  di awal tulisan.
  • -lGLU : library GLU, opsi spesial g++ untuk menyertakan pustaka GLU yang dibutuhkan oleh glut. Lihat kembali penjelasan GLU di awal tulisan.

8. Contoh-Contoh Kode Program GLUT

compressed_opengl-glut-geany

Berikut bagian paling penting dari tulisan ini. Anda harus mencoba kode sumber-kode sumber contoh OpenGL supaya memahami pemrogramannya. Perhatikannya kemiripan di antara kode-kode berikut dan temukanlah kuncinya. Saya telah berusaha memberi komentar pada setiap baris kode sebagai penjelasan.

8.1 Garis Horizontal

opengl-glut-geany5

//Program Garis Horizontal
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_LINES);						//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(100.0, 0.0);				//variabel GL_LINES menandakan objek yang dibuat adalah garis
		glVertex2f(211.0, 0.0);				//glVertex2f() adalah fungsi pembuat titik
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka dua glVertex2f() akan membentuk satu garis

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

8.2 Garis Vertikal

opengl-glut-geany1

//Program Garis Vertikal
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_LINES);						//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(100.0, 0.0);				//variabel GL_LINES menandakan objek yang dibuat adalah garis
		glVertex2f(100.0, 100.0);			//X tetap Y berubah, maka garis menjadi vertikal
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka dua glVertex2f() akan membentuk satu garis

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

8.3 Titik

opengl-glut-geany2

//Program Titik
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_POINTS);						//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(100.0, 0.0);				//variabel GL_POINTS menandakan pembuatan titik untuk apa pun kode di antara glBegin() dan glEnd()
		glVertex2f(100.0, 100.0);			//X tetap Y berubah, maka garis menjadi vertikal
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka dua glVertex2f() akan membentuk satu garis

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

8.4 Segitiga

opengl-glut-geany3

//Program Segitiga
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_POLYGON);					//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(100.0, 10.0);			//variabel GL_POINTS menandakan pembuatan poligon (bidang yang dibuat dari titik-titik yang terhubung oleh garis)
		glVertex2f(100.0, 100.0);			//ada 3 vertex yang saling terhubung menjadi segitiga
		glVertex2f(10.0, 100.0);			//vertex-vertex itu ada di dalam cakupan GL_POLYGON
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka 3 glVertex2f() akan membentuk satu segitiga

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

8.5 Segiempat

opengl-glut-geany4

//Program Segiempat
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_POLYGON);					//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(10.0, 10.0);			//variabel GL_POINTS menandakan pembuatan poligon (bidang yang dibuat dari titik-titik yang terhubung oleh garis)
		glVertex2f(10.0, 100.0);			//ada 4 vertex yang saling terhubung menjadi segiempat
		glVertex2f(100.0, 100.0);			//vertex-vertex itu ada di dalam cakupan GL_POLYGON
		glVertex2f(100.0, 10.0);			//
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka 4 glVertex2f() akan membentuk satu segiempat

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

Jika berhasil menemukan garis besar kode-kode dia atas, Anda akan memahami dasar penulisan kode program OpenGL. Selebihnya, silakan merujuk pada tautan-tautan yang saya sebutkan di akhir tulisan.

9. Membaca dan Memahami Dokumentasi Referensi API OpenGL

Seseorang bisa memrogram dengan baik jika dia mampu membaca dokumentasi referensi. Hal ini juga berlaku untuk pemrograman OpenGL. Anda perlu tahu bagaimana cara membaca lalu menerapkan referensi API dari OpenGL. Saya akan menunjukkan dulu cara baca dokumentasi tidak resmi baru kemudian yang resmi.

9.1 Dokumentasi Tidak Resmi

Contoh yang sangat bagus yang saya temukan adalah satu laman dari universitas di Singapura. Alamatnya http://www3.ntu.edu.sg/home/ehchua/programming/opengl/CG_Introduction.html dan berikut ini saya sertakan skrinsot sebagian halamannya.

Di dalam setiap dokumentasi referensi API, selalu ada bagian-bagian utama seperti spesifikasi fungsi-fungsi, daftar fitur (beragam jenis di setiap pustaka), dan jika Anda beruntung maka ada contoh-contoh. Di laman di atas, Anda akan memperoleh penjelasan fungsi-fungsi OpenGL.

Cara membaca referensi fungsi adalah perhatikan pada nama fungsi kemudian argumen-argumennya (isi dari kurung () milik fungsi). Misalnya, di dalam sebuah kode Anda menemukan glVertex3f. Anda tidak tahu apa fungsinya. Maka cari dan bacalah referensi fungsi glVertex3f di dalamnya. Bisa juga langsung membaca contoh-contoh implementasinya.

opengl-glut-geany10

opengl-glut-geany9 

Biasanya, orang yang membuat program lebih fokus membaca referensi spesifikasi (tata cara penulisan) suatu fungsi. Dalam contoh di atas, glVertex3f disebutkan dengan argumen berjumlah 3 (1.1f, 2.2f, 3.3f). Artinya, saat menggunakan glVertex3f nanti, Anda harus mengisinya dengan 3 argumen yang bertipe float seperti tertera di spesifikasi. Begitulah cara membacanya.

9.1.1 Fungsi

opengl-glut-geany6

Di atas ini adalah referensi spesifikasi fungsi. Referensi fungsi menjelaskan tata cara penulisan suatu fungsi. Yang perlu diperhatikan adalah tipe data dari fungsi sendiri, nama fungsinya, dan argumennya. Tipe data itu elemen sebelum nama fungsi (void, int, float, dll.), nama fungsi itu yang diawali dengan gl dan memiliki argumen, sedangkan argumen itu variabel-variabel yang mengisi kurung () suatu fungsi.

9.1.2 Fitur Penting (Geometric Primitives)

opengl-glut-geany7

Referensi ini menjelaskan variabel yang bisa Anda gunakan untuk membuat objek geometri yang diinginkan. Jika ingin membuat garis, gunakanlah GL_LINES. Jika ingin membuat segitiga, gunakanlah GL_TRIANGLES. Dan seterusnya. Variabel ini bisa dipasangkan sebagai argumen pada glBegin() (tertera pada lanjutan skrinsot di atas. 

9.1.3 Contoh 

opengl-glut-geany8

Jalan pintas belajar pemrograman adalah salin kode sumber contoh, kompilasikan, lihat hasilnya. Lakukan itu terus menerus maka Anda mampu membaca referensi dengan baik. Selebihnya, Anda akan mudah melakukan pemrograman nantinya.

9.2 Dokumentasi Resmi

Dokumentasi resmi dari setiap pustaka atau framework selalu tampak lengkap dan profesional. Tidak terkecuali OpenGL. Bukalah alamat http://www.opengl.org/sdk/docs/man4/ (jika Anda memakai OpenGL 4) lalu buka nama fungsi yang Anda ingin tahu spesifikasinya. Itulah cara membukanya. Lalu perhatikan apa saja yang ada di dalam 1 halaman referensi.

opengl-glut-geany11

Saya beri contoh pada gambar di atas pencarian spesifikasi glFlush. Mirip dengan manpages di Linux, Anda memperoleh laman yang menjelaskan arti dan cara penulisan fungsi glFlush. Biasanya, hal terpenting yang dicari programer adalah spesifikasi (tata cara penulisan) fungsinya. Baca lalu terapkan pada kode Anda. Untuk bisa membaca, tentu Anda harus banyak mencoba kode sumber-kode sumber contoh.

10. Kumpulan Referensi Lanjutan OpenGL dan GLUT

11. Referensi Tulisan Ini


Filed under: Linux

Pemrograman Qt 18 – QTextStream untuk Membuat Aplikasi Proxy Changer

$
0
0

Bismillahirrahmanirrahim.

qt-creator-logoPernahkah Anda menggunakan koneksi internet yang berotentikasi (username dan password) melalui proxy server? Jika pernah, Anda akan mengalami kesulitan mengatur proxy server untuk browser (selain Firefox), apt-get, dan Ubuntu Software Center ketika ingin menginstal aplikasi. Selain itu, Anda juga akan kesulitan mengatur proxy server untuk selain apt-get secara system wide karena di Ubuntu sendiri belum ada GUI untuk mengatur otentikasinya, yang ada hanya kotak isian alamat proxy server dan nomor port. Otentikasinya justru tidak ada. Sementara Anda akan menemukan bahwa mudah sekali mengatur proxy server di Synaptic Package Manager karena dia memiliki pengaturan yang lengkap dalam hal ini. Selain Synaptic, Anda juga menemukan kemudahan mengatur otentikasi pada Firefox (atau browser yang memiliki pengaturan proxy independen lainnya). Kali ini saya akan menunjukkan program yang menjadi impian lama saya itu. Saya akan membuat satu aplikasi GUI yang mampu menerima masukan otentikasi (akun) proxy server Anda dan memasukkannya ke dalam berkas konfigurasi apt.conf. Program ini sudah layak coba sehingga Anda bisa menerapkannya langsung hari ini juga. Semoga tulisan ini bermanfaat.

Spesifikasi Sistem

  1. Ubuntu 12.04
  2. Qt Creator 2.4.1
  3. Qt 4.8

Daftar Kelas

  1. QLineEdit
  2. QIntValidator
  3. QTextStream
  4. QFile

Daftar Method

  1. setRange() <- milik QIntValidator
  2. setValidator() <- milik QLineEdit
  3. setEchoMode() <- milik QLineEdit
  4. setFileName() <- milik QFile
  5. open() <- milik QFile
  6. operator <<() <- milik QTextStream

Arah Tulisan Ini

Pertama-tama, perlu diketahui dulu bahwa Ubuntu memiliki minimal 3 berkas untuk konfigurasi koneksi melalui proxy server:

  1. /etc/apt/apt.conf : konfigurasi proxy untuk apt-get.
  2. ~/.bashrc : konfigurasi proxy untuk seluruh aplikasi Terminal secara umum untuk pengguna bash selain root.
  3. /etc/profle : konfigurasi proxy untuk seluruh aplikasi Terminal secara umum untuk root.

Kemudian, program yang akan dibuat harus mampu melakukan penulisan konfigurasi ke dalam berkas apt.conf. Sementara ini, solusi yang tersedia untuk pengguna hanyalah yang dilakukan oleh program-program GUI semisal KDE System Setting dan GNOME Control Center. Namun mereka berdua tidak memiliki opsi otentikasi sampai hari ini. Jika Anda butuh otentikasi proxy, Anda wajib menyunting sendiri lewat Terminal terhadap salah satu berkas di atas. Itulah masalahnya. Jika di sana opsi otentikasi tidak ada, maka pengguna pemula sudah harus menggunakan Terminal hanya untuk sekadar menggunakan Firefox, apt-get, atau Ubuntu Software Center. Ini adalah kekurangan.

ngite-kedelapanbelas

Perhatikan GNOME Control Center di atas. Lihat pengaturan koneksi proxy-nya. Tidak ada opsi otentikasinya, bukan? Itu kekurangannya. Sebenarnya Anda bisa mengaturnya di sini dengan menuliskan semua otentikasi dalam 1 baris dengan format berikut:

username:password@proxyaddress

tetapi ini sangat jelek untuk pengguna pemula. Ini bukan UX yang diharapkan dari sistem yang dikatakan user friendly. Mengapa? Karena pemula perlu belajar dulu untuk mengetahui bahwa ada format khusus (satu baris di atas) untuk sekadar otentikasi proxy. Kejelekannya bertambah dengan adanya teks password yang harus disertakan, yang tentunya GNOME Control Center tidak akan menyembunyikannya. Ini kekurangan yang berbahaya bagi saya. Sebagai perbandingan, lihatlah pengaturan otentikasi proxy milik Synaptic berikut. Jauh lebih cerdas dan jelas bagi pengguna (jelas di mana otentikasi harus dituliskan). Lebih penting lagi, ia menyembunyikan isian password dari pengguna.

ngite-kedelapanbelas1

Maka program kita kali ini bertujuan memberikan UX seperti Synaptic ini untuk mengatur koneksi proxy, yang menggantikan GNOME Control Center (juga KDE System Settings). Nantinya, program ini tidak hanya sanggup mengisi apt.conf tetapi juga berkas-berkas konfigurasi proxy lain di dalam sistem. Kita buat program untuk apt.conf dulu. Jika kita sudah berhasil, maka kita lanjut mengerjakan yang lain.

Kemudian, perlu diketahui pula bahwa konfigurasi koneksi proxy apt.conf itu memiliki format sebagai berikut:

Acquire::http::proxy "http://username:password@proxyaddress:port/";

Pengguna harus menuliskannya sendiri jika mereka ingin apt terhubung ke internet. Ini sangat tidak praktis. Namun sebaris teks inilah yang akan dikerjakan oleh program yang kita buat. Kita buat dia menerima 4 masukan (username, password, proxyaddress, dan port) lalu menggabungkannya (append) jadi 1 baris menurut format di atas. Kita buat dia otomatis menuliskannya ke dalam berkas apt.conf.

Jika Anda sanggup memahami program kali ini, maka Anda bisa memanfaatkannya untuk membuat aplikasi yang mampu mem-parse masukan dari QLineEdit menjadi isi dari berkas teks. Tidak hanya terbatas pada pengaturan proxy server.

Kode

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QPushButton *tombolPasang;

    QLabel      *labelUser;
    QLabel      *labelPass;
    QLabel      *labelProxy;
    QLabel      *labelPort;

    QLineEdit   *teksUser;
    QLineEdit   *teksPass;
    QLineEdit   *teksProxy;
    QLineEdit   *teksPort;
    QGridLayout *layoutUtama;
    QString     *username;

private slots:
    void on_tombolPasang_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

    QPushButton *tombolPasang   =   new     QPushButton("PASANG");

    QLabel      *labelUser      =   new     QLabel("USERNAME");
    QLabel      *labelPass      =   new     QLabel("PASSWORD");
    QLabel      *labelProxy     =   new     QLabel("PROXY");
    QLabel      *labelPort      =   new     QLabel("PORT");

                 teksUser       =   new     QLineEdit;
                 teksPass       =   new     QLineEdit;
                 teksProxy      =   new     QLineEdit;
                 teksPort       =   new     QLineEdit;
    QGridLayout *layoutUtama    =   new     QGridLayout;
    QWidget     *widgetUtama    =   new     QWidget;

    QIntValidator   *validator  =   new     QIntValidator;
    validator->setRange(0, 9999);
    teksPort->setValidator(validator);

    //istimewakan password dengan menampilkan tanda asterisk
    //dipasang pada Saturday, March 22, 2014 07:57 PM
    teksPass->setEchoMode(QLineEdit::Password);

    layoutUtama->addWidget(labelUser, 1,1);
    layoutUtama->addWidget(labelPass, 2,1);
    layoutUtama->addWidget(labelProxy, 3,1);
    layoutUtama->addWidget(labelPort, 4,1);

    layoutUtama->addWidget(teksUser, 1,2);
    layoutUtama->addWidget(teksPass, 2,2);
    layoutUtama->addWidget(teksProxy, 3,2);
    layoutUtama->addWidget(teksPort, 4,2);
    layoutUtama->addWidget(tombolPasang, 5,1,1,2);

    widgetUtama->setLayout(layoutUtama);
    widgetUtama->setMinimumSize(333,333);
    this->setCentralWidget(widgetUtama);

    connect(tombolPasang, SIGNAL(clicked()), this, SLOT(on_tombolPasang_clicked()));

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_tombolPasang_clicked()
{
    QFile berkasku;
    berkasku.setFileName("apt.conf");
    if(berkasku.open(QFile::WriteOnly)){  //gara-gara satu baris ini, aku tidak bisa menulis ke dalam berkas teks
                                          //kode QFile::WriteOnly bertugas menyetel mode pada objek QFile untuk menulis
                                          //jika tidak disetel, maka QFile tidak akan melakukan apa-apa
                                          //ditemukan pada Saturday, March 22, 2014 07:37 PM
                                          //sumber: contoh program textedit di dalam Qt Documentation

     //cara kerja penulisan teks dengan kerja sama QFile dan QTextStream ini unik
     //dibuat dulu objek QFile
     //lalu dibuat objek QTextStream yang dikaitkan dengan objek QFile tadi
     //lalu objek QTextStream ditulisi dengan method operator <<()
     //maka perubahan terhadap objek QTextStream juga terjadi pada objek QFile
     //ditemukan pada Saturday, March 22, 2014 07:50 PM

     QTextStream out(&berkasku);
     out.operator <<("Acquire::http::proxy \"http://");  //pendahuluan wajib untuk apt.conf
     out.operator <<(teksUser->text());  //username
     out.operator <<(":");  //pemisah
     out.operator <<(teksPass->text());  //password
     out.operator <<("@");  //et
     out.operator <<(teksProxy->text()); //proxy
     out.operator <<(":");  //pemisah
     out.operator <<(teksPort->text());  //port
     out.operator <<("\";");  //port
    }
}

Qt Creator dan Kode

ngite-kedelapanbelas2

Hasil

ngite-kedelapanbelas3

ngite-kedelapanbelas5

Analisis

Saya berusaha memberikan Anda analisis dimulai dari kode paling penting.

1. Appending

Kode appending ini ditangani oleh fungsi on_tombolPasang_clicked(). Kode ini berfungsi menerjemahkan 4 isi dari kotak isian ke dalam 1 baris kode konfigurasi. Kode ini melakukan apending berurutan mulai dari username sampai port.

     QTextStream out(&berkasku);
     out.operator <<("Acquire::http::proxy \"http://");  //pendahuluan wajib untuk apt.conf
     out.operator <<(teksUser->text());  //username
     out.operator <<(":");  //pemisah
     out.operator <<(teksPass->text());  //password
     out.operator <<("@");  //et
     out.operator <<(teksProxy->text()); //proxy
     out.operator <<(":");  //pemisah
     out.operator <<(teksPort->text());  //port
     out.operator <<("\";");  //port

Logika yang saya lakukan dalam kode ini sebagai berikut:

  1. Pertama-tama, menulis kode pendahuluan konfigurasi proxy Ubuntu yakni Acquire::http::proxy beserta spasi dan awalan “http:// ke dalam berkas apt.conf.
  2. Kedua, mengambil isi dari teksUser (isian username) lalu meng-append-kannya pada apt.conf.
  3. Ketiga, meng-append-kan teks “:” (titik dua) sebagai pemisah antara username dan password pada apt.conf.
  4. Keempat, mengambil isi dari teksPass (isian password) lalu meng-append-kannya pada apt.conf.
  5. Kelima, meng-append-kan teks “@” (at) sebagai pemisah antara otentikasi dengan alamat proxy.
  6. Keenam, mengambil isi dari teksProxy (isian alamat proxy) lalu meng-append-kannya pada apt.conf.
  7. Ketujuh, meng-append-kan teks “:” (titik dua) sebagai pemisah antara alamat proxy dengan port.
  8. Kedelapan, mengambil isi dari teksPort (isian port) lalu meng-append-kannya pada apt.conf.
  9. Kesembilan, meng-append-kan teks akhiran “; sebagai penutup baris dalam apt.conf.

2. Pembuatan Berkas apt.conf

Pembuatan berkas teks dikerjakan oleh kelas QFile di dalam Qt Framework. Pengisian teks ke dalamnya dilakukan oleh kelas QTextStream. Oleh karena itu, di dalam program ini, pertama-tama dibuat dulu objek QFile yang bernama berkasku. Lalu objek berkasku diberi nama berkas apt.conf dengan method setFileName(). Lalu yang paling penting, objek berkasku diberi izin QFile:WriteOnly yang berada dalam sebuah kerangka if. Kode appending di atas sebenarnya berada di dalam kerangka if ini. Lihat kode berikut.

    QFile berkasku;
    berkasku.setFileName("apt.conf");
    if(berkasku.open(QFile::WriteOnly)){  //gara-gara satu baris ini, aku tidak bisa menulis ke dalam berkas teks
                                          //kode QFile::WriteOnly bertugas menyetel mode pada objek QFile untuk menulis
                                          //jika tidak disetel, maka QFile tidak akan melakukan apa-apa
                                          //ditemukan pada Saturday, March 22, 2014 07:37 PM
                                          //sumber: contoh program textedit di dalam Qt Documentation

     //cara kerja penulisan teks dengan kerja sama QFile dan QTextStream ini unik
     //dibuat dulu objek QFile
     //lalu dibuat objek QTextStream yang dikaitkan dengan objek QFile tadi
     //lalu objek QTextStream ditulisi dengan method operator <<()
     //maka perubahan terhadap objek QTextStream juga terjadi pada objek QFile
     //ditemukan pada Saturday, March 22, 2014 07:50 PM

    }

Kerangka if di sini bersyaratkan method open() untuk berkasku. Method ini gunanya untuk membuka berkas. Di dalam argumennya, kita bisa isikan QFile::ReadOnly untuk membaca saja, QFile::WriteOnly untuk menulis saja, atau QFile::ReadWrite untuk baca-tulis. Karena kebutuhan kita kali ini cuma mengisi berkasnya dengan teks, maka kita memilih mode QFile::WriteOnly. Salah satu tugas dari mode QFile::WriteOnly adalah jika berkas yang dimaksud belum ada pada folder yang ditentukan, maka ia akan membuatnya terlebih dahulu.

Kemudian, karena yang kita inginkan adalah appending teks ke dalam berkas, amak kita menggunakan QTextStream sebagai solusinya. Dia akan melakukan pembacaan masukan dari QTextEdit lalu meng-apend-kan ke dalam berkas yang dibuat oleh QFile tadi. Ini dikerjakan dengan method operator <<(). Jangan kaget, bentuk method yang aneh ini bagian dari pemrograman Qt juga. Method ini dipasangkan pada objek QTextStream yang bernama out. Sedangkan objek out sendiri pada argumennya ketika (inisialisasi) diisi dengan objek berkasku. tanda “&” (ampersand) sebelum nama objek berkasku sebagai argumen artinya pass by reference.

3. Input Validation

Ada 2 jenis input validation di sini yaitu password dan nomor port. Maksudnya, program harus bisa mengenali bahwa kotak isian tertentu harus disembunyikan teksnya karena berisi password dan kotak isian yang lain hanya bisa diisi oleh angka (selain angka tidak bisa masuk). Ini mudah dilakukan dengan method setRange() dan setValidator() kepada objek teksPort untuk validasi angka. Sedangkan untuk validasi password, kita menggunakan method setEchoMode() pada objek QLineEdit teksPass. Perhatikan dua potongan kode berikut.

    validator->setRange(0, 9999);
    teksPort->setValidator(validator);

Argumen range di atas maksudnya jangkauan angka yang bisa dimasukkan. Dalam hal ini, saya atur mulai angka 0 sampai 9999. Cukup luaslah untuk sekadar port. Sedangkan validator yang digunakan adalah objek bernama validator dari kelas QIntValidator. Tentunya objek ini harus dibuat dulu sebelum digunakannya setValidator().

    teksPass->setEchoMode(QLineEdit::Password);

Dengan mengatur mode dalam argumen setEchoMode, kita bisa menyembunyikan password dengan bintang-bintang.

Kesimpulan

  1. Program ini menciptakan berkas apt.conf pada direktori tempat dia di-build. Untuk membuatnya mengonfigurasi sistem sungguhan, maka alamat pembuatan berkas harus ditetapkan pada /etc/apt/.
  2. Program ini bisa dikembangkan dengan penambahan history dan profil akun. Mungkin hal ini bisa dilakukan dengan QCompleter.
  3. Program ini juga bisa dikembangkan dengan menambahkan fitur system tray dengan kelas QSystemTrayIcon.
  4. QTextStream bisa digunakan untuk membuat suatu stream teks (yakni teks yang belum menjadi berkas) dan bisa menjadi berkas sungguhan jika dipakai bersama QFile.
  5. Pembuatan kotak isian password dengan bintang-bintang untuk menyembunyikan karakter bisa dilakukan dengan method setEchoMode() dengan argumen QLineEdit::Password, pada kelas QLineEdit.
  6. Pembuatan berkas teks dengan QFile tidak akan berhasil kecuali dengan method open(), dengan argumen selain QFile::ReadOnly.
  7. Appending dengan QTextStream bisa dilakukan dengan method aneh bernama operator <<() dengan string untuk argumennya.

Unduh Kode Sumber

Program kali ini bernama Proxifia. Sebenarnya nama ini menyalahi standar penamaan saya, yang seharusnya murni menggunakan Bahasa Indonesia. Hanya saja, saya belum menemukan kata yang bermakna perubahan selain Metamorfosis yang sudah saya pakai. Silakan unduh dan buka di Qt Creator Anda.

Penutup

Program ini masih memiliki kesempatan untuk dikembangkan lagi. Misalnya dengan ditambahi kemampuan menyimpan akun-akun, mengubah pengaturan selain apt.conf, dan lain-lain. Anda bisa mengubah sendiri hal itu dengan memodifikasi sedikit kode sumbernya. Tentu Anda juga bisa menggabungkannya dengan teknik pemaketan Debian yang telah Anda pelajari.

Referensi

The C++ Language Tutorial, revisi Juni 2007, Juan Soulie,  halaman 47-48.


Filed under: Linux

Pemrograman Qt 19 – Membaca dan Menuliskan Standard Output ke QTextEdit Secara Realtime

$
0
0

Bismillahirrahmanirrahim.

qt-creator-logoSetelah tulisan pemrograman Qt 10 kemarin, saya berpikir untuk memperbaiki program ProyekRC dengan menambah fungsi penayangan standard output untuk apt-get. Standard output yang ditayangkan harus real time (bergerak terus sampai proses selesai). Di dalam suatu program repo changer, tentu fitur ini wajib ada. Jika tidak, maka pengguna harus membuka 1 program lagi (Terminal) untuk sekadar melakukan apt-get update. Setelah melakukan riset kecil-kecilan, pada tulisan ini saya berhasil melakukannya secara terpisah. Anda dapat mengunduh kode sumber pada akhir tulisan. Semoga tulisan ini bermanfaat.

Spesifikasi Sistem

  1. Ubuntu 12.04
  2. Qt Creator 2.4.1
  3. Qt 4.8

Daftar Kelas

  1. QProcess
  2. QStringList
  3. QTextCursor
  4. QTextEdit
  5. QWidget
  6. QVBoxLayout
  7. QPushButton

Daftar Method

  1. setRange() <- milik QIntValidator
  2. setValidator() <- milik QLineEdit
  3. setEchoMode() <- milik QLineEdit
  4. setFileName() <- milik QFile
  5. open() <- milik QFile
  6. operator <<() <- milik QTextStream

Arah Tulisan Ini

Program harus mampu membaca standard output dari apt-get update ketika bekerja sampai selesai. Standard ouput tersebut harus ditayangkan di QTextEdit. Diharapkan hasilnya nanti seperti Synaptic ketika bekerja. Lihat gambar berikut.

ngite-kesembilanbelas

Mengapa ini harus dibuat? Karena program RepoChanger pada tulisan ke-10 harus memiliki fitur penting ini.

Kode

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QPushButton     *tombolOke;
    QWidget         *widgetUtama;
    QVBoxLayout     *layoutUtama;
    QTextEdit       *keluaranKonsol;

public slots:
    void redirect_output();
    void hapus_isi_teks();
    void tunjukkan_bahwa_kamu_mati();

private slots:
    void ambillah_datanya();

private:
    Ui::MainWindow *ui;
    QProcess *prosesku;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    this->setGeometry(333, 333, 355, 355);
    QPushButton     *tombolOke      =       new     QPushButton;
    QVBoxLayout     *layoutUtama    =       new     QVBoxLayout;
    QWidget         *widgetUtama    =       new     QWidget;
                     keluaranKonsol =       new     QTextEdit;
                     prosesku       =       new     QProcess;

    tombolOke->setText("NOTHING TO SAY");
//    keluaranKonsol->setTextBackgroundColor("RED");

    layoutUtama->addWidget(tombolOke);
    layoutUtama->addWidget(keluaranKonsol);

    prosesku->setProcessChannelMode(QProcess::MergedChannels);

    //menghitamkan background dari QTextEdit dengan CSS
    keluaranKonsol->setStyleSheet("QTextEdit { background-color : black; color : white; }");

    //membuat scrollbar selalu otomatis mengikuti kursor terbawah
    //dipasang pada Wednesday, March 26, 2014 05:39 PM dari dokumentasi Qt
    keluaranKonsol->ensureCursorVisible();

    widgetUtama->setLayout(layoutUtama);
    this->setCentralWidget(widgetUtama);

    connect(tombolOke, SIGNAL(clicked()), this, SLOT(redirect_output()));
    //teknik S&S baru ini didapatkan pada Tuesday, March 25, 2014 dari http://minhazulhaque.blogspot.com/2012/07/read-shell-command-output-using.html
    //juga bisa didapatkan dari http://www.qtcentre.org/threads/47538-QProcess-read-from-stdout-lively
    connect(prosesku, SIGNAL(readyRead()), this, SLOT(ambillah_datanya()));
    //teknik pembacaan kematian proses ini ditemukan pada Wednesday, March 26, 2014 05:18 PM dari perkiraan dan dokumentasi Qt
    connect(prosesku, SIGNAL(finished(int)), this, SLOT(tunjukkan_bahwa_kamu_mati()));
//    connect(prosesku, SIGNAL(readyReadStandardError()), this, SLOT(ambillah_datanya()));

}

//satu
MainWindow::~MainWindow()
{
    delete ui;
}

//dua
void MainWindow::hapus_isi_teks()
{

}

//tiga
void MainWindow::redirect_output()
{
    prosesku->start("sh", QStringList() << "-c" << "apt-get update"); } //empat void MainWindow::ambillah_datanya() {     //teknik appending ini ditemukan pada Tuesday, March 25, 2014 05:07 PM dari http://www.jcjc-dev.com/2013/03/qt-48-appending-text-to-qtextedit.html     this->keluaranKonsol->moveCursor(QTextCursor::End);
    this->keluaranKonsol->insertPlainText(prosesku->readAll());
    this->keluaranKonsol->moveCursor(QTextCursor::End);
//    this->keluaranKonsol->setPlainText(prosesku->readAllStandardError());
}

void MainWindow::tunjukkan_bahwa_kamu_mati()
{
    this->keluaranKonsol->insertPlainText("\n\n===PROSES SELESAI===\n\n");
}

Qt Creator dan Kode

ngite-kesembilanbelas1

Hasil

ngite-kesembilanbelas2

Analisis

Saya berusaha memberikan analisis dimulai dari yang paling penting.

1. Penayangan Standard Output pada QTextEdit

Inilah inti program. Ini dilakukan hanya dengan objek QTextEdit dengan beberapa method. Berikut ini kodenya.

 //empat
 void MainWindow::ambillah_datanya()
 {
 //teknik appending ini ditemukan pada Tuesday, March 25, 2014 05:07 PM dari http://www.jcjc-dev.com/2013/03/qt-48-appending-text-to-qtextedit.html
 this->keluaranKonsol->moveCursor(QTextCursor::End);
 this->keluaranKonsol->insertPlainText(prosesku->readAll());
 this->keluaranKonsol->moveCursor(QTextCursor::End);
 }
 

Pada intinya, program ini hanya melakukan 3 aksi. Pertama, dia meletakkan kursor pada akhir baris. Kedua, dia membaca standard output (dan standard error juga). Ketiga, dia meletakkan kembali kursor pada akhir baris. Inilah yang membuat program dapat membaca standard output secara realtime. Namun fungsi ambillah_datanya() ini tidak akan mampu membaca jika tidak ada SIGNAL dan SLOT berikut.

connect(prosesku, SIGNAL(readyRead()), this, SLOT(ambillah_datanya()));

SIGNAL readyRead() dari objek prosesku (QProcess) inilah yang membuat SLOT ambillah_datanya() senantiasa dijalankan untuk membaca standard output. Tanpa ini, program ini tidak realtime.

2. Eksekusi Perintah apt-get update dari Program

//tiga
void MainWindow::redirect_output()
{
    prosesku->start("sh", QStringList() << "-c" << "apt-get update");
//    prosesku->start("sh", QStringList() << "-c" << "tailf /var/log/syslog");
} 

Seperti yang kita lakukan pada pemrograman Qt 9, kita memanfaatkan QProcess untuk menjalankan perintah shell di sini. Perhatikan standar penulisan perintah pada baris yang aktif dan yang dijadikan komentar di atas.

3. Pemeriksaan Status Berakhirnya Proses apt-get update

 void MainWindow::tunjukkan_bahwa_kamu_mati()
{
this->keluaranKonsol->insertPlainText("\n\n===PROSES SELESAI===\n\n");
}

Ide dasarnya adalah perilaku Synaptic setiap proses instalasi selesai. Dia selalu bisa menayangkan pesan bahwa proses instalasi sudah selesai dan Anda bisa menutup jendelanya. Bagaimana Synaptic tahu bahwa proses bekerja apt sudah berakhir? Qt bisa melakukannya dengan SIGNAL dan SLOT, dengan SIGNAL berisi argumen finished(int) untuk QProcess yang menjalankan apt-get. Artinya, jika QProcess mengeluarkan sinyal finished, maka segera panggil SLOT tunjukkan_bahwa_kamu_mati() di atas. Baris kode di atas akan dikerjakan setelah adanya baris SIGNAL dan SLOT berikut.

connect(prosesku, SIGNAL(finished(int)), this, SLOT(tunjukkan_bahwa_kamu_mati()));

4. Membuat Standard Output dan Standard Error Dikeluarkan Bersamaan

    prosesku->setProcessChannelMode(QProcess::MergedChannels);

Seperti yang Anda ketahui, apt tidak hanya mengeluarkan pesan output biasa. Ia juga mengeluarkan pesan error jika terjadi error. Pesan error itu dikeluarkan pada kanal yang berlainan dengan output biasa. Nama kanalnya standard output. Sedangkan nantinya aplikasi ini akan dipakai oleh pengguna pemula, sehingga pesan error sangat dibutuhkan. Oleh karena itu, pesan error harus juga bisa ditayangkan sebagaimana pesan output normal. Ini dilakukan dengan menggabungkan kanal standard output dan standard error jadi satu. Method-nya adalah setProcessChannelMode() dengan argumen QProcess::MergedChannels. Ini membuat program menayangkan standard output jika memang dalam keadaan normal dan menayangkan standard error jika memang ada error.

5. Lain-Lain

5.1 Scrollbar Selalu Menggulung Ke Bawah Mengikuti Kursor

keluaranKonsol->ensureCursorVisible();

Mungkin ini remeh. Tetapi ini penting untuk memudahkan pengguna. Method ensureCursorVisible() memastikan bahwa scrollbar akan selalu menggulung ke bawah mengikuti arah kursor bergerak. Seperti halnya Synaptic ketika instalasi.

5.2 Pembuatan GUI

Jika Anda belum memahami pemrograman GUI secara hard coding di Qt, Anda bisa merujuk ke tulisan sebelumnya. Anda bisa mulai dari memahami pembuatan GUI-nya di pemrograman Qt 1 kemudian memahami penulisan header di pemrograman Qt 5.

Kesimpulan

  1. Pembacaan standard output (dan standard error) secara realtime bisa dilakukan dengan  menghubungkan SIGNAL readyRead() dan SLOT method readAll() pada objek QProcess.
  2. Untuk membuat setiap baris standard output dicetak sebagai satu baris pula di QTextEdit, harus digunakan method moveCursor() dengan argumen QTextCursor::End pada QTextEdit.
  3. Untuk membuat scrollbar bergerak terus ke bawah mengikuti kursor secara realtime, harus digunakan method ensureCursorVisible() pada QTextEdit.
  4. Untuk menggabungkan kanal standard output dan standard error, harus digunakan method setProcessChannelMode() dengan argumen QProcess::MergedChannel pada QProcess.
  5. Untuk memeriksa masih bekerja atau sudah berhentinya suatu proses, harus digunakan SIGNAL finished(int) pada QProcess dengan SLOT-nya fungsi untuk menulis pesan berakhirnya proses.

Unduh Kode Sumber

Program kali ini bernama Konsolidasi. Silakan unduh dan buka di Qt Creator Anda.

Referensi

  1. http://minhazulhaque.blogspot.com/2012/07/read-shell-command-output-using.html
  2. http://www.qtcentre.org/threads/47538-QProcess-read-from-stdout-lively
  3. http://www.jcjc-dev.com/2013/03/qt-48-appending-text-to-qtextedit.html

Filed under: Linux

Mengatasi Aplikasi GTK yang Terlihat Jelek di KDE

$
0
0

Bismillahirrahmanirrahim.

Logo KDEAplikasi GTK (semacam Geany, Libreoffice, Firefox, Filezilla, Synaptic, dll.) akan terlihat jelek di KDE jika tidak dikonfigurasi. Bagaimana jelek yang dimaksud? Bagaimana cara mengatasinya? Apa kesulitannya? Saya melakukan oprek semalam dan inilah catatannya. Hasil oprek ini mengubah tampilan pada semua aplikasi GTK saya termasuk GIMP, NTM, GNOME File Chooser, dan Alarm Clock. Semua tampilan menjadi nyaman dilihat seperti aplikasi KDE umumnya. Semoga tulisan ini bermanfaat.

Selayang Pandang

Tulisan ini saya bagi menjadi 3 jenis konfigurasi yakni konfigurasi untuk aplikasi GTK user biasa, untuk aplikasi GTK root, dan untuk LIbreoffice. Mengapa dibedakan? Karena mereka memiliki konfigurasi yang berbeda walaupun sebenarnya mudah sekali. Aplikasi GTK root (yang membutuhkan otentikasi root) misalnya Synaptic.

Paket-Paket yang Dibutuhkan

Inti dari kegiatan ngoprek ini adalah menginstal paket-paket yang diperlukan saja. Jika sudah diinstal, maka sebagian besarnya otomatis bekerja. Hanya GTK root saja aplikasi yang butuh tambahan konfigurasi manual. Itu pun mudah sekali.

  1. gtk-theme-switch (untuk menerapkan perubahan tema tampilan secara langsung)
  2. gtk2-engines-oxygen (paket yang berisi oxygen-gtk)
  3. kde-config-gtk (“plugin” pengaturan GTK+ untuk KDE System Settings)
  4. libreoffice-kde (untuk diuninstal)
  5. libreoffice-gtk (untuk membuat Libreoffice tampak benar-benar natif di KDE)

Dari keseluruhan tulisan, yang menjadi tujuan oprek sebetulnya hanya ganti tema dalam program gtk-theme-switch.

Spesifikasi Sistem

Kegiatan ngoprek ini saya lakukan pada sistem berikut.

  • Ubuntu 12.04
  • KDE 4.10.3
  • Tidak perlu restart atau logout sistem

Saya perlu menyebut spesifikasi karena nama-nama paket di atas bisa berbeda pada distro yang tak sama.

Kondisi Jelek

Jika tidak dikonfigurasi terlebih dahulu, maka setiap aplikasi GTK akan tampak jelek di KDE. Berikut ini contoh tampilan Geany dan Libreoffice yang jelek.

geany-gtk-jelek

libreoffice-gtk-jelek

Kondisi Bagus

Kondisi ini adalah tujuan ngoprek kali ini. Yang akan kita lakukan adalah membuat tampilan aplikasi GTK terlihat natif di KDE. Berikut ini adalah skrinsot dari Geany, Firefox, Filezilla, Libreoffice, Synaptic, Inkscape, Banshee, dan GNOME File Chooser setelah dioprek.

kecepatan-kecil76

Geany

kecepatan-kecil75

Firefox

kecepatan-kecil74

Filezilla

kecepatan-kecil73

Libreoffice

kecepatan-kecil75

Firefox

kecepatan-kecil72

Synaptic

inkscape-gtk-kde

Inkscape

banshee-gtk-kde

Banshee

gnome-file-chooser-kde

GNOME File Chooser

1. Konfigurasi GTK User Biasa

 
 sudo apt-get install gtk-theme-switch gtk2-engines-oxygen kde-config-gtk

Kemudian:

Panggil aplikasi gtk-theme-switch2 apa pun caranya (perhatikan angka 2 pada namanya). Ubah temanya menjadi oxygen-gtk. Ini akan otomatis membuat seluruh aplikasi GTK diatur tampilannya menjadi Oxygen melalui oxygen-gtk ini.

gtk-kde-switcher

Kemudian:

Buka GTK+ Appearance pada KDE System Settings. Atur supaya isian Widget style berisi oxygen-gtk. Pengaturan ini agaknya tidak berpengaruh terhadap sistem (saya tidak tahu) tetapi sebaiknya dilakukan. Lihat gambar berikut.

gtk-kde-switcher1

2. Konfigurasi GTK Root

Salin saja .gtkrc-2.0 di Home ke /root/. Ini akan membuat pengguna root memiliki konfigurasi GTK sebagaimana yang user biasa miliki. Hasilnya, Synaptic (dan aplikasi root lain) akan memiliki tampilan natif KDE juga.

3. Konfigurasi GTK Libreoffice

sudo apt-get remove libreoffice-kde
sudo apt-get install libreoffice-gtk

Di sistem saya, libreoffice-gtk sudah ada sebelumnya. Ketika libreofice-gtk diinstal, maka tampilan Libreoffice memang berubah tetapi tampilan menu-menu menjadi tidak memiliki garis tepi. Untuk membuatnya sempurna, maka libreoffice-kde harus dibuang.

Referensi

  1. http://www.muktware.com/2013/03/how-to-make-libreoffice-look-good-in-kde/4131
  2. http://www.pclinuxos.com/forum/index.php?topic=103447.0
  3. https://bbs.archlinux.org/viewtopic.php?id=115181
  4. http://superuser.com/questions/689294/how-to-make-libreoffice-integrate-better-with-kde-graphic-environment
  5. http://forums.opensuse.org/showthread.php/478619-LibreOffice-looks-ugly-in-SUSE-KDE
  6. http://www.netrunner-os.com/gtk2-gtk3-configuration-under-kde/
  7. http://www.makeuseof.com/tag/gnome-applications-kde-applications-oxygengtk-linux/
  8. http://askubuntu.com/questions/87037/gtk-in-kubuntu-apps-look-bad
  9. http://kavoor.wordpress.com/2009/01/26/howto-make-gtk-applications-look-sleek-on-kde4-qtcurve/
  10. http://forums.debian.net/viewtopic.php?t=66333
  11. http://forum.kde.org/viewtopic.php?f=15&t=102389
  12. http://www.maketecheasier.com/make-gtk3-apps-look-presentable-in-kde4
  13. http://askubuntu.com/questions/50929/how-do-i-select-qtcurve-theme-for-gtk-apps-in-kde

Filed under: Linux

Pentingnya Sebuah Tutorial Bagi Seorang Pemula

$
0
0

Bismillahirrahmanirrahim. 

Tulisan ini tersedia dalam PDF.

Tutorial itu adalah catatan sederhana mengenai bagaimana Anda bisa menyelesaikan 1 masalah di Linux.

Isi Tulisan Ini

  1. Pembukaan
  2. Permasalahan
  3. Penjabaran Permasalahan
  4. Solusi
  5. Penjabaran Solusi
  6. Contoh Implementasi
  7. Hambatan-Hambatan
  8. Kontra Hambatan
  9. Contoh-Contoh Tutorial
  10. Penutup

1. Pembukaan

Kemarin pagi (9 Mei 2014) saya mendapatkan ide baru dari salah satu komentar di situs Fedora Indonesia1 yang berbunyi demikian: 

Lutfi Putra3/22/2014 7:05 PM

terima kasih mas, membantu sekali…
maklum baru install fedora…

Betapa pentingnya sebuah tutorial. Kalau dihitung-hitung, tutorial mengenai apa yang harus dilakukan setelah instal Fedora adalah hal yang sangat tidak penting. Mungkin Fedoran yang berpengalaman tidak akan pernah membutuhkannya. Pendek kata, sudah tahu. Namun bagi mereka yang baru hari ini instal Fedora, atau baru hari ini mengenal Linux, sebuah tutorial semacam itu berubah menjadi sangat penting. Pendek kata, tutorial itu penting bagi pemula. Setelah membaca laman itu, saya langsung merasa ingin menulis sebuah esai pendek mengenai hal ini.

2. Permasalahan

  1. Pemula itu banyak.
  2. Setiap pemula tidak mengetahui apa yang harus dilakukan dengan sistemnya.
  3. Setiap pemula memiliki keinginan sendiri-sendiri terhadap sistemnya.
  4. Setiap pemula memiliki masalah dengan sistemnya.
  5. Linux semestinya diperkenalkan kepada masyarakat untuk mengurangi pembajakan, menghemat biaya secara nasional, dan meningkatkan inovasi di bidang ilmu komputer.

3. Penjabaran Permasalahan

  1. Karena pemula itu banyak, maka banyak masalah yang sama terjadi.
  2. Karena banyak masalah yang sama terjadi, maka banyak pertanyaan yang sama terjadi.
  3. Walau banyak masalah terjadi, banyak masalah sudah terselesaikan.
  4. Sementara itu, masalah-masalah yang sudah terselesaikan tidak tercatat.
  5. Dan masalah-masalah yang sudah tercatat masih banyak yang tidak sampai kepada yang membutuhkannya. 

4. Solusi 

  1. Kita sebaiknya menulis tutorial mengenai apa yang kita telah selesaikan.
  2. Walaupun tutorial itu sangat sederhana, hanya berisi bagaimana langkah kita sendiri hingga 1 masalah itu selesai.
  3. Walau tutorial itu hanya berupa ulasan suatu software, yang isinya cuma memberitahukan fungsi utamanya.
  4. Kita bisa memberikan pranala (link) dari suatu solusi yang telah kita ketahui kepada yang membutuhkannya agar mereka dapat menyelesaikan masalah dengan cepat.
  5. Kita juga bisa menulis suatu tutorial yang komprehensif mengenai masalah dengan niat akan memberikan pranalanya kepada setiap penanya hal yang sama.
  6. Kita juga bisa sekadar memberikan kata kunci Google terhadap permasalahan yang ditanyakan walau kita tidak membuat tutorial atau tidak memiliki pranalanya.

5. Penjabaran Solusi

Makin banyak pengguna yang mendokumentasikan masalah-masalahnya, maka makin kecil jumlah masalah yang tersisa. Dengan menuliskan bagaimana Anda menyelesaikan suatu masalah, maka Anda membantu pengguna lain dengan masalah yang sama. Untuk membersihkan pemahaman, bayangkanlah Anda memiliki beras dan kebutuhan pokok yang melimpah di tengah ribuan orang yang terkena musibah. Tentu dengan sangat sukarela Anda akan membagi-bagikannya kepada orang-orang itu. Situasi kita mirip dengan perumpamaan ini.

6. Contoh Implementasi

Ada tulisan-tulisan saya yang sengaja ditulis untuk diberikan. Saya sendiri melakukan solusi nomor 5 pada beberapa tulisan saya semisal:

  1. Panduan Googling: http://malsasa.wordpress.com/2013/05/26/googling-pun-butuh-kemampuan/; saya akan berikan kepada penanya yang saya nilai belum bisa googling (menanyakan pertanyaan berulang, yang menanyakan pertanyaan remeh, yang kesulitan menyelesaikan suatu masalah sepele, atau yang sudah berulang kali mengalami masalah berbeda tetapi masih juga belum bisa memecahkan masalah sendiri).
  2. Panduan Pengaturan Repo Ubuntu: http://malsasa.wordpress.com/2013/10/15/daftar-lengkap-repositori-lokal-ubuntu-12-04-plus-cara-mengaturnya/; saya akan berikan kepada penanya yang mengalami error pada sources.list, atau yang bertanya soal repo Ubuntu, atau yang me
  3. Panduan apt-get: http://malsasa.wordpress.com/2014/01/27/panduan-ringkas-apt-get/; saya akan berikan kepada penanya yang ingin solusi offline untuk instalasi aplikasi, atau penanya yang bermasalah dengan apt, atau penanya yang sengaja tanya bagaimana cara menggunakan apt.
  4. Panduan Etika dan Teknik Menjadi Pemula: http://malsasa.wordpress.com/2014/01/05/how-to-become-a-newbie/; saya akan berikan kepada penanya yang “membuat masalah” di dalam forum.
  5. Panduan Menjadi Penjawab: http://malsasa.wordpress.com/2014/02/22/indonesia-masih-dalam-masa-transisi/; saya akan berikan pada pertanyaan yang mengarah kepada flame antara senior dan junior karena masalah pertanyaan berulang.
  6. Panduan apt-web: http://malsasa.wordpress.com/2013/10/29/tutorial-menggunakan-apt-web/; saya akan berikan kepada penanya masalah instalasi Wine (atau aplikasi lain) secara offline atau yang sengaja bertanya mengenai apt-web.

Anda bisa melakukan hal yang sama untuk bidang-bidang lain yang dirasa belum ada tutorialnya dalam Bahasa Indonesia.

7. Hambatan-Hambatan

  1. Hambatan pertama dan terutama adalah persepsi. Setiap orang menyangka menulis tutorial itu harus megah semegah skripsi. Harus dikerjakan selama berhari-hari. Hanya bisa dikerjakan oleh pengguna ahli. Intinya, persepsi yang mengakar di benak semua orang adalah menulis tutorial itu sulit.
  2. Hambatan kedua adalah adanya kesadaran yang minim mengenai pentingnya tutorial untuk orang lain.
  3. Hambatan ketiga adalah minimnya keberadaan pihak yang mengajak untuk menulis tutorial.
  4. Banyak orang menyangka sudah cukup banyak tutorial di Google.

8. Kontra Hambatan

  1. Tutorial itu tidak harus megah. Catatan sederhana Anda untuk menyelesaikan 1 masalah sudah disebut tutorial. Cukup pikirkan saja nanti ada yang terbantu dengan membaca tutorial Anda.
  2. Saya sendiri adalah pengguna Ubuntu. Saya membayangkan saat ini juga menginstal CentOS. Saya membayangkan, tentu saya akan kebingungan mengenai apa yang harus saya lakukan pertama kali setelah menginstal CentOS. Saya tidak pernah menggunakan CentOS sebelumnya (inilah perasaan mereka yang baru kenal Linux atau yang baru menginstal distro). Jika saya bisa menemukan tutorial dasar CentOS setelah menginstal (sebagaimana contoh di atas) maka itu akan sangat membantu saya. Terlebih lagi, hal itu meringkas waktu saya dan bisa jadi dengan itu saya bisa menulis tutorial yang membahas CentOS dari sisi lain. Efeknya beruntun, sehingga nantinya orang lain bisa mendapatkan menfaatnya juga. Hal ini berlaku tidak hanya pada Centos, tetapi juga seluruh aspek FOSS2 yang lain.
  3. Tulis tutorial sebisa Anda lalu ajak orang lain menulis dengan lebih baik.
  4. Ada benarnya tetapi tidak selalu. Ada tutorial-tutorial tertentu yang justru lebih baik kalau ada dalam Bahasa Indonesia. Misalnya tutorial mengganti pengaturan repo untuk distro tertentu, panduan ringkas package manager distro tertentu (misalnya apt), panduan instalasi dual boot, panduan manajemen partisi, pengantar pemrograman, dan hal-hal krusial lainnya. Ini dikarenakan ada 2 klasifikasi dalam jenis tutorial itu sendiri, yakni tutorial pengantar (semacam yang saya sebut tadi) dan tutorial lanjutan setelah pengantar. Untuk masyarakat kita, prioritas tertinggi berada pada tutorial pengantar. Sementara masih sangat banyak tutorial pengantar yang belum ada dalam Bahasa Indonesia sedangkan minat masyarakat awam terhadap Linux makin bertambah.

9. Contoh-Contoh Tutorial 

Untuk memperkuat esai ini, saya telah mengumpulkan beberapa tutorial karya warga KPLI yang saya nilai bagus dan sesuai maksud esai ini. Tutorial yang saya sebutkan di sini adalah catatan pribadi mengenai bagaimana si penulisnya menyelesaikan 1 masalah di Linux.

  1. Apa Itu Quassel dan Bagaimana Menggunakannya, Bagus Aji Santoso, http://www.poss-upi.org/2014/05/chit-chat-di-irc-bersama-quassel/. Sisi positif artikel ini ada pada kesederhanaannya yang hanya sekadar pendapat pribadi mengenai Quassel. Ini terlihat pada kalimat “…namun pada artikel ini saya hanya akan menunjukan dua kelebihan Quassel yang saya ketahui.” Perhatikan bahwa tulisan yang dimulai dari pendapat dan pengalaman pribadi seperti ini bisa berkembang jadi satu tutorial utuh yang sangat megah.
  2. Panduan Instalasi Ubuntu, Nur Hasan, http://nurhasan257.wordpress.com/2014/03/29/panduan-instalasi-linux-ubuntu/. Sisi positif tulisan ini ada pada kesederhanaannya sebagai sebuah catatan pribadi. Ini terlihat dari kalimat “Menurut pendapat saya, jawabanya adalah…”. Penulisnya sengaja menambahkan banyak skrinsot bahkan memberi penekanan pada bagian-bagian Windows yang perlu diklik untuk membuat partisi. Tutorial semacam itu langka karena membutuhkan keseriusan untuk membuat skrinsot dan menggambar penekanan. Tulisan ini diantarkan dengan bahasa yang sangat santai dan pemula betul sehingga sesuai dibaca oleh khalayak. Nilai plus patut diberikan untuk skrinsot yang banyak dan berurutan. Nilai plus berikutnya patut diberikan untuk peringatan penting yang ditekankan pula oleh penulisnya “Sebelum kita menginstallnya, hal yang harus dilakukan adalah menyiapkan hardisk kosong”. Walaupun suatu tulisan asalnya pendapat pribadi, tetapi ia bisa berkembang jadi bagus seperti tulisan ini.
  3. Memperkenalkan Ubuntu dan Unity, Ridwan Fajar, http://ridwanbejo.wordpress.com/2014/05/09/mengenal-ubuntu-14-04-bagian-ke-1/. Tulisan ini langka karena tidak banyak orang berpikir ke arah ini. Sisi positif tulisan ini adalah kesederhanaannya sebagai pendapat pribadi. Ini jelas termaktub dalam pernyataan penulisnya sendiri “Dari hal yang paling sederhana sekali, saya ingin menunjukkan sebuah fitur penting ketika menggunakan Ubuntu 14.04 ini, yaitu Dash Menu…”. Tulisan ini menjelaskan bagaimana cara memakai Unity Desktop di Ubuntu. Secara langsung, tulisan ini juga menjelaskan bagaimana menggunakan Ubuntu. Tulisan ini mengumpulkan dua kebaikan dalam 1 wadah, yakni menjelaskan A dan menjelaskan B sekaligus.
  4. Ulasan Kingsoft Office, Himawan Mahardianto, http://www.newbienote.com/2014/03/kingsoft-office-alternatif-aplikasi.html. Sisi positif tulisan ini ada pada sesuatu yang dibahas. Tulisan ini membahas Kingsoft Office, aplikasi office Linux yang sangat mirip Microsoft Office 2007/2011. Tampaknya sang penulis sadar betul bahwa yang diperlukan pengguna itu justru aplikasi office. Ini terlihat dari kalimat pertamanya “Ketika pengguna awam beralih dari sistem operasi Microsoft Windows ke Ubuntu, biasanya yang dicari adalah aplikasi padanan yang biasanya ia gunakan di Windows”. Kalaupun mungkin sang penulis tidak menyadarinya, tetapi dia sebetulnya memerhatikan sisi psikologis pengguna dengan kata yang saya garisbawahi. Tulisan ini pun berisi pendapat pribadi yang tersebar di dalamnya. Nilai plus patut diberikan pada skrinsot-skrinsot beruntun yang diberikan. Nilai plus berikutnya ada pada bentuk kerendahan hati pada kalimat “…anda tinggal klik Unity Bar yang ada di pojok kiri atas, kemudian ketik…”. Tidaklah banyak orang sabar mengajari orang lain sampai tingkat kedetailan demikian.
  5. Cara Instalasi GNOME Classic, Faisal Gifars, http://garismasuk.blogspot.com/2014/05/cara-install-classic-desktop-di-ubuntu.html. Sisi positif tulisan ini ada pada kesederhanaannya sebagai catatan biasa. Tulisan ini adalah yang paling singkat dan sederhana dari sekian contoh yang saya bawakan. Walaupun sederhana, tetapi tulisan ini sudah lengkap karena skrinsot terakhirnya. Banyak pengguna baru bingung cara masuk desktop kedua hanya gara-gara ketiadaan gambar penjelas seperti gambar terakhir di sini.

10. Penutup 

Haruskah menulis tutorial untuk seluruh permasalahan? Tidak. Lakukan semampu Anda saja. Bantu orang lain semampu Anda. Tidak perlu membebani diri. Semoga tulisan ini bermanfaat.

 

 


 

2 Free/Open Source Software.


Filed under: Linux

Aplikasi Editor untuk LaTeX di Linux

$
0
0

Bismillahirrahmanirrahim.

texmaker1Ketertarikan saya kepada LaTeX bermula sejak pertama mengenal Linux yakni sejak melihat dokumen-dokumen PDF yang dihasilkan dengan LaTeX. Kesan kala itu hanya rapi, rapi, dan rapi. Ketertarikan kedua saya dimulai ketika melihat Texmaker pada komputer Windows. Texmaker sungguh editor yang sangat keren. Kemudian saya melihat salah satu laman Stackexchange yang mendiskusikan LaTeX Editor, dan gara-gara itu untuk pertama kalinya saya berani menggunakan LaTeX. Saat itu saya mencoba Gummi di Ubuntu. Beberapa bulan berselang, saya beralih ke Texmaker, impresi pertama saya. Lalu saat ini rencana B saya ketika pertama kali membaca laman Stackexchange tersebut akhirnya saya laksanakan. Apa itu rencana B? Itu adalah menerjemahkan laman tersebut ke dalam Bahasa Indonesia sebagaimana yang pernah saya lakukan dengan tutorial Terminal dari komunitas Mint. Inilah terjemahan dari big list http://tex.stackexchange.com/questions/339/latex-editors-ides. Seluruh skrinsot di sini diambil dari laman tersebut kecuali beberapa yang saya sebutkan lain. Semoga tulisan ini bermanfaat.

1. Emacs dengan AUCTex

  • OS: Windows, Mac (termasuk fork Aquamacs), Unix
  • Lisensi: Free software (GPL)
  • Bahasa: de, dk, fr, is, it, jp, nl, pl, se, sk didukung oleh AUCTeX
  • Unicode: Ya, sejak Emacs 23
  • RTL/bidirectional support: sejak Emacs 24, melalui bidi-mode
  • % !TeX directives: Tidak, tetapi Emacs memiliki beberapa realisasi untuk file local variables
  • Syntax highlighting: Ya, bisa diatur lewat customize and Elisp
  • Code completion: Ya, via Emacs Predictive Completion, yang mendukung AUCTeX tanpa konfigurasi lebih lanjut
  • Code folding: Ya
  • Spell checking: Ya
  • SyncTeX: Ya
  • Built-in output viewer: Ya
  • Project management: org-modereftex-mode

Emacs adalah salah satu editor tertua, yang mendukung mode penyuntingan LaTeX, ConTeXt, dan Plain TeX, AUCTeX dan paket untuk mengelola kode-kode sumber, RefTeX.

emacs (Di skrinsot ini, mode visual-line-mode diaktifkan. Di dalam mode ini, baris-baris yang lebih panjang dari jendela akan dipotong per kata. Line break tidak ditambahkan kepada berkas sumber.)

RefTeX membuat seluruh referensi Anda mudah ditemukan layaknya C-c <key>, baik untuk  BibTeX maupun biblatex, dan ia memiliki pintasan (shortcut key) pula untuk bernavigasi di antara bagian-bagian dokumen dengan menggunakan C-c =: secara default.

emacs2

(Tema warna dapat dikonfigurasi sebebas mungkin)

AUCTeX mendukung multi-file parsing, sehingga dokumen-dokumen besar dengan perintah \input atau \include mudah dikompilasikan dengan C-c C-c pada berkas yang bersangkutan. Tidak perlu lagi kembali ke master file hanya untuk mengompilasi.

Fitur AUCTeX preview-latex adalah pratayang WYSIWYG untuk rumus-rumus.

Fitur-fitur terkemuka Emacs:

  • Menggunakan table-insert bersama dengan fungsi table-generate-source dan table-recognize-* untuk membuat tabel-tabel dengan mudah.
  • Banyak sekali shortcut key tersedia
  • Terdokumentasi dengan baik, baik Emacs itu sendiri melalui manual Emacs dan manual AUCTex Texinfo, maupun melalui banyak buku dalam beberapa bahasa.

2. Vim dengan LaTeX-suite

  • OS: Windows, Mac, Linux, BSD, dan lain-lain
  • Lisensi: Open Source Charityware
  • Bahasa: ?
  • Unicode: Ya
  • RTL/bidi support: sebagian
  • % !TEX directives: Tidak, tetapi memiliki modelines
  • Syntax Highlighting: Ya, bisa dikustomisasi
  • Code Completion: Ya (menggunakan Omni Completion, bisa diperluas dengan plugin SnipMate)
  • Code Folding: Ya
  • Spell Checking: Ya
  • SyncTeX: Ya, lihat pertanyaan ini
  • Built-in Output Viewer: Tidak
  • Project Management: ?

Jika Anda benar-benar kelas berat, Anda akan selalu menggunakan Vim. Ada banyak macro yang dibuat untuk Vim untuk membantu menyunting berkas LaTeX.

vim

Anda dapat melakukan word/command completion melalui <C-P> dan <C-N>, untuk memilih saran sebelumnya atau sesudahnya.

Ada versi Vim dengan menu-menu grafis, yang bernama gVim. Jika ia digunakan dengan Latex-suite, maka banyak perintah TeX ditampilkan di menubar untuk mempercepat penyuntingan.

Fitur-Fitur

Vim juga memiliki fitur code-foldingkarena paket vim-late menawarkan code-folding otomatis. Folding juga bisa dilakukan secara manual berdasarkan kunci (misalnya {{{ dan }}}) untuk membuka dan menutup fold otomatis. Contoh folds bisa dilihat pada gambar berikut:

vim2

Fitur Vim masih sangat banyak. Namun di dalam tulisan ini, yang bisa disebutkan adalah:

VIM

  • Regex
  • Perintah dan pintasan kibor yang powerful
  • Sangat bisa dikustomisasi
  • Smart Indenting

LaTeX-Suite

  • Panggil cepat kompiler dengan \ll; tayangkan hasil dengan \lv
  • Environments dapat diakses dengan tiga huruf dalam insert mode:
    • EEQ = environment persamaan
    • EFI = environment gambar (figure)
  • Place-holders (<+text+>) dapat dilompati dengan Ctrl-J tanpa meninggalkan insert mode
  • Inverse searching: klik ganda penampil PDF dan Anda lompat ke baris kode sumber tex yang bersesuaian

3. Texmaker — 

  • Platforms: Windows XP/Vista/7/8, OS X 10.5+, Linux
  • License: GPL, gratis
  • Languages: cs, de, el, en, es, fa, fr, gl, hu, it, nl, pl, pt, pt (bra), ru, se, sr, zh (cn), zh (tw)
  • Unicode: Ya
  • RTL/bidi: ?
  • % !TEX directives: Tidak
  • Syntax Highlighting: Ya, bisa dikustomisasi
  • Code Completion: Ya, bisa dikustomisasi
  • Code Folding: Ya
  • Spell Checking: Ya
  • SyncTeX: Ya
  • Built-in Output Viewer: Ya, mendukung PDF
  • Project Management: ?

texmaker

(skrinsot Texmaker di atas adalah milik penerjemah)

texmaker2

Code completion yang bisa dikustomisasi

texmaker3

Rectangular block selection

Catatan:

Editor TeXstudio muncul sebagai fork dari Texmaker dan asalnya dinamai TexMakerX.

4. TeXworks — 

  • OS: Windows XP/Vista/7/8, OS X, Linux
  • Lisensi: GPL
  • Bahasa: en, af, ar, ca, cs, de, fa, fo fr, it, ja, nl, ko, pl, pl, ru, sl, tr zh
  • Unicode: Ya
  • RTL/bidi: Ya
  • % !TEX directives: Ya
  • Syntax Highlighting: Ya, regex-based
  • Code Completion: Ya, bisa dikustomisasi berdasarkan daftar ‘known entry’
  • Code Folding: Tidak
  • Spell Checking: Ya, tetapi harus diinstal sendiri
  • SyncTeX: Ya
  • Built-in Output Viewer: Ya, PDF (Poppler-based)
  • Project Management: Tidak

Di Windows dan Linux, saya menggunakan TeXworks, yang menyediakan jendela editor kode dan pratayang. Klik pada pratayang dokumen akan langsung menandai kode LaTeX yang bersesuaian.

texworks

5. Kile — 

  • OS: Linux, Windows1 (XP, Vista, 7)
  • LIsensi: GNU GPL 2
  • Bahasa: bg, bs, ca, cs, da, de, el, en_GB, eo, es, et, fi, fr, ga, gl, hi, hne, hu, it, ja, kk, lt, mai, ms, nb, nds, nl, nn, pl, pt, pt_BR, ro, ru, sk, sv, tr, ug, uk, zh_CN, zh_TW
  • Unicode: Ya
  • RTL/bidi: Ya
  • % !TEX directives: Tidak2
  • Syntax Highlighting: Ya, bisa dikustomisasi
  • Code Completion: Ya, bisa dikustomisasi
  • Code Folding: Ya
  • Spell Checking: Ya
  • SyncTeX: Ya (namun flag -synctex=1 harus ditambahkan secara manual pada build engine)
  • Built-in Output Viewer: Terbatas3 (pratayang PNG dari sebagian kode – misalnya environment yang dipilih – dikonversikan dari DVI/PS/PDF)
  • Project Management: Ya

kile-hapus

1 Cara instalasi dapat ditemukan di sini. Versi Windows dari aplikasi-aplikasi KDE tidak terselesaikan, jadi mungkin sebagian dari mereka tidak stabil.

2 Walaupun Kile tidak memiliki !TeX directives untuk mendefinisikan peralatan kompilasi dan lain-lain, Kile masih memiliki “magic comments”, seperti Latexila dan TeXStudio. Yang dimaksud adalah %TODO and %FIXME, yang akan tampak pada structure view, untuk menambahkan catatan dalam kode, serta %BEGIN/%END untuk mendefinisikan area yang bisa di-fold dalam kode.

3 Sebuah built-in output viewer sempurna akan tersedia di Kile 3 dan sudah bisa digunakan dengan mengompilasi git master branch milik Kile.

6. TeXstudio — 

(sebelumnya TexMakerX)

  • OS: Windows XP/Vista/7, OS X, Linux, FreeBSD
  • Lisensi: GPL v2
  • Bahasa: cs, de, en, es, fr, hu, ja, pt_BR, zh_CN
  • Unicode: Ya
  • RTL/bidi: ?
  • % !TeX directives: Ya
  • Syntax Highlighting: Ya, bisa dikustomisasi
  • Code Completion: Ya, bisa dikustomisasi dan auto-customized
  • Code Folding: Ya
  • Spell Checking: Ya
  • SyncTeX: Ya
  • Built-in Output Viewer: Ya, mendukung PDF
  • Project Management: Ya

Saya merekomendasikan TeXstudio sebagai fork yang menarik dari Texmaker yang saya rasa lebih nyaman dan bisa dikustomisasi.

Berikut ini skrinsot TeXStudio.

texstudio

Fitur-fitur lainnya:

  • cross-platform
  • dukungan penulisan (incremental searchfolding, navigasi, auto-completioncustom macros)
  • syntax highlighting
  • inline interactive spell-checking
  • mendukung program-program LaTeX utama, termasuk tikz, pstricks, dan lain-lain
  • multi-views: math, structure
  • dukungan SVN
  • bisa berjalan via USB flash disk
  • mendukung synctex
  • termasuk penampil PDF, tetapi masih bisa dikonfigurasi untuk memakai viewer eksternal (juga dengan synctex)
  • developer dan komunitas yang sangat aktif dan responsif

7. LyX

OS: Windows, Mac, and Linux
Lisensi: Open Source


Saya menggunakan LyX dan saya suka. Dari situs resminya:

LyX is a document processor that encourages an approach to writing based on the structure of your documents (WYSIWYM) and not simply their appearance (WYSIWYG). LyX combines the power and flexibility of TeX/LaTeX with the ease of use of a graphical interface. This results in world-class support for creation of mathematical content (via a fully integrated equation editor) and structured documents like academic articles, theses, and books. In addition, staples of scientific authoring such as reference list and index creation come standard. But you can also use LyX to create a letter or a novel or a theatre play or film script. A broad array of ready, well-designed document layouts are built in.

Sangat intuitif dan ramah pengguna, dan bisa impor/ekspor ke LaTeX.

Terlalu banyak ftur untuk disebutkan, tetapi saya akan jelaskan satu yang saya rasa paling bagus: Jika Anda ingin menulis rumus matematika “2-dimensional”, LyX cocok untuk itu. Saya sudah menggunakan Lyx selama 10 tahun. Beralih dari AUCTeX baru-baru ini, tetapi saya masih menggunakan LyX ketika perlu menulis kode LaTeX untuk rumus matematika yang rumit.

lyx

8. Sublime Text dengan LaTeX Plugin

OS: Windows, Mac, Linux


Ini adalah editor yang sederhana tetapi powerful. Sublime Text mirip Notepad++, tetapi tersedia untuk banyak platform dan sangat mudah diatur untuk LaTeX dengan plugin LaTeXTools atau LaTeXing —keduanya tersedia dari Package Control. Sublime juga mirip TextMate, tetapi dikembangkan lebih aktif dan memiliki komunitas yang besar yang menyediakan plugin-nya. Sublime juga lebih cantik daripada keduanya.

Perhatikan bahwa ini adala software berbayar, dan meminta lisensi selama periode evaluasi (seharga USD 70). Dimungkinkan untuk menjalankan Sublime Text tanpa membeli lisensi, tetapi Anda akan terus diingatkan bahwa Anda menggunakan salinan yang belum diregistrasikan.

Sublime Text memiliki peralatan yang canggih untuk mengetik, yang Anda tidak mau tinggalkan ketika bekerja dengannya:

  • multiple cursors
  • go-to ke mana saja
  • snippets
  • incremental find
  • manajemen proyek
  • build-systems yang banyak

dan banyak lagi (lihat Perfect Workflow in Sublime Text 2). Skrinsot di bawah juga menampakkan fiturnya untuk menemukan sitas-sitasi (citations) dari BibTeX.

Sublime Text ini editor yang hampir sempurna, dengan potensi yang hampir tidak terbatas. Daftar fiturnya panjang sekali. Instal Package Manager, dan paket-paket tambahan dari repositori bisa dipasang dalam beberapa detik saja.

  • OS: Windows, Unix
  • Lisensi: Free to try, free to buy
  • % !TEX directives: Ya
  • Syntax highlighting: Ya
  • Code completion: Ya
  • Code folding: Ya
  • Spell check: Ya, baik built-in maupun dengan plugin
  • SyncTeX: Ya
  • Built-in output viewer: Tidak
  • Project management: Ya

sublimetext1

9. TeXlipse

OS: Windows, Mac, Linux and others (Java based)
Lisensi: Open Source


Saya telah berbahagia menggunakan TeXlipse di Eclipse sejak lama, ia memiliki code completion terintegrasi (termasuk entri-entri BibTeX), templat-templat yang mudah dikustomisasi, panel outline, dan secara langsung ia terintegrasi dengan Eclipse itu sendiri yang secara otomatis memiliki shortcuts, version control, dan lain-lain.

Ada plugin penampil PDF untuk Eclipse bernama Pdf4Eclipse dengan dukungan SyncTeX, yang mendukung pencarian maju/mundur di dalam dokumen LaTeX. Karena TeXlipse me-rebuild kode-kode LaTeX secara otomatis (di background) setelah sekali disimpan, maka kode dan pratayang dari dokumen selalu disinkronkan.

10. Gummi

OS: Linux (tersedia versi unstable untuk Windows)
Lisensi: Open Source


Emacs bagus, tetapi yang seringkali saya pakai adalah Gummi. Ia memiliki panel pratayang yang sangat berguna untuk mengetahui kesalahan sintaks dan kesalahan format sesegera mungkin. Plus, ketika Anda menyimpan dokumen LaTeX ia akan menyimpan PDF secara otomatis. Fitur lainnya termasuk peralatan bantuan penulisan matriks, memasukkan gambar, dan sitasi (citation).

Tambahan dari penerjemah: Gummi sangat saya rekomendasikan untuk setiap orang yang baru memulai LaTeX. Alasan rekomendasi adalah 1) pratayang langsung yang otomatis 2) antarmuka yang sederhana dan jelas.

gummi

11. LaTeXila

  • OS: Linux
  • Lisensi: Open source
  • Unicode: Ya

LaTeXila adalah lingkungan LaTeX terintegrasi untuk GNOME. Ia memiliki antarmuka yang bagus dan jelas. Ia tersedia di Ubuntu Software Center. Anda dapat melihat preview dari apa yang Anda tulis kapanpun Anda mau.

LaTeXila memiliki komentar-komentar “ajaib” untuk membuat todonotes, yang akan tayang di panel struktur di sebelah kiri. Komentar itu adalah %TODO dan %FIXME, yang harus diikuti oleh teks (jika tidak ada teks, maka tidak ada yang tayang di panel).

latexila

12. Geany with GeanyLaTeX

OS: Windows, Mac, Linux dan lain-lain
Lisensi: Open Source


Editor bagus lainnya adalah Geany. Software ini memiliki plugin untuk LaTeX. Plugin ini di-maintain oleh salah satu developer utama Geany sendiri. Plugin ini memiliki wizard untuk dokumen LaTeX baru, autocompletion, insert environment dengan mudah, dan tentu terdokumentasi dengan baik.

insert_char_tn

(skrinsot diambil dari laman resmi GeanyLaTeX)

Penutup

Tulisan terjemahan ini tidak ditutup kemungkinannya untuk direvisi pada masa depan. Terjemahan ini sudah dibuat semirip mungkin dengan tulisan aslinya secara struktur. Namun tentu masih terdapat kesalahan dan sesuatu yang mengharuskannya berbeda. Jika Anda memiliki analisis kebahasaan yang tajam untuk terjemahan ini, saya persilakan memberi kritik melalui komentar. Saya mohon maaf jika terdapat kesalahan. Semoga tulisan ini bermanfaat bagi Anda.


Filed under: Linux

Kesalahan-Kesalahan Umum Instalasi Linux Dualboot

$
0
0

Bismillahirrahmanirrahim.

Tulisan ini tersedia dalam PDF.

distributor-logo-ubuntuTulisan ini ditujukan sebagai peringatan kepada setiap pemula yang ingin menginstal Linux. Tulisan ini dibuat karena keprihatinan penulis melihat banyaknya orang melakukan instalasi sendiri lalu mengalami kecelakaan instalasi dalam bentuk hilangnya seluruh data. Lebih parah lagi jika kemudian bertanya kepada komunitas soal data recovery, yang hampir mustahil. Hal tragis tersebut ingin penulis minimalisir atau hilangkan kalau bisa dengan tulisan ini. Semoga tulisan ini bermanfaat.

Isi Tulisan ini

  1. Kaidah Umum
  2. Hambatan Umum
  3. Kesalahan-Kesalahan
  4. Solusi
  5. Kata Kunci Google
  6. Beberapa Tutorial Instalasi Dualboot

1. Kaidah Umum

  1. Pengguna komputer di Indonesia tidak pernah menginstal sendiri OS pada komputernya.
  2. Pengguna komputer di Indonesia biasa menyerahkan instalasi OS kepada teknisi atau penjual komputer.
  3. Pengguna komputer di Indonesia tidak berpengalaman menginstal OS sendiri.

2. Hambatan Umum

  1. Memiliki Windows di komputer yang sama.
  2. UEFI.
  3. Ketiadaan pembimbing langsung yang berada di tempat.
  4. Menginstal suatu OS butuh ilmu dan pengalaman.

Jika Anda memerhatikan kebanyakan kecelakaan instalasi di Indonesia, itu semua berpangkal kepada salah pemartisian. Semua kesalahan pemartisian berpangkal pada keberadaan OS lain yang ada di komputer yang sama. Dalam hal ini, hampir bisa dipastikan OS tersebut ialah Windows. Seharusnya instalasi Linux itu sangat mudah. Namun karena di dalam komputer yang sama sudah ada Windows-lah instalasi Linux menjadi susah dan berisiko. Seandainya Windows tidak ada, maka Anda tidak akan takut kehilangan data atau salah membuat partisi. Permasalahan berikutnya adalah semua pengguna tidak mau kehilangan Windows. Maka jika demikian, seharusnya setiap pengguna mau mencari tutorial dualboot supaya tidak ada lagi kecelakaan instalasi terjadi.

3. Kesalahan-Kesalahan

  1. Tidak mau banyak membaca tutorial instalasi Linux.
  2. Tidak mau memahami sungguh-sungguh semua tutorial instalasi yang sudah diperoleh.
  3. Lupa kaidah umum di atas.
  4. Tidak tenang.
  5. Terburu-buru.
  6. Mengantuk.
  7. Menganggap instalasi OS baru itu mudah.
  8. Menganggap instalasi OS baru bisa dilakukan tanpa belajar.
  9. Menganggap instalasi OS baru itu tidak berisiko sama sekali.
  10. Tidak tahu UEFI.
  11. Tidak tahu kalau partisi yang sudah dibuat bisa tidak terlihat saat live session Linux.
  12. Tidak tahu aplikasi-aplikasi pembakar ISO Linux seperti Unetbootin, Rufus, YUMI, LiLi, dan lain-lain.
  13. Tidak tahu kalau Linux bisa dibakar ke flash disk tanpa perlu CD.
  14. Tidak punya keberanian.
  15. Melakukan instalasi tanpa tahu sedikit pun apa itu Install Alongside Windows.
  16. Menginstal Windows setelah Linux.
  17. Tidak memahami pentingnya bootloader.
  18. Tidak melakukan backup.

Seorang pengguna Linux yang baik tidak memiliki kesalahan-kesalahan di atas. Satu kesalahan di atas saja bisa mengakibatkan semua data terhapus. Lalu bagaimana jika seseorang memiliki semuanya? Tentunya wajar banyak keluhan data hilang di komunitas karena banyak pemula masih memegang adat lamanya (baca: terbiasa diinstalkan oleh orang lain) tanpa mau belajar. Maka belajar terlebih dahulu adalah sebuah keharusan. Jangan terburu-buru. Jangan terburu-buru.

4. Solusi

  1. Kumpulkan tutorial dualboot sebanyak mungkin.
  2. Baca semuanya.
  3. Pahami semuanya.
  4. Backup semua data penting.
  5. Minta orang yang berpengalaman instal Windows/Linux untuk menemani.
  6. Lakukan instalasi.
  7. Jangan melompati satu langkah pun.
  8. Segala risiko adalah milik Anda.

Mengapa saya menawarkan solusi sepanjang ini? Karena instalasi OS itu berisiko tinggi. Saya sering mendapati keluhan hilangnya data (tidak jarang hilang total) karena si penginstal tidak paham metode instalasi OS. Saya juga sering mendapati pertanyaan instalasi Linux, yang pelakunya (saya lihat) tidak membaca tutorial sedikit pun dan tidak memahaminya. Sepadan dengan konsekuensi yang mungkin terjadi, maka saya harus memberi solusi yang panjang seperti ini. Janganlah Anda mengadu kepada siapa pun di komunitas jika data Anda hilang. Tidak ada yang mampu mengembalikannya. Mencegah lebih baik daripada mengobati.

Catatan Penting: Anda sebaiknya memiliki waktu luang yang cukup untuk meminimalisir semua kesalahan. Tanpa menyediakan waktu, Anda tidak akan belajar. Tanpa belajar, Anda akan gagal. Terima kasih untuk kang pingsut (rendezvous)  yang telah memberikan paragraf ini di kanal #ubuntu-indonesia (http://ubuntu-id.rezhajulio.web.id/29-05-2014/#log-[21:42:11]).

5. Kata Kunci Google

Gunakan contoh-contoh kata kunci berikut untuk mencari tutorial. Setelah dibuka, simpan halaman yang ditemukan. Gantilah kata kunci ubuntu berikut dengan nama distro Anda.

  1. tutorial instalasi dualboot ubuntu windows 7
  2. tutorial instalasi dualboot ubuntu windows 8
  3. tutorial instalasi ubuntu dualboot windows xp
  4. tutorial instalasi ubuntu dengan uefi
  5. menonaktifkan uefi instal ubuntu
  6. memperbaiki bootloader easybcd windows ubuntu
  7. memperbaiki grub bootloader rusak
  8. instal ulang grub bootloader ubuntu
  9. backup data windows ke dvd
  10. backup data windows ke hard disk eksternal
  11. apa itu install alongside windows ubuntu

6. Beberapa Tutorial Instalasi Dualboot

Berikut ini contoh beberapa tutorial instalasi dualboot Linux yang sengaja saya cari dan pilihkan untuk Anda. Silakan setelah ini Anda mencari sendiri tambahan yang lain.

6.1 Bahasa Indonesia

  1. http://nurhasan257.wordpress.com/2014/03/29/panduan-instalasi-linux-ubuntu/
  2. http://bojalinuxer.blogspot.com/2010/06/cara-menginstal-ubuntu-dan-windows-7.html
  3. http://www.kangarif.com/2013/01/cara-dual-boot-linux-windows-dengan-mudah.html (kaidah-kaidah dasar)
  4. http://www.kangarif.com/2013/01/cara-install-linux-mint-13-kde.html (lanjutan dari nomor 3)
  5. http://www.belocus.com/2012/10/install-kubuntu-1210-quantal-quetzal.html
  6. http://hydriet.blogspot.com/2012/12/cara-install-linux-ubuntu-dual-boot.html
  7. http://winpoin.com/cara-dual-boot-windows-8-1-update-dengan-ubuntu-14-04-lts/
  8. http://blog.taryo.net/2014/04/install-ubuntu-14.04-lts-dan-windows-8.1.html

6.2 Bahasa Inggris

  1. https://help.ubuntu.com/community/WindowsDualBoot
  2. http://www.ubuntu.com/download/desktop/install-ubuntu-desktop
  3. http://www.everydaylinuxuser.com/2013/09/install-ubuntu-linux-alongside-windows.html
  4. http://www.linuxbsdos.com/2014/02/01/dual-boot-windows-8-or-windows-7-and-ubuntu-13-10-with-ubuntu-on-a-btrfs-filesystem/
  5. http://www.liberiangeek.net/2012/04/dual-boot-windows-7-and-ubuntu-12-04-precise-pangolin/
  6. http://lifehacker.com/5403100/dual-boot-windows-7-and-ubuntu-in-perfect-harmony

Penutup

Tulisan ini mengambil istilah adat di atas dari seorang warga forum Ayo Belajar Linux yang bernama Baru Nyoba Linux Baru (Miftah, KPLI Tegal) dari percakapan IRC http://ubuntu-id.rezhajulio.web.id/22-05-2014/#log-[09:11:34]. Tulisan ini tidak ditutup kemungkinannya untuk direvisi. Penulis memohon maaf jika terdapat kesalahan di dalamnya. Semoga tulisan ini bermanfaat.


Filed under: Linux

Panduan Praktis Troubleshooting di Linux untuk Pemula

$
0
0

Bismillahirrahmanirrahim.

distributor-logo-ubuntuPanduan ini ditulis semata-mata untuk membimbing setiap pemula dalam hal menyelesaikan masalah di Linux. Panduan ini ditulis berdasarkan pengalaman pribadi dan bimbingan para senior di komunitas Ubuntu. Panduan ini diharapkan dapat memberikan sudut pandang yang paling jelas kepada pemula mengenai bagaimana troubleshooting dilakukan di Linux. Panduan ini dititikberatkan pada contoh, untuk memangkas waktu berpikir pembaca dan diperluas dengan definisi-definisi untuk memudahkan pencarian lebih lanjut. Semoga tulisan ini bermanfaat.

Rangkuman Cara Praktis Troubleshooting

  1. Salin tempel (copy-paste) pesan error ke Google.
  2. Identifikasi masalah.
  3. Analogi.
  4. Bertanya kepada ahlinya.

1. Copy-Paste Ke Google

Peringkat satu cara praktis troubleshooting di Linux dipegang oleh salin-tempel pesan error ke Google. Mengapa cara ini menempati peringkat satu? Karena mayoritas masalah di Linux telah memiliki dokumentasi troubleshooting masing-masing di Google. Anda tidak perlu memedulikan cara-cara lain jika Anda telah memiliki metode ini. Cepat, praktis, dan tepat sasaran. Itulah sebabnya dia menempati peringkat satu.

Contoh:

  1. Masalah: Failed to fetch http://kartolo.sby.datautama.net.id/ubuntu/pool/universe/y/yum/yum_3.2.25-1ubuntu2_all.deb Temporary failure resolving ‘kartolo.sby.datautama.net.id’ Penyelesaian: salin-tempel ke Google.
  2. Masalah: dpkg: error processing samba4 (–configure): subprocess installed post-installation script returned error exit status 126 Penyelesaian: salin-tempel ke Google.
  3. Masalah: bash: cd: /hom: No such file or directory Penyelesaian: salin-tempel ke Google.
  4. Masalah: cobacoba: command not found Penyelesaian: salin-tempel ke Google.
  5. Masalah: E: Unable to fetch some archives, maybe run apt-get update or try with –fix-missing? Penyelesaian: salin-tempel ke Google.
  6. Masalah: dpkg: error: need an action option Penyelesaian: salin-tempel ke Google.
  7. Masalah: bagaimana cara menginstal font di ubuntu? Penyelesaian: salin-tempel pertanyaan itu ke Google.
  8. Masalah: bagaimana cara menginstal wine di ubuntu? Penyelesaian: salin-tempel pertanyaan itu ke Google.
  9. Masalah: bagaimana cara menggunakan wine di ubuntu? Penyelesaian: salin-tempel pertanyaan itu ke Google.
  10. Masalah: bagaimana cara shutdown ubuntu dengan gnome shell? Penyelesaian: salin-tempel pertanyaan itu ke Google.
  11. Masalah: bagaimana cara update archlinux? Penyelesaian: salin-tempel pertanyaan itu ke Google.
  12. Masalah: bagaimana konfigurasi squid untuk memblokir mp3? Penyelesaian: salin-tempel pertanyaan itu ke Google.

Catatan I: untuk contoh nomor 1, seringkali Anda tidak akan menemukan hasil pencarian Google karena kata kunci Anda terlalu spesifik. Solusinya, buang bagian pesan error yang terlalu spesifik (yakni URL menuju paket), sisakan bagian yang global.

Catatan II: googlingwalau terkesan gampang– juga butuh kemampuan. Anda butuh latihan yang banyak untuk bisa googling dengan baik. Bacalah panduan googling seperti ini. Perbanyak praktik supaya feeling Anda terlatih.

2. Identifikasi Masalah

Sebenarnya, langkah awal yang paling tepat untuk menyelesaikan masalah adalah dengan identifikasi masalah itu sendiri. Bagaimana Anda bisa selesaikan masalah tanpa tahu apa sebenarnya yang terjadi? Bagaimana Anda bisa selesaikan masalah tanpa tahu bagian mana yang salah? Identifikasi masalah dilakukan dengan mencocokkan kondisi-kondisi masalah yang terjadi dengan pengetahuan yang sudah dimiliki. Identifikasi masalah itu bergantung kepada ilmu pengguna sendiri –walau ia adalah inti dari troubleshooting– sehingga peringkatnya berada di bawah googling. Teknik identifikasi masalah yang baik (tepat) bisa Anda peroleh dengan banyak membaca tutorial dan artikel soal Linux. Kemampuan identifikasi masalah akan senantiasa bertambah atau berkurang tergantung kemauan belajar dari sang pengguna sendiri.

Contoh:

  1. Masalah: Linux dualboot Windows tiba-tiba gagal booting. Identifikasi: bagian mananya yang error? GRUB, Windows Bootloader, partisi rusak, atau masalah lain?
  2. Masalah: kecepatan unduh internet ketika menggunakan Linux kalah jauh dengan kecepatan ketika menggunakan Windows. Identifikasi: sudah adilkah parameter perbandingan yang dipakai? Berapa jumlah koneksi simultan yang dipakai di Windows dan di Linux? Server mana yang jadi tujuan unduhan? ISP apa yang digunakan? Kapan waktu terjadinya unduhan? Sudah samakah download manager yang dipakai?
  3. Masalah: aplikasi XYZ tidak bisa dibuka. Identifikasi: apa yang akhir-akhir ini Anda kerjakan sebelum XYZ tidak bisa dibuka? Sudahkah Anda mencari pesan error-nya dengan cara menjalankan XYZ via Terminal?
  4. Masalah: Linux HIJ tidak bisa diinstal. Identifikasi: bagaimana kronologi tidak bisa diinstalnya HIJ? Laptop merek/seri apa yang dipakai? Sudahkah Anda mencari tutorial instalasi HIJ sebanyak mungkin? Sudahkah Anda memahami tutorial yang Anda cari? Sudahkah Anda membuat partisi baru dengan benar? Pesan error apakah yang muncul ketika instalasi?
  5. Masalah: aplikasi QRS tidak bisa diinstal. Identifikasi: bagaimana cara Anda menginstalnya? Bagaimana kronologi instalasi Anda? Apa repo yang Anda pakai? Apakah versi distro Anda masih dalam masa dukungan atau tidak? Tutorial instalasi mana yang Anda gunakan?
  6. Masalah: Linux ABC saya crash. Identifikasi: apa yang akhir-akhir ini Anda lakukan sebelum terjadi crash? Apakah crash ini terjadi sejak awal atau baru-baru ini saja? Apa desktop environment Anda? Apakah Anda sudah mengonfigurasi driver NVIDIA/ATI (jika ada)? Apakah hard disk Anda masih dalam keadaan baik? Apakah Anda sudah membuat partisi swap secukupnya?
  7. Masalah: Linux DEF saya bekerja lambat. Identifikasi: bagaimanakah spesifikasi mesin Anda? Apa distro Anda? Apakah Anda sudah membuat partisi swap? Apakah desktop environment yang Anda gunakan? Aplikasi apa saja yang Anda jalankan ketika melambat? Sudahkah Anda memeriksa proses-proses dan daemon-daemon yang berjalan di latar belakang?
  8. Masalah: Linux GHI saya boros baterai. Identifikasi: apa distro Anda? Sudahkah Anda mengonfigurasi driver NVIDIA/ATI dengan benar (jika ada)? Sudahkah Anda mematikan salah satu driver jika VGA Anda bertipe Hybrid? Berapa sel baterai Anda? Berapa jam lama pemakaian normal baterai di Windows? Berapa jam di Linux? Sudahkah Anda mengonfigurasi power management di Linux?
  9. Masalah: printer errorIdentifikasi: apa merek printer Anda? Seri berapa? Sudahkah Anda instal driver-nya? Sudah benarkah konfigurasinya? Apa distro Anda?

Catatan I: semua contoh di atas adalah gambaran global. Praktik nyatanya bisa lebih sederhana atau sebaliknya.

3. Analogi

Analogi (kias/qiyas) bisa diartikan menganggap sama dua masalah yang berbeda tetapi memiliki pola yang mirip. Dengan cara ini, Anda dapat menyelesaikan masalah baru dari hasil penyelesaian masalah-masalah lama yang mirip. Bahkan, seseorang seringkali dapat menyelesaikan masalah yang sama sekali berbeda bidang hanya dengan analogi.

Contoh:

  1. Masalah: Ubuntu versi terbaru tidak bisa memutar MP3. Analogi: Ubuntu versi lama bisa memutar MP3 dengan terlebih dulu dipasangi paket tertentu -> Ubuntu versi baru berarti juga begitu.
  2. Masalah: Fedora juga. Analogi: berarti Fedora sama seperti Ubuntu -> cari cara instalasi paket tersebut untuk Fedora.
  3. Masalahdownload manager di Linux tidak secepat IDM di Windows. Analogi: di IDM di Windows, rahasia kecepatannya terletak pada pengaturan multiple connections number dengan nilai 16 -> berarti download manager di Linux harus diatur untuk memiliki nilai multiple connections number yang sama atau lebih besar. Bisa juga dengan sengaja mencari download manager yang mendukung multiple connections number.
  4. Masalah: Anda tidak tahu bagaimana menggunakan zypper di openSUSE. Analogi: di Ubuntu, komunitas banyak menulis soal apt-get cheatsheet (selembar PDF berisi kumpulan contoh perintah apt-get siap pakai) -> berarti seharusnya komunitas openSUSE juga punya -> cari dengan Google.
  5. Masalah: Anda juga tidak tahu cara menggunakan yum di Fedora, pacman di Archlinux, emerge di Gentoo, dan slackpkg di Slackware. Analogi: samakan kasus dengan nomor 4.
  6. Masalah: Anda tidak tahu bagaimana cara menggunakan Inkscape. Analogi: di Windows, banyak komunitas CorelDRAW yang mengajarkan desain vektor di Youtube -> berarti seharusnya di Linux komunitas Inkscape juga sama -> cari video pelajaran Inkscape di Youtube.
  7. Masalah: Anda juga tidak tahu bagaimana cara menggunakan GIMP, Krita, MyPaint, Pinta, dan Darktable. Analogi: samakan kasus dengan nomor 6.
  8. Masalah: mengerjakan LFS itu sangat sulit. Analogi: setiap kejayaan membutuhkan pengorbanan -> sama dengan pengerjaan LFS -> lakukan tanpa keluh kesah.

Catatan I: analogi itu tidak harus dengan dua hal yang sama bidangnya. Saya sering melakukan analogi dengan prakiraan pikiran developer. Misalnya, jika saya kesulitan menggunakan suatu aplikasi, saya cukup berpikir “seandainya saya adalah developernya, kira-kira tombol/item ini saya tujukan untuk…”. Dengan analogi kasar macam ini, saya mudah beradaptasi dengan software apa saja.

Catatan II: analogi prakiraan pikiran developer juga bisa dilakukan dengan berpikir “seandainya saya developernya, yang saya lakukan adalah…” ketika menemukan suatu error. Hal ini sangat membantu bagi saya untuk menyelesaikan masalah demi masalah.

Catatan III: Anda akan sering menemukan senior-senior mampu menjawab pertanyaan khusus distro tertentu dalam keadaan mereka sama sekali tidak menggunakan distro tersebut. Itu karena para senior telah menguasai analogi. Mereka telah memperoleh fondasi-fondasi dasar distronya sendiri, sehingga mampu menganalogikannya dengan sistem baru (karena semua distro memiliki garis besar yang sama). Jika Anda juga menguasainya, maka masalah untuk distro Anda sendiri tentunya lebih mudah diselesaikan. Inilah salah satu kekuatan analogi untuk troubleshooting.

4. Bertanya kepada Ahlinya

Jalan terakhir jika seluruh cara di atas gagal adalah bertanya kepada ahlinya. Cara ini patut menjadi pilihan terakhir setelah Anda berusaha semaksimal mungkin. Cara ini adalah yang paling manusiawi dari seluruh cara yang disebutkan. Orang yang paling mengetahui perihal suatu software adalah si developer software itu sendiri.

Contoh:

  1. Masalah: Ubuntu versi terbaru tidak memiliki antarmuka tampilan GNOME. Solusi: tanya kepada para senior di #ubuntu-indonesia.
  2. Masalah: Slackware tidak mengenali MicroSD merek XYZ Solusi: tanya kepada para senior di milis slackware-id.
  3. Masalah: Fedora tidak memiliki paket Kingsoft Office. Solusi: tanya kepada para senior di forum Fedora Indonesia atau Internasional.
  4. Masalah: apt-get tidak memiliki fitur XYZ Solusi: tanya kepada developer apt-get.
  5. Masalah: zypper mengalami bug XYZ Solusi: tanya kepada developer zypper.
  6. Masalah: yum mengalami error XYZ Solusi: tanya kepada developer yum.
  7. Masalah: slackpkg mengalami error ABC Solusi: tanya kepada developer slackpkg.
  8. Masalah: Ubuntu Tweak tidak bisa melakukan HIJKLMN Solusi: tanya kepada developer Ubuntu Tweak.
  9. Masalah: Blankon mengalami error OPQ Solusi: tanya kepada developer Blankon.
  10. Masalah: Libreoffice mengalami kegagalan RST Solusi: tanya kepada developer Libreoffice.
  11. Masalah: modem merek UVW seri 1234 tidak dikenali oleh Ubuntu Solusi: tanya kepada developer kernel Linux atau developer usb_modeswitch.
  12. Masalah: XDMAN tidak bisa ini dan itu Solusi: tanya developer XDMAN.

Catatan I: Anda tidak harus bertanya langsung kepada developer. Seringkali pengguna berpengalaman bisa ditanyai. Mereka banyak perkumpul di kanal-kanal IRC, salah satunya adalah #ubuntu-indonesia.

Catatan II: jika Anda mau bertanya kepada developer, gunakanlah email. Belajarlah menulis email pertanyaan yang baik. Jika email Anda jelek, apalagi jika ternyata banyak kesalahan ketiknya, janganlah Anda berharap email Anda akan dibaca. Bukan hanya Anda orang yang berkirim email dengan developer. Buatlah si developer merasa email Anda pantas diprioritaskan untuk dijawab.

Catatan III: jika Anda sadar bahwa developer itu sibuk, maka dengan mudah Anda akan sadar mereka sering membuat dokumen FAQ. Dokumen ini adalah kumpulan pertanyaan yang sering diajukan. Jadi carilah dahulu FAQ mereka karena besar kemungkinan pertanyaan Anda sudah pernah mereka jawab.

Catatan IV: informasi tentang developer selalu berada pada menu Help > About di setiap software. Jika software hanya berjalan di Terminal, maka perintah man <namaprogram> selalu menyertakan informasinya. Biasakan membacanya untuk bisa bertanya.

Penutup

Tulisan ini telah dibaca oleh Akang Nugie Abinya Fahmi (suka|baik) dari #ubuntu-indonesia. Tulisan ini memiliki kekurangan dan tidak ditutup kemungkinannya untuk direvisi. Penulis mohon maaf atas segala kekurangan. Semoga tulisan ini bermanfaat.


Filed under: Linux

Catatan Ngoprek Harian Edisi 2

$
0
0

Bismillahirrahmanirrahim.

Rangkuman catatan ngoprek harian edisi 2 ini sebagai berikut.

16. sed untuk menghapus baris yang berisi teks tertentu
17. strip – -strip-unneeded namaberkas
18. hevea -fix <namaberkas>.tex
19. | grep -e .tex
20. WordPress.com tidak menerima This document was translated from LATEX by HEVEA.
21. [UPDATE:Friday, January 10, 2014][SALAH][JANGAN DIIKUTI]avrdude untuk membakar .hex menggunakan kabel programer USBASP (bukan AVR ISP MKII)
22. Berkas pengaturan proxy server milik KDE
23. avrdude untuk membakar .hex menggunakan kabel USBASP bukan USBISP MKII ke minsys ATMEGA128
24. Remap satu tombol dengan dua fungsi (normal dan bersama shift)
25. Modem Smartfren Haier CE782 UI di Ubuntu 12.04 Sukses Konek Internet
26. Backup Data Besar
27. Memperbaiki Font Rendering yang Buruk Rupa di Libreoffice KDE
28. Melihat Seluruh Kerja Kernel Mendeteksi dan Menginstal Modem USB29. xev dan xmodmap
30. Letak Log Instalasi APT


 

16. sed untuk menghapus baris yang berisi teks tertentu

sed '/-->/d' 

akan menghapus semua baris yang memiliki teks –>. Ini berguna untuk membersihkan log kuliah di IRC dari baris-baris informasi login dan logout setiap peserta. Bisa digabung untuk membuat log lebih bersih lagi:

sed '/-->/d' | sed '/

17. strip – -strip-unneeded namaberkas

Perintah strip (dari keluarga binutils) berguna untuk memperkecil ukuran berkas eksekutabel. Dalam kegiatan hari ini, pemaketan Qt tidak akan menghasilkan keluaran lintian yang bebas dari galat kecuali berkas eksekutabel Qt-nya di-strip terlebih dahulu dengan opsi – -strip-unneeded.

(Tuesday, December 17, 2013)

18. hevea -fix <namaberkas>.tex

Opsi -fix membuat .htoc dan menyelesaikan semua dafar isi dalam HTML. Trik .htoc ini tidak tercantum di situs resmi hevea sendiri. Tanpa opsi ini, hevea hanya berusaha satu kali dan hanya mampu menghasilkan .toc.

(Tuesday, December 31, 2013 07:11 PM)

19. | grep -e .tex

Opsi -e ini berguna untuk mengeluarkan hanya baris teks yang ada tulisan .tex. Bisa dipakai untuk perintah apa pun yang mengeluarkan teks sebagai standard output. Contoh pemakaian saya: history | grep -e ‘rm -rf’ atau man hevea | grep -e .htoc. Sangat berguna untuk searching di dalam history dan man.

(Tuesday, December 31, 2013 07:11 PM)

20. WordPress.com tidak menerima This document was translated from LATEX by HEVEA.

Hevea selalu membubuhkan teks “This document was translated from LATEX by HEVEA.” pada akhir setiap HTML yang dikonversikan. Namun, meski kelihatannya sepele, satu baris ini (juga kode sumbernya tentu saja) membuat WordPress.com tidak menayangkan preview bahkan tidak mampu post dengan hanya berhenti di post.php. Saya telah mencoba mengurangi baik secara kode sumber maupun WYSIWYG di TinyMCE, untuk bagian awal yakni judul kemudian daftar isinya, hasilnya tetap error. Namun setelah saya hapus bagian tersebut, WordPress.com sanggup menayangkan pratayang posting. Satu baris ini walau singkat, cukup mengganggu. Baiknya dihapus saja.

TAMBAHAN PENTING: WordPress.com ternyata masih menolak walau baris tersebut sudah dihapus jika masih terdapat gambar-gambar yang mati URL-nya. Hevea tidak akan sempurna menghasilkan HTML bergambar jika gambarnya tidak dalam 1 folder dengan .tex, sedangkan saya memisahkan gambar dengan .tex. Alhasil HTML dihasilkan dengan gambar yang mati URL-nya. Dengan menghapus semua gambar dengan URL yang mati itu ( dihilangkan semuanya), maka WordPress.com mau menerima kenyataan.

21. [UPDATE:Friday, January 10, 2014][SALAH][JANGAN DIIKUTI]avrdude untuk membakar .hex menggunakan kabel programer USBASP (bukan AVR ISP MKII)

Inilah sesuatu yang saya penasaran dengannya sejak lama sekali dan selalu gagal. Alhamdulillah berhasil membakar .hex ke dalam chip ATMEGA128 dengan program avrdude (program open source yang juga dipakai oleh AtmelStudio & AVR Studio untuk membakar). Perintahnya:

root@master:/home/master/Publik/AVR# avrdude programnya.hex -p ATMEGA128 -c usbasp

Yang wajib diperhatikan

- Tidak perlu mengatur .rules untuk udev, tidak seperti MKII
- Tidak perlu me-restart udev
- Tancapkan kabel USB ASP pastikan terhubung dengan perangkat ATMEGA
- Langsung jalankan perintah di atas (sebagai root)
- Jangan salah memilih argumen -c; harus usbasp kalau pakai USB ASP
- Kunci seluruh keberhasilan membakar adalah opsi -c usbasp
- Salah pada opsi -c usbasp (menggantinya dengan -c avrispmkII atau -c avrisp2, hanya akan menghasilkan error: /dev/ttyS*

Bukti keberhasilan: 

root@master:/home/master/Publik/AVR# avrdude uas.hex -p ATMEGA128 -c usbasp
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9308
avrdude: Expected signature for ATMEGA128 is 1E 97 02
         Double check chip, or use -F to override this check.
avrdude done.  Thank you.

22. Berkas pengaturan proxy server milik KDE

/home/master/.kde/share/config/kioslaverc

23. avrdude untuk membakar .hex menggunakan kabel USBASP bukan USBISP MKII ke minsys ATMEGA128

Hasil pembakaran kemarin itu (nomor 21 di atas) ternyata hanya menyalin data ke dalam ATMEGA dan tertolak tanpa pesan (karena ATMEGA bukan bash). Kalau saya ingin membakar (download) .hex ke chip ATMEGA sebagaimana yang dilakukan para programer AVR, maka perintah kemarin itu salah. Perintah kemarin itu kurang karena tidak ada opsi untuk melakukan FLASH (tahu flashing untuk BIOS, kan?). Sedangkan perintah yang benar dan sudah berhasil mengedip-ngedipkan lampu minsys adalah ini:

root@master:/home/master/Publik/AVR# avrdude -c usbasp -P usb -p atmega128 -U flash:w:namaprogramnya.hex

Yang paling penting pada perintah ini adalah opsi -U flash:w:<namaberkas>.hex karena opsi ini yang menentukan avrdude untuk flashing (penghapusan kemudian penulisan kode biner) ke dalam chip ATMEGA.

Bukti keberhasilan (lihat ada beberapa kali progress bar):
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9702
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file "bismillah0.hex"
avrdude: input file bismilallah0.hex auto detected as Intel Hex
avrdude: writing flash (4306 bytes):

Writing | ################################################## | 100% 1.70s

avrdude: 4306 bytes of flash written
avrdude: verifying flash memory against bismilallah0.hex:
avrdude: load data flash data from input file bismillah0.hex:
avrdude: input file bismillah0.hex auto detected as Intel Hex
avrdude: input file bismillah0.hex contains 4306 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.49s

avrdude: verifying ...
avrdude: 4306 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

root@master:/home/master/Publik/AVR#

24. Remap satu tombol dengan dua fungsi (normal dan bersama shift)

┌─[master@master]─[~]
└──╼ xmodmap -e "keycode 135 = Delete parenright"

Tinggal taruh makna kedua pada tempat kedua setelah makna pertama, dia otomatis dikenali sebagai makna yang dijalankan jika bersama shift.

25. Modem Smartfren Haier CE782 UI di Ubuntu 12.04 Sukses Konek Internet

Persyaratan

1. pppd harus aktif dahulu
2. kalau belum aktif, sudo service network-manager restart
3. tidak menggunakan Network Manager (sementara ngalah dululah pakai Terminal)

Peralatan

1. wvdial (saya ambil di Windows pakai cara http://malsasa.wordpress.com/2014/01/27/panduan-ringkas-apt-get/)

Cara Koneksi

1. lsusb, pastikan vendor:product = 201e:1022 (1022 ini yang penting)
2. suntikkan parameter vendor:product supaya dikenali kernel -> sudo modprobe usbserial vendor=0x201e product=0×1022
3. bikin konfig wvdial baru -> sudo wvdialconf (untuk memastikan si modem dikenali di /dev/ttyUSB0)
4. panggil wvdial -> sudo wvdial (bisa internetan jika sudah muncul nomor IP dan alamat IP DNS)

wvdial-ce782-precise

Catatan Penting

Catatan ini ditulis dengan internet melalui modem CE782 ini. Saat ini saya sedang menyalakan wvdial di Konsole (Saturday, February 01, 2014 10:02 PM).

Sumber

Saya melakukan konfigurasi dengan mempelajari PAHE milik Erdinote.com. Saya tidak menginstal PAHE begitu saja. Saya ingin memahami cara kerjanya jadi saya lakukan semuanya sendiri. 

26. Backup Data Besar

1. Ke Adrive (jatah 50 GB, ada realtime upload speed + progess bar)
2. Ke Google Drive (sayang tidak menayangkan realtime upload speed, hanya progress bar)

Saya mengunggah berkas sebesar 400 dan 700 MB (ZIP).

27. Memperbaiki Font Rendering yang Buruk Rupa di Libreoffice KDE

Buka System Settings > Application Appearances > Font > lihat bawah > “Use antialiasing” > jadikan “Enabled” > klik “Configure” > pilih “Slight” sebagai hinting style.

Sumber: http://forum.kde.org/viewtopic.php?f=17&t=118879&p=302089#p302089

28. Melihat Seluruh Kerja Kernel Mendeteksi dan Menginstal Modem USB

tailf /var/log/syslog

Catatan:

- tailf adalah perintah untuk melihat secara realtime pertumbuhan suatu berkas log
- /var/log/syslog adalah log untuk apa pun informasi dari kernel bahkan dmesg itu mengambil keluaran dari sini. Bahkan crontab dan segala program background akan terlihat bekerja di dalam syslog ini.

Sumber:

thrvers, guru modem saya

29. xev dan xmodmap

1. Buka terminal.
2. Ketik perintah xev.
3. Tekan PgDn.
4. Perhatikan nomor keycode-nya. PgDn di kibor saya nomornya adalah 117.
5. Ctrl+C untuk mematikan xev.
6. Sekarang ketik perintah xmodmap -e “keycode 117 = ” dengan harapan mengisi keycode nomor 117 (yakni PgDn) dengan kekosongan alias tidak ada fungsinya alias disable.
7. Sekarang sudo xmodmap -pke > .Xmodmap.
8. Sekarang seharusnya sudah mati itu fungsi PgDn.

Disalin pada 3 Maret 2014 dari salah satu komentar.

30. Letak Log Instalasi APT

/var/log/apt/history.log

Di dalam folder apt/ ini masih ada banyak .gz yang isinya riwayat juga. Sangat penting untuk di-backup. Seluruh kegiatan instalasi/uninstalasi tercatat di dalamnya tanpa terlewat satu pun.


Filed under: Linux
Viewing all 165 articles
Browse latest View live