Dziś jest poniedziałek, 13 października 2008 roku (z kalendarza...)

Nowy zestaw artykułów

Icon

09.07.2006, 10:25

Zyxist.com

Komentarze (4)

Powrót

W ciągu ostatnich kilku dni pojawiły się na Zyxist.com trzy nowe artykuły, traktujące głównie o komputerach. Pierwszy z nich, Algorytmy ewolucyjne jest rozbudowaną wersją mojego skryptu na wykład wygłoszony podczas niedawnych warsztatów mat-astro-fiz-inf pod Lublinem. Nastawiony jest głównie na teorię, ale zamieściłem też nieco kawałków kodu źródłowego z mojej własnej implementacji algorytmu genetycznego. Myślę, że się to przyda, ponieważ czegoś takiego w tekstach o tej tematyce nie widziałem.

Drugi tekst to Wspomnienia z Wikibooks będący refleksją po ponad półrocznym pisaniu podręcznika Programowanie: PHP. Dedykowany wszystkim, którzy chcieliby pomóc.

Trzeci z artykułów napisałem ładnych kilka miesięcy temu, ale w Internecie dostępny był wyłącznie w wersji PDF. Mowa jest o tekście Własny mechanizm sesji. Dzisiaj znalazłem czas, aby przerobić go na format HTML i opublikować. Nietrudno zauważyć, iż pisany był konkretnie pod WebCity.pl, gdzie oczywiście także się znajdzie wraz z rozbudowywaniem mojego prywatnego silnika CWZ, który wykorzystam także przy Zyxist.com. Dodam, że wszystkie trzy artykuły dostępne są na licencji Creative Commons, a jej szczegóły znajdują się w plikach PDF do pobrania. Życzę miłej lektury.

Powrót

Komentarze

Napisał Denver w niedzielę, 9 lipca 2006 o 12:48

Imponująca robota. Jestem pod wrażeniem.

Napisał MMP w niedzielę, 9 lipca 2006 o 21:18

Art dt. sesji ciekawie napisany ale mam pare uwag.
>> więc siłą rzeczy prawdziwy być musi.
To jakoś nie pasuje w sensje całego zdania, może "więc siłą rzeczy musi być prawidłowy", bo to nie to samo co prawdziwy.

No ale to takie czepialistwo, a teraz z kwesti technicznych.

>> Dodatkowy koszt poniesiemy, jeżeli serwer zostanie zrestartowany (wszystkie dane w tabeli zostaną wymazane), ale akurat w przypadku sesji nie jest to wielka strata. Najwyżej się ludzie będą musieli ponownie zalogować.

Nie ma nic gorszego niż zirytowany użytkownik który musi sie ponownie zalogować.

>> session_ip = :sip AND session_browser = :sbrowser

Powinieneś dodać możliwość "Zapamiętaj mnie" i w takim wypadku nie powinieneś używać tych danych do sprawdzania.

>> setcookie(COOKIE_NAME, $this -> id, time() + COOKIE_EXPIRE);

A ścieżka, przy bardziej skomplikowanych serwisach ścieżka jest wymaga. A domena poprzedzona kropką też powinna być by nie tracić sesji przechodząc pomiędzy domenami.

>> UPDATE sessions SET session_id = :new_id, session_user = :user WHERE session_id = :sid

Zapytanie powinno być tylko podczas logowania, bo jakiś nietrzeźwy programista może umożliwić zmienane id użytkownika np. na admina :)

I jeden bardzo poważny błąd wydajnościowy
>> $pdo -> exec('DELETE FROM sessions WHERE
session_time < '.(time() - COOKIE_EXPIRE));

Takie zapytanie powinno być w pętli np. takiej if( rand( 0, 100 ) == 76 )
Po co ciągle wysyłać rządanie do mysqla jak można raz na sto wywołań?

Napisał serafin w poniedziałek, 10 lipca 2006 o 16:10

No no widze Zyx'ie, że naprawdę coś potrafisz (to nie ironia ;)). Fajnie opisałeś algorytmy ewolucyjne ale po przeczytaniu całości miałoby się wrażenie że problem jest trywialny. A nie jest. Podany przez Ciebie na wsŧępie problem nie do końca oddaje przynajmniej dla mnie idee algorytmów genetycznych. Zwłaszcza, że problem przez Ciebie przedstawiony nie jest NP-zupełny. Algorytmy genetyczne świetnie nadają się do rozwiązywania problemów związanych z teorią grafów (maksymalny przepływ, minimalne drzewo rozpinające, cykl hamiltona)... Dla takiej klasy problemów powstają kolejne problemy: selekcji najlepszych osobników (funkcja oceniająca), problem krzyżowania i mutowania, gdyż krzyżując dwa osobniki, musimy stworzyć graf (z cyklami lub bez) co przy permutacyjnym krzyżowaniu jest ciut trudne. Tak czy siak miły wstęp do tematu ;)

Napisał Zyx w poniedziałek, 10 lipca 2006 o 18:27

Odpowiedź na informacje w kolejności napływania :)

Ad. restartu serwera - wiesz, gdyby takie coś się stało nawet raz, to jest to wystarczający powód, by op#$%#%ć admina systemu. Więc można olać.

Ad. session_browser i session_ip - mylisz się, muszą być sprawdzane zawsze, gdyż inaczej przechwytywanie sesji będzie trywialnym zadaniem.

Ad. ścieżek - artykuł opisuje tworzenie systemu sesji, a nie zagadnienia związane z ciastkami :).

Ad. nietrzeźwych programistów - wiesz, ta metoda właśnie po to jest, by zmieniać ID usera przypisanego do sesji... :P

Ad. poważnego błędu wydajnościowego - To zapytanie wykonuje się TYLKO przy tworzeniu nowej sesji, a nie przy wczytywaniu takowej. Przecież tak się w praktycznie każdym systemie sesji robi.

Teraz odpowiedź na komentarz Serafina - tak trywialny problem został wybrany nieprzypadkowo. Chodzi o to, żeby programista wchodzący w tematykę nie został rzucony od razu na głęboką wodę, gdyż mu się wszystko wymiesza i nic z tego nie będzie. Sam się na tym przejechałem rok temu, myśląc: "a co tam, problem komiwojażera sobie na wejście rozwiążę". Skończyło się to klapą i czasowym odpuszczeniem. Ponadto chyba przyznasz rację, że na początku lepiej jest przetestować i wykalibrować wszystko na jakimś trywialnym w implementacji zadaniu, a do poważniejszych rzeczy przejść, gdy ma się pewność, że mechanika funkcjonuje prawidłowo :). Dodam nawet, że na wykładzie taki niby prosty problem się sprawdził, ponieważ siedzieli przez pół godziny i testowali wszystkie po kolei metody selekcji i krzyżowania ze wszystkimi możliwymi słowami, więc coś na pewno im z tego zostało. Dalsze artykuły z tej serii nie są wykluczone, więc istnieje szansa na omówienie bardziej złożonych problemów :).

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia