Wednesday, November 09, 2005

GnuGK dan FreeBSD

Saya install FreeBSD 5.4, rencananya mau dibuat gatekeeper pake gnugk, karena masih blum membaca porter handbook secara keseluruhan sudah barang tentu saya mengalami kesulitan dengan versi terbarunya. Karena pusing, udah deh kita install secara manual.

Pertama-tama kita ambil dulu file-file yang kita butuhkan.

# mkdir /usr/home/gnugk
# wget http://jaist.dl.sourceforge.net/sourceforge/openh323/pwlib-v1_9_1-src-tar.gz
# wget http://internap.dl.sourceforge.net/sourceforge/openh323/openh323-v1_17_2-src-tar.gz
# wget http://umn.dl.sourceforge.net/sourceforge/openh323gk/gnugk-2.2.2.tar.gz

Setelah semua selesai di download kita lanjutkan dengan meng-extract nya

# tar -xvf pwlib-v1_9_1-src-tar.gz

BELUM SELESAI

Domain SYARIFL.com bikin Sport Jantung

Beberapa hari ini saya sport jantung, pasalnya domain syarifl.com milik saya mau habis, mana sekarang orang lagi pada, hari raya lagi... Untungnya domain tersebut bisa diperpanjang tepat di detik-detik terakhir... Whew... akhirnya setahun lagi tuh domain diperpanjang... Thanks to hosting company...

Thursday, November 03, 2005

Friday, August 26, 2005

Film-film Unggulan Hollywood (Joke)

Berikut ini daftar film-film unggulan Hollywood (in Javanese):

  1. Enemy at the gates -- Musuhe Wis Tekan Gapuro
  2. Batman Forever -- Ngembat Saklawase
  3. Remember the Titans -- Kelingan Titan-titan
  4. The Italian Job -- Gaweane Wong Ngerum
  5. Die Hard -- Matine Angel
  6. Die Hard II -- Matine Angel Tenan
  7. Die Hard III With A Vengeance -- Kowe Kok Ra Mati2 To?
  8. Bad Boys -- Bocah-bocah Uelek
  9. Sleepless in Seattle -- Klesikan neng Seattle
  10. Lost in Space -- Ilang Neng Awang-awang
  11. X-Men -- Wong Lanang Saru
  12. X-Men 2 -- Wong Lanang Saru Banget
  13. X-Men 3 (Belum dirilis) -- Aming
  14. Cheaper by Dozen -- Tumbas Selusin Langkung Mirah
  15. The Cooler -- Selot Adem
  16. Paycheck -- Kasbon
  17. Independence Day -- Pitulasan
  18. The Day After Tomorrow -- Sesuke
  19. Die Another Day -- Modare Ojo Saiki
  20. There is Something About Marry -- Meri Ono Apa-apane
  21. Silence of the Lamb -- Wedhuse Mutung
  22. All The Pretty Horses -- Jarane Ayu2 (aka Legenda Pasar Kewan Mbahrowo)
  23. Planet of the Apes -- Planete Wong Apes
  24. Gone in Sixty Second -- Minggat Sakcepete
  25. Original Sin -- Dosa Tenanan
  26. Mummy Returns -- Mami-mami podo Mudik
  27. The Abyss -- Entek-entekan
  28. Copycat -- Kopi Kucing (nggo konco Sego Kucing)
  29. Seabiscuit -- Klethikan Neng Laut
  30. Freddy vs Jason -- Kerah
  31. Terminator -- Terminal Montor
  32. Air Bud -- Banyu J**Bud
  33. How To Lose A Guy in 10 Days -- Piye Carane Megat Lanangan mung 10 Dino
  34. Lord Of The Ring -- pedagang akik...
  35. Deep Impact -- Ngantem Njero
  36. Million Dollar Baby -- Genjik Regone Sayuto
  37. Blackhawk Down -- Manuk ireng kenek bedhil
  38. Saving Private Ryan -- Ngelesi privat Mas Rian (pancene gobol tenan opo?)
  39. Dumb and Dumber -- Wong Goblok lan guoooblok tenan

Disadur dari milis, entah siapa yang bikin?

Tuesday, August 02, 2005

Selebriti dan Ulang Tahun di Cafe

Beberapa waktu terakhir ini kebetulan saya nonton tayangan infotainment. Nah, sehubungan dengan pengangkatan Kapolri baru, maka pihak kepolisian gencar-gencarnya melaksanakan razia narkoba. Nah, karena memang operasi dilakukan di klab malam (night club) yang ternyata terjaring juga selebritis kita disana. Saya nggak mau komentar tentang mereka pake narkoba ato tidak, tapi coba perhatikan jawaban mereka saat ditanya wartawan "Ngapain disini?" pasti jawabannya: "Menghadiri ulang tahun teman". Entah bener... Entah nggak? Kok setiap ditanya pasti jawabannya Ultah? Mbok jujur saja: "Dugem" khan malah enak dengernya...

Wednesday, June 22, 2005

Sirene

Semalem aku pulang kerumah, jalan seperti biasa, dari arah Manggarai di jalan Tambak, mbelok kekanan kearah jalan Pramuka. Lagi asyik-asyik jalan, eeh ada suara sirene dan lampu kelap-kelip, khan aku kira polisi jadi minggirlah aku...

Nah, ternyata, suara sirene dan lampu kelap-kelip itu bukan polisi atau pihak berwajib lainnya melainkan sebuah mobil plat hitam Opel Blazer... Wah, ngapain tuh orang belagak seperti Polisi?

Menurut saya, perilaku seperti ini dapat menimbulkan kerancuan antara Polisi yang beneran sama polisi-polisian. Kita sebagai rakyat biasa tentunya nggak sempet sampe harus neliti-neliti segala. Kita mengenali itu polisi atau bukan hanya dari visualnya saja, plus dari suara sirene tentunya. Jadi perilaku ini sama halnya seperti 'serigala berbulu domba' alias 'casingnya beda dengan isinya'.

Saturday, June 11, 2005

Hebatnya Orang Jogja (Joke)

Saya punya pengalaman tentang kehebatan orang Yogya. Sewaktu kami serombongan peninjau keraton Yogya, kami melihat seorang kusir delman tua sedang jongkok baru membersihkan kotoran kudanya, karena saya tidak pakai arloji, saya iseng tanya sama pak tua itu, "Pak sekarang pukul berapa?"

Dengan santainya ia pegang biji kemaluan kudanya lalu digeser sedikit ke kiri lalu ia menjawab "Sekarang pukul setengah dua belas siang". Sambil nyengir dan tertawa setengah tidak percaya saya kembali ke rombongan dan bertanya jam pada salah satu rekan, ternyata benar saat itu jam setengah dua belas. Wah hebat benar orang itu pikir saya, masak hanya dengan menggoyang biji kemaluan kuda dia tahu waktu.

Saya lantas cerita kepada rombongan dan kita beramai-ramai kembali ke bapak kusir tadi karena penasaran. Sebelum bertanya kami melihat jam saat itu pukul 12.00. "Sekarang jam berapa ya pak?" tanya kami. Kusir itu kembali memegang biji kemaluan kudanya lalu digeser sedikit dan dia bilang "Sekarang jam 12 pas", spontan saat itu kami kaget dan langsung bertanya "Wah bapak hebat!! Hanya dengan pegang biji kemaluan kuda terus digeser sedikit bapak bisa tahu waktu?". Dia menjawab "La kepiye to mas... Apa mas ndak tau di sana kan ada jam gede, dari sini ketutupan biji kemaluan kuda saya, makanya waktu mas nanya saya mesti menggeser anu kuda saya biar kelihatan jam berapa..." Gitu toh...

Walaaah... pak... pak..., tobat tenan...

Sunday, June 05, 2005

Test: HTML Tag Code

