Fikiran .. Pedang Bermata Dua

Untuk Anda yang mengagung-agungkan fikiran, waspadalah karena fikiran sepertinya membantu Anda dalam keseharian tetapi bisa juga seperti pedang bermata dua yang melukai si pemilik. Hal ini terjadi karena yang seharusnya fikiran berfungsi sebagai alat tetapi beralih fungsi menjadi si majikan. Bagi tradisi kuno Hindu dan Budha fikiran sangat berbahaya karena bisa membuat seseorang hanyut dalam fikirannya. Fikiran yang tak terkendali, diibaratkan sebagai “monyet” yang bergerak loncat ke sana ke mari.

Kisah Imam Malik dan Imam Syafii

Tradisi Islam dahulu kala sering terjadi silang pendapat, karena fikiran. Imam Malik, sang guru, pernah berbeda pendapat dengan Imam Syafii, imam yang paling banyak pengikutnya di Indonesia. Imam Syafii tidak sependapat dengan Imam Malik yang mengatakan cukup dengan tawakal, rejeki akan tiba. Imam syafii berpendapat tidak mungkin tanpa usaha, rejeki akan tiba, seperti burung yang tidak keluar sarang mencari makan tidak akan memperoleh makanan. Begitulah sifat fikiran yang masih mengenal dualitas (atas bawah kiri kanan, suka duka, beanar salah, dan lain-lain). Perbedaan pendapat sejatinya tidak melepas/memutus ikatan pertemanan, apalagi murid dan guru, apalagi hanya dalam hal tetek bengek yang tidak penting, misalnya pileg, pilgub, pilpres, dan pil-pil lainnya.

Pulang dari berguru, Imam Syafii melihat orang-orang yang ramai memanen anggur. Terbesit ide untuk membantu memanen, dan benar dugaannya, selesai memanen Imam Syafii mendapat upah anggur yang banyak. Setelah memperoleh upah, beliau mendatangi lagi gurunya guna membuktikan kebenaran pendapatnya. Sang guru membenarkan pendapatnya, tetapi dengan santai ia mengambil anggur pemberian Imam Syafii, sambil mengatakan beberapa waktu yang lalu, dia kepingin sekali makan buah anggur, dan dengan doa dan tawakal, anggur yang banyak tiba di hadapannya. Mereka akhirnya tertawa.

Mindfulness/Kesadaran

Kesadaran yang berarti menyadari apa yang terjadi dalam fikiran dan perasaan merupakan inti dari meditasi, yang dalam istilah bahasa pali-nya, “sati”. Silahkan coba, tapi tidak berhenti sampai sati saja, melainkan mempelajari. Jika sudah terlatih sadar, seseorang akan memahami mengapa sebuah fikiran muncul, dari mana asalnya dan merembet ke mana. Akibatnya akan muncul kebijaksanaan dengan ciri khas, ego yang tidak mendominasi. Ego yang berada di fikiran akan membuat fikiran menjadi raja sementara diri kita budaknya. Akibatnya banyak orang-orang terpelajar yang di mata orang awam “error”. Konon, pembunuh salah satu khalifaturrasyiddin, Ali bin Abi Thalib, adalah Ibnu Muljam yang cerdas, berilmu, hafal Alquran dan Alhadits, yang sepertinya tidak mungkin terjadi pembunuhan itu jika ego dalam fikiran membuat seseorang menjadi budaknya.

Bahayanya Merasa Benar

Ketika lulus S1 dan menjadi dosen, saya menguji tugas akhir siswa tentang jaringan. Siswa mengatakan bahwa pewarnaan dalam kabel jaringan mempengaruhi nyambung atau putusnya koneksi, selain urutan kabelnya. Sementara saya ngotot, tidak, asalkan ujung ke ujungnya sesuai pin, urutan warna tidak pengaruh. Selang beberapa semester, saya bekerja sebagai staf IT pada bank nasional dan mengalami kondisi yang membuat saya merasa bersalah. Ceritanya sebuah vendor kabel disewa untuk memasang kabel jaringan di cabang dekat asam reges, Jakarta. Warnanya acak, walaupun ujung ke ujung (pin) tepat “lurus/straight“. Sempat jaringan berfungsi normal ketika menggunakan IBM pentium III, tetapi kebetulan ada pergantian PC ke HP Pentium IV, satu pun tidak ada PC baru yang berjalan jaringannya. Dimintalah saya datang ke sana, ternyata saya cek urutan kabelnya tidak standar (bukan: putih-orange, orang, putih-hijau, biru, putih-biru, hijau, putih-coklat, coklat). Akhirnya saya berfikir jangan-jangan siswa saya benar, urutan warna harus standar, akhirnya saya coba satu titik, ternyata benar. Dipanggilah vendor yang memasang kabel kemarin, mirip sidang tugas akhir saya dulu saling ngotot (walaupun untungnya, siswa tersebut saya luluskan). Vendor tersebut membuktikan dengan tester jaringan yang menunjukan “OK”. Akhirnya, saya putuskan menunjukan ke mereka pada satu titik koneksi dengan memasang ulang dengan warna standar, dan terbukti “OK” dengan PC yang baru. Karena takut kasus saya follow-up ke atas, mereka setuju memasang ulang seluruh kabel jaringan. Mudah-mudahan siswa yang saya uji hampir 17 tahun yang lalu itu membaca postingan ini, dan menerima permintaan maaf saya, minal aidin walfaizin, mohon maaf lahir dan batin.

Merger Data Spasial – ArcGIS

Selain Clip, Merge merupakan fasilitas Geoprocessing pada ArcGIS yang tak kalah penting. Fungsinya adalah menggabungkan dua shape file menjadi satu. Misalnya kita memiliki dua data land-use, pemukiman padat dan tidak padat seperti gambar berikut. Kedua tipe land-use tersebut akan digabungkan menjadi satu.

Langkah-langkah merge pada ArcGIS adalah: i) membuka jendela merge, ii) memasukan shapefile yang akan digabung, dan iii) memberi nama shapefile baru hasil merging. Jendela merge dapat diakses lewat menu Geoprocessing.

Setelah tombol OK ditekan ArcGIS akan memproses penggabungan dua shapefile itu menjadi satu file baru. File baru tersebut merupakan penggabungan dari dua file sebelumnya. Tampak simbol berititik hitam merupakan hasil penggabungannya. Semoga bermanfaat.

INFO: Peta contoh di atas adalah kecamatan Bantargebang Bekasi.

Realtime Protection Windows Defender Tidak Bisa Dihidupkan

Beberapa hari yang lalu ada simbol silang pada antivirus bawaan Windows 10: Windows Defender. Klik simbol panah atas di bagian bawah kanan Windows.

Jika dijalankan Windows Defender, dan masuk ke bagian Realtime Protection posisi Windows Defender tidak dapat dihidupkan (ON).

Cara menghidupkannya agak sedikit rumit, info dari beberapa situs internet hasil googling. Informasi dari situs ini menyarankan masuk ke registry editor dengan mengetik “regedit” di searching Windows 10. Arahkan ke posisi: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft dan pilih Windows Defender.

Pada gambar di atas value “DisableAntiSpayware” bernilai satu (1). DIsarankan untuk menggantinya menjadi nol (0) atau hapus saja (delete) registri tersebut. Oke, kalau ragu, ganti saja menjadi nol dengan mendobel klik registry tersebut, ganti satu menjadi nol.

Tekan OK. Kembali ke Windows Defender, Anda akan diminta me-restart. Tekan saja tombol “restart” yang artinya menghidupkan kembali Windows Defender. Tunggu beberapa saat dan pastikan Windows Defender aktif kembali. Semoga bermanfaat.

Training, Validating, Testing dan Corpus

Empat kata di atas, terutama tiga pertama merupakan istilah yang banyak disebut dalam literatur machine learning. Sementara yang keempat, Corpus, muncul belakangan ketika banyaknya pihak-pihak yang berkontribusi dengan membagikan file big data yang dimilikinya. Postingan kali ini sedikit menambah penjelasan mengenai penggunaan istilah-istilah di atas.

Training

Istilah ini merupakan pengkhususan dari arti sebenarnya: pelatihan/pembelajaran. Teringat ketika presentasi hasil penelitian di kampus yang dihadiri oleh beragam bidang ilmu. Salah satu peserta dari fakultas agama Islam memprotes manfaat dari training yang katanya tidak perlu karena menghambur-hamburkan dana. Peserta dari fakultas teknik, terutama jurusan informatika, hanya bisa tersenyum karena maklum istilah training di penelitian itu adalah proses melatih model agar diperoleh parameter yang tepat, bukan pelatihan berupa kursus, workshop, dan sejenisnya. Diperlukan data yang disertai dengan label dalam proses training ini. Banyak metode yang digunakan, biasanya backpropagation dengan turunannya gradient descent atau levenberg marquardt (LM). Data training ini dikenal dengan istilah training set.

Validating

Jika training membutuhkan data beserta label agar diperoleh parameter yang tepat, misalnya untuk jaringan syaraf tiruan (JST) berupa bobot dan bias, validating berisi data beserta label pula yang dimaksudkan untuk menguji hasil training apakah sudah akurat atau belum. Jika beruntung, hasil validasi akurat, biasanya di atas 75%. Jika belum harus di-training ulang. Data untuk validasi biasanya sebagian data training. Istilah data untuk validasi adalah development set, held-out set, atau validation set. Terkadang sebagian data training dipakai untuk validasi, kemudian secara bergantian yang tadinya buat training menjadi testing, yang dikenal dengan istilah cross validation.

Testing

Data testing atau dikenal dengan istilah testing set wajib dijalankan setelah validasi. Fungsinya membuktikan apakah model sudah sesuai dalam artian akurat di validasi dan akurat juga di kenyataannya. Data yang digunakan untuk testing merupakan data real yang tidak digunakan untuk training. Tentu saja tidak “fair” menggunakan data training untuk testing, ibarat ujian, soal yang diujikan diberitahu terlebih dahulu.

Corpus

Corpus merupakan kumpulan data spesifik. Jamaknya dikenal dengan nama Corpora. Data ini biasanya digunakan untuk testing yang berasal dari lembaga yang bersedia men-share untuk pembelajaran bersama, misalnya data aeronatika, video, suara, gambar, dan lain-lain. Jika Anda menginstal Python, disertakan juga Corpora secara opsional, karena memang ukurannya yang besar. Tentu saja Corpus ini dipergunakan biasanya untuk pengujian metode/algoritma apakah akurat atau tidak. Sementara untuk data spesifik tertentu, misal pengambilan keputusan kredit bank, pemberian beasiswa, penyetujuan proposal, perlu mencari data real yang ada jika tidak ada yang men-share karena memang data tersebut khusus/spesifik dimana tiap institusi/lokasi/objek penelitian berbeda-beda karakteristiknya. Yuk, yang punya data, bagi-bagi, untuk membantu riset teknologi informasi, terutama yang punya data bidang kesehatan.

Indeks Web of Science

Web of Science (WoS) merupakan pengindeks terkenal yang dahulu dikenal dengan nama Thomson Reuter. Pengindeks tua ini lebih dahulu dikenal sebelum Scopus. Berbeda dengan Scopus yang gencar pemasarannya, WoS sedikit “nyantai”. Akibatnya, peneliti-peneliti muda lebih mengenal Scopus dibanding WoS. Padahal, WoS memiliki kriteria yang ketat terhadap jurnal atau seminar yang diindeks.

Publons

Baik WoS maupun Scopus semuanya berbayar. Namun untuk melihat Author, Scopus menggratiskannya. Repotnya, WoS baik mencari artikel mapun Author tidak gratis. Untungnya belakangan WoS menggratiskan juga seperti Scopus, dengan nama situs: www.publons.com. Sebelum ada Publons, peneliti gratis mendaftarkan diri di www.researcherid.com, suatu situs yang mirip Orcid. Namun ternyata ketika saya sudah mendaftar ID di situs tersebut langsung diarahkan ke Publons.

Searching

Berbeda dengan Scopus yang harus berlangganan dalam pencarian non-Author, Publons dapat mencari baik author, jurnal, institusi dan region/country.

Silahkan pilih pencarian yang diinginkan. Berikut contoh hasil searching di sebuah institusi. Untuk saat ini Scopus masih menjadi patokan indeks Sinta, sementara WoS ikut berpartisipasi kemudian. Mengingat ketatnya indeks WoS terhadap jurnal-jurnal di dunia, tidak tertutup kemungkinan WoS menjadi andalan utama, jadi segera daftarkan ID ke WoS. Sekian, semoga bermanfaat.

Membuat BaseMap di ArcGIS

Basemap merupakan peta dasar yang menyertai shapefile. Dengan basemap tampilan peta menjadi lebih akurat mengingat basemap biasanya diambil dari citra satelit atau peta jalan (street map). Misalkan kita memiliki region tertentu, kecamatan Tanah Sareal, Bogor.

Sangat sulit melihat peta seperti itu tanpa indikator lokasi, walaupun dibuat dari proses clip kota Bogor berdasarkan kecamatan tertentu saja, dalam hal ini tanah sareal. Untuk membuat basemap tekan tombol Add Data dilanjutkan mengklik “basemap”.

Banyak pilihan yang ditawarkan untuk Basemap, antara lain imagery dan streetmap. Jika ingin mendata land-use yang ada sebaiknya pilih yang berakhiran “with labels” atau gunakan “openstreet map”.

Tampak basemap “openstreetmap” yang menyertai peta kecamatan tersebut. Jangan lupa karena bersifat online, komputer harus terkoneksi ke internet. Openstreetmap merupakan peta berbasis “crowd sourcing” dimana partisipasi pengguna bisa menambahkan informasi-informasi penting. Lihat hasil zooming di bawah ini. Semoga bermanfaat bagi yang ingin memetakan wilayah.

Cukup Hanya Tuhanmu Sajalah Yang Tahu Tujuanmu

Ada sebuah artikel dari link berikut tentang bagaimana mencapai tujuan (goal) kita. Disebutkan bahwa yang ingin kita capai tidak seharusnya di-share. Agak unik, memang pengetahuan dalam mencapai tujuan selalu menjadi tema yang menarik. Banyaknya pengguna media sosial saat ini menjadi alasan agar seseorang berhati-hati dalam mengekspresikan tujuannya secara online. Sebelum ke dunia millenial ada baiknya sedikit mereview sejarah seperti yang ditulis dalam link tersebut.

Kisah Penemuan Pesawat

Di abad 19 banyak ilmuwan dan teknisi berusaha membuat kendaraan yang bisa terbang seperti layaknya burung. Di AS ada salah satu ilmuwan, fisikawan, astronom, bernama Langley, tertarik membuat proyek tersebut dengan dana yang besar, bahkan sebuah departemen mendanai hingga $50.000. Saat itu tidak ada medsos, yang ada hanyalah blowup oleh para wartawan yang gemar men-share berita-berita menarik. Di pihak lain, ada dua bersaudara, dikenal dengan panggilan Wright Brother, yang memiliki bengkel motor, mobil, bahkan sekedar sepeda dengan antengnya merancang pesawat, tanpa gembar-gembor. Publik dikejutkan dengan keberhasilannya menerbangkan hasil karyanya beberapa mil. Sementara itu Langley dengan dana yang besar gagal, bahkan uji cobanya hancur.

Riset Ilmiah

Mungkin pembaca agak ragu dengan statemen agar tidak terlalu men-share keinginan. Memang masih berupa hipotesa jika belum diteliti. Tetapi riset di jurnal psikologi berikut memperkuat statemen tersebut. Riset dilakukan terhadap beberapa responden dan hasilnya adalah grup pertama yang targetnya banyak diketahui orang akan cenderung sedikit berusaha dibanding grup kedua yang targetnya tidak diketahui orang, sedikit diabaikan, dan lain-lain sebagai kebalikan dari grup pertama. Bila seseorang telah mengidentifikasikan dirinya dengan tujuan yang telah tercapai dan men-share nya, biasanya cenderung gagal dalam mencapai tujuan tersebut.

Fear Setting dahulu Share Seperlunya

Selain men-share tujuan ada baiknya melakukan aktivitas lain yang membantu mencapai tujuan dan cita-cita, yaitu fear-setting, mengeset rasa takut. Maksudnya adalah mendeteksi hal-hal rasa takut yang menghalangi kita mencapai tujuan. Misalnya ketika ingin studi lanjut, silahkan rinci dan tulis ketakutan-ketakutan yang ada, misalnya jauh dari keluarga, butuh uang yang banyak, kehilangan jabatan karena tugas belajar, kurang bisa bahasa Inggris, dan lain-lain. Silahkan atasi satu persatu rasa takut yang menghalangi Anda untuk studi lanjut, dengan cara bebas sesuai kreatifitas Anda dan share niat Anda secukupnya saja.

Analisa dan Disain Sistem Berorientasi Objek

Pemrograman Berorientasi Objek (PBO) dalam proses perancangan sistemnya tidak berbeda dengan pemrograman terstruktur dan dapat menggunakan metode yang sama. Hanya saja karena ciri khas PBO yang tidak membedakan proses dan data maka ada sedikit sudut pandang yang berbeda dalam perancangannya. Tiga tokoh penggagas Unified Modeling Language (UML) yaitu Grady Booch, Ivar Jacobson, dan James Rumbaugh sepakat dalam perancangan sistem modern harus berbasis: Use Case Driven, fokus ke arsitektur sistem (Architecture-centric), dan iteratif & inkremental.

Use Case Driven

Use Case Driven artinya adalah Use Case sebagai pemodelan utama dalam perancangan sistem. Model Use Case menggambarkan hubungan antara pengguna dengan sistem dalam melakukan aktifitas tertentu seperti pemesanan barang, penyewaan, mencari informasi tertentu, dan lain-lain. Use Case Driven berbeda dengan pemodelan tradisional maupun Rapid Application Development (RAD) yang kompleks. Kompleksitas metode tradisional tersebut karena harus melibatkan baik analis maupun pengguna dimana sistem dipecah menjadi subsistem hingga tidak bisa dipecah lagi dalam analisanya. Diagram menjadi rumit karena saling terkait antara satu diagram dengan diagram lainnya yang jumlahnya banyak. Sementara itu Use Case hanya berfokus pada satu proses bisnis dalam satu waktu dan membuat proses menjadi lebih sederhana.

Fokus ke Arsitektur Sistem

Arsitektur bisa bermacam-macam artinya, tergantung dari sudut pandang tertentu. Dari sudut pandang PBO dengan standar UML-nya arsitektur merupakan aspek keseluruhan dari organisasi sistem. Aspek tersebut melandasi komponen-komponen arsitektur sistem yang terdiri dari fungsionalitas, struktur, dan proses (function, static, & behaviiour). Selain itu arsitektur juga mengatasi permasalahan performa, skalabilitas, reuse, dan batasan-batasan ekonomi dan teknis.

Secara garis besar arsitektur dapat dilihat dari sisi eksternal (pengguna) yaitu berupa fungsi-fungsi. Selain itu dilihat juga dari sisi internal berupa atribut, metode, dan kelas-kelas . Arsitektur juga melibatkan relasi antar objek yang melibatkan pesan-pesan untuk menjalankan fungsi tertentu.

Iteratif dan Inkremental

PBO menerapkan metode pengembangan sistem berupa iterasi dan inkremental. Metode ini mengembangkan tiga sudut pandang arsitektur (fungsi, statis, dan proses) secara berulang. Setelah testing, perancang kembali lagi ke awal untuk penyempurnaan. Dalam merancang, perancang mengembangkan sedikit demi sedikit, dari sistem sederhana menuju sistem yang lebih besar dan kompleks. Tiap iterasi pengembang selalu berhubungan dengan pengguna dalam merancang fungsi-fungsi yang diperlukan. Jadi struktur dan fungsi harus dikuasai oleh pengembang agar diperoleh sistem yang baik. Pengembang juga dapat menambahkan kebutuhan-kebutuhan fungsi yang tidak disadari oleh pengguna.

Efek Rasa Syukur

Bersyukur terkadang mudah diucapkan tetapi sulit diterapkan. Terkadang pula mulut kita mengucapkan syukur (ketika beribadah) tetapi hati belum tentu menerima kondisi yang ada. Mungkin pembaca pernah membaca buku “the secret” atau “quantum ikhlas” yang membahas kekuatan dari hati dan fikiran dalam lancar dan suksesnya kehidupan. Di sana disebutkan juga manfaat hati yang “lega/nyaman” ketika melaksanakan/mengerjakan aktivitas sehari-hari. Hasil akan terasa jika dilakukan dengan hati yang ikhlas.

Pertahanan Terbaik

Tidak semua hal berjalan sesuai dengan yang direncanakan. Terkadang plan A tidak berjalan dan memaksa kita untuk mengeksekusi plan B. Tanpa hati yang ikhlas dan legowo, ketika plan A tidak berjalan akan kesulitan menjalankan plan B, diakibatkan terlalu lama berkeluh-kesah dan kecewa dengan plan A yang gagal.

Sedikit berbagi pengalaman ketika kuliah dulu mengenai manfaat rasa syukur. Syarat untuk menjadi kandidat doktor di tempat kuliah dulu adalah IPK di atas 3,50. Nilai segitu termasuk cukup tinggi, walaupun relatif, terkadang mudah terkadang susah. Sangat jarang mahasiswa yang lancar dalam satu tahun memperoleh skor IPK sebanyak itu. Rata-rata ada yang mengulang karena satu saja mata kuliah jatuh akan menjatuhkan total skor IPK. Bayangkan jika diperoleh IPK semester awal 2,4. Satu kata yang terucap ke pembimbing waktu itu adalah “apakah saya masih bisa lanjut?”, dan jawabannya “bisa”. Satu jawaban itu dengan satu rasa syukur sudah cukup menjadikan pertahanan terbaik saya. Ditambah rincian-rincian syukur lain yang saya kumpulkan untuk menumpuk kekuatan. Lalu apa yg terjadi? Dalam 2 tahun akhirnya IPK tepat berada di posisi 3,50 pas. Angka yang pas menunjukan berapapun nilai yg dosen berikan sangat berharga, kurang lebihnya.

Bekerja dengan Nyaman

Ketika plan A gagal, tidak serta merta plan B dieksekusi. Ternyata butuh syarat penting lain sebelum menjalankannya walaupun sudah ada schedule-nya, yaitu “hati yang nyaman”. Kecuali memang urgen dan mendesak, harus dilaksanakan realtime. Jika ada jeda waktu cukup, ada baiknya membuat hati nyaman terlebih dahulu. Banyak caranya, bisa meditasi, berdoa, maupun cara yang gampang, yaitu bersyukur. Syukuri saja apa yang ada saat ini walaupun sederhana, misalnya kita masih diberi nafas (ups .. sepertinya itu bukan sederhana, melainkan sapu jagad).

Ada satu mekanisme yang dinamakan “daya tarik” dengan prinsip sesuatu akan cenderung berada sesuai dengan yang mirip dengan sesuatu itu. Jika kita marah, biasanya kondisi akan mudah membuat kita marah. Nah, jika kita nyaman dulu, maka kondisi akan cenderung mengikuti kenyamanan. Ada energi-energi lain yang membantu, orang-orang/tim yang kompak, pihak lawan yang tidak terlalu menyerang, dan lain-lain. Sudahkah anda “nyaman” hari ini? Ngopi dulu lah.

Mencari Lokasi Penggunaan Lahan Suatu Wilayah

Berbeda dengan tutupan lahan yang dapat diketahui dengan cepat lewat klasifikasi citra satelit, menentukan penggunaan lahan lebih rumit karena harus melihat langsung fungsi dari suatu bangunan apakah sekolah, rumah sakit, pabrik, pemukiman, dan lain-lain. Informasi dapat diperoleh lewat instansi-instansi terkait. Namun biasanya masih berupa data non-spasial, kalaupun ada terkadang tidak terawat dengan baik, misalnya lokasi tidak tepat, tidak ada lokasi, dan lain-lain.

LOKASI SEKOLAH

Data pokok kemdikbud memiliki informasi data spasial, misalnya untuk sekolah berikut ini. Di salah satu tab terdapat “Map” yang menunjukan lokasi sekolah yang bersangkutan. Sayangnya hanya berisi sebuah profil, untuk mencari sekolah-sekolah di daerah tertentu (kecamatan/kabupaten/kota) harus lewat sumber lain.

Situs penjaminan mutu pendidikan (PMP) juga memiliki data yang lengkap tentang sekolah-sekolah yang berada di daerah tertentu, misalnya data sekolah menengah pertama (SMP) di daerah kota Bogor berikut ini. Jika diklik salah satu sekolah yang ingin diketahui lebih lanjut akan muncul informasi yang lumayan lengkap seperti jumlah dan sebaran siswa, jumlah guru dan profil-nya, dan lain-lain. Sayangnya tidak ada informasi spasial (lokasi sekolah berupa peta).

Situs resmi lain yang menyediakan informasi spasial adalah berikut ini. Tampak lokasi sekolah di propinsi Bali. Cukup lengkap tapi basemap-nya kurang informatif. Alangkah baiknya jika menggunakan jenis streetmap ala waze atau google map.

Ada satu lagi informasi data spasial lewat arcgis online yang di-share oleh penggunanya. Salah satu keuntungannya adalah format shapefile yang sudah standar dapat diunduh dan dibuka online di komputer sendiri. Tentu saja jika di-share oleh pembuatnya, tetapi bisa juga dengan dibuka lewat mapviewer online, berikut link contohnya.

RUMAH SAKIT

Tipe penggunaan lahan lain yang tidak kalah penting adalah lokasi rumah sakit atau fasilitas kesehatan (klinik, apotik, dan sejenisnya). Satu yang cukup baik adalah situs ini, jika diklik salah satu item akan menampilkan informasi lengkap, misalnya RS Hasan Sadikin. Situs ini memanfaatkan info dari google map yang bersifat crowd sourcing.

Situs resmi dari departemen kesehatan merupakan rujukan yang pasti dari informasi mengenai rumah-rumah sakit di suatu wilayah. Tetapi tetap saja harus mencari sendiri lokasi di peta berdasarkan alamat rumah sakit tersebut.

Untuk jenis-jenis penggunaan lahan lainnya silahkan cari berdasarkan ke mana tipe lahan tersebut menginduk. Ada satu situs yang lumayan bagus dalam mendata beragam tipe lahan yaitu www.streetdirectory.com (lihat pos yang lalu) misalnya untuk wilayah kota bogor ini. Demikian, semoga bermanfaat bagi yang sedang mencari data spasial penggunaan lahan di daerah tertentu.

Mengunduh Shapefile di ArcGis.com

ArcGIS tidak hanya desktop melainkan juga online. Buka browser dan ketik www.arcgis.com. Tentu saja harus memiliki akun untuk login. Tetapi jika hanya ingin mengunduh tidak perlu login. Postingan ini mencoba mengunduh batas kecamatan wilayah kota Bogor.

Jika sudah masuk ke situs arcgis cari simbol kaca pembesar yang artinya searching. Ketik kata kuncinya, misalnya “kecamatan kota bogor”. Berikut tampilan ketika data tersebut ditemukan.

Jika Anda beruntung peta yang Anda cari tampil di halaman hasil pencarian. Terkadang terdapat lebih dari satu hasil pencarian. Kebetulan data spasial kecamatan di kota bogor ada yang sudah mengeshare, Alhamdulillah. Pilih peta hasil pencarian tersebut.

Klik “Download” untuk mengunduh peta kecamatan di kota Bogor dalam format shapefile yang di-rar. Buka dengan ArcGIS hasil ekstraknya. Tampak seperti gambar di bawah ini hasilnya.

Agak sulit melihat secara real peta tersebut. Jika Anda memiliki Google Earth Pro, silahkan impor peta tersebut agar dapat melihat secara detil akurasinya terhadap citra satelit berikut ini.

Terima kasih untuk rekan-rekan kartografer yang sudah sukarela membagikan peta-nya di arcgis.com. Oiya, terkadang shapefile tidak bisa diunduh melainkan dibuka langsung lewat ArcGIS. Sekian semoga bermanfaat.

Relasi One-To-Many Pada Objek Database

Untuk mengimplementasikan relasi one-to-many pada pemrograman terstruktur dengan sistem basis data relasional diperlukan sebuah tabel detil karena dalam satu field tidak boleh berisi lebih dari satu item. Namun pada pemrograman berorientasi objek dapat dihandel oleh sebuah kelas dengan format atribut array. Misalnya kelas kursus yang berisi lebih dari satu peserta kursus berikut ini.

Salah satu atribut kursus adalah peserta yang merupakan sebuah objek dari kelas siswa. Simbol kurung “[]” menandakan bahwa kelas Kursus bisa memiliki lebih dari satu objek peserta kursus, yang dalam ERD sistem relasional dikenal dengan relasi one-to-many. Bagaimana dalam implementasinya di Netbeans?

Memakai Atribut dari Kelas Lain

Pada kelas kursus terdapat atribut “peserta” yang berasal dari kelas Siswa. Karena menggunakan atribut maka terdapat relasi memiliki dari kelas Kursus terhadap kelas Siswa, diistilahkan dengan relasi “has-a”. Bandingkan dengan relasi antara kelas Main dengan Kursus yang berupa penggunaan saja (mengatur/maintain kursus), diistilahkan dengan relasi “is-a”. Berikut potongan kode dalam bahasa Java untuk kelas yang menggunakan objek dari kelas Siswa (peserta).

public class Kelas {
private String kode,jadwal;
private Siswa[] peserta;
private int i;
//konstruktor
public Kelas(){
this.peserta=new Siswa[5];
}
public Kelas(String kode, String jadwal, Siswa[] peserta){
this.kode=kode;
this.jadwal=jadwal;
this.peserta=peserta;
}

Perhatikan variabel peserta diambil dari kelas Siswa (private Siswa[] peserta). Selanjutnya ditambah dengan setter & getter serta operasi-operasi lainnya. Pada konstruktor kelas misalnya dibatasi lima peserta kurus saja (this.peserta=new Siswa[5];). Operasi penting untuk menangkap data objek Kelas adalah sebagai berikut.

public void add(Siswa s){
if(i<peserta.length){
peserta[i]=s;
System.out.println(“Siswa add at index “+i);
i++;
}
System.out.println(“Peserta: “+peserta);
}
public void add3(String jadwal){
this.jadwal=jadwal;
}
public void add2(String kode){
this.kode=kode;
}

Peserta kursus memanfaatkan variabel I untuk menambah beberapa kali (dalam hal ini max 5). Operasi lainnya juga disertakan untuk menambahkan kode kelas dan jadwalnya. Jika dilihat di navigation pada Netbeans tampak seperti berikut ini.

Dua operasi CRUD (insertData dan readData) misalnya dimasukan. Sebaiknya seluruh CRUD dimasukan juga (update dan delete). Variabel I: int digunakan untuk memasukan peserta kursus yang lebih dari satu.

Kelas Siswa seperti biasa dibuat dengan atribut dan operasi tertentu. Buat CRUD yang lengkap seperti contoh berikut. Untuk akses ke basis data objek dengan operasi CRUD silahkan lihat pos yang lalu.

Kelas Main

Kelas ini hanya contoh interface untuk mendaftarkan kelas beserta pesertanya. Dalam implementasi biasanya menggunakan form/frame.

ObjectContainer db = Db4oEmbedded.openFile(“C:/Users/Herlawati/Documents/NetBeansProjects/com.kursus/kursus.yap”);
Kelas kel = new Kelas();
//siswa pertama
Siswa sis = new Siswa();
sis.setKodesiswa(“03”);
ObjectSet<Object> result = db.queryByExample(sis);
Siswa m1 = (Siswa) result.next();
System.out.println(“ketemu siswa nama: “+m1.getNama()+” kode “+m1.getKodesiswa());
System.out.println(m1);
kel.add(m1);
//siswa kedua
Siswa sis2 = new Siswa();
sis2.setKodesiswa(“04”);
ObjectSet<Object> result2 = db.queryByExample(sis2);
Siswa m2 = (Siswa) result2.next();
System.out.println(“ketemu siswa nama: “+m2.getNama()+” kode “+m2.getKodesiswa());
System.out.println(m2);
kel.add(m2);
//input atribut Kelas
kel.add3(“senin dan selasa”);
kel.add2(“kode3”);
db.close();
kel.insertData();
kel.readData();

Ada satu Kelas dengan dua peserta ditambahkan dengan kode di atas, pastikan ketika dieksekusi akan menghasilkan jawaban yang mengindikasikan data tersimpan.

Siswa dengan kode 03 dan 04 dicari terlebih dahulu dari kelas Siswa. Tentu saja sudah dimasukan terlebih dahulu beberapa objek Siswa. Fungsi Add akan memasukan siswa secara multivalue ke objek Kelas. Setelah atribut kelas (jadwal dan kode kelas) ditambahkan (operasi add2 dan add3) maka operasi insertData akan memasukan objek Kelas yang baru saja didaftarkan secara permanen ke sistem basis data objek. Butuh penjelasan yang detil, tetapi secara garis besar langkah-langkah di atas bermaksud menjelaskan prinsip kerja objek, baik instan (temporer) maupun persistence (permanen). Semoga bermanfaat.

Menerapkan Revolusi Industri 4.0 dalam Keseharian

Seperti biasa ketika masuk kerja jam 8 –an, sepi, hanya staf tata usaha dan beberapa dosen yang ada jadwal mengajar. Postingan ini terinspirasi dari siaran radio dalam perjalanan ke kampus yang membahas bagaimana bisnis di era revolusi industri 4.0.

Kembali ke kisah sunyi-sepi-sendiri tadi. Memang ada mesin absen, tetapi fungsinya sebatas setor biometrik (wajah atau sidik jari). Nyaman juga sih, bisa luntang-lantung selepas absen, begitu juga ketika jam pulang. Jika patokannya Tri Darma, sepertinya rata-rata tidak bagus-bagus juga, jika sebagai pembandingnya adalah kampus seusia. Berarti ada sesuatu yang tidak beres kampus dalam mengelola. Mungkin salah satunya adalah ketertinggalan teknologi kampus dengan teknologi yang digunakan karyawannya.

Revolusi Industri 4.0

Komponen penting versi industri 4.0 adalah cyber phisical system, internet of things (IoT), dan bio-technology. Karena kampus juga termasuk institusi bisnis, khususnya jasa, maka mau tidak mau harus mengikuti era-nya jika tidak ingin tertinggal. Salah satu aspek khas “internet of things” perlu diterapkan dengan beberapa metode artificial intelegent-nya (AI). Jika dirasa fingerprint sekali masuk dan sekali keluar tidak memenuhi rasa keadilan, ganti saja dengan berbasis AI, entah bagaimana caranya. Saya teringat kakak saya yang banyak bisnisnya, salah satunya cuci mobil. Dia menggunakan prinsip bagi hasil terhadap tim pencuci. Saya mempertanyakan, apakah tidak khawatir dibohongi? Dia menjawab, “kan ada CCTV, kita bisa melihat berapa mobil yang dicuci, lihat live atau rekamannya”. Jadi kehadiran fisik seperti inspeksi mendadak dan sejenisnya sudah bukan era-nya lagi, biar sistem yang berbicara. Rapat-rapat yang menuntuk kehadiran fisik pun sepertinya tidak masuk kategori industri 4.0.

Kapten Stark

Penggemar film marvel pasti tahu Mr. Stark, sang Iron Man. Lihat bagaimana dia menerapkan IoT dengan cyber physical systemnya dimana mesin dan mesin berkomunikasi, bukan hanya orang dengan mesin. Bahkan Dr. Banner (Hulk) yang berprofesi dokter pun tampak lihai menggunakan IT di markas avengers, teknologi yang memang makin menjadi pegangan sehari-hari kita saat ini bukan hanya orang IT. Bahkan dalam satu episodenya, kapten Stark belajar astrofisika hanya dalam semalam. Maaf, jadi ngomongin film. Tapi gambaran di film tersebut cukup baik menggambarkan revolusi industri 4.0, terlepas dari keanehan-keanehan yang memang wajar dalam sebuah film.

Jiwa Kewirausahaan (Enterpreneurship)

Sehabis lulus studi terakhir, saya diundang ke kampus internasional berkat undangan dari teman yang mengenal orang-orang di kampus itu, dan karena memang banyak waktu luang jadi sering kesana-kemari, datanglah iseng-iseng ke kampus tersebut. Saya tercengang ketika salah satu ketua prodi menanyakan bisnis atau usaha apa yang saat ini dilakukan selain mengajar, di sesi wawancara. Sebuah pertanyaan “out of the box” yang jarang ditanya dalam sebuah wawancara menjadi seorang dosen. Dan kebetulan pula kampus existing diambil alih dan dapat pesangon, akhirnya kembali lagi di cerita bisnis kakak saya, uang tersebut dibuat usaha dengan penghasilan perbulannya yang hampir menyamai gaji pokok golongan III/a. Dengan memanfaatkan IoT, aspek geografis dapat teratasi dan masih bisa mengajar walau sambil berwirausaha.

Kembali ke dunia nyata dan terbangun dari lamunan, terlihat banyak tumpukan kardus yang sepertinya paket di ruang dosen. Ternyata banyak juga yang bisnis online. Tadinya saya fikir dosen bakal terdisrupsi, ternyata dosen malah mendisrupsi bidang-bidang lain, tentu saja jangan ke politik seperti dosen di sebuah univ di Bandung yang jadi tersangka karena ujaran kebencian di medsos.

Membuat Kelas Transaksi dengan Basis Data Objek

Mirip dengan tabel master dan tabel transaksi pada basis data relasional, pada pemrograman berorientasi objek membutuhkan juga tabel transaksi yang melibatkan lebih dari dua tabel. Sebagai contoh adalah mahasiswa yang mendaftarkan kelas yang diikutinya lewat kelas registrasi. Di sini kelas registrasi memerlukan kelas Mahasiswa dan kelas Kelas yang diikuti. Berikut kode untuk membuat kelas Kelas.

public class Kelas {
String kodemk;
String namamk;
int sks;
public Kelas(String kodemk, String namamk, int sks){
this.kodemk=kodemk;
this.namamk=namamk;
this.sks=sks;
}
public void display(){
System.out.println(“Kode MK: “+kodemk+”| Nama MK: “+namamk+” | Jlh SKS: “+sks+”SKS”);
}
}

Seperti biasa tiap kelas memiliki nama, atribut dan operasi. Karena hanya sebagai latihan, pada kelas ini tidak dimasukan kelas untuk operasi create, read, update and delete (CRUD). Hanya operasi display yang disertakan untuk memunculkan atribut-atribut kelas Kelas antara lain: kodemk, namamk, dan sks yang berturut-turut bertipe string, string, dan integer.

Dengan cara yang sama kita bisa membuat kelas Mahasiswa dengan atribut: nama, usia, dan jurusan. Tentu saja hanya sekedar contoh, karena biasany membutuhkan juga nomor pokok mahasiswa (NPM), alamat, ipk, dan lain-lain. Lanjut saja ke bagian penting, yaitu kelas Registrasi yang berfungsi mengakomodir Mahasiswa yang medaftarkan kelas mata kuliah tertentu. Berikut kode pada kelas Registrasi yang dibuat cepat dengan IDE Netbeans 8.

public class Registrasi {
private String noreg;
Mahasiswa m;
Kelas kls;
public Registrasi(String noreg, Mahasiswa m, Kelas kls){
this.noreg=noreg;
this.m=m;
this.kls=kls;
}
public void display(){
System.out.println(“No Reg: “+noreg);
kls.display();
m.display();
}
public void insertData() {
System.out.println(“* Insert data…”);
ObjectContainer db;
db = Db4oEmbedded.openFile(“<folder>/mahasiswadb.yap”);
try {
Registrasi reg = new Registrasi(noreg,m,kls);
db.store(reg);
System.out.println(“Stored “+reg);
}
finally {
db.close();
}
}
}

Kelas Registrasi ini memiliki atribut: noreg, m, dan kls yang merepresentasikan berturut-turut nomor registrasi, mahasiswa dan kelas. Ada operasi display() yang berisi display dari kelas yang terlibat (Mahasiswa dan Kelas). Satu kelas penting lainnya adalah insertData() yang menyimpan data objek registrasi ke basis data agar tersimpan secara permanen (persistence). Terakhir di kelas Main masukan kode contoh berikut.

public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Mahasiswa m = new Mahasiswa(“Rahmadya”,43,”Teknik Komputer”);
Kelas kls = new Kelas(“FIS-1″,”Fisika”,3);
Registrasi reg = new Registrasi(“01/mei/2019”,m,kls);
reg.display();
reg.insertData();
}
}

Pertama-tama objek mahasiswa dibentuk dengan atributnya lengkap. Demikian pula objek Kelas yang berisi kode kelas, nama kelas dan jumlah SKS. Terakhir objek registrasi yang berisi nomor registrasi beserta objek yang terlibat (diberi nama variabel m dan kls) dibentuk. Objek registrasi selain ditampilkan lewat operasi display() juga disimpan ke basis data lewat operasi insertData(). Jika dijalankan dengan menekan tombol segitiga hijau akan menghasilkan output di bawah ini.

Coba buka file basis data objek “mahasiswadb.yap” dengan notepad dan pastikan terisi objek yang baru saja disimpan lewat instruksi db.store(reg) di atas.

Postingan ini menggunakan Netbeans dengan Object Database Management System (ODBMS) DB4O yang masih jarang digunakan. Biasanya pengembang menggunakan kelas dan objek yang disimpan dalam Relational Database Management System (RDBMS). Silahkan searching ebook tentang DB4O yang banyak beredar di internet. Untuk buku sejenis yang berbahasa Indonesia saya masih mencoba menulis, semoga segera selesai

Problem CRUD pada Pemrograman Berorientasi Objek

Problem Create, Read, Update, dan Delete (CRUD) pada PBO dikenal dengan istilah impedance mismatch. Hal ini terjadi karena pemrograman terstruktur dengan karakternya yang menggunakan database relasional menggunakan prinsip pemisahan antara data dengan program. Sementara itu PBO dalam satu kelas memadukan data dan program. Dalam hal ini data berupa atribut, sementara programnya berupa method/operasi. Kontroversi kerap terjadi, biasanya untuk programmer-programmer yang biasanya menangani program-program nonobjek, yang menganjurkan CRUD terpisah dari kelas-nya (lihat di sini). Terutama yang sering menggunakan framework maupun bertipe service oriented architecture (SOA), cenderung memasukan CRUD ke layer service. Atau programmer yang menerapkan Object Relational Database Management System (ORDBMS).

Gambar berikut dikutip dari sumber materi PBO link ini. Tampak pada kelas Customer, kelas ini memiliki operasi bernama +add(name,phone) yang bertugas memasukan pelanggan baru. Operasi yang berada dalam sebuah kelas sebenarnya memperkuat konsep PBO yaitu encapsulation dimana kelas lain tidak bisa mengutak-atik kelas tertentu. Untuk menambah pelanggan, dalam kelas Customer harus lewat operasi +add pada kelas tersebut, tidak seperti database relasional yang menggunakan akses dari luar lewat injeksi SQL (insert into Customer).

Jadi sejatinya CRUD pada objek terletak di bagian operasi kelas yang bersangkutan, jika ingin prinsip encapsulation tetap dipegang. Hal ini bisa dijalankan untuk Object Database Management System (ODBMS) murni dengan basis data objek seperti DB4O (lihat pos yang lalu) atau tipe no-sql seperti MongoDB. Interface yang mengirimkan data yang harus diubah pada PBO hanya berupa pesan (message), misalnya pada diagram kelas di atas ingin menambah satu pelanggan baru maka interface yang biasanya form/frame memberikan pesan ke kelas Customer agar menjalankan operasi +add(name,phone) untuk menambah satu data pelanggan baru dengan name dan phone tertentu (dari isian form/frame). Mungkin pembaca tidak setuju, boleh saja, toh antara konsep PBO dengan terstruktur termasuk antara database relasional dan objek pun bisa dikombinasikan. Terkadang antara teori dengan aplikasi/penerapan perlu kompromi.