Sprawa TAX FREE, a Subiekt GT – rozwiązanie darmowe!
Z uwagi na fakt, iż od stycznia pracujemy pełną parą na Subiekcie GT przyszedł czas aby zamienić ręcznie pisane „zielonki” na coś zautomatyzowanego. Po przejrzeniu oferty rozszerzeń do Subiekta, oferujących możliwość „łatwego” wypełniania druków Tax Free złapałem się za głowę. Nie znalazłem ani jednego sensownego rozwiązania. I nie dość, że owe rozwiązania kosztują po 300-500 zł, to na dodatek zawierają kupę denerwujących błędów. Po dłuższej chwili rzucania mięsem, postanowiłem stworzyć coś własnego. Moje podejście było zgoła inne – zamiast tworzyć moduł czy zewnętrzne rozszerzenie, postanowiłem wykorzystać mechanizm wbudowany w Subiekta – mianowicie Crystal Reports. Subiekt jest zgodny niestety tylko i wyłącznie z wersją 8.5. Po kilku godzinach majstrowania przy CR, a dodać trzeba że jestem zupełnym laikiem w tej dziedzinie i było to moje pierwsze z nim spotkanie , powstało „coś”. „Coś” co mógłbym nazwać nawet funkcjonalnym i przydatnym rozszerzeniem Subiekta.
Wykorzystałem do tego celu mechanizm Paragonów Imiennych:
1. Nowy paragon imienny
2. Dodajemy kontrahenta – osoba fizyczna – uzupełniamy podstawowe dane, zamiast dowodu osobistego wpisujemy nr paszportu i analogicznie organ wydający
3. Dodajemy towar
4. W polu uwagi wpisujemy słownie kwotę VAT (bez groszy, same pełne złotówki)
5. Wybieramy formularz, wkładamy „zielonkę” do drukarki i drukujemy
Proste i logiczne. Ma też swoje wady i błędy:
1. Brak automatycznego wypełniania rubryki „słownie”. Próbowałem wykorzystać bibliotekę zewnętrzną UFL (http://sulmar.blogspot.com/2007/10/sownie-zotych.html ), ale sypała błędami i nie działała poprawnie. Prawdopodobnie brak mi doświadczenia w tej dziedzinie. Zamiast automatu wpakowałem pole „Uwagi” i każdy może sobie wypełnić sam.
2. Formularz obsługuje od 1 do 7 pozycji, niestety niewiele mogę z tym zrobić.
3. PKWiU wpisywane jest zawsze jeżeli jest wypełnione w parametrach towaru.
4. Niektóre rzeczy robiłem „na wiarę”, niestety brak mi doświadczenia w CR. Tak więc kwota vatu jest separowana na całe złotówki i grosze dosyć prymitywnie – ale działa, z grubsza OK.
5. Formularz nie był masowo testowany, prawdopodobnie pełno w nim błędów.
6. Nie radzę wchodzić w „opcję” formularza, pozbawiłem go zmiennych kontrolnych i najprawdopodobniej się po takim zabiegu wysypie. Powtarzam jeszcze raz – formularz nie jest konfigurowalny.
Z zalet:
1. Działa.
2. Obsługuje wiele imion i nazwisk.
3. Drukuje numer paszportu i organ wydający, a nie jak większość aplikacji tylko numer paszportu.
4. Ostatnia i najważniejsza: JEST DARMOWY i WOLNY (w sensie „Freedom”) – Licencja GPL wersja 3.
Do pobrania z dropbox’a. Wersja z dzisiaj, niech będzie, że 0.0.1:
http://dl.dropbox.com/u/16136765/TAXFREE%20SubiektGT/PAI%20TAX-FREE%202011-04-17.rpt
Co tu dużo mówić, mam nadzieję że kiedyś znajdzie się ktoś bardziej rozgarnięty w temacie Crystal Reports i poświęci formularzowi z 10 minut. Może wtedy „słownie” będzie działać z automatu.
RAID1+HS w końcu kompletny
Przeszło tydzień temu wrócił z „naprawy” Seagate. Dysk został wymieniony na nowy. Pierwszą rzeczą jaką zwyczajowo należy zrobić po zamontowaniu dysku do serwera jest test badblocks. Ja robię go tak:
$ badblocks -fvwso info.txt /dev/sdX
f – force
v – verbose (tryb „widoczny”)
w – tryb desktrukcyjny (zapis danych)
s – show (pokazuje postęp)
o info.txt – wpisuje informację o uszkodzonych blokach do pliku info.txt
Jeżeli po skończonym teście nie znajdziemy nic w pliku info.txt, to mamy do czynienia z czystym dyskiem. Przy „nowym” dysku warto sprawdzić także ile godzin dany dysk przepracował.
$ smartctl –all /dev/sdX
Ważne informacje znajdziemy w liniach:
Power_On_Hours
Power_Cycle_Count
Pierwsza podaje liczbę przepracowanych godzin, druga zaś informuje ile razy dany dysk był uruchamiany.
Następnie nie pozostaje nam nic więcej jak dodać go do macierzy RAID – w tym wypadku do RAID1 jako HOT SPARE.
W zasadzie nie napisałem nic odkrywczego, niemniej może komuś się to do czegoś przyda. Ot co! Na marginesie dodam, że czuję się nieco bezpieczniej mając pełno-dyskowe szyfrowanie na macierzy RAID1 z zapasowym dyskiem. Ktoś by powiedział, że to marnotrawstwo miejsca – 3 x 500GB po to aby mieć 500GB przestrzeni dyskowej. A ja odpowiadam tak: a na ile mam wycenić utratę danych i przestój w działaniu firmy? Na koniec cytat:
Ludzi dzielimy na 2 grupy. Tych którzy robią backupy i tych którzy będą je robić.
Niah!
Dodam jeszcze tylko, że teraz zawartość /proc/mdstat wygląda tak:
root@freya:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdd1[2](S) sdb1[1] sda1[0]
30272448 blocks [2/2] [UU]md1 : active raid1 sdd2[2](S) sdb2[1] sda2[0]
458111936 blocks [2/2] [UU]unused devices: <none>
Oznaczenie (S) przy nazwie partycji oznacza (S)pare czyli zapas. Prawda, że pięknie? :)
PS3 CFW czyli obsługa gier z PS2 i PS1
Cały internet huczy. W końcu można zrobić dobry użytek z kluczy zdobytych przez ludzi z fail0ver i Georga Hotza.
Na dole strony znajdziecie link do paczek z CFW zrobionym przez KaKaRoTo:
CFW nie pozwala na piractwo! Ale daje możliwość instalacji z dysku aplikacji cyfrowo podpisanych kluczami Sony i co najważniejsze umożliwia odpalania gier z PS1 i PS2.
Słodko! :)
Krótka lekcja wymiany dysków w macierzy RAID
Ojojojoj! Nowy Seagate był i po 25 dniach pracy zemarło mu się. Udał się na wycieczkę do Holandii. Ojojoj! Nowy identyczny Seagate (tym razem wyprodukowany zdaje się w Tajlandii a nie w Chinach) jakoś nie dał się podzielić na identyczne partycje, pomimo takiej samej geometrii. No cóż. Przy macierzach RAID to dość ważne. Nauczony doświadczeniem sięgnąłem po dość radykalny środek. Olać tablicę partycji, przecież to dwa identyczne dyski. Trzeba klonować jak owce, dziki, węże i inne zwierzątka.
$ sfdisk -d /dev/sda > tablicaA
$ sfdisk /dev/sdb < tablicaA
i już! I w dodatku macie kopię tablicy w pliku :D To chyba nawet szybsze niż zabawy z fdiskiem, cfdiskiem czy jakimkolwiek innym toolem. Może mnie ktoś uświadomić dlaczego to złe rozwiązanie. Ale so far działa. Więc chyba wolę oszczędzać czas. Nie będę się rozwodził jak odbudować RAID przy użyciu mdadm bo od tego jest man.
500GB RAID odbudował się i ochoczo oświadczył Up and running!

