tag:blogger.com,1999:blog-69624142914213461892024-03-13T03:04:41.772+01:00Stefans BlogMission: improving (real-)lifeStefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.comBlogger33125tag:blogger.com,1999:blog-6962414291421346189.post-77764199801298416852011-07-24T11:27:00.002+02:002011-07-24T11:30:48.888+02:00Anleitung abgeschnitte Faxe mit der Fritz Box verhindern<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp-TRybFNiqfCP83fJAQ8FnqaSnXGU_kxzC7qgSx20Y8ZxoaIlXxrmHdwu6xQkA5hs59jp5REcZ_hXp3fhL4mPhZ-DtlY-P20M9nIi-bov942T8PBN_oRFvrWYqtQY-xQbGra4v2MlyfMP/s1600/fritzbox-abgeschnittes-fax.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="334" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp-TRybFNiqfCP83fJAQ8FnqaSnXGU_kxzC7qgSx20Y8ZxoaIlXxrmHdwu6xQkA5hs59jp5REcZ_hXp3fhL4mPhZ-DtlY-P20M9nIi-bov942T8PBN_oRFvrWYqtQY-xQbGra4v2MlyfMP/s400/fritzbox-abgeschnittes-fax.png" /></a></div><br />
Seit kurzem habe ich zum ersten Mal die Fax Funktion meiner Fritz Box 7170 ausprobiert. Doch leider kommen die Faxe immer nur zerstückelt an, siehe Bild.<br />
<br />
Nach einiger Internetrecherche[<a href="http://www.ip-phone-forum.de/showthread.php?t=217730">1</a>] habe ich im Freetz Webinterface 40MB Swap Space eingestellt. Die Swappiness[<a href="http://juliusbeckmann.de/blog/linux-speichermanagement-tunen-swappiness.html">2</a>] habe ich auf dem Standardwert 60 belassen. Scheinbar wird der Swap Space auch nur während der Konvertierung des empfangenen Faxes genutzt und 40MB reichen auf jeden Fall für einen ordentlichen Faxempfang aus! Kann ich nur empfehlen, falls ihr das gleiche Problem habt.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimc8Cqd3t8-QB_ary0ZhqzyfRFdzHzOFwsFDhyWIG26RuFRk7KmuhLg-0KWr40EPt-RU9XcCZNzYuuGOxh6Q3fgA1NQ3IaleGyUgK7_FeiuHldTVipTiTxxt4rEZVokanXjtlrjYQP-KPc/s1600/freetz-web-interface-swap.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="180" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimc8Cqd3t8-QB_ary0ZhqzyfRFdzHzOFwsFDhyWIG26RuFRk7KmuhLg-0KWr40EPt-RU9XcCZNzYuuGOxh6Q3fgA1NQ3IaleGyUgK7_FeiuHldTVipTiTxxt4rEZVokanXjtlrjYQP-KPc/s400/freetz-web-interface-swap.png" /></a></div><br />
Im normalen Betrieb bleibt der SWAP ungenutzt:<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEholVyAD3_7wRInjj3I2moWuDcFmprlypovSNdbBTCc8DHfQM1Wg9l5heHxTwzEqyCwWA_F7yxmFpuK5nHOGL53Rn6mmyqKPqKx9iaAejwK-FPky0Cex4Ng54XTNj0LaetVAD-yAthaROm_/s1600/freetz-swap-ungenutzt.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="208" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEholVyAD3_7wRInjj3I2moWuDcFmprlypovSNdbBTCc8DHfQM1Wg9l5heHxTwzEqyCwWA_F7yxmFpuK5nHOGL53Rn6mmyqKPqKx9iaAejwK-FPky0Cex4Ng54XTNj0LaetVAD-yAthaROm_/s400/freetz-swap-ungenutzt.png" /></a></div><br />
<br />
<br />
[1] <a href="http://www.ip-phone-forum.de/showthread.php?t=217730">http://www.ip-phone-forum.de/showthread.php?t=217730</a><br />
[2] <a href="http://juliusbeckmann.de/blog/linux-speichermanagement-tunen-swappiness.html">http://juliusbeckmann.de/blog/linux-speichermanagement-tunen-swappiness.html</a>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-67510295086700506462011-07-17T22:12:00.000+02:002011-07-18T10:13:24.410+02:00Cross Site Scripting wird in Browsern vertuschtCross Site Scripting ist eine unschöne Sache. Dabei übernimmt der Server ohne weitergehende Prüfung eingaben des Benutzers.<br />
<br />
Formularfelder werden vielfach per Javascript geprüft. Das ist nicht sicher! Man kann zum Beispiel GET Parameter direkt in der URL Leiste manipulieren.<br />
<br />
Moderne Browser machen hier leider einen Strich durch die Rechnung indem URLs automatisch URL-encoded werden.<br />
<br />
Beispiel Chrome:<br />
Sichtbar ist in der URL Bar folgendes:<br />
<pre>example.com/?param=<script>alert(document.cookie)</script></pre>Tatsächlich verwendet wird aber:<br />
<pre>http://example.com/?param=%3Cscript%3Ealert(document.cookie)%3C/alert%3E</pre>Hier wurde ein URL Encoding vorgenommen. Problematisch, weil mit URL-Encoding häufig kein Ausnutzen des Cross Site Scripting möglich ist. Es sieht aus, als ob die Web Anwendung sicher ist. Durch einen Intercepting Proxy ist ein Ausnutzen aber immer noch möglich!<br />
<br />
Ähnlich wird in Internet Explorerer 8 und Firefox 3 and 4 vorgegangen. Allerdings wird hier der URL encoded String im Browser angezeigt, zumindest ein Hinweis für die Web Entwickler.<br />
<br />
Wichtig ist es für einen WEB Entwickler, die Anzeige in der URL Leiste gegenzuchecken mit Firefox Plugins wie Tamper Data oder der Network Leiste in Google Chrome. Nur so kann effektiv auf Cross Site scripting überprüft werden. Im Zweifel sollte ein intercepting Proxy, zum beispiel <a href="http://portswigger.net/burp/">Burp</a>, herangezogen werden. Der kann dann auch POST Parameter modifizieren und ist frei von jeglichen Jacascript Checks.</p><br />
Links:<br />
- <a href="https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)">OWASP: Cross Site Scripting</a><br />
- <a href="http://portswigger.net/burp/">Burp intercepting Proxy</a>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-4689397830341537372011-04-14T10:59:00.002+02:002011-05-02T11:58:34.091+02:00SOAP Requests as HTTP Requests in Neoload vs. LoadrunnerLast month I started using Neoload as a load testing tool. It allows for a very easy learning curve so that the skill "load testing" can be more easily acquired.<br />
<br />
Comparison<br />
<table><tbody>
<tr> <th>HP Loadrunner</th> <th><img src=http://upload.wikimedia.org/wikipedia/en/thumb/a/a6/Logo_NeoLoad_Transparent.png/250px-Logo_NeoLoad_Transparent.png><br />
Neotys Neoload</th> </tr>
<tr> <td>(+) fully scriptable<br />
(+) advanced reports<br />
(-) only simple expressions<br />
(-) hard to learn<br />
(-) long time needed to record</td> <td>(+) simple, intuitive interface<br />
(+) very good regular expressions<br />
(+) most correlations automatic<br />
(+) inexpensive<br />
(-) Limited report export functionality</td> </tr>
</tbody></table><br />
<h2>SOAP with Neoload</h2><br />
Both those products can be acquired with many different protocols or monitors. Neoload offers a very easy SOAP Protocol functionality where it reads out the descriptive WSDL file and offers the services for building the xml file.<br />
<br />
However I did not have that SOAP protocol available. That means it is only not available for checking a replaying the Vuser. It is always available for recording.<br />
<br />
For checking out the functionality in Neoload I decided to encapsulate a SOAP request in the HTTP protocolg. A SOAP request can be a simple http post request.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ5x95X2drAWhnjePe2GgBXWwbhVtKyhe9G8mWnJTX4iu8Z0wmuDCveLUKrVCqA_CvgbBXzPHvcf2MdPf9Fc7GclEsrFTLPJKxyosymCXT25QGCzkvAUG5u2ye-H2JOvA5hWKfyESxOCJA/s1600/neoload-post-name.PNG" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="211" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ5x95X2drAWhnjePe2GgBXWwbhVtKyhe9G8mWnJTX4iu8Z0wmuDCveLUKrVCqA_CvgbBXzPHvcf2MdPf9Fc7GclEsrFTLPJKxyosymCXT25QGCzkvAUG5u2ye-H2JOvA5hWKfyESxOCJA/s400/neoload-post-name.PNG" /></a></div><br />
<br />
Usually http post request body data is comprised of key=value?key=value pairs. The Neoload HTTP protocol is designed to work exactly with this pattern and offers name and value pairs. It is possible to enter Text only in the name column. This is good for the XML SOAP request.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcjrAMLMbxNkURj9J2pP89TNtrezcP-hYcqy21T2nwsq4mtdE1I5mQsOdQOMS2-xFjWwzQHA2ft8fksGAMpSm_yVgvPjOk_5gs2wUEgtVzQLCiSHJAqT921wDkJ4AKV2PAnVWPvAtwAmCZ/s1600/neoload-putequals.PNG" imageanchor="1" style="margin-left:1em; margin-bottom:1em"><img border="0" height="251" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcjrAMLMbxNkURj9J2pP89TNtrezcP-hYcqy21T2nwsq4mtdE1I5mQsOdQOMS2-xFjWwzQHA2ft8fksGAMpSm_yVgvPjOk_5gs2wUEgtVzQLCiSHJAqT921wDkJ4AKV2PAnVWPvAtwAmCZ/s400/neoload-putequals.PNG" /></a></div><br />
Yet it is possible to enter free text there and variables. If no value is present, the equal sign can be omitted by deselecting the checkbox for "put equals" in the advanced settings.<br />
<br />
<br />
The http header can also be changed in the advanced settings of the neoload request. A special SoapAction header is necessary in the request header.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTrpjm55d1qqqiUp1W412IRHqrW6z1PJdParVP6EVD8KxZy2WMYD9ath_3AR32qK8SFVYKezwng5usRGD-J6azaxkZh7g6AfwrVS_4uMdUVHrrjGS4uIDgzg-SdapsLzCccDIDGnBQehpE/s1600/neoload-soapaction-header.PNG" imageanchor="1" style="margin-left:1em; margin-bottom:1em"><img border="0" height="209" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTrpjm55d1qqqiUp1W412IRHqrW6z1PJdParVP6EVD8KxZy2WMYD9ath_3AR32qK8SFVYKezwng5usRGD-J6azaxkZh7g6AfwrVS_4uMdUVHrrjGS4uIDgzg-SdapsLzCccDIDGnBQehpE/s400/neoload-soapaction-header.PNG" /></a></div><br />
After that I added a simple variable extractor to extract the variable result.<br />
<br />
<br />
<iframe src="http://rcm-de.amazon.de/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=stefblog07-21&o=3&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=3827425492" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com8tag:blogger.com,1999:blog-6962414291421346189.post-27931074525722408722011-01-31T21:10:00.009+01:002011-04-14T09:37:03.904+02:00Realtek RTL8187B USB Wireless and Mac OS X 10.6 Snow Leopard Howto<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSKbVHk8uQ5xU6j5BpR-nZ8PNgkT8cSivyzm_p4R3LqCPQsl_74JeCeqoBfH8L92Xf5Cx5xo7mH3wUaslk2fSkHumYjhvFtG8gACPiv0QNZaRc8Zd3Qzeywy-BIaTgDsuZk01c2QTW9Mk6/s1600/IMG_0027.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSKbVHk8uQ5xU6j5BpR-nZ8PNgkT8cSivyzm_p4R3LqCPQsl_74JeCeqoBfH8L92Xf5Cx5xo7mH3wUaslk2fSkHumYjhvFtG8gACPiv0QNZaRc8Zd3Qzeywy-BIaTgDsuZk01c2QTW9Mk6/s320/IMG_0027.JPG" width="240" /></a><br />
</div><br />
While Mac OS tries to look simple it still fails miserably at some 3rd party hardware support. For example a DIGITUS DN-7003GT USB Wireless dongle I got recently. Auto detection: fail.<br />
<br />
The Digitus homepage promises Mac support. But no driver to download. Most Usb devices just re-use a specific wireless chipset. The driver for that chipset will work on every dongle, no matter which branding it uses. The DIGITUS branding contains just a RTL8187B chipset.<br />
<br />
<h2>HOWTO get R8187 running</h2><br />
<b>1. Download driver<br />
</b><br />
<pre class="prettyprint">http://218.210.127.131/downloads/downloadsView.aspx?Langid=1&PNid=24&PFid=1&Level=6&Conn=5&DownTypeID=3&GetDown=false&Downloads=true</pre><br />
Chipset: RTL 8187B, choose the OSX 10.5 one, even if you have OS X 10.6.<br />
<div style="float:right"><iframe src="http://rcm-de.amazon.de/e/cm?t=stefblog07-21&o=3&p=8&l=as1&asins=B003RW3D34&ref=tf_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></div><b>2. Install using the install command</b><br />
<br />
Probably Mac OS X will say, that the driver is incompatible, but just install it for now.<br />
<br />
<b>3. Edit the driver</b><br />
<br />
Now the driver needs to be changed for two reasons:<br />
<br />
a) make it compatible to Mac OSX 10.6<br />
<br />
edit the last few lines in /System/Library/Extensions/RTL8187Bl.kext/Contents/Info.plist<br />
search for com.apple.kpi and replace update the version numbers to 8.1.0, so that you get:<br />
<pre class="prettyprint lang-xml"><key>com.apple.kpi.bsd</key>
<string>8.1.0</string>
<key>com.apple.kpi.iokit<k/ey>
<string>8.1.0</string>
<key>com.apple.kpi.libkern</key>
<string>8.1.0</string>
<key>com.apple.kpi.mach</key>
<string>8.1.0</string>
</pre><br />
<br />
b) make it compatible to the specific Digitus USB wireless dongle<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtO1bAKLbPmOhIzVjUd-Cb6RwBMJlLWo08na0MNGKFhKy9Bp-hzQe4ii6xd-hW5Xxndxi6WQrlwu-UCb-QbUKzhflcPxfnAE38Ww_K857wPe8rYqKd_CsG2A3-ubMvYgvtJffwvv9wErOy/s1600/system-profiler.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="135" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtO1bAKLbPmOhIzVjUd-Cb6RwBMJlLWo08na0MNGKFhKy9Bp-hzQe4ii6xd-hW5Xxndxi6WQrlwu-UCb-QbUKzhflcPxfnAE38Ww_K857wPe8rYqKd_CsG2A3-ubMvYgvtJffwvv9wErOy/s320/system-profiler.png" width="320" /></a></div><br />
Use "About this Mac"->"More Information" to find your USB Device ID.<br />
<br />
Google helps to convert it to decimal:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK3bIXT73T6Pj46D_w7rkUNdJDPLSRfLNCZEicOWrrmSFvW2MQ4tXekOCz6AL1mLFpWwi03bKFynqvJfwhQyR5NTTsR2rkzpHE8MmIlQ6_DBkoYs8a0mLaszVVcESyl6oVz1AptxtIE-As/s1600/google-decimal.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK3bIXT73T6Pj46D_w7rkUNdJDPLSRfLNCZEicOWrrmSFvW2MQ4tXekOCz6AL1mLFpWwi03bKFynqvJfwhQyR5NTTsR2rkzpHE8MmIlQ6_DBkoYs8a0mLaszVVcESyl6oVz1AptxtIE-As/s1600/google-decimal.png" /></a></div>Vendor ID 0x0bda in decimal is 3034<br />
Device ID 0x8189 in decimal is 33161<br />
<br />
<div>However in the Info.plist I only have a different device ID. But I am able to locate the Vendor ID:</div><pre class="prettyprint lang-xml"><key>idProduct</key>
<integer>33161</integer>
<key>idVendor</key>
<integer>3034</integer></pre>The Product ID just needs to be changed to match the actual product ID of the specific USB dongle.<br />
<br />
<b>4. Fix permissions of the kernel extension</b><br />
<br />
With Mac OS X, permissions of kernel Extensions are very important! You can even go to Disk Utility and let it repair all disk permissions.<br />
<br />
<pre class="prettyprint">chown -R root:wheel RTL8187Bl.kext
chmod -R 755 RTL8187Bl.kext</pre><br />
<b>5. Enable the kext in Mac OS X</b><br />
<br />
Mac OS X keeps a cache of all kext, so we need to publish the newly compatible driver there:<br />
<br />
<pre class="prettyprint">rm /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext
kextcache -v 1 -a i386 -a x86_64 -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions</pre><br />
Make sure the device does not get listed as unsuccessful during the kextcache enabling!<br />
<br />
<b>6. Load the driver</b><br />
<br />
Now just plug in your USB dongle to see if it is detected correctly. For debugging purposes, we can load the driver manually:<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsNBFJWNLbB2APBYJYYscqz6yfi9uDdmj2iqx0g5Y6iwooCIAEf1ThCNavrCwGwy5eLycgvYwpnxZ4vnjZm4Ypolo-iftpEyxukkGvQgERtElsZkIXRWZ49TBVqF8cH5TseoGMFOMnjcUr/s1600/realtek-client-util.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsNBFJWNLbB2APBYJYYscqz6yfi9uDdmj2iqx0g5Y6iwooCIAEf1ThCNavrCwGwy5eLycgvYwpnxZ4vnjZm4Ypolo-iftpEyxukkGvQgERtElsZkIXRWZ49TBVqF8cH5TseoGMFOMnjcUr/s320/realtek-client-util.png" width="320" /></a><br />
<br />
<pre class="prettyprint lang-sh">kextload -t RTL8187Bl.kext</pre><br />
Dmesg should now have the message:<br />
<br />
<blockquote>RTL8187B: Ethernet address xx:xx:xx:xx:xx:xx</blockquote><br />
You can only use it with the Realtek USB WLAN Client Utility. Really uncomfortable. Is there any dongle out there that works on Mac without a utility?Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com16tag:blogger.com,1999:blog-6962414291421346189.post-39465871290285986962011-01-25T21:21:00.000+01:002011-01-25T21:21:57.078+01:00Installation Treiber von Windows XP CD unter Windows VistaHeute ging es daran ein antikes Schmuckstück, EPSON LQ-550 an einem inzwischen auch schon veralteten Windows Vista Computer anzuschliessen. Vista bietet den Druckertreiber unverständlicherweise von Haus aus nicht mehr an. Treiber zum Download gibt es nur für Windows 98. Es gibt auch mit dem <a href="http://sourceforge.net/projects/omniprint/">omniprint</a> Projekt einen CUPS Linux Treiber - vielleicht etwas für die nächste Migration auf Linux! Allerdings gibt es mit etwas Googlen die Information, dass der Drucker von Windows XP unterstützt wird. Plan: XP Treiber für Vista recyclen<br />
<br />
<b>Wo sind die alten Treiber auf der Windows XP CD?</b><br />
<br />
Die Treiber von Windows XP kommen in einer Datei D:\WINXP\I386\driver.cab. Driver.cab enthält dann den konkreten Treiber ep24res.dll und die GPD-Beschreibungsdatei EP550.GPD. Allerdings können diese beiden nur durch eine inf-Datei installiert werden. Zum Glück muss man diese nicht selbst erstellen, sondern Windows XP bringt die schon im Verzeichnis D:\WINXP\I386 selbst mit.<br />
<br />
<b>Wie werden diese unter Windows Vista verwendet?</b><br />
<br />
Im Drukermenü kann ein neuer Drucker hinzugefügt werden und dort muss dann ein eigener Pfad der Treiberdaten angegeben werden. Dieser Pfad ist <b>D:\WINXP\I386</b>. Danach bietet Vista die komplette Treiberliste von Windows XP an. Hier kann man direkt das richtige Modell auswählen.<br />
<br />
Und voila - der alte Nadeldrucker verrichtet auch selbst unter Windows Vista tadellos seine Dienste.Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-40538461928477248972011-01-10T23:11:00.008+01:002011-01-11T08:36:00.999+01:00OpenVPN zwischen iPhone und FritzBox<div class="separator" style="clear: both; text-align: center;"><a href="http://www.openvpn.net" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" n4="true" src="http://swupdate.openvpn.net/community/icons/ovpntech_logo-s_REVISED.png" /></a></div><b>Wieso OpenVPN?</b><br />
Nachteile des AVM VPNs mit IPSeC:<br />
- das iPhone verlangt immer ein Passwort<br />
- es wird nicht der gesamte Verkehr übers VPN geleitet<br />
<br />
PPTP geht mit Freetz und der FritzBox Beta Labor nicht, weil AVM dort keine Kernel Quellcodes bereitstellt. Bei OpenVPN geht alles auch mit der Labor Version, wenn es auch etwas Aufwand verlangt.<br />
<br />
<b>Setup von OpenVPN auf dem iPhone</b><br />
Ich bin nach einer Anleitung für OpenVPN und Freetz <a href="http://freetz.org/wiki/packages/openvpn">[1]</a> und einer Anleitung für OpenVPN und das iPhone <a href="http://dokuwiki.knallimall.org/iphone:openvpn">[2]</a> und <a href="http://chandraonline.net/blog/?p=22">[3]</a> vorgegangen. Dort fehlt allerdings ein für mich wichtiger Punkt:<br />
<br />
<b>Den gesamten Traffic durch den Tunnel leiten</b><br />
Die Weiterleitung des gesamten Traffics ist unter Mac OSX und iOS nicht so gehandhabt, wie auf anderen Unixen. Die Routen lassen sich mit "netstat -r" anzeigen und mit dem OSX-eigenen Tool "scutil" umsetzen.<br />
<br />
Zur Weiterleitung des gesamten Updates wird das Attribut "OverridePrimary" verwendet, siehe Beispielscript unter <a href="http://www.bsdforen.de/showthread.php?p=212991">[4]</a>. Dazu habe ich in der Datei aus dem Guide oben den Eintrag für "update-resolv-conf" gesucht und dort zwischen die anderen d.add Befehle "d.add OverridePrimary # 1" eingefügt. Damit wird der gesamte Traffic über das VPN geleitet.<br />
<br />
<b>Fazit, Vergleich OpenVPN und andere</b><br />
Bei mir hat das soweit funktioniert, ich hatte aber doch bei Sprachgesprächen einen Hall, was vielleicht an der latenzträchtigen UDP-Kapselung von OpenVPN liegt. Nach meinem Gefühl ist es bei PPTP nicht so hörbar. Also forsche ich weiter nach der perfekten iSIP iPhone FritzBox VPN Telefonie Lösung.<br />
<br />
[1] <a href="http://freetz.org/wiki/packages/openvpn">http://freetz.org/wiki/packages/openvpn</a><br />
[2] <a href="http://dokuwiki.knallimall.org/iphone:openvpn">http://dokuwiki.knallimall.org/iphone:openvpn</a><br />
[3] <a href="http://chandraonline.net/blog/?p=22">http://chandraonline.net/blog/?p=22</a><br />
[4] <a href="http://www.bsdforen.de/showthread.php?p=212991">http://www.bsdforen.de/showthread.php?p=212991</a>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-52516358034440439302010-12-22T09:41:00.003+01:002010-12-22T12:01:14.341+01:00Warten auf Standard-Ausgabe in Bash oder offene Pfeife<h2>Das Problem</h2>Nach Aufruf eines Dämons (hier sleep) kehrt die Bash nicht gleich zurück sondern wartet.<br />
<pre class="prettyprint lang-bash">$ time ( sleep 3 &)|cat; ps
real 0m3.005s
user 0m0.000s
sys 0m0.004s
PID TTY TIME CMD
7644 pts/0 00:00:00 bash
14552 pts/0 00:00:00 ps
</pre><h2>Erklärung</h2>Das "sleep" Kommando in der Subshell "( )" soll in den Hintergrund gehen "&". Danach soll die Ausgabe des symbolischen "sleep"-Dämons mit einem symbolischen "cat" verarbeitet werden. Die Zeitmessung "time" dauert statt der erwarteten 0.0x volle 3 Sekunden und "sleep" ist nach dem Aufruf nicht in der Prozessliste sichtbar.<br />
<h2>Analyse</h2>Das passiert nur, wenn die Ausgabe über eine Pfeife "|" geleitet wird. "cat" muss auf alle Eingaben warten, bevor es sich selbst schließt.<br />
<h2>Workaround</h2><pre class="prettyprint lang-bash">$ time ( sleep 3 &)>/dev/null|cat; ps
real 0m0.003s
user 0m0.000s
sys 0m0.004s
PID TTY TIME CMD
7644 pts/0 00:00:00 bash
17449 pts/0 00:00:00 sleep
17450 pts/0 00:00:00 ps</pre>Hier wird die Standardausgabe auf /dev/null umgelenkt. Damit muss "cat" nicht mehr auf die Ausgabe warten. Ein definiertes Logging kann auch in eine Datei erfolgen, falls man die Ausgabe behalten möchte:<br />
<pre class="prettyprint lang-bash">$ ( sleep 3 &)>/var/log/meindaemon.log|cat</pre><h2>Empfehlung</h2>Ein "richtiger" Dämon sollte immer selbst Standardaus- und Eingaben abkoppeln um nicht noch gekoppelte Prozesse in der aufrufenden Shell aufzuhalten.<br />
<h2>Tools zum Debuggen</h2><ul><li><b>lsof -p (PID)</b> Offene Dateien eines Programmes auflisten</li>
<li><b>pfiles (PID)</b> Schöner offene Dateien eines Programmes auflisten</li>
<li><b>fuser (Datei)</b> Herausfinden, von welcher PID eine Datei geöffnet wird</li>
</ul>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-19694712599963096242010-12-15T09:24:00.003+01:002010-12-24T11:17:41.064+01:00Leichtgläubigkeit und Virenverteilung im Browser<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCWElOvaH-irnaN-04nqToi2k2tMN4p4SGZPW63iQGlMxV6JgkZPHDTgLjYKHvIu9RT_C-rprcczJBKuIPpZnC67SN9nmu8tFcAWOt7TaoLTtbk2z5OjpfugmsCi3Vp3xnlSJulLXjxJG6/s1600/chrome10.PNG"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCWElOvaH-irnaN-04nqToi2k2tMN4p4SGZPW63iQGlMxV6JgkZPHDTgLjYKHvIu9RT_C-rprcczJBKuIPpZnC67SN9nmu8tFcAWOt7TaoLTtbk2z5OjpfugmsCi3Vp3xnlSJulLXjxJG6/s320/chrome10.PNG" /></a><br />
<br />
Heute wurde mir bei der Immobiliensuche ein Chrome Browser in der Version 10 angeboten. Sehr geschickt ist in einem Iframe unterhalb die Seite von Google eingeblendet um den Anschein von Vertrauen zu erwecken. Wer sich allerdings auskennt, kann im Release Blog nachsehen, dass es Version 10 noch gar nicht gibt [<a href="http://googlechromereleases.blogspot.com/">1</a>]. Bei einem Klick auf "Aktualisierung starten" wird eine vermutlich virenbelastete .exe-Datei "Chrome_5_update.exe" heruntergeladen.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_8zVXWvvG055-wB1na6Y4yaCZ8CrXtdk0x-p76V8YE4YaUxqnxBqq1JdrpFgCkxxFF_EKIktZCz7LRk0fNzJdCxwn9ozoGH7B6jid93lhwIKW3hK8ZNvn_E_TPQAIpGmXu2zDSDjy5d9T/s1600/domport.PNG"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_8zVXWvvG055-wB1na6Y4yaCZ8CrXtdk0x-p76V8YE4YaUxqnxBqq1JdrpFgCkxxFF_EKIktZCz7LRk0fNzJdCxwn9ozoGH7B6jid93lhwIKW3hK8ZNvn_E_TPQAIpGmXu2zDSDjy5d9T/s320/domport.PNG" /></a><br />
<br />
Beim "Abbrechen" ist mein System möglicherweise gefährdet - und ich lande auf domport.de. Vermutlich hat die Domaininhaberin ihre Website aufgegeben oder noch gar nicht erstellt, und leitet deshalb auf einen Domain Parker um. Diese versuchen durch den Traffic noch Werbeeinnahmen zu erzielen. Allerdings ist hier wohl das System von Domport manipuliert. Ich habe DOMPORT per E-Mail informiert aber bisher (24.12.) keine Antwort bekommen.<br />
<br />
Wie funktioniert diese Weiterleitung technisch? Im Code, der von http://immobilien-muenchen-flughafen.de/ ausgeliefert wird, steht folgendes:<br />
<pre class="prettyprint lang-html"><script type="text/javascript" src="http://www.updates-browser.com/update_layer/layer_os.php?au=http%3A%2F%2Fparking.domport.de%2F%3Fdomain%3Dimmobilien-muenchen-flughafen.de"></script>
<script language="javascript">window.setTimeout('updatepop()',3000);</script>
<iframe width="100%" height="100%" src="http://www.google.de/search?q=www.immobilien-muenchen-flughafen.de" border="0" frameborder="0" style="border:0px;"></iframe>
</pre><br />
Der erste Script Aufruf holt sich den Malware-Code bei updates-browser.com, danach wird dem Browser ein iframe mit einer Google-Suche untergeschoben. Dadurch sieht das ganze für den Laien vertrauenswürdig aus.<br />
<br />
Die Moral: Vorsicht, Google Chrome updated sich von selbst, niemals ein Updatefenster akzieptieren!<br />
<br />
Das Spoofing ist bekannt im Netz und zum Beispiel auch auf www.sandmeannchen.de aktiv [<a href="http://www.freak-search.com/de/thread/3204336/spoofing_seite">2</a>]. Auch heise[<a href="http://www.heise.de/newsticker/meldung/Vorgebliche-Browser-Updates-installieren-Ad-Ware-1138301.html">3</a>] berichtete darüber. <br />
<br />
Ich hoffe hiermit verhindere ich einige Infektionen!<br />
<br />
[1] <a href="http://googlechromereleases.blogspot.com/">http://googlechromereleases.blogspot.com</a><br />
[2] <a href="http://www.freak-search.com/de/thread/3204336/spoofing_seite">http://www.freak-search.com/de/thread/3204336/spoofing_seite</a><br />
[3] <a href="http:">http://www.heise.de/newsticker/meldung/Vorgebliche-Browser-Updates-installieren-Ad-Ware-1138301.html</a>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-35510285898547808632010-12-03T21:04:00.009+01:002010-12-17T17:40:50.033+01:00VirtualBox Webinterface PHPVirtualBox einrichten unter Linux<b>Wieso Virtualbox?</b><br />
VMWare, KVM+libvirt, Qemu, was nimmt man nur? Am technologisch "besten" soll libvirt und KVM sein. Aber dafür gibt es kein geeignetes Webinterface. Dagegen ist PHPVirtualbox eine geniale Lösung, die sehr stark dem Desktop-Client nachempfunden ist. Auch ohne Vorkenntnisse sollte man sehr gut damit zurecht kommen. Hier gibt es zum Einstieg ein HOWTO mit einer Schritt für Schritt Anleitung.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjso-Jn79ZM4Xf7BHeUWneEl4mNy7cNTMWxT0vLYNlcI_AUTt_J3zrQbEglnBZsxuf4vfTMBXr6xcSX_Tfc0BWj_WgThohhpQCSEoQKhVk3-5mBz8KPmLuh4hvyUaxE-xNbzApIToD3xkMW/s1600/phpvirtualbox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjso-Jn79ZM4Xf7BHeUWneEl4mNy7cNTMWxT0vLYNlcI_AUTt_J3zrQbEglnBZsxuf4vfTMBXr6xcSX_Tfc0BWj_WgThohhpQCSEoQKhVk3-5mBz8KPmLuh4hvyUaxE-xNbzApIToD3xkMW/s1600/phpvirtualbox.png" style="width: 100%;" /></a></div><br />
<b>Virtualbox unter Ubuntu installieren</b><br />
Zunächst will Ubuntu wissen woher es Virtualbox bekommt. Ich nehme in diesem Beispiel die LTS Version 10.04 oder "Lucid", das sollte bei anderen Versionen geändert werden.<br />
<pre class="prettyprint lang-bash"># Quellen bekannt machen
echo -e "# Virtualbox Quelle für Lucid 10.04
deb http://download.virtualbox.org/virtualbox/debian lucid non-free" \
>> /etc/apt/sources.list
# Den sicheren Schlüssel hinzufügen
apt-key adv --recv-keys \
--keyserver keyserver.ubuntu.com 98AB5139
# Paketlisten aktualisieren
apt-get update
# VirtualBox installieren
apt-get install virtualbox-3.2
# Benutzer hinzufügen
useradd -m vbox vboxusers
# Passwort setzen und merken für später
passwd vbox
# Benutzername für Init eintragen und starten
echo "VBOXWEB_USER=vbox" >> /etc/vbox/vbox.cfg
<div>/etc/init.d/vboxdrv start
/etc/init.d/vboxweb-service start
# VirtualBox Bei jedem Booten starten
update-rc.d vboxweb-service defaults
</div></pre><b>PHPVirtualBox installieren</b><br />
Zunächst brauchen wir PHP selbst, dann kann auch die Applikation installiert werden.<br />
<pre class="prettyprint lang-bash">apt-get install php5
<div><div>cd /var/www/
# Downloaden und auspacken</div></div><div><div>wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-0.5.zip</div><div>unzip phpvirtualbox-0.5.zip</div></div><div><div>rm phpvirtualbox-0.5.zip
# apache starten und per default starten</div></div><div><div>/etc/init.d/apache2 restart</div></div>update-rc.d apache2 defaults</pre><br />
Danach ist es noch nötig, die Datei "/var/www/phpvirtualbox-0.5/config.php" anzupassen:<br />
<pre class="prettyprint lang-bash">var $username = 'vbox';
var $password = 'GemerktesPasswortVonVorhin';</pre><b>Das Setup absichern</b><br />
Datei /var/www/phpvirtualbox-0.5/.htaccess<br />
<blockquote><pre class="prettyprint lang-bash">AuthType Basic
AuthName "Login to phpVirtualBox"
AuthUserFile /var/www/phpvirtualbox-0.5/.htpasswd
Require user vbox</pre></blockquote><div>Datei .htpasswd erzeugen, bitte mit sicherem Passwort:</div><pre class="prettyprint lang-bash">htpasswd -c /var/www/phpvirtualbox-0.5/.htpasswd vbox</pre>Die .htpasswd Absicherung muss dann noch in der Apache Konfiguration für /var/www erlaubt werden:<br />
<pre class="prettyprint lang-bash">/etc/apache2/sites-available/default:
<Directory /var/www>
...
AllowOverride <span style="color: red;">None</span>
...
</Directory>
</pre>ändern in:<br />
<pre class="prettyprint lang-bash">/etc/apache2/sites-available/default:
<Directory /var/www>
...
AllowOverride <span style="color: red;">AuthConfig</span>
...
</Directory>
</pre><b>VMWare Images zu VirtualBox konvertieren</b><br />
Vmwares disk images im VMDK Format können direkt von VirtualBox verwendet werden, allerdings nicht, wenn sie in mehrere Dateien aufgeteilt sind. Zusammenfügen von Images:<br />
<pre class="prettyprint lang-bash">vmware-vdiskmanager -r name-der-alten.vmdk -t 0 neuer-single-vmdk-name.vmdk
</pre>Beim Erstellen der neuen Virtual Machines in VirtualBox habe ich auf folgendes geachtet:<br />
- IDE festplatte wählen statt SATA<br />
- Host-only networking<br />
<br />
<b> Remote Desktop Verbindung mit VRDP absichern [Update 4.12]</b><br />
Die remote Desktop Verbindung ist wunderschön zum einrichten von virtuellen Maschinen. Nur leider ist das per Default ohne Passwort. Das <a href="http://www.virtualbox.org/manual/ch07.html#vrdp-auth">entsprechende Kapitel</a> in der Virtualbox Anleitung erklärt, was die verschiedenen Methoden "External" oder "Guest" bedeuten. So richtig befriedigend finde ich diese Sicherungsmethoden aber nicht. Hier sollte Virtualbox noch nachbessern.<br />
<br />
<b>Weblinks</b><br />
<a href="http://code.google.com/p/phpvirtualbox/">PHPVirtualbox Website</a><br />
<a href="http://nerdoftherings.net/wp/?p=90">Blogeintrag Moving from VMWare to VirtualBox. PHPVirtualBox on Ubuntu.</a>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com2tag:blogger.com,1999:blog-6962414291421346189.post-73463882619059519702010-12-03T17:30:00.002+01:002010-12-13T10:25:18.476+01:00Wie programmiert man sichere Web Applikationen?Jeder Web Entwickler sollte sich bewusst sein, dass unsicher programmierte Webapplikationen heute das Haupteinfallstor in sichere Unternehmensnetze sind.<br />
<br />
Um diese Lücke zu schliessen wäre der beste Weg, einfach keine Lücken in Web Applikationen einzubauen. Allerdings passiert das einbauen von Lücken oft unbemerkt und manche Schlupflöcher sind eventuell noch gar nicht entdeckt. Um allerdings bekannte Fehler zu vermeiden, ist es zuerst nötig diese zu kennen. Frei nach dem Motto "know your enemy".<br />
<br />
Eine Liste findet sich in den <a href="http://www.owasp.org/index.php/Top_10_2010-Main">OWASP Top 10</a>. Um etwas tiefer einzusteigen kann man sich die eigenen HTTP Header mit Hilfe des<a href="http://portswigger.net/burp/proxy.html"> Burp proxy</a> anschauen und modifizieren. Im Web gibt es eine Vielzahl von unsicheren Beispielapplikationen, die Lücken zum Live-Anschauen bieten, zum Beispiel: badstore, mutilidae, moth, <a href="http://www.irongeek.com/i.php?page=security/deliberately-insecure-web-applications-for-learning-web-app-security">eine Liste</a>. Sehr geholfen hat mir auch das Buch "The Web Application Hackers Handbook" von den Machern von burp. Es ist zwar kein Schnäppchen aber lohnt sich doch für einen tieferen Einblick:<br />
<iframe src="http://rcm-de.amazon.de/e/cm?t=stefblog07-21&o=3&p=8&l=as1&asins=0470170778&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<br />
<br />
Disclaimer: Dies dient ausdrücklich nur dem Training und sichern von eigenen Web Applikationen.Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-15607315060077816532010-12-02T19:32:00.000+01:002010-12-02T19:32:11.095+01:00Testautomatisierung Open Source: Hudson, Fitnesse, JUnitZur Testautomatisierung verwende ich in der Regel kommerzielle Tools wie HP Loadrunner oder HP Quicktest Pro oder aber HP Quality Center.<br />
<div><br />
</div><div>Aber auch im Open Source Bereich gibt es viele interessante Testhelfer, hier eine kleine Auswahl:</div><div>- <b>Hudson</b> Automatisierte Buildprozesse inklusive Integration ins Versionsmanagement. Zum Beispiel build beim Subversion Checkin</div><div>- <b>JUnit</b> Bietet Möglichkeiten zum Testen von kleinen Codesegmenten. Vorteil: Es muss nicht zuerst die ganze Anwendung gebaut und gestartet werden.</div><div>- <b>Maven</b> ist ein standardisiertes "Makefile" für Java. Das Tool ermöglicht automatischen Download von Abhängigkeiten und bindet viele Testtools ein.<br />
- <b>Fitnesse</b> speichert Tests in einem Wiki und ermöglicht die schöne Ausführung.</div><div><div>- <b>Selenium</b> ist ein Web-Testing Framework um die Oberfläche von Webanwendungen durch einen Browser automatisiert zu testen.</div><div>- <b>JMeter</b> ermöglicht einen Lasttest durch Aufzeichen und späteres abspielen der Anfragen. Selenium benötigt pro User einen laufenden Browser und skaliert deshalb hier nicht gut.</div><div><br />
<div><br />
</div></div></div>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-61973336141477768272010-11-25T11:12:00.001+01:002011-01-31T09:01:41.338+01:00Die Prozess ID (PID) eines Prozesses unter Unix speichern - Beispiel ApacheDSImmer wieder kommt es vor, dass Daemon-Prozesse ihre Prozess IDs nicht speichern können. Das hat den Nachteil, dass der Prozess später nicht mehr akkurat erkannt und beendet werden kann.<br />
<br />
Zum Beispiel Apache Directory Server in der Version 1.5.4. Der proprietäre IBM Rational Directory Server für IBM Rational Synergy verlässt sich auf diese Version.<br />
<br />
Das mitgelieferte .sh-Startskript ist unbrauchbar, weil nach dem Starten mit dem Bash-builtin $! nur die PID des Bash-Prozesses des Startskripts abrufbar ist. So kann die PID trotzdem gespeichert werden:<br />
<pre><span class="Apple-style-span" style="color: #073763;"># ApacheDS implementiert in dieser Version keine PID Speicherung
# java Kommando aus der .sh Datei greppen
# Ausgabe ist ein ApacheDS logo, deshalb nach dev null
# Daemonisiert sich nicht ordentlich, deshalb muss STDERR auch nach dev null
$(grep ^java apacheds_1.5.4/apacheds.sh) >/dev/null 2>&1 &
echo $! > apacheds.pid</span>
</pre><br />
beim Beenden ist es dann möglich, diese PID gezielt zu killen. Hier bietet sich killproc an, weil es auch noch überprüft, ob die PID aus dem laufenden Linux Kernel zum Prozess "java" gehört:<br />
<pre><span class="Apple-style-span" style="color: #073763;">/sbin/killproc -p apacheds.pid -TERM /pfad/nach/jre/bin/java</span>
</pre><br />
Problem gelöst. Für ApacheDS werden neuere Versionen sicher eine bessere Lösung bieten, zum Beispiel durch ein neues <a href="http://old.nabble.com/-ApacheDS-2.0--Installation-layout-td29709963.html">Installationslayout</a>.Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-47328155328923940492010-11-22T10:51:00.000+01:002010-12-02T20:06:07.257+01:00Google App Engine: Packliste Webapp AlphaNach etwas Arbeit habe ich endliche eine funktionierende Version online bekommen: <a href="http://webpackliste.appspot.com/">Packliste Webapp Alpha</a> (Disclaimer: keine vollständige Packliste, alpha)<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAKoHNDP6hM0Fvb4ybcXVqFZXTOZHpjB5n8QgYo-3EcjL4rRK-GeLOEXbwlIFfA8nzwdGYoP-tIRToBjck4OultX-udSGmc5pBdzKDDmm9hdPTMJ1uhLIEeuVBZo9gIW790FQRp9oRLTsD/s1600/packliste-alpha.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAKoHNDP6hM0Fvb4ybcXVqFZXTOZHpjB5n8QgYo-3EcjL4rRK-GeLOEXbwlIFfA8nzwdGYoP-tIRToBjck4OultX-udSGmc5pBdzKDDmm9hdPTMJ1uhLIEeuVBZo9gIW790FQRp9oRLTsD/s320/packliste-alpha.PNG" width="320" /></a></div><br />
Google App Engine ist ein kostenloser Hoster für Web Anwendungen. Die Free Quotas sind meiner Meinung nach sehr groß und sollten für die Packliste reichen. Wer für App Engine programmiert darf sich erstmal zwischen Java und Python entscheiden.<br />
<br />
Java kenne ich schon und deshalb habe ich mich für Python und Django als Template Engine entschieden und dabei gelernt, dass <a href="http://monmonja.com/blog/2008/09/templatetags-on-app-engine/">Django auf Google etwas anders ist.</a> Inzwischen finde ich mich in den Templates zurecht und kann produktiv sein.<br />
<br />
Sehr schön ist das Framework <a href="http://jquerymobile.com/">jQuery Mobile</a>. Es stellt das komplette Interface bereit und kümmert sich um Gerätekompatibilität. Gleichzeitig sind damit auch alle jQuery Funktionen verfügbar.<br />
<br />
Aktuelle Funktionen meiner App:<br />
- Anzeigen einer Packliste<br />
- Packstücke einpacken -> durchstreichen und nach Unten bewegen<br />
- AJAX-Onlinezähler zum Registrieren der Packhäufigkeit<br />
- Hinzufügen von Items<br />
<br />
TODO:<br />
- HTML5 Local Storage für gepackte Teile<br />
- Kategorisierung / Übersichtlichkeit<br />
- Umwandlung in native App<br />
<br />
Für Ideen und Verbesserungsvorschläge bin ich dankbar.<br />
<br />
Danke an <a href="http://charlys-gruenerblog.blogspot.com/">Charlotte</a> für die Idee und an die <a href="http://munich.gtugs.org/">Google Tools User Group München</a> und das <a href="http://munich.gtugs.org/gdd10hackathon">Bootcamp 2010</a> für die erste Android App, die zu dieser App geführt hat.Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-39155428203014522362010-11-16T23:19:00.000+01:002010-12-02T20:06:07.257+01:00App-Programmierung - Web oder Nativ? MarktforschungAm Anfang steht eine Idee: Eine Packliste, die Intelligent ist. Die mir beim Kofferpacken genau das anzeigt was am wichtigsten ist und dabei die Intelligenz der Massen nutzt.<br />
<b><br />
</b><br />
<b>Web oder Nativ?</b><br />
<br />
Wie programmiert man heute Apps? In Java für Android oder in Objective-C fürs iPhone? Ich habe mir beides angesehen und eine Java-Android Applikation für meine Packliste geschrieben.<br />
<br />
Allerdings will ich weder Android noch iPhone bevorzugen. Dafür gibt es Webapps. Diese können heute dank HTML5 auch offline-fähig sein. Und zum Bereitstellen für den Android oder iPhone Store kann man apparat.io oder thephonegap verwenden. Wenn man das überhaupt will, da beide derzeit Eintrittsgebühren verlangen. Vielleicht ist der Cydia Appstore besser.<br />
<br />
<b>Welches Framework für Web?</b><br />
<br />
Zur Zeit gibt es für mobile App Entwicklung 2 große Frameworks, JQTouch von Sencha Labs und Jquery Mobile, die sich vor allem in der Lizenz unterscheiden. JQTouch bietet nur die GPL und JQuery Mobile auch alternative Lizenzen. Meine Wahl: JQuery Mobile.<br />
<br />
<b>Gibt es überhaupt einen Markt für eine Packliste Applikation?</b><br />
<br />
Eine kleine Erkundungstour über Google Trends zeigt, dass das Suchvolumen nach Packliste sehr gering ist. Das englische "packing list" wird 10 mal häufiger gesucht. Vielleicht eine bessere Wahl als Titel?<br />
<br />
<b>Was bietet die Konkurrenz?</b><br />
<br />
Selbst bei kostenlosen Apps will ich mir die Konkurrenz anschauen um nicht unnötigerweise Dinge zu duplizieren.<br />
<br />
Für iPhone ist die Mammut Packing List sehr beliebt<br />
<a href="http://www.mammut.ch/en/packinglist.html">http://www.mammut.ch/en/packinglist.html</a><br />
<br />
Für Web-Anhänger gibt es eine <b>universal packing list</b>, die allerdings ein etwas betagtes Design hat:<br />
<a href="http://upl.codeq.info/">http://upl.codeq.info</a><br />
<br />
Und dann hat sich noch jemand an ein modernes webbasiertes Packlistenmanagement gewagt, allerdings sind dort bisher keine Inhalte hinterlegt.<br />
<a href="http://www.packliste.org/">http://www.packliste.org/</a><br />
<br />
Ich denke da ist noch Platz für eine benutzerfreundliche, intelligente Packliste.Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com1tag:blogger.com,1999:blog-6962414291421346189.post-49111476676751901232010-11-07T13:29:00.003+01:002010-12-02T20:06:07.257+01:00Eclipse Tips For Android ProgrammingA small collection of Eclipse Android tips I found for little problems before <a href="http://munich.gtugs.org/gdd10hackathon">Google Dev Day 2010 PreHackathon</a><br />
<br />
Eclipse is quite slow in the default configuration. Quick tip:<br />
edit (your eclipse dir)<b>/opt/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini</b><br />
change<br />
<b>-Dosgi.requiredJavaVersion=1.5</b><br />
into<br />
<b>-Dosgi.requiredJavaVersion=1.6</b><br />
<a href="http://www.inteism.com/2010/05/how-to-speed-up-eclipse-on-os-x-10-6-snow-leopard/">http://www.inteism.com/2010/05/how-to-speed-up-eclipse-on-os-x-10-6-snow-leopard/</a><br />
<div><br />
</div><div>Eclipse Android creates the R.class file on its own. You can remove it or use Menu - Project - Clean and it will be recreated. Good idea to do this from time to time.</div><div><a href="http://stackoverflow.com/questions/3796490/error-unable-to-open-class-file-r-java">http://stackoverflow.com/questions/3796490/error-unable-to-open-class-file-r-java</a><br />
<div>If you get <span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Android Packaging Problem</strong><span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"> also use Menu - Project - Clean</span></span></div><div><span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 18px;"><a href="http://stackoverflow.com/questions/2865577/android-eclipse-error-android-packaging-problem">http://stackoverflow.com/questions/2865577/android-eclipse-error-android-packaging-problem</a></span></span></div><div><span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 18px;"><br />
</span></span></div><div><span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 18px;">Make sure you have the project selected when running build all, and not some resource</span></span></div><div><span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 18px;"><a href="http://soft-dev-pro.blogspot.com/2010/03/android-mainoutxml-error.html">http://soft-dev-pro.blogspot.com/2010/03/android-mainoutxml-error.html</a></span></span><br />
<span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 18px;"><br />
</span></span><br />
Make sure you create resources before using them or you will get Error: No resource found that matches the given name<br />
<a href="http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/">http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/</a><br />
<br />
AndroidManifest Activity Name should always be kept in sync with the classname:<br />
<a href="http://stackoverflow.com/questions/3361896/runtime-exception-in-android-junit-testing">http://stackoverflow.com/questions/3361896/runtime-exception-in-android-junit-testing </a></div></div>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-48383298587437925252010-11-06T07:54:00.000+01:002010-11-06T07:54:46.502+01:00UNIX: Fehler finden mit StraceOft reicht die Fehlersuche über Logmeldungen nicht aus, um einen Fehler zu beheben. Dann ist ein kontrolliertes Ausführen des Programms in einem Debugger erforderlich. Dafür sind debug-Symbole nötig, und meist ein Neubau erforderlich.<br />
<br />
Ohne debug-Symbole können allerdings auch schon nützliche Informationen mit "strace" gewonnen werden. Das Programm zeigt alle "System Calls" einer Applikation auf. Meist ist dann im Fehlerfall schon zu erkennen, welche Datei geöffnet wird oder wo genau der Fehler tatsächlich entsteht.<br />
<br />
Natürlich muss ein Daemon vorher im Vordergrund ausgeführt werden, um die strace Befehle zu sehen. Konkret habe ich das verwendet um PPTPd in Freetz zu debuggen, siehe <a href="http://trac.freetz.org/wiki/packages/pptpd/config#TroubleshootingkeineFehlermeldung">Dokumentation im Freetz-Wiki</a>.<br />
<br />
Einfaches Beispiel der Strace-Verwendung:<br />
<span class="Apple-style-span" style="font-size: x-small;"></span><br />
<pre><span class="Apple-style-span" style="font-size: x-small;"># strace echo 3
execve("/bin/echo", ["echo", "3"], [/* 15 vars */]) = 0
brk(0) = 0x1ec03000
uname({sys="Linux", node="unknown-namer", ...}) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aeadb3aa000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=42988, ...}) = 0
mmap(NULL, 42988, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aeadb3ac000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\355\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1432968, ...}) = 0
mmap(NULL, 3541032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2aeadb5ac000
mprotect(0x2aeadb704000, 2093056, PROT_NONE) = 0
mmap(0x2aeadb903000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x157000) = 0x2aeadb903000
mmap(0x2aeadb908000, 18472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2aeadb908000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aeadb90d000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aeadb90e000
arch_prctl(ARCH_SET_FS, 0x2aeadb90db20) = 0
open("/dev/urandom", O_RDONLY) = 3
read(3, "(\333\372\211\343\357\201", 7) = 7
close(3) = 0
mprotect(0x2aeadb903000, 16384, PROT_READ) = 0
mprotect(0x2aeadb5a9000, 4096, PROT_READ) = 0
munmap(0x2aeadb3ac000, 42988) = 0
brk(0) = 0x1ec03000
brk(0x1ec24000) = 0x1ec24000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=3927616, ...}) = 0
mmap(NULL, 3927616, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aeadb90f000
close(3) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aeadbcce000
write(1, "3\n", 23
) = 2
close(1) = 0
munmap(0x2aeadbcce000, 4096) = 0
close(2) = 0
exit_group(0) = ?
</span></pre>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-11789025381835559932010-11-02T23:34:00.001+01:002010-12-13T10:44:26.732+01:00Fritzbox Rettungsupdate Freetz Recover mit Push_FirmwareÜber einen kleinen eingebauten FTP-Server, der nur beim Booten aktiv ist, kann man auch die Fritzbox Firmware updaten:<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"># ./tools/push_firmware images/neues_firmware.image</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">(box neustarten)</span><br />
Dabei gingen meine Firmware-Einstellungen nicht verloren.<br />
<br />
Auf Mac OS X funktionierte bei mir nur ncftp zum kopieren und ich musste im Skript auch noch einige Änderungen bei uname und mktemp vornehmen, weil die BSD-Apps vom Mac hier strikter sind.<br />
<br />
Ich verwende gerne die neueste Version des Fritzbox-Mods <a href="http://trac.freetz.org/">Freetz</a>, den so genannten SVN Trunk. Die Bleeding-Edge Version wird laufend aktualisiert und enthält stundenaktuelle Neuerungen, ist deshalb allerdings auch extrem instabil.<br />
<br />
Zum Beispiel im <a href="http://trac.freetz.org/changeset/6093">Changeset 6093</a> wurde ein Bug aus 6078 vorerst revertet. Ich habe allerdings dazwischen eine neue Firmware gebaut und eingespielt - danach startete die Box nicht mehr neu. Ein Recover half mir wieder ins Internet.<br />
<br />
<br />
<iframe src="http://rcm-de.amazon.de/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=stefblog07-21&o=3&p=8&l=as1&m=amazon&f=ifr&md=1M6ABJKN5YT3337HVA02&asins=B003108AZI" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-6533958295369587142010-10-23T20:37:00.003+02:002011-09-07T20:59:18.765+02:00Wiki2Touch: Howto offline Wikipedia auf dem iPhone OS 4.X<div class="separator" style="clear: both; text-align: center;">
<a href="http://mehrspassdennje.com/wordpress/wp-content/uploads/2008/11/icon.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://mehrspassdennje.com/wordpress/wp-content/uploads/2008/11/icon.png" /></a></div>
Das beste Feature der iPhone/iTouch Reihe überhaupt meiner Meinung. Wichtige geschichtliche, technische oder kulturelle Fragen können ohne Internetzugang beantwortet werden. Anlässlich meines Updates auf iOS 4.1 schreibe ich ein kleines HOWTO dazu.<br />
<div>
<br /></div>
<div>
Installiert werden muss ein kleiner Server und die Wikipedia Daten.</div>
<div>
<div>
<br /></div>
<div>
1. Software auf dem iPhone installieren</div>
<div>
# apt-get install com.jmaille.sbswiki2touch sbsettings coreutils<br />
Hinweis: um "apt-get" verwenden zu können, muss in Cydia APT 0.7 Strict installiert worden sein</div>
<div>
<br /></div>
<div>
SBSettings erlaubt das schnelle aktivieren des Servers. Auf SBSettings kann man mit einem Wisch des Fingers über die Leiste oben zugreifen.</div>
<div>
<br /></div>
<div>
2. Wikipedia Dumps</div>
<div>
Nun müssen noch die Wikipedia Dumps auf das Device geladen werden. Norbert stellt diese kostenlos bereit <a href="http://www.infodisiac.com/Wikipedia/Wiki2Touch/DownloadFilesW2T.html">[1]</a>. Danke! Die Dateien müssen nach /User/Media/Wikipedia/de auf dem iDevice als images_de.bin und articles_de.bin. Bei mir funktionierten nur die 120px Bilder.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0FGh9vnVBnSi2yAj8LCYShi_D_S5w5HyrbfIo2VQEsNX7PIwfmsV1ulXNvt_bjwXEP44YrcS0QgSE11meFbiprJ8VUBxKmRdtQ-yEj2DV7cB7yjXzrRIbh4T9RZDzSNehf_c4ZFbpanHZ/s1600/Bildschirmfoto+2010-10-23+um+14.38.53.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0FGh9vnVBnSi2yAj8LCYShi_D_S5w5HyrbfIo2VQEsNX7PIwfmsV1ulXNvt_bjwXEP44YrcS0QgSE11meFbiprJ8VUBxKmRdtQ-yEj2DV7cB7yjXzrRIbh4T9RZDzSNehf_c4ZFbpanHZ/s320/Bildschirmfoto+2010-10-23+um+14.38.53.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Zum Kopieren nutze ich den kostenlosen iPhone Explorer <a href="http://www.macroplant.com/iphoneexplorer/">[2]</a></td></tr>
</tbody></table>
<div>
3. Webclip Icon für Wiki2Touch erzeugen, danke an Lucas <a href="http://mehrspassdennje.com/2008/11/15/wiki2touch/">[3]</a></div>
<div>
Nachdem Wiki2Touch mit SBSettings aktiviert ist, kann man über http://localhost:8080 auf Wiki2Touch zugreifen. Um das ganze etwas komfortabler zu machen, gibt es das Webclip - ein Lesezeichen, das wie ein App-Icon aussieht.</div>
<div>
<br /></div>
<div>
- gehe im MobileSafari auf http://localhost:8080</div>
<div>
- drücke auf das (+) unten in der Mitte</div>
<div>
- wähle "Zum Home-Bildschirm"</div>
<div>
<br /></div>
<div>
Und ein schönes Wiki2Touch-Icon taucht auf in der iPhone App-Liste auf :-)<br />
<br />
4. Wikipedia geniessen. Und so sieht das aus:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL_fdcTRCl0YFeUPxujKf0B9atqaEbz1gaBbS22shI65uQC_yX3_VlqVdrafhQJUonCuHkH0zGs_BTsG-QjIWxcnTXayj38M0IakfbddM3vIxX8ZT9sRxRdBL3_8HFiroyUXNkdyw09p3l/s1600/IMG_0004.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL_fdcTRCl0YFeUPxujKf0B9atqaEbz1gaBbS22shI65uQC_yX3_VlqVdrafhQJUonCuHkH0zGs_BTsG-QjIWxcnTXayj38M0IakfbddM3vIxX8ZT9sRxRdBL3_8HFiroyUXNkdyw09p3l/s320/IMG_0004.jpg" width="213" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
Für Wiki2Touch gibt es regelmässig neue Dumps. Die aktuelle Entwicklung kann man im Apfeltalk Forum verfolgen <a href="http://www.apfeltalk.de/forum/biete-wikipedia-dump-t227374-11.html">[4]</a>. </div>
<div>
<br /></div>
<div>
<a href="http://www.infodisiac.com/Wikipedia/Wiki2Touch/DownloadFilesW2T.html">[1] http://www.infodisiac.com/Wikipedia/Wiki2Touch/DownloadFilesW2T.html</a></div>
<div>
<a href="http://www.macroplant.com/iphoneexplorer/">[2] http://www.macroplant.com/iphoneexplorer/</a></div>
<div>
<a href="http://mehrspassdennje.com/2008/11/15/wiki2touch/">[3] http://mehrspassdennje.com/2008/11/15/wiki2touch/</a></div>
<div>
<a href="http://www.apfeltalk.de/forum/biete-wikipedia-dump-t227374-11.html">[4] http://www.apfeltalk.de/forum/biete-wikipedia-dump-t227374-11.html</a></div>
<div>
<br /></div>
</div>
Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-37918184803139449362010-10-23T14:00:00.000+02:002010-10-23T18:33:36.867+02:00Repair Cydia crash with apt-get for iPhone OS 4.1iPhone 4.1 Cydia crashed on me because the Pwnagetool 4.1.2 jailbreak in expert mode installed outdated packages and missed some dependencies. To fix this I used the installed SSH connection to the iPhone to repair and update packages:<br />
<br />
# apt-get update<br />
# apt-get -f install<br />
# apt-get dist-upgradeStefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-4927546182125416032010-10-22T00:28:00.000+02:002010-10-23T18:33:36.867+02:00Debian vs. Ubuntu für ServerUbuntu und Debian benutzen das gleiche Paketformat. Allerdings bieten beide unterschiedliche Versionen an. Debian hat ein sehr unregelmäßiges stable-release weshalb oft ungetestete Pakete in einem System zu finden sind. Ubuntu dagegen macht regelmäßige Releases um Neuerungen anzubieten. [<a href="http://itmanagement.earthweb.com/osrc/article.php/12068_3890111_3/Debian-vs-Ubuntu-Contrasting-Philosophies.htm">1</a>]<br />
<br />
Auf einem Server ist es nicht nötig, immer die neueste Version zu haben. Viel wichtiger ist es, die neueste Version der eingesetzten Serveranwendungen zu haben. Und diese neuesten Versionen werden meist von der Community bereit gestellt. Die Installation und der Betrieb dieser Anwednungen brauchen am meisten Zeit. Dabei helfen Installationsanleitungen, HowTos, Pakete, Foren, Blogs und andere Informationen, die meist von der Community bereitgestellt werden.<br />
<br />
Wie lässt sich die beste Community finden? Die Qualität der Community ist schwer zu messen. Allerdings ist die Quantität durch Google Trends abschätzbar [<a href="http://www.google.de/trends?q=ubuntu,debian,fedora,suse,redhat,rpm,deb&ctab=0&geo=all&date=all&sort=0">2</a>]. Der Suchbegriff "Ubuntu" überholte die anderen Distributionen in 2006. In 2010 suchen in etwa 10 mal so viele Leute nach Ubuntu wie nach Debian. Auch bei Distrowatch ist Ubuntu schon seit mehr als einem Jahr führend bei den Zugriffszahlen [<a href="http://www.google.de/trends?q=ubuntu,debian,fedora,suse,redhat,rpm,deb&ctab=0&geo=all&date=all&sort=0">3</a>]. Laut diesen Zahlen ist Ubuntu zu empfehlen, wenn zahlreiche Community-Informationen benötigt werden.<br />
<br />
[1] <a href="http://itmanagement.earthweb.com/osrc/article.php/12068_3890111_3/Debian-vs-Ubuntu-Contrasting-Philosophies.htm">http://itmanagement.earthweb.com/osrc/article.php/12068_3890111_3/Debian-vs-Ubuntu-Contrasting-Philosophies.htm</a><br />
[2] <a href="http://www.google.de/trends?q=ubuntu,debian,fedora,suse,redhat,rpm,deb&ctab=0&geo=all&date=all&sort=0">http://www.google.de/trends?q=ubuntu,debian,fedora,suse,redhat,rpm,deb&ctab=0&geo=all&date=all&sort=0</a><br />
[3] <a href="http://distrowatch.com/stats.php?section=popularity">http://distrowatch.com/stats.php?section=popularity</a>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-9024563516528914582010-09-28T23:10:00.000+02:002010-10-23T18:33:36.868+02:00Wireshark Kurztipp: Expert Infos des Netzwerks<b>Installation unter Mac OS</b><br />
<b></b>Abgreifen der Pakete erfordert volle Rechte auf dem Interface:<br />
<div>$ sudo chown deinUserAccountName /dev/bpf*</div><div><br />
<b>Kurztipp</b></div><div>Nach dem ersten Aufnehmen (und Stoppen) sieht man alle gecapturten Pakete. Allerdings ist nicht so klar sichtbar, ob das Fehler sind oder nicht. Dafür gibt es die <b>Expert Infos</b>. Ganz links unten ist ein gelber Punkt (siehe roter Pfeil im Screenshot)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3UFo1qXyHTmLO3PdZ6r8QE6hMHT039ZeI-efHjG18WXRnD2jYNLBUqVCsWi5FiGmVHlNBeDPDopjuZ6gSu3_I751v_b0EeuCeTNdyEk5jjYrbUfBFOMFpDusUlmU7WZEQIXw3uTPj-jgN/s1600/wireshark-expert-info.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3UFo1qXyHTmLO3PdZ6r8QE6hMHT039ZeI-efHjG18WXRnD2jYNLBUqVCsWi5FiGmVHlNBeDPDopjuZ6gSu3_I751v_b0EeuCeTNdyEk5jjYrbUfBFOMFpDusUlmU7WZEQIXw3uTPj-jgN/s320/wireshark-expert-info.png" width="320" /></a></div><br />
Jedes TCP/IP Paket hat eine Sequenznummer und so erkennt Wireshark wenn etwas nicht stimmt. Pakete out-of-order angekommen sind oder ähnliches. Alle vermuteten Probleme werden hier gezeigt. In meinem Fall gab es sehr viele vermutete Verluste, aber tatsächlich nur 4 vermutete Neuübertragungen, was aber auch an der kurzen Aufnahmezeit liegen kann. Das Ergebnis mit 1.339 Auffälligkeiten auf 24.127 Pakete (5.5%) liegt wohl am schlechten WLAN, ist aber OK.<br />
<br />
Wireshark gibt mir den Blick auf die Grundlagen des Netzes, immer wieder interessant. Danke für den Tipp an Experteach auf der heutigen <a href="http://www.experteach.de/unternehmen/wireshark_tour.html">Veranstaltung</a> über <a href="http://www.wireshark.org/">Wireshark</a>.</div>Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-28255758997250488352010-09-25T12:32:00.008+02:002010-10-23T18:33:36.868+02:00Projektmanagement mit Open Source: GanttProjectIn einem größeren Projekt ist es wichtig den Überblick zu bewahren. Dafür ist die grafische Darstellung von Zeiträumen und Abhängigkeiten der einzelnen Teilaufgaben sinnvoll.<br />
<br />
Als kommerzielles Tool sticht MS Project hervor. Im freien Bereich scheint Open Workbench am erfolgreichsten zu sein. Allerdings ist es nur für Windows. Deshalb will ich GanttProject auf meinem Mac evaluieren.<br />
<br />
Die Startansicht auf das Projekt ist der dem Programm auch namensgebende Gantt-Chart. Benannt nach dem Unternehmensberater Henry L. Gantt wird in diesem Chart die zeitliche Ausdehnung der Tätigkeiten sichtbar.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho_aT9JN4FNpzqWyHPr3o67325qqWdNiBtxMbQISvwnBai7kGNezloYtl26JaEhyphenhypheneCp2x_NjpIi0mrK2s7QyTmazyfy6OL6CTTJzDFDYZ4AWp6RWVfhjmDZqeKJkjCRwAzSQnUVM59uURp/s1600/gantt.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5520850314608016466" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho_aT9JN4FNpzqWyHPr3o67325qqWdNiBtxMbQISvwnBai7kGNezloYtl26JaEhyphenhypheneCp2x_NjpIi0mrK2s7QyTmazyfy6OL6CTTJzDFDYZ4AWp6RWVfhjmDZqeKJkjCRwAzSQnUVM59uURp/s400/gantt.png" style="cursor: pointer; display: block; height: 217px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a>Im zweiten Reiter lassen sich die Ressourcen mit ihrer zeitlichen Belegung ohne Abhängigkeit anzeigen. Im dritten Reiter findet sich eine "Program Evaluation and Review Technique"-Netzplan Grafik, die sehr gut zur Darstellung der Abhängigkeiten geeignet ist. Hier ein Screenshot:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXaiOoWozqq2cj4V2tLvrhnjBTNZWd3o7AM5fbqT_YK1fghil5xwO_pvLpL9G7a0VAX_P4NquWYxGLU93PwBPCZQH4v6LDkfYZOOgNJjKjROj7bPXcN3WVsL4xsS9Kqo-p4yLIiQ178Tb4/s1600/pert.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5520851799147907362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXaiOoWozqq2cj4V2tLvrhnjBTNZWd3o7AM5fbqT_YK1fghil5xwO_pvLpL9G7a0VAX_P4NquWYxGLU93PwBPCZQH4v6LDkfYZOOgNJjKjROj7bPXcN3WVsL4xsS9Kqo-p4yLIiQ178Tb4/s400/pert.png" style="cursor: pointer; display: block; height: 219px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
Die Graphen lassen sich als HTML exportieren. Dort werden einfach Screenshots eingebunden. Auf der Oberfläche lässt sich zum Beispiel noch der Zeitraum verändern.<br />
<br />
Die letzte Version kam Februar 2009, also vor eineinhalb Jahren heraus. Große Funktionserweiterungen sind hier offenbar nicht geplant.<br />
<br />
Fazit: Einfaches Tool, das seinen Job tut.<br />
<br />
Links<br />
http://www.ganttproject.biz<br />
http://de.wikipedia.org/wiki/Gantt-Diagramm<br />
http://de.wikipedia.org/wiki/Program_Evaluation_and_Review_Technique<br />
http://open-source-project-management-tools.blogspot.com<br />
<br />
Andere Open Source Tools zum Projektmanagement<br />
Planner aus GNOME Office<br />
OpenProj<br />
PHProjekt<br />
Redmine<br />
airTODO - Project Management Tool<br />
Achievo<br />
Activity Manager<br />
BORG Calendar<br />
dotProject<br />
eHour<br />
GanttProject<br />
jxProject<br />
Open Workbench<br />
Projectory<br />
Rapla<br />
TaskJuggler<br />
XPlanerStefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com1tag:blogger.com,1999:blog-6962414291421346189.post-68664812835183034572009-11-02T10:18:00.007+01:002010-10-23T18:33:36.869+02:00Open Source auf dem Mac: Fink oder Macports?Ich komme aus der <a href="http://www.gentoo.org/">Gentoo</a> Entwicklergemeinde. Seit einiger Zeit sind mir aber die Probleme neuer Kernel zu anstrengend geworden und ich bin auf das bequeme aber trotzdem Unix-unterbaute Mac OS X umgestiegen.<br /><br />Auf dem Mac möchte ich nicht auf Open Source Pakete verzichten. Es gibt hier von Gentoo eine Option "gentoo-prefix", allerdings werden dort nicht alle Pakete vorgehalten.<br /><br />Am meisten verwendet werden wohl Macports und Fink. Nur welches System ist besser? <table><tbody><tr><th>Vergleich</th><th>Fink</th><th>Macports</th></tr><tr><td>Paketsystem</td><td>DPKG</td><td>Ports</td></tr><tr><td>Binaries</td><td>Ja</td><td>Nein</td></tr><tr><td>Aktualität (Beispiel Imagemagick)</td><td>6.4.1</td><td>6.5.7</td></tr></tbody></table><br />Im Ergebnis wählte ich Macports einfach aufgrund der angebotenen höheren Imagemagick-Version. Fink liefert mir zwar auch Binaries, also erspart Kompilierzeit. Aber im Beispiel Imagemagick war das eine noch ältere Version und ist deshalb nicht zu gebrauchen.Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-82622118266355335792009-05-09T15:30:00.002+02:002010-10-23T18:33:36.869+02:00Freie, kostenlose und gute Musik<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgjam.com/mandarine/logo-de.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 179px; height: 64px;" src="http://imgjam.com/mandarine/logo-de.jpg" border="0" alt="" /></a><br />Wenn ihr auch wie ich von den hohen Kosten für CDs/MP3s abgeschreckt seit, dann empfehle ich mal sich bei Jamendo.com umzuschauen. Freie Musik hat eine riesige Anhängerschaft! Auf dieser Seite sind nicht nur tausende Künstler vertreten, die ihre Musik kostenlos zur Verfügung stellen. Auch die Hörer sind dort in der Community aktiv und bewerten Songs und Alben.<br /><br />Was mir besonders gut gefällt ist dass nicht nur die schon bekannten Pop/Rock/Hip-Hop/Klassik Genres wie im Radio bedient werden sondern auch neue Musik erfunden wird. Der Ansatz ein paar 8-bit Gameboy Effekte in rockige Gitarrenmusik zu mischen klingt zum Beispiel richtig gut.<br /><a href="http://www.jamendo.com/de/album/7505">Pornophonique - 8-bit lagerfeuer</a><br /><br /><span style="font-weight:bold;">Hier noch ein paar Empfehlungen:</span><br /><a href="http://www.jamendo.com/de/album/29279">Maya Filipič - Between two worlds</a><span style="font-style:italic;"> Beruhigende, Entspannende Klaviermusik<br /></span><br /><a href="http://www.jamendo.com/de/album/43195">Josh Woodward - Only Whispering</a><span style="font-style:italic;"> Spannende Gitarrenmusik<br /></span><br /><br />Generell kann ich auch die <a href="http://www.jamendo.com/de/albums">Liste mit den Top Alben</a> oder die <a href="http://www.jamendo.com/de/radios">Radios</a> empfehlen.<br /><br />Meine Hoffnung ist, dass das mal mehr auf Parties und in Filmen eingesetzt wird. Die Medienkonzerne haben bei kommerzieller Musik sonst immer rechtlich gesehen die Möglichkeit, die Parties oder Filme zu verbieten.Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0tag:blogger.com,1999:blog-6962414291421346189.post-15570523667864683882009-04-29T15:29:00.005+02:002010-10-23T18:33:36.869+02:00Instant Messanging: MS SIP und Skype mit Pidgin und PluginsAlles in einem möchte man gerne beim Instant Messanging. Nicht mehr 6 Clients(zB Skype, ICQ, GMail, Miranda, Adium, Pidgen) auf 3 Plattformen (Windows, Mac OS, Linux), sondern einer für alle.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Pidgin.svg/64px-Pidgin.svg.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 64px; height: 64px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Pidgin.svg/64px-Pidgin.svg.png" border="0" alt="" /></a>Die Lösung heißt bei mir seit gestern Pidgin. Und ich bin vollauf zufrieden. Auf Mac OS verwende ich schon länger Adium, einen Pidgin-Nachbau und deswegen habe ich mich mal durchgerungen, das auch für meine tägliche Arbeit zu testen.<br /><br />Pidgin ist deshalb so gut geeignet, da es am meisten verbreitet ist und deshalb am meisten Plugins hat. Für mich wichtig sind insbesondere:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/en/b/bc/Windows_Messenger_XP_Icon.png"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 48px; height: 48px;" src="http://upload.wikimedia.org/wikipedia/en/b/bc/Windows_Messenger_XP_Icon.png" border="0" alt="" /></a><a href="http://sipe.sourceforge.net"><br />SIPE - (Sip Exchange Protocol)</a> Durch dieses Plugin kann ich mich am Microsoft Live Communications Server meiner Firma anmelden. Dadurch spare ich mir den RAM, der normalerweise durch den Microsoft Messenger oder Microsoft Office COmmunicator belegt wird. Der Firmenrechner fühlt sich wieder schneller an.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/en/thumb/6/65/Skype_logo2.svg/200px-Skype_logo2.svg.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 89px;" src="http://upload.wikimedia.org/wikipedia/en/thumb/6/65/Skype_logo2.svg/200px-Skype_logo2.svg.png" border="0" alt="" /></a><br /><a href="http://eion.robbmob.com/">Skype API</a> Das Plugin legt alle Skype Kontakte in die Pidgin Kontaktliste und erlaubt sogar das telefonieren. Skype muss allerdings parallel laufen, versteckt sich aber ganz gut, so dass ich keine nervigen bunten Meldungen mehr habe.<br /><br />Das geniale an dieser Konsolidierung ist, dass ich Kontakte zusammenführen kann und auf einen Blick sehe, wer alles von einer Gruppe in unterschiedlichen Messengern online ist. Außerdem ändere ich mein Bild oder meinen Status gleich überall. Meiner Meinung nach der Königsweg des Instant Messanging.<br /><br />Übrigens ist die gesamte eingesetzte Software Open Source, unter der GNU General Public License, also keine Geldsorgen. Ein Hoch auf die Entwickler und viel Spass beim ausprobieren!Stefan Schweizerhttp://www.blogger.com/profile/00363231190957532788noreply@blogger.com0