Literaturverwaltung mit Zotero und BibTex

Da ich aktuell an meiner Masterarbeit sitze und nach einem halbwegs automatischen Prozess gesucht habe, um von den diversen Paper-Quellen zu halbwegs vernünftigen BibTex-Einträgen zu kommen, habe ich Zotero als mein Tool der Wahl auserkoren.

Zotero, die unkomplizierte Literaturverwaltung

Dabei handelt es sich sowohl um eine Online-Plattform als auch um ein Browserplugin oder eine standalone Applikation die sich recht gut unter Linux/Windows/Mac oder eben im Browser nutzen lässt.
Sobald man das Paper seiner Wahl gefunden hat kann man es direkt in der Zotero-Datenbank via Browserplugin abglegen lassen (Synchronisation mit dem Server ist direkt mit dabei, arbeiten an verschiedenen Rechnern ist ohne Probleme möglich). Sehr praktisch ist auch die Möglichkeit Einträge zu annotieren oder mit Tags zu versehen.
Sobald man jetzt den nächsten Schritt in Richtung LaTex bzw. BibTex macht hilft Zotero ebenfalls weiter. Hier hat man die Möglichkeit die Einträge seiner Wahl gesammelt als BibTex Bibliography (.bib-Datei) zu exportieren.
Wichtig dabei ist, dass man darauf achtet vor dem Export mindestens die Punkte Autor, Jahr und Titel für alle Einträge sinnvoll gefüllt zu haben.

BibTex Literaturverzeichnis ohne Überraschungen

Jetzt kommt der spannende Teil: Das Literaturverzeichnis
Beim Erzeugen des Literaturverzeichnisses gibt es einige Stolperfallen die man zuvor beachten sollte. BibTex mag auf keinen Fall alte Output-Files (*.bbl, *.blg, *.aux, *.out, …), dementsprechend immer in einem gesäuberten Buildverzeichnis arbeiten. Außerdem muss pdfLaTeX vor dem Ausführen von BibTex als auch danach ausgeführt werden.
Letztlich kommt es noch darauf an welches Bibliographiesystem man verwendet. Hier habe ich das natbib Paket im Einsatz. Diese ermöglicht es den url-Tag des Zotero-Exports als klickbare URL anzuzeigen. Zustätzlich muss noch das hyperref Paket mit an Board sein.

\usepackage[square,numbers]{natbib}
\usepackage{hyperref}
\bibliographystyle{abbrvnat}
\bibliography{bibliography}
bibliography example

Die Ausgabe am Ende mit klickbaren URLs

Beispiel

Ein vollständiges Beispiel gibts hier.

Quellen

Barcamp Karlsruhe 2014

Bp12-FaCYAADxcw

Heute möchte ich mal vom 3. Karlsruher BarCamp berichten, welches vom 15. bis 16.11.2014 in der Karlshochschule statt fand und ich selbst Samstags besuchen konnte. Generell zeichnet sich das BarCamp-Konferenzformat dadurch aus, dass jeder Teilnehmer aktiv wird – Jeder? Ja, wirklich jeder hat die Chance sich in Form einer eigenen Session oder aber eines Sessionwunsches einzubringen. Es wurde durch die Organisation unter der Leitung von @FabianBeiner aka Gurkentruppe quasie nur der Rahmen geschaffen, was natürlich eine respektable und großartige Leistung war! Die Inhalte liefern dagegen wirklich nur die Teilnehmer und das durchaus auf sehr hohen Niveau und mit viel Engagement.

Dabei konnten die thematischen Inhalte als auch die beruflichen Hintergründe der Teilnehmer nicht konträrer sein. Vom Software entwickelnden „Alleskönners“ (Zitat des Teilnehmers) über den Nettomitarbeiter oder den Krankenpfleger hatte sich wirklich ein bunter Haufen von Nah und Fern (sogar von Hamburg angereiste Gäste) zum #BCKA14 zusammen gefunden.

Nachdem die Sessionvorschläge den einstündigen Slots in insgesamt fünf Tracks zugeteilt waren ging es direkt los mit geballtem Infotaiment, welches mit sehr gutem Catering, viel Kaffee und Mate begleitet wurde. Da man bekanntlich ja nur auf einer Hochzeit tanzen kann, werde ich im folgenden nur auf die von mir besuchen Vorträge eingehen (etwas technik-lastiger als die Veranstaltung selbst).

Beim Vortrag um E-Mail-Verschlüsselung von @zeitschlag konnten erste Schritte zur PGP verschlüsselten Email gemacht werden. Praktische Tricks sowie die Diskussion rund um das Thema „Kostenlos-Mentalität“ und Usability von Verschlüsselung rundeten die Session ab.

dancin1 Das Informationsdesign und die Datenvisualisierung waren bei @zwitscherjoe die Themem. Es wurde eindrucksvoll gezeigt, dass bereits von über 100 Jahren extrem komplexe sowie aussagekräftige Infografiken gestaltet wurden. Anhand von Beispielen konnte der Zuhörer viele Gestaltungsformen und deren unterschiedliche Wirkung kennen lernen. Beispielsweise wurden 1735 Schrittfolgen von Tänzen visualisiert und grafisch aufbereitet.

DevoxxWithoutBrackets_PNG_300px_de Weiter ging es dann bei mir mit der Vorstellung des diesjährig ersten Devoxx4Kids in Karlsruhe bei der Kinder zwischen 10 und 14 Jahren erste Erfahrungen mit Technik, Programmieren und Basteln mit Elektronik in verschiedenen Workshops machen konnten. Das aus der belgischen Devoxx entstandene Konzept wurde dabei durch die Veranstalter um @KatjaArrasz und @cmennerich komplett übersetzt und bringt den Kindern spielerisch auf Basis von Scratch oder Workshops mit dem kleinen humanoiden Roboter Nao das programmieren, sowie viele logische Konzepte näher. Ein ganz besonderer Bestandteil der Karlsruher Veranstaltung: Ein eigens für die Veranstaltung programmierter Quadrocopter der durch simple Befehle durch die Kinder gesteuert werden konnte. Ein wirklich tolles Konzept um die Hemmschwelle und Vorurteile gegenüber Technik und Computern zu verlieren!

Docker Technisch ging es für mich weiter, diesmal im Bereich DevOps wo durch @RobertReiz die Container-Plattform Docker vorgestellt wurde. Damit können die Abhängigkeiten von Libraries und verschiedenen Versionsständen in einem Plattform-unabhängigen Container gekapselt werden und somit ohne größere Probleme auf anderen Maschinen ausgebracht werden.

In der nachfolgenden Session ging es dann hoch hinaus. Das FPV Modellfliegen wurde direkt am echten Gerät vorgestellt sowie die dafür notwendigen Funktechniken und ersten Schritte um in die Thematik einzusteigen. Wer einen Flug wagen möchte kann sich hier in die Lüfte schwingen (Schwindelgefahr!).

Abschließend wurde es dann nochmal philosophisch in einer Diskussionssession rund um die Technikfolgenabschätzung sowie den Themenkomplex um den Gläsernen Bürger wurde kontrovers über viele Aspekte zwischen Ethik, Verantwortung und Empathie diskutiert.

Aber auch nicht-technische Themen waren auf dem BarCamp vertreten – Beispielsweise Reiseberichte über Grönland oder über alternative Beziehungsformen waren sehr beliebt und gut besucht. Auch der Vortrag rund um die Discounter und deren Wirken hinter den Kulissen oder das tägliche Leben in deutschen Notaufnahmen rundeten die Veranstaltung ab.

Ein großen Dank gebührt an dieser Stelle nochmal den Veranstaltern, welche mit Hilfe zahlreicher Sponsoren ein solch großartiges Event möglich machten!
Ich komme wieder!

Mobilkommunikation Zusammenfassung

Zusammenfassung der Vorlesung Mobilkommunikation von 2013/14 am KIT.

Einführung

Bereiche der Vorlesung

  • Bitübertragungsschicht
    • Drahtlose Übertragung
    • Signalausbreitung
    • Modulationstechniken
    • Multiplextechniken
  • Sicherungsschicht (Medienzugriff) z.B.
    • (Slotted) Aloha
    • Carrier Sense Multiple Access
  • Vermittlungsschicht und Netzarchitektur
    • Mobilitätsmanagement
    • Anrufvermittlung im GSM System
    • Mobiles Internet Protokol (MobileIP)
  • Transportschicht und darüber
    • Mobiles TCP
  • Sicherheit in Mobilkommunikationssystemen
    • Teilnehmer-Authentifikation in GSM

Weiterlesen

CouchDB: restore deleted documents

This is a python based approach to restore deleted documents from couchdb if you have not compacted the database already. The following code snipped is based on this solution.

#!/usr/bin/python

import httplib
import json

SERVER_URL = 'localhost:5984' # host address
FILE_NAME = 'deleted.json' # one line in deleted.json: id,rev\n (comma-seperatet id and rev of deleted doc one line each)
DB_NAME = 'db' #database name

conn = httplib.HTTPConnection(SERVER_URL)

def count_lines(filename):
    lines = 0
    for line in open(filename):
        lines += 1
    return lines

with open(FILE_NAME) as file:
	i = 0
	count = count_lines(FILE_NAME)
	for line in file:
		i += 1
		print 'Document [{}/{}]'.format(i,count)
		
		doc = line.split(',')
		id = doc[0]
		rev = doc[1].rstrip()
		
		#empty doc
		uri = '/{}/{}?rev={}'.format(DB_NAME, id, rev)
		body = '{}'
		headers = {"Content-type": "application/json"}
		print uri
		conn.request("PUT", uri, body, headers)
		r = conn.getresponse()
		r.read()
		
		#get old rev
		uri = '/{}/{}?revs_info=true'.format(DB_NAME, id)
		conn.request("GET", uri)
		print uri
		r = conn.getresponse()
		obj = json.loads(r.read())
		oldRev = obj['_revs_info'][2]['rev'].encode("utf-8")
		print oldRev
		currentRev = obj['_revs_info'][0]['rev'].encode("utf-8")
		print currentRev
		
		#get old doc
		uri = '/{}/{}?rev={}'.format(DB_NAME, id, oldRev)
		print uri
		conn.request("GET", uri)
		r = conn.getresponse()
		doc = r.read()
		
		#restore old doc
		uri = '/{}/{}?rev={}'.format(DB_NAME, id, currentRev)
		print uri
		body = doc.replace(oldRev, currentRev)
		headers = {"Content-type": "application/json"}
		conn.request("PUT", uri, body, headers)
		r = conn.getresponse()
		print r.read()

Transfer data via AJAX to NodeJS

Prerequisites

  • NodeJS with Express

Client-Side Code

I’m using a jQuery UI DatePicker as an example. But it can be transferred to any other element for doing an AJAX-Call.

$(document).ready(function() {
	$('#datepicker').datepicker( { 
		onSelect: function(date, pickerInstance){ 
			$.ajax({
				url: '/datepicker',
				data: {'date':date},
				type: 'POST'
			});
		}
	} );
});

Server-Side Code

This code is running on NodeJS.

var app = express()
app.use(express.bodyParser()); // must be before any 'app.use(express.static(__dirname + '/public'))'-statements

...

app.post('/datepicker', function(request, response){
  console.log(request.body)       // your JSON
  response.send(request.body);    // echo the result back
});

It is important to have app.use(express.bodyParser());, which is used for JSON parsing, in the very beginning of the server code. Any routing stuff like app.use(express.static(__dirname + '/public')) must be set afterwards, otherwise the request.body will be undefined.

Einführung in die Informationsfusion

Prüfungsprotokollinhalte

Hier findest du einige Inhalte von Prüfungsprotokollen

Allgemeines

Was ist IF?

  • Definition: Aus verschiedenen Wissensquellen höherwertiges Wissen generieren
  • Arten von höherwertigen Wissen
  • Neues Wissen
  • Besseres Wissen (weniger Unsicherheiten)

Nutzen?

  • Höhere Robustheit/Verlässlichkeit
  • Höhere Auflösung
  • Höhere Abdeckung
  • Kostenreduktion

Probleme von Sensorik?

  • Immer eine Informationsreduktion
  • Fensterung
  • Rauschen
  • Projektion
  • Abtastung

Wann ist Fusion möglich?

  • Gemeinsamer Kontext
  • Unsicherheitsbehaftete Informationen (Wenn sich Informationen widersprechen!)

Weiterlesen

Maschinelles Lernen 1 – Zusammenfassung

  • Es gibt eine Vorlesungsaufzeichnung vom WS11/12 über den Streaming-Client der ATIS.
  • Einordnungskriterien ML
  • Die Inhalte dieser Zusammenfassung beziehen sich vorallem auf die Themengebiete von Herrn Professor Zöllner
  • Es besteht keinerlei Anspruch auf Vollständigkeit oder Richtigkeit

Allgemeines

  • Wahrscheinlichkeitsverteilung ist stationär wenn sich nicht über die Zeit ändert.

Einordnungskriterien von Lernverfahren

https://dl.dropboxusercontent.com/s/wqvtpc6hyzrsyx6/einordung.PNG?dl=1&token_hash=AAE7A4maJdsXOZg94v-zbBqnPki4Igror3vIyMDz1K5YjA&expiry=1399839031

Weiterlesen

(Unvollständige) Zusammenfassung Kognitive Systeme

Die Vorlesung Kognitive Systeme am KIT 2012/2013 zusammengefasst von honnel und famalgosner

Kognitive Systeme

Allgemeine Infos

  • k-Means Algorithmus aka Clustering
  • Phase und Spektrum sind notwendig um ein Bild vollständig zu rekonstruieren

Themen in den Klausuren

Signalverarbeitung

Fouriertransformation

Die muss man drauf haben: 🙁

Fouriertransformationen

  • Abtasttheorem
  • Windowing
  • Overlap Processing
  • Zeichnen von Spektrum
  • x-Achse: Frequenz, y-Achse: Real-Teil, z-Achse: Imaginär-Teil
  • Überführen von f(t) mit Hilfe trigonometrischen Additionsthreorems in eine Form mit n Termen
  • Bild alle f Hz wiederholen
  • Höhe mit f = 1/T multiplizieren (T = 2 in Tabelle oben)
  • Zeichnen von Betragsspektrum
  • x-Achse: Frequenz, y-Achse: sqrt(R(F(w))²+I(F(w))²)

Faltung

Sehr gutes Applet zum Falten

Autokorrelation

Komplexe Faltung Weiterlesen

Mehrere Domains auf einen Uberspace aufschalten

Seid einiger Zeit ist dieser Blog auf Uberspace umgezogen. Grund dafür war zum einen das Bezahlmodell als auch die unkomplizierte Nutzbarkeit eines Shared-Hosts. Da ich außer meiner Hauptdomain honnel.de mittlerweile ein weiteres Projekt in Angriff nehmen möchte, habe ich sich erst einmal auf meinen bestehenden Uberspace aufgeschaltet.

Szenario

Um das Szenario etwas greifbarer zu machen hier mal das Setup:

Diese Domains und beliebige Subdomains sollen nun auch entsprechende Unterverzeichnisse weitergeleitet werden. Außerdem sollen für beide Domains entsprechende getrennte Mail-Adressen vergeben werden können.

Weiterlesen