File Transfer Protocol

File Transfer Protocol (ftp) adalah suatu protocol atau set aturan yang digunakan untuk transfer data.  Lebih jauh lagi, FTp saat ini adalah protokol jaringan standard yang digunakan secara luas untuk berkirim data dari satu host ke host lain melintasi jaringan berbasis TCP.

FTP sering digunakan untuk mengunggah (upload) maupun mengunduh (download) halaman web, dan dokumen lainnya dari mesin lokal (yang digunakan sebagai mesin development) ke server web hosting publik. Tak jarang juga ftp digunakan untuk mengambil data dari server dan didevelop lebih lanjut di dalam mesin lokal.

Protokol FTp dibangun dengan arsitektur client-server (tentu saja) dan menggunakan koneksi data dan kendali terpisah / berbeda antara client dan server. Pengguna ftp dapat melakukan otentikasi diri mereka, umumnya menggunakan username dan password. Tapi kadang juga ada beberapa ftp yang memperbolehkan user terkoneksi secara anonim.

Untuk membangun server yang mendukung ftp tentu saja kita memerlukan sebuah server ftp. Banyak aplikasi server ftp gratis, seperti: FileZilla FTP Server, vftp, wingftp, ApacheFTP, dan masih banyak lagi

Sedangkan untuk mesin client, kita dapat menggunakan FileZilla FTP Client, Total Commander, dll

Lihat juga perintah yang ada di protokol ftp yang ada di sini.

Pengenalan 7 Lapis OSI Layer

Open System interconnection (OSI) Layer adalah suatu standard yang umum digunakan dalam jaringan dewasa ini. Model OSI Layer menjelaskan bagaimana informasi bergerak dari satu komputer ke komputer lain melintasi media jaringan.

OSI Layer terdiri dari 7 layer (lapisan) konseptual. Masing-masing layer adalah suatu “kelompok” tugas yang lebih kecil dari skema besar. Pembagian ini tentu saja menyebabkan pembagian kerja yang lebih jelas dan juga lebih praktis sehingga setiap instrumen dapat dengan mudah dikelola.

Pembagian ketujuh layer tersebut dilihat dari aliran data saat pengiriman dan penerimaan data.

Tujuh layer tersebut adalah:

  1. Physical
  2. Data Link
  3. Network
  4. Transport
  5. Session
  6. Presentation
  7. Application

Secara garis besar, OSI Layer terbagi menjadi dua kategori atau kelompok, yaitu:

  1. Upper layer
  2. Lower layer

Upper layer (layer lebih tinggi) merupakan layer OSI yang berhubungan dengan lingkungan aplikasi. Semakin tinggi, layer ini semakin dekat berinteraksi dengan user.

Lower layer (layer lebih rendah)_ merupakan layer OSI yang menangani isu transportasi data. Layer-layer ini lebih dekat ke arah mesin, terutama Physical Layer yang langsung menangani media fisik jaringan, misal kabel, dan bertanggung jawab terhadap penempatan informasi dalam media.

Penjelasan lebih lengkap untuk masing-masing layer dapat ditemukan pada setiap artikel berikut:

  1. Application
  2. Presentation
  3. Session
  4. Transport
  5. Network
  6. Data Link
  7. Physical

Unicode??

Sering kita mendengar kata unicode.. Sebenarnya apa sih unicode itu? Nah artikel ini akan membahas sebagian tentang unicode. Penasaran?

Unicode, definisi dan spesifikasi

Unicode adalah sebuah kumpulan karakter yang universal. Unicode adalah standard yang dirancang untuk mengizinkan teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan serta dimanipulasi secara konsisten oleh komputer. Ia adalah sebuah standard, bukan encoding  Hingga saat ini, pengembangan unicode masih berjalan dan standard ini telah mengenali sekitar 110.000 simbol di seluruh dunia.

Unicode mengandung kumpulan karakter, kumpulan bagan kode untuk referensi visual, metodologi pengodean dan kumpulan standar penyandian karakter, deskripsi sifat karakter seperti huruf besar dan huruf kecil (termasuk arah penulisan dari kiri atau dari kanan), kumpulan data referensi berkas komputer, aturan normalisasi, dekomposisi, collation, dan rendering.

Versi terakhir unicode (tahun 2012) adalah Unicode 6.1

Unicode sebagai standard, UTF dan UCS sebagai encoding

Unicode sebagai standard, acuan terhadap daftar karakter yang ada dan dikenali. Terdapat beberapa mekanisme untuk memetakan dan menggunakan karakter yang ada di dalam unicode. Dikenallah Unicode Transformation Format (UTF) dan Universal Character Set (UCS) sebagai encoding (pengimplementasi unicode).

Bingung? Sebenarnya nggak terlalu sulit dipahami kok. Dibandingkan dengan tabel ASCII yang pernah saya bahas, unicode bersifat lebih luas lagi. Ia bukan hanya mengorganisir karakter yang ada tetapi juga memberikan informasi bagaimana direpresentasikan serta bagaimana karakteristik-karakteristiknya. Maksudnya adalah penulisan  huruf Arab dilakukan dari kanan ke kiri sementara huruf latin sebaliknya. Itulah yang  distandardkan oleh unicode.

Unicode Transformation Format sendiri ada beberapa macam, tapi yang dipakai saat ini adalah UTF-8 dan UTF-16.

Beberapa Jenis Programmable Chip

Dalam dunia digital, dikenal istilah chip elektronis. Chip adalah suatu modul digital yang dapat melakukan suatu fungsi atau kerja tertentu. Ada dua jenis chip / integrated circuit (IC), yaitu: ASIC (Application Specific Integrated Circuit) dan Programmable Circuit. ASIC adalah chip khusus yang diproduksi oleh pabrik untuk menyelesaikan persoalan khusus (spesifik terhadap masalah tertentu). Sementara Programmable Circuit adalah chip yang dapat dapat diprogram ulang untuk menjalankan fungsi atau rutin yang bervariasi tergantung kepada sang pemakai. Apa saja jenis programmable circuit yang ada?

FPGA

Field Programmable Gate Array (FPGA) adalah komponen elektronika yang dapat diprogram ulang. Komponen ini terdiri dari gerbang-gerbang logika yang tersusun sebagai array dengan hubungan antar gerbang yang dapat diatur langsung oleh programmer. Selain itu FPGA biasanya juga memiliki elemen memori yang telah tersemat. Salah satu produk FPGA yang terkenal berasal dari Altera.

Harga FPGA relatif lebih murah. Chip ini juga dapat diprogram sesuai kebutuhan (multi purpose).

CPLD

Complex Programmable Logic Device (CPLD) adalah piranti yang dapat diprogram dengan kompleksitas antara PAL dan FPGA. Secara arsitektural CPLD memberikan kedua fitur  dari kedua chip tersebut. Salah satu kemampuan CPLD adalah ia dapat langsung berjalan/ start up berkat adanya ROM internal.

PAL

Programmable Array of Logic (PAL) adalah chip sederhana yang dapat diprogram dengan 2 jenis gerbang logika sebagai penyusun logic array. Arsitektur PAL sangat sederhana. Gerbang-gerbang OR disusun membentuk array kemudian setiap input yang ada disusun melintang terhadap input ke gerbang.

Program Generik

Membaca judulnya agak aneh mungkin untuk orang awam. Tapi ini tak ada kaitannya dengan obat generik atau semacamnya. Bukan sama sekali.

Program generik adalah program yang ditulis sekali dan dapat dipakai berkali-kali untuk data beragam tanpa harus mengubah inti dari algoritma. Ya! Program generik dapat memberikan kita keleluasaan dengan hanya menulis kode umum hanya sekali dan selanjutnya kode tersebut dapat dipakai ulang untuk tipe data berbeda namun memiliki karakteristik yang sama.

Salah satu bahasa pemrograman terkenal yang mengimplementasikan pemrograman generik adalah C++. Di dalam bahasa C++, untuk membuat fungsi yang bersifat generik, kita hanya perlu menambahkan perintah template.

Template adalah mekanisme yang digunakan untuk mendukung pemrograman generik di C++. Cara kerjanya cukup sederhana, yakni dengan mengaburkan tipe data yang ingin diolah. Data yang akan diolah baru benar-benar diolah dan dilewatkan ke fungsi setelah pemanggilan. Mengerti?? Kalau nggak terima saja dulu, hehehe.

Umumnya sintaks untuk membuat fungsi generic adalah:

template<typename T> tipe_kembalian nama_fungsi(parameter)

Penjelasan:

  1. template: kata kunci untuk mendapatkan fitur template
  2. typename T: mengatakan bahwa tipe data yang akan dilewatkan nantinya akan digantikan oleh simbol T. Dengan kata lain, T akan “merepresentasikan” tipe data yang nantinya akan dilewatkan ke fungsi.

Contoh pemakaiannya adalah:

template<typename T> void swap(T& elemen1, T& elemen2) {

T elmt = elemen1;

elemen1 = elemen2;

elemen2 = elmt;

}

Static Member pada C++

Cukup lama nggak posting tentang programming. Artikel kali ini akan menilik tentang konsep static member  pada konsep OOP di C++.

Pengertian

Dalam C++, sebuah objek dapat memiliki data statik. Apa itu data statik? Data statik adalah data / variabel anggota yang dideklarasikan / diciptakan dalam lingkup kelas namun tak terikat oleh setiap objek yang diciptakan dari kelas tersebut. Dengan kata lain data tersebut dapat dipakai bersama oleh seluruh objek yang diciptakan dari kelas yang sama.

Karena karakteristik tersebut, sebuah data statik haruslah diperlakukan khusus. Untuk menggunakan data statik, kita harus menyediakan lokasi terlebih dahulu di stack (lihat artikel tentang stack dan heap) sebelum menciptakan objek apapun. Kita dapat melakukannya dengan melakukan deklarasi variabel seperti biasa di luar lingkup kelas yang bersangkutan. Contoh:

class Kelas {

public:

static int data_statik;

};

int Kelas::data_statik = 10;

Perhatikan bahwa meskipun kita mendefinisikan anggota di luar kelas, kita harus tetap memberitahu kepada compiler tentang lingkup dari variabel tersebut. Pada contoh di atas, lingkup kelas yang dimaksud adalah kelas:: yang artinya variabel statik data_statik merupakan anggota Kelas.

Setiap objek yang tercipta dapat memanipulasi data_statik seperti halnya memanipulasi data anggota kelas lainnya. Tak ada perlakuan khusus untuk manipulasi.

Ketika sebuah objek dari Kelas diciptakan, secara otomatis ia akan dapat mengakses data_statik. Karena variabel data_statik dipakai bersama, objek kedua yang diciptakan akan merasakan dampak jika objek pertama melakukan manipulasi terhadap data_statik.

Contoh:

Kelas A;

A.data_statik = 15;

Kelas B;

cout<<B.data_statik<,endl; // mencetak data_statik, seharusnya bernilai 15

Sedikit berbeda dengan data anggota kelas lainnya, variabel statik tidak dapat diinisialisasi di dalam konstruktor. Jika diinginkan inisialisasi, proses inisialisasi harus dilakukan saat variabel dideklarasikan (di luar kelas) seperti pada contoh.

Bagaimana jika datanya berupa tipe struktur?

Ada beberapa pendekatan yang dapat dilakukan. Pertama adalah inisialisasi seluruh field secara langsung. Contoh:

class Objek {

public:

struct titik {

int x, y;

};

static titik T;

};

Object::titik Object::T = {1,2};

Jangan pusing dengan deklarasi variabel statik di atas :D

Kita mendeklarasikan struktur bernama titik di dalam kelas Object, karena itu untuk mengacu ke tipe tersebut kita harus menyertakan lingkup yang membungkusnya. Object::titik. Dengan demikian kita dapat memberitahu compiler bahwa kita menginginkan tipe yang didefinisikan di dalam kelas Object. Hal yang sama juga terjadi pada variabel T. Variabel tersebut berada di dalam lingkup Object sehingga kita perlu menyebutkan nama kelas Object.

Nah, inisialisasi dapat dilakukan dengan cara membuat sebuah tuple. Di dalam C++ dan juga C, data jamak seperti struct sebenarnya adalah peletakan data-data ke lokasi memori yang berdekatan. Dengan menuliskan data ke dalam { } berarti kita telah membentuk data jamak. Di contoh disebutkan bahwa data jamak yang kita letakkan adalah 1 dan 2. Nah coba lihat deklarasi dari struct sebelumnya. Field yang ada di dalam adalah dua buah integer yaitu x dan y. Urutan pendeklarasian adalah x kemudian y. Dengan cara seperti di atas, kita dapat menyalin nilai 1 ke variabel x dan nilai 2 ke variabel y. Semua sesuai urutan yang telah didefinisikan di dalam struktur. Tentu saja jika definisi struktur kita adalah

struct sesuatu {

char C; int i; float f;

};

Kita dapat melakukan inisialisasi dengan cara memberikan nilai {‘A’,10, 3.14}.

Catatan, cara ini juga dapat digunakan untuk melakukan menginisialisasi tipe data struktur secara umum.

Konstanta Statis

Data statik selain berupa variabel dapat juga berupa konstanta. Deklarasi konstanta statis dapat dilakukan pada C++. Efek ini tentu saja kita memiliki suatu konstanta did alam kelas yang dapat dipakai bersama oleh setiap objek.

Salah satu keistimewaaan konstanta statis, selain ia dapat dideklarasikan dengan cara yang sama seperti mendeklarasikan variabel statis ia juga dapat diinisialisasi di dalam kelas. Benar, teman-teman tak salah membaca. Sebuah konstanta statis dapat diinisialisasi di dalam kelas. Inilah salah satu karakteristik khusus konstanta. Lalu bagaimana penulisannya? Simak aja kode berikut:

class Object {

public:

static const int X = 10;

};

Dan tentu saja kita dapat mendeklarasikannya di luar lingkup kelas. Contohnya:

class Object {

public:

static const int X;

};

const int Object::X = 10;;

Sifat Bilangan Kompleks

Bilangan Kompleks atau kalau dalam bahasa Inggris disebut sebagai Complex Number. Memang bilangan jenis ini sedikit lebih rumit daripada bilangan yang biasa kita pakai. Eits.. tapi jangan khawatir, kita akan coba pelajari bilangan ini dan memahaminya dengan baik.

Sebelumnya materi tentang bilangan kompleks sudah pernah saya singgung sedikit sini, tetapi sekarang kita akan membahasnya lebih jauh. Bilangan kompleks adalah bilangan yang terdiri dari 2 buah bagian, yakni: bagian nyata atau real dan bagian khayalan atau imajiner. Bagian nyata adalah bilangan real seperti yang kita gunakan sehari-hari, seperti: 3; -1; 1,1; 3,14. Sementara bagian imajiner adalah bagian bilangan kompleks yang merepresentasikan perkalian dengan identitas i (bilangan imajiner).

Apa itu bilangan imajiner?

Bilangan imajiner adalah bilangan yang jika dikuadratkan menghasilkan -1. Ya, minus satu. Dengan kata lain i = sqrt(-1) (Simbol sqrt() menyatakan akar kuadrat). Bisa dibayangkan bagaimana saktinya bilangan ini, hehehe. Untuk beberapa bilangan lain yang nampaknya mustahil untuk dicari nilai akar kuadratnya, kita bisa representasikan dengan bilangan imajiner. Misalnya sqrt(-9). Kalau dihitung secara biasa, kita tak bisa mendapatkan nilai akar kuadrat dari -9. Tapi kita bisa pisah nyatakan bilangan tersebut sebagai perkalian dua buah akar kuadrat (masih ingat kan sifat ini?). Misal sqrt(a x b) = sqrt(a) x sqrt(b). Hal yang sama juga berlaku untuk kasus ini. Kita bisa nyatakan sqrt(-9) = sqrt(9) x sqrt(-1). Kita tahu bahwa sqrt(9) adalah 3. Dengan demikian kita bisa tahu kalau sqrt(-9) adalah 3 kali sqrt(-1) atau 3 kali bilangan imajiner i.

Nah, kembali ke bilangan kompleks.

Karena bilangan kompleks dapat dinyatakan sebagai 2 bagian, kita bisa tuliskan bilangan kompleks sebagai penjumlahan dari bagian real dan bagian imajiner. Contohnya:

3 + 4i

2 + i

0 + 3i

dll

Umumnya kita akan menuliskannya sebagai a + bi dengan a adalah bagian bilangan real, dan b adalah bagian bilangan imajiner.

