Pages by Andreas Hofmeier
An-H
eMail Impressum/Note Datenschutzerklärung
http[s]://www.abmh.de/l_bdb.html

Like to be free? ... then: Fight for Freedom

[ Blacky Daten Bank v1.14 (c) Copyright 1996-2003 Andreas Hofmeier ]

    BDB - Blacky Daten Bank for Linux

    Copyright (c) Andreas Hofmeier

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of
    the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.



PROGRAMM

Dieses Programm habe ich geschrieben um eine kleine Datenbank zu
verwalten. Zum Beispiel eine Adressendatenbank oder über geliehene
Bücher. Es gibt auch eine kleine Version für DOS.

Das Skript ~/bin/bat/``bdb2html'' wandelt BDBs in HTML-Tabellen um. Es
ist ein kleines Beispiel, wie man mit UNIX-Tools, auf BDBs zugreifen
kann.

Das Skript ~/bin/bat/``anf'' durchsucht BDBs nach Stichworten. Um
einen schnelleren Zugriff auf die BDBs zu ermöglichen. Siehe in das
Skript!

Die Datei ~/c/l_bdb/dos.zip enthält eine sehr-Alte Version von BDB
für DOS und die dazugehörigen Pascal-Quell-Codes (*.pas) Das
DOS-Programm kann AUSSCHLIEßLICH das alte BDB-Format lesen, und
enthält VIELE FEHLER! Das alte Format verarbeitet nur ACHT Datenfelder!

An Umwandlung zu anderen Formaten arbeite ich gerade!

Das (neue) Format ist denkbar einfach:
***
Blacky-Daten-Bank-1<field seperator (FS)>
<Name der Datenbank>
<Feldname 1><FS><Feldname 2><FS><Feldname 3><FS><Feldname 4><FS><Feldname 5><FS><Feldname 6><FS><Feldname 7><FS><Feldname 8><FS><Feld, nach dem Sortiert werden soll>
<Datensatz1:Feld1><FS><Datensatz1:Feld2><FS><Datensatz1:Feld3><FS><Datensatz1:Feld4><FS><Datensatz1:Feld5><FS><Datensatz1:Feld6><FS><Datensatz1:Feld7><FS><Datensatz1:Feld8>
<Datensatz2:Feld1><FS><Datensatz2:Feld2><FS><Datensatz2:Feld3><FS><Datensatz2:Feld4><FS><Datensatz2:Feld5><FS><Datensatz2:Feld6><FS><Datensatz2:Feld7><FS><Datensatz2:Feld8>
...
***

z.B.: (Adress-Datenbank mit einem Datensatz)
***
Blacky-Daten-Bank-1|
Adressen
Name|Vorname|Straße|Ort|Telefon|Geb.|Firma|Status|1
Hofmeier|Andreas|Stralsunder Str. 20|28239 Bremen|0421-613793|08.07.1981 München|Schüler|i
***

Das alte Format: siehe weiter unten! (DOS, winDOOFs)

Demo-Datenbanken finden Sie unter bdb/demo/ !

Dieses Format kann mit der UNIX-SH (z.B. awk, cut, etc.) wunderbar
verarbeitet werden. Es ist weiterhin sehr klein, ist aber auch
entsprechend primitiv.

ACHTUNG:

-> Mein Programm kann zur Zeit nur 12 Datenfelder anzeigen! Weitere
Datenfelder werden NICHT angezeigt, gehen allerdings auch nicht
verloren.

-> Die Maximale Datensatzgröße ist derzeit 1024 Bytes. (siehe:
l_bdb.c:BUFSIZE; MULLLEN)

Default Fieldseperator ist das "|" - Pipe (124(10) 7c(16))

Achten Sie darauf, das es nicht in den Datenfeldern vorkommt!

Hm, es sollten jetzt Feldtrenner, welche mehr als ein Zeichen lang
sind zulässig sein...


Da die acht Datenfelder sowieso nie reichen, und ich gerne Kommentare
schreibe verwaltet das BDB zusätzlich INFO-Dateien (nur unter Linux).

In den Info-Dateien können zusätzliche Informationen in Form von
ASCII-Text gespeichert werden. Auf dem Bildschirm werden die ersten
zwei Zeilen dieser Datei in dem Feld über Command angezeigt. Mit "->"
(Pfeiltaste: rechts) kann weiter nach unten gescrollt werden.

Die Dateien werden unter $HOME/txt/pb.<Vorname>.<Nachname>.txt
gespeichert. Die Felder Vorname und Nachname bzw. Name können sein wo
sie wollen, das programm sucht sie selbstständig. Sonderzeichen
"(,),",..." werden durch "_" (underline) ersetzt.

Das Verzeichnis, in welchem die INFO-Dateien abgelegt werden kann mit
der Umgebungsvariable BLKTXT eingestellt werden. $HOME/txt ist die
Defaulteinstellung. Es dürfen keine zu interpretierenden Zeichen
(z.B. ~) in der Variable verwand werden. Wenn Sie in der .bashrc
``export BLKTXT=~/txt'' schreiben, ist das OK, da die ~ von der BASH
interpretiert wird. Allerdings wird ``export BLKTXT="~/txt"'' nicht
funktionieren.

Mit der Eingabe von "?" startet BDB den Texteditor mit dieser Datei
und geht in den Hintergrund, bis der Editor beendet wird.

Den Editor können Sie mit der SH-Variable EDITOR setzten. Default
ist es der vi. Wenn Sie z.B. den pico benutzten möchten, tragen Sie
folgendes in ihrer startup-Datei (meist: $HOME/.bashrc) ein:

export EDITOR="pico"

Mit ''_'' rufen sie den zweiten Editor auf. Dieser kann in EDITOR2
eingestellt werden. Default ist dies ``xemacs -nw''.

Mit ''v'' rufen sie einen Viewer auf. Dieser kann in VIEWER
eingestellt werden. Default ist dies ``less''.

Da das Ständige laden der INFO-Dateien viel Rechenzeit verbraucht, kann 
es mit "l_bdb <file> -u" Unterdrücken.


Funktionen & Tasten:

	- Datenbankname Vergeben & Ändern	"N", "n"
	- Datensatz
		- Anfügen (Abfrage)		"INS", "I"
		- Editieren			"ENTER"
		- Auswählen
			- Nächster		"UP", "+"
			- Vorheriger		"DN", "-"
			- +10%			"PAGE UP"
			- -10%			"PAGE DN"
			- Erster		"HOME"
			- Letzter		"END"
		- Löschen			"DEL", "k", "K"
		- Drucken 			"p", "P"
	- Datensätze sortieren nach		"S", "s"
	- Datei Speichern			"F2", "w", "W"
		- Datei Speichern Unter		"F4", "a", "A"
	- Drucken
		- Aktuellen Datensatz		"P", "p"
		- Tabelle			"d", "D"
	- EXIT					"ESC", "x", "X",
						"q", "Q"
	- Feldnamen Editieren			"F", "f"
	- Funktion Starten			"!" + <NUMMER(1-8)>
	- Redraw				C-l, " ", "SPACE"
	- Suchen				"F3", "/"
		- Weitersuchen			"r", "R"
	- INFO-Datei editieren			"?"
	- INFO weiterscrollen			"->"
	- Kurzhilfe einblenden			"F1", "h", "H"


Modemwahl

Mit der Modemwahl können Telefonnummern ohne Lästiges eingeben gewählt
werden. Vorraussetzungen: Modem mit AT-Befehlssatz und ein mit dem
Modem verschaltetes Telefon, siehe Modem-Anleitung bzw. Telefonbuckse. 

BDB braucht, um über das Modem zu wählen, zugriff auf das Modem-Devise
(/dev/modem oder /dev/blacky_modem, ein link auf eine Serielle
Schnittstelle /dev/cua? oder /dev/ttyS?). /dev/blacky_modem geht
/dev/modem vor, und soll Konflikte mit ppp etc. vermeiden. Bei mir
(2. Serielle Schnittstelle):

lrwxrwxrwx   1 root     root            9 Jul 16 19:29 /dev/blacky_modem -> /dev/cua1
lrwxrwxrwx   1 root     uucp           10 Jul 16 19:28 /dev/modem -> /dev/ttyS1

Nach dem Drücken von "c" sucht mein Programm im Datenfeld, welches
``tele'' enthält und schreibt dann einfach ATDT <nummer> auf das
Devise. Änderung des AT-Befehls z.B. für nebenstellenanlagen erfordert
Änderung im Source-Code (Quell-Code). Das Modem Wählt. Wenn eine
Verbindung zu stande kommt, drücken Sie SPACE, damit das Modem
Auflegt, vorher müssen Sie natürlich den Höhrer des Telefons
abnehmen. SPACE müssen Sie auch drücken, wenn keine Verbindung zu
stande kam um mit dem Programm weiterarbeiten zu können.

Noch was zu erledigen bevor gewählt wird? Kein Problem! Mit der
SH-Variable BDB_MODEMWAHL_COMMAND kann ein SH-Befehl definiert werden,
der vor der Wahl über das Devise gestartet wird. BDB wartet solange
bis das Kommando beendet ist! z.B. Einschalten des Modems: "modem an;
sleep 3" also ihrer Startup-Datei (meist $HOME/.bashrc) die Zuweisung
der Variable anfügen:

export BDB_MODEMWAHL_COMMAND="modem an; sleep 3"

Nach dem Befehl "modem an" wird durch "sleep 3" noch drei Sekunden
gewartet.


Das alte Dateiformat: (benutzt von Blacky für Windows und DOS {ich
weiß das tut mir auch weh!})

***
Blacky-Daten-Bank-1
<Name der Datenbank>
0x0f 0x01<Feldname 1>0x02<Feldname 2>0x03<Feldname 3>0x04<Feldname 4>0x05<Feldname 5>0x06<Feldname 6>0x07<Feldname 7>0x08<Feldname 8>0x0b 0x0f<Feld, nach dem Sortiert werden soll>
0x0f 0x01<Datensatz1:Feld1>0x02<Datensatz1:Feld2>0x03<Datensatz1:Feld3>0x04<Datensatz1:Feld4>0x05<Datensatz1:Feld5>0x06<Datensatz1:Feld6>0x07<Datensatz1:Feld7>0x08<Datensatz1:Feld8>0x0b 0x0f
0x0f 0x01<Datensatz2:Feld1>0x02<Datensatz2:Feld2>0x03<Datensatz2:Feld3>0x04<Datensatz2:Feld4>0x05<Datensatz2:Feld5>0x06<Datensatz2:Feld6>0x07<Datensatz2:Feld7>0x08<Datensatz2:Feld8>0x0b 0x0f
0x0f 0x01<DatensatzN:Feld1>0x02<DatensatzN:Feld2>0x03<DatensatzN:Feld3>0x04<DatensatzN:Feld4>0x05<DatensatzN:Feld5>0x06<DatensatzN:Feld6>0x07<DatensatzN:Feld7>0x08<DatensatzN:Feld8>0x0b 0x0f
0x10 0x0f 0x11
***

z.B.: (angezeigt mit vi)
***
Blacky-Daten-Bank-1
Adressen
^O^AName^BVorname^CStraße^DOrt^ETelefon^FGeb.^GFirma^HStatus^K^O1
^O^AHofmeier^BAndreas^CStralsunder Str. 20^D28239 Bremen^E0421-613793^F08.07.1981 München^GSchüler^Hi^K^O
^P^O^Q
***

ACHTUNG: Die DOS bzw. winDOOFs-Versionen kommen mit dem <neu line>
         Attribut von UNIX 0x0a _NICHT_ klar. Man muß den DOS-<neu
         Line> benutzten: 0x0d 0x0a.

Möchten Sie aus einer beliebigen BDB eine alte BDB machen rufen Sie
l_bdb <datei> -a auf. Speichern Sie dann, wird die Datenbank im altem
Format geschrieben.

Ich weiß, das Format ist Müll! Aber damals habe ich noch mit winDOOFs
gearbeitet!

Für die DOS oder winDOOFs-Version zu erhalten müssen Sie sich direkt
an mich wenden!


Drucken

Der Befehl "P" Druckt den Aktuellen Datensatz in eine Datei, wobei
L_BDB gleich eine Konvertierung zum DOS Zeichensatz vornimmt. Sie
können gleich das Drucker-Device an geben (/dev/lpX), um direkt auf
ihren Drucker zu drucken.

Mit dem Befehl "D" können Sie die gesamt Datenbank wahlweise als
ASCII-Tabelle, DOS-Graphik-Tabelle oder HTML-Tabelle ausgeben
lassen. Die UNIX -> DOS-Zeichen Konvertierung wird nur bei der
DOS-Graphik-Tabelle vorgenommen. Die DOS-Graphik-Tabelle arbeitet mit
dem erweitertem Zeichensatz von DOS um die Tabelle in Spalten zu
Teilen. die ASCII-Tabelle arbeitet ohne Erweiterte Zeichen. Die
HTML-Tabelle enthält den HTML-Source-Code.

Im Drucken-Menu, in welches Sie mit "D" kommen, können Sie diese drei
Modi mit m und 0 bis 2 auswählen.

Die Spaltenbreie können Sie so ändern:
<Nummer der Spalte Eingaben><ENTER>
<Spaltenbreite ändern><ENTER>

HINWEIS: Die Spaltenbreite wird den Datenfeldern, nicht den Spalten
zugeordnet.

Mit Eingabe von Buchstaben können Sie jede Spalte ein Datenfeld
zuordnen:
<A-n für Spalte eingeben>
<Nummer des Datensatzten eingeben><ENTER>

Die erste Zeile stellt die Längen der Spalten und deren Inhalte (Namen
der Datenfelder da). Die Zweite Zeile enthält den aktuellen Modi. Die
dritte Zeile zeigt: <Buchstabe der Spalte>-<Name des Zugeordneten
Datenfeldes>-<Länge>.

Nachdem Sie alle Änderungen vorgenommen haben, drücken Sie ENTER um
fertigzustellen.


*** Andere Anwendungsmöglichkeiten

Vokabeln lernen:

1. Legen Sie eine Datenbank an: Erstes Datenfeld die Ausgangssprache
(Heimatsprache), zweites Datenfeld die zu lernende Sprache.

2. Geben Sie Vokabeln zum Lernen ein, Datensätze anlegen

3. ``V'' drücken

-> Das Programm zeigt ihn nun das Wort in der Ausgangssprache, und
fordert Sie auf das Wort in der zu lernenden Sprache einzugeben. Geben
Sie das Wort falsch ein, Wird ihnen das Richtige Wort angezeigt,
welches Sie allerdings nochmal abtippen müssen... Ist das Wort dann
Richtig, so wird per Zufall ein neues ausgesucht...

-> Mit `EXIT' verlassen Sie den Lern-Modus

Mit der Eingabe ``LINEAR [nummer]'' schalten Sie in den
Linear-Modus. Die Vokabeln werden dann nicht mehr zufällig abgefragt,
sondern in der Reihenfolge, wie sie in der DB stehen. (Siehe
Sortieren). Sie können zu eine bestimmten Stelle in der DB springen,
wenn Sie LINEAR die nummer des Datensatzes mitgeben. 


ASCII-Datenbanken laden:

Wenn als Parameter eine Datei angegeben wurde, welche keine BDB ist,
so werden Sie zuerst gefragt, ob die erste Zeile dieser Datei der
DB-Name ist. Dannach werden Sie Aufgefordert den Feld-Trenner
einzugeben. Nun werden Sie noch gefragt, ob die erste, bzw. die zweite
Zeile die Namen der Datenfelder enthält.

Beispiel: Wir laden die /etc/passwd

***
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
...
***

Erste Zeile enthält weder Datenbank-Name, noch die Feldnamen. Der
Feld-Trenner ist der ``:''.

Also:

l_bdb /etc/passwd
> It's not a Blacky-Daten-Bank! Try load other fromat...
# <ENTER>
> Is this the DB-Name? (Yes/No) (root:x:0:0:root:/root:/bin/bash)
# N<ENTER>
> Pleace ENTER the Feldseperator:
# :<ENTER>
> Are this the DB-Feldnames? (Yes/No) (root:x:0:0:root:/root:/bin/bash)
# N<ENTER>
... Sollte nun geladen sein...



Download now (l_bdb.zip)

Siehe auch:

ACHTUNG: Dieses Programm, bzw. dieser Test unterliegt der GPL!


Pages by Andreas Hofmeier
An-H
eMail Impressum/Note Datenschutzerklärung
http[s]://www.abmh.de/l_bdb.html
Creative Commons License
(c) Andreas B. M. Hofmeier
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License