wtorek, 20 marca 2018

MS SQL, Perl i DBI

Kolega L. mi zadanie zlecił, w którym wykorzystywaną bazą musi być MS SQL. Podchodziłem do tego jak do jeża, ale wreszcie się przełamałem, usiadłem i działa (aż dziwne). W skład zadania wchodzi też baza danych pn. GraphiPlus, która zawiera m.in. tabele o nazwach dbo.FACTURES oraz dbo.SOCIETES:

#!/usr/bin/perl
use strict;
use utf8;
use DBI; 
require DBD::ODBC;
my $serverN = 'E5410-KOMPUTER\\SQLEXPRESS';
my $baseN = 'GraphiPlus';
my $dsN = "GraphiPlus";
## Obie formy działają (pierwsza przez DSN = Data Source Name/Źródło danych)
## Definiowanie DSN: Panel_Sterowania→Wszystkie_Elementy→
##    Narzędzia_Administracyjne→Źródła_danych_(ODBC)
# my $dbh = DBI->connect("dbi:$dsN", '<UID>', '<PASSWD>',
#   { RaiseError => 1 } ) or die DBI->errstr;
# Albo
my $dbh = DBI->connect("dbi:ODBC:driver={SQL Server};Server=$serverN;database=$baseN;uid=<UID>;pwd=<PASSWD;",
   {RaiseError => 1, } ) or die DBI->errstr;

print "*** Połączono z $baseN ***\n";

## małe litery do.TABELA są istotne!
my $sth = $dbh->prepare("SELECT * FROM dbo.FACTURES ") || die "ERROR" . $dbh->errstr ;  
$sth ->execute();

print "**** Tabela FACTURES:\n";
while ( my @invoiceRecord = $sth->fetchrow_array() ) {
   print (join(";", @invoiceRecord) . "\n");
}

## musi być (w mySQL niekoniecznie)
$sth->finish();

print "**** Tabela SOCIETESS:\n";
my $sth = $dbh->prepare("SELECT * FROM dbo.SOCIETES ") || die "ERROR" . $dbh->errstr ;  
$sth ->execute();

while ( my @invoiceRecord = $sth->fetchrow_array() ) {
   print (join(";", @invoiceRecord) . "\n");
}

$sth->finish();

$dbh->disconnect();

###

Gdybym nie znał nazw tabel to można je ustalić albo za pomocą SQL Server Management Studio, albo wykonując polecenie SELECT na systemowej tabeli pn. sys.tables:

my $sts = $dbh->prepare("SELECT name FROM sys.tables ") || die "ERROR" . $dbh->errstr ;

poniedziałek, 19 marca 2018

Jak zacząłem pracę z TeXem

Przypadek wielokrotny zadecydował.

Studia skończyłem w roku 1987r. W tym czasie po studiach szło się do wojska na 1 rok. Mając do wyboru pobór we wrześniu 1987 albo w styczniu 1988 albo w maju 1988 zdecydowałem się na maj. Kombinowałem oczywiście żeby nie iść, ale słabo i się nie wykręciłem. Tym bardziej że tuż przed końcem PRLu przykręcono śrubę na odcinku obronności i brano bez litości wszystkich, nawet tych z kategorią C i papierami o depresji czy dyskopatii (z tymi to był kabaret zresztą na przykład na strzelnicę taki dyskopatyk jechał a nie szedł -- ciężarów nie mógł przecież dźwigać, a karabin jest ciężki). Wracając do TeXa -- wygrałem los po raz pierwszy: bym poszedł w styczniu/wrześniu (lub wcale) nie poznałbym TeXa (raczej)...

Wróciłem do pracy na Uniwersytecie w maju 1989 (dla przypomnienia w czerwcu 1989 był okrągły stół). Kompletna zmiana sytuacji, jeszcze w sierpniu 1988 jak rozpoczął się strajk w Stoczni (22 sierpnia), a ja udawałem Marine (aka niebieskiego bereta) w czymś co się nazywało 7 Pomorska Brygada Obrony Wybrzeża (35 pułk desantowy, Gdańsk-Wrzeszcz, ul. Słowackiego -- teraz osiedle Garnizon), to ktoś wpadł na pomysł wysyłania patroli wojskowych na miasto z bronią, ale bez amunicji, w składzie żołnierze służby zasadniczej + dowódca podchorąży (czyli m.in. ja). Oficer dyżurny: Tylko k#rwa podchorąży pamiętajcie, jak tylko coś się zacznie, to wy od razu macie spierdalać z powrotem do koszar... Wychodzi na to, że los po raz drugi się uśmiechnął, że to poszło w tą stronę co poszło, bo były obawy, że my w tym 35 pułku (desantowym) posiedzimy dłużej.

Jakoś tak po roku, czyli w 1990, ktoś mi powiedział, że dla pracowników Uniwersytetu organizuje kursy języka angielskiego firmowane przez British Council. No to się zapisałem.

Kursy to (dla wygody kursantów?) były tak organizowane, że grupy tworzono ,,według wydziałów'', tj. zapisywano wszystkich z wydziału do jednej grupy. Oczywiście ktoś tam zawsze był nadmiarowy. Ja trafiłem do grupy ,,nadmiarowej''. Wygrałem los po raz trzeci -- bym trafił do grupy ,,wydziałowej'', to bym się kisił w starym sosie, w towarzystwie znanym z wydziału (dlatego ten system tworzenia grup był moim zdaniem mało sensowny). Nb wygrałem też tam inny los: poznałem przyszłą małżonkę (z Akademii Muzycznej)

Oprócz małżonki poznałem też Tomasz Janowskiego (dalej TJ) z wydziału Mat-Fiz. Ja pracowałem w katedrze statystyki (tyle, że nie na matematyce tylko na zarządzaniu) a wspólnym problemem był skład wzorów matematycznych, do czego używało się wtedy edytora pn. Chi-Writer. Nie tylko Chi-Writera miał polskie znaczki, ale ktoś dorobił także w miarę obszerny zestaw symboli matematycznych. Wzory się tworzyło za pomocą prymitywnego bo prymitywnego ale edytora równań byśmy to dziś nazwali. Wynik niewiele się różnił od tego co dawała maszyna do pisania, tyle że przynajmniej nie trzeba było używać długopisu do dopisywania. A znasz taki program TeX? -- pyta TJ Pierwsze słyszę -- odpowiadam. Ten TeX to ma czcionki jak z drukarni (to było wtedy ważne) -- zareklamował go TJ.

Potem się okazało, że TJ poznał TeXa od Włodka Bzyla. Ale to było potem. Na razie dał mi TeXbooka, którego skserowałem. Szybko się okazało, że coś jest z tym TeXem nie-halo. Jak w nim składać polskie teksty? TJ -- no z tym jest problem, my tu używamy ogonek.sty (czy jakoś tak--zestaw makr doklejających grecką jotę pod `a' i `e'). Gdzieś w tych okolicach czasowych dowiedziałem się też co to jest LaTeX oraz zdobyłem kopię podręcznika Lamporta.

Jakiego pierwszego TeXa dostałem od TJ to już nie pamiętam. Była to o tyle niekompletna dystrybucja, że nie miała MetaFonta. Tylko TeX, program do drukowania/oglądania na ekranie i zestaw fontów na jakąś tam typową drukarkę. Używałem go dość krótko, bo szybko zmieniłem na emTeXa. EmTeX był o tyle lepszy, że był kompletny, -- miał MetaFonta. Można było w szczególności generować fonty bitmapowe na różne rozdzielczości, a nie tylko drukować tym co się dostało `z fabryki'. To wszystko działało na komputerze PC-AT (w pracy, swojego PC-TA jeszcze się nie dorobiłem) wyposażonym w DOSa w wersji 3.3 zapewne. To że w ogóle na wydziale był taki nowoczesny komputer było nawiasem mówiąc w dużym stopniu zasługą dr. Mirosława Gronickiego (późniejszego ministra finansów) a wtedy (i pewnie później) entuzjastę nowych rozwiązań, tak to nazwijmy. Z tego co mi się wydaje 3 komputery w katedrze statystyki z PC-AT na czele, to była cała flota PC-towa na wydziale (nie licząc czegoś tam co mieli w (,,specjalistycznej'') katedrze OPD (Organizacji Przetwarzania Danych jakby ktoś się pytał-- później przemianowanej na Katedrę Informatyki Ekonomicznej).) Inni liczyli na kalkulatorach albo w ostateczności korzystali z wątpliwej jakości usług Ośrodka Obliczeniowego (Odra coś-tam-coś tam). Oczywiście uruchomienie TeXa na nie swojej Odrze nie wchodziło w grę.

W tym czasie w prasie pojawiały się ogłoszenia firmy pn Polski TeX spółka z o.o. sprzedającej polskiego TeXa pn. MeX/LaMeX (polski LaTeX) za dość znaczną kwotę. Ten TeX miał mieć dobrej jakości polskie znaki. Kwota było jednak na tyle znacząca, że na kupno się nie zdecydowałem, ale też nie skopiowałem go nielegalnie (naprawdę). TJ przyznał się, że w instytucie matematyki mają licencjonowaną kopię tego `komercyjnego' TeXa. Doczytałem w TeXbooku o MetaFoncie, więc skserowałem MFbooka od TJ. Dorobiłem kulfoniaste ogonki sam, a nawet w ramach samorozwoju znaki do diagramów szachowych.

W końcu, jak już coś tam wiedziałem, no i miałem te diagramy, a dzięki temu nadzieję, że nie wyjdę na naciągacza-żebraka co to przyszedł dupę zawracać, to się odważyłem i poszedłem rozpoznawczo do tego Polskiego TeXa z o.o (Sopot, 3 Maja ileś tam -- w biurze Polskich Młynów, teraz są tam apartamenty). W firmie siedział Piotr Pianowski. Pogadaliśmy. Ja się pochwaliłem diagramami--Piotr wyraził zainteresowanie. Powiedział, że dałby mi tego TeXa, ale wkrótce go upublicznią więc radzi żebym się wstrzymał z bólami parę dni/tygodni. Potem przyszedł jeszcze Staszek Wawrykiewicz. Bogusława Jackowskiego -- chyba wtedy w firmie nie było. Poznałem go później...

Wizyta w Polskim TeXu musiała być jakoś tak jesienią 1991. Następnego roku w czerwcu odbyło się walne zebranie GUSTu w Warszawie, na które pojechałem. Nikogo tam prawie nie znałem i niewiele z tego zebrania pamiętam, oprócz tego że pierwszy i jedyny raz zobaczyłem Romana Tomaszewskiego (reklamowanego m.in. jako konsultant ds diakrytyków w projekcie Polski TeX/MeX). TeX mnie wciągnął, w roku 1993 pojechałem do Bachotka na pierwszą konferencję GUSTu, a już rok później z kolegą Bzylem współorganizowaliśmy konferencję Europejską w Gdańsku, a konkretnie na wyspie Sobieszewskiej. Ponieważ konferencja była za miastem tośmy wymyślili, że oznaczymy drogę do ośrodka Orle (istnieje do dziś) za pomocą kilku porządnie namalowanych na desce drogowskazów. I tu wpadka, bo się okazało że drogowskaz jest albo w prawo albo w lewo, a myśmy o tym nie pomyśleli. Nasze były tylko w prawo, więc wszystkie próby powieszenia go tak aby wskazywał skręt w lewo okazały się daremne. Ostatecznie powiesiliśmy go do góry nogami, żeby chociaż strzałka wskazywała prawidłowy kierunek. Expirience is the best teacher -- ten incydent pamiętam od dziś!

Nowy router

Wpis pro memoria, bo ruter (kultowy) WRT54GL, który został kupiony w listopadzie 2007r (za 215 PLN) się popsuł. Działała bezawaryjnie aż do zeszłego piątku (tj. 9 marca 2018). Dziesięć lat.

Więc router się popsuł w piątek późnym wieczorem (o czym nie wiedziałem, bo poszedłem wcześnie spać) a w sobotę od rana walka z Internetem, którego nie było. Oczywiście podejrzenia dlaczego nie ma obracały się wokół dostawcy to znaczy wokół UPC. Kilka resetów modemu nic nie dało, do tego objawy były mocno dziwne. Ping z PCta 100% loss, ping z routera 0% loss. Ping na router 0% loss. Coś mi nie pasuje (cache? ale kto catchuje pinga? tyle, że ja się nie znam na tym za bardzo/prawie wcale)

Dzwonię do pomocy technicznej 3x813 (potem 1 -- klient, 2 -- zgłoszenie awarii, 2 -- internet, 9 -- konsultant).

Pani inżynier z poziomu #2 wsparcia (poziom #1 mnie połączył po usłyszeniu historii o pingach) chce mi wcisnąć ConnectBoksa z montażem w poniedziałek, bo pan ma taki stary modem i dlatego nie działa. -- To państwo zmieniają parametry sieci z piątku na sobotę? Pani inżynier się rozłącza abruptly. Poza tym nie chcę tego ConnectBoksa, bo to urządzenie bardziej prymitywne niż modem + dedykowany router. Oczywiście tańsze, bo router już w zestawie, a ja musiałem sobie router dokupić -- no ale jak kupiłem, to jakby mi zwisa ta konkretna/jedyna zaleta. Niefajnie jest, że oni mogą manipulować tym ConnectBoxem zdalnie a modemem jakby nie w szczególności.

Ten 1-szy telefon do UPC zżera mi wszystkie pieniądze z karty prepaidowej. Teraz nie mam ani Internetu ani telefonu. Do tego dzwonią z roboty czemu mnie nie ma? Kurcze pokićkało mi się -- miałem mieć zajęcia. Na szczęście nie robią wielkich problemów, ale stress większy...

Robię reset routera. Teraz przynajmniej zawsze ping nie łączy tj. 100% loss... Coś się klaruje, wygląda na modem

Jadę na miasto do 2 różnych serwisów na konsultacje -- oba closed (sobota).

Wracam (rowerem) a pod bramą mijam o milimetry otwierane bez upewnienia się drzwi taksówki -- sąsiadka. No punkt dla mnie--tym razem nie zaliczyłem drzwi, zagajam o Internet. Dobra moja -- w tej sytuacji (że przed chwilą mnie nie trzepła drzwiami) pani będzie trudno odmówić a jest zaa ściany. Daje swoje hasło... No to już coś. Mogę działać z jej ConnectBoxem.

Doładowuję telefon (Nju). Dzwonię 2x do UPC. Teraz jakby ich wina. (Inny) Facet mówi, że wyśle technika jeszcze dziś. OK, umawiamy się na 18:00. Problem solved.

Coś mnie jednak tknęło. Robię reset jeszcze raz. Router przestał się świecić. Popsuł się na amen. Szukam godzinę drugiego--jest wprawdzie inny niż ten którego szukałem ale jak ktoś jest 200% bałaganiarzem to i tak się cieszy:-) Zresztą to jest dobry router -- Asus RT-N66U aka #MrocznyRycerz (lubię takie nazwy -- Dark Night w oryginale, kupiony na OLX jakiś czas temu)

Działa.

Kolejne 2x telefony do UPC żeby odwołać technika (50 pln za nieuzasadnione wezwanie--niby nie majątek, ale nie chcę też tracić czasu). Jest 17:00. Dokładną konfigurację/odtworzenie tego co było na tym co się zepsuł zostawiam na jutro. O tyle jest to nietrywialne, że ten router ma inny firmware oczywiście...

Jutro

Się okazało, że w zasadzie nie ma wiele do konfigurowania za wyjątkiem DDNS. W starym to działało ciut inaczej niż w nowym. Oczywiście mam świadomość że można tę usługę uruchomić na komputerze ale ja wolę na routerze.

Wybieram zatem www.dyndns.org(custom), wpisują swoje serwery (oddzielona przecinkami lista). No i tu klops (mały). Okienko na nazwę hosta ma znaczne ograniczenie na liczbę znaków. Nie mogę wpisać wszystkich trzech, bo się nie mieszczą. O tyle ten klops jest mały, że ten trzeci serwer to taki testowo-tymczasowy jest więc po prostu zmieniam mu nazwę na krótszą i gitara.

Teraz trzeba wypełnić tabelkę definiującą przekierowanie portów, co jest w miarę oczywiste. I wszystko -- odtworzyłem stan sprzed awarii...

piątek, 16 marca 2018

Krój Chiller

Plakat studentka do koncertu małżonki zrobiła wykorzystując do tego font pn Chiller. Font typu pisanka, wyróżnia się oryginalnym kształtem `I', do pobrania z fontzone.net (legalności nie badałem). Font nie ma polskich znaków co skutkowało m.in że w literze `ł' na przecięciu `l' oraz dostawionej kreski ukośnej się zrobiło czarno (być może da się zrobić w PhotoShopie `ł' lepiej, bo tak jak zostało zrobione, to ewidentnie wygląda, że jak dwa razy machniesz na brązowo, to masz bardziej brązowo niż jak machniesz raz). No a inne diakrytki a zwłaszcza `ą' czy `ę', to już w ogóle słabo... chociaż ogonek w zestawie gotowy jest.

No więc dorobiłem polskie diakrytyki (bo to pisanka to się odważyłem), a nawet kilkadziesiąt innych diakrytyków oraz cyfry nautyczne (bo je lubię używać). Polskie i litewskie są zrobione szczególnie starannie w tym sensie że nie nakładałem krzywych, tylko usunąłem nachodzące na siebie obszary, tworząc jedną obwiednię.

Wszystko to za pomocą fontforge. Super program muszę przyznać. ChillerPL jest tutaj.

poniedziałek, 5 marca 2018

Królowa Polski

Kto z kim przestaje takim się staje (ludowe). Wydawało się parę lat temu że Ann Applebaum to mądra babka (kiedyś Pulitzer), która wprawdzie popełniła mezalias, zauroczona tym swoim Radkiem, no ale takie rzeczy się przecież zdarzają a miłość potrafi być ślepa (znowu ludowe). No niestety do czasu:

Polacy nie rozumieją, jak wielką frustrację w Brukseli budzi Polska -- mówi Anne Applebaum w programie 'Świat, którym żyjemy'. Dodaje, że był moment, kiedy wydawało się, że Warszawa będzie jednym z liderów Unii, a teraz jest poczucie, że to była gra i że może PiS jest autentyczną twarzą Polski. Publicystka Washington Post uważa, że pozycja Polski w strukturach międzynarodowych będzie w dużej mierze zależała od wyniku następnych wyborów. 'Nie wiem, jak długo Polska będzie w Unii Europejskiej i w NATO; jeżeli Polacy w kolejnych wyborach znów zagłosują na PiS, to Zachód zapyta, czy w Europie jest nadal miejsce dla Polski' -- przewiduje laureatka nagrody Pulitzera.

Problemem "Polaków" wszakże nie jest PiS, ale co zamiast PiSu. Tzn. żeby nie wygrał PiS musi być alternatywa, a partia pana Schetyny jest taka sprawna/wiarygodna/ jak jest sprawny/wiarygodny inaczej jej przewodniczący. A to jest zdecydowanie największa partia opozycyjna i jedyny teoretyczny kandydat na odebranie władzy w demokratycznych wyborach PiSowi.

Zatem jeżeli p. Applebaum chce ocalić Polskę, to musi postąpić jak Bolec-Legenda-Wałęsa: nie chcem ale muszę.

Co muszę to jest w tytule...