cadego blog

Ein weiteres tolles WordPress-Blog

cadego blog header image 1

Megaupload vom FBI abgeschaltet und Kimble verhaftet

19. Januar 2012 · Kommentare deaktiviert

Kimble aka Kim Dotcom, aka Kim Schmitz, and Kim Tim Jim Vestor ist wieder zuhause.
Das FBI hat Megaupload abgeschaltet und Kimble in Neuseeland verhaften lassen.(FBI-Statement) Da haben wohl die SOPA-Lobbyisten die Youtube-Schlappe nicht verkraftet und ihre Beziehungen spielen lassen. Persönlich finde ich die Abschaltung aber okay(wenn man mal schaut, wie die Masche funktioniert. Dateien splitten, Boards beliefern,Download-Limit, Premium anbieten, Stabiles Einkommen ;) ).

Kommentare deaktiviertTags: Allgemein

Bug oder Müdigkeit

17. Januar 2012 · Kommentare deaktiviert

Hatte gestern eine kleine Exception im Production.
Wo es Sinn macht, arbeite ich mit before_filter & after_filter.
Im Development lief alles rund aber im Production löste der after_filter die Exception aus.
Bin mir nicht sicher, ob es am caches_action lag, da der Fehler genau einmal auftrat.

class ProductsController < ApplicationController
layout 'products'
before_filter :find_or_initialize_category, :only=>[:show]
before_filter :find_product, :only=>[:show]  #..]
after_filter :set_landing_hit, :only=>[:show] #..]
caches_action :show

def show
    if stale?(:last_modified => @product.updated_at.utc, :etag => @product)
      respond_to do |format|
        format.html
      end
    end
end
protected
def find_or_initialize_category
@current_category = Category.find_by_permalink(params[:category]) || raise(ActiveRecord::RecordNotFound)
end
def find_product
@product = Product.public.find_by_permalink_and_category_id(params[:product],@current_category.id)
end
def set_landing_hit
#snip
@product.hit!
#snap
end
end

Kommentare deaktiviertTags: rails

Bildersuche

17. Januar 2012 · Kommentare deaktiviert

Nach der Safari in Kenia gab es scheinbar bei der Google Bildersuche ein paar Tests mit HTML5, IFrames und Sandbox. Viele Webmaster sind ja mit der Bildersuche nicht zufrieden und setzen Framekiller ein, um ein paar Besucher zu erhalten. Ärgerlich, wenn die eigene Seite dann via <iframe src=”foo.tld” sandbox></iframe> eingebunden wird. Mit der Sandbox-Option wird auf der eingebundenen Seite das JavaScript und die Plugins deaktiviert und man kommt aus dem Frame nicht mehr raus. Auf Webmasterworld waren die Leute nicht wirklich begeistert.  Die Option wurde aber scheinbar wieder deaktiviert. Aber es gibt ja noch andere Kandidaten, die via iframe verlinken. Ist dann nur ärgerlich, wenn man als Publisher nichts machen kann. Und die x-frame-options im Header hilft da auch nicht wirklich weiter…

Kommentare deaktiviertTags: Allgemein

Rails 3.2.0.rc2 veröffentlicht

16. Januar 2012 · Kommentare deaktiviert

Ich sah heute bei einem gem-Update, dass die zweite Preview von Rails 3.2.0 veröffentlicht wurde.
Die wichtigste Änderung ist sicherlich die Änderung des Plugin-Verzeichnisses.
Was bisher unter vendor/plugins/ lag, ist deprecated(war das nicht für Rails 4.0 geplant?). Einfachste Möglichkeit ist die Erstellung eines Gems (Jeweler) oder das Verschieben der Plugins nach lib/, wo wahrscheinlich eh jeder seinen Bockmist parkt. ;)
Initialisierung erfolgt dann unter config/initializers.
Nächste Änderung von Interesse ist die gzip-Option für caches_page. Im Hightraffic-Bereich oder bei überlasteten Servern sollte man auf diese Option schauen. Ich hatte das mal bei einer Seite eingebaut
und man konnte den Performance-Unterschied in den Logs sehen, wenn gzip wieder deaktiviert wurde. Das war aber noch Ruby 1.8.6. Also Augen auf.

Hier gibt es die komplette Liste mit den Änderungen:  Ruby on Rails 3.2 Release Notes

Kommentare deaktiviertTags: rails

Rails 3.1.3 und verschiedene Ruby-Versionen

13. Januar 2012 · Kommentare deaktiviert

Nach einiger Zeit bin ich dann doch bei Rails 3.1.3 und Ruby 1.9.3 gelandet. Eigentlich schick, wären da nicht noch ein paar Projekte die nur mit der 1.8.7-Version von Ruby und RoR 2.3.x laufen. ;-)
Immerhin wurde mein größtes Problem, eine 2.0.5 Rails version jetzt ersetzt. Problem bei der App war das “nette” 32Bit-Image (warum bieten Provider das noch an?), Memcached-Probleme(Broken pipe), schlechte Performance und ich das Grundprojekt mit einer der ersten öffentlichen Rails-Versionen gestartet habe. In der Migration hing noch ein Automarkt. *autsch* Es wurde also Zeit für ein Upgrade.
Auf dem Server laufen also unterschiedliche Ruby-Versionen.
Da ich das gemset-Handling von rvm nicht so mag, hab ich mir aus den Sourcen die ruby 1.9.3-Version gebaut.
Aufruf der Ruby-versionen:

/usr/local/bin/ruby #1.8.7 via apt-get install -> ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
/usr/local/bin/ruby193 #ruby 1.9.3p0 (2011-10-30) [i686-linux]

Installation von Ruby 1.9.3:

wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.bz2
tar xfv ruby-1.9.3-p0.tar
cd ruby-1.9.3-p0
#Wichtig ist der programm-suffix: Zugriff auf ruby, gem & rake sind via ruby193, gem193 bzw. rake193
./configure --prefix=/usr/local --program-suffix=193 --with-readline-dir=/usr/local
make
make test
make install
#kleiner Check
pinky@brain:~# ruby193 -v
ruby 1.9.3p0 (2011-10-30) [i686-linux]
pinky@brain:~# gem193 -v
1.8.11
#Bingo & gleich noch Update & Github hinzufügen
gem193 update --system
gem193  sources -a http://gems.github.com
#zwei bis drei Gems installieren
gem193 install mysql mysql2 sqlite3 sass-rails
gem193 install journey
gem193 install therubyracer
gem193 install zbatery passenger
gem193 install haml haml-rails rspec-rails factory_girl_rails cucumber-rails capybara database_cleaner launchy devise will_paginate
gem193 install acts-as-taggable-on
#Rest via bundle

Nachdem beide Version auf dem Server laufen, müssen noch die Settings für Passenger und Apache2 geändert werden, da Passenger nur mit einer Ruby-Version läuft. Also eine Version (bei mir Ruby 1.8.7) läuft via mod_passenger und die App mit der 1.9.3 Ruby-version als Standalone Version und Proxy.

Apache2:

a2enmod proxy_balancer
a2enmod proxy_http
a2enmod proxy_connect
/etc/init.d/apache2 restart

Apache2 Config für eine Rails App mit Proxy-Support:

<VirtualHost ip:80>
ServerName xyz.de
#      ServerAlias *.xyz.de
<Proxy balancer://thinservers>
#wer die panda-updates überlebt hat, kann hier auch mehr server eintragen ;-)
#und immer schön mit der ip und nicht mit dem domainnamen arbeiten!
BalancerMember http://127.0.0.1:3333
</Proxy>
# Redirect all non-static requests to thin
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://thinservers%{REQUEST_URI} [P,QSA,L]
ProxyPass / balancer://thinservers/
ProxyPassReverse / balancer://thinservers/
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
DocumentRoot /app_path/public/
ProxyPass /images !
ProxyPass /stylesheets !
ProxyPass /javascripts !
ProxyPass /assets !
Alias /assets /app_path/public/images
Alias /images /app_path/public/images
Alias /stylesheets /app_path/public/stylesheets.
Alias /javascripts /app_path/public/javascripts.

AccessFileName .htaccess
ErrorLog /path/domain.err
CustomLog /path/domain.log combined
# deflate
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
</VirtualHost>

Jetzt noch die Application starten und im Normalfall sollte der Apache2 die Seiten ausliefern. In das Verzeichnis der Application wechseln.
Der Start erfolgt über

bundle exec zbatery -E production
oder mit passenger als Standalone-Version
/usr/local/bin/passenger start -a 127.0.0.1 -p 3333 -e production -d
App stoppen mit
/usr/local/bin/passenger stop

Für den Passenger existieren auch init-Scripte auf Github. Sonst funktioniert auch God.

Performance und sonstige Kleinigkeiten:
Ladezeit und das Ausliefern der Seiten ist wirklich nett. Hier meine Seite über Browsergames. Zm Vergleich noch meine Auto Ersatzteile und das Carport Angebot auf Cadego. Kein Vergleich ;)
Einzig das Ausliefern des Feeds und der Sitemap war etwas nervig. (HTML statt RSS und fehlerhafte Codierung )

#routes.rb
match '/feed.rss' => 'foo#feed', :defaults => { :format => :rss }
#controller
class FooController < ApplicationController
caches_action :feed
def feed
#wichtig!
headers['Content-Type'] = 'application/rss+xml; charset=utf-8'
le = Foo.public.last
if stale?(:etag => le, :last_modified => le.updated_at.utc)
respond_to do |format|
format.rss { render :action => 'feed.rss.builder', :layout => false }
end
end
end
end

Die Asset Pipeline lieferte im im Production bei mir keine Assets aus, was aber an Sprocket lag. Eine Umstellung auf die letzte Github-Version löste das Problem.
Ich sehe gerade, die Formatierung ist übel. Kann man sich ja auch rauskopieren. ;)

