Rabu, 15 Mei 2013

Sharing Internet 3G di Ubuntu 12.04


68588-diagram-ad-hoc
 
 Kebetulan ane punya 2 buah operating system di dua laptop ane : Windows 8 dan Ubuntu 12.04. Konsep sharing internet dari modem ke komputer sekitar cukup sederhana. Modem akan mengambil data dari internet, kemudian komputer Ubuntu gw jadi gateway yang tugasnya membagi-bagi koneksi internet ke windows 8.
Untuk membuat gateway, pertama kali kita install dulu firestart di ubuntu kita. Untuk menginstall, bisa buka Ubuntu Software Manager, lalu ketik firestart di kotak searcher kemudian klik Install.

Ubuntu Software Center_001Kalo udah selesai, sekarang kita bikin Ad Hoc dulu di ubuntu. Tujuannya agar komputer gw bisa terhubung dengan komputer anggota keluarga yang lain. Cara bikin ad hoc di ubuntu gak susah koq.
Pertama klik button yang untuk internetan. Kalo di gambar, klik yang gw lingkarin warna merah
Selection_008
Menu_005
Kalo udah, ntar pilih Create New Wireless Connection. Kalo diklik, akan muncul dialog dan isikan Network Name sesuka hati. Berhubung untuk rumah, gw kasih nama aja ‘Internet Rumah’.  Wireless Security gak usah kita gunakan.

unknown_017

Kalo sudah, sekarang kita set IP address untuk network internet rumah. Caranya ialah klik Edit Connections…  di menu sebelumnya. Pilih tab Wireless, internet rumah, kemudian klik edit. Setelah memilih muncul dialog menu Editing internet rumah, pilih tab IPV4 Settings lalu pilih Method penentuan IP address secara manual. Gw tentukan IP address komputer gw ialah 192.168.13.1 dan Netmask 24 atau bisa ditulis 255.255.255.0 lalu Save.

Network Connections_025
Editing internet rumah_026

Kalo sudah coba disconnect internet rumah, dan connect lagi agar konfigurasi yang sudah kita buat sudah bisa diterapkan pada koneksi internet rumah. Selanjutnya ialah kita kita jalan firestart.
Pada pertama kali muncul, akan keluar wizard. Berikut ialah langkah-langkah:

1. Next aja lah :p

Firewall Wizard_027

2. Kita pilih dialup device karena yang akan menjadi sumber internet kita ialah modem 3G. Penentuan IP address akan dilakukan manual, sehingga kita tidak perlu menggunakan DHCP.

Firewall Wizard_028

3. Pilih wireless device atau wlan0 sebagai media penyebaran internetnya.

Firewall Wizard_029
4. Finish :D
Firewall Wizard_030

Eit eit eit, langkah selanjutnya ialah mengatur ip address di masing-masing komputer:

IP Address: 192.168.xxx
NetMask : 255.255.255.0
GateWay: 192.168.1

Nilai xxx bisa diisi dengan rentang 2 – 254

Selamat mencoba :p

(Tapi pengalaman ane, kalo cuma di kamar kost-an kayak punya ane, ga usah terlalu cape install firestarter) Langsung buat Ad-hoc aja, Ubuntu emang jawara deh, pasti ke detect wireless internet nya.. 

Minggu, 12 Mei 2013

Mengatasi bug work offline mode di firefox ubuntu 12.04

Holy Shit,


Kesel banget tau, pas abis upgrade firefox 18 ke firefox 20, eh tau-taunya tiap mau buka firefox pasti masuk ke work offline mode. Mau install ulang, w uda terlanjur nyaman di ubuntu 12.04 LTS milik w ini. Ya udah googling ke dunia antah berantah nya internet, coba ini, coba itu, ga ada yang berhasil...

akhirnya ketemu juga cara nya nih :

1. Tulis di address bar "about:config", trus klik aja perintah kalo lo bakalan hati-hati
2. Tulis (ketik) lagi "network.manage.offline.status"
3. ubah jadi false dengan cara "double klik"
4. Restart firefox
5. Selancar lagi, Insya Allah bisa...

Semoga bermanfaat...

Selasa, 07 Mei 2013

Beberapa shortcut di text editor vim

vim adalah sebuah text editor yang hampir selalu tersedia di semua distro linux. vim terbagi atas dua mode. yang pertama adalah mode command. untuk memulainya, cukup tekan "esc", kemudian masukkan perintah-perintahnya . Sedangkan yang kedua adalah mode insert, dimana seseorang dapat menuliskan ayat-ayat suci program ke dalamnya. Jadi untuk mengendalikan mode insert, maka dibutuhkan mode command.

Beberapa perintah di mode command yang Saya tahu :

Perintah dasar
Ada 2 macem perintah, yaitu yg diawali oleh : (titik dua) dan perintah yg langsung pencet2 keyboard aja. Tuk yang pertama, pada akhirnya jadi kaya ngetik perintah dulu dan harus tekan enter tuk menjalankan perintahnya.
Inilah perintah2 dasar yg wajib diketahui:
  • :w tuk nge-save
  • :w namafile tuk nge-save ke file baru (save as ..)
  • :q tuk keluar dari vim
  • :wq tuk ngesave lalu keluar
  • :q! tuk keluar dari vim dan dokumennya gak di save
Editing
Yang gw maksud dengan editing di sini adalah perintah2 tuk melakukan operasi yang biasanya ada di menu edit. Copy, Paste, Cut, dsb..
  • :d ngapus 1 baris
  • :y copy/yank
  • dd ngapus 1 baris yang sedang dipilih
  • yy ngopy 1 baris yang sedang dipilih
  • p paste
Perintah ngapus (:d atau dd) bisa dipake sebagai operasi Cut juga. Soalnya teks yg dihapus akan dimasukkan ke “clipboard”.
Bagi yang mau ngulang2, hafalkan 2 perintah di bawah ini.
  • u tuk undo
  • ctrl+r tuk redo
Search and replace
Ini bagian yang menurut gw asik :D
Untuk nyari2, silakan berteman dengan tombol / (forward slash). Contoh penggunaannya:
/apa yang dicari
Kalau mau nyari lagi, gak usah nulis lagi apa yang mau dicarinya.. tinggal pencet / lalu enter. Kalau mau nyari ke belakang (mundur), pencet aja ?lalu enter.
Untuk ganti mengganti, silakan berkawan dengan perintah :s (s tuk substitute). Format penulisannya:
:s/yang diganti/pengganti/
Perintah ini akan nyari text yang mau diganti di baris yang lagi aktif lalu melakukan penggantian. Jika ada beberapa teks yang sesuai, cuma yang pertama saja yang diganti. Kalau mau semuanya dalam satu baris, tambahkan modifier g (global)
:s/yang diganti/pengganti/g
Bagi kamu2 yang ngerti regex perintah substitue ini akan sangat menarik :D Bisa pake back reference juga.
:s/www.\+\s//
:s/\(satu\) \(dua\)/\2 \1/
Mindahin cursor
Yang paling sederhana ya tinggal pencet2 tombol arah atas, bawah, kiri, atau kanan. Page up, page down, home, dan end.
Kalau mau loncat2, cobain perintah berikut.
  • :1 ke baris 1
  • :$ ke baris akhir
  • :100 ke baris 100
  • ^ ke awal baris
  • $ ke akhir baris
  • w loncat 1 kata
  • { atau } loncat 1 paragraf
Kombo
Perintah2 di atas cuma (kecuali tuk nyari2) berlaku tuk satu baris aja. Kalau mau beberapa baris, ya tinggal kasih tau mau dijalankan di baris mana aja.
Misalnya..
  • :1,5:d tuk ngapus baris baris 1 sampai baris 5
  • :.,$:y copy dari baris sekarang (.) sampai habis ($)
  • 5p tuk paste 5 kali
  • 5yy copy 5 baris dari baris saat ini
  • :%:d tuk ngapus semua (%) baris
  • :4,10:s/a/b/g ganti semua karakter a dengan b di baris 4 sampai 10 sebanyak satu baris penuh.
Liat polanya kan?
Ada lagi..
  • d5w delete 5 words :D
  • y$ copy sampe akhir baris
  • d^ hapus sampe awal baris
Milih2 secara visual
Kalau ngeliat teknik kombo di atas, rasanya kalo mau ngopy (misalnya) mesti ngitung berapa baris yang mau di copy. Kalo males ngitung, mending teks yang mau diapa2in dipilih secara visual.
Caranya gini..
  • v tuk milih2.. anggap aja kaya shift+arah.
  • Shift+v tuk milih baris
  • Ctrl+v tuk milih kolom
Dan setelah dipilih, silahkan dikombo lagi dengan perintah lainnya.. Misalnya setelah milih baris pakai shift+v, tinggal mencet d tuk ngapus. Atau:s/blah/apalah tuk ngereplace.
Warna-warni
Ini perintah2 yg berhubungan ama warna-warni
  • :syntax on ngaktifin syntax highlighting
  • :set syntax=php tuk ngasih tau si vim kalo dokumen yg dibuka adalah dokumen php
  • :colorscheme evening make colorscheme “evening”. Pencet tab aja tuk milih2 yang ada.
  • :set hls highlight search. ngasih warna tuk search keyword
Formatting
Beberapa perintah yg gw tau
  • :set tw=75 ngatur satu baris maksimal 75 karakter. kalau lagi nulis, tulisan akan langsung dipotong2 sama si vim.
  • :set ts=4 besar 1 tab = 4 karakter (visual aja)
Beberapa yang lain..
  • :set ts=4 sts=4 expandtab kalau mencet tab, langsung diganti jadi spasi sebanyak 4 kali
  • :retab abis ngejalanin perintah di atas lalu ngelanjutin dengan :retab maka setiap tab langsung diganti jadi 4 buah spasi.
Bagi yang suka ngoding
Selain ngewarnain dan ngasih tau format dokumen (biasanya si vim langsung ngenalin) ada beberapa lagi yang bisa nambah kenikmatan dalam ngoding.
  • :set number nomor baris
  • :set ai ai = autoindent = indentasi otomatis
Kalo 2 fasilitas itu mau dimatiin, jalanin aja :set nonumber atau :set noai.
Singkatan
Perintah2 di vim bisa disingkat2, contohnya..
  • :set tw=X sama aja dengan :set textwidth=X
  • :set ts=X sama aja dengan :set tabstop=X
  • :colorscheme evening sama dengan :colo evening
  • :set nonu sama dengan :set nonumber
Kesimpulan
vim itu keren :D dan jangan ngafal perintah yang aneh2 dengan sengaja kalo gak mau capek. learning by doing aja :P
selain itu, vim mendukung scripting. perintah2 yang ada dibisa dibuat script ato juga macro biar gak usah diulang2 lagi. Malah ada games yg dijalankan di atas vim.
IMHO, cukup tau perintah2 yg gw tulis di atas dan menguasai regex, lo udah bisa ngebuat orang laen terbengong2 pas ngeliat lo make vim. hihihi..
Silakan ditambahkan kalau ada lagi..

Beberapa perintah di editor nano

nano adalah sebuah text editor, bukan IDE. Nano mempunyai kemampuan seolah-olah kita menuliskan barisan program di dalam terminal : 

Berikut beberapa perintah yang digunakan :

Sebelum memulai nano :

nano -perintah <nama file. extensi>

  1. -i :  auto indent (Secara otomatis akan mengatur indentansi, agar program lebih mudah di  analisa dan dibaca).
  2. -u : undo (agar  nano mampu menjalankan perintah undo dengan menekan Alt +  U)
  3. -c : menampilkan line number dan posisi kursor

Senin, 06 Mei 2013

Membuat program faktorial dengan menggunakan rekursif di C


Sekedar informasi dan dokumentasi ...^_^

#include <stdio.h>
int hasil,f;

main ()
{
  printf ("Masukkan nilai n: ");
  scanf("%d", &f);
  hasil = faktorial (f);  
  printf ("Setelah difaktorialkan :%d \n ", hasil);

}

int faktorial (int n)
{
  if ((n==0) ||  (n == 1))
{
          return 1  ;  }
  else

     return n * faktorial (n-1);
}

Membuat program fibonacci dengan menggunakan fungsi rekursif di C


Sekedar informasi dan dokumentasi... ^_^

#include <stdio.h>

int main()
{
  int nilai, i ;
  printf ("Masukkan jumlah deret bilangan fibonacci : ");
  scanf ("%d", &nilai);

  for (i=1; i<= nilai; i++)
  {
    printf ("%d__", fibo(i));
  }
    printf ("\n");

   return 0;
}

int fibo (int a)
{
  if (a==0){ return 0;}
  if (a==1) return 1;
  else
      return fibo(a-2) + fibo(a-1);

}

Kamis, 06 Desember 2012

Algoritma Elipse dan Midpoint Elipse


// AHMAD FADLY DZIL JALAL [2010 470 121]
// @ ALL RIGHTS RESERVED

#include "stdafx.h"
#include <glut.h>

GLuint global_w = 1200;
GLuint global_h = 600;
float putaran_A = 0;
float putaran_B = 0;
int sisi = 50;

void init();
void idle();
void display();
void reshape(int w, int h);
void ElipseSederhana(float xc, float yc, float x, float y);
void elipseMidpoint(float xc, float yc, float rx, float ry);

