Dienste starten auf Lion Server

Nach einem Update auf Mac OS X 10.7 Lion und anschließender Installation des Servers lassen sich verschiedene Dienste u.U. nicht starten. Hier hilft ein Zurücksetzen der Apache Defaulteinstellungen mit: sudo /System/Library/PrivateFrameworks/ServerFoundation.framework/Resources/xswebconfig restorefactorysettings

Vorher empfiehlt sich die Sicherung des verzeichnisse /etc/apache2

Posted in Mac | Tagged , | Leave a comment

Mac Update auf OS X 10.7 Lion und php

Mit dem Update auf Lion erfolgt auch ein php-Update auf die Version 5.3.6.  Das Upgrade benennt die Datei /etc/php.ini um in php.ini-5.2-previous und legt eine neue Datei  php.ini.default an.

Die neue Datei muss man also kopieren nach /etc/php.ini und dort ggfs. Anpassungen vornehmen. Dies wird in den meisten Fällen der Eintrag für den Pfad zum mysql Socket sein.

Posted in Mac | Leave a comment

Installiertes Ubuntu

Wenn man nicht mehr weiss, welche Version von Ubuntu man auf dem Server vor langer Zeit mal installiert hat, hilft ein

cat /etc/issue

Posted in Server | Leave a comment

Impressumgenerator

Der Abmahner lauert hinter jeder Ecke, weshalb ein abgesichertes Impressum auf der Website viel Zeit, Ärger und Geld sparen kann. Nützlich erscheint mir ein kostenloser Impressumgenerator, den man hier findet:

http://www.e-recht24.de/impressum-generator.html

Inwieweit die Ergebnisse des Generators tatsächlich korrekt sind, kann ich natürlich nicht endgültig beurteilen.

Posted in Allgemein | Tagged | Leave a comment

Kontaktformular für WordPress

Ich suchte ein einfaches Plugin ohne viel Schnickschnack, das aber dennoch leicht angepasst werden kann und in einer deutschen Übersetzung vorliegt.   MitContact Form 7 habe ich schließlich das Passende gefunden. In diesem Blogeintrag sind detaillierte Informationen.

Posted in Wordpress | Leave a comment

Bloggen mit MarsEdit auf dem Mac

Auf der Suche nach einem Blogeditor für den Mac bin ich u.a. auf MarsEdit gestoßen, das ich hier kurz vorstellen möchte. Auf Alternativen gehe ich kurz am Endes dieses Artikels ein. Das Programm kann für 31,99 € im App Store erworben werden. Eine befristete Downloadlizenz gibt es direkt beim Hersteller Red Sweater.

MarsEdit soll m.o.w. die gesamte Palette an Blogsystemen und -schnittstellen unterstützen. Ich selbst benutze WordPress und kann daher zur Zeit nichts über die Zusammenarbeit mit anderen Systemen berichten, ich empfehle aber jedem, sein Blogsystem intensiv mit verschiedenen Desktopeditoren zu testen bevor man sich zu einem Kauf entschließt. Jede Blogsoftware kann sich durch bestimmte Alleinstellungsmerkmale auszeichnen, die nicht zwangsweise von allen Editoren unterstützt werden.

Nach der problemlosen Installation gibt man dem Assistenten die Blog-URL sowie Benutzernamen und Passwort bekannt. Der Assistent berechnet dann selbständig die für das jeweilige Blogsystem erforderlichen Einstellungen, die aber auch nachträglich geändert werden können.

 

NewImage

 

Im Hauptfenster finden sich die einzelnen Blogs sowie deren Artikel. Hier gefällt mir besonders die Unterstützung von WordPressseiten. Ebenso hervorzuheben ist die problemlose Unterstützung von WordPress Multisites. In den Einstellungen jedes Blogs ist die Anzahl der aktualisierten bzw. vom Server abgeholten Artikel per Default auf 30 beschränkt. Wenn der eigene Blog schon mehr Einträge hat, empfiehlt es sich, diesen Wert einmalig hochzusetzen und alle Artikel mit einem Klick auf Refresh herunterzuladen.  Danach kann man dann wieder einen kleineren Wert einstellen.

Editor

Ein Artikel wird in einem separaten Fenster bearbeitet, parallel dazu wird der Artikel in einem Vorschaufenster angezeigt, wenn dies in den Blogeinstellungen aktiviert ist. Man kann auch die HTML-Vorlage der Vorschau anpassen, sodass sie ggfs. das spätere Onlinedesign wiedergibt.

Ein Klick auf Options zeigt auf der rechten Fensterseite des Editors eine Spalte zur Bearbeitung der Artikelkategorien. Außerdem können Einstellungen zu Kommentaren, Artikelstatus und Trackbacks vorgenommen werden. Im View-Menu wird eingestellt, ob unter der Titelzeile noch Eingabefelder für Tags und einen Artikelauszug angezeigt werden. Soweit vom Blog unterstützt kann ein Artikel auch im Post Menu geteilt werden in Body und Extended Text . Die zwei Textsektionen werden dann untereinander im Editorfenster angezeigt.  Ein Artikel wird im HTML- oder Rich Text-Modus bearbeitet (Post -> Edit Html Text, Edit Rich Text). Formatbefehle werden über das Formatmenu, das auch mit der rechten Maustaste aufgerufen werden kann, angezeigt.  Im HTML-Modus  können alle Formatierungsmakros editiert bzw. neu erstellt werden. Die entsprechenden Keyboard Shortcuts sind ebenfalls konfigurierbar .

Bilder

Ein Klick auf Media öffnet ein Fenster zur Bildauswahl:

Bild Media Manager

Insert fügt das Bild am Cursorstandort ein. Unter Style kann man sogenannte HTML-Makros auswählen, die zur Bilddarstellung eingefügt werden. Bei den vorbelegten Makros verrät der Name schon ziemlich eindeutig, worum es geht (zumindest für den CSS-kundigen): Bildpositionierung in der Mitte oder an der Seite mit umfließendem Text. Ein Klick auf Edit am Ender der Styleauflistung  zeigt das folgende Fenster:

Bild für Stylebearbeitung

 

Hier kann man nun eigene Makros definieren oder die bestehenden Anpassen. Schauen wir uns z.B. mal “Align Left” an:

Bildschirmfoto 2011 04 05 um 16 35 45 150x150

Das “Opening-Fenster” lässt sich leider nicht vergrößern. Hier der vollständige Code:

<img src="#fileurl#" alt="#alttext#" title="#displayname#" border="0" width="#imgwidth#" height="#imgheight#" style="float:left;" />

Die mit “#” eingezäunten Begriffe sind Platzhalter, die man sich unter Insert Placeholder im Text einfügen lassen kann. Die vorgegebenen Makros haben leider alle keinen Außenabstand definiert, weshalb der Text unmittelbar an das Bild anschließt. Um die Bilder mit einem Abstand von 10px zu versehen, könnte man also einfach das Makro wie folgt ändern:

<img src="#fileurl#" alt="#alttext#" title="#displayname#" border="0" width="#imgwidth#" height="#imgheight#" style="float:left; padding-right: 10px;" />

Alternativen

Blogo bietet einen ähnlichen Funktionumfang wie MarsEdit. Das Design ist etwas ausgefallen und nicht unbedingt mein Fall. Die Bildbearbeitung bietet mehr Möglichkeiten und man kann das Veröffentlichungsdatum eines Artikels setzen, dafür vermisse ich die WordPress-Seiten-Bearbeitung.

Ecto ähnelt äußerlich dem Erscheinungsbild von MarsEdit, bietet aber wie Blogo mehr Gestaltungsmöglichkeiten. Ich bin beim Test des Programms auf die Nase gefallen beim Versuch, einen WordPress Multisite-Blog zu bearbeiten. Beim Fehlergoogeln schlich sich bei mir der verdacht ein, dass das Programm nicht mehr aktiv gepflegt wird und habe mich daher nicht weiter damit beschäftigt. Ansonsten ist es aber vermutlich mindestens genauso gut wie MarsEdit.

MacJournal ist eigentlich keine wirkliche Alternative. Es handelt sich dabei um ein ausgezeichnetes Tagebuch-  bzw. Notizenprogramm mit angestrickter eingeschränkter Bloggingfunktion.

Sicherlich gibt es noch weiter Alternativen und freue mich über entsprechende Tipps.

Fazit

Für mich ist MarsEdit die erste Wahl. Die Zusammenarbeit mit WordPress funktioniert einwandfrei und der Editor ist m.E. ausgezeichnet. Die fehlenden Bildbearbeitungsmöglichkeiten stören mich nicht, ich kann mir aber vorstellen, dass dies für andere Benutzer das entscheidende Kriterium ist. Ein weiterer Wermutstropfen ist die fehlende deutsche Übersetzung, die nur MacJournal bietet. Bei Ecto ist sie nur rudimentär vorhanden.

 

 

Forum: http://www.red-sweater.com/forums/categories/marsedit

Posted in Mac, Wordpress | Tagged , | Leave a comment

NSOutlineview mit NSTreeController beim Anwendungsstart aufklappen

Prinzipiell kann man einen Outlineview im Programm komplett aufklappen, so dass alle Items zu sehen sind:

[outlineView expandItem:nil expandChildren:YES];

Dummerweise lädt der NSTreeController seinen content erst nachdem awakeFromNib aufgerufen wurde.
Um zu gewährleisten, dass alle Daten vor dem Aufklappen geladen sind kann man einen Observer auf den keyPath content des TreeControllers setzen. Der Observer klappt dann den Outlineview auf:

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context
{
    if (object == treeController) {
 // erste Zeile aufklappen
 //   [outlineView expandItem:[outlineView itemAtRow:0]
 //           expandChildren:NO];

// alle Items aufklappen
	[outlineView expandItem:nil expandChildren:YES];
        [treeController removeObserver:self
                            forKeyPath:@"content"];
    }
}

-(void) awakeFromNib{
	[treeController addObserver:self
                 forKeyPath:@"content"
	         options:0
                 context:nil];
}

Diesem Blog entnommen: http://simplyhacking.com/expanding-nsoutlineview-nodes-at-application-start.html

Posted in Mac | Tagged | Leave a comment

will_paginate mit einem Array

Hier eine einfache Funktion, mit der man in einer Nicht-ActiveRecord Collection blättern kann.
Aus diesem Blog entnommen: http://errtheblog.com/posts/56-im-paginating-again

erledigt wird das Ganze durch folgende Funktion:

def paginate_collection(collection, opts = {})

opts[:per_page] ||= 20

opts[:page] ||= 1

opts[:page] = opts[:page].to_i

returning WillPaginate::Collection.new( opts[:page], opts[:per_page], collection.size ) do |pager|

start = (opts[:page]-1) * opts[:per_page]

finish = start + opts[:per_page]

pager.replace collection[ start...finish ]

end

end

Wenn unser Controller eine Collection erstellt hat, können wir sie nun für den View mit will_paginate aufbereiten:

@collection = paginate_collection(@collection, :page => params[:page],:per_page => 5)

Posted in Rails | Leave a comment

rails, ubuntu 8.04, apache,plesk,git und passenger

Im Folgenden beschreibe ich die Konfiguration eines Ubuntuservers für eine Railsanwendundung.
Es handelt sich um einen V-Server bei 1blu.de mit Plesk.

Ruby
Ubuntu kommt mit ruby 1.8.6. Version 1.8.7 kompiliert man am besten selbst:

1        sudo apt-get remove ruby
2        sudo apt-get remove ruby1.8
3        sudo apt-get install build-essential libssl-dev libreadline5-dev zlib1g-dev
4        wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.gz
5        tar zxvf ruby-1.8.7-p22.tar.gz
6        cd ruby-1.8.7-p22
7        ./configure –prefix=/usr/local –with-openssl-dir=/usr –with-readline-dir=/usr –with-zlib-dir=/usr
8        make
9        sudo make install

10        Rubygem download von http://rubyforge.org

11        cd rubygems -xxxx
12        sudo ruby setup.rb
es kommt die Meldung „rubygems installed“ ,danach passiert relativ lange nichts bis die         Installation dann irgendwann doch noch mit diversen Meldungen abgeschlossen wird.

mysql

1        sudo apt-get install mysql-client mysql-admin mysql-query-browser libmysqlclient15-dev
2        sudo gem install mysql

Phusion Passenger
1        sudo gem install passenger
2        Passenger konfigurieren:
sudo passenger-install-apache2-module
Das Programm zeigt die LoadMudule-Anweisungen für den Apache an. Diese habe ich in /        etc/apache2/apache2.conf eingetragen. Das ist wahrscheinlich nicht die sauberste Lösung,         aber es funktioniert. Wenn ich Pech habe, überschreibt mir Plesk vielleicht eines Tages         meine Änderungen. Ich habe zur zeit einfach keine Lust, mich näher damit zu beschäftigen.

Apache
Bei Ubuntu werden normalerweise die die Domainkonfigurationen in /etc/apache2/sites-available hinterlegt.
Mit Plesk sieht die Sache etwas anders aus. Hier liegt die Konfiguration in/var/www/vhosts/domainname/conf. Alle Einträge sind hier in der datei httpd.include. Diese wiederum macht einen include der Datei vhost.conf. Genau hier kann ich alle Einträge wie z.B. die DocumentRoot überschreiben. Man kann auch andere dateien nehmen, wie den Kommentaren in httpd.include zu entnehmen ist.

1        /var/www/vhosts/cd-junkie/conf/vhost.conf:

DocumentRoot PfadZumVerzeichnisMitDenRailsdateien/current/public
<Directory „PfadZumVerzeichnisMitDenRailsdateien/current/public“>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

2        Die Datei einmalig Plesk bekanntgeben
sudo /usr/local/psa/admin/bin/websrvmng -a -v

3        sudo /etc/init.d/apache2 restart

Gems
1        sudo apt-get install git-core
2        sudo apt-get install rails

Deployment
1        cap deploy:setup
2        cap deploy
ls

Posted in Allgemein | Leave a comment

Javascript Datei templateabhängig im Header

Wenn man nicht alle Javascriptfunktionen in jeder Controller Action einbinden will ohne unterschiedliche Layouts zu benutzen, kann man diese Dateien mit content_for dynamisch einbinden.
Diese Erkenntnis verdanke ich Ryan Bates bzw. http://railscasts.com .

Vereinfacht wird das Ganze durch eine kleine Helperfunktion, die ich von Ryan übernommen habe:

def javascript(*args)
args = args.map { |arg| arg == :defaults ? arg : arg.to_s }
content_for(:head) { javascript_include_tag(*args) }
end

Die Funktion nimmt eine beliebige Anzahl von Dateinamen entgegen und bindet sie dann ein. In diesem Beispiel an der Stelle des Layouts mit der Anweisung yield(:head)

Im Layout:
<head>
.
.
<%= yield(:head) %>
</head>

Im Template(normalerweise index.html.erb) binde ich dann die spezifischen Dateien ein :
<% javascript ‘meine_javascript_datei, ‘eine_andere_datei‘’%>

Posted in Rails | Leave a comment