Selasa, 04 Juli 2017

speed up postgresql: pg_restore

Untuk rekan-rekan yang mau restore data yang cukup besar, bisa menggunakan cara berikut ini:
  1. Open postgresql.conf
  2. Set shared_buffers (misal 512MB)
  3. Set maintenance_work_mem (misal 256MB)
  4. Set full_page_writes jadi off
  5. Set wal_buffers (misal 16MB)
  6. Set autovacuum jadi off
  7. Restart postgresql
Nb: Hanya untuk pg_restore

Rabu, 19 April 2017

Push ke Firebase Cloud Messaging di PHP

Apa itu Firebase?

Saya tidak menjelaskan ke arah sana, karena sudah pasti dan cukup memuaskan apa itu dan mekanisme kerja dari firebase sesuai dengan yang terlihat di websitenya.

Jadi langsung saja..

Sebenernya sudah banyak package yang menyediakan FCM, tapi kita coba kostum dikit sesuai dengan yang sudah dicontohkan di dokumentasi oleh firebase.

Sesuai dengan cara kerjanya sebenernya kita tinggal tembak saja ke app url yang diberikan.

Kita buat saja langsung classnya.
Saya menggunakan package Jyggen CURL, jadi pastikan temen2 sudah menyediakan package tersebut. Jangan lupa server keynya dimasukan.


use \Jyggen\Curl\Curl;
use \Jyggen\Curl\Request as Request;
class FirebaseManager
{
       private $key = 'yourfcmkey';
       private $appURL = 'https://fcm.googleapis.com/fcm/send';
       private $device_target;
       private $data;
       private $response;
       private $notification;
 public function sendPush()
 {
         $headers = array('Authorization:key=' . $this->key, "Content-Type: application/json");
         $fields = array();
         $target = $this->device_target;
         $fields['data'] = $this->data;
         if(is_array($target))
         {
             if (count($target) == 1)
             {
                   $fields['condition'] = "'".$target[0]."' in topics";
             }
             if (count($target) >= 2) 
             {
                   $topics = '';
                   foreach ($target as $k => $v)
                   {
                        if ($topics == '') 
                        {
                             $topics = "'".$v."' in topics";
                        }
                        else
                        {
                             $topics .= " || '".$v."' in topics";
                        }
                   }
                   $fields['condition'] = $topics;
             }
         }
         else
         {
             $fields['condition'] = "'".$target."' in topics";
         }
         $request = new Request($this->appUrl);
         $request->setOption(CURLOPT_POST, true);
         $request->setOption(CURLOPT_HTTPHEADER,$headers);
         $request->setOption(CURLOPT_SSL_VERIFYHOST, 0);
         $request->setOption(CURLOPT_SSL_VERIFYPEER, FALSE);
         $request->setOption(CURLOPT_POSTFIELDS, json_encode($fields));
         $request->execute();
         $this->response = $request->getResponse();
     }
     public function setData($push_data)
     {
      $this->data = $push_data;
     }
   public function setTarget($target)
   {
    $this->device_target = $target;
   }
   public function setNotification($notif)
   {
    $this->notification = $notif;
   }
     public function getResponse()
     {
      return $this->response;
     }
}


Cara pakainya tinggal di instansiasi saja.

$contoh = new FirebaseManager;
$contoh->setData($data);
$contoh->setNotification($notif);
$contoh->setTarget($target);
$contoh->sendPush();

Terimakasih

Rabu, 01 Maret 2017

Fizz Buzz dan Fibonacci serta Pemecahannya dalam PHP


Tulisan ini sebenarnya hanya untuk pengingat pribadi, karena dasar ini penting sebagai logika kita dalam penyelesaian masalah.

Pertanyaannya yang paling banyak ditemukan adalah mengenai fizz and buzz dan fibonacci.

Contoh kasus:
1. Buatkanlah program php untuk mencetak angka 1-100 dengan kriteria sebagai berikut:
  • apabila bilangan tersebut kelipatan 3 maka bertuliskan fizz
  • apabila bilangan tersebut kelipatan 5 maka bertuliskan buzz
  • apabila bilangan tersebut kelipatan 3&5 maka bertuliskan fizzbuzz
Jawaban:

// Memakai fungsi for dimulai dengan $i=1 dan akan bertambah terus sampai $i<=100
for($i=1; $i<=100; $i++){ 
if($i%3 == 0){
echo "Fizz ";
}
elseif($i%5 == 0){
echo "Buzz ";}
elseif($i%3 == 0 && $i%5 == 0){
echo "FizzBuzz ";}
else{
echo $i." ";}}
 2. Buatkanlah function php untuk mencetak bilangan fibonacci dengan contoh output 10 deret bilangan fibonacci

Jawaban:

function cetak_deret_fibonacci($jumlah){
$bilangan_awal = 0;
$bilangan_kedua = 1;
echo "$bilangan_awal $bilangan_kedua ";
for($i=0; $i<=$jumlah-2; $i++){
$hasil = $bilangan_awal+$bilangan_kedua;
echo "$hasil ";
$bilangan_awal = $bilangan_kedua;
$bilangan_kedua = $hasil;}}
//Cetak dengan function
cetak_deret_fibonacci(10);


Oke Mungkin cukup sekian, semoga berguna dan bermanfaat.