На работе у нас перешли с TFS на git и команда архитектуры зачем-то написала power shell скрипты, которые должны были бы облегчить работу с git. Теоретически да, с PS скриптами стало удобно работать тем, кто всегда работал с TFS и никогда не понимал, как работает git, потому что с помощью скриптов идеологию git превратили в tfs, что очень даже...
Но даже если сделать power shell скрипты гибкими, я не вижу в них смысла по двум причинам.
1. git итак не сложный, если понимать, как он работает. Не нужны PS скрипты для того, чтобы выполнить команду fetch и merge, это легко сделать напрямую
В .NET Core 3 должна появиться поддержкак десктопных приложений и IOT. И под десктопными понимается не только WinForms, но и WPF, что очень даже круто. Мне нравится XAML и считаю его великолепным решением для построения визуальных интерфейсов, потому что можно делать интерфейсы, которые легко адаптируются под любые размеры экрана.
HTML уже давно доказал свою гибкость и XAML - это примерно тот же подход, поэтому круто, что Майкрософт будет поддерживать это и дальше. Зачем они сохраняют WinForms? Вот этого не знаю, я бы отказался от него. Сэкономили бы ресурсы, которые можно было бы направить на более интересные проекты.
Вопрос читателя: Извините, если злоупотребляю Вашим вниманием, но как-то не получается у меня найти ответы на свои вопросы на всевозможных форумах. А может я их просто не умею задавать.
Может Вы меня наведете на правильную концепцию в вопросе сортировки данных.
За много лет работы я сроднился с dBase и до сих пор ассоциирую сортировку таблицы с соответствующим тегом, принадлежащего ей компаундного индекса. Видимо от того и теряюсь.
Простой пример:
MS SQL -> microORM -> класс, соответствующий структуре выбираемой таблицы -> компонент DataGridView, принявший информацию и отсоединенный от источника данных.
Сейчас await в C# упрощает работу с асинхронным кодом. Вы просто используете этот оператор с асинхронным методом и ждете потом, когда этот метод вернет значение. Но бывают случаи, когда асинхронный метод передает множество данных. Когда мы загружаем большой файл по сети, его данные поступают постепенно и хочется видеть этот процесс, а не финальный результат.
В 7-й версии C# это станет возможно. Можно будет писать что-то типа:
foreach await (var something in asyncData) { }
Сейчас во время интервью часто можно услышать вопрос – чем отличается интерфейс от абстрактного класса или просто класса. И ответ достаточно простой – у интерфейса не может быть реализации методов. Классы должны реализовывать все методы своих интерфейсов. Это не полный и не идеальный ответ, но достаточный.
Начиная с C# 7 (может 7.1) этот ответ станет неверным. В нем можно будет у интерфейсов писать реализацию по умолчанию, которую потом классы смогут переопределять. Microsoft показывает такой интерфейса:
Сейчас идет .NET конференция, которая немного оказалась в тени из-за презентации Apple. Интернет больше обсуждает iPhone XS и XR и решает, какой из них купить, а в это время Microsoft рассказывает о том, что ждет .NET в будущем.
После последнего моего видео, в котором я говорил, что девушки на моей прошлой работе писали код в vim или в Notepad++ в очередной раз почему-то народ начал сравнивать - что лучше и в чем лучше писать.
Блин, пишите в чем вам удобнее. Из моего опыта те, кто умеет писать в блокноте, точно понимают предмет, потому что без этого в блокноте просто написать невозможно.
Если человек пишет в IDE, то тут уже не факт, что он знает внутренности. Тут я уже встречал как реально хороших специалистов, так и тех, кто умеет только перетаскивать компоненты по формам.
Практически в каждой компании, с которой или где я работал пишут собственный уровень доступа к данным. Это какая-то прослойка, которая отвечает за маппинг данных и которой выгружает и загружает данные. Это нормально и вариант подобной прослойки с использованием Dapper я показывал в своей электронной книге по большим сайтам.
В книге я показал простой пример, в котором простой базовый класс является промежуточным уровнем и создает простую, но все же абстракцию от данных.
Примерно такую же идею я часто вижу в других компаний, но более сложную. Но очень часто я вижу одну и ту же ошибку – методы обновления данных обновляют абсолютно все колонки. Даже если вы изменяете только одну колонку, промежуточный уровень требует, чтобы вы вытащили из базы данных или предоставили все колонки. Если что-то не предоставить, то эта колонка обнулится.
Новый вопрос от читателя о том, что выбрать для мобильной разработки - межплатформенный язык или заточенный под платформу:
Я как понял ты занимаешься разработкой ПО под мобилы, вопрос: мне необходимо освоить это ремесло, я умею хорошо писать на C#, мне лучше использовать xamarin и убить двух зайцев, или лучше сначала написать на java под андроид, а потом изучить и написать под IOS?
Недавно получил по e-mail вопрос, на который коротко ответил уже, но потом решил более развернуто написать уже здесь на блоге:
Привет, Михаил много ли логики пишешь на Transact-Sql? Как думаешь хорошая идея писать sql-процедуры на c#? В sql-е есть такая возможность.
В самом SQL не так уж и много возможностей, а вот в Transact-SQL действительно можно написать многое. Но я не пишу логику на Transact-SQL. Я могу написать какие-то простые вещи в самом крайнем случае, но только в крайнем.