Skip navigation

Tag Archives: Programming


Usually before committing a file we need to check modified files against the code convention before committing to the code repository.

Here’s a single line to run modified files in Git against PHPCS.

git ls-files -m | grep '\.php$' | xargs ./vendor/bin/phpcs -s --standard=etc/phpcs/ruleset.xml

Code above assumes you install PHPCS using composer and have your own standard located in the etc/phpcs/ruleset.xml.

UPDATE

To check all uncommited files, run this

git ls-files --others --exclude-standard | grep '\.php$' | xargs ./vendor/bin/phpcs -s --standard=etc/phpcs/ruleset.xml

Biar saya tidak lupa. Sekarang saya menggunakan fitur geospatial dari MySQL yang menyediakan fitur geospatial indexing. Dengan fitur ini, saya bisa menyimpan data-data berupa lokasi pada bumi (dengan menggunakan latitude dan longitude) dan bisa melakukan kueri berdasarkan posisi sebuah lokasi.

Tapi meskipun ada banyak fitur-fitur kueri berdasarkan lokasi yang disediakan oleh MySQL, sayangnya tidak ada fungsi bawaan untuk mencari lokasi-lokasi dalam jarak tertentu. Dari referensi (lihat di bagian paling bawah tulis) saya mendapatkan kode di bawah ini. Kode ini merupakan implementasi fungsi haversine.

DELIMITER $$
 CREATE FUNCTION distance (a POINT, b POINT) RETURNS double DETERMINISTIC
   BEGIN
     RETURN 6371 * 2 * ASIN(SQRT(POWER(SIN(RADIANS(ABS(X(a)) - ABS(X(b)))), 2) + COS(RADIANS(ABS(X(a)))) * COS(RADIANS(ABS(X(b)))) * POWER(SIN(RADIANS(Y(a) - Y(b))), 2)));
   END  $$
DELIMITER ;

*update* Saat menulis ini merasa agak aneh dengan fungsi di atas, karena fungsi di atas sama sekali tidak memerlukan geospatial indexing. Ternyata ada alternatif yang menggunakan geospatial indexing yakni seperti di bawah.

DELIMITER $$
 CREATE FUNCTION distance (a POINT, b POINT) RETURNS double DETERMINISTIC
  BEGIN
  RETURN GLength(
   LineStringFromWKB(
     LineString(
       a, b
     )
   )
 ) * 100;
  END  $$
DELIMITER ;

Dan data-data lokasi dalam jarak tertentu (dalam satuan kilometer) dari sebuah titik dapat didapatkan dengan kueri seperti di bawah. Voila!

SELECT id, name, latitude, longitude, distance(coordinate, POINT(-6.890469, 107.610244)) AS cdist
FROM Locations
HAVING cdist < 10
ORDER BY cdist LIMIT 10;

Referensi utama dari blog ini dapat dilihat di


Beberapa hari lalu gw mengumpulkan tugas kuliah Algoritma dan Pemrograman (yap, untuk S2). Salah satu bagian dari tugasnya adalah untuk memodelkan sebuah pohon n-er (n-ary tree).  Sebuah pohon n-er adalah seperti yang digambarkan di bawah.

N-ary tree

Berbeda dengan pohon biner yang setiap simpul memiliki paling banyak 2 simpul anak, maka sebuah simpul pada pohon di atas dapat memiliki simpul anak yang jumlahnya tidak tentu. Karena jumlah anaknya tidak dapat ditentukan maka representasi larik statis untuk mencatat setiap anak dari sebuah simpul bukan lah merupakan pilihan yang baik, apalagi menggunakan larik 2 dimensi yang berisi matriks ketetanggaan (yang jelas untuk masalah representasi pohon akan memakan banyak sekali ruang). Yang jelas pilihan yang cukup masuk akal adalah menggunakan senarai dinamis.

N-ary tree dengan list

Ilustrasinya dapat dilihat di gambar atas. Setiap simpul akan memiliki sebuah senarai yang akan mencatat simpul-simpul anak. Karena simpul-simpul anak dapat bertambah maka akan sangat nyaman menggunakan senarai.

Tapi karena tugasnya diwajibkan menggunakan C, gw merasa agak kecewa karena di saat publikasi tugas mata gw sudah berbinar-binar akan menggunakan fitur senarai generik pada STL. Dengan senarai generik tersebut gw tinggal membuat sebuah struktur simpul yang memiliki sebuah senarai simpul. Rasanya agak malas kalau harus mengkode senarai berkait lagi seperti yang dilakukan saat masih di tahun kedua kuliah sarjana. Apalagi Bu Inggriani Liem selalu berpesan bahwa seorang programmer harus selalu bisa menulis kode senarai kapanpun dibutuhkan. LOL.

Untungnya teman sekelompok sudah bersedia membuatkan representasi pohon. Tapi yang cukup menarik, representasi ini merupakan representasi senarai yang sudah sangat disederhanakan. Idenya sangat mirip dengan ide pohon biner.

Pohon biner

Pada pohon biner, sebuah simpul mempunyai dua buah simpul anak: anak kiri dan anak kanan. Representasi ini dimodifikasi sehingga dapat merepresentasikan pohon n-ary. Anak kiri akan dianggap sebagai simpul anak sedangkan anak kanan dapat dianggap sebagai simpul saudara. Pohon yang ada pada gambar paling atas akan direpresentasikan sebagai berikut.

Pohon n-ary dengan representasi biner

Jika diuraikan sebagai pohon biner maka akan terlihat seperti berikut.

Representasi pohon biner

Menarik juga 🙂


Link bagus buat yang ingin tahu lebih banyak tentang pemrograman ACM ICPC. Check this out.


Kami Program Studi Teknik Informatika ITB, mengundang Bapak/Ibu untuk mengikuti acara yang bertajuk

Sosialisasi Keilmuan Informatika Untuk Guru SMA/Sederajat

yang merupakan bagian dari rangkaian acara besar

ITB Programming Contest 2010


Sosialisasi Keilmuan Informatika adalah acara berbentuk seminar dengan tema umum keilmuan informatika. Beberapa praktisi pendidikan informatika ternama akan menjadi pembicara dalam seminar ini. Peserta seminar ini adalah guru – guru pendamping peserta Kompetisi Pemrograman Tingkat SMA dan guru – guru bidang Teknologi Informasi dan Komunikasi tingkat SMA/Sederajat yang tertarik untuk mengikuti seminar ini.

Acara ini akan dilaksanakan di Ruang Auditorium gedung Campus Center Timur, Institut Teknologi Bandung pada 26 September 2010 pukul 09.00 – 14.00.

Pendaftaran acara seminar telah dibuka dan dapat dilakukan melalui situs resmi ITB PC 2010, yaitu pada alamat http://kontes.if.itb.ac.id atau pada saat acara berlangsung. Pendaftaran untuk acara ini tidak dipungut biaya.

Informasi lebih lengkap dapat mengunjungi situs http://kontes.if.itb.ac.id atau menghubungi contact person kami:
Karol Danutama 08987818158 / 08179851878
Listiarso Wastuargo 0812 158 124 8
Timotius Nugroho 0859 331 079 00

Demikianlah undangan dari kami selaku panitia ITB Programming Contest 2010. Semoga informasi ini dapat bermanfaat bagi anda. Terima kasih.


*postingan gak penting*
Biar gak lupa aja 😀

$username = "Petra Novandi Barus";
if (preg_match('/^[\p{L}\s]+$/', $username){
  echo "Valid";
} else {
  echo "Invalid";
}

Sudah lama tidak mengisi blog ini karena banyak kerjaan. Oke belakangan ini gw sedang mengerjakan sebuah aplikasi menggunakan PHP Framework Yii. Framework ini cukup menyenangkan dibanding beberapa framework lain. By the way, di tulisan ini gw akan memberikan solusi gw dari sebuah permasalahan kecil yang gw hadapi.

Yii menyediakan sebuah tabel model yang kodenya digenerate. Tabel ini adalah CGridView. Tabel ini menyediakan banyak sekali fitur yang siap digenerate: pagination, column sorting, dan lain-lain. Jadi dengan menggunakannya, gw jadi tidak perlu menulis banyak kode.

Tapi satu masalah yang gw hadapi adalah bagaimana gw merefresh isi tabel ini dengan sebuah filter yang disediakan oleh sebuah Dropdown List.  Gambarnya dapat dilihat di bawah.


Read More »


Menanggapi banyak permintaan untuk mengadakan pendalaman materi GWT yang telah diberikan pada JAMU Bandung Mei  2010 maka dengan ini pengurus JUG-Bandung mengadakan acara

JUG-BANDUNG WORKSHOP JUNI 2010

Pembangunan Sistem Informasi Rumah Sakit Sederhana Menggunakan Google Web Toolkit

Pada workshop ini peserta akan diberi pelatihan mengenai penggunaan GWT untuk studi kasus pembangunan sistem informasi rumah sakit sederhana.

Detail acara

Tanggal : Sabtu 5 Juni 2010
Waktu : 09.00 s.d. 15.00
Tempat : Lab 1, Gedung Ilmu Komputer Universitas Pendidikan Indonesia
Biaya : Rp40.000 per orang
Fasilitas : CD, Hardcopy modul, lunch, sertifikat
(Untuk kenyamanan peserta diharapkan membawa laptop masing-masing)

==================================================================
Pendaftaran dilakukan dengan mengirimkan data diri ke email
petra.barus@gmail.com dengan subject “Workshop JUG-Bandung”
berisi

Nama :____________
Instansi :____________
Handphone :____________
==================================================================
Pembayaran dilakukan dengan transfer ke nomor rekening berikut:

BCA KCU Matraman
No Rekening : 3422837911
Atas Nama : Petra Noviandi

Mandiri KCP Pulomas
No Rekening : 1200004735481
Atas Nama : Petra Novandi

BNI Kantor Cabang ITB Bandung
No Rekening : 0108995890
Atas Nama : Eko Kurniawan K

==================================================================
Setelah transfer kirim konfirmasi ke email petra.barus@gmail.com berisi

Tanggal Bayar :_____________
Bank :_____________
No. Rekening :_____________
==================================================================

First pay, first serve ^_^
Kuota peserta 30 orang. Kalau permintaan banyak maka akan
dipertimbangkan pengadaan kloter selanjutnya.
Daftar peserta yang sudah fix akan diumumkan di situs group

Diskusi dapat dilakukan di milis JUG-Bandung
http://groups.google.co.id/group/jug-bandung

Konfirmasikan Keharidan Anda di :
http://www.facebook.com/event.php?eid=104793552900556


Untuk membuat sebuah JFrame menjadi fullscreen hanya perlu dengan 2 baris kode di bawah.

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0, 0, screenSize.width, screenSize.height);

JFrame akan menjadi memenuhi layar. Tapi mungkin masih kurang karena titlebar dari JFrame masih akan terlihat. Untuk itu tinggal eksekusi method setUndecorated dengan nilai true sebelum JFrame ditampilkan.

Cara ini juga dapat diterapkan pada JDialog.


Taekwondo Tournament Management System atau Taekwondo TMS adalah sebuah perangkat lunak manajemen pertandingan Taekwondo. Perangkat lunak ini saya kembangkan berkerja sama dengan Wayang Sports, sebuah lembaga usaha yang dirintis oleh rekan saya yang bergerak di dalam usaha penyediaan perangkat-perangkat dijital untuk penyelenggaraan acara-acara olahraga.

Fungsi-fungsi aplikasi ini antara lain pembuatan turnamen, manajemen kelas-kelas turnamen serta peserta, serta manajemen bagan pertandingan. Fitur menarik dari aplikasi ini adalah aplikasi ditemani dengan perangkat keras yang dikembangkan oleh Wayang Sport untuk digunakan oleh juri dalam menilai pertandingan. Penjurian ini dilakukan secara realtime dan akan ditampilkan langsung oleh aplikasi. (contoh tampilan terlampir pada slide berikut)

Aplikasi Taekwondo TMS dikembangkan dengan menggunakan teknologi Netbeans Platform. Penggunaan teknologi ini sangat menguntungkan karena desainnya yang modular sehingga menjadikan aplikasi Taekwondo TMS ini dapat hanya menjadi satu sub-aplikasi dari banyak sub-sub aplikasi manajemen pertandingan untuk cabang-cabang lain yang terkemas dalam sebuah aplikasi besar. Selain penambahan modul-modul aplikasi per cabang, aplikasi besar ini nantinya akan ditambah fitur-fitur yang terintegrasi dengan media-media sosial seperti Facebook dan lain-lain.

%d blogger menyukai ini: