July 2017

Sesudah bikin blog, langkah selanjutnya adalah mendaftarkan blog ini untuk di index di search engine. Maka saya langsung meluncur ke dmoz.org. Tapi ternyata dmoz.org udah ditutup, yg ada tinggal mirrornya aja dan saya gak dapetin cara untuk nambahin blog saya dalam salah satu direktorinya.

Akhirnya saya nyari direktori internet lain yg bisa nampung blog saya ini. Akhirnya saya dapet daftar dari “Free Web Directories” yg ternyata gak free2 amat. Saya penasaran memangnya apa sih yg bikin web direktori itu gak free, datanya sebesar apa yg dibutuhkan untuk data web direktori itu?

Saya berburu data. Dengan bersenjatakan google, akhirnya saya dapet mangsa juga: Dataverse. Dapet data dmoz.org per 12 Juni 2016. Ada 3 file yg bisa didownload, dan yang saya proses duluan yg tab delimited csv.

Sekilas lihat datanya, saya langsung bikin table di MySQL, 3 table, standar aja (id primary key autonumber) 1 table struktur folder, 1 table daftar domain, 1 table mapping domain dan folder. Table “directory” isinya ID, NamaFolder, Parent_ID. Table “domain” isinya ID, NamaDomain. Table “domain_map” isinya ID, Domain_ID, Folder_ID.

Tab delimited file cuma ada 2 field, domain dan array of path yg nantinya akan dimapping ke table “directory”. Program dibuat menggunakan PHP (bukan yg dibuka pake browser, tapi yg di jalanin lewat command prompt). Awalnya program berjalan lancar, tanpa hambatan, cepat. Tapi lama2 makin kelihatan lambat. Karena dlm scriptnya saya selalu memeriksa keberadaan data sebelum di insert, maka akhirnya saya buat index yang sesuai untuk semua table.

Program kelihatan lebih cepat jalannya, tapi itu gak bertahan lama, gejala melambat langsung terlihat. Akhirnya program saya ubah lagi, terutama dibagian akses database. Yg sebelumnya pake fungsi, akhirnya saya buat PDO prepared statement untuk tiap query, jadi pas looping data cukup memanggil method execute dengan parameter yang sesuai. Ada kemajuan kecepatan walaupun tidak signifikan.

Saya sadar sebenarnya index mempercepat perintah select, tapi memperlambat perintah insert. Dan semakin datanya banyak tambah beban juga. Akhirnya saya memutuskan untuk memakai cache data berupa array. Data table saya load ke dalam array, jadi pengecekan data existing dan lookup id saya lakukan pada array tidak mengakses database sama sekali, akses database hanya dilakukan pada saat insert data. Ini membuat database tidak memerlukan index (selain primary key).

Saat scriptnya dijalankan, error: out of memory. Saya lupa ngeset maksimum memorynya. Running kedua kali… Wussss… langsung terlihat perbedaannya. Memang startupnya lama karena memuat semua data ke array, tapi sesudah itu data dengan amat sangat lancar dibaca dan distore ke database.

Jadi seperti yang pernah saya tulis di entry blog sebelumnya: Selalu cari jalan tercepat, jangan puas hanya dengan hasil yang benar.

Update:

Diujung (row ke 2.3jt dari 2.4jt), memory yang dibutuhin udah ngelewatin batesan yg saya tentuin (1.6GB). Karena keterbatasan sisa RAM yg saya punya (2GB), akhirnya saya pake metode hybrid, yg di load ke array adalah data yang paling banyak di select, yaitu data directory, sisanya tetap akses ke database (dengan index). Hasilnya walaupun gak secepet yg full array, masih lebih cepat dari pada full db.

MySql Table Information

 

Console View and Source Text

Speed is everything, but I can’t bite off more than I can chew.

Waktu jalan2 di deepweb lewat TOR, saya banyak ketemu sama no-script website, isinya biasanya cuma link ke file2 teks yang memang benar2 tanpa script. Akhirnya dapet deh inspirasi untuk bikin website tanpa client-side-script, awalnya semangat, tapi begitu dipikir-pikir, program (web-based) apa yg bisa bekerja dengan baik tanpa JavaScript? Susah juga nih.

Sesudah mengingat dan menimbang, akhirnya saya memutuskan untuk bikin program Password Keeper (PaKe) tanpa client-side-script. Selain bisa dipercaya di dunia bawang (onion world) karena tanpa script, program ini juga cukup berguna untuk pemakai komputer se-hari2.

Untuk sementara ini, source-code nya blm bisa dipublikasi karena memang programnya belum selesai. Btw, karena “No screenshot”=Hoax, maka ini dia screenshotnya:

Style nya mau kaya console, tapi karena bikin simulasi console di web hampir mustahil tanpa JavaScript, akhirnya cuma tampilannya aja yg kaya console, tapi pengoperasian progamnya tetep pake klik link. Tapi “cursor” yg kedip2 di paling bawah itu tanpa script juga loh, murni pake CSS.

Pengoperasian programnya mirip make file manager, bisa bikin folder, bisa bikin item. Folder bisa punya sub-folder dan bisa punya item. Item punya nama dan isinya free-text yang disimpan dalam keadaan terenkripsi. Database disimpan dalam format SQLite, program dibuat dengan PHP.

Fasilitas yg belum ada:

  • Hapus Item
  • Hapus Folder
  • Copy Item/Folder ke “clipboard” (dlm progam saya sebut dengan ‘Pundi’)
  • Paste Item/Folder dalam “clipboard” ke active folder
  • Clear isi “clipboard”

Kalo udah selesai semua saya publish deh source-code nya.

Udah ah, segitu aja.

Yang katanya “hacking games”  wujudnya lebih menyerupai “waiting games”. Ini salah satunya:

GUI nya keren, asli bagus banget, cuma gak nahannya yah… Gameplaynya waiting games.

Kalo mau hacking games yg asli, bikin account di Enigma Group. Disitu baru diajarin (tapi kebanyakan harus cari tau sendiri) gimana caranya ngehack. Cari celah keamanan untuk bisa nerobos masuk. Bedanya GUI nya sama sekali gak menarik, dan bakalan susah banget kalo pake browser di handphone atau tablet.

Udah ah, udah pagi nih.