Info Terbaru

Tampilkan postingan dengan label Linux. Tampilkan semua postingan
Tampilkan postingan dengan label Linux. Tampilkan semua postingan

Tools Fancy Directory Listing linux

Pembaca yang budiman, ada kalanya kita ingin membuat sebuah directory yang ada dalam server yang kita miliki bisa di browse layaknya file explorer. Beberapa server menyediakan fitur tersebut, fitur tersebut dinamakan directory listing. Namun tampilan dari directory listing tersebut  sangatlah standar seperti gambar di atas.
Dalam percobaan kali ini kita ingin membuat tampilan diatas lebih style supaya lebih menarik. Kita akan mencoba membuatnya dengan menggunakan script php dan css. Tentunya server yang kita miliki sudah terintegrasi dengan php.
Ok, beriikut skenario yang akan kita lakukan:
  1. Sebuah file php akan menjadi interface utama oleh karena itu kita harus menamakan file ini dengan nama index.php, sehingga ketika user ingin membuka URL directory listing tersebut maka default file index.php otomatis akan diberikan.
  2. File php ini bertugas me-list-ing seluruh file dan folder yang ada dalam directory tersebut dan menampilkannya dengan link yang tertuju pada file atau folder itu sendiri.
  3. File index.php yang mana merupakan file itu sendiri tidak boleh ditampilkan pada directory listing tersebut.
  4. Untuk icon yang akan kita perlukan kita bisa membuat icon-nya sendiri, atau mengambil dari repository server yang sudah ter-install. Dalam server Apache biasanya sudah terdistribusi dengan url tertentu.
Mari kita lakukan, sekarang coba kita lihat code file index.php dibawah ini :
<?php
$dir = dirname(".");
$files1 = scandir($dir);
$item = "";
$type = "";
$size = "";
$lastMod = "";

foreach ($files1 as $dirItem) {
        if (!fnmatch("index.php", $dirItem)) {
                if (is_file($dirItem)) {
                        $type = "File";
                        $size = filesize($dirItem)." B";
                        $lastMod = filemtime($dirItem);
                        $ext = pathinfo($dirItem, PATHINFO_EXTENSION);
                } else {
                        $type = "Dir";
                        $size = "0 B";
                        $lastMod = filemtime($dirItem);
                        $ext = "dir";
                }

                //display
                $item .= "<tr>";
                $item .= "<td><a href='$dirItem'>" . $dirItem . "</a></td>";
                $item .= "<td>" . date("d-M-Y H:i:s", $lastMod) . "</td>";
                $item .= "<td align='right'>$size</td>";
                $item .= "<tr>";
        }
}
?>
<html>
<head>
</head>
<body >
<center>
        <h3>Index Of <?php echo  dirname($_SERVER['PHP_SELF'])?> </h3>
        <table border=1>
                <th>Index</th>
                <th>Last Modified</th>
                <th>Size</th>
                <?php echo $item;?>
        </table>
        <?php echo $_SERVER['SERVER_SOFTWARE']; ?>
</center>
</body>
</html>
Mari kita bahas satu persatu kode diatas. 
$dir = dirname(".");
$files1 = scandir($dir);
$item = "";
$type = "";
$size = "";
$lastMod = "";
Pada baris pertama kita mendeklarasikan variabel dir yang memiliki nilai current directory dimana file ini berada, kemudian baris selanjutnya kita melakukan scanning seluruh isi directory dengan method scandir(); milik php, dan baris-baris selanjutnya adalah baris-baris deklarasi variabel yang nantinya akan kita pakai pada baris-baris selanjutnya. 

Perhatikan baris-baris dibawah ini lagi:

foreach ($files1 as $dirItem) {
        if (!fnmatch("index.php", $dirItem)) {
                if (is_file($dirItem)) {
                        $type = "File";
                        $size = filesize($dirItem)." B";
                        $lastMod = filemtime($dirItem);
                        $ext = pathinfo($dirItem, PATHINFO_EXTENSION);
                } else {
                        $type = "Dir";
                        $size = "0 B";
                        $lastMod = filemtime($dirItem);
                        $ext = "dir";
                }

                //display
                $item .= "<tr>";
                $item .= "<td><a href='$dirItem'>" . $dirItem . "</a></td>";
                $item .= "<td>" . date("d-M-Y H:i:s", $lastMod) . "</td>";
                $item .= "<td align='right'>$size</td>";
                $item .= "<tr>";
        }
}
Kode diatas mendeskripsikan bagaimana kita me-loop array hasil scanning, dimana dalam loop tersebut ada blok  yang memeriksa apakah dirItem tidak sama dengan pattern index.php, jika memang tidak sama, kemudian kita fetch info-info yang kita perlukan untuk ditampilkan. Dalam blok pemeriksaan dirItem juga ada blok yang memeriksa apakah dirItem tersebut adalah file atau folder, sebab untuk folder tidak mungkin kita bisa mem-fetch info besarnya size folder tersebut. Jika digambarkan dalam sebuah diagram Flowchart, bisa dilihat dalam diagram berikut ini:

Mungkin saja diagram tersebut menyalahi aturan penulisan diagram, tapi mudah-mudahan dengan diagram tersebut kode diatas bisa lebih mudah dipahami :P. 
Kemudian perhatikan kode-kode berikut ini:

<html>
<head>
</head>
<body >
<center>
        <h3>Index Of <?php echo  dirname($_SERVER['PHP_SELF'])?> </h3>
        <table border=1>
                <th>Index</th>
                <th>Last Modified</th>
                <th>Size</th>
                <?php echo $item;?>
        </table>
        <?php echo $_SERVER['SERVER_SOFTWARE']; ?>
</center>
</body>
</html>
Nah kode diatas adalah layout-tampilan dari kode-kode yang sudah kita buat sebelumnya. Sampai disini percobaan pertama kita sudah selesai. Tinggal kita tambahkan beberapa fungsi dalam agar bisa dipakai dalam kode-kode yang tadi. Misal fungsi mengkonversi dari ukuran byte ke ukuran yang lebih besar seperti KB, MB, dan lain-lain. 
Berikut ini adalah kode yang berisi fungsi-fungsi yang bisa dipakai.
1. Fungsi Konversi ukuran Byte.
function _format_bytes($a_bytes) {
        if ($a_bytes < 1024) {
                return $a_bytes . ' B';
        } elseif ($a_bytes < 1048576) {
                return round($a_bytes / 1024, 2) . ' KB';
        } elseif ($a_bytes < 1073741824) {
                return round($a_bytes / 1048576, 2) . ' MB';
        } elseif ($a_bytes < 1099511627776) {
                return round($a_bytes / 1073741824, 2) . ' GB';
        } elseif ($a_bytes < 1125899906842624) {
                return round($a_bytes / 1099511627776, 2) . ' TB';
        } elseif ($a_bytes < 1152921504606846976) {
                return round($a_bytes / 1125899906842624, 2) . ' PB';
        } elseif ($a_bytes < 1180591620717411303424) {
                return round($a_bytes / 1152921504606846976, 2) . ' EB';
        } elseif ($a_bytes < 1208925819614629174706176) {
                return round($a_bytes / 1180591620717411303424, 2) . ' ZB';
        } else {
                return round($a_bytes / 1208925819614629174706176, 2) . ' YiB';
        }
}
2.  Fungsi Untuk memfetch Icon.
function _get_icon($ext) {
        $ext = strtolower($ext);
        if ($ext == "dir") {
                return "<image src='/icons/dir.png' width='12' height=12>";
        } elseif ($ext == "pdf" || $ext == "html" || $ext == "shtml" || $ext == "htm") {
                return "<image src='/icons/layout.gif' width='12' height=12>";
        } elseif ($ext == "rar" || $ext == "zip" || $ext == "gz" || $ext == "tgz" || $ext == "z" || $ext == "Z") {
                return "<image src='/icons/compressed.gif' width='12' height=12>";
        } elseif ($ext == "exe" || $ext == "bin") {
                return "<image src='/icons/binary.gif' width='12' height=12>";
        } elseif ($ext == "hqx") {
                return "<image src='/icons/binhex.gif' width='12' height=12>";
        } elseif ($ext == "tar") {
                return "<image src='/icons/tar.gif' width='12' height=12>";
        } elseif ($ext == "txt" || $ext == "bat" || $ext == "sh" || $ext == "ini"|| $ext == "conf") {
                return "<image src='/icons/script.gif' width='12' height=12>";
        } elseif ($ext == "wrl" || $ext == "wrl" || $ext == "gz" || $ext == "vrml" || $ext == "vrm" || $ext == "iv") {
                return "<image src='/icons/world2.gif' width='12' height=12>";
        } elseif ($ext == "ps" || $ext == "ai" || $ext == "eps") {
                return "<image src='/icons/a.gif' width='12' height=12>";
        } elseif ($ext == "pl" || $ext == "py") {
                return "<image src='/icons/c.gif' width='12' height=12>";
        } elseif ($ext == "for") {
                return "<image src='/icons/f.gif' width='12' height=12>";
        } elseif ($ext == "dvi") {
                return "<image src='/icons/dvi.gif' width='12' height=12>";
        } elseif ($ext == "tex") {
                return "<image src='/icons/tex.gif' width='12' height=12>";
        } elseif ($ext == "core") {
                return "<image src='/icons/bomb.gif' width='12' height=12>";
        } else {
                return "<image src='/icons/binary.gif' width='12' height=12>";
        }
}
*** Untuk pemakaian fungsi ini pastikan jika url icons pada server kita bisa diakses misal http://localhost/icons/, sebab fungsi ini sangat bergantung dengan url tersebut.

Langkah selanjutnya adalah tinggal menambahkan stylesheet css, untuk mempercantik tampilan tersebut. Tampilan saya seperti dibawah ini, bagaimana dengan pembaca ?
Saya juga telah membuat ide ini menjadi sebuah project open-source yang saya host di google code pada link ini http://code.google.com/p/fancy-apache-directory-listing/. Dalam bundled aplikasi tersebut saya juga menyertakan script batch (for windows) dan shell (for linux), yang bisa langsung di eksekusi untuk meng-copy file index.php ke dalam sub-folder  dari directory list yang ingin kita buka.



Semoga Bermanfaat....



Perang Dingin User Linux Dan Windows

Konflik antara Linux &  Windows

Oke, sebuah posting dengan judul yang rumit dan aneh. Disini, saya akan membahas apa yang menyebabkan konflik antara user windows dan linux beserta pemecahannya. Ada 2 golongan disini. Saya yakin bahwa user A akan berkata, “Ah, orang kurang kerjaan. Cuma bisa mbandingin windows dan linux. LOL!”. Sedangkan para user B akan berkata, “Hmm, apaan nih posting? Kayaknya penting untuk dibaca!”.
Ya, perkataan kedua user itu benar. Hanya saja kurang tepat. Terutama yang dikatakan user A, sangat-sangat kikuk. Tidak bisa membedakan kah anda antara kata “Pemecahan” dengan “Pembandingan”? Kalau saya punya uang, sudah pasti saya kirim lagi ke SD!
Baiklah, yang pertama, saya jelaskan SEKALI LAGI fakta-fakta sebenarnya tentang linux :
Penjelasan.
  1. Linux tidak sepenuhnya aman
    Ya, saya berani 100% berkata seperti ini. Windows sangatlah rawan dengan virus dan desktop-attack lainnya. Tapi lumayan aman dengan web-attack. Di linux, tidak ada yang namanya Virus. Yang ada hanyalah Rootkit. Rootkit hadir di beragam sistem operasi seperti, Linux, Solaris dan Microsoft Windows. Rootkit ini sering mengubah bagian dari sistem operasi dan juga menginstall dirinya sendiri sebagai driver atau modul kernel (dari wikipedia). Kalau linux benar-benar aman, buat apa ada kaspersky versi linux?
  2. Tidak semua distro Linux gratis
    Ya, tidak semua distro linux itu gratis. Misalnya, Red Hat Enterprise Linux (RHEL), dihargai sekitar satu juta sampai sepuluh juta rupiah! Tentu saja distro RHEL ini ditujukan untuk keperluan khusus, misalnya server, dll.
Tanya Jawab.
  1. T: Katanya Linux mahal ya? Harganya bisa sampai ratusan ribu ya?
    J: Iya, jika kamu membeli linux untuk keperluan server seperti RedHat Enterprise Linux. Selain itu, banyak distro linux gratis didownload, dan harga CD Linux pun hanya berkisar sekitar Rp5000-20.000 saja.
  2. T : Beberapa orang mengatakan Linux itu susah dan hanya untuk keperluan bekerja. Benarkah itu?
    J : Iya, jika kamu menggunakan Linux yang Jadul. Sekarang, sudah banyak distro linux yang tampilannya lebih keren dari windows dan juga User-Friendly.
  3. T : Katanya Linux itu bisa membuat kita meng-hack linux itu sendiri karena kita otak-atik?
    J : Tidak. Cobalah definisikan kata “hack”. Memangnya user windows tidak pernah mengutak-atik windows itu sendiri?
  4. T : Kata teman saya, tampilan linux itu jelek dan tidak menarik. Benarkah?
    J : Salah! Coba anda cari screenshot Ubuntu 11.10. Jauh berbeda dengan windows yang cenderung terlihat monoton di semua versinya.
  5. T : Berapa rata-rata harga CD distro linux?
    J : Kalau anda minta CD-nya dikirim (misalnya kita beli di online-shop), tentu saja kita diminta membayar ongkos kirimnya. Tapi, kalau anda mendownload file .iso distro-nya, tinggal sediakan CD Kosong dan burn! Simpel kan?
Kenapa tidak disebutkan “Macintosh/Apple” disini? Kan sama-sama OS yang merajai dunia komputer?
Macintosh tidak diikutkan, karena hubungan Mac dengan Linux dan Windows saat ini relatif stabil.
Sekarang, kita bahas terlebih dahulu apa itu Windows & Linux. Windows, adalah salah satu OS, ya, OS. Sedangkan Linux sebenarnya adalah “kernel”. Kernel ibarat otak. Jadi, kernel adalah pengatur segala sesuatunya di suatu OS. Nah, para pengembang-pengembang Linux memanfaatkan kernel ini dan membuat tampilan GUI, sehingga tidak hanya berupa background hitam dan text putih seperti waktu dulu.
Salah satu yang membedakan Linux dan Windows ini adalah prinsip dan latar belakangnya. Windows memiliki prinsip closed-source dan memiliki latar belakang komersial di bawah naungan Microsoft. Closed-source ini artinya tidak membagikan kode sumber secara bebas. Sehingga orang yang ingin menjadi pengembang Windows harus bekerja untuk microsoft.
Bagaimana dengan linux? Linux memiliki prinsip open-source dan latar belakang non-komersial. Open-source disini adalah kebalikan closed-source, kode sumber boleh dibagikan secara bebas. Latar belakang non-komersial ini juga turut membuat perkembangan Linux menjadi sangat pesat. Ada beberapa hal yang perlu diingat, arti dari opensource adalah sebagai berikut :
  1. Bebas dikembangkan dengan cara apapun.
  2. Bebas digunakan semua orang.
  3. Bebas digunakan untuk kepentingan komersial dan pendidikan.
  4. Bebas didistribusikan dengan cara apapun. Termasuk dengan cara dijual.
Oke, sekarang kita akan menggunakan istilah “proprietary”, (dalam hal ini adalah Microsoft), dan OSS untuk Opensource Software.
Selain masalah salah kaprah tentang OSS yang berbayar dan gratis, ada lagi yang masih terlihat salah terhadap OSS yang lain, yaitu masalah penggunaan Open Source. Pertanyaan yang menimbulkan masalahnya adalah begini: “Kapan Anda menggunakan OSS?”.
Ternyata banyak yang masih bingung jawabnya. Ada yang beralasan gak bisa jawab karena masih menggunakan sistem operasi proprietary terkenal sejagad raya bernama Windows. Saya cuma bisa geleng-geleng kepala dan mengelus dada. Untuk kasus di atas mungkin kernelnya tidak open source. Tapi bisa saja aplikasi yang digunakan sehari2 adalah OSS.
Katakanlah ada Mister X yang merupakan pengguna setia Windows (genuine). Selain memanfaatkan Windows (operating system proprietary), Mister X adalah seorang pengembang aplikasi web. Dia menggunakan IIS (web server proprietary) sebagai toolsnya. Kemudian pada IIS-nya dia menanamkan PHP engine, menginstall dan mengkonfigurasi MySQL server agar bisa berjalan baik di komputernya. Untuk mengecek hasil desain aplikasi web nya, Mister X menggunakan Mozilla Firefox. Untuk contoh ini, maka kernel Windows Mister X emang bukan OSS. Source code kernel Windows tidak disediakan untuk publik secara bebas.
Web Server IIS Mister X juga tidak bisa dimodifikasi seenaknya, karena source codenya hak cipta Microsoft (Proprietary). MySQL Server Mister X adalah salah satu produk OSS. Kalo gak percaya anda bisa download source codenya di situsnya. Siapa tau sampean pengen ngembangin MySQL Server versi sendiri.
Dalam contoh ini, Mister X hanya sekedar memanfaatkan OSS. Tapi kan Firefox yang dipake Mister X juga produk OSS. Free pada OSS adalah free dalam arti “bebas”, bukan “gratis”. Lebih tepatnya bukan “Free” tapi “Freedom”. Karena tidak semua OSS dihargai nol rupiah alias gratis. Lagipula, tidak semua Proprietary Source juga berbayar. Ada juga yang nol rupiah alias freeware.
Alangkah bagusnya jika kita menggunakan OSS secara menyeluruh. Mulai dari pake kernel yang memang kode sumbernya terbuka seperti Linux atau BSD. Sampe aplikasinya juga OSS. Pengguna OSS ada dua jenis menurut saya, yaitu golongan yang memang butuh source code dari program lain untuk pengembangan softwarenya lebih lanjut. Serta golongan simpatisan OSS aja. Karena prinsip berbagi source code seperti berbagi jasa aja. Kalo ada orang lain yang ngasih source code secara cuma-cuma, maka rasanya “nggak enak” gitu kalo kita yang pengembang juga ga ngasih harga cuma-cuma juga.
Oke, back to topic. Intinya, kita tidak bisa menggunakan salah satu saja dari 2 OS ini. Bila anda memakai Windows, web yang anda kunjungi, 99,9% saya yakin serverwebnya adalah Linux. Jarang sekali ada web yang servernya windows, karena manja dan harus direstart ulang setiap harinya. Sedangkan server linux? Serverweb linux bisa berjalan 5 tahun tanpa manja dan tanpa minta direstart ulang.
Oh iya, sampai lupa, Apple juga turut serta dalam pengembangan komputer di jagad raya ini. Bebarapa distro linux, GUI-nya terinspirasi dari tampilan Macintosh. Tapi bukan berarti mencontek dan mengklaim-klaim lho ya…
Tidak hanya itu, Apple juga turut berpartisipasi untuk menaikan harga komputer di dunia ini. Hehehe…
Lalu, yang membuat Linux kurang populer? Ya, jam terbang alias waktu munculnya sudah dicuri start oleh Microsoft dan Apple. Jadi, ya wajar saja kalau terjadi adu mulut dan kemampuan di antara 2 user OS ini.

Semoga Bermanfaat...
 
║▌║█║║▌│█│║▌║││▌│║
Copyright © 2013. PORTAL | VICSHARE - All Rights Reserved
Suport Template Creating Website All about Indonesian Creatify
Proudly powered by Blogger