Page 153 of 171

Hostpower vs VIPserv – Część I – moja opinia nt. Hostpower

Jak zapewne część z Was wie (a większość pewnie nie ;) ), ostatnimi czasy przyszło mi pożegnać się z firmą Hostpower. Z racji tego przygotowałem 3 częściowy artykuł opisujący Hostpower, Vipserv oraz małe porównanie obu tych usługodawców.

Z usług firmy Hostpower korzystałem od grudnia 2008 roku do maja 2010 roku. To co piszą na swojej stronie www, a to co mają w ofercie to dwie różne sprawy. Ale do tego dojdę później ;)

Kontakt? Eeee nie, bo i po co?

Przede wszystkim w tej firmie obowiązuje, jak mi się wydaje, zasada "zero kontaktu". Nie odpowiadają na maile które są dla nich niewygodne. Zgłoszenia awarii czy też reklamacji musiałem wysyłać po 2 - 4 razy na każdy możliwy adres e-mail, aby w końcu ktoś mi łaskawie odpowiedział. Odpowiadali tylko na wiadomości na które było im wygodnie. Rzekomo obecnie odpowiadają trochę częściej, jednak pewnie też tylko na "mało problematyczne" maile.

Żeby nie być gołosłownym, oto moja przygoda:

Zepsuty Mongrel czyli nic nie umiemy sami naprawić

Zacząłem swoją przygodę z Rubym i Railsami - Hostpower szczyciło się (i wciąż szczyci ...) możliwością hostowania aplikacji Railsowych. Jest to totalna bzdura. Na koncie można odpalić jedną aplikację Railsową - na Mongrelu (nie na Passengerze). Z ich instancją Mongrela jak i Railsami są wieczne problemy - z tego co udało mi się bez dostępu do logów serwera "wybadać", mają problem z garbage collectorem (gc_sweep(): unknown data type) co wynika z tego że mają zainstalowaną wersję Rubiego która powodowała ten błąd. Od momentu zgłoszenia awarii (listopad 2009) do momentu "rzekomej" naprawy (koniec stycznia 2010) zostałem bez podstawowej dla mnie funkcjonalności serwera.

Odpowiedzią na moje maile były wiadomości w stylu "to nie nasza wina, zgłosiliśmy do CPanela ale musimy tyle czekać, nic nie możemy poradzić".

Taka wypowiedź ostatecznie utwierdziła mnie w przekonaniu, że opieką nad tym hostingiem zajmują się osoby które nie znają technologii związanych z Rubym (co powinno implikować to, że NIE reklamują hostingu jako wspierającego Railsy).

Nawet nie uda ci się złożyć reklamacji - bo a nóż musielibyśmy ją uwzględnić

Oczywiście na maila z pytaniem jak zgłosić oficjalnie reklamację i kiedy będzie ona rozpatrzona, nie otrzymałem do teraz odpowiedzi. Dałem sobie spokój z proszeniem czy też reklamacjami. Uznałem te pieniądze za wyrzucone w błoto (no może nie do końca - hosting firmy Hostpower obecnie do końca okresu który mam wykupiony, traktuję jako serwer FTP bo IMHO tylko do tego się nadaje ;) )

Rails friendly ale o SSH zapomnij

Brak ssh to kolejna wręcz niezbędna rzecz przy pracy z Railsami - także nie ma. Kod załadować po FTP a bazę zmigrować najlepiej przez phpmyadmina...

Czasem padnę, czasem wstanę

Kilkukrotnie zdarzały się im pady przy których nie działał nawet mail (raz padł im kontroler raid - hosting nie działał kilkanaście godzin). CPanel w żadnym wypadku nie jest zaletą - wszystkie błędy i usterki zgłaszali do techników CPanela.

Super błędy zabijające Mongrela czyli 404 ;)

Z tym też wynikła śmieszna sytuacja - technik CPanela znalazł błąd w moim kodzie Railsowym który rzekomo powodował "wysypywanie się" Mongrela - ActionController::RoutingError - to utwierdziło mnie ostatecznie w tym jaki poziom wiedzy reprezentują administratorzy Hostpower.

Podsumowanie - czyli bierz co dają i ciesz się że działa FTP

Podsumowując: jeśli używasz tylko php i nic, ale to nic nie chcesz od firmy Hostpower - to możesz mieć u nich konto. Jednak jeśli chciałbyś skorzystać z tego co mają w swojej ofercie w zakresie większym niż php to zastanów się kilka razy czy warto.

Rails + przechowywanie wielu obrazów (miniaturek, avatarów, zdjęć) w systemie

Przeglądając devpytania natknąłem się na pytanie dotyczące przechowywania zdjęć użytkowników w serwisie - biorąc pod uwagę ilości "hurtowe" (link).

Nie miałem potrzeby aby wdrażać takie rozwiązanie, ponieważ nie pisałem nigdy części systemu, która miałaby przechowywać ponad 32k plików (chociaż ostatnio się to zmieniło ;) ). Wychodząc naprzeciw wyzwaniu, postanowiłem dodać taką opcję i jak to bywa w wypadku Railsów - nie zajęło mi to zbyt wiele czasu.

Rozwiązanie znalazłem tutaj. Jest ono proste jak konstrukcja cepa a jego wdrożenie nie zajmuje zbyt wiele czasu.

W katalogu config/initializers tworzymy sobie plik, np o nazwie: paperclip_extensions.rb czy tam czymś podobnym, po czym wstawiamy do tego pliku taki oto kod:

Paperclip.interpolates :hashed_path do |attachment, style|
  hash = Digest::MD5.hexdigest(attachment.instance.id.to_s + 'cos_tam_tajnego')
  hash_path = ''
  3.times { hash_path += '/' + hash.slice!(0..2) }
  hash_path[1..12]
end

Mimo że pierwotny autor na blogu uważa że cos_tam_tajnego nie jest istotne, ja pozwolę się z nim nie zgodzić ;)

Dodanie soli do tego hasha, sprawia że ktoś kto chciałby "zassać" nasze zdjęcia, przy pomocy jakiegoś kodu automatycznego, będzie miał utrudnione zadanie.

Nie dając soli, potencjalny "złodziej" bardzo szybko zauważy prawidłowość pt: MD5(id) i podział na 3 części. Stosując tutaj sól oraz moje rozwiązanie z tego wątku - zabezpieczamy się w dużym stopniu przed tego typu zagrywkami.

Po dodaniu tego rozszerzenia do Paperclipa, otrzymujemy nowe słowo "klucz" do wykorzystania z tym pluginem. Jest to :hashed_path który możemy wykorzystać tak samo jak np: :id_:style.:extension, tworząc przykładowo taką oto ścieżkę:

:url => "/pictures/:hashed_path/:id/:id_:style.:extension"

:hashed_path zostanie zamieniony na strukturę katalogów w stylu /ghw/jre/fhw. Dzięki temu w jednym katalogu nie będzie przechowywana zbyt duża liczba plików co mogłoby się skończyć problemami z systemem plików.

Według mnie implementacja tego kodu jest na tyle prosta i szybka, że warto ją włączać nawet w projekty które nie mają w założeniach być "super obciążone", ponieważ jak to w internecie bywa - wszyscy wiemy ;)

Copyright © 2025 Closer to Code

Theme by Anders NorenUp ↑