#JuliNgeblog Der siebte Tag : Pokemon Go Frenzy and GeoJSON

Hari ketujuh latihan menulis harian masih membahas tentang Pokemon GO. Kalau kemarin masih adaptasi dengan aturan main maka hari ini sudah mulai agak serius. Memasuki level 5 pemain sudah bisa memilih mau bergabung dengan Tim (merah, biru, kuning) dan mengakses Gym (Arena).

Permainan ini juga sedang ramai di Austria khususnya di Wina. Hari ini saya coba mencari grup komunitas pemain ini dan ternyata ada! berikut saya coba jabarkan grup mana saja yang paling relevan :

  • Pokemon GO Österreich. grup ini untuk seluruh Austria, jadi bukan hanya pemain yang tinggal di Wina saja. Grup yang khusus warga Wina sendiri tidak ada.

PGOOe

PGOWB.jpg

PGOWR.jpg

PGOWG

Saya sendiri tergabung di Tim Biru. Alasannya? waktu menangkap Pokemon pertama, saya tak sengaja memilih Squirtle (Schiggy). Walau cuma sebentar, tadi sore saya sempat merasakan jadi Gym Leader.

IMG-20160707-WA0009.jpg

Gambar di atas diambil jam 5 sore. Jam 9 menjelang magrib saya cek dari apartemen ternyata sudah tidak lagi berlogo Arena dan Pokemonnya dalam kondisi kritis. Entah apakah dikalahkan pemain lain dari tim yang sama atau dikalahkan pemain dari tim lain. Kemungkinan besar yang kedua.

Hal lainnya yang saya ingin bahas adalah ketika saya perlu membuat peta lokasi Arena dan akhirnya memutuskan untuk membuat berkas GeoJSON di gist Github. Enaknya menggunakan github adalah berkas GeoJSON otomatis akan dibuatkan pratampilnya berupa peta dan marker yang interaktif.

Adapun untuk menambahkan lokasi tidak perlu menyunting langsung berkasnya tetapi ada aplikasi yang membuat antarmuka interaktif sehingga bisa dengan mudah membuat perubahan bahkan langsung terhubung dengan gist github dan bisa mengonversi ke berbagai format lain.

geojsonio.jpg

Sekian dulu cerita saya hari ini. Sampai jumpa besok! mudah-mudahan sudah tidak lagi membahas Pokemon.😀

update: ternyata handy yang saya gunakan hanya ada GPS dan accelerometer. tidak ada kompas/orientation sensor sehingga agak sulit menentukan lokasi yang akurat dan tidak bisa menggunakan fitur augmented reality. Selain itu hari ini diwarnai server yang sering mati. Mungkin karena banyak yang menggunakan aplikasi yang non-resmi sehingga melebihi kapasitas yang diperkirakan. (I wonder if it’s true considering this game is the second title from the developer with the same genre and scale, but who knows..).

#JuliNgeblog Der sechste Tag : Pokemon Go

Topik yang seru hari ini adalah Pokemon Go. berawal dari petra yang membuat status di fb dan tips instalasi langsung dari .apk walau di playstore belum tersedia.

Jadi ceritanya, pulang sholat Ied di KBRI langsung googling dan unduh apk dari apkmirror. Setelah instal agak bingung gimana cara mainnya. Yang tampil cuma terrain biru tanpa ada peta dan dikira belum ada apa-apa (karena memang belum resmi rilis di Austria).

Setelah sampai kampus untuk rapat mingguan, saya iseng coba jalankan aplikasinya lagi. Setelah terhubung ke jaringan WLAN kampus (eduroam), ternyata langsung muncul. Kebetulannya lagi, di depan kampus ada dua Pokemon Stop. Berhubung ruang kerja di lantai 2 dan GPS di hp nggak seakurat handy yang dulu jadi kadang-kadang posisi bergeser dan akhirnya bisa menangkap beberapa Pokemon dan mengumpulkan beberapa PokeBall dari Pokemon Stop.

Satu trik yang bisa dipakai adalah sambil naik tram atau bus. Karena Pokemon Stop biasanya ada di pinggir jalan dan jalur tram/bus ada di dekat-dekat trotoar, Saya sempat mengumpulkan beberapa barang bahkan sempat menangkap satu spesies ketika tram sedang berhenti.

Screenshot_2016-07-06-20-09-26

Sayangnya, di sekitaran apartemen tidak ada objek yang menarik (mural/dekorasi di dinding) sehingga tidak ada Pokemon Stop. Sepertinya mesti dilanjut lagi besok sambil berangkat ke kampus.

Beberapa hal yang kurang nyaman dari aplikasi ini mungkin permintaan tanggal lahir di awal, lalu pemilihan username yang seringkali gagal dengan alasan sudah tidak tersedia. Selain itu sepertinya cukup menyenangkan.

Sekian dulu kabar hari ini, sampai jumpa besok!

ramadan-mubarak

#JuliNgeblog Der fünfte Tag : Eid Mubarak

Memasuki hari kelima yang akan berakhir kurang dari satu jam menurut zona waktu lokal, Saya sepertinya tidak akan menulis banyak. Berdasarkan penanggalan Hijriah mengacu pada Islamic Center kota Wina, saat tulisan ini ditulis sudah masuk tanggal 1 Syawal 1437H. Oleh sebab itu, izinkan saya mengucapkan:

Selamat Hari Raya Idulfitri 1437H!

Hari ini diwarnai gangguan koneksi internet bahkan sampai sebelum tulisan ini diterbitkan. Hal ini juga yang membuat saya agak malas menulis hal yang sudah saya rencanakan. Akhirnya, sudah dua kali topik dalam rencana gagal ditulis. Setidaknya, rencana topik bisa jadi antisipasi kalau-kalau alasan malas menulis karena tidak ada ide topik.😀

Idulfitri tahun ini di Wina sedikit berbeda. Sejak diberlakukannya Islamgesetz di Austria, organisasi Warga Pengajian Austria yang mengelola Masjid Assalam menyatakan diri sebagai Moscheegemeinde di bawah payung organisasi IGGÖ (Islamic Glauben Gemeinshaft in Österreich). Hal yang menariknya adalah tahun-tahun sebelumnya, IGGÖ tidak mengumumkan kapan jatuhnya 1 Syawal. Baru tahun ini IGGÖ mengumumkan tanggal 1 Syawal yaitu hari ini tanggal 5 Juli 2016 sesuai dengan negara-negara lain di Eropa.

Tahun-tahun sebelumnya Wapena mengikuti Islamic Center kota Wina yang juga mengikuti Saudi Arabia untuk penanggalan 1 Syawal. Oleh sebab itu tahun ini pengurus wapena memutuskan untuk tetap mengikuti Islamic Center yang ternyata memutuskan 1 Syawal jatuh pada tanggal 6 Juli 2016 karena kemarin Hilal tidak terlihat.

5 menit menjelang tanggal 6 Juli 2016. Besok pagi sholat Ied diadakan di KBRI Wina pukul 8.30 dan saya masih ada rapat lab siangnya karena kepala Lab akan berlibur.

Sampai jumpa besok!

(gambar disalin dari islamic center of Vienna)

16358421226_9b5f2b348f_o

#JuliNgeblog Der vierte Tag: Struggling against procrastination

Selamat hari senin! memasuki hari keempat latihan menulis, godaan untuk procrastination kembali menyerang. Masalah kehabisan ide sudah diantisipasi dengan membuat jadwal topik tulisan hingga hari ke-31 walau masih ada dua-tiga hari yang belum ada topik. Masalah monotonisitas sudah diantisipasi dengan merencakan tema/gaya yang berbeda setiap harinya. Ketika kedua hal tersebut sudah diantisipasi, ternyata masih ada saja alasan yang muncul untuk tidak menyelesaikan tulisan hari ini. Read More

18987246346_740dae66b6_o

#JuliNgeblog Der dritte Tag : Ramadhan in Wien

Tulisan kali ini ditulis setelah sahur. Jam di pojok layar menunjukkan pukul tiga lewat lima menit. Pertanda sudah masuk waktu mulai puasa hingga nanti buka jam sembilan sore.

Ya, puasa di belahan bumi eropa yang sedang dalam musim panas memang sedikit lebih panjang ketimbang puasa di tanah air. Tahun ini adalah tahun ke-empat sejak saya menjejakkan kaki di tanah yang penuh cerita sejarah masa lampau ini. artinya, ini kali keempat saya menikmati puasa dengan durasi sekitar 18 jam. Enam jam lebih lama dibanding biasanya.

Setelah kemarin menulis hal yang terlalu teknis sehingga mungkin sulit dinikmati oleh khalayak. Kali ini saya akan mencoba membuat tulisan yang lebih santai. Walaupun hari ini masuk tanggal ke-28 ramadhan, Sepertinya masih belum terlalu basi untuk membahas tentang bulan yang sering dikenal sebagai “bulan puasa”. Read More

cropped-15472656793_f5bc0fc360_k.jpg

#JuliNgeblog Der zweite Tag : Delegate Mouse Event Signal on QLabel

Selamat datang kembali!

Tulisan hari kedua sudah mulai masuk ke topik yang teknis. Persoalannya adalah ketika mau menangkap sinyal tetikus (press, release, move) untuk menggambar. Ketika menggunakan delphi dulu, prosedur untuk menangani event tetikus bisa dibuat terpisah dari komponen yang menjadi tempat terjadinya event. Misalnya, ketika ada event mouse di atas komponen Image, maka prosedur penanganannya bisa dibuat sebagai method dari objek Form. Salah satu contoh skenarionya adalah ketika terjadi sesuatu di komponen ini, maka akan disimpan perintah menggambar dan proses penggambaran di komponen yang bisa menggambar bisa didekorasi dengan penunjuk objek apa yang akan digambar tanpa mengganggu kondisi yang sudah ada (misal. rubberband).

