
Geek And Poke – rozpoznawanie twarzy
Nie mogłem się powstrzymać, żeby tego nie powielić. Więcej na stronie Geek And Poke .

Nie mogłem się powstrzymać, żeby tego nie powielić. Więcej na stronie Geek And Poke .

O tym, że monitorować należy wszystko co można monitorować wie każdy admin z kilkoma latami doświadczenia. To tak jak z backup’ami – zaczynasz je robić regularnie po pierwszej utracie danych.
Narzędzi do monitorowania jest mnóstwo, począwszy od własnych skryptów poprzez rozwiązania typu NAGIOS . Dzisiejsza historia jednak nie będzie o skryptach do monitorowania, tylko o tym jak zły monitoring może spowolnić, albo zabić cały system.

Stare ludowe przysłowie mówi “tylko prawdziwi twardziele nie robią backupu”. Ja niestety do prawdziwych twardzieli się nie zaliczam, więc robię regularne backupy. Wiadomo – spadały wahadłowce, nasz serwer też się prędzej czy później spali 😉
Współczesna architektura aplikacji skupia się na trzymaniu danych w… bazach danych. W naszym przypadku jest to zwykle MySQL. Więc na tym się skupimy. Nie wiem jak wy, ale ja lubię mieć kopię każdej bazy w osobnym pliku. Jak to zautomatyzować? Poprzednie używałem Perla, a teraz wiem jak zrobić to bez niego.

Jako fanboy CodeIgniter ‘a ciężko mi było spróbować i przekonać się do czegoś innego. CodeIgniter jako framework dla PHP zapewnił to co było mi potrzebne – modularność, porządek – sporą liczbe gotowych modułów. Polubiłem go głównie za bardzo klarowną dokumentację i prostotę całego rozwiązania. Jednak po dłuższej pracy z tym rozwiązaniem odkryłem też jego braki.
Jego prostota po pewnym czasie zaczyna też być jego wadą. Brak wbudowanego CRUD’a i praktycznie nie istniejące wsparcie dla idei modelu (o czym napisał jeden z moich czytelników) to główne wady CI. W przypadku prostych projektów nie stanowi to problemu, modele tworzymy sami, ale trzeba pisać wszystkie zapytania “ręcznie” – dbać o relację pomiędzy złożonymi tabelami i obiektami.

Czy zawsze jest nam potrzebne jQuery albo mootools? Czasami wykorzystujemy jedynie kilka funkcji z całkiem złożonego frameworka. Na stronie Microjs.com możesz znaleźć całkiem pokaźną listę małych frameworków JavaScript, które realizują określone funkcje takie jak np. tylko animacje CSS czy Ajax.
Tym razem kilka słów o robieniu wersji językowych dla naszych aplikacji. Praktycznie każdy framework oferuje jakieś wbudowane rozwiązanie. Wbudowane rozwiązania wiadomo – raz działają szybciej, raz wolniej.
Tak naprawdę mamy do wyboru kilka opcji – trzymanie wszystkiego w osobnych szablonach dla każdej wersji językowej (widoki), wykorzystanie stałych (define('zapisz', 'save') – i odpowiedni plik dla każdego języka), trzymanie danych w tablicach globalnych (array('zapisz' => 'save') – reszta jw).
Potem w grę wchodzą rozwiązania dedykowane – pliki .ini i parsery (m.in. Smarty) no i co tam sobie wymyślimy – można tłumaczenia trzymać w bazie, potem generować jakieś pseudo konfiguracje i podmieniać. Wszystko opiera się na jednej zasadzie – musimy mieć gdzieś oryginał i tłumaczenia.

Od czasu do czasu ktoś zadaje mi pytanie: “No dobra, taki mądry jesteś, a jakieś realizacje? Portfolio?”. Prawda jest taka, że przez parę ładnych lat (dobijam do 10) wykonałem kilkadziesiąt a może więcej różnego rodzaju produkcji. Częściowo sam, częściowo z moim nieistniejącym już zespołem (pozdrowienia dla Konrada który był ze mną praktycznie od początku i chyba najdłużej, Sita który wprowadził obiektowość i mnóstwo rozrywki no i oczywiście dla Rafała który nie istnieje online ;). Niestety z racji ilości produkcji nie byłem w stanie, a w zasadzie brakowało czasu dla dokumentowania naszych osiągnięć.

Temat optymalizacji i przyspieszania skryptów, serwerów i komputerów towarzyszy mi od zawsze. Pisałem już trochę o wszelkiego rodzaju mikro optymalizacjach, o cache’owaniu wyników PHP, przyspiesznaiu serwerów poprzez rozwiązania typu eaccelerator, ale jakoś pominąłem podstawowy i ważny aspekt prawie każdego projektu – serwer MySQL.

Optymalizacji ciąg dalszy 🙂 Page Speed Online często doczepia się do ustawienia expiry date dla plików, które mają być długo cache’owane. Generalnie chodzi o to, żeby przeglądarka automatycznie cache’owała nam pliki jak najdłużej sięda – pliki naszego serwisu, które nie często sięzmieniają jak biblioteki CSS czy JS, a nawet niektóre obrazki.
Jak to zrobić jeżeli nasze strony serwuje lighttpd? Z pomocą przychodzi nam mod_expire – moduł przeznaczony dokładnie do tego zadania. Oczywiście nie będziemy się bawić w zbędne wstępy – esencja.

O KeePass’e wspominałem już kilka razy, ale zasadniczo nigdy go porządnie nie przedstawiłem. Jest darmowy – wieloplatformowy – menadżer haseł. Istnieje wiele podobnych programó, ale ten jest OpenSource – kod można samodzielnie skompilować, jeżeli ktoś “nie wierzy”. Działa zarówno pod Linux’em, Windows’em no i oczywiście Mac OS X. Są też wersje na iPhona – niestety wszystkie płatne, oraz darmowa na Androida.