All streams
Search
Write a publication
Pull to refresh
19
0.9
Кашлак Андрей @andreymal

User

Send message
Element ужасен, но хотя бы кружочек показывает

neochat

При отключении уведомлений о новых сообщенях он перестаёт отображать число непрочитанных вообще совсем полностью, что делает его абсолютно неюзабельным и приходится терпеть element

либы на чистом питоне проиграли

А перед pydantic — почему-то выиграли

Вам станет ясно

Стать-то станет, но менее кривым от этого Go не становится

В том же Rust структура &dyn Trait идентична гошной, но создать такое наполовину пустое значение просто невозможно (и сравнить два разных типа тоже невозможно, если сам тип не разрешает это явно)

это целая философия управления данными

Справедливости ради стоит отметить, что аналогичная философия применима и к btrfs, в который archinstall умеет из коробки

реально там никакой строки нет, а есть сложная сишная структура

Это почему-то плохо?

Или надо, чтобы оно автоматически звалось и паниковало при несоответствии?

Конечно. Любая проверка, делать которую заставляют программиста вручную и которую программист может забыть сделать — потенциальный «the billion dollar mistake»

Меня настораживает наличие всего по одному смыслу в таблице, про «square» уже упомянули, ещё например про «recall» — «Samsung recalls Galaxy Note 7 smartphones»

Слово «резкий» в русском само по себе многозначное и толком не поясняет смысл

У «debank», кажется, вообще ошибка

  1. Откуда мне взять env?

  2. Откуда в этом env возьмётся GOOS?

  3. Почему это вообще должно работать, если if это всё ещё обычный код, а не какая-нибудь директива компилятора? Что тут спасёт меня от появления ошибки undefined: unix.Umask?

А вот прикол как раз в том, что, насколько я вижу, Unix-сокет реализован во всех поддерживаемых платформах

Поэтому мне нравится Rust с принципиально отсутствующим GC и однозначно определяемым моментом вызова деструктора)

(там, правда, наворотили путаницы с non-lexical lifetimes, но, наверно, такова цена сохранения обратной совместимости)

все условия выражены в терминах названия платформы, а не доступных фич этой платформы

А есть пример языка/платформы где это по-другому? А то даже в Rust вроде как примерно то же самое?

что можно сделать полезного с umask-ом

Создать Unix-сокет безопасным образом (без гонки на Chmod) в момент запуска программы, ещё до момента появления других потоков/горутин

Лишние скакания по файлам я считаю снижением читаемости (но впадать в другую крайность и пихать вообще всё в один файл, конечно, тоже не надо)

Если стоит цель не забыть закрытие файла, то лично я готов потерпеть 1% присваиваний nil в нетривиальных случаях ради того, чтобы в остальных 99% случаев меня не заставляли помнить про defer и RAII снимал с меня лишнюю нагрузку на мозг

Если предполагается, что файл нужно будет потом закрыть в какой-то определённый момент, то его неизбежно придётся положить в какую-то внешнюю переменную независимо от языка программирования, там он и переживёт зону видимости (а если пофиг, то можно явно пропустить деструктор вызовом std::mem::forget и создать утечку файла до конца работы программы — впрочем, мы тут вроде наоборот пытаемся с этим бороться)

Но я не уверен, что лучше

Лучше иметь возможность выбора по ситуации)

new/delete

А тут опять одним лишь C++ мир не ограничивается, в ранее упоминавшемся языке объект файла создаётся через вполне естественные File::open и File::create (ну а close таки отсутствует потому что RAII)

umask_linux.go

umask_windows.go

Ну то есть ровно то, что я ранее и написал:

Всё ещё неудобно: какой-нибудь один платформозависимый вызов, который можно было бы запихнуть в один if, приходится размазывать как минимум на два файла с кучей копипаста

Повтор сигнатуры функции, впрочем, слабо тянет на «кучу» копипаста — но это всё ещё копипаст и всё ещё два файла вместо одной строчки

А Вам не кажется, что управлять временем жизни файла как-то естественнее в терминах операций с файлом, чем в терминах создания/удаления переменной?

В реальном мире, в котором программисты любого уровня гениальности постоянно совершают ошибки — не кажется; RAII выглядит разумным компромиссом между «естественностью» и надёжностью/безопасностью

Information

Rating
1,751-st
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity