<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT &#8211; MuLus Blog</title>
	<atom:link href="https://blog.mulu.at/category/it/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.mulu.at</link>
	<description></description>
	<lastBuildDate>Tue, 18 Apr 2017 20:27:00 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>mod_xsendfile mit Symlinks emulieren</title>
		<link>https://blog.mulu.at/2017/04/18/mod_xsendfile-mit-symlinks-emulieren/</link>
					<comments>https://blog.mulu.at/2017/04/18/mod_xsendfile-mit-symlinks-emulieren/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 18 Apr 2017 20:27:00 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_xsendfile]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symlink]]></category>
		<category><![CDATA[wordpres]]></category>
		<guid isPermaLink="false">https://blog.muellerlukas.de/?p=234</guid>

					<description><![CDATA[Moin zusammen, heute mal wieder ein Blogpost mit hoffentlich praktischem Nutzen. Jeder, der ein bisschen in der Webentwicklung tätig war, wird früher oder später auf ein Problem stoßen, wenn er große Dateien einer bestimmten Nutzergruppe zur Verfügung stellen muss. Da gibt es mehrere Möglichkeiten mit mehr oder weniger großen Nachteilen. &#8211; Per Scriptsprache ausliefern: Kann [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Moin zusammen,</p>
<p>heute mal wieder ein Blogpost mit hoffentlich praktischem Nutzen.<br />
Jeder, der ein bisschen in der Webentwicklung tätig war, wird früher oder später auf ein Problem stoßen, wenn er große Dateien einer bestimmten Nutzergruppe zur Verfügung stellen muss. Da gibt es mehrere Möglichkeiten mit mehr oder weniger großen Nachteilen.<br />
&#8211; Per Scriptsprache ausliefern: Kann man machen, aber irgendwann greift ggf. ein eingerichtetes Laufzeitlimit. Für größere Dateien also ungeeignet.<br />
&#8211; Dateipfad kryptisch benennen: Naja, Linkweitergabe, auch nicht sonderlich toll.<br />
&#8211; Per Webserver-Modul ausliefern: Damit wären wir beim Thema mod_xsendfile. Man sagt dem Modul mit einem Header welche Datei ausgeliefert werden soll. Vorher kann man dann die Rechte prüfen, Downloads zählen, &#8230; Nachteil: Das Modul muss installiert sein.<br />
Will der Hoster das Modul nicht installieren ist das natürlich suboptimal. Da das bei mir der Fall war hatte ich vor einigen Jahren mal eine Lösung mit temporären Symlinks entwickelt. Die funktioniert zwar, aber war recht schnell &#8211; Entschuldigung &#8211; hingerotzt.<br />
Da auch andere Leute an der Lösung interessiert waren, habe ich mich noch mal ein Wochenende hingesetzt und das als PHP-Klasse und WordPress-Plugin neu angefangen. Das Ergebnis und Nutzung stelle ich in diesem Post mal vor.<br />
<span id="more-234"></span>tl;dr: Die Klasse Plugin findet ihr aktuell nur in einem Github-Repo: <a href="https://github.com/muellerlukas/simulatesendfile">https://github.com/muellerlukas/simulatesendfile</a><br />
Oder auch direkt als WordPress-Plugin: <a href="https://github.com/muellerlukas/simulatesendfile_wordpress">https://github.com/muellerlukas/simulatesendfile_wordpress</a></p>
<p>Die generelle Funktionsweise von mod_xsendfile ist in etwa so:<br />
1) Der User will eine Datei runterladen und ruft einen Link auf.<br />
2) Das entsprechende Script prüft ggf. die Berechtigung des Downloads, zählt den Download, &#8230;<br />
3) Wenn das Script die Datei aufruft schickt es einen Header (je nach Webserver &#8222;<span class="pl-s1"><span class="pl-s">X-Sendfil</span></span>e&#8220;, &#8222;<span class="pl-s1"><span class="pl-s">X-Accel-Redirect</span></span>&#8220; oder &#8222;<span class="pl-s1"><span class="pl-s">X-Lighttpd-Sendfil</span></span>e&#8220;) mit dem Pfad zur Datei und beendet die Verarbeitung.<br />
4) Das Modul fängt diesen Header ab und liefert die Datei selbst aus.<br />
5) Somit spielt die Scriptlaufzeit keine Rolle mehr und auch große Dateien können ausgeliefert werden.<br />
Das ist natürlich schön weil man so seine üblichen Prüfroutinen beibehalten kann.</p>
<p>Da mein Hoster dieses Modul nicht installieren wollte, ich aber von der Scriptlaufzeit unabhängig sein wollte, wurde also eine Lösung (zumindest für PHP-Systeme) entwickelt: Die ganz grobe Funktionsweise versuche ich mal zu erläutern.<br />
1) Eine Methode wird als shutdown-Funktion bei PHP registriert, rennt also sobald das Script beendet wird &#8211; und damit kurz bevor die Kontrolle an den Webserver zurück geht.<br />
2) Sollte keiner der Header vorhanden sein, dann gibt es nichts zu tun.<br />
3) Ansonsten wird für die Datei ein Ordner mit Zufallswert + Symlink zu der Datei angelegt. Warum nicht direkt ein Symlink mit Zufallsnamen? Easy: So kriegt der Nutzer auch den Dateinamen direkt vorgegeben.<br />
4) Die entsprechenden Header werden nun entfernt und stattdessen eine Weiterleitung zum Symlink vorgenommen. Die Kontrolle ist wieder beim Webserver und der Nutzer kann runterladen.<br />
5) Zusätzlich gibt es einen Garbage-Collector der Symlinks + Ordner älter als 1 Stunde (standardmäßig, änderbar) löscht und somit weiteren Download verhindert</p>
<p>Leider gibt es Software (wie z.B. WooCommerce) mit Prüfung ob das Modul im Apache aktiviert ist. Ist das nicht der Fall wird weiterhin über PHP selbst aufgeliefert. Bei jedem Update patchen war mir zu blöd, also hat sich dafür dann auch ein ziemlich dreckiger Hack entwickelt. Eine Datei die ins Template eingebunden werden muss (&#8222;dirtyhacks.php&#8220;) erstellt die Funktion apache_get_modules() wenn sie nicht existiert und behauptet einfach: &#8222;mod_xsendfile ist installiert.&#8220;<br />
Das funktioniert so lange wie PHP nicht selbst als Modul installiert ist (was bei den meisten Sharehostern auch nicht der Fall ist). Als Modul gibt es die Funktion und kann somit nicht einfach überschrieben werden. (Okay, mit einer PECL-Extension. Aber wenn ich die installieren kann, dann kann ich auch das Modul installieren.)</p>
<p>Das war&#8217;s eigentlich an sich auch schon. Im Repo ist auch eine kurze Readme enthalten mit einem kleinen Beispiel zur Verwendung.<br />
Dazu muss ich allerdings noch sagen: Sowohl die Klasse udn auch das WordPress-Plugin sind aktuell noch in einem sehr frühen Stadium. So gab es noch keine genauen Tests mit Windows-Systemen (ja, da gibt es wieder Unterschiede bei den Symlinks), PHP &lt;7 und nginx &amp; Lighty.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.mulu.at/2017/04/18/mod_xsendfile-mit-symlinks-emulieren/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>PortableApps Updater/Installer extern starten</title>
		<link>https://blog.mulu.at/2017/01/14/portableapps-updaterinstaller-extern-starten/</link>
					<comments>https://blog.mulu.at/2017/01/14/portableapps-updaterinstaller-extern-starten/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sat, 14 Jan 2017 14:13:46 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[portableapps]]></category>
		<category><![CDATA[portableapps.com]]></category>
		<guid isPermaLink="false">http://blog.muellerlukas.de/?p=202</guid>

					<description><![CDATA[Seit einiger Zeit nutze ich schon PStart als Launcher für meine USB-Sticks. Gleichzeitig aber einige Software von PortableApps. Ein Vorteil ist da natürlich das Updates bestehender Software. Leider lässt sich der Updater nicht direkt ausführen. Wirft nur eine Fehlermeldung dass der Updater nur aus dem Launcher raus gestartet werden kann. (Warum eigentlich?) Jetzt war ich [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Seit einiger Zeit nutze ich schon <a href="http://www.pegtop.net/start/" target="_blank" rel="noopener">PStart</a> als Launcher für meine USB-Sticks.<br />
Gleichzeitig aber einige Software von <a href="http://portableapps.com/" target="_blank" rel="noopener">PortableApps</a>. Ein Vorteil ist da natürlich das Updates bestehender Software.<br />
Leider lässt sich der Updater nicht direkt ausführen. Wirft nur eine Fehlermeldung dass der Updater nur aus dem Launcher raus gestartet werden kann. (Warum eigentlich?)<br />
Jetzt war ich es leid um ein Update zu starten den Launcher von PortableApps zu nutzen.<br />
Ich hab&#8216; mich jetzt mal durch den Source gewühlt und euch mal die passenden Paramter raus gesucht.</p>
<p><span id="more-202"></span><br />
Die Binary zum Updater lautet immer <code>{PortableApps-Verzeichnis}\PortableApps.com\PortableAppsUpdater.exe</code><br />
Es gibt dazu einige Optionen. Jede Option hängt ihr einfach an den Aufruf in der Form <code>/{Name}={Wert}</code> an.<br />
Ein Muss beim Aufruf sind dabei &#8222;MODE&#8220; mit dem Wert &#8222;UPDATE&#8220; und &#8222;CONNECTION&#8220; mit entsprechend brauchbarem Wert.<br />

<table id="tablepress-1" class="tablepress tablepress-id-1">
<thead>
<tr class="row-1">
	<th class="column-1">Name</th><th class="column-2">Wert</th><th class="column-3">Beschreibung</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">MODE</td><td class="column-2">ADD</td><td class="column-3">App installieren</td>
</tr>
<tr class="row-3">
	<td class="column-1"></td><td class="column-2">ADDALL</td><td class="column-3">Vermutung: Alle runterladen und installieren</td>
</tr>
<tr class="row-4">
	<td class="column-1"></td><td class="column-2">UPDATE</td><td class="column-3">Apps aktualisieren</td>
</tr>
<tr class="row-5">
	<td class="column-1">OPENSOURCEONLY</td><td class="column-2">true</td><td class="column-3">Nur OpenSource-Apps anzeigen</td>
</tr>
<tr class="row-6">
	<td class="column-1"></td><td class="column-2">false</td><td class="column-3">Auch ClosedSource-Apps anzeigen</td>
</tr>
<tr class="row-7">
	<td class="column-1">KEYBOARDFRIENDLY</td><td class="column-2">true</td><td class="column-3">Blendet Checkboxen aus</td>
</tr>
<tr class="row-8">
	<td class="column-1"></td><td class="column-2">false</td><td class="column-3">Blendet Checkboxen ein</td>
</tr>
<tr class="row-9">
	<td class="column-1">ADVANCED</td><td class="column-2">true</td><td class="column-3">?</td>
</tr>
<tr class="row-10">
	<td class="column-1"></td><td class="column-2">false</td><td class="column-3">?</td>
</tr>
<tr class="row-11">
	<td class="column-1">SHOWINSTALLEDAPPS</td><td class="column-2">true</td><td class="column-3">Installierte Apps anzeigen</td>
</tr>
<tr class="row-12">
	<td class="column-1"></td><td class="column-2">false</td><td class="column-3">Installierte Apps verstecken</td>
</tr>
<tr class="row-13">
	<td class="column-1">HIDEPORTABLE</td><td class="column-2">true</td><td class="column-3">Text "Portable" verstecken</td>
</tr>
<tr class="row-14">
	<td class="column-1"></td><td class="column-2">false</td><td class="column-3">Text "Portable" anzeigen</td>
</tr>
<tr class="row-15">
	<td class="column-1">BETA</td><td class="column-2">true</td><td class="column-3">Beta-Versionen einschließen</td>
</tr>
<tr class="row-16">
	<td class="column-1"></td><td class="column-2">false</td><td class="column-3">Beta-Version ausschließen</td>
</tr>
<tr class="row-17">
	<td class="column-1">ORDER</td><td class="column-2">title</td><td class="column-3">Nach Titel sortieren</td>
</tr>
<tr class="row-18">
	<td class="column-1"></td><td class="column-2">category</td><td class="column-3">Nach Kategorie sortieren</td>
</tr>
<tr class="row-19">
	<td class="column-1">CONNECTION</td><td class="column-2">Direct</td><td class="column-3">Direktverbindung</td>
</tr>
<tr class="row-20">
	<td class="column-1"></td><td class="column-2">Proxy</td><td class="column-3">Proxy-Verbindung (Daten siehe unten)</td>
</tr>
<tr class="row-21">
	<td class="column-1"></td><td class="column-2">Automatic</td><td class="column-3">Automatische Suche</td>
</tr>
<tr class="row-22">
	<td class="column-1">PROXYIP</td><td class="column-2"></td><td class="column-3">Proxy-IP</td>
</tr>
<tr class="row-23">
	<td class="column-1">PROXYPORT</td><td class="column-2"></td><td class="column-3">Proxy-Port</td>
</tr>
<tr class="row-24">
	<td class="column-1">STARTUP</td><td class="column-2">true</td><td class="column-3">Zeigt Banner</td>
</tr>
<tr class="row-25">
	<td class="column-1"></td><td class="column-2">false</td><td class="column-3">Versteckt Banner</td>
</tr>
<tr class="row-26">
	<td class="column-1">STARTUPSHOWERRORS</td><td class="column-2">true</td><td class="column-3">Fehler anzeigen</td>
</tr>
<tr class="row-27">
	<td class="column-1"></td><td class="column-2">false</td><td class="column-3">Fehler verstecken</td>
</tr>
</tbody>
</table>
<!-- #tablepress-1 from cache --></p>
<p>Den zusammengesetzten Aufruf kann man so jetzt problemlos in PStart einpflegen und spart sich den Umweg über den Launcher von PortableApps.<br />
Als Beispiele noch:<br />
Alle Apps updaten: <code>PortableAppsUpdater.exe /MODE=UPDATE /CONNECTION=AUTOMATIC</code><br />
Dialog um Apps zu installieren (nach Titel sortiert):<code> PortableAppsUpdater.exe /MODE=ADD /ORDER=title /CONNECTION=Automatic</code></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.mulu.at/2017/01/14/portableapps-updaterinstaller-extern-starten/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>/system bei Android rw remounten</title>
		<link>https://blog.mulu.at/2016/05/25/system-bei-android-rw-remounten/</link>
					<comments>https://blog.mulu.at/2016/05/25/system-bei-android-rw-remounten/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 25 May 2016 00:33:20 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Spielereien]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[system]]></category>
		<guid isPermaLink="false">http://blog.muellerlukas.de/?p=179</guid>

					<description><![CDATA[Ab und an muss man die /system-Partion Read-Write mounten. Eigentlich sollten das Apps wie Link2SD oder der Total Commander automatisch machen. Link2SD ist mir seit dem Wechsel auf CM 13 mit der Meldung &#8222;Cannot move to /system/priv-app&#8220; beim Integrieren von Updates abgeschmiert. Also über die Shell probiert. Der übliche Befehl mount -o remount,rw /system sollte [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Ab und an muss man die /system-Partion Read-Write mounten.<br />
Eigentlich sollten das Apps wie Link2SD oder der Total Commander automatisch machen.<br />
Link2SD ist mir seit dem Wechsel auf CM 13 mit der Meldung &#8222;Cannot move to /system/priv-app&#8220; beim Integrieren von Updates abgeschmiert.<br />
Also über die Shell probiert.<br />
Der übliche Befehl <code>mount -o remount,rw /system</code> <strong>sollte</strong> das ja eigentlich tun.<br />
Nun, manchmal tut er das ohne Fehlermeldung einfach nicht. Die Lösung war simpel.<br />
<span id="more-179"></span><br />
Hat mich einige Stunden gekostet die Lösung zu finden:<br />
Standardmäßig wird die Binary /system/xbin/mount genutzt. Das ist ein Problem.<br />
Nutzt man direkt /system/bin/mount rennt das ohne Probleme und die Partition ist rw gemountet.<br />
<code>/system/bin/mount -o remount,rw /system</code> ist also das Kunststück. <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.mulu.at/2016/05/25/system-bei-android-rw-remounten/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Umzug zu all-inkl</title>
		<link>https://blog.mulu.at/2016/05/25/umzug-zu-all-inkl/</link>
					<comments>https://blog.mulu.at/2016/05/25/umzug-zu-all-inkl/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 25 May 2016 00:22:49 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[IT]]></category>
		<guid isPermaLink="false">http://blog.muellerlukas.de/?p=177</guid>

					<description><![CDATA[Moin Leute, aufgrund der aktuellen Situation (kein PHP7, kein Let&#8217;s encrypt, fehlernde Kommunikation, &#8230;) liegt die Domain mit Blog, etc. nun auch bei all-inkl. Heißt also: Ab jetzt mit PHP7 und einem schönen SSL-Zertifikat. Die nächsten Wochen beobachte ich mal die Geschwindigkeitsunterschiede zu PHP 5.]]></description>
										<content:encoded><![CDATA[<p>Moin Leute,</p>
<p>aufgrund der aktuellen Situation (kein PHP7, kein Let&#8217;s encrypt, fehlernde Kommunikation, &#8230;) liegt die Domain mit Blog, etc. nun auch bei all-inkl.<br />
Heißt also: Ab jetzt mit PHP7 und einem schönen SSL-Zertifikat.</p>
<p>Die nächsten Wochen beobachte ich mal die Geschwindigkeitsunterschiede zu PHP 5.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.mulu.at/2016/05/25/umzug-zu-all-inkl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Windows 10 80 Jahre testen [Update]</title>
		<link>https://blog.mulu.at/2015/10/02/windows-10-80-jahre-testen/</link>
					<comments>https://blog.mulu.at/2015/10/02/windows-10-80-jahre-testen/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 02 Oct 2015 02:06:34 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows 10]]></category>
		<guid isPermaLink="false">http://blog.muellerlukas.de/?p=153</guid>

					<description><![CDATA[Seit einigen Windows-Versionen ist es möglich den Testzeitraum um 90 Tage zu erweitern. Das klappt auch noch mit Windows 10. Allerdings scheint Microsoft wohl ein kleiner Fehler unterlaufen zu sein. Damit kann man theoretisch den Testzeitrum auf 30030 ausdehnen. slmgr /dlv zeigt in dem Fall entsprechend die Anzahl der Verlängerungsmöglichkeiten. Bitte: 1001 Wie bei den [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Seit einigen Windows-Versionen ist es möglich den Testzeitraum um 90 Tage zu erweitern.<br />
Das klappt auch noch mit Windows 10. Allerdings scheint Microsoft wohl ein kleiner Fehler unterlaufen zu sein.<br />
Damit kann man theoretisch den Testzeitrum auf 30030 ausdehnen.</p>
<p><span id="more-153"></span><br />
<strong>slmgr /dlv</strong> zeigt in dem Fall entsprechend die Anzahl der Verlängerungsmöglichkeiten. Bitte: 1001<br />
<a href="https://blog.muellerlukas.de/wp-content/uploads/2015/10/2015-10-02-03_55_36-Windows-Script-Host-1-1.png"><img fetchpriority="high" decoding="async" src="http://blog.muellerlukas.de/wp-content/uploads/2015/10/2015-10-02-03_55_36-Windows-Script-Host-300x282.png" alt="2015-10-02 03_55_36-Windows Script Host" width="300" height="282" class="alignnone size-medium wp-image-154" /></a></p>
<p>Wie bei den anderen Versionen kann der Testzeitraum mit <strong>slmgr /rearm</strong> wieder auf 30 Tage gesetzt werden.</p>
<p>Mangels installierter Win10-Trial kann ich das hier so aktuell nicht testen. Werde ich die Tage nachholen und noch berichten.</p>
<p>Ich persönlich denke allerdings nicht, dass der Trick lange funktionieren wird. Endlich ein Grund die Funktion des Zwangsupdates in Win10 auszutesten.</p>
<p>Update vom 24.05.2016:<br />
Da die Aktivierung nach dem Update direkt über die HardwareId läuft und nicht mehr mit einem ProductKey fällt das Testen wohl erst mal flach. Auf meinem Arbeitsnotebook aktiviert sichs jetzt automatisch und da ich eh zum Arbeiten auf Debian umgestiegen bin ist das wohl obsolet.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.mulu.at/2015/10/02/windows-10-80-jahre-testen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Einfaches Tool für virtuelle CD-Laufwerke</title>
		<link>https://blog.mulu.at/2011/11/24/einfaches-tool-fur-virtuelle-cd-laufwerke/</link>
					<comments>https://blog.mulu.at/2011/11/24/einfaches-tool-fur-virtuelle-cd-laufwerke/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 24 Nov 2011 17:20:39 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[cd]]></category>
		<category><![CDATA[laufwerk]]></category>
		<category><![CDATA[virtuell]]></category>
		<guid isPermaLink="false">http://blog.muellerlukas.de/?p=95</guid>

					<description><![CDATA[Von mir auch mal wieder ein Lebenszeichen. Man kennt es ja, man hat ein CD/DVD-Image irgendwo geladen und will nun die entsprechende Software installieren. Dafür gibt es alle erdenklichen Software-Pakete zum mounten der Dateien als virtuelles Laufwerk. Ich nutze dazu seit einiger Zeit ein nettes kleines Tool von Microsoft. Es nennt sich &#8222;Virtual CDROM Control [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Von mir auch mal wieder ein Lebenszeichen.</p>
<p>Man kennt es ja, man hat ein CD/DVD-Image irgendwo geladen und will nun die entsprechende Software installieren.<br />
Dafür gibt es alle erdenklichen Software-Pakete zum mounten der Dateien als virtuelles Laufwerk.</p>
<p>Ich nutze dazu seit einiger Zeit ein nettes kleines Tool von Microsoft.</p>
<p><span id="more-95"></span></p>
<p>Es nennt sich &#8222;Virtual CDROM Control Panel&#8220; und damit lassen sich praktisch unbegrenzt virtuelle Laufwerke anlegen und entsprechend die Dateien mounten.</p>
<p>Auf jeden Fall unterstüzt werden iso-Images. Bei anderen Dateitypen bin ich mir nicht sicher, da war aktuell einfach noch kein Bedarf vorhanden.</p>
<p>Ein weiterer Pluspunkt ist für mich die Dateigröße &#8211; entpackt in etwa 40 Kilobyte groß.<br />
Bei Bedarf steht das gemountete Image dann auch noch nach einem Neustart zur Verfügung.</p>

<p>Zu finden ist es <a href="http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe">hier</a>. Getestet von mir derzeit nur unter Windows XP.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.mulu.at/2011/11/24/einfaches-tool-fur-virtuelle-cd-laufwerke/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Facebook und die Daten-CD (Update 1)</title>
		<link>https://blog.mulu.at/2011/10/24/facebook-und-die-daten-cd/</link>
					<comments>https://blog.mulu.at/2011/10/24/facebook-und-die-daten-cd/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 24 Oct 2011 19:02:25 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[facebook]]></category>
		<guid isPermaLink="false">http://blog.muellerlukas.de/?p=89</guid>

					<description><![CDATA[Viele Leute haben sich ja bestimmt auch die CD mit den eigenen Daten bei Facebook beantragt. Ich habe hier nun meine Antwort bekommen. Man mag denken, was man will. Ich zumindest habe meine Entscheidung bezgl. Facebook getroffen. Wie schauts bei euch aus? Habt ihr auch so eine Mail bekommen? Hello, We have received your request [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Viele Leute haben sich ja bestimmt auch die CD mit den eigenen Daten bei Facebook beantragt. Ich habe hier nun meine Antwort bekommen.</p>
<p><span id="more-89"></span> Man mag denken, was man will. Ich zumindest habe meine Entscheidung bezgl. Facebook getroffen.<br />
Wie schauts bei euch aus? Habt ihr auch so eine Mail bekommen?</p>
<blockquote><p>Hello,</p>
<p>We have received your request for information about your personal data held by Facebook Ireland (“Facebook”). In regards to your request for details about the way your personal data are being handled by Facebook, we encourage you to have a look at the Privacy Policy (also called “Data Use Policy”), which provides for a description of:</p>
<p>• the categories of data being processed by Facebook,</p>
<p>• the personal data that Facebook receives from Facebook members,</p>
<p>• the purpose or purposes of the processing of such data,</p>
<p>• the source or sources(s) of the data, if known, and</p>
<p>• the recipients or categories of recipients to whom Facebook members’ personal data are or may be disclosed.</p>
<p>The Privacy Policy is available for view at <a href="https://www.facebook.com/about/privacy/">https://www.facebook.com/about/privacy/</a>.</p>
<p>We have included for your convenience the direct links to sections that refer to the categories of data we collect, the way we process them and the recipients of your data:</p>
<p>• We comprehensively disclose the categories of data processed and provide a description of the personal data constituting such data in the “information we receive about you” section of our Privacy Policy.</p>
<p>• We provided information as to how we process the personal data we collect in the “how we use the information we receive” section of our Privacy Policy.</p>
<p>• We provide our users with detailed and visually illustrated information about the categories of recipients to whom the data may be disclosed in the “sharing with other websites and applications” section of our Privacy Policy. It should be stressed that we never share user’s personal data with advertisers.</p>
<p>We have built a convenient self-service tool to offer people who use Facebook the opportunity to access the personal data we hold about them in accordance with the provisions of EU Directive 95/46/EC.</p>
<p>By offering this tool we are able to give you immediate access to your data at any time free of charge.  We have included all the data that we believe necessary to comply with the requirements of data protection law in this download.</p>
<p>As you may know, we are currently working with the Irish Data Protection Commission to review various aspects of our service including our response to subject access requests. If we make any changes to the data provided in response to such requests as a result of this review, then our self-service tool will be amended accordingly.  In that event, we will notify you again on completion of the review and you may wish to download your data again at that time.</p>
<p>Please note that this tool provides you with data that is currently held in your profile and does not generally include historic log records. We are examining the extent of the log records that should also reasonably be provided in response to a subject access request as part of the review by the Irish Data Protection Commission and will provide further information on the outcome of this consideration in due course.  Also please note that you can check in your account settings under “Payments” to ascertain whether we have your credit card information stored, and you may choose to change or delete it.</p>
<p>You can access the self-service data access tool by clicking “Download a copy of your Facebook data” at the link below:</p>
<p><a href="https://www.facebook.com/settings">https://www.facebook.com/settings</a>.</p>
<p>It is important to note that we have several measures in place to ensure the security of your information. Also, we require you to confirm your identity to complete the process. You will not be able to access the downloaded information until you have completed the security check.</p>
<p>Please note that your downloaded file may contain sensitive information. You should keep it secure and take precautions when storing, sending or uploading it to any other services.</p>
<p>Remember: You can also access your personal data anytime by logging in to Facebook. When you log in, you can correct, change or delete your information.</p>
<p>If you are having trouble logging in to your account, please visit:</p>
<p><a href="http://www.facebook.com/help/?page=174">http://www.facebook.com/help/?page=174</a></p>
<p>Thanks for contacting Facebook,</p>
<p>Facebook Ireland User Operations – Data Access Request Team</p>
<p>&nbsp;</p></blockquote>
<p>Da bin ich wohl nicht der Einzige. Wies weitergeht: http://europe-v-facebook.org/DE/Daten_verlangen_/Beschwerde_einreichen/beschwerde_einreichen.html</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.mulu.at/2011/10/24/facebook-und-die-daten-cd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP DTAUS-Klasse</title>
		<link>https://blog.mulu.at/2010/01/10/php-dtaus-klasse/</link>
					<comments>https://blog.mulu.at/2010/01/10/php-dtaus-klasse/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sun, 10 Jan 2010 17:18:01 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[dtaus]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sourceforge]]></category>
		<guid isPermaLink="false">http://blog.muellerlukas.de/?p=82</guid>

					<description><![CDATA[Beim Arbeiten an einer Vereinsverwaltung kam irgendwann der Punkt, an dem die Mitgliedsbeiträge halbautomatisch eingezogen werden sollten.
Deutsche Banken haben für solche Fälle (Massenlastschriften und -überweisungen) ihr eigenes Format entwickelt.]]></description>
										<content:encoded><![CDATA[<p>Beim Arbeiten an einer Vereinsverwaltung kam irgendwann der Punkt, an dem die Mitgliedsbeiträge halbautomatisch eingezogen werden sollten.<br />
Deutsche Banken haben für solche Fälle (Massenlastschriften und -überweisungen) ihr eigenes Format entwickelt.</p>
<p><span id="more-82"></span></p>
<p>Simpel gesagt besteht eine DTAUS-Datei aus 3 Teilen: A-, C- und E-Satz.<br />
Der A-Satz enthält allgemeine Infos wie Typ, Sender, Referenznummer und Ausführungsdatum.<br />
Der E-Satz enthält Checksummen aus Kontonummern, Bankleitzahlen und Betrag.</p>
<p>Das nervigste überhaupt ist der C-Satz, der mehrfach vorkommen kann. Jeder Satz steht für einen Datensatz.<br />
Name und Verwendungszeck besitzen ihr eigenes Feld, das aber max. 27 Zeichen lang sein darf.<br />
Da durchaus &#8218;mal ein längere Satz vorkommen kann, gibt es sog. &#8222;Erweiterungssätze&#8220;. Maximal 15 an der Zahl.<br />
Ein Erweiterungssatz besteht aus einer ID + 27 Zeichen. Gesamt kann also ein Name oder Verwendungszweck 432 Zeichen lang sein: 27 + 15 * 27</p>
<p>Allerdings teilen sich Name Sender, Name Empfänger, Verwendungszweck die Sätze. Damit steht z.B. folgende Möglichkeit zur Verfügung: Sendername von 54, Empfängername von 81 und Verwendungszweck von 297 Zeichen.<br />
Mehr ist einfach nicht drin.<br />
Das klingt ja an sich gar nicht mal so schlecht, wäre da nicht noch ein Haken: Es gibt 5 Blöcke in denen die Erweiterungssätze untergebracht werden.<br />
1. Block: Max. 2 Sätze<br />
3. bis 5. Block: Max. 4 Sätze<br />
6. Block: Max. 1 Satz<br />
Dabei muss allerdings jeder Block 128 Zeichen lang sein. Im Klartext: Auffüllen wenn&#8217;s nicht passt. Yay!</p>
<p>Naja, nachdem ich an diesem &#8222;Ding&#8220; mehre Tage saß, bin ich nun so weit, es als Alpha zu bezeichnen.<br />
Es muss zwar noch ein wenig dran geschraubt werden und ein Beispiel ist auch noch nötig, aber &#8222;soweit, so gut&#8220;: <a title="http://phpdtaus.sourceforge.net/" href="http://phpdtaus.sourceforge.net/">http://phpdtaus.sourceforge.net/</a></p>
<p>Viel Spaß!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.mulu.at/2010/01/10/php-dtaus-klasse/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
	</channel>
</rss>
