roothausen

  • Impressum
  • Administration
  • Kontaktformular
  • Jabber
  • Tagcloud
  • Twitter
  • Soup
  • Github

Entries tagged as ruby

Entries tagged as ruby

Related tags

blogging bad world blog browser captcha changes computer contentmanagement free hardware linux&unix media misc opensource privacy programming rss s9y security software spam stuff tail -f /var/log/life tool web webdesign webwide wordpress zeitgeist code android feedreader google gui html jabber java markup presentation scala sdk shortys swing video windows xml xslt cheatsheet comic css dns encryption firefox fun howto im javascript life lighttpd mail mobile murphy networking newsbeuter picture podcast politics psi regular expression screenshot server subnetting test truecrypt perl coffee forum unb dslr nikon photography tv conference science

Feedchecker Version 0.4

16:09

Thursday, December 24. 2009

Änderungen

Nach Feedback auf den letzten Blogeintrag habe ich mich nochmal an das Feedchecker Script gemacht und ein paar Änderungen eingepflegt:

  • Ruby 1.8 Kompatibilität (da ich selbst auf Ruby 1.9 entwickle)
  • Vereinfachtes Suchen der Urls durch XPath-Expression
  • Konfigurierbare Anzahl der parallel abzuholenden Feeds

./feedchecker.rb -h
This is a simple, script which takes an opml file and checks all contained feeds for
errors.

 Usage:

feedchecker.rb [options] -i <filename>

where [options] are:
          --input, -i <s>:   Input opml file
        --timeout, -t <i>:   Timeout interval in seconds (default: 60)
            --age, -a <i>:   Specify the minimum age in days (default: 365)
  --fetchparallel, -f <i>:   Specify the amount of feeds to fetch parallel (default: 5)
            --version, -v:   Print version and exit
               --help, -h:   Show this message
 

Mehr Details gibts in der Commit-History auf github.

Geschwindigkeit

In meinen Tests verwende ich meine Liste mit ca. 160 Feeds. Einmal mit den Standardeinstellungen und einmal mit der Option, dass 10 Feeds parallel abgeholt werden.

Zuerst ein paar Vorbereitungen:


wget http://github.com/pfleidi/feedchecker/raw/master/feedchecker.rb
chmod +x feedchecker.rb
 

Mit Standardeinstellungen:


time ./feedchecker.rb -i feeds.opml
...
real    1m33.162s
user    0m18.909s
sys     0m1.296s
 

Mit 10 Threads:


time ./feedchecker.rb -i feeds.opml -f 10
...
real    1m20.754s
user    0m19.493s
sys     0m1.340s
 

Mit 10 Threads und aggressiveren Timeouts von 20 statt 60 Sekunden:


time ./feedchecker.rb -i feeds.opml -f 10 -t 20
...
real    0m39.808s
user    0m19.205s
sys     0m1.472s
 

Viel Spaß damit und ein frohes Fest euch allen!

Posted by Sven Pfleiderer in computer | Comments (0) | Trackbacks (0)
Defined tags for this entry: code, computer, opensource, rss, ruby, software, web, xml

Feeds ausmisten

01:16

Saturday, December 19. 2009

Was tun mit riesigen Feedlisten?

Es geht wahrscheinlich vielen so: Man sammelt im laufe der Jahre hunderte Feeds in seiner Liste ohne nun wirklich zu wissen welche noch aktuell sind und welche nicht. In der letzten Zeit hatte ich genau aus diesem Grund mal wieder das Bedürfnis meine RSS-Feeds auszumisten. Da ich ein fauler Mensch bin und eigentlich keine Lust habe hunderte von Feeds "von Hand" zu prüfen, habe ich ein kleines Tool geschrieben, das mir dabei hilft kaputte, nicht erreichbare oder verwaiste Feeds zu entdecken.

Das Tool

Das Tool wurde in ruby geschrieben, ist frei unter der GPLv2 verfügbar und hoert auf den nicht besonders kreativen Namen feedchecker. Um es zu benutzen ist das Trollop-Gem sowie das Peach-Gem notwendig. Dieses lassen sich einfach mittels "gem install trollop" sowie "gem install peach" installieren.

Update: Unter Debian scheint das SSL-Plugin nicht mit der normalen Ruby-Installation mit installiert zu werden. Darum sollte es noch mittels "aptitude install libopenssl-ruby" nachinstalliert werden.

Verwedung

Da das Tool nicht viel kann, haellt sich die Komplexitaet der Optionen in Grenzen:


 ./feedchecker.rb --help
This is a simple, script which takes an opml file and checks all contained feeds for
errors.

 Usage:

feedchecker.rb [options] -i <filename>

where [options] are:
          --input, -i <s>:   Input opml file
        --timeout, -t <i>:   Timeout interval in seconds (default: 60)
            --age, -a <i>:   Specify the minimum age in days (default: 365)
  --fetchparallel, -f <i>:   Specify the amount of feeds to fetch parallel (default: 5)
            --version, -v:   Print version and exit
               --help, -h:   Show this message
 

Mit einem Aufruf des Scripts lässt sich zumindest die Liste der zu prüfenden Feeds stark eingrenzen.


feedchecker.rb -i /tmp/rss.opml                                                                                      
http://atsutane.freethoughts.de/feed/atom feed isn't well formed and could't be parsed
http://blog.b-o-f-h.net/index.php?/feeds/index.rss2 is out of date. Age: 388 days without an update
http://blog.choas.net/RSS age could not be checked
http://blog.fefe.de/rss.xml?html age could not be checked
http://blog.roothell.org/feeds/index.rss2 Connection timed out
http://codebu.de/blog/?feed=rss2 Redirect ... new URI: http://codebu.de/blog/feed/
...
 

Eventuell hat ja ausser mir noch jemand eine Verwendung dafür. Falls ja ist dies mein Weihnachtsgeschenk an euch.

Posted by Sven Pfleiderer in computer | Comments (6) | Trackbacks (0)
Defined tags for this entry: code, computer, feedreader, rss, ruby, software

Verkleinern von Bildern mit Ruby und Imagemagick

16:38

Sunday, August 9. 2009

Vor kurzem hatte ich das Bedürfnis Bilder automatisiert, mit Hilfe eines Ruby-Scripts, zu verkleinern. Dieses Script sollte zudem ohne Änderungen sowohl auf Linux als auch auf Windows lauffähig sein.

Fuer diese Aufgabe ist Imagemagick natürlich ein super Werkzeug, da man es auch als Bibliothek von Ruby aus nutzen kann und auch für Windows verfuegbar ist. Unter Windows ist hierfür eine Installation von Ruby, sowie die Installation von Imagemagick und dem passenden RMagick Ruby-Gem notwendig. Unter Linux reicht es Imagamagick und Ruby mit dem Paketmanager seiner Wahl zu installieren und mittels "gem install rmagick" das Gem zu installieren.

Der eigentliche Code gestaltet sich relativ simpel. Prinzipiell lässt sich ein Bild mit wenigen Anweisungen verkleinern:


#!/usr/bin/env ruby

require 'rubygems'
require 'RMagick'

@debug = true

def resize_image(file)
   puts "let's resize #{file} ..." if @debug
   img = Magick::Image::read(file).first
   img.resize_to_fit(1024, 1024)
   img.write(file)
   puts "resizing of #{file} successful" if @debug
end
 

Die Methode resize_to_fit() sorgt hier für das Verkleinern auf bestimmte Maximalwerte in Länge und Breite. Weiteres erfährt man aus der Doku

.
Posted by Sven Pfleiderer in computer | Comments (2) | Trackbacks (0)
Defined tags for this entry: code, computer, linux&unix, programming, ruby, shortys, software, windows

Syntax Highlighting und Autovervollstaendigung in irb

23:31

Monday, December 22. 2008

Wer ab und zu ruby programmiert, wird wahrscheinlich auch gefallen an irb, der ruby-Shell, gefunden haben. Bisher hat mich daran die Tatsache gestoert, dass sie per Default keine TAB-Vervollstaendigung mitbringt. Marc hat mich per Twitter auf einen Eintrag in seinem Blog hingewiesen, der das aendert:


[root@burgr:~]# gem install wirble
Successfully installed wirble-0.1.2
1 gem installed
Installing ri documentation for wirble-0.1.2...
Installing RDoc documentation for wirble-0.1.2...
 

Speichert man nun folgende Anweisungen in der Datei ~/.irbrc, bekommt man eine funktionierende Autovervollstaendigung und schoenes Syntax-Highlighting.


require 'rubygems'
require 'wirble'
Wirble.init
Wirble.colorize
 

Das Modul scheint Funktionen der darunter liegenden Commandshell zu nutzen, denn so Sachen wie zum Beispiel Strg+R fuer inkrementelle Suche funktionieren nun ebenfalls.

Posted by Sven Pfleiderer in computer | Comments (0) | Trackbacks (0)
Defined tags for this entry: code, computer, programming, ruby

Tinyurls in Langform erhalten

22:02

Saturday, September 13. 2008

Bei vielen Diensten wie z.B. Twitter werden mittlerweile statt normalen URLs verkuerzte abgeschickt. Sollte man mal auf die Idee kommen diese wieder in Orginalform haben zu wollen, koennte man dazu fuer jeden der bekannten Dienste Methoden implementieren. Oder man benutzt die API des Dienstes longurl.com. Die Software dahinter wurde uebrigens unter der AGPL lizensiert und den SourceCode kann man hier ankucken.

Ich habe natuerlich gleich die Klasse fuer bit.ly erweitert:


#!/usr/bin/env ruby

# client class for url shortening service bit.ly and url expandig service longurl.com

require 'rubygems'
require 'net/http'
require 'uri'
require 'json'


class ShortURL
  def self.shortURL(url)
    api_url = "http://bit.ly/api"
    res = Net::HTTP.post_form(URI.parse(api_url),{'url'=> url})
    return res.body
  end

  def self.expandURL(url)
    api_url = "http://api.longurl.org/v1/expand?url=#{url}&format=json"
    res = Net::HTTP.get(URI.parse(api_url))
    data = JSON.parse(res)
   # if expanding url failed
    if data.has_key? 'messages'
      return url
    end
    return data["long_url"]
  end
end
 

Somit lassen sich mit der Methode ShortURL.expandURL(uri) URLs auch verlaengern.

Zusaetzlich gibt es fuer diesen Dienst noch eine Firefox Erweiterung und ein Greasemonkey Script um die langen URLs in Tooltips darzustellen.

Posted by Sven Pfleiderer in computer, web | Comments (0) | Trackbacks (0)
Defined tags for this entry: code, computer, programming, ruby, software, web

Feedchecker Aktualisierung

00:51

Tuesday, August 5. 2008

Vor einiger Zeit habe ich ein Tool gesucht um Newsfeeds aus einer OPML-Datei auf Erreichbarkeit zu ueberpruefen. Nachdem ich keines gefunden hatte, habe ich mir selbst eines geschrieben.

Das kleine Tool wurde nun nochmals ein klein wenig ueberarbeitet. Hier mal die groebsten Aenderungen:

  • Support von Threads
  • Abfangen nicht konformer HTTP-Antworten
  • Abfangen von "connection refused"-Fehlern

Alleine die Verwendung von Threads bringt einen erheblichen Performancegewinn. Als Beispiel dient meine Feedliste mit 179 Feeds. Hier ist das Ergebnis der Version ohne Threads:


time ./feedchecker.rb /tmp/rss.opml
./feedchecker.rb /tmp/rss.opml  2.70s user 0.88s system 1% cpu 4:05.40 total
 

Und hier mal die Version mit Threads:


time ./feedchecker_thread.rb /tmp/rss.opml
./feedchecker_thread.rb /tmp/rss.opml  1.51s user 0.35s system 4% cpu 42.661 total
 

Das Script gibt es hier zum download. Feedback ist wie immer willkommen.

Posted by Sven Pfleiderer in computer, web | Comments (0) | Trackbacks (0)
Defined tags for this entry: code, computer, programming, rss, ruby, tool, web

Bit.ly API in ruby

20:13

Friday, August 1. 2008

Ich arbeite gerade an einem kleinen Tool, fuer das ich den URL-Kuerzungsdienst bit.ly ansprechen wollte. Daher habe ich mir eine Ruby-Klasse dafuer geschrieben, die die RESTfull-API anspricht:


#!/usr/bin/env ruby

# client class for url shortening service bit.ly

require 'net/http'
require 'uri'

class Bitly 
   def self.shortURL(surl)
      api_url = "http://bit.ly/api"
      res = Net::HTTP.post_form(URI.parse(api_url),{'url'=> surl})
      return res.body
   end
end


# Possible usage
puts Bitly.shortURL("http://blog.roothausen.de")
 

Das Ergebnis schaut so aus:

./bitlyapi.rb
http://bit.ly/2BTVbK
Posted by Sven Pfleiderer in computer, web | Comments (3) | Trackbacks (0)
Defined tags for this entry: computer, programming, ruby, software, web

Feeds ueberpruefen

20:20

Thursday, May 22. 2008

RSS- und andere Newsfeeds sind ne tolle Sache, das ist klar. Nur haben sich bei mir mittlerweile eine Menge Feeds angesammelt bei denen es mal vorkommt, dass einige der Blogs und Podcasts umgezogen oder nicht mehr erreichbar sind. Ab und zu kommt es auch vor, dass der Feed umgestellt wird ohne eine Weiterleitung einzurichten.

Im kleinen koennte man hier ab und zu mal seine Liste manuell checken um zu sehen was Sache ist. Bei mir sind es allerdings > 160 Feeds. Darum habe ich ein kleines Tool geschrieben, das im Endeffekt nichts anderes macht als sich die Feeds aus einer opml-Datei zu holen, diese abzurufen und den HTTP-Response-Code auszuwerten. Dazwischen werden noch ein paar moegliche Fehler abgefangen.
Feeds, bei denen Weiterleitungen aktiv sind, Seiten bei denen der Feed nicht gefunden wurde oder zu denen aus anderen Gruenden keine Verbindung aufgebaut werden kann, werden ausgegeben. Bei umgeleiteten Feeds wird noch die URL, auf die umgeleitet wird, angezeigt.

Anwenden kann man das Tool in dem man es herunter laedt, ausfuehrbar macht und auf der Kommandozeile aufruft. Als ersten Parameter erwartet das Script eine opml-Datei:

./feedchecker.rb /tmp/rss.opml

Vorausgesetzt wird ein Ruby-Interpreter. Ich habe das ganze in der Version 1.8.6 getestet. Es werden zudem noch ein paar Teile der Ruby-Kernbibliothek benutzt. Das Teil ist in recht kurzer Zeit entstanden und daher ist es durchaus moeglich, dass in den 52 Zeilen Ruby-Code noch der eine oder andere Fehler steckt. ;-)
Fehlerberichte oder Verbesserungsvorschlaege sind durchaus erwuenscht und koennen als Kommentar, per Mail oder Jabber abgegeben werden.

Posted by Sven Pfleiderer in computer, web | Comments (0) | Trackback (1)
Defined tags for this entry: blogging, computer, programming, rss, ruby, software, tool, web

Massen Umbenennung mit Ruby

05:02

Monday, May 12. 2008

Nachdem ich mich in letzter Zeit so nebenbei etwas mit Ruby beschaeftigt habe und mir heute nach dem Download einiger Podcasts die Dateien mit "%20" im Dateinamen praesentiert wurden, wollte ich das mal mit Ruby statt zmv loesen.
Nach etwa zwei Minuten ist dabei dieser Einzeiler, der sich direkt auf der Ruby-Shell (irb) ausfuehren laesst, heraus gekommen:


Dir["*.mp3"].each { |file| File.rename(file, file.gsub(/%20/, "_")) }
 

Hier wird einfach bei jeder *.mp3 Datei im Verzeichnis das %20 im Dateinamen durch einen Unterstrich ersetzt.

Posted by admin in computer | Comments (4) | Trackbacks (0)
Defined tags for this entry: computer, programming, regular expression, ruby, software, stuff, tail -f /var/log/life

Ruby Magic

01:28

Friday, May 9. 2008

Ich muss sagen, dass mir Ruby als Programmiersprache immer mehr gefaellt. Irgendwie hat das ganze eine Leichtigkeit, die man in anderen Sprachen vermisst.

#!/usr/bin/ruby
block = lambda {|x,y| x.times {puts y}}
block.call(5,"fooBar")

Diese zwei Zeilen Rubycode geben einfach 5 mal "fooBar" aus.

Posted by admin in computer | Comments (4) | Trackbacks (0)
Defined tags for this entry: programming, ruby, software, stuff
(Page 1 of 1, totaling 10 entries)

Calendar

« July '10 »
Mo Tu We Th Fr Sa Su
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Quicksearch

Kategorien

  • XML computer
  • XML misc
  • XML web
  • XML zeitgeist


All categories

Archiv

  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • Recent...
  • Older...

Feeds

  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 Comments

Links

Shackspace
Yaxim
Radio Tux
Kais Blog
Blumen Pfleiderer
Alk
paxos
filzo
Marc Seeger
polzifer

Previous | Next

Tags

android bad world blog blogging browser changes code comic computer contentmanagement encryption feedreader firefox free fun google gui hardware howto html im jabber java life lighttpd linux&unix media misc mobile murphy networking newsbeuter opensource picture politics presentation privacy programming regular expression rss ruby s9y screenshot sdk security server shortys software stuff tail -f /var/log/life test tool tv video web webdesign webwide windows xml zeitgeist

del.icio.us

  • Appcelerator Developer Center - Documentation
  • Coderspiel — Rewiring Android for type-safe layout resources
  • pkrumins's stackvm at master - GitHub
  • Netty - the Java NIO Client Server Socket Framework - JBoss Community
  • Learn Your Motherf#@kin' Science: A Textbook for Juggalos | Cracked.com
  • The C Book - Table of Contents
  • andrewvc's node-streamlogger at master - GitHub
  • Setting up a JavaScript Build Process – JavaScriptr
  • js-build-tools - Project Hosting on Google Code
  • YUI Compressor
  • JsUnit
  • InfoQ: Ralph Johnson, Joe Armstrong on the State of OOP
  • ztellman's aleph at master - GitHub
  • Clojure - home
  • Mac OS X keyboard shortcuts

(More)

Lizenz

Creative Commons License - Some Rights Reserved