newobjx
19 subscribers
52 photos
1 video
17 links
Timofey Usov
tmusov@ya.ru
newobj.ru
Download Telegram
Что почитать
Ларман, К. Применение UML и шаблонов проектирования. Введение в объектно-ориентированный анализ и унифицированный процесс UP. 2-е изд. 2002.

> Классическая книга по проектированию программного обеспечения.
> Сам по себе UP (unified process) сегодня практически не используется, однако книга, безусловно, сохраняет актуальность. Рассматриваются проблематика ключевых процессов проектирования, независимая от организации разработки.
> Основные темы: анализ и описание требований в контексте модели прецедентов (глава 6), итеративная разработка, шаблоны проектирования GRASS и GoF, объектно-ориентированное проектирование, UML.
> Сквозной пример, детально разбираемый на протяжении всех глав.
Что посмотреть
Егор Бугаенко. Testing and Testers // TestCon 2020. – М. – 16.09.2020.

Что такое тестирование программного обеспечения, каким оно должно быть? Обсуждаются пять незамысловатых вопросов на собеседовании, раскрывающих ключевые проблемы и задачи тестирования.
1. Главная цель тестирования – это…
2. Тестирование завершено, когда…
3. Продукт поставляется потребителю, когда…
4. Лучшая помощь тестировщика разработчику – это…
5. Какая у вас любимая книга по тестированию?
Вопрос на самопроверку после любого учебного курса по айти:
– Вы чему-то научились или вас убедили, что вы чему-то научились?
Что почитать
Ousterhout, John. A Philosophy of Software Design. 2019

> Относится к числу немногих книг, посвященных общим принципам проектирования программного обеспечения.
> Рассматривается широкий круг вопросов: от когнитивной сложности и архитектуры до принципов написания комментариев и методик организации разработки. При этом автор последовательно выводит частные правила из общих принципов, книга очень связная и целостная.
> Все обсуждение построено вокруг проблемы управления сложностью. Из заключения: «This book is about one thing: complexity. Dealing with complexity is the most important challenge in software design. It is what makes systems hard to build and maintain, and it often makes them slow as well.»
> Будет полезна разработчикам любого уровня. Начинающим – задаст правильные ориентиры. Опытным – структурирует опыт.
> К сожалению, нет русскоязычного издания.
newobjx
Что почитать Ousterhout, John. A Philosophy of Software Design. 2019 > Относится к числу немногих книг, посвященных общим принципам проектирования программного обеспечения. > Рассматривается широкий круг вопросов: от когнитивной сложности и архитектуры до…
Содержание

Preface
1. Introduction
2. The Nature of Complexity
3. Working Code isn't Enough
4. Modules Should Be Deep
5. Information Hiding (and Leakage)
6. General-Purpose Modules are Deeper
7. Different Layer, Different Abstraction
8. Pull Complexity Downwards
9. Better Together or Better Apart?
10. Define Errors Out Of Existence
11. Design It Twice
12. Why Write Comments? The Four Excuses
13. Comments Should Describe Things that Aren’t Obvious from the Code
14. Choosing Names
15. Write The Comments First
16. Modifying Existing Code
17. Consistency
18. Code Should Be Obvious
19. Software Trends
20. Designing For Performance
21. Conclusion
Index
Summary Of Design Principles
Summary Of Red Flags
.NET 6 Preview 4

В прошлом году в ноябре вышел .NET 5. Фактически, было объявлено об остановке развития ветки .NET Framework на версии 4.8, а новую версию Core после 3.1 назвали .NET 5.
Тогда же был объявлен фиксированный график рилизов платформы: очередная версия каждый год и каждая вторая версия - LTS с 3-х летней поддержкой. Таким образом, Core 3.1 - LTS до декабря 2022, .NET 5 - не LTS до февраля 2022, .NET 6 - LTS до декабря 2024.
Рилиз .NET 6 состоится 09.11.2021. Уже сейчас можно ознакомится с предварительным списком новшеств: https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-4/ . Среди прочего: существенно расширены возможности работы с Json через System.Text.Json, а LINQ наконец-то дополнен методами DistinctBy/UnionBy/IntersectBy/ExceptBy 👍.
🛠 Eat. Code. Sleep. Repeat. С днем программиста!
Рейтинги языков программирования

JetBrains DevEco
Ежегодная статистика от JetBrains, составляется на основе опроса разработчиков, в 2021 г в опросе приняли участие боле 30 тыс. человек. Публикуется с 2017 г.
https://www.jetbrains.com/ru-ru/lp/devecosystem-2021/

StackOverflow Developer Survey
Ежегодная статистика от StackOverflow, составляется на основе опроса разработчиков, в 2021 г в опросе приняли участие боле 80 тыс. человек. Публикуется с 2011 г.
https://insights.stackoverflow.com/survey/2021

TIOBE index
Ежемесячная статистика по распространенности языков программирования. Расчет основывается на объеме поисковой выдачи по тому или иному языку по запросу +"<language> programming". Рассчитывается с 2001 г.
https://www.tiobe.com/tiobe-index/

PYPL PopularitY of Programming Language
Ежемесячная статистика популярности языков программирования на основе количества соответствующих поисковых запросов. Рассчитывается с 2004 г.
https://pypl.github.io/PYPL.html

IEEE Spectrum Top Programming Languages
Рейтинг на основе данных CareerBuilder, GitHub, Google, Hacker News, the IEEE, Reddit, Stack Overflow, Twitter.
https://spectrum.ieee.org/top-programming-languages/
.NET 6

На .NET Conf 2021 09-11 ноября были представлены итоговые версии .NET 6 и C# 10 (и Visual Studio 2022).

Существенная часть обновлений связана с улучшением различных аспектов производительности. Объем инвестиций в это направление развития .NET хорошо коррелирует со степенью распространенности облачных платформ. Чем проще масштабировать серверные мощности, тем актуальнее вопрос производительности платформы. Если масштабирование затруднено, то серверные мощности приобретаются с ощутимым запасом и рост производительности на 5-10-20 %, как правило, не уменьшает затрат на оборудование, особенно в сегменте корпоративных или небольших систем. Если же мы можем получить серверных ресурсов ровно сколько, сколько нужно сейчас, и, при необходимости, оперативно их нарастить, то даже небольшие изменения быстродействия сразу отражаются на стоимости эксплуатации. Кроме того, Microsoft заинтересована в производительности, так как ее собственные облачные продукты становятся более важным направлением бизнеса, чем продажа операционных систем или офисных пакетов. И в этом плане компания инвестирует в производительность .NET, в первую очередь, для себя и своих разработчиков.

В целом, новшеств не так много, что ожидаемо, так как новый ежегодный график релизов языка и платформы предполагает, что четные версии будут иметь длительную поддержку (LTS – long time support). В таком графике логично крупные изменения вводить в нечетных версиях.

Все изменения: What’s .new in .NET 6 , What’s new in C# 10.
Государствам по всему миру следует использовать продукты мировых айти-гигантов, а принимать во внимание очевидные риски безопасности – это «самоубийственная IT-стратегия».

Цитата из книги

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

Сатья Наделла. Обновить страницу. 2016.
Сатья Наделла – исполнительный директор (CEO) Майкрософт.

Сегодня таких правительств стало существенно больше.
Пятничный C# 0x35D02
SecureString is not secure, ProtectedData is not protected

Классы SecureString и ProtectedData призваны решать (отчасти) проблемы хранения открытых паролей в памяти в строковых переменных. Но:
1. ProtectedData работает только в ОС Windows, на других платформах выдает исключение PlatformNotSupportedException.
2. SecureString шифрует данные только в .NET Framework, а в официальной документации вообще не рекомендован к использованию: Don't use SecureString for new code.
Основной аргумент против использования этих классов – в общем случае они создают ложную видимость защищенности. Например, даже в работающих вариантах, вся защита существенным образом обесцениваются в момент преобразования в строку, только если только вся цепочка методов с момента чтения до проверки обходится без строк.
🛠 Пятничный C# 0x382EE

Стек (область памяти) создается для каждого потока и используется для хранения локальных переменных и аргументов методов. Стек имеет фиксированный максимальный размер, обычно 4 МБ для 64-битных систем. Для обеспечения высокой производительности стек реализован как стек, то есть массив плюс индекс вершины стека. Массив невозможно увеличить в размере после создания.

Из этих утверждений следует вывод: каждый поток с момента создания использует как минимум 4 МБ памяти. Но если провести эксперимент и создать несколько потоков (любым способом), то диспетчер задач покажет существенно меньший расход памяти на один поток. Почему так?