Hampir sama dengan bilangan-bilangan lain, bilangan kompleks juga memiliki sifat-sifat. Bilangan kompleks tertutup terhadap operasi penumlahan, pengurangan, perkalian, dan pembagian. Artinya, keempat operasi tersebut dapat menghasilkan bilangan kompleks juga. Berikut sifat operasi tersebut.

Penjumlahan dan Pengurangan
Penjumlahan dua buah bilangan kompleks dinyatakan sebagai:

(a + b i) + (c + d i) = (a + c) + (b + d) i

Artinya, penjumlahan bilangan kompleks semudah menjumlahkan setiap bagian bilangan kompleks yang sama. Jika dilihat bagian nyata dari bilangan pertama dan kedua dijumlahkan (a + c) kemudian bagian khayalan juga dijumlahkan terhadap sesamanya (b + d). Untuk kasus pengurangan juga tak jauh berbeda. Namun yang harus diperhatikan adalah, pengurangan hanya terjadi pada setiap bagian yang sama. Dengan kata lain

(a + b i) – (c + d i) = (a – c) + (b – d) i

Kenapa menjadi (a – c) + i (b d) bukan (a – c) – i (b – d) atau jawaban lain? Jawabannya sederhana tanda + mengatakan bahwa terdapat dua buah bagian bilangan yang membentuk bilangan kompleks.

Contoh:

(3 + 5 i) + (2 + 2 i)

= (3 + 2) + (5 + 2) i

= 5 + 7 i

dan

(4 + 2 i) – (3 + 1 i)

= (4 – 3) + (2 – 1) i

= 1 +  1 i

= 1 + i

Perkalian

Aturan perkalian pada bilangan kompleks sebenarnya cukup sederhana.

(a + b i) * (c + d i)

=> a*c + a*d i + b*c i + b*d*i*i

=> (a*c – b * d) + (a*d + b*c) i

sehingga

(a + b i) * (c + d i) = (a*c – b * d) + (a*d + b*c) i

Ingat lagi bahwa i adalah akar kuadrat dari -i dengan demikian i kuadrat akan menghasilkan -1 sehingga b*d*i*i akan menghasilkan – b * d. Bilangan ini adalah bilangan real karena sudah tak mengandung i lagi.

Contoh:

(3 + i) * (2 + 3 i)

= (3*2 – 1*3) + (3*3 + 1*2) i

= 3 + 11  i

 

Pembagian

Pembagian bilangan kompleks boleh dibilang sedikit lebih njlimet (baca: rumit). Ide dasarnya adalah kita membuat penyebut (bilangan yang ada di bagian bawah dalam pecahan) menjadi sederhana. Langsung saja kita ke contoh:

(a + b i) / (c + d i)

Misal (a + b i) dibagi dengan (c + d i). Kita perlu membuat c + d i menjadi sederhana. Kita tahu bahwa (x + y) dikali dengan (x – y) akan menghasilkan (x*x – y*y). Kita akan memanfaatkan sifat ini. Tapi kalau begitu, supaya adil bagian pembilang juga harus dikalikan dengan nilai yang sama. Maka kita dapatkan:

( (a + b i) * (c – d i) ) / ( (c + d i)*(c-d i) )

=> ( (a + b i)*(c – d i) ) / ( c^2 + d^2)

=> ( (a*c + b * d) + ( – a*d + b*c) i ) / ( c^2 + d^2)

Perhatikan, tanda ^ berarti pangkat. C^2 berarti c pangkat 2 atau c kuadrat.

Contoh:

(2 + 3 i) / (1 + 2 i)

= ( (2 + 3 i) * (1 – 2 i) ) / ( (1 + 2 i) * (1 – 2 i) )

= ( (2*1 + 3*2) + ( -2*2 + 3*1) )  /  ( 1^2 + 2^2 )

= ( 8 – i ) / 5

Internetan dengan Modem Smartfren AC682

Hohoho, kemarin baru aja beli modem nih, sepertinya untuk selanjutnya saya bisa internetan dan mungkin akan lebih aktif mengisi blog ini ^^

Modem yang saya beli adalah modem dari smartfren. Modem Smartfren AC682 yang di-bundling dengan kartu Smartfren (ya iyalah). Modem ini dibuat oleh ZTE. Fiturnya sih lumayan, udah bisa EVDO dengan download speed up to 3.1 Mbps dan upload speed up to 1.8 Mbps. Harganya juga lumayan, Rp 200.000 waktu saya beli kemarin. Hal pertama yang saya lakukan tentu saja mengecek.

OK, karena saya pakai dua OS, Windows dan Linux, jadi saya harus coba di keduanya dong.. Berikut cara konek untuk kedua OS:

Windows platform:

Untuk bisa konek ke internet menggunakan platform windows relatif lebih mudah karena sudah tersedia driver yang bisa diinstal saat pertama dicolok ke port USB.

Tak ada tutorial lebih mendalam mengenai pemasangan di windows karena Anda tinggal klik-klik saja… OK, gampang!

GNU/Linux platform

Dalam percobaan ini yang saya pakai adalah Ubuntu 10.10 Maverick Meerkat. Nah di sinilah tantangannya. Secara official ternyata smartfren tidak memberikan dukungan kepada linux semudah windows / mac OS (perasaan saya saja atau?). Tapi tenang, masih ada cara mengakalinya. Kita akan melakukannya secara manual. Wow kk wow! Susah? Nggak! Sangat mudah kok.

OK, langsung aja:

Buka terminal dan langsung pindah ke mode root:

$ sudo su

masukkan password Anda. Kenapa kok pakai su segala? karena kita nanti akan edit-edit file konfigurasi dan/atau install aplikasi juga kalau belum ada.

Jika Anda memakai vmware atau sedang terhubung ke jaringan lain, sebaiknya putuskan saja hubungan itu dulu (ugh, kata-katanya gak enak nih).

# /etc/init.d/vmware stop

# ifconfig eth0 down

perintah pertama digunakan untuk memutuskan jaringan dengan virtual machine. Sementara perintah kedua untuk men-disable ethernet untuk sementara. Kalau pengen enable lagi tinggal ketikkan:

# ifconfig eth0 up

Colokkan modem ke port USB. Ketikkan di terminal:

# eject /dev/sr1

Perintah tersebut untuk melakukan eject kepada media sr1 yang ada di /dev. Lalu ketikkan perintah ini:

# rmmod usb_storage

Perintah tersebut untuk meremove modul usb_storage dari kernel. Kenapa? Sederhananya kita ingin menggunakan fungsi modem saja, nggak pakai modul usb_storage yang juga tersedia. OK, segitu saja penjelasan perintah ini.

Kemudian ketikkan perintah berikut:

# lsusb

Dan periksa apakah terdapat baris seperti berikut:

Bus 003 Device 003: ID 19d2:ffdd ONDA Communication S.p.A.

Jika iya, berarti modem terdeteksi di port usb. Jika tidak, cabut dan ulangi lagi dari awal (eject /dev/sr1).

Perintah lsusb digunakan untuk memeriksa device apa saja yang terdeteksi di usb.

Coba perhatikan string tadi. Ada angka-angka setelah kata ID kan? Kedua angka yang dipisahkan oleh tanda ‘:’ adalah ID. Dalam kasus ini, 19d2 adalah id untuk vendor (semacam nomor seri untuk vendor yang membuat produk) dan ffdd adalah id untuk product atau device. Dua kode dalam heksadesimal inilah yang kita butuhkan. OK, sip! Lanjut!

Sekarang ketikkan perintah berikut:

# modprobe usbserial vendor=0x19d2 product=0xffdd

Perintah itu digunakan untuk mendaftarkan modul bernama usbserial. Modul ini kita perlukan untuk berkomunikasi dengan modem dengan id vendor dan id product seperti yang kita dapatkan dari lsusb. Sebenarnya kalau mau pakai modem lain juga bisa asalkan kita tahu vendor dan product id-nya supaya linux bisa berkomunikasi dengan device tersebut.

Selanjutnya periksa apakah Anda telah menginstall program wvdial. Ini penting karena program ini yang akan kita gunakan untuk melakukan dial up.

Jika belum, lakukan instalasi dulu:

# apt-get install wvdial

Sekarang coba test dulu apakah wvdial bisa mengenali modem kita:

# wvdialconf

Jika sudah maka akan muncul pesan kira-kira seperti ini:

