Getting real

Prieš kurį laiką 37 signals išleido knygutę kurioje aprašomi principai kaip kurti mažesnį, greitesnį, geresnį programinį produktą.

Dabar galima ją nemokamai pasiskaityti internete šiuo adresu: getting real .

Malonaus skaitymo, bei siūlau pasidalinti savo mintimis (jei tokių iškils) komentaruose.

Reikalingas IT administratorius

Faberlic Baltija SIA – tarptautinė įmonė, užsiimanti prekyba kosmetikos priemonėmis ieško IT administratoriaus.

Darbo pobūdis: programinės įrangos bei geležies priežiūra, iškilusių problemų šalinimas. Be to įmonėje veikia Ruby on Rails pagrindu sukurtas extranetas – reikėtu sugebėti jį perimti ar bent jau mokėti palaikyti.

Kontaktiniai duomenys: tel. 2133203 , f.info@lt.faberlic.com

P.S. Veiksmo vieta – Vilnius.

Dinamiškas thumbnail ‘o generavimas

Vakar vienam iš vystomų projektų reikėjo sukurti foto galerijos funkcionalumą. Nieko ypatingo: tiesiog “thumbnail’ai”, kuriuos paspaudus iššoka naujas langas su originalaus dydžio nuotrauka. Kiek panaršius internete sukūriau testinį variantą, kuris rašė dvi bylas: originalą bei thumbnail’ą, tačiau kiek pamąsčius nusprendžiau, jog to paties paveikslo (nors ir skirtingo dydžio) saugojimas bei juo manipuliavimas neatitinka DRY principų =) Tad beliko tik parašyti kodą, kuris dinamiškai formuotu thumbnailą.

Veikimo principas: žemiau pateiktas kodas keliauja į application.rb, ir išbandyti jį galima taip: [jūsų controllerio pavadinimas] / img?src=rails.png

Update: dado1945 prašymu pateikiu sprendimą su thumbnail’ų kešavimų =) (Daugiau apie http kešavimą)
Update2: ištaisiau tikrai kvailą klaidą kai paveiksliukas nekeitė dydžio dėl vienodų matmenų =)
Update3: Rimanto dėka calc_size funkcijos kodas tapo daug gražesnis. Ačiū.
Tikiuosi kažkam padės sutaupyti laiko =)
[ruby]
BASE_SIZE = 200.0

def calc_size(width, height)
ratio = [width, height].max / BASE_SIZE
[width, height].map { |s| s.div ratio }
end

def img
require ‘RMagick’

file = “public/images/#{params[:src]}”
if file and File.exists?(file)

req_last_modified = Time.rfc2822(@request.env[“HTTP_IF_MODIFIED_SINCE”]) rescue nil
last_modified = File.mtime(file)

@response.headers[‘Last-Modified’] = last_modified.rfc2822
if req_last_modified and last_modified < = req_last_modified render_text '', '304 Not Modified' else image = Magick::Image.read(file)[0] width, height = calc_size(image.columns, image.rows) image.resize!(width, height) send_data(image.to_blob, :disposition => ‘inline’, :type => image.mime_type, :filename => file)
end
else
render_text “Image not found!”
end
end
[/ruby]

Ruby on Rails live CD

Šiandien išbandžiau Ruby on Rails live CD (ačiū develop už nuorodą).

Iš pradžių buvau nusiteikęs skeptiškai: sunku mąstyti apie live cd kaip apie programavimo aplinkos įrankį kada jame negaliu išsaugoti nustatymų. Nebent CD butu skirtas programinės įrangos išbandymui, o tam, manau, nepakanka keleto valandų. Iš kitos pusės norint “išbandyti” Ruby on Rails – Instant Rails atrodo labiau logiška alternatyva. Tačiau nežiūrint į šiuos (mano manymu esminius minusus) RoR live CD paliko neblogą įspūdį.

Live CD yra sukurtas PC Linux pagrindu. Perkrovus kompiuterį ir palaukus keletą minučių pasikrauna KDE sąsaja ir vaizdas ekrane yra maždaug toks. Pirmoje eilėje pasigedau muzikos grotuvo (mano giliu įsitikinimu labai dažnai jis tiesiog būtinas produktyviam programavimui =)), tačiau apt-get install mplayer ir mplayer http://di.fm/mp3/trance.pls greitai šią problemą išsprendė.

Toliau buvo smalsu pamatyti ką turime instaliuoto sistemoje – taigi gem list. Čia maloniai nustebino Capistrano (bei žinoma svn).

Programavimui skirtas RadRails buvo pilnai paruoštas darbui: sukurta RoR aplikacija, MySQL duomenų bazė beliko tik paspausti “Start server” mygtuką.

Dirbti su MySQL duombazę įdiegtas patogus (mano manymu) MySQL Administrator’ius.

Taigi nors po valandos “žaidimo” savo nuomonės apie šį Live CD nepakeičiau – jis paliko gerą įspūdį ir pademonstravimui kaip veikia Ruby on Rails nieko neinstaliuojant kompiuteryje jo daugiau nei pakanka.

Ruby vs. PHP našumas

Pastaruoju metu vis girdžiu klausimą dėl Ruby našumo. Ruby ir PHP (bei kitų programavimo kalbų) našumo palyginimus galima rasti čia.

Reikalingi Ruby on Rails programuotojai

Darbą su Ruby on Rails siūlo dar viena įmonė: UAB “Incito” iš Kauno. Pilnas skelbimo tekstas:

UAB Incito ieško “Ruby on Rails” programuotojų pastoviam darbui Kaune ir darbui pagal autorinę sutartį visoje Lietuvoje. Siūlome darba jaunoje inovatyvioje komandoje, idomius ir svarius projektus į jūsų portfolio, lankstų darbo grafiką ir kokybę atitinkantį atlygį.
Kūrybinė gyslelė ir domėjimasis Web 2.0 technologijomis būtų didelis
privalumas.

CV su darbų pavyzdžiais ir neoficialiu motyvaciniu laišku, laukiame
adresu hr [e] incito.lt
Mus galite rasti adresu http://www.incito.lt

Taigi atrodo pradedam pradėti įsibegėti. Taip pat visdar (mano žiniomis) reikalingi Ruby on Rails programuotojai dar šiom įmonėm.

Ruby on Rails pagrindai

Dažnai girdžiu žmones sakant, kad jie norėtu išbandyti Ruby on Rails bet vis nesusiruošia to padaryti, dėl laiko stokos. Taip pat sakoma, kad Ruby on Rails neturi gero IDE redaktoriaus.

Šioje vaizdinėje medžiagoje (screencast) noriu parodyti kaip įdiegti Ruby on Rails bei sukurti paprastą puslapį RadRails pagalba.

Ruby on Rails pagrindai (screencast)

P.S. Busiu dėkingas už pastabas dėl vaizdinės medžiagos: ką galima padaryti geriau, ką norėtumete matyti sekančioje dalyje ir pan. Beje gal kas gali rekomenduoti gerą “screen-grabberį”?

Ruby on Rails – kas tai?

Trumpai: Ruby on Rails yra bylų bei Ruby programavimo kalba parašytų “bibliotekų” rinkinys skirtas www tinklapių kūrimui (angl. framework).Jį galima būtu palyginti su phpnuke arba mambo (atnaujinimas: Sergej Kurakin mano, kad “lyginti (Ruby on Rails) framework su [..] PHP-Nuke [..] yra visishkai nekorektishka“, o Jaroslav Šatkevič siūlo Ruby on Rails lyginti su eZ components bei Zend Framework’u (man pačiam neteko artimiau susipažinti su šiais produktais)) (php), zope bei quixote (python) arba spring bei struts (java).

Better web app” (atsargiai – 380MB =)) – yra vienas geriausių palyginimų kuriuos man teko matyti. Įdomiai ir su jumoru yra apžvelgiamos J2EE, Ruby on Rails, Zope/Plone, TurboGears bei JBoss “sistemos” (beje gal kas nors gali komentaruose parašyti taisyklingą žodžio “framework” vertimą =)). Pagal rezultatus parodytus filmo pabaigoje laimi Zope/Plone, nors aš su tuo niekaip ne sutikčiau. Kiek teko su juo dirbti – jis yra arba per “sunkus” (angl. overkill) paprastiems uždaviniams, arba jame per daug “magijos” kai reikia sukurti kažką sudėtingesnio ir jau nekalbu apie ZODB bei dokumentacijos gausą (yra dar kažkas be ZopeBook?). Paskutinis sakinys yra asmeninė autoriaus nuomonė ir jo tikslas nėra sukelti “ugninius karus” (angl. flame wars) (gal kažkas turi vertimą =)).

Be abejo labiausiai įtikinanti medžiaga susidomėti Ruby on Rails yra video Ruby on Rails svetainėje. Visus be išimties mano pažįstamus web programuotojus sužavėdavo ne pasakojimai apie tai koks Ruby on Rails šaunus, o video “kaip sukurti blog’ą per 15 minučių” parodymas.