Im bardziej rozbudowany projekt tym częściej programiści popełniają błędy, pomyłki i zwykłe przeoczenia. Jak do tej poru lamerska metoda wstawiania w kod puts wystarczała mi całkowicie, tak z czasem jej stosowanie staje się coraz bardziej uciążliwe. Najwidoczniej czas dojrzeć i zacząć stosować jakiś debugger, tylko jaki? Środowisko nad którym pracuje znajduje się na zdalnym serwerze i na nim działa co eliminuje (przynajmniej tak mnie się wydaje) możliwość stosowania graficznego debuggera jaki znajduje się choćby w netbeansie. Co więcej moim skromnym zdaniem taki debugger ogranicza i krzywdzi programistę, który zbytnio przywiązuje się tylko do jednego narzędzia, w przypadku zmiany środowiska pracy stając się zupełnie bezbronnym.
Po chwili szukania w sieci natrafiłem na przyjemny wpis na temat Ruby-Debug.
Jak znajdę chwilę czasu, rozwinę ten (czytaj mój) wpis przedstawiając ciekawsze funkcję tak żebym w razie ataku sklerozy miał wszystko pod ręką (:
Bash – dynamiczny dostęp do wartości zmiennej przez jej nazwę.
Published sierpień 21st, 2010 in Bash. 0 Comments
Ostatnio pisząc skrypcik w Bashu zapragnąłem skrócić drogę pomiędzy otrzymaniem parametru, znalezieniem wartości odpowiadającej temu parametrowi oraz jej użyciem. Wyszukałem w sieci bardzo fajną składnię którą zaprezentuję na prostym ale myślę, że dobrze demonstrującym zachowanie przykładnie.
Kluczowa jest składnia !arg, która jest prawdopodobnie aliasem do metody eval. Niestety w Ruby nie znalazłem innego sposobu niż użycie eval arg. Dzięki takiej konstrukcji nie musimy używać całej armii instrukcji if ani czegoś na wzór switch uzyskując pewna dynamikę w kodzie.
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash ONE='first' TWO='second' echo "argumentowi $1 odpowiada wartosc: ${!1}" # How it is work: # $ ./this_script.sh ONE # $ argumentowi ONE odpowiada wartosc: first # $ ./this_script.sh TWO # $ argumentowi TWO odpowiada wartosc: second |
Przed chwilą dostałem maila ze spoja o wypełnieniu ankiety. Ucieszyłem się bo od dawna nic z niego nie robiłem. Zasiadłem do zadanka na którym utknąłem ponad dwa lata temu z powodu przekraczania limitu czasu (pascal). Po 10 minutach (w tym czytania jak działa sprintf
) naskrobałem 10 linijkowe rozwiązanie w Ruby, które przeszło w 0.7s. Chyba się rozwijam
1 2 3 4 5 6 7 8 9 10 | results_tab = [] gets.to_i.times do x, i = gets.strip, 0 until x == r = x.reverse x = (x.to_i + r.to_i).to_s i += 1 end results_tab << [x,i] end results_tab.each {|el| puts el.join(' ')} |
Stało się.. Jestem użytkownikiem łubu-dubu 10.04 x86_64. Potrzeba posiadania systemu z jak najlepszym wsparciem Rubiego przeważyła nad zaletami ‘normalnego’ pingwinka (czytaj ArchLinux). Dostosowując system do pracy napisałem prosty skrypt. Jeśli nic się nie popsuje, będę go rozwijał (; jeśli ktoś chce pomóc to zapraszam. Rubuntu – bo tak nazywa się skrypcik, napisany jest w całości w bashu. Umożliwia instalację:
- Ruby 1.8.7 z repozytorium
- RubyGems dla 1.8.7 ze źródeł
- RVM
- Ruby 1.9.2 w RVM
- JRuby w RVM
- Ruby on Rails 2.x
- Ruby on Rails 3.x
- MySQL z adapterem
- SQLite3 z adapterem
- Netbeans 6.9 for Ruby
.. i paru mniej przydatnych bzdurek
Pomysł nie jest niczym nowym, ale rozwiązania na jakie natrafiłem nie podobają mi się za bardzo.. Oczywiście trudno jeszcze to nazwać skryptem, ale za jakiś czas może zacznie go przypominać. Określenie ‘zlepek przekleństw’ lepiej do niego pasuje
I stało się – dzisiaj obroniłem pracę licencjacką. Temat brzmiał ‘Implementacja dziennika internetowego ucznia przy pomocy platformy Ruby on Rails’. Co prawda czuję lekki niedosyt, stanowczo za mało czasu na prezentacje a i pytania mogły być nieco inne, ale jest dobrze. Aplikacja działa na Ruby 1.8.7, Rails 2.3.5, wykorzystuje Authlogic, wymagana jest włączona obsługa JavaScript (AJAX).
Sama aplikacja dostępna jest pod adresem http://edziennik.psihae.yum.pl/
konto ucznia: L: zuzia P: zuzia
konto nauczyciela: L: nania P: nania
konto rodzica: L: andrzej P:andrzej
- use case systemu informatycznego
- conceptual data model
Po skończeniu części praktycznej pracy licencjackiej, oczywiście w railsach, czas wrócić do teorii a co za tym idzie, przygotowanie diagramów. Jako, że mam bardzo mało czasu i bardzo dużo do zrobienia oraz, że jestem leniwy poszukałem czegoś do automatyzacji tego zadania. W ekosystemie natrafiłem na RailRoad. Całkiem miłe narzędzie, niestety generowane diagramy.. nie grzeszą urodą i z całą pewnością promotor ich nie zaakceptuje.. Mimo to warto wiedzieć o istnieniu czegoś takiego (: dodam tylko, że do konwersji pliku *.dot na coś normalniejszego przyda się instalacja ‘graphviz’. I na koniec właśnie-co-dopiero-gorący-wciąż-(i trochę dziwny Oo)

Wywołanie metody obiektu nadrzędnego z poziomu obiektu podrzędnego
Published maj 13th, 2010 in Ruby. 0 CommentsNie do końca wiem jak to poprawnie opisać, ale potrzebowałem wywołać metodę obiektu nadrzędnego z poziomu obiektu podrzędnego w sytuacji gdzie nie było dziedziczenia. Podejrzewam, że nie jest to najlepszy sposób na osiągniecie tego celu, ale moje rozwiązanie daje rade.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class B def initialize(cmd) @cmd = cmd end def b_cmd(a,b) puts self.class @cmd.call(a,b) end end class A attr_reader :b def initialize @b = B.new(self.method(:cmd)) end def cmd(a,b) puts self.class return a+b end end a = A.new puts a.b.b_cmd(2,3) #result: # B # A # 5 |
Po ostatniej aktualizacji rozsypał mi się cały ArchLinux, wyprowadził mnie tym samym z równowagi co zakończyło się instalacja Debiana 5.0 squeeze (testowa wersja) 64bit. Nie miałem najmniejszych problemów z Debianem do póki nie przyszło mi zainstalować Skype. Rozwiązanie:
1 2 3 4 5 6 7 8 | wget -O skype-install.deb http://www.skype.com/go/getskype-linux-beta-ubuntu-64 su aptitude install ia32-libs ia32-libs-gtk libqt4-core libqt4-gui dpkg -i skype-install.deb rm /usr/lib32/libpulse* ldconfig exit linux32 skype |
W końcu z nudów poszukałem jakiś informacji o jednym z dwóch elementów na które dosyć często trafiam czytając o ekosystemie railsów – mowa o HAML.
Krótko mówiąc, zastępuje erb:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # installation gem install haml # configuration/environment.rb config.gem "haml" # view/site/show.html.erb -> view/site/show.html.haml - unless @used_plans.nil? %h3 Used Plans (id): - @used_plans.items.each do |result| = result.id , - unless @executed_tests.nil? %h3 Executed Tests (id): - @executed_tests.items.each do |result| = result.id , |
Piękne, prawda? (:
haml-lang.com
Moje pierwsze spotkania – SRUG i KRUG
Published marzec 15th, 2010 in Poza domem, Rails and Ruby. 3 CommentsPod koniec lutego i na początku marca udało mi się uczestniczyć w moich pierwszych spotkaniach SRUG i KRUG
Nie będę opisywał co dokładnie było tematem spotkań – można o tym przeczytać na stronach obu grup – natomiast podzielę się ze swoją wybiórczą pamięcią przemyśleniami.
SRUG odbył się w jakimś dziwnym miejscu (dobrze, że kolega – Piotr był kierowcą i miał GPS), ochrona budynku nie za bardzo wiedziała o spotkaniu, ale sama atmosfera na nim bardzo przypadła mi do gustu. Średnia wieku tak koło 30 więc czułem się ewidentnie jak gówniarz, chyba wszyscy pracujący na co dzień z Ruby/Rails co było oczywiście plusem. Fajnie się słuchało ich rozmów, było widać że wiedzą o czym mówią, bez zbędnego wywyższania się i przechwalania, nawet coś tam zrozumiałem
i każdy z każdym się przywitał co również bardzo mi się spodobało.
KRUG – Miejsce spotkania nie było wprost podane na stronie co nie stałym bywalcom nieco utrudniło życie, jednak trafiliśmy. Pub z wielkim projektorem w piwnicach pod samym starym rynkiem, średnia wieku standardowa. Jakoś nie zauważyłem rozmów między uczestnikami, każdy trzymał się swojej grupki i było trochę drętwo.. Ale spotkaliśmy ekipę ze spotkania SRUGa więc mieliśmy z kim nieco pogadać ((:
Kończąc, moja słabiutka pamięcio, kolejny SRUG obowiązkowo



