Jumat, 29 Mei 2015

Cara Install Codelite Versi Terbaru di Ubuntu


Sebelum saya menulis postingan ini saya mencoba mengembangkan program cross-platform berbasis GTK untuk Windows dan Linux. Rencananya, saya juga akan menulis buku tentang pemrograman aplikasi GUI cross platform dengan GTK. Codeblocks adalah IDE yang paling sering saya gunakan saat ini. Alasan saya memilih codeblocks, tntu saja karena ini crossplatform, cocok dengan tema buku yang akan saya tulis.

Karena sudah cukup lama menggunakan Codeblocks, saya merasa sudah terbiasa koding di lingkungan IDE dengan tampilan yang sederhana seperti ini. Saya sebelumnya juga pernah menggunakan Codelite. Tampilannya menurut saya lebih bagus. Tapi saya ingat, dulu saya pernah kesulitan mengatur project settings untuk program yang akan saya buat. Tiba-tiba saja saya ingin mencoba lagi Codelite ini, mungkin saya bisa melakukan sesuatu untuk mempermudah konfigurasi project.

Yah, saya tidak menyesal. Saya kira Codelite tidak memiliki template untuk GTK+ 3, tapi sepertinya Codelite yang sekarang ini saya coba sangat memuaskan hati saya :) Konfigurasinya lumayan mudah bagi saya, tampilannya juga lebih menarik.

Tanpa pikir panjang saya segera merestart laptop sya, lalu mengupdate Codelite yang ada di Ubuntu. Hmm, tapi ada yang aneh, versi Codelite paling baru di Ubuntu adalah versi 2?

Tanpa pikir panjang, saya segera berkonsultasi dengan mbah Google. Dan berikut ini ulasannya:

  • Pertama, jika sudah menginstall versi lawas, kita harus menghapusnya terlebih dulu. sudo apt-get purge codelite codelite-plugins
  • Tambahkan public key codelite. sudo apt-key adv --fetch-keys http://repos.codelite.org/CodeLite.asc
  • Tambah repository Codelite. sudo apt-add-repository "deb http://repos.codelite.org/ubuntu/ $(lsb_release -sc) universe"
  • Update package list. sudo apt-get update
  • Install versi barunya. sudo apt-get install codelite

Dan akhirnya.... :)



Selamat mencoba :)
Read more

Sabtu, 23 Mei 2015

Ubah Warna Teks Console dalam Program C dengan Windows API


Saat membuat program berbasis teks (console application), biasanya secara default background berwarna hitam dan teksnya berwarna putih agak keabu-abuan. Walaupun demikian, kita bisa mengubah pengaturan default ini jika kita mau. Di sistem operasi berbasis Unix, ini bisa dilakukan dengan library ncurses. Namun, menurut saya metode ini kurang efektif, karena pada umumnya program konsol sudah jarang dipakai dan skala programnya rata-rata kecil. Cara lainnya adalah dengan ANSI escape code. Cara ini lebih efektif, namun tidak didukung oleh Windows.

Sementara itu, di Windows, kita juga bisa menggunakan ncurses, namun akan lebih efektif jika kita memanfaatkan Windows API yang dapat dengan mudah kita gunakan.

Pada tulisan ini kita akan coba mengubah warna atribut teks di Windows dengan Windows API. Fungsi API yang harus kita ketahui untuk mengubah atribut teks ada 2, yaitu GetStdHandle() untuk memperoleh handle output konsol yang selanjutnya kita pakai untuk merubah atribut teks, fungsi kedua adalah SetConsoleTextAttribute(), digunakan untuk menguah atribut teks dalam konsol.
Prototype fungsinya adalah sebagai berikut:


HANDLE GetStdHandle(DWORD nStdHandle);
nStdHandle: Jenis handle yang ingin kita peroleh. Bisa berupa STD_INPUT_HANDLE, STD_OUTPUT_HANDLE atau STD_ERROR_HANDLE.
Return: Handle



BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
hConsoleOutput: Handle yang diperoleh dari GetStdHandle dengan jenis STD_OUTPUT_HANDLE.
wAttributes: Atribut warna baru. Argumen yang diberikan bisa erupakan kombinasi dari konstanta berikut; FOREGROUND_RED, FOREGROUND_GREEN, FOREGROUND_BLUE, FOREGROUND_INTENSITY, BACKGROUND_RED, BACKGROUND_GREEN, BACKGROUND_BLUE, BACKGROUND_INTENSITY.
Return: TRUE jika berhasil

Contoh

#include <stdio.h>
#include <windows.h>

int main() {
    HANDLE hConsole;
    /* Get standard output handle */
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    /*Set console text attribute */
    SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
    printf("Wow, keren...\n");
    SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
    printf("Wow, keren...\n");
    SetConsoleTextAttribute(hConsole, FOREGROUND_RED | BACKGROUND_BLUE);
    printf("Wow, keren...\n");

    return 0;
}


Hasil

Read more

Rabu, 20 Mei 2015

Membuat Program Anti Kill dengan C


Dulu, saya sering bereksperimen membuat virus yang ganas. Tapi walaupun sering kali saya mencoba, tetap saja virus saya tak pernah lebih hebat dari Sality ataupun Conficker :3
Menurut saya, virus yang baik itu harus bisa bekerja diam-diam(tanpa ketahuan antivirus). Setelah itu, virus harus mampu menduplikasi dirinya dengan baik. Bukan hanya itu, sih. Tapi, yang terpenting, virus harus mampu bertahan lebih baik dari program biasa.
Salah satu kemampuan virus yang sudah lama saya pelajari adalah kemampuan anti kill(tidak bisa dihentikan dari task manager) yang biasanya justru dimiliki oleh antivirus, misalnya seperti pada antivirus avast dan eset.

Saya penasaran bagaimana membuat virus kebal dari task manager. Akhirnya setelah lama sekali melakukan penelusuran, saya temukan caranya.
Saya yakin, belum banyak yang mengetahui cara ini, jadi mohon untuk berjanji, agar tidak disalah gunakan yaa. Saya tahu, tidak semuanya mendengarkan. Tapi setidaknya saya sudah mengingatkan!

Sabar, sebelum mencobanya, saya akan sedikit menjelaskan kekurangan dari kode ini. Pertama, kode ini hanya bisa di kompilasi dengan software IDE Pelles C. Kedua, kadang-kadang anti kill tidak bekerja di beberapa komputer. Saya pernah mencoba menjalankan program di laptop saya sendiri, anti kill bekerja dengan baik. Namun saat saya coba eksekusi di komputer kampus, saat di kill program terlihat tak berkutik. Seperti inilah program antikill kebal :D

 Ingat, janji jangan disalahgunakan. Saya niatkan untuk share dan belajar saja..
https://app.box.com/s/kkw9lj1ozmnrs2bcp01ej5keebr1t87g
Read more

Mengetahui Posisi Kursor dengan Windows API [C Programming]


Sekali lagi, semangat ngoding saya kembali menurun. Saya jadi bingung judul apa lagi yang bisa saya bagikan di blog ini. Karena tidak banyak melakukan aktivitas koding, tidak ada hal baru yang bisa saya share. Tiba-tiba saya dapat pencerahan, hal lama yang telah saya pelajari kan belum tentu sudah dipelajari oleh orang lain. :D
Jadi, saya memutuskan untuk menulis tutorial pemrograman untuk mengetahui posisi kursor di Windows. Tentu saja dengan bahasa pemrograman favorit saya, C. ;)
Fungsi API yang kita gunakan adalah GetCursorPos(). Fungsi ini tersimpan dalam library user32.dll. Untuk menggunakan fungsi ini di dalam lingkungan bahasa pemrograman C, kita cukup meng-include header windows.h. Dengan meng-include header ini, secara otomatis, header user32.h juga akan di-include dalam kode. Dalam user32.h inilah seluruh definisi fungsi yang kita butuhkan berada. Saat menulis kode, secara tidak sengaja saya juga teringat fungsi Sleep(). Mungkin fungsi ini akan berguna bagi sobat suatu saat nanti. :D

Prototype GetCursorPos() adalah sebagai berikut.

BOOL WINAPI GetCursorPos(LPPOINT lpPoint);

lpPoint : Pointer ke struktur POINT. Struktur ini biasa digunakan untuk menentukan koordinat.
Return : Fungsi ini mengembalikan nilai TRUE jika berhasil, begitu pula sebaliknya.



Adapun bentuk struktur POINT adalah sebagai berikut.

typedef struct tagPOINT {
  LONG x;
  LONG y;
} POINT;

Contoh

#include <stdio.h>
#include <windows.h>

int main(int argc, char**argv[])
{
    POINT p;
    while(1)
    {
        GetCursorPos(&p);
        printf("Posisi kursor saat ini adalah x:%4d dan y:%4d\n", p.x, p.y);
        Sleep(1000);
        system("cls");

    }
    return 0;
}

Contoh di atas juga menggunakan fungsi Sleep(). Fungsi ini digunakan untuk melakukan pause/sleep/penundaan selama beberapa milidetik. Alasan saya memakai fungsi ini adalah untuk mengurangi frekuensi pemanggilan GetCursorPos(). Fungsi ini berasal dari kernel32.dll, jadi jika agan mencobanya di sistem operasi lain, gak bisa ya. Prototypenya adalah sebagai berikut.

VOID WINAPI Sleep(DWORD dwMilliseconds);

dwMilliseconds: Waktu untuk menghentian pause thread dalam satuan milidetik. Jadi untuk melalakukan pause selama 1 detik, kita menggunakan nilai 1000 sebagai argumennya.

Sekian sedikit tulisn dari saya, semoga bermanfaat. Happy coding :)

Hasil
 
Read more