Mittwoch, 13. Juli 2011

Oracle Tabelle in einen anderen Tablespace verschieben

Das Verschieben einer Tabelle von einem Tablespace in einem anderen sollte nur in Ausnahmefällen erfolgen. Dies kann z.B. notwendig sein, wenn die Performance drastisch sinkt. Sämtliche Indizes dieser Tabelle werden gelöscht und müssen neu erstellt werden.

alter table [schema].[ursprungs_tabelle] move tablespace [ziel_tablespace];

Die Indizes müssen neu gebildet werden.

alter index [schema].[index]  rebuild;

Donnerstag, 7. Juli 2011

Rails Migrations mit Oracle Enhanced Adapter

Da Oracle für verschiedene numerische Datentypen nur den Datentyp NUMBER kennt, kann dies zu Problemen führen, wenn eine Rails-Applikation auf eine bereits bestehende Datenbank zurückgreift. Wird eine neue Tabelle mit Hilfe von Migrations angelegt, werden die Datentypen wie folgt zugewiesen:
 :boolean => number(1)  
 :integer => number(38)  
 :float => number  
 :decimal => decimal  

Sind Integer-Werte in der bestehenden Datenbank mit NUMBER ohne Grössenangabe definiert, werden diese in der Rails-Applikation standardmässig als BigDecimal behandelt. Dies kann sich fehlerhaft auf die Applikation auswirken (Darstellungsprobleme, Vergleichsabfragen etc.).

Um das Problem zu lösen, können verschiedene Ansätze gewählt werden:

Wenn möglich, sollte der Datentyp auf der Datenbank angepasst werden (z.B. NUMBER(12)).
Mit der Option
 emulate_integers_by_column_name  
kann eingestellt werden, dass alle Datenbankfelder, welche auf ID enden, in der Applikation als Fixnum behandelt werden. Dazu kann die Datei config/initializers/oracle_enhanced.rb angelegt und mit folgendem Code abgefüllt werden:
 ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = true  

Um die Einstellungen global zu ändern, kann die Methode is_integer_column aus der Klasse OracleEnhancedAdapter überschrieben werden.

Müssen nur spezifische Attribute angepasst werden, können für diese im Model die Getter-Methode überschrieben werden.
 def attr   
  self[:attr].to_i if self[:attr].kinf_of? Numeric   
  self[:attr]  
 end  

Dienstag, 21. Juni 2011

jQuery Mobile Beta 1 veröffentlicht

Das JQuery Mobile Team hat die Beta 1 Version veröffentlicht. Es wurde viel Arbeit in Kompatibilität, Geschwindigkeit und Erweiterbarkeit gesteckt. Die Version 1.0 ist für den späten Sommer geplant. Bis dahin werden weitere Betaversionen in einem höheren Rhythmus veröffentlicht.
Die Kompatibilität wurde auf Blackberry 5 und Opera Mini ausgedehnt. WP7 wurde bereits in der Alpha 4 unterstützt.

Mehr dazu im offiziellen Blog-Post

Freitag, 17. Juni 2011

Tutorial - Facebook Fanseiten Pinnwand auf Contao-Webseite einbinden

Nachfolgend eine Anleitung, wie man die Pinnwand einer Facebook-Fanseite in eine Webseite einbindet, die mit Contao administriert wird.


1) Dateien downloaden und Access Token generieren
Die Dateien von http://www.neosmart.de/social-media/facebook-wall downloaden und entpacken. Bei der Live Demo den Access Token generieren lassen, dazu muss man im Facebook eingeloggt sein.

2) Einstellungen bearbeiten
Die Datei „jquery.neosmart.fb.wall.js“ öffnen. Am Ende der Datei lassen sich die Einstellungen bearbeiten. Die wichtigsten Einstellungen:
id: Name der Fanseite, beispielsweise „fanseite“ bei www.facebook.com/fanseite
accessToken: Den generierten Access Token einfügen

3) Dateien hochladen und einbinden
Für die beiden javascript Dateien unter plugins den Ordner fbwall erstellen. Diese Dateien im entsprechenden Template einbinden:

 <script src="plugins/fbwall/jquery-1.6.1.min.js" type="text/javascript"></script>  
 <script src="plugins/fbwall/jquery.neosmart.fb.wall.js" type="text/javascript"></script>   

Die css Datei beispielsweise in den Ordner „tl_files/css“ hochladen und einbinden:

 <link href="tl_files/css/jquery.neosmart.fb.wall.css" rel="stylesheet" type="text/css"/>  

Die beiden Bilder loader-small.gif und like.gif gemäss der css Datei ins richtige Verzeichnis hochladen.

4) javascript im Template einfügen
Folgenden javascript Code in das Template einfügen :

 <script type="text/javascript">  
 $(function(){  
 $('#fb_wall').fbWall({id:'',accessToken:''});  
 });  
 </script>  

Den Access Token auch hier einfügen. Für die id http://graph.facebook.com/fanseite
aufrufen.

5) html einfügen
Im entsprechenden Artikel ein Inhaltselement html erstellen und dort
 <div id=“fb_wall“></div>  
eintragen.