Dedi Purwanto

Tentang keseharian, pemikiran dan masalah seorang remaja biasa.

Arsip tag Programming

Asah Kemampuan Software Development

Software Development adalah telur

Saya ingin melakukan klaim pribadi, bahwa mayoritas lulusan IT, setidaknya yang saya kenal, memiliki pehamaman minim di jurusannya, bahkan setelah lulus. Salah satu skill yang katanya sangat sulit dijamah adalah software development (programming). Kenapa?.

Setiap tahunnya, kampus saya meluluskan setidaknya hampir seribu mahasiswa/i fakultas Computing & IT (FOCIT). Di fakultasi ini ada beberapa jurusan seperti Multimedia, Networking, Business IT, Computer Science dan Software Engineering. Saya adalah salah satu dari mungkin hampir seribuan pelajar yang lulus di FOCIT tahun lalu, jurusan saya adalah Software Engineering.

Kesan saya setelah lulus adalah, apa yang disajikan degree (S1) IT memang sangat kurang jika kita ingin benar-benar mengasah kemampuan IT, utamanya di bagian Software Development, sehingga banyak perusahaan yang memvonis lulusan IT sebagai benar-benar pemula. Saya nggak terkejut melihat sebagian teman-teman belum mahir dalam mengembangkan sebuah system, problem solving, atau sekedar menulis program kecil. Karna ternyata dibeberapa negara lain juga mengalami masalah yang sama, bahkan di negara-negara yang sering orang bilang “barat”.

Software Development memang satu topik yang sangat luas, nyaris mustahil bisa di cover dalam 3-4 tahun kuliah dengan jam belajar hanya sebatas pagi sampai sore dan ditambah beberapa tugas rumah. Untuk menguasai banyak topik software development, kita tidak bisa hanya mengandalkan jam kuliah. Satu-satunya cara adalah dengan belajar secara mandiri, dan untungnya, banyak sekali media yang memudahkan belajar software development secara mandiri.

Meskipun saya sendiri belum bisa meng-klaim diri sebagai orang yang berpengalaman, tapi saya bersyukur punya teman-teman yang sudah cukup kaliber di beberapa field software development. Ada beberapa hal yang saya selalu ikuti dan ingat, dan terasa sangat bermanfaat untuk mengasah kemampuan kita di software development. Apa saja?.

Baca tulisan ini lebih lanjut

AS3: Multidimensional Sort pada Array Object.

Terkadang ada kondisi dimana kita mempunyai sebuah array yang isinya object, lalu kita ingin melakukan sorting array tersebut,  yang parameternya adalah member object didalam array.

Contoh, jika saya punya object ini:

public class Murid
{
	public var nama:String;
	public var kelas:int;
	public var nilai:int;
	public function Murid(nNama:String,nKelas:String,nNilai:String)
	{
		nama = nNama;
		kelas = nKelas;
		nilai = nNilai;
	}
}

Baca tulisan ini lebih lanjut

Jangan mengerjakan soal programming pakai kertas

Konversi vektor screen ke world pada orthogonal projection

Banyak yang bingung mencari nilai vektor (x, y) pada 3D world yang berasal dari vektor screen. Biasanya teknik ini disebut picking. Kali ini kita akan melakukan konversi vektor screen ke vektor 3D world, tapi dalam orthogonal projection, yang berarti posisi y axis kamera sama nilainya dengan posisi y axis poros kamera. Disini kita menggunakan OpenGL dan GLFW sebagai frameworknya.

Banyak sekali teknik picking yang sudah ada, saya nggak akan ngebahas banyak tentang matematika untuk mendapatkan nilai vektornya, karena OpenGL sendiri punya sebuah library bernama GLU, kita akan menggunakan fungsi gluUnProject() milik GLU untuk melakukan konversi koordinat window ke koordinat objek.

GLdouble posx,posy,posz; // variabel untuk menyimpan hasil konversi
int mx,my; // variabel untuk menyimpan koordinat mouse

// ambil koordinat mouse dengan GLFW, bisa juga menggunakan lib lain (SDL, etc)
glfwGetMousePos(&mx,&my); 

glLoadIdentity(); // reset matrix
GLdouble modelMatrix[16];
glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix);
GLdouble projMatrix[16];
glGetDoublev(GL_PROJECTION_MATRIX,projMatrix);
int viewport[4];
glGetIntegerv(GL_VIEWPORT,viewport);
gluUnProject(mx,my,0,modelMatrix,projMatrix,viewport,&posx,&posy,&posz);

posx*=(zoom * 10); // hasil konversi dikalikan dengan (zoom * 10)	
posy*=(zoom * 10);

posy*=-1; // karena arah y axis pada 3D world umumnya berbeda dengan y axis pada 2D (orthogonal), jadi kita kalikan dengan -1

std::cout << posx << ", " << posy << "\n"; // print output konversi

Disini pertama-tama kita ambil dulu koordinat mouse, kemudian ambil setting model view matrix,projection matrix, dan viewport yang sudah di set sebelumnya, setelah itu gunakan gluUnProject untuk melakukan konversi (silahkan lihat manual gluUnProject pada website OGL).

Variabel zoom adalah distance antara posisi Z kamera dengan posisi Z poros kamera, kita kalikan dengan 10 karena nilai konversi sebelumnya adalah nilai floating point yang sangat kecil. Terakhir mengalikan posy dengan -1 untuk menormalkan posisi y axisnya sesuai dengan 3D world.

Banyak sekali implementasi teknik picking yang tersebar di internet. Teknik diatas adalah salah satu yang paling simpel :roll: .

Hacking Trick : CSS Injection

Sebelum saya ngebahas ini, please note that this is just a learning material, and hacking is not a child’s play. When you broke a site, it’s not cool or smart or genius, it’s a crime. Buat saya pribadi hacking adalah proses pembelajaran (mencari bug, fixing code, optimizing) bagi si coder untuk meng-involve teknik/trik programming baru.

Kali ini saya mau ngebahas gimana lubang pada application layer bisa dimanfaatkan buat ngemodifikasi style CSS (Cascading Style Sheet) pada sebuah elemen yang menggunakan tag DIV atau SPAN. Pada prakteknya nanti, kita bisa mengubah tampilan sebuah elemen dengan mengubah style CSS-nya lebih dari yang diperbolehkan oleh situs tersebut. Yang lebih menyeramkan lagi, kita bisa mengubah style tersebut sedemikian rupa hingga tampilan situs secara keseluruhan berubah (atau bisa disebut deface?). Baca tulisan ini lebih lanjut

Google Chrome Funny Picture

Just a short comic I made this morning :roll: . No offense to another users. It’s just talk about how I act to my other browsers after I installed Chrome :roll:

-

Ikuti

Get every new post delivered to your Inbox.

%d bloggers like this: