Mengecek Penggunaan Storage di *nix

Standar

Overview

Saya biasa mengecek penggunaan storage di *nix dengan menggunakan command df. Contoh menggunakan df -h

Filesystem   Size    Used   Avail  Use%  Mounted on
/dev/sda5    55G     13G    40G     24%  /
dev          3.9G    0      3.9G     0%  /dev
run          3.9G    916K   3.9G     1%  /run
tmpfs        3.9G    7.6M   3.9G     1%  /dev/shm
tmpfs        3.9G    0      3.9G     0%  /sys/fs/cgroup
tmpfs        3.9G    268K   3.9G     1%  /tmp
/dev/sda7    19G     14G    3.5G    80%  /opt
/dev/sda8    95G     90G    220M   100%  /home

Tapi belakangan ini saya mulai merasa kurang nyaman. Saya butuh sesuatu yang hanya dilihat sekilas, langsung terlihat jelas. Jika menggunakan GUI, seperti gnome-system-monitor, mate-system-monitor, kdisk-free, etc agak merepotkan. Apalagi kalau menggunakan tiling window manager, dan aktivitas saya sebagian besar di terminal.

Saya coba cari di repository dengan keyword “df”, pacman -Ss df. Yup… saya menemukan pydf, dfc dan di. Berikut tampilan masing-masing:

pydf

