Poziom: 0 | Kategoria: Komputerowo-internetowo, Ruby, Ruby on Rails, Techblog, Web Design. | 10 komentarzy
Ponieważ zaczęły mnie denerwować timeouty w przekazywaniu żądań z Apache do mongreli na Rootnode zacząłem rozglądać się za czymś lepszym. Pod uwagę brałem VPS-y w cenie do ok. 60zł za miesiąc. Postanowiłem w najbliższych miesiącach przetestować kilka z nich. Na pierwszy ogień poszedł ProVPS. Za tym rozwiązaniem przemawia lokalizacja serwerów w Polsce, w Gdańsku, a co za tym idzie niskie pingi, w granicach 35-45ms. Jednak na tym plusy się kończą (porównując do reszty ofert branych pod uwagę). Za 49 zł netto miesięcznie dostajemy gwarantowane 128 MB RAM-u, rozszerzane do 512 MB, 5 GB powierzchni dyskowej, 25 GB transferu miesięcznego oraz 1 adres IP. Na tle konkurencji trochę blado.
Wczoraj aktywowano mi VPS i spędziłem kilka ładnych godzin na konfigurowaniu poszczególnych części systemu. Postanowiłem uruchomić minimum usług, głównie po to, by zmieścić się w drakońskich limitach pamięci. Niestety musiałem zrezygnować z mySQL, ponieważ nie znalazłem sposobu na ograniczenie konsumpcji pamięci do akceptowalnego na tym serwerze poziomu — po uruchomieniu mysqld konsumował ok. 100 MB pamięci operacyjnej pomimo przeróżnych konfiguracji znalezionych w sieci i w dokumentacji mySQL. Zaminiłem mySQL na PostgreSQL i tutaj małe zaskoczenie — domyślna instalacja postgresa zużywa ponad połowę mniej pamięci niż mySQL!
Gdy baza danych była już gotowa, nadszedł czas na serwer WWW. Wybór oczywiście padł na nginx, o wiele lżejszy od Apache'a serwer plus load balancer. Na VPS-ie będą uruchamiane jedynie statyczne pliki oraz aplikacje w Railsach i Merbie (w liczbie max. 3 — patrz pamięć). Z konfiguracją nginxa nie było żadnych problemów, świetną konfigurację dla aplikacji railsowych w obsługą cache przygotował Ezra Zygmuntowicz. Konfiguracja ta dostępna jest na jego stronie.
Następną rzeczą do zrobienia była kompilacja Ruby, Rubygems, ImageMagick oraz instalacja Subversion. Oczywiście po drodze były mniejsze komplikacje — a to zabrakło biblioteki zlib, a to nie zainstalowałem libsqlite3-dev. W każdym razie po mniej więcej 5 godzinach miałem już działającego Postgresa, nginxa, SVN, Ruby+Rails i całą resztę potrzebnych do życia aplikacji.
Nadszedł czas na sprawdzenie, czy praca nie poszła na marne. Zgrałem pisaną ostatnio aplikację, zmigrowałem bazę, ustawiłem dwie instancje serwera thin i uruchomiłem je. Et voilà! Wszystko ruszyło i działa jak należy i, co najważniejsze, naprawdę dużo szybciej niż na Rootnode, gdzie aplikacja stała poprzednio.
Nieprzespana noc z konfiguracją serwera za mną, ale za miesiąc prawdopodobnie czeka mnie następna, ponieważ, jak pisałem na wstępie, mam w planie przetestowanie kilku dostawców, którzy mają mniejszy miesięczny abonament i gwarantują 2x więcej pamięci, co dla mnie jest rzeczą ważną. Zastanawiam się, czy sensowne będzie kupowanie VPS-a w USA. Na mojej liście jest Slicehost oraz SilverRack z całkiem niezłą ofertą za niewielkie pieniądze. Z drugiej strony za zachodnią granicą mamy Host Europe, również z ciekawą ofertą i niskimi pingami.
Pomimo dużo większych nakładów czasowych myślę, że nie wrócę już do dzielonego hostingu. VPS i serwer dedykowany daje tę wolność, jakiej nie ma na żadnym dzielonym hostingu (Rootnode jest bardzo liberalne, ale, np. nie mogłem doprosić się o aktualizację Ruby do wersji 1.8.6, ponieważ ma "za dużo zależności"). Pamiętać trzeba oczywiście o tym, że samemu trzeba dbać o stabliność i bezpieczeństwo danych na takim serwerze, ale to z kolei wymusza pewną pracę i naukę, która później nie zginie.
PS. Jakby ktoś z czytających miał wiedzę na temat tego, jak ograniczyć zużycie pamięci przez mySQL, proszę o kontakt.
Poziom: 0 | Kategoria: Web Design. | 2 komentarze
Jak widać zmieniłem szablon mojego joga. Wykorzystałem schemat Wordpressa o nazwie Dayvan. Musiałem delikatnie go przerobić, aby wpasował się w możliwości Joggera. W każdym razie mam nadzieję, że się podoba. W razie, jakby ktoś znalazł jakiegoś buga, proszę o kontakt.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Ruby on Rails, Studia, Web Design. | 4 komentarze
Zacząłem wreszcie pisać projekt na bazy danych. Z każdą linią kodu utwierdzam się w przekonaniu, że Ruby on Rails to świetne środowisko do przyjemnego pisania aplikacji. Wychwalać też będę doskonałe NetBeansy w wersji 6, bez których pisało by się kilka razy wolniej.
W tej chwili mam już prostą autoryzację użytkowników opartą na trzech kategoriach – zwykłych użytkowników, którzy będą mogli nadsyłać rozwiązania, sędziów, którzy te rozwiązania sprawdzą i ocenią (zrezygnowałem na razie z pisania sprawdzaczki) oraz administratorów, którzy mogą dodawać zadania, konkursy, itp. Skończyłem też administrację konkursami – można dodawać/edytować/usuwać konkursy oraz wgrywać pliki z zadaniami. Proste forum w zasadzie też mam już skończone, muszę je tylko zintegrować.
Przede mną chyba najgorsza część, czyli implementacja wysyłania rozwiązań, oceniania ich przez sędziów oraz wyświetlanie jakiś rankingów. Myślę też nad prezentacją statystyk w formie wykresów.
Oczywiście nie obyło się bez problemów – nie mam pojęcia dlaczego giną mi parametry przesyłane z formularza do dodawania nowych zadań i muszę szpecić definicję metody kontrolera dodatkowymi liniami kodu, które uzupełnią brakujące pola. Wygląda to mniej więcej tak:
def create
if request.post?
@problem = Problem.new(params[:problem])
@problem.name = params[:problem][:name]
@problem.short_name = params[:problem][:short_name]
@problem.contest_id = params[:problem][:contest_id]
if @problem.save
flash[:notice] = 'Zadanie zostało dodane.'
redirect_to :action => 'list'
else
redirect_to :action => 'new'
end
end
end
Szkoda tylko, że nie wiem, ile mam czasu, bo nigdzie nie podano terminu oddania pierwszej części projektu...
Poziom: 0 | Kategoria: Komputerowo-internetowo, Miniblog, Ruby on Rails, Web Design. | Dodaj komentarz
Pojawiła się finalna wersja frameworka Ruby on Rails w wersji 1.2. Wersja ta niesie ze sobą wiele nowości i ulepszeń. Aby wykonać update, wystarczy skorzystać z narzędzia gem: $>gem update rails -y lub pobrać odpowiedni pakiet ze stron RubyForge.
Poziom: 1 | Kategoria: Web Design, Z życia. | Dodaj komentarz
Prawdopodobnie w najbliższej przyszłości przeprowadzę się z joggera na swój własny, autorski lub specjalnie do moich potrzeb przystosowany system blogowy. Nauka Ruby on Rails trwa. Zaczynam rozumieć założenia wzorca MVC i muszę przyznać, że coraz lepiej i milej pisze mi się w RoR.
Poziom: 0 | Kategoria: Web Design. | 6 komentarzy
Skuszony dzisiejszą promocją Dreamhost założyłem konto. Za rok hostingu z darmową domeną .com/.info/.org/.net zapłaciłem... trochę ponad 61zł. Co dostałem w zamian, pewnie niektórzy już wiedzą - 200GB pojemności powiększane co tydzień o dodatkowy GB oraz 2TB transferu...
Poziom: 1 | Kategoria: Komputerowo-internetowo, Web Design. | Dodaj komentarz
Ostatnio dużo czytałem o web usability i doszedłem do wniosku, iż muszę gruntownie przebudować moją stronę domową. Przy okazji spróbuję zintegrować z nią joggera -- pierwsze kroki w postaci domeny już poczyniłem. Ale to wszystko w wolnym czasie, którego od wtorku, prawdopodobnie, nie będę mieć za dużo w związku z wyjazdem do UK.
Mój plan jest dosyć rozległy -- chcę przebudować całkowicie kod generujący zawartość stron, rozbudować bazę danych, rozszerzyć panel administracyjny i zrobić go obiektowo, przerobić layout i nareszcie dokończyć go oraz dużo innych, na razie przemilczanych rzeczy. Jednak wszystko w swoim czasie, wolnym czasie, oczywiście i w ramach szkolenia z PHP przed kursem, który mam zamiar zrobić w zimowym semestrze.