Archive

Archive for the ‘programming’ Category

Cara Sync dengan FTP

April 14th, 2010

Biasanya sync antara local dengan remote server menggunakan rsync, untuk hasil yang sangat sangat cepat. Tapi ada beberapa kasus dimana kita hanya bisa akses server tersebut menggunakan FTP. Bisa aja menggunakan FTP client biasa seperti Filezilla atau sejenisnya. Tetapi untuk orang malas seperti saya, itu sangat membuang waktu.

Sehingga setelah mencari2 via om Google tentang gimana cara sync dengan FTP. Ketemu 1 program bagus. Namanya lftp. FTP client yang bisa di program (atau di setting utk mirror). Program ini bahkan udah included dalam instalasi ubuntu standard, tinggal dipake aja.

Berikut contoh sample bash file untuk auto sync.

#!/bin/bash    
HOST="hostanda.com"
USER="useranda"
PASS="passanda"
LCD="/home/local/directory/"
RCD="/home/remote/directory/"
lftp -c "set ftp:list-options -a;
open ftp://$USER:$PASS@$HOST; 
lcd $LCD;
cd $RCD;
mirror --reverse \
       --delete \
       --verbose \
       --exclude-glob config/ \
       --exclude-glob .htaccess \
       --exclude-glob index.php"

Terakhri tinggal di setting di bagian –exclude-glob untuk setting2 file yang harus di exclude dalam sync. Bisa berupa file, direktori, dan support wildcard * dan ?

Semoga membantu

  • Share/Bookmark

linux, programming , ,

DynDNS di Ubuntu

March 30th, 2010

DynDNS adalah salah satu solusi gratis untuk mendapatkan domain untuk dynamic IP.

Contoh jika anda menjalankan web server / game server, tapi menggunakan koneksi Speedy dibawah game (tidak dapat IP Statik), maka anda memerlukan salah satu service untuk membuat IP 123.133.312.23 menjadi sesuatu.game-hosts.com atau domain lainnya. Karena semua orang pasti tidak mao menghafal IP

Cara install di ubuntu sangat mudah

sudo apt-get install ddclient

Lalu akan ditanya semua informasi tentang host anda, silahkan di isi. Biasanya sih cukup ini saja yang perlu anda lakukan. Tapi kalo webserver anda berada di belakang lan, dan tidak mempunyai IP public. Maka anda harus merubah lagi setting nya menjadi seperti ini

sudo nano /etc/ddclient.conf

Tambakan waktu update, saya mengupdate 1 jam sekali saja. Tambahkan baris ini

daemon=3600

Jalankan dengan mode SSL, jadi tambahkan baris ini

ssl=yes

Ganti baris ini

use=if, if=eth0

Menjadi

use=web, web=checkip.dyndns.com/, web-skip='IP Address'

Supaya dia ambil dari website nya dyndns buat check ip terbaru. Bukan dari IP yang tertera di eth0.

Kalo udah silahkan check apakah config sudah berjalan dengan benar, dengan perintah

sudo ddclient -daemon=0 -debug -verbose -noquiet
  • Share/Bookmark

linux, programming

Perintah Find

January 7th, 2010

Perintah find di linux punya banyak sekali kegunaan. Selama ini gue cuma bisa pake nya seperti ini

find . | grep namafile

buat nyari nama file tertentu… Rupanya cara pake yang bener bukan begitu saudara :P yang bener itu

find -name namafile
find -name "pake*jugabisa"

bisa juga khusus nyari directory seperti

find -type d

nyari file

find -type f

digabung2 jadi

find -type f -name "rick*"

yang lebih keren lagi bisa execute perintah untuk setiap path yang ditemukan. misalnya hapus semua file jpg

find -type f -name "*.jpg" -exec rm {} \;

atau ini yang baru saja gue buat untuk update semua bzr di repository

find -type d -maxdepth 1 -exec bzr update {} \;

Banyak banget pengunaan nya dan sangat berguna ^^

  • Share/Bookmark

linux, programming

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/Bookmark

linux, programming, web

Tips buat atasin LIMIT di subquery

August 4th, 2009

Bagi yang sering otak-atik MySQL dan bermain-main dengan subquery pasti pernah ketemu dengan pesan error ini dech.

This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery’

Tadi kebetulan ada temen saya yang tanya. Eh Gimana sih keluarin data 5 tertinggi dari 50 data yang gue random? Pertama gue jawab-in bahwa query nya seperti ini

SELECT * FROM a WHERE a_id IN (
SELECT a_id FROM a ORDER BY RAND() LIMIT 50
) ORDER BY a_value DESC LIMIT 5

Terus gue bilang, bahwa “saat ini versi MySQL belom ada yang bisa begitu”. Terus setelah dia cari2, rupanya bisa diakal2in seperti ini :

SELECT * FROM (
SELECT * FROM a ORDER BY RAND() LIMIT 50
) ORDER BY t_value DESC LIMIT 5

Semoga membantu.

Credits goes to @xtian

  • Share/Bookmark

programming

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

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 , ,

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 , , ,

Setting untuk printer Epson seri TM

January 5th, 2009

Cara init printer ala Frederick

  1. Matikan printer
  2. Tahan tombol Feed, terus nyalakan printer
  3. Pas udah kelar , pencet lagi feed sekali sampe keluar semua halamannya
  4. Baru pencet PUSH BUTTON ditempat lan sekali lagi
  5. Liat setting an di kertas, set ulang printer, baru bisa ngeprint

Update: Cara di atas itu cara bego kalo salah setting DIP switch. Sekarang udah bisa benerin DIP switch nya ^^. Silahkan liat bagian cheatsheet untuk keterangan lebih lanjut.

Set control font

Ada di folder ini nich

C:\WINDOWS\system32\spool\prtprocs\w32x86

Set dulu code2 aneh di situ baru bisa dipake ControlA font buat controlnya.

Referensi

  • Share/Bookmark

programming ,

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/Bookmark

programming, web ,

Switch to our mobile site