Kamis, 09 Januari 2020

Sudah lebih dari 2 tahun tidak mengisi blog ini. Kali ini saya akan membagikan cara web scraping kualitas udara dari website Kementerian Lingkungan Hidup dan Kehutanan (http://iku.menlhk.go.id/aqms/) menggunakan PHP dengan langsung menunjuk div/class yang akan diambil datanya. Berikut kodenya.

<?php
    //url target yang akan diambil datanya
    $html = file_get_contents('http://iku.menlhk.go.id/aqms/');
    /*
data yang akan diproses pada $html kurang lebih seperti ini:
<div class='col-md-6'>
<div class='data-tabular'>
<div class='prop'>BALIKPAPAN_BB</div>
<div class='kabkota'>Kota Balikpapan</div>
<div class='prop'>propinsi Kalimantan Timur</div>
<div class='emot'>
<img src='img/icon/1.png'>
</div>
<div class='desc'>
<div class='ispu'>ISPU</div>
<div class='nilai' style='background: #00cc00'>1</div>
<div class='param'>Parameter</div>
<div class='namaparam' style='background: #00cc00'>SO2</div>
<div class='tanggal'>Tanggal</div>
<div class='isitanggal' style='background: #00cc00'>2020-01-02 15:00:00</div>
<div class='stasiun'>Kriteria</div>
<div class='namastasiun' style='background: #00cc00'>BAIK</div>
</div>
</div>

</div>
    */

    $dom = new DOMDocument;
    @$dom->loadHTML( $html );
    $xp = new DOMXPath( $dom );

//div atau class parentNode yang akan diambil datanya
$query = '//div[@class="desc"]';
    $col=$xp->query( $query );

    if( $col && $col->length > 0 ){

        $arr=array();

        foreach( $col as $node ){

//div atau class childNode yang akan diambil datanya  $query=sprintf('div[@class="%s"]|div[@class="%s"]|div[@class="%s"]|div[@class="%s"]','nilai','namaparam','isitanggal','namastasiun');
            $nodes=$xp->query( $query, $node );
            if( $nodes->length > 0 ){
                foreach( $nodes as $item )$arr[]=$item->nodeValue;
            }
        }

        if( !empty( $arr ) ){
            $chunks=array_chunk( $arr, 4 );
        } 
    }

 echo '
        <table>
            <tr>
            <th>Kab/Kota</th>
                <th>ISPU</th>
                <th>Parameter</th>
                <th>Tanggal</th>
                <th>Kriteria</th>
            </tr>';  

        foreach( $chunks as $chunk ){
            echo "
            <tr>
            <td></td>
                <td>{$chunk[0]}</td>
                <td>{$chunk[1]}</td>
                <td>{$chunk[2]}</td>
                <td>{$chunk[3]}</td>
            </tr>";
        }
        echo '
        </table>';
?>

hasilnya sebagai berikut:


Selamat mencoba dan selamat berkarya.

Senin, 03 April 2017

Leverage browser caching merupakan masalah yang sering muncul ketika kita mengecek/menganalisa performa website kita dengan GTMETRIX,

Berikut adalah contoh script agar optimasi leverage browser caching dan E-Tag teratasi. Jangan lupa disisipkan pada file .htaccess yang ada di root web directory.

<FilesMatch "\.(css|js|htc|CSS|JS|HTC)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header set Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag None //untuk e-tag
</FilesMatch>
<FilesMatch "\.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|HTML|HTM|RTF|RTX|SVG|
SVGZ|TXT|XSD|XSL|XML)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header set Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag None //untuk e-tag
</FilesMatch>
<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|
gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|
odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|
tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|
AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|MDB|MID|MIDI|
MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|MPP|OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|
PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|TAR|TIF|TIFF|TTF|TTC|WAV|WMA|WRI|XLA|
XLS|XLSX|XLT|XLW|ZIP)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header set Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag None //untuk e-tag
</FilesMatch>

Jika merasa masih kurang silahkan ditambahi jenis extensionnya.

Selamat mencoba dan terima kasih kunjungannya.

Selasa, 14 Juni 2016

Belajar hal baru seputar perkembangan ilmu komputer merupakan kewajiban seorang programmer. Sayangnya buku yang berisi tentang ilmu komputer tidaklah murah. Salah satu solusinya yang dapat dilakukan adalah berlanganan ebook gratis.
Packtpub.com menyediakan ebook gratis yang dapat di claim setiap hari oleh pelanggannya bisa didownload dalam bentuk pdf, epub, mobi, kindle, bahkan source code filenya. 
Untuk bisa mengakses eBook tersebut, lakukan registrasi terlebih dahulu dengan memasukkan nama, email, password anda.
Setelah itu kita tinggal mengunjungi alamat Packtpub Free Learning -> Login User dan    . Tiap hari akan ada buku gratis yang siap di claim jadi sempatkan diri membuka situsnya dan dapatkan ebook gratis tiap hari. 


