Category Archives

412 Articles

Mozart vs. Modern Songs

Lagu klasik opera adalah musik tradisional Eropa. Mereka pun mencoba menjawab gerusan zaman. Modernisasi yang mereka lakukan misalnya dengan memasukkan unsur-unsur modern.

Hasilnya?

Sebuah lagu jenaka sarat kritik dan interpretasi yang bisa dinikmati oleh siapa pun. Mau analisis breaking 4th wall, sarkasme, cresendo/decresendo, kanon, dan beberapa teknik lawakan/lagu ada di situ. Atau, silakan saja cukup nikmati sebagai sebuah hiburan.

Memasang Android 4.4-RC1 pada VirtualBox

Memasang Android 4.4-RC1 pada VirtualBox

Dari situs Android-x86 didapati bahwa Android-x86 versi 4.4.-RC1 sudah keluar. Agar situs ini tidak vakum, saya pun iseng-iseng memasang Android tersebut di dalam komputer saya.

Unduh berkas ISO Android-x86 (sekitar 308MB) dari Sourceforge. Setelah selesai mengunduh, siapkan sebuah instans VirtualBox baru dengan CTRL+N (atau akses tombol Baru). Lalu buat sebagai berikut:

  1. Ciptakan mesin maya baru dengan konfigurasi:
    • Tipe: Linux
    • Versi: Linux 2.6 / 3.x (32 bit)
    • Memori: 1024MB (untuk Android-x86 minimal 256MB)
  2. Buat ruang penyimpan secara baku saja sudah cukup (8GB).
  3. Jangan lupa untuk mengaitkan ISO sebagai CD sekunder agar sistem masuk ke situ.

 

Lalu, kemudian siap menyalakan sistem. Nyalakan sistem dengan mem-boot ke CD ISO. Maka, tampilan selanjutnya.

 

Selesai.

 

Penghargaan Kepada John Lie dan The Outlaw
john lie and The Outlaw crew

Penghargaan Kepada John Lie dan The Outlaw

Artikel ini ditujukan sebagai penghormatan saya kepada Laksamana Muda TNI (Purn) John Lie Tjeng Tjoan (John Lie/Jahja Daniel Dharma)

Sebuah entri di 1cak menyentil saya tentang John Lie. Kebetulan kemarin, 11 Maret (walau pun beberapa sumber bilang 9 Maret) berulang tahun. Langsung, saya coba cari dan ternyata banyak di antara tulisan tentang Beliau membuat bulu kuduk saya merinding dan hampir menangis di kantor.

Saya tahu John Lie dari rekan saya semasa masa kuliah dahulu. Sama seperti saya mengenal perjuangan Bapak-Bapak Bangsa yang seperti Kisah Tiga Negara (ada tiga duo yang berbeda pandangan namun sama-sama cinta tanah air). Hanya saja, saya kurang begitu mengikuti kiprah Beliau karena keburu kesengsem sama Tan Malaka (apalagi majalah Tempo memuat edisi Tan Malaka).

Testimoni yang Saya Anggap Luar Biasa

Ada banyak tulisan tentang Beliau, tapi saya coba rangkum hal-hal yang membuat saya terkagum-kagum sama Beliau.

  • John Lie berjuang dengan paru-paru yang tinggal satu semenjak 1939.
  • The Outlaw, kapal yang dipakai oleh John Lie merupakan sebuah kapal cepat (speedboat) dengan kecepatan maksimal 17 knots buatan Inggris diawaki oleh 18 orang.
  • Panjang The Outlaw 110 kaki atau sekitar 33,528 meter tanpa dilengkapi dengan senjata. Kapal cepat ini biasa beroperasi malam hari memperjuangkan ekonomi Republik Indonesia menghindari kapal patroli dan pesawat patroli Belanda.
  • Ada setidaknya 15 kali misi bersama The Outlaw menyelundupkan senjata dan hasil bumi Republik Indonesia. Penyelundupan ini menyuplai Tentara Indonesia dan NKRI sehingga Bung Hatta, selaku Wakil Presiden RI, memberi selamat kepada mereka.
  • Salah satu misi perjuangan Beliau adalah menyelundupkan peralatan Radio Rimba Raya, radio perjuangan Republik Indonesia dalam memberitakan perjuangan NKRI.
  • Misi Beliau juga berhasil menghapus ranjau Jepang di perairan Cilangkap sehingga dapat digunakan sebagai pelabuhan resmi NKRI.
  • John Lie berhasil menampik propaganda Belanda yang mengatakan bahwa Indonesia tidak berdaya di laut. Radio BBC memberitakan bahwa John Lie berhasil ke Phuket, Thailand dengan selamat. Akibat siaran berita ini, Indonesia bisa menolak klaim Belanda di laut pada Sidang Umum PBB.
  • Beliau tak pernah mempermasalahkan kalau Beliau dilupakan orang. Beliau bilang, Beliau melakukan ini semua demi Tanah Air yang Beliau cintai. Duh! tertemplak sekali saya.

Tulisan Asli

Tulisan asli: Guns – Bibles – Are Smuggled to Indonesia, Roy Rowan, Life Magazine, 26 September 1949.

Tulisan tentang Beliau

Berikut tulisan-tulisan yang telah saya temukan di Internet tentang Beliau.

John Lie Si Penyelundup yang HumanisKisah laksamana terkemuka di masa perjuangan.
Radio Rimba RayaBerita The Outlaw berhasil menembus blokade Belanda di Selat Malaka rupanya disiarkan di radio BBC dan All Indian IHAN NURDIN Jum’at 01 Maret 2013 13:53 WIB TANGGAL 1 Maret merupakan tanggal penting bagi Indonesia. Karena pada 1 Maret 1949 silam TNI melakukan serangan besar-besaran terhadap kota Yogyakarta.
JOHN LIE , Orang tionghoa pertama yang mendapat gelar pahlawan RIJOHN LIE , Orang tionghoa pertama yang mendapat gelar pahlawan RI Nama nya mungkin kalah tenar dengan sederet pahlawan yang telah melegenda lebih dulu di otak kita sejak masa kanak-kanak. Nama sang pahlawan sangat legenda di kalangan prajurit TNI AL.
via Kaskus

Video-video tentang Beliau

Angkat Senjata Bela RI, Warga Tionghoa Tak Tertulis di Buku SejarahKiprah Pejuang Tionghoa Sudrajat,Arif Arianto – detikNews Tapi pasca-Gerakan 30 September 1965 dan ketika rezim Orde Baru berkuasa, yang terjadi kemudian adalah pembatasan-pembatasan, seperti tidak diperbolehkannya penggunaan aksara Cina, pelarangan sekolah Cina, dan pengetatan seleksi pelajar Tionghoa yang akan masuk universitas.
via Detik
Memasang Sacred 2 Gold edisi Steam dengan WINE
WINE Is Not Emulator

Memasang Sacred 2 Gold edisi Steam dengan WINE

Sebelum Memasang

Silakan beli dahulu permainannya di Steam. Bisa tunggu Steam Sale atau langsung saja. Memang, harga US$19,9 agak mahal. Kebetulan waktu itu saya dapat beli dari Steam Sale.

Jangan lupa bahwa Sacred 2 Gold harus mengunduh 13,6 GB (!) dari Steam. Pastikan kuota Internet Anda cukup. Atau, pastikan langganan Internet Anda cukup mumpuni untuk mengunduh permainan ini.

Pastikan juga Anda sudah memasang Wine.

sudo apt-get install wine

atau

sudo emerge wine

atau menurut kepercayaan dan distro masing-masing.

Mari Memasang

Untuk memudahkan, saya menggunakan Winetricks.

Pasang Winetricks

Winetricks biasanya sudah dipaketkan oleh distro-distro GNU/Linux. Contohnya pada Debian dan turunannya (BlankOn termasuk):

sudo apt-get install winetricks

Pada Gentoo:

sudo emerge winetricks

atau perintah yang lainnya sesuai distro masing-masing. Atau kalau manual:

rm -f winetricks
wget http://winetricks.googlecode.com/svn/trunk/src/winetricks
sudo cp winetricks /usr/bin
sudo chmod +x /usr/bin/winetricks

Saya lebih suka menggunakan versi SVN karena lebih terbaru.

Pasang Steam

Steam yang dipasang oleh Winetricks tidak berfungsi. Untuk itu, kita harus mengunduh Steam secara manual.

wget http://media.steampowered.com/client/installer/SteamSetup.exe -O /tmp/SteamSetup.exe

Baru setelah itu lanjutkan pasang Steam dengan winetricks. Ingat! Steam pasti gagal dipasang. Namun, kita butuh konfigurasi lingkungan Wine yang cukup.

winetricks steam

Winetricks selalu memasang pada “$HOME/.local/share/wineprefixes/steam”. Variabel $HOME berisi direktori rumah Anda, misalnya “/home/blankon”. Kebetulan permainan saya di Steam bukan cuma Sacred 2 Gold. Untuk itu, Saya pindahkan saja ke lingkungan yang berbeda nama, misalnya “sacred”.

mv $HOME/.local/share/wineprefixes/steam $HOME/.local/share/wineprefixes/sacred

Untuk membuat perintah lebih sederhana, pindahkan direktori kerja WINE ke direktori Sacred.

export WINEPREFIX=$HOME/.local/share/wineprefixes/sacred

Lalu, pasang Steam seperti biasa:

wine /tmp/SteamSetup.exe

Seperti memasang Steam seperti biasa, tinggal klik saja. Lalu verifikasi dengan surel Anda. Saya rasa kalau Anda sudah bisa beli permainan di Steam, Anda sudah bisa melakukannya. Setelah itu, Anda tinggal mengunduh Sacred 2 Gold. Kalau saya butuh sekitar sejam lebih, Anda mungkin butuh waktu setengah hari.

Downloading Sacred 2 Gold Edition

Downloading Sacred 2 Gold Edition

Yang ini bisa Anda tinggal pergi.

Memasang Pustaka yang Diperlukan

Sacred 2 bergantung pada pustaka PhysX dari nVIDIA. Untungnya, pustaka tersebut sudah disertakan pada versi Steam.

wine "$WINEPREFIX/drive_c/Program Files (x86)/Steam/SteamApps/common/Sacred 2 Gold/redist/PhysX/PhysX_9.10.0513_SystemSoftware.exe"

Setelah itu, Anda tinggal langsung klik-klik pasang seperti biasa.

Installing PhysX engine

Installing PhysX engine

Setelah ini, Anda bisa langsung bermain.

Tentang Sacred 2 Gold

Sacred 2 adalah sebuah permainan yang berisi Sacred 2 Fallen Angel dan ekspansinya Sacred 2: Ice and Blood. Sacred 2 merupakan lanjutan dari Sacred. Namun, karakter-karakter yang diberikan berbeda dengan Sacred.

Sacred dan Sacred 2 adalah permainan yang diciptakan oleh Ascaron Entertainment. Ini satu-satunya permainan bacok-tebas (hack-and-slash) yang memiliki dunia terbuka dan misi-misi aneh bin lucu. Anda takkan pernah bosan untuk menjelajahi dunia Ancaria tempat Sacred berlangsung.

Saya mengenal Sacred dahulu ketika menunggu Diablo 3 yang tak kunjung datang. Saat itu beredar kabar bahwa para pengembang Diablo keluar dan sebagian bergabung dengan Ascaron untuk mengembangkan Sacred. Lalu saya pun mengikuti perkembangan Sacred.

Sacred pada mulanya adalah permainan penuh cacat. Namun, permainan ini semakin stabil seiring dengan tambalan-tambalan yang diluncurkan untuk memperbaiki banyak aspek. Seingat saya baru pada tambalan versi 1.62 permainan sudah stabil dan asyik untuk dijelajahi.

Pada beberapa waktu yang lalu, Sacred Gold (kumpulan Sacred dan ekspansinya) dikonversi ke GNU/Linux oleh Linux Game Publishing.  Namun, Sacred 2 Gold belum sempat dikonversi. Ascaron terlanjur bangkrut akibat berusaha mengembangkan Sacred 2 Fallen Angel.

Mengapa saya tidak menyebutkan Sacred 3 dan Sacred Citadel? Karena mereka bukan Sacred yang kita ketahui bersama. Sacred 3 tidak mengenal open world dan Sacred Citadel cuma permainan tidak jelas yang cara bermainnya sama sekali berbeda dengan Sacred yang kita ketahui bersama.

Cara bermain (gameplay) adalah roh dari sebuah permainan. Kohan memiliki cara bermain dengan satu pasukan. Cossacks memilih permainan dengan memperhitungkan sumber daya alam dan kemungkinan untuk makar. Sacred adalah tentang sebuah dunia besar yang terbuka untuk dijelajahi dengan berbagai macam kemungkinan misi. Itu sebabnya, saya masih belum bisa menganggap Sacred Citadel dan Sacred 3.

Kabar dari Dunia Keamanan
Let's draw something cool and call it cyber war.

Kabar dari Dunia Keamanan

Tulisan ini mungkin bukan untuk Anda. Tapi, Snowden memperlihatkan bahwa spionase negara-negara maju telah sampai kepada tingkat memprihatinkan. Penyadapan negara terhadap warga negaranya sendiri mempertanyakan sebuah masalah serius: dapatkah demokrasi tetap ada?

Kendati banyak yang berpendapat bahwa saat ini hanyalah pseudo-demokrasi, namun tetaplah demokrasi masih ada dan dipraktikkan. Penyadapan dan interfensi informasi, sayangya, dapat mengancam demokrasi yang secuil itu. Hak-hak manusia untuk memilih jalan hidupnya semakin dipertanyakan. Semua ditentukan oleh penguasa (pemerintah dan korporasi).

Jangan-jangan, akan timbul generasi yang tidak mengenal lagi arti kebebasan karena segala sesuatunya telah ditentukan oleh pemerintah dan korporasi. Ini bisa jadi awal mula titik kepunahan manusia. Pemikiran yang seragam membuat jalan keluar sebuah masalah pun seragam.

Pluralitas manusia menjamin akan ada selalu jawaban alternatif yang siap untuk menjawab. Jawaban-jawaban ini saling menajamkan satu sama lain sehingga menghasilkan jawaban yang semakin sempurna. Itu sebabnya, alternatif akan selalu diperlukan untuk melihat sebuah masalah dari sisi lain.

Mungkin berita ini lebih banyak mengenai Amerika Serikat. Namun, negara-negara lain pun melakukan hal yang sama. Hanya saja, operasi-operasi ini lebih banyak terbuka di Amerika Serikat, terutama semenjak Snowden.

Berikut catatan keamanan yang berhasil saya kompilasi.

Pintu Belakang IPSEC OpenBSD

Berita paling tua tentang keberadaan campur tangan pemerintahan untuk sengaja melemahkan sebuah sistem operasi berada pada tahun 2010 sebelum Snowden. Kala itu sebuah audit kode yang dilakukan menemukan adanya kelemahan dalam kernel IPSEC pada OpenBSD. OpenBSD adalah sebuah varian BSD yang bertujuan untuk keamanan.

Dari hasil penelusuran, diduga kode diinjeksi oleh sebuah perusahaan. Perusahaan ini terletak di Washington DC. Dari hasil investigasi, diduga kode tersebut diinjeksi oleh FBI.

Update on the OpenBSD IPSEC backdoor allegationwithout a ‘hint’ (true or fake), Well, the allegations came without any facts pointing at specific code. At the moment my beliefs are somewhat along these lines: (a) NETSEC, as a company, was in that peculiar near-DC business of accepting contracts to do security and anti-security work from parts of the government.
via Lwn

RSA Sengaja Melemahkan Kriptografinya

Siapa RSA? RSA adalah pemegang paten dari kriptografi RSA, sebuah formula kunci publik-kunci pribadi. Algoritmanya banyak dipakai perusahaan-perusahaan untuk membuat kriptografi keamanan yang diperlukan untuk melindungi data-datanya. Algoritma/formula tersebut juga digunakan pada produk-produk pihak ketiga.

NSA Paid a Huge Security Firm $10 Million to Keep Encryption WeakReuters reports that the NSA paid massive computer security firm RSA $10 million to promote a flawed encryption system so that the surveillance organization could wiggle its way around security. In other words, the NSA bribed the firm to leave the back door to computers all over the world open.

Yahoo!, Google, Microsoft, dan Facebook beritahu Publik tentang data yang diberikan kepada NSA

Perusahaan-perusahaan yang beroperasi di Amerika Serikat terikat Undang-Undang Pengintaian Mata-mata Asing (Foreign Intelligence Surveillance Act). Intinya, UU ini memperbolehkan pemerintah AS untuk meminta data-data pribadi pada perusahaan-perusahaan tersebut. Hal ini dapat dilakukan dengan dalih nasionalisme perlindungan terhadap niat-niat jahat asing termasuk terorisme.

Microsoft, Facebook, Google and Yahoo release US surveillance requestsTens of thousands of accounts associated with customers of Microsoft, Google, Facebook and Yahoo have their data turned over to US government authorities every six months as the result of secret court orders, the tech giants disclosed for the first time on Monday.

Kriptografi lemah SSL pada Apple

Auditor menemukan kelemahan pada implementasi SSL Apple sehingga orang dapat melewati satu bagian dari enkripsinya. SSL dipakai untuk mengenkripsi sandi dan data-data penting sebelum dikirim melalui jaringan. Hal ini dapat mengakibatkan pihak tak berkepentingan dapat mengeksploitasi sistem untuk mencuri data.

Apple’s #gotofail weekendIn case you spent your weekend watching closing ceremonies and not reading tech news, there was a lot of buzz around a security problem in Apple products. On Friday, Apple released an emergency update for iOS7 that fixed a severe vulnerability in their SSL/TLS implementation on the iPhone.

Kode Verifikasi GnuTLS Rusak

Redhat menemukan pada GnuTLS versi apa pun bahwa fungsi validasi sertifikat telah terkompromi sehingga dapat membuat verifikasi sertifikat dilewati. Hal ini membuat sebuah aplikasi menjadi tak aman.

Critical crypto bug leaves Linux, hundreds of apps open to eavesdroppingHundreds of open source packages, including the Red Hat, Ubuntu, and Debian distributions of Linux, are susceptible to attacks that circumvent the most widely used technology to prevent eavesdropping on the Internet, thanks to an extremely critical vulnerability in a widely used cryptographic code library.

 

Kebobrokan GnuTLS sudah diduga sejak lama. Sayangnya, tidak banyak orang yang tahu. Karena kode sumber yang terbuka, akhirnya banyak orang yang melihat dan sudah mendengar.

Untungnya, audit terbuka Redhat menghasilkan sebuah keputusan yang luar biasa. Produk tersebut diperbaiki. Sambil malu, pengembang GnuTLS menyarankan untuk pengguna memperbaharui versi GnuTLS mereka ke versi 3.2.12 atau 3.1.22.

GnuTLSCVE-2014-0092 Certificate verification issue A vulnerability was discovered that affects the certificate verification functions of all gnutls versions. A specially crafted certificate could bypass certificate validation checks. The vulnerability was discovered during an audit of GnuTLS for Red Hat. Who is affected by this attack? Anyone using certificate authentication in any version of GnuTLS.
via Gnutls

Kata Terakhir

Menjual keamanan seperti menjual keledai mati. Semua orang membayar mahal untuk itu hanya demi rasa aman. Rasa aman yang semu ini sering kali menjadi justifikasi orang untuk lengah. Ya, kalau pun teknologi memang kuat, belum tentu social engineering tidak dapat dilakukan. Keamanan tetaplah sesuatu yang dapat dikompromikan bila dengan pihak ketiga.

Kebanyakan dari apa yang saya ceritakan ini sudah diperbaiki. Hal ini karena kode-kode sumber yang terbuka membuat banyak orang tahu. Keterbukaan ini membuat produk-produk tersebut diperbaiki. Entah bagaimana dengan perangkat lunak yang tidak menyertakan kode sumber.

Salah satu motivasi saya dalam menggunakan FOSS adalah audit kode. Banyak orang ditakut-takuti dengan bilang bahwa kode yang terbuka membuat orang banyak tahu. Namun, justru kode yang terbuka menjamin integritas implementasi. Alternatif yang berbeda menyebabkan setiap orang dapat menggunakan implementasi yang berbeda.

Sebuah Perjalanan

Sebuah Perjalanan

Banjir di Tebet menggunakan GIMP Websave

Banjir di Tebet menggunakan GIMP Websave

Carilah TUHAN selama Ia berkenan ditemui; berserulah kepada-Nya selama Ia dekat!

(Yesaya 55:6, ALKITAB Terjemahan Baru)

Bagi saya seorang insan Kristiani, hari minggu adalah hari pengisian rohani. Telah enam hari jiwa terkuras di depan komputer. Pada hari yang ketujuh, saya pun mencari Sang Khalik untuk diisi kembali.

Ketika turun di Tebet, ternyata jalanan ke Kampung Melayu terkena banjir. Waktu menunjukkan tinggal sejam lagi waktu ibadah. Menggunakan KRL Bekasi dan turun di Buaran pun rasanya sudah tak mungkin. KRL Bekasi sering ngetem lama laiknya Angkot.

Saya teringat untuk turun di stasiun Cawang dan melanjutkan naik Taksi seperti minggu yang sudah-sudah. Ah, saya tertegun melihat isi dompet yang tak mencukupi. KRL adalah moda transportasi yang murah, tapi bukan begitu untuk Taksi.

Bisa saja timbul pertanyaan-pertanyaan berikut:

Apakah Tuhan memang merancangkan untuk saya tidak datang kepada-Nya?

Apakah Tuhan yang kusembah ini hanyalah buah pemikiran dari pemerintahan Konstantin Agung?

Tetapi, saya memilih untuk tetap percaya.

Sambil berharap, saya pun berjalan menuju Kampung Melayu. Tiga mobil SAR menjauhi lokasi banjir seperti memberi isyarat untuk kembali. Tapi, saya tetap harus melangkah. Saya tahu Ia akan memberi jalan.

Terlihat bocah-bocah kecil berenang-renang. Mobil-mobil di seberang banjir terhenti dan sebagian memutar balik. Di sebelah mobil SAR yang terparkir saya pun bernalar.

Saya tahu, pikiran diberikan Tuhan untuk manusia berusaha. Berusaha adalah sebuah anugerah. Orang yang berusaha memiliki kedaulatan yang dianugerahkan Tuhan untuk dia menentukan hidupnya.

Setelah saya mengamat-amati, ada orang-orang yang berusaha menyeberang dari arah berlawanan. Ah, ternyata Pemerintah DKI Jakarta baru saja meninggikan satu jalur jalan. Cukup tinggi sehingga banjir hanya sedikit di atas kaki.

Ah, Tuhan, saya tahu Engkau takkan biarkan umat-Mu yang sudah berusaha mencari Engkau. Saya pun mengambil foto untuk ditaruh ke Instagram seperti kebiasaan orang-orang zaman ini. Setelah itu, saya pun melepas kasut dan berjalan menyeberangi banjir dengan senyum kemenangan.

Ayat ini bukan ingin melemahkan kita dengan bilang Tuhan tidak berkenan. Ayat ini menekankan bahwa sesungguhnya sebuah persembahan hidup adalah ketika dengan segenap kekuatanmu mencari-Nya.

Seberapa kuat engkau mencari Tuhanmu?

Jan Peter Alexander Rajagukguk, 2014

Pembahasan

Artikel yang saya tulis ini sebenarnya mengandung beberapa tips penulisan. Silakan lanjut untuk melihat tips-tips tulisan. Saya sengaja taruh tag More karena mengandung gambar-gambar besar (tapi ukuran berkasnya kecil). Read More

Bacaan Lebih Lanjut

Nokia X: Android Nokia
Nokia X Dual SIM, image used as-is.

Nokia X: Android Nokia

Akhirnya, setelah rumor beberapa bulan belakangan ini, Nokia resmi meluncurkan Nokia X. Kalau dilihat dari fiturnya, sepertinya pasarnya untuk kelas menengah. Dan, yang menarik adalah dia menggunakan Android.

Nokia X Dual SIMNokia X Dual SIM Overview
via Nokia

Menurut prediksi The Verge, kemungkinan Nokia X hanya akan menjadi proyek yang “sudah lama dibuat, sayang kalau tidak diproduksi” seperti N9 Meego. Android yang digunakan adalah Jelly Beans AOSP, alias Android versi komunitas yang tak ber-Google. Ia akan seperti produk Android Amazon yang memiliki pasar sendiri (Google Market).

Tapi, saya tidak kuatir. Pertama, menurut saya, Nokia masih memiliki peta terbaik yang berkompetisi dengan Google Maps. Kedua, aplikasi yang sudah dibuat untuk Android hanya perlu perubahan sedikit (kemungkinan dengan membuang semua Layanan Google) untuk bisa kompatibel. Artinya lagi, kemungkinan besar pun akan ada orang keren di XDA Developers yang akan membuat versi Google Android-nya. ūüôā

This is Nokia X: Android and Windows Phone collideIt’s official: the Nokia X Android phone is here. Microsoft might be buying Nokia’s phone business shortly, but the Finnish smartphone maker is still pushing ahead with the launch of three Android-powered handsets today. The Verge first revealed details about Nokia’s plans in December, and the company is now ready to talk specifics about the X, the X+, and the XL.

Apakah ia akan laku di tengah perangkat-perangkat Android yang canggih? Ya. Saat ini pasar untuk kelas menengah ke bawah sedang menjamur. Pasar dunia ketiga seperti India, Brazil, dan Indonesia memiliki jumlah penjualan yang besar. Itu sebabnya, Firefox OS ditargetkan untuk mereka juga.

Tapi, apakah ia dapat bertahan? Kemungkinan tidak. Microsoft menggadang-gadang Lumia 520-nya sebagai kisah sukses Windows Phone. Pasar mereka jelas sekali negara-negara dunia ketiga dan pada pasar menengah ke bawah.

Meet the most important Windows Phone in the worldOutside of the Apple ecosystem, affordability reigns supreme. According to the latest data from AdDuplex , the budget-priced Lumia 520 has now taken more than 30% of the Windows Phone market share, and when combined with the Lumia 521, the two phones make up more than one-third of all Windows Phone sales worldwide.
via BGR

Jelas sekali, Nokia X hanya produk selingan yang bertentangan dengan pasar Microsoft. Kemungkinan besar ketika proses transaksi pembelian Nokia oleh Microsoft selesai, produk ini akan dihapus juga. Saat itu, kita tetap bisa berpaling kepada XDA Developers dan para pengembangnya.

Kalau boleh saya meminjam bahasa koran kuning. Produk Nokia X jangan-jangan hanya produk sakit hati Stephen Elop yang secara sistematis dibuang dari daftar pengganti Ballmer tempo lalu. Karma memang menyakitkan. ūüôā

Tambahan Pemasangan untuk BlankOn Suroboyo

Tambahan Pemasangan untuk BlankOn Suroboyo

Citarasa itu berbeda tiap orang. Ini adalah versi BlankOn yang seharusnya ada menurut saya. Kalau tak setuju, tak mengapa. Kali ini saya menggunakan Root Terminal yang tersedia dengan mudah di BlankOn untuk menghindari sudo.

Pindah ke systemd Sepenuhnya

Seperti yang diberitakan, Debian akan membuang sysvinit dan pindah ke systemd pada iterasi berikutnya. Versi GNOME3 yang menjadi dasar BlankOn pun menggunakan modul yang sama. Maka, saya menggunakan inisiatif untuk mengganti saat ini juga.

Pertama-tama, pastikan akar direktori terpasang di /etc/fstab. Asumsi saya adalah sistemberkas diformat EXT4. Silakan ganti dengan format yang lainnya jika berbeda.

# cat /etc/mounts | grep ext4 >> /etc/fstab

Lalu, pasang systemd-sysv untuk menggantikan sysvinit:

# apt-get install systemd-sysv

Silakan nyalakan ulang BlankOn untuk mengaktifkan systemd. Perhatikan bahwa waktu mulai pun lebih cepat dibandingkan dengan sysvinit.

Segala Sesuatu tentang VirtualBox

Anda dapat melewati bagian ini. Saya memerlukan langkah-langkah ini karena saya menggunakan BlankOn pada VirtualBox di komputer kerja saya.

Memasang VirtualBox Guest

BlankOn menggunakan XOrg versi 1.15. Versi ini tidak didukung dengan baik oleh Virtual Box 4.3.6, versi terbaru Virtual Box saat penulisan ini. Diperlukan VirtualBox Guest Additions yang versi beta (4.3.7) untuk itu.

Pada komputer inang, unduh:

$ wget https://www.virtualbox.org/download/testcase/VBoxGuestAdditions_4.3.7-92075.iso

Selanjutnya, lakukan hal-hal berikut di BlankOn. Buka terminal di BlankOn dan lakukan. Pasang paket-paket ketergantungan.

# apt-get install dkms linux-headers-3.12-1-amd64

Entah mengapa, BlankOn juga memasang linux-image-3.9.1-amd64. Buang saja:

# apt-get remove --purge linux-image-3.9.1-amd64 # update-grub

Pada VirtualBox Anda di inang, pasang ISO yang sudah diunduh tadi ke BlankOn. Kalau benar, BlankOn akan menanyakan apakah CD yang baru dimasukkan hendak dijalankan atau tidak. Bila tak berjalan otomatis, langsung saja jalankan dari terminal.

Cari tahu dipasang ke direktori mana:

# mount | grep sr0

Pada kasus saya, saya pindah ke direktori berikut:

# cd /media/jp/VBOXADDITIONS_4.3.7_92080

Lalu, pasang VirtualBox Guest Additions:

# ./VBoxLinuxAdditions.run

Tunggu beberapa saat dan nyalakan kembali BlankOn.

Menambahkan Pengguna ke Grup vboxsf

Agar dapat mengakses direktori-direktori yang dibagi-pakai oleh VirtualBox, pengguna harus tergabung dalam grup vboxsf. Untuk menambahkan pengguna tersebut:

# adduser jp vboxsf

Keluar dari sesi BlankOn dan masuk kembali.

Memasang SSH

Saya bingung mengapa dewasa ini SSH tidak dipasang secara otomatis.

# apt-get install ssh

Dan, SSH pun terpasang.

Memasang Peluncur Aplikasi

Peluncur aplikasi KDE menggunakan KRunner. GNOME Shell menggunakan peluncur internal. Namun, sayangnya Manokwari tidak ada peluncur aplikasi.

Untungnya, ada aplikasi pihak ketiga. Ada GNOME Do yang menggunakan Mono. Ada Synapse yang biasa digunakan oleh BlankOn Pattimura dan pendahulunya. Ada Kupfer yang juga ringan. Terakhir, yang paling ringan dari itu semua: dmenu.

Saya tertarik pada Kupfer, namun untuk sementara ini saya memasang Synapse saja:

# apt-get install synapse

Sementara ini baru itu saja yang saya tambahkan.

WhatsApps and beyond

WhatsApps and beyond

No Ads! No Games! No Gimmicks! — Brian Acton, CEO WhatsApp

Tidak ada iklan, tidak ada permainan, dan tidak ada tambahan apa pun. WhatsApps memiliki filosofi untuk tetap pada fitrahnya: penyedia komunikasi langsung. Semoga nanti tetap demikian setelah dibeli Facebook.

Four Numbers That Explain Why Facebook Acquired WhatsAppWhatsApp Co-Founders Jan Koum and Brian Acton Earlier today, Facebook announced its acquisition of WhatsApp for $16 billion. It’s a spectacular milestone for the company’s co-founders Jan Koum and Brian Acton, and their remarkable team. From the moment they opened the doors of WhatsApp, Jan and Brian wanted a different kind of company.
via Tumblr

 

Memasang BlankOn Suroboyo

Memasang BlankOn Suroboyo

BlankOn Suroboyo sudah rilis dan ada di Kambing pada hari kasih sayang. Saya pun mencoba memasang di Virtual Box. Kebetulan laptop saya tidak saya pegang, belum bisa pasang di sana.

Tampilan Depan Pemasangan

Tampilan Depan Pemasangan

Tampilan depan dibuat baku dengan bahasa Inggris. Nampaknya BlankOn juga bervisi untuk dapat digunakan oleh dunia. Tapi, untuk kasus saya, saya ubah menjadi Bahasa Indonesia. Setelah itu pilih Pasang BlankOn.

Laman Selamat Datang dalam pemasangan BlankOn 9.0

Laman Selamat Datang dalam pemasangan BlankOn 9.0

Pada langkah berikutnya, ada pemilihan ruang penyimpan yang menjadi target pemasangan. Berhubung saya menggunakan satu ruang penyimpan saja, saya langsung pilih itu saja.

Target Pemasangan

Target Pemasangan, yakni ruang penyimpan untuk memasang BlankOn.

Selanjutnya akan masuk ke laman Personalisasi. Sayangnya, ada beberapa yang saya perlu komentari di laman ini.

Berikut yang saya hendak komentari:

  1. Nama Komputer hanya boleh huruf kecil. Padahal RFC 1123 bagian 2.1, adendum dari RFC 952, menyatakan bahwa Nama Komputer boleh alfanumerik (angka dan huruf) dan simbol “-“. Seharusnya, “rajagukguk-blankon” sebuah nama yang valid.
  2. Sandi hanya diperbolehkan kombinasi alfanumerik. Untuk saat ini, praktik penggunaan sandi dengan menggunakan karakter-karakter non-alfanumerik seperti “-_# &^%!~`” adalah lumrah. Sistem pun dapat menyimpan karakter-karakter tersebut.

Untuk mengatasi hal ini, saya menggunakan Nama Komputer sementara, “rajaon”, dan sandi yang alfanumerik. Toh, nanti setelah selesai saya bisa mengganti keduanya.

Ringkasan hasil konfigurasi

Ringkasan hasil konfigurasi sebelum pemasangan dimulai.

Pilih “BERIKUTNYA” untuk lanjut dan memasang BlankOn Suroboyo. Saya suka sekali tampilan pemasangan ini, sederhana dan cepat. Saya hanya mengalokasikan memori 512MB ke sistem operasi ini. Lumayanlah, ini cukup untuk nantinya dicoba ke komputer-komputer tua yang sering disumbangkan untuk amal.

Proses pemasangan

Pemasangan berlangsung dan saya bisa lanjut.

Biasanya di sini ada salindia tentang fitur-fitur sistem operasi. Kali ini aplikasi pemasangan BlankOn Suroboyo hanya memperlihatkan perkembangan proses pemasangan sistem. Apakah ini untuk menurunkan kebutuhan memori? Ya, tak penting juga, sih. Toh, biasanya saat proses pemasangan kita melakukan kegiatan lain.

Selesai

Selesai pemasangan

Untuk masuk ke sistem baru pilih “Jalankan ulang komputer dan gunakan sistem baru”.

Tampilan Selamat Datang BlankOn Suroboyo 9.0

Tampilan Selamat Datang BlankOn Suroboyo 9.0

BlankOn Suroboyo menyediakan dua sesi secara baku:

  • Sesi BlankOn
  • Sesi GNOME

Secara baku, menggunakan sesi BlankOn.

Klik pada tombol di samping untuk memilih sesi. Normalnya ini tak perlu dilakukan.

Klik pada tombol di samping untuk memilih sesi. Normalnya ini tak perlu dilakukan.

Ini tampilan Destop.

Kali ini saya sedang libur, sehingga saya punya waktu untuk melihat parade aplikasi yang ada di BlankOn. Aplikasi terlihat menyatu dengan tematik. Saya mau bilang satu kata untuk GeoBlankOn: KEREN! [Sengaja ditebalkan dan dimiringkan untuk menunjukkan kekaguman yang saya miliki untuk para pengembang BlankOn]

Omong-omong, skrinsut ini diambil dari GIMP yang ada di BlankOn Suroboyo. Lalu, berkas-berkas ditransfer ke komputer dengan menggunakan SFTP dari Peramban Berkas. Cukup intuitif bagi yang mau mencoba.

Beberapa catatan yang saya lakukan setelah sebentar mencoba BlankOn:

  1. Synaptic tidak ada. Synaptic memiliki fitur untuk membuat berkas teks yang berisi berkas-berkas yang perlu diunduh untuk memasang suatu aplikasi. Fitur daftar unduhan ini perlu agar dapat mengunduh berkas-berkas paket Debian yang diperlukan dari komputer lain (Warnet misalnya). Kalau Warsi menyediakan fitur ini, saya dan banyak orang yang punya koneksi terbatas sangat berterima kasih.
  2. Dokumentasi penggunaan aplikasi belum tersedia. Biasanya saya memberitahukan kepada rekan-rekan untuk membaca dokumentasi yang bagus tersebut. Namun, kali ini BlankOn Suroboyo belum memilikinya.
  3. Tidak ada pemulai aplikasi (runner). Fitur ini sangat diperlukan untuk memulai aplikasi tanpa harus dari menu. Yah, memang ini untuk pengguna lanjutan. Tapi, ini membuat kerja lebih cepat.
  4. Manokwari sepertinya masih belum mengimplementasi Pintasan papan ketik. Saya masih harus menggunakan tetikus untuk mengakses menu. Alangkah baiknya bila bisa menggunakan pintasan papan ketik seperti beberapa versi sebelum Suroboyo.
  5. Tematik yang streamlined sangat solid, nampak sekali bahwa pengembang BlankOn menggunakan waktu mereka untuk membuat sebuah produk solid. Kudos untuk pengembang BlankOn.
  6. Saya menjalankan GIMP dan menjalankan aplikasi yang saya tangkap secara bersamaan hanya dengan komputer 512MB. WOW!

Yak, begitulah kira-kira. Saya menyarankan untuk para pengguna pemula untuk masuk ke BlankOn Suroboyo. Saya sendiri mau mengambil laptop dan memasang BlankOn 9. ūüôā

Era Monolitik

Era Monolitik

Sejujurnya, saya sedih melihat perkembangan GNU/Linux saat ini. SABDL mengumumkan bahwa Ubuntu akan pindah dari Upstart ke SystemD. Hal ini mengingat keputusan Debian yang memutuskan untuk pindah dari SystemV ke SystemD.

Bug#727708: init system other points, and conclusionWe seem to be at the point of the process where at least those of us who did early investigation are stating conclusions. I think I have enough information to state mine, so will attempt to do so here.
via Debian

Tulisan Russ Allbery memberikan pemaparan jelas mengenai alasan pemilihan ini. Dari tiga kandidat pengganti SystemV (OpenRC, Upstart, Systemd), SystemD menang di atas segalanya. Integrasi yang ketat dengan kernel Linux adalah salah satu alasannya.

Gentoo Forums :: View topic – The Politics of systemdepisode #299) was giving some of his reasons why having Debian choose to go with systemd was a good thing for Linux. Personally, I felt that all of the reasons he gave were pretty weak and did not require systemd (they included mainly cgroups & socket activation).
via Gentoo

Sebagai pengguna Gentoo dan pengguna sistem GNU/Linux yang lama, saya juga merasakan sentimen yang sama dengan pengguna Gentoo yang lain. SystemD memaksakan kehendak untuk menggantikan semua hal. Dalam beberapa tahun ini, akan ada banyak sistem yang takkan jalan tanpa SystemD.

Ini lebih kecenderungan politik dan sungguh bertentangan dengan falsafah UNIX. UNIX memperkenalkan disain yang modular. Ada lapisan-lapisan yang bekerja dengan lapisannya sendiri. Satu aplikasi berjalan untuk menunaikan tugas spesifik saja dan ia mengerjakan tugas tersebut dengan sangat baik.

Untuk mengerti falsafah ini, kita mesti mengerti politik divide et impera yang dianut VOC dulu. Saya dulu mengerti tentang falsafah ini ketika belajar Pemrograman Fungsional dengan matematika Lambda-nya. Waktu itu saya belajar Haskell.

Inti dari falsafah ini sebagai berikut: sebuah masalah dipecah-pecah menjadi banyak permasalahan yang kecil. Masalah yang kecil tersebut kemudian dipecah kembali. Hal ini dilakukan hingga unit terkecil masalah tersebut sudah mencapai titik yang dapat diselesaikan langsung.

Itu sebabnya, di dalam UNIX (dan sistem-sistem yang menirunya), ada banyak aplikasi perkakas kecil yang bisa membaca pipa aplikasi dan meneruskan keluarannya ke pipa perintah selanjutnya. Jadi, setiap aplikasi kecil tersebut saling terisolasi.

Fungsionalitas yang terisolasi ini membuat uji unit lebih mudah. Faktor ketergantungan pihak eksternal pun minim. Untuk mencari tahu kesalahan ada di mana, isolasi ini membuat kita bisa mendeteksi di mana letak kesalahan yang menyebabkan proses terhenti.

Tentu, zaman sudah berganti. Mungkin banyak orang yang sudah tak paham lagi tentang isolasi masalah. Mereka pikir sebuah aplikasi pada suatu lapisan harus tahu lapisan di atasnya atau di bawahnya.

Contohnya, saya melihat banyak orang yang melakukan optimasi jaringan bahkan sampai berusaha menggabungkan lapisan 3 dan 4, misalnya. Ini demi pengaplikasian jaringan paket berbasis konten. Kompleksitas pun bertambah.

Disain yang seperti ini akan rawan galat. Galat ini tak dapat ditelusuri dengan mudah karena banyak faktor yang mempengaruhi. Akhirnya, galat ini yang mungkin mendekatkan kita kepada Tuhan YME.

SystemD pun nampaknya akan menggantikan banyak hal. Ia telah menggantikan UDEV dan beberapa skrip non-init. BlankOn 9 Suroboyo pun sudah terkena dampaknya. Sudah lama terindikasi memang bahwa mau tak mau dunia harus mengadopsi SystemD!

Saya hanya memprediksi, seperti halnya Linus yang menyesali keputusannya membuat kernel monolitik, suatu saat perancang sistem GNU/Linux akan menyesali keputusan saat ini. SystemD akan berkembang menjadi bloated seperti Windows.

Disainnya yang monolitik hendak menggantikan banyak fungsi membuat ia menjadi kompleks. Separasi yang tidak jelas menjadikan disain menjadi amburadul. Sistem yang kompleks sungguh rawan ketergantungan antar komponen-komponennya sendiri.

Bila saatnya itu tiba, maka akan sulit rasanya mematikan sebuah fitur yang tak perlu. Bisa jadi fitur tersebut menjadi sebuah ketergantungan siklik dengan fungsi yang lain. Ah, malam ini panjang dan menyedihkan. ūüôĀ

Met Valentin bagi yang merayakan.

Kabar Tak Sedap Peramban Dewasa Ini

Kabar Tak Sedap Peramban Dewasa Ini

Ekstensi Google Chrome yang Nakal

Tak lama ini ada kabar tak sedap mengenai ekstensi Google Chrome yang bisa beralih kepemilikan. Seseorang dapat menjual kepemilikan ekstensinya ke orang lain. Masalah pun muncul karena pemilik yang baru memodifikasi ekstensi yang baru dengan Malware dan pencatat rekam jejak pengguna ekstensi tersebut.

Bayangkan, sebuah ekstensi yang kita miliki pada mulanya terpercaya. Setelah beberapa lama, ekstensi tersebut populer. Kemudian seseorang tak dikenal membelinya. Ekstensi tersebut pun oleh si pemilik dipakai untuk membajak akun Google, Yahoo!, dan layanan-layanan populer lainnya.

Apakah ini karena silap mata? Menurut pengakuan salah seorang pengembang ekstensi Google Chrome, ia sebenarnya pun tidak tahu. Ia hanya tahu seseorang tak dikenal mendekatinya menawarkan 4 digit uang US$.

Siapa yang tak tergiur? Namun, celakanya ia terkena tipu. Ekstensi yang ia kemudian transfer ke seseorang tak dikenal ternyata diinjeksi dengan kode-kode yang tidak benar.

Ini baru satu kasus, bagaimana dengan kasus yang lainnya? Ada berapa ekstensi yang sudah seperti ini?

Iklan di Firefox dan Potensi Konflik

Di beberapa tahun yang lalu, saya pernah menjumpai sebuah iklan yang menyesuaikan diri dengan tampilan Facebook saya. Padahal, situs yang saya akses adalah sebuah WIKI permainan. Memang, di jendela yang lain saya sedang mengakses Facebook.

Dari situ, saya langsung tidak percaya dengan periklanan di Internet. Apalagi, seringkali iklan ditumpangi oleh malware. Pencurian data yang dilakukan oleh perusahaan pemasang iklan dapat berakibat fatal. Data pribadi pengguna pun dapat dijual kepada perusahaan pendulang data.

my Directory Tile

My own Directory Tiles.

Nah, karena itu, berita terbaru dari Mozilla Firefox sangat mencemaskan. Saat ini, Directory Tiles berisi situs-situs yang biasa dikunjungi oleh pengguna. Namun, pada edisi mendatang dari Firefox akan ada konten dalam Directory Tiles yang berisi konten berbayar alias iklan.

Dalam tulisan lebih lanjut dikemukakan bahwa presiden IAB (Interactive Advertising Bureau) mengundang Mozilla untuk berbicara dalam acaranya. Dalam acara itu, Mozilla mengatakan bahwa IAB dan Mozilla sama-sama ingin melindungi kepentingan penggunanya.

Dalam hal ini saya cemas! Pengguna Mozilla Firefox adalah pengguna Internet, alias orang biasa. Pengguna IAB, sesuai dengan tujuannya, adalah Pengiklan.

Mari saya jelaskan. Pengguna Internet pada dasarnya terdiri atas peselancar Internet dan penerbit konten Internet. Saat ini, Mozilla Firefox sedang menargetkan pengguna Internet yang menerbitkan konten Internet. Masalahnya, penerbit konten menginginkan keuntungan lebih dan banyak dari mereka yang menggunakan cara-cara yang tidak halal!

Dalam hal ini kecemasan saya meningkat. Kalau misalnya Mozilla jadi bergantung kepada pengiklan (apa pun istilahnya sekarang), tidakkah ia akan menjadi bias? Bukankah kita, pengguna peselancar Internet, yang akan dirugikan?

Mungkin Anda tidak mengerti tentang pentingnya privasi dan bias penyedia layanan. Untuk contoh lokal, Anda dapat melihat dari banyaknya SMS Penipuan, SMS Iklan, dan SMS yang menawarkan asuransi/pinjaman. Semua ini tidak kita kehendaki dan ibarat kata main masuk selonong saja tanpa minta izin.

Pertanyaan saya, mengapa penyedia layanan (perusahaan telekomunikasi) tidak secara aktif membasmi hal ini?

Bayangkan jika itu terjadi dalam skala internasional yakni ketika Mozilla sebagai penyedia layanan pengakses Internet sudah bergantung pada satu pihak sebagai sumber dananya. Sungguh sangat disayangkan.

My Opera akan Ditutup

Opera menawarkan layanan komunitas yang berisi surel, blog, dan forum. Layanan ini dilabelkan sebagai My Opera. Opera memutuskan pada 1 Maret 2014, layanan ini akan ditutup.

Saya, sih, sedih. Apalagi, banyak komunitas yang luar biasa ada di My Opera. Tapi, nampaknya Opera kehilangan banyak pasar sehingga ingin mengencangkan ikat pinggang. Saya saja beralih dari Opera semenjak ia menggunakan WebKit sebagai mesinnya.

Memang sangat disayangkan. Sebagai pencipta tren di peramban, Opera seharusnya bisa menanjak. Namun, nampaknya ia sudah mulai kehilangan sentuhan dan sudah mulai terengah-engah dalam berinovasi. Yah, semoga saja peramban ini tidak tutup.

Memasang NewGenLib, Sebuah ILS Lainnya
NewGenLib

Memasang NewGenLib, Sebuah ILS Lainnya

NewGenLib banyak juga disebutkan dalam referensi mencari sistem perpustakaan terintegrasi (ILS). ILS ini sepertinya dibuat untuk berjalan pada sistem operasi Windows. Hal ini membuat NextGenLib tidak begitu memperhatikan keamanan.

Banyak kode yang ditulis langsung (hardcoded) sehingga menyebabkan kustomisasi agak sulit. Berkas instalasi memasang ke banyak direktori di /usr. Sejujurnya, saya tidak ingin Anda membaca panduan instalasi perangkat ini di mana pun. Dari semua yang saya temui, tidak ada satu pun yang cukup aman.

Lalu mengapa saya tetap menulis ini? Karena ILS ini sangat menarik. Setelah mencobanya, saya melihat fitur-fitur yang baik. Selain itu, pemasangan cukup mudah dibandingkan ILS yang lain. Itu sebabnya, saya akan mencoba memasang NewGenLib seaman mungkin.

Kali ini saya menggunakan BlankOn Suroboyo.

Pasang Berkas-berkas yang Dibutuhkan

NextGenLib hanya membutuh Java dan PostgreSQL. Tomcat, SOLr, dan lainnya sudah terbundel.

$ sudo apt-get install openjdk-7-jdk postgresql postgresql-contrib

Saya juga memasang unzip untuk mengekstraksi berkas pasangan. (Opsional)

$ sudo apt-get install unzip

Buat Basisdata

Buat pengguna.

$ sudo -u postgres createuser ngl -P

Masukkan sandi Anda. Lalu, selanjutnya buat basisdata.

$ sudo -u postgres createdb ngldb -O ngl

Silakan Anda ganti ngl dan ngldb dengan penamaan yang sesuai selera.

Unduh Berkas Pemasangan

Unduh NewGenLib, ekstraksi, dan masuk ke direktori.

$ wget http://www.verussolutions.biz/downloadNGL.php -O InstallNGL3.0.zip
$ unzip InstallNGL3.0.zip
$ cd InstallNGL3.0

Selanjutnya saya akan membahas kustomisasi pemasangan.

Kustomisasi Berkas Konfigurasi Pemasangan

Ada dua yang saya hendak ubah:

  • apache-ant-1.8.1/bin/config.ini
  • Berkas-berkas yang berisi direktori data

Kedua berkas ini akan dibahas lebih lanjut.

Berkas config.ini

Berkas config.ini merupakan konfigurasi utama, berikut saya tulis seluruh isi berkas tersebut. Anda bisa gunakan penyunting favorit Anda, saya menggunakan cat saja.

$ cat > apache-ant-1.8.1/bin/config.ini << EOF
installation.directory=/opt/NGL3
ServerIPAddress=localhost
DatabasePort=5432
DefaultDatabase=ngldb
DatabaseUserName=ngl
DatabasePassword=passwd
source.location=/home/user/InstallNGL3.0
restore.database=blank
NewGenLib.Database=ngldb
NewGenLib.Database.UserName=ngl
NewGenLib.Database.Password=passwd123
VERUS.SUBSCRIPTION.ID=""
VERUS.VERIFICATION.CODE=""
EOF

Saya akan menaruh instalasi NextGenLib di /opt/ngl agar sesuai dengan FHS. Ganti lokasi kode sumber di tempat di mana Anda mengekstrasi kode sumber. Misalnya, /tmp/InstallNGL3.0. Yang lainnya berhubung dengan basisdata, pengguna basisdata, dan sandinya.

Sekali lagi, hanya untuk tutorial ini saja saya tulis sandinya passwd123. Anda harus menggunakan sandi yang aman untuk instalasi Anda! Jangan ikut menggunakan sandi yang aneh.

Berkas-berkas Pemasangan Direktori Data

Saya hendak mengganti pemasangan data NextGenLib dari /usr ke /srv/ngl agar lebih rapi. Untuk itu, saya perlu mengubah skrip Installation.xml agar sesuai dengan itu.

$ sed -i.bak "s/\/usr/\/srv\/ngl/g" apache-ant-1.8.1/bin/Installation.xml
$ sed -i.bak "s/\/usr/\/srv\/ngl/g" apache-ant-1.8.1/bin/apache-ant-1.8.1/bin/migration303.xml
$ sed -i.bak "s/\/usr/\/srv\/ngl/g" apache-ant-1.8.1/bin/migration303.xml 
$ sed -i.bak "s/\/usr/\/srv\/ngl/g" apache-ant-1.8.1/bin/Migration.xml
$ sed -i.bak "s/\/usr/\/srv\/ngl/g" upgrade303/migration303.xml

Demikian.

Menjalankan Pemasangan

Saatnya menjalankan pemasangan.

$ export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
$ sudo ./Install.sh

Membetulkan Perizinan

Buat pengguna yang akan menjalankan NextGenLib.

$ sudo adduser ngl

Ya, saya memang kurang kreatif dalam memberi nama. Selanjutnya ubah letak direktori data:

$ sudo sed -i.bak "s/\/usr/\/srv\/ngl/g" /opt/NGL3/apache-tomcat-6.0.32/webapps/desktop/NewGenLibDesktopFiles/SystemFiles/Env_Var.txt
$ sudo sed -i.bak "s/\/usr/\/srv\/ngl/g" /opt/NGL3/apache-tomcat-6.0.32/webapps/desktop/NewGenLibDesktopFiles/SystemFiles/ENV_VAR.txt 
$ sudo sed -i.bak "s/\/usr/\/srv\/ngl/g" /opt/NGL3/apache-tomcat-6.0.32/webapps/desktop/Launch.jsp

Satu konfigurasi lagi:

$ sudo sed -i.bak "s/\/usr/\/srv\/ngl/g" /srv/ngl/NewGenLibFiles/SystemFiles/ENV_VAR.txt

Ubah perizinan:

$ sudo chown -R ngl:ngl /opt/NGL3 /srv/ngl
$ sudo chmod +x /opt/NGL3/apache-tomcat-6.0.32/bin/*.sh

Selanjutnya coba jalankan NextGenLib.

Menjalankan NextGenLib

Saya kebetulan menjalankan NextGenLib pada VirtualBox. Hal ini menyebabkan saya harus membuat port lain selain 8080. Kebetulan port tersebut digunakan oleh aplikasi lain. NextGenLib membaca port yang ada di klien sehingga port di sistem harus sama dengan port yang diteruskan.

Untuk itu, saya lakukan langkah opsional ini.

$ sudo -u ngl sed -i.bak "s/8080/18080/g" /srv/ngl/NewGenLibFiles/SystemFiles/ENV_VAR.txt
$ sudo -u ngl sed -i.bak "s/8080/18080/g" /opt/NGL3/apache-tomcat-6.0.32/conf/server.xml

Perintah tersebut mengganti seluruh port yang ada dari 8080 menjadi 18080.

Saya tidak berhasil menemukan konfigurasi yang membuat /usr/NextGenFiles sebagai pusat konfigurasi. Sepertinya dia menulis langsung di aplikasi langsung (hardcoded). Terpaksa sebagai jalan tengah dibuatkan tautan ke direktori tersebut.

$ sudo ln -sf /srv/ngl/NewGenLibFiles/ /usr

Untuk mengubah itu, perlu melakukan kompilasi. Ini menambah kompleksitas dan membuat NextGenLib tidak begitu seksi lagi. Apalagi ini untuk orang awam.

Untuk menguji apakah ini sudah jalan, silakan jalankan secara manual.

$ sudo -u ngl /opt/NGL3/apache-tomcat-6.0.32/bin/catalina.sh run

Kalau sudah bisa, silakan pergi ke peramban dan akses http://127.0.0.1:18080/newgenlibctxt/ untuk melihat OPAC.

NextGenLib OPAC

NextGenLib OPAC

Saya senang dengan fitur NextGenLib. Dia dapat menjalankan aplikasi klien dengan menggunakan Java. Karena pemasangannya tidak terlalu rumit seperti yang sudah-sudah, saya akan memberikan bonus: Dasbor.

Dasbor Klien

Untuk dapat mengakses dasbor klien, Anda dapat mengarahkan peramban Anda ke http://localhost:18080/newgenlibctxt/LaunchApplication untuk mendapatkan aplikasi  klien berbasis Java.

Awalnya Anda akan ditanyakan alamat peladen.

Java Client asking to select the host.

Java Client asking to select the host.

Saya memasukkan localhost karena memang berjalan di VirtualBox. Anda bisa masukkan alamat FQDN peladen Anda bila Anda memasang di sebuah mesin terdedikasi.

Ketika berhasil terhubung, aplikasi akan menanyakan pengguna dan sandi masuknya.

Java Client asking for login

Java Client asking for login

NewGenLib secara baku memulai dengan pengguna “1” dan bersandikan “abc“. Bilamana aplikasi tidak bisa masuk, kemungkinan ada perubahan data saat pemasangan. Saya juga awalnya tidak bisa masuk. Saya akali dengan mengganti sandi pengguna “1” dengan “test“. Caranya:

$ psql -d ngldb -h localhost -U ngl -c "update patron set user_password = md5('test');"

Ini SQL mengubah sandi semua pengguna di basisdata. Untungnya, baru ada satu pengguna di basisdata.

Kalau sudah bisa masuk, maka akan dibawa ke dasbor.

Java client dashboard

Java client dashboard

Saya akui, dasbor NewGenLib sangat baik dan cukup mudah untuk dilihat. Yang pasti, dengan bermodalkan pemrograman berbasis Java, kita dapat mengubah tampilan menjadi lebih baik.

Omong-omong, administrasi pun dapat diakses dari laman situs. Namun, klien Java menyediakan halaman yang lebih intuitif menurut sekilas pemandangan saya.

Yak, kira-kira begitulah.

Memasang Evergreen ILS
Evergreen Logo

Memasang Evergreen ILS

Kali ini saya akan membahas Evergreen, sebuah alternatif ILS lainnya. Evergreen menyediakan klien berbasis Windoze dan GNU/Linux. Yang saya suka dari Evergreen adalah dia menggunakan PostgreSQL.

Pemasangan ILS ini agak kotor karena banyak melakukan kompilasi. Namun, bila menggunakan instruksi yang disediakan cukup mudah dilakukan. Kompleksitas dari Evergreen ini menyebabkan dia sangat cocok untuk sebuah sistem yang sangat besar.

Karena galat Apache pada BlankOn, saya pun kali ini menggunakan GNU/Linux Debian Wheezy.

Pasang OpenSRF

Ada beberapa langkah besar yang harus dilakukan untuk memasang OpenSRF:

  1. Mengompilasi OpenSRF.
  2. Menyiapkan antarmuka tambahan.
  3. Mengonfigurasi ejabberd dan menambahkan pengguna.
  4. Mengonfigurasi OpenSRF untuk terhubung ke ejabberd.
  5. Memulai OpenSRF.

Semua ini sesuai dengan panduan tertulis, Anda cukup mengikuti langkah-langkah berikut.

Mengompilasi OpenSRF

Yang pertama yang harus dilakukan adalah memasang pustaka OpenSRF. Untuk itu perlu memasang paket-paket yang dibutuhkan

$ sudo apt-get install build-essential

Unduh dan buka

$ wget http://evergreen-ils.org/downloads/opensrf-2.2.1.tar.gz
$ tar xvfz opensrf-2.2.1.tar.gz
$ cd opensrf-2.2.1

Untuk memulai membangun OpenSRF perlu memasang paket-paket ketergantungan. Caranya dengan menjalankan perintah:

$ sudo make -f src/extras/Makefile.install debian-wheezy

Ambil kopi, mandi pagi, dan sapa keluarga Anda sambil menunggu kompilasi ini selesai. Setelah selesai, konfigurasi, kompilasi, dan pasang:

$ ./configure --prefix=/opt/openils --disable-static
$ make
$ sudo make install

Berbeda dengan instruksi, saya menaruh di direktori /opt/openils dari pada /openils agar sesuai dengan standar FHS.

Tambahkan pengguna sistem yang akan menjalankan OpenSRF.

$ sudo useradd -m -s /bin/bash opensrf
$ echo "export PATH=\$PATH:/opt/openils/bin" | sudo tee -a /home/opensrf/.bashrc
$ sudo passwd opensrf

Buat seluruh OpenSRF menjadi milik pengguna opensrf.

$ sudo chown -R opensrf:opensrf /opt/openils/

Daftarkan direktori pustaka OpenSRF ke sistem operasi.

$ echo /opt/openils/lib | sudo tee -a /etc/ld.so.conf.d/opensrf.conf
$ sudo ldconfig

Selanjutnya adalah menambahkan 2 antarmuka jaringan.

Konfigurasi Antarmuka Jaringan Tambahan

OpenSRF membutuhkan ejabberd dengan dua IP yang berbeda. Yang pertama untuk komunikasi publik dan yang kedua untuk komunikasi pribadi. Untuk sistem sendiri, kita dapat menambahkan dua antarmuka loopback.

Caranya adalah dengan menambahkan baris-baris berikut di /etc/network/interfaces dengan menggunakan penyunting favorit Anda.

auto lo:10 lo:20
iface lo:10 inet static
        address 127.0.1.2
        netmask 255.0.0.0

iface lo:20 inet static
        address 127.0.1.3
        netmask 255.0.0.0

Lalu, nyalakan kedua antarmuka:

$ sudo ifup lo:20 lo:10

Masukkan alamat penamaan palsu ke /etc/hosts dengan menggunakan penyunting favorit Anda.

127.0.1.2       public.localhost        public
127.0.1.3       private.localhost       private

Selanjutnya adalah mengonfigurasi peladen ejabberd.

Konfigurasi ejabberd

Evergreen menggunakan protokol XMPP sebagai alat komunikasi. Peladen ejabberd digunakan sebagai penyedia protokol tersebut. Anda dapat juga membuat gTalk Anda sendiri berbasis aplikasi ini. Tapi, itu di luar cakupan tulisan ini.

Sebelum mengonfigurasi, matikan ejabberd terlebih dahulu:

$ sudo invoke-rc.d ejabberd stop

Buka konfigurasi /etc/ejabberd/ejabberd.cfg dan ubah/tambahkan baris-baris berikut:

  • Tambahkan domain publik dan pribadi yang telah didefinisikan tadi. Contohnya saya mengubah baris ke-61 dari:
    {hosts, ["localhost"]}.
    menjadi:
    {hosts, ["localhost", "private.localhost", "public.localhost"]}.
  • Mematikan mod_offline pada baris ke-584.
  • Menambah max_user_sessions dari 10 menjadi 10000 pada baris ke-460.
  • Mengubah seluruh max_stanza_size menjadi 2000000 pada baris ke-118 dan ke-136.
  • Mengubah seluruh maxrate menjadi 50000 pada baris ke-409 dan baris ke-414.

Setelah selesai mengubah semua itu, hidupkan kembali ejabberd:

$ sudo invoke-rc.d ejabberd start

Selanjutnya membuat pengguna ejabber.

Konfigurasi Pengguna Ejabberd

Seperti yang sudah kita buat sebelumnya, Evergreen menggunakan dua saluran (yang ditandai dengan dua host yang berbeda) dalam berkomunikasi. Pada contoh kali ini, kita membuat saluran “public.localhost” untuk komunikasi publik dan “private.localhost” untuk saluran pribadi.

Setiap saluran harus memiliki dua pengguna yang berfungsi sebagai:

router
Pengguna ini digunakan untuk menjadi broker untuk setiap layanan OpenSPF. Itu sebabnya, nama pengguna ini tidak dapat diganti dan harus bernama router. (hardcoded)
opensrf
Pengguna ini digunakan oleh setiap klien OpenSRF untuk terhubung ke OpenSRF. Nama pengguna dapat diganti dengan yang lain.

 Karena masing-masing saluran ada dua pengguna, maka dibuat empat pengguna:

$ sudo ejabberdctl register router private.localhost passwd123
$ sudo ejabberdctl register opensrf private.localhost passwd123
$ sudo ejabberdctl register router public.localhost passwd123
$ sudo ejabberdctl register opensrf public.localhost passwd123

Jangan lupa mengganti “passwd123” dengan sandi yang aman dan berbeda satu sama lain.

Konfigurasi OpenSRF

Terakhir untuk OpenSRF adalah dengan mengonfigurasi sistem. Masuk sebagai pengguna opensrf dan pergi ke direktori konfigurasi. Lalu, salin contoh konfigurasi menjadi konfigurasi kita.

$ sudo su - opensrf
$ cd /opt/openils/etc
$ cp opensrf_core.xml.example opensrf_core.xml
$ cp opensrf.xml.example opensrf.xml

Berhubung dalam artikel ini tidak diubah nama pengguna, tetap menggunakan opensrf, tidak ada yang perlu diubah. Namun, bila Anda mengubah nama pengguna, ganti nama pengguna opensrf menjadi nama pengguna yang Anda tentukan di opensrf_core.xml.

Buka opensrf_core.xml dengan penyunting favorit Anda untuk mengganti nama pengguna (bila bukan opensrf) dan sandi yang telah kita buat sebelum ini. Contohnya:

  • Mengganti nama pengguna pada baris ke-37 dan sandinya pada baris ke-38 untuk pengguna saluran public.localhost.
     
    private.localhost 
    opensrf
    passwd123
    5222
    
  • Mengganti nama pengguna pada baris ke-86 dan sandi pada baris ke-87 untuk pengguna saluran
    
    public.localhost
    opensrf
    passwd123
    5222
    
  • Mengganti sandi pada baris ke-111 untuk router saluran public.localhost.
    
      public.localhost
      5222
      /opt/openils/var/sock/unix_sock 
      router 
      passwd123
      router
      10
      5 
    
  • Mengganti sandi pada baris ke-133¬†untuk router saluran public.localhost.
    
      private.localhost
      5222
      router
      passwd123
      router
      10
      5
    

Selanjutnya, salin srfsh.xml.example ke direktori rumah opensrf. Konfigurasi ini diperlukan agar pengguna opensrf dapat menjalankan konsol OpenSRF, srfsh. Anda dapat menyalin srfsh ke pengguna Anda sendiri bila ingin menjalankan srfsh dari pengguna tersebut. Jangan lupa sesuaikan nama pengguna dan sandi yang diperlukan.

$ cp srfsh.xml.example ~/.srfsh.xml

Buka ~/.srfsh.xml dalam penyunting favorit Anda, ubah nama pengguna (jika diubah) dan sandi. Berikut contoh berkas saya:

< ?xml version="1.0">


  router
  private.localhost
  opensrf
  passwd123
  5222
  /opt/openils/var/log/srfsh.log
  4
  true

Setelah itu, kita bisa memulai OpenSRF.

Memulai OpenSRF

Setelah konfigurasi panjang yang telah kita lalui, saatnya memulai layanan OpenSRF. Untuk memulai OpenSRF, jalankan perintah berikut sebagai pengguna opensrf.

$ osrf_ctl.sh -l -a start_all

Setelah memulai, kita dapat menguji salah satu salurannya. Caranya, dengan masuk ke konsol OpenSRF (srfsh).

$ srfsh

Lalu jalankan operasi penambahan:

srfsh# request opensrf.math add 2,2

Received Data: 4

------------------------------------
Request Completed Successfully
Request Time in seconds: 0.004293
------------------------------------

Kalau benar, data yang didapatkan “4”.

Sebagai catatan, kalau Anda ada keperluan untuk mematikan OpenSRF, jalankan perintah:

$ osrf_ctl.sh -l -a stop_all

Kalau ini semua sudah dilakukan, keluar dari pengguna opensrf untuk kembali menjadi pengguna biasa. Ada hal-hal lain yang hendak dikerjakan.

Anda masih antusias? Karena ini baru memasang OpenSRF. Selanjutnya kita akan memasang basisdata PostgreSQL untuk Evergreen. Semangat!

Memasang Evergreen

Memasang Evergreen cukup dengan beberapa langkah:

  1. Memasang paket-paket yang dibutuhkan.
  2. Mengompilasi dan memasang Evergreen.
  3. Mengonfigurasi peladen Apache HTTPd.

Memasang Paket-paket yang Dibutuhkan

Unduh Evergreen, ekstraksi paket unduhan, dan masuk ke direktori kode sumber.

$ wget http://evergreen-ils.org/downloads/Evergreen-ILS-2.5.2.tar.gz
$ tar xvfz Evergreen-ILS-2.5.2.tar.gz
$ cd Evergreen-ILS-2.5.2/

Jalankan perintah yang sama seperti OpenSPF untuk memeriksa ketergantungan paket.

$ sudo make -f Open-ILS/src/extras/Makefile.install debian-wheezy

Sedikit catatan, skrip ini memasang paket-paket CPAN. Berikut beberapa pertanyaan yang saya jawab. Intinya, saya memilih KAMBING.ui.ac.id sebagai repositori CPAN berhubung fisiknya ada di ruang sebelah.

Would you like me to automatically choose some CPAN mirror
sites for you? (This means connecting to the Internet) [yes] no

Would you like to pick from the CPAN mirror list? [yes] yes

(1) Africa
(2) Asia
(3) Europe
(4) North America
(5) Oceania
(6) South America
Select your continent (or several nearby continents) [] 2

(1) China
(2) India
(3) Indonesia
(4) Iran
(5) Israel
(6) Japan
(7) Kazakhstan
(8) Pakistan
(9) Republic of Korea
(10) Singapore
(11) Taiwan
(12) Thailand
(13) Turkey
(14) Viet Nam
Select your country (or several nearby countries) [] 3

(1) http://cpan.cermin.lipi.go.id/
(2) http://cpan.mirrors.gudangteknologi.com/
(3) http://kambing.ui.ac.id/cpan/
(4) http://kartolo.sby.datautama.net.id/CPAN/
Select as many URLs as you like (by number),
put them on one line, separated by blanks, hyphenated ranges allowed
 e.g. '1 4 5' or '7 1-4 8' [] 3

Enter another URL or ENTER to quit: []

Yang terakhir saya hanya menekan tombol ENTER. Saya sengaja memisahkan setiap keterangan dan pertanyaan dengan baris kosong. Semoga ini membantu Anda.

Mengompilasi Evergreen

Saatnya mengompilasi Evergreen dengan tiga langkah:

$ PATH=/opt/openils/bin:$PATH ./configure --prefix=/opt/openils --disable-static
$ make
$ sudo make install

Seperti OpenSRF, saya memasang Evergreen di /opt/openils agar sesuai dengan FHS. Sebenarnya variabel STAFF_CLIENT_STAMP_ID tidak perlu dituliskan. Di dokumentasi disebutkan saat make install harus:

$ sudo make STAFF_CLIENT_STAMP_ID=rel_2_5_2 install

Tapi, toh, sebenarnya ia akan dipasang di tempat yang sama seperti versi yang ada. Ada atau pun tidak ada variabel itu, pasti akan ditaruh juga di tempat yang sama.

Selanjutnya membuat sebuah tautan simbolik sebagai peladen.

$ sudo ln -sf /opt/openils/var/web/xul/rel_2_5_2/server /opt/openils/var/web/xul/server

Pasang konfigurasi opensrf.xml dan opensrf_core.xml versi Evergreen.

$ sudo su opensrf -c "cp -b /opt/openils/conf/opensrf_core.xml.example /opt/openils/conf/opensrf_core.xml"
$ sudo su opensrf -c "cp -b /opt/openils/conf/opensrf.xml.example /opt/openils/conf/opensrf.xml"

Jangan lupa sunting kembali opensrf_core.xml dengan mengganti nama-nama pengguna dan sandi sesuai yang telah kita konfigurasi sebelumnya di OpenSRF.

Selanjutnya betulkan kembali kepemilikan /opt/openils menjadi milik opensrf.

$ sudo chown -R opensrf:opensrf /opt/openils

Memasang Konfigurasi Basisdata

Jalankan skrip konfigurasi basisdata

$ sudo make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-wheezy

Skrip akan memasang libdbd-postgres ke /usr/local/lib/dbd. Tambahkan pustaka tersebut ke dalam pustaka sistem.

$ echo "/usr/local/lib/dbd" | sudo tee -a /etc/ld.so.conf.d/eg.conf
$ sudo ldconfig

Buat pengguna evergreen dan isi sandinya dengan sandi yang aman.

$ sudo su postgres -c "createuser -s -P evergreen"

Selanjutnya jalankan skrip untuk mempopulasi basisdata.

$ perl Open-ILS/src/support-scripts/eg_db_config --update-config \
     --service all --create-database --create-schema --create-offline \
     --user evergreen --password passwd123 --hostname localhost --port 5432 \
     --database egdb --admin-user egadmin --admin-pass passwd123

Kalau Anda mau mencoba Evergreen dengan data contoh, tambahkan –load-all-sample sebagai parameter sehingga menjadi:

$ perl Open-ILS/src/support-scripts/eg_db_config --update-config \
     --service all --create-database --create-schema --create-offline \
     --user evergreen --password passwd123 --hostname localhost --port 5432 \
     --database egdb --admin-user egadmin --admin-pass passwd123 --load-all-sample

Pengguna evergreen sesuai dengan nama pengguna yang diciptakan oleh postgres. Sandinya mohon diganti.

Untuk inang peladen PostgreSQL memakai localhost dan port baku 5432. Basis data saya pilih egdb, bisa diganti namanya.

Untuk nama admin saya gunakan egadmin agar mudah diingat. Mohon sandinya diganti.

Pokoknya untuk setiap sandi selalu saya isi passwd123, karena ini cuma tutorial sesederhana mungkin. Namun, Anda tidak boleh melakukannya untuk mesin produksi.

Memasang Konfigurasi Apache2

Pasang konfigurasi Evergreen untuk peladen Apache2.

$ sudo cp Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/
$ sudo cp  Open-ILS/examples/apache/eg_{startup,vhost.conf} /etc/apache2/

Kalau Anda menggunakan Apache2 versi 2.4, salin konfigurasi yang ada di Open-ILS/examples/apache_24 ke direktori masing-masing.

Pasang SSL untuk Apache2

Untuk memasang SSL, buat sertifikat dengan melakukan perintah berikut:

$ sudo mkdir /etc/apache2/ssl
$ cd /etc/apache2/ssl
$ sudo openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
Generating a 2048 bit RSA private key
......................................................................+++
...+++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ID
State or Province Name (full name) [Some-State]:Jawa Barat
Locality Name (eg, city) []:Depok
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Universitas Indonesia
Organizational Unit Name (eg, section) []:PPSI
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:jp@localhost

Ganti organisasi dengan organisasi Anda. Ganti FQDN dengan alamat peladen yang benar. Dan seterusnya.

Evergreen meminta agar Apache2 dijalankan oleh pengguna opensrf, bukan www-data.

$ sudo sed -i.bak s/www-data/opensrf/g /etc/apache2/envvars
$ sudo chown -R opensrf:opensrf /var/lock/apache2

Aktifkan Evergreen dan matikan situs bawaan.

$ sudo a2dissite default
$ sudo a2ensite eg.conf

Selanjutnya menjalankan Evergreen.

Memperbaharui Konfigurasi

Jalankan perintah berikut setiap kali mengubah hierarki config.cgi.

$ sudo su opensrf -c "PATH=$PATH:/opt/openils/bin autogen.sh -u"

Menjalankan Evergreen

Jalankan ulang layanan-layanan yang diperlukan.

$ sudo invoke-rc.d ejabberd restart
$ sudo invoke-rc.d memcached restart

Jalankan ulang Evergreen.

$ sudo su opensrf -c "PATH=$PATH:/opt/openils/bin osrf_ctl.sh -l -a stop_all"
$ sudo su opensrf -c "PATH=$PATH:/opt/openils/bin osrf_ctl.sh -l -a start_all"

Jalankan ulang Apache2:

$ sudo invoke-rc.d apache2 restart

Terakhir, buka peramban dan pergi ke situs ini. Maka, akan didapati:

OPAC on Evergreen

OPAC on Evergreen

 

Bacaan Lebih Lanjut

Memasang KOHA, Sebuah Perangkat Lunak Perpustakaan Terintegrasi
KOHA Logo is a copyright of KOHA community

Memasang KOHA, Sebuah Perangkat Lunak Perpustakaan Terintegrasi

Dari diskusi artikel yang lalu, didapati bahwa ternyata Senayan SLiMS masih memilih galat atau belum memenuhi. Menurut saya, wajar saja mengingat SLiMS baru dikembangkan bila dibandingkan solusi yang lain. Saya pun mencoba mencari perangkat lunak perpustakaan terintegrasi (Integrated Library Software/ILS) yang lebih matang. Tujuan dari pencarian ini adalah untuk menyediakan alternatif lain selain SLiMS.

Menurut (Tristan M√ľller, 2011, pp. 57-78), ada tiga ILS yang memenuhi kriteria tersebut: Koha, Evergreen, dan PMB. Pemilihan ini berdasarkan kriteria komunitas yang hidup, lisensi yang benar-benar FOSS, dan fungsionalitas yang matang. Tentunya, artikel tahun 2011 ini tidak begitu valid lagi mengingat sekarang sudah tahun 2014 dan ada banyak yang sudah berkembang. Namun, artikel ini cukup menyediakan sebuah rujukan untuk menyediakan sistem ILS yang baik.

Pertama-tama, saya bingung untuk memilih versi Koha yang benar. Saya menemukan ada Koha dan LLC Koha. Ternyata, telah terjadi perpecahan sehingga menyebabkan LLC Koha terpisah dan berkelahi dengan komunitas Koha. Memang ini sering terjadi pada proyek FOSS yang sudah matang ketika hendak dikomersialisasi oleh sebagian pengembangnya.

Terlepas dari konflik, versi yang digunakan oleh LLC Koha mengadaptasi penggunaan Zebra, sebuah pengindeks koleksi data. Ini sebenarnya sebuah fitur yang sangat bagus. Selain itu, LLC Koha menyediakan banyak tambahan yang tidak mereka kontribusikan kembali kepada komunitas Koha. Oleh sebab itu, mengingat semangat FOSS dan komunitas, saya memilih menggunakan Koha versi komunitas.

Pemasangan Koha

Sebenarnya artikel pemasangan mulai dari sini. Saya menggunakan Debian Wheezy yang dibangun dari debootstrap. Terjadi kegalatan pada BlankOn Suroboyo tidak dapat memasang apache2-mpm-itk dan libapache2-mpm-itk. Artikel di situs Koha sebenarnya sudah cukup lengkap. Saya hanya mengulangi dari awal saja artikel tersebut.

Masukkan repositori Koha ke dalam sources.list BlankOn. Saya menggunakan sebuah berkas tersendiri di /etc/apt/sources.list.d/koha agar lebih bagus. Caranya:

$ echo "deb http://debian.koha-community.org/koha squeeze main" | sudo tee -a /etc/apt/sources.list.d/koha.list

Tambahkan kunci repositori Koha agar tidak muncul peringatan dari APT.

$ wget -O- http://debian.koha-community.org/koha/gpg.asc | sudo apt-key add -

Setelah itu lakukan seperti biasa.

$ sudo apt-get update

Pasang Koha:

$ sudo apt-get install koha-common mysql-server

Jangan lupa menyalakan modul rewrite.

$ sudo a2enmod rewrite
$ sudo invoke-rc.d apache2 restart

Menurut artikel pemasangan, paket koha berbeda dengan paket koha-common! Paket koha hanya menyediakan satu instans saja. Paket koha-common berisi skrip-skrip pemasangan. Ini cocok mungkin bila ada satu penyedia layanan yang hendak beramal menyediakan layanan Koha kepada banyak instansi pendidikan. #kode

Membuat Sebuah Instans KOHA

Sekarang saatnya membuat sebuah instans KOHA.

$ sudo koha-create --create-db perpus-jp

Iya, saya tahu, nama yang saya gunakan tidak kreatif. Silakan ganti dengan yang Anda mau. Pastikan namanya jangan lebih dari 16 karakter karena akan menyebabkan galat pada MySQL.

Perintah tersebut akan membuat sebuah instans di /etc/koha/sites/perpus-jp, basisdata MySQL koha_perpus-jp, dan sebuah entri Apache di /etc/apache/sites-enabled/perpus-jp.

Nama pengguna untuk masuk adalah koha_perpus-jp. Ganti perpus-jp dengan nama yang Anda sudah pilih. Untuk mengetahui sandi masuk, Anda dapat melihatnya dengan menjalankan perintah sebagai berikut:

$ sudo xmlstarlet sel -t -v 'yazgfs/config/pass' /etc/koha/sites/perpus-jp/koha-conf.xml

Setelah ini, tambahkan port 8080 ke dalam /etc/apache2/ports.conf dan hapus situs default yang diberikan oleh Debian. Berikut cara cepatnya:

$ echo "Listen 8080" | sudo tee -a /etc/apache2/ports.conf
$ sudo a2dissite default
$ sudo invoke-rc.d apache2 restart

Konfigurasi KOHA

Kalau benar, maka pergi ke port 8080 untuk masuk ke situs administratornya.

Koha Setup

Koha Setup for the very first time

Masukkan login administrator dan sandi yang sudah disebutkan tadi, dalam hal ini saya menggunakan koha_perpus-jp sebagai nama pengguna.

Koha Setup: Select Language

Koha Setup: Select Language

Ini secara baku hanya menyediakan bahasa Inggris. Untuk dapat menyediakan Bahasa Indonesia, jalankan perintah berikut:

$ cd /usr/share/koha/misc/translator
$ sudo env PERL5LIB=/usr/share/koha/lib KOHA_CONF=/etc/koha/sites/perpus-jp/koha-conf.xml perl translate install id-ID

Kalau sudah, silakan perbaharui tampilan peramban Anda (biasanya tekan tombol F5) dan Anda akan menemukan id-ID sebagai pilihan. Kalau Anda mau berkontribusi atau menyediakan penerjemahan yang lebih baik, Anda dapat melihat direktori /usr/share/koha/misc/translator/po ada beberapa berkas penerjemahan Bahasa Indonesia.

$ ls -al /usr/share/koha/misc/translator/po/id-ID-*
-rw-r--r-- 1 root root  618906 Jan 14 07:50 /usr/share/koha/misc/translator/po/id-ID-i-opac-t-prog-v-3006000.po
-rw-r--r-- 1 root root 4152287 Jan 14 07:50 /usr/share/koha/misc/translator/po/id-ID-i-staff-t-prog-v-3006000.po
-rw-r--r-- 1 root root  662882 Jan 14 07:50 /usr/share/koha/misc/translator/po/id-ID-opac-bootstrap.po
-rw-r--r-- 1 root root   24121 Jan 14 07:50 /usr/share/koha/misc/translator/po/id-ID-opac-ccsr.po
-rw-r--r-- 1 root root  196255 Jan 14 07:50 /usr/share/koha/misc/translator/po/id-ID-pref.po

Silakan ubah dan kirimkan kepada komunitas KOHA kemungkinan nama Anda akan tercatat harum pada Koha.

Selanjutnya adalah halaman pemeriksaan ketergantungan. Kebetulan pemasangan dengan menggunakan paket Debian. Jadi, seharusnya tidak ada yang bermasalah di sini.

KOHA Setup: Dependency Checking

KOHA Setup: Dependency Checking

Kemudian halaman konfigurasi Basisdata.

KOHA Setup: Database configuration

KOHA Setup: Database configuration

Oh, iya, hampir lupa, untuk maju ke halaman selanjutnya tinggal tekan “Next”.

KOHA Setup: finishing all.

KOHA Setup: After all that clicking so many “Next” button we are here.

Skrinsut selanjutnya:

KOHA Setup: Another screenshot of finishing up.

KOHA Setup: Another screenshot of finishing up.

Setelah selesai, selanjutnya akan ditampilkan pilihan untuk memasang konfigurasi dasar.

 

KOHA Setup: Finishing up.

KOHA Setup: Finishing up

Pilih “install basic configuration settings” dan kemudian Anda akan diminta pilihan untuk memilih standar baku. Kebetulan saya bukan seorang pustakawan, jadi saya memilih Marc21 saja.

KOHA Setup: Selecting MARC standard

KOHA Setup: Selecting MARC standard

Selanjutnya adalah tambahan data untuk MARC21 dan contoh-contoh data. Saya pilih semua sampel data dan saya gulung ke bawah untuk pilih “Import“.

KOHA Setup: data sample, this is the bottom view of it.

KOHA Setup: data sample, this is the bottom view of it.

Apabila tidak ada apa-apa, maka akan dibawa ke laman selanjutnya: laporan hasil pemasangan. Pilih tombol “Finish” dan selesai.

KOHA Setup: finished, FINALLY!

KOHA Setup: finished

Akhirnya, setelah semuanya ini kita dihadapkan kepada halaman login KOHA.

KOHA login page

KOHA login page

Setelah masuk ke dalam, akan diberikan dasbor.

KOHA Admin page

KOHA Admin page

Seperti yang Anda lihat, login koha_perpus-jp adalah seperti root pada GNU/Linux. Silakan konfigurasi lebih lanjut dengan menciptakan pengguna lainnya dan membuat sebuah perpustakaan selanjutnya.

Jangan lupa, halaman utama (OPAC) ada di port 80 dan admin ada di port 8080. Ini tampilan OPAC yang baru dikonfigurasi. Selamat mengubah-ubah lebih lanjut.

KOHA Frontpage

KOHA Frontpage

Masih kosong? Silakan diisi sendiri karena saya seorang admin sistem, bukan pustakawan. Saya tidak mengerti terminologi di dalam keperpustakaan. (Alasan lain untuk kemalasan)

TAMAT

 

Daftar Pustaka

Tristan M√ľller (2011). How to choose a free and open source integrated library system OCLC Systems & Services, 27(1), pp. 57-78. doi: http://dx.doi.org/10.1108/10650751111106573.^
Mencoba SLiMS Cendana 7

Mencoba SLiMS Cendana 7

SLiMS Open Source Library Management System (SLiMS) adalah sebuah manajemen koleksi perpustakaan daring. Selain keanggotaan, kode batang, dan pengaturan koleksi, SLiMS mendukung OPAC dengan pustaka Javascript terbaru. Sayangnya, dia hanya mendukung basisdata MySQL (MariaDB, Percona, dan sejenisnya), tetapi tidak PostgreSQL. Padahal, PostgreSQL lebih bagus dibandingkan dengan MySQL.

Kali ini menjelang pulang kantor saya akan memasang SLiMS dengan menggunakan sistem berbasis NGINX, PHP-FPM, dan MySQL. Ingat, kawan-kawan, ini adalah sebuah keisengan. Jangan lupa untuk riset lebih lanjut. Saya membangun sistem ini dari BlankOn 9 hasil debootstrap.

Memasang Hal-hal Dasar

Mari kita hal-hal dasar sebelum memasang Senayan

Memasang Sistem Dasar

Mari memasang aplikasi-aplikasi yang diperlukan.

$ sudo apt-get install nginx php5-fpm mysql-server php5-mysqlnd php5-gd

NGINX, PHP5-FPM, dan MySQL dipasang. Saya menggunakan MySQL Native Driver (MySQL ND) bukan libmysqlclient. Hal ini karena MySQL ND lebih efisien.(Andrea Usu, 2010) Tak lupa saya juga memasang PHP GD karena SLiMS menggunakannya untuk memroses gambar dan kode batang.

Membuat Basisdata

Lalu mari buat sebuah basisdata Senayan:

$ sudo mysql --defaults-file=/etc/mysql/debian.cnf

Debian menggunakan berkas konfigurasi untuk masuk sebagai administrator MySQL. Berkas konfigurasi ini tidak dapat diakses kecuali oleh root.

mysql> create database senayandb;
mysql> grant all privileges on senayandb.* to senayan@localhost identified by 'senayan123';
mysql> flush privileges;

Setelah itu, keluar dari klien PostgreSQL.

mysql> \q

Anda tentunya tidak akan menggunakan senayan, senayandb, dan “senayan123”, ‘kan? Anda tidak sebodoh itu, ‘kan? Gunakan nama yang lain yang lebih aman!

Memasang Senayan

Saatnya mengunduh Senayan:

$ wget http://slims.web.id/download/slims7-cendana-stable.tar.gz

Lalu memekarkan berkas tersebut:

$ tar xvfz slims7-cendana-stable.tar.gz

Entah mengapa seluruh berkas yang saya ekstraksi memiliki izin 755. Artinya, setiap berkas tersebut rawan untuk bisa dieksekusi. Sebelum diolah lebih lanjut, mari kita betulkan:

$ find slims7_cendana-slims7-cendana/ -type f -exec chmod 644 {} \;

Pindahkan ke /var/www dan buat menjadi milik www-data

$ sudo mv slims7_cendana-slims7-cendana /var/www
$ sudo chown -R 33:33 /var/www

Saatnya mengaktifkan NGINX. Buat konfigurasi situs. Saat ini saya membuat konfigurasi situs berdasarkan /etc/nginx/sites-available/default. Anda dapat mengutak-atik lebih lanjut.

$ cat >> slims < EOF
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www;
    index index.html index.htm index.php;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

        # With php5-cgi alone:
        #fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny all;
    }
}
EOF
$ sudo cp slims /etc/nginx/sites-available/slims
$ rm slims

Cara menyunting konfigurasi ini sebenarnya dapat dilakukan dengan mudah menggunakan penyunting favorit Anda (ViM, EMACS, pico, dll.)

$ sudo $EDITOR /etc/nginx/sites-available/slims

Isi dengan konfigurasi yang diwarnai merah. Perhatikan, ganti localhost dengan domain Anda yang benar.

Sekarang, saatnya mengaktifkan SLiMS dan menonaktifkan konfigurasi baku.

$ sudo rm -f /etc/nginx/sites-enabled/default
$ sudo ln -sf /etc/nginx/sites-available/slims /etc/nginx/sites-enabled/slims

Setelah itu, saatnya menyalakan ulang NGINX.

$ sudo invoke-rc.d nginx restart

Selesai. Selanjutnya tinggal mengarahkan peramban kepada situs kita.

Mengonfigurasi Situs

Kalau Anda telah selesai mengonfigurasi dengan benar, maka tampilan pertama dari SLiMS di peramban adalah laman pemasangan.

A Welcome screen for SLiMS setup.

01. A welcoming start for SLiMS setup.

Pilih "Let's Start The Installation" untuk lanjut. Maka pada laman berikutnya akan ditampilkan isian untuk mengonfigurasi.

Setup configuration for SLiMS

02. Setup configuration for SLiMS

Halaman kedua intinya untuk mengonfigurasi basisdata dan admin SLiMS. Contoh yang saya isi untuk isian tersebut:

Database Host localhost
Database Name senayandb
Database Username senayan
Database Password **********
Generate Sample Data Yes
Username pustakawan
Password *************
Retype Password *************

Saya memilih untuk memasang data contoh agar mendapatkan gambaran mengenai apa itu SLiMS. Nanti kalau sudah digunakan secara penuh, tentunya data contoh ini tak perlu dipasang. Bahkan, dapat dihapus begitu saja. Setelah mengisi itu semua, pilih "Continue" untuk lanjut ke halaman terakhir.

Setup completed

03. Setup completed

Halaman terakhir memberikan rekomendasi untuk menghapus direktori "install/". Namun sebelumnya, mari memulai SLiMS dengan memilih "OK, start the SLiMS". Maka, Anda akan dibawa ke laman depan SLiMS.

SLiMS frontpage

SLiMS frontpage

Seperti rekomendasi pemasang SLiMS, mari hapus direktori pemasangan dan juga membetulkan perizinan berkas yang ada.

$ sudo rm -rf /var/www/install
$ sudo chmod 644 /var/www/sysconfig.local.inc.php

Sampai sini proses konfigurasi awal berhasil. Anda sudah dapat berpuas diri dan berpesta ria. Selanjutnya adalah proses yang saya hendak lakukan di dalam SLiMS agar lebih bagus. Tapi, itu, 'kan, tergantung selera masing-masing.

Bacaan Lebih Lanjut

Daftar Pustaka

Andrea Usu (2010, August 3). Benchmark: libmysql vs mysqlnd. Retrieved Jan 16, 2014 from https://usu.li/benchmark-libmysql-vs-mysqlnd/.^
Memasang ROM Hepta Erro (GB 4.2.2) pada Xperia Mini Pro SK-17
Super Android, recharge!

Memasang ROM Hepta Erro (GB 4.2.2) pada Xperia Mini Pro SK-17

TULISAN INI BUKAN UNTUK ORANG AWAM DAN DAPAT MERUSAK TELEPON GENGGAM ANDA!

Di Sabtu pagi yang cerah ini rasanya enak untuk iseng-iseng. Eh, di XDA-Developer ada sebuah entri baru namanya Hepta Erro. Katanya, sih, dia ROM Jelly Beans paling enteng dan cepat. Kebetulan saya pernah menulis tentang memasang ROM termodifikasi di sini. Langsung saja saya praktekkan tulisan saya.

Tulisan ini sebenarnya cuma mengikuti tulisan yang ada di entri Hepta Erro ditambah pengalaman saya. Saya sendiri tidak begitu cepat menulis.

Unduh bahan-bahan utama ini:

  1. ROM Hepta Erro.
  2. GApps yang versi ringan.
  3. Kernel LuPuS JB v8.

Saya asumsikan Anda sudah memasang Android SDK dengan baik. Taruh/unduh ROM Hepta Erro dan GApps ke dalam SDCard. Nanti mereka akan digunakan.

Pasang Image BOOT

Saya asumsikan telepon dalam keadaan mati. Saat ini kita hendak masuk ke Fastboot Mode. Caranya dengan menekan dan tahan tombol VOLUME NAIK (VOL UP) lalu sambungkan dengan kabel USB komputer. Bila berhasil, maka lampu LED biru akan menyala.

Setelah tersambung ke komputer, saatnya memasang kernel. Kebetulan saya menggunakan versi 7, tapi mirip-miriplah caranya:

# /opt/android-sdk-update-manager/platform-tools/fastboot flash boot
LuPuS_mango_jBv7.img

Pasang ROM dan GApps

Selanjutnya memasang ROM. Untuk dapat memasang ROM dan GApps, masuk ke dalam modus Recovery (Recovery Mode) yang disediakan oleh kernel. Caranya:

  1. Matikan telepon.
  2. Nyalakan kembali sambil memencet berulang-ulang tombol VOLUME NAIK.
  3. Terus pencet-pencet sampai masuk Recovery Mode.

Saat di menu Recovery, lakukan langkah-langkah berikut:

  1. Hapus sistem dan data (Wipe System and Data).
  2. Pasang kedua ZIP (ROM dan GApps) melalui Install Zip ‚Üí Choose zip from SD card lalu pilih kedua ZIP untuk dipasang. Ketika memasang ROM sistem seperti membeku. Itu karena berkas-berkas yang dipasang banyak sehingga berhenti agak lama.
  3. Terakhir, hapus tembolok (Wipe Cache and Dalvik Cache).

Setelah semua selesai, silakan nyalakan ulang telepon. Tinggal mengisi ulang konfigurasi dan telepon siap digunakan kembali.

Domain ID Sekarang Bebas

Domain ID Sekarang Bebas

Akhirnya domain “.id” dapat digunakan dengan apa saja. Atau dengan kata lain, pengurus domain “.id” akhirnya melepas idealismenya dan turut ikut tren ke gTLD. Format ccTLD¬† yang usang mungkin yang selama ini menyebabkan domain “.id” tidak laku.

Format gTLD banyak disesali orang karena faktor komersialisasi yang kuat. Masalah yang paling bisa timbul adalah hak cipta terutama dalam proteksi produk sebuah perusahaan. Domain “.id” bisa mendapatkan nama yang lebih panjang seperti misalnya: “linux.id” — yang mana bagus-bagus saja menurut saya. Namun, ia bisa menimbulkan masalah kelak dengan orang-orang akan beramai-ramai mendaftarkan nama yang lebih bermakna dibandingkan versi ccTLD.

Terus terang, saya tidak bisa berkomentar. Saya masih mendalami perpindahan tren ini sebagai sebuah gejala sosial. Nama yang lebih dinamis memungkinkan nama domain lebih manusiawi. Artinya, Internet tidak lagi milik ahli komputer, tetapi sudah milik orang awam pula. Ini yang mungkin menjadi dasar pemikiran.

Jadi ingat kelakar, “mengapa perusahaan Indonesia gampang kolaps?” Karena namanya mendoakan supaya cepat mati. ūüôā

Yang pasti, “.id” adalah domain seksi. Yup, sepertinya akan banyak orang kurang kerjaan yang akan mendaftarkan domainnya. Apalagi, domain parking adalah sebuah bisnis besar. Ada “ha.id”, “pa.id”, “sik.id”, “sam.id”, “band.id”, dan yang lain-lain.

Silakan Anda tinggalkan komentar kira-kira domain apa yang lucu atau unik yang pasti akan muncul.

Kompilasi GCC Bila Menggunakan -march=native
cpu-burn

Kompilasi GCC Bila Menggunakan -march=native

Komputer saya menggunakan AMD Bulldozer FX8350 (8-core Black Edition). Saya penasaran untuk instruksi apa saja yang disediakan oleh GCC untuk mengompilasi aplikasi-aplikasi pada sistem saya. Kebetulan saya menemukan artikel yang menarik membahas tentang fitur-fitur GCC pada kompilasi native.

Mungkin Anda bukan seorang yang senang meremas dan memaksimalkan komputer Anda. Apalagi, Instruksi-instruksi ini mungkin selama ini tidak pernah diaktifkan karena biasanya sistem operasi yang hanya menyertakan binari tidak mengaktifkan fitur-fitur ini demi kompabilitas. Tetapi, saya rasa alangkah menariknya bila kita tahu apa saja, sih, instruksi yang ada pada prosesor kita yang sebenarnya bisa dipakai untuk memaksimalkan aplikasi.

Dari apa yang saya temukan ternyata Bulldozer mematikan 3DNow! dan MMX. Tetapi, sebagai ganti SSE, SSE2, SSSE, dan SSE4 didukung. Ya, ini artinya instruksi MMX kemungkinan akan diemulasi di sini.

Hal yang menarik, Bulldozer telah memiliki AES-NI di dalamnya. Operasi AES-NI sangat berguna dalam operasi kriptografi, terutama algoritma AES. Yang paling merasakan manfaat ini adalah OpenSSL 1.x dan aplikasi-aplikasi yang bergantung kepadanya.

Bulldozer juga memanfaatkan FMA4, sebuah instruksi bilangan dengan presisi sangat tinggi untuk pertambahan perkalian (a + b * c). Instruksi matematika ini sangat membantu. Oh, iya, berhubung Intel dan AMD agak berbeda, maka instruksi ini agak berbahaya dijalankan di tempat lain karena tidak konsisten. AMD mendukung FMA4 lalu mendukung FMA3, sedangkan Intel pindah dari FMA3 ke FMA4. Jadi, mereka agak kurang kompatibel.

Yang menarik Bulldozer mendukung AVX dan AVX256. Fitur prosesor yang ini sangat berguna untuk operasi bilangan dengan presisi tinggi. Itu sebabnya, bisa jadi bila menggunakan operasi ini dan dengan komputer yang lainnya yang menggunakan instruksi biasa akan menghasilkan keluaran yang sedikit berbeda.

Seperti yang kita ketahui bersama, komputer menghitung secara diskrit. Hal ini menyebabkan adanya pembulatan. Bilangan cacah direpresentasikan dengan bilangan IEEE. Pembulatan yang dispesifikasikan untuk bilangan IEEE ini disesuaikan dengan kadar kemampuan perangkat keras. Fitur AVX membuat presisi yang lebih dalam lagi.

Makro yang Aktif

Makro-makro yang diaktifkan oleh GCC

$ echo | gcc -dM -E - -O2 -fomit-frame-pointer -march=native -mtune=native
#define __DBL_MIN_EXP__ (-1021)
#define __UINT_LEAST16_MAX__ 65535
#define __XOP__ 1
#define __ATOMIC_ACQUIRE 2
#define __FLT_MIN__ 1.17549435082228750797e-38F
#define __FMA4__ 1
#define __UINT_LEAST8_TYPE__ unsigned char
#define __INTMAX_C(c) c ## L
#define __CHAR_BIT__ 8
#define __UINT8_MAX__ 255
#define __WINT_MAX__ 4294967295U
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __SIZE_MAX__ 18446744073709551615UL
#define __SSE4_1__ 1
#define __WCHAR_MAX__ 2147483647
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L)
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
#define __FLT_EVAL_METHOD__ 0
#define __unix__ 1
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
#define __x86_64 1
#define __UINT_FAST64_MAX__ 18446744073709551615UL
#define __SIG_ATOMIC_TYPE__ int
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 2
#define __UINT_FAST8_MAX__ 255
#define __DEC64_MAX_EXP__ 385
#define __INT8_C(c) c
#define __UINT_LEAST64_MAX__ 18446744073709551615UL
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.18973149535723176502e+4932L
#define __POPCNT__ 1
#define __UINT_LEAST8_MAX__ 255
#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
#define __UINTMAX_TYPE__ long unsigned int
#define __linux 1
#define __DEC32_EPSILON__ 1E-6DF
#define __OPTIMIZE__ 1
#define __unix 1
#define __UINT32_MAX__ 4294967295U
#define __LDBL_MAX_EXP__ 16384
#define __WINT_MIN__ 0U
#define __linux__ 1
#define __SCHAR_MAX__ 127
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
#define __INT64_C(c) c ## L#define __DBL_DIG__ 15
#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
#define _FORTIFY_SOURCE ((defined __OPTIMIZE__ && __OPTIMIZE__ > 0) ? 2 : 0)
#define __SIZEOF_INT__ 4
#define __SIZEOF_POINTER__ 8
#define __USER_LABEL_PREFIX__
#define __STDC_HOSTED__ 1
#define __LDBL_HAS_INFINITY__ 1
#define __FLT_EPSILON__ 1.19209289550781250000e-7F
#define __ABM__ 1
#define __LDBL_MIN__ 3.36210314311209350626e-4932L
#define __DEC32_MAX__ 9.999999E96DF
#define __F16C__ 1
#define __INT32_MAX__ 2147483647
#define __SIZEOF_LONG__ 8
#define __STDC_IEC_559__ 1
#define __STDC_ISO_10646__ 201103L
#define __UINT16_C(c) c
#define __DECIMAL_DIG__ 21
#define __gnu_linux__ 1
#define __LDBL_HAS_QUIET_NAN__ 1
#define __GNUC__ 4
#define __MMX__ 1
#define __FLT_HAS_DENORM__ 1
#define __SIZEOF_LONG_DOUBLE__ 16
#define __BIGGEST_ALIGNMENT__ 32
#define __PRFCHW__ 1
#define __DBL_MAX__ ((double)1.79769313486231570815e+308L)
#define __INT_FAST32_MAX__ 9223372036854775807L
#define __DBL_HAS_INFINITY__ 1
#define __SSE4_2__ 1
#define __DEC32_MIN_EXP__ (-94)
#define __INT_FAST16_TYPE__ long int
#define __LDBL_HAS_DENORM__ 1
#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
#define __INT_LEAST32_MAX__ 2147483647
#define __DEC32_MIN__ 1E-95DF
#define __DBL_MAX_EXP__ 1024
#define __DEC128_EPSILON__ 1E-33DL
#define __SSE2_MATH__ 1
#define __ATOMIC_HLE_RELEASE 131072
#define __PTRDIFF_MAX__ 9223372036854775807L
#define __amd64 1
#define __STDC_NO_THREADS__ 1
#define __AVX__ 1
#define __ATOMIC_HLE_ACQUIRE 65536
#define __LONG_LONG_MAX__ 9223372036854775807LL
#define __SIZEOF_SIZE_T__ 8#define __LZCNT__ 1
#define __SIZEOF_WINT_T__ 4#define __GCC_HAVE_DWARF2_CFI_ASM 1
#define __GXX_ABI_VERSION 1002
#define __FLT_MIN_EXP__ (-125)
#define __INT_FAST64_TYPE__ long int
#define __FP_FAST_FMAF 1
#define __DBL_MIN__ ((double)2.22507385850720138309e-308L)
#define __PCLMUL__ 1
#define __LP64__ 1
#define __DECIMAL_BID_FORMAT__ 1
#define __tune_bdver2__ 1
#define __bdver2 1
#define __DEC128_MIN__ 1E-6143DL
#define __REGISTER_PREFIX__
#define __UINT16_MAX__ 65535
#define __DBL_HAS_DENORM__ 1
#define __UINT8_TYPE__ unsigned char
#define __XSAVE__ 1
#define __FLT_MANT_DIG__ 24#define __VERSION__ "4.8.2"#define __UINT64_C(c) c ## UL
#define __FMA__ 1
#define __SSE4A__ 1
#define _STDC_PREDEF_H 1
#define __GCC_ATOMIC_INT_LOCK_FREE 2
#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __STDC_IEC_559_COMPLEX__ 1
#define __INT32_C(c) c
#define __DEC64_EPSILON__ 1E-15DD
#define __ORDER_PDP_ENDIAN__ 3412
#define __DEC128_MIN_EXP__ (-6142)
#define __INT_FAST32_TYPE__ long int
#define __UINT_LEAST16_TYPE__ short unsigned int
#define unix 1
#define __INT16_MAX__ 32767#define __SIZE_TYPE__ long unsigned int
#define __UINT64_MAX__ 18446744073709551615UL
#define __INT8_TYPE__ signed char
#define __ELF__ 1
#define __FLT_RADIX__ 2
#define __INT_LEAST16_TYPE__ short int
#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
#define __UINTMAX_C(c) c ## UL
#define __SSE_MATH__ 1
#define __SIG_ATOMIC_MAX__ 2147483647
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __SIZEOF_PTRDIFF_T__ 8
#define __x86_64__ 1
#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
#define __INT_FAST16_MAX__ 9223372036854775807L
#define __UINT_FAST32_MAX__ 18446744073709551615UL
#define __UINT_LEAST64_TYPE__ long unsigned int
#define __FLT_HAS_QUIET_NAN__ 1
#define __FLT_MAX_10_EXP__ 38
#define __LONG_MAX__ 9223372036854775807L
#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
#define __FLT_HAS_INFINITY__ 1
#define __UINT_FAST16_TYPE__ long unsigned int
#define __DEC64_MAX__ 9.999999999999999E384DD
#define __CHAR16_TYPE__ short unsigned int
#define __PRAGMA_REDEFINE_EXTNAME 1
#define __INT_LEAST16_MAX__ 32767
#define __DEC64_MANT_DIG__ 16
#define __INT64_MAX__ 9223372036854775807L
#define __UINT_LEAST32_MAX__ 4294967295U
#define __GCC_ATOMIC_LONG_LOCK_FREE 2
#define __INT_LEAST64_TYPE__ long int
#define __INT16_TYPE__ short int
#define __INT_LEAST8_TYPE__ signed char
#define __DEC32_MAX_EXP__ 97
#define __INT_FAST8_MAX__ 127
#define __INTPTR_MAX__ 9223372036854775807L
#define linux 1
#define __SSE2__ 1
#define __SSSE3__ 1
#define __LDBL_MANT_DIG__ 64
#define __DBL_HAS_QUIET_NAN__ 1
#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
#define __code_model_small__ 1
#define __INTPTR_TYPE__ long int
#define __UINT16_TYPE__ short unsigned int
#define __WCHAR_TYPE__ int
#define __SIZEOF_FLOAT__ 4
#define __LWP__ 1
#define __UINTPTR_MAX__ 18446744073709551615UL
#define __DEC64_MIN_EXP__ (-382)
#define __INT_FAST64_MAX__ 9223372036854775807L
#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
#define __FLT_DIG__ 6
#define __UINT_FAST64_TYPE__ long unsigned int
#define __INT_MAX__ 2147483647
#define __amd64__ 1
#define __INT64_TYPE__ long int
#define __FLT_MAX_EXP__ 128#define __ORDER_BIG_ENDIAN__ 4321
#define __DBL_MANT_DIG__ 53#define __INT_LEAST64_MAX__ 9223372036854775807L
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
#define __DEC64_MIN__ 1E-383DD
#define __WINT_TYPE__ unsigned int
#define __UINT_LEAST32_TYPE__ unsigned int
#define __SIZEOF_SHORT__ 2
#define __SSE__ 1
#define __LDBL_MIN_EXP__ (-16381)
#define __INT_LEAST8_MAX__ 127
#define __SIZEOF_INT128__ 16
#define __LDBL_MAX_10_EXP__ 4932
#define __ATOMIC_RELAXED 0
#define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L)
#define _LP64 1
#define __UINT8_C(c) c
#define __INT_LEAST32_TYPE__ int
#define __SIZEOF_WCHAR_T__ 4
#define __UINT64_TYPE__ long unsigned int
#define __TBM__ 1
#define __INT_FAST8_TYPE__ signed char
#define __DBL_DECIMAL_DIG__ 17
#define __bdver2__ 1
#define __FXSR__ 1
#define __DEC_EVAL_METHOD__ 2
#define __UINT32_C(c) c ## U
#define __INTMAX_MAX__ 9223372036854775807L
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F
#define __INT8_MAX__ 127
#define __UINT_FAST32_TYPE__ long unsigned int
#define __CHAR32_TYPE__ unsigned int
#define __FLT_MAX__ 3.40282346638528859812e+38F
#define __FP_FAST_FMA 1
#define __INT32_TYPE__ int
#define __SIZEOF_DOUBLE__ 8#define __FLT_MIN_10_EXP__ (-37)
#define __INTMAX_TYPE__ long int
#define __DEC128_MAX_EXP__ 6145
#define __ATOMIC_CONSUME 1
#define __GNUC_MINOR__ 8
#define __UINTMAX_MAX__ 18446744073709551615UL
#define __DEC32_MANT_DIG__ 7
#define __DBL_MAX_10_EXP__ 308
#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
#define __INT16_C(c) c
#define __STDC__ 1
#define __AES__ 1
#define __PTRDIFF_TYPE__ long int
#define __ATOMIC_SEQ_CST 5
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1
#define __UINT32_TYPE__ unsigned int
#define __UINTPTR_TYPE__ long unsigned int
#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
#define __DEC128_MANT_DIG__ 34
#define __LDBL_MIN_10_EXP__ (-4931)
#define __SIZEOF_LONG_LONG__ 8
#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
#define __LDBL_DIG__ 18
#define __FLT_DECIMAL_DIG__ 9
#define __UINT_FAST16_MAX__ 18446744073709551615UL
#define __GNUC_GNU_INLINE__ 1
#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
#define __BMI__ 1
#define __SSE3__ 1
#define __UINT_FAST8_TYPE__ unsigned char
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_RELEASE 3

CFLAGS yang Dibuat

Bentuk CFLAGS yang dibuat:

$ gcc -O2 -fomit-frame-pointer -march=native -mtune=native -E -v - </dev/null 2>&1 | grep cc1
 /usr/libexec/gcc/x86_64-pc-linux-gnu/4.8.2/cc1 -E -quiet -v - -march=bdver2 -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mabm -mlwp -mfma -mfma4 -mxop -mbmi -mno-bmi2 -mtbm -mavx -mno-avx2 -msse4.2 -msse4.1 -mlzcnt -mno-rtm -mno-hle -mno-rdrnd -mf16c -mno-fsgsbase -mno-rdseed -mprfchw -mno-adx -mfxsr -mxsave -mno-xsaveopt --param l1-cache-size=16 --param l1-cache-line-size=64 --param l2-cache-size=2048 -mtune=bdver2 -fomit-frame-pointer -O2

Bentuk variasi lainnya:

$  echo | gcc -### -E - -fomit-frame-pointer -march=native -mtune=native
Menggunakan spesifikasi bawaan.
COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.8.2/gcc
Target: x86_64-pc-linux-gnu
Dikonfigurasikan dengan: /var/tmp/portage/sys-devel/gcc-4.8.2/work/gcc-4.8.2/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.8.2 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.2 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.2/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.2/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --with-cloog --disable-isl-version-check --enable-lto --enable-nls --without-included-gettext --with-system-zlib --enable-obsolete --disable-werror --enable-secureplt --enable-multilib --with-multilib-list=m32,m64 --enable-libmudflap --disable-libssp --enable-libgomp --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.8.2/python --enable-checking=release --disable-libgcj --enable-libstdcxx-time --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-targets=all --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.8.2 p1.0, pie-0.5.8'
Model Thread: posix
versi gcc 4.8.2 (Gentoo 4.8.2 p1.0, pie-0.5.8)
COLLECT_GCC_OPTIONS='-E' '-fomit-frame-pointer' '-march=native' '-mtune=native'
 /usr/libexec/gcc/x86_64-pc-linux-gnu/4.8.2/cc1 -E -quiet - "-march=bdver2" -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mabm -mlwp -mfma -mfma4 -mxop -mbmi -mno-bmi2 -mtbm -mavx -mno-avx2 -msse4.2 -msse4.1 -mlzcnt -mno-rtm -mno-hle -mno-rdrnd -mf16c -mno-fsgsbase -mno-rdseed -mprfchw -mno-adx -mfxsr -mxsave -mno-xsaveopt --param "l1-cache-size=16" --param "l1-cache-line-size=64" --param "l2-cache-size=2048" "-mtune=bdver2" -fomit-frame-pointer
COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.8.2/:/usr/libexec/gcc/x86_64-pc-linux-gnu/4.8.2/:/usr/libexec/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/../../../../x86_64-pc-linux-gnu/bin/
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/../../../../x86_64-pc-linux-gnu/lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-E' '-fomit-frame-pointer' '-march=native' '-mtune=native'

Deskripsi Parameter Instruksi yang Diaktifkan GCC

Yang ini lebih deskriptif:

$ gcc -O2 -fomit-frame-pointer -march=native -mtune=native -Q --help=target
Pilihan berikut adalah target spesifik:
  -m128bit-long-double                  [non-aktif]
  -m32                                  [non-aktif]
  -m3dnow                               [non-aktif]
  -m3dnowa                              [non-aktif]
  -m64                                  [aktif]
  -m80387                               [aktif]
  -m8bit-idiv                           [non-aktif]
  -m96bit-long-double                   [aktif]
  -mabi=                                sysv
  -mabm                                 [aktif]
  -maccumulate-outgoing-args            [non-aktif]
  -maddress-mode=                       short
  -madx                                 [non-aktif]
  -maes                                 [aktif]
  -malign-double                        [non-aktif]
  -malign-functions=                    0
  -malign-jumps=                        0
  -malign-loops=                        0
  -malign-stringops                     [aktif]
  -mandroid                             [non-aktif]
  -march=                               bdver2
  -masm=                                att
  -mavx                                 [aktif]
  -mavx2                                [non-aktif]
  -mavx256-split-unaligned-load         [non-aktif]
  -mavx256-split-unaligned-store        [non-aktif]
  -mbionic                              [non-aktif]
  -mbmi                                 [aktif]
  -mbmi2                                [non-aktif]
  -mbranch-cost=                        0
  -mcld                                 [non-aktif]
  -mcmodel=                             32
  -mcpu=
  -mcrc32                               [non-aktif]
  -mcx16                                [aktif]
  -mdispatch-scheduler                  [non-aktif]
  -mf16c                                [aktif]
  -mfancy-math-387                      [aktif]
  -mfentry                              [aktif]
  -mfma                                 [aktif]
  -mfma4                                [aktif]
  -mforce-drap                          [non-aktif]
  -mfp-ret-in-387                       [aktif]
  -mfpmath=                             387
  -mfsgsbase                            [non-aktif]
  -mfused-madd
  -mfxsr                                [aktif]
  -mglibc                               [aktif]
  -mhard-float                          [aktif]
  -mhle                                 [non-aktif]
  -mieee-fp                             [aktif]
  -mincoming-stack-boundary=            0
  -minline-all-stringops                [non-aktif]
  -minline-stringops-dynamically        [non-aktif]
  -mintel-syntax
  -mlarge-data-threshold=               0x10000
  -mlong-double-64                      [non-aktif]
  -mlong-double-80                      [aktif]
  -mlwp                                 [aktif]
  -mlzcnt                               [aktif]
  -mmmx                                 [non-aktif]
  -mmovbe                               [non-aktif]
  -mms-bitfields                        [non-aktif]
  -mno-align-stringops                  [non-aktif]
  -mno-fancy-math-387                   [non-aktif]
  -mno-push-args                        [non-aktif]
  -mno-red-zone                         [non-aktif]
  -mno-sse4                             [non-aktif]
  -momit-leaf-frame-pointer             [non-aktif]
  -mpc32                                [non-aktif]
  -mpc64                                [non-aktif]
  -mpc80                                [non-aktif]
  -mpclmul                              [aktif]
  -mpopcnt                              [aktif]
  -mprefer-avx128                       [non-aktif]
  -mpreferred-stack-boundary=           0
  -mprfchw                              [aktif]
  -mpush-args                           [aktif]
  -mrdrnd                               [non-aktif]
  -mrdseed                              [non-aktif]
  -mrecip                               [non-aktif]
  -mrecip=
  -mred-zone                            [aktif]
  -mregparm=                            0
  -mrtd                                 [non-aktif]
  -mrtm                                 [non-aktif]
  -msahf                                [aktif]
  -msoft-float                          [non-aktif]
  -msse                                 [aktif]
  -msse2                                [aktif]
  -msse2avx                             [non-aktif]
  -msse3                                [aktif]
  -msse4                                [aktif]
  -msse4.1                              [aktif]
  -msse4.2                              [aktif]
  -msse4a                               [aktif]
  -msse5
  -msseregparm                          [non-aktif]
  -mssse3                               [aktif]
  -mstack-arg-probe                     [non-aktif]
  -mstackrealign                        [aktif]
  -mstringop-strategy=                  [default]
  -mtbm                                 [aktif]
  -mtls-dialect=                        gnu
  -mtls-direct-seg-refs                 [aktif]
  -mtune=                               bdver2
  -muclibc                              [non-aktif]
  -mveclibabi=                          [default]
  -mvect8-ret-in-mem                    [non-aktif]
  -mvzeroupper                          [non-aktif]
  -mx32                                 [non-aktif]
  -mxop                                 [aktif]
  -mxsave                               [aktif]
  -mxsaveopt                            [non-aktif]
  Known assembler dialects (for use with the -masm-dialect= option):
    att intel
  Known ABIs (for use with the -mabi= option):
    ms sysv

  Known code models (for use with the -mcmodel= option):
    32 kernel large medium small

  Valid arguments to -mfpmath=:
    387 387+sse 387,sse both sse sse+387 sse,387

  Known vectorization library ABIs (for use with the -mveclibabi= option):
    acml svml

  Known address mode (for use with the -maddress-mode= option):
    long short

  Valid arguments to -mstringop-strategy=:
    byte_loop libcall loop rep_4byte rep_8byte rep_byte unrolled_loop

  Known TLS dialects (for use with the -mtls-dialect= option):
    gnu gnu2