dicarve

Blogspot Arie Nugraha. Librarian sekaligus programmer yang suka programming, database, desain dan berharap bisa memberikan manfaat pada banyak orang. Amin. Menurut Arie Nugraha, Open Source bukan soal gratis, tapi soal menghormati hasil karya orang lain dan belajar ga make aplikasi bajakan.

Kamis, April 18, 2013

PUSTAKAWAN: membuat pathfinder online menjadi lebih mudah

Pustakawan adalah projek open source baru saya untuk memudahkan pustakawan dan profesional informasi lain dalam membangun pathfinder online. Bagi anda yang belum mengetahui apa itu pathfinder, izinkan saya menjelaskan sedikit mengenai apa yang disebut pathfinder. Sederhananya pathfinder adalah panduan yang disusun oleh pustakawan, yang berisikan daftar-daftar sumber informasi dalam berbagai bentuk, seperti buku, website, jurnal, jurnal online, dll. mengenai topik tertentu, untuk membantu pemustaka mendapat sumber YANG TEPAT mengenai topik tertentu

Halaman depan "Pustakawan" menampilkan daftar subjek terkait sumber informasi yang digunakan

Halaman daftar sumber informasi pada subjek tertentu

Fitur-fitur yang akan direncanakan ke depan adalah:

  • Metadata sumber informasi menggunakan standar metadata Dublin Core
  • Manajemen taksonomi subjek hirarkis dengan konsep semantik seperti Tesaurus
  • Fitur langganan bagi pemustaka/peneliti yang ingin mendapatkan update mengenai subjek yang mereka inginkan
  • Integrasi dengan sumber sumber perpustakaan elektronik seperti metadata MODS yang disediakan oleh Senayan Library Management System
  • Layanan feed/sindikasi sumber informasi menggunakan RSS
  • Pencarian data sumber informasi
  • Fitur "Ask Librarian" yang memungkinkan pemustaka berkomunikasi real-time dengan pustakawan

Untuk saat ini software "Pustakawan" masih dalam tahap pengembangan dini, yang artinya masih sangat awal dan belum dapat digunakan untuk skala testing apalagi percobaan. Mohon doa dan restu agar bisa segera dirampungkan versi awal dari software ini. Sekali lagi dengan software ini saya ingin menekankan bahwa software hanyalah "alat", "ISI"-nya adalah tugas intelektual seorang pustakawan :)

Sabtu, Oktober 27, 2012

Genius's Guides to: membuat module Drupal 6 bagian 2

Nah setelah pada posting sebelumnya kita mengenal dasar-dasar coding pada file .module-nya Drupal, kali ini kita akan membahas mengenai file bernama .install yang berisikan definisi dari struktur tabel database untuk kita gunakan pada module. Drupal memungkinkan kita menambahkan atau menghapus tabel-tabel module kita pada struktur database Drupal melalui hook_schema, hook_install dan hook_uninstall.

Pada contoh ini misalnya kita akan membuat sebuah tabel yang nantinya akan kita gunakan sebagai tempat untuk menampung record atau data dari module kita. Jumlah tabel yang kita bisa tambahkan bisa lebih dari satu. Berikut isi dari file .install untuk module Latihan kita:

/**
 * Module Latihan
 * Copyright Arie Nugraha (dicarve@gmail.com) 2012
 * Licensed under GPL v3
 *
 */

/**
 * Fungsi ini dijalankan oleh Drupal ketika kita pertama menginstall module Latihan
 */
function latihan_install() {
  // Create tables.
  drupal_install_schema('latihan');
}

/**
 * Fungsi ini dijalankan oleh Drupal melakukan un-install pada Latihan
 */
function latihan_uninstall() {
  // Remove tables.
  drupal_uninstall_schema('latihan');
}

/**
 * Pada fungsi ini kita mendefinisikan struktur tabel2 database yang akan
 * kita gunakan untuk menyimpan data2 module Latihan
 */
function latihan_schema() {
  $schema['latihan'] = array(
    'description' => 'Tabel untuk menyimpan data module Latihan.',
    'fields' => array(
      'lat_id'     => array(
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'description' => "ID/Key utama tabel latihan"
        ),
      'lat_judul'     => array(
        'type' => 'varchar',
        'length' => '250',
        'not null' => TRUE,
        'default' => '',
        'description' => "Judul konten latihan"
        ),
      'lat_content' => array(
        'type' => 'text',
        'not null' => TRUE,
        'default' => '',
        'description' => 'Konten dari tabel latihan.'
        )
      ),
    'primary key' => array('lat_id'),
    'indexes' => array(
      'judul' => array('lat_judul')
      )
    );

  return $schema;
}

