Ostatnio o Nginksie pisałem już jakiś czas temu. Pozmieniało się sporo, sam rozwój tego demona był dla mnie sporym zaskoczeniem. Kiedyś niszowy projekt - dzisiaj - zdobywający popularność w szalonym tempie.
Jednak nie ma co się temu dziwić - wydajność jest znacznie wyższa niż najpopularniejszej kobyły (czyt: Apache). No i fakt, że jest produkcji rosyjskiej - już któryś raz z kolei o tym wspominam, a jest to kolejny program potwierdzający regułę.
więcej
PHP (zresztą nie tylko ten język) jako server-side do nauczenia trudny nie jest. Po jakim czasie seito twierdzi, że potrafi pisać całkiem niezłe skrypty, CMS, czy aplikacje. Ale nawet i wielu sensei często miewa problemy, gdy chodzi o mocno obciążone serwisy, w których stopniowo zaczynają pojawiać się wąskie gardła - strony wczytują się coraz wolniej, aż do momentu, gdy baza danych odmawia posłuszeństwa z powodu przeciążenia.
Na domiar złego, użytkownicy odświeżają wielokrotnie te same strony - albo z powodu wielu prób otwarcia, albo w celu aktualizacji często zmieniających się treści. I tak mamy pewien procent żądań, które tylko niepotrzebnie obciążają serwer, nieraz będące błędnym kołem - skrypt oczekuje na połączenie z bazą, a zniecierpliwiony gość albo opuści stronę, albo będzie wciskał CTRL+R do oporu…
Owszem, można postawić farmę serwerów z load-balancingiem/proxy-cache, ale nieraz jest to strzelaniem do muchy z armaty, poza tym - w przypadku mniejszych serwisów jest to poza ich zasięgiem finansowym. Jednak są sposoby… ;]
więcej
mod_rewrite, rewriting, przyjazne URL-e/adresy, maskowanie, przepisywanie, nazw jest sporo. Zresztą, najpopularniejsza pochodzi od swojego protoplasty - czyli mod_rewrite powstałego pod skrzydłami Apache’a jako moduł. Teraz właściwie standard, jeśli chodzi o nowoczesne strony www - nie tylko ze względu na wygląd, ale i (jak ptaszki ćwierkają, choć jest to wątpliwe wobec oficjalnych źródeł) SEO.
Jak zwał, tak zwał, adres http://example.org/kawalek/adresu wygląda dużo estetyczniej i jest łatwiejszy do zapamiętania niż potworki typu http://example.org/?kawalek=adresu&i=jeszcze&inny=fin
Niby nie jest to takie skomplikowane, ale niektóre sytuacje wydają się nie do rozwiązania.
Uwaga, notka tasiemcowata, więc jest spis treści. Polecam się również uzbroić w odpowiednią ilość czasu. ;]
więcej
Świat się zmienia, ludzie się zmieniają albo ludzie się zmieniają i Swiat się zmienia. Może taki filozoficzny początek, ale niektórych kwestii nie da się ot tak, racjonalnie wytłumaczyć. Zadaję sobie parę pytań, może Wy, drodzy Czytelnicy, pomożecie mi w znalezieniu na nie odpowiedzi?
więcej
Dawno, dawno temu, miałem chrapkę na ten certyfikat. W końcu, tyle babram się w PHP, to przydałoby się sprawdzić, ile w głowie siedzi. ;]
Próbowałem się dowiedzieć, co zawiera egzamin. Ale dawno to było; ogrom wydarzeń spowodował, że chyba na rok porzuciłem zamiar startowania na ZCE. Aż pod koniec ubiegłego roku sobie przypomniałem, gdy doszło do pisania CV. ;]
więcej
aktualizacja
W Sieci można natknąć się na wiele przepisów, w jakis sposób stworzyć drzewka zapisywane w DB. Niektóre mają więcej, niektóre mniej wad… Ale poszukiwałem jakiegoś w miarę uniwersalnego rozwiązania, które by najlepiej pasowało do moich potrzeb.
Założenia
Potrzebujemy drzewka kategorii. Ot, takie najprostsze, np:
- kategoria
- podkategoria1
- podkategoria2
- kategoria
więcej
O tym, jaką konkurencję dla komercyjnych forów stanowi skrypt SimpleMachines Forum wspominał nie będę, bo to temat na osobny artykuł. Dzisiaj opiszę, w jaki sposób można zaimplementować na swoim forum listę wyszukiwarek w polu “użytkownicy online”.
więcej
Pozwoliłem sobie rozpocząć pewien cykl nt. różnych problemów, na które mogą się natknąć użytkownicy Apache’a (i to niekoniecznie administratorzy). Tym razem skupię się na podstawowym zabezpieczaniu stron serwowanych przez Indianina.
Zwiększanie poziomu bezpieczeństwa stron można podzielić w zasadzie na kilka części. Wszak nie jest to tylko zadanie administratora naszego serwera, lecz również nasze, osób tworzących aplikacje “webowe”. Nie chodzi tylko o zapobieżenie destabilizacji działania serwisu, lecz również o ochronę danych naszych gości, co nakazuje nam ustawa o ochronie danych osobowych.
więcej
Programowanie, programowanie, programowanie… OK, znajomość języka, to podstawa, algorytmy są właściwie najważniejsze. Kiedyś - assembler, kilkanaście KB (kilobajtów) dostępnej pamięci, bezpośredni dostęp do procesora. Dzisiaj - C#, C/C++, Delphi, GB pamięci trwałej i swobodnej. Same procki dużo szybsze od tych “pierwotnych”. Niby wszystko jest w porządku, ale czy do końca?
Jak się rozwinęła osoba programisty?
więcej
Jak zapewne zauważyliście, mój sidebar w końcu przeszedł pewną metamorfozę. Zgodnie z tym, co sobie obiecałem zmieniłem go, bo był “niedopracowany”. Teraz postanowiłem go “ułebodwazerować” i podzieliłem go na jakby widżety - są one raczej klasyczne. Dodatkowymi są: kalendarz, najnowsze wpisy, losowe wpisy. Co do samej postaci list z linkami - żeby nie straciły na zawartości i aby nie zajmowały tyle miejsca, to postanowiłem opisy pokazywać dopiero po wskazaniu myszą linka.
Teraz opiszę jak utworzyć każdy z takich widgetów u siebie.
Najpierw trochę teorii.
Wszystkie opisy, które pokazują się po wskazaniu myszą na link są oparte na pseudoklasie :hover. Wszystko by było OK, gdyby nie jeden problem: IE. Nie wiem, jak to jest w siódemce, ale we wszystkich pozostałych na użycie :hover bez jakichkolwiek hacków przeglądarka zezwala tylko dla elementu <a>. Nie ma sensu pchać osobnego skryptu tylko po to, aby pod IE się mógł opis pojawiać. Owszem, można by było wszystko wcisnąć link, ale specyfikacja XHTML nie zezwala na umieszczanie linków w linkach. Poza tym, inne obiekty niepotrzebnie by zmieniały wygląd. IE obsługuje technologię zwaną behaviours. Wykorzystał to autor whatever:hover, która pozwala na “normalne” używanie pseudoklas :hover czy :focus we wszystkich elementach. Ma tylko jedną wadę - nie możemy ich użyć w dynamicznie tworzonych obiektach (np. poprzez AJAX).
więcej