having fun

Git для самых маленьких и для совсем больших


Git LFS vs Git Annex:

side-to-side comparison: https://workingconcept.com/blog/git-annex-vs-git-lfs (pdf)
вводный обзор, как работать с annex: https://blog.debiania.in.ua/posts/2013-12-15-advertising-git-annex.html (pdf)

Основное юзабилити-отличие:

With Git LFS, new developers cloning a Git LFS-enabled repo for the first time don’t need to know anything about it. They can use «git lfs clone» to have that initial clone come down faster, but they don’t have to. «git clone» alone is all they need.

Based on my reading just now (mainly Git Annex vs. Git LFS), with Git Annex new developers cloning the repo for the first time must also remember to invoke «git annex sync —content» after cloning. They must also remember to run that same command after adding new files.

While it probably does not seem like a lot to remember (one extra command to type), in my experience adding one extra command to a workflow can impair productivity pretty signficantly — especially if people sometimes forget to run that command.

— https://www.reddit.com/r/git/comments/7vgudg/why_or_is_git_lfs_winning/

Backing up Mikrotik RouterOS config to Git repository

cd /home/user/
/usr/bin/ssh -i /home/user/.ssh/id_rsa admin-ssh-account@ip.address.of.mikrot "export" > /home/user/mikrot-config/mikrot.conf 2>&1
#deletes first line with datetime for committing only config changes
/bin/sed -i '1{/by RouterOS 6/d;}' /home/user/mikrot-config/mikrot.conf
git add ./mikrot.conf
git commit -m "backup as of $(/bin/date +\%Y-\%m-\%d-\%H-\%M-\%S)"

if you need to backup a lot of hosts and webface for backup control, check https://www.ekzorchik.ru/2019/03/backing-up-mikrotik-via-oxidized/ (pdf)

Git clone branch from one remote to another by webhook call

quick and (very) dirty:


git clone repo.git
cd repo
git status
git remote -v
git remote set-url --push origin git@github.com:User/repo.git

this should set your remote.origin.pushurl to another path, check it with

git remote -v

2. check it with

git pull origin master && git push

3. make sure you set your private and public ssh keys for pulling and pushing seamlessly

4. write bash script for this, for example:

cd /home/lol/repo/
echo $(date +%Y-%m-%d-%H:%M) >> /home/lol/copy-repo.log
git pull origin master >> /home/lol/copy-repo.log 2>&1
git push >> /home/lol/copy-repo.log 2>&1

You can skip and do this directly from within Python flask server with https://gitpython.readthedocs.io/en/stable/tutorial.html

5. Set up webhook @ first webservice to call @ push event. Write flask-server for getting webhooks, open incoming port, for example:

from flask import Flask
from flask import request
from bitbucket_webhooks import event_schemas
from bitbucket_webhooks import hooks
from bitbucket_webhooks import router
import subprocess

app = Flask(__name__)

@app.route("/hooks", methods=["POST"])
def bb_webhooks_handler():
    router.route(request.headers["X-Event-Key"], request.json)
    return ("", 204)

def _handle_repo_push(event: event_schemas.RepoPush):
    print(f"One or more commits pushed to: {event.repository.name}")

if __name__ == '__main__':
    app.run(host="", port=617, debug=False)

or if you prefer bash+netcat-like way, consider trying this https://gist.github.com/orangeblock/15ee8e3cb304a4046082b422adaaf5fb

6. wrap it into waitress call (i don’t know why but flask says it sufficient 😀 ):

if __name__ == '__main__':
    from waitress import serve

7. wrap it into Systemd unit (https://blog.miguelgrinberg.com/post/running-a-flask-application-as-a-service-with-systemd):

Description=Webhook monitor for copying repo from BB to GitHub

ExecStart=/usr/bin/python3 /home/lol/clone-repo-webhook-server.py

systemctl daemon-reload
systemctl start clone-repo-webhook-server
systemctl enable clone-repo-webhook-server

p.s. and you could combine this with git full-mirroring capabilities as you like
p.s. heres bb man https://support.atlassian.com/bitbucket-cloud/docs/create-and-trigger-a-webhook-tutorial/ and webhook listener repo https://bitbucket.org/atlassianlabs/webhook-listener which I haven’t read

FreeCad quick intro

SVG to FreeCAD:

quickest intro ever:

И ещё немножко мануалов по сборке сложных деталей:

Канал с примерами:

Current stable version 18.4 содержит неприятнейшую особенность — https://wiki.freecadweb.org/Topological_naming_problem

В последней 19 версии — она не исправлена, (хоть и неоднократно обещали), посему можно пользоваться продвинутым няшным форком:

Вот такую красоту (Himoto hi823402) можно сделать с нуля за пару вечеров:

Дичайшие спойлеры на Satisfactory и другие factory/sandbox-гриндилки

I Built a 600 Meter Human Cannon That Ends All Existence — Satisfactory

I built Stargate Atlantis and ALL the turbo motors (156/min) in Satisfactory Showcase 3

100% MAXED OUT FACTORY! — Satisfactory Mega Base Tour

Спойлер на Astroneer: После просмотра играть не захочется!
I Set Off So Much Dynamite It Ended Reality in Astroneer

Спойлер на Hydroneer:
I Shoplifted My Way to Another Million Dollars in Hydroneer

Биток накачан не только титером, но теперь и баксами, и юанями!

баксы: (microstrategy+Morgan Stanley+JPMorgan Chase)
(Финансовые микроматерии: что скрывается за большой игрой MicroStrategy на повышение биткоина)
https://forklog.com/finansovye-mikromaterii-chto-skryvaetsya-za-bolshoj-igroj-microstrategy-na-povyshenie-bitkoina/ (pdf)

титер: (мутные типы из bitfinex)
(Большая игра на понижение крипты. Механизм финансовой катастрофы)
https://habr.com/ru/post/538198/ (pdf)

(Биткоин — валюта китайской глобальной теневой экономики. Китаевед Николай Вавилов)


UPD: Senate passes $1.9 trillion Covid relief bill, House Democrats plan final approval Tuesday

UPD2: Капитализация американского рынка выше (https://www.currentmarketvaluation.com/models/buffett-indicator.php), чем объём ВВП уже более, чем в 2 раза. Данный индикатор Баффета на 76% больше своей долгосрочной средней. На пике пузыря доткомов это соотношение превышало среднюю на 67%.