Rod - Ruby Object Database

Zapraszam do zapoznania się z moją bilbioteką Rod: opis na Githubie oraz post wyjaśniający dlaczego to w ogóle powstało.

Uwaga do Radka - jeśli znasz dobre narzędzie do formatowania kodu, to podrzuć, a nie pisz, że niespójnie używam spacji :slight_smile:

Fajne! Jakie są potencjalne przypadki użycia poza danymi lingwistycznymi?

narzędzie do formatowania kodu hmm … indent? Samego od dawna nie używałem ale ruby chyba też poukłada. Warto sprawdzić jak nie to przekopiowanie z np vim który poukłada kod nie wystarczy?

:slight_smile:

Są dwa narzędzia: jedno użyteczne podczas pisania nowego kodu, a drugie gdy masz istniejący kawałek kodu, który chcesz przeformatować. Są to palce (głowa) i vim :). W vimie jest to proste. Zaznaczamy cały tekst i naciskamy = (esc gg V G = ).

Trudno mi powiedzieć - mam nadzieję, że może ktoś znajdzie jakieś zastosowania dla tego. Może coś w obszarze “grafowych hurtowni danych”.

To była taka uwaga wyprzedzająca uwagę Radarka, że mam niespójnie spacje powstawiane. W istocie nie bardzo się tym przejmuję, a do pisania (i formatowania) używam oczywiście vima :slight_smile:

Jeśli ktoś chce, to może sobie to ściągnąć, “zbundlować” i zapuścić testy ogórkowe. Katalog feature jest też dobrym miejsce żeby zapoznać się z całą gamą możliwość biblioteki. Dodam, że dynamizm rubiego, który pozwala w testach tworzyć modele jest po prostu boski :slight_smile:

Uwaga: istnieje duże prawdop. że uruchomione testy nie przejdą, ale nie ze względu na błędy w implementacji, tylko na ograniczenia RubyInline, który dla dynamicznie tworzonych bibliotek dodaje do nazwy 4 znakowy skrót sygnatur wygenerowanych metod. Niestety przy wielu testach daje to częste konflikty i błędy “require failed” https://github.com/apohllo/rod/issues/18.

Wszelkie uwagi, feature requesty i inne niedoróbki można zgłaszać na githubie.

:slight_smile:

Są dwa narzędzia: jedno użyteczne podczas pisania nowego kodu, a drugie gdy masz istniejący kawałek kodu, który chcesz przeformatować. Są to palce (głowa) i vim :). W vimie jest to proste. Zaznaczamy cały tekst i naciskamy = (esc gg V G = ).[/quote]
Ojca będziesz uczył dzieci robić? :slight_smile: Nie chodzi mi o wyrównanie tekstu tylko spacje np. w wywołaniach metod. Dla Dżawy jest np. checkstyle.

BTW rzuciłeś okiem? Myślę, że jest tam dużo interesujących feature’ów, które dają duże pole do hackowania.

