Archive for November, 2007

Filed Under (PHP) by bayu on November-28-2007

Artikel ini bertujuan untuk membuat sebuah gambar JPEG yang di-upload menjadi 3 bentuk(kecil, sedang, dan ukuran sebenarnya). Diharapkan dapat mengurangi beban load halaman website yang mempunyai list konten bergambar seperti e-commerce.
Catatan * : Hanya untuk format gambar (JPG,JPEG)

Menu upload gambar yang disediakan oleh website-website yang ada pada saat ini kebanyakan gambar yang di-upload di-copy secara langsung ke server. Jadi gambar yang dihasilkan hanya satu buah saja yaitu gambar yang di-upload. Padahal, pada kenyataannya website seperti e-commerce pada umumnya melakukan preview gambar sampai sebanyak tiga kali, yaitu:
- Preview gambar untuk list semua konten dengan keterangan singkat
- Preview gambar untuk keterangan detail
- Preview gambar untuk ukuran sebenarnya(versi large)

Apabila gambar yang dimiliki hanya satu buah saja, jadi setiap preview tersebut memakai gambar yang sama, hanya saja di-resize oleh perintah html. Hal ini tentu saja membebani pengunjung website ketika membuka list konten yang seharusnya menggunakan gambar kecil, tetapi disuguhkan gambar dalam ukuran sebenarnya. Oleh sebab itu penulis mencoba menawarkan sebuah solusi untuk hal di atas. Ilustrasinya seperti berikut:
- Pengelola web mengupload sebuah gambar JPEG (versi large)
- Sistem mengupload gambar tersebut menjadi 3 versi : versi small(untuk preview semua list konten), versi medium(untuk preview keterangan detail), versi large(ukuran sebenarnya)

Jadi, setelah gambar diupload dan dibuat menjadi 3 bagian maka website akan menampilkan gambar dalam ukuran sebenarnya(bukan di-rezise oleh perintah html).

Langkah-langkah implementasi :

1. Pastikan pustaka GD sudah diaktifkan agar PHP dapat mendukung pembuatan grafis secara on the fly.
Caranya:
- buka file configurasi php(php.ini) dengan text editor.
- Cari ;extension=php_gd.dll
- Hilangkan tanda ; sehingga menjadi extension=php_gd.dll
2. Buat folder “img” pada direktori htdocs(untuk web server Apache) atau wwwroot(untuk web server IIS)
3. Buat file php seperti di bawah ini dan simpan dengan nama “upload_image.php” di direktori yg sama dengan folder “img”:

<?php
//Fungsi untuk meng-upload gambar
function UploadImage($img_name){
header("Content-type: image/jpeg");

//direktori gambar
$vdir_upload = "img/";
$vfile_upload = $vdir_upload . $img_name;

//Simpan gambar dalam ukuran sebenarnya
move_uploaded_file($_FILES["img"]["tmp_name"], $vfile_upload);

//identitas file asli
$im_src = imagecreatefromjpeg($vfile_upload);
$src_width = imageSX($im_src);
$src_height = imageSY($im_src);

//Simpan dalam versi small 110 pixel
//set ukuran gambar hasil perubahan
$dst_width = 110;
$dst_height = ($dst_width/$src_width)*$src_height;

//proses perubahan ukuran
$im = imagecreatetruecolor($dst_width,$dst_height);
imagecopyresampled($im, $im_src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);

//Simpan gambar
imagejpeg($im,$vdir_upload . "small_" . $img_name);

//Simpan dalam versi medium 320 pixel
//set ukuran gambar hasil perubahan
$dst_width = 320;
$dst_height = ($dst_width/$src_width)*$src_height;

//proses perubahan ukuran
$im = imagecreatetruecolor($dst_width,$dst_height);
imagecopyresampled($im, $im_src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);

//Simpan gambar
imagejpeg($im,$vdir_upload . "medium_" . $img_name);

imagedestroy($im_src);
imagedestroy($im);
}
//Upload Gambar
UploadImage($_FILES["img"]["name"]);
?>

4. Buat file html seperti di bawah ini dan simpan dengan nama “upload.html” di direktori yg sama dengan folder “img”:

<html>
<body>
<form method="post" action="upload_image.php" enctype="multipart/form-data">
Image (JPG/JPEG) <input name="img" type="file"/></td>
<input name="submit" type="submit" value="Upload" />
</body>
</html>

5. Coba upload sebuah gambar berformat JPEG dengan perintah tersebut.
Lihat pada direktori “img”, jika berhasil maka akan terbentuk 3 buah file upload.



Filed Under (Linux) by herman13 on November-25-2007

Slackware 12.0 sudah cukup lama keluar, dimana Distro tersebut telah memiliki banyak fungsi-fungsi tambahan yang cukup uptodate.

Salah satunya adalah fungsi Hotplug, dimana secara otomatis akan mengaitkan Flashdisk, memory card, dll yang berbasis USB. Namun, ada sebuah kendala, dimana akan terjadi penampilan pesan error pada Flashdisk tersebut ditancapkan kedalam USB. Adapun pesan error yang akan ditampilkan adalah

A security policy in place prevents this sender from sending this message to this recipient, see message bus configuration file (rejected message had interface “org.freedesktop.Hal.Device.Volume” member “Mount” error name “(unset)” destination “org.freedesktop.Hal”)

Untuk menyelesaikan permasalahan tersebut, terdapat 3 cara yaitu

  1. Melakukan pengeditan pada file group yang terdapat didalam direktori /etc, lalu tambahkan user yang akan diberikan akses melakukan pengaitan secara otomatis pada group-group yang diinginkan (plugdev, audio, video, cdrom, power). Adapun contoh dari penambahan tersebut misalkan pada plugdev agar user adadeh dapat mengaitkan Flashdisknya secara otomatis, maka pada group plugdev ditambahkan nama user tersebut. Langkah-langkahnya:
    • edit /etc/group
    • cari plugdev
    • tambahkan nama usernya –> plugdev:x:83:root,adadeh,user_lainnya

    Namun kelemahan cara ini adalah jika kita memiliki banyak user, maka memasukkan user tersebut secara satu persatu akan menjadi kendala.

  2. Cara yang kedua mungkin akan menjadi salah satu alternatif yang mudah, yaitu dengan menambahkan kelompok group yang dapat melakukan pengaitan pada sebuah file yang bernama hal.conf, dimana file tersebut terletak di /etc/dbus-1/system.d/. Adapun caranya adalah:
    • edit file hal.conf yang terdapat pada diretori /etc/dbus-1/system.d/
    • tambahkan pada baris terakhir sebelum </busconfig> sebuah policy baru untuk group yang ingin diberikan sebuah kewewenangan. Misalnya group “users” dapat melakukan segala sesuatu dengan power, memanipulasi video, memount volume, maka policy yang ditambahkan adalah
      • <policy group=”users”>
        <allow send_interface=”org.freedesktop.Hal.Device.SystemPowerManagement”/>
        <allow send_interface=”org.freedesktop.Hal.Device.VideoAdapterPM”/>
        <allow send_interface=”org.freedesktop.Hal.Device.LaptopPanel”/>
        <allow send_interface=”org.freedesktop.Hal.Device.Volume”/>
        <allow send_interface=”org.freedesktop.Hal.Device.Volume.Crypto”/>
        </policy>
    • Masukkan seluruh user yang ingin mendapatkan fasilitas tersebut diatas kedalam group “users”
  3. Menambahkan pada FSTAB dengan tools vsupdfstab. Adapun caranya adalah

PENTING:

Jangan lupa untuk meng-unmount flashdisk yang telah termounting sebelum mencabut. Jika lupa melakukan unmount, kemungkinan besar data yang terdapat didalam flashdisk tersebut hilang atau rusak.

Demikian informasi yang dapat saya bagikan, semoga dapat berguna bagi kawan-kawan.