Tuesday 21.December 2010

Windows 7 – Anonymer Login Screen

geposted in Uncategorized um 11:14 am von alewo

Jeder kennt es von öffentlichen Rechnern mit älteren NT Systemen. Erst muss man CTRL + ALT + ENTF drücken, bevor man ein Login-Fenster angezeigt bekommt, in dem man sich sowohl mit Benutzernamen als auch Passwort anmelden muss. Da kein Benutzer voreingetragen ist, bleibt das System anonym und gibt auf den ersten Blick keine Informationen über die verfügbaren Benutzer wieder.

Wie aber stellt man diese Einstellungen unter Windows 7 her?
Ok, der erste Teil ist noch recht easy über ein grafisches Interface customizebar. Die Option das vor dem Logon CTRL + ALT + ENTF gedrückt werden muss, lässt sich folgendermaßen einstellen.
1. Ausführen des Programms “control userpasswords2″ in der Commandozeile
2. Im Tab erweitert muss im Bereich “Sichere Anmeldung” (engl. “Secure Logon”) die Checkbox ausgewählt sein. (Die Beschreibung im Fenster ist selbsterklärend).

Der zweite Teil erfordert leider einen direkten Eingriff in die Registry. Der entscheidende Schlüsselwert trägt den Namen “dontDisplayLastUserName”.
Die Einstellung wird vorgenommen über Ausführen des Commandozeilenbefehls “regedit”, welcher den windowseigenen Registryeditor öffnet.
Angepasst werden muss:
HKEY_LOCAL_MACHINE >> Software >> Microsoft >> Windows >> Current Version >> Policies >> System und hier der oben angegebene Wert “dontDisplayLastUserName”.
Enthält der Wert eine 1, so wird ein leeres Logon-Fenster angezeigt.

Link zur Registry-Key Beschreibung von MS : http://technet.microsoft.com/en-us/library/cc957392.aspx

Tada.

Tuesday 01.December 2009

Firefox – Window Resize unterdrücken

geposted in Uncategorized um 7:49 pm von alewo

So nur als Kurznachricht, damit ichs wenn ichs mal wieder brauch wieder finde. Wenn irgendne blöde Webseite mein Firefox dazu zwingt, dass die Größe angepasst wird, zum Beispiel Fußball-Ticker machen sowas gerne oder Jobbörsen, dann muss ich das Fenster erst wieder umständlich auf Vollbild stellen. Das will ich aber nicht =) .

Wer das auch nicht will:

in der config vom Firefox (about:config) die Variable dom.disable_window_move_resize auf true setzen.

fertig.

Danke :)

Sunday 18.October 2009

Scite und Latex

geposted in Uncategorized um 2:39 pm von alewo

Da ich mit tiefster Vorliebe zum schreiben meiner Latex-Dokumente den in meinen Augen besten Editor “Scite” einsetze, war es für mich in Vergangenheit immer nötig, wenn ich meine Dokumente nicht immer manuell mit pdflatex kompilieren wollte, die in Scite eingebauten Funktionen zum Ausführen einer Konsolenanweisung zu nutzen. Früher habe ich mir immer die Mühe gemacht, und für jedes Dokument das ich erstellen wollte ein individuelles Batch-File zu entwerfen, welches ich dann mit der entsprechenden Funktion verknüpfte,…

vor kurzem war ich dieses Verfahren aber leid, sodass ich den wirklich erstaunlich geringen Mehraufwand in Kauf nahm, mir ein universelles Batch-File zu schreiben, das ich einfach mit in den Programmpfad von Scite selbst geworfen habe.

Für das Einrichten eines solchen Mechanismus, benötigt man zum einen das Batch-File und muss zum anderen gewisse Einstellungen an Scite vornehmen.

Kommen wir zunächst zum Batch-File:

Speicherort: Ordner in dem auch scite.exe liegt
Content der Batch-Datei:
REM Befehlsdarstellung abschalten
@echo off

REM %1 = Filename - REQ
REM %2 = Pfad zum File inklusive tex-File - REQ
REM %3 = Pfad zu den Quelldateien - REQ
REM %4 = Pfad zu PDF-Latex - Not REQ

REM Pfad zur PDF-Latex säubern, nicht benötigt wenn in Umgebungsvariable sowieso gesetzt
set pdflatexpath=%4
set pdflatexpath2=%pdflatexpath:~1,-1%\
if "%pdflatexpath2%"=="~1,-1\" (goto a) else (goto b)
:a
set pdflatexpath2=
:b

set pathfile=%3
set pathfile2=%pathfile:~1,-1%

set file=%1
set file2=%file:~1,-1%

REM eventuell bestehenden offenen Acrobat Reader schließen, wenn die Datei schon geöffnet
taskkill /fi "IMAGENAME eq acrord32.exe" /fi "WINDOWTITLE eq %1.pdf - Adobe Reader"

REM eventuell bestehende "Hilfsdateien löschen"
del  "%pathfile2%\%file2%.aux">NUL 2>NUL
del "%pathfile2%\%file2%.code">NUL 2>NUL
del "%pathfile2%\%file2%.idx">NUL 2>NUL
del  "%pathfile2%\%file2%.loa">NUL 2>NUL
del  "%pathfile2%\%file2%.lof">NUL 2>NUL
del  "%pathfile2%\%file2%.log">NUL 2>NUL
del  "%pathfile2%\%file2%.lot">NUL 2>NUL
del  "%pathfile2%\%file2%.out">NUL 2>NUL
del  "%pathfile2%\%file2%.pdf">NUL 2>NUL
del  "%pathfile2%\%file2%.toc">NUL 2>NUL
del  "%pathfile2%\%file2%.bbl">NUL 2>NUL
del  "%pathfile2%\%file2%.blg">NUL 2>NUL
del  "%pathfile2%\%file2%.brf">NUL 2>NUL
del  "%pathfile2%\%file2%.tdo">NUL 2>NUL

REM PDF-LATEX mehrfach ausführen (wegen verlinkungen) - Ausgaben der letzten verschlucken
"%pdflatexpath2%pdflatex.exe" %2
"%pdflatexpath2%bibtex.exe" %2
"%pdflatexpath2%pdflatex.exe" %2
"%pdflatexpath2%pdflatex.exe" %2 >NUL 2>NUL
"%pdflatexpath2%pdflatex.exe" %2 >NUL 2>NUL

REM Hilfsdateien wieder löschen
del  "%pathfile2%\%file2%.aux">NUL 2>NUL
del "%pathfile2%\%file2%.code">NUL 2>NUL
del "%pathfile2%\%file2%.idx">NUL 2>NUL
del  "%pathfile2%\%file2%.loa">NUL 2>NUL
del  "%pathfile2%\%file2%.lof">NUL 2>NUL
del  "%pathfile2%\%file2%.log">NUL 2>NUL
del  "%pathfile2%\%file2%.lot">NUL 2>NUL
del  "%pathfile2%\%file2%.out">NUL 2>NUL
del  "%pathfile2%\%file2%.toc">NUL 2>NUL
del  "%pathfile2%\%file2%.bbl">NUL 2>NUL
del  "%pathfile2%\%file2%.blg">NUL 2>NUL
del  "%pathfile2%\%file2%.brf">NUL 2>NUL
del  "%pathfile2%\%file2%.tdo">NUL 2>NUL

REM erstelltes PDF öffnen
"C:\Program Files\Adobe\Reader 8.0\Reader\acrord32" "%pathfile2%\%file2%.pdf"

Einstellungen in Scite:
Menü Options > Open tex.properties

in dieser Datei die Zeile suchen, die mit command.build.$(file.patterns.latex) beginnt.

Diese Zeile dann einfach durch folgende ersetzen (wenn pdflatex in den Umgebungsvariablen gesetzt):

command.build.$(file.patterns.latex)=”$(SciteDefaultHome)\compile.bat” “$(FileName)” “$(FilePath)” “$(FileDir)”

und wenn pdflatex nicht in den Umgebungsvariablen gesetzt ist, dann:

command.build.$(file.patterns.latex)=”$(SciteDefaultHome)\compile.bat” “$(FileName)” “$(FilePath)” “$(FileDir)” “<PFAD zu PDFLATEX.exe>”

wobei der Pfad bspw. so aussehen wird:
“C:\Program Files\MiKTeX 2.7\miktex\bin\”

Monday 21.September 2009

Python – DBUS Communication

geposted in Uncategorized um 3:59 pm von alewo

Da ich im Rahmen meiner Diplomarbeit ja einen Prototyp entwickeln musste, der in Python ein Bluetooth-Scatternet-Discovery Mechanismus umsetzt, war es auch nötig einen Mechanismus zum Zugriff auf die einzelnen Features des Prototyps für externe Anwendungen umzusetzen. Ich habe hierfür eine DBUS-Kommunikation implementiert. Und damit das gewonnene Wissen nicht in meinem Gehirn zu einer Lücke gerinnt, will ich es hier der Allgemeinheit gern zur Verfügung stellen.

Client 1 (Service-Provider)

# -*- coding: ascii -*-

import dbus, dbus.service, dbus.glib
import logging
logging.basicConfig(level=logging.DEBUG)

""" Name of the dbus interfaces"""
DBUS_IFCE = "aDBUSifce"
DBUS_NAME = "aDBUSname"
DBUS_PATH = "/"

class MyDbusInterface(dbus.service.Object):
    def __init__(self ):

        self.bus = dbus.SessionBus()
        self.busname = dbus.service.BusName(DBUS_NAME, bus=self.bus)
        dbus.service.Object.__init__(self, dbus.SessionBus(), DBUS_PATH)

    # ------------------ dbus methods -----------------------------       

    @dbus.service.method(dbus_interface=SCM_DBUS_IFCE, in_signature="s", out_signature="")
    def offered_Service(self, parameter):
        #execute the service request and do the things you should do
        pass

    @dbus.service.method(dbus_interface=SCM_DBUS_IFCE, in_signature="ss", out_signature="")
    def offered_Service_too(self, parameter, secondParameter):
        #execute the service request and do the things you should do
        pass

    # ------------------ dbus signal emitters -----------------------------

    @dbus.service.signal(dbus_interface=SCM_DBUS_IFCE, signature="ss")
    def onCallbackSignal(self, first, second):
        """do something useful like log etc."""
        pass

    @dbus.service.signal(dbus_interface=SCM_DBUS_IFCE, signature="sss")
    def onAnotherCallbackSignal(self, first, second, third):
        """Broadcast signal to notify changes"""
        pass
Client 2 (Service-Consumer)

#!/usr/bin/python2.5

#The client program that connects to dbus and gets messages
import dbus, dbus.glib
import gobject

""" Name of the dbus interfaces"""
DBUS_IFCE = "aDBUSifce"
DBUS_NAME = "aDBUSname"

class TestClient:

	def __init__(self):

		bus = dbus.SessionBus()
		proxyObj = bus.get_object(DBUS_NAME, '/')
		self.dbIfce = dbus.Interface(proxyObj, SCM_DBUS_IFCE)

		#connect to the Remote-Signals for callbacks
		self.dbIfce.connect_to_signal("onCallbackSignal",
                                                         self.executeMethodOnSignal,
                                                         SCM_DBUS_IFCE)
		self.dbIfce.connect_to_signal("onAnotherCallbackSignal",
                                                         self.executeThisForAnotherSignal,
                                                         SCM_DBUS_IFCE)

		self.loop = gobject.MainLoop()

	#--- Methods for Callbacks ---
	def executeMethodOnSignal(self, firstParameter, secondParameter):
		print "  do something like print:  firstParameter=%s,
                                                           secondParameter=%s"
                                                           % (firstParameter, secondParameter)	

	def executeThisForAnotherSignal(self, firstParameter, secondParameter, thirdParameter):
		print "  do something like print:  firstParameter=%s,
                                                           secondParameter=%s,
                                                           thirdParameter=%s"
                                                           % (firstParameter, secondParameter,
                                                           thirdParameter)	

	# --- actions ---
	# Methods for call remote Interfaces (service provider)
	def a_offered_Service(self):
		self.dbIfce.offered_Service("I'm a String Parameter") 

	def another_offered_Service(self):
		result = self.dbIfce.offered_Service_too( "I'm a String Parameter, too",
                                                                       "and one other again")
		print result
		pass

	#--only for using the testclient
	def run(self):
		gobject.timeout_add(1000, self.a_offered_Service)
		gobject.timeout_add(2000, self.another_offered_Service)
		gobject.timeout_add(8000, self.loop.quit)
		self.loop.run()

if __name__ == '__main__':
    tc = TestClient()
    tc.run()

Erklärungen folgen irgendwann via Update... ansonsten Code lesen lernen =)

Latex zum Mergen von PDF-Dokumenten mit Erstellung von Bookmarks nutzen

geposted in Uncategorized um 1:38 pm von alewo

Da ich mich jetzt nach dem erfolgreichen Abschluss meiner Diplomarbeit in die Bewerbungsphase für die Suche eines späteren Arbeitgebers begebe, wurde es für mich nötig, ein schönes griffiges PDF-Dokument zu erzeugen, weilches natürlich auch über Bookmarks verfügt.

Der erste Gedanke der sich mir hierbei einstellte war, Latex zum Kombinieren von Modulen einzelner PDF-Dokumente zu nutzen.

Die eigentliche Lösung ist am Ende dann wie immer viel leichter, als sie am Anfang erscheint. Der \section-Befehl vom hyperref-Paket setzt ja ein Bookmark aber auch eine Kapitelüberschrift. Was ich eigentlich ja nicht erreichen wollte, da durch den “section”-Befehl ja auch immer so eine häßliche Überschrift mit erzeugt wird. Die Lösung die nur Bookmarks erzeugt, lässt sich dann aber effizient über das Manual zu hyperref finden. Der benötigte Befehl lautet: \pdfbookmark[]{}{} .
Mit ihm ist es möglich Bookmarks oder auf Deutsch, PDF-Lesezeichen an beliebiger Stelle zu setzen.

Ein kleines Minimalbeispiel soll die Anwendung zum Zusammenfügen mit Bookmarks für alle kopierfreudigen einmal demonstrieren:
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\usepackage[
pdfpagelabels=true, % so werden die Seitennummern auch ins PDF uebernommen
a4paper,
bookmarks=true,
bookmarksnumbered=true,
bookmarksopen=true,
bookmarksopenlevel=1,
pdfpagelayout=SinglePage,
pdftex
]{hyperref}
\begin{document}
\pdfbookmark[0]{Motivationsschreiben}{Motivationsschreiben}
\includepdf[pages=-, link=true]{Motivationsschreiben.pdf}
\pdfbookmark[0]{Foto}{Foto}
\includepdf[pages=-, link=true]{Foto.pdf}
\pdfbookmark[0]{Lebenslauf}{Lebenslauf}
\includepdf[pages=-, link=true]{Lebenslauf.pdf}
\end{document}

Kommentar: “pages=-” –> alle Seiten einbinden