Author Archive

szerda, augusztus 31st, 2011 | Author:

A legtöbb informatikus már az egyetemen/főiskolán hall Babbage mechanikus számítógépéről. Ez gyakorlatilag egy nagyon egyszerű számítógép, ami teljesen mechanikusan működött volna, elektromosság nélkül. Az alapvető problémája a súrlódás, ezt a faktort nem sikerült kiejteni, emiatt a gép nem volt használható, de tulajdonképpen ez volt az első elméletileg működőképes számítógép.

(sidetracking: Most elgondolkoztam, milyen lenne, ha modern anyagokkal megcsinálnák újra ezt a konstrukciót.. vsz teflonnal működne, amíg az el nem kopna :) )

A sztori lényege, ami miatt előkaptam a sutból, a következő: Van egy megvalósítandó cél, amit a rendelkezésre álló technológiai eszközökkel megvalósítunk, és életképtelennek bizonyul. Mondok erre egy másik példát: A cél az űr meghódítása, amit a rakétameghajtással megpróbálunk megvalósítani, és marhára nem megy. Nagy nehezen eljutunk a legközelebbi égitestre, (a Hold), majd feladjuk a próbálkozást, mert nincs ott semmi.

Három lehetséges jövőt látok hosszú távon az emberiség előtt:

  • Feléli a Föld tartalékait és elpusztítja magát
  • Kifejleszt egy új technológiát, amivel meghódítja a világűrt
  • Robotizál és virtuális valóságba merül

Az elsőhöz minden adott. Elég jól definiált a cél, megvan a szükséges technológia, hogy elérjük, és úgy tűnik, nincs meg az akarat, hogy elkerüljük. Na de tegyük fel, hogy a kétségbeesés előbb érkezik meg, minthogy a folyamat visszafordíthatatlanná válna, és valahogy sikerül megjavítani a helyzetet..

Kimegyünk-e az űrbe? Erre nem fogadnék. A rakéta alapú technológia rengeteg problémát felvet, többek között: specifikus üzemanyag kell, amit speciális módon kell elhelyezni a rakétában, a teljes mennyiséget kell szállítani oda és vissza (persze a nagy része közben elég), kb. ugyanannyi anyag kell a lefékezéshez, mint a felgyorsuláshoz, nem túl jó a manőverezhetősége. És akkor még arról nem is beszéltünk, hogy fénysebességgel mozogva is évekre van a legközelebbi naprendszer, de vannak olyanok is, amiknek az elérése több ezer évbe telne (most gondoljunk bele abba, hogy az elmúlt 100 év során mennyit változott a világ.. ) szóval ez a megoldás szimplán alkalmatlan. A következő három dolgot fel kellene találni ahhoz, hogy egyáltalán reményünk legyen az űrben bármit elérni: Fúziós/Ion meghajtás, amivel tetszőleges anyagot tudunk felhasználni arra, hogy mozgassuk az űrben a járművünket; antigravitáció, amivel lényegesen kevesebb energia révén el tudjuk hagyni egy bolygó felszínét (felhasználva pl. a ránk ható centrifugális erőt, azaz pontosabban a bolygó forgásából adódó érintő irányú sebességünket); teleportáció/fénysebesség feletti mozgás, amivel belátható időn belül el tudjuk érni a távolabb eső naprendszereket. Fénysebesség feletti kommunikáció sem ártana persze..

Ha egyáltalán lehetséges feltalálni ezeket a dolgokat (az elsőt igen, a többit vsz nem), akkor sem biztos, hogy sikerül ezt megtennünk abban a szűk időszakaszban, ami a Föld tartalékainak kimerüléséig bekövetkezik. Ebben az esetben arra vagyunk kárhoztatva, hogy a saját naprendszerünk kvázi elérhető bolygóit fedezzük fel, ami gyaníthatóan nem sokat fog jelenteni nekünk, azon túl, hogy nyersanyagot szerzünk róluk, persze itt is kérdés, hogy rakétameghajtással lehet-e ezt hatékonyan tenni..

A harmadik kimenetel már sokkal esélyesebb. Nagy sebességű kommunikáció, fúziós vagy annál is jobb energiaforrások, közvetlen idegrendszeri kommunikáció a számítógépek és az emberek között – ez mind adott, vagy elérhető közelségben van. Hogy nézne ki ez az egész? Az emberiség gyakorlatilag folyamatosan a neten lóg, virtuális világokban, játék formájában dolgozik, amit robotok váltanak valóra – pl. Farmville-t tol, de amit csinál, az a valóságban is végrehajtódik valahol, etc. A felfedezésre váró világok – pl. űr, de akármi is lehet – kéznél vannak. Persze, csak virtuálisak, na de akkor mi van? Pont emiatt sokkal izgalmasabbak, mint a valódi űrfelderítés. A userek generálnak contentet, az aggresszívebbek pvpznek, a békésebbek birkát számolnak a réten. Minden játékos formában persze..

Nem tudom, ez a vég valójában szomorú-e, vagy az egyetlen lehetséges jó végkimenet ebben az univerzumban a mi számunkra..

Category: Hobbi  | Tags: , ,  | One Comment
kedd, augusztus 30th, 2011 | Author:

Nem jogi, sokkal inkább “common sense” oldalról megközelítve, elég sokat gondolkoztam mostanában az e-bookok beszerzésén.

Van pár teljesen egyértelmű eset: Megveszed valahol x pénzért az e-bookot, innentől jogszerűen a tiéd. Letöltöd valahonnan, ezzel kalózkodást követsz el.

Ám..

(Apró sidetracking: Mi a helyzet az árazással? Nyilván az e-book előállítása a jellemzően eleve elektronikus formában megírt regényből szinte semmibe nem kerül (legalábbis ha már mindent megtettek a papíralapú regény előállításához), szóval amit ki kell fizetni, az leginkább a hostolás és a letöltés ára, ami nyilván nevetségesen alacsony. Ugyanakkor, érthető, hogy valami hasznot is szeretne látni a szerző és a kiadó a könyvön, szóval raknak rá valamennyi pénzt. De mi indokolja, hogy az e-book ára ugyanannyi, mint a papír alapú könyvé? Semmi az égvilágon, ez csak szabadrablás. Szerintem ez elég rossz stratégia, manapság már van annyi ebook reader a nép kezében, hogy megérje olcsón adni és a volumenre gyúrni.. és persze van bittorrent is, hogy az emberek ne akarják megvenni, ha drága.)

Tegyük fel, hogy van egy könyved, amit a boltban megvettél tavaly. Karácsonyra kaptál egy ebook readert. Szeretnéd a fenti könyvet újraolvasni, mert jó, de idegesít, hogy papír, te a gyönyörű, könnyű, vékony ebook olvasódon szeretnéd olvasni. Szívesen megvennéd újra a könyvet azok után, hogy már egyszer megvetted? Ráadásul ugyanannyiért, mint az eredeti könyvet? Aligha. Szeretnéd ingyen megkapni, de azért azt ne várjuk el a kiadótól, hogy ezt megteszi neked. Vajon ha elmész egy torrent site-ra, és letorrentezed az adott könyv elektronikus formáját, az mekkora bűn? Hiszen egyszer már megvetted, a tiéd, csak a formátum változott, ráadásul a kiadónak egy fillért nem kell költenie, hogy meglegyen neked ebook formában. Ugyanez a kérdés, ha torrentet nem használsz, de kézzel bescanneled a könyvet, és ráeresztesz egy szövegfelismerőt… Jogilag nyilván bűnt követsz el, de voltaképpen mi ebben a bűn, ha ezt a példányt nem teszed más számára elérhetővé, csak te használod…?

Mi a helyzet fordított esetben? Van egy ebookod, amihez nincs meg a papír alapú könyv, de te valamilyen személyes perverzióból úgy döntesz, hogy kinyomtatod és bekötteted? Tegyük fel, hogy képes vagy erre, vajon ez most bűnözés, ha utána a kinyomtatott lapokat nem adod oda senkinek, csak te magad olvasod?

A következő témára lépve, tegyük fel, hogy van egy kiadó, aki minden papír alapú könyve mellé letölthetővé teszi számodra annak elektronikus változatát is, …

  • ingyen, az ebook magában nem kapható: Persze, hogy vennék, mint a cukrot.
  • 1 dollár alatti áron, ebook magában nem kapható: Továbbra is lenne egy csomó ember, aki vásárolna
  • ingyen, de az ebook magában 1 dollár alatt van: Itt már erősen átalakulna szerintem a piac, vsz többen vennének pure ebook-ot
  • 1 dollár alatti áron, az ebook magában mondjuk 3-5 dollár között van: Ez egy nagyon érdekes helyzet, nem tudom, mi történne itt.

Látatlanban azt mondom viszont, hogy a fentiek közül bármelyik megoldás több eladást/profitot eredményezne, mint az, hogy a papír alapú uannyi, mint az ebook, és együtt nem kapható a kettő.

Category: Személyes  | Tags:  | 5 Comments
szerda, augusztus 10th, 2011 | Author:

A londoni káosz, és az az erő, amivel a médiából áradt, elkeseredésbe kergetett. Ilyenkor könnyű elhinni, hogy már a civilizáció vége felé közeledünk egy tölcsérben lefelé..

Ám ekkor jön a Riot Cleanup, a Waterstones humor és a Titkos Anti-Nácik, és máris sokkal szebb a világ. Talán mégis vannak még tartalékok ebben az emberi fajban..

Category: Személyes  | Tags: , ,  | Leave a Comment
kedd, augusztus 09th, 2011 | Author:

A tüntetés az, amikor egy csoport ember – a csoport mérete egészen kevéstől egészen sokig terjedhet – összegyűlik, és hangot ad annak, hogy valamilyen probléma miatt aggódik/mérges. Az ok lehet politikai (ld. Mo-i helyzet néhány éve), gazdasági (Tel-Aviv ezekben a napokban), rendőri túlkapás elleni (múlt vasárnap Londonban). A tüntetést fel lehet oszlatni jogi alapokon, de a rendőrök nem járhatnak el erőszakosan, és nem is tartóztatnak le igazából senkit.

