Tuesday, June 20, 2006

Opera 9

Navegre.
Megjelent az Opera 9 release valtozata.
Lehet upgradelni a betakat.

Monday, June 19, 2006

Vista meg a kszzammel

Mar vagy egy hete itt pihen a vista beta dvd isoja de nem tudtam kiprobalni azon egyszeru ok miatt hogy nem volt egy ures dvdm. Tegnap ez a problema is elharult, igy mar csak az install hibauzenetet kellett megfejteni hogy semmi se allhasson utamba.
Kovetkezot irta miutan kapott egy 30G-s ntfsre formazott particiot.

"windows is unable to find a system volume that meets its criteria for installation"

Google-vel taltam jobbnal jobb 5leteket. Pl huzzak le rola mindent, keyboardot, egeret stb-t. Masik kedvencem h probaljam meg 2x-esen kiirni a dvdt. (ahahah 1hetet vartam mire lett egy dvd-m) Termeszetesen egyiket se probaltam ki mert mar onmagukban nevetsegesek. A problemat valojaban az okozta hogy a grub nem jelolte ki aktivra a bootolando particiot hanem folyamatosan a sol-os particonak volt beallitva a bootflag. Gyorsan orvosoltam, dd (wines), mbr beolvas 512 meretu fileba, vistas partico offsetje megkeres, 0x80 bootflaghez beiir, (a masiknal 0x00), dd visszair. Tudom hogy lehet ezt egyszerubben is :)
Igy mar rogton eltunt a hibauzenet es szepen elkezdte pakolni az egy dvdnyi anyagot.
Install kozbe tobbszor is rebootolgatott, a vegen pedig letrehozatott velem egy usert. A loginScreen egyebkent tokszep meg ugy altalaban minden eleg designos, max az volt illuiziorombolo amikor ugyanaz a ezereves bejelentkezo zene csendult fel
belepesnel. Az mbr-t termeszetesen szo nelkul hazavagta, lecserelte sajat bootmanagerere. Igy vissza kellett pakolni a sajatot hogy tudjak xpt is bootolni. Na es ezutan tortent az erdekes dolog, miutan visszaraktam az mbr-be az enyemet,
es az xp es a sol rendesen bootolt, a vista viszont mar nem. Megprobaltam grubbal, ugyanugy nem volt jo. Bejott a win bootloadere kiirt hogy vmi winloadert nem talal es annyi. DVD-rol recovery console viszont felajanlott vmi 'automatikus javitast'. Az ilyeneket nagyon szeretem mert fogalmam sincs mit csinal, szep lett volna ha megint leszedi a bootmanagert. De nem, minden maradt a regi viszont mar tudott bootolni a vista grubbal es bootmanageremmel is.
Elso eszrevetel az hogy securitys dolgokra nagyobb hangsulyt fektettek. Pl netbeans fel se tudtam rakni mert az installnak, adminkent futtatva se volt semmilyen fileirasi joga :). Nem tudom kinek a hibajabol. A totcom install pedig valamiert el se indult. Ugyhogy ragework-ot hasznaltam. 64bites jse tigert tettem fel, es most derult ki szamomra hogy ebben nincs webstart tamogatas, ugyhogy a 32bites
webstartot kulon kellett felrakni. Vegyesen mentek a 64 es 32bites progik, van kulon 'program fils(32)' es 64, mint a 64es xp nel is. Semmi fele teljesitmenybeli problema nem volt, ugyment kb minden mint xpn.
Noh de terjunk ra, avalon, winfx, xaml es hasonlo buvszavakra. Eleg nehezen tudok eligazodni mar ezek kozott mert .netes hireket nem nagyon kovettem ujabban figyelemmel.
Avalon ha joltudom az uj generacios UI framework ami d3d-t hasznal(hat) rendereleshez. XAML pedig egy xml alapu 'ui' leiro nyelv alkalmazasokhoz,
amivel a guit tervezhetjuk meg ugy hogy egy single line C# kodot nem kell leirni. WinFS-rol is beszeltek annakidelyen de ilyen ugytudom meg nem kerult bele.
Letoltottem a legujabb IronPythont mert annak az egyik screencastjaba lattam egy XAML-es demot. Egy szamologep guija volt leirva xaml-be, minden gombnak kulon abszolut koordinatakkal. Gondlom van layout lehetoseg is,
de szamologep tipikusan az amit anelkul is meg lehet csinalni. Szoval a demo jol mukodott par sor koddal meg lehetett jeleniteni az xaml-bol felepitett
ablakot. Ez egy kifejezetten jo otlet szerintem a guibuilderek szempontjabol is, mert nem kodot kell generalniuk hanem csak egy xmlt. Javaba SwiXML neven
ismerhetunk hasonlo elven mukodo frameworkot. (meg meg lattam mast is de annak nem jut a neve eszembe).
Javaeknak is belekene huzniuk, mert desktop oldalon .net mar a kezdetektol elorebb jart, es ugynezki egyre csak jobb lesz.
Igaz azis hogy a .net a tudasa foleg egy platform kornyekere koncentralodik, illetve hogy szerveroldalon teljesen mas szempontok szamitanak.





Ami a legjobb ebbe a vista dologba hogy elvileg a win32apit felejthetjuk el es kapunk egy annal sokkal magasabb szintu .net apit. Igy remelhetoleg
nem csak a userek orulhetnek majd az uj oprendszernek es a desingos featureinek, hanem a fejlesztoknek is jobb dolguk lesz :].

Tuesday, June 13, 2006

PyHook

Az utobbi egy honapban 2x kellett kicserelni a ramot a desk gepben, es meg mindig nem jo valami mert idonkent ugy random BSODzik vmitol. Eleg idegesito gepeles kozben ha elszall es kezheti elorol (legalabbis legutobbi mentestol) az ember. Ugyhogy elhataroztam h amig ez a problema fennall, rakok egy keyloggert sajat gepre. Vagyis, inkabb irni jobb lenne. Regebben csinaltam keyboard hook alapjan mukodo progit cpp/winapival de most inkabb a konnyebb utat valasztottam. A PyHook egy thirdparty lib pythonhoz amivel meglehetosen egyszeruen hookolhatjuk az egeret/billentyuzetet. Egy hookmanagert kell letrehozni, beallitani egy eventet, es aktivalni a hookot. 3sor. A callbackben pedig szepen megkapjuk a lenyomott bill kodjat, a forras ablak handlejet, titlejet, a leutes idejet.. stb. Persze az egesz win alatt muxik mert nativ win32apis hivasokat (SetWindowsHook) wrappel. De hat nekem pont ez kell.


>>> import pyHook, pythoncom
>>> def kbproc( evt ): print evt.Ascii
...
>>> hm = pyHook.HookManager()
>>> hm.KeyDown = kbproc
>>> hm.HookKeyboard()
>>> pythoncom.PumpMessages()


Egy olyasmit akarok ami kategoriazalja a logot a forras app-tol fuggoen. Szoval kulon logolja azt amit a bongeszobe irok, kulon azt amit az editor, es mondjuk nem logolja azt amit az irckliensbe.
Mivel az eventbol kiolvashato az ablak handleje ami eppen aktiv volt a billentyuzet leutes pillanataban ez eleg egyszeruen megoldhato. A handle alapjan az hozza tartozo app pid-jet kell meghatarozni, az alapjan pedig le lehet kerdezni a program nevet. (GetModuleFileName)

Ime a prototipus:


def getProcNameByPID( pid ):
h = None
try:
h = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid)
return os.path.basename( win32process.GetModuleFileNameEx( h, 0 ) )
finally:
if h: h.Close()


Ja, es a pidet az ablak handle-bol pedig igy kaptam meg:


win32process.GetWindowThreadProcessId( evt.Window )[1]


A keyboard proc pedig a kovetkezo:


def keyBoardProc( evt ):
if evt.Key == 'F12':
hm.KeyDown = None
hm.UnhookKeyboard()
return
if evt.Ascii:
fname = '%s.log' % ( getProcNameByPID( win32process.GetWindowThreadProcessId( evt.Window )[1] ) )
open( fname, 'a' ).write( "%c" % (evt.Ascii) )


Lathato hogy F12-re probaltam meg unhookolni viszont, ilyenkor a lib egy AV-vel elszall, ugyhogy ez a feature nemigazan mukodik. Ha valaki tudja miert plz irja meg.
Mindenesetre a szelektalas jol mukodik, konnyen beallithato kulonbozo filter, hogy pl ircklienst vagy jatekot ne logolja mert az egyik ugyis logol maganak, a masiknal meg tok felesleges.

Majd ha lesz vmi vegleges verzio, esetleg kozzeteszem :)

Sunday, June 04, 2006

NetBeans Collaboration

Az elozo postomhoz kapcsolodik hogy egy tok erdekes plugint taltaltam nb-hez. Ahogy a neveben is benne van a fejlesztoknek az egyutmukodeset segiti elo. Tartlamazza a hagyomanyos IM funkciokat, uzenetkuldes, partner felvetele stb, valamint az uzenetek formazasat syntax highlightolasat. Igy nem gond ha par soros kodot akarunk kuldeni, szepen megformazva kiszinezve kuldi el. Ezzel meg persze alig lenne tobb egy normal IM-nel. A legjobb hogy a komplett projectet meg lehet osztani, a tobbi koder lathatja a forrast, modosithatja, sot buildelheti meg futtathatja is. Amig valaki editalja a forrast addig a kornyezo sorokat a tobbiek szamara bejeloli es addig ok azt a kodreszletet nem tudjak szerkeszteni, majd amikor befejezte a modositast megjeleniti a tobbiek szamara is.

A plugin weblapjan gondolom bovebb infokat lehetne olvasni, de amiota probalom nekem nem jon be az oldal. NB5.5beta-val probaltam, update centerrol felrakhato "NetBeans Developer Collaboration" neven.

Saturday, June 03, 2006

Netbeans pluginok

Idaig foleg eclipset hasznaltam de egyre jobban kezdek atterni NB-re. Szerintem sokkal intuitivebb, a featureok magatol ertetodobbek. Kicsit lassabban reagal meg tobbet eszik, de ez konnyen orvosolhato ha megfelelo vasat tesz az ember ala. Magaval eclipsevel sincs bajom inkabb egyketto 'erdekesen mukodo'/aluldokumentalt thirdparty pluginnal van problema. NB meg amiket alapbol tartalmaz azok ugylatom jol is mukodnek. Eclipse mellett szokott azaz erv lenni hogy 'dejo sok plugin van hozza', en mint ahogy fentebb irtam ezt inkabb hatranykent elem meg. De mindenesetre megneztem a netbeans plugin kepessegeit. Tulsagosan nem merultem el benne csak 2 egyszeru modult raktam ossze. Ennek a menetet fogom most leirni.

Biztos tobben voltak mar olyan helyzetbe hogy nehany soros kodreszletet kellett volna megosztani IM-en, IRCen vagy akarmilyen chaten valakivel. Kozvetlenul oda masolni ha par sornal tobb a kod akkor nem tul szerencses. Egyreszt attekinthetlen mert a tabokat altalban nem tartja meg, raadasul sok protokolon limitalva van az egyszerre elkuldheto szovegmennyiseg, legrosszabb esetben pedig a chatkliens mindenfele smiley jelekkre csereli a spec karaktereket a kodban. Erre vannak az ilyen 'nopaste' oldalak, ahol weben elpostolja a koder, az szepen kiszinezi, majd ad egy linket ahol meg lehet nezni illetve mutatni masnak. Tehat egy olyan plugint irtam ami a NB editoraban kijelolt kodot elkuldi egy ilyen oldalra majd megjeleniti a kapott linket. Az oldal pedig ami most hardcoded benne van a pluginba a http://phpfi.com/. (Egyebkent meg semmi kozom a phphoz csak ezt az oldalt ismerem :) )
Egy olyan esemenyre lesz szuksegem ami akkor kovetkezik be ha a user az editor popup menujet megnyitja. Valamint szuksegem van tovabba arra hogy lekerdezzem az eppen kijeolt kodot.

Noh, akkor nezzuk lepesenkent.

New project/NetBeans Plug-in Module kell nekunk.



Ezutan adunk neki egy nevet meg locationt/prj dirt.



Majd package nevet, config fileokat.



Elkeszult az uj projectunk, es most jon a lenyeg az action wizard. File/New/Action.



Tobb fele actiont lehet letrehozni, pl olyat ami context menure- vagy file menure kattintva generalodik. Ezeket kulonfele Cookie osztalyok reprezentaljak. Ami nekem kellett most azt az EditorCookie tudja, mivel rajta keresztul konnyeden elerhetem az eppen editalando forrast. GUI regisztracional az editor context menujebe regeltem be. Igy ha a forrasba jobb(ami nekem bal) gombbal kattintunk akkor felbukkano menuben benne lesz az ujjonnan beregisztralt modulunk.
Ha ezt mind megtettuk akkor az action wizard legeneral nekunk egy skeletont osztalyt aminek az performAction metodusa fog meghivodni a menure kattintaskor. Ide kell beirnunk a action kodunkat.





Egy EditorCookie peldanytol le tudjuk kerdezni az eppen nyitva levo JEditorPane-eket. Ez meg egy mezei swing komponens, innen mar a megszokott modon megy a kijeolt szoveg lekerdezese a getSelectedText() metodussal. Ha ez megvan mar csak fel kell postolni a cuccot az oldalra, de ezt nem reszletezem mert nem tartozika plugin temakorhoz. Egyebkent sima URLConnection-el csinaltam.

Egy kis osszedobott kodreszlet arrol amiron fentebb beszeltem:

    protected void performAction(Node[] activatedNodes) {
EditorCookie c = (EditorCookie) activatedNodes[0].getCookie(EditorCookie.class);
if (c != null) {
JEditorPane[] panes = c.getOpenedPanes();
if (panes.length > 0) {
String selection = panes[0].getSelectedText();
if ( "".equals( selection ) || selection == null ) {
JOptionPane.showMessageDialog( null, "At first you have to select the code snippet." );
return;
}
Map params = new HashMap();
params.put( "nick", "netbeans" );
params.put( "descr", "netbeans code" );
params.put( "lang", "java" );
params.put( "source", selection );
try {
WebPost wp = new WebPost( "http://phpfi.com", params );
String response = wp.post();
LinkFrame lf = new LinkFrame();
lf.setLink( wp.getUrl().toString() );
lf.setVisible( true );
} catch ( Exception e ) {
e.printStackTrace();
JOptionPane.showMessageDialog( null, "error: " + e.getMessage() );
}
}
}
}


Tesztelesre 2 fele lehetosegunk is van. Alapbol futtatasnal indit egy ujabb NetBeans peldanyt ami az en 512 mega rammal felvertezett gepemet nagyon megviselte(nagyon erik a ram vasarlas). Vagy betolthetjuk az eppen futo NB-be is a modult. Ekkor figyelmeztet hogy veszelyes es hasonlok, de nekem most nem volt belole gondom. Villamgyorsan (najo, NBhez kepest villamgyorsan) bedeployozta es az aktulis context menuben mar ott is figyelt a beregelt modulom. Egy klikkre pedig .nbm filet lehet generalni az egeszbol amit mar barki be tud deployozni a sajat NetBeanse ala a Tools/Update Center/Install Manually menuben.



Szoval osszesegeben tok jo IDEnek tunik, ami nincs benne alapbol itt is megoldhato kulso modullal, viszont nem vagyok rakenyszerulve hogy alap funkciokhoz is thirdparty pluginokat rakogassak fel. Valamin a Matisse is egy olyan dolog amit valoszinuleg nehezen tudnek nelkulozni a jovoben.

Kicsit bovebb infok + flashdemok elerhetok
http://platform.netbeans.org/tutorials/ innen.