<?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>johann.gr</title>
	<atom:link href="https://johann.gr/feed/" rel="self" type="application/rss+xml" />
	<link>https://johann.gr</link>
	<description>Privater Blog. Nicht mehr, nicht weniger.</description>
	<lastBuildDate>Sat, 12 Sep 2020 23:52:09 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<image>
	<url>https://i0.wp.com/johann.gr/wp-content/uploads/2016/06/cropped-jg_wp_icon.png?fit=32%2C32&#038;ssl=1</url>
	<title>johann.gr</title>
	<link>https://johann.gr</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">94889318</site>	<item>
		<title>How To: Git-Repos komplett umziehen</title>
		<link>https://johann.gr/how-to-git-repos-komplett-umziehen/</link>
					<comments>https://johann.gr/how-to-git-repos-komplett-umziehen/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Wed, 08 Apr 2020 12:04:11 +0000</pubDate>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitlab]]></category>
		<category><![CDATA[transfer]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=876</guid>

					<description><![CDATA[Vielleicht nutzt du, warum auch immer, mehrere Git-Installationen und möchtes ein Repo vollständig umziehen. Oder du möchtest von GitLab auf Bitbucket wechseln oder was auch immer. In folgendem zeige ich dir, wie dies relativ schnell und einfach möglich ist :) Der Einfachheit halber habe ich mir in /tmp einen Ordner angelegt, in den ich mir [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Vielleicht nutzt du, warum auch immer, mehrere Git-Installationen und möchtes ein Repo vollständig umziehen. Oder du möchtest von GitLab auf Bitbucket wechseln oder was auch immer.</p>



<p>In folgendem zeige ich dir, wie dies relativ schnell und einfach möglich ist :)</p>



<span id="more-876"></span>



<p>Der Einfachheit halber habe ich mir in <code>/tmp</code> einen Ordner  angelegt, in den ich mir die Repos, die ich umziehen möchte, clone.</p>



<ol class="wp-block-list"><li>Zuerst müssen wir unser altes Repo komplett clonen:<br><code>git clone --mirror &lt;original-repo url></code></li><li>Ist das Repo geklont können wir noch prüfen, ob alle Tags und Branches ausgecheckt sind, was aber der Fall sein sollte:<br><code>git tag</code><br><code>git branch -a</code></li><li>Jetzt wird die &#8222;Verbindung&#8220; zum alten Repo getrennt:<br><code>git remote rm origin</code></li><li>Damit wir im nächsten Schritt das neue Repo &#8222;verbinden&#8220; können:<br><code>git remote add origin &lt;new-repo url></code></li><li>Das Ganze wird jetzt noch gepusht, fertig.<br><code>git push origin --all &amp;&amp;</code><br><code>git push --tags</code></li></ol>



<p>Schon haben wir das Repo vollständig kopiert, inklusive der History und aller Tags sowie Branches. :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/how-to-git-repos-komplett-umziehen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">876</post-id>	</item>
		<item>
		<title>Daten aus der Natede-API auslesen</title>
		<link>https://johann.gr/daten-aus-der-natede-api-auslesen/</link>
					<comments>https://johann.gr/daten-aus-der-natede-api-auslesen/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Fri, 24 Jan 2020 12:26:07 +0000</pubDate>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[clairy]]></category>
		<category><![CDATA[fhem]]></category>
		<category><![CDATA[hassio]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[natede]]></category>
		<category><![CDATA[vitesy]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=823</guid>

					<description><![CDATA[Wie wir &#8222;in&#8220; Apps schauen und die entsprechenden Requests auslesen können, haben wir uns ja bereits angeschaut. In diesem Artikel soll es nun darum gehen, wie wir Daten aus der Natede-API auslesen können, um beispielsweise unseren Home Assistant (oder FHEM, whatever) damit zu füttern. Vorab, was ist Natede überhaupt? Natede ist ein &#8222;smarter Blumentopf&#8220;, der [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Wie wir &#8222;in&#8220; Apps schauen und die entsprechenden Requests auslesen können, <a href="http://johann.gr/android-apps-mittels-mitmproxy-debuggen/" data-wpel-link="internal">haben wir uns ja bereits angeschaut</a>. In diesem Artikel soll es nun darum gehen, wie wir Daten aus der Natede-API auslesen können, um beispielsweise unseren <a href="https://www.home-assistant.io/hassio/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Home Assistant</a> (oder FHEM, whatever) damit zu füttern.</p>



<p>Vorab, was ist Natede überhaupt? Natede ist ein &#8222;smarter Blumentopf&#8220;, der die heimische Luft von Schadstoffen befreien möchte. Um dies zu tun hat er einige Sensoren verbaut, die dann &#8211; aktuell und offiziell leider nur über die App &#8211; auslesbar sind. Zu diesen Sensordaten zählen Temperatur und Luftfeuchtigkeit, <a href="https://de.wikipedia.org/wiki/Fl%C3%BCchtige_organische_Verbindungen" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">VOCs</a>, <a href="https://de.wikipedia.org/wiki/Kohlenstoffmonoxid" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">CO</a> und Feinstaub (<a href="https://de.wikipedia.org/wiki/Feinstaub#PM2,5" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">PM2,5</a>).</p>



<span id="more-823"></span>



<p>Vitesy setzt hier anscheinend auf <a href="https://firebase.google.com" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Firebase</a>, die Doku zur Authentifizierung gibt&#8217;s <a href="https://firebase.google.com/docs/reference/rest/auth#section-sign-in-email-password" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">hier</a>.</p>



<p>Den <code><a href="https://auth0.com/learn/refresh-tokens/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">refresh_token</a></code>, den ich in folgendem Request mitschicke, finde ich in den mitmproxy-&#8222;Flows&#8220;. Mit diesem kann ich mir meinem Token für die API holen.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl -H "Content-Type: application/json" --data-binary '{"refresh_token":"XXX"}' -X POST "https://securetoken.googleapis.com/v1/token?grant_type=refresh_token&amp;key=AIzaSyD45X1yTlDyZIZxy6btd9Pefcv5JHg9kek" 2&amp;>1 | jq .
{
  "access_token": "eyJhbGciOixxxxxxxxxxxxxxx",
  "expires_in": "3600",
  "token_type": "Bearer",
  "refresh_token": "XXX",
  "id_token": "eyJhbGciOixxxxxxxxxxxxxxx",
  "user_id": "7XVxxxxxxxxxxxxxx",
  "project_id": "860446277852"
}</pre>



<p>Um sich den <code>refresh_token</code> direkt mittels E-Mail und Passwort zu holen kann folgendes cURL-Kommando genutzt werden:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl -H "Content-Type: application/json" --data-binary '{"email":"meine@mail.com","password":"einPa$$wort","returnSecureToken":true}' -X POST "https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?&amp;key=AIzaSyD45X1yTlDyZIZxy6btd9Pefcv5JHg9kek" 2&amp;>1 | jq .
{
  "kind": "identitytoolkit#VerifyPasswordResponse",
  "localId": "7XVxxxxxxxxxxxxxx",
  "email": "meine@mail.com",
  "displayName": "John Doe",
  "idToken": "eyJhbGciOixxxxxxxxxxxxxxx",
  "registered": true,
  "profilePicture": "https://graph.facebook.com/xxx/picture",
  "refreshToken": "AEu4Ixxxxxxxxxxx",
  "expiresIn": "3600"
}</pre>



<p>Interessant für uns hier in dem Fall ist der <code>id_token</code> (<a href="https://de.wikipedia.org/wiki/JSON_Web_Token" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">JWT</a>), den wir später für unsere Requests an die Natede-API (<em>https://api.clairyhub.com/</em>; Clairy ist btw der Vorgänger, wobei die APIs hier aber grundlegend verschieden sind) brauchen. Den aktuellen idToken, der aber nur 1 Stunde gültig ist, finden wir auch in unseren Requests:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1920" height="403" data-attachment-id="830" data-permalink="https://johann.gr/daten-aus-der-natede-api-auslesen/image-1/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?fit=1920%2C403&amp;ssl=1" data-orig-size="1920,403" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?fit=300%2C63&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?fit=740%2C155&amp;ssl=1" src="https://i1.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?fit=740%2C155&amp;ssl=1" alt="" class="wp-image-830" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?w=1920&amp;ssl=1 1920w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?resize=300%2C63&amp;ssl=1 300w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?resize=1024%2C215&amp;ssl=1 1024w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?resize=768%2C161&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?resize=1536%2C322&amp;ssl=1 1536w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/image-1.png?w=1480&amp;ssl=1 1480w" sizes="(max-width: 740px) 100vw, 740px" /></figure>



<p>Um nun beispielsweise unsere Geräte auszugeben, reicht folgender Request (wobei ich hier einige Werte der Response anonymisiert habe):</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl --request GET 'https://api.clairyhub.com/users/me/devices' \
--header "Authorization: Bearer ${id_token}" 2&amp;>1 | jq .
[
  {
    "fwVersion": "1.7.08",
    "location": {
      "zipcode": "86xxx",
      "country": "Deutschland",
      "utcOffset": 60,
      "formattedAddress": "Strasse 1, 86xxx Ort, Deutschland",
      "city": "Ort",
      "street": "Strasse, 1",
      "latitude": 0.0,
      "name": "Strasse 1",
      "placeId": "xxx",
      "description": "Strasse 1, 86xxx Ort, Deutschland",
      "longitude": 0.0
    },
    "isEnrollCompleted": true,
    "entityId": "E8:2A:44:00:00:00",
    "createdAt": "2019-12-20T14:40:00+00:00",
    "connected": true,
    "isEnrollSucceeded": true,
    "deviceName": "NATEDE Wohnzimmer",
    "updatedAt": "2020-01-24T09:00:30+00:00",
    "ssid": "FRITZ!Box",
    "certificateId": "xxx",
    "plant": {
      "id": "spathiphyllum",
      "name": "CLPLANT-spathiphyllum"
    },
    "place": {
      "id": "home",
      "name": "Home",
      "room": {
        "id": "living",
        "name": "Living"
      }
    },
    "sensors": [
      "tmp",
      "hum",
      "vocL",
      "dust",
      "co"
    ],
    "premium": false
  }
]</pre>



<p>Anhand der <code>entityId</code> wird unser Gerät identifiziert, dieser entspricht der MAC-Adresse. Möchten wir nun die letzten Messwerte abrufen, hilft folgender cURL-Request:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl --request GET 'https://api.clairyhub.com/devices/E8:2A:44:00:00:00/measurements/latest' \
--header "Authorization: Bearer ${id_token}" 2&amp;>1 | jq .
{
  "uv": 0,
  "fan": 0,
  "pm25": 10.2,
  "deviceId": "E8:2A:44:00:00:00",
  "tmp": 24.4,
  "vocL": 1,
  "timestamp": 1579878607,
  "hum": 22,
  "co": 0,
  "measuredAt": "2020-01-24T16:10:07+01:00"
}</pre>



<p>So weit, so gut. Die aktuellen Messwerte werden aktuell alle 10 Minuten geschickt. Um jetzt alle Messwerte für einen bestimmten Zeitraum zu bekommen, in folgendem Beispiel 1 Tag (Response gekürzt):</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl --request GET 'https://api.clairyhub.com/measurements?deviceId=E8%3A2A%3A44%3A00%3A00%3A00&amp;fromDateTime=2020-01-23T00%3A00%2B01%3A00&amp;toDateTime=2020-01-23T23%3A59%3A59.999999999%2B01%3A00&amp;granularity=finest&amp;sensors=tmp%2Chum%2Cpm25%2Cco%2Cco2%2Cvoc%2CvocL' \
--header "Authorization: Bearer ${id_token}" 2&amp;>1 | jq .
[
  {
    "deviceId": "E8:2A:44:00:00:00",
    "firstMeasurementAt": "2020-01-23T00:06:07+01:00",
    "lastMeasurementAt": "2020-01-23T00:06:07+01:00",
    "aqi": {
      "count": 1,
      "max": 53.17297525495789,
      "min": 53.17297525495789,
      "sum": 53.17297525495789
    },
    "co": {
      "count": 1,
      "max": 0,
      "min": 0,
      "sum": 0
    },
    "hum": {
      "count": 1,
      "max": 33,
      "min": 33,
      "sum": 33
    },
    "pm25": {
      "count": 1,
      "max": 38.1,
      "min": 38.1,
      "sum": 38.1
    },
    "tmp": {
      "count": 1,
      "max": 13.1,
      "min": 13.1,
      "sum": 13.1
    },
    "vocL": {
      "count": 1,
      "max": 1,
      "min": 1,
      "sum": 1
    }
  },
  {
    "deviceId": "E8:2A:44:00:00:00",
    "firstMeasurementAt": "2020-01-23T00:16:08+01:00",
    "lastMeasurementAt": "2020-01-23T00:16:08+01:00",
    "aqi": {
      "count": 1,
      "max": 51.32705573108122,
      "min": 51.32705573108122,
      "sum": 51.32705573108122
    },
    "co": {
      "count": 1,
      "max": 0,
      "min": 0,
      "sum": 0
    },
    "hum": {
      "count": 1,
      "max": 33,
      "min": 33,
      "sum": 33
    },
    "pm25": {
      "count": 1,
      "max": 40.2,
      "min": 40.2,
      "sum": 40.2
    },
    "tmp": {
      "count": 1,
      "max": 13.1,
      "min": 13.1,
      "sum": 13.1
    },
    "vocL": {
      "count": 1,
      "max": 1,
      "min": 1,
      "sum": 1
    }
  },
  ...
]</pre>



<p>Möchten wir nur bestimmte Sensor-Werte, können wir den Parameter <code>sensors</code> auch entsprechend anpassen.</p>



<p>Ähnliches Vorgehen, um die Alarme zu bekommen:</p>



<pre class="wp-block-preformatted"><a href="https://api.clairyhub.com/devices/E8:2A:44:00:00:00/alerts?fromDate=2020-01-23T00%3A00%2B01%3A00&amp;toDate=2020-01-23T23%3A59%3A59.999999999%2B01%3A00" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">https://api.clairyhub.com/devices/E8:2A:44:00:00:00/alerts?fromDate=2020-01-23T00%3A00%2B01%3A00&amp;toDate=2020-01-23T23%3A59%3A59.999999999%2B01%3A00</a></pre>



<p>Wobei die Parameter <code>fromDate</code> und <code>toDate</code> hier optional sind.</p>



<p><a href="https://github.com/jograb/natede" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Auf GitHub</a> habe ich mal angefangen, da <a href="https://jograb.github.io/natede/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">ein bisschen was zusammen zu tragen</a>&#8230; :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/daten-aus-der-natede-api-auslesen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">823</post-id>	</item>
		<item>
		<title>Android-Apps mittels mitmproxy debuggen</title>
		<link>https://johann.gr/android-apps-mittels-mitmproxy-debuggen/</link>
					<comments>https://johann.gr/android-apps-mittels-mitmproxy-debuggen/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Wed, 22 Jan 2020 20:59:59 +0000</pubDate>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[mitm]]></category>
		<category><![CDATA[mitmproxy]]></category>
		<category><![CDATA[natede]]></category>
		<category><![CDATA[requests]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=814</guid>

					<description><![CDATA[In manchen Fällen ist es ganz interessant zu wissen, welche Requests eine (Android) App denn eigentlich absetzt. Wie genau das funktioniert schauen wir uns in diesem Artikel nun zusammen an. :) In meinem Fall ist es die Natede-App. Das Projekt, ein smarter Blumentopf &#x1f33a;, habe ich vor einiger Zeit bei Kickstarter unterstützt und vor kurzem [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>In manchen Fällen ist es ganz interessant zu wissen, welche Requests eine (Android) App denn eigentlich absetzt. Wie genau das funktioniert schauen wir uns in diesem Artikel nun zusammen an. :)</p>



<span id="more-814"></span>



<p>In meinem Fall ist es die <a href="https://vitesy.com/natede/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Natede</a>-App. Das Projekt, ein smarter Blumentopf &#x1f33a;, habe ich vor einiger Zeit bei Kickstarter unterstützt und vor kurzem auch &#8211; endlich! &#8211; erhalten. Leider wird hier aber (noch) keine offizielle/öffentliche API angeboten, hier versuche ich mehr über die App herauszufinden. Dazu aber dann später mehr in einem eigenen Artikel.</p>



<p>Also, los geht&#8217;s.</p>



<h2 class="wp-block-heading">Was wird benötigt?</h2>



<p>Am einfachsten ist es, das ganze in einem Emulator zu testen, erstmal laden wir uns also <a href="https://developer.android.com/studio" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Android Studio</a> herunter und installieren dieses, wenn noch nicht geschehen.<br>Zudem natürlich einen Proxy, ich nutze hier <a href="https://mitmproxy.org/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">mitmproxy</a>. Eine Alternative wäre beispielsweise <a href="https://www.charlesproxy.com/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Charles</a>.</p>



<p>mitmproxy lässt sich am Mac beispielsweise ziemlich easy mit Homebrew installieren:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">brew install mitmproxy</pre>



<h2 class="wp-block-heading">Schritt 1 &#8211; virtuelles Device anlegen</h2>



<p>Nachdem die Requirements nun geklärt wären, legen wir los. Zuerst müssen wir uns ein virtuelles Android-Device anlegen. Hierzu öffnen wir nun Android Studio, starten damit den AVD-Manager und legen uns ein Device an.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="2224" height="1568" data-attachment-id="815" data-permalink="https://johann.gr/android-apps-mittels-mitmproxy-debuggen/bildschirmfoto-2020-01-22-um-21-24-13/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?fit=2224%2C1568&amp;ssl=1" data-orig-size="2224,1568" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Bildschirmfoto-2020-01-22-um-21.24.13" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?fit=300%2C212&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?fit=740%2C522&amp;ssl=1" src="https://i1.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?fit=740%2C522&amp;ssl=1" alt="" class="wp-image-815" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?w=2224&amp;ssl=1 2224w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?resize=300%2C212&amp;ssl=1 300w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?resize=1024%2C722&amp;ssl=1 1024w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?resize=768%2C541&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?resize=1536%2C1083&amp;ssl=1 1536w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?resize=2048%2C1444&amp;ssl=1 2048w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.13.png?w=1480&amp;ssl=1 1480w" sizes="(max-width: 740px) 100vw, 740px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="2224" height="1568" data-attachment-id="816" data-permalink="https://johann.gr/android-apps-mittels-mitmproxy-debuggen/bildschirmfoto-2020-01-22-um-21-24-27/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?fit=2224%2C1568&amp;ssl=1" data-orig-size="2224,1568" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Bildschirmfoto-2020-01-22-um-21.24.27" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?fit=300%2C212&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?fit=740%2C522&amp;ssl=1" src="https://i1.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?fit=740%2C522&amp;ssl=1" alt="" class="wp-image-816" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?w=2224&amp;ssl=1 2224w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?resize=300%2C212&amp;ssl=1 300w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?resize=1024%2C722&amp;ssl=1 1024w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?resize=768%2C541&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?resize=1536%2C1083&amp;ssl=1 1536w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?resize=2048%2C1444&amp;ssl=1 2048w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.24.27.png?w=1480&amp;ssl=1 1480w" sizes="(max-width: 740px) 100vw, 740px" /></figure>



<p>Wie auf den Bildern zu sehen habe ich mich hier für ein Pixel 3 XL mit Android 9 Pie (API-Version 28) entschieden. Wichtig ist nur, dass ihr hier eine &#8222;Google APIs&#8220;-Version ohne den Play Store nutzt (sonst klappt später z. B. das <code>adb root</code>-Kommando nicht).</p>



<h2 class="wp-block-heading">Schritt 2 &#8211; Android-Device vorbereiten</h2>



<p>Da <a href="https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Apps seit Android 7 vom User hinzugefügte CAs ignorieren</a> (außer, die App wird entsprechend angepasst, was uns ja &#8211; da wir nicht der Entwickler sind &#8211; nicht möglich ist), müssen wir ein eignes System-CA hinzufügen. Wie das geht ist auf der Seite von mitmproxy recht gut dokumentiert &#8211; <a href="https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">dieser Anleitung könnt ihr gerne folgen</a>.</p>



<h2 class="wp-block-heading">Schritt 3 &#8211; Proxy starten und am Android-Emulator konfigurieren</h2>



<p>Den Proxy könnt ihr nun über&#8217;s Terminal anstarten mit <code>mitmproxy -p $port</code>. Da ich aber eine WebGUI bevorzuge, wähle ich <code>mitmweb</code>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$ mitmweb -p 8082
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http://*:8082</pre>



<p>Hier sehen wir nun, die WebGUI ist unter <code>localhost:8081</code> erreichbar, der Proxy lauscht auf dem Port 8082. Dies konfigurieren wir nun in unserem Emulator, der ja bereits läuft. Hier dürcken wir einfach auf die 3 Punkte, um zu den Einstellungen zu kommen:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1864" height="1508" data-attachment-id="818" data-permalink="https://johann.gr/android-apps-mittels-mitmproxy-debuggen/bildschirmfoto-2020-01-22-um-21-44-24/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?fit=1864%2C1508&amp;ssl=1" data-orig-size="1864,1508" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Bildschirmfoto-2020-01-22-um-21.44.24" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?fit=300%2C243&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?fit=740%2C598&amp;ssl=1" src="https://i1.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?fit=740%2C598&amp;ssl=1" alt="" class="wp-image-818" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?w=1864&amp;ssl=1 1864w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?resize=300%2C243&amp;ssl=1 300w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?resize=1024%2C828&amp;ssl=1 1024w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?resize=768%2C621&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?resize=1536%2C1243&amp;ssl=1 1536w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.44.24.png?w=1480&amp;ssl=1 1480w" sizes="auto, (max-width: 740px) 100vw, 740px" /></figure>



<h2 class="wp-block-heading">Das war&#8217;s!</h2>



<p>Nachdem wir die Einstellungen gespeichert haben nutzt unser Gerät den Proxy und wir können mitlauschen. Öffnen wir nun beispielsweise unsere App oder surfen eine Webseite an, sehen wir diese Requests auf unserer mitmweb-GUI.</p>



<p>Um die App übrigens auf eurem virtuellem Gerät zu installieren könnt ihr euch die APK herunterladen &#8211; dafür gibt es <a href="https://www.google.com/search?q=apk%20%downloader%20online" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">verschiedene &#8222;APK Downloader&#8220;</a>. Diese dann einfach per Drag &amp; Drop &#8222;auf das Smartphone ziehen&#8220;, fertig. :)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="858" height="1438" data-attachment-id="819" data-permalink="https://johann.gr/android-apps-mittels-mitmproxy-debuggen/bildschirmfoto-2020-01-22-um-21-48-30/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.48.30.png?fit=858%2C1438&amp;ssl=1" data-orig-size="858,1438" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Bildschirmfoto-2020-01-22-um-21.48.30" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.48.30.png?fit=179%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.48.30.png?fit=611%2C1024&amp;ssl=1" src="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.48.30.png?fit=611%2C1024&amp;ssl=1" alt="" class="wp-image-819" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.48.30.png?w=858&amp;ssl=1 858w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.48.30.png?resize=179%2C300&amp;ssl=1 179w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.48.30.png?resize=611%2C1024&amp;ssl=1 611w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.48.30.png?resize=768%2C1287&amp;ssl=1 768w" sizes="auto, (max-width: 740px) 100vw, 740px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="3104" height="1880" data-attachment-id="820" data-permalink="https://johann.gr/android-apps-mittels-mitmproxy-debuggen/bildschirmfoto-2020-01-22-um-21-49-27/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?fit=3104%2C1880&amp;ssl=1" data-orig-size="3104,1880" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Bildschirmfoto-2020-01-22-um-21.49.27" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?fit=300%2C182&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?fit=740%2C448&amp;ssl=1" src="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?fit=740%2C448&amp;ssl=1" alt="" class="wp-image-820" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?w=3104&amp;ssl=1 3104w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?resize=300%2C182&amp;ssl=1 300w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?resize=1024%2C620&amp;ssl=1 1024w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?resize=768%2C465&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?resize=1536%2C930&amp;ssl=1 1536w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?resize=2048%2C1240&amp;ssl=1 2048w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?w=1480&amp;ssl=1 1480w, https://i0.wp.com/johann.gr/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-22-um-21.49.27.png?w=2220&amp;ssl=1 2220w" sizes="auto, (max-width: 740px) 100vw, 740px" /></figure>



<p>Na dann, viel Spaß  &#8211; da kann man sich jetzt erstmal ein Weilchen austoben :D Und wie gesagt, der Artikel zur Natede-App folgt. &#x1f44b;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/android-apps-mittels-mitmproxy-debuggen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">814</post-id>	</item>
		<item>
		<title>Xcode schneller downloaden und installieren</title>
		<link>https://johann.gr/xcode-schneller-downloaden-und-installieren/</link>
					<comments>https://johann.gr/xcode-schneller-downloaden-und-installieren/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Fri, 20 Dec 2019 23:11:48 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Apple iOS]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[swift]]></category>
		<category><![CDATA[xcode]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=806</guid>

					<description><![CDATA[Nicht selten ist es mir aus Gründen passiert, dass ich eine neue Version von Xcode downloaden muss. So wie eben. Leider dauert der Download über den App Store aber ewig &#8211; glücklicherweise gibt es hier auch einen weit flotteren weg! :) Die Lösung hier ist das Apple Developer Portal. Hier finden sich alle Xcode-Versionen, inklusive [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Nicht selten ist es mir aus Gründen passiert, dass ich eine neue Version von Xcode downloaden muss. So wie eben. Leider dauert der Download über den App Store aber ewig &#8211; glücklicherweise gibt es hier auch einen weit flotteren weg! :)</p>



<span id="more-806"></span>



<p>Die Lösung hier ist das <a href="https://developer.apple.com/download/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Apple Developer Portal</a>. Hier finden sich alle Xcode-Versionen, inklusive Betas.</p>



<h2 class="wp-block-heading">Möglichkeit 1: Parallele Downloads in Chrome aktivieren</h2>



<p>Die erste Möglichkeit wäre beispielsweise im Chrome folgendes Flag zu aktivieren: <a href="chrome://flags/#enable-parallel-downloading" data-wpel-link="internal">chrome://flags/#enable-parallel-downloading</a><br>Dies sorgt für parallele Downloads, was für merklich mehr Speed sorgt.</p>



<h2 class="wp-block-heading">Möglichkeit 2: Schnellere Downloads mittels <code>aria2</code></h2>



<p>Eine zweite Möglichkeit ist der Download mittels <code>aria2</code>, welches sich mittels <a href="https://brew.sh/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Homebrew</a> schnell installieren lässt.</p>



<p>Ich habe dann folgendes <a href="https://gist.github.com/iandundas/fabe07455e5216442a421922361f698c" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Ruby-Script von Ian Dundas</a> für den Download verwendet:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#!/usr/bin/env ruby

print "What is the URL of your Apple Downloads resource?\nURL:"
url = gets.strip

print "What is the ADCDownloadAuth cookie token:\nADCDownloadAuth: "
token = gets.strip

command = "aria2c --header \"Host: adcdownload.apple.com\" --header \"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\" --header \"Upgrade-Insecure-Requests: 1\" --header \"Cookie: ADCDownloadAuth=#{token}\" --header \"User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0 Mobile/14B72 Safari/602.1\" --header \"Accept-Language: en-us\" -x 16 -s 16 #{url} -d ~/Downloads"

exec(command)</pre>



<p><code>aria2</code> nutzt hier ebenfalls <a href="https://github.com/aria2/aria2/blob/release-1.35.0/src/OptionHandlerFactory.cc#L443" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">bis zu 16 parallele Verbindungen</a>, was den Download merklich beschleunigt.</p>



<p>Der Token wird im Cookie <code>ADCDownloadAuth</code> gespeichert, also einfach einmal im Browser einloggen, um dann den Token zu kopieren.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1392" height="848" data-attachment-id="808" data-permalink="https://johann.gr/xcode-schneller-downloaden-und-installieren/screenshot_adp/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/12/Screenshot_ADP.png?fit=1392%2C848&amp;ssl=1" data-orig-size="1392,848" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot_ADP" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/12/Screenshot_ADP.png?fit=300%2C183&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/12/Screenshot_ADP.png?fit=740%2C451&amp;ssl=1" src="https://i2.wp.com/johann.gr/wp-content/uploads/2019/12/Screenshot_ADP.png?fit=740%2C451&amp;ssl=1" alt="" class="wp-image-808" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2019/12/Screenshot_ADP.png?w=1392&amp;ssl=1 1392w, https://i0.wp.com/johann.gr/wp-content/uploads/2019/12/Screenshot_ADP.png?resize=300%2C183&amp;ssl=1 300w, https://i0.wp.com/johann.gr/wp-content/uploads/2019/12/Screenshot_ADP.png?resize=1024%2C624&amp;ssl=1 1024w, https://i0.wp.com/johann.gr/wp-content/uploads/2019/12/Screenshot_ADP.png?resize=768%2C468&amp;ssl=1 768w" sizes="auto, (max-width: 740px) 100vw, 740px" /></figure>



<h2 class="wp-block-heading">Entpacken mittels <code>xip</code></h2>



<p>Auch für die schnellere Installation bzw. das Entpacken um an die .app zu kommen gibt es einen &#8222;Trick&#8220;. Statt die Datei per Doppelklick im Finder zu öffnen und zu entpacken, kann man auch wieder zum Terminal greifen:</p>



<p><code>xip -x ~/Downloads/Xcode_11.3.xip</code></p>



<p>Im Gegensatz zum Doppelklick im Finder wird hier nämlich nicht die Signatur geprüft, was aber durchaus auch ein Risiko sein könnte. Ob man dieses in kauf nehmen möchte, kann aber jeder für sich selbst entscheiden :)</p>



<p>So, und mein Download dürfte nun auch fertig sein. :D &#x1f44d;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/xcode-schneller-downloaden-und-installieren/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">806</post-id>	</item>
		<item>
		<title>Huawei Mate 20 Pro: EMUI 10 Beta-Anmeldung geöffnet</title>
		<link>https://johann.gr/huawei-mate-20-pro-emui-10-beta-anmeldung-geoeffnet/</link>
					<comments>https://johann.gr/huawei-mate-20-pro-emui-10-beta-anmeldung-geoeffnet/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Sun, 20 Oct 2019 17:24:38 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[emui]]></category>
		<category><![CDATA[emui10]]></category>
		<category><![CDATA[huawei]]></category>
		<category><![CDATA[ota]]></category>
		<category><![CDATA[update]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=791</guid>

					<description><![CDATA[Obwohl in den letzten Tagen oft Berichtet wurde, dass EMUI 10 bzw. Android 10 für das Huawei Mate 20 Pro inzwischen in Europa ausgerollt wird, ist dem nicht so. Ab sofort ist jedoch die Anmeldung zur Beta offiziell geöffnet und über die Beta-App von Huawei möglich. Leider begrenzt Huawei die Listenplätze immer, für die aktuelle [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Obwohl in den letzten Tagen oft Berichtet wurde, dass EMUI 10 bzw. Android 10 für das Huawei Mate 20 Pro inzwischen in Europa ausgerollt wird, ist dem nicht so.</p>



<p>Ab sofort ist jedoch die Anmeldung zur Beta offiziell geöffnet und über die <a href="https://consumer.huawei.com/de/support/fut/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Beta-App von Huawei</a> möglich. Leider begrenzt Huawei die Listenplätze immer, für die aktuelle Beta stehen anscheinend lediglich 400 Plätze bereit &#8211; schnell sein lohnt sich also.</p>



<span id="more-791"></span>



<figure class="wp-block-image"><img data-recalc-dims="1" loading="lazy" decoding="async" width="740" height="639" data-attachment-id="790" data-permalink="https://johann.gr/screenshot_com-huawei-betaclub/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/10/Screenshot_com.huawei.betaclub.jpg?fit=1079%2C932&amp;ssl=1" data-orig-size="1079,932" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot_com.huawei.betaclub" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/10/Screenshot_com.huawei.betaclub.jpg?fit=300%2C259&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/10/Screenshot_com.huawei.betaclub.jpg?fit=740%2C639&amp;ssl=1" src="https://i0.wp.com/johann.gr/wp-content/uploads/2019/10/Screenshot_com.huawei.betaclub.jpg?resize=740%2C639&#038;ssl=1" alt="" class="wp-image-790" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2019/10/Screenshot_com.huawei.betaclub.jpg?resize=1024%2C884&amp;ssl=1 1024w, https://i0.wp.com/johann.gr/wp-content/uploads/2019/10/Screenshot_com.huawei.betaclub.jpg?resize=300%2C259&amp;ssl=1 300w, https://i0.wp.com/johann.gr/wp-content/uploads/2019/10/Screenshot_com.huawei.betaclub.jpg?resize=768%2C663&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2019/10/Screenshot_com.huawei.betaclub.jpg?w=1079&amp;ssl=1 1079w" sizes="auto, (max-width: 740px) 100vw, 740px" /></figure>



<p>Ich habe mich für die Beta eingetragen und hoffe nun, einen Platz in der Liste zu bekommen. Bis die ersten Betas dann ausgerollt werden, dürfte es nun nur noch wenige Tage dauern, das Update kommt dann per OTA.</p>



<p>Wer sich für die Änderungen zwischen der aktuellen Version EMUI 9 und der künftigen EMUI 10-Version auf Basis von Android 10 interessiert, kann sich gerne mal bei YouTube umschauen &#8211; hier gibt es bereits einige Videos, die die beiden Versionen miteinander vergleichen und die Änderungen zeigen. :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/huawei-mate-20-pro-emui-10-beta-anmeldung-geoeffnet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">791</post-id>	</item>
		<item>
		<title>Terminal Prompt mittels Powerline &#8222;schöner machen&#8220;</title>
		<link>https://johann.gr/terminal-prompt-mittels-powerline-schoener-machen/</link>
					<comments>https://johann.gr/terminal-prompt-mittels-powerline-schoener-machen/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Fri, 24 May 2019 16:12:57 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[iterm]]></category>
		<category><![CDATA[iterm2]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[powerline]]></category>
		<category><![CDATA[powerline-shell]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=717</guid>

					<description><![CDATA[In diesem Artikel zeige ich kurz, wie ich meinen Prompt aufgehübscht habe. Ich habe mich auch eine zeitlang an ZSH probiert, bin dann aber aus Gründen dann doch zurück zur Bash. Als Terminal nutze ich auf meinem Mac iTerm2. Ich möchte hier noch warnend erwähnen, dass dies keine Step-to-step-Anleitung wird, der ihr per Copy &#38; [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>In diesem Artikel zeige ich kurz, wie ich meinen Prompt aufgehübscht habe. Ich habe mich auch eine zeitlang an ZSH probiert, <s>bin dann aber aus Gründen dann doch zurück zur Bash</s>. Als Terminal nutze ich auf meinem Mac <a href="https://www.iterm2.com/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">iTerm2</a>.</p>



<span id="more-717"></span>



<p>Ich möchte hier noch warnend erwähnen, dass dies keine Step-to-step-Anleitung wird, der ihr per Copy &amp; Paste &#8222;folgen&#8220; könnt. Um die Installation müsstet ihr euch selbst kümmern, sollte aber kein Problem darstellen. :)</p>



<h3 class="wp-block-heading"><strong>Schritt 1 &#8211; die Powerline-Shell</strong></h3>



<p>Los geht&#8217;s mit der <a href="https://github.com/b-ryan/powerline-shell" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Installation der Powerline-Shell</a> inklusive der <a href="https://github.com/Lokaltog/powerline-fonts" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">dazugehörigen Fonts</a>. Voraussetzung hier ist u. a. Python. Die Installtions-Schritte sind in der README.md auf Github verlinkt.</p>



<p><strong>Update:</strong> <a href="https://github.com/romkatv/powerlevel10k" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">https://github.com/romkatv/powerlevel10k</a></p>



<h3 class="wp-block-heading">Schritt 2 &#8211; ein neues Theme hinzufügen</h3>



<p>Ein recht beliebtes Theme, auch für ZSH, ist <a href="https://github.com/speedenator/agnoster-bash" data-wpel-link="external" target="_blank" rel="external noopener noreferrer"><strong>Agnoster</strong></a>. Auch für ZSH habe ich dieses Theme gerne genutzt, so auch also jetzt auch (wieder) mit der Bash.</p>



<h3 class="wp-block-heading">Schritt 3 &#8211; iTerm2 Farbschema ändern</h3>



<p>Zu guter Letzt wird in iTerm noch das Farbschema angepasst. Ich nutze hier <strong>Argonaut</strong>, welches nicht standardmäßig mit dabei ist aber ebenfalls <a href="https://github.com/mbadolato/iTerm2-Color-Schemes" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">auf Github</a> zu haben ist.<br>Geändert werden kann das Farbschema, sobald es installiert ist, unter den Einstellungen (<em>⌘ + i</em>) -&gt; Colors.</p>



<p>So. Das dürft&#8217;s dann auch schon wieder gewesen sein. Das Ergebnis ist dann folgendes:</p>



<figure class="wp-block-image"><img data-recalc-dims="1" loading="lazy" decoding="async" width="740" height="358" data-attachment-id="723" data-permalink="https://johann.gr/terminal-prompt-mittels-powerline-schoener-machen/bildschirmfoto-2019-05-24-um-16-14-37/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/05/Bildschirmfoto-2019-05-24-um-16.14.37.png?fit=817%2C395&amp;ssl=1" data-orig-size="817,395" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="iTerm2 Powerline Shell" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/05/Bildschirmfoto-2019-05-24-um-16.14.37.png?fit=300%2C145&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2019/05/Bildschirmfoto-2019-05-24-um-16.14.37.png?fit=740%2C358&amp;ssl=1" src="https://i0.wp.com/johann.gr/wp-content/uploads/2019/05/Bildschirmfoto-2019-05-24-um-16.14.37.png?resize=740%2C358&#038;ssl=1" alt="" class="wp-image-723" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2019/05/Bildschirmfoto-2019-05-24-um-16.14.37.png?w=817&amp;ssl=1 817w, https://i0.wp.com/johann.gr/wp-content/uploads/2019/05/Bildschirmfoto-2019-05-24-um-16.14.37.png?resize=300%2C145&amp;ssl=1 300w, https://i0.wp.com/johann.gr/wp-content/uploads/2019/05/Bildschirmfoto-2019-05-24-um-16.14.37.png?resize=768%2C371&amp;ssl=1 768w" sizes="auto, (max-width: 740px) 100vw, 740px" /></figure>



<p>Das schöne: Soetwas wie <a href="https://github.com/magicmonty/bash-git-prompt" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Bash-Git-Prompt </a>bringt die Powerline-Shell direkt mit, darum braucht ihr euch also nicht zusätzlich zu kümmern. Ich bin mit diesem Setup aktuell recht zufrieden und werde dieses wohl auch noch eine ganze Zeit beibehalten. &#x1f607;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/terminal-prompt-mittels-powerline-schoener-machen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">717</post-id>	</item>
		<item>
		<title>ZTE: Axon 7 und das Update-Chaos</title>
		<link>https://johann.gr/zte-axon-7-und-das-update-chaos/</link>
					<comments>https://johann.gr/zte-axon-7-und-das-update-chaos/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Wed, 05 Apr 2017 10:05:03 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[a2017g]]></category>
		<category><![CDATA[a2017u]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[axon 7]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[marshmallow]]></category>
		<category><![CDATA[nougat]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[verschlüsselung]]></category>
		<category><![CDATA[zte]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=616</guid>

					<description><![CDATA[Ich habe mir ja das Axon 7 von ZTE geholt und war eigentlich immer recht zufrieden. Zwar gab es immer einige Probleme, beispielsweise dass von Anfang an die Verschlüsselung gefehlt hat und andere &#8222;Kleinigkeiten&#8220;, die Software lief aber und das Gerät funktionierte. Die Hardware ist für diesen Preis auch ziemlich in Ordnung, an sich ein [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Ich habe mir ja das Axon 7 von ZTE geholt und war eigentlich immer recht zufrieden. Zwar gab es immer einige Probleme, beispielsweise dass von Anfang an die Verschlüsselung gefehlt hat und andere &#8222;Kleinigkeiten&#8220;, die Software lief aber und das Gerät funktionierte. Die Hardware ist für diesen Preis auch ziemlich in Ordnung, an sich ein tolles Gerät.</p>
<p>Leider gibt es aber doch einige &#8222;Problemchen&#8220;, die ZTE bei der G-Version (Europa) nicht in den Griff zu bekommen scheint&#8230;</p>
<p><span id="more-616"></span></p>
<p>Im März lieferte ZTE beispielsweise Android 7.0 für das Axon 7, nicht aber per OTA, <a href="https://www.facebook.com/ZTE.Mobile.Deutschland/photos/a.471435312885647.119536.444653955563783/1675106685851831/?type=3" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">sondern via ZIP zum selber flashen</a>. Hier gab es dann auch noch ein paar Probleme, weshalb man den Download der ZIP sperrte und auf den nächsten Tag verschob &#8211; fanden viele nicht so cool, hätte man besser machen können. Dann folgte Ende März schon bald das Update auf <a href="https://www.facebook.com/ZTE.Mobile.Deutschland/photos/a.471435312885647.119536.444653955563783/1689816364380863/?type=3" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Android 7.1 mit den letzten Sicherheits-Patches</a> und unter anderem Daydream-Unterstützung.</p>
<p>Angekündigt wurde das 7.1-Update auf Facebook folgendermaßen:</p>
<blockquote><p>Guten Tag an alle Axon 7 Freunde!<br />
Nachdem euch unser letztes Stückchen Nougat nicht ganz so gut geschmeckt hat, haben wir uns an die Rührschüssel gesetzt und werden bis zum 31.03 eine neue Geschmacksrichtung für euer Axon 7 zur Verfügung stellen!</p>
<p>-Geschmacksrichtung: Nougat 7.1.1<br />
-Stand des Sicherheitsupdates: März 2017<span class="text_exposed_show"><br />
-Google Daydream zertifiziert<br />
-Verteilung wird über FOTA erfolgen</span></p>
<div class="text_exposed_show">
<p>Wir informieren euch, sobald wir mit der Verteilung starten!<br />
America first, Germany second!</p>
</div>
</blockquote>
<p>Tja, ZTE. Hier scheint man sich aber leider verrührt zu haben, denn dieses Stückchen Nougat schmeckt leider weniger gut als das vorherige&#8230;</p>
<p>Ein Problem auch: die Verschlüsselung. Hier wurde <a href="http://www.ztemobile.de/forums/topic/verschluesselung-axon-7/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">im Forum immer auf das nächste Update vertröstet</a>, bis die Verschlüsselung endlich mit 7.1 Einzug halten sollte &#8211; oder doch nicht? Nein, leider nicht. Was kam, ist ein Eintrag in den Einstellungen:</p>
<p><a href="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?ssl=1" data-wpel-link="exclude"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="617" data-permalink="https://johann.gr/zte-axon-7-und-das-update-chaos/01_encryption/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?fit=1440%2C2560&amp;ssl=1" data-orig-size="1440,2560" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="01_encryption" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?fit=169%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?fit=576%2C1024&amp;ssl=1" class="aligncenter size-medium wp-image-617" src="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?resize=169%2C300&#038;ssl=1" alt="" width="169" height="300" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?resize=169%2C300&amp;ssl=1 169w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?resize=768%2C1365&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?resize=576%2C1024&amp;ssl=1 576w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/01_encryption.jpg?w=1440&amp;ssl=1 1440w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>Der Eintrag &#8222;Smartphone verschlüsseln&#8220; ist rein informativ, kann nicht geklickt werden. Witzigerweise wird hier zwar vorgegaukelt, das Smartphone sei verschlüsselt, was aber nicht der Fall ist &#8211; wenn man davon ausgeht, dass das Smartphone beim booten erst per Passwort entschlüsselt werden muss, um auf die Dateien zuzugreifen. Einen weiteren Punkt für die Verschlüsselung sucht man in den Einstellungen vergebens. Über Umwege aber schafft man es, die Einstellungen zur Verschlüsselung (<em>.Settings$CryptKeeperSettingsActivity</em>) zu öffnen, was einen zu folgendem führt:</p>
<p><a href="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?ssl=1" data-wpel-link="exclude"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="618" data-permalink="https://johann.gr/zte-axon-7-und-das-update-chaos/02_encryption/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?fit=1440%2C2560&amp;ssl=1" data-orig-size="1440,2560" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="02_encryption" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?fit=169%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?fit=576%2C1024&amp;ssl=1" class="aligncenter size-medium wp-image-618" src="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?resize=169%2C300&#038;ssl=1" alt="" width="169" height="300" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?resize=169%2C300&amp;ssl=1 169w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?resize=768%2C1365&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?resize=576%2C1024&amp;ssl=1 576w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/02_encryption.jpg?w=1440&amp;ssl=1 1440w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>In obigem Screenshot ist der Button nicht klickbar, da mein Akkustand zu niedrig ist und nicht am Ladegerät hängt. Ok, so weit so gut. Das Problem: Der Button wird mit vollem Akku und am Netzteil zwar klickbar, alles was dann aber passiert ist ein Neustart des Geräts &#8211; eine Verschlüsselung erfolgt nicht&#8230;</p>
<p>Auch &#8222;witzig&#8220;: Man wollte das 7.1er-Update wohl ein bisschen voreilig liefern (man munkelt, es handelt sich hier auch nur um eine leicht geänderte Beta der U-Version, die übrigens in Sachen Updates weit besser zu funktionieren scheint&#8230;) und hat die Google-Zertifizierung nicht mehr abgewartet. Ist zwar erstmal kein Problem, dennoch unschön:</p>
<p><a href="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?ssl=1" data-wpel-link="exclude"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="619" data-permalink="https://johann.gr/zte-axon-7-und-das-update-chaos/03_playstore/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?fit=1440%2C2560&amp;ssl=1" data-orig-size="1440,2560" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="03_playstore" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?fit=169%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?fit=576%2C1024&amp;ssl=1" class="aligncenter size-medium wp-image-619" src="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?resize=169%2C300&#038;ssl=1" alt="" width="169" height="300" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?resize=169%2C300&amp;ssl=1 169w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?resize=768%2C1365&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?resize=576%2C1024&amp;ssl=1 576w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/03_playstore.jpg?w=1440&amp;ssl=1 1440w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>Und die restlichen Bugs des letzen 7.1er-Updates:</p>
<ul>
<li>In den Einstellungen -&gt; Konten fehlen sämliche Konten, hier wird nur noch das Google-Konto aufgeführt.</li>
<li>Whatsapp hat an einigen Ecken Probleme, vor allem mit der In-App-Kamera.</li>
<li>Updates im PlayStore funktionieren nicht richtig mit der aktuellen PlayStore-Version, hier wird lediglich die Meldung &#8222;Auf Netzwerk warten&#8230;&#8220; angezeigt.</li>
<li>der WLAN-Switch in den Quick-Settings zeigt manchmal &#8222;on&#8220;, obwohl WLAN deaktiviert ist.</li>
<li>&#8230;</li>
</ul>
<p>Wie man sieht, verstecken sich hier einige Bugs, die nicht nur vereinzelt auftreten, was man schnell merkt, wenn man <a href="http://www.ztemobile.de/forums/forum/zte-axon-serie-forum/zte-axon-7-forum/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">einen Blick in&#8217;s ZTE-Forum wirft</a>. Dort ist sogar <a href="http://www.ztemobile.de/forums/topic/spyware-in-zte-android-7-1-1-update/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">von Spyware die Rede</a>.</p>
<p>Wie gesagt, die Hardware des Axon 7 ist wirklich top, hier kann man nicht meckern. Bringt aber leider auch nur wenig, wenn die Software Müll ist. <a href="http://stadt-bremerhaven.de/zte-axon-7-warum-ihr-nach-moeglichkeit-noch-die-finger-vom-7-1-1er-update-lassen-solltet/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Auf Caschy&#8217;s Blog</a> wird auch schon vor dem Update &#8222;gewarnt&#8220;.</p>
<p>Glücklicherweise wird ja parallel an <a href="https://download.lineageos.org/axon7" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">LineageOS für&#8217;s Axon 7</a> gearbeitet, hier hoffe ich auf eine baldige Stable-Version, damit ich mir dies nicht mehr antun muss&#8230; Zum Abschluss hier noch meine Update-Historie bis heute:<a href="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?ssl=1" data-wpel-link="exclude"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="620" data-permalink="https://johann.gr/zte-axon-7-und-das-update-chaos/04_updates/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?fit=1440%2C2560&amp;ssl=1" data-orig-size="1440,2560" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="04_updates" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?fit=169%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?fit=576%2C1024&amp;ssl=1" class="aligncenter size-medium wp-image-620" src="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?resize=169%2C300&#038;ssl=1" alt="" width="169" height="300" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?resize=169%2C300&amp;ssl=1 169w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?resize=768%2C1365&amp;ssl=1 768w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?resize=576%2C1024&amp;ssl=1 576w, https://i0.wp.com/johann.gr/wp-content/uploads/2017/04/04_updates.jpg?w=1440&amp;ssl=1 1440w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/zte-axon-7-und-das-update-chaos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">616</post-id>	</item>
		<item>
		<title>Cheat Sheet: Dateien unter Linux komprimieren</title>
		<link>https://johann.gr/cheat-sheet-dateien-unter-linux-komprimieren/</link>
					<comments>https://johann.gr/cheat-sheet-dateien-unter-linux-komprimieren/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Mon, 20 Feb 2017 12:01:21 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[archiv]]></category>
		<category><![CDATA[bzip]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[komprimieren]]></category>
		<category><![CDATA[packen]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[zip]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=606</guid>

					<description><![CDATA[Es soll ja immer wieder vorkommen, dass man unter Linux beispielsweise größere Logs o. ä. komprimieren möchte. Hier ein kleines Cheat sheet, welches einige Möglichkeiten kurz und knapp aufzeigt. :) Komprimieren (packen) Cmd Beschreibung Beispiele gzip {filename} Ersetzt die ursprüngliche Datei mit einer komprimierten Datei mit der Endung .gz. Eignet sich für z. B. einzelne [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Es soll ja immer wieder vorkommen, dass man unter Linux beispielsweise größere Logs o. ä. komprimieren möchte. Hier ein kleines Cheat sheet, welches einige Möglichkeiten kurz und knapp aufzeigt. :)</p>
<p><span id="more-606"></span></p>
<p><strong>Komprimieren (packen)</strong></p>
<table width="100%" cellspacing="0" cellpadding="4">
<colgroup>
<col width="85*" />
<col width="85*" />
<col width="85*" /> </colgroup>
<tbody>
<tr valign="top">
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Cmd</span></td>
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Beschreibung</span></td>
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Beispiele</span></td>
</tr>
<tr valign="top">
<td width="33%"><a href="https://de.wikipedia.org/wiki/Gzip" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">gzip</a> {filename}</td>
<td width="33%">Ersetzt die ursprüngliche Datei mit einer komprimierten Datei mit der Endung .gz. Eignet sich für z. B. einzelne Dateien/Logfiles.</td>
<td width="33%">gzip mein.log</p>
<p>gzip *.log</td>
</tr>
<tr valign="top">
<td width="33%"><a href="https://de.wikipedia.org/wiki/Bzip2" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">bzip2</a> {filename}</td>
<td width="33%">Ähnlich gzip für einzelne Dateien, nutzt aber einen anderen Algorithmus. Kompression ist besser als bzip.</td>
<td width="33%">bzip2 mein.log</p>
<p>bzip2 *.log</td>
</tr>
<tr valign="top">
<td width="33%"><a href="https://de.wikipedia.org/wiki/ZIP-Dateiformat" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">zip</a> {.zip-file} {files}</td>
<td width="33%">Zip komprimiert und packt die Dateien in ein Archiv. Wenn gewünscht auch mehrere in ein Archiv.</td>
<td width="33%">zip archiv.zip mein.log</p>
<p>zip archiv.zip *.log</td>
</tr>
<tr valign="top">
<td width="33%"><a href="https://de.wikipedia.org/wiki/Tar" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">tar</a> -zcvf {.tgz-file} {files}</p>
<p>tar -jcvf {.tbz2-file} {files}</td>
<td width="33%">GNU tar erstellt wie ZIP Archive, kann aber auch zum komprimieren genutzt werden. Unterstützt werden sowohl die Komrpimierung durch gzip und bzip2.</td>
<td width="33%">tar -zcvf archiv.tgz *.log</p>
<p>tar -zcvf urlaubsbilder.tar.gz *.jpg *.jpeg *.png</p>
<p>tar -jcvf logs.tbz2 *.log</td>
</tr>
</tbody>
</table>
<hr />
<p><strong>Dekomprimieren (entpacken)</strong></p>
<table width="100%" cellspacing="0" cellpadding="4">
<colgroup>
<col width="85*" />
<col width="85*" />
<col width="85*" /> </colgroup>
<tbody>
<tr valign="top">
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Cmd</span></td>
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Beschreibung</span></td>
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Beispiele</span></td>
</tr>
<tr valign="top">
<td width="33%">gzip -d {.gz-file}</p>
<p>gunzip {.gz-file}</td>
<td width="33%">GZIP-Komprimierte Dateien entpacken. Stellt die ursprüngliche Datei wieder her.</td>
<td width="33%">gzip -d mein.log.gz</p>
<p>gunzip mein.log.gz</td>
</tr>
<tr valign="top">
<td width="33%">bzip2 -d {.bz2-file}</p>
<p>bunzip2 {.bz2-file}</td>
<td width="33%">Bzip2-Komprimierte Dateien entpacken.</td>
<td width="33%">bzip2 -d mein.log</p>
<p>bunzip2 mein.log</td>
</tr>
<tr valign="top">
<td width="33%">unzip {.zip-file}</td>
<td width="33%">Um ZIP-Archive zu entpacken wird das „unzip“-Kommando genutzt.</td>
<td width="33%">unzip archiv.zip</td>
</tr>
<tr valign="top">
<td width="33%">Tar -zxvf {.tgz-file}</p>
<p>tar -jxvf {.tbz2-file}</td>
<td width="33%">Tar-Archive entpacken.</td>
<td width="33%">tar -zxvf archiv.tgz</p>
<p>tar -zxvf urlaubsbilder.tar.gz</p>
<p>tar -jxvf logs.tbz2</td>
</tr>
</tbody>
</table>
<hr />
<p><strong>Archivinhalte anzeigen</strong></p>
<table width="100%" cellspacing="0" cellpadding="4">
<colgroup>
<col width="85*" />
<col width="85*" />
<col width="85*" /> </colgroup>
<tbody>
<tr valign="top">
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Cmd</span></td>
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Beschreibung</span></td>
<td bgcolor="#dddddd" width="33%"><span style="color: #000000;">Beispiele</span></td>
</tr>
<tr valign="top">
<td width="33%">gzip -l {.gz-file}</td>
<td width="33%">Inhalte eines gzip-Archives anzeigen.</td>
<td width="33%">gzip -l mein.log.gz</td>
</tr>
<tr valign="top">
<td width="33%">unzip -l {.zip-file}Inhalte eines gzip-Archives anzeigen.</td>
<td width="33%">Inhalte eines zip-Archives anzeigen.</td>
<td width="33%">unzip -l archiv.zip</td>
</tr>
<tr valign="top">
<td width="33%">tar -ztvf {.tgz-file}</p>
<p>tar -jtvf {.tbz2-file}</td>
<td width="33%">Inhalte eines tar-Archives anzeigen.</td>
<td width="33%">tar -ztvf archiv.tgz</p>
<p>tar -ztvf urlaubsbilder.tar.gz</p>
<p>tar -jtvf logs.tbz2</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Was hier jetzt nicht behandelt wird, sind die jeweils genutzten Algorithmen oder andere, tiefere Details. Hierzu können aber jederzeit gerne die Manpages der jeweiligen Tools durchstöbert werden. ;)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/cheat-sheet-dateien-unter-linux-komprimieren/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">606</post-id>	</item>
		<item>
		<title>Spotify, der SSD-Killer? Und was man dagegen tun kann.</title>
		<link>https://johann.gr/spotify-der-ssd-killer-und-was-man-dagegen-tun-kann/</link>
					<comments>https://johann.gr/spotify-der-ssd-killer-und-was-man-dagegen-tun-kann/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Thu, 10 Nov 2016 16:32:47 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[festplatte]]></category>
		<category><![CDATA[i/o]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[ramdisk]]></category>
		<category><![CDATA[spotify]]></category>
		<category><![CDATA[ssd]]></category>
		<category><![CDATA[workaround]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=515</guid>

					<description><![CDATA[Wie es scheint, ist in der Spotify-App für Windows, OS X und Linux momentan ein Bug begraben, der euch im schlimmsten Fall eure SSD killt. Der Grund hierfür ist, dass die App wohl massenhaft Daten schreibt, was nicht nötig wäre (für einige Stunden Musikgenuss können hier wohl gut und gerne mehrere GB geschrieben werden&#8230;). Wirklich [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://community.spotify.com/t5/Ongoing-Issues/Major-I-O-write-bytes-on-the-Spotify-Desktop-app-It-will-kill/idc-p/1365378#M25879" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Wie es scheint</a>, ist in der Spotify-App für <i class="wp-svg-windows windows"></i> Windows, <i class="wp-svg-apple apple"></i> OS X und <i class="wp-svg-tux tux"></i> Linux momentan ein Bug begraben, der euch im schlimmsten Fall <a href="https://www.mobilegeeks.de/news/spotify-schreddert-eventuell-eure-festplatte/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">eure SSD killt</a>. Der Grund hierfür ist, dass die App wohl massenhaft Daten schreibt, was nicht nötig wäre (für einige Stunden Musikgenuss können hier wohl gut und gerne <a href="https://www.mobilegeeks.de/news/spotify-schreddert-eventuell-eure-festplatte/#comment-2995206098" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">mehrere GB</a> geschrieben werden&#8230;). Wirklich &#8222;schlimm&#8220; ist dies aber, wenn man nur eine SSD in seinem PC oder Notebook nutzt, da diese dann im schlimmsten Fall relativ flott abraucht &#8211; vor allem ältere Modelle.</p>
<p>Seit heute sollte hierfür wohl ein Update verfügbar sein, welches aber &#8211; anscheinend &#8211; nicht wirklich Abhilfe schafft. Glücklicherweise gibt es aber, solltet ihr auf die Spotify-App auf eurem PC nicht verzichten können oder wollen, einen <a href="http://blog.scaleprocess.net/spotify-heavy-io-problem/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Workaround</a> (für <i class="wp-svg-windows windows"></i>).</p>
<p><span id="more-515"></span></p>
<p>Der Workaround beschreibt das Anlegen einer RAM-Disk, heißt, statt auf der Festplatte wird die Spotify-Datenbank im RAM gespeichert. Für Windows wird das Ganze im oben verlinkten Workaround mithilfe des Programms &#8222;ImDisk&#8220; beschrieben. Wie Ihr eine solche RAM-Disk mit <del>OS X</del> MacOS bzw. Linux anlegt, beschreibe ich euch jetzt &#8230; :)</p>
<p>Mit MacOS ist es relativ easy über&#8217;s Terminal:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="shell">diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://8388608`</pre>
<p>Dieser Befehl legt euch eine 4GB (4096*2048 = 8388608) große RAM-Disk an, was wohl ausreichen sollte &#8211; getestet habe ich es nicht.</p>
<p>Auch bei Linux &#8211; genauer Debian bzw. Ubuntu &#8211; läuft es ebenfalls recht easy über&#8217;s Terminal. Eine Möglichkeit ist beispielsweise mit <a href="https://de.wikipedia.org/wiki/Tmpfs" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">tmpfs</a>:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="shell">sudo mkdir /mnt/ramdisk &amp;&amp;
sudo chmod 777 /mnt/ramdisk &amp;&amp;
sudo mount -t tmpfs -o size=4G none /mnt/ramdisk</pre>
<p>Wenn bei tmpfs die RAM-Disk &#8222;voll&#8220; ist, lagert dieses aber die Dateien in den <a href="https://de.wikipedia.org/wiki/Swapping" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Swap</a> aus, nutzt also wieder die Festplatte&#8230; Eine alternative wäre <a href="https://de.wikipedia.org/wiki/Ramfs" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">ramfs</a>, was euch aber im blödsten Fall den kompletten RAM vollschaufelt.</p>
<p>Auf diese RAM-Disk könnt ihr das schuldige Verzeichnis dann auslagern und per Symlink (<em>ln -s</em>) dahin verlinken, wo sie hin gehört. Fertig. Nach einem Neustart gehen diese Daten auf der RAM-Disk natürlich verloren &#8211; dies sollte aber kein Problem sein.</p>
<p>Dies soll keine endgültige Lösung sondern einen Workaround darstellen, bis Spotify dieses Problem wirklich fixt. ;)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/spotify-der-ssd-killer-und-was-man-dagegen-tun-kann/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">515</post-id>	</item>
		<item>
		<title>&#8222;Bulk-SCP&#8220; an mehrere Server</title>
		<link>https://johann.gr/bulk-scp-an-mehrere-server/</link>
					<comments>https://johann.gr/bulk-scp-an-mehrere-server/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Thu, 20 Oct 2016 16:28:10 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[multi host]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[tipp]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=506</guid>

					<description><![CDATA[Kurzer Beitrag für Linux-Neulinge, die &#8211; warum auch immer &#8211; eine Datei via SCP auf mehrere Server übertragen möchten. Lässt sich recht easy mit einer Schleife realisieren: for node in $(&#60;hostlist.txt); do scp meineDatei.tgz ${node}:~/ done In die hostlist.txt kommt dann eine Auflistung der Rechner, ggf. mit vorangestelltem User, also johann@srv01. Over and out! :) ]]></description>
										<content:encoded><![CDATA[<p>Kurzer Beitrag für Linux-Neulinge, die &#8211; warum auch immer &#8211; eine Datei via SCP auf mehrere Server übertragen möchten.</p>
<p>Lässt sich recht easy mit einer Schleife realisieren:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="shell">for node in $(&lt;hostlist.txt); do
  scp meineDatei.tgz ${node}:~/
done</pre>
<p>In die <code>hostlist.txt</code> kommt dann eine Auflistung der Rechner, ggf. mit vorangestelltem User, also <code>johann@srv01</code>.</p>
<p>Over and out! :) <i class="wp-svg-tux tux"></i></p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/bulk-scp-an-mehrere-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">506</post-id>	</item>
		<item>
		<title>Snapchat-Klon: Instagram Stories vorgestellt!</title>
		<link>https://johann.gr/snapchat-klon-instagram-stories-vorgestellt/</link>
					<comments>https://johann.gr/snapchat-klon-instagram-stories-vorgestellt/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Wed, 03 Aug 2016 15:36:37 +0000</pubDate>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[bilder]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[instagram]]></category>
		<category><![CDATA[snapchat]]></category>
		<category><![CDATA[stories]]></category>
		<category><![CDATA[teilen]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=491</guid>

					<description><![CDATA[Ich weiß nicht, wie&#8217;s euch geht, aber auf Instagram lade ich &#8211; leider &#8211; nur noch ziemlich selten Bilder hoch. Grund? Snapchat. Wahrscheinlich bei vielen so, wie auch Statistiken zeigen&#8230; &#x1f60f; Kann Facebook bzw. Instagram sich ja nicht gefallen lassen, also hat man Snapchat kurzerhand nachgebaut &#8211; nennt sich dann &#8222;Instagram Stories&#8220;. Instagram selbst beschreibt die neue [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Ich weiß nicht, wie&#8217;s euch geht, aber auf Instagram lade ich &#8211; leider &#8211; nur noch ziemlich selten Bilder hoch. Grund? Snapchat.</p>
<p>Wahrscheinlich bei vielen so, wie auch Statistiken zeigen&#8230; &#x1f60f; Kann Facebook bzw. Instagram sich ja nicht gefallen lassen, also hat man Snapchat kurzerhand nachgebaut &#8211; nennt sich dann &#8222;Instagram Stories&#8220;. Instagram selbst beschreibt die neue Funktion folgendermaßen:</p>
<blockquote><p>Einführung von Instagram Stories, eine neue Funktion, mit der du alle Momente deines Tages teilen kannst und nicht nur jene, die du in deinem Profil behalten möchtest. Wenn du mehrere Fotos und Videos teilst, werden sie zusammen als Slideshow dargestellt – deine Story.<br />
Du kannst mehrere Fotos und Videos in deiner Story teilen. Erwecke sie mit Text und Zeichentools zum Leben. Nach 24 Stunden werden sie ausgeblendet und nicht mehr in deinem Profil oder deinem Feed angezeigt.</p></blockquote>
<p><span id="more-491"></span></p>
<p>Wie gesagt &#8211; ein Snapchat-Klon. Kommt aber vermutlich (zu?) spät, aber mal sehen, wie sich das noch entwickelt. Ich bin gespannt&#8230; Snapchat hat hier aber einen riesen Vorsprung, was beispielsweise <a title="Mein eigener Snapchat-Geofilter!" href="https://johann.gr/mein-eigener-snapchat-geofilter/" data-wpel-link="internal">Geofilter</a> oder die Masken-Filter betrifft. Letzteres könnte Facebook aber mit dem <a href="http://msqrd.me/joining-facebook.html" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">übernommenen Dienst Masquerade (MSQRD)</a> wett machen. Wie gesagt &#8211; abwarten, was hier noch kommt. :)</p>
<p style="text-align: center;"><center>
<div data-mode="lazyload" data-provider="vimeo" id="arve-vimeo-177180549" class="arve">
	<div class="arve-inner">
		<div class="arve-embed arve-embed--has-aspect-ratio">
			<div class="arve-ar" style="padding-top:56.250000%"></div>
			<noscript class="arve-noscript"><iframe allow="accelerometer &apos;none&apos;;autoplay;bluetooth &apos;none&apos;;browsing-topics &apos;none&apos;;camera &apos;none&apos;;clipboard-read &apos;none&apos;;clipboard-write;display-capture &apos;none&apos;;encrypted-media &apos;none&apos;;gamepad &apos;none&apos;;geolocation &apos;none&apos;;gyroscope &apos;none&apos;;hid &apos;none&apos;;identity-credentials-get &apos;none&apos;;idle-detection &apos;none&apos;;keyboard-map &apos;none&apos;;local-fonts;magnetometer &apos;none&apos;;microphone &apos;none&apos;;midi &apos;none&apos;;otp-credentials &apos;none&apos;;payment &apos;none&apos;;picture-in-picture;publickey-credentials-create &apos;none&apos;;publickey-credentials-get &apos;none&apos;;screen-wake-lock &apos;none&apos;;serial &apos;none&apos;;summarizer &apos;none&apos;;sync-xhr;usb &apos;none&apos;;web-share;window-management &apos;none&apos;;xr-spatial-tracking &apos;none&apos;;" allowfullscreen="" class="arve-iframe fitvidsignore" credentialless data-arve="arve-vimeo-177180549" data-lenis-prevent="" data-src-no-ap="https://player.vimeo.com/video/177180549?html5=1&amp;title=0&amp;byline=0&amp;portrait=0&amp;autoplay=0" frameborder="0" height="0" loading="eager" name="" referrerpolicy="strict-origin-when-cross-origin" sandbox="allow-scripts allow-same-origin allow-presentation allow-popups allow-popups-to-escape-sandbox allow-forms" scrolling="no" src="https://player.vimeo.com/video/177180549?html5=1&#038;title=0&#038;byline=0&#038;portrait=0&#038;autoplay=1" title="Snapchat-Klon: Instagram Stories vorgestellt!" width="0"></iframe></noscript>
			
		</div>
		
	</div>
	
	
	<script type="application/ld+json">{"@context":"http:\/\/schema.org\/","@id":"https:\/\/johann.gr\/snapchat-klon-instagram-stories-vorgestellt\/#arve-vimeo-177180549","type":"VideoObject","embedURL":"https:\/\/player.vimeo.com\/video\/177180549?html5=1&title=0&byline=0&portrait=0&autoplay=1","name":"Snapchat-Klon: Instagram Stories vorgestellt!","thumbnailUrl":"https:\/\/johann.gr\/wp-content\/uploads\/2016\/08\/instastories.png","uploadDate":"2016-08-03T17:36:37+02:00","description":"Ich wei\u00df nicht, wie's euch geht, aber auf Instagram lade ich - leider - nur noch ziemlich selten Bilder hoch. Grund? Snapchat. Wahrscheinlich bei vielen so, wie auch Statistiken zeigen...\u00a0&#x1f60f;\u00a0Kann Facebook bzw. Instagram sich ja nicht gefallen lassen, also hat man Snapchat kurzerhand nachgebau"}</script>
	
</div></center></p>
<div class="quelle"><span class="fa fa-sign-out" style="color:#222; margin-right:5px;" title="Quelle"></span>Quelle: <a href="http://blog.instagram.com/post/148348940287/160802-stories" target="_blank" data-wpel-link="external" rel="external noopener noreferrer">Instagram Blog</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/snapchat-klon-instagram-stories-vorgestellt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">491</post-id>	</item>
		<item>
		<title>ZTE Axon 7: Ab sofort in Deutschland vorbestellbar</title>
		<link>https://johann.gr/zte-axon-7-ab-sofort-in-deutschland-vorbestellbar/</link>
					<comments>https://johann.gr/zte-axon-7-ab-sofort-in-deutschland-vorbestellbar/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Mon, 25 Jul 2016 19:27:51 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[axon 2017]]></category>
		<category><![CDATA[axon 7]]></category>
		<category><![CDATA[deutschland]]></category>
		<category><![CDATA[kaufen]]></category>
		<category><![CDATA[mediamarkt]]></category>
		<category><![CDATA[saturn]]></category>
		<category><![CDATA[vorbestellen]]></category>
		<category><![CDATA[zte]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=484</guid>

					<description><![CDATA[Vor kurzem schrieb ich noch, dass es das ZTE Axon 7 in Deutschland nur in gold gäbe &#8211; Quelle hierfür war der ZTE-Support, welchen ich sowohl per Mail als auch Facebook-Nachricht gefragt habe. Tja. Dem ist nun wohl doch nicht so&#8230; Glücklicherweise. Ab sofort ist das Gerät nämlich in Deutschland vorbestellbar &#8211; in Gold und [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Vor kurzem schrieb ich noch, dass es das <a title="ZTE Axon 7: In Deutschland nur in Gold und mit gesperrtem Bootloader" href="https://johann.gr/zte-axon-7-in-deutschland-nur-in-gold-und-mit-gesperrtem-bootloader/" data-wpel-link="internal">ZTE Axon 7 in Deutschland nur in gold gäbe</a> &#8211; Quelle hierfür war der ZTE-Support, welchen ich sowohl per Mail als auch Facebook-Nachricht gefragt habe. Tja. Dem ist nun wohl doch nicht so&#8230;</p>
<p>Glücklicherweise. Ab sofort ist das Gerät nämlich in Deutschland vorbestellbar &#8211; in Gold und Grau. Preis? War bereits vorher bekannt: rund 450 Euro.</p>
<p><span id="more-484"></span></p>
<p><a href="http://amzn.to/29t3Z6b" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Bei Amazon</a> konnte man das Gerät bereits vor einiger Zeit vorbestellen, damals aber eben nur in Gold. Inzwischen ist es dort aber als &#8222;Derzeit nicht verfügbar&#8220; gelistet.</p>
<p>Heute gab ZTE Deutschland aber auf der eigenen Facebookseite bekannt, dass das Axon 7 ab sofort bei <a href="http://www.saturn.de/de/search.html?storeId=48352&amp;langId=-3&amp;searchProfile=onlineshop&amp;channel=sedede&amp;searchParams=&amp;path=&amp;query=Axon+7" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">Saturn</a> und <a href="http://www.mediamarkt.de/webapp/wcs/stores/servlet/MultiChannelSearch?storeId=48353&amp;langId=-3&amp;searchProfile=onlineshop&amp;channel=mmdede&amp;searchParams=&amp;path=&amp;query=ZTE+Axon+7" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">MediaMarkt</a> vorbestellbar ist:</p>
<p><center></p>
<p><iframe loading="lazy" style="border: none; overflow: hidden;" src="https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2FZTE.Mobile.Deutschland%2Fposts%2F1428892137139955%3A0&amp;width=500" width="500" height="514" frameborder="0" scrolling="no"></iframe></p>
<p></center></p>
<p>Wann das Gerät aber dann versandt wird (bzw. in der Filiale abgeholt werden kann, wenn gewünscht), geht leider nicht hervor. Dürfte aber Mitte August werden.</p>
<p>Ich kann&#8217;s kaum erwarten &#8211; außerdem macht&#8217;s mein OnePlus One echt nicht mehr lange, leider&#8230; Wird also Zeit, dass das Ding offiziell erhältlich ist! :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/zte-axon-7-ab-sofort-in-deutschland-vorbestellbar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">484</post-id>	</item>
		<item>
		<title>Update: Prisma AI-App auch für Android zu haben</title>
		<link>https://johann.gr/prisma-ai-app-auch-fuer-android-zu-haben/</link>
					<comments>https://johann.gr/prisma-ai-app-auch-fuer-android-zu-haben/#respond</comments>
		
		<dc:creator><![CDATA[Johann]]></dc:creator>
		<pubDate>Wed, 20 Jul 2016 14:50:41 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apk]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[prisma]]></category>
		<guid isPermaLink="false">https://johann.gr/?p=469</guid>

					<description><![CDATA[Nach Pokémon Go folgt nun die nächste &#8222;Hype-App&#8220;, auch wenn der Hype hier nicht ganz so groß wie bei Pokémon Go ist. Die App &#8222;Prisma&#8220; kennen aber sicher einige schon, war bis dato aber nur für&#8217;s iPhone verfügbar. Die App ist eigentlich recht flott erklärt: Man hat die Möglichkeit, ein Bild mit diversen Filtern zu [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Nach <a title="Pokémon Go: Internationaler Start &amp; spielen in Deutschland (APK download) (Update)" href="https://johann.gr/pokemon-go-internationaler-start-spielen-in-deutschland-apk-download/" data-wpel-link="internal">Pokémon Go</a> folgt nun die nächste &#8222;Hype-App&#8220;, auch wenn der Hype hier nicht ganz so groß wie bei Pokémon Go ist. Die App &#8222;Prisma&#8220; kennen aber sicher einige schon, war bis dato aber nur <a href="https://itunes.apple.com/app/id1122649984" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">für&#8217;s iPhone verfügbar</a>. Die App ist eigentlich recht flott erklärt: Man hat die Möglichkeit, ein Bild mit diversen Filtern zu versehen. Hier sind es aber keine &#8222;Instagram-Filter&#8220; sondern mehr künstlerische &#8211; ich denke am Beitragsbild gut zu erkennen.</p>
<p>Kann man sich mal anschauen&#8230; ;)</p>
<p><span id="more-469"></span></p>
<p>Momentan ist die App &#8211; normalerweise &#8211; nur für Beta-Tester verfügbar, die sich <a href="http://prisma-ai.com/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">auf der Webseite</a> in die Mailing-Liste eingetragen haben. Diese bekommen wohl nach und nach eine Einladung. Ich habe mich dort vor einiger Zeit schon eingetragen, bis dato aber noch keine Einladung bekommen.</p>
<p>Wer sich die App trotzdem schonmal anschauen möchte, kann sich die APK wie so oft <a href="https://www.apkmirror.com/apk/prisma-labs-inc/prisma-art-photo-editor/" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">bei APKMirror laden</a>.</p>
<p>Die Bilder werden übrigens nicht auf dem Smartphone direkt bearbeitet, sondern online. Heißt, euer Bild wird hochgeladen, bearbeitet und wieder heruntergeladen. Heißt auch, dass die App ohne aktive Internetverbindung natürlich nicht genutzt werden kann. Nur zur Info &#8211; wer dies warum auch immer nicht möchte, sollte die App nicht nutzen. Ich denke aber nicht, dass die Bilder lange auf den Servern gespeichert bleiben.</p>
<p><strong>Update 22.07.2016:<br />
</strong>Sieht so aus als hätte man der Beta-App nun einen Riegel vorgeschoben &#8211; momentan heißt es also, dass man, um die App nutzen zu können, auf das offizielle Release warten muss.</p>
<p><a href="https://i0.wp.com/johann.gr/wp-content/uploads/2016/07/Screenshot_PrismaAI.png?ssl=1" data-wpel-link="exclude"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="478" data-permalink="https://johann.gr/prisma-ai-app-auch-fuer-android-zu-haben/screenshot_prismaai/" data-orig-file="https://i0.wp.com/johann.gr/wp-content/uploads/2016/07/Screenshot_PrismaAI.png?fit=611%2C1086&amp;ssl=1" data-orig-size="611,1086" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot_PrismaAI" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/johann.gr/wp-content/uploads/2016/07/Screenshot_PrismaAI.png?fit=169%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/johann.gr/wp-content/uploads/2016/07/Screenshot_PrismaAI.png?fit=576%2C1024&amp;ssl=1" class="aligncenter wp-image-478 size-medium" src="https://i0.wp.com/johann.gr/wp-content/uploads/2016/07/Screenshot_PrismaAI.png?resize=169%2C300&#038;ssl=1" alt="Screenshot_PrismaAI" width="169" height="300" srcset="https://i0.wp.com/johann.gr/wp-content/uploads/2016/07/Screenshot_PrismaAI.png?resize=169%2C300&amp;ssl=1 169w, https://i0.wp.com/johann.gr/wp-content/uploads/2016/07/Screenshot_PrismaAI.png?resize=576%2C1024&amp;ssl=1 576w, https://i0.wp.com/johann.gr/wp-content/uploads/2016/07/Screenshot_PrismaAI.png?w=611&amp;ssl=1 611w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p><strong>Update 24.07.2016:</strong></p>
<p>Nachdem die inoffizielle Beta vor kurzem geblockt wurde, haben die Entwickler hinter der App eben den offiziellen Start im Google Play Store verkündet &#8211; die App kann nun also offiziell auch <a href="https://play.google.com/store/apps/details?id=com.neuralprisma" data-wpel-link="external" target="_blank" rel="external noopener noreferrer">für Android herunterladen</a> werden :)</p>
<p><iframe loading="lazy" src="https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2Fgetprisma%2Fposts%2F1230413196982430%3A0&#038;width=500" width="500" height="627" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true"></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>https://johann.gr/prisma-ai-app-auch-fuer-android-zu-haben/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">469</post-id>	</item>
	</channel>
</rss>