Abban a pillanatban, hogy elrepül valami a tüntetők irányából a karhatalom képviselőinek irányába, a tüntetés zavargássá alakul. Megjelenik az erőszak. Ez persze erősen sarkított dolog, de nagyjából ez a nyitány. Szóval megjelenik az erőszak a színtéren, és a karhatalom ettől a pillanattól jogszerűen tehet (valamivel kevésbé) erőszakos lépéseket, hogy elfojtsa azt. Ez bekövetkezett Budapesten, és bekövetkezett Londonban. Tel-Avivban, a tüntetők nagy száma ellenére nem.  Ebben a fázisban van a gyújtogatás is – legyen az autó, villamos, szófagyár vagy bolt.

Aztán valaki a tömeg közepén, a pillanattól felhevülve, és a tömegben magát védettnek érezve, betör egy kirakatot és felmarkol pár cuccot. Lehet, hogy csak egy pár fiatal, akik az élelmiszerboltot törik fel némi alkoholért, de az is lehet, hogy ékszereket vagy készpénzt akar az illető. Ez több helyen, egymástól függetlenül is megtörténhet. Innentől már a fosztogatás és a zavargás egymás mellett futnak. A lényeg az, hogy az opportunista lelkek megragadják a lehetőséget, hogy elvegyék más tulajdonát. Ez bekövetkezett és csúnyán elfajult Londonban, mostanra már gyakorlatilag a zavargások fő vonulatává válva.

Van itt egy érdekes összefüggés. Minél magasabb az életszínvonal, minél kevesebb a napi gond, annál nagyobb az esély, hogy a tüntetés fosztogatássá válik. Vagy talán a tüntetést kiváltó ok mondvacsináltsága szabályozza ezt, az, hogy mennyien azonosulnak valóban a problémával, és mennyien látják csak a lehetőséget a zavargásra, rendbontásra.

Végtelenül megvetem ezeket az embereket. Tudom, mi a gond Izraelben, és nagyon sajnálom azokat az embereket. Tudom, mi volt a gond pár éve Budapesten, és bár az okaikkal nem értettem egyet, el tudom fogadni, hogy tüntettek érte, és azt is megértem (bár elítélem) hogy miért lett belőle zavargás. Azonban azt, hogy egy állítólagos rendőri túlkapás gyújtogatássá és fosztogatássá fajul, nem tudom elfogadni. A legrosszabb az az egészben, hogy emiatt most már azok is, akik eredetileg szimpatizáltak az üggyel, kezdenek elfordulni tőle, így a (jogosan vagy jogtalanul) lelőtt 4 gyermekes családapa családjának egyre kevesebb esélye van arra, hogy valóban igazságot szolgáltassanak nekik.

ui: Bár többször eszembe jutottak a franciaországi zavargások, nem írtam róla. Nagyjából a budapestivel összevethető, bár az okok talán valamivel erősebbek/megindokoltabbak voltak, mint nálunk.

Category: Személyes  | Tags: ,  | 2 Comments
hétfő, augusztus 08th, 2011 | Author:

Minap a lányom egy megjegyzése kapcsán gondolkoztam el ezen:

“Láttam ma egy elefántot” illetve “Láttam ma az elefántot”. Az első mondat általános, míg a második specifikus, egy konkrét elefántra gondol, amiről a befogadó félnek tudni is kellene, hogy melyik.

Ezt pedig vessük össze ezzel:

“A kedvenc állatom az elefánt” illetve “A kedvenc állatom egy elefánt”. Bár látszólag ugyanolyan a két mondat szerkezete, pontosan fordított az értelme, a határozatlan névelő egy konkrét példányra utal, míg a határozott névelő az elefántokat, mint fajt fogja meg, és nem ereszkedik le példány szintre.

Vicces ez a nyelv. :)

Category: Hobbi  | Tags:  | Leave a Comment
kedd, június 21st, 2011 | Author:

image

Ma tudtuk meg, h a gyerek fiú lesz, azaz a választott név (Félix) tökéletes lesz.
Ez a múlt heti fotó.

Category: Személyes  | Tags:  | One Comment
szerda, június 08th, 2011 | Author:

Néha eszembe jutnak olyan fizikai kérdések, amikhez nincs meg a megfelelő hátterem, hogy megválaszoljam őket. Íme egy pár:
- A fény (illetve bármely hullám) energiája a foton/részecskesűrűségtől függ, vagy van valami energiaszintje a részecskéknek, ami meghatározza a szállított energia mértékét? (pl. terjedési irányra merőleges rezgés, vagy forgó mozgás). Hogyan adja át az energiát a fény az anyagnak? Ha az energiaszint egy létező dolog, lehet-e ezt változtatni a fénysugáron/hullámon?
- Tételezzük fel, hogy az idő illetve a tér nem lebontható a végtelenségig, van egy minimális méret, aminél kisebb egység gyakorlatilag nem létezik (elméletileg igen). Megmagyarázhatja-e ez a Heisenberg féle bizonytalansági elvet illetve a kvantumfizika egyes jelenségeit.
- Megmagyarázható-e az elektron kettős (hullám és részecske) természete azzal, hogy a részecske alapvetően egy párhuzamos dimenzióban létezik, és a mód, ahogy megfigyeljük, materializálja a mi világunkban?

A válaszokat kommentben kérném indoklással egy egy nyilatkoztattal arról, hogy mennyire vagytok biztosak az adott dologban. :)

Category: Hobbi  | Tags: , , ,  | 4 Comments
kedd, június 07th, 2011 | Author:

Tegnap két extrém példán keresztül tudatosult bennem, hogy mennyire az önbizalomról szól a szakma. Nem csak arról, természetesen, de talán egy kicsit nagyobb a jelentősége, mint pl. a kézműves vagy szolgáltató iparban.
Az első példa: Van egy ismerősöm (igen, N, rólad írok) akinek a CV-jét javítgattuk tegnap. 7 éve dolgozik az IT supporton, olyan technológiákkal dolgozik, amiről én még nem is hallottam, és a CV ennek megfelelően elég meggyőző. Az önbizalma azonban nem üti meg azt a szintet, amit én természetesnek gondolnék ennyi tapasztalattal, így megragadt egy olyan állásban, ami nem díjazza megfelelően a képességeit.
A második példa: Olvastam egy cikket a Daily WTF-on, ahol egy szörnyű kódrészlet mellett ott szerepel ez a szöveg: ” those who knew better (i.e. management) sang plenty of praise, of both the PHP God, and his clean, well-commented code.”, azaz nyers fordításban: A vezetőség viszont egyaránt dícsérte a PHP Istent (a fent emlegetett kód alkotója) és annak tiszta, szépen kommentezett kódját.
Tehát, van egy hozzáértő de nem túl sikeres, és egy béna, de nagyra tartott szakmai dolgozó. Na, ez miért van így?
Képzeld el, hogy kijön a burkoló, újraburkolja a fürdőszobádat. Bemész és körülnézel, a csempék ferdék, a színek rondán vannak összeválogatva, és elfelejtett lyukat hagyni a szellőzőnek. Viszont a vizet nem ereszti át, tehát ebből a szempontból tökéletesen megfelel a követelményeknek.
Nyilvánvaló, hogy ezt nem hagynád annyiban, és meglenne a véleményed az illetőről. Viszont, képzeljük el, hogy vak vagy, és ugyanígy megnézed a dolgozó munkáját.. valamilyen módon meg tudsz győződni róla, hogy nem szivárog a víz (például úgy, hogy az alsó szomszéd nem jön fel), de azt már nem tudod megmondani, hogy rondák a színek, szóval örülsz, h kész a fürdőszoba és azt tudja, amit kell.
Ez az utóbbi a helyzet a szakmánkban. A vezetőség a legtöbb helyen nem ex informatikia dolgozókból áll, így max annyit tudnak megmondani a kódról, hogy “de szép színes betűk vannak benne”. Ők csak annyit néznek, hogy a weblap megjelenik, az adatbázisszerver működik, az appszerver kiszolgálja a kéréseket, azt már nem tudják igazából felmérni, hogy a táblázattal formázott, nem valid html mennyire nem karbantartható, nem tudják, hogy az adatbázisszervert nem meri senki három éve kikapcsolni, mert nem bíznak benne, hogy újra bekapcsolódik, sít. Itt jön az, hogy a barátságos, mindenre bólogató, gyorsan szállító programozót mindenki kedveli, a rendszergazdát, aki csendben végzi a dolgát, senki észre sem veszi, amíg valami el nem romlik, akkor pedig lekiabálják a haját..
Az Önbizalom Vására – a személyiség legalább annyit számít, mint a tudás.

A konstruktivitás világnapjának a jegyében nézzünk rá arra, hogy mi adhat nekünk okot az önbizalomra. A vezetőség elismerése? Nem, az nem szakmai elismerés. Nekem a következő dolgok adnak önbizalmat:
- Sokféle helyzetben voltam már, és még soha nem kellett feltennem a kezem, hogy: “Ezt nem lehet megoldani, és fogalmam sincs, hogy mit kellene most csinálnom”. Volt, hogy sokat szenvedtem a megoldással, de mindent sikerült megoldani vagy megkerülni.
- Tudom, hogy a szakma olyan széleskörű, hogy senki nem tudhat mindent, de ha bármire szükségem van, meg tudom tanulni, mert megvan a szakmai alapom hozzá.
- Kapok pozitív visszajelzéseket a munkámról olyan emberektől, akiket magamnál okosabbnak, szakmailag tapasztaltabbnak tartok.

Minden kollégámnak ajánlom az IT bármely területén, hogy nézzen magába néha, és gondolkozzon el, hogy helyén van-e az önértékelése? Akár csak a fenti három pontot és gondolja végig őket őszintén. Sokat lendítene a szakma színvonalán egy kis tisztánlátás..

Category: Szakmai  | Leave a Comment
hétfő, június 06th, 2011 | Author:

Minap a Google Readerben alakult ki egy érdekes beszélgetés a kommentekben arról, hogy a Total Commander az most egy überjó tool, vagy egy szánalmas maradvány a DOS-os időkből. Nekem leginkább úgy tűnt (az első csoport tagjaként), hogy az utóbbi párt hívei nem ismerik a TC lehetőségeit. Ha azt nézzük, mi a jobb file másolásra mondjuk (amit többen felemlegettek), akkor nyilván személyes preferencia a dolog. Én nem elsősorban arra használom, igazából ha csak simán fájlt akarok másolni, akkor megnyomom a win-e kombinációt, és az így megnyitott explorerrel másolok drag&drop-pal.
Amire viszont használom, az már egy sokkal érdekesebb lista. Szerintem még tapasztalt TC felhasználók is találhatnak itt olyasmit, amit nem tudnak. (kommentben meg várom azt, ami egy értékes funkció, de én nem soroltam fel)

Megjelenítés: Meg a két tabos megjelenítés szerintem egy okos dolog. Kompakt, definiálja a munkafelületet, nem lesz tele a windowsunk egy rakás fölösleges ablakkal. Az “egy rakás” magyarázata: A TC tud tabos megjelenítést, azaz mindkét oldalon megnyithatunk több könyvtárat tabokon elhelyezve. Ezek a tabok kilépés-újra megnyitás után is megmaradnak. A két oldalt elválasztó oszlop elhúzható valamelyik oldalra, ha a másiknak több hangsúlyt szeretnénk adni, például nagyon hosszú fájlnevek megjelenítésénél. Mozgatás közben tooltipben meg is jelenik az aktuális elosztás mértéke, 100%-ban, jobb gombbal rákattintva pedig kapunk egy felugró menüt, ahogy beállíthatjuk a kívánt elosztás mértékét, pl. 50/50.

Fájl kiválasztások: A normális rákattintok és kiválasztom mellett a TC kínál más, hasznos kiválasztási lehetőségeket is. A szürke + megnyomásával tudunk select all-t csinálni, illetve ezzel tudunk olyat, h a *.jpg-t választjuk ki pl. A “*.zip;*.7z” formátummal többféle selectiont is megadhatunk. Természetesen az is működik, ha ezeket egymás után hajtjuk végre, illetve a név lehet mondjuk image* formátumú is. A szürke minusszal hasonló módon elvehetünk a kijelölésből, a szürke csillag invertálja a kijelölést, etc. Egészen más jellegű, de nagyon hasznos kijelölést csinál a shift-F2, azaz compare directories, ami a file-okat hasonlítja össze, és kijelöli mindkét oldalon azokat, amik vagy nem szerepelnek a másik oldalon, vagy más méretűek. A dátumot veszi alap ahhoz, hogy a változás esetén kitalálja, melyiket kell kijelölni. (Programozóként ez az utóbbi képessége nagyon hasznos!)
Kiválasztás kapcsán: Ha space-szel jelölünk ki egy könyvtárat, a TC kiszámolja a könyvtár méretét (lassssssan..) majd megjeleníti mellette. Ez hasznos lehet, amikor kíváncsiak vagyunk arra, hogy mi eszi meg a helyet a partíción. Annyival jobb talán, mint a windows hasonló funkciója, ami a könyvtár properties jobbgombos menüjében található, hogy látjuk a listában a méretet, és össze tudjuk hasonlítani egymással őket könnyedén.

Fájl másolás, mozgatás (F5, F6): Mint fent említettem, általában az explorert használom az 1xű, ad-hoc fájlműveletek végrehajtására. Van azonban egy olyan különleges képesség a TC-ben, ami miatt néha kifejezetten azt használom: a másolási queue. Amikor nagyon sok dolgot akarok átmásolni valahova, amik mondjuk jellemzően nem egy alkönyvtár tartalmai, vagy ilyesmi, akkor a másolást egy sorba rakom bele, ami gyakorlatilag sorban kerül feldolgozásra, aszerint, ahogy én hozzáadtam. Mivel a másolás nem párhuzamos, nincsenek problémáim az ide-oda ugráló winchester fejjel, fragmentált fájlokkal, etc. Ez a megoldás sokkal rugalmasabb, mint a kijelölés és másolás, mert gyakorlatilag a fájlrendszer bármely pontján dolgozhatok, nem kell egy könyvtárban maradnom a másolás végeztéig. Mellékesen megemlítem, hogy ilyeneket is tud a másoló/mozgató ablak, hogy ntfs jogosultságokat másoljon, szűrőket alkalmazzon (pl. csak egy típusú fájlt másoljon az összes kijelöltből), illetve beállítható, hogy hogyan reagáljon, ha mondjuk nem írható v olvasható egy fájl, system/hidden fájlok esetén, etc.

Új könyvtár létrehozása (F7): Ezt csak azért említem meg, mert sokkal kényelmesebbnek tartom az egy gombnyomásos könyvtár létrehozást, mint a sok kattintásost.

Helyben átnevezés (Shift-F6): Ez egy olyan feature, amit sokan nem ismernek. A windowsos megfelelője a két lassú kattintás a fájl nevén (azaz gyakorlatilag a kijelölöm majd még 1x rátakkintok a nevére, de ez nem duplakattintás); a lényege az, hogy ott helyben megjelenik egy editor, amivel át tudom nevezni a fájlt. Időnként hasznos. Edit: Többen rámutattak, h F2-vel ugyanezt kapod windowsban. Jó tudni!

Lister (F3): Egy nagyon hasznos, pehelysúlyú fájl megjelenítő. Nagyon gyors, emiatt ideális eszköz arra, hogy belenézzünk egy file tartalmába, amikor keresgélünk valamit. A tc saját oldaláról letölthetünk hozzá egy szintaxis kiemelőt is, ami szintén nagyon hasznos egy programozónak. Az egyik érdekessége, hogy alapból ismer pár hangfájl formátumot is, pl. mp3, így azokba is bele tudunk könnyen hallgatni, anélkül, hogy el kéne indítanunk mondjuk egy winampot (aminek aztán a playlistjét is szétvágja..) Van plugin a képfájlok hasonló kezelésére is.

Mélységi listázás (Ctrl-B): Amikor egy mély, bonyolult könyvtárszerkezet mélyén keresünk egy fájlt, vagy szeretnénk innen az összes .txt fájlt megnézni, jól jöhet a mélységi listázó tool. Ennek a lényege az, hogy az adott könyvtárból és annak összes alkönyvtárából (és azok összes alkönyvtárából, you get the picture..) kilistázza az összes fájlt egy egy mélységű listában, amit aztán átrendezhetünk, illetve úgyanúgy használhatunk, mint minden más könyvtárat. Ha egy fájlra állunk a kurzorral, és újra ctrl-b-t nyomunk, akkor visszaáll az eredeti megjelenítés, de odaugrik az adott fájlhoz, ami szintén hasznos lehet esetenként.

Fájl tartalom összehasonlítás: Ez egy vizuális, színes diff, ami megmutatja, hogy a két kijelölt fájl milyen módon tér el egymástól. Jellemzően szöveges fájlokra érdemes használni. Programozóknak külön hasznos, hogy a diff-en túl tud 2 way merge-öt is, ami egy nehezen feloldható SVN vagy CVS conflict esetén életet menthet.

FTP (Ctrl-F): Erre nem akarok túl sok szót vesztegetni, ftp kliens, ami a túloldalt is úgy jeleníti meg, mint egy könyvtárat, úgyhogy a másolás és hasonlók eléggé leegyszerűsödnek.

Csoportos átnevezés (Ctrl-M): Megint egy jól átgondolt és ügyesen megvalósított képesség, a csoportos átnevezés lehetőséget ad arra, hogy több fájl egyszerre átnevezzünk. Az eszköz ilyeneket tud, hogy az eredeti név kiegészítése vagy adott hosszra vágása, dátum, idő illetve egy konfigurálható számláló érték beillesztése a névbe, hasonló szépségek a kiterjesztéssel, keresés és kicserélés a névben, akár regexp alapon, kis-nagy betű megváltoztatása, és természetesen ezen beállítások elmentése/visszatöltése.

Letöltés URL-ről (Menü): A Commands menüben találhatjuk a Background Transfer Manager eszközt, ami a fent említett várakozó soros másolást/mozgatást is megoldja. Ennek egy extra képessége az, hogy képes egy url-ről letölteni a dolgokat, ami hasznos lehet, amikor egy valahol megosztott fájl listát szedünk le (de természetesen a html-t is leszedi gond nélkül, bár a hivatkozott fájlokat, mint a js meg css nem).

Fájl Szétvágás-Összeillesztés (Menü): Ha valamilyen okból szeretnénk szétvágni egy nagyobb file-t darabokra, (pl. mert túl nagy a nálunk lévő pendrive-hoz, vagy éppen adott méretű feltöltés engedélyezett egy weboldalra) akkor a Files menüben található Split File.. művelettel tehetjük ezt meg. Később az ugyanitt található Combine files segít nekünk összerakni újra. Ugyanitt vannak enkódoló és checksumot ellenőrző/generáló műveletek is. Ezeket én még soha nem használtam igazából..

Új fájl létrehozása (Shift-F4): Egy újabb egyszerű, kényelmi funkció. A fájl szerkesztése az F4 billentyű, ez azonban csak meglévő fájlokra alkalmazható (nyilván). A Shift-tel együtt használva létre is tud hozni új fájlt, ha olyan nevet adunk meg, ami még nem létezik. Ezután egyből meg is nyitja azt szöveges szerkesztésre.

Könyvtár megjegyzése (Ctrl-D, Add Current Dir): A fájlrendszerben mászkálva néha igényünk van rá, hogy egy másik pontra jussunk el gyorsan. Erre szolgál a könyvtár megjegyzése, amivel egy gyorslistába tudjuk elhelyezni az éppen látott könyvtárat. A Ctrl-D billentyűkombináció megjeleníti a már megjegyzett könyvtárak listáját, valami két műveletet: az aktuális könyvtár hozzáadását és a konfigurálást. Az új hozzáadásakor rákérdez a nevére, illetve arra is, hogy a célkönyvtárat (azaz a másik oldalon látható könyvtárat) is megjegyezze-e. Jelentősen fel tudja gyorsítani a navigációt olyankor, ha van néhány gyakran használt könyvtárunk.

Taszk automatizálás (Ctrl-D, Configure): A fenti gyorslista másik művelete a konfigurálás, ami egy sokkal ügyesebb tool, mint a legtöbben gondolnák. Egyrész, itt lehetőségünk nyílik arra, hogy a korábban felvett könyvtárakat átnevezzük, módosítsuk, vagy akár hierarchiába rendezzük, de ez nem minden. Alul láthatjuk a “Command” mezőben, hogy mi az a parancs, amit “kiad” a total commander, amikor kiválasztjuk ezt a megjegyzett könyvtárat. Ezt azonban szerkeszthetjük is, tetszőleges parancssori parancsot kiadhatunk vele, mint mondjuk “python”. Ez némiképpen korlátozott, mert sajnos nem veszi figyelembe a kijelölést, de néha hasznos lehet, amikor rendszeresen ismétlünk valami egyszerű taszkot, amit parancssorból lehet indítani. (pl. junit tesztek futtatása a projektre..)

Tömörített fájlok megnyitása (Ctrl-PgDn): Ha van egy zip fájlunk, sima enterrel kinyithatjuk, és innentől úgy fogjuk látni a TC-ben, mint egy könyvtárat a fájlrendszerben, amiben működnek a szokásos műveletek, mint másolás, törlés, etc. (ami természetesen ki-betömörítésként jelenik meg) A ctrl-pgdn annyival jobban működik, mint ez, hogy ha a zip fájl valamilyen más kiterjesztéssel jelenik meg (pl. jar, war, vagy éppen zap) akkor is bele tudunk menni, és nem a fájlrendszeri végrehajtással próbálkozik, mint a sima enternél.

Fájl (és tartalom) keresés (Alt-F7): Ez egy nagyon erős eszköz a hozzáértő kezekben. Mélységi keresés, amivel fájlnév vagy tartalom alapján kereshetünk fájlokat. Kezel Regexp alapú keresési feltételeket, tud keresni tömörített fájlokban is, konfigurálható a maximum mélység, a szöveg kis-nagybetű érzékenysége, encoding-ja, tudunk dátum, kor, méret, attribútumok alapján keresni, képes duplikált fájlokat megtalálni, valamint a kereséseket elmenteni későbbi használatra.
De ezzel még nem ér véget a képességek listája, ugyanis a találati lista maga is sok lehetőséget nyújt. Többek között, működik például a jobbgombos menü, meg tudjuk nyitni a fájlt gyorsnézetre, odaugorhatunk az adott fájlhoz, illetve a találati listát leküldhetjük a TC saját megjelenítő ablakába, ahol aztán ugyanúgy kezelhetjük őket, mint egy könyvtárat a fájlrendszerben: másolhatunk, törölhetünk, megnyithatunk, kijelölhetünk, ftp-zhetünk, etc.

Search As You Type (??): Az alapbeállítás talán alt-ctrl-type, én az alt-type-ot szoktam használni, de beállítható az is, hogy gépelésre automatikusan ez induljon el. Hasonlóan a mindenhol megszokott azonnali kereséshez, ahogy gépelünk, oda ugrik az adott keresésnek megfelelő fájl-hoz. A Ctrl-S billentyűkombinációval manuálisan is megnyithatjuk ezt a dialógust.

Parancssor (??): Nem emléxem, mi ennek az alapból bekonfigurált beállítása, én azt használom, hogy amit gépelek, az azonnal megjelenik a parancssorban. Az egyik leggyakrabban használt ilyen parancs a cmd, ami megnyit egy windows parancssori konzolt az adott könyvtárban, de gyakorlatilag úgy működik, mintha a windows run dialógusát (win-R) használnánk. Begépelés után ugyanúgy enterrel hajtjuk végre, mint amit a run-ba írunk.

Vágólap műveletek: Én nem használom, de esetenként hasznos lehet, ha az ember képes a kijelölt fájlok listáját kirakni a vágólapra, különböző extra információkkal, ld. alant:

ClientSide.java	1,661	05/06/2011 11:14	-a--
Orchestrator.java	478	05/04/2011 16:09	-a--
ServerSide.java	2,631	05/06/2011 11:10	-a--

Edit:Fájlnevek a parancssorba: Van pár billentyűkombináció, amivel a parancssorba tudjuk egyszerűen lemásolni a kijelölt fájlt: A Ctrl-J a nevét, a Ctrl-Shift-J a nevét és elérési útját másolja oda. (praktikus apróság: odarak egy space-t is, hogy ha parancssori paraméterként használod, azt ne kelljen kézzel beírni). Ha csak az elérési út kell, azaz az aktuális könyvtár, amiben állsz, akkor Ctrl-P.

Összefoglalva, mindenkinek ajánlom – még akkor is, ha azt gondolja, hogy a windows explorerrel minden egyszerűen megoldható – hogy töltse le a trial-t, és adjon neki egy kis időt. A fenti lista segíthet, hogy eligazodjon a felületen, és megtapasztalja a “pure awesomeness”-t, ami árad ebből a toolból. (Na jó, ezt csak azért mondtam, mert bírom a Kung-Fu Pandát :) )

Category: Személyes  | Tags:  | 8 Comments
csütörtök, június 02nd, 2011 | Author:

Alapvetően két problémám van a DI-t és AOP-t megvalósító framework-ökkel: Hozzá kell adni egy extra jar-t a classpathhoz, amitől sokkal combosabb lesz az egész alkalmazás, és ha esetleg webstartozol, akkor még sign-olni is kell, valamint van egy performance hit – A DI a startupnál, az AOP pedig folyamatosan jelentkezik.
Vannak ugyanakkor olyan problémák, amit így lehet a legszebben megoldani, például a logolás elválasztása a függvényeinktől, vagy egy Chain of Command pattern esetén a Command osztályok inicializálása és a chain-be rakása.

A minap, amikor a javas Annotation-ökről olvastam, belefutottam az általam korábban még soha (tudatosan) nem használt apt (Annotation Processing Tool) nevű eszközbe. Ahogy olvasgattam a képességeiről, felmerült bennem, hogy ezzel meg lehetne oldani azt, amit én statikus DI-nak és statikus AOP-nek hívok.

Az apt lényege, hogy – főként az annotációkat használva, de generálisan is – fordítás előtt átszalad az egész kódon, és meghív bizonyos, a felhasználó által specifikált feldolgozó egységeket, amik átalakíthatják a kódot, vagy hozzáadhatnak új osztályokat, etc. Gyakorlatilag beteszünk egy extra lépést a kód elkészítése és lefordítása közé.
Valami ilyesmi a statikus AOP lényege: Bár kód szinten elszeparáljuk a különböző dolgokat, például a logolást, és pusztán egy annotationnel jelöljük, hogy ez a metódus kellene, hogy logoljon (@LoggingMethod, pl.), a lefordított osztályokban már megjelenik az a kód. Hasonlóan működik a DI is.

Például: Össze akarom gyűjteni az összes Command osztályt egy List -ba.
Csinálok két annotációt és egy statikus függvényt, mondjuk registerCommand(Command c). A függvény feladata mindössze annyi, hogy a fenti listába belerakja a Command osztályt (és csinál vele minden egyebet, amit csak akarunk), az annotációk pedig kb. így néznek ki:

@Target(ElementType.TYPE)
public @interface CollectionMarker {
    String collection();
    String enabled() default true; // erről meg ejtek pár szót
}

@Target(ElementType.METHOD)
public @interface CollectionMethod {
    String collection();
}

Az utóbbit elhelyezem a fenti függvényen, az előbbit pedig minden egyes Command osztályon, amit megírok.

Ezután a processzorok úgy működnek, hogy az egyik összegyűjt egy listát az összes CollectionMarkerrel megjelölt osztályról, a másik megjegyzi, hogy hol a CollectionMethod, majd a feldolgozás végén a megjegyzett osztályba berakunk egy static initializer blokkot, amibe belekerül egy csomó registerCommand(new AkarmilyenCommand());. S lőn, kész is van a chain.

Amit vesztünk ezzel, az
- A dinamikusság: Nem elég átírni egy XML-t és újraindítani az alkalmazást, mint a Spring-nél, ha változtatni akarunk valamit a dependencián. Mindenképpen újra kell fordítanunk az alkalmazást.
- Fordítási sebesség: A fordítás valamivel lassabb lesz
- Rugalmasság: Nyilvánvalóan van egy csomó olyan DI alkalmazás, amit nem lehet megoldani statikus módon.

Amit nyerünk vele:
- Némi performancia
- Átlátható kód extra frameworkok nélkül
- A Spring XML-hez viszonyítva: compile time ellenőrzés a dependenciákra
- Automatizált taszk végrehajtás (Az új command hozzáadása esetén csak az osztály kell létrehoznunk és ellátnunk a megfelelő annotációval, nem kell még különböző ponton beszúrni listákba)

Említettem fent, hogy az enabled attribútumról még ejtek pár szót: ha a gyűjtő egység figyeli ennek is az értékét, és nem gyűjti be azokat, ahol az enabled értéke false, akkor ennek a kapcsolónak az átbillentésével ki-be kapcsolhatjuk a gyűjtését. Akár még azt is megtehetjük, hogy a true-false helyett szinteket definiálunk, és bizonyos osztályokat csak debug módban használunk, productionben nem (ezeket, ha jól sejtem, akár ki is törölhetjük a feldolgozás során..).
Ez így magában még nem is annyira érdekes, de van még egy ennél is fontosabb szerepe: ha a fenti annotation definiciót (a Markert) megfejeljük egy @Inherited annotációval, akkor a leszármazottak is öröklik. Innentől elvileg minden leszármazottat begyűjtünk.. kivéve, ahol specifikusan kitesszük a markert a az enabled attribútum értékét false-ra állítva.

Akik az IDE integráció miatt aggódnak, azoknak sem kell igazából. Az Eclipse-t biztosan tudom, hogy támogatja ezt, a Netbeans és IDEA esetén pedig csak sejtem, hogy támogatják ezt a dolgot (vsz. 5 perc lenne kideríteni a google-lel).

Egyelőre csak a fejemben született meg ez a dolog, nem valósítottam meg, de a horizonton van. Ha lesz konkrétum, vsz kirakom valami elérhető helyre, mondjuk google code.