Zum Inhalt springen →

jentsch.io Beiträge

Datenbank-Analyse mit SchemaSpy

SchemaSpy ist ein Java-basiertes Kommandozeilen-Programm zur Datenbank-Analyse. Mit SchemaSpy kann man ein visuelles Abbild einer Datenbank in Form von HTML Dokumenten erstellen. Damit können die Tabellen, Spalten und Relationen einer Datenbank schnell und einfach dokumentiert werden. Wie funktioniert SchemaSpy SchemaSpy funktioniert mit allen Datenbanken die JDBC und SQL-92 Standard unterstützen. Darunter fallen unter anderen Oracle, MySQL, DB2, SQLite, H2 und viele mehr. Als Basis für die extrahierten Informationen dient das INFORMATION_SCHEMA der im SQL-92 Standard definiert, wie RDBMS-Datenbanken die Schema-Informationen mit seinen Wörterbuchtabellen implementieren soll. Und tatsächlich implementieren die meisten RDBMS-Datenbanken Teile der Standardspezifikation so dass eine Datenbank-Analyse mit SchemaSpy möglich wird, ohne für jedes DMBS eine eigene Methode implementiert werden muss, die Daten abzufragen. Über SchemaSpy SchemaSpy liegt aktuell…

Kommentare sind geschlossen.

Flight rules for Git

Git ist ein leistungsfähiges Werkzeug zur verteilten Versionsverwaltung von Dateien. Es wird häufig (eigentlich immer) von Entwicklern und Programmierern auf der ganzen Welt verwendet und es ist von großem Vorteil, sich mit dieser Technologie vertraut zu machen. Das komplette Git Wissen kann im Buch „Pro Git“ unter https://git-scm.com/book/de/v2 nachgelesen werden. Der gesamte Inhalt ist unter der Creative Commons Attribution Non Commercial Share Alike 3.0 Lizenz lizenziert, kann aber auch als gedruckte Version des Buchs auf Amazon gekauft werden. Neben der deutschen Version ist das Pro Git Buch auch in diversen anderen Sprachen abrufbar (z.B. English, Deutsch, Español, Français, Nederlands, etc.). Ein großes Problem für Anfänger und Fortgeschrittene ist immer die korrekte Nutzung der verfügbaren Git Befehle. Man kann in dem…

Kommentare sind geschlossen.

So ändert man programmatisch das App-Icon und den Namen der Android-App

Bei einer Android wird das das Icon einer App normalerweise im AndroidManifest definiert und ändert sich bis zum nächsten Update der App nicht mehr. Es gibt aber Möglichkeiten, das App Icon und den App Namen zu ändern, ohne dass ein Update eingespielt werden muss. Grundlage In der Regel hat eine Android App immer eine Standard-Activity, die im Manifest wie folgt gekennzeichnet ist. Durch diese Angabe wird Android mitgeteilt, dass dies die Activity ist, die vom Launcher aufgerufen werden soll. Activity Alias im Android Manifest Beim Activity-Alias handelt es sich um einen Symlink zu einer Activity die dazu verwendet werden kann, einen Alias für eine Aktivität zu erzeugen, der eine Ziel-Activity verlinkt. Das Ziel muss sich in der gleichen Anwendung wie…

Kommentare sind geschlossen.

Android Product Flavors || Build-Varianten

Build-Varianten können in Android Studio erstellt werden, indem man in Gradle einen bestimmten Satz von Regeln verwendet, um Einstellungen, Code und Ressourcen zu kombinieren, die in den Build-Typen und den Product Flavors konfiguriert sind. Jede Build-Variante steht für eine andere Version der App. Man kann z. B. eine kostenlose Version einer App mit einer begrenzten Anzahl von Funktionen erstellen und eine kostenpflichtige Version, die einen größeren Funktionsumfang besitzt. Es ist auch möglich, verschiedene Versionen einer App zu erstellen, die z.B. für unterschiedliche Kunden erstellt wird. Das ist besonders bei White Label Apps sehr interessant.White-Label-Produkte sind Produkte eines Herstellers, die nicht unter dessen eigener Marke, sondern als (scheinbares) Produkt eines anderen Herstellers bzw. Händlers unter anderer Marke verkauft werden. Die offizielle Doku kann…

Kommentare sind geschlossen.

„Shit happens. Try again“ – Done

Letztes Jahr im September habe ich einen Blog Post unter https://www.jentsch.io/action-required-your-app-is-not-compliant-with-google-play-policies/ geschrieben, in dem ich darüber berichtet habe dass meine App Smart Squares von Google mit dem Hinweis „Action Required: Your app is not compliant with Google Play Policies“ aus dem Google Play Store entfernt wurde. Grund dafür war die Verwendung des Textes „Shit happens. Try again“ in der App. Laut der Mail von Google haben diese 4 Worte dazu geführt hat, dass die App mit der Begründung „App content: Adult and Sexually Suggestive Content“ aus dem Google Play Store entfernt wurde. Auf der einen Seite ist es natürlich sehr gut, dass Google hier eine so strenge Regulierung und akribische Überwachung des Google Play Stores durchführt. Schließlich haben heute ja…

Kommentare sind geschlossen.

Fahrradtour manuell planen

Für die Planung einer Fahrradtour gibt es schon endlos viele Webseiten, Apps und andere Projekte. Was mir hier noch fehlt ist ein Tool mit dem ich eine Route auf einer Karte zeichnen kann ohne dass ein Routenplanungsalgorithmus eingreift und mir vorgibt welchen Weg ich fahren soll. Also habe ich mich mal daran gemacht, ein Browser basiertes Tool zu erstellen, dass diese einfache Anforderung abdeckt. Folgende Funktionen waren mit dabei wichtig. Kartenmaterial mit Anzeige von Fahrradwegen Export und Import vom GPX Dateien Einfach zu benutzen Zoom Suche nach Adressen mit der Nominatim API Basierend auf OpenLayers habe ich also eine Webseite erstellt, auf der die OpenCycleMap von Thunderforest dargestellt wird. Für das Erstellen der Route habe ich ein JavaScript Programm erstellt,…

Kommentare sind geschlossen.

Android Kiosk Mode App – So geht’s

In diesem Blog-Post geht es darum, eine App zu realisieren, die im den sogenannten Android Kiosk Modus unterstützt. Dadurch können z.B. Schulen, Restaurants, Hotels, Messen, oder Museen mobile Geräte an die Besucher austeilen und sicher sein, dass die Benutzer oder Mitarbeiter ausschließlich auf diese Kiosk-App zugreifen können und nicht in der Lager sind die Geräteeinstellungen zu öffnen oder andere Apps zu starten. Die hier verwendete Architektur funktioniert stabil ab Android 7 und verfolgt einen völlig anderen Ansatz als mein ursprünglicher Ansatz, den ich mal für Android 4 entwickelt habe und der darauf aufgebaut hat, dass man einen ForegroundService mit einem FullScreen Fenster verwendet das einfach überall (Sogar auf dem Lock-Screen und über der Actionbar) angezeigt wird. Leider hat sich seit…

Kommentare sind geschlossen.

Android App auf SD-Karte verschiebbar machen

Im Android-Developers Forum kam die Frage auf, ob es eine Möglichkeit gibt eine App auf die SD-Karte verschiebbar zu machen. Die Frage hat mich neugierig gemacht und ich habe mal nach Möglichkeiten gesucht. Da dies eine Information ist, die dem System nach außen zur Verfügung gestellt werden muss habe ich mal nach Tags oder Attributen im AndroidManifest gesucht und bin auch direkt auf auf das Attribut android:installLocation im manifest Tag aufmerksam geworden. Den Standard-Installationsort für eine App kann man seit API Level 8 (Andorid Froyo 2.2.x) über das AndroidManifest festlegen. Die folgenden3 gültigen Werte können hier angegeben werden: „internalOnly“ Die App darf nur auf dem internen Gerätespeicher installiert werden. Wenn dies eingestellt ist, wird die App niemals auf dem externen…

Kommentare sind geschlossen.

Geocodierung mit der Nominatim API

Nominatim ist ein Werkzeug, um OpenStreetMap-Daten nach Name und Adresse zu durchsuchen und Adressen oder bekannte Orte in OpenStreetMap-Koordinaten zu ermitteln oder ein Reverse-Geocodierung (Georeferenzierung) Reverse Geocoding ist der Prozess der Umwandlung eines Standorts, wie er durch geografische Koordinaten (Breitengrad, Längengrad) beschrieben wird, in eine für Menschen lesbare Adresse oder einen Ortsnamen. Es ist das Gegenteil von Vorwärts-Geokodierung (oft als Adress-Geokodierung oder einfach „Geokodierung“ bezeichnet), daher der Begriff umgekehrt. Die umgekehrte Geokodierung ermöglicht die Identifizierung von nahegelegenen Straßenadressen, Orten und/oder Gebietsunterteilungen wie Stadtteilen, Landkreisen, Bundesstaaten oder Ländern. https://en.wikipedia.org/wiki/Reverse_geocoding Die Geocodierungsdaten können über die Nominatim API kostenlos abgerufen und verwendet werden. Die API unterliegt keinerlei Limits und es ist auch kein API-Key oder eine OAuth Authentifizierung nötig. Die wichtigsten JSON Endpunkte der Nominatim API sind die folgenden: /search Suche…

Kommentare sind geschlossen.

Allocator (GPU_0_bfc) ran out of memory trying to allocate 17.49MiB with freed_by_count=0.

Schon mal gesehen? Wer den Jetson Nano 2GB besitzt und schon mal einige Experimente mit Tensorflow und so gemacht hat, der kennt die folgenden Log-Ausgaben betimmt. 2021-06-24 11:28:26.160087: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.10 2021-06-24 11:28:28.986454: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8 2021-06-24 11:28:44.183867: W tensorflow/core/common_runtime/bfc_allocator.cc:248] Allocator (GPU_0_bfc) ran out of memory trying to allocate 17.49MiB with freed_by_count=0. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available. 2021-06-24 11:28:44.254723: W tensorflow/core/common_runtime/bfc_allocator.cc:248] Allocator (GPU_0_bfc) ran out of memory trying to allocate 33.00MiB with freed_by_count=0. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory…

Kommentare sind geschlossen.