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
Rabu, 02 Oktober 2013
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
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
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
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)
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
@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
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()
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)
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
Langganan:
Postingan (Atom)