Archive

Author Archive

Blackberry Application Launcher

June 24th, 2009

Pernah penasaran begimana caranya bikin launcer seperti detik.com? Punya website mobile dan pengen bikin launcher yang serupa tapi engga tahu cara bikinnya? Saya juga ^^

Saya baru aja mencoba bikin applikasi launcher seperti itu, yang rupanya engga sulit2 amat. Tutorial nya bisa banyak ditemukan dimana2. Code nya juga sebenernya simple sekali, hanya buka website tersebut, dan close program tersebut. Makanya disebut application launcher.

Ngapain pake launcher kalo bisa cuma pake bookmark?
1. Engga semua orang punya knowledge untuk menggunakan browser dengan semestinya.
2. Simplicity
3. Mengurangi 1 step click menuju bookmark

Semua proses pembuatannya sebenernya simple. Tapi ada satu masalah. Applikasi blackberry sebelum di launch mengharuskan developer untuk “menandatangani” applikasi tersebut. Gunanya supaya RIM bisa tracking code mana saja yang ada di pasar dan dikembangkan. Untuk bisa menandatangani applikasi tersebut dibutuhkan $20 tambahan.

Nah khan cape kalo cuma mao bikin satu launcher simple aja tapi sampe harus bayar biaya segitu ^^, nah kemaren itu baru aja gue register 1 key.

Gue menawarkan service untuk membuatkan anda application launcher hanya dengan 20Rb rupiah. Itung kita bagi2 license key nya supaya sama2 senang :P

Anda cukup mempersiapkan
1. URL website anda
2. Icon berupa PNG berukuran 80 x 80 pixel
3. Uang Rp 20.000

Jika anda tertarik silahkan tinggalkan informasi untuk menghubungi anda di comment.

Untuk contoh silahkan download launcher sample di http://www.rickyok.net/crackberry.jad

  • Share/Bookmark

programming

Dota Yuk

March 24th, 2009

Belakangan ini terdengar pembahasan dota dimana2. Di kantor, di mall, tempat gym, gereja, dll. Tapi karena orang kantoran ceritanya pada sibuk nich, khan susah tuh ke warnet. Lagian khan sekarang jaman internet udah pada kenceng, jadi pada bisa dong sebenernya maen dari rumah masing2. Well memang kalo maen dari rumah kagak kedengeran teriak2an nya ^^ , tapi at least kagak perlu jauh jalan ke Warnet, dan bayar ongkos warnet lagi.

Salah satu cara buat maen game tersebut rame2 bareng temen2 adalah dengan menggunakan Battle net. Banyak sekali server di Indonesia yang bisa digunakan seperti IDGS dan masih banyak server laen yang gratis maupun bayar. Tapi kita engga bahas cara itu sekarang. Cara yang itu bisa di liat di website laen.

Maen dota itu bisa juga mensimulasikan jaringan internet seperti layaknya Local Area Network. Jadi walaupun pemaen2 nya berada di rumah masing2 dan terhubung lewat internet, kita bisa membuat supaya komputer mengira kita berada di LAN yang sama. Bahas teknis nya adalah kita ingin membuat VPN (Virtual Private Network). Karena setting VPN itu engga mudah, kali ini kita akan gunakan cara yang lebih mudah, menggunakan VPN gratisan yang public bernama Hamachi.

Hamachi adalah VPN berbasis data central yang saat ini dimanage oleh LogMeIn Inc. Kita tidak akan menggunakan Hamachi terbaru karena banyak mempunyai masalah. Hamachi di beli oleh LogMeIn sejak beberapa tahun lalu. Kita akan menggunakan versi sesaat sebelum program nya di rubah aneh2. Gunakan versi Hamachi 1.0.1.1 yang bisa di download dari

http://www.filehippo.com/download_hamachi/1840/

filehippo

Download dan install Hamaci 1.0.1.1 lalu jalankan, anda ditanya beberapa pertanyaan, dan walaaa.. installasi selesai. Berikut nya kita harus membuat satu network yang sama untuk bisa bermain dengan teman2. Klik tombol kedua dari kanan yang berada di bawah Hamachi dan tekan “Create New Network”. Isi informasi tersebut seperti tertera di gambar. Catat baik2 nama network dan password tersebut untuk dibagikan ke teman2 anda nantinya.

Create New Network

Teman2 yang ingin join ke network ini bisa tekan tombol di bawahnya “Join existing network” lalu masukkan informasi nama network dan password yang sama dengan yang di create di atas.

bikinserverbaru

Buka dota, dan mainkan LAN seperti biasa ^^ dan selamat bermain.

Jangan lupa kalo lagi maen ajak2 saya yach…

Tambahan:

Kalo engga berhasil coba buka setting > Network Connection > Advance > Advance Setting dan pindahkan Hamaci ke paling atas

setting

  • Share/Bookmark

game

Crazy Kart

February 6th, 2009

Crazy Kart Show

Hari Kamis tanggal 5 kemarin, Ragnafilia dapet kehormatan untuk dateng ke launching game online baru Lyto, Crazy Kart. Kita ketinggalan press conference nya karena ada kerjaan pagi nya :P jadi kalo untuk informasi buat game nya bisa liat di website tetangga

http://www.videogamesindonesia.com/artikel/p2_articleid/1464

Singkat cerita, karena ketinggalan press conference dan makan siang :p kita langsung menuju ke… maen game nya dongg :P Balapan langsung dengan staff2nya lyto yang jago nya amit2 :P Gue cuma dapet juara 6, Teddy (Claude Kenni) dapet juara 3, padahal dia udah pake drift segala macem. Kita juga dapet kesempatan maennya pake steer dan pedal gas (dan rem). Masih tetep kalah sama staff yang cuma pake keyboard T_T

Crazy kart, kalo secara simply, boleh dibilang semacem mario kart, beda nya dia bisa drift yang engga perlu lompat2an, bisa ganti kostum, dan bisa bawa 2 item. Item yang dipake bisa diganti kapan aja. Game permainannya cukup seru. Graphics nya seperti kartun 3d, cukup bagus, mungkin kurang lebih seperti Seal Online.

Setelah asik bermain, kita di tawarin buat maen Go Kart benerannya :P Wah ini bagian yang bener2 seru nich. Pertama kali nya naek Go Kart. Gue naek mobil di urutan pertama. Katanya suruh “warming up” 2 lap. Gue injek gas dong. Mao latihan nyetir, gas sama rem dulu. Baru mulai, bahkan belom belok, udah disalip sama 1 mobil T_T. Gak lama kemudian 1 lagi, akhirnya gue putuskan untuk full speed ahead… berarti di pool position 3rd.

Start dimulai, gue pada urutan ke 3, kalah start langsung urutan ke 4. Dan sampe finish tetep di 4 ahahaha… Yappari, belom berani injek gas kenceng2 banget sampe lap ke 3 soalnya. Total ada 6 Lap. Si teddy jadi juara 1 dech, dapet kaos (Setelah nyalib 1 orang cewe dengan sadiznya ahahah).

Next event : Valentine

  • Share/Bookmark

game

Power Button

January 30th, 2009

Background Story

Di kantor ada satu server database dan Web kita, yang kalo malem sebenernya engga ada yang pake. Jadi kalo malem pengennya dimatiin aja gitu. Nyalain server ubuntu khan gampang yach, tinggal pencet power button nya doang udah nyala sendiri. Tapi laen cerita dengan matiin nya, harus login dengan ssh ke server, terus ketik

sudo shutdown -h now

Tiap kali ngetik begitu khan cape juga :P akhirnya gue cari cara untuk matiin secara otomatis

Solusi

Di ubuntu server waktu install secara default ACPI itu engga di install. Untuk ubuntu bisa mengenali bahwa ada tombol power di pencet, harus install dulu ACPI dengan cara

sudo apt-get install acpid

Secara otomatis dia bakal install sendiri script shutdown sewaktu power button itu di tekan, udah engga perlu melakukan apa2 lagi pun udah jalan. Tapi kalo penasaran begimana cara script nya bekerja bisa liat event pemanggilannya di sini

/etc/acpi/events/powerbtn

Script itu secara otomatis akan memanggil script shutdown yang ada di

/etc/acpi/powerbtn.sh
  • Share/Bookmark

linux

Spam buster

January 29th, 2009

Setelah menggunakan WP selama kurang lebih 2 bulan. Akhirnya dateng juga yang paling di tunggu2 di email…. Guess what is it? S.P.A.M comment :P

Wew. WordPress rupanya masih belom anti2 banget sama begituan :P abisnya selama ini di Blogger kagak pernah kena sih. Barusan pasang anti spam. Moga2 engga ada lagi dech.

  • Share/Bookmark

zuru zuru

New Year, New Design, New System, Old content

January 12th, 2009

Tahun baru saatnya mengganti sistem dengan yang baru. Sistem blog tahun ini menggunakan WordPress. Moga2 kali ini lebih awet dari yang sebelumnya. Sekarang www.rickyok.net dan blog.rickyok.net digabung jadi satu aja dech. Karena pusink maintenancenya ada 2 biji website. Lagian WP juga udah support code highlight. Semoga tahun ini juga bisa menghasilkan content2 yang berguna.

Happy new year everybody!!

  • Share/Bookmark

Uncategorized

Teka teki solver

January 5th, 2009

Ini dulu gue bikin waktu lagi isenk di kantor, adu cepet2an pecahin teka teki silang, akhirnya karena kalah melulu gue kesel, terus bikin programnya buat pecahin teka teki silang otomatis. Emang engga guna :P tapi sapa tau suatu saat berguna.

<html>
<head><title>Crozz Puzzle - Problem Solver</title></head>
<body onLoad="frmSolver.txtFind.focus();frmSolver.txtFind.select()">
  <form name="frmSolver" method="GET" action="crossSolverFixedMulti.php">
    Soal : <br>
    <textarea name="txtSoal" cols="30" rows="12"><?echo $txtSoal?></textarea><br>
    Kata yang dicari :<br>
    <input type="text" name="txtFind" value="<?echo $txtFind?>">
    <input type="submit" value="Cari">
  </form>
 
<br>
Hasil : <br>
<table cellpadding="10"><tr>
<?
  // Pecahin soalnya jadi array of char
  $soal = trim($_GET["txtSoal"]);
  $verti = 0; $hori = 0; $totalchar = 0;
  for($a = 0 ; $a < strlen($soal) ; $a++) {
    if (ord($soal[$a]) != 13 && ord($soal[$a]) != 10) {
      $chara[] = $soal[$a];
      $warna[] = 0;
      $verti++;
      $totalchar++;
    }
    else {
      $a++;
      $verti = 0;
      $hori++;
    }
  }
  $hori++;
 
  $find = $_GET["txtFind"];
  $maxLevel = strlen($find);
 
  // Proses $warna
  function process($x, $y, $level, $arah) {
    global $chara, $verti, $hori, $totalchar, $maxLevel, $find, $warna;
    $pos = ($y * $verti) + $x;
    if ($level == $maxLevel) {
      return true; // Ketemu nich berarti
    }
    if ($x < 0 || $x >= $verti) {
      return false; // Melebihi batas X
    }
    if ($y < 0 || $y >= $hori) {
      return false; // Melebihi batas Y
    }
    if ($chara[$pos] != $find[$level]) { // Huruf di posisi ini salah :D
      return false;
    }
 
    $found = 0;
    if ($arah == 1 || $arah == 99) if (process($x + 1 , $y , $level + 1, $arah)) $found++; // Kanan
    if ($arah == 2 || $arah == 99) if (process($x + 1 , $y + 1, $level + 1, $arah)) $found++; // Kanan Bawah
    if ($arah == 3 || $arah == 99) if (process($x + 1 , $y - 1, $level + 1, $arah)) $found++; // Kanan Atas
    if ($arah == 4 || $arah == 99) if (process($x , $y + 1, $level + 1, $arah)) $found++; // Bawah
    if ($arah == 5 || $arah == 99) if (process($x , $y - 1, $level + 1, $arah)) $found++; // Atas
    if ($arah == 6 || $arah == 99) if (process($x - 1 , $y , $level + 1, $arah)) $found++; // Kiri
    if ($arah == 7 || $arah == 99) if (process($x - 1 , $y + 1, $level + 1, $arah)) $found++; // Kiri Bawah
    if ($arah == 8 || $arah == 99) if (process($x - 1 , $y - 1, $level + 1, $arah)) $found++; // Kiri Atas
 
    if ($found > 0) {
      $warna[$pos] = 1;
      return true;
    }
    else {
      return false;
    }
  }
 
  function cetakHasil() {
    global $warna, $chara, $verti, $hori;
    static $counter = 0;
    if ($counter % 5 == 0 && $counter > 0) echo "</tr><tr>";
    echo "<td style='border: 1px solid #FFCCFF;'><gantijadipre>";
    for ($y = 0 ; $y < $hori ; $y++) {
      for ($x = 0 ; $x < $verti ; $x++) {
        $pos = ($y * $verti) + $x;
        if ($warna[$pos] == 1) {
          echo "<font color='red'>" . $chara[$pos] . "</font>";
        }
        else {
          echo "<font color='black'>" . $chara[$pos] . "</font>";
        }
      }
      echo "\n";
    }
    echo "</gantijadipre></td>";
    $counter++;
    flush();
  }
 
  function resetWarna() {
    global $warna, $verti , $hori;
    for ($y = 0 ; $y < $hori ; $y++) {
      for ($x = 0 ; $x < $verti ; $x++) {
        $pos = ($y * $verti) + $x;
        $warna[$pos] = 0;
      }
    }
  }
 
  for ($a = 0 ; $a < $totalchar ; $a++) {
    if (process($a % $verti , floor($a / $verti) , 0 , 1)) {cetakHasil();resetWarna();};
    if (process($a % $verti , floor($a / $verti) , 0 , 2)) {cetakHasil();resetWarna();};
    if (process($a % $verti , floor($a / $verti) , 0 , 3)) {cetakHasil();resetWarna();};
    if (process($a % $verti , floor($a / $verti) , 0 , 4)) {cetakHasil();resetWarna();};
    if (process($a % $verti , floor($a / $verti) , 0 , 5)) {cetakHasil();resetWarna();};
    if (process($a % $verti , floor($a / $verti) , 0 , 6)) {cetakHasil();resetWarna();};
    if (process($a % $verti , floor($a / $verti) , 0 , 7)) {cetakHasil();resetWarna();};
    if (process($a % $verti , floor($a / $verti) , 0 , 8)) {cetakHasil();resetWarna();};
  }
 
?>
</tr></table>
</body>
</html>
  • Share/Bookmark

programming, web , ,

HTTP Class

January 5th, 2009

Class buat GET dan POST pake PHP, mengsimpelkan pemanggilan ke website laen, bisa buat REST juga

<?
  if (!extension_loaded("curl")) dl("curl.so"); // USed for MWN
 
  function HTTPPost($data , $url , $referer) {
    $ch = curl_init();
    $proxy = getOneProxy();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Set supaya return value nya ke string
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_POST, 1);
//    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
//    curl_setopt($ch, CURLOPT_PROXY, $proxy);
//    echo "Using proxy $proxy\n";
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $retval = curl_exec($ch);
//    echo $retval;
    curl_close($ch);
  }
 
  function HTTPGet($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Set supaya return value nya ke string
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_REFERER, "");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    $retval = curl_exec($ch);
    return $retval;
    curl_close($ch);
  }
 
  function doREST($url, $params) {
    if ($params) {
      foreach($params as $key => $param) {
        $_par[] = "$key=" . urlencode($param);
      }
      $_complete = "?";
      $_complete .= implode("&" , $_par);
    }
    return HTTPGet($url . $_complete);
  }
 
 
 
?>
  • Share/Bookmark

web , , , ,

Database class

January 5th, 2009

Dulu ini gue buat sebelum PHP mempunya Class DB sendiri. Class ini dipake di berbagai project gede juga loh :P huehuehe� tapi sekarang dengan adanya CI, jadi udah engga dipake lagi. Dan juga ada beberapa branch dari script ini sendiri. Teddy (clixie), udah punya branch yang lebih stable dan keren. Yang gue tampilin di sini adalah branchnya gue.

<?
 
/*
   Database Library
   * Ver 1.21 2006/11/20 22:10
     - Pindahin tempat dari $this->debug jadi ke atas
     - ganti connected jadi $this->connected
   * Ver 1.2 02/02/2005 4:19PM
     - Perubahan dari fungsi mysql_db_query ke mysql_query, karena fungsi nya sekarang udah
       deprecated
     - Penambahan paramater pada database constructor
     - Penambahan fungsi fetchIntoArray()
   * Ver 1.1 Lupa
     - Penambahan dumpData() dan dumpSQL()
   * Ver 1.0 14/11/2002 9:15PM
     - Yayy.. fungsi db pertama :D
   Author : Frederick Lasmana
   Email  : rickyok at yahoo dot REMOVE THIS com
*/
 
Class Db {
/*
  Ini adalah constructor dari kelas Db, fungsi ini otomatis akan di jalankan
  Semua setting username dan password untuk ke database diletakkan di sini
*/
  function Db($def_server = "", $def_dbName = "", $def_username = "" , $def_password = "") {
    $__userName = "";   // Isi dengan username database
    $__password = "";   // Isi dengan password database
    $__server = "";    // Isi dengan alamat server database, exp : http://www.dbengine.com/
    $__dbName = ""; // Isi dengan nama database, jika lebih dari satu, buat lah dua buah objek Db
 
    // Di sini buat ganti2 warna yang dipake di fungsi dump
    $this->tableOpen = "<table border='0' cellspacing='1' cellpading='1'>";
    $this->tableClose = "</table>\n";
    $this->trOpen = "<tr>";
    $this->trClose = "</tr>\n";
    $this->tdHeadOpen = "<td bgcolor='#CCCCCC'>";
    $this->tdOpen = "<td bgcolor='#CCFFCC'>";
    $this->tdAlternateOpen = "<td bgcolor='#EEFFEE'>";
    $this->tdClose = "</td>\n";
    $this->showHeader = true;
 
    // Jangan edit code dibawah ini ^^
    $this->userName = ($def_username == "")? $__userName : $def_username;
    $this->password = ($def_password == "")? $__password : $def_password;
    $this->server = ($def_server == "")? $__server : $def_server;
    $this->dbName = ($def_dbName == "")? $__dbName : $def_dbName;
    $this->connected = false;
    $this->debug = true;
    $this->connectDb();
 
  }
/*
  Fungsi ini dipanggil dari constructor, jadi ketika class di buat
  langsung di hubungkan dengan database, fungsi ini sebenernya tidak perlu
  dipanggil
  Contoh pembuatan Class : 
  $db = new Db();
*/
  function connectDb() {
    if ($this->handle = mysql_connect($this->server , $this->userName , $this->password)) {
      $this->connected = true;
      return true;
    }
    else {
    	if ($this->debug) $this->errMsg("Host not found : " . $this->server);
      return false;
    }
  }
/*
  Fungsi untuk menutup koneksi ke database, biasanya di letakkan di bagian
  bawah dari halaman, namun fungsi ini tidak harus dipanggil, karena    	
  php otomatis akan menutup koneksi ketika tidak diperlukan lagi
*/
  function closeDb() {
    mysql_close($this->handle);
    $this->connected = false;
  }
 
/*
  Fungsi ini digunakan untuk memasukan query seperti UPDATE, INSERT, DELETE
  dan semua fungsi-fungsi SQL lain nya.
  Parameter :
    $sql : diisi dengan perintah SQL nya
  Contoh :
    $result = $db->query("SELECT * FROM phonebook");
*/
  function query($sql) {
    mysql_select_db($this->dbName, $this->handle);
    if ($result = mysql_query($sql , $this->handle)) {
    	return $result;
    }
    else {
    	if ($this->debug) $this->errMsg("Cannot execute query $sql on database $this->dbName.");
    	return NULL;
    }
  }
/*
  Fungsi ini digunakan untuk mendapatkan nilai per baris dari query yang
  sudah di lakukan dari fungsi di atas. Fungsi ini akan mengembalikan
  result set jika berhasil dan tidak mengembalikkan pesan ERR jika $result = NULL
  Parameter :
    $result : di isi dengan handler yang di dapat dari query($sql)
  Contoh :
    //Untuk mengambil semua data
    while ($row = $db->fetch($result)) {
    	//lakukan sesuatu di sini
    };
    //Untuk mengambil data pertama
    $row = $db->fetch($result);
*/
  function fetch($result) {
  	if ($result != NULL) {
      return mysql_fetch_array($result);
    }
    else {
    	if ($this->debug) $this->errMsg("You've try to fetch an empty result");
    	return NULL;
    }
  }
 
  // Dump all the data with / without header, use result from query as a input
  function dumpData($result) {
  	if ($result == NULL) {
  		if ($this->debug) $this->errMsg("Cannot dump data, data doesn't exist");
  		return false;
  	}
  	// Display header
	  echo $this->tableOpen; // <table>
  	if ($this->showHeader) {
  	  $fieldLen = mysql_num_fields($result);
  	  echo $this->trOpen;    // <tr>
  	  for ($a = 0 ; $a < $fieldLen ; $a++) {
  	  	echo $this->tdHeadOpen . mysql_field_name($result, $a) . $this->tdClose;
  	  }
  	  echo $this->trClose;
  	}
  	// Display data with 2 color, you can modify the code to make 3 color
  	$rowcount = 0;
  	while($row = mysql_fetch_row($result)) {
  		echo $this->trOpen;
  		foreach($row as $value) {
  			if ($rowcount%2) 
  			  echo $this->tdOpen . $value . $this->tdClose;
  			else
  			  echo $this->tdAlternateOpen . $value . $this->tdClose;
  		}
  		echo $this->trClose;
  		$rowcount++;
  		flush();
  	}
  	echo $this->tableClose;
  }
 
/*
  Fungsi ini digunakan untuk mengambil 1 cell paling kiri atas dari hasil
  query
*/
  function getCell($sql) {
    $result = $this->query($sql);
    if ($this->recordCount($result) > 0)
      return mysql_result($result , 0 , 0);
    else
      return NULL;
  }
 
/*
  Fungsi ini digunakan untuk mengambil semua data dalam bentuk array
  Contoh penggunaan :
 
  $datas = $db->fetchIntoArray($result);
  foreach($datas as $data) {
    echo "Datanya adalah {$data['key']}";
  }
*/  
  function fetchIntoArray($result) {
  	if ($result != NULL) {
      $counter = 0;
      while ($row = mysql_fetch_assoc($result)) {
        if ($row) {
          foreach($row as $key => $data) {
            $temp[$counter][$key] = $data;
          }
        }
        $counter++;
      }
      return $temp;
    }
    else {
    	if ($this->debug) $this->errMsg("You've try to fetch an empty result");
    	return NULL;
    }
  }
 
  function dumpCSV($result) {
  	if ($result == NULL) {
  		if ($this->debug) $this->errMsg("Cannot dump data, data doesn't exist");
  		return false;
  	}
  	// Display header
  	if ($this->showHeader) {
  	  $head = array();
  	  $fieldLen = mysql_num_fields($result);
  	  for ($a = 0 ; $a < $fieldLen ; $a++) {
  	  	$head[] = "\"" . mysql_field_name($result, $a) . "\"";
  	  }
  	  echo implode("," , $head);
  	  echo "\n";
  	}
  	while($row = mysql_fetch_row($result)) {
  	  $col = array();
  		foreach($row as $value) {
  			$value = str_replace('"', '""' , $value);
  			$col[] = "\"" . $value . "\"";
  		}
  	  echo implode("," , $col);
  	  echo "\n";
  	  unset($col);
  		flush();
  	}
  }
 
  // Same function as dumpData, this one use SQL statement as an input
  function dumpSQL($sql) {
  	$this->dumpData($this->query($sql));
  }
/*
  Fungsi-fungsi di bawah ini ditujukan untuk membantu mengisi parameter-parameter
  yang diperlukan untuk masuk ke dalam database. Fungsi ini mungkin tidak
  diperlukan karena semua paramter ini sudah di tentukan ketika Db di buat
*/
  function setServer($server) {
    $this->server = $server;
  }
  function setUserName($uname) {
    $this->userName = $uname;
  }
  function setPassword($pass) {
    $this->password = $pass;
  }
  function setDbName($dbName) {
    $this->dbName = $dbName;
  }
  function isConnected() {
    return $this->connected;
  }
  function debugMode() {
  	$this->debug = true;
  }
  function errMsg($msg) {
  	echo "<script>alert(\"$msg\");</script>";
  }
  // Alias for mysql_num_rows()
  function recordCount($result) {
  	return mysql_num_rows($result);
  }
  // Alias for mysql_affected_rows()
  function rowAffect() {
  	return mysql_affected_rows();
  }
}
 
/*
$db = new Db();
// Contoh query sederhana
$result = $db->query("select * from phonebook");
while($row = $db->fetch($result)) {
  echo $row[1] . "<br>";
}
//*/
 
/*
// Contoh Menggunakan fetchIntoArray
$db = new Db();
$result = $db->query("select * from phonebook");
$datas = $db->fetchIntoArray($result);
foreach($datas as $data) {
  echo $data['name'] . "<br>";
}
//*/
 
 
/*
// Contoh dumpData()
$db = new Db();
$result = $db->query("select p.name 'N a m a', p.phone 'te lp' from phonebook p");
$db->dumpData($result);
$db->dbName = "clixie";
$result = $db->query("select * from rag_item");
$db->dumpData($result);
//*/
 
 
?>
  • Share/Bookmark

web , ,

Samba on Ubuntu

January 5th, 2009

Ada masalah yang timbul pada saat kita mount smbfs ke suatu direktori. Masalah yang akan timbul adalah symbolic link tidak bisa diakses seperti layaknya bila di akses dari Windows. Jika kita membuat symlink ke folder lain (contoh: /opt/lampp/htdocs dan diarahkan ke /home/admin/www/), jika folder admin itu di mount ke Windows, makan pada saat kita klik ‘www’, akan dibuka tanpa masalah, Windows akan mengira symlink itu adalah suatu direktori, dan samba akan otomatis mengeluarkan isi direktori tersebut, ini bukanlah bug tetapi fitur yang sangat baik.

Jika anda mencoba mount folder tersebut dari ubuntu dan klik folder www tersebut, yang terjadi adalah, symlink tetaplah sebuah symlink. Anda akan dibawa ke folder /opt/lampp/htdocs di local anda. Cara pemecahannya adalah:

Tambahkan ini di bagian [globals]

follow symlinks = yes
wide symlinks = yes
unix extensions = no
  • Share/Bookmark

linux, programming , , ,

Switch to our mobile site