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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Лет 10 назад я купил на несуществующем бложике прототип Lightpack: странной штуки для задней подсветки монитора, визуально расширяющей экран контекстными цветами. Прототип был в виде платы с кучей хвостов с LED-дами, в собранном виде напоминал ксеноморфа в стадии лицехвата и лепился на монитор сзади на изоленту.

Штука мне понравилась, года три я ей пользовался, а потом при очередном переезде она потерялась. Недавно я откопал её в ящике, приклеил на монитор и полез искать в сети софт для управления подсветкой. Нашёл на гитхабе, скачал, ну и сразу поставил лайк репозиторию. И тут мне в телеграм написал один из авторов проекта, Миша Санников, который, оказывается, читает мой канал. Мы вспомнили проект, и Миша рассказал, какие с ним дальше были приключения: успешный кикстартер, производство в Китае, куча клонов, смена команды, провал второго кикстартера и закрытие всего проекта.

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

#prog #suckassstory с баша
#gamedev

Делать деньги из воздуха — прошлый век. Из пыли!
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