Kita bisa lihat pada implementasi hook_schema yaitu pada fungsi latihan_schema, kita mendefinisikan tabel dengan nama "latihan" dengan dua tiga field yaitu "lat_id", "lat_judul" dan "lat_content", dengan primary key-nya adalah "lat_id" dan juga sebuah indeks dengan nama "judul" pada field "lat_judul". Drupal akan menerjamahkan definisi ini menjadi syntax SQL yang akan di-eksekusi pada saat module "Latihan" pertama kali di-aktifkan.

Pertanyaan berikutnya adalah bagaimana kita memasukkan data ke dalam tabel module "Latihan"? Jawaban sederhananya adalah kita harus membuat form untuk memasukkan data tersebut. Terus bagaimana kita buat form di Drupal? Seperti saya pernah sebutkan sebelumnya Drupal sudah menyediakan API yang sangat lengkap, termasuk di dalamnya adalah Form API yang memudahkan kita dalam membuat form serta memproses form, termasuk dalam hal validasi.

Tanpa banyak basa-basi, mari kita tambahkan kode berikut ini pada file latihan.module kita:

/**
 * Fungsi ini mendefinisikan struktur form yang akan kita gunakan untuk
 * input data
 * @return Array array struktur form
 */
function latihan_inputdata_formdata() {
  // definisikan elemen form
  $form['judul'] = array(
    '#type' => 'textfield',
    '#title' => t('Judul konten Latihan'),
    '#default_value' => '',
    '#size' => 60,
    '#maxlength' => 250,
    '#description' => t('Judul konten latihan yang akan kita masukkan ke dalam database')
  );

  $form['konten'] = array(
    '#type' => 'textarea',
    '#title' => t('Isi konten Latihan'),
    '#default_value' => '',
    '#cols' => 60,
    '#rows' => 5,
    '#disabled' => false,
    '#description' => t('Data konten latihan yang akan kita masukkan ke dalam database')
  );

  $form['data_tersembunyi'] = array('#type' => 'hidden', '#value' => 'Contoh data form tersembunyi');
  $form['submit'] = array('#type' => 'submit', '#value' => t('Save'), '#submit' => array('latihan_inputdata_formdata_submit'));
  return $form;
}


/**
 * Fungsi ini dipanggil ketika form input data latihan di-submit
 * Pada fungsi ini kita memanfaatkan Database API Drupal, yaitu fungsi
 * db_query() untuk melakukan query SQL ke database
 * Data form yang dikirimkan browser bisa kita akses lewat variabel $form_state['values'],
 * misalnya untuk mengakses data form "judul" kita mengaksesnya lewat
 * $form_state['values']['judul']
 */
function latihan_inputdata_formdata_submit($form, &$form_state) {
  db_query("INSERT INTO {latihan} (lat_judul, lat_content) VALUES ('%s', '%s')",
    $form_state['values']['judul'],
    $form_state['values']['konten']);
  // redirect ke web ke halaman/path "latihan"
  $form_state['redirect'] = 'latihan';
  drupal_set_message(t('"Latihan" form data has been saved'));
}


/**
 * Fungsi dibawah ini berfungsi me-render/menampilkan form yang sudah kita definisikan
 * pada fungsi latihan_inputdata_form
 */
function latihan_inputdata() {
  return drupal_get_form('latihan_inputdata_formdata');
}

Agar form input data-nya gampang diakses tentunya kita harus menempatkan link yang bisa diklik oler user, maka dari itu jangan lupa tambahkan kode berikut pada fungsi latihan_menu:

$items['latihan/inputdata'] = array(
  'title' => 'Input data module Latihan',
  'page callback' => 'latihan_inputdata',
  'access arguments' => array('membuat konten latihan'),
  'type' => MENU_NORMAL_ITEM
);

Apabila semua berjalan lancar, maka kita akan bisa melihat tampilan sebagai berikut pada Drupal kita:

Begitulah kira-kira cara dasar pemrosesan form pada Drupal. Pertanyaan berikutnya adalah bagaimana kemudian kita menampilkan data yang sudah kita masukkan ke database? Bagaiman cara kita membuat data yang sudah kita entry bisa di-edit/diubah? Entar dulu yak ane istirahat dulu, nanti ane tulis di bagian 3 :). Semoga bermanfaat

Jumat, Oktober 26, 2012

Genius's Guides to: membuat module Drupal 6 bagian 1

