http://www.kegel.com/c10k.html
nadszedł czas, aby serwery webowe obsługiwały 10 tysięcy klientów rownolegle.
http://www.kegel.com/c10k.html
nadszedł czas, aby serwery webowe obsługiwały 10 tysięcy klientów rownolegle.
czestą operacją jest usuwanie elementow z wektora stl za pomocą iteratora w pętli. zeby to zrobić bezpiecznie, należy ustawic iterator na element ktory zwrocilo erase().
#define erase_iter_from_loop(iter, vec) \
iter = vec.erase(iter); \
if (iter == vec.end()) break; \
iter–;
przykład:
for (vector<x>::iterator i = y.begin(); i != y.end(); i++) {
erase_iter_from_loop(i, y);
}
http://www.facebook.com/note.php?note_id=280583813919
w facebooku przypada jeden inżynier na ponad milion użytkowników. ciekawe prawda?
od kiedy powstalo, php bylo i jest najpowszechniejszym jezykiem do programowania stron i aplikacji www. prostote nauki, pisania, czytania i debugowania docenil facebook. wrazliwe fragmenty, ktore najbardziej wplywaja na wydajnosc, maja byc szybkie lub konsumuja zbyt duzo CPU przepisuja w C++ na php extension korzystajac z zend api. dobre zbalansowanie szybkosci developowania (php) z wydajnoscia (C++). przy okazji poszukiwania udzialu php w rynku znalazlem web framework w C++ (CppCMS). nietrafniony pomysl. nieznajomosc mechanizmow.
http://www.linux-mag.com/cache/7589/1.html
jak szacowac koszt i wydajnosc projektowanego, lub juz dzialajacego systemu:

przyklad z artykulu: projektujemy system i myslismy czy wybrac baze danych pobierajaca dane z dysku, czy baze ktora trzyma calosc danych w pamieci? jesli przewidujemy ze danych bedzie wiecej niz jestesmy w stanie trzymac w RAM na jednej maszynie, musimy kupic ich wiecej i stworzyc klaster. koszt systemu rosnie, ale taki system bedzie wydajnieszy, bo pobranie z pamieci + przeslanie przez siec lokalna jest kilka razy szybsze niz pobranie z dysku.
http://www.linux-mag.com/id/7615
rzeczy, ktore powinnismy wpisac/przestawic po instalacji
http://royal.pingdom.com/2010/01/15/the-9-most-important-events-in-open-source-history/

jako uzupelnienie polecam pierwsze rozdzialy ksiazki Thomasa Friedmana “Świat jest płaski”, w ktorych autor opisuje powstanie netscape’a i apache. powstanie i powodzenie tych dwoch projektow mialo ogromne znaczenie w postepujacym procesie globalizacji.
http://about.digg.com/blog/database-capabilities-high-volume-environment
ladnie usystematyzowana wiedza o nierelacyjnych bazach danych z przykladowymi zamknietymi i otwartymi projektami.
http://highscalability.com/blog/2009/10/13/why-are-facebook-digg-and-twitter-so-hard-to-scale.html
facebook przygotowujac strone do wyswietlenia stosuje ‘tradycyjny’ sposob, czyli pobiera z roznych czesci systemu dane i sklada z nich dokument (Pull On Demand). z kolei digg serwuje strone, ktora juz czeka przygotowana wczesniej w pamieci lub na dysku, poniewaz przy kazdej zmianie (nowy komentarz, nowy post), przebudowuje wszystkie strony (Push on Change), ktorych update dotyka. podejscie digga wymaga wiecej zasobow sprzetowych ale odplaca sie szybkoscia.
http://wiki.apache.org/hadoop/PoweredB
klastry hadoop’a maja w swoim podorężu najwieksi gracze w internecie: adobe, aol, facebook, ibm, imagehack, last.fm, yahoo (ponad 25,000 w klastrze). google uzywa swojego nie open source’owego map reduce.
aby zrozumiec idee map reduce i hadoop’a w szczegolnosci, polecam pierwsze 2 linki a dopiero potem 3-ci:
w zolnierskich slowach:
http://code.google.com/p/redis/wiki/TwitterAlikeExample
ten dokument pozwala ‘zlapac’ idee przejscia z projektowania serwisow na relacyjnej bazie danych na baze klucz-wartosc. pokazana na bazie redis koncepcja nosql.