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ś).
Leszku-litości, dla mnie to jest czarna magia; to już wolałam Twoje notki religijne. pozdrawiam
No rozumiem – z dwojga złego, już lepiej te religijne. Ale właśnie skoro z mojego blogowania niewiele wynikało, to pomyślałem sobie, że bardziej się przydam, gdy napiszę licznik specjalnie dla osób prowadzących blogi. No to się teraz tłumaczę, jaki jest stan prac.
Leszku- Twoje przemyślenia religijne były ważne; a chociaż nie zawsze z nimi się zgadzałam, to przecież nic przeciw nie miałam, abyś prezentował swój punkt widzenia. Czuję, że takie moje pisanie „misz masz” nie ma sensu; przemyślenia duchowe więcej dają niż tworzenie sztuki dla sztuki w moim wydaniu, lecz jakoś ulotne są te myśli wzniosłe-religijne. Chyba potrzebuję inspiracji; pozdrawiam
Ojoj skomplikowane to.
Byłoby prostsze w opisie, gdybym od razu pisał w MySQL-u (czyli w środowisku, w którym to później będzie pracować). Ja jednak uznałem, że lepiej będzie, jeśli będę pisał w języku, który doskonale znam, by całkowicie skupić się na algorytmie (a nie co chwila zastanawiać się nad tym, czy coś źle działa, bo coś źle wymyśliłem, czy też źle działa, bo np. w jakiejś procedurze MySQL-a (o tej samej nazwie, co w MS-SQL-u) poszczególne parametry występują w odwrotnej kolejności, albo np. jakaś funkcja liczy pozycję znaku nie od jedynki, tylko od zera. Za przenoszenie algorytmu zabrałem się dopiero wtedy, gdy już był dostatecznie przetestowany.