-->

K.E ^_~ Yang lagi galau ini penawarnya link

Menguak rahasia rancang bangun tts online (study kasus eclipsecrossword)



Semakin hari rasa penasaran saya dengan teka teki silang online semakin bertambah, bukan pada jawaban atau isi dari tts-nya. Namun lebih pada kerangka dan logika pemrogramannya. Sebuah TTS online yang dibangun menggunakan software eclipsecrossword misalnya, ternyata menyimpan sebuah kecerdasan buatan yang cukup menakjubkan buat saya. Jika kita mau meninjau ke dalam script hasil generate dari software ini, maka kita akan menemukan sekumpulan fungsi dalam javascript yang mampu membaca parameter di atasnya, untuk dijadikan acuan membangun kerangka tabel html.


for (var y = 0; y < CrosswordHeight; y++)
 {
  document.writeln("");
  for (var x = 0; x < CrosswordWidth; x++)
  {
   if (TableAcrossWord[x][y] >= 0 || TableDownWord[x][y] >= 0)
    document.write("
"); else document.write(""); } document.writeln(""); }


Script tersebut akan membuat baris dan kolom dalam bentuk tabel, dimana jumlah baris dan kolom tersebut didapat dari hasil pembacaan parameter yang ada di atasnya.

Bukan hanya itu, javascript di dalamnya juga telah dilengkapi dengan kemampuan mendeteksi kesalahan yang dilakukan user. Sebuah kemampuan yang akan bekerja jika user memasukkan jawaban terlalu banyak, terlalu sedikit, memasukkan karakter yang ada dalam daftar blacklist bahkan jika user tidak memasukkan jawaban sama sekali script ini akan mengeluarkan peringatan sesuai dengan kesalahan yang berhasil dideteksi.


// If errors were found, just exit now.
 if (ErrorsFound > 0 && EmptyFound > 0)
  document.getElementById("welcomemessage").innerHTML = ErrorsFound + (ErrorsFound > 1 ? " errors" : " error") + " and " + EmptyFound + (EmptyFound > 1 ? " incomplete words were" : " incomplete word was") + " found.";
 else if (ErrorsFound > 0)
  document.getElementById("welcomemessage").innerHTML = ErrorsFound + (ErrorsFound > 1 ? " errors were" : " error was") + " found.";
 else if (EmptyFound > 0)
  document.getElementById("welcomemessage").innerHTML = "No errors were found, but " + EmptyFound + (EmptyFound > 1 ? " incomplete words were" : " incomplete word was") + " found.";
 
 if (ErrorsFound + EmptyFound > 0)
 {
  document.getElementById("welcomemessage").style.display = "";
  return;
 }
   



Namun yang membuat saya lebih tercengang adalah fitur enkripsi dari script ini. WHY ?

Untuk bahasa scripting yang sifatnya user side (diolah di sisi user) seperti javascript, merupakan hal yang sangat mudah untuk melihat source code secara langsung. Dampaknya dalam sistem tts online adalah kunci jawaban yang ada dalam tts akan sangat mudah dilihat oleh siapapun. Namun inilah salah satu kehebatan eclipsecrossword, dengan menggunakan metode charCodeAt(); yang ada pada javascript dia menciptakan sebuah hash untuk tiap kunci jawaban. Ketika user memasukkan jawaban dan menekan tombol "cek jawaban" script ini akan membuatkan hash code dari input jawaban user ini. Kemudian hash code dari user akan dicocokkan dengan hash code dari kunci jawaban yang ada. Hasilnya bisa anda tebak sendiri :D

Berikut potongan metode enkripsi dari eclipsecrossword

// Returns a one-way hash for a word.
function HashWord(Word)
{
 var x = (Word.charCodeAt(0) * 719) % 1138;
 var Hash = 837;
 var i;
 for (i = 1; i <= Word.length; i++)
  Hash = (Hash * i + 5 + (Word.charCodeAt(i - 1) - 64) * x) % 98503;
 return Hash;
}



Meskipun begitu saya gak bilang tts yang diciptakan menggunakan eclisecrossword tidak bisa dilihat kunci jawabannya sama sekali. Istilah obat dari penyakit ada pada penyakit itu sendiri mungkin berlaku bagi kode enkripsi di atas. . gimana caranya? cari tahu sendiri :P

comment 0 komentar:

Posting Komentar

Catatan:
Seluruh komentar yang masuk akan dimoderasi terlebih dahulu. Komentar yang berbau spam, kasar, menghina, seluruhnya yang bersifat menghancurkan bukan membangun tidak akan ditampilkan. Silahkan bertanya dan memberi pendapat dengan sopan dan sesuai aturan.

Anda diperbolehkan mempublikasikan ulang artikel ini, dengan syarat:
1. Mintalah izin dengan cara berkomentar di bawah artikel ini
2. Wajib menyertakan link ke artikel ini dan menyertakan nama penulis

 
© Klikedukasi 2008 - 2013 | Design by Panembahan Satyapradana | 170p3x