Jumat, 08 April 2016

Script menutup modal box atau dialog box tidak selalu membuahkan hasil seperti yang kita harapkan. Kadang berhasil, kadang pula meninggalkan backdrop seperti punya saya ini. Mungkin terjadi karena saat proses close ter override dengan proses yang lain.


scriptnya:

<!-- Trigger the modal with a button -->
<input type="hidden" id="btn-payment" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">

<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Pembayaran</h4>
      </div>
      <div class="modal-body">
      </div>
      <div class="modal-footer">
        <button class="btn btn-danger" id="custom-close" data-dismiss="modal" aria-hidden="true">Batal</button>
<button id="simpan-payment" class="btn btn-success">Bayar</button>
      </div>
    </div>
  </div>
</div>
dan JS nya seperti berikut
 $("#simpan-payment").click(function(){
//berbagai proses dan setelah itu menutup modal   
 $(".close").click();
})
berbagai cara saya coba mulai dari
1. $(".close").click();
2. $('#myModal').modal('hide');
3. $("#custom-close").click(); 

ketiganya hanya menutup modal box dan meninggalkan backdrop(mungkin hanya terjadi pada project tertentu). Berikut solusi untuk menutup modalbox yang meninggalkan backdrop.

setTimeout(function(){
           $("[data-dismiss=modal]").trigger({ type: "click" });
},100)

Terima Kasih atas kunjungannya dan Semoga Bermanfaat.

Selasa, 19 Januari 2016

Array
Array adalah variable yang kompleks yang menyimpan beberapa atau sekelompok nilai dengan nama variabel tunggal. 

Jenis Array di PHP
Ada 3 jenis array yang dapat dibuat di PHP
Indexed array — Array dengan index angka.
Associative array — Array dengan nama dan nilai yang spesifik.
Multidimensional array — Array yang berisi satu atau lebih array didalamnya.


1. Contoh Indexed Array
Menyimpan warna merah, kuning, hijau dalam 1 variabel array.

<?php
$warna = array("merah", "kuning", "hijau");
?>
atau bisa ditulis seperti berikut:
<?php
$warna[0]="merah";
$warna[1]="kuning";
$warna[2]="hijau";
?>
Catatan: dalam indexed array, indeks secara otomatis dimulai dengan 0 dan nilai-nilainya dapat berupa tipe data apapun.

2. Contoh Associative array
Menyimpan nama dan usia seseorang dalam 1 variable usia.
<?php
$usia = array("hendi"=>24,"yanuar"=>25,"setia"=>26);
?>
atau dapat juga ditulis:
<?php
$usia["hendi"] = 24;
$usia["yanuar"] = 25;
$usia["setia"] = 26;
?>

3. Multidimensional array 
Array multidimensi adalah array dimana setiap elemen juga bisa menjadi array dan setiap elemen dalam sub-array dapat berupa array atau lebih berisi berbagai dalam dirinya sendiri dan sebagainya. Contoh dari array multidimensi seperti berikut:

<?php
$kontak = array(
array(
"nama" => "hendi",
"email" => "hendi@hendi.com",
),
array(
"nama" =>"yanuar",
"email" =>"yanuar@hendi.com",
),
);
echo json_encode($kontak);
?>
maka hasilnya seperti berikut:
[{"nama":"hendi","email":"hendi@hendi.com"},{"nama":"yanuar","email":"yanuar@hendi.com"}]

jika ingin mengambil email hendi:

<?php
echo $kontak[0]["email"];
?> 

Sekian dulu pembahasan tentang array pada php ada kurang lebihnya mohon maaf.
Terima kasih atas kunjungannya.

Selasa, 29 September 2015

Setelah laptopku terupgrade dari windows 7 ke windows 10, aku menemukan beberapa masalah seperti start menu yang tidak berfungsi, aplikasi cortana critical error, edge crash. Pada awalnya aku mengira kalau semua itu karena terkena virus atau malware sebab laptopku tak terinstall antivirus apapun kecuali windows defender.
Pada saat membaca-baca di forum ternyata tidak semua program lama yang support jika di install di windows 10, jika dipaksa maka terjadi error. Microsoft pada website resminya dengan alamat Windows Compability Center menyediakan layanan untuk memastikan apakah program yang akan diinstall support dengan versi windows yang kita punyai.

Pastikan aplikasi yang akan diinstall compatible dengan windows yang kita punyai.
semoga bermanfaat
Subscribe to RSS Feed Follow me on Twitter!