Archiv für die Kategorie 'Administration'

03
Mrz

Ruby on Rails Entwickler gesucht

Wir suchen einen erfahrenen und motivierten Softwareentwickler mit hervorrangenden Programmierkenntnissen und viel Kreativität als Verstärkung für unser Entwicklungsteam. Du liebst die Kunstfertigkeit der Programmierung und hast den Ergeiz verständlichen Code zu schreiben und diesen optimalerweise durch stetige, testgetriebene Refaktorisierung zu pflegen.

Als Senior bist du auch für den Design von Datenbanken zuständig und hast fundierte Kenntnisse in SQL sowohl auch der objektorientierter Analyse und Design unter Anwendung von Entwurfsmustern. Die bist von agilen Methodiken begeistert und arbeitest gerne im Team und verbesserst konstant die Abläufe und Qualität der Arbeiten und hilfts deinen Kollegen bei der Paarprogrammierung oder durch einen Code Review.

Du solltest sehr gute Kenntnisse im Design von besonders benutzerfreundlichen Webseiten haben, welche mit Prototype, Scritaculous und JQuery zum Leben erweckt werden. Du legst Wert auf eine saubere Trennung von XHTML, CSS und JavaScript und beherrscht diese Techniken anstandslos. Falls notwendig werden Unklarheiten in der Bedienung in einen Usability-Test geklärt.

Du arbeitest selbstständig im gesamten Prozess mit: Von der Beratung über den Design bis hin zur Entwicklung und Wartung der Systeme. Die bist kommunikativ und hilfst bei der Leitung der Projekte mit und kannst auch Pflichtenhefte und Kostenschätzungen erstellen.

Wir verwenden hauptsächlich Ruby on Rails/Radiant und Flex um hochdynamische Webapplikationen zu entwickeln, verwalten unseren Code mit Git und nutzen Apache/Passenger auf Linux Servern in der Produktion, auf welche wir mit Capistrano deployen.

Du solltest dich aber nicht scheuen auch einmal bei der Wartung von älteren Systemen in Java oder PHP Hand anzulegen, oder aber auch neues wie Erlang oder Objective C ausprobieren zu wollen. Kenntnisse von Java sind von Vorteil, da auch Ruby und Flex von der Java Plattform (JRuby) und Tools wie Ant profitieren können.

Obwohl unsere Applikationen professionell von einem externen Partner betrieben werden, solltest du dich gut mit der Administration diverser Linux Servern auskennen (Ubuntu/SuSE/RedHat/Debian) um die Umgebungen der diversen Test- und Produktivservern für unsere Projekte zu planen und verwalten.

Wir sind von den Vorteilen von Open Source überzeugt und stellen unsere eigenen Codes der Allgemeinheit zu Verfügung und helfen auch bei anderen Projekten aktiv mit.

Einige Jahre Erfahrung in der Entwicklung webbasierter Anwendungen sind ideal und du solltes über eine fundierte Ausbilung (ETH/Uni/FH) oder genügend praktischer Erfahrung in der Softwareentwicklung verfügen.

Wir sind ein kleines Team welches gerade im Umbruch ist. Weg von den grossen e-Commerce Systemen mit JEE zu eher kleinen, ausgetüftelten und  hoch-dynamischen Webseiten. Du hast die aussergewöhnliche Gelegenheit mit deinem Wissen den Weg in die Zukunft mitzugestalten.

Falls du dich angesprochen fühlst, schreib mir doch eine Email an michael.kessler@screenconcept.ch oder ruf mich unter 041 748 44 58 an, damit wir uns kennenlernen können. Und ja, wir arbeiten bereits an unserer eigenen Webseite, die aktuelle ist schrecklich ;-)

27
Jan

Berechtigungen für ein zentrales Git Repository

Mein erstes Git Repository auf dem Server war schnell erstellt:sudo mkdir -p /var/git/netzpiraten.gitcd /var/git/netzpiraten.gitgit –bare init –shared=group… und schon konnte ich loslegen …

git clone ssh://www.netzpiraten.ch/var/git/netzpiraten.gitcd netzpiratentouch testgit add testgit commit -a -m "Adding first file"git push origin master

