Im vierten Teil geht es darum, die einfach Suchabfrage zur Findung von Firmen zu schreiben und via QSqlQuery auszulesen.

Im dritten Teil, dem ich mich der Entwicklung widme, geht es schon ein wenig um die Firmen, die wir auslesen wollen. Wir schauen uns zuerst einmal an, wie wir an die selektierten Branchen kommen und schreiben uns einen Typ, der die IDs dieser beinhaltet.
Für das Projekt compow, welches ich damals 2016 entwickelt habe und jetzt gerade relaunche, nachdem es zwei Jahre abgeschaltet war, möchte ich die Desktopsoftware, die ursprünglich in wxWidgets geschrieben war, neu in Qt implementieren.
Die wxWidgets-Anwendung ist in die Jahre gekommen und das Deployment, vor allem für verschiedene Betriebssysteme, ist unglaublich aufwendig. Weiterhin habe ich eine Menge Code an compow geändert, so dass man ein größeres Refactoring durchführen müsste. Ich möchte sie also neuschreiben und dachte mir, dass ich den Vorgang aufnehme. Darum geht es hier in den Videos. Begleitet mich beim Entwickeln der neuen compow-Desktop-Version.
Und hierum handel es sich: Mit der Desktop-Version von compow hat man lokalen Zugriff auf alle in compow gespeicherten Firmenprofile und kann diese inklusive Branchen durchsuchen.
Es handelt sich um eine sehr einfach Software und im ersten Schritt soll sie auch ganz einfach entwickelt werden. Ich verzichte auf ORM und Persistensbibliotheken (hier geht es nur um ein paar wenige Queries), auf Patterns, und so weiter. Ich entwickle ganz klassisch, da es sich nur um ein Nebenprodukt handelt. So sah die alte Software aus:
Die SQLite-Datenbank nehmen wir vom alten Projekt. Dafür gibt es auch bereits ein Script, welches die notwendigen Daten aus der „echten“ Datenbank herauszieht und in der SQLite-Datenbank speichert und Indices anlegt. Darum möchte ich mich nicht kümmern.
So sieht die Software aus, die wir in diesem ersten Teil implementiert haben:
Nicht schlecht, oder? In den nächsten Tagen machen wir weiter.
2016 begannen, federführend unter GuG-IT GbR – Olena und Thorsten Geppert, die Arbeiten am Unternehmensportal www.compow.de. Irgendwann hatten wir das Projekt wieder eingestellt. Heute gibt es den kleinen Relaunch.
Von der Usability her: nichts. Auch das Design ist gleich geblieben. Ein Problem war, dass die Website komplett über eine Art RPC-System mit dem Server kommunizierte, welches sehr langsam war. Das habe ich vollständig abgelöst. Die Website kommuniziert jetzt direkt mit dem Datenbankserver, was sie schneller macht und einfacher zu pflegen. Dafür fällt natürlich einiges an Flexibilität weg.
Man merkt, dass die Website um einiges schneller reagiert, als zuvor, allerdings ist sie in meinen Augen immer noch viel zu langsam. Daran arbeite ich.
Ansonsten gibt es erstmal nichts neues.
Einiges:
Ansonsten ist alles beim Alten. Ihr könnt eure Firma auf compow.de eintragen und damit Reichweite gewinnen. Probiert es einfach mal aus, denn es ist vollständig kostenlos.
Ich bin krank, kann momentan nichts sinnvolles machen, weil ich mich nicht konzentrieren kann und dachte mir, ich baue mal eine Website mit C++, um meine WPStatistics in vereinfachter Form anzusehen. Auch dachte ich mir: Warum nicht aufnehmen? Das habe ich getan.
Ich nutze dazu:
Vielleicht interessiert es ja jemanden, wie man einfach mit C++ eine Website bauen kann. Ich würde mich sehr über Feedback freuen.
Als Entwickler wirst du dieses Feature lieben. Es ist problemlos möglich, Versionskontrollsysteme, bspw. Git, Subversion, usw. in eine Projekte innerhalb von Redmine einzubinden.
In diesem Video zeige ich dir, wie es geht.
Hier noch mein Update-Script:
#!/bin/sh
BACKUPPATH="/server/redminegit"
LOGFILE="${BACKUPPATH}/update.log"
date > "${LOGFILE}"
for dir in `find "${BACKUPPATH}/" -type d -depth 1 -not -path '*/\.*'`
do
cd $dir
echo $dir >> "${LOGFILE}"
git pull 2>> "${LOGFILE}" >> "${LOGFILE}"
echo "" >> "${LOGFILE}"
done
date >> "${LOGFILE}"
Und mein Cronjob:
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/libexec:/usr/local/sbin/
HOME=/var/log
*/15 * * * * /server/redminegit/update
Ja, auch unter Redmine gibt es Plugins. Das ist toll, denn so kann man sich das ohnehin schon geniale Redmine weiter erweitern und anpassen. Ich zeige mal am CKEditor, wie man ein Plugin installiert.
Beim CKEditor handelt es sich um einen WYSIWYG-Editor für nahezu alle Textareas von Redmine. Normal sterbliche Benutzer sind damit einfach in der Lage, Texte direkt zu formatieren und die Formatierungen auch zu sehen.
Und wie das funktioniert, sehen wir in diesem Video.
Letztlich ist es einfach. Wir gehen auf unseren Server, auf dem Redmine installiert ist (übrigens: für dieses Plugin braucht man Git (FreeBSD: pkg install git)), wechselt ins Redmine-Plugin-Verzeichnis (FreeBSD: cd /usr/local/www/redmine/plugins) und zieht das zip-Package herunter (FreeBSD: fetch https://github.com/a-ono/redmine_ckeditor/archive/master.zip). Dann wird es entpackt (unzip master.zip) und richtig benannt (mv redmine_ckeditor-master redmine_ckeditor).
Wir wechseln ein Verzeichnis nach oben (cd ..) und führen dann folgende Befehle aus:
bundle install
rake redmine:plugins:migrate RAILS_ENV=production
Dann starten wir Apache einmal durch (FreeBSD: service apache24 restart) und aktivieren noch den Texteditor unter Administration -> Konfiguration -> Textformatierung = Ckeditor:
Fertig sind wir.
Willkommen zum dreiteiligen Workshop: Redmine 4. In diesem zweiten Teil geht es um „Redmine für Bentuzer“.
Das Video erklärt einige grundsätzliche Informationen auf der administrativen Seite im Backend von Redmine.
Wir gehen in diesem Video folgende Bereiche durch:
Willkommen zum dreiteiligen Workshop: Redmine 4. In diesem zweiten Teil geht es um „Redmine für Administratoren“.
Das Video erklärt einige grundsätzliche Informationen auf der administrativen Seite im Backend von Redmine.
Folgende Dinge werden erklärt:
Willkommen zum dreiteiligen Workshop: Redmine 4. Ich habe mir überlegt, ich mache einen kleinen Redmine-Einsteigerkurs. Dieser geht über drei Kapitel:
In diesem Video und Blog-Artikel geht es darum, wie man Redmine einfach installieren kann. Ich setze dafür folgendes voraus:
Erstelle einen Datenbankbenutzer. Wie das bei deiner PostgreSQL-Version geht, entnimmst du den Manuals. Achte darauf, dem Benutzer ein verschlüsseltes Kennwort zu geben. Ich habe noch ein (uraltes) PostgreSQL 9.5 auf meiner Testmaschine laufen (du solltest hoffentlich was neueres haben), und da geht es so:
createuser -E -P redmine
Dann erstellst du noch die Datenbank, was bei mir so geht:
createdb -E unicode -O redmine redmine
und vergisst natürlich nicht den Eintrag in der pg_hba.conf
host redmine redmine 192.168.0.168/24 password
Denke daran, Datenbanknamen, Datenbankbenutzer und IP anzupassen!
Ich nutze Apache in der Version 2.4. Wenn du was anderes benutzt, dann musst du leider schauen, wie du es ans Rennen bekommst. Ich installiere also alle benötigten Pakete:
pkg install redmine4 apache24 ap24-mod_fastcgi fcgi-devkit postgresql14-client
In der httpd.conf (/usr/local/etc/apache24) setzt du, wenn du es noch nicht getan hast, den Servernamen sowie die E-Mail-Adresse (wobei die auch im VHost eingerichtet wird). Weiterhin entfernst du bei den Zeilen:
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
LoadModule fastcgi_module libexec/apache24/mod_fastcgi.so
Include etc/apache24/extra/httpd-vhosts.conf
die Raute (#) vorne, so dass die Zeilen genutzt werden innerhalb der Konfiguation. Und der aufmerksame Leser weiß es: ich nutze hier jetzt im Beispiel kein SSL! Bitte mache das, und mache das auf jeden Fall, wenn Redmine im Internet hängt! Das wäre jetzt einfach nur zu aufwendig für das Tutorial.
Server-Kram liegt bei mir unter /server. Web-Kram dementsprechend unter /server/web/<sld>/<t(hird)ld>. Passe die Konfiguration bei dir an. Dementsprechend richte ich das Verzeichnis folgendermaßen ein:
mkdir -p /server/web/gug-it && chown -R www:www /server/web/gug-it
ln -s /usr/local/www/redmine /server/web/gug-it/
Dann bearbeite ich die Datei /usr/local/etc/apache24/extra/httpd-vhosts.conf (du hoffentlich /usr/local/etc/apache24/extra/httpd-ssl.conf). Da füge ich folgenden Eintrag hinzu:
<VirtualHost *:80>
ServerName redmine.gug-it.gg
ServerAdmin thorsten@tgeppert.de
DocumentRoot "/server/web/gug-it/redmine/public"
FastCgiServer /server/web/gug-it/redmine/public/dispatch.fcgi -idle-timeout 120 -initial-env RAILS_ENV=production -initial-env PATH=/usr/local/bin -processes 2
<Directory /server/web/gug-it/redmine/public>
AddHandler fastcgi-script fcgi
Require all granted
AllowOverride all
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi
</Directory>
ErrorLog "/var/log/redmine.gug-it.gg-error_log"
CustomLog "/var/log/redmine.gug-it.gg-access_log" common
</VirtualHost>
Dann kopiere ich noch die dispatch.fcgi (wir nutzen FastCGI) an die richtige Stelle und mache sie ausführbar:
cp /usr/local/www/redmine/public/dispatch.fcgi.example /usr/local/www/redmine/public/dispatch.fcgi
chmod +x /usr/local/www/redmine/public/dispatch.fcgi
Jetzt geht es an die Netzwerkkonfiguration. Die Daten dazu liegen dir hoffentlich vor.
cp /usr/local/www/redmine/config/database.yml.sample /usr/local/www/redmine/config/database.yml
Die bearbeiten wir dann mit dem Editor unserer Wahl und geben die richtigen Daten ein:
production:
adapter: postgresql
database: redmine
host: thorsten.jails.gug-it.gg
username: redmine
password: "redmine"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8
Nicht vergessen, ich nutze PostgreSQL. Wenn du MySQL oder anderes nutzt, musst du das natürlich beachten! Mein Datenbankserver liegt auf „thorsten.jails.gug-it.gg“.
Als nächstes müssen wir noch ein paar Module zu unserem Redmine hinzufügen. Wir erstellen im Verzeichnis /usr/local/www/redmine die Datei Gemfile.local mit folgendem Inhalt:
gem 'pg'
gem 'fcgi'
und führen dann folgende Befehle aus:
bundle install
rake generate_secret_token
setenv RAILS_ENV production
rake db:migrate
rake redmine:load_default_data
Um Dateiuploads durchführen zu können, müssen wir noch die Datei configuration.yml anlegen. Dazu kopieren wir die Example-Datei einfach:
cp /usr/local/www/redmine/config/configuration.yml.example /usr/local/www/redmine/config/configuration.yml
und setzen dort den attachments_storage_path auf ein sinnvolles Verzeichnis, in meinem Fall „/server/files/redmine“. Ich lege das Verzeichnis an:
mkdir -p /server/files/redmine
chown -R www:www /server/files/redmine
und trage dann in usr/local/www/redmine/config/configuration.yml folgendes ein:
attachments_storage_path: /server/files/redmin
Ich lasse an dieser Stelle die E-Mail-Konfiguration mal aus, weil das recht spezifisch ist. Kommt ganz darauf an, was du brauchst, aber schau dir die Konfigurationsdatei einmal an und du wirst schnell verstehen, wie das funktioniert.
Wenn wir dann Apache starten (oder neustarten), können wir auf Redmine zugreifen. Die Standardzugangsdaten lauten:
Benutzername: admin, Kennwort: admin
Du wirst direkt aufgefordert, dein Kennwort zu ändern. Jetzt kannst du direkt loslegen.