🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
12 messages
12 total messages Started by Kazimierz Trewiń Tue, 25 Mar 2008 11:58
serwer WWW
#997
Author: Kazimierz Trewiń
Date: Tue, 25 Mar 2008 11:58
12 lines
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
#998
Author: edek
Date: Wed, 26 Mar 2008 10:57
37 lines
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
#999
Author: Kazimierz Trewiń
Date: Wed, 26 Mar 2008 11:20
51 lines
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
#1000
Author: Jaroslaw Zabiello
Date: Wed, 26 Mar 2008 12:59
45 lines
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
#1007
Author: edek
Date: Wed, 26 Mar 2008 13:06
32 lines
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
#1001
Author: Kazimierz Trewiń
Date: Thu, 27 Mar 2008 07:26
36 lines
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
#1008
Author: Kazimierz Trewiń
Date: Thu, 27 Mar 2008 07:33
24 lines
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
#1002
Author: edek
Date: Thu, 27 Mar 2008 08:32
15 lines
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
#1003
Author: Kazimierz Trewiń
Date: Thu, 27 Mar 2008 08:47
42 lines
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
#1004
Author: edek
Date: Thu, 27 Mar 2008 09:17
6 lines
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
#1005
Author: Kazimierz Trewiń
Date: Thu, 27 Mar 2008 09:43
19 lines
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
#1006
Author: Jaroslaw Zabiello
Date: Fri, 28 Mar 2008 04:59
160 lines
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