Viser arkivet for stikkord ruby

Why The Lucky Stiff no more

For de som ikke har fått det med seg har altså _why slettet seg fra the Internets.

En god porsjon rimelige ruby-bøker til salgs

God aften. I en kombinasjon av at jeg er i ferd med å flytte, og forsøker å bli totalt papirløs (Kindle ftw), så selger jeg endel ruby/programmeringsbøker til en rimelig penge.

Design Patterns – 150 kr – Must-have for enhver programmerer.

Patterns of Enterprise Application Architecture – 150 kr
Også en av de helt store. Mye patterns relevant til Rails, spesielt ActiveRecord og DataMapper (som orm’et DM er basert på).

Design Patterns in Ruby – 100 kr
Programming Collective Intelligence – 100 kr
The Rails Way – 100 kr
Advanced Rails – 100 kr
The Ruby Way – 100 kr
Don’t make me think – 100 kr – Veldig bra om gui-design.
Deploying Rails Applications – 50 kr
Practices of an Agile developer – 75 kr
Ship it! – 50 kr

Selges samlet for 700 kr hvis noen er interessert. Alle er i svært god stand. Ta kontakt på sindre [at] identu [dot] no eller telefon 412 42 597! Kan hentes på majorstuen eller leveres sentralt i Oslo. Stikker av til New York om 2 uker, så håper på å få solgt unna før det :)

Mvh Sindre

RubyFoo, London

Last year RubyFools toured in Copenhagen and Oslo and this year it’s going to hit the big city of London under the name RubyFoo.

The concept is simple – two days worth of thought provoking conference with a driving theme..
This year our theme will be Communicative Programming where we will ask questions such as “when, why and how can I make Ruby talk my language?”.

The conference covers two days, one for presentations from leading experts within the Ruby community and another for collaborative hacking giving you a chance to hang out with Ruby geeks, experts, and curious newcomers in a casual and laid back atmosphere. So come, listen, learn, contribute and share the RubyFoo.

Martin Fowler om Ruby-prosjekter i ThoughtWorks

Martin Fowler (trenger vel ingen introduksjon), har skrevet en bra artikkel om utviklingen av Ruby-prosjekter i ThoughtWorks.

Han går gjennom litt statistikk, noen av fordommene og problemer / løsningsforslag. Alt i alt en meget god lesning!

Oppsummering av Ruby Wednesday i mai

Da var Ruby Wednesday for mai over, og det var storarta moro. Godt oppmøte denne gangen (beste jeg har vært med på) og flere interssante tema og diskusjoner. Ikke minst ble det tid til en liten pils for å runde av kvelden.

Johan presenterte Gitorious – alt fra hvordan Johan lanserte Gitorious samme uke som ikke ukjente Github, til det nylig lanserte samarbeidet med Nokia/Qt. Johans slides overlevde desverre ikke kvelden, men du kan lese historien på bloggen hans

August fulgte opp med et par korte presentasjoner. Den første handlet om et verktøy han har laget, Pushmaster Pushmaster gjør det enkelt å lytte til Github “receive hooks”. I praksis betyr det at du enkelt kan kjøre vilkårlig Ruby-kode idet Github mottar kode, og du har tilgang til masse data – commit, branch, author osv, som du kan bruke til å velge hva som skal skje. Det konkrete eksempelet August viste var å deploye apper idet Github mottok kode på en gitt branch. Les mer på Augusts blogg

I neste presentasjon viste August hvordan man kan deploye kode til Heroku Heroku har et kommandolinjebibliotek som gjør det ekstremt enkelt å opprette nye konti, deploye sites og holde hostingbiten i orden. Vi diskuterte litt rundt muligheter og pris på dette, og det kan se ut til at Heroku:

  • Sannsynligvis passer enkle apper best – man har liten kontroll (ingen direkte adgang til filsystemet feks)
  • Ganske fort blir dyrt
  • Gjør det ekstremt enkelt å skalere opp – bokstavelig talt kan du dra i en slider for å få mer minne, CPU osv

Hvis noen har praktisk erfaring med Heroku så del det gjerne!