Editing `/etc/wvdial.conf’.

Scanning your serial ports for a modem.

Modem Port Scan<*1>: S0   S1   S2   S3
WvModem<*1>: Cannot get information for serial port.
ttyUSB0<*1>: ATQ0 V1 E1 — OK
ttyUSB0<*1>: ATQ0 V1 E1 Z — OK
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 — OK
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB0<*1>: Modem Identifier: ATI — Manufacturer: +GMI: China TeleCom
ttyUSB0<*1>: Speed 9600: AT — OK
ttyUSB0<*1>: Max speed is 9600; that should be safe.
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK

WvModem<*1>: Cannot get information for serial port.
ttyUSB2<*1>: ATQ0 V1 E1 — OK
ttyUSB2<*1>: ATQ0 V1 E1 Z — OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 — OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB2<*1>: Modem Identifier: ATI — Manufacturer: +GMI: China TeleCom
ttyUSB2<*1>: Speed 9600: AT — OK
ttyUSB2<*1>: Max speed is 9600; that should be safe.
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK

Found a modem on /dev/ttyUSB0.
Modem configuration written to /etc/wvdial.conf.
ttyUSB0<Info>: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0″
ttyUSB2<Info>: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0″

Modem sudah bisa dikenali, sekarang kita edit file konfigurasi supaya kita bisa melakukan dial dengan modem.

# nano /etc/wvdial.conf

Perintah itu untuk membuka file konfigurasi wvdial bernama wvdial.conf

Ketikkan teks di bawah ini dan simpan kembali sebagai file wvdial.conf

[Dialer smart]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
Phone = #777
New PPPD = yes
ISDN = 0
Username = smart
Password = smart
Modem = /dev/ttyUSB0
Baud = 460800
Command Line = ATDT
Stupid Mode = 1

Sekarang kita coba jalankan wvdial lagi:

# wvdial smart

Jika terdapat pesan seperti ini:

–> WvDial: Internet dialer version 1.60
–> Cannot get information for serial port.
–> Initializing modem.
–> Sending: ATZ
ATZ
OK
–> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
–> Modem initialized.
–> Sending: ATDT#777
–> Waiting for carrier.
ATDT#777
CONNECT 3100000
–> Carrier detected.  Starting PPP immediately.
–> Starting pppd at Mon Jun 27 09:17:35 2011
–> Pid of pppd: 2846
–> Using interface ppp0
–> local  IP address 10.253.40.240
–> remote IP address 10.17.95.5
–> primary   DNS address 10.17.3.252
–> secondary DNS address 10.17.3.252

Maka Anda berhasil terkoneksi ke internet. Coba periksa dengan mengetikkan

# ifconfig

Jika terdapat teks

ppp0      Link encap:Point-to-Point Protocol
inet addr:10.252.93.224  P-t-P:10.20.31.15  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
RX packets:67 errors:0 dropped:0 overruns:0 frame:0
TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:16300 (16.3 KB)  TX bytes:42379 (42.3 KB)

berarti terdapat interface ppp artinya Anda benar-benar sudah terhubung ke jaringan smartfren. Lakukann ping kalau masih belum percaya ^^

Jika ingin melakukan koneksi di kesempatan berikutnya, cukup ketikkan perintah-perintah ini saja di terminal:

# eject /dev/sr1

# rmmod usb_storage

# modprobe usbserial vendor=0x19d2 product=0xffdd

# wvdial smart

Nah, itu dia cara koneksi ke internet menggunakan modem smartfren ac682. Semoga bermanfaat

Selamat Datang di Dunia Digital

Selamat datang di dunia digital (ehem, kayak digimon dong @@~)

Kita hidup di dunia modern, dunia yang serba otomatis. Di masa ini segala barang sudah dapat dikendalikan melalui perangkat-perangkat elektronik. Mulai dari mesin kecil seperti Hand Phone sampai mesin besar seperti mesin cuci dan komputer. Semua merupakan alat elektronik yang menerapkan sistem digital.

Artikel ini akan menjelaskan sedikit tentang pemahaman rangkaian digital sebelum mengacu kepada topik-topik lanjutan yang akan dibahas di artikel lain.

Apa itu Digital?

Digital berasal dari kata digit. Secara harfiah, rangkaian digital adalah rangkaian yang memiliki kemungkinan nilai yang diskrit. Maksudnya bagaimana?

Setiap rangkaian listrik pasti membutuhkan arus dan tegangan untuk beroperasi bukan? Kalau rangkaian analog (bukan digital) memiliki banyak kemungkinan nilai tegangan yang tak terbatas (nilai 1,1 V dengan 1,101 V berbeda). Contoh rangkaian ini adalah mikrofon yang mengubah suara menjadi tegangan.

Sementara di dunia digital, kemungkinan nilai hanya ada dua: ada aliran listrik dan tidak adanya aliran listrik. Biasanya disimbolkan dalam logika 1 (ada listrik) dan 0 (nggak ada listrik). Meskipun begitu, ada rentang / batas yang membedakan kedua level tersebut. Logika 1 (satu) misalnya untuk rentang tegangan yang masuk 3V ~ 5V sedangkan untuk logika 0 (nol) untuk tegangan dalam rentang 0V ~ 2 V. Misalkan tegangan yang masuk rangkaian adalah 3,1V akan dibaca sebagai logika 1, sedangkan 3,11V juga akan dibaca sebagai logika 1.

Lalu untungnya apa?

Dengan menggunakan rangkaian digital ada banyak sekali keuntungannya dibandingkan dengan rangkaian yang analog.

Sinyal listrik analog tak bisa disimpan atau disalin atau dikirim secara sempurna karena ada takhingga nilai. Bayangkan bahwa data harus disimpan dalam keadaan yang sama persis dengan aslinya. Ataupun data harus dikirim sesuai dengan aslinya. Kita tahu bahwa dalam transmisi melalui media ada beberapa faktor yang dapat menyebabkan tegangan atau arus menjadi bernilai berbeda (hilang di tengah jalan misalnya). Jika itu terjadi, data yang diterima pasti tidak akan sama dengan data semula (lha udah hilang di tengah jalan). Karena itu untuk menyimpan data seperti ini sangat susah, kalaupun bisa infrastrukturnya cukup mahal karena kualitas harus dijamin seperti data semula.

Berbeda dengan rangkaian digital, meski terjadi sedikit perbedaan antara data yang diterima dengan data yang dikirim asalkan data itu masih dalam rentang logika yang sama maka data akan tetap dianggap sebagai data yang sama. Dengan demikian penyimpanan dan transmisi akan dapat direalisasikan dengan lebih mudah dan murah tentunya. Hilang-hilang dikit nggak apa-apa, tapi masih bisa diartikan dalam data yang sama.

Menarik, lalu apa aja yang harus saya kuasai setidaknya?

Berbicara tentang rangkaian digital, tentunya harus ada dasar yang dipelajari. Nggak perlu muluk-muluk harus bisa nyolder, bikin IC sendiri, dan sebagainya. Lantas apa? Tenang, kita hanya perlu:

1. Matematika diskrit terutama bagian aljabar boolean dan logika.

What? apa pula itu? Aljabar boolean adalah aljabar (teknik operasi nilai) yang mengoperasikan nilai-nilai boolean. Nilai boolean berbeda dengan nilai angka yang kita kenal selama ini. Nilai boolean hanya terdiri dari dua buah nilai, benar atau salah. Penjelasan lebih lanjut silahkan google aja, kalau nanti ada waktu akan saya jelaskan di artikel lain. Sementara logika matematika adalah … logika. Maksudnya ya seperti logika DAN, ATAU, BUKAN, IMPLIKASI, dsb.

2. Imajinasi

Jangan salah, imajinasi itu perlu karena dalam rangkaian digital diperlukan imajinasi untuk mendesain rangkaian yang efisien. Kenapa efisien? Selain supaya rangkaian itu berjalan cepat, juga biaya pembuatannya bisa murah (prinsip ekonomi). Pintar-pintarlah berhemat dan imajinasi akan membantu kita dalam berhemat. Nggak nasi roti pun bisa dimakan untuk 2 hari ke depan. Oops… jadi curhat @@~

Well, those are what you need!

Uwo….

Baru aktif (sebenarnya nggak benar-benar aktif) lagi di dunia internet. Kehidupan perkuliah cukup menyita waktu, terutama kaderisasi dan segala hal tentangnya. Ya, saya coba untuk sebisa mungkin posting sesuatu yang berguna di blog ini.

 

Satria Ady Pradana

Teknik Informatika ITB 2010

Follow

Get every new post delivered to your Inbox.