eigan Skrevet 23. januar 2007 Del Skrevet 23. januar 2007 (endret) Hei Jeg har planer om å starte med å lære meg ruby, men jeg kommer først med noen spm. 1. Hva er fordelen med ruby fremfor andre programmeringspråk 2. Hva kan ruby brukes til? Takker for svar Endret 29. januar 2007 av Mr Chief Lenke til kommentar
blacktower Skrevet 24. januar 2007 Del Skrevet 24. januar 2007 Hva er fordelen med ruby fremfor andre programmeringspråk? Det er et veldig bredt spørsmål. Dersom du kjenner noen andre språk fra før kan jeg kanskje sammenligne Ruby og det språket. Men, for å ta noe: * Ruby er for mennesker: Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run faster. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves. * Ruby er morsomt og lett å lære. Dersom du forstår prinsippene bak objektorientert programming kan du regne med å føle deg komfortabel på kort tid. Men Ruby er på ingen måte "bare" for nybegynnere. “Good for learning, better for improving, and the first choice for masters." * Ruby er enkelt! I motsetning til for eksempel C++ som er fryktelig komplisert, eller PHP som er et rot uten like. * Ruby er kompakt. Du fokuserer på problemstillingen og ikke byråkratiet. Har du programmert i C/C++/Java eller lignende tipper jeg du har skrevet følgende mange, mange ganger: C/C++/Java: for(i = 0; i < someSize - 1, i++) { Type a = someList[i] ... } Ruby: some_list.each { |a| ... } Med ruby har du skrevet din siste for-loop. *I motsetning til C++/Java/C#/PHP og andre språk som påstår å være objektorientere er faktisk alt i Ruby et objekt. >> 5.even? => false * Ruby leses som engelsk. Selv om du aldri har programmert før skjønner du antageligvis hva som skjer her: 4.times { puts "Hello World" } * Ruby har all funksjonalitet man forventer av et moderne dynamisk programmeringsspråk: Ruby allows you to program procedurally (defining functions/variables outside classes makes them part of the root, 'self' Object), with object orientation (everything is an object) or functionally (it has anonymous functions, closures, and continuations; statements all have values, and functions return the last evaluation). It has support for introspection, reflection and meta-programming, as well as support for threads. Ruby features dynamic typing, and supports parametric polymorphism. Hva kan ruby brukes til? Det meste. Igjen er det bedre om du har noen konkrete problemstillinger. Lenke til kommentar
eigan Skrevet 24. januar 2007 Forfatter Del Skrevet 24. januar 2007 Takker for fantastiske svar. La oss si jeg skal lage en hjemmeside i ruby. Blir det da noe slikt: print "<html>" print "<head>" print "<title>Min ruby side</title>" print "</head>" print "<body>" --En funksjon..som f.eks 4.times { puts "Hello World" } print "</body>" print "</html>" For jeg kan ikke se at det er en rask måte å gjøre det på... Lenke til kommentar
Gjest Slettet-8fx0y6VV Skrevet 24. januar 2007 Del Skrevet 24. januar 2007 I et nøtteskall er det slik du lager en internett side med alle programmeringsspråk, men heldigvis er det biblioteker som er laget for å gjøre livet lettere for oss. Du kan jo alltids ta en titt på Rails, som er det mest kjente biblioteket til Ruby. Espen Lenke til kommentar
eigan Skrevet 24. januar 2007 Forfatter Del Skrevet 24. januar 2007 Takker for svar. Hvor finner jeg bra tutorials? Lenke til kommentar
olear Skrevet 24. januar 2007 Del Skrevet 24. januar 2007 Takker for fantastiske svar. La oss si jeg skal lage en hjemmeside i ruby. Blir det da noe slikt: print "<html>" print "<head>" print "<title>Min ruby side</title>" print "</head>" print "<body>" --En funksjon..som f.eks 4.times { puts "Hello World" } print "</body>" print "</html>" For jeg kan ikke se at det er en rask måte å gjøre det på... #!/usr/bin/env ruby require 'cgi' cgi = CGI.new() puts cgi.header("type"=>"text/html") puts '<html>' puts '<head>' puts '<title>Min ruby side</title>' puts '</head>' puts '<body>' 4.times { puts '<p>Hello World</p>' } puts '</body>' puts '</html>' Lenke til kommentar
eigan Skrevet 24. januar 2007 Forfatter Del Skrevet 24. januar 2007 Takk! Hvordan åpner jeg den filen? I nettleser eller command? fikk denne linjen når jeg åpnet i command: (offline mode: enter name=value pairs on standard input) Lenke til kommentar
olear Skrevet 24. januar 2007 Del Skrevet 24. januar 2007 Du må ha en webserver, enten Apache eller Lighttpd. Disse må da ha støtte for Ruby gjennom CGI eller FCGI. Anbefaler Lighttpd. Lenke til kommentar
eigan Skrevet 24. januar 2007 Forfatter Del Skrevet 24. januar 2007 Jeg har Lighttpd Hvordan går jeg frem? Lenke til kommentar
olear Skrevet 24. januar 2007 Del Skrevet 24. januar 2007 Eksempel på config (/etc/lighttpd/lighttpd.conf): server.modules = ( "mod_access", "mod_accesslog", "mod_auth", "mod_cgi" )server.port = 80 server.tag = "lighttpd" server.username = "lighttpd" server.groupname = "lighttpd" server.document-root = "/var/lighttpd/pages/" server.errorlog = "/var/log/lighttpd/error.log" accesslog.filename = "/var/log/lighttpd/access.log" index-file.names = ( "index.rb", "index.html", "index.htm", "index.xml" ) static-file.exclude-extensions = ( ".rb", ".rhtml" ) cgi.assign = ( ".rb" => "/usr/bin/ruby" ) url.access-deny = ( "~", ".inc" ) Dette er bare et eksempel, du må justere etter behov og installasjon. Lenke til kommentar
eigan Skrevet 24. januar 2007 Forfatter Del Skrevet 24. januar 2007 (endret) Da kan jeg legge filene hvor jeg vil, så åpne i en nettleser? Bruker du mac? Finner ikke den filen i den mappen...Fant den ett annet sted Endret 24. januar 2007 av Mr Chief Lenke til kommentar
olear Skrevet 24. januar 2007 Del Skrevet 24. januar 2007 Filen må ligge en plass webserveren har tilgang, f.eks /var/lighttpd/pages/. Start så serveren og pek nettleseren til http://localhost/dinfil.rb. Bruker ikke Mac. Lenke til kommentar
eigan Skrevet 25. januar 2007 Forfatter Del Skrevet 25. januar 2007 (endret) Har det noe å si om jeg allerede har en webserver på dataen? Jeg har innstallert Xamp, den har jo Apache... Når jeg da skriver localhost// kommer jeg til xamp... Men alle filene jeg har innstallert, ligger ikke langt inn i skjulte mapper på dataen, alle filene ligger i en mappe som er her Meg/src/ Jeg har en annen skjult mappe på dataen, den heter /usr/ der ligger Ruby mysql og andre diverse ting. Jeg kan ta bilde av det år jeg kommer hjem fra skolen... Takker for svar ! Endret 25. januar 2007 av Mr Chief Lenke til kommentar
eigan Skrevet 25. januar 2007 Forfatter Del Skrevet 25. januar 2007 (endret) Jeg tror jeg har klart å fikse det meste nå... Jeg kommer inn til localhost:2048 der ser jeg filene som er i den mappen, men jeg kan ikke åpne noen av dem...får 500 - Internal Server Error dette er config filen... Klikk for å se/fjerne innholdet nedenfor debug.log-request-handling = "enable" debug.log-condition-handling = "enable" server.document-root = "/Users/Einar/src/lighttpd-1.4.11/tests/docroot/www/" server.pid-file = "/Users/Einar/src/tmp/lighttpd/lighttpd.pid" ## 64 Mbyte ... nice limit server.max-request-size = 65000 ## bind to port (default: 80) server.port = 2048 ## bind to localhost (default: all interfaces) server.bind = "localhost" server.errorlog = "/Users/Einar/src/lighttpd-1.4.11/logs/lighttpd.error.log" server.name = "lighttpd" server.tag = "lighttpd" server.dir-listing = "enable" #server.event-handler = "linux-sysepoll" #server.event-handler = "linux-rtsig" #server.modules.path = "" server.modules = ( "mod_rewrite", "mod_setenv", "mod_secdownload", "mod_access", "mod_auth", # "mod_httptls", "mod_status", "mod_expire", "mod_simple_vhost", "mod_redirect", # "mod_evhost", # "mod_localizer", "mod_fastcgi", "mod_cgi", "mod_compress", "mod_userdir", "mod_ssi", "mod_accesslog" ) server.indexfiles = ( "index.php", "index.html", "index.htm", "default.htm" ) ######################## MODULE CONFIG ############################ ssi.extension = ( ".shtml" ) accesslog.filename = "/Users/Einar/src/lighttpd-1.4.11/logs/lighttpd.access.log" mimetype.assign = ( ".png" => "image/png", ".jpg" => "image/jpeg", ".jpeg" => "image/jpeg", ".gif" => "image/gif", ".html" => "text/html", ".htm" => "text/html", ".pdf" => "application/pdf", ".swf" => "application/x-shockwave-flash", ".spl" => "application/futuresplash", ".txt" => "text/plain", ".tar.gz" => "application/x-tgz", ".tgz" => "application/x-tgz", ".gz" => "application/x-gzip", ".c" => "text/plain", ".conf" => "text/plain" ) $HTTP["host"] == "cache.example.org" { compress.cache-dir = "/Users/Einar/src/lighttpd-1.4.11/tests/docroot/www/cache/compress/" } compress.filetype = ("text/plain", "text/html") setenv.add-environment = ( "TRAC_ENV" => "tracenv", "SETENV" => "setenv") setenv.add-request-header = ( "FOO" => "foo") setenv.add-response-header = ( "BAR" => "foo") $HTTP["url"] =~ "\.pdf$" { server.range-requests = "disable" } fastcgi.debug = 0 fastcgi.server = ( ".php" => ( ( "host" => "127.0.0.1", "port" => 1026, "broken-scriptfilename" => "enable" ) ), "/prefix.fcgi" => ( ( "host" => "127.0.0.1", "port" => 1026, "check-local" => "disable", "broken-scriptfilename" => "enable" ) ) ) cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl", ".py" => "/usr/bin/python", ".rb" => "/usr/bin/ruby" ) userdir.include-user = ( "jan" ) userdir.path = "/" ssl.engine = "disable" ssl.pemfile = "server.pem" $HTTP["host"] == "auth-htpasswd.example.org" { auth.backend = "htpasswd" } auth.backend = "plain" auth.backend.plain.userfile = "/Users/Einar/src/lighttpd-1.4.11/tests/lighttpd.user" auth.backend.htpasswd.userfile = "/Users/Einar/src/lighttpd-1.4.11/tests/lighttpd.htpasswd" auth.require = ( "/server-status" => ( "method" => "digest", "realm" => "download archiv", "require" => "group=www|user=jan|host=192.168.2.10" ), "/server-config" => ( "method" => "basic", "realm" => "download archiv", "require" => "valid-user" ) ) url.access-deny = ( "~", ".inc") url.rewrite = ( "^/rewrite/foo($|\?.+)" => "/indexfile/rewrite.php$1", "^/rewrite/bar(?:$|\?(.+))" => "/indexfile/rewrite.php?bar&$1" ) expire.url = ( "/expire/access" => "access 2 hours", "/expire/modification" => "access plus 1 seconds 2 minutes") #cache.cache-dir = "/Users/Einar/src/lighttpd-1.4.11/tests/docroot/www/cache/" #### status module status.status-url = "/server-status" status.config-url = "/server-config" $HTTP["host"] == "vvv.example.org" { server.document-root = "/Users/Einar/src/lighttpd-1.4.11/tests/docroot/www/" secdownload.secret = "verysecret" secdownload.document-root = "/Users/Einar/src/lighttpd-1.4.11/tests/docroot/www/" secdownload.uri-prefix = "/sec/" secdownload.timeout = 120 } $HTTP["host"] == "zzz.example.org" { server.document-root = "/Users/Einar/src/lighttpd-1.4.11/tests/docroot/www/" server.name = "zzz.example.org" } $HTTP["host"] == "no-simple.example.org" { server.document-root = "/Users/Einar/src/lighttpd-1.4.11/tests/docroot/www/" server.name = "zzz.example.org" } $HTTP["host"] !~ "(no-simple\.example\.org)" { simple-vhost.document-root = "pages" simple-vhost.server-root = "@SRCDIR@/tmp/lighttpd/servers/" simple-vhost.default-host = "www.example.org" } $HTTP["host"] =~ "(vvv).example.org" { url.redirect = ( "^/redirect/$" => "http://localhost:2048/" ) } $HTTP["host"] =~ "(zzz).example.org" { url.redirect = ( "^/redirect/$" => "http://localhost:2048/%1" ) } $HTTP["host"] =~ "(remoteip)\.example\.org" { $HTTP["remoteip"] =~ "(127\.0\.0\.1)" { url.redirect = ( "^/redirect/$" => "http://localhost:2048/%1" ) } } $HTTP["remoteip"] =~ "(127\.0\.0\.1)" { $HTTP["host"] =~ "(remoteip2)\.example\.org" { url.redirect = ( "^/redirect/$" => "http://localhost:2048/%1" ) } } $HTTP["host"] =~ "bug255\.example\.org$" { $HTTP["remoteip"] == "127.0.0.1" { url.access-deny = ( "" ) } } $HTTP["referer"] !~ "^($|http://referer\.example\.org)" { url.access-deny = ( ".jpg" ) } # deny access for all image stealers $HTTP["host"] == "referer.example.org" { $HTTP["referer"] !~ "^($|http://referer\.example\.org)" { url.access-deny = ( ".png" ) } } $HTTP["cookie"] =~ "empty-ref" { $HTTP["referer"] == "" { url.access-deny = ( "" ) } } Endret 25. januar 2007 av Mr Chief Lenke til kommentar
eigan Skrevet 29. januar 2007 Forfatter Del Skrevet 29. januar 2007 (endret) --GLEM DET-- ENDERLIG! har fått det til å funke * Kjempe glad!! * EDIT: Det går tregt da...Noen tips? Endret 29. januar 2007 av Mr Chief Lenke til kommentar
eigan Skrevet 30. januar 2007 Forfatter Del Skrevet 30. januar 2007 (endret) Det går tregt å laste inn siden, selv om det er på min egen data, det kommer inn en error melding i error logen, (Kan vise den når jeg kommer hjem fra skolen). Det er noe om at den ikke fikk respons, så måtte den vente i 3xx sekunder... Jeg tror det er noe med cgi eller ruby, fordi det går fint med .html filer. EDIT: Feil.mld : (server.c.1148) NOTE: a request for /side.rb timed out after writing 258 bytes. We waited 360 seconds. If this a problem increase server.max-write-idle Jeg får ikke feil.mld av config filen..tror ikke det er noe feil der, men det kan være noe feil med ruby. Jeg bruker ruby versjonen som ligger i /usr/bin/ruby hvis jeg bytter den, til noe som ikke finnes, så vil den ikke laste siden engang... Hva skal jeg skrive i config filen for å få fastcgi? Endret 30. januar 2007 av Mr Chief Lenke til kommentar
Frank2004 Skrevet 30. januar 2007 Del Skrevet 30. januar 2007 (endret) Beste måte å gjøre webutvikling i Ruby akkurat nå er nok med Rails-rammeverket. Finnes enormt mye stoff på google, så jeg skal ikke gå inn på hvordan det funker, men bare vise deg hvor enkelt det er å komme i gang. Hvis du alt har ruby+rubygems installert, skriver du følgende for å legge inn rails: gem install -y rails For å opprette et prosjekt: cd mineprosjekter rails mittnyeprosjekt Beste server til utvikling er webrick, som følger med Ruby, eller evt. mongrel, som installeres som en gem. For å starte serveren: cd (mineprosjekter/**)mittnyeprosjekt ruby script/server Bytt ut / med \ her og der hvis du sitter på windows. Det var det, nå kan du peke nettleseren på http://localhost:3000/. Bare avinstaller lighty, apache, fastcgi og whatever, dette er ting du først trenger tenke på når du skal sette opp en produksjonsserver. (Fjern mysql også, forresten -- jo før du bytter til postgres, jo mindre bundet blir du til lekedatabasen som ikke følger standarder..) Anbefaler david black's "ruby for rails" hvis du vil ha en skikkelig, og rimelig - i forhold til å kjøpe separate bøker, intro til språket og rammeverket. **) avhengig av hvilken katalog du er i, selvsagt Endret 30. januar 2007 av Frank2004 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå