Bye bye 2013

Máme tu posledný deň roka 2013, tak by sa aj patrilo spraviť rekapituláciu.

Avšak pravdupovediac som sa na to nijako nepripravoval a ani som nemal na rok 2013, žiadne špeciálne cieľe.

Každopádne FUCK 2013 and WELCOME 2014 ;).

Ale k veci. Tento rok som znovu dal výpoveď. Proste ma to znovu prestalo baviť v korporácii a ani ma nebavila konkrétna robota čo som začal robiť tento rok. Okrem toho som sa dostal k programovaniu a nakoniec som si našiel aj full time job ako programátor. Tak som skončil v HP!

Musím povedať, že to je super pocit. A okrem toho, že som dal výpoveď som, tak teraz už viem, že ak nebudem niekde spokojný tak nebudem stresovať, že čo sa stane ak odídem… proste jednoducho odídem. Tam vonku je milión príležitostí, tak nemá zmysel márniť život v robote čo človeka nebaví.

Okrem toho som sa tento rok začal viac (oveľa viac) učiť. A hlavne lepšie a viac systematicky. Učím sa ako byť lepším programátorom, stále sa zlepšujem v angličtine (už čítam skoro len anglické knihy), učím sa ako byť lepším človekom (toto je najťažšie ;).

Čiže aj napriek tomu, že 2013 bol nahovno, tak sa to skončilo viac ako dobre (opakujem, zmenil som JOB! ;) a na 2014 mám oveľa viac plánov ako som mal v 2013, keď som si nejak nevedel dať dokopy, že čo vlastne chcem…

Díky za pozornosť a predčasné p.f. 2014 všetkým!

Idem na to globálne

Minulý týždeň som si založil nový blog. RubyBeginner.com. Dôvod? Chcem sa propagovať ako Ruby on Rails programátor. A som stále začiatočník, preto ten názov. A ked ním nebudem, tak stále to bude dobrý názov, keďže sú tam tipy pre začiatočníkov. Čiže doménu som vychytal a je to win win :D

Ale k veci. Ani neviem prečo ma to nenapadlo skôr. Na slovensku je X rails developerov a Y firiem, ktoré o nich majú záujem. Ale vo svete je ich rádovo viac, takisto spolu s ostatnými začiatočníkmi. Pôvodne som chcel občas písať nejaké Ruby on Rails články sem. Ale to by asi ani nemalo zmysel.

Potom som sa prihlásil do thoughtbot apprentice programu a keď som im chcel neskôr poslať follow up email, tak som si uvedomil, že sakra nemám im ani čo nové ukázať. Tak som sa okrem iného rozhodol pravidelne blogovať na rubybeginner.com a mám v pláne tam pridávať nové veci čo sa pribežne učím. A aspoň prvý mesiac by som chcel pridať jeden článok každý pracovný deň. Tak dúfam, že mi vydrží inšpirácia ;).

Potrebujete natočiť video? Mám pre Vás tip na kameramana…

Dnes to bude reklamný článok. Rozhodol som sa, že spravím reklamu môjmu “malému” bratovi ;). O jeho stránke shadex.sk som už písal. Konkrétne o tom, aké jednoduché bolo nahodiť ju.

Teraz tam už pribudol aj nejaký obsah (na môj vkus viac ako treba, ale to nevadí), hlavne videá, ktoré sa mi páčia. Tak nastal čas trochu mu urobiť reklamu ;).

Ak teda potrebujete natočiť nejaké video, napríklad z nejakej akcie a podobne, alebo potrebujete pomoc od šikovného kameramana, tak klikajte na shadex.sk a ozvite sa môjmu bratovi.

Moja prvá reálne používaná Ruby on Rails aplikácia

Dnes Vám predstavím svoju prvú reálne používanú Rails appku. Síce ju používam len ja, keďže je to aplikácia len pre jedného užívateľa, ale to nevadí ;). Používam ju každý deň a ušetrila mi už kopec času.

notes

Aplikáciu môžete nájsť na Githube a volá sa Notes. Ako z názvu vyplýva ide o aplikáciu na ukladanie poznámok. Nič špeciálne, ale o to viac praktické. Vytvoril som ju preto, aby som skonsolidoval svoje technické poznámky, čo som si robil v robote a aby som k nim mal rýchly prístup vrátane vyhľadávania.

Nahádzal som do nej všetky svoje poznámky, ktoré som mal predtým v .txt súboroch. Okrem toho si tam ukladám aj veci týkajúce sa Rails, ktoré chcem mať hneď  po ruke. Teraz keď potrebujem nájsť niečo čom som už predtým použil/videl, tak namiesto prehrabávania sa mojimi poznámkami, alebo hľadania cez google mám veci po ruke za pár sekúnd, namiesto minút. Nárast efektivity je očividný ;).

Vyhľadávanie je rýchle aj vďaka tomu, že výsledky sa vypisujú už vtedy keď ešte len zadávam hľadané slovo, čiže väčšinou sa k niečom dostanem doslova za sekundu.

A kde to môžem vyskúšať?

Ako som spomínal, tak aplikácia je robená len pre jedného užívateľa. Avšak ak ste trochu technický zdatný, tak si ju môžete sami nahodiť na Heroku a používať ju pre seba. Návod na spojazdnenie aplikácie nájdete na už spomínanom Githube.

Ruby on Rails: Lokalizované formulárové polia pre čísla a dátum

Ak ste v Rails programovali aplikáciu pre slovenských užívateľov, tak ste sa mohli stretnúť s tým, že dáta vo formulároch sa nevypisujú v takom formáte, ako by ste si želali. Napríklad čísla s desatinnou “bodkou” namiesto čiarky. Alebo dátumy vo formáte 2013-07-19 namiesto 19. 7. 2013.

Bohužiaľ s týmto si štandardná i18n rails lokalizácia neporadí, preto je vhodné napísať si vlastné helper metódy. Toto sú tie moje, fungujúce v Rails 4.

# helpers pre formularove polia
# mozete ich vlozit do app/helpers/application_helper.rb
class ActionView::Helpers::FormBuilder
  def localized_date_field(date, params_hash = {})
    params_hash[:value] = object.send(date).nil? ? nil : I18n.localize(object.send(date))
    text_field date, params_hash
  end

  def localized_number_field(number, params_hash = {})
    params_hash[:value] = object.send(number).nil? ? nil : object.send(number).to_s.sub('.', ',')
    text_field number, params_hash
  end
end

Potom Vám stačí v šablóne pre formulár zavolať len nasledujúci kód pre dátum:

<%= f.localized_date_field :date %>

prípadne číslo:

<%= f.localized_number_field :number %>

Ak máte nastavené aj locale na slovenčinu, tak sa už dátumy a čísla budú zobrazovať správne.

Avšak ostáva tu ešte jeden problém. A to, že Rails pri ukladaní čísla odignoruje všetko čo je za čiarkou. Čiže z 3,14 sa stane 3.

Toto treba ošetriť na úrovni modelu a treba vytvoriť vlastnú set metódu pre daný atribút. Príklad pre atribút number.

# hack, aby sa ',' konvertovala na '.'
def number=(value)
  if value.respond_to?('sub')
    value.sub!(',', '.')
  end
  write_attribute(:number, value)
end

Čo sa dátumu týka, tak tam Rails korektne spracuje aj dátum zadaný v slovenskom formáte.

Nie je na to nejaký gem?

Ale áno je, volá sa delocalize a toto všetko robí automaticky. Bohužiaľ s Rails 4 nefunguje, čiže mne bol nanič ;). Moje Ruby a Rails znalosti nie sú ešte na takej úrovni, aby som ho dokázal upraviť na Rails 4. A okrem toho sa mi ten kód v ňom zdal prasácky. Ale to možno bude len tými znalosťami ;).