Senin, Januari 23, 2012

Quick Tip: Regex Match Entire String

(for Bahasa Indonesia, see below.)

This is the scenario:

All right, today i'm going to find out how to match a pattern within entire string with regex. What i mean is when i try to check a string, they must have exactly 1 numeric character in the beginning, and unlimited alpha character after. This is what i mean:

  • 0432 should return false
  • 0yep should return true
  • dada 0yep should return false
  • 0yep                                                      should return false
  •                     0yep should return false

so i use this regex:

preg_match('/[0-9][a-z]+/i');

Unfortunately, it also match the third, fourth, and five. After some research, i found there's ^ pattern that means "this pattern should beginning with..". So i changed it to

preg_match('/^[0-9][a-z]+/i');

and it doesn't match the third test case and the fifth case. Unfortunately, it still match the fourth. Again, after some research i found there's $ pattern that means "this pattern should end with..". So i change it to:

preg_match('/^[0-9][a-z]$+/i');

and everything work as expected.

Jumat, Januari 13, 2012

Talkin' Online Business

Sekarang banyak orang yang menggembar-gemborkan bisnis online (baiklah, di sini tidak saya terjemahkan sebagai daring). Tentu saja, kita semua masih ingat bagaimana Bhinneka.com meluncurkan penjualan komputer (dan partnya) secara online pada masa tersulit, krismon. Dan, berhasil. Anda juga pasti tahu banyak penjual yang hanya meraup untung dari FJB Kaskus. Serta cerita lainnya.

Rabu, Januari 11, 2012

Cut The Rope Chrome

Mau Anda sebut chrome, FF, Opera, IE, yang Saya lihat ini salah satu bentuk promosi Microsoft terhadap HTML5 Metro Apps atau IE9. Tetapi yang pasti, apps ini berjalan mulus di peramban Chrome 15 yang Saya coba.

Luar biasa. Ini hanya dengan canvas dan Javascript. Saya penasaran dengan rumus matematis yang mereka pakai. Iya, dari dulu saya sangat pensaran dengan permainan Physics, apalagi yang melibatkan collision dan fluids (dalam hal ini, tali).

Coba deh :D

(video dari Youtube)

Kamis, Desember 15, 2011

SVN Rename



Saya menemukan masalah saat mengcommit repositori SVN yang di dalamnya terdapat folder yang telah Saya re-name. Katanya, foldernya tidak ditemukan. Padahal jelas-jelas ada!

.. Ternyata masalahnya adalah karena di dalamnya ada informasi subversion. Jadi di dalam setiap folder di repositori SVN, terdapat folder hidden .svn yang menyimpan asosiasi folder dan file kita dengan server.



Jadi solusinya? Hapus saja semua folder .svn dari folder yang ingin di-rename (jangan menghapus keseluruhan .svn, karena nanti harus checkout ulang), kemudian add, dan checkout. Sebuah beres semua bahagia.

Meski, me-rename bukanlah solusi. Untuk project besar, jangan coba-coba lakukan ini di tengah jalan. Karena ini sebenarnya bukan rename, tapi delete dan add new. Jadi modifikasi tidak akan dicek. SVN akan menganggap ada penghapusan keseluruhan suatu direktori dan ada penambahan masif.

Selasa, November 29, 2011

Gaya Khusus Peramban (Browser Specific CSS Attribute)

Misalnya:

-webkit-box-shadow: 0 0 5px black;

akan membuat efek bayangan di sekitar target. Tetapi, apa bedanya sama:

box-shadow: 0 0 5px black;

Apa bedanya? Kayanya sama aja tuh. Beda. Coba buka di Firefox (4 ke atas) dan di Chrome. Di chrome berjalan mulus untuk kode paling atas. Tapi di firefox hanya berjalan kode yang bawah. Kenapa bisa begini?

karena -n-m (dengan n adalah nama browser/engine dan m adalah nama atribut) sebenarnya adalah atribut css eksperimental yang belum secara resmi didukung oleh W3C. Dan ini browser specific. Sebut saja CSS transformation. Atribut ini membolehkan kita untuk menampilkan objek dengan styling yang aneh sedikit. Misalnya skew, rotate, scale. Secara resmi, ini belum didukung penuh oleh W3C (masih eksperimental/dalam draft). Maka dari itu harus memakai atribut -moz-transition dan/atau -webkit-transition.

Tertarik memakai fitur eksperimental ini? Coba lihat-lihat tentang CSS3 (lihat bagian CSSnya, abaikan html). Perhatikan bahwa di sana banyak atribut CSS dengan awal -webkit- yang menunjukkan bahwa hingga saat ini atribut tersebut hanya didukung oleh webkit (engine yang digunakan Chrome sebagai renderernya)

Rabu, November 16, 2011

Kalah Sama Feed

Saya gak yakin bahwa kita bisa kalah dengan Feed.

Anda pasti sangat mengetahui, di Twitter, meskipun banyak orang yang memfollow kita dan kita sering mengupdate twitter kita, sangat tidak mungkin tweet 2 tahun yang lalu muncul di lini waktu. Artinya, Anda kalah dengan feed. Anda kalah `waktu` dengan tweet yang lain. Karena sistemnya, siapa yang nge-post paling akhir, dia yang muncul paling pertama.

Sistem ini gak terlalu baik untuk menampilkan lebih dari 1000 post per menitnya. Yang ada Anda akan pusing melihat feed itu terlalu cepat bergerak.

Facebook memilih pendekatan yang lebih baik. Dengan algoritma khusus yang dia miliki, dia dapat menampilkan post yang hanya memiliki relevansi tinggi dengan kita, dan itu bukan berarti post yang baru. Post yang lama pun termasuk. Meski sistem ini lebih baik, bagaimanapun, dia tidak memunculkan post 2 tahun yang lalu. Karena `relevansi tinggi` itu hanya untuk post yang sering didiskusikan saja (baca: aktivitas di post itu tinggi, misal commentnya/viewnya/likenya banyak).

Facebook merubah pendekatan ini dengan "On This Day in 2009/2010". Facebook akan menampilkan status kita di tahun sebelumnya (jika ada) di tanggal yang sama. Oke berarti probabilitas kita melihat post kita 2 tahun yang lalu lebih besar.


Sekarang, kita gak kalah sama feed lagi.

Sabtu, November 12, 2011

Minggu, Oktober 30, 2011

Freebie: Sertifikat

Jadi ceritanya tadi Saya ada senior Saya yang minta desain sertifikat. Saya pernah membuatnya,, tetapi Saya khawatir masalah hak cipta, maka dari itu Saya buat saja yang baru.

Terima kasih kepada pembuat Blue Orb juga, Saya gunakan artwork beliau di sertifikat ini. Aslinya, gambar Blue Orb ini dilisensikan dalam CC-NC-SA

http://www.mediafire.com/?m8soepg2csa018q

Sabtu, Oktober 29, 2011

WHAT?! Decoder H.264 via Javascript?

Tautan asli: http://badassjs.com/post/12035631618/broadway-an-h-264-decoder-in-javascript-running-at


Broadway: An H.264 Decoder in JavaScript Running at 30fps
image
I’ve been seeking an H.264 decoder in JavaScript for some time now, and my wish has finally come true.  We’ve seen lots of other formats be implemented in JS, including PDFMP3MP2PNGJPGBMP and more, but the real test of whether JS is really up for the task in terms of performance would be decoding a video codec and displaying it at a reasonable frame rate.  We aren’t quite there yet as this demo really requires Firefox Nightly with Type Inference turned on (very cool btw) to get even decent frame rates, but it is a start.
Broadway, by Michael Bebenita is a demo of Android’s open source C++ H.264 decoder compiled to JavaScript with Emscripten, and then optimized with Google Closure compiler.  It is not hardware accelerated in any way, so it will probably use a good deal of CPU, especially in non Type Inference’d environments.  They are also currently working on an hand-rolled JS implementation which is not yet complete.
I have put up the demo for you to check out.  Please make sure you are running Firefox Nightly, otherwise you will probably be very disappointed. If you aren’t running the nightly and don’t feel like downloading it, just to prove that 30 fps video decoding in JS is possible, here is a video of Brendan Eich showing off the decoder in a presentation.
image
Some of you might be asking why?  Why would you want to implement formats like this that should be implemented in hardware in JavaScript of all places?  Well, unfortunately there are browsers like Firefox that refuse to implement the defacto-standard in video codecs in their browsers.  Whether or not it would cost them money, it is against their morals to include anything patented in their software.  OK.  So what’s the next best course of action?  Well, you can either encode your videos in three different codecs to cover all your bases, or just in H.264 and use the JavaScript implementation to play it.  And plus, it is an extremely cool demo showing that JavaScript doesn’t have to be a slow language like some say it is.
Mozillian Mike Shaver is totally jazzed about this work, not because of H.264 itself necessarily, but because it shows that JS can be really fast and that “people should be very skeptical of claims that we need to replace JS (Dart, NaCl) to go fast,” as he told me on Twitter.
This is very cool work!  Let’s all thank the browser JS engine developers who make our code go fast.  As you can see from this demo, there is still much to come!