Okay, mungkin sebagian besar dari kita sudah tahu apa itu Drupal. Drupal adalah Content Management Framework yang memungkinkan kita membangun website atau aplikasi web dinamis. Lah kalau begitu kenapa engga disebut Content Management System alias CMS aja macem Joomla dsb.? Drupal menggunakan kata "Framework" disitu karena Drupal menyediakan sebuah platform yang sangat memungkinkan kita membangun aplikasi web lain dengan memanfaatkan API-nya yang sangat komprehensif. Saya bilang komprehensif karena API yang disediakan Drupal sangat lengkap kap kap.

Di artikel blog kali ini saya mau berbagi kepada rekan-rekan pembaca blog (kalau ada yang baca hehehee) bagaimana cara kita membuat module Drupal kita sendiri. Dengan module kita bisa meng-extend/memperluas fungsi Drupal sesuai dengan kebutuhan kita sendiri. Sebenarnya ada beberapa module "sakti" yang bisa kita gunakan untuk membangun aplikasi web dengan Drupal, contohnya Views, CCK (Drupal 6) dan Token, tetapi bagi beberapa orang, utamanya developer aplikasi web yang lebih suka coding (dan yang lebih kepingin dibilang geek kaya saya hahahahaa), membuat module lebih disukai.

Untuk tutorial ini saya menggunakan Drupal 6. Loh kenapa bukan Drupal 7 yang lebih baru, jawaban jujur dari lubuk hati yang paling dalam adalah, saya belum sempat mempelajari API Drupal 7, dan saya sudah terbiasa dengan Drupal 6 hehehee.

Ok sebelum tutorial ini saya lanjutkan ada beberapa hal yang perlu saya sampaikan, terutama terkait dengan pengetahuan dan skill yang wajib dan perlu kita kuasai apabila ingin membuat module Drupal. Apa saja?

  1. Pemrograman dengan PHP
  2. Pemrograman SQL dengan database server MySQL atau PostgreSQL
  3. Pemrograman dengan HTML, Javascript dan CSS
Nah sebelum kita mulai coding module Drupal kita, maka beberapa hal harus kita persiapkan terlebih dahulu:
  1. Drupal 6 yang sudah terinstall (maaf untuk instalasi Drupal saya tidak cover di tutorial ini, cara sendiri aja yak, banyak kok tersedia di web)
  2. Editor teks favorit anda, untuk Windows saya selalu pakai Notepad++, kalau lagi pake GNU/Linux saya pakai Geany, dan kalau lagi pakai Mac OSX saya pakai Komodo Edit
  3. Cemilan sama Teh :D
Pada dasarnya semua 3rd party module di Drupal, termasuk yang akan kita buat, diletakan pada direktori sites/all/modules. Apabila direktori modules belum ada pada sites/all maka silahkan anda buat terlebih dahulu. Pada contoh ini kita akan membuat sebuah module Drupal dengan nama "Latihan". Langkah-langkahnya adalah sebagai berikut:
  1. Buatlah sebuah direktori bernama latihan di dalam direktori sites/all/modules
  2. Di dalam direktori latihan buatlah tiga buah file teks baru dengan nama sebagai berikut:
    • latihan.info
    • latihan.module
    • latihan.installl
  3. Buka file latihan.info dengan teks editor anda. File latihan.info adalah file metadata yang mendeskripsikan module Drupal. Di dalam file ada beberapa informasi dasar yang harus kita cantumkan. Untuk module "Latihan" kita akan isi sebagai berikut:
    
    name = Module Latihan
    description = Module sederhana Drupal untuk latihan
    core = 6.x
    package = "Latihan"
    
    
    Simpan file.
  4. Selanjutnya kita akan membuka file latihan.module yang merupakan file utama berisi kode PHP untuk module "Latihan". Sebelum mulai coding saya mau sedikit menjelaskan cara kerja Drupal dalam menjalankan module-modulenya. Drupal menyediakan apa yang disebut sebagai "hook" atau "kaitan". "Hook" adalah fungsi-fungsi dari dipanggil pada saat-saat tertentu oleh Drupal. Misalnya kita akan menemui hook bernama hook_block, yang dipanggil ketika Drupal akan menampilkan "Block" pada halaman web. Untuk module maka nama hook diganti dengan format namamodule_namahook, jadi untuk mengimplementasikan hook_block di module kita, maka kita harus membuat fungsi dengan nama latihan_block.
  5. Untuk snippet kode pertama adalah kita akan melakukan implementasi pada hook_perm. hook_perm adalah hook yang menentukan permission apa saja yang disediakan oleh module kita.
    /**
     * Permission apa saja yang disediakan oleh module Latihan?
     * tentukan pada fungsi ini
     * @return array Array yang mendefinisikan permission
     */
    function latihan_perm() {
      $_perms = array(
          'membuat konten latihan',
          'mengubah konten latihan',
          'melihat konten latihan',
          'menghapus konten latihan',
          'ubah konfigurasi module latihan');
      return $_perms;
    }
    
    Pada fungsi latihan_perm ini kita mendefinisikan ada lima permission yang disediakan oleh module "Latihan", yaitu "membuat konten latihan" sampai "ubah konfigurasi module latihan", yang didefinisikan dalam bentuk array.
  6. Setelah implementasi hook_perm, selanjutnya adalah kita melakukan implementasi hook_block. Untuk itu kita akan membuat sebuah fungsi lagi dengan nama latihan_block. Kodenya adalah sebagai berikut:
    /**
     * Block adalah konten yang posisi-nya bisa dipindah-pindahkan pada Drupal
     * fungsi ini mendefinisikan konten blok untuk module Latihan
     * @param string $op isi dari variabel argumen ini bisa "list", "view", "save" atau "configure"
     * @param integer $delta kode untuk meng-identifikasi block
     * @param array $edit hanya muncukl apabila argumen $op berisi "save"
     * @return array data semua blok yang disediakan oleh module Latihan
     */
    function latihan_block($op = 'list', $delta = 0, $edit = array()) { 
      // array kosong yang akan menyimpan semua data block
      $block = array();
     
      switch ($op) {
        case "list":
          // operasi list adalah ketika daftar block ditampilkan pada halaman admin/block
          $block[0]["info"] = t('Block module Latihan');
          break;
       
        case "view":
          // operasi view adalah ketika block ditampilkan sebenarnya
          // subject/judul heading dari block
          $block["subject"] = t("Judul Block Latihan");
          // content/isi dari block
          $block["content"] = '

    Ini adalah konten/isi dari block module Latihan

    '; break; case "save": break; case "configure": break; } return $block; }
  7. Berikutnya kita akan membuat fungsi yang tugasnya menampilkan konten utama dari module Latihan. Berikut adalah snippet kode-nya:
    /**
     * Fungsi ini menampilkan konten/isi utama dari Module Latihan
     */
    function latihan_main() { 
      // definisikan variabel konten kosong untuk inisialisasi
      $content = '';
      
      // lakukan berbagai macam manipulasi konten pada bagian ini
      // seperti melakukan query dsb.
      $content .= '

    Ini adalah konten sederhana dari module Latihan

    '; return $content; }
  8. Bagaimana kalau kita mau module kita ada beberapa parameternya yang bisa dikonfigurasikan melalui antar muka web Drupal? Tenang, kita akan membuat sebuah fungsi yang akan menampilkan halaman konfigurasi khusus module Latihan yang kita buat. Berikut kode-nya:
    /**
     * Fungsi ini memungkinkan kita membuat halaman konfigurasi dalam Drupal
     * khusus untuk module Latihan
     * Pada contoh ini kita mendefinisikan 2 item konfigurasi untuk module Latihan
     * @return array Array yang elemen form konfigurasi modul latihan
     */
    function latihan_admin() {
      $form = array();
    
      // setting 1
      $form['latihan_setting1'] = array(
        '#type' => 'textfield',
        '#title' => t('Setting 1 module Latihan'),
        '#default_value' => variable_get('latihan_setting1', null),
        '#size' => 60,
        '#maxlength' => 250,
        '#description' => t("Contoh setting pertama untuk module Latihan"),
        '#required' => TRUE,
      );
      
      // setting 2
      $form['latihan_setting2'] = array(
        '#type' => 'textfield',
        '#title' => t('Setting 2 module Latihan'),
        '#default_value' => variable_get('latihan_setting2', null),
        '#size' => 60,
        '#maxlength' => 250,
        '#description' => t("Contoh setting kedua untuk module Latihan"),
        '#required' => TRUE,
      );
    
      return system_settings_form($form);
    }
    
  9. Langkah penting berikutnya adalah meng-implementasika hook_menu. hook_menu mendefinisikan URL dan path apa saja yang ada pada module Latihan, sekaligus menetapkan callback (fungsi) apa yang dijalankan ketika URL tersebut dipanggil oleh browser. Kode-nya adalah sebagai berikut:
    /**
     * Fungsi menu mendefinisikan menu atau path page untuk module Latihan
     * 
     */
    function latihan_menu() {
      $items = array();
    
      $items['admin/settings/latihan'] = array(
        'title' => 'Konfigurasi Latihan',
        'description' => 'Halaman untuk menampilkan konfigurasi module Latihan',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('latihan_admin'),
        'access arguments' => array('ubah konfigurasi module latihan'),
        'type' => MENU_NORMAL_ITEM
       );
    
      $items['latihan'] = array(
        'title' => 'Halaman utama module Latihan',
        'page callback' => 'latihan_main',
        'access arguments' => array('melihat konten latihan'),
        'type' => MENU_NORMAL_ITEM
      );
      
      return $items;
    }
    
  10. Nah sampai disitu dulu kode module Drupal kita, untuk kode lengkapnya silahkan anda lihat ke Kode Lengkap module Latihan. Selanjutnya kita akan coba mengaktifkan module Drupal yang baru kita buat dengan masuk ke halaman admin/build/modules pada website Drupal kita. Apabila berhasil maka kita akan melihat module Latihan pada daftar module yang disediakan Drupal seperti pada screenshot berikut:
    Centang pada module "Module Latihan" dan kemudian tekan tombol "Save Configuration".
  11. Apabila proses aktivasi module kita berhasil maka kita akan melihat tampilan-tampilan sebagai berikut pada website Drupal kita:
    Kita bisa melihat menu dengan nama "Halaman utama module Latihan" di bagian sebelah kiri halaman web kita, yang apabila di-klik akan ditujukan ke halaman URL latihan.
    Pada halaman manajemen Block Drupal di admin/build/block kita akan melihat Block dengan nama "Block module Latihan" sudah terdaftar, tinggal kita letakkan di posisi yang kita inginkan.
    Halaman konfigurasi khusus module Latihan juga bisa kita ke akses melalui path URL admin/settings/latihan dan akan menampilkan tampilan seperti di atas.
Sampai disini dulu untuk bagian satu, semoga bisa memberikan gambaran dasar bagaimana membuat module dengan Drupal. Seperti yang sudah saya sebutkan sebelumnya, Drupal menyediakan banyak API yang memudahkan kita dalam mengembangkan module. Untuk daftar lengkap beserta dokumentasi penggunaanya silahkan browsing ke Drupal 6 API.

Rabu, Agustus 24, 2011

Instalasi Senayan Library Management System (SLiMS) di Mac OSX berikut dengan dukungan Z39.50 (Bagian 1)

Sebenernya udah lama mau nulis tutorial ini, tapi karena "kesibukan" (#eaaa) yang mendera, baru kali ini kesampean, sekalian menyambut bulan Ramadhan yang penuh barokah dan kehadiran versi SLiMS terbaru Stable15 Matoa. Berhubung saya ini juga orang sangat pelupa, maka ada baiknya sekalian saya dokumentasikan cara instalasi SLiMS di Mac OSX, kali-kali aja di kemudian hari saya lupa :D. Untuk instalasi di Mac OSX sebenernya relatif mudah, beberapa prasyarat yang harus anda penuhi adalah:

  1. Desktop MacPro, Imac, Macbook, MacbookPro atau Macbook Air! (YA IYAAALLLAH!!!).
  2. Terinstall sistem operasi OSX minimal versi 10.4 (boleh Intel atau PPC) dan ke atasnya
  3. Paket XAMPP for Mac terbaru
  4. Paket Xcode. Xcode merupakan paket development Mac OSX yang didalamnya terdapat compiler gcc, g++, make, dll. yang kita butuhkan untuk meng-compile YAZ dan PHP-YAZ. Xcode biasanya disertakan pada setiap DVD instalasi Mac OSX, atau kalo DVD instalasinya udah raib alias hilang, download aja di website resmi Apple, gratis kok.
  5. Paket SLiMS versi source (bukan psenayan/portable senayan) terbaru, misalnya pada saat tulisan ini dibuat SLiMS Stable15 (Matoa)

Untuk tutorial ini, saya menggunakan MacbookPro dengan Mac OSX versi 10.6.8 dan paket XAMPP for Mac yang saya gunakan adalah versi 1.7.3, berikut dengan paket XAMPP Dev (xampp-macosx-1.7.3-dev) dengan versi yang sama. XAMPP Dev merupakan paket tambahan opsional yang berisi file-file development header dari aplikasi-aplikasi yang terdapat di dalam XAMPP seperti PHP, MySQL, library-library, dsb.

Oke mari kita mulai proses instalasinya!

  1. Unduh (download) paket XAMPP untuk Mac di laman (website) Apachefriends. Inget ya, yang versi Mac, jangan yang versi Linux, Solaris, apalagi Winslow ehhh, Windows. Silly maybe, but guess what? ada aja orang yang salah download!
  2. Download file Universal binary dalam format .dmg yang disediakan. Jangan lupa download juga paket development-nya agar kita bisa meng-compile library YAZ dan PHP-YAZ nanti.
  3. Setelah selesai di-download, klik dua kali pada file image .dmg XAMPP untuk membuka installer-nya. Drag folder XAMPP ke folder Applications untuk menginstall.
  4. Selesai proses instalasi, sekarang giliran install paket .dmg XAMPP Dev-nya. Caranya hampir sama dengan instalasi XAMPP, buka paket .dmg-nya dan jalankan installer yang terdapat di dalamnya. Ikuti proses wizard instalasinya.
  5. Masuk ke folder Applications dan cari folder XAMPP disitu. Jalankan program "XAMPP Control". Nanti akan ada jendela aplikasi kecil yang berisi tombol untuk menjalan Apache, MySQL dan FTP. Cukup jalankan Apache dan MySQL saja, FTP server-nya engga perlu.
  6. Sekarang giliran instalasi SLiMS. Ekstrak paket SLiMS versi source yang sudah anda download dari situs resmi SLiMS, dan kemudian kopikan folder hasil ekstraksinya (misal nama foldernya s3st15_matoa) ke folder /Applications/XAMPP/htdocs/.
  7. Buka browser web favorit anda, misalnya Safari, Firefox, Chrome atau Camino dan arahkan ke URL phpMyAdmin di http://127.0.0.1/phpMyAdmin untuk membuka program manajemen database MySQL berbasis web, phpMyAdmin yang kesohor itu. By default instalasi XAMPP, phpMyAdmin bisa diakses bebas tanpa harus memasukkan username dan password.
  8. Buatlah sebuah database baru dengan nama "senayandb". Setelah database berhasil dibuat masuk ke menu tab "Import" dan pilih file "senayan.sql" yang terdapat di dalam folder "install" di source SLiMS hasil ekstraksi kita tadi. Setelah proses import berhasil maka kemudian pilih menu tab "SQL" dan jalankan perintah berikut:
    
    GRANT ALL ON senayandb.* TO 'senayanuser'@'localhost'
    IDENTIFIED BY 'password_senayanuser';
    FLUSH PRIVILEGES;
    
    
  9. Buka Tab baru pada browser web anda dan masukkan alamat: http://127.0.0.1/s3st15_matoa . VOILLAA SLiMS sudah terinstall di Mac OSX ente gan!
Okeh. Bagian 1 sampai disini dulu, besok bagian 2 dimana kita akan meng-compile YAZ dan PHP-YAZ agar fitur Z39.50 yang dahsyat itu bisa berjalan di Mac OSX, akan saya lanjutkan, selamat menggunakan SLiMS di Mac OSX anda! (Ane tunggu cendol-nya ya gan xixixiiiii)

Label: , , , ,

Jumat, Agustus 05, 2011

Tips dan Trik Pemeliharaan a.k.a Maintenance Senayan Library Management System (SLiMS)

Beberapa teman pengguna SLiMS sering bertanya kepada saya, apa saja tips dan trik dalam pemeliharaan SLiMS, terutama bagi yang menggunakan versi Portable Senayan (psenayan). OK, kalau begitu sekalian aja biar ga lupa kita dokumentasikan di posting blog saya yang jarang sekali dimutakhirkan/update ini (heheheeee):

Tips 1:
Hapus semua file image barcode secara rutin
Setelah sekian lama menggunakan SLiMS kemudian sering membuat barcode untuk data Item/Copies koleksi, maka file-file image barcode hasil generate cetak barcode akan menumpuk di folder "lokasi_source_slims/images/barcodes". Walaupun besar file-nya kecil-kecil tetapi cukup mengganggu juga kalau jumlah sudah ribuan, terutama bagi mereka yang pakai webhosting dengan space harddisk pas-pasan. Oleh karena itu bagi mereka yang sering mencetak barcode koleksi atau kartu anggota dengan SLiMS paling tidak sebulan sekali silahkan itu semua file image .png barcode di folder "lokasi_source_slims/images/barcodes" dibabat abissss!

Tips 2:
Cek file access.log dan error.log web server Apache di psenayan
Ada kaskus, ehhh... :p kasus dimana pengguna psenayan bingung setengah hidup ketika melihat ukuran folder psenayan mereka menggelembung atau bahasa kerennya, BLOATED, menjadi 3-5 Gigabyte padahal mereka tidak mengupload file-file digital ke SLiMS. Penyebab hal ini ternyata adalah file log milik web server Apache, yaitu error.log dan access.log yang menjadi semakin besar seiring pemakaian psenayan. Bagi anda yang belum tahu fungsinya, file access.log menyimpan semua informasi request HTTP yang dilakukan ke web server Apache, sedangkan error.log menyimpan semua error/galat yang terjadi pada request HTTP, error yang terjadi pada program Apache itu sendiri, error pada SSL, dan error-error lainnya. Letaknya ada di direktori "/psenayan/apache/logs". Nah solusi masalah ini ada 3 alternatifnya:
  1. Solusi 1: Kosongkan kedua file tersebut, atau hapus apabila terlalu besar untuk dibuka dengan Notepad dan kemudian buat kembali file teks kosong dengan nama yang sama. Solusi ini berlaku bagi mereka yang mengganggap tidak perlu mengetahui apa isi dari log web server Apache
  2. Solusi 2: Compress dalam format zip atau rar kedua file tersebut dan backup ke tempat lain kemudian buat kembali file teks kosong dengan nama yang sama. Solusi ini berlaku bagi mereka yang mengganggap penting untuk mengetahui apa isi dari log web server Apache, biasanya admin jaringan perlu menganalisa isi dari log ini, terutama apabila terjadi hacking, cracking, deface, dll pada website
  3. Solusi 3: Gunakan fasilitas Log Rotation yang disediakan oleh Apache untuk merotasi isi log secara otomatis dan periodik. Untuk lebih lengkapnya silahkan ikuti petunjuknya disini Log Rotation. Atau bisa juga gunakan fitur Piped Logs

Tips 3:
Backup psenayan dan database secara rutin
Bagi pengguna psenayan lakukan backup satu folder psenayan secara rutin dengan melakukan dua tips sebelumnya terlebih dahulu agar ukuran backup tidak terlalu besar dan kemudian kompresi folder psenayan dalam format zip atau rar (mau lebih kecil lagi? pake format 7z atau lzma sekalian :D). Beri nama file kompresi tersebut misalnya psenayan-20110817.zip biar kita lebih mudah mengidentifikasi kapan tanggal pembuatan backup tersebut.
Untuk membackup database, gunakan fasilitas "Database Backup" yang terdapat pada modul "System" di SLiMS. Sebelumnya pastikan bahwa sudah tidak ada warning mysqldump di halaman awal admin SLiMS. Jangan lupa juga untuk memindahkan semua file hasil backup SLiMS (.sql atau .sql.gz) yang terletak di direktori "lokasi_source_slims/files/backup" ke tempat lain.

Tips 4:
Optimasikan database SLiMS
Bagi anda pengguna SLiMS yang sering kali melakukan proses update data dan penghapusan data, ada baiknya lakukan proses optimisasi database SLiMS. Untuk optimasi database SLiMS gunakan saja phpMyAdmin atau kalo mau lebih hardcore login ke database server MySQL pake terminal/commandline. Dengan phpMyAdmin masuk ke database yang digunakan SLiMS (biasanya di psenayan namanya "senayandb"), dan kemudian masuk ke tab menu SQL dan masukkan perintah berikut:

OPTIMIZE TABLE `biblio` , `biblio_attachment` , `biblio_author` , `biblio_topic` , `files` , `item` , `member` , `mst_author` , `mst_label` , `mst_topic`;

Tips 5:
Backup dan kosongkan System Logs SLiMS secara rutin
Lakukan proses backup dengan mendownload log System SLiMS dengan menggunakan fasilitas yang sudah disediakan dan kemudian kosongkan System Log SLiMS. Lakukan ini secara berkala setiap bulan.

Kira-kira begitulah tips dan trik dalam proses maintenance SLiMS yang bisa saya share kepada rekan-rekan pengguna SLiMS, ditunggu masukkan tips dan trik yang lainnya dari rekan-rekan semua. Semoga bermanfaat :)

Label: , ,

Minggu, Agustus 22, 2010

Kompilasi HandBrake di Ubuntu 10.04 Lucid Lynx

Mungkin sebagian dari Anda pengguna Ubuntu, sudah tahu bahwa HandBrake tidak keluar versi binary untuk distro Ubuntu dan Fedora. Padahal HandBrake menurut saya adalah salah satu aplikasi terbaik buat nge-rip DVD/encode video ke format MKV atau MP4. Alasan resmi dari developernya adalah:
"0.9.4 is no longer available due to compatibility issues with the newer version of gnome. "
Ada juga cara dengan mendownload Nightly build-nya di Launchpad-nya John Stebbins. Buat yang demen cara susah, biar keliatan lebih geek, bisa juga install dengan kompilasi dari Source Code. Sebelumnya coba cara susah ini, pastiin komputer anda terkoneksi ke Internet dan pastikan paket-paket development berikut ini sudah terinstall:
  • yasm
  • build-essential
  • autoconf
  • libtool
  • zlib1g-dev
  • libbz2-dev
  • intltool
  • libglib2.0-dev
  • libdbus-glib-1-dev
  • libgtk2.0-dev
  • libgudev-1.0-dev
  • libwebkit-dev
  • libnotify-dev
  • libgstreamer0.10-dev
  • libgstreamer-plugins-base0.10-dev
Bagaimana cara installnya? buka console, lalu seperti biasa ketikkan perintah: sudo apt-get install yasm build-essential autoconf libtool zlib1g-dev libbz2-dev intltool libglib2.0-dev libdbus-glib-1-dev libgtk2.0-dev libgudev-1.0-dev libwebkit-dev libnotify-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
Setelah paket-paket tersebut sudah terinstall dengan baik, maka lakukan langkah-langkah sebagai berikut:
  1. Download source code HandBrake (Ya iya lahh!!!) (Pada saat tulisan ini dibuat HandBrake berada pada versi 0.9.4)
  2. Buka console kesayangan anda dan arahkan ke direktori tempat anda mendowload source code HandBrake tadi.
  3. Extract file tarball source code HandBrake dengan perintah: tar xvf HandBrake-0.9.4.tar.bz2
  4. masuk ke direktori hasil ekstraksi tadi dengan perintah: cd HandBrake-0.9.4/
  5. Jalankan perintah: ./configure --prefix=/usr/local
  6. Setelah proses selesai, lalu masuk ke direktori build dengan perintah: cd ./build
  7. Jalankan make dengan perintah: make
  8. Tunggu proses-nya yang cukup lama selesai (tergantung spesifikasi komputer Anda), dan beberapa dependancies akan didownload otomatis ketika proses berjalan, seperti faac, faad, ffmpeg, dsb.


  9. Setelah proses kompilasi selesai tanpa error, jalankan perintah install: sudo make install
  10. Untuk mencoba apakah HandBrake sudah berjalan coba jalankan perintah: HandBrakeCLI untuk versi command line-nya dan juga ghb untuk versi dengan GUI GTK2.0-nya
  11. Bagi yang masih penasaran mengenai cara kompilasinya, silahkan baca manual kompilasi aslinya di Compiling HandBrake on GNU/Linux.
Selamat! sekarang HandBrake sudah bisa digunakan untuk me-rip DVD kesayangan anda dalam format MKV atau MP4, bisa lewat GUI ataupun kalo mau merasa lebih geeky lagi buang jauh-jauh GUI, pake versi command line-nya :P :D!!

Label:

Selasa, Mei 25, 2010

Mengatasi problem "wget" ketika mendownload di balik proxy (Ubuntu Lucid Lynx)

Beberapa waktu yang lalu saya meng-upgrade OS GNU/Linux Ubuntu Karmic Koala (9.10) di MacbookPro saya ke versi LTS terbaru, Lucid Lynx (10.04). Saya upgrade menggunakan versi alternate yang saya download dari Kambing. Semua proses berjalan lancar, Lucid terinstall dengan ciamik-nya di MacbookPro dan hampir semua tombol fungsi spesial di Mac berjalan dengan baik.

Masalah muncul ketika saya akan mendownload website untuk mirroring dengan program command-line favorit saya, wget. Kantor saya menggunakan proxy untuk koneksi Internet, sehingga untuk menjalankan perintah-perintah dari console yang menjalankan download seperti apt-get install atau apt-get update misalnya kita harus men-set environment variable http_proxy dan ftp_proxy terlebih dahulu. Pada desktop GNOME sudah disediakan aplikasi "Network Proxy" yang terletak di System->Preferences, yang memudahkan kita mengubah setting proxy jaringan. Enaknya lagi program ini mendukung multiple profile proxy yang memudahkan kita untuk menyimpan lebih dari satu setting proxy, kemudian tinggal mengubahnya sesuai dengan kebutuhan kita.

Sayangnya, pada Ubuntu Lucid Lynx, entah kenapa wget tidak terpengaruh dengan setting proxy ini, tetapi tools apt dan yang lainnya terpengaruh. Setelah berkeliling internet mencari-cari solusinya, dan akhirnya menemukan solusinya di Lauchpad, ternyata masalahnya sangat simple!!! Ternyata masalahnya ada di environment variable no_proxy yang secara "tidak sengaja" menaruh karakter "," (koma) di bagian akhir!!! PLLOOOKKKK!!! (tepok jidat)

Solusinya adalah dengan menghilangkan tanda koma di bagian akhir tersebut, dengan cara men-set ulang variable no_proxy di console: $export no_proxy=daftar-alamat-tidak-kena-proxy1,daftar-alamat-tidak-kena-proxy2,daftar-alamat-tidak-kena-proxy3 dan kemudian wget bisa berjalan dengan normal kembali seperti biasa walau ada proxy. Jangan lupa juga cek file konfigurasi wget yang terletak di "/etc/wgetrc" dan pastikan setting use_proxy=on aktif dan setting no_proxy ditulis dengan benar (bila ada).

Label: ,