Pracowałem przy wielu projektach, które to miały specyfikę totalnie zadłużonych. W prezentacji podzielę się 14 latami moich doświadczeń i zmagań z długiem technicznym w projektach small & medium business. Odpowiem jak my sami się godzimy na wprowadzenie długu technicznego do projektu. Opowiem jak go trzymać w ryzach i monitorować. Dam przykłady narzędzi do monitorowania miejsc w kodzie, które są potencjalnymi nosicielami długu technicznego. Podam gotowy przepis jak wprowadzić do work-flow walkę z długiem technicznym.
C++ wspomaga programowanie w dużej skali, pozwalając na precyzyjne wyrażenie współzależności pomiędzy różnymi częściami programu. Dlatego zakres pojęciowy techniki i stylu programowania w C++ wykracza poza tradycyjne jego pojmowanie w odniesieniu do programowania w małej skali, sprowadzającego się do szczegółów kodowania wiersz po wierszu.
Autor dowodzi, że nieprzemyślane stosowanie złożonych i zaawansowanych technik programowania może prowadzić do tworzenia chaotycznych, niezrozumiałych i mętnych konstrukcji, stanowiących zarazem często rozwiązania mniej efektywne, niż prostsze i zrozumiałe konstrukcje alternatywne. Tom Cargill dokonuje przeredagowania licznych programów, stosując techniki pozwalające na udoskonalenie kodu, począwszy od poprawy spójności, po usunięcie zbędnego, nadmiarowego dziedziczenia. Sposób prezentacji zagadnień rozpoczyna się od przeglądu oryginalnego kodu, który możesz samodzielnie ocenić i przeanalizować, rozważając możliwe alternatywne podejścia do przedstawionych zagadnień programistycznych. Te własne przemyślenia możesz następnie porównać z analizami i wnioskami Autora.
Na podstawie przykładów formułowane są uniwersalne reguły i zasady tworzenia kodu i projektowania programów. Zrozumienie i umiejętne stosowanie tych reguł pomoże profesjonalnym programistom projektować i pisać lepsze programy w C++.
Kolejne rozdziały poświęcone są następującym zagadnieniom:
* Abstrakcja -- pojęcia i modele abstrakcyjne
* Spójność
* Zbędne dziedziczenie
* Funkcje wirtualne
* Przeciążanie operatorów
* Nakładki typu "wrapper"
* Efektywność
Po wprowadzeniu i zilustrowaniu reguł programowania w pierwszych siedmiu rozdziałach, Tom Cargill prezentuje praktyczne studium, w trakcie którego pojedynczy przykładowy program przechodzi kolejne transformacje, które pozwalają poprawić jego ogólną jakość przy jednoczesnym zredukowaniu wielkości kodu. Konkluzję książki stanowi rozdział poświęcony wielokrotnemu dziedziczeniu.
Książka Toma Cargilla to nie tylko cenne źródło wiedzy dla zaawansowanych programistów -- przyda się ona również studentom informatyki i pokrewnych kierunków, zainteresowanych zdobyciem profesjonalnych umiejętności programistycznych.
Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...Business Link Krakow
Wygranie projektu czy decyzja o realizacji własnego pomysłu to moment, po którym następuje kluczowe pytanie. Jak go zrealizować? W VML na co dzień zadajemy sobie to i szereg innych pytań: z jakiej technologii skorzystać, jak go zoptymalizować czy gdzie go hostować, aby zrealizować zakładany zakres i dotrzymać terminu. W ramach tej prelekcji Piotr pokaże Ci jak znaleźć odpowiedzi na te i inne pytania, na co zwrócić szczególną uwagę kiedy decyzja o wyborze technologii rzutuje na cały projekt.
Kilka słów na temat tego co jest istotne przy doborze technologii do projektu, kiedy to mamy pomysł i dopiero rozpoczynamy realizację. Co to jest dług technologiczny, vendor lock-in, MVP.
Przygotuj projekt systemu informatycznego,
który naprawdę spełni oczekiwania użytkowników
* Wybierz technologię, platformę sprzętową i model licencjonowania
* Zadbaj o funkcjonalność i łatwość rozbudowy systemu
* Zabezpiecz system przed piractwem, kradzieżą i utratą danych
Termin "architektura oprogramowania" kojarzy się zwykle z doborem języka programowania, wzajemnymi zależnościami między komponentami powstającego systemu informatycznego, wyborem platformy bazodanowej i zaplanowaniem innych elementów związanych wyłącznie z zagadnieniami technicznymi. Tymczasem w opisie architektury systemu nie wolno pomijać także innych kwestii: modelu licencjonowania, sposobu wdrażania i konserwacji systemu, a przede wszystkim jego użyteczności. Te pozornie niezwiązane z projektem elementy mogą mieć duży wpływ na powodzenie przedsięwzięcia, jakim jest stworzenie i sprzedaż oprogramowania. Odpowiednio przygotowany projekt systemu informatycznego powinien więc obejmować zarówno zagadnienia techniczne, jak i ekonomiczne.
Książka "Więcej niż architektura oprogramowania" to poradnik, dzięki któremu stworzenie odpowiedniej relacji między technologią a biznesem jest łatwiejsze, niż mogłoby się wydawać. Może się przydać zarówno menedżerowi, jak i programiście. Autor książki, doświadczony kierownik projektów i twórca oprogramowania, przedstawia związki między zagadnieniami technicznymi a innymi aspektami. Znajdziesz w niej opisy dobrych i skutecznych rozwiązań oraz zaczerpnięte z rynku przykłady planowania produkcji oprogramowania.
* Znaczenie architektury oprogramowania
* Zarządzanie oprogramowaniem jako produktem
* Modele licencjonowania
* Wykorzystywanie obcych technologii w projekcie
* Wdrażanie systemu
* Obsługa techniczna
* Dobór marki
* Funkcjonalność i łatwość obsługi
* Zabezpieczanie aplikacji
Sprawy z pozoru mało ważne często powodują największe problemy. Nie ignoruj ich. Pracuj nad projektem kompleksowo.
C++ wspomaga programowanie w dużej skali, pozwalając na precyzyjne wyrażenie współzależności pomiędzy różnymi częściami programu. Dlatego zakres pojęciowy techniki i stylu programowania w C++ wykracza poza tradycyjne jego pojmowanie w odniesieniu do programowania w małej skali, sprowadzającego się do szczegółów kodowania wiersz po wierszu.
Autor dowodzi, że nieprzemyślane stosowanie złożonych i zaawansowanych technik programowania może prowadzić do tworzenia chaotycznych, niezrozumiałych i mętnych konstrukcji, stanowiących zarazem często rozwiązania mniej efektywne, niż prostsze i zrozumiałe konstrukcje alternatywne. Tom Cargill dokonuje przeredagowania licznych programów, stosując techniki pozwalające na udoskonalenie kodu, począwszy od poprawy spójności, po usunięcie zbędnego, nadmiarowego dziedziczenia. Sposób prezentacji zagadnień rozpoczyna się od przeglądu oryginalnego kodu, który możesz samodzielnie ocenić i przeanalizować, rozważając możliwe alternatywne podejścia do przedstawionych zagadnień programistycznych. Te własne przemyślenia możesz następnie porównać z analizami i wnioskami Autora.
Na podstawie przykładów formułowane są uniwersalne reguły i zasady tworzenia kodu i projektowania programów. Zrozumienie i umiejętne stosowanie tych reguł pomoże profesjonalnym programistom projektować i pisać lepsze programy w C++.
Kolejne rozdziały poświęcone są następującym zagadnieniom:
* Abstrakcja -- pojęcia i modele abstrakcyjne
* Spójność
* Zbędne dziedziczenie
* Funkcje wirtualne
* Przeciążanie operatorów
* Nakładki typu "wrapper"
* Efektywność
Po wprowadzeniu i zilustrowaniu reguł programowania w pierwszych siedmiu rozdziałach, Tom Cargill prezentuje praktyczne studium, w trakcie którego pojedynczy przykładowy program przechodzi kolejne transformacje, które pozwalają poprawić jego ogólną jakość przy jednoczesnym zredukowaniu wielkości kodu. Konkluzję książki stanowi rozdział poświęcony wielokrotnemu dziedziczeniu.
Książka Toma Cargilla to nie tylko cenne źródło wiedzy dla zaawansowanych programistów -- przyda się ona również studentom informatyki i pokrewnych kierunków, zainteresowanych zdobyciem profesjonalnych umiejętności programistycznych.
Piotr Grabski-Gradziński (VML) - To jak zrobimy ten projekt? Czyli o doborze ...Business Link Krakow
Wygranie projektu czy decyzja o realizacji własnego pomysłu to moment, po którym następuje kluczowe pytanie. Jak go zrealizować? W VML na co dzień zadajemy sobie to i szereg innych pytań: z jakiej technologii skorzystać, jak go zoptymalizować czy gdzie go hostować, aby zrealizować zakładany zakres i dotrzymać terminu. W ramach tej prelekcji Piotr pokaże Ci jak znaleźć odpowiedzi na te i inne pytania, na co zwrócić szczególną uwagę kiedy decyzja o wyborze technologii rzutuje na cały projekt.
Kilka słów na temat tego co jest istotne przy doborze technologii do projektu, kiedy to mamy pomysł i dopiero rozpoczynamy realizację. Co to jest dług technologiczny, vendor lock-in, MVP.
Przygotuj projekt systemu informatycznego,
który naprawdę spełni oczekiwania użytkowników
* Wybierz technologię, platformę sprzętową i model licencjonowania
* Zadbaj o funkcjonalność i łatwość rozbudowy systemu
* Zabezpiecz system przed piractwem, kradzieżą i utratą danych
Termin "architektura oprogramowania" kojarzy się zwykle z doborem języka programowania, wzajemnymi zależnościami między komponentami powstającego systemu informatycznego, wyborem platformy bazodanowej i zaplanowaniem innych elementów związanych wyłącznie z zagadnieniami technicznymi. Tymczasem w opisie architektury systemu nie wolno pomijać także innych kwestii: modelu licencjonowania, sposobu wdrażania i konserwacji systemu, a przede wszystkim jego użyteczności. Te pozornie niezwiązane z projektem elementy mogą mieć duży wpływ na powodzenie przedsięwzięcia, jakim jest stworzenie i sprzedaż oprogramowania. Odpowiednio przygotowany projekt systemu informatycznego powinien więc obejmować zarówno zagadnienia techniczne, jak i ekonomiczne.
Książka "Więcej niż architektura oprogramowania" to poradnik, dzięki któremu stworzenie odpowiedniej relacji między technologią a biznesem jest łatwiejsze, niż mogłoby się wydawać. Może się przydać zarówno menedżerowi, jak i programiście. Autor książki, doświadczony kierownik projektów i twórca oprogramowania, przedstawia związki między zagadnieniami technicznymi a innymi aspektami. Znajdziesz w niej opisy dobrych i skutecznych rozwiązań oraz zaczerpnięte z rynku przykłady planowania produkcji oprogramowania.
* Znaczenie architektury oprogramowania
* Zarządzanie oprogramowaniem jako produktem
* Modele licencjonowania
* Wykorzystywanie obcych technologii w projekcie
* Wdrażanie systemu
* Obsługa techniczna
* Dobór marki
* Funkcjonalność i łatwość obsługi
* Zabezpieczanie aplikacji
Sprawy z pozoru mało ważne często powodują największe problemy. Nie ignoruj ich. Pracuj nad projektem kompleksowo.
Wbrew powszechnym opiniom, nie tak prosto jest zrobić dobre Code Review. Robione w pośpiechu, tylko po to by je "odbębnić", często stwarza więcej szkody niż pożytku. Opowiem wam dlaczego code review jest ważne i jak wykorzystać ten proces aby upewnić się, że napisany kod jest najwyższej jakości. Będę nie tylko mówił o tym kto powinien robić code reviews, i dla kogo, jakie informacje są potrzebne do przeprowadzenia skutecznego code review, ale także jak zrobić dobre code review w najkrótszym możliwym czasie.
C++ to popularny i uniwersalny język programowania. Jednak po dłuższym stosowaniu programiści zaczynają zauważać pewne jego niedoskonałości i ograniczenia. System typów, sposób działania niektórych kompilatorów, związki pomiędzy wskaźnikami i tablicami, nieprzewidziane w standardzie zachowania obiektów statycznych i bibliotek dynamicznych to tylko niektóre z nich. Aby je obejść, należy wykorzystywać wiele bardzo zaawansowanych i nieznanych wielu programistom metod.
Książka "Język C++. Gotowe rozwiązania dla programistów" to podręcznik dla tych programistów C++, którzy zaczęli już dostrzegać ograniczenia tego języka i zastanawiają się, jak sobie z nimi poradzić. Autor pokazuje sposoby ujarzmienia złożoności języka i uzyskania pełnej kontroli nad kodem. Przedstawia najpoważniejsze wady C++ i sposoby rozwiązywania powodowanych przez nie problemów. Opisuje również metody tworzenia stabilniejszego, bardziej uniwersalnego, wydajniejszego i łatwiejszego w pielęgnacji kodu.
* Wymuszanie założeń projektowych
* Cykl życia obiektów
* Hermetyzacja zasobów, danych i typów
* Modele dostępu do obiektów
* Obsługa wątków
* Korzystanie z obiektów statycznych
* Konwersja danych i typów
* Zarządzanie pamięcią
* Sterowanie działaniem kompilatora
Wszyscy programiści, niezależnie od stopnia zaawansowania, znajdą w tej książce wiadomości, które usprawnią i przyspieszą ich pracę.
Techniki, czyli przekształcenia refaktoryzacyjne pomagają transformować fragmenty kodu z jednej postaci w inną. Jednak duże refaktoryzacje to przede wszystkim przedsięwzięcie organizacyjne. Co warto refaktoryzować? Jak zidentyfikować kluczowe problemy? Kiedy nie podejmować działań? Czy w ogóle warto? Jakie heurystyki i strategie wysokopoziomowe możesz wykorzystać? Odpowiedzi na te pytania poznasz podczas prelekcji Strategiczna refaktoryzacja.
Kompendium wiedzy dla każdego programisty, projektanta i kierownika projektu
* Nowoczesne metodyki wytwarzania oprogramowania
* Narzędzia do modelowania aplikacji i automatycznego generowania kodu
* Koncepcja architektury sterowanej modelami
* Sposoby zapewnienia jakości aplikacji
Tworzenie aplikacji korporacyjnych to wyścig z czasem. Organizacje zmieniają się podobnie jak otoczenie biznesowe, w którym działają. Zbyt długi okres przygotowania aplikacji może sprawić, że po wdrożeniu okaże się ona bezużyteczna. Z drugiej jednak strony, zbyt duży pośpiech przy tworzeniu aplikacji powoduje, że pomija się fazę modelowania i testowania, pisząc kod źródłowy bez jakiejkolwiek koncepcji i planu. Efektem takiego pośpiechu są aplikacje niedostosowane do wymagań użytkowników i pracujące niestabilnie. Sposobem na stworzenie odpowiedniego systemu informatycznego dla korporacji jest wykorzystywanie odpowiednich metodyk projektowych i nowoczesnych narzędzi ułatwiających zarówno pisanie, jak i testowanie aplikacji.
Książka "J2EE. Podstawy programowania aplikacji korporacyjnych" przedstawia najlepsze praktyki projektowe stosowane przy tworzeniu systemów informatycznych z wykorzystaniem platformy J2EE. Opisano w niej kolejne etapy projektu oraz narzędzia i metodyki, dzięki którym przeprowadzenie każdego z nich będzie szybsze i efektywniejsze. Czytając ją, poznasz metodyki RUP i XP, typy architektur systemów oraz sposoby modelowania aplikacji i narzędzia do automatycznego generowania szkieletu kodu źródłowego. Dowiesz się, jak optymalnie skonfigurować środowiska programistyczne i jak testować kolejne moduły aplikacji. Nauczysz się korzystać z nowoczesnych metodyk i narzędzi.
* Podstawowe wiadomości o błyskawicznym wytwarzaniu aplikacji (RAD)
* Metodyki projektowe Rational Unified Process (RUP) oraz Extreme Programming (XP)
* Wielowarstwowe architektury systemów
* Modelowanie systemów za pomocą języka UML
* Automatyczne generowanie kodu
* Stosowanie narzędzi XDoclet i Hibernate
* Komunikacja z bazami danych
* Zasady programowania aspektowego
* Testowanie aplikacji
Wiadomości zawarte w tej książce sprawią, że będziesz w stanie szybciej projektować i tworzyć aplikacje korporacyjne.
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.
4Developers 2018: Sagi na frontendzie - czyli jak ułatwić sobie pracę ze skom...PROIDEA
Asynchroniczność przestała być dodatkiem, a stała się mechanizmem bez którego nie wyobrażamy sobie budowy aplikacji. Możemy do tego podejść na różne sposoby.
Możemy albo utknąć w "callback hellu" albo poszukać czegoś co umożliwi nam pisanie czytelnego, łatwego w utrzymaniu a zarazem prostego kodu, który dodatkowo bez najmniejszych przeszkód możemy testować.
Jak zredukować efekty uboczne związane z pobieraniem, przetwarzaniem danych, dostępem do cache’a na rzecz prostej integracji z popularnymi frontendowymi bibliotekami takimi jak redux? Jak modelować skomplikowane transakcje biznesowe wymagające synchronizacji wielu kroków?
Podczas mojej prezentacji opowiem na bazie doświadczeń w projektach komercyjnych jak sagi oraz generatory wykorzystane w bibliotece redux-saga mogą poprawić czytelność Twojego kodu, ułatwić jego testowanie, oraz oszczędzić Twój cenny czas.
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.
Bardzo dynamiczny rozwój firmy DEFRO w ostatnich latach sprawił, że uwidocznił się brak narzędzia, które mogłoby ogarnąć całokształt funkcjonowania firmy. Wtedy narodziła się idea pozyskania zintegrowanego systemu, który wesprze procesy zarządzania.
Bardzo dynamiczny rozwój firmy w ostatnich latach sprawił, że uwidocznił się brak narzędzia, które mogłoby ogarnąć całokształt funkcjonowania firmy. Wtedy narodziła się idea pozyskania zintegrowanego systemu, który wesprze procesy zarządzania. Oczekiwania te obejmowały głównie obszar produkcji połączonej z funkcjonalnościami finansowo-księgową oraz magazynową.
Język C++ od czasu jego zdefiniowania przez Bjarne Stroustrupa był kilkakrotnie uaktualniany w latach 80. i 90. XX wieku. Chociaż C++Builder nie jest dokładnym odzwierciedleniem standardu ANSI języka C++, to obecna jego wersja przygotowana przez firmę Borland jest stabilna i zgodna z oczekiwaniami programistów. Borland C++Builder stanowi połączenie nowoczesnego języka programowania, jakim jest C++, biblioteki komponentów wizualnych VCL/CLX oraz zintegrowanego środowiska programisty IDE.
"C++Builder. Kompendium programisty" omawia podstawy programowania w C++ ze szczególnym uwzględnieniem możliwości oferowanych przez kompilator Borland C++Builder. Poznasz więc nie tylko sam język, ale nauczysz się pisać w nim wydajne i przenośne aplikacje, działające zarówno w środowisku linuksowym, jak i w Windows.
Omówione zagadnienia obejmują:
* Opis zintegrowanego środowiska programisty C++Buildera
* Podstawy języka C++
* Wczesne oraz późne wiązanie -- wstęp do programowania zorientowanego obiektowo
* Możliwości C++Buildera w zakresie posługiwania się tablicami różnego typu
* Zaawansowane operatory rzutowania typów
* Informacje czasu wykonania
* Obsługę wyjątków
* Obsługę plików
* Łańcuchy ANSI
* Zmienne o typie modyfikowalnym w czasie wykonywania programu
* Funkcje FPU i systemowe
* Elementy wielowątkowości -- wykorzystanie C++ oraz C++Buildera w nowoczesnych, wielowątkowych systemach operacyjnych
* Liczby pseudolosowe i konwersje wielkości liczbowych
* Wprowadzenie do grafiki
* Komponentowy model C++Buildera i biblioteki DLL
* Biblioteka CLX -- projektowanie aplikacji przenośnych pomiędzy systemami operacyjnymi Windows i Linux
Poznaj możliwości i mechanizmy C++ stosowane przez profesjonalistów
* Efektywne zarządzanie pamięcią
* Obsługa błędów
* Biblioteki i wzorce projektowe
Język C++ od dawna cieszy się zasłużoną popularnością wśród twórców oprogramowania. Jednak często nawet najbardziej doświadczeni programiści nie wykorzystują wszystkich jego możliwości. W opracowaniach dotyczących tego języka najczęściej omawiana jest składnia i elementy języka, a znacznie rzadziej -- jego praktyczne zastosowania. Brak odniesień do praktyki powoduje nieznajomość wielu niezwykle przydatnych i ułatwiających pracę aspektów C++ i nadmierne eksploatowanie prostych, książkowych konstrukcji.
Książka "C++. Zaawansowane programowanie" to przegląd metod programowania nie omawianych w większości publikacji. Ten przeznaczony dla średnio zaawansowanych programistów podręcznik przedstawia zasady stosowania C++ do rozwiązywania prawdziwych problemów. Opisuje nieznane możliwości znacznie przyspieszające i usprawniające pracę, sposoby tworzenia przenośnego kodu oraz testowania oprogramowania. Książka zawiera również omówienie biblioteki standardowej C++ oraz wzorców projektowych.
* Zasady tworzenia projektów w C++
* Projektowanie obiektowe
* Korzystanie z biblioteki standardowej C++
* Tworzenie kodu przeznaczonego do wielokrotnego zastosowania
* Styl kodowania
* Zarządzanie pamięcią
* Procedury obsługi wyjątków
* Przeciążanie operatorów
* Tworzenie aplikacji wieloplatformowych
* Testowanie kodu i usuwanie błędów
* Programowanie rozproszone
* Stosowanie wzorców projektowych
Naucz się korzystać z C++ tak, jak robią to profesjonaliści.
Prezentacja, którą przedstawiłem w trakcie konferencji 33rd Degree. Pamiętaj - nie chodzi tu o krytykę TDD, DDD, BDD itd. Chodzi o zachętę do samodzielnego myślenia.
Redesign Playmobile.pl - Polish IA Summit 2011Paulina Rzymska
Prezentacja wygłoszona na Polish IA Summit 2011 przez Paulinę Rzymską z K2 oraz Marcina Piotrowskiego z Play. Prezentacja opisuje proces projektowania portalu z perspektywy agencji i klienta.
Wizualne środowiska projektowe od dłuższego czasu cieszą się uznaniem programistów. Możliwość budowania aplikacji z gotowych komponentów, realizujących typowe funkcje, pozwala skoncentrować się na jej funkcjonalności bez potrzeby ponownego wymyślania koła. Najbardziej znanym środowiskiem tego typu jest Delphi, jednak jego producent, firma Borland, wypuścił na rynek kolejne narzędzie: C++Builder. To wizualne środowisko projektowe oparte na języku C++ pozwala tworzyć aplikacje dla platformy Win32 z wykorzystaniem komponentów VCL. W sieci dostępna jest również jego bezpłatna wersja o nazwie Turbo C++ Explorer.
"C++Builder i Turbo C++. Podstawy" to podręcznik programowania w tych środowiskach. Czytając go, nauczysz się tworzyć aplikacje w języku C++ dla systemu Windows z wykorzystaniem C++Buildera lub Turbo C++. Dowiesz się, jak zainstalować i skonfigurować środowisko programistyczne oraz jak utworzyć w nim projekt. Poznasz elementy języka C++, zasady programowania obiektowego i korzystania z komponentów VCL. Stworzysz własne komponenty i aplikacje, zaimplementujesz mechanizm przeciągania i upuszczania, a także zapiszesz dane aplikacji w rejestrze systemu Windows.
* Instalacja środowiska programistycznego
* Pierwszy projekt
* Zmienne i instrukcje w C++
* Programowanie zorientowane obiektowo
* Wyszukiwanie i usuwanie błędów w kodzie
* Komponenty VCL oferowane przez C++Buildera
* Tworzenie interfejsu użytkownika dla aplikacji
* Drukowanie
* Operacje na plikach
* Przechowywanie informacji w rejestrze systemowym
* Tworzenie własnych komponentów VCL
Poznaj nowoczesne narzędzia programistyczne.
Poznanie ruchów figur szachowych to dopiero pierwszy krok w nauce tej gry. Aby ją opanować, trzeba zrozumieć strategie i taktyki, które wpływają na każdy ruch. To samo dotyczy języka C++. Znajomość właściwych strategii pomaga unikać pułapek i pracować o wiele skuteczniej. Rob Murray dzieląc się swoim doświadczeniem pomaga programistom C++ wykonać następny krok w kierunku tworzenia wydajnych aplikacji.
Licznie występujące w całej książce przykłady kodu mają na celu zilustrowanie przydatnych strategii programistycznych i ostrzec przed nabyciem niebezpiecznych nawyków. Aby dodatkowo ułatwić przyswajanie nowych umiejętności, każdy rozdział kończy się listą poruszonych w nim kluczowych zagadnień oraz pytaniami mającymi spowodować przemyślenia i dyskusje.
Książka przedstawia między innymi:
* Tworzenie właściwych abstrakcji dla projektu i przekształcanie abstrakcji w klasy C++
* Mechanizmy dziedziczenia pojedynczego i wielokrotnego
* Metody tworzenia klas
* Szczegółowy opis mechanizmu szablonów
* Wskazówki dotyczące stosowania wyjątków
* Metody tworzenia kodu nadającego się do wielokrotnego wykorzystania
* Przenoszenie programów z języka C do C++
Robert B. Murray jest wicedyrektorem ds. inżynierii oprogramowania w firmie Quantitative Data Systems dostarczającej niestandardowych rozwiązań z zakresu oprogramowania dla czołowych firm. [więcej...]
More Related Content
Similar to Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Wbrew powszechnym opiniom, nie tak prosto jest zrobić dobre Code Review. Robione w pośpiechu, tylko po to by je "odbębnić", często stwarza więcej szkody niż pożytku. Opowiem wam dlaczego code review jest ważne i jak wykorzystać ten proces aby upewnić się, że napisany kod jest najwyższej jakości. Będę nie tylko mówił o tym kto powinien robić code reviews, i dla kogo, jakie informacje są potrzebne do przeprowadzenia skutecznego code review, ale także jak zrobić dobre code review w najkrótszym możliwym czasie.
C++ to popularny i uniwersalny język programowania. Jednak po dłuższym stosowaniu programiści zaczynają zauważać pewne jego niedoskonałości i ograniczenia. System typów, sposób działania niektórych kompilatorów, związki pomiędzy wskaźnikami i tablicami, nieprzewidziane w standardzie zachowania obiektów statycznych i bibliotek dynamicznych to tylko niektóre z nich. Aby je obejść, należy wykorzystywać wiele bardzo zaawansowanych i nieznanych wielu programistom metod.
Książka "Język C++. Gotowe rozwiązania dla programistów" to podręcznik dla tych programistów C++, którzy zaczęli już dostrzegać ograniczenia tego języka i zastanawiają się, jak sobie z nimi poradzić. Autor pokazuje sposoby ujarzmienia złożoności języka i uzyskania pełnej kontroli nad kodem. Przedstawia najpoważniejsze wady C++ i sposoby rozwiązywania powodowanych przez nie problemów. Opisuje również metody tworzenia stabilniejszego, bardziej uniwersalnego, wydajniejszego i łatwiejszego w pielęgnacji kodu.
* Wymuszanie założeń projektowych
* Cykl życia obiektów
* Hermetyzacja zasobów, danych i typów
* Modele dostępu do obiektów
* Obsługa wątków
* Korzystanie z obiektów statycznych
* Konwersja danych i typów
* Zarządzanie pamięcią
* Sterowanie działaniem kompilatora
Wszyscy programiści, niezależnie od stopnia zaawansowania, znajdą w tej książce wiadomości, które usprawnią i przyspieszą ich pracę.
Techniki, czyli przekształcenia refaktoryzacyjne pomagają transformować fragmenty kodu z jednej postaci w inną. Jednak duże refaktoryzacje to przede wszystkim przedsięwzięcie organizacyjne. Co warto refaktoryzować? Jak zidentyfikować kluczowe problemy? Kiedy nie podejmować działań? Czy w ogóle warto? Jakie heurystyki i strategie wysokopoziomowe możesz wykorzystać? Odpowiedzi na te pytania poznasz podczas prelekcji Strategiczna refaktoryzacja.
Kompendium wiedzy dla każdego programisty, projektanta i kierownika projektu
* Nowoczesne metodyki wytwarzania oprogramowania
* Narzędzia do modelowania aplikacji i automatycznego generowania kodu
* Koncepcja architektury sterowanej modelami
* Sposoby zapewnienia jakości aplikacji
Tworzenie aplikacji korporacyjnych to wyścig z czasem. Organizacje zmieniają się podobnie jak otoczenie biznesowe, w którym działają. Zbyt długi okres przygotowania aplikacji może sprawić, że po wdrożeniu okaże się ona bezużyteczna. Z drugiej jednak strony, zbyt duży pośpiech przy tworzeniu aplikacji powoduje, że pomija się fazę modelowania i testowania, pisząc kod źródłowy bez jakiejkolwiek koncepcji i planu. Efektem takiego pośpiechu są aplikacje niedostosowane do wymagań użytkowników i pracujące niestabilnie. Sposobem na stworzenie odpowiedniego systemu informatycznego dla korporacji jest wykorzystywanie odpowiednich metodyk projektowych i nowoczesnych narzędzi ułatwiających zarówno pisanie, jak i testowanie aplikacji.
Książka "J2EE. Podstawy programowania aplikacji korporacyjnych" przedstawia najlepsze praktyki projektowe stosowane przy tworzeniu systemów informatycznych z wykorzystaniem platformy J2EE. Opisano w niej kolejne etapy projektu oraz narzędzia i metodyki, dzięki którym przeprowadzenie każdego z nich będzie szybsze i efektywniejsze. Czytając ją, poznasz metodyki RUP i XP, typy architektur systemów oraz sposoby modelowania aplikacji i narzędzia do automatycznego generowania szkieletu kodu źródłowego. Dowiesz się, jak optymalnie skonfigurować środowiska programistyczne i jak testować kolejne moduły aplikacji. Nauczysz się korzystać z nowoczesnych metodyk i narzędzi.
* Podstawowe wiadomości o błyskawicznym wytwarzaniu aplikacji (RAD)
* Metodyki projektowe Rational Unified Process (RUP) oraz Extreme Programming (XP)
* Wielowarstwowe architektury systemów
* Modelowanie systemów za pomocą języka UML
* Automatyczne generowanie kodu
* Stosowanie narzędzi XDoclet i Hibernate
* Komunikacja z bazami danych
* Zasady programowania aspektowego
* Testowanie aplikacji
Wiadomości zawarte w tej książce sprawią, że będziesz w stanie szybciej projektować i tworzyć aplikacje korporacyjne.
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.
4Developers 2018: Sagi na frontendzie - czyli jak ułatwić sobie pracę ze skom...PROIDEA
Asynchroniczność przestała być dodatkiem, a stała się mechanizmem bez którego nie wyobrażamy sobie budowy aplikacji. Możemy do tego podejść na różne sposoby.
Możemy albo utknąć w "callback hellu" albo poszukać czegoś co umożliwi nam pisanie czytelnego, łatwego w utrzymaniu a zarazem prostego kodu, który dodatkowo bez najmniejszych przeszkód możemy testować.
Jak zredukować efekty uboczne związane z pobieraniem, przetwarzaniem danych, dostępem do cache’a na rzecz prostej integracji z popularnymi frontendowymi bibliotekami takimi jak redux? Jak modelować skomplikowane transakcje biznesowe wymagające synchronizacji wielu kroków?
Podczas mojej prezentacji opowiem na bazie doświadczeń w projektach komercyjnych jak sagi oraz generatory wykorzystane w bibliotece redux-saga mogą poprawić czytelność Twojego kodu, ułatwić jego testowanie, oraz oszczędzić Twój cenny czas.
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.
Bardzo dynamiczny rozwój firmy DEFRO w ostatnich latach sprawił, że uwidocznił się brak narzędzia, które mogłoby ogarnąć całokształt funkcjonowania firmy. Wtedy narodziła się idea pozyskania zintegrowanego systemu, który wesprze procesy zarządzania.
Bardzo dynamiczny rozwój firmy w ostatnich latach sprawił, że uwidocznił się brak narzędzia, które mogłoby ogarnąć całokształt funkcjonowania firmy. Wtedy narodziła się idea pozyskania zintegrowanego systemu, który wesprze procesy zarządzania. Oczekiwania te obejmowały głównie obszar produkcji połączonej z funkcjonalnościami finansowo-księgową oraz magazynową.
Język C++ od czasu jego zdefiniowania przez Bjarne Stroustrupa był kilkakrotnie uaktualniany w latach 80. i 90. XX wieku. Chociaż C++Builder nie jest dokładnym odzwierciedleniem standardu ANSI języka C++, to obecna jego wersja przygotowana przez firmę Borland jest stabilna i zgodna z oczekiwaniami programistów. Borland C++Builder stanowi połączenie nowoczesnego języka programowania, jakim jest C++, biblioteki komponentów wizualnych VCL/CLX oraz zintegrowanego środowiska programisty IDE.
"C++Builder. Kompendium programisty" omawia podstawy programowania w C++ ze szczególnym uwzględnieniem możliwości oferowanych przez kompilator Borland C++Builder. Poznasz więc nie tylko sam język, ale nauczysz się pisać w nim wydajne i przenośne aplikacje, działające zarówno w środowisku linuksowym, jak i w Windows.
Omówione zagadnienia obejmują:
* Opis zintegrowanego środowiska programisty C++Buildera
* Podstawy języka C++
* Wczesne oraz późne wiązanie -- wstęp do programowania zorientowanego obiektowo
* Możliwości C++Buildera w zakresie posługiwania się tablicami różnego typu
* Zaawansowane operatory rzutowania typów
* Informacje czasu wykonania
* Obsługę wyjątków
* Obsługę plików
* Łańcuchy ANSI
* Zmienne o typie modyfikowalnym w czasie wykonywania programu
* Funkcje FPU i systemowe
* Elementy wielowątkowości -- wykorzystanie C++ oraz C++Buildera w nowoczesnych, wielowątkowych systemach operacyjnych
* Liczby pseudolosowe i konwersje wielkości liczbowych
* Wprowadzenie do grafiki
* Komponentowy model C++Buildera i biblioteki DLL
* Biblioteka CLX -- projektowanie aplikacji przenośnych pomiędzy systemami operacyjnymi Windows i Linux
Poznaj możliwości i mechanizmy C++ stosowane przez profesjonalistów
* Efektywne zarządzanie pamięcią
* Obsługa błędów
* Biblioteki i wzorce projektowe
Język C++ od dawna cieszy się zasłużoną popularnością wśród twórców oprogramowania. Jednak często nawet najbardziej doświadczeni programiści nie wykorzystują wszystkich jego możliwości. W opracowaniach dotyczących tego języka najczęściej omawiana jest składnia i elementy języka, a znacznie rzadziej -- jego praktyczne zastosowania. Brak odniesień do praktyki powoduje nieznajomość wielu niezwykle przydatnych i ułatwiających pracę aspektów C++ i nadmierne eksploatowanie prostych, książkowych konstrukcji.
Książka "C++. Zaawansowane programowanie" to przegląd metod programowania nie omawianych w większości publikacji. Ten przeznaczony dla średnio zaawansowanych programistów podręcznik przedstawia zasady stosowania C++ do rozwiązywania prawdziwych problemów. Opisuje nieznane możliwości znacznie przyspieszające i usprawniające pracę, sposoby tworzenia przenośnego kodu oraz testowania oprogramowania. Książka zawiera również omówienie biblioteki standardowej C++ oraz wzorców projektowych.
* Zasady tworzenia projektów w C++
* Projektowanie obiektowe
* Korzystanie z biblioteki standardowej C++
* Tworzenie kodu przeznaczonego do wielokrotnego zastosowania
* Styl kodowania
* Zarządzanie pamięcią
* Procedury obsługi wyjątków
* Przeciążanie operatorów
* Tworzenie aplikacji wieloplatformowych
* Testowanie kodu i usuwanie błędów
* Programowanie rozproszone
* Stosowanie wzorców projektowych
Naucz się korzystać z C++ tak, jak robią to profesjonaliści.
Prezentacja, którą przedstawiłem w trakcie konferencji 33rd Degree. Pamiętaj - nie chodzi tu o krytykę TDD, DDD, BDD itd. Chodzi o zachętę do samodzielnego myślenia.
Redesign Playmobile.pl - Polish IA Summit 2011Paulina Rzymska
Prezentacja wygłoszona na Polish IA Summit 2011 przez Paulinę Rzymską z K2 oraz Marcina Piotrowskiego z Play. Prezentacja opisuje proces projektowania portalu z perspektywy agencji i klienta.
Wizualne środowiska projektowe od dłuższego czasu cieszą się uznaniem programistów. Możliwość budowania aplikacji z gotowych komponentów, realizujących typowe funkcje, pozwala skoncentrować się na jej funkcjonalności bez potrzeby ponownego wymyślania koła. Najbardziej znanym środowiskiem tego typu jest Delphi, jednak jego producent, firma Borland, wypuścił na rynek kolejne narzędzie: C++Builder. To wizualne środowisko projektowe oparte na języku C++ pozwala tworzyć aplikacje dla platformy Win32 z wykorzystaniem komponentów VCL. W sieci dostępna jest również jego bezpłatna wersja o nazwie Turbo C++ Explorer.
"C++Builder i Turbo C++. Podstawy" to podręcznik programowania w tych środowiskach. Czytając go, nauczysz się tworzyć aplikacje w języku C++ dla systemu Windows z wykorzystaniem C++Buildera lub Turbo C++. Dowiesz się, jak zainstalować i skonfigurować środowisko programistyczne oraz jak utworzyć w nim projekt. Poznasz elementy języka C++, zasady programowania obiektowego i korzystania z komponentów VCL. Stworzysz własne komponenty i aplikacje, zaimplementujesz mechanizm przeciągania i upuszczania, a także zapiszesz dane aplikacji w rejestrze systemu Windows.
* Instalacja środowiska programistycznego
* Pierwszy projekt
* Zmienne i instrukcje w C++
* Programowanie zorientowane obiektowo
* Wyszukiwanie i usuwanie błędów w kodzie
* Komponenty VCL oferowane przez C++Buildera
* Tworzenie interfejsu użytkownika dla aplikacji
* Drukowanie
* Operacje na plikach
* Przechowywanie informacji w rejestrze systemowym
* Tworzenie własnych komponentów VCL
Poznaj nowoczesne narzędzia programistyczne.
Poznanie ruchów figur szachowych to dopiero pierwszy krok w nauce tej gry. Aby ją opanować, trzeba zrozumieć strategie i taktyki, które wpływają na każdy ruch. To samo dotyczy języka C++. Znajomość właściwych strategii pomaga unikać pułapek i pracować o wiele skuteczniej. Rob Murray dzieląc się swoim doświadczeniem pomaga programistom C++ wykonać następny krok w kierunku tworzenia wydajnych aplikacji.
Licznie występujące w całej książce przykłady kodu mają na celu zilustrowanie przydatnych strategii programistycznych i ostrzec przed nabyciem niebezpiecznych nawyków. Aby dodatkowo ułatwić przyswajanie nowych umiejętności, każdy rozdział kończy się listą poruszonych w nim kluczowych zagadnień oraz pytaniami mającymi spowodować przemyślenia i dyskusje.
Książka przedstawia między innymi:
* Tworzenie właściwych abstrakcji dla projektu i przekształcanie abstrakcji w klasy C++
* Mechanizmy dziedziczenia pojedynczego i wielokrotnego
* Metody tworzenia klas
* Szczegółowy opis mechanizmu szablonów
* Wskazówki dotyczące stosowania wyjątków
* Metody tworzenia kodu nadającego się do wielokrotnego wykorzystania
* Przenoszenie programów z języka C do C++
Robert B. Murray jest wicedyrektorem ds. inżynierii oprogramowania w firmie Quantitative Data Systems dostarczającej niestandardowych rozwiązań z zakresu oprogramowania dla czołowych firm. [więcej...]
Similar to Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług (20)
14. 14
Czym jest ten dług?
Dla Mirka?
Dla programisty?
Dla projektu?
Dla firmy?
Kosztem remontu silnika.
Stratą czasu, frustracją.
Kolejnymi opóźnieniami.
Stratą pieniędzy.
18. 18
Wynika to z praw
Prawa ewolucji oprogramowania
M. Lehmana
●
Continuing Change
A program that is used and that as an
implementation of its specification reflects
some other reality, undergoes continual
change or becomes progressively less
useful.
●
Increasing Complexity
As an evolving program is continually
changed, its complexity, reflecting
deteriorating structure, increases unless
work is done to maintain or reduce it.
M. Lehman: „Programs, Life Cycles, and Laws of Software Evolution”. PROCEEDINGS OF THE IEEE, VOL. 68, NO. 9 , SEPTEMBER 1980
19. 19
Proces powstawania oprogramowania długu.
●
Dług można zaciągnąć na
każdym z sześciu etapów,
●
Od złego planowania,
●
Poprzez kiepską analizę,
●
Z której to wynika zły design,
●
Źle zaprojektowane rozwiązanie,
nie może być dobrze
zakodowane
●
Testy możemy zrobić później,
●
A utrzymując system łatamy
tylko objawy nie szukając źródła
problemu.
20. 20
Czym grozi niepanowanie nad długiem?
●
Więcej bugów – rosną koszty utrzymania aplikacji.
●
Trudniej dodać nowe funkcjonalności, żeby nie
rozsypać produkcji – rosną koszty wdrożenia nowych
funkcjonalności.
●
Estymacje nie pokrywają się z rzeczywistością.
●
Spada uptime aplikacji – klient nie zarabia, a Ty po
nocach usuwasz awarie bo SLA i kary umowne!
●
Osiągniecie Masy Krytycznej Długu. „Projekt zaorać.
Przepisujemy go w nowej technologii x”
33. 33
Code Smells
The
Bloaters
The Object-
Orientation
Abusers
The Change
Preventers
The
Dispensables
The Couplers
Large method
Refused
bequest
Code
scattering
Duplicated
code
Inappropriate
intimacy
Large class
Parallel
Hierarchy
Lazy class Feature envy
Long
parameters list
Dead code
37. 37
Ekstra lista potencjalnych dłużników:
●
Braki w dokumentacji
●
Braki w testach
●
Nieaktualne vendory
●
Trzymanie się kurczowo niewspieranych już
vendorów
●
Hotfixy późną nocą – bez planu na zrobienie tego
dobrze
45. 45
Znajdź
hotspoty
w kodzie
Hotspot to fragment kodu, który:
●
jest najczęściej zmieniany (zwłaszcza przez wielu autorów)
●
oraz ma najwyższą złożoność cyklometryczną.
Adam Thornhill: „Prioritizing Technical Debt as if Time and Money Matters” Goto; conference 2020
50. 50
Narzędzia do lokalizacji hotspotów
●
https://github.com/
adamtornhill/code-maat
●
Można odpalić prosto
z .jar
●
Analizuje commit log z
repozytorium
●
Wyznacza najczęściej
edytowane pliki
●
Generuje raport
●
Licencja GNU
51. 51
Odważna teza:
„Dług w stabilnym kodzie jest dopuszczalny, gdyż nie
wpływa on bezpośrednio na podniesienie kosztu
wprowadzania nowych funkcjolanlości w projekcie.”
Work smart, not hard.
52. 52
Kod niezmieniany od roku, można
spokojnie traktować jako kod stabilny. Dług
zawarty w nim nie wpływu na koszt
utrzymania projektu
Adam Tornhill „Software Design X-Rays - Fix Technical Debt with Behavioral Code Analysis”
62. 62
Scenariusz 3: Są jakieś testy CC <50%
●
Wybierz hotspot,
●
Zrób analizę testów, czy pokrywają ścieżki krytyczne.
●
Zepsuj coś celowo, zobacz czy testy są wiarygodne.
●
Jak już masz jakieś tam zaufanie do testów.
●
Napisz własny test do funkcjonalności, którą
zamierzasz refaktoryzować. Jeżeli już są testy napisz
je od nowa.
●
Refaktoryzuj
67. 67
Benchmark
●
Punkt odniesienia wydajności fragmentu kodu.
●
Sprawdzenie czy nasz refactor nie zepsuje wydajności aplikacji.
●
Pozwoli na wykrycie przedwczesnej optymalizacji.
●
Gwarantuje lepsze zrozumienie kodu i celowości jego wcześniejszej
optymalizacji.