Loose or tight coupling experience

The target is to get some time series data in any currency, multiply it with an FX and store it in EUR. First approach was something like:

  1. “crawl time series and write in table a”.py everyhour
  2. “crawl fx time series and write in table b”.py everyhour
  3. “read table a & read table b, multiply and write in table c”.py everyhour

Everything went well and I came up with the idea: “Could the third step not be done by the MySQL-db itself?”

  1. “crawl time series and write in table a”.py everyhour
  2. “crawl fx time series and write in table b”.py everyhour
  3. table a uses the AFTER INSERT & AFTER UPDATE function to trigger the transformation and storage in table c. As example added the following code to table a:

CREATE DEFINER=wolfgang@localhost TRIGGER raw_cps_AFTER_INSERT AFTER INSERT ON raw_cps FOR EACH ROW BEGIN
IF NEW.currency = 'USD' THEN
SELECT USD FROM investment_db.ts_pivot_currency WHERE date=NEW.date INTO @FX;
SET @value_fx = NEW.value/@FX;
INSERT INTO investment_db.fun_cps (pk, date, value,currency)
VALUES(NEW.pk, NEW.date, @value_fx, 'EUR')
ON DUPLICATE KEY UPDATE value=@value_fx, currency='EUR';
END IF;
END

… and then i noticed that i get an error in my “crawl time series and write in table a”.py. There was data in table a. Conclusion step (1) = ok. Also there was a lot of data in table b and table c. So was step (2) and step (3) = ok. No!

Tight coupling introduced by mistake!

Because of one missing FX entry, the multiplication failed and due to that the error was transferred to the python script. Because the script was running in an container and some quick and dirty programming, it was permanently restarted 😉

Links

Investment

TitleContentDateStarsLink
FREDEconomic Data Source2021/07/155Link
multpl.comEconomic Data Source, especially S&P 500 Time Series on PER, PBR, …2021/07/155Link

Software

TitleContentDateStarsLink

BIND DNS Server

Based on Ubuntu Server, Bind9 & Webmin.

Solving the “127.0.0.53” isse:

sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

Solving issue on “NDC command failed : rndc: connect failed: 127.0.0.1#953: connection refused” by just installing it on BIND with “Setup RNDC”.

SSH – Secure Shell

How it works?

Client knocks at the servers door. Server sends public key.
Client checks if he knows the public key according to ˜/.ssh/known_host and if not it can be added by manual confirmation –> the server becomes accepted.

Client and server negotiate based on the ‘Deffie-Hellman-Algorithm’ an session key, that is shared equally and used for encryption & decryption.

Client sends and ID for a key pair (public/private). Server generates a random number, encrypts it with the public key and sends it to the client.
Client decrypts the number with the private key, calculates an MD5 hash and sends it to the server. The server compares the MD5 hash with and own calculated MD5 hash based on the original random number and identifies the client.

SSH without entering a password

Generate a public key with 8192 bit and use no password (just type enter):

ssh-keygen -b 8192

Upload the public key to the server:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

Test the connection:

ssh 'user@server'