Sabtu, Oktober 22, 2011

Jatuh Cintrong dengan sessi

Sassy (atau dibahasaIndonesiakan disebut sessi?) adalah sebuah ruby gem yang memungkinkan kita "editing style with more style". Saya melihat Sassy dapat memudahkan kita dalam membuat css yang lebih terstruktur.

Ceritanya, saya belum punya Ruby. Akhirnya install dulu. Ternyata mudah! Sama mudahnya dengan mengunduh dan mengompile node.js (Ya, entah kenapa Saya sekarang suka apps apps yang "compile by yourself" :p gak terlalu sulit juga, meski ruby untuk windows bisa gak install sendiri).

Dann.. Yay, dengan gem install sass, tunggu sebentar (awalnya sempet ragu karena cmd hanya hitam saj), tahu-tahu langsung 1 gem installed. Oke, it's sassy time!



Yang paling saya suka adalah karena kita bisa menyisipkan fungsi dan variabel di dalam sass. Juga, kita bisa membuat cssnya nesting! Coba lihat kode sumber berikut:

// tes.scss <-- i love this! C style commenting!
.gakpakemargin { margin: 0; padding: 0 }
body {@extend .gakpakemargin; font-family: Segoe UI}
nav { ul, ol, li { /* semua ul dan ol di dalam nav gak pake margin dan list style nya gak ada */ @extend .gakpakemargin; list-style: none; } }

Oh iya, itu baru penggunaan extend dan nesting. Masih banyak fungsi sass lainnya.

Menarik sekali!

Unknown Identifier: '/'

PHP lagi! Jadi ceritanya, saya mau targeting teks antara $sesuatu dan /$sesuatu

Semuanya berjalan mulus di regexr dengan bentuk

(\$)([A-Za-z0-9]+)(.+)(/\$)([A-Za-z0-9]+)

dan sama sekali tidak berjalan dengan lancar di PHP untuk kode:

preg_match_all("/(\$)([A-Za-z0-9]+)(.+)(/\$)([A-Za-z0-9]+)/s", $datamentah, $array_multiple);

Setelah searching di Google, ternyata hal ini disebabkan Saya memakai identifier yang sama untuk penanda awal bentuk dan akhir bentuk. Solusinya, ubah saja penandanya. Di sini saya memakai persen:

preg_match_all("%(\$)([A-Za-z0-9]+)(.+)(/\$)([A-Za-z0-9]+%s)", $datamentah, $array_multiple);

Sabtu, Oktober 15, 2011

By Reference di PHP

Anda semua tahu, Java akan memberikan informasi by reference secara otomatis (dan gak bisa diotak-atik, setikdanya sampai Java 6) jika nilai yang diberikan bukan objek primitif.

Di PHP, semua variabel yang kita berikan adalah reference, sampai kita merubah nilai di variabel tersebut, barulah PHP melakukan copy isi nilai variabel.

Bagaimana jika kita tidak ingin melakukan copy, tetapi justru kita menginginkan reference?

mudah saja, gunakan operator &.

Misal:

$var = 'a';
$var2 = $var . 'b';
echo $var2; // ab
$varc &= var;
echo $varc // a
$var = 'cd';
echo $varc; // cd
echo $vaf2; //ab

sip?
Btw, di tengah-tengah Anda juga dapat memberikan variabel sebagai reference, gak harus di operasi pengesetan variabel. Misal:

function reference($var1, &$var2)

Sabtu, Oktober 01, 2011

Where, AND, OR

http://forums.digitalpoint.com/showthread.php?t=132300

Jadi masih dalam aplikasi yang sama dengan post sebelumnya, kali ini tentang filtering.

Saya agak kesulitan filtering, karena aturannya kompleks. Harus bertipe X tapi memiliki nilai lebih dari Y dan juga memiliki sifat A atau C tetapi tanpa tipe B. Ya bayangannya seperti itu.

Ternyata, where bisa dipakaikan bracket! Wow.

Dari tautan di atas, selanjutnya saya bisa menulis kode seperti ini:

SELECT G.groupID, G.groupName
FROM `groups` G, `groupMembers` M
WHERE (M.userID = '$sessionUserID' 
OR M.userID = '$profileUserID')
AND G.groupID = M.groupID
LIMIT 0,99;

Senin, September 12, 2011

Daripada Inline Block, Mendingan Position

Tiba-tiba terpikirkan, pilih mana, inline block atau memakai position? Pertama, menggunakkan position:relative dan/atau position absolute tanpa memikirkan metric/ukuran/box model adalah suatu mimpi buruk. Penggunaan position hanya bisa dilakukan dengan memperhatikan metric secara cermat.

Tetapi position dijamin jalan di semua peramban. Berbeda dengan inline block yang memiliki masalah di IE6.

Omong-omong, dari tautan yang Saya dapat, ternyata ada inline block yang bisa di-run di semua peramban.

display:-moz-inline-stack;display:inline-block;zoom:1;*display:inline;

Senin, September 05, 2011

Masalah Javascript, jQuery, dan Href

Jadi ceritanya Saya ingin membuat sebuah aplikasi web dengan backward compatibility dengan skenario begini:

<a href="http://server/data/">Dapatkan data</a><div id="data">
</div>
$("a").click(function() { ... mengambil data di server, dan ditaruh ke #data dengan ajax) } ) ;

Tetapi kenyataannya, dengan fungsi tersebut, meski javascript aktif, saat kita klik anchor justru selalu mengarah ke href. Memang script click dijalankan, tetapi tetap saja setelah dijalankan, dia akan mengarah ke href.

Usut punya usut, alhamdulillah, pencarian di Google memberikan hasil.

Di click, cukup return false saja, maka window tidak akan pernah mengarah ke href, selama javascript aktif.

Mudah, yah?

<a href="http://server/data/">Dapatkan data</a>
<div id="data">
</div>

$("a").click(function() 
{
$.get("server/data?get=htmlajaxrequest", 
   function(html) { 
       $("#data").html(html) 
});
return false;
}
);




Selasa, Agustus 30, 2011

UI Web Terbaik, For Sure?

For sure, UI Web terbaik?

Wallahualam, mereka melansir berita dari data Webometrics yang jelas-jelas dipertanyakan kebenaran datanya. Baiklah, kita tidak membahas tentang bagaimana Webometrics me-meringkat-i web-web universitas. Tetapi, bolehlah kita bermain-main sedikit tentang..

tidak tentang desain, tetapi di sini kita coba mengambil kesimpulan dari sudut pandang yang berbeda (dan mungkin ngaco).

Jreng, bandingkan dulu web ITB dan UI. Di sini Saya hanya mengambil skrinsyut mereka. Sebagai perbandingan, tidak ada yang salah Anda juga melihat web whitehouse.gov, its.ac.id, dan ugm.ac.id (yap, website Whitehouse itu sebagai benchmark).


Minggu, Agustus 28, 2011

htaccess di Masterweb

Entah kenapa, htaccess sakti yang sering saya gunakan di host lainnya tidak bekerja di MWN. Alhasil saya gunakan htaccess ini dan alhamdulillah lancar jaya :)



    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]



    ErrorDocument 404 /index.php
  

Rabu, Agustus 24, 2011

Adik-adikku, Kalian Keren!

Saya salut dengan rekan-rekan baru Fasilkom 2011. Mulai dari kekompakannya, hingga kemampuan akademisnya. Btw, kemarin baru disuruh untuk membuat blog IT oleh panitia dan inilah hasilnya.

Cool though? I'm gonna subscribe their RSS. How about you?


kelompok 3 (SERGEY BRIN) - open source - http://clickoss.blogspot.com/
kelompok 4 (MARK ZUCKERBERG) - tutorial sosial media - http://sosmed-info.blogspot.com/
Kelompok 5 (STEVE JOBS- game review - http://asalasalgame.wordpress.com
Kelompok 6 (ANDY RUBIN) - software anak bangsa - http://software-anak-bangsa.blogspot.com
Kelompok 7 (RICHARD STALLMAN) - berita teknologi gadget terbaru - http://tech-news-logy.blogspot.com/

Selasa, Agustus 16, 2011

This Is Premiere!



Terima kasih semua tim video profile FUKI :)) Mohon maaf sekali pada bagian-bagian yang tidak berkenan :))

Beberapa hal yang Saya pelajari dari bermain-main PRE ini adalah: