Sztuka prezentacji – quiz

Kończę obecnie książkę o sztuce prowadzenia prezentacji, zbliżając się do ostatnich rozdziałów znalazłem przykład jednej prezentacji która zrobiła na mnie wrażenie. ‘Shift happens’ (prawie jak podobnie brzmiąca strona z GNU.org :) ) – w wersji książkowej pod koniec ma bardzo ciekawy quiz który stał się motywem powstania tego wpisu:

Podaj nazwę kraju:

  • Najbogatsze na świecie
  • Największa armia
  • Światowe centrum biznesu i finansów
  • Najsilniejszy system edukacji
  • Światowe centrum innowacji i inwencji
  • Waluta jest światowym standardem
  • Najwyższy poziom życia

Odpowiedź znajdziecie bezpośrednio w prezentacji na Slide Share lub przeszukując stronę projektu.

Idea jest na tyle nośna że urosła wokoło niej mała społeczność – świadczyć o tym może chociażby ilość różnych wersji

Po szkoleniu w Gdańsku

Gdańskie szkolenie z RoR wyszło całkiem, całkiem :), ale dla mnie chyba najważniejsze są wyciągnięte wnioski na przyszłość: pamiętać by zacząć od ‘bloga w 15 minut‘ i nie przeginać z linijkami typu:

# Zmiana stringa zawierającego nazwę klasy typu jednostki na klasę np. UnitDetail::Hufiec
def more_detail
    self.unit_detail.unit_type.constantize.find_by_unit_id(self.id)
end

kiedy szkoli się niedoświadczonych :) (wcześniejsza wersja była z eval’em ;) ).

Zdjęcia oczywiście są od jakiegoś czasu w galerii.

Jako bonus mogę dorzucić fotografie ze spaceru po plaży w Sopocie: (zatrzymałem się w Gdańsku jeszcze dwa dni dłużej u Johnego aby po pracy popracować nad nowym ZHR.pl).

Jak zamienić drzewo w tablicę hash’y (acts_as_tree -> JSON)

Problem rysuje się następująco: istnieje model Unit zawierający spis jednostek (według plugin’u acts_as_tree) a chcemy uzyskać z niego tablicę obiektów Hash (zagnieżdżających się w sobie) a później zamienić w strukturę danych JSON. Niestety nie istnieje metoda to_json_via_hash_and_array ;). Można poradzić sobie z tym sięgając po rekurencję.

Funkcja transformująca w drzewo wygląda następująco:

    # Tworzymy po kolei elementy tablicy zawierające hash w którym /jeśli istnieją potomne jednostki/ tworzone są kolejne tablice z hash'ami
    def tree(roots)
      tab = Array.new
      roots.each do |root|
        hash = {}
        hash[:id]  = root.id
        hash[:txt] = root.name
        children = root.children
        if children.length > 0
          hash[:items] = tree(children)
        end
        tab << hash
      end
      tab
    end

A jej użycie jest już banalne:

   # Ciekawe czy można krócej?
   units = {}
   units = tree(Unit.find(:all, :conditions => [ "parent_id = 0" ]))

Mając już tą upragnioną tablicę można przerobić ją na JSON:

   # Niespodzianka ;)
   units.to_json

Ale po co to wszystko? :), aby w widoku wrzucić do biblioteki JavaScriptowej która przerabia takie struktury danych na piękne rozwijane drzewa.

Polecam!

W jednej linijce

Wczoraj pracowałem nad generowaniem pdf’ów w Railsach (Prawn & Prawnto) – generalnie bardzo fajna sprawa jednak trzeba uważać przy stosowaniu metody group na bounding_box’ach (nieumiejętnie stosowana rozwali wam powtarzającą się tabelkę przez kilka stron)… ale nie o tym chciałem pisać :).

Wpis ten ma na celu podzielenie się problemem w którego się wczoraj bardzo wkręciłem, a wyglądał on następująco:

Mamy tabelę której kolumny nie rozszerzają się gdy ich zawartość rośnie (w x-ach) – można przyjąć że jest ona stałym tłem, a my chcemy by tekst który w nią wrzucamy zawsze się zmieścił (w problematycznych przypadkach przechodził do nowej linii – w tym konkretnym: były to jednowyrazowe nazwy jednostek miary na fakturze).

Rozwiązanie wygląda tak (zmienną zastąpiłem tekstem by łatwiej było wkleić do konsoli Railsów):

    "kilogramy".scan(/./).in_groups_of(4, false).collect {|x| x.to_s }.join("-\n")

(najpierw string dzielony jest na tablicę znaków, następnie zamieniany na tablicę składającą się z tablic cztero-elementowych, później każda z nich zamieniana jest na string a stringi są łączone myślnikiem i znakiem nowej linii :) ).

Ciekawe czy da się to zrobić szybciej/lepiej i jak by to zrobił jakiś guru od PHP ;) (jakiegoś frameworka PHP).

Jak to z serwerem ZHR.pl było…

Zapraszam do obejrzenia foto-video relacji z instalacji serwera ZHR.pl

Nowy serwer HP dla ZHR.pl – z bliska :)

Czyli jak to na prawdę było :), szybki pokaz zdjęć z Poznańskiej akcji instalacji wymarzonego serwera HP dla ZHR.pl (maszyna to HP ProLiant DL380 G6 z dwoma Quad-Core Intel Nehalem obsługującymi Hyper-Threading – to tak jak byśmy mieli 16 procesorów :), czterema dyskami SAS 450 GB 15000 obr., dwoma 1000 GB do backupów, możliwością wpięcia ponad 190 GB RAM… wymieniać mógłbym długo. System na który postawiliśmy to OpenSolaris (z mojej perspektywy to najlepszy wybór ze względu na ZFS i Zony.

Zdjęcia z Gostynina

Pod adresem http://przymusiala.net/galeria/v/2009/metodyczne/ znajdują się zdjęcia z jednodniowej wyprawy do Zgrupowania Łódzkich Kursów Metodycznych i Instruktorskich w Gostyninie. Zdjęcia ważne szczególnie dla uczestniczek i uczestników – zapraszam!

Zdjęcia ze Zlotu XX lecia

Pod adresem http://przymusiala.net/galeria/v/2009/zlot/ można będzie oglądać moje zdjęcia (niestety jest ich tylko trochę gdyż prace w ZCI pochłaniają 150% mojego czasu..)

Zdjęcia z Obozu Lemkowyna 2009

Wróciłem dziś (między 5 a 6 rano) do Łodzi z obozu (dość niestandardowego :) : 50 kobiet +  2 mężczyzn będących na stanie zgrupowania, obóz był wędrowny mimo iż uczestniczą w nim drużyny młodszoharcerskie).

Zapraszam do obejrzenia zdjęć:

http://przymusiala.net/galeria/v/2009/oboz-337-301-Matrix/

Albo do pobrania na dysk:

http://przymusiala.net/pliki/Oboz-337-301-Matrix.zip

Ruby on Rails i php w jednym domu stały czyli Passenger vs. FastCGI na DreamHost.com

Kilka dni temu podczas zmiany grafiki i silnika na przymusiala.net musiałem się zmierzyć z problemem uruchomienia starych skryptów php (blog, galeria, wiki…)  wewnątrz nowej aplikacji RoR.  Próbowałem wielu sposobów z symlinkami i plikami .htaccess jednak okazało się że mod_rails (Passenger) nadpisuje wszystkie dyrektywy pliku htaccess! (jest jedna instrukcja która to wyłącza jednak wtedy nic już nie działa ;) ).

Rozwiązanie problemu wygląda tak: Read the rest of this entry »

←Older