Tower of Hanoi


Tower Of Hanoi, Sebuah Teka-teki terkenal dari abad 19.

Tower of Hanoi. Salah satu puzzle yang unik karena memiliki berbagai macam variasi yang membutuhkan penyelesaian yang berbeda untuk tiap variasinya.Tower of Hanoi ini memiliki asal muasal yang unik karena berasal dari sebuah legenda di India.

Teka-teki ini ditemukan Édouard Lucas ahli matematika Perancis di tahun 1883. Ada sebuah legenda tentang candi Indian yang berisi ruang besar dengan tiga tiang yang dikelilingi 64 cakram emas. Pendeta Brahma, melaksanakan tugas dari peramal di masa lalu, sesuai dengan aturan teka-teki ini. Menurut legenda ini, bila teka-teki ini diselesaikan, dunia akan kiamat. Tidak jelas benar apakah Lucas menemukan legenda ini atau terinspirasi olehnya.  

Teka-teki ini cukup dikenal oleh para mahasiswa Ilmu Komputer karena sering muncul pada pengenalan struktur data dan algoritma.

Tujuan dari teka-teki ini adalah untuk memindahkan seluruh tumpukan ke tiang yang lain, mengikuti aturan berikut :

  1. Hanya satu cakram yang boleh dipindahkan dalam satu waktu.  
  2. Setiap perpindahan berupa pengambilan cakram teratas dari satu tiang dan memasukkannya ke tiang lain, di atas cakram lain yang mungkin sudah ada di tiang tersebut. 
  3. Tidak boleh meletakkan cakram di atas cakram lain yang lebih kecil.

Tower of Hanoi sering digunakan dalam riset psikologi dalam pemecahan masalah. Terdapat pula variasi dari Tower of Hanoi, yaitu Tower of London untuk diagnose neuropsikologi dan pengerjaan fungsi eksklusif.
Tower of Hanoi juga sering dipakai dalam skema Backup Rotation ketika membuat penggandaan data komputer dimana banyak tape/ media penyimpanan termasuk didalamnya.
Tower of Hanoi dapat dipakai untuk melatih kreativitas anak-anak dalam masa pertumbuhan. Selain itu, Tower of Hanoi juga sering diimplementasikan dalam proses pengajaran algoritma rekursif dasar. Tower of Hanoi juga digunakan untuk tes memory oleh para neuropsikolog untuk mengevaluasi amnesia.

Tentang Java, bukannya Jawa.... (^_^)

Apa itu Java ?

Java jika diartikan dalam Bahasa Indonesia berarti Jawa, salah satu pulau besar di Indonesia. upsss...salah.....maksud Java di sini adalah sebuah bahasa pemrograman yang berorientasi objek, sebuah teknologi yang diperkenalkan oleh Sun Microsystems pada pertengahan tahun 1990.
Menurut definisi Sun, Java adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perangkat lunak pada komputer stand alone ataupun pada lingkungan jaringan. dari definisi tersebut berarti Java  selain sebagai sebuah bahasa pemrograman Java dapat juga disebut sebagai sebuah teknologi.

Teknologi Java terdiri dari 3 komponen penting yaitu :
1. Programming Language Specification.
2. Application Programming Interface
3. Virtuual Machine Specification

Bahasa Pemrograman Java

Bahasa Java dapat di kelompokan sebagai sebuah bahasa yang berorientasi objek, ojek Java di spesifikasikan dengan membentuk class. Untuk masing-masing class Java, kompiler Java memproduksi sebuah file keluaran arsitektur netral yang akan jalan pada berbagai implementasi dari Java Virtual Machine (JVM). Java juga menyediakan dukungan level tinggi untuk networking dan objek terdistribusi.
Java juga dianggap sebagai sebuah bahasa yang aman. Tampilan ini pada khususnya penting menganggap bahwa sebuah program Java boleh mengeksekusi silang sebuah jaringan terdistribusi. 

Tetapi program yang dibuat dalam bahasa Java juga relatif lebih banyak membutuhkan waktu saat di eksekusi (lebih lama) dikarenakan untuk menjalankan programnya dibutuhkan JVM (perantara antar program dan sistem operasi).


JAVA API

Java API terdiri dari tiga bagian utama :

1. Java Standard Edition (SE)             : 
Sebuah standar API untuk merancang aplikasi desktop dan applets dengan bahasa dasar yang mendukung grafis, M/K, keamanan, konektivitas basis data dan jaringan.



2. Java Enterprose Edition (EE)         :   Sebuah inisiatif API untuk merancang aplikasi server dengan mendukung untuk basis data.

3. Java Macro Edition (ME)                  :  
Sebuah API untuk merancang aplikasi yang jalan pada alat kecil seperti telepon genggam, komputer genggam dan pager.




Fitur menarik Java API 

Beberapa fitur yang ditawarkan Java API antara lain sebagai berikut :
a. Applet
Program Java yang dapat berjalan di atas browser, yang dapat membuat halaman HTML lebih dinamis dan menarik.
b. Java Networking
Sekumpulan API (Application Programming Interface) yang menyediakan fungsi – fungsi untuk aplikasi – aplikasi jaringan, seperti penyediaan akses untuk TCP, UDP, IP Adrress dan URL. Tetapi Java Networking tidak menyediakan akses untuk ICMP dikarenakan alasan sekuriti dan pada kondisi umum hanya administrator ( root ) yang bisa memanfaatkan protokol ICMP.
c. Java Database Connectivity (JDBC)
JDBC menyediakan sekumpulan API yang dapat digunakan untuk mengakses database seperti Oracle, MySQL, PostgreSQL, Microsoft SQL Server.
d. Java Security
Java Security menyediakan sekumpulan API untuk mengatur security dari aplikasi Java baik secara high level atau low level, seperti public/private key management dan certificates.
e. Java Swing
Java Swing menyediakan sekumpulan API untuk membangun aplikasi – aplikasi GUI (Graphical User Interface) dan model GUI yang diinginkan bisa bermacam – macam, bisa model Java, model Motif/CDE atau model yang dependent terhadap platform yang digunakan.
f. Java RMI
Java RMI menyediakan sekumpulan API untuk membangun aplikasi – aplikasi Java yang mirip dengan model RPC (Remote 4 Procedure Call) jadi object - object Java bisa di call secara remote pada jaringan komputer.
g. Java 2D/3D
Java 2D/3D menyediakan sekumpulan API untuk membangun grafik – grafik 2D/3D yang menarik dan juga akses ke printer.
h. Java Server Pages
Berkembang dari Java Servlet yang digunakan untuk menggantikan aplikasi – aplikasi CGI, JSP (Java Server Pages) yang mirip ASP dan PHP merupakan alternatif terbaik untuk solusi aplikasi Internet.
i. JNI (Java Native Interface)
JNI menyediakan sekumpulan API yang digunakan untuk mengakses fungsi – fungsi pada library (*.dll atau *.so) yang dibuat dengan bahasa pemrograman yang lain seperti C,C++, dan Basic.
j. Java Sound
Java Sound menyediakan sekumpulan API untuk manipulasi sound.
k. Java IDL + CORBA
Java IDL (Interface Definition Language) menyediakan dukungan Java untuk implementasi CORBA (Common Object Request Broker) yang merupakan model distributed-Object untuk solusi aplikasi besar di dunia networking.
l. Java Card
Java Card utamanya digunakan untuk aplikasi – aplikasi pada smart card, yang sederhana wujudnya seperti SIM Card pada handphone.
m. JTAPI (Java Telephony API)
Java Telepony API menyediakan sekumpulan API untuk memanfaatkan devices – devices telepony, sehingga akan cocok untuk aplikasi – aplikasi CTI (Computer Telephony Integration) yang dibutuhkan seperti ACD (Automatic Call Distribution), PCPBX dan lainnya.


Java Virtual Machine (JVM)



Mesin Virtual Java atau Java Virtual Machine (JVM) terdiri dari sebuah class loader dan Java interpreter yang mengeksekusi architecture-neutral bytecode. Java interpreter merupakan suatu fasilitas penerjemah dalam JVM. Fungsi utamanya adalah untuk membaca isi berkas bytecode (.class) yang dibuat kompilator Java saat berkas berada dalam memori, kemudian menerjemahkannya menjadi bahasa mesin lokal. Java interpreter dapat berupa perangkat lunak yang menginterpretasikan bytecode setiap waktu, atau hanya Just-In-Time (JIT), yang mengubah architecture-neutral bytecode menjadi bahasa mesin lokal. Interpreter bisa juga diimplementasikan pada sebuah chip perangkat keras. Instance dari JVM dibentuk ketika aplikasi Java atau applet dijalankan. JVM mulai berjalan saat method main() dipanggil.
Meski sistem program berada di level tertinggi, program aplikasi bisa melihat segala sesuatu di bawahnya (pada tingkatan) seakan mereka adalah bagian dari mesin. Pendekatan dengan lapisan-lapisan inilahyang diambil sebagai kesimpulan logis pada konsep mesin virtual atau virtual machine (VM). Pendekatan VM menyediakan sebuah antarmuka yang identik dengan underlying bare hardware . VM dibuat dengan pembagian sumber daya oleh physical computer. VM perangkat lunak membutuhkan ruang pada disk untuk menyediakan memori virtual dan spooling sehingga perlu ada disk virtual.
Pada applet, JVM menciptakan method main() sebelum membuat applet itu sendiri. Java Development Environment terdiri dari sebuah Compile-Time Environment dan Runtime Environment. Compile berfungsi mengubah sourcecode Java menjadi bytecode, sedangkan Runtime merupakan Java Platform untuk sistem Host.
Meski sangat berguna, VM sulit untuk diimplementasikan. Banyak hal yang dibutuhkan untuk menyediakan duplikat yang tepat dari underlying machine. VM dapat dieksekusi pada only user mode sehingga kita harus mempunyai virtual user mode sekaligus virtual memory mode yang keduanya berjalan di physical user mode. Ketika instruksi yang hanya membutuhkan virtual user mode dijalankan, ia akan mengubah isi register yang berefek pada virtual monitor mode sehingga dapat memulai ulang VM tersebut. Sebuah instruksi M/K yang membutuh waktu 100 ms, dengan menggunakan VM bisa dieksekusi lebih cepat karena spooling atau lebih lambat karena interpreter. Terlebih lagi, CPU menjadi multiprogrammed diantara banyak VM. Jika setiap user diberi 1 VM, dia akan bebas menjalankan sistem operasi (kernel) yang diinginkan pada VM tersebut.
Selain kekurangan yang telah disebutkan diatas, jelas VM memiliki kelebihan-kelebihan, yaitu: Keamanan yang terjamin karena VM mempunyai perlindungan lengkap pada berbagai sistem sumber daya, tidak ada pembagian resources secara langsung. Pembagian disk mini dan jaringan diimplementasikan dalam perangkat lunak. Sistem VM adalah kendaraanyang sempurna untuk penelitian dan pengembangan Sistem Operasi. Dengan VM, perubahan satu bagian dari mesin dijamin tidak akan mengubah komponen lainnya.
Mesin Virtual Java atau Java Virtual Machine (JVM) terdiri dari sebuah kelas loader dan java interpreter yang mengeksekusi the architecture-neutral bytecodes. Java interpreter bisa berupa perangkat lunak yang menginterpretasikan kode byte setiap waktu atau hanya Just-In-Time (JIT) yang mengubah architecture-neutral bytecodes menjadi bahasa mesin lokal. Interpreter bisa juga diimplementasikan pada sebuah chip perangkat keras. Instance dari JVM dibentuk ketika aplikasijava atau applet dijalankan. JVM mulai berjalan saat method main dipanggil. Pada applet, JVM menciptakan method main sebelum membuat applet itu sendiri.
Java Development Environment terdiri dari sebuah Compile Time Environment dan RunTime Environment. Compile berfungsi mengubah java sourcecode menjadi kode byte. Sedangkan RunTime merupakan Java Platform untuk sistem Host.

Mengganti .blogspot ke .co.cc

Blog gratisan belum tentu tidak bermutu. biasanya jika kita membuat blog gratis di blogger kita akan mendapat nama blog secara default yaitu namablog.blogspot.com.
Kita dapat merubah nama domain blog yang lebih bagus, salah satu pelayanan penyedia domain yaitu co.cc menyediakan layanan domain gratis, jadi nantinya alamat blog kita menjadi http://namablog.co.cc. Tertarik...???

Berikut cara pembuatannya :

1. Buka web co.cc
2. Kemudian daftar di co.cc
3. Setelah itu check nama domain yang kamu inginkan di kotak yang tersedia dan klik check availabity

4. Pastikan domain registrasi $0, agar domain tersebut benar-benar gratis.


5. Setelah dapatkan nama domain, selanjutnya masuk menu domain setting >> manage domain >> klik setup
6. Abaikan menu 1 dan 2, masuk ke menu 3 kemudian isi redirect to (url) dengan alamat blog anda, isi page tittle dengan tittle yang anda inginkan, frame nya di hide aja agar alamat awal anda tidak terlihat.

7. Klik Set Up dan alamat baru anda siap untuk digunakan.

Cara ini tidak hanya digunakan untuk blog saja tapi juga untuk alamat web lainnya jika kita menggunakan hosting yang gratis. bila masa periodenya sudah berakhir selama 1 tahun, alamat asalnya tidak akan hilang.

Selamat Mencoba...!!!


Domain Name Space ??

DNS SERVER

DNS adalah suatu bentuk database yang terdistribusi, dimana pengelolaan secara lokal terhadap suatu data akan segera diteruskan ke seluruh jaringan (internet) dengan menggunakan skema clientserver. Suatu program yang dinamakan name server, mengandung semua segmen informasi dari database dan juga merupakan resolver bagi clientclient yang berhubungan ataupun menggunakannya. Struktur dari database DNS bisa diibaratkan dengan struktur file dari sebuah system operasi UNIX. Seluruh database digambarkan sebagai sebuah struktur terbalik dari sebuah pohon (tree) dimana pada puncaknya disebut dengan root node. Pada setiap node dalam tree tersebut mempunyai keterangan (label) misalnya, .org, .com, .edu, .net, .id dan lainlainnya,yang relative rerhadap puncaknya (parent). Ini bisa diibaratkan dengan relative pathname pada sistem file UNIX,seperti direktori bin, usr, var, etc dan lain sebagainya. Pada puncak root node dalam sebuah sistem DNS dinotasikan dengan "." atau "/" pada sistem file UNIX.


 
Pada setiap node juga merupakan root dari subtree, atau pada sistem file UNIX merupakan root direktori dari sebuah direktori. Hal ini pada sistem DNS disebut dengan nama domain. Pada tiap domain juga memungkinkan nama subtree dan bisa berbeda pula, hal ini disebut subdomain atau subdirektori pada sistem file UNIX. Pada bagian subdomainjuga memungkinkan adanya subtree lagi yang bisa dikelola oleh organisasi yang berbeda dengan domain utamanya. 



Cara Kerja DNS
 

DNS bekerja dengan konsep client server, sebuah computer yang menjalankan fungsi server disebut DNS atau name server dan computer lain meminta penerjemahan hostname ke ip address disebut sebagai client DNS. DNS juga merupakan system database yang terdistribusi,sehingga memungkinkan setiap bagian dari database dikelola secara terpisah. 


DNS umumnya diterapkan dengan menggunakan server terpusat yang disebut server DNS atau name server yang memiliki wewenang atau otoritas dalam mengelola beberapa nama domain dan mengacu ke beberapa domain lainnya yang dikelola server DNS lain .Ketika computer client meminta informasi ip address suatu hostname ke nameserver, biasanya memalui port 53. kemudian nameserver mencoba menerjemahkan berdasarkan library resolv nya , apakah hostname merupakan nama domain yang dikelola oleh name server dan name server memberikan jawaban berdasarkan cache dari data informasi yang sama yang pernah ditanyakan sebelumnya dan berhasil dijawab.

Berikut adalah bentuk topologi dari DNS :







Interface

Interface adalah suatu kumpulan dari operasi yang menentukan sebuah layanan dari sebuah kelas atau komponen. Interface mendefinisikan sebuah himpunan spesifikasi operasi. Secara grafis interface di terjemahkan dengan sebuah lingkaran bersama-sama dengan namanya. Interface merupakan bagian dari sistem yang memungkinkan unsur-unsur pengguna dalam suatu sistem mengakses data. pengembangan interface menghasilkan desain interface yang disepakati oleh unsur pengguna. pertimbangan umum dalam mengembangkan interface adalah akurasi proses dan kenyamanan bagi pengguna dan penggunaannya. Hal tersebut umumnya ditentukan oleh faktor-faktor :

a. Fokus                  : Interface mengarahkan pengguna kepada suatu bagian proses tertentu secara spesifik.
b. Kejelasan            : Pengguna memahami pengunaan suatu interface.
c. Kesederhanaan   : Menampilkan unsur-unsur pokok yang berkaitan langsung dengan suatu proses.
d. Kemudahan         : Ada dukungan proses otomatisasi dalam penggunaan suatu interface.
e. Kecepatan           : Efisiensi waktu dalam suatu proses dan menyajikan hasilnya.

Seorang desainer program selalu berfikir bagaimana suatu interface yang baik agar program yang dibuat dapat berjalan dengan baik dan mudah digunakan.

Interface terdiri dari :
1. Interface berbasis teks
    => Merupakan jenis interface primitif yang menggunakan teks based interface dalam suatu program.
          Contoh :


2. Interface berbasis grafik
    => Suatu Apliasi berbasis grafik biasanya memiliki :
         A. Button
         B. Menu
         C. Check Box
         D. Radio Buttons
         E. Single Line Text Box
         F. Multiline Text Box
         G. Drop-down Menu

     Contoh :


  

    Followers