• Komputer,  Omong Kosong

    Demam Text

    Di OSNews.com ada artikel dengan judul The plain text project. Begitu baca langsung aja dalem hati teriak “Gue banget tuh!” (soalnya posisi lagi di kantor, jadi teriaknya dlm hati aja). Begitu saya buka, ternyata isinya tentang orang yang senang memakai plain text untuk menyimpan informasi/catatan pribadi. Bener2 gua banget dah, karena terus terang aja, file text saya nyebar dimana-mana. Kalo yg punya web mending, dia teratur, tapi karena saya gak bisa nentuin ini kelompok yg mana, akhirnya saya simpen lagi di file text terpisah. Pas giliran mau baca lagi lupa itu file ditaro dimana.

    Tapi berkat informasi dari website itu, saya bisa kenalan sama TiddlyWiki. TiddlyWiki dirancang untuk menyimpan informasi dalam bentuk artikel wiki, tapi disimpan dalam 1 file html. Waktu saya download gedenya 2MB. Yang bikin ill-feel cara nyimpen datanya. Pusing. Udah nyoba yg pake php (biar bisa diakses dari mana aja) tapi gagal terus. Ada juga yg pake local storage nya browser, tapi ini data bisa hilang kalo gak di-export, dan nyoba exportnya kok gak ada yg enak gitu. Terakhir saya pake yg versi NodeJS, karena termux di Redmi2 saya udah saya pasangin nodejs jadi bisa tuh bikin di komputer, filenya di-zip terus di upload ke server, nanti dari termux di download dan di-extract ke folder data TiddlyWiki di hape. Memang agak ribet, tapi lumayan lah.

    Kalo dipikir2, TiddlyWiki ini mirip sama program saya yg NoteJS. NoteJS benar2 offline (tidak mengirimkan data keluar), bisa diakses langsung htmlnya di browser (gak harus pake hosting server), dan kerennya NoteJS bisa export dan import data dalam 1 file yang terenkripsi. Minusnya cuma 1, karena gak nyimpen apa2, jadi tiap kali mau “lock data” selalu nanya passwordnya dengan konfirmasi (jadi 2x ngisi password), soalnya kalo password lock-nya disimpen (dimanapun mau cookie, variable, atau apapun) pasti bisa kebaca sama orang.

    Sebenernya saya mau yg kaya TiddlyWiki begini, tapi ada beberapa feature tambahan:
    o File program hanya dalam 1 file html (yg ini udah).
    o Data disimpan di lokal (lebih disukai: sqlite; blm ada yg bikin).
    o Bisa export dan import dari 1 file (yg ini kurang bagi saya).
    o Bisa export data ke web (hosting gratisan, yg ini blm).
    o Bisa import data dari web (hosting gratisan).

    Sebenernya bisa aja sih modif NoteJS biar bisa nyimpen di web. Kan udah punya domain sendiri juga. Tapi sebagai programmer malas, saya harus rela nyari2 yg udah ada dulu.

  • Komputer,  Programming

    Doodle

    Menurut Wikipedia, doodle itu :

    DoodleSimple drawing

    A doodle is a drawing made while a person’s attention is otherwise occupied. Doodles are simple drawings that can have concrete representational meaning or may just be composed of random and abstract lines, generally without ever lifting the drawing device from the paper, in which case it is usually called a “scribble”.

    Nah, ini kalo saya (sebagai programmer) bikin doodle:

    Di post sebelumnya saya udah pernah bilang kalo saya seneng banget yang gaya retro, pake text-mode. Dan sebelumnya saya udah pernah bikin simulasi terminal di http://sedjat1.dx.am, nah waktu di kantor saya diminta untuk ngoprek2 masalah canvas saya iseng2 nyari2 info tentang canvas di javascript.

    Pas kebetulan saya kepikiran ide untuk bikin game simulasi hacking dengan UI text-mode, saya cari2 deh ada gak sih yg bisa simulasiin ui text kaya jaman DOS dulu pake canvas javascript. Ternyata banyak banget. Tapi rata-rata bener2 simulasi terminal aja, malahan ada yg bener2 bisa jalanin program di terminal itu.

    Yang lebih mantap lagi saya nemu web http://www.pcjs.org yang isinya emulator PC yang dibuat pake javascript. Yg ini bener2 bisa ngejalanin program DOS jaman dulu, malah bisa jalanin Windows 95. Tapi emang kalo dipikir-pikir, dulu waktu pertama kali saya pake Windows 95 juga prosesornya cuma 486 + RAM 16MB. Kalo dibandingin sama resource yang dipake web browser jaman sekarang, jauh banget, jadi wajar aja kalo secara hardware memang bisa untuk simulasiin PC jadul.

    Akhirnya, saya nemuin titik terang, ternyata ada juga yang pengen make UI mode text di browser, tapi cuma sekadar untuk UI doang (persis banget yg saya mau). Projectnya ada di Github, namanya ASCII-UI (liat contohnya di https://ascii-ui.danikaze.com/basic/basic.html).

    Tapi kendalanya ada aja. Waktu mau make, liat contohnya, kok gak segampang yang saya bayangin. Dibikin pake TextScript yang harus “dicompile” dulu jadi javascript, ribet (mungkin nanti kalo kepala saya udah normal lagi saya coba-coba lagi).

    Akhirnya dengan terpaksa, saya bikin sendiri. Karena dulu saya pertama kali belajar pake Turbo Pascal, maka saya bikin class dengan method2 yang mirip2 bahasa Pascal kaya: GotoXY, Write, Writeln, ClrScr (tapi karena ini javascript, jadi case sensitive).

    Karena baru tahap awal, jadi belom banyak yg dibuat, yg pasti udah ada cursornya yg ngedip2, bisa geser pake arrow key, layar bisa scroll ke atas kalo udah sampe bawah “layar”. Udah bisa set warna teks dan backgroundnya. Terus 1 lagi fungsi yang lumayan bikin enak adalah window. Untuk dapetin keydown nya, udah ada bindingnya yg bisa di custom, jadi pergerakan cursor nggak diatur di classnya.

    Ada 1 hal yg belum di implementasi. Mode teks di DOS nyimpen tiap sel (yg 80×25) dalam 2 byte, 1 byte untuk kode ascii (antara 0 sampai 255) dan 1 byte untuk warna (4 bit utk warna teks dan 4 bit utk warna latar, tapi lupa urutannya yg mana), jadi program bisa ngeset warna dari sebuah “titik sel” tanpa merubah karakter yang sudah ditampilkan.

    Dalam canvas javascript, tiap titik (pixel) disimpan dalam 4 sel array (kalo pake getImageData) [R (red), G (green), B (blue), A (alpha)]. tiap sel teks saya simulasikan dimana defaultnya Height = Font Size, dan Width = 0.5 * Height. Jadi untuk 1 karakter dengan ukuran 20pt akan disimpan dalam array 10×20 pixel. Awalnya saya coba ganti warna dengan mengubah warna per pixel, tapi gak nemuin hasil yang pas, karena saya pakai asumsi bahwa pixel pertama adalah warna latar dan selain warna latar dianggap warna karakter. Akhirnya saya belum menerapkan ganti warna. Rencananya nanti saya implementasikan dengan menyimpan isi canvas dalam array karakter dan warna.

    Masalah ketemu lagi waktu saya mau menampilkan ascii art. Bikin simulasi mode teks tanpa menampilkan ascii-art bagaikan sayur tanpa garam kata peribahasa — kurang pas. Nah waktu ascii-art nya pake karakter “pattern” (kalo gak salah dulu karakter yg dipake itu #176, #177, #178, #219) ada anomali waktu “layar” scrolling atau waktu menghapus karakter di layar (pake backspace).

    Begitu diperhatiin, ternyata untuk karakter2 itu digambar melewati ukuran karakter yang saya tetapkan, dan kalau saya tuning geser 1 atau 2 pixel untuk ukuran karakternya akan mempengaruhi karakter yang lain, jadi aneh. Sesudah ngubek2 berbagai font, akhirnya saya putusin untuk nge-crop karakter sesuai ukuran yg sudah ditetapkan. Saya bikin lagi canvas dengan ukuran 1 karakter, saya gambar karakter di canvas itu, terus baru di-copy ke canvas aslinya.

    Yaaah… itulah cerita doodling nya seorang programmer. Uhuy.

  • Komputer,  Software

    Pengembara Dunia Maya

    He he he… Siapa lagi kalo bukan saya.

    Saya selalu nyari2 program yang serba ringan. Office yg ringan, text editor ringan, IDE ringan, antivirus ringan, dan browser ringan.Ringan bukan cuma karena jalannya cepat, tapi juga memori (RAM) yang minim.

    Susahnya, yang namanya antivirus sama browser gak ada yg bener2 ringan. Banyak artikel yang bilang antivirus anu cuma ngabisin ram 9mb, mungkin ngeliatnya cuma di Windows Task Manager bagian “APPS”, yg bikin artikel gak ngeliat di bagian “Background Process”.

    Contohnya browser Maxthon yang sehari-hari saya pake, di bagian Apps cuma tertera 34.0MB. Fantastis, browser yang lagi buka 13 tab dalam dua window (normal dan incognito) cuma butuh 34MB.

    Tapi begitu di scroll ke bawah, di bagian “Background process”, ada banyak proses dengan label Maxthon. Dan kalo dihitung total ram yg dipake (asli saya itung pake kalkulator) 410.3MB untuk background process + 33.7 yg di Apps = 444MB.

    Dan seperti yang tertera di gambar atas, saya lagi nyoba browser K-Meleon yang orang-orang bilang cepat dan ringan. Di screenshot terlihat pemakaian ram hampir 200MB, tapi itu cuma ngebuka 3 tab. Begitu saya tambah tab yg terbuka dengan membuka Google Drive, 1 halaman sederhana di localhost sama 1 tab Github (semua tab sudah dibuka di Maxthon kecuali wordpress temang.ga) konsumsi ram melonjak jadi 480 – 499 MB.

    Selain itu, K-Meleon tidak bisa membuka Whatsapp Web, dan render custom font di aplikasi web saya juga agak parah.

    Lihat aja screenshot yang hurufnya smooth itu Maxthon, yg kasar itu K-Meleon.

    Opera yang seinget saya pake engine goolge chrome juga (sama kaya Maxthon) punya kelakuan yang mirip sama Maxthon. Di Apps cuma tertera 51MB tapi background processnya banyak banget.

    Kaya’nya pengembaraan saya kali ini di dunia maya gak terlalu hepi-ending. Tapi tetep aja saya dapet broser unik pake engine Mozilla Firefox yang bisa nge-render dengan baik halaman web kelas berat semacem Google Drive, dll. Dan yg lebih menggembirakan lagi (minimal bagi saya) developmentnya masih jalan terus. Versi yg saya pake belum berumur 1 hari release, bener2 fresh from the oven, masih anget.

    Udah ah.