int _tmain(int argc, char* argv[])
{
    glutInit(&argc,argv );
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(50,50);
glutInitWindowSize(global_w,global_h);
glutCreateWindow ("Tugas");
glutSetWindowTitle( "Elipse" );
    init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
    //glutIdleFunc(idle);
glutMainLoop();
return 0;
}

void init()
{
// clear background
glClearColor(0.0,0.0,0.0,1.0);

glShadeModel(GL_SMOOTH);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();


glOrtho(-global_w/2,global_w/2,-global_h/2,global_h/2,-1.0,1.0);
//glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);
};



void display (){
    glClear(GL_COLOR_BUFFER_BIT);
   

    glPushMatrix();
    glTranslatef(sisi,sisi,0);  
glRotatef(putaran_B,0.0,0.0,0.0); //SUDUT, X, Y, Z
glTranslatef(-sisi,-sisi,0);
    glBegin (GL_POINTS);  
    glColor3f (1,1,0);
    elipseMidpoint(600, 300, 100 , 40);
    glEnd();
    glPopMatrix();
glutSwapBuffers();
   
    glPushMatrix();
    glTranslatef(sisi,sisi,0);  
glRotatef(putaran_A,0.0,0.0,0.0); //SUDUT, X, Y, Z
glTranslatef(-sisi,-sisi,0);
    glBegin (GL_LINES);//PUTIH
    glColor3f (1,1,1);
    elipseMidpoint(600, 300, 100 , 20);
    glEnd();

    glBegin (GL_LINES);//HIJAU
    glColor3f (0,1,0);
    elipseMidpoint(600, 400, 200 , 40);
    glEnd();

    glBegin (GL_POINTS);//HIJAU
    glColor3f (0,1,0);
    elipseMidpoint(400, 400, 20 , 40);
    glEnd();

    glBegin (GL_POINTS);//HIJAU
    glColor3f (0,1,0);
    elipseMidpoint(800, 400, 20 , 40);
    glEnd();

    glBegin (GL_POINTS);//BIRU
    glColor3f (0,0,1);
    elipseMidpoint(600, 200, 200 , 40);
    glEnd();

    glBegin (GL_POINTS);//BIRU
    glColor3f (0,0,1);
    elipseMidpoint(400, 200, 20 , 40);
    glEnd();

    glBegin (GL_POINTS);//BIRU
    glColor3f (0,0,1);
    elipseMidpoint(800, 200, 20 , 40);
    glEnd();
   
    glColor3f (1,1,1);
    glBegin (GL_LINE_LOOP);
    ElipseSederhana(200, 200, 100, 40);
    glEnd();
   
    glPopMatrix();
glutSwapBuffers();


    glFlush();
}

void reshape (int w, int h){
    global_w = w;
    global_h = h;
    glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,w,0,h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScalef(1,1,1);
glutPostRedisplay();
}

void ElipseSederhana(float xc, float yc, float x, float y)
{
    int p1[] = {(int)xc+x, (int)yc+y}; glVertex2iv(p1);
    int p2[] = {(int)xc-x, (int)yc+y}; glVertex2iv(p2);
    int p3[] = {(int)xc+x, (int)yc-y}; glVertex2iv(p3);
    int p4[] = {(int)xc-x, (int)yc-y}; glVertex2iv(p4);  
   
}

void elipseMidpoint(float xc, float yc, float rx, float ry)
{
    float rxSq = rx * rx;
    float rySq = ry * ry;
    float x = 0, y = ry, p;
    float px = 0, py = 2 * rxSq * y;
    ElipseSederhana(xc, yc, x, y);

    p = rySq - (rxSq * ry) + (0.25 * rxSq);
    while (px < py)
    {
        x++;
        px = px + 2 * rySq;
        if (p < 0)
            p = p + rySq + px;
        else
        {
            y--;
            py = py - 2 * rxSq;
            p = p + rySq + px - py;
        }
        ElipseSederhana(xc, yc, x, y);
    }

    p = rySq*(x+0.5)*(x+0.5) + rxSq*(y-1)*(y-1) - rxSq*rySq;
    while (y > 0)
    {
        y--;
        py = py - 2 * rxSq;
        if (p > 0)
            p = p + rxSq - py;
        else
        {
            x++;
            px = px + 2 * rySq;
            p = p + rxSq - py + px;
        }
        ElipseSederhana(xc, yc, x, y);
    }
}