KAK Ekspedisi barang

Soal :
Sebuah perusahaan ekspedisi pengiriman barang membutuhkan aplikasi tacking lokasi armada pengiriman barang, yang digunakan untuk memantau keberadaan lokasi barang yang dikirim.
Buatlah KAK atau TOR yang digunakan untuk acuan terselenggaranya proyek


KERANGKA ACUAN KERJA (KAK) SISTEM
TRACKING ARMADA EKSPEDISI BARANG 2017
1. Latar Belakang
Dalam hal pengiriman barang baik ke dalam negeri maupun luar negeri,  perusahaan penyedia jasa pengiriman barang memegang peranan yang sangat penting.  Masyarakat dapat mengirimkan barang dengan mudah baik ke luar negeri maupun dalam  negeri dengan menggunakan jasa pengiriman barang. Banyak perusahaan besar yang  menggunakan jasa pengiriman barang untuk mengirimkan barang mereka, baik dalam  jumlah yang kecil maupun besar. Persaingan yang timbul menyebabkan setiap  perusahaan lebih meningkatkan pelayanan mereka terhadap para pelanggan.
Dengan pesatnya perkembangan teknologi ini, setiap perusahaan yang ada  dituntut untuk lebih siap menghadapi situasi yang ada dengan memanfaatkan seluruh  sumber daya dan informasi yang terdapat pada perusahaan dengan semaksimal mungkin  untuk meningkatkan nilai perusahaan dan memiliki nilai lebih dibandingkan para  pesaingnya.
Salah satu jalan yang paling efektif untuk memperoleh hasil yang maksimal  adalah menggunakan teknologi Internet. Saat ini internet di gunakan dalam berbagai  bidang kehidupan seperti bisnis, pendidikan, perbankan, dan lain sebagainya.  Berdasarkan hasil penelitian dari Internet World Stats pada tahun 2011 pengakses  internet di Indonesia telah mencapai angka 39,6 juta orang dan menduduki peringkat 4  se-Asia. Kegunaan internet adalah untuk mendapatkan informasi yang luas, akses tidak  terbatas oleh waktu dan tempat, biaya yang relatif murah, menjadi daya tarik utama yang  di sediakan bagi pengguna internet. Teknologi internet apabila dimanfaatkan dengan  baik akan membawakan hasil yang baik pula,antara lain sebagai pemasaran ataupun  menerapkan e-application ke dalam website tersebut. Sebagai contoh, pengecekan  tracking dalam suatu website perusahaan pengiriman barang.
2. Maksud dan Tujuan
- Mempermudah proses tracking ekspedisi armada pengantaran barang
- Menambah kepercayaan konsumen akan layanan ekspedisi
3. Sasaran
  1. Terpenuhinya kebutuhan tracking lokasi armada dan barang.
  2. Peningkatan informasi kepada user mengenasi jejak pengiriman
4. Nama Organisasi
Thing Express :
5. Sumber dana dan perkiraan biaya
Sumber dana berasal dari investor dan perkiraan biaya adalah sejumlah Rp 75.000.000,-
6.Lingkup, Fasilitas dan alih pengetahuan
  1. Lingkup Kegiatan
    • Pengadaan aplikasi, modul dan dokumentasi.
    • Pengadaan server untuk aplikasi.
  2. Lokasi Kegiatan
    • Lokasi kegiatan dilakukan di kantor E-cam
  3. Fasilitas
    • Pengguna Jasa
      • Konsultasi kebutuhan
    • Penyedia Jasa 
      • Dokumentasi tiap minggu
  4. Alih Pengetahuan
    • Training aplikasi
7. Metodologi
Metodologi yang digunakan dalam pembuatan aplikasi tracking ini adalah SDLC (Software Development Life Cycle)

8. Jangka waktu pelaksanaan
Jangka waktu yang diberikan adlaah 60 hari aktif kerja, terhitung dari penandatangan kontrak.
7. Tenaga ahli
Demi menunjang keberlangsungan pengembangan, maka dibutuhkan tenaga ahli sebagai berikut.
  1. Team Leader (1 orang)
    • Berpendidikan minimal S2 Teknik Informatika
  2. Web Engineer (2 orang)
    • Berpendidikan minimal S1 Teknik Informatika atau S1 Sistem Informasi, dengan minimal pengalaman kerja selama 1 tahun.
  3. Trainer
    • Berpendidikan minimal S2 Teknik Informatika.
  4. Dokumentator
    • Berpendidikan minimal S1 Teknik Informatika.
8. Kualifikasi

  1. Bersedia tidak menyebarluaskan data yang bersifat pribadi.
  2. Berkomitmen terhadap pekerjaan.
  3. Menggunakan metode yang baik.
9. Keluaran
Keluaran yang dihasilkan adalah berupa sebuah aplikasi tracking serta dokumentasi penunjang untuk memudahkan perawatan serta penggunaan aplikasi.

10. Pelaporan
  1. Laporan Pendahuluan
    • Rencana kerja
    • Jadwal kegiatan
    • Estimasi waktu selesai sebelum deadline
  2. Laporan Interim
    • Hasil yang telah dicapai
    • Masalah pelaksanaan dan solusi
    • Rencana baru selanjutnya
  3. Laporan Akhir
    • Keluaran proyek
  4. Laporan mingguan

Pengenalan Manajemen Proyek Perangkat Lunak

MPPL sendiri berarti Manajemen Proyek Perangkat Lunak yang sudah pasti ada hubungannya dengan pengelolaan sebuah proyek dimana kita harus mengelola, mengatur dan menganalisa dan mempelajari lebih jauh tentang sebuah proyek yang mungkin sedang kita kembangkan.
menurut saya definisi MPPL adalah sebuah proses pembelajaran dimana kita harus melakukan suatu pekerjaan untuk mencapai tujuan bersama dengan menggunakan beberapa fungsi yaitu perencanaan 
( Planning ), pengorganisasian ( Organizing ), penyusunan ( Directing ), pengarahan ( Controlling ), dan pengawasan ( Reporting ) sesuai dengan sumber daya yang kita miliki.
MPPL juga digunakan untuk suatu kegiatan mengkoordinasikan segala sesuatu dengan menggunakan perpaduan sumber daya manusia, teknik, administratif, keuangan untuk mencapai tujuan yang jelas dalam periode waktu tertentu.
Tujuan adanya MPPL ini adalah untuk mempelajari penggunaan sumber daya dalam pengerjaan sesuatu agar dapat tercapai, dan juga mengatur waktu penyelesaiannya.
MPPL merupakan bagian yang penting dalam pembangunan perangkat lunak, dan juga mampu menentukan apakah proyek akan berjalan dengan baik sehingga menghasilkan produk yang baik juga. Hal ini berkaitan dengan manajemen yang mengelola serta mengkoordinasikan tim, prosesnya, dan pengukuran proyek termasuk menentukan harga dari perangkat lunak dan sebagainya.
Sebuah manajemen proyek memiliki karakteristik yaitu :
  •  Mempunyai tujuan yang jelas untuk menuju suatu perubahan.
  • Pada kegiatannya sebuah proyek pengerjaannya dibatasi oleh waktu, biaya, dan kualitasnya.
  • Biasanya sebuah proyek tidak akan berulang-ulang dikerjakan, melainkan harus mengerjakan proyek yang baru.
  •  Dalam sebuah proyek harus memilkik struktur organisasi agar dalam pengerjaannya sesuai dengan apa yang kita inginkan dan sesuai dengan struktur yang dibangun.

Untuk mengerjakan suatu proyek kita harus membentuk struktur organisasi tim yang akan memudahkan pekerjaan dan membagi pekerjaan kepada anggota tim sesuai dengan kemampuan anggota tim.
Dibentuk sebuah tim untuk melakukan pekerjaan proyek dari awal samapai akhir pengerjaan proyek tersebut, fungsi dari anggota tim ini untuk mendefinisikan produk, merancang produk, menimplementasikan, melakukan uji coba, melakukan review, dan mempersiapkan dokumen-dokumen pendukung. Sebagian anggota tim melakukan instalasi dan pemeliharaan untuk melanjutkan bila ada proyek baru yang akan dikerjakan.
Menurut pengalaman yang saya lihat biasanya bila sebuah kelompok tim yang seluruh anggotanya bekerja secara maksimal maka tim tersebut akan mendapat hasil yang maksimal juga sesuai dengan apa yang diharapkan. Proyek bisa berjalan lancar, pengerjaan proyek bisa selesai tepat waktu, dan seluruh anggota tim merasakan hasil yang cukup memuaskan.
Adapun sebaliknya bila sebagai kesatuan tim tidak bisa bekerja secara maksimal maka hasilnya pun tidak akan maksimal, sehingga proyek yang semula direncanakan akan selesai tepat waktu akan mengalami pengunduran waktu dan akan membutuhkan waktu yang lama kembali untuk menyelesaikan proyek tersebut sehingga proyek yang dikerjakan pun akan semakin tidak jelas keadaannya. Sudah pasti tentu akan terjadi ketidakpuasan pada anggota tim. Maka dari itu dalam pengerjaan suatu proyek dibutuhkan tim yang solid, itulah kegunaan dari struktur organisasi dalam pengerjaan proyek agar mendapatkan hasil pengejaan yang maksimal.
Perencanaan struktur organisasi
Untuk melakukan pelaksanaan sebuah proyek dibentuk tim yang akan melaksanakan pekerjaan proyek pada setiap tahapannya, anggota tim ini dapat juga dirotasi bila ada anggota tim yang merasakan kesulitan pada tahapan pengerjaannya.
Berikut adalah tugas-tugas yang terbagi dari penyusunan struktur organisasi :
  • Project Manager mempunyai tanggung jawab dan tugas yang bermacam-macam, tidak hanya terfokus pada hal-hal yg teknis sifatnya. Bagaimana layaknya seorang project manager harus mempunyai kemampuan membuat tim proyek agar tetap solid, mampu memonitor dan mengontrol budget serta mempunyai kemampuan analisis resiko yang baik.
  • System Analys bertugas untuk mengembangkan definisi sistem dan planning project.
  • Designer bertugas merancang produk yang sesuai dengan project yang sedang dikerjakan.
  • Programmer bertugas untuk membuat program-program yang sesuai dengan project timnya, yang nantinya program ini akan berpengaruh terhadap pengerjaan project tersebut.
  • Tester atau Penguji bertugas untuk melakukan uji per unit sistem apakah program yang dijalankan sesuai dengan apa yang diharapkan.


RUANG LINGKUP PROJECT MANAJEMEN
Agar proyek tidak overlap dan dapat dimengerti oleh anggota tim
  • Kualitas Produk
  • Ketidakpastian
  • Resiko yang mungkin ada
  • Estimasi Biaya
  • Penjadwalan Project
  • Komunikasi Pelanggan
  • Staff
  • Pengawasan Project
  • Ukuran dari kemampuan memori
  • Jumlah pemakai

Model - Model Pembangunan Proyek Perangkat Lunak 
1. Sekuensial Linier (waterfall)
  • Analisis kebutuhan perangkat lunak dengan melakukan pengumpulan kebutuhan, domain informasi, dan unjuk kerja dari antar muka yang diperlukan
  • Desain yaitu struktur data, arsitektur perangkat lunak, representasi interface, algoritma detail.
  • Kode/Coding yaitu malekukan pengubahan kedalam bentuk bahasa mesin.
  • Pengujian dengan logika internal perangkat lunak yaitu memastikan semua sesuai dengn keinginan.
2. Prototipe
3. RAD (Rapid Application Development)
    Pengembangan sekuential linier yang dipercepat dengan menggunakan pendekatan konstruksi 
    berbasis komponen.
   Bila sistem tidak dapat dimodulkan secara sistematis / teratur, komponen pengembangan RAD akan 
   menjadi problematis. RAD menekankan perkembangan komponen program yang dapat Reusable.


4. SPIRAL
    Model proses perangkat lunak yang evalusioner, yang merangkai sifat interaktif dari prototipe
    dengan cara melakukan kontrol dan merupakan aspek sistematis dari model sekuensial liniear.




Mengukur Kualitas Perangkat Lunak 

Pada saat kualitas meningkat, kesalahan manjadi minimal dan selagi kesalahan berkurang, jumlah kerja ulang yang dibutuhkan selama proyek berlangsung juga berkurang. Dengan demikian pembiayaan proyek secara keseluruhan dapat berkurang.

Glib T. mendefinisikan ukuran kualitas perangkat lunak dapat dilihat dari beberapa aspek, yaitu :
a. Cacat per KLOC, yaitu dimana cacat diartikan kurangnya kesesuaian dengan persyaratan.
b. Maintanabilitas, kemudahan dimana program dapat dikoreksi jika ditemukan kesalahan, dapat
    beradaptasi jika lingkungan berubah. Mudah dikembangkan bila pelanggan menginiginkan
    perubahan.
c. Integritas, kemampuan sistem untuk menahan serangan terhadap sekuritasnya. Serangan dapat
    berupa virus maupun hacker yang mengganggu program data maupun dokumen.
    
    Ancaman : kemungkinan serangan yang terjadi dalam periode waktu yang ditentukan.
d. Usabilitas, yaitu usaha untuk mengukur user friendly dengan 4 karakter yakni
    - Keterampilan fisik atau intelektual untuk mempelajari sistem.
    - Waktu yang diperlukan untuk menggunakan sistem
    - Penilaian subjektifitas terhadap sistem (menggunakan kuisioner)
    - Peningkatan produktifitas ketika sistem digunakan.


Contoh Proyek

Aplikasi Website Penerimaan Peserta Didik Baru

Deskripsi
Aplikasi ini dibuat dengan tujuan untuk mempermudah Akses baik peserta didik baru, tenaga pendidik, maupun teknisi. Dengan adanya aplikasi ini, diharapkan dapat menghemat biaya ataupun tenaga dalam proses Penerimaan Peserta Didik Baru

Screenshot

Stakeholders:

Client: Pemerintah Kota Surabaya
Project Manager: Dosen ITS
Programmer: Mahasiswa ITS
End Users: Tenaga Pendidik Sekolah, Peserta Didik Baru,

Biaya:
Dalam Proyek ini dibutuhkan biaya kira - kira sebesar 500 juta rupiah untuk instalasi server


Resource:
http://hydechanasia.blogspot.sg/2011/09/management-proyek-perangkat-lunak.html

Membuat CRUD dengan Code Igniter

Setelah menginstall Codeigniter beberapa waktu yang lalu, kali ini kita akan belajar beberapa cara menggunakan dasar" Code Igniter, yaitu untuk fungsi Create, Read, Update, dan Delete atau CRUD. Mari kita langsung mulai!

Disini kita buat dulu file controller bernama crud.php untuk keempat fungsi tersebut, codenya akan terlihat seperti ini


<?php

class Crud extends CI_Controller{

  function __construct(){
    parent::__construct();
    $this->load->model('m_data');
    $this->load->helper('url');
  }

  function index(){
    $data['phonebook'] = $this->m_data->tampil_data()->result();
    $this->load->view('v_tampil', $data);
  }

  function tambah(){
    $this->load->view('v_input');
  }

  function tambah_aksi(){
    $nama_up = $this->input->post('nama_in');
    $alamat_up = $this->input->post('alamat_in');
    $email_up = $this->input->post('email_in');
    $hp_up = $this->input->post('hp_in');
    $kelas_up = $this->input->post('kelas_in');

    $data = array(
      'nama' => $nama_up,
      'alamat' => $alamat_up,
      'email' => $email_up,
      'hp' => $hp_up,
      'kelas' => $kelas_up
    );
    $this->m_data->input_data($data,'phonebook');
    redirect('http://localhost:56789/codeig/index.php/crud');
  }

  function hapus($id){
    $where = array('Id' => $id);
    $this->m_data->hapus_data($where,'phonebook');
    redirect('http://localhost:56789/codeig/index.php/crud');
  }

  function edit($id){
    $where = array('Id' => $id);
    $data['phonebook'] = $this->m_data->edit_data($where,'phonebook')->result();
    $this->load->view('v_edit',$data);
  }

  function update(){
       $id = $this->input->post('id');
       $nama = $this->input->post('nama_up');
       $alamat = $this->input->post('alamat_up');
       $email = $this->input->post('email_up');
     $hp = $this->input->post('hp_up');
     $kelas = $this->input->post('kelas_up');
        $data = array(
               'Nama' => $nama,
              'Alamat' => $alamat,
                'Email' => $email,
            'HP' => $hp,
            'Kelas' => $kelas
          );

            $where = array(
                  'Id' => $id
            );

             $this->m_data->update_data($where,$data,'phonebook');
            redirect('http://localhost:56789/codeig/index.php/crud');
  }
}

 ?>


Kemudian, baru kita buat file modelnya bernama m_data.php


<?php

class m_data extends CI_Model{

  function __construct(){
    parent::__construct();
    $this->load->database();
  }

  function tampil_data(){
    return $this->db->get('phonebook');
  }

  function input_data($data,$table){
    $this->db->insert($table,$data);
  }

  function hapus_data($where,$table){
    $this->db->where($where);
    $this->db->delete($table);
  }

  function edit_data($where,$table){
    return $this->db->get_where($table,$where);
  }

  function update_data($where,$data,$table){
    $this->db->where($where);
    $this->db->update($table,$data);
  }
}

?>
<?php

class m_data extends CI_Model{

  function __construct(){
    parent::__construct();
    $this->load->database();
  }

  function tampil_data(){
    return $this->db->get('phonebook');
  }

  function input_data($data,$table){
    $this->db->insert($table,$data);
  }

  function hapus_data($where,$table){
    $this->db->where($where);
    $this->db->delete($table);
  }

  function edit_data($where,$table){
    return $this->db->get_where($table,$where);
  }

  function update_data($where,$data,$table){
    $this->db->where($where);
    $this->db->update($table,$data);
  }
}

?>
<?php

class m_data extends CI_Model{

  function __construct(){
    parent::__construct();
    $this->load->database();
  }

  function tampil_data(){
    return $this->db->get('phonebook');
  }

  function input_data($data,$table){
    $this->db->insert($table,$data);
  }

  function hapus_data($where,$table){
    $this->db->where($where);
    $this->db->delete($table);
  }

  function edit_data($where,$table){
    return $this->db->get_where($table,$where);
  }

  function update_data($where,$data,$table){
    $this->db->where($where);
    $this->db->update($table,$data);
  }
}

?>

Lalu, baru kita buat file viewnya satu persatu. Pertama yaitu file v_tampil.php seperti dibawah


<!DOCTYPE html>
<html>
  <head>
    <title>| Coba Coba CRUD |</title>
  </head>
  <body>
    <center>
      <h1>| Coba Coba CRUD |</h1>
      <h3>View Data</h3>
    </center>
    <table style="margin:30px auto;" border="2">
      <tr>
        <th>No.</th>
        <th>Name</th>
        <th>Address</th>
        <th>Email</th>
        <th>HP</th>
        <th>Class</th>
        <th>Action</th>
      </tr>
      <?php
      $no = 1;
      foreach ($phonebook as $p) {
       ?>
       <tr>
         <td><?php echo $no++ ?></td>
         <td><?php echo $p->Nama ?></td>
         <td><?php echo $p->Alamat ?></td>
         <td><?php echo $p->Email ?></td>
         <td><?php echo $p->HP ?></td>
         <td><?php echo $p->Kelas ?></td>
         <td><?php echo anchor('http://localhost:56789/codeig/index.php/crud/edit/'.$p->Id, 'Edit'); ?>
           <?php echo anchor('http://localhost:56789/codeig/index.php/crud/hapus/'.$p->Id, 'Delete'); ?>
         </td>
       </tr>
       <?php }
        ?>
      </table>
      <center>
        <h4><?php echo anchor('http://localhost:56789/codeig/index.php/crud/tambah/','Insert Data'); ?></h4>
      </center>
    </body>
  </html>

Tampilannya akan seperti ini


Lalu kita buat file v_input.php untuk fungsi Create


<!DOCTYPE html>
<html>
<head>
    <title>| Coba Coba CRUD | </title>
</head>
<body>
    <center>
        <h1>| Coba Coba CRUD |</h1>
        <h3>Insert data</h3>
    </center>
    <form action="<?php echo 'http://localhost:56789/codeig/index.php/crud/tambah_aksi'; ?>" method="post">
        <table style="margin:20px auto;">
            <tr>
                <td>Name</td>
                <td><input type="text" name="nama_in"></td>
            </tr>
            <tr>
                <td>Address</td>
                <td><input type="text" name="alamat_in"></td>
            </tr>
            <tr>
                <td>Email</td>
                <td><input type="text" name="email_in"></td>
            </tr>
      <tr>
                <td>HP</td>
                <td><input type="text" name="hp_in"></td>
            </tr>
      <tr>
                <td>Class</td>
                <td><input type="text" name="kelas_in"></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="Insert"></td>
            </tr>
        </table>
    </form>
</body>
</html>


Tampilannya akan menjadi seperti ini


Kemudian kita buat file v_edit.php untuk fungsi Update



<!DOCTYPE html>
<html>
  <head>
    <title>|Coba Coba CRUD|</title>
  </head>
  <body>
    <center>
      <h1>| Coba Coba CRUD |</h1>
      <h3> Update Data </h3>
    </center>
    <?php foreach($phonebook as $p) { ?>
      <form action="<?php echo 'http://localhost:56789/codeig/index.php/crud/update'; ?>" method="post">
        <table style="margin: 20px auto;">
          <tr>
            <td>Name</td>
            <td>
              <input type="hidden" name="id" value="<?php echo $p->Id ?>">
              <input type="text" name="nama_up" value="<?php echo $p->Nama ?>">
            </td>
          </tr>
          <tr>
            <td>Address</td>
            <td><input type="text" name="alamat_up" value="<?php echo $p->Alamat ?>"></td>
          </tr>
          <tr>
            <td>Email</td>
            <td><input type="text" name="email_up" value="<?php echo $p->Email ?>"></td>
          </tr>
          <tr>
            <td>HP</td>
            <td><input type="text" name="hp_up" value="<?php echo $p->HP ?>"></td>
          </tr>
          <tr>
            <td>Class</td>
            <td><input type="text" name="kelas_up" value="<?php echo $p->Kelas ?>"></td>
          </tr>
          <tr>
            <td></td>
            <td><input type="submit" value="Save"></td>
          </tr>
        </table>
      </form>
      <?php } ?>
    </body>
</html>


Tampilannya akan menjadi seperti berikut



Nah, untuk kali ini cukup segitu saja ilmu nya. Silahkan berbagi pada teman - teman anda. Sekian Terima kasih.  Byeee

Belajar dengan CodeIgniter

Langkah - Langkah Instalasi:

 1. Download CodeIgniter 3.0 di https://www.codeigniter.com/download
 2. Extract filenya
 3. Masukkan hasil extract ke dalam folder C://xampp/htdocs

Langkah Inisiasi Awal Code Igniter:

1. Ubah base_url pada file application/config/config.php di folder codeigniter anda menjadi lokasi folder anda
2. Buka file dalam application/config/database.php di folder codeigniter dan ubah menjadi di bawah
 $db['default'] = array(  
      'dsn'     => '',  
      'hostname' => 'localhost',          //BIARKAN BILA MEMANG ADA DI LOCALHOST  
      'username' => 'root',                         //MASUKKAN USER PADA PHPMYADMIN ANDA  
      'password' => '',                                   //MASUKKAN PASSWORD USER BILA ADA  
      'database' => 'ci_test',               //MASUKKAN NAMA DATABASE ANDA  
      'dbdriver' => 'mysqli',                    //MASUKKAN JENIS SOFTWARE DATABASE ANDA  
      'dbprefix' => '',  
      'pconnect' => FALSE,  
      'db_debug' => (ENVIRONMENT !== 'production'),  
      'cache_on' => FALSE,  
      'cachedir' => '',  
      'char_set' => 'utf8',  
      'dbcollat' => 'utf8_general_ci',  
      'swap_pre' => '',  
      'encrypt' => FALSE,  
      'compress' => FALSE,  
      'stricton' => FALSE,  
      'failover' => array(),  
      'save_queries' => TRUE  
 );  

Membuat Hello World

1. Buat file view pada folder view dengan nama hello_world.php



 <?php  
 defined('BASEPATH') OR exit('No direct script access allowed');  
 ?><!DOCTYPE html>  
 <html lang="en">  
 <head>  
      <meta charset="utf-8">  
      <title>Welcome codeig</title>  
      <style type="text/css">  
      ::selection { background-color: #E13300; color: white; }  
      ::-moz-selection { background-color: #E13300; color: white; }  
      body {  
           background-color: #fff;  
           margin: 40px;  
           font: 13px/20px normal Helvetica, Arial, sans-serif;  
           color: #4F5155;  
      }  
      a {  
           color: #003399;  
           background-color: transparent;  
           font-weight: normal;  
      }  
      h1 {  
           color: #444;  
           background-color: transparent;  
           border-bottom: 1px solid #D0D0D0;  
           font-size: 19px;  
           font-weight: normal;  
           margin: 0 0 14px 0;  
           padding: 14px 15px 10px 15px;  
      }  
      code {  
           font-family: Consolas, Monaco, Courier New, Courier, monospace;  
           font-size: 12px;  
           background-color: #f9f9f9;  
           border: 1px solid #D0D0D0;  
           color: #002166;  
           display: block;  
           margin: 14px 0 14px 0;  
           padding: 12px 10px 12px 10px;  
      }  
      #body {  
           margin: 0 15px 0 15px;  
      }  
      p.footer {  
           text-align: right;  
           font-size: 11px;  
           border-top: 1px solid #D0D0D0;  
           line-height: 32px;  
           padding: 0 10px 0 10px;  
           margin: 20px 0 0 0;  
      }  
      #container {  
           margin: 10px;  
           border: 1px solid #D0D0D0;  
           box-shadow: 0 0 8px #D0D0D0;  
      }  
      </style>  
 </head>  
 <body>  
 <div id="container">  
      <h1>Hello World</h1>  
   <p>Welcome to my very own Welcome Page!!</p>  
      <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo (ENVIRONMENT === 'development') ? 'CodeIgniter Version <strong>' . CI_VERSION . '</strong>' : '' ?></p>  
 </div>  
 </body>    
 </html>  
2. Masukkan kode berikut pada file controller

      public function index()  
      {  
           $this->load->view('hello_world');  
      }  

3. Coba di web browser akan muncul tampilan begini

Membuat PhoneBook dari Database

1. Membuat file Controller pada folder controller dengan nama tampil.php

 <?php  
  class Tampil extends CI_Controller{  
   function __construct(){  
    parent::__construct();  
    $this->load->helper(array('url', 'form'));  
    $this->load->model('m_tampil');  
   }  
   function lihat(){  
    $data['data_buku'] = $this->m_tampil->m_lihat();  
    $this->load->view('v_lihat', $data);  
   }  
  }  
 ?>  

2. Buat file Model pada folder model dengan nama m_tampil.php dengan 'phonebook' sebagai nama tabel yang telah kita buat pada phpmyadmin


 <?php  
  class M_tampil extends CI_Model{  
   function __construct(){  
    parent::__construct();  
    $this->load->database();  
   }  
   function m_lihat(){  
    $lihat = $this->db->get('phonebook');  
    return $lihat->result();  
   }  
  }  
  ?>  

3. Buat file Viewnya pada folder view dengan nama v_lihat.php


 <!DOCTYPE html>  
 <html>  
  <head>  
   <title>PhoneBook</title>  
  </head>  
  <body>  
   <h1>My Phonebook</h1>  
   <table border="1">  
    <tr>  
     <th>Nama</th>  
     <th>Alamat</th>  
     <th>Email</th>  
     <th>HP</th>  
     <th>Kelas</th>  
    </tr>  
    <?php foreach ($data_buku as $lihat){  
     ?>  
    <tr>  
     <td><?php echo $lihat->Nama; ?></td>  
     <td><?php echo $lihat->Alamat; ?></td>  
     <td><?php echo $lihat->Email; ?></td>  
     <td><?php echo $lihat->HP; ?></td>  
     <td><?php echo $lihat->Kelas; ?></td>  
    </tr>  
    <?php  
    }  
    ?>  
   </table>  
  </body>  
  </html>  

4.Coba cek dan akan muncul seperti ini

Terima Kasih Wassalam.. :D

UTS P. Web

1. Berdasarkan tugas pembuatan web yang telah dilakukan

  • Web yang dikerjakan : stickmypride.com

  • Biaya Web :
          - Domain : Rp 115.000
          - Hosting : Rp 394.800 per tahun
  • Langkah - langkah yang telah dilakukan :
          a. Menyewa hosting sekaligus domain
          b. Menginstall CMS Wordpress pada Hosting
          c. Mengupload beberapa stiker
          d. Menambahkan beberapa kategori

  • Fitur - fitur pada Web
         a. Sign Up


       b. Log In

      c. Melihat stiker sesuai kategori




2. Buatlah program pendek untuk monitoring praktiku, sebagai berikut :
    a. Tabel User
   
    
    b. Tabel Praktikum
     
    
    c. Koneksi.php
         <?php
$dbserver = 'localhost';
$dbuser   = 'root';
$dbpass   = '';
$dbname   = 'baru';

$connect = new mysqli($dbserver, $dbuser, $dbpass, $dbname);

if ($connect->connect_error) {
    trigger_error('Database connection failed: '  . $conn->connect_error, E_USER_ERROR);
}
?>

   d. Login.php
      
    
<?php
    include 'koneksi.php';
?>
    
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>UTS Pweb</title>

    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

  </head>

<div class="col-sm-3" style="background-color:lightgreen; padding-top:10px">
    <form action="login_user.php" method="POST">
      <div class="contact-bottom">
        <label>Username : </label>
        <input name="nama_user" type="text" placeholder="Username" />
        <br>
        <label>Password : </label>
        <input name="password_user" type="password" placeholder="Password" />
        <div class="submit-btn">
          <input type="Submit" value="Login">
        </div>
      </div>
    </form>
</div>

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>


     d. Menampilkan data
<?php 
  include'koneksi.php';
$i=1;

echo '<table border="1" style="background-color:orange"><thead><td> No. </td><td>Kode</td><td>Mata Praktikum</td><td> Jumlah Praktikan</td></thead><tbody>';
echo '<h1>Data Mata Praktikum dan Jumlah Praktikan</h1>';
if($resultc = $connect->query("SELECT * FROM `praktikum`")){
                while($rowc = $resultc->fetch_assoc()) {
                      echo '<tr>';
                       echo '<td>', $i++,'</td>';
                       echo '<td>', $rowc['kode_mk'],'</td>';
                       echo '<td>', $rowc['nama_mk'],'</td>';
                       echo '<td>', $rowc['jumlah_praktikan'],'</td>';
                    echo '</tr>';
                    }
                $resultc->free();


}

echo '</tbody></table>';
echo '<div style="text-align:center"><button > Tambah Data MK</button></div>';
?>




Cara pake PHP di Web

Halo halo....
Akhirnya saya menggunakan blog ini lagi...  Maaf kalo lama nggak post lagi....
Kali ini saya akan menunjukkan cara cara dasar menggunakan server side programming pada web. Kali ini adalah bahasa PHP.
Berikut cara menyambungkan web dengan database

conn.php

<?php

  $host = 'localhost';
  $database = 'baru';
  $username = 'root';
  $password = '';

  $connection = mysqli_connect($host, $username, $password, $database);

  if(!$connection){
    echo "GAGAL";
  }

  echo "SUKSES";
  ?>

Sebelum mencoba kode diatas, kita mulai dulu service Apache dan MySQL pada XAMPP


Jika kita berhasil koneksi, maka akan muncul seperti ini

Inilah salah satu contoh kode php yang menggunakan array

<html>
 <head>
  <title>Pemrograman PHP menggunakan array</title>
 </head>
 <body>
  <?php
   $nama[]="Setiawan";
   $nama[]="Hari";

   echo $nama[1], $nama[0];
   echo "<br>";

   $kampus[1]="ITS";
   $kampus[2]="Surabaya";

   echo "Kampusku adalah $kampus[1] $kampus[2]";
  ?>
 </body>
</html>


Tampilannya akan menjadi berikut


Terima kasih atas perhatiannya.... Bye bye....

Tutorial Linux Part 6: Fuse pada Linux


Selamat datang kembali pada tutorial Linux. Kali ini, saya akan membahas tentang FUSE yang memliki kepanjang File System User Space. Disini akan saya tunjukkan bagaimana cara membuat file system sendiri di Linux dengan menggunakan FUSE. Di bawah ini akan saya tunjukkan implementasi dasar FUSE pada bahasa C.