… und hatte wirklich nie irgend welche Probleme mit dem zentralen Repository auf dem Server.Ein paar Monate später wurden auch in der Firma alle Subversion Repositories auf Git umgestellt und das lief auch ein Weilchen ohne Probleme, bis eines Tages folgende Fehlermeldung aufgetreten ist:

Counting objects: 31, done.Compressing objects: 100% (20/20), done.Writing objects: 100% (22/22), 239.64 KiB, done.Total 22 (delta 7), reused 0 (delta 0)error: unable to write sha1 filename ./objects/1c/1d505f3a585b9e7d298eb9477ab07c5ea79aea: Permission deniedfatal: failed to write objecterror: unpack failed: unpacker exited with error codeTo ssh://git.screenconcept.ch/var/git/repository.git ! [remote rejected] master -> master (n/a (unpacker error))

Also nichts wie auf den Server um das Repository etwas genauer zu inspizieren.Zum Glück konnte der Fehler schnell gefunden werden: Ich hatte vergessen auf den Git Repositories das Setgid Flag zu setzten, womit neue Dateien nicht der Git Gruppe gehörten sondern der Hauptgruppe des Benutzers. Klar das eine anderer Benutzer diese nun nicht einfach so überschreiben kann.Also schnell den Missstand korrigieren:

sudo chown -R :git /var/git
sudo find /var/git -type d | xargs chmod ug+rwx,g+s

… und jetzt kann wieder gemeinsam gearbeitet werden.

Man merke sich also folgendes für das Erstellen eines zentralen Git Repository:
  • Git Repository Verzeichnis erstellen
  • Das Verzeichnis der Gruppe ‘git’ zuweisen
  • Auf dem Verzeichnis das Setgid Flag setzten
  • Git Repository initialisieren

oder anders formuliert

sudo mkdir /var/git/repository.git
sudo chown :git /var/git/repository.git
sudo chmod ug+rwx,g+s /var/git/repository.git
sudo git init --bare /var/git/repository.git

… und nicht vergessen, Git macht am meisten Spass, wenn man auf GitHub teilt.

14
Nov

Leopard Single-Layer Installationsdisk für PowerPC

Beim Kauf meines neuen Alu iMacs war leider noch der Tiger dabei, so dass ich mir bei Apple den Leoparden günstiger nachbestellen musste. Ich wollte natürlich die neue Version auch noch auf meinem alten Powerbook installieren, doch leider machte mir die Upgrade CD einen Strich durch die Rechnung: Nachdem das Installationsprogramm mein altes OS X 10.4 erkannt hatte und als Update berechtigt empfunden hat, habe ich mit dem Disk Utility die Platte gelöscht um den Leoparden ganz frisch installieren zu können. Nach dem Löschen der Partitionen jedoch meldete das Installationsprogramm, dass kein altes OS X gefunden werden konnte und die Installation desshalb abgebrochen werden muss.

Naja, dann wird halt ein entsprechendes Torrent gesucht und installiert - eigentlich eine kurze Sache… Nur leider war es nicht möglich mit den Single Layer (SL) Versionen zu booten die ich gefunden habe. Egal, dann mach ich mir halt eine selber. Als erstes muss ein originales Image von einer Dual Layer (DL) Version von Mac OS X Leopard 10.5 heruntergeladen werden.

In einem ersetn Schritt muss das DMG in ein editierbares Image umgewandelt werden. Ich habe mich für das Format UDTO, also das DVD/CD-R Exportmaster Format, entschieden. Mit dem hdutil wird das originale Image ‘osx-leopard-dl-105.dmg’ konvertiert und gleich auch noch angeschlossen:

hdiutil convert osx-leopard-dl-105.dmg -format UDTO -o osx-leopard-dl-105.iso
hdiutil attach -readwrite osx-leopard-dl-105.iso.cdr -owners on

Als nächstes muss Platz geschafft werden, damit der Inhalt auch auf einer Single Layer DVD Platz hat. Also schnell zu den Installatonspaketen und X11, alle unnötigen Sprachen und Druckertreiber entfernen:

cd "/Volumes/Mac OS X Install DVD/System/Installation/Packages/"
sudo rm -rf X11User.pkg
sudo rm -rf BrazilianPortuguese.pkg Danish.pkg Dutch.pkg Finnish.pkg French.pkg  Italian.pkg Japanese.pkg Korean.pkg Norwegian.pkg Polish.pkg Portuguese.pkg Russian.pkg SimplifiedChinese.pkg Spanish.pkg Swedish.pkg TraditionalChinese.pkg
sudo rm -rf *Printer*

Bei den optionalen Paketen können wir auch ohne Schmerzen XCode entfernen (kann ja separat wieder heruntergeladen und installiert werden):

cd "/Volumes/Mac OS X Install DVD/Optional Installs"
sudo rm -rf "Xcode Tools"

Nun machen wir aus der Installations DVD eine neue, kleinere DVD und entfernen die alte Installations DVD vom System und melden dafür die neu erstelle DVD an:

sudo hdiutil create -srcdir "/Volumes/Mac OS X Install DVD" -format SPARSE osx-leopard-sl-105.dmg
sudo hdiutil detach "/Volumes/Mac OS X Install DVD" -force
sudo hdiutil attach -readwrite osx-leopard-sl-105.dmg.sparseimage

Zum Schluss muss die DVD noch für PPC bootbar gemacht und optimiert werden.

sudo bless -folder "/Volumes/Mac OS X Install DVD/System/Library/CoreServices" -bootinfo "/Volumes/Mac OS X Install DVD/usr/standalone/ppc/bootx.bootinfo"
update_prebinding -root "/Volumes/Mac OS X Install DVD" -force
hdiutil detach "/Volumes/Mac OS X Install DVD" -force

Jetzt kann das DVD Image auf eine echte SL DVD gebrannt werden:

hdiutil burn osx-leopard-sl-105.dmg.sparseimage

Fertig! Beim Booten dauert es auf meinem Powerbook schon fast 5 Minuten, bis das Installationsprogramm erscheint. Die Installation sollte natürlich nun auch angepasst werden und die entfernten Sprachen, Druckertreiber und X11 nicht mehr ausgewählt werden.

03
Jul

Chaos Singularity (Cosin) im KuZeB Bremgarten

Am kommenden Wochenende findet das Chaos Singularity 2007 im KuZeB in Bremgarten (AG) statt. Der Fahrplan sieht folgends vor:

Freitag, 06. Juli

  • NAT-PMP – NAT Port Mapping Protocol (Vortrag)
  • Reflextraining mit Vim (Workshop)
  • Geekclock Code and Hardware Walkthrough (Vortrag)
  • Token-Search - Web2.0 Suchmaschine (Vortrag)
  • Auf Nummer Sicher (Film)

Samstag, 07. Juli

  • Rechnen wir analog, mit Rechenschieber! (Workshop)
  • Geekclock Workshop Teil 1 (Workshop)
  • Geekclock Code and Hardware Walkthrough (Vortrag)
  • The internals of Debian packages (Vortrag)
  • Freifunk Firmware (Workshop)
  • OpenSSH knack (Vortrag)
  • GPL-kompatibles Lobbying, damit das nächste Silicon Valley in der Schweiz ist (Vortrag)
  • e-Voting in der Schweiz (Vortrag, Diskussion)
  • Projekt Präsentation FreieComputer.ch (Vortrag)
  • Entschwörungstheorie (Vortrag)
  • HBO Special - Hacking Democracy (Film)

Sonntag 08. Juli

  • Geekclock Workshop Teil 2 (Workshop)
  • Müllertube, Radioaktivität selber messen (Vortrag)
  • Amateurfunk: Do-it-yourself (Vortrag)
  • IceCream (Workshop)
  • Cosin - What’s next? (Treffen)

Mehr Infos zu den einzelnen Vortragen, Workshops und Filmen sowie die Zeiten findet ihr auf der Cosin Homepage.

Es besteht am ganzen Wochenende auch die Möglichkeit sich am CaCert Stand über das CaCert-Projekt zu Informieren und ausserdem auch Punkte zu bekommen (2 Ausweise, einer davon amtlich, z.B. Pass oder ID, mitbringen!).

Am Sonntag findet dann auch noch eine GPG Keysigning Party statt.

Alles in allem ein sehr gelungener Mix aus diversen Themenbereichen und eine einmalige Gelegenheit die CaCert Punkte aufzustocken. Das KuZeB bietet auch eine tolle Plattform für weiterführende Diskussionen. Der Anlass selber ist sicher nicht nur für Geeks interessant sondern für alle die sich für Technologie und die Auswirkungen auf die Gesellschaft interessieren.

09
Mai

OpenLDAP unter Ubuntu installieren

Wer seinen eigenen kleinen Server mit diversen Diensten betreibt kennt das Dilemma: Jede Applikation speichert seine Benutzerdaten separat, so dass nach einer gewissen Zeit ein kleines Chaos entstehen kann. Hier springt OpenLDAP in die Bresche, liefert es doch einen so genannten Verzeichnisdienst für die zentrale Authentifizierung und kann auch als zentrales Adressbuch genutzt werden. Die beschriebene Installation kann unter Umständen auch auf andere Linux Derivate (vor allem Debian basierte Linux Distributionen) angewandt werden. Um Konfigurationsdatei, die eventuell in anderen Verzeichnissen abgelegt sind, schnell zu finden, kann locate verwendet werden.
Die Installation der Pakete ist mit dem Paketmanager schnell gemacht:

sudo  apt-get install slapd ldap-utils 

Dabei werden wir nach dem gewünschten Administrationspasswort gefragt. Nach der Installation läuft der LDAP Server bereits, was wir mit nmap leicht überprüfen können:

nmap localhost | grep ldap
389/tcp  open  ldap

Damit wir während der Konfiguration einfach auf die Debuginformationen zugreifen können, richten wir noch den Syslog Deamon für OpenLdap ein. Als erstes setzten wir den gewünschten Log Level, indem wir folgenden Wert in /etc/ldap/slapd.conf anpassen. Um den Wert des gewünschten Loglevels herauszufinden müssen wir in der Man Page nachschauen und die gewünschten Eigenschaften zusammenzählen:

man 5 slapd.conf

Dort suchen wir nach loglevel:

1      trace function calls
2      debug packet handling
4      heavy trace debugging
8      connection management
16     print out packets sent and received
32     search filter processing
64     configuration file processing
128    access control list processing
256    stats log connections/operations/results
512    stats log entries sent
1024   print communication with shell backends
2048   entry parsing

…und können uns nun den gewünschten Loglevel berechnen. Ich interessiere mich für die Verbindungen, Operationen und deren Resultat (256), die Suchfilter (32) und das Verbindungsmanagement (8), was zusammengezählt 296 ergibt. Also können wir nun den Loglevel setzen:

loglevel 296

Damit wir alle Ausgaben in einer eigenen Datei haben, fügen wir noch folgenden Eintrag in die Syslog-Konfigurationsdatei /etc/syslog.conf ein:

local4.debug /var/log/slapd.log

nach dem Neustart des LDAP und Syslog Deamons können wir nun alle Logeinträge mit tail -f /var/log/slapd.log beobachten.

Als nächstes müssen wir den Dienst noch an unsere Bedürfnisse anpassen. Dazu müssen wir uns für einen eindeutigen Namen für unser Verzeichnis entscheiden. Dieser eindeutige Name wird auch als DN (Distinguished Name) abgekürzt und identifiziert die oberste Ebene unseres Verzeichnisses (Root). In meinem Fall nehme ich einfach meine TLD netzpiraten.ch, was als dc=netzpiraten,dc=ch geschrieben wird. Eine andere Möglichkeit wäre z.B auch o=netzpiraten,c=ch (o für Organisation und c für Land).

Also editieren wir einfach /etc/ldap/slapd.conf und legen als erstes unseren DN fest, indem wir suffix anpassen.

suffix    "dc=netzpiraten,dc=ch"

Wir müssen dann auch konsequent alle nachfolgenden dc=nodomain durch dc=netzpiraten,dc=ch ersetzten. Damit wir auch einen ersten Eintrag in den LDAP Server speichern können, legen wir einen lokalen Administrator an:

rootdn "cn=admin,dc=netzpiraten,dc=ch"
rootpw {SSHA}B3MTCdJ+bDiAUUzMuhPzcrmKG33+8Wkj

Das Passwort können wir mit dem Hilsprogramm slappasswd erzeugen:

slappasswd
New password:
Re-enter new password:
{SSHA}B3MTCdJ+bDiAUUzMuhPzcrmKG33+8Wkj

Und schlussendlich muss noch der Server neu gestartet werden:

/etc/init.d/slapd restart

Der Server wäre nun bereit, jetzt müssen wir noch den Clients sagen wo unser LDAP Server zu finden ist. Dazu legen wir /etc/ldap/ldap.conf mit folgendem Inhalt an:

ldap_version 3
URI     ldap://ldap.netzpiraten.ch:389
SIZELIMIT       0
TIMELIMIT       0
DEREF           never
BASE dc=netzpiraten, dc=ch

Nun sind wir bereit die ersten Daten einzuspeisen, dazu legen wir eine LDIF Datei base.ldif an, welche wir mit folgenden Objekten füllen:

 dn:dc=netzpiraten,dc=ch
objectClass: dcObject
objectClass: organization
o: netzpiraten
dc: netzpiraten

Die einzelnen Objekte müssen zwingen mit einer Leerzeile voneinander getrennt sein!

dn:cn=admin,dc=netzpiraten,dc=ch
objectClass: organizationalRole
cn: admin

Nun verwenden wir ldapadd zum hinzufügen:

ldapadd -x -W -D cn=admin,dc=netzpiraten,dc=ch -f base.ldif
Enter LDAP Password:
adding new entry "dc=netzpiraten,dc=ch"
adding new entry "cn=admin,dc=netzpiraten,dc=ch"

Und können das Ergebnis gleich vom LDAP Server abfragen:

ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#
# netzpiraten.ch
dn: dc=netzpiraten,dc=ch
objectClass: dcObject
objectClass: organization
o: netzpiraten
dc: netzpiraten
# admin, netzpiraten.ch
dn: cn=admin,dc=netzpiraten,dc=ch
objectClass: organizationalRole
cn: admin
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2

Nun ist unser LDAP Server einsatzbereit! Damit wir uns den Objektbaum auch besser veranschaulichen können, installieren wir noch phpldapadmin. Ich gehe davon aus, dass bereits ein Apache am laufen ist. Somit ist die Installation ein Kinderspiel:

apt-get install phpldapadmin

Da phpmyadmin ein LDAP Client ist, haben wir bereits durch das anlegen der ldap.conf genügen angaben gemacht um uns gleich bei der Webapplikation anzumelden. Einfach im Webbrowser den Pfad /phpldapadmin/htdocs/index.php öffnen.

phpLDAPadmin

Leider werden nun alle Passwörter im Klartext an den LDAP Server gesendet, was wiederum ein Sicherheitsrisiko ist. Darum aktivieren wir TLS damit alle Daten verschlüsselt werden in der Client-Server Kommunikation. In diesem Beispiel gehe ich davon aus, dass der Server bereits ein Zertifikat von cacert hat. In dem Fall ist eine der LDAP Server schnell konfiguriert, indem man /etc/ldap/slapd.conf folgendermassen anpasst:

TLSCACertificateFile   /etc/ssl/certs/cacert.org.pem
TLSCertificateFile      /etc/ssl/netzpiraten/netzpiraten.crt
TLSCertificateKeyFile   /etc/ssl/netzpiraten/netzpiraten.key

Als nächstes muss nur noch die Client Konfiguration in /etc/ldap/ldap.conf angepasst werden:

TLS_CACERT /etc/ssl/certs/cacert.org.pem
TLS_REQCERT demand



September 2010
M D M D F S S
« Jun    
 12345
6789101112
13141516171819
20212223242526
27282930  

Werbung


Buttonitis