Ahad, 23 Jun 2013

#67: Prettify - Syntax highlighting of source code snippets in an html page

Emacs with syntax highlighting
Google Code Prettify adalah satu projek di google code yang boleh dicapai di link ini. Saya baru sahaja memasukkan skrip Prettify pada blog ini untuk membantu saya untuk highlight source code yang saya masukkan kedalam blog ini. Ia boleh mengenal dan melakukan syntax highlighter untuk beberapa bahasa seperti termasuk C and friends, Java, Python, Bash, SQL, HTML, XML, CSS, Javascript, Makefiles, dan Rust. It works passably on Ruby, PHP, VB, and Awk and a decent subset of Perl and Ruby. Ada beberapa lagi programming language yang boleh di support dengan menggunakan extension iaitu Apollo, Basic, Clojure, CSS, Dart, Erlang, Go, Haskell, Lisp, Scheme, Llvm, Lua, Matlab, MLs:F#, Ocaml,SML, Mumps, Nemerle, Pascal, Protocol buffers, R, S, RD, Scala, SQL, TCL, Latek, Visual Basic, CHDL, Wiki, XQ dan YAML. Cara untuk install script ini adalah amat mudah. Hanya perlu load script ini dengan menambahkan line <script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?autoload=true"></script> pada bahagian atas page (samaada di dalam <head> atau di permulaan <body>) dan ia sudah sedia untuk digunakan!

