Cara mudah belajar pemrograman komputer

Selasa, 30 Agustus 2016

Rute dengan banyak tujuan dengan google map api

Menanggapi pertanyaan di komentar pada postingan ini.
Mengenai bagaimana menentukan rute untuk tujuan lebih dari satu titik pada google map api.

Berikut script nya.


<!DOCTYPE html>
<html>
<head>
 <title>ROUTE MAP</title>
 <style type="text/css">
  html, body {
        height: 100%;
        margin: 0;
        padding: 0;
       }
       #map_canvas {
         height: 100%;
       }
 </style>
</head>
<body>
 <div id="map_canvas">  

 </div>



</body>
<script type="text/javascript" src="http://maps.google.com/maps/api/js"></script>  
<script type="text/javascript">
 //DUA VARIABLE BERIKUT DIPERLUKAN UNTUK RUTE
 var directionsDisplay;
 var directionsService = new google.maps.DirectionsService();


 (function() {  // fungsi untuk dijalankan ketika halaman web dubuka  
   var infowindow = null;  
      
   initialize(); // mengeksekusi fungsi initialize()  
     
  })();  
    
    function initialize() {  

     //BARIS DIBAWAH INI JUGA DIPERLUKAN UNTUK RUTE
     directionsDisplay = new google.maps.DirectionsRenderer();

        // Baris berikut digunakan untuk mengisi marker atau tanda titik di peta  
        var sites = [  
    
         ['Polinela', -5.358725,105.233413 ,1, '<h4>Politeknik Negeri Lampung</h4><p>Keterangan didalam marker</p>'], // pertama merupakan judul market, kedua adalah titik koordinan latitude, ketiga longitude, dan keempat merupakan z index (titik mana yang ditampilkan lebih dulu) untuk menentukan titik mana diatas titik mana, ketiga merupakan isi keterangan marker nya.  
         ['Unila', -5.364505,105.243442 ,2, '<h4>Universitas Lampung</h4><p>Keterangan didalam marker</p>'],  
         ['DJ',-5.3745833,105.2425024,3,'<h4>IBI DARMAJAYA</h4><p>Keterangan untuk marker</p>'],
         ['Rumah Sakit Advent',-5.392718, 105.261890,3,'<h4>Rumah Sakit Advent</h4><p>Keterangan untuk marker</p>']

   
        ];  
        var centerMap = new google.maps.LatLng(-5.364505,105.243442); // mengatur pusat peta  
          
        var myOptions = {  
          zoom: 15, // level zoom peta  
          center: centerMap, // setting pusat peta ke centerMap  
          mapTypeId: google.maps.MapTypeId.ROADMAP //menentukan tipe peta  
        }  
    
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); //menempatkan peta pada div dengan ID map_canvas di html  

        //BARIS DIBAWAH INI UNTUK MELETAKKAN RUTE PADA MAP "map_canvas" ^
      directionsDisplay.setMap(map);

        // setMarkers(map, sites); // memanggil fungsi setMarker untuk menandai titik di peta.  
          
        infowindow = new google.maps.InfoWindow({  
            content: "loading..."  
          });  
    
        var bikeLayer = new google.maps.BicyclingLayer();  
        bikeLayer.setMap(map); //memnunculkan peta  

        //BARIS DIBAWAH INI UNTUK MEMANGGIL FUNGSI calcRoute()
        calcRoute();   
      }  
    
        

        //FUNGSI CALCROUTE UNTUK MENGGAMBAR RUTE DARI TITIK A KE TITIK B / START ke END
        function calcRoute() {
    var start = '-5.358725,105.233413'; // Titik Start
    var end = '-5.3745833,105.2425024'; //Titik Akhir

    //================Tambahan dari tutorial sebelumnya==========================
    var daftartujuan = ["-5.358725,105.233413", "-5.364505,105.243442", "-5.3745833,105.2425024","-5.392718, 105.261890"];
    var jalur = [];
    for (var i = 0; i < daftartujuan.length; i++) {
        var address = daftartujuan[i];
        if (address !== "") {
            jalur.push({
                location: address,
                stopover: true
            });
        }
    }
    //===========================================

    var request = {
      origin:start,
      destination:end,
      //============Uni juga tambahan untuk jalur=======

           waypoints: jalur,
            optimizeWaypoints: false, //true untuk membiarkan google menentukan jalur terpendek. false untuk jalur berdasarkan uturan yang kita tentukan

      //===================
      travelMode: google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function(result, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(result);
      }
    });
  }
    
    
     
        function setMarkers(map, markers) {  
         //berikut merupakan perulangan untuk membaca masing masing titik yang telah kita definisikan di sites[];  
        for (var i = 0; i < markers.length; i++) {  
          var sites = markers[i];  
          var siteLatLng = new google.maps.LatLng(sites[1], sites[2]);  
          var marker = new google.maps.Marker({  
            position: siteLatLng,  
            map: map,  
            title: sites[0],  
            zIndex: sites[3],  
            html: sites[4]  
    
          });  
    
          var contentString = "Some content";  
          // berikut merupakan fungsi untuk mengatur agar keterangan marker muncuk ketika mouse diarahkan ke marker (mouse over)  
          google.maps.event.addListener(marker, "mouseover", function () {  
              
            infowindow.setContent(this.html);  
            infowindow.open(map, this);  
          });  
        }  
      }  
    

</script>

</html>

Semoga bermanfaat.

Apakah Mungkin untuk menerapkan algoritma tertentu pada proses pencarian rute pada google map api

bagaimana membuat pencarian rute terpendek menggunakan dijkstra? dengan titik awal di tandai dan titik tujuan di combo box. kalo bisa di post ke blog ya mas, terima kasih sebelumnya. :)

Halo sobat programmer, kembali lagi dengan coretan dari programmer goBlog.
Tulisan kali ini menanggapi email dari salah satu pembaca blog programmerGoBlog yang menanyakan perihal penerapan algoritma dijkstra dalam penentuan rute terpendek pada google map api v2.

Sejauh pengetahuan programmerGoBlog, untuk menggunakan google map api kita hanya bisa menggunakan apa yang sudah disediakan oleh google map, termasuk algoritma yang digunakan adalah algoritma milik google itu sendiri. Yang mana kita tidak bisa merubah atau memilih algoritma mana yang akan kita gunakan dalam penentuan jarak antar dua lokasi pada google map.
Karena pada dasarnya ketika kita menggunakan api, kita hanya meminta rute dari titik A ke titik B, dan yang menentukan rute terpendek adalah google map sendiri tanpa kita bisa ikut campur tangan terhadap algoritma yang mereka gunakan.

Sebagai tambahan pengetahuan, saya rasa google tidak menggunakan algoritma dijkstra untuk menentukan rute --atau setidaknya bukan dijkstra asli alias sudah hasil modifikasi mereka (red: google map). Programmer goBlog berasumsi demikian dikarenakan algoritma dijkstra itu sendiri terlalu simpel untuk diterapkan pada skala ini. Dalam kasus algoritma penentuan rute pada google map, penulis meyakini bahwa algoritma yang digunakan adalah A* yaitu sebuah algoritma yang banyak diterapkan untuk pencarian jalur dan graph traversal.

Jadi saya yakin sobat sudah bisa menyimpulkan dari penjelasan diatas bahwa kita tidak mungkin menerapkan algoritma tertentu ketika menggunakan google map api untuk menentukan rute, sebab google telah menentukan algoritma mereka sendiri dan kita tinggal menerima hasil dari algoritma tersebut dan menampilkan rute di peta google.

Demikian coretan singkat dari programmer goBlog kali ini, semoga bisa menjawab pertanyaan dari sobat semua yang mungkin memiliki pertanyaan yang sama atau mirip dengan ini.

Terimakasih telah berkunjung ke gubuk programmer GoBlog.

Senin, 09 Mei 2016

Koneksi database MySQL dengan CodeIgniter (CI)

Kali ini kita akan melanjutkan Tutorial Codeigniter, pada tulisan ini kita akan membahas Koneksi database MySQL dengan CodeIgniter (CI).
Pada tutorial sebelumnya kita telah belajar bagaimana cara instalasi codeigniter.
Sebelum kita menlanjutkan tentang menhubungkan codeigniter dengan MySQL kita akan mengenal terlebih dahulu konsep MVC (Model-View-Control) yang diusung oleh codeigniter.
Oke apa itu MVC? terlepas dari pengertian MVC secara resmi, MVC menurut programmer GoBlog adalah sebuah konsep untuk pengorganisasian/pengelompokan file-file berdasarkan fungsi dan kegunaanya. Seperti konsep MVC pada codeigniter yaitu memisahkan fungsi Pengolahan data (Model), fungsi kontrol alur data oleh Controller, dan fungsi untuk menampilkan data oleh View. Meskipun fleksibilitas dari codeigniter memungkinkan kita untuk tidak mengikuti konsep MVC ini, namun agar kita lebih mudah dalam pengorganisasian file ada baiknya kita mengikuti juga konsep MVC ini. Mengapa saya katakan kita bebas untuk memilih tidak mengikuti konsep MVC ini? karena kita bisa meletakkann fungsi view di controller, kita bisa meletakkan fungsi model juga pada controller.
Namun pada tulisan ini kita akan mencoba mengadopsi konsep MVC ini. Tidak perlu pusing, yang perlu kita pahami adalah, semua yang berhubungan dengan tampilan ada di View, semua yang berhubungan dengan pengolahan data maupun database kita serahkan pada model, dan controller kita gunakan untuk menggabungkan data yang diperoleh dari model dengan view.

Oke kita lanjut ke praktek.
Pada tulisan ini penulis mengasumsikan bahwa anda sudah tahu cara instalasi codeinginer, jika belum silahakan baca tutorial programmer goblog sebelumnya tentang cara instalasi codeiniter disini.

kita mulai dengan membuat database dengan nama 'website' dan buat satu table didalamnya dengan nama 'artikel'

-----------------------------SQL QUERY-------------------------------------------
create database website;
use website;
create table artikel(
 id_artikel int not null auto_increment primary key,
 judul_artikel text not null,
 isi_artikel text
);

------------------------------End of Query-----------------------------------------


sintak sql diatas akan membuat database dan tabel serta field untuk tabel tersebut, untuk tutorial sederhana ini kita hanya akan menggunakan id_artikel, judul dan isi artikel.

untuk melakukan koneksi database terlebih dahulu kita harus melakukan pengaturan koneksi databse di file application/config/database.php


selanjutnya kita buat contoller terlebih dahulu.
buat file php dengan nama Controllersaya.php dan simpan didalam folder application/controller/



Karena Codeigniter juga menganut konsep pemrograman berorientasi object atau OOP maka kita membuat sebuah class Controllersaya yang merupakan turunan (extends) dari class CI_Controller.

selanjutnya didalam file controller kita tadi (didalam class) kita buat function untuk mengambil semua data di tabel artikel.


public function artikel(){
   $this->load->model('modelsaya'); // Baris ini akan me-load file modelsaya.php
   $data['dataartikel'] = $this->modelsaya->ambildataartikel();
   /*
    Baris diatas akan mengambil data dari function ambildataartikel dan memasukkanya kedalam array data dengan key 'datartikel'
   **/

   $this->load->view('viewsemuaartikel',$data); // bari ini akan memanggil file viewsemuaartikel.php dan mengirim data $data;
  }


selanjutnya buat file model yang akan bertugas mengolah data (menjalankan query untuk mengambil data dari database)
pertama buat file php dengan nama Modelsaya.php dan simpan di application/model

dan file modelsaya.php yang baru kita buat ini adalah turunan dari class CI_Model.
kemudian buat function yang akan menangani query mengambil semua data dari table artikel.



selanjutnya pada file controllersaya.php tepatnya didalam function artikel kita akan memanggil fuction ambildataartikel di file Modelsaya.php

selanjutnya kita akan membuat file view yang akan menangani/menampilkan data.
pertama buat file viewsemuaartikel.php dan simpan di application/views



baiklah mari kita cek dengan membuka browser dan akses url http://localhost/mysite/index.php/nama_controller/nama_function
contoh: http://localhost/mysite/index.php/controllersaya/artikel



apa yang muncul? halaman kosong? yups, sebab database kita masih kosong.
mari kita coba isi beberapa baris kedalam database kita.


------------------------------------------------SQL Query-----------------------------------------------------
use website;
insert into artikel (judul_artikel,isi_artikel) values ('Judul Artikel 1', '<p> ini isi artikel 1</p>');
insert into artikel (judul_artikel,isi_artikel) values ('Judul Artikel 2', '<p> ini isi artikel 2</p>');
insert into artikel (judul_artikel,isi_artikel) values ('Judul Artikel 3', '<p> ini isi artikel 3</p>');
insert into artikel (judul_artikel,isi_artikel) values ('Judul Artikel 4', '<p> ini isi artikel 4</p>');
insert into artikel (judul_artikel,isi_artikel) values ('Judul Artikel 5', '<p> ini isi artikel 5</p>');

-------------------------------------------------End Of SQL Query ---------------------------------------------


refresh halaman web kita tadi.
nah muncul kan daftar artikelnya.



pada contoh diatas kita menggunakan fasilitas db->get('table_name') punya si codeigniter, namun codeigniter bukan framework yang kaku sehingga kita harus menggunakan fasilitas serta aturan milik CI, kita juga bisa menggunakan custom query untuk mengambil data dari database.
Contoh penggunaan custom query ini akan kita terapkan di langkah selanjutnya yaitu menampilkan 1 artikel dari kumpulan artikel halaman pertama tadi.

Pertama buka controller 'Controllersaya.php' yang kita buat sebelumnya, tambah lagi satu function dibawah function artikel.

kita beri nama satuartikel.

-----------------------------------------function satuartikel-------------------------------------------------------
public function satuartikel($idartikel='')
  {
   $this->load->model('modelsaya');
   $data['dataartikel'] = $this->modelsaya->ambilsatuartikel($idartikel);
   /*
    Baris diatas akan mengambil data dari function ambilsatuartikel (pada file Modelsaya.php) dan memasukkanya kedalam array data dengan key 'datartikel'
   **/
   $this->load->view('viewsatuartikel',$data); // bari ini akan memanggil file viewsatuartikel.php dan mengirim data $data;

  }

----------------------------------------end of script satuartikel-----------------------------------------------------


selanjutnya buka file Modelsaya.php dan tambahkan function ambilsatuartikel()

----------------------------------------------------------------------------------------------------------------------

public function ambilsatuartikel($idartikel='')
  {
   $this->load->database();
   $hasilQuery = $this->db->query("SELECT * FROM artikel where id_artikel=$idartikel");
   /** Perhatikan perbedaan baris ini dengan yang ada di function ambildataartikel diatas. */

   return $hasilQuery->result();

  }

----------------------------------------------------------------------------------------------------------------------


terakhir buat file viewsatuartikel.php dan simpan di folder application/view
untuk menghemat waktu, isinya copas dari file view sebelumnya juga boleh.

dan untk mencoba mengakses satu artikel di browser kita maka ikuti format URI berikut.
http://localhost/mysite/index.php/nama_controller/nama_function/argumen_function
jadi dalam contoh kita, maka urlnya adalah http://localhost/mysite/index.php/controllersaya/satuartikel/1

http://localhost/mysite/index.php/  : adalah url website
controllersaya : adalah nama controller nya
satuartikel  : adalah function didalam controller yang ingin kita panggil
1 : adalah variable atau nilai yang akan kita kirim kedalam function tersebut, dalam hal ini adalah idartikel.

silahkan dicoba ganti angka di belakang sesuai dengan idartikel yang akan diakses.

demikian catatan singkat si programmerGoBlog kali ini.
apabila ada pertanyaan kritik saran silahkan tinggalkan jejak di kolom komentar..

Rabu, 04 Mei 2016

Keuntungan menggunakan framework Codeigniter

Pada tulisan kali ini programmerGoBlog akan membahas mengenai keuntungan menggunakan framework khususnya framework Codeigniter.

Apasih framework itu? secara bahasa framework diartikan sebagai kerangka kerja, kalau pengertian bebas versi programmer goblog sih framework itu(dalam pemgrograman) adalah sekumpulan fungsi-fungsi siap pakai. Nah tujuan menggunakan framework adalah mempermudah kita dalam penulisan kode-kode program yang sering digunakan.
Kalau programming best practice sering menyebutkan kalau kita seharusnya "tulisa satu kode dan gunakan berulang-ulang" nah dengan konsep framework maka kita tinggal menggunakan berulang-ulang tanpa menuslinya  (fungsi-fungsi tersebut) terlebih dahulu.

Oke lantas seperti apa sih yang dimaksud dengan fungsi yang sering digunakan itu?

Misal contohnya kita akan membuat sebuah aplikasi PHP dengan Database MySQL maka tentu untuk memulai hubungan PHP dan MySQL baik untuk operasi Insert, update, delete, dll kita perlu membuka hubungan PHP dengan MySQL dengan format (misal)

<?php
$connection = mysql_connect("mysql_host","db_username","db_password");
$database = mysql_select_db("nama_database",$connection);

?>

nah setiap kita mau melakukan koneksi ke database kita selalu menggunakan kode (kurang lebih) seperti diatas.

Jika kita menggunakan framework maka fungsi ini kemungkinan sudah ada di framework, seperti di codeigniter kita tinggal load library database, dan setup mysql login detailnya di file
 application/config/database.php

oke lanjut, masih dengan database. Ketika kita akan melakukan operasi database misalnya mengambil data dari database.
Pada pure php tanpa framwork kita akan menggunakan script yang kurang lebih seperti ini

<?php
$query = "select * from berita";
$hasil = mysql_query($query);

?>

nah kalau di framework (dalam hal ini codeigniter) kita tinggal memanggil fungsi yang disediakan oleh si framework ini.
Untuk melakukan hal yang sama seperti diatas dengan menggunakan framwork cukup dengan

<?php
   $hasil = $this->db->get('berita');
?>



ini baru satu dari sekian fungsi fungsi siap pakai yang disediakan framework codeiniter.

-----------------------------------------------------------------------------------------------
kita bisa lebih menghemat waktu dan tenaga ketika menggunakan framework.
so kenapa masih tidak mau menggunakan framework?
karena framework itu ribet, gak ngerti dll dll.

tenang, framework codeiniter ini gak ribet kok. cukup download file codeigniter nya di https://github.com/bcit-ci/CodeIgniter/archive/3.0.6.zip

extract, lalu upload file hasil extract tadi ke hosting atau xampp lah kalau masih develop dengan web server local.

isi file zip yang di download tadi cuma tiga yang penting.
index.php     ->file
application   ->folder
system        ->folder

selain itu boleh di delete.

