CMS-Jack
Blog
Blog - Neues passiert
typo3javascriptjqueryimagecyclejfmulticontentlinuxcsssuexect3blogfastcgisexybookmarkspowermaildebianapacheimagecarouselt3jqueryfehlermac ostastaturcoin-slidernagioshtmlrtepagetypeimage cyclefirefoxsnippetanalysepatchjfcloudzoomxhtmltabscloudeffektcross-slideriossdkiphonexcodeirrejfimageflowbackenstylehooksbackendtyposcriptfadegrafikurljquery uithemerollerfollow mebildergalerieimageflow

Gravatar: Jürgen Furrer

Da mein Server unter SuExec läuft, werden CGI-Scripts nur ausgefährt, wenn diese unterhalb des Webverzeichnis liegen.

Leider werden bei einer normalen Installation von Nagios die CGI-Scripte aber im Ordner /usr/ abgelegt und somit können diese nicht von Apache ausgeführt werden (HTTP 500)

Damit Nagios auch in so einer Umgebung läuft, muss Nagios selbst konfiguriert werden.

Zuerst müssen die plugins installiert werden, diese können getrost von der distribution installiert werden:

apt-get install nagios-plugins

Danach muss Nagios herunter gelden und entpackt werden:

mkdir /root/download
cd /root/download
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.3.1.tar.gz
tar xvfz nagios-3.3.1.tar.gz

Als nächstes muss ein vhost angelegt werden mit dem Benutzer "nagios". Danach kann Nagios konfiguriert werden und die Installation vorgenommen werden:

cd /root/download/nagios
./configure --prefix=/var/www/nagios/libs/nagios --with-cgiurl=/nagios/cgi-bin --with-nagios-user=nagios --with-nagios-grp=nagios
sed -i 's:for file in includes/rss/\*;:for file in includes/rss/\*.\*;:g' ./html/Makefile
sed -i 's:for file in includes/rss/extlib/\*;:for file in includes/rss/extlib/\*.\*;:g' ./html/Makefile
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf

Jetzt müssen die Rechte angepasst werden, da wir die Installation mit dem Benutzer root gemacht haben:

chown -R nagios:nagios /var/www/nagios/libs
find /var/www/nagios/libs -type d -exec chmod 750 {} +
find /var/www/nagios/libs -type f -exec chmod 640 {} +
chmod 700 /var/www/nagios/libs/nagios/sbin/*
chmod 700 /var/www/nagios/libs/nagios/bin/*

Und zu guter Letzt müssen die Verknüpfungen erstellt werden:

cd /var/www/nagios/htdocs/public/
ln -s ../../libs/nagios/share/ nagios
rmdir /var/www/nagios/libs/nagios/libexec
ln -s /usr/lib/nagios/plugins/ libexec

Nun bleibt nichts mehr zu tun, als Nagios zu konfigurieren und Nagios neu zu starten:

/etc/init.d/nagios restart
Views: 32

Zurück

Jun
23

UILabel vertical align

iPhone
Gravatar: Jürgen Furrer

Wer schon mal eine iPhone-App programmieren wollte kennt das Problem bestimmt:

Der View UILabel hat keine Methode oder ein property um den Text vertikal auszurichten. Das ist gerade beim TableView ein Problem, da teilweise das Label zweizeilig ist und teilweise einzeilig, das ist dann nicht wirklich schön anzusehen.

Nach langem suchen habe ich dann endlich die Lösung gefunden, ein Plugin für UILabel

Zuerst erstellt man eine neu Klasse mit dem Namen VerticalAlign in XCODE (Ergibt zwei Dateien)

VerticalAlign.h und VerticalAlign.m

Und kopiert folgenden Code in die Klasse:

//  VerticalAlign.h

#pragma mark VerticalAlign

@interface UILabel (VerticalAlign)
- (void)alignTop;
- (void)alignBottom;
@end

 

//  VerticalAlign.m

@implementation UILabel (VerticalAlign)

- (void)alignTop {
    CGSize fontSize = [self.text sizeWithFont:self.font];
    double finalHeight = fontSize.height * self.numberOfLines;
    double finalWidth = self.frame.size.width;    //expected width of label
    CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
    int newLinesToPad = (finalHeight  - theStringSize.height) / fontSize.height;
    for(int i=0; i<newLinesToPad; i++) {
        self.text = [self.text stringByAppendingString:@"\n "];
    }
}

- (void)alignBottom {
    CGSize fontSize = [self.text sizeWithFont:self.font];
    double finalHeight = fontSize.height * self.numberOfLines;
    double finalWidth = self.frame.size.width;    //expected width of label
    CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
    int newLinesToPad = (finalHeight  - theStringSize.height) / fontSize.height;
    for(int i=0; i<newLinesToPad; i++) {
        self.text = [NSString stringWithFormat:@" \n%@",self.text];
    }
}
@end

Nachdem man die neue Klasse in seinem Projekt eingebunden hat:

#import "VerticalAlign.h"

kann man sein Label mit den neuen Methoden vertikal ausrichten:

    UILabel *customerLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 1, 150, 50)];
    customerLabel.text = @"to short for 2 lines";
    customerLabel.numberOfLines = 2;
    customerLabel.lineBreakMode = UILineBreakModeWordWrap;
    [customerLabel alignTop];
Tags: iphone, sdk, ios, xcode
Views: 318

Zurück