Kategorie: OpenSource

iTerm2 und tmux

Als vermeintlich bessere Alternative (dazu habe ich noch keine eigene Meinung) zu screen bietet sich tmux als Terminal Multiplexer an. Nachdem tmux seit dem letzten Beta Release von iTerm2 stark in darin integriert ist, werde ich mir das einmal näher ansehen.

Links:

jQuery Accordion mit inaktiven (nicht aufklappbaren) Einträgen

[UPDATE]
in neueren jQuery (Core, UI) Versionen gibt es keinen _clickHandler mehr,
ich habe hier dann eine bessere Lösung über Events gefunden:
http://stackoverflow.com/questions/5958063/jquery-ui-accordion-disable-tab

——————–

Manchmal braucht man ein Accordion, das aus aktiven und inaktiven (nicht aufklappbaren) Einträgen besteht.

Mit jQuery lässt sich auch das recht elegant lösen.

Angenommen, wir haben folgende HTML Struktur:

<h3>Eintrag 1 - aktiv</h3>
<p>dieser Eintrag lässt sich öffnen</p>
<h3 class="ui-state-disabled">Eintrag 2 - inaktiv</h3>
<p>hier setzen wir auf den Header eine CSS Klasse, die das Element
später auch visuell als inaktiv kennzeichnet; kann entweder
schon am Server passieren oder aber auch per JS am Client</p>
<h3>Eintrag 3 - aktiv</h3>
<p>und noch ein Element, das sich öffnen lässt</p>

dann brauchen wir noch folgendes Javascript, um das ganze zu aktivieren:

Mails unter Windows mit PHP versenden

Manchmal hat man das Problem, dass man lokal unter Windows ein Mail mit PHP verschicken muss aber der Mailserver Authentfizierung erfordert. Die php.ini erlaubt aber nur den Host (Parameter „smtp“) und den Port (Parameter „smtp_port“) einzustellen, also was tun? Anstelle sich einen kompletten Mailserver zu installieren, installiert man sich einen einen Fake-Sendmail, der als Mail Transfer Agent (MTA) fungiert und die Mails an den Mailserver weiterleitet. Das kleine Programm findet sich hier:

http://glob.com.au/sendmail/

Einfach in einen Ordner stellen und konfigurieren (Parameter „sendmail_path“). Es ist nur darauf zu achten, dass der Pfad keine Leerzeichen enthält. Im File „sendmail.ini“ trägt man dann alle nötigen Einstellungen ein und schon können Mails problemlos verschickt werden. Üblicherweise sollten folgende Parameter gesetzt werden: „smpt_server“, „default_domain“, „hostname“ sowie „auth_username“ und „auth_password“.

Postfix: alle mails kriegen

Manchmal machts (vorallem auf Entwicklungsservern) Sinn alle ausgehenden Mails unabhängig von der Empfängeradresse an einen Empfänger zuzustellen.

Postfix macht einem sowas recht einfach.

Nehmen wir an wir wollen alles an catchall@mydomain.invalid zustellen.

Als erstes tragen folgendes in die /etc/postfix/main.cf ein


always_bcc=catchall@mydomain.invalid
transport_maps = hash:/etc/postfix/transport

Damit werden schon mal alle Mails als bcc an catchall@mydomain.invalid gesendet.

Als 2. Schritt konfigurieren wir die Transport-Table (/etc/postfix/transport) so daß nur an diese Adresse zugestellt wird.


catchall@mydomain.invalid :
* discard:silently

Die erste Zeile bewirkt daß Mails an catchall@mydomain.invalid „normal“ zugestellt werden.
Die 2 Zeile verwirft Mails an alle anderen Empfänger.

XAMPP PHPUnit 3.5.13 Installation Howto

Sollte Ihnen dieser Fehler bekannt sein:
Could not open input file: .\pear\PHPUnit2\TextUI\TestRunner.php
dann gibts hier die Lösung.

Nachdem wir mehrere Server auf PHP 5.3 und MySQL auf 5.1 hochgezogen hatten,
war es an der Zeit auch meine lokale Umgebung (ältere XAMPP-Instanz) einem Upgrade zu unterziehen. Also XAMPP in der aktuellen Version (1.7.4) mit Apache 2.2.17, MySQL 5.5.8 und PHP 5.3.5 installiert, und …

BOOOM, jeder Aufruf von phpunit krepierte mit obiger Fehlermeldung.

Dies lässt sich zwar einfach fixen indem man im File C:\xampp\php\phpunit.bat die Pfade absolut setzt, aber dann hat man noch immer nur eine veraltete phpunit Version, die einen nicht glücklich machen wird. Auf unseren Debian-Servern läuft derzeit PHPUnit 3.5.11 also gilt es diese Version auch lokal zu haben.

Spass mit Git Episode 1: Wie werden aus 126MB 4.8GB

Oder wie krieg ich alle im SVN getagten Typo3-Releases als typo3_src-Targets

Was brauch ich:

  1. git mit SVN Support
  2. Internet
  3. Genug Platz auf der Platte

Schritt 1: Wir holen und das Typo3-SVN-Repository in der git-Version auf die Platte

cd ~/tmp
mkdir repo
cd repo

git svn init --stdlayout https://svn.typo3.org/TYPO3v4/Core
git svn fetch

Das Ganze dauert je nach Bandbreite etwas. Updates gehen später natürlich schneller.

Die Option –stdlayout gibt an daß das SVN-Repo die Standard-Aufteilung in trunk/branches/tags verwendet.

Die finale Grösse des git-Repositories (im .git Verzeichnis) beträgt nach heutigem Stand ca. 126M. Während des Checkouts kanns schon mal auf > 400MB anwachsen.
git gc machts immer wieder schön klein.

Arduino + Ethernet Shield + SHT15 Temperatur und Feuchtigkeitssensor

Nach längerer Pause beschäftige ich mich wieder ein wenig mit dem Arduino und div. Anwendungen. Hier möchte ich das notwendige Material, den Aufbau und ein kleines Programm zum Auslesen der Temperatur und Luftfeuchtigkeit vorstellen.

Was brauche ich?

Aufbau

Die MAC Adresse vom Arduino Ethernet Shield notieren (Aufkleber), das Ethernet Shield auf dem Arduino Uno anbringen und danach dem SHT15 die 4 Pins auflöten und im Breadboard einstecken.
Danach folgende Verbindungen vom SHT15 mit dem Arduino Ethernet Shield herstellen:

Magento: eigenen SOAP API Call implementieren

Ich hatte einige Mühe das zum Laufen zu bringen, daher hier eine Anleitung, um andere davor zu bewahren. Dankbare mögen sich melden, es stehen viele Dinge auf meiner Amazon Wunschliste ;-)

Zuerst zur Struktur unseres Modules. Ich gehe davon aus, dass wir ein eigenes Modul haben, das den Catalog von Magento erweitert (das auch schon selbständig funktioniert) und wir folgende Verzeichnisstruktur haben:

app/code/local/Mycompany/MyclientCatalog/
 + Block/
 + Helper/
 + Model/
   + Category/
 + ...
 + etc/

Für die API erstellen wir jetzt folgende neue Dateien:

Model/Category/Api.php
etc/api.xml

mit folgendem Inhalt:

TYPO3 / Apache Solr Extension / dynamisches Feld (dynamicField) befüllen

Ziel: ein Feld (dynamicField, siehe Solr Dokumentation bzw. schema.xml) für ein Seiten-Dokument im Index dynamisch über eine Userfunction befüllen.

TypoScript Setup:

includeLibs.my_solr = EXT:user_my_solr/class.user_my_solr.php
plugin.tx_solr {
   enabled = 1
# …
   index {
      additionalFields {
# intS = Integer single value
# S = single value
# M = multi value
# ...
         myfield_intS = USER
         myfield_intS.userFunc = user_my_solr->get_myfield
      }
   }
}

und das kleine Script in typo3conf/ext/user_my_solr/class.user_my_solr.php:

<?php
class user_my_solr {
   function get_myfield($content, $conf) {
      global $TSFE;
// do something
// $value = 2323;
      return $value;
   }
}
?>

Aufpassen muss man ev., dass man die richtige Version der solr TYPO3 Extension hat. Bei älteren Versionen hat das definitiv leider noch nicht funktioniert.

Rails 3: default_scope umgehen, Teil 2

In diesem Artikel ging es schon einmal darum, den default_scope eines Models in manchen Fällen zu umgehen.

Jetzt fand ich noch einen zweiten Weg, der ein wenig eleganter scheint, als meine damalige Lösung:

class CarsController < ApplicationController
  def my_view

# same result
# a) using unscoped ...
    Car.unscoped do
      @cars = Car.order('manufacturer')
    end
# ... or b) using except
    @cars = Car.except(:order).order('manufacturer')

  end
end

Dokumentation zu except

Anfrage