Tempatkan semua folder dan file tersebut di web hosting, atau dalam kasus penulis diletakkan di web server lokal (xampp) pada folder “mysite”. selanjutnya kita coba dengan mengakses ke halaman web tersebut (dalam kasus penulis http://127.0.0.1/mysite ) jika tampil halaman seperti gambar berikut maka codeigniter telah terinstal dengan benar.
Image
Selanjutnya kita akan mencoba menampilkan “Hello World” dengan CI. pertama yang harus kita buat adalah file controller.
<?php if ( ! defined(‘BASEPATH’)) exit(‘No direct script access allowed’);
class chello extends CI_Controller {
    public function index()
    {
        $this->load->view(‘vhello’);
    }
}
?>
Kemudian simpan didalam folder ../application/controllers dengan nama chello.php
selanjutnya buat file view.
<html>
    <head>
        <title> Hello World </title>
    </head>
    <body>
        <h1>Hello World</h1><hr>
        <p>selamat datang di web development dengan codeigniter<p>
    </body>
</html>
file view yang kita buat ini sejatinya adalah file html biasa yang membuat tampilan website di browser. simpan file ini di
folder ../application/views dengan nama vhello.php
kemudian kita coba menampilkan halaman yang kita buat tadi di browser. silahkan masukkan alamat website anda diikuti dengan index.php, nama controller dan nama function didalam controller tersebut yang akan kita kases. misal dalam kasus penulis alamat website nya adalah http://127.0.0.1/mysite dan nama controller nya adalah chello dan nama function nya adalah index maka yang harus diketikkan adalah http://127.0.0.1/mysite/index.php/chello/index
Ini merupakan cara default untuk mengakses controller dan function-function didalamnya, namun apabila kita ingin menjadikan controller ini sebagai default homepage sehingga kita tidak harus mengakses secara penuh dengan cara diatas misal hanya dengan menetikkan alamat situsnya, maka kita dapat melakukan konfigurasi di dalam file../application/config/routes.php
kemudian cari baris 
    $route[‘default_controller’] = “welcome”;
dan ganti menjadi 
    $route[‘default_controller’] = “chello”;
Dengan demikian setiap kali kita melakukan akses ke site_name (dalam kasus penulishttp://127.0.0.1/mysite) maka browser akan diteruskan ke controller chello secara default dan akan diarahkan ke function index apabila ada.

Rabu, 24 Februari 2016

cara membedakan powerbank asli dan abal abal



Akhir akhir ini banyak beredar power bank yang diclaim oleh penjualnya memiliki kapasitas luar biasa yang terlihat sangat sangat 'too good to be true' mustahil.
Lantas bagaimana sih cara membedakan powerbank asli --atau kapasitas real-- dari power bank tersebut.
Nah dalam tulisan kali ini programmerGoBlog bakalan mengulas karakteristik power bank dan kapaistas maksimum yang mungkin dari sebuah powerbank. Serta dalam tulisan ini juga akan dibahas tentang kualitas dari sebuah powerbank, dan kita akan coba membuktikan bahwa kata sakti ada harga ada rupa.

Powerbank pada umumnya menggunakan baterai tipe 18650, baterai ini adalah yang bisa terdapat pada baterai laptop.
Lalu berapa kapasistas dari satu sel baterai ini? hingga saat ini kapasistas paling besar dari baterai tipe 18650 adalah 3400mAh, dah harga untuk satu sel original (baik buatan sanyo, lg, samsung, panasonic, dll) adalah dikisaran 10$ USD.
3400mAh, Kok kecil kecil banget yak? jadi powerbank semisal merk xiaomi yang mengclaim mencapai 10000mAh bohong dong? belum tentu.
Kapasitas dari baterai laptop dapat di tingkatkan dengan menyambungkan beberapa baterai menjadi baterai pack.
jadi untuk membuat powerbank dengan kapasitas 10000mAh kita dapat menyambungkan 4 dengan kapasitas --katakanlah-- 2500mAh sel baterai 18650 secara paralel. Dengan mennyambungkan baterai secara paralel maka kita akan memperoleh mAh yang berlipat sesuai dengan banyaknya baterai dengan tegangan atau voltase yang tetap sama seperti tertera pada satu sel baterai 18650.

Wah kalau begitu mungkin saja dong powerbank yang mengklaim memiliki kapasitas 185000mAh itu.
Mungkin, mungkin saja. tetapi kalau kita membuat powerbank dengan kapasitas 10000mAh saja membutuhkan 4 baterai, maka 168000mAh bisa membutuhkan kurang lebih 67 sel baterai.. Mau sebesar apa bentuk dari si powerbank ini??

Kapasistas bohong atau abal abal juga bisa kita lihat dari harga. Kita tahu bahwa harga baterai 18650 adalah 10$, katakanlah kalau dalam skala pabrik mereka bisa membeli baterai ini dengan harga 6$ saja. maka untuk membuat powerbank dengan 67 jumlah sel baterai maka biaya untuk baterainya saja bisa mencapai 402$ USD. belum komponen elektronika didalamnya dan body powerbank dll nya, maka apakah mungkin harga jualnya hanya Rp. 120.000   ???

Ada harga ada kualitas, jangan tertipu dengan promo penjual yang mengclaim powerbank dengan kapasitas super wah dan mustahil.
Sedikit tips tambahan tentang bagaimana cara mengukur kapasitas real suatu powerbank dengan menggunakan handphone kita.

kita tahu bahwa kapasistas dari baterai handphone kita (tertera di baterai) dan kita tahu berapa Ampere keluaran dari sebuah powerbank.
Misal powerbank dengan keluaran (output) 1A atau 1000mA akan kita gunakan untuk nencharge baterai dengan kapasitas 3000mAh.
maka untuk mencharge 3000mAh pada arus 1000mA adalah 3h atau 3 jam.
jadi kalau baru 30 menit saja powerbank sudah habis maka kapasitas real dari powerbank tersebut hanya setengah dari 3000.
Jika powerbank mati sekitar satu jam maka kapasitasnya 3000ma kalau masih hidup dan baterai handpone sudah full maka gunakan lagi powerbank tersebut dan gunakan metode diatas untuk menghitung sampai powerbank benar benar mati, dan tambahkan hasil pengukuranya.

Demikian tulisan ini, semoga bisa menjadi tambahan pengetahuan bagi kita.

Disclaimer : Penulis tidak memiliki latar belakang electrical engeneering dan hanya berbekal ilmu fisika dasar tentang listrik. Apabila ada kesalahan dalam penulisan satuan unit atau terbalik dalam hal penempatan mAh mA A h dll, maka koreksi dari pembaca sangat diapresiasi.

Popular Posts

Recent Posts

Unordered List

Pages

Kunjungan

Diberdayakan oleh Blogger.