Entries Tagged as 'Programmieren'

Which UNIX tool to use for text processing?

A short decision flow chart to pick the optimal text processing tool on a UNIX-like system (dowload it as plaintext):

                                   .--------.
                                   | I want |
                                   | to ... |
                                   '--------'
                                        |
                                        v
                                  .-----------.
                            yes  / ... search  \  no
                          .-----(  in freeform  )-----------------.
                          |      \    text.    /                  |
                          v       '-----------'                   v
                   ____________                           .---------------.
                   \           \                    yes  /    ... work     \  no
                    ) use grep  )                 .-----(  with structured  )--------.
                   /___________/                  |      \      text.      /         |
                          |                       v       '---------------'          v
                          v                 ___________                       .-------------.
                     .--------.             \          \            replace  /   ... work    \  delete
               yes  /   It's   \  no         ) use awk  )             .-----(  with freeform  )-----.
            .------(  a simple  )-------.   /__________/              |      \     text.     /      |
            |       \ pattern. /        |                             |       '-------------'       |
            v        '--------'         v                             v           extract           v
.-----------------------.  .-------------------------.  .--------------------------. | .-------------------------.
| grep 'simple pattern' |  |  egrep 'regex pattern'  |  | sed 's/search/replace/g' | | | sed '/search pattern/d' |
'-----------------------'  |            or           |  '--------------------------' v '-------------------------'
                           | grep -E 'regex pattern' |           .---------------------------------------.
                           '-------------------------'           | sed 's/^.*\(search pattern\).*$/\1/g' |
                                                                 |                  or                   |
                                                                 |       grep -Po 'search pattern'       |
                                                                 '---------------------------------------'

[Read more →]

KC 85/4 Labyrinth

Hatte gestern die Gelegenheit einen Kleincomputer aus der ehemaligen DDR, den KC 85/4, auszuprobieren. Das Gerät wurde 1988 hergestellt, verwendet eine UB 880 D CPU, einen Zilog Z80 Nachbau mit 1.77 MHz und hat 64 KiB RAM. Im Gegensatz z.B. zu den Atari und Commodore 8-Bit-Rechnern bootet er aber nicht direkt in einen BASIC-Dialekt, sondern ins KC-CAOS 4.2, welches den Aufruf diverser Programme ermöglicht und listet auch direkt einige der im ROM verfügbaren Programme auf:

* KC-CAOS 4.2 *
%BASIC
%REBASIC
%SWITCH
%JUMP
%MENU
%SAVE
%VERIFY
%LOAD
%COLOR
%DISPLAY
%MODIFY
%WINDOW
%KEY
%KEYLIST
%MODUL
%SYSTEM
%V24OUT
%V24DUP
%

[Read more →]

VoCore2 Ultimate as SMS gateway

This article describes a setup of OpenWRT on the VoCore2 Ultimate to send SMS via a HTTP API using smstools and a GSM modem (a Huawei E3531, in this case). This method uses docker to build a custom OpenWRT image, which can be then be installed via the firmware update mechanism in the preinstalled OpenWRT on the ROM of the VoCore2. [Read more →]

MySQL / MariaDB replace broken HTML entities

After an upgrade of Friendica, a PHP application using MySQL or MariaDB as a backend I found that while the columns containing the raw textual content had been changed successfully from utf8 to utf8mb4 character sets, some other colums that contained pre-rendered HTML were broken, as they now contained 2 byte sequences turned into HTML entities. [Read more →]

sed command catenation

Sometimes one sed command is not enough… (via Tobias)

Does anyone knows a way to do this more compact? My sed foo is very limited…

*sed "1,3d" %p | sed '/^$/d' | sed '$d' | base64 -d | gpg --decrypt |

%p is a filename in case you wonder.

The 1st * and the last | are needed elsewhere as well. I don’t really like the three seds

It should at least be possible to catenate the sed commands. Does one of these two syntaxes work with your sed version?

sed '1,3d;/^$/d;$d' %p | base64 -d | gpg --decrypt |

sed -e ‚1,3d‘ -e’/^$/d‘ -e ‚$d‘ %p | base64 -d | gpg –decrypt |

The best sed documentation IMO is the one from Grymoire. Here are the two methods mentioned above: The poorly documented ; and Multiple commands with -e command

Eclipse 3.2 Setup unter Ubuntu

Leider ist im Ubuntu Stable (derzeit 8.04.1 Hardy Heron) Repository immer noch nur die Version 3.2 von Eclipse abgelegt. Da ich in letzter Zeit öfters Eclipse auf neuen Maschinen im Geschäft oder Privat auf der genannten Plattform installieren musste, möchte ich die wichtigen Punkte mal rasch für mich notieren. Ziel ist es Eclipse mit Subversion- und PHP-Plugin einzurichten.

Ein gutes Tutorial zur Eclipse-Installation findet sich in der Wiki des Deutschen Ubuntu Forums. Hier die nötigen Schritte für die eigentliche Eclipse Installation:

  1. Über den Paketmanager Deiner Wahl folgende Pakete installieren: eclipse („), eclipse-nls (Sprachpakete), sun-java6-jre (gewisse Plugins machen Zicken mit dem GNU Java), sowie optional auch subversion (falls man mal etwas von Hand im SVN machen muss).
  2. Damit auch Sun Java verwendet wird, muss man noch folgenden Befehl ausführen:
    sudo update-alternatives --config java

    und Sun’s Java auswählen.

  3. Zudem muss man noch in Eclipse die Prioritäten-Liste der Java-Umgebungen aktualisieren, so dass Sun’s Java an erster Stelle steht. Diese Datei hört auf den Namen „/ etc/eclipse/java_home“. Weitere Details dazu finden sich auf der Originalen englischen Ubuntu Wiki.

Die Plugins werden in Eclipse über einen Assistenten installiert der über das Menü „Hilfe > Software-Updates > Suchen und installieren“ gestartet wird. Man muss dort lediglich die unten stehenden URLs eintragen und die gewünschten Funktionen auswählen. Für die beiden Plugins gilt folgendes:

  1. Subversion Synchronisierung nutzen wir über das Subversive Plugin. Für Eclipse 3.2 muss aber eine alte Version (1.1) genutzt werden. Diese findet man über die „alte“ Polarion Webseite, die Plugin-URL lautet „http://www.polarion.org/projects/subversive/download/1.1/update-site/“. Die beiden benötigten Funktionen heissen „SVN Team Provider“ und „SVNKit 1.1.4 Implementation“. Die „Java SVN Implementation“ unterstützt leider nur SVN 1.3. Alle unsere Server (auf Debian Etch) sind aber bereits Version 1.4 und machen mit dem älteren Plugin einige Schwierigkeiten.
    Subversion Synchronisierung nutzen wir über das Subclipse Plugin. Für Eclipse 3.2 muss Version 1.4 genutzt werden. Diese findet man über die Tigris Webseite, die Plugin-URL lautet „http://subclipse.tigris.org/update_1.4.x“. Die benötigten Funktionen heissen „Subclipse – Required“, „Subversion Client Adapter – Required“, „SVNKit Client Adapter“ und „SVNKit Library“.
    Da wir keine Windows-Plattform nutzen müssen wir dem neuen Plugin noch mitteilen, dass es die SVNKit Bibliothek nutzen soll. Dies geschieht über das Menü „Fenster > Benutzervorgaben“ und dort unter „Team > SVN“ im Reiter „SVN Client“. Im Dropdown „SVN Client“ „SVN interface“ muss die oben installierte Bibliothek ausgewählt werden.
  2. Die korrekte Version von PHPeclipse für Eclipse 3.2 ist unter der Plugin-URL „http://update.phpeclipse.net/update/archives“ zu finden. Installiert werden muss nur die Funktion „PHPeclipse“. Die beiden anderen Funktionen stehen für spezielle Webserver mit Debug-Ausgabe. Damit die PHP-„Rechtschreibkorrektur“ (Syntax-Prüfung) funktioniert, sollte man auf dem Entwicklungsrechner ebenfalls PHP installieren.

Und nun viel Spass beim Versionieren und bei der Arbeit in einer professionellen PHP-IDE.

Update vom 15. März 2009:
Aufgrund eines Updates unserer SVN-Server ist das Subversive-Plugin nicht mehr kompatibel mit diesen. Daher mussten wir auf Subclipse umsteigen, von dem noch eine kompatible Version für Eclipse 3.2 existiert. Die Doku wurde entsprechend angepasst.