All streams
Search
Write a publication
Pull to refresh
44
0
Березников Алексей @gdt

Разработчик C#

Send message

Вот насчёт А и Б я бы не сказал что справилась, всегда на трубе оставалась сидеть буква "и".

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

А-а-а-а-а-а-авогадро :)

Странно. Я сам работал в основном с выгрузками чего-то по типу Zeppelin, там вроде были вообще tsv, поэтому с такими файлами не сталкивался. Однако, в ченджлоге есть:

Tad 0.8.5 - June 28, 2017

New Features

  • European CSV support - support for ; instead of , as field separator.

Похоже на то, да

Отличная вещь. Рекомендую - https://www.tadviewer.com/

Tad is a free (MIT Licensed) desktop application for viewing and analyzing tabular data.

A fast viewer for CSV and Parquet files and SQLite and DuckDb databases that supports large files.

Там кажется даже SQL подобные запросы можно писать.

Согласен, я скорее к тому, что не совсем понятно, что мешает экселю просто взять в кавычки значение с запятой.

А я думал что в csv можно просто двойными кавычками заэкранировать, и тогда вроде как без разницы, какой там разделитель и тд. Однако, чаще смотрю csv в специализированных утилитах типа Tad, Excel и правда черезчур самостоятельный.

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

В лоб можно было сделать конечный автомат с каким то состоянием. Заодно и графы там органично смотрятся.

Есть в принципе варианты:

  • Включать feature только когда соответствующий feature toggle включен

  • Закрыть feature feature toggle'ом

  • Зафичатоглить

    Ни в коем случае не оправдываю, но когда есть опыт с фича тогглами, вроде интуитивно понятно, о чем речь.

Есть же примеры получше. Например, надо писать логи, для этого есть какой-то ConsoleLogger, мы его у себя используем - т е зависим от него. Применяя этот принцип, выделяем интерфейс ILogger, и теперь мы не зависим от конкретного логгера, а наоборот - логгер зависит от нас (при условии что интерфейс определен например в том же модуле что и потребитель, а конкретный логгер - в другом модуле).

Спасибо, интересная статья. А почему мы не можем абстрагировать сам рендерер (IVulkanRenderer, IDxRenderer, IOpenGlRenderer), и сделать то же самое с сериализацией? К тому же, composition over inheritance это один из базовых принципов, поэтому примеры выглядят с этой позиции немного надуманно - никто не будет так делать, как вы и сказали.

Где можно об этом почитать? Используем у себя gRPC под Windows на C#, не замечал таких проблем

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

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

Конечно, есть corner-case'ы, такие как например request handler'ы Mediatr'а в совокупности с плагинной системой, которые не всегда проявляются - например, в 1% случаев, когда отправляешь запрос, его хэндлер ещё не успел зарегистрироваться в контейнере - но они должны решаться системно. В остальном я не совсем понимаю, как можно например сделать фичу, пройти через qa, а потом выяснить, что регистрацию забыл.

Должен добавить что у нас MS DI + SimpleInjector, у которого есть своя валидация, так что your experience may vary :)

Это был намёк :) Просто мы у себя валидируем, интересно в чем преимущество такого юнит-теста, может нам тоже надо так делать

Интересный подход. Если б только был способ провалидировать зависимости при сборке контейнера.

Спасибо за статью, но если делаете туториал, то лучше давать сразу best practices. Например:

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

А можно использовать string.Compare(str1, str2, StringComparison.OrdinalIgnoreCase).

Для проверки того, определено ли значение enum - лучше использовать Enum.IsDefined. Если нужно огласить весь список - Enum.GetValues. Также ничего не сказано про флаги, и про приколы с боксингом для методов Enum, и почему оно вообще так было сделано. Также очень интересно, что enum не реализует IEquatable / IComparable, что ограничивает его применимость в дженериках (см например https://github.com/dotnet/runtime/issues/17456).

А JSON то как постить?

Information

Rating
Does not participate
Location
Кемерово, Кемеровская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer
Senior
C#
.NET
Software development
Object-oriented design
Multiple thread
Git
WPF