Thread View: pl.comp.lang.ruby
12 messages
12 total messages
Started by Kazimierz Trewiń
Tue, 25 Mar 2008 11:58
serwer WWW
Author: Kazimierz Trewiń
Date: Tue, 25 Mar 2008 11:58
Date: Tue, 25 Mar 2008 11:58
12 lines
1393 bytes
1393 bytes
mam pytanie. czy trudno było by napisac serwer WWW i jakis framework czy cokolwiek do pisania bloga jak blogger? Bloger ma bardzo fajna dla mnie wlasciwosc generowania calej struktury statycznych plikow. Potrzebuje czegos takiego. Niestety edytory witryn jak sandvox czy iweb generuja ogromne witryny i wymuszaja JScript, ktory nie wszedzie dziala. Witryna nie bedzie miala zadnej interakcji. Prosze o pomoc w napisaniu czegos takiego. Najlepiej by uzywad mdbc lub innych plikowych baz danych. Aby caly system mogl funkcjonowac niezaleznie od miejsca.
Re: serwer WWW
Author: edek
Date: Wed, 26 Mar 2008 10:57
Date: Wed, 26 Mar 2008 10:57
37 lines
2350 bytes
2350 bytes
Kazimierz Trewiń pisze: > mam pytanie. czy trudno było by napisac serwer WWW i jakis framework czy > cokolwiek do pisania bloga jak blogger? > > Bloger ma bardzo fajna dla mnie wlasciwosc generowania calej struktury > statycznych plikow. Potrzebuje czegos takiego. Niestety edytory witryn > jak sandvox czy iweb generuja ogromne witryny i wymuszaja JScript, ktory > nie wszedzie dziala. > Witryna nie bedzie miala zadnej interakcji. > > Prosze o pomoc w napisaniu czegos takiego. Najlepiej by uzywad mdbc lub > innych plikowych baz danych. Aby caly system mogl funkcjonowac > niezaleznie od miejsca. Przede wszystkim: Chcesz napisać serwer aplikacji czy serwer WWW? Bo pisanie serwera WWW, tak żeby był skalowalny, bezpieczny itd. to nie jest takie łatwe zadanie... Napisanie serwera aplikacji to już łatwiejsze, bo on stoi za jakimś proxy, które dba o mnóstwo rzeczy. Choć też nie trywialne zadanie. Nie wiem, czym jest mdbc. Jeśli chodzi o m$ accessowe .mdb, to są bardziej przenośne rozwiązania, sqlite bodajże się nada, berkley db itd. "Bloger ma bardzo fajna dla mnie wlasciwosc generowania calej struktury statycznych plikow." - co masz na myśli? Że ktoś dodaje notkę i coś Ci generuje statycznie pliki z nią związane (strona z notką, archiwa itd.?). Jeśli tak, to do rozwiązania tego problemu, nie potrzeba Ci własnego serwera WWW tylko dobrze przemyślany skrypt. Poza tym w ogóle nie rozumiem, jaki jest sens pisania takiego "portable" serwera WWW do bloga? m.
Re: serwer WWW
Author: Kazimierz Trewiń
Date: Wed, 26 Mar 2008 11:20
Date: Wed, 26 Mar 2008 11:20
51 lines
2970 bytes
2970 bytes
edek pisze: > Kazimierz Trewiń pisze: >> mam pytanie. czy trudno było by napisac serwer WWW i jakis framework >> czy cokolwiek do pisania bloga jak blogger? >> >> Bloger ma bardzo fajna dla mnie wlasciwosc generowania calej struktury >> statycznych plikow. Potrzebuje czegos takiego. Niestety edytory witryn >> jak sandvox czy iweb generuja ogromne witryny i wymuszaja JScript, >> ktory nie wszedzie dziala. >> Witryna nie bedzie miala zadnej interakcji. >> >> Prosze o pomoc w napisaniu czegos takiego. Najlepiej by uzywad mdbc >> lub innych plikowych baz danych. Aby caly system mogl funkcjonowac >> niezaleznie od miejsca. > > Przede wszystkim: > > Chcesz napisać serwer aplikacji czy serwer WWW? nie wiem czym to się rózni. > Bo pisanie serwera WWW, tak żeby był skalowalny, bezpieczny itd. to nie > jest takie łatwe zadanie... Zle mnie zrozumiałeś. Chodzi o to by uzywac interface jak z ruby on rails do tworzenia bloga. ale potem chce wygenerowac tego bloga statycznie. Pliki html na dysku. > Nie wiem, czym jest mdbc. Jeśli chodzi o m$ accessowe .mdb, to są > bardziej przenośne rozwiązania, sqlite bodajże się nada, berkley db itd. nie ma znaczenia. chodzi o to by bylo latwe i male. a mdbc uzywa i mysql i inne bazy ;) > "Bloger ma bardzo fajna dla mnie wlasciwosc generowania calej struktury > statycznych plikow." - co masz na myśli? Że ktoś dodaje notkę i coś Ci > generuje statycznie pliki z nią związane (strona z notką, archiwa > itd.?). Tak . mozesz ustawic sobie adres ftp i wygeneruje Ci wszystkie pliki. > Jeśli tak, to do rozwiązania tego problemu, nie potrzeba Ci > własnego serwera WWW tylko dobrze przemyślany skrypt. ok. to powiedz jak to zrobic ;) > Poza tym w ogóle nie rozumiem, jaki jest sens pisania takiego "portable" > serwera WWW do bloga? Sens jest prosty. Chce miec bloga. Ale moj serwer obsluguje tylko zwykle strony html statyczne (przegladarka nie obsluguje JScriptu.)
Re: serwer WWW
Author: Jaroslaw Zabiello
Date: Wed, 26 Mar 2008 12:59
Date: Wed, 26 Mar 2008 12:59
45 lines
2492 bytes
2492 bytes
On Wed, 26 Mar 2008 11:20:28 -0000, Kazimierz Trewiń <ftrtuilhjk@hjkigj57g6fh.pl> wrote: >> Chcesz napisać serwer aplikacji czy serwer WWW? > > nie wiem czym to się rózni. Serwer HTTP znaczy się? Tylko po co pisać, jak już jest napisany? webrick, mongrel, thin, ebb, do wyboru, do koloru. > Chodzi o to by uzywac interface jak z ruby on rails do tworzenia bloga. > ale potem chce wygenerowac tego bloga statycznie. Pliki html na dysku. To jest zupełnie bez sensu. Blog z def. jest aplikacją dynamiczną. Równie dobrze możesz napisać zwykły blog (choć szybciej jest użyć gotowego softu, np. http://www.typosphere.org/) i potem zapuścić wget'a (czy inny "teleporter") aby zrobił statyczną kopię serwisu. > nie ma znaczenia. chodzi o to by bylo latwe i male. a mdbc uzywa i mysql > i inne bazy ;) Małe i łatwe jest SQLite. mdbc to jakaś ciężka pomyłka. >> Jeśli tak, to do rozwiązania tego problemu, nie potrzeba Ci własnego >> serwera WWW tylko dobrze przemyślany skrypt. > > ok. to powiedz jak to zrobic ;) wget -m http://adres/bloga >> Poza tym w ogóle nie rozumiem, jaki jest sens pisania takiego >> "portable" serwera WWW do bloga? > > Sens jest prosty. Chce miec bloga. Ale moj serwer obsluguje tylko zwykle > strony html statyczne (przegladarka nie obsluguje JScriptu.) A co to za hosting gdzie serwują tylko statyczne pliki? Jakiś nonsens. I niby jak chcesz zaimplementować dodawanie komentarzy? Na statycznych plikach możesz zapomnieć. -- Jarosław Zabiełło http://blog.zabiello.com irc://irc.eu.freenode.net/ruby.pl irc://irc.eu.freenode.net/python.pl
Re: serwer WWW
Author: edek
Date: Wed, 26 Mar 2008 13:06
Date: Wed, 26 Mar 2008 13:06
32 lines
2424 bytes
2424 bytes
No to wiadomo już przynajmniej o co chodzi. Sam ruby on rails nie ma żadnego interface'u, możesz sobie co najwyżej interface w nim zrobić. Jak w dowolnej innej technologii. Fakt, że RoR mógłby być wygodny, tylko tutaj może być ciężko z przenoszeniem tego. >> Jeśli tak, to do rozwiązania tego problemu, nie potrzeba Ci własnego >> serwera WWW tylko dobrze przemyślany skrypt. > > ok. to powiedz jak to zrobic ;) Generalnie: bierzesz jakiś język skryptowy ruby, python, cokolwiek w czym lubisz pisać, najlepiej wysokiego poziomu. Do np. pythona są narzędzia pozwalające zrobić ze skryptów .exe, które już byłoby przenośne (pod windowsami przynajmniej). Do tego piszesz interfejs w czym chcesz. Korzystasz z bazy danych, jakiej chcesz, byle też była przenośna, wymienione przeze mnie sqlite powinno się nadawać. Każdy z tych języków ma biblioteki, które pozwolą Ci wysłać coś gdzieś przez FTP. Generalnie: masz przenośny programik, on ma interfejs do wklepywania/edycji rekordów w bazie, potem masz przycisk GENERUJ i on te rekordy ubiera w odpowiedniego HTML i wysyła po FTP na jakiś serwer. Możemy tutaj próbować odpowiadać na konkretne problemy, jeśli na jakieś trafisz i na tej grupie jeśli akurat wybierzesz rubiego. Ogółu wiedzy, która jest potrzebna żeby te komponenty połączyć ze sobą i opracować to jakoś sensownie nie da się streścić w poście. Poza tym generalnie, z zasady takie całościowe rozwiązania robię za pieniądze. m.
Re: serwer WWW
Author: Kazimierz Trewiń
Date: Thu, 27 Mar 2008 07:26
Date: Thu, 27 Mar 2008 07:26
36 lines
2730 bytes
2730 bytes
>> Chodzi o to by uzywac interface jak z ruby on rails do tworzenia >> bloga. ale potem chce wygenerowac tego bloga statycznie. Pliki html na >> dysku. > > To jest zupełnie bez sensu. Blog z def. jest aplikacją dynamiczną. > Równie dobrze możesz napisać zwykły blog (choć szybciej jest użyć > gotowego softu, np. http://www.typosphere.org/) i potem zapuścić wget'a > (czy inny "teleporter") aby zrobił statyczną kopię serwisu. Jest to jakis pomysł i właściwie tak to wygląda. Niestety do mojego zastosowania potrzebuję jeszcze co się zmieniło. Trzeba więc generowac i porównywać. Miałem nadzieję, że jeśli będę inteligentnie generował to omine ten krok. >> nie ma znaczenia. chodzi o to by bylo latwe i male. a mdbc uzywa i >> mysql i inne bazy ;) > > Małe i łatwe jest SQLite. mdbc to jakaś ciężka pomyłka. Powiem tak. ma to działac na pendrive. Na czyms co jest niezależne. wkladam do komputera bez ruby i uruchamiam program . w przegladarce wpisuje dane. generuje i zapisuje do sieci. >>> Poza tym w ogóle nie rozumiem, jaki jest sens pisania takiego >>> "portable" serwera WWW do bloga? >> >> Sens jest prosty. Chce miec bloga. Ale moj serwer obsluguje tylko >> zwykle strony html statyczne (przegladarka nie obsluguje JScriptu.) > > A co to za hosting gdzie serwują tylko statyczne pliki? Jakiś nonsens. I > niby jak chcesz zaimplementować dodawanie komentarzy? Na statycznych > plikach możesz zapomnieć. Uwierz mi, że jeden z najlepszych. Komentarze będą, ale do tego jeszcze trochę czasu musi minąć. Jest specjalna biblioteka do tego.
Re: serwer WWW
Author: Kazimierz Trewiń
Date: Thu, 27 Mar 2008 07:33
Date: Thu, 27 Mar 2008 07:33
24 lines
2160 bytes
2160 bytes
edek pisze: > Generalnie: masz przenośny programik, on ma interfejs do > wklepywania/edycji rekordów w bazie, potem masz przycisk GENERUJ i on te > rekordy ubiera w odpowiedniego HTML i wysyła po FTP na jakiś serwer. mniej wiecej dobrze, tylko te ftp nie potrzebne musze miec tylko katalog z danymi. > Możemy tutaj próbować odpowiadać na konkretne problemy, jeśli na jakieś > trafisz i na tej grupie jeśli akurat wybierzesz rubiego. Ogółu wiedzy, > która jest potrzebna żeby te komponenty połączyć ze sobą i opracować to > jakoś sensownie nie da się streścić w poście. szkoda. Wydawało mi się, że taki blog jest gotowy. Wlasnie w ruby. Dlaczego chcialem to zrobic tak? Właśnie dlatego, ze sa gotowe bajery typu tagi, kalendarze itp. > Poza tym generalnie, z zasady takie całościowe rozwiązania robię za > pieniądze. ;) to miłe. Szukam jakiś rozwiązań. sam opis to mniej wiecej wiem jak ma to działać. Ale pisać od poczatku nie ma sensu. dlatego pytam co najlepiej np. przerobic. Jaki gotowy program.
Re: serwer WWW
Author: edek
Date: Thu, 27 Mar 2008 08:32
Date: Thu, 27 Mar 2008 08:32
15 lines
1477 bytes
1477 bytes
>>> nie ma znaczenia. chodzi o to by bylo latwe i male. a mdbc uzywa i >>> mysql i inne bazy ;) >> >> Małe i łatwe jest SQLite. mdbc to jakaś ciężka pomyłka. > > Powiem tak. ma to działac na pendrive. Na czyms co jest niezależne. > wkladam do komputera bez ruby i uruchamiam program . w przegladarce > wpisuje dane. generuje i zapisuje do sieci. No to sqlite jest jak znalazł. Jak to ma działać na kompie bez ruby itd. to skłaniałbym się jednak ku stworzeniu normalnej aplikacji stand-alone. m.
Re: serwer WWW
Author: Kazimierz Trewiń
Date: Thu, 27 Mar 2008 08:47
Date: Thu, 27 Mar 2008 08:47
42 lines
2504 bytes
2504 bytes
>> Powiem tak. ma to działac na pendrive. Na czyms co jest niezależne.
>> wkladam do komputera bez ruby i uruchamiam program . w przegladarce
>> wpisuje dane. generuje i zapisuje do sieci.
>
> No to sqlite jest jak znalazł.
>
> Jak to ma działać na kompie bez ruby itd. to skłaniałbym się jednak ku
> stworzeniu normalnej aplikacji stand-alone.
ale w ruby?
znalazłem taki oto przykład:
#!/usr/local/bin/ruby
require 'webrick'
include WEBrick
s = HTTPServer.new( :Port => 2000 )
class HelloServlet < HTTPServlet::AbstractServlet
def do_GET(req, res)
res.body = "<HTML>hello, world.</HTML>"
res['Content-Type'] = "text/html"
end
end
s.mount("/hello", HelloServlet)
trap("INT"){ s.shutdown }
s.start
______________
Rzumiem, ze jesli teraz otworze plik /hello to dostane kawałek funkcj o
nazwie do_GET i w sumie to by chyba wystarczyło.
Wystarczy jakos to podpiąć do standardowych procedur rubyoR i powinno
działać czyz nie? Nie znam sie na ruby, ale pisałem troche w perlu i
duzo w PHP. Tu rozwiazanie dla mnie jest lepsze o tyle, ze nie znalazłem
serwera rozsadnego dla perla. A tu jest gotowiec. Tak mysle. Jedyne co
wiem o ruby to to co przejrzalem na prezentacji blog w 15 minut (wideo).
Po dodaniu prostego bloga wystarczy jak mniemam tylko dodac jeden
przycisk generuj i powinno zadziałać.
Re: serwer WWW
Author: edek
Date: Thu, 27 Mar 2008 09:17
Date: Thu, 27 Mar 2008 09:17
6 lines
1197 bytes
1197 bytes
Spróbuj może ściągnąć sobie mongrela na windowsy i zobaczyć, czy nie da się go w prosty sposób przerobić na portable. Jejku, ale Ty niepotrzebnie kombinujesz. m.
Re: serwer WWW
Author: Kazimierz Trewiń
Date: Thu, 27 Mar 2008 09:43
Date: Thu, 27 Mar 2008 09:43
19 lines
2005 bytes
2005 bytes
edek pisze: > Spróbuj może ściągnąć sobie mongrela na windowsy i zobaczyć, czy nie da > się go w prosty sposób przerobić na portable. > > Jejku, ale Ty niepotrzebnie kombinujesz. Webrick ma jakies przyklady wiec od niego zaczynalem. niestety dalej utknalem. nie wiem jak wziasc parametry np /index?a=test&b=tt mysle, ze gdyby mi sie udalo to zrobic + jakas prosta baza danych chocby i plikowa to by wystarczylo. Potem jesli bedzie dobrze dzialac nawet mozna skompilowac to jako program w C. Wystarczylo by uruchomic program polaczyc sie na odpowiednim porcie. pliki generowane by byly w katalogu i nawet osoba nie majaca zadnego doswiadczenia mogla by pisac bloga. Wazne by dalo sie to poprawiad w miare prosto. I uzywag gotowych bibliotek. Nie kazdy ma Apache i dostep do iego.
Re: serwer WWW
Author: Jaroslaw Zabiello
Date: Fri, 28 Mar 2008 04:59
Date: Fri, 28 Mar 2008 04:59
160 lines
6199 bytes
6199 bytes
Dnia 27-03-2008 o 09:43:29 Kazimierz Trewiń <ftrtuilhjk@hjkigj57g6fh.pl>
napisał(a):
> edek pisze:
>> Spróbuj może ściągnąć sobie mongrela na windowsy i zobaczyć, czy nie da
>> się go w prosty sposób przerobić na portable.
>> Jejku, ale Ty niepotrzebnie kombinujesz.
>
> Webrick ma jakies przyklady wiec od niego zaczynalem.
> niestety dalej utknalem. nie wiem jak wziasc parametry
> np /index?a=test&b=tt
Do bani ten Webrick. Zapomnij. Lepiej użyj porządnego, prostego i
wydajnego frameworka - Merb (http://merbivore.com/, instalacja: gem
install merb) Potrafi tworzyć projekty na 3 sposoby.
$ merb-gen app full_wypas
$ merb-gen app uproszczony -flat
$ merb-gen app minimalny --very-flat
Zwłaszcza ten ostatni jest ciekawy, bo jest nawet prostszy od tego
przykładu z Webrickiem. Serwer uruchamiasz przez: merb -I minimalny.rb
(zobacz merb --help po więcej parametrów). Domyślnie serwer podnosi się
na http://localhost:4000.
Cały kod serwera streszcza się do
Merb::Router.prepare do |r|
r.match('/').to(:controller => 'minimalny', :action =>'index')
end
class Minimalny < Merb::Controller
def index
"Dostałem parametry: #{params.inspect}"
end
end
Merb::Config.use { |c|
c[:framework] = {},
c[:session_store] = 'none',
c[:exception_details] = true
}
Wejście na http://localhost:4000/?a=test&b=tt wyświetli
Dostałem parametry: {"a"=>"test", "b"=>"tt", "action"=>"index",
"controller"=>"minimalny"}
> mysle, ze gdyby mi sie udalo to zrobic + jakas prosta baza danych chocby
> i plikowa to by wystarczylo.
SQLite (http://www.sqlite.org/) będzie tu doskonały, bo to baza plikowa
ale z pełnym dostępem do SQL i jest bardzo szybka. Musisz tylko
doinstalować obsługę SQlite dla Rubiego:
sudo gem install sqlite3-ruby
OK. Teraz pokaże ci krok po kroku jak szybko zmontować prostą aplikację.
Wpierw tworzymy projekt (w pełnej wersji, bo potem łatwiej z tym pracować)
$ merb-gen app myproj
Zostanie stworzony katalog myproj z różnymi plikami i katalogami w środku.
To jest szkielet aplikacji. I tak jest prostszy od tego co generują Rails.
Aby uaktywnić obsługę bazy danych, wejdź do pliku config/init.rb i
odkomentuj jedną linijkę, tak aby było:
use_orm :sequel
Tym samym Merb będzie pracował z Sequel (info:
http://code.google.com/p/ruby-sequel/). Znacznie uprości to pracę z bazą
SQLite i ułatwi ci ewentualne przepięcie aplikacji ze SQLite do MySQL czy
innej bazy.
Teraz przejdź do konsoli i odpal w katalogu projektu polecenie/skrypt
merb-gen
Merb już wie, że chcesz używać bazy, więc automatycznie stworzy ci teraz
plik konfiguracyjny config/database.sample.yml. Zmień jego nazwę na
database.yml. Domyślnie tworzone są tam ustawienia dla MySQL. Aby użyć
SQLite, zmień go na:
---
:development: &defaults
:adapter: sqlite3
:database: baza.db
:encoding: utf8
:test:
<<: *defaults
:database: baza-testowa.db
:production:
<<: *defaults
Teraz stworzmy jakiś przykładowy model danych z użytkownikami i kontroler
do ich zarządzania.
merb-gen resource user
Przejdź do pliku schema/migrations/001_user.rb i zmień go na
class UserMigration < Sequel::Migration
def up
create_table :users do
varchar :name, :unique => true
primary_key :id
end
end
def down
execute "DROP TABLE users"
end
end
(więcej o migracjach http://code.google.com/p/ruby-sequel/wiki/Migrations)
Będąc w katalogu projektu, odpal polecenie:
rake sequel:db:migrate
Zostanie stworzona baza (plik: baza.db) oraz tabela users. No to teraz
trochę się pobawmy interaktywną konsolą aby dodać jakieś dane do bazy.
$ merb -i
~ Loaded DEVELOPMENT Environment...
~ loading gem 'merb_sequel' from ...
~ Connecting to the 'baza.db' database on '' using 'sqlite' ...
~ Compiling routes...
~ Using 'share-nothing' cookie sessions (4kb limit per client)
>> User.create :name => 'Jarek'
=> #<User @values={:name=>"Jarek", :id=>1}>
>> User.create :name => 'Ewa'
=> #<User @values={:name=>"Ewa", :id=>2}>
>> User.all
=> [#<User @values={:name=>"Jarek", :id=>1}>, #<User
@values={:name=>"Ewa", :id=>2}>]
OK. Ostatni krok. Otwórz plik app/views/users/index.html.erb i wstaw:
<p>W bazie mam użytkowników o imionach:</h1>
<% for user in @users %>
<p><%= user.name %></p>
<% end %>
To wszystko! Odpal serwer z aplikacją za pomocą komendy: merb
(więcej: merb --help) i otwórz stronę http://localhost:4000/users
> Potem jesli bedzie dobrze dzialac nawet mozna skompilowac to jako
> program w C.
Nie można. To akurat jest kompletnie bez sensu. Nie ma potrzeby żadnej
kompilacji, wręcz to jest niemożliwe, bo Ruby jest interpreterem. Nie wiem
po co ci to. Jeśli już chcesz zapakować wszystko do jednego pliku to
lepiej, stworzyć javowy *.jar i odpalać to przez java -jar myproj.jar. Ale
to wymaga użycia JRuby.
--
Jarosław Zabiełło
http://blog.zabiello.com
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads