Java, PHP, C++, OpenGL
Strukturalny wzorzec projektowy Proxy, jego zadaniem jest zbudowanie klasy, która zastępuje/emuluje zachowanie innego klasy/obiektu Jest to jeden z najprostszych wzorców projektowych, bardzo często niepozornie siedzący w kodzie. Zastosowanie takiej kombinacji gdzie jeden obiekt zastępuje inny obiekt jest: Kontrola dostępu do ochranianego obiektu – np. dostęp do danych po autoryzacji użytkownika Opóźnienie tworzenia kosztownego obiektu, obiekt […]
Stal, każdy mniej więcej wie co to za stop – żelaza, węgla i innych pierwiastków. Niby stal to stal, ale każdy stop stali ma inne właściwości i inaczej się zachowuje w zależności od użytych domieszek. Tak samo we wzorcu dekorator, mamy klasę do którego możemy dodawać nowe właściwości lub zachowania, bez modyfikowania jej zawartości. Wszystkie […]
Z życia wzięte … „… centralny magazyn firmy, przychodzą do niego materiały, narzędzia, półfabrykaty. Jako jedyny zna adresy poszczególnych oddziałów i osoby odpowiedzialne za przepływ materiałów w danym oddziale. Jego sprawne działanie ma wpływ na bezproblemowe wytwarzanie produktów firmy. Po co taki centralny magazyn, nie lepiej żeby poszczególne działy kontaktowały się ze sobą? A jednak […]
Z życia wzięte: … napięte terminy, ciasny czas, każdy co chwilę czegoś chce. Takie coś przeszkadza i co chwilę odrywa mnie od projektu, w końcu się lekko wkurzam i mówię „tu jest kartka, proszę zostawcie swoje telefony, jak skończę bieżący temat to zawiadomię was” … To jest przykład działania wzorca obserwatora, tak w realnym życiu. […]
Dzisiaj trochę na temat wzorca Iterator. Służy on do zapewnienia zunifikowanego dostępu do elementów obiektu. Najważniejsze o co w tym wzorcu chodzi to „bez ujawniania jego implementacji wewnętrznej”. Często w programowaniu ten sam rezultat możemy uzyskać przy pomocy paru technik, te same dane możemy przechowywać w pamięci w różny sposób. Przy użyciu tablic, list lub […]
Singleton – konstrukcyjny wzorzec projektowy którego zadaniem jest ograniczenie ilości instancji obiektu w systemie oraz zapewnienie globalnego dostępu do stworzonego obiektu. Wydawało by się, że prosto jest tylko stworzyć obiekt, ale ten wzorzec ma swoje zalety: Tworzenie instancji klasy jest niewidoczne dla użytkownika Lazy loading – obiekt jest tworzony kiedy następuje jego próba pierwszego użycia […]
Composite (Kompozyt) – strukturalny wzorzec projektowy, którego zadaniem jest łączenie obiektów w strukturę tak, że reprezentują hierarchię części-całość, unifikując dostęp do kolekcji jak i pojedynczego obiektu. Umożliwia to klientom jednolite traktowanie pojedynczych obiektów i również ich kompozycji. Tego wzorca używałem w klasach np. w tym projekcie, gdzie poszczególne efekty mogły być uzyskane tylko przy pomocy […]
Command (Polecenie) – należy do czynnościowego wzorca projektowego Wzorzec który ostatnio mi się spodobał. Kiedyś w pisanym edytorze rozkazy do wykonania były kolejkowane jako ENUM’y w kolejce rozkazów do wykonania. Ten wzorzec zapewnia jednak większą elastyczność poprzez: rozdzielenie zależności pomiędzy nadawcą i odbiorcą komunikatu możliwość dodanie operacji undo oraz zapamiętania stanu obiektów przed wykonaniem polecenia […]
Z życia programisty, lepiej bym tego nie ujął niż Ellen Ullmanmay, i podpisuję się pod tym czterema łapkami … „Pierwszym krokiem jest pasja do pracy, do zgłębiania magicznej przestrzeni pomiędzy ludzkimi myślami, a tym co może zrozumieć maszyna, pomiędzy ludzkimi pragnieniami, a tym co może zrobić maszyna” „Drugim krokiem jest wysoka odporność na niepowodzenia. Programowanie […]
Dzisiaj kilka słów na temat wzorców. Póki co krótko. Poszczególne wzorce będą rozszerzane o przykłady kodu. Chciałbym nadmienić, że jest to temat wielokrotnie już opracowywany, rozwijany od kilkudziesięciu lat, ale prezentuję tu moje własne spojrzenie na kwestię wzorców celem przypomnienia. Z doświadczenia wiemy, że pewne rzeczy warto sobie powtórzyć, bo często się przydają…
Szybkie przejście z svn’a na git’a, bez kopiowania zawartości svn’a tylko aktualna wersja projektu. Na zdalnej maszynie: cd /srv/git_root/ mkdir project.git cd project.git/ git --bare init git update-server-info na lokalnym kompie: cd project git init git add * git commit -m "First commit message" git remote add origin ssh://user@IP:PORT/srv/git_roor/project.git git push -u origin master
Dawno nie było wpisu, dzisiaj coś na temat przygotowania serwera z CentoOS 7 Założenia, tworzymy serwer tak aby w miarę poprawnie wsio chodziło i działało: 1. Minimalna instalacja CentoOS 7.1, skonfigurowana sieć oraz działające połączenie z internetem, ip testowego serwera to 192.168.10.1 nazwa: vm1.test.pl, zarządzanie serwerem przy pomocy ISPConfig 2. Aktualizacja systemu yum update -y […]
Fajnie jak wszystko pracuje bez błędów, gorzej jak nie chce … Tutaj walczyłem z unit testami oraz testami systemowymi w Yii2 i … nie chce działać. Wysypuje się aż miło, a wypisuje tylko „Internal Server Error”, w końcu się udało. Ponieważ stosuję inny układ katalogów w projekcie niż domyślny w Yii2, to Codeception nie potrafił […]
Idealny świat tworzenia oprogramowania – moje spojrzenie na kilka aspektów wytwarzania oprogramowania Jest taki idealny świat gdzie: każda aplikacja ma pokrycie testami w 100%, przed napisaniem metody/funkcji wiadomo jest jak ją przetestować, co jest na wejściu i wyjściu elementu wraz z rozwojem aplikacji testy są utrzymywane i aktualizowane na bieżąco dokumentacja do projektu zawiera niezbędne […]
Tak na szybko, instalacja w krokach … Codeception jest to jeden z frameworków do testowania skryptów PHP typu BDD (Behavior Driven Development), można w nim również wykonywać testy jednostkowe (posiada wbudowanego PHPUnit’a), czy podążać ścieżką TDD. Ręczna instalacja i używanie pod Windowsom w paru krokach (plik php.exe jest na ścieżce przeszukiwań plików exe): Wchodzimy na […]