Category Archives

356 Articles
Memasang Steam pada Ubuntu Xenial 16.04 dan Turunannya
Steam

Memasang Steam pada Ubuntu Xenial 16.04 dan Turunannya

Ubuntu akhirnya memasukkan Steam ke repositori Multiverse-nya. Hal ini yang menyebabkan paket Debian Steam dari situs Steam Valve tidak lagi kompatibel dengan Ubuntu teranyar ini. Paket Steam pada repositori Ubuntu disebut steam. Sedangkan versi Valve nama yang dipakai adalah steam-launcher.

Kalau Anda menggunakan turunan Ubuntu, bukan Ubuntu asli — saya sendiri KDE Neon 5.6 — Anda mungkin harus memasang software-properties-common agar ada perintah add-apt-repository yang akan dipakai untuk memasang repositori. Supaya kita ada di satu halaman yang sama, maka mari pasang perkakas itu.

sudo apt-get install software-properties-common ppa-purge

Sekarang kita bisa lanjut.

Pemasangan Mula-mula

Seperti biasa, aktifkan arsitektur 32-bita.

sudo dpkg --add-architecture i386
sudo apt-get update

Buang pustaka S3 Texture Compression baku. INGAT! Ini mungkin ilegal di negara lain, terutama negara dengan paten perangkat lunak, uhuk AS uhuk.

sudo apt-get remove --purge libtxc-dxtn-s2tc0

Unduh libtxc-dxtn0 dari repositori xorg-edger. INGAT! Bukan dari Debian Multimedia seperti pada Tambora.

wget https://launchpad.net/~xorg-edgers/+archive/ubuntu/ppa/+files/libtxc-dxtn0_1.0.1-0.3ubuntu0sarvatt+raring_amd64.deb
wget https://launchpad.net/~xorg-edgers/+archive/ubuntu/ppa/+files/libtxc-dxtn0_1.0.1-0.3ubuntu0sarvatt+raring_i386.deb
sudo gdebi libtxc-dxtn0_1.0.1-0.3ubuntu0sarvatt+raring_amd64.deb 
sudo gdebi libtxc-dxtn0_1.0.1-0.3ubuntu0sarvatt+raring_i386.deb

Anehnya, Steam akan menjadi cerewet kalau versi 64-bita tidak dipasang. Makanya, kedua paket dipasang bersamaan.

Selanjutnya, aktifkan repositori Multiverse.

sudo add-apt-repository multiverse
sudo apt-get update

Pasang Steam!

sudo apt-get install steam
steam # RUNNING THIS SHOULD BE ERROR!

Kalau Anda jalankan perintah steam, kemungkinan Steam akan gagal dijalankan. Hal ini karena Steam memaketkan pustaka C++ dan versi GCC-nya sendiri!

Matikan Steam yang gagal berjalan sempurna itu. Lalu, hapus semua pustaka C++ dan GCC bawaan Steam.

find .steam/ -name *stdc++* -exec rm -rf {} \;
find .steam/ -name *gcc* -exec rm -rf {} \;

Beberapa orang, termasuk tadinya saya, menyarankan untuk menghapus pustaka dinamis saja. Namun, setelah berjibaku, saya menemukan bahwa Steam menggunakan pustaka statik juga untuk pustaka C++ dan GCC.

Selesai.

Akhir Kata

Mengapa saya menyarankan untuk menggunakan Steam versi Ubuntu, bukan yang dari Valve? Sebenarnya, sih, bisa saja. Asalkan Anda mau menerima pesan kesalahan bahwa paket Steam usang. Saya, sih, tidak mau.

false alarm about outdated version

Steam warns us that our version is outdated

Bacaan Lebih Lanjut

Cara Membuat Proyek Gradle secara Manual yang Sebenarnya Bisa Dengan Mudah Dilakukan dengan “New Project” pada IntelliJ atau Eclipse

Cara Membuat Proyek Gradle secara Manual yang Sebenarnya Bisa Dengan Mudah Dilakukan dengan “New Project” pada IntelliJ atau Eclipse

Seperti judul blog ini, yang saya tuliskan ini adalah sesuatu yang sia-sia. Anda bisa langsung menggunakan aplikasi seperti IntelliJ atau Eclipse. Dengan penyunting itu, Anda tinggal membuat “New Project” dan semuanya sudah terkonfigurasi.

Tapi, mungkin Anda salah satu elitis yang lebih suka menggunakan terminal. Atau, Anda ingin tahu cara kerja Gradle sehingga Anda dapat setidaknya sedikit paham kalau ada masalah. Kalau saya, saya hanya sedang iseng sebelum menunggu waktunya tiba untuk menonton Warcraft di bioskop.

Proyek hanya Sejauh Direktori Kosong

Mari buat proyek baru. Caranya, buat direktori kosong dan dua buah berkas Gradle: build.gradle dan settings.gradle.

mkdir percuma && cd percuma
touch build.gradle settings.gradle

Mari namakan proyek kita ini “proyekPercuma”.

echo "rootProject.name = 'percuma'" >> settings.gradle

Secara umum, ini sudah siap. Tapi tunggu dulu, Kisanak! Kisanak tidak akan pernah lengkap ilmu bila tanpa jurus Monyet Membungkus Pisang!

Proyek hanya Sejauh Pembungkus

Java adalah sebuah pustaka yang sering kali berdiri sendiri. Hal ini karena sering kali distribusi menggunakan versi yang lawas. Bayangkan, Kisanak! Ini sudah 2016, namun Kubuntu Xenial (16.04) yang saya pakai masih menggunakan Gradle versi 2.10.

sudo apt-get install -y gradle && gradle -v

Hasilnya:

------------------------------------------------------------
Gradle 2.10
------------------------------------------------------------

Build time:   2016-01-26 15:17:49 UTC
Build number: none
Revision:     UNKNOWN

Groovy:       2.4.5
Ant:          Apache Ant(TM) version 1.9.6 compiled on July 8 2015
JVM:          1.8.0_91 (Oracle Corporation 25.91-b14)
OS:           Linux 4.4.0-22-generic amd64

Astaga! Padahal, versi terbaru sudah ada lama sebelum Xenial. Belum lagi, beberapa pustaka terbaru memanfaatkan Gradle versi terbaru.

Supaya kita menggunakan Gradle terbaru, mari buat skrip pembungkus Gradle. Saat penulisan Gradle terbaru versi 2.13.

gradle wrapper --gradle-version 2.13

Anda bisa lakukan ini untuk memperbaharui Gradle pada proyek yang lama ke versi yang terbaru. Sekarang lihat versinya:

$ ./gradlew -v

------------------------------------------------------------
Gradle 2.13
------------------------------------------------------------

Build time:   2016-04-25 04:10:10 UTC
Build number: none
Revision:     3b427b1481e46232107303c90be7b05079b05b1c

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_91 (Oracle Corporation 25.91-b14)
OS:           Linux 4.4.0-22-generic amd64

Selesai, deh.

Tunggu Dulu, Kisanak!

Mari buat sebuah proyek Java sederhana.

cat >> build.gradle << EOF
buildscript {
  repositories {
    jcenter()
  }
}

apply plugin: 'java'
apply plugin: 'application'
EOF

Lalu buat struktur direktori Java (kode sumber dan sumber daya):

mkdir -p src/main/java/ && mkdir -p src/main/resources

Sebagai pemrogram Java yang baik, seharusnya kita menaruh berkas Java pada paket-paket. Mari buat direktori paket Java.

mkdir -p src/main/java/aja/jp/percuma

Buat sebuah kelas sederhana.

cat > src/main/java/aja/jp/percuma/TestMain.java << EOF
package aja.jp.percuma;

class TestMain {
  public static void main (String ... args) {
    java.util.logging.Logger.getLogger(TestMain.class.getName()).info("Hello, world!");
  }
}
EOF

Tambahkan berkas Java ini sebagai kelas utama dalam proyek percuma.

echo "mainClassName = 'aja.jp.percuma.TestMain'" >> build.gradle

Sekarang tinggal dicoba jalankan:

./gradlew -q run

Saya sengaja tambahkan “-q” agar keluaran dari Gradle tidak keluar. Sehingga, hasilnya langsung keluaran dari aplikasi, yakni:

Jun 08, 2016 5:20:53 PM aja.jp.percuma.TestMain main
INFO: Hello, world!

Kalau tanpa “-q” dia akan berisik seperti ini:

:compileJava
:processResources UP-TO-DATE
:classes
:run
Jun 08, 2016 5:23:40 PM aja.jp.percuma.TestMain main
INFO: Hello, world!

BUILD SUCCESSFUL

Total time: 8.079 secs

This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.13/userguide/gradle_daemon.html

Bersih-bersih

Kadang kalau proyek sudah besar dan kompleks, kita perlu membersihkan hasil kompilasi secara manual:

./gradlew clean

Mau buat distribusi supaya keren?

./gradlew installDist

Sehingga, kita jalankan dengan:

./build/install/percuma/bin/percuma

Ada .bat juga di situ untuk menjalankan di sistem terlarang.

Mau publikasikan hasil pekerjaan?

./gradlew distZip

Berkasnya ada di ./build/distributions/percuma.zip

Mau tahu perintah Gradle yang lain?

./gradlew tasks

Selebihnya terserah Anda. Gampang, ‘kan?

Bacaan Lebih Lanjut

Memasang Kubuntu 16.04 UEFI dengan Debootstrap
Wily Broke The Window

Memasang Kubuntu 16.04 UEFI dengan Debootstrap

Mengenai skema partisi yang Anda pilih, semuanya bebas. Yang penting, sisakan 100 s.d. 200MB diska untuk partisi UEFI dengan format FAT32 atau FAT16.

UEFI mandates on GPT partition.

UEFI mandates on GPT partition.

Karena Windoze dan beberapa vendor lama, UEFI masih memungkinkan untuk membuat format partisi BIOS (4 partisi utama maksimal). Namun, karena saya memasang ini di laptop saya sendiri, saya membeli kosong sehingga memformat seluruh diska dengan format partisi GPT. Saya membuat satu partisi di awal dengan besar 200MB dan format FAT16 untuk partisi UEFI.

My laptop partition as an example

My laptop partition as an example

Saya tidak menyatakan proses pemformatan karena sudah pernah dibahas di blog ini berulang kali. Lagi pula, saya memformat menggunakan Manajer Partisi KDE yang ada di CD Pemasang Kubuntu. Tak perlu menyusahkan diri dengan terminal.

Oh, iya, supaya tidak bingung, saya mengasumsikan ini semua dilakukan dari CD/USB Live Pemasang Kubuntu 16.04 Xenial.

Persiapan

Sebelum mulai, saya mengubah /etc/apt/sources.list CD/USB sehingga berisi:

deb http://kambing.ui.ac.id/ubuntu/ xenial main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ xenial-security main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ xenial-updates main restricted universe multiverse

Ini biar proses pemasangan menggunakan repo terdekat.

Lalu, seperti biasa saya pasang debootstrap:

sudo apt-get update 
sudo apt-get install debootstrap

Sampai sini saya mengasumsikan bahwa Anda telah memformat diska Anda dengan benar sebelum lanjut dengan Manajer Partisi KDE atau pun cara lainnya.

Pasang Sistem Dasar

Lakukan stanza yang biasa dilakukan:

mount /dev/sda2 /mnt
mkdir -p /mnt/boot/efi

debootstrap xenial /mnt http://kambing.ui.ac.id/ubuntu

# hostname
echo gantenghost > /mnt/etc/hostname
sed -i -Ee "s#(127.+)#\1 gantenghost#" /mnt/etc/hosts

# mounts
for f in dev dev/pts proc sys; do mount -v --bind {,/mnt}/$f; done

cp /etc/apt/sources.list /mnt/apt/sources.list

chroot /mnt /bin/bash

apt-get update

Baru setelah itu, pasang KDE:

apt-get install kubuntu-desktop yakuake vim ssh

Konfigurasi zona waktu dan lokalisasi:

dpkg-reconfigure tzdata
dpkg-reconfigure locales

Tambahkan pengguna:

adduser pengguna
usermod -aG adm,cdrom,sudo,audio,video,systemd-journal pengguna

Pasang kernel dan GRUB EFI:

apt-get install linux-image-generic linux-headers-generic grub-efi-amd64

Konfigurasikan dan pasang GRUB EFI. Ingat! Dua langkah ini perlu dilakukan agar sistem dapat dinyalakan ulang.

grub-install /dev/sda
update-grub

Sisanya terserah Anda karena langkah-langkah ini sudah membuat sistem Anda berjalan.

TAMAT.

WordPress JP: Installing MariaDB

WordPress JP: Installing MariaDB

THERE WAS A BUG IN THE SERVER THAT MADE ME LOST THIS POST. THIS IS THE RETRIEVED VERSION THAT I BACK UP.

It’s obvious that I speed write and take everything from guide. As I said before, writing this in Bahasa Indonesia kind of hard for me. So, I write this as I do in parallel.

Setup Filesystem

Disable ZFS file-level prefetch as in the guide:

cat >> /etc/modprobe.d/zfs.conf << .
options zfs zfs_prefetch_disable=1
.

That would be last on the next reboot, but for now disable:

echo 1 | sudo tee /sys/module/zfs/parameters/zfs_prefetch_disable

Create the dataset and the optimizations:

zfs create -o mountpoint=/var/lib/mysql rpool/MARIADB
zfs set primarycache=metadata rpool/MARIADB
zfs set recordsize=16k rpool/MARIADB

It is optimized to use cache for metadata only if we are going to use INNODB. Its chunk is 16k, so we set it also in ZFS. In the guide we are told that MariaDB log is a 128k chunk — default chunk in ZFS.

Remember that ZFSOnLinux Bug early on? Yeah, we should regenerate Ramdisk everytime we’ve done something to /etc/zfs/zpool.cache. To be honest, I don’t know if any of the operation we did earlier warrant such action. But, just do that for precaution.

update-initramfs -d -k `uname -r`
update-initramfs -c -k `uname -r`

And now, we go with installing MariaDB server.

Installing Database Server

According to MariaDB Repository configuration page, let’s set MariaDB:

cat >> /etc/apt/sources.list.d/mariadb.list << .
# MariaDB 10.1 repository list - created 2016-05-03 08:05 UTC
# http://mariadb.org/mariadb/repositories/
deb [arch=amd64,i386] http://kartolo.sby.datautama.net.id/mariadb/repo/10.1/debian jessie main
deb-src http://kartolo.sby.datautama.net.id/mariadb/repo/10.1/debian jessie main
.

Import its key and update our list:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo apt-get update

Install MariaDB server:

sudo apt-get install mariadb-server

Disable MariaDB server double buffer by add a line (mine, vanilla at line 142) with:

skip-innodb_doublewrite

And restart MariaDB server:

sudo systemctl restart mysql

From this onward, we are ready to install WordPress, NGINX and such.

Bacaan Lebih Lanjut

WordPress JP: Installing LAMP Stack with ZFS

WordPress JP: Installing LAMP Stack with ZFS

A REVISION WAS LOST! PLEASE TAKE A LOOK AT THE BOTTOM PAGE FOR GRUB SETTING BEFORE REBOOT.

I’m in fast writing mode as this is probably won’t intended to be understood by most people. I’m writing in this blog as I moving forward installing. To keep writing  and translating from my tacit into Bahasa Indonesia is kind of laboring. Perhaps, if you want, I would reiterate what I do here with better Bahasa Indonesia. But, now, let’s live speed writing.

Preparations

I’ve got Ubuntu 14.04 Live USB on my arsenal. Boot it up and setup some trivial like IP, DNS and stuff. I modify APT sources.list to match my nearest server.

deb http://kambing.ui.ac.id/ubuntu/ trusty main restricted
deb http://kambing.ui.ac.id/ubuntu/ trusty-security main restricted
deb http://kambing.ui.ac.id/ubuntu/ trusty-updates main restricted

Do the update and install SSH and VIM.

sudo -i
apt-get update
apt-get install ssh vim
passwd ubuntu

I need SSH because I can’t stand on server room too long. I’m not going to go on religious war on ViM vs Emacs. Last, change ubuntu user password.

And now the show live from my comfy SSH terminal laptop.

Install Ubuntu ZFS for Ubuntu Live Session

Straight from the doc.

sudo -i
apt-add-repository --yes ppa:zfs-native/stable
apt-get update
apt-get install debootstrap spl-dkms zfs-dkms ubuntu-zfs
modprobe zfs

You may wondering why I’m not upgrading first. Upgrading a temporary system is wasting time, especially one with GUI installed. Okay, now we get to the formatting.

Create A ZFS Pool

I have 2 SATA and 1 SSD. The best for server should be two SSDs. But, hey, beggar can’t choose.

ZFS config: 2 Disks + 1 SSD.

ZFS config: 2 Disks + 1 SSD.

Using GParted, I turned SSD into GPT with 3 partitions:

  • The first 200MB for /boot partition. Some twisted soul refused to use separated partition for /boot, well, good for you! I go with the conservative.
  • 8GB used for ZIL (ZFS Intent Log) drive. ZFS usually use 8GB max for journaling.
  • The rest used for ZFS Cache (ZARC).

But, hey, where is the EFI partition?

I’ve just recently found out that when you give your whole disk to ZFS, it would format the disk into two partitions. One big partition (sX1) for the use of ZFS and one 8MB partition (sdX9) for EFI partition (FAT). Yeah, ZFS automatically turn the disk into GPT partitioning scheme. After adding the two disks into a ZFS pool, the partitions will be like this:

sda: sda1 sda9, sdb: sdb1 sdb9

I’m doing mirroring for sda and sdb. I wish I have one more SSD. I would mirror two partitions on separated SSDs for ZIL. If you are luckier than me, do it! It is for safety measure. But, don’t mirror the cache because it’s wasting space.

Here’s the reality:

zpool  create -f -o ashift=12 -o altroot=/mnt -m none rpool mirror sda sdb log sdc2 cache sdc3

If I may have a dream with two SSDs:

zpool create -f -o ashift=12 -o altroot=/mnt -m none rpool mirror sda sdb log mirror sdc2 sdd2 cache sdc3 sdd3

Disable access time, enable relative time and enable LZ4 compression on tanks.

zfs set atime=off rpool
zfs set relatime=on rpool
zfs set compression=lz4 rpool

If nothing is wrong, we would got:

# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda     ONLINE       0     0     0
        sdb     ONLINE       0     0     0
    logs
      sdc2      ONLINE       0     0     0
    cache
      sdc3      ONLINE       0     0     0

errors: No known data errors

Next, the partitioning. After this, I’m doing things from Crossroad’s tutorial with some tweaks.

Create Partition

As Debian configuration:

zfs create -o mountpoint=none rpool/ROOT
zfs create -o mountpoint=/ rpool/ROOT/debian-1
zpool set bootfs=rpool/ROOT/debian-1 rpool

What? Yes, I’m installing Debian not Ubuntu.

Last, export the pool we’ve created for later import. We do this so that the ZFS config would read from disk by ID instead of common UDEV naming. Believe me, you don’t want to use UDEV naming (sda, sdb, etc.) on ZFS.

zpool export rpool

Now, we can start installing Debian system.

Install Debian

Reimport ZFS pool and create a ZFS configuration cache file.

zpool import -d /dev/disk/by-id -R /mnt rpool
mkdir -p /mnt/etc/zfs
zpool set cachefile=/mnt/etc/zfs/zpool.cache rpool

REMEMBER: (Straight from the ZFS FAQ)

Run update-initramfs -c -k all after any /sbin/zpool command changes the /etc/zfs/zpool.cache file.

This is the reason of random failures from mounting ZFS root partition.

Install the system and mount all the basic system partitions.

debootstrap --arch=amd64 jessie /mnt http://kambing.ui.ac.id/debian/

And now, configure.

Configure Debian

Hostname.

echo gantenghost > /mnt/etc/hostname
sed -i -Ee "s#(127.+)#\1 gantenghost#" /mnt/etc/hosts

Create configuration for network interfaces. In the spirit of new configuration scheme, I put two files in /etc/network/interfaces.d/

# cat > /mnt/etc/network/interfaces.d/eth0 << .
auto eth0
iface eth0 inet dhcp
.

and

# cat > /mnt/etc/network/interfaces.d/lo << .
auto lo
iface lo inet loopback
.

Mount all the system filesystems.

for f in dev dev/pts proc sys; do mount -v --bind {,/mnt}/$f; done

Chroot there

chroot /mnt /bin/bash

In Debian Configuration

Locales.

apt-get install locales
sed -i -Ee 's/# (en_US.UTF+)/\1/' /etc/locale.gen
locale-gen

Timezone.

dpkg-reconfigure tzdata
apt-get install ntp
/etc/init.d/ntp stop

Remember when I said I’m going to put /boot on different partition? Now is the time.

echo "/dev/sdc1 /boot ext4 rw,relatime,stripe=4,data=ordered 0 0" >> /etc/fstab
mount /boot

Remember also what I said about using the ninth partition of the first disk? Now is the time.

apt-get install dosfstools
mkdir /boot/efi
mkfs.vfat /dev/sda9
echo "/dev/sda9 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0" >> /etc/fstab
ap

Install ZFS packages with Debian style. ZFS needs lsb-release package.

cd /tmp
wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
apt-get install lsb-release
dpkg -i zfsonlinux_6_all.deb
apt-get update && apt-get install linux-image-amd64 debian-zfs
apt-get install grub2-common grub-efi zfs-initramfs

Last, add a login.

apt-get install sudo vim ssh
adduser user
adduser user sudo

Setup GRUB For ZFS Boot

There is a bug in Debian’s GRUB that makes the system unbootable. First, let’s reconfigure GRUB Default command line:

sudo dpkg-reconfigure grub-efi-amd64

Change Linux default command line (second screen after Linux command line) from

quiet

to

root=ZFS=rpool/ROOT/debian-1 rpool=rpool bootfs=rpool/ROOT/debian-1 quiet

After this, update grub and we are done.

sudo update-grub

Booting to New System

After all preparations, unmount all the filesystems

umount /boot/efi/ /boot
exit
for f in dev/pts dev proc sys; do umount /mnt/$f; done
zfs umount -a
zfs export rpool

Reboot.

Final Thought

Well, you might find some faults here and there. If not, everything after this is straightforward.

Bacaan Lebih Lanjut

NGINX dan Situs Siap HTTP/2

NGINX dan Situs Siap HTTP/2

Semenjak versi 1.9.5, NGINX sudah menggantikan modul SPDY dengan HTTP/2. Protokol tersebut telah resmi dan banyak peramban modern memanfaatkannya pada versi anyar. Salah satu yang paling gencar adalah Chromium dan turunannya (Google Chrome).

Ajaibnya, mengaktifkan HTTP/2 dapat menyebabkan galat berikut pada Chromium:

ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

Berikut penyebab mengapa demikian:

  • Menggunakan enkripsi lawas yang dilarang oleh HTTP/2, misalnya masih SHA-1, RC4, atau lebih rendah.
  • Menggunakan sertifikat SSL yang tidak ditandatangani oleh CA yang terpercaya/diakui oleh peramban.
  • Masih ada penggunaan protokol tak terenkripsi sehingga isi situs tercampur antara yang terenkripsi atau tidak.

Lalu apa yang harus kita lakukan untuk dapat sesuai dengan HTTP/2?

  • Untuk situs yang melayani HTTP dan HTTPS, sebaiknya penulisan URI tidak mencantumkan skema. Misalnya, daripada menulis “http://alamat.sesuatu/res/1.jpg” atau “https://alamat.sesuatu/res/1.jpg”, lebih baik ditulis dengan “/res/1.jpg”.
  • Solusi yang paling betul, tulis semua dengan menggunakan protokol HTTPS.
  • Solusi lain, tulis semua dengan menggunakan HTTP non-enkripsi dan lupakan HTTP/2.

Pada zaman dahulu, penggunaan protokol HTTPS berat dan cenderung dilewati. Namun, protokol HTTP/2 memiliki mekanisme saluran aman sehingga dapat mengirim sumber daya dengan lebih cepat dan efisien. Apalagi, prosesor zaman sekarang sudah dilengkapi oleh ekstensi AES-NI yang melakukan enkripsi secara perangkat keras. Dengan kedua alasan itu, menyalakan HTTP/2 justru mempercepat situs.

Sayangnya, dunia tak seindah itu. Harga tanda tangan sertifikat per domain itu mahal! Kalau Anda memiliki situs dengan banyak domain, Anda tentunya harus berstrategi. Salah satunya Anda bisa saja membeli sertifikat wildcard (*) sehingga bisa dipakai oleh sub domain.

Tetap saja, untuk UI yang memiliki lembaga tingkat 2 (misalnya lembaga di bawah fakultas), sertifikat wildcard tidak bisa dipakai. UI harus membeli sertifikat wildcard per fakultas juga. Atau, UI bisa saja membeli sertifikat untuk menjadi CA sekunder.

Keduanya adalah solusi yang mahal. Apalagi, setiap sertifikat hanya berlaku setahun atau dua tahun saja dan harus diperpanjang. Kalau sudah sampai seperti itu, kita harus berstrategi.

Dalam kasus UI, situs-situs yang membutuhkan keamanan tinggi harus menggunakan HTTP/2 dan sertifikat SHA2. Sedangkan untuk situs-situs kurang penting seperti Blog Staff ini, penggunaan sertifikat sekenanya saja. Misalnya, masih ditandatangani sendiri (self-signed) atau sertifikat SHA1 sisa-sisa dana tahun lalu.

Untuk peladen yang menggunakan WordPress Multisite dan Drupal multisite sayangnya harus secara manual menulis konfigurasi HTTP/2 pada NGINX. Bisa, sih, ditulis skripnya. Tetapi, saya terlalu malas untuk saat ini. Terlalu banyak kasus anomali (edge cases) yang harus dipertimbangkan.

Bagaimana dengan Anda, sudah siapkah situs Anda?

Memperbaharui Infinix X600 (Note 2) ke Android M (6.0)

Saya menulis ini karena banyak tulisan serupa yang berisi iklan. Masakkan banyak situs yang menulis versi yang sebenarnya hanya menyalin dari forum Infinix dan menautkan tautan unduhan ke Internet Archive. Sama sekali tidak modal! Karena saya pun tidak modal, saya tidak menggunakan tautan beriklan.

Saya memiliki masalah dengan Infinix Note 2 saya. Pada aplikasi Pembaharuan, saya menemukan ada versi terbaru X600-H533-B1-M-20160131 yang selalu gagal diunduh. Saya mengunduh lewat jaringan WiFi UI dan bahkan nekat menggunakan jaringan LTE langsung. Namun, proses pembaharuan selalu gagal.

Untungnya CardNeverEnds pada Kaskus yang memberi petuah agar menggunakan versi T-Card. Berikut cara saya:

  1. Versi X600-H533-B1-M-20160131 ternyata identik dengan H533-B1-Tcard_update_20160224.zip. Saya mengunduh itu dari Internet Archive.
  2. Taruh direktori download pada SD Card telepon. Ini direktori baku saat Anda mengunduh langsung dari telepon. Saya kebetulan mengunduh dari laptop jadi saya perlu menulis langkah ini untuk mengingat.
  3. Masuk ke dalam Pembaharuan ⇒ … ⇒ Update From Local ⇒ Pilih berkas ZIP pembaharuan dan pasang.
  4. Tunggu dan beres.

XUI versi Marsmallow dari Infinix ini jauh terasa enteng. Saya belum bisa bilang tentang ketahanan daya. Saya sedang melakukan uji stres dengan memasang aplikasi Path.

Memasang Steam Linux pada Tambora

Seperti janji saya, saya akan memaparkan cara saya memasang Steam Linux. Sebenarnya, cara yang saya ikuti sama seperti artikel Wiki Debian. Hanya saja, msohon maaf, kali ini akan ada penjelasan politis yang membuat permainan OpenGL (DoTA 2 misalnya) di Steam Linux dapat dimainkan dengan menggunakan penggerak terbuka (radeon) dari MESA.

Langkah Seperti pada Wiki Debian

Pastikan bahwa pengguna yang hendak memainkan DoTA 2 memilki akses ke akselerasi video dan audio:

sudo usermod -aG audio,video user

Kalau mengikuti cara pemasangan sebelumnya, pasti user sudah tergabung ke kedua grup ini sehingga perintah ini tidak perlu dilakukan. Saya menulis ini hanya demi kelengkapan saja.

Kalau mengikuti cara pemasangan sebelumnya, paket-paket yang tidak bebas juga sudah terpasang. Demi kelengkapan, berikut isi /etc/apt/sources.list BlankOn Tambora saya:

deb http://kambing.ui.ac.id/blankon tambora main extras restricted extras-extricted
deb-src http://kambing.ui.ac.id/blankon tambora main extras 

deb http://kambing.ui.ac.id/blankon tambora-updates main extras restricted extras-extricted
deb-src http://kambing.ui.ac.id/blankon tambora-updates main extras 

deb http://kambing.ui.ac.id/blankon tambora-security main extras restricted extras-extricted
deb-src http://kambing.ui.ac.id/blankon tambora-security main extras

Seharusnya sudah seperti ini bila Anda mengikuti cara pemasangan UEFI saya terdahulu.

Aktifkan repositori untuk arsitektur i386: (Intel 32-bita)

sudo dpkg --add-architecture i386
sudo apt-get update

Nah, berikut ini penjelasan agak politis, supaya Anda tahu apa itu kebebasan.

Memasang Pustaka S3TC

Pustaka S3TC adalah sebuah pustaka yang mengimplementasi algoritma kompresi tekstur S3. Penggunaan algoritma ini secara de facto memasukkan algoritma ini sebagai salah satu standar OpenGL. Sayangnya, MESA secara baku menonaktifkan pustaka ini dan membuat algoritma kompresi dengan jalan memutar sehingga tidak melanggar paten bila digunakan di negara yang mematenkan algoritma ini. Namun, MESA juga menyediakan pustaka kompresi tekstur S3TC untuk negara-negara yang secara legal tidak memperbolehkan paten algoritma.

Bagaimana dengan Indonesia?

Untungnya, sebelum Indonesia mengikuti Trans-Pacific Partnership (TPP), Indonesia belum mengakui adanya paten algoritma. Sepengetahuan saya, Indonesia masih termasuk  negara-negara non-TPP seperti negara-negara di Eropa yang dapat menggunakan pustaka ini. Mudah-mudahan Pak Jokowi atau siapa pun yang berkuasa tidak secara cepat memutuskan untuk masuk ke dalam TPP kendati kaum tekstil mengatakan adanya insentif penghapusan tarif bagi peserta TPP. Hal ini mengingat anggota-anggota TPP yang lain juga penghasil tekstil.

Ada sisi lain yang dikorbankan apabila Indonesia masuk ke TPP. Yang paling penting buat saya adalah potensi hilangnya klausul pengecualian dari paten obat untuk penyakit-penyakit penting yang diatur oleh hukum Indonesia dan bermain DoTA 2 akan terasa lambat dengan penggerak bebas terbuka MESA. Sebelum TPP disahkan, mari bermain DoTA 2 lebih cepat dengan implementasi algoritma yang benar.

Ada dua cara untuk mencapainya, entah langsung memasukkan repositori Deb-Multimedia atau memasang paket-paket yang diperlukan saja. Cara yang baik dan benar adalah yang pertama. Namun, saya lebih memilih cara yang kedua karena algoritma itu tetap dan perubahan paket-paket pustaka S3TC hanya berisi cara pemaketan saja. Mari unduh:

wget http://kambing.ui.ac.id/debian-multimedia/pool/main/libt/libtxc-dxtn/libtxc-dxtn0_1.0.1-dmo2_amd64.deb
wget http://kambing.ui.ac.id/debian-multimedia/pool/main/libt/libtxc-dxtn/libtxc-dxtn0_1.0.1-dmo2_i386.deb

Untuk lebih jelas, buang saja dahulu paket-paket kompresi tekstur yang memutar: (S2TC)

sudo apt-get remove --purge libtxc-*

Pasang pustaka S3TC yang sebenarnya.

sudo gdebi libtxc-dxtn0_1.0.1-dmo2_amd64.deb libtxc-dxtn0_1.0.1-dmo2_i386.deb

Saya membiasakan diri menggunakan gdebi daripada dpkg untuk memasang paket lepas Debian.

Terakhir, pasang langsung Steam Linux:

sudo apt-get install steam

Selesai sampai sini. Anda bisa langsung menjalankan Steam Linux dan mengunduh DoTA 2.

Bonus

Saya sudah lama tidak mengikuti perkembangan MESA semenjak PC saya berubah dari Gentoo menjadi Kubuntu. Saya tidak tahu apakah beberapa variabel berikut secara baku sudah aktif di MESA. Namun, tidak ada salahnya saya mencantumkan tambahan parameter saya untuk aplikasi OpenGL. Saya taruh ini di /home/user/.bashrc (sesuaikan dengan home Anda).

export R600_STREAMOUT=1
export R600_HYPERZ=1
export R600_TILING=1
export R600_SURF=1
export R600_GLSL130=1

Keluar dari sesi destop dan masuk kembali supaya sesi Anda mengaktifkan kelima baris ini.

Kali ini benar-benar selesai.

Memperlengkapi Tambora dengan Paket-paket Dasar

Tambora yang telah saya pasang masih belum lengkap. Terakhir laptop saya baru saja diisi:

  • Penggerak perangkat WiFi Realtek yang sudah dimodifikasi. Hasilnya luar biasa! saya jadikan hotspot sangat stabil.
  • Peluncur synapse untuk meluncurkan aplikasi.
  • Aplikasi blueman untuk menggantikan bluemoon yang tidak bisa mengakses perangkat HCI (bluetooth).

Mari modifikasi lebih lanjut.

Manajer Sesi

Untuk kali ini saya terpaksa melepas Manokwari karena tidak sesuai dengan alur kerja saya:

  • Pintasan papan ketik tidak ada. Saya harus menggunakan tetikus. Untuk trackpad kalau apa-apa pakai itu, sangat merepotkan.
  • Panel tidak dapat disembunyikan/dipindahkan. Bagi saya, kehilangan piksel horisontal sangat disayangkan untuk layar laptop yang lebar.
  • Pintasan kecerahan layar tidak berfungsi, saya tidak tahu aplikasi apa yang harus dipasang.
  • Perpindahan aplikasi (ALT+TAB) hanya terjadi antar dua aplikasi terakhir yang digunakan.

Tentu saja, saya masih menyerempet ke produk BlankOn! Saya menggunakan Cinnamon dengan citarasa BlankOn. Untuk memasang:

sudo apt-get install blankon-branding-cinnamon

Saya mendapati destop ini sesuai dengan cara kerja saya. Tombol META (WIN) membuka menu mulai. Panel dapat disembunyikan. Yang paling penting, bisa dikonfigurasikan.

Paket Kerja

Memasang libreoffice untuk dokumen.

sudo apt-get install blankon-office

Memasang Dia (pembuat diagram) untuk membuat diagram-diagram.

sudo apt-get install dia-gnome dia-rib-network dia-shapes

Memasang paket-paket grafis (GIMP, Inkscape, dan MyPaint) untuk berkreasi.

sudo apt-get install blankon-graphics mypaint

GIMP untuk gambar raster, Inkscape untuk gambar vektor, dan MyPaint untuk gambar kuas.

Memasang OpenVPN untuk Network Manager untuk terhubung ke jaringan kantor. Apa? Anda pikir UI tidak canggih keamanannya seperti Big Four?

sudo apt-get install network-manager-openvpn network-manager-openvpn-gnome

Selanjutnya memasang Slack untuk berlaku seperti DevOps. Yup, kami tidak hidup di zaman batu.

wget https://slack-ssb-updates.global.ssl.fastly.net/linux_releases/slack-desktop-2.0.0-amd64.deb
sudo gdebi slack-desktop-2.0.0-amd64.deb

Saya menggunakan gdebi, bukan apt-get, agar paket-paket yang dibutuhkan juga dipasang.

Memasang Steam Linux Client

Salah satu kebutuhan saya adalah membutuhkan Steam untuk mengakses permainan yang saya beli atau pun secara legal dapat saya mainkan gratis (DoTa 2). Saya menggunakan instruksi dari Wiki Debian. Namun, ada sedikit perubahan yang membuat aplikasi berjalan dengan lancar. Ini akan saya bahas pada selanjutnya.

Paket Sisanya

Mohon maaf, sepertinya kemalasan menimpa saya. Selanjutnya, silakan lihat-lihat saja. Caranya, buka saja Synaptic Package Manager dan cari dengan kata kunci “blankon”. Nanti di sana cari saja yang kira-kira perlu. Kalau ada yang bertentangan, misalnya seperti blankon-panel yang membuang blankon-desktop, abaikan saja.

 

Memasang PostgreSQL Versi Terbaru

Masukkan repo PostgreSQL:

echo "deb http://kambing.ui.ac.id/postgresql/repos/apt/ `lsb_release -cs`-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql.list

Kalau Anda tidak memasang LSB, ganti lsb_release dengan wily, jessie, wheezy, dan sebagainya silakan lihat di sini.

Setelah selesai, impor kunci:

wget --quiet -O - http://kambing.ui.ac.id/postgresql/repos/apt/ACCC4CF8.asc | sudo apt-key add -

Setelah itu, lakukan hal yang biasa dilakukan:

sudo apt-get update
sudo apt-get install postgresql pgadmin3

Selesai.

Membuat Entitas CRUH pada Spring JPA

Membuat Entitas CRUH pada Spring JPA

Operasi basis data biasa mengenal akronim CRUD yang berarti Create (Buat), Read (Baca), Update (Modifikasi), dan Delete (Hapus). Operasi-operasi ini lazim diterapkan pada bisnis sehari-hari. Namun, pada beberapa data kritikal, operasi hapus tidak boleh benar-benar dilakukan. Yang dilakukan hanya mengubah agar data tersebut tidak terlihat/aktif di aplikasi, namun secara fisik masih ada di basisdata.

JPA Pada Umumnya

Sebagai contoh, misalkan ada kelas entitas akun yang biasa dibuat oleh orang.

// ... import omitted
@Entity
public class Account{
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="ACCOUNT_ID")
    long id;

    String name;

    // JPA needs default constructor
    public Account() {}

    public Account(String name) {
        this.name = name;
    }

    // ... Setter and getter omitted
}

Pada kelas Account.java seperti biasa kita membuat kolom-kolom biasa. Lalu, misalkan dengan Spring Boot JPA, dibuatkan sebuah kelas Repository yang akan digunakan untuk melakukan operasi-operasi CRUD:

public interface AccountRepository extends CrudRepository <Account, Long>{

}

Saya akan menunjukkan selanjutnya bagaimana mengubah pola CRUD menjadi CRUH (Hide). Operasi CRUH hanya istilah saya saja yang artinya hanya menyembunyikan, bukan menghapus data (hapus-sembunyi).

CRUH dengan JPA

Salah satu solusi untuk operasi hapus-sembunyi adalah dengan menggunakan penanda. Kolom penanda ini digunakan untuk menyatakan data tersebut sudah terhapus. Sehingga, klien/aplikasi hanya akan mendapatkan data yang tidak ditandai. Solusi ini dapat dicapai dengan minimal melalui Spring JPA.

Pada JPA, yang diubah cukup hanya kelas entitas saja. Hal-hal yang diperlu dilakukan:

  • Ubah operasi hapus dengan menandai kolum penanda. Misalnya pada baris 4 operasi SQL hapus dimodifikasi dengan mengubah nilai deleted menjadi ‘1’.
  • Ubah operasi baca dengan mengambil data yang kolom penandanya belum diset. Misalnya pada baris 5, dicari deleted tidak sama dengan ‘1’.
  • Buat sebuah kolom penanda. Misalnya pada baris 13, ditambahkan kolom deleted. 
  • Pada baris 12 dibuatkan sebuah anotasi @JsonIgnore agar kolom ini tidak muncul pada akses data melalui Repository. Jadi, kolom ini benar-benar transparan.
  • Jangan lupa diinisialisasi data deleted pada konstruktor.
// ... import omitted
@Entity
@SQLDelete(sql="UPDATE item SET deleted = '1' WHERE item_id = ?")
@Where(clause="deleted <> '1'")
public class Account{
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="ACCOUNT_ID")
    long id;

    String name;

    @JsonIgnore
    String deleted;

    // JPA needs default constructor
    public Account() {}

    public Account(String name) {
        this.name = name;
        this.deleted = '0';
    }

    // ... Setter and getter omitted
}

Semoga bermanfaat.

Memasang Ubuntu Wily (15.04) Pada HP Probook 440 G2 (HP EFI)
Wily Broke The Window

Memasang Ubuntu Wily (15.04) Pada HP Probook 440 G2 (HP EFI)

Ini adalah perjalanan JP memasang Kubuntu Wily dasar pada sistem HP Probook 440 G2. Mesin ini memiliki implementasi UEFI yang salah sehingga memerlukan ketekunan dalam membuat pemasangan berjalan baik.

Informasi Sistem

Informasi sistem yang didapatkan dari dmidecode.

Manufacturer: Hewlett-Packard
Product Name: HP ProBook 440 G2
Version: A3009DD10303
Serial Number: CND5325G0B
UUID: 9A822FFF-61BB-11E5-A123-9023330000FF
Wake-up Type: Power Switch
SKU Number: L7Z17PT#AR6
Family: 103C_5336AN G=N L=BUS B=HP S=PRO

Saya menjalankan LiveCD Kubuntu Wily. Jangan lupa pasang dulu debootstrap sebelum lanjut. Lalu, supaya tidak pusing, langsung jalan sebagai root saja.

sudo apt-get update && sudo apt-get install debootstrap
sudo su -

Saya agak curang sedikit. Sebelum kedua langkah tersebut, saya mengubah /etc/apt/sources.list mengarahkan ke KAMBING.ui.ac.id. Hal ini mengingat peladen fisiknya ada di ruang sebelah.

Pembersihan

Sistem ini dijangkiti oleh WIndows 7 sebesar satu tera. Dengan konfigurasi sebagai berikut:

Original HP Partition

Original HP Partition

Jadi kira-kira seperti ini:

/dev/sda1 ntfs primary “SYSTEM”
/dev/sda2 ntfs primary “WINDOWS XXX”
/dev/sda3 ntfs primary “HP_RECOVERY”
/dev/sda4 fat32 primary “HP_TOOLS”

Berhubung laptop ini sudah dibeli dengan perangkat lunaknya, saya memutuskan untuk tidak menghapus Recovery. Saya hanya perlu menghapus Windows.

Saya bingung dan memutuskan untuk menggunakan LVM. Satu tera untuk sistem agak berlebihan menurut saya. Cara berikut bisa dilakukan dengan GParted atau KDE Partition Manager. Akan tetapi, saya mau terlihat seperti heker:

parted -s /dev/sda set 2 lvm on
pvcreate /dev/sda2
vgcreate HP /dev/sda2

Saya kasih label “HP”, tapi Anda boleh beda. Kemudian, saya putuskan untuk buat partisi dasar 20G dan partisi rumah 20G.

lvcreate -L 20G -n root HP
lvcreate -L 20G -n rumah HP

mkfs.ext4 -L "Pusat Kehidupan" /dev/HP/root
mkfs.ext4 -L "Rumah Kita" /dev/HP/rumah

Selanjutnya proses pemasangan.

Debootstrap

Pasang debootstrap seperti biasa:

mount /dev/HP/root /mnt
debootstrap wily /mnt http://kambing.ui.ac.id/ubuntu/
mount /dev/HP/rumah /mnt/home

Saya sengaja memisahkan direktori rumah ke partisi berbeda. Mungkin butuh di kemudian hari.

Pasang Sebelum CHROOT

Karena sistem yang hendak dipasang menggunakan UEFI, mari kita lihat apakah ada UEFI.

ls -al /sys/firmware/efi/efivars/

Seharusnya ada isinya. Kalau tidak, berarti belum menggunakan UEFI. Silakan gunakan prosedur pemasangan yang biasa saja.

Selanjutnya, mari pasang beberapa sistem berkas:

mount none /mnt/proc -t proc
mount none /mnt/sys -t sysfs
mount /dev /mnt/dev -o bind
mount none /mnt/dev/pts -t devpts
mount none /mnt/sys/firmware/efi/efivars/ -t efivarfs

Baris terakhir diperlukan agar dapat mendaftarkan GRUB ke sistem UEFI.

Si HP ini menggunakan partisi EFI dengan NTFS. Padahal, UEFI bersabda harus menggunakan partisi FAT16/FAT32. Untungnya, ada 4 partisi dan salah satunya memakai FAT32. Jadi, saya buat saja satu direktori efi ke partisi ke-4 itu.

mkdir -p /mnt/boot/efi
mount /dev/sda4 /mnt/boot/efi/
mkdir -p /mnt/boot/efi/efi

Sekarang kita masuk ke sistem.

chroot /mnt /bin/bash

Selanjutnya, mari memasang sistem.

Memasang Bootloader dan Kernel

Yang lain mudah, tetapi yang ini agak sulit. Berikut hasil kalau proses sebelumnya berhasil:

# mount
/dev/mapper/HP-root on / type ext4 (rw,relatime,data=ordered)
none on /proc type proc (rw,relatime)
none on /sys type sysfs (rw,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=4018096k,nr_inodes=1004524,mode=755)
none on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
none on /sys/firmware/efi/efivars type efivarfs (rw,relatime)
/dev/sda4 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

Mari pasang LVM2

apt-get install lvm2

Lalu pasang GRUB dan kernel.

apt-get install linux-generic grub-efi-amd64

Sayangnya, karena implementasi HP yang unik dan menyalahi aturan UEFI, Kubuntu akan gagal mendaftarkan sistemnya dengan benar. Apalagi, secara sotoy [slang: sok tahu] skrip grub-install mengira bahwa UEFI ada di direktori pertama. Tetapi, Anda bisa juga beruntung mendapatkan skrip membaca dengan benar.

Saya tidak suka digantung. Mari lihat entri ubuntu dipasang pada UEFI:

# efibootmgr
BootCurrent: 
Timeout: 0 seconds
BootOrder: 0000
Boot0000* ubuntu

Selain saya tidak tahu entri “ubuntu” mengarah ke mana, saya juga tidak suka dengan label yang hanya “ubuntu”. Mari pasang secara benar.

Pertama-tama, hapus “ubuntu”. Perhatikan bahwa entri Ubuntu ada pada indeks 0000.

efibootmgr -b 0000 -B

Selanjutnya, mari pasang label yang baik dan benar.

efibootmgr  -c -d /dev/sda -p 4 -l "\efi\ubuntu\grubx64.efi" -L "OS Sesungguhnya"

Berikut penjelasan parameter:

  • -c, buat entri baru.
  • -d /dev/sda, EFI yang ada di perangkat /dev/sda (harddisk utama).
  • -p 4, aplikasi EFI ada di partisi keempat.
  • -L “OS Sesungguhnya”, label entri. Anda bisa mengubah yang lainnya.

Selanjutnya saat menyalakan laptop, entri “OS Sesungguhnya” sudah ada di dalam OS.

Dan Pemasangan pun Berlanjut Normal

Selanjutnya membosankan seperti bootstrap yang lainnya.

sudo apt-get install ssh vim sudo
sudo adduser pengguna
sudo adduser pengguna sudo
sudo apt-get install kubuntu-desktop yakuake

Terakhir, muat ulang dan masuk ke sistem.

Catatan

Saya tidak tahu kelakuan HP ini. Pertama-tama saya harus boot dengan USB Kubuntu Live terpasang. Kemudian, ketika sudah masuk ke sistem terpasang, USB dilepas. Saya lalu kembali menjalankan efibootmgr untuk menghapus entri yang sudah ada dan memasang kembali entri “OS Sesungguhnya”.

Do I have to write this on English?

Mengubah Format PEM (Apache/NGINX) ke Keystore JAVA

Mengubah Format PEM (Apache/NGINX) ke Keystore JAVA

Untuk organisasi/individu yang memegang domain dengan banyak sub-domain, biasanya dibeli sertifikat wildcard. Dengan sertifikat wilcard, tak perlu membeli sertifikat per sub-domain. Hanya saja, biasanya format yang diberikan adalah PEM untuk peladen HTTP semacam Apache2 atau NGINX.

Bagaimana dengan peladen berbasis Web macam Tomcat?

Saya asumsikan sudah ada tiga berkas ini:

server.key
Kunci privat peladen.
server.crt
Sertifikat peladen yang sudah ditandatangani oleh CA.
ca.cert
Sertifikat CA yang menandatangani sertifikat peladen.

Selanjutnya, ubah bentuk X.509 ke format PKCS12 dengan OpenSSL:

openssl pkcs12 -export -in server.crt -inkey server.key -out keystore.p12 -name red5 -certfile ca.cert

Anda akan ditanyakan sandi baru. Jangan lewati karena proses berikutnya butuh sandi tersebut! Isi sandi dengan sandi yang aman.

Selanjutnya, impor kunci PKCS12 tersebut ke sebuah keystore Java:

keytool -importkeystore -deststorepass ahs8kahLuvu3nahb -destkeypass ahs8kahLuvu3nahb -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass ahs8kahLuvu3nahb -alias red5

Saya menggunakan PWGen untuk membuat sandi acak. Mohon ganti ahs8kahLuvu3nahb dengan sandi yang Anda telah masukkan sebelumnya pada proses openssl.

Selesai. Anda kini sudah memiliki keystore.jks yang siap dipakai oleh aplikasi Java untuk membuat koneksi SSL/TLS.

Selamat mencoba.

Tentang Pengembangan Laman Situs

Tentang Pengembangan Laman Situs

Laman Depan

Saat ini, ada konsep yang bernama landing page. Inti dari landing page adalah konsep Call To Action (CTA). Ada sebuah tombol atau borang yang mengajak langsung pengunjung untuk beraksi. Aksi yang dimaksud misalnya mengajak untuk mendaftar atau membeli.

Kebetulan situs ini tidak untuk kepentingan komersial. Bahkan, Anda bisa saja menolak semua cookies yang ada di situs ini karena itu dari pihak ketiga. Ya, saya menggunakan tombol CTA untuk ke halaman daftar tulisan blog.

Saya menggunakan LayerSliderWP yang telah dibeli oleh Humas UI untuk membuat tampilan. Tematik yang saya gunakan (Limitless) sudah mendukung langsung. Tinggal saya mempelajari tulisan yang ada.

Poster

Saya iseng-iseng membuat sebuah poster dengan cara yang benar karena sayang melihat poster web hanya sebuah satu gambar JPEG. Kerap kali kita senang membuat poster/infografis daring bermodalkan sebuah gambar besar. Sayangnya, mesin-mesin pencari tidak dapat menangkap isi data poster/infografis tersebut. Sehingga, informasi yang sebenarnya ingin disebarkan ke web menjadi terbatas saja. Selain itu, ukuran menjadi sangat besar.

Untuk itu, perlu dibuatkan sebuah poster/infografis ala web. Saya menggunakan RevSlider yang telah dibeli Humas UI sebagai perkakas.

Konsepnya sama seperti menggunakan penyunting grafis seperti GIMP/Photoshop. Gambar dijadikan beberapa lapisan (layer). Beberapa lapisan yang berisi info berupa tulisan biasa. Untuk ikon dan gambar orang, misalnya, baru digunakan lapisan grafis.

Basi, ‘dong?

Tentu tidak! Dengan adanya fonta daring (web font) yang dapat diakses dari Google Fonts, dapat dibuat tulisan dengan jenis huruf yang nyeleneh seperti yang dijumpai pada komputer pribadi.

Tentunya, pembuatan poster ICACSIS 2015 yang saya buat jauh dari sempurna. Ada beberapa perbaikan yang saya pikir perlu:

  1. Menggunakan flat design dengan menghindari latar belakang gambar. Selain lebih sederhana, ukuran total menjadi lebih kecil.
  2. Menghitung piksel yang benar sehingga konsisten pada semua tampilan.
  3. Belajar desain yang lebih menarik. 🙂

Demikianlah, saya masih dalam taraf belajar.

Gambar Latar

Dari studi kasus situs IBM, ada dua hal yang saya dapat pelajari, yakni gambar yang digunakan untuk latar blok CTA dan gambar yang digunakan untuk efek paralaks. Selain itu, permainan warna yang digunakan oleh IBM cenderung warna-warna kalem dan komposisi foto yang warnanya terbatas sehingga dapat dikompresi dengan ukuran yang kecil.

Gambar untuk CTA

Yang menjadi misteri adalah ketika menghitung berapa dimensi gambar latar, kalau pun seharusnya menggunakan gambar latar. Kalau saya lihat dari IBM.com pada laman MobileFirst-nya, mereka menggunakan dimensi 1600×400px dan 1600×520px. Di beberapa laman lainnya ada yang 1600×450px.

Gambar untuk Parallax

Untuk tipe gambar parallax, dimensi yang digunakan oleh IBM pada laman cloud computing adalah 1480×987px.

Terakhir

Saya masih penasaran untuk membuat landing page yang bagus. Saya lihat, situs-situs seperti IBM minim animasi. Mungkin untuk mengurangi distraksi dan membuat berat sistem.

Ah, saya jadi ingin mengoprek lebih lanjut.

WordPress Modus Pemeliharaan

WordPress Modus Pemeliharaan

WordPress mematikan semua aktivitas saat diperbaharui. Dia akan muncul halaman Dalam Pemeliharaan (Maintenance Mode). Sayangnya, tampilan yang ada saat ini kurang menarik.

Saatnya mengubah tampilan menjadi lebih baik.

Buat Halaman PHP maintenance.php

Tanpa perlu plugin, cukup buat sebuah berkas PHP di wp-content/maintenance.php yang berisi:

<?php
$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
    $protocol = 'HTTP/1.0';
    header( "$protocol 503 Service Unavailable", true, 503 );
    header( 'Content-Type: text/html; charset=utf-8' );
?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Maintenance mode</title>
    <meta name="msapplication-TileColor" content="#5bc0de" />
    <meta name="msapplication-TileImage" content="assets/img/metis-tile.png" />

    <!-- Bootstrap -->
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css">

    <!-- Font Awesome -->
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css">
  </head>
  <body class="error">
    <div class="container">
      <div class="col-lg-8 col-lg-offset-2 text-center">
        <div class="logo">
          <h1>Teehee.... </h1>
        <img src='/wp-content/uploads/Maintenance.png'>
        </div>
        <p class="lead text-muted">Oops, you caught us upgrading. Please refresh this page a minute later.</p>
      </div>
    </div>
  </body>
</html>
<?php die(); ?>

Berkas ini sebenarnya hanya modifikasi dari modus pemeliharaan yang dimiliki WordPress. Saya menambahkan tiga berkas: dua berkas CSS yang ada di CDN dan satu berkas gambar (wp-content/uploads/Maintenance.php) yang saya buat sendiri menggunakan MyPaint. Klik gambar untuk mendapatkan kode sumber.

maintenis

A custom maintenance mode.

Bacaan Lebih Lanjut