Til slutt ga Knut Stenmark en interessant presentasjon av hvordan han har fått triggere til å fungere i et Rails-prosjekt han jobber med. Han ga en rundtur i datamodellen, og hvorfor han ønsket å/måtte bruke triggere. Deretter så vi litt på hvorfor MySQL ikke kunne løse dette problemet, mens PostgreSQL kan. Til slutt gikk Knut inn på det som var det egentlige problemet: å få triggerne til å fungere i testmiljøet. `rake db:test:clone` plukker ikke med triggerne fordi de ikke finnes i schema.rb.

Det var noe diskusjon rundt hvorvidt det konkrete tilfellet faktisk krevde triggere, men det var veldig nyttig å se hvordan Knut hadde fått triggerne sine på plass i test.

Jeg skulle gjerne delt Knuts presentasjon – men er det mulig å legge ut filer på irb.no?

Alt i alt en vellyket aften. Om litt over to uker er det siste samling før sommeren, da i form av en grillfest. Mer info kommer, sees da!

Ruby Wednesday mai - program klart

Kalenderoppføringen for Ruby Wednesday 27. mai er oppdatert. Se frem til å lære litt mer om Gitorious og prosessen bak, samt en fin diskusjon om produksjonsmiljøer, ytelse og skalering!

Se programmet

Hva slags køing bruker dere?

Jeg har begynt å se på RabbitMQ og AMQP for å køe oppgaver på clusteret vårt. Hver maskin skal prosessere oppgaver som stort sett består av metodekall på klasser i Rails-applikasjonen. Har noen her noen erfaring med de diverse rammeverkene som finnes for å abstrahere akkurat dette?

Jeg har sett på Workling, men den er temmelig nært knyttet til det lite anerkjente Starling-prosjektet, så jeg er skeptisk til å ta det i bruk. Finnes det noe bedre?

Ruby Bergen

Heisann!
Satt på pub i går med ein kompis og lurte på hvorfor det ikke er en Ruby gruppe i Bergen.
Bur du i Bergen? Kjenner noen i Bergen som kunne vært intressert i dette?
Vi er iallefall to personer, men kunne vært greit med flere.
Kommentér!

Mvh,
AmundS

Enkel og godt betalt jobb over 2 dager! Tjen 15 000.

Hei! Søker en Ruby-koder til å fullføre et lite nettsideprosjekt. Vår forrige koder kunne dessverre ikke være med lenger, og nå trenger vi akutt en som kan legge siste hånd på verket. Lønna er 15 000 kr og arbeidet er estimert til å ta ca 2 dager.

Siden er kodet i ruby on rails, html/css og javascript. Servern den ligger på er en linux debian server med apache 2, mongrel clustring
og postgresql. Selve løsningen er basert på juggernaut, I18n, globalize2 og et par andre
plugins.

Høres dette interessant ut for deg eller noen du kjenner? Ta kontakt på 922 900 59 snarest! Haster!

E-postbehandling i Ruby

Jobben min sender ut nyhetsbrev hver dag, til 12000 personer. Jeg har laget et script for behandling av returmeldinger fra e-postservere, altså meldinger man får når en mottaker ikke eksisterer lenger, har full innboks e.l.

Men e-post-parsing er ikke rett fram, spesielt ikke når servere sender tilbake meldinger med nyhetsbrevet vedlagt før meldingen, f.eks.

Jeg vil gjerne finne en gem som gjør prosessering enklest mulig. Jeg vil kunne stappe en streng med e-postdata inn i et objekt og deretter kunne få tak i avsender, dato, melding og vedlegg.

Problemet mitt er at det finnes en del der ute, og forsøk på å få oversikt har ikke vært helt vellykka.

Noen som kan gi meg tips til god gem?

Ruby 1.9.1 og bytekode-magi

Jeg gleder meg til Ruby 1.9.1 er ferdig og jeg kan gjøre ting som dette:

  code = RubyVM::InstructionSequence.compile("2+2").to_a
  HTTPClient.new.post("http://example.com/run_code", 
    code.to_json)

og deretter i den andre enden, i f.eks. Rails:

  def run_code
    code = RubyVM::InstructionSequence.load(
      JSON.load(params[:code]))
    code.eval
  end

Denne koden fungerer i dag om du patcher iseq.c litt, ved å slå på load, som har blitt kommentert ut da det foreløpig ikke finnes logikk for å verifisere at bytekoden er korrekt. (Jeg har faktisk lagt inn en bugrapport om at dette er teit.)

Bytekode-funksjonaliteten er helt nødvendig for å legge Ruby-støtte til map-reduce-rammeverket Disco. Disco lar deg uttrykke map-reduce-oppgaver i ren Python, ved at selve bytekoden til oppgavene disassembles og sendes til en Erlang-demon som deretter utfører koden på mange maskiner. Her er et eksempel med Python som lager en tabell over ord-frekvenser fra en inputfil:

  import disco

  def fun_map(e, params):
          return [(w, 1) for w in re.sub("\W", " ", e).lower().split()]

  def fun_reduce(iter, out, params):
          s = {}
          for k, v in iter:
                  if k in s:
                          s[k] += int(v)
                  else:
                          s[k] = int(v)
          for k, v in s.iteritems():
                  out.add(k, v)

  results = disco.job("disco://localhost:5000", "wordcount",
              ["http://localhost/text-block-1", "http://localhost/text-block-2"],
              fun_map, reduce = fun_reduce, nr_maps = 100, sort = False)

  for key, value in disco.result_iterator(results):
          print key, value

Med Ruby 1.9 vil vi kunne gjøre det samme.

Denne bytekodefunksjonaliteten burde også åpne for å enklere kunne uttrykke map-reduce-jobber med CouchDB, for eksempel. Den vil også potensielt kunne brukes til å lage penere asynkron-jobb-kø-prosessering á la Starling. Jeg kan tenke meg noe slikt:

  JobQueue.run_later do
    require "#{RAILS_ROOT}/config/environment"
    ComplexProcessing.execute
  end

Her kan run_later disassemble blokken, lagre den i en kø, som så utføres av jobb-systemet.

Skjemavalidering

Heisann,

mitt første innlegg her, og jeg er redd det er skamløs selvpromotering… Jeg jobber med en Rails-plugin og tenkte at dette var beste stedet å henvende seg for litt innspill.

For en liten stund siden tilgjengeliggjorde jeg en Javascript-dings for å gjøre unobtrusive skjemavalidering på klienten (Validatious og annonseringen).

Nå har jeg begynt å jobbe med en plugin til Rails som eksponerer valideringer i domenemodellen direkte til dette klientsidebiblioteket, med den effekt at man kan få unobtrusive skjemavalidering på klienten uten å duplisere valideringslogikken. Det gjenstår en del ting før pluginen er brukandes, foreløpig er det mest for å se at det fungerer.

Grunnen til at jeg skriver her er selvfølgelig fordi jeg ønsker tilbakemeldinger på pluginen – hva som kan være nyttig, hva som ikke er det, hva som er dårlig osv. En beskrivelse av det jeg har sålangt finnes på bloggen min

Hva tror folk?

Ruby tuesday neste tirsdag?

Hei!

Vi i Skalar sitter igjen med et veldig positivt inntrykk etter vår første Ruby Tuesday, og ønsker å gjenta dette så ofte som mulig :)
Er det noen som kunne tenke seg å ta en ny samling neste tirsdag? (Det blir altså 18.nov) Hvis det skulle passe dårlig å holde dette hos Shortcut, har vi lokaler disponible.

Hvis det ikke er noen som har mulighet/ønsker å holde en keynote – er det jo mulighet for å heller enes rundt flere små temaer som folk er interessert i å diskutere?

Ruby 1.9 og Rails?

Er det noen her som kjører Ruby 1.9 og Rails på produksjonsservere og har noen erfaringer å dele? Jeg mener å ha hørt at Rails nå kjører fint på 1.9, men jeg finner ingen oppdaterte artikler som bekrefter dette, og jeg vil gjerne få et bedre inntrykk av hvorvidt det overhodet er noen vits i å prøve.

Charles Nutters foredrag tilgjengelig som MP3

Vi har nå fått lagt ut lyden fra Charles Nutters foredrag om JRuby på mandag på nett. MP3-en finnes på Amazon S3 på denne adressen

Vi har enda ikke fått tak i presentasjonen/koden Charlie brukte, men lyden har vi hvertfall!

Dugnad: RubyOnRails.no

rubyonrails.no

Hei

Det har pågått en lang diskusjon i denne tråden om en bra norsk rubyonrails side.

Fordi den tråden begynte et helt annet sted, setter jeg opp en ny!

For å oppsummere:

Da jeg kom til rails viste jeg for eksempel ikke hva et array, hash eller variabel var. Helt grønn, med andre ord. Jeg har lært ved å lese bøker, se filmer og søke på nettet, alt på engelsk. Selv om det er mange gode pedagoger der ute, har noen enkle prinsipper tatt lang tid å få inn under huden. Derfor er det veldig befriende å finne litt info på norsk. Jeg snublet over wikiboka til August Lilleaas og senere Ståle Zerener Haugnæss Introduksjon_til_Rails.

Det finnes mer, så jeg tenkte vi må samle det på et sted for norske rubister og railsere.

Jeg fikk tak i Torbjørn Tiltnes som eier domenet rubyonrails.no. Han er også relativt ny til rubyonrails (Jobber med ASP til daglig…..) og hadde i utgangspunktet den samme ideen om en norsk side for rubyonrails da han kjøpte domenet.

Vi tok en nesten 3 timers kaffe i dag og diskuterte hvordan vi kan få til dette prosjektet.

Fordi dette er et dugnadsprosjekt, er det veldig lett å ta seg vann over hodet. Vi bør derfor dele det opp slik at vi lager det viktigste først og fyller på med ting etterhvert.

I første omgang bør vi ha:

  • En blogg med kommentarer (For de litt med avanserte temaene)
  • Statiske sider med innføringer, linker til ressurser og generell info.
  • Video/lyd fra rubytuesday, andre samlinger og tutorials (hvis noen vil lage)

I andre omgang tenkte vi at vi kunne legge til

  • Forum
  • Railsjobb ala railswork
  • Et område hvor railsbaserte firmaer kan presentere seg selv ( Ja, gratis reklame mot arbeidstakere og kanskje til og med mot kunder)

Det vi er i gang med:

  • Marius Mathiesen tror han kan få til litt plass på en shortcutserver
  • Torbjørn Tiltnes har det flotte domenet og et flott design
  • Jeg har begynt på appen for CMS og blogg

Er det noen som har lyst til å bidra? For eksempel begynne å skrive innlegg i bloggen, veiledninger eller kode til appene vi trenger.

Har dere noen ideer? Virker planen god eller bør vi gjøre ting på en annen måte eller i en annen rekkefølge?

Nordisk konferanse på gang

På Railsconf europe forrige uke diskuterte en gjeng skandinaver muligheten for å arrangere en nordisk konferanse om Ruby/Rails rett over nyttår. DHH er i ferd med å flytte til Sverige i noen måneder, og det burde derfor være mulig å få ham til å presentere på en konferanse i nærmiljøet.

Hopp over til Google-gruppa for Nordic rails og delta i diskusjonen om du er interessert!

[Edit: Har fikset linken etter at gruppa ble omdøpt]

Ramaze, et lite webapp-rammeverk for Ruby

Et intervju med folkene bak Ramaze, et lite webapp-rammeverk for Ruby.

Lately the Ruby community has experienced a surge of new web frameworks. Most of them are respectable and promising open source projects created by people who tried to create lightweight but valid alternatives to Rails. Do I think that they will rise to fame just like Rails did? Of course not, but they are not hopeless copycats either, because they express a different “software opinion” while maintaing similar but not identical goals. I think it’s important to give proper exposure to the most up and coming ones. Besides Rails and Nitro, by now most of you will have heard about Ezra’s excellent Merb and _why’s Camping, but would you be interested in the framework with the following characteristics?

Ramaze er et svært attraktivt lite rammeverk når man ikke ønsker all baggasjen som følger med store systemer som Rails og Merb. Med Ramaze kan du integrere et webgrensesnitt inn i en applikasjon uten å være underlagt strukturen og konvensjonene til Rails. Designmålene likner således på andre “mikrorammeverk” som Camping.

Rails 2.x, load paths og dependencies

Jeg driver og oppgraderer Origo fra Rails 1.2 til Rails 2.1, og de har tydeligvis omrokkert på initialiserings-sekvensen. Tidligere hadde vi følgende i environment.rb, etter config-initen, for å automatisk laste inn en haug med mixins, “acts” og slikt:

Dir.glob("#{RAILS_ROOT}/app/{services,components,caches}/**/*").each do |name|
  require file if File.file?(file)
end

Dette fungerer ikke lenger—Rails laster nå inn kontrollere og modeller i selve initialiseringen, og det er for sent å gjøre det etterpå. Og jeg tror det er for tidlig å gjøre det før initialiseringen. Jeg kan selvfølgelig putte dette inn i application.rb, men jeg har først lyst til å høre hva folk tror er den riktige framgangsmåten.

PowerSet slipper Fuzed

Fuzed, utviklet av søkemotorfirmaet Powerset, er en web-frontend for bl.a. Rails-applikasjoner—skrevet i Erlang:

Fuzed is an Erlang-based clustering system designed to let several single-threaded processes (which may or may not be reliable) form into a pool which can serve requests to remote hosts. These resources need not be homogeneous, Fuzed breaks them up into homogeneous pools internally and serves out requests without “crossing the streams” of different software/versions of software. … This is a release of Powerset’s internal clustering software which has been adapted for use with Rails …

Fuzed er altså en proxy som kan sende requests til Rails-prosesser på flere maskiner, og som tar seg av organiseringen av disse prosessene. Dersom du mer Fuzed starte en ny Rails-prosess blir denne prosessen automatisk med i “poolen” over tilgjengelige Rails-prosesser. Med andre ord litt som Swiftiply, bare basert på Erlangs fantastiske distribuerte prosess-arkitektur, som også lar Fuzed last-balansere requestene. Fuzed kan også serve statiske filer (via YAWS tror jeg).

Se for øvrig denne blog-posten for mer om Powersets Ruby-arbeid.

Filmer av Why The Lucky Stiff

Jeg kom nettopp over noen filmer av Why The Lucky Stiff:

The Least Surprised in “The Red Scared”

The Least Surprised in “Time.now.is_a? MagicTime”

The Least Surprised in “UnboundMyth’d”

Rask inlining av CSS?

Jeg har behov for en superrask CSS-inliner jeg kan kalle fra Ruby. Med inlining mener jeg altså noe som tar et HTML-fragment og en CSS-stylesheet, evaluerer CSSen og legger til style-attributter på hvert element. Noen som vet om noe raskt og enkelt?

Jeg skrev først en inliner som konverterte CSS-selektorene til XPath og kjørte dem gjennom REXML. Dette var i forrige uke, så jeg har, um, glemt nøyaktig hva problemet var, men jeg tror det var at XPath-parsingen til REXML som ikke var korrekt.

Jeg har deretter prøvd å gjøre det tilsvarende med Libxml2, og dette virket i utgangspunktet lovende. Libxml-bindingene for Ruby kan imidlertid ikke produsere god gammeldags HTML (hvor enkelte tags, slik som div’er, alltid må ha slutt-tags), så jeg måtte skrive kode som serialiserte XMLen manuelt ved å traversere DOMen. Dette fungerer fint, men nå sliter jeg med at Libxml-bindingene ikke støtter HTML-entities (av typen “) og ikke har noen opsjoner for å lage DOM-noder av disse, så det stanger på det meste av HTML.

Jeg har prøvd ut TamTam, men denne er basert på Hpricot, som har verdens tregeste selector-evaluator: et marginalt 25K-dokument tar 11 sekunder å inlines med en CSS-fil på knappe 681 linjer. (Det tok dessuten fire bugfiks-patcher før Tamtam fungerte sånn rimelig etter spesifikasjonen—ganske drøyt for en 100-linjers modul.)

Migrating to Ruby 1.9

Here’s the slides for the other talk I gave at Scotland on Rails, going over the syntax and language feature changes between Ruby 1.8 and Ruby 1.9.