Mandailing Natal - Serial Number DeepFreeze 7.30.020.3852 - siapa yang tidak mengenal software kecil ini lagi, yang terkenal dengan kemampuannya untuk membukan system agar tidak sembarang orang boleh mengutak atik system komputer, yang paling parah kadang ada tangan usil yang menghapus directory vital pada windows, seperti system32 atau system, atau file dan directory vital lainnya, yang dapat menyebabkan windows mengalami crash.
Terlebih lagi jika komputer yang di peruntukkan bagi umum, seperti halnya komputer warnet yang bebas di gunakan oleh siapa saja. Sofware deepfreeze ini mampu menahan dan membekukan system komputer windows, walau file-file penting bisa di hapus oleh orang yang tidak bertanggung jawab, selama mode deepfreeze terkunci, hal itu tidak menjadi masalah. Karena dengan sekali restart, file yang sebelumnya di hapus oleh tangan jahil, akan kembali ke tempatnya seperti sedia kala.
Untuk itu sebuah lab komputer di satu sekolah di padangsidimpuan, saya deepfreeze drive C, D untuk menjaga agar system tetap ringan, aman, tidak mengalami crash serta tidak di penuhi file sampah oleh penggunanya. Kebetulan deepfreeze yang saya gunakan pada lab tersebut dengan versi 7.30.020.3852.
Untuk serial number deep freeze bisa di ambil di bawah ini, saya letakin disini sebenernya untuk mempermudah pekerjaan. Deep Freeze di gunakan untuk membekukan system, yang mana system itu akan terkunci dan terlindungi dari perubahan-perubahan yang tidak di inginkan.
Termasuk dengan penambahan aplikasi yang tidak kita inginkan yang di masukkan oleh orang lain maupun oleh virus yang kita tidak sadari. Nah tidak panjang lebar ini dia serial number deepfreeze 7.30.020.3852
A2JKYGDQ-D1AFZKHE-RE4MGYTV-H3MM8X04-7RV7S95Y
Rabu, 17 Februari 2016
Kamis, 11 Februari 2016
Mengubah Meta Tag Blogger Seo
Mandailing Natal - Mengubah Meta Tag Blogger Seo - tulisan ini saya buat sebenernya disini karena saya melakukan perubahan total pada tampilan blog yang saya miliki ini, tampilan yang ada sekarang menggunakan framework bootstrap.
Untuk mengamankan meta tag lamanya, saya coba pastekan di halaman post blogspot. berikut meta tag blogger yang saya harapkan dapat memperbaiki crawl search engine terhadap www.mandailingnatal.com
Untuk mengamankan meta tag lamanya, saya coba pastekan di halaman post blogspot. berikut meta tag blogger yang saya harapkan dapat memperbaiki crawl search engine terhadap www.mandailingnatal.com
<b:if cond='data:blog.isMobile'>
<meta content='noindex,nofollow' name='robots'/>
</b:if>
<b:include data='blog' name='all-head-content'/>
<b:if cond='data:blog.pageType == "index"'>
<title><data:blog.title/></title>
<b:else/>
<title><data:blog.pageName/> | <data:blog.title/></title>
</b:if>
<b:if cond='data:blog.pageType == "archive"'>
<meta content='noindex,noarchive' name='robots'/>
</b:if>
Rabu, 10 Februari 2016
Mengenal Selektor Css
Mandailing Natal - Mengenal Selektor Css, dalam pembuatan sebuah website, tidak terlepas dari yang namanya html dan css, HTML yang di singkat dari Hypertext Markup language, pernah populer di zamannya, bahkan sampai hari ini masih tetap populer, hingga akhirnya pengembang dari html, menyebutkan bahwa html kelak hadir dalam versi terbarunya yakni html6.
Css singkatan dari Cascade Style Sheet, merupakan bahasa yang digunakan untuk meformat tampilan dari html itu sendiri, dalam CSS di kenal beberapa bagian penting, yang salah satunya di sebut selektor. Selektor sendiri terdiri atas beberapa macam yakni
Selektor Tag atau Selektor Elemen
Selektor ini, menggunakan tag/elemen html itu sendiri, seperti tag
Css singkatan dari Cascade Style Sheet, merupakan bahasa yang digunakan untuk meformat tampilan dari html itu sendiri, dalam CSS di kenal beberapa bagian penting, yang salah satunya di sebut selektor. Selektor sendiri terdiri atas beberapa macam yakni
- Selektor Tag atau disebut juga selektor Element
- Selektor Kelas
- Selektor Pseudo-element
- Selektor Turunan
- Selektor Parent-Child
- Selektor Pseudo-klass
- Selektor ID
- Selektor Universal
- Selektor Bersebelahan
Selektor Tag atau Selektor Elemen
Selektor ini, menggunakan tag/elemen html itu sendiri, seperti tag
p, body, b, dan tag-tag html lainnya, misalnya tag p (dalam html bisa di gunakan sebagai pengatur paragraf) nah paragraf ini bisa di modifikasi sedemikian rupa dengan cssSelasa, 09 Februari 2016
Download Template Blogspot Responsive BootStrap
Download Template Blogspot Responsive BootStrap - template ini bukan tamplate yang hebat apalagi luar biasa, ini template menggunakan framework bootstrap yang saya peruntukkan untuk anak-anak tercinta di smk teruna.
Sebagai media pembelajaran, untuk menggunakan css, dan html. Terlebih untuk blogspot mereka.
download
Sebagai media pembelajaran, untuk menggunakan css, dan html. Terlebih untuk blogspot mereka.
download
Senin, 08 Februari 2016
Mengganti Nama Eth Ubuntu Server
Mandailing Natal - Mengganti Nama Eth Ubuntu Server - cara mengganti nama eth0, eth1, eth2 dan eth lainnya di ubuntu server, terkadang saat kita menginstall system operasi ubuntu server di virtual box, dan kita memindahkan ke komputer lain, sang ubuntu server mengubah nama eth yang di gunakannnya, dengan mana eth yang lainnya, atau mungkin ketika lancard ubuntu server pada komputer yang kita gunakan sebagai server proxy mengalami masalah, sehingga kita harus menggantinya dengan ethernet lainnya, maka ubuntu server akan memberikan nama eth selanjutnya, bukan eth di namai dengan nama eth sebelumnya. Meskipun merek dan type lancard yang kita gunakan sama.
Setiap kali kita mengganti lancard, atau memindahkan mesin virtual ubuntu server kita ke komputer lain, ubuntu tersebut akan mendeteksi nama mac-address yang baru. seperti gambar berikut, ada beberapa nama interface yang masuk didalam mesin ubuntu, yang terakhirlah yang aktive.
Dalam kasus Mengganti Nama Eth Ubuntu Server saya menggunakan virtualbox, dan pada dasarnya di komputer real juga tetap sama. Untuk melihat nama interface yang aktif dapat di gunakan perintah berikut:
Untuk mengubah namanya ke eth0 seperti sebelumnya tinggal ubah dan hapus baris yang tidak di gunakan, sesuaikan yang baru dengan mac-address yang kita lihat di HWId atau biasanya baris paling bawah pada file
cara untuk mengubahnya kita gunakan editor nano pada konsol, dan jangan lupa login sebagai superuser (root) dengan perintah
atau bisa juga singkatnya menggunakan perintah sudo seperti berikut
Tampilannya seperti berikut
dalam screenshoot diatas, terlihat bahwa beberapa kali ubuntu server, saya running ulang, dengan nama yang berbeda di virtualbox.
Perhatikan PCI device yang terakhir, pci tersebutlah yang merupakan lancard aktif saat tulisan cara Mengganti Nama Eth Ubuntu Server saya buat. Jadi nama itulah nanti yang akan kita ubah ke namanya misalnya ke eth0. Agar configurasi ip yang terletak pada file
Simplenya begini,
Kebetulan configurasi ip di dalam file
Agar eth0 kembali di baca ubuntunya, kita ubah file
Cara seperti diatas merupakan salah satu cara, dan sebenernya tidak masalah juga jika yang di baca ubuntu server eth yang aktif adalah eth4 kita ubah file
Simpan configurasi, dan restart system dengan perintah
Teknik Mengganti Nama Eth Ubuntu Server juga, bisa kita gunakan untuk mengubah nama interface sesuka hati, misalnya saya ubah interface yang aktif (eth4 ) menajadi nama interfacenya cacing. Di /etc/network/interfaces juga kita ubah nama eth4 jadi cacing. Maka hasilnya adalah interface ubuntu server yang saya gunakan bernama cacing.
Mengganti Nama Eth Ubuntu Server - mandailing natal, semoga tulisan singkat tentang Mengganti Nama Eth Ubuntu Server bermanfaat bagi yang membutuhkan cara mengganti nama eth ubuntu server (cara mengubah nama interface ubuntu )
Setiap kali kita mengganti lancard, atau memindahkan mesin virtual ubuntu server kita ke komputer lain, ubuntu tersebut akan mendeteksi nama mac-address yang baru. seperti gambar berikut, ada beberapa nama interface yang masuk didalam mesin ubuntu, yang terakhirlah yang aktive.
Dalam kasus Mengganti Nama Eth Ubuntu Server saya menggunakan virtualbox, dan pada dasarnya di komputer real juga tetap sama. Untuk melihat nama interface yang aktif dapat di gunakan perintah berikut:
ifconfig -a |grep eth
Untuk mengubah namanya ke eth0 seperti sebelumnya tinggal ubah dan hapus baris yang tidak di gunakan, sesuaikan yang baru dengan mac-address yang kita lihat di HWId atau biasanya baris paling bawah pada file
/etc/udev/rules.d/peristent-net.rules cara untuk mengubahnya kita gunakan editor nano pada konsol, dan jangan lupa login sebagai superuser (root) dengan perintah
sudo -i atau bisa juga singkatnya menggunakan perintah sudo seperti berikut
sudo nano /etc/udev/rules.d/70-persistent-net.rules
Tampilannya seperti berikut
dalam screenshoot diatas, terlihat bahwa beberapa kali ubuntu server, saya running ulang, dengan nama yang berbeda di virtualbox.
Perhatikan PCI device yang terakhir, pci tersebutlah yang merupakan lancard aktif saat tulisan cara Mengganti Nama Eth Ubuntu Server saya buat. Jadi nama itulah nanti yang akan kita ubah ke namanya misalnya ke eth0. Agar configurasi ip yang terletak pada file
/etc/network/interfaces tidak perlu kita ubah. Simplenya begini,
Kebetulan configurasi ip di dalam file
/etc/network/interfaces di miliki oleh interface eth0, sementara ubuntu server membaca interface yang aktif adalah eth4, kita tahu yang aktif adalah eth4 dengan menggunakan perintah ifconfig -a|grep eth Agar eth0 kembali di baca ubuntunya, kita ubah file
/etc/udev/rules.d/70-persistent-net.rules.Cara seperti diatas merupakan salah satu cara, dan sebenernya tidak masalah juga jika yang di baca ubuntu server eth yang aktif adalah eth4 kita ubah file
/etc/network/interface tanpa harus mengubah file /etc/udev/rules.d/70-persistent-net.rules. Cara yang kita pilih hanya soal selera yang mana yang mau kita gunakan. Untuk menambah wawasan pengetahuan baiklah kita ubah file /etc/udev/rules.d/70-persistent-net.rules untuk mengikuti apa yang ada di /etc/network/interfacessudo nano /etc/udev/rules.d/70-persistent-net.rules
Simpan configurasi, dan restart system dengan perintah
sudo reboot
Teknik Mengganti Nama Eth Ubuntu Server juga, bisa kita gunakan untuk mengubah nama interface sesuka hati, misalnya saya ubah interface yang aktif (eth4 ) menajadi nama interfacenya cacing. Di /etc/network/interfaces juga kita ubah nama eth4 jadi cacing. Maka hasilnya adalah interface ubuntu server yang saya gunakan bernama cacing.
Mengganti Nama Eth Ubuntu Server - mandailing natal, semoga tulisan singkat tentang Mengganti Nama Eth Ubuntu Server bermanfaat bagi yang membutuhkan cara mengganti nama eth ubuntu server (cara mengubah nama interface ubuntu )
Minggu, 07 Februari 2016
Belajar Pemrograman Perl
Mandailing Natal - Belajar Pemrograman Perl, tulisan Belajar Pemrograman Perl bukan tulisan murni saya, ini saya ambil dari webnya Gigih Forda,Semoga bermanfaat untuk kita semua, saya buat disini kadang tulisan-tulisan penting seperti Belajar Pemrograman Perl bisa hilang, apalagi di hosting di server kampus.

NAME
PPP - Pintu Pertama ke Perl (bukan Point to Point Protocol, apalagi Partai Persatuan Pembangunan)$Id: ppperl.pod,v 1.7 1999/03/29 16:55:48 edwin Exp $
Teks
PPP Belajar Pemrograman Perl ditulis dengan tujuan untuk membantu orang Indonesia yang baru belajar menggunakan Perl. Latar belakang bahasa C akan sangat membantu, meskipun bukan syarat mutlak, akan tetapi pengalaman pemrograman dalam sekurang-kurangnya satu bahasa lain diperlukan. Sebagai bahan tutorial, teks ppp dirancang untuk digunakan bersama dengan perlop. Jika dokumen tersebut dirasa sulit dibaca karena terlalu teknis, Appendix A disediakan untuk membantu memahami sejumlah istilah teknis di sana.
Rencananya teks PPP akan disampaikan sebagai salah satu materi pada Pelatihan/Tutorial Linux KPLI Jateng (Kelompok Pengguna Linux di Indonesia area Jawa Tengah, http://jateng.linux.or.id/), tanggal: m#\d+/\d+/1999#, di STMIK Dian Nuswantoro, Semarang, Indonesia.
Menurut Larry Wall (http://www.wall.org/) penciptanya bahasa perl, Perl merupakan akronim dari Practical Extraction and Report Language, atau Pathologically Eclectic Rubbish Lister. Perl diciptakan dengan menggabungkan unsur-unsur dari bahasa C, awk, Bourne shell script, dan program-program seperti sed, grep. Tidak seperti shell script, Perl tidak bergantung pada program-program eksternal, sehingga lebih cepat.
Perl adalah setengah kompiler juga setengah interpreter. Jika kita menjalankan sebuah skrip Perl, maka skrip tersebut sebenarnya dikompilasi terlebih dahulu ke dalam bentuk menengah (pohon syntax) yang kemudian di interpretasikan oleh sistem run-time Perl. Dengan demikian, eksekusi skrip Perl lebih cepat daripada skrip bahasa-bahasa yang murni terinterpretasi (interpreted language) seperti Tcl.
Lebih lanjut lagi juga muncul teknik-teknik untuk lebih mempercepat lagi waktu eksekusi skrip Perl. Tidak seperti produk-produk proprietary seperti Java yang tidak pernah lepas dari isu-isu "politik bisnis'', pengguna Perl bisa dengan tenang, nyaman dalam menggunakan Perl pada platform favoritnya.
Seperti Linux, Perl dapat diperoleh secara bebas, karena berlisensi publik GNU. Oleh para pakar bahasa pemrograman, Perl digolongkan ke dalam VHLL (Very High Level Language). Satu perintah dalam Perl ekivalen dengan banyak perintah dalam bahasa tingkat tinggi, sehingga program-program yang ditulis dalam Perl sangat efisien juga ringkas. Perl merupakan pilihan utama untuk tugas-tugas pengolahan teks, terutama dengan fasilitas regular expression-nya yang sangat canggih.
Dengan mewabahnya internet, serta sejumlah protokolnya yang berbasis teks (NVT ASCII), Perl menjadi pilihan utama untuk pemrograman internet, terutama CGI (Common Gateway Interface). Semula Perl hanya dipakai untuk menulis skrip-skrip pendek, namun dalam perkembangannya, Larry menambahkan dukungan bagi pemrograman berorientasi objek, dan dimulailah era baru pemrograman Perl untuk aplikasi-aplikasi besar juga rumit.
Simpanlah sebagai file, biasanya dengan ekstensi .pl (tapi tidak penting bagi interpreter perl), ubah permissionnya ke executable (misalkan chmod 755, atau chmod +x).
Dokumentasi biasanya ditulis dalam format pod (Plain Old Documentation), untuk membacanya, gunakan perldoc. Misalkan untuk membaca perlfaq.pod, jalankan perintah perl:
Tersedia juga konverter dari pod ke format-format lain seperti ASCII Text, HTML. Sebagai contoh, untuk membuat HTML dari perlfaq1.pod:
Sedangkan untuk membuat ASCII Text:
Untuk menuliskan komentar (comment) pada source code, tuliskan setelah simbol #.
Contoh:
Perhatikan
quote (tanda kutip) pada skalar string. Ada tiga macam quote: double quote (seperti pada contoh di atas), single quote, dan back quote. Jika kita gunakan double quote, maka kita izinkan penggunakan control character dan interpolasi variabel pada string tersebut.
Berikut adalah contoh-contoh control character:
Interpolasi
Interpolasi variabel berarti bahwa sebuah variabel yang digunakan dalam sebuah string disubstitusi dengan nilai variabel tersebut.
Sekarang cobalah contoh berikut:
Jika kita gunakan single-quote, maka pada string tersebut tidak berlaku control character dan interpolasi variabel. Cobalah jalankan kembali contoh di atas setelah mengganti double-quote pada
Cobalah intervolasi variable array assosiatif:
Cara lain untuk menuliskan quote adalah dengan menggunakan
Contoh:
Contoh:
Indeks elemen array dimulai dari 0.
Contoh:
Basis 0 perl sebenarnya dapat diubah dengan cara mengubah nilai
Contoh:
Untuk mengetahui indeks dari elemen terakhir dari sebuah array, gunakan simbol
Contoh:
shift, pop -> shift berfungsi untuk mengambil elemen terkiri dari array, sedangkan pop berfungsi untuk mengambil elemen terkanan.
Contoh:
unshift menambahkan elemen array dari sisi kiri, sedangkan push menambahkan elemen array dari sisi kanan.
Contoh:
join, split join berfungsi untuk membentuk sebuah skalar dari elemen-elemen sebuah array yang dipisahkan oleh delimiter yang kita tentukan.
Contoh:
membentuk
Contoh:
Mengenai pola pencocokan, akan kita lihat nanti lebih jauh pada bagian Regular Expression. Untuk melakukan sort berdasarkan nilai ASCII.
Contoh:
Contoh:
atau:
keys, values keys membentuk array yg berisi key dari sebuah hash.
Contoh:
akan menghasilkan output:
Sebaliknya values membentuk array yg berisi value dari sebuah hash.
Contoh:
Contoh:
delete menghapus elemen hash berdasarkan key-nya.
Contoh:
menghapus pasangan key - value Randal - Llama dari hash %booklist.
Konteks boolean terutama digunakan dalam mengevaluasi sebuah ekspresi. Nilai SALAH adalah null string ('' ''), 0, ``0'', atau undef. Variabel yang tidak terdefinisi bernilai
Contoh:
ref() mengambil tipe referensi, sehingga output contoh di atas adalah:
Contoh:
Karena TMTOWTDI (There's More Than One Way To Do It), ada beberapa cara untuk mengakses elemen dari variabel anonim. Kita dapat menggunakan konteks yang sesuai dengan tipe referensinya.
Misalkan karena
${$ref_to_scalar}, atau lebih singkat:
Seperti pada contoh di atas kita melihat @$ref_to_arr, kemudian mengiterasi elemen-elemennya dengan
Anda tidak perlu membaca bagian ini jika Anda seorang programmer C. Blok statemen adalah rangkaian statemen yang ditempatkan dalam pasangan kurung kurawal.
Bentuknya:
Perl mengeksekusi statemen berturut-turut mulai dari yang pertama sampai yang terakhir.
atau:
EXPR adalah ekspresi kendali atau kondisional yang dievaluasi dalam konteks boolean (benar atau salah). Blok statemen dieksekusi jika EXPR bernilai benar. Kita dapat menuliskan statemen mendahului if jika statemen hanya satu baris.
Contoh:
selain itu, statemen harus ditulis di dalam blok (tidak seperti pada bahasa C). Sedangkan bentuk penulisan unless sama seperti pada if, di mana unless akan mengeksekusi blok statemen jika EXPR bernilai salah.
while akan mengeksekusi blok statemen berulang-ulang selama EXPR bernilai benar, sedangkan unless justru selama EXPR bernilai salah. Kita akan melihat pemakaian while pada pembahasan mengenai I/O dasar.
di mana EXPR_AWAL pertama-tama dieksekusi, lalu berturut-turut blok statemen serta EXPR_AKSI dieksekusi berulang-ulang selama KONDISI terpenuhi. Di sini KONDISI adalah sebuah ekspresi kondisional yang dievaluasi dalam konteks boolean.
Contoh:
Bentuk lain:
Contoh:
Pada contoh di atas, for mengiterasi array @scores, lalu mengeset variabel global
Jika kita ingin menggunakan variabel skalar lain bukannya
Kita dapat membuat program yang lebih interaktif, artinya yang dapat menerima input dari user, dengan membaca dari STDIN. STDIN adalah filehandle yang disediakan oleh Perl untuk pembacaan dari standard input.
Contoh:
Perhatikan bahwa pada konteks array, input akan dibaca terus sampai diterima karakter EOF (Ctrl-D pada Linux). Untuk pemrograman user-interface berbasis teks yang lebih baik, kita dapat menggunakan library curses atau ncurses (new curses) juga modul Curses. Mengenai pemakaian modul akan kita lihat lagi pada bagian Fungsi, Library serta Modul).
Kita sering melihat program yang menerima argumen pada command-line, misalkan cat.
Kita menjalankan:
di mana ppperl.txt adalah argumen yang dilewatkan ke program cat. Kita dapat membuat skrip perl kita bekerja seperti itu dengan menggunakan operator berlian (diamond operator).
Contoh:
Misalkan script di atas kita beri nama pcat, maka jika kita jalankan:
akan bekerja seperti 'cat ppperl.txt'. Operator berlian (<>) membaca data dari file yang kita lewatkan sebagai argumen pada command-line, kemudian
Pembacaan data dilakukan baris demi baris, dengan kata lain: satu pembacaan dilakukan sampai dijumpai karakter newline
Dengan memanfaatkan
atau bahkan:
Jika kita melewatkan argumen pada saat memanggil skrip perl kita, maka sebenarnya argumen-argumen tersebut dibaca pada array @ARGV. Misalkan kita punya skrip perl bernama showargs.pl sebagai berikut:
kemudian kita memanggilnya sebagai berikut
maka outputnya:
Operator diamond sebenarnya bekerja pada
lalu:
akan mencetak isi file Camel.syn juga Llama.syn dengan berturut-turut.
Untuk mengetahui jumlah argumen yg dilewatkan, manfaatkan variabel
Jadi kalau pada showargs.pl kita tambahkan:
maka: showargs.pl Camel Llama Panther akan menghasilkan output:
Jumlah argumen yg dilewatkan = 3.
Jika kita bekerja dengan word processor, tentunya sudah akrab dengan fasilitas ''search text'' ataupun ``find and replace.'' Secara sederhana, regular expression atau regex dapat dipahami sebagai fasilitas semacam itu, meskipun jauh lebih berdayaguna seperti yang akan kita lihat nanti. Bagi yang sudah berpengalaman menggunakan grep (= global regular expression parser), regex Perl menyerupai egrep (extended grep). Regex yang kita susun adalah berupa pattern (pola) yang terdiri dari sejumlah item.
Kita lihat dulu sebuah contoh:
/Regular/ di dalam
baris yang mengandung kata 'Regular'.
Cobalah jalankan script di atas terhadap file ppperl.txt ini.
Pola dievaluasi sebagai double-quote string, artinya kita dapat melakukan interpolasi variabeldi dalam pola, juga dikenali pemakaian control character (ingat pembahasan mengenai double-quote string).
Jika pada contoh di atas kita ingin agar pola dapat cocok dengan Regular maupun Reguler, kita dapat menggunakan character class sebagai berikut:
Jika character class mencakup satu rentang yang panjang, misalkan:
kita dapat menuliskannya sebagai berikut ini:
Bentuk negatifnya kita tuliskan dengan simbol
Dengan menggunakan character class, kita pelajari sejumlah konstruk berikut:
Konstruk Nama Ekivalen dengan:
Multiplier adalah penentu jumlah berapa kali sebuah item muncul. Ini sangat berguna jika kita ingin menyusun pola pencocokan terhadap item yang jumlah pemunculannya bervariasi (tidak tetap), atau jumlah pemunculannya tetap tapi sangat banyak.
Konstruk: Penjangkaran pada:
^ awal baris
$ akhir baris sebelum \n
\b word boundary (batas word)
\B bukan batas word
Perhatikan bahwa tanda ^ memiliki arti yang berbeda jika digunakan di dalam character class atau
Sebaliknya,
karena pada 'Larry Wall', setelah Wall ada batas word.
Operator pencocokan (
Jika dievaluasi dalam konteks array, akan mengeset elemen array pertama dengan
Operator substitusi (
Contoh:
Keterangan opsi:
Kalau kita tambahkan opsi g, seperti ini:
maka outputnya menjadi:
Kalau kita ingin agar $init tidak berubah, maka kita dapat meng-assign hasil substitusi ke skalar yang lain. Jika contoh di atas kita ubah:
Berikut ini adalah sebuah contoh penerapan regex untuk mengoreksi format Nomor Induk Mahasiswa: Aplikasi basis data di sebuah Perguruan Tinggi dari tahun ke tahun ditulis dalam sistem yang berganti-ganti, oleh orang yang berbeda, untuk kebutuhan yang berbeda juga.
Ketika diadakan pembenahan sistem, nampak inkonsistensi pada field NIM. Format yang diharapkan adalah dua digit nomor angkatan, titik, dua digit kode program studi, titik, empat digit nomor mahasiswa. Setelah data pada field tersebut dipelajari, dapat dihimpun sample data sebagai berikut (untuk kode prodi tertentu):
Karena banyaknya record yang harus diproses (dimulai dengan mahasiswa angkatan 1988), juga karena terbatasnya kemampuan "find and replace" yang dimiliki database, maka diperlukan cara lain. Jika masalah pengaksesan database kita abaikan, lalu kita berkonsentrasi pada masalah pengolahan string-nya, cobalah selesaikan dengan regex Perl.
Di bawah ini adalah salah satu cara dengan dua baris regex Perl:
Bingung?
Ini adalah bentuk yang lebih mudah dibaca:
Regex yang pertama menyisipkan kode prodi, jika data belum mengandung kode prodi, lalu regex kedua memisahkan digit dari non-digit, memformat nomor mhs dalam empat digit, dan menyatukannya kembali dengan delimiter berupa titik.
Cobalah mengerjakannya dalam bahasa lain seperti C, Pascal, atau Basic :-) Jika operator substitusi nampak begitu berdayaguna, namun untuk penggantian karakter lebih efisien menggunakan operator
Contoh:
akan mencetak:
Opsi-opsi untuk operator
Untuk jelasnya, kita coba script berikut:
$1 bernilai: E
$1 bernilai: Ad
Sebuah subrutin atau fungsi memiliki bentuk sebagai berikut:
Contoh:
Variabel
Contoh:
Sebenarnya sebuah subrutin dapat mengembalikan tidak hanya skalar, tapi juga array, array asosiatif, dan beberapa macam lainnya. Untuk pembahasan lebih lengkapnya, baca perlsub. Fungsi
Contoh:
Di sini kita lihat bahwa subrutin yang dilewatkan ke
efisien lagi, kita dapat gunakan operator ''piring terbang'' (spaceship operator), sehingga subrutin by_num menjadi:
Cobalah membuat sorting descending (dari besar ke kecil) dari array
dan kriteria ketiga nama siswa, maka kita dapat mengimplementasikannya sebagai berikut:
Sebelum OOP (Object Oriented Programming) dimasukkan ke Perl, library adalah cara yang terutama dipakai untuk menangani pemakaian kode secara berulang. Perbedaan utama antara library dan modul terletak pada enkapsulasi. Untuk menggunakan sebuah library, gunakan require.
Contoh:
/>
Dokumentasi sebuah modul biasanya menyatu (embedded) pada modul tersebut, dan ditulis dalam format pod.
Sebagai contoh, misalkan kita ingin membaca dokumentasi modul Getopt::Std, maka:
Cobalah Anda jalankan:
Sekarang kita akan menggunakan modul Getopt::Std untuk memproses switch pada baris perintah (command-line). Modul ini juga mendukung clustering (pengelompokan) switch.
Pada contoh di atas kita melihat switch clustering pada -fo yang sebenarnya adalah dua switch yang terpisah:
Perhatikan
ditulis tanpa diikuti colon.
Pada contoh di atas, switch -f adalah boolean flag. Lebih baik adalah dengan menggunakan hash:
yang jika dijalankan sebagai script usestd1, hasilnya adalah:
Perl memiliki sejumlah pilihan atau opsi yang dapat kita tentukan dengan melewatkan switch baris-perintah pada interpreter perl. Di sini kita lihat beberapa switch yang banyak digunakan.
-v : berfungsi untuk mencetak versi perl yang terinstall
-V : berfungsi untuk mencetak konfigurasi perl pada sistem Anda
-c : berfungsi untuk Compile only, check syntax error.
-w : berfungsi untuk Warning.
-n : berfungsi untuk Kita dapat membuat skrip yang bekerja seperti program cat,
contohnya
Dengan opsi -n, kita dapat menulis skrip di atas menjadi lebih singkat:
Opsi ini mirip seperti -n, bedanya ia juga melakukan print $_ pada akhir blok while, sehingga kita dapat menulis ulang skrip di atas menjadi:
Contoh:
akan mencetak isi file Camel.syn dan Llama.syn
Misalkan:
Jika pergantian paragraph ditandai dengan satu baris kosong (blank-line), maka pembacaan satu record akan sama dengan pembacaan satu paragraph.
Maka dari itu sering dikatakan bahwa switch -00 mengaktifkan modus paragraf. Nilai -0777 akan membaca seluruh isi file sebagai satu record.
Berguna untuk melakukan pengubahan langsung pada teks yang sedang diolah.
Misalkan kita punya script berikut bernama rmcr:
yang membuang karakter CR (Carriage Return) pada akhir baris sebuah file teks, maka untuk menggunakannya adalah sbb:
Lebih baik kalau pengubahan itu dilakukan langsung terhadap the_file.txt, dan ini dapat dilakukan dengan opsi -i.
old yang mengikuti opsi -i akan menentukan ekstensi bagi file backup yang diciptakan. Dengan cara demikian, maka perubahan (pembuangan karakter CR) langsung berpengaruh pada the_file.txt, dan juga diciptakan file the_file.txt.old sebagai backup dari the_file.txt yang lama.
-d : berfungsi untuk mengaktifkan symbolic debugger perl.
8.
PENUTUP
Saat ini pemakaian Perl telah berkembang pesat pada berbagai platform (http://www.perl.org/cgi-bin/survey/): AIX, Amiga, Digital UNIX, FreeBSD, HP-UX, IRIX, Linux, OS/2, Solaris, Win32, (dan masih banyak lagi), dan untuk berbagai keperluan yang sama sekali tidak terbayangkan ketika ia diciptakan.
Masih banyak yang belum tercakup dalam teks ini yang sekedar bermaksud menyediakan pengetahuan awal bagi orang yang ingin mengenal Perl lebih dalam. Penulis menyarankan sebagai bacaan lebih lanjut adalah buku-buku klasik seperti Programming Perl (Larry Wall dan Randal Schwartz), Learning Perl (Randal Schwartz dan Tom
Christiansen), Advanced Perl Programming (Sriram Srinivasan), meskipun sulit didapat dan muahall :-( Juga wajib dipelajari adalah perlfaq. Perlu rajin dipelajari adalah perl manpage.
Dari jumlah operand-nya, dibedakan jenis-jenis operator unary (1 operand), binary (2 operand), dan ternary (3 operand). Fungsi (subrutin) bisa ditulis sebagai operator unary.
Contoh:
Maka dari itu, dalam perlop kita menjumpai istilah operator unary bernama untuk menyebut operator-operator yang juga bisa digunakan sebagai fungsi, dan operator unary simbolik. Contoh operator unary simbolik adalah ++, dan --.
Operator-operator tertentu menerima operand berupa list (array), sehingga dikenal juga istilah operator list.
Sebagai contoh adalah fungsi atau operator
Kemudian pada bagian SYNOPSIS di perlop, kita melihat tabel tingkat prioritas (precedence)
dan asosiativitas. Entri teratas adalah operator-operator dengan tingkat prioritas paling tinggi. Asosiativitas menjadi penting kalau sebuah ekspresi melibatkan beberapa operator yang tingkat prioritasnya sama. Untuk jelasnya, kita lihat entri teratas dari tabel tersebut:
Ini berarti bahwa term dan operator-operator list memiliki asosiativitas left, yaitu evaluasi akan dilakukan dari kiri ke kanan. Kemudian ada catatan juga bahwa precedence dan asosiativitas tersebut berlaku untuk operator list dilihat dari sisi kiri (leftward). Jika kita perhatikan dalam tabel tersebut, operator list muncul lagi dengan tingkat prioritas yang jauh lebih rendah, jika dilihat dari sisi kanan (rightward).
Contoh:
Penjelasan:
Kemudian, di sisi kiri-nya (leftward),
Selanjutnya barulah operator koma membentuk array berisi elemen 1, 3, dan hasil sort (1, 2, dan 4), yang selanjutnya disimpan dalam
Contoh:
menghasilkan:

NAME
PPP - Pintu Pertama ke Perl (bukan Point to Point Protocol, apalagi Partai Persatuan Pembangunan)$Id: ppperl.pod,v 1.7 1999/03/29 16:55:48 edwin Exp $
SYNOPSIS
Teks
PPP Belajar Pemrograman Perl ditulis dengan tujuan untuk membantu orang Indonesia yang baru belajar menggunakan Perl. Latar belakang bahasa C akan sangat membantu, meskipun bukan syarat mutlak, akan tetapi pengalaman pemrograman dalam sekurang-kurangnya satu bahasa lain diperlukan. Sebagai bahan tutorial, teks ppp dirancang untuk digunakan bersama dengan perlop. Jika dokumen tersebut dirasa sulit dibaca karena terlalu teknis, Appendix A disediakan untuk membantu memahami sejumlah istilah teknis di sana.
Rencananya teks PPP akan disampaikan sebagai salah satu materi pada Pelatihan/Tutorial Linux KPLI Jateng (Kelompok Pengguna Linux di Indonesia area Jawa Tengah, http://jateng.linux.or.id/), tanggal: m#\d+/\d+/1999#, di STMIK Dian Nuswantoro, Semarang, Indonesia.
1. PENDAHULUAN
1.1 Apa Itu Perl?
Menurut Larry Wall (http://www.wall.org/) penciptanya bahasa perl, Perl merupakan akronim dari Practical Extraction and Report Language, atau Pathologically Eclectic Rubbish Lister. Perl diciptakan dengan menggabungkan unsur-unsur dari bahasa C, awk, Bourne shell script, dan program-program seperti sed, grep. Tidak seperti shell script, Perl tidak bergantung pada program-program eksternal, sehingga lebih cepat.
Perl adalah setengah kompiler juga setengah interpreter. Jika kita menjalankan sebuah skrip Perl, maka skrip tersebut sebenarnya dikompilasi terlebih dahulu ke dalam bentuk menengah (pohon syntax) yang kemudian di interpretasikan oleh sistem run-time Perl. Dengan demikian, eksekusi skrip Perl lebih cepat daripada skrip bahasa-bahasa yang murni terinterpretasi (interpreted language) seperti Tcl.
Lebih lanjut lagi juga muncul teknik-teknik untuk lebih mempercepat lagi waktu eksekusi skrip Perl. Tidak seperti produk-produk proprietary seperti Java yang tidak pernah lepas dari isu-isu "politik bisnis'', pengguna Perl bisa dengan tenang, nyaman dalam menggunakan Perl pada platform favoritnya.
Seperti Linux, Perl dapat diperoleh secara bebas, karena berlisensi publik GNU. Oleh para pakar bahasa pemrograman, Perl digolongkan ke dalam VHLL (Very High Level Language). Satu perintah dalam Perl ekivalen dengan banyak perintah dalam bahasa tingkat tinggi, sehingga program-program yang ditulis dalam Perl sangat efisien juga ringkas. Perl merupakan pilihan utama untuk tugas-tugas pengolahan teks, terutama dengan fasilitas regular expression-nya yang sangat canggih.
Dengan mewabahnya internet, serta sejumlah protokolnya yang berbasis teks (NVT ASCII), Perl menjadi pilihan utama untuk pemrograman internet, terutama CGI (Common Gateway Interface). Semula Perl hanya dipakai untuk menulis skrip-skrip pendek, namun dalam perkembangannya, Larry menambahkan dukungan bagi pemrograman berorientasi objek, dan dimulailah era baru pemrograman Perl untuk aplikasi-aplikasi besar juga rumit.
1.2 Membuat dan Mengeksekusi Program Perl
Gunakan editor teks (vi, jstar, emacs, atau apapun kesukaan Anda) untuk mengedit program Perl, pada baris pertama cantumkan path ke interpreter perl:#!/usr/bin/perl
Simpanlah sebagai file, biasanya dengan ekstensi .pl (tapi tidak penting bagi interpreter perl), ubah permissionnya ke executable (misalkan chmod 755, atau chmod +x).
1.3 Dokumentasi Perl (perlpod)
Dokumentasi biasanya ditulis dalam format pod (Plain Old Documentation), untuk membacanya, gunakan perldoc. Misalkan untuk membaca perlfaq.pod, jalankan perintah perl:
perldoc perlfaq
Tersedia juga konverter dari pod ke format-format lain seperti ASCII Text, HTML. Sebagai contoh, untuk membuat HTML dari perlfaq1.pod:
pod2html --infile=perlfaq1.pod --outfile=perlfaq1.html
Sedangkan untuk membuat ASCII Text:
pod2text perlfaq1.pod > perlfaq1.txt
Untuk menuliskan komentar (comment) pada source code, tuliskan setelah simbol #.
2. DATA
Untuk menciptakan variabel, perlu ditentukan tipe data bagi variabel tersebut. Tipe data yang paling mendasar adalah skalar. Sebuah skalar dapat berupa numerik ataupun string. Tipe data lainnya adalah array dari skalar, dan array asosiatif (associative array) dari skalar.2.1 Skalar
Variabel skalar ditulis dengan simbol$.Contoh:
$title = "Programming Perl"; #skalar string
$num = 10; #skalar numerik
Perhatikan
quote (tanda kutip) pada skalar string. Ada tiga macam quote: double quote (seperti pada contoh di atas), single quote, dan back quote. Jika kita gunakan double quote, maka kita izinkan penggunakan control character dan interpolasi variabel pada string tersebut.
Berikut adalah contoh-contoh control character:
\n -> newline (baris baru)
\r -> carriage return
\t -> tab
Interpolasi
Interpolasi variabel berarti bahwa sebuah variabel yang digunakan dalam sebuah string disubstitusi dengan nilai variabel tersebut.
Sekarang cobalah contoh berikut:
#!/usr/bin/perl
$title = "Programming Perl";
$num = 10;
$kalimat = "Jumlah buku $title sebanyak $num.\n";
print $kalimat;
Jika kita gunakan single-quote, maka pada string tersebut tidak berlaku control character dan interpolasi variabel. Cobalah jalankan kembali contoh di atas setelah mengganti double-quote pada
$kalimat menjadi single-quote, dan perhatikan perbedaannya.Interpolasi variabel tidak berlaku untuk array assosiatif (hash). Back-quote melakukan substitusi command yang dijalankan pada shell.Cobalah intervolasi variable array assosiatif:
$tanggal='date';
print "Jumlah buku $title pada $tanggal sebanyak $num.\n";
Cara lain untuk menuliskan quote adalah dengan menggunakan
q (single-quote), qq (double-quote), qx (back-quote).Contoh:
$tanggal = qx[date]; #sama dengan back-quote
$title = q/Programming Perl/; #sama dengan single-quote
$other = qq#Learning Perl#; #sama dengan double-quote
2.2 Array
Variabel array ditulis dengan simbol @.Contoh:
@small_nums = (1..20);
@authors = ("Larry", "Randal", "Friedl");
@amounts = qw(7 4 6); #sama dengan ('7', '4', '6')
Indeks elemen array dimulai dari 0.
Contoh:
print $authors[0], "\n"; #mencetak Larry
print $authors[2], "\n"; #mencetak Friedl
Basis 0 perl sebenarnya dapat diubah dengan cara mengubah nilai
$[ .Contoh:
$[ = 1; #more convenient to awk folks
print $authors[1], "\n"; #mencetak Larry
Sekalipun praktek demikian tidak dianjurkan.
Untuk mengetahui indeks dari elemen terakhir dari sebuah array, gunakan simbol
$# .Contoh:
print 'Indeks elemen terakhir = ', $#authors, "\n";
shift, pop -> shift berfungsi untuk mengambil elemen terkiri dari array, sedangkan pop berfungsi untuk mengambil elemen terkanan.
Contoh:
$leftmost = shift @authors; #mengambil Larry
print join("\n", @authors); #mencetak Randal, Friedl
$rightmost = pop @authors; #mengambil Friedl
unshift menambahkan elemen array dari sisi kiri, sedangkan push menambahkan elemen array dari sisi kanan.
Contoh:
unshift(@authors, "Larry");
push(@authors, "Srinivasan");
print join("\n", @authors); #mencetak Larry, Randal, Srinivasan
join, split join berfungsi untuk membentuk sebuah skalar dari elemen-elemen sebuah array yang dipisahkan oleh delimiter yang kita tentukan.
Contoh:
$all_authors = join("\n", @authors);membentuk
$all_authors yang berisi elemen-elemen @authors yang dipisahkan karakter newline. Sebaliknya, split membentuk array dari sebuah skalar dengan cara memisahkan elemen- elemen berdasarkan pola pencocokan tertentu.Contoh:
@original = split(/\n/, $all_authors);
Mengenai pola pencocokan, akan kita lihat nanti lebih jauh pada bagian Regular Expression. Untuk melakukan sort berdasarkan nilai ASCII.
Contoh:
@scores = (68, 50, 30, 78, 5, 58);
print join(' ', sort @scores), "\n";
2.3 Array Asosiatif
Array Asosiatif pada perl diimplementasikan sebagai hash table, array asosiatif memiliki struktur seperti array, kecuali pada indeksnya yang berupa string, sedemikian rupa sehingga hash tersusun dari pasangan-pasangan key-value. Variabel hash ditulis dengan simbol%.Contoh:
%booklist = ("Larry", "Camel", "Randal", "Llama", "Srinivasan", "Panther",);atau:
%booklist = ("Larry" => "Camel","Randal" => "Llama","Srinivasan" => "Panther",);print $booklist{'Larry'}, "\n"; #mencetak Camelkeys, values keys membentuk array yg berisi key dari sebuah hash.
Contoh:
for (sort keys(%booklist))
{
print 'The ', $booklist{$_}, " book is a dead hack by $_\n";
}
akan menghasilkan output:
The Camel book is a dead hack by Larry
The Llama book is a dead hack by Randal
The Panther book is a dead hack by SrinivasanSebaliknya values membentuk array yg berisi value dari sebuah hash.
Contoh:
for (values(%booklist)) { print $_, ''\n'';} each membentuk array yang berisi pasangan key - value dari elemen berikutnya dari sebuah array asosiatif.Contoh:
while (($author, $beast) = each(%booklist))
{
print $author, ' => ', $beast, "\n";
}
delete menghapus elemen hash berdasarkan key-nya.
Contoh:
delete $booklist{'Randal'}; menghapus pasangan key - value Randal - Llama dari hash %booklist.
2.4 Konteks
Operasi-operasi yang dilakukan terhadap data sebenarnya dilakukan di dalam konteks tertentu, artinya jika hasil yang diharapkan dari sebuah operasi terhadap data atau operand tertentu adalah skalar, maka dikatakan bahwa data atau operand tersebut dievaluasi dalam konteks skalar. Selain konteks skalar, dikenal juga konteks array atau list, dan konteks boolean.@booklist = %booklist;#menciptakan array dari hash
$jumlah_elemen = @authors; #mengambil jumlah elemen array
Konteks boolean terutama digunakan dalam mengevaluasi sebuah ekspresi. Nilai SALAH adalah null string ('' ''), 0, ``0'', atau undef. Variabel yang tidak terdefinisi bernilai
undef. Kita akan lihat penerapan konteks boolean pada pembahasan mengenai struktur kendali. 2.5 Referensi dan Variabel Anonim
Referensi mirip dengan pointer pada C. Kita dapat menciptakan referensi ke variabel bernama, maupun ke variabel anonim (tak bernama). Untuk menciptakan referensi ke variabel bernama, kita gunakan backslash di depan variabel tersebut.Contoh:
$amount = 7;
@beasties = ("Camel", "Llama", "Panther");
%booklist = ("Larry", "Camel", "Randal", "Llama", "Srinivasan", "Panther",);
$amountref = \$amount; #ref ke skalar
$beastiesref = \@beasties; #ref ke array
$booklistref = \%booklist; #ref ke hash
print ref($amountref), "\n";
print ref($beastiesref), "\n";
print ref($booklistref), "\n";
ref() mengambil tipe referensi, sehingga output contoh di atas adalah:
SCALAR ARRAY HASH Untuk menciptakan referensi ke array anonim, kita gunakan kurung persegi, namun untuk referensi ke hash anonim, kita gunakan kurung kurawal.Contoh:
$ref_to_scalar = \5;
$ref_to_arr = [1, 2, 3];
$ref_to_hash = {'satu' => 1, 'dua' => 2, 'tiga' => 3};
print ${$ref_to_scalar}, "\n";
for (@$ref_to_arr) {print $_, "\n";}
print 'Elemen ke-0: ', $$ref_to_arr[0], "\n";
print 'Elemen ke-2: ', ${$ref_to_arr}[2], "\n";
print 'Elemen ke-1: ', $ref_to_arr->[1], "\n"; #C style
for (sort keys(%$ref_to_hash)) {print $_, ': ', $$ref_to_hash{$_}, "\n";}
Karena TMTOWTDI (There's More Than One Way To Do It), ada beberapa cara untuk mengakses elemen dari variabel anonim. Kita dapat menggunakan konteks yang sesuai dengan tipe referensinya.
Misalkan karena
$ref_to_scalar memiliki tipe referensi SCALAR, maka kita ambil nilai skalar anonim tersebut dengan cara menempatkannya di dalam konteks skalar:${$ref_to_scalar}, atau lebih singkat:
$$ref_to_scalar. Demikian juga untuk array juga hash anonim, kita dapat menempatkannya dalam konteks array maupun hash, kemudian melakukan operasi array, maupun hash seperti biasa.Seperti pada contoh di atas kita melihat @$ref_to_arr, kemudian mengiterasi elemen-elemennya dengan
for(). Namun ada cara lain yang lebih akrab bagi programmer C/C++, yaitu dengan operator panah, sehingga kita melihat juga $ref_to_arr->[0] untuk mengakses elemen ke-0. Cara seperti contoh tadi terutama populer pada pemrograman Perl berorientasi objek. 3. STRUKTUR KENDALI
3.1 Blok Statemen
Anda tidak perlu membaca bagian ini jika Anda seorang programmer C. Blok statemen adalah rangkaian statemen yang ditempatkan dalam pasangan kurung kurawal.
Bentuknya:
{
#statemen pertama
#statemen kedua
}Perl mengeksekusi statemen berturut-turut mulai dari yang pertama sampai yang terakhir.
3.2 if dan unless
Bentuk:if(EXPR)
{
#statemen
}
else
{
#statemen
}
atau:
if(EXPR)
{
#statemen1
}
elsif(EXPR)
{
#statemen2
}
else<
{
#statemen3
}
EXPR adalah ekspresi kendali atau kondisional yang dievaluasi dalam konteks boolean (benar atau salah). Blok statemen dieksekusi jika EXPR bernilai benar. Kita dapat menuliskan statemen mendahului if jika statemen hanya satu baris.
Contoh:
print "It's there!\n" if ($arrived);
selain itu, statemen harus ditulis di dalam blok (tidak seperti pada bahasa C). Sedangkan bentuk penulisan unless sama seperti pada if, di mana unless akan mengeksekusi blok statemen jika EXPR bernilai salah.
3.3 while dan unless
Bentuk:while(EXPR)
{
statemen1
}
unless(EXPR)
{
statemen2
}
while akan mengeksekusi blok statemen berulang-ulang selama EXPR bernilai benar, sedangkan unless justru selama EXPR bernilai salah. Kita akan melihat pemakaian while pada pembahasan mengenai I/O dasar.
3.4 for dan foreach
Bentuk penulisan for yang pertama mirip seperti pada C:for (EXPR_AWAL; KONDISI; EXPR_AKSI)
{
statement1
}
di mana EXPR_AWAL pertama-tama dieksekusi, lalu berturut-turut blok statemen serta EXPR_AKSI dieksekusi berulang-ulang selama KONDISI terpenuhi. Di sini KONDISI adalah sebuah ekspresi kondisional yang dievaluasi dalam konteks boolean.
Contoh:
for ($i = 1; $i < 11; $i++) {print "$i\n";}Bentuk lain:
for (ARRAY)
{
..........
}
Contoh:
for (@scores) {print $_, "\n";}Pada contoh di atas, for mengiterasi array @scores, lalu mengeset variabel global
$_ ke nilai elemen array yang tengah diakses.$_ adalah variabel global yang secara default dipakai pada banyak operasi, antara lain iterasi array dengan for() seperti diatas.Jika kita ingin menggunakan variabel skalar lain bukannya
$_, kita gunakan foreach:foreach $score (@scores)
{
print $score, "\n";
}
4. I/O DASAR
Kita dapat membuat program yang lebih interaktif, artinya yang dapat menerima input dari user, dengan membaca dari STDIN. STDIN adalah filehandle yang disediakan oleh Perl untuk pembacaan dari standard input.
Contoh:
$author = <STDIN>;
print "Author's name: $author";
@book_title = <STDIN>;
for (@book_title) {print join(' ', $_);}
Perhatikan bahwa pada konteks array, input akan dibaca terus sampai diterima karakter EOF (Ctrl-D pada Linux). Untuk pemrograman user-interface berbasis teks yang lebih baik, kita dapat menggunakan library curses atau ncurses (new curses) juga modul Curses. Mengenai pemakaian modul akan kita lihat lagi pada bagian Fungsi, Library serta Modul).
Kita sering melihat program yang menerima argumen pada command-line, misalkan cat.
Kita menjalankan:
cat ppperl.txt
di mana ppperl.txt adalah argumen yang dilewatkan ke program cat. Kita dapat membuat skrip perl kita bekerja seperti itu dengan menggunakan operator berlian (diamond operator).
Contoh:
#!/usr/bin/perl
while(<>)
{
print $_;
}
Misalkan script di atas kita beri nama pcat, maka jika kita jalankan:
$pcat ppperl.txt
akan bekerja seperti 'cat ppperl.txt'. Operator berlian (<>) membaca data dari file yang kita lewatkan sebagai argumen pada command-line, kemudian
while() mengiterasi pembacaan tersebut sampai diterima nilai undef, di mana hasil pembacaan diset secara default ke $_ .Pembacaan data dilakukan baris demi baris, dengan kata lain: satu pembacaan dilakukan sampai dijumpai karakter newline
\n. Karakter yang menentukan batas satu pembacaan ini disebut dengan: input record separator. Kita dapat mengubah input record separator ini dengan mengeset variabel global $/. Kita akan melihat ini nanti pada bagian mengenai Switch Baris Perintah.Dengan memanfaatkan
$_, kita dapat menulis pcat di atas lebih ringkas lagi:while(<>)
{
print;
}
atau bahkan:
print while(<>);
Jika kita melewatkan argumen pada saat memanggil skrip perl kita, maka sebenarnya argumen-argumen tersebut dibaca pada array @ARGV. Misalkan kita punya skrip perl bernama showargs.pl sebagai berikut:
#!/usr/bin/perlprint join(", ", @ARGV);kemudian kita memanggilnya sebagai berikut
$ showargs.pl Camel Llama Panther
maka outputnya:
Camel, Llama, Panther
Operator diamond sebenarnya bekerja pada
@ARGV ini. Jadi misalkan kita punya file Camel.syn dan Llama.syn yang berturut-turut berisi:Authoritative Perl reference book by the creator.
Classic tutorial Perl book by Randal, the JAPH.
lalu:
print while(<>);
akan mencetak isi file Camel.syn juga Llama.syn dengan berturut-turut.
Untuk mengetahui jumlah argumen yg dilewatkan, manfaatkan variabel
$#ARGV.Jadi kalau pada showargs.pl kita tambahkan:
print "\nJumlah argumen yg dilewatkan = ", $#ARGV + 1, "\n";
maka: showargs.pl Camel Llama Panther akan menghasilkan output:
Camel, Llama, PantherJumlah argumen yg dilewatkan = 3.
5. REGULAR EXPRESSION (perlre)
5.1 Dasar
Jika kita bekerja dengan word processor, tentunya sudah akrab dengan fasilitas ''search text'' ataupun ``find and replace.'' Secara sederhana, regular expression atau regex dapat dipahami sebagai fasilitas semacam itu, meskipun jauh lebih berdayaguna seperti yang akan kita lihat nanti. Bagi yang sudah berpengalaman menggunakan grep (= global regular expression parser), regex Perl menyerupai egrep (extended grep). Regex yang kita susun adalah berupa pattern (pola) yang terdiri dari sejumlah item.
Kita lihat dulu sebuah contoh:
#!/usr/bin/perl
while (<>)
{
print "$_\n" if (/Regular/);
}
/Regular/ di dalam
>if() inilah yang disebut dengan regular expression. Script di atas mencetak baris yang mengandung kata 'Regular'.
Cobalah jalankan script di atas terhadap file ppperl.txt ini.
Pola dievaluasi sebagai double-quote string, artinya kita dapat melakukan interpolasi variabeldi dalam pola, juga dikenali pemakaian control character (ingat pembahasan mengenai double-quote string).
Jika pada contoh di atas kita ingin agar pola dapat cocok dengan Regular maupun Reguler, kita dapat menggunakan character class sebagai berikut:
/Regul[ae]r/
Jika character class mencakup satu rentang yang panjang, misalkan:
/[0123456789]/; #cocok dengan satu digit bilangan
kita dapat menuliskannya sebagai berikut ini:
/[0-9]/
Bentuk negatifnya kita tuliskan dengan simbol
^ di depan:/[^0-9]/ #cocok dengan _selain_ satu digit bilangan
Dengan menggunakan character class, kita pelajari sejumlah konstruk berikut:
Konstruk Nama Ekivalen dengan:
Konstruk Nama Ekivalen dengan:
\d digit [0-9]
\w words [a-zA-Z0-9_]
\s whitespaces [ \r\t\n\f]
\D non-digit [^0-9]
\W non-words [^a-zA-Z_]
\S non-whitespaces [^ \r\t\n\f]
5.2 Menggunakan Multiplier
Multiplier adalah penentu jumlah berapa kali sebuah item muncul. Ini sangat berguna jika kita ingin menyusun pola pencocokan terhadap item yang jumlah pemunculannya bervariasi (tidak tetap), atau jumlah pemunculannya tetap tapi sangat banyak.
Multiplier Arti
* Tidak muncul atau berkali-kali muncul
+ Muncul minimal satu kali
? Tidak muncul atau muncul satu kali
{n} Muncul tepat n kali
{n,} Minimal muncul n kali
{n,m} n =< jumlah pemunculan =< m
5.3 Tanda Kurung sebagai Memori
Jika kita gunakan () pada pola pencocokan, maka bagian string yang cocok dengan pola di dalam tanda kurung tersebut akan disimpan dalam variabel$1 untuk tanda kurung pertama,$2 untuk tanda kurung kedua, dst. Contoh: @names = ('Larry Wall', 'Es krim Walls');
for (@names)
{
if (/(.+)\sWall/)
{
print "$1\n";
}
}akan mencetak:
Larry
Es krim5.4 Penjangkaran
Empat konstruk berikut ini berguna untuk ''menjangkarkan'' pola:Konstruk: Penjangkaran pada:
^ awal baris
$ akhir baris sebelum \n
\b word boundary (batas word)
\B bukan batas word
Perhatikan bahwa tanda ^ memiliki arti yang berbeda jika digunakan di dalam character class atau
[ ], begitu juga \b (di dalam [], \b berarti backspace). \b adalah batas di antara dua karakter, di mana salah satu karakter adalah \w ,karakter lainnya adalah \W (urutan bisa dipertukarkan). Sebaliknya,
\B berarti bukan batas word. Untuk jelasnya, lihat ini: @names = ('Larry Wall', 'Es krim Walls');
for (@names)
{
if (/\bWall\B/)
{
print "$_\n";
}
}akan mencetak: Es krim Wallskarena pada 'Larry Wall', setelah Wall ada batas word.
5.5 Lebih Jauh dengan Operator-operator Regex
Operator-operator yang terutama digunakan dengan regex (baca perlop): m//gimosx(seperti //, tapi dengan m// kita dapat menentukan delimiter non-alfanumerik selain forward slash, misalkan m## atau m!!),tr///cds (transliterasi: pemetaan karakter ke karakter lain), s///egimosx (substitusi).Operator pencocokan (
m// atau //) jika dievaluasi dalam konteks skalar akan menghasilkan nilai benar (1) jika pencocokan berhasil, atau nilai salah (null string) jika tidak cocok.Jika dievaluasi dalam konteks array, akan mengeset elemen array pertama dengan
$1, elemen kedua dengan $2, dst jika pencocokan berhasil. Jika pola pencocokan tidak mengandung tanda kurung, maka elemen array akan diset 1 jika pencocokan berhasil. Operator substitusi (
s///) mengganti bagian string yang cocok dengan pola (di sisi kiri) dengan teks penggantinya (di sisi kanan).Contoh:
@names = ('Larry Wall', 'Es krim Walls');
for (@names)
{
if ($cnt = s/Es krim (Wall)s/Great $1/)
{
print "$_\nJumlah substitusi: $cnt\n";
}
}Keterangan opsi:
- g = search secara global, jadi lakukan matching untuk semua pemunculan, bukan hanya sekali saja,
- i = case insensitive matching (tidak pedulikan perbedakan huruf kapital/kecil),
- m = multiline matching, jadi menerima string yang mengandung banyak \n,
- o = compile once,satu kali compile, untuk optimasi kecepatan jika tidak ada interpolasi variabel berulang (lebih dari satu kali) dalam pola pencocokan.
- s = single line matching (default),
- x = extended regex, jadi boleh menggunakan whitespace (\s) dan comment di dalam regex untuk memudahkan pembacaan,
- e = evaluasi sisi kanan sebagai ekspresi. Kalau opsi ini tidak kita cantumkan, maka secara default, sisi kanan (RHS = Right Hand Side) dievaluasi sebagai double-quote string.
Contoh:
$init = "Linux is an OS an OS\n";
$init =~ s/an OS/a kernel/;
print $init; #mencetak: Linux is a kernel an OS
Kalau kita tambahkan opsi g, seperti ini:
$init =~ s/an OS/a kernel/g;
maka outputnya menjadi:
Linux is a kernel a kernel
Kalau kita ingin agar $init tidak berubah, maka kita dapat meng-assign hasil substitusi ke skalar yang lain. Jika contoh di atas kita ubah:
$end = $init) =~ s/an OS/a kernel/g;maka outputnya:
print $end, $init;
Linux is a kernel a kernel
Linux is an OS an OS
Berikut ini adalah sebuah contoh penerapan regex untuk mengoreksi format Nomor Induk Mahasiswa: Aplikasi basis data di sebuah Perguruan Tinggi dari tahun ke tahun ditulis dalam sistem yang berganti-ganti, oleh orang yang berbeda, untuk kebutuhan yang berbeda juga.
Ketika diadakan pembenahan sistem, nampak inkonsistensi pada field NIM. Format yang diharapkan adalah dua digit nomor angkatan, titik, dua digit kode program studi, titik, empat digit nomor mahasiswa. Setelah data pada field tersebut dipelajari, dapat dihimpun sample data sebagai berikut (untuk kode prodi tertentu):
91.30.880
91 30 880
91 30 880
91 880
91.880
91.880
91 0880
91.0880
91 303
91.30.880
91-30-880
91-30-0880
91.30.0880
Karena banyaknya record yang harus diproses (dimulai dengan mahasiswa angkatan 1988), juga karena terbatasnya kemampuan "find and replace" yang dimiliki database, maka diperlukan cara lain. Jika masalah pengaksesan database kita abaikan, lalu kita berkonsentrasi pada masalah pengolahan string-nya, cobalah selesaikan dengan regex Perl.
Di bawah ini adalah salah satu cara dengan dua baris regex Perl:
while (<>)
{
$prodi = "30"; s/^(\d\d)\D+(\d+)$/$1.$prodi.$2/;
s!^(\d\d)\D(\d\d)\D+(\d+)$!$1.".".$2.".".sprintf("%04d", $3)!e;print;
}
Bingung?
Ini adalah bentuk yang lebih mudah dibaca:
while (<>)
{
$prodi = "30";
s/
^
(
\d\d #angkatan
)
\D+ #delimiter
(
\d+ #no. mhs
)
$
/$1.$prodi.$2/x; #sisipkan kode prodi,
#izinkan pencatuman comment dalam matching pattern
s!
^
(
\d\d
)
\D
(\d\d)
\D+ #delimiter antara kode prodi dan nomor
(\d+) #mhs bisa lebih dari satu non-digit char
$
!
$1.".".$2.".".sprintf("%04d", $3) #bentuk kembali dalam format yg benar
!xe; #evaluasi sisi kanan sbg ekspresi
print;
};
Regex yang pertama menyisipkan kode prodi, jika data belum mengandung kode prodi, lalu regex kedua memisahkan digit dari non-digit, memformat nomor mhs dalam empat digit, dan menyatukannya kembali dengan delimiter berupa titik.
Cobalah mengerjakannya dalam bahasa lain seperti C, Pascal, atau Basic :-) Jika operator substitusi nampak begitu berdayaguna, namun untuk penggantian karakter lebih efisien menggunakan operator
tr/// .Contoh:
$_ = "papi pipa da sini.";
tr/ai/ia/;
print "$_\n";
akan mencetak:
pipa papi di sana.Opsi-opsi untuk operator
tr/// silakan Anda pelajari di perlop.5.6 Alternasi
Jika terhadap sebuah string kita ingin mencocokkan lebih dari satu pola, maka kita gunakan operator alternasi (|). Untuk menggunakan ini kita harus perhatikan urutan prioritas dari operator maupun item dalam kaitannya dengan pengelompokan (grouping).Nama Simbol
--------------------------------
Tanda kurung ()
Multiplier +*?{m,n}
Sequence dan jangkar abc^$\b\B
Alternasi |
Berikut ini adalah contoh pemakaian operator alternasi:
/E|Addwin/; #Berbahaya! Lihat output script di bawah
/(E|Ad)dwin/; #cocok dengan Edwin atau Addwin, tapi juga mengeset $1
/(?:E|Ad)dwin/; #seperti di atas, tapi tidak mengeset $1.
/(?:[Ee]|[Aa]d)dwin/; #cocok juga dengan edwin atau addwin
Untuk jelasnya, kita coba script berikut:
@names = qw/Eddwin Edwin Ewin Ein Ei En E Addwin edwin addwin Adwin/;Outputnya:
@patts = qw/E|Addwin (E|Ad)dwin (?:E|Ad)dwin (?:[Ee]|[Aa]d)dwin/;
foreach $patt (@patts)
{
for (@names)
{
if (/$patt/)
{
print "/$patt/ cocok dengan $_\n";
if (defined($1)) {print '$1 bernilai: ', "$1\n";}
}
}
}
/E|Addwin/ cocok dengan Eddwin
/E|Addwin/ cocok dengan Edwin
/E|Addwin/ cocok dengan Ewin
/E|Addwin/ cocok dengan Ein
/E|Addwin/ cocok dengan Ei
/E|Addwin/ cocok dengan En
/E|Addwin/ cocok dengan E
/E|Addwin/ cocok dengan Addwin
/(E|Ad)dwin/ cocok dengan Edwin
$1 bernilai: E
/(E|Ad)dwin/ cocok dengan Addwin
$1 bernilai: Ad
/(?:E|Ad)dwin/ cocok dengan Edwin
/(?:E|Ad)dwin/ cocok dengan Addwin
/(?:[Ee]|[Aa]d)dwin/ cocok dengan Edwin
/(?:[Ee]|[Aa]d)dwin/ cocok dengan Addwin
/(?:[Ee]|[Aa]d)dwin/ cocok dengan edwin
/(?:[Ee]|[Aa]d)dwin/ cocok dengan addwin
6. FUNGSI, LIBRARY, MODUL
6.1 Fungsi
Sebuah subrutin atau fungsi memiliki bentuk sebagai berikut:
sub foodi mana foo adalah nama subrutin. Argumen-argumen yang dilewatkan ke subrutin dibaca melalui array
{
........ #tuliskan kode di sini
}
@_.Contoh:
sub foo
{
my($arg1, $arg2) = @_;
print "$arg1\n$arg2\n";
}
Variabel
$arg1 dan $arg2 karena diciptakan melalui my() maka memiliki lingkup (scope) sebatas blok subrutin tersebut. Jika subrutin tersebut perlu mengembalikan nilai, maka nilai tersebut bisa langsung dituliskan di akhir blok.Contoh:
sub banding
{
my($arg1, $arg2) = @_;
$arg1 > $arg2 ? 1 : ($arg1 < $arg2 ? -1 : 0);
}
Sebenarnya sebuah subrutin dapat mengembalikan tidak hanya skalar, tapi juga array, array asosiatif, dan beberapa macam lainnya. Untuk pembahasan lebih lengkapnya, baca perlsub. Fungsi
sort() yang kita lihat pada pembahasan array di atas dapat kita gunakan dengan lebih fleksibel dengan membuat subrutin yang menentukan aturan sorting.Contoh:
@scores = (68, 50, 30, 78, 5, 58);
@sorted_scores = sort by_num @scores;
print join(' ', @sorted_scores), "\n";
sub by_num
{
banding($a, $b); #subrutin banding() seperti di atas
}
Di sini kita lihat bahwa subrutin yang dilewatkan ke
sort() memiliki keistimewaan yaitu diciptakannya secara otomatis variabel global $a dan $b yang berisi dua elemen array yang akan dibandingkan. Untuk lebih efisien lagi, kita dapat gunakan operator ''piring terbang'' (spaceship operator), sehingga subrutin by_num menjadi:
sub by_num
{
$a <=> $b; #operator spaceship
}
Cobalah membuat sorting descending (dari besar ke kecil) dari array
@scores di atas. Berikut ini adalah contoh lain penerapan sort(). Jika sebuah record disimpan sebagai sebuah array anonim, dengan elemen berturut-turut: nama, skor, dan umur, dan record-record tersebut akan di-sort dengan kriteria pertama nilai tertinggi, kriteria kedua umur, dan kriteria ketiga nama siswa, maka kita dapat mengimplementasikannya sebagai berikut:
@students = (['joko', 60, 18],
['kabayan', 50, 20],
['acong', 50, 20],
['sitorus', 70, 20],
['ali', 70, 18]);
sub by_rank
{
$b->[1] <=> $a->[1] || $a->[2] <=> $b->[2] || $a->[0] cmp $b->[0];
}
@students = sort by_rank @students;
for (@students)
{
print $_->[0], ' ', $_->[1], ' ', $_->[2], "\n";
}
6.2 Library dan Modul
Sebelum OOP (Object Oriented Programming) dimasukkan ke Perl, library adalah cara yang terutama dipakai untuk menangani pemakaian kode secara berulang. Perbedaan utama antara library dan modul terletak pada enkapsulasi. Untuk menggunakan sebuah library, gunakan require.
Contoh:
require "find.pl";Sedangkan untuk menggunakan sebuah modul, kita biasanya menggunakan use, meskipun sebenarnya bisa juga menggunakan require (dengan beberapa perbedaan penting, untuk jelasnya baca perlfaq8). Saat ini modul dirasakan lebih memadai karena semakin kuatnya kecenderungan untuk menggunakan perl pada pengembangan aplikasi-aplikasi besar, dan semakin banyaknya kode OOP (yang membutuhkan enkapsulasi yang memadai, yang mana hal ini didukung pada pemakaian modul). Daftar modul "resmi" dapat dilihat pada situs CPAN (Comprehensive Perl Archive Network) http://www.perl.com/CPAN-local/.
/>
Dokumentasi sebuah modul biasanya menyatu (embedded) pada modul tersebut, dan ditulis dalam format pod.
Sebagai contoh, misalkan kita ingin membaca dokumentasi modul Getopt::Std, maka:
$ perldoc Getopt::StdSimbol
:: berkaitan dengan letak modul tersebut di dalam direktori lib Perl.Cobalah Anda jalankan:
$ perl -Vdan lihat array
@INC yang berisi direktori-direktori di mana Perl akan mencari modul yang akan digunakan. Anda akan melihat subdirektori Getopt dalam salah satu dari direktori tersebut, dan subdir Getopt ini berisi file Std.pm.Sekarang kita akan menggunakan modul Getopt::Std untuk memproses switch pada baris perintah (command-line). Modul ini juga mendukung clustering (pengelompokan) switch.
#!/usr/bin/perl
use Getopt::Std;
$options = 'o:n:d:f';
getopts $options or die;
print $opt_o, "\n";
print $opt_n, "\n";
print $opt_d, "\n";
print $opt_f, "\n";
edwin@skserver:~>> usestd -foMf -nmf -d/var/lib/
Mf
mf
/var/lib/
1
Pada contoh di atas kita melihat switch clustering pada -fo yang sebenarnya adalah dua switch yang terpisah:
-f -o.Perhatikan
$options yang berisi switch apa saja yang akan digunakan. Switch yang membutuhkan argumen dituliskan dengan diikuti colon (:), sedangkan switch yang tidak membutuhkan argumen (disebut sebagai boolean flag), ditulis tanpa diikuti colon.
Pada contoh di atas, switch -f adalah boolean flag. Lebih baik adalah dengan menggunakan hash:
#!/usr/bin/perl
use Getopt::Std;
$options = 'o:n:d:f';
%options = ();
getopts($options, \%options) or die;
for (sort keys %options)
{
print "$_: ", $options{$_}, "\n";
}
yang jika dijalankan sebagai script usestd1, hasilnya adalah:
edwin@skserver:~>> usestd1 -foMf -nmf -d/var/lib/
d: /var/lib/
f: 1
n: mf
o: Mf7. SWITCH BARIS-PERINTAH (perlrun)
Perl memiliki sejumlah pilihan atau opsi yang dapat kita tentukan dengan melewatkan switch baris-perintah pada interpreter perl. Di sini kita lihat beberapa switch yang banyak digunakan.
-v : berfungsi untuk mencetak versi perl yang terinstall
-V : berfungsi untuk mencetak konfigurasi perl pada sistem Anda
-c : berfungsi untuk Compile only, check syntax error.
-w : berfungsi untuk Warning.
-n : berfungsi untuk Kita dapat membuat skrip yang bekerja seperti program cat,
contohnya
#!/usr/bin/perl
while(<>)
{
print;
}
Dengan opsi -n, kita dapat menulis skrip di atas menjadi lebih singkat:
#!/usr/bin/perl -n
print;
-p
Opsi ini mirip seperti -n, bedanya ia juga melakukan print $_ pada akhir blok while, sehingga kita dapat menulis ulang skrip di atas menjadi:
#/usr/bin/perl -pDengan switch ini, perl tidak akan mencari namafile script, dan sebaliknya akan langsung mengeksekusi baris yang mengikutinya.
-e
Contoh:
$ perl -ne 'print' Camel.syn Llama.synatau:
$ perl -pe '' Camel.syn Llama.syn
akan mencetak isi file Camel.syn dan Llama.syn
-0Digunakan untuk menentukan input record separator berupa bilangan oktal. Efeknya seperti mengeset
$/ (yang default-nya adalah \n).Misalkan:
$ perl -n00 -e 'print "Record ke-", ++$i, ":\n$_\n"' ppperl.txtSwitch -00 akan mengeset $/ = " '', atau blank-line.
Jika pergantian paragraph ditandai dengan satu baris kosong (blank-line), maka pembacaan satu record akan sama dengan pembacaan satu paragraph.
Maka dari itu sering dikatakan bahwa switch -00 mengaktifkan modus paragraf. Nilai -0777 akan membaca seluruh isi file sebagai satu record.
-iBerguna untuk melakukan pengubahan langsung pada teks yang sedang diolah.
Misalkan kita punya script berikut bernama rmcr:
#!/usr/bin/perl -p
s/\r\n/\n/;
yang membuang karakter CR (Carriage Return) pada akhir baris sebuah file teks, maka untuk menggunakannya adalah sbb:
$ rmcr the_file.txt > the_file.new
Lebih baik kalau pengubahan itu dilakukan langsung terhadap the_file.txt, dan ini dapat dilakukan dengan opsi -i.
$ perl -pi.old -e 's/\r\n/\n/' the_file.txt
old yang mengikuti opsi -i akan menentukan ekstensi bagi file backup yang diciptakan. Dengan cara demikian, maka perubahan (pembuangan karakter CR) langsung berpengaruh pada the_file.txt, dan juga diciptakan file the_file.txt.old sebagai backup dari the_file.txt yang lama.
-d : berfungsi untuk mengaktifkan symbolic debugger perl.
8.
PENUTUP
Saat ini pemakaian Perl telah berkembang pesat pada berbagai platform (http://www.perl.org/cgi-bin/survey/): AIX, Amiga, Digital UNIX, FreeBSD, HP-UX, IRIX, Linux, OS/2, Solaris, Win32, (dan masih banyak lagi), dan untuk berbagai keperluan yang sama sekali tidak terbayangkan ketika ia diciptakan.
Masih banyak yang belum tercakup dalam teks ini yang sekedar bermaksud menyediakan pengetahuan awal bagi orang yang ingin mengenal Perl lebih dalam. Penulis menyarankan sebagai bacaan lebih lanjut adalah buku-buku klasik seperti Programming Perl (Larry Wall dan Randal Schwartz), Learning Perl (Randal Schwartz dan Tom
Christiansen), Advanced Perl Programming (Sriram Srinivasan), meskipun sulit didapat dan muahall :-( Juga wajib dipelajari adalah perlfaq. Perlu rajin dipelajari adalah perl manpage.
9. APPENDIX
A. Membaca perlop
Appendix ini ditujukan untuk membantu mempelajari perlop, yaitu manual Perl yang membahas operator-operator.Dari jumlah operand-nya, dibedakan jenis-jenis operator unary (1 operand), binary (2 operand), dan ternary (3 operand). Fungsi (subrutin) bisa ditulis sebagai operator unary.
Contoh:
chdir("new-dir"); #sebagai fungsi
chdir "new-dir"; #sebagai operatorMaka dari itu, dalam perlop kita menjumpai istilah operator unary bernama untuk menyebut operator-operator yang juga bisa digunakan sebagai fungsi, dan operator unary simbolik. Contoh operator unary simbolik adalah ++, dan --.
Operator-operator tertentu menerima operand berupa list (array), sehingga dikenal juga istilah operator list.
Sebagai contoh adalah fungsi atau operator
print:print('Cuma contoh.', "\n");#sebagai fungsiprint 'Cuma contoh.', "\n";#sebagai operator
Kemudian pada bagian SYNOPSIS di perlop, kita melihat tabel tingkat prioritas (precedence)
dan asosiativitas. Entri teratas adalah operator-operator dengan tingkat prioritas paling tinggi. Asosiativitas menjadi penting kalau sebuah ekspresi melibatkan beberapa operator yang tingkat prioritasnya sama. Untuk jelasnya, kita lihat entri teratas dari tabel tersebut:
left terms and list operators (leftward)
Ini berarti bahwa term dan operator-operator list memiliki asosiativitas left, yaitu evaluasi akan dilakukan dari kiri ke kanan. Kemudian ada catatan juga bahwa precedence dan asosiativitas tersebut berlaku untuk operator list dilihat dari sisi kiri (leftward). Jika kita perhatikan dalam tabel tersebut, operator list muncul lagi dengan tingkat prioritas yang jauh lebih rendah, jika dilihat dari sisi kanan (rightward).
Contoh:
@ary = (0, 3, sort 4, 2, 1);
Penjelasan:
sort termasuk operator list. Di sisi kanan (rightward), sort memiliki tingkat prioritas yg lebih rendah daripada operator koma, maka operator koma akan terlebih dulu membentuk array berisi elemen 4, 2, 1.Kemudian, di sisi kiri-nya (leftward),
sort memiliki tingkat prioritas yang sangat tinggi, sehingga operasi sort dilakukan terlebih dulu terhadap array yang berisi 4, 2, dan 1. Selanjutnya barulah operator koma membentuk array berisi elemen 1, 3, dan hasil sort (1, 2, dan 4), yang selanjutnya disimpan dalam
@ary. Yang termasuk dalam term antara lain adalah variabel, operator-operator quote, ekspresi yang dituliskan dalam tanda kurung, dan fungsi.Contoh:
@ary = (0, 3, sort(4, 2), 1);
for(@ary){print "$_ ";}
menghasilkan:
0, 3, 2, 4, 1.Belajar Pemrograman Perl - tulisan gigih ini sangat mudah di fahami dan sangat bagus untuk di baca pemula, sebagian bahasa saya ubah, atau misalnya kependekan-kependekan saya panjangankan, dan bagian url saya hapus termasuk daftar isinya.
Senin, 01 Februari 2016
Cara Menginstall Bind9
Mandailing Natal - Cara Menginstall Bind9 - Software bind9 sering gunakan sebagai DNS server, baik jaringan local maupun jaringan umum seperti jaringan internet ataupun jaringan warnet. Bind9 merupakan sebuah software, tak ubahnya software-software lain seperti squid, apache, dan software lainnya.
Untuk menginstall bind9 terlebih dahulu update packet-paket yang di butuhkan pada debian server maupun ubuntu servernya dengan perintah :
Selain untuk mengamankan file named.conf.local, tujuan dari backup ini tak lain, karena configurasi bawaan named.conf.local tidak kita gunakan pada configurasi bind9 ubuntu server, namun mengambil configurasi dari file named.conf.defaul-zones.
Cara membackup file di linux debian bisa menggunakan perintah mv seperti berikut:
Cara menginstall bind9 selanjutnya, mengcopy file named.conf.default-zones kedalam file named.conf.local atau membuat file named.conf.local baru, karena named.conf.local bawaan bind9 ubuntu debian server telah kita rename pada langkah sebelumnya, mengcopy named.conf.default-zones kedalam named.conf.local dengan perintah cp namafilelama namafilebaru misalny.
Hapus isi file
Tulisan localhost ganti dengan nama hostname (domain) yang di gunakan, misalnya domain yang di gunakan, dalam contoh ini : tkj.net
Jika tampilan sudah seperti dalam gambar, silahkan simpan configurasi dengan perintah CTRL +X dan pilih Y kemudian Enter.
Copy file db.local yang asli ke file db.tkj agar db yang ada dalam configurasi
Copy juga file
Jika sudah di copy, kita ubah file
Ganti semua tulisan berikut:
localhost. ganti jadi tkj.net.
127.0.0.1 Ip loopback (iplocalhost) ganti jadi ip interface yang kita gunakan, baik yang mengarah ke publik maupun local, terserah yang mana, misalnya saya menggunakan ip 192.168.0.252
Simpan configurasi, hasilnya seperti gambar db.tkj
Ubah file db.12 dengan perintah
Configurasinya mirip dengan db.tkj, hasilnya seperti gambar db.12 :
Jika file-file berikut di bawah sudah di configurasi, berarti selesai sudah cara install bind9 ubuntu servernya, tinggal langkah terakhir restart ubuntu server. Berikut langkah-langkah dalam menginstall bind9 sebagaimana telah kita kerjakan sebelumnya.
Agar dns bind9 dapat terkoneksi dengan internet, kita perlu mengubah satu file lagi, yaitu
Kemudian ubah isi named.conf.options terlihat seperti bagian
Hilangkan garis miring pada tulisan tersebut dan ganti angka 0.0.0.0 menjadi 8.8.8.8;
Lihat kebawah dan cari code ini
Mandailing Natal - Cara Menginstall Bind9 ubuntu server, dns bind9 digunakan jadi dns server client.
Untuk menginstall bind9 terlebih dahulu update packet-paket yang di butuhkan pada debian server maupun ubuntu servernya dengan perintah :
apt-get updateSelain penggunaan perintah apt-get, bisa juga langsung menggunakan perintah aptitude update pada kedua operating system turunan debian, seperti ubuntu, kali linux, untuk menginstall bind9 menggunakan perintah aptitude dengan cara mengetikan perintah aptitude install bind9 pada konsol linux debian/ubuntu server. Jika update system paket telah selesai lanjutkan penginstallan bind9nya dengan perintah pada konsol linux.
apt-get install bind9Untuk mempercepat pekerjaan biasanya, apt-get update dan apt-get install bind9 dilakukan dalam sekali kerja(perintah) dengan menggunakan tanda && diantara apt-get update juga apt-get install bind9 seperti berikut ini
apt-get update && apt-get install bind9 -yOpsi -y artinya untuk menyetujui penginstallan paket secara otomomatis. Jika proses installasi bind9 telah selesai, lanjut kelangkah berikutnya dengan cara masuk ke directory /etc/bind,
cd /etc/bindBackup file named.conf.local dengan nama lain misalnya menambahkan tulisan backup di belakang tulisan named.conf.local menjadi named.conf.local-backup, dengan maksud serta tujuan di backup file named.conf.local yaitu apabila terjadi error pada system atau bind9nya kita dapat mengambalikan konfigurasi named.conf.local pada configurasi bawaannya.
Selain untuk mengamankan file named.conf.local, tujuan dari backup ini tak lain, karena configurasi bawaan named.conf.local tidak kita gunakan pada configurasi bind9 ubuntu server, namun mengambil configurasi dari file named.conf.defaul-zones.
Cara membackup file di linux debian bisa menggunakan perintah mv seperti berikut:
mv named.conf.local named.conf.local-backup
Cara menginstall bind9 selanjutnya, mengcopy file named.conf.default-zones kedalam file named.conf.local atau membuat file named.conf.local baru, karena named.conf.local bawaan bind9 ubuntu debian server telah kita rename pada langkah sebelumnya, mengcopy named.conf.default-zones kedalam named.conf.local dengan perintah cp namafilelama namafilebaru misalny.
cp named.conf.default-zones named.conf.local
Hapus isi file
named.conf.local yang tidak kita butuhkan, sisakan zone"localhost" dan zone"127.in-addr.arpa" yang nantinya juga akan kita ubah sesuai kebutuhan jadi seperti gambar named.conf.localTulisan localhost ganti dengan nama hostname (domain) yang di gunakan, misalnya domain yang di gunakan, dalam contoh ini : tkj.net
file:/etc/bind/db.local ubah jadi /etc/bind/db.namahostname dalam kasus berikut db.local saya buat jadi db.tkj begitu juga zone 127 ubah jadi ekor dari ip yang kita gunakan biar tidak membingungkan, jadi zone "12 .... " serta file "/etc/bind/db.127 saya ubah jadi db.12, seperti terlihat pada gambar named.conf.local diatas. Jika tampilan sudah seperti dalam gambar, silahkan simpan configurasi dengan perintah CTRL +X dan pilih Y kemudian Enter.
Copy file db.local yang asli ke file db.tkj agar db yang ada dalam configurasi
named.conf.local sesuai dengan apa yang ada dalam folder/directory bind9 yang terletak di /etc/bind/Copy juga file
db.127 menjadi db.12 sama persis seperti yang di lakukan terhadap db local, cara copynya seperti berikut: cp db.local db.tkj
cp db.127 db.12
Jika sudah di copy, kita ubah file
db.tkj dengan perintah :nano /etc/bind/db.tkj
Ganti semua tulisan berikut:
localhost. ganti jadi tkj.net.
127.0.0.1 Ip loopback (iplocalhost) ganti jadi ip interface yang kita gunakan, baik yang mengarah ke publik maupun local, terserah yang mana, misalnya saya menggunakan ip 192.168.0.252
Simpan configurasi, hasilnya seperti gambar db.tkj
Ubah file db.12 dengan perintah
nano /etc/bind/db.12
Configurasinya mirip dengan db.tkj, hasilnya seperti gambar db.12 :
Jika file-file berikut di bawah sudah di configurasi, berarti selesai sudah cara install bind9 ubuntu servernya, tinggal langkah terakhir restart ubuntu server. Berikut langkah-langkah dalam menginstall bind9 sebagaimana telah kita kerjakan sebelumnya.
- named.conf.local di copy dari named.conf.default-zones dan di ubah isinya seperti diatas
- db.local di copy jadi db.tkj dan di ubah isinya seperti diatas
- db.127 di copy serta di ubah isinya seperti diatas
- restart bind9 seperti perintah di bawah ini
/etc/init.d/bind9 restartKemudian ubah file /etc/resolv.conf ganti nameserver menjadi
nameserver 127.0.0.1Test dnsnya dengan perintah
dig tkj.net
Agar dns bind9 dapat terkoneksi dengan internet, kita perlu mengubah satu file lagi, yaitu
named.conf.options dengan mengubah code-code berikut perintahnyanano named.conf.options
Kemudian ubah isi named.conf.options terlihat seperti bagian
// forwarders {
// 0.0.0.0;
// };Hilangkan garis miring pada tulisan tersebut dan ganti angka 0.0.0.0 menjadi 8.8.8.8;
Lihat kebawah dan cari code ini
dnssec-validation auto;ubah menjadi
dnssec-validation yes;Simpan configurasi kemudian restart bind9, ip komputer ubuntu kita sudah siap digunakan jadi dns server di client windows maupun linux.
Mandailing Natal - Cara Menginstall Bind9 ubuntu server, dns bind9 digunakan jadi dns server client.
Jumat, 22 Januari 2016
Limit Download All Extensi
Jasa Setting Mikrotik Limit Download All Extensi - Limit Download all extensi mikrotik, diantara sekian hal dalam setting mikrotik, yang paling penting mungkin bagi sebagian orang adalah limit bandwidth, terlebih untuk beberapa extensi yang sering di gunakan.

Untuk mempermudah limit terhadap bandwidth, maka di gunakanlah layer7 yang mana isinya adalah extensi-extensi yang paling sering di gunakan dalam berbagai macam jenis file, artinya mikrotik mencari kecocokan extensi apa yang di download user dengan apa yang ada didalam layer7. Jika mikrotik menemukan extensi yang sesuai, maka file dan koneksi download tersebut di tandai di mangle, sehingga langkah terakhir dapat di eksekusi di dalam queue, baik queue tree maupun simple.
Secara singkat layer7 mikrotik masih membutuhkan dukungan dari fitur mangle, untuk menandai paket yang sesuai dengan pattern yang ada pada layer7.

/ip firewall layer7-protocol
add name=layer7 regexp="^.*get.+\.(exe|rar|zip|7z|cab|asf|mov|wmv|mpg|mpeg|mkv|avi|flv|pdf|wav|rm|mp3|mp4|ram|rmvb|dat|daa|iso|nrg|bin|vcd|mp2|3gp|mpe|qt|raw|wma|ogg|doc|deb|tar|bzip|gzip|gzip2|0[0-9][0-9]).*$"
Untuk mempermudah limit terhadap bandwidth, maka di gunakanlah layer7 yang mana isinya adalah extensi-extensi yang paling sering di gunakan dalam berbagai macam jenis file, artinya mikrotik mencari kecocokan extensi apa yang di download user dengan apa yang ada didalam layer7. Jika mikrotik menemukan extensi yang sesuai, maka file dan koneksi download tersebut di tandai di mangle, sehingga langkah terakhir dapat di eksekusi di dalam queue, baik queue tree maupun simple.
Secara singkat layer7 mikrotik masih membutuhkan dukungan dari fitur mangle, untuk menandai paket yang sesuai dengan pattern yang ada pada layer7.
Jumat, 15 Januari 2016
Cara Install Mfsbsd Dengan Flashdisk
Cara Install Mfsbsd Dengan Flashdisk - cara mudah menginstall server proxy dengan mfsbsd, installasi bisa di lakukan via remote dari jarak jauh, syaratnya ya ada operator yang melakukan dan setting bios komputer yang di gunakan sebagai server proxy agar booting dari flashdisk.
Kemudian malakukan port-forwading ke ip proxy server, yang ipnya di berikan dhcp dari router mikrotik, so si operator cukup duduk manis dan menunggu installasi jarak jauh selesai, dan mencabut usb flashdisk dari komputer server.
Cara install mfsbsd dengan flashdisk, langkah pertama untuk installasi mfsbsd dari flahsdisk :
Nah bagaiman cara menginstallnya, ini dia yang gak kalah pentingnya, cara install mfsbsd dengan flahsdisk :
Nanti akan muncul seperti ini
Atau bisa pake perintah singkat
nanti akan kelihatan isi cdrom seperti ini,
Tulisan yang saya merahi, sesuaikan dengan hasil dari
hasilnya nanti kira kira begini
Selanjutnya set openssh biar bisa di remote nanti pake putty.
Cari tulisan #Port 22 dan hilangkan tanda pagarnya,
cari tulisan #PermitRootLogin no ubah jadi PermitRootLogin Yes dan hilangkan tanda pagarnya juga
Simpan dengan menakan tombol ESC dan tekan huruf a di keyboard dua kali
Yihaa abis itu remote deh tuh box mfsbsdnya mau pake ip langsung kalo deket, atau dari luar jaringan pake ip publik. Karena langkah selanjutnya mungkin configurasi proxy atau configurasi server lainnya yang anda butuhkan..misalnya jika ingin melakukan update
Untuk mempermudah pencarian dari consol lakukan dulu updatedatabasenya
Install paket mfsbsdnya.
Install paket-paket yang anda butuhkan lainnya misalnya :
Cara Install Mfsbsd Dengan Flashdisk. Selanjutnya yah terserah ente dahh... Mudah-mudahan Cara Install Mfsbsd Dengan Flashdisk bermanfaat.
Cara install mfsbsd dengan flashdisk, langkah pertama untuk installasi mfsbsd dari flahsdisk :
- Siapkan flashdisk minimal 1GB
- Download img mfsbsd dari webnya mfsbsd disini http://mfsbsd.vx.sk/files/images
- Download software sexy bernama win32diskimager disini -> http://sourceforge.net/projects/win32diskimager/
- Operator yang mampu setting bios agar komputer boot dari usb flashdisk.
Nah bagaiman cara menginstallnya, ini dia yang gak kalah pentingnya, cara install mfsbsd dengan flahsdisk :
- Setelah mfsbsd booting dan meminta login, lihat mikrotik ip dhcp pada leasesnya, remote ip tersebut dengan putty atau remote ip publik yang mana ip dari mfbsdnya sudah di forward ke publik.
- Login : root dan password : mfsroot
- Lihat partisi harddisk dengan perintah
gpart show
Nanti akan muncul seperti ini
gpart show
=> 34 976773101 ada0 GPT (465G)
34 128 1 freebsd-boot (64k)
162 8388608 2 freebsd-swap (4.0G)
8388770 968384365 3 freebsd-zfs (461G)
- Delete partisinya dengan perintah
gpart delete -i 1 ada0
gpart delete -i 2 ada0
gpart delete -i 3 ada0
- Kemudian hancurkan partisinya dengan perintah
gpart destroy ada0
Atau bisa pake perintah singkat
gpart destroy -F /dev/ada0
- Jika udah sampai disini langkah selanjutnya mount flashdisknya pake perintah yang ada di layar /consol mfsbsdnya, untuk melihat flashdisk perintahnya
ls /dev/da*/dev/da0 tempat booting usbnya, dan /dev/da0a tempat file installasi, maka mountnya seperti berikut
mount /dev/da0a /cdrom
- Kemudian lihat isi cd room, dengan perintah
ls /cdrom
nanti akan kelihatan isi cdrom seperti ini,
9.2-RELEASE-amd64 boot mfsroot.gz
- Install mfsbsdnya
zfsinstall -d ada0 -u /cdrom/9.2-RELEASE-amd64 -s 4G v28Tulisan yang saya merahi, sesuaikan dengan hasil dari
ls /cdrom hasilnya nanti kira kira begini
Creating GUID partitions on ada0 ... done
Configuring ZFS bootcode on ada0 ... done
=> 34 976773101 ada0 GPT (465G)
34 128 1 freebsd-boot (64k)
162 8388608 2 freebsd-swap (4.0G)
8388770 968384365 3 freebsd-zfs (461G)
Creating ZFS pool tank on ada0p3 ... done
Creating tank root partition: ... done
Creating tank partitions: var tmp ... done
Setting bootfs for tank to tank/root ... done
NAME USED AVAIL REFER MOUNTPOINT
tank 408K 453G 31K none
tank/root 95K 453G 33K /mnt
tank/root/tmp 31K 453G 31K /mnt/tmp
tank/root/var 31K 453G 31K /mnt/var
Extracting FreeBSD distribution ... done
Writing /boot/loader.conf... done
Writing /etc/fstab...Writing /etc/rc.conf... done
Copying /boot/zfs/zpool.cache ... done
Installation complete.
The system will boot from ZFS with clean install on next reboot
You may make adjustments to the installed system using chroot:
chroot /mnt
Some adjustments may require a mounted devfs:
mount -t devfs devfs /mnt/dev
WARNING - Don't export ZFS pool "tank"!
- Jalankan perintah chroot /mnt
chroot /mnt
- Ubah password root
passwd rootSet passwordnya sesuai keinginan kita.
- Ketikkan ifconfig untuk melihat interface apa yang terkoneksi ke mikrotik
ifconfigMisalnya hasilnya terilihat berikut seperti ini :
alc0: flags=8843metric 0 mtu 1500
options=c3198
ether 6c:f0:49:86:86:2f
inet 192.168.13.2 netmask 0xffffff00 broadcast 192.168.13.255
inet6 fe80::6ef0:49ff:fe86:862f%alc0 prefixlen 64 scopeid 0x1
nd6 options=29
media: Ethernet autoselect (100baseTX)
status: active
lo0: flags=8049metric 0 mtu 16384
options=600003
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
nd6 options=21
- Ubah code berikut ini sesuikan yang saya tandai merah dengan kondisi jaringan dan lancard hasil dari ifconfig
echo 'defaultrouter="192.168.3.1"' >> /etc/rc.conf
echo 'gateway_enable="YES"' >> /etc/rc.conf
echo 'hostname="sevenstart"' >> /etc/rc.conf
echo 'ifconfig_alc0="inet 192.168.3.2 netmask 255.255.255.0"' >> /etc/rc.conf
echo 'sshd_enable="YES"' >> /etc/rc.conf
echo 'nameserver 192.168.3.1' >> /etc/resolv.conf
Selanjutnya set openssh biar bisa di remote nanti pake putty.
ee /etc/ssh/sshd_config
Cari tulisan #Port 22 dan hilangkan tanda pagarnya,
cari tulisan #PermitRootLogin no ubah jadi PermitRootLogin Yes dan hilangkan tanda pagarnya juga
Simpan dengan menakan tombol ESC dan tekan huruf a di keyboard dua kali
- Reboot Mfsbsdnya jangan lupa cabut flahdisk dari komputernya.
shutdown -r now
Yihaa abis itu remote deh tuh box mfsbsdnya mau pake ip langsung kalo deket, atau dari luar jaringan pake ip publik. Karena langkah selanjutnya mungkin configurasi proxy atau configurasi server lainnya yang anda butuhkan..misalnya jika ingin melakukan update
portsnap fetch
portsnap extract
Untuk mempermudah pencarian dari consol lakukan dulu updatedatabasenya
/usr/libexec/locate.updatedb
Install paket mfsbsdnya.
cd /usr/ports/ports-mgmt/pkg
make
make install clean
Install paket-paket yang anda butuhkan lainnya misalnya :
pkg install openssl
pkg install fakeroot
pkg install ccze
pkg install libxml2-2.9.1_1
pkg install gmake-3.82_2
pkg install automake
pkg install libltdl-2.4.2.418
pkg install perl5-5.16.3_11
Senin, 21 Desember 2015
Memahami Konsep OOP C++
Mandailing Natal - Memahami Konsep OOP C++ , sebagai pemula yang paling susah mungkin memahami konsep pemrograman berorientasi objek, seperti apa yang saya alami. OOP merupakan salah satu kelebihan dari bahasa pemrograman C++ di banding dengan bahasa pemrograman pendahulunya C, yang lebih fokus pada pemrograman terstruktur, dimana menyelesaikan masalah di lakukan secara bertahap dan memilah-milah masalah yang ada kedalam sub-sub masalah yang lebih kecil.
C++ yang di buat oleh Bjarne Stroustrup yang di kembangkan pada awal 1980an, di Bel Labs. Menyelesaikan masalah dengan membagi permasalahan terhadap beberapa class sesuai nama masalahnya, kemudian mengelompokkanya menjadi beberapa anak kelas yang menjadi objek dan merupakan abtraksi dari object-object fisik. Class-class tersebut berisikan member class, kemampuan member classnya, kemudian masalah di selesaikan dengan Class.
Class ini boleh di sebut mungkin sebuah blueprint, atau prototype yang mendefenisikan variable-variable dan method-methode yang di gunakannya untuk menyelesaikan masalah. Sedangkan object disini merupakan instansiasi dari kelas (nanti dapat kita lihat dalam contoh di bawah).
C++ yang di buat oleh Bjarne Stroustrup yang di kembangkan pada awal 1980an, di Bel Labs. Menyelesaikan masalah dengan membagi permasalahan terhadap beberapa class sesuai nama masalahnya, kemudian mengelompokkanya menjadi beberapa anak kelas yang menjadi objek dan merupakan abtraksi dari object-object fisik. Class-class tersebut berisikan member class, kemampuan member classnya, kemudian masalah di selesaikan dengan Class.
Class ini boleh di sebut mungkin sebuah blueprint, atau prototype yang mendefenisikan variable-variable dan method-methode yang di gunakannya untuk menyelesaikan masalah. Sedangkan object disini merupakan instansiasi dari kelas (nanti dapat kita lihat dalam contoh di bawah).
#include <iostream>semoga tulisan singkat Memahami Konsep OOP C++ dapat bermanfaat. Karena saya juga masih belajar banyak, sehingga tidak bisa banyak menjelaskan tentang konsep oop pada C++.
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
//mendefenisikan class
class siswa {
public:
//mendefenisikan fungsi namaSiswa
void namaSiswa(string nama)
{
cout <<"Nama siswa "<<nama<<endl;
}
//mendefenisikan fungsi kelasSiswa
void kelasSiswa(string kelas)
{
cout <<"Kelas Siswa "<<kelas<<endl;
}
//mendefenisikan fungsi jurusanSiswa
void jurusanSiswa(string jurusan)
{
cout <<"Jurusan siswa "<<jurusan<<endl;
}
};
int main(int argc, char** argv) {
string nama, kelas, jurusan;
//instansiasi class siswa terhadap objek siswa
siswa objsiswa;
cout << "Isi Nama Kamu:";
getline(cin, nama);
cout << "isi kelas kamu: ";
getline(cin, kelas);
cout <<"Isi Jurusan";
getline(cin, jurusan);
cout <<"========================\n";
objsiswa.namaSiswa(nama);
objsiswa.kelasSiswa(kelas);
objsiswa.jurusanSiswa(jurusan);
return 0;
}
Senin, 07 Desember 2015
Setting Mikrotik NisaNet Remote Jarak Jauh
Jasa Setting Mikrotik Remote Jarak Jauh - Setting Mikrotik NisaNet Remote Jarak Jauh, Jasa Setting Mikrotik nisanet menggunakan koneksi speedy 2 line yang masing-masing kemudian saya arahkan ke game dan browsing, pendapat saya pribadi teknik pemisahan browsing dan game dengan dua line speedy ini lebih efektif dan aman untuk koneksi game, terutama game point blank garena yang cukup populer di warnet-warnet.
Jasa setting mikrotik remote jarak jauh, Nisanet.
Remote saya lakukan dari Padangsidimpuan, ke kota tempat warnet nisanet ini berada, sedikit kerja sama yang baik antara saya dan pemiliknya. Misalnya seperti memindahkan kabel modem ke ether mikrotik, dan dan lainnya.
Tujuan pemisahan ini, untuk memperlancar koneksi terhadap game online, tanpa harus repot memikirkan pembagian bandwidth untuk browsing dan game. Tentu saja dengan kondisi yang sama juga kita bebas menggunakan line satunya untuk browsing streaming dan download tanpa harus takut terganggu client yang bermain game.
Teknik Jasa setting mikrotik remote jarak jauh, Nisanet. sebenernya sangat mudah, tinggal kita pisahkan ip publik berdasarkan port-port masing-masing game online, dan mendai paket berdasarkan ip tersebut di mangle, kemudian menyelesaikannya di bagian routing.
Jasa setting mikrotik remote jarak jauh, Nisanet.
Remote saya lakukan dari Padangsidimpuan, ke kota tempat warnet nisanet ini berada, sedikit kerja sama yang baik antara saya dan pemiliknya. Misalnya seperti memindahkan kabel modem ke ether mikrotik, dan dan lainnya.
Tujuan pemisahan ini, untuk memperlancar koneksi terhadap game online, tanpa harus repot memikirkan pembagian bandwidth untuk browsing dan game. Tentu saja dengan kondisi yang sama juga kita bebas menggunakan line satunya untuk browsing streaming dan download tanpa harus takut terganggu client yang bermain game.
Teknik Jasa setting mikrotik remote jarak jauh, Nisanet. sebenernya sangat mudah, tinggal kita pisahkan ip publik berdasarkan port-port masing-masing game online, dan mendai paket berdasarkan ip tersebut di mangle, kemudian menyelesaikannya di bagian routing.
Senin, 30 November 2015
Pengertian Nat Dalam Router Mikrotik
Jasa setting mikrotik - Pengertian Nat Dalam Router Mikrotik - pengertian nat dalam router mikrotik, NAT yang kepanjangannya sering di sebut (Network Address Translation).Nat Dalam router mikrotik merupakan salah satu pitur yang harus tersedia hampir di seluruh router yang ada, baik itu router mikrotik maupun router linux maupun router cisco. Nat di gunakan untuk mentranslasikan sebuah ip local atau lebih ke sebuah ip publik, yang tujuannya adalah agar ip local mampu mengakses internet dengan memanfaatkan sebuah ip publik.
Sederhananya nat merupakan sebuah motode untuk menghubungkan satu komputer atau lebih ke internet menggunakan sebuah ip publik. Tujuan NAT di buat yakni untuk menghemat keterbatasan penggunakan ipv4 publik yang hampir habis, sehingga dengan fungsi nat sebuah ip publik dapat di translasikan ke beberapa buah ip private (ip lan). Dengan sebuah ip publik ini juga jaringan yang menggunakan ip private dapat berkomunikasi dengan dunia luar (jaringan internet). Terhubungnya koneksi internet antar masing-masing komputer dan router ini di sebut juga sebagai INTERNETWORKING
Sedangkan router sendiri, berfungsi untuk menghubungkan dua buah jaringan yang berbeda, yaitu menghubungkan jaringan private dan jaringan publik, terhubungnya jaringan private dan jaringan publik tak lepas dari kemampuan nat untuk mentranslasikan ip private ke dalam sebuah ip local.
Ip berapa saja sih yang masuk dalam ip public, untuk mengenal mana ip public, di bawah ini saya berikan tabel range dari ip private, semua ip di luar range ip private ini masuk dalam list ip public.
Ip private merupakan ip yang tidak bisa berkomunikasi dengan jaringan luar tanpa bantuan NAT dalam router. Begitu juga dengan ip publik, yaitu ip yang tidak akan bisa berkomunikasi dengan ip private.
Dalam gambar ip private diatas, dapat kita simpulkan nantinya mana saja kah yang termasuk dalam ip publik, dan ip private. Setiap yang tidak masuk dalam range ip list diatas di masukkan kedalam jenis ip publik.
Fungsi dari NAT dalam router mikrotik adalah:
Pengertian Nat Dalam Router Mikrotik)sendiri memiliki dua jenis yaitu: Nat dinamis dan nat Statis, Untuk mengenal nat statis dan nat dinamis nanti dalam postingan selanjutnya.
Sederhananya nat merupakan sebuah motode untuk menghubungkan satu komputer atau lebih ke internet menggunakan sebuah ip publik. Tujuan NAT di buat yakni untuk menghemat keterbatasan penggunakan ipv4 publik yang hampir habis, sehingga dengan fungsi nat sebuah ip publik dapat di translasikan ke beberapa buah ip private (ip lan). Dengan sebuah ip publik ini juga jaringan yang menggunakan ip private dapat berkomunikasi dengan dunia luar (jaringan internet). Terhubungnya koneksi internet antar masing-masing komputer dan router ini di sebut juga sebagai INTERNETWORKING
Sedangkan router sendiri, berfungsi untuk menghubungkan dua buah jaringan yang berbeda, yaitu menghubungkan jaringan private dan jaringan publik, terhubungnya jaringan private dan jaringan publik tak lepas dari kemampuan nat untuk mentranslasikan ip private ke dalam sebuah ip local.
Ip berapa saja sih yang masuk dalam ip public, untuk mengenal mana ip public, di bawah ini saya berikan tabel range dari ip private, semua ip di luar range ip private ini masuk dalam list ip public.
Ip private merupakan ip yang tidak bisa berkomunikasi dengan jaringan luar tanpa bantuan NAT dalam router. Begitu juga dengan ip publik, yaitu ip yang tidak akan bisa berkomunikasi dengan ip private.
Dalam gambar ip private diatas, dapat kita simpulkan nantinya mana saja kah yang termasuk dalam ip publik, dan ip private. Setiap yang tidak masuk dalam range ip list diatas di masukkan kedalam jenis ip publik.
Fungsi dari NAT dalam router mikrotik adalah:
- Untuk menghemat ip publik, karena dengan sebuah ip publik dapat di gunakan untuk beberapa ip private (hampir tidak terbatas).
- Meningkatkan fleksibilitas jaringan
- Menghindari dan mengurasi duplikat ip address.
- Mentranslasikan sebuah ip publik ke beberapa ip private.
- Menghindari pengalamatan yang berulang ketika jaringan publik berubah.
Memblok Ping Response Dengan Iptables
Jasa Setting Mikrotik - Jasa Setting Mikrotik Murah - Memblok Ping Response Dengan Iptables, Tidak hanya di mikrotik pitur bloking dan firewall yang ada, di router linux juga memiliki pitur atau fasilitas bloking paket, dengan memanfaatkan software firewall, dan yang paling terkenal sejauh ini yang saya tau software firewall bernama IPTABLES.
Memblok Ping Response Dengan Iptables - Pemanfaatan pitur bloking /firewall cukup mudah, namun tidak semudah juga yang di bayangkan, karena kita harus mengenali dan memahami protokol apa saja yang harus kita blok, misalnya kita ingin menutup access terhadap ping.
Ping ini yang harus kita kenali, protokol apa yang di gunakan oleh ping, dan berjalan di port berapa. Tidak hanya ping, paket-paket lainnya juga memiliki protokol masing-masing, dan juga memiliki port tersendiri.
Untuk contoh seperti saya sebut sebelumnya, paket ping harus kita kenali menggunakan protokol apa, protokol yang digunakan oleh ping adalah protokol icmp. Cara untuk memblokir access icmp (ping ) ke server linux di gunakan perintah :
Atau bisa juga menggunakan sedikit pitur untuk paket icmp yaitu --echo-request
Memblok Ping Response Dengan Iptables - Pemanfaatan pitur bloking /firewall cukup mudah, namun tidak semudah juga yang di bayangkan, karena kita harus mengenali dan memahami protokol apa saja yang harus kita blok, misalnya kita ingin menutup access terhadap ping.
Ping ini yang harus kita kenali, protokol apa yang di gunakan oleh ping, dan berjalan di port berapa. Tidak hanya ping, paket-paket lainnya juga memiliki protokol masing-masing, dan juga memiliki port tersendiri.
Untuk contoh seperti saya sebut sebelumnya, paket ping harus kita kenali menggunakan protokol apa, protokol yang digunakan oleh ping adalah protokol icmp. Cara untuk memblokir access icmp (ping ) ke server linux di gunakan perintah :
IPTABLES -A INPUT -p ICMP s 0/0 -j DROP
Atau bisa juga menggunakan sedikit pitur untuk paket icmp yaitu --echo-request
IPTABLES -A INPUT -p ICMP
Langganan:
Komentar (Atom)
Belajar Setting Mikrotik - Belajar Pemrograman Java - Belajar Pemrograman Pascal Belajar PHP OOP
Cari Blog Ini
Arsip Blog
- September 2025 (1)
- Maret 2025 (1)
- Juli 2024 (1)
- Januari 2023 (2)
- Desember 2022 (2)
- November 2022 (4)
- Oktober 2022 (1)
- April 2022 (1)
- Februari 2022 (1)
- Desember 2021 (1)
- November 2021 (1)
- Agustus 2021 (1)
- April 2021 (1)
- Maret 2021 (2)
- Januari 2021 (1)
- Desember 2020 (1)
- November 2020 (2)
- Oktober 2020 (3)
- September 2020 (2)
- Juli 2020 (1)
- Februari 2020 (2)
- Januari 2020 (1)
- Agustus 2019 (2)
- Mei 2019 (4)
- April 2019 (3)
- November 2018 (3)
- Oktober 2018 (5)
- September 2018 (6)
- April 2018 (1)
- Maret 2018 (1)
- Februari 2018 (2)
- Oktober 2017 (1)
- September 2017 (1)
- Juli 2017 (1)
- Mei 2017 (1)
- April 2017 (1)
- Maret 2017 (4)
- Februari 2017 (5)
- November 2016 (1)
- Oktober 2016 (4)
- September 2016 (4)
- Agustus 2016 (7)
- Juni 2016 (3)
- Mei 2016 (5)
- April 2016 (6)
- Maret 2016 (6)
- Februari 2016 (10)
- Januari 2016 (2)
- Desember 2015 (2)
- November 2015 (4)
- September 2015 (4)
- Agustus 2015 (2)
- Juli 2015 (10)
- Mei 2015 (4)
- Februari 2015 (2)
- Januari 2015 (1)
- November 2014 (6)
- Oktober 2014 (1)
- Agustus 2014 (2)
- Juli 2014 (2)
- Juni 2014 (2)
- Maret 2014 (3)
- Januari 2014 (2)
- Desember 2013 (2)
- November 2013 (3)
- Oktober 2013 (2)
- September 2013 (1)
- Juli 2013 (2)
- Juni 2013 (4)
- Mei 2013 (5)
- April 2013 (2)
- Maret 2013 (3)
- Februari 2013 (5)
- Januari 2013 (1)
- Desember 2012 (6)
- November 2012 (6)
- Oktober 2012 (2)
- September 2012 (3)
- Agustus 2012 (4)
- Juli 2012 (2)
- Juni 2012 (1)
- Mei 2012 (1)
- April 2012 (4)
- Maret 2012 (3)
- Februari 2012 (8)
- Januari 2012 (4)
- Desember 2011 (4)
- November 2011 (1)
- Oktober 2011 (3)
- September 2011 (8)
- Agustus 2011 (2)
- Juli 2011 (14)
- Juni 2011 (6)
- Mei 2011 (5)
- April 2011 (2)
- Maret 2011 (8)
- Februari 2011 (12)
- Januari 2011 (6)
- Desember 2010 (4)
- November 2010 (4)
- Oktober 2010 (9)
- September 2010 (4)
- Agustus 2010 (7)
- Juli 2010 (1)
- Juni 2010 (4)
- Mei 2010 (7)
- April 2010 (11)
- Maret 2010 (3)
- Februari 2010 (1)
- Januari 2010 (2)
- Agustus 2009 (2)
- Juli 2009 (2)
- Juni 2009 (1)
- Februari 2009 (2)
- November 2008 (5)
- Oktober 2008 (3)
- September 2008 (2)
- Agustus 2008 (3)
Diberdayakan oleh Blogger.
Postingan Populer
-
Pengertian Masquerade MikroTik: Fungsi, Cara Setting & Contoh Konfigurasi Lengkap (Panduan RouterOS 5000+ Kata) Jika Anda sedang men...
-
Error 404: Not Found User Manager Mikrotik - Pengusaha hotspotan pengusaha jasa setting mikrotik mungkin suatu waktu akan bertemu dengan e...
-
Jasa setting mikrotik - Pengertian Routing Mikrotik ,router merupakan sebuah perangkat untuk menghubungkan jaringan publik dengan jaringan p...