☁  ~  pydf
Filesystem Size Used Avail Use%                                Mounted on
/dev/sda5   55G  12G   40G 22.3 [########....................] /         
/dev/sda8   95G  90G  221M 94.7 [##########################..] /home     
/dev/sda7   18G  14G 3579M 75.6 [####################........] /opt

Konfigurasi global pydf ada di /etc/pydfrc. Anda bisa menggunakan konfigurasi level user dengan cara copy ke home directory anda.

cp /etc/pydfrc ~/.pydfrc

Edit ~/.pydfrc sesuai dengan keinginan anda.

dfc

☁  ~  dfc
FILESYSTEM  (=) USED      FREE (-) %USED AVAILABLE     TOTAL MOUNTED ON 
rootfs      [======--------------]   27%     39.8G     54.9G /
dev         [--------------------]    0%      3.9G      3.9G /dev
run         [=-------------------]    0%      3.9G      3.9G /run
/dev/sda5   [======--------------]   27%     39.8G     54.9G /
tmpfs       [=-------------------]    0%      3.9G      3.9G /dev/shm
tmpfs       [--------------------]    0%      3.9G      3.9G /sys/fs/cgroup
tmpfs       [=-------------------]    0%      3.9G      3.9G /tmp
/dev/sda7   [=================---]   81%      3.5G     18.2G /opt
/dev/sda8   [====================]  100%    219.6M     94.6G /home

Konfigurasi global pydf ada di /etc/xdg/dfc/. Anda bisa menggunakan konfigurasi level user dengan cara copy ke home directory anda.

mkdir ~/.config/dfc/ -p
cp -r /etc/xdg/dfc/ ~/.config/dfc/

Edit ~/.config/dfc/dfcrc sesuai dengan keinginan anda.

di

☁  ~  di
Filesystem         Mount             Size     Used    Avail %Used  fs Type
/dev/sda5          /                54.9G    12.2G    39.8G   27%  ext4   
tmpfs              /dev/shm          3.9G     0.0G     3.9G    0%  tmpfs  
/dev/sda8          /home            94.6G    89.6G     0.2G  100%  ext4   
/dev/sda7          /opt             18.2G    13.8G     3.5G   81%  ext4   
run                /run              3.9G     0.0G     3.9G    0%  tmpfs  
tmpfs              /sys/fs/cgroup    3.9G     0.0G     3.9G    0%  tmpfs  
tmpfs              /tmp              3.9G     0.0G     3.9G    0%  tmpfs

Finally…

Setelah mencoba beberapa saat, saya langsung memutuskan untuk menggunakan dfc. Alasannya sederhana… Saat menggunakan dfc terasa lebih cepat dibandingkan menggunakan pydf. Itu wajar karena dfc dibuat dengan menggunakan bahasa C.

Gangguan setelah update Apache HTTPD 2.4 di Arch Linux

mantle-asf
Standar

Saya tidak ingat awalnya, tapi saat membuka localhost, tidak bisa. Setelah mengecek dengen systemctl status httpd, ternyata ada yang aneh. File mod_authn_default tidak dapat ditemukan. Saya cari dengan locate juga tidak ketemu :/

Setelah menelusuri /var/log/pacman.log, ternyata ada perubahan major version pada apache httpd. Dari versi 2.2 ke 2.4. Dan ada informasi untuk mengecek manual. Selama ini biasanya setiap upgrade selalu saya perhatikan package apa saja yang di-upgrade. Dan stdout yang muncul saat upgrade juga saya baca. Tapi untuk kasus kali ini, terlewat.

Solusi agar daemon dapat kembali diaktifkan sebenarnya cukup mudah. Setiap pacman melakukan upgrade dan ada perubahan file konfigurasi, otomatis akan dibuat file konfigurasi default baru yang berada di lokasi sama, dengan tambahan ekstensi .pacnew. Jadi misalnya konfigurasi apache httpd /etc/httpd/conf/httpd.conf. Maka file barunya adalah /etc/httpd/conf/httpd.conf.pacnew.

Cara paling mudah dengan me-replace langsung file lama dengan yang baru. Tapi bila anda pernah melakukan modifikasi, sebaiknya backup dulu file lama, lalu gunakan tool semacam vimdiff, meld atau kdiff untuk membandingkan sekaligus mengedit file lama.

Setelah konfigurasi diperbaharui, ternyata PHP tidak jalan. Muncul error message seperti berikut

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
 AH00013: Pre-configuration failed
httpd.service: control process exited, code=exited status=1

Apakah saya harus compile PHP? :/
Bisa sebenarnya. Tapi karena buru-buru, saya memilih untuk menggunakan php-fpm. Kebetulan di sistem saya juga sudah ready nginx + php-fpm. Jadi tinggal sedikit konfigurasi pada /etc/httpd/conf/httpd.conf

# PHP-FPM
<IfModule proxy_fcgi_module>
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/srv/http/$1 
</IfModule>

Tadaa… PHP di apache sudah bisa digunakan kembali. Sesuaikan konfigurasi php-fpm anda. Misalnya anda menggunakan port yang berbeda, atau menggunakan unix-socket.

Mungkin nanti akan ada update untuk masalah ini. Stay tune…

UPDATE (March 11, 2014)

Cara untuk load php sebagai module di Apache HTTPD sangat mudah.

Edit file /etc/httpd/conf/httpd.conf

Hapus/ubah/beri tanda comment # pada

LoadModule mpm_event_module modules/mod_mpm_event.so

Ganti dengan

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Load PHP module seperti biasa

LoadModule php5_module modules/libphp5.so
<IfModule dir_module>
  <IfModule php5_module>
    DirectoryIndex index.php index.html
    <FilesMatch "\.php$">
      SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
      SetHandler application/x-httpd-php-source
    </FilesMatch>
  </IfModule>
</IfModule>

Referensi:

Ganapatih – Sistem & Aplikasi Tanggap Bencana

Standar

Tulisan ini akan membahas tentang sebuah aplikasi yang bernama Ganapatih. Apa itu Ganapatih? Ganapatih adalah aplikasi tanggap bencana, dan sesuai dengan definisinya, aplikasinya ini memang didesain untuk membantu para korban bencana alam.

Logo Ganapatih

Aplikasi ini diprakarsai oleh Dashboard PHP Indonesia – Jogjakarta yang kemudian mengajak teman-teman programmer lainnya lintas bahasa untuk berkontribusi menyumbangkan ilmunya untuk membantu masyarakat di negara kita ini yang saat ini sedang tertimpa banyak musibah.

Bahasa pemrograman yang digunakan untuk aplikasi ini antara lain:

  • Java, untuk pengembangan aplikasi android (native)
  • PHP, untuk pengembangan website & API
  • Javascript & NodeJS untuk pengembangan realtime mapping
  • Python, untuk data processing.
  • Bash/Shell scripting, untuk manajemen server

Tools yang digunakan untuk aplikasi ini adalah :

  • PHP Framework: Laravel 4.1.x
  • UI Framework: Zurb Foundation
  • Framework JS: jQuery
  • Database: MongoDB (2.4.9)
  • Message Queue: Gearman
  • Forever (nodejs)
  • Socket.io (nodejs)
  • Python 2.7.x (pymongo, gearman)

Konsep aplikasi ini adalah sebuah aplikasi yang didesain se-simple mungkin yang ditujukan untuk user/orang awam yang sedang berada di lokasi bencana, atau dengan kata lain korban bencana alam.

Definisi korban disini bisa masyarakat awam ataupun juga relawan, atau pejabat pemerintah, atau siapapun itu yang sedang berada di lokasi bencana. Kenapa seperti ini? Karena konsep berpikir kami, siapapun itu baik pejabat, relawan, ataupun masyarakat siapapun itu bisa menjadi korban bencana alam, dan siapapun itu berhak untuk mendapatkan pertolongan.

Versi pertama aplikasi ini dirancang agar seorang user yang menginstall aplikasi ini pada smart phone. Ketika dia sedang dalam kondisi panik (korban) cukup menekan satu buah tombol (tanpa form, tanpa input) yang kemudian oleh aplikasi ini akan mengirimkan data GPS dirinya, sehingga user lain yang sedang login di website bisa langsung memantau laporannya, dengan kata lain arus informasi terjadi secara realtime.

Untuk relawan, aplikasi ini juga bisa digunakan untuk memberikan informasi tentang apa yang sedang terjadi di lokasi bencana, kemudian bisa langsung mengirimkan ke server dan dipantau secara realtime pula oleh user lainnya.

Untuk versi pertama ini, kami sengaja setup khusus untuk lokasi Jogjakarta, yang kebetulan ketika aplikasi ini dibuat, sedang tertimpa hujan abu dari letusan Gunung Kelud.

Harapan kami para pengembang / developer / programmer aplikasi ini adalah, dengan adanya aplikasi ini, kita bisa memantau secara realtime apa yang sedang terjadi di lokasi bencana, dengan menggunakan bantuan koneksi internet.

Fitur utama aplikasi ini adalah:

  • Mengirim data GPS baik itu untuk korban maupun relawan
  • Mengirim data tentang status & deskripsi apa yang sedang terjadi di lokasi bencana (khusus relawan)
  • Pantauan realtime hasil report lokasi bencana di website.

Karena keterbatasan tenaga kami, masih banyak beberapa fitur yang belum sempat kami kerjakan, beberapa di antaranya:

  1. Verifikasi report (sudah kami rancang sebenarnya, tetapi belum sempat kami kerjakan) secara realtime dengan user terdekat
  2. Proses scanning area untuk melakukan proses pencarian orang hilang
  3. Proses filtering data berdasarkan lokasi,tipe bencana,hari
  4. Proses filtering data user (data lokasi terakhir)
  5. Proses broadcast data via mobile (memanfaatkan teknologi Google Cloud Messaging)
  6. Proses pendistribusian bencana (ada teman yang mau menawarkan konsep pendistribusian bantuan untuk lokasi bencana)
  7. SMS Gateway, fitur ini dirancang agar ketika koneksi internet tidak tersedia, user tetap masih bisa menggunakan aplikasi walaupun hanya lewat SMS.

Tetapi walaupun aplikasi dibuat dan diselesaikan dengan penuh keterbatasan, harapan kami para developer, ada programmer lainnya yang mungkin bersedia membantu meneruskan development aplikasi ini.

Oleh karena itu, kami memutuskan source code aplikasi akan kami open di GitHub:
https://github.com/ganapatih

Semoga apliasi ini bisa membantu banyak pihak (khususnya korban bencana alam), terlebih lagi kondisi negara kita yang juga berada di lokasi “Ring of Fire”.

NOTE

Walaupun aplikasi ini kami opensource-kan, tetapi kami sudah menggunakan lisensi BSD-3 Clause, dimana dari ketiga point dalam lisensi penggunaan yang paling penting adalah:

Nama Ganapatih, dan juga nama SELURUH KONTRIBUTOR dari aplikasi GANAPATIH ini, tidak boleh digunakan sebagai ajang promosi oleh pihak siapapun dengan alasan apapun tanpa ijin baik tertulis maupun lisan dari pihak-pihak yang bersangkutan.

Untuk selebihnya tentang lisensi bisa dibaca lebih detail:

Web: https://github.com/ganapatih/web/blob/dev/LICENSE
Processor (python): https://github.com/ganapatih/processor/blob/master/LICENSE
Android : https://github.com/ganapatih/android/blob/master/LICENSE

DISCLAIMER

Aplikasi Ganapatih tidak dibuat untuk mengambil alih kepentingan atau wewenang siapapun atau dari pihak manapun itu!!

Tahap akhir dari aplikasi ini adalah sedang menunggu proses submit ke Google Play Store yang sedang diurus oleh beberapa orang teman.

~ Semoga bermanfaat

 

Sumber: http://tulisanhiraq.net/ganapatih-apps/

Tulisan ini sudah diubah beberapa bagian seperti typo, perbaikan EYD dan penambahan abbreviation.

Easy Install: CakePHP + Composer

Standar

Untuk mempermudah update, saya biasa menggunakan composer untuk instalasi CakePHP. Bila mengikuti instruksi di dokumentasi, cukup merepotkan karena harus update file webroot/index.php dan Config/bootstrap.php. Saya membuat file composer.json sendiri yang sudah di-inject sedikit script untuk mempermudah proses instalasi.

Copy isi dari gist berikut https://gist.github.com/mul14/7599875, lalu paste dan save dengan nama composer.json. Lalu jalankan composer install. Yup, proses download selesai, tinggal hapus bagian scripts. Anda siap menggunakan CakePHP.

Atau, anda cukup copy paste ini di terminal:

curl -L https://gist.github.com/mul14/7599875/raw > composer.json && composer install

Facebook Menyimpan Semua Data Anda

Standar

Tadi malam ketemu dengan Om Agung untuk copy video dokumentasi PHP Indonesia meetup. Dia barusan coba download semua data di Facebook dengan Facebook Archive. Fitur ini mirip dengan Google TakeOut yang bisa mengambil semua data kita di Facebook. Setelah melihat-lihat data yang sudah diambil sekilas… saya pikir ini sangat menarik karena mungkin saya bisa mempelajari sesuatu dari Facebook, seperti bagaimana Facebook menyimpan data-datanya.

Setelah saya juga coba ambil data di Facebook, ternyata… (seperti yang sudah pernah dibahas di beberapa media), saya cukup kaget karena melihat sendiri data-data yang selama saya pikir tidak disimpan. Bahkan berapa kali kita mengganti nama juga disimpan. Biasanya kalau saya membuat aplikasi, misalnya user mengganti nama, saya cukup lakukan update, bukan menambahkan data baru.

Anda bisa melihat sendiri mulai dari video, foto, profil anda pernah mengganti nama apa saja, previous relationship, iklan yang kita pernah klik atau tidak kita sukai, kapan anda klik iklan tsb, akun anda diakses kapan dari IP address mana, dengan browser apa, kapan deactivate akun, join di event apa, siapa yang anda unfriend, dan masih banyak lagi. Bahkan Facial Recognition Data anda (ada pada file photos/facedata.htm). Saya bisa membayangkan bagaimana data sebanyak ini bisa dimanfaatkan untuk apa saja O.o.

UPDATE (14 Des 2013)
Facebook saves everything you type – even if you don’t publish it

Bagaimana cara mengambil semua data anda di facebook?

Klik icon Gear di kanan atas. Lalu pilih Account Settings (mungkin Setelan kalau anda menggunakan Bahasa Indonesia).

Image

Lalu pada General (mungkin “Umum” kalau anda menggunakan Bahasa Indonesia), klik “Download a copy” (mungkin Unduh Salinan dalam Bahasa Indonesia) seperti terlihat pada gambar ke-2.

Image

Tekan tombol Start Archive, dan masukkan password.

Image

Tunggu sampai anda mendapatkan email dari facebook. Setelah mendapatkan email dari facebook, anda bisa mulai untuk download. Ukuran file bervariasi tergantung sebanyak apa data anda di facebook. Makin banyak video dan foto, tentunya semakin besar. Ukuran file yang saya download 87.1 MiB. Setelah selesai, anda bisa extract file facebook-username_anda.zip. Lalu buka file index.htm. Kira-kira begini penampakannya:

facebook-archive-timelineSo, what do you think?

Trik Membuat Any.Do Application Shortcut

Standar

Saya termasuk pengguna aplikasi GTD. Dari sekian banyak aplikasi GTD, Any.Do adalah salah satu yang favorit. Karena sederhana dan dapat digunakan di iOS, Android dan ada Chrome extension.

Sayangnya sampai sekarang, versi HTML5 belum ready. Jadi untuk membuka Any.Do di desktop PC, saya harus buka Chrome terlebih dahulu, lalu tekan icon Any.Do seperti terlihat pada gambar. Padahal saya terbiasa membuka Gmail, Facebook, Asana, Pivotal Tracker, dll hanya dengan sekali klik icon di taskbar.

Any.Do Chrome Extension

Berikut trik sederhana untuk membuat Any.Do application shortcut:

How to

  1. Install Any.Do Chrome extension dari Google PlayStore.
  2. Setelah install, copy text berikut
    chrome-extension://kdadialhpiikehpdeejjeiikopddkjem/index.html
  3. Paste text diatas ke Chrome Omnibox.
    Tada… sekarang sudah bisa buka Any.Do dengan full page.
  4. Langkah selanjutnya klik icon Settings/Customize and Control  di kanan-atas.
    Pilih Tools > Create application shortcuts (atau tekan tombol Alt+F, L, S)
  5. Pilih jenis application shortcut yang anda inginkan
    Any.Do Chrome Application Shortcut

Tadaa… sekarang anda sudah bisa langsung menggunakan Any.Do tanpa harus membuka Chrome seperti biasa ;)

UPDATE (21 Sept 2013)

Cara lain bisa langsung install Any.Do Chrome App.

Perbedaan mencolok gak ada sih. Tapi yang Chrome App icon-nya lebih bagus dan nggak bisa ditentukan default size-nya. Width-nya terlalu kecil :(