Download secara terdistribusi

Apa tu? intinya kalau kita punya benwit gede, punya kompi banyak dan masing-masing punya ip publik, lalu ingin donlod dari tempat yg menerapkan membatasan per IP, mengapa kita tidak mendistribusikan proses donlod itu? =D

Kodingan bisa dilihat di proyek iseng di github saya. Ada 2 file di situ yg dipake.

File pertama, donlod dipake tuk mengambil URL yg ditujukan tuk sebuah mesin dan mendownloadnya. Kalau udah selesai, hasil donlodan dikirim ke sebuah mesin tertentu.

File kedua, donlod-start dipake tuk mendistribusikan URL (alias menjalakan file pertama) ke mesin-mesin pekerja yang ada.

Daftar URL disimpen di $HOME/list yang isinya punya format kaya begini.

nama-mesin-satu http://url.satu/file.nya
nama-mesin-dua http://url.dua/file.nya
...

yaya.. itu saja =D

Mengelompokkan file berdasar tanggal

Mau mengelompokkan file berdasar tanggal? silakan coba pake skrip iseng-iseng ini =D coba aja langsung diintip di github.

Donlod dulu.. dan set supaya bisa dieksekusi.

$ wget -o group.py http://github.com/fajran/iseng/tree/master%2Fgroup-file-by-date%2Fgroup.py?raw=true
$ chmod +x group.py

Lalu jalankan skrip tsb tuk membuat skrip lain yang baru akan melakukan pengelompokkan dengan cara membuat direktori tanggal dan memindahkan file ke dalamnya.

$ ./group.py -s campuraduk/ -d rapijali/ > beberes.sh

Akan terbentuk file beberes.sh yang kalau dieksekusi maka file-file yang ada di direktori campuraduk akan dipindahkan ke dalam direktori rapijali.

Sebelum mengeksekusi beberes.sh silakan cek dulu isinya, sapa tau gak sesuai dengan hati nurani. Kalau udah puwas, ya langsung aja dijalanin.

$ chmod +x beberes.sh
$ ./beberes.sh

Semoga bermanfaat..

Content negotiation di Apache

Sepertinya ini fitur yang jarang dipake orang *sotoy* Sangat berguna jika ingin menyediakan dokumen berbeda-beda sesuai dengan keinginan pelanggan pengguna (browser). Sebagai contoh kasus, dokumen dalam bahasa Indonesia akan dikirim jika browser yang digunakan meminta bahasa Indonesia.

Caranya: aktifkan modul mod_mime dan mod_negotiation. Lalu buat aturan di .htaccess atau di konfigurasi utama seperti berikut (ini contoh tuk satu dokumen dalam bahasa berbeda).

Options Multiviews
AddLanguage id .id
AddLanguage en .en
LanguagePriority

Lalu, sediakan berkas dengan akhiran .id dan .en yang tentu saja memiliki isi yang berbeda (misalnya index.html.id dan index.html.en).

Contoh penggunaan nyata bisa dicek di http://labs.fajran.web.id/p/sources.list/. Kalau make Firefox bahasa Indonesia, nanti bahasa yang dipakai langsung diubah jadi bahasa Indonesia =D

Sebenernya trik ngubah bahasa tampilan di aplikasi kecil di atas itu juga melibatkan javascript. Daripada susah2 ngejelasin, mending intip aja langsung kodingan javascriptnya ya =D.

Dah dulu ah.. ntar kepanjangan. Selamat berbingung ria =P

Numpang donlod pake ssh

Andai sedang make komputer tak terhubung lgs dg internet namun pengen donlod dan di sebelah ada komputer yg nyambung dg internet, ssh tunneling bisa dipake :D. Contoh:

$ ssh perantara wget -O - http://apalah.ini/donlodan.tar.gz > donlodan.tar.gz

Berhubung ssh bisa nerusin stdin, stdout, dan stderr dan wget bisa ngeluarin data ke stdout, ya marilah kita perdayagunakan stdout tsb.

Kompilasi ZFS-Fuse di Ubuntu

ZFS juga sudah bisa dinikmati di Linux walau mungkin blom selengkap, sehandal, dan sestabil yg ada di OpenSolaris. Karena satu dan lain hal, implementasi di Linux dibuat di atas FUSE yang bisa saja mengorbankan kinerja.

  • Donlod ZFS-Fuse versi terakhir, 0.5.0.

  • Instal paket2 yang dibutuhkan.

    $ sudo apt-get install libaio1 libaio-dev zlib1g-dev libfuse-dev 
      scons build-essential
  • Extrak, masuk ke direktori src dan lakukan kompilasi.

    $ tar xjf zfs-fuse-0.5.0.tar.bz2
    $ cd zfs-fuse-0.5.0/src
    $ scons

    Andai gak bisa dikompilasi karena error berikut, ubah isi berkas SConstruct dan hapus -Werror dari CCFLAGS.

    cc1: warnings being treated as errors
    cmd/zdb/zdb.c: In function 'zdb_dump_block_raw':
    cmd/zdb/zdb.c:2007: error: ignoring return value of 'write', declared with attribute warn_unused_result
    scons: *** [cmd/zdb/zdb.o] Error 1
    scons: building terminated because of errors.

    Hapus -Werror dari CCFLAGS.

    $ vi SConstruct
    ...
    env['CCFLAGS'] = Split('-pipe -Wall -std=c99 -Wno-switch ...
    ...

    lalu ulangi kompilasi dg scons.

    Tadi nyoba juga ngompile di Debian Lenny Belum Jadi edisi amd64, ngga ada masalah kaya gtu soale.

  • Setelah kompilasi selesai, instal ZFS Fuse. Misalnya di /usr/local

    $ sudo scons install install_dir=/usr/local

Kalau sudah, yaa.. silakan dimainkan =D

Referensi tambahan: milis zfs-fuse

Bazaar di Nexenta

Bazaar (bzr) di Nexenta 1.0 udah terlalu jadul. Jadi enakan ngompile ndiri aja =D

  • Paket tambahan kalo mo ngompile..

    $ sudo apt-get install python-dev
  • Donlod bzr yg baru lalu di-extract

    $ wget --no-check-certificate 
      https://launchpad.net/bzr/1.9/1.9/+download/bzr-1.9.tar.gz
    $ tar xzf bzr-1.9.tar.gz
    $ cd bzr-1.9
  • Compile dan instal ke $HOME/sunos

    $ python setup.py install --prefix=$HOME/sunos

    sesuaikan target instalasi sesuai kebutuhan.

Instalasi kelar, sekarang atur2 path.

$ export PATH=$PATH:$HOME/sunos/bin
$ export PYTHONPATH=$PYTHONPATH:$HOME/sunos/lib/python2.4/site-packages