Archive

Archive for the ‘web’ Category

WordPress update without FTP

March 14th, 2013

When I want to install upgrade / theme into wordpress, some of my server request me to input FTP connection setting, the others don’t. The problem is, my server don’t have a FTP account.

I’m trying to figure out, what’s the difference in setting, but i cannot find any. Luckily today i found a way to force wordpress NOT using the FTP method.

You just need to edit the wp-config.php. Add this line

define('FS_METHOD' , 'direct');

Reference: http://codex.wordpress.org/Editing_wp-config.php

Share

linux, programming, web

Happy Thanksgiving

November 26th, 2010

This time of year. Time to give thanks for everything that GOD had gave us.

Firstly thank you GOD for giving me strength for enduring this year. This year is full of problem, but I know You will guide me trough all these.

Thank you for all family, friends, for their love and support.

And all these year I use open source programming as my source of income, and never said any thanks. This year, I would like to address a thanks to the following:

- PHP Language. We’ve been together for 10 years now. Thanks for all the updates and security patches from PHP dev Team. Thanks for the easy to understand language.
- Ubuntu Linux. For being a great development OS for last 3 years. Ubuntu server had been installed on all my client.
- Apache Server. Running on all my server.
- MySQL. For keeping open source database for as long I learn database. Very stable and good for small – medium company.
- Komodo Edit. A very nice GUI for coding. Support all the language I use, PHP, SQL, Jquery, etc.
- JQuery. A neat, very fast, easily expandable and beautiful Javascript Framework.
- Bazaar. For keeping my source safe.
- Titanium Developer. New IPhone rapid development framework that I just learned. Very inspirational.

Thank you for the hard work developing these software. Happy Thanks Giving to all.

Share

programming, web, zuru zuru

Twedding

September 29th, 2010

This is our latest Product. Twedding.

You can make something different to your wedding. Your friend would be able to send SMS / Twitter / Facebook Post / Gtalk / and we support almost every Social networking out there.

Here’s some video of my Wedding using the software
YouTube Preview Image

For more info please visit http://www.twedding.com/

Share

web

Facebook photo upload trough Picasa

December 15th, 2009

Do this steps

  1. Install Picasa 3 from http://picasa.google.com
  2. Close all your browser
  3. Open http://apps.facebook.com/picasauploader/
  4. Click the ‘Add’ Button above
  5. And there you have it. A Facebook button on your Picasa. Simple isn’t it
Share

web , ,

Google Public DNS

December 15th, 2009

Google is launch a new service called Public DNS. You can use this everywhere to get a better DNS resolving.

You just have to change your DNS to 8.8.8.8 and secondary DNS to 8.8.4.4

Very useful for Speddy user that got a lot of DNS error these days.

For reference see http://code.google.com/speed/public-dns/

Share

web ,

XREA Anti comment spam & Trackback

August 5th, 2009

XREA (coreserver.jp) punya akses limit buat POST, sehingga kalo post dari IP yang engga di ijinkan akan keluar 403 Forbidden. Lamaaa banget gue cari masalahnya kenapa. Gue pikir masalah dengan script redirect gue, atau masalah dengan .htaccess gue.

Karena susah banget dapetnya nich, gue mencoba berbagi dengan mungkin temen2 yang bakal ngalamin masalah yang sama.

Quote ini diambil langsung dari support forumnya XREA

動的に変わるIPアドレスから 不正な投稿(トラックバック・コメントスパム、掲示板へのスパム目的のPOST処理)があるため、自動的にサーバー側でブロックを掛けさせていただく場合があります。

POST処理のみ拒否される場合は、SSLサーバーを介してアクセスしていただければと存じます。

https://ss1.xrea.com/www.sサーバー名.xrea.com/jp/admin.cgi

または

https://ss2.xrea.com/www.sサーバー名.xrea.com/jp/admin.cgi

もしくは、大変お手数で申し訳ございませんが、「.htaccess」ファイルで

<Limit POST>
order allow,deny
allow from all
</Limit>

として設置していただきますようにお願い申し上げます。

スパム目的のPOSTが多いサーバー、アカウントでは、単位時間あたりのPOST数に制限を設けております。
上記回避設定を行っていただきますと、スパムの影響で正常なPOSTが溢れてしまうことがあります。

「各ユーザー様での自己防衛について」の方法などで、スパムを極力制限していただきますようにお願い申し上げます。

Source : http://sb.xrea.com/showthread.php?p=78426#post78426

Share

linux, programming, web

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

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

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

web , ,

mod_deflate pada Apache

January 5th, 2009

Latar belakang

Browser sekarang ini seperti Opera 9, Firefox 1.5, IE 6 sudah mendukung pengiriman data terkompresi (compressed). Gunanya adalah untuk mempercepat pengiriman data dari web server ke browser. Biasanya kompresi yang digunakan adalah gzip. Kompresi ini tidak disarankan untuk developer ketika membuka websitenya dari local area network, karena speed di dalam LAN itu sendiri sangat cepat, sehingga dengan di tambahkan nya kompresi di server dan dekompresi di bagian client, akan membuat proses sedikit lebih lambat. Tetapi hal ini jika digunakan untuk transfer data antar internet (bahkan dengan koneksi fiber optic sekalipun) akan membuat koneksi lebih cepat sekitar 10 – 30 persen.

Berikut saya akan jelaskan cara merubah setting apache anda supaya menggunakan mod_deflate, sehingga untuk setiap browser yang datang dan bisa menggunakan gzip sebagai metode pengiriman, akan di kirim dengan gzip. Apache mendeteksinya dari header: accept-content: gzip;

Setting Apache

Buat file setting tambahan

Jika anda menggunakan XAMPP sebagai default instalasi file anda, anda akan melihat ada folder /xampp/apache/conf/extra Anda bisa meletakan file baru ini di sana. Saya menggunakan nama file httpd-compress.conf sebagai nama filenya.

Pada CentOS taruh file ini pada /etc/httpd/conf/conf.d/httpd-compress.conf dan config akan dinyalakan otomatis pada startup apache.

Ada dua macam setting mod_deflate.

Kompress semua file yang akan di tranfer

Copy file di bawah ini ke dalam file yang baru saja anda buat

# Insert filter
SetOutputFilter DEFLATE
 
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
 
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
 
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
 
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
 
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary

Kompress file2 tertentu saja

Saya membuat beberapa list di bawah ini , file2 yang biasanya di compress. File2 seperti mp3 dan jpeg akan error biasanya kalo di kompress, sehingga saya hanya kompress file yang bentuknya txt

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/x-httpd-eruby
AddOutputFilterByType DEFLATE text/html

Load file setting tambahan

Pada server windows anda harus menambahkan baris ini pada httpd.conf agar memberitahu apache supaya membaca config dari file lain. Pada CentOS anda dapat melewatkan baris yang ini, karena semua file dalam conf.d akan selalu di load.

# mod-deflate by rickyok
Include conf/extra/httpd-compress.conf

Nyalakan mod_deflate

Dan tentu saja supaya mod itu dapat bekerja, anda harus mengaktifkan terlebih dahulu dengan menghapus tanda # di depan ini. Cari baris di bawah ini di httpd.conf dan harus tanda # di depannya. Jika baris ini tidak ada di httpd.conf anda, kemungkinan besar apache anda belom support mod_deflate secara default. Anda harus compile ulang apache anda, atau download mod_deflate.so atau mod_deflate.dll

LoadModule deflate_module modules/mod_deflate.so

Referensi

Share

programming, web ,

Switch to our mobile site