Witaj na blogu prowadzonym przez Sebana. Spisuję tutaj swoje uwagi na różny temat. Przeważają tematy związane z Internetem, popieranymi przeze mnie rozwiązaniami dotyczącymi wykorzystania komputerów, oraz kilka innych.

3camp#5

23 kwietnia 2008 | Klucze: it, Ogólne
14 komentarzy. trackback

Odbyła się już piąta edycja trójmiejskich spotkań branży internetowej. I co? I jestem zawiedziony po części (chyba większej części).

W pełni widziałem dwie prezentacje. Druga w kolejności o pozyskiwaniu funduszy z Unii Europejskiej. Mnie nawet zainteresowało. Sądząc po pytaniach padających z sali, a niektóre były bardzo szczegółowe to były też osoby bardzo zainteresowane tematem. Potem przerwa, trochę czasu by się rozejrzeć i pogadać z kilkoma znajomymi osobami. Ostatnią prezentacją była ta, która mnie interesowała najbardziej. Tematem pracy miała być skalowalność i wydajność przy szybkim wzroście. Temat stricte techniczny, zapowiadał się super. I kompletna klapa. Przedstawienie było fajne i humorystyczne. Mogło nawet być to prezentowane w tym stylu, ale na miły Bóg! Niech to niesie jakiś merytoryczny przekaz! Te prezentacja według mnie nie miała. Szybko, śmiesznie i do ... niczego. Pytań z sali nie było. Może nikt nie zadawał pytań bo nie było do czego? Nawet zaproszenie do dyskusji nie było w stanie zmienić mojej oceny tej prezentacji.

Na koniec prowadzący przedstawili bardzo ciekawą inicjatywę. Ogłosili, że mają zamiar zorganizować spotkanie branży internetowej na sopockiej plaży! Beachcamp ma chyba być spotkaniem bardziej ogólnopolskim. Potrzeba rąk do przygotowania tej imprezy, więc jeśli ktoś czuje się na siłach by pomóc zachęcam do kontaktu z Mirkiem Wąsowiczem.

Inżynier

20 kwietnia 2008 | Klucze: Ogólne
3 komentarze. trackback

No i stało się. Po siedmiu semestrach studiowania (studiowanie to nie to samo co nauka) zostałem inżynierem. W piątek udało mi się obronić i uzyskałem tytuł inżyniera informatyka jak to ładnie po obronie tłumaczył dziekan.

Moja edukacja trwa już 16 lat. Zastanawiam się czy to już nie dość dużo? W tej chwili nie chce mi się już dalej uczyć, ale wizja posiadania legitymacji studenckiej przez kolejne dwa lata jest kusząca. ;-) A tak bardziej na poważnie to z racji mojego obecnego zamieszkania najbliżej mi na Politechnikę Gdańską. Mam też świadomość, że z każdym rokiem przerwy w edukacji coraz mniej będzie mi się chciało dalej uczyć.

Pierwsze gitowanie

12 kwietnia 2008 | Klucze: Ogólne, programowanie, ruby, Techblog
Dodaj komentarz. trackback

Gituję. Dziś poraz pierwszy użyłem Gita. Nie zamierzam póki co porzucić Subversion. Założyłem konto na Githubie i nawet napisałem coś, wysłałem i jest publicznie dostępne. Co do Githuba: podoba mi się, nawet całkiem podoba. Szkoda, że obsługuje tylko Gita.

Powody, które mnie skłoniły do spróbowania Gita i Githuba

  • oficjalne otwarcie Githuba
  • przeniesienie Ruby on Rails na Gita
  • występ Ezry Zygmuntowicza na MWRC podczas, których Ezra powiedział trochę ciepłych słów o Gitcie. Polecam obejrzeć!
  • nieuniknione wydaje się zrozumienie tego jak on działa i jak się to obsługuje

Moje wrażenia po niecałym dniu zabawy bardzo pozytywne. Bardzo łatwo zacząć: git init, git add i potem już tylko git commit. Trudności przyniosło mi dopiero wysłanie projektu na Githuba, ale po małym szperaniu po serwisie i to się wyjaśniło.
Jeśli ktoś masz trochę wolnego czasu to może się pobawić Gitem, ciekawe doświadczenie. Tymbardziej dla mnie, bo Git to mój pierwszy kontakt z rozproszonym systemem kontroli wersji Bardzo efekciarski, ale też i bardzo pomagający zrozumieć ideę Gita jest ,,network project graph''. Niestety jest to Flash i w projektach dużych takich jak rails jego wyświetlenie sporo trwa.

Whiny nils w Rails

09 kwietnia 2008 | Klucze: Ogólne, programowanie, rails, ruby, Techblog
3 komentarze. trackback

Czy zdarzyło wam się szukać błędu bardzo, bardzo długo, a na końcu krzyknąć ,,Eureka!''? Mi się w tym tygodniu zdarzyło. Dwa dni szukałem błędu w aplikacji, którą piszę w pracy. Sytuacja była o tyle dziwna, że testy wcale nie powodowały powstania tego błędu ...

Błąd pojawiał się w takiej linii:

 
  item.unit_id = Unit.find_by_name(some_name).id rescue Unit.create!(:name => some_name)
 
Abstrahując już od innych rzeczy w tym kodzie, szczególną uwagę należy zwrócić na rescue. W środowiskach development i test ten kod działał poprawnie. Po uruchomieniu aplikacji na środowisku ,,wstępnie produkcyjnym'' przestawał działać, pięknie rzucając wyjątkiem z poziomu MySQL o błędnym indeksie. Dopisałem sporo testów, ale to ciągle działa. Przejrzałem logi z maszyny produkcyjnej. Napisałem test w identycznymi parametrami jak request wyzwalający błąd, a to mi działa. Porównałem dla pewności jeszcze wersje gemów, nawet MySQL (tak wiem chore, ale tonący brzytwy się chwyta). Dziś rano okazało się, że wszystkiemu winne są whiny nils no i ja po części również. Poniżej przykład działania tej opcji konfigurującej środowisko.

 
# config.whiny_nils = true
>> Unit.find_by_name("bad name")
=> nil
>> Unit.find_by_name("bad name").id
RuntimeError: Called id for nil, which would mistakenly be 4
>> Unit.find_by_name("bad name").id rescue "tworzę nowy"
=> "tworzę nowy"
 
 
# config.whiny_nils = false
>> Unit.find_by_name("bad name")
=> nil
>> Unit.find_by_name("bad name").id
(irb):2: warning: Object#id will be deprecated; use Object#object_id
=> 4
>> Unit.find_by_name("bad name").id rescue "tworzę nowy?"
(irb):3: warning: Object#id will be deprecated; use Object#object_id
 
Czujecie różnicę? W drugim przypadku aplikacja nie miała nawet okazji stworzyć brakującego rekordu w tabeli Units bo nigdy nie mogło tam dojść do wyjątku, tylko ostrzeżenie (które nota bene też nie pojawiało się w logu :(). Jeśli jeszcze nie to spróbujcie kilka razy w konsoli irb nil.id lub nil.object_id. Wynik łatwy do przewidzenia ;-).

Co w tym wszystkim mnie zastanawia najbardziej? Czy domyślna konfiguracja środowisk development i test narzekająca whiny_nils na nil.id jest prawidłowa? Niby zachowanie prawidłowe bo Rails krzyczy do programisty o złym użyciu metody id, ale z drugiej strony ciekaw jestem czy wielu przechwytuje ten wyjątek i w jakiś sposób go obsługuje, nawet nieświadomie. I czemu w środowisku production ta opcja jest wyłączona? A dla Was, które ustawienie wydaje się ciekawe? Wolicie wyjątek czy ostrzeżenie?

Linkujmy

04 kwietnia 2008 | Klucze: Ogólne
2 komentarze. trackback

Linukjmy!

Tak! I ja również przyłączyłem się do akcji Linukujmy Już od dawna twierdziłem, że w polskim blogowym kociołku jest za mało interakcji. Za mało dyskusji, komentarzy ... Chociaż przyznam, że o linkach nie myślałem. Mój apel: ludzie! blogerzy, słodkie nastki! Nie bójcie się linkować do źródła, do tekstu z, którym polimizujecie na swoim blogu czy ,,słitaśnym blogasku''. A do kogo ja linkuję? Kogo ja czytuję?

Jeśli już zdecydowałeś się poprzeć akcję Linkujmy to możesz czym prędzej wstawić taki szpanerski button na swoją stroną lub bloga. A ja dalej zrobię przegląd mojego czytanika RSS

Z polskich blogów czytam głównie te związane z internetem i programowaniem. Ale są też inne perełki.

  • Antyweb śledzi nowości ze świata internetu, świeżutkie startupy (dobre, lepsze i gorsze), pracę zaczynam od przeczytania tego bloga. Nie dlatego, że jest najlepszy, ale dlatego, że chyba najwięcej nowych treści ma.
  • Netto, net to. Lubię słowo netto. Kiedyś ktoś powiedział, że podawanie wielkości pensji brutto to jak podawanie długości penisa wraz z kręgosłupem. Przesadzone, ale coś w tym jest. Marcin Jagodziński to dobrze znany blogger, ma duże doświadczenie i nie pisze o brutto internecie. Zapunktował u mnie swoim oryginalnym stylem, oby nie łączył się z Techrunchem
  • STOP! Jeśli nie chcesz przeoczyć dobrej analizy tego co dzieje się w internecie. STOP! Czytaj Webstop. START! Webstop, czyli Bartek Raciborski potrafi bardzo, bardzo dobrze analizować to co się dzieje w internecie. Wyszukać dobry startup i przedstawić jego wady i zalety. Prowadzi również swój travels.to. Miałem okazję zamienić z nim kilka słów podczas Barcampu, dobrze pisze i dobrze mówi.
  • Jeśli mowa o poznańskim Barcampie to nie można nie wspomnieć o Netguru, a jeśli Netguru to koniecznie Kuba Filipowski piszący Yashke. Nie za długo, nie zbyt rozwlekle, przyjemne do czytania.
  • Kolejną pozycją z Poznania jest snack technologiczny iKanapka. Nie ma tam zbyt wiele słowa do czytania, ale za to można sobie obejrzeć fajnych (sami tak się przedstawiają) chłopaków. Komentują aktualne wydarzenia z branży internetowej, lubią Ingiego i piją czasem yerbę.

Koniec! Koniec o tym okropnym internecie, nie samą siecią człowiek żyje.

  • Muzykofilia to coś dla tych co są uzależnieni od muzyki, nie mogą bez niej żyć i jak coś im nie gra do ucha to świat jest gorszy. Jeśli zastanawiasz się jaką płytę sobie kupić w tym miesiącu (bo muzykę można również kupować, nie tylko ściągać) to koniecznie zajrzyj na muzykofilię.
  • Byle jak najdalej to blog związany z turystyką, podróżami, bieganiem i ogólnie ruchem. Niestety nowe wpisy pojawiają się rzadko.

Oczywiście odpuszczę już opisywanie sobie blogów związanych z Rubim i RoR, bo zainteresowani na pewno śledzą Jarek Zabiełło czy Radarek. O zagranicznych blogach takich jak Signal vs. Noise też nie będę truł.

Koniec pracy dyplomowej

01 kwietnia 2008 | Klucze: Ogólne, programowanie, rails, ruby
4 komentarze. trackback

Stało się! W minioną niedzielę oddałem moją pracę dyplomową. Oczywiście nie obyło się bez małej przygody. Panią w dziekanacie nie podobała się strona tytułowa założóna w LaTeXu. Ale poza tym, że często robią problemy z niczego, cholernie pilnują godzin zamykania dziekanatu to są bardzo miłe, pomocne i zawsze bardzo milo wspominam moje wizyty w dziekanacie. Dobra! Koniec tego primaaprilisowego pierdzenia! Co do mojej aplikacji dyplomowej.

Do napisania aplikacji potrzebowałem 53 rewizje kodu źródłowego do Subversion, w tym jedno otagowane jako FINAL, które zawiera wersję oddaną do szkoły.
Aplikacja okazała się dużo mniejsza niż przypuszczałem.

+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |   501 |   371 |      11 |      51 |   4 |     5 |
| Helpers              |    38 |    33 |       0 |       2 |   0 |    14 |
| Models               |   597 |   255 |      16 |      32 |   2 |     5 |
| Libraries            |   144 |    76 |       0 |      18 |   0 |     2 |
| Integration tests    |     0 |     0 |       0 |       0 |   0 |     0 |
| Functional tests     |  1225 |   959 |      12 |     125 |  10 |     5 |
| Unit tests           |   632 |   473 |      12 |      64 |   5 |     5 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |  3137 |  2167 |      51 |     292 |   5 |     5 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 735     Test LOC: 1432     Code to Test Ratio: 1:1.9
  

Pokrycie kodu przedstawia się przywoicie: 96.7 %

I to by było na tyle w kwestii mojej pracy dyplomowej. Pozostaje mi tylko obrona, na której wyznaczenie terminu czekam. Oby jeszcze w kwietniu.