Rabu, 02 Oktober 2013

Pengenalan keydown pada object stringgrid di delphi

Hari ini saya ingin membagi tulisan menganai pemrograman pada Delphi 7. Pokok bahasan kali ini adalah saya ingin membuat stringgrid yang dapat diinput terus perpindahan dari kolom 1 ke kolom yang lain dilakukan dengan cara menekan tombol tab. Berikut gambar dari Form yang diberi stringgrid
Jangan lupa pada property stringgrid bagian options berisi baris sebagai berikut : [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goColMoving,goEditing,goTabs] Arti dari baris di atas adalah goFixedVertLine = true, goFixedHorzLine = true; goVertLine = true; goHorzline = true; goRangeSelect = true; goColMoving = true; goEditing = true; goTabs = true

Enkripsi dan dekripsi pada PHP

Hari ini saya akan memberikan contoh bagaimana membuat sebuah enkripsi dan dekripsi pada PHP.

1. Buat file yang diberi nama coba_enkripsi.php berikut isi codingnya :
   $plaintext = "mencoba cryptography dengan php";
   $key = "rahasia";
   $iv = "abcdefghij123456";

   $chiper = mcrypt_module_open('rijndael-128','','cbc','');
   mcrypt_generic_init($chiper,$key,$iv);
   $chipertext = base64_encode(mcrypt_generic($chiper,$plaintext));
   mcrypt_generic_deinit($chiper);
   mcrypt_module_close($chiper);

  echo "plaintext: ".$plaintext."";
  echo "
";
  echo "chipertext: ".$chipertext;
?>
Inti dari pada coding di atas adalah mengenkripsi kalimat mencoba cryptography dengan php dengan menggunakan key "rahasia". Adapun algoritma yang digunakan dalam contoh adalah Rijndael-128.

2. Buat sebuah file yang diberi nama coba_dekripsi.php berikut isi codingnya :
   $c_t = base64_decode('26KrOPhz6vY41b4sXXMyqEp+31m22CB1jxgCVxSczL0=');
  
   $key = "rahasia";
   $iv = "abcdefghij123456";
  
   $chiper = mcrypt_module_open('rijndael-128','','cbc','');
   mcrypt_generic_init($chiper, $key, $iv);
  
   $p_t = mdecrypt_generic($chiper, $c_t);
  
   mcrypt_generic_deinit($chiper);
   mcrypt_module_close($chiper);
  
   echo "enkripsi = " .$c_t;
   echo "
";
   echo "plain text = " .$p_t;
?>

Nantinya coba_dekripsi.php akan mendekripsi hasil daripada enkripsi yang dihasilkan dari nomor 1. Pada nomor 1 akan menghasilkan deretan karakter yang terenkripsi yaitu :
"26KrOPhz6vY41b4sXXMyqEp+31m22CB1jxgCVxSczL0="
Nah setelah dipanggil dari coba_dekripsi.php akan menghasilkan kalimat asli (sebenarnya) yaitu :
"mencoba cryptography dengan php"

Selamat Mencoba 

Perbedaan single quotes (petik tunggal) dan double quotes (petik ganda) dalam PHP



Single Quotes dan Double Quotes adalah salah satu kode yang ada dalam pemrograman PHP, dalam penggunaannya kadang para programmer pemula seperti saya beranggapan bahwa ini adalah sesuatu yang sama. Namun sebenarnya dalam pemrograman PHP kedua tanda ini akan di eksekusi dengan cara yang berbeda.


Kita perhatikan dulu contoh dibawah ini:
echo 'Merokok tidak baik untuk kesehatan.'; //...single quotes

echo "Merokok tidak baik untuk kesehatan."; //...double quotes
Pada contoh diatas terlihat kalau kedua fungsi echo akan menghasilkan output yang sama.
Tapi perhatikan contoh kedua dibawah:
$text = 'Merokok tidak baik untuk kesehatan.';

echo '$text'; //...output- $text

echo "$text"; //...output- Merokok tidak baik untuk kesehatan.
Bila diperhatikan contoh diatas terlihat bahwa yang menggunakan single quotes variable akan di print sebagai text tapi dengan menggunakan double quotes variable tetap diproses sebagai variable dan menampilkan value dari variable tersebut.
Dalam hal ini double quotes menggunakan waktu lebih banyak karena melakukan proses evaluasi kedalam sebelum ditampilkan keluar, memang tidak akan terasa saat script dan looping masih sedikit tapi akan terlihat perbedaannya ketika aplikasi yang kita buat sudah besar dan memiliki iterasi looping yang banyak.
Berbeda dengan single quotes yang tidak melakukan proses evaluasi kedalam, single quotes akan langsung menampilkan apa yang ada dan melewati proses evaluasi. Yang artinya single quotes memiliki proses yang lebih cepat dibandingkan dengan double quotes.
Memang perbedaan ini terlihat sederhana tapi sangat besar manfaatnya dalam implementasi terutama saat development aplikasi dengan skala besar. Oleh karena itu mengikuti standar coding akan sangat membantu dalam banyak hal, salah satunya adalah mudahnya kita melakukan perbaikan-perbaikan atau penambahan pada kode, dan untuk orang lain kode kita akan lebih readable

Sumber : http://www.swsaputra.com/2013/01/perbedaan-single-quotes-dan-double.html
 

Cara mempercepat proses query di MS SQL Server

Bagi sebagian diantara kita, berurusan dengan query adalah hal yang pasti dilakukan setiap hari. Kadang performa query kita terasa begitu lambat, apalagi ketika berhadapan dengan data yang sangat besar. Mungkin kita melewatkan hal-hal kecil yang dapat berpengaruh besar terhadap performa query tersebut. Bayangkan jika query itu berupa stored procedure yang akan terus digunakan dalam aplikasi.


Berikut ini 10 tips meningkatkan performa query (stored procedure) yang kita buat:

  • Gunakan NOCOUNT 
SQL Server secara default memberikan informasi tentang berapa row data yang terpengaruh dari query kita (177 row(s) affected). Jika kita tidak memerlukan informasi ini, matikan dengan SET NOCOUNT ON. Hal ini akan mengurangi network traffic yang digunakan untuk pengiriman informasi tersebut.
CREATE PROC dbo.NamaProc
AS
SET NOCOUNT ON
–Isi Procedure
  • Akses tabel dengan NOLOCK 
Kebanyakan akses tabel tidak membutuhkan fitur ini. Matikan dengan WITH (NOLOCK) setelah nama tabel. NOLOCK dalam query select tidak hanya mengabaikan Exclusive Lock namun juga Shared Lock sehingga tidak akan ada delay ketika proses lain melakukan write ke tabel yang sedang kita read.
CREATE PROC dbo.NamaProc
AS
SET NOCOUNT ON
SELECT Id, [Name]
FROM NamaTabel WITH (NOLOCK)
  • Hindari penggunaan or dalam where
Gunakan IF ELSE menggantikan OR. Misalnya ketika kita membuat fungsi search yang parameternya fleksibel, dalam contoh ini email dan name, dimana salah satu parameter pasti null. SELECT Id FROM NamaTabel WHERE Email = @Email OR Name = @Name Menjadi



IF @Email IS NULL SELECT Id FROM NamaTabel WHERE [Name] = @Name ELSE SELECT Id FROM NamaTabel WHERE Email = @Email
  • Sesuaikan tipe data 
   Kita bisa saja menjalankan query walaupun tipe data 
   parameter dengan field pada tabel berbeda, namun hal ini  
   akan menurunkan performa query kita karena SQL Server akan 
   terlebih dahulu mengkonversi tipe data agar tersebut 
   sama.Misalnya tipe data Id pada tabel NamaTabel adalah 
   Integer.
   CREATE PROC dbo.NamaProc
   @Id VARCHAR(20)
   AS
   SELECT [Name], Email FROM NamaTabel
   WHERE Id = @Id
 
  • Gunakan penulisan Nama Objek secara lengkap 
Menuliskan nama objek secara lengkap (server.database.schema.objectName) membantu SQL Server langsung menuju ke objek yang kita maksud tanpa perlu melakukan pencarian dan meningkatkan peluang penggunaan kembali (reuse) execution plan yang sudah ada jika objek sudah pernah digunakan.
SELECT Id, [Name] FROM DBName.dbo.NamaTabel
EXEC DBName.dbo.NamaProc
  • Kurangi pemanggilan GETDATE(), gunakan variabel 
Jika kita membuat sebuah stored procedure yang banyak memanggil fungsi GETDATE(), gantikan fungsi-fungsi tersebut dengan sebuah variabel date yang kita assign dengan GETDATE() sehingga pemanggilan fungsi tersebut tidak perlu dilakukan berulang-ulang.
DECLARE @Date DATETIME
SET @Date = GETDATE()
  • Jangan menggunakan awalan "SP_" untuk nama procedure
Jika sebuah stored procedure diawali dengan “SP_” ketika eksekusi SQL Server akan terlebih dahulu mencari objek tersebut dalam System Stored Procedures, hal ini akan menurunkan performa dan bahkan menghasilkan hasil yang salah jika nama stored procedurenya sama.  
  • Gunakan IF EXIST(SELECT 1) menggantikan (SELECT * atau SELECT nama kolom)
Untuk mengecek keberadaan data pada suatu tabel kita sering menggunakan IF EXISTS. IF EXISTS akan mengembalikan nilai true jika statement kondisinya mengembalikan nilai apapun, baik itu “1″ ataupun semua kolom, dan semua hasil itu tidak digunakan. Jadi, untuk mengurangi network traffic dan mengurangi pemrosesan data, gunakanalah “1″ daripada data pada tabel.
IF EXISTS (SELECT * FROM NamaTabel WHERE Id = @Id) atau IF EXISTS(SELECT Id FROM NamaTabel WHERE Id = @Id)
Menjadi
IF EXISTS (SELECT 1 FROM NamaTabel WHERE Id = @Id)
  • Gunakan sp_executesql menggantikan EXECUTE
Jika kita menggunakan sp_executesql untuk mengeksekusi query berkali-kali SQL Server akan menggunakan kembali (reuse) execution plan yang sudah ada, hal ini akan menigkatkan performa. Execution plan hanya dapat digunakan kembali jika setiap karakter dari query sama persis.
DECLARE @Query VARCHAR(MAX)
DECLARE @Id INT
SET @Id = 7
SET @Query = ‘SELECT * FROM dbo.NamaTabel WHERE Id = ‘ +CONVERT(VARCHAR(10),@Id) EXEC (@Query)  
Pada contoh di atas ketika parameter @Id berubah, execution plan pada saat @Id = 7 tidak dapat digunakan kembali.  

Jika kita ubah menjadi:
DECLARE @Query VARCHAR(MAX)
SET @Query = ‘SELECT * FROM dbo.tblPerson WHERE Id = @Id‘
EXECUTE sp_executesql @Query, ‘@Id INT‘, @Id = 7  
Perubahan parameter tidak mempengaruhi SELECT statement sehingga execution plan dapat terus digunakan kembali walaupun parameter berubah.

  • Hindari penggunaan cursor 
Cursor memakan banyak resource untuk me-maintain posisinya saat proses, hal ini menurunkan performa query kita. Usahakanlah mengganti penggunaan cursor dengan WHILE dan SET. SQL Server memiliki performa yang baik untuk operasi SET.  

Sumber :
http://students.netindonesia.net/blogs/herwinlesmana/archive/2011/12/25/1830.aspx