Blog o tematyce oscylującej głównie wokół informatyki, programowania, oprogramowania, grafiki i szeroko pojętej nauki ale również podejmujący różne inne tematy
wtorek, 8 lipca 2014
Efektywna praca w Eclipse #02 - Debugger
Cześć, w tym kursie pokazuję jak korzystać z Eclipse'owego debuggera. Omawiam podstawowe funkcjonalności jak nieco bardziej wyspecjalizowane.
Jeżeli nie do końca wiecie do czego służy debugger, szukacie błędów w kodzie przy pomocy kartki i długopisu lub po prostu jakoś nigdy nie było po drodze, żeby nauczyć się z niego korzystać to ten tutorial jest dla Was :).
piątek, 13 czerwca 2014
Wzorce projektowe #02 - Adapter
Tak, udało mi się wreszcie nakręcić kolejny tutorial z tej tematyki :) Dlaczego tak długo trzeba było czekać? Studia, sesja, nauka i tego typu wymówki... jak już się usprawiedliwiłem to przejdźmy do omówienia "Adaptera".
Uwaga: pisząc 'interfejs' - w odniesieniu do tego wzorca, nie muszę mieć koniecznie na myśli interfejsów javowych w sensie elementu specyfikacji języka, ale po prostu możliwości - metody jakie udostępnia jakaś klasa (choć w przykładzie, faktycznie będę posługiwał się javowymi interfejsami).
Adapter klasowy: dziedziczy po klasie adaptowanej w związku z czym wszelkie zmienione, nowe, dziedziczne składowe tej klasy są w adapterze update'owane "z automatu". Niestety nie umożliwia adaptacji innych klas pochodnych klasy adaptowanej.
Adapter obiektowy: wszelkie zmiany interfejsu w klasie adaptowanej trzeba obsługiwać ręcznie, ale jest pod tym względem bardzo elastyczny. Umożliwia adaptację również klas pochodnych, klasy adaptowanej.
Idea wzorca:
Adapter jest jednym ze wzorców strukturalnych, który przekształca - adaptuje jeden interfejs do drugiego. Pozwala on porozumiewać się klasom o niezgodnych, nie kompatybilnych interfejsach tworząc "przejściówkę" między nimi.Uwaga: pisząc 'interfejs' - w odniesieniu do tego wzorca, nie muszę mieć koniecznie na myśli interfejsów javowych w sensie elementu specyfikacji języka, ale po prostu możliwości - metody jakie udostępnia jakaś klasa (choć w przykładzie, faktycznie będę posługiwał się javowymi interfejsami).
Implementacja:
Standardowo Adapter można zaimplementować na dwa sposoby - klasowy (przez dziedziczenie) i obiektowy (przez kompozycję).Adapter klasowy: dziedziczy po klasie adaptowanej w związku z czym wszelkie zmienione, nowe, dziedziczne składowe tej klasy są w adapterze update'owane "z automatu". Niestety nie umożliwia adaptacji innych klas pochodnych klasy adaptowanej.
Adapter obiektowy: wszelkie zmiany interfejsu w klasie adaptowanej trzeba obsługiwać ręcznie, ale jest pod tym względem bardzo elastyczny. Umożliwia adaptację również klas pochodnych, klasy adaptowanej.
Tutorial:
Ja preferuję metodę obiektową, dlatego właśnie taką zobaczycie na filmiku, ale zachęcam, aby w ramach ćwiczeń spróbować również implementacji klasowej. Tymczasem zapraszam do oglądania i nauki :)sobota, 19 kwietnia 2014
Test: ArrayList vs LinkedList - zaskakujące wyniki
Ważnym elementem efektywnego programowania w Javie jest znajomość kolekcji. Trzeba je po prostu znać aby wiedzieć, która z nich najlepiej sprawdzi się w danej sytuacji. Zaczynamy wtedy szukać odpowiedzi w internecie i/lub przeglądać ich wewnętrzną implementację. Chyba najczęściej porównywanymi kolekcjami są: ArrayList i LinkedList.
niedziela, 6 kwietnia 2014
Wzorce projektowe #01 - Singleton
Zgodnie z zapowiedzią stworzenia serii o wzorcach projektowych, oto pierwszy wpis z tej tematyki :)
Koncepcja Singletona jest taka, że klasa która go implementuje musi zapewnić mechanizm ograniczający ilość możliwych instancji tej klasy do maksymalnie jednej. Czyli jeżeli mamy klasę-Singletona, to w całym programie możemy stworzyć i używać maksymalnie jeden jej egzemplarz.
Przykłady zastosowań:
- klasa Bank w systemie bankowym - raczej chcielibyśmy aby istniał tylko jeden jej egzemplarz w systemie.
- różnego rodzaju menedżery zarządzające danymi - często mogłoby dojść do błędów trudnych do wychwycenia gdyby wiele takich menedżerów mieszało w danych jednocześnie.
- system plików - wystarczy jeden opis formatu plików.
Tutorial - dwa sposoby implementacji Singletona w języku Java:
Co to są wzorce projektowe i kiedy je stosować?
Wzorce projektowe są pewnymi sprawdzonymi sposobami na rozwiązanie jakiś powtarzających się problemów z dziedziny projektowania oprogramowania. Powstawały one na bazie doświadczeń programistów i były przez nich wielokrotnie udoskonalane. Warto je znać aby nie musieć odkrywać koła na nowo, ale szybko wdrażać sprawdzone rozwiązania (niekiedy nieco zmodyfikowane i dostosowane do aktualnych potrzeb zadania).Zaczynamy!
Pierwszy wzorzec, którym postanowiłem się zająć to Singleton. Ze względu na prostotę jego idei oraz łatwość implementacji, wydaje mi się, że jest idealny aby łagodnie rozpocząć naukę wzorców.Koncepcja Singletona jest taka, że klasa która go implementuje musi zapewnić mechanizm ograniczający ilość możliwych instancji tej klasy do maksymalnie jednej. Czyli jeżeli mamy klasę-Singletona, to w całym programie możemy stworzyć i używać maksymalnie jeden jej egzemplarz.
Przykłady zastosowań:
- klasa Bank w systemie bankowym - raczej chcielibyśmy aby istniał tylko jeden jej egzemplarz w systemie.
- różnego rodzaju menedżery zarządzające danymi - często mogłoby dojść do błędów trudnych do wychwycenia gdyby wiele takich menedżerów mieszało w danych jednocześnie.
- system plików - wystarczy jeden opis formatu plików.
Tutorial - dwa sposoby implementacji Singletona w języku Java:
wtorek, 1 kwietnia 2014
Efektywna praca w Eclipse #01 - skróty klawiaturowe
Postanowiłem, że pierwszy kurs z serii "Efektywna praca w Eclipse" dotyczyć będzie skrótów klawiaturowych, ponieważ wydaje mi się, że jest to podstawowa i najprostsza do nauki rzecz pozwalająca w znacznym stopniu przyspieszyć pracę w tym IDE.
Tak jak zakomunikowałem wcześniej, tutorial jest w formie wideo. Jest to mój pierwszy filmik stworzony do publikacji i nie powiem - trochę problemów z tym było. Zdaję sobie sprawę, że jakość obrazu, nawet na HD nie jest rewelacyjna, a mój komentarz jest często mruczeniem pod nosem, ale nie miałem już siły z tym walczyć. Oprócz tego cały materiał wyszedł mi trochę za długi, w przyszłości spróbuję robić lżejsze ok. 10-cio minutowe kursy. Postaram się nad tym pracować i dołożę wszelkich starań aby każdy kolejny filmik był coraz lepszy.
Tymczasem, zapraszam do obejrzenia:
Tak jak zakomunikowałem wcześniej, tutorial jest w formie wideo. Jest to mój pierwszy filmik stworzony do publikacji i nie powiem - trochę problemów z tym było. Zdaję sobie sprawę, że jakość obrazu, nawet na HD nie jest rewelacyjna, a mój komentarz jest często mruczeniem pod nosem, ale nie miałem już siły z tym walczyć. Oprócz tego cały materiał wyszedł mi trochę za długi, w przyszłości spróbuję robić lżejsze ok. 10-cio minutowe kursy. Postaram się nad tym pracować i dołożę wszelkich starań aby każdy kolejny filmik był coraz lepszy.
Tymczasem, zapraszam do obejrzenia:
Video-tutoriale :)
Wiem, że systematyczność moich wpisów na blogu pozostawia wiele do życzenia, co jest spowodowane po prostu brakiem czasu (uczelnia jest jego głównym złodziejem), jednak pomysłów na "content" mam coraz więcej - co średnio ze sobą współgra.
Tak czy inaczej przez ostatnich parę miesięcy udało mi się zgromadzić parę pomysłów na kolejne wpisy związane z programowaniem. Pojawiły się one dość naturalnie, bo po prostu wynikły z tematów, których się teraz uczę. Postanowiłem zawrzeć je w 'seriach' tematycznych kursów i publikować... w formacie wideo
Czemu tak? Ponieważ Wam - odbiorcom, będzie łatwiej i szybciej ogarnąć to co się dzieje w programie, oglądając filmik i słuchając komentarza, niż wczytywać się i dopasowywać odpowiedni opis do właściwego fragmentu kodu. No i ja również będę miał łatwiej, z tego samego powodu - nie będę musiał męczyć się z opisami, a po prostu nagram to co dzieje się u mnie na ekranie wraz z komentarzem, co pozwoli mi zaoszczędzić nieco czasu (mam nadzieję).
Filmiki będę wrzucał na YouTube'a, ale nie oznacza to, że tutaj nic się nie będzie działo. Na blogu zawsze pojawi się stosowny wpis, z krótkim opisem i linkiem do filmu na YT, oraz nie zabraknie wpisów, do których filmik będzie zbędny.
Kursy tematyczne, które chciałbym stworzyć / kontynuować w wersji wideo:
1. JavaFX
2. Efektywna praca w Eclipse
3. JEE - Java Enterprise Edition
4. Wzorce projektowe
5. Digital painting
No i tyle ogłoszeń. Pierwszy filmik z serii "Efektywna praca w Eclipse" już nagrany, i niebawem pojawi się w następnym wpisie :)
Tak czy inaczej przez ostatnich parę miesięcy udało mi się zgromadzić parę pomysłów na kolejne wpisy związane z programowaniem. Pojawiły się one dość naturalnie, bo po prostu wynikły z tematów, których się teraz uczę. Postanowiłem zawrzeć je w 'seriach' tematycznych kursów i publikować... w formacie wideo
Czemu tak? Ponieważ Wam - odbiorcom, będzie łatwiej i szybciej ogarnąć to co się dzieje w programie, oglądając filmik i słuchając komentarza, niż wczytywać się i dopasowywać odpowiedni opis do właściwego fragmentu kodu. No i ja również będę miał łatwiej, z tego samego powodu - nie będę musiał męczyć się z opisami, a po prostu nagram to co dzieje się u mnie na ekranie wraz z komentarzem, co pozwoli mi zaoszczędzić nieco czasu (mam nadzieję).
Filmiki będę wrzucał na YouTube'a, ale nie oznacza to, że tutaj nic się nie będzie działo. Na blogu zawsze pojawi się stosowny wpis, z krótkim opisem i linkiem do filmu na YT, oraz nie zabraknie wpisów, do których filmik będzie zbędny.
Kursy tematyczne, które chciałbym stworzyć / kontynuować w wersji wideo:
1. JavaFX
2. Efektywna praca w Eclipse
3. JEE - Java Enterprise Edition
4. Wzorce projektowe
5. Digital painting
No i tyle ogłoszeń. Pierwszy filmik z serii "Efektywna praca w Eclipse" już nagrany, i niebawem pojawi się w następnym wpisie :)
wtorek, 11 lutego 2014
Dlaczego nie warto wierzyć w przeznaczenie?
Wydaje mi się, że wraz z postępem nauki, maleje liczba ludzi wierzących w coś tak mistycznego jak przeznaczenie. Coraz większa cześć populacji naszego globu godzi się z poglądem, że różne dziwne, niesamowite, niemożliwe zdawałoby się zbiegi okoliczności to jednak zwykły przypadek. Niemniej jednak na pewno istnieją tacy, którzy uważają, że ich przyszłość została już dawno zaplanowana. Na pierwszy rzut oka mogłoby się wydawać, że jedna z tych teorii nie jest lepsza od drugiej, że to po prostu kwestia wiary i własnych przekonań. Moim zdaniem wcale tak nie jest i jedna z nich ma znacznie korzystniejszy wpływ na nasze życie od drugiej.
wtorek, 21 stycznia 2014
JavaFX - tutorial #02 - kontrolki i obsługa zdarzeń
W moim drugim tutorialu poświęconym technologi / bibliotece JavaFX chciałbym przede wszystkim pokazać jak dodawać do aplikacji różne kontrolki i obsługiwać zdarzenia, które wywołują. Oprócz tego przedstawię parę sposobów zarządzania kompozycją interfejsu oraz stylizacji jej elementów. Pokażę również jak grupować kontrolki i dodawać do nich ikony.
sobota, 14 grudnia 2013
Kod powinien być na tyle elegancki, aby bez żenady pójść z nim na przyjęcie.
Ostatnimi czasy wpada mi do głowy wiele pomysłów na ciekawe wpisy do bloga, ale niestety akurat mam teraz sporo nauki i wiele różnych projektów do zrobienia. Tak więc postanowiłem dzisiaj dodać tylko taki lekki wpis na temat elegancji kodu, zakończony ciekawymi cytatami związanymi z programowaniem.
Czasami zdarza mi się oglądać kod, który nie wygląda jakby był pisany przez stado małp z problemami alkoholowymi. Kod, który jest uporządkowany, przejrzysty i którego analiza przychodzi z łatwością, a przy tym nie jest rozlazły. Taki kod zdecydowanie świadczy pozytywnie o programiście, który go napisał.
poniedziałek, 2 grudnia 2013
Bardzo bogate klienty, JavaFX - tutorial #01
Do tej pory programując w Javie, wszelkie programy z graficznym interfejsem tworzyłem z wykorzystaniem biblioteki Swing, aż tu nagle, całkiem niedawno usłyszałem o czymś takim jak JavaFX.
Subskrybuj:
Posty (Atom)


