☕️ Мерлин заваривает τσάι 🐌
1.12K subscribers
3.52K photos
63 videos
94 files
2.42K links
💊
Download Telegram
Благодаря особой уличной магии питонячьего токенайзера это превращается в [0xf or x in (1, 2, 3)]. Тк or ленивый, то правая часть не вычисляется.

https://xn--r1a.website/scidoge/1644
@umputun выложил свой reverse-proxy https://github.com/umputun/reproxy

Разумеется написано на Go, умеет роутинг, подсасывает правила из файла или читает список докер контейнеров (sic!). Простое как дверь, но пока в ранней стадии разработки. Мне не хватает метрик, но issue уже создано и работы вот-вот начнутся.

Тут пришло в голову: а почему нет подобных проектов на русте? На Go есть уже довольно популярные Caddy и Traefik (и отчасти Istio) которые используются в проде, но вот о рустовых прокси я почти ничего не слышал.

Из более менее популярного, что я нарыл:
⁃ Sōzu https://github.com/sozu-proxy/sozu
⁃ Linkerd2 (сервис меш переписанный с Go) https://github.com/linkerd/linkerd2-proxy

Это очень молодые проекты — оба начаты в 2020. То ли дело в карантине, то ли в том, что экосистема асинк руста более-менее стабилизировалась. И это хорошо. Мне кажется, что rust – один из самых подходящих языков для таких задач.
Крутые анимированные модели различных тепловых двигателей

Спасибо @oleg_log
http://animatedengines.com
Немного квантовой магии с указателями на пустые структуры в Go: пока на них не смотришь, они не равны

https://play.golang.org/p/GiB4Vj4av0f
vs
https://play.golang.org/p/1zBGEcnVLsY
vs
https://play.golang.org/p/5lw6I2gkdJ7

Я подозреваю, что всё дело в том, где структура лежит
Никогда не приходило в голову, что defer может быть вреден до тех пор, пока не натолкнулся на такую штуку: в defer происходит блокирование на какое-то условие без возможности отмены, после чего условие никогда не выполняется из-за паники или другого неявного прерывания потока исполнения.

С точки зрения внешнего наблюдателя всё вроде бы хорошо — просто некоторые задачи выполняются дольше чем обычно. На деле горутина заблокировалась навечно. С точки зрения рантайма тоже всё может быть ок, если есть другие живые горутины.

Так что надо взять за правило особенно тщательно проверять defer с эксклюзивными локами и неотменяемыми операциями, отлаживать такое довольно сложно.

https://play.golang.org/p/8VV7vgJRQxY
Forwarded from Блог*
#prog #lua

Создатель LuaJIT рассказывает о том, в какой ситуации компилятор проигрывает вручную написанному ассемблеру.

lua-users.org/lists/lua-l/2011-02/msg00742.html
Страшное дело

HTTP client for PostgreSQL, retrieve a web page from inside the database.
https://github.com/pramsey/pgsql-http
Forwarded from Bortlog
I have a great article for you about the challenges and problems of writing software for real-time audio generation.
https://glowcoil.com/posts/basedrop/

That's where we cannot do without low-level programming languages ​​with absolute control over what exactly will happen at any moment. Because you can't allow any unpredictable (non-constant) operations in the thread that generates the audio, it turns out that you can't do I/O, allocate or free memory, use mutexes or blocking queues to synchronize threads, etc.
With such restrictions, even the use of Rust looks too high-level because its RAII can play a bad joke on you and start to free some buffers when they lose their owner. So it turns out that even with Rust, you may, in special cases, have a memory leak or OOM.

It seems that for such software Zig with its explicit use of allocators and explicit defer, would be a little more convenient, but also not without difficulties.
Иди смотреть «Любовь, смерть и роботов», там второй сезон уже
☕️ Мерлин заваривает τσάι 🐌
https://vk.com/nastenka_comics
Кстати, не верьте, ахатины с удовольствием грызут морковь
Для тех, кому интересна космическая тематика: сайт https://www.n2yo.com/ с кучей данный реального времени об искусственных спутниках и зондах
Релиз Elixir 1.12

🔹 System.trap_signal/3 для перехвата сигналов;

🔹 Mix.install для установки зависимостей проекта;

🔹 ranges с шагами: first..last//step. Например 1..420//42 выдаст [1, 43, 85 и тд];

🔹 then/2 передаёт первый аргумент функции и возращает результат. Нужно для конструкций вида |> then(&Regex.scan(~r/\w+/, &1));

🔹 tap/2 передаёт первый аргумент функции и возвращает его же, тоже для пайпов;

🔹 iex по табу дополняет параметры функций;

🔹 Несколько новых функций в stdlib: Enum.count_until/2, Enum.product/1, Enum.zip_with/2, Integer.pow/2 и Integer.extended_gcd/2;

https://elixir-lang.org/blog/2021/05/19/elixir-v1-12-0-released/
Therapist: Linear Mandarin is not real, it cannot hurt you.

Linear Mandarin:


https://twitter.com/adalwinamillion/status/1398738675299721226
Оказывается у tiny go есть онлайн песочница чтобы потыкать

https://play.tinygo.org/

Это помимо
- https://play.golang.org/
- https://goplay.space/
- https://go2goplay.golang.org/