New stuff coming soon

Hi People,

we have some nice posts coming soon (so say we all), to break the silence. Everyone is very busy right now building awesome stuff. But hey, that is life =)

Cheers,
Finn

Bosch EcoLogixx 7 Kondenswasserbehälter voll

Ausnahmsweise mal wieder ein Beitrag auf Deutsch.

Ich zähle zu den Besitzern der Bosch EcoLogixx 7 der ersten Generation. Diese Maschine zeichnet sich durch einen wundervollen Fehler aus, dass sie nach unbestimmter Zeit immer meldet, dass der Kondenswasserbehälter voll sei. Dieser ist allerdings leer und auch der Filter ist sauber.
Wie man an den diversesten Stellen im Internet nachlesen kann, so scheint es ein Baufehler zu sein, welcher dafür sorgt das sich tonnenweise Flusen an dem “Self Cleaning”-Meachnismus vorbeischummeln und sich ganz unten in der Maschine sammeln.

Nun kann man für teuer Geld einen Techniker holen lassen, die Maschine selber zerlegen und reinigen oder aber man findet die Seite testberichte.de. Dort gibt es einen Beitrag welcher grob besagt:

  1. Kondensbehälter mit 50ml Dan-Klorix und 1L Wasser befüllen
  2. 10 Minuten den Modus: Kaltlüften
  3. 10 Minuten den Modus: Warmlüften

Done. Am Ende kann man einen Kondenswasserbehälter mit braunem Wasser entleren. Das Chlor scheint sämtliche Verstopfungen am Schwimmer zu beheben. Evtl. muss man noch ein paar normale Trockenvorgänge laufen lassen um das Chlor rauszubekommen.

Disclaimer: Ich kann in keiner Form sagen ob dadurch irgendwelche Schäden (Kurz- oder Langfristig) entstehen können, aber zumindest bei mir hat es geholfen und das Gerät trocknet wieder.

Mock void methods with mockito

Long time no see dear internet. We are not dead yet, just very busy. Which is kind of a good thing I guess.

I recently started using Mockito in my projects. Mockito enables you to very easily mock stuff in your unit tests. However I got stuck when I was about to test a method which calls the persist and refresh-method of the EntityManager. As you will know, or notice, is that the refresh method modifies the given argument and doesn’t return anything.
So now I needed to mock a void method, which modifies the argument instead of returning it.

The solution is suprisingly simple the Answer-Interface:

// Mock the refresh method of type Void
when(this.em.refresh(myEntity)).thenAnswer(new Answer<Void>() {
   @Override
   Void answer(InvocationOnMock invocationOnMock) throws Throwable {
      // Get the argument and modify it
      MyEntity entity = (MyEntity)invocationOnMock.getArguments()[0];
      entity.setId(1);
      entity.setVersion(1);
   }
});

Et voilà, now we can mock methods that modify their arguments very easily.

 

WordPress LESS mit http://lessphp.gpeasy.com/

Ich wollte meinem WordPress Templates das sehr nützliche LESS beibringen. Nach einem Kurzen Googler war es klar dort gibt es ein Plugin von http://leafo.net/lessphp/

Leider musste ich beim erstellen des Templates feststellen das es hier Fehler ausgaben gab obwohl mein LESS Code völlig korrekt war. Nach ein bisschen lesen im netz musste ich leider feststellen das die Umsetzung dieser LESS PhP Schnittstelle nicht auf dem aktuellen Stand war. Somit habe ich mich entschlossen die aktuelle Version con http://lessphp.gpeasy.com/ zu verwenden. Da es hier kein so ein komfortables Plugin gibt stelle ich hier ein kleines Code Schnipsel zur Verfügung das Ihr in eure functions.php einsetzen könnt um immer eine aktuelle CSS aus eurer LESS zu erzeugen.

Vorab müsst ihr in eurem Template einen Ordner mit dem namen less erzeugen. Hier packt ihr die aktuelle Version der LESS.php von gpeasy rein.

Danach erstellt ihr im Template rootverzeichniss eine .less Datei. In meinem Fall war dies die template.less

folgenden code packt ihr einfach in eure functions.php

// LESS Auto Compiler based on http://lessphp.gpeasy.com/
function autoCompileLess() {

	// include lessc.inc
	require_once( get_template_directory().'/less/Less.php' );

	// input and output location
	$inputFile = get_template_directory().'/template.less';
	$outputFile = get_template_directory().'/template.css';

	//LESS.php Options
	$options = array( 'compress'=>true );

	if (file_exists($inputFile)) {
		if (file_exists($outputFile)) {
			$putFile = filemtime($outputFile) < filemtime($inputFile) ? true : false;
		} else {
			$putFile = true;
		}
	}

	// output a Compiled CSS File
	if ($putFile == true) {
		$parser = new Less_Parser($options);
		$parser->parseFile( $inputFile, get_template_directory_uri());
		$css = $parser->getCss();

		file_put_contents($outputFile, $css);
	}
}

if(is_user_logged_in()) {
	add_action('init', 'autoCompileLess');
}

mit den Variablen $inputFile und $outputFile könnt ihr steuern welche LESSDatei eingebunden wird und welche CSS Datei erzeugt werden soll.

Die Variable $options beinhaltet die Konfigurationen für LESS.php hier im beispiel habe ich den Compressor aktiviert um die CSS Datei so gering wie möglich zu halten.

Nun immer wenn WordPress erkennt das ein eingeloggter user die Seite aufruft wird überprüft ob die CSS Datei existiert und eventuell älter ist als die LESS Datei. Sollte dies der fall sein wird die CSS Datei neu aus der LESS Datei erstellt.

Script Error = Can’t find variable: exports at …

I was playing around with appcelerator and suddenly got this error message:

Script Error = Can't find variable: exports at index.js (Line 1)

What I did before was to rewrite a whole lot of code to get it more structured. So I moved a code around, created new libraries etc. Google didn’t help me much. I found some articles with the same error but other reasons for it.

After quite a while I had an epiphany and renamed my library “app.js” to something different and tada, it worked! Afterwards I searched for forbidden filenames or similar in the appcelerator docs but couldn’t find a thing. So for whatever reason, app.js seems to be not a good name for a library in appcelerator.

Maybe someone else has a clue what my problem was or this information can help someone =).

Relay access denied on a fresh ISPConfig 3.0.5

I had a fresh ISPConfig setup, following one of the howtoforge-articles. Everthing was looking good until I tried to send a mail. What happened is that the server presented me with a wonderful “Relay access denied” message

Jan 22 00:46:28 blade postfix/submission/smtpd[26642]: NOQUEUE: reject: RCPT from ip-1-2-3-4.isp.de[1.2.3.4]: 554 5.7.1 <receiver@test.mail>: Relay access denied; from=<sender@my.server> to=<receiver@test.mail> proto=ESMTP helo=<[192.168.192.3]>

I rubbed my eyes and checked my mail client settings. But there was nothing to see, authentication for the SMTP was setup and I re-checked the information twice.
So I enabled dovecot debug and the log also told me that I authenticated me correctly.

Jan 22 00:47:18 blade dovecot: auth: Debug: client out: OK#0111#011user=sender@my.server

After some search I found that postfix, since version 2.10, has this wonderful smtpd_relay_restrictions setting which seemed to do the job for me. A quick change from

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination

to

smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination

combined with a little postfix restart and all my problems went away =)

403 Forbidden after Upgrade to Ubuntu 13.10

This is one for the “read your changelog”-category. After upgrading to Ubuntu 13.10 you will notice that your Apache starts throwing 403 forbidden at you. The reason behind this is pretty simple, the Apache version changed to 2.4 and there are a lot of things to have a look at (http://httpd.apache.org/docs/current/upgrading.html).

In this particular case I assume you had your working dev-setup with something like:

NameVirtualHost devstuff:80
<VirtualHost devstuff:80>
        DocumentRoot /my/folder/devstuff

        <Directory /my/folder/devstuff>
                Options +Indexes +FollowSymLinks +MultiViews
                AllowOverride all
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

The following part is what causes your problem. In Apache 2.4 the configuration has changed from

Order allow,deny
Allow from all

to

Require all granted

Change this, restart and you are done =)

Cheers

Thesis schreiben mit OpenOffice/LibreOffice

Der Artikel ist nicht mehr fertig geworden und leider untergegangen. In der Hoffnung das es aber dennoch jemanden helfen kann veröffentliche ich an der Stelle einfach den Draft. Bei Hinweisen, Ergänzungen oder Ideen bitte einfach kurz in die Kommentare, ich arbeite das dann bei Zeit ein.


Ausnahmsweise mal wieder ein Artikel auf Deutsch. Meine Erfahrungen während des Schreibens meiner Thesis mit OpenOffice einmal niedergeschrieben, in der Hoffnung das es anderen die Arbeit erleichtert und hilft Fehler zu vermeiden; Denn es muss nicht immer LaTeX sein, wenn man weiß wie man mit seinem Wordprozessor umgeht.

*disclaimer*

Dies ist meine Erfahrung, dass was mir half und was ich als Sinnvoll empfand. Es muss also nicht auf jeden zutreffen.

Continue reading Thesis schreiben mit OpenOffice/LibreOffice

Get JRebel to work with IntelliJ IDEA (>= 12)

ZeroTurnaround (the company behind JRebel) have a 5 step tutorial on how to get JRebel to work with IntelliJ IDEA. However, their last step “5. Success” didn’t seem to work for us. We were able to start our projects with JRebel, but we could change as much as we want in our code, nothing happened.

  • In order to get JRebel working you have to deploy an exploded war file.
  • To trigger JRebel you have to recompile the classes (Ctrl + F9)
    Some of us configured a macro which recompiles the classes on save. Personally I found this a bit annoying and so I’m still using the ctrl  + F9 shortcut

Now we can talk about “Success” =)

Solve “perl: warning: Setting locale failed.” on Ubuntu/Debian

Most of you will know this message (with similiar languages) the moment you execute something perl-based in the shell “perl: warning: Setting locale failed.”

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = "en_US:en",
	LC_ALL = (unset),
	LC_PAPER = "de_DE.UTF-8",
	LC_ADDRESS = "de_DE.UTF-8",
	LC_MONETARY = "de_DE.UTF-8",
	LC_NUMERIC = "de_DE.UTF-8",
	LC_TELEPHONE = "de_DE.UTF-8",
	LC_IDENTIFICATION = "de_DE.UTF-8",
	LC_MEASUREMENT = "de_DE.UTF-8",
	LC_TIME = "de_DE.UTF-8",
	LC_NAME = "de_DE.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

But how to fix this? There are multiple hints out there but most don’t show the correct way:

First run dpk-reconfigure locales

sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = "en_US:en",
	LC_ALL = (unset),
	LC_PAPER = "de_DE.UTF-8",
	LC_ADDRESS = "de_DE.UTF-8",
	LC_MONETARY = "de_DE.UTF-8",
	LC_NUMERIC = "de_DE.UTF-8",
	LC_TELEPHONE = "de_DE.UTF-8",
	LC_IDENTIFICATION = "de_DE.UTF-8",
	LC_MEASUREMENT = "de_DE.UTF-8",
	LC_TIME = "de_DE.UTF-8",
	LC_NAME = "de_DE.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

Now compare the output of “Generating locales…” with the output of the perl warning. You’ll notice that some languages are missing:
de_DE.UTF-8 -> not in the list
en_US.UTF-8 -> in the list

Now generate the missing locale(s)

sudo locale-gen de_DE.UTF-8
Generating locales...
  de_DE.UTF-8... done
Generation complete.

Done! Have fun