Fork me on GitHub


Rails + strefy czasowe

Domyślna strefa czasowa:

config/application.rb

config.time_zone = 'Warsaw'

Preferencje użytkowników:

Dodaj pole timezone do modelu.

walidacja w modelu

validates :timezone, 
  :inclusion => { :in => ActiveSupport::TimeZone.all.map(&:name) }

widok

<%= label_tag t('users.form.timezone') %> <br/>
<%= time_zone_select(:user, :timezone) %>

app/controllers/application_controller.rb

before_filter :set_user_time_zone
 
protected
def set_user_time_zone
  Time.zone = current_user.timezone if logged_in?
end

Posted on : lip 10 2011
Kategorie: programowanie, Rails, Ruby |

Rails app + Git revision na stronie

Podanie bieżącej wersji aplikacji gdzieś na stronie jest przydatne – dodatkowe informacje przy zgłaszaniu błędów + lanserski efekt.

Bardzo często serwujemy aplikację wprost z repozytorium Gita, więc czemu nie podać rewizji?

Użyjemy git describe, które wyświetla wersję w postaci:
ostani_tag-odległość_od_taga-początek_sha1

Z przełącznikiem --dirty dodaje na końcu -dirty jeśli working tree nie jest czyste.
(musi być przynajmniej jeden tag w repozytorium)

Wydobądźmy interesujące nas informacje raz, przy ładowaniu aplikacji.
lib/git_info.rb

module GitInfo
  BRANCH = `git status`.split[3]
  REPO_VERSION = `git describe --dirty`
end

Można to zrobić za pomocą gemu grit, jednak zrezygnowałem z dodawania zależności.

Rails 3 nie ładuje automatycznie plików z lib/. Można go załadować pojedynczo lub włączyć ładowanie wszystkiego z lib:
config/application.rb

    config.autoload_paths += %W(#{config.root}/lib)

app/views/layouts/application.html.erb

...
<div id="footer">
    <div id="version">
        <span id="branch"><%= GitInfo::BRANCH %> branch</span>
        <span id="revision">
            rev. 
            <span id="number">
                <%= GitInfo::REPO_VERSION %>;
            </span>
        </span>
    </div>
</div>
...

+ trochę magii w CSSie i otrzymujemy przyjemny rezultat z początku wpisu.


Posted on : lip 03 2011
Kategorie: Git, programowanie, Rails, Ruby |

Gitolite + Redmine

Github:
https://github.com/ivyl/redmine-gitolite

Historia:
Potrzebowałem czegoś co dałoby mi dostęp do repozytoriów Gitolite z poziomu Redmine.
Powszechnym podejściem jest ustawianie zadań crona, które co jakiś czas uaktualniają lokalną kopię repozytorium do której dostęp ma Redmine.
Problemem jest ręczne dodawanie uprawnień i pamiętanie o gwarancji dostępu dla użytkownika uruchamiającego Redmine.

A co z zarządzaniem kluczami dla różnych użytkowników? Co z automatycznym nadawaniem praw do projektu?
Znalazłem dwa rozwiązania – zaniedbane i niekompatybilne ze sobą.

https://github.com/kahseng/redmine_gitolite_hook

https://github.com/jhogendorn/redmine-gitolite

Pierwszy dawał hooka umożliwiającego automatyczne aktualizowanie lokalnej kopii repozytorium przez redmine,
drugi umożliwiał zarządzanie gitolitem (stare pliki konfiguracyjne, nie działał).

Przysiadłem nad nimi w wolnych chwilach i tak powstał mój redmine-gitolite.

Zachęcam do testowania/używania.
Wszelkie potrzebne informacje w README


Posted on : lip 01 2011
Kategorie: internet, Open Source, programowanie, Ruby |

„Programming in Scala” za darmo!

Od jakiegoś czasu, za darmo dostępna jest pierwsza edycja „Programming in Scala”. Nie wiem jak to przeoczyłem. Zachęcam do lektury (pisana m.in. przez samego Oderskyego).


Posted on : maj 21 2011
Kategorie: programowanie, Scala |

db4o

Kolejna prezentacja przygotowana na koło naukowe. Tematem jest otwarta, obiektowa baza danych. Tym razem w showoffie. Może być dziwnie wyświetlana na operze (FF4 i Chromium radzą sobie bez problemów).

http://presentations.hiler.pl/db4o/

Edit:
Teraz dostępna na Issuu oraz jako PDF


Posted on : kwi 02 2011
Kategorie: Java, Open Source, prezentacje, programowanie |

gedit-mate żyje!

Pamiętacie gedit-mate, zestaw pluginów/themów/itp. do gedita umilających programowanie? Okazuje się, że żył przez pewien czas własnym życiem.

Dorobił się 59 watchów i 9 forków. Kilka osób zadbało o aktualizację i nowe pluginy. Jestem dumny.

Ostanio zainteresowałem się nim ponownie. Dodałem zmiany zrobione przez innych do oryginalnego repozytorium. Niedługo przetrzebię pluginy i wydzielę niekompatybilne z nowszymi geditami (albo spróbuję ukompatybilnć). Znalazłem przypadkiem repozytorium pluginu gedit-run, którego zostawiłem w połowie rozgrzebanego. Wypadało by dokończyć.

Ostatnio stałem się bardziej sumienny z pracą nad darmowymi projektami, więc możecie liczyć na kontynuację.


Posted on : mar 13 2011
Kategorie: Linux, programowanie, projekty |

Wprowadzenie do Actor Model

W ramach koła naukowego kontynuowałem cykl prezentacji o alternatywnych językach na JVM i Scali. Tym razem było o aktorach. Poprzednie prezentacje zostały uaktualnione/poprawione.

Aktorzy – współbieżność sterowana asynchronicznymi wiadomoścami

Open publication – Free publishingMore actor model

Posted on : mar 13 2011
Kategorie: prezentacje, programowanie, Scala |

ZSH

Nadszedł taki tydzień, że mam dużo do roboty, więc postanowiłem przysiąść i zrobić coś zupełnie innego niż powiniennem – skonfigurowałem zsh porządnie. Teraz działa i jest ładnie. Postarałem się by całą konfikurację było wygodnie aktualizować i personalizować (używam na wszystkich maszynach).

Polecam wszystykim przesiadkę z basha (jesli ktoś się jeszcze nie domyślił zsh to shell) . Jest go znacznie łatwiej konfigurować. Wygodniejszy, przyjaźniejszy, ładniejszy. Spróbujcie. Przejrzyjcie przykładową konfigurację a powinniście się przekonać.

Więcej w README repozytorium na githubie (link poniżej).

zsh-config


Posted on : mar 12 2011
Kategorie: Linux, programowanie, projekty |

Prezentacja JVM + Scala

Dzisiaj na kole naukowym, miałem okazję poprowadzić dwie prezentację. Pierwsza dotyczyła języków programowania na JVM, w której skupiłem się głównie na sensie i zastosowaniach,  druga natomiast stanowiła krótki wprowadzenie do Scali.

Mam nadzieję, że nigdzie na załączonych slajdach nie skłamałem.

Prezentacje można ściągnąć: JVM i Scala

lub do obejrzenia na Issuu:

Open publication – Free publishingMore jvm




Posted on : lis 18 2010
Kategorie: Java, prezentacje, programowanie, Ruby, Scala |

Python Challenge (in Ruby…)

Dzięki Radarkowi poznałem Python Challenge. Jeśli ktoś zna notpron, dobrze się bawił i zna się trochę na programowaniu to polecam. W tytule jest co prawda Python, ale niemal wszystkie zadania da się rozwiązać w czymkolwiek (niektóre nawet z poziomu shella i w klikanych programach).

Do tej pory tylko do rozwiązania 5 zadania była potrzebna znajomość Pythona, jeśli nie znacie możecie zerknąć niżej.

Spoilery (rozwiązania w Ruby):
Więcej »


Posted on : lis 23 2008
Kategorie: programowanie, Python, Ruby |