Golang, PostgreSQL and array_agg
If you have SQL like this:
Microservice architecture patterns
Why do you need a microservice architecture? Decrease blast radius of problems and increase flexibility. You want technology diversity in your company. You want to scale your app more granular according to consumer needs. You want newcomers to be productive earlier. You want your company structure to be mirrored with technical responsibilities (it’s mainly about …
Postgresql: style guide for DataGrip
Place it into xml file and import into DataGrip or another jetbrains’ product
PostgreSQL: using indices on json fields
It’s obviously a really bad idea. But if you really need it, that’s what you can do.
Postgresql: show all locked queries
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
WITH RECURSIVE l AS ( SELECT pid, locktype, mode, granted, ROW(locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid) obj FROM pg_locks ), pairs AS ( SELECT w.pid waiter, l.pid locker, l.obj, l.mode FROM l w JOIN l ON l.obj IS NOT DISTINCT FROM w.obj AND l.locktype=w.locktype AND NOT l.pid=w.pid AND l.granted WHERE NOT w.granted ), tree AS ( SELECT l.locker pid, l.locker root, NULL::record obj, NULL AS mode, 0 lvl, locker::text path, array_agg(l.locker) OVER () all_pids FROM ( SELECT DISTINCT locker FROM pairs l WHERE NOT EXISTS (SELECT 1 FROM pairs WHERE waiter=l.locker) ) l UNION ALL SELECT w.waiter pid, tree.root, w.obj, w.mode, tree.lvl+1, tree.path||'.'||w.waiter, all_pids || array_agg(w.waiter) OVER () FROM tree JOIN pairs w ON tree.pid=w.locker AND NOT w.waiter = ANY ( all_pids ) ) SELECT (clock_timestamp() - a.xact_start)::interval(3) AS ts_age, replace(a.state, 'idle in transaction', 'idletx') state, (clock_timestamp() - state_change)::interval(3) AS change_age, a.datname,tree.pid,a.usename,a.client_addr,lvl, (SELECT count(*) FROM tree p WHERE p.path ~ ('^'||tree.path) AND NOT p.path=tree.path) blocked, repeat(' .', lvl)||' '||left(regexp_replace(query, '\s+', ' ', 'g'),100) query FROM tree JOIN pg_stat_activity a USING (pid) ORDER BY path; |
Smart Home systems
There are quite a lot of that systems: MajorDoMo OpenHab Iobroker Domoticz HomeAssistant The most interesting ones are: Iobroker (Node.js-based) HomeAssistant (based on Python 3)
Install exact version via brew
For instance, we’re looking for kubernetes-helm@2.9 helm 2.9
1 2 3 4 5 6 |
git -C "$(brew --repo homebrew/core)" fetch --unshallow cd "$(brew --repo homebrew/core)" git log Formula/kubernetes-helm.rb # searching for 2.9.0 with a command /2\.9\.0 and copying hash like "7ade79f13b4bbcc6126803245594d97b2abbe2fa" git checkout -b kubernetes-helm@2.9.0 7ade79f13b4bbcc6126803245594d97b2abbe2fa HOMEBREW_NO_AUTO_UPDATE=1 brew install kubernetes-helm |
Now we have needed version of helm. If you see an error message like Error: go: unknown version :mountain_lion, you should make a little hack (as it said here). Check all the files depending on
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
grep 'depends_on :macos => :mountain_lion' Formula/* # you'll see something like Formula/bashdb.rb: depends_on :macos => :mountain_lion Formula/chrome-cli.rb: depends_on :macos => :mountain_lion Formula/clipsafe.rb: depends_on :macos => :mountain_lion Formula/go.rb: depends_on :macos => :mountain_lion Formula/go@1.8.rb: depends_on :macos => :mountain_lion Formula/go@1.9.rb: depends_on :macos => :mountain_lion Formula/ios-sim.rb: depends_on :macos => :mountain_lion Formula/mesos.rb: depends_on :macos => :mountain_lion Formula/mongodb.rb: depends_on :macos => :mountain_lion Formula/mongodb@3.0.rb: depends_on :macos => :mountain_lion Formula/mongodb@3.2.rb: depends_on :macos => :mountain_lion Formula/mongodb@3.4.rb: depends_on :macos => :mountain_lion ... |
In each file just comment a string saying depends_on :macos …
docker-compose example for ceph, kafka, postgres cluster
That is how it can be done:
Setting zsh on you mac
This gist is great: https://gist.github.com/kevin-smets/8568070 I just added these line at the bottom:
1 2 3 4 5 6 7 |
plugins=(zsh-autosuggestions git) DEFAULT_USER=... POWERLEVEL9K_SHORTEN_DIR_LENGTH=2 source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
List of embedded plugins: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins Custom plugins are installed here — ~/.oh-my-zsh/custom/plugins (actually, $ZSH_CUSTOM/plugins). Like this:
1 |
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions |
CO2 sensor DIY
Article says how to make your own CO2 sensor with Arduino and visualize data with Grafana. It’s in Russian. https://ovcharov.me/2018/10/21/co2-sensor-mh-z19b/