Counting string tertentu dalam text gampang-gampang susah. Dulu saya sering menggunakan kombinasi program-program GNU seperti grep,awk. Sekarang saya lebih suka perl. Untuk aplikasi web, php atau java. Berikut teknik yang saya pakai dalam mengimplementasikan counting string hasil regex dalam berbagai platform tsb.

Perl

Perl mungkin tools pertama yang akan terbetik dalam benak saya untuk urusan-urusan regex seperti ini. Karena mungkin ia telah menemani saya paling lama dalam urusan ini. Meskipun perl bukan tools pertama yang pernah saya gunakan, tapi ia telah menemani saya dalam kesempatan terbanyak dibandingkan tool-tool lainnya.
Dengan “while loop”:


$count = 0;
while (<>) {
$count++ while $_ =~ /PAT/g;
}

Dengan “for loop”:

while (<>) {
for ($count = 0; $_ =~ /PAT/g; $count++) { }
}

Atau dengan match yang overlapping

while (<>) {
$count++ while $_ =~ /(?=PAT)/g;
}

GNU/Unix AWK

Berikut adalah contoh kita menghitung kemunculan string “line” dengan awk pada console unix.

$ printf "line one\nline two\nline three" | awk ‘/line/ { ++x } END { print x }'

GNU/Unix grep + tr + wc

Grep mungkin tools pertama yang pernah saya
pakai untuk regex. Hasil jumlah baris ditemukannya string oleh grep dihitung dengan wc. Grep memproses dalam satuan baris, maksudnya bila ada dua atau lebih string yang dicari dalam satu baris, maka grep outputnya 1 baris. Oleh karena itu kita perlu bantuan tr, program transpose. Kita transpose (gantikan) dulu setiap spasi dengan ‘\n’ ganti baris, baru kita hitung jumlah barisnya dengan wc.

$ tr " " "\n" < inputfile | grep "PAT" | wc -l

atau tanpa wc pun bisa, yaitu dengan memasukkan option -c (count , jumlah baris) dan -i (ignore case, tidak peduli besar/kecil huruf)

$ tr " " "\n" < inputfile | grep -ic "PAT"

PHP dan Java
Platform ini mungkin platform yang paling menarik, sebab pemakai PHP dan Java semakin lama memang semakin meningkat seiring dengan semakin banyaknya aplikasi web tumbuh. Pada prinsipnya PHP dan Java mengadopsi regex Perl. Untuk PHP dengan fungsi preg_match dan untuk Java dengan library java.util.regex

Akses situs dengan banyak iklan bikin kita lelah. Tidak hanya lelah menghindari informasi pengganggu seperti iklan itu, tetapi juga boros bandwith internet, lelah bayarnya :). Situs http://www.detik.com banyak iklannya. Situs-situs lain yang dulunya “enak” dibaca, setelah populer jadi “susah” dibaca lantaran iklannya yang berjibun. Atau Anda ingin hemat bandwith dengan memblock/menghindar dari gambar-gambar banner situs yang besar tapi seringkali tidak memiliki muatan informasi yang berguna. Yaa hanya indah saja, tapi boros bandwith. Selain boros bandwith, aksesnya menjadi terasa lama sekali.

Solusi saya adalah install Adblock Plus di browser Firefox. Bahkan kemampuan firefox + ekstensi Adblock inilah yang menyebabkan saya dulu pertama kali berpindah dari Opera ke Firefox (sebelum Opera saya pengguna IE dan Mozilla, dan sebelum itu saya pengguna Netscape).

Cara pakainya:
1. Setelah diinstall dan firefox direstart, maka akan muncul icon Adblock Plus di navigation bar. Anda bisa enable atau disable fungsi Adblock Plus dengan mengklik icon Adblock Plus tersebut dan merubah contrengan di “Enable Adblock Plus”.
2. Anda dapat memblock item yang tampil halaman situs yang sedang dibuka di browser sekarang dengan cara mengklik icon Adblock Plus dan pilih “open blockable items”
3. Untuk memblock salah satu image/gambar dalam suatu halaman situs yang sedang anda lihat, Anda tinggal klik kanan dan pilih
“Adblock Image”
4. Anda juga dapat menambahkan aturan filter tersendiri terhadap suatu situs dengan membuka preference Adblock Plus.
5. Anda juga dapat mendaftar kepada situs yang mengelola filter, sehingga Anda tidak perlu repot-repot membuat aturan-aturan filter sendiri satu per satu. Caranya dengan membuka preference dan kemudian pilh dari menu “Filter” kemudian “add filter subscription”

Extension lain terkait:

Memiliki banyak blog seringkali bikin repot kamu? Pingin ngeblog, tapi sering offline? Solusinya adalah tool offline blogging editor. Kamu bisa ngeblog meski komputer nggak nyambung internet. Gak perlu nunggu online untuk menuangkan ide-ide kamu yang cemerlang. Karena seringkali ide-ide itu datang bukan di waktu yang tepat.

Berikut beberapa tools untuk offline editing blog, semua free!

Firefox, browser terpopuler, terkenal karena kecepatan aksesnya. Tetapi saya menggunakan firefox tidak hanya karena itu, kecepatan firefox dalam mengadopsi fitur terbaik web browser yang paling menarik hati saya. Memang fitur-fitur itu bukan fitur default atau bawaan firefox. Mereka adalah plugins. Justru karena dalam bentuk plugins inilah kita dapat memodifikasi web browser firefox kita sesuai dengan keperluan kita.

Berikut ini adalah list plugins yang menurut saya wajib diinstall.

  • AdBlockPlus 0.7.5.3
  • All-In-One Sidebar 0.6.1
  • Always Remember Password 0.6
  • BlockSite 0.6
  • Codetch 0.4.0.20061026
  • ColorfulTabs 3.0
  • CustomizeGoogle 0.69
  • CuteMenus – Crystal SVG 1.9.2
  • DownThemAll 1.0
  • FasterFox 2.0.0
  • Firefox Showcase 0.9.4.6
  • Forcecastfox I10n
  • Foxmarks Bookmark Synchronizer 2.0.45
  • Furl Tools 0.8
  • GMail Notifier 0.6.3.2
  • Greasemonkey 0.6.8.20070314.0
  • Google Gears 0.2.14.0
  • Google Photo Screensavers 2.0
  • Googlepedia 0.5.1
  • Image Zoom 0.2.6
  • Japanese English Dictionary for rikaichan 1.05
  • No Squint 1.0.1 PDF Download 1.0.10
  • PeraPera-kun 0.5.22
  • Places’ Full Titles 3rc3
  • PrefButtons 0.3.3
  • QuickJava 0.4.2.1
  • Redirect Remover 2.5.3
  • Remove It permanently 1.0.6.3
  • ScribeFire 1.4.7
  • Secure Login 0.9.0.6
  • Session Manager 0.6.1.9
  • SmoothWheel 0.44.10.20071026
  • Split Browser 0.4.2007100601
  • StopAutoplay 0.7.2
  • StumbleUpon 3.17
  • Stylish 0.5.1
  • SwitchProxy Tool 1.4.1
  • Taboo 0.1.2
  • Temporary Inbox 2.1
  • Tiny Menu 1.4.6
  • User Agent Switcher 0.6.10
  • XHTML Ruby Support 1.4.20061000801
  • Xinha Here! 0.12
  • Zotero 1.0.3