protip: <C-[>gg=G
:stuck_out_tongue:

@apohllo
Mógłbyś sobie z tym panem porozmawiać: http://atos.wmid.amu.edu.pl/~obrebski/ . Kuma ruby, przetwarzanie tekstu, korpusy i rozwija na UAM różne leksykograficzne narzędzia w C. Miał też kiedyś ciekawy wykład na PLD Linux Day nt rozwiązań zaimplementowanych z użyciem narzędzi Unix, które były tylko 2 razy wolniejsze niż dedytowane narzędzia a miały kilkanaście razy mniej kodu.

[quote=paneq]@apohllo
Mógłbyś sobie z tym panem porozmawiać: http://atos.wmid.amu.edu.pl/~obrebski/ . Kuma ruby, przetwarzanie tekstu, korpusy i rozwija na UAM różne leksykograficzne narzędzia w C. Miał też kiedyś ciekawy wykład na PLD Linux Day nt rozwiązań zaimplementowanych z użyciem narzędzi Unix, które były tylko 2 razy wolniejsze niż dedytowane narzędzia a miały kilkanaście razy mniej kodu.[/quote]
Dzięki za info - nie wiedziałem, że Obrębski też siedzi w Rubim :slight_smile: No to może faktycznie coś się z tego urodzi, choć UAM ma już swój toolkit, więc wątpię, żeby byli zainteresowani rozwijaniem konkurencyjnego.
W każdym razie bardziej liczę na zainteresowanie community Rubiego.

Jak dodasz gema który prawidłowo odmienia błędy z formularzy o którym wspominasz w opisie na pewno wielu chętnych się znajdzie. Może to być jeden z popularnijszych - obowiązkowych gemów.

Jest to jeden z moich priorytetów. Na https://github.com/apohllo/polish-spec piszę specyfikację języka polskiego (jakkolwiek śmiesznie to brzmi) w postaci “własności” Cucumbera. Oczywiście dla przeciętnego zjadacza chleba to jest zdecydowanie “na wyrost”, ale postaram się, aby podstawowe API było na tyle proste, że nawet licealista będzie mógł z niego skorzystać. Taki killer-feature RoR - zna język polski :slight_smile:

Przy okazji - ostatnio wypuściłem też gem do podziału tekstu na zdania (na podstawie reguł Marcina Miłkowskiego). API wymaga jeszcze pewnych poprawek, ale reguły działają w 98%.

Jeszcze tylko Api do Ivony, żeby na stronie czytała na głos błędy formularza :slight_smile:

Jak dobrze pójdzie to będziemy mieli API do głosowego wprowadzania danych, ale nieprędko :slight_smile:

Hmm nie znałem go super sprawa. Może się przydać nawet przy prostych blogach do robienia skrótów sensownych na stronę główną. Zawsze to lepiej niż urwane zdanie czy nawet słowo.

Wypuściłem to w zeszłym tygodniu - natomiast standard SRX i reguły dla j. polskiego są już dosyć dawno dostępne.

Jeśli ktoś jest zainteresowany rozwijaniem tego, to jest kilka rzeczy do poprawy:

  • jedna reguła dot. wyrażeń typu W.Brytania, T.Love nie działa. Nie powinno być problemu ze zdebugowaniem tego
  • API jest do poprawy - zamiast klasy sentence powinna być tekst, a na niej metoda “each” i alias “each_sentece”
  • przepisanie całości na Ragel

Oczywiście to ostatnie zadanie jest najbardziej wymagające, m.in. z tego względu, że Ragel natywnie nie wspiera Unicode’u, ale jego wykonanie powinno dać bardzo duże przyspieszenie działania. Więc warto o to powalczyć.

Dla zainteresowanych - plany na wersję 1.0 zakładają, że backend będzie w Oracle Berkeley DB. Dzięki temu:

  • zapis będzie równie uprzywilejowany jak odczyt
  • będzie wsparcie dla: wielu wątków/procesów (lockowanie na poziomie obiektów), transakcji (pełny ACID), konfiguracji master-slave, itp.

Szczegółowy opis projektowanej architektury będzie powstawał na wiki projektu na Githubie.

Wszelkie zainteresowane osoby zapraszam do zgłaszania uwag.

Na dzisiejszym KRUGu będę miał krótką prezentację na temat ROD. Spotkanie rozpoczyna się o godzinie 19:00 w klubie Pauza na ul. Floriańskiej 18/5 (sala kinowa na II piętrze).

Załączam prezentację z wczorajszego spotkania. Opis podstawowych założeń dla architektury dla wersji 1.0 został również ukończony.

Póki co nikt z zebranych na wczorajszym spotkaniu nie wskazał mi, że projekt jest bez sensu. Jedna osoba nawet zamierza użyć go w swoim projekcie. Zatem jestem pełen optymizmu :wink:

Tylko błagam nie dziedziczenie z Rod::Model . Include mkay?

Sgłoś feature request na githubie :slight_smile: Myślałem o tym i raczej nie powinno być z tym większego problemu. W wersji 1.0 powinno się pojawić, ale raczej nie wcześniej.
A wersja 1.0 powinna być do końca tego roku.