Lepszy Git

Ostatnio razem z zespołem kombinowaliśmy wokół opcji i rozszerzeń gita pod kątem szybkiego i prostego sposobu na poprawę komfortu pracy.
Oto efekt jaki udało mi się uzyskać po 15 minutach zabawy:

czytelny git
Jak uzyskać podobny efekt?
Continue reading

JavaScript Puzzle #1

Co będzie wynikiem poniższego kodu (console.log można zastąpić document.writeln lub czymkolwiek innym – nie jest to istotą zagadki)?

bigQuestion = 'What is the sense of life, universe and everything?';
(function deepThought() {
    console.log(bigQuestion);
    var bigQuestion = '42';
    console.log(bigQuestion);
}());

Zanim uruchomimy kod, spróbujmy przewidzieć wynik.

Continue reading

S-99: Ninety-Nine Scala Problems

Jakiś czas temu natrafiłem na stronę pt. “Ninety-Nine Scala Problems” (http://aperiodic.net/phil/scala/s-99/) zawierająą 99 zadań wraz z przykładowymi rozwiązaniami.

Nie będę się rozpisywał czym ów strona jest inspirowana, ponieważ jest to pierwsza informacja podana na stronie 😉

S-99 polecam każdemu kto szuka praktycznego uzupełnienia dla książki lub czuje lekki niedosyt po kursie “Functional Programing Principles in Scala” (https://www.coursera.org/course/progfun).

Swoją drogą – znacie może jakieś ciekawe projekty open-source wykorzystujące Scalę, do których można by się przyłączyć?

Piszemy własny interpreter w Scali – cz. 3: Silnik wyrażeń oraz pierwszy plug-in

W tej notce pokażę w jaki sposób zaimplementowałem silnik wyrażeń interpretera, który przetwarza podane drzewo wyrażenia korzystając z operacji dostarczanych w postaci plug-inów.
Zadanie nie jest takie trudne gdy do dyspozycji mamy:

Continue reading

Piszemy własny interpreter w Scali – cz. 2: Parser

W tej części cyklu (chyba najobszerniejszej ze wszystkich) będzie więcej kodu, ponieważ weźmiemy na tapetę parser. Do akcji wkroczą: EBNF, ScalaTest oraz Parser Combinators.

W pierwszej kolejności opracujemy publiczny interfejs dla naszego parsera, następnie wyrazimy nasze zamiary w postaci testów jednostkowych, by ostatecznie przygotować diagram EBNF gramatyki naszego mini-języka, na podstawie którego stworzymy implementację.

Continue reading

Piszemy własny interpreter w Scali – cz. 1: Wprowadzenie

Na kilku kolejnych kartach kajecika chciałbym pokazać w jaki sposób realizowałem mini projekt, który dostarczał mi relaksu po godzinach.
Projekt polegał na stworzeniu prostego interpretera w Scali, który na wejściu przyjmie wyrażenie reprezentujące operacje na zbiorach liczb całkowitych i zwróci wynikowy zbiór.
Notki będą miały charakter zbliżony do tutoriala, a kod interpretera zostanie w całości udostępniony na githubie pod adresem: https://github.com/mkubala/sets-notation-interpreter

Continue reading

Google Guava i kolekcje

Guava to zbiór bibliotek dla Javy od Google, wspierających pracę z kolekcjami, cache’owanie, obsługę prymitywów, współbieżność, operacje wej./wyj. i wiele innych aspektów.

W tej notce chciałbym pokazać w jaki sposób możemy poprawić efektywność pracy z kolekcjami oraz uniknąć kilku pułapek.
Z założenia ma to być tylko wprowadzenie, mające wywołać u Ciebie tzw. ‘moment aha!‘.

Continue reading