Extends Codeigniter Core Class

Jika ingin menambahkan fungsi-fungsi yang sekiranya akan digunakan oleh semua :

  • Benchmark
  • Config
  • Controller
  • Exceptions
  • Hooks
  • Input
  • Language
  • Loader
  • Log
  • Output
  • Router
  • Security
  • URI
  • Utf8

di Codeigniter, maka dapat dilakukan dengan cara Extends Core Class Codeigniter untuk kemudian menambahkan fungsi-fungsi tersebut. Jika nama fungsi yang ditambahkan sudah digunakan oleh Core Class nya (reserved), maka fungsi itu akan meng-override fungsi aslinya. Jadi berhati-hati dalam memilih nama fungsi.

/** application/core/MY_Controller.php */
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class MY_Controller extends CI_Controller 
{
  public function __construct()
  {
    parent::__construct();
    $this->load->library('session');
  }

  public function is_loggedin()
  {
    if ($this->session->userdata('username') {
      // user login
      return true;
    } else {
      // user belum login
      return false;
    }
  }
}

Extends Class ini pada dasarnya adalah menduplikat class yang sudah ada untuk kemudian ditambahkan atau dimodifikasi agak sesuai dengan kebutuhan. Sebagai contoh, ketika ingin menambahkan fungsi is_loggedin() yang akan memeriksa apakah user sudah login atau belum di Controller, maka kita dapat melakukannya dengan cara membuat file MY_Controller.php di folder application/core dan yang berisi.

Dan pada saat membuat Controller, kita tidak lagi extends dari CI_Controller, tapi dari MY_Controller yang barusan kita buat tersebut.

/** application/controller/Dashboard.php */
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class MY_Controller extends MY_Controller
{
  public function __construct()
  {
    parent::__construct();
    $this->load->helper('url');
  }

  public function index()
  {
    if ($this->is_loggedin()) {
      // user sudah login
      $this->load->view('dashboard/index');
    } else {
      // user belum login
      redirect(base_url());
    }
  }

Untuk lebih lengkapnya bisa dilihat di halaman dokumentasi Codeigniter ini.

Mudah-mudahan bermanfaat ya !

Codeigniter base_url and index_page

Untuk memasang Codeigniter di web server lokal komputer, silahkan lihat halaman ini. Setelah Codeigniter berhasil terpasang, langkah berikutnya adalah memastikan pemasangan Codeigniter sudah benar dengan cara mengakses url pemasangan Codeigniter di web server lokal Anda dengan mengakses

http://localhost/aplikasi

Jika Codeigniter berhasil terpasang, maka seharusnya Anda dapat melihat halaman selamat datang dari Codeigniter seperti gambar di bawah ini.

ci_welcome_page

Gambar 1 : Halaman Selamat Datang Codeigniter.

Setelah itu, coba akses ke http://localhost/halaman404, maka hasilnya akan tampil seperti gambar di bawah ini.

ci_object_not_found

Gambar 2 : Codeigniter Object Not Found

Sebenarnya, di Codeigniter sudah ada halaman 404 Not Found yang ditampilkan saat Codeigniter tidak dapat menemukan controller dari request yang diberikan. Halaman 404 Not Found itu adalah seperti gambar di bawah ini.

ci_404_page

Gambar 3 : Codeigniter Not Found page

Lalu, bagaimana supaya saat Codeigniter tidak dapat menemukan controller yang di-request maka akan menampilkan halaman 404 Not Found tersebut?

Buka file config.php di folder application di aplikasi Codeigniter, kemudian cari konfigurasi $config[‘base_url’], kemudian ubah nilai nya dengan http://localhost/aplikasi ( sesuai dengan nama aplikasi Codeigniter Anda )

$config['base_url'] = 'http://localhost/aplikasi/';

Kemudian cari konfigurasi $config[‘index_page’] dan ubah nilainya menjadi ” ( empty string ), kemudian simpan perubahan tersebut.

$config['index_page'] = '';

Selanjutnya, buat file baru di bawah folder aplikasi ( satu level dengan folder application ) dengan nama .htaccess. Isi file .htaccess ini dengan :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

kemudian simpan perubahan tersebut.

Sekarang coba akses kembali

http://localhost/halaman404

lagi, dan kali ini seharusnya Codeigntier menampilkan halaman 404 Not Found dan bukan lagi halaman Object not Found seperti sebelumnya.

Oh iya, Halaman 404 Not Found ini dapat Anda ubah sesuai kebutuhan dengan mengubah file application/views/errors/html/error_404.php.

Mudah-mudahan bermanfaat.

Ciri anak yang dominan otak kanannya.

ciri-ciri anak yang lebih dominan otak kanannya versi ayah Edy :
1. Biasanya sulit mengikuti pelajaran sekolah.
2. Biasanya sewaktu kecil termasuk anak yang terlambat berbicara dibanding anak seusianya.
3. Biasanya semasa masih balita lebih kuat tangan kiri atau cenderung lebih kidal.
4. Jika berbicara tidak runtut, tidak sistematis dan cenderung sulit dipahami.
5. Memiliki perasaan yang sangat sensitif atau peka.
6. Sulit mengungkapkan keinginannya dalam kalimat atau sulit menyusun kalimat dalam mengungkapkan perasaanya.
7. Mudah hafal tanda-tanda, tempat atau rute yang pernah dilihat atau dilaluinya meski cuma sekali.
8. Sering bicara tidak nyambung dengan pertanyaannya.
9. Kadang-kadang suka bicara sendiri menceritakan fantasinya.
10. Kadang bercerita tentang suatu tempat yang belum pernah dikunjungi seolah-olah tempat itu nyata baginya.
11. Konsentrasinya seringkali rendah pada pekerjaan atau kegiatan yg kurang disukainya ato yg diperintah oleh gurunya. Tapi memiliki konsentrasi penuh saat melakukan hal2 yg disukainya.
12. Seringkali membuat cara baru dalam menyelesaikan masalah.
13. Lebih suka permainan rancang bangun seperti lego, susun menyusun, gambar menggambar dan sebagainya.
14. Suka keluar dari kelompok dan melakukan aktivitas sendirian.
15. Sebagian ada yg bisa membedakan jenis benda secara detil, seperti merek mobil, type pesawat, jenis2 hewan dsb.
16. Seringkali sulit belajar mengeja suku kata.
17. Sulit membedakan huruf b kecil dan d kecil
18. seringkali terbalik-balik saat menulis huruf b dgn d,w dgn m dsb.
19. Sulit mengerjakan soal matimatika dan logika serta rumus2 kecuali saat kita memberikan contoh analoginya.
20. Sebagian sulit memahami makna soal cerita matematika kecuali diberikan contoh langsung, praktek dan perumpamaan dengan alat bantu.
21. Sering memandang ke atas dan seperti anak yg sedang melamun.
22. Seringkali tidak suka mencatat dan lebih suka memenuh bukunya dengan gambar di sana sini.
23. Kalo sudah bisa membaca, seringkali saat membaca kata2nya sering melompat2 dan beberapa kata terlewati.
24. Jika sudah mengenal huruf atau angka biasanya akan bisa membaca urutannya sama cepat baik dari depan ke belakang maupun dari belakang ke depan.

Jangan kuatir, anak2 dengan ciri2 tersebut bukanlah anak2 yg bermasalah. Anak2 tersebut lebih dominan otak kanannya dan memiliki keunggulan di bidang imajiasi, design, rancang bangun baik di bidang science maupun seni.

Customized Application atau Standard Application

Untuk perusahaan yang sedang berkembang atau bahkan perusahaan besar, kebutuhan akan sistem sudah pasti menjadi satu hal yang tidak bisa ditolerir lagi. Tanpa sistem maka bisa dibayangkan betapa tidak efisiennya pekerjaan yang harus dikerjakan oleh karyawannya secara manual. Kebutuhan sistem ini yang membuat manajemen perusahaan harus memutuskan untuk menggunakan Customized Application (aplikasi terkustomisasi) atau Standard Application (aplikasi jadi).

Tentu saja akan ada banyak sekali faktor yang dijadikan pertimbangan untuk menentukan pilihan, antara lain :
1. Jenis / bidang bisnis yang dijalani
2. Proses bisnis yang unik
3. Resource IT yang dimiliki
4. Anggaran,
5. dsb

Tapi secara garis besar kita bisa melihat kelebihan dan kekurangan dari Customized Application dan Standard Application. Dan berikut adalah ulasan singkatnya.

Standard Application

Keuntungan:
– Langsung bisa dipakai dan tidak usah menunggu proses development yang bisa jadi panjang
– Sudah teruji biasanya ( untuk vendor aplikasi besar pasti punya tim QC untuk produk-produknya )
– Ada support dari vendor ( jika membeli aplikasi yang berlisensi )

Kelemahan :
– Seringkali tidak sesuai dengan proses bisnis yang ada di perusahaan
– Tidak bisa menambah atau mengubah role bisnis yang sudah ada ( kecuali vendor aplikasi menyediakan support itu )
– Relatif mahal harganya, baik beli putus maupun beli lisensi per periode tertentu.

sedangkan untuk Customized Application,

Keuntungan :
– Proses bisnis sudah pasti bisa menyesuaikan dengan aturan perusahaan, bahkan untuk aturan-aturan yang khusus atau unik.
– Dapat menambah atau mengubah role proses bisnis jika ternyata harus ada perubahan
– Lebih bisa yakin terhadap apa yang dilakukan oleh aplikasi karena di develop sendiri.

Kelemahan :
– Butuh tim untuk mengembangkan aplikasi
– Butuh waktu untuk mengembangkan aplikasi

dari beberapa uraian singkat di atas mungkin bisa dijadikan bahan pertimbangan untuk memilih antara Customized Application atau Standard Application.

semoga bermanfaat !

salam,
shes12

Validasi Data Transaksi

Saat kita sedang membuat atau merancang aplikasi database, hampir dapat dipastikan kita akan menemukan yang namanya data transaksi, selain data master tentu saja. Data transaksi ini merupakan rekaman dari transaksi-transaksi yang dilakukan di dalam aplikasi. Biasanya transaksi-transaksi ini melibatkan data master sebagai acuan atau referensi. Dan kali ini saya ingin menulis tentang validasi data transaksi dalam aplikasi, yang terutama berhubungan dengan proses lain. so, mari kita mulai …

Kali ini yang akan kita ambil sebagai contoh adalah data penjualan, bagi mereka yang pernah membuat aplikasi pos atau aplikasi yang memiliki modul penjualan pastinya sudah tidak asing lagi. Tapi jika ternyata Anda belum pernah membuat aplikasi yang memiliki modul penjualan juga tidak masalah, saya tidak akan membahas ini terlalu teknis, lebih kepada pendekatan metode nya saja. Karena jika terlalu teknis, maka setiap programmer memiliki style mereka masing-masing dan begitu pun dengan Anda bukan ?

Transaksi penjualan biasanya melibatkan beberapa data master antara lain, data master barang, data master pembeli atau langganan (jika ada), data master stock (untuk mengetahui apakah item dimaksud masih memiliki stock yang cukup untuk transaksi penjualan) dan data konversi satuan (jika modul penjualan mengakomodasi multi satuan). Sebagai contoh sederhana kita ambil transaksi penjualan dengan satu satuan saja.

Saat transaksi penjualan terjadi dengan 5 item di dalamnya kemudian transaksi tersebut telah di simpan, tidak serta merta data penjualan tersebut meng-update stock barang di tabel stock. (misalnya aturan yang dipakai adalah stock ter-update saat pembayaran terhadap penjualan dilakukan). Jadi data transaksi masih hanya berupa data transaksi saja, belum terkait dengan data stock.

Di tahap ini, jika ternyata data transaksi mengalami perubahan atau penambahan item maka user diperbolehkan meng-edit data penjualan karena data tersebut masih belum terkait dengan stock barang. Tapi pada saat transaksi tersebut sudah dibayar, dan data transaksi penjualan telah di validasi, maka seharusnya data transaksi tersebut sudah TIDAK BOLEH lagi diubah. Dan sudah menjadi data yang fix / mati.

Kenapa? karena pada saat validasi, terdapat proses update stock barang. Jika ternyata data transaksi diubah baik ditambah item atau dikurangi item atau diubah qty nya, maka aplikasi perlu melakukan update ke data stock juga, tapi mekanisme ini akan jauh lebih merepotkan dan tidak konsisten jika kita memakai kartu stock untuk mengontrol keluar masuk barang di aplikasi kita.

Oleh karena itu, pada saat proses validasi selesai dilakukan, data dinyatakan sebagai data yang sudah fix atau mati. Kemudian bagaimana jika ternyata data tersebut salah ? atau terdapat salah entri di dalamnya?? ada beberapa metode yang bisa dilakukan dan kali ini saya hanya akan menunjukkan 2 diantaranya.

1. Batal Validasi
Sebelum mengubah data, maka dilakukan proses batal validasi. Proses ini mengembalikan stock semua item yang ada di data transaksi penjualan dengan qty yang sesuai dengan yang ada di dalam transaksi. Jika di dalam transaksi terjual 10 pc, maka di stock barang akan dikembalikan 10 pc juga, dan seterusnya.

Dengan demikian setelah proses Batal Validasi ini, stock barang yang ada di transaksi seolah-olah dibatalkan, tapi di kartu stock tetap tercatat sebagai pembatalan validasi dari nota penjualan tersebut. Setelah itu baru dilakukan perubahan data transaksi, entah itu mengurangi item, menambah item atau mengubah qty item. Setelah perubahan selesai, kemudian dilakukan kembali proses validasi yang akan meng-update kembali data stock barang sesuai dengan data transaksi yang telah diperbaiki.

Proses ini memiliki resiko bahwa di kartu stock kita akan menjadi lebih panjang dan banyak itemnya jika sering terjadi proses pembatalan transaksi seperti ini. Tapi paling tidak, kita bisa mengetahui kenapa transaksi tersebut dibatalkan, dan jika ternyata banyak transaksi serupa, berarti kita perlu mempertanyakan kinerja dari user entri datanya.

2. Transaksi Koreksi
Pendekatan kedua adalah transaksi koreksi, dimana kita membuat transaksi koreksi dengan mengubah data transaksi yang sudah ada tapi dengan menggunakan transaksi yang berbeda. Jika ternyata ada salah satu item yang ingin dibatalkan di data transaksi tersebut, maka kita bisa membuat transaksi yang menyatakan bahwa item itu di nota penjualan no sekian dinyatakan dibatalkan (dengan flag batal misalnya), dan saat transaksi koreksi ini di validasi, maka dilakukan update data stock barang sesuai dengan transaksi koreksi.

Pendekatan ini hanya fokus pada item yang salah saja, jadi tidak semua item perlu dikembalikan ke data stock barang terlebih dahulu, namun hanya item yang ternyata salah entri saja. Di kartu stock kita masih akan mendapati bahwa terdapat transaksi koreksi dari item tersebut dan kembali lagi, jika ternyata banyak transaksi koreksi yang terjadi, maka kita harus mempertanyakan kembali kinerja user entri data.

Dari kedua pendekatan tersebut, kita bisa memilih salah satunya, yang kemungkinan lebih sesuai dengan kondisi dan situasi yang ada di tempat klien kita, tapi tujuan dari adanya proses seperti di atas adalah agar perubahan di data transaksi tetap dapat terekam dan tercatat di dalam database, serta efek yang ditimbulkan dari perubahan data transaksi tersebut tetap bisa meng-update data stock barang dengan benar.

Gimana? bingung ya? ya sudah tidak apa-apa kalo masih bingung, silahkan baca pelan-pelan lagi dari awal. Tapi jika memang ada yang mau ditanyakan, silahkan komen di post ini atau kontak saya di email yang ada di halaman ME.

Mudah-mudahan bermanfaat !

#me #data #transaksi #validasi

solving problem key is identifying the problem itself

Paling tidak menurutku begitu, kunci dari pemecahan masalah adalah identifikasi terhadap masalah itu sendiri, proses identifikasi ini menjadi penting karena hasil dari identifikasi ini yang akan menentukan metode atau pendekatan terbaik yang bisa kita lakukan untuk menyelesaikan masalah. Jika proses identifikasi ini tidak maksimal, sudah bisa diprediksi bahwa pemilihan solusi juga tidak akan maksimal pula.

Input = Output, itu yang dikerjakan oleh program. Program bekerja berdasarkan input yang diberikan. jika input nya tidak valid, maka output nya juga tidak bisa dipastikan valid. ini bukan tentang manipulasi data yang bisa dilakukan oleh program saat melakukan proses, dari data yang tidak valid menjadi valid … bukan tentang hal tersebut, tapi lebih ke tentang jika input yang diberikan itu tidak lengkap atau salah, maka hasil proses dari program juga akan salah. Program berjalan hanya sesuai logika yang ditanamkan kepada mereka saja, dan mereka memberikan respon sesuai dengan logika tersebut. selebihnya, akan diabaikan.

Manusia bukan program, punya kemampuan membuat program, punya kemampuan untuk menganalisa masalah juga. Jadi seharusnya manusia bisa melakukan identifikasi masalah dengan lebih baik daripada program. Proses identifikasi sendiri diawali dengan pemahaman akan lingkup masalah itu sendiri, supaya bisa mendapatkan gambaran umum tentang apa sebenarnya yang akan diidentifikasi. Jika dari awal sudah tidak memiliki pemahaman tentang masalah yang akan diidentifikasi, maka akan sangat mungkin jika proses identifikasi berikutnya menjadi lebih tidak terarah, karena tidak bisa memilah masalah dan hal-hal yang di luar masalah tersebut.

Kita ambil contoh dalam proses pengembangan aplikasi misalnya, identifikasi masalah itu sangat penting karena akan menentukan bagian mana dari aplikasi yang akan dilihat kembali dan mungkin saja diperbaiki, jika identifikasi masalah ini saja sudah salah, maka bisa jadi bagian dari aplikasi yang diubah juga salah. Setelah itu kita bisa lebih mengecilkan lagi masalah tersebut menjadi daftar proses yang dilakukan oleh bagian dari aplikasi tersebut (atau selanjutnya akan kita sebut sebagai modul).

Setelah diketahui daftar dari proses apa saja yang dilakukan oleh modul tersebut dan apa saja yang dibutuhkan oleh modul tersebut maka selanjutnya dilakukan pemeriksaan lebih dalam bagaimana proses itu seharusnya berjalan dan kenapa sampai terjadi masalah di proses tersebut. Ruang lingkup dari analisa ini pasti sudah jauh lebih kecil dari sebelumnya, karena hanya fokus kepada proses yang mengalami masalah saja. Setelah didapatkan penyebab masalah dari proses yang ada di modul tersebut, maka kemudian bisa dilakukan pencarian pendekatan terbaik untuk membuat proses tersebut bisa kembali normal seperti seharusnya.

Mungkin saja hanya ada kesalahan di entry data, atau tidak lengkapnya input yang diberikan, atau memang ada proses di dalam modul itu yang tidak berjalan sebagaimana mestinya. Setelah didapatkan pendekatan yang terbaik untuk menyelesaikan masalah tersebut maka selanjutnya bisa dilakukan eksekusi modifikasi terhadap modul tersebut sesuai dengan pendekatan yang sudah diputuskan.

Proses ini panjang, dan tidak mudah. Saya yakin seratus persen tentang hal itu, jadi butuh orang dengan kemampuan yang lebih untuk bisa mengerjakan proses identifikasi dan analisa masalah seperti itu. Belum lagi ada hal-hal yang harus berkaitan dengan user atau manajemen yang seringkali juga tidak konsisten, dan itulah peran penting dalam mengambil keputusan untuk menuruti atau menganulir permintaan dari user atau manajemen jika memang tidak sesuai dengan cara yang benar.

Daftar dan penjelasan tentang masalah yang terjadi dapat digunakan sebagai daftar pemeriksaan penyelesaian masalah. Dari sekian item yang ada di dalam daftar, sudah berapa yang bisa terselesaikan dan yang belum terselesaikan.

right man for the right job akan selalu menjadi awal yang baik !

mudah-mudahan tulisan ini tidak membosankan dan bermanfaat untuk semua !

#me #myself