RuPy - dzień 2 i podsumowanie

09 listopada 2009, 12:22:28

Poziom: 0 | Kategoria: Komputerowo-internetowo, Python, Ruby, Techblog. | 6 komentarzy

W poprzednim wpisie było trochę o pierwszym dniu RuPy. W tym dalszy ciąg programu.

Drugi dzień zapowiadał się lepiej, niż pierwszy. I chyba byłby taki, gdyby nie odwołane prezentacje.

  1. Paolo Negri :: RabbitMQ — ciekawa prezentacja nt. wykorzystania erlangowego RabbitMQ oraz AMQP w aplikacjach pisanych w językach Ruby i Python. Momentami szybko prowadzona przez co zdarzało mi się zastanawiać, jaki język słyszę — angielski czy włoski, ale mimo wszystko podobało mi się. Pierwotnie miałem w tym czasie iść na Mastering git, ale ze względu na zmiany agendy udało się zobaczyć obie prezentacje (to jest chyba jedyny plus zmian agendy bez wcześniejszego powiadomienia via. strona konferencji, tweeter, blip, flaker, whatever...)
  2. Scott Chacon :: Mastering Git — bezkonkurencyjnie najlepsza prezentacja, a w zasadzie najlepsze show na konferencji. Git Ninja Training boski, wiele nowego czeka na zastosowanie (git bisect, git cherry-pick, itp.). No i nareszcie zdobyłem GitHubowe naklejki :)
  3. Marcin Raczkowski :: Replacing REGEX with TreeTop — idea zastąpienia wyrażeń regularnych parserami jest ciekawa, szczególnie, że nie wszystkie problemy da się rozwiązać Regexpami. Jednak cały czas mam pewne wątpliwości co do wydajności takiego rozwiązania względem regexpów w problemach, które można rozwiązać zarówno jednym, jak i drugim sposobem.
  4. Lightning Talks Session — nie wszystkie prezentacje pamiętam. Ale szczególnie podobała mi się prezentacja Charlesa na temat języka Duby, czyli języka ze składnią Ruby i statycznym typowaniem. Kod działa na JVM i jest kompilowany do plików *.class (można też wygenerować kod Java ze źródeł w duby).
  5. Serge Smetana :: Advanced Performance Optimization of Rails Applications — na tej prezentacji, szczerze mówiąc, nieco się wyłączyłem (krótki sen robi swoje), więc niewiele jestem w stanie napisać...
  6. Charles Nutter :: JRuby: Pushing the Boundaries — świetne wprowadzenie w świat JRuby i jego coraz większych możliwości. Myślę, że JRuby staje się dużym graczem w świecie Ruby i naprawdę warto się z nim zapoznać i obserwować jego rozwój. Przykłady, prezentowane podczas prezentacji, można pobrać z Githuba.

Na Google Wave Hackathon nie zostałem. Przede wszystkim dlatego, że nie mam jeszcze konta na Google Wave. Mam tylko nadzieję, że hackathon w ogóle się odbył ;-)

Na koniec parę słów o organizacji samej konferencji. Znów nie było t-shirtów dla wszystkich — i drugi rok z rzędu wróciłem bez koszulki (t-shirt można było złapać, wygrać w konkursach lub dostać za zadawane pytania). Lokalizacja konferencji jest świetna — kampus UAM spisał się idealnie. WiFi momentami nie wyrabiało, ale drugiego dnia było zdecydowanie lepiej.

Catering również wywiązał się całkiem nieźle — można było liczyć na śniadanie, obiad i przekąski (ciastka i słodkie bułki). Kawa, herbata i soki bez limitów.

Pewne zastrzeżenia można mieć jednak do Organizatorów, nie mówię tutaj o samym fakcie odwołanych prezentacji, bo tego rzeczywiście nie zawsze da się przewidzieć, ale o sposobie informowania o tym. Przecież jest strona konferencji, jest twitter, dlatego dziwi mnie, że informacja o odwołanych prezentacjach była przekazywana w zasadzie jedynie na miejscu, chwilę przed planowanym wykładem. Najbardziej szkoda niedzielnej prezentacji o MongoDB — tak, jak pisałem poprzednio czuje się nieprzekonany do tej technologii i odwołany speech nie pomógł mi wcale :) Jednak, mimo wszystko, warto było jechać do Poznania na te dwa dni. Myślę, że i w przyszłym roku pojawie się w Poznaniu.

Tagi:

RuPy - krótko o dniu pierwszym

07 listopada 2009, 20:01:38

Poziom: 0 | Kategoria: Komputerowo-internetowo, Python, Ruby, Techblog. | 1 komentarz

Szybkie, krótkie podsumowanie dzisiejszego dnia konferencji RuPy.

  1. Michael Dirolf :: An Introduction to MongoDB — ciekawy wstęp w świat Document-Oriented Databases. Pomimo wielu niewątpliwych zalet, ja cały czas mam więcej wiele wątpliwości, czy warto tego używać. Wiem na pewno, że Mongo nie jest lekarstwem na wszystko — razi przede wszystkim brak obiektów (!) - zamiast tego jakiś tam wymyślony BSON, brak transakcji, brak obsługi relacji wiele-wiele (jak dla mnie denormalizacja nie jest tutaj rozwiązaniem, a dokładniej jest rozwiązaniem tylko dla niewielu przypadków, o manual join nie wspomne). Jak dla mnie całe MongoDB to troche bardziej rozbudowany key/value store. Może jutro zobaczę coś więcej, co mnie przekona. Zobaczymy.
  2. David Goodger :: Community Oriented-Talk keynote — po trochę przydługim wstępie parę słów o oczywistych (dla mnie przynajmniej) rzeczach dotyczących społeczności (bądź aktywny, nie bądź palantem, itp.). Troche smutno, że David czytał z kartek, bo sama prezentacja bardzo dobrze przygotowana.
  3. Lightning Talks Session — szczerze mówiąc, nie wiele pamiętam z tej sesji... Może później sobie coś przypomnę.
  4. Michał Łomnicki/Nick Sutterer :: Cells and Apotomo – Rails Plugins for Creating Reusable Web Components — dwa rozwiązania dla wprowadzenia komponentów do aplikacji Rails, rozwiązania ciekawe, ale — znów — nie wszędzie stosowalne. Przykładowe zastosowanie zaproponowane przez Nicka, to wszelkiego rodzaju dashboardy.
  5. Julian Fischer :: Enterprise Ruby and Python Hosting— momentami bardzo ogólna, ale też bardzo przekrojowa prezentacja o hostowaniu dużych aplikacji i o tym, na co powinno się zwrócić uwagę (backupy, monitoring, architektura, itp.).

Tyle na dzisiaj, przede mną Geek Party i dzień 2.

Stay tuned!

Tagi:

RuPy — dzień drugi

16 kwietnia 2008, 14:30:19

Poziom: 0 | Kategoria: Komputerowo-internetowo, Python, Ruby. | 2 komentarze

Wczoraj podsumowałem pierwszy dzień RuPy, dzisiaj pora na drugi.

Drugi dzień zaczął się od prezentacji Rails, Amazon Web Services and you wygłoszonej przez Krzysztofa Szafranka. Generalnie Amazon Web Services to świetna sprawa dla ludzi potrzebujących dobrej skalowalności i wielkich powierzchni za niewygórowaną cenę. Dowiedziałem się jednak czegoś o innej usłudze — AWS Mechanical Turk. W skrócie to miejsce, gdzie można wynająć sobie prawdziwych ludzi do zrobienia dla nas określonych rzeczy. Dokładniej możemy zadawać pytania w formacie XML, na które wynajęci przez nas Workerzy będą starali się odpowiedzieć. Pytania nie muszą wymagać odpowiedzi "Tak" lub "Nie", możemy na przykład "zapytać" o nową notkę na nasz blog. Jednym z większych zastosowań tego mechanizmu, który na razie jest w fazie BETA, było poszukiwanie na samolotu Steeve'a Fosseta. Niestety aby skorzystać z AWS Mechanical Turk musimy posiadać prawidłowy adres z USA oraz aktywną kartę kredytową tam wydaną. Krzysztof zdołał również zareklamować swój serwis — natrasie.pl.

Następną prezentacją była prezentacja "Rabiego" i "Rabistak", czyli Ruby on Rails deployment with RubyStack Daniela Liszki. Idea RubyStack jest ciekawa i warta poświęcenia chwili uwagi. RubyStack to instalator całego środowiska uruchomieniowego dla Ruby/Railsów, spakowane do jednego pliku wraz z instalatorem graficznym. Można go uruchamiać pod wieloma systemami — aktualnie Windows, Linux, MacOS X, w planach jest obsługa Solarisa. Jednym kliknięciem możemy zainstalować np. Ruby, Rubygems, Apache wraz z potrzebnymi modułami, Railsy i kilka must-have gemów. W przyszłości ma pojawić się narzędzie do dostosowywania do swoich potrzeb paczek. Prezentacja zakończyła się małą polemiką słuchaczy na temat tego, iż /bin/sh nie musi wcale wskazywać na /bin/bash.

Po RubyStack przyszła kolej na krótką prezentację sponsora — Megiteam. Z rozmów kuluarowych dowiedziałem się nowej, ciekawej rzeczy, która prawdopodobnie skusi mnie do skorzystania z usług Megiteam, chodzi o nowy sposób rozliczania usług. Nie ma już rozliczania per proces, zamiast tego dostajemy gwarantowany RAM na swoje procesy + dodatkowe 20MB do krótkoterminowego użycia. To sprawia, że ich oferta staje się bardziej atrakcyjna, co więcej nie trzeba martwić się o konsumpcję pamięci przez serwer mySQL.

Następną prezentacją, na której byłem, była pierwsza część próby napisania IMDB-like aplikacji w Railsach w dosyć krótkim czasie, czyli Is Rails as agile as advertise by Rida Al Barazi. Prezentacja całkiem udana, chociaż po drodze było trochę błędów, które zgłaszała sala. Nie zostałem jednak na drugiej części, która chyba była ciekawsza, ponieważ skupiała się na bardziej zaawansowanych funkcjonalnościach oraz dopracowywaniu graficznej strony aplikacji.

W niedzielę nie zostałem do końca prezentacji i ostatnią, na której byłem był A need of REST Łukasza Piestrzeniewicza. Z powodu "pythonowej" sali i większej części "pythonistów" została pominięta część dotycząca Railsów, Łukasz skupił się bardziej na założeniach REST i jego wykorzystaniu. Ciekawa prezentacja, szczególnie dla ludzi, którzy nie znali lub nie rozumieli do końca idei REST

Podsumowując konferencję, muszę przyznać, że warto było na nią przyjechać, nie tylko ze względu na ciastka i obiadki. Aczkolwiek muszę przyznać, że w tym roku RuPy powinno nazywać się RailsPy — w zasadzie jedna lub dwie prezentacje w części Ruby nie dotyczyły Railsów. Oczywiście nie mam nikomu tego za złe, w końcu sam pracuję w Railsach. Mam tylko nadzieję, że w przyszłym roku pojawi się więcej prezentacji dotyczących samego Rubiego albo innych frameworków (np. Merba). Tegoroczne prezentacje mogą utwierdzać niektórych w mylnym przekonaniu, że Ruby = Rails.

Tagi:

RuPy — krótkie podsumowanie dnia pierwszego

15 kwietnia 2008, 11:03:24

Poziom: 0 | Kategoria: Komputerowo-internetowo, Python, Ruby. | Dodaj komentarz

Miałem przyjemność uczestniczyć w tegorocznym RuPy. Generalnie impreza bardzo przydatna i ciekawa. Chciałem dorzucić swoje trzy groszę i przekazać moje wrażenia.

Dzień 1

Dzień pierwszy zaczął się, jak to na konferencjach bywa, od rejestracji uczestników. Ponieważ na pytanie "Ruby czy Python?" odpowiadam Ruby, można mnie było zobaczyć w zasadzie tylko w sali A, gdzie odbywały się prezentacje związane z Rubym.

Na pierwszy ogień poszła prezentacja Jarosława Rzeszótko o metaprogramowaniu w Ruby. Prezentacja fajna, części trików nie znałem, więc na pewno czegoś się nauczyłem. Jednak sama prezentacja była dosyć szybko przeprowadzona, na slajdach było momentami dużo kodu, co mogło trochę skołować uczestników. Przydałoby się więcej jakiegoś live-codingu zamiast kilkudziesięciu linijek kodu na slajdach.

Następnym prelegentem był Ry Dahl. Opowiedział o swoim serwerze do uruchamiania aplikacji napisanych w Railsach, Merbie i innych frameworkach opartych o Rack, a w przyszłości także Pythonowych aplikacji WSGI — Ebb. Przedstawił po krótce architekturę serwera, wyjaśnił, dlaczego jest on szybszy od innych oraz, co może niektórych zasmucić, powiedział, że nie planuje wersji Ebb pracującej pod kontrolą JRuby.

Następną prezentacją było największe show na RuPy 2008 — Correlations and Conclusions by Zed Shaw. Sama prezentacja przedstawiała bardziej statystyczne podejście do testowania swoich hipotez i wyciągania wniosków z wyników badań. Przy okazji Zed pochwalił się swoimi projektami w Pythonie, które pomogły mu przygotować prezentację, włączając w to ciekawy konwerter Yaml do prezentacji LaTeX-owej w Beamerze.

Po dawce dobrego show nadszedł czas na posiłek. Nie będę tutaj opisywał lunchu, bo i po co. Po obiadku prezentował się Hosting 365, ja w tym czasie ładowałem baterię na korytarzu...

Po sesji ładowania baterii nadszedł czas na TDD w Railsach. Andrzej w ciekawy sposób przedstawił swoje spostrzeżenia na temat TDD jak i BDD. Opisał swoje doświadczenia z wyżej wymienionymi procesami, jak również zafundował uczestnikom małą sesję live-coding. Prezentacja oczywiście na plus, parę rzeczy mi się rozjaśniło, będę na pewno starał się być pragmatycznym w testowaniu i chyba zrezygnuję z bardzo rozbudowanych testów unitowych.

Następnym prelegentem był Jay Fields, który opowiedział o "DSL dla biznesu", czyli "Business Natural Languages". Bardzo ciekawie zaprezentowany bardzo ciekawy temat. Może tylko przykładowa aplikacja zaprezentowana podczas prezentacji była nadto prosta, co mogło nasuwać niektórym na myśl sensowność wytaczania takiej armaty, jaką jest DSL do tak prostych zastosowań, jednak z pewnością Business Natural Languages są w stanie polepszyć użyteczność aplikacji i zachęcić mniej technicznych ludzi do pracy z komputerem. W wielkim skrócie Business Natural Languages w założeniu mają uprościć proces wytwarzania aplikacji z modelu Business --> Developers --> QA do Business --> Business przez zastosowanie Descriptive and maintainable phrases (DAMP) w taki sposób, by managerowie mogli sami definiować reguły aplikacji posługując się językiem naturalnym (prawie).

Kolejnym prelegentem był Pedro Sousa. Niestety jego acts_as_problem_solved była najsłabszą częścią dnia pierwszego, przynajmniej jeśli chodzi o część dotyczącą Ruby (o Pythonie się nie wypowiadam, bo nie uczestniczyłem w żadnej prezentacji go dotyczącej). Tak naprawdę taką prezentację mógłby wygłosić każdy, kto napisał 5 projektów w Railsach i korzystał z kilku pluginów. Niezadowolenie było widać na sali, część uczestników wyszła po kilku minutach. Ja zająłem się przeglądaniem Blipcasta.

Na zakończenie dnia pierwszego o cache-owaniu aplikacji Railsowych opowiadał Wiktor Schmidt z Netguru. Wszystko byłoby fajnie, gdyby nie trochę niedopracowany live-coding, prawdopodobnie przez świeżo nabytego MacBooka i małe doświadczenie w pracy z TextMatem.

Podsumowując, pierwszy dzień konferencji minął na ciekawych prezentacjach, szkoda, że nie dotarłem w końcu na RuPy Geek Party, choć, od znajomych wiem, że klub był trochę za mały na pomieszczenie konferencyjnej ekipy.

