Sebelum saya menampilkan contoh normalisasi basis data dari kwitansi RS, ada baiknya kita review kembali mengenai teori dasar normalisasi berikut ini:
1. Normalisasi merupakan salah satu teknik perancangan basis data selain ERD (Entity Relationship Diagram)
2. Inti dari normalisasi itu sendiri yaitu untuk menghasilkan struktur tabel yang normal/baik.
3. Jadi normalisasi itu adalah sebuah cara untuk memisahkan / memecah tabel yang mengalami redudansi data ke dalam tabel dua entitas / tabel atau lebih .
Tahapan-tahapan normalisasi:
1. Unnormalisasi
2. Normalisasi 1 (1 NF)
3. Normalisasi 2 (2 NF)
4. Normalisasi 3 (3 NF)
Berikut adalah dokumen dasar berupa kwitansi dari Rumah Sakit yang akan saya coba normalisasi:
TAHAPAN NORMALISASI UNTUK KWITANSI RS:
1. UNNORMALISASI (TIDAK NORMALISASI/UNNORMALIZE)
2. NORMALISASI PERTAMA (1 NF)
3. NORMALISASI KEDUA (2NF)
4. NORMALISASI KETIGA (3 NF)
Nah..untuk kasus-kasus yang sederhana seperti contoh diatas, tahapan normalisasi rata-rata cuma sampai pada tahapan normalisasi ketiga, karena sudah menghasilkan tabel yang normal.
Untuk memastikan kebenaran isi tabel dan hubungan antar tabel, kita harus melakukan pengujiann data. Caranya lakukan saja relasi tabel dari tabel-tabel yang sudah berhasil kita pecah. Bila tidak ada hubungan antar tabel maka dapat dikatakan perancangan suatu basis data yang kita lakukan itu adalah ‘gagal’.
Atau untuk lebih meyakinkan kita, coba hasil dari perancangan tsb praktikan pada salahsatu DBMS, kemudian rencanakan kebutuhan informasi yang akan kita ambil dari database tersebut, field-field apa saja yang akan kita tampilkan, kemudian buatlah query untuk menampilkan field-field yang kita inginkan tersebut….Selamat mencoba
Akhir kata, semoga tulisan ini bisa bermanfaat untuk anda yang membacanya wabilkhusus bagi diri saya sendiri, mohon maaf bila ada penjelasan yang kurang dimengerti dan saya mengharapkan saran dan koreksi dari rekan-rekan semua para blogger maupun para pecinta IT karena semakin banyak saran dan koreksi maka semakin memperkaya pengetahuan kita tentang suatu ilmu…sampai ketemu lagi di tulisan-tulisan selanjutnya….Bye..Bye….
Senin, 10 Oktober 2016
Minggu, 22 Mei 2016
Pengertian Pemrograman Web
Pemrograman web diambil dari 2 suku kata yaitu pemrograman dan web.
Pemrograman yang dalam bahasa English adalah programming dan diartikan proses, cara, perbuatan program (secara bahasa indonesia).
Definisi Web : jaringan komputer yang terdiri dari kumpulan situs internet yang menawarkan teks dan grafik dan suara dan sumber daya animasi melalui protokol transfer hypertext. (http://www.artikata.com/arti-201588-web.php).
Orang banyak mengenal web dengan istilah WWW (world wide web), World Wide Web adalah layanan internet yang paling populer saat ini internet mulai dikenal dan digunakan secara luas setelah adanya layanan WWW .
WWW adalah halaman-halaman website yang dapat saling terkoneksi satu dengan lainnya (hyperlink) yang membentuk samudra belantara informasi . WWW berjalan dengan protokol HyperText Transfer Protokol (HTTP). Halaman Web merupakan file teks murni (plain text) yang berisi sintaks-sintaks HTML yang dapat dibuka/dilihat/diterjemahkan dengan Internet Browser . Sintaks HTML mampu memuat konten text, gambar, audio, video dan animasi. Kini internet identik dengan web, karena kepopuleran web sebagai standar interface pada lanyanan-layanan yang ada di internet, dari awalnya sebagai penyedia informasi, ini digunakan juga untuk komunikasi dari email sampai dengan chatting, sampai dengan melakukan transaksi binsin (commerce) (Betha Sidik,Ir, Pemrograman web dengan HTML, Informatika Bandung, 2005) Banyak keuntungan yang diberikan oleh Aplikasi berbasis Web dari pada aplikasi berbasis destop, sehingga aplikasi berbasis web telah diadopsi oleh perusahaan sebagai bagian dari strategi teknologi informasinya, karena beberapa alasan :
Akses informasi mudah,
Setup server lebih mudah
Informasi mudah didistribusikan
Bebas platform,
informasi dapat di sajikan oleh browser web pada sistem operasi mana saja karena adanya standar dokumen berbagai tipe data dapat disajikan
Cara kerja pemrograman web
Sebelum menjelaskan cara kerja pemrograman web, sebaiknya anda mengetahui tentang HTML bahwa HTML bukan bahasa pemrograman tapi adalah markup language (bahasa penandaan yang terdiri dari TAG). HTML hanya mendeskripsikan bahwa bagian tertentu dalam sebuah halaman web adalah isi yang harus ditampilkan oleh browser dengan cara tertentu.
Bagaimana cara kerja pemrograman web? Secara sederhana pemrograman web hanya dilakukan dengan menyisipkan perintah diantara TAG HTML. Misal :
Contoh
Pada saat kita mengakses halaman tersebut, web server langsung merespon apa yang kita minta dengan melakukan proses parsing (membaca isi halaman baris perbaris) dan jika menemukan baris perintah bahasa pemrograman maka web server akan mengeksekusi/menjalankan perintah tersebut dan setelah semua selesai baru akan mengirimkannya ke browser. Contoh diatas web server akan mengirimkan hasil eksekusi baris perintah echo date("d/m/Y") dalam bentuk tanggal dinamis yang diangap sebagai bagian dari HTML yang bersifat statis.
Apa yang dapat dilakukan dengan pemrograman web
Pemrograman web memungkinkan kita dapat membuat halaman web yang dinamis dengan perintah-perintah yang cukup sederhana tapi dapat menghasilkan informasi yang beragam.
Pemrograman web dapat melakukan interaksi sehingga pengguna dapat memperoleh informasi yang sesuai/relevan seperti pencarian, pengiriman data dll.
Pemrograman web dapat dihubungkan dengan berbagai macam basis data/database seperti mysql, oracle, sql server dll
Bahasa pemrograman apa saja yang dapat digunakan untuk pemrograman web
Bisa dikatakan hampir semua bahasa pemrograman dapat digunakan untuk pemrograman web asalkan bahasa pemrograman tersebut bisa bekerja dalam web server dan dapat menciptakan HTML, XHTML, CSS, JavaScript, dan XML. Beberapa bahasa pemrograman web yang populer diantaranya yaitu : PHP, ASP.NET, Ruby on Rails, Perl, ASP classic, Python, danJSP.
Pemrograman yang dalam bahasa English adalah programming dan diartikan proses, cara, perbuatan program (secara bahasa indonesia).
Definisi Web : jaringan komputer yang terdiri dari kumpulan situs internet yang menawarkan teks dan grafik dan suara dan sumber daya animasi melalui protokol transfer hypertext. (http://www.artikata.com/arti-201588-web.php).
Orang banyak mengenal web dengan istilah WWW (world wide web), World Wide Web adalah layanan internet yang paling populer saat ini internet mulai dikenal dan digunakan secara luas setelah adanya layanan WWW .
WWW adalah halaman-halaman website yang dapat saling terkoneksi satu dengan lainnya (hyperlink) yang membentuk samudra belantara informasi . WWW berjalan dengan protokol HyperText Transfer Protokol (HTTP). Halaman Web merupakan file teks murni (plain text) yang berisi sintaks-sintaks HTML yang dapat dibuka/dilihat/diterjemahkan dengan Internet Browser . Sintaks HTML mampu memuat konten text, gambar, audio, video dan animasi. Kini internet identik dengan web, karena kepopuleran web sebagai standar interface pada lanyanan-layanan yang ada di internet, dari awalnya sebagai penyedia informasi, ini digunakan juga untuk komunikasi dari email sampai dengan chatting, sampai dengan melakukan transaksi binsin (commerce) (Betha Sidik,Ir, Pemrograman web dengan HTML, Informatika Bandung, 2005) Banyak keuntungan yang diberikan oleh Aplikasi berbasis Web dari pada aplikasi berbasis destop, sehingga aplikasi berbasis web telah diadopsi oleh perusahaan sebagai bagian dari strategi teknologi informasinya, karena beberapa alasan :
Akses informasi mudah,
Setup server lebih mudah
Informasi mudah didistribusikan
Bebas platform,
informasi dapat di sajikan oleh browser web pada sistem operasi mana saja karena adanya standar dokumen berbagai tipe data dapat disajikan
Cara kerja pemrograman web
Sebelum menjelaskan cara kerja pemrograman web, sebaiknya anda mengetahui tentang HTML bahwa HTML bukan bahasa pemrograman tapi adalah markup language (bahasa penandaan yang terdiri dari TAG). HTML hanya mendeskripsikan bahwa bagian tertentu dalam sebuah halaman web adalah isi yang harus ditampilkan oleh browser dengan cara tertentu.
Bagaimana cara kerja pemrograman web? Secara sederhana pemrograman web hanya dilakukan dengan menyisipkan perintah diantara TAG HTML. Misal :
Pada saat kita mengakses halaman tersebut, web server langsung merespon apa yang kita minta dengan melakukan proses parsing (membaca isi halaman baris perbaris) dan jika menemukan baris perintah bahasa pemrograman maka web server akan mengeksekusi/menjalankan perintah tersebut dan setelah semua selesai baru akan mengirimkannya ke browser. Contoh diatas web server akan mengirimkan hasil eksekusi baris perintah echo date("d/m/Y") dalam bentuk tanggal dinamis yang diangap sebagai bagian dari HTML yang bersifat statis.
Apa yang dapat dilakukan dengan pemrograman web
Pemrograman web memungkinkan kita dapat membuat halaman web yang dinamis dengan perintah-perintah yang cukup sederhana tapi dapat menghasilkan informasi yang beragam.
Pemrograman web dapat melakukan interaksi sehingga pengguna dapat memperoleh informasi yang sesuai/relevan seperti pencarian, pengiriman data dll.
Pemrograman web dapat dihubungkan dengan berbagai macam basis data/database seperti mysql, oracle, sql server dll
Bahasa pemrograman apa saja yang dapat digunakan untuk pemrograman web
Bisa dikatakan hampir semua bahasa pemrograman dapat digunakan untuk pemrograman web asalkan bahasa pemrograman tersebut bisa bekerja dalam web server dan dapat menciptakan HTML, XHTML, CSS, JavaScript, dan XML. Beberapa bahasa pemrograman web yang populer diantaranya yaitu : PHP, ASP.NET, Ruby on Rails, Perl, ASP classic, Python, danJSP.
Jumat, 20 Mei 2016
Microprosesor
Mikroprosesor adalah singkatan dari prosesor biasa juga disebut CPU (central processing unit). Komponen ini merupakan sebuah cip. Cip (chip atau IC/Integrated circuit) adalah sekeping silikon berukuran beberapa milimeter persegi yang mengandung puluhan ribu transistor dan komponen elektronik lain.
Prosesor juga merupakan salah satu komponen terpenting dalam sistem komputer. Prosesor seringkali disebut sebagai otak komputer, meski sebutan ini tidak tepat sepenuhnya. Prosesor hanya bertindak sebagai mesin pemroses tetapi tidak berfungsi sebagai pengingat. Fungsi pengingat ditangani oleh komponen lain yang dinamakan memori. dan bagaimana dengan sejarahnya, semuanya pasti ada sejarahnya mengapa mikroprosesor muncul dan ada serta digunakan dalam komputer.

contoh mikroprosesor
Evolusi dari mikroprosesor telah diketahui mengikuti Hukum Moore yang merupakan peningkatan performa dari tahun ke tahun. Teori ini merumuskan bahwa daya penghitungan akan berlipat ganda setiap 18 bulan, sebuah proses yang benar terjadi sejak awal 1970-an; sebuah kejutan bagi orang-orang yang berhubungan. Dari awal sebagai driver dalam kalkulator, perkembangan kekuatan telah menuju ke dominasi mikroprosesor di berbagai jenis komputer; setiap sistem dari mainframe terbesar sampai ke komputer pegang terkecil sekarang menggunakan mikroprosesor sebagai pusatnya.
KOMPONEN MIKROPROSESOR
Mikroprosesor terdiri dari beberapa bagian :
Register, berfungsi untuk sebagai tempat penyimpanan sementara data, alamat, kode instruksi dan bit status berbagai operasi mikroprosesor.
ALU (Algorithm and Logic Unit), berfungsi untuk mengerjakan perintah – perintah logika dan operasi aritmetika.
Timing and Control Unit, berfungsi untuk mengambil dan mendekodekan instruksi dari memori program dan membangkitkan sinyal kendali yang diperlukan oleh bagian lain dari mikroprosesor untuk melaksanakan instruksi tersebut
FUNGSI MIKROPROSESOR
Fungsi utama Mikroprosesor adalah sebagai unit yang mengendalikan seluruh kerja sistem mikroprosesor. Beberapa fungsi lain dari mikroprosesor, antara lain :
Mengambil instruksi dan data dari memori.
Memindah data dari dan ke memori.
Mengirim sinyal kendali dan melayani sinyal interupsi.
Menyediakan pewaktuan untuk siklus kerja sistem mikroprosesor.
Mengerjakan fungsi – fungsi operasi logika dan aritmetika.
Prosesor juga merupakan salah satu komponen terpenting dalam sistem komputer. Prosesor seringkali disebut sebagai otak komputer, meski sebutan ini tidak tepat sepenuhnya. Prosesor hanya bertindak sebagai mesin pemroses tetapi tidak berfungsi sebagai pengingat. Fungsi pengingat ditangani oleh komponen lain yang dinamakan memori. dan bagaimana dengan sejarahnya, semuanya pasti ada sejarahnya mengapa mikroprosesor muncul dan ada serta digunakan dalam komputer.

contoh mikroprosesor
Evolusi dari mikroprosesor telah diketahui mengikuti Hukum Moore yang merupakan peningkatan performa dari tahun ke tahun. Teori ini merumuskan bahwa daya penghitungan akan berlipat ganda setiap 18 bulan, sebuah proses yang benar terjadi sejak awal 1970-an; sebuah kejutan bagi orang-orang yang berhubungan. Dari awal sebagai driver dalam kalkulator, perkembangan kekuatan telah menuju ke dominasi mikroprosesor di berbagai jenis komputer; setiap sistem dari mainframe terbesar sampai ke komputer pegang terkecil sekarang menggunakan mikroprosesor sebagai pusatnya.
KOMPONEN MIKROPROSESOR
Mikroprosesor terdiri dari beberapa bagian :
Register, berfungsi untuk sebagai tempat penyimpanan sementara data, alamat, kode instruksi dan bit status berbagai operasi mikroprosesor.
ALU (Algorithm and Logic Unit), berfungsi untuk mengerjakan perintah – perintah logika dan operasi aritmetika.
Timing and Control Unit, berfungsi untuk mengambil dan mendekodekan instruksi dari memori program dan membangkitkan sinyal kendali yang diperlukan oleh bagian lain dari mikroprosesor untuk melaksanakan instruksi tersebut
FUNGSI MIKROPROSESOR
Fungsi utama Mikroprosesor adalah sebagai unit yang mengendalikan seluruh kerja sistem mikroprosesor. Beberapa fungsi lain dari mikroprosesor, antara lain :
Mengambil instruksi dan data dari memori.
Memindah data dari dan ke memori.
Mengirim sinyal kendali dan melayani sinyal interupsi.
Menyediakan pewaktuan untuk siklus kerja sistem mikroprosesor.
Mengerjakan fungsi – fungsi operasi logika dan aritmetika.
SISTEM BASIS DATA
[Waliyanto2000] Gabungan antara basis data dan perangkat lunak SMBD (Sistem Manajemen Basis Data) termasuk di dalamnya program aplikasi yang dibuat dan bekerja dalam satu sistem disebut dengan Sistem Basis Data.

Sistem Basis Data adalah suatu sistem menyusun dan mengelola record-record menggunakan computer untuk menyimpan atau merekam serta memelihara data operasional lengkap sebuah organisasi/perusahaan sehingga mampu menyediakan informasi yang optimal yang diperlukan pemakai untuk proses mengambil keputusan. Salah satu cara menyajikan data untuk mempermudah modifikasi adalah dengan cara pemodelan data. Model yang akan dipergunakan pada pelatihan ini adalah Entity Relationship Model. Model Entity Relationship adalah representasi logika dari data pada suatu organisasi atau area bisnis tertentu dengan menggunakan Entity dan Relationship.
Entity/Entitas
Adalah obyek di dunia nyata yang dapat dibedakan dari obyek lain.
Entity Set/Kumpulan Entity adalah kumpulan dari entitas sejenis/dalam tipe sama.
Entity set dapat berupa: Obyek fisik : rumah, kendaraan, pegawai dan Obyek abstrak : konsep politik, pekerjaan, rencana, dll.
Simbol yang digunakan untuk entity adalah persegi panjang
Tipe entitas :
Entitas Kuat yaitu entitas mandiri yang keberadaannya tidak bergantung pada keberadaan entitas lain
Entitas Lemah/Weak Entity yaitu entitas yang keberadaannya bergantung pada keberadaan entitas lain.
Entitas Assosiatif adalah entitas yang terbentuk dari suatu relasi, bisa terjadi jika : Relasi yang merekatkan dua entitas bersifat banyak ke banyak. Biasanya berasal dari suatu relasi dimana relasi itu memiliki makna mandiri bagi pengguna
Relationship
Adalah hubungan antara suatu himpunan entitas dengan himpunan entitas lainnya
Simbol yang digunakan adalah bentuk belah ketupat, diamod atau rectangle.
Contoh :
Derajat Relationship
Menjelaskan jumlah entity yang terlibat dalam suatu relationship
Unary Degree (Derajat satu) –>> hanya satu entity yang terlibat
Binary Degree (Derajat dua) –>> menghubungkan dua entity
Ternary Degree (Derajat tiga) –>> menghubungkan tiga entity
Atribut
Adalah property deskriptif yang dimiliki oleh setiap himpunan entitas
Jenis-jenis atribut :
Atribut key –>> digunakan untuk mengidentifikasi suatu entity secara unik
Atribut tunggal –>> memiliki nilai tunggal
Atribut multivalue –>> memiliki sekelompok nilai untuk setiap instant entity
Atribut composite –>> dapat didekomposisi menjadi beberap atribut lain
Atribut derivative –>> dihasilkan dari atribut yang lain
Key
Adalah sejumlah atribut yang mengidentifikasi record/baris dalam sebuah relation secara unique.
Beberapa jenis key:
Super Key –>> satu atribut atau kumpulan atribut yang secara unik mengidentifikasi sebuah record di dalam relasi atau himpunan dari satu atau lebih entitas yang dapat digunakan untuk mengidentifikasi secara unik sebuah entitas dalam entitas set.
Candidate Key –>> atribut-atribut yang menjadi determinan yang dapat dijadikan identitas record pada sebuah relation bisa terdapat satu atau lebih candidate key.
Primary key –>> candidate key yang menjadi identitas record karena dapat mengidentifikasi record secara unik
Altenate key –>> candidate key yang tidak dijadikan primary key
Composite key –>> key yang terdiri dari 2 atribut atau lebih.
Atribut-atribut tersebut bila berdiri sendiri tidak menjadi identitas record, tetapi bila dirangkaikan menjadi satu kesatuan akan dapat mengidentifikasi secara unik
Foreign key –>> non key atribut pada sebuah relation yang juga menjadi key (primary) atribut di relation lainnya. Foreign key biasanya digunakan sebagai penghubung antara record-record dan kedua relation tersebut.
Data Base Management System (DBMS)/Sistem Manajemen Basis Data (SMB)
DBMS dapat diartikan sebagai program komputer yang digunakan untuk memasukkan, mengubah, menghapus, memodifikasi dan memperoleh data/informasi dengan praktis dan efisien.
Kelebihan dari DBMS antara lain adalah:
Kepraktisan. DBMS menyediakan media penyimpan permanen yang berukuran kecil namun banyak menyimpan data jika dibandingkan dengan menggunakan kertas.
Kecepatan. Komputer dapat mencari dan menampilkan informasi yang dibutuhkan dengan cepat.
Mengurangi kejemuan. Pekerjaan yang berulang-ulang dapat menimbulkan kebosanan bagi manusia, sedangkan mesin tidak merasakannya.
Update to date. Informasi yang tersedia selalu berubah dan akurat setiap.
Skema dan Instan Basis Data
Skema basis data merupakan deskripsi dari basis data yang spesifikasinya ditentukan dalam tahap perancangan namun tidak terlalu diharapkan diubah setiap saat. Penggambaran skema umumnya hanya berisi sebagian dari deatil deskripsi basis data.
Sekelompok data yang tersusun dalam satu baris rekaman (record/tuple) dan tersimpan dalam basis data disebut dengan instansi (instance) atau kejadian (occurences).

Sistem Basis Data adalah suatu sistem menyusun dan mengelola record-record menggunakan computer untuk menyimpan atau merekam serta memelihara data operasional lengkap sebuah organisasi/perusahaan sehingga mampu menyediakan informasi yang optimal yang diperlukan pemakai untuk proses mengambil keputusan. Salah satu cara menyajikan data untuk mempermudah modifikasi adalah dengan cara pemodelan data. Model yang akan dipergunakan pada pelatihan ini adalah Entity Relationship Model. Model Entity Relationship adalah representasi logika dari data pada suatu organisasi atau area bisnis tertentu dengan menggunakan Entity dan Relationship.
Entity/Entitas
Adalah obyek di dunia nyata yang dapat dibedakan dari obyek lain.
Entity Set/Kumpulan Entity adalah kumpulan dari entitas sejenis/dalam tipe sama.
Entity set dapat berupa: Obyek fisik : rumah, kendaraan, pegawai dan Obyek abstrak : konsep politik, pekerjaan, rencana, dll.
Simbol yang digunakan untuk entity adalah persegi panjang
Tipe entitas :
Entitas Kuat yaitu entitas mandiri yang keberadaannya tidak bergantung pada keberadaan entitas lain
Entitas Lemah/Weak Entity yaitu entitas yang keberadaannya bergantung pada keberadaan entitas lain.
Entitas Assosiatif adalah entitas yang terbentuk dari suatu relasi, bisa terjadi jika : Relasi yang merekatkan dua entitas bersifat banyak ke banyak. Biasanya berasal dari suatu relasi dimana relasi itu memiliki makna mandiri bagi pengguna
Relationship
Adalah hubungan antara suatu himpunan entitas dengan himpunan entitas lainnya
Simbol yang digunakan adalah bentuk belah ketupat, diamod atau rectangle.
Contoh :
Derajat Relationship
Menjelaskan jumlah entity yang terlibat dalam suatu relationship
Unary Degree (Derajat satu) –>> hanya satu entity yang terlibat
Binary Degree (Derajat dua) –>> menghubungkan dua entity
Ternary Degree (Derajat tiga) –>> menghubungkan tiga entity
Atribut
Adalah property deskriptif yang dimiliki oleh setiap himpunan entitas
Jenis-jenis atribut :
Atribut key –>> digunakan untuk mengidentifikasi suatu entity secara unik
Atribut tunggal –>> memiliki nilai tunggal
Atribut multivalue –>> memiliki sekelompok nilai untuk setiap instant entity
Atribut composite –>> dapat didekomposisi menjadi beberap atribut lain
Atribut derivative –>> dihasilkan dari atribut yang lain
Key
Adalah sejumlah atribut yang mengidentifikasi record/baris dalam sebuah relation secara unique.
Beberapa jenis key:
Super Key –>> satu atribut atau kumpulan atribut yang secara unik mengidentifikasi sebuah record di dalam relasi atau himpunan dari satu atau lebih entitas yang dapat digunakan untuk mengidentifikasi secara unik sebuah entitas dalam entitas set.
Candidate Key –>> atribut-atribut yang menjadi determinan yang dapat dijadikan identitas record pada sebuah relation bisa terdapat satu atau lebih candidate key.
Primary key –>> candidate key yang menjadi identitas record karena dapat mengidentifikasi record secara unik
Altenate key –>> candidate key yang tidak dijadikan primary key
Composite key –>> key yang terdiri dari 2 atribut atau lebih.
Atribut-atribut tersebut bila berdiri sendiri tidak menjadi identitas record, tetapi bila dirangkaikan menjadi satu kesatuan akan dapat mengidentifikasi secara unik
Foreign key –>> non key atribut pada sebuah relation yang juga menjadi key (primary) atribut di relation lainnya. Foreign key biasanya digunakan sebagai penghubung antara record-record dan kedua relation tersebut.
Data Base Management System (DBMS)/Sistem Manajemen Basis Data (SMB)
DBMS dapat diartikan sebagai program komputer yang digunakan untuk memasukkan, mengubah, menghapus, memodifikasi dan memperoleh data/informasi dengan praktis dan efisien.
Kelebihan dari DBMS antara lain adalah:
Kepraktisan. DBMS menyediakan media penyimpan permanen yang berukuran kecil namun banyak menyimpan data jika dibandingkan dengan menggunakan kertas.
Kecepatan. Komputer dapat mencari dan menampilkan informasi yang dibutuhkan dengan cepat.
Mengurangi kejemuan. Pekerjaan yang berulang-ulang dapat menimbulkan kebosanan bagi manusia, sedangkan mesin tidak merasakannya.
Update to date. Informasi yang tersedia selalu berubah dan akurat setiap.
Skema dan Instan Basis Data
Skema basis data merupakan deskripsi dari basis data yang spesifikasinya ditentukan dalam tahap perancangan namun tidak terlalu diharapkan diubah setiap saat. Penggambaran skema umumnya hanya berisi sebagian dari deatil deskripsi basis data.
Sekelompok data yang tersusun dalam satu baris rekaman (record/tuple) dan tersimpan dalam basis data disebut dengan instansi (instance) atau kejadian (occurences).
Kamis, 19 Mei 2016
CARA MEMBUAT WEBSITE GRATIS
CARA MEMBUAT WEBSITE GRATIS DAN MUDAH ~ Penggunaan website saat ini semakin hari semakin bertambah banyak hal ini terjadi karena kemajuan tehnologi dan tuntutan hidup pada jaman sekarang. Seiring dengan itu penyedia jasa pembuatan website murah juga tumbuh dan berkembang di mana mana. Website yang dalam bahasa Indonesia berarti situs web, merupakan suatu halaman web yang pada dasarnya berupa sebuah berkas baik itu berupa berkas gambar, tulisan, video dan lain sebagainya.
Nah jika anda ingin tahu cara membuat website gratis sendiri dengan mudah tanpa perlu menyewa jasa pembuatan website, maka perhatikanlah langkah-langkah yang ada di bawah.
Untuk mempermudah anda memahani cara membuat website sendiri di sini saya menggunakan sebuah hosting gratis yaitu idhostinger karena anda akan mendapatkan 2 GB disk space, 100GB Bandwidth secara cuma cuma selamanya dan anda dapat upgrade jika diperlukan.
Cara Membuat Website gratis
1. Kunjungi situs www.idhostinger.com
2. Scroll ke bawah sedikit, Lihat Logo Google, Dan Klik logo tersebut, Kemudia masukan email yang Anda miliki, Jika belum punya dan belum tahu cara buatnya silahkan baca artikel nya di sini.
3. Setelah memasukan alamat email dan menekan enter, Pihak Idhostinger akan meminta izin untuk mengakses alamat dan info profil, Setujui dengan mengklik terima, Kemudian akan diarahkan ke menu paket hosting.
4. Terdapat 3 pilihan paket hosting yang dapat Anda pilih, Tetapi karena kita ingin belajar cara membuat website gratis maka pilihlah paket hosting yang gratis, Klik Order
cara membuat website ~ paket hosting
5. Pada menu order hosting baru, Isikan kotak kosong subdomain sesuai dengan nama yang diinginkan ditambah dengan pilihan nama domain esy.es, 16mb.com, 96.lt, besaba.com, hol.es, zz.mu, pe.hu. Kedua bagian ini akan menjadi alamat website Anda nantinya. Atau jika Anda menginginkan alamat website dengan domain TLD .com ataupun domain Indonesia, Anda dapat mencari dan membelinya di Niagahoster (bagian dari idhostinger.com).
Sedangkan pada bagian ubah tipe domain jangan diklik, biarkan posisi default saja. Selanjutnya masukan password, Kemudian klik lanjutkan.
cara buat website ~ domain dan password
6. Selanjutnya akan terbuka layar baru yaitu konfirmasi order, Lakukan klik pada bidang kotak kosong yang bertuliskan 'saya bukan robot' isi kode captcha kemudian klik verifikasi, dan klik order, tunggulah hingga proses ini selesai.
cara membuat website menggunakan layanan gratis
7. Setelah proses selesai, klik tanda + pada menu daftar akun hosting, dan klik auto installer (lihat gambar di bawah )
cara membuat website gratis
8. Selanjutnya akan masuk ke menu auto installer, Di sini Anda akan menemukan banyak aplikasi yang dapat dipergunakan, Scroll ke bagian Content Management, cari wordpress karena kita akan mempelajari cara membuat website gratis dari wordpress.
cara membuat website gratis
Cara membuat website sendiri
9. Setelah diklik maka akan masuk ke menu layanan website gratis dari wordpress, Nah di sini Anda harus mengisi beberapa bagian antara lain :
a. Username Administrator
b. Password Administrator
c. Judul Website ( nama website / thema website )
d. Tagline Website ( Deskripsi singkat website )
e. Yang lainnya biarkan default saja ya
Oh ya sebelum melanjutkan ke tahapan selanjutnya, Anda perlu mempelajari dan mengetahui pembuatan sebuah logo. Karena logo merupakan hal penting yang tidak bisa dilewatkan begitu saja. Ia akan memberikan identitas kepada sebuah website sehingga akan menjadi ciri tersendiri bila menggunakannnya. Memang tidaklah mudah merancang sebuah logo, Tapi kini Anda tidaklah perlu pusing dan khawatir dengan hal itu. Ada tools online yang dapat membantu Anda.
Anda bisa mengunjungi situsnya langsung yaitu Logaster yang akan membantu Anda merancang logo dengan sangat cepat dan mudah secara online hanya dalam hitungan menit saja. Anda cukup memasukkan nama perusahaan dan pilih jenis usaha, dan Logaster dengan cepat akan menampilkan berbagai bentuk logo yang dapat dipilih bahkan Anda dapat dengan mudah mengeditnya bila ingin mengganti warna, font, ukuran dan lain-lain.
Ok, Kita lanjutkan lagi pembahasannya yaa
10. Kemudian klik instal, Tunggu proses hingga seelsai, Klik URL jika ingin melihat tampilannya.
11. Dan website gratis anda sudah jadi, anda dapat login ke website anda dengan cara mengetik www.namadomain/wp-admin atau mengetik www.namadomain/wp-login.php. Isikan username dan password yang dibuat sebelumnya, Kemudian anda akan masuk ke wordpress sebagai tanda bahwa anda telah berhasil membuat website sendiri.
artikel terkait : cara membuat blog sendiri .
cara bikin website gratis
Silahkan anda berkreasi dengan website anda sesuai dengan kemampuan, Demikian cara membuat website gratis dan mudah, semoga dapat memberikan manfaat.
kelebihan dan keuntugan belajar pemrograman java
Bahasa pemrograman lain yang telah ada sebelum Java lahir sudah merupakan bahasa yang baik dan mudah dipelajari oleh programmer profesional. Akan tetapi para programmer ini menginginkan sesuatu yang baru yang memiliki banyak hal yang menyelesaikan masalah mereka. Utamanya adalah keamanan kode mereka. Hal ini melahirkan pikiran yang revolusioner untuk menemukan bahasa pemrograman lain yang disebut Java. Tidak hanya keamanan tapi juga beberapa hal yang sering disebut sebagai Java-Buzzwords. Kata-kata ini menjelaskan berbagai fitur tambahan dan beberapa hal yang membuat Java demikian sukses dan diterima oleh dunia perangkat lunak. Berikut ini adalah penjelasan serta keuntungan dari kata-kata tersebut.
Sederhana dan Berorientasi Objek
Seperti diuraikan sebelumnya, Java lahir dari suatu pemikiran mendalam akan bahasa pemrograman yang ada pada saat itu, seperti C dan C++. Hal ini akan memudahkan programmer profesional untuk dapat mengerti lebih jelas tentang Java, fungsionalitas, dan lain sebagainya apabila ia memiliki pengetahuan dasar tentang C++ dan konsep pemrograman berorientasi objek. Tujuannya agar konsep dasar dari teknologi Java dapat dimengerti dengan mudah, dan programmer dapat segera menghasilkan sesuatu sedini mungkin. Tidak hanya ini, penemu Java memastikan bahwa Java juga bermula dari bahasa pemrograman dasar yang sudah ada pada saat itu. Kemudian mereka membuang berbagai fitur yang rumit dan membingungkan.
Bahasa pemrograman Java didesain sejak awal untuk menjadi bahasa yang berorientasi objek. Setelah kira-kira 30 tahun, akhirnya teknologi objek menjadi kenyataan dan diterima oleh sebagian besar komunitas pemrograman. Konsep berorientasi objek memungkinkan pembuatan software yang kompleks, berbasis network, sehingga dapat disimpulkan bahwa teknologi Java menghasilkan platform pembuatan perangkat lunak yang baik dan efisien serta berorientas objek.
Keuntungan yang Anda dapat dari Java
Mulai dengan cepat: Java merupakan bahasa pemrograman berorientasi objek, mudah dipelajari, terutama untuk programmer yang sudah menguasai C atau C++
Tulis lebih sedikit program: Jumlah kelas, jumlah metode, dll, menunjukkan bahwa program yang ditulis dalam bahasa pemrograman Java memiliki jumlah 4 kali lipat lebih kecil dari program sama yang ditulis dalam bahasa C++
Tulis program lebih baik: Bahasa pemrograman Java menganjurkan praktek membuat program yang baik, dan automatic garbage collection membantu Anda untuk menghindari kebocoran memori. Orientasi objeknya, arsitektur komponen JavaBeans, dan jangkauannya yanga luas, API yang mudah diperluas, memungkinkan Anda menggunakan kode yang ada.
Membuat program dengan lebih cepat: Bahasa pemrograman Java lebih mudah dari C++, pemrograman akan menjadi 2 kali lipat lebih cepat, dengan jumlah baris yang jauh lebih sedikit.
Menghindari kebergantungan pada platform tertentu: Anda dapat menjalankan program Anda pada banyak platform dengan TIDAK menggunakan library yang ditulis spesifik untuk platform tertentu.
Tulis sekali, jalankan di mana saja: Karena aplikasi yang ditulis dalam bahasa Java dikompilasi ke dalam kode byte yang bebas platform, aplikasi yang ditulis dapat jalan secara konsisten pada platform apa saja.
Distribusikan software Anda dengan mudah: Dengan Java Web Start, pengguna program Anda akan dapat menggunakan aplikasi Anda dengan mudah. Sistem pengecekan versi otomatis pada saat program dimulai menjamin pengguna Anda selalu menjalankan versi terkini. Apabila versi baru tersedia, Java Web Start akan melakukan instalasi secara otomatis.
Sederhana dan Berorientasi Objek
Seperti diuraikan sebelumnya, Java lahir dari suatu pemikiran mendalam akan bahasa pemrograman yang ada pada saat itu, seperti C dan C++. Hal ini akan memudahkan programmer profesional untuk dapat mengerti lebih jelas tentang Java, fungsionalitas, dan lain sebagainya apabila ia memiliki pengetahuan dasar tentang C++ dan konsep pemrograman berorientasi objek. Tujuannya agar konsep dasar dari teknologi Java dapat dimengerti dengan mudah, dan programmer dapat segera menghasilkan sesuatu sedini mungkin. Tidak hanya ini, penemu Java memastikan bahwa Java juga bermula dari bahasa pemrograman dasar yang sudah ada pada saat itu. Kemudian mereka membuang berbagai fitur yang rumit dan membingungkan.
Bahasa pemrograman Java didesain sejak awal untuk menjadi bahasa yang berorientasi objek. Setelah kira-kira 30 tahun, akhirnya teknologi objek menjadi kenyataan dan diterima oleh sebagian besar komunitas pemrograman. Konsep berorientasi objek memungkinkan pembuatan software yang kompleks, berbasis network, sehingga dapat disimpulkan bahwa teknologi Java menghasilkan platform pembuatan perangkat lunak yang baik dan efisien serta berorientas objek.
Keuntungan yang Anda dapat dari Java
Mulai dengan cepat: Java merupakan bahasa pemrograman berorientasi objek, mudah dipelajari, terutama untuk programmer yang sudah menguasai C atau C++
Tulis lebih sedikit program: Jumlah kelas, jumlah metode, dll, menunjukkan bahwa program yang ditulis dalam bahasa pemrograman Java memiliki jumlah 4 kali lipat lebih kecil dari program sama yang ditulis dalam bahasa C++
Tulis program lebih baik: Bahasa pemrograman Java menganjurkan praktek membuat program yang baik, dan automatic garbage collection membantu Anda untuk menghindari kebocoran memori. Orientasi objeknya, arsitektur komponen JavaBeans, dan jangkauannya yanga luas, API yang mudah diperluas, memungkinkan Anda menggunakan kode yang ada.
Membuat program dengan lebih cepat: Bahasa pemrograman Java lebih mudah dari C++, pemrograman akan menjadi 2 kali lipat lebih cepat, dengan jumlah baris yang jauh lebih sedikit.
Menghindari kebergantungan pada platform tertentu: Anda dapat menjalankan program Anda pada banyak platform dengan TIDAK menggunakan library yang ditulis spesifik untuk platform tertentu.
Tulis sekali, jalankan di mana saja: Karena aplikasi yang ditulis dalam bahasa Java dikompilasi ke dalam kode byte yang bebas platform, aplikasi yang ditulis dapat jalan secara konsisten pada platform apa saja.
Distribusikan software Anda dengan mudah: Dengan Java Web Start, pengguna program Anda akan dapat menggunakan aplikasi Anda dengan mudah. Sistem pengecekan versi otomatis pada saat program dimulai menjamin pengguna Anda selalu menjalankan versi terkini. Apabila versi baru tersedia, Java Web Start akan melakukan instalasi secara otomatis.
TENTANG KOMPUTER
Sejarah Komputer dan Perkembanganya – Sejak dahulu, proses pengolahan data telah dilakukan oleh manusia. Manusia juga menemukan alat-alat mekanik dan elektronik untuk membantu manusia dalam penghitungan dan pengolahan data supaya bisa mendapatkan hasil lebih cepat. Komputer yang kita temui saat ini adalah suatu evolusi panjang dari penemuan-penemuan manusia sejak dahulu kala berupa alat mekanik maupun elektronik
Saat ini komputer dan piranti pendukungnya telah masuk dalam setiap aspek kehidupan dan pekerjaan. Komputer yang ada sekarang memiliki kemampuan yang lebih dari sekedar perhitungan matematik biasa. Diantaranya adalah sistem komputer di kassa supermarket yang mampu membaca kode barang belanja, sentral telepon yang menangani jutaan panggilan dan komunikasi, jaringan komputer dan internet yang menghubungkan berbagai tempat di dunia.
Sejarah Komputer menurut periodenya adalah:
Alat Hitung Tradisional dan Kalkulator Mekanik
Komputer Generasi Pertama
Komputer Generasi Kedua
Komputer Generasi Ketiga
Komputer Generasi Keempat
Komputer Generasi Kelima
Sejarah Komputer
1. Komputer Generasi Pertama (1946 – 1959)
Dengan terjadinya Perang Dunia II, negaranegara yang terlibat dalam perang tersebut berusaha mengembangkan untuk mengeksploit potensi strategis yang dimiliki komputer.
Hal ini meningkatkan pendanaan pengembangan komputer serta mempercepat kemajuan teknik komputer.
(1) Colassus
(2) Mark I
(3) ENIAC
(4) EDVAC
(5) UNIVAC I
Ciri komputer generasi pertama adalah:
– Penggunaan tube vakum (yang membuat komputer pada masa tersebut berukuran sangat besar)
– Adanya silinder magnetik untuk penyimpanan data.
– Instruksi operasi dibuat secara spesifik untuk suatu tugas tertentu.
– Setiap komputer memiliki program kodebiner yang berbeda yang disebut “bahasa mesin” (machine language). Hal ini menyebabkan komputer sulit untuk diprogram dan membatasi kecepatannya.
2. Komputer Generasi Kedua (1959 – 1964)
Stretch dan LARC
Mesin pertama yang memanfaatkan teknologi baru ini adalah superkomputer. IBM membuat superkomputer bernama Stretch, dan Sprery Rand membuat komputer bernama LARC. Komputerkomputer ini,yang dikembangkan untuk laboratorium energi atom, dapat menangani sejumlah besar data, sebuah kemampuan yang sangat dibutuhkan oleh peneliti atom. Mesin tersebut sangat mahal dan cenderung terlalu kompleks untuk kebutuhan komputasi bisnis, sehingga membatasi kepopulerannya.
Hanya ada dua LARC yang pernah dipasang dan digunakan: satu di Lawrence Radiation Labs di Livermore, California, dan yang lainnya di US Navy Research and Development Center di Washington D.C. Komputer generasi kedua menggantikan bahasa mesin dengan bahasa assembly. Bahasa assembly adalah bahasa yang menggunakan singkatansingakatan untuk menggantikan kode biner.
Pada awal 1960an, mulai bermunculan komputer generasi kedua yang sukses di bidang bisnis, di universitas, dan di pemerintahan. Komputer generasi kedua ini merupakan komputer yang sepenuhnya menggunakan transistor. Mereka juga memiliki komponenkomponen yang dapat diasosiasikan dengan komputer pada saat ini: printer, penyimpanan dalam disket, memory, sistem operasi, dan program.
Ciri-ciri komputer pada generasi kedua:
– Penggunaan transistor sehingga ukurannya lebih kecil
– Adanya pengembangan memori intimagnetik membantu pengembangan komputer generasi kedua yang lebih kecil, lebih cepat, lebih dapat diandalkan, dan lebih hemat energi dibanding para pendahulunya
– Penggantian dari bahasa mesin menjadi bahasa Asembly
– Muncul bahasa pemrograman COBOL dan FORTRAN
3. Komputer Generasi Ketiga (1964 – 1970)
Walaupun transistor dalam banyak hal mengungguli tube vakum, namun transistor menghasilkan panas yang cukup besar, yang dapat berpotensi merusak bagianbagian internal komputer. Batu kuarsa (quartz rock) menghilangkan masalah ini. Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit terintegrasi (IC : integrated circuit) di tahun 1958. IC mengkombinasikan tiga komponen elektronik dalam sebuah piringan silikon kecil yang terbuat dari pasir kuarsa.
Pada ilmuwan kemudian berhasil memasukkan lebih banyak komponenkomponen ke dalam suatu chiptunggal yang disebut semikonduktor. Hasilnya, komputer menjadi semakin kecil karena komponenkomponen dapat dipadatkan dalam chip. Kemajuan komputer generasi ketiga lainnya adalah penggunaan system operasi (operating system) yang memungkinkan mesin untuk menjalankan berbagai program yang berbeda secara serentak dengan sebuah program utama yang memonitor dan mengkoordinasi memori komputer.
Ciri-ciri komputer pada generasi ketiga:
– Penggunaan IC(Intregrated Circuit)
– Ukuran komputer menjadi lebih kecil
– Ditemukannya Sistem Operasi
4. Komputer Generasi Keempat (1979 – sekarang)
Setelah IC, tujuan pengembangan menjadi lebih jelas: mengecilkan ukuran sirkuit dan komponenkomponen elektrik. Large Scale Integration (LSI) dapat memuat ratusan komponen dalam sebuah chip. Pada tahun 1980 an, Very Large Scale Integration (VLSI) memuat ribuan komponen dalam sebuah chip tunggal. UltraLarge Scale Integration (ULSI) meningkatkan jumlah tersebut menjadi jutaan. Kemampuan untuk memasang sedemikian banyak komponen dalam suatu keping yang berukurang setengah keping uang logam mendorong turunnya harga dan ukuran komputer. Hal tersebut juga meningkatkan daya kerja, efisiensi dan keterandalan komputer.
Chip Intel 4004 yang dibuat pada tahun 1971 membawa kemajuan pada IC dengan meletakkan seluruh komponen dari sebuah komputer (central processing unit, memori, dan kendali input/output) dalam sebuah chip yang sangat kecil. Sebelumnya, IC dibuat untuk mengerjakan suatu tugas tertentu yang spesifik. Sekarang, sebuah mikroprosesor dapat diproduksi dan kemudian diprogram untuk memenuhi seluruh kebutuhan yang diinginkan. Tidak lama kemudian, setiap perangkat rumah tangga seperti microwave oven, televisi, dan mobil dengan electronic fuel injection dilengkapi dengan mikroprosesor.
Perkembangan yang demikian memungkinkan orangorang biasa untuk menggunakan komputer biasa. Komputer tidak lagi menjadi dominasi perusahaanperusahaan besar atau lembaga pemerintah. Pada pertengahantahun 1970an, perakit komputer menawarkan produk komputer mereka ke masyarakat umum. Komputerkomputer ini, yang disebut minikomputer, dijual dengan paket piranti lunak yang mudah digunakan oleh kalangan awam. Piranti lunak yang paling populer pada saat itu adalah program word processing dan spreadsheet. Pada awal 1980an, video game seperti Atari 2600 menarik perhatian konsumen pada komputer rumahan yang lebih canggih dan dapat diprogram.
Pada tahun 1981, IBM memperkenalkan penggunaan Personal Computer (PC) untuk penggunaan di rumah, kantor, dan sekolah. Jumlah PC yang digunakan melonjak dari 2 juta unit di tahun 1981 menjadi 5,5 juta unit di tahun 1982. Sepuluh tahun kemudian, 65 juta PC digunakan. Komputer melanjutkan evolusinya menuju ukuran yang lebih kecil, dari komputer yang berada di atas meja (desktop computer) menjadi komputer yang dapat dimasukkan ke dalam tas (laptop), atau bahkan komputer yang dapat digenggam (palmtop).
IBM PC bersaing dengan Apple Macintosh dalam memperebutkan pasar komputer. Apple Macintosh menjadi terkenal karena mempopulerkan system grafis pada komputernya, sementara saingannya masih menggunakan komputer yang berbasis teks. Macintosh juga mempopulerkan penggunaan piranti mouse.
Pada masa sekarang, kita mengenal perjalanan IBM compatible dengan pemakaian CPU: IBM PC/486, Pentium, Pentium II, Pentium III, Pentium IV (Serial dari CPU buatan Intel). Juga kita kenal AMD k6, Athlon, dsb. Ini semua masuk dalam golongan komputer generasi keempat. Seiring dengan menjamurnya penggunaan komputer di tempat kerja, cara cara baru untuk menggali potensial terus dikembangkan. Seiring dengan bertambah kuatnya suatu komputer kecil, komputerkomputer tersebut dapat dihubungkan secara bersamaan dalam suatu jaringan untuk saling berbagi memori, piranti lunak, informasi, dan juga untuk dapat saling berkomunikasi satu dengan yang lainnya. Komputer jaringan memungkinkan komputer tunggal untuk membentuk kerjasama elektronik untuk menyelesaikan suatu proses tugas. Dengan menggunakan perkabelan langsung (disebut juga local area network, LAN), atau kabel telepon, jaringan ini dapat berkembang menjadi sangat besar.
Ciri-ciri komputer pada generasi keempat:
• Digunakannya LSI, VLSI, ULSI
• Digunakannya mikroprosesor
Saat ini komputer dan piranti pendukungnya telah masuk dalam setiap aspek kehidupan dan pekerjaan. Komputer yang ada sekarang memiliki kemampuan yang lebih dari sekedar perhitungan matematik biasa. Diantaranya adalah sistem komputer di kassa supermarket yang mampu membaca kode barang belanja, sentral telepon yang menangani jutaan panggilan dan komunikasi, jaringan komputer dan internet yang menghubungkan berbagai tempat di dunia.
Sejarah Komputer menurut periodenya adalah:
Alat Hitung Tradisional dan Kalkulator Mekanik
Komputer Generasi Pertama
Komputer Generasi Kedua
Komputer Generasi Ketiga
Komputer Generasi Keempat
Komputer Generasi Kelima
Sejarah Komputer
1. Komputer Generasi Pertama (1946 – 1959)
Dengan terjadinya Perang Dunia II, negaranegara yang terlibat dalam perang tersebut berusaha mengembangkan untuk mengeksploit potensi strategis yang dimiliki komputer.
Hal ini meningkatkan pendanaan pengembangan komputer serta mempercepat kemajuan teknik komputer.
(1) Colassus
(2) Mark I
(3) ENIAC
(4) EDVAC
(5) UNIVAC I
Ciri komputer generasi pertama adalah:
– Penggunaan tube vakum (yang membuat komputer pada masa tersebut berukuran sangat besar)
– Adanya silinder magnetik untuk penyimpanan data.
– Instruksi operasi dibuat secara spesifik untuk suatu tugas tertentu.
– Setiap komputer memiliki program kodebiner yang berbeda yang disebut “bahasa mesin” (machine language). Hal ini menyebabkan komputer sulit untuk diprogram dan membatasi kecepatannya.
2. Komputer Generasi Kedua (1959 – 1964)
Stretch dan LARC
Mesin pertama yang memanfaatkan teknologi baru ini adalah superkomputer. IBM membuat superkomputer bernama Stretch, dan Sprery Rand membuat komputer bernama LARC. Komputerkomputer ini,yang dikembangkan untuk laboratorium energi atom, dapat menangani sejumlah besar data, sebuah kemampuan yang sangat dibutuhkan oleh peneliti atom. Mesin tersebut sangat mahal dan cenderung terlalu kompleks untuk kebutuhan komputasi bisnis, sehingga membatasi kepopulerannya.
Hanya ada dua LARC yang pernah dipasang dan digunakan: satu di Lawrence Radiation Labs di Livermore, California, dan yang lainnya di US Navy Research and Development Center di Washington D.C. Komputer generasi kedua menggantikan bahasa mesin dengan bahasa assembly. Bahasa assembly adalah bahasa yang menggunakan singkatansingakatan untuk menggantikan kode biner.
Pada awal 1960an, mulai bermunculan komputer generasi kedua yang sukses di bidang bisnis, di universitas, dan di pemerintahan. Komputer generasi kedua ini merupakan komputer yang sepenuhnya menggunakan transistor. Mereka juga memiliki komponenkomponen yang dapat diasosiasikan dengan komputer pada saat ini: printer, penyimpanan dalam disket, memory, sistem operasi, dan program.
Ciri-ciri komputer pada generasi kedua:
– Penggunaan transistor sehingga ukurannya lebih kecil
– Adanya pengembangan memori intimagnetik membantu pengembangan komputer generasi kedua yang lebih kecil, lebih cepat, lebih dapat diandalkan, dan lebih hemat energi dibanding para pendahulunya
– Penggantian dari bahasa mesin menjadi bahasa Asembly
– Muncul bahasa pemrograman COBOL dan FORTRAN
3. Komputer Generasi Ketiga (1964 – 1970)
Walaupun transistor dalam banyak hal mengungguli tube vakum, namun transistor menghasilkan panas yang cukup besar, yang dapat berpotensi merusak bagianbagian internal komputer. Batu kuarsa (quartz rock) menghilangkan masalah ini. Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit terintegrasi (IC : integrated circuit) di tahun 1958. IC mengkombinasikan tiga komponen elektronik dalam sebuah piringan silikon kecil yang terbuat dari pasir kuarsa.
Pada ilmuwan kemudian berhasil memasukkan lebih banyak komponenkomponen ke dalam suatu chiptunggal yang disebut semikonduktor. Hasilnya, komputer menjadi semakin kecil karena komponenkomponen dapat dipadatkan dalam chip. Kemajuan komputer generasi ketiga lainnya adalah penggunaan system operasi (operating system) yang memungkinkan mesin untuk menjalankan berbagai program yang berbeda secara serentak dengan sebuah program utama yang memonitor dan mengkoordinasi memori komputer.
Ciri-ciri komputer pada generasi ketiga:
– Penggunaan IC(Intregrated Circuit)
– Ukuran komputer menjadi lebih kecil
– Ditemukannya Sistem Operasi
4. Komputer Generasi Keempat (1979 – sekarang)
Setelah IC, tujuan pengembangan menjadi lebih jelas: mengecilkan ukuran sirkuit dan komponenkomponen elektrik. Large Scale Integration (LSI) dapat memuat ratusan komponen dalam sebuah chip. Pada tahun 1980 an, Very Large Scale Integration (VLSI) memuat ribuan komponen dalam sebuah chip tunggal. UltraLarge Scale Integration (ULSI) meningkatkan jumlah tersebut menjadi jutaan. Kemampuan untuk memasang sedemikian banyak komponen dalam suatu keping yang berukurang setengah keping uang logam mendorong turunnya harga dan ukuran komputer. Hal tersebut juga meningkatkan daya kerja, efisiensi dan keterandalan komputer.
Chip Intel 4004 yang dibuat pada tahun 1971 membawa kemajuan pada IC dengan meletakkan seluruh komponen dari sebuah komputer (central processing unit, memori, dan kendali input/output) dalam sebuah chip yang sangat kecil. Sebelumnya, IC dibuat untuk mengerjakan suatu tugas tertentu yang spesifik. Sekarang, sebuah mikroprosesor dapat diproduksi dan kemudian diprogram untuk memenuhi seluruh kebutuhan yang diinginkan. Tidak lama kemudian, setiap perangkat rumah tangga seperti microwave oven, televisi, dan mobil dengan electronic fuel injection dilengkapi dengan mikroprosesor.
Perkembangan yang demikian memungkinkan orangorang biasa untuk menggunakan komputer biasa. Komputer tidak lagi menjadi dominasi perusahaanperusahaan besar atau lembaga pemerintah. Pada pertengahantahun 1970an, perakit komputer menawarkan produk komputer mereka ke masyarakat umum. Komputerkomputer ini, yang disebut minikomputer, dijual dengan paket piranti lunak yang mudah digunakan oleh kalangan awam. Piranti lunak yang paling populer pada saat itu adalah program word processing dan spreadsheet. Pada awal 1980an, video game seperti Atari 2600 menarik perhatian konsumen pada komputer rumahan yang lebih canggih dan dapat diprogram.
Pada tahun 1981, IBM memperkenalkan penggunaan Personal Computer (PC) untuk penggunaan di rumah, kantor, dan sekolah. Jumlah PC yang digunakan melonjak dari 2 juta unit di tahun 1981 menjadi 5,5 juta unit di tahun 1982. Sepuluh tahun kemudian, 65 juta PC digunakan. Komputer melanjutkan evolusinya menuju ukuran yang lebih kecil, dari komputer yang berada di atas meja (desktop computer) menjadi komputer yang dapat dimasukkan ke dalam tas (laptop), atau bahkan komputer yang dapat digenggam (palmtop).
IBM PC bersaing dengan Apple Macintosh dalam memperebutkan pasar komputer. Apple Macintosh menjadi terkenal karena mempopulerkan system grafis pada komputernya, sementara saingannya masih menggunakan komputer yang berbasis teks. Macintosh juga mempopulerkan penggunaan piranti mouse.
Pada masa sekarang, kita mengenal perjalanan IBM compatible dengan pemakaian CPU: IBM PC/486, Pentium, Pentium II, Pentium III, Pentium IV (Serial dari CPU buatan Intel). Juga kita kenal AMD k6, Athlon, dsb. Ini semua masuk dalam golongan komputer generasi keempat. Seiring dengan menjamurnya penggunaan komputer di tempat kerja, cara cara baru untuk menggali potensial terus dikembangkan. Seiring dengan bertambah kuatnya suatu komputer kecil, komputerkomputer tersebut dapat dihubungkan secara bersamaan dalam suatu jaringan untuk saling berbagi memori, piranti lunak, informasi, dan juga untuk dapat saling berkomunikasi satu dengan yang lainnya. Komputer jaringan memungkinkan komputer tunggal untuk membentuk kerjasama elektronik untuk menyelesaikan suatu proses tugas. Dengan menggunakan perkabelan langsung (disebut juga local area network, LAN), atau kabel telepon, jaringan ini dapat berkembang menjadi sangat besar.
Ciri-ciri komputer pada generasi keempat:
• Digunakannya LSI, VLSI, ULSI
• Digunakannya mikroprosesor
SEPUTAR TEKNOLOGI INFORMATIKA
Informatika dan Ilmu Komputer
Informatika
Informatika merupakan salah satu cabang keilmuan yang cukup luas karena hampir mencakup dan terkait dengan berbagai hal tentang kehidupan ini, dimana kumpulan disiplin informatika ini meliputi sains maupun teknik yang secara spesifik mengolah data menjadi informasi dengan memanfaatkan seoptimal mungkin teknologi informasi atau komputer.
Dalam bahasa Indonesia, istilah Informatika diturunkan dari bahasa Perancis informatique, yang dalam bahasa Jerman disebut Informatik. Sebenarnya, kata ini identik dengan istilah computer science di Amerika Serikat dan computing science di Inggris.
Dalam pendefenisian istilah informatika , menurut Philippe Dreyfus (1962) dan l’Academie Francaise (1967) yang mendefenisikan informatika tersebut sebagai berikut:
Kumpulan Disiplin Ilmu (scientific discipline) dan Disiplin Teknik (engineering discipline) yang secara spesifik menyangkut transformasi/ pengolahan dari “Fakta Simbolik” (data/informasi), yang terutama menggunakan fasilitas mesin-mesin otomatis/komputer.
Dalam bahasa Inggris memiliki makna yang sedikit berbeda, yaitu lebih menekankan pada aspek pengolahan informasi secara sistematis dan rasional.
Jika dilihat secara menyeluruh dari pengertian informatika di atas, pendekatan logika dan sistematika merupakan ciri yang cukup dominan dari Informatika ini, mengingat pendekatan tersebut merupakan kunci dalam hal mendapatkan solusi dalam menyelesaikan berbagai masalah.
Pada prinsipnya keilmuan ini lebih menekankan bagaimana suatu data dan informasi dapat diolah sedemikian dengan berbantuan teknologi yang terotomatisasi .
Teknologi yang terautomatisasi tersebut tidak hanya dalam satu mesin , namun bisa melibatkan beberapa mesin. Mesin ini lebih umum disebut dengan komputer. Komputer sebagai bahan utama dalam bidang keilmuan ini memiliki peranan yang sangat tinggi, sehingga informatika secara sederhana mengupas mulai dari bagaimana mesin tersebut bisa bekerja, bagaimana suatu data diolah dengan cara yang dimengerti oleh mesin sedangkan informasinya dimengerti juga oleh manusia, sampai bagaimana mesin tersebut mampu berkomunikasi dengan mesin lainnya.
Ilmu Komputer
Secara umum, Ilmu Komputer yang lebih dikenal dengan nama Komputer Sains (Computer Science, CS) adalah ilmu yang mempelajari tentang komputasi , baik perangkat keras (hardware ) maupun perangkat lunak (software ). Ilmu komputer mencakup beragam topik berkaitan dengan komputer, dari analisa abstrak algoritma sampai subyek yang lebih konkret seperti bahasa pemrograman , perangkat lunak, dan perangkat keras. Sebagai suatu disiplin ilmu, Ilmu Komputer berbeda dengan pemrograman komputer, rekayasa perangkat lunak dan teknik komputer, sekalipun ketiga istilah tersebut sering disalahartikan.
Tesis Church-Turing menyatakan bahwa semua alat komputasi yang telah umum diketahui sebenarnya sama dalah hal apa yang bisa mereka lakukan, sekalipun dengan efisiensi yang berbeda. Tesis ini terkadang dianggap sebagai pronsip dasar dari ilmu komputer. Para ahli ilmu komputer biasanya menekankan komputer von Neumann atau mesin Turing , karena seperti itulah kebanyakan komputer digunakan sekarang ini. Para ahli ilmu komputer juga mempelajari jenis mesin yang lain, beberapa diantaranya praktikal (seperti paralel dan kuantum) dan beberapa diantaranya cukup teoritis (seperti random and oracle).
Ilmu Komputer mempelajari apa yang bisa dilakukan oleh program, dan apa yang tidak (komputasi dan intelegensia buatan ), bagaimana program harus mengevaluasi suatu hasil (algoritma), bagaimana program harus menyimpan dan mengambil bit tertentu dari suatu informasi (struktur data ), dan bagaimana program dan pengguna berkomunikasi (antarmuka pengguna dan bahasa pemrograman).
Ilmu komputer berakar dari elektronika , matematika dan linguistik . Dalam tiga dekade terakhir dari abad 20, ilmu komputer telah menjadi suatu disiplin ilmu baru dan telah mengembangkan metode dan istilah sendiri.
Departemen ilmu komputer pertama didirikan di Universitas Purdue pada tahun 1962. Hampir semua universitas sekarang mempunyai departemen ilmu komputer. Penghargaan tertinggi dalam ilmu komputer adalah Turing Award , pemenang penghargaan ini adalah semua pionir di bidangnya.
Informatika
Informatika merupakan salah satu cabang keilmuan yang cukup luas karena hampir mencakup dan terkait dengan berbagai hal tentang kehidupan ini, dimana kumpulan disiplin informatika ini meliputi sains maupun teknik yang secara spesifik mengolah data menjadi informasi dengan memanfaatkan seoptimal mungkin teknologi informasi atau komputer.
Dalam bahasa Indonesia, istilah Informatika diturunkan dari bahasa Perancis informatique, yang dalam bahasa Jerman disebut Informatik. Sebenarnya, kata ini identik dengan istilah computer science di Amerika Serikat dan computing science di Inggris.
Dalam pendefenisian istilah informatika , menurut Philippe Dreyfus (1962) dan l’Academie Francaise (1967) yang mendefenisikan informatika tersebut sebagai berikut:
Kumpulan Disiplin Ilmu (scientific discipline) dan Disiplin Teknik (engineering discipline) yang secara spesifik menyangkut transformasi/ pengolahan dari “Fakta Simbolik” (data/informasi), yang terutama menggunakan fasilitas mesin-mesin otomatis/komputer.
Dalam bahasa Inggris memiliki makna yang sedikit berbeda, yaitu lebih menekankan pada aspek pengolahan informasi secara sistematis dan rasional.
Jika dilihat secara menyeluruh dari pengertian informatika di atas, pendekatan logika dan sistematika merupakan ciri yang cukup dominan dari Informatika ini, mengingat pendekatan tersebut merupakan kunci dalam hal mendapatkan solusi dalam menyelesaikan berbagai masalah.
Pada prinsipnya keilmuan ini lebih menekankan bagaimana suatu data dan informasi dapat diolah sedemikian dengan berbantuan teknologi yang terotomatisasi .
Teknologi yang terautomatisasi tersebut tidak hanya dalam satu mesin , namun bisa melibatkan beberapa mesin. Mesin ini lebih umum disebut dengan komputer. Komputer sebagai bahan utama dalam bidang keilmuan ini memiliki peranan yang sangat tinggi, sehingga informatika secara sederhana mengupas mulai dari bagaimana mesin tersebut bisa bekerja, bagaimana suatu data diolah dengan cara yang dimengerti oleh mesin sedangkan informasinya dimengerti juga oleh manusia, sampai bagaimana mesin tersebut mampu berkomunikasi dengan mesin lainnya.
Ilmu Komputer
Secara umum, Ilmu Komputer yang lebih dikenal dengan nama Komputer Sains (Computer Science, CS) adalah ilmu yang mempelajari tentang komputasi , baik perangkat keras (hardware ) maupun perangkat lunak (software ). Ilmu komputer mencakup beragam topik berkaitan dengan komputer, dari analisa abstrak algoritma sampai subyek yang lebih konkret seperti bahasa pemrograman , perangkat lunak, dan perangkat keras. Sebagai suatu disiplin ilmu, Ilmu Komputer berbeda dengan pemrograman komputer, rekayasa perangkat lunak dan teknik komputer, sekalipun ketiga istilah tersebut sering disalahartikan.
Tesis Church-Turing menyatakan bahwa semua alat komputasi yang telah umum diketahui sebenarnya sama dalah hal apa yang bisa mereka lakukan, sekalipun dengan efisiensi yang berbeda. Tesis ini terkadang dianggap sebagai pronsip dasar dari ilmu komputer. Para ahli ilmu komputer biasanya menekankan komputer von Neumann atau mesin Turing , karena seperti itulah kebanyakan komputer digunakan sekarang ini. Para ahli ilmu komputer juga mempelajari jenis mesin yang lain, beberapa diantaranya praktikal (seperti paralel dan kuantum) dan beberapa diantaranya cukup teoritis (seperti random and oracle).
Ilmu Komputer mempelajari apa yang bisa dilakukan oleh program, dan apa yang tidak (komputasi dan intelegensia buatan ), bagaimana program harus mengevaluasi suatu hasil (algoritma), bagaimana program harus menyimpan dan mengambil bit tertentu dari suatu informasi (struktur data ), dan bagaimana program dan pengguna berkomunikasi (antarmuka pengguna dan bahasa pemrograman).
Ilmu komputer berakar dari elektronika , matematika dan linguistik . Dalam tiga dekade terakhir dari abad 20, ilmu komputer telah menjadi suatu disiplin ilmu baru dan telah mengembangkan metode dan istilah sendiri.
Departemen ilmu komputer pertama didirikan di Universitas Purdue pada tahun 1962. Hampir semua universitas sekarang mempunyai departemen ilmu komputer. Penghargaan tertinggi dalam ilmu komputer adalah Turing Award , pemenang penghargaan ini adalah semua pionir di bidangnya.
Pengenalan HTML
Metode 1 dari 6: Memilih Bahasa Pemrograman
Tentukan minat Anda. Anda bisa mulai belajar bahasa pemrograman apa pun (meskipun beberapa bahasa "lebih mudah" dari bahasa lainnya"), jadi Anda mungkin ingin belajar dengan bertanya pada diri anda: "Apa yang ingin saya capai dengan menguasai bahasa pemrograman?". Hal tersebut akan membantu Anda menentukan bahasa pemrograman apa yang harus Anda pelajari, dan memberikan Anda titik awal yang baik.
Jika Anda ingin menjadi pengembang web, Anda perlu menguasai bahasa yang berbeda dari bahasa yang digunakan pengembang program desktop. Membuat aplikasi ponsel juga memerlukan bahasa yang berbeda dari memprogram mesin. Seluruh keputusan Anda akan menentukan arah pembelajaran Anda.
Iklan
Pertimbangkan untuk mempelajari bahasa yang sederhana. Tak peduli apa pun pilihan Anda, Anda mungkin ingin mempertimbangkan untuk belajar bahasa tingkat tinggi yang lebih sederhana. Bahasa-bahasa tersebut sangat berguna untuk pemula, karena bahasanya mengajarkan konsep-konsep dan pemikiran dasar pemrograman yang bisa diterapkan ke bahasa apapun.[1]
Dua bahasa paling populer dalam kategori ini adalah Python dan Ruby. Keduanya adalah bahasa aplikasi web berorientasi objek yang menggunakan sintaksis mudah dibaca.
Bahasa pemrograman berorientasi objek artinya bahasa tersebut dibangun dengan konsep "objek", atau kumpulan data, dan manipulasinya. Konsep ini digunakan dalam berbagai bahasa pemrograman tingkat lanjut, seperti C++, Java, Objective-C, dan PHP.
Gambar berjudul Learn a Programming Language Step 33
Bacalah beberapa panduan dasar untuk berbagai bahasa. Jika Anda masih belum yakin bahasa apa yang ingin Anda pelajari, bacalah panduan untuk beberapa bahasa berbeda. Jika sebuah bahasa lebih mudah dimengerti dari bahasa lainnya, cobalah menggunakan bahasa tersebut untuk mengetahui kecocokannya dengan Anda. Ada ribuan tutorial untuk setiap bahasa pemrograman di Internet, dan banyak diantaranya tersedia di WikiHow
Python - Bahasa pemula yang hebat dan cukup berdaya jika Anda mulai mengerti penggunaannya. Bahasa ini dipakai di banyak aplikasi web, dan bahkan beberapa permainan.
Java - Dipakai di berbagai jenis program, mulai permainan, aplikasi web, hingga perangkat lunak ATM.
HTML - Bahasa awal yang wajib dikuasai seluruh pengembang web. Anda harus mengenal HTML sebelum mempelajari bahasa pemrograman web lain.
C - Meskipun sudah cukup tua, C masih berdaya, dan menjadi basis dari C++, C# dan Objective-C yang lebih baru.
Iklan
Metode 2 dari 6: Memulai Dari Awal
Pelajari konsep dasar dari bahasa pemrograman pilihan Anda. Meskipun langkahnya akan tergantung pada bahasa pemrograman yang Anda pilih, seluruh bahasa pemrograman memiliki konsep dasar yang berguna untuk membangun program. Mempelajari konsep tersebut sejak dini akan mempermudah Anda menyelesaikan masalah dan membuat kode yang berdaya serta efisien. Di bawah ini adalah konsep dasar umum yang banyak ditemukan di bahasa berbeda:
Variabel - Variabel adalah cara menyimpan dan merujuk pada bagian data yang selalu berubah. Variabel bisa dimanipulasi, dan seringkali memiliki jenis tertentu seperti "integer", "characters", dll, yang menentukan data apa saja yang bisa disimpan. Saat membuat program, variabel biasanya memiliki nama yang membuatnya sedikit lebih mudah dipahami oleh pembaca manusia. Hal tersebut mempermudah variabel berinteraksi dengan bagian kode lainnya.
Pernyataan kondisional - Pernyataan ini adalah aksi yang dilakukan berdasarkan kebenaran atau kesalahan sebuah pernyataan. Bentuk paling umum dari pernyataan kondisional adalah "If-Then", Jika pernyataannya benar (misal x = 5), maka sesuatu akan terjadi. Jika pernyataannya salah (misal x != 5), maka hal lain akan terjadi.
Fungsi atau Sub-rutin - Nama dari konsep ini berbeda-beda, tergantung bahasa pemrograman. Konsep ini bia disebut "Procedure", "Method", atau "Callable Unit", dan berupa program lebih kecil dalam sebuah program. Sebuah fungsi dapat "dipanggil" oleh program berkali-kali, dan memungkinkan pemrogram membuat program kompleks dengan mudah.
Data input - Konsep ini sangat luas dan digunakan di hampir seluruh bahasa pemrograman. Konsep ini mencakup penanganan masukan pengguna dan menyimpan data yang sudah dimasukkan. Cara pemasukan data tergantung dari jenis program dan input yang tersedia bagi pengguna (papan ketik, berkas, dll). Hal ini terkait dengan Output, yang akan menampilkan hasil pada pengguna, baik dalam bentuk tampilan di layar atau berkas.
Gambar berjudul Learn a Programming Language Step 5
2
Pasanglah perangkat lunak yang diperlukan. Kebanyakan bahasa pemrograman memerlukan "compiler", sebuah program yang menerjemahkan kode ke bahasa yang dipahami mesin. Bahasa lain, seperti Python, menggunakan interpreter, yang bisa menjalankan kode tanpa proses "compile".
Beberapa bahasa memiliki IDE (Integrated Development Environment), yang biasanya berisi penyunting kode, "compiler" atau interpreter, dan "debugger". IDE memungkinkan pemrogram melakukan fungsi yang diperlukan di satu tempat. IDE juga mungkin memiliki representasi visual dari hirarki dan direktori objek.
Ada banyak penyunting kode tersedia di Internet. Penyunting kode menawarkan cara yang berbeda untuk menebalkan sintaks dan menawarkan peralatan ramah pengembang lain.
Iklan
Metode 3 dari 6: Membuat Program Pertama Anda
Berfokuslah pada satu konsep dalam setiap waktu. Salah satu program pertama yang diajarkan untuk setiap bahasa adalah "Hello World". Program ini adalah program sederhana yang menampilkan teks "Hello World" (atau variasi lainnya) di layar. Program ini mengajarkan pemrogram pemula untuk membuat program fungsional dasar dan cara menangani keluaran (output). Dengan mengubah teks, Anda dapat mempelajari bagaimana data dasar ditangani oleh program. WikiHow bahasa Inggris memiliki beberapa panduan membuat program "Hello World" dalam berbagai bahasa pemrograman:
Hello World in Python
Hello World in Ruby
Hello World in C
Hello World in PHP
Hello World in C#
Hello World in Java
Belajarlah dengan melakukan dekonstruksi dari contoh program daring. Ada ribuan contoh kode di internet untuk hampir segala jenis bahasa pemrograman. Gunakan contoh tersebut untuk mempelajari bagaimana berbagai aspek dari sebuah bahasa bekerja dan bagaimana berbagai bagian bahasa berinteraksi. Ambillah bagian-bagian dari contoh yang tersedia untuk membuat program Anda sendiri.
Periksalah sintaksis. Sintaksis adalah cara penulisan sebuah bahasa yang dimengerti oleh "compiler" dan "interpreter". Setiap bahasa memiliki sintaksis yang berbeda, meskipun beberapa bagian sintaksis juga digunakan di banyak bahasa pemrograman. Mempelajari sintaksis sangatlah penting untuk mempelajari pemrograman, dan biasanya terpikir pertama kali di benak banyak orang ketika mendengar tentang pemrograman komputer. Di dunia nyata, sintaksis hanyalah fondasi untuk membangun konsep-konsep lebih lanjut.
Bereksperimenlah dengan perubahan. Buatlah perubahan pada program contoh Anda dan cobalah hasilnya. Dengan bereksperimen, Anda akan mempelajari apa yang bekerja dan yang tidak bekerja lebih cepat dari membaca buku atau panduan. Jangan takut merusak program anda; mempelajari cara memperbaiki kesalahan adalah bagian dari proses pengembangan, dan hal baru hampir selalu tidak pernah bekerja dengan baik pada awalnya.[2]
Mulailah mempelajari debug. Saat Anda memprogram, Anda pasti akan menemukan galat/bug, yang merupakan kesalahan program dan bisa muncul di mana saja. Galat ini bisa jadi tidak berbahaya, atau malah bisa membuat program Anda tidak bisa berjalan. Mencari galat dan memperbaikinya adalah proses penting dalam pengembangan perangkat lunak, jadi Anda harus terbiasa melakukannya sejak dini.
Saat Anda bereksperimen dengan mengubah program dasar, Anda akan menemukan hal yang tidak berjalan dengan semestinya. Menemukan cara lain agar program berjalan adalah salah satu kemampuan paling berharga yang harus Anda miliki sebagai pemrogram
Berikan komentar pada kode Anda. Hampir setiap bahasa pemrograman memiliki fungsi "komentar", yang memungkinkan Anda mengetik teks yang tidak diproses oleh interpreter atau compiler. Hal ini bukan hanya membantu Anda mengingat fungsi suatu kode dalam program besar, namun juga merupakan proses penting dalam lingkungan kolaboratif, karena komentar memungkinkan orang lain mengerti apa fungsi kode Anda.
Iklan
Metode 4 dari 6: Belajar Dengan Rutin
Tulislah kode program setiap hari. Menguasai bahasa pemrograman memerlukan waktu. Bahkan untuk menguasai bahasa sederhana seperti Python (yang hanya memerlukan 1-2 hari untuk pemahaman sintaksis dasarnya) saja, Anda perlu banyak waktu. Seperti kemampuan lain, latihan adalah kunci untuk menjadi lancar. Cobalah menghabiskan waktu beberapa menit sehari untuk menulis kode, meskipun hanya satu jam di antara waktu kerja dan makan malam.
Aturlah tujuan program Anda. Dengan membuat tujuan yang menantang namun tetap bisa dijangkau, Anda akan dapat mulai memecahkan masalah dan menemukan solusi. Cobalah memilih aplikasi dasar, seperti kalkulator, dan pikirkan cara membuatnya. Gunakan sintaksis dan konsep yang telah Anda pelajari dan terapkan pada program Anda.
Berdiskusilah dengan orang lain dan bacalah program lain. Ada banyak komunitas pemrograman yang dikhususkan untuk disiplin atau bahasa tertentu. Menemukan dan berpartisipasi ke komunitas tersebut akan mempermudah proses belajar Anda. Anda akan mendapat akses ke berbagai jenis contoh dan peralatan yang akan membantu proses belajar Anda. Membaca kode dari pemrogram lain akan memberi inspirasi dan membantu Anda memahami konsep yang belum Anda kuasai.[3]
Carilah forum dan komunitas daring pemrograman untuk bahasa Anda. Pastikan Anda berpartisipasi, tidak cuma bertanya. Komunitas biasanya dipandang sebagai tempat berkolaborasi dan berdiskusi, bukan semata tempat tanya-jawab. Anda boleh meminta tolong, namun jangan lupa menunjukkan kode Anda dan terbukalah untuk mencoba pandangan lain.
Setelah Anda memiliki pengalaman, cobalah menghadiri sesi pemrograman bersama atau hack-a-thon. Keduanya merupakan event di mana orang atau tim berpacu dengan waktu untuk membuat program yang berfungsi dan biasanya berkisar pada tema tertentu. Event tersebut bisa jadi menyenangkan dan menjadi cara yang baik untuk bertemu pemrogram lain.
Tantanglah diri Anda agar proses belajar tetap menyenangkan. Cobalah melakukan hal yang belum Anda ketahui caranya. Cari tahu cara melakukan suatu hal dan implementasikan pada program Anda. Janganlah puas dengan program yang bekerja; lakukan apa pun untuk memastikan seluruh aspek program Anda berjalan sempurna.
Iklan
Metode 5 dari 6: Memperluas Pengetahuan
Ikuti pelatihan pemrograman. Banyak universitas, akademi, dan LPK menyediakan kelas pemrograman yang bisa Anda ikuti meskipun Anda bukan mahasiswa. Kelas pemrograman adalah cara yang baik untuk belajar karena Anda akan dibantu pemrogram berpengalaman, juga bertemu pemrogram lokal lain.
Belilah atau pinjamlah buku panduan. Ada banyak buku pemrograman untuk setiap bahasa. Meskipun pengetahuan Anda tidak seharusnya dibatasi oleh buku, buku pemrograman menawarkan referensi dan contoh-contoh yang baik.
Pelajari matematika dan logika. Kebanyakan konsep pemrograman melibatkan aritmetika dasar, namun Anda mungkin ingin mempelajari konsep lanjutan. Matematika penting dikuasai jika Anda mengembangkan simulasi kompleks atau program algoritma lainnya. Untuk pemrograman biasa, Anda tidak perlu matematika kompleks. Mempelajari logika, terutama logika komputer, akan membantu Anda memahami cara memecahkan masalah untuk program tingkat lanjut.
Jangan berhenti memprogram. Sebuah teori populer menyatakan bahwa seorang master memerlukan 10 ribu jam terbang. Meskipun kebenarannya masih diperdebatkan, prinsip umumnya tetap berlaku: menguasai suatu hal memerlukan waktu dan dedikasi. Jangan berharap Anda bisa memahami semuanya dalam satu malam, namun jika Anda tetap fokus dalam belajar, Anda mungkin bisa menjadi ahli di bidang Anda.[4]
Pelajari bahasa pemrograman lain. Meskipun Anda bisa bertahan dengan satu bahasa pemrograman, banyak pemrogram memperbesar daya saing mereka dengan belajar bahasa pemrograman lain. Bahasa pemrograman kedua atau ketiga mereka biasanya mendukung bahasa pertama mereka, dan membantu mereka mengembangkan program yang lebih kompleks dan menarik. Setelah Anda memahami dengan baik bahasa pertama Anda, pelajarilah bahasa kedua.
Anda mungkin merasa bahwa mempelajari bahasa kedua lebih cepat dari mempelajari bahasa pertama. Konsep pemrograman dasar dapat diterapkan dalam berbagai bahasa, terutama jika bahasanya masih terkait.
Iklan
Metode 6 dari 6: Menerapkan Kemampuan
Ikutilah kuliah S1. Meskipun sebenarnya tidak harus, kuliah S1 di universitas akan membuat Anda terekspos pada berbagai bahasa, dan membantu Anda memperluas jaringan profesional dan siswa lain. Metode ini tentunya bukan untuk siapa saja, dan banyak pemrogram sukses tidak pernah kuliah di institusi resmi.
Buatlah portfolio. Setelah Anda membuat program dan memperluas pengetahuan, pastikan hasil karya terbaik Anda tersimpan dalam portfolio. Anda bisa menampilkan portfolio Anda pada pewawancara dan calon bos Anda sebagai contoh hasil kerja Anda. Pastikan Anda menampilkan hasil kerja Anda di waktu senggang Anda, dan Anda diizinkan untuk mengikutsertakan hasil pekerjaan Anda untuk perusahaan tempat Anda bekerja.
Dapatkan pekerjaan lepas. Ada banyak prospek kerja lepas bagi pemrogram, terutama pembuat aplikasi ponsel. Cobalah membuat beberapa aplikasi untuk mengerti bagaimana cara kerja mengembangkan aplikasi komersial. Seringkali, Anda bisa menggunakan hasil kerja lepas Anda untuk membangun portfolio dan mengarahkan ke karya Anda yang sudah dipublikasikan.
Kembangkan program komersial atau gratis. Anda tidak perlu bekerja pada orang lain untuk mendapat uang dari pemrograman. Jika Anda bisa memprogram, Anda bisa membuat perangkat lunak sendiri dan merilisnya melalui situs atau pasar lain. Bersiaplah untuk menyediakan dukungan untuk aplikasi yang Anda rilis secara komersial, karena pembeli mengharapkan aplikasinya bekerja.
Aplikasi gratis adalah cara yang populer untuk menyebarkan program atau perkakas kecil. Pengembang tidak akan mendapat uang, namun mendapat nama baik dan pengembang akan lebih terlihat di komunitas.
Iklan
Tips
Jika Anda tertarik mengembangkan permainan, cobalah Python, C++, atau Java. Dari ketiganya, C++ menghasilkan performa terbaik, Python adalah bahasa yang paling mudah dipelajari, dan Java bisa dijalankan di Windows, Mac, dan Linux tanpa perubahan.
Pelajari tentang perangkat lunak gratis dan kode sumber program yang tersedia di Free software directory. Mengapa membuat program baru jika Anda bisa memperbaiki program yang sudah ada? Namun, pastikan Anda mengerti apa yang Anda program.
Untuk kebanyakan orang, membuat program yang menarik atau dapat digunakan lebih menarik daripada mengikuti contoh pada buku. Gunakan mesin pencari untuk menemukan proyek yang menarik minat Anda.
Saat Anda mempelajari sesuatu yang baru, sebaiknya Anda menerapkannya sendiri dan mengubah desainnya, untuk dapat memperkirakan hasilnya dan memahami konsep.
Gunakan antarmuka pemrograman yang baru dan referensi yang tersedia dari pembuat perangkat lunak.
Referensi tersedia untuk menolong Anda. Jangan malu jika Anda tidak bisa mengingat semua kode dalam hati, karena penguasaan perlu waktu. Yang penting, Anda tahu di mana Anda bisa menemukan referensi.
Untuk latihan, cobalah mengajari orang. Bukan saja Anda menjadi lebih kompeten, Anda juga akan dapat berpikir dari berbagai persepsi.
Tentukan minat Anda. Anda bisa mulai belajar bahasa pemrograman apa pun (meskipun beberapa bahasa "lebih mudah" dari bahasa lainnya"), jadi Anda mungkin ingin belajar dengan bertanya pada diri anda: "Apa yang ingin saya capai dengan menguasai bahasa pemrograman?". Hal tersebut akan membantu Anda menentukan bahasa pemrograman apa yang harus Anda pelajari, dan memberikan Anda titik awal yang baik.
Jika Anda ingin menjadi pengembang web, Anda perlu menguasai bahasa yang berbeda dari bahasa yang digunakan pengembang program desktop. Membuat aplikasi ponsel juga memerlukan bahasa yang berbeda dari memprogram mesin. Seluruh keputusan Anda akan menentukan arah pembelajaran Anda.
Iklan
Pertimbangkan untuk mempelajari bahasa yang sederhana. Tak peduli apa pun pilihan Anda, Anda mungkin ingin mempertimbangkan untuk belajar bahasa tingkat tinggi yang lebih sederhana. Bahasa-bahasa tersebut sangat berguna untuk pemula, karena bahasanya mengajarkan konsep-konsep dan pemikiran dasar pemrograman yang bisa diterapkan ke bahasa apapun.[1]
Dua bahasa paling populer dalam kategori ini adalah Python dan Ruby. Keduanya adalah bahasa aplikasi web berorientasi objek yang menggunakan sintaksis mudah dibaca.
Bahasa pemrograman berorientasi objek artinya bahasa tersebut dibangun dengan konsep "objek", atau kumpulan data, dan manipulasinya. Konsep ini digunakan dalam berbagai bahasa pemrograman tingkat lanjut, seperti C++, Java, Objective-C, dan PHP.
Gambar berjudul Learn a Programming Language Step 33
Bacalah beberapa panduan dasar untuk berbagai bahasa. Jika Anda masih belum yakin bahasa apa yang ingin Anda pelajari, bacalah panduan untuk beberapa bahasa berbeda. Jika sebuah bahasa lebih mudah dimengerti dari bahasa lainnya, cobalah menggunakan bahasa tersebut untuk mengetahui kecocokannya dengan Anda. Ada ribuan tutorial untuk setiap bahasa pemrograman di Internet, dan banyak diantaranya tersedia di WikiHow
Python - Bahasa pemula yang hebat dan cukup berdaya jika Anda mulai mengerti penggunaannya. Bahasa ini dipakai di banyak aplikasi web, dan bahkan beberapa permainan.
Java - Dipakai di berbagai jenis program, mulai permainan, aplikasi web, hingga perangkat lunak ATM.
HTML - Bahasa awal yang wajib dikuasai seluruh pengembang web. Anda harus mengenal HTML sebelum mempelajari bahasa pemrograman web lain.
C - Meskipun sudah cukup tua, C masih berdaya, dan menjadi basis dari C++, C# dan Objective-C yang lebih baru.
Iklan
Metode 2 dari 6: Memulai Dari Awal
Pelajari konsep dasar dari bahasa pemrograman pilihan Anda. Meskipun langkahnya akan tergantung pada bahasa pemrograman yang Anda pilih, seluruh bahasa pemrograman memiliki konsep dasar yang berguna untuk membangun program. Mempelajari konsep tersebut sejak dini akan mempermudah Anda menyelesaikan masalah dan membuat kode yang berdaya serta efisien. Di bawah ini adalah konsep dasar umum yang banyak ditemukan di bahasa berbeda:
Variabel - Variabel adalah cara menyimpan dan merujuk pada bagian data yang selalu berubah. Variabel bisa dimanipulasi, dan seringkali memiliki jenis tertentu seperti "integer", "characters", dll, yang menentukan data apa saja yang bisa disimpan. Saat membuat program, variabel biasanya memiliki nama yang membuatnya sedikit lebih mudah dipahami oleh pembaca manusia. Hal tersebut mempermudah variabel berinteraksi dengan bagian kode lainnya.
Pernyataan kondisional - Pernyataan ini adalah aksi yang dilakukan berdasarkan kebenaran atau kesalahan sebuah pernyataan. Bentuk paling umum dari pernyataan kondisional adalah "If-Then", Jika pernyataannya benar (misal x = 5), maka sesuatu akan terjadi. Jika pernyataannya salah (misal x != 5), maka hal lain akan terjadi.
Fungsi atau Sub-rutin - Nama dari konsep ini berbeda-beda, tergantung bahasa pemrograman. Konsep ini bia disebut "Procedure", "Method", atau "Callable Unit", dan berupa program lebih kecil dalam sebuah program. Sebuah fungsi dapat "dipanggil" oleh program berkali-kali, dan memungkinkan pemrogram membuat program kompleks dengan mudah.
Data input - Konsep ini sangat luas dan digunakan di hampir seluruh bahasa pemrograman. Konsep ini mencakup penanganan masukan pengguna dan menyimpan data yang sudah dimasukkan. Cara pemasukan data tergantung dari jenis program dan input yang tersedia bagi pengguna (papan ketik, berkas, dll). Hal ini terkait dengan Output, yang akan menampilkan hasil pada pengguna, baik dalam bentuk tampilan di layar atau berkas.
Gambar berjudul Learn a Programming Language Step 5
2
Pasanglah perangkat lunak yang diperlukan. Kebanyakan bahasa pemrograman memerlukan "compiler", sebuah program yang menerjemahkan kode ke bahasa yang dipahami mesin. Bahasa lain, seperti Python, menggunakan interpreter, yang bisa menjalankan kode tanpa proses "compile".
Beberapa bahasa memiliki IDE (Integrated Development Environment), yang biasanya berisi penyunting kode, "compiler" atau interpreter, dan "debugger". IDE memungkinkan pemrogram melakukan fungsi yang diperlukan di satu tempat. IDE juga mungkin memiliki representasi visual dari hirarki dan direktori objek.
Ada banyak penyunting kode tersedia di Internet. Penyunting kode menawarkan cara yang berbeda untuk menebalkan sintaks dan menawarkan peralatan ramah pengembang lain.
Iklan
Metode 3 dari 6: Membuat Program Pertama Anda
Berfokuslah pada satu konsep dalam setiap waktu. Salah satu program pertama yang diajarkan untuk setiap bahasa adalah "Hello World". Program ini adalah program sederhana yang menampilkan teks "Hello World" (atau variasi lainnya) di layar. Program ini mengajarkan pemrogram pemula untuk membuat program fungsional dasar dan cara menangani keluaran (output). Dengan mengubah teks, Anda dapat mempelajari bagaimana data dasar ditangani oleh program. WikiHow bahasa Inggris memiliki beberapa panduan membuat program "Hello World" dalam berbagai bahasa pemrograman:
Hello World in Python
Hello World in Ruby
Hello World in C
Hello World in PHP
Hello World in C#
Hello World in Java
Belajarlah dengan melakukan dekonstruksi dari contoh program daring. Ada ribuan contoh kode di internet untuk hampir segala jenis bahasa pemrograman. Gunakan contoh tersebut untuk mempelajari bagaimana berbagai aspek dari sebuah bahasa bekerja dan bagaimana berbagai bagian bahasa berinteraksi. Ambillah bagian-bagian dari contoh yang tersedia untuk membuat program Anda sendiri.
Periksalah sintaksis. Sintaksis adalah cara penulisan sebuah bahasa yang dimengerti oleh "compiler" dan "interpreter". Setiap bahasa memiliki sintaksis yang berbeda, meskipun beberapa bagian sintaksis juga digunakan di banyak bahasa pemrograman. Mempelajari sintaksis sangatlah penting untuk mempelajari pemrograman, dan biasanya terpikir pertama kali di benak banyak orang ketika mendengar tentang pemrograman komputer. Di dunia nyata, sintaksis hanyalah fondasi untuk membangun konsep-konsep lebih lanjut.
Bereksperimenlah dengan perubahan. Buatlah perubahan pada program contoh Anda dan cobalah hasilnya. Dengan bereksperimen, Anda akan mempelajari apa yang bekerja dan yang tidak bekerja lebih cepat dari membaca buku atau panduan. Jangan takut merusak program anda; mempelajari cara memperbaiki kesalahan adalah bagian dari proses pengembangan, dan hal baru hampir selalu tidak pernah bekerja dengan baik pada awalnya.[2]
Mulailah mempelajari debug. Saat Anda memprogram, Anda pasti akan menemukan galat/bug, yang merupakan kesalahan program dan bisa muncul di mana saja. Galat ini bisa jadi tidak berbahaya, atau malah bisa membuat program Anda tidak bisa berjalan. Mencari galat dan memperbaikinya adalah proses penting dalam pengembangan perangkat lunak, jadi Anda harus terbiasa melakukannya sejak dini.
Saat Anda bereksperimen dengan mengubah program dasar, Anda akan menemukan hal yang tidak berjalan dengan semestinya. Menemukan cara lain agar program berjalan adalah salah satu kemampuan paling berharga yang harus Anda miliki sebagai pemrogram
Berikan komentar pada kode Anda. Hampir setiap bahasa pemrograman memiliki fungsi "komentar", yang memungkinkan Anda mengetik teks yang tidak diproses oleh interpreter atau compiler. Hal ini bukan hanya membantu Anda mengingat fungsi suatu kode dalam program besar, namun juga merupakan proses penting dalam lingkungan kolaboratif, karena komentar memungkinkan orang lain mengerti apa fungsi kode Anda.
Iklan
Metode 4 dari 6: Belajar Dengan Rutin
Tulislah kode program setiap hari. Menguasai bahasa pemrograman memerlukan waktu. Bahkan untuk menguasai bahasa sederhana seperti Python (yang hanya memerlukan 1-2 hari untuk pemahaman sintaksis dasarnya) saja, Anda perlu banyak waktu. Seperti kemampuan lain, latihan adalah kunci untuk menjadi lancar. Cobalah menghabiskan waktu beberapa menit sehari untuk menulis kode, meskipun hanya satu jam di antara waktu kerja dan makan malam.
Aturlah tujuan program Anda. Dengan membuat tujuan yang menantang namun tetap bisa dijangkau, Anda akan dapat mulai memecahkan masalah dan menemukan solusi. Cobalah memilih aplikasi dasar, seperti kalkulator, dan pikirkan cara membuatnya. Gunakan sintaksis dan konsep yang telah Anda pelajari dan terapkan pada program Anda.
Berdiskusilah dengan orang lain dan bacalah program lain. Ada banyak komunitas pemrograman yang dikhususkan untuk disiplin atau bahasa tertentu. Menemukan dan berpartisipasi ke komunitas tersebut akan mempermudah proses belajar Anda. Anda akan mendapat akses ke berbagai jenis contoh dan peralatan yang akan membantu proses belajar Anda. Membaca kode dari pemrogram lain akan memberi inspirasi dan membantu Anda memahami konsep yang belum Anda kuasai.[3]
Carilah forum dan komunitas daring pemrograman untuk bahasa Anda. Pastikan Anda berpartisipasi, tidak cuma bertanya. Komunitas biasanya dipandang sebagai tempat berkolaborasi dan berdiskusi, bukan semata tempat tanya-jawab. Anda boleh meminta tolong, namun jangan lupa menunjukkan kode Anda dan terbukalah untuk mencoba pandangan lain.
Setelah Anda memiliki pengalaman, cobalah menghadiri sesi pemrograman bersama atau hack-a-thon. Keduanya merupakan event di mana orang atau tim berpacu dengan waktu untuk membuat program yang berfungsi dan biasanya berkisar pada tema tertentu. Event tersebut bisa jadi menyenangkan dan menjadi cara yang baik untuk bertemu pemrogram lain.
Tantanglah diri Anda agar proses belajar tetap menyenangkan. Cobalah melakukan hal yang belum Anda ketahui caranya. Cari tahu cara melakukan suatu hal dan implementasikan pada program Anda. Janganlah puas dengan program yang bekerja; lakukan apa pun untuk memastikan seluruh aspek program Anda berjalan sempurna.
Iklan
Metode 5 dari 6: Memperluas Pengetahuan
Ikuti pelatihan pemrograman. Banyak universitas, akademi, dan LPK menyediakan kelas pemrograman yang bisa Anda ikuti meskipun Anda bukan mahasiswa. Kelas pemrograman adalah cara yang baik untuk belajar karena Anda akan dibantu pemrogram berpengalaman, juga bertemu pemrogram lokal lain.
Belilah atau pinjamlah buku panduan. Ada banyak buku pemrograman untuk setiap bahasa. Meskipun pengetahuan Anda tidak seharusnya dibatasi oleh buku, buku pemrograman menawarkan referensi dan contoh-contoh yang baik.
Pelajari matematika dan logika. Kebanyakan konsep pemrograman melibatkan aritmetika dasar, namun Anda mungkin ingin mempelajari konsep lanjutan. Matematika penting dikuasai jika Anda mengembangkan simulasi kompleks atau program algoritma lainnya. Untuk pemrograman biasa, Anda tidak perlu matematika kompleks. Mempelajari logika, terutama logika komputer, akan membantu Anda memahami cara memecahkan masalah untuk program tingkat lanjut.
Jangan berhenti memprogram. Sebuah teori populer menyatakan bahwa seorang master memerlukan 10 ribu jam terbang. Meskipun kebenarannya masih diperdebatkan, prinsip umumnya tetap berlaku: menguasai suatu hal memerlukan waktu dan dedikasi. Jangan berharap Anda bisa memahami semuanya dalam satu malam, namun jika Anda tetap fokus dalam belajar, Anda mungkin bisa menjadi ahli di bidang Anda.[4]
Pelajari bahasa pemrograman lain. Meskipun Anda bisa bertahan dengan satu bahasa pemrograman, banyak pemrogram memperbesar daya saing mereka dengan belajar bahasa pemrograman lain. Bahasa pemrograman kedua atau ketiga mereka biasanya mendukung bahasa pertama mereka, dan membantu mereka mengembangkan program yang lebih kompleks dan menarik. Setelah Anda memahami dengan baik bahasa pertama Anda, pelajarilah bahasa kedua.
Anda mungkin merasa bahwa mempelajari bahasa kedua lebih cepat dari mempelajari bahasa pertama. Konsep pemrograman dasar dapat diterapkan dalam berbagai bahasa, terutama jika bahasanya masih terkait.
Iklan
Metode 6 dari 6: Menerapkan Kemampuan
Ikutilah kuliah S1. Meskipun sebenarnya tidak harus, kuliah S1 di universitas akan membuat Anda terekspos pada berbagai bahasa, dan membantu Anda memperluas jaringan profesional dan siswa lain. Metode ini tentunya bukan untuk siapa saja, dan banyak pemrogram sukses tidak pernah kuliah di institusi resmi.
Buatlah portfolio. Setelah Anda membuat program dan memperluas pengetahuan, pastikan hasil karya terbaik Anda tersimpan dalam portfolio. Anda bisa menampilkan portfolio Anda pada pewawancara dan calon bos Anda sebagai contoh hasil kerja Anda. Pastikan Anda menampilkan hasil kerja Anda di waktu senggang Anda, dan Anda diizinkan untuk mengikutsertakan hasil pekerjaan Anda untuk perusahaan tempat Anda bekerja.
Dapatkan pekerjaan lepas. Ada banyak prospek kerja lepas bagi pemrogram, terutama pembuat aplikasi ponsel. Cobalah membuat beberapa aplikasi untuk mengerti bagaimana cara kerja mengembangkan aplikasi komersial. Seringkali, Anda bisa menggunakan hasil kerja lepas Anda untuk membangun portfolio dan mengarahkan ke karya Anda yang sudah dipublikasikan.
Kembangkan program komersial atau gratis. Anda tidak perlu bekerja pada orang lain untuk mendapat uang dari pemrograman. Jika Anda bisa memprogram, Anda bisa membuat perangkat lunak sendiri dan merilisnya melalui situs atau pasar lain. Bersiaplah untuk menyediakan dukungan untuk aplikasi yang Anda rilis secara komersial, karena pembeli mengharapkan aplikasinya bekerja.
Aplikasi gratis adalah cara yang populer untuk menyebarkan program atau perkakas kecil. Pengembang tidak akan mendapat uang, namun mendapat nama baik dan pengembang akan lebih terlihat di komunitas.
Iklan
Tips
Jika Anda tertarik mengembangkan permainan, cobalah Python, C++, atau Java. Dari ketiganya, C++ menghasilkan performa terbaik, Python adalah bahasa yang paling mudah dipelajari, dan Java bisa dijalankan di Windows, Mac, dan Linux tanpa perubahan.
Pelajari tentang perangkat lunak gratis dan kode sumber program yang tersedia di Free software directory. Mengapa membuat program baru jika Anda bisa memperbaiki program yang sudah ada? Namun, pastikan Anda mengerti apa yang Anda program.
Untuk kebanyakan orang, membuat program yang menarik atau dapat digunakan lebih menarik daripada mengikuti contoh pada buku. Gunakan mesin pencari untuk menemukan proyek yang menarik minat Anda.
Saat Anda mempelajari sesuatu yang baru, sebaiknya Anda menerapkannya sendiri dan mengubah desainnya, untuk dapat memperkirakan hasilnya dan memahami konsep.
Gunakan antarmuka pemrograman yang baru dan referensi yang tersedia dari pembuat perangkat lunak.
Referensi tersedia untuk menolong Anda. Jangan malu jika Anda tidak bisa mengingat semua kode dalam hati, karena penguasaan perlu waktu. Yang penting, Anda tahu di mana Anda bisa menemukan referensi.
Untuk latihan, cobalah mengajari orang. Bukan saja Anda menjadi lebih kompeten, Anda juga akan dapat berpikir dari berbagai persepsi.
Rabu, 18 Mei 2016
Dasar-Dasar Kriptografi & Implementasinya
Dasar-Dasar Kriptografi dan Implementasinya Dengan Borland Delphi 7 – Dasar-Dasar Cryptography dan Implementasinya
Dasar Dasar Kriptografi
Dokumen ini dibuat dengan tujuan untuk memasyarakatkan kriptografi dan meng-kriptografikan masyarakat. Karena, masih banyak kawan-kawan yang menganggap kriptografi sebagai ilmu yang sangat tinggi dan sulit dipelajari, bahkan ada yang mengkategorikan ilmu ini sebagai ilmu gaib. 😀 Saya tidak akan bilang bahwa ilmu ini mudah, dan dapat dipelajari hanya dalam waktu semalam. Tidak kawan, semua ilmu yang bagus butuh proses.
Dokumen ini tidak dibuat untuk menjadi referensi utama untuk kriptografi. Karena, kriptografi terlalu luas untuk dibukukan dalam satu buku setebal novel Lord of The Ring, apalagi dalam satu dokumen facebook seperti ini! 😀 Lebih tepat jika dokumen ini dijadikan sebagai “penunjuk jalan” ke dunia kriptografi yang menarik dan menyenangkan dengan kemungkinan eksploitasi tanpa batas. Untuk kawan-kawan yang sudah lebih tinggi ilmu dan pengalamannya di bidang ini, dengan segala kerendahan hati, saya mohon izin dan maklum atas kesalahan yang mungkin ada di dokumen ini.
Tujuan awal dari kriptografi adalah menyembunyikan isi pesan sehingga tidak dapat terbaca oleh pihak-pihak yang tak diinginkan, tetapi masih dapat dimengerti oleh pihak yang dituju. Seiring perkembangan jaman, kriptografi banyak diterapkan di berbagai bidang, mulai dari tukar menukar informasi di perang dunia kedua, hingga dunia komputerisasi yang kita alami saat ini.
Dokumen ini, tentu saja, tidak akan membahas bagaimana pasukan Nazi mengoperasikan “Enigma”, sehingga membingungkan pihak sekutu. Dokumen ini “hanya” akan membahas kriptografi dan implementasinya di bidang IT. Implementasi yang akan ditunjukkan juga hanya implementasi dasar dan bersifat “offline”, bukan implementasi canggih seperti “email transaction”, “pay pal autorization”, “handshake cryptographic”, dll. Tapi, percayalah kawan, semua implementasi canggih itu, berdasar dari implementasi dasar ini.
Dalam dokumen ini akan dipakai istilah yang umum dipakai dalam dokumen-dokumen kriptografi. Contohnya adalah “plain text”, yaitu pesan asli yang hendak disampaikan. “Cipher text“, yang artinya pesan yang telah di-enskripsi. Dan istilah-istilah lainnya yang mungkin membingungkan, maaf bila itu terjadi.
Sesuai judulnya, dokumen ini menggunakan Borland Delphi 7 sebagai compiler kode-kode yang digunakan. Kenapa? Yap, karena saya memang paling nyaman menggunakan Delphi dengan versi tersebut untuk hal-hal yang berbau kriptografi. Anda bisa memilih menggunakan compiler lain yang paling anda sukai. Untuk library yang dijadikan referensi kriptografi, saya selalu mempercayakan kepada bang Barton, di situs : http://www.cityinthesky.co.uk/opensource/dcpcrypt. Selain open source, alasan saya menggunakan library tersebut adalah kelengkapan dari metode kriptografi yang digunakan. Namun lagi-lagi, ini tidak mengikat. Anda bebas menggunakan library manapun yang paling cocok dengan anda, atau bila anda sudah cukup memahami alur dari algoritma suatu metoda, anda bisa menulis library sendiri.
File-file implementasi yang disertakan dalam dokumen ini merupakan source yang siap di-compile. Bagi kawan-kawan yang memiliki Borland Delphi 7 terinstall di komputernya, bisa langsung meng-klik file dengan ekstensi “dpr”. Bagi yang tidak menginstall compiler tersebut, untuk mengetahui isi kode program, bisa membuka file dengan ekstensi “pas” dengan notepad atau text editor lainnya. File “exe” juga disertakan untuk melihat implementasinya secara langsung.
Dari output yang dihasilkan, kriptografi dapat dibagi menjadi dua, yaitu kriptografi “satu-arah” dan “dua arah”. Dan dalam kriptografi “dua-arah” pun, bila dilihat dari jenis “key” yang digunakan, dapat dibagi menjadi dua, yaitu “symetric key” dan “asymetric key”. Begitulah kira-kira kerangka dari dokumen ini. Walaupun terbagi-bagi seperti itu, tidak menutup kemungkinan semua jenis kriptografi tersebut di implementasikan bersama-sama, atau yang lebih dikenal dengan metode “hybrid”. Pada akhir dokumen, akan diperlihatkan implementasi dari metode hybrid ini.
Dalam implementasinya di dunia IT, plain text yang diinput ke dalam kriptografi, bentuknya bisa bermacam-macam. Bisa file exe, dokumen, gambar, musik, dan semua file digital lainnya. Tergantung dari sang pengguna yang meng-implementasikannya. Inilah mengapa kemungkinan dalam kriptografi menjadi tak terbatas dan sangat menarik! 🙂
////////////////////////////////////
Kriptografi Satu Arah
////////////////////////////////////
Sesuai namanya, kriptografi ini hanya bisa berjalan satu arah. Atau dengan kata lain, hanya bisa merubah plain text menjadi cipher text, tapi tidak bisa mengembalikan cipher text menjadi plain text. Kriptografi jenis ini sering disebut sebagai “hash”. Ciri khusus hash ini adalah, chiper text yang dihasilkan berbeda-beda (unik) untuk setiap plain text yang di input. Karena ciri khusus ini, hash sering kali dimanfaatkan sebagai “sidik jari” suatu file atau dokumen.
Metode hash yang umum digunakan adalah MD5, SHA1, RipeMD128. Sebenarnya masih banyak metode lainnya, tapi dalam implementasi yang akan disajikan, metode hash yang digunakan adalah ketiga metode tersebut. Implementasi bisa di download di :
http://www.mediafire.com/?4yz9vj0v8sbydf3
Dengan mengeksekusi file “exe” dari implementasi tersebut, dapat kita lihat bahwa tools ini mampu menghitung hash dari plain text dengan jenis text maupun file. Tapi, jangan coba-coba menghitung hash dari file yang berukuran >= 10 MB dengan tools ini, kecuali jika prosessor anda cukup mumpuni. Karena memang, implementasi ini dirancang dengan tidak memperhatikan optimasi pembacaan file. Silahkan anda optimasi sesuka anda. 🙂
Dalam implementasi tersebut, kode utama terletak pada file “Unit1.pas”. File “DCPmd5.pas”, “DCPsha1.pas”, dan “DCPripemd128.pas” merupakan library dari metode yang bersangkutan yang disediakan oleh DCPCrypt. Sedangkan, file “DCPcrypt2.pas”, “DCPconst.pas”, “DCPblockciphers.pas”, dan “DCPbase64.pas” merupakan file yang “diwajibkan” oleh
DCPCrypt untuk ditaruh di folder yang sama dengan kode utama. Atau bila anda sudah menginstall Borland Delphi 7, anda bisa melihat itu semua dengan membuka file “Project1.dpr”. File yang lain bisa diabaikan, karena merupakan hasil “generate” dari compiler.
Oke, kita coba bedah “source code” dari tool ini untuk memperjelas implementasi kriptografi satu arah atau “hash” ini. Mari kita lihat pada kode utama di baris 42 sampai baris 100. Di situ dapat kita lihat tiga fungsi untuk menghitung masing-masing metode hash. Fungsi-fungsi ini dibuat sendiri oleh saya dengan berpedoman pada petunjuk pemakaian yang dianjurkan oleh DCPCrypt, yang artinya fungsi ini tidak “baku”, dan ya, anda bisa membuat versi yang berbeda sesuai dengan kebutuhan dari implementasi yang anda inginkan.
Dari ketiga fungsi tersebut, dapat kita lihat bahwa fungsi tersebut membutuhkan 1 parameter yang memiliki tipe String, dan akan mengembalikan String juga. Hal ini saya lakukan dengan pertimbangan untuk mempertahankan format awal kriptografi, dari Plain Text berbentuk string menjadi Cipher Text berbentuk string juga. Tapi sekali lagi, ini tidak baku, anda bisa mengganti parameter input menjadi tipe array dari byte misalnya, untuk membaca stream.
Lalu di baris 122 sampai baris 171 pada kode utama, dapat kita lihat proses perhitungan hash dilakukan pada saat user meng-klik tombol “Hash It”. Dapat kita lihat, jika user memilih untuk menggunakan mode “Text”, maka kodenya cukup simpel, hanya meng-assign variable “strPlain” dengan apa yang di-input oleh user. Yang sedikit “tricky” adalah jika user memilih mode “File”, atau menghitung hash dari File yang dipilih. Berbagai macam pendekatan bisa dilakukan di sini. Mengingat ketiga fungsi untuk menghitung hash tadi membutuhkan Plain Text dengan bentuk string, maka pendekatan yang saya pilih adalah merubah semua “isi” file ke dalam bentuk string, lalu meng-assign string tersebut ke dalam strPlain. Setelah variable strPlain siap, kita masukkan variable tersebut sebagai parameter di fungsi untuk menghitung hash dengan metode yang dipilih user.
Demikianlah salah satu contoh implementasi kriptografi satu arah. Implementasi ini bisa dimanfaatkan untuk mengecek ke-aslian suatu file, karena bila suatu file sudah di modifikasi, maka nilai hash akan berubah. Bila anda tertarik untuk melihat detail dari algoritma dari setiap metode, anda bisa melihatnya pada file “pas” yang bersangkutan. Atau saran saya, coba debug program tersebut, agar anda dapat “merasakan” bagaimana algoritmanya mengalir.
////////////////////////////////////
Kriptografi Dua Arah
////////////////////////////////////
Kriptografi jenis ini mungkin sering direferensikan sebagai kriptografi yang “sesungguhnya”, karena memiliki metode “encrypt” untuk merubah plain text menjadi cipher text, dan metode “decrypt” untuk mengembalikan cipher text menjadi plain text. Dalam kriptografi jenis ini, selain plain text dan cipher text, dibutuhkan parameter lainnya yang disebut “key”. Saat ini dikenal dua jenis key yang digunakan, yaitu “Symmetric Key” dan “Assymetric Key”.
Yang perlu diingat dalam proses kriptografi dua arah ini adalah, proses encrypt dan decrypt harus memiliki operasi yang saling bertolak belakang. Misal, pada proses encrypt kita menggunakan operator “+” (tambah), maka pada proses decrypt kita harus menggunakan operator “-“ (kurang). Karena itu, dalam implementasi kriptografinya proses encrypt dan decrypt dibuat menjadi dua implementasi yang berbeda, namun saling melengkapi. Untuk proses decrypt, implementasi akan meniru proses verifikasi serial sebuah software, sedangkan untuk proses encrypt, implementasi akan bertindak sebagai “keygen”-nya.
————————
Symmetric Key
————————
Yang dimaksud dengan symmetric key atau key yang simetris adalah, parameter key yang digunakan dalam proses encrypt dan decrypt, sama. Panjang dari parameter key ini pun bervariasi tergantung dari metoda yang digunakan. Dalam implementasi yang akan diberikan, metoda yang digunakan adalah RC4 dan Blowfish, dengan panjang key 128 bit atau 16 byte.
Dengan alasan tertentu, implementasi akan diberikan dan dibahas dimulai dari proses decrypt terlebih dahulu. Implementasi decrypt dapat di download pada:
http://www.mediafire.com/?iefq1v1pzvqbt9l
Sekali lagi, implementasi ini meniru verifikasi serial sebuah software, tetapi tentu saja, dibuat se-sederhana mungkin, agar proses kriptografinya lebih menonjol. Jadi, implementasi ini bersifat sebagai “penerima” pesan, kemudian mencoba men-decrypt pesan tersebut dan mem-verikasikan apakah pesan tersebut berasal dari “pengirim” pesan yang sah atau tidak.
File-file yang terdapat dalam implementasi ini, tidak jauh berbeda dengan yang berada pada implementasi kriptografi satu arah, hanya library metoda yang bersangkutan yang berubah. Kode utama, lagi-lagi terletak di “Unit1.pas”. Mari kita buka kode tersebut untuk mulai membedah implementasi ini.
Baris 33 sampai dengan 87, menunjukkan dua fungsi untuk men-decrypt dengan masing-masing metoda. Proses decrypt kedua metoda dibuat seragam dengan tujuan menghindari kebingungan, dan yang pasti bukan bentuk baku. Yang berbeda tentu saja algorithma inti masing-masing metoda yang terdapat di file *.pas masing-masing. Dikarenakan penyeragaman ini, pembahasan satu metoda bisa mewakili metoda yang satunya.
Pada baris 35 dapat kita lihat, inisialisasi konstanta key yang disiapkan untuk proses decrypt. Key dibuat dengan format array dari byte dengan lebar 16. Atau, dengan kata lain, key memiliki panjang 16 byte, atau 128 (16*8) bit. Yang perlu dicatat adalah, bahwa dalam Delphi, notasi “$” menunjukkan bahwa angka yang ditulis dalam bentuk hexadecimal. Jadi, pendeklarasian array tersebut bisa saja ditulis seperti ini :
key : array[0..15] of byte = (71,114,105,110,100,83,116,111,110,101,73,115,71,111,111,100);
Pendeklarasian array diatas menggunakan notasi desimal, dengan nilai yang sama. Lalu, mengapa dalam implementasi ditulis dengan notasi hexadecimal? I just love hex, nothing more.
Oke, mari kita lihat di baris 39 dan 40. Di situ dideklarasikan dua variable array untuk menampung input dan output dari proses decrypt ini. Karena yang dilakukan saat ini adalah proses decrypt, maka input adalah Cipher Text yang ditampung pada variable arrCipher, sedangkan output adalah Plain Text yang ditampung pada variable arrPlain. Kedua variable tersebut dibuat dengan panjang yang sama yaitu 8 byte. Hal ini perlu dicatat, karena akan berpengaruh pada penggunaan fungsi ini, kita akan sampai ke sana nanti.
Fungsi decrypt ini menerima parameter dalam bentuk String sebagai input, seperti yang terlihat pada baris 33, sedangkan variable yang di-input ke proses decrypt inti berbentuk array dari byte, seperti yang terlihat pada baris 51. Maka, baris 44 sampai 48, bertugas untuk meng-convert variable String menjadi array of byte. Ada banyak metode yang bisa digunakan untuk tugas ini, seperti misalnya mengambil nilai ASCII dari masing-masing karakter di dalam string, lalu menyimpannya ke dalam array of byte. Tetapi, dalam implementasi ini, metode yang akan digunakan adalah, mengambil setiap 2 (dua) karakter dari string, lalu ditambahkan notasi “$” di depannya untuk kemudian di rubah kedalam bentuk byte (integer) dan disimpan ke dalam array. Dan hal ini dilakukan dengan loop sebanyak 8 (0-7)putaran, karena panjang variable penampung yang ada (arrCipher) adalah 8. Karena itu, panjang String yang valid untuk di-input ke dalam fungsi ini adalah 16 (8*2) karakter, dan karakter yang ada haruslah karakter bilangan hexadecimal, yaitu 1-9 dan A-F. Mari kita ambil contoh untuk memperjelas :
Misalkan, string yang di-input adalah :
“1234567890ABCDEF”
Maka array of byte yang terbentuk adalah :
($12, $34, $56, $78, $90, $AB, $CD, $EF)
atau dalam bentuk desimal adalah :
(18, 52, 86, 120, 144, 171, 205, 239)
Semoga contoh di atas cukup jelas untuk menggambarkan “aliran” algo konversi tersebut.
Baris 49 sampai 52 merupakan kode untuk melakukan proses inti decrypt yang diwajibkan oleh library DCPCrypt ini. Dan hasil dari proses decrypt inti ini ditampung di variable arrPlain yang berbentuk array of byte. Baris 53 mempersiapkan (mengosongkan) variable strResult yang akan menampung hasil dari fungsi decrpyt ini. Jika pada input tadi kita meng-convert dari variable String ke array of byte, sekarang untuk output kita lakukan kebalikannya, merubah variable array of byte ke String. Dan itulah yang dilakukan pada baris 54 sampai 57.
Metode yang digunakan sekarang adalah mengambil setiap byte dari array, lalu men-subtitusikannya dengan karakter yang memiliki nilai ASCII yang bersangkutan, untuk kemudian ditambahkan di variable strResult. Metode ini lebih simpel dari metode sebelumnya, tetapi mari kita ambil contoh untuk lebih memperjelas :
Misalkan, dalam variable arrPlain adalah :
(71, 119, 84, 97, 109, 112, 97, 110)
maka dalam variable strResult akan terbentuk :
“GwTampan”
Semoga contoh di atas bisa memperjelas apa yang sebenarnya sudah cukup jelas. ;D
Demikianlah penjelasan tentang fungsi yang digunakan untuk melakukan decrypt. Fungsi tersebut perlu dipahami sepenuhnya jika kita ingin membuat proses encrypt yang diperlukan untuk membuat keygen dari “software” verifikasi ini. Kita akan bahas hal tersebut dalam implementasi berikutnya. Untuk saat ini, mari kita masuk pada fungsi inti dari program ini, yang dieksekusi pada saat user menekan tombol “Check”.
Fungsi tersebut, tentu saja, terletak pada baris 89 sampai 144. Terlihat banyak percabangan “if” di sana, yang mungkin membingungkan sebagian orang. Bila itu yang terjadi, dengan segala kerendahan hati, saya mohon maaf atas buruknya cara pemogramman saya. Tapi saya rasa, percabangan-percabangan ini tidak perlu dibahas semua, karena hanya untuk mengecek kesalahan-kesalahan dasar input dari user. Yang patut dibahas adalah percabangan pada baris 113. Disitu terlihat bahwa jika “Nama” yang diinput user lebih dari 8 karakter, maka yang diambil hanyalah 8 karakter pertama saja. Dan jika “Nama” yang diinput kurang dari 8 karakter, maka variable tersebut digandakan terus-menerus sampai lebih dari 8, untuk kemudian diambil 8 karakter pertamanya. Lagi-lagi, contoh untuk memperjelas :
Misalkan, nama yang diinput adalah :
“CryptographyIsSuperFun”
maka, yang diambil hanyalah :
“Cryptogr”
Dan, jika nama yang diinput adalah :
“FUN”
maka, hasilnya akan menjadi :
“FUNFUNFU”
Dengan ini, kita “memaksa” variable strName untuk tetap memiliki panjang 8 karakter, tidak peduli berapa karakter yang diinput oleh user. Kenapa? Sebelum dijawab, saya harap anda masih ingat karakteristik dari fungsi decrypt di atas tadi, input yang valid haruslah string dengan 16 karakter (ini menjelaskan percabangan pada baris 107), dan ouput yang dihasilkan adalah string dengan 8 karakter. Dan pada baris 133, terdapat “final check” yang membandingkan variable strName dengan strPlain yang merupakan hasil Decrypt dari Serial yang diinput. Otomatis, strPlain akan selalu memiliki panjang 8 karakter, karena itulah kita perlu “memaksa” strName untuk tetap memiliki panjang 8 karakter.
Sebenarnya ada sedikit “bug” yang cukup mengganggu pada implementasi ini. Yaitu, bila kita memasukkan serial dengan panjang 16 karakter, tapi karakter yang diinput bukanlah karakter hexadecimal, maka akan muncul pesan error yang kurang bagus. 😀 Tapi tentu saja, hal tersebut bisa diatasi dengan menambahkan percabangan yang mengecek apakah serial yang diinput merupakan karakter hexadecimal atau bukan. Anda bisa menambahkannya bila anda mau! 😀 🙂
Yap, demikianlah salah satu contoh implementasi proses decrypt yang meniru proses verifikasi serial sebuah software. Untuk melengkapinya, yang tersisa adalah proses encrypt yang akan diterapkan pada keygen untuk verifikasi ini.
Oke, implementasi untuk proses encrypt bisa di download pada :
http://www.mediafire.com/?coc0u4o61wc6jb2
Dalam implementasi ini, jika kita mengeksekusi file “exe”, maka kita bisa meng-generate serial yang valid untuk implementasi verifikasi sebelumnya. Karena memang, implementasi ini bertindak sebagai keygen atau dengan kata lain sebagai “pengirim” pesan. Sedangkan implementasi sebelumnya bertindak sebagai “penerima” pesan.
File-file yang ada dalam implementasi ini sama dengan yang ada di implementasi verifikasi, hanya file “exe” dan “Unit1.pas” yang berbeda, karena implementasi ini menggunakan library dari metoda yang sama dengan implementasi verifikasi. Mari kita buka kode utama implementasi ini di dalam “Unit1.pas” untuk memulai pembedahan kode yang mengasyikan ini.
Yang patut diingat sebelum melakukan pembedahan adalah, bahwa proses pembuatan implementasi keygen ini saling bergantung dengan kode pada implementasi verifikasi. Dan, kita harus melihat bahwa kode keygen ini saling bertolak belakang dengan verifikasi. Yang artinya, jika verifikasi melakukan “buka”, maka keygen melakukan “tutup”, jika verifikasi melakukan “tambah”, maka keygen melakukan “kurang”, dst.
Oke, kita mulai pembedahannya. Kita bisa lihat pada baris 33 sampai 83, terdapat dua fungsi encrypt yang, tentu saja, dibuat seragam, seperti halnya pada implementasi verifikasi. Dan ya, seperti sebelumnya, pembahasan satu metoda bisa mewakili metoda yang satunya. Baris 35 menunjukkan konstanta key yang memang harus sama nilainya dengan proses decrypt, agar kedua proses tersebut saling berhubungan.
Karena proses encrypt ini bertolak belakang dengan proses decrypt, maka kita akan melakukan pembahasan secara terbalik dari bawah ke atas, sambil me-review kode verifikasi. Jadi ada baiknya, jika kita buka kode verifikasi (decrypt) dan keygen (encrypt) secara bersamaan, kecuali jika anda memang sudah hafal dan paham kode verifikasi secara keseluruhan.
Pada baris 44 sampai 48 di kode verifikasi, seperti yang telah dibahas, bahwa fungsi decrypt mengambil setiap dua karakter dari string yang di-input atau cipher text untuk kemudian merubahnya menjadi nilai hex dan menyimpannya ke dalam array of byte. Maka, agar fungsi encrypt kita menghasilkan cipher text yang valid untuk proses tersebut, kita harus melakukan fungsi sebaliknya, ya, merubah array of byte menjadi string dengan format hex. Baris 51 sampai 55 melakukan hal tersebut. Fungsi built-in Delphi “IntToHex” menghasilkan representasi hex dari integer (atau byte) yang diinput. Untuk contoh, silahkan review contoh di atas pada proses verifikasi, tetapi baca dari bawah ke atas.
Kemudian pada baris 49 sampai 52 di kode verifikasi, fungsi decrypt melakukan fungsi inti decrypt sesuai dengan metoda yang dipakai terhadap array of byte hasil konversi dari string yang di-input tadi(cipher text). Maka pada baris 47 sampai 50 di kode keygen, fungsi encrypt harus melakukan fungsi inti encrypt sesuai dengan metoda yang dipakai terhadap array of byte yang nantinya akan di konversi menjadi string output(cipher text), seperti yang telah dibahas pada paragraf sebelumnya.
Lalu pada baris 54 sampai 57 di kode verifikasi, fungsi decrypt mengkonversi lagi array of byte yang telah di “decrypt” ke dalam bentuk string, tetapi kali ini dengan cara subtitusi nilai byte dengan nilai ASCII yang bersangkutan, atau dengan kata lain melakukan konversi byte to ASCII. Maka, fungsi encrpyt kita harus melakukan kebalikannya, yap, konversi ASCII to byte. Baris 43 sampai 46 pada kode keygen menunjukkan hal tersebut, dan ya, fungsi built-in Delphi “Ord” menolong kita untuk melakukan hal tersebut. Dan lagi-lagi, untuk contoh, silahkan lihat contoh “GwTampan” di atas dari bawah ke atas.
Begitulah isi dari fungsi encrypt yang merupakan kebalikan dari fungsi decrypt. Anda bisa menutup kode verifikasi sekarang, jika anda mau. Berikutnya, mari kita bahas penggunaan dari fungsi encrypt ini, pada saat user menekan tombol “G 3 N” yang terletak pada baris 85 sampai 119.
Tidak banyak yang dilakukan dalam kode ini. Baris 97 sampai 108 melakukan hal yang sama dengan yang ada pada kode verifikasi, yaitu memaksa plain text agar tetap memiliki panjang 8 karakter, seperti yang telah dibahas sebelumnya. Dan, jika anda belum menyadarinya, untuk nama “CryptographyIsFun” dan “CryptographyIsSuck” akan menghasilkan serial yang sama, dikarenakan unsur pemaksaan ini. Lalu pada baris 109 sampai 117, kode melakukan encrypt kepada nama (plain text) yang diinput menjadi cipher text yang kemudian di-output menjadi serial.
Demikianlah keseluruhan proses implementasi dari kriptografi dengan key simetris ini. Dan oke, untuk lebih memperjelas lagi, mari kita rangkum keseluruhan proses dengan arah yang “lurus” atau dari encrypt sampai decrypt. Kali ini sang keygen akan kita sebut pengirim, dan sang verifikator akan kita sebut penerima.
Pertama, pengirim men-encrypt nama yang di-input untuk kemudian di-output menjadi serial. Lalu, pengirim mengirimkan pasangan nama dan serial ini kepada penerima. Kemudian, penerima mengecek pasangan nama dan serial yang dikirimkan dengan cara, men-decrypt serial untuk kemudian dibandingkan dengan nama. Jika cocok, maka pasangan nama dan serial tersebut valid dan memang berasal dari pengirim yang sejati, jika tidak cocok, maka pengirim tersebut palsu.
Yap, seperti itulah salah satu contoh implementasi kriptografi dua arah dengan key simetris. Mohon maaf bila penjelasannya terkesan berbelit-belit dan membingungkan, tetapi saya telah mencoba yang terbaik untuk menjelaskan hal yang memang sangat teknis ini. Dan ya, coba “rasakan” bagaimana kode ini mengalir, agar lebih mudah memahaminya. 🙂
Dasar Dasar Kriptografi
Dokumen ini dibuat dengan tujuan untuk memasyarakatkan kriptografi dan meng-kriptografikan masyarakat. Karena, masih banyak kawan-kawan yang menganggap kriptografi sebagai ilmu yang sangat tinggi dan sulit dipelajari, bahkan ada yang mengkategorikan ilmu ini sebagai ilmu gaib. 😀 Saya tidak akan bilang bahwa ilmu ini mudah, dan dapat dipelajari hanya dalam waktu semalam. Tidak kawan, semua ilmu yang bagus butuh proses.
Dokumen ini tidak dibuat untuk menjadi referensi utama untuk kriptografi. Karena, kriptografi terlalu luas untuk dibukukan dalam satu buku setebal novel Lord of The Ring, apalagi dalam satu dokumen facebook seperti ini! 😀 Lebih tepat jika dokumen ini dijadikan sebagai “penunjuk jalan” ke dunia kriptografi yang menarik dan menyenangkan dengan kemungkinan eksploitasi tanpa batas. Untuk kawan-kawan yang sudah lebih tinggi ilmu dan pengalamannya di bidang ini, dengan segala kerendahan hati, saya mohon izin dan maklum atas kesalahan yang mungkin ada di dokumen ini.
Tujuan awal dari kriptografi adalah menyembunyikan isi pesan sehingga tidak dapat terbaca oleh pihak-pihak yang tak diinginkan, tetapi masih dapat dimengerti oleh pihak yang dituju. Seiring perkembangan jaman, kriptografi banyak diterapkan di berbagai bidang, mulai dari tukar menukar informasi di perang dunia kedua, hingga dunia komputerisasi yang kita alami saat ini.
Dokumen ini, tentu saja, tidak akan membahas bagaimana pasukan Nazi mengoperasikan “Enigma”, sehingga membingungkan pihak sekutu. Dokumen ini “hanya” akan membahas kriptografi dan implementasinya di bidang IT. Implementasi yang akan ditunjukkan juga hanya implementasi dasar dan bersifat “offline”, bukan implementasi canggih seperti “email transaction”, “pay pal autorization”, “handshake cryptographic”, dll. Tapi, percayalah kawan, semua implementasi canggih itu, berdasar dari implementasi dasar ini.
Dalam dokumen ini akan dipakai istilah yang umum dipakai dalam dokumen-dokumen kriptografi. Contohnya adalah “plain text”, yaitu pesan asli yang hendak disampaikan. “Cipher text“, yang artinya pesan yang telah di-enskripsi. Dan istilah-istilah lainnya yang mungkin membingungkan, maaf bila itu terjadi.
Sesuai judulnya, dokumen ini menggunakan Borland Delphi 7 sebagai compiler kode-kode yang digunakan. Kenapa? Yap, karena saya memang paling nyaman menggunakan Delphi dengan versi tersebut untuk hal-hal yang berbau kriptografi. Anda bisa memilih menggunakan compiler lain yang paling anda sukai. Untuk library yang dijadikan referensi kriptografi, saya selalu mempercayakan kepada bang Barton, di situs : http://www.cityinthesky.co.uk/opensource/dcpcrypt. Selain open source, alasan saya menggunakan library tersebut adalah kelengkapan dari metode kriptografi yang digunakan. Namun lagi-lagi, ini tidak mengikat. Anda bebas menggunakan library manapun yang paling cocok dengan anda, atau bila anda sudah cukup memahami alur dari algoritma suatu metoda, anda bisa menulis library sendiri.
File-file implementasi yang disertakan dalam dokumen ini merupakan source yang siap di-compile. Bagi kawan-kawan yang memiliki Borland Delphi 7 terinstall di komputernya, bisa langsung meng-klik file dengan ekstensi “dpr”. Bagi yang tidak menginstall compiler tersebut, untuk mengetahui isi kode program, bisa membuka file dengan ekstensi “pas” dengan notepad atau text editor lainnya. File “exe” juga disertakan untuk melihat implementasinya secara langsung.
Dari output yang dihasilkan, kriptografi dapat dibagi menjadi dua, yaitu kriptografi “satu-arah” dan “dua arah”. Dan dalam kriptografi “dua-arah” pun, bila dilihat dari jenis “key” yang digunakan, dapat dibagi menjadi dua, yaitu “symetric key” dan “asymetric key”. Begitulah kira-kira kerangka dari dokumen ini. Walaupun terbagi-bagi seperti itu, tidak menutup kemungkinan semua jenis kriptografi tersebut di implementasikan bersama-sama, atau yang lebih dikenal dengan metode “hybrid”. Pada akhir dokumen, akan diperlihatkan implementasi dari metode hybrid ini.
Dalam implementasinya di dunia IT, plain text yang diinput ke dalam kriptografi, bentuknya bisa bermacam-macam. Bisa file exe, dokumen, gambar, musik, dan semua file digital lainnya. Tergantung dari sang pengguna yang meng-implementasikannya. Inilah mengapa kemungkinan dalam kriptografi menjadi tak terbatas dan sangat menarik! 🙂
////////////////////////////////////
Kriptografi Satu Arah
////////////////////////////////////
Sesuai namanya, kriptografi ini hanya bisa berjalan satu arah. Atau dengan kata lain, hanya bisa merubah plain text menjadi cipher text, tapi tidak bisa mengembalikan cipher text menjadi plain text. Kriptografi jenis ini sering disebut sebagai “hash”. Ciri khusus hash ini adalah, chiper text yang dihasilkan berbeda-beda (unik) untuk setiap plain text yang di input. Karena ciri khusus ini, hash sering kali dimanfaatkan sebagai “sidik jari” suatu file atau dokumen.
Metode hash yang umum digunakan adalah MD5, SHA1, RipeMD128. Sebenarnya masih banyak metode lainnya, tapi dalam implementasi yang akan disajikan, metode hash yang digunakan adalah ketiga metode tersebut. Implementasi bisa di download di :
http://www.mediafire.com/?4yz9vj0v8sbydf3
Dengan mengeksekusi file “exe” dari implementasi tersebut, dapat kita lihat bahwa tools ini mampu menghitung hash dari plain text dengan jenis text maupun file. Tapi, jangan coba-coba menghitung hash dari file yang berukuran >= 10 MB dengan tools ini, kecuali jika prosessor anda cukup mumpuni. Karena memang, implementasi ini dirancang dengan tidak memperhatikan optimasi pembacaan file. Silahkan anda optimasi sesuka anda. 🙂
Dalam implementasi tersebut, kode utama terletak pada file “Unit1.pas”. File “DCPmd5.pas”, “DCPsha1.pas”, dan “DCPripemd128.pas” merupakan library dari metode yang bersangkutan yang disediakan oleh DCPCrypt. Sedangkan, file “DCPcrypt2.pas”, “DCPconst.pas”, “DCPblockciphers.pas”, dan “DCPbase64.pas” merupakan file yang “diwajibkan” oleh
DCPCrypt untuk ditaruh di folder yang sama dengan kode utama. Atau bila anda sudah menginstall Borland Delphi 7, anda bisa melihat itu semua dengan membuka file “Project1.dpr”. File yang lain bisa diabaikan, karena merupakan hasil “generate” dari compiler.
Oke, kita coba bedah “source code” dari tool ini untuk memperjelas implementasi kriptografi satu arah atau “hash” ini. Mari kita lihat pada kode utama di baris 42 sampai baris 100. Di situ dapat kita lihat tiga fungsi untuk menghitung masing-masing metode hash. Fungsi-fungsi ini dibuat sendiri oleh saya dengan berpedoman pada petunjuk pemakaian yang dianjurkan oleh DCPCrypt, yang artinya fungsi ini tidak “baku”, dan ya, anda bisa membuat versi yang berbeda sesuai dengan kebutuhan dari implementasi yang anda inginkan.
Dari ketiga fungsi tersebut, dapat kita lihat bahwa fungsi tersebut membutuhkan 1 parameter yang memiliki tipe String, dan akan mengembalikan String juga. Hal ini saya lakukan dengan pertimbangan untuk mempertahankan format awal kriptografi, dari Plain Text berbentuk string menjadi Cipher Text berbentuk string juga. Tapi sekali lagi, ini tidak baku, anda bisa mengganti parameter input menjadi tipe array dari byte misalnya, untuk membaca stream.
Lalu di baris 122 sampai baris 171 pada kode utama, dapat kita lihat proses perhitungan hash dilakukan pada saat user meng-klik tombol “Hash It”. Dapat kita lihat, jika user memilih untuk menggunakan mode “Text”, maka kodenya cukup simpel, hanya meng-assign variable “strPlain” dengan apa yang di-input oleh user. Yang sedikit “tricky” adalah jika user memilih mode “File”, atau menghitung hash dari File yang dipilih. Berbagai macam pendekatan bisa dilakukan di sini. Mengingat ketiga fungsi untuk menghitung hash tadi membutuhkan Plain Text dengan bentuk string, maka pendekatan yang saya pilih adalah merubah semua “isi” file ke dalam bentuk string, lalu meng-assign string tersebut ke dalam strPlain. Setelah variable strPlain siap, kita masukkan variable tersebut sebagai parameter di fungsi untuk menghitung hash dengan metode yang dipilih user.
Demikianlah salah satu contoh implementasi kriptografi satu arah. Implementasi ini bisa dimanfaatkan untuk mengecek ke-aslian suatu file, karena bila suatu file sudah di modifikasi, maka nilai hash akan berubah. Bila anda tertarik untuk melihat detail dari algoritma dari setiap metode, anda bisa melihatnya pada file “pas” yang bersangkutan. Atau saran saya, coba debug program tersebut, agar anda dapat “merasakan” bagaimana algoritmanya mengalir.
////////////////////////////////////
Kriptografi Dua Arah
////////////////////////////////////
Kriptografi jenis ini mungkin sering direferensikan sebagai kriptografi yang “sesungguhnya”, karena memiliki metode “encrypt” untuk merubah plain text menjadi cipher text, dan metode “decrypt” untuk mengembalikan cipher text menjadi plain text. Dalam kriptografi jenis ini, selain plain text dan cipher text, dibutuhkan parameter lainnya yang disebut “key”. Saat ini dikenal dua jenis key yang digunakan, yaitu “Symmetric Key” dan “Assymetric Key”.
Yang perlu diingat dalam proses kriptografi dua arah ini adalah, proses encrypt dan decrypt harus memiliki operasi yang saling bertolak belakang. Misal, pada proses encrypt kita menggunakan operator “+” (tambah), maka pada proses decrypt kita harus menggunakan operator “-“ (kurang). Karena itu, dalam implementasi kriptografinya proses encrypt dan decrypt dibuat menjadi dua implementasi yang berbeda, namun saling melengkapi. Untuk proses decrypt, implementasi akan meniru proses verifikasi serial sebuah software, sedangkan untuk proses encrypt, implementasi akan bertindak sebagai “keygen”-nya.
————————
Symmetric Key
————————
Yang dimaksud dengan symmetric key atau key yang simetris adalah, parameter key yang digunakan dalam proses encrypt dan decrypt, sama. Panjang dari parameter key ini pun bervariasi tergantung dari metoda yang digunakan. Dalam implementasi yang akan diberikan, metoda yang digunakan adalah RC4 dan Blowfish, dengan panjang key 128 bit atau 16 byte.
Dengan alasan tertentu, implementasi akan diberikan dan dibahas dimulai dari proses decrypt terlebih dahulu. Implementasi decrypt dapat di download pada:
http://www.mediafire.com/?iefq1v1pzvqbt9l
Sekali lagi, implementasi ini meniru verifikasi serial sebuah software, tetapi tentu saja, dibuat se-sederhana mungkin, agar proses kriptografinya lebih menonjol. Jadi, implementasi ini bersifat sebagai “penerima” pesan, kemudian mencoba men-decrypt pesan tersebut dan mem-verikasikan apakah pesan tersebut berasal dari “pengirim” pesan yang sah atau tidak.
File-file yang terdapat dalam implementasi ini, tidak jauh berbeda dengan yang berada pada implementasi kriptografi satu arah, hanya library metoda yang bersangkutan yang berubah. Kode utama, lagi-lagi terletak di “Unit1.pas”. Mari kita buka kode tersebut untuk mulai membedah implementasi ini.
Baris 33 sampai dengan 87, menunjukkan dua fungsi untuk men-decrypt dengan masing-masing metoda. Proses decrypt kedua metoda dibuat seragam dengan tujuan menghindari kebingungan, dan yang pasti bukan bentuk baku. Yang berbeda tentu saja algorithma inti masing-masing metoda yang terdapat di file *.pas masing-masing. Dikarenakan penyeragaman ini, pembahasan satu metoda bisa mewakili metoda yang satunya.
Pada baris 35 dapat kita lihat, inisialisasi konstanta key yang disiapkan untuk proses decrypt. Key dibuat dengan format array dari byte dengan lebar 16. Atau, dengan kata lain, key memiliki panjang 16 byte, atau 128 (16*8) bit. Yang perlu dicatat adalah, bahwa dalam Delphi, notasi “$” menunjukkan bahwa angka yang ditulis dalam bentuk hexadecimal. Jadi, pendeklarasian array tersebut bisa saja ditulis seperti ini :
key : array[0..15] of byte = (71,114,105,110,100,83,116,111,110,101,73,115,71,111,111,100);
Pendeklarasian array diatas menggunakan notasi desimal, dengan nilai yang sama. Lalu, mengapa dalam implementasi ditulis dengan notasi hexadecimal? I just love hex, nothing more.
Oke, mari kita lihat di baris 39 dan 40. Di situ dideklarasikan dua variable array untuk menampung input dan output dari proses decrypt ini. Karena yang dilakukan saat ini adalah proses decrypt, maka input adalah Cipher Text yang ditampung pada variable arrCipher, sedangkan output adalah Plain Text yang ditampung pada variable arrPlain. Kedua variable tersebut dibuat dengan panjang yang sama yaitu 8 byte. Hal ini perlu dicatat, karena akan berpengaruh pada penggunaan fungsi ini, kita akan sampai ke sana nanti.
Fungsi decrypt ini menerima parameter dalam bentuk String sebagai input, seperti yang terlihat pada baris 33, sedangkan variable yang di-input ke proses decrypt inti berbentuk array dari byte, seperti yang terlihat pada baris 51. Maka, baris 44 sampai 48, bertugas untuk meng-convert variable String menjadi array of byte. Ada banyak metode yang bisa digunakan untuk tugas ini, seperti misalnya mengambil nilai ASCII dari masing-masing karakter di dalam string, lalu menyimpannya ke dalam array of byte. Tetapi, dalam implementasi ini, metode yang akan digunakan adalah, mengambil setiap 2 (dua) karakter dari string, lalu ditambahkan notasi “$” di depannya untuk kemudian di rubah kedalam bentuk byte (integer) dan disimpan ke dalam array. Dan hal ini dilakukan dengan loop sebanyak 8 (0-7)putaran, karena panjang variable penampung yang ada (arrCipher) adalah 8. Karena itu, panjang String yang valid untuk di-input ke dalam fungsi ini adalah 16 (8*2) karakter, dan karakter yang ada haruslah karakter bilangan hexadecimal, yaitu 1-9 dan A-F. Mari kita ambil contoh untuk memperjelas :
Misalkan, string yang di-input adalah :
“1234567890ABCDEF”
Maka array of byte yang terbentuk adalah :
($12, $34, $56, $78, $90, $AB, $CD, $EF)
atau dalam bentuk desimal adalah :
(18, 52, 86, 120, 144, 171, 205, 239)
Semoga contoh di atas cukup jelas untuk menggambarkan “aliran” algo konversi tersebut.
Baris 49 sampai 52 merupakan kode untuk melakukan proses inti decrypt yang diwajibkan oleh library DCPCrypt ini. Dan hasil dari proses decrypt inti ini ditampung di variable arrPlain yang berbentuk array of byte. Baris 53 mempersiapkan (mengosongkan) variable strResult yang akan menampung hasil dari fungsi decrpyt ini. Jika pada input tadi kita meng-convert dari variable String ke array of byte, sekarang untuk output kita lakukan kebalikannya, merubah variable array of byte ke String. Dan itulah yang dilakukan pada baris 54 sampai 57.
Metode yang digunakan sekarang adalah mengambil setiap byte dari array, lalu men-subtitusikannya dengan karakter yang memiliki nilai ASCII yang bersangkutan, untuk kemudian ditambahkan di variable strResult. Metode ini lebih simpel dari metode sebelumnya, tetapi mari kita ambil contoh untuk lebih memperjelas :
Misalkan, dalam variable arrPlain adalah :
(71, 119, 84, 97, 109, 112, 97, 110)
maka dalam variable strResult akan terbentuk :
“GwTampan”
Semoga contoh di atas bisa memperjelas apa yang sebenarnya sudah cukup jelas. ;D
Demikianlah penjelasan tentang fungsi yang digunakan untuk melakukan decrypt. Fungsi tersebut perlu dipahami sepenuhnya jika kita ingin membuat proses encrypt yang diperlukan untuk membuat keygen dari “software” verifikasi ini. Kita akan bahas hal tersebut dalam implementasi berikutnya. Untuk saat ini, mari kita masuk pada fungsi inti dari program ini, yang dieksekusi pada saat user menekan tombol “Check”.
Fungsi tersebut, tentu saja, terletak pada baris 89 sampai 144. Terlihat banyak percabangan “if” di sana, yang mungkin membingungkan sebagian orang. Bila itu yang terjadi, dengan segala kerendahan hati, saya mohon maaf atas buruknya cara pemogramman saya. Tapi saya rasa, percabangan-percabangan ini tidak perlu dibahas semua, karena hanya untuk mengecek kesalahan-kesalahan dasar input dari user. Yang patut dibahas adalah percabangan pada baris 113. Disitu terlihat bahwa jika “Nama” yang diinput user lebih dari 8 karakter, maka yang diambil hanyalah 8 karakter pertama saja. Dan jika “Nama” yang diinput kurang dari 8 karakter, maka variable tersebut digandakan terus-menerus sampai lebih dari 8, untuk kemudian diambil 8 karakter pertamanya. Lagi-lagi, contoh untuk memperjelas :
Misalkan, nama yang diinput adalah :
“CryptographyIsSuperFun”
maka, yang diambil hanyalah :
“Cryptogr”
Dan, jika nama yang diinput adalah :
“FUN”
maka, hasilnya akan menjadi :
“FUNFUNFU”
Dengan ini, kita “memaksa” variable strName untuk tetap memiliki panjang 8 karakter, tidak peduli berapa karakter yang diinput oleh user. Kenapa? Sebelum dijawab, saya harap anda masih ingat karakteristik dari fungsi decrypt di atas tadi, input yang valid haruslah string dengan 16 karakter (ini menjelaskan percabangan pada baris 107), dan ouput yang dihasilkan adalah string dengan 8 karakter. Dan pada baris 133, terdapat “final check” yang membandingkan variable strName dengan strPlain yang merupakan hasil Decrypt dari Serial yang diinput. Otomatis, strPlain akan selalu memiliki panjang 8 karakter, karena itulah kita perlu “memaksa” strName untuk tetap memiliki panjang 8 karakter.
Sebenarnya ada sedikit “bug” yang cukup mengganggu pada implementasi ini. Yaitu, bila kita memasukkan serial dengan panjang 16 karakter, tapi karakter yang diinput bukanlah karakter hexadecimal, maka akan muncul pesan error yang kurang bagus. 😀 Tapi tentu saja, hal tersebut bisa diatasi dengan menambahkan percabangan yang mengecek apakah serial yang diinput merupakan karakter hexadecimal atau bukan. Anda bisa menambahkannya bila anda mau! 😀 🙂
Yap, demikianlah salah satu contoh implementasi proses decrypt yang meniru proses verifikasi serial sebuah software. Untuk melengkapinya, yang tersisa adalah proses encrypt yang akan diterapkan pada keygen untuk verifikasi ini.
Oke, implementasi untuk proses encrypt bisa di download pada :
http://www.mediafire.com/?coc0u4o61wc6jb2
Dalam implementasi ini, jika kita mengeksekusi file “exe”, maka kita bisa meng-generate serial yang valid untuk implementasi verifikasi sebelumnya. Karena memang, implementasi ini bertindak sebagai keygen atau dengan kata lain sebagai “pengirim” pesan. Sedangkan implementasi sebelumnya bertindak sebagai “penerima” pesan.
File-file yang ada dalam implementasi ini sama dengan yang ada di implementasi verifikasi, hanya file “exe” dan “Unit1.pas” yang berbeda, karena implementasi ini menggunakan library dari metoda yang sama dengan implementasi verifikasi. Mari kita buka kode utama implementasi ini di dalam “Unit1.pas” untuk memulai pembedahan kode yang mengasyikan ini.
Yang patut diingat sebelum melakukan pembedahan adalah, bahwa proses pembuatan implementasi keygen ini saling bergantung dengan kode pada implementasi verifikasi. Dan, kita harus melihat bahwa kode keygen ini saling bertolak belakang dengan verifikasi. Yang artinya, jika verifikasi melakukan “buka”, maka keygen melakukan “tutup”, jika verifikasi melakukan “tambah”, maka keygen melakukan “kurang”, dst.
Oke, kita mulai pembedahannya. Kita bisa lihat pada baris 33 sampai 83, terdapat dua fungsi encrypt yang, tentu saja, dibuat seragam, seperti halnya pada implementasi verifikasi. Dan ya, seperti sebelumnya, pembahasan satu metoda bisa mewakili metoda yang satunya. Baris 35 menunjukkan konstanta key yang memang harus sama nilainya dengan proses decrypt, agar kedua proses tersebut saling berhubungan.
Karena proses encrypt ini bertolak belakang dengan proses decrypt, maka kita akan melakukan pembahasan secara terbalik dari bawah ke atas, sambil me-review kode verifikasi. Jadi ada baiknya, jika kita buka kode verifikasi (decrypt) dan keygen (encrypt) secara bersamaan, kecuali jika anda memang sudah hafal dan paham kode verifikasi secara keseluruhan.
Pada baris 44 sampai 48 di kode verifikasi, seperti yang telah dibahas, bahwa fungsi decrypt mengambil setiap dua karakter dari string yang di-input atau cipher text untuk kemudian merubahnya menjadi nilai hex dan menyimpannya ke dalam array of byte. Maka, agar fungsi encrypt kita menghasilkan cipher text yang valid untuk proses tersebut, kita harus melakukan fungsi sebaliknya, ya, merubah array of byte menjadi string dengan format hex. Baris 51 sampai 55 melakukan hal tersebut. Fungsi built-in Delphi “IntToHex” menghasilkan representasi hex dari integer (atau byte) yang diinput. Untuk contoh, silahkan review contoh di atas pada proses verifikasi, tetapi baca dari bawah ke atas.
Kemudian pada baris 49 sampai 52 di kode verifikasi, fungsi decrypt melakukan fungsi inti decrypt sesuai dengan metoda yang dipakai terhadap array of byte hasil konversi dari string yang di-input tadi(cipher text). Maka pada baris 47 sampai 50 di kode keygen, fungsi encrypt harus melakukan fungsi inti encrypt sesuai dengan metoda yang dipakai terhadap array of byte yang nantinya akan di konversi menjadi string output(cipher text), seperti yang telah dibahas pada paragraf sebelumnya.
Lalu pada baris 54 sampai 57 di kode verifikasi, fungsi decrypt mengkonversi lagi array of byte yang telah di “decrypt” ke dalam bentuk string, tetapi kali ini dengan cara subtitusi nilai byte dengan nilai ASCII yang bersangkutan, atau dengan kata lain melakukan konversi byte to ASCII. Maka, fungsi encrpyt kita harus melakukan kebalikannya, yap, konversi ASCII to byte. Baris 43 sampai 46 pada kode keygen menunjukkan hal tersebut, dan ya, fungsi built-in Delphi “Ord” menolong kita untuk melakukan hal tersebut. Dan lagi-lagi, untuk contoh, silahkan lihat contoh “GwTampan” di atas dari bawah ke atas.
Begitulah isi dari fungsi encrypt yang merupakan kebalikan dari fungsi decrypt. Anda bisa menutup kode verifikasi sekarang, jika anda mau. Berikutnya, mari kita bahas penggunaan dari fungsi encrypt ini, pada saat user menekan tombol “G 3 N” yang terletak pada baris 85 sampai 119.
Tidak banyak yang dilakukan dalam kode ini. Baris 97 sampai 108 melakukan hal yang sama dengan yang ada pada kode verifikasi, yaitu memaksa plain text agar tetap memiliki panjang 8 karakter, seperti yang telah dibahas sebelumnya. Dan, jika anda belum menyadarinya, untuk nama “CryptographyIsFun” dan “CryptographyIsSuck” akan menghasilkan serial yang sama, dikarenakan unsur pemaksaan ini. Lalu pada baris 109 sampai 117, kode melakukan encrypt kepada nama (plain text) yang diinput menjadi cipher text yang kemudian di-output menjadi serial.
Demikianlah keseluruhan proses implementasi dari kriptografi dengan key simetris ini. Dan oke, untuk lebih memperjelas lagi, mari kita rangkum keseluruhan proses dengan arah yang “lurus” atau dari encrypt sampai decrypt. Kali ini sang keygen akan kita sebut pengirim, dan sang verifikator akan kita sebut penerima.
Pertama, pengirim men-encrypt nama yang di-input untuk kemudian di-output menjadi serial. Lalu, pengirim mengirimkan pasangan nama dan serial ini kepada penerima. Kemudian, penerima mengecek pasangan nama dan serial yang dikirimkan dengan cara, men-decrypt serial untuk kemudian dibandingkan dengan nama. Jika cocok, maka pasangan nama dan serial tersebut valid dan memang berasal dari pengirim yang sejati, jika tidak cocok, maka pengirim tersebut palsu.
Yap, seperti itulah salah satu contoh implementasi kriptografi dua arah dengan key simetris. Mohon maaf bila penjelasannya terkesan berbelit-belit dan membingungkan, tetapi saya telah mencoba yang terbaik untuk menjelaskan hal yang memang sangat teknis ini. Dan ya, coba “rasakan” bagaimana kode ini mengalir, agar lebih mudah memahaminya. 🙂
Cara Mengembalikan Data yang Disembunyikan Virus
Banyak cara yang dapat dilakukan untuk mengembalikan data yang disebunyikan oleh virus, mulai dari menggunakan software pihak ketiga, sampai dengan cara manual (Tanpa Software) karena menggunakan tools bawaan windows. Namun saat ini saya tidak akan membahas mengenai software pihak ketiga, karena pada pembahasan kali ini akan menggunakan cara yang lebih mudah dan aman dengan menggunakan tools bawaan windows. Bagi yang masih mau cari softwarenya silahkan cari sendiri di Google.
Sebenarnya file anda masih terdapat di flashdisk, namun tidak dapat terlihat karena atribut file tersebut telah dirubah oleh virus menjadi Hidden, dan Protected by Operating System. Untuk menampilkan file tersebut, show file/folder hidden saja tidak cukup dikarenakan file terseeebut juga diproteksi oleh operating system. Langkah langkah yang harus dilakukan adalah sebagai berikut:
Buka Control Panel kemudian pilih Folder Option
Akan terbuka sebuah jendela baru. Pilih tab view
Pada show hidden file, pilih show file, folder, and drive
Hilangkan tanda centang pada Hidden file protected operating system
Akan muncul kotak konfirmasi, klik yes
Klik Ok
Sampai disini kita sudah bisa melihat file dan folder yang disembunyikan oleh virus. Sekarang cobalah untuk mengcopy file atau folder yang tersembunyi tadi ke tempat lain. Jika file /folder dapat dicopy atau dipindah, maka masalah sudah selesai. Namun jika tidak bisa di copy atau dipindah serta tidak dapat dirubah menjadi Unhidden, tahapan selanjutnya adalah sebagai berikut:
Buatlah sebuah file berektensi *.bat dengan menggunakan notepad++ atau bisa juga menggunakan notepad biasa bawaan windows kemudian masukkan kode ini:
attrib -s -h *.* /s /d
Kemudian simpan dengan akhiran nama *.bat, misalkan kita beri nama file.bat dan pada bagian save as, pilih all file. Ingat, simpan file di flashdisk anda bukan di drive lain, taruh di halaman terluar flasdisk (maksudnya bukan di dalam folder yang ada di flashdisk).
Jalankan file.bat tadi dengan cara mendouble click file tersebut dan tunggu sampai jendela CMD menutup sendiri. Jika jendela CMD sudah menutup, sekarang data-data anda yang ada di flashdisk sudah tidak hidden lagi dan dapat dicopy ke tempat lain. Saya sarankan agar setelah mencopy data, segera format flashdisk anda untuk menghapus componen virus yang tersisa, siapa tahu disana terdapat file autorun yang telah dimodifikasi oleh virus. Oleh sebab itu saya sarankan format flashdisk agar terbebas dari sisa-sisa virus yang berbahaya.
Informasi Tambahan:
Setelah membahas mengenai cara mengubah atribut file melalui CMD, pasti kalian penasaran bukan mengenai perintah Command diatas? Maka dari itu saya akan membahas apa saja fungsi dari command di atas.
attrib = adalah perintah dalam bahasa dos untuk memberikan attribut pada suatu file atau folder.
-s = tanda minus (-) maksudnya menghapus dan huruf S artinya file system, jadi maksud dari tanda -s adalah menghapus attribut protected operating system.
-h = hampir sama seperti fungsi diatas, tanda -h berfungsi untuk menghapus attribut hidden atau mengubah file yang pada mulanya tersembunyi menjadi terlihat kembali
*.* = Tanda bintang (*) atrinya semua, sehingga yang dimaksud dari perintah ini adalah semua file atau folder yang memiliki semua ekstensi
/s = Artinya memproses semua file pada folder yang sama dengan lokasi file.bat dan juga semua subfolder yang ada didalamnya
/d = memerintahkan untuk memproses folder juga, maksudnya jika kita tidak menuliskan perintah ini maka hanya akan memproses semua file tanpa memproses folder.
Sebenarnya file anda masih terdapat di flashdisk, namun tidak dapat terlihat karena atribut file tersebut telah dirubah oleh virus menjadi Hidden, dan Protected by Operating System. Untuk menampilkan file tersebut, show file/folder hidden saja tidak cukup dikarenakan file terseeebut juga diproteksi oleh operating system. Langkah langkah yang harus dilakukan adalah sebagai berikut:
Buka Control Panel kemudian pilih Folder Option
Akan terbuka sebuah jendela baru. Pilih tab view
Pada show hidden file, pilih show file, folder, and drive
Hilangkan tanda centang pada Hidden file protected operating system
Akan muncul kotak konfirmasi, klik yes
Klik Ok
Sampai disini kita sudah bisa melihat file dan folder yang disembunyikan oleh virus. Sekarang cobalah untuk mengcopy file atau folder yang tersembunyi tadi ke tempat lain. Jika file /folder dapat dicopy atau dipindah, maka masalah sudah selesai. Namun jika tidak bisa di copy atau dipindah serta tidak dapat dirubah menjadi Unhidden, tahapan selanjutnya adalah sebagai berikut:
Buatlah sebuah file berektensi *.bat dengan menggunakan notepad++ atau bisa juga menggunakan notepad biasa bawaan windows kemudian masukkan kode ini:
attrib -s -h *.* /s /d
Kemudian simpan dengan akhiran nama *.bat, misalkan kita beri nama file.bat dan pada bagian save as, pilih all file. Ingat, simpan file di flashdisk anda bukan di drive lain, taruh di halaman terluar flasdisk (maksudnya bukan di dalam folder yang ada di flashdisk).
Jalankan file.bat tadi dengan cara mendouble click file tersebut dan tunggu sampai jendela CMD menutup sendiri. Jika jendela CMD sudah menutup, sekarang data-data anda yang ada di flashdisk sudah tidak hidden lagi dan dapat dicopy ke tempat lain. Saya sarankan agar setelah mencopy data, segera format flashdisk anda untuk menghapus componen virus yang tersisa, siapa tahu disana terdapat file autorun yang telah dimodifikasi oleh virus. Oleh sebab itu saya sarankan format flashdisk agar terbebas dari sisa-sisa virus yang berbahaya.
Informasi Tambahan:
Setelah membahas mengenai cara mengubah atribut file melalui CMD, pasti kalian penasaran bukan mengenai perintah Command diatas? Maka dari itu saya akan membahas apa saja fungsi dari command di atas.
attrib = adalah perintah dalam bahasa dos untuk memberikan attribut pada suatu file atau folder.
-s = tanda minus (-) maksudnya menghapus dan huruf S artinya file system, jadi maksud dari tanda -s adalah menghapus attribut protected operating system.
-h = hampir sama seperti fungsi diatas, tanda -h berfungsi untuk menghapus attribut hidden atau mengubah file yang pada mulanya tersembunyi menjadi terlihat kembali
*.* = Tanda bintang (*) atrinya semua, sehingga yang dimaksud dari perintah ini adalah semua file atau folder yang memiliki semua ekstensi
/s = Artinya memproses semua file pada folder yang sama dengan lokasi file.bat dan juga semua subfolder yang ada didalamnya
/d = memerintahkan untuk memproses folder juga, maksudnya jika kita tidak menuliskan perintah ini maka hanya akan memproses semua file tanpa memproses folder.
Minggu, 15 Mei 2016
Program Bahasa C sederhana
#include"conio.h"
#include"stdio.h"
void main(){
int i, nik[15], gol[15], jumdata=3;
char* nama;
float gajipokok, pajak, gaji bersih;
clrscr();
printf("\nINFORMASI PEMBAYARAN GAJI");
for(i=0; i
printf("\nINPUT NIK :"); scanf("%d", &nik[i]);
printf("\nINPUT GOL :"); scanf("%d", &gol[i]);
}
clrscr();
printf("\nINFO PEMBAYARAN GAJI");
printf("\n-------------------------------------------------");
printf("\nNO NIK NAMA GOL GAJIPOKOK GAJIBERSIH");
printf(\n----------------------------------------------------");
for(i=0; i
if(nik[i]==1){
nama = "HENDRO";
}else if(nik[i]==2){
nama = "DIAN";
{else if(nik[i]==3){
nama = "JHONI";
} if(gol[i]==1){
gajipokok = 1500000;
{else if(gol[i]==2){
gajipokok = 2500000;
{else if(gol[i]==3){
gajipokok = 3500000;
}
pajak = 0.05 * gajipokok;
gajibersih = gajipokok - pajak;
gotoxy(1,6+1); printf("%i %d %s", i+1, nik[i], nama);
gotoxy(30,6+1); printf("%i %10.0f %10.0f" "%10.0f",gol[i], gajipokok, pajak, gajibersih);
}
printf("\n----------------------------------------");
getch();
}
#include"stdio.h"
void main(){
int i, nik[15], gol[15], jumdata=3;
char* nama;
float gajipokok, pajak, gaji bersih;
clrscr();
printf("\nINFORMASI PEMBAYARAN GAJI");
for(i=0; i
printf("\nINPUT GOL :"); scanf("%d", &gol[i]);
}
clrscr();
printf("\nINFO PEMBAYARAN GAJI");
printf("\n-------------------------------------------------");
printf("\nNO NIK NAMA GOL GAJIPOKOK GAJIBERSIH");
printf(\n----------------------------------------------------");
for(i=0; i
nama = "HENDRO";
}else if(nik[i]==2){
nama = "DIAN";
{else if(nik[i]==3){
nama = "JHONI";
} if(gol[i]==1){
gajipokok = 1500000;
{else if(gol[i]==2){
gajipokok = 2500000;
{else if(gol[i]==3){
gajipokok = 3500000;
}
pajak = 0.05 * gajipokok;
gajibersih = gajipokok - pajak;
gotoxy(1,6+1); printf("%i %d %s", i+1, nik[i], nama);
gotoxy(30,6+1); printf("%i %10.0f %10.0f" "%10.0f",gol[i], gajipokok, pajak, gajibersih);
}
printf("\n----------------------------------------");
getch();
}
Langganan:
Komentar (Atom)