VIM pun ada syntax highlight
Untuk memasukkan snippet source code dengan syntax highlighter ini, anda perlu masukkannya diantara tag <pre class="prettyprint"> dan </pre>. Anda tak perlu memberitahu apakah language yang anda guna untuk pemilihan syntax highlighter kerana script ini akan cuba meneka secara automatik kod apakah yang anda gunakan. Tapi jika anda mahu lebih pasti (kerana bimbang script ini akan salah meneka kod anda, anda bolehlah tambahkan "language hint" pada bahagian class (contohnya <pre class="prettyprint lang-scm">. Untuk mengetahui lebih lanjut tentang ini, sila navigate ke link ini). Terdapat beberapa theme/skin yang boleh dipilih. Theme kesukaan saya adalah "Sunburst" kerana ia berlatarbelakang hitam seperti pada terminal dan mempunyai syntax highliter dengan warna yang lembut. Untuk menetapkan skin/theme pilihan anda, anda boleh specify pilihan anda dengan menambah ?skin=[skin pilihan anda] (contohnya ?skin=sunburst) pada akhir src dalam barisan load script tadi (jika anda memilih skin sunburst, maka <script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?autoload=true&skin=sunburst"></script>).

Ini adalah beberapa contoh source code snippets yang saya masukkan untuk tujuan demonstrasi script syntax highlighter ini. Saya tidak meletakkan "language hints" pada class kerana script ini mampu meneka apakah kod yang ia sedang proses. Ini adalah contoh dalam source code dalam bash, python, C dan HTML.

#!/bin/bash

# Fibonacci numbers
# Writes an infinite series to stdout, one entry per line
function fib() {
  local a=1
  local b=1
  while true ; do
    echo $a
    local tmp=$a
    a=$(( $a + $b ))
    b=$tmp
  done
}

# output the 10th element of the series and halt
fib | head -10 | tail -1

#!/usr/bin/python2.4

def fib():
  '''
  a generator that produces the elements of the fibonacci series
  '''

  a = 1
  b = 1
  while True:
    a, b = a + b, a
    yield a

def nth(series, n):
  '''
  returns the nth element of a series,
  consuming the earlier elements of the series
  '''

  for x in series:
    n = n - 1
    if n <= 0: return x

print nth(fib(), 10)

#include <stdio.h>

/* the n-th fibonacci number.
 */
unsigned int fib(unsigned int n) {
  unsigned int a = 1, b = 1;
  unsigned int tmp;
  while (--n >= 0) {
    tmp = a;
    a += b;
    b = tmp;
  }
  return a;
}

main() {
  printf("%u", fib(10));
}

<html>
  <head>
    <title>Fibonacci number</title>
    <style><!-- BODY { text-decoration: blink } --></style>
    <script src="foo.js"></script>
    <script src="bar.js"></script>
  </head>
  <body>
    <noscript>
      <dl>
        <dt>Fibonacci numbers</dt>
        <dd>1</dd>
        <dd>1</dd>
        <dd>2</dd>
        <dd>3</dd>
        <dd>5</dd>
        <dd>8</dd>
        &hellip;
      </dl>
    </noscript>

    <script type="text/javascript"><!--
function fib(n) {
  var a = 1, b = 1;
  var tmp;
  while (--n >= 0) {
    tmp = a;
    a += b;
    b = tmp;
  }
  return a;
}

document.writeln(fib(10));
// -->
    </script>
  </body>
</html>

#66: Static IP using freedns.afraid.org

IP saya berubah-ubah setiap kali saya memulakan sambungan baru ke ISP saya. Ini dipanggil Dynamic IP. Contohnya, IP saya sekarang adalah 111.212.122.121, selepas saya memutuskan sambungan dan sambung semula, bila periksa kembali IP saya menjadi 214.253.241.110 dan bila putus dan sambung kembali ke ISP, ia akan berubah lagi ke IP lain. Ia sangat random dan ditentukan oleh ISP saya sendiri. Tiada algorithm untuk meneka nombor IP seterusnya, jadi bagi sesiapa yang perlu tahu IP mereka sendiri, ia adalah menjadi satu masaalah yang rumit. Bayangkan, kalau anda mahu ke google.com dan instead hanya perlu taip "google.com" di address bar, anda perlu menaip 74.125.135.100 untuk ke google. Dan bila google menukar IP kepada nombor lain, anda tidak lagi dapat mengakses google di 74.125.135.100. Anda akan terkial-kial untuk meneka apakah nombor IP terbaru google.com. Berbanding menggunakan Static IP, bila anda taip "google.com" di address bar, anda akan dapat akses google walau apa pun IP google yang terbaru. "google.com" mungkin buat masa sekarang akan mengakses 74.125.135.100 dan bila google telah mengubah IP kepada 56.112.65.121, bila anda akses google.com, ia akan terus di redirect ke IP google terbaru 56.112.65.121.

Terdapat banyak perkhidmatan penyedia static IP di luar sana, tetapi kebanyakannya adalah berbayar. Bayaran biasanya tidaklah mahal, kebiasaannya dalam lingkungan $30 untuk setahun. Saya recommend anda diluar sana untuk menggunakan perkhidmatan IP berbayar kerana anda biasanya boleh memilih domain anda sendiri seperti google.com (anda boleh memilih domain anda sendiri "yournamehere.com", "nasi-ambeng.com", "pecel-lele.com" dan lain-lain). Tetapi jika anda perlukan IP untuk kerja-kerja biasa yang tidak serius, tak perlulah keluarkan wang untuk dapatkan static IP kerana ada beberapa servis yang boleh menyediakan anda static IP secara percuma. Anda boleh mempunyai static IP dengan menjadi sub-domain untuk domain lain. Instead mempunyai domain sendiri e.g "yournamehere.com", anda boleh mendapat sub-domain seperti "yournamehere.company.com". Ini sudah cukup bagus untuk kerja-kerja yang simple dan tidak serius (saya amat recommend anda untuk menggunakan domain sendiri untuk kerja-kerja serius dan commercial).

Add new account at freedns.afraid.org
Salah satu penyedia Static IP percuma adalah boleh didapati di laman web freedns.afraid.org. Saya sendiri telah berdaftar di lawan ini kerana ia mempunyai banyak domain yang saya boleh pilih untuk menjadi sub-domainnya. Antaranya adalah jumpingcrab.com, chickenkiller.com, crabdance.com, mooo.com, strangled.net dan beberapa lagi domain dengan nama yang teruk. Ya, nama yang teruk sebagai hukuman anda tidak menggunakan domain berbayar LOL! Tapi bagi saya tak apalah kerana hasrat untuk mendapat static IP sendiri tercapai walau menggunakan nama domain yang teruk. 

Sign-up di laman freedns.afraid.org adalah percuma. Bila anda sudah selesai mendaftar, bolehlah anda buat satu subdomain baru dengan klik "Subdomains" di menu sebelah kiri laman. Untuk saya, saya telah memilih domain mooo.com kerana ia adalah yang paling pendek. Terpulanglah anda nak pilih yang mana satu. LOL! Untuk Type, saya memilih "A". Taip pada ruang "Subdomain" bagi subdomain mengikut kehendak anda (dimana static IP anda adalah "[subdomain].mooo.com"). Di ruang "Destination" adalah ruang untuk anda letakkan IP komputer anda (tak tahu IP sendiri? periksa IP komputer anda di http://checkip.dyndns.com/). Klik "Save!" dan taniah, anda telah mempunyai static IP anda sendiri yang beralamatkan nombor IP komputer anda (nombor IP komputer anda "untuk masa sekarang". Ingat, IP boleh berubah-ubah setiap kali disambung ISP). 

Anda sekarang sudah boleh cuba ping static IP anda dan boleh lihat ia mengeluarkan IP komputer anda seperti contoh dibawah, ping bibubibu.mooo.com akan mengeluarkan IP 183.171.169.157 (seperti yang di isi di ruang "Destination" sewaktu register subdomain tadi).
mrharmonies@harmonium ~ $ ping bibubibu.mooo.com
PING bibubibu.mooo.com (183.171.169.157) 56(84) bytes of data.
64 bytes from 183.171.169.157: icmp_req=1 ttl=55 time=301 ms
64 bytes from 183.171.169.157: icmp_req=2 ttl=55 time=349 ms
64 bytes from 183.171.169.157: icmp_req=3 ttl=55 time=285 ms
Anda tentu gembira kerana bibubibu.mooo.com sekarang telah di redirect ke IP komputer anda. Sekarang anda boleh run apache di komputer rumah anda dan anda boleh lihat laman localhost anda di internet dengan mengakses bibubibu.mooo.com.

Tetapi, apa akan jadi kalau IP komputer anda sekarang telah bertukar? Jika bibubibu.mooo.com sekarang pointing kepada 183.171.169.157, ia akan tetap terus point ke IP 183.171.169.157 itu walaupun IP anda terlah bertukar ke nombor IP baru. Contohnya jika IP anda sekarang adalah 22.112.231.224, bila anda melakukan ping kepada bibubibu.mooo.com, output ping adalah masih pada 183.171.169.157. Ini bukanlah apa yang kita mahukan kerana sepatutnya bibubibu.mooo.com sekarang pointing ke IP baru anda sekarang iaitu 22.112.231.224.

Jadi, untuk update bibubibu.mooo.com yang hanya point 183.171.169.157 setiap masa kepada bibubibu.mooo.com yang akan sentiasa point kepada IP terkini anda, ia memerlukan sedikit workaround (walaubagaimanapun, ia amat senang dengan freedns.afraid.org). Logon ke akaun freedns.afraid.org anda dan navigate ke menu "Dynamic DNS". Di laman ini, anda boleh lihat di bahagian bawah page terdapat ruang yang menglistkan subdomain yang telah anda buat tadi (dynamic update candidates). Disitu anda dapat lihat ada 4 link yang terdiri dari "Direct URL", "Wget Script", "Curl Script", "Edit Record". Ini adalah beberapa cara untuk update IP anda untuk diassign pada subdomain anda tadi. Jika tadi bibubibu.mooo.com point kepada 183.171.169.157 sedangkan IP anda sekarang adalah 156.112.213.128, bila anda klik link "Direct URL", secara automatik freedns.afraid.org akan update bibubibu.mooo.com kepada 156.112.213.128. Anda boleh cuba ping semula untuk kepastian:
mrharmonies@harmonium ~ $ ping bibubibu.mooo.com
PING bibubibu.mooo.com (156.112.213.128) 56(84) bytes of data.
64 bytes from 156.112.213.128: icmp_req=1 ttl=55 time=301 ms
64 bytes from 156.112.213.128: icmp_req=2 ttl=55 time=349 ms
64 bytes from 156.112.213.128: icmp_req=3 ttl=55 time=285 ms
Nah! bibubibu.mooo.com sekarang telah point ke IP terbaru anda! Setiap kali IP anda berubah, hanya perlu klik link "Direct URL" tadi untuk update (yang sebenarnya membawa kepada masaalah lain). Adakah anda mampu untuk klik link "Direct URL" setiap kali IP anda berubah?

Disinilah "Wget Script" dan "Curl Script" berguna! Download salah satu file ini dan pastikan komputer anda ada aplikasi wget atau curl kerana 2 skrip ini adalah DOS batch script yang akan execute wget atau curl setiap 10 minit untuk update subdomain anda tadi. Saya sebagai pengguna Linux hanya perlu tambahkan cron job untuk setiap 10 minit:
*/10 * * * * wget -q -N --read-timeout=0.0 --waitretry=5 --tries=400 http://freedns.afraid.org/dynamic/update.php?ABC123abc123qwerty789QWERTY789== > /dev/null

Rabu, 19 Jun 2013

#65: OpenWrt, USB 3G Modem and MicroSD

Ruang untuk SimCard dan MicroSD card pada kebanyakan modem 3G
Modem 3G yang saya gunakan bersama router TP-Link TL-MR3420 adalah model ZTE MF180. Ia adalah modem 3G dwi fungsi yang mana ia boleh menjadi modem untuk servis 3G dan juga storage device bila kad MicroSD dimasukkan kedalamnya. Ia adalah fungsi yang baik kerana modem saya yang sebelum ini hanya modem semata-mata. Sekurang-kurangnya saya boleh menyimpan sedikit data/file didalam modem yang juga boleh bertindak sebagai pendrive.

Walaubagaimanapun, sewaktu pertama kali saya plug modem saya pada router saya yang telah saya flash OpenWrt, modem saya gagal untuk membuat sambungan. Lampu hijau berkelip-kelip, tapi ia tidak bersambung. Secara normalnya, sewaktu saya memakai stock firmware dari TP-Link, setelah 1 minit plug in pada router, sambungan 3G/HSDPA akan bersambung secara automatik. Di OpenWrt pula, seakan modem saya tidak dapat dikenali. Saya cuba menyiasat tentang ini dan akhirnya saya terjumpa satu artikel berkaitan masaalah ini. Katanya, hal ini terjadi kerana OpenWrt mengenali 3G modem saya sebagai CD drive (storage device). Modem dwi fungsi (3G dan MicroSD storage) mewujudkan satu "konflik" didalam OpenWrt kerana OpenWrt mengenali modem jenis ini sebagai storage sebelum mengenalnya sebagai 3G modem. Jadi, artikel itu mengesyorkan untuk "menghapuskan" fungsi storage pada 3G modem ini. Caranya ialah dengan meng"eject" device CD melalui command line sdparm --command=eject //dev/sg0. Dengan itu, storage device telah di unmount dan sekarang hanya tinggal 3G modem. Rujuk link ini untuk mengetahui lebih lanjut tatacara ini.

#64: Network Router - A CPU without display with only 4MB storage

TP-Link TL-MR3420
Setelah berjaya menukar firmware router saya kepada OpenWrt, saya akhirnya berjaya boot kedalam firmware baru yang berasaskan Linux. Web interface juga baru yang boleh di themekan mengikut kemahuan saya(default untuk router saya adalah theme twitter bootstrap) dan juga boleh menggunakan telnet serta SSH melalui ip router, saya mula merasakan router saya ini sebenarnya bukan hanya network router, tapi sebuah komputer yang lengkap! Ia ada storage, RAM, processor, network card dengan 1 WAN dan 4 LAN, wifi transmitter, dan untuk TL-MR3420, ia juga ada 1 port USB 2.0!

Timbul satu kepuasan dalam diri saya bila berjaya menukar stock firmware kepada firmware berasaskan Linux ini kerana akhirnya router saya dapat menunjukkan potensi serta kemampuan sebenarnya yang sebelum ini hanya terhad untuk aktiviti routing network sahaja. Disebabkan ini juga fikiran saya mulai terbuka untuk melihat hardware-hardware seperti ini sebenarnya mempunyai banyak potensi tetapi dihadkan oleh software. Saya hanya melihat router saya ini sebagai satu alat yang passive dan tak boleh buat apa-apa selain network routing dan sekarang setelah di flash dengan firmware baru, saya mula melihatnya sebagai sebuah CPU yang sentiasa bersambung dengan internet, boleh run application seperti apache web server, openvpn, tor dan ia boleh hidup dengan tenaga eletrik sebanyak hanya 9 volt!
mrharmonies@harmonium ~ $ ssh root@192.168.1.1
root@192.168.1.1's password:


BusyBox v1.19.4 (2013-01-08 15:26:10 WIT) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
               U N L E A S H E D - Kernel 3.3.8 --->>>>
 ATTITUDE ADJUSTMENT (bleeding edge) ------------------
  * 1/4 oz Beras
  * 1/4 oz Kencur
  * 1/4 oz Kunir
  * 1/4 oz Jane
 --------------------cindy.wijaya----------------------
                   FORSAT | KASKUS
           www.facebook.com/groups/openwrt
   http://www.kaskus.us/showthread.php?t=10124215
             http://forum.openwrt-id.org
 ******************************************************
                      website:
               openwrt.hackshare.org (int)
               openwrt.agromapia.com (iix)
 ------------------------------------------------------

root@OpenWrt:~#
Setelah boot router, anda sudah boleh connect ke router anda melalui ssh atau telnet. Gunakan apa sahaja client telnet atau ssh yang anda mahu, dan connect ke IP address router (untuk saya, IP router adalah 192.168.1.1) contohnya dengan command telnet 192.168.1.1 untuk connect ke port 23 atau ssh root@192.168.1.1 untuk connect ke port 22 dengan username "root". Jika tidak ada apa-apa masaalah, skrin seperti diatas akan terpapar dan anda telahpun enter command line di router anda. Banyak command line telah tersedia didalam terminal ini kerana firmware telah disediakan bersama pakej BusyBox. Untuk install package baru, anda hanya perlu menggunakan package manager (ala apt-get di Debian) dengan command opkg. Contohnya, untuk install hanya perlu guna command opkg install openvpn dan secara automatik opkg akan install applikasi baru OpenVPN di router anda tanpa anda perlu bimbang tentang dependency yang melibatkan package-package lain. Ini adalah sangat menyenangkan dan menjimatkan banyak masa!

Install application Linux di router adalah amat mudah dengan bantuan opkg, walaubagaimanapun, terdapat 1 masaalah. Default storage pada router adalah hanya 4MB! Saiz firmware OpenWrt adalah lebih kurang 3.8MB dan ini bermakna, storage pada router hanya ada beberapa ratus kilobyte sahaja. Oleh itu, adalah mustahil untuk install apa-apa package (walaupun mempunyai tool yang cukup untuk install, tapi keadaan storage tidak membenarkan) didalam default storage pada router.

Tapi, bagi pengguna TP-Link TL-MR3420, anda bernasib baik kerana anda mempunyai 1 USB port! USB port 2.0 ini sebenarnya boleh digunakan (selain untuk menyambung modem 3G) boleh digunakan untuk menyambung external storage. Hanya perlu cucuk sahaja USB Pendrive pada USB port di router, USB Pendrive anda akan dikenal sebagai storage baru. Akan tetapi, beberapa workaround perlu dilakukan antaranya pendrive anda perlulah di format kepada partition linux swap dan partition ext2. Untuk lebih lanjut, sila ikuti workaround yang ditulis oleh Cindy Wijaya (kudos) mengenai cara untuk tambah storage pada router dan menjadikan USB Pendrive anda sebagai root storage (pendrive anda boleh di mount sebagai "/") dan anda boleh memiliki storage mengikut kapasiti pendrive anda (prosedur exroot).

Saya ada 2.54 GB storage pada router.
Anda tidak perlu space yang sangat besar untuk router. Memadai 1 atau 2 GB sudah cukup untuk install banyak application didalamnya dan menyimpan banyak data. Banyak aplikasi boleh didapati melalui opkg, dan antara beberapa aplikasi yang saya install adalah openvpn, tor dan vsftpd. Aplikasi openvpn adalah untuk menyambung sambungan ke Virtual Private Network, tor adalah untuk internet anonymity dan vsftpd adalah satu daemon ftp server untuk membolehkan anda connect router anda melalui ftp (memudahkan urusan upload dan download file dari komputer ke router).

#63: Network Routers - A CPU without display

Hi, berjumpa lagi kita. Dalam selang lebih 2 minggu dengan post sebelum ini, saya sebenarnya banyak perkara telah berlaku. Anak saya Omar Shahnaz telah diadmitkan di wad (alhamdulillah telah sembuh sepenuhnya sekarang), saya juga telah mendapat serangan arthritis (alhamdulillah juga telah sembuh), saya telah melanggan perkhidmatan VPN (Virtual Private Network) dan juga saya telah mengubah sistem operasi network router saya daripada stock firmware dari TP-Link kepada firmware OpenWRT.

TP-Link TL-MR3420
Sewaktu mendaftar untuk servis VPN saya telah mendapat satu idea untuk setkan router saya sebagai satu access point yang tersedia menggunakan sambungan VPN. Saya merupakan pengguna komputer yang sangat mementingkan isu keselamatan dan VPN adalah inisiatif saya untuk internet yang lebih selamat (sebelum ini saya menggunakan Tor Onion Router). Berbanding untuk setting setiap komputer/telefon bagi menggunakan sambungan VPN, saya fikir adalah lebih baik jika saya setting VPN pada router yang saya connect pada semua komputer/telefon (melalui wifi). Di belakang router saya terdapat 4 sambungan LAN, jadi saya boleh sambungkan 4 komputer saya kepada VPN tanpa perlu saya setting VPN di setiap komputer (termasuk juga wifi). Saya telah bertanya pada support service perkhidmatan VPN yang saya langgani tentang perkara ini dan mereka memberikan jawapan positif. Katanya, ia boleh dilakukan dengan menjalankan aplikasi openvpn di router dan setiap sambungan di router akan menikmati sambungan VPN. Ia boleh dilakukan dengan "reflash" semula router dengan firmware third party yang menggunakan sistem operasi Linux menggantikan stock firmware dari TP-Link yang datang bersama router yang mempunyai fungsi terhad. Teknik ini sebenarnya adalah seperti memformat komputer untuk menukar operating system asal kepada operating system baru.

Setelah menjalankan research di internet, saya telah simpulkan bahawa terdapat 2 firmware yang compatible kepada model router saya iaitu, TP-Link TL-MR3420. Firmware tersebut adalah DD-WRT dan OpenWRT. Setelah menyelami lebih lanjut mengenai "flashing" router ini, saya dapati prosedur ini adalah sangat berisiko dan mungkin boleh merosakkan router (atau dipanggil "brick". ya, router boleh rosak dan langsung tak berfungsi seperti "batu-bata"). Pemilihan firmware yang betul juga penting kerana terdapat banyak model router diluar sana yang mempunyai no model yang hampir sama. Inilah yang berlaku pada saya. Awalnya saya fikir DD-WRT boleh digunakan pada model router saya. No model TL-MR3420 terpapar dalam list router yang compatible dengan DD-WRT. Bila saya selidik lebih mendalam, rupa-rupanya TP-Link mengeluarkan 2 model router yang mempunyai no model yang sama, TL-MR3420 version 1 dan TL-MR3420 version 2. Router TL-MR3420 version 1 menggunakan processor AP99 Atheros AR7241 manakala TL-MR3420 version 2 menggunakan processor AP121 Atheros AR9341. Kesilapan mengenalpasti seperti ini boleh mengundang router anda menjadi brick! Saya bernasib baik kerana secara tidak sengaja find out tentang ini.

Setelah mengenalpasti model router, bolehlah pergi ke http://downloads.openwrt.org/ untuk download firmware mengikut model router anda. Saya menggunakan firmware OpenWrt Attitude Adjustment 12.09-rc1 yang disediakan oleh Cindy Wijaya (kudos) seorang programmer dari Indonesia (openwrt-ar71xx-generic-tl-mr3420-v2-squashfs-factory.bin).

Teknik untuk flash adalah mudah. Cuma perlu buka alamat router di browser (untuk model router saya, default adalah 192.168.0.1) dan masukkan user/password admin untuk router. Setelah itu pilih menu sebelah kiri System Tools > Firmware Upgrade. Pilih file yang didownload tadi (untuk router saya, file openwrt-ar71xx-generic-tl-mr3420-v2-squashfs-factory.bin) dan klik Upgrade. Setelah lebih kurang 5 minit, router telah siap boot operating system baru buat pertama kali dan ia boleh diakses dengan default ip 192.168.1.1.

OpenWrt Attitude Adjustment 12.09-rc1. Webinterface using Luci and SSH using putty.

Isnin, 3 Jun 2013

#62: "Insomnia" Among Babies

Note: Tajuk berat, saja je nak bagi gempak. Artikel ni takde kaitan dengan insomnia. Kalau anak anda betul-betul ada insomnia, anak anda mungkin memerlukan nasihat dari pakar. Disini hal sebenarnya ambe nok konsikan adalah anak ambe yang memang sangat susah nak tidur waktu malam (tapi waktu siang tidur dengan nyenyak dan lama). Sejak lahir sampai sekarang memang jarang benar tidur awal malam. Tiap-tiap malam ambe memang kena bergilir dengan wife ambe untuk jaga anok ambe yang waktu tidurnya seakan tertukar yang sepatutnya tidur waktu malam dan berjaga waktu siang, sebaliknya anok ambe berjaga waktu malam dan tidur waktu siang. Jadi bagi ambe ini bukan insomnia sebenarnya.

Omar Shahnaz sejak lahir sampai sekarang susah untuk tidur
Tapi itulah masaalah sehari-hari bersama anok ambe. Alhamdulillah, walau gilir-gilir tidur, ambe masih boleh bekerja dengan baik di waktu siang (tapi badan rasa letih). Tapi ambe fikir sampai bila ambe nak terus dengan perangai anok ambe yang susah tidur malam begini. Ambe sebenarnya dah banyak berusaha untuk bantu dia tidur. Guna relaxing music, bagi makan banyak sebelum tidur, letak wangian lavender pada bantal, generate sound pink noise, letak buai manual dan eletrik, bedung, pasang aircond letak suhu rendah, mandi air suam, etc, tapi semuanya tak berkesan. Kadang-kadang naik juga temper ambe bila badan kita letih tapi tak dapat rehat waktu malam. Ada pernah sekali ambe terfikir untuk bagi ubat Phenergen (Promethazine) untuk buat anok ambe mengantuk, tapi bila ambe baca kontraindikasi ubat ni, tak boleh bagi pada bayi bawah umur 2 tahun. Tak jadi bagi. Ambe bingung memikirkan cara lain untuk bantu anok ambe tidur.

Johnson's Baby BedTime Bath.
Sehinggalah beberapa hari lepas ambe pegi shopping pasaraya dekat dengan rumah ambe, ambe terjumpa satu mandian bayi tertulis "Bedtime Bath" dari Johnson & Johnson. Ambe grab terus. Sebenarnya ambe memang ada produk line "unggu" J&J tapi ambe tok guna. Ambe ada dapat hadiah dari kawan ambe iaitu satu set barang J&J tapi ambe dok sentuh langsung sebab ambe dok suka letak cream pada kulit anok ambe. Rasa "belengas" (melekit). Ambe terlalu aggressive mencari cara alternatif untuk bantu anok ambe tidur sampai ambe lupa benda yang ada didepan ambe lansung ambe dok pernah cuba.

Balik rumah, ambe excited menunggu waktu malam untuk mandikan anok ambe dengan mandian ni. Lebih kurang pukul 10 malam ambe mandikan anok ambe dengan mandian ni. Mandian ni rasa "thick" sikit dari mandian yang biasa ambe guna untuk anok ambe. Biasanya bila ambe bilas mandian biasanya memang terus hilang rasa licin sabun pada kulit anok ambe. Bila guna mandian ni, bila ambe jirus berkali-kali pun memang masih terasa licinnya. Rasa licin dan seperti "creamy" seperti pakai krim pelembut pada kulit. Baunya juga lebih kuat dari bau mandian yang biasa ambe guna. Memang tertulis pada botol mandian ni tentang penggunaan aroma iaitu "NaturalCalm" aromas yang nampaknya di threadmark oleh J&J. Ambe bukanlah pentafsir aroma yang baik tapi bagi ambe, bila ambe tercium bau ni, ambe rasa ia adalah bau yang "berat". "Berat" bukan bermaksud kuat atau teruk, tapi bila tercium, ambe terasa seperti "malas". Itu pada pendapat ambe sajalah. Memang ia berlawanan dengan bau-bau yang segar seperti bau buah-buahan atau bunga-bunga yang menyegarkan. Johnson's Baby BedTime Bath wangi dan calming.

Sesudah mandi, ambe terus lap-lap keringkan badan anok ambe. Sesudah kering, bila ambe sentuh badan anok ambe, ambe dapat rasa satu lapisan lembut di kulit anok ambe seperti dah disapu krim. Lepas tu ambe ambil pula Johnson's Baby BedTime Oil dan ambe sapu di seluruh badan anok ambe. Bau yang sama dengan bau mandian tadi. Sebenarnya ada lotion untuk disapu, tapi ambe tak ada lotion tu jadi instead ambe sapu bedtime oil. Ambe rasa lebih baik untuk guna lotion sebab bedtime oil rasa sangat berminyak (tapi tak lama sebab bila ia dah meresap dalam badan, ia tak rasa berminyak lagi).

Terus ambe pakaikan pakaian pada anak ambe dan pada waktu ini anok ambe masih aktif jadi ambe tinggal anok ambe dalam baby cort bersama mainan-mainannya. Dok sampai 15 minit, ambe mula lihat anok ambe mula menunjukkan tanda-tanda mengantuk. Matanya jadi kuyu dan dah tak aktif macam sekejap tadi. Wife ambe pun terus baringkan dia dan suapkan susu. Sekejap saja lepas tu anok ambe terus tertidur!

Ambe bukan bekerja dengan J&J tapi ambe nok recommend kepada ibu-bapa di luar sana yang ada masaalah baby susah tidur malam, cubalah Johnson's BedTime ni. Kalau tak silap ambe, ada bedtime lotion, oil dan mandian. Semoga dapat membantu ibu-bapa di luar sana dari migraine dan high-temper akibat tak cukup tidur. TQ for reading.