Całkowanie numeryczne – metoda Monte Carlo

sznurek dnia Kwiecień 16, 2011

Każdy, kto spotkał się z całkami na pewno zna kilka sposobów ich liczenia. W najprostszych przypadkach możemy wyznaczyć całkę nieoznaczoną z danej funkcji analitycznie. Co z trudniejszymi przypadkami? Z nimi możemy sobie poradzić o ile chcemy znać wartość całki oznaczonej z pewną skończoną dokładnością.

Przeczytaj całość »

Budowa prostego MVC w PHP (>5.3), cz. 2 – warstwa Modelu

Killavus dnia Marzec 23, 2011

W ostatnim artykule przybliżyłem trochę na czym polega model MVC, dlaczego jest przydatny i jest pożądanym wzorcem projektowym w wielu zastosowaniach. Django, czy Ruby on Rails używają tego modelu z bardzo dobrym skutkiem – znacząco zmniejsza to czas projektowania aplikacji sieciowej. Pozwala to np. stworzyć bloga w 15 minut, wraz z pełnym panelem administracyjnym właśnie w RoR.

Dzisiaj zajmiemy się warstwą Modelu – niewątpliwie najbardziej skomplikowaną częścią tego modelu. Efektywne zaimplementowanie tej warstwy to tak naprawdę najważniejsza część – reszta jest dość prosta do napisania i tam raczej cudów nie ma. Stworzymy klasę abstrakcyjną, która pozwoli na rozszerzanie modeli w nieskończoność, korzystając z tego samego interfejsu. W następnej części zaimplementujemy także klasę potomną od naszego abstrakcyjnego modelu, która będzie pobierała dane z baz danych. Wykorzystamy w tym celu PDO, co będzie doskonałym ćwiczeniem w programowaniu z użyciem tego zestawu klas.

Przeczytaj całość »

Standardowe narzędzia PHP do filtrowania danych

Killavus dnia Luty 19, 2011

Filtrowanie danych to jedna z najważniejszych i często pomijanych przez początkujących web developerów aspektów budowania sprawnej aplikacji sieciowej. W dzisiejszych czasach, gdy posiadamy tak potężne narzędzia jak PDO (artykuł) często walidacja danych przychodzących od użytkownika uchodzi nam płazem. Niestety, nie zawsze. Ataki XSS (Cross Site Scripting) potrafią być naprawdę niebezpieczne i sprawić, że zaufanie użytkowników do naszej strony spadnie dramatycznie.

Na przestrzeni wieków (brzmi dumnie) programiści sieciowi różnie radzili sobie z tym problemem. Czy to za pomocą wyrażeń regularnych, czy za pomocą wbudowanych w język funkcji niekoniecznie do tego służących. Od PHP 5.2 istnieją jednak dedykowane rozwiązania do radzenia sobie z tym problemem i o nich opowiemy w tym artykule.
Przeczytaj całość »

lftp – lepszy pomysł na przesyłanie plików

sznurek dnia Luty 15, 2011

Ostatnio potrzebowałem napisać skrypt, który automatycznie wrzucał pewne pliki na serwer korzystając z SSH (FTP nie było dostępne). Próbując rozwiązać ten problem natknąłem się na lftp, który okazał się świetnym programem. Chciałbym przybliżyć wam jego praktyczne zastosowania.
Przeczytaj całość »

Budowa prostego MVC w PHP (>5.3), cz. 1 – wprowadzenie do tematu

Killavus dnia Luty 14, 2011

MVC (Model-View-Controller) to jeden z najbardziej rozpowszechnionych wzorców projektowych wykorzystywanych przy projektowaniu front-endów aplikacji sieciowych. Jego niewątpliwą zaletą jest fakt, że możemy rozdzielić 3 najważniejsze „części” programu – prezentację, pobieranie danych, oraz manipulowanie nimi. Staje się to przydatne najbardziej, gdy nad projektem pracuje kilka(naście) osób – graficy nie potrzebują zaawansowanej wiedzy programistycznej, by wyświetlać treść w swoich projektach, specjaliści od bezpieczeństwa nie muszą zajmować się wewnętrznymi szczegółami dotyczącymi pobierania danych, gdyż nieistotne jest dla nich, czy pochodzą one z pliku, bazy danych czy jeszcze innego źródła, zaś programiści mogą przygotować metody zbierania danych, zachowując przy tym taki sam interfejs niezależnie od ich źródła. Ponadto szukanie błędów w takiej aplikacji jest prostsze – dzięki rozdzieleniu warstw możemy szybko i sprawnie wyszukać która część odpowiada za problem i wydelegować do jego rozwiązania odpowiedni sztab ludzi.

Mimo tego, że napisanie aplikacji w oparciu o ten model wydaje się skomplikowane, wcale takie nie jest. Wystarczy wiedza z zakresu obiektowo-orientowanego programowania w dowolnym języku (my wybierzemy PHP) i trochę cierpliwości. W tym artykule postaram się odpowiedzieć na pytanie, jak stworzyć pierwszą część takiego wzorca – Model danych. Opowiem też o tym, za co odpowiada która część i dlaczego kod, który napiszemy nie działa na 90% polskich hostingów. Zatem do dzieła!

Przeczytaj całość »

PDO – czyli zabawa z PHP i bazą danych obiektowo!

Killavus dnia Sierpień 27, 2009

Jako, że mnóstwo programistów (czy to garażowych, czy „profesjonalnych”) wciąż siedzi w zamierzchłych przedpotopowych czasach dziadka PHP 4.x jeżeli chodzi o połączenie z bazą danych, chciałbym przedstawić ciekawą alternatywę dla ich prehistorycznych narzędzi. Mowa tutaj o PDOPHP Database Objects.  Czymże to ustrojstwo jest? Niczym innym jak obiektową implementacją interakcji PHP z bazą danych – nowszą, oferującą ciekawe możliwości i o wiele bardziej przejrzystą od starego, proceduralnego podejścia.
Przeczytaj całość »

connect a sprawa sygnałów

sznurek dnia Sierpień 24, 2009

Już śpieszę z wyjaśnieniem tytułu – chodzi o funkcję systemową dostępną w różnej maści Uniksach. Takich krótkich postów o podobnej tematyce, czyli programowanie niskopoziomowe w C pod Uniksem (dokładniej: Linuksem, choć w przyszłości może i pod FreeBSD), planuję napisać więcej, ponieważ ostatnio mam z tym tematem do czynienia aż za dużo. Zdecydowanie za dużo.

Wracając do tematyki notki – co się stanie gdy wywołanie fukncji systemowej np. write przerwie nam sygnał który dotarł do programu? W większości przypadków funkcja wykona część lub nie wykona operacji w ogóle, ale bez problemowo można ją wywołać ponownie, a zmienna errno zostanie ustawiona na mistyczną juz wręcz wartość EINTR. Niestety funkcja connect tak nie działa. Gdy zwrócony zostanie niezwykle tajemniczy błąd EINTR to nie możemy wywołać jej ponownie. Logiczne, prawda?
Przeczytaj całość »

Natodia Project

Mat dnia Sierpień 19, 2009

Projekt Natodia zakłada realizację:

Blogu – z informacjami od developerów, ciekawostkami technologicznymi, programistycznymi, o sieciach,

Sprawdzaczki – narzędzia, które umożliwi sprawdzenie poprawności algorytmów dla wielu zagadnień matematycznych,

Prace nad większością jeszcze trwają, cierpliwości – już niedługo wszystko będzie działać.

Nie zaprzeczamy, że w przyszłości projekt może zostać poszerzony o dodatkowe elementy – z pewnością tak się właśnie stanie.