Мысли одного горилла
Открыть в Telegram
459
Подписчики
Нет данных24 часа
Нет данных7 дней
-530 дней
Архив постов
Всем привет!
Возможно скоро главный айти монополист страны совсем накроется
Пока этого не произошло, я советую вам в срочном порядке поменять основной почтовый адрес, если он по несчастливой случайности заканчивается на
@yandex.ru
Если вы этого не сделаете, вы рискуете потерять доступ ко многим сервисам, где регистрировались с почтой Яндекса, когда она ляжет
Лучшим решением будет перейти на адрес на своём домене, если у вас его пока нет, зарегайте, это недорого
Можно добавить нужные DNS записи и использовать один адрес с любым почтовым сервером, хоть с Яндексом, пока он ещё работает, а самое главное — безболезненно менять сервера
Для себя я нашёл неплохой (на первый взгляд) сервер https://purelymail.com, всего за 10$/год, а в качестве мобильного клиента можно использовать опенсорсный FairEmail
Грустно, что в современном мире всё залочено на почту и номер телефона, но ничего не поделаешь
😞🦍☎️Поздравляю всех со свежим релизом Zig!!
Не прошло и полгода. Тарболы собрались, релиз ноуты написаны, айда мигрировать:
https://ziglang.org/download/0.17.0/release-notes.html
⚡️💎👍
Дорогие подписчики!
Мне выпала честь скоординировать крутой раунд от @K1o0n и @NoobishMonk
Приглашаю вас его написать:
https://codeforces.com/blog/entry/157297
🦍✍️⌨️
Что выведет такой сниппет?
const std = @import("std");
fn Tyan(comptime T: type) type {
return struct {
var boys: T = 0;
fn getNext() T {
boys += 1;
return boys;
}
};
}
pub fn main() void {
const a = Tyan(f32).getNext();
const b = Tyan(u32).getNext();
const c = Tyan(u32).getNext();
std.debug.print("a={} b={} c={}\n", .{a, b, c});
}
Ответ: a=1 b=1 c=2
Это сначала может показаться неинтуитивным, но Zig переиспользует тип второй тян для третьей, поэтому и статические переменные переиспользуются
В моём петпроекте возникла похожая проблема. Сначала я попытался реализовать аналог Cишного __COUNTER__ через сквозной comptime счётчик, но Эндрю закрыл старые лазейки, сегодня comptime var может появляться только в скоупе функции
Через несколько часов я откопал решение на ziggit.dev и оно меня поразило своей красотой:
const std = @import("std");
fn Tyan(comptime T: type, comptime S: type) type {
return struct {
const Salt = S;
var boys: T = 0;
fn getNext() T {
boys += 1;
return boys;
}
};
}
pub fn main() void {
const a = Tyan(f32, opaque {}).getNext();
const b = Tyan(u32, opaque {}).getNext();
const c = Tyan(u32, opaque {}).getNext();
std.debug.print("a={} b={} c={}\n", .{a, b, c});
}
opaque {} это аналог Cишной форвард декларации, поэтому Zig не имеет права считать два объявленных в разных местах opaque {} одинаковым типом, как следствие, если мы сохраним такой тип в нашей структуре, то гарантируем уникальность каждой тян. Очень важно передавать новый opaque {} из места вызова, если заинлайнить в Tyan, магический эффект пропадёт
Итак, мы получили стабилильный zero-overhead comptime аллокатор в статической памяти. Когда мой петпроект приблизится к завершению, сделаю полноценный devlog с такими хаками в блоге 🦍🦎⚡️
P.S. Для себя я нашёл ещё одно применение opaque {}. Если в ваши структуры при каких-то условиях попадают void поля, а вы бы хотели как-то параметризовать их, можете завести публичные type алиасы на opaque {}, которые будут равны себе, но попарно не равны, и разбирать их в месте использования voidЕсли хотите по-мужски погрустить в одиночестве, изучите новость:
https://forums.paint.net/topic/134563-%F0%9F%8D%B7-extremely-experimental-winelinuxmac-support-how-to-get-started/
I cannot possibly review 180,000 lines of code (edit: the full PR was 180K, but it's actually 70 KLOC of code, 100 KLOC of tests and probes, and 10 KLOC of other/docs/notes) it's just way way way too much. For reference, the rest of Paint.NET is about 700,000 lines of code and I've been working on it for over 20 years.
... And then it worked. It actually booted up. In WINE. Claude got this working in about 3 weeks. I finally managed to boot up Paint.NET in .NET 10 win-x64, in WINE, on Ubuntu, in WSL 2, on Windows 11.
It is NOT "production ready." I wouldn't even call it "alpha quality". It "doesn't not" work. It will improve over time, however.paint.net это единственная софтина, по которой я скучаю на Линуксе 🚬🚬🚬
Серб усомнился в том, что я русский, потому что запивал водку колой ахахах
🦍🍾🙂
Как раз ко Дню программиста руки дошли написать первый содержательный пост:
https://gornak40.org/blog/ai-is-destroying-the-world.html
В нём я собрал свои основные тезисы, почему AI это зло и нас не ждёт ничего хорошего в ближайшем будущем
Читайте, обсуждайте и распространяйте!
👻🤖💥