dip

Masalah muncul ketika mau menerapkan cara serupa pada konteks Qt di python (PyQt atau PySide). Pada konteks ini, kelas yang memiliki buffer untuk menggambar ada di QImage. Agar gambar di objek ini dapat ditampilkan, Objek QImage perlu dipasang di Objek QLabel. Penanganan event mouse dilakukan di QLabel. Pendekatan untuk menangani proses semacam ini adalah dengan membuat kelas turunan QLabel atau QWidget untuk kebutuhan yang berbeda yang tentu saja merepotkan. Saya perlu satu komponen kecil yang bisa dipakai untuk beberapa konteks penggambaran yang berbeda tapi memiliki mekanisme yang sama (prosedur penanganan ada di objek lain).

Setelah membaca manual, ternyata membuat sinyal event cukup mudah:

  1. deklarasikan objek sinyal internal
  2. lempar sinyal sesuai dengan keadaan yang diinginkan (dalam hal ini, setiap terjadi mouse event)

Penjelasan lebih lanjut dapat dilihat di kode berikut :

class QMLabel(QtGui.QLabel):
	mousePressed = QtCore.Signal(QtGui.QMouseEvent)
	mouseMove = QtCore.Signal(QtGui.QMouseEvent)
	mouseReleased = QtCore.Signal(QtGui.QMouseEvent)

	def __init__(self, parent):
		super(QMLabel, self).__init__(parent)
		self.setMouseTracking(True)

	def mousePressEvent(self, event):
		self.mousePressed.emit(event)
		super(QMLabel, self).mousePressEvent(event)

	def mouseMoveEvent(self, event):
		self.mouseMove.emit(event)
		super(QMLabel, self).mouseMoveEvent(event)

	def mouseReleaseEvent(self, event):
		self.mouseReleased.emit(event)
		super(QMLabel, self).mouseReleaseEvent(event)

Di kode tersebut, saya membuat tiga event yang akan dilempar (didelegasikan). Pada setiap kode penangan event, saya lempar sinyal internal (prosedur emit).

Cara menggunakan kelas ini sama seperti ketika menggunakan komponen lain. rinciannya bisa dilihat di kode berikut :

class PickWidget(QtGui.QWidget):
	postAction = QtCore.Signal()
	def __init__(self, parent):
		super(PickWidget, self).__init__(parent)

		#offline buffer
		self.trackimage = QtGui.QImage(660, height, QtGui.QImage.Format_RGB32)

		self.tracklabel = QMLabel(self)
		self.tracklabel.setPixmap(QtGui.QPixmap.fromImage(self.trackimage))
		self.tracklabel.adjustSize()

		self.tracklabel.mousePressed.connect(self.mousepress)
		self.tracklabel.mouseReleased.connect(self.mouserelease)
		self.tracklabel.mouseMove.connect(self.mousemove)

	def mousepress(self, event):
		pass

	def mouserelease(self, event):
		pass

	def mousemove(self, event):
		pass

Sekian dulu catatan kali ini. Mudah-mudahan bermanfaat bagi saya sendiri kalau sewaktu-waktu lupa atau untuk anda kalau bertemu dengan persoalan yang sama.

Wassalam,

#JuliNgeblog Der Erste Tag

Hari ini secara tidak sengaja saya melihat twit dari omari dan petra tentang tantangan menulis blog setiap hari di bulan Juli. Setelah melihat arsip blog ini, ternyata tulisan terakhir dibuat di tahun 2014. Sudah lebih dari satu tahun blog ini tidak terbarukan. Saya pikir ini momen yang baik untuk kembali memakmurkan blog ini dengan tulisan-tulisan yang mungkin diwarnai kode program, opini dengan argumen yang masih mentah, galauan mahasiswa doktor yang sudah masuk tahun ke-empat, atau sekadar selentingan acak.

Sebagai pengantar, saya akan menceritakan kondisi saya saat ini. Saya masih tinggal di Wina, Austria. Alhamdulillah, sejak Oktober tahun lalu anak dan istri sudah ikut menemani. Beasiswa DIKTI sudah terhenti sejak awal tahun, dan karena satu dan lain hal saya tidak sempat mendaftarkan perpanjangan beasiswa untuk semester ini (Sommer). Saya akan coba mengajukan lagi perpanjangan beasiswa semester musim dingin. Kabar terbaru yang saya terima, dua paper di lab kami di sini belum berhasil masuk jalur riset dan jalur resource di ISWC 2016. Kemungkinan akan dialihkan untuk dipublikasi di jalur workshop pada acara yang sama.

Saya cukupkan dulu tulisan ini mudah-mudahan jadi awal yang baik. Sampai jumpa di tulisan berikutnya (besok)! kalau hampir terlewat, mohon diingatkan😀