Sonntag, 15. November 2015

AndroidSecured - Sicherheitstipps: Google speichert Sprachsuchen

AndroidSecured - Sicherheitstipps: Google speichert Sprachsuchen: Jeder kennt es, mit einem einfachen "OK Google", kann man die Sprachsuche aktivieren. Diese muss  vor allem in Verbindung mit eine...

Freitag, 6. November 2015

Webservice Abfrage per Konsole mit wget

Mit Hilfe von Soap UI kann man Anfragen von Webservices (z.B. Axis2) per GUI testen. Allerdings kann es vorkommen, dass z.B. nur der jeweilige Server eine Firewallfreischaltung für den Webservice hat. Ist dies der Fall, kann man eine Webservice Anfrage auch mittels Konsole und wget durchführen.

Dafür benötigt man folgendes:
  • input.xml - Anfrage an den Webservice
  • soapResponse.xml - Hier wird der Response vom Webservice hinterlegt
  • webservice.sh - Ausführbares shell script mit der wget Anfrage
Inhalt webservice.sh (incl. Basic-Auth und http-header):

wget http://www.xqz.de/axis2/services/WebService --http-user=TEST --http-password=XYZ123 --post-file=input.xml --header="Content-Type: text/xml" --header="user: TEST" --output-document=soapResponse.xml

Montag, 12. Oktober 2015

Efficients: Wenn man Zeit zum Denken hat, kommen die guten Ein...

Efficients: Wenn man Zeit zum Denken hat, kommen die guten Ein...: Ständig wird vom Mitarbeiter verlangt, er solle über den Tellerrand hinausschauen, neue Möglichkeiten und Chancen erkennen oder aufbauen. Di...

Android 6.0 - package org.apache.http.client does not exist

Google hat beim Android 6.0 Release die Unterstützung für den Apache HTTP-Client entfernt.
Error:(14, 23) error: package org.apache.http does not exist
Mit der folgenden Einstellungen kann man ihn aber weiterhin verwenden:
 android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    useLibrary  'org.apache.http.legacy'
Siehe hierzu auch http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

Sonntag, 11. Oktober 2015

Android Studio - IntelliJ SVN Probleme nach Neuinstallation

Subversion command line client version is too old

Nach der Installation des neuen Android Studio (Version 1.4) und der neusten SVN Version (z.B. TortoiseSVN oder SlikSvn 1.9.2) hatte ich die folgende SVN Fehlermeldung erhaleten:
"Can't use Subversion command line client: C:\Program Files\SlikSvn\bin\svn.exe. Subversion command line client version is too old (1.9.2)."

Lustigerweise ist die SVN Version nicht zu alt, sondern zu neu :-)

 Android Studio kann aktuell nur mit Versionen kleiner 1.9.0 umgehen, daher ist eine Installation von z.B.  Slik-Subversion-1.8.9-x64.msi notwendig.

Siehe hierzu auch  https://youtrack.jetbrains.com/issue/IDEA-140754

The working copy is too old 

Da ich zuvor eine ältere Version vom SVN installiert hatte, wurde mir jetzt noch folgende Fehlermelding angezeigt:
svn: E155036: Please see the 'svn upgrade' command svn: E155036: The working copy at 'D:\Workspace-Android-IntelliJ\mittagsangebotbeta' is too old (format 29) to work with client version '1.8.9-SlikSvn-1.8.9-X64 (SlikSvn/1.8.9) X64' (expects format 31). You need to upgrade the working copy first.
Die Lösung dafür ist relativ einfach, muss ein Update des SVN Verzeichnisses von dem Projekt durchführen. Dafür in das betroffene Verzeichnis gehen und den Befehl svn upgrade ausführen.


Sonntag, 27. September 2015

Raspberry Pi - Webserver installieren

Mit dieser Anleitung ist es möglich auf dem Raspberry PI einen Webserver (Lighttpd sowie PHP) zu  installieren. Diese funktioniert desweiteren auch mit Debian und Ubuntu ;-)

Der Grund für die Installation ist, dass ich in meinem Heim-Netzwerk grafisch aufbereitete Daten von meinem Temperatur Sensor (http://sebastianhemel.blogspot.de/2015/01/temperatursensor-ds18b20-raspberry-pi.html) bereitstellen möchte.

Mit Hilfe des Programms MRTG (Multi Router Traffic Grapher) und RRD (Round-Robin-Database) lassen sich unter Linux sehr schnell grafische Auswertungen und Darstellungen von Messwerten erstellen. Es können HTML Seiten mit Grafiken erstellt werden.
Eine Anleitung hierzu werde ich in Kürze auf meinem Blog veröffentlichen.
Mit den folgenden Befehlen werden Lighttpd und PHP 5 mit CGI installiert:
sudo apt-get update
sudo apt-get install lighttpd

sudo apt-get install php5-common php5-cgi php5
sudo lighty-enable-mod fastcgi-php
sudo lighty-enable-mod cgi
sudo lighty-enable-mod fastcgi-php

Anschließend muss ein Neustart vom Webserver durchgeführt werden:
sudo service lighttpd force-reload

Damit wir jetzt auch CGI Scripe ausführen können muss noch der Passende Ordner erstellt werden und die Besitzrechte von /var/www übernommen werden.
sudo mkdir /var/www/cgi-bin
sudo chown -R www-data:www-data /var/www
sudo chmod 775 /var/www
Nach dem die Rechte gesetzt wurden muss noch der Pi Benutzer der www-data Gruppe hinzugefügt werden.
sudo usermod -a -G www-data pi
Zum Abschluss muss der Webserver noch einmal neugestartet werden.
sudo service lighttpd force-reload
Jetzt sind die CGI-Skripte per Browser (http://IP-ADRESSE-PI/cgi-bin/hello-world.cgi ) erreichbar!

Download: hello-world.cgi

Evtl. weitere Einstellungen können in der Konfigurationsdatei 
/etc/lighttpd/lighttpd.conf 
vorgenommen werden.

Freitag, 18. September 2015

Windows - SSH-Dateitransfer mit Netzlaufwerk

Wer eigenen Webspace oder auch einen Server hat, kann mit wenigen Schritten diesen bzw. bestimmte Ordner verschlüsselt per SSH / SFTP Protokoll in den Windows Explorer einbinden.

Hierfür kann man das Tool SFTP Net Drive https://www.eldos.com/sftp-net-drive/ verwenden.

Nach dem Download und Installation des Programmes müssen noch die jeweiligen Zugangsdaten hinterlegt werden:

Anschließend ist der SSH Zugang als Netzlaufwerk im Explorer verfügbar.

Lenovo Rootkits - Lenovo Service Engine

Die ganze Geschichte mit den Lenovo Rootkits, welche ab Werk auf verschiedenen Rechnern vorinstalliert sind, ist schon etwas älter (Superfish-Desaster). Ich wollte allerdings noch mal darauf hinweisen, da ich mir erst vor kurzem einen Lenovo Yoga 3 gekauft habe und dieser auch davon betroffen war.

Verantwortlich ist diesmal nicht Superfish, sondern die Lenovo Service Engine, welche auch eine Sicherheitslücke beinhaltet. Daher sollte mit Hilfe des folgenden Tools der Service deinstalliert werden:
http://www.chip.de/downloads/Lenovo-LSE-Windows-Disabler-Tool_82164171.html

Eine vollständige Liste der betroffenen Rechner befindet sich hier:
http://news.lenovo.com/article_display.cfm?article_id=2013

Samstag, 15. August 2015

Windows - Ordner erstellen, welcher nicht sofort löschbar ist

Möchte man Deiten in einem Ordner hinterlegen, welcher sich nicht einfach per Explorer löschen lässt, geht dies mit den folgenden Boardmitteln von Windows:

  1. Starten der Eingabeaufforderung
    1. "Ausführen" aufrufen => z.B. "Windows" Taste + "R" drücken
    2. "cmd" eingeben und "OK" bestätigen
  2. Auf dem gewünschten Laufwerk Ordner erstellen
    1. "md con\" oder
    2. "md aux\" erstellen
  3. Die Ordner lassen sich jetzt wieder nur per Eingabeaufforderung löschen
    1. "rd con\" oder
    2. "rd aux"

Hintergrund: In der DOS-Zeit, als Windows noch nicht per GUI (grafische Benutzeroberfläche) bedienbar war, waren einige Befehle/Namen für Windows und Geräte (z.B. auch COM1, COM2 oder PRN ...) reserviert.

Sonntag, 9. August 2015

Efficients: Optimieren eines Prozesses geht erst, wenn man die...

Efficients: Optimieren eines Prozesses geht erst, wenn man die...: Prozesse im Unternehmen sind wichtig. Sie helfen einen die Arbeit besser zu verstehen. Man kann Prozesse nur optimieren, wenn man diese kenn...

Raspberry Pi - Überflüssige Software deinstallieren

Update vom 16.01.2017

Installiert man die neue "Jessie" - "LITE" Version, ist eine Deinstalltion nicht mehr notwendig. Siehe auch http://sebastianhemel.blogspot.de/2016/12/raspberry-pi-raspbian-jessie.html .



Viele der per default installierten Programme werden in der Regel nicht benötigt und könne daher deinstalliert werden. Sollte man Sie später doch noch benötigen, kann man Sie später einfach wieder installieren :-)

Befehl:
sudo aptitude purge ... (siehe Ende des Artikels)
purge - löscht das Paket inklusive aller Konfigurationsdateien

Da ich für meinen Pi (Serverbetrieb "headless") weder Spiele noch eine GUI (Desktopumgebung) benötige, können die folgenden Programme ohne Probleme gelöscht werden (Informationen zu den einzelnen Packeten kann man unter https://packages.debian.org/search?searchon=names&keywords=leafpad herausfinden):
  • blt
  • desktop-base
  • dillo 
  • gnome-icon-theme
  • gnome-themes-standard
  • idle
  • idle3
  • leafpad
  • lightdm
  • lxappearance
  • lxde
  • lxde-common
  • lxde-core
  • lxde-icon-theme
  • lxinput lxmenu-data
  • lxpanel lxpolkit
  • lxrandr
  • lxsession
  • lxsession-edit
  • lxshortcut
  • lxtask
  • lxterminal
  • xarchiver 
  • menu-xdg
  • midori
  • openbox
  • pcmanfm
  • penguinspuzzle
  • pistore
  • python-pygame
  • python-tk
  • python3-tk
  • omxplayer
  • scratch
  • tk8.5
  • xinit
  • xserver-xorg
  • zenity
sudo aptitude purge blt desktop-base dillo gnome-icon-theme gnome-themes-standard idle idle3 leafpad lightdm lxappearance lxde lxde-common lxde-core lxde-icon-theme lxinput lxmenu-data lxpanel lxpolkit lxrandr lxsession lxsession-edit lxshortcut lxtask lxterminal xarchiver menu-xdg midori openbox pcmanfm penguinspuzzle pistore python-pygame python-tk python3-tk omxplayer scratch tk8.5 xinit xserver-xorg zenity

Montag, 25. Mai 2015

Raspberry Pi - Einrichtung nach Installation

Nach der Installation des Betriebssystems und dem ersten Start des Pi´s, sollten folgende Einstellungen vorgenommen werden:

  1. Speicherplatz der kompletten SD-Karte nutzen
    •  Expand Filesystem aufrufen und bestätigen. Anschließend muss ein reboot erfolgen.
  2. Deutsches Tastaturlayout einstellen
  3. Zeitzone einstellen und Uhrzeit aktualisieren
    • Internationalisation Options aufrufen und Change Timezone auswählen und die Uhr auf Europe und Berlin einstellen

FAQ:
  • Default User/PW: pi/raspberry 
  • Starten der Raspi-Config:  sudo raspi-config
  • Herunterfahren: sudo shutdown -h 0
  • Hostname ändern: sudo vi /etc/hostname
    • sudo /etc/init.d/hostname.sh
    • sudo reboot
    • sudo vi /etc/hosts
      127.0.0.1 dein-computer

Samstag, 23. Mai 2015

Raspberry Pi - Raspbian "wheezy" installieren

Bevor die SD-Karte im Raspberry Pi in Betrieb genommen werden kann, muss auf ihr ein Betriebssystem installiert werden.
Als Linux-Distribution für den Pi eignet sich das Raspbian "wheezy", welches extra an den Minicomputer angepasst wurde.

Download unter https://www.raspberrypi.org/downloads/

Nach dem Download muss das Zip-Archiv entpackt werden. Das Image ist folgendermaßen aufgebaut:
yyyy-mm-dd-wheezy-raspbian.img
Anschließend kann man mit dem Programm Win32 Disk Imager dass Image auf die zuvor FAT-32 formatierte SD-Karte installiert werden.

Download unter http://sourceforge.net/projects/win32diskimager/

Sonntag, 19. April 2015

Direkter URL Zugriff auf Google Drive Dateien

Möchte man einen direkten öffentlichen Zugriff auf Dateien in seinem GoogleDrive um z.B. Inhalte aus einem .txt File auszulesen, gibt es folgende Möglichkeit:
  • Rechts-Klick auf die gewünschte Datei und Share auswählen
  • Danach im folgenden Dialog den Link Get shareable link anklicken

Der generierte Link https://drive.google.com/file/d/0ByVthb1EejQ5OEtqYWdITGp5QjA/view?usp=sharing muss dann zu dem nachfolgenden umgebaut werden:
  • https://drive.google.com/uc?id=0ByVthb1EejQ5OEtqYWdITGp5QjA&export=download
Aufbau: https://drive.google.com/uc?id= XYZ &export=download

Jetzt kann man den Inhalt der .txt Datei z.B. eine URL direkt auslesen.

Bsp.:  new HttpAsyncTask().execute("https://drive.google.com/uc?id=0ByVthb1EejQ5OEtqYWdITGp5QjA&export=download");

Sonntag, 15. März 2015

Android Studio - Intellij SVN CheckOut error

Nach dem Google beim Android SDK von Eclipse auf Intellij umgestellt hat, bekam ich bei der Migration meiner Projekte folgende Fehlermeldung beim Versuch einen SVN Checkout zu machen:
Cannot load supported formats: Cannot run program "svn": CreateProcess error=2, The system cannot find the file specified
Dieses Problem kann relativ schnell behoben werden.

In den Einstellungen muss man die folgende Option deaktivieren "Use command-line client".


Alternativ kann man auch den SVN command-line client in der %PATH% Umgebungsvariable hinzufügen.

Samstag, 7. März 2015

Raspberry Pi - WLAN reconnect nach Verbindungsabbruch

Jeder der einen PI per WLAN im Netzwerk hat, kennst das Problem. Ist mal das WLAN ausgeschaltet und man startet seinen WLAN Router neu, macht der PI keinen automatischen WLAN reconnect.

Bei stackexchange gibt es eine schöne Lösung für das Problem:

Well, there is a very simple solution:
  1. Go to /etc/ifplugd/action.d/ and rename the ifupdown file to ifupdown.original
  2. Then do: cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
  3. Finally: sudo reboot
That's all. Test this by turning off/on your AP; you should see that your Raspberry Pi properly reconnects.

Sonntag, 8. Februar 2015

Raspberry Pi - Uhrzeit aktualisieren nach Neustart (ntpd)

Manchmal kommt es vor, dass der Raspberry nach einem Neustart nicht die aktuelle Uhrzeit anzeigt.
Dies lässt sich mithilfe von NTPD (Network Time Protocol daemon) lösen.
sudo apt-get install ntpdate
Ntpdate starten automatisch mit einem Netzwerkinterface und setzt die Zeit von einem hinterlegten ntp Server in /etc/default/ntpdate .

Raspberry Pi - Logitech Webcam anschließen incl. FTP-Client

Die folgenden Pakte müssen vorab für die Webcam installiert werden:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -u dist-upgrade
sudo apt-get install fswebcam ncftp
Es gibt auch noch das Paket motion => Bewegungserkennung.

Jetzt kann die USB Webcam angeschlossen werden. Nach erfolgreicher Installation sollte Sie hier aufgelistet sein.
lsusb

Mit dem folgenden Befehl kann jetzt ein erstes Test-Bild erstellt werden:
fswebcam test.jpg
 --- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'test.jpg'.

Erstellen einer Konfigurations-Datei für das Webcam-Bild (webcam.cfg):
device /dev/video0
jpeg 95
resolution 1280x720

#Zuschneiden des Bildes
#crop 930x570,190x150

#Ausgabegroesse
#scale 465x282

timestamp "%d.%m.%Y %H:%M"
title "www.webcam-ingolstadt.de | 85051 Ingolstadt"
set "White Balance Temperature, Auto"=True
set "Backlight Compensation"=0
set "Brightness"=140
set "Contrast"=25
set "Saturation"=25
skip 3
frames 3
save "/home/pi/webcam/cam.jpg"
Welche Funktion die Webcam bereitstellt, kann mit dem folgenden Befehl abgerufen werden:
fswebcam -d /dev/video0 --list-controls


Anschließend soll das soeben erstellte Bild noch per FTP auf einen Webserver hochgeladen werden und ein Cron-Job erstellt werden.

Erstellen einer Konfigurations-Datei für den FTP-Client (ftp.cfg):
host HOST-IP
user NUTZERNAME
pass PASSWORT
Jetzt kann mit dem Befehl
ncftpput -f /home/pi/webcam/ftp.cfg /cam /home/pi/webcam/cam.jpg
das Bild auf dem hinterlegten FTP-Server hochgeladen werden.

Abschließend kann das nachfolgende Bash-Script noch mit einem Cron-Job verbunden werden, damit z.B. alle 5min ein Bild erstellt wird von 08:00 - 17:55 Uhr.

Aufruf mit crontab -e und folgendes eintragen:
*/5 8-17 * * * /home/pi/webcam.sh

#!/bin/sh
# Webcam Bild erstellen und auf FTP hochalden
# (c) Sebastian Hemel

fswebcam -c /home/pi/webcam/webcam.cfg
sleep 1
ncftpput -f /home/pi/webcam/ftp.cfg /cam /home/pi/webcam/cam.jpg

Samstag, 31. Januar 2015

Raspberry Pi - Temperatursensor DS18B20

An dem Raspberry Pi kann man relativ simpel einen Temperatursensor ansteuern.
Ich habe dafür bei ebay einen Digitaler Temperatursensor DS18B20 Wasserdicht gekauft (Kosten ca. 2 €).

Der DS18B20 Sensor besitzt drei Kabel:
  • Rot (VCC / 3,0V bis 5,5V)
  • Weiß (DATA / 1-Wire)
  • Schwarz (GND)
Der Messbereich liegt bei -55°C und +125°C und  die Messgenauigkeit bei ca. ± 0,5°C.

Durch einen eindeutigen Code (ID) können mehrere Temperatursensoren parallel angeschlossen werden.

 
Der Sensor muss via GPIO angeschlossen werden (General Purpose Input/Output)).
  • Rot (VCC) an Pin 1 3,3V
  • Weiß (DATA) an den GPIO 4 (Pin 7)
  • Schwarz GND Pin 6
  • Zwischen VCC 3,3V und DATA GPIO 4 muss ein 4,7k Ohm Widerstand verwendet werden.

Um den Sensor ansprechen zu können, müssen folgende Module geladen werden
sudo modprobe w1-gpio
sudo modprobe w1-therm
Update (03.05.2015)
Raspbian Betriebssystems ab Kernel 3.18 erfordert jetzt die Aktivierung des Device Tree Overlay für 1-wire:
sudo vi /boot/config.txt 
Und folgendes hinzufügen
dtoverlay=w1-gpio,gpiopin=4,pullup=on 
Diese Module sollte am Besten auch direkt beim Start des Pi immer geladen werden
sudo vi /etc/modules
Und folgendes hinzufügen
w1-gpio
w1-therm
Nach dem erfolgreichen Anschließen und Laden der Module sollte der Sensor jetzt zur Verfügung stehen. Zu finden unter
/sys/bus/w1/devices/xx-xxxxxxxxxxxx/w1_slave

t=21437 / 1000 = 21,437 ° C

Bash-Script zum Auslesen der Temperatur (sudo apt-get install bc):

#!/bin/sh
# Temperatur von Sensor auslesen
# (c) Sebastian Hemel


temp=$(cat /sys/bus/w1/devices/28-00000511590a/w1_slave | sed -n "s/.*t=\(.*\)/\1/p")
temp=`echo "scale=3; $temp / 1000" | bc`
printf "Aktuelle Temperatur: %05.2f°C\n" $temp



Bash-Script zum Auslesen der Temperatur, Temperatur und Tagdesdatum + Uhrzeit in Datei schreiben und auf einen FTP-Server hochladen:

#!/bin/sh
# Temperatur von Sensor auslesen und per FTP hochladen
# (c) Sebastian Hemel


temp=$(cat /sys/bus/w1/devices/28-00000511590a/w1_slave | sed -n "s/.*t=\(.*\)/\1/p")
temp=`echo "scale=3; $temp / 1000" | bc`
#printf "Aktuelle Temperatur: %05.2f°C\n" $temp >> temp.txt

rm temp.txt
printf "" >> temp.txt
printf "%05.2f" $temp >> temp.txt
printf " Grad Celsius - " >> temp.txt
date +%d.%m.%Y' '%H:%M >> temp.txt
printf "" >> temp.txt

sleep 1
ncftpput -f /home/pi/ftp.cfg /temp /home/pi/temp.txt


Samstag, 3. Januar 2015

Raspberry Pi - WLAN per Konsole (putty) einrichten

Mit dem Befehl ifconfig erhält man eine Auflistung aller verfügbaren Netzwerkschnittstellen:


Für die richtigen Netzwerkeinstellungen (statische oder dynamische IP), siehe Datei /etc/network/interfaces => http://sebastianhemel.blogspot.de/2014/08/raspberry-pi-statische-ip-zuweisen.html

Je nach dem welche Verschlüsselung das Netzwerk hat, muss diese noch in der Datei /etc/wpa_supplicant/wpa_supplicant.conf gepflegt werden:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={  
    ssid="DEINE_SSID"
    psk="DEIN_KEY"
    scan_ssid=1
    id_str="home"
    key_mgmt=WPA-PSK
    proto=RSN
    pairwise=CCMP
    group=CCMP
    priority=5
}


Nach den erforderlichen Einstellungen sollte die WLAN Schnittstelle deaktiviert werden:

sudo wpa_action wlan0 stop

Danach muss die neue WPA Konfig wieder geladen werden:

sudo ifup wlan0

Nach dem erfolgreichen Starten (es gab keine Fehlermeldung), kann die Verbindung getestet werden:

sudo wpa_cli status



Freitag, 2. Januar 2015

Raspberry Pi - Deutsches Tastaturlayout einstellen

Per default steht die Tastatur des Raspberry Pi auf Englisch.
Dies merkt man z.B. sehr schnell daran, dass die Tasten [Z] und [Y] vertauscht sind :-)

Dies lässt sich aber zum Glück relativ einfach durch RasPi Konfig Tool beheben:

sudo raspi-config


Anschließend wählt man in dem folgenden Menü den Eintrag "4 Internationalisation Options" aus.



Danach den Eintrag "I3 Change Keypoard Layout" auswählen und im nächsten Dialog die Einstellung "Generic 105-key (Intl) PC" bestätigen.


Jetzt muss man den Eintrag "Other" auswählen um zu der deutschen Belegung zu gelangen.

Im nächsten Schritt muss aus der Liste "German" ausgewählt werden. Die anderen Dialoge können je nach Nachfrage mit "OK" bestätigt werden.