fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید 👈

Мысли одного горилла

Мысли одного горилла

رفتن به کانال در Telegram
459
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
-530 روز
آرشیو پست ها
Всем привет! Возможно скоро главный айти монополист страны совсем накроется Пока этого не произошло, я советую вам в срочном порядке поменять основной почтовый адрес, если он по несчастливой случайности заканчивается на @yandex.ru Если вы этого не сделаете, вы рискуете потерять доступ ко многим сервисам, где регистрировались с почтой Яндекса, когда она ляжет Лучшим решением будет перейти на адрес на своём домене, если у вас его пока нет, зарегайте, это недорого Можно добавить нужные DNS записи и использовать один адрес с любым почтовым сервером, хоть с Яндексом, пока он ещё работает, а самое главное — безболезненно менять сервера Для себя я нашёл неплохой (на первый взгляд) сервер https://purelymail.com, всего за 10$/год, а в качестве мобильного клиента можно использовать опенсорсный FairEmail Грустно, что в современном мире всё залочено на почту и номер телефона, но ничего не поделаешь 😞🦍☎️

پیام ویدیو00:11

Кто ж знал, что найти русскую водку здесь сложнее, чем это 🤯🎂🍌
+1
Кто ж знал, что найти русскую водку здесь сложнее, чем это 🤯🎂🍌

Что выйдет раньше? 🤔🦎💅
Anonymous voting

Поздравляю всех со свежим релизом Zig!! Не прошло и полгода. Тарболы собрались, релиз ноуты написаны, айда мигрировать: https://ziglang.org/download/0.17.0/release-notes.html ⚡️💎👍

Дорогие подписчики! Мне выпала честь скоординировать крутой раунд от @K1o0n и @NoobishMonk Приглашаю вас его написать: https://codeforces.com/blog/entry/157297 🦍✍️⌨️

Такое настроение сегодня вечером 🦍🥴🚬
Такое настроение сегодня вечером 🦍🥴🚬

Чарующие виды 🪦☦⛰
+9
Чарующие виды 🪦☦⛰

Что выведет такой сниппет?
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

Морда довольная, вид красивый, камера не очень 🦍🌋😌
+5
Морда довольная, вид красивый, камера не очень 🦍🌋😌

Когда на работе меня заменит Клод, устроюсь сюда редактором 👀💎📝

Если хотите по-мужски погрустить в одиночестве, изучите новость: 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 это зло и нас не ждёт ничего хорошего в ближайшем будущем Читайте, обсуждайте и распространяйте! 👻🤖💥

Поделитесь в комментах своими креативными идеями. Чего ждёте от CFа? 👀🏆✍️

Привет, Сербия! 🇷🇸🦍🤠
Привет, Сербия! 🇷🇸🦍🤠

🦍🦍💎
🦍🦍💎