Skip to main content

Posts

Showing posts with the label Database

Pengalaman Ngoprek Zurmo

Zurmo adalah aplikasi pengelolaan relasi pelanggan (customer relationship management - CRM) berbasis web dan bersifat open source. Dikembangkan selama dua tahun lebih, dan baru saja rilis versi 1.0. Entah mengapa masih ada yang bikin aplikasi CRM baru di tengah banyaknya aplikasi sejenis yang sudah ada, baik yang gratisan maupun berbayar. Belum lagi layanan berbasis cloud. Pasar CRM sepertinya masih menjanjikan. Ada beberapa hal yang membuatku tertarik mencoba Zurmo. * Open source dan gratis * Berbasis web, Dikembangkan dengan PHP. * Database bisa Mysql, PostgreSql atau Oracle * Memakai Yii sebagai framework, yang kebetulan lebih kukenal dibanding framework lain * Modular, tiap fitur ataupun menu dijadikan modul, dalam satu folder. Jadi nambahin atau ngilangin modul bisa sesederhana menambah dan menghapus folder. Ya kurang lebihnya gitu, meski gak gampang2 amat sih * Aku suka User Interface nya. Bersih dan rapi. * Fiturnya menjanjikan, seperti Gamification, activity tracking,...

Salesforce.com Trigger : Generate Auto Running Number

Salesforce memiliki tipe data berupa autonumber, yang akan terisi otomatis dengan nilai yang selalu bertambah ( auto increment ). Ternyata ini tidak hanya untuk field Name, tapi kita juga bisa menambah baru. Kita juga bisa menentukan berapa jumlah karakter dari nilai autonumber yang kita inginkan. Misalnya kita ingin field itu berisi 5 karakter, maka kita cukup atur {00000} dan nilainya nanti akan menjadi 00001, 00002 dst. Kita bahkan bisa menggabungkan dengan huruf tertentu, misal X-{00}, akan menjadi X-01 dst. Atau bahkan dengan tahun, bulan dan tanggal record tersebut dibuat, misal {YYYY}/{MM}/{000} akan menghasilkan 2012/11/001 dst. Meskipun demikian, ada beberapa kekurangan yang belum aku temukan solusinya selain dengan membuat trigger untuk menghasilkan nilai nomor urut ( running number)  tersebut. Berikut beberapa kasus yang sepertinya tidak bisa dihandle hanya dengan field auto number tersebut. Nomor urut yang perlu di-reset secara berkala, misal per bulan atau per tah...

Rumus Menghitung Umur di Salesforce

Sekedar catatan saja, buat rumus untuk menghitung umur seseorang, lewat formula field. Asumsi field tanggal lahir adalah Date_of_Birth__c IF(   MONTH(TODAY())>MONTH( Date_of_Birth__c ),   YEAR(TODAY())-YEAR(Date_of_Birth__c ),   IF(AND(MONTH(TODAY()) = MONTH(Date_of_Birth__c ),      DAY(TODAY()) >=  DAY(Date_of_Birth__c )),      YEAR(TODAY())-YEAR(Date_of_Birth__c ),      (YEAR(TODAY())-YEAR(Date_of_Birth__c ))-1) ) Entah cukup akurat atau tidak, tapi secara umum berjalan dengan baik :) Sekedar tambahan untuk, berikut rumus untuk menghitung Tanggal Akhir = Tanggal Awal + Durasi (Bulan) Agak rumit karena penjumlahan di formula hanya untuk hari, sementara dalam satu bulan jumlah hari berbeda-beda. Sebenarnya yang sulit adalah menentukan tanggal akhir, agar tanggal tidak melebihi jumlah hari di bulan tertentu. Jika Y adalah tanggal akhir, X tanggal awal dan D adalah durasi dalam bulan, kira-kira b...

Apex Salesforce Limitation

Geregetan juga saat coding di Salesforce.com dengan Apex, ternyata cukup banyak keterbatasan yang diterapkan di sana. Memang sih, tujuannya untuk optimalisasi proses dan mencegah server berantakan gara-gara terlalu banyak proses yang berjalan secara simultan. Bosku bilang ke client "ini adalah konsekuensi menggunakan sistem multi-tenant ". Awalnya aku penasaran, apa saja sih yang dibatasi oleh Salesforce.com ini. Eh, ternyata di debug log ada penjelasannya. Berikut daftar (mungkin belum semua) batasan yang diberikan oleh Salesforce, sekedar untuk pengingat: Number of SOQL queries: 100 Number of query rows: 50000 Number of SOSL queries: 20 Number of DML statements: 150 Number of DML rows: 10000 Number of script statements: 200000 Maximum heap size: 3000000 Number of callouts: 10 Number of Email Invocations: 10 Number of fields describes: 100 Number of record type describes: 100 Number of child relationships describes: 100 Number of picklist describes: 100 Nu...

Salesforce Data Connection with PHP

Sekedar untuk mengingat aja, contoh kelas untuk koneksi PHP ke Salesforce dengan API/SOAP. /** Class to handle connection to salesforce */ require_once("soapclient/SforcePartnerClient.php"); require_once("soapclient/BulkApiClient.php"); define('SOAP_PATH', "soapclient"); define('WSDL_XML_PARTNER', "partner.wsdl.xml"); define('WSDL_XML_ENTERPRISE', "enterprise.wsdl.xml"); define('WSDL_XML_METADATA', "metadata.wsdl.xml"); class SFConnectionClass { public $connection; public $server = 'sand'; // option (sand or prod) public $username = ''; public $password = ''; public $token = ''; public $sfSessionID = ''; public $sfLocation = ''; /* constructor // if parameter empty, use default */ public function SFConnectionClass($server = 'sand', $username = '', $password = '', $token = ...

Reset Password MySQL

Sebelumnya aku install ulang server dengan Ubuntu, dan di dalam instalasinya aku sertakan database mysql. Tapi karena tidak pernah digunakan, aku tidak terlalu memperhatikan setting yang ada. Ternyata, waktu ada perlu dengan database mysql, aku selalu gagal untuk melakukan koneksi ke mysql di server tersebut. Aku coba dengan berbagai password dan user (seingatku user default mysql adalah root), tapi selalu gagal. Setelah googling, aku menemukan cara yang cukup efektif untuk me-reset password user mysql tersebut. Pertama, matikan server mysql. # /etc/init.d/./mysql stop Kedua, jalankan mysqld_safe, dengan kondisi tanpa grant table # mysqld_safe --skip-grant-tables --user=root Ketiga, coba masuk ke mysql, kemudian setelah berhasil, ubah password sql> mysql -u root mysql> UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root'; mysql> FLUSH PRIVILEGES; Setelah itu, matikan mysqld_safe, dan jalankan mysqld. Coba connect ke mysql dengan password bar...

Basic Server Setup - PostgreSQL on Ubuntu

Basic Server Setup To start off, we need to change the PostgreSQL postgres user password; we will not be able to access the server otherwise. As the “postgres” Linux user, we will execute the psql command. In a terminal, type: Dapper sudo -u postgres psql template1 Gutsy/Hardy sudo -u postgres psql postgres Then, at the new prompt type these two commands, replacing with the new password (keep this safe ) : ALTER USER postgres WITH ENCRYPTED PASSWORD ' '; \q Create database To create the first database, which we will call "mydb", simply type : sudo -u postgres createdb mydb

SVN: Recover Repository

Salam, Pagi ini, rencana mau update+commit SmartU agar bisa membagi task ke programmer lain. Svn Smartu masih bermasalah, dan untuk kasus sebuku, kebetulan bisa update, tapi commit selalu gagal. Karena penasaran, seharian penuh kerjaan cuma ngoprek svn, sampai gak sempat ngerjain yang lain (kecuali ikut presentasi mesin finger print). Sebelumnya sudah coba " svnadmin recover /home/svn/smartu " dan selalu gagal. Pagi ini coba download buku manual SVN, ada beberapa perintah svnadmin yang bisa dimanfaatkan dan beberapa hal yang mungkin bisa dicoba. Sayang sebagian besar tetap gagal. Terpikir untuk backup database (karena sepertinya yang rusak adalah dabatase - Berkeley DB), kemudian coba buat svn baru, dan restore hasil backup database tersebut. Googling buat nyari cara backup database, sambil coba baca buku manualnya. Ada perintah db_dump dan db_load. Tapi waktu dicoba selalu gagal. Dari sebuah site, lupa URLnya, ketemu ada petunjuk yang menganjurkan untuk menghapus s...

PostGreSQL :: Hitung Umur

Ternyata untuk menghitung umur dari data yang disimpan di PostGreSQL sangat gampang. PostGreSQL sendiri sudah menyediakan fungsi yang mendukung. Beberapa fungsi yang bisa dipakai adalah AGE dan EXTRACT. AGE dipakai untuk menghitung umur dari sebuah data, dibandingkan dengan hari ini, atau dengan data lain (tipenya timestamp). Misal: age(timestamp '1980-09-27'), akan menghasilkan nilai (bertipe interval) "24 years 1 mon 25 days". Nah, kalau mau mengambil nilai tahunnya saja, tinggal menggunakan EXTRACT Contoh: EXTRACT(year FROM AGE(timestamp '2001-09-27')), hasilnya akan jadi 24.

[PostGreSQL] -- case sensitif

Akhir-akhir ini mulai belajar makai PostGreSQL, yang katanya lebih bagus dibanding MySQL. Untung Arif udah nginstall PphPgAdmin, jadi aku nggak usah main di consolenya Pg. Lumayan membantu juga, bisa buat cepet bikin database, tabel dan ngutak-atik isinya. Tapi fitur PhpPgAdmin masih kalah dibanding PhpMyAdmin. Berbeda dengan MySQL (atau mungkin gara2 settingnya ya), PgSQL ini lebih case sensitif. Sesuai koding standard di sini, nama table dan field memakai kaidah Camel, yang berarti bakal ada kombinasi huruf besar dan kecil. Waktu masih pakai MySQL, sintaks SQLnya biasa aja, sepertinya gak terpengaruh sama upper/lower case (alias case insensitif). Tapi waktu nyobain PgSQL ini (maklum, masih sangat pemula) aku sempat bingung. Kok error terus ya? Contohnya, ada tabel namanya hrdEmployee. Aku pengen ngambil semua data, pakai query select: " SELECT * FROM hrdEmployee ". Lha kok muncul pesan : Relation "hrdemployee" does not exist Bingung, tanya kanan-kiri, ternyata gak...

Beda MySQL dengan MS SQL

Hari ini aku mencoba create table di MS SQL (MSDE) dengan memanfaatkan PHP. Jadi aku execute sebuah query string untuk membuat table. Asyik juga, sampai-sampai kepikiran untuk membuat program semacam PhpMyAdmin, khusus untuk MSDE ini. Ternyata aku temukan ada beberapa perbedaan: {mungkin daftarnya bisa lebih panjang} MySQL: auto_increment, MSDE: identity(1,1) Di MSDE, tipe integer tidak bisa dibatasi. Kalau di MySQL kan masih bisa dibatasi, misal int(2), int(4) dsb. Juga tipe Timestamp Di MSDE, dalam satu tabel hanya boleh ada satu field yang bertipe TimeStamp Di MSDE, daftar database disimpan di tabel sysdatabases (di database master), sedangkan daftar tabel ada di sysobjects, dengan kriteria tipe = 'U'. Itu yang aku temukan, nggak tahu kalau ada cara lain.