tag:blogger.com,1999:blog-44913913185160455202024-03-13T19:21:08.961+07:00{ emaniacs }Hack with ProgrammingUnknownnoreply@blogger.comBlogger82125tag:blogger.com,1999:blog-4491391318516045520.post-46728527462219540542014-05-31T00:46:00.000+07:002014-05-31T00:46:10.777+07:00Arsenalisme<span style="font-size: x-large;">
Arsenalisme adalah sebuah paham tentang kesetiaan terhadap sesuatu yang sangat potensial.</span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-74905431063203866542014-04-07T00:25:00.000+07:002014-04-07T14:05:48.720+07:00Git command: stashSecara bahasa <i>stash</i> artinya menyimpan, ini juga yang dilakukan oleh <b>git</b> ketika melakukan perintah ini.<span class="fullpost">
</span><br />
<div>
Ketika melakukan aktifitas editing pada source-code yang belum selesai, tapi belum ingin di<i>commit</i> dan harus pindah ke branch lain, maka perintah stash bisa digunakan.</div>
<div>
<br /></div>
<div>
Beberapa perintah sederhana git stash.</div>
<div>
<br /></div>
<div>
<b>$ git stash</b></div>
<div>
Perintah ini akan menyimpan semua perubahan pada file yang kita edit.</div>
<div>
<br />
<a name='more'></a><br /></div>
<div>
<b>$ git stash save namaStash</b></div>
<div>
Perintah ini sama dengan perintah sebelumnya namun kita menentukan sendiri namanya.</div>
<div>
<br /></div>
<div>
<b>$ git stash list</b></div>
<div>
Perintah ini akan menampilkan daftar dari perintah stash yang pernah kita lakukan.</div>
<div>
Contoh output:</div>
<div>
<div>
<div>
<div>
<b><i>ardi@dtk:~/ $ git stash list</i></b></div>
<div>
<b><i>stash@{0}: WIP on master: e94b03b Setelah stash</i></b></div>
<div>
<b><i>stash@{1}: WIP on master: e94b03b Setelah stash</i></b></div>
<div>
<b><i>stash@{2}: WIP on wew: 62d7aa1 Update from wew</i></b></div>
<div>
<b><i>stash@{3}: WIP on wew: 62d7aa1 Update from wew</i></b></div>
<div>
<b><i>stash@{4}: On master: satu sampe lime</i></b></div>
<div>
<b><i>ardi@dtk:~/ $</i></b></div>
</div>
</div>
</div>
<div>
<b><i><br /></i></b></div>
<div>
<b>$ git stash apply</b></div>
<div>
Perintah ini akan mengembalikan kondisi file yang sebelumnya kita simpan, kondisi yang diambil adalah kondisi yang paling atas atau <b><i>stash@{0}</i></b></div>
<div>
<br /></div>
<div>
<b>$ git stash apply namaStash</b></div>
<div>
Perintah ini sama dengan perintah <b>git stash apply</b>, bedanya kita menentukan sendiri kondisi mana yang akan diaplikasikan ke repository kode kita.</div>
<div>
<br />
Berikut diatas adalah beberapa perintah <b>stash</b> yang sering saya gunakan, untuk penggunaan lebih lanjut bisa dilihat di manual dari git tentang stash <b>$ git help stash</b>.<br />
<br />
NB: Perintah stash hanya berpengaruh terhadap file yang telah ditrack oleh git, termasuk file yang telah di <b>git add</b><br />
<b><br /></b>
<b><br /></b>
Source:<br />
<br />
<ul>
<li><a href="http://git-scm.com/book/en/Git-Tools-Stashing">http://git-scm.com/book/en/Git-Tools-Stashing</a></li>
<li><b>$ git help stash</b></li>
</ul>
</div>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-44714832024889907902014-01-06T17:10:00.001+07:002014-01-06T18:19:48.104+07:00Alam semesta berkabutDalam perjalanan turun dari gunung ciremai<br />
diantara pos arban dan cigowong<br />
aku berpisah tidak begitu jauh<br />
dan berjalan sendiri ditengah hutan.<br />
Ketika suara binatang cukup jelas,aku merentangkan kedua tanganku,<br />
kututup mata ini, kuresapi suara hutan, suara alam<br />
dan tiba-tiba, aku merasakan jiwaku seperti terangkat dari tubuhku<br />
aku bisa melihat dengan jelas tubuhku sedang merentangkan kedua tangan,<br />
disebelah sebuah pohon.<br />
Seketika dengan kecepatan yang hebat aku terangkat semakin tinggi,<br />
sehingga aku melihat bumi semakin lama semakin kecil,<br />
dan aku melihat benua afrika hanya sebesar telapak tangan.<br />
Dan semakin cepat aku semakin terangkat semakin tinggi<br />
bumi semakin kecil dan bercahaya,<br />
banyak sekali cahaya yang bertebaran dimana-mana yang lebih kecil atau lebih besar<br />
dengan mata aku melihat alam semesta berkabut<br />
seperti melihat malam dari sebuah kaca yang berembun.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw_MVtfDvtJLNggjeCNKeNWiqpeJsXqziVs-geZOzl3Rv1MdbIlcwGLmU1Tol6QcaTn7jtPK9a1YtIazpcbIbkbOhp9-6evA7esZ1egADHB4QZcQOfv5Z1rVZzzgYEmk4aLc-yuJEa1nI/s1600/IMG_20140105_103642_297.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw_MVtfDvtJLNggjeCNKeNWiqpeJsXqziVs-geZOzl3Rv1MdbIlcwGLmU1Tol6QcaTn7jtPK9a1YtIazpcbIbkbOhp9-6evA7esZ1egADHB4QZcQOfv5Z1rVZzzgYEmk4aLc-yuJEa1nI/s1600/IMG_20140105_103642_297.jpg" height="400" width="225" /></a></div>
<br />
<br />
<br />
<span class="fullpost">
</span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-68154877532205846172013-11-19T19:10:00.000+07:002013-11-19T19:10:15.352+07:00Jingga dilangit JakartaSel Nov 19 18:51:29 WIT 2013<span class="fullpost">
</span><br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-UqjAFunznsM/UotRNdaVgWI/AAAAAAAACIc/RfUSYyY3VYE/s1600/IMG_20131119_175836_440.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-UqjAFunznsM/UotRNdaVgWI/AAAAAAAACIc/RfUSYyY3VYE/s320/IMG_20131119_175836_440.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-3MULX4fA8cY/UotRNKoW8nI/AAAAAAAACIY/mXjlh5n6u8I/s1600/IMG_20131119_175858_148.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-3MULX4fA8cY/UotRNKoW8nI/AAAAAAAACIY/mXjlh5n6u8I/s320/IMG_20131119_175858_148.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-yjaB1dgz2aQ/UotRNLBsyiI/AAAAAAAACIg/88IS6VBwxc4/s1600/IMG_20131119_175941_341.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-yjaB1dgz2aQ/UotRNLBsyiI/AAAAAAAACIg/88IS6VBwxc4/s320/IMG_20131119_175941_341.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-tGJ-9ICSTtM/UotROFOzETI/AAAAAAAACIw/5lYOGRGNg4A/s1600/IMG_20131119_180444_834.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-tGJ-9ICSTtM/UotROFOzETI/AAAAAAAACIw/5lYOGRGNg4A/s320/IMG_20131119_180444_834.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-33njfVil87k/UotRPyvn_LI/AAAAAAAACJU/230B_jp-cBE/s1600/IMG_20131119_180934_066.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-33njfVil87k/UotRPyvn_LI/AAAAAAAACJU/230B_jp-cBE/s320/IMG_20131119_180934_066.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-oiIb16whUI4/UotRPDNVJBI/AAAAAAAACJA/RjE16UTidQw/s1600/IMG_20131119_180739_076.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-oiIb16whUI4/UotRPDNVJBI/AAAAAAAACJA/RjE16UTidQw/s320/IMG_20131119_180739_076.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-D1YTdGB9qdE/UotROmVpqsI/AAAAAAAACJE/YsTu7HYd_6s/s1600/IMG_20131119_180545_028.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-D1YTdGB9qdE/UotROmVpqsI/AAAAAAAACJE/YsTu7HYd_6s/s320/IMG_20131119_180545_028.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-yFmIGlxhYdg/UotROjLZC5I/AAAAAAAACJI/UcKog0A4CZ0/s1600/IMG_20131119_180514_909.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-yFmIGlxhYdg/UotROjLZC5I/AAAAAAAACJI/UcKog0A4CZ0/s320/IMG_20131119_180514_909.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-8QRBHp1D-1M/UotRP7W9phI/AAAAAAAACJM/M7kzx3S9nyo/s1600/IMG_20131119_180941_759.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-8QRBHp1D-1M/UotRP7W9phI/AAAAAAAACJM/M7kzx3S9nyo/s320/IMG_20131119_180941_759.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-PSJj1SQCZZc/UotRQLT3g8I/AAAAAAAACJQ/2eUZz1kN8-g/s1600/IMG_20131119_181305_481.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-PSJj1SQCZZc/UotRQLT3g8I/AAAAAAAACJQ/2eUZz1kN8-g/s320/IMG_20131119_181305_481.jpg" width="320" /></a></div>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-39339264656831578322013-05-28T17:51:00.002+07:002013-05-31T14:49:13.425+07:00Mendeteksi keanehan/kegilaan menggunakan matematika<div>
<h3>
<b>Intro oi, ini intro..</b></h3>
<div>
Sekali lagi ini adalah intro..</div>
<div>
Dalam hal ini bilangan ganjil saya analogikan sebagai sesuatu yang aneh atau gila, dan bilangan genap sebagai sesuatu yang normal. Dan dengan operasi matematika kita bisa mendeteksi seseorang itu berpotensi menjadi gila atau tidak.</div>
<div>
<br /></div>
<br />
<b>Berdasarkan penjumlahan:</b></div>
<ol>
<li>Bilangan ganjil + bilangan ganjil hasilnya bilangan genap.</li>
<li>Bilangan ganjil + bilangan genap hasilnya bilangan ganjil.</li>
<li>Bilangan genap + bilangan ganjil hasilnya bilangan ganjil.</li>
<li>Bilangan genap + bilangan genap hasilnya bilangan genap.</li>
</ol>
<div>
<br /></div>
<div>
Misalkan seorang yang gila berdiskusi dengan seorang yang normal, tentu saja ini akan menjadi sebuah keanehan, tapi jika orang gila berdiskusi dengan sesama orang gila tentu ini tak bisa dikatakan sesuatu yang aneh atau gila. :)</div>
<div>
<br />
<a name='more'></a></div>
<div>
Kesimpulan pada penjumlahan: <i>Sesuatu yang aneh adalah apabila satu hal digabung dengan sesuatu yang tidak sama dengannya.</i></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Berdasarkan perkalian:</b></div>
<div>
<ol>
<li>Bilangan ganjil * bilangan ganjil hasilnya bilangan ganjil.</li>
<li>Bilangan ganjil * bilangan genap hasilnya bilangan genap.</li>
<li>Bilangan genap * bilangan ganjil hasilnya bilangan genap.</li>
<li>Bilangan genap * bilangan genap hasilnya bilangan genap.</li>
</ol>
<div>
<br /></div>
<div>
Kesimpulannya: <i>sesuatu yang aneh itu adalah jika sesuatu yang aneh dilipatgandakan dengan sesuatu yang aneh.</i><br />
<i><br /></i>
Dalam kehidupan ini bisa diibaratkan jika seorang yang gila menuduh temannya yang juga gila sebagai orang gila dan temannya tersebut tidak terima jika dikatakan gila, sehingga berlipat gandalah kegilaan tersebut,,,</div>
<div>
<br /></div>
<div>
<b>Berdasarkan pengurangan:</b></div>
</div>
<div>
<ol>
<li>Bilangan ganjil - bilangan ganjil hasilnya bilangan genap.</li>
<li>Bilangan ganjil - bilangan genap hasilnya bilangan ganjil.</li>
<li>Bilangan genap - bilangan ganjil hasilnya bilangan ganjil.</li>
<li>Bilangan genap - bilangan genap hasilnya bilangan genap.</li>
</ol>
<div>
<br /></div>
<div>
Kesimpulannya, <i>sesuatu itu akan aneh apabila dibuang bagian yang tidak sama dari sesuatu tersebut.</i><br />
<i><br /></i></div>
</div>
<div>
Contohnya, jika orang gila dibuang bagian normalnya maka akan menjadi tambah gila, begitu juga orang yang normal jika dibuang bagian gila-nya<br />
<br /></div>
<div>
<b>Berdasarkan pembagian:</b></div>
<div>
<ol>
<li>Bilangan ganjil / bilangan ganjil hasilnya bilangan ganjil atau bilangan berkoma.</li>
<li>Bilangan ganjil / bilangan genap hasilnya bilangan berkoma.</li>
<li>Bilangan genap / bilangan ganjil hasilnya bilangan berkoma.</li>
<li>Bilangan genap / bilangan genap hasilnya bilangan genap / bilangan berkoma.</li>
</ol>
<div>
<br /></div>
</div>
<div>
Sekarang ada jenis bilangan baru yaitu bilangan berkoma dan menurut seseorang yang tak ingin disebutkan namanya bilangan berkoma itu juga termasuk aneh. Okay, jadi bilangan berkoma juga dianggap sesuatu yang aneh.<br />
<br />
Misalkan 20 / 2, maka 20 adalah pembilang dan 2 adalah penyebut maka 20 adalah kelipatan dari 2.<br />
Kesimpulannya: <i>didalam pembagian, sesuatu itu tidak aneh hanya jika pembilang adalah kelipatan dari penyebut.</i><br />
<i><br /></i>
Ini lumayan susah dibuat analoginya, silahkan anda berkreasi sendiri. <i>alasan klasik kalo gak bisa ngejelasin sesuatu, :))</i><br />
Tapi satu yang pasti jangan mau dibagi-bagi (dipecah) karena peluang menjadi gila sangat besar disini.<br />
<br />
<br />
Hmm,, postingan yang aneh...<br />
Ok brother, see you next life yea<br />
<br /></div>
<span class="fullpost">
</span>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4491391318516045520.post-20914159341561185282013-05-20T19:30:00.000+07:002013-05-28T17:52:22.906+07:00CTF Online EAsy Crypto 1 (EASY)Text yang akan diencrypt adalah seperti ini<span class="fullpost">
</span><br />
<br />
<pre>GCW ESFLST, HMLSJDSZ AFA:
QZSLQFN R LFSFX PFWJSF GFMFLNF IFS XJINM,
NSIFM IFS LNLNM HNSYF PNYF IN IZSNF DFSL KFSF.
SDFBFRZ IFS SDFBFPZ INOTITMPFS QFSLNY,
IFS FSFP PNYF FPFS QFMNW IN HFPWFBFQF.
FIF UZS RFYF PNYF FPFS YJWZX GJWYFYFUFS MNSLLF GJWFGFI-FGFI QFRFSDF.
OZBNYFPZ DFSL HFPFU RJXPNUZS YFSUF IFSIFSFS
ZSYZPRZ MNIZUPZ YJWGZPF.
BFWSF-BFWSF PJMNIZUFS GJWUJSIFW-UJSIFW RJSFPOZGPFS
NXDFWFY-NXDFWFY LJYFWFS FOFNG RJSLLJWFPPFS UJSFPZ.
YFSUF XJPJOFU UZS QZUZY IFWN PJSFSLFS UFIFRZ
FPZ GJWLJWFP RJSZQNX UFRUQJY, RJRUJWYFMFSPFS PJMNIZUFS.
</pre>
<br />
Clue pertamanya adalah julius, yang berarti ini menggunakan encryption jenis Caesar cipher (<a href="http://en.wikipedia.org/wiki/Caesar_cipher">http://en.wikipedia.org/wiki/Caesar_cipher</a>), enkripsi jenis ini menggeser karakter tertentu sejumlah x, dan x ini adalah kuncinya.<br />
<br />
Untuk mendapatkan kuncinya saya pake sistem bruteforce, karena maksimum jumlah key adalah 26 sebanyak jumlah bilangan (A-Z).<br />
<br />
Sebelumnya saya bikin enkriptor dengan python, berikut kodenya<br />
<a name='more'></a><br />
<pre class="prettyprint lang-python linenums"># julius.py
from string import maketrans
def julius(text, shift):
alpha = unicode('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
enc = alpha[shift:] + alpha[:shift]
table = maketrans(alpha, enc);
return text.translate(table)
</pre>
<br />
Untuk melakukan brute force tidak perlu menggunakan semua text yang akan didecrypt, dalam hal ini saya ambil <b>HMLSJDSZ</b>.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGOaKNeE17kz1aspHiIplOkU6tSHzTWLGAocF1_S-gRIxcU14MgrHuFfUvnTLH8WrsYcEVjyAbMENBUquASYkKG98RbEeYrq5Zsnupxopna_saoJbwZOnNUa_U3kuMN9FOuhuZw5uCI3Q/s1600/ctf-caesar-crypto.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="323" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGOaKNeE17kz1aspHiIplOkU6tSHzTWLGAocF1_S-gRIxcU14MgrHuFfUvnTLH8WrsYcEVjyAbMENBUquASYkKG98RbEeYrq5Zsnupxopna_saoJbwZOnNUa_U3kuMN9FOuhuZw5uCI3Q/s400/ctf-caesar-crypto.jpeg" width="400" /></a></div>
<br />
Terlihat Keynya adalah 8, sekarang decrypt semua textnya.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPMCAjprP-19G_X3f4yxP2mvDMNw7YzFd0QA2buO5tU2_WestqoFFt7mEJDYgV4EqzHY6foe1iQ7EnU83R-otkDCOhKF03y4aMFj1bxRjZviaUUP4yAm2IM5bk_tk5703oOrpi1DqdUR4/s1600/ctf-caesar-crypto2.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPMCAjprP-19G_X3f4yxP2mvDMNw7YzFd0QA2buO5tU2_WestqoFFt7mEJDYgV4EqzHY6foe1iQ7EnU83R-otkDCOhKF03y4aMFj1bxRjZviaUUP4yAm2IM5bk_tk5703oOrpi1DqdUR4/s400/ctf-caesar-crypto2.jpeg" width="400" /></a></div>
Ternyata masih ada text yang masih dienkripsi, kalo dari kalimat yang muncul "<b>OKE MANTAB, PUTARLAH INI:</b>" saya pikir semua text harus dibalik dulu ternyata tidak. Selanjutnya tinggal diulangi langkah-langkah sebelumnya.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW4oaYjjlVEANUDVTTxpuoM1Oa-bAcPmK04RrGX16HhPK5eC8O-9b7taYXIcwQ54-YJoIKbL3TrRufU5-DusPCF7YeMTdrke2BlNhd6Do_Q0jQaHql0QLOqint9f_7e4HyLLzceeBtcns/s1600/ctf-caesar-cipher3.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW4oaYjjlVEANUDVTTxpuoM1Oa-bAcPmK04RrGX16HhPK5eC8O-9b7taYXIcwQ54-YJoIKbL3TrRufU5-DusPCF7YeMTdrke2BlNhd6Do_Q0jQaHql0QLOqint9f_7e4HyLLzceeBtcns/s400/ctf-caesar-cipher3.jpeg" width="400" /></a></div>
Tinggal ambil beberapa kata dan disearch di google, akan terlihat kalo itu adalah petikan puisi "Aku Kangen" karangan WS Rendra.<br />
Jadi tokoh yang dimaksud adalah WS Rendra (rendra)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-68796785512652190002012-11-21T21:21:00.000+07:002012-11-21T21:21:00.246+07:00Get site ranking with python and beautifulsoupTo get information about site, we can use <a href="http://alexa.com/">alexa.com</a> but sometimes we just need some pieces of information like ranking of site global or local country.<span class="fullpost">
</span><br />
<div>
In this case i just need that information, when i looking on alexa i found so many information about the target site.</div>
<div>
I have some knowledge about <a href="http://www.python.org/" rel="nofollow">python</a> and <a href="http://www.crummy.com/software/BeautifulSoup/" rel="nofollow">beautifulsoup</a> library and i try to grep that information with them.</div>
<div>
<br /></div>
<div>
First time i analyzing structure of page of alexa.com, find element of html tag which contains <i>the data</i>.</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzu5j9QjP43J6Mr-dUMVdBz9RuHRj6uhwbaVfDKG6Ut3m_vO4chg_r0NtwcjcHrLixxf5fxpdE2bekC802AAGM0AGZWGorbWqz8jLinLPAMO9e-4ZySWmPYgoBpc_fdB_up-YaCwN0CTc/s1600/alexa-tag-analyzing.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="323" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzu5j9QjP43J6Mr-dUMVdBz9RuHRj6uhwbaVfDKG6Ut3m_vO4chg_r0NtwcjcHrLixxf5fxpdE2bekC802AAGM0AGZWGorbWqz8jLinLPAMO9e-4ZySWmPYgoBpc_fdB_up-YaCwN0CTc/s640/alexa-tag-analyzing.jpeg" width="640" /></a></div>
<br /></div>
<div>
<br />
<a name='more'></a><br /></div>
<div>
Based on screenshot, <i>the data</i> on the div tag with class <b>data</b>, first tag is global ranks, second is local ranks and then reputation and rating. So the script must be grep a div tag with specification then do a looping.<br />
<br />
In the source i need somes python library like <b>sys</b> to get arguments, <b>urllib2</b> to opening url, <b>BeautifulSoup</b> to parsing the html, <b>re</b> to remove empty character which produced by BeautifulSoup output.</div>
<div>
<br /></div>
<div>
Ok, this is the source to get the information.</div>
<div>
<pre class="prettyprint lang-python linenums">#!/usr/bin/env python
# -*- coding: utf8 -*-
# alexagrep.py
# Ardi nooneDOTnu1ATgmailDOTcom
# GNU GPL
import sys
import urllib2
from bs4 import BeautifulSoup
from re import sub
ATTR = [
'Global ranks ',
'Local ranks ',
'Reputation ',
'Rating ',
]
def openLink(url):
_url = 'http://www.alexa.com/siteinfo/'+ url
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
return opener.open(_url).read()
if __name__ == '__main__':
try:
url = sys.argv[1]
except:
print 'Error url'
sys.exit()
html = openLink(url)
soup = BeautifulSoup(html)
tds = soup.find('tr', {'class':'data-row1'}).findAll('td')
i=0
for td in tds:
print ATTR[i] +' => '+ sub(r'\s+', ' ', td.find('div', {'class':'data'}).text.strip())
i = i + 1
</pre>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
This script can be downloaded on <a href="https://github.com/emaniacs/simple-script/blob/master/alexagrep.py">https://github.com/emaniacs/simple-script/blob/master/alexagrep.py</a>.</div>
<div>
<br /></div>
<div>
To execute script just type <i style="font-weight: bold;">$ python alexagrep.py url</i> or copying into <i>/usr/local/bin</i> and adding execute permission to script (chmod +x).<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigv8sqmM6CRo7I9fxefMD1Ps59juliVUi6csouwHpZZtTH5rJ6JPnPv8hS0pOSudSSFVuH4mDAScaeKtzmAly1YKOs6teSB323emmX68u-2ob7e-ANWO9f89S_0WHAARmW_8_DVYeNUhI/s1600/Terminal+-+oi@gnu:+~-git-simple-script_016.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigv8sqmM6CRo7I9fxefMD1Ps59juliVUi6csouwHpZZtTH5rJ6JPnPv8hS0pOSudSSFVuH4mDAScaeKtzmAly1YKOs6teSB323emmX68u-2ob7e-ANWO9f89S_0WHAARmW_8_DVYeNUhI/s640/Terminal+-+oi@gnu:+~-git-simple-script_016.jpeg" width="640" /></a></div>
<br />
<br />
<br />
.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-12990528407817576702012-11-19T18:00:00.000+07:002012-11-19T18:00:05.500+07:00Newbie using gnuchess<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeaPDrWaBfkj4Yw5hQVGo5GhQFpDNLxUmvFhsasDZJfdn209sUWFCFmgqHqeq6qtOPuDy0KKT-l-mLZSitLhBjqL5AoXh6RUdXWdjhWOx5xhut_ijCgov2RmosYCfT3J_95H_sqbWJX0g/s1600/Selection_015.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeaPDrWaBfkj4Yw5hQVGo5GhQFpDNLxUmvFhsasDZJfdn209sUWFCFmgqHqeq6qtOPuDy0KKT-l-mLZSitLhBjqL5AoXh6RUdXWdjhWOx5xhut_ijCgov2RmosYCfT3J_95H_sqbWJX0g/s200/Selection_015.jpeg" width="200" /></a></div>
Hari ini tepatnya dini hari tadi, pas ketika lagi bete <i>ngoding</i> akhirnya browsing-browsing ga jelas vi Chromium tapi ternyata internet sangat lambat, karena koneksi IX dari kantor lagi kacau, buat ngebuka satu google.com aja lama banget, tapi yang aneh buka situs Indonesia juga lambat banget, yah.. tingkat keboringan jadi meningkat gara-gara ini<span class="fullpost">
</span><br />
<div>
<br /></div>
<div>
Akhirnya buat ngilangin bosen dari browsing ane main catur, pas nyari di Games ternyata belum ada tuh caturnya,, dengan berat hati (karena koneksi lagi kacau) akhir nginstall via <i>apt-get</i> meski agak lama akhirnya <i><a href="http://www.gnu.org/software/chess/" rel="nofollow">gnuchess</a> </i>sukses dengan gemilang terinstall.</div>
<div>
<br /></div>
<div>
Seperti biasa ketika jalanin aplikasi ane pencet ALT+F2 trus ketik <i><a href="http://www.gnu.org/software/chess/" rel="nofollow">gnuchess</a></i> dan dengan penuh semangat kelingking ane menekan Enter and... ga ada muncul apa-apa?? Trus coba lagi dengan metode yang sama, ternyata ga muncul apa-apa juga... Ok its time to googling.. ternyata gnuchess itu cuma engine nya doang, kalaupun ada tampilan ini juga sangat-sangat sederhana sekali.. like this screenshot<a name='more'></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8R-h_kLoQ6je651ETIiCEyemKl4EfafE9dGU-41Neg_9J0QS32UJnpnQb4RTRYjcAePExRlMj5gH6uHnzkBJviWmDTGyZNIwfOurz7wYCxQhcZZHGimlJFkyxd6IW6vknrTg4RA1Lu7s/s1600/gnuchess_on_terminal.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8R-h_kLoQ6je651ETIiCEyemKl4EfafE9dGU-41Neg_9J0QS32UJnpnQb4RTRYjcAePExRlMj5gH6uHnzkBJviWmDTGyZNIwfOurz7wYCxQhcZZHGimlJFkyxd6IW6vknrTg4RA1Lu7s/s400/gnuchess_on_terminal.jpeg" width="391" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gnuchess on Terminal.</td></tr>
</tbody></table>
<div>
Benar-benar geeks.. :)</div>
<div>
Sempat tertarik pengen nyoba main catur kaya gini, tapi malah jadi tambah boring, dengan terpaksa nyari lagi GUInya, ketemu <a href="http://www.gnu.org/software/xboard/" rel="nofollow">Xboard</a> dan kembali dengan berat hati melakukan <i>apt-get </i>lagi, ternyata ini cukup lama sekitar 2-3 menit, karena ada font yang didonlot oleh xboard, dependensi buat GUI nya, eh pas mau dijalanin xboardnya minta relogin biar bisa ngebaca font yang baru, wah males banget.. (eh kan harusnya udah langsung detect tu font, lagian kan juga bisa pake command line juga, tapi lupa??)</div>
<div>
<br /></div>
<div>
beberapa menit kemudian..</div>
<div>
<br /></div>
<div>
Ok, installation complete, tapi ada beberapa hal yang mulai aneh dari kompie ane, <i>load CPU</i> mulai naik, begitu juga <i>CPU Temperatur</i> juga naik tembus ke 93C, bahkan dengan bantuan kipas cuma bisa turun ampe 83 abis itu naik lagi..</div>
<div>
<br /></div>
<div>
Karena ga mau kejadian kayak sebelumnya, tiba-tiba mati karena temperature yang luar biasa, akhirnya ane nyari ni masalah,,</div>
<div>
<br /></div>
<div>
Pertama dengan system monitornya XFCE, ga ada yang aneh, yang makan memory paling tinggi cuma Chromium, Opera dan Firefox, dan beberapa aplikasi lain yang makan memorynya lumayan besar. Selain dari Chromium, browser tersebut ane kill, trus tunggu bentar masih ga ada perubahan..</div>
<div>
<br /></div>
<div>
Berikutnya ane coba pake htop, dan tentu saja hasilnya ga bakal jauh beda,, ditengah kondisi yang tak menentu tersebut, ane lihat type sort dari data yang ditampilkan ternyata sortingnya berdasarkan <i>memory usage, </i>iseng-iseng sekalian belajar <i>command</i>nya htop ane coba sortir berdasarkan CPU usage, dan boom, yang diposisi atas ternyata ada sepasang gnuchess lagi ribut, dengan penuh keyakinan ane kill sepasang proses tersebut. Dan pas ane monitor temperatur CPU nya dengan cepat dia kembali turun, normal lagi ke 50,, hmmm ternyata ini dia..</div>
<div>
<br /></div>
<div>
Ok, keadaan kembali normal. Ternyata ada GUI lain yaitu <a href="http://library.gnome.org/users/glchess/stable/playing-glchess.html.en" rel="nofollow">glchess</a>, dan ane install semua berjalan dengan sempurna...</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/Glchess-game.png/250px-Glchess-game.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/Glchess-game.png/250px-Glchess-game.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Image from wikipedia</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
Hmm.. gnuchess almost kill my box.</div>
<div>
<br /></div>
<div>
NB: ternyata pas main catur ane adu komputer versus komputer pake 2 window mereka sepakat untuk <i>draw, </i> kalo lawan ane kalah terus (anenya lho, bukan komputernya).</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-48586598703932584182012-04-18T06:18:00.000+07:002012-04-18T06:18:00.349+07:00php: array_key_exists or issetI know <i><a href="http://php.net/manual/en/function.array-key-exists.php">array_key_exists</a></i> is a function and <a href="http://php.net/manual/en/function.isset.php"><i>isset</i></a> is a keyword, later, i think<a href="http://php.net/manual/en/function.array-key-exists.php"> <i>array_key_exists</i></a> and <a href="http://php.net/manual/en/function.isset.php"><i>isset</i></a> in PHP is a same or array_key_exists is shortcut for isset. But when i read on php manual, there is no document that explains that it is the same or related, so i try to look in php source code, and i got the same answers.<span class="fullpost">
</span><br />
<div id="-chrome-auto-translate-plugin-dialog" style="background-attachment: initial !important; background-clip: initial !important; background-color: transparent !important; background-image: initial !important; background-origin: initial !important; display: none; left: 16px; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; opacity: 1 !important; overflow-x: visible !important; overflow-y: visible !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; position: absolute !important; text-align: left !important; top: 117px; z-index: 999999 !important;">
<div style="-webkit-border-radius: 10px !important; background-color: #363636 !important; background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #000), color-stop(50%, #363636), color-stop(100%, #000)); border-color: #000000 !important; border-width: 0px !important; color: #fafafa !important; font-size: 16px !important; max-width: 300px !important; opacity: 0.8 !important; overflow: visible !important; padding: 8px !important; text-align: left !important; z-index: 999999 !important;">
<div class="translate">
and this is code for the which array_key_exists i look in the php source code.</div>
<div class="additional">
</div>
</div>
<img onclick="document.location.href='http://translate.google.com/';" src="http://www.google.com/uds/css/small-logo.png" style="-webkit-border-radius: 20px; background-color: rgba(200, 200, 200, 0.3) !important; cursor: pointer !important; margin: 0 !important; padding: 3px 5px 0 !important; position: absolute !important; right: 1px !important; top: -20px !important; z-index: -1 !important;" /></div>
<div>
In my mind, array_key_exists is like that :)</div>
<div>
<pre class="prettyprint lang-c linenums">boolean array_key_exists (key, arrayName) {
return isset(arrayName[key]);
}
</pre>
</div>
<div>
<br />
<a name='more'></a><br /></div>
<div>
and this is code for array_key_exists which i look in php source code.<br />
<div>
<pre class="prettyprint lang-c linenums">/* {{{ proto bool array_key_exists(mixed key, array search)
Checks if the given key or index exists in the array */
PHP_FUNCTION(array_key_exists)
{
zval *key; /* key to check for */
HashTable *array; /* array to check in */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zH", &key, &array) == FAILURE) {
return;
}
switch (Z_TYPE_P(key)) {
case IS_STRING:
if (zend_symtable_exists(array, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1)) {
RETURN_TRUE;
}
RETURN_FALSE;
case IS_LONG:
if (zend_hash_index_exists(array, Z_LVAL_P(key))) {
RETURN_TRUE;
}
RETURN_FALSE;
case IS_NULL:
if (zend_hash_exists(array, "", 1)) {
RETURN_TRUE;
}
RETURN_FALSE;
default:
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The first argument should be either a string or an integer");
RETURN_FALSE;
}
}
</pre>
</div>
<br />
yeah, its really different.<br />
<br />
<b><span style="font-size: large;"><u>Difference.</u></span></b><br />
So what the big different between them, this is the list based in my mind and other source from internet.<br />
<br />
<br />
<ol>
<li>isset is keyword or language constructor and array_key_exists is function.<br />so isset faster then array_key_exists.</li>
<li>isset will check value of variables.<br />if value of variable is null isset will return false, but with array_key_exists will return true even a value is null.<br />
<pre class="prettyprint lang-bash linenums">$ php -r '$var=array("php"=>null); var_dump(isset($var["php"]));'
(bool)false
$ php -r '$var=array("php"=>null); var_dump(array_key_exists("php", $var));'
(bool)true
</pre>
</li>
</ol>
<br />
Source:<br />
<br />
<ul>
<li><a href="http://php.net/manual/en/function.array-key-exists.php">http://php.net/manual/en/function.array-key-exists.php</a></li>
<li><a href="http://php.net/manual/en/function.isset.php">http://php.net/manual/en/function.isset.php</a></li>
</ul>
<br />
<br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-4160448073042129202012-04-09T16:31:00.000+07:002012-04-09T16:38:41.196+07:00Default value for return<span class="fullpost">A few days ago, i try to create a code with PHP, with a function i do a return in function with some values and then i got a mystery about default value for return keyword, to get absolutelly value with this keyword i create a function to test it, like this.</span><br />
<br />
<pre class="prettyprint lang-php linenums"><?php
function defaultValueForReturn(){
return;
}// now i test it</pre>
var_dump (defaultValueForReturn());
?>
<br />
<br />
And this is result:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkTCB8CdvoIL2yZ1OhSpgGMFOZvhp8TmK8OMRM0CTP-mUhKhajGcyG5jEfFfTMds13-cRgwSjUqWcU6u4tZZw1ZuGAB9LgO0DcSSB0CkJcywi5M__iY2_Tf95BkE6RV49-_5TVONAdl-Y/s1600/Screenshot+at+2012-03-13+01:39:29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="45" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkTCB8CdvoIL2yZ1OhSpgGMFOZvhp8TmK8OMRM0CTP-mUhKhajGcyG5jEfFfTMds13-cRgwSjUqWcU6u4tZZw1ZuGAB9LgO0DcSSB0CkJcywi5M__iY2_Tf95BkE6RV49-_5TVONAdl-Y/s320/Screenshot+at+2012-03-13+01:39:29.png" width="320" /></a></div>
<br />
<br />
What about with other programming language such as Python, Javascript, etc.<br />
Check this!<br />
<a name='more'></a><br />
<br />
<br />
<span style="font-size: large;"><b><u>Python.</u></b></span><br />
Code: <br />
<pre class="prettyprint lang-python linenums">#!/usr/bin/env python
def defaultValueForReturn():
return
type(defaultValueForReturn())
</pre>
<br />
Result:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Jc6m8iptPwWSOuaE6eHBM9bmkcZgoo-Al1-reYcWPcwigHdnoaUvbn59r4TTJdwfs9syPZj1qOh7H0u7yZCb1NjvSA1m44tirFXFGdxRdlqh2oDMCn9PezXOBHibNE25FJ4AoccmqOg/s1600/python-default-value.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Jc6m8iptPwWSOuaE6eHBM9bmkcZgoo-Al1-reYcWPcwigHdnoaUvbn59r4TTJdwfs9syPZj1qOh7H0u7yZCb1NjvSA1m44tirFXFGdxRdlqh2oDMCn9PezXOBHibNE25FJ4AoccmqOg/s640/python-default-value.png" width="640" /></a></div>
<br />
<br />
<b><span style="font-size: large;"><u>Javascript.</u></span></b><br />
Code:<br />
<pre class="prettyprint lang-javascript linenums">function returnValue() {
return;
}
var y = returnValue();
console.log(typeof (y));
</pre>
Result:<br />
<span style="color: #cc0000;">undefined
</span><br />
<br />
<br />
<b><span style="font-size: large;"><u>Ruby.</u></span></b><br />
Code:<br />
<pre class="prettyprint lang-ruby linenums">def defaultValueForReturn()
return
end
y=defaultValueForReturn()
print y.class
</pre>
Result:<br />
<span style="color: red;">NilClass</span><br />
<br />
<br />
<div id="-chrome-auto-translate-plugin-dialog" style="background-attachment: initial !important; background-clip: initial !important; background-color: transparent !important; background-image: initial !important; background-origin: initial !important; background-position: initial initial !important; background-repeat: initial initial !important; display: none; left: 0px; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; opacity: 1 !important; overflow-x: visible !important; overflow-y: visible !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; position: absolute !important; text-align: left !important; top: 0px; z-index: 999999 !important;">
<div style="-webkit-border-radius: 10px !important; background-color: #363636 !important; background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #000), color-stop(50%, #363636), color-stop(100%, #000)); border-color: #000000 !important; border-width: 0px !important; color: #fafafa !important; font-size: 16px !important; max-width: 300px !important; opacity: 0.8 !important; overflow: visible !important; padding: 8px !important; text-align: left !important; z-index: 999999 !important;">
<div class="translate">
</div>
<div class="additional">
</div>
</div>
<img onclick="document.location.href='http://translate.google.com/';" src="http://www.google.com/uds/css/small-logo.png" style="-webkit-border-radius: 20px; background-color: rgba(200, 200, 200, 0.3) !important; cursor: pointer !important; margin: 0 !important; padding: 3px 5px 0 !important; position: absolute !important; right: 1px !important; top: -20px !important; z-index: -1 !important;" /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-57526357916610847272012-03-19T20:08:00.000+07:002012-03-22T14:22:10.081+07:00Using keyword as method in PHPAs we know, we can't use keyword like if, while in common language programming as function, method or variables, neither does in PHP Programming. Last time, i agree with this condition, but when i learn about Object Oriented Programming i found a way how to make this is possible, i've got a trick how to make keyword as a method or function (as a variable we can do that easily) in PHP Programming.<br />
<div>
<br /></div>
<div>
<span style="font-size: large;"><u><b>How to do that?</b></u></span></div>
<div>
In PHP Programming there a feature in OOP, as known as with <a href="http://php.net/manual/en/language.oop5.magic.php">magic method</a>, with this feature we can do a "magic" in PHP. For completed information about it you can click that link.</div>
<div>
<br />
<br /></div>
<div>
<u><span style="font-size: large;"><b>Keyword as Function.</b></span></u><br />
<a name='more'></a></div>
<div>
Based on Php Manual about <a href="http://www.blogger.com/php.net/manual/en/reserved.keywords.php">keyword</a>, we can't use keyword as function, so if we coding like this, Php will show an error like this.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPEJPHNike7BqZgzE5KggqN7x3w0G78JQzoL0rg_MrWPN2MUXcOvO9D1PcH8RwyzeD-MDi1YUQpe4onR4GcS7TKs3q7d2MZ6IRYGnzosgAQQYsLgE6_bd6rplZYNbWjl0RXQ3YzcpMglI/s1600/Screenshot+at+2012-03-19+18:49:58.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPEJPHNike7BqZgzE5KggqN7x3w0G78JQzoL0rg_MrWPN2MUXcOvO9D1PcH8RwyzeD-MDi1YUQpe4onR4GcS7TKs3q7d2MZ6IRYGnzosgAQQYsLgE6_bd6rplZYNbWjl0RXQ3YzcpMglI/s640/Screenshot+at+2012-03-19+18:49:58.png" width="550" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">while as a function.</td></tr>
</tbody></table>
And, how to use it (or other keywords) as function? We can't do that but, we can use it as a string in a variable with function create_function(). This is sample.<br />
<br />
<pre class="prettyprint lang-php linenums">$if = '';
$if = create_function ('$var', 'return (bool)$var;');
var_dump ( $if(true));
</pre>
<br />
<u><span style="font-size: large;"><b>Keyword as Method.</b></span></u><br />
Using keyword in method will give an error like above sample, we can use a trik like above, or we can use magic call with <a href="http://id.php.net/manual/en/language.oop5.overloading.php#object.call">__call</a> or <a href="http://id.php.net/manual/en/language.oop5.overloading.php#object.callStatic">__callStatic</a>. First time this is failure example.<br />
<pre class="prettyprint lang-php linenums">class Keyword {
public function if ($var) {
return (bool)$var;
}
}
$key = new KeyWord(); // got error here..
$key->if (true;)
</pre>
<br />
And this is solution to do that.<br />
<pre class="prettyprint lang-php linenums"><?php
class KeyWord {
public function __call ($name, $argument) {
echo "You call $name with arguments: ". print_r ($argument, true);
}
public static function __callStatic ($name, $argument) {
echo "You call statically $name with argument: ". print_r ($argument, true);
}
}
$x = new KeyWord();
$x->static (1,2);
KeyWord::unknownStaticMethod(1,2,3);
?>
</pre>
<br />
Now calling method with the keyword..<br />
<br />
:)</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-33178723879136227542012-02-25T00:00:00.000+07:002012-02-25T10:07:00.001+07:00PHP: Menghitung lama eksekusi sebuah skrip<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZEjFm5ppLcHbyNPt6dP21EV8ae_KKa9SYTqWdE_nK-QJ7uS6EXFGK8ZTEBmUPQ3qP9avadeIyjmJdSW1nYvFG8AYDYkBPJWrhNMQyEVEaYlLMf5lazdiyiY8n4gEHtuOPRz9lLagHiVs/s1600/time.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZEjFm5ppLcHbyNPt6dP21EV8ae_KKa9SYTqWdE_nK-QJ7uS6EXFGK8ZTEBmUPQ3qP9avadeIyjmJdSW1nYvFG8AYDYkBPJWrhNMQyEVEaYlLMf5lazdiyiY8n4gEHtuOPRz9lLagHiVs/s1600/time.png" /></a></div>
<span class="fullpost">Untuk apa menghitung lama eksekusi sebuah skrip? Alasan utama adalah performance dari skrip yang dibuat, hal ini bertujuan untuk membandingkan fungsi yang akan digunakan sehingga losstime bisa dikurangi. Dalam pemrograman PHP bisa dilakukan dengan mengambil nilai fungsi <a href="http://php.net/manual/en/function.microtime.php">microtime()</a>, tentu saja ditambahkan parameter boolean bernilai true agar nilai yang dikembalikan adalah float, karena jika tidak ada parameter yang diberikan maka nilai return dari fungsi ini adalah string.</span><br />
<a name='more'></a><br />
<span class="fullpost"><br />
</span><br />
<span class="fullpost">Cara paling mudah adalah dengan membuat sebuah variabel dari nilai return fungsi microtime() di awal perintah yang ingin dijalankan, kemudian ambil lagi nilai yang sama dibawah perintah yang ingin dijalankan dengan variabel lain, dan selisih nilai variabel terakhir dengan yang pertama diambil tersebut adalah lama eksekusi skrip tersebut. Seperti dibawah ini.</span><br />
<br />
<span class="fullpost">
</span><br />
<span class="fullpost"><br />
</span><br />
<pre class="prettyprint lang-php linenums"><?php
$arr=array();
$start = microtime(true);
for ($x=0; $x<100; ++$x)
$arr[] = 'exec';
$end = microtime (true);
echo 'Selisih Waktunya adalah: ', $end - $start, ' microsecond';
?>
</pre>
<br />
<span class="fullpost"><br />
</span><br />
<span class="fullpost">Kode diatas cukup simpel, berikut saya coba membuat sebuah class untuk menghitung lama eksekusi sebuah script yang ingin kita uji, sehingga bisa digunakan untuk membuat sebuah perbandingan.</span><br />
<pre class="prettyprint lang-php linenums"><?php
/*
*
* (f) ExecTime.php
* (d) Menghitung lama eksekusi sebuah perintah
* (l) GPL
* (a) emaniacs
*
*/
class ExecTime {
private $_start=null;
// penanda bahwa object tidak bisa dipakai lagi.
private $_finish=false;
public function __construct($autoStart=true) {
if ($autoStart)
$this->start();
}
public function start() {
$this->_start = microtime (true);
}
public function end() {
// ambil end time
$end = microtime(true);
if ($this->_finish)
return false;
/* cek apakah start telah didefinisikan
* jika belum return array kosong
*/
if (is_null ($this->_start))
return array();
// set perbedaan waktu
$diff = $end - $this->_start;
$ret = array (
'start' => $this->_start,
'end' => $end,
'diff' => $diff,
);
// hapus nilai _start
$this->_flush();
return $ret;
}
public function restart() {
$this->start();
$this->_finish = false;
}
private function _flush() {
$this->_start = null;
}
}
?>
</pre>
<br />
<br />
<span class="fullpost">Sekarang saya buat sebuah file PHP untuk menghitung perbandingan eksekusi proses sebuah array menggunakan <i><span style="color: #274e13;">for</span></i> dengan <i><span style="color: #274e13;">foreach</span></i>.</span><br />
<br />
<pre class="prettyprint lang-php linenums"><?php
$arr = range (1, 100);
include ('ExecTime.php');
$tmp = count($arr);
//inisialisasi object
$s1 = new ExecTime(false);
// hitung nilai waktu untuk looping array dengan menggunakan for
$s1->start();
for ($i=0; $i<$tmp; ++$i)
$arr[$i] = 'test';
print_r ($s1->end());
$s1->restart();
foreach ($arr as $k => $v)
$k='test';
print_r($s1->end());
?>
</pre>
<br />
<span class="fullpost">Berikut penampakan hasil kode diatas, sepertinya menggunakan <i style="color: #274e13;">foreach</i> lebih cepat.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjueDIYu64Nss2ZFnQjn9mJ2OUd_EZzKwqepkUp4b60QwAJ4cBI-91oQSYenN53SXlm9Cx9EdzKCLWHhXRAOBA5JOLK3AeNkmOlnLRxoJeuUsbc6SXz5_EGMUSlAlwK_Wm9z7yR9B6W2nk/s1600/Screenshot+at+2012-02-24+22:29:01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjueDIYu64Nss2ZFnQjn9mJ2OUd_EZzKwqepkUp4b60QwAJ4cBI-91oQSYenN53SXlm9Cx9EdzKCLWHhXRAOBA5JOLK3AeNkmOlnLRxoJeuUsbc6SXz5_EGMUSlAlwK_Wm9z7yR9B6W2nk/s1600/Screenshot+at+2012-02-24+22:29:01.png" /></a></div>
<span class="fullpost"><br /></span><br />
<span class="fullpost"><br /></span><br />
<span class="fullpost"><br /></span><br />
<span class="fullpost"><br />
</span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-28623738381061679172012-02-20T20:12:00.000+07:002012-02-25T10:04:58.399+07:00How to fill constant with array in PHPCreate a constant variable in PHP so easy, we can use keyword <a href="http://www.php.net/manual/en/function.define.php">define</a>, followed by name of constant and constant value, or we can adding once more argument (boolean true) to identified that is incase-sensitive, like this:<br />
<br />
<pre class="prettyprint lang-php">define ('NAME', 'value of constant');
echo NAME; //output value of constant;
echo Name; //output value of constant with somes notice
define ('OK', 'its ok', true);
echo OK; // output its ok.
echo oK; //output its ok, there are no problem here.
</pre>
<br />
<a name='more'></a><br /><br />
Based on <a href="http://www.php.net/manual">PHP Manual</a> we can't define a constant variable with value as array, yes we can't do that.<br />
But we can make a some tricky so a constant can be use as an array with <a href="http://www.php.net/manual/en/function.serialize.php">serialize </a>and when we want to used it just reverse with <a href="http://www.php.net/manual/en/function.unserialize.php">unserialize</a>.<br />
<br />
<pre class="prettyprint lang-php">$arr = array ('one'=>'satu', 'two'=>'dua');
// create a constant
define ('EN2ID', serialize($arr));
// and we use now
foreach (unserialize(EN2ID) as $key => $val) {
echo '"', $key, '" in Indonesia is ', $val, "\"\n";
}
</pre>
<br />
Yeah that is not array but string, i dont care.. :)<br />
<br />
<br />
<span class="fullpost"> </span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-41464511795153917462012-01-27T00:00:00.000+07:002012-02-25T10:05:06.506+07:00No Woman No Cry bobmarley lyric<span class="line line-s" id="line_1">Cause I remember when we used to sit</span>
<span class="line line-s" id="line_2"> </span><br />
<span class="line line-s" id="line_2">In the government yard in Trenchtown</span>
<span class="line line-s" id="line_3"> </span><br />
<span class="line line-s" id="line_3">Oba, ob-serving the hypocrites</span>
<span class="line line-s" id="line_4"> </span><br />
<span class="line line-s" id="line_4">As they would mingle with the good people we meet</span>
<span class="line line-s" id="line_5"> </span><br />
<span class="line line-s" id="line_5">Good friends we have had, oh good friends we've lost along the way</span>
<span class="line line-s" id="line_6"> </span><br />
<span class="line line-s" id="line_6">In this bright future </span><br />
<span class="line line-s" id="line_6">you can't forget your past</span>
<span class="line line-s" id="line_7"> </span><br />
<span class="line line-s" id="line_7">So dry your tears I say</span>
<br />
<br />
<a name='more'></a><br /><br />
<span class="line line-s" id="line_8">No woman, no cry</span>
<span class="line line-s" id="line_9"> </span><br />
<span class="line line-s" id="line_9">No woman, no cry</span>
<span class="line line-s" id="line_10"> </span><br />
<span class="line line-s" id="line_10">Little darlin' don't shed no tears</span>
<span class="line line-s" id="line_11"> </span><br />
<span class="line line-s" id="line_11">No woman, no cry</span>
<br />
<br />
<span class="line line-s" id="line_12">Said, said, said I remember when we used to sit</span><br />
<span class="line line-s" id="line_13">In the government yard in Trenchtown</span>
<span class="line line-s" id="line_14"> </span><br />
<span class="line line-s" id="line_14">And then Georgie would make the fire light</span>
<span class="line line-s" id="line_15"> </span><br />
<span class="line line-s" id="line_15">Log wood burnin' through the night</span>
<span class="line line-s" id="line_16"> </span><br />
<span class="line line-s" id="line_16">Then we would cook corn meal porridge</span><br />
<span class="line line-s" id="line_17">Of which I'll share with you</span>
<br />
<br />
<span class="line line-s" id="line_18">My feet is my only carriage</span> <span class="line line-s" id="line_19"></span><br />
<span class="line line-s" id="line_19"><span style="color: #888888; font-size: 0.75em;"></span></span><span class="line line-s" id="line_20">So I've got to push on through</span>
<span class="line line-s" id="line_21"> </span><br />
<span class="line line-s" id="line_21">But while I'm gone...</span>
<br />
<br />
<span class="line line-s" id="line_22">Ev'rything's gonna be alright</span><br />
<span class="line line-s" id="line_23">Ev'rything's gonna be alright</span>
<span class="line line-s" id="line_24"> </span><br />
<span class="line line-s" id="line_24">Ev'rything's gonna be alright</span>
<span class="line line-s" id="line_25"> </span><br />
<span class="line line-s" id="line_25">Ev'rything's gonna be alright</span>
<span class="line line-s" id="line_26"> </span><br />
<span class="line line-s" id="line_26">Ev'rything's gonna be alright</span>
<span class="line line-s" id="line_27"> </span><br />
<span class="line line-s" id="line_27">Ev'rything's gonna be alright</span>
<span class="line line-s" id="line_28"> </span><br />
<span class="line line-s" id="line_28">Ev'rything's gonna be alright</span>
<span class="line line-s" id="line_29"> </span><br />
<span class="line line-s" id="line_29">Ev'rything's gonna be alright</span><br />
<span class="line line-s" id="line_29"> </span>
<br />
<span class="line line-s" id="line_30">So, no woman, no cry</span>
<span class="line line-s" id="line_31"> </span><br />
<span class="line line-s" id="line_31">No, no woman, no woman, no cry</span>
<span class="line line-s" id="line_32"> </span><br />
<span class="line line-s" id="line_32">Oh, little darling, don't shed no tears</span>
<span class="line line-s" id="line_33"> </span><br />
<span class="line line-s" id="line_33">No woman, no cry</span>
<br />
<br />
<span class="line line-s" id="line_34">No woman, no woman, no woman, no cry</span>
<span class="line line-s" id="line_35"> </span><br />
<span class="line line-s" id="line_35">No woman, no cry</span>
<span class="line line-s" id="line_36"> </span><br />
<span class="line line-s" id="line_36">Oh, my little darlin' please don't shed no tears</span>
<span class="line line-s" id="line_37"> </span><br />
<span class="line line-s" id="line_37">No woman, no cry, yeah</span><br />
<div style="background-color: white; border: medium none; color: black; overflow: hidden; text-align: left; text-decoration: none;">
<br />
Read more: <a href="http://www.metrolyrics.com/no-woman-no-cry-lyrics-bob-marley.html#ixzz1kY0bgnTu" style="color: #003399;">BOB MARLEY - NO WOMAN NO CRY LYRICS</a> <a href="http://www.metrolyrics.com/no-woman-no-cry-lyrics-bob-marley.html#ixzz1kY0bgnTu" style="color: #003399;">http://www.metrolyrics.com/no-woman-no-cry-lyrics-bob-marley.html#ixzz1kY0bgnTu</a>
<br />
Copied from MetroLyrics.com </div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-20203170051764616672012-01-17T17:17:00.000+07:002012-02-25T10:08:21.355+07:00localStorage dengan HTML5<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhea1Tp-jC_wbDKD7iiU7lvheHHb8SD5wRr8V8jibhnBYrBiF8QWBicqb91kmjz4l8Ap1wxFqx3Gx32NXF1wYnN3qJj62j74sw7u3nt17Fr9bH7gkLBjm6xsR-dTd-5HDmJ8S2QJ0rRGBw/s1600/localStorage.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhea1Tp-jC_wbDKD7iiU7lvheHHb8SD5wRr8V8jibhnBYrBiF8QWBicqb91kmjz4l8Ap1wxFqx3Gx32NXF1wYnN3qJj62j74sw7u3nt17Fr9bH7gkLBjm6xsR-dTd-5HDmJ8S2QJ0rRGBw/s1600/localStorage.PNG" /></a></div>
<span class="fullpost">Salah satu fitur yang tersedia pada bahasa pemrograman <b>HTML </b>khususnya <b>HTML5 </b>adalah penyimpanan sementara pada browser, meski telah ada <b>cookies </b>namun salah satu perbedaannya adalah tidak semua browser mendukung <b>localStorage</b>, terutama browser versi lama, namun keuntungannya adalah <b>localStorage</b> tersedia sebagai object didalam Javascript sehingga ketika ingin mengaksesnya jadi lebih mudah. Selain itu mengakses <b>cookies </b>bisa dilakukan dari sisi server, sedangkan untuk <b>localStorage </b>jika ingin diakses lewat server bisa diakali dengan menggunakan method <u>GET </u>atau <u>POST</u>, dimana data yang ingin diberikan pada server dijadikan sebagai parameter pada method tersebut.</span><br />
<a name='more'></a><br />
<br />
<span class="fullpost">Beberapa browser yang mendukung penggunaan localStorage adalah </span>Safari 4+, Mobile Safari (iPhone/iPad), Firefox 3.5+, Internet Explorer 8+ and Chrome 4+.<br />
<br />
<br />
<span class="fullpost"> <u><span style="font-size: large;">Deteksi browser.</span></u></span><br />
<span class="fullpost"><br /></span><br />
<span class="fullpost">Salah satu cara paling mudah untuk mengetahui suatu browser mendukung <b>localStorage </b>atau tidak adalah dengan menggunakan keyword <b style="background-color: white; color: #38761d;">typeof</b>. Jika hasil returnnya adalah <b><span style="color: #38761d;">undefined </span></b>maka bisa dipastikan bahwa browser tersebut tidak mendukung untuk penyimpanan data pada sisi klien, sedangkan hasil kembaliannya adalah <b><span style="color: #38761d;">object </span></b>maka browser tersebut mendukung untuk penyimpanan pada sisi klient.</span><br />
<span class="fullpost"><br /></span><br />
<pre class="prettyprint lang-javascript linenumbers"><span class="fullpost">if(typeof(localStorage) == 'undefined')</span>
<span class="fullpost"> alert('Browser anda tidak mendukung </span><span class="fullpost">localStorage.</span><span class="fullpost">!');</span>
<span class="fullpost">else</span>
<span class="fullpost"> alert('Browser anda mendukung localStorage.');</span>
</pre>
<span class="fullpost"><br /></span><br />
<span class="fullpost"><br /></span><br />
<div style="color: black;">
<u><span class="fullpost" style="font-size: large;">Penggunaan localStorage</span></u></div>
<ul>
<li><span class="fullpost">Menyimpan data.</span><br />Cara untuk menyimpan data menggunakan localStorage adalah dengan method setItem dengan 2 parameter, yang pertama sebagai key dan yang kedua merupakan nilainya.<br />
<b style="color: #38761d;">localStorage.setItem (key, value)</b><br />
<pre class="prettyprint lang-javascript">localStorage.setItem ('nama', 'data');
// menyimpan data dengan nilai 'data' dengan key nya adalah 'nama'.
</pre>
</li>
<li><span class="fullpost">Mengambil data.</span><br />Sedangkan untuk mengambil data menggunakan method getItem dengan sebuah parameter yang merupakan key atau nama variabel data yang ingin diambil.<br />
<b><span style="color: #38761d;">localStorage.getItem (key)</span></b><br />
<pre class="prettyprint lang-javascript">localStorage.getItem ('nama');
// mengambil data dengan key nama.
</pre>
</li>
<li><span class="fullpost">Menghapus data.</span><br />Untuk menghapus data yang tersimpan pada klient bisa menggunakan method removeItem dengan sebuah parameter yang merupakan nama key yang ingin dihapus.<br />
<b><span style="color: #6aa84f;">localStorage.removeItem (key)</span></b><br />
<pre class="prettyprint lang-javascript">localStorage.removeItem ('nama');
// menghapus data dengan key nama.
</pre>
</li>
</ul>
Berikut ini saya buat sebuah kode untuk mendeteksi browser yang anda pakai apakah support localStorage atau tidak.<br />
<br />
<div id="test-detection-localstorage" style="border: 3px solid #aaa; font-size: 20px; font-weight: bold; height: 60px; margin: auto; padding: 8px; text-align: center; width: 300px;">
</div>
<script type="text/javascript">
var __S = $('#test-detection-localstorage');
if (typeof (localStorage) == 'undefined')
__S.html('Browser anda tidak support localStorage').css('background','#cc0000');
else
__S.html('Browser anda support localStorage').css('background','#38761d');
</script><br />
<span class="fullpost"><br /> </span><br />
<span class="fullpost"><br /> </span>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4491391318516045520.post-86990923539955992442012-01-15T23:59:00.000+07:002012-02-25T10:05:29.099+07:00Panada: Membuat Halaman Login Dengan Session<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8yX1HblD75CuXalpdZOXAgyFW-OftUVQ5lyH7RBa0qc1s-sDofzhsqJui480MsyaTZe3EKDsAp5qpofhRmHd9Fn67nMAnyTeNtVFfxaMc56178akBkKF6qHjx4oGSmjYd2Ch037z378g/s1600/lock.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8yX1HblD75CuXalpdZOXAgyFW-OftUVQ5lyH7RBa0qc1s-sDofzhsqJui480MsyaTZe3EKDsAp5qpofhRmHd9Fn67nMAnyTeNtVFfxaMc56178akBkKF6qHjx4oGSmjYd2Ch037z378g/s1600/lock.png" /></a></div>
Membuat login menggunakan Panada Framework tidak begitu sulit, kalo ini saya mencoba untuk membuat tutorial bagaimana membuat halaman login. Halaman login biasanya dibutuhkan jika user ingin mengakses halaman web yang terproteksi atau halaman yang bersifat private.<br />
<span class="Apple-style-span" style="font-size: x-large;"><b>Introduction</b></span><br />
Hal-hal yang dibutuhkan untuk membuat halaman login, terutama library yang harus diload pada Panada, berikut diantaranya :<br />
<a name='more'></a><br />
<ul>
<li><b>Library Request</b><br />
untuk mengambil input dari user yang akan divalidasi</li>
<li><b>Library Database</b><br />
Ini bisa diabaikan jika tidak menggunakan database, dalam menyimpan username atau password.</li>
</ul>
Karena disini menggunakan database, diharapkan settingan<b> "config.php" </b>anda pada bagian database telah disetting dengan benar, sedangkan struktur tabelnya sendiri saya menggunakan seperti kode dibawah ini<br />
<pre class="prettyprint lang-sql linenumbers">CREATE TABLE IF NOT EXISTS `users` (
`id` int(3) NOT NULL auto_increment,
`username` varchar(16) NOT NULL,
`password` varchar(32) NOT NULL,
`nama_depan` varchar(32) NOT NULL,
`nama_belakang` varchar(32) NOT NULL,
`email` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `users` (`id`, `username`, `password`, `nama_depan`, `nama_belakang`, `email`) VALUES
(1, 'chars19', 'b69d9bc635ccd79ad2c64bc862abe3b4', 'Lionel', 'Messi', 'my@email.com');
</pre>
<br />
<span class="Apple-style-span" style="font-size: x-large;"><b>Kebutuhan File</b></span><br />
Ada 2 file yang akan dibuat, yaitu 1 buah file <i>Controller</i> dan 1 buah<br />
file <i>View</i>.<br />
<br />
<ul>
<li><b><PANADA>/apps/controller/login.php</b><br />
File ini adalah controller untuk penanganan login dan input user<br />
<pre class="prettyprint lang-php linenumbers"><?php
class Controller_login extends Panada
{
public function __construct() {
parent::__construct();
$this->request = new Library_request();
$this->data_login =
array(
'has_login' => false,
'error_stat'=>false,
'error_info'=>'',
'name'=>'',
'title'=>'Silahkan Login');
}
function index(){
if($this->request->post('submit'))
$this->proses_login();
else
$this->view_loginform( $this->data_login);
}
private function proses_login() {
$this->db = new Library_db();
$name = $this->request->post('username', FILTER_SANITIZE_MAGIC_QUOTES);
$pass = $this->request->post('password', FILTER_SANITIZE_STRING);
$this->data_login['name'] = $name;
$this->data_login['error_stat'] = true ;
if(! empty($name) and !empty($pass)) {
$data = $this->db->find_one('users',
array('username'=>$name, 'password'=>md5($pass)));
if(false == $data)
$this->data_login['error_info'] = 'Username / Password tidak valid';
else {
$this->data_login['title'] = 'Terima kasih telah login';
$this->data_login['has_login'] = true;
}
}
else
$this->data_login['error_info'] = 'Data tidak boleh kosong';
$this->view_loginform( $this->data_login);
}
function logout() {
echo "Anda telah logout<br/>";
echo '<a href='.$this->location('login').' >Klik disini untuk login</a>';
}
}
?>
</pre>
Penjelasan Kode<br />
<b> baris 6:</b> meload library request untuk mengambil hasil post dari form .<br />
<b> baris 8:</b> data yang akan dikirim ke view.<br />
<b> baris 18-21:</b> mengecek apakah nilai post 'submit' ada, jika ada lakukan proses_login() jika tidak tampilkan view.<br />
<b> baris 25:</b> meload library database.<br />
<b> baris 27-28:</b> mengambil nilai post 'username' dan 'password'.<br />
Nilai post ini difilter dengan FILTER_SANITAZE_MAGIC_QUOTES<br />
untuk username dan password, filter ini untuk melakukan escape pada karakter-karakter tertentu. <a href="http://php.net/manual/en/filter.filters.sanitize.php"><i>INFO</i></a><br />
<b> baris 30-31:</b> set nilai untuk view.<br />
<b> baris 33:</b> cek apakah nilai submit 'username' dan 'password' tidak sama dengan kosong.<br />
<b> baris 34:</b> melakukan query ke database, $this->db->find_one() ini<br />
untuk mengambil 1 data berdasarkan argument yang<br />
diberikan, nilai kembaliannya adalah object dari hasil<br />
query jika data yang dicari ada, atau false jika data<br />
tidak ada. Info tentang perintah disini.<br />
<b> baris 37:</b> jika data yang dicari tidak ada set nilai 'error_info'.<br />
<b> baris 39-40: </b>Login sukses.<br />
<b> baris 44: </b>baris ini dieksekusi jika, data post tidak lengkap, misalkan password atau usernamenya kosong.<br />
<b> baris 50-52:</b> adalah fungsi untuk logout()<br />
fungsi $this->location() adalah fungsi untuk menampilkan url yang<br />
ingin ditampilkan. <a href="http://www.panadaframework.com/documentation/id/references/global_method.html"><i>INFO</i></a><br />
</li>
<li><PANADA>/apps/view/loginform.php<br />
Kode<br />
<pre class="prettyprint lang-html linenumbers"><!doctype html>
<html>
<head>
<title><?= $title ?></title>
</head>
<body>
<?php if($has_login) : ?>
<h2>Selamat Datang <u><?= $name ?></u> </h2>
<br/>
<a href="login/logout">Logout</a>
<?php else : ?>
<form name="frm-login" method="post"
action="#">
<table >
<?php if($error_stat) { ?>
<h2 style="color:red"><?= $error_info ?></h2>
<?php } ?>
<tr>
<td>Name</td>
<td>
<input type="text" name="username"
value="<?= $name ?>">
</input>
</td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password"></input></td>
</tr>
<tr>
<td>
<input type='submit' name='submit'
value='Login'></input>
</td>
</tr>
</table>
<?php endif; ?>
</body>
</html>
</pre>
<br />
Penjelasan Kode<br />
variabel-variabel pada file ini adalah '<b>key</b>' dari<br />
<i> $this->data_login</i> yang dikirim lewat view, secara default Panada<br />
akan merubah nilai 'key' dari sebuah array yang dikirim lewat perintah view.<br />
Misalkan<i> $data['login'] = true</i>;<br />
maka di file 'view', kita bisa menggunakan variabel $login yang merupakan 'key' dari $data, dimana nilainya adalah true.<br />
Hal ini sama dengan kebanyakan PHP Framework yang lainnya.<br />
<br />
<b> baris 8-10: </b>adalah yang akan ditampilkan jika telah login atau loginnya sukses.<br />
<b> baris 15-29:</b> sebaliknya jika belum atau login gagal.<br />
</li>
</ul>
<span class="Apple-style-span" style="font-size: large;"><b>Note :</b></span><br />
<PANADA> adalah tempat instalasi Panada<br />
<br />
<div class="referensi">
<span class="referensi-title">Referensi</span><br />
<ul>
<li><a href="http://www.panadaframework.com/documentation/id">Panada Documentation</a></li>
<li><a href="http://php.net/manual">php.net</a></li>
</ul>
</div>
<span class="fullpost"> </span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-70254008795580844602012-01-10T00:00:00.000+07:002012-02-25T10:05:38.838+07:00Tombol Shortcut pada Twitter<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="http://a2.twimg.com/a/1325788954/images/logos/twitter_newbird_boxed_whiteonblue.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://a2.twimg.com/a/1325788954/images/logos/twitter_newbird_boxed_whiteonblue.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Image by Twitter</td></tr>
</tbody></table>
Setelah secara tak sengaja menekan tombol <b>n</b> pada keyboard pada halaman twitter akhirnya ane berniat untuk mencari tau apa saja shortcut dari Twitter.<span class="fullpost">
</span><br />
<div>
Seperti biasa ane melakukan cara gila, yaitu dengan menekan semua tombol keyboard ketika membuka halaman twitter secara satu persatu, kemudian melihat hasil yang keluar, dan ane coba pahamin sendiri.</div>
<div>
<br /></div>
<div>
Cara ini disebut juga dengan trial and error, dulu ane sering banget kaya gini, bahkan pernah menekan semua tombol keyboard ketika menjalankan sebuah aplikasi, hanya untuk melihat fungsi dari tombol tersebut.</div>
<div>
<br /></div>
<div>
Ok back to topics.</div>
<div>
<br />
<a name='more'></a><br /></div>
<div>
Setelah ane rasa capek akhirnya mutusin make cara kedua (biasanya ini adalah cara terakhir) yaitu dengan googling, dan seperti biasa mbah google yang setia menjawab dengan jujur, apa adanya, blak-blakan, tanpa kompromi, main sikat main embat jatah orang peduli sahabat kental kurus kering kelaparan (<span class="Apple-style-span" style="font-size: large;">HAHAHA</span>, jadi opininya <a href="http://iwan-fals.blogspot.com/2007/03/lirik-album-opini.html">Iwan Fals</a>). Yah google memang tak ada basa-basi (ga kayak pejabat/koruptor sekarang, emang ada bedanya ya!!!).</div>
<div>
<br /></div>
<div>
Setelah baca sekilas ternyata jawabannya ada dihalaman <a href="http://twitter.com/">twitter.com</a> itu sendiri, yaitu dengan menekan tombol <b>?</b> maka akan keluar informasi shortcut yang bisa digunakan pada twitter. Kira-kira tampilannya seperti ini ketika tombol <b>?</b> ditekan.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_4Sbp3cglhKzH0UB3mu6ZWTSSoqTnF1h1WjYgCldf2Wsajlo2mrTWGUWwNMeBv3OQ2TpOEfOTVYFylh531SQICWUbAHt2QfFwQR1ezwpVEQRcJ-E4ZZs1l9QzvzCQnJGzv0eMwbayZ1Y/s1600/twitter-shortcut.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_4Sbp3cglhKzH0UB3mu6ZWTSSoqTnF1h1WjYgCldf2Wsajlo2mrTWGUWwNMeBv3OQ2TpOEfOTVYFylh531SQICWUbAHt2QfFwQR1ezwpVEQRcJ-E4ZZs1l9QzvzCQnJGzv0eMwbayZ1Y/s400/twitter-shortcut.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Twitter shortcut.</td></tr>
</tbody></table>
<div>
Berdasarkan dari informasi yang muncul dari tindakan diatas bisa dilihat shortcut yang bisa dicoba dan tak perlu penjelasan yang bertele-tele dari ane sendiri.</div>
<div>
<br /></div>
<div>
Ok thanks, and let's be a geek. :)</div>
<div>
<br /></div>
<div class="referensi">
<span class="referensi-title">Tips:</span><br />
Jangan coba di handphone ya..!!!
<img border="0" src="http://static.kaskus.us/images/smilies/hammer.gif" />
</div>
<div>
<br /></div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-4491391318516045520.post-58918247002135354802011-11-04T00:00:00.000+07:002011-11-04T23:06:36.856+07:00Touchpad Tap Button dengan Debian<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-063AmTg87Aw/TrP6sr5YGSI/AAAAAAAAApM/y8uXdDA8XSc/s1600/no-image.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhinBbluTX1eYfkJQj-IvRxxKqPaF83sr1iA6A6vFxaMBIEhYhbCVjtxjyYQi8g4UeEoJr1a_D_wAXu-UoEHZcFlpvTu-j5MEJLu8NMMWcZZkmTG8WBxL1KkJMaPLyAac2TBhgr6ReCTmk/s1600/no-image.png" /></a></div>
Sewaktu install <a href="http://www.debian.org/">Debian</a> squeeze, ternyata tap button1 (tombol klik kiri dengan menekan touchpad) tidak terdeteksi oleh Debian, ane sempat bingung karena tombol klik kiri pada touchpad telah rusak dan hampir ga bisa dipake lagi.<span class="fullpost">
</span><br />
<div>
Awalnya ane menggunakan cara manual yaitu dengan mengetikkan perintah <b>synclient TapButton1=1</b> tapi lama-lama bosan juga tiap login harus ketik perintah itu dulu.</div>
<div>
<br /></div>
<div>
Pas browsing diinternet nyari bantuan ane kemudian "tersesat" <a href="http://en.gentoo-wiki.com/wiki/Synaptics_Touchpad">disini</a> dan <a href="http://fedorasolved.org/Members/khaytsus/configuring-synaptics-using-hal">disini</a> yaitu di situs wikinya Gentoo dan situs yang memuat informasi tentang Fedora, disitu ditawarkan(haha kaya jualan) beberapa alternatif untuk settingannya, mulai dari yang paling geek yaitu dengan setting langsung di-<i>kernel</i> ampe setting lewat xorg.<br />
<a name='more'></a></div>
<div>
<br /></div>
<div>
Awalnya ane tentu pilih yang paling mudah yaitu setting lewat xorg, tapi karena malas bikin file xorg.conf nya selain itu jika user lain yang login tentu mereka akan mengalami masalah yang sama juga, akhirnya ane coba setting lewat file <span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px; white-space: pre-wrap;"><b style="font-family: Monaco, 'Courier New', Courier, monospace; font-size: 12px;">/etc/X11/xorg.conf.d/00-enable-taps.conf </b><span class="Apple-style-span" style="font-family: inherit;">tapi ane justru ga nemuin file<span class="Apple-style-span" style="font-family: inherit;"> tersebut, dari baca manual perintah synclient akhirnya ane tau kalo filenya ada di <b>/usr/share/X11/50-synaptics.conf</b>. </span></span></span></div>
<div>
<span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px; white-space: pre-wrap;"><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="font-family: inherit;"><br /></span></span></span></div>
<div>
<span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px; white-space: pre-wrap;">Setelah nemu filenya ane tambahin kode berikut (yang dibold), kemudian reload konfigurasinya lagi dan semuanya beres</span></div>
<div>
<span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px; white-space: pre-wrap;"><br /></span><br />
<span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px; white-space: pre-wrap;">
</span><br />
<pre><span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px; white-space: pre-wrap;">Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
<b>Option "TapButton1" "1"</b>
EndSection
</span></pre>
</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-60004067820919671352011-11-01T21:19:00.000+07:002011-11-04T15:24:27.629+07:00Shell Scripting: Increment dan Decrement nilai dengan Bash<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBVnVBm_k5YJaDrmX1Vv9a7ZP5gOTS_n4xj-p9zT3TFWaiSPGXPfLuen7KX6gJ4Qi-WlfrhNXWjo-IukPznkbGf3PNsVsowCvzryEik6adwLoCtx_-ZUJB8vvJSDqjXpGMO94J8qeWD8E/s1600/increment-decrement.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBVnVBm_k5YJaDrmX1Vv9a7ZP5gOTS_n4xj-p9zT3TFWaiSPGXPfLuen7KX6gJ4Qi-WlfrhNXWjo-IukPznkbGf3PNsVsowCvzryEik6adwLoCtx_-ZUJB8vvJSDqjXpGMO94J8qeWD8E/s1600/increment-decrement.png" /></a></div>
Increment dan Decrement pada bahasa pemrograman adalah menaikkan/menurunkan nilai satu variabel satu tingkat dari nilai yang telah diset pada variabel tersebut.<span class="fullpost"> </span><br />
Misalkan kita mempunya sebuah variabel dengan nama <b>_var</b> yang nilainya adalah <b>3</b> jika kita lakukan <i>decrement</i> maka nilai variabel tersebut menjadi <b>2</b> dan akan kembali menjadi <b>3 </b>jika kita melakukan proses <i>increment.</i><br />
<i><br />
</i><br />
Seperti kebanyakan bahasa pemrograman melakukan proses ini bisa dilakukan dengan mudah yaitu dengan menambahkan dua(2) karakter plus(+) untuk proses <i>increment</i> dan minus(-) pada proses <i>decrement</i>. Misalkan pada bahasa C seperti kode berikut.<br />
<pre class="prettyprint lang-c linenumbers">int main() {
<span class="Apple-tab-span" style="white-space: pre;"> </span>int x = 3;
<span class="Apple-tab-span" style="white-space: pre;"> </span>x++; // nilai x menjadi 4
<span class="Apple-tab-span" style="white-space: pre;"> </span>x--; // nilai x kembali menjadi 3
<span class="Apple-tab-span" style="white-space: pre;"> </span>return;
}
</pre>
<br />
<a name='more'></a>Bagaimana melakukannya pada scripting language seperti Bash, dulu saya berpikir bisa melakukannya dengan cara yang hampir sama dengan kebanyakan bahasa program pada umumnya seperti dibawah ini<br />
<pre class="prettyprint lang-sh linenumbers"># deklarasi variabel _var
_var=3
#increment _var
$_var++
</pre>
<br />
<br />
<br />
Namun ternyata cara seperti itu justru menghasilkan error yang artinya tidak dikenali oleh bash sendiri, setelah saya baca beberapa tulisan di internet dan manual bash sendiri ada beberapa cara yang bisa dilakukan yaitu<br />
<br />
<ol>
<li>Menggunakan perintah <b>expr.</b><br />
Cara ini cara yang pertama yang saya pelajari (<i><b>man expr</b></i>), contoh menggunakan expr<br />
<pre class="prettyprint lang-sh linenumbers"># deklarasi variabel _var
_var=3
#increment _var
_var=$(expr $x + 1)
</pre>
</li>
<li>Menggunakan perintah <b>let.</b><br />
Meski menggunakan perintah <b>let</b> tapi perintah ini bukanlah suatu program melainkan <i>built-in syntax</i> dari Bash jadi perintah ini lebih cepat dari <b>expr</b>. Perintahnya mirip dengan kebanyakan bahasa programming lainnya dalam melakukan operasi <i>increment.</i><br />
<pre class="prettyprint lang-sh linenumbers"># deklarasi variabel _var
_var=3
#increment _var
let '_var++'
</pre>
</li>
<li>Melakukan operasi didalam 2 tanda kurung.<br />
Cara ketiga yaitu mirip dengan cara yang biasa dilakukan pada bahasa programming lainnya tapi perintah ini harus diapit oleh 2 tanda kurung, contohnya seperti dibawah ini<br />
<pre class="prettyprint lang-sh linenumbers"># deklarasi variabel _var
_var=3
#increment _var
((_var++))
</pre>
</li>
</ol>
<br />
Secara pribadi saya sendiri lebih suka melakukannya dengan cara ketiga,<br />
<br />
<div class="referensi">
<span class="referensi-title">HINT:</span><br />
<ul>
<li>Dalam memberikan nilai variabel dalam shell-scripting(bash) tidak boleh ada spasi antara nama variabel dan nilai yang diberikan.<br />
Cara yang salah <b>x = 5</b><br />
Cara yang benar <b>x=5</b><br />
</li>
<li>Jika menggunakan <b>expr</b> untuk perkalian adalah dengan menggunakan karakter <b>bintang(*)</b>, agar bisa dikenali oleh <b>expr</b> maka harus ditambahkan karakter <b>escape(\)</b>, contoh: <b>expr $x \* 4.</b></li>
</ul>
</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-60329619956550312612011-10-30T12:00:00.000+07:002011-10-30T12:00:00.061+07:00Let's Go Programming LanguageTrying to learn a new language in programming, Go Language visit website at <a href="http://golang.org/">http://golang.org/</a><br />
<div><br />
</div><div>My First go code</div><br />
<br />
<div><pre>package main
import "fmt"
func main() {
<span class="Apple-tab-span" style="white-space: pre;"> </span>fmt.Println("Hello, World")
}</pre><br />
Trying go on your browser. <a href="http://golang.org/doc/play/">http://golang.org/doc/play/</a><br />
</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-48211142340273156272011-08-08T20:08:00.010+07:002011-09-12T13:50:37.221+07:00Test Speed: Penggabungan string (concat dan implode)<div>Pada PHP kita bisa menggunakan 2 cara untuk menggabung string yaitu dengan operator <b><a href="http://php.net/manual/en/language.operators.string.php">titik(.)</a></b> atau lebih dikenal dengan <i>concatenate</i>, dan menggunakan fungsi <b><a href="http://php.net/manual/en/function.implode.php">implode</a></b>.Perbedaanya adalah pada fungsi <i>implode</i> <i>string</i> yang akan digabung adalah variabel <i>array</i>, sedangkan menggunakan <i>concatenate</i> kode jadi lebih mudah dimengerti dan tidak harus menggunakan <i>array</i>.</div><div><br />
</div><div>Saya penasaran dengan kedua fitur tersebut terutama dalam masalah kecepatan, berikut beberapa baris kode yang saya gunakan untuk test kecepatan diantara kedua fitur tersebut.<br />
<a name='more'></a></div><div><pre class="prettyprint lang-php linenumbers"><?php
// (a) emaniacs
define ('STR', 'satu');
$COUNT = 10;
$arr = array();
function use_implode($arr) {
$res = '' ;
$s = microtime(true);
$res = implode ($arr);
$e = microtime (true) - $s;
return $e;
}
function use_concat ($arr, $count) {
$concat = '';
$s = microtime(true);
for ($n = 0; $n < $count; $n++)
$concat .= $arr[$n];
$e = microtime (true) - $s;
return $e;
}
for ($x = 1; $x < 5; $x++) {
$arr = array();
/* create array */
for ($i = 0; $i $lt; $COUNT; $i++)
$arr[] = STR;
/* tampilkan hasil */
echo "Jumlah looping " . $COUNT . "\n";
echo "implode = " . use_implode($arr) . "\n";
echo "concat = " . use_concat($arr, $COUNT) . "\n";
echo "------------------\n";
/* naikkan nilai $COUNT */
$COUNT = $COUNT . '0';
$COUNT = (int) $COUNT ;
}
</pre></div><br />
Versi PHP yang digunakan adalah versi 5.3.3 kompile dari source<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1_X06b_pimYTWjR4rixir1n0dtXdbgjV9DlN39QKBkj0SvGHFv6C0pdwToOKX17OJEUv60x-o49wMeWCORRmcpjws322PTe_cBLq_NnGoLX86ClRw5MRjRz36aEjt34fKdhP-roC1xuE/s1600/concat-vs-implode.00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="53" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1_X06b_pimYTWjR4rixir1n0dtXdbgjV9DlN39QKBkj0SvGHFv6C0pdwToOKX17OJEUv60x-o49wMeWCORRmcpjws322PTe_cBLq_NnGoLX86ClRw5MRjRz36aEjt34fKdhP-roC1xuE/s400/concat-vs-implode.00.png" width="400" /></a></div><br />
<br />
Berikut hasil testnya, dengan jumlah <u>COUNT</u>(jumlah array yang ingin digabung) yang berbeda. <span class="fullpost"> </span><br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhBL0fYLIdSDrb1dJCMlkYQOsG8OfGY0ceQY9-XM8Ye_bxAc4fRP36ym16RE2l7M2UrEmhGzEI9ceq8ubfdBrHHmk8K4QJ5sSZN-qTmuQ3QCnXjTRh6X5gIKTy4bkpUPwKOQ1Elvo07E0/s1600/concat-vs-implode.01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhBL0fYLIdSDrb1dJCMlkYQOsG8OfGY0ceQY9-XM8Ye_bxAc4fRP36ym16RE2l7M2UrEmhGzEI9ceq8ubfdBrHHmk8K4QJ5sSZN-qTmuQ3QCnXjTRh6X5gIKTy4bkpUPwKOQ1Elvo07E0/s1600/concat-vs-implode.01.png" /></a></div><br />
<br />
Dari hasil output diatas bisa dilihat, kalo <i>concat</i> lebih hanya jika jumlah <u>COUNT</u> atau array yang akan digabung berjumlah tidak kecil (dalam test diatas <u>COUNT</u>=10), selebihnya <i>implode</i> lebih cepat meski perbedaannya tidak terlalu mencolok.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-86832535755051127142011-08-07T20:07:00.000+07:002011-09-12T13:50:37.223+07:00HTML: Mencegah teks otomatis pada input (autocomplete)<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Dljrh_ijAY5wOu-gcb1XYohyphenhyphen1Z2WqnmAwL6qG-O5a8WslmBZz4zwZsZpRHC1_zu3AsqX2OZZ0A5V6j1pk1z_yEbiNbwFZz5Edcy7EQYRxodlCGGkjBKTBCNM2qTT9bQaloVLUY282Q8/s1600/autocomplete.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Dljrh_ijAY5wOu-gcb1XYohyphenhyphen1Z2WqnmAwL6qG-O5a8WslmBZz4zwZsZpRHC1_zu3AsqX2OZZ0A5V6j1pk1z_yEbiNbwFZz5Edcy7EQYRxodlCGGkjBKTBCNM2qTT9bQaloVLUY282Q8/s1600/autocomplete.png" /></a></div><span class="fullpost"> Fitur yang biasanya ada pada form adalah <b>autocomplete</b>, yaitu teks yang otomatis menyesuaikan dengan yang kita input, fitur ini biasanya adalah fitur bawaan dari browser, meski kita juga bisa membuatnya dengan kode, baik javascript atau php. Penggunaannya yang paling sering kita lihat adalah pada halaman login.</span><br />
<a name='more'></a><br />
<span class="fullpost"><br />
</span><br />
<span class="fullpost">Fitur ini sangat membantu apalagi jika sering login dan punya akun yang banyak pada beberapa situs. Saya sendiri menggunakan fitur ini pada komputer pribadi.</span><br />
<span class="fullpost">Namun hal ini bisa jadi bahaya kalo kita login dikomputer umum seperti komputer kantor atau warnet, karena email atau username akan mudah diketahui.</span><br />
<br />
Kadang saya sendiri jika masuk ke sebuah warnet, mencoba untuk menekan semua karakter(a-z) untuk melihat email atau user yang pernah login pada browser.<br />
Dari sisi coding autocomplete ini bisa dicegah dengan menambahkan atribut pada tag yang diinginkan, biasanya adalah pada tag input, yaitu menambahkan atribut <b>autocomplete=off </b>berikut contoh kodenya..<br />
<pre class="prettyprint lang-html"><input
type="text"
name="nama"
autocomplete="off" >
</>
</pre><br />
<span class="Apple-style-span" style="font-size: large;">Autocomplete pada textarea</span><br />
Jika digunakan pada tag input atribut ini berfungsi dengan baik bagaiman jika digunakan pada textarea, hal ini tidak akan berfungsi.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-4491391318516045520.post-13476537250765942962011-06-27T06:27:00.015+07:002011-09-12T13:50:37.224+07:00Javascript: onclick, tag didalam tag (parent and child)Masalah ini berawal dari sebuah <i>thread</i> yang ada di <a href="http://kaskus.us/">Kaskus</a> disitu ada pertanyaan bagaimana mengatasi <i>event click</i> pada sebuah <b>div</b> yang merupakan <b>child</b> dari <b>div</b> yang juga mempunyai <i>event click</i> pada div tersebut. Jika digambarkan kurang lebih, tampilan format div tersebut seperti ini.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTGVAB9lV1ObbkcAeuj7GU1eJeMJKEY_GgxYgjFNYyamKEM085zoIG8tkEspU5MukxRzc2OIABPLlH7X0f0qaBvVZnWSD_cO3QRwmq9Q5kSrqM_lqPXv6Gw_wZaI2jjybtOGdHq5Ch7BM/s1600/parent-child.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTGVAB9lV1ObbkcAeuj7GU1eJeMJKEY_GgxYgjFNYyamKEM085zoIG8tkEspU5MukxRzc2OIABPLlH7X0f0qaBvVZnWSD_cO3QRwmq9Q5kSrqM_lqPXv6Gw_wZaI2jjybtOGdHq5Ch7BM/s320/parent-child.png" width="320" /></a></div><br />
<span class="fullpost"> </span><br />
<a name='more'></a><span class="fullpost">Kalo menggunakan format javascript biasa seperti ini</span><br />
<pre class="prettyprint lang-js linenumbers">function parent_click(){
alert("parent diklik");
}
function child_click(){
alert("child diklik");
}
</pre><br />
<span class="fullpost">Maka ketika diklik pada bagian child, akan terjadi 2 kali pemanggilan <i><b>event </b></i>klik, yang pertama <i><b>event </b></i>untuk child dan yang kedua pada parent. Tentu hal in agak sedikit menggangu, untuk mengatasinya bisa dengan 2 cara yaitu </span><br />
<ol><li><span class="fullpost">Menggunakan logika pemrograman pada Javascript.</span></li>
<li><span class="fullpost">Menggunakan CSS style.</span></li>
</ol><br />
<span style="font-size: large;">Menggunakan logika pemrograman pada Javascript</span><br />
<br />
Disini kita mengunakan logika atau mengakalinya dengan coding itu sendiri, yaitu dengan <u>membuat sebuah variabel global untuk pengecekan event ketika diklik pada fungsi parent</u>, berikut contoh kode untuk menangani masalah tersebut.<br />
<br />
<pre class="prettyprint lang-js linenumbers">var childOnClick = false;
function parent_click(){
if(childOnClick) {
childOnClick=false;
return;
}
alert("parent diklik");
}
function child_click(){
childOnClick=true;
alert("child diklik");
}</pre>Diatas saya buat sebuah variabel yaitu <u><b>childOnClick</b></u> yang akan digunakan ketika fungsi <u><b>parent_click</b></u> dipanggil, jika dia true berarti <i><b>event </b></i>berasal dari <b>div </b>pada child yang diklik, dan hal ini diabaikan.<br />
<br />
<span style="font-size: large;">Menggunakan CSS style</span><br />
<br />
Penggunaan ini lebih gampang, yaitu dengan menambahkan kode css yaitu <i><b>z-index</b></i> pada tag <b>div </b>tersebut, misalkan tag parentnya adalah <b><parent></b> dan tag childnya <b><child></b>, jadi pada tag child ditambah menjadi seperti ini.<br />
<pre class="prettyprint lang-html linenumber"><div id="parent" style="z-index:0" >
<!-- kode disini -->
</div>
<div id="child" style="z-index:2" >
<!-- kode disini -->
</div>
</pre><br />
Nilai <i><b>z-index</b></i> dari child harus lebih besar dari nilai <i><b>z-index</b></i> untuk parent.<br />
<br />
<br />
========= C-x C-c ==========<br />
<br />
<br />
<span class="fullpost"> </span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-81619885957547226532011-06-26T18:26:00.002+07:002011-09-12T13:49:28.595+07:00Kenapa harus install ulang<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieAogc2r85d4Bp6k30k6wOgPj5VtfHfGh_XN0Zg1rST9sN4_nNvSDpQeor9h1g6Y-k1KIBQcZT_3SIocDSxfJgqoj2VBxpj5Wxn13onDSXhB4g-YuzD7oDlQesvxJwJ3A8D3bMUz4C_Kg/s1600/logo-debian.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieAogc2r85d4Bp6k30k6wOgPj5VtfHfGh_XN0Zg1rST9sN4_nNvSDpQeor9h1g6Y-k1KIBQcZT_3SIocDSxfJgqoj2VBxpj5Wxn13onDSXhB4g-YuzD7oDlQesvxJwJ3A8D3bMUz4C_Kg/s1600/logo-debian.png" /></a></div><span class="fullpost">Gara-gara update <i>library </i>tanpa baca <b>README </b>terlebih dahulu akhirnya Linux ane jadi berantakan, window tampil sesuka, bahkan taskbar ada semacam tombol <i>minimize </i>dkk, setelah coba <i>update </i>dependensi program akhirnya saya nyerah, karena banyak banget ternyata yang harus diganti, dan keputusan akhirpun saya putuskan untuk install ulang. Tapi kali ini bukan dengan Ubuntu lagi, saya beralih menggunakan Debian.</span><br />
<span class="fullpost"></span><br />
<a name='more'></a><span class="fullpost"><br />
</span><br />
<span class="fullpost">Sebenarnya udah lama ingin ganti ke Debian, karena banyak hal terutama masalah stabilitas, Debian sudah terkenal sebagai distro yang sangat mengutamakan kestabilan dan security, bisa dilihat dari rilis Debian yang lebih mengutamakan hal tersebut. Meski saya sendiri tak terlalu mempermasalahkan distro yang digunakan, karena saya sendiri lebih suka menyebut diri saya sebagai GNU User dari pada Linuxer, atau mungkin Open Source Fans.</span><br />
<span class="fullpost"><br />
</span><br />
<span class="fullpost">Oke balik kembali ke masalah yang saya hadapi diatas, ada banyak hal yang sebenarnya mengharuskan saya install ulang Linux di netbook, beberapa diantaranya.</span><br />
<ul><li><span class="fullpost">Banyak aplikasi yang sama.</span><br />
Banyaknya aplikasi yang sama ini karena, saya sering melakukan install aplikasi lewat <i>source</i>, terutama aplikasi-aplikasi yang masih <i>unstable</i>, dan baru dirilis, kebanyakan semua program itu saya install di <b>/opt</b>. Sebenarnya bisa aja dihapus tapi ada sebagian program yang justru saya gunakan sehingga hal ini kadang bentrok dengan aplikasi bawaan distro.<br />
</li>
<li><span class="fullpost">Library yang tidak beraturan.</span><br />
Hal ini masalahnya sama gara-gara yang diopsi pertama.</li>
<li><span class="fullpost">Tampilan yang tak beraturan</span><br />
Hal ini yang paling membuat saya menjadi tidak nyaman, karena ingin mencoba GTK3 dan Gnome3, saya coba melakukan install lewat source, tapi karena masalah kompabilitas pada GTK3 dan 2 (hal ini saya dapat ketika membaca <b>README</b>) harusnya ketika <b>./configure</b> ada opsi agar tidak mengganggu GTK2 yang ada pada komputer saya, meski instalasi gagal, namun library lainnya telah terinstall, yang membuat tampilannya jadi berantakan. Selain itu juga karena saya mencoba membuat theme sendiri untuk window, desktop yang saya gunakan XFCE4 dan Gnome telah saya hapus, karena tidak mengerti dengan gtkrc akhirnya tampilannya agak sedikit kacau<br />
</li>
<li><span class="fullpost">Ingin mengubah partisi.</span><br />
Salah satu alasan saya ingin mengubah partisi agar nanti ketika install ulang beberapa direktori penting seperti <i>/opt/</i>, <i>/var</i> dan <i>/home</i> tidak harus diformat ulang, tapi bisa digunakan untuk distro lainnya, baik yang akan diinstall atau dipartisi lain. Ini baru percobaan, rencananya saya mau menggunakan 2 distro tapi dengan direktori <i>/home</i> yang sama.<br />
</li>
</ul><br />
<span class="fullpost">Sedangkan beberapa hal yang membuat saya agak berat melakukan instalasi ulang yaitu </span><br />
<ul><li><span class="fullpost">Aplikasi dan konfigurasinya</span><br />
Ini yang paling berat, karena aplikasi yang telah saya install sangat banyak, bahkan diantaranya telah dikonfigurasi sesuai dengan kebutuhan saya, hal ini terutama yang berkaitan dengan pemrograman dan server. Kalau masalah konfigurasi saya telah melakukan backup, namun tetap saja agar bisa berjalan dengan lancar perlu beberapa penyesuaian. Sedangkan masalah aplikasi mau tak mau saya harus install ulang lagi semua, hal ini yang paling berat. Ada beberapa diantara aplikasi tersebut hanya berupa skrip dan ini bisa diatasi dengan backup, tapi kalo untuk yang lain, hal ini tidak mungkin apalagi kalo <i>kernel.</i><br />
</li>
<li><span class="fullpost">Desktop dan shortcut</span><br />
Seperti biasa saya telah setting beberapa shortcut penting untuk aplikasi favorit saya, dan kalo diinstall ulang tentu perlu disetting lagi<br />
</li>
</ul>Karena masalah lebih banyak hal terbaiknya adalah install ulang, saya pun mulai mencari file iso dari Debian diinternet, untuk lokal ada di <a href="ftp://dl2.foss-id.web.id/iso/debian/">ftp://dl2.foss-id.web.id/iso/debian/</a>, tapi yang disitu masih Debian 5, atau di <a href="http://kambing.ui.ac.id/iso/debian/">http://kambing.ui.ac.id/iso/debian/</a>, saya lihat yang di kambing.ui lebih baru akhirnya saya coba download dari situ, yang terbaru adalah versi 6.0.1a namun ketika saya lihat disitu ada sekitar 8 iso dvd yang bisa didownload.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjepLokB13Swm1PJfYyvKFLUkWDvdnATm5bucfbHMac7BQq7V0To3i1D5t0TZ6m4gA7kdmUmo4QrVT-8SnDtzslHTNmjZfBG0hr6QR7pM8VI-UlX5PjAQD33yl5VgJcSc-nGNqMC_iyMdI/s1600/debian-dvd-number.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjepLokB13Swm1PJfYyvKFLUkWDvdnATm5bucfbHMac7BQq7V0To3i1D5t0TZ6m4gA7kdmUmo4QrVT-8SnDtzslHTNmjZfBG0hr6QR7pM8VI-UlX5PjAQD33yl5VgJcSc-nGNqMC_iyMdI/s320/debian-dvd-number.png" width="320" /></a></div><br />
Saya coba cari informasi tentang penomoran tersebut, berdasarkan info dari sini <a href="http://www.debian.org/CD/faq/#which-cd">http://www.debian.org/CD/faq/#which-cd</a> ternyata penomoran tersebut adalah sesuai dengan aplikasi yang dibundle, semakin kecil nomornya berarti aplikasinya adalah aplikasi yang digunakan kebanyakan, dan sepertinya pilihan saya adalah yang common atau kebanyakan.<br />
<br />
Ok, this is the time.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4491391318516045520.post-45040230942471268962011-06-20T06:20:00.009+07:002011-09-12T13:49:51.826+07:00Variabel Variabels dengan Bash / Shell Script<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR_uYXuX5QlumJUGlqLqtahGJ0hGRcxDX4watJ0OAphUZ9x0TuIyej71k1Sph662UK_Mw4D1ZGAQgq4oW0to0M_6DByBQ9WB6WDLGcyWRiCyQjnsB6Tr_HLQQDHyOhEwjizQ2cTtvUD9o/s1600/var-var.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR_uYXuX5QlumJUGlqLqtahGJ0hGRcxDX4watJ0OAphUZ9x0TuIyej71k1Sph662UK_Mw4D1ZGAQgq4oW0to0M_6DByBQ9WB6WDLGcyWRiCyQjnsB6Tr_HLQQDHyOhEwjizQ2cTtvUD9o/s1600/var-var.png" /></a></div>Istilah Variabel variabels pertama kali saya dengar di PHP(saya pernah bikin tutorial tentang ini <a href="http://chars19.blogspot.com/2011/06/variabel-variabels-dengan-php-fungsi.html">disini</a>), arti kalimat ini kurang lebih seperti ini, <b>nilai sebuah variabel, dimana nilai tersebut juga merupakan sebuah variabel</b>. Bingung ya, sama berarti saya juga bingung, tapi memang seperti itulah adanya, saya sendiri juga kebingungan ketika pertama kali memahaminya, namun dengan praktek hal ini menjadi lebih mudah dan cepat dimengerti, ya lebih baik langsung praktek dan analisa. Kali ini saya menggunakan Shell Script sebagai bahasa programmingnya.<br />
<div><a name='more'></a>Misalkan ada sebuah variabel seperti ini</div><code>satu="ini adalah nilai variabel satu"</code><br />
<div>Kemudian ada sebuah variabel lagi seperti ini</div><code>nilai="satu"</code><br />
<div>Jika melakukan perintah </div><code>echo $nilai</code><br />
<div>Maka yang dicetak adalah "satu", Nah bagaimana menggunakan variabel <b>nilai</b>, tapi mencetak nilai variabel dari satu, jika menggunakan PHP seperti di postingan ini bisa dengan</div><code>echo $$nilai</code><br />
<div>Tapi di Shell Programming, bisa juga tapi menggunakan metode ini</div><code>echo ${!nilai}</code><br />
<div>perintah diatas akan mencetak nilai dari variabel satu, yaitu "ini adalah nilai variabel satu"<br />
<br />
Pertanyaannya, buat apa metode seperti ini?<br />
Sebenarnya banyak sekali kegunaanya diantaranya seperti kode berikut<br />
<pre class="prettyprint lang-sh linenumbers">x1="bulan ke BULAN tahun 2001"
x2="bulan ke BULAN tahun 2002"
x3="bulan ke BULAN tahun 2003"
</pre>Saya ingin mengambil nilai variabel x1, x2 dan x3 kemudian memprosesnya dalam sebuah looping yang sangat panjang, tentu jika menggunakan satu persatu ini akan membuat kode jadi lebih penjang, seperti ini<br />
<pre class="prettyprint lang-sh linenumbers">x1="bulan ke BULAN tahun 2001"
x2="bulan ke BULAN tahun 2002"
x3="bulan ke BULAN tahun 2003"
for x in {1..12}; do
tmp=$(echo $x1 | sed -e s/BULAN/$x/ | sed -e s/tahun/TAHUN/ )
echo $tmp
done
for x in {1..12}; do
tmp=$(echo $x2 | sed -e s/BULAN/$x/ | sed -e s/nilai/TAHUN/ )
echo $tmp
done
for x in {1..12}; do
tmp=$(echo $x3 | sed -e s/BULAN/$x/ | sed -e s/nilai/TAHUN/ )
echo $tmp
done
</pre><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Hal kaya gini membuat kode jadi lebih panjang, apalagi nilai variabel utama seperti x1 itu sangat banyak. Dengan menggunakan variabel variabel kode diatas bisa dipersingkat menjadi seperti ini</div><pre class="prettyprint lang-sh linenumbers">x1="bulan ke BULAN tahun 2001"
x2="bulan ke BULAN tahun 2002"
x3="bulan ke BULAN tahun 2003"
for y in {1..3}; do
yy="x$y"
vv=${!yy}
for x in {1..12}; do
tmp=$(echo $vv | sed -e s/BULAN/$x/ | sed -e s/tahun/TAHUN/ )
echo $tmp
done
done
</pre><br />
Terlihat kalo kode menjadi lebih singkat, apalagi jika variabel x1 tersebut mencapai 20 atau lebih kode akan menjadi sangat panjang.<br />
Selain menggunakan metode diatas yaitu <br />
<code>${!namaVariabel}</code><br />
bisa juga menggunakan metode ini<br />
<code>eval echo $`echo $namaVariabel`</code><br />
<br />
<br />
/************** END ***************/</div><br />
<div class="referensi"><span class="referensi-title">Referensi</span><br />
<ul><li><a href="http://pgl.yoyo.org/bits/tech/bash-variable-variables/100:2008-12-05/">http://pgl.yoyo.org/bits/tech/bash-variable-variables/100:2008-12-05/</a></li>
</ul></div>Unknownnoreply@blogger.com0