STOPUSINGWINDOWS STOPUSINGWINDOWS

Arkiv for the 'Ruby' Category

Alternativ visning i RoR

22 desember 2005 kl 1:50

Hvis du skal tilby både WML (WAP 1.x) og XHTML-MP (WAP 2.x) eller ønsker å ha “theme” basert visning og samtidig ønsker å gjenbruke “controller” koden så kan dette løses f.eks. på denne måten.

routes.rb


map.connect "xhtml/:controller/:action/:id", :view => "xhtml"
map.connect "wml/:controller/:action/:id", :view => "wml"

Eller for alle muligheter:


map.connect ":view/:controller/:action/:id"

application.rb


class ApplicationController < ActionController::Base
	
  def default_template_name(default_action_name = action_name)
    @params[:view] ? "#{self.class.controller_path}/#{@params[:view]}/
           #{default_action_name}" : super
  end
	
end

Urlen blir da f.eks.
http://senikk.com/xhtml/blog/view/1
http://senikk.com/wml/blog/view/1

Template filene blir da å finne på:
app/views/blog/xhtml/view.rhtml
app/views/blog/wml/view.rhtml

WAP med Rails

18 desember 2005 kl 2:29

Idag tenkte jeg at jeg skulle ta et lite tilbakeblikk i “gammel” kunnskap nemmelig WAP da ved bruk av ny kunnskap, rammeverket Ruby on Rails heretter bare RoR.

Sist jeg lagde en WAP side må vel ha vært tilbake i år 2000, da i forbindelse med BrassForum hvor jeg la ut en nyhetsoversikt. Jeg fant i hvert fall ut at jeg hadde helt glemt hvor kresen WAP var da jeg ikke fikk noe frem på mobilen! Eneste som var feil var at jeg hadde glemt “alt” attributten på “img” taggen som er påkrevd.

Jeg ville helst teste lokalt på utviklermaskinen, så da var jakten på en WML leser som gikk an å bruke under Linux igang igjen. Har egentlig ikke funnet noen frie som jeg er helt fornøyd med enda, forslag? Men i hvert fall jeg har nå brukt wmlbrowser en plugin til Firefox selv om den var litt trøblete, av en eller annen grunn får jeg bare den til virke ved å starte Firefox som root bruker!! Ellers har du jo online leseren Wapsilon. Nå er ikke jeg noen stor Opera bruker, men Opera sin nettleser har innebygget støtte for WML.

Mitt lille eksempel under presenterer en WAP side som også inneholder et bilde som blir generert av RoR og av gammel vane da i formatet WBMP som vel var det eneste formatet en kunne bruke med WAP i “gamledager”.

Eneste en egentlig trenger i en “controlller” for tilby WAP med RoR er de første linjene med “set_content_type” som setter Content-Type til text/vnd.wap.wml

wap_controller.rb


require 'RMagick'
	
class WapController < ApplicationController
  before_filter :set_content_type
	
  def set_content_type
    @headers["Content-Type"] = "text/vnd.wap.wml; charset=utf-8"
  end
	
  def wbmp
    canvas = Magick::Image.new(100, 100,
    Magick::HatchFill.new('transparent','#323337'))
    gc = Magick::Draw.new
	
    gc.annotate(canvas,80,20,27,63, "tp") {
      self.stroke = '#f00000'
      self.pointsize = 50
      self.font_weight = 900
      self.stroke_width = 3
    }
	
    send_data canvas.to_blob { |img| img.format = "WBMP" },
      :type => 8220image/vnd.wap.wbmp8221, :disposition => 8220inline8221
  end
end

index.rhtml


< ?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
       "http://www.wapforum.org/DTD/wml_1.1.xml">
	
<wml>
 <card> 
	

   <b>WAP med Rails</b>
   < %= DateTime.now.to_s %>
   <img src="http://demo.brassgeek.com/wap/wbmp"
        height="100" width="100" alt="Generert bilde"/>
  
	
 </card>
</wml>

Dette eksempelet nås på http://demo.brassgeek.com/wap/

Hvis jeg da går et skritt videre og setter opp en “layout” for WAP på samme måte som en gjør det for HTML med RoR samt si at vi har en User “model” så kan jeg f.eks. lage en liten enkel telefonliste slik som dette:

users.rhtml


<card>
< % User.find_all.each do |user| %>
<b>< %= user.fullname %></b>Mob: < %= user.phone %>
< % end %>
</card>

Dette eksempelet nås på http://demo.brassgeek.com/wap/users/

Bruk av AJAX og Skype ifra Ruby

15 juli 2005 kl 16:46

Jeg har i det siste fikset opp i Sajax Ruby klassen samt skrevet en foreløpig enkel klasse for Skype-API’et slik at jeg nå har kunnet teste begge disse tingene ifra Ruby.

dev.brassgeek.com
På min nystartede engelskspråklige utviklerblogg dev.brassgeek.com har jeg skrevet mer om dette samt publisert noe kode og mer kommer nok.

AJAX
AJAX står forresten for “Asynchronous JavaScript and XML” og er en teknologi som er veldig hypet for tiden. Enkelt forklart gjør den det mulig å utføre ting på en server og få det presentert på en webside uten at hele websiden må oppdateres som en vanligvis må på web. Eksempel: Google Suggest BETA | Graffiti Wall | Sudoku | Web Mail.

En stilig ting med Sajax er at den støtter PHP, Ruby, Python, Perl, Lua, IO, Coldfusion og ASP. Og dette igjen betyr at siden utvekslingen skjer via Javascript så kan jeg f.eks. lage serverdelen i Ruby og klientdelen i PHP som kunne f.eks. vært plassert på denne bloggen som jo er laget med WordPress som da er skrevet i PHP.

Test selv koden her :) Sajax/PHP/Ruby

Her er koden til serverdelen i Ruby som sjekker om det en får inn er et heltall eller ei


#!/usr/bin/env ruby
require 'Sajax'
	
def is_integer(string)
  if string =~ /^[+-]?\d+$/
    "tallet er #{string}"
  else
    "ikke et heltall det du"
  end
end
	
sajax = Sajax.new
sajax.export("is_integer")
sajax.handle_client_request()

- Mer å lese om AJAX

Skype-API
Når det gjelder Skype klassen min så gjør den det mulig på GNU/Linux å styre Skype ifra Ruby hvor en benytter seg av applikasjons-kommunikasjonssystemet D-BUS.

Et lite eksempel a) Sender melding til senikk b) Får oppgitt status på senikk c) Får navnet til senikk


require 'skype'
	
skype = Skype.new
skype.im "senikk", "Et lite hei fra Ruby"
p skype.user_status "senikk"
p skype.command "GET USER senikk FULLNAME"

Hva skal jeg så lage med min nyervervede kunnskap? Tja, tiden får vel vise. Har du noen gode forslag så er det forsåvidt bare til å foreslå noe det. I hvert fall åpner disse to tingene her for endel ting som kan lages.

11101

29 juni 2005 kl 9:43

Ruby generert bilde
For dere som ikke forstår dere på binære tall så er jeg idag like mange år som datoen idag. Jepp det tikker visst sakte men sikkert mot et rundt tall heldigvis ikke dette året :P Må nesten også her benytte anledningen til å gratulere min “tvilling” med dagen, ei jente som jeg har blitt kjent med på nettet som er født bare noen timer etter meg i samme by :)

Tenkte jeg skulle feire dagen med litt RMagick så bildet er laget med følgende Ruby kode:


require 'RMagick'
	
canvas = Magick::Image.new(100, 100,
Magick::HatchFill.new('transparent','#323337'))
gc = Magick::Draw.new
	
gc.annotate(canvas,80,20,22,68, "29") {
  self.stroke = '#f00000'
  self.pointsize = 50
  self.font_weight = 900
  self.stroke_width = 3
}
	
canvas.write('bursdag.gif')

Ruby Quiz

25 juni 2005 kl 11:50

Ruby Quiz Har du lyst til å lære mer om språket Ruby eller er lysten på en liten utfordring i å skrive Ruby programmer da er kanskje nettstedet RubyQuiz noe for deg. Perl har forresten sin variant her . Ruby Quiz legger ut en ny oppgave hver fredag hvor du da får 48 timer på deg i ro mak uten at noen får lov å diskutere eller komme med en løsning på oppgaven som har blitt lagt ut. Tror nok jeg kommer til å stikke innom her av og til for å plukke opp ett tips eller to.


Creative Commons License
This work is licensed under a Creative Commons License.