Socialabel

Showing posts with label Learning. Show all posts
Showing posts with label Learning. Show all posts

Thursday, January 30, 2014

Beberapa Software Simulator/Emulator Yang Mendukung Konsep OpenFlow/SDN


Openflow adalah sebuah teknologi yang dapat melakukan kontrol terhadap switch sehingga data yang dikirim atau diterima dapat diatur sedemikian rupa sesuai dengan algoritma yang diimplementasikan pada hardware openflow (switch). Pada dasarnya sebuah device switch konvensional hanya beroperasi pada l2 dan l3, namun teknologi openflow memungkin switch dapat beroperasi pada layer l2 hingga l7. 

Untuk mengimplementasikan OpenFlow tentu membutuhkan switch yang mendukung teknologi tersebut, sebagai alternatif hardware kita dapat menggunakan beberapa software simulator/emulator yang beredar luas di internet:
  1. Emulab
  2. Estinet
  3. Mininet
  4. Ns-3 
--|lanjut nanti|--

Saturday, January 25, 2014

Pasang Microsoft Core fonts di OpenSUSE

Fonts-fonts yang sering kita jumpai pada sistem operasi windows, pada distribusi openSUSE tidak terinstall secara default. Hal ini disebabkan karena font tersebut merupakan proprietary fonts dan bisa jadi para pengembang openSUSE tidak menyertakan perangkat lunak yang dimiliki secara eksklusif oleh pihak tertentu idealis dan untuk penggunaan proprietary software berlaku hukum serta aturan tertentu.

Hal ini bisa menjadi kendala bagi pengguna linux khususnya openSUSE dalam menyusun artikel ataupun tulisan ilmiah, Penulis pun sempat mengalami kendala ketika sidang proposal karena font yang saya gunakan berbeda dengan font yang dipakai dalam panduan penulisan ilmiah dikampus, akibatnya bisa rame dibully rame2 pada proses sidang.

Saturday, December 21, 2013

Menghentikan multithreading yang running dengan waktu tertentu

Menghentikan sebuah thread yang sedang running selama waktu tertentu dengan memanfaatkan module multiprocessing

Kode: thread.py
 #!/usr/bin/env python  
 import multiprocessing  
 import time  

 def get_page(*args, **kwargs):  
   print "Data "  
   if args[0]=="A":  
     time.sleep(2)  
   elif args[0]=="B":  
     time.sleep(5)  
   else:  
     time.sleep(10)  
   print "Nilai ->", args  

 def start_get_page(timeout, *args, **kwargs):  
   p = multiprocessing.Process(target=get_page, args=args, kwargs=kwargs)  
   p.start()  
   p.join(timeout)  
   if p.is_alive():  
     # stop the downloading 'thread'  
     p.terminate()  
     # and then do any post-error processing here  
   print "End"  

 if __name__ == "__main__":  
   start_get_page(4,"A","A")  
   start_get_page(4,"B","B")  
   start_get_page(12,"C","C")  

Sumber : Klik
Keyword: thread, multithreading, python, matikan, hentikan, stop, threading, tesis, seo, python menghentikan thread yang running berdasarkan waktu, lama waktu, durasi waktu python

Friday, December 20, 2013

Cross Global Variabel pada Multi File Python

File: file1.py
 #!/usr/bin/env python  
 a=''  
 def test():  
   global a  
   print "Pada Module File1"  
   print "Ini Nilai A: %s \n" %a  

File: file2.py
 #!/usr/bin/env python  
 import file1  
 file1.a="Data1"  
 file1.test()  
 print "Pada Module File2"  

Output: Eksekusi
 hery@ino2Er:~> python file2.py  
 Pada Module File1  
 Ini Nilai A: Data1   
 Pada Module File2  

Keyword: python, seo, multi, cross, file, module

Thursday, December 12, 2013

Parsing HTML, JSS, CSS, dan Quote Python

Kode parsing HTML JSS, CSS, dan Komentar

 def ParsingHtmlManual(finaltext):  
   finaltext=contohweb.split()  
   finaltext=' '.join(finaltext)  
   finaltext = re.sub(r'<script.*?/script>','', finaltext)  
   finaltext = re.sub('<style.*?/style>', '', finaltext)  
   finaltext = re.sub('<!--.*?-->', '', finaltext)  
   finaltext = re.sub('<.*?>', '', finaltext)  
   return finaltext  

Keyword:parsing, seo, html, jss, css, html

Sunday, November 10, 2013

Menghitung Durasi Timer Proses Python

Menghitung sebuah proses dari python dapat digunakan algorimat sebgai berikut:
 Start_Time  
     Proses:  
 Stop_Time  
 Durasi=Stop_Time - Start_Time

Code:
 import urllib2  
 import time  
 awal = time.time()  
 response = urllib2.urlopen('http://zipruz.com')  
 response.close()  
 akhir = time.time()  
 print "Total Waktu Proses ", akhir- awal, " Detik."  

Output:
 Total Waktu Proses 1.34128689766 Detik.  
Keyword: tesis, seo, timer, time, durasi

Friday, November 8, 2013

Konversi Qimage ke IplImage dan Iplimage ke Qimage

Cara konversi dari iplimage ke Qimage dan juga Cara konversi Qimage ke Iplimage pada openCV belum tersedia sehingga user harus mendefinisikan sendiri fungsi untuk melakukan konversi tersebut pada module yang digunakan, pada NamaModuleQt.h (ilustrasi) tambahkan baris berikut ini:
 IplImage* Qimage_Ke_IplImage(QImage *gambarQImage)  
 QImage* IplImage_ke_QImage(IplImage *gambarIPL)   

Selanjutnya pada NamaModuleQt.cpp tambahkan baris berikut ini:
 IplImage* NamaModuleQt::Qimage_Ke_IplImage(QImage *gambarQImage)  
 {  
   IplImage* gambarIPL;  
   //Ini Menggunakan Satu Channel  
   if(gambarQImage->isGrayscale())  
   {  
     gambarIPL = cvCreateImageHeader( cvSize(gambarQImage->width(), gambarQImage->height()), IPL_DEPTH_8U, 1);  
   }  
   else //Ini Menggunakan jika 3 Channel RGB  
   {  
     gambarIPL = cvCreateImageHeader( cvSize(gambarQImage->width(), gambarQImage->height()), IPL_DEPTH_8U, 3);  
   }  
   gambarIPL->imageData = (char*) gambarQImage->bits();  
   uchar* Databaru = (uchar*) malloc(sizeof(uchar) * gambarQImage->byteCount());  
   memcpy(Databaru, gambarQImage->bits(), gambarQImage->byteCount());  
   gambarIPL->imageData = (char*) Databaru;  
   return gambarIPL;  
 }  

Thursday, November 7, 2013

Konversi Qstring ke Const Char

/home/Hery/Iris_keren/src/ui/mainview.cpp:259: error: cannot convert 'QString' to 'const char*' for argument '1' to 'IplImage* cvLoadImage(const char*, int)'

Konversi tipe data Qstring pada Qt ke Const Char standar pada C, salah satu cara pada Qt Creator sebagai berikut:

 Qstring fullFileName="/home/Hery/Iris_keren/iris.bmp"  
 const char* nama=fullFileName.toStdString().c_str();  
 IplImage* ok=cvLoadImage(nama);  

Keyword:openCV, konversi, convert, const char, Qstring, kuliah Biometrik

Tuesday, November 5, 2013

Menggunakan Authentikasi Cookies Wget

Wget merupakan sebuah tool download manager mode CLI yang powerfull (menurut saya), walaupun masi memiliki cita rasa klasik :p, bahkan karena klasiknya bikin ribet jika mendownload file yang membutuhkan authentikasi untuk akses read file tersebut.

Namun wget juga memiliki opsi untuk mengatasi permasalahan tersebut, dengan menggunakan opsi cookies. Terlebih dahulu silahkan melakukan auth pada web login server yang akan di download.

(Test pada openSUSE)

Step 1:
wget --cookies=on --keep-session-cookies  --save-cookies cookies.txt --post-data 'user=hery&passwd=ok' http://zipruz.com/login.php

user      = nama field input text
passwd = nama field input password

Kemudian load cookies tersebut kedalam wget agar dapat memiliki akses download pada file yang di server tersebut.

Step 2:
wget --load-cookies cookies.txt -p http://zipruz.com/file/download.iso 
Namun terkadang pada Step 1 gagal untuk  mendapatkan cookies akibat dari adanya captcha pada web, sehingga authentikasi untuk mode console tidak bisa dilakukan, silahkan pakai alternatif dengan menggunakan browser GUI seperti mozilla dan ekspor cookies pada browser tersebut (terlebih dahulu silahkan login). selanjutnya silahkan lakukan lagi Step 2. semoga berhasil

Download Export Cookies Mozilla

Keyword: opensuse, wget, cookies, firefox, download

Sunday, November 3, 2013

MPI: Pemrograman Paralel


Sebelum memulai pemrograman paralel pada linux opensuse, silahkan install dulu librari dan aplikasi mpi pada mesin yang digunakan, asumsi penulis menggunakan paket manager dari zypper,
 #zypper install openmpi openmpi-devel mpich mpich-devel mpi-selector  


setelah proses download dan installasi paket selesai pastikan pada direktori  "/usr/lib/mpi" terdapat folder gcc, dan "/usr/lib/mpi/gcc/openmpi/bin/" ada file mpicc dan mpiexec

mpicc digunakan untuk mengkompilasi source code pemrograman paralel dalam bahasa C  ke code binari.mpexec digunakan untuk mengeksekusi code biner dari pemrograman paralel agar dapat dijalankan oleh komputer

Keterangan Paket:
openmpi - A powerful implementaion of MPI
Open MPI is a project combining technologies and resources from several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) in order to build the best MPI library available. This RPM contains all the tools necessary to compile, link, and run Open MPI jobs.

openmpi-devel - A powerful implementaion of MPI
Open MPI is a project combining technologies and resources from several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) in order to build the best MPI library available. This RPM contains all the tools necessary to compile, link, and run Open MPI jobs.

mpich - A Portable Implementation of MPI
MPICH is a freely available, portable implementation of MPI, the standard for message-passing libraries.

mpich-devel - A Portable Implementation of MPI
MPICH is a freely available, portable implementation of MPI, the Standard for message-passing libraries. This package contains manpages, headers and libraries needed for developing MPI applications

mpi-selector - Tool to provide defaults for which MPI implementation to use
A simple tool that allows system administrators to set a site-wide default for which MPI implementation is to be used, but also allow users to set their own defaults MPI implementation, thereby overriding the site-wide default. The default can be changed easily via the mpi-selector command -- editing of shell startup files is not required.


keyword: mpi, openmpi indonesia, pemrograman paralel, HPC

Tuesday, October 22, 2013

HTML character codes

Code   Entity         Hex Character Description
------ -------------- --- --------- -----------------------------------
 &#00;                              Unused
 &#01;                %01           Unused
 &#02;                %02           Unused
 &#03;                %03           Unused
 &#04;                %04           Unused
 &#05;                %05           Unused
 &#06;                %06           Unused
 &#07;                %07           Unused
 &#08;                %08           Unused
 &#09;                %09           Horizontal tab
 &#10;                %0A           Line feed
 &#11;                %0B           Unused
 &#12;                %0C           Unused
 &#13;                %0D           Carriage return
 &#14;                %0E           Unused
 &#15;                %0F           Unused
 &#16;                %10           Unused
 &#17;                %11           Unused
 &#18;                %12           Unused
 &#19;                %13           Unused
 &#20;                %14           Unused
 &#21;                %15           Unused
 &#22;                %16           Unused
 &#23;                %17           Unused
 &#24;                %18           Unused
 &#25;                %19           Unused
 &#26;                %1A           Unused
 &#27;                %1B           Unused
 &#28;                %1C           Unused
 &#29;                %1D           Unused
 &#30;                %1E           Unused
 &#31;                %1F           Unused
 &#32;                %20           Space

Parsing hasil query Search Engine Yahoo

Parsing hasil query Search Engine Yahoo

 import urllib2  
 import re  
 from BeautifulSoup import BeautifulSoup  

 opener = urllib2.build_opener()  
 opener.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0')]  

 query="menjadi pribadi yang terbaik"  
 query=query.replace(' ','+')  
 #url = "http://www.google.com/search?q="  # ok bisa  
 #url = "http://www.bing.com/search?q="    # ok bisa  
 #url = "http://www.ask.com/web?q="        # ok bisa  
 url = "http://search.yahoo.com/search?p=" # ok bisa  
 urlfull=url+query  

 page = opener.open(urlfull)  
 soup = BeautifulSoup(page)  

 ###yahoo, Only  
 for tag in soup.findAll('a', id=True):  
     haha= tag.get('href')  
     ok=haha.split('**')  
     if len(ok)>1:  
       print ok[1].replace("%3a",":")  
Keyword: parsing, yahoo, query, search engine, python

Monday, October 21, 2013

[Solved] TypeError: expected string or buffer

Python Craw Engine
 import requests  
 from bs4 import BeautifulSoup  
 query = "Kata Kunci"  
 url = "http://www.google.com/search?q=%s"  
 respon = requests.get(url % query)  
 soup = BeautifulSoup(respon)  

Compile Error!!
  bla bal bal bal bal bal bal .....................
  File "/usr/lib/python2.7/site-packages/bs4/dammit.py", line 203, in __init__  
   self._detectEncoding(markup, is_html)  
  File "/usr/lib/python2.7/site-packages/bs4/dammit.py", line 373, in _detectEncoding  
   xml_encoding_match = xml_encoding_re.match(xml_data)  
 TypeError: expected string or buffer  

Ganti menjadi
 import requests  
 from bs4 import BeautifulSoup  
 query = "Kata Kunci"  
 url = "http://www.google.com/search?q=%s"  
 respon = requests.get(url % query)  
 soup = BeautifulSoup(respon.content)  #  BeautifulSoup(respon.text)

 print soup

Keyword: SEO, Search Engine, Python, Expected String or buffer

Sunday, October 20, 2013

Remove Tag Html Python

Menghapus Tag Html dengan Regex

 import re  
 re.sub('<[^<]+?>', '', text)  

Keyword: hapus, tag, html, remove

Saturday, October 19, 2013

Install Hadoop Pada Kluster Komputer


Untuk Instalasi Hadoop pada kluster dilakukan pada sistem operasi Linux OpenSuse 12.3. Software-software supporter yang diperlukan untuk instalasi Hadoop adalah
1. Java (JRE/JDK)
2. Framework Hadoop (Hadoop 1.2.0)
3. SSH

[Lakukan Pada semua host]
[Master/Node1/Node2/Node3/Node4].

Tahapan pertama silahkan konfigurasi jaringan, pastikan semua host sudah saling terhubung, silahkan gunakan aplikasi ping sebagai tester. jika ada respon dari host tujuan tahap pertama selesai, jika tidak silahkan cek konfigurasi fisik dan logik serta firewall.

Asumsi network yang saya gunakan adalah 192.168.10.0/24 dengan rincian sebagai berikut
 1. master : 192.168.10.2/24  
 2. node1  : 192.168.10.10/24  
 3. node2  : 192.168.10.11/24  
 4. node3  : 192.168.10.12/24  
 5. node4  : 192.168.10.13/24  


Silahkan edit file hosts (root level) pada masing-masing host dengan kriteria sebagai berikut:
 master:/home/Hery # vim /etc/hosts  
 ########### /etc/hosts #############  
 192.168.10.1  master  
 192.168.10.10 node1  
 192.168.10.11 node2  
 192.168.10.12 node3  
 192.168.10.13 node4  

Jika sudah reboot semua komputer master hingga node4, agar konfigurasi hosts file dapat diload kembali.

Saturday, October 12, 2013

Delay pada Qt: sleep, msleep, dan usleep

Dalam berbagai teknik pemrograman, peran dari sebuah delay sangat banyak dalam algoritma sekuensial ataupun paralel. Delay dalam artian menunda beberapa saat (satuan waktu) sebuah proses yang akan dilakukan oleh program komputer. 

Secara khusus penulis belum menemukan sebuah class pada Qt untuk memanggil metod delay, sehingga user perlu membuat class tersebut secara manual yang selanjutnya dapat disisipkan kedalam threat ataupun iterasi biasanya.

 #include <QtCore/QCoreApplication>  
 #include <QtDebug>  
 #include <QThread>  

 class SleepProses : public QThread
 {  
    Q_OBJECT  
    void run (){}  
    
    public :  
    static void usleep(long delay1)
    {  QThread::usleep(delay1); }  
    static void msleep(long delay1)
    {  QThread::msleep(delay1);  }      
    static void sleep(long delay1)
    {  QThread::sleep(delay1);  }  
 };  

 int main(int argc, char *argv[])  
 {  
    QCoreApplication a(argc, argv);  
    for(int i=0;i<10;i++)  
    {  
       qDebug()<<"Counter test ke-"<<i;  
       SleepProses::sleep(2);  
       //SleepProses::msleep(1);  
       //SleepProses::usleep(1);  
    }  
    return a.exec();  
 }  

Tuesday, October 8, 2013

Inisialisasi Matrix Gambar: cvZero dan cvSet

Dalam rekayasa sebuah gambar, sangat penting untuk melakukan inisialisasi sebuah matrix citra yang baru terbentuk. Salah satunya adalah untuk merekontruksi citra ke dalam citra yg lain.

Ada 2 cara yang biasa penulis lakukan yaitu dengan menggunakan cvZero dan cvSet,

Example:
 cvZero(calonGambar) //R=0 G=0 B=0  

 //cvSet(calonGambar, cvScalar(R,G,B));  
 cvSet(calonGambar, cvScalar(0,0,0));  

Perbedaannya mendasar dari metod tersebut adalah cvZero hanya punya akses untuk membuat sebuah matrix citra menjadi bernilai R=0, G=0, B=0 sedangkan cvSet dapat diatur nilai dari matrix citra tersebut.

Saturday, October 5, 2013

Set Multiple Inputs Hadoop Map Job

Pada mapreduce job disedikan 2 metode untuk memberikan inputan kepada program map, yaitu single input dan multiple input. Single input digunakan ketika sebuah program hanya membutuhkan 1 inputan baik itu folder/file. Sedangkan multiple input adalah program disetting menerima beberapa folder/file dalam prosesnya.

Dasar Input path pada Hadoop Map Job
Example Single input:
 FileInputFormat.addInputPath(job, InputPath);  

Multiple Input File/Folder pada Hadoop Map Job
Example Multiple Input:
 Path masukanPertama = new Path(args[1]);  
 Path masukanKedua = new Path(args[2]);  
 Path keluaran = new Path(args[3]);  
 MultipleInputs.addInputPath(job, masukanPertama, TextInputFormat.class, Mapper1.class);  
 MultipleInputs.addInputPath(job, masukanKedua, TextInputFormat.class, Mapper2.class);  
 FileOutputFormat.setOutputPath(job, keluaran);  

Tuesday, October 1, 2013

Set ROI openCV

Pada komputer vision, adakalahnya ketika ingin mengkluster sebuah objek dibutuhkan ROI (Region of Interest), dengan ROI pekerjaan pemrosesan citra/video menjadi lebih ringan dan komputasi lebih singkat. RoI sering penulis gunakanpada proses segmentasi, contoh sederhana dalam membuat roi secara manual.

 #include <QtCore/QCoreApplication>  
 #include<stdio.h>  
 #include<opencv/cv.h>  
 #include<opencv/highgui.h>  
 #include<math.h>  
 int main(int argc, char *argv[])  
 {  
   cv::Mat imageROI, gambar;  
   char *gbr="/windows/D/[X]~BIOMETRIK/iris.jpg";  
   gambar=cv::imread(gbr);  
   cv::imshow("Gambar", gambar);  
   //cv::Rect roi=cv::Rect(x,y,w,h);  
   cv::Rect roi=cv::Rect(100,200,300,300);  
   imageROI=gambar(roi);  
   cv::imshow("ROI",imageROI);  
   cvWaitKey(0);  
   return 0;  
 }  

Walaupun code diatas RoI secara manual, dengan pengembangan code lebih lanjut, RoI dapat dibuat secara otomatis  dengan mendeteksi objek-objek tertentu pada citra/video.

Saturday, September 7, 2013

Filename Pada Proses Map Hadoop

Untuk mendapatkan sebuah informasi file yang tengah di proses oleh Hadoop khusunya pada saat proses map pada MapReduce, pengguna dapat menambahkan baris code berikut pada class Map di program java.

  FileSplit infofile = (FileSplit)reporter.getInputSplit();  

Beberapa contoh penggunaan

 String namafile = infofile.getPath().getName();  
 String fullpath= infofile.getPath().toString();