#include <fuse.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
#include <sys/statfs.h>
static const char *dirpath = "/home/user/Documents";
static int xmp_getattr(const char *path, struct stat *stbuf)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = lstat(fpath, stbuf);
if(res == -1)
return -errno;
return 0;
}
static int xmp_readlink(const char *path, char *buf, size_t size)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = readlink(fpath, buf, size - 1);
if(res == -1)
return -errno;
buf[res] = '\0';
return 0;
}
static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
char fpath[1000];
if(strcmp(path,"/") == 0){ // jika root
path=dirpath;
sprintf(fpath,"%s", path);
}
else sprintf(fpath, "%s%s", dirpath, path);
int res = 0;
DIR *dp;
struct dirent *de;
dp = opendir(fpath);
if(dp == NULL)
return -errno;
while((de = readdir(dp)) != NULL){ // membaca tiap direktori
res = filler(h, de->d_name, de->d_type);
if(res != 0)
break;
}
system("notify-send Hai_Cintaku");
closedir(dp);
return res;
}
static int xmp_mknod(const char *path, mode_t mode, dev_t rdev)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = mknod(fpath, mode, rdev);
if(res == -1)
return -errno;
return 0;
}
static int xmp_mkdir(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = mkdir(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_unlink(const char *path)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = unlink(fpath);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rmdir(const char *path)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = rmdir(fpath);
if(res == -1)
return -errno;
return 0;
}
static int xmp_symlink(const char *from, const char *to)
{
int res;
char ffrom[1000];
char fto[1000];
sprintf(ffrom,"%s%s",dirpath,from);
sprintf(fto,"%s%s",dirpath,to);
res = symlink(ffrom, fto);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rename(const char *from, const char *to)
{
int res;
char ffrom[1000];
char fto[1000];
sprintf(ffrom,"%s%s",dirpath,from);
sprintf(fto,"%s%s",dirpath,to);
res = rename(ffrom, fto);
if(res == -1)
return -errno;
return 0;
}
static int xmp_link(const char *from, const char *to)
{
int res;
char ffrom[1000];
char fto[1000];
sprintf(ffrom,"%s%s",dirpath,from);
sprintf(fto,"%s%s",dirpath,to);
res = link(ffrom, fto);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chmod(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = chmod(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chown(const char *path, uid_t uid, gid_t gid)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = lchown(fpath, uid, gid);
if(res == -1)
return -errno;
return 0;
}
static int xmp_truncate(const char *path, off_t size)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = truncate(fpath, size);
if(res == -1)
return -errno;
return 0;
}
static int xmp_utime(const char *path, struct utimbuf *buf)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = utime(fpath, buf);
if(res == -1)
return -errno;
return 0;
}
static int xmp_open(const char *path, int flags)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
res = open(fpath, flags);
if(res == -1)
return -errno;
close(res);
return 0;
}
static int xmp_read(const char *path, char *buf, size_t size, off_t offset)
{
int fd;
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
fd = open(fpath, O_RDONLY);
if(fd == -1)
return -errno;
res = pread(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static int xmp_write(const char *path, const char *buf, size_t size, off_t offset)
{
int fd;
int res;
char fpath[1000];
sprintf(fpath,"%s%s", dirpath, path);
fd = open(fpath, O_WRONLY);
if(fd == -1)
return -errno;
res = pwrite(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static struct fuse_operations xmp_oper = {
.getattr = xmp_getattr,
.readlink = xmp_readlink,
.getdir = xmp_getdir,
.mknod = xmp_mknod,
.mkdir = xmp_mkdir,
.symlink = xmp_symlink,
.unlink = xmp_unlink,
.rmdir = xmp_rmdir,
.rename = xmp_rename,
.link = xmp_link,
.chmod = xmp_chmod,
.chown = xmp_chown,
.truncate = xmp_truncate,
.utime = xmp_utime,
.open = xmp_open,
.read = xmp_read,
.write = xmp_write,
};
int main(int argc, char *argv[])
{
fuse_main(argc, argv, &xmp_oper);
return 0;
}

Kode Fuse diatas memiliki semua fungsi – fungsi dari FUSE. Namun jika kamu ingin tidak membutuh kan beberapa dari fungsi tersebut, kamu juga bisa menghilangkan beberapa fungsinya. Di bawah ini akan saya tunjukkan implementasi FUSE yang jika kita meng-copy sebuah file, maka file yang asli tidak akan bisa dibuka ataupun dicopy lagi. Untuk membuat file system seperti itu, maka kita dapat memodifikasi fungsi read dan write nya. Di bawah ini adalah hasil modifikasinya

#ifdef linux
/* For pread()/pwrite() */
#define _XOPEN_SOURCE 500
#endif
#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
#include <sys/statfs.h>
static const char *dirpath ="/home/fourirakbar/modul4/coba";
char alamat[1000];
static int xmp_getattr(const char *path, struct stat *stbuf)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = lstat(fpath, stbuf);
if (res == -1)
return -errno;
return 0;
}
static int xmp_readlink(const char *path, char *buf, size_t size)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = readlink(fpath, buf, size - 1);
if (res == -1)
return -errno;
buf[res] = '\0';
return 0;
}
static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
DIR *dp;
struct dirent *de;
int res = 0;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
dp = opendir(fpath);
if(dp == NULL)
return -errno;
while((de = readdir(dp)) != NULL)
{
res = filler(h, de->d_name, de->d_type);
if(res != 0)
break;
}
closedir(dp);
return res;
}
static int xmp_mknod(const char *path, mode_t mode, dev_t rdev)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = mknod(fpath, mode, rdev);
if(res == -1)
return -errno;
return 0;
}
static int xmp_mkdir(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = mkdir(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_unlink(const char *path) //saat kita melakukan delete
{
int res,res2;
char fpath[1000], temp[1000];
sprintf(fpath, "%s%s", dirpath, path);
strcpy(temp,fpath);
res = unlink(fpath);
do
{
sprintf(temp, "%s-copy", fpath); //kita mengecek folder backup nya
res2=unlink(temp); //jika terdapat folder backup, maka backup tersebut akan di delete
}
while(res2!=-1);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rmdir(const char *path)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = rmdir(fpath);
if(res == -1)
return -errno;
return 0;
}
static int xmp_symlink(const char *from, const char *to)
{
int res;
char from1[1000];
char to1[1000];
sprintf(from1,"%s%s", dirpath, from);
sprintf(to1,"%s%s", dirpath, to);
res = symlink(from, to);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rename(const char *from, const char *to)
{
int res;
char from1[1000];
char to1[1000];
sprintf(from1,"%s%s", dirpath, from);
sprintf(to1,"%s%s.copy", dirpath, to);
res = rename(from1, to1);
if (res == -1)
return -errno;
return 0;
}
static int xmp_link(const char *from, const char *to)
{
int res;
char from1[1000];
char to1[1000];
sprintf(from1,"%s%s", dirpath, from);
sprintf(to1,"%s%s", dirpath, to);
res = link(from, to);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chmod(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = chmod(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chown(const char *path, uid_t uid, gid_t gid)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = lchown(fpath, uid, gid);
if(res == -1)
return -errno;
return 0;
}
static int xmp_truncate(const char *path, off_t size)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = truncate(fpath, size);
if(res == -1)
return -errno;
return 0;
}
static int xmp_utime(const char *path, struct utimbuf *buf)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = utime(fpath, buf);
if(res == -1)
return -errno;
return 0;
}
static int xmp_open(const char *path, int flags)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = open(fpath, flags);
if(res == -1)
return -errno;
close(res);
return 0;
}
static int xmp_read(const char *path, char *buf, size_t size, off_t offset)
{
int fd;
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
strcpy(alamat,path);
fd = open(fpath, O_RDONLY);
if(fd == -1)
return -errno;
res = pread(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static int xmp_write(const char *path, const char *buf, size_t size, off_t offset) //saat write file
{
int fd;
int res;
int res1;
char fpath[1000],temp1[1000];
char newname[]= "barucopy";
sprintf(fpath, "%s%s", dirpath, path);
fd = open(fpath, O_WRONLY);
sprintf(temp1, "%s%s", dirpath, alamat);
res1 = chmod(temp1, 0000);
if(res1 == -1)
res1 = -errno;
if(fd == -1)
return -errno;
res = pwrite(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
rename(path,newname);
return res;
}
static int xmp_release(const char *path, int flags)
{
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
(void) fpath;
(void) flags;
return 0;
}
static int xmp_fsync(const char *path, int isdatasync)
{
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
(void) fpath;
(void) isdatasync;
return 0;
}
static struct fuse_operations xmp_oper = {
.getattr = xmp_getattr,
.readlink = xmp_readlink,
.getdir = xmp_getdir,
.mknod = xmp_mknod,
.mkdir = xmp_mkdir,
.symlink = xmp_symlink,
.unlink = xmp_unlink, // delete
.rmdir = xmp_rmdir,
.rename = xmp_rename,
.link = xmp_link,
.chmod = xmp_chmod,
.chown = xmp_chown,
.truncate = xmp_truncate,
.utime = xmp_utime,
.open = xmp_open,
.read = xmp_read,
.write = xmp_write,
.release = xmp_release,
.fsync = xmp_fsync
};
int main(int argc, char *argv[])
{
fuse_main(argc, argv, &xmp_oper);
return 0;
}