Memang tidak selamanya plugins itu dibutuhkan, kadang-kadang ada suatu
kondisi saya tidak perlu. Tapi solusinya cukup dengan meng-disable
plugins tersebut.

  1. Reddit is apopular social news Web site with a large user base. Covering a wide range of news, which focus on specific topics like programming, science, politics and business.
  2. Digg is the largest and most popular social news Web site on the Internet. Covering all topics including; politics, entertainment, technology and general news. Includes a separate video and image section. Allows users to share articles with their friends list or post to the most popular blog sites directly on a topic through Digg.
  3. Fark is a community news site which allows users to comment on news articles. User submitted links will be posted on the main page once they are approved by the administrators.
  4. Slashdot is primarily a tech news site, Slashdot also covers topics like books, games, politics and entertainment. Users can submit stories and they may be published after editors approve it.
  5. Mixx is one of the newest in general social news sites which has a category for all types of news. Topics covered include business, entertainment, sports, health and tech. Also includes personalization with the ability to create groups to share news with other interested users.
  6. Shoutwire is a general news site that is well populated with a loyal group of users. Topics covered include technology, politics, entertainment, lifestyle and sports.
  7. Newsvine is Web site consisting of community-driven news stories and opinions. Users have their own blogs and can write articles, save links to external content and vote/comment on other user stories.
  8. StumbleUpon is a social network and browser toolbar which allows users to channel surf the Internet. Technically not 100% a social news site, although users can submit Web pages to be rated by other users. Here is a guide to StumbleUpon.
  9. SWiK is a community driven resource for and by people who use open source software. Users can find free software or read and submit news.
  10. Del.icio.us is a social bookmarking site, which invites users to organize and publicize interesting items through tagging and networking. Is a great site for documenting your favorite bookmarks and sharing them with others. Each time a site is bookmarked is “voted on” and begins to rank higher in the search ranks of the site.
  11. Technorati is a network of blogs and writers that lists top stories in categories like Business, Entertainment and Technology. With so many blogs out there Technorati makes it easier for users to see the blogs they want without having to go to so many sites.
  12. LinkedIn is a popular networking site where alumni, business associates, recent graduates and other professionals connect online. Users can utilize the network to find old colleagues, gather references, post their resume and network for career opportunities.
  13. Facebook is no longer just for college kids who want to post their party pics. Businesses vie for advertising opportunities, event promotion and more on this site. Users are beginning to create groups for everything from alumni associations to bird watching.
  14. Networking For Professionals is another online community that combines social and business networking on the Internet with special events in the real world. Post photos, videos, résumés and clips on your online profile while you meet new business contacts.
  15. Everyone’s heard of YouTube, the single largest video streaming site on the internet. But anyone can
    have their own channel for videos at YouTube. Create an account and upload a behind-the-scenes video from your company’s latest commercial or event to give customers and clients an idea of what you do each day.
  16. SecondLife is a 3-D virtual world that is so popular it makes money by selling virtual real-estate for hard cash. Several major companies have set up shop in SecondLife and Reuters has opened a news bureau there.
  17. MySpace is a self-publishing within your network of friends and colleagues. It’s a grapevine. It aggregates opinion (what to listen to, what to watch, what’s groovy) and is now the most popular web site in the United States.
  18. Livejournal is part self-publishing network and part blog; but has added security, privacy and filtering abilities that other social networks are lacking, making it ideal for those who wish to utilize a single account for multiple audiences. It is one of the fastest growing and most diverse social networks of its kind.
  19. Propeller is AOL’s version of Digg and operates in a similar manner. It is a social news site that covers all topics from technology to politics and entertainment.
  20. Dzone is a free link-sharing community for developers. Members vote on upcoming links to determine what gets promoted. While everyone can browse, search and comment on links. Other topics commonly featured include web design and programming.
Saat belajar jaringan komputer, kita selalu mendapatkan model 7 lapis
ISO atau model 4 lapis DoD. Selanjutnya mungkin ada pembahasan tentang
sekuriti di lapisan-lapisan itu. Bahkan saat suatu kantor membahas
sekuriti TI-nya, seringkali dibahas software apa yang dibutuhkan, dan
sedikit hardware. Tetapi keamanan kantor “tradisional” sejak dari
SATPAM sampai fisik server/komputer berada kurang dibahas. Berikut
cuplikan 10 langkah sekuriti fisik dari TechRepublic

  1. Kunci ruang server
  2. Pengawasan ruangan (siapa yang keluar masuk?)
  3. Pastikan bahwa device yang paling tidak aman berada di ruangan terkunci
  4. Gunakan server rack-mount
  5. Amankan workstation (apalagi yang sedang kosong tidak terpakai)
  6. Jaga agar penyelundup tidak membuka case (server/komputer)
  7. Proteksi komputer2 portable (laptop/notebook/PDA/HP)
  8. Selalu backup
  9. Disable drive-drive (rekomendasi: jangan pasang portable drive spt floppy, usb, cd) di komputer pengguna
  10. Proteksi printer (apalagi yang disharing)

Hari ini Jakarta kembali “macet”. Seperti sebelum lebaran, waktu tempuh rumah ke stasiun Bekasi menjadi 30mnt, dan waktu tempuh total dari rumah ke kantor menjadi 80mnt. Padahal hari terakhir ngantor sebelum lebaran, waktu tempuh rumah ke kantor cuman 50mnt.

Detik.com menulis bahwa Jakarta kembali ke “wajah” aslinya. Sebenarnya yang asli yang mana? Jakarta yang macet atau yang tidak? Kalo dipikir-pikir, Jakarta macet karena banyak orang warga Jakarta pulang kampung. Saat lebaran semua orang pulang kampung. Tercatat sekitar 14 juta orang yang pulang kampung (kalo tidak salah). Artinya sebagian besar warga Jakarta bukan asli Jakarta. Itu artinya wajah asli Jakarta, adalah saat-saat menjelang lebaran dan beberapa hari setelah lebaran.

Saat itu, jalan-jalan lenggang, bersih, tidak sekotor biasanya. Meskipun berada di tengah-tengah musim kemarau, Jakarta tidak sepanas hari ini. Jumlah kendaraan yang memuntahkan asapnya berkurang, warga yang buang sampah sembarang berkurang. Penduduk terasa ramah-ramah.

Terus terang, aku merindukan Jakarta itu.

Pekan ini saya diminta seorang rekan, untuk membuat sebuah formulir sederhana dalam PDA PocketPC. Ini dapat dilakukan dengan sangat cepat menggunakan eMbedded Visual Basic (eVB). Cuman, saya sering frustasi dengan eVB, sebab banyak sekali alat bantu pemrograman (fungsi, library dll) yang tidak dapat digunakan, kalo dibandingkan dengan eVC (eMbedded Visual C++). Apalagi kalo dibandingkan dengan sodaranya di desktop, Ms Visual Basic 6, maka lebih banyak lagi fitur Ms VB 6 yang tidak dapat kita gunakan.
Tapi untuk waktu yang cuman 1 hari menyelesaikan itu semua, apalagi cuman sekedar demonstrasi, maka pilihan saya akhirnya memang eVB.

Banyak sekali perbedaan antara VB dan eVB, sehingga seorang programmer VB, tidak begitu saja mudah membuat program eVB. Meskipun secara umum, pengetahuan dasar VB sangat banyak membantu.

Secara umum, berbeda dengan Ms VB 6, program-program eVB di PocketPC, bukan file binary exe. Artinya, kita memerlukan intrepreter eVB. Menurut Tacke dan Bassett, hal ini melahirkan konsekuensi bahwa eVB memiliki performa yang lebih rendah. Ketika aplikasi eVB berjalan, p-code –code yang dihasilkan eVB– harus di-intrepreter-kan. Ini artinya, eVB bukan pilihan yang tepat untuk program high-level matematik, grafik dan aplikasi lain yang memakan kinerja prosesor sangat banyak. Kemudian selain program eVB yang berekstensi .vb, kita harus menginstall lebih dulu pvbload.exe (interpreter eVB), pvbform2.dll, pvbhost2.dll dan vbscript.dll kedalam sistem windows PocketPC. Bila kita menambahkan control bukan standar, maka kita juga perlu mengikutsertakan dll untuk control tersebut.

Satu lagi kesulitan adalah, kita susah merubah icon program kita. Sebab program aplikasi eVB menggunakan intrepreter dan file .vb terasosiasikan ke interpreter tersebut, maka semua aplikasi eVB memiliki icon yang sama, yaitu iconnya pvbload.exe. Untuk mengatasi hal ini kita perlu bantuan C++.

Hal lain adalah, semua variable adalah bertype variant. Meskipun hal ini menjadikan program kita sangat fleksibel, misalnya kita dapat melakukan penambahan type Form dengan nilai satu, tetapi hal ini menjadikan program kita sangat sulit di-debug. Tidak ada menu — system menu di PocketPC dan desktop memang berbeda –, gak bisa membuat sendiri ActiveX controls, gak bisa menggunakan blok “with” dan gak bisa memakai Form modal.

Referensi:

1. Tacke, C., dan Bassett, T., “eMbedded Visual Basic?: Windows? CE and Pocket PC Mobile Applications”, Sam Publishing, ISBN 0-672-32277-3
2. Guan-Ming Su, Min Wu, K.J. Ray Liu, “Mobile Computing and Pocket PC Programming Manual”
3. Hsieh, J., “Introduction to Pocket PC 2002 Programming”

Bapak Syahrul, Ka.Pusinov (Kepala Pusat Inovasi) LIPI:
“Tipikal orang-orang kita, (ingin) ahli dalam semua bidang, kecuali tugas dan fungsi pokoknya”

Pernyataan tersebut ada banyak benarnya. Anda akan banyak temui di tempat-tempat ngobrol, mangkal para “ahli” kita tersebut. Maka semua hal akan bisa diobrolkan, kecuali kalau sudah menjurus kepada “core competence” pembicara. Bila sudah pada tema tersebut, maka perkataannya menjadi sulit dimengerti, bahasa alien pasti banyak keluar. Slogan “kalo bisa dipersulit kenapa musti dipermudah”, ternyata tidak saja menjangkiti kalangan birokrat dan layanan masyarakat saja, tetapi sudah mendarah daging sampai ke ujung lidah kita.

Semakin mudah penjelasan seseorang untuk hal-hal yang sulit, itu menunjukkan kepahamannya yang mendalam. Ia dapat menggambarkan tema tersebut seseuai dengan latar belakang, pemikiran dan budaya pendengarnya. Kepahamannya tidak saja mengenai tema yang dibicarakan, tetapi juga kepahamannya tentang pendengarnya.

Kita cenderung menjadi generalis, dan takut menjadi spesialis. Karena memang semakin spesifik bidang kita, maka semakin sempit pasar kita. Tetapi jangan lupa, semakin mahal harga kita 🙂

Pernah tidak menghadiri suatu seminar, dimana kita tidak mengerti apa yang disampaikan oleh pembicara?
Bukan berarti pembicara tidak kompeten dibidang itu (meskipun itu juga sebab), tetapi lebih kepada tidak mampunya pembicara membahasakan apa yang ia ingin sampaikan kepada pendengar.

“mengapa suatu presentasi tidak komunikatif terhadap pendengar?”

Masalah ini sebenarnya adalah masalah klasik, dimana seorang ahli kesulitan untuk membagi pengetahuannya kepada awam.
Sebab pertama adalah, para ahli belum dapat mengungkapkan tema pembicaraan itu sesuai dengan kapasitas pengetahuan para awam, yaitu belum dapat “membahasakan” tema tersebut dalam bahasa awam.
Kenapa hal ini terjadi, padahal awalnya ahli juga awam terhadap tema tersebut. Seorang ahli pastilah mengalami masa-masa dimana ia berjuang keras mencoba mengerti tema tersebut. Nah, permasalahannya … saat ia menjadi ahli, beberapa “sejarah” dalam otaknya/benaknya tentang masa-masa awal itu telah hilang, tergantikan dengan pengetahuan-pengetahuan baru yang ia dapatkan.
Intinya, ia kehilangan sejarah “detail rantai information gap” yang menjembatani antara pengetahuan ahli dg pengetahuan awam. Ia hanya dapat mengetahui secara global rantai information gap yang dimaksud.

Ibarat orang naik gunung asing baginya, maka saat ia mencapai puncak, ia dapat saja memberitahu rekannya (yang masih dibawah) “secara global” bagaimana cara mencapai puncak. Tetapi tentu saja detail-detail ada berapa semak-semak atau duri-duri jalanan yang harus dihindari kapan dan dimana …. tidak dapat dijelaskan … karena ia lupa.

Hal ini sering kali terjadi pada kita. Kita seringkali mengalami kesulitan menjelaskan sesuatu kepada orang awam. Bukan berarti kita tidak mengetahui masalahnya (meskipun pemahaman yang kurang mendalam juga menjadi sebab lain :-). Karena pada saat kita ngobrol dengan sesama ahli, obrolan terasa gurih dan nikmat, yang itu artinya kita nggak ketinggalan banget, masih nyambung.

Nah bagaimana solusinya?

Pertama, sering-sering mengajarkannya/mengungkapkannya kepada orang awam. Maka “jam terbang” akan meningkatkan kemampuan kita membahasakan suatu tema rumit menjadi mudah. Sebab semakin sering kita melakukan itu, pada dasarnya semakin sering pula kita “mencoba menemukan kembali detail rantai informasi gap” yang telah kita lalui, sehingga kita menjadi ahli seperti sekarang ini.
Oleh karena itu, salah seorang presenter/guru/penulis (saya lupa namanya) pernah memberikan tips bahwa kita harus senantiasa belajar menjelaskannya kepada anak kecil.

Solusi kedua adalah mencoba mendalami lebih dalam lagi fenomena/ilmu tersebut sehingga kita dapat memodelkannya dengan sangat sederhana.
Dari beberapa penelitian, seorang programmer senior lebih berfikir abstrak, dan programmer yunior lebih berfikir konkret atau di level syntax. Begitu pula di bidang-bidang lain. Ahli lebih filosofis/abstrak, awam lebih pragmatis/konkret.
Oleh karenanya, penjelasan seorang begawan sering kali mudah, singkat tetapi mencakup seluruh makna yang dimaksud. Sedangkan penjelasan seorang pemula seringkali bertele-tele, karena ia belum dapat menemukan “intisari” dari apa yang harus ia jelaskan.

Next Page »