☕️ Мерлин заваривает τσάι 🐌
Работающий исходник игры Жизнь, отформатированный в виде глайдера https://twitter.com/david3141593/status/1312509195158056962
YouTube
Donut-shaped C code that generates a 3D spinning donut
"Donut math: how donut.c works" blog post by Andy Sloane:
https://www.a1k0n.net/2011/07/20/donut-math.html
Deobfuscated code: https://bit.ly/2BITbQm
https://www.a1k0n.net/2011/07/20/donut-math.html
Deobfuscated code: https://bit.ly/2BITbQm
Реймаршинг движок на чистом Fennel (это такой лисп, транслируется в lua) и Love движке
Офигительная с технической точки зрения реализация, жаль только из-за зверски низкой производительности представляет исключительно академический интерес.
#absoluteMadman
https://andreyorst.gitlab.io/posts/2020-10-15-raymarching-with-fennel-and-love/
Офигительная с технической точки зрения реализация, жаль только из-за зверски низкой производительности представляет исключительно академический интерес.
#absoluteMadman
https://andreyorst.gitlab.io/posts/2020-10-15-raymarching-with-fennel-and-love/
andreyorst.gitlab.io
Raymarching with Fennel and LÖVE
Previously I decided to implement a rather basic raycasting engine in ClojureScript. It was a lot of fun, an interesting experience, and ClojureScript was awesome. I’ve implemented a small labyrinth game and thought about adding more features to the engine…
Zig конечно суров
Это выглядит как динамик диспатч, но на самом деле он компайл тайм
Это выглядит как динамик диспатч, но на самом деле он компайл тайм
// in stdlib
pub fn serialize(self: *Serializer, value: var) !void {
const T = comptime @TypeOf(value);
if (comptime std.meta.trait.hasFn("serialize")(T)) {
return T.serialize(value, self);
} else {
self.defaultSerialize(value);
}
}
// in my code
struct Foo {
foo: usize,
fn serialize(self: Foo, serialize: *Serializer) !void {
...
}
}
Forwarded from Random three body problem
This media is not supported in your browser
VIEW IN TELEGRAM
Initial states:
m: 1.637 x: -7.586 y: -8.681 vx: -0.039 vy: -0.028
m: 7.617 x: 0.310 y: 5.609 vx: 0.806 vy: 0.173
m: 2.975 x: -4.561 y: -4.319 vx: 0.031 vy: -0.443
Interest-ness score: 69
m: 1.637 x: -7.586 y: -8.681 vx: -0.039 vy: -0.028
m: 7.617 x: 0.310 y: 5.609 vx: 0.806 vy: 0.173
m: 2.975 x: -4.561 y: -4.319 vx: 0.031 vy: -0.443
Interest-ness score: 69
Forwarded from Bortlog
Вот вам подборочка хаков из кишочек Pebble:
1) https://github.com/cockroachdb/pebble/blob/master/internal/rawalloc/rawalloc.go
Аллоцируем неинициализированый (незануленый) слайс байт. Иногда надо если Вы знаете что всеравно сейчас перезапишите все эти байты своими, так что на инициализацию платить не хочется. Еще бывают случаи что вы предаллоцируете такой слайс, но может на полную его использовать не будете, поэтому вручную делаете инициализацию ленивой. Остальные варианты использования можете придумать сами и написать в коментарии.
2) https://github.com/cockroachdb/pebble/blob/master/internal/fastrand/fastrand.go
Прилинкованый
3) https://github.com/cockroachdb/pebble/blob/master/internal/bytealloc/bytealloc.go
Если Вы знаете что сейчас будете аллоцировать много маленьких байтслайсов можно предалоцировать их в одном слайсе побольше.
4) https://github.com/cockroachdb/pebble/blob/master/internal/intern/intern.go
Смотрите кто использует
5) https://github.com/cockroachdb/pebble/tree/master/internal/invariants
Как понять что тебя запустили под рейс детектором.
1) https://github.com/cockroachdb/pebble/blob/master/internal/rawalloc/rawalloc.go
Аллоцируем неинициализированый (незануленый) слайс байт. Иногда надо если Вы знаете что всеравно сейчас перезапишите все эти байты своими, так что на инициализацию платить не хочется. Еще бывают случаи что вы предаллоцируете такой слайс, но может на полную его использовать не будете, поэтому вручную делаете инициализацию ленивой. Остальные варианты использования можете придумать сами и написать в коментарии.
2) https://github.com/cockroachdb/pebble/blob/master/internal/fastrand/fastrand.go
Прилинкованый
lock free uint32 рандом из рантайма Go.3) https://github.com/cockroachdb/pebble/blob/master/internal/bytealloc/bytealloc.go
Если Вы знаете что сейчас будете аллоцировать много маленьких байтслайсов можно предалоцировать их в одном слайсе побольше.
4) https://github.com/cockroachdb/pebble/blob/master/internal/intern/intern.go
Смотрите кто использует
sync.Pool для построения кеша интернированых строк. А я то думал что первым додумался так ипользовать Pool 😐 в https://github.com/storozhukBM/pcache5) https://github.com/cockroachdb/pebble/tree/master/internal/invariants
Как понять что тебя запустили под рейс детектором.
GitHub
pebble/internal/rawalloc/rawalloc.go at master · cockroachdb/pebble
RocksDB/LevelDB inspired key-value database in Go. Contribute to cockroachdb/pebble development by creating an account on GitHub.
#TIL в русскоязычной википедии есть интерактивная схема московского метро. Вроде ничего особенного, но потыкать на станции и линии приятно
https://ru.wikipedia.org/wiki/Шаблон:Интерактивная_схема_Московского_метрополитена
https://ru.wikipedia.org/wiki/Шаблон:Интерактивная_схема_Московского_метрополитена
Forwarded from 🇺🇦 Go performance channel (Oleg Kovalov)
proposal: cmd/compile: switch to a register-based calling convention for #golang functions
Preliminary experiments indicate this will achieve at least a 5–10% throughput improvement across a range of applications
is accepted! 🚀
https://go.googlesource.com/proposal/+/master/design/40724-register-calling.md
https://github.com/golang/go/issues/40724
Preliminary experiments indicate this will achieve at least a 5–10% throughput improvement across a range of applications
is accepted! 🚀
https://go.googlesource.com/proposal/+/master/design/40724-register-calling.md
https://github.com/golang/go/issues/40724
GitHub
cmd/compile: switch to a register-based calling convention for Go functions · Issue #40724 · golang/go
I propose that we switch the Go internal ABI (used between Go functions) from stack-based to register-based argument and result passing for Go 1.16 1.17. I lay out the details of our proposal and t...
Вызывать C из Rust? А как насчёт исполнять C из Rust?
https://twitter.com/mnt_io/status/1321129758848155649
https://twitter.com/mnt_io/status/1321129758848155649
Twitter
Ivan Enderlin 🦀
Oops… C in Rust. More to come :-). Please @rustlang, don't block me 🙏! #rustlang #c #cpp #clang
Forwarded from DevZen Podcast (Unofficial)
🎙️Скорее всего, через 10 минут (22:30 MSK) будет прямой эфир подкаста. Также можно почитать темы слушателей и пообщаться в gitter-чате
Эволюция СМИ:
Газеты - рассказывают о событиях с задержкой в день.
ТВ - рассказывают о событиях с задержкой в нескольких часов.
Интернет - рассказывает о событиях моментально.
Сатирические издания - рассказывают о событиях до самих событий.
https://twitter.com/chilikto/status/1322840918332944389
Газеты - рассказывают о событиях с задержкой в день.
ТВ - рассказывают о событиях с задержкой в нескольких часов.
Интернет - рассказывает о событиях моментально.
Сатирические издания - рассказывают о событиях до самих событий.
https://twitter.com/chilikto/status/1322840918332944389
Forwarded from oleg_log (Oleg Kovalov)
Сегодня в Generic Talks (https://xn--r1a.website/generictalks/163) обсудили статью об отменах операций (timeout, deadline, cancel), которую я вспомнил из-за одного выпуска Good-Bad reviewer (https://xn--r1a.website/good_bad_reviewer/58).
Так вот, советую почитать. Довольно полезно и интересно описано о том, почему каждый из способов может быть неочень. Еще там рассказывают про либку на питоне Trio от автора, но теория применима ко всему и всем.
Ссыль https://vorpus.org/blog/timeouts-and-cancellation-for-humans/
Так вот, советую почитать. Довольно полезно и интересно описано о том, почему каждый из способов может быть неочень. Еще там рассказывают про либку на питоне Trio от автора, но теория применима ко всему и всем.
Ссыль https://vorpus.org/blog/timeouts-and-cancellation-for-humans/
Telegram
Generic Talks
Generic Talks S02E06 "Девиртуализированый контекст отмены на сжатом дереве большой длины"
Состав: Олег и Богдан.
Темы:
1. Timeouts and cancellation for humans
- https://vorpus.org/blog/timeouts-and-cancellation-for-humans/
2. Adaptive Radix Tree…
Состав: Олег и Богдан.
Темы:
1. Timeouts and cancellation for humans
- https://vorpus.org/blog/timeouts-and-cancellation-for-humans/
2. Adaptive Radix Tree…
Forwarded from There will be no singularity
Прошло несколько месяцев с публикации прошлой версии подборки экзотических применений SQL, поэтому не грех опубликовать ее еще раз, добавив еще один пункт.
Не все знают, но SQL можно использовать не только для работы с данными в БД.
Есть возможность манипулировать данными из командной строки.
Зачем такое может понадобиться?
1) Парсинг JSON-логов
https://github.com/avz/jl-sql
Можно придумать много хороших usecases. Я писал про эту тулзу в статье про тестирование логов - https://xn--r1a.website/nosingularity/198
https://osquery.io/
Совершенно безумная и красивая идея. 257 источников данных!
https://github.com/escherize/img_sql/
4) SQL для MongoDB, DynamoDB, Kafka, S3
Если не хочется работать с монгой, но очень нужно, то можно выкрутиться так
https://rockset.com/solutions/mongodb/
Например, отлично зайдет для использования в тулзах для визуализации, таких как Grafana.
Насколько это имеет смысл для работы с базами из приложения, сказать сложно.
5) SQL для запросов по git репозиториям
https://github.com/augmentable-dev/gitqlite (переименовали в askgit)
https://relational-pipes.globalcode.info/v_0/examples-jack-midi-generating-1.xhtml
Не все знают, но SQL можно использовать не только для работы с данными в БД.
Есть возможность манипулировать данными из командной строки.
Зачем такое может понадобиться?
1) Парсинг JSON-логов
https://github.com/avz/jl-sql
Можно придумать много хороших usecases. Я писал про эту тулзу в статье про тестирование логов - https://xn--r1a.website/nosingularity/198
> cat data.json | jl-sql 'SELECT key, SUM(value) AS sum, COUNT(*) AS count GROUP BY key'2) Работа с параметрами операционной системы
https://osquery.io/
Совершенно безумная и красивая идея. 257 источников данных!
> osqueryi --json "SELECT * FROM mounts m, disk_encryption d WHERE m.device_alias = d.name AND d.encrypted = 0;"3) Работа с изображениями
https://github.com/escherize/img_sql/
> ./img_sql.py -i samples/matrix.jpg -o samples/matrix_out.jpg -s 'update pixels set r = g, b = r, g = b where x > 700'Осталось написать транспайлер в GLSL и будет win :)
4) SQL для MongoDB, DynamoDB, Kafka, S3
Если не хочется работать с монгой, но очень нужно, то можно выкрутиться так
https://rockset.com/solutions/mongodb/
Например, отлично зайдет для использования в тулзах для визуализации, таких как Grafana.
Насколько это имеет смысл для работы с базами из приложения, сказать сложно.
5) SQL для запросов по git репозиториям
https://github.com/augmentable-dev/gitqlite (переименовали в askgit)
> -- how many commits have been authored by user@email.com?6) Играем музыку оО
> SELECT count(*) FROM commits WHERE author_email = 'user@email.com'
https://relational-pipes.globalcode.info/v_0/examples-jack-midi-generating-1.xhtml
Forwarded from Telegram Info (Antonio Marreti 🚩)
Поддержка собственного сервера для Bot API
Вместе с обновлением Bot API до версии 5.0 появилась возможность запускать свой собственный сервер Bot API. После поднятия, ваш бот будет отправлять запросы на свой сервер вместо
После переключения бот сможет:
— Скачивайте файлы без ограничения размера.
— Загружать файлы размером до 2000 МБ.
— Загружать файлы, с сервера или по прямой ссылке на файл.
— Возможность использовать любой HTTP URL-адрес, локальный IP-адрес и порт для вебхуков.
— Возможность установить
Исходный код сервера Telegram Bot API распространяется по лицензии Boost Software License.
#BotAPI
Вместе с обновлением Bot API до версии 5.0 появилась возможность запускать свой собственный сервер Bot API. После поднятия, ваш бот будет отправлять запросы на свой сервер вместо
api.telegram.org. После переключения бот сможет:
— Скачивайте файлы без ограничения размера.
— Загружать файлы размером до 2000 МБ.
— Загружать файлы, с сервера или по прямой ссылке на файл.
— Возможность использовать любой HTTP URL-адрес, локальный IP-адрес и порт для вебхуков.
— Возможность установить
max_webhook_connections до 100000.
— Возможность получить локальный путь как значение поля file_path без необходимости загружать файл после запроса getFile.Исходный код сервера Telegram Bot API распространяется по лицензии Boost Software License.
#BotAPI
Мне вот всегда было интересно, как считают расход энергии на банковские транзакции.
Как оценить энергокредит на криптовалюты — примерно понятно: мы знаем количество вычислений, количество пользователей и эффективность современных компьютеров и ASIC.
А вот как оценить банковскую сферу? Где провести черту в потребителях энергии? Например, здание банка, все его служащие, банкоматы — можно ли считать их частями механизма транзакций в банке? Если да, то я сильно сомневаюсь, что банковская система сильно выгоднее по энергии.
Несмотря скептическое отношение к статье, я всё ещё считаю, что криптовалюты сейчас — это скорее исследовательские проекты, haskell от мира финансовых инструментов. Да, в них можно вкладываться, если есть лишние деньги, но гораздо интереснее отрабатывать на них различные экзотические концепции экономических механизмов.
https://xn--r1a.website/oleg_log/3808
Как оценить энергокредит на криптовалюты — примерно понятно: мы знаем количество вычислений, количество пользователей и эффективность современных компьютеров и ASIC.
А вот как оценить банковскую сферу? Где провести черту в потребителях энергии? Например, здание банка, все его служащие, банкоматы — можно ли считать их частями механизма транзакций в банке? Если да, то я сильно сомневаюсь, что банковская система сильно выгоднее по энергии.
Несмотря скептическое отношение к статье, я всё ещё считаю, что криптовалюты сейчас — это скорее исследовательские проекты, haskell от мира финансовых инструментов. Да, в них можно вкладываться, если есть лишние деньги, но гораздо интереснее отрабатывать на них различные экзотические концепции экономических механизмов.
https://xn--r1a.website/oleg_log/3808
Telegram
oleg_log
oopsie
"Bitcoin and Ethereum are now using up the same amount of electricity as the whole of Austria. Carrying out a payment with Visa requires about 0.002 kilowatt-hours; the same payment with bitcoin uses up 906 kWh, more than half a million times as much"…
"Bitcoin and Ethereum are now using up the same amount of electricity as the whole of Austria. Carrying out a payment with Visa requires about 0.002 kilowatt-hours; the same payment with bitcoin uses up 906 kWh, more than half a million times as much"…