Rezha Julio

Hi!
My name is Rezha Julio
I am a chemist graduate from Bandung Institute of Technology. Currently working as Data Engineer at Traveloka.
You can reach me by email:

contact@rezhajulio.id

, @ Q Q

Powered by Hugo

filter by tags

Terbaru di Wordpress 3.8

time to read 2 min | 303 words

Tema default baru dan 8 pilihan tema admin yang cantik

Kalau kamu belum upgrade wordpress kamu ke 3.7, lebih baik tidak usah, karena sekarang telah hadir wordpress 3.8. Yaaay! :D. Karena upgrade kali ini adalah major version, maka update otomatis tidak otomatis berjalan dan kamu perlu menekan tombol upgrade di wordpress kamu.

Perubahan versi 3.7 kebanyakan tidak banyak terlihat dari sisi front-end, namun di versi 3.8 kali ini perubahannya sangat terlihat. Admin interface di versi ini telah dirombak total!

Kalau kamu hanya lihat sekilas, mungkin akan terlihat mirip dengan sebelumnya, tapi kalo kamu perhatikan lebih baik, akan terlihat bahwa ada cukup banyak perubahan, diantaranya:

  • Banyak menggunakan Flat Design, yang sekarang ini lagi tren.
  • Design responsive dalam artian akan tampil dengan baik di ukuran layar yang berbeda-beda. Dan akses melalui smartphone sekarang makin baik.
  • Default font menggunakan Open Sans, menjadikan tampilan lebih jernih dan rapi.
  • 8 warna yang bisa kamu pilih untuk kamu pakai sebagai admin theme.
admin theme

Tampilannya gw rasakan sedikit lebih cepat. Sebagian besar halaman berukuran 300kb dan beberapa yang cukup besar berukuran 500kb. Menurut gw ukuran ini masih dapat berkurang lagi jika team wordpress merubah animasi yang menggunakan javascript ke animasi menggunakan CSS3.

Akses dari smartphone dan tablet sudah sangat baik. Menurut hasil percobaan saya, akses langsung dari smartphone untuk mengakses admin wordpress lebih baik hasilnya dibanding menggunakan aplikasi wordpress yang tersedia di Play Store.

Theme baru

Theme baru

Ya, tepat sekali. Hampir setiap major version, akan selalu ada theme wordpress baru yang hadir secara default. Kali ini hadir theme Twenty Fourteen bersama wordpress 3.8. Theme ini mengusung style magazine dan sudah 100% responsive. Content wordpress loe dapat dimunculkan dalam bentuk slide ataupun grid. Tema dan manajemen widget nya pun sangat baik dalam theme default wordpress kali ini.

Perubahan lainnya dari wordpress 3.8 umumnya adalah bugfix, list perubahan seluruhnya dapat kamu lihat di http://codex.wordpress.org/Version_3.8

Fitur baru di PHP 5.6

time to read 3 min | 619 words

All the new feature is awesome!

Baru-baru ini, team core PHP baru saja merilis versi terbaru dari PHP, yakni PHP 5.6.0 Beta 1. Saya mencoba untuk mengcompile nya di komputer saya dan mencicipi fitur baru dari PHP 5.6 ini. Ternyata cukup banyak fitur baru di PHP versi ini yang sangat membantu untuk pengembangan aplikasi yang kita buat. Berikut adalah ulasan saya.
PHP

Constant Scalar Expressions

Sebelum PHP 5.6 deklarasi constant hanya bisa digunakan dengan nilai static. Di PHP 5.6, constant dapat dideklarasikan dengan menggunakan aritmatika dasar ataupun struktur logika dasar.

<?php  
#save as const.php
class Work {  
  const SALARY = 2000;
}

var_dump(Work::SALARY);  
<?php  
#save as const56.php
class Work {  
  const BONUS = 500;
  const SALARY = 2000 + self::BONUS;
}

var_dump(Work::SALARY);  

Bisa dilihat bahwa pada file const56.php, constant SALARY dideklarasikan dengan penjumlahan. Hal ini bisa dilakukan di PHP 5.6, sedangkan di PHP 5.5 akan terjadi syntax error.

PHP1

Argument Unpacking

