Selasa, 27 Maret 2018

Unknown

Yang Baru Pada Laravel 5.6

Laravel 5.6 - Laravel versi 5.6 baru dirilis sebagai versi mayor framework laravel saat ini. Versi Laravel yang terbaru ini membawa banyak fitur, dan kali ini kita akan membahas fitur-fitur yang dibawah oleh Laravel 5.6

Yang Baru Pada Laravel 5.6

Logging Improvements

Fitur yang paling besar yang disediakan oleh Laravel 5.6 adalah peningkatan logging. Dimana konfigurasinya dipindahkan dari config/app.php menjadi config/logging.php.

Disana kita bisa mengatur "stacks" yang mana dapat mengirimkan pesan log ke beberapa handler. Contohnya, kalian ingin mengirimkan pesan debug ke system log dan juga mengirimkan error log ke slack.

Single Server Task Scheduling

Jika kalian memiliki task scheduler yang berada di beberapa server, dimana setiap task tersebut akan berjalan sesuai dengan servernya masing-masing. Kalian bisa saja mengatur agar task tersebut hanya dapat pada satu server saja, yakni menggunakan method onOneServer().



$schedule->command('report:generate')
    ->monday()
    ->at('19.00')
    ->onOneServer();
Kalian diharuskan menggunakan driver memcached atau redis agar drive bawaan laravel ini dapat menggunakan fitur dari single server task scheduling pada Laravel versi 5.6 ini.

Dynamic Rate Limiting

Laravel versi 5.6 ini memperkenalkan dynamic rate limiting yang memberikan sebuah fleksibilitas dan memungkinkan kalian memberikan rate untuk setiap user dengan mudah




Route::middleware('auth:api','throttle:rate_limit,1')   
    ->group(function(){
        Route::get('/user',function(){
        //
        });
});
Contoh diatas tersebut, rate_limit merupakan sebuah atribut dari model App\User yang digunakan untuk menentukan jumlah request yang diperbolehkan untuk User pada waktu yang telah ditentukan.

Broadcast Channel Classes

Saat ini kalian dapat menggunakan channel classes pada file route/channels.php daripada kalian menggunakan closures. Untuk membuat class channel yang baru, di Laravel 5.6 ini kita dapat memberikan perintah make:channel :



php artisan make:channel MemberChannel
Selanjutnya kalian daftarkan channel diatas ke dalam file route/channels.php:



use App\Broadcasting\MemberChannel;

Broadcast::channel('member.{member}',MemberChannel::class);

API Controller Generation

Sekarang kalian bisa membuat resource controller untuk sebuah API yang mana resource tersebut mengabaikan aksi create dan edit yang tidak diperlukan. Sehingga create dan edit tersebut hanya berguna untuk resource controller yang mengembalikan HTML. Untuk membuat resource controller untuk keperluan API gunakanlah flag --api, seperti berikut:



php artisan make:controller API/UserController --api

Eloquent Date Casting

Kalian dapat mengkostumisasi format dari tanggal (date) Eloquent dan casting datetime secara sendiri:



protected $casts=[
    'date_of_birth'=>'date:Y-m-d',
    'created_at'=>'datetime:Y-m-d H:00'
];
Format ini digunakan pada model serialization untuk sebuah data array atau data JSON.

Blade Component Aliases

Pada Laravel 5.6 ini kalian dapat memberikan alias kepada komponen dari Blade untuk memudahkan kalian mengaksesnya. Contohnya, jika kalian ingin menyimpan komponen pada resources/views/components/warning.blade.php kalian dapat menggunakan method component() untuk mengaliaskannya.



Blade::component('component.warning','warning');
Selanjutnya kalian dapat merender file blade tadi denga alias yang telah kalian buat :



@component('warning')
    <p> Ini adalah komponen warning</p>
@endcomponent

Argon2 Password Hashing

Laravel 5.6 kini telah mendukung algoritma hasing terbaru untuk PHP 7.2 keatas. Kalian dapat mengontrol setiap driver hasing yang ingin kalian gunakan pada file config/hashing.php.

UUIID Methods

Kini tersedia dua method baru yang disediakan Laravel 5.6 pada Illuminate\Supports\Str, yakni untuk membuat Universal Unique Indetifier(UUID) menggunakan method uuid() dan untuk membuat UUID dengan timestamp yang akan memudahkan dan mengefisiensikan index pada database digunakan method orderedUuid().



return (string) Str::uuid();
return (string) Str::orderedUuid();

Bootstrap 4

Pada Laravel 5.6 untuk semua scaffolding terutama bagian frontend (kode yang digenerate) saat ini telah menggunakan Bootstrap 4.

Kesimpulan

Untuk Laravel 5.6 ini terdapat banyak fitur-fitur yang dapat memudahkan kita dalam mengerjakan projek yang sedang kita jalani. Untuk itu bagi kalian yang masih menggunakan Laravel versi 5.6 kebawah, saatnya bagi kalian untuk upgrade versi laravel kalian ke Laravel 5.6, agar kalian dapat menggunakan fitur-fitur baru yang disediakan Laravel 5.6
Read More

Sabtu, 24 Maret 2018

Unknown

Mengenal Format Data JSON

JSON - singkatan dari JavaScript Object Notation merupakan sebuah format dalam berbagi data. Bisa kita lihat, bahwa JSON turunan dari bahasa pemrograman JavaScript, akan tetapi format JSON ini tersedia untuk bahasa pemrograman lain seperti Python, PHP, Ruby dan Java. Biasanya JSON dilafalkan seperti nama orang yakni "Jason".


JSON menggunakan sebuah ekstensi .json yang berdiri sendiri. Pada saat kita definisikan kedalam format file lain (seperti .html), file tersebut dapat tampil didalam sebuah tanda petik sebagai JSON string atau dimasukkan kedalam variabel. Dengan format ini, kita dapat melakukan transfer data antar server web dengan client atau browser.

Karena mudah untuk dibaca dan juga ringan, JSON memberikan sebuah alternatif yang lebih baik dibandingkan dengan XML. Pada artikel ini akan membantu pembaca untuk memahami lebih dalam mengenai JSON, bagaimana cara menggunakan data dalam file JSON, serta struktur dan sintaks yang digunakan pada format JSON ini.

Sintaks dan Struktur

Objek JSON adalah sebuah format data key-value yang biasanya di render ke dalam bentuk kurung kurawal ({}). Ketika kita bekerja dengan JSON, kita akan sering bertemu dengan objek JSON yang disimpan dalam format file .json, tapi objek JSON ini dapat disimpan sebagai string di dalam sebuah program.

Objek JSON akan terlihat seperti berikut ini :



{
"nama" : "Deni",
"email" : "denisapri97@gmail.com",
"location" : "Indonesia",
"gender" : "Male"
}

Contoh diatas terlihat sangat singkat dan JSON dapat memiliki isi yang sangat banyak. Contoh diatas menggambarkan data diawal dan diakhir tanda { } dengan pasangan key-value diantara kedua tanda tersebut. Sebagian besar data yang digunakan pada JSON dienkapsulasi ke dalam sebuah objek JSON.
Pasangan key-value yang ada dalam format JSON memiliki tanda titik dua diantara keduanya "key" : "value". Setiap pasangan key-value dipisahkan oleh sebuah tanda koma, sehingga sebuah JSON akan terlihat seperti berikut ini : "key" : "value, "key" : "value", "key" : "value".

Key JSON berada disebelah kiri tanda titik dua, dimana dibungkus oleh tanda petik dua seperti : "key", dan dapat berupa string yang valid. Key setiap objek dalam JSON haruslah unik. Key dapat memiliki spasi dalam penginisialisasinya, namun lebih baik mengganti spasi dengan underscore agar mudah dalam proses ngoding.

Value JSON yang berada disebelah kanan tanda titik dua. Terdapat enam tipe data dasar yang digunakan dalam JSON yaitu
  • strings
  • numbers
  • objects
  • arrays
  • Booleans (true atau false)
  • null

Setiap tipe data yang akan dimasukkan sebagai value dalam JSON pasti akan mengingat sintaknya, jika string akan diberikan tanda petik dua, namun tidak dengan angka.

Dalam file .json kita pasti sering melihat format tersebut ditulis dalam beberapa baris, berikut contoh JSON yang ditulis satu baris saja.


{ "nama" : "Deni", "email" : "denisapri97@gmail.com","location" : "Indonesia"}

Menulis format JSON kedalam beberapa baris akan mememudahkan kita membacanya ketika data yang memiliki banyak data. JSON akan mengabaikan spasi disetiap elemennya, jadi kita dapat menambahkan spasi diantara key dan value sehingga akan lebih mudah dibaca, contohnya seperti berikut :


{
"nama" : "Deni",
"email" : "denisapri97@gmail.com",
"location" : "Indonesia"
}

Sejauh ini kalian telah melihat format JSON dalam bentuk sederhana, namun JSON dapat lebih komplek yang terdiri dari objek dan array bersarang. Selanjutnya kita akan membahas mengenai JSON yang lebih kompleks.

Bekerja dengan Data Kompleks pada JSON


Dapat diketahui bahwa JSON dapat menyimpan objek bersarang maupun array bersarang. Seperti data lainnya, objek dan array ini disimpan dalam sebuah key.

Objek Bersarang

Di dalam sebuah file user.json berikut ini, terdapat sebuah objek JSON yang didalam setiap value memiliki key-nya sendiri.



{
"Deni Sapri" : {
    "username" : "denisapri",
    "email" : "denisapri97@gmail.com",
    "location" : "Indonesia"
},
"Nur Ranti Fatimah" : {
    "username" : "noerafa",
    "email"    : "noerafa15@gmail.com",
    "location" : "Indonesia"
}
}
Pada contoh diatas bisa kita lihat, bahwa tanda kurung kurawal tersebut digunakan untuk membuat sebuah objek JSON bersarang dimana setiap user memiliki username, email, dan location.

Array Bersarang

Data dapat kita masukkan ke dalam format JSON menggunakan format array JavaScript sebagai value-nya. Untuk mengawali dan mengakhiri array pada JavaScript, digunakan tanda kurung siku [ ] . Kita dapat menggunakan array disaat bekerja dengan banyak yang dapat kita kelompokkan. Berikut contoh dari array bersarang pada JSON :


{
"Nur Ranti Fatimah" : {
    "username" : "noerafa",
    "email"    : "noerafa15@gmail.com,
    "location" : "Indonesia"
    "address" :[
        "street" : "Jalan Tirtonadi",
        "city" : "Pekanbaru",
        "province" : "Riau
    ]
}
}
Menggunakan format data bersarang di dalam sebuah JSON memungkinkan kita untuk menangani data yang lebih kompleks.

Kesimpulan

JSON merupakan sebuah format yang ringan dan mempermudah kita dalam berbagi, menyimpa serta bekerja dengan banyak data. Sebagai sebuah format data, JSON kini telah mendapatkan dukungan semakin meningkat dalam bentuk API (Application Programming Interface), seperti Twitter API dan Google Maps API. Kita mungkin akan jarang membuat sebuah file dengan tipe .json sendiri, namu dengan mengunduhnya dari sumber yang lain. Sebaiknya kita memikirkan bagaimana cara menggunakan JSON dengan baik pada program kita dari pada memikirkan struktur dari JSON nya sendiri.
Read More