-
PHP 5.3: Late Static Binding
Late static binding
Co by mówili jego przeciwnicy, PHP ciągle się rozwija i z wersji na wersję posiada coraz więcej ciekawych i przydatnych (zwykle) możliwości. Aktualna wersja PHP, czyli z rodziny 5.3, oprócz takich ciekawostek jak przestrzenie nazw (namespace), operator goto (ok, raz na milion linii kodu może się przydać ;]), czy funkcji anonimowych i domknięć, wprowadziło coś co wreszcie wyprostowało użycie metod i atrybutów statycznych: późne statyczne łączenie (Late Static Binding, LSB).
Ale zacznijmy od początku. Ponieważ jawne wywoływanie klasy w której zdefiniowana jest metoda statyczna wewnątrz tej klasy jest raczej mało wygodne, PHP udostępnia słowo kluczowe self. Umożliwia ono proste wywołanie metody (i atrybutu) statycznego wewnątrz klasy do której przynależy. Przykładowo:
Metoda fotel::echoMyName wywoła metodę statyczną fotel::getName() bez podawania nazwy klasy. Proste? Proste i eleganckie. Niestety, nie pozbawione wad, gdyż słowo kluczowe self wywołuje statyka należącego do tej samej klasy w której jest użyte. Nie uwzględnia dziedziczenia. -
Akcja małż, reaktywacja
Akcja małż powraca. Prawie dwa tygodnie temu wybrałem się nad Zalew Szczeciński i przywiozłem kilkanaście racicznic zmiennych w różnym wieku. Większość z nich zamieszkała w małżarium z wiadra z filtrem i oświetleniem, a kilka wylądowało w opisanym jakiś czas temu zbiorniku 7l. Pomny doświadczeń z zeszłego roku, zbiorniki z małżami są praktycznie pozbawione filtracji mechanicznej. Filtry generują jedynie przepływ wody. Bez gąbek, perlonu i tak dalej.
-
Pobieranie zdjęcia profilowego z Facebooka przy pomocy PHP API
API Facebooka jest fajne, ale trochę z nim pracując ostatnimi czasy zauważyłem, że nie zawsze wszystko jest udokumentowane tak dobrze, jakbym chciał. Przykładowo, dziś spędziłem jakieś 30 minut szukając sposobu na pobranie URLa do zdjęcia profilowego użytkownika przy wykorzystaniu PHP API.
Niby jest sposób polegający na wywołaniu http://graph.facebook.com/[_id_usera_]/picture , ale nie wydawał mi się on wystarczająco 'elegancki'. W końcu, jeśli już własną aplikację napisaną w PHP, to czemu nie zrobić tego porządnie?
Zakładam, że mamy już zainstalowane i skonfigurowane PHPowe API Facebooka (jeśli nie, poszukajcie w sieci). W tym momencie wystarczy prosta funkcja:
Zamiast $config['facebook']['appId'] i tak dalej wstawiamy dane naszej aplikacji i już. Funkcja zwróci URL do zdjęcia profilowego użytkownika z CDNu, lub null w przypadku błędu.Trzeba tylko pamiętać, aby $facebookID przekazywać jako string. Zapytanie może trochę trwać, więc polecam dodanie jakiegoś cache.
-
Optymalizacja MySQL, część 2 – Indeksy
Wstęp
Od ostatniego mojego artykułu na temat optymalizacji zapytań do bazy MySQL minęło sporo czasu. Nadszedł czas na kontynuację tematu. Tak samo jak poprzednio, tematem będzie wpływ indeksów na wydajność (czas wykonywania) zapytań. Jednak tym razem, zamiast skupiać się na problemie odczytu z bazy, napiszę kilka słów na temat zapisów i jaki wpływ na nie ma liczba indeksów.
Jak udowodniłem w poprzednim artykule, właściwie założone indeksy i właściwie sformułowane zapytania są w stanie wielokrotnie zmniejszyć czas odpowiedzi serwera MySQL. W niektórych przypadkach, nawet setki razy. A jak wygląda sprawa indeksów przy zapisach do tabel? No cóż, trochę inaczej...Co się dzieje przy zapisie
Indeks jako taki, można nazwać uporządkowaną strukturą przechowująca wartości pól tabeli wraz z odnośnikami do zawierających je rekordów. Jeśli baza danych dostanie polecenie znalezienia rekordów spełniających określony warunek na indeksowanej kolumnie, nie będzie musiała skanować wszystkich rekordów w tabeli aby odszukać te spełniające warunek. Wystarczy, że odwoła się do indeksu, odpowiednim algorytmem odnajdzie właściwy wpis w indeksie (pamiętajmy, że indeks jest posortowany, więc odszukanie wartości może być bardzo szybkie) i na podstawie odnośników odszuka właściwe rekordy w tabeli. Jest to dużo szybsze niż skanowanie wszystkich wpisów w tabeli.
Pewne niedogodności związane z indeksami zaczynają pojawiać się, gdy zaczynamy dokonywać zapisów w tabeli. W szczególności w polach, które zawierają się w dowolnym indeksie. Jak wspominałem, indeks zawiera posortowane wartości z pól. Jeśli zmodyfikujemy wartość pola (lub dodamy nowy rekord), indeksy z nim powiązane będą musiały być odtworzone. To znaczy: musi nastąpić odbudowa odnośników pomiędzy wartościami indeksu i przyporządkowanymi im polami oraz posortowanie wartości w indeksie. Przy dużej ilości rekordów lub duże liczbie indeksów może to być czasochłonne. Co więcej, wykonywane przy każdym zapisie. No i mamy problem. Bez indeksów wolno przy odczycie, z indeksami wolniej przy zapisie. A o ile wolniej? Postanowiłem to sprawdzić...O antykomor.pl mój komentarz krótki
No proszę, jaki hit przełomu tygodni. Ktoś prowadził stronę, ktoś doniósł, ABW przyszło, zrewidowało i zarekwirowało. Ktoś staje w obronie, ktoś żąda wyjaśnień, ktoś głosi zamach na wolność słowa, a ktoś popiera. A ja się pytam: czy to jest tego warte? Według mnie, nie jest. Jeśli to co twierdzi ABW jest prawdą (a nie mam powodu im nie wierzyć), to ja nie widzę żadnego problemu. Ktoś chyba jednak trochę przesadził i to co znajdowało się na stronie podlegało nie tylko pod paragraf o zniewadze głowy państwa. Gdyby tego typu treści były o osobie prywatnej (w przeciwieństwie do politycznej) nikt by nie powiedział ani słowa. Tego typu treści to nie tylko zniewaga głowy państwa, to zniewaga każdego człowieka. Powództwo cywilne i sprawa wygrana (teoretycznie).
Aby było jasne, nie jestem zwolennikiem Pana Prezydenta Komorowskiego. Jestem zwolennikiem dobrych obyczajów i poszanowania wolności. Wolności zdefiniowanej prostym dialogiem (niestety, nie pamiętam autora, wielka szkoda, bo jest to najlepsza definicja wolności jaką znam) (taka moja wariacja na temat):
- Tato, co to jest wolność?
- Wolność, synu, to możliwość robienia tego, co się chce.
- Czyli możemy robić wszystko co chcemy?
- Nie. Nasza wolność kończy się tam, gdzie zaczyna się wolność drugiego człowieka
Steelseries QCK mini, część II
Znów będzie kilka słów o podkładce pod mysz SteelSeries QCK mini. Jak pisałem w poprzednim wpisie, liczyłem na więcej. Tydzień korzystania z małego SteelSeriesa nie spowodował zmiany tego poglądu. Podkładka jak podkładka. Nie widzę powodu, aby miał być kilka razy droższy od zwykłego szmaciaka. Nie to, że nie jestem zadowolony. Jak najbardziej jestem, ale... no właśnie... Za te 18zł naprawdę liczyłem na więcej, a chyba dostałem tylko markę. Szkoda.
Nowa, świecka tradycja
Jest sobie mostek. Ładnie położony, to fakt. A na mostku pozapinane kłódki. Niektóre zwykłe, niektóre ładnie grawerowane. Nawet bardzo ładnie grawerowane. A na kłódkach imiona i daty. Skąd pomysł? Ktoś wie?
Dawno nie było nic o akwarium...
Dawno nie było nic o akwarium... A tu proszę, trzeci zbiorniczek się oficjalnie pojawił...
Tym razem w wersji absolutnie minimalistycznej: 7l, Aqua-Art Shrimp Sand, lawowy pumeks, kryptokoryna i kawałek korzenia i mech. Wszystko oświetlone modułem AquaEl Ecoline 9W i filtrowane starą kaskadą Jebo 501. W środku kilka Crystal Red i trzy racicznice zmienne. Tak, tak... znów przywiozłem racicznice zmienne znad Zalewu Szczecińskiego. Tym razem, pomny w doświadczenia z zeszłego roku, mam zamiar lepiej o nie zadbać.
Steelseries QCK mini
Stara szmaciana podkładka pod mysz za 5zł dobiła wieku emerytalnego, więc postanowiłem kupić nową. Tym razem jakąś 'markową'. Wybór padł na polecaną tu i ówdzie Steelseries QCK w wersji mini (bo nie lubię dużych podkładek). I...
I za 18zł nie było warto. Spodziewałem się jakiejś rewelacji. Prawie cuda. A wyszła z tego zwykła szmaciana podkładka. Od poprzedniego szmaciaka różni się tylko logo i fałdami po zwinięciu w pudełku. Może jej 'wspaniałe' właściwości dopiero mają się objawić... hmmm.... Zobaczymy...
Drogi Rządzie, spadaj na bambus
Staram się nie komentować polityki. Staram się nie wygłaszać opinii na różne tematy, staram się nie krytykować i grzecznie płacę wszystkie podatki i haracze jakie nakłada na mnie państwo. To się chyba jednak musi zmienić. Skoro państwo robi mnie w bambuko, muszę z tym trochę powalczyć.
Kiedy w 1996 rozpoczynałem studia, był tylko jeden sposób na emeryturę: ZUS. Był to okres starego systemu emerytalnego, bez tych wszystkich funduszy i tym podobnych bzdur, które powodują, że o godnej emeryturze mogę zapomnieć. W tamtym systemie o godnej emeryturze też mogłem zapomnieć, więc o to nie będę miał żalu. Tak swoją drogą, jestem za pełną liberalizacją systemu emerytalnego, bez centralnej jednostki złodziejskiej jaką jest ZUS, ale to zupełnie inny temat.
W 1996 roku zasady były proste: idziesz na studia, kończysz studia, masz doliczone 5 lat do stażu pracy i opłacone składki emerytalne za ten okres. Do dziś żyłem w błogiej nieświadomości jak to Państwo Polskie mnie wysterowało. Cytując Wyborczą:“[...] Osoby, które studiowały przed rokiem 1999, czyli przed reformą emerytalną, powinny mieć wliczony okres studiów do emerytury. Państwo powinno przelać na ich konto określoną liczbę składek (fachowo nazywa się to kapitałem początkowym). Tak przewiduje ustawa emerytalna. Tyle że w przypadku wielu absolwentów państwo nie przelało nic albo przelało niewielką część.“,
oraz:
“Poszkodowana jest też jednak druga grupa - osoby, które rozpoczęły studia przed 1999 rokiem, a w momencie wprowadzania reformy jeszcze je kontynuowały. Im nie wpłyną żadne składki za studia. - W sumie można szacować, że osób które straciły na nowych zasadach, jest ok. 1,5 mln. Państwo po uwzględnieniu waloryzacji nie wypłaciło im do dziś ok. 22 mld zł -dodaje Wacławik. Zdaniem Magdaleny Kochan, posłanki PO z sejmowej komisji polityki społecznej i rodziny, budżetu nie stać dziś na wypłatę takiej sumy. - Bo kto tak naprawdę poniósłby te koszty? Wszyscy podatnicy. Musielibyśmy dodrukować pieniądze. Premier ich z kieszeni przecież nie weźmie - mówi pani poseł. “
W takim bądź razie, informuję całą brać polityczną, czy też politykierską: na mnie możecie już nie liczyć. Z dniem dzisiejszym:
- przestaję brać udział w wyborach, bo nie mam zamiaru więcej uczestniczyć w tej farsie,
- kończę z własną zasadą niekomentowania polityki,
- jeśli ktoś zorganizuje w Szczecinie manifestację w tej sprawie, może na mnie liczyć,
- Panią Poseł Kochan informuję, że zawsze popierałem PO jako partię polityczną (i to nie na zasadzie mniejszego zła). Już jej nie popieram.
I to tyle. Gratuluję braci politycznej/politykierskiej. Zyskaliście właśnie nowego wroga.





