Web Browser dan Web Developer

Pekerjaan men-develop sebuah situs atau aplikasi web saat ini merupakan hal yang menurut saya mudah sekali. Tools dan framework dan juga tutorial-nya yang ada sudah sangat banyak dan para developer, atau mungkin bagi yang mau belajar, tinggal memakainya saja.

Butuh PHP framework? Coba saja lihat CakePHP, Code Igniter, atau Yii. ASP.NET? Pelajari MVC-nya Microsoft. Atau mungkin untuk desain? Ada banyak CSS framework. Lihat saja Bootstrap atau Foundation.

Setelah membangun website, seorang developer pasti akan menguji website-nya. Bagaimana kalau situs yang ia buat dibuka di layar dengan resolusi yang kecil, atau bagaimana jika dibuka di perangkat mobile?

Saat ini, sebenarnya web browser yang dipakai pembaca bahkan telah memiliki alat untuk web developer.

Tidak percaya?

Oke, pakai browser apa pembaca sekarang? Google Chrome? Coba tekan F12. Opera? Coba tekan Ctrl + Shift + I. Firefox? Coba tekan Shift + F2. Kita hanya tinggal pakai.

Page Inspector di Google Chrome

Opera Dragonfly

Page Inspector di Firefox

Lihat contohnya di atas? Setiap pengguna web browser di seluruh dunia sebenarnya bisa melakukan analisis terhadap situs apapun yang ada di internet. Ada banyak hal yang bisa dilakukan oleh developer tools yang sudah disematkan ke dalam browser itu.

Kalau menggunakan Page Inspector, kita bisa melihat struktur HTML dari halaman web yang kita teliti, bahkan sampai CSS-nya. Kita bahkan bisa mengetes bagaimana tampilan suatu website jika suatu blok style di-nonaktif-kan sementara. Bahkan kalau menggunakan Console kita bisa melihat langsung isi variabel JavaScript yang ada di website tersebut, atau mencoba mengeksekusi suatu statement JavaScript tertentu.

Jadi sebenarnya, bahkan web browser dan web developer itu sudah klop sekali. Fitur-fitur seperti ini jelas sangat membantu web developer untuk lebih produktif. Jangan-jangan ada di antara pembaca yang ternyata sudah jadi web developer tapi belum pernah pakai? 😛 Well, ayo langsung dicoba saja. 😀

Googling, Pertolongan Pertama untuk Memecahkan Masalah

Internet sebagai media informasi yang luas merupakan sebuah keuntungan yang sangat besar untuk penekun dunia IT. Hmm, bahkan bisa jadi untuk semua orang, karena sekarang, apa saja bisa kita ketahui dan baca lewat internet. Ada ratusan juta website di internet yang bisa kita jelajahi setiap hari, dengan gratis (asalkan memiliki koneksi internet).

Kadang-kadang saya gatal ketika ada orang yang bertanya sesuatu, yang padahal, cukup dengan membuka search engine seperti Google, pertanyaan tersebut bisa langsung terjawab. Tentunya setelah sedikit melakukan pencarian, melakukan beberapa klik dan membaca beberapa paragraf.

Karena itu saya katakan, Googling bisa jadi merupakan pertolongan pertama untuk memecahkan masalah.

Saat saya melaksanakan aktifitas saya sehari-hari sebagai seorang mahasiswa IT seperti coding, seringnya ada begitu banyak masalah saat mencoba-coba suatu kode ataupun ketika sedang mengembangkan program komputer. Programmer sangat akrab dengan kode error, salah ketik, konfigurasi yang salah, atau kejadian program komputer yang berjalan tiba-tiba crash begitu saja dan kemudian menampilkan pesan kesalahan yang tidak manusiawi.

Saat bertemu dengan kejadian seperti ini, dulunya saya sering panik. Namun sekarang sudah tidak terlalu kalau saya sedang terhubung dengan internet. Kenapa? Karena ada Google. 😉

Di dunia ini ada jutaan manusia yang mengalami masalah yang skenarionya sama dengan masalah yang kita hadapi. Terutama untuk masalah IT, di dunia ini ada banyak sekali. Jutaan pertanyaan dan solusi terhampar luas sebenarnya di dalam forum-forum atau blog-blog orang lain yang sudah mencobanya terlebih dahulu. Kita hanya perlu mencarinya saja.

Jadi, ketika mendapatkan pesan error saat melakukan coding dari compiler, atau ketika sedang mencoba mengembangkan aplikasi web dan mendapatkan pesan error dari web server, kita bisa mencoba dulu untuk mengatasi masalah tersebut sendiri. Caranya? Mudah. Cukup copy dan paste kode kesalahan ke kotak search Google dan search results yang muncul sedikit banyak akan membantu.

Itu lebih efektif, dibanding menanyakan solusi permasalahannya dengan cara mengirimkan pesan singkat ke handphone teman kita yang pintar dan kira-kira bisa membantu. Bayangkan, berapa sms yang harus dikirim? Belum lagi capek mengetikkan pesan error-nya yang tidak manusiawi itu. 😛 (belum lagi kalau nggak dibalas. *eh)

