Paweł Talacha
software developer
RSS
  • Home
  • O mnie
  • Blog

maj 22 2021

Programowanie reaktywne

Czym jest programowanie reaktywne? Jakie problemy rozwiązuje? Na jakich zasadach się opiera? W końcu – w jaki sposób można zastosować podejście reaktywne w projektach ze Springiem i co dzięki temu da się uzyskać?

Jeśli interesują Cię odpowiedzi na te pytania – zapraszam do przeczytania mojego tekstu na blogu Altkom Software & Consulting. :)

By Paweł Talacha • Java • Tags: java, programowanie reaktywne, project reactor, reactive, reactor, spring, spring reactor, webflux

mar 20 2021

Jakość kodu

Czysty kod i dobre praktyki programistyczne – co oznaczają te pojęcia, czy i w jaki sposób warto dbać o jakość kodu, co jest istotne w procesie wytwarzania oprogramowania?

Wraz z kolegami z Altkom Software & Consulting zebraliśmy nasze przemyślenia na ten temat. Zapraszam do przeczytania.

By Paweł Talacha • Programowanie • Tags: altkom, asc, czysty kod, praktyki programistyczne

cze 22 2014

Pliki projektu Eclipse a kontrola wersji

Czy pliki projektu Eclipse powinny być umieszczane w systemie kontroli wersji?

Zanim odpowiemy sobie na to pytanie – krótko – czym są takie pliki? Pliki projektu środowiska Eclipse zawierają informacje związane z konfiguracją samego środowiska oraz ustawieniami projektu. Tworzone są wraz z projektem, zapisywane w jego folderze. Są to m.in. .project oraz .classpath.

Istnieją różne podejścia do przechowywania tych plików w repozytorium. Jedni twierdzą, że nie powinny być w ogóle wersjonowane – każdy bowiem posiada własną konfigurację środowiska. Inni – przeciwnie – że zawsze powinny być w nim umieszczane.

Warto pamiętać, że w plikach projektu znajdują są takie informacje, jak kodowanie znaków, stosowana wersja kompilatora oraz zależności. Wypadałoby więc, żeby wszyscy członkowie zespołu posiadali te same ustawienia i mieli dane o użytych zewnętrznych bibliotekach. Jeżeli nie jest stosowany Maven lub inne narzędzie automatyzujące proces budowy projektu, a więc i znajdowania zależności, plik .classpath jest bezpośrednim źródłem informacji o nich. Bez niego konieczne jest analizowanie kodu w celu stwierdzenia dlaczego dana klasa nie jest dostępna – jakiej brakuje biblioteki?

Z drugiej strony plik .classpath często zawiera te informacje w postaci ścieżek bezwzględnych, co jest głównym argumentem przeciwko przechowaniu go w systemie kontroli wersji.

Można więc stwierdzić, że pliki projektu powinny być wersjonowane pod warunkiem, że nie zawierają ścieżek bezwzględnych.

Jak więc umieścić w nim informację o zależnościach unikając użycia ścieżek bezwzględnych? Eclipse daje możliwość zastosowania do tego celu zmiennych – Classpath Variables.

Czytaj więcej…

By Paweł Talacha • Java, Poradniki 0 • Tags: eclipse, java, repo

lis 20 2013

Opera Mail – minimalizacja do zasobnika

Opera Mail to klient poczty, grup dyskusyjnych i kanałów informacyjnych. Był wbudowany w przeglądarkę Opera (wersje do 12.16 włącznie). Kiedy jasne stało się, że nie będzie go już w nowych wersjach – wydany został jako oddzielny produkt.

Jako przyczyny podawano duży stopień zależności od silnika renderującego i samego interfejsu, a te, jak wiadomo, miały ulec zmianie. Reintegracja klienta pocztowego byłaby kosztowna, a odsetek jego użytkowników i tak był stosunkowo niewielki.

Tyle oficjalnego wstępu.

Prawda jest taka, że „oddzielny produkt” jest niczym innym jak przeglądarką Opera z serii 12.1 z wyłączoną funkcją przeglądania stron. I będę zdziwiony jeśli pojawi się jakakolwiek jego aktualizacja.

Mimo wszystko sam klient poczty jest bardzo fajny, wygodny i przede wszystkim – spełnia swoją funkcję. Wielu jego użytkowników narzeka jednak na brak możliwości minimalizacji do zasobnika lub zamknięcia go do zasobnika, aby działając w tle sprawdzał wiadomości na bieżąco. Można to zrobić za pomocą niesamowitego skrótu klawiszowego CTRL + ALT + SHIFT + H lub zmienić go na wymagający mniej palcołomnych kombinacji, ale chcemy przecież móc wygodnie sobie kliknąć w jedno miejsce.

Wiedząc jednak, że program pod spodem to nic innego jak stara, poczciwa Opera, możemy to bezwzględnie wykorzystać…

Czytaj więcej…

By Paweł Talacha • Poradniki, Soft 2 • Tags: mail, minimalizacja, opera, tray, zasobnik

paź 20 2013

Filmweb – Chcę obejrzeć wg roku

Od zawsze brakowało mi w portalu Filmweb możliwości sortowania filmów w zakładce Chcę obejrzeć po roku. Zwykle klikałem w przycisk opcji dodania do listy filmów, które wydają mi się interesujące i które chciałbym zobaczyć. Potem lista taka zawiera masę pozycji. Wiele z nich to nowości, na obejrzenie których jest zbyt wcześnie – często nie miały one jeszcze swojej premiery. Przekopanie ręcznie listy w celu znalezienia starszych produkcji, które od dawna są dostępne na DVD jest uciążliwe.

Nie mogąc doczekać się więc aktualizacji serwisu wprowadzającego tę opcję napisałem prostą wtyczkę do Opery dodającą możliwość sortowania filmów we wspomnianej zakładce wg roku produkcji.

Filmweb Sortowanie

Do działania programu wymagana jest Opera 15+

Pobierz wtyczkę

By Paweł Talacha • Moje wynalazki 0 • Tags: chcę obejrzeć, daty, filmweb, opera, sortowanie

sie 13 2013

ViCMS 3 alpha 2

Dziś ukończony został kolejny element układanki zwanej ViCMS. :) Tym razem, oprócz tradycyjnych poprawek i aktualizacji używanych bibliotek, do testów dostępny jest moduł pozwalający na zarządzanie menu. Potrafi robić całkiem fajne rzeczy, ale zamiast rozpisywać się na ten temat, zachęcam do rzucenia okiem na poniższy filmik, który to pokazuje sposób działania składających się na niego funkcji.

Jeszcze tylko standardowe linki:

  • Szczegółowa lista zmian
  • ViCMS 3 alpha 2

By Paweł Talacha • ViCMS 0 • Tags: vicms

lip 16 2013

Filmweb API

Od niepamiętnych czasów, a na pewno od momentu pojawienia się nowej wersji Filmwebu w 2010 roku, użytkownicy czekają na udostępnienie przez jego twórców API. Na forum serwisu znajduje się nawet wątek, w którym co jakiś czas ktoś pyta o tę sprawę nie uzyskując jednak żadnych odpowiedzi. Wiadomo jest tyle, ile zawsze było wiadomo – jest w planach i kiedyś będzie.

Patrząc na dynamikę realizacji funkcji, których domagają się użytkownicy, „kiedyś” może okazać się wyjątkowo odległym terminem. ;)

W międzyczasie wydane zostały aplikacje mobilne. A te przecież jakoś muszą odczytywać dane z bazy Filmwebu. Krótka zabawa z inżynierią wsteczną pozwoliła mi na poznanie sposobu, w jaki aplikacje te łączą się z serwisem. Mogłem więc zbudować program naśladujący ten mechanizm, a przez to umożliwiający wywołanie metod, z których te aplikacje korzystają. Dla sprawdzenia pobrałem opis wybranego filmu.

W tym momencie zrodził się pomysł napisania kilku innych metod i zgrupowania ich w bibliotece, którą można byłoby nazwać nieoficjalnym API. :twisted:

Niestety nie mam dostępu do informacji na temat tego, jaka metoda zdalna wykorzystywana jest do uzyskania ID filmu, które mogłoby posłużyć do pobierania innych informacji. Stworzyłem więc metody wyłuskujące wspomniane ID bezpośrednio z kodu źródłowego stron filmów. I tak oto powstała pierwsza wersja.

Źródła, jak i sama biblioteka dla języka Java znajduje się na stronie serwisu Bitbucket.

Smacznego. :)

Edit: Najnowsza wersja Filmweb API

Edit 2: Przykładowe wykorzystanie

By Paweł Talacha • Moje wynalazki 1 • Tags: api, filmweb, java

cze 30 2013

ViCMS 3 alpha 1

Całkiem sporo jeszcze czasu musi upłynąć, aby ViCMS w wersji 3 funkcjonalnie dogonił 2.1, że nie wspomnę o przyjęciu zadowalającej mnie formy i osiągnięciu stanu, który można byłoby nazwać kompletnym. Zwrócę tylko uwagę na fakt, że modyfikacja tego systemu to rzecz, którą robię hobbystycznie, w wolnych chwilach, dla przyjemności – a więc i tempo prac nie jest zbyt intensywne. Nie mniej jednak – jeżeli ktoś chciałby być bardzo alternatywny i używać czegoś egzotycznego lub chciałby przejrzeć źródła w nadziei, że nauczy się nowych rzeczy, ew. chciałby ulepszyć system wprowadzając swoje własne modyfikacje – nie mam nic przeciwko (zwłaszcza, jeżeli później podzieliłby się swoimi wynikami ;)).

Dlatego też, pomimo, że jakiś czas temu pisałem o udostępnieniu źródeł ViCMS 3 w momencie osiągnięcia fazy beta – robię to już teraz. Jest gotowy, działający całkiem fajnie, spory fragment systemu – gdyby ktoś się uparł można nawet postawić w oparciu o niego stronę, choć mogłoby być to kłopotliwe ze względu na np. brak zarządzania menu i plikami (obrazki, dokumenty).

Co działa?

  • Instalacja i aktualizacja :)
  • Moduł aktualności – bez oceniania i komentowania, jest Atom i zagnieżdżone kategorie
  • Moduł stron + możliwość podpięcia do / odpięcia z menu z poziomu szczegółów
  • Zapis aktualności i stron bez publikacji / publikacja
  • Zarządzanie użytkownikami (bez możliwości zmiany własnych danych :P)
  • Możliwość filtrowania list (za wyjątkiem użytkowników)
  • Określanie parametrów witryny, wybór kompozycji (stare skórki), zarządzanie modułami

Do uzupełniania w tym fragmencie pozostała możliwość dołączania stron do treści, zarządzania menu i przypominania hasła (nawet nie testowałem jak się zachowuje ta funkcja). A w dalszym etapie kolejne prace mające na celu wprowadzenie istniejącej już w ViCMS 2.1 funkcjonalności i jej poszerzanie.

Strony projektu w serwisie Bitbucket: https://bitbucket.org/varabi/vicms/

Znajduje się tam Mercurialowe repozytorium, z którego zawsze można będzie pobrać najnowszą wersję systemu. Dev jest gałęzią rozwojową, większe funkcje / moduły będą posiadały swoje własne, dołączane później do dev. Oficjalne wersje, późniejsze stabilne – gałąź default + odpowiedni tag.

W przypadku sugestii odnośnie działania systemu, odkrycia błędu w działaniu – informacje można dodawać do systemu śledzenia zgłoszeń również w tym serwisie, upewniając się wcześniej czy podobne już nie istnieje.

[box style=”shadow” ]

Uwaga: Aktualnie udostępniona wersja jest w bardzo wczesnej fazie rozwoju, może zawierać błędy i prawdopodobnie je zawiera. Nie nadaje się także do zastąpienia wersji 2.1 ze względu na zmienioną strukturę bazy danych. W późniejszym etapie planowane jest stworzenie narzędzia pozwalającego na migrację z 2.1 do 3.0.

[/box]

ViCMS 3 alpha 1 – pobierz z serwisu Bitbucket

By Paweł Talacha • ViCMS 0 • Tags: vicms

cze 7 2013

Aplikacja Android → PC Windows

Raz na jakiś czas człowiek, który dłubie przy komputerze trafia na sytuację wymagającą dosyć dużej ilości kombinowania. Związana jest ona zwykle z koniecznością osiągnięcia prostej rzeczy, której z niewiadomych powodów prosto nie da się osiągnąć. W takich momentach najczęściej okazuje się, że internet albo również nie posiada recepty na rozwiązanie – opisy, na które można się natknąć nie znajdują odzwierciedlenia w naszej rzeczywistości – albo w ogóle ich nie ma.

To jest dobry moment na zainaugurowanie działu z tutorialami. ;)

Opis problemu

Nie mając pod ręką urządzenia z Androidem na pokładzie chcemy pobrać na komputer PC z systemem Windows plik apk ze sklepu z aplikacjami. Niby istnieją jakieś programy do tego służące i wtyczki – wszystko sprowadza się jednak do podania DeviceID urządzenia, którego aktualnie nie mamy.

