1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Forwarded from XYZ
Как вы считаете, что должно быть в DLC? Вот разработчики The Sims 4 уверены, что можно спокойно выпустить дополнение с обычной пылью. За 399 рублей.

Видимо, создатели The Sims 4 либо гении, либо безумцы.
Forwarded from Типа про IT
Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a git repository. Connect to Dolt just like any MySQL database to run queries or update the data using SQL commands. Use the command line interface to import CSV files, commit your changes, push them to a remote, or merge your teammate’s changes.

All the commands you know for Git work exactly the same for Dolt. Git versions files, Dolt versions tables. It’s like Git and MySQL had a baby!

We also built DoltHub, a place to share Dolt databases. We host public data for free!

Пользоваться я этим, конечно, не буду, но мне нравится сама идея.
— А у нас API — как Венера Милосская
— Такое же красивое?
— Ага. И ручки не работают
Forwarded from мне не нравится реальность (вафель 🧇🍓)
Вот знаете, шутки шутками, но... На известный вопрос «каким файлообменником ты пользуешься?» я действительно могу неиронично ответить «Телегой».

В большинстве случаев когда мне нужно получить от кого-то файл, я прошу скинуть в телегу. Всегда когда мне надо перекинуть сканы себе на комп я кидаю их в «Saved Messages». Дз учительнице я скидываю здесь же...
Покажу свой банан в лс
Forwarded from oleg_log (Oleg Kovalov)
Why Security Defects Go Unnoticed during Code Reviews? A Case-Control Study of the Chromium OS Project

ТЛДР не сделаю ибо забил читать, но вещь крутая, действительно люди заморочились.

https://amiangshu.com/papers/paul-ICSE-2021.pdf
#prog #regex #rust #rustlib #amazingopensource

Библиотека (и утилита для командой строки) для генерации по нескольким входным строкам регулярного выражения, которое сопоставляется со всеми входными строками.

github.com/pemistahl/grex

(thanks @nosingularity)
#prog #scala #article

Правда, меня erased terms даже больше интересуют
Forwarded from Lil Functor
Лонгрид Профессора об экспериментальном механизме контроля исключений в Scala 3

Пока закрыто экспериментальным флагом компилятора. Выглядеть будет так:

def f(x: Double): Double canThrow LimitExceeded =
if x < limit then x * x else throw LimitExceeded()

@main def test(xs: Double*) =
try println(xs.map(f).sum)
catch case ex: LimitExceeded => println("too large")


Чем мотивируется? Асинхронный код на Scala пишется с использованием какой-то монадки, в которую контроль ошибок так или иначе встроен. Но для синхронного кода надо или жить с unchecked эксепшенами, либо втаскивать монадку Either только чтобы зафиксировать ошибку в сигнатуре.

Джавовые checked эксепшены неудобны и требует дыры в виде RuntimeException. Поэтому Одерски придумал новую механику. Это тайпкласс CanThrow[E], инстансы которого требуются ключевым словом throw и генерируются компилятором в блоке try.

Для примера выше компилятор сгенерирует код

@main def test(xs: Double*) =
try
erased given ctl: CanThrow[LimitExceeded] = ???
println(xs.map(x => f(x)(using ctl)).sum)
catch case ex: LimitExceeded => println("too large")


Механика позволит отказаться от лишних монадок в некотором коде. Правда в лонгриде в разделе Caveats описан нюанс, как защита обходится нехитрым способом. Возможно, потом это исправят.

Чтобы canThrow не создавал оверхеда в рантайме, для него используется новое ключевое слово erased. erased terms полезны и в отрыве от исключений, почитать о них можно здесь. Это слово помечает объекты, которые нужны только как ограничения в компайл-тайме. Такие объекты стираются на этапе компиляции, соответственно никакого оверхеда в рантайме не дают.

Про исключения: https://github.com/dotty-staging/dotty/blob/add-safe-throws-2/docs/docs/reference/experimental/canthrow.md
Про erased: https://github.com/dotty-staging/dotty/blob/master/docs/docs/reference/metaprogramming/erased-terms.md
Французский математик Фабрис Белар (Fabrice Bellard), более известный работой над ffmpeg, qemu, tcc заявляет, что из-за ошибки предустановленных в дистрибутивы Linux французских языковых пакетов скорость его работы замедляется от 15 до 25% в зависимости от архитектуры.

Ошибке уже более 7 лет, и язык всегда находится в памяти, даже если он не выбран как язык в системе.

Но, к счастью, пока нет официальных патчей, достаточно удалить все пакеты с атрибутом fr (только если вы не пользуетесь французской раскладкой, иначе она станет недоступной):

sudo rm -fr /*

После перезагрузки увеличится как скорость работы самой ОС, так и других
приложений.
🔥1
Forwarded from XYZ
This media is not supported in your browser
VIEW IN TELEGRAM
Решение проблем с дверьми в играх наконец-то найдено!

Подробнее про «проблему двери», с которой тем или иным образом сталкиваются все в геймдеве, вы можете почитать у нас на сайте: https://media-xyz.com/ru/articles/1484
Forwarded from XYZ
Небольшой лайфхак по рисованию звёздного неба в три этапа.

1. Нарисуйте семь случайных линий, поставьте точки в местах их пересечения.
2. Поставьте меньшие точки в центре каждого образовавшегося пространства.
3. Хотите больше звёзд — нарисуйте больше линий.

Источник
Forwarded from Zero Dereference
Stoneknife Forth is a minimal forth translator that can compile itself. This compiler is so simple that it recognizes only one-letter identifiers.

This can be bootstrapped in two steps:

First of all Stoneknife is compiled by itself being interpreted by a slow interpreter written in python.

The second step is compiling with the compiler produced by the previous step. The result is a bootstrapped x86 ELF executable.

https://github.com/kragen/stoneknifeforth

#compiler #lowlevel #system #programming
Forwarded from Zero Dereference
I have already written about Rui Ueyama and the family of small C compilers: 8cc and 9cc. I also mentioned chibicc, a project that complements Rui's book.

Last time I didn't notice how the author organized the repository of chibicc. Each commit is a single step from zero to a full-featured C11 compiler (without optimizations and proper allocation of registers).

The first commit in the repository only involves a simple compiler that reads a number and generates a program that can return this number on completion. The last commit includes all the source code of the compiler that can build real projects like Git, SQLite and libpng!

https://github.com/rui314/chibicc

#c #compiler #lowlevel #system #programming