Как стать автором
Обновить
11
Карма
0
Рейтинг

Программист

  • Подписчики 3
  • Подписки 3

Vivaldi для Linux — открытое признание

"Миллионы мух не могут ошибаться"?

Vivaldi для Linux — открытое признание

Сравните это с Дебианом, где такое просто запрещено без явного opt-in.

Это не совсем правда, firefox-esr и chromium следят по умолчанию. Максимум, что они предложат — это opt-out, но не opt-in.

Vivaldi для Linux — открытое признание

Там, если вы добавляете сторонний репозиторий, то он может заменить вам любые файлы в системе, начиная от bash и заканчивая ядром.

Помимо распаковки пакета и запуска ручками, можно попробовать использовать каой-нибудь flatpak для того, чего нет в репозитории, ибо не всем подойдет вариант с распаковкой в условный /opt/. Зло? Да. Меньшее зло, чем third-party deb-пакет скриптами меняющий всё в системе? Да. Подойдет ли такая полумера каждому? Нет.

Vivaldi для Linux — открытое признание

Ещё там postinst зачем-то добавляет в apt посторонние gpg-ключи ключи, добавляет посторонние репозитории...

Слишком уж часто это в third-party пакетах подается под соусом заботы о пользователях

Самые лучшие дистрибутивы Linux для десктопа в 2020 году

Наличие AUR в таком виде, когда из коробки есть условный pamac, который разрешает ставить софт из третьих источников (ред.: ладно, третьего источника — AUR) буквально в пару кликов, а человек не умеет/не хочет читать PKGBUILD, рано или поздно до добра не доведет.

Самые лучшие дистрибутивы Linux для десктопа в 2020 году

Manjaro подойдет для опытного пользователя, которому, скажем, лень ковыряться с Arch ручками для начальной настройки, но для неопытного пользователя я бы поостерегся ее ставить

Четыре способа получить аудио вк или «это не баг, а фича»

320 и 192 достаточно легко отличаются между собой на хорошо знакомом треке, в котором слушателю известна и слышима каждая мелочь, вроде нот на пэдах или легких ударов по хэту. Однако допускаю, что не на каждом хорошо знакомом треке это одинаково легко. Люди с более прокачанным слухом, может быть, могут и lossless от 320 отличить в подобной ситуации.

AlterOffice возвращается в Единый реестр российских программ?

Если не ошибаюсь, Астра — все-таки не на основе Debian, хотя и использует apt

Как устроена графика в Linux: обзор различных сред оформления рабочего стола

Справедливости ради — во многом это не проблема убунту, а любого линукс-дистрибутива, где будет установлена GNOME и софт идентичный убунтовскому

Разработка инструмента командной строки: сравнение Go и Rust

Вообще, по задумке, обработка вида if err != nil { return } не должна быть единственным способом обработки ошибки — ошибка иногда должна обрабатываться иначе (и не только на самом высоком уровне), реагировать на отдельный вид ошибок, или врапить ошибку в другую.


Например, слой бизнес-логики не должен ловить ошибки sql.ErrNoRows или mongo.ErrNoDocuments для того, чтобы произвести особую обработку, он должен отлавливать что-то наподобие repo.ErrNotFound.

Разработка инструмента командной строки: сравнение Go и Rust

В Go очень многие вещи сложно понять, если не знаешь внутреннее устройство. Но с другой стороны, почему разработчик вообще должен об этом знать?


(наброс по теме пункта 44)


Есть два куска кода:


  1. https://play.golang.org/p/HPBJGTstoRV


  2. https://play.golang.org/p/HPBJGTstoRV



В них я совершаю одну и ту же операцию — к слайсу дописываю новое значение и получаю новый слайс. При изменении значения в первом слайсе в первой программе второй слайс не изменится, во второй программе — изменится. По коду разница вроде бы лишь в способе инициализации изначального слайса. Я никогда не задумывался об этом нюансе, хотя знаю внутреннее устройство слайсов.


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

Разработка инструмента командной строки: сравнение Go и Rust

В любом случае, квадратные скобки лучше круглых, которые были предложены изначально

Разработка инструмента командной строки: сравнение Go и Rust

Будет повод попробовать — работа над дженериками уже ведется, через год может увидеть свет.

Разработка инструмента командной строки: сравнение Go и Rust

И поэтому я не понимаю о какой простоте можно говорить в Го.

О простоте реализации. С логичностью мало общего имеет, что подтверждает комментарий AnthonyMikh с ссылкой на пост в соседней подветке.


Лично я не считаю дженерики злом. Более того, мне бы хотелось увидеть их в Go с привычным по другим языкам синтаксисом в виде угловых скобок. Но их мы не увидим, потому что "это сильно усложнит парсер". Скорее всего скобки будут квадратными

Разработка инструмента командной строки: сравнение Go и Rust

Go это про простые (simple, not easy) подходы к разработке. В том числе и к разработке компилятора языка. Часто эта простота идет в приоритете над удобством использования, и можно очень по-разному к этому относиться :)

Разработка инструмента командной строки: сравнение Go и Rust

А так можно будет получить ошибку Connection Error забить на нее и думать что юзера нет и давайте мы его создадим.

Так в том и смысл, что мы должны по-разному обработать ошибку, когда пользователь по id не найден (выдать условный 404), и когда у нас ошибка соединения (выдать условный 500, или возможно даже инициировать повторный запрос с переподключением). Ошибки это значения, и обработка ошибок — это не только прокидывание их вверх по стеку.


Я даже не могу представить ситуацию когда такое может понадобиться.

Имплементации io.Reader и io.Writer как правило возвращают количество считанных или записанных байт даже если вернулась какая-то ошибка.

Разработка инструмента командной строки: сравнение Go и Rust

По-хорошему, такую ситуацию должен отлавливать линтер. go vet это должен отследить в рамках проверки на useless assignments.


Когда дженерики сделают (а их сделают, работа над proposal активно ведется), возможное наличие Optional не будет противоречить гошной концепции ошибок как значений, это скорее про избежание nil pointer dereference. Просто функция будет иметь сигнатуру вида:
func MyFunc[type T](s string) (Optional[T], error)


Either может не вписаться в текущую концепцию, потому что есть случаи, когда функция хоть и возвращает ошибку, но при этом возвращает какое-то значение

Яндекс принудительно устанавливает неудаляемый «Яндекс.Телемост» в другие свои программы на компьютере пользователя

Так даже и про Google Toolbar помнят сейчас единицы, хотя про Яндекс Бар помнят все

Альфа-версия Flutter для Linux и разработка настольных приложений

Судя по тому, что на мобильных устройствах Flutter не использует родные виджеты, а сам отрисовывает виджеты, которые только мимикрируют под родные — ни о какой поддержке Gtk, Qt и прочих тулкитов речи и быть не может

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность