„Chmura” - chwytliwe słowo kluczowe, uwielbiane przez marketingowców, ale też wielka szansa dla programistów i architektów, aby sprostać wysokiemu obciążeniu i zoptymalizować koszty infrastruktury serwerowej. W prezentacji pochylę się nad kilkoma scenariuszami uruchamiania aplikacji w chmurze, wyeksponuję punkty, które muszą być dostosowane aby system działał poprawnie w takim środowisku i pokaże jak radzić sobie z tym przy użyciu frameworka Symfony2. Przedyskutujemy również sposoby deploymentu zarówno prostych aplikacji, jak i tych, które działają pod wielkim obciążeniem, które wymagają złożonej architektury.
"Pitfalls of Object-Oriented Programming" [Polish] Prezentacja do wykładu przygotowanego na Koło Naukowe Twórców Gier "Polygon" na Politechnice Warszawskiej, a w drugiej wersji wygłoszonego także na AGH w Krakowie.
Opracowana na podstawie tekstu Fanatyzm obiektowy, przedstawia krytyczne podejście do projektowania i programowania obiektowego (m.in. pisania wrapperów na używane biblioteki, nadmiernej generalizacji, nadużywania dziedziczenia, enkapsulacji, wzorców projektowych) oraz jego negatywny wpływ na prostotę i czytelność kodu. Jako alternatywę prezentuje podejście DOD (Data-Oriented Design).
Published 2011-03-30
„Chmura” - chwytliwe słowo kluczowe, uwielbiane przez marketingowców, ale też wielka szansa dla programistów i architektów, aby sprostać wysokiemu obciążeniu i zoptymalizować koszty infrastruktury serwerowej. W prezentacji pochylę się nad kilkoma scenariuszami uruchamiania aplikacji w chmurze, wyeksponuję punkty, które muszą być dostosowane aby system działał poprawnie w takim środowisku i pokaże jak radzić sobie z tym przy użyciu frameworka Symfony2. Przedyskutujemy również sposoby deploymentu zarówno prostych aplikacji, jak i tych, które działają pod wielkim obciążeniem, które wymagają złożonej architektury.
"Pitfalls of Object-Oriented Programming" [Polish] Prezentacja do wykładu przygotowanego na Koło Naukowe Twórców Gier "Polygon" na Politechnice Warszawskiej, a w drugiej wersji wygłoszonego także na AGH w Krakowie.
Opracowana na podstawie tekstu Fanatyzm obiektowy, przedstawia krytyczne podejście do projektowania i programowania obiektowego (m.in. pisania wrapperów na używane biblioteki, nadmiernej generalizacji, nadużywania dziedziczenia, enkapsulacji, wzorców projektowych) oraz jego negatywny wpływ na prostotę i czytelność kodu. Jako alternatywę prezentuje podejście DOD (Data-Oriented Design).
Published 2011-03-30
Oprogramowanie można podzielić na typu według wielu rożnych
kluczy, jednym z nich może być: czy buduje produkt który będę utrzymywał przez lata, czy piszę kod dla kogoś - i przyszłość rozwiązania to nie będzie już moje zmartwienie. Przy tak postawionym pytaniu zasadnicza różnica dotyczy jakości, nie tylko ostatecznego produktu (działa czy nie działa) ale jakości samego rozwiązania. Nie tego co zostało dostarczone ale jak zostało zrobione. Bo właśnie to 'jak' wpływa później na koszt nanoszenia poprawek, dodawania kolejnych elementów, poprawiania ewentualnych błędów. Na wykładzie chciałbym przybliżyć te zasady jak, jak programować aby później z trwoga nie wracać do fragmentów sprzed lat. Jakich trzymać się zasad aby kod był czytelny, klarowny, intencja jasna a całość była dobrze zaprojektowana
Jakość oprogramowania jest rozbudowaną dziedziną wiedzy, którą każdy programista zna doskonale, ale ilu tak naprawdę stosuje skutecznie? W prelekcji przedstawię zarówno najważniejsze, zweryfikowane praktycznie sposoby podnoszenia i utrzymywania jakości oprogramowania na założonym poziomie, jak również omówię kilka pułapek, w które nadzwyczaj łatwo wpadamy.
O zagadnieniu:
Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś!
Cel i korzyści spotkania:
Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.
Porażka nie wchodzi w grę, czyli o niezawodnościKamil Grabowski
Bank? System sterowania farmą paneli fotowoltaicznych? A może największy w Polsce punkt wymiany ruchu internetowego? Co wspólnego mają te systemy?Podczas tej prezentacji chciałbym podzielić się z Wami moim przemyśleniami oraz doświadczeniem, które zdobyłem podczas rozwijania i utrzymywania aplikacji od których wymaga się, aby były niezawodne.
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...PROIDEA
DDD W PRAKTYCE, CZYLI JAK WDRAŻAMY I UCZYMY SIĘ DDD W ALLEGRO
DDD nie jest frameworkiem czy też metodologią, jest raczej zbiorem zdroworozsądkowych wzorców i narzędzi, które każdy może komponować według uznania i potrzeb. Chociaż jest już z nami od ponad 10 lat, ciągle uczymy się jak najlepiej je wykorzystać, tak aby z jednej strony wnieść wartość do codziennej pracy, a z drugiej nie wpadać w formalizmy i teoretyczne dyskusje.
Przeprowadzając transformację monolitycznej platformy Allegro zastosowaliśmy wzorce DDD jako jedno z głównych narzędzi i stało się naszym chlebem powszednim.
W prezentacji opowiem co ze skrzynki narzędziowej DDD użyliśmy i z jakim skutkiem. Dowiecie się jak sami uczyliśmy się DDD i jak sprzedawaliśmy tę wiedzę w organizacji.
Wreszcie opowiem wam czego sam nauczyłem się o DDD, szczególnie jak zmieniało się moje zrozumienie Projektowania Strategicznego i jak uczyłem się stosować DDD w świecie mikrousługowym.
Prezentacja przedstawia pomysł Scotta Amblera na prowadzenie analizy w metodach zwinnych: Agile Modeling oraz Agile Model Driven Development.
Prezentacja została przedstawiona na spotkaniu IIBA PC Business Analysis Round-tables #7 Pomysł na analizę w Agile: Agile Modeling:
http://www.meetup.com/IIBA-PC-Business-Analysis-Round-tables/events/222647759/
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiJIT Solutions
Prezentacja z wykładu prowadzonego przez Witka Boła i Bartka Ziębę o automatyzacji procesów wytwórczych w zespołach softwareowych. Prezentacja odbyła się w ramach konferencji InfoShare 2014, 22.05.2014 w Gdańsku.
Skok na naderwanym bungee, czyli agile bez automatyzacjiWitold Bołt
Slajdy z prezentacji przeprowadzonej w ramach konferencji InfoShare 2014, 22 maja 2014 r. w Gdańsku. Prowadzący prezentacje: Witold Bołt i Bartłomiej Zięba.
Oprogramowanie można podzielić na typu według wielu rożnych
kluczy, jednym z nich może być: czy buduje produkt który będę utrzymywał przez lata, czy piszę kod dla kogoś - i przyszłość rozwiązania to nie będzie już moje zmartwienie. Przy tak postawionym pytaniu zasadnicza różnica dotyczy jakości, nie tylko ostatecznego produktu (działa czy nie działa) ale jakości samego rozwiązania. Nie tego co zostało dostarczone ale jak zostało zrobione. Bo właśnie to 'jak' wpływa później na koszt nanoszenia poprawek, dodawania kolejnych elementów, poprawiania ewentualnych błędów. Na wykładzie chciałbym przybliżyć te zasady jak, jak programować aby później z trwoga nie wracać do fragmentów sprzed lat. Jakich trzymać się zasad aby kod był czytelny, klarowny, intencja jasna a całość była dobrze zaprojektowana
Jakość oprogramowania jest rozbudowaną dziedziną wiedzy, którą każdy programista zna doskonale, ale ilu tak naprawdę stosuje skutecznie? W prelekcji przedstawię zarówno najważniejsze, zweryfikowane praktycznie sposoby podnoszenia i utrzymywania jakości oprogramowania na założonym poziomie, jak również omówię kilka pułapek, w które nadzwyczaj łatwo wpadamy.
O zagadnieniu:
Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś!
Cel i korzyści spotkania:
Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.
Porażka nie wchodzi w grę, czyli o niezawodnościKamil Grabowski
Bank? System sterowania farmą paneli fotowoltaicznych? A może największy w Polsce punkt wymiany ruchu internetowego? Co wspólnego mają te systemy?Podczas tej prezentacji chciałbym podzielić się z Wami moim przemyśleniami oraz doświadczeniem, które zdobyłem podczas rozwijania i utrzymywania aplikacji od których wymaga się, aby były niezawodne.
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...PROIDEA
DDD W PRAKTYCE, CZYLI JAK WDRAŻAMY I UCZYMY SIĘ DDD W ALLEGRO
DDD nie jest frameworkiem czy też metodologią, jest raczej zbiorem zdroworozsądkowych wzorców i narzędzi, które każdy może komponować według uznania i potrzeb. Chociaż jest już z nami od ponad 10 lat, ciągle uczymy się jak najlepiej je wykorzystać, tak aby z jednej strony wnieść wartość do codziennej pracy, a z drugiej nie wpadać w formalizmy i teoretyczne dyskusje.
Przeprowadzając transformację monolitycznej platformy Allegro zastosowaliśmy wzorce DDD jako jedno z głównych narzędzi i stało się naszym chlebem powszednim.
W prezentacji opowiem co ze skrzynki narzędziowej DDD użyliśmy i z jakim skutkiem. Dowiecie się jak sami uczyliśmy się DDD i jak sprzedawaliśmy tę wiedzę w organizacji.
Wreszcie opowiem wam czego sam nauczyłem się o DDD, szczególnie jak zmieniało się moje zrozumienie Projektowania Strategicznego i jak uczyłem się stosować DDD w świecie mikrousługowym.
Prezentacja przedstawia pomysł Scotta Amblera na prowadzenie analizy w metodach zwinnych: Agile Modeling oraz Agile Model Driven Development.
Prezentacja została przedstawiona na spotkaniu IIBA PC Business Analysis Round-tables #7 Pomysł na analizę w Agile: Agile Modeling:
http://www.meetup.com/IIBA-PC-Business-Analysis-Round-tables/events/222647759/
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiJIT Solutions
Prezentacja z wykładu prowadzonego przez Witka Boła i Bartka Ziębę o automatyzacji procesów wytwórczych w zespołach softwareowych. Prezentacja odbyła się w ramach konferencji InfoShare 2014, 22.05.2014 w Gdańsku.
Skok na naderwanym bungee, czyli agile bez automatyzacjiWitold Bołt
Slajdy z prezentacji przeprowadzonej w ramach konferencji InfoShare 2014, 22 maja 2014 r. w Gdańsku. Prowadzący prezentacje: Witold Bołt i Bartłomiej Zięba.
4. Complex vs complicated
Simple to read, learn and understand
How easy it’s for novice programmer can
maintain a significant program
Make stuff simple but not simplistic
@kubem
12. Podstawowe zasady Wuja
• Nazywaj zmiennej w taki a taki sposób
• Stosuj komentarze w takich a nie innych
przypadkach
• Dziel funkcje na części zgodnie z takimi a
takimi zasadami
• Stosuj abstrakcje, symetrię, prawo Demeter
• Testuj, testuj, testuj, red – green – ….
• Refaktoruj
@kubem
14. Wartości
• Kod jest podstawowym medium komunikacji
w projekcie
• Jako zespół jesteśmy jednością
– Jak ja pójdę na skróty, to kolega będzie się męczył
– I jako całośd i tak będziemy nieefektywni
• Programy są częściej czytane niż pisane
• Więcej czasu poświęcamy na modyfikację
istniejącego kodu niż na tworzenie nowego
@kubem
15. Implementation patterns
• Komunikacja – kod źródłowy powinno się
czytad jak książkę
• Prostota – wprowadzaj złożonośd tylko wtedy,
kiedy jest to konieczne
• Elastyczność – elastycznośd to dodatkowa
złożonośd, więc wprowadzaj ją tylko tam gdzie
to konieczne
@kubem
16. Implementation patterns
• Lokalne konsekwencje – zmiana w jednym
miejscu nie powoduje zmian w innych
• Minimalne powtórzenia – DRY
• Dane i logika razem – ponieważ dane i logika z
reguły zmieniają się w tym samym czasie
• Symetria– utrzymuj podobny poziom
abstrakcji w obrębie metody / klasy
@kubem
17. „Czysty kod jest prosty i bezpośredni.
Czysty kod czyta się jak dobrze napisaną
prozę. Czysty kod nigdy nie zaciemnia
zamiarów projektanta; jest pełen
trafnych abstrakcji i prostych ścieżek
sterowania.”
Grady Booch – to jeden z tych panów od UMLa
18.
19.
20.
21.
22.
23.
24. Affordance
a quality of an object, which allows an
individual to perform an action. For
example, a knob affords twisting, and
perhaps pushing, while a cord
affords pulling
@kubem
25.
26.
27.
28.
29.
30.
31. public class Sql {
public Sql(String table, Column[] columns)
public String create()
public String insert(Object[] fields)
public String selectAll()
public String fieldByKey(
String keyColumn, String keyValue)
private String ColumnList(Column[] columns)
private String valuesList(
Object[] fields, final Column[] columns)
}
32. abstract public class Sql {
public Sql(String table, Column[] columns)
abstract public String generate();
}
public class CreateSql extends Sql {
public CreateSql(String table, Column[] columns)
@Override public String generate()
}
public class SelectSql extends Sql {
public SelectSql(String table, Column[] columns)
@Override public String generate()
}
public class InsertSql extends Sql {
public InsertSql(String table, Column[] columns)
@Override public String generate()
private String valuesList(Object[] fields, final Column[] columns)
}
public class FindKeyBySql extends Sql {
public FindKeyBySql(String table, Column[] columns, String keyColumn, String keyValue)
@Override public String generate()
}
public class ColumnList {
public ColumnList(Column[] columns)
public String generate()
}