Kategorie-Archiv: code

Code

HydroMap – Android App

Was ist mit HydroMap möglich?

Verwaltung von Hydranten-Informationen in einer SQLite Datenbank auf dem Mobiltelefon.
Die gesammelten Informationen lassen sich auf einer Google-Maps Karte im Straßen- oder Satelitenformat anzeigen.
Die Google-Maps Karte ist GPS gesteuert und der momentane Standpunkt des Betrachters wird ebenfalls in der Google-Maps Karte angezeigt. Dies dient einer raschen Auffindung eines geeigneten Hydranten oder einer Wasserentnahmequelle in der Nähe des eigenen Standorts.
Durch das Antippen eines Hydranten lassen sich weitere gespeicherte Informationen anzeigen.
Alle gesammelten Informationen können mit einem Datenbankserver abgeglichen werden und
diese Informationen stehen dann allen Teilnehmer (die ebenfalls Zugang zu diesem Datenbankserver haben) nach der nächsten manuellen Synchronisation bereit. Somit profitieren alle Teilnehmen über die stetige Informationsgewinnung.

Fertige HydroMap App:

Kann hier über den Google-Market / Google Play heruntergeladen werden:

https://play.google.com/store/apps/details?id=de.chrisbremer.hydromap

Launch Icon:

von Ben Bremer <mail@benjustusbremer.com>

Support / Fragen:

Fragen bitte per Mail an <chris@chrisbremer.de>

Forum: http://chrisbremer.de/?page_id=130#/

Server mit Hydrantendaten:

Server mit Hydranten-Datenbank existiert.
Jeder Benutzer bekommt alle verfügbaren Hydrantendaten und die Accounts sind personalisiert.

Zur Einrichtung eines Accounts bitte folgendes Webformular benutzen:
http://chrisbremer.de/hydro

Screenshots von HydroMap:

Android Button-Event

Das fertige Projekt kann hier heruntergeladen werden:

TestButton.zip

Um einen Button in einer Android App zu erstellen, muss in der Datei „res/layout/main.xml“ ein Button erstellt werden.
Für dieses Beispiel wird ebenfalls ein Textfeld eingefügt, somit sieht diese o.g. Datei wie folgt aus:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button 
	android:text="Button" 
	android:layout_width="wrap_content" 
	android:id="@+id/button1"
	android:layout_height="wrap_content"/>
<EditText
	android:layout_height="wrap_content"
	android:layout_width="match_parent" 
	android:id="@+id/txtEdit"/>
</LinearLayout>


Anschließend wird in der entsprechenden Activity Datei folgendes eingetragen, um das Event des Klicken abzufangen:


public class TestButtonActivity extends Activity {
	// Variablen für das Textfeld, und den Button anlegen
    private EditText txtedit;
    private Button btntest;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //Verknüpfung der Variablen mit den DesignElementen aus der "main.xml"
        txtedit = (EditText) findViewById(R.id.txtEdit);
        btntest = (Button) findViewById(R.id.button1);
        
        //Ein Event, was beim Klicken auf den Button ausgelöst wird, wird abgehört
        btntest.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
					String tmpstr = "Hello " + txtedit.getText().toString() + "!";
					Toast.makeText(getBaseContext(), tmpstr, Toast.LENGTH_LONG).show();
			}
		});
    }
}

Mod der WordPress App

Die letzten Tage habe ich an einer Modifikation der WordPress App gearbeitet.

Ziel der Modifikation war es, das Felder für die Eingabe von:

  • Uhrzeit der Alarmierung
  • Art der Alarmierung
  • Einsatzort
  • Einsatzdauer

für die einfache Darstellung im Tabellenlayout erstellen, ohne diese jedesmal über die App einzugeben.

Ergebnis sollte dieses sein:

Uhrzeit der Alarmierung: 11:50 Uhr
Art der Alarmierung: Straße unter Wasser
Ort: Hahnenberg
Dauer: ca. 1,25 Stunden

Hierfür wurde die Artikeleingabe in der App wie folgt erweitert:

Als Ausgangspunkt hierfür diente die App von WordPress in der Version 1.4.1 (http://android.wordpress.org/). Diese wurde um Fensterelemente und Verarbeitungen erweitert, und kann hier heruntergeladen werden:

Entwicklungsversion 1.4.1 modifiziert

Fertige App für das Android

Viel Spass, beim Erweitern / Benutzen.

OpenWrt – 8.09.2 (Kamikaze) auf WGR614L Netgear Router installieren

1. Firmware hier downloaden

2. Mit der Datei *.CHK den Netgear Router über das Kabel flashen. Anschluss an eines der vier LAN Anschlüsse. (Flash kann ca. 3 Minuten dauern)

3. Router ins Internet bringen.

(Bei meinem Update habe ich ein LAN Kabel ans WAN Interface geklemmt, und der Netgear Router hat sich eine IP Adresse mittels DHCP gezogen)

4. Per Telnet oder SSH einloggen

(Default IP: Adresse 192.168.1.1)

5. Befehl „opkg update“ Ausführen

root@OpenWrt:/# opkg update

6. WebIf nachinstallieren

root@OpenWrt:/# opkg install http://downloads.x-wrt.org/xwrt/kamikaze/8.09.2/brcm-2.4/webif_latest.ipk

7. Per Browser auf folgende Adresse zugreifen:

http://192.168.1.1/

8. Administrationspassword für den Router vergeben

NextGEN Gallery Plugin Bug bei mehrzeiligem Text

Das NextGEN Gallery Plugin für das Blogportal WordPress ist ein wenig unflexibel bei dem Zeilenumbruch, oder besser Rahmenverhalten der Bilder bei mehrzeiligem Text.

Um das Problem zu beheben finden Sie die Datei „ngg_shadow2.css“ in dem Plugin Ordner.

Sie sollten zur Sicherheit eine Kopie dieser Datei anlegen, bevor diese bearbeitet wird.

Den folgenden Abschnitt in der Datei heraussuchen:

.ngg-gallery-thumbnail span {
        margin: -6px 6px 6px -6px;
        text-align:center;
        font-size:90%;
        color:#808080;
        display:block;
}

und die Zeile:

        height:52px;

mit einbinden, so das die Zeile später wie folgt aussieht:

.ngg-gallery-thumbnail span {
        margin: -6px 6px 6px -6px;
        text-align:center;
        font-size:90%;
        height:52px;
        color:#808080;
        display:block;
}

Datei sichern und ggf. die Pixelanzahl anpassen.

Neuerungen am gcc 4.0 in FreeBSD 7.0

In FreeBSD 7.0 gibt es bei der gcc 4.2.1 einige interessante Neuerungen.
Hier wurde die bekannte Funktion malloc zur Speicherallozierung, durch
die Implementierung der neuen Funktion jemalloc erweitert.

Hierdurch reduziert sich der Programmieraufwand für Parallelisierung und Therading in C und C++ deutlich. Hinzu kommt, dass während der Laufzeit Speicherüberläufe, die sogenannten BufferOverFlows, erkannt werden können um so Gegenmassnahmen einzubinden. Dies geschieht, da der Stack-Smashing-Protector im Standard eingeschaltet ist.

Eine weiteres und meiner Meinung nach super „Feature“ der jemalloc Funktion ist, das der Speicherverbrauch weit aus geringer  als mit der bekannten malloc Funktion ist und die Geschwindigkeit steigt.

Selbst in der neuen Firefox Version 3 wurde die jemalloc Funktion schon benutzt und soll wohl bis zu 22% weniger Speicher im RAM verbrauchen, als Versionen mit der malloc Funktion.
Link zu dem Blog des Firefox Programmierers „Stuart Parmenter“