Archive for 2013-12-22
Menghitung Jumlah Deret Fibonacci Ke-N dengan Javascript
Postingan kali ini sedikit banyaknya terinspirasi dari postingan Saudara Ulil Amri mengenai Algoritma Bilangan Prima. Kalo postingan tersebut bercerita tentang soal yang ditemukan beliau sebagai pengawas, postingan yang ini akan lebih bercerita mengenai soal yang saya temukan sebagai praktikan yang mau tak mau, rela tak rela harus berhasil memecahkan soal tersebut.
Soal yang saya dapatkan sederhana saja "Buatlah dengan javascript, masukkan angka ke dalam textbox untuk n, ketika di klik button "Proses" maka akan muncul jumlah deret fibonacci ke-n tersebut."
Deret Fibonacci adalah barisan bilangan yang suku setelahnya merupakan hasil jumlah dua suku sebelumnya, yang biasanya suku awalnya dimulai dengan 0 dan 1.
Untuk membuat script program ini saya sempat browsing untuk mencari pencerahan dan akhirnya menemukan pencerahan untuk algoritmanya dari sebuah sumber yang saya lupa dimana. Dengan sedikit memodifikasi algoritma tersebut dan mengubahnya menjadi kode javascript, beginilah sintaksnya:
Dengan script tersebut, saya mencoba memasukkan nilai n-nya 10 maka muncul hasilnya 88, lalu untuk n= 115 muncul hasil 7.817740794309875e+23 (yang awalnya saya sempat mengira kalo scriptnya error, tapi ternyata memang notasi kalkulatornya seperti ini yang artinya 7.817740794309875 x 10^23).
Demikian sedikit sharing ilmu saya pada postingan kali ini mengenai javascript untuk program sederhana. Semoga bermanfaat, kritik dan saran sangat diterima. :)
Soal yang saya dapatkan sederhana saja "Buatlah dengan javascript, masukkan angka ke dalam textbox untuk n, ketika di klik button "Proses" maka akan muncul jumlah deret fibonacci ke-n tersebut."
Deret Fibonacci adalah barisan bilangan yang suku setelahnya merupakan hasil jumlah dua suku sebelumnya, yang biasanya suku awalnya dimulai dengan 0 dan 1.
Untuk membuat script program ini saya sempat browsing untuk mencari pencerahan dan akhirnya menemukan pencerahan untuk algoritmanya dari sebuah sumber yang saya lupa dimana. Dengan sedikit memodifikasi algoritma tersebut dan mengubahnya menjadi kode javascript, beginilah sintaksnya:
Dengan script tersebut, saya mencoba memasukkan nilai n-nya 10 maka muncul hasilnya 88, lalu untuk n= 115 muncul hasil 7.817740794309875e+23 (yang awalnya saya sempat mengira kalo scriptnya error, tapi ternyata memang notasi kalkulatornya seperti ini yang artinya 7.817740794309875 x 10^23).
Demikian sedikit sharing ilmu saya pada postingan kali ini mengenai javascript untuk program sederhana. Semoga bermanfaat, kritik dan saran sangat diterima. :)
Mengapa harus menulis captcha ?
Saat nggak ada CAPTCHA, spammer/hacker sanggup ngebuat program yg secara otomatis ngisi formulir, seperti ndaftar email gratis, sehingga ia akan mempunyai ribuan alamat email dg mudah agar kemudian disalahgunakan. Atau ditujukan mengubah sebuah hasil akhir polling online, dg cara membuat program sederhana pengisi polling tersebut dg jawaban yg diinginkan sebanyak ribuan atau bahkan jutaan kali. Akibatnya polling itu menjadi tidak valid. Disinilah CAPTCHA sangat berperan penting untuk memastikan bukan komputer yg mengisi formulir-formulir online, melainkan seorang manusia, karena komputer tidak akan bisa membaca huruf-huruf bengkok, bertumpuk, saling menyambung.
CAPTCHA terbentuk secara otomatis secara acak tiap kali ada orang yg masuk halaman formulir web, jadi hampir nggak ada dua CAPTCHA yg serupa. Sehingga jumlah kombinasi yg muncul suangat-suangat buanyak, dan hampir nggak mungkin untuk ngebuat program yg mampu mengingat & menjawab CAPTCHA yg akan muncul. Untuk yg cacat mata juga ada CAPTCHA versi audio, dg prinsip yg kurang lebih sama.
Penggunaan CAPTCHA sekarang jauh lebih luas, nggak hanya untuk formulir web, tapi juga untuk menyelamatkan arsip-arsip penting di dunia, dg cara mengubah format arsip yg sudah ada (buku, dokumen tercetak) ke format digital (file komputer). Dua kendala utama yg muncul : banyaknya jumlah arsip yg tersimpan selama ratusan tahun, serta kualitas cetakan yg buruk sehingga hasil scan-nya sukar dikenali oleh komputer. Dengan gabungan kedua kendala itu, hampir mustahil membayar tenaga manusia untuk membaca secara manual arsip yg gagal dibaca komputer. Karena itulah muncullah re-CAPTCHA, sebuah sistem yg bekerja sama dg Google Books dan The Internet Archive, dimana hasil scan arsip yg gagal dibaca komputer dimunculkan sebagai CAPTCHA, lalu hasil isian itu dianggap sebagai teks yg hilang/tak terbaca. Agar yakin teks itu benar, biasanya tidak hanya satu jawaban yg dipakai, melainkan hingga sepuluh/ lebih jawaban yg sama.
Ini menjadi solusi win-win bagi semua pihak. Bagi pemilik web dengan formulir, ia mendapat CAPTCHA yg sudah tidak bisa dikenali oleh komputer super canggih yg dipakai untuk proses digitalisasi arsip, sehingga hacker juga kesulitan membuat program yg mampu membacanya. Dan bagi pihak pengubah format arsip, dg begitu banyaknya formulir yg diisi diseluruh dunia tiap harinya, re-CAPTCHA dapat membantu digitalisasi arsip dg cepat & gratis.
Jadi saat ngisi formulir di website yg bekerja sama dengan re-CAPTCHA, Anda sudah turut membantu menyelamatkan arsip dunia bagi anak cucu kita semua nanti. Sayangnya setelah diimplementasikan sekian tahun, sistem CAPTCHA sudah mulai menunjukkan beberapa kelemahan. Perkembangan hardware & software membuatnya tidak lagi terlalu sukar untuk dipecahkan oleh program. Apalagi kini muncul perusahaan-perusahaan atau layanan decaptcher di dunia ketiga yang bersedia memecahkan CAPTCHA dengan biaya yang sangat murah. DeCaptcher.com bersedia memecahkan CAPTCHA dengan hanya US$2 per 1000 CAPTCHA. Untuk mengatasinya, saat ini beberapa pihak seperti Universitas Carnegie Mellon dan Penn State sedang mengembangkan CAPTCHA yang berbasis gambar, bukan lagi huruf.
Penjelasan ReCaptcha menurut Google sbb,
- reCAPTCHA adalah sebuah fasilitas internet yang membantu untuk mendigitalkan buku-buku, surat kabar maupun siaran radio lawas..berupa 'teks tedistorsi' dimana kita harus mengetik teks tersebut untuk menjalankan perintah.
- Sebuah CAPTCHA adalah program yang dapat memberitahu apakah user adalah seorang 'manusia asli' atau 'script komputer yang sudah diprogram'.
- CAPTCHA digunakan banyak website untuk mencegah penyalahgunaan dari "bot" atau program otomatis yang biasanya ditulis untuk menghasilkan pesan-pesan spam pada internet.
- Tidak ada program komputer yang dapat membaca teks terdistorsi sebaik mata manusia, sehingga bot tidak akan dapat menavigasi situs yang dilindungi oleh CAPTCHA
Dari sini diketahui bahwa salah satu fungsi reCAPTCHA : untuk mendigitalisasikan buku-buku pengetahuan bersejarah yg diterbitkan sebelum adanya komputer..
referensi
http://bisnisonline247.blogspot.com/2013/04/apa-itu-captcha-mengapa-harus-ngetik.html
http://t2.gstatic.com/images?q=tbn:ANd9GcQ-f8PUpts81oAzkFBoGs5k1QfpXjJpah56Jfd2GDBFFrgv9oJ5
http://bisnisonline247.blogspot.com/2013/04/apa-itu-captcha-mengapa-harus-ngetik.html
http://t2.gstatic.com/images?q=tbn:ANd9GcQ-f8PUpts81oAzkFBoGs5k1QfpXjJpah56Jfd2GDBFFrgv9oJ5
Perkembangan teknologi informasi di penghujung 2013
Tak terasa tahun 2013 sebentar lagi akan meninggalkan kita
semua, dunia serasa terlalu cepat berputar, untuk itu pada postingan kali ini,
saya akan mereview apa-apa saja kejadian yang berhubungan dengan teknologi
informasi selama tahun 2013 ini. Berikut beberapa kejadian dipenghujung tahun 2013
1.
Lahirnya android kitkat
Setelah android jelly bean sekarang muncul android yang bernama kitkat,
android kitkat menawarkan system operasi
yang lebih ringan dari yang sebelumnya dan fitur yang lebih menarik tentunya.
2.
Nokia diakuisisi oleh Microsoft
Setelah nokia tak mampu bersaing dengan OS andalannya yaitu windows
phone, akhirnya nokia dibeli oleh Microsoft. Tipe smartphone nokia lumia tidak
mampu bersaing denghan android dan ios, ia hanya terletak di deretan bawah
bersama dengan Blackberry.
3.
Peluncuran aplikasi BBM for android dan ios
Sempat peluncuran menjadi perbincangan hangat, akhirnya blackberry
meluncurkan BBM for android and ios. Blacberry berpendapat dengan meluncurkan
BBM multi platform akan menjadi keuntungan bagi perusahaan disaat smartphone blackberry
kalah saing dengan smartphone androis dan iphone.
4.
Winamp is dead
Setelah
sekaian tahun menghiasi desktop komputer akhirnya winamp memutuskan untuk
berhenti mengeluarkan update-annya. Winamp saat ini juga kalah bersaing dengan
media player lain yang menawarkan fitur lebih baik.
Instalasi Database (PostgreSQL dan PostGIS) PART II (END)
PostGIS
PostGIS merupakan
ekstensi dari PostgreSQL. PostGIS dapat digunakan untuk menangani
dan memproses data geografis. PostGIS dapat dianggap sebagai kumpulan fungsi basis data yang
memperluas kemampuan asli dari PostgreSQL
sehingga dapat menangani data spasial. Kata ‘menangani’, maksudnya adalah
menyimpan, mengambil, queri dan memanipulasi.
Hal
penting yang perlu diingat sebelum mengintall PostGIS adalah PostGIS
dinstall setelah PostgreSQL dinstall.
Adapun langkah-langkah untuk menginstall
PostGIS adalah sebagai berikut :
1.
Jalankan installer
PostGIS.
2.
Setelah installer
dijalankan akan muncul jendela berikut :
3.
Pilih I Agree.
4.
Berikut akan tampil jendela pemilihan komponen atau fitur
PostGIS yang akan diinstall, pilih create spatial db dan Next.
5.
Lalu akan muncul jendela untuk lokasi penginstallan PostGIS. Penginstallan PostGIS ini adalah untuk mendukung
kinerja PostgreSQL, maka lokasi
penginstallan pilih di directory PostgreSQL.
6.
Setelah pemilihan lokasi installasi, lengkapi koneksi
database (PostgreSQL). Masukkan saja
assword yang digunakan pada PostgreSQL
sebelumnya. Untuk username dan port
pada konesi ke database, biarkan saja dengan value : postgres dan 5432.
7.
Lalu Next, dan tunggu proses installasi
selesai.
8.
Jika sudah selesai, click Finish.
Algoritma - Sisipan (Insertion)
Contoh Menyisip |
Pada kesempatan kali ini saya ingin membagikan cerita mengenai Algoritma Sisipan. Jadi disini saya membagikan pandangan dan pemahaman saya tentang algoritma ini. Jadi ceritanya ini algoritma yang bakal kita gunakan untuk mengurutkan data dari kecil kebesar namun tidak menggunakan Sorting. Gak tau kenapa, saya kurang suka pake Sorting. Agak ribet dan gak santai. Hahahaha...
Jadi konsepnya begini, ketika sebuah nilai dimasukkan ke dalam array, maka akan di cek dimana posisi dari nilai tersebut seharusnya akan diletakan. Setelah posisi dari nilai tersebut di temukan, maka program akan menggeser nilai-nilai berikutnya agar ada tempat untuk nilai yang baru tanpa adanya data yang hilang. Syarat bisa terjadinya sisipan ini adalah nilai harus terurut, karena dengan terurutnya data, akan mudah kita menemukan tempat untuk menyisip. Jadi konsep sisipan ini digunakan untuk melakukan pengurutan (Lebih tepatnya mungkin :D).
Agar dapat sedikit gambaran, silahkan lihat ilustrasi berikut:
Pertama-tama array telah diisi seperti diatas. Kemudian datang nilai baru yaitu 9. Maka 9 akan mencari tempat nilai ini seharusnya diletakkan.
Nilai 9 telah menemukan posisi dia seharusnya, sehingga nilai-nilai setelahnya harus digeser kebawah agar ada ruang untuk nilai 9.
Nilai-nilai telah digeser sehingga nilai 9 bisa masuk tanpa merusak nilai yang telah ada.
Nilai 9 telah masuk kedalam array.
Adapun algoritma yang saya gunakan untuk melakukan aktivitas diatas adalah sebagai berikut
Asumsi:
a[100];
na=jumlah data dalam array;
x=data baru;
//insert
j = na;
while (i < j)
{
if (a[i] < x)
{
i++;
}
else
{
while (j > i)
{
a[j] = a[j-1];
j--;
}
}
}
a[i] = x;
na = na + 1;
Deklarasi "j = na;" berguna untuk menjaga nilai na agar tidak berubah dalam proses perulangan karena na berfungsi untuk menghitung jumlah data yang ada dalam array. Perulangan "while (i < j)" digunakan untuk melakukan pengecekan dari i hingga j untuk menemukan posisi dari x. Apabila nilai a[i] < x maka nilai i ditambah 1 menggunakan statement "i++;" agar pencarian posisi bergerak ke indeks berikutnya. Namun jika ditemukan a[i] >= x itu berarti bahwa x telah menemukan posisi seharusnya. Sehingga dari posisi tersebut hingga posisi ke j harus digeser. Agar data tersebut bisa bergeser maka dilakukan perulangan "while (j > i)" agar dari indeks terakhir hingga nilai i sebagai posisi x akan di geser menggunakan statement " a[j] = a[j-1];". Setelah penggeseran selesai, maka nilai i dan j akan sama, sehingga mengindikasikan bahwa perulangan "while (i < j)" tidak akan dilanjutkan dan dilanjutkan pada statement a[i] = x;" yang berarti nilai array dengan indeks i adalah x karena i saat ini adalah posisi yang seharusnya bagi nilai x. Dan setelah pemasukkan nilai x ke dalam array dengan indeks i maka nilai dari na telah bertambah 1. Agar penambahan nilai tersebut dapat terjadi kita gunakan statement "na = na + 1;".
Saya rasa cukup penjelasan mengenai algoritma pengurutan menggunakan metode sisipan. Apabila pengurutan dari besar ke kecil, teman-teman tinggal mengganti tanda < menjadi > pada bagian "if (a[i] < x)" menjadi "if (a[i] > x)".
Apabila ada salah kata dan penulisan saya mohon maaf. :D