Di internet bahkan ada situs yang khusus isinya semuanya adalah pertanyaan dari orang-orang yang mencoba berbagai macam aplikasi. Saat saya mengetikkan pesan kesalahan di Google, saya sering dibawa ke situs Stack Overflow. Jawaban yang diberikan di sana sering sekali membantu saya memecahkan masalah teknis yang saya hadapi di depan komputer.

Image

Tentu tidak terlepas dari sekedar masalah IT saja. Kadang-kadang masalah sehari-hari juga bisa kok. Bagaimana cara memasak nasi goreng? Atau bagaimana cara memberikan pertolongan pertama kalau kesentrum listrik? Atau bagaimana cara mengobati penyakit tertentu? Yah, Googling saja.

Mudah kan? 😀

Reverse Polish Notation Calculator

Setelah ini saya berencana meletakkan beberapa kode yang pernah saya kerjakan di sela-sela waktu belajar saya. Kode yang ini adalah kode pertama. 😀

Setiap kode yang saya arsipkan di blog saya ini akan diletakkan di bawah sub-kategori Code Archive yang berada di bawah kategori Programming. Mudah-mudahan bisa bermanfaat untuk pembaca.

Kode yang saya post kali ini adalah Reverse Polish Notation CalculatorReverse Polish Notation (RPN) dikenal juga dengan postfix notation, yaitu notasi di mana operator diletakkan setelah operand.

Program ini dulunya saya buat untuk mendemonstrasikan proses perhitungan operasi postfix di mata pelajaran matematika komputer di kampus saya. Dalam praktiknya, notasi postfix dapat diproses dengan menggunakan sebuah stack.

Berikut adalah tampilan programnya:

Jika kode di bawah ini dibaca, akan terlihat bahwa kalkulator ini masih punya banyak keterbatasan. Kalkulator ini hanya bisa memproses bilangan bulat, sebatas integer 32 bit saja. Selain itu, ukuran dari stack yang dimiliki program ini juga terbatas.

Saya membuatnya di atas IDE Microsoft Visual Studio 2010 Express dan bisa berjalan dengan baik. Jika pembaca menemukan masalah saat melakukan compile atau ternyata program ini memiliki kesalahan pemrosesan, jangan sungkan untuk berkomentar.

Semoga bermanfaat.


/*
 * Reverse Polish Notation Calculator
 * Written by Imam Hidayat
 * https://imamhidayatsite.wordpress.com
**/

#include <iostream>

using namespace std;

typedef enum {
	END,
	INT,

	ADD,
	SUB,
	MUL,
	DIV
}TOKEN;

const int MAX = 100;

int stack[MAX];

int N = 0, current = -1;

int pop(int stack[MAX]) {
	if (current == -1) {
		cout << "Empty stack!" << endl;
		return 0;
	}

	current--;
	N--;

	cout << "  -- POP " << stack[current+1] << endl;
	return stack[current+1];
}

void push(int stack[MAX], int value) {
	N++;
	if (N > MAX) {
		cout << "Stack full!" << endl;
		exit(1);
	}
	current++;
	stack[current] = value;
	cout << "  -- PUSH " << value << endl;
}

char token[MAX];

TOKEN get_next_token(FILE *input) {
	int index = 0;
	strcpy(token, "");
	char c = getc(input);
	while (true) {
		if (isdigit(c)) {
			token[index] = c;
			index++;
			c = getc(input);
		}
		else {
			if (index > 0) {
				token[index] = '\0';
				ungetc(c, input);
				return INT;
			}

			switch (c) {
				case '+':
					return ADD;
				case '-':
					return SUB;
				case '*':
					return MUL;
				case '/':
					return DIV;
				case '\n':
					return END;
				case ' ':
					c = getc(input);
					break;
				default:
					cout << "Error!" << endl;
					exit(1);
			}
		}
	}
}

int operate(TOKEN token, int op1, int op2) {
	switch (token) {
		case ADD:
			return op1 + op2;
		case SUB:
			return op1 - op2;
		case MUL:
			return op1 * op2;
		case DIV:
			return op1 / op2;
	}
}

void evaluate(int stack[MAX], FILE *input) {
	TOKEN current_token;
	current_token = get_next_token(input);
	cout << "---------------------------------------------------------------" << endl;
	cout << "Mengevaluasi ekspresi! Lihat operasi pada stack di bawah ini : " << endl;
	cout << "---------------------------------------------------------------" << endl;
	while (current_token != END) {
		int op1, op2;
		switch (current_token) {
			case ADD:
			case SUB:
			case MUL:
			case DIV:
				op2 = pop(stack);
				op1 = pop(stack);
				push(stack, operate(current_token, op1, op2));
				break;
			case INT:
				push(stack, atoi(token));
				break;
		}
		current_token = get_next_token(input);
	}
	int result = pop(stack);
	cout << "--------------------------------" << endl;
	cout << "Result = " << result << endl << endl;
}

int main() {
	while (true) {
		cout << "Masukkan ekspresi matematika dalam notasi RPN. (Ctrl + C untuk keluar)" << endl;
		cout << "Ekspresi: ";

		evaluate(stack, stdin);
	}

	return 0;
}