Czytaj więcej…

By Paweł Talacha • Poradniki 0 • Tags: android, aplikacja, pc, windows

lut 6 2013

ViCMS 3 – zapowiedź #1 – warstwy i chmurki

Korzystając z przymusowego dnia lenistwa, postanowiłem napisać o planach związanych z ViCMS. Plany są. Jak zwykle planów mam całą masę. Tylko czasu na realizację jakoś tak dziwnie mało. ;)

ViCMS ma już swoje lata. Jako, że pierwsze wersje powstawały w czasach, kiedy to często jeszcze witryny były tworzone w oparciu o pliki zawierające mieszaninę HTML, CSS i JS (tu jest niewiele lepiej), a sam system zaprojektowany został w ujęciu strukturalnym – źródła nie wyglądają zbyt zachęcająco. Jest to trudny do pielęgnacji i rozbudowy kod. I kiedy z czymś takim zetknie się programista, który zagląda po jakimś czasie do swojego własnego dzieła, z przerażeniem stwierdza, że straszne rzeczy popełnił! ;)

Jakiś czas temu doszedłem do wniosku, że rozbudowa programu w obecnej postaci nie ma najmniejszego sensu. Mało elastyczne rozwiązania nie pozwalają na szybkie wprowadzanie poprawek czy łatwe rozszerzanie istniejącej funkcjonalności. Postanowiłem wtedy, że jak mnie najdzie chęć podłubania w wolnych chwilach w PHP, będę sobie ViCMSa przebudowywał. :)

Założenia były proste:

  • Bezpieczeństwo – m.in. poprzez zmianę sposobu obsługi połączeń z bazą danych, wykonywania zapytań (przy okazji porządek z samą bazą). Jest to system ogólnie dostępny, powinien więc jak najbardziej minimalizować prawdopodobieństwo powstania ewentualnego bałaganu.
  • Jasna, określona struktura – oddzielenie logiki przetwarzania danych, dostępu do bazy, prezentacji – MVC – z czego wynikałaby łatwość późniejszej rozbudowy i pielęgnacji
  • Jakość, przejrzystość kodu, prostota i uniwersalność – na pewno żadnego powielania, fragment raz napisany powinien być po prostu możliwy do używania w wielu miejscach, gdzie będzie to konieczne (np. stronicowanie)
  • Zachowanie obecnej funkcjonalności, zwiększając wygodę użytkowania (mniejsza liczba koniecznych kliknięć, przeładowań stron, żeby tylko zobaczyć komunikat itp.)

I tak zgodnie z założeniami, wolnymi krokami postępuje refaktoring.

Jedną z ciekawszych rzeczy, które pojawiły się przy jego okazji po stronie administracyjnej są warstwy i chmurki. Będą one stanowiły sposób prezentacji komunikatów.

  • Warstwy (wyjeżdżające z prawej strony „nad ekranem”, blokujące ekran) – pojawiają się zanim nastąpi jakaś akcja. Otoczone czerwoną ramką – informują o błędach, najczęściej braku lub nieprawidłowości danych. Otoczone ramką pomarańczową mogą zawierać formularze i oczekiwać na wprowadzenie informacji – wpisanie czegoś lub wybór opcji.
  • Chmurki – pojawiają się w prawym górnym rogu i zawierają krótką informację o tym czy akcja została wykonana poprawnie czy też nie.

Poniżej zamieszczam filmik prezentujący odświeżoną część administracyjną nowego ViCMSa oraz działanie warstw i chmurek. Całkiem możliwe, że sam layout ulegnie jeszcze zmianie.

Więcej informacji będzie pojawiało się w miarę postępów prac.

By Paweł Talacha • ViCMS 0 • Tags: vicms

1 2 3 4

Kategorie

  • Poradniki (3)
  • Programowanie (26)
    • Java (3)
    • Moje wynalazki (22)
      • ViCMS (18)
      • ViSUD (2)
  • Soft (5)

Polecam

  • Foobar
  • IntelliJ IDEA
  • Meld
  • Signal
  • SourceTree
  • Vivaldi

↑

© Paweł Talacha 2009 - 2023
Witryna używa plików cookies. Korzystanie z funkcji, w których są one stosowane oznacza akceptację tego stanu.OK, zamknij Czytaj więcej
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
SAVE & ACCEPT