#webkoe
Sun, 8 Oct 2017 11:03 pm
Catatan ke 2700 #webkoe
Sat, 7 Oct 2017 6:15 pm
Kepikiran mau bikin permalink untuk setiap tulisan. #webkoe
Sun, 1 Oct 2017 10:59 am
Webkoe sertificatea renewed #letsencrypt #webkoe
Thu, 21 Sep 2017 11:42 am
Mainan baru, digitalocean space, masih trial. #digitalocean #webkoe
Wed, 23 Aug 2017 6:38 pm
Saya pikir ini lah versi paling baik dari webkoe, akses yang relatif cepat dan sederhana. Sempat kepikiran mau ubah template, pasang fasilitas login, ini lah, itu lah... tapi saya rasa versi yang seperti sekarang ini sudah cukup. #hehe #justwritesomething #webkoe
Sun, 13 Aug 2017 9:04 pm
😰. #webkoe #test
Sun, 13 Aug 2017 9:02 pm
BOLD #webkoe #test
Mon, 7 Aug 2017 8:51 am
Card "User-select: none" been disabled, setelah sebelumnya tidak bisa select text, sekarang sudah bisa. #webkoe
Mon, 7 Aug 2017 8:50 am
Card "User-select: none" been disabled. #webkoe
Mon, 31 Jul 2017 12:01 am
00:01 #justwritesomething #webkoe
Fri, 21 Jul 2017 10:08 am
-Install certbot
-certbot certonly -d webkoe.net
-sesuaikan /etc/nginx/conf.d/default.conf dengan lokasi sertifikat yang baru (misal: /etc/letsencrypt/live/webkoe.net-0002/...)
#webkoe #letsencrypt 
		
Fri, 21 Jul 2017 10:05 am
SSL running well again. #alhamdulillah #webkoe
Fri, 21 Jul 2017 9:44 am
Sertifikat ssl error,... padahal sudah di renew kemarin malam. #webkoe
Mon, 19 Jun 2017 12:47 am
Hadeh... siapa lagi ni yang ngirim-ngirim php? who is shourscout? #webkoe
Tue, 25 Apr 2017 11:18 am
Good, alphatree.co sekarang sudah lepas dari webkoe. #webkoe
Fri, 21 Apr 2017 10:40 am
Webkoe cert renew. #ssl #webkoe #letsencrypt
Sun, 9 Apr 2017 1:39 am
Siapa rizal ? :) Hallo, anda telah bergabung dengan Catatan Online Webkoe. Disini kamu bisa memasang hashtag seperti twitter lho, coba bikin catatan lagi dan bubuhi hashtag misalnya #siapa-rizal. ;D have a nice write ! #tanyasiapa #webkoe
Fri, 31 Mar 2017 9:24 am
Webkoe sekarang support hypen (-) pada tag. #webkoe
Fri, 31 Mar 2017 9:23 am
#webkoe #test #tag-hypen2-hypens
Fri, 31 Mar 2017 8:32 am
Bingung membaca kode sendiri. #webkoe #tanyakenapa #fyuuh
Fri, 31 Mar 2017 8:15 am
#webkoe #test #tag-hypen
Thu, 30 Mar 2017 8:19 am
Webkoe goes to play store. Bayar $25 dulu pastinya. :D #webkoe #owyeaaah #playstore #android #googleplay
Tue, 14 Feb 2017 8:05 am
#webkoe #test #tag-with-hypen
Tue, 14 Feb 2017 8:04 am
Skor SEO webkoe 44/100, ternyata banyak hal yang harus dibenahi. Satu hal yang menarik adalah penggunaan hypen (-) dalam menulis link, lebih dianjurkan daripada menggunakan spasi atau underscore (_). Permasalahannya adalah webkoe belum support hypen untuk meregister tag. #webkoe #seo
Fri, 10 Feb 2017 8:21 am
Solusi long link adalah dengan bit.ly, selain link jadi pendek, bisa lihat statistiknya juga. #nice #:D #webkoe #bitly
Wed, 8 Feb 2017 5:41 pm
PRE sudah diset ke wrap by word, namun masih bermasalah saat ada link yang panjang. #webkoe
Sun, 8 Jan 2017 10:02 pm
Create dari https://alphatree.co, domain yang merefer ke webkoe. #tanyakenapa #webkoe
Fri, 23 Dec 2016 5:42 am
Catatan ke 2220. #webkoe
Tue, 29 Nov 2016 7:50 am
😬 emoticon WA ? #nice #webkoe
Thu, 17 Nov 2016 5:20 am
Habis subuhan, ngupdate ranking kanwil dulu, sambil webkoe an di rawasari. #rawasari #webkoe #kantor
Wed, 26 Oct 2016 9:10 pm
20:11 wib #webkoe #dinasluar
Sun, 23 Oct 2016 8:00 am
Awalnya ane nyoba develop webkoe versi django pure semuanya dengan WSL, ternyata baru nyoba up and running saja sudah gagal. Upstart belum di support WSL. Akhirnya, back to droplet mawon lah. Masalah droplet sebenarnya hanya satu, lagging jaringan operator ini. #fyuuh #wsl #django #webkoe
Wed, 19 Oct 2016 7:48 pm
#django up and running di http://webkoe.net:5500 #webkoe
Fri, 9 Sep 2016 8:11 pm
Argghhh... spasi bisa diterima disini... #webkoe
Mon, 5 Sep 2016 12:29 pm
Bersiap mengawinkan webkoe.net dan webkoe.id, kini dengan #go sebagai webserver, mengingat #go sudah bisa SSL dan secara performa tidak beda jauh dengan #nginx... Websocket server wss sejauh ini berjalan lancar, semoga demikian seterusnya. Aamien... #webkoe
Sun, 4 Sep 2016 6:58 am
Back to standalone #go, without #nginx @webkoe.id #webkoe
Sun, 4 Sep 2016 5:57 am
Ternyata #go bisa melayani SSL sendiri, tanpa #nginx. Percobaan ini bermula saat protokol ws yang ditolak oleh https://webkoe.id, setelah wss berhasil dicreate, tinggal masalahnya sekarang "origin not allowed", wss tidak akan memproses request dari origin/alamat yang berbeda. Dalam hal ini originnya adalah webkoe.id, dan server wss ada di webkoe.net:99, solusinya adalah memasukkan layanan wss ke webkoe.id. Masalah berikutnya timbul, karena webkoe.id bukan murni, dia sebenarnya hanya proxy pass nginx ke localhost. Rumit? memang ... #webkoe
Thu, 11 Aug 2016 9:33 pm
Test posting dengan kondisi CPU #webkoe server 100% usage, infinite loop.
Tue, 2 Aug 2016 7:09 am
Webkoe.id:9090 direct access berhasil dilindungi, proxypass #nginx diubah ke localhost:9090. Host Route Mux Gorilla diubah dari webkoe.id ke localhost. It's Works ! Untuk webkoe.net dan webkansaja.com masih bisa diakses di non secure port:88, perlu pemisahan server agar bisa running di proxypass localhost. #webkoe #nice #alhamdulillah #problemsolved
Tue, 26 Jul 2016 1:01 pm
fUF3NjwaggQ:APA91bFcNrb-H9Ic85FazmB4L9xWcWVKdbvLOd6pawYrJyv-Zf0sq9GYdvYsKb7imgqP2YMz0boZo05rudpEclrknMef14RP5FU5SMnaJ5HWIDrUjg-dQ23cXfAoi8of8bZDscMzdNeW #webkoe
Tue, 26 Jul 2016 10:11 am
Great resource untuk memahami service worker dan pernak perniknya, https://jakearchibald.com #webkoe #pushmessage
Tue, 26 Jul 2016 9:52 am
eDbnNqU7Ql4:APA91bFPPpJaIN5wSiG-bRzatNdChOHfRw2WpY2CbPKlULZgsPYu0ykOI-QgDvWmBlImbHm9U1IAmjvbZBRYyeMVC5L4rVI3tkSTLxe1vxYYpeU4KVQ96n8Py7QLU0fQljuO4dtnVqmn #webkoe
Tue, 26 Jul 2016 9:48 am
Masalah:
navigator.serviceWorker.controller selalu null

Kemungkinan:
service_worker.js tidak berada di root

Solusi:
Taro service_worker.js di root (Lol)

http://stackoverflow.com/questions/30256390/navigator-serviceworker-controller-is-always-null

Sekarang sudah bisa berkomunikasi dengan 
service worker,... XD tinggal di test saat chrome tidak
aktif,... lets check it out
#webkoe #pushmessage #problemsolved #alhamdulillah 
		
Tue, 26 Jul 2016 12:23 am
Command untuk menampilkan payload push notification saat chrome berjalan di background, dan melakukan fetch saat foreground.
C:\Users\luqman baihaqi>curl --header "Authorization: key=AIzaSyAhhhFjJGhA0q0CgmZMVQzuV9I-cRLTCiA" --header "Content-Type: application/json" https://android.googleapis.com/gcm/send -d "{\"to\":\"ca1CvrW69kQ:APA91bGi_Ue4kyVPkQp86ZJoLzSx_OH9r-bzCQAse28QP1ucsTgadHmCwpTWOlDYnjELhDD_SGO9Mhm_zKyr-qQbuBCCy_GQJ5GHLSU8-8RKIO9ypx8omi_tPSUG7RUXK9nNgyOi46ek\", \"notification\":{\"title\":\"my title\",\"body\":\"the messages\",\"icon\":\"/static/custom/images/turtle.ico\", \"color\":\"#fff2ae\",\"click_action\":\"com.google.android.apps.chrome.Main\"}}" -k
https://developers.google.com/cloud-messaging/concept-options
https://developers.google.com/cloud-messaging/concept-options#common-message-options
https://developers.google.com/cloud-messaging/http-server-ref#priority
1. Bagaimana saat notification payload di click, mengarah ke url yang diinginkan. Sampai sejauh ini, click tidak bereaksi apa2.
2. Tetap harus nyari cara supaya data bisa dikirim ke service worker....
#webkoe
Mon, 25 Jul 2016 10:45 pm
endpoint ca1CvrW69kQ:APA91bGi_Ue4kyVPkQp86ZJoLzSx_OH9r-bzCQAse28QP1ucsTgadHmCwpTWOlDYnjELhDD_SGO9Mhm_zKyr-qQbuBCCy_GQJ5GHLSU8-8RKIO9ypx8omi_tPSUG7RUXK9nNgyOi46ek #webkoe
Mon, 25 Jul 2016 12:31 pm
Ternyata, ajax ga bisa ngakses session itu adalah request-an dari service worker. Ane baru mulai mencari tau service worker ini bekerja,... #webkoe
Fri, 15 Jul 2016 10:26 pm
Untuk menjembatani komunikasi ajax dan server, sementara ini pake solusi encrypt dan decrypt saja. Parameter yang mau dilindungi di embed ke html (encrypted), ajax membaca via dom, kirim ke server, server lakukan decrypt. Secara teori endpoint push message dan session oauth bisa dibundle dengan cara ini. #webkoe
Fri, 15 Jul 2016 7:20 pm
Push notification on progress... Sedang mencari cara mengaitkan oauth dengan endpoint push. Oauth running serverside, sedangkan endpoint push di sisi client... Session tidak bisa diakses lewat request ajax #webkoe
Thu, 14 Jul 2016 11:55 am
#pushmessage command client chrome laptop
root@webkoe:~# curl --header "Authorization: key=AIzaSyAhhhFjJGhA0q0CgmZMVQzuV9I-cRLTCiA" --header "Content-Type: application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"fYRp7auRigk:APA91bG9fVhvjkicr8Wp2S2UGN-m9xzysnkvgL4PUx6KQR4UREriCaPutWXtxug8pulxJqZyJc8sW5SkG822F1uDpq7flJBqk9BkvCM45_ptQHFtI765Syr_Ev3RmIjFpVAV8wCzRTx7\"]}"
#googleapi #webkoe
Thu, 14 Jul 2016 6:43 am
#oauth #google server side works... #alhamdulillah #webkoe
Wed, 13 Jul 2016 2:25 pm
Sangat terbantu dengan layanan http request dari https://www.hurl.it/, dengan tools ini ane bisa simulasi api tanpa harus bikin kode. #nice #webkoe #project #tools
Tue, 12 Jul 2016 2:04 pm
#oauth2 #google dengan javascript client running well di webkoe.id, berikutnya adalah memasukkan data user terotentikasi ke db server. Ane pikir kata kunci disini adalah email user. Jadi ketika user telah terotentikasi, email user dimasukkan ke mongodb, dengan api nya #webkoe. Titik rawannya adalah api buatan sendiri ini, api ini yang menjembatani antara javascript client dan server (ajax request). Jika itu web client, maka sangat mungkin terjadi kiriman FAKE. User bisa saja langsung mengakses api webkoe, tanpa melewati oauthnya google, sepanjang user ini tau email target. Sebenarnya hal ini sudah ada solusinya dengan oauth google server-to-server, namun ane masih stuck dengan model ini. Sudah ane coba, dan hasilnya selalu "invalid_grant". Entah ada kesalahan dibagian mana,... mungkin ini untuk step selanjutnya saja. Sementara ini nyoba komunikasi dengan javascript saja dulu.... karena email masih mungkin diketahui orang lain, maka ane mencari keyword lainnya untuk dijadikan pembanding. Ada sedikit titik terang dari respon oauth, auth2.currentUser.get().getBasicProfile() mengembalikan param "Ka", ane pikir nilai "Ka" ini sepanjang selalu konstan, bisa ane jadikan pembanding. Jadi, untuk mengakses api webkoe nantinya, selain email, juga mesti tau nilai Ka-nya.
Tue, 12 Jul 2016 1:50 pm
Cek #oauth2 #google
116328363014021581712 luqman.baihaqi@gmail.com
113993848980629857674 duktekkon240@gmail.com
#webkoe
Mon, 11 Jul 2016 6:11 pm
Roadmap kedepan :
- Famtree
- Push Message
- Chat/Conference webbase
#webkoe 
		
