PostgreSQL: Menemukan Data Duplikat

Jika saya punya tabel mahasiswa dengan hanya 2 fields yaitu id_mhs dan nama_mhs, dan saya ingin mencari apakah ada nama yang dobel/duplikat, bisa gunakan SQL berikut ini:

select * from (
select id_mhs, nama_mhs,
ROW_NUMBER() OVER(PARTITION BY nama_mhs ORDER BY nama_mhs, id_mhs) AS Row
 FROM mahasiswa
) dups
where 
dups.Row > 1

How to Install Yii 2

Bismillah.. lagi nyoba install Yii 2 di Ubuntu 12.04. Berikut ini langkah2 yang saya jalankan dengan mengikuti petunjuk di sini.

Pertama, install Composer dulu. Sebenarnya untuk menginstall Yii 2 bisa langsung download application template, tapi disarankan pakai Composer. Ya udah, saya coba aja install Composer dulu. Btw, Composer adalah dependency manager/package manager untuk PHP, sama halnya seperti Maven untuk Java. Saya install Composer mengikuti langkah2 di sini. Pertama, saya menjalankan ini di Terminal:

curl -sS https://getcomposer.org/installer | php

Tapi muncul error: “Parse error: syntax error, unexpected T_SL in – on line 849”. Setelah gooling, ternyata itu terjadi kalau pakai PHP 5.2, sedangkan Composer hanya bisa pakai PHP 5.3 ke atas.

Nah sebenarnya saya masih agak bingung sih dengan PHP ini T_T Jadi di komputer saya ini ada 2 versi PHP, yang satu kalau saya cek php -v keluarnya 5.2.17, kalau saya cek php5 -v baru keluar 5.3.10. Gimana biar dia pake PHP yang 5.3 ya.. jadi saya ubah aja command di atas menjadi:

curl -sS https://getcomposer.org/installer | php5

Berhasil. Setelah itu pindahkan Composer ke /usr/local/bin biar bisa diakses dari mana saja:

mv composer.phar /usr/local/bin/composer

Setelah itu, kalau run “composer” sih seharusnya udah muncul tampilan berhasil. Tapi di komputer saya rada2 aneh PHPnya, jadi ada error missing class “Phar” T_T

Ya udah, jadi alih2 install composer dengan scope global, saya install Yii 2 dengan cara langsung ambil package-nya aja. Tinggal download di sini (bagian Install form Archive file), terus coba dulu yang basic. Kalau udah, tinggal diesktrak, terus buka di web browser: “http://hostname/basic/web/index.php”. Muncul deh halaman ini:

yii welcome

 

Coba klik tab “About” dan perhatikan URLnya, “http://hostname/basic/web/index.php?r=about”. Halaman itu ditampilkan oleh controller SiteController dan fungsinya actionAbout. Kalau saya biasa pakai URL yang lebih singkat, jadi pengennya URLnya jadi http://hostname/basic/web/site/about. Jadi nanti2nya gak perlu pakai “index.php?r=”lagi. Ada 2 tahap yang perlu dilakukan untuk mengganti format URL ini:

1.  Buat file .htaccess di folder web yang berisi:

RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php

2. Tambahkan konfigurasi URL di file config/web

'urlManager' => [
 'class' => 'yii\web\UrlManager',
 // Disable index.php
 'showScriptName' => false,
 // Disable r= routes
 'enablePrettyUrl' => true,
 'rules' => array(
 '<controller:\w+>/<id:\d+>' => '<controller>/view',
 '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
 '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
 ),
 ],

Yak, selesai.. sekarang URL tadi bisa diakses dengan “http://hostname/basic/web/site/about&#8221;.

Dengan kaitkata , , , , ,

Cloud Computing

Pekerjaan yang kita lakukan dengan bantuan komputer melibatkan proses computing atau komputasi di dalam komputer tersebut. Untuk menggunakan aplikasi/software tertentu, komputer kita harus menginstall software tersebut dan spesifikasi hardware-nya pun harus memenuhi untuk bisa menjalankan software tersebut.

Bayangkan jika kita adalah seorang pemilik perusahaan dengan beberapa karyawan yang perlu bekerja dengan software di komputer. Kita perlu memberikan satu komputer untuk masing2 pegawai, dan harus menginstall software yang dibutuhkan di setiap komputer pegawai. Kalau ada karyawan baru, maka kita perlu membeli komputer baru dengan spesifikasi hardware dan diinstall dengan software yang sama. Hal ini tentu memerlukan biaya yang tidak sedikit, apalagi untuk lisensi softwarenya. Untuk menghemat biaya, cloud computing bisa jadi salah satu solusinya.

Dalam cloud computing, proses komputasi tidak terjadi di komputer kita masing2, melainkan di jaringan komputer yang kita akses menggunakan internet. Jadi seolah2 komputasi itu terjadi di awang2/di atas awan. Dengan cloud computing, beban biaya komputer personal bisa ditekan karena tidak perlu spesifikasi hardware yang canggih2 amat, dan tidak perlu install dan bayar lisensi software di komputer setiap orang. Masing2 komputer tinggal terhubung ke cloud ini dan mengakses aplikasi menggunakan interface software, yang bisa jadi hanya merupakan sebuah browser.

Ada tiga jenis layanan yang bisa digunakan dalam cloud computing.

1. Software as a Service (SaaS)
Penyedia jasa SaaS menyediakan software yang bisa diakses dari komputer mana saja dengan gratis atau biaya langganan tertentu. Software yang diakses melalui cloud computing juga memfasilitasi kolaborasi dalam pekerjaan.
Contoh SaaS:
– Google Docs (untuk mengelola dokumen)
– Pixlr (image editor)
– Jaycut (video editor)

2. Platform as a Service (PaaS)
Platform bisa diartikan sebagai lingkungan/sistem di mana sebuah aplikasi/software bisa dikembangkan dan berjalan. Penyedia jasa PaaS menyediakan lingkungan dan tools yang diperlukan untuk membuat aplikasi online. Keuntungan menggunakan PaaS adalah pengembangan yang cepat dan low cost, serta bisa diatur untuk deployment private atau public. Namun, terdapat batasan bagi programmer dalam memilih lingkungan pengembangan software, sebatas yang disediakan provider.
Contoh PaaS:
– Google App Engine
– Windows Azure

3. Infrastructure as a Service (IaaS)
IaaS ini ibaratnya memindahkan aplikasi/data yang selama ini ada di komputer pengguna menjadi berada di hardware/komputernya provider. Server yang disediakan ini bisa berupa physical server (server dalam bentuk fisik) atau virtual server instances (partisi physical server untuk menciptakan server virtual, yang masing2 partisinya terlihat seperti mesin yang berbeda–bisa diinstall sistem operasi yang berbeda2).

Ada 4 tipe IaaS:

  1. Private Cloud (beberapa physical server dedicated untuk satu customer.
  2. Dedicated Hosting (customer menyewa space di physical server on demand).
  3. Hybrid Hosting (kombinasi dari menyewa physical server dan virtual server instance yang disewa on demand).
  4. Cloud Hosting (customer menyewa virtual server instances on demand)

Contoh IaaS:
– Amazon Web Service
– Rackspace
– Go Grid

sumber:

Dengan kaitkata , , , , ,

SDLC

SDLC adalah singkatan dari Software Development Life Cycle. SDLC merupakan siklus pengembangan software yang terdiri dari empat fase fundamental: perencanaan, analisis, desain, dan implementasi. Pada setiap fase ini, dihasilkan deliverables, atau hasil pekerjaan berupa dokumen atau sistem. Deliverables dari satu fase digunakan sebagai masukan pada fase berikutnya, dan akan diperkaya dengan detail tambahan setiap berpindah fase.

Penjelasan keempat fase dalam SDLC adalah sebagai berikut:

1. Perencanaan
Fase ini penting untuk mendefinisikan kenapa software harus dibuat dan menentukan bagaimana tim akan mengerjakan proyek tersebut.

  • Software, atau dalam konteks perusahaan biasanya berupa sistem informasi dibuat/dibeli bukan semata2 agar punya software, tapi bagaimana software itu bisa memberikan nilai tambah bagi perusahaan.
  • Jika request software berasal dari divisi non IT, biasanya mereka akan membuat system request yang berisi ringkasan kebutuhan bisnis, dan bagaimana software yang diinginkan bisa menciptakan business value. Kemudian dilakukan feasibility analysis
  • Feasibility analysis terdiri dari technical feasibility (bisakah kita membuatnya?), economic feasibility (apakah menciptakan business value?), dan organizational feasibility (jika software dibuat, apakah akan digunakan?)
  • Setelah itu ditentukan sofware jadi dibuat atau tidak

2. Analisis
Fase ini menjawab pertanyaan siapa yang akan menggunakan sistem, apa yang akan dilakukan sistem, dan kapan serta di mana sistem akan digunakan. Terdapat tiga langkah dalam fase ini sbb:

  • Analysis strategy: Menjelaskan strategi untuk menganalisis sistem, termasuk menganalisis sistem yang sudah ada, dan cara2 untuk mendesain sistem baru
  • Requirement gathering: Mengumpulkan informasi terkait kebutuhan sistem dengan wawancara atau kuisioner
  • System proposal: dokumen hasil analisis, konsep, dan model sistem

3. Desain
Di fase ini ditentukan bagaimana sistem akan beroperasi, berkenaan dengan software, hardware, infrastruktur jaringan, user interface, form, reports, database, dll.

  • Dibuat design strategy, yaitu bagaimana sistem akan didapatkan: dikembangkan sendiri oleh programmer perusahaan, atau outsource, atau beli software jadi
  • Membuat dokumen desain: desain arsitektur (hardware, software, infrastruktur jaringan), desain interface (navigasi, menu, dll), spesifikasi database dan file, serta desain program
  • Dokumen desain ini disebut system specification

4. Implementasi
Fase terakhir adalah implementasi, di mana sistem akhirnya dibuat, atau dibeli. Fase ini terdiri dari tiga tahapan berikut:

  • System construction: implementasi sistem berikut pengujiannya (testing)
  • Installation: Instalasi sistem di tempat pengguna. Jika diperlukan termasuk training pengguna
  • Support: pendampingan pasca sistem digunakan

 

Dalam mengimplementasikan SDLC ke pengembangan software sungguhan, terdapat beberapa metodologi. Ada yang lempeng aja, semua fase ini dijalankan satu2 dan berurutan, ada yang dipecah2 jadi beberapa bagian yang setiapnya terdapat beberapa fase SDLC, dan lain2. Secara garis besar, metodologi pengembangan software ini terdiri dari 3 kategori sbb:

1. Structure Design

Kategori metodologi ini marak digunakan tahun 1980an. Modelnya lurus lempeng gitu, berpindah dari satu fase ke fase berikutnya. Contoh metodologi ini adalah Waterfall Development. Tahapan dalam Waterfall ini sekuensial dari mulai perencanaan sampai implementasi. Dokumen deliverables dari tiap fase ini biasanya banyak. Ada jeda waktu yang lama dari inisiasi proyek dan analisisnya, sampai ke implementasi. Jadi sebelum sistem diimplementasi, desainnya benar2 harus didefinisi dengan baik.

Waterfall Development

Waterfall Development

2. Rapid Application Development (RAD)

Metodologi ini mulai muncul tahun 1990an. RAD mengatasi kekurangan metode struktural dengan mendeliver sebagian sistem yang sudah selesai untuk mendapatkan feedback dari pengguna. Contoh metodologi ini adalah Prototyping. Metode ini menjalankan fase analisis, desain, dan implementasi secara berbarengan sampai menghasilkan system prototype. Prototype adalah bagian sistem yang memiliki fitur minimum, dan dimulai dari yang paling dibutuhkan pengguna. Prototype ini diberikan pada pengguna untuk diberi feedback, kemudian kembali mengulang proses analisis, desain, dan implementasi, sampai sistem selesai dikerjakan.

Prototyping

Prototyping

3. Agile Development

Agile Development ini metodologi yang agak2 mainstream, beda dari dua yang sebelumnya. Fokus metodologi ini adalah di implementasi atau programming-nya, meminimalisir pembuatan model dan dokumentasi, menekankan pada pengembangan iteratif. Contoh metodologinya adalah XP (Extreme Programming) yang memiliki 4 prinsip: komunikasi, kesederhanaan, feedback, dan keberanian. Model pengembangan XP itu cepat, sering melakukan pengujian, pair-programming, dan interaksi yang intens dengan pengguna untuk mendapatkan feedback.

Dalam memilih metodologi pengembangan software, tergantung pada banyak faktor, seperti waktu pengembangan, kejelasan requirement, kompleksitas sistem, dll.

sumber: System Analysis and Design with UML version 2.0 by Alan Dennis, Barbara Haley Wixon, David Tegarden. 2nd edition, Wiley 2005

 

Dengan kaitkata , , , , , , , , , , , , , , ,

Menyimpan Konfigurasi Yii di Database

Pengguna framework PHP Yii pasti tidak asing dengan parameter di web berbasis PHP Yii yang terdapat di config/main.php. Parameter ini biasa diakses di source code dengan perintah “Yii::app()->params[‘namaParameter’]”. Contoh parameter ini misalnya alamat email admin, lokasi penyimpanan dokumen, atau URL aplikasi. Menyimpan nilai parameter di satu tempat seperti ini menguntungkan karena untuk mengganti nilainya kita hanya perlu mengakses satu tempat ini. Namun jika nilai parameter disimpan di file config/main.php, hal tersebut tidak user-friendly bagi pengguna karena harus membuka direktori source code. Karenanya, akan sangat memudahkan pengguna jika ia bisa mengubah nilai parameter melalui aplikasi web (GUI). Untuk itu, kita perlu menyimpan nilai parameter di database agar bisa diakses melalui aplikasi.

Ada beberapa cara yang dapat dilakukan untuk melakukan hal tersebut, namun saya baru mencoba satu cara yaitu menggunakan extension dbParam. Langkah2 menggunakan dbParam adalah sebagai berikut:
1. Download extension dbParam di sini
2. Ekstrak dan letakkan di folder protected/extensions.
3. Buka file config/main.php, dan tambahkan code ini di bagian ‘components’:

'components'=>array(
    'par'=>array(
        'class' => 'application.extensions.dbparam.XDbParam',
        'connectionID' => 'db',
        'preload' => 'test, test2',
        'autoLoad' => true,
        'caseSensitive' => true,
    ),
 ),

keterangan:

  • ‘preload’: nama parameter yang akan di-load di awal. contoh di atas langsung load parameter bernama ‘test’ dan ‘test2’
  • ‘autoLoad’ => load semua atribut saat inisialisasi
  • ‘caseSensitive’ => untuk membuat semua parameter case sensitive, set jadi true

4. Buat tabel di database (atau sebenarnya bisa otomatis terbuat sendiri) yang berisi daftar parameter. Tabel ini punya dua atribut sbb:

  • nama (char 128)
  • value (blob) -> implementasi di database tergantung db yang dipakai. Karena saya pakai PostgreSQL, tipe yg semaksud dengan blob adalah bytea

Kalau kita membuat tabel sendiri (misalnya: tabel_parameter), nama tabelnya harus dimasukkan di file extensions/dbParam/XDbParam.php

public $paramsTableName='tabel_parameter';

Setelah itu, parameter bisa di-set dan get dari source code kita, dengan menggunakan code berikut:

set -> Yii::app()->par->test = 1234‘;

get -> echo Yii::app()->par->test;

‘par’ itu merujuk ke poin 3, tergantung nama yang kita daftarkan ke components, dan namanya gak harus ‘par’, bisa apa aja.

Selama mulai menggunakan dbParam kemarin, saya berkali2 menemui kendala, mungkin ini terkait sama database juga sih. Beda database, beda perlakuannya. Jadi kalau menemukan error, biasanya saya utak atik di file extensions/dbParam/XDbParam.php untuk menghilangkan errornya. Misal, di query ada yang pake tanda “, di PostgreSQL sepertinya gak bisa, jadi saya hapus tanda tersebut.

Dokumentasi lengkap dari dbParam bisa dibaca di sini.

Dengan kaitkata , , , ,