Poziom: 0 | Kategoria: Komputerowo-internetowo, Ruby. | 2 komentarze
W ramach nauki języka Ruby postanowiłem napisać sobie prostą i zwinną klasę do tworzenia indeksu zdjęć znajdujących się w zadanym katalogu. Klasa umożliwiać ma tworzenie miniaturek, obsługiwać szablony, itp.
W tej chwili działa tworzenie galerii razem z miniaturkami. Dzisiaj, implementując nową wersję, znalazłem ciekawą klasę Ruby'ego — OptionParser. Jak sama nazwa wskazuje, klasa parsuje zadane opcje. Jej możliwości są jednak dosyć spore. Można definiować różne aliasy parametrów, definiować parametry konieczne i opcjonalne, w dodatku nie trzeba implementować dodatkowych metod typu usage, gdyż dostajemy je za darmo, a opisy parametrów dodajemy przy ustalaniu listy dostępnych parametrów. Poniżej przykład wykorzystania klasy (wzięty z mojego generatora indeksów zdjęć):
require 'optparse'
dir = "."
index = "index.html"
options = OptionParser.new do |opts|
opts.banner = "GalleryMaker #{G_VERSION}."
opts.separator ""
opts.separator "Dostepne opcje:"
opts.on("-d", "--directory KATALOG", "Ustawia \
KATALOG ze zdjeciami (domyslnie .)") do |d|
dir = d
end
opts.on("-i", "--index PLIK", "Ustawia nazwe pliku \
z indeksem na PLIK (domyslnie index.html)") do |i|
index = i
end
opts.on_tail("-h", "--help", "Wyswietla ta wiadomosc") do
puts opts
exit
end
opts.on_tail("-v", "--version", "Wyswietla numer wersji") do
puts G_VERSION
exit
end
end.parse(ARGV)
Poziom: 0 | Kategoria: Komputerowo-internetowo, Python, Ruby on Rails. | 1 komentarz
Dzisiaj będzie trochę reklamowo-propagandowo. Ostatnio zastanawiałem się nad zmianą hostingu. Po namowie ahesa założyłem testowe konto na rootnode. Na razie jestem pod wrażeniem. Ilość dostępnych usług oszałamiająca, parametry niczego sobie. Shell w porównaniu z Dreamhostem dużo szybszy. Nawet na mojej wolnej i awaryjnej radiówce. Pingi dużo mniejsze: Dreamhost ~200ms, Rootnode ~55-60ms! Uruchomiłem też swoją aplikację w Railsach pod Apache z FCGI (chociaż i mongrela udało mi się uruchomić — wtedy moja aplikacja naprawdę ruszyła z kopyta). Typo również powstało bez problemów.
Poza tym to jest jedyny hosting, który znam, gdzie można korzystać już z rozwojowego php6. Wygląda na to, że już tam zostanę. Polecać będę, jak dłużej posiedzę, ale już mogę zachęcić do testowania.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Z życia. | 15 komentarzy
Za trochę ponad miesiąc kończy mi się hosting na Dreamhost. Ważność traci również domena. Ponieważ ok. $120 za przedłużenie ważności konta na kolejny rok to dla mnie dużo, szczególnie, że nie hostuję niczego wielkiego, tylko drobne prywatne serwisy i projekty, rozglądam się za nowym miejscem.
Po wstępnym przejrzeniu rynku wyselekcjonowałem trzech usługodawców. Przede wszystkim zależy mi na tym, by na hostingu była obsługa Ruby on Rails oraz dostęp do shella przez SSH. Przydałaby się również baza PostgreSQL, jako że jest lepsza od mySQL. Problem w tym, że nie znalazłem wielu opinii o tych usługodawcach, szczególnie o działaniu RoR.
Tak więc mam kilka dni na podjęcie decyzji i nie wiem na co się zdecydować. A może jest ktoś, kto mógłby podzielić się wiadomościami na temat wyżej wymienionych hostingów lub zaproponować coś innego w cenie powiedzmy do $7 za miesiąc?
Poziom: 0 | Kategoria: Komputerowo-internetowo, Przemyślenia, Ruby, Ruby on Rails. | Dodaj komentarz
Piotrek prosił mnie o pomoc w stworzeniu i zarządzaniu internetową galerią fotek. Po epizodzie z Coppermine Photo Gallery postanowił przejść na coś mniej skomplikowanego i zasobożernego. Stąd mój pomysł na prostą galerię własnej roboty. Niestety na hostingu Piotrka nie ma obsługi Ruby on Rails, ale u mnie jest, więc galeria może wisieć u mnie.
W tej chwili jestem na etapie planowania, jak to wszystko ma wyglądać. I pomysł mam następujący. Aby nie zarżnąć serwera będę robił skrypt, który będzie uaktualniał galerię i tworzył statyczne strony z poszczególnymi zdjęciami lub całymi galeriami. Całość ma odbywać się mniej więcej tak, że mam sobie folder galleries, w którym są podfoldery numerowane kolejnymi liczbami, lub nazwane jakkolwiek inaczej. Po uruchomieniu skryptu indeksuje on wszystkie katalogi i dodaje/usuwa/uaktualnia statyczne strony ze zdjęciami we wszystkich galeriach lub dodaje tylko zindeksowane nowe galerie, w przypadku, gdy nie zmienialiśmy nic w starych. Oczywiście tworzy przy okazji miniatury wszystkich zdjęć.
Wydaje mi się, że takie podejście pozwoli na mniejsze zużycie zasobów. Nie potrzebna będzie prawdopodobnie nawet baza danych, bo konfiguracje skryptu mogę trzymać w nim samym lub w jakimś XML-u. Galeria ma być prosta, bez komentowania zdjęć, itp. Chodzi przede wszystkim o łatwe dodawanie nowej galerii.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Przemyślenia, Ruby on Rails, Studia. | 1 komentarz
W zasadzie skończyłem projekt z baz danych. W aktualnej wersji zadania wysłane przez użytkowników są sprawdzane przez sędziów, jednak cały czas chodzi mi po głowie napisanie automatycznej sprawdzaczki. Problem w tym, że — niestety — nie wiem jak zablokować możliwość otwierania nowych plików i tworzenia nowych wątków lub procesów przez sprawdzany przez sprawdzaczkę program. Próbowałem bawić się ulimitem, którym ustawiam limity czasowe i pamięciowe, ale nie do końca wiem, czy tędy droga. Ustawienie ulimit -n 1 nie działa, podobnie ulimit -u 1.
Jeżeli ktoś z czytających ma jakąś koncepcję — będę wdzięczny za pomoc!
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, Studia. | Dodaj komentarz
Projekt z programowania obiektowego będzie jednak interpreterem języka Żółw. Ma to, oczywiście, swoje plusy – w zasadzie już go skończyłem, przechodzi już wszystkie przygotowane testy. Trzeba będzie tylko dopieścić dokumentację, która wygenerowana została już przy pomocy programu NDoc. Dzięki temu zostaje mi więcej czasu na bazy danych...
Swoją drogą Visual Studio potrafi rysować całkiem fajne diagramy klas.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Studia. | 2 komentarze
Zbliża się czas zaproponowania tematu projektu w Programowania obiektowego. Myślałem, że nie będzie to żaden problem dla mnie. Jednak ponieważ ostateczny termin oddania gotowego projektu ustalony został na 21 czerwca, wydaje mi się, że mogę nie zdążyć, tym bardziej, że muszę zrobić jeszcze drugi projekt.
Projekt, który chciałem realizować, to katalog multimediów, a w zasadzie katalog plików mp3 rozsianych po różnych nośnikach CD/DVD. Program miał mieć ładny, funkcjonalny GUI oraz miał obsługiwać tagi ID3. Zacząłem nawet projektować klasy i właśnie na tym poziomie zrozumiałem, że może być ciężko z realizacją wszystkiego w miesiąc, a nie chcę za bardzo zawężać funkcjonalności projektu.
Wróciłem więc do punktu wyjścia i muszę znowu myśleć nad tematem. Przez chwilę myślałem o interpreterze języka Żółw, którego pisałem w zeszłym roku w C. Wystarczyłoby więc przepisać go na C# i projekt gotowy. Nie wiem tylko, czy taki temat zostanie zaakceptowany.
A może Ty masz jakieś propozycje?
Poziom: 0 | Kategoria: Komputerowo-internetowo, Studia. | Dodaj komentarz
"Obsługa konkursów informatycznych - baza z rankingami, uczestnikami i ich wynikami, kodem rozwiązań, proste forum" – taki temat projektu z baz danych został wybrany w mojej grupie. Powiem tylko, że ja na niego nie głosowałem. Jednak projekt zrobić trzeba, czasu w sumie niewiele, więc zabieram się do roboty. W tej chwili jestem na etapie projektowania modelu konceptualnego, więc jakby ktoś miał jakieś uwagi, to niech da znać.
Jak już zrobię model konceptualny i logiczny, trzeba będzie zrobić przykładową aplikację, korzystającą z tej bazy. Prawdopodobnie napiszę ją w Ruby on Rails.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Przemyślenia, Studia, Z życia. | Dodaj komentarz
Po tygodniowym wycofaniu się z życia spowodowanego zapaleniem zatok przynosowych wracam do świata. Jak zwykle mało czasu, a dużo do zrobienia -- w tym tygodniu przede mną dwa kolokwia, co prawda jedno z nich -- Algorytmy i Struktury Danych -- mogę sobie darować, jednak Prawo w działalności informatycznej mam zamiar zaliczyć. Przynajmniej na 4.0. Poza tym muszę jeszcze trochę powalczyć o lepsze oceny.
W moje ręce wpadło wreszcie Programowanie w języku Ruby. Muszę przyznać, że póki co samo wydanie książki mile mnie zaskoczyło. Jak na razie nie zauważyłem w niej błędów, mam nadzieję, że pozostanie tak do końca. Teraz przede mną nauka i tworzenie w nowym języku, co zaowocuje może jakimś projektem z Programowania obiektowego, jeżeli zdecyduje się na ten przedmiot.
Przy okazji zakupów zauważyłem, że Helion wziął się poważnie za tłumaczenie książek Pragmatycznych Programistów. To dobrze, w końcu wydają oni naprawdę wartościowe pozycje. W lutym wydane mają zostać Przepisy w Ruby on Rails, czyli Rails recipies. Tylko czekać, aż Helion wyda najlepszą książkę techniczną ubiegłego roku, którą mam zamiar wkrótce nabyć.
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: 0 | Kategoria: Komputerowo-internetowo. | Dodaj komentarz
Nowy Rok zachęcił mnie do porządków na półce z książkami. Efektem tego jest pięć aukcji. Jeśli ktoś jest zainteresowany kupnem poniższych książek, zapraszam:
W niedługim czasie będę również sprzedawał Praktyczny kurs Turbo Pascala oraz Algorytmy, struktury danych i techniki programowania. Wydanie III, muszę tylko znaleźć nośniki do nich dołączane.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Ruby. | 2 komentarze
Jakże miło jest mi ogłosić, że książka Programowanie w języku Ruby - wydanie II została wreszcie wydana i można już ją zamawiać. Mam tylko nadzieję, że tłumacze wykonali kawał dobrej roboty. Korekta również. Tytuł ukazał się nakładem wydawnictwa Helion (a jakże by inaczej).
Poziom: 0 | Kategoria: Komputerowo-internetowo, Studia, Z życia. | 2 komentarze
Ostatnio zapragnąłem połączyć się moim notebookiem z komputerem znajomego przez stworzoną na te potrzeby siecią typu ad-hoc. Niestety po ponad godzinnej walce poddaliśmy się. Pomimo tego, że komputery znajdowały się w bliskim sąsiedztwie, a siła i jakość sygnału była znakomita, nijak nie dało się uzyskać stabilnego połączenia. Pingi szalały -- średnio 50% ginęło, reszta wahała się w granicach 3-65ms... Myślałem, że może jest to wina szyrfowania, ale zupełnie niezabezpieczona sieć działała tak samo, zarówno pod Windowsem, jak i pod Linuxem. Jednym słowem WiFI śmierdzi!.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Techblog, Z życia. | 6 komentarzy
Ponieważ nudze się niesamowicie, nareszcie zrobiłem to, co chciałem od dawna, czyli współdzielenie ciastek i zakładek w Firefoxie między dwoma systemami w moim notebooku. Zdaje sobie sprawę, że Ameryki nie odkryłem oraz że sposób, który wykorzystałem jest banalny, jednak efekt mi się podoba. Jeśli ktoś chciałby zrobić to samo, służę pomocą.
Wymagania: Windows i Linux oraz partycja FAT z uprawnieniami odczytu i zapisu zamontowana pod Linuxem, na której znajduje się profil Firefoxa w wersji Windows. Cała zabawa sprowadza się, do podlinkowania plików cookies.txt, odpowiedzialnego za przechowywanie ciastek oraz bookmarks.html, czyli plik z zakładkami, do katalogu przechowującego profil Firefoxa w wersji Linuxowej. Pod Linuxem przechodzimy do katalogu z profilem Firefoxa (zwykle ~/.mozilla/firefox/<numerki>) i w konsoli wpisujemy (po uprzednim usunięciu plików cookies.txt i bookmarks.html):
ln -s /sciezka/do/pliku/na/partycji/fat/cookies.txt
ln -s /sciezka/do/pliku/na/partycji/fat/bookmarks.html
Od tej pory możemy cieszyć się współdzielonymi ciastkami i zakładkami. O plusach tego rozwiązania nie musze chyba nikomu pisać.
Poziom: 0 | Kategoria: Komputerowo-internetowo, Z życia. | 14 komentarzy
Nabyłem w końcu to, na co pracowałem w tym roku, czyli laptopa (lub notebooka -- jak kto woli). Po ponad tygodniu poszukiwań i przeglądaniu kilkudziesięciu ofert z parunastu sklepów wybr padł na model ASUS A6Jc-Q005H w wersji brytyjskiej (ten sam model w Polsce ma dosyć mocno obcięte parametry). Chociaż nie jestem do końca zadowolony z matrycy, jednak muszę przyznać, że sama konfiguracja i jej stosunek do ceny odpowiadają mi bardzo. A specyfikacja mojego nowego cudeńka jest następująca:
Do wyboru miałem jeszcze Toshibe Satellite P100-227, jednak układ jej klawiatury skutecznie odstraszył mnie od zakupu (w dodatku z Toshibą miałbym 1 rok gwarancji, zamiast dwóch oraz gorsze parametry). Pozostaje tylko czekać na zakupiony kabel do zasilacza z europejską wtyczką oraz przejściówkę LPT-USB do mojej zabytkowej drukarki. Czy dobrze wybrałem? Czas pokaże. Myślę jednak, że do kodzenia i słuchania muzyki sprzęt jest wystarczający
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.