Patronat roflcoptera

Jakiś czas temu padały deklaracje, że na roflcopterze nie będzie reklam… a dziś ciach na górze banner. Doszedłem do wniosku, że może to wymagać wyjaśnień😉

Bannerek ten jest prezentowany w ramach patronatu nad imprezą, który objęliśmy. Mamy swój udział w jej organizacji i wierzymy, że będzie dobra, więc postanowiliśmy umieścić jej reklamę. Bezpłatną reklamę – tzn nikt nikomu za nic nie płaci, a serwer nadal jest utrzymywany z mojej kieszeni – to tak gwoli ścisłości😛

Mam również nadzieję, że jej forma nie przeszkadza w korzystaniu z serwisu.

Jeśli macie jakieś sugestie dotyczące cssa tego bannera, czy ogólnie – piszcie na kontakt@roflcopter.pl

Jedna z moich ulubionych linijek

Jedna z moich ulubionych linijek w kodzie roflcoptera, pochodzi z akcji create controlera rofls😉
(render :template => 'rofls/not_funneh' and return) if !(params[:rofl][:content] =~ /[tT]woj[aą] [sS]tar[aą]/).nil?

Roflcopter i flaker.pl

O ile przy blipie problemów nie było – serwis jest również napisany w Railsach, więc cała obsługa sprowadzała się do wykorzystania biblioteki Active Resource. W przypadku flakera było troszkę trudniej… ale na szczęście Ruby radzi sobie ze wszystkim😉

Jak czytamy w dokumentacji:
curl -u login:hasło -d 'text=test&link=http://blog.flaker.pl' http://api.flaker.pl/api/type:submit

Pierwszy „genialny” pomysł zakładał wykorzystanie curla, poprzez zrobienia czegoś w rodzaju:
command = "curl -u login:hasło -d 'text=#{tekst}&link=#{link}' http://api.flaker.pl/api/type:submit
eval command

Pomysł przestał być genialny, po ok 3 sekundach zastanawiania się nad nim😉
Ostatecznie wykorzystałem model, nie dziedziczący jednak po żadnym innym, o następującym kodzie:
class Flaker
require "net/http"
require 'uri'
def self.flac(text, link)
url = URI.parse("http://api.flaker.pl/api/type:submit")
req = Net::HTTP::Post.new(url.path)
req.basic_auth 'login', 'haslo'
req.set_form_data({'text'=>text, 'link'=>link}, '&')
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
end
end

Status na flakera wrzucamy używając linijki:
Flaker.flac('text', 'link')

Czyli bez praktycznie żadnej magii, wysłanie żądania post na zadany adres, z odpowiednimi parametrami. I działa świetnie:) Oczywiście można by narzekać, że tylko wysyłanie, że nie da się odczytać statusów etc. Ale cóż – miał wysyłać status? Wysyła😉 Zgodnie z zasadą YAGNI (You Ain’t Gonna Need It) takie rozwiązanie jest jak najbardziej wystarczające.

Blip

Dodaliśmy dziś do roflcoptera obsługę blipa. Wszystkie nowe cytaty znajdziecie pod adresem http://roflcopter.blip.pl.

Kod okazał się zaskakująco prosty – api Blipa jest w pełni RESTowe, a że railsy lubią REST…

Cóż, implementacja wygląda następująco:
class Blip < ActiveResource::Base
self.site = 'http://api.blip.pl'
self.element_name = "update"
self.user = "*"
self.password = "*"
self.headers['X-Blip-API'] = '0.02'
self.headers['Accept'] = 'application/json'
self.headers['User-Agent'] = 'roflcopter'
self.format = :json
end

Wiadomości wrzucamy za pomocą jednej linijki:

Blip.create(:body =>'tekst')

Długa, prawda?:)

Pierwszy wpis

Być może część z Was zastanawia się, po co w ogóle taki blog. Doszliśmy do wniosku, że przyda nam się taki kanał komunikacji. Zwłaszcza, że hosting na wordpressie oznacza, że nawet jeśli coś wybuchnie i padnie nam serwer będziecie się mogli o tym dowiedzieć właśnie stąd😉 Oprócz tego chcemy się z Wami dzielić doświadczeniami związanymi z tworzeniem tego serwisu – czyli jakie pułapki czyhają w Ruby on Rails i Javascripcie😉

Jak pewnie już przeczytaliście w newsach stworzyliśmy widget roflcoptera, niestety wordpress wycina tagi script – tu go Wam więc nie zaprezentujemy, ale na http://roflcopter.pl/json.html jest on widoczny w działaniu.

Oprócz tego zmieniliśmy czcionkę – poprzednie wyglądała świetnie na linuksie, na windowsie… trochę gorzej. Także piszcie jak Wam się podoba i co chcecie zmienić – w komentarzach, albo na maila kontakt@roflcopter.pl.



Obserwuj

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.