Tagi:

pygglib 0.2 released

16 stycznia 2008, 18:37:35

Poziom: 0 | Kategoria: Komputerowo-internetowo, Python, Studia, Techblog. | 14 komentarzy

Można powiedzieć, że dzisiaj światło dzienne ujrzała wersja 0.2 pygglib — biblioteki do obsługi protokołu Gadu-Gadu napisanej w pythonie. Wersja ta implementuje już większą część protokołu opisanego na stronach EKG.

Przy okazji pisania testów i implementacji okazało się, że panowie z Gadu-Gadu znowu mieszają coś w protokole, poza tym opis na stronach EKG jest już trochę nieaktualny (szczegóły zostały wysłane na listę dyskusyjną ekg-devel). W każdym razie dzisiaj miała miejsce prezentacja projektu na zajęciach i muszę przyznać, że większość prac, która została przewidziana, została zaimplementowana. Niestety zabrakło czasu na obsługę bezpośrednich połączeń oraz takich rzeczy jak połączenia konferencyjne, czy rozmowy głosowe, jednak jestem zadowolony z tego, co zostało napisane.

Przy okazji muszę ponarzekać na pythona... Przyzwyczajony byłem do tej pory do składni języka Ruby i trochę trudno było mi się przestawić na wcięcia i dwukropki. Poza tym podobno python jest językiem obiektowym, więc tym bardziej denerwowało mnie na przykład to, że lista nie ma metody "len" bądź "length", tylko jej długość możemy sprawdzić funkcją len(lista), co już, według mnie, za bardzo obiektowe nie jest.

Na osobną notkę zasługuje również coś, co według mnie powinno zostać naprawione wieki temu — w pythonie nie da się (pod Windowsem i w sposób najbardziej naturalny) przechwytywać sygnału SIGINT po wciśnięciu Ctrl+C (czyli wyjątku KeyboardInterrupt) w programach wielowątkowych! Jest to absolutna kompromitacja. W programie demonstrującym działanie pygglib chciałem stworzyć proste echo, które byłoby wyłączane przez wciśnięcie Ctrl+C, jednak, ponieważ biblioteka korzysta z listenera i obsługuje zdarzenia, przez co jest wielowątkowa, stało się to niemożliwe. Pod linuxem można ten błąd w dosyć prosty sposób ominąć poprzez zastosowanie os.fork(), jednak pod Windowsem takiej opcji nie ma.

To tyle narzekania na Pythona. Zainteresowanych zapraszam do pobrania źródeł biblioteki oraz testowania. Ewentualnie błędy i sugestie proszę zgłaszać na Trac projektu.

EDIT: Wypuściliśmy wersję 0.2.1, w której poprawiony został odczyt wiadomości wysyłanych z niektórych wersji Gadu-Gadu, na końcu których występowały czasem śmieci. Link do źródeł został zaktualizowany.

Tagi:

Shell z piekła rodem

31 sierpnia 2007, 19:20:29

Poziom: 0 | Kategoria: Komputerowo-internetowo, Python, Ruby on Rails. | Dodaj komentarz

Dzisiaj będzie trochę reklamowo-propagandowo. Ostatnio zastanawiałem się nad zmianą hostingu. Po namowie ahesa założyłem testowe konto na rootnode. Na razie jestem pod wrażeniem. Ilość dostępnych usług oszałamiająca, parametry niczego sobie. Shell w porównaniu z Dreamhostem dużo szybszy. Nawet na mojej wolnej i awaryjnej radiówce. Pingi dużo mniejsze: Dreamhost ~200ms, Rootnode ~55-60ms! Uruchomiłem też swoją aplikację w Railsach pod Apache z FCGI (chociaż i mongrela udało mi się uruchomić — wtedy moja aplikacja naprawdę ruszyła z kopyta). Typo również powstało bez problemów.

Poza tym to jest jedyny hosting, który znam, gdzie można korzystać już z rozwojowego php6. Wygląda na to, że już tam zostanę. Polecać będę, jak dłużej posiedzę, ale już mogę zachęcić do testowania.

Tagi: