Typo Edge

2008-12-15 11:43

Akartam írni az blog frissítéséről, meg kapcsolódó dolgokról, Typo Edge alapú blogolásról egy bejegyzést, de az egész bejegyzés véletlen Back gomb nyomás áldozata lett. Töményítve még van erőm reprodukálni, itt van, okuljatok:

Typo Edge belövés

$ git clone git://github.com/fdv/typo.git
$ cd typo
$ git submodule init
$ git submodule update
$ cp config/database.yml{.example,} && vim cp config/database.yml
$ cp config/mail.yml{.example,} && vim cp config/mail.yml
$ rake db:create
$ rake db:migrate

Ha extra path alatt akarjuk látni (pl. http://lackac.hu/blog), akkor config/environment.rb-be:

config.action_controller.relative_url_root = '/blog'

És aztán webszerverben is beállítani ugyanezt. Passengerben két apró lépés kell:

$ ln -s /path/to/typo/public /path/to/my/site/root/blog
<VirtualHost *>
    # ...
    RailsBaseURI /blog
    # ...
</VirtualHost>

Typo témák

Alapból talán négy téma van Typoban, sokat nem lehet gyönyörködni bennük. Ha egyedi designt akarsz, akkor a Scribbish témára lehet alapozni egy sajátot. Egyébként pedig a Typogardenben érdemes körülnézni. Az itt található témák elég régiek és nagy valószínűséggel tartalmaznak elavult kódrészleteket. Ha kipróbálsz egyet, akkor érdemes development logot böngészni közben és a deprecation warningokat kijavítgatni. Pár témával megtettem ezt, ezeket a typo repo forkomban themes branch alatt megtalálhatjátok.

kommentek

Elkészült a budapest.rb blog

2008-10-01 03:32

Végre jutott időnk a hétvégén összerakni a budapest.rb blogot. A továbbiakban a meetupot érintő bejegyzések oda kerülnek. Az első bejegyzésben említés esik róla, hogy miből raktuk össze: a lényeges tényező a Webby és a GitHub. Azt tervezem, hogy a saját blogomat is átrakom erre a párosra, mert sokkal egyszerűbb karbantartani, bővíteni. A Typo hülyeségeiből pedig kezd elegem lenni. Legutóbb például egy update szépen szétverte az oldal egyes funkcióit (remélem ezt a bejegyzést sikerül felrakni). Amúgy sincs nekem szükségem erre a featureözönre, ami kell azt pedig majd megírom webbyhez ;). Kommentezés például mennyivel szebb és egyszerűbb Disqus-szal.

Közben lassan szerveződik a következő budapest.rb meetup. Jelentkezzetek előadónak, egyet talán még októberre is be tudunk rakni.

kommentek

Teához

2008-09-15 06:39

Hétvégén volt időm végre olyan dolgokkal is foglalkozni, amit a sok munka miatt már jó ideje tologatok. Ezek egyike az volt, hogy elolvastam, és kipróbálgattam pár dolgot, amik már régóta ott figyeltek nyitott tabokban a böngészőmben. Ezek közül válogatok most egy párat.

De előbb megemlíteném, hogy a héten lesz a budapest.rb. Persze ezt már úgyis mindenki tudja, úgyhogy ez felesleges volt. A hétvégén összeraktam a saját előadásom slide-jait, és megérkeztek a többi előadótól az absztraktok is. Ezeket a meetup oldalán megtaláljátok. Újból jelezném azt is, hogy ha valakinek van érdekes témája, amiről előadna, vagy ajánlana valakit, akkor bátran írjon. Most pedig nézzük a techmorzsákat.

Phusion Passenger

Múlt héten átkonfiguráltam a belső teszt szervereinket Phusion Passenger és Ruby Enterprise Edition használatára. Eddig főként a könnyebb és gyorsabb deployment jött elő azonnali nyereségként, de majd teljesítményt is fogok vizsgálni. Elsőre gyorsabbnak tűnik, de lehet csak azért mert ezt várom tőle. Ha lesz majd kis időm, összevetem az átállás után keletkezett logokat a korábbiakkal.

Hétvégén a saját szerveremen is megléptem a váltást. Itt inkább a rendszer egy másik nagy előnye miatt, ti. hogy így nem kell minden alkalmazást mindig futtatni, amire valaha szükség lehet. Elég sok sideproject fut a szerveren, és ha mindegyiknek adnék egy-két processt, akkor teljesen megennék a gépet. Viszont ezeknek nincs túl nagy látogatottsága, nem is nagyon szokott egy-kettőnél több egyszerre aktív lenni. Szóval erre kiváló a Passenger. Ha nem kell, nem futtatja, ha meg jobban kell, indít többet is.

Query Memcached

A Virgoban dolgozunk egy olyan projekten, ahol a sok összefonódott funkcionalitás és bonyolult jogosultsági rendszer miatt nem igazán lehet jól cache-elni. Ilyen esetekben lehet jó a Query Cache, ami bár alapból megtalálható Railsben, de csak egy requestre korlátozva. A Query Memcached plugin épp ezen próbál változtatni. Tetszik benne, hogy a queryket vizsgálja is, így a cache invalidálás egy részét megoldja nekünk. Valószínűleg megtartjuk.

Webby

Ha csak egy egyszerű oldalt szeretnénk összerakni, sokszor a Rails vagy akár más kisebb keretrendszerek használata overkill. Ilyenkor hasznos lehet a Webby, ami egy egyszerű statikus oldalt generáló Ruby alkalmazás. Kiválasztod a felépítést, csinálsz magadnak layoutot, aztán txt fájlokat írogatsz. Lehet használni ERB-t textile-t vagy markdownt. Szóval mindent, amire szükség lehet egy egyszerű oldalhoz. Kezdésnek biztos valami egyszerű webby alapú oldalt fogunk összerakni a ruby.meetup.hu oldalhoz is, aztán ha lesz időnk írunk valami egyszerű Merb alapú blogot. Mike Clark írt egy részletes leírást az első lépésekről, az ötlet onnan jött.

AI sorozat Ola Binitől

Ola Bini (JRuby core fejlesztő) egy érdekes sorozatba kezdett a blogján. A téma mesterséges intelligencia programozás Rubyban. Az első rész természetes nyelvi szövegek generálásáról szól, tegnap pedig a következő is felkerült az általános probléma megoldóról. Ha izgat a MI, feltétlen nézz bele, izgalmas sorozatnak ígérkezik.

Ami még érdekes volt

  • Active Presenter, ha több modellt kell együtt kezelni (például egy formon)
  • daemon_controller, ha kezünk alá dolgozó, robosztus daemon kezelést szeretnénk
  • Sphinx, szöveg indexeléshez. Mostanában ezt hype-olják, meg kellene nézni, mert a jelenleg használt ferret megoldással több probléma van, mint amit megold. Ebbe a témába még egyáltalán nem mélyedtem bele, azt se tudom mit linkeljek, úgyhogy ittvan még kettő: két sphinx pluginról, meg a full-text searching kánaánról
  • Sake, ha az általánosan használt szkriptjeinket szeretnénk rendszerezni, itt vannak jó tippek arra is, hogy ezt hogy tudjuk még könnyebbé tenni.

kommentek

Breaking news: Indul a Ruby Meetup a.k.a. budapest.rb

2008-08-28 08:36

Apró utalásokat már tettem rá, néhány embernek már említettem az ötletet. Mostantól viszont hivatalos. Indul a budapest.rb, az első és egyetlen magyar találkozó (tudomásom szerint), ami a Rubys / Railses közösséget hivatott összefogni. Havi találkozók lesznek, hasonló légkörben, mint a Newtech meetup.

Idézet a meetup leírásából:

A budapest.rb Ruby fejlesztők és a technológiával ismerkedők érdekében jött létre. A találkozók során a megismerhetjük a többi magyar Ruby fejlesztőt, tanulhatunk egymástól, és megoszthatjuk saját tapasztalatainkat.

Már régóta foglalkoztat egy ilyen esemény szervezésének gondolata, és az utóbbi hónapokban végre összeállt a kép. Már az első alkalom is alakul. Szeptember 17-én lesz a KÉK-ben este hétkor. A részleteket még szervezzük, de már most írjátok fel a naptáratotokba.

Lehet még jelentkezni előadónak az első alkalomra. 1-2 előadást szeretnénk még a jelenleg bejelentettek mellett, amelyek max. 5-10 perc hosszúságúak kellene legyenek. Akinek lenne kedve előadást tartani írjon nekem egy mailt a meetup kukac lackac.hu címre.

Szóval regisztráljatok a budapest.rb oldalán, RSVPzzetek, és gyertek el. Meglátjátok legendás lesz!

kommentek

Díjazott lett a Callout

2008-08-24 13:09

Említésre méltó hír itt a blogon is, hogy az Extend Firefox 3 versenyen díjazott lett a Callout firefox kiterjesztésem. A kiterjesztés lehetővé teszi, hogy web alkalmazások és Greasemonkey szkriptek az operációs rendszer értesítő rendszerén (mac alatt Growlon, windowson az a taskbarból kibújó izén) keresztül tudjanak üzenetet küldeni a felhasználónak.

Az új Firefox kiterjesztés kategóriában kerültem a hat futottak még díjazott közé. A nyereményem egy Firefox Ogio Messenger Bag megtömve pólókkal, könyvekkel, matricákkál és egyéb jóságokkal. Ezen kívül pedig egy ActiveState Komodo licensz (meséljen nekem erről valaki, aki már használta), bögre meg póló (gondolom ActiveState brandelt). A legjobban a messenger bag izgat, mivel megérett már az idő egy új táskára, ez pedig remélhetőleg ideális lesz a városi notebook hurcolászásra.

Persze örültem volna még egy Macbook Airnek (azt kapott a három győztes), de nem is számítottam rá, hogy nyerek. Úgy voltam vele, hogy ha már belefogtam ebbe a kiterjesztés fejlesztős dologba, akkor azzal nem veszítek, hogy benevezek párat. A Callout kiterjesztésen kívül még a Tea Time indult. Nevezéskor annak mondjuk nagyobb esélyt jósoltam, de a Firefox 3-ra updatelt kiterjesztések kategóriában győztes Read It Later kiterjesztés tudja mindazt, amit a Tea Time nyújt, és még többet is. Szóval nem lepett meg, hogy nem a Tea Time-ot választották. És meg kell jegyeznem, hogy a Read It Later tényleg nagyon jó lett.

Az eredményekről több blog is beszámolt, ami hozott egy kis extra látogatottságot az angol project page és a GitHub repo oldalakra, de azért semmi túl komoly. Itt van pár bejegyzés azok közül, amiket találtam:

kommentek

IRB tippek

2008-08-18 01:51

Fejlesztés közben sokszor előfordul, hogy ki szeretnénk próbálni valami új gemet, letesztelni egy osztály működését, vagy csak felfedező körútra indulnánk. Ilyenkor a legjobb nyitni egy terminált és indítani egy IRB promptot. Jól beállítva és helyesen kezelve a Ruby programozó leghasznosabb eszköze lehet. Az alábbiakban adok pár tippet, amivel még hatékonyabban tudjuk használni a programot.

Aki esetleg nem ismerné, hogy mi is ez az egész: az IRB az Interaktív Ruby Shell rövidítése. Elindítás után egy promptot kapunk. Írjunk ide valamilyen Ruby kifejezést, és nyomjunk entert. Azonnal meg is kapjuk a kifejezés értékét. Itt minden megengedett, ami amúgy a Rubyban az. Betölthetünk külső könyvtárakat, írhatunk komplett osztályokat és modulokat, egyszóval mindent.

>> 1+3
=> 4
>> "chunky bacon".split
=> ["chunky", "bacon"]
>> 3.14.class
=> Float

.irbrc, Wirble

Itt jön a fontos rész. Az IRB induláskor megnézi, hogy van-e a $HOME könyvtárunkban egy .irbrc nevű fájl. Ha van, akkor ezt betölti. Mivel maga az IRB is egy Ruby osztály, ami kezeli a program futását, ezért természetesen az .irbrc fájl is egy ruby szkript. Minden amit itt csinálunk, az le fog futni az IRB indulása előtt. Első és legfontosabb tipp:

require 'rubygems'

Innentől kezdve nem kell mindig kiadnunk ezt a parancsot, ha egy gemet szeretnénk használni. A következő lépés a Wirble gem telepítése. Ez olyan további hasznos dolgokkal egészíti ki az IRB-t, mint például history, tab-completion és a visszatérési értékek színezése. Ha fent van, akkor a fenti sorhoz a következőket lehet még hozzáadni:

require 'wirble'
Wirble.init
Wirble.colorize

Az utolsó sor nem is szükséges, ha nem szeretnénk színes IRB-t.

Hol van definiálva?

Tovább fejleszthetjük az .irbrc fájlunk a Unix rendszerekből ismerős which parancshoz hasonló metódussal. A "Where is this defined?" metódus segítségével egy blokkon belüli metódushívásból el tudjuk dönteni, hogy az adott metódus hol van definiálva (a példában which-re aliasolva).

>> which { Time.zone }
=> "ActiveSupport::CoreExtensions::Time::Zones::ClassMethods received message 'zone', Line #14 of /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/core_ext/time/zones.rb"
>> which { [].map(&:name) }
=> "Symbol received message 'to_proc', Line #10 of /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/core_ext/symbol.rb"

Az utolsó példából az is látszik, hogy a metódus bonyolultabb kifejezésekkel is megbírkózik. Néha azonban előfordul, hogy nem pont azt találja meg, amit keresünk, vagy éppen nem talál semmit. Mindenesetre néha hasznos tud lenni.

String#to_proc

A Rails ActiveSupport moduljából ismerős lehet a Symbol#to_proc metódus, aminek a segítségével könnyen tudunk iterációkat írni.

users.select(&:active?).collect(&:email)

Ennél sokkal rugalmasabb Reginald Braithwaite String#to_proc implementációja. Pár példa, hogy mikre képes (bővebb bemutatót a hivatkozott blogbejegyzésben láthattok):

(1..5).map &'*2'   # => [2, 4, 6, 8, 10]
(1..5).inject &'+' # => 15
users.map &'.albums.first.title'

Az általam jelenleg használt .irbrc fájl tartalmazza az összes említett feature-t. Megtekinthető és letölthető Gistről. Használjátok kedvetek szerint.

Utility Belt

Korábban már hallottam egy Wirble-nél még több mindenre képes IRB enhancement gemről, aminek Utility Belt a neve. A bejegyzés írása közben ismét rátaláltam. Ez tudja mindazt amit a Wirble (tulajdonképpen arra épül), és tartalmazza a String#to_proc metódust is. Ezen túl még nagyon sok minden hasznos dolgot nyújt. Próbáljátok ki ezt is. Én biztos megteszem.

kommentek

Ruby Crash Course Prezentációm

2008-08-12 13:43

Ma tartottam az első belső képzést a Virgoban Ruby alapok témakörben. Egy szűk órás prezentációval indult az alkalom, amivel bemutattam a nyelv tulajdonságait, nyelvi elemeket, sajátosságokat. Inkább csak bevezető jelleggel. A prezentáció után interaktív kísérletezgetés folyt, aminek keretében további dolgokra derült fény (privát és védett metódusok, modulok, mi az a Mix-in, nyílt osztályok). Játszottunk IRB-vel, és raktunk az ~/.irbrc fájlba pár hasznos dolgot.

A Virgos vezető fejlesztői feladatkörömhöz tartozik a Rubys belső képzések szervezése, vezetése is. A cégen belül egyre több helyen használjuk a nyelvet. Vannak Railses projektek, JRubys projektek, és néhány üzemeltetői feladat is igényel Rubys ismereteket (Capistrano FTW). Ennek kapcsán egyre több ember kóstól bele a Rubyba, olyanok is, akiknek ez az első találkozása a nyelvvel. Emellett elég nagy érdeklődés alakult ki olyanok körében is a nyelv iránt, aki a munkája során amúgy nem használná.

Emiatt döntöttem úgy, hogy az első képzés egy bevezető lesz a Ruby rejtelmeibe. Sajnos kevés időm jutott a prezentáció elkészítésére, és ettől érzésem szerint az egész alkalom kicsit szétszórt lett. Az eddigi visszajelzések alapján azonban úgy tűnik hasznos volt. Úgy döntöttem, hogy a prezentációt itt elérhetővé teszem mások számára is. Remélem kontextus nélkül is érthető lesz. Sok dolog kimaradt belőle, amit eredetileg bele akartam rakni, de már nem jutott rá idő. Utólag viszont már nem fogom bővíteni. Ha lesz még ilyen alkalom, akkor inkább újraírom.

kommentek

RubyFringe, a legjobb Ruby konferencia ever

2008-07-24 15:31

Rég nem írtam, tudjátok az okát. Nehéz visszarázódni: sok a munka, kevés a szabadidő. Ilyenkor mindig nehéz (lehetetlen?) behozni a lemaradást. Rengeteg téma van, amivel szeretnék foglalkozni, utánaolvasni, kísérletezni, de nem jut rá idő. Így inkább nem töröm magam. Írok rövid bejegyzéseket, és rátok hagyom a többit.

Itt van például a RubyFringe. Előre is jónak tűnt, utólag meg mindenki áradozik róla. Zed Shaw például egyenesen az eddigi legjobb ruby konferenciának titulálta, és ezzel nincs egyedül.

Az előadásokra kevesebb kód több filozófia, és családias hangulat volt jellemző. Joey deVilla minden előadáson szorgosan jegyzetelt, ezekből elég részletes képet lehet kapni az elhangzott témákról. Végül itt egy beszámoló az egyik szervező tollából is.

Az első olyan konferencia, amire tényleg sajnálom, hogy nem volt lehetőségem elmenni. Talán majd legközelebb, mert biztos, hogy lesz legközelebb. Addig pedig itthon kellene felpezsdíteni egy kicsit az életet. Vannak is ötleteim, de erről majd később.

kommentek

Rövid szolgálati közlemény

2008-07-09 10:17

Rövid szolgálati közleményünk következik.

Az elmúlt hetekben nem tudtam írni a blogra, aminek főként a jó ideje gyógyulni nem akaró kötőhártyagyulladásom az oka. Emiatt minden programban másfélszeresre növeltem a betűméretet, és még így is bezoomolva gépezek sokszor, mivel amúgy homályos lenne a kép (ezt is így írom).

Az ügyeletes és rendelői orvosokról is lehetne írni bőven hozzá nem értés és nemtörődömség témakörben, holnap új dokit próbálok ki. És ahogy ilyenkor lenni szokott a múlt heti betegszabimon pont azokkal a dolgokkal nem tudtam foglalkozni, amikkel amúgy a "szabi" miatt tudtam volna, mert végre időm az jutott volna rá. Ilyenkor veszi észre az ember, mennyire függ a techinkától. Nem is jöhetett volna sokkal rosszabbkor ez a betegség. Virgóban amúgy is szűk határidők, és egyéb súlyosbító tényezők is vannak.

Nem is nyavalygok tovább, ennyit is csak azért, hogy értsétek miért nem írtam mostanában. Nektek vígasztalásul annyit, hogy tartogatok pár érdekes bejegyzés ötletet, amiket megírok, amint lesz időm, energiám és természetesen látásom hozzá.

Rövid szolgálati közleményünket olvasták.

kommentek

Nemkívánatos ételek szűrése Netpincéren, Greasemonkey script

2008-06-10 02:28

Nem eszek sertéshúst. Meg néhány más húst sem. Akit jobban érdekel, hogy miért nem, az Mózes 3. könyvében a 11. fejezetben megtalálja a magyarázatot. Szóval eléggé zavar, amikor netpincéren egy több oldalas listában kell végigböngésznem, hogy mi az ami jó nekem.

Ennek megkönnyítésére csináltam egy Greasemonkey Scriptet, ami kiszedi azokat a sorokat, amik biztos nem lesznek jók. Látva a twitteres lelkesedést a szkript iránt ezt itt is elérhetővé teszem. Mások is használhatják, hogy mondjuk kiszűrjék az ananászt, tengeri herkentyűket, etc. tartalmazó ételeket.

Telepítés: Netpincer 0.1

Beállítható, hogy milyen összetevőkre szűrjön a szkript. Ezt az about:config oldalon lehet megtenni. Érdemes előtte, de már a szkript telepítése után legalább egyszer meglátogatni a Netpincér oldalát. Ekkor elérhető lesz egy greasemonkey.scriptvals.http://lackac.hu/Netpincer.pattern nevű beállítás, amit át kell állítani arra, ami nekünk tetszik. Ez lehet egy vesszővel elválasztott lista azokról, amiket nem szeretünk, vagy egy reguláris kifejezés. Például "sonka, ananász, csiga" v. "/sonk[aá]|ananáss?z|csig[aá]/i". A példában említetthez hasonló konverziót a vesszővel elválasztott listán végrehajtok, így reguláris kifejezést az ennél bonyolultabb szűrésekhez érdemes csinálni.

Tapasztalatokat, feature requesteket kommentekbe írjátok.

kommentek

« Újabb bejegyzések | Régebbi bejegyzések »

Ez itt Bácsi László blogja Rubyról, Ruby on Railsről, JavaScriptről, saját projektekről.

Ajánlj engem