Category Archives: Programowanie

QFakturat – program do zarządzania fakturami, produktami i danymi klientów na Linux

Kilka lat temu, żeby zdobyć trochę doświadczenia poza Java i Ruby, zabrałem się za naukę Qt4.8 i C++. W ramach tego ćwiczenia zacząłem pracować nad aplikacją, która nie istniała wtedy na Linuxa i pewnie do dziś jest tego typu unikalnym programem na pingwina i diabełka.
Aplikacja była pisana na wymogi prowadzenia firmy taty, gdzie z względu kosztów licencyjnych zrezygnowaliśmy ze środowiska Windowsa. W firmie od 6 lat używane są tylko systemy Linuxowe (KUbuntu i openSUSE).

QFakturat był pisany początkowo w Qt4.8 na Linux, jednak z czasem części kodu zostały przepisane na Qt5 oraz dodana została kompatybilność dla systemów *BSD. Nigdy nie próbowałem portować aplikacji na Windowsa ani OS Xa, więc nie jestem w stanie powiedzieć, czy działa.

Screenshot_20160509_150456

Obecna funkcjonalność programu:

  • wystawianie faktur w PDF (i tylko PDF)
  • obsługa kilku sprzedawców
  • zapisywanie/edytowanie/usuwanie klientów
  • zarządzanie produktami
  • automatyczne konwertowanie kwot brutto<->netto<->podatek przy zmianie jednej z wartości
  • spersonalizowane faktury – pozwalają na ustawienie własnego tekstu w stopce faktury i na lewym boku
  • 3 skórki programu
  • walidacja i opcjonalne formatowanie NIPu
  • wysoka elastyczność programu (sam możesz ustawić rodzaje faktu, listę stawek VAT, metody zapłaty, czas na zapłatę czy obsługiwane waluty)
  • zarządzanie produktami i filtrowanie sprzedanych/dostępnych produktów/usług.

Continue reading

Proste przykłady w Prologu

Niewiele w Internecie prostych, krótkich i działających za pierwszym razem snippetów z Prologa, zatem podaje kilka swoich, które napisane i używane zostały podczas wykładów na AU.

% poniży kod doda liczby, niezależnie od tego w jakiej kolejności zostały podane
add(A,B,R):- A = R - B.
add(A,B,R):- R = A + B.
add(A,B,R):- B = R - A.
 
% silnia z 0 to z definicji 1 
factorial(0, 1).
 
% rekurencyjnie oblicza silnię z podanej liczby X
% zmniejsza wartość X co każde wywołanie.
% liczy silnię, aż wywoła definicję powyżej
 
factorial(X, RESULT) :- R1 is X-1,
                       factorial(R1, R2),
                       RESULT is R2 * X.
 
male(mark). % fact
male(jonah). % fact
female(marie).
female(sophie).
female(marcie).
parent_of(jonah, mark).
parent_of(marcie, mark).
parent_of(sophie, mark).
parent_of(jonah, marie).
parent_of(marcie, marie).
parent_of(sophie, marie).
mother_of(X,Y) :- parent_of(X,Y), female(Y). % rule
father_of(X,Y) :- parent_of(X,Y), male(Y).

Continue reading

UML – Diagram klas

Diagram klas jest jednym ze sposobów reprezentacji zależności pomiędzy klasami, które mają być użyte do stworzenia kodu źródłowego. Jest to główny budulec OO modelu aplikacji, przydatny również do tworzenia technicznej dokumentacji projektu.

Diagram klas zawiera:

  • typ klasy
  • nazwa klasy
  • atrybuty klasy
  • metody klasy
  • rodzaje zależności pomiędzy klasami

Continue reading

Kompilacja tricków w bashu

  • Będąc w powłoce używaj CTRL+R do wyszukiwania wpisanych już kiedyś poleceń
  • Dodaj “set -o vi” w swoim ~/.bashrc by używać skrótów klawiaturowych z VI zamiast emacsowych
  • używaj sedowej składni zastępowania tesktu w bashu
$ ls Downloads/
$ ^wnload^cument
 
  • używaj składni !!:n, gdzie n to parametry poprzedniego polecenia, możesz je podawać w zakresie:
$ ls Downloads/ Documents/ Projects/
ls Documents/:
ls Downloads/:
ls Projects/:

$ ls !!:1-2
ls Downloads/ Documents/

Continue reading

Tworzenie CV w LaTeX

Gdy aplikujesz na jakieś stanowisko lub starasz się być zauważonym przez rekruterów, pomocne jest CV, które wyraźnie pokazuje kim jesteś, co zrobiłeś i w jakim kierunku chcesz się rozwijać. Gdy ostatnio wysyłałem swoje CV, zdecydowałem się przerobić je wg wskazówek, które poprzednio otrzymałem. Przeszukując CV innych osób zauważyłem, że niektóre z nich używały LaTeX, który jest prosty w utrzymaniu w systemach kontroli wersji. Zainteresowałem się tą metodą tworzenia CV, co doprowadziło mnie do rozpoczęcia nauki LaTeX.

Continue reading