Kommentare deaktiviertTags: rails · ruby

Rails 3.2 RC1

21. Dezember 2011 · Kommentare deaktiviert

Rails 3.2 RC1 ist raus. Hier die für mich wichtigsten Highlights:

  •  Explain Queries und als Bonus Explain für Slow Queries -> config.active_record.auto_explain_threshold_in_seconds = 0.5 . Landet aber als Warning im Logfile. Besser wäre da ein separate Datei.
  • Als Freund großer Anwendungen freut man sich natürlich über einen schnelleren Dev-Mode. Es werden nur die Dateien aktualisiert, welche verändert wurden. Kennen wir ja auch vom Testing ;)
  • Key / Value Store:  Kennen wir ja von Redis, memcached, Tokyo Cabinet und Google ;)   store :settings, accessors: [ :foo, :bar ] und los gehts. Für mich das Highlight.

 

 

 

Kommentare deaktiviertTags: Allgemein

Google Maps jetzt auch für Fußgänger

21. Dezember 2011 · Kommentare deaktiviert

Hab gerade den Routenplaner von Google benutzt. Gibt eine neue Option “Zu Fuß”. Ist allerdings Beta.
Witzig ist der Hinweistext.
“Der Routenplaner für Fußgänger ist noch im Beta-Stadium.
Seien Sie vorsichtig! – Auf dieser Route gibt es möglicherweise keine Bürgersteige oder Fußwege.”
Okay, bei mir war viel Landstraße dabei.

Google achtet halt auf seine Zielgruppe! >:)

Kommentare deaktiviertTags: Allgemein

Ilya Zhitomirskiy ist tot. Traurige Nachricht für alle Diaspora-Fans

14. November 2011 · Kommentare deaktiviert

Ilya Zhitomirskiy, einer der vier Gründer von Diaspora starb im Alter von nur 22 Jahren.
Hoffentlich geht es mit dem Projekt Diaspora weiter. R.I.P Ilya Zhitomirskiy

Zu Diaspora:
Diaspora ging als freie, dezentrale Facebook-Konkurrenz an den Start, wo der User entscheidet, was mit seinen Daten passiert.
Anfangs wurde die Idee hinter Diaspora durch die Community auch unterstützt,
wodurch es auch ~ 200.000 Dollar(trotz der zig Community-Versuche, die durch die kurzen Rails-Zyklen schnell wieder “deprecated” waren.
Ich sag nur Technoweenie ;)) an Spenden gab.
Allerdings war die Begeisterung nach der Quellcode-Veröffentlichung in der RoR-Community wegen der Lizenz und dem Vertrag, wo man seine Rechte abgibt, schnell vorbei (gibt da einen hitzigen Thread auf reddit). Man kennt als Ruby-Entwickler halt nur die MIT-Lizenz. Für mich sah es immer nach einer kalkulierten Exit-Option aus, aber dann kam Google+.

ps(der untere Teil lag schon im Draft)

Kommentare deaktiviertTags: rails · ruby

Rücktritt Premier Papandreou / Berlusconi

9. November 2011 · Kommentare deaktiviert

Laut Tickermeldung gab Premier Giorgos Papandreou seinen Rücktritt bekannt. Aber diese Meldungen gab es in den letzten Tagen ja schon öfters. (da ich die Küche mag, war ich gestern mit meiner Tochter beim Griechen :D)  Frage mich gerade. Diskutieren die beim Erfinder der Demokratie alles so extrem aus?

Noch eine drei positive Meldung aus Italien.  Berlusconi wurde endlich abgesägt. Für die Wirtschaft. Ducati stellt die 1199 Panigale und Fiat den Fiat 500 Abarth 695 Tributo Ferrari vor.

Kommentare deaktiviertTags: Allgemein

Ruby 1.9.3 & Rails 3.1.1

3. November 2011 · Kommentare deaktiviert

So, erstaunlicherweise hat mich nicht Rails oder Ruby , sondern diese nervigen rubygems-Warnungen und Fehlermeldungen (date-> alte Format s.date = %w{2011-xx-xx} ) zu dem Update bewegt. Ein leichtsinniges gem update und nix geht mehr. ;-) Mein Status war bei allen Anwendungen Ruby 1.8.7.x und Rails 2.3.x. (Zeitmangel)

Mein Zwischenfazit (Ruby 1.9.3, Rails 3.1.1 mit Zwischenstopp Rails 3.0.9):

Das Routing( *grins* mal wieder->nur wer schon länger mit RoR arbeitet) und die AR-finder verursachen doch wunde Finger.  Das Upgrade-Tool von Rails mag Infos liefern, beim Routing versagt es aber doch, da die Options verschluckt werden.

Falls Zeit & Lust aktualisiere ich den Artikel.

mfg Jens

Kommentare deaktiviertTags: Allgemein