Lynda.com – Ruby on Rails Essential Training

Ruby on Rails (essential training)Šiomis dienomis peržiūrėjau Ruby on Rails Essential Training is lynda.com.

Medžiaga susideda iš 17 dalių pateiktu 2 CD. Pradedant nuo 3 dalies prie kiekvieno filmuko yra prikabinta Rails aplikacija, tokia, kokia ji yra filmuko pradžioje ir rekomenduojama visus veiksmus atlikti kartu su autoriumi.

Pirmoje dalyje pasakojama apie Ruby on Rails, DRY, conventions bei MVC architektūrą, kas man asmeniškai buvo visai įdomu.

Antrą dalį – Ruby on Rails instaliaciją sėkmingai praleidau.

Trečioje, ketvirtoje, penktoje bei šeštoje dalyje iš pagrindų pasakojama apie tai kaip Rails’as veikia, aiškinami tokie dalykai kaip view, controllers, file structure, CRUD, routes, (private, public) actions ir panašiai. Šios dalys žiūrėjosi ganėtinai įdomiai, nes nors dirbu su Rails’u kiekviena diena, dažnai tiesiog nesusimastau kodėl tas veikia vienaip ar kitaip, tad išgirsti trumpa lakonišką paaiškinimą buvo ne pro šalį.

Septintoje dalyje pristatoma Ruby programavimo kalba. Šiuo atžvilgiu, manau geriau tiesiog apsilankyti try ruby! puslapyje.

Aštunta dalis – troubleshooting nieko naujo nepasakė: write comments, look for the errors in logs ir break problems into pieces.

Devinta dalis – Models patiko labiausiai. Mes, mašinistai , esame pripratę (ir ne be pagrindo), kad Rails’e modelis – tai duombazės lentelės objektinis atvaizdavimas. O čia autorius nusprendžia eiti kitu keliu ir parodyti kaip veikia modelis be duomenų bazės. Paaiškinamos models, attributes, instances, netgi inheritance sąvokos. Be to ši dalis yra svarbi tuo, kad ją pažiūrėjus net ir didžiausias ignorantas turėtu suvokti MVC.

Dešimta dalis – vėlgi interesting approach. Žingsnis po žingsnio pasakojama apie ActiveRecord parašant SQL kodą, panaudojant ActiveRecord, parašant SQL kodą, panaudojant ActiveRecord… Ši dalis turėtu ypač patikti PHP’ninkams .

Vienuolikta – penkiolikta dalys pasakoja apie muzikos krautuvėlės suprogramavimą. Ir čia laukė didžiausias nusivilimas. Visą laiką tikėjausi, kad autorius tik tik įsibėgėja ir pagaliau “Building Application” skyriuje parodys ką sugeba, o šis skyrius pasirodė tiesiog perrašymu (su nedideliais skirtumais) is Agile Web Development with Rails. Labai bandžiau išgirsti bent kažką originalaus – deja. Be to dirbama buvo su versija 1.16, kurioje (jei man nemeluoja atmintis) tokie dalykai kaip start_form_tag jau buvo deprecated, o pavyzdžiuose pateikiami būtent jie. Tad prieš rasant production code remiantis šia medžiaga reikėtu dar dėl viso pikto užsukti i api.rubyonrails.com.

Bent dalinai išgelbeti padėti dar galejo šešiolikta dalis – Deploying. Visgi tiek yra įdomybiu su production environment, caching, Mongrel, Capistrano. Deja nieko iš to pasakyta nebuvo.

Susumuojant viską mano verdiktas butu toks: jei dar neteko dirbti su Rails, o knygos skaityti nesinori (tačiau ankščiau ar vėliau vis vien teks ) tada Ruby on Rails Essential Training yra geras pasirinkimas. Iš kitos pusės, jei jau teko parašyti vieną kitą Rails aplikaciją, geriau praleisti savaitgalį prie Ruby for Rails arba Rubyisms in Rails.

Upto, downto

Jau gan ilgą laiką dirbu su Ruby, o jis vis dar nenustoja stebinti.

Dirbant su Rails’u (ypač kuriant template’us) dažnai tenka įdėti besikartojančius dummy elementus (pvz. naujienos, meniu punktai ir pan.). Pats neefektyviausias būdas yra žinoma copy-paste. Kurį laiką naudojau kažką tokio:

[code]
< % (1..5).each do |i| %>
Dummy text
< % end %>
[/code]

ir jaučiausi kietas hakeris 😉

Tačiau kažkur giliai viduje žinojau, kad kintamasis “i” čia yra nereikalingas, jutau kad aš atvedžiau jį į gyvenimą, kuriame jam nėra skirta nieko nuveikti, visą laiką kol bus rašomas “Dummy text” gyventi su nepilnavertiškumo kompleksu ir galiausiai išnykti taip ir nepalikus jokio pėdsako šiame pasaulyje.

Tvirtai nusprendžiau daugiau nežaloti nekaltų sielų (nors ir skaitmeninių, gyvenančių vos kelias akimirkas) ir surasti būda kaip galėčiau apsieiti be jų. Ir toks būdas yra!

[code]
< % 1.upto 5 do %>
Dummy text
< % end %>
[/code]

Update: kaip ir buvo pažymėta komentaruose dar gėriau naudoti “times” (kas beje parašyta pačioje Agile Web Development with Ruby on Rails pradžioje =))
[code]
< % 5.times do %>
Dummy text
< % end %>
[/code]

Gera yra žinoti, kad pakeitei kažkam gyvenimą 😉

Great hackers

Šiandien internete aptikau Paul’o Graham’o audio įrašą apie tai kaip surasti, motyvuoti bei išlaikyti neeilinius programuotojus. Šis mp3 tikrai vertas dėmesio. Ar ne vertas? =)

Rašykite savo nuomonę komentaruose.

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.