Mon, 11 Jul 2016 6:10 pm
Sepertinya model yang paling cocok untuk family tree adalah path dengan source dan target, bukan model struktur JSON yang diurai ... lebih terbaca dan fleksibel. I think ... #webkoe #project #famtree
Mon, 11 Jul 2016 6:00 pm
Bersiap refaktorisasi #webkoe, alamat sementara di http://webkoe.id:9090
Wed, 29 Jun 2016 2:47 pm
Yay !! webkoe.id is running... #webkoe
Wed, 29 Jun 2016 10:49 am
#beli domain baru webkoe.id, pas lagi promo 88.000 harga normalnya katanya 550.000, hehe... perpanjangannya berapa duit yak? #webkoe
Mon, 27 Jun 2016 2:10 pm
Catatan ke 2000,... Wohaaaa #webkoe
Sun, 26 Jun 2016 11:22 pm
Bhahaha,... namanya saja SSL. Content #webkoe masih bisa dicrawl dengan "curl https://webkoe.net -k"
Sun, 26 Jun 2016 11:17 pm
Webkoe.net dan webkansaja.com sudah bisa dihandle SSL, juga routingnya lewat #go. Sekarang tinggal menyembunyikan port beckend-nya (88). #webkoe
Sun, 26 Jun 2016 2:11 pm
Bersiap masuk ke zona autentikasi, karena sudah support #ssl hehe. Berikutnya tinggal menentukan pilihan, manage user sendiri ato pake #oauth ? Lets kembali utak-atik #oauth ! #webkoe
Sun, 26 Jun 2016 2:07 pm
Rank #webkoe untuk "catatan online" kembali ke urutan nomer 5. Eng ing eng... #rank
Sat, 25 Jun 2016 5:39 pm
generate a 2048-bit group #webkoe #letsencrypt
Sat, 25 Jun 2016 5:30 pm
SSL add to webkansaja.com #webkoe
Sat, 25 Jun 2016 2:46 pm
#webkoe keluar dari keyword "catatan online", sama sekali... padahal biasanya selalu di halaman 1. #tanyakenapa
Fri, 24 Jun 2016 6:59 am
#letsencrypt renew
/opt/letsencrypt/letsencrypt-auto renew
#webkoe
Wed, 22 Jun 2016 5:54 am
#leadin from #hubspot installed here #webkoe
Sun, 19 Jun 2016 5:49 pm
Log progress push notification dengan google cloud manager (#gcm) sampai hari ini ada di http://webkoe.net/curl.txt #project #webkoe
Sun, 19 Jun 2016 5:41 pm
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04 #letsencrypt #ssl #webkoe
Sun, 19 Jun 2016 1:35 pm
Versi secure dari #webkoe bisa diakses dari https://webkoe.net ... *_*
Sun, 19 Jun 2016 12:41 pm
Nyoba masang free SSL di #webkoe dengan #letsencrypt
Thu, 14 Apr 2016 2:29 pm
Kepikiran menggunakan #materializecss, halaman awal static biar bisa diindex, dan load selanjutnya bisa dengan ajax. #webkoe
Thu, 14 Apr 2016 2:27 pm
Tulisan ke 1900 #webkoe :)
Thu, 14 Apr 2016 8:04 am
<script>alert('')</script> #test #webkoe
Thu, 14 Apr 2016 8:03 am
1+1=2 #test #webkoe
Thu, 14 Apr 2016 7:57 am
link #test #webkoe
Thu, 14 Apr 2016 7:54 am
Bold #test #webkoe
Thu, 14 Apr 2016 7:53 am
Italic #test #webkoe
Tue, 29 Mar 2016 10:15 pm
#ejabberd on #webkoe
Tue, 29 Mar 2016 5:38 pm
Nginx on #webkoe
Mon, 22 Feb 2016 9:09 am
Untuk pertama kalinya, sepanjang #2016 ... #webkoe terdepak ke halaman 2 pencarian #google dengan keyword "Catatan Online" ... T_T
Mon, 22 Feb 2016 8:57 am
Dari google.com/webmaster yang ane pasang beberapa waktu lalu, diketahui bahwa yang menggiring user ke #webkoe adalah keyword #sidjpnine. Sampai hari ini ada 47 click. Kepada rekan-rekan DJP-ers yang kebetulan masuk ke tag ini, silakan berbagi informasi tentang #sidjpnine. Jabat erat, Salam 30.000 jiwa !
Sun, 3 Jan 2016 9:32 pm
Dapat email dari #digitalocean
We've had to reboot your Droplet due to an issue on the 
underlying physical node where the Droplet runs.

We are investigating the health of the physical node to 
determine whether this was a single incident or systemic.

If you have any questions related to this issue, please send us 
a ticket. https://cloud.digitalocean.com/support

Droplet Details-
webkoe
128.199.226.18
sgp1

Happy coding,
DigitalOcean
#webkoe #tanyakenapa
Sat, 2 Jan 2016 7:44 am
Tag number #2016 #webkoe
Sat, 2 Jan 2016 6:02 am
Dibawah ini spammer ? weh weh ... #webkoe
Mon, 21 Dec 2015 9:47 pm
Akan menarik kalo nulis di #webkoe bisa senyaman di #google_keep mmm...
Mon, 21 Dec 2015 9:46 pm
#google_keep banyak menggantikan tulisan di #webkoe, disamping bisa bikin list dan uplpad pic, juga bisa share by email ... #mind
Fri, 27 Nov 2015 5:41 am
= is still a buggy in here #webkoe
Thu, 15 Oct 2015 8:03 am
O...oo.. tidak bisa menulis sama dengan (=) #webkoe #bug ?
Sun, 11 Oct 2015 11:21 am
Aha #twitter tag has no space. Don't be agtited with #tumbler. #webkoe
Sun, 11 Oct 2015 11:13 am
Yang membingungkan adalah tag dengan spasi, macam #tumbler. Twitter mengijinkan tag dengan spasi? lets check it out. #tanyakenapa #webkoe
Sun, 11 Oct 2015 11:12 am
Ahahaha... nomer bisa jadi tag? #nice #webkoe #081521937678
Sun, 11 Oct 2015 11:11 am
#123 #test #webkoe
Sun, 11 Oct 2015 11:09 am
Tag with number #test1 #webkoe
Thu, 8 Oct 2015 12:14 am
Login as root di webkoe
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-24-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Thu Oct  8 00:05:29 WITA 2015

  System load:  0.13               Processes:           71
  Usage of /:   25.3% of 19.56GB   Users logged in:     0
  Memory usage: 21%                IP address for eth0: 128.199.226.18
  Swap usage:   2%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

51 packages can be updated.
14 updates are security updates.

Last login: Thu Oct  8 00:05:29 2015 from 114.4.78.197
luqman@webkoe:~$ su
Password:
root@webkoe:/home/luqman#
#webkoe #linux #command_line
Thu, 8 Oct 2015 12:10 am
Install go1.5 di #webkoe dengan #gvm.
- gvm use go1.4 
- export GOROOT_BOOTSTRAP=$GOROOT 
- gvm install go1.5
#go
Wed, 2 Sep 2015 7:43 am
Dari catatan di #webkoe, ane terkena #flu di bulan mei dan antara juli-agustus setiap tahunnya. #nice, artinya dibulan-bulan itu ane mesti lebih bersiap lagi.
Mon, 17 Aug 2015 10:50 am
Aaargghh ... standar penulisan tag 2 suku kata bagaimana? underscore,langsung, atau camelcase ?? #webkoe
Fri, 14 Aug 2015 11:08 am
Bersih bersih space #webkoe
Sat, 8 Aug 2015 10:15 pm
Free from #meteorjs todos on port 900 ... #webkoe #fyuuh
Sat, 8 Aug 2015 10:11 pm
#meteorjs todos benar-benar membebani server $5 ... #fyuuh, mungkin di shutdown saja. #webkoe
Fri, 7 Aug 2015 11:21 pm
#meteorjs are up in here ... :) sementara gagal terus make #mup deploy ... server sudah listen tapi data ga muncul, ane kurang tau kenapa. Padahal kalo pake perintah "meteor" dari sisi development berjalan lancar. Syukurlah ada artikel ini; meteor bisa terus jalan walaupun command di close. Contoh sementara aplikasi todos yang bisa diakses disini. #nice #webkoe
Fri, 7 Aug 2015 1:43 am
Like & share #facebook button are here. #oauth #google sementara ini di suspend dulu ... karena #error di consolenya. #webkoe
Wed, 5 Aug 2015 10:49 pm
#oauth2 #google are here,... walaupun belum berfungsi sebagaimana mestinya. Perlu autentikasi beckend juga dengan token, belum tau caranya; spesifik api-nya, sementara ini bisa saja kalo mau ngambil dari gapi, tapi disarankan untuk tidak memakai cara ini. #webkoe
Fri, 31 Jul 2015 6:14 pm
#meteorjs are awesome. #nice #webkoe
Fri, 31 Jul 2015 9:17 am
Nyoba #meteorjs. #webkoe
Wed, 29 Jul 2015 2:02 pm
Tag suggestion set to case sensitive #done #webkoe
Wed, 29 Jul 2015 12:31 pm
Harusnya tag suggestion case sensitive juga #todo #webkoe
Wed, 29 Jul 2015 12:30 pm
#test #webkoe and #WEBKOE
Wed, 29 Jul 2015 12:21 pm
Tag suggest lumayan informatif, lumayan menambah semangat juga buat nge-post terus, apalagi kalo bisa tap langsung add #webkoe #todo
Tue, 28 Jul 2015 11:44 pm
Oauth sepertinya perlu diexplore juga #todo #project #webkoe
Tue, 28 Jul 2015 11:43 pm
#ngelag mana #twitter sama #webkoe, saat mau post ? #hahaha
Tue, 28 Jul 2015 11:37 pm
Tag suggest baru menampilkan data saja, clickable hingga ter-insert ke textarea belum bisa #todo #webkoe
Tue, 28 Jul 2015 11:25 pm
Catatan ke 1500 #webkoe #hahaha #gapenting
Tue, 28 Jul 2015 11:15 pm
Agak ngelag saat create ? Gara2 suggest tag kah ? #tanyakenapa #webkoe
Tue, 28 Jul 2015 10:56 pm
Suggest tag were here #webkoe #alhamdulillah #nice
Tue, 28 Jul 2015 7:10 pm
Saatnya bikin tag suggestion ... #webkoe
Mon, 29 Jun 2015 1:06 am
Ngoprek #nodejs & #npm, ember-cli minta nodejs & npm terbaru, yang exist di #webkoe sudah usang, ckckck ... #project
Mon, 29 Jun 2015 12:25 am
Coba #emberjs #project #webkoe
Sun, 28 Jun 2015 11:20 pm
Thinking about account system for #webkoe, using Oauth ? Or enough for just local account ? #planning
Thu, 25 Jun 2015 7:53 am
SEO #webkoe untuk profile seseorang masih kurang bagus, contoh untuk pencarian Pak Sufrin Hannan; salah satu direktur sucofindo yang pernah ditulis disini, webkoe bertengger di halaman 17. Apa mungkin perlu dikait dengan tag ? misal #sufrinhannan atau #sufrin_hannan ? #tanyakenapa
Tue, 23 Jun 2015 3:10 pm
Mempercepat load page ternyata bisa dilakukan dengan memisahkan style menjadi file external, mungkin tercache ? #webkoe #tanyakenapa
Tue, 23 Jun 2015 3:03 pm
Muli fonts refer ke lokal #webkoe
Tue, 23 Jun 2015 2:09 pm
#tagrank versi mongodb added. Permasalahannya adalah saat ada banyak tag sama dalam satu post, tagranknya juga ikut bertambah. Sebenarnya ini masalah atau fitur ? Sementara ini gapapa lah ... #webkoe
Tue, 23 Jun 2015 12:34 pm
Preparing tagrank ... again #webkoe
Tue, 23 Jun 2015 12:33 pm
Back to top link added #webkoe
Tue, 23 Jun 2015 12:09 pm
Create button moved to right and get padding 15px #webkoe
Tue, 23 Jun 2015 12:08 pm
Highlight textarea while focus has been removed #webkoe
Tue, 23 Jun 2015 11:57 am
Hide captcha from create form #webkoe
Wed, 17 Jun 2015 12:02 am
Ditulis dari tablet padfone s ... media query works fine #nice #webkoe
Tue, 16 Jun 2015 11:30 pm
Card style #webkoe
Tue, 16 Jun 2015 6:03 pm
Beutifying #webkoe
Sat, 16 May 2015 5:06 pm
Catatan ke 1301 #webkoe
Thu, 16 Apr 2015 7:49 am
1241 catatan ... #hahaha #webkoe
Wed, 25 Mar 2015 6:07 pm
add /page/{page} #webkoe #go
Mon, 23 Mar 2015 5:14 pm
- Underline Tag Added Underline
- Italic Tag Added Italic
- Bold Tag Added Bold
- Link Added Link
#webkoe
Mon, 23 Mar 2015 3:46 pm
func safehtml di List dan TagView di sederhanakan jadi satu fungsi tersendiri #webkoe #go
      func safehtml(text string) template.HTML { 

          text = text + " "
          text = strings.Replace(text, "<", "<", -1)   
          text = strings.Replace(text, ">", ">", -1) 
            
          text = strings.Replace(text, "
", "
", -1) 
          text = strings.Replace(text, "
", "
", -1) regexPagar, _ := regexp.Compile(tagPattern) tags := regexPagar.FindAllString(text, -1) for _ , value := range tags { tagAscii := strings.Replace(value, "#", "#", 1) tagOnly := strings.Replace(value, "#", "", 1) text = strings.Replace(text, value, "" + tagAscii + "", 1) } return template.HTML(text) }
dan ini yang memanggil
      func WkListHandler(w http.ResponseWriter, r *http.Request) {
          funcMap := template.FuncMap{
              "safehtml": safehtml ,
          }
          templates := template.Must(template.New("").Funcs(funcMap).ParseFiles(templatePath + "webkoe-base.html", templatePath + "webkoe-list.html"))
          
          var results []Blog
          err = MCol.Find(bson.M{}).Sort("-date").Limit(1000000000000).All(&results)
          if err != nil {
              panic(err)
          }

          // var finalResult []tagView
          // fmt.Println(reflect.TypeOf(results))
          err := templates.ExecuteTemplate(w, "base", results)
          if err != nil {
              http.Error(w, err.Error(), http.StatusInternalServerError)
          }
      }
#script #webkoe #go #enlightenment #nice
Mon, 23 Mar 2015 6:10 am
Hasil pencarian terkini "catatan online" di google,#webkoe tidak lagi dapat predikat "mobile friendly". #hahaha sabar boozz goo
Mon, 23 Mar 2015 6:08 am
Semangat pagi, rencana hari ini adalah update rencana 2014 di #portalkanwil #kantor, rencana masih make rencana sebelum revisi PBB (turun 70M) dan sebelum adjusment 100% per kpp. Untuk #go nya #webkoe mungkin akan nyoba get dayname from date dulu, lumayan mengganggu kalo tanggal ga ada harinya #todo
Sun, 22 Mar 2015 12:37 am
PATH untuk static server-gorilla di set absolute /go-app/webkoe/public, static server is UP #webkoe
Sun, 22 Mar 2015 12:29 am
Membuat service di Ubuntu ternyata sangat mudah ... Kita bisa membuatnya dengan Upstart
- Bikin file .conf baru di /etc/init
- Ketikkan perintahnya, misalnya service untuk server-gorilla

  # /etc/init/server-gorilla.conf
  start on filesystem or runlevel [2345]
  stop on runlevel [06]

  script
     exec /go-app/webkoe/server-gorilla      
  end script
- lalu SAVE
- untuk start service cukup dengan perintah "service server-gorilla start"
- untuk stop servicenya "service server-gorilla stop"

dengan upstrat memory lebih ringan, ketimbang menggunakan forever ... dan lagi upstart bisa melakukan exec sepuasnya, bahkan seperti contoh .conf diatas tadi, upstart menjalankan executable file ... #nice bukan ? #webkoe #script #enlightenment
Sun, 22 Mar 2015 12:19 am
Saatnya kompilasi ... server-gorilla :) #webkoe #go
Sun, 22 Mar 2015 12:17 am
Ane awalnya rumit sekali mikirnya ... syukurlah ketemu link ini 
http://stackoverflow.com/questions/17306358/golang-removing-fields-from-struct-or-hiding-them-in-json-response

Ternyata cukup serahkan pada map[string]interface{}, sudah bisa kirim variable apapun, sepuasnya ke templates

  func WkTagViewHandler(w http.ResponseWriter, r *http.Request) {
          
          tagName := mux.Vars(r)["tag"]
          
          funcMap := template.FuncMap{
              "safehtml": func(text string) template.HTML { 

                  text = text + " "
                  text = strings.Replace(text, "<", "<", -1)   
                  text = strings.Replace(text, ">", ">", -1) 
                    
                  text = strings.Replace(text, "
", "
", -1) 
                  text = strings.Replace(text, "
", "
", -1) regexPagar, _ := regexp.Compile(tagPattern) tags := regexPagar.FindAllString(text, -1) for _ , value := range tags { tagAscii := strings.Replace(value, "#", "#", 1) tagOnly := strings.Replace(value, "#", "", 1) text = strings.Replace(text, value, "" + tagAscii + "", 1) } return template.HTML(text) }, } templates := template.Must(template.New("").Funcs(funcMap).ParseFiles(templatePath + "webkoe-base.html", templatePath + "webkoe-tagview.html")) var results []Blog err = MCol.Find(bson.M{"tag": tagName}).Sort("-date").Limit(1000000000000).All(&results) if err != nil { panic(err) } finalResult := map[string]interface{}{ "tagName" : tagName, "tagList" : results, } err := templates.ExecuteTemplate(w, "base", finalResult) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } }
#webkoe #go #script
Sun, 22 Mar 2015 12:14 am
Passing multiple variable to templates #done #alhamdulillah #go #webkoe
Sat, 21 Mar 2015 8:10 pm
Tinggal satu masalah lagi, variable #go yang masih belum clear. Passing tagName dan result dalam satu var, yang satunya "string", dan satunya lagi "[]Blog"
#todo #webkoe
Sat, 21 Mar 2015 8:06 pm
Sebelumnya sempat "no data received" karena executable file server-gorilla tidak menemukan path relative "templates". Setelah path diubah ke absolute path, running smoothly. #nice #alhamdulillah #webkoe
Sat, 21 Mar 2015 8:05 pm
server-gorilla run with upstart, no more forever :) #done #webkoe
Sat, 21 Mar 2015 6:19 am
server-gorilla.go
package main

    import (
        "fmt"
        "github.com/gorilla/mux"
        "github.com/gorilla/sessions"
        "github.com/fzzy/radix/redis"
        "net"
        "net/http"
        "html/template"
        "gopkg.in/mgo.v2"         
        "gopkg.in/mgo.v2/bson"
        "regexp"
        "strings"
        "crypto/rand"
        "time"
        // "reflect"
    )
    
    var (
        // MongoDB
        mongoConfig       = "mongodb://***usermongo***:***passmongo***@localhost:***portmongo***/***dbmongo***"
        MongoSession, err = mgo.Dial(mongoConfig)
        MDB               = MongoSession.DB("admin")
        MCol              = MDB.C("blog")

        // Session
        store             = sessions.NewCookieStore([]byte("something-very-secret"))

        // Tag Factory
        tagPattern        = "#([a-z]|[A-Z])+"
    )

    type Blog struct {
      Id string
      Things string
      Date string
      Ip string
      Agent string
      Tag []string
    }

    // type tagView struct {
    //   tagName string
    //   tagList []main.Blog
    // }

    func WkHomeHandler(w http.ResponseWriter, r *http.Request) {
        err := template.Must(template.ParseFiles("templates/webkoe-home.html")).Execute(w, nil) 
        if err != nil { 
           http.Error(w, err.Error(), http.StatusInternalServerError) 
        } 
    }

    func WkTagViewHandler(w http.ResponseWriter, r *http.Request) {
        
        tagName := mux.Vars(r)["tag"]
        
        funcMap := template.FuncMap{
            "safehtml": func(text string) template.HTML { 

                text = text + " "
                text = strings.Replace(text, "<", "<", -1)   
                text = strings.Replace(text, ">", ">", -1) 
                  
                text = strings.Replace(text, "
", "
", -1) 
                text = strings.Replace(text, "
", "
", -1) regexPagar, _ := regexp.Compile(tagPattern) tags := regexPagar.FindAllString(text, -1) for _ , value := range tags { tagAscii := strings.Replace(value, "#", "#", 1) tagOnly := strings.Replace(value, "#", "", 1) text = strings.Replace(text, value, "" + tagAscii + "", 1) } return template.HTML(text) }, } templates := template.Must(template.New("").Funcs(funcMap).ParseFiles("templates/webkoe-base.html", "templates/webkoe-tagview.html")) var results []Blog err = MCol.Find(bson.M{"tag": tagName}).Sort("-date").Limit(1000000000000).All(&results) if err != nil { panic(err) } err := templates.ExecuteTemplate(w, "base", results) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } func WkCreateHandler(w http.ResponseWriter, r *http.Request) { blog_id := randStr(7, "alphanum") session, _ := store.Get(r, "session-name") session.Values["blog_id"] = blog_id session.Save(r, w) templates := template.Must(template.New("").ParseFiles("templates/webkoe-base.html", "templates/webkoe-create.html")) err := templates.ExecuteTemplate(w, "base", blog_id) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } func WkPostCreateHandler(w http.ResponseWriter, r *http.Request) { things := r.FormValue("things") thingsWithSpace := things + " " captcha := r.FormValue("captcha") session,_ := store.Get(r, "session-name") blog_id := fmt.Sprintf("%s", session.Values["blog_id"]) if things != "" { if captcha == blog_id { // Factory cariTag,_ := regexp.Compile(tagPattern) tagFound := cariTag.FindAllString(thingsWithSpace, -1) var tempTags []string for _, value := range tagFound { cleanRegex,_ := regexp.Compile("(#| )") cleanTag := cleanRegex.ReplaceAllString(value, "") tempTags = append(tempTags, cleanTag) } waktu := strings.Split(fmt.Sprint(time.Now()), ".")[0] ip := GetIP(r) agent := fmt.Sprint(r.Header["User-Agent"]) jsonBlog := &Blog{Id: blog_id, Things: things, Date: waktu, Ip: ip, Agent: agent, Tag: tempTags} err = MCol.Insert(jsonBlog) fmt.Println("Welcome, " + things + " " + thingsWithSpace) http.Redirect(w, r, "/#thanks", 301) }else{ fmt.Println("Robot ?") http.Redirect(w, r, "/#you_r_a_bots", 301) } }else{ http.Redirect(w, r, "/#empty", 301) } // fmt.Println("Someone POST " + things + " blog_id " + blog_id) // fmt.Println(blog_id) /* templates := template.Must(template.New("").ParseFiles("templates/webkoe-base.html", "templates/webkoe-create.html")) err := templates.ExecuteTemplate(w, "base", nil) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } */ } func WkListHandler(w http.ResponseWriter, r *http.Request) { funcMap := template.FuncMap{ "safehtml": func(text string) template.HTML { text = text + " " text = strings.Replace(text, "<", "<", -1) text = strings.Replace(text, ">", ">", -1) text = strings.Replace(text, "
", "
", -1) 
                text = strings.Replace(text, "
", "
", -1) regexPagar, _ := regexp.Compile(tagPattern) tags := regexPagar.FindAllString(text, -1) for _ , value := range tags { tagAscii := strings.Replace(value, "#", "#", 1) tagOnly := strings.Replace(value, "#", "", 1) text = strings.Replace(text, value, "" + tagAscii + "", 1) } return template.HTML(text) }, } templates := template.Must(template.New("").Funcs(funcMap).ParseFiles("templates/webkoe-base.html", "templates/webkoe-list.html")) var results []Blog err = MCol.Find(bson.M{}).Sort("-date").Limit(1000000000000).All(&results) if err != nil { panic(err) } // var finalResult []tagView // fmt.Println(reflect.TypeOf(results)) err := templates.ExecuteTemplate(w, "base", results) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } func CatatanHomeHandler(w http.ResponseWriter, r *http.Request) { var results []Blog err = MCol.Find(bson.M{}).Sort("-date").Limit(100).All(&results) if err != nil { panic(err) } err := template.Must(template.ParseFiles("templates/gorilla-catatanhome.html")).Execute(w, results) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } func HomeWKSHandler(w http.ResponseWriter, r *http.Request) { err := template.Must(template.ParseFiles("templates/gorilla-home_wks.html")).Execute(w, nil) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } func WkBlogHandler(w http.ResponseWriter, r *http.Request) { page := mux.Vars(r)["page"] err := template.Must(template.ParseFiles("templates/gorilla-blog.html")).Execute(w, map[string]string{"halaman": page}) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } func WkRedisHandler(w http.ResponseWriter, r *http.Request) { // redis redisClient, _ := redis.Dial("tcp", "localhost:6379") news, _ := redisClient.Cmd("zrevrangebyscore", "news:republika:posttime", "+inf", "-inf", "limit", "0", "3").List() var bundleNews []string for _, elemStr := range news { bundleNews = append(bundleNews, elemStr) fmt.Println(bundleNews) } // render err := template.Must(template.ParseFiles("templates/gorilla-redis.html")).Execute(w, bundleNews) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } func WkTestPassVarHandler(w http.ResponseWriter, r *http.Request) { err := template.Must(template.ParseFiles("templates/gorilla-blog.html")).Execute(w, map[string]string{"halaman": "2"}) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } func randStr(strSize int, randType string) string { var dictionary string if randType == "alphanum" { dictionary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" } if randType == "alpha" { dictionary = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" } if randType == "number" { dictionary = "0123456789" } var bytes = make([]byte, strSize) rand.Read(bytes) for k, v := range bytes { bytes[k] = dictionary[v%byte(len(dictionary))] } return string(bytes) } func GetIP(r *http.Request) string { if ipProxy := r.Header.Get("X-FORWARDED-FOR"); len(ipProxy) > 0 { return ipProxy } ip, _, _ := net.SplitHostPort(r.RemoteAddr) return ip } func main() { // MUX ROUTER mx := mux.NewRouter() // WEBKOE.NET // *** home *** mx.HandleFunc("/", WkListHandler).Host("webkoe.net") // *** tag *** mx.HandleFunc("/tag/{tag}", WkTagViewHandler).Host("webkoe.net").Methods("GET") // *** create *** mx.HandleFunc("/create", WkCreateHandler).Host("webkoe.net").Methods("GET") mx.HandleFunc("/create", WkPostCreateHandler).Host("webkoe.net").Methods("POST") // *** misc *** mx.HandleFunc("/test/pass_var", WkTestPassVarHandler).Host("webkoe.net") mx.HandleFunc("/redis", WkRedisHandler).Host("webkoe.net") mx.HandleFunc("/page/{page}", WkBlogHandler).Host("webkoe.net") mx.PathPrefix("/").Handler(http.FileServer(http.Dir("./public/"))).Host("webkoe.net") // CATATAN.WEBKOE.NET mx.HandleFunc("/", CatatanHomeHandler).Host("catatan.webkoe.net") // WEBKANSAJA.COM mx.HandleFunc("/", HomeWKSHandler).Host("webkansaja.com") http.ListenAndServe(":80", mx) }
#script #go #webkoe
Sat, 21 Mar 2015 6:12 am
Semua pattern tagsearch di List, tagView, dan POSTcreate juga dimasukkan ke var() #go #webkoe
Sat, 21 Mar 2015 6:07 am
Semua var #go masuk ke var() #webkoe
Fri, 20 Mar 2015 6:17 pm
- How to start executable file with forever
- How to Pass result and tagName to template
#todo #go #webkoe
Fri, 20 Mar 2015 3:52 pm
#test POST Golang #webkoe
Thu, 19 Mar 2015 6:17 pm
#awesome #webkoe http://webkoe.net:8080
Wed, 11 Mar 2015 9:11 pm
Tinggal 1 PR lagi untuk mereplace nodejs ... REDIS ... kalo perlu crawler yang selama ini dilakukan python dan curl, juga diambil alih #go #webkoe
Mon, 9 Mar 2015 12:40 am
#go tetap menunjukkan progress, satu persatu mulai bisa ditasi #webkoe
Mon, 9 Mar 2015 12:38 am
Berikutnya tinggal mengubah pagar tag (#) menjadi link, ...
1. Disisi server
   ** bisa dilakukan, tapi belum tau caranya mempassing HTML Tag ke template martini
2. Sisi Client
   ** tinggal copas script di express ke client
#webkoe #go
Mon, 9 Mar 2015 12:32 am
Single file #webkoe server written in #go :)

package main

  import (
    "github.com/go-martini/martini"
    "github.com/martini-contrib/render"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
    "net"
    "net/http"
    "fmt"
    "time"
    "crypto/rand"
    "strings"
    "regexp"
  )

  // local 
  var mongoConfig = "127.0.0.1:27017"
  var blogCollection = "webkoe_blog"
  var hostHome = "localhost:8080"
  var hostCatatan = "catatan"


  // webkoe
  // var mongoConfig = "mongodb://usermongo:passmongo@localhost:portmongo/dbmongo"
  // var blogCollection = "blog"
  // var hostHome = "webkoe.net:8080"
  // var hostCatatan = "catatan.webkoe.net"


  type Blog struct {
    Id string
    Things string
    Date string
    Ip string
    Agent string
    Tag []string
  }

  func GetIP(r *http.Request) string {
      if ipProxy := r.Header.Get("X-FORWARDED-FOR"); len(ipProxy) > 0 {
          return ipProxy
      }
      ip, _, _ := net.SplitHostPort(r.RemoteAddr)
      return ip
  }

  func randStr(strSize int, randType string) string {
     var dictionary string
     if randType == "alphanum" {
        dictionary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
     }
     if randType == "alpha" {
        dictionary = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
     }
     if randType == "number" {
        dictionary = "0123456789"
     }
     var bytes = make([]byte, strSize)
     rand.Read(bytes)
     for k, v := range bytes {
        bytes[k] = dictionary[v%byte(len(dictionary))]
     }
     return string(bytes)
   }

  func main() {

      // MARTINI
      m := martini.Classic()
      m.Use(render.Renderer(render.Options{
            Layout: "layout",
      }))

      // MONGODB
      session, err := mgo.Dial(mongoConfig)
      if err != nil {
        panic(err)
      }
      defer session.Close()
      session.SetMode(mgo.Monotonic, true)
      webkoe_blog := session.DB("admin").C(blogCollection)

      // ROUTER
      m.Get("/", func(r render.Render, req *http.Request) {
        if req.Host == hostHome {
          r.HTML(200, "home", req.Host)
        }else if req.Host == hostCatatan {
          r.HTML(200, "home-catatan", req.Host)
        }
      })

      m.Get("/blog", func(r render.Render) {
        var results []Blog
        err = webkoe_blog.Find(bson.M{}).Sort("-date").Limit(100).All(&results)
        if err != nil {
          panic(err)
        }
        // fmt.Println(results)
        r.HTML(200, "blog", results)
      })
      m.Post("/blog", func(req *http.Request, r render.Render){
        
        things := req.FormValue("things") + " "
        
        // tag
        regex, err := regexp.Compile("#([a-z])+ ")
        remove, err := regexp.Compile("(#| )")
        tags := regex.FindAllString(things, -1)
        // fmt.Println(tags)

        // modify semua listA
        var modTags []string
        for _, value := range tags {
            final := remove.ReplaceAllString(value, "")
            modTags = append(modTags, final)
        }
        // fmt.Println(modTags)


        waktu := strings.Split(fmt.Sprint(time.Now()), ".")[0]
        blog_id := randStr(7, "alphanum")
        ip := GetIP(req)
        agent := fmt.Sprint(req.Header["User-Agent"])

        jsonBlog := &Blog{Id: blog_id, Things: things, Date: waktu, Ip: ip, Agent: agent, Tag: modTags}
        err = webkoe_blog.Insert(jsonBlog)
        if err != nil {
          panic(err)
        }
        // fmt.Println(agent)
        r.Redirect("/blog")
      })
      m.Get("/blog/write", func(r render.Render) {
        r.HTML(200, "blog-form", nil)
      })

      m.RunOnAddr(":8080")
  }

Mon, 9 Mar 2015 12:30 am
Menempel ke tag#webkoe from #go
Sun, 8 Mar 2015 10:38 pm
Home #webkoe pake bootstrap storystrap
Sat, 7 Mar 2015 9:02 am
tidak mudah migrasi ke #go ... kembalikan lagi ke express, sementara ini #go masih dapat porsi di port 8080, http://webkoe.net:8080 #webkoe
Sun, 1 Mar 2015 8:19 pm
Utak-atik #webkoe ... mau nempel webkansaja.com kesini
Fri, 27 Feb 2015 8:26 am
#test Tebal #webkoe
Sat, 21 Feb 2015 3:03 am
http://webkoe.net:8080 resmi dihandle #go ... ada wikinyaa ... alamAaAakk #veryawesome #webkoe #alhamdulillah
Sat, 21 Feb 2015 12:35 am
mau nyoba #go untuk web development #project #webkoe
Sat, 21 Feb 2015 12:34 am
#go is in #webkoe server
Fri, 13 Feb 2015 8:28 am
Server dengan 512 MB RAM, belum cukup kuat untuk membebankan semuanya ke #redis, pada saat memory yg dipake redis di angka 2 digit, server crash. So,kmungkinan catatan akan dialihkan saja semua ke #mongodb, tagrank dan streamline blog yang sementara ini masih ditangani redis #webkoe
Mon, 9 Feb 2015 6:16 pm
tampilan /tag/:namatag sudah dimanusiakan #webkoe
Mon, 9 Feb 2015 5:56 pm
#polymertutorial001 #test ... Wooow, perilaku tag masih belum bisa ditebak #bug #webkoe
Mon, 9 Feb 2015 9:05 am
Refresh data Redis, again #webkoe
Tue, 3 Feb 2015 5:55 pm
TAG BOLD is allowed #webkoe
Tue, 3 Feb 2015 5:55 pm
#test #webkoe
My Test


Adooo heee ...
-- Sekian --
Tue, 3 Feb 2015 5:53 pm
#test #webkoe 
<script>
alert('Aim');
</script>
Tue, 3 Feb 2015 5:52 pm
Tag PRE is allowed #webkoe
Tue, 3 Feb 2015 5:14 pm
http://api.webkoe.net activated, sementara masih republika #webkoe
Thu, 29 Jan 2015 12:28 am
Ane sibuk update status di #webkoe, #djoko haur meinstall oracle di laptop asus x452c #dinasluar
Thu, 29 Jan 2015 12:27 am
server time added at home #webkoe, berguna untuk menyesuaikan waktu di hape, hape baru ngikut waktu operator mundur satu jam di banjarmasin, di jakarta waktu operatornya sudah sesuai. Indosat banjarmasin ga care sama waktu bts? maybe ...
Wed, 28 Jan 2015 7:31 pm
jam berapa ? #webkoe
Wed, 28 Jan 2015 6:55 pm
jam berapa ? #webkoe
Thu, 15 Jan 2015 10:05 pm
Kompas update #fixed ... sementara mengambil judul saja, belum ke snapshoot isi artikel #webkoe
Thu, 15 Jan 2015 8:35 pm
kompas update macet #webkoe
Sat, 10 Jan 2015 7:15 pm
sempat mau nyoba #nginx , ternyata #apache yang baru sudah lebih powrfull ketimbang nginx (lupa versi apache-nya), kata pihak apachenya ... ga jadi nyoba #nginx #project #webkoe
Mon, 5 Jan 2015 11:41 am
Refreshid Redis database #webkoe
Fri, 26 Dec 2014 3:40 pm
free RAM 75MB uptime 25 days #webkoe #nice
Wed, 24 Dec 2014 11:33 pm
tulisan sebelum ini, untuk keyword "catatan online" #webkoe
Wed, 24 Dec 2014 11:32 pm
Ternyata urutan pencarian di google juga memperhatikan dr mana user mengakses, jika diakses dengan browser mobile, #webkoe ada di urutan kedua, baik google.com atau google.co.id, sedangkan jika diakses lewat browser selain mobile, urutannya agak menjauh, ada di posisi dua atau tiga terbawah di halaman 1
Sun, 14 Dec 2014 5:46 pm
Playing websocket http://webkoe.net/chat #webkoe
Sat, 13 Dec 2014 11:57 am
Aha,... we designed it to be free write for everyone guys ... so no login required ... Ahahaha ... #webkoe
Mon, 8 Dec 2014 3:50 pm
#problemsolved #webkoe Replace "<" to html specialchar
Mon, 8 Dec 2014 3:49 pm
Bold #webkoe #bug
Mon, 8 Dec 2014 3:38 pm
Aha, i've fix that's manually ... #webkoe #bug
Sun, 30 Nov 2014 2:22 pm
dump.rdb redis lost, untung msh afa backup di mongo. Al hasil data quran lost juga, coz blm ada import ke mongo ... #webkoe
Sun, 30 Nov 2014 2:16 pm
Wuff #webkoe
Sat, 29 Nov 2014 6:27 pm
appendonly set to no, snapshoot pake save 1 1, lakukan penulisan tiap 1 sec jika ada perubahan 1 key #redis #webkoe
Sat, 29 Nov 2014 6:05 pm
appendonly.aof file 2,5GB ... konsumsi memory mencapai 30%. Kemungkinan redis di kill by sistem #webkoe
Fri, 28 Nov 2014 7:31 pm
Down lagi #webkoe
Tue, 25 Nov 2014 8:18 am
Sosialisasi e-faktur di lt 8, ane males ikut ... mainan polymer aja lah d bawah, huahaha #kantor, btw kemaren ga ada nulis d #webkoe
Sat, 22 Nov 2014 9:52 am
Perlu eliminer db dari server, jangan sampai db error mbikin server app down juga #webkoe
Sat, 22 Nov 2014 9:51 am
Down lagi, sepertinya ada masalah di redis #webkoe
Sun, 16 Nov 2014 1:41 pm
wew, ... down #webkoe why?
Thu, 13 Nov 2014 10:34 pm
http://motherfuckingwebsite.com betul ! cuman ya bahasanya mbok ya ga usah gitu #enlightenment #webkoe
Thu, 13 Nov 2014 10:31 am
Wah,kmaren ga ada nulis di #webkoe
Tue, 11 Nov 2014 4:19 pm
Google BOT nyasar, bleh ...
20141111161321	66.249.65.137	http://catatan.webkoe.net/page/10952	(REF) undefined	Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
ngapain ke halaman 10952 ? #webkoe
Mon, 10 Nov 2014 1:16 am
LOG added #webkoe
Sun, 9 Nov 2014 11:14 pm
#webkoe sekarang sudah page one gan, untuk keyword "catatan online"
Thu, 6 Nov 2014 12:07 am
waktu post news ditampilkan, kompas agak beda dengan yang lainnya, pake satuan ago, karena crawlernya memang ngambil ago ... #webkoe
Wed, 5 Nov 2014 10:28 pm
Ternyata, diantara republika,kompas dan detik, detik yang paling tidak produktif menulis berita, ... #hahaha #webkoe #newsstream
Wed, 5 Nov 2014 10:26 pm
Detik update added #done #webkoe
Wed, 5 Nov 2014 8:45 pm
WOW, webkoe berada di page 2 untuk keyword "catatan online" , baik di google.com atau google.co.id #webkoe
Tue, 4 Nov 2014 6:27 pm
Had 64 Pages #webkoe
Tue, 28 Oct 2014 11:47 pm
Streamnews detik sudah ready, tinggal masukkan ke redis #webkoe
Tue, 28 Oct 2014 11:19 am
Fungsi GRAB crawler Republika must 200 set ke OFF, karena kadang ada link yang redirect, kode 302
def grab(list,label) :
	parameter = ["curl","-H","User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0 FirePHP/0.7.4","--max-time", "1000", "--write-out", "%{http_code}", "--silent"]
	for l in list :
		parameter.append(l)
	default_code = "000"
	reconnect = ""

	proc = subprocess.Popen(parameter,stdout=subprocess.PIPE)
	(out, err) = proc.communicate()

	print label

	'''
	while default_code != "200" :
		proc = subprocess.Popen(parameter,stdout=subprocess.PIPE)
		(out, err) = proc.communicate()
		
		if str(out) == "200" :
			default_code = "200" # OK
			info = "OK"
		elif str(out) == "000" :
			info = "FAIL"
			reconnect = "reconnect"
		elif str(out) == "302" :
			info = "REDIRECT"
			reconnect = "reconnect"
		else :
			info = "..."
			reconnect = "reconnect"

		print label + ": " + str(out) + " " + info + " " + reconnect
	'''
#webkoe #script #python
Sun, 26 Oct 2014 10:20 am
Jelas sekali bedanya, nuansa berita di republika dan kompas, di republika kelihatan sekali tata krama dan filter dalam memberitakan sesuatu, media yang disebut terakhir ? silakan nilai sendiri #minds #newsstream #webkoe
Sat, 25 Oct 2014 9:06 pm
AWESOME, kpikiran untuk melempar search ke google saja, daripada harus bikin search sendiri. Tadi bingung kapan nulis chrome make material design, mau search di mongo, mongo webkoe hanya listen localhost, akhirnya ane pake pencarian google dengan keyword "webkoe.net chrome" ... dan WOW, muncul !!! ternyata ane pake tag android, bukannya minds ... #enlightenment #webkoe
Thu, 23 Oct 2014 1:45 am
Wah, kmaren terlalu cius maen sms, sampe lupa ngupdate status di #webkoe #project, sms sudah bisa disposisi sekaligus UI nya. UI mewajibkan dokumen diterima terlebih dahulu sebelum bisa didisposisi ke bawahan, bawahan yang sudah didisposisi tidak muncul lagi di list bawahan. Untuk disposisi tinggal tambahan jenis dan catatan, juga action lainnya seperti 'arsip ke' atau link ke surat keluar. Yang lebih menantang sebenarnya ada di pencarian dokumen
Mon, 13 Oct 2014 5:03 am
there are 57 pages here ... #webkoe
Sat, 11 Oct 2014 2:57 pm
News detik start ... #webkoe
Wed, 8 Oct 2014 12:43 pm
republika update Added #done #webkoe
Sun, 5 Oct 2014 11:52 pm
benar benar selisih 1 jam sama jakarta ... 22:52 #webkoe
Sat, 4 Oct 2014 1:49 pm
Ueh, harusnya kalo post failed, tagrank ga di incr ! #bug #webkoe
Fri, 3 Oct 2014 4:16 am
python crawler_republika sampai saat ini masih bermasalah saat memfetch detail link di file 1 - 17.html , data yang tertulis masih whole file, belum spesifik ke target. Mungkin perlu di try finally juga ? #webkoe
Fri, 3 Oct 2014 4:13 am
Tagrank news_spot 3 , padahal hanya ada 2 catatan, kemungkinan ada masalah saat post, redis tagrank sudah mencatat, tapi redis posttime blm berhasil post #webkoe #bug
Thu, 2 Oct 2014 2:30 am
Kepikiran hak cipta kompas, dkk yang di crawler dan ditempel disini, seandainya nanti ini jadi serius ... ada aspek pelanggarannya kah ? bagaimana dengan flipboard, dkk ... #fyuuh #webkoe
Thu, 2 Oct 2014 12:44 am
Saat menggunakan supervisor, free ram 265MB an, setelah pindah ke forever free ram bertambah menjadi 310MB an, selisih 50MB an. WOW ... that's why we move to forever ... untuk -w kira2 ada tambahan konsumsi ram lagi ? Kita lihat saja nanti ... #webkoe
Thu, 2 Oct 2014 12:40 am
Crawler akhirnya start via forever saja, dengan perintah "forever start -c python /python-app/crawler.py" , -c parameter untuk mengarahkan ke python, default forever memakai "node". Tambahan, untuk restart command otomatis jika ada perubahan script/auto restart, tinggal tambah "-w" for watch. #webkoe #nice #enlightenment
Wed, 1 Oct 2014 11:31 pm
79|33|مَتَٰعًا لَّكُمْ وَلِأَنْعَٰمِكُمْ test quran font #webkoe
Wed, 1 Oct 2014 10:39 pm
sub domain "quran", "news" n "api" ready ... tinggal aktifkan routenya #webkoe
Tue, 30 Sep 2014 5:36 pm
Head to head media stream added, terinspirasi dari kekesalan eko dengan pemberitaan media saat ini ... #nice #webkoe
Tue, 30 Sep 2014 10:15 am
Font 17px lumayan enak dipandang #webkoe
Tue, 30 Sep 2014 9:01 am
utak atik tampilan depan #webkoe
Mon, 29 Sep 2014 6:16 pm
News crawler sudah running dengan supervisor #webkoe #done
Sun, 28 Sep 2014 10:22 pm
Dikirim dari Tab 2 #aim #webkoe
Sat, 27 Sep 2014 12:40 am
I hate typo, mungkin perlu juga dipasang spelling checker disini ? Semua kata perlu diregister ke redis ? so, mungkin perlu ada sub domain baru, "kata" ... #hahaha #minds #webkoe #todo #nice
Sat, 27 Sep 2014 12:37 am
Perlu lerhatian lebih untuk dua hal ini, /tag/ dan /create/ #todo #webkoe
Sat, 27 Sep 2014 12:25 am
1. create sub domain "quran", untuk selanjutnya sub domain ini bisa explorasi surah dan ayat, database sepertinya memang harus berbasis document, so mongodb solusinya, how to redis-ing ? boleh dibincangkan ... 2. create sub domain "tulisan", tulisan dan catatan beda, catatan berupa short text saja, tidak editable, tidak terstruktur dan sekali tulis selesai. Untuk itu redis are suitable, sedangkan tulisan more complex, diolah dengan rich text editor, terstruktur, untuk keperluan jangka panjang, editable dan formatable ... database yang cocok adalah berbasis document, and itu artinya mongodb base. 3. sub domain "news", isinya kumpulan berita terupdate dari banyak sumber media, that's why we need curl and python here, seperti biasa, database tetap perlu key-store redis untuk streamlinenya, dan mongodb untuk pengolah documentnya, pola yang sama seperti halnya catatan. #todo #webkoe
Wed, 24 Sep 2014 9:02 pm
Quran added #webkoe
Wed, 24 Sep 2014 8:29 am
server.js sempat down tanpa diketahui sebabnya ? gara2 restart redis ? #webkoe
Tue, 23 Sep 2014 5:51 pm
Propagasi IP speedy agak telat dibanding smartfren, Send from speedy #webkoe
Tue, 23 Sep 2014 5:33 pm
Awesome, subdomain sepuasnya ... #alhamdulillah #webkoe
Tue, 23 Sep 2014 5:32 pm
Post dari catatan.webkoe.net #webkoe
Tue, 23 Sep 2014 4:56 pm
adding subdomain #webkoe
Mon, 22 Sep 2014 3:32 pm
Nama hari added, ini contoh skrip untuk mendapatkan nama hari dari string tanggal
var _date = replies[a].date
var date = new Date(_date)
var newdate = date.getDay()
var namaBulan = {}
namaBulan[0] = "Minggu"
namaBulan[1] = "Senin"
namaBulan[2] = "Selasa"
namaBulan[3] = "Rabu"
namaBulan[4] = "Kamis"
namaBulan[5] = "Jumat"
namaBulan[6] = "Sabtu"
replies[a].date = namaBulan[newdate] + " " + _date
#script #webkoe
Mon, 22 Sep 2014 6:53 am
there's 47 pages on #webkoe
Tue, 9 Sep 2014 9:30 pm
Dan satu hal lagi, sepertinya kolom create tulisan ini perlu lebih dimanusiakan, bukan sekedar form standar seperti ini, ... #hahaha ... mmm ... solusinya mungkin bisa dengan memasang bootstrap #webkoe
Tue, 9 Sep 2014 9:20 pm
tagrank works very nice walaupun auto create link hashtag bermasalah, karena masalah auto link ada pada replacenya ... solusi yang mungkin adalah jangan lakukan replace global (regex tanpa 'g') dan lakukan replace sejumlah tag yang ditemukan ... sounds good #webkoe
Tue, 9 Sep 2014 9:13 pm
#todo, auto create link pada hashtag mesti diperbaiki ... #mybug dan #mybug1 seharusnya beda link #webkoe
Thu, 28 Aug 2014 11:40 am
wah, kmaren ga ada nulis di #webkoe #gapenting
Tue, 26 Aug 2014 8:29 pm
Ah ternyata sudah ada 33 tag di tagrank #webkoe
Tue, 26 Aug 2014 8:27 pm
Private tapi tanpa user/password ? Oh my ... who care bout this site ? thats make #webkoe private ... why not using ajax, so crawler can grab this ? we need crawler for history ... #smile #webkoe
Tue, 26 Aug 2014 8:16 pm
Sampai hari ini ada 40 page #webkoe
Tue, 12 Aug 2014 7:19 pm
Dua domain merefer ke host yang sama webkoe.net dan kulitmanggis.co.id #webkoe #project
Fri, 8 Aug 2014 10:39 pm
Nginap di AMD, #omopal ikut, ni #ayang sama #aim sudah #zzz, tinggal abah yang masih betah update status di #webkoe
Tue, 5 Aug 2014 10:04 pm
Alhamdulillah, sudah bisa bikin bbm sendiri ... wuhuuuuuuuuuuuuuu #project #done #websocket #webkoe
Tue, 5 Aug 2014 9:21 pm
Mungkin akan berbeda antara "Webkoe - Catatan Online" dan "Catatan Online | Webkoe" #webkoe #seo
Tue, 5 Aug 2014 4:52 pm
Websocket works ! #android #project #webkoe
Tue, 5 Aug 2014 2:52 am
trending tag, dari menurun dibikin terus memanjang ... hemat space vertikal #webkoe
Tue, 5 Aug 2014 2:32 am
Nyoba native android connect ke websocket, target SDK API-LEVEL 8 froyo. Sudah tampil dan tanpa error,tapi belum bisa konek ke server, percobaan dengan web aja gagal, huehue ... bingung dengan protokol yang digunakan, WS ato HTTP ... #android #project #webkoe #websocket
Mon, 4 Aug 2014 5:27 pm
7 Last Newest Tag ? #webkoe
Mon, 4 Aug 2014 11:39 am
TAGRANK STARTED FROM THIS POST #webkoe
Mon, 4 Aug 2014 11:39 am
Tag case sensitive #webkoe
Mon, 4 Aug 2014 11:32 am
Bug ? samakah #webkoe dan #WEBKOE
Mon, 4 Aug 2014 11:23 am
#tagrank added #done #webkoe
Mon, 4 Aug 2014 10:33 am
Test6 #aim #webkoe
Mon, 4 Aug 2014 10:13 am
Test5 #webkoe
Mon, 4 Aug 2014 10:09 am
Test4, #aim #webkoe
Mon, 4 Aug 2014 10:08 am
Test3 tagrank #webkoe
Mon, 4 Aug 2014 10:08 am
Test2, #tagrank #webkoe
Mon, 4 Aug 2014 10:00 am
Test, tagrank #aim #aim #webkoe
Mon, 4 Aug 2014 9:42 am
Test #aim #aim #webkoe
Sun, 3 Aug 2014 5:54 pm
Create dari TAB 2 #webkoe
Sun, 3 Aug 2014 3:01 am
Responsive #done for now, next tagrank, ... tagrank started #webkoe
Sun, 3 Aug 2014 1:31 am
responsive mengambil Cascade-framework #webkoe
Sat, 2 Aug 2014 10:54 pm
Responsive web start ... #webkoe
Sat, 2 Aug 2014 10:51 pm
Bug yang me-replace beberapa kali tag sama, fixed ... Solusinya adalah membuat variable baru dengan key unik #webkoe
Sat, 2 Aug 2014 7:39 am
Bug ? #bug #webkoe #bug
Sat, 2 Aug 2014 7:37 am
replace parsial pada tag saja sebenarnya bisa dilakukan dengan JS, tapi crawler mengambil halaman awal load, bukan halaman setelah di replace, So ... link tidak akan dicrawl #webkoe
Sat, 2 Aug 2014 7:34 am
things diparsing dengan <%- %>, karena <%= akan mendecode link, bagaimana caranya agar decode tidak berlaku saat masking link ? #webkoe
Sat, 2 Aug 2014 7:32 am
Roll back, untuk halaman depan newline ditiadakan lagi, kembali seperti semula, mungkin diaktifkan untuk blog readmore saja #webkoe
Sat, 2 Aug 2014 7:19 am
New line character replace to
first second #webkoe
Sat, 2 Aug 2014 5:37 am
Tag bisa langsung click, added,... #webkoe
Sat, 2 Aug 2014 5:31 am
Double tag, here is #aim and this #aim to #webkoe
Wed, 30 Jul 2014 10:27 pm
Previous, Next, and Home link added #webkoe
Wed, 30 Jul 2014 5:10 pm
Lagi nyari responsive framework yang enak dipake #webkoe
Wed, 30 Jul 2014 5:07 pm
Droplet New York, destroyed #webkoe
Wed, 30 Jul 2014 5:00 pm
Sangat terasa bedanya, server amerika vs singapura, jauuh lebih cepat... ato mungkin gara gara javascript dipreteli semua ? #webkoe
Fri, 25 Jul 2014 9:04 am
Droplet Upgrade ke UBUNTU 14 dari sebelumnya 12, data center pindah ke Singapura dari sebelumnya New York #webkoe
Mon, 14 Jul 2014 5:23 am
Playing with color are hard ... #webkoe
Sun, 13 Jul 2014 7:21 pm
UI niru google #webkoe
Sat, 12 Jul 2014 7:45 am
Dua posting sebelum ini dan posting ini, sebaiknya bisa dimerge #webkoe
Sat, 12 Jul 2014 7:42 am
Tag autocomplete sampai saat inin masih tersendat, karena ternyata memang lumayan kompleks, autocomplete tag diranking sesuaijumlah keterseringannya digunakan. So jika user mengetik #a maka urutan autocompletenya #aim #ayang #a... schema redis yang ada sekarang belum mengakomodir tag rank. #webkoe
Sat, 12 Jul 2014 7:31 am
Kadang ada beberapa tag sama berderet, perlukah di merge? Caranya? #webkoe
Sun, 29 Jun 2014 5:01 am
Misal seperti ini, lupa masang tag puasa, dengan range waktu posting tanpa tag pun bisa dijaring postingan yanh ditulis saat puasa #webkoe
Sun, 29 Jun 2014 4:59 am
Lumayan susah untuk disiplin nulis tag, mungkin perlu ada pencarian berdasarkan range waktu posting #webkoe
Fri, 20 Jun 2014 7:20 pm
Tapi, kolom buat menulis ini terlalu kecil kalo dari tab... bagaimana caranya menyesuaikan lebar? Begini kalo make punya org, susah dicustomizenya... #webkoe
Fri, 20 Jun 2014 5:12 pm
triple orange birds fly here .... #webkoe
Fri, 20 Jun 2014 4:22 pm
Dengan UI card ini flickerpage saat di scroll tidak muncul lagi, untuk ficker yang lain masih muncul, tapi ngga separah dulu... #webkoe
Fri, 20 Jun 2014 11:36 am
ditulis dari landscape mode, spacenya sangat sempit euy ... #webkoe
Mon, 16 Jun 2014 4:19 pm
Try using #zepto ... rewrite card ui #webkoe
Sun, 15 Jun 2014 4:42 am
you know, hanya ada satu image di #webkoe ... very effisien website bukan ? #hahaha
Sat, 14 Jun 2014 3:45 pm
#webkoe keluar dari alexa ! #hahaha, penting belajar SEO ? wait... ini bukan mau jualan kan? ini private site ...
Mon, 9 Jun 2014 7:59 am
#webkoe header added ...
Mon, 2 Jun 2014 5:13 pm
#webkoe #error log file : n5Zc.log
Mon, 2 Jun 2014 10:48 am
webkoe's stream now using redis #redis #webkoe #missioncompleted