Как стать автором
Обновить
22
0
Алексей @pankraty

Разработчик

Отправить сообщение

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

Какая ирония

Точно! Спасибо большое! Поставлю прямую ссылку https://lleo.me/arhive/fan2004/na_mesto.shtml

На эту тему попадался короткий рассказ - довольно забавный, но я не помню ни автора, ни названия. Там в Солнечную систему прибыли представители негуманоидной цивилизации, у которых восприятие времени на несколько порядков более медленное, чем у нас. С их точки зрения, буквально на их глазах, на одной из планет возникла и взрывоподобно развилась разумная жизнь на основе углерода.

закончилось печально

Космический корабль землян обнаружил пришельцев, по-видимому, чрезвычайно древний. Признаков жизни ре обнаружено, всё обитатели представляют собой окаменелости, которые было решено выставить в музее.

И только уборщик недоумевал, почему эти окаменелости периодически оказывались сдвинуты на несколько миллиметров, и раз за разом ставил их на место.

Прочитал статью и пролистывал комментарии, недоумевая, почему никто не указал на очевидную абсурдность бенчмарка.

Вы все неправильно поняли!

Вот так правильно

Монитор захлопнул и домой.

Да, когда у кого-то вертикальный полноразмерный монитор, а у собеседников ноутбуки, то демонстрация экрана превращается в боль. Особенно в Тимсе, который сверху и снизу добавляет весьма немаленькие поля.

Представил себе выпуск Mythbusters на эту тему - как раз по их профилю

Ну что вы ей-богу. Из следующей даты вычесть текущую! Как два пальца

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

  1. Простой паттерн - отписаться от события, изменить коллекцию и подписаться обратно. Но если подписка/отписка сделана через анонимные методы, то отписка не делает ничего, а подписка - добавляет ещё один делегат. Пишу схематично, с телефона

x.OnChange -= () => DoSomething() ;
Uplate(x) ;
x.OnChange += () => DoSomething() ;

Причины понятны, анонимный делегат каждый раз создаётся новый, поэтому отписка не происходит. Но пропустить такое довольно легко.

  1. Window.ShowDialog() имеет задокументированную, но легко пропускаемую особенность: когда вызван без параметров, то родительским элементом для нового окна станет главное окно приложения. И когда в системе открывается большое количество диалоговых окон (в том числе, одно из другого, а из него ещё одно и т. д), со сложными моделями и со множеством взаимосвязей, то память кушается очень активно, а освобождается только при закрытии главного окна. Как решали, точно не помню - то ли явным образом вызывали диспоуз, то ли передавали параметр в ShowDialog, чтобы дочерние диалоги диспозилизь при закрытии родительского.

  2. Ещё в системе были WPF элементы, встроенные в WinForm элементы (посредством ElementHost), а в паре мест было наоборот - WinForm-овский WebBrowser встраивался в WPF окно. И на WinForm всё привыкли, что диспоуз родителя диспозит всех детей, а на WPF всё привыкли, что Dispose не требуется, поэтому в ElementHost даже не предусмотрен диспоуз вложенной вьюшки, даже если она реализует IDisposable. Кто ж знал, что туда внутрь вкрутят браузер, который обязательно надо задиспоузить? Пришлось какие-то костыли прикручивать.

Вообще, конечно, яркий проект был. На thedailywft.com штук 8 статей по его мотивам.

Большую часть "недостатков" можно отнести к любой профессии. Кем бы вы ни работали, вы как рабочая единица будете "функцией", от которой ожидается выполнение поставленной задачи ("вы всего лишь инструмент"), расходы на которую будут стремиться минимизировать для увеличения прибыльности ("вы обуза"); "профессия" предполагает, что вы не единственный в мире специалист, а в той или иной мере представляете класс специалистов в определенной области ("вы заменяемы"). Насчёт устаревания - вероятно, где-то ещё сохранились профессии, где не требуется изучение нового, чтобы оставаться востребованным (и высокооплачиваемым), но их всё меньше, и да в IT давление нового особенно сильно; для кого-то это минус, а для кого-то наоборот жирный плюс.

Так в чем в итоге посыл статьи? Бросайте %JOB_NAME%, потому что вы всего лишь инструмент, становитесь... А собственно кем? Где тот идеал, по мнению автора, который лишён перечисленных недостатков?

Может, потому что этот устойчивый оборот имеет корни в конном спорте?

Из статьи не совсем понятно, предлагается ли ставить паруса на новые суда или же дооборудовать существующие, но складывается впечатление, что второе. И если так, то непонятно, откуда там такой запас прочности и остойчивости (надеюсь, правильно употребил термин), что позволяет разместить 46-метровую стальную конструкцию, да ещё и с механизмом складывания...

В оригинале web-scale companies. Netflix (который не FAANG) автор ниже прямо упоминает.

Я извиняюсь, но Netflix это N в FAANG.

Хотел написать, что для анонимных объектов это могло бы сработать, но там могут быть неприятные эффекты, когда блок кода с присвоением переменной из-за неправильно поставленной точки с запятой будет трактоваться как создание анонимного объекта без присваивания куда-то.

{ x = 1 };

{ x = 1; }

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

Пример (абсолютно синтетический):

private MyClass MyClass(long x) => new MyClass((int)x+1);

var p = MyClass(1) ;

Сейчас вызывается метод, а если отказаться от new - будет вызываться конструктор, как более подходящая перегрузка.

В общем-то незачем, конечно (впрочем, и без интерполированнных строк в константах можно было жить), просто выглядит неконсистентно. Это как разрешить операцию сложения только для многозначных чисел, но не для однозначных

Скажем так, я не настаиваю, что это единственно правильное решение, но считаю рациональным "нормализовать" входные данные, приводя их к нулевому часовому поясу (да, UtcNow), а при отображении - приводить к часовому поясу пользователя.

Аналог: если система поддерживает различные единицы измерения, вы вряд ли будете хранить в одном столбце "19 м", " 140 дюймов", "4 фута". Скорее всего, всё будет преобразовано к одной единице измерения, а потом оттбражатся в виде, удобном пользователю. Исключение - когда это приводит к недопустимой потере точности; в таком случае хранение в разных единицах оправдано.

Но при наследовании есть одна особенность: переопределенный вами метод ToString не будет унаследован потомками от родительской записи. Для того чтобы потомки записей наследовали метод ToString, стало доступно использование ключевого слова sealed, которое запрещает компилятору генерировать имплементацию метода ToString у дочерних записей.

Выглядит как баг, который оказалось настолько сложно исправить, что пришлось запилить костыль, работающий для некоторых случаев. А если я хочу использовать родительскую имплементацию ToString во всех наследниках кроме одного-двух? Тупик, метод запечатан, его уже не переопределить.

Интересный факт. Данное нововведение относится к интерполированию строк, то есть добавление константного символа не допускается:

Очень странная, ничем не обоснованная особенность. Недоделка, которую исправят в С# 11?

Когда данные собраны в базу из разных источников, в подавляющем большинстве случаев неважно знать, какой часовой пояс использовал пользователь/система в момент отправки данных. В тех случаях, когда это важно, DateTimeOffset вполне оправдан. В других - скорее избыточен, т.к. занимает вдвое больше места.

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

Так-то да, но контрпримеров много больше.

Информация

В рейтинге
Не участвует
Откуда
Саратов, Саратовская обл., Россия
Дата рождения
Зарегистрирован
Активность