Ketika kamu menggunakan sintaks terbaru PHP 5.6 yaitu ... (ya, tanda titik tiga kali), kamu bisa mengubah array dan transversable object menjadi argument list. Di bahasa pemrograman Ruby, sintaks ini dikenal sebagai splat operator. Untuk lebih mudahnya lebih baik kita lihat contoh kode berikut:

<?php  
function jumlah($a, $b, $c) {  
  return $a + $b + $c;
}

# Berjalan di semua PHP 5
jumlah(1, 2, 3); # Returns 6  

Lalu bagaimana jika angka yang saya miliki berada di dalam sebuah array ?

<?php  
function jumlah($a, $b, $c) {  
  return $a + $b + $c;
}
$number = [1,2,3]

#disini kita menggunakan fungsi call_user_func_array
#berjalan di semua versi PHP 5
call_user_func_array('jumlah', $number); # Returns 6

#menggunakan splat operator
#berjalan di PHP 5.6
jumlah(...$number);  

Bisa kamu lihat bahwa dengan menggunakan splat operator, kode yang kita miliki terlihat lebih rapi, dan kita tidak perlu memanggil fungsi tambahan dengan nama yang panjang dan jelek :D.

Variadic Function

Untuk kamu yang masih bertanya-tanya apa itu variadic function, artinya adalah sebuah fungsi yang menerima berapapun jumlah variabel yang diberikan. sebelum PHP 5.6, hal ini dimungkinkan dengan menggunakan func_get_args(), sedangkan di PHP 5.6 menggunakan splat operator (iya, splat operator yang disebutkan di poin di atas). Untuk lebih mudahnya saya akan kembali memberikan contoh menggunakan fungsi jumlah.

<?php  
# di semua versi PHP 5
function jumlah($integer) {  
  return $integer + array_sum(array_slice(func_get_args(), 1));
}

# di PHP 5.6
function jumlah(...$integer) {  
  return array_sum($integer);
}


jumlah(1); # Returns 1  
jumlah(1, 2); #Returns 3  
jumlah(1, 2, 3); # Returns 6  

Dengan sintaks baru ini, semua variabel yang diinputkan ke fungsi jumlah akan disimpan kedalam variabel integer dalam bentuk array. Kita tidak perlu lagi menggunakan func_get_args().

Selamat Tinggal Raw Post Data

Sejauh ini, PHP 5.6 telah menghilangkan 2 fitur lama, salah satunya adalah $HTTP_RAW_POST_DATA.

File Upload Lebih Besar

Sebelum PHP 5.6, upload file lebih dari 2 GB tidak memungkinkan karena PHP masih sangat buruk dalam menghandle dan memprosesnya. Namun, sekarang di PHP 5.6 sudah membuat hal ini menjadi mungkin. Sebagai tambahan, penggunaan memori di POST data sudah berkurang hingga 2 sampai 3 kalinya. Hal ini dikarenakan dihilangkannya raw post data seperti yang telah disebutkan diatas

Build in Debugger

Pada versi ini juga, PHP telah membundle debugger yang bernama PHPDBG. debuggerini dibundle bersama SAPI (Server API) dan dapat digunakan dari command line interface ataupun secara langsung dari code php kamu. Pelajari lebih lanjut tentang PHPDBG disini.

Fitur Baru Zip

Zip library di PHP juga mengalami penambahan fitur. Salah satu yang paling menarik adalah ZipArchive::setPassword($password) yang memungkinkan kita untuk memberi password pada file zip.

Kesimpulan

PHP 5.6 hingga saat ini masih belum ditentukan kapan versi stabilnya akan dirilis. Akan tetapi, fitur-fitur terbarunya cukup menjanjikan. Semoga ulasan singkat saya dapat membuat kamu untuk langsung mencoba PHP 5.6 begitu dirilis versi stabilnya. Jika ada kesalahan pada ulasan saya, mohon beritahu saya lewat komentar di bawah ini.

Push Notifications untuk Setiap Error di Laravel

time to read 1 min | 199 words

Karena user lebih memilih untuk menutup website daripada melaporkan error

Saya selalu kepengen tau ketika aplikasi yang saya bikin bermasalah. Ketika aplikasi yang kita buat bermasalah, pasti enak rasanya kalo ada notifikasi yang masuk ke smartphone kita, iya ga ?

Setting nya cukup mudah, kamu cuma perlu akun gmail dan aplikasi gmail di iOS atau android. Kalau kamu udah punya keduanya dan udah kamu setting supaya bisa dapet notifikasi email di smartphone kamu, maka kamu dah siap. Langkah yang kamu harus lakukan sebenernya mudah, kamu cuma harus buat aplikasi kamu kirim email setiap ada error.

Disini saya menggunakan fungsi mail() yang udah built-in di PHP karena saya ga butuh sesuatu yg spesial dan saya ga butuh tampilan email yg memukau. Simpel tapi efektif. Info yang saya butuhin cuma log error, IP pengguna dan server, sama URL dimana error terjadi. Untuk itu saya bikin script kayak gini

$ip = Request::server(‘REMOTE_ADDR’);
$host = getHostByAddr(Request::server(‘REMOTE_ADDR’));
$server = Request::server(‘HTTP_HOST’);
$url = $host.Request::server(‘REQUEST_URI’);
$message = "Client: $ip ($host)\r\nURL: http://$server\r\n\r\n$exception";
mail("you@gmail.com", "Exception at $server",$message, "From: $server <you@gmail.com>\r\nContent-Type: text/html;\r\nMime-Version: 1.0");  

Simpel kan ? Untuk Laravel 4 cukup kamu taruh di file app/start/global.php di bagian App::error. Di Laravel 3 ke bawah bisa kamu taruh di file application/config/error.php

Terbaru di Wordpress 3.7

time to read 2 min | 420 words

CMS Sejuta Umat

Saya suka banget sama frekuensi update WordPress. Mereka umumnya dirilis setiap beberapa bulan sehingga kita menerima beberapa fitur baru dan perbaikan bug. Tapi mereka juga tidak begitu sering update sampai kita harus update semua situs kita setiap hari.

WordPress 3.7 dirilis pada tanggal 24 Oktober 2013. kamu bisa download file dari wordpress.org atau kamu bisa klik link Updates dari dalam kontrol panel WordPress. WordPress menyatakan “you might not notice a thing, and we’re okay with that”.Kamu mungkin ga akan merasakan perbedaan dari update wordpress kali ini. Mungkin satu-satunya hal yang akan kamu perhatikan adalah WordPress membutuhkan lebih sedikit maintenance dari sebelumnya…

Latar Belakang Pembaruan Otomatis

Saya gak pernah mengalami masalah apapun dengan 1 click upgrade – selalu berhasil. Mulai sekarang , maintenance dan update keamanan yang dilakukan secara otomatis di background. Kamu hanya akan melihat tombol “Upgrade Now” ketika versi 3.8 dirilis.

Fitur ini mungkin tidak menarik bagi para administrator yang sangat berhati-hati diantara kalian , tetapi tim WordPress telah menguji pada 110.000 situs tanpa kegagalan satupun. Rata-rata , update memakan waktu kurang dari 25 detik dan hanya akan menempatkan WordPress dalam modus maintenance selama beberapa detik .

Untungnya , mengkonfigurasi dan menonaktifkan upgrade di background bisa dilakukan. Tunggu tutorialnya di blog gw ini.

Password Meter diperbaharui

Password Meter yang baru sekarang telah mengenal pola umum dari password yang lemah seperti nama , tanggal , urutan Keyboard , urutan nomor dan bahkan referensi dari budaya pop. Silahkan coba password kamu di password meter yang baru ini, dan jika hasilnya menunjukan bahwa password loe sangat lemah, sebaiknya kamu segera ganti password!

Pencarian

Fasilitas pencarian WordPress telah memadai tapi jarang menghasilkan hasil yang akurat seperti pencarian Google / Bing. WordPress 3.7 meningkatkan pencarian dengan relevansi yang lebih baik, bukan hanya berdasarkan tanggal yang cenderung memprioritaskan posting blog terbaru di atas halaman . Misalnya, istilah pencarian yang sesuai judul akan muncul ke bagian atas daftar. Ini agak sulit untuk mengevaluasi perbaikan yang telah dilakukan kecuali kamu memiliki wordpress 3.6 dan 3.7 dengan konten yang identik , tetapi tes dasar yang saya lakukan tampak lebih baik.

Jika itu tidak cukup …

  • Perbaikan aksesibilitas telah dilakukan

  • Codex dan sistem dokumentasi telah diperbarui

  • Lebih dari 437 bug telah diperbaiki oleh 211 pengembang

WordPress 3.7 adalah pembaruan besar. Belum ada perubahan mendasar ke core wordpress, jadi gw menduga kebanyakan plugin dan tema akan kompatibel . Kecuali loe tahu sebaliknya?

Jika semua berjalan dengan baik , WordPress 3.8 akan dirilis pada akhir 2013 . Kita mungkin melihat dashboard , halaman tema dan fasilitas pencarian baru.

Bundled Javascript di Yii Framework

time to read 2 min | 291 words

Ga perlu include jquery lagi.

Tahu gak sih kamu kalau Yii Framework telah menyediakan beberapa file JavaScript di dalam paketnya? Jadi kalau kamu ingin menyertakan sebuah file JavaScript ke dalam projek Web, kamu mungkin bisa cek dulu apakah Yii sudah punya JavaScript itu atau belum. Jika sudah ada, maka kamu gak perlu download dan manual meng-include JavaScript tersebut lagi, tetapi cukup memanggil fungsi di Yii saja.

Yii mempunyai beberapa JavaScript berguna yang siap dipakai di dalam sistemnya. Contohnya Jquery dan JQuery UI. Misalnya kamu perlu menggunakan Jquery UI, maka kamu cukup menulis sintaks di bawah untuk meng-include-nya

Yii::app()->clientScript->registerCoreScript(‘jquery.ui’);  

Untuk mengetahui Yii memiliki script inti apa saja, kita bisa mengecek di folder Yii Framework sendiri, tepatnya di framework/web/js/packages.php. Berikut beberapa file JavaScript yang terdapat di dalam Yii Framework:

  • jquery: Ini merupakan file jQuery yang terkenal itu. Secara default, Yii akan menggunakan file jQuery yang sudah terkompres. Hanya pada saat kondisi debug, Yii meng-include file jQuery biasa.

  • multifile: Berfungsi sebagai upload beberapa file. Multifile di Yii menggunakan jQuery plugin multiple file upload dari Fynework.com. Biasanya kita tidak akan meng-include manual file ini, karena JavaScript ini dipakai CMultiFileUpload.

  • cookie: Untuk mengatur cookie di jQuery. File JavaScript ini diambil dari jQuery-Cookie Klaus Hartl.

    jquery.ui: jQuery User Interface memiliki segudang fungsi UI seperti kalender, fungsi drag dan drop, fungsi autocomplete dan lain-lain yang berbasis jQuery.

  • metadata: Salah satu plugin jQuery. Fungsinya mengambil nilai metadata dari sembarang atribut ataupun kelas. Jika ingin tahu lebih lanjut silahkan kunjungi situs jQueryMetadata.

Sebenarnya script-script inti ini ada, dikarenakan Yii sendiri juga memerlukannya. Misalnya ada sebuah script inti yang bernama rating yang sebetulnya digunakan oleh CStarRating. Tetapi kita bisa saja include sendiri karena memerlukannya untuk kasus tertentu. Biasanya saya pribadi pada umumnya hanya membutuhkan jquery dan jquery.ui. Kalau kamu sendiri bagaimana?

Menggunakan Hashing API untuk Hash Password di PHP 5.5

time to read 3 min | 617 words

Hari gini masih pake MD5 ?

Menggunakan bcrypt adalah cara terbaik untuk hashing password, tetapi sejumlah besar developer masih menggunakan algoritma yang lebih tua dan lebih lemah seperti MD5 dan SHA1. Banyak developer PHP bahkan tidak menggunakan salt saat hashing. API hashing baru di PHP 5.5 bertujuan untuk menarik perhatian terhadap bcrypt sementara menyembunyikan kompleksitasnya. Pada artikel kali ini saya akan membahas dasar-dasar penggunaan API hashing baru PHP.

Hashing API baru memiliki 4 fungsi sederhana:

  • password_hash() – digunakan untuk hashing password.
  • password_verify() – digunakan untuk memverifikasi password terhadap hash nya.
  • password_needs_rehash() – digunakan ketika password perlu di hash ulang.
  • password_get_info() – memberikan info tentang algoritma hasing yang digunakan serta option yang digunakan ketika hashing sebuah password

Sejumlah besar developer PHP masih menggunakan algoritma hashing yang sangat tua dan lemah, seperti MD5 dan SHA1.


password_hash()

Meskipun fungsi crypt() aman, telah dianggap oleh banyak programmer bahwa fungsi ini terlalu rumit dan rawan kesalahan. Beberapa developer kemudian menggunakan salt dan algoritma yang lemah untuk menghasilkan hash dari sebuah password, misalnya:

<?php  
$hash = md5($password . $salt);

Tetapi fungsi password_hash() dapat membuat kode kamu lebih aman. Ketika kamu membutuhkan sebuah password untuk di hash, tinggal masukkan password ke dalam fungsi dan kamu akan mendapatkan hash yang selanjutnya disimpan ke database.

<?php  
$hash = password_hash($password, PASSWORD_DEFAULT);

Mudah kan! Parameter pertama adalah string password yang perlu hash dan parameter kedua menentukan algoritma yang harus digunakan untuk menghasilkan hash.

Algoritma standar dari fungsi tersebut adalah bcrypt, tetapi algoritma yang lebih kuat dapat ditambahkan sebagai default di masa yang akan datang dan dapat menghasilkan string yang lebih besar. Jika kamu menggunakan PASSWORD_DEFAULT dalam proyek kamu, pastikan untuk menyimpan hash dalam kolom yang memiliki kapasitas lebih dari 60 karakter. Mengatur kapasitas menjadi 255 karakter mungkin menjadi pilihan yang baik. Kamu juga bisa menggunakan PASSWORD_BCRYPT sebagai parameter kedua. Dalam hal ini hasilnya akan selalu 60 karakter.

Yang penting di sini adalah bahwa kamu tidak harus memberikan salt atau parameter cost. API baru ini akan mengurus semua itu untuk kamu. Dan salt merupakan bagian dari hash, sehingga kamu tidak harus menyimpannya secara terpisah. Jika kamu ingin memberikan salt atau cost kamu sendiri, kamu dapat melakukannya dengan memberikan argumen ketiga untuk fungsi.

<?php  
$options = ['salt' => fungsi_salt(), //buat fungsi untuk generate salt
'cost' => 12 // default option ini adalah 10  
]
$hash = password_hash($password, PASSWORD_DEFAULT, $options);

password_verify()

Sekarang kamu sudah melihat bagaimana untuk menghasilkan hash dengan API baru, mari kita lihat bagaimana untuk memverifikasi password. Ingat bahwa kamu menyimpan hash di database, tapi ketika pengguna log in , kamu mendapatkan password polos. Fungsi password_verify() mengambil password polos dan string hash sebagai dua argumen. Ia mengembalikan nilai true jika hash cocok dengan password pasangannya . Contoh:

<?php  
if (password_verify($password, $hash)) {  
// Sukses!
}
else {  
// Password salah!
}

password_needs_rehash()

Bagaimana jika kamu perlu mengubah parameter salt dan cost untuk string hash? Ini mungkin terjadi karena kamu memutuskan untuk meningkatkan keamanan dengan menambahkan salt yang lebih kuat atau parameter cost yang lebih besar. Selain itu, PHP dapat mengubah implementasi standar dari algoritma hashing. Dalam semua kasus ini, kamu akan ingin mengulangi hashing password yang ada.


password_get_info()

password_get_info() menerima hash dan mengembalikan sebuah array asosiatif yang terdiri dari tiga unsur:

  • algo - konstanta yang mengidentifikasi algoritma tertentu

  • algoName - nama algoritma yang digunakan

  • Options - berbagai pilihan yang digunakan saat menghasilkan hash

Kesimpulan

API baru untuk hashing password ini lebih mudah untuk dipakai daripada meraba-raba fungsi crypt(). Jika situs Web kamu saat ini berjalan pada PHP 5.5, maka saya sangat menyarankan agar kamu menggunakan API hashing baru. Kalau kamu menggunakan PHP 5.3.7 (atau yang lebih baru) dapat menggunakan library password_compat yang mengemulasi API baru ini dan secara otomatis menonaktifkan dirinya sendiri ketika versi PHP di upgrade ke 5.5.

RECENT SERIES

  1. java 101 (13):
    Apr 29, 2017 - Translating Scanner tokens into primitive types
  2. python data structure (5):
    May 03, 2017 - Enhance your tuples
  3. python function (2):
    Apr 16, 2017 - Lambda Functions in Python
  4. python generator (4):
    Apr 26, 2017 - Next, Function or Method ?

Friends of Rezha