<?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>mgBlog</title>
	<atom:link href="http://mgsimon.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://mgsimon.de</link>
	<description>Esc(ape), einfach ein anderes Blog über technische Spielerei ...</description>
	<lastBuildDate>Sun, 18 Dec 2011 08:52:23 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Android und JSON, JSONViewer ein Beispiel</title>
		<link>http://mgsimon.de/2011/11/10/android-und-json-jsonviewer-ein-beispiel/</link>
		<comments>http://mgsimon.de/2011/11/10/android-und-json-jsonviewer-ein-beispiel/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 07:47:31 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mobil]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=3129</guid>
		<description><![CDATA[JSON wegen der Einfach- und Kompaktheit ideal f&#252;r die mobile Kommunikation, enth&#228;lt das SDK von Android einige Klassen der Referenzimplementierung. Ein kleines Beispiel kurz notiert &#8230; Kofiguration Im Manifest f&#252;r Android wird die Berechtigung f&#252;r den Zugriff auf das weltweite Netz (Zeile 7) konfiguriert. 1 2 3 4 5 6 7 8 9 10 11 [...]]]></description>
			<content:encoded><![CDATA[<p>JSON wegen der Einfach- und Kompaktheit ideal f&#252;r die mobile Kommunikation, enth&#228;lt das SDK von Android einige Klassen der Referenzimplementierung.<br />
<div id="attachment_3370" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/AndroidJSONViewer.png" alt="Android :: JSONViewer" title="Android :: JSONViewer" width="442" height="265" class="size-full wp-image-3370 stamp" /><p class="wp-caption-text">Android :: JSONViewer</p></div>Ein kleines Beispiel kurz notiert &#8230;</p>
<p><span id="more-3129"></span><div style="background-color: rgb(191, 228, 255); border:1px solid rgb(128, 201, 255); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/info.png" alt="Hinweis" title="Hinweis" width="24" height="24" style="margin: 4px 8px 0 0; float:left;"/>Das folgende Beispiel wurde unter Mac OS X 10.6.8 mit der Java Version 1.6.0_26, Eclipse EE 3.7.1 Indigo und ADT (Android Development Tools) Plugin f&#252;r Eclipse durchgef&#252;hrt. Siehe auch <a href="http://mgsimon.de/2009/12/19/hello-world-android-unter-linux/">Hello World Android unter Linux</a> …</div></p>
<p><strong>Kofiguration</strong></p>
<p>Im Manifest f&#252;r Android wird die Berechtigung f&#252;r den Zugriff auf das weltweite Netz (Zeile 7) konfiguriert.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifest</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">package</span>=<span style="color: #ff0000;">&quot;de.mgsimon.android.jsonviewer&quot;</span> <span style="color: #000066;">android:versionCode</span>=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">android:versionName</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-sdk</span> <span style="color: #000066;">android:minSdkVersion</span>=<span style="color: #ff0000;">&quot;8&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.permission.INTERNET&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/icon&quot;</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.JSONViewerActivity&quot;</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p><em>JSONViewer/AndroidManifest.xml</em></p>
<p><strong>Layout</strong></p>
<p>Das Layout enth&#228;lt ein Eingabefeld (EditText) f&#252;r die URL, ein Button (ImageButton) zum abrufen der URL und ein mehrzeiliges Textfeld (TextView) zum anzeigen.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelativeLayout</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span> <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;LinearLayout</span> <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/linearLayoutUrl&quot;</span> <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;match_parent&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;EditText</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/editTextURL&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span> <span style="color: #000066;">android:singleLine</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;0dp&quot;</span> <span style="color: #000066;">android:layout_weight</span>=<span style="color: #ff0000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;requestFocus<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/requestFocus<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/EditText<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ImageButton</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/imageButtonLoad&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span> <span style="color: #000066;">android:src</span>=<span style="color: #ff0000;">&quot;@android:drawable/ic_media_play&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;0dp&quot;</span> <span style="color: #000066;">android:layout_weight</span>=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/ImageButton<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/LinearLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ScrollView</span> <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span> <span style="color: #000066;">android:layout_below</span>=<span style="color: #ff0000;">&quot;@+id/linearLayoutUrl&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:layout_margin</span>=<span style="color: #ff0000;">&quot;5dip&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextView</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/textViewContent&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span> <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:textAppearance</span>=<span style="color: #ff0000;">&quot;?android:attr/textAppearanceMedium&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ScrollView<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelativeLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><em>JSONViewer/res/layout/main.xml</em></p>
<p><strong>Activity</strong></p>
<p>Die Aktivit&#228;t JSONViewerActivity erweitert Activity (Zeile 26) und initialisiert notwendige Komponenten in der &#252;berschriebene Methode onCreate (Zeile 37). Referenzen zu Elementen des UI werden &#252;ber findViewById (Zeile 41,43 und 44) gesetzt und dem ImageButton (Zeile 45) wird die aufzurufende Methode f&#252;r das Event onClick (Zeile 48) &#252;berschrieben.</p>
<p>Die Methode onClick &#8211; aufgerufen durch Klick auf dem Button &#8211; startet mit &#252;bergebener URL (Zeile 50) einen Thread (Zeile 51). Die Klasse UrlLoadTask zeigt vor (Zeile 63) dem Thread einen Status an und aktualisiert die Aktivit&#228;t nach (Zeile 94) dem Thread. </p>
<p>Die Daten werden unabh&#228;ngig des Threads f&#252;r die Benutzeroberfl&#228;che in der Methode doInBackground (Zeile 69) verarbeitet.  </p>
<div style="background-color: rgb(191, 255, 191); border:1px solid rgb(128, 255, 128); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/tip.png" alt="Tipp" title="Tipp" width="24" height="24" style="margin: 4px 8px 0 0; float:left;" />Application not responding (ANR) Meldungen werden nach etwa drei Sekunden geworfen, wenn die Benutzeroberfl&#228;che blockiert wird. Alle langl&#228;ufigen und unbekannten Laufzeiten nebenl&#228;ufig ausf&#252;hren, dann klappt es auch ohne ANR.</div>
<p>Im Hintergrund herunterladen (Zeile 71-73), JSONObject erzeugen (Zeile 74) und die TextView aktualisieren (Zeile 97).</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">de.mgsimon.android.jsonviewer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.IOException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.net.URI</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.net.URISyntaxException</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.http.HttpResponse</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.http.ParseException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.http.client.ClientProtocolException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.http.client.HttpClient</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.http.client.methods.HttpGet</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.http.impl.client.DefaultHttpClient</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.http.util.EntityUtils</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.json.JSONException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.json.JSONObject</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.ProgressDialog</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.AsyncTask</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.View</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.EditText</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.ImageButton</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.TextView</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> JSONViewerActivity <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">private</span> EditText mEditTextUrl<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">private</span> ImageButton mImageButtonLoad<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">private</span> TextView mTextViewContent<span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">private</span> URI mUri<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">private</span> ProgressDialog mProgressDialog<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    mEditTextUrl <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>EditText<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">editTextURL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    mEditTextUrl.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://mgsimon.appspot.com/aboutmyrequest&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    mTextViewContent <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>TextView<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">textViewContent</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    mImageButtonLoad <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>ImageButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">imageButtonLoad</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    mImageButtonLoad.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">View</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
      @Override
      <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
          mUri <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> URI<span style="color: #009900;">&#40;</span>mEditTextUrl.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #000000; font-weight: bold;">new</span> UrlLoadTask<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>mUri<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>URISyntaxException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          mTextViewContent.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">class</span> UrlLoadTask <span style="color: #000000; font-weight: bold;">extends</span> AsyncTask<span style="color: #339933;">&lt;</span>URI, <span style="color: #003399;">Void</span>, JSONObject<span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> onPreExecute<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      mProgressDialog <span style="color: #339933;">=</span> ProgressDialog.<span style="color: #006633;">show</span><span style="color: #009900;">&#40;</span>JSONViewerActivity.<span style="color: #000000; font-weight: bold;">this</span>, <span style="color: #0000ff;">&quot;&quot;</span>,
          <span style="color: #0000ff;">&quot;Loading. Please wait...&quot;</span>, <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">protected</span> JSONObject doInBackground<span style="color: #009900;">&#40;</span>URI... <span style="color: #006633;">uris</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
        HttpClient client <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DefaultHttpClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        HttpGet get <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HttpGet<span style="color: #009900;">&#40;</span>uris<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        HttpResponse response <span style="color: #339933;">=</span> client.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>get<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        JSONObject jso <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> JSONObject<span style="color: #009900;">&#40;</span>EntityUtils.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>response
            .<span style="color: #006633;">getEntity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>jso<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>ClientProtocolException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        mTextViewContent.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        mTextViewContent.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">ParseException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        mTextViewContent.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>JSONException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        mTextViewContent.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> onPostExecute<span style="color: #009900;">&#40;</span>JSONObject jso<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>jso <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
          mTextViewContent.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>jso.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>JSONException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        mTextViewContent.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
      mProgressDialog.<span style="color: #006633;">dismiss</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><em>JSONViewer/src/de.mgsimon.android.jsonviewer/JSONViewerActivity.java</em></p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2011/11/10/android-und-json-jsonviewer-ein-beispiel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Konfigurationsverwaltung mit RCS, dateibasierte Versionierungen</title>
		<link>http://mgsimon.de/2011/11/03/konfigurationsverwaltung-mit-rcs-dateibasierte-versionierungen/</link>
		<comments>http://mgsimon.de/2011/11/03/konfigurationsverwaltung-mit-rcs-dateibasierte-versionierungen/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 19:24:37 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux & Unix]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[uup]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[RCS]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=3318</guid>
		<description><![CDATA[Kennt man nicht die schnellen &#196;nderungen in der einen oder anderen Konfigurationsdatei? Und die immer mehr werdenden Sicherungskopien? configfile.bak configfile.201111031811 configfile.201111031815 configfile.mgsimon configfile&#8230; Wieso nicht mit einer einfachen Versionsverwaltung? Old school RCS ist auf so gut wie jedem Linux, Unix oder Mac OS X vorhanden &#8230; RCS Revision Control System (RCS) ist eine Versionierung f&#252;r [...]]]></description>
			<content:encoded><![CDATA[<p>Kennt man nicht die schnellen &#196;nderungen in der einen oder anderen Konfigurationsdatei? Und die immer mehr werdenden Sicherungskopien?</p>
<ul>
<li>configfile.bak</li>
<li>configfile.201111031811</li>
<li>configfile.201111031815</li>
<li>configfile.mgsimon</li>
<li>configfile&#8230;</li>
</ul>
<p>Wieso nicht mit einer einfachen Versionsverwaltung? Old school RCS ist auf so gut wie jedem Linux, Unix oder Mac OS X vorhanden &#8230;</p>
<p><span id="more-3318"></span><div style="background-color: rgb(191, 228, 255); border:1px solid rgb(128, 201, 255); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/info.png" alt="Hinweis" title="Hinweis" width="24" height="24" style="margin: 4px 8px 0 0; float:left;"/>Das folgende Beispiel wurde unter Mac OS X 10.6.8 mit der RCS Version 5.7 durchgef&#252;hrt.</div><strong>RCS</strong></p>
<p>Revision Control System (RCS) ist eine Versionierung f&#252;r einzelne Dateien. Dabei werden die Versionen mit einer zus&#228;tzlichen &#8220;,v-Datei&#8221; verwaltet. Ohne ein Repository k&#246;nnen beliebige Dateien schnell und einfach versioniert werden. Ideal zur Verwaltung verschiedener Konfigurationsst&#228;nde, ohne gleich jedes Mal eine manuelle Sicherungskopie erstellen zu m&#252;ssen.</p>
<div style="background-color: rgb(191, 255, 191); border:1px solid rgb(128, 255, 128); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/tip.png" alt="Tipp" title="Tipp" width="24" height="24" style="margin: 4px 8px 0 0; float:left;" />Die f&#252;r Windows frei verf&#252;gbare Unix Emulation <a href="http://www.cygwin.com/" target="_blank">Cygwin</a> unterst&#252;tzt RCS.</div>
<p><strong>Sicherung</strong></p>
<p>ohne RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">cp</span> logging.properties logging.properties.201111031811</pre></div></div>

<p>mit RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">rcs</span> <span style="color: #660033;">-i</span> <span style="color: #660033;">-U</span> logging.properties
RCS <span style="color: #c20cb9; font-weight: bold;">file</span>: logging.properties,v
enter description, terminated with single <span style="color: #ff0000;">'.'</span> or end of <span style="color: #c20cb9; font-weight: bold;">file</span>:
NOTE: This is NOT the log message<span style="color: #000000; font-weight: bold;">!</span>
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> existing version
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> .
<span style="color: #000000; font-weight: bold;">done</span>
$ ci <span style="color: #660033;">-u</span> logging.properties
logging.properties,v  <span style="color: #000000; font-weight: bold;">&lt;</span>--  logging.properties
initial revision: <span style="color: #000000;">1.1</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<div style="background-color: rgb(191, 255, 191); border:1px solid rgb(128, 255, 128); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/tip.png" alt="Tipp" title="Tipp" width="24" height="24" style="margin: 4px 8px 0 0; float:left;" />Damit die Zugriffsrechte erhalten bleiben und die aktuelle Arbeitskopie nicht gel&#246;scht wird immer erst eine initiale Version ohne &#8220;strict locking&#8221; (rcs -i -U datei) erstellen und anschlie&#223;end (ci -u datei) versionieren.</div>
<p><strong>Neue Konfiguration</strong></p>
<p>Gew&#252;nschte Anpassungen in der der aktuellen Datei vornehmen, speichern und sichern.</p>
<p>ohne RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">cp</span> logging.properties logging.properties.201111031815</pre></div></div>

<p>mit RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ ci <span style="color: #660033;">-u</span> logging.properties
logging.properties,v  <span style="color: #000000; font-weight: bold;">&lt;</span>--  logging.properties
new revision: <span style="color: #000000;">1.2</span>; previous revision: <span style="color: #000000;">1.1</span>
enter log message, terminated with single <span style="color: #ff0000;">'.'</span> or end of <span style="color: #c20cb9; font-weight: bold;">file</span>:
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> log <span style="color: #c20cb9; font-weight: bold;">more</span> startup messages
<span style="color: #000000; font-weight: bold;">&gt;&gt;</span> .
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p><strong>Versionshistorie</strong></p>
<p>ohne RCS</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">nicht wirklich möglich</pre></div></div>

<p>mit RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ rlog logging.properties
&nbsp;
RCS <span style="color: #c20cb9; font-weight: bold;">file</span>: logging.properties,v
Working <span style="color: #c20cb9; font-weight: bold;">file</span>: logging.properties
<span style="color: #c20cb9; font-weight: bold;">head</span>: <span style="color: #000000;">1.2</span>
branch:
locks:
access list:
symbolic names:
keyword substitution: kv
total revisions: <span style="color: #000000;">2</span>;	selected revisions: <span style="color: #000000;">2</span>
description:
existing version
<span style="color: #660033;">----------------------------</span>
revision <span style="color: #000000;">1.2</span>
<span style="color: #c20cb9; font-weight: bold;">date</span>: <span style="color: #000000;">2011</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">11</span><span style="color: #000000; font-weight: bold;">/</span>03 <span style="color: #000000;">18</span>:<span style="color: #000000;">46</span>:<span style="color: #000000;">57</span>;  author: mgsimon;  state: Exp;  lines: +<span style="color: #000000;">2</span> <span style="color: #660033;">-2</span>
log <span style="color: #c20cb9; font-weight: bold;">more</span> startup messages
<span style="color: #660033;">----------------------------</span>
revision <span style="color: #000000;">1.1</span>
<span style="color: #c20cb9; font-weight: bold;">date</span>: <span style="color: #000000;">2011</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">11</span><span style="color: #000000; font-weight: bold;">/</span>03 <span style="color: #000000;">18</span>:<span style="color: #000000;">44</span>:<span style="color: #000000;">54</span>;  author: mgsimon;  state: Exp;
Initial revision
=============================================================================</pre></div></div>

<p><strong>Ver&#228;nderungen</strong></p>
<p>ohne RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">diff</span> logging.properties logging.properties.201111031811 
<span style="color: #000000;">61</span>,62c61,<span style="color: #000000;">62</span>
<span style="color: #000000; font-weight: bold;">&lt;</span> org.apache.catalina.startup.ContextConfig.level = FINE
<span style="color: #000000; font-weight: bold;">&lt;</span> org.apache.catalina.startup.HostConfig.level = FINE
<span style="color: #660033;">---</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #666666; font-style: italic;">#org.apache.catalina.startup.ContextConfig.level = FINE</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #666666; font-style: italic;">#org.apache.catalina.startup.HostConfig.level = FINE</span></pre></div></div>

<p>mit RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ rcsdiff logging.properties
===================================================================
RCS <span style="color: #c20cb9; font-weight: bold;">file</span>: logging.properties,v
retrieving revision <span style="color: #000000;">1.2</span>
<span style="color: #c20cb9; font-weight: bold;">diff</span> -r1.2 logging.properties
mgBook:conf mgsimon$ rcsdiff -r1.1 logging.properties
===================================================================
RCS <span style="color: #c20cb9; font-weight: bold;">file</span>: logging.properties,v
retrieving revision <span style="color: #000000;">1.1</span>
<span style="color: #c20cb9; font-weight: bold;">diff</span> -r1.1 logging.properties
<span style="color: #000000;">61</span>,62c61,<span style="color: #000000;">62</span>
<span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #666666; font-style: italic;">#org.apache.catalina.startup.ContextConfig.level = FINE</span>
<span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #666666; font-style: italic;">#org.apache.catalina.startup.HostConfig.level = FINE</span>
<span style="color: #660033;">---</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> org.apache.catalina.startup.ContextConfig.level = FINE
<span style="color: #000000; font-weight: bold;">&gt;</span> org.apache.catalina.startup.HostConfig.level = FINE</pre></div></div>

<p><strong>Alte Konfiguration</strong></p>
<p>ohne RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">cp</span> logging.properties.201111031811 logging.properties</pre></div></div>

<p>mit RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">co</span> -r1.1 logging.properties
logging.properties,v  --<span style="color: #000000; font-weight: bold;">&gt;</span>  logging.properties
revision <span style="color: #000000;">1.1</span>
writable logging.properties exists; remove it? <span style="color: #7a0874; font-weight: bold;">&#91;</span>ny<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>n<span style="color: #7a0874; font-weight: bold;">&#41;</span>: y
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p><strong>Konfigurations&#228;nderungen</strong></p>
<p>ohne RCS</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">nicht wirklich möglich</pre></div></div>

<p>mit RCS</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">find</span> conf<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #660033;">-name</span> <span style="color: #000000; font-weight: bold;">*</span>,v
conf<span style="color: #000000; font-weight: bold;">//</span>catalina.properties,v
conf<span style="color: #000000; font-weight: bold;">//</span>context.xml,v
conf<span style="color: #000000; font-weight: bold;">//</span>logging.properties,v
conf<span style="color: #000000; font-weight: bold;">//</span>server.xml,v
conf<span style="color: #000000; font-weight: bold;">//</span>tomcat-users.xml,v
conf<span style="color: #000000; font-weight: bold;">//</span>web.xml,v</pre></div></div>

<p><strong>Zusammenfassung</strong></p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">rcs -i -U datei =&gt; ci -u datei =&gt; vi datei =&gt; ci -u datei =&gt; ...</pre></div></div>

<p>Keep IT simple &#8230; ;)</p>
<p><strong>Weiter &#8230;</strong></p>
<ul>
<li><a href="http://www.gnu.org/software/rcs/manual/rcs.html">RCS Dokumentation</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2011/11/03/konfigurationsverwaltung-mit-rcs-dateibasierte-versionierungen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google App Engine und JSON, AboutMyRequest ein Beispiel</title>
		<link>http://mgsimon.de/2011/10/30/google-app-engine-und-json-aboutmyrequest-ein-beispiel/</link>
		<comments>http://mgsimon.de/2011/10/30/google-app-engine-und-json-aboutmyrequest-ein-beispiel/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 14:37:54 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=3131</guid>
		<description><![CDATA[Die JavaScript Object Notation (JSON) ist ein leicht lesbares und leichtgewichtiges Protokoll, um Daten strukturiert mit wenigen Regeln verwalten zu k&#246;nnen. Viele Wege f&#252;hren nach JSON, hier ein kleines Beispiel in Java &#8230; AboutMyRequest &#8230; &#8230; oder einfach &#252;ber mein Request soll als kleines Beispiel die Informationen &#252;ber eine Anfrage zur Anwendung in der Google [...]]]></description>
			<content:encoded><![CDATA[<p>Die <a href="http://json.org/" target="_blank">JavaScript Object Notation (JSON)</a> ist ein leicht lesbares und leichtgewichtiges Protokoll, um Daten strukturiert mit wenigen Regeln verwalten zu k&#246;nnen.<br />
<div id="attachment_3262" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/GoogleAppEngineJSONAboutMyRequest.png" alt="Google App Engine JSON :: AboutMyRequest" title="Google App Engine JSON :: AboutMyRequest" width="442" height="228" class="size-full wp-image-3262 stamp" /><p class="wp-caption-text">Google App Engine JSON :: AboutMyRequest</p></div></p>
<p>Viele Wege f&#252;hren nach JSON, hier ein kleines Beispiel in Java &#8230;</p>
<p><span id="more-3131"></span><div style="background-color: rgb(191, 228, 255); border:1px solid rgb(128, 201, 255); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/info.png" alt="Hinweis" title="Hinweis" width="24" height="24" style="margin: 4px 8px 0 0; float:left;"/>Das folgende Beispiel wurde unter Mac OS X 10.6.8 mit der Java Version 1.6.0_26, Eclipse EE 3.7.1 Indigo und Google Plugin f&#252;r Eclipse 2.4.1 durchgef&#252;hrt. Siehe auch <a href="http://mgsimon.de/2011/10/25/hello-world-google-app-engine/" title="Hello World Google App Engine">Hello World Google App Engine</a> &#8230;</div></p>
<p><strong>AboutMyRequest &#8230;</strong></p>
<p>&#8230; oder einfach &#252;ber mein Request soll als kleines Beispiel die Informationen &#252;ber eine Anfrage zur Anwendung in der Google App Engine in JSON zur&#252;ck beantworten.</p>
<p><strong>JSON Referenzimplementierung</strong></p>
<p>Im SDK von der Google App Engine sind die Klassen der Referenzimplementierung zur Verarbeitung von JSON im Paket  com.google.appengine.repackaged.org.json (appengine-api-labs-1.5.4.jar) vorhanden.</p>
<div style="background-color: rgb(191, 255, 191); border:1px solid rgb(128, 255, 128); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/tip.png" alt="Tipp" title="Tipp" width="24" height="24" style="margin: 4px 8px 0 0; float:left;" />Damit die Dokumenation der Referenzimplementierung von Douglas Crockford in Eclipse verwendet werden kann, k&#246;nnen die Quellen unter <a href="https://github.com/douglascrockford/JSON-java" target="_blank">JSON-java</a> als ZIP-Archiv heruntergeladen werden und dem Projekt hinzugef&#252;gt werden.</div>
<p><strong>AboutMyRequestServlet</strong></p>
<p>Ein neues Servlet wird im Google App Engine Projekt bei selektiertem Package &#252;ber &#8220;File / New / Class&#8221; mit folgenden Einstellungen erstellt.<br />
<div id="attachment_3271" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/GoogleAppEngineJSONEclipseNewJavaClass.png" alt="Google App Engine JSON :: Eclipse New Java Class" title="Google App Engine JSON :: Eclipse New Java Class" width="442" height="528" class="size-full wp-image-3271 stamp" /><p class="wp-caption-text">Google App Engine JSON :: Eclipse New Java Class</p></div></p>
<ul>
<li>Name: AboutMyRequestServlet</li>
<li>Superclass: javax.servlet.http.HttpServlet</li>
</ul>
<p>In dem folgenden Servlet wird ein JSONObject erzeugt (Zeile 20) und die jeweiligen Header-Informationen hinzugef&#252;gt (Zeile 25). Das JSONObject wird mit dem richtigen Media Type (Zeile 27) &#252;ber Response einfach zum Client gesendet (Zeile 28).</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">tld.sld.my.example</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.IOException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Enumeration</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.servlet.ServletException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.servlet.http.HttpServlet</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.servlet.http.HttpServletRequest</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.servlet.http.HttpServletResponse</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.appengine.repackaged.org.json.JSONException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.appengine.repackaged.org.json.JSONObject</span><span style="color: #339933;">;</span>
&nbsp;
@SuppressWarnings<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;serial&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> AboutMyRequestServlet <span style="color: #000000; font-weight: bold;">extends</span> HttpServlet <span style="color: #009900;">&#123;</span>
&nbsp;
	@Override
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> doGet<span style="color: #009900;">&#40;</span>HttpServletRequest req, HttpServletResponse resp<span style="color: #009900;">&#41;</span>
			<span style="color: #000000; font-weight: bold;">throws</span> ServletException, <span style="color: #003399;">IOException</span> <span style="color: #009900;">&#123;</span>
		JSONObject jsonObject <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> JSONObject<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			Enumeration<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span> names <span style="color: #339933;">=</span> req.<span style="color: #006633;">getHeaderNames</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>names.<span style="color: #006633;">hasMoreElements</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #003399;">String</span> name <span style="color: #339933;">=</span> names.<span style="color: #006633;">nextElement</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				jsonObject.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>name, req.<span style="color: #006633;">getHeader</span><span style="color: #009900;">&#40;</span>name<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			resp.<span style="color: #006633;">setContentType</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;application/json&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			resp.<span style="color: #006633;">getWriter</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span>jsonObject<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>JSONException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><em>AboutMyRequestServlet.java</em></p>
<p><strong>Konfiguration</strong></p>
<p>Damit das Servlet im Container bekannt ist (&lt;servlet&gt;) und &#252;ber eine URL aufl&#246;sbar ist (&lt;servlet-mapping&gt;), muss folgende Konfiguration in der Datei &#8220;war/WEB-INF/web.xml&#8221; hinzugef&#252;gt werden.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>AboutMyRequest<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>tld.sld.my.example.AboutMyRequestServlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>AboutMyRequest<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/aboutmyrequest<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><em>web.xml</em></p>
<p>Anschlie&#223;end kann die Webanwendung &#252;ber &#8220;Run / Run As / Web Application&#8221; gestartet werden und lokal &#252;ber <a href="http://localhost:8888/aboutmyrequest" target="_blank">http://localhost:8888/aboutmyrequest</a> getestet werden. </p>
<p><strong>Antworten</strong></p>
<p>Nach erfolgreicher Publizierung in der Google App Engine kann auf das Servlet &#252;ber http://myappid.appspot.com/aboutmyrequest wie z.B. <a href="http://mgsimon.appspot.com/aboutmyrequest" target="_blank">http://mgsimon.appspot.com/aboutmyrequest</a> zugegriffen werden.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">&quot;Accept-Language&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;de-de,de;q=0.8,en-us;q=0.5,en;q=0.3&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Host&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;mgsimon.appspot.com&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Accept-Charset&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ISO-8859-1,utf-8;q=0.7,*;q=0.7&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;X-AppEngine-Country&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;DE&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;User-Agent&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.2.23) Gecko/20110920 Firefox/3.6.23&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Accept&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&quot;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><em>Antwort einer Anfrage durch Mozilla Firefox unter Mac OS X auf einem MacBook Pro</em></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">&quot;Host&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;mgsimon.appspot.com&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Referer&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;http://mgsimon.de/&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;X-AppEngine-Country&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;DE&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;User-Agent&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;Mozilla/5.0 (Linux; U; Android 2.3.3; de-de; HTC_DesireZ_A7272 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1&quot;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><em>Antwort einer Anfrage durch Browser unter Android auf einem HTC Desire Z</em><br />
<div style="background-color: rgb(191, 228, 255); border:1px solid rgb(128, 201, 255); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/info.png" alt="Hinweis" title="Hinweis" width="24" height="24" style="margin: 4px 8px 0 0; float:left;"/>Die Anfrage wird durch die Google App Engine um zus&#228;tzliche Informationen wie z.B. die i18n Info &#8220;X-AppEngine-Country&#8221;:&#8221;DE&#8221; erweitert.</div></p>
<p><strong>Weiter &#8230;</strong></p>
<ul>
<li><a href="http://tools.ietf.org/html/rfc4627" target="_blank">rfc4627</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2011/10/30/google-app-engine-und-json-aboutmyrequest-ein-beispiel/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hello World Google App Engine</title>
		<link>http://mgsimon.de/2011/10/25/hello-world-google-app-engine/</link>
		<comments>http://mgsimon.de/2011/10/25/hello-world-google-app-engine/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 15:19:39 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=3132</guid>
		<description><![CDATA[Google App Engine ist eine Plattform zum Entwickeln und Hosten von Webanwendungen auf den Servern von Google. Dabei werden die Ressourcen in der Infrastruktur von Google dynamisch in Abh&#228;ngigkeit der Last zugewiesen. Ohne sich Gedanken um CPU, Bandbreite oder Speicher machen zu m&#252;ssen, werden laut Google bis zu 5 Millionen Seitenaufrufe pro Monat kostenlos und [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/intl/de-DE/appengine/" target="_blank">Google App Engine</a> ist eine Plattform zum Entwickeln und Hosten von Webanwendungen auf den Servern von Google.  Dabei werden die Ressourcen in der Infrastruktur von Google dynamisch in Abh&#228;ngigkeit der Last zugewiesen. Ohne sich Gedanken um CPU, Bandbreite oder Speicher machen zu m&#252;ssen, werden laut Google bis zu 5 Millionen Seitenaufrufe pro Monat kostenlos und dar&#252;ber hinaus zu <a href="http://code.google.com/intl/de-DE/appengine/docs/billing.html" target="_blank">wettbewerbsf&#228;higen Preisen</a> angeboten.<br />
<div id="attachment_3176" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/HelloWorldGoogleAppEngineMozillaFirefox.png" alt="Hello World Google App Engine :: Mozilla Firefox" title="Hello World Google App Engine :: Mozilla Firefox" width="442" height="137" class="size-full wp-image-3176 stamp" /><p class="wp-caption-text">Hello World Google App Engine :: Mozilla Firefox</p></div> Die Anwendungen k&#246;nnen in einer Umgebung f&#252;r Phyton oder Java umgesetzt werden. </p>
<p>&#8220;Hello World&#8221; in der Google App Engine, ein erstes kleines Beispiel in Java. Ab in die Cloud, schnell, schneller, am schnellsten &#8230;</p>
<p><span id="more-3132"></span><div style="background-color: rgb(191, 228, 255); border:1px solid rgb(128, 201, 255); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/info.png" alt="Hinweis" title="Hinweis" width="24" height="24" style="margin: 4px 8px 0 0; float:left;"/>Das folgende Beispiel wurde unter Mac OS X 10.6.8 mit der Java Version 1.6.0_26, Eclipse EE 3.7.1 Indigo und Google Plugin f&#252;r Eclipse 2.4.1 durchgef&#252;hrt.</div><br />
<strong>Google App Engine Account</strong></p>
<p>F&#252;r die Verwendung der Google App Engine ist ein Google-Konto und die Anmeldung unter <a href="http://appengine.google.com" target="_blank">appengine.google.com</a> notwendig. </p>
<p>Einfach mit der E-Mail und dem Passwort anmelden und auf der folgenden Seite &#252;ber &#8220;Create Application&#8221; das eigene Konto durch eine Handynummer best&#228;tigen. Eine SMS mit einem Code zur Best&#228;tigung wird unmittelbar an die angegebene Nummer gesendet. Nach der Best&#228;tigung kann die erste Anwendung erstellt werden. </p>
<p>&#8220;Application Identifier&#8221;, &#8220;Application Title, &#8220;I accept these terms.&#8221; und die Anwendung kann &#252;ber &#8220;Create Application&#8221; erstellt werden.</p>
<p><div style="background-color: rgb(191, 255, 191); border:1px solid rgb(128, 255, 128); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/tip.png" alt="Tipp" title="Tipp" width="24" height="24" style="margin: 4px 8px 0 0; float:left;" />Auf der Suche nach einem noch verf&#252;gbarem &#8220;Application Identifier&#8221; kann der Name des eigenen Google-Kontos verwendet werden, dieser sollten in der Regel f&#252;r das eigene Konto reserviert sein.</div> <div id="attachment_3155" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/HelloWorldGoogleAppEngineDashboard.png" alt="Hello World Google App Engine :: Dashboard" title="Hello World Google App Engine :: Dashboard" width="442" height="276" class="size-full wp-image-3155 stamp" /><p class="wp-caption-text">Hello World Google App Engine :: Dashboard</p></div> <strong>Entwicklungsumgebung Eclipse</strong></p>
<p>Anwendungen f&#252;r die Google App Engine k&#246;nnen mit dem <a href="http://code.google.com/intl/de-DE/appengine/downloads.html#Google_App_Engine_SDK_for_Java" target="_blank">SDK f&#252;r Java</a> manuell oder mit etwas mehr Benutzerfreundlichkeit dem <a href="http://code.google.com/intl/de-DE/appengine/downloads.html#Download_the_Google_Plugin_for_Eclipse" target="_blank">Google Plugin</a> in der IDE Eclipse erstellt werden.</p>
<p><a href="http://www.eclipse.org/downloads/" target="_blank">Eclipse herunterladen</a>, Archiv extrahieren, Eclipse starten und das Google Repository &#252;ber &#8220;Help / Install New Software&#8230; / Add&#8230;&#8221; mit folgenden Angaben hinzuf&#252;gen.</p>
<ul>
<li>Name: Google</li>
<li>Location: http://dl.google.com/eclipse/plugin/3.7</li>
</ul>
<p><div style="background-color: rgb(191, 255, 191); border:1px solid rgb(128, 255, 128); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/tip.png" alt="Tipp" title="Tipp" width="24" height="24" style="margin: 4px 8px 0 0; float:left;" />Google stellt das Plugin f&#252;r mehrere Eclipse Versionen (Galileo, Helios, Indigo &#8230;) in verschiedene Repositories bereit. Die Adressen f&#252;r die jeweilige Version sind unter <a href="http://code.google.com/intl/de-DE/eclipse/docs/download.html" target="_blank">Google Plugin f&#252;r Eclipse</a> aufgelistet.</div> Anschlie&#223;end wird das Google Plugin f&#252;r Eclipse zur Installation angeboten.</p>
<p><div id="attachment_3180" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/HelloWorldGoogleAppEngineInstallAvailableSoftware.png" alt="Hello World Google App Engine :: Install Available Software" title="Hello World Google App Engine :: Install Available Software" width="442" height="344" class="size-full wp-image-3180 stamp" /><p class="wp-caption-text">Hello World Google App Engine :: Install Available Software</p></div> Nach der Installation werden einige neue Funktionen in Eclipse durch das Google Plugin f&#252;r Eclipse angeboten.</p>
<div id="attachment_3198" class="wp-caption alignnone" style="width: 287px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/HelloWorldGoogleAppEngineEclipsePlugin.png" alt="Hello World Google App Engine :: Eclipse Plugin" title="Hello World Google App Engine :: Eclipse Plugin" width="277" height="191" class="size-full wp-image-3198 stamp" /><p class="wp-caption-text">Hello World Google App Engine :: Eclipse Plugin</p></div>
<p><strong>Hello World</strong></p>
<p>Einfach &#252;ber &#8220;File / New / Project &#8230;&#8221; ein &#8220;Google / Web Application Project&#8221; ausw&#228;hlen und durch &#8220;Next >&#8221; mit folgenden Einstellungen &#252;ber &#8220;Finish&#8221; ein neues Projekt erstellen.</p>
<ul>
<li>Project name: HelloWorldGoogleAppEngine</li>
<li>Package: tld.sld.my.example</li>
<li>Use Google Web Toolkit abw&#228;hlen</li>
</ul>
<p><div id="attachment_3173" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/HelloWorldGoogleAppEngineCreateWebApplicationProject.png" alt="Hello World Google App Engine :: Create Web Application Project" title="Hello World Google App Engine :: Create Web Application Project" width="442" height="590" class="size-full wp-image-3173 stamp" /><p class="wp-caption-text">Hello World Google App Engine :: Create Web Application Project</p></div> Die notwendige Verzeichnisstruktur und initiale Konfiguration wird mit dem folgendem Servlet durch das Plugin automatisch erstellt.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">tld.sld.my.example</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.IOException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.servlet.http.*</span><span style="color: #339933;">;</span>
&nbsp;
@SuppressWarnings<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;serial&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HelloWorldGoogleAppEngineServlet <span style="color: #000000; font-weight: bold;">extends</span> HttpServlet <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> doGet<span style="color: #009900;">&#40;</span>HttpServletRequest req, HttpServletResponse resp<span style="color: #009900;">&#41;</span>
			<span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">IOException</span> <span style="color: #009900;">&#123;</span>
		resp.<span style="color: #006633;">setContentType</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;text/plain&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		resp.<span style="color: #006633;">getWriter</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hello, world&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Das erste Servlet &#8220;Hello World Google App Engine&#8221; ohne eine Zeile selbst geschrieben zu haben &#8230; ;)</p>
<p><strong>Test</strong></p>
<p>Die Entwicklungsumgebung bietet durch das Google Plugin f&#252;r Eclipse eine lokale Simulationsumgebung an. </p>
<p>Die Google App Engine Web Anwendung wird bei selektiertem Projekt &#252;ber &#8220;Run / Run As / Web Application&#8221; lokal gestartet und im Browser kann &#252;ber die URL http://localhost:8888/ die folgende Startseite geladen werden.<br />
<div id="attachment_3204" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/HelloWorldGoogleAppEngineHelloAppEngine.png" alt="Hello World Google App Engine :: Hello App Engine" title="Hello World Google App Engine :: Hello App Engine" width="442" height="164" class="size-full wp-image-3204 stamp" /><p class="wp-caption-text">Hello World Google App Engine :: Hello App Engine</p></div> Der Quelltext der Startseite befindet sich in der Datei &#8220;/war/index.html&#8221;. Der erste Link &#8220;HelloWorldGoogleAppEngine&#8221; zeigt auf das zuvor erstellte Servlet.</p>
<p><div id="attachment_3176" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/HelloWorldGoogleAppEngineMozillaFirefox.png" alt="Hello World Google App Engine :: Mozilla Firefox" title="Hello World Google App Engine :: Mozilla Firefox" width="442" height="137" class="size-full wp-image-3176 stamp" /><p class="wp-caption-text">Hello World Google App Engine :: Mozilla Firefox</p></div> <strong>Ab in die Cloud &#8230;</strong></p>
<p>Damit das erste Beispiel im weltweiten Netz erreichbar ist, muss die Anwendung in die Cloud von Google publiziert werden. </p>
<p>In der Konfigurationsdatei appengine-web.xml unter &#8220;war/WEB-INF&#8221; die eigene zuvor erstellte Anwendungs-ID (myappid) eintragen.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appengine-web-app</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://appengine.google.com/ns/1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>myappid<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #808080; font-style: italic;">&lt;!--</span>
<span style="color: #808080; font-style: italic;">    By default, App Engine sends requests serially to a given web server.</span>
<span style="color: #808080; font-style: italic;">    To allow App Engine to send multiple requests in parallel specify:</span>
&nbsp;
<span style="color: #808080; font-style: italic;">      &lt;threadsafe&gt;true&lt;/threadsafe&gt;</span>
<span style="color: #808080; font-style: italic;">  --&gt;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">&lt;!-- Configure java.util.logging --&gt;</span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;system-properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;java.util.logging.config.file&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;WEB-INF/logging.properties&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/system-properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/appengine-web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Das Projekt kann &#252;ber das Kontextmen&#252; &#8220;Google / Deploy to App Engine&#8221; zur App Engine von Google &#252;bertragen werden.</p>
<p>Anschlie&#223;end kann auf die Anwendung &#252;ber http://myappid.appspot.com (myappid = zuvor erstellter Application Identifier) wie z.B. <a href="http://mgsimon.appspot.com" target="_blank">http://mgsimon.appspot.com</a> zugegriffen werden.</p>
<p>Fertig &#8230; erst einmal. ;)</p>
<p><strong>Weiter &#8230;</strong></p>
<ul>
<li><a href="http://code.google.com/intl/de-DE/appengine/" title="Google App Engine Projekt" target="_blank">Google App Engine Projekt</a></li>
<li><a href="http://code.google.com/intl/de-DE/appengine/docs/" title="Google App Engine Dokumentation" target="_blank">Google App Engine Dokumentation</a></li>
<li><a href="http://code.google.com/intl/de-DE/appengine/docs/java/javadoc/" title="Google App Engine Javadoc" target="_blank">Google App Engine Javadoc</a></li>
<li><a href="https://appengine.google.com/" title="Google App Engine Administration" target="_blank">Google App Engine Administration</a></li>
<li><a href="http://www.amazon.de/gp/product/B003DL3NT8/ref=as_li_ss_tl?ie=UTF8&#038;tag=mgs-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=B003DL3NT8" title="Programming Google App Engine (Animal Guide)" target="_blank">Programming Google App Engine (Animal Guide)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2011/10/25/hello-world-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Amazon Kindle 1-Click, Benutzerfreundlichkeit oder Sicherheitsl&#252;cke?</title>
		<link>http://mgsimon.de/2011/10/16/amazon-kindle-1-click-benutzerfreundlichkeit-oder-sicherheitslucke/</link>
		<comments>http://mgsimon.de/2011/10/16/amazon-kindle-1-click-benutzerfreundlichkeit-oder-sicherheitslucke/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 18:36:58 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[Mobil]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Kindle]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=3091</guid>
		<description><![CDATA[Amazon hat vier neue Kindle &#8211; Kindle Fire, Kindle Touch 3G, Kindle Touch und Kindle &#8211; vorgestellt und das kleinste Modell in Deutschland f&#252;r 99 Euro im Angebot. Schon immer mit dem Gedanken mir ein E-Book-Reader zulegen zu wollen, konnte ich gleich eine nicht so sch&#246;ne Benutzerfreundlichkeit feststellen &#8230; Den Kindle ausgepackt, mit Strom versorgt, [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon hat vier neue Kindle &#8211; Kindle Fire, Kindle Touch 3G, Kindle Touch und <a href="http://www.amazon.de/dp/B0051QVF7A?tag=mgs-21">Kindle</a> &#8211; vorgestellt und das kleinste Modell in Deutschland f&#252;r <a href="http://www.amazon.de/dp/B0051QVF7A?tag=mgs-21">99 Euro</a> im Angebot.<br />
<div id="attachment_3095" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/10/AmazonKindle.jpg" alt="Amazon Kindle" title="Amazon Kindle" width="442" height="637" class="size-full wp-image-3095 stamp" /><p class="wp-caption-text">Amazon Kindle</p></div><br />
Schon immer mit dem Gedanken mir ein E-Book-Reader zulegen zu wollen, konnte ich gleich eine nicht so sch&#246;ne Benutzerfreundlichkeit feststellen &#8230;</p>
<p><span id="more-3091"></span>Den <a href="http://www.amazon.de/dp/B0051QVF7A?tag=mgs-21">Kindle</a> ausgepackt, mit Strom versorgt, WLAN verbunden, Benutzerkonto best&#228;tigt und das erste Buch gekauft. </p>
<p><em>Einfach so, ohne ein Passwort &#8230;?</em></p>
<p>Der <a href="http://www.amazon.de/dp/B0051QVF7A?tag=mgs-21">Kindle</a> wird mit eingerichtetem Benutzerkonto ausgeliefert und im Kindle-Shop kann durch <strong>nur</strong> ein Klick auf &#8220;Kaufen&#8221; eingekauft werden.</p>
<p>Auch wenn Amazon die Option anbietet einen Kauf unmittelbar &#252;ber Fehlkauf zu widerrufen und zus&#228;tzlich ein <a href="http://www.amazon.de/gp/help/customer/display.html/ref=hp_200648230_kretpo_retkc?nodeId=200648230#content" target="_blank">7-t&#228;giges freiwilliges R&#252;ckgaberecht auf eBooks</a> gew&#228;hrt, bin ich mit dieser Ein-Klick-Kauf-Geschichte nicht ganz zufrieden. </p>
<p>Vielleicht m&#246;chten die Kinder das eine oder andere Kinderbuch &#8220;zuviel&#8221; lesen oder der Eine oder Andere sich ein Buch auf meinem <a href="http://www.amazon.de/dp/B0051QVF7A?tag=mgs-21">Kindle</a> ansehen.</p>
<p>Auf der Suche nach einer L&#246;sung mit mehreren Anfragen an den sehr freundlichen und schnellen Amazon Support, konnte ich durch folgenden Workaround die f&#252;r mich etwas zu viel Usability deaktivieren.</p>
<p>Alle unter &#8220;Mein Konto&#8221; / &#8220;Zahlungsart &#228;ndern oder l&#246;schen&#8221; hinterlegten Zahlungsweisen entfernen und die &#8220;Kaufen&#8221;-Funktion auf dem <a href="http://www.amazon.de/dp/B0051QVF7A?tag=mgs-21">Kindle</a> endet mit folgendem Hinweis. </p>
<blockquote><p>Sie haben f&#252;r Ihr Nutzerkonto auf Amazon.de bisher noch keine g&#252;ltige Standard-Kreditkarte fetgelegt. Sie k&#246;nnen Ihre Standard-Kreditkarte jetzt festlegen, oder Sie k&#246;nnen Amazon.de besuchen und auf der Seite &#8220;Mein Konto&#8221; auf &#8220;Mein Kindle&#8221; klicken. &#8230; M&#246;chten Sie Ihre Kreditkarte jetzt festlegen? &#8220;Ja&#8221; &#8220;Nein&#8221;</p></blockquote>
<p>Mit dem Klick auf &#8220;Ja&#8221; wird jetzt wenigstens im Browser zur Anmeldung auf amazon.de aufgefordert.</p>
<p>Mit dem Nachteil bei jedem Kauf die Zahlungsweise neu angeben und l&#246;schen zu m&#252;ssen, kann wenigstens auf dem Kindle nicht mehr nach Lust und Laune eingekauft werden. </p>
<p>Sonst bin ich mit meinem <a href="http://www.amazon.de/dp/B0051QVF7A?tag=mgs-21">Kindle</a> sehr zu frieden. Vielleicht wird Amazon zu einem optionalen &#8220;1-Click-Protected&#8221; o.&#228;. irgendwann nachbessern? ;-)</p>
<p>Apropos Kindle-Auslieferung &#038; konfiguriertem Benutzerkonto; einem Bekannten wurde die &#8220;frustrationsfreie&#8221; Verpackung zugesendet. Aber nur die Verpackung, der Kindle war nicht dabei &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2011/10/16/amazon-kindle-1-click-benutzerfreundlichkeit-oder-sicherheitslucke/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Motorola Milestone &amp; Froyo</title>
		<link>http://mgsimon.de/2011/03/18/motorola-milestone-froyo/</link>
		<comments>http://mgsimon.de/2011/03/18/motorola-milestone-froyo/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 20:36:38 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[Mobil]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Froyo]]></category>
		<category><![CDATA[Milestone]]></category>
		<category><![CDATA[Motorola]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=2979</guid>
		<description><![CDATA[Das lang ersehnte Update der Milestone Geschichte kann aktuell durch die Update-Software von Motorola unter Windows &#252;ber das USB-Kabel installiert werden. Motorola Milestone meets Android Froyo &#8230; Acht Dialogfenster unter Windows und drei Neustarts auf dem Milestone sp&#228;ter erstrahlt der kleine Stein mit der Firmware-Version 2.2.1 (Froyo). Ein kleiner Schritt f&#252;r das Milestone, ein riesiger [...]]]></description>
			<content:encoded><![CDATA[<p>Das lang ersehnte Update der Milestone Geschichte kann aktuell durch die <a href="http://direct.motorola.com/GER/SoftwareUpdateSummary.asp?country=DEU&#038;language=GER&#038;web_page_name=SUPPORT&#038;strCarrierId=&#038;strPhone=MILESTONE&#038;strCable=Micro%20USB%20Data%20Cable&#038;strURL=https://rsddownload.motorola.com/download/Motorola_MILESTONE_MR2.5_Release_Notes_Final.pdf">Update-Software von Motorola</a> unter Windows &#252;ber das USB-Kabel installiert werden.<br />
<div id="attachment_2983" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/03/MotorolaMilestoneSWUpdateInProgress.png" alt="Motorola Milestone :: SW Update In progress ..." title="Motorola Milestone :: SW Update In progress ..." width="442" height="265" class="size-full wp-image-2983 stamp" /><p class="wp-caption-text">Motorola Milestone :: SW Update In progress ...</p></div><br />
Motorola Milestone meets Android Froyo &#8230;</p>
<p><span id="more-2979"></span>Acht Dialogfenster unter Windows und drei Neustarts auf dem Milestone sp&#228;ter erstrahlt der kleine Stein mit der Firmware-Version 2.2.1 (Froyo).</p>
<div id="attachment_2986" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2011/03/MotorolaMilestoneTelefoninfo22.png" alt="Motorola Milestone :: Telefoninfo 2.2" title="Motorola Milestone :: Telefoninfo 2.2" width="442" height="786" class="size-full wp-image-2986 stamp" /><p class="wp-caption-text">Motorola Milestone :: Telefoninfo 2.2</p></div>
<p>Ein kleiner Schritt f&#252;r das Milestone, ein riesiger Schritt f&#252;r Motorola &#8230; </p>
<ul>
<li>mobile Hotspot
</li>
<li>Flash
</li>
<li>JIT
</li>
<li>V8
</li>
<li>App2SD
</li>
<li>&#8230; </li>
</ul>
<p>@mobiflip / <a href="http://www.mobiflip.de/2011/03/android-2-2-froyo-fuer-das-motorola-milestone-wird-ab-sofort-ausgeliefert/">Android 2.2 Froyo f&#252;r das Motorola Milestone wird ab sofort ausgeliefert</a>: funktioniert o2 und frei &#8230; :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2011/03/18/motorola-milestone-froyo/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Creative Was?</title>
		<link>http://mgsimon.de/2010/12/23/creative-was/</link>
		<comments>http://mgsimon.de/2010/12/23/creative-was/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 16:26:33 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[web2.0]]></category>
		<category><![CDATA[CC]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=2953</guid>
		<description><![CDATA[Creative Commons im NDR Was haben Barack Obama, die Band &#8220;Nine Inch Nails&#8221; und der NDR gemeinsam? Sie wollen, dass sich ihre Inhalte im Netz verbreiten. Au&#223;erdem: NDR Videos extern einbetten. Mit diesem Video vom NDR dann auch verstanden &#8230; :-)]]></description>
			<content:encoded><![CDATA[<blockquote><p>Creative Commons im NDR</p>
<p>Was haben Barack Obama, die Band &#8220;Nine Inch Nails&#8221; und der NDR gemeinsam? Sie wollen, dass sich ihre Inhalte im Netz verbreiten. Au&#223;erdem: NDR Videos extern einbetten.</p></blockquote>
<p><object width="376" height="245"><param name="allowScriptAccess" value="always"><param name="movie" value="http://www.ndr.de/flash/NDRPlayer.swf?id=creativecommons105"><embed allowScriptAccess="always" src="http://www.ndr.de/flash/NDRPlayer.swf?id=creativecommons105" width="376" height="245"></embed></object></p>
<p>Mit diesem <a href="http://www.ndr.de/meinnorden/mitnehmen/creative_commons/creativecommons105.html">Video vom NDR</a> dann auch verstanden &#8230; :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2010/12/23/creative-was/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X  VPN-PPTP  DD-WRT</title>
		<link>http://mgsimon.de/2010/10/25/mac-os-x-vpn-pptp-dd-wrt/</link>
		<comments>http://mgsimon.de/2010/10/25/mac-os-x-vpn-pptp-dd-wrt/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 05:37:16 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[DD-WRT]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=2904</guid>
		<description><![CDATA[VPN Verbindungen &#252;ber PPTP eingerichtet unter Android, Linux und zu guter letzt unter Mac OS X &#8230; &#8230; kurz notiert. Konfiguration 1. Die VPN-Verbindung &#252;ber die Netzwerkkonfiguration (Systemeinstellungen &#8230; / Internet &#038; Drahtlose Kommunikation => Netzwerk / +) hinzuf&#252;gen. 2. Hinzugef&#252;gter Dienst VPN (PPTP) konfigurieren. 3. VPN &#252;ber Verbinden herstellen &#8230; &#8230; Kennwort eingeben &#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>VPN Verbindungen &#252;ber PPTP eingerichtet unter <a href="http://mgsimon.de/2010/04/12/android-und-vpn-gefluester/">Android</a>, <a href="http://mgsimon.de/2010/04/13/ubuntu-vpn-pptp-dd-wrt/">Linux</a> und zu guter letzt unter Mac OS X &#8230; </p>
<div id="attachment_2908" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2010/10/VPN_SSH_NAS.png" alt="VPN Beispiel :: SSH NAS" title="VPN Beispiel :: SSH NAS" width="442" height="277" class="size-full wp-image-2908 stamp" /><p class="wp-caption-text">VPN Beispiel :: SSH NAS</p></div>
<p>&#8230; kurz notiert.</p>
<p><span id="more-2904"></span><div style="background-color: rgb(191, 228, 255); border:1px solid rgb(128, 201, 255); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/info.png" alt="Hinweis" title="Hinweis" width="24" height="24" style="margin: 4px 8px 0 0; float:left;"/>Die VPN-Testverbindungen wurden mit NETGEAR WNR3500L (Firmware DD-WRT) &#252;ber willy.tel alias wilheml.tel und UMTS &#252;ber dem Mobilfunkanbieter O2 mit dem MacBook Pro von Apple (Mac OS X) durchgef&#252;hrt.</div></p>
<p><strong>Konfiguration</strong></p>
<div style="background-color: rgb(191, 255, 191); border:1px solid rgb(128, 255, 128); color: rgb(0, 0, 0); margin:0 0 1.5em; overflow:auto; padding: 3px;">
<img src="/wp-content/plugins/MyShortCodes/tip.png" alt="Tipp" title="Tipp" width="24" height="24" style="margin: 4px 8px 0 0; float:left;" />Konfiguration DD-WRT und VPN-Server siehe z.B. <a href="http://mgsimon.de/2010/04/12/android-und-vpn-gefluester/">Android und VPN-Gefl&#252;ster</a>.</div>
<p>1. Die VPN-Verbindung &#252;ber die Netzwerkkonfiguration (Systemeinstellungen &#8230; / Internet &#038; Drahtlose Kommunikation => Netzwerk / +) hinzuf&#252;gen.<br />
<div id="attachment_2912" class="wp-caption alignnone" style="width: 422px"><img src="http://mgsimon.de/wp-content/uploads/2010/10/VPN_PPTP_Erstellen.png" alt="Netzwerkkonfiguration :: VPN (PPTP) Erstellen" title="Netzwerkkonfiguration :: VPN (PPTP) Erstellen" width="412" height="228" class="size-full wp-image-2912 stamp" /><p class="wp-caption-text">Netzwerkkonfiguration :: VPN (PPTP) Erstellen</p></div></p>
<p>2. Hinzugef&#252;gter Dienst VPN (PPTP) konfigurieren.<br />
<div id="attachment_2915" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2010/10/VPN_PPTP_Einstellungen.png" alt="Netzwerkkonfiguration :: VPN (PPTP) Einstellungen" title="Netzwerkkonfiguration :: VPN (PPTP) Einstellungen" width="442" height="402" class="size-full wp-image-2915 stamp" /><p class="wp-caption-text">Netzwerkkonfiguration :: VPN (PPTP) Einstellungen</p></div> </p>
<p>3. VPN &#252;ber Verbinden herstellen &#8230;<br />
<div id="attachment_2917" class="wp-caption alignnone" style="width: 429px"><img src="http://mgsimon.de/wp-content/uploads/2010/10/VPN_PPTP_Verbinden.png" alt="Netzwerkkonfiguration :: VPN (PPTP) Verbinden" title="Netzwerkkonfiguration :: VPN (PPTP) Verbinden" width="419" height="260" class="size-full wp-image-2917 stamp" /><p class="wp-caption-text">Netzwerkkonfiguration :: VPN (PPTP) Verbinden</p></div><br />
&#8230; Kennwort eingeben &#8230;</p>
<p><div id="attachment_2920" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2010/10/VPN_PPTP_Status.png" alt="Netzwerkkonfiguration :: VPN (PPTP) Status" title="Netzwerkkonfiguration :: VPN (PPTP) Status" width="442" height="403" class="size-full wp-image-2920 stamp" /><p class="wp-caption-text">Netzwerkkonfiguration :: VPN (PPTP) Status</p></div><br />
fertig.</p>
<p><strong>Fazit</strong></p>
<p>VPN-PPTP leicht unter Android, leichter unter Linux und am leichtesten unter Mac OS X eingerichtet &#8230; :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2010/10/25/mac-os-x-vpn-pptp-dd-wrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shipattack Retro</title>
		<link>http://mgsimon.de/2010/10/14/shipattack-retro/</link>
		<comments>http://mgsimon.de/2010/10/14/shipattack-retro/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 05:30:25 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[ShipAttack]]></category>
		<category><![CDATA[Spiel]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=2885</guid>
		<description><![CDATA[Eine meiner ersten selbst erstellten Webanwendung aus dem Jahr 2001 &#8220;Schiffe versenken&#8221; ist mal wieder online &#8230; &#8230; dieses mal mehr f&#252;r das eine oder andere &#220;bungsprojekt. Android Google App Engine &#8230; &#8220;Ich bin Goolge&#8221; &#8211; mal sehen was mit aktuellen Technologien so geht &#8230; :)]]></description>
			<content:encoded><![CDATA[<p>Eine meiner ersten selbst erstellten Webanwendung aus dem Jahr 2001 &#8220;Schiffe versenken&#8221; ist mal wieder <a href="http://shipattack.de/retro/">online</a> &#8230;<br />
<div id="attachment_2886" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2010/10/ShipattackRetro.png" alt="Shipattack :: Retro" title="Shipattack :: Retro" width="442" height="378" class="size-full wp-image-2886 stamp" /><p class="wp-caption-text">Shipattack :: Retro</p></div><span id="more-2885"></span><br />
&#8230; dieses mal mehr f&#252;r das eine oder andere &#220;bungsprojekt.</p>
<ul>
<li>Android</li>
<li>Google App Engine</li>
<li>&#8230;</li>
</ul>
<p>&#8220;Ich bin Goolge&#8221; &#8211; mal sehen was mit aktuellen Technologien so geht &#8230; :)</p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2010/10/14/shipattack-retro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Maverick Meerkat 10.10 Netbook Edition</title>
		<link>http://mgsimon.de/2010/10/11/ubuntu-maverick-meerkat-10-10-netbook-edition/</link>
		<comments>http://mgsimon.de/2010/10/11/ubuntu-maverick-meerkat-10-10-netbook-edition/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 05:25:35 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[Linux & Unix]]></category>
		<category><![CDATA[uup]]></category>
		<category><![CDATA[Eee]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=2872</guid>
		<description><![CDATA[Ubuntu Maverick Meerkat 10.10 Netbook Edition runtergeladen, USB-Stick Startmedium erstellt, gestartet, installiert, ein paar Einstellungen und l&#228;uft auf dem Netbook 901 GO aus der Eee PC Serie von Asus … Die neue Oberfl&#228;che ist h&#252;bsch und das Bedienkonzept f&#252;r die Netbook Edition ist sehr gelungen, aber leider ist der Eee PC 901 GO mit dem [...]]]></description>
			<content:encoded><![CDATA[<p>Ubuntu Maverick Meerkat 10.10 Netbook Edition <a href="http://www.ubuntu.com/netbook/get-ubuntu/download">runtergeladen</a>, <a href="http://mgsimon.de/wie-anaufnachzu/usb-stick-startmedium-erstellen/">USB-Stick Startmedium erstellt</a>, gestartet, installiert, ein paar Einstellungen und l&#228;uft auf dem Netbook 901 GO aus der Eee PC Serie von Asus … </p>
<div id="attachment_2880" class="wp-caption alignnone" style="width: 452px"><img src="http://mgsimon.de/wp-content/uploads/2010/10/EeeUbuntuMaverickMeerkatNetbookEdition.png" alt="Eee PC 901 :: Ubuntu Maverick Meerkat Netbook Edition" title="Eee PC 901 :: Ubuntu Maverick Meerkat Netbook Edition" width="442" height="259" class="size-full wp-image-2880 stamp" /><p class="wp-caption-text">Eee PC 901 :: Ubuntu Maverick Meerkat Netbook Edition</p></div>
<p>Die neue Oberfl&#228;che ist h&#252;bsch und das Bedienkonzept f&#252;r die Netbook Edition ist sehr gelungen, aber leider ist der <a target="_blank" href="http://www.amazon.de/dp/B001JQLH1A/ref=nosim?tag=mgs-21" rel="nofollow">Eee PC 901 GO</a> mit dem eigensinnigen Erdm&#228;nnchen &#252;berfordert. Auf dem ersten Blick scheint alles zu funktionieren, aber die Reaktionszeiten der Netbook Edition sind viel zu langsam.</p>
<p>&#8230; Version 10.10 ver&#246;ffentlicht am 10.10.10 um 10:10, was f&#252;r ein Bin&#228;rtag. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2010/10/11/ubuntu-maverick-meerkat-10-10-netbook-edition/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

