Termotransferowa drukarka etykiet Zebra P4T

zebraW ostatnim czasie pracowałem nad systemem dla dużej amerykańskiej firmy, który miał usprawnić zarządzanie zleceniami dla operatorów wózków widłowych w magazynie.
Importujemy dane pochodzące z zewnętrznego systemu ERP, pracownik korzystający ze stanowiska komputerowego na hali magazynowej rozdysponowuje poszczególne zadania, a operatorzy wózków na bieżąco mają podgląd aktualnych kursów do wykonania na przenośnym mini komputerze / czytniku kodów kreskowych Intermec. Po zakończeniu całego procesu dla jednego zlecenia osoba je kompletująca drukuje etykietę za pomocą drukarki Zebra P4T. Główna część systemu po stronie serwera została napisana w Javie i uruchomiona na Tomcacie. Panel dla operatora na magazynie korzysta z AngularaJS i komunikuje się z serwerem za pomocą socket.io, zresztą podobnie jak panele na urządzenia mobilne Intermec.

Czytaj dalej

HTML, CSS 2.1 i dokumenty PDF

pdfW ostatnim czasie realizowałem projekt w którym należało zaprojektować ok. sto dokumentów PDF w postaci różnego rodzaju wniosków, w różnym układzie. Ten, kto kiedykolwiek generował dokumenty za pomocą iTexta wie, że nie jest to trudne, lecz czasochłonne. Programiści z reguły są leniwi, ponieważ zawsze szukają drogi na skróty, tak aby zrobić jak najwięcej i najmniej się przy tym napracować. Ja również, dlatego postanowiłem wykonać generowanie takich dokumentów na podstawie HTML, CSS 2.1 i oddelegować zadanie projektowania takich szablonów innej osobie 🙂
Chodzi oczywiście o projekt realizowany w Javie.

Czytaj dalej

Wzorce projektowe – dekoratory

decoratorDekorator to jeden se strukturalnych wzorców projektowych, dzięki któremu możemy wykorzystać kompozycję w alternatywie do dziedziczenia w celu rozszerzenia zachowania klasy.
W przypadku dziedziczenia klasa rozszerzana jest w trakcie kompilacji w przeciwieństwie do dekoratorów, które rozszerzają klasy w trakcie działania programu.

 

 

Wzorzec projektowy Dekorator pozwala na dynamiczne przydzielanie danemu obiektowi nowych zachowań. Dekoratory dają elastyczność podobną do tej, jaką daje dziedziczenie, oferując jednak w zamian znacznie rozszerzoną funkcjonalność

Czytaj dalej

Arduino – zdalne sterowanie oświetleniem

W tym artykule opiszę sposób wykonania zdalnego sterowania jednym urządzeniem wpinanym do gniazdka 230V z wykorzystaniem Arduino. Wykorzystane będzie połączenie przez USB z komputerem, który jednocześnie będzie pełnił rolę serwera WWW. Dzięki temu rozwiązaniu możliwe będzie sterowanie zarówno z tej stacji jak i dzięki WiFi przez laptop, tablet, czy telefon komórkowy.

Efekt końcowy będzie wyglądał tak:

W takim razie zabieramy się do pracy 🙂

Czytaj dalej

Szybsze parsowanie stron internetowych – c.d. z serwisem www.filmydokumentalne.eu

movieWe wczorajszym wpisie opisałem sposób pobrania bazy danych filmów ze strony www.filmydokumentalne.eu. Wszystko byłoby w porządku, gdyby nie fakt, że wykonanie kompletnego importu trwa ok. jednej godziny.

Dlatego dzisiaj dodaję do programu obsługę wielowątkową, dzięki której nasz program dostanie znacznego przyspieszenia.

Czytaj dalej

Parsujemy strony internetowe – import listy filmów dokumentalnych

movie

Istnieje w polskim internecie strona internetowa katalogująca filmy dokumentalne: www.filmydokumentalne.eu.
Właściciele wordpressowej strony twierdzą, że nie naruszają prawa udostępniając nielegalnie umieszczonych w sieci filmów. Myślę więc, że sami również nie będą mieli nic przeciwko abym wykonał import całego ich katalogu odnośników 🙂

Zadanie na dziś

Wykonanie programu którego celem jest wygenerowanie listy odnośników do filmów dokumentalnych umieszczonych na stronie www.filmydokumentalne.eu.

Żeby nie zostać posądzony o kradzież danych, nie będę zapisywał żadnych wartości tekstowych charakteryzujących dany film (jak np. tytuł i opis), lecz pobiorę tylko i wyłącznie odnośniki.

Czytaj dalej

Dlaczego tak mało zarabiamy w Polsce? Automatyzacja procesów: parsowanie PDF

workPrzeczytałem gdzieś kiedyś zdanie, które utkwiło mi w pamięci, a brzmiało mniej więcej tak: „preferuję zatrudnianie ludzi leniwych; leniwy pracownik zawsze znajdzie sposób aby wykonać swoją pracę w szybszym czasie i niższym kosztem”. Odnosiło się to pracy w obszarach IT.

Powszechne jest w polskim internecie narzekanie ludzi na zarobki. Tylko dlaczego tak mało jest samokrytyki do samych siebie? Może mało zarabiamy ponieważ jesteśmy niewydajni? Może nasz pracodawca jest niewydajny i nie optymalizuje procesów?

Często jest tak, że wykonanie pewnej czynności przez konkretną osobę, może być wykonane w czasie stukrotnie  krótszym przez kogoś innego i to przy niższych kosztach. Problemy takich optymalizacji mają głównie mali przedsiębiorcy. Sęk w tym, że udział mikro, małych i średnich przedsiębiorstw w tworzeniu PKB wynosi powyżej 50% (dane)

Czytaj dalej

Wzorce projektowe – fabryki

Factory_1Za każdym razem gdy używamy w kodzie operatora new, uzależniamy się od konkretnej implementacji zamiast od interfejsu. Jedna z zasad programowania obiektowego (reguła odwracania zależności / dependency inversion principle) mówi:

 

Uzależniaj kod od abstrakcji, a nie od klas rzeczywistych.

Zapewne każdy programista spotkał się ze składnią:

Wcześniej czy później z pewnością zmienią się wymagania i zajdzie konieczność rozbudowy programu. Nie obejdzie się bez modyfikacji istniejącego kodu. Wtedy zostanie złamana zasada open/closed:

System powinien być otwarty na rozbudowę, ale zamknięty na modyfikacje.

Można zauaważyć że fragmentem kodu mogącym ulegać zmianom będzie instrukcja warunkowa if/else zwracająca konkretny produkt w zależności od przekazywanego parametru. Ten fragment kodu nie jest zamknięty na zmiany, ponieważ gdy zajdzie konieczność dodania nowego produktu lub usunięcie istniejącego będziemy musieli wrócić do tego miejsca i wykonać aktualizację.

Czytaj dalej