Technik | ohneKontur - der Blog https://www.ohnekontur.de ohne Linien und Kanten und trotzdem gefangen Mon, 19 Feb 2024 17:22:37 +0000 en-US hourly 1 https://wordpress.org/?v=6.4.5 Unlocking Time: Harnessing the power of temporal tables in SQLite https://www.ohnekontur.de/2024/02/19/unlocking-time-harnessing-the-power-of-temporal-tables-in-sqlite/ https://www.ohnekontur.de/2024/02/19/unlocking-time-harnessing-the-power-of-temporal-tables-in-sqlite/#respond Mon, 19 Feb 2024 16:57:34 +0000 https://www.ohnekontur.de/?p=3273 SQLite is a remarkable, versatile and widely adopted embedded relational database. Extending it to store temporal tables makes it even more useful. This post will tell you what temporale tables are, why they are helpful, and how to get them working with SQLite. Continue reading

The post Unlocking Time: Harnessing the power of temporal tables in SQLite first appeared on ohneKontur - der Blog.]]>
SQLite is a remarkable, versatile and widely adopted embedded relational database. SQLite’s lightweight nature, ease of integration and broad cross-platform support make it a go-to choice for developers seeking an efficient solution for storing data. Also, SQLite is very capable, but some features aren’t included out of the box. One of those not-included features is temporal tables. What that feature is, why it’s useful, and how to get it working with SQLite will be described in this post.

What are temporal tables?

Temporal tables, also known as temporal data tables, are a feature in database systems that allow you to keep track of states of data over time. These tables store historical versions of data, providing a way to query and analyze how data has evolved over different points in time. A mechanism to fly back in time, so to speak. Such a feature is especially useful when handling data that does not only consist of immutable facts, but also data that is mutable or somewhat mutable. There is more mutable data than one might think. Let’s look at an example, a table of employees:

IDfistNamelastName
0MaxMustermann
1ErikaMusterfrau

It looks simple enough, doesn’t it? It’s very immutable at first glance, one might think, but then life happens. Max and Erika get married, so both take the last name “Muster”. A year later, Max decides to be a stay-at-home dad and quits. Now, the table might look like this:

IDfistNamelastName
1ErikaMuster

Answers to the questions: “Did we have an employee called Mustermann?” or “Did we have an employee called Musterfrau” are lost.

One might work around this by adding “employment_start” and “employment_end” columns and maybe some column like “maiden name”, but all of this only covers the cases we thought about. Things like a name change caused by a divorce would not be covered. Furthermore, we haven’t looked at more fluid data like addresses, for example.

From this example, we can see that building a history on the application layer might be a solution, but having a history on the database layer might be more convenient.

Basic layout of a temporal table

Temporal tables contain time slices of each row of the original data table. Practically speaking, all the data with an added “valid_from” and “valid_to” column. By that, there can be multiple rows of our employee data that were valid at different times. The temporal table of our employee table might look like this:

valid_fromvalid_toIDfistNamelastName
2020-01-012021-03-140MaxMustermann
2020-06-012021-03-141ErikaMusterfrau
2021-03-152023-10-310MaxMuster
2021-03-151ErikaMuster

As we can see, all the states of our employee data are preserved in our history table:
We can see that there were once rows of Max Mustermann and Erika Musterfrau that changed to Max & Erik Muster. Afterward, the row of Max Muster stopped to exist.
We don’t have any reasons for these changes, but we have all the history, and we can have that without changing the application by letting SQLite take care of it by using triggers.

Database-Triggers

Database triggers are powerful and versatile tools in the world of database management. Essentially, a database trigger is a set of instructions that automatically execute in response to a specific event or action within a database. The most common events for triggers are data modifications, such as inserts, updates or deletes. We will use triggers to log the data changes to our history / temporal table. One might say we instruct the database to log all changes.

How to get there with SQLite – Technical steps

To get it working there are two steps needed:
1.) Create the history table that holds the historic data based on the original data structure
2.) Create triggers that fill or update the history table on insert, update and delete of the original data.
Both of these steps might be done by hand, but I’m lazy. Therefore, I created a Python script that takes a SQLite Database and a table name and creates SQL-Statements for 1.) & 2.).

The script can be found over on github: https://github.com/balu-/temporal-tables-in-SQLite

Appendix:
I’m not the first one thinking about something like this:
Simon Willison has created something in the same direction (https://simonwillison.net/2023/Apr/15/sqlite-history/). His storage format is more sophisticated and space-preserving, but, in my opinion, less easy to access.
Thatdevsherry (https://github.com/thatdevsherry/historia) has taken a different aproch to reach a similar result. He built a layer between the application and the database, that layer creates, updates history data.

The post Unlocking Time: Harnessing the power of temporal tables in SQLite first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2024/02/19/unlocking-time-harnessing-the-power-of-temporal-tables-in-sqlite/feed/ 0
Modern TLS Version for dovecot & postfix https://www.ohnekontur.de/2023/03/04/modern-tls-version-for-dovecot-postfix/ https://www.ohnekontur.de/2023/03/04/modern-tls-version-for-dovecot-postfix/#respond Sat, 04 Mar 2023 17:05:23 +0000 https://www.ohnekontur.de/?p=3258 (TLS 1.2 or newer) You can use the following settings to ensure that Dovecot and Postfix use a modern TLS version: For Dovecot: For Postfix: Finally, reload Postfix with systemctl reload postfix and restart Dovecot with systemctl restart dovecot.

The post Modern TLS Version for dovecot & postfix first appeared on ohneKontur - der Blog.]]>
(TLS 1.2 or newer)

You can use the following settings to ensure that Dovecot and Postfix use a modern TLS version:

For Dovecot:

  1. Open the file /etc/dovecot/conf.d/10-ssl.conf (Debian).
  2. Uncomment the line starting with ssl_min_protocol and set it to ssl_min_protocol = TLSv1.2.

For Postfix:

  1. Open the file /etc/postfix/main.cf (Debian).
  2. Add the following directive: smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1.

Finally, reload Postfix with systemctl reload postfix and restart Dovecot with systemctl restart dovecot.


The post Modern TLS Version for dovecot & postfix first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2023/03/04/modern-tls-version-for-dovecot-postfix/feed/ 0
Setting up timesync via NTP on debian & raspberry pi https://www.ohnekontur.de/2023/01/06/setting-up-timesync-via-ntp-on-debian-raspberry-pi/ https://www.ohnekontur.de/2023/01/06/setting-up-timesync-via-ntp-on-debian-raspberry-pi/#respond Fri, 06 Jan 2023 19:06:00 +0000 https://www.ohnekontur.de/?p=3247 I use systemd-timesyncd to keep the system time up to date on my raspi / debian system.To do so i did the following steps: 1. Check the state of timedatectlTherefore type the comand timedatectl to the shell.The output should look … Continue reading

The post Setting up timesync via NTP on debian & raspberry pi first appeared on ohneKontur - der Blog.]]>
I use systemd-timesyncd to keep the system time up to date on my raspi / debian system.
To do so i did the following steps:

1. Check the state of timedatectl
Therefore type the comand timedatectl to the shell.
The output should look something like this:

Local time: Fr 2023-01-06 19:34:27 CET
Universal time: Fr 2023-01-06 18:34:27 UTC
RTC time: n/a
Time zone: Europe/Berlin (CET, +0100)
System clock synchronized: no
NTP service: n/a
RTC in local TZ: no

The important part is “System clock synchronized: no” and “NTP service: n/a“. This tells us that there currently is no timesyncing via systemds timedatectl.

2. Install systemd-timesyncd

To install the missing software via apt by typing

sudo apt install systemd-timesyncd

After installing the software the output of timedatectl shows that syncing and ntp is working now:

Local time: Fr 2023-01-06 19:38:40 CET
Universal time: Fr 2023-01-06 18:38:40 UTC
RTC time: n/a
Time zone: Europe/Berlin (CET, +0100)
System clock synchronized: yes
NTP service: active

RTC in local TZ: no

(Optional 3. Configure time servers)

For me the next step was to configure the timeservers that should be used. This might not be needed but my system doesn’t have internet access so the default ntp servers are not accessible. (To show which settings are active currently the comand “timedatectl show-timesync --all” can be used)

The timeservers are configured in /etc/systemd/timesyncd.conf after changing its content the service has to be reloaded/restarted by sudo systemctl restart systemd-timesyncd.

The post Setting up timesync via NTP on debian & raspberry pi first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2023/01/06/setting-up-timesync-via-ntp-on-debian-raspberry-pi/feed/ 0
Erase ESP – quickly reset the wifi chip https://www.ohnekontur.de/2022/12/31/erase-esp-quickly-reset-the-wifi-chip/ https://www.ohnekontur.de/2022/12/31/erase-esp-quickly-reset-the-wifi-chip/#respond Sat, 31 Dec 2022 10:01:49 +0000 https://www.ohnekontur.de/?p=3206 TLDR: Install esptool.py pip3 install esptool Erase flash of the esp esptool.py -- erase_flash One of my smart ESP devices wasn’t responding after a power down. I debugged the problem by connecting it to a serial interface. On the comandline … Continue reading

The post Erase ESP – quickly reset the wifi chip first appeared on ohneKontur - der Blog.]]>
TLDR:
Install esptool.py
pip3 install esptool

Erase flash of the esp
esptool.py -- erase_flash


One of my smart ESP devices wasn’t responding after a power down.
I debugged the problem by connecting it to a serial interface. On the comandline I saw that the chip wasn’t able to connect to its WIFI. To check wether the chip was fried or if its just the software thats messing around I had to delete all of its storage, to reflash the software afterwards. To do that i used the comands stated above.

The post Erase ESP – quickly reset the wifi chip first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2022/12/31/erase-esp-quickly-reset-the-wifi-chip/feed/ 0
reset your philips hue lightstrip without a dimmer switch – using deconz / conbee https://www.ohnekontur.de/2022/10/12/reset-your-philips-hue-lightstrip-without-a-dimmer-switch-using-deconz-conbee/ https://www.ohnekontur.de/2022/10/12/reset-your-philips-hue-lightstrip-without-a-dimmer-switch-using-deconz-conbee/#respond Wed, 12 Oct 2022 20:24:34 +0000 https://www.ohnekontur.de/?p=3213 To reset your philips hue lightstrip philip recomends using their dimmer switch. If you don’t have it or just are to lazy to use it you might also reset / repair the strip using deconz. To do so you need … Continue reading

The post reset your philips hue lightstrip without a dimmer switch – using deconz / conbee first appeared on ohneKontur - der Blog.]]>
To reset your philips hue lightstrip philip recomends using their dimmer switch.
If you don’t have it or just are to lazy to use it you might also reset / repair the strip using deconz.

To do so you need to use the deconz touchlink api (described here):

First step is to search for touchlink devices, its done by:
POST /api/<apikey>/touchlink/scan

Afterwards the result is queryed by
GET /api/<apikey>/touchlink/scan

The result will look something like this
{
"scanstate": "scanning",
"lastscan": "2022-10-12T08:14:12",
"result": {
"1": {
"factorynew": true,
"address": "0x00123abc"
}
},
}

Refresh that url until the scan is finished which is shown by “scanstate” having the value “idle”.

After having the full list of touchlink devices you need to identify which one is the desired light strip. To do so you can lat the devices “blink” by calling
POST /api/<apikey>/touchlink/<result_device_id>/identify where is the result id of the scanresult (like 1 in the example).

When you have the result id of the strip you want to reset simply call
POST /api/<apikey>/touchlink/<result_device_id>/reset

The post reset your philips hue lightstrip without a dimmer switch – using deconz / conbee first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2022/10/12/reset-your-philips-hue-lightstrip-without-a-dimmer-switch-using-deconz-conbee/feed/ 0
Mach’s Förnuftig – Ikeas Förnuftig smart machen https://www.ohnekontur.de/2021/03/02/machs-fornuftig-ikeas-fornuftig-smart-machen/ https://www.ohnekontur.de/2021/03/02/machs-fornuftig-ikeas-fornuftig-smart-machen/#comments Tue, 02 Mar 2021 19:06:11 +0000 https://www.ohnekontur.de/?p=3170 Förnuftig was? Förnuftig ist der neue Luftreiniger von Ikea und als solcher hat er mein Interesse geweckt. Aber scheinbar anders als viele Andere finde ich das Gerät nicht interessant um Viren aus der Luft zu filtern, dazu eignet er sich … Continue reading

The post Mach’s Förnuftig – Ikeas Förnuftig smart machen first appeared on ohneKontur - der Blog.]]>
Förnuftig was?

Förnuftig ist der neue Luftreiniger von Ikea und als solcher hat er mein Interesse geweckt. Aber scheinbar anders als viele Andere finde ich das Gerät nicht interessant um Viren aus der Luft zu filtern, dazu eignet er sich wohl auch nicht. Mir geht es eher um größere Verunreinigungen wie Pollen, Staub o.ä. das sich in der Luft tummelt.

So weit so gut, der Haken: Förnuftig lässt sich von Hause aus so gar nicht ins Smart Home integrieren. Das Gerät hat als Interface lediglich einen Drehschalter mit den Stuffen „Aus“, 1, 2 und 3. That’s all.
Für mich ist hier die Challenge dies zu ändern, denn natürlich möchte ich den Filter am liebsten laufen lassen wenn mich der „Krach“ nicht stört. Und natürlich auch nicht dauerhaft sondern vielleicht in Intervallen. Oder z.B. dann wenn der Staubsauger fährt und Staub aufwirbelt. Und wer weiß was mir sonst noch so einfällt.
Es muss also eine digitale Steuerung ans Gerät.

Abkürzung – der einfache Weg

Der erste Gedanke in Richtung smarte Steuerung war schon da vor dem Gerät:
Entsprechend simpel ist er: Eine schaltbare Steckdose.
Dank des analogen Drehschalters “merkt” sich der Luftfilter seinen Zustand auch ohne Strom. Mit einer schaltbaren Steckdose lässt sich also sehr einfach zwischen “Aus” und der am Gerät eingestellten Stufe umschalten.
Ich hab hier einfach zu einer Steckdose mit Tasmota Firmware gegriffen,
zum einen weil ich sie da hatte, zum anderen da diese sich super ohne Cloudanbindung nutzen lässt.

Die Umsetzung ist einfach, Zwischenstecker rein, fertig, aber die Möglichkeiten sind es leider auch. Die schaltbare Steckdose kann also nur ein erster Schritt sein. Deshalb hab ich mir als nächstes das Innenleben angesehen.

Aufschrauben

Wenn man die Stoffbespannung und den Filter aus dem Gerät entfernt, offenbart sich der Förnuftig als schlichter, in meinem Fall schwarzer Kasten.

Förnunftig - Innenleben

Dabei wirkt das Plastik aus einem Guss, abgesehen von einem Streifen an der Oberseite, der sich auf der Unterseite zum Drehknopf befindet und in dem sich der kleine rote Knopf befindet.
Interessanterweise ist dieser Plastikstreifen mit “normalen” Philipps Schrauben befestigt, wohin gegen die restlichen Schrauben ein Dreiecks-Profil aufweisen.
Nach dem Lösen der beiden Schrauben kann der Plastikstreifen nach oben abgehoben werden. Darunter offenbart sich ein Teil der Elektronik.Förnuftig - Offen

Zum Vorschein kommt eine kleine Platine. Netterweise ist sie nicht überkomplex, hat nur einen Layer und der ist auch schön beschriftet. Ohne wirklich geschaut zu haben was passiert vermute ich dass diese Platine einefach eine Art PWM Signal für den Lüftermotor erzeugt. Aber so tief will ich gar nicht einsteigen, mir reicht es den Drehschalter zu “automatisieren”.

Förnuftig - Platine

Selbiger sitzt über den zwei 5er Kontaktreien auf dem “leer” scheindenden Platz der Platine.

Platine von oben

Messen

Ausgebaut und von oben sieht die Platine aus wie obriges Foto, geprägt vor allem durch den großen Drehschalter. Die Beschriftungen auf der Platinen unterseite weisen darauf hin, dass die Logik mit einem 5V Pegel arbeitet. Um das zu bestätigen habe ich flux das Multimeter verwendet und gemessen was beim Einstellen der verschiedenen Stufen geschieht. Dabei kam herraus, dass der Drehschalter 4 der von oben betrachteten rechten Pins schaltet. Für jeden Status (Aus, I, II und III) wird ein ander Pin auf GND gezogen. Für Aus der Erste, für I der Zweite etc. Es ist je nur der eine Pin geschaltet, die anderen Pins sind durch die Pull-Ups auf der Platine auf High (5V) gezogen [also bei aus 2, 3 und 4 auf 5V, bei I 1, 3 und 4 etc].

Löten

Nach dieser Erkenntnis kann der Schalter ab, und durch einen ESP ersetzt werden.

Platine ohen Schalter Platine mit ESP

Aufgrund der 5V Logik reicht leider der ESP alleine nicht, sonder es ist auch ein Pegelwandler nötig der die 3,3V des ESP auf 5V umsetzt. Außerdem braucht der ESP durchaus etwas Strom. Deshalb ist noch einen DC-DC Wandler nötig, der aus den 24V des Netzteils 3,3V für den ESP erzeugen kann.

Das wars mit der Hardware, jetzt noch Software auf den ESP. Am einfachsten Tasmota und zack lässt sich der Luftfilter via MQTT schalten 🥳

The post Mach’s Förnuftig – Ikeas Förnuftig smart machen first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2021/03/02/machs-fornuftig-ikeas-fornuftig-smart-machen/feed/ 3
Garmin vivofit and the use without the garmin cloud https://www.ohnekontur.de/2015/04/07/garmin-vivofit-and-the-use-without-the-garmin-cloud/ https://www.ohnekontur.de/2015/04/07/garmin-vivofit-and-the-use-without-the-garmin-cloud/#comments Tue, 07 Apr 2015 10:22:58 +0000 https://www.ohnekontur.de/?p=3001 Data is intersting, at least in my eyes. All the more if its data about myself. As a result i was quite interested in all the fittness-trakers that recently came to market. But there was one other point that held … Continue reading

The post Garmin vivofit and the use without the garmin cloud first appeared on ohneKontur - der Blog.]]>
Data is intersting, at least in my eyes. All the more if its data about myself. As a result i was quite interested in all the fittness-trakers that recently came to market. But there was one other point that held me back. In my opinion private data, among whom i include movement and sleeping data, should not float around in ”the cloud”. Cause “(t)here is no cloud – just other people’s computers”. Further more i don’t like to have an other device that needs to charge every night. It just sucks, and too often I already forget to charge my phone.

By accident I ended up with an Garmin vivofit, that luckily could meet all of my requirements in the end. But first things first, the Garmin vivofit is a bracelet that tracks movements. It distincts between steps walked, steps runned and movement done while asleep. You might think that its not much but this data is quite interessting. Its amazing how many/ how little steps one does during the days. The vivofit runs on batteries, that should last for one year and may be replaced afterwards. So the no charging requirement is met. Whats left is the cloud connection. Out of the box the vivofit syncs with garmin apps against the “garmin connect” cloud. But…

Get the data from vivofit localy

But luckily there is a python implementation of the ant+ protocoll (openant). It’s the protocol that is used by the vivofit to transmit its data. Further more there is python code to download all the data from the vivofit, so called ‘.fit’ files. Its called antfs-cli. Now one may decode the ‘.fit’ files and extract its values to generate statisitcs, graphics and so on. I’ve written some code to dump the ‘.fit’ content to the mysql-db of a remote webserver, and further some php & js number of steps per day. If there is interest drop me a line and I might publish the code. Further more I think about creating a detailed description how to setup a raspi to read data from vivofit and display the data on a website.

After using all the python projects and my own code, the vivofit meets all my expectations.
And works like a charm.

 

The post Garmin vivofit and the use without the garmin cloud first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2015/04/07/garmin-vivofit-and-the-use-without-the-garmin-cloud/feed/ 3
CMD-Q Catcher https://www.ohnekontur.de/2014/11/30/cmd-q-catcher/ https://www.ohnekontur.de/2014/11/30/cmd-q-catcher/#respond Sun, 30 Nov 2014 22:52:43 +0000 https://www.ohnekontur.de/?p=2733 If you’re a mac user you might know that moment, you hand your keyboard to someone else to type his email-address in some webform… After a view moments “CMD+Q” is pressed in order to create an @. Instead of showing … Continue reading

The post CMD-Q Catcher first appeared on ohneKontur - der Blog.]]>
If you’re a mac user you might know that moment, you hand your keyboard to someone else to type his email-address in some webform… After a view moments “CMD+Q” is pressed in order to create an @. Instead of showing the intended sign the your browser is shut-down. This happens due to the fact that the @-Sign is, other then on a windows or linux pc, created via “ALT+L” on a mac. Also browser shutdown isn’t a big deal, if you’re a tab-messi like me ( there are always a few hundred open tabs, don’t know where they came from ;) ) it takes a few moments till it’s back up again.
Furthermore the already filled fields of the form are lost and have to be filled again.

Some day the described bugged me enough so i created an add-on which prevents firefox from shutting down if “CMD+Q” is pressed only once. The Add-on is called “CMD-Q Catcher” and may be found at the Mozilla-Add-on Repository. If you’ve found yourself in the same Situation in the past this add-on will help you in the feature.

The post CMD-Q Catcher first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2014/11/30/cmd-q-catcher/feed/ 0
Make ssh’s VerifyHostKeyDNS work on OSX as it should https://www.ohnekontur.de/2014/10/17/make-sshs-verifyhostkeydns-work-on-osx-as-it-should/ https://www.ohnekontur.de/2014/10/17/make-sshs-verifyhostkeydns-work-on-osx-as-it-should/#comments Fri, 17 Oct 2014 14:18:41 +0000 https://www.ohnekontur.de/?p=2713 Finaly there is MacOS X Yosemite. With it hopefully an update of the default openssh client app i thought. After installing the update i had to admit, i was wrong. Same old OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 as in … Continue reading

The post Make ssh’s VerifyHostKeyDNS work on OSX as it should first appeared on ohneKontur - der Blog.]]>
Finaly there is MacOS X Yosemite.
With it hopefully an update of the default openssh client app i thought. After installing the update i had to admit, i was wrong. Same old OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 as in Maverics. With the same old bug (??) mentioned here, where adding -o VerifyHostKeyDNS=yes leads to

DNS lookup error: general failure
No matching host key fingerprint found in DNS.

That’s not nice. I do want to use SSHFP, partly because i think its a nice feature, partly because i hardly ever check the fingerprints of my hosts.

So lets fix OS X ssh client, shall we.

Key is building a new version of openssh. The easiest way to do so is using Homebrew. So install brew, if you havent allready.
After wards we need to add the ‘brew recipes’ for software thats already on a mac by default. This is done by
brew tap homebrew/dupes.
Half way there, secound step is to build openssh. We’ll build it with a few extra options. Worth to be mentioned is --with-ldns. As Jan-Piet Mens explains in his intresting post VerifyHostKeyDNS=yessssss using ldns is mainly about openssh being able to make sure valid dnssec is used for the record, and therefor not bothering you if there is a valid key as a SSHFP record secured by dnssec.
Openssh is build by
brew install openssh --with-brewed-openssl --with-keychain-support --with-ldns
Afterwards just follow the instructions given by brew:

For complete functionality, please modify:
/System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
and change ProgramArguments from
/usr/bin/ssh-agent
to
#{HOMEBREW_PREFIX}/bin/ssh-agent
Finally, add these lines somewhere to your ~/.bash_profile:
eval $(ssh-agent)
function cleanup {
echo "Killing SSH-Agent"
kill -9 $SSH_AGENT_PID
}
trap cleanup EXIT

\o/ We are done, ssh with -o VerifyHostKeyDNS=yes will work smoothly and hardly ever confirmed known_host-file hashes should be history.

The post Make ssh’s VerifyHostKeyDNS work on OSX as it should first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2014/10/17/make-sshs-verifyhostkeydns-work-on-osx-as-it-should/feed/ 2
Dropboxalternativen, ein Resumee https://www.ohnekontur.de/2014/08/13/dropboxalternativen-ein-resumee/ https://www.ohnekontur.de/2014/08/13/dropboxalternativen-ein-resumee/#comments Wed, 13 Aug 2014 09:26:06 +0000 http://www.ohnekontur.de/?p=2611 Schon vor Snowden fand ich es spannend Services selber zu betreiben und zu verstehen wie die Techniken funktionieren. Der “Heilige Gral” in dieser Beziehung war und ist für mich zum großen Teil Dateisynchronisation. Quasi genau das was Dropbox macht, nur … Continue reading

The post Dropboxalternativen, ein Resumee first appeared on ohneKontur - der Blog.]]>
Schon vor Snowden fand ich es spannend Services selber zu betreiben und zu verstehen wie die Techniken funktionieren. Der “Heilige Gral” in dieser Beziehung war und ist für mich zum großen Teil Dateisynchronisation. Quasi genau das was Dropbox macht, nur halt eben ohne auf fremde Server angewiesen zu sein.
Um genau das zu realisieren habe ich mitlerweile diverse “alternative” Tools ausprobiert. Von Teamdrive über SparkleShare bis Owncloud war alles was irgendwie aufzufinden war früher oder später dabei. So richtig konnte allerdings keins der Tools den gesuchten Dropbox-Ersatz bieten.

Aber langsam, was ist das eigentliche Problem?
Ich habe zwei Rechner die ich sehr abwechselnd Benutze, und eine handvoll Dateien die ich mal hier und mal da brauche. Die gesuchte Software soll also die synchronisation der Datein bieten, so das die Datein offline auf den jeweiligen Rechnern zur Verfügung stehen. Die Software darf gerne mit einem Serverteil reden, dieser muss aber selbst betreibbar sein.

Was die Software nicht können muss:
Hellsehen können. Was ich damit meine ist, es ist klar das wenn Änderungen ein und der selben Datei gleichzeitig geschehen kann Software nicht zuverlässig sagen was das richtige ist. Das ist auch Okay, so lange dann einfach beide Dateien (z.B. mit unterschiedlichen Namen) weiterexistieren.

Die getestete Software:

Teamdrive – war die erste derartige Software auf die ich stieß (damals 2009). Daher ist mein Eindruck auf schon ein paar Tage alt, dennoch war er so ernüchternd das ich das nicht noch mal brauche. Zum einen erfüllte Teamdrive nur halb die Anforderungen, da es zwar die Daten die Synchornisiert werden auf einem beliebigen Webdav speicher ablegen konnte, aber zum Betrieb dennoch ein Teamdrive-Account benötigt wurde. Damals musste ich zudem beobachten, dass über die Email-Addresse welche ich nur für jenen Account verwendet habe nach einiger Zeit massiv Spam an kam. Zwar kann das Zufall sein, ein unschöner beigeschmack blieb trotzdem, und Teamdrive kann ich guten gewissens keinem Empfehlen.

Als Ersatz für Teamdrive tat sich bald SparkleShare auf. Bei Sparkleshare handelt es sich im Prinzip um ein Frontend für Git, was es zu Synchronisation tut ist nämlich das automatische commiten / pushen und pullen von git repos. Git zu erklären würde hier zu weit führen, nur so viel es ist ein Versionscontrollsystem zum verwalten von Sourcecode. Git an dieser Stelle zu verwenden ist eigentlich keine schlechte Idee, kommt allerdings mit dem ein oder anderen Nachteil: Git ist nicht gut geeignet größere Binärdateien zu verwalten. Auch vergisst git nicht, will sagen alle Dateien die über Sparkleshare synchronisiert wurden liegen, auch nachdem sie aus dem Ordner gelöscht wurden, noch im Git. Das muss kein Nachteil sein, aber man muss es eben wissen (und am besten noch wissen wie man mit git umgeht um diese Altlasten eventuell wieder loszuwerden wenns doch mal zu viel wird). Manchmal muss man halt unter die Haube, ansonsten tut SparkleShare aber sehr gut das was es soll und vorallem das ganze auch Cross-Platform unter Linux und MacOS (ja sogar auch Windows… ;) ).

Kurz darauf macht Owncloud gefühlt mit viel Wind von sich reden. Leider war das Ergebnis sehr ernüchternd, Owncloud kann sicher eine Menge, beim Dateisync zeigt es aber eher ein mangelhaftes Bild. Bei zwei gleichzeitigen Änderungen geht eine einfach Verloren, im nichts und ohne Hinweis. Das geht für mich einfach so garnicht, damit erledigte sich der Owncloud ausflug sehr schnell wieder.

Auch wenn SparkleShare seine Sache im Großen ganzen ganz gut macht halte ich natürlich weiter die Augen offen. So stieß ich die Tage auf ein scheinbar weniger bekanntes Tool namens OmniPresence. Dabei handelt es sich um ein Tool das von der Firma Omni geschaffen wurde, um Synchronisation für ihre eigene Software (OmniOutliner und OmniFocus) zu bieten. Allerdings Synchronisiert das Tool einfach einen Ordner und ist auch dafür gemacht Dateien unabhänig der OmniTools zu Synchronisieren. Als Backend spricht OmniPresence mit einem simplen Webdav-Server, wodurch auch größere und binärdateien kein Problem sind. Einziger Haken, OmniPresence gibt es leider nur für den Mac, sprich sobald es um Synchronisierung von Geräten geht bei denen nicht alle Macs sind scheidet OmniPresence leider aus.

Alles in allem bleibt als SparkleShare mein Favorit, allerdings finde ich OmniPresence von der Oberfläche und dem “Gefühl” her schöner ohne Linux support nützt mir das nur leider wenig.

The post Dropboxalternativen, ein Resumee first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2014/08/13/dropboxalternativen-ein-resumee/feed/ 4
[ FSyncMS ] Version 0.13b – Password Change Bug-fix https://www.ohnekontur.de/2014/04/18/fsyncms-version-0-13b-password-change-bug-fix/ https://www.ohnekontur.de/2014/04/18/fsyncms-version-0-13b-password-change-bug-fix/#comments Fri, 18 Apr 2014 13:11:22 +0000 http://www.ohnekontur.de/?p=2497 There has been a bug in FSyncMS v 0.13: if you tried to update your password via Firefox, the wrong hash was written in the Database. As a result the account was no longer usable, but no data should be … Continue reading

The post [ FSyncMS ] Version 0.13b – Password Change Bug-fix first appeared on ohneKontur - der Blog.]]>
There has been a bug in FSyncMS v 0.13: if you tried to update your password via Firefox, the wrong hash was written in the Database. As a result the account was no longer usable, but no data should be lost.
This update fixes the Bug.

Download newest Version

The post [ FSyncMS ] Version 0.13b – Password Change Bug-fix first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2014/04/18/fsyncms-version-0-13b-password-change-bug-fix/feed/ 2
Merkwürdige Dinge https://www.ohnekontur.de/2013/11/22/merkwurdige-dinge/ https://www.ohnekontur.de/2013/11/22/merkwurdige-dinge/#respond Fri, 22 Nov 2013 09:24:02 +0000 http://www.ohnekontur.de/?p=2357 oder Warum mein WordPress plözlich Javascripts von google lud Ich bastele gerne mal und probiere dabei Dinge aus, einfach weils geht. Wie der Zufall so will war heute dieser Blog dran. Ich hatte bereits vorher hin und wieder an Optimierungen … Continue reading

The post Merkwürdige Dinge first appeared on ohneKontur - der Blog.]]>
oder Warum mein WordPress plözlich Javascripts von google lud

Ich bastele gerne mal und probiere dabei Dinge aus,
einfach weils geht. Wie der Zufall so will war heute dieser Blog dran. Ich hatte bereits vorher hin und wieder an Optimierungen geschraubt, dabei allerdings immer auf Datenspaarsamkeit und ähnliches geachtet.
Google Analytics kam daher z.B. bisher nicht in Frage. [Ja das ist einfach ein bischen meine Macke]

Umso mehr verwunderte es mich, als ich dann heute feststellte das dieser, mein eigener Blog, Skripte von Google nach lud. Und das gleich garnicht zu knapp: Ganze neun Scripte wurden bei einem Seitenaufruf von ajax.googleapis.com geladen. Der Sache musste also nachgegangen werden. Drehte vielleicht eines der Pluings frei, war in einem der letzten Updates eine entsprechende Änderung gewesen oder am schlimmsten gar war es eventuell jemandem gelungen Code bei mir einzuschläusen ?

Die Google-Suche war leider wenig erfolgreich. Lediglich einige Blogposts die beschrieben wie man all seine Scripte von Google läd tauchten auf, und das war ja nun genau das gegenteil von dem was ich suchte. Da das nun also nicht half war der nächste logische Schritt mal zu schauen wo diese Einbindung den eigentlich stattfindet. Also Shell aufgemacht, und die WordPressfiles nach “ajax.googleapis.com” durchsucht. Das Ergebnis deutete Relativ eindeutig auf “wp-includes/script-loader.php”. Hier werden scheinbar diverese “scriptaculous” Scripte aus den googleapis eingebunden.
Na das war zumindest schon mal konkreter. “wp-includes/script-loader.php” ist aber kein File eines Plugins, dass ist ein File des WordPress-Cores. Also nochmal schnell in die Suchmaske, und siehe da unter “Removed from Core” tatsächlich wurde in Version 3.5 diverse Scriptaculous-Scripte von “Mitgeliefert” auf die “Google-Version” umgestellt. WordPress-Core,umgestellt, dann müssten ja andere das “selbe Problem” haben, so dachte ich. Nun gut, schnell in ein-zwei WordPressblogs befreundeter Nerds aufrufen. Aber hier war keine Spur von “ajax.googleapis.com”.
Also doch mal genauer schauen wie das mit diesen Javascript libs in WordPress funktioniert.

Wenig später war dann auch die Sachlage klar und der “Schuldige” gefunden:
Wordpress hat ganz grob gesagt, einen Mechanismus der scheinbar verhindert das Scripte mehrfach eingebunden werden. Daher wird ein Script registriert (das passiert für die googleapi Scripte in der “script-loader” Datei). Wird das Script anschließend benötigt wird eine Funktion aufgerufen (bei den Scriptaculous-Scripten war es bei mir das Lightbox-Plugin) die dann dafür sorgt, das das Script eben genau nur ein mal eingebunden wird.
Sprich der eine Schuldige sind eigentlich zwei. Wobei das Lightbox-Plugin nicht wirklich was dafür kann, denn bei dessen letztem Update lieferte WordPress die entsprechenden Scripte noch frei Haus mit.

Abschließend ein etwas unschönes Problem, vor allem da mir kein schöner Lösungsweg klar ist.
Natürlich kann ich das Lightbox-Plugin deaktivieren, aber das kann ja nicht die Idee sein.
Ich kann natürlich auch in dem script-loader File die Locationen der Scriptaculous-Scripte von Googleapis auf meine Domain biegen, aber das ist nicht nur extrem unschön sondern geht auch bei jedem Update flöten.

The post Merkwürdige Dinge first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2013/11/22/merkwurdige-dinge/feed/ 0
Cisco – Das erste Mal https://www.ohnekontur.de/2013/11/09/cisco-das-erste-mal/ https://www.ohnekontur.de/2013/11/09/cisco-das-erste-mal/#respond Sat, 09 Nov 2013 22:25:45 +0000 http://www.ohnekontur.de/?p=2351 Nein ich bin kein Netzwerkspezialist, nein auch kein Unix-Spezialist, und dennoch das ein oder ander unixuide Gerät und das ein oder andere (wenn auch eher Enduser) Netzwerkdevice kamen mir doch schon mal in die Finger. Aber der Cisco-Kram war irgendwie … Continue reading

The post Cisco – Das erste Mal first appeared on ohneKontur - der Blog.]]>
Nein ich bin kein Netzwerkspezialist,
nein auch kein Unix-Spezialist,
und dennoch das ein oder ander unixuide Gerät und das ein oder andere (wenn auch eher Enduser) Netzwerkdevice kamen mir doch schon mal in die Finger.
Aber der Cisco-Kram war irgendwie anders.

Voll der Erwarung, dass das ja jetzt irgendwie hochglanz und hochnützlich -weil endlos teuer- sein müsste saß ich also vor dem Gerät.
Da saß ich also, und beim sitzen blieb es auch erstmal,
denn das passende hellblaue “Cisco-“Consolenkabel fehlte.
Ja, na gut, mein Fehler, hätte man auch früher dran denken können.
Also $Leute nach Kabel fragen, und hey das hat auch super geklappt.
Aber auch mit dem Kabel war es irgendwie unrund.
Die Console so völlig ungewohnt, na gut aber ich hab sowas ja auch noch nie gemacht.
Ohne zu wissen was ich tat also durch Konsole, Google und schließlich das Webinterface gehangelt,
und es ging … nicht.

Also andere Nerds mit Ahnung involvieren, weiter frickeln…

Ich viel vom Glauben ab als sich so ganz zum Schluss rauskristalisierte, dass die Hardware erst per TFTP mit aus $quellen bezogenen Images versorgt werden musste, damit die Funktionalität die man vorher schon konfigurieren konnte überhaupt da war.

Enterprise und so, wissen schon.

The post Cisco – Das erste Mal first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2013/11/09/cisco-das-erste-mal/feed/ 0
[ FSyncMS ] Version 0.13 – Database upgrade https://www.ohnekontur.de/2013/07/05/fsyncms-version-0-13-database-upgrade/ https://www.ohnekontur.de/2013/07/05/fsyncms-version-0-13-database-upgrade/#comments Fri, 05 Jul 2013 01:46:40 +0000 http://www.ohnekontur.de/?p=2299 It has been a while since the last FSyncMS update so here is a new Version. The main new feature is that its now possible to store the user password as a bcrypt hash and one does no longer depend … Continue reading

The post [ FSyncMS ] Version 0.13 – Database upgrade first appeared on ohneKontur - der Blog.]]>
It has been a while since the last FSyncMS update so here is a new Version.
The main new feature is that its now possible to store the user password as a bcrypt hash and one does no longer depend on MD5 for this.
Thanks to Trellmor for this new feature.

Also it’s recommended to use bcrypt as hashalgorythm from now on, and this is default for new installtions, existing installations wont change algorythm automaticaly.

But changing the algorythm in existing installations is quiet easy.
As always you should remember doing a backup at first.
After that do this simple steps:

  1. First the DB scheme has to be updated, so that the filed named ‘md5’ can take 124 Characters. If you use mysql this change will be done by the following sql statement
    ALTER TABLE `users` CHANGE `md5` `md5` VARCHAR( 124 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;

    .

  2. After adapting the DB, you may enable bcrypt by adding
    define("BCRYPT", true); 
    define("BCRYPT_ROUNDS", 12);

    to your config.php

  3. As last step you simply have to sync. While the correspoding login, the FSyncMS-Software will replace the Passwordhash in your database with the new version.

Further more, if you’re using sqlite, you may now change the destination or name of the database file in config.php,
by the a statement like this:

define("SQLITE_FILE", "weave_db");

In this context I want to remind that the weave_db should never be accessible directly via web, also its data should be encrypted.
So eighter use .htacces or similar technology to deny access to this file via browser, or move it anywhere that is not served via your webserver.

Download newest Version

The post [ FSyncMS ] Version 0.13 – Database upgrade first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2013/07/05/fsyncms-version-0-13-database-upgrade/feed/ 6
Debian Wheezy, Atom N2800 and graphic https://www.ohnekontur.de/2013/05/12/debian-wheezy-atom-graphic/ https://www.ohnekontur.de/2013/05/12/debian-wheezy-atom-graphic/#comments Sun, 12 May 2013 00:44:00 +0000 http://www.ohnekontur.de/?p=2285 I recently upgraded some debian installations to the currently newest Version (wheezy). While most of the upgrades went very smooth, I ran into some trubles updating a system running on a Intel Atom Board. As I reboted the mentiond system … Continue reading

The post Debian Wheezy, Atom N2800 and graphic first appeared on ohneKontur - der Blog.]]>
I recently upgraded some debian installations to the currently newest Version (wheezy).
While most of the upgrades went very smooth, I ran into some trubles updating a system running on a Intel Atom Board.
As I reboted the mentiond system to boot the new kernel the VGA signal droped.

In the end it seems to be a bug in the 'gma500_gfx' module witch caused the Graphic-Blackout.
After blacklisting the mentiond modul, it worked again as it should.

The post Debian Wheezy, Atom N2800 and graphic first appeared on ohneKontur - der Blog.]]>
https://www.ohnekontur.de/2013/05/12/debian-wheezy-atom-graphic/feed/ 1