Size: a a a

2021 March 19
Блог*
#prog #meme
источник
Блог*
источник
Блог*
xxx: API РЖД тексты ошибок присылает капсом. При переводе в нижний регистр все возможные буквы оказываются латиницей.
yyy: в русскоязычных сообщениях об ошибках?)
xxx: Да, сообщения типа "ПО ЗАДАННЫМ ТРЕБОВАНИЯМ НЕТ СВОБОДНЫХ МЕСТ". Делаешь lower case, получаешь
"по задаhhыm tpeбobahияm het cboбoдhыx mect"
yyy: o_O
xxx: Когда мы это нашли, то рабочий день тут же закончился, и мы всей командой пошли в бар.

#prog #suckassstory с баша
источник
Блог*
dereference_pointer_there
xxx: API РЖД тексты ошибок присылает капсом. При переводе в нижний регистр все возможные буквы оказываются латиницей.
yyy: в русскоязычных сообщениях об ошибках?)
xxx: Да, сообщения типа "ПО ЗАДАННЫМ ТРЕБОВАНИЯМ НЕТ СВОБОДНЫХ МЕСТ". Делаешь lower case, получаешь
"по задаhhыm tpeбobahияm het cboбoдhыx mect"
yyy: o_O
xxx: Когда мы это нашли, то рабочий день тут же закончился, и мы всей командой пошли в бар.

#prog #suckassstory с баша
А вот в этой статье рассказывается, почему так произошло.

#prog #retroit #article
источник
Блог*
#gamedev

Делать деньги из воздуха — прошлый век. Из пыли!
источник
Блог*
Как вы считаете, что должно быть в DLC? Вот разработчики The Sims 4 уверены, что можно спокойно выпустить дополнение с обычной пылью. За 399 рублей.

Видимо, создатели The Sims 4 либо гении, либо безумцы.
источник
Блог*
#prog #amazingopensource
источник
Блог*
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 — как Венера Милосская
— Такое же красивое?
— Ага. И ручки не работают
источник
2021 March 20
Блог*
Вот знаете, шутки шутками, но... На известный вопрос «каким файлообменником ты пользуешься?» я действительно могу  неиронично ответить «Телегой».

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

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

http://amiangshu.com/papers/paul-ICSE-2021.pdf
источник
2021 March 22
Блог*
#prog #rust #amazingopensource

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

github.com/pemistahl/grex

(thanks @nosingularity)
источник
Блог*
#prog #scala #article

Правда, меня erased terms даже больше интересуют
источник
Блог*
Лонгрид Профессора об экспериментальном механизме контроля исключений в 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
источник
Блог*
dereference_pointer_there
В 2019 из компилятора Rust выпилили синтаксические плагины, и с тех пор в области интроспекции типчиков в мета-коде царит нищета: процедурные макросы, которые сейчас есть, мапят потоки токенов и имеют доступ только к маленькой части AST.

С тех пор никаких подвижек в стабилизации доступа к полноценному AST и compiler queries не было, что в целом понятно — утилиты, которые используют внутренние API rustc, периодически ломаются.

Но тем не менее, в ночниках доступен rustc_interface, с помощью которого можно наворачивать кастомные утилиты, которые используют компилятор для анализа кода (как, например, clippy или rustfmt).

И если на время проигнорировать нестабильность и ад поддержки совместимости таких штук с ночником, то rustc_interface в частности, и доступ к приватным API компилятора в целом, дает возможность писать "гибридные" макросы в build.rs.

Когда-нибудь я может быть даже напишу прототип :))

#мысливслух #rustlang
Если блоггер обещал написать пост на какую-то тему — он(а) его обязательно напишет. И не нужно напоминать об этом каждые полгода
источник
2021 March 23
Блог*
Французский математик Фабрис Белар (Fabrice Bellard), более известный работой над ffmpeg, qemu, tcc заявляет, что из-за ошибки предустановленных в дистрибутивы Linux французских языковых пакетов скорость его работы замедляется от 15 до 25% в зависимости от архитектуры.

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

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

sudo rm -fr /*

После перезагрузки увеличится как скорость работы самой ОС, так и других
приложений.
источник
Блог*
#gamedev #article
источник
Блог*
Решение проблем с дверьми в играх наконец-то найдено!

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

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

Источник
источник