#webkoe
445 catatan
561 view
Wed, 11 Dec 2024 6:50 pm
Pukul berapa? ini adalah waktu yang benar, setelah dilakukan restart. #webkoe
Wed, 11 Dec 2024 10:27 am
Pukul berapa? Date server salah, artinya pada saat billing tidak dibayar, server sepertinya FREEZE. #webkoe
Wed, 16 Oct 2024 9:12 pm
Intersection Observer is nice. #webkoe #Javascript-Stuff #Intersection-Observer-Javascript
Fri, 4 Oct 2024 7:30 pm
Chart Crypto bisa diakses di link ini Market Activity Of Indodax Chart Powered by Indodax API & Mongodb Atlas Chart #webkoe #webkoe-crypto #mongodb-atlas #indodax-API #crypto-chart-insight #crypto-chart-link
Sat, 28 Sep 2024 3:02 pm
semua request HTTP ke webkoe.net dialihkan ke HTTPS. #webkoe #webkoe-http-https
Thu, 26 Sep 2024 11:14 pm
Webkoe crypto works like a charm. Tidak menggunakan react, hanya bermain dengan Promise dan await Javascript, dan library standar jQuery. Dan beberapa trik setTimeout punya javascript bawaan juga. #alhamdulillah #webkoe #webkoe-crypto #problemsolved #problem
Wed, 25 Sep 2024 6:04 am
Rencananya akan menggunakan Reactjs untuk menangani webkoe-crypto. Render manual dengan jQuery beberapa kali gagal, dan wajar karena kodenya terlalu versi saya, bukan versi yang benar. Wkwkwkwk... Render DOM dengan React terbukti sangat efisien dan memang sudah teruji sebagai kode "yang benar". #webkoe #webkoe-crypto #webkoe-crypto-project #reactjs
Sun, 22 Sep 2024 9:47 pm
Perlu menulis ulang kode crypto V2, sepertinya akan banyak bermain dengan promise dan await nya javascript. Yang dilakukan saat ini pada saat mengambil data ke API indodax, setiap data coin masih berdiri masing-masing. Misal data ADA diambil, hasilnya langsung di masukkan ke DOM ADA yang telah dibuat diawal. - Buat DOM seluruh coin, berdasarkan array code crypto - BTC data -> DOM - ADA data -> DOM - ETH data -> DOM ----> sampai sini berhasil - BTC,ADA,ETH data -> DATA ----> Failed (DATA tidak bisa dibaca, karena prosesnya tidak diketahui) Solusi yang mungkin adalah menggunakan Promise dan Await. #webkoe #webkoe-crypto-project #javascript-promise-await #todo #problem
Sat, 21 Sep 2024 11:01 pm
Crypto V2 sudah ready. Todo: - Filter coin - Lihat transaksi terbesar - Status Bear/Bull untuk gabungan semua coin #webkoe #webkoe-crypto-project #todo
Wed, 18 Sep 2024 7:24 pm
Mongod service set to Restart=always ini diperlukan agar setiap kali mongod di kill system, dia bisa start otomatis, menurut artikel begitu, kita lihat saja nanti. Problem solved of Mongod Killed By System #webkoe #problemsolved
Tue, 10 Sep 2024 8:57 pm
Renew VPS Rumahweb Rp67.900,- sampai 11 Oktober 2024 nanti. #webkoe #rumahweb-VPS #rumahweb
Tue, 10 Sep 2024 5:00 am
Webkoe menggunakan zona waktu WIB, sejak VPS Rumahweb, bawaan defaultnya, belum disesuaikan ke WITA. #webkoe
Sun, 8 Sep 2024 9:33 pm
Explore Vuejs, dengan mengikuti tutorial di W3schools. VueJS W3Schools Rencananya vue ini akan saya gunakan untuk membuat dashboard crypto yang lebih informatif dan nyaman dibaca. Mengambil API dari indodax. Project ini akan dihandle oleh link berikut ini: CryptoV3 Update 22:25 WIB - ternyata ribet, harus install nodejs dan pernak-perniknya - pending dulu aja lah #vuejs #webkoe #indodax #indodax-API
Sun, 8 Sep 2024 8:25 pm
MongoDB kembali ke pangkuan Ibu Pertiwi, tidak lagi menggunakan Cluster. Ini adalah solusi dari "Kadang-kadang webkoe tidak bisa diakses" #webkoe #mongodb #problemsolved
Fri, 6 Sep 2024 4:19 pm
Sun, 1 Sep 2024 9:59 pm
Script google analytic sudah diperbaharui. "Data collection may take up to 48 hours to get started" Dalam 2 hari ke depan baru bisa aktif analyticsnya. #webkoe #google-analytics
Sat, 31 Aug 2024 8:19 pm
Droplet Digital Ocean destroyed. Terima kasih telah melayani webkoe selama kurang lebih 8 Tahun. #webkoe #digitalocean #rumahweb-VPS
Sat, 31 Aug 2024 7:56 pm
Mon, 19 Aug 2024 7:00 pm
Sepertinya migrasi ke VPS Rumahweb akan saya tunda dulu, control panelnya tidak senyaman digital ocean (DO), ini bahkan tidak bisa diakses. O iya, waktu restart nya pun tidak secepat DO. #webkoe #rumahweb-VPS #pending-migrasi #digitalocean
Mon, 19 Aug 2024 12:33 am
Sun, 18 Aug 2024 1:10 am
Sepertinya route akan dimigrasi ke GIN saja. Session Gorilla masih bermasalah, sedangkan library ini sudah tidak lagi di maintenance oleh developernya. #webkoe #problem #golang-gin
Thu, 15 Aug 2024 11:52 pm
Beberapa menu sudah bisa berjalan di hosting yang baru setelah penyesuaian modul, yang masih bermasalah adalah session. 17 Agustus 2024 06:28 WIB Masalah session, pada saat awal di halaman create telah berhasil menyimpan session berupa random karakter, namun pada saat post session hilang. Hilangnya session ini kemungkinan karena perubahan menjadi modul, desain modul yang dipanggil pada setiap route baru sepertinya selalu membuat instance Store session baru; bukan menggunakan Store yang sudah ada. Solusinya yang mungkin adalah modul session dipanggil satu kali saja di main script. Setiap route baru hanya merefer ke instance Store session yang hanya dipanggil satu kali tersebut. 18 Agustus 2024 22:36 WIB Create sudah bisa, session sudah kembali normal. Menggunakan library baru, Gin. Session lama menggunakan gorilla error. #webkoe #gorilla-toolkit #gorilla-sessions #problem #problemsolved #alhamdulillah #gin-library
Sun, 11 Aug 2024 11:18 am
Nyoba VPS nya Rumahweb, 60 ribu per bulan sebelum pajak. Saya memilih lokasi server di Bogor, adem. 19:05 wib - VPS sudah bisa listen port 80, masih diakses lewat IP - Perlu menulis ulang kode, karena go tidak lagi support relative path. Banyak bermain Go Mod #rumahweb #webkoe #rumahweb-VPS
Sat, 10 Aug 2024 6:53 pm
Kadang-kadang webkoe susah diakses kemungkinan karena cache di browser mobile. #webkoe #tanyakenapa #problem
Sun, 19 May 2024 3:12 am
Coba library ini untuk wysiwyg https://github.com/Alex-D/Trumbowyg #todo #webkoe #wysiwyg-editor-web
Sun, 19 May 2024 2:28 am
Berikutnya kita akan bikin textarea pada menu "Create" menjadi penuh magic... Lets do it! Idenya adalah memudahkan membuat dan mengedit catatan pada antarmuka textarea pure bawaan native browser dengan tetap mempertahankan kesederhanaan dan kecepatan (by markup saja, bukan dengan WYSIWYG editor yang saya pikir terlalu boros sumberdaya). #todo #webkoe
Sun, 19 May 2024 1:01 am
Domain handle dipindahkan ke cloudflare, Error #webkoe #domain-handle-migration #rumahweb #cloudflare
Wed, 15 May 2024 9:52 pm
tag italic tidak membuat miring tulisan, ternyata karena font Mali tidak suppport italic (sepertinya). #webkoe
Wed, 15 May 2024 9:26 pm
Error ini yang membuat tidak bisa ke halaman 11 dan seterusnya. Executor error during find command :: caused by :: Sort exceeded memory limit of 33554432 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in. Problem Solved: Ternyata solusinya mudah, cukup membuat index baru dengan memasukkan field yang dijadikan kunci sort. Dalam hal ini, paging memerlukan field "date" yang dijadikan acuan sort. Pada MongoDB Compass: 1. Buat index baru, field date dengan type -1(desc) 2. Lalu "Create Index" Selesai, dan sekarang page 11 dan seterusnya sudah bisa diakses tanpa error. #mongodb #mongodb-compass #webkoe #todo #problemsolved
Mon, 6 May 2024 12:05 am
Menambahkan "Read More" pada tulisan yang panjangnya melebihi yang ditentukan dengan menggunakan library readmore.js Works like a charm #webkoe #readmore-js-library
Tue, 30 Apr 2024 4:53 am
Tue, 30 Apr 2024 4:50 am
- Views of Tag, added - SEO-ing permalink, menambahkan tag pada url permalink - Permalink icon clickable added to card #webkoe
Sun, 28 Apr 2024 1:42 am
- Card dijadikan template tersendiri; - Mouseover menu pada card menjadi round biru; - Add jumlah hit/views pada card #webkoe
Tue, 2 Apr 2024 11:40 pm
Antisipasi jika user menekan tombol create berkali-kali dilakukan dengan cara yang simple saja, yaitu mencek id telebih dahulu sebelum input. Cara terbaik sebenarnya adalah membuat field id menjadi unik, namun hal ini terkendala dengan data sebelumnya; banyak terdapat duplikasi id pada data lama. Yang aneh adalah, pada saat saya melakukan cleansing manual, terdapat error pada id tertentu, namun ketika id tersebut dicari, tidak ditemukan. #webkoe
Tue, 2 Apr 2024 9:47 pm
Yuk bongkar kenapa post berkali-kali dengan klik cepat tombol "create", berhasil? #webkoe
Tue, 5 Mar 2024 12:41 am
Menu pada card diubah ke popup, mengikuti twitter. Warna tombol menu utama di bagian paling atas, diubah ke Biru dari sebelumnya hijau. #webkoe
Mon, 4 Mar 2024 12:15 am
Sun, 3 Mar 2024 11:57 pm
Menyesuaikan menu pada Card, klik triple dot dan muncul menu transparan menutupi seluruh card. Perubahan ini hanya di menu Home, belum diterapkan ke view yang lain seperti page, tag, dan permalink. #webkoe
Sun, 3 Mar 2024 1:17 am
Membuka kembali VSCODE, menyelami script webkoe. - Routing spesifik ke domain webkoe.net saja, jika request selain domain webkoe.net maka NO RESPON. Hal ini dilakukan setelah saya menemukan hasil pencarian webkoe.net lewat edge ternyata mengarahkan ke alamat ip address webkoe, dan ternyata bisa diakses dengan IP. - Develop lewat laptop iCherry #webkoe #iCherry-kantor
Wed, 28 Feb 2024 10:16 am
Akses home bermasalah,... tidak bisa diakses, loading lama. 16:01 WIB Sudah kembali normal #webkoe #tanyakenapa
Tue, 30 Jan 2024 8:02 pm
Wed, 10 Jan 2024 9:59 am
Beberapa hari yang lalu sempat down, ini kok bisa recovery sendiri ya? #webkoe #tanyakenapa
Tue, 3 Oct 2023 8:19 am
Sun, 1 Oct 2023 11:59 pm
Sun, 1 Oct 2023 7:39 pm
Develop snapshoot analyzer, berfungsi untuk membuat historical view dari snapshoot yang di generate saat dilakukan update Blog. [snapshoot-analyzer-data] amount 8 price 101 value 1789 #snapshoot-analyzer #snapshoot-analyze-amount-price-value #webkoe #test
Wed, 20 Sep 2023 11:28 pm
Post pertama kali lewat hape dengan klik suggest untuk add Tag. #webkoe #nice #what-a-nice-day #works_like_a_charm #done
Wed, 20 Sep 2023 11:14 pm
Rekap hari ini: - Masalah monitor, done; - Permalink, done; - Add Tag dengan Klik saja, done. Time to sleep... #justwritesomething #webkoe #problemsolved #msi_gf63 #monitor-aoc #aim-nft #our-nft
Wed, 20 Sep 2023 10:58 pm
Wed, 20 Sep 2023 8:47 pm
Wed, 20 Sep 2023 8:25 pm
Kumpulan Emoji Char yang di support webkoe 🕌🎁🛠️ #🕌 #🎁 #🛠️ #emoji-char #webkoe
Wed, 20 Sep 2023 7:49 pm
Sun, 17 Sep 2023 1:56 pm
Rewrite model, disesuaikan dengan nama tabel saja. Format : [nama-tabel]_model Supaya tidak membingungkan. #webkoe
Mon, 11 Sep 2023 8:41 pm
Upgrade ke Ubuntu 22 menyebabkan mongodb tidak kompatibel, blog setelah tanggal 15 Januari 2023 belum bisa di restore, untungnya sempat melakukan backup di Mongodb Cloud. Mongodb akhirnya tidak lagi menggunakan mongodb lokal, tapi dialihkan ke MongoDB Cloud (Free). Ada beberapa catatan menarik: - Go akhirnya menggunakan Go1.20 - MongoDB akhirnya pindah ke Cloud - Webkoe akhirnya dipaksa untuk rewrite ke kode yang lebih ter-manage dengan baik #webkoe #problem #alhamdulillah
Sun, 15 Jan 2023 1:13 am
Sat, 7 Jan 2023 6:45 pm
Webkoe service no more flag; --production & --redirect 18:46 Systemctl start webkoe-web-server DONE #webkoe
Sat, 7 Jan 2023 5:33 pm
Log: Webkoe dipindahkan ke nameserver cloudflare, menggunakan SSL bawaan cloudflare. Registrasi domain masih di rumahweb. Note: service path: /etc/systemd/system command: systemctl restart webkoe-web-server #webkoe #rumahweb #cloudflare #migrasi-nameserver #webkoe-service
Wed, 4 Jan 2023 8:38 am
wget -qO- https://repos-droplet.digitalocean.com/install.sh | sudo bash #webkoe
Mon, 6 Jun 2022 10:50 am
{\__/} (●_●) ( >🌮 Want a taco? Ternyata menarik juga....wakwakwak #webkoe #ascii-emoticon #nice
Mon, 6 Jun 2022 10:46 am
Webkoe is up, beberapa hari yang lalu tidak bisa diakses karena setting ip DNS di rumahweb merujuk ke alamat ip tidak dikenal. Solusinya adalah mengembalikan seting ke alamat VPS yang benar. --> ping webkoe.net PING webkoe.net (206.189.42.180) 56(84) bytes of data. 64 bytes from forward-app.vps.mysrsx.net (206.189.42.180): icmp_seq=1 ttl=62 time=0.697 ms 64 bytes from forward-app.vps.mysrsx.net (206.189.42.180): icmp_seq=2 ttl=62 time=0.887 ms --> 206.189.42.180 IP TIDAK DIKENAL ⊂_ヽ \\ \( ͡° ͜ʖ ͡°) > ⌒ヽ / へ\ / / \\ レ ノ ヽ_つ / / / /| ( (ヽ | |、\ | 丿 \ ⌒) | | ) / ノ ) Lノ (_/ #webkoe #problem #problemsolved #tanyakenapa
Tue, 5 Apr 2022 11:00 pm
Sejak chrome desktop update ke versi 100, fetch ajax ke indodax jadi ter-affected CORS policy. Browser memblock akses ke sumber dengan nama berbeda, webkoe.net ke indodax.com. Ternyata bukan cuma webkoe, banyak web yang saya akses gagal load karena tersandung policy baru ini. Saya pikir hanya berlaku pada google chrome, setelah saya coba dengan browser lain, sama. Brave, Edge, dan Opera. Untungnya blok belum berlaku pada chrome android, akses ke webkoe crypto lewat chrome android masih bisa dilakukan, sepertinya hanya menunggu waktu saja untuk chrome android turut mengimplementasikan policy baru CORS nya ini. Oya, saat menginstall brave jadi berkenalan dengan BAT nya. Brave browser build in wallet, yang mana user akan dapat koin BAT pada saat click ads yang mereka sediakan. -- update 6 April 2022 12:45 Saat diakses dari PC kantor, dengan Chrome 100 dan Brave, lancar jaya, tidak ada isu CORS. Tanya kenapa ?? #webkoe #cors-issue #google-chrome #brave-browser #BAT-coin #crypto #nice #tanyakenapa
Tue, 15 Feb 2022 9:22 pm
Wed, 9 Feb 2022 10:22 pm
Crypto watcher add shortcut ke beberapa koin 🔧🔧🔧 #crypto-watcher #webkoe
Mon, 31 Jan 2022 2:30 pm
Nyoba mongodb di Amazon Web Service (AWS) - nyoba yang free dulu - sudah berhasil bikin database - nyoba connect dari webkoe ke aws (... progress) 14:38 - Ternyata lebih murah mongodb cluster di digitalocean. AWS $0.09/jam sedangkan DO $0.02/jam. Belum bicara tentang spek, masih tentang harga termurah yang ditawarkan. #webkoe #AWS #mongodb #digitalocean
Sat, 29 Jan 2022 4:02 pm
Cek harga crypto cardano realtime di indodax bisa disini https://webkoe.net/crypto untuk custom jenis kripto yang lain bisa tambahkan parameter tambahan, contoh: https://webkoe.net/crypto/btcidr untuk cek harga BTC sumber: indodax api #cardano #crypto #crypto-watcher #webkoe #indodax
Mon, 17 Jan 2022 10:02 pm
- FTP sudah bisa diakses - Sempat bingung kenapa error saat nyoba build, syukurlah solusinya kemarin sudah dicatat dengan baik Errornya seperti ini : server.go:23:2: no required module provides package github.com/gorilla/mux: go.mod file not found in current directory or any parent directory; see 'go help modules' Jalankan perintah ini sebelum go run / go build : go env -w GO111MODULE=auto Sumber : https://go.dev/blog/go116-module-changes #golang #webkoe
Mon, 24 Aug 2020 1:59 pm
5 💎 = 900 20💎 = 2.900 50💎 = 6.800 70💎 = 9.200 100💎 = 13.600 tambahkan tag PRE supaya bagus hasilnya :) #webkoe
Wed, 17 Jun 2020 9:56 pm
Kemungkinan domain akan dipindahkan ke cloudflare saja, lebih banyak fiturnya. ----- Domain tetap di rumahweb saja, ada kedekatan emosional saya dan rumahweb, niat pindah domain ke cloudflare pun akhirnya saya urungkan. ❤️ rumahweb.com #webkoe #rumahweb #cloudflare
Mon, 3 Feb 2020 9:37 am
Seseorang atau sesuatu mempost tanpa tulisan ke webkoe. Enam tulisan kosong sekaligus dengan waktu yang bersamaan. #webkoe
Fri, 24 Jan 2020 12:01 pm
Fri, 24 Jan 2020 11:48 am
Fri, 24 Jan 2020 11:38 am
Adding screenshoot_date_created - edit 1 11:40 Screenshoot_date_created ADDED #webkoe #webkoe-on-develop
Fri, 24 Jan 2020 8:09 am
Wed, 22 Jan 2020 4:25 pm
Dan tanpa saya sadari, timezone server masih belum sesuai... besok lah, sudah malam ini seharusnya 23/01/2020 00:25 AM --- 23/01/2020 00.46 AM --- Tidak perlu menunggu besok, ternyata settingnya mudah saja #webkoe
Wed, 22 Jan 2020 4:23 pm
PRE markup automatically ADDED ke textarea, untuk memudahkan create tulisan. #webkoe
Wed, 22 Jan 2020 4:17 pm
Wed, 22 Jan 2020 2:31 pm
Snapshoot tulisan sebelum dilakukan edit --> ADDED snapshoot ini sebagai history tulisan sebelumnya, untuk menghindari kesalahan edit atau bahasa kerennya SOFT EDIT. #webkoe #alhamdulillah
Tue, 21 Jan 2020 11:48 am
Tahun 2020 ini, webkoe sudah berhasil upgrade ke Ubuntu 18 dan otomatis ke python 3 #webkoe #ubuntu #ubuntu18 #python3 #alhamdulillah
Fri, 17 Jan 2020 2:29 pm
Prepare for upgrade ... - Ubuntu ke Ubuntu 18 - Python ke Python 3 Kemungkinan akan dilakukan destroy droplet, lalu membuat droplet yang baru. #webkoe
Wed, 15 Jan 2020 10:28 pm
Ternyata repot setting drivernya kalo mau pake cloud servicenya mongodb, tadi nyoba gagal terus. Disamping storage freenya yang kecil. #mongodb #mongodb-atlas #webkoe
Wed, 15 Jan 2020 8:07 pm
Wed, 27 Nov 2019 4:32 pm
Webkoe certificate renewed, berlaku sampai 25 Februari 2020. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Wed, 27 Nov 2019 4:30 pm
Webkoe certificate renewed, berlaku sampai 25 November 2019. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Thu, 17 Oct 2019 9:34 pm
Hallo kolom kecil ku, apa kabar? terlalu banyak kejadian, pikir, dan semacamnya berkelebatan silih berganti di benak ini. Ingin ku tulis satu per satu, tapi sepertinya hanya akan memenuhi ruang saja. Maka dari itu, aku tuliskan ini. Hanya sekedar ingin saja, bukan bermaksud menuangkan kelebatan itu. Kolom kecilku, terima kasih telah menemaniku selama ini. Kamu hanya kolom, dan aku hanya suka menulisimu. Sesederhana itu saja,... #webkoe #justwritesomething
Tue, 27 Aug 2019 8:29 pm
Webkoe certificate renewed, berlaku sampai 25 November 2019. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Tue, 18 Jun 2019 6:04 pm
Webkoe certificate renewed, berlaku sampai 16 September 2019. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Tue, 11 Jun 2019 12:00 pm
Tue, 9 Apr 2019 9:50 am
Webkoe certificate renewed, berlaku sampai 08 Juli 2019. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Tue, 29 Jan 2019 10:37 am
Webkoe certificate renewed, berlaku sampai 29 April 2019. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Fri, 11 Jan 2019 12:27 am
Utak atik modem indihome kontrakan supaya aplikasi dilaptop bisa diakses dari internet =========================== Modem indihome bisa diakses di ip lokal 192.168.100.1, atau kalo mau lebih yakin bisa dilihat lewat "ipconfig", biasanya modem induk nangkring di nomor 1. Account defaultnya "Admin" dan password defaultnya "admin". - Aplikasi web laptop berjalan di port 9090 =========================== Case 1 : Mengakses aplikasi laptop di jaringan modem saja - Laptop (server aplikasi) terhubung ke wifi indihome (DHCP) - Handphone (client) terhubung ke wifi indihome (DHCP) Hasil DHCP: - Laptop ip 192.168.100.6 (port 9090 forwarding ke 9090 juga) - HP tidak saya cek result: HP dapat mengakses aplikasi web di laptop dengan lancar tentunya di port alamat http://192.168.100.6:9090 Case 2 : Mengakses aplikasi laptop lewat internet - Laptop (server aplikasi) terhubung ke wifi indihome (DHCP) - Handphone (client) terhubung ke GSM Cari tau berapa ip public modem indihome saat itu, tinggal ketik di pencarian google "what is my ip". Setelah ketemu ip modem indihome, berikutnya tinggal akses ip tersebut lewat HP yang terhubung ke GSM Result: HP dapat mengakses aplikasi web di laptop dengan lancar tentunya di port alamat http://36.75.19.66:9090 Case 3 : Mengakses aplikasi laptop (static IP) di jaringan modem Laptop terhubung ke modem dengan cara DHCP, artinya IP yang diberikan ke laptop random. Ini akan bermasalah saat port forwarding, karena port forwarding menggunakan ip static/tetap. Saya ingin laptop selalu berIP 192.168.100.2 (misalnya). Pemberian static IP bisa dilakukan dengan mendaftarkan Mac Address laptop ke modem, cara ini memungkinkan laptop selalu didaftarkan modem dengan IP yang static, misal 192.168.100.2 tadi. Result: Saya coba putuskan laptop dari wifi modem, lalu nyalakan lagi, setelah saya cek dengan ipconfig, IP laptop didaftarkan dengan ip yang saya inginkan, yakni ip 192.168.100.2 Case 4 : Mengakses aplikasi laptop di jaringan internet IP public yang dimiliki modem indihome salalu berubah ketika kita nyala/matikan. Saat kita berada di jaringan modem indihome, mudah bagi kita untuk mengetahui ip public yang sedang kita gunakan. Bagaimana ketika kita ingin mengaksesnya dari luar jaringan modem indihome? Ada salah satu solusi untuk hal ini, yakni dengan mendaftarkan nomor indihome kita ke ip-dynamic.com, situs ini memungkinkan kita untuk tahu berapa ip public yang sedang digunakan oleh modem indihome kita walaupun tidak berada didalam jaringan modem indihome. Result: Tanpa harus tahu berapa ip public modem indihome, saya bisa akses aplikasi web di laptop dengan alamat 162222202752.ip-dynamic.com:9090#project #indihome #webkoe #aplikasi #nice #port-forwarding-indihome #modem-indihome #ip-dynamic
Sat, 10 Nov 2018 11:08 am
Webkoe certificate renewed, berlaku sampai 08 Feb 2019. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Tue, 28 Aug 2018 10:06 pm
Message to admin of alphatree.co "why you dont use SSL for your website?" Hope you read this message and add a message here for the answer. :D #webkoe #alphatree #justwritesomething
Thu, 9 Aug 2018 6:16 pm
Webkoe certificate renewed, berlaku sampai 07 Nov 2018. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Thu, 31 May 2018 6:32 pm
Sertifikat webkoe expired, muncul warning saat diakses. #webkoe #letsencrypt
Tue, 6 Mar 2018 8:57 pm
Masih kepikiran godaan bikin droplet baru dengan space 25GB dan RAM 1GB, harga tetap $5/month. Waaww... mayan nambah 5GB. #digitalocean #improvement #webkoe
Thu, 1 Mar 2018 9:49 pm
Webkoe certificate renewed, berlaku sampai 20 May 2018. Terima kasih kepada letsencrypt. #letsencrypt #webkoe
Mon, 19 Feb 2018 9:06 am
Yay, webkoe now have 1GB memory RAM. Previously only have 512MBs. #webkoe #digitalocean
Sun, 21 Jan 2018 11:49 pm
Wed, 20 Dec 2017 7:32 pm
Webkoe sertificatea renewed, berlaku sampai 20 Maret 2018. Terima kasih kepada letsencrypt. #letsencrypt #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
Mon, 7 Aug 2017 8:51 am
Card "User-select: none" been disabled, setelah sebelumnya tidak bisa select text, sekarang sudah bisa. #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
Mon, 19 Jun 2017 12:47 am
Hadeh... siapa lagi ni yang ngirim-ngirim php? who is shourscout? #webkoe
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
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:04 am
Fri, 10 Feb 2017 8:21 am
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
Thu, 17 Nov 2016 5:20 am
Sun, 23 Oct 2016 8:00 am
Mon, 5 Sep 2016 12:29 pm
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#priority1. 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
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
Mon, 11 Jul 2016 6:11 pm
Roadmap kedepan : - Famtree - Push Message - Chat/Conference webbase#webkoe
Mon, 11 Jul 2016 6:10 pm
Mon, 11 Jul 2016 6:00 pm
Bersiap refaktorisasi #webkoe, alamat sementara di http://webkoe.id:9090
Wed, 29 Jun 2016 10:49 am
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
Sun, 26 Jun 2016 2:11 pm
Sun, 26 Jun 2016 2:07 pm
Sat, 25 Jun 2016 2:46 pm
#webkoe keluar dari keyword "catatan online", sama sekali... padahal biasanya selalu di halaman 1. #tanyakenapa
Sun, 19 Jun 2016 5:49 pm
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
Thu, 14 Apr 2016 2:29 pm
Kepikiran menggunakan #materializecss, halaman awal static biar bisa diindex, dan load selanjutnya bisa dengan ajax. #webkoe
Mon, 22 Feb 2016 9:09 am
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
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
Sun, 11 Oct 2015 11:21 am
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
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
Wed, 2 Sep 2015 7:43 am
Mon, 17 Aug 2015 10:50 am
Aaargghh ... standar penulisan tag 2 suku kata bagaimana? underscore,langsung, atau camelcase ?? #webkoe
Sat, 8 Aug 2015 10:11 pm
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
Wed, 5 Aug 2015 10:49 pm
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 30 januari 2024 Tap tag suggest langsung add ke textarea sudah bisa saat create tulisan, alhamdulilah works like a charm. #webkoe #todo #done #works_like_a_charm
Tue, 28 Jul 2015 11:37 pm
Tue, 28 Jul 2015 11:15 pm
Agak ngelag saat create ? Gara2 suggest tag kah ? #tanyakenapa #webkoe
Mon, 29 Jun 2015 1:06 am
Sun, 28 Jun 2015 11:20 pm
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 2:09 pm
Wed, 17 Jun 2015 12:02 am
Mon, 23 Mar 2015 5:14 pm
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, "dan ini yang memanggil", "", -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) }", -1) text = strings.Replace(text, "", "
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
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: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, "&#60;", "<", -1) text = strings.Replace(text, ">", ">", -1) text = strings.Replace(text, "#webkoe #go #script", "", -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) } }", -1) text = strings.Replace(text, "", "
Sun, 22 Mar 2015 12:14 am
Sat, 21 Mar 2015 8:10 pm
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 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, "&&#35;60;", "<", -1) text = strings.Replace(text, ">", ">", -1) text = strings.Replace(text, "#script #go #webkoe", "", -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) }", -1) text = strings.Replace(text, "", "
Sat, 21 Mar 2015 6:12 am
Fri, 20 Mar 2015 6:17 pm
Wed, 11 Mar 2015 9:11 pm
Mon, 9 Mar 2015 12:38 am
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") }
Sat, 7 Mar 2015 9:02 am
Sat, 21 Feb 2015 3:03 am
http://webkoe.net:8080 resmi dihandle #go ... ada wikinyaa ... alamAaAakk #veryawesome #webkoe #alhamdulillah
Fri, 13 Feb 2015 8:28 am
Mon, 9 Feb 2015 5:56 pm
Thu, 29 Jan 2015 12:28 am
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 ...
Thu, 15 Jan 2015 10:05 pm
Sat, 10 Jan 2015 7:15 pm
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
Sat, 13 Dec 2014 11:57 am
Aha,... we designed it to be free write for everyone guys ... so no login required ... Ahahaha ... #webkoe
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
Sat, 29 Nov 2014 6:27 pm
Sat, 29 Nov 2014 6:05 pm
appendonly.aof file 2,5GB ... konsumsi memory mencapai 30%. Kemungkinan redis di kill by sistem #webkoe
Tue, 25 Nov 2014 8:18 am
Sat, 22 Nov 2014 9:52 am
Perlu eliminer db dari server, jangan sampai db error mbikin server app down juga #webkoe
Thu, 13 Nov 2014 10:34 pm
http://motherfuckingwebsite.com betul ! cuman ya bahasanya mbok ya ga usah gitu #enlightenment #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
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 8:45 pm
WOW, webkoe berada di page 2 untuk keyword "catatan online" , baik di google.com atau google.co.id #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
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
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 10:39 pm
sub domain "quran", "news" n "api" ready ... tinggal aktifkan routenya #webkoe
Tue, 30 Sep 2014 5:36 pm
Sat, 27 Sep 2014 12:40 am
Sat, 27 Sep 2014 12:37 am
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 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
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
Tue, 9 Sep 2014 9:30 pm
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
Tue, 26 Aug 2014 8:27 pm
Tue, 12 Aug 2014 7:19 pm
Fri, 8 Aug 2014 10:39 pm
Tue, 5 Aug 2014 10:04 pm
Tue, 5 Aug 2014 9:21 pm
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
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: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
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
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
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
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 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
Sun, 15 Jun 2014 4:42 am
Sat, 14 Jun 2014 3:45 pm
Mon, 2 Jun 2014 10:48 am
webkoe's stream now using redis --- 22/01/2020 --- webkoe meninggalkan redis karena sangat membebani RAM #redis #webkoe #missioncompleted