Nyobain pake html tag code hasilnya gimana ya?
unit MainUnit;

interface

uses
 Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, dxDockControl, ImgList, dxBar, dxBarExtItems, Menus, dxsbar,
 ComStyUnit, ActnList, DB, DBTables, syStack, cxGraphics, cxControls,
 dxStatusBar, ShellApi, Windows, ExtCtrls,  StdCtrls, GradCaption,
 cxButtons, jpeg, BaseMain, BaseForm;

Dhini Aminarti

Dhini Aminarti Posted by Hello

Gadis ini cakep ya... Sampe nggak kuat gua nahan keinginan posting disini...

SendKeys routine for 32-bit Delphi

(* SendKeys routine for 32-bit Delphi.

Written by Ken Henderson

Copyright (c) 1995 Ken Henderson email:khen@compuserve.com

This unit includes two routines that simulate popular Visual Basic routines: Sendkeys and AppActivate. SendKeys takes a PChar as its first parameter and a boolean as its second, like so:

SendKeys('KeyString', Wait);

where KeyString is a string of key names and modifiers that you want to send to the current input focus and Wait is a boolean variable or value that indicates whether SendKeys should wait for each key message to be processed before proceeding. See the table below for more information.

AppActivate also takes a PChar as its only parameter, like so:

AppActivate('WindowName');

where WindowName is the name of the window that you want to make the current input focus.

SendKeys supports the Visual Basic SendKeys syntax, as documented below.

Supported modifiers:

+ = Shift ^ = Control % = Alt

Surround sequences of characters or key names with parentheses in order to modify them as a group. For example, '+abc' shifts only 'a', while '+(abc)' shifts all three characters.

Supported special characters

~ = Enter ( = begin modifier group (see above) ) = end modifier group (see above) { = begin key name text (see below) } = end key name text (see below)

Supported characters:

Any character that can be typed is supported. Surround the modifier keys listed above with braces in order to send as normal text.

Supported key names (surround these with braces):

BKSP, BS, BACKSPACE BREAK CAPSLOCK CLEAR DEL DELETE DOWN END ENTER ESC ESCAPE F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 HELP HOME INS LEFT NUMLOCK PGDN PGUP PRTSC RIGHT SCROLLLOCK TAB UP

Follow the keyname with a space and a number to send the specified key a given number of times (e.g., {left 6}). *)

unit SendKeys32;

interface

Uses SysUtils, Windows, Messages;

Function SendKeys(SendKeysString : PChar; Wait : Boolean) : Boolean; function AppActivate(WindowName : PChar) : boolean;

{Buffer for working with PChar's}

const WorkBufLen = 40; var WorkBuf : array[0..WorkBufLen] of Char;

implementation type THKeys = array[0..pred(MaxLongInt)] of byte; var AllocationSize : integer;

(* Converts a string of characters and key names to keyboard events and passes them to Windows.

Example syntax:

SendKeys('abc123{left}{left}{left}def{end}456{left 6}ghi{end}789', True);

*)

(* -- by Heri Setyono -- Sample : Sending key TAB when user press ENTER key, procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then SendKeys('{TAB}', False); end;

Sending key END when Edit Box got focus, procedure TForm1.Edit2Enter(Sender: TObject); begin SendKeys('{END}', False); end;

Sending key CTRL SHIFT END when Edit Box got focus, procedure TForm1.Edit2Enter(Sender: TObject); begin SendKeys('^+{END}', False); end; *)

Function SendKeys(SendKeysString : PChar; Wait : Boolean) : Boolean; type WBytes = array[0..pred(SizeOf(Word))] of Byte;

TSendKey = record Name : ShortString; VKey : Byte; end;

const {Array of keys that SendKeys recognizes.

If you add to this list, you must be sure to keep it sorted alphabetically by Name because a binary search routine is used to scan it.}

MaxSendKeyRecs = 41; SendKeyRecs : array[1..MaxSendKeyRecs] of TSendKey = ( (Name:'BKSP'; VKey:VK_BACK), (Name:'BS'; VKey:VK_BACK), (Name:'BACKSPACE'; VKey:VK_BACK), (Name:'BREAK'; VKey:VK_CANCEL), (Name:'CAPSLOCK'; VKey:VK_CAPITAL), (Name:'CLEAR'; VKey:VK_CLEAR), (Name:'DEL'; VKey:VK_DELETE), (Name:'DELETE'; VKey:VK_DELETE), (Name:'DOWN'; VKey:VK_DOWN), (Name:'END'; VKey:VK_END), (Name:'ENTER'; VKey:VK_RETURN), (Name:'ESC'; VKey:VK_ESCAPE), (Name:'ESCAPE'; VKey:VK_ESCAPE), (Name:'F1'; VKey:VK_F1), (Name:'F10'; VKey:VK_F10), (Name:'F11'; VKey:VK_F11), (Name:'F12'; VKey:VK_F12), (Name:'F13'; VKey:VK_F13), (Name:'F14'; VKey:VK_F14), (Name:'F15'; VKey:VK_F15), (Name:'F16'; VKey:VK_F16), (Name:'F2'; VKey:VK_F2), (Name:'F3'; VKey:VK_F3), (Name:'F4'; VKey:VK_F4), (Name:'F5'; VKey:VK_F5), (Name:'F6'; VKey:VK_F6), (Name:'F7'; VKey:VK_F7), (Name:'F8'; VKey:VK_F8), (Name:'F9'; VKey:VK_F9), (Name:'HELP'; VKey:VK_HELP), (Name:'HOME'; VKey:VK_HOME), (Name:'INS'; VKey:VK_INSERT), (Name:'LEFT'; VKey:VK_LEFT), (Name:'NUMLOCK'; VKey:VK_NUMLOCK), (Name:'PGDN'; VKey:VK_NEXT), (Name:'PGUP'; VKey:VK_PRIOR), (Name:'PRTSC'; VKey:VK_PRINT), (Name:'RIGHT'; VKey:VK_RIGHT), (Name:'SCROLLLOCK'; VKey:VK_SCROLL), (Name:'TAB'; VKey:VK_TAB), (Name:'UP'; VKey:VK_UP) );

{Extra VK constants missing from Delphi's Windows API interface} VK_NULL=0; VK_SemiColon=186; VK_Equal=187; VK_Comma=188; VK_Minus=189; VK_Period=190; VK_Slash=191; VK_BackQuote=192; VK_LeftBracket=219; VK_BackSlash=220; VK_RightBracket=221; VK_Quote=222; VK_Last=VK_Quote;

ExtendedVKeys : set of byte = [VK_Up, VK_Down, VK_Left, VK_Right, VK_Home, VK_End, VK_Prior, {PgUp} VK_Next, {PgDn} VK_Insert, VK_Delete];

const INVALIDKEY = $FFFF {Unsigned -1}; VKKEYSCANSHIFTON = $01; VKKEYSCANCTRLON = $02; VKKEYSCANALTON = $04; UNITNAME = 'SendKeys'; var UsingParens, ShiftDown, ControlDown, AltDown, FoundClose : Boolean; PosSpace : Byte; I, L : Integer; NumTimes, MKey : Word; KeyString : String[20];

procedure DisplayMessage(Message : PChar); begin MessageBox(0,Message,UNITNAME,0); end;

function BitSet(BitTable, BitMask : Byte) : Boolean; begin Result:=ByteBool(BitTable and BitMask); end;

procedure SetBit(var BitTable : Byte; BitMask : Byte); begin BitTable:=BitTable or Bitmask; end;

procedure KeyboardEvent(VKey, ScanCode : Byte; Flags : Longint); var KeyboardMsg : TMsg; begin keybd_event(VKey, ScanCode, Flags,0); If (Wait) then While (PeekMessage(KeyboardMsg,0,WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)) do begin TranslateMessage(KeyboardMsg); DispatchMessage(KeyboardMsg); end; end;

procedure SendKeyDown(VKey: Byte; NumTimes : Word; GenUpMsg : Boolean); var Cnt : Word; ScanCode : Byte; NumState : Boolean; KeyBoardState : TKeyboardState; begin If (VKey=VK_NUMLOCK) then begin NumState:=ByteBool(GetKeyState(VK_NUMLOCK) and 1); GetKeyBoardState(KeyBoardState); If NumState then KeyBoardState[VK_NUMLOCK]:=(KeyBoardState[VK_NUMLOCK] and not 1) else KeyBoardState[VK_NUMLOCK]:=(KeyBoardState[VK_NUMLOCK] or 1); SetKeyBoardState(KeyBoardState); exit; end;

ScanCode:=Lo(MapVirtualKey(VKey,0)); For Cnt:=1 to NumTimes do If (VKey in ExtendedVKeys)then begin KeyboardEvent(VKey, ScanCode, KEYEVENTF_EXTENDEDKEY); If (GenUpMsg) then KeyboardEvent(VKey, ScanCode, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP) end else begin KeyboardEvent(VKey, ScanCode, 0); If (GenUpMsg) then KeyboardEvent(VKey, ScanCode, KEYEVENTF_KEYUP); end; end;

procedure SendKeyUp(VKey: Byte); var ScanCode : Byte; begin ScanCode:=Lo(MapVirtualKey(VKey,0)); If (VKey in ExtendedVKeys)then KeyboardEvent(VKey, ScanCode, KEYEVENTF_EXTENDEDKEY and KEYEVENTF_KEYUP) else KeyboardEvent(VKey, ScanCode, KEYEVENTF_KEYUP); end;

procedure SendKey(MKey: Word; NumTimes : Word; GenDownMsg : Boolean); begin If (BitSet(Hi(MKey),VKKEYSCANSHIFTON)) then SendKeyDown(VK_SHIFT,1,False); If (BitSet(Hi(MKey),VKKEYSCANCTRLON)) then SendKeyDown(VK_CONTROL,1,False); If (BitSet(Hi(MKey),VKKEYSCANALTON)) then SendKeyDown(VK_MENU,1,False); SendKeyDown(Lo(MKey), NumTimes, GenDownMsg); If (BitSet(Hi(MKey),VKKEYSCANSHIFTON)) then SendKeyUp(VK_SHIFT); If (BitSet(Hi(MKey),VKKEYSCANCTRLON)) then SendKeyUp(VK_CONTROL); If (BitSet(Hi(MKey),VKKEYSCANALTON)) then SendKeyUp(VK_MENU); end;

{Implements a simple binary search to locate special key name strings}

function StringToVKey(KeyString : ShortString) : Word; var Found, Collided : Boolean; Bottom, Top, Middle : Byte; begin Result:=INVALIDKEY; Bottom:=1; Top:=MaxSendKeyRecs; Found:=false; Middle:=(Bottom+Top) div 2; Repeat Collided:=((Bottom=Middle) or (Top=Middle)); If (KeyString=SendKeyRecs[Middle].Name) then begin Found:=True; Result:=SendKeyRecs[Middle].VKey; end else begin If (KeyString>SendKeyRecs[Middle].Name) then Bottom:=Middle else Top:=Middle; Middle:=(Succ(Bottom+Top)) div 2; end; Until (Found or Collided); If (Result=INVALIDKEY) then DisplayMessage('Invalid Key Name'); end;

procedure PopUpShiftKeys; begin If (not UsingParens) then begin If ShiftDown then SendKeyUp(VK_SHIFT); If ControlDown then SendKeyUp(VK_CONTROL); If AltDown then SendKeyUp(VK_MENU); ShiftDown:=false; ControlDown:=false; AltDown:=false; end; end;

begin AllocationSize:=MaxInt; Result:=false; UsingParens:=false; ShiftDown:=false; ControlDown:=false; AltDown:=false; I:=0; L:=StrLen(SendKeysString); If (L>AllocationSize) then L:=AllocationSize; If (L=0) then Exit;

while (I<L) do begin case SendKeysString[I] of '(' : begin UsingParens:=True; Inc(I); end; ')' : begin UsingParens:=False; PopUpShiftKeys; Inc(I); end; '%' : begin AltDown:=True; SendKeyDown(VK_MENU,1,False); Inc(I); end; '+' : begin ShiftDown:=True; SendKeyDown(VK_SHIFT,1,False); Inc(I); end; '^' : begin ControlDown:=True; SendKeyDown(VK_CONTROL,1,False); Inc(I); end; '{' : begin NumTimes:=1; If (SendKeysString[Succ(I)]='{') then begin MKey:=VK_LEFTBRACKET; SetBit(Wbytes(MKey)[1],VKKEYSCANSHIFTON); SendKey(MKey,1,True); PopUpShiftKeys; Inc(I,3); Continue; end; KeyString:=''; FoundClose:=False; while (I<=L) do begin Inc(I); If (SendKeysString[I]='}') then begin FoundClose:=True; Inc(I); Break; end; KeyString:=KeyString+Upcase(SendKeysString[I]); end; If (Not FoundClose) then begin DisplayMessage('No Close'); Exit; end; If (SendKeysString[I]='}') then begin MKey:=VK_RIGHTBRACKET; SetBit(Wbytes(MKey)[1],VKKEYSCANSHIFTON); SendKey(MKey,1,True); PopUpShiftKeys; Inc(I); Continue; end; PosSpace:=Pos(' ',KeyString); If (PosSpace<>0) then begin NumTimes:=StrToInt(Copy(KeyString,Succ(PosSpace),Length(KeyString)-PosSpace)); KeyString:=Copy(KeyString,1,Pred(PosSpace)); end; If (Length(KeyString)=1) then MKey:=vkKeyScan(KeyString[1]) else MKey:=StringToVKey(KeyString); If (MKey<>INVALIDKEY) then begin SendKey(MKey,NumTimes,True); PopUpShiftKeys; Continue; end; end; '~' : begin SendKeyDown(VK_RETURN,1,True); PopUpShiftKeys; Inc(I); end; else begin MKey:=vkKeyScan(SendKeysString[I]); If (MKey<>INVALIDKEY) then begin SendKey(MKey,1,True); PopUpShiftKeys; end else DisplayMessage('Invalid KeyName'); Inc(I); end; end; end; Result:=true; PopUpShiftKeys; end;

{AppActivate

This is used to set the current input focus to a given window using its name. This is especially useful for ensuring a window is active before sending it input messages using the SendKeys function. You can specify a window's name in its entirety, or only portion of it, beginning from the left.

}

var WindowHandle : HWND;

function EnumWindowsProc(WHandle: HWND; lParam: LPARAM): BOOL; export; stdcall; const MAX_WINDOW_NAME_LEN = 80; var WindowName : array[0..MAX_WINDOW_NAME_LEN] of char; begin {Can't test GetWindowText's return value since some windows don't have a title} GetWindowText(WHandle,WindowName,MAX_WINDOW_NAME_LEN); Result := (StrLIComp(WindowName,PChar(lParam), StrLen(PChar(lParam))) <> 0); If (not Result) then WindowHandle:=WHandle; end;

function AppActivate(WindowName : PChar) : boolean; begin try Result:=true; WindowHandle:=FindWindow(nil,WindowName); If (WindowHandle=0) then EnumWindows(@EnumWindowsProc,Integer(PChar(WindowName))); If (WindowHandle<>0) then begin SendMessage(WindowHandle, WM_SYSCOMMAND, SC_HOTKEY, WindowHandle); SendMessage(WindowHandle, WM_SYSCOMMAND, SC_RESTORE, WindowHandle); end else Result:=false; except on Exception do Result:=false; end; end;

end.

Sunday, April 03, 2005