sobota, 31 sierpnia 2013

Kto się wywyższa

(1) Gdy Jezus przyszedł do domu pewnego przywódcy faryzeuszów, aby w szabat spożyć posiłek, oni Go śledzili.
(7) Potem opowiedział zaproszonym przypowieść, gdy zauważył, jak sobie pierwsze miejsca wybierali. Tak mówił do nich: (8) Jeśli cię ktoś zaprosi na ucztę, nie zajmuj pierwszego miejsca, by przypadkiem ktoś znamienitszy od ciebie nie był zaproszony przez niego. (9) Wówczas przyjdzie ten, kto was obu zaprosił, i powie ci: Ustąp temu miejsca, a wtedy musiałbyś ze wstydem zająć ostatnie miejsce. (10) Lecz gdy będziesz zaproszony, idź i usiądź na ostatnim miejscu. A gdy przyjdzie ten, który cię zaprosił, powie ci: Przyjacielu, przesiądź się wyżej. I spotka cię zaszczyt wobec wszystkich współbiesiadników. (11) Każdy bowiem, kto się wywyższa, będzie poniżony, a kto się uniża, będzie wywyższony. (12) Do tego zaś, który Go zaprosił, mówił także: Gdy wydajesz obiad albo wieczerzę, nie zapraszaj swoich przyjaciół ani braci, ani krewnych, ani zamożnych sąsiadów, aby cię i oni nawzajem nie zaprosili, i miałbyś odpłatę. (13) Lecz kiedy urządzasz przyjęcie, zaproś ubogich, ułomnych, chromych i niewidomych. (14) A będziesz szczęśliwy, ponieważ nie mają czym tobie się odwdzięczyć; odpłatę bowiem otrzymasz przy zmartwychwstaniu sprawiedliwych. (Łk 14)
Ewangelia znana doskonale - rzekłbym wręcz aż do znudzenia... Ja jednak zwrócę uwagę na końcowe wersy, które pozostają w cieniu tych pierwszych, a które są kluczem dla całej przypowieści - przecież cały ten tekst jest o tym, byśmy w życiu przyjmowali właściwą perspektywę! 
Jezus nie mówi o tym, że samo oczekiwanie, że od innych dostanie się to, co samemu się daje, jest czymś niewłaściwym; mówi jedynie, że takich rachunków nie należy prowadzić w stosunkach bilateralnych (używając języka dyplomacji) - to raz; a dwa - że to dobro, które ma do nas przyjść, nie musi przyjść natychmiast.
Innymi słowy Jezus namawia nas do nabrania właściwej perspektywy - dla swojego życia powinniśmy się wznosić ponad tu i teraz. Ponad tu - to dobro, które ty dostaniesz, może przyjść od kogoś zupełnie innego, niż od tego, komu ty dajesz; ponad teraz - to dobro, które ty dajesz, nie musi wrócić do ciebie zaraz po tym, gdy ty dałeś - najcenniejsze jest wręcz to, które wróci już po tamtej stronie życia.



sobota, 17 sierpnia 2013

Liczniki do wzięcia

Liczniki cały czas będą rozwijane, ale już jest to, co najważniejsze - odnotowywane są wizyty, przypisywane do komputerów i pokazywane te te komputery, które są najbardziej aktywne.

Jak można założyć sobie licznik?

Po pierwsze trzeba wejść na stronę liczników - najprościej klikając na liczniku z któregokolwiek z moich blogów:
Póki co te moje liczniki niczego nie wyświetlają na tych stronach, na których są umieszczone i stąd może nie tak łatwo je znaleźć (ale najważniejsze, że działają). Po takim wywołaniu pokazywane są wejścia na ten blog, z którego się przyszło:
Oczywiście po takim wejściu można korzystać z menu i oglądać wszystko, co jest dostępne.
Jeśli chcemy założyć licznik dla swojego bloga, należy wybrać z menu stronę logowania:
i stamtąd wybrać Załóż konto:
Gdy wchodzi się do słownika kont, to widzi się tylko własne konto, a więc siłą rzeczy póki co, nie widzi się żadnego konta - trzeba je dopiero dodać:
Do założenia konta potrzebne jest podanie swojego maila:
Normalnie w takim przypadku jest wysyłany mail na podany adres i linkiem potwierdzenia zakładanego konta - u mnie póki co jeszcze tego nie ma. A więc kliknięcie na klawisz Dodaj jest równoznaczne z założeniem konta. Ponieważ konto jest jednak widoczne tylko dla osoby zalogowanej, to go nie widzimy:
musimy wrócić do logowania:
- teraz możemy już wpisać to, co podaliśmy przy zakładaniu konta:
Po zalogowaniu od razu jesteśmy przenoszeni do wyświetlenia wizyt. Siłą rzeczy, skoro jeszcze nie zarejestrowaliśmy żadnego bloga, to wyświetlenie to jest puste:
Musimy przystąpić do rejestracji bloga:
gdzie od razu klikamy na Dodaj:
i wpisujemy podstawowe dane:
Oczywiście przy blogu na onecie wybieramy WordPress:
Wyraźnie zaznaczam, że nie wprowadzam żadnych ograniczeń, jeśli chodzi o liczbę zarejestrowanych blogów:
Na koniec trzeba pobrać kod swoich liczników, co się wywołuje klikając na klawisz Kody liczników - kody są zapisywane w jednym pliku tekstowym, ściągniętym do katalogu Pobrane:
Pobrane kody trzeba teraz wstawić na swoje blogi. W blogerze z panela zarządzania wybieramy Układ:
Klikamy na Dodaj gadżet i wybieramy HTML\JavaSscript. W okienku gadżetu wklejamy kod danego licznika:
I to wszystko - od razu po dodaniu tego gadżetu licznik zaczyna działać.
Na blogach opartych o WordPressa postępowanie jest podobne - wybieramy Wygląd \ Widgety:
i wybieramy Tekst, przeciągamy go w to miejsce, w którym ma być licznik (proszę pamiętać, że w przyszłości będzie tam wyświetlane informacje typowe dla liczników) i wklejamy do niego kod tego licznika:
I to wszystko.
Korzystanie z liczników jest całkowicie bezpłatne i myślę, że takim pozostanie na zawsze (nie sądzę, by było aż tylu chętnych, by transfer przekroczył wykupiony przeze mnie transfer na linuxpl).
Może pokażę jeszcze, że wszelkie hasła są szyfrowane:
To jest to wprowadzone przeze mnie hasło moje_hasło - jak widać mało podobne.
Jeżeli ktoś będzie chciał zmienić hasło, to może to uczynić - trzeba kliknąć na drugą z widocznych ikonek.

A na koniec może jeszcze jaka jest różnica w korzystaniu z liczników bez logowania i z logowaniem. Pomijając administrowanie kontem różnica dotyczy dostępu do danych - jeśli ktoś ma kilka blogów, to po zalogowaniu będzie widział np. wizyty na wszystkie swoje blogi, a nie tylko na ten, z którego wywołał licznik. Dokładnie tak samo będzie przy najaktywniejszych:
Przewijając tabelę, oglądałbym najaktywniejszych na kolejnych blogach. Przy okazji dodatkowa informacja - podwójne kliknięcie na danym rekordzie w tym słowniku (i analogicznie na słowniku komputerów) wyświetla w odrębnym oknie wizyty z tego komputera. Przykładowo na tym podświetlonym:
Wyraźnie właściciel tego komputera jest bardzo zainteresowany licznikami - wygląda więc na to, że przynajmniej jedna osoba będzie chciała skorzystać z moich liczników.





















czwartek, 25 lipca 2013

Świątynia Opatrzności - wnętrze

Na prośbę s. Marty zrobiłem zdjęcie z wnętrza Świątyni Opatrzności:


Jakość zdjęcia przedstawia wiele do życzenia, bo wykonane komórką, ale myślę, że oddaje klimat wnętrza - surowy beton z charakterystycznym użebrowaniem. Jedynie na środku pomieszczenia drewniane podwyższenie, a na nim ołtarz - idealnie w samym centrum. Wokół proste ławki ustawione w dopełniającym ścianę z tarbernaculum i portretami czworoboku. Daje to poczucie niesamowitej bliskości, jakiego nie zaznałem w żadnym innym kościele.

29 lipca: Zdjęcie z oficjalnej strony Centrum Opatrzności Bożej:


niedziela, 21 lipca 2013

Marta

(38) W dalszej ich drodze zaszedł do jednej wsi. Tam pewna niewiasta, imieniem Marta, przyjęła Go w swoim domu. (39) Miała ona siostrę, imieniem Maria, która usiadłszy u nóg Pana, słuchała Jego słowa. (40) Marta zaś uwijała się około rozmaitych posług. A stanąwszy przy Nim, rzekła: Panie, czy Ci to obojętne, że moja siostra zostawiła mnie samą przy usługiwaniu? Powiedz jej, żeby mi pomogła. (41) A Pan jej odpowiedział: Marto, Marto, martwisz się i niepokoisz o wiele, (42) a potrzeba mało albo tylko jednego. Maria obrała najlepszą cząstkę, której nie będzie pozbawiona. (Łk 10)

S. Marta komentując to czytanie, napisała:



Na pewno i jedna, i druga kochały szczerze Jezusa, na pewno i Jezus szczerze szanował jedną i drugą, a to, co powiedział, powiedział po to, by nas czegoś nauczyć. Czego?

Właściwej kolejności i hierarchii wartości. Na ogół wydaje się nam, że w życiu najważniejsze jest, żeby coś zrobić: że powinniśmy być aktywni, że musimy się czymś wykazać, że mamy sobie na coś zasłużyć i zapracować.
---
Problem w tym, że tę zasadę samodzielności i zaradności przenosimy na życie religijne, życie wiary.
...
Tymczasem nieporównanie ważniejsze jest to, co ma zrobić Bóg, niż to co my sami osiągniemy. Zbawienie jest całkowicie darmowym darem Boga, a nie osiągnięciem człowieka. Bóg wymaga od nas tylko jednego: wiary! Wiary, czyli przylgnięcia do Niego – dokładnie to uczyniła Maria! Usiadła jak najbliżej mogła Jezusa, żeby nie uronić niczego, co On przyniósł, co mówił. Na tym polega wiara.



i przyznaję, że nie mam nic do dodania.


Ale czytając s. Martę zastanawiałem się, czy to moje pisanie liczników, nie jest takim właśnie krzątaniem się Marty - szczególnie, że ciągle napotykam się na jakieś trudności.


Pierwszy nieprzezwyciężony problem, to polskie litery. Za jakąś poradą wyczytaną w internecie, wybrałem kodowanie utf8_polish_ci. Okazało się, że definiując parametry procedur, możemy jedynie powiedzieć, że to jest utf8 (ale bez tego polish) i trzeba takie parametry "rzutować" przy porównywaniu napisów. Jeszcze gorzej było z wyświetlaniem zawartości. Ostatecznie założyłem na nowo bazę konwertując wszystkie pola na utf8_general_ci. Ustały te problemy, ale pozostał problem wyświetlania - jak zadeklaruję, że strona ma być wyświetlana jako utf8_general_ci, to zawartość tych pól jest wyświetlana prawidłowo, a więc np. s.Małgorzata, Miśka itd; niestety teksty stałe na stronie wyglądają koszmarnie - mamy więc PrzeglÄ…darka, zamiast Przeglądarka, czy Pierwszy dzień„, zamiast Pierwszy dzień. Jeśli ustawię do wyświetlania utf8 bez określenia dokładniejszego, wszystkie tytuły są właściwe, ale zawartość kolumn zawiera robaczki. Wszystko byłoby dobrze, gdybym wszystko zapisał, jako latin2, bo tu istnieje pełna zgodność kodowania. Niestety są poważne kłopoty z tym, by to teraz przekonwertować.


Wczoraj trafiłem na inny problem - zacząłem myśleć o wyświetlaniu danych w układzie master-detail (czyli stoję na rekordzie z danym komputerem, a w tabeli poniżej widzę wszystkie wizyty z tego komputera). Postanowiłem jednak poszukać jakiś gotowych bibliotek, by zdecydowanie przyspieszyć to moje pisanie. Gdy szukałem ogólniej biblioteki do wyświetlania danych z MySQL, nie udało mi się niczego takiego znaleźć; teraz, gdy szukałem master-detail, trafiłem na wiele bibliotek.


Niestety w tym układzie master-detail wszystkie są płatne - jednak przy wyświetlaniu pojedynczej tabeli można skorzystać z wersji darmowych, w większości, jako triale, ale trafiłem także na bibliotekę całkowicie darmową. Ściągnąłem ją i zacząłem wykorzystywać w swoim projekcie. I tu pojawiły się dwa problemy - pierwszy, który się objawił przy prezentacji wizyt: generalnie działa, ale niektóre strony w ogóle się nie wyświetlają. Jak sądzę, jest to uboczny problem polskich liter - o ile to, co sam napisałem, wyświetla w takim przypadku robaczki, to ta biblioteka w takim przypadku w ogóle sobie nie radzi i strony z takimi robaczkami w ogóle nie jest w stanie wyświetlić.


Drugi problem dotyczy tego, że biblioteka działa na konkretnych obiektach bazodanowych - tabelach, lub widokach. Rzecz w tym, że tego, co wyświetlam na zakładce Najaktywniejsi nie da się przerobić na widok - MySQL jest zbyt prymitywny i takie widoki są dla niego za trudne. Ja pisząc wszystko ręcznie, oparłem się na poleceniu SELECT, ale biblioteka Ajax, z której skorzystałem, nie potrafi prezentować takich danych. 


No i teraz mam trzy wyjścia - albo powrócić do pisania wszystkiego samemu (co jest szalenie pracochłonne), albo skorzystać z któregoś triala z nadzieją, że w nim nie ma takich błędów, albo też naprawiać bibliotekę Ajax. 


Ale może właśnie to, że cały czas mam pod górkę, to sygnał, iż zachowuję się jak Marta? (nie to, bym w ogóle miał przestał pisać, ale że troszczę się o wiele, ale akurat nie o to, o co troszczyć się powinienem)


PS: To wykorzystanie Ajax-a jest podpięte pod pozycję Blogerzy (pokazuje wizyty).

sobota, 13 lipca 2013

Świątynia Opatrzności

Firma, w której pracuję, dostała od firmy, która nas wykupiła, propozycję nie do odrzucenia przeniesienia się do ich biurowca (za który zresztą płacimy więcej, niż za dotychczasowe miejsce). I w ten oto sposób wylądowałem kilkaset metrów od Świątyni Opatrzności. 
Określenie Świątynia jak na dziś jest mocno na wyrost - póki co jest to tylko jakaś konstrukcja betonowa uwieńczona zgrabną kopułą:


Na tym zdjęciu budowla może i wygląda monumentalnie, ale na tle przestrzeni, w jakiej jest, takiego wrażenia nie robi. Przeraża jednak, że to tylko betonowa klatka na powietrze.
Jednak ta betonowa klatka na powietrze pełni rolę zwykłej parafii i codziennie o 7:00 rano jest tam msza... Pierwszy raz trudno mi było znaleźć gdzie dokładnie ona jest i po tej nieudanej próbie wysłałem nawet maila, by się dowiedzieć - no i się dowiedziałem i zacząłem przychodzić. W dniach, w których prowadzę zajęcia, na to by przyjść na mszę do swojej parafii, a później zdążyć na Wilanów, nie mam żadnych szans - w takich dniach muszę odwrócić kolejność: najpierw Wilanów, a potem msza.
Ale wczoraj wstałem an tyle wcześnie, że mimo iż nie miałem zajęć, postanowiłem nie czekać na mszę u siebie, lecz pojechać do Świątyni Opatrzności.. Ledwie zdążyłem, ale zdążyłem (zegar w samochodzie pokazywał co prawda dwie minuty spóźnienia, ale dokładnie o tyle się spieszył). Jakież było jednak moje zdziwienie, gdy się okazało, że Panteon Wielkich Polaków (bo tam jest msza) jest zagrodzony łańcuchami. Już chciałem przez nie przechodzić, gdy grupa osób stojąca przy wejściu do muzeum, zaczęła mnie wołać - okazało się, że ksiądz zaspał i wszystko jest pozamykane. Efekt końcowy był taki, że w pracy byłem później, niż gdybym zaczekał na mszę u siebie i dopiero po mszy jechał do Wilanowa. Jednak nie żałowałem, że tak się nie stało - było coś niesamowicie budującego w atmosferze oczekiwania na księdza; nikt nie miał najmniejszych pretensji, a przeciwnie - wszystkim dopisywał niesamowity humor. A ksiądz, gdy już przyszedł, pierwsze co powiedział to to, że koniecznie musi sobie kupić taki budzik, którego nie da się wyłączyć!





piątek, 14 czerwca 2013

Drugi komunikat z trasy

Od kilku dni wszystko jest na linuxpl - udało mi się przenieść rozwiązania z MS-SQL-a na MySQL. Nauczyłem się, czego MySQL nie znosi, na czym się wywala, czym się różni składnia tej wersji języka od składni ogólnej. Najbardziej brakowało mi tego, że w MySQL-u nie ma w ogóle funkcji tabelarycznych (czyli funkcji, które zwracałyby nie pojedyncze wartości, lecz cały zestaw rekordów (z angielska nazywa się to DataSet). Brak takich funkcji zmuszał mnie do odwoływania się do tabel stałych, co po pierwsze jest znacznie wolniejsze, a po drugie wymaga odróżniania rekordów moich od nie moich... No ale najważniejsze, że wszystko jest i że działa!

Niestety nie działa tak, jak bym chciał - działa za wolno!

Pozostawiłem to, co napisałem na początek, ale dodałem dodatkowo wywołanie tej nowej procedury. Okazuje się, że ten nowy licznik gubi rekordy - i to różnice są znaczne. Np. dziś do tej pory nowy licznik odnotował 396 odwiedzin, gdy w tym samym czasie stary odnotował ich 513! A więc nawet to nie są pojedyncze rekordy, lecz 1/5 wszystkich rekordów!
MySQL nie ma takich narzędzi diagnozy, jakimi dysponuje MS-SQL, a ja nawet nie próbowałem prostych porównań z selektów z obu tabel, ale podejrzewam, że to jest tak, że jeśli ktoś wejdzie na stronę, zanim skończy się zapis rekordów poprzedniego wejścia, to te wcześniejsze wejście już nie zostanie w ogóle zapisane. Innymi słowy jest tak, że póki nie uda mi się skrócić czasu potrzebnego do zapisania rekordu odwiedzin, to mój nowy licznik do niczego się nie nadaje!

Pierwsze zmiany już wprowadziłem, ale te różnice, jakie podałem, są już po zastosowaniu tych zmian - potrzebne są dalsze. Najbliższy krok będzie polegał na zmniejszeniu liczby zapytań SQL-owych wywoływanych ze skryptu PHP. W tej chwili są aż 4 takie wywołania - zadeklarowanie zmiennych, wywołanie procedury rozpoznającej bloga, pobranie tych zmiennych ustawionych przez procedurę i dopiero jako czwarte jest wywołanie właściwej procedury. Przesunę wywołanie tej procedury rozpoznającej bloga do środka właściwej procedury, a w tej sposób skrypt PHP. Mam nadzieję, że to wystarczy, ale w zanadrzu mam jeszcze kilka pomysłów. 

W każdym razie jeszcze to potrwa...

niedziela, 2 czerwca 2013

Komunikat z trasy

Mój plan pisania licznika był następujący:

  • założyć tabelę na MySQL-u zbierającą dane o odsłonach i napisać skrypt PHP, który byłby uruchamiany z blogów z zainstalowanym licznikiem,
  • importować dane z tej tabeli na MySQL na MS-SQL i napisać procedurę dodającą jeden rekord odsłony, która byłaby wywoływana w kursorze (czyli rekord po rekordzie). Język SQL (Structured Query Language) jest językiem zbiorów - zapytania pisze się od razu dla wszystkich rekordów naraz; tym razem takie podejście byłoby jednak błędne, bo przecież każda odsłona uruchamia skrypt PHP, a więc w działającym liczniku rekordy będą dodawane rekord po rekordzie i procedura musi być testowana w takich samych warunkach,
  • modyfikować tę procedurę i powtarzać jej wywołanie na pustej bazie na zasadzie rekord po rekordzie, sprawdzając przy tym wynik działania tej procedury,
  • po uznaniu, że procedura dosyć dobrze sobie radzi, przenieść całą strukturę bazy (wszystkie tabele docelowe, jak np. tabela komputerów, przeglądarek internetowych komputera itp) na MySQL oraz przetłumaczyć procedurę z języka MS-SQL na język MySQL. 
Ten ostatni krok o tyle zmodyfikowałem, że uznałem, iż nigdy algorytm nie będzie na tyle dobry, by nie wprowadzał błędów. Dopisałem więc jeszcze procedury łączące ze sobą wskazane komputery w jeden komputer oraz procedurę odwrotną - z tego, co zostało uznane jako wejścia z jednego komputera, wydzielające nowy komputer, do którego przypisane by były wskazane odsłony. Obie procedury sprawdzają przy tym wiele rzeczy, by wychwycić ewentualne błędy operatora (bo np. wszystkie odsłony ponad wszelką wątpliwość pochodziły z jednego komputera - a więc w takiej sytuacji wydzielanie odrębnego komputera nie miałoby sensu).
Do tego etapu właśnie doszedłem, a przede mną było jeszcze:

  • opanowanie techniki zwracania przez skrypt PHP obrazka z danymi (ile aktualnie jest osób, ile było od początku dnia, ile wczoraj, ile od założenia licznika,
  • opracowania strony, na której każdy mógłby zarejestrować swój licznik,
  • opracowanie strony, na której można by było oglądać i modyfikować (nazywanie komputerów + owo łączenie komputerów i ich oddzielanie) dane źródłowe dotyczące statystyk, 
  • opracowanie strony, na której można by było oglądać statystyki swojego bloga,
  • opracować skrypty eksportu danych dotyczących swojego licznika.
Niestety w tym miejscu, do którego doszedłem, napotkałem na nieprzewidzianą trudność - okazuje się, że nie mam uprawnień do zakładania procedur (mogę jedynie tabele). Nie dość że samo tłumaczenie kodu MS-SQL na MySQL okazało się znacznie trudniejsze, niż pierwotnie przypuszczałem (język MySQL jest znacznie uboższy - np. nie ma funkcji tabelarycznych, a i sposób zapisu znacznie się różni), to na dodatek wykreowana przeze mnie procedura jest niedostępna - po prostu znika. Znalazłem zmienną globalną, którą na MySQL-u powinienem przestawić, ale do jej przestawienia również nie mam praw!

Tak więc oddanie wam, jako potencjalnym zainteresowanym, moich liczników opóźnia się. Mam dwie drogi, ale nie wiem, czy którakolwiek okaże się skuteczna - albo uda mi się dowiedzieć, jak sam sobie mogę nadać większe uprawnienia (ale być może takiej możliwości nie ma - być może to jest w gestii adminów linuxpl, a oni ich nie nadają w trosce o własny serwer), albo w miejsce procedury MySQL napisać bardzo rozbudowany skrypt PHP - cała logika jest zawarta w obecnej procedurze na MS-SQL i tylko trzeba by było napisać ją w zupełnie innym języku.
Jak więc widać, utonąłem w licznikach i zupełnie nie wiem, kiedy z nich wypłynę (o ile wypłynę, bo być może będę mógł pozostać jedynie przy ofercie dla zaprzyjaźnionych blogerów, których wyniki opracowywałbym ręcznie na każde żądanie w postaci plików excelowych - to mogę zaoferować już dziś).