Этого треда уже нет.
Это копия, сохраненная 18 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
 .jpg75 Кб, 900x900
C#/Сишарп/.NET Тред #22 /csharp/ 1846539 В конец треда | Веб
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.

Литература вторым постом

1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c#
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- https://metanit.com/
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/

2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- http://ideone.com/
- http://csharppad.com/
- http://www.tutorialspoint.com/compile_csharp_online.php
- http://rextester.com/l/csharp_online_compiler

3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.

4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# довольно активно развивается, недавно вышла третья версия .NET Core фреймворка и восьмая версия языка. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.

5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ).
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.

6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, смотри сюда - https://docs.microsoft.com/ru-ru/visualstudio/cross-platform/cross-platform-mobile-development-in-visual-studio?view=vs-2019.
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials

7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL

8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях

Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn Overview
Новые возможности C# 8.0: https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-8

ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ

Код этой шапки: https://pastebin.com/YJFQKsNm

Прошлый тред тонет здесь: >>1797054 (OP)
2 1846543
9. Что почитать?
- The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода.
- C# 7.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином. Уже появилось издание для 8.0, однако в интернетах пока его нет.
- C# 7.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой
- Pro C# 7: With .NET and .NET Core (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
- C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.

10. Более хардкорный материал
- CLR via C# (Jeffrey Richter) - это классика, это знать надо.
- C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.
- Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.

11. Хочу еще хардкорней
- C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата.
- Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода.
- .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам

12. Литература по WPF
Из более-менее актуального можно выделить пару книг:
- Pro WPF 4.5 in C# (Matthew MacDonald)
- Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)

13. Литература по ASP.NET
- Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)
- Pro ASP.NET MVC 5 Platform (Adam Freeman)
- Beginning ASP.NET for Visual Studio 2015 (William Penberthy)

14. Литература по асинхронности, параллелизму и всему такому
- Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции
- Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная
- Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg

15. Литература не по шарпу, но так или иначе связанная с языком
C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity
Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.

16. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"

17. Что еще нужно знать, чтобы взяли работать за еду?
- SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper
- Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick
- Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун
- Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках
- Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы
- Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST
- Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID

18. Я не умею читать, что посмотреть?
- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0
- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming
- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO
- Коллекция видеоуроков, по всему дотнетовскому и смежным темам (250 часов, на русском) - https://nnm-club.me/forum/viewtopic.php?t=891636
- Набор курсов по C# от O'Reilly Media (28 часов, на английском) - http://rutracker.org/forum/viewtopic.php?t=5082978
2 1846543
9. Что почитать?
- The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода.
- C# 7.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином. Уже появилось издание для 8.0, однако в интернетах пока его нет.
- C# 7.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой
- Pro C# 7: With .NET and .NET Core (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
- C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.

10. Более хардкорный материал
- CLR via C# (Jeffrey Richter) - это классика, это знать надо.
- C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.
- Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.

11. Хочу еще хардкорней
- C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата.
- Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода.
- .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам

12. Литература по WPF
Из более-менее актуального можно выделить пару книг:
- Pro WPF 4.5 in C# (Matthew MacDonald)
- Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)

13. Литература по ASP.NET
- Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)
- Pro ASP.NET MVC 5 Platform (Adam Freeman)
- Beginning ASP.NET for Visual Studio 2015 (William Penberthy)

14. Литература по асинхронности, параллелизму и всему такому
- Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции
- Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная
- Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg

15. Литература не по шарпу, но так или иначе связанная с языком
C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity
Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.

16. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"

17. Что еще нужно знать, чтобы взяли работать за еду?
- SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper
- Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick
- Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун
- Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках
- Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы
- Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST
- Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID

18. Я не умею читать, что посмотреть?
- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0
- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming
- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO
- Коллекция видеоуроков, по всему дотнетовскому и смежным темам (250 часов, на русском) - https://nnm-club.me/forum/viewtopic.php?t=891636
- Набор курсов по C# от O'Reilly Media (28 часов, на английском) - http://rutracker.org/forum/viewtopic.php?t=5082978
3 1846560
шапка, как всегда, старее говна мамонта.
4 1846562
>>846560
Напиши текст для новой шапки.
5 1846563
>>846560
Все равно человек герой. Взял, да и перекатил.
devenvsHXPn754yD.png27 Кб, 848x379
6 1846871
так ребята, вопрос по EasyHook разобрался, функи перехватывает, скорости хватает, но пока не могу найти какую функцию перехватить чтоб приложение, а точней игра (adobe air) не юзало память, точней логика игры работала, на сервер заходило, сигналы с клавы отправляло, но визуально приложение типо не видно, в теорий это снизит нагрузку.

вот тут есть пример чего я хочу реализовать
https://www.ownedcore.com/forums/mmo/path-of-exile/poe-bots-programs/617196-release-poe-d3d9-null-renderer-0-gpu-1-cpu-usage.html

но для игры на флеше а точней adobe air
7 1846953
Вот знаешь ты C# лучше всех на свете, но ничего кроме C#. Потому нахрен никому ты не нужен. Учи блять технологии, фреймворки и дохуя всего.
То ли дело какой-нибудь PL/SQL - если ты профи, то будешь получать столько же, сколько сеньор шарпист, а знать дополнительно ничего не нужно.
8 1846972
>>846871
Самый простой способ найти функцию рендера и подставить вместо нее функцию, которая ничего не делает, чем снизить нагрузку на видеокарту почти до 0. Сомневаюсь, что кто-то реверсил Adobe AIR.dll, так что в руки какой-нибудь IDA Pro и вперед копаться в асме.

Как вариант найти адрес функции начала сцены по смещению, но для этого надо понимать что это такое, DirectX или OpenGL или еще какая хуйня.
9 1847056
>>846539 (OP)
Как пофиксить такую ошибку?

>Your project is not referencing the ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" section of your project file, and then re-run NuGet restore.


Проверял в TargetFramework, там стоит v4.7.2.
Еще перезапускал NuGet, чистил кэш, толку никакого.
10 1847057
>>1846869 →

> есть ли что-то про архитектуры кроссплтформенных решений?


нетстандарт, неткоре

> как я понимаю в шарпе такой подход не будет работать


> А как тогда?


> Делаем разные реализации для каждой платформы


В качестве примера - современные MVVM-UI-тулкиты.
Кроссфплатформенный шаблон выглядит так:
Солюшон (Тест1)
Проект (Тест1_ЮИ), зависит от: дотнетстандарт
- Логика, окошки, модель (model), вью-модель (view-model) - абстрактные и платформонезависимые
Проект (Тест1_виндовс), зависит от дотнетстандарт, Тест1_ЮИ, ВПФ или формочки
Проект (Тест1_линукс), зависит от дотнетстандарт, Тест1_ЮИ, ГТКшарп или Кутшарп или от голых иксов или от фреймбуфера нахой
Проект (Тест1_андроид), зависит от дотнетстандарт, Тест1_ЮИ, андроид СДК или чо там
Проект (Тест1_макось), зависит от дотнетстандарт, Тест1_ЮИ, мак СДК или чо там

- представление (view), реализованное средствами целевой платформы/тулкита/сдк

Всю логику пишешь в основном первом проекте солюшена Тест1_ЮИ. В остальные проекты не лезешь принципиально, они заточены под то, чтобы динамически выводить предоставляемые твоей вью-моделью данные и отдавать ей же события ввода. И соответственно, при сборке решения заводишь несколько конфигов, которые под каждую целевую платформу, на которую ты нацелился, собирают и разворачивают только два проекта из всего решения: Тест1_ЮИ и Тест1_%платформнейм%
11 1847058
>>847056
Создай новый проект заново и вручную добавь в него все файлы из старого.
12 1847059
>>847056
Попробуй удалить папки bin/obj вручную и сделать ребилд.
image.png89 Кб, 225x225
13 1847063
14 1847064
>>847057

>современные MVVM-UI-тулкиты


Модно, стильно, молодежно уже Model-View-Update, хотя он и раньше был:
https://docs.microsoft.com/en-us/dotnet/core/dotnet-five#model-view-update-pattern
15 1847067
Есть asp.net core приложение, довольно всё стандартно, обычный mvc. Хочу как-то логгировать изменение одного свойства в модели. Как это проще сделать? Гугл предлагает реализовывать INotifyPropertyChanged, но прочитал, что для web-приложений этот вариант не очень.
16 1847073
>>847064

> Model-View-Update


Хуясе, ебать! Спасибо, буду в курсе.
17 1847074
>>847067
Модель находится на клиенте или на сервере? Если на клиенте, то надо отправлять запрос на сервер при изменении. Если на сервере, то просто логгировать, используя NLog, Serilog, еще чего.

INotifyPropertyChanged - это просто интерфейс, который ничего не делает. WPF умеет автоматически через рефлексию пытаться взаимодействовать с INotifyPropertyChanged. Это не веб, но ничего не мешает реализовать это самому, смотреться только дико будет.
18 1847106
>>847073
Настолько молодежно, что его даже негде применить и хз зачем вообще его применять
19 1847149
Господа, послезавтра собеседование, очко играет, покидайте вопросов на собеседовании по шарпу. Первые страницы гугла уже проверил
20 1847154
>>846972

>Самый простой способ найти функцию рендера и подставить вместо нее функцию, которая ничего не делает



Так EasyHook это и делает - перехватывает вызов функции и подставляет вместо него тот что тебе нужен.
21 1847155
>>846953
Ну так учи SQL. Если не выучил, значит не так уж это и просто - быть экспертом по SQL.
22 1847157
>>847149
В чём различия понятий "асинхронность, многопоточность и параллельность", опиши каждое, если они чем-то различаются.
23 1847165
>>847157
Многопоточность -- это когда код может выполняться в разных потоках, не обязательно одновременно. Параллельность означает что потоки могут выполняться одновременно, асинхронность -- это способность потока запускаться, не блокируя порождающий его поток.
24 1847194
>>846539 (OP)
Почему программа останавливается? Здесь 2 ридлайна, после того как я нажимаю интер после этого появляется fff2 и программа не завершается, последний метод не срабатывает.
25 1847198
>>847194

>и программа не завершается


Верней завершается вся программа, при этом что не срабатывает второй ридлайн
26 1847204
>>847194
async void - анти-паттерн и может вызывать непредсказуемые результаты, используй async Task.
27 1847215
>>847204
Понял, спасибо
image.png5 Кб, 465x137
28 1847218
>>847204
Ну всё равно какой-то авто-интер срабатывает и после вывода ффф2 опять заканчивается программа, я не нажимал на интер
29 1847224
>>847218
Замени Read на ReadLine. Или используй два Read вместо одного.
30 1847228
>>846972
я вот кстате подменил d3d9 из того форума, картинки нету но память жрет абсолютно одинакового
31 1847230
>>847218
Можно еще ReadKey использовать. Enter - это два символа на Шиндовс.
32 1847247
>>847165

>асинхронность -- это способность потока запускаться, не блокируя порождающий его поток.



Т. е. асинхронность недостижима в однопоточных системах?
33 1847252
>>847228
Надо еще вырезать код, который создает константные буфферы и который загружает меши с текстурами. Причем такие буфферы бывают еще разных режимов. PoE ловит такую хуйню и дает бан.

Идея работы видеокарты следующая:
- процессор лезет на диск и достает например модель персонажа
- процессор создает константный буффер и буффер модели
- процессор загружает все это в память видеокарты
- видеокарта, используя шейдеры (мини-программа), делает манипуляции с буфферами и рисует изображение

Слышал новые видеокарты хотят научиться доставать ресурсы без процессора, не слежу.
34 1847254
>>847194
Task.Run убери везде.
Thread.Sleep на await Task.Delay(1000).
ShowTimer не должен быть асинхронным.
totalTime сделай внутри функции которая увеличивает эту переменную, перед циклом while;

>последний метод не срабатывает.


Отключи оптимизации при компиляции, возможно Console.Read() вырезается из-за того что дальше никакого кода нет. Если не поможет, то замени на Console.ReadLine();
35 1847260
>>847247
Философский вопрос. Асинхронность в шарпе всё равно использует потоки, просто не системные потоки.
36 1847271
>>847254
>>847230
>>847224
Спасибо, с двумя ридлайнами в конце программа корректно работает, а ещё работает если верхний Read на ReadLine заменить, а нижний можно просто Read оставить
37 1847284
>>847260

>Философский вопрос.



Смотри так на собесе не скажи, а то быстро попустят.

>Асинхронность в шарпе всё равно использует потоки



Не всегда. Если асинхронная задача выполняется быстро, то всё происходит в рамках одного потока. Для того чтобы этого не происходило есть флаг TaskCreationOptions.LongRunning, тогда под выполнение данной задачи буде выделен отдельный поток.

Асинхронность это больше про взаимодействие с внешними устройствами, а не многопоточность. Толку от того что ты отправишь запрос на сервер в отдельном потоке не будет.
38 1847291
>>847284
Всё равно ведь сохраняется стек и счётчик инструкций. Если они сохраняются, то там таки есть отдельный поток, пусть это и не поток операционной системы.
Поправь меня, если я не прав.
39 1847315
Бтв, на тему параллелизма. Можно написать простой синхронный код, но выполняться его участки будут параллельно. Например:
https://youtu.be/Tb2Fx9qku_o?t=272

Зачем это знать? Есть высокопроизводительные локфри алгоритмы, которые могут упереться в мемори барьеры и похерить код. Жаль, в отличии от плюсов, в шарпе есть только фул бирор.

99% шанс, из собеседующих никто это знать не будет.
40 1847377
>>847106
Штош, тогда не буду в курсе.
41 1847413
>>847291

Так при чём здесь недостижимость асинхронности в одном потоке? Она вполне достижима, просто этот один поток будет переключаться между задачами в пуле потоков.

Асинхронность это когда ты не выполняешь задачу сразу, а возвращаешься к другим задачам, откладывая выполнение текущей. Это полезно когда на этапе выполнения задачи задействованы сторонние устройства, которые выполняют задачи на аппаратном уровне - сетевые запросы, чтение файлов с носителей, печать документов. Тебе достаточно периодически возвращаться к ним и проверять их статус.
42 1847418
>>847413
Ты не вполне понимаешь, что такое "поток" по-моему. Стек это часть потока?
43 1847423
>>847418
Да, но какое это отношение имеет к теме?
44 1847428
>>847315

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



Но это зависит от архитектуры процессора, как сказано в видео. А для эффективности многопоточного кода достаточно чтобы у процессора было >= 2 ядер.
45 1847429
>>847423
Прямое же.
В асинхронном методе поток выполнения доходит до await. Он сохраняет стек и возвращает поток выполнение в точку вызова асинхронного метода.
Философский вопрос: если у потока в двух точках разный стек, то разве это один и тот же поток? Если считать, что это поток операционной системы, то ответ да, возможна реализация асинхронности с помощью одного потока операционной системы. На деле происходит переключение потоков реализации асинхронности! Стеки-то разные, счётчики инструкций разные. Это натуральное преключение потоков.
46 1847449
>>847429
Он не сохраняет стек и не возвращает поток в точку вызова. Дойдя до await поток возвращается в пул потоков, помещая задачу в очередь пула потоков.
Сама асинхронная функция это объект в виде машины состояний в которой каждый await и всё что до него это определенный блок кода, выполнение этих блоков никак не связано с потоком который дошел до первого await.
Запусти асинхронный метод и выводи Thread.CurrentThread.ManagedThreadId перед await, во время работы метода и по его окончанию. Номер потока который продолжает выполнение после await будет всегда совпадать с номером который выполнил заключительную часть асинхронного метода.
47 1847455
>>847449

>Номер потока который продолжает выполнение после await будет всегда совпадать с номером который выполнил заключительную часть асинхронного метода.


Что говорит нам, что это один и тот же поток CLR. Не вижу, как это противоречит тому, что я написал выше.
48 1847466
>>847455
Тебя на собесе попустят с твоими философскими вопросами и попытками маняврировать.
49 1847470
>>847466
Отнесусь к этому философски и буду сразу уточнять, что интервьювер имеет в виду под потоком.
Я думаю, на собесе так и так попустят.
50 1847483
Смотрите, обернул я, значится, статический HttpClient в нестатический класс, ну типа фасад, вы поняли, в инстансе этого фасада я принимаю еще Uri, ну и из разных мест могу делать запросы конкретно к нужному мене Uri, при этом выглядит со стороны будто HttpClient - не статичный. Так вот, все работало абсолютно нормально до того момента как мне взбрело в голову: Ой, смотри, это же куча однотипных задач с запросами, давай ка я сделаю кучу тасков и просто подожду пока они завершатся все. Ну дык, сказано - сделано. Запускаю - бах, нулл референс эксепшн, я такой охуеваю, смотрю, а почему-то тот Uri что должен передаваться в конструкторе - действительно nul(при этом я то не дурак, я в конструкторе проверку на null делал, а поле это вообще ридонли)l, окей, ставлю точку останова, и нихуя, все нормально Uri то что нужен, вообще все охуенно. Что, блядь, это за магия такая? Почему поле-то внезапно null становится и именно в релизе и исключительно после того как я решил не по очереди запросы делать а с вот так вот асинхронно все разом запустить и подождать пока завершатся.
51 1847488
>>847483
Если ты глядя на код ничего не понял, то чего ожидаешь от тех кто этого кода не видел?
Image 3.png16 Кб, 553x380
52 1847489
>>847483
значит не повезло тебе
я вот прямо щас ебусь с таким
но похоже у тебя не мой случай и прицепом за мной не пойдешь
53 1847524
>>846560
потому что шарп толком уже никому не нужен.
джава как была, так и осталась, а шарп, традиционно сильный в программах под винду, просто умер вместе с виндой. осталось только юнити и совсем чуть-чуть энтерпрайза.
винфон/винмобайл, винформ, впф, сильверлайт, виндоус сервер - все сгинуло.

сейчас на каком-нибудь жс/го/котлине можно гораздо быстрее написать несложный бек, либо на той же жабе, если нужно что-то более громоздкое. шарп не нужен, это видно по количеству вакансий.
54 1847535
>>847488
Ну блин. Кода с собой нет.

Суть, было так:
foreach(var obj in SomeDTOArray)
{
//Простыня всяких манипуляций с этим объектом, запросы к базе, все это вот
await Api.PostResult(result);
}
это работало нормально, но блин, можно же сделать все разом, вот я и решил что было-бы неплохо вынести эту простыню в отдельный таск и получил
List<Task> tasks = new List<Task>()
foreach(var obj in SomeDTOArray)
{
Task t = MySuperMethod(obj);
t.Run();
tasks.Add(t);
}
await Task.WhenAll(tasks);

Bот. И что получилось, а то что в определенный момент, по непонятной мне причине в этом Api.PostResult() выскикивает нулл-эксепшн, хотя апи, по сути, это просто такой вот класс:
public class Api
{
private static HttpClient _http = new _http();
readonly string _uri;
Api(string uri)
{
_uri = uri??throw new ArgumentNullException(nameof(uri));

}

public Task PostResult(SomeObject post)
{

Uri requestUri = new Uri($"{_uri}/api/..."); //<- вот тут вот как раз и кидается нулл референс, дескать _uri - нулл
...
}
}
54 1847535
>>847488
Ну блин. Кода с собой нет.

Суть, было так:
foreach(var obj in SomeDTOArray)
{
//Простыня всяких манипуляций с этим объектом, запросы к базе, все это вот
await Api.PostResult(result);
}
это работало нормально, но блин, можно же сделать все разом, вот я и решил что было-бы неплохо вынести эту простыню в отдельный таск и получил
List<Task> tasks = new List<Task>()
foreach(var obj in SomeDTOArray)
{
Task t = MySuperMethod(obj);
t.Run();
tasks.Add(t);
}
await Task.WhenAll(tasks);

Bот. И что получилось, а то что в определенный момент, по непонятной мне причине в этом Api.PostResult() выскикивает нулл-эксепшн, хотя апи, по сути, это просто такой вот класс:
public class Api
{
private static HttpClient _http = new _http();
readonly string _uri;
Api(string uri)
{
_uri = uri??throw new ArgumentNullException(nameof(uri));

}

public Task PostResult(SomeObject post)
{

Uri requestUri = new Uri($"{_uri}/api/..."); //<- вот тут вот как раз и кидается нулл референс, дескать _uri - нулл
...
}
}
55 1847549
>>847524

>традиционно сильный в программах под винду, просто умер вместе с виндой


шта?
как юзер видел софта под винду на шарпе - по пальцам одной руки можно пересчитать.
а в ентерпрайзах переходы на линуксы только мечты. как было - так и осталось.
56 1847556
>>847549

>а в ентерпрайзах переходы на линуксы только мечты. как было - так и осталось



каво? работал в сбере, друг работал в х5 ритейл. нигде нет виндовых серверов. ну может и есть где, но мы не видели.

да и вообще, вы ебанутые чтоли, какие сервера на WINDOWS SERVER в 2020 году? все уже давно либо свои сервера делают под линухом, либо арендуют у амазона под тем же линухом.
57 1847575
>>847556

>ну может и есть где, но мы не видели.


если не видели, значит не существует, ага )

весь виндовый софт в ентерпрайзах никуда не делся одним махом. это только в мечтах распильщиков "хуяк хуяк и линукса". а в остальном то же самое - переписывать софт под линукс сервер только потому что вот - мало кто будет.
image.png338 Кб, 2308x1046
58 1847703
>>847524
Сказочник. Если в твоей мухосрани нет вакансий, то это не значит что их вообще нет. Шарп разрабов порядка 6 млн сейчас и потихоньку начинают писать под линухи и контейнеры.
Факт - на шарпе гораздо быстрее написать бэк, чем на го/жава/скала. Дотнет по перформансу уделал жаву.

Десктоп двум с половиной анона сейчас нужен и всяким шаражкам.

Azure сейчас по доле рынка не уступает AWS. Там естественно и куча виндовых серваков и дотнета и powershell. Но дотнету винда сейчас нафиг не нужна, сами МС перетягивают на использование их фреймворка под линухами. Дотнета достаточно крутится и под AWS/GCP.

https://www.youtube.com/watch?v=kX0eX5tDGgc
59 1847705
>>847535
Попытался прочитать этот код, но глаза отказались. Надо или форматировать нормально или через ссылку на какой-нибудь pastebin.
image.png93 Кб, 1003x831
60 1847716
>>847703
Фантазии
61 1847833
>>847716
Ваш дотнет не будет нужен, если не завезут поддержку ARM.
62 1847835
>>847833
Так ведь уже есть.
63 1847836
>>847833
Тебя даже шторм не разбудил
64 1847863
Объясните, что вы делаете на работе? Ну, не в смысле: "Пишем код", а какие задачи решаются, можно без конкретики, я понимаю, что всякие nda и все такое, достаточно в общем объяснить.
65 1847883
>>1847558 →
что поделать. У каждого подхода свои недостатки.
66 1847888
>>847833
>>847524
Почему как только я зайду в шарпо тред, всегда вижу спор с дебилом вылезшим из 2007, который кукарекает что шарп мертв, так как работает только на винде?
Заебал уже, в тред срать время у него есть, а посмотреть на вики что такое .net core нет.
67 1847901
>>846539 (OP)
Как в WinForms нормально подстроить размеры элементов под шрифт и разрешение экрана?
Я делаю вот так:
using var g= button.CreateGraphics();
var bs = g.MeasureString(button.Text, button.Font);
w = (int)(bs.Width);
h = (int)(bs.Height);
button.ClientSize = new Size(w, h);
Но получается хуета и текст обрезанный.
Какое бы значение я не ставил в этом: Application.SetHighDpiMode(HighDpiMode.SystemAware); всё равно получается хуета.
68 1847924
>>847901
Винформс не адаптивная, нужно wpf юзать
69 1847963
>>847863
"Эта херня не работает - почини" - дебажу, разбираюсь в коде, вношу исправления.
"Эта херня должна работать по новому" - разбираюсь в коде, меняю
"Запили эту херню" - пытаюсь найти схожий функционал, запиливаю херню
"Эта херня работает на старых библиотеках/не соответствует новой архитектуре/работает медленно" - переделываю как надо
"Сделай ревью этой херни" - делаю код ревью, пишу комментарии.
"Ананон, анон, что мы будем делать? Анон, анон, как мы будем жить?" - собираемся с командой и обсуждаем проблемы архитектуры или как будем делать конкретную нетривиальную фичу.
А еще есть планирование следующих итераций, где обсуждаем и разбираем задачи, оцениваем времязатраты; созвоны с клиентом; личные консультации с сотрудниками по небольшим проблемам разработки.
70 1847991
У меня есть массив структур. Я бы хотел, чтобы в каждой структуре была ссылка на следующую структуру (Next).
Думал сделать это как ref поле. Но оказывается так нельзя.
Можно ли как-то сделать это без использования unsafe и без пихания в каждую структуру всего массива структур.
71 1848016
>>847991
У структуры должен быть фиксированный размер, цепочка связных структур невозможна, потому что размер первой структуры должен быть бесконечен.

Можно делать так:

struct MyStruct
{
public int Value;
public int NextIndex;
}

Где NextIndex это индекс следующей структуры в массиве структур.
72 1848071
>>847991
Можешь юзать боксинг:
struct Point<T>
{
public T Value;
public object next;
public Point<T> Next => (Point<T>) next;
}
и инициализировать массив так:
Point<int>[] points = new Point<int>[100];
object next = null;
for(int i = 99; i >= 0; i--)
{
var p = new Point<int> {Value = i};
p.next = next;
next = p;
points = p;
}
Console.WriteLine(points[2].Next.Next.Next.Value);
Всрато, неэффективно, но без массива структур. Вообще, для такой хуйни созданы классы, посмотри что это такое.
73 1848072
>>847901
Нахрена тебе винформс? Бери и делай в браузере, как белый человек. ХЗ в чем проблема-то. Если это вообще что-то простое, то можешь вообще на электроне делтать, как все нормальные люди. Серьезно, тебе же удобнее будет.
74 1848073
>>848072

>на электроне


А что это?

другой чел
76 1848076
>>848071
и да, изменять структуру через Next не получится, так как при каждом Next получаешь совсем новую структуру. Поэтому либо юзай NextIndex как писал анон выше, или класс, как все нормальные люди.
Но не понимаю, что тебе мешает хрвнить в структуре ссылку массив. Да, придется хранить дополнительно 12 байт, а не 8, и че.
Тогда можешь даже сделать так
struct Point<T>
{
public T Value;
public Point<T>[] arr;
public int index;
public ref Point<T> Next =>
ref arr[index+1];
}
Но учти, что ref это не указатель и не ссылочный тип, и вместо налла кинет в тебе в ебло ексепшн.
77 1848089
>>848073
лютое говно. да еще на лютом говне - жс
78 1848127
>>848072
WinForms - это лёгкость, простота, ясность и производительность.
WFP - это какое-то кривое чудовищное говнище для поехавших.
А уж JS-параша не нужна в принципе.
79 1848128
>>848127
WinForms - это лёгкость, простота, ясность и производительность.

пофиксил

когда нужно будет создать что то адаптивное, да с сложнее тупынх кнопочек, то сразу простота и легкость улетят в одно темное вонючее место
80 1848135
>>848128
Для нубов хорошо, что практически любой вопрос по WF легко гуглится.
81 1848136
>>848135
по WPF аналогично.
возможности несравнимы. разве что менее производительнее - факт
82 1848146
>>848136
Что может WFP, чего не может WinForms?
83 1848157
>>848146
Адаптивность
84 1848165
>>848146
Возможность кастомизации - создание контролов с любой визуальной частью простыми средствами, а не еблей с OnPaint
ну и MVVM из коробки
85 1848181
Хочу кодревью! Сделайте мне кодревью!
https://pastebin.com/YjjuumER
86 1848188
>>848181
Зачем выдирать интерфейсы, если у тебя нет других реализаций интерфейса и ты не собираешься использовать эти классы полиморфно? По-моему это глупо. Интерфейсы мудны. Логгер велосипедировать последнее дело, ставь NLog.

> public enum ServerState


Почему не bool? Undef нигде не используется.

> Socket acceptor = new Socket();


var

> acceptor.Bind(new IPEndPoint(IPAddress.Parse(_host), _port));


Нет валидации, запросто может вылететь исключение

> acceptor.Listen(100);


Магическое число

В целом нагородил "архитектуры" где её нет, получилось горе от ума — путанный студенческий код.
87 1848196
>>848181
async void Stop()
это как
и в чем заключается операция остановки?
88 1848197
>>848196

>async void


Антипаттерн вне эвент хендлеров, кстати
89 1848204
>>848196
Да, тупанул, тут async не нужен, просто по инерции написал.
В данном случае - просто меняем флаг.

>>848197
А как тогда нормально запустить что-то что должно просто выполняться и я этого ждать не хочу?
90 1848206
>>848204
async Task
91 1848207
>>848206
Ну дык async Task предполагает что я ждать буду, а мне не надо. Я конечно могу и не ждать, но тогда IDE будет мне упорно светить зелененьким что нужно подождать.
92 1848215
>>848204
В чем смысл просто смены флага если оно висит на await
93 1848219
>>848207
_=MyAsyncMethod() если нужно fire and forget
94 1848222
>>848188

>Зачем выдирать интерфейсы, если у тебя нет других реализаций интерфейса


Я не тот анон, но я всегда выделяю интерфейсы для больших и/или сложных классов. Они добавляют читабельности.
Смотришь на интерфейс и сразу понимаешь внешний функционал класса, понимаешь его связность с другими классами, понимаешь, насколько он грамотно выделен.
95 1848233
>>848222
Code region + Collapse to definitions
96 1848246
>>848215
Ну блин, не хотелось мне оборачивать прием сокета в Socket clientSocket = await Task.Run(async () => await acceptor.AcceptAsync(), cancellationTokenSource.Token). Выглядит это убого.
97 1848254
>>848246
ну а кто вас заставляет не любить TcpListener и опускаться ниже без особой на то причины
98 1848315
>>848246
Если уж пилить велосипед, то либо с идеально архитектурой, либо с какими-то фишками. А это что? Поделка из раздела "топориком на коленке".
99 1848319
>>848315
Курсовая это. Вебсервером оно должно стать. С поддержкой этих ваших шифрований и прочей фигней. Ну и возможностью в случае чего быть не только веб-сервером, а каким-нибудь сервером для проверки времени. Не будешь же ты время засовывать в HTTP, когда можно просто отдать просто байтики.
100 1848326
>>848319
Ну тогда открывай готовую реализацию и переписывай своими словами.
101 1848327
Lul
102 1848338
>>848326
Да я как-бы уже посмотрел как гайды так и исходники того же кестрелла. Просто например кестрел по мне слишком сложноватый для курсача, с другой стороны то что в гайдах там совсем какая-то примитивщина, где мы берем просто HttpListener, пишем один цикл, добавляем асинхронный обработчик, и все готово. При этом оба эти варианта заточены исключительно под веб, а мне таки хотелось чтобы можно было запилить решение которое могло бы в теории таки не ограничиваться 2 протоколами.
103 1848367
>>848338

>ограничиваться 2 протоколами


это какие такие протоколы?
104 1848485
Как правильно реализовывается паттерн Репозиторий и Unit of Work, и нужно ли вообще это делать, или это антипаттерн и достаточно EF контекста? В одних примерах репозитории возвращают IQueryable<T>, в других IEnumerable<T>, в одних сохраняют изменения после каждой операции, в других этим занимается unit of work, хрен поймёшь.
105 1848501
«На дваче только и разговоров, что о дотнете и о пятой версии. Там говорят о том, как чертовски здорово наблюдать за огромной платформой, как он решает все вопросы бизнеса. И еле видимый свет, словно от тень от джавы, горит где-то на дне…»
106 1848507
>>848485

>нужно ли вообще это делать,



Зависит от проекта. У репозитория есть свои плюсы, например, облегчение юнит-тестирования, также за счёт unit of work можно лучше описать логику работы с транзакциями и лучше контролировать изменение данных.

>В одних примерах репозитории возвращают IQueryable<T>, в других IEnumerable<T>



Только репозиторий должен работать напрямую с БД, т. е. он не должен возвращать IQueryable, так как IQueryable не загружает данные в память перед тем как их отфильтровать, он фильтрует их на стороне сервера.

> в одних сохраняют изменения после каждой операции, в других этим занимается unit of work, хрен поймёшь.



Сохранением, изменением, восстановлением должен заниматься unit of work это его прямое назначение.
107 1848535
>>848507
А если я к возвращаемым из репозиториев IEnumerable буду применять всякие .Where().Select(), я же получается загружу лишние данные из БД, и только потом буду их фильтровать. Это ведь не хорошо?
108 1848536
>>848535
IEnumerable уже загрузил всё, вот если к IQueryable применить фильтрацию, то будет запрос к бд.
109 1848537
>>848485
еще раз дам ссылку
https://habr.com/ru/post/259829/
ищи на странице заголовок "Persistance ignorance"
и читай этот раздел
110 1848539
>>848536
Так я и спрашиваю, плохо ведь всё загружать из БД, если мне нужны отфильтрованные данные? Фильтрация на стороне бд ведь лучше?
111 1848540
>>848539
кэп говорит что да, плохо
112 1848580
>>848540
И если возвращать IQueryable и к нему применять всякие фильтры, то фильтрация будет происходить в бд. Зачем тогда репозиториям возвращать IEnumerable (то есть всю таблицу)?
113 1848584
>>848580
я зачем ссылку дал? прочел бы и понял суть
114 1848631
Как встроенными средствами без ручного парсинга конвертнуть дату из строки типа "28 декабря 2007" в new DateTime(2007, 12, 28)?
Пытался сделать
DateTime.ParseExact("28 декабря 2007", "dd MM yyyy", new CultureInfo("ru-RU"));
Но выдаёт исключение String '28 декабря 2007' was not recognized as a valid DateTime
115 1848639
>>848539
Поэтому вся фильтрация происходит в репозитории, а из него возвращаются отфильтрованные данные. Если тебе репозиторий возвращает IQueryable, значит ты из кода вне репозитория будешь работать с БД. Что тебе не понятно?
116 1848640
>>848631
ну тащем там MMMM надо
117 1848642
>>848639

>Поэтому вся фильтрация происходит в репозитории


То есть репозиторий должен определить методы Where и прочие?
29.jpg26 Кб, 647x249
118 1848645
119 1848650
>>848640
Точно, спасибо
>>848645
Тоже спасибо, но остановлюсь на первом варианте
120 1848651
>>848580
IEnumerable означает, что данные уже загружены, и ты вне репозитория не сможешь применить логику, повлияющую на БД
121 1848655
>>848642
Если под "определить" ты подразумеваешь фильтрацию и выборку, то да. Происходит это либо в зависимости от параметров запроса метода репозитория, либо в зависимости от самого метода. Например, если тебе нужен товары всех видов кроме определенных, то у репозитория должен быть метод ProductRepository.GetAllProductsExcept(ProductType[] pTypes), а внутри этого метода ты уже вызываешь осуществляешь соответствующий запрос к бд с нужной фильтрацией.
122 1848660
>>848650
Замени еще new CultureInfo("ru-RU") на CultureInfo.GetCultureInfo("ru-RU")
123 1848675
>>848580

>Зачем тогда репозиториям возвращать IEnumerable (то есть всю таблицу)?


зачем зачем . причины
1 логика фильтрации закодирована внутри метода, так что вернет он уже отфильтрованное (и обычно имя метода намекает)
2 если логика фильтрации не закодирована внутри метода, то может принимает спецификацию
3 А может реально нужно прочитать все. GetAll должен читать все по определению.
4 А если и спеки нет, то может кодил тупой кодер, для которого нормально, что он идет за пивом, притаскивает домой все содержимое магазина, берет бутылочку, а остальное в мусор
124 1848830
Блять, а как многопоточность дебагать? У меня при дебагинге правильно код строится, а когда без него запускаю какого-то хуя переменная увеличивается на 1, а я даже логически не пойму как она может увеличиться
125 1848839
>>848830
и там в скобочках обосрался немного где (int) но все равно увеличивается b каким-то хуем
126 1848840
>>848830
ебать я долбоёб += с = перепутал...
127 1848893
>>848830
У тебя не многопоточность
а асихнхронность

совершенно разные вещи
128 1848898
>>848840

> ебать я долбоёб


Все мы тут братушки. Не расстраюйся.webm
129 1848899
>>848893

> совершенно разные вещи


Чому разные? Асинхронность же реализуется через потоки.
130 1848910
>>848899
Да, через потоки.
Но это не самоцель "создать потоки", смысл асинхронности - не задерживать выполнение программы, а пропускать выполнение дальше. Автоматически создавать потоки и не иметь управление ими.
Многопоточность это всегда про управление потоками, а не использование их для достижения "пропустить код без задержки" главного цикла

шиза, конечно,
131 1848923
>>848830
lock лишний, если изменение переменной происходит в одном месте. Если не в одном, то лучше заменить на Interlocked.Increment(totalTime);
132 1848937
>>848910

> шиза, конечно


Не шиза, а магическое мышление:

> я низнаю що такое патоки, мене сказали тут асинк - там авайт - и буит работать. И ищо мне сказали пишиш таск.рун, скобачьки, стрелачку, фигурные скобачки и вот шо в фигурных скобачках - то будит асинхрона. А остальное миня ниибёт. Главнае - работаит.

133 1848948
>>848937
О, это моё мышление, вопросы?
134 1849013
>>848923
да вообще то даже если и в одном. если чтение происходит в другом и у вас не асинк/авайты то в теории могут быть проблемы из-за оптимизаций компилятора
135 1849040
>>848948

> вопросы?


Хуй будешь?
136 1849043
>>849013
Каких оптимизаций? int переменную можно безопасно изменять одним потоком одновременно и считывать эту переменную из нескольких потоков тоже одновременно. Потому что это всё атомарные операции.
137 1849047
>>849043

>Каких оптимизаций


перестановка инструкций
кеширование значения
инлайн переменной
и тому подобное
138 1849052
>>849047
И чо?
139 1849054
>>849052
и всё
от похер до "ай пиздец бедная моя жопа"
140 1849074
>>849047
Похоже на шизу, а не на реальность.
141 1849080
>>849074
да. лучше не знать. а зачем знать. все равно говнокод пишем, да текущая архитектура процессоров спасает положение. да jit действует по алгоритму "да ну хз лучше я лишний раз не полезу оптимизировать"

И потому пока lock-free не пишешь, то и проблем нет

а в данный момент я в очередной раз пишу телеги в мс и остальные ко ибо очередной гейзенбаг с NRE
142 1849123
>>849040
будет
143 1849134
Сеньор-крестовик 7 лет опыта на связи. Плюсы задолбали, ищу запасной аэродром.
Посоветуйте, есть ли смысл вкатываться в шарп? Какие подводные камни? Что почитать, чтобы быстро освоиться, минуя стадию хелловорлдов и физбаззов?
144 1849198
>>847703

>картинка


>.net на mobile и iot


Я бы постеснялся такое скидывать.

Касаемо количества вакансий - смотрю только по ДС. Разница в между количеством вакансий на жабе и количеством вакансий на шарпе - огромная, разница более чем в 2.5 раза.

>Факт - на шарпе гораздо быстрее написать бэк, чем на го/жава/скала


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

>Дотнет по перформансу уделал жаву.



В плане clr vs jvm? Ну принеси пруфы, посмотрим. Однако перфоманс в энтерпрайзе не так уж и важен, имхо.
145 1849205
>>849198
Оправдания жабапетуха:

>за счёт легаси дерьма вакансий больше в 2.5 раза


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


>если хоть один жаба-петух не слышал про выход .Net в опенсорс, значит шарп это только майкрософт


>компании будет всё равно на хуевую производительность жабы просто потому что



проиграл. Майкрософт это, кстати, один из больших плюсов C# и .Net, они поддерживают большой штат высококлассных специалистов, которые каждый день работают над улучшением платформы. Они могут себе позволить делать код-ревью тех кто хочет сделать свой вклад в опенсорс, что еще больше повышает качество кода. Всё это время разработчики Java сосут лапу и думают как выжить, о развитии языка даже речи не идёт, всё держиться на Java-макаках, которые не хотят осваивать более лучшие инструменты.
146 1849206
>>849198

>В плане clr vs jvm? Ну принеси пруфы, посмотрим. Однако перфоманс в энтерпрайзе не так уж и важен, имхо.



https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/

Вот тебе июльский отчет об улучшении производительности. Показывай подобное от жаба-разрабов.
147 1849210
>>849134

>Какие подводные камни?


ConfigureAwait по дефолту true
так что сиди лучше на плюсах
148 1849225
Жвач, сколько по вашему останется актуальным ASPNET Core?
149 1849227
>>849225
Хочу вкатится, ток непонятно на какой шаблон больше спрос там mvc не mvc, react не react, какая то темень но интересно
150 1849230
>>849227
У ASP .Net сейчас один шаблон - MVC. Только View можно отбросить, так как это задача фронтенд фреймворка, бэкенд только общается с БД и отдает данные в json формате. Самый популярный сейчас фронтенд фреймворк это React, потом Angular, потом Vue. В дополнении к этому нужно знать Entity Framework и SQL.
Из фронтенд фреймворков приятнее всего работать с Ангуляром, потому что архитектура и принципы похожи на ASP .Net, но для него нужно будет выучить Typescript (осваивается за пару недель при условии что знаешь C# и JS).
151 1849233
>>849227
Ну хоти. Я-то спрашивал про время актуальности, а не вкат.
152 1849248
>>847888
Тоже по пол года не захожу, а как зайду то сразу вижу вброс про винду.
Через 4 дня выходит .NET 5 и окончательно стирает все вопросы о кроссплатформенности, а у него какие-то старые мантры десятилетней давности.
153 1849253
>>849248
вот только они там умудрились набрякаченджить по сравнению с 3.1
посмотрим посмотрим

И все равно там нет ответа на главный вопрос
доколе мы будем писать постоянно ConfigureAwait(false)
154 1849294
SharpDevelop - на кой он в шапке, если уже не актуален?
155 1849310
Посадили на шарповый проект и дали задачку сделать реюзабельный контрол-крутилку на WPF, как здесь
https://medium.com/@bigoudi/using-native-wheel-picker-in-xamarin-forms-ui-day-1-23732d00b459
https://github.com/softlion/WheelPicker-Samples

Я так понимаю, надо наследоваться от селектора или же есть способы проще? Много времени на это тратить нежелательно, а сделать хочется красиво и удобно. Сам я вообще плюсовик, пожалуйста, направьте в нужное русло
156 1849333
>>849310
Ну бля, если ты видя готовое решение не можешь написать своё, то анон здесь бессилен.
157 1849335
>>849294
Правильно, не нужен. В следующим перекате уберёшь.
158 1849352
>>849333
Там нет сурсов, в этом и дело
159 1849367
>>849248
Какой шанс, что популярность скакнет OVER 9000% как питухон в свое время "взорвал" интернеты?
160 1849374
Эх, вот бы мне перекатиться в C# без потери ЗП...
2 года скриптов на питоне, потом смещено бекенд на JS/C++

Надеюсь, с выходом .net5 вакансий станет на 50% больше и я смогу конкурировать на 100к хотя бы
161 1849382
>>849352
Есть демо версия. Как оно по твоему отображается? Особенно учитывая, что у них проверка лицензии оффлайн происходит.
162 1849419
>>849382
Я пошарился в нугет-пакете, там дллки, насколько понимаю, сурсы с них не получить
163 1849434
>>849419
Ясно. Пиши тогда сам, реализацию найдёшь на JS-е, перенести на WPF будет не сложно.
164 1849488
>>849419

> сурсы с них не получить


да сурсы получить легко. просто они бесполезны же ведь это хамарин где ты описываешь хамлом содержимое, а потом рендереры пытаются на конечной оси пытаются это нарисовать средствами системы понативнее.
165 1849627
>>849310
гугли. всегда можно что то да нагуглить
например вот https://www.codeproject.com/Articles/279704/iOS-UIPickerView-like-control-in-WPF
166 1849752
>>849627
Спасибо, видел это, как раз собираюсь переделать, если ничего лучше не получится
.png22 Кб, 709x534
167 1849862
Няшные вы мои, давайте, объясните, как будет работать код на прикриплейде и нужно ли мне писать lock тут?
20200305031119.jpg32 Кб, 447x207
168 1849872
>>849862
Конструктор замени на статичный чтобы предотвратить возможность создать несколько таких таймеров.
169 1849931
Бесполезный метод, добавленный обфускатором, состоит в числе используемых в программе, и чекается в моём алгоритме по исключению трешовых методов, хотя проверил IL-инструкции глазами (поиск, сука, не завезли) - нихуя нет.

В чём может быть проблема?
170 1849938
>>849931
Вычищаю адаптацией вот этого https://github.com/Silv3rPRO/proshine-cleaner
если что. Из коробки она не работает, надо было допилить всякие штуки.

Излишние методы иногда ссылаются сами на себя (и тут мне надо кумекать алгоритм), но есть и такие, на которые ссылаются подлинные методы, но на самом деле нет
171 1849949
>>849862
так делай таймер одноразовым, а калбек таймера пусть перезапускает таймер
или же сделай while(true) (на самом деле while ct.IsCancellationRequested) с кодом выполнения и await Task.Delay вместо таймера
.jpg244 Кб, 1533x2048
172 1849967
Почитал эту вот статью https://habr.com/ru/company/vdsina/blog/525738/. Автор конечно мудак и большая часть как по мне хуйня, но вот идея с папками и неймспейсами мне понравилась.
И теперь вот не знаю, а как действительно лучше с именами классов поступать. Ну, просто сереьзно, все в моей галлере тупо делают 4 папочки: Models, Controllers, Data, Services иногда добавляя Const и Util и хреначат в них, потому чтобы как-то различать схожие по незнанию сущности приходится изебываться как не в себя, потому что вот у нас есть User, и есть еще один User, один это от Identity, другой внутри приложения, и когда они встречаются в рамках одного класса получается какая-то залупа, потому в конторе придумывают всякие AppUser, и прочую странную фигнюа ведь серьезно просто Identity.User, Application.User - все понятно и при этом вроде норм смотрится.
В общем, объясните, как вы именуете классы, как неймспейсы используете, как папочки и расположение файлов у вас организованы, потому что чаще всего я примерно как у нас на гитхабе вижу, но мне вот как-то оно не нравится, как-то оно просто при росте кодовой базы превращается имхо в какой-то пиздец и удобнее было бы, наверное, папочки скорее по фитчам разбивать. Короче, делитесь своими секретиками, как проект количество файлов с иходным текстом в котором перевалило за 500 держать в структурированном состоянии, чтобы искать было просто и чтобы не было проблем с пониманием какая сущность где.
Да, проблема у нас еще в том, что никто не хочет брать на себя работу сделать какие-то общие библиотечки и вынести то что часто пользуем в отдельный проектик, потому получается вот такая срань: Ты пилишь свой микросервис, изначально что-то общее скопипастил из другого, потом идет время, в том куске что-то поменялось, а тебе не хочется менять свой код, потому что оно-то работает у тебя и ничего тебе нового не нужно, и получается что куча дублирования. Я говорил: "Давайте вынесем это в отдельную библиотеку, чтобы каждый раз этой хренью не заниматься", но мне говорят, что это лишняя трата времени и проще копипастнуть. Вот.
.jpg244 Кб, 1533x2048
172 1849967
Почитал эту вот статью https://habr.com/ru/company/vdsina/blog/525738/. Автор конечно мудак и большая часть как по мне хуйня, но вот идея с папками и неймспейсами мне понравилась.
И теперь вот не знаю, а как действительно лучше с именами классов поступать. Ну, просто сереьзно, все в моей галлере тупо делают 4 папочки: Models, Controllers, Data, Services иногда добавляя Const и Util и хреначат в них, потому чтобы как-то различать схожие по незнанию сущности приходится изебываться как не в себя, потому что вот у нас есть User, и есть еще один User, один это от Identity, другой внутри приложения, и когда они встречаются в рамках одного класса получается какая-то залупа, потому в конторе придумывают всякие AppUser, и прочую странную фигнюа ведь серьезно просто Identity.User, Application.User - все понятно и при этом вроде норм смотрится.
В общем, объясните, как вы именуете классы, как неймспейсы используете, как папочки и расположение файлов у вас организованы, потому что чаще всего я примерно как у нас на гитхабе вижу, но мне вот как-то оно не нравится, как-то оно просто при росте кодовой базы превращается имхо в какой-то пиздец и удобнее было бы, наверное, папочки скорее по фитчам разбивать. Короче, делитесь своими секретиками, как проект количество файлов с иходным текстом в котором перевалило за 500 держать в структурированном состоянии, чтобы искать было просто и чтобы не было проблем с пониманием какая сущность где.
Да, проблема у нас еще в том, что никто не хочет брать на себя работу сделать какие-то общие библиотечки и вынести то что часто пользуем в отдельный проектик, потому получается вот такая срань: Ты пилишь свой микросервис, изначально что-то общее скопипастил из другого, потом идет время, в том куске что-то поменялось, а тебе не хочется менять свой код, потому что оно-то работает у тебя и ничего тебе нового не нужно, и получается что куча дублирования. Я говорил: "Давайте вынесем это в отдельную библиотеку, чтобы каждый раз этой хренью не заниматься", но мне говорят, что это лишняя трата времени и проще копипастнуть. Вот.
173 1849973
>>849967
Статью не читал, подход хороший. Если модели в одном месте начинается "Customer", "SmallCustomer", "CustomerLight", "CustomerWithZalupa"... Особенно хорошо ложится на CQRS - модель вообще можно держать вместе с командой/запросом.
174 1850154
Хм. Часто слышу что switch не нужен. Ну и как-бы понимаю почему обычный ругают.
Но а что насчет
var time= offsetType/пусть это типа enum/ switch{
OffsetType.Day => DateTime.Now.AddDays(offsetValue),
OffsetType.Minutes => DateTime.Now.AddMinutes(offsetValue),
...
};
?
Просто мне кажется это удобнее чем городить кучу ифов или вообще ебануться и цепочку ответственности для этой херни делать. Вроде с ходу все ясно, при этом довольно компактно. Хотя я бака что в иногда достает из этого свича экшн, наверное так делать не стоит, но в общем случае же он все еще удобен и прост для понимания.
175 1850185
>>849967
Так это проеб в архитектуре, а не именовании. Чем дольше откладывают рефакторинг, тем ближе всё становится к пиздецу.
176 1850188
>>850154
Если нужно присвоить значение переменной, то удобней использовать switch-expression, особенно удобно когда нужно присвоить несколько значений - возвращаешь кортеж и деконструируешь его. Если нужно сделать какие-то действия, то лучше обычный switch, также он удобен когда несколько значений отвечают за одно и тоже действие.
Заменять обычный свитч можно только паттерном Состояние, когда ты вместо свитча создаешь состояния и присваиваешь их объекту который их принимает.
177 1850224
>>848233
Какой пиздец. Пиздить по ебалу всех, кто region использует. Я их ещё в 2008 ненавидел, а теперь так вообще хочется выслеживать кодера с арматурой за такое.
178 1850225
>>848188
Интерфейс - это контракт. А потом уже полиморфизм.
179 1850226
>>849198
Ну вообще относительно вакансий под разные технологии смотреть СНГ в принципе глупо. Надо в первую очередь смотреть те страны, где эти технологии разрабатывают. Майки щас нет5 распиарят и через 1-2 года кол-во проектов и вакансий на нём попрёт в гору (в целом в них и щас недостатка нет).

Производительность хоть где нужна. Но у энтерпрайза как раз большое кол-во пользователей и, как следствие, трафика. У них есть такая фигня как SLA - https://en.wikipedia.org/wiki/Service-level_agreement
Часто требуется чтобы ресурс под нагрузкой полностью загружался в течении 1-3 сек. Мы умудрялись тяжёлые сайты за 200-500мс полностью загружать и отрисовывать, когда у тебя наплыв несколько тыщ юзеров разом. Клиенты тоже могут тебя ссаными тапками закидать, если им постоянно отклик ждать приходится.
180 1850227
>>1847558 →
У меня их 100, полёт нормальный. Под каждый набор сущностей свои репозитории.
1604734965911.png61 Кб, 200x201
181 1850265
>>850224
Корни этой ненависти в детстве?
Ты трогал себя под одеялом, а мама ругала тебя за это?
182 1850299
>>850227
и в каждой репе куча методов
или небось IQuerable наружу выставлен
183 1850325
>>848233
Это не скроет кучу приватных полей и методов, хотя при чтении кода нужно зачастую видеть лишь внешнее поведение класса.
184 1850326
>>849374
100к - это и для толкового джуна не зарплата.
185 1850394
>>850224
Ну блин, няша, вот я делаю имплементацию какого-то интерфейса, удобнее же взять и отделить ее #region. Получается оч удобно, конечно при условии что ты из этих имплементаций не тянешь что-то что в других имплементациях лежит, но я обычно так не делаю.
186 1850397
>>850326
Да-да, все же в ДС живут и в каждом городе есть конторы, которые предлагают такие вот ЗП. В моем вот за шарписта с требованиями будто в гугл платят 80к рублей, это с 6 годами опыта.
187 1850432
>>850394
Удобнее когда у тебя этот интерфейс лежит в отдельном неймспейсе. А регион только служит успокоительным вида "у меня не насрано в структуре приложения, потому что я по регионам разбил всё.
188 1850461
>>850432
Так интерфейс и лежит в отедельном неймспейсе.
Просто банально нужно 2-3 интерфейса имплементировать в рамках одного класса.
189 1850496
Поясните за наследование. Когда надо, а когда нет?
Вообще, складывается ощущение что не нужно никогда, разве что наследуешься от совсем уж какого-то базового абстрактного класса в котором просто логика которая всегда и везде используется, а вот если уже брать уровни повыше, то получаешь ненужный обвес в наследство и проще вообще использовать только интерфейсы.
Вот и поясните, когда надо-то, а то мои попытки использовать наследование, когда иерархия состоит хотя бы из 3 уровней превращается в пиздос.
190 1850531
>>850496

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

класс - когда есть общий функционал (методы, свойства, поля), но тебе нужно его расширить.

Интерфейсом классы не заменишь хотя бы потому что у интерфейса не может быть конструкторов (в 8 версии можно объявить статический конструктор, констант (в 8 вресии может), полей.
191 1850577
>>850496
предпочитай де-ле-ги-ро-ва-ние (чокнутый фильтр двача), кроме случаев, когда наследование выгоднее или так и должно быть
192 1850615
>>849253
Гуляю по разной степени паршивости долгостроев. Не видел ConfigureAwait(false). В новых его тоже нет. ЧЯДНТ?
193 1850631
>>850615
Гуляешь по говнокоду значит или по коду с UI
Ну или asp.net core где SyncronizationContext-а нет и можно не писать.
Но скорее всего по говнокоду, ведь рекомендация гласит - используйте везде ConfigureAwait(false) во избежание потенциальных дидлоков. Но это не значит, что дидлоки будут везде - потому народ и не пишет, пока не стрельнет
Опытный же программист пишет всегда когда не нужно иное.
194 1850635
>>850631

> или asp.net core где SyncronizationContext-а нет



Он там есть.
195 1850637
>>850635
неа. нету
196 1850640
>>850637
Как бы, типичный случай - петушок громче всех кричит о том в чём совершенно не разбирается.

Просвещайся, петушок:
https://devblogs.microsoft.com/dotnet/configureawait-faq/
197 1850642
>>850640
ты это к чему линк дал?
198 1850647
>>850642
Чтобы ты прочитал и не срал своим бредом в треде.
199 1850649
>>850647
ты сам хоть читал что дал?
по твоей ссылке написано (впрочем и так все знают)

"Why would I want to use ConfigureAwait(false)
-Improving performance
- Avoiding deadlocks
"
впрочем тут ничего нового. и так все знают, что нужно ConfigureAwait(false), чтобы избежать дедлоков

но вижу не все знают что в асп.нет КОРЕ!!! нет такой крайней
нужды ибо
https://blog.stephencleary.com/2017/03/aspnetcore-synchronization-context.html

так что больше кумекай, а потом кукарекай )
29.jpg163 Кб, 787x360
200 1850658
>>850649

>- Avoiding deadlocks


>нужно ConfigureAwait(false), чтобы избежать дедлоков


Избегает дедлоки использование ConfigureAwait(false) в случаях когда твой код используется в качестве импортируемой библиотеки. В этой статье это подробно описывается.

Ты же высрал:

> используйте везде ConfigureAwait(false) во избежание потенциальных дидлоков


Хотя в той же статье есть пример с использованием ConfigureAwait(false) в WPF/WF который приводит к дедлоку.

>но вижу не все знают что в асп.нет КОРЕ!!! нет такой крайней


>не все знают



Ну да, даже сам создатель не знает, спешите видеть (пикрил из статьи).
Image 1.png27 Кб, 855x295
201 1850675
>>850658

>в случаях когда твой код используется в качестве импортируемой библиотеки. В этой статье это подробно описывается.


ну я библиотеки часто пишу.
более того, любой модуль в программе рекомендую воспринимать как библиотеку. Сегодня он вызывается без контекста, а через годик может нарисоваться контекст, даже в asp.net core приложении.
Конечно если ты пишешь CRUD вебапи то конечно не будет, а если что-то серьезное где вовсю многопоток гуляет - там другое дело

>Ты же высрал:


во первых не я. это рекомендация
во вторых рекомендация ПОДРАЗУМЕВАЕТ не "писать везде", а писать везде, где явно не требуется true. Это ты решил воспринять слова буквально "пишите везде"

Рекомендация тоуба " if you’re writing app-level code, do not use ConfigureAwait(false)." указывает на слой UI (или рядом с ним) о чем и гласит пример в виде онклик, да и вообще дефолтный true из-за формоклепщиков, мол дидлок лучше чем доступ не из того потока (почему я хз - я не понимаю такой формулировки)

> Хотя в той же статье есть пример с использованием ConfigureAwait(false) в WPF/WF который приводит к дедлоку.


а зачем тут ConfigureAwait(false)? ConfigureAwait(true) по дефолту и придуман именно для UI. И я про UI тоже упоминал, раз ты читаешь все буквально.

>Ну да, даже сам создатель не знает, спешите видеть (пикрил из статьи).


из той же статьи (пикрил)
ты и меня читаешь невнимательно и свои же ссылки
202 1850708
>>850649

>Avoiding deadlocks


Хз, где может потребоваться писать Result или Wait.
203 1850714
>>850708
Программисты делятся на 2 вида
кто еще не ставит ConfigureAwait(false), там где контекст явно не нужен и оставляет "ну вроде работает же и так будет всегда"
и кто УЖЕ ставит ConfigureAwait(false).

Я из тех кто уже.
Это помимо либ, где без этого вообще никуда
впрочем так то я юзаю Fody и он за меня ставит, но считаю это костылем.

Удивляюсь что мс не сделали что то типа
await
await!
вместо длинннннючего ConfigureAwait
204 1851108
>>850397
А что тебя держит в твоём городе?
Я свалил из вонючей мухосрани в ДС вообще без подготовки и плана, просто заебала беспросветная совковая нигерия в снегах без перспектив и надежд. Поначалу спал в хостелах с гастерами, всё ценное носил с собой в рюкзаке (большом и желтом, хе-хе), учил питон, и уже через 3 месяца работал в тёплом офисе и снимал комнату на одного. А через год жил уже совсем как белый человек.
205 1851134
>>851108
Допустим я не хочу жить в хостеле, а при текущей ЗП чтобы снимать даже студию я должен, минимум, год откладывать(имеется ввиду заплатив за полгода вперед, конечно, я же если решу ехать хочу быть уверен что закреплюсь, а не просто приеду, попержу в студии и поеду обратно), при этом я не знаю города, я не умею заводить знакомства и не хочу просто сыграть в рулетку. Оставаясь тут, есть ненулевой шанс, что таки либо станет все лучше со временем(у дедек старше же ЗП больше), либо таки подвернется шанс. А поступать импульсивно - ну такое.

мимо
206 1851160
>>851134
Нет никакой лотереи. Чем быстрее перекатишься, тем раньше начнёшь нормально жить.
Курьер в яндекс-яде или аналоге получает 200 руб./час. Это самая тупая работа, куда берут всех. Если работать 20 дней в месяц (2 дня через 1) по 12 часов, то чистыми на руки получишь 42к. Из них 15к отдашь за комнату. На остальное живешь, на жрать без изысков, связь, на шмотки, мыльно-рыльное хватит. Параллельно ходишь по собесам, ботанишь и восполняешь пробелы в знаниях. На работе в плеере английский (аудиоуроки) учишь.
Если у тебя есть опыт работы несколько лет в твоей мухосрани, то тебя в принципе на первом же собесе в ДС возьмут на зп, большую чем в мухосранях, этак в 1.5-2 раза, а если поискать побольше, то и оффер будет пожирнее.
Нет, конечно я понимаю, ты не хочешь жить в хостеле. Только, анон, пойми, там и не живут, там спят. В остальное время ты работаешь. В выходные сидишь в кафе с ноутом. Кроме того, не бывает так, чтобы всё и сразу. Да, вначале потерпишь, зато потом профиты перевесят все эти мимолётные невзгоды.
Мне реально жалко людей, которые живут в глубинке, которые пашут, но получают гроши, в то время, как московские линивые бездари гребут бабло деньгами, нихера не знают, нихера по сути не делают, и ещё и не довольны чем-то.
207 1851232
>>851160

>Если работать 20 дней в месяц (2 дня через 1) по 12 часов


Я думаю, очень мало кто в таком графике сможет что-то учить в свободные дни.
208 1851298
>>850299
1-5 методов в каждой репе, знания об источнике данных не выползают из Persistence слоя вообще.

_alertsRepo.Exists(alertId);
_usersRepo.LoginAttemptsFor(userId);
_recordsRepo.LastYearRecords();

Вообще тут 2 стула:
- пишешь больше кода, но имеешь легко поддерживаемый и масштабируемый проект;
- пишешь меньше кода с одним классом/методом под миллион не до конца определённых нужд, но страдаешь при расширении проекта, от внезапно изменяющихся требований, от притаившихся на несколько месяцев багов, от merge конфликтов.
209 1851303
>>850265
Всё проще - нужно отправлять старпёров, тащущих свои техники разработки из эры динозавров, на пенсию. Или хотя бы на переобучение. Код станет чистым и никто не будет беситься.

Прикол в том, что эти старпёры до глубины души уверены в своей правоте и своих техниках. Но они лихо разбиваются об реальность, когда им начинают выставлять метрики.
210 1851312
>>850394
Был джуном/мидлом, следовал стандартам, которые установили деды. В эти стандарты входили несколько классов в файле, классы на 1к строк кода, #region, #pragma, и прочий индусский код.
Потом начал усиленно учить паттерны проектирования, алгоритмы, смотреть за конференциями, читать код крутых чуваков и всё это мракобесие само собой отвалилось.

Получается так, что без использования #region работа ускоряется. Можно замерить сколько времени уходить на чтение, написание и понимание кода. Убрав весь мусор из класса я трачу в 2-3 раза меньше времени чтобы выполнить те же самые задачи. У меня получилось это доказать местным дедам в двух разных конторах. Пришлось повозиться с презентацией, подборкой примеров из текущих проектов, переписыванием их по новому.
211 1851316
>>850496
Я за 15 лет асбтрактных классов так и не понял. Тоже обычно или интерфейс или какой-то совсем базовый класс, типа Entity, у которого только Id есть.
Все проекты, в которых приходилось работать с асбтрактными классами - это индусский говнокод, 10+лет легаси, которое разваливается на ходу, и учебка.
212 1851375
>>851298

>1-5 методов в каждой репе


маленький какой то проект

>_recordsRepo.LastYearRecords();


а потом понадобится фильтрация для этих рекордсов и понеслось
но раз у тебя 1-5 методов значит "не понадобится". Обычно это не так - обычно надо и надо и методы либо множатся либо пухнут
213 1851384
>>851316
это базовый класс, который нельзя инстанцировать, что хорошо если нужен базовый класс, который хотелось бы чтобы нельзя было создать инстанс и обязательно делали наследника. Попутно дается возможность заставить наследника реализовать нужные методы.

И полезен он там, где собственно такое и нужно. Зону использования абстрактного класса нечем заменить. У интерфейсов другая ниша.
Абстрактный класс можно использовать как интерфейс, но не всегда наоборот.
В общем адски полезная вещь там где он нужен
214 1851637
>>851375
1kk+ строк кода, 100+ сущностей, 100+гб бд (их таких несколько).
215 1851639
>>851384
Я знаю всё что можно знать об абстрактных классах (с точки зрения их пользователя). Они мне ни разу не пригодились. Приходится с ними работать только тогда, когда у тебя уже куча легаси или когда проморгал код ревью. Но не отрицаю, что под какие-то задачи с определённой архитектурой они могут нормально ложиться.
От них веет жавой, а в жаве с написанием красивого кода беда.
216 1851644
>>851639

>Они мне ни разу не пригодились


>Приходится с ними работать только тогда, когда у тебя уже куча легаси или когда проморгал код ревью.


>От них веет жавой, а в жаве с написанием красивого кода беда.



Ты же сам себе противоречишь. Это что-то уровня "Мне обувь ни разу не пригодилась. Приходится ей пользоваться только когда ноги в говне или отморожены".

Мне вот например наоборот сложно представить код в котором нет применения абстрактному классу. Вот есть у тебя функционал, часть этого функционала общая, а другая часть зависит от чего-либо, но при этом этот функционал используется в обобщенном коде.
Что ты применять будешь? Интерфейс? Но тогда весь общий функционал придётся переписывать каждый раз когда ты его наследуешь. Класс? Но тогда тебе каждый раз придётся запоминать/смотреть какая часть функционала используется в обобщенном коде. Вот здесь нам и приходит на помощь абстрактный класс - в нём можно оставить общий для всех функционал, а конкретный для каждой реализации, но используемый в обобщенном коде, объявить в виде абстрактных методов и свойств, таким образом каждый раз наследуя этот класс, т. е. каждый раз имплементируя конкретный функционал, компилятор будет за тебя создавать шаблоны тех методов которые используются в обобщенном коде, тебе останется написать реализацию для них, тебе не нужно смотреть этот обобщенный код.
217 1851751
>>851637

>100+ сущностей


и к каждой сущности по выборке требований всего ничего (видно по 1-5 методов)
218 1851856
>>851644

>Что ты применять будешь? Интерфейс?


Композицию. Рано или поздно упрешься в множественное наследование, которого нет в C#.
219 1851886
Нужно замутить небольшой сервер для телеграмм бота и мини веб сайта (максимум 100 пользователей в час) думаю для этого взять какой-нибудь single board computer типа малинки 4, но вопрос какой лучше брать под net core, может у кого уже есть опыт?
Да, я знаю что можно взять тупо VPS сервер и будет тоже самое и годовая цена будет как за плату(хотя плата вроде помощнее), но я хочу именно физическое устройство, которое рядом, к которому я имею непосредственный доступ и чтобы когда решу свернуть сервера можно было что-то еще замутить из этого.
220 1851895
>>851886
Разверни серверлес на амазоне или ажуре. Бабки будет чаржить только за использование. Не используешь - не платишь.
221 1851897
>>851886
плату еще где то разместить нужно, белый ip нужен, надежный инет
у VPS с этим всяко лучше
image.png12 Кб, 348x135
222 1851945
>>851895
Посмотрел я по ценам там и не думаю что это выгоднее платы будет если я захочу не тупо 1 бота туда закинуть, а скажем наращивать их количество. Чего я и хотел бы делать в будущем.
Плюс я это не для коммерции делаю, а чисто для удобства.
К примеру на дискорд канал закинуть бота который из моей базы по запросу что-то выдавать может или в телеграмме сделать бота который будет видос с ютуба качать и скидывать сообщением (да да, очень нужно когда интернет на мобилке не стабилен).
Это на азуре может дорогого стоить если активно юзать.

>>851895

>надежный инет


Судя по роутеру надежный. Да и мне даже 99% аптайм избыточен, 95% за глаза хватит.

>белый ip нужен


Есть такой, провайдер давал давным давно бесплатно и у старых клиентов не отобрал.
Хотя мне больше для ботов нужен сервак.

>плату еще где то разместить нужно


Под столом рядом с основным компом, там места дофига, да и кушает копейки эта система.

Вопрос лишь в том что брать и насколько сложно с этим работать.
Опыта в этом у меня даже не 0, а скорее -1.
223 1852055
Можно ли как-то в шарповском DI указать как-то что этому вот сервису - эту имплементацию интерфейса, а всем остальным - ту? Я не гуглил правда пока, но что-то подсказывает что нет. Я конечно понимаю что обойти это легко, просто введя пару пустых интерфейсов, которые один и тот же расширяют и так вот зарегистрировав разные классы под разными интерфейсами зарегистрировать и потом пользоваться, но все же не хочется такого делать, типа 2 идентичных интерфейса из-за того что тут у нас нужен костыль который реализован в другом классе -как мне кажется - плохая идея.
224 1852064
>>851751
Потому что дизайн нормальный, когда не нужно изворачиваться и выдумывать как впихнуть невпихуемое
225 1852065
>>851644

>Ты же сам себе противоречишь.


чем? легаси никто не трогает, его переписывают и потом отключают навсегда.
когда проморгал в код ревью, возвращаешься назад, выпиливаешь и даёшь по рукам девелоперам и больше так не делают.
226 1852067
>>852055
services.AddScoped<IService, TImplementation>(service);
227 1852077
>>852064

>Потому что дизайн нормальный


ай петросян.
228 1852078
>>852067
и как это должно работать?
229 1852080
Челы, напомните плиз, как называется сайт с задачками по программированию. Там еще стилистика каратистская.
230 1852085
>>852080
https://www.codewars.com
и ещё всеми любимый
https://leetcode.com
231 1852091
>>852085
Первая ссылка - то, что хотел. Спасибо, чел.
232 1852092
>>852078
Последний зарегистрированный сервис типа IService, TImplementationбудет добавляться в конструктор если в конструкторе ты укажешь просто ClassConstructor(IService myService);
Для того чтобы выбрать какой-то определенный, тебе нужно добавлять в конструктор IEnumerable<IService> myServices
ClassConstructor(IEnumerable<IService> myServices);
Далее в теле конструктара ты можешь либо перебором выбрать нужные сервис, либо написать:
TImplementation service = myServices[0] as TImplementation;
Таким образом ты получишь первую зарегистрированную имплементацию.
233 1852099
>>852092
это какой то лютый костыль, нарушающий правила DI
лучше уж вручную в методе фабрике собрать.
234 1852112
>>852099
Регистрация сервиса по имени подходит?
235 1852117
>>852112
я не первоначальный анон. У меня нужды нет.

А оно такое, что конечный класс объявляет контракт "я принимаю себя такое" и дело уже внешней стороны впихнуть его зависимости. Даже если будет фабрика собирать. Просто фабрики это руками писать, а лениво.
236 1852128
>>852099
Можно обернуть в один класс вида SomeServiceResolver, в котором будет метод IService GetService<implementation>() который будет возвращать определенную имплементацию.
Далее регистрируешь SomeServiceResolver как синглтон и внедряешь в конструктор зависимых классов у каждого вызывая GetService<ConcreteImplementation>();
237 1852134
>>852128
А это уже ServiceLocator, что антипаттерн.

Фабричный метод зафигачить - не антипаттерн просто руками делать. И даже ActivatorUtilities не поможет.

например в SimpleInjector можно указать условие "если впихивать в этот класс, то эту имплементацию"
DI от майков ущербен в этом плане.
238 1852177
>>852134
Ну и как ты этот метод вызывать будешь? Это уже не DI и нарушение IoC
239 1852206
>>852177

>Ну и как ты этот метод вызывать будешь?


services.AddTransient<MyService>(p=>и тут собираем его руками подсовывая свою имплементацию IService)

это работает и по факту единственный нормальный вариант
но уж больно ручной
240 1852246
DI через КОНТЕЙНЕРЫ - это самая уёбищная концепция эвер. Если ты обосрёшься с зависимостью, то приложение будет падать в рантайме, а не во время компиляции, что пиздец.
241 1852260
>>852246
DI через КОНТЕЙНЕРЫ - это самая САМАЯ КРУТАЯ И ПОЛЕЗНАЯ КОНЦЕПЦИЯ

Что такое писать в стиле ООП? Это классы как кубики. из этих кубиков мы сооружаемся что-то, потом пнули его и оно заработало. И контейнер позволяет сконфигурировать это сооружение и подменить любую его часть на нужную, перегрузив тем самым часть функциональности.
Без этого же мудрят разные точки расширения, которые использовать нужно по правилам, где то по особому регистрировать.
А контейнеры делают все это тупо проще. Единая точка расширения и переопределения.
В общем имба самая настоящая.
242 1852261
>>852246
Это про все ООП. А F# никто в реальных проектах почти не использует.
243 1852263
>>852260
Кубики - это композиция, а не интерфейсы в конструкторе.
244 1852264
>>852263
Интерфейсы в конструкторе это зависимость кубиков от других кубиков. Так что самая суть
И поскольку кубики и их зависимости собираются в одном месте и автоматически, то потому и можно кубики на свои менять если нужно расширить че то
люто удобно.
12123.jpg163 Кб, 1491x182
245 1852320
>>852246
>>852260
Без DI как в ASP.Net у тебя как на пикрил будет.
246 1852345
Сегодня релиз .NET 5, готовы?
247 1852357
>>852345
Так его уже со всех сторон обсосали. Обычная галочка, ничего грандиозного.
248 1852363
>>852345
Уже джва месяца жду! Буду пытаться один из самых маленьких сервисов конвертировать и тащить новый docker image - https://hub.docker.com/_/microsoft-dotnet-aspnet/

Пару недель назад пробовал собрать self-contained образ, получилось 80Мб без тримминга - /p:PublishTrimmed=true
https://docs.microsoft.com/en-us/dotnet/core/deploying/trim-self-contained

С трим опцией должно вообще 40мб получиться.
Для сравнения наши текущие образы в районе 300мб. В джава отделе - 400мб. В пхп отделе - 4ГБ! Хз чё они там делают, но это пистец.

Кор 3.1 сервисы уже уделывают джава сервисы по скорости, а с net5 вообще шансов не будет.
image.png14 Кб, 645x124
249 1852366
>>852345
Ну ты и соня.

Опять перенесут, очевидно
250 1852415
>>852363

>В пхп отделе - 4ГБ!


Да там аниме в основном или поняши
251 1852416
>>852366
При чём здесь release candidate, я про окончательный релиз, и он сегодня.
252 1852418
>>852416
Ставлю 100 рублей, что перенесут
253 1852419
>>852415
вот бы сейчас в гигабайтах измерять бизнес
254 1852478
>>852320
так то нет связи наличия или отсутствия IoC с тем, что на скрине.. Ну вообще нет.
255 1852481
>>852345
сегодня конец поддержки .NET 5 RC 2
а будет ли .NET 5 - хз хз хз
256 1852495
>>852478
Так кто про отсутствие IoC говорил? Она там есть, просто код раздувается когда нужно внедрять зависимости, а в асп.нет за тебя всё фреймворк делает.
257 1852497
>>852495
ты скрин выдал и записку про DI прилепил и мол без этого будет как на скрине
я же отметил, что вообще нет связи скрина с DI
258 1852512
>>852497
То у тебя IoC, то DI, запутался в терминах? На скрине тебе нужно внедрить в качестве зависимости обобщенные типы, при этом эти типы взаимодействую друг с другом, в итоге получается такая простыня из перечислений типов.
259 1852524
>>852512
не запутался
DI это концепция, упрощенно "впихивай зависимости извне". а в DI подходе в ASP.NET чего то уникального нет- там базовая концепция "инъекции через конструктор" (исключая Startup класс, который уникален, но не из-за DI)
А значит фраза " DI как в ASP.Net" говорит про контейнер. И даже если нет, то это неважно, ибо на скрине определение generic класса, к которому использование или не использование DI не имеет никакого отношения

был бы на скрине конструктор, который принимает всю эту кучу параметров - тогда можно было бы спориь на тему "вот без DI так, а с DI этак".
но определение generic класса и "инверсия зависимостей" (или отсутствие таковой) есть перпендикулярные вещи
260 1852527
>>852512

>На скрине тебе нужно внедрить в качестве зависимости обобщенные типы


из скрина этого не следует. аж вообще не следует. этот класс может быть с легкостью с пустым конструктором и не нарушать DI во время использования
261 1852530
>>852527
Это не класс, а какой-то пиздец с кучей зависимостей.
262 1852532
>>852530
я не спорю, что он пиздец. Я оспариваю лишь связь с DI, мол с DI будет все не так
DI это про зависимости. а не про дженерики, так что никак он не влияет на сигнатуру класса. DI влияет на то, как потом все это будет попадать внутрь. Но оно вполне может попадать и со временем и вообще внутри быть изначально (хотя это не следует из названия класса, но мало ли в какой области приложения этот класс обитает)

то есть если обладатель этого класса прочитает по DI то в итоге он переделает конструктор и всё. сигнатура останется прежней ибо связи нет
263 1852552
В идеале компилятор должен проверять большую часть ошибок, как это сделано во многих хороших языках программирования. Программа компилируется - значит программа работает, вот самый правильный подход. Поскорее бы шарпик таким стал.
264 1852568
>>852552
Многого хочешь
265 1852590
>>852568
шарписты должны страдать?
266 1852599
>>852590
Программист это про борьбу с ошибками. Ты опять хочешь лишить нас последней работы за 50к?
267 1852605
>>852599

>Ты опять хочешь лишить нас последней работы за 50к?


а такая еще есть? это ж зарплата недонедонедоджуна
268 1852616
>>852552

> Программа компилируется - значит программа работае


Обратная совместимость, слышал про такое? Никто не уберет из шарпа наллы или сделает варнинги компайл тайм ошибками.
269 1852618
>>852616

>или сделает варнинги компайл тайм ошибками.


ну так то это есть. просто не очень игноры в ней работают.
270 1852631
>>852590
Сисяшарперы.
271 1852634
>>852605
на джуна 32 тысячи сейчас
272 1852657
>>852524
Там 4 обобщенных класса которые входят в 1 класс, при этом эти 4 обобщенных класса должны взаимодействовать друг с другом, т. е. некоторые из них имею ссылки на других. Чтобы всё это реализовать нужно создавать объекты последовательно, потом внедрять их в конструкторы других и тд, либо можно сделать так чтобы у 4 обобщенных классов была ссылка на 1 класс в который все они включены, что приводит к вот такому перечислению обобщений.
Но если делать всё в рамках ASP .Net то 4 класса регистрируются как службы в виде конкретных реализаций и автоматически внедряются в зависимости от присутствия друг друга в конструкторах других классов.
273 1852665
>>852657

>Там 4 обобщенных класса которые входят в 1 класс, при этом эти 4 обобщенных класса должны взаимодействовать друг с другом, т. е. некоторые из них имею ссылки на других.



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

Контейнер добавляет удобства не писать ручками инстанцирование и упрощает именно этот аспек "сборка графа", но не является магическим артефактом и то, что соорудил автор кода на скрине - его личное видение кода, а не вынужденная мера "а по другому низзя"
274 1852673
>>852665
Ну так я про это и говорил изначально - ASP .Net удобное упрощение, не нужно писать всё в ручную, при этом код получается чище. Разве не для этого фреймворки нужны?
275 1852679
>>852673

>ASP .Net удобное упрощение, не нужно писать всё в ручную,


вообще то оно там ОБЫЧНОЕ

1 сначала мы имеем классы, которые делают много.
2 потом узнаем про SRP и делим все это на классы, но зависимости инстанцируем на месте
3 потом узнаем про DI и его плюшки в виде "можно подменить зависимость на другую" и начинаем принимать в конструктор, да по возможности вообще интерфейсы дабы можно было подменять
4 как следствие возникает код, который должен инстанцировать этот граф. пишем руками - это норма
5 понимаем, что можно писать не руками, а доверить рантайму сгенерить за нас этот код сборки - и рождаем контейнер.

А где же тут то, что на скрине? а нигде. Абсолютно никакой связи. Сигнатуры классов до контейнера и после него абсолютно одинаковы (а почему бы им быть разными - мы всего лишь позволили писать код рантайму вместо ручек)

А код на скрине - безумная фантазия какого то программиста, а не "мир без DI"
276 1852681
>>852673

>ASP .Net удобное упрощение


так то DI от мелкософта - самый примитивный по фичам. Просто он встроен не как раньше только контракт и приходится использовать его или городить огород.
277 1852697
>>852679

>а не "мир без DI"



Код на скрине это "мир с DI без фреймворков которые за тебя делают большую часть", не понятно почему ты захотел увидеть что-то другое, попахивает шизой.
278 1852703
>>852697

>Код на скрине это "мир с DI без фреймворков которые за тебя делают большую часть"


ок. уйдем от DI. наличие или отсутствие фреймворков тоже не заставляют рождать такой код. Да вообще НИЧЕГО не заставляет, кроме безумия или лютой неопытности программиста.

попытка натянуть сову на глобус "или берете DI и фреймворки или у вас будет такое..." обречена на провал, потому что "такое..." не будет.
Без фреймворка больше ручной работы, а не априори говнокод. да и фреймворк не помешает родить то, что на скрине и зарегать это в контейнер.
279 1852713
>>852703
Фреймворк создаст условия которые позволят упростить код, при этом функционал не изменится.

>Да вообще НИЧЕГО не заставляет, кроме безумия или лютой неопытности программиста.


Так тебе задачу описали. 1 класс обобщенный с общей логикой для различных конкретных реализаций, и n классов которые наследуют общую логику от базовых классов + предоставляют свою, конкретную для каких-то определенных методов. У каждого из этих классов, кроме 1 обобщенного есть несколько реализаций, при этом какие-то из этих n классов взаимодействуют друг с другом. Как ты собираешься всё это реализовать по-другому? У тебя либо ничего не получится, либо получится говнокод, либо получится тоже самое что на скрине.
Вот фреймворк и сокращает объем этого описания, потому что внедряет зависимости автоматически, если ты следуешь определенным конвенциям.
280 1852748
>>852713
фреймворк дает архитектурный каркас, что позволяет избежать разброда и шатания архитектурных решений в коде и готовые реализации разного функционала

>Вот фреймворк и сокращает объем этого описания


твою задачу решает не фреймворк, а IoC контейер, который по факту просто библиотека, которая используется фреймворком для своих нужд.
выброси асп.нет/возьми другую либу IoC (коих дохрена) - и твоя задача "потому что внедряет зависимости автоматически" будет решена.
Я использую DI от мелких и подход как в асп.нет коре вида services.AddFooBarModlue() вообще в WPF проекте, и в консольных приложениях тоже.

у тебя встала задача "автоматического внедрения зависимостей" и контейнер IoC решил тебе ее. asp.net core тут сбоку стоял.

>Как ты собираешься всё это реализовать по-другому?


хз. это сильно абстрактная задача

>У тебя либо ничего не получится


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

> либо получится тоже самое что на скрине.


не. такое точно нет. у меня мозг не родит такое, а обойдется более простыми решениями.
Я просто никогда не преобразую такое "этих n классов взаимодействуют друг с другом" в то, что на скрине. Общаются? - значит через интерфейсы знают друг о друге. Если контейнер решает задачу, то она ТОЧНО ТАК ЖЕ решается и без контейнера, ведь контейнер решает только задачу сборки графа объектов. А то что на скрине - хз. больше похоже на кривой медиатор, чем на общий нужный всем абстрактный класс
281 1852754
>>852419
У нас тыщи контейнеров крутятся в AWS/GCP. Как бы 100мб vs 4гб в итоге в дохрена разницы вываливаются в куче разных метрик. И $$ превращается в $$$$$.
image.png21 Кб, 814x359
282 1852760
>>852481
По идее через 2 часа объявят о релизе
284 1852816
>>852815
пока нет обновления на студию - можно сказать, что не вышел
285 1852817
>>852815
Оно само не обновится что ли?
286 1852822
>>852817
Не видел чтобы оно само обновлялось. Разве что со студией прилетало.
287 1852845
>>852815

>пересказ того о чём и так уже все сто раз прочитали



Скучно как-то.
288 1852858
А когда студия до 16.8 обновится?
289 1852874
>>852845
какой то спорный по фичам релиз получился

ну и как обычно всегда "мы наконец то докумекали"
вот как с IReadOnlyList они потом ввели
как с нуллами
а теперь вот и с ламбда static (даже пхп умнее лол)
290 1852892
>>846539 (OP)
Зачем учить Шарп в 2021? Без тралленка. Какая сфера интересов и целей у людей, выбирающих шарп? Где вы видите себя применяя этот язык?
291 1852897
>>852892
Бэк на ASP .NET Core + EF Сore, фронт на Angular.
292 1852913
>>852892
Из самых больших направлений: веб, геймдев, мобилки, облака. В основном это какие-то огромные агрегаторы, где черт ногу сломит.
293 1852923
>>852892
Теперь на нём что угодно пилить можно. Даже всякие CLI тулзяки. Пилится быстро, компилится куда надо легко и весит мало.

С Blazor можно переставать учить жабаскрипт. Вакансии потихоньку подтянутся.
294 1852927
>>852923

>С Blazor можно переставать учить жабаскрипт


Нельзя. Иначе придётся пилить кучу велосипедов, вместо использования готовых решений.
295 1852928
>>852927
Например?
мимо сеньер-помидор реактов, ангуларов, вью
296 1852936
>>852927
Ну так у любой новой технологии в начале мало пакетов и тулзяк. Их за год настрочат дофига. Хотя в случае с Блэйзор у него уже много чего из коробки есть и можно подключать существующие нугет пакеты.
297 1852937
>>852928
Любой не примитивный, анимированный элемент интерфейса, который приятно выглядит.
298 1852943
>>852858
Только что сказали что через минут 40 должна быть доступна.
299 1852948
>>852937
Всякие телерики уже много чего напилили.
Интересно, WPF компоненты будут поддерживаться?
300 1852954
>>852937
По части юи обычно прилепливается какой-нибудь богомерзкий кендо юи, который нехуя не красивый, не приятный и не упрощает разработку. В конечном итоге все в велосипеды заканчивается и проклинаются дятлы, которые всякого дерьма в проект натащили. Или твоя-любимая-юи-либа-нейм зарастает хаками.

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

Хотя, круто очередной раз фиксить выпадающий список в популярной либе.

Соре, не имею ничего против формошлепов, там без б лучше реакт и коробочный ангулар. С тем же успехом можно пойти дальше и использовать цмски на шарпе.
301 1852959
>>852954
если бы на фронте был не говножс, а что то вменяемое, то и блазоры были бы не нужны.
302 1852962
>>852959
Так правильно, красноглазые с++ девы (читай ржавые), только недавно релизнули WebAssembly. Технология еще довольно молодая.
303 1852972
Есть смысл обмазываться clr via c#? Уже 2 года почти прогаю на шарпе помаленьку, ни один учебник не дочитал дальше 100 страницы, всё гуглил. Тут просто на озоне увидел и подумал, что может стоит взять почитать.
304 1852984
>>852972
Это библия .Net, ты её должен прочитать и не один раз, а несколько, после чего держать под рукой и обращаться при любой непонятной ситуации.
305 1852989
>>852984
Рихтер сдох? Когда книга под .NET Core?
306 1853004
>>852989
есть новая книга по языку джарп
K. Wolanski - Jarp invasion
307 1853006
Всё, студия обновляется
308 1853028
>>853006
Сижу на 10 студии до сих пор, мне норм
309 1853036
>>853006
а решарпер еще не готов (
310 1853038
а еще они там в jetbrains вообще чокнулись
хочешь что то одно - тащишь гигабайт говна
311 1853039
Че делать если пытался писать код нормально, писал-писал, но в ходе того как добавлялись и менялись требования, ты не хотел полностью переписывать, потому просто придумывал как впихнуть новую залупу туда куда оно не задумывалось и в итоге получил настолько запутанный и хрупкий код, что сам боишься что-то там менять? Ну, т.е. я понимаю примерно что можно делать в следующий раз, но хочется-то как-то этот код сделать ну хотя бы менее запутанным.
312 1853042
а это ВНЕЗАПНО

"Big news: Avalonia is now supported in ReSharper with our complete toolset – code completion, navigation, support for bindings, and quick-fixes for creating all sorts of Avalonia properties. We will continue polishing this support, and we are very interested in your feedback. "
313 1853043
>>853039
можно учиться на своих и чужих ошибках и больше так не делать
314 1853060
>>853039
Изучай паттерны и применяй их на практике, смотри чужой код. Сначала будет сложно и не понятно, но первая программа написанная с применением паттернов и соблюдением принципов SOLID тебя сильно обрадует.
315 1853071
>>853060

> Изучай паттерны


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

> смотри чужой код


Смотрю. Но если смотреть коллег - то там просто хреначат простыню в 4к строк в каждом классе и заебись. А на гитхабе создается впечатление что задачи были ясны сразу и не было такого: Сделай эту штуку, ту, ту и ту. Ты сделал, говоришь что все готово, а тебе говорят: Ну, вообще-то заказчик мудак и он хочет не те две шутки а вон ту-ту и эту штуку и еще в довесок такой вот функционал и чтобы на самом деле твой софт потреблял не больше 100мб оперативки и использовал вот эти вот штуки, т.к. у них там уже есть что-то и они хотят твою хуевину к своей присобачить.
316 1853080
>>853071

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



Значит не правильно применяешь. Паттерны как раз и создавались для того чтобы в код без проблем можно было вносить изменения и новый функционал.

Частой ошибкой новичков бывает желание сразу описывать классы и взаимодействие между ними, а потом уже исходя от этого описывать действия для выполнения нужных задач. На самом деле нужно начинать написание кода с того что он делает, а потом уже подстраивать под него классы, создавать интерфейсы. Еще не нужно стараться подстроиться под определенный паттерн, на начальном этапе нужно просто писать код и придерживаться общих правил, а определение необходимого паттерна придёт по ходу написания кода.
317 1853108
>>852892
А что еще есть? Динамикодрисню учить я не хочу, на плюсах ебаться с атавизмами си тоже. Остается джава и хипсторские языки без вакансий. Джава противная, на хипсторских языках нет работы.
В результате остается шарп - нормальная типизация, сахарка больше чем в любом хипсторском языке и тонна вакансий. Если знаешь другой такой же язык, то говори.
318 1853144
>>853108
Учи питон, поясняй за нейронки, оный яз обогнал жабу по популярности.
319 1853147
>>852892
А что там учить-то? Я вот в ВУЗе учил плюсы, предложили работу на шарпе, за неделю освоился и пошел работать. Это же оч простая штука, причем все из коробки, сейчас все нужное ты ставишь нугетом, я как вспомню, как с ебучим Make разбирался, как подключать библиотеки нужно было в плюсах, сколько ебли с тем что какой-то компилятор отказывается компилировать твой код из-за того что в одной из либ что-то сделано с каким-то не совсем стандартным способом, аж в дрожь бросает, а тут все просто, понятно, работы достаточно, платят нормальные деньги. Короче, учить там ничего особо и не нужно оказалось-то, после плюсов-то, сами либы что в стандарте - для всего буквально есть и тебе не нужно даже думать о том чтобы свой велосипед делать. Короче, чил, легкие деньги и работа на расслабоне. Я не понимаю скорее как кто-то в 2020+, выбирая не фронтенд - выбирает не шарп. Ну, допустим в городе твоем нет вакансии с шарпом, есть только джава, тут ясно, но куча всяких шизов лезут в Го, в Раст, в питон, прости господи. Вот зачем они это делают? Почему вообще тогда бы фортран не взять, а потом верещать всюду, что на работу не берут.
320 1853148
>>853144
Он её обогнал, потому что некий Гугл распопуляризовал его через всякие универы, конференции, тулзяки. И на нём было удобно быстро накидать каких-то формул и выборок данных и повертеть этими данными всяко разно для какого-то анализа. Не надо было во всякий дата саенс погружаться, просто взял и сделал. У учёных можно и 10 дней для результата программы подождать, лол.

Короче он стал популярным просто потому что. Удачное стечение обстоятельств. Так то шарп (кстати оба, и си и эф шарп) круче питона. Но Гуглу будет впадлу на Майкрософт подсаживаться, поэтому они будут продолжать пилить свои Го. Уж лучше бы в Раст вкладывались, ей богу.
321 1853155
>>853148
Очепятка, имелось ввиду что дата сайентистам не надо погружаться в компьютер сайенс. Data science то им как раз нужен.
image.png25 Кб, 759x575
322 1853158
>>852943
Не напиздели.
323 1853178
>>853158
Я уже 2 часа пользуюсь :)
324 1853215
>>853158
Тоже наслаждаюсь рекордами и инитами.
Те кто пишет кучу DTO и вообще обмазывается CQS то рекорды это как божья роса.
325 1853283
Рекорды могут стать заменой структов?
326 1853288
>>853080

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


Предлагаешь нахуярить говна в один класс, а потом раскидывать это всё по разным классам и чистить вилкой?
327 1853304
>>853283
они классы
328 1853307
>>853304
Это понятно, но структы создают когда нужны immutable типы с value semantics, и рекорды как раз такие (сравниваются по свойствам, а не по ссылке), к тому же имеют удобный синтаксис для создания и копирования. По-моему в большинстве случаев где раньше бы использовался struct теперь удобнее использовать record, не?
329 1853314
>>853307
а где раньше использовался структ? чтобы в кучу не срать. Другого смысла для использования struct со всеми его побочками нет
330 1853323
>>853307

> и рекорды как раз такие


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

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

мимодед
331 1853325
>>853323
Сильнее всего проиграю, когда ньюфагам впарят в сишарп бегин энд, как более кодокондуктовое новшество вместо "устаревших скобачек".

всё тот же мимодед
332 1853357
>>853325
Оно туда и идет
Код уже сложнее читать с этими новыми using
Приходится в голове вычислять где будет диспоз вместо явного блока
Теперь вот их
с <5 or 25
тоже сложно читается
Да и вообще куча всякой ерунды что и не упомнишь в силу их "а реальная польза где "
333 1853383
>>853357
Нахуй вообще нужны using?
334 1853386
>>853383
В каком смысле?
335 1853388
>>853386
Ты же эти имел в виду
using (Pidor p = new Pidor())
{
}
Я их не использую вообще
336 1853394
>>853388
ну это твой личный подход такой.

не все IDisposable прямо уж так нужно диспозить, но в основном нужно. Неча ресурсы удерживать больше необходимого
337 1853411
>>853388
сам по себе Disposable кривой паттерн, но стандартно используется именно он
338 1853515
Мне нужно в ListViw взять один элемент по индексу. Пробовал брать просто по индексу view.Items[index] и так view.GetItemAt(index) и чем больше индекс, тем эта срань медленнее работает. Если 8000, например, то эта хуита 12 секунд тупит, для меня это слишком много. Какие ещё варианты есть?
339 1853522
>>853515
ObjectListView, точнее, FastObjectListView
340 1853528
>>853515
нужно же уточнять что это винформс или впф
341 1853531
>>853522
Щас погляжу
>>853528
Впф
342 1853535
Есть консольная игра в жизнь, без функции расстановки изначальных клеток. Собственно, вопроса два:
1) как ебануть функцию расстановки живых перед началом игры, чтобы не прокликивать на клаве 400 клеток вручную?
2) если захочу ебануть это в винформс, чтобы мышкой выбирать, сложно будет реализовать выбор клеток и отрисовку игры?
винформы вообще не юзал
343 1853541
>>853288
Предлагаю начинать реализацию с места входа программы. Т. е. с метода Main, допустим у тебя там будет создание класса, который будет выполнять всю логику, тогда ты пишешь:

var dispatcher = DispatcherFactory<DefaultDispatcher>.Create();
dispatcher.Run();

Далее ты переходишь к созданию класса DispatcherFactory и его метода Run. И так по цепочке.

Таким образом ты сразу понимаешь какие классы тебе нужны, а какие не нужны. Если сразу пытаться представить эти классы в голове, то обычно пишешь много лишнего и в целом написать потом общую логику сложнее.
344 1853543
>>853388
Чтобы утечек памяти не было в случае когда объект использует ресурсы системы.
345 1853545
>>853522
Нет, это хуйня какая-то, там половины функций обычного ListView нет
346 1853546
>>853535

>как ебануть функцию расстановки живых перед началом игры, чтобы не прокликивать на клаве 400 клеток вручную?


Рандом или читать из файла.

>если захочу ебануть это в винформс, чтобы мышкой выбирать, сложно будет реализовать выбор клеток и отрисовку игры?


Не особо, только сетку программно создавай.
347 1853563
>>853531
ну хз че оно так долго. в Items та же коллекция что ты прибиндил (если ты конечно его используешь) и достать элемент из коллекции это ж константное время
другое дело достать вьюху для элемента
348 1853574
>>853563
Возможно из-за выделения тогда
view.SelectedItem = view.Items[newRow]
349 1853577
>>853574
это выделение новой добавленной строки что ли? лучше доверить это декларативщине
350 1853579
>>853577
Нет, это выделение любой нужной строки, просто назвал так.
351 1853594
>>853579
ну хз. набросал на коленке пример где листвью(гридвью) на 100к элементов и выделение нужного элемента с индексом 90к да с автоскролом на него
все мгновенно
352 1853604
>>853594
Даже не знаю тогда, у меня, конечно, завязана всякая хуйня на это выделение, но тормоза идут именно в строчке
view.SelectedItem = view.Items[newRow]
11-11-2020-15-00-31.gif2,6 Мб, 784x642
353 1853611
>>853604

>view.SelectedItem = view.Items[newRow]


ну я выбираю из ориг коллекции (к которой бинд делаю). впрочем даже так
SelectedItem = (Item)ListView.Items[90000];
результат тот же

http://paste.org.ru/?cwilch
354 1853620
>>853604
даже на миллион чуть чуть медленнее
ты там проверь не убил ли ты виртуализацию
в частности не перегружал ли шаблон
355 1853626
>>853620

>ты там проверь не убил ли ты виртуализацию


Каким образом?
356 1853629
>>853626
ну я убивал виртуализацию когда перегружал шаблон тем что в инете находил и оно было неправильное.
ну это кроме явного выключения виртуализации
больше способов не знаю.
так то с листвью редко работаю -только когда нужна скорость, а датагрид сильно медленнее
357 1853631
>>853626
я включил виртуализацию и переход такой же быстрый, но сама первоначальная загрузка списка очень долгая.
358 1853633
>>853631
Виртуализацию я врубаю
359 1853645
>>853633
она там и так включена. впрочем неважно же. на переходе не тормозит
попробуй мой пример у себя и посмотри в чем разница с твоим подходом
можешь разделить свое
view.SelectedItem = view.Items[newRow]
на 2 строки и поймешь конкретно в какой тормозит.
хотя 99% на SelectedItem из -за вызванных побочных эффектов которые ты накодил на смену выделения
ну и конечно я говорю про биндинг вариант использования листвью. напрямую я его никогда не заполнял
360 1853648
>>853645
Ладно, спасибо
361 1853736
>>853323

> И вот наступил сегодняшний день и ньюфагам тулят старые добрые рекордсы паскаля под видом чего-то нового и модномолодёжного.


Их тулят как модную ФП фичу из хаскеля и фшарпа. Я конечно не дед и паскаль не изучал, но сомневаюсь что рекорды в нем основаны на иммутабельности и аналоге with expression.
362 1853788
>>852858
Обновил сегодня студию на работе. Два раза намертво зависала во время отладки, протекая памятью из зо всех щелей. Один раз оставил её в таком зависшем состояния на 10 минут (посрать бегал, да), прихожу, а она к тому моменту уже 6 гб оперативы выжрать успела.
363 1853806
Короче, тут до релиза мне осталось неделя, потом нужно будет заказчикам отдавать. В принципе все отлажено и готово, но пилилось на core 3.1 и соответственно 8 шарпе, и вот вышел 5й.
Вроде как не должно же быть проблем если я мигрирую на него вот так вот? Или лучше не испытывать судьбу и уже в другом проекте плюшки 9 шарпа попробовать?
364 1853820
>>853806
Не думаю, что с обратной совместимостью чето будет.
А вот с тем, что на прод сервере может не быть нет 5, проблемы будут. Проверь что он есть или если юзаешь докеры, что там уже есть образ с ним.
365 1853824
>>853806
Скорее всего, само обновление особых проблем не доставит, но если ты начнешь перепиливать что-то для "попробовать новые фишки", проблем масса может вылезти. Оно тебе надо за неделю до релиза? Кроме того, 3.1 дольше поддерживаться будет.
366 1853831
>>853806
В релизе говорится, что можно уверенно переходить с любой Net Core версии.
367 1853852
>>853831
но в реале уверенно можно переходить не ранее 5.1.
А щас переходить просто потому что "хочется пощупать новые фичи"
368 1853857
>>853541
Новичок так не напишет. Он понятия не имеет о каких-то диспетчерах и фабриках и вообще о том, что можно логику в два класса распихать. Не зря же интернет наводнён вопросами типа "как передать параметры из одного класса в другой?". Да я и сам такой был. Какие-то там паттерны проектирования. Вот тебе класс на 10к строк кода. Работает и фиг с ним.

Это щас кажется что это всё просто. Но когда только начинаешь, то все эти красивые слова - это всё пустой звук. Прям совсем пустой. Вообще абсолютно никакого понимания.
dispatcher.Run(); - это уже пиздец магия и чтобы сюда новичку дойти, придётся пол года книжки/статьи читать.
369 1853873
>>853857
Я сначала прочитал книгу + возвращался к кратким статьям в интернете для того чтобы освежить память. Потом сразу пытался писать с применением паттернов и соблюдением принципов SOLID. Да, первый раз было сложно, голова пухла, я прокручивал всё в голове сотни раз и всё равно не мог обрисовать как всё это сделать, но в итоге сделал и результат меня более чем обрадовал. При этом первый раз я начал с жопы, а именно с описания классов, а не логики. Последующие проекты ты уже делаешь с мыслью "как мне раньше такое в голову не приходило, это ведь так удобно". В общем, ты либо идёшь навстречу страху "у меня не получится, я тупой" и борешься с соблазном "да захуячу лишь бы работало и хуй с ним", по итогу становясь программистом который пишет хороший код, либо присоединяешь к адептам "эта хуйня только замедляет разработку, вы сами себе палки в колеса вставляете, мой код ничем не хуже" и продолжаешь писать говнокод.
370 1853886
>>853873

>либо присоединяешь к адептам


либо становишься прагматиком

Этапы прохождения к чистому коду
- говнокодер - пишет код для своих нужд, работает через жопу, но плевать.
- начинающий программист - понимает, что код говно и хочет знать, как сделать его хорошим
...эти пропустим...
- шаблонист - упарывается паттернами, все пытается впихнуть в паттерны, выразить через паттерны, паттерн на паттерне сидит и паттерна в паттерн паттернирует
... еще пропустим...
- перфекционист - везде ищет идеал. обычно у такого время и бабло не жмет, поэтому есть возможность порассуждать, посравнивать, возможно знает несколько языков и везде видит "фатальный недостаток"
- прагматик - принимает, что идеал недостижим и что чистый код не значит упоротая приверженность к "вот так принято", а "все должно быть к месту". Пишет хороший код, но если позволяет ситуация, то не боится отойти от канонов "чистого кода", если от этого есть выгода и при этом все равно не сделать нерасширяемое говно ибо есть опыт.
371 1853890
И уж точно прагматик не напишет такое говнище, как цензор-фильтр на дваче, из-за которого напишешь текст и потом приходится его стирать кусками пытаясь угадать что не так, ведь тупорылый фильтр не скажет какое слово ему не по душе.
372 1853891
>>853890
У меня на этот случай регулярка есть которая меняет кириллические символы на латинские, если выглядят также.
373 1853898
Тем, у кого решарпер, рановато переходить. У меня только что решарпер не справился с Adjust Namespaces с учетом xaml файлов. Сижу починаю неймспейсы в них - часть он изменил, часть нет, а часть вообще стер. Ну и упал в конце с ехепшеном мне на радость.
претензий нет - все таки EAP, но все же неприятно
374 1853899
>>853898
А git тебе на что?
375 1853901
>>853899
У меня его нет. У меня нормальная dvcs
Ну а по теме - а что гит. Ну сделаю я откат и чо. Это равносильно " не начинал"
376 1853917
>>853901

> У меня нормальная dvcs


Это какая?
377 1853921
>>853917
Mercurial
378 1853933
>>853788
Уверен что это не твой говнопроект? У меня полёт нормальный.
379 1853939
>>853921
проиграл
380 1853942
>>853939
ну значит пора выигрывать )
381 1853944
>>853898
У меня веб проекты и решарпер. Делал несколько глобальных изменений по всему солюшену сегодня (namespaces, class names, formatting) - нормально работает.
382 1853946
>>853944
ключевое слово "веб"
с xaml же все далеко не так хорошо. И так было всегда. Решарпер подрос хорошо в этом плане, но в EAP видимо что-то сломали. Зато новые иконки (зачем только)
383 1854056
>>853933
Уверен. На предыдущей версии студии во время отладки этого места зависаний не было. Да и зависания происходили после выполнения одного шага отладка (F10).
384 1854082
Анон, вот смотри, многие говорят не писать что-то на всякий случай. Типа не понадобится и все дела. Так вот, я джун, ну, я думал так же, типа зачем мне делать для простого микросервиса сложную структуру запросов и модель, ведь со стороны клиента нужна всего 1 сущность от моего микросервиса(под капотом правда много работы, но клиент-то получит красивенький json с результатом), а настройки я могу хранить в виде appsettings.json. Ну так вот, я так и делал, но потом мне за 2 недели до того как нужно сдавать приходит тимлид и говорит: Вообще-то теперь нужно чтобы разные клиенты могли с твоим микросервисом общаться и вообще мы тут решили что нужно было чтобы каждый клиент мог свои настройки делать, еще нужно чтобы были политики доступа и вообще хорошо бы чтобы вот это(новая фитча) там было, а еще мы тут пока ты свой сервис пилил релили свою часть api полностью переписать, потому и ты тоже должен свою. Ну так вот, если бы я писал в классическом стиле, оно бы у меня все и так было, просто ждало бы своего часа, а используй я изначально БД для хранения настроек - не было бы таких проблем с тем что настройка была в json'е.
Вот и мне непонятно, кого пытаются все эти любители аббревиатур наебать? KISS, YAGNI. Серьезно, это третий проект в котором я участвую и каждый, блядь вот так и выглядит: да не парься, тут простенькая срань, сделай главное быстро, я делаю быстро, меня просят показать что все работает, а потом докидывают и докидывают новые требования и пожелания и некоторые из них ну не получается не меняя того что писал впихнуть, приходится переделывать то что уже есть, часто модель, а меняя модель приходится перепиливать куски которые с этой моделью работают, потому что таки есть разница: изначально сказали что будут такие вот сущности - я вынес их в enum и использовал свич, но теперь это полноценный класс и теперь большая часть работы с ним уже в этом классе -> одни куски исчезают, другие появляются.
385 1854100
>>854082
У тебя не "писать на всякий случай", а обычный говнокод. С самого начала нужно строить адекватную архитектуру, а не колосса на глиняных ногах.
386 1854101
>>854082
Смотри, YAGNI (в отличие от KISS который рулит) это хуйня. Он нужен для контроля всяких шизиков с OCR, которым дай волю они будут неделями писать никому не нужную хуйню. Но твоя проблема не в YAGNI, а в том что ты написал нерасширяемый кал. Твоему коду должно быть похуй откуда читаются настройки - из json или бд. Все что ты должен был поменять когда сказали что нужно читать из бд - дописать еще одну функцию которя читает настройки из бд, и добавить ее вызов когда нужно. Изменение внешних апи должно решаться добавлением/изменением нескольких однострочных адаптеров. Если у тебя при подобных изменениях распидорашивает весь код - проблема не в YAGNI. Ну и конечно изменение требований в середине проекта это зло, тебе придется время от времени переписывать огромные куски кода. И наперед ты это не предугадаешь. Чем больше напишешь сначала - тем больше будешь переписывать потом. А так-то YAGNI - хуйня, спорить тут могут только клоуны и каргокультисты.
387 1854110
>>853535

> как ебануть функцию расстановки живых перед началом игры


Простейшая задача же, ты чо?
У нас есть поле из клеток, соответственно, мы это поле можем описать массивом, соответственно, каждой клетке мы можем присвоить уникальные координаты (x, y) являющиеся индексами массива. Есть способ даже в одномерный массив вписать двумерные поля из ячеек. Но для простоты используем двумерный:
https://pastebin.com/BBvH9ces
388 1854498
>>854082
SOLID он для того и нужен, чтобы избегать неожиданного столкновения с неизвестностью (реальностью). Ты полностью абстрагируешь слои друг от друга и не даёшь им протекать никуда. Поэтому когда приходится менять какую-то модель или имплементацию класса, то ты только меняешь тот слой, к которому эти модели/классы принадлежат, а вся остальная кодобаза остаётся как есть.

Внешние АПИ (Controller/Action в данном случае) не должны меняться после выката в прод. Тебе надо добавить versioning
https://github.com/microsoft/aspnet-api-versioning
https://github.com/microsoft/aspnet-api-versioning/tree/master/samples/aspnetcore/SwaggerSample

И когда придётся добавлять новый функционал, то просто выкатываешь новый контроллер с изменённым функционалом и твои endpoints выглядят так
/api/my-controller/action?v=1.0
/api/my-controller/action?v=2.0

>да не парься, тут простенькая срань, сделай главное быстро


Это блядь в каждом проекте происходит! За 10 лет не было ни одного проекта, где бы всякие менеджеры и тим лиды не произносили этих слов. И каждый(!) раз потом работы по переписыванию было в несколько раз больше, чем если бы изначально нормально сделали.
Бизнесу всегда всё нужно вчера. Но со временем ты начинаешь их хотелки фильтровать и учиться предъявлять контр аргументы. А потом ты сам лид/архитектор, и не позволяешь бизнесу такую хуйню на голову твоих программистов скидывать.
389 1854528
>>853535

> 1) как ебануть функцию расстановки живых перед началом игры, чтобы не прокликивать на клаве 400 клеток вручную?


Я в вузе выебнулся и читал из битмапа: белая - пустая; черная(или любая другая) - живая. При отрисовке можешь как угодно уже рисовать.

> если захочу ебануть это в винформс, чтобы мышкой выбирать, сложно будет реализовать выбор клеток и отрисовку игры?


Да нет. Особенно если совместишь с битмапом который я выше предложил. Ты же, как я понимаю, будешь в обычном PictureBox'е рисовать, а он спокойно в битмап превращаяется и наоборот, твое поле так же легко битмапом представлять.

Я вот делал что на каждом ходе схоронялась картинка, типа чтобы можно было проследить как там развивалось и самые удачные потом зацикливал и делал гифки как обоины для телефона. Вооооот.
390 1854544
Привет.
Смотрите, вот пишут в интернете что не нужно диспозить HttpClient, типа нужно сделать один на все приложение. Другие пишут что нужно для каждого эндпоинта(либо наоборот для каждого api) свой делать. Третьи берут и диспозят.
Как правильно-то, если мне нужно на разные адреса постоянно слать Get'ы, а потом преобразовывать полученную информацию и на другие адреса слать Post'ы?
Ну, чтобы было ясненько, допустим есть n запущенных сторонних сервисов расположенных на разных доменах у которых есть общий API, мне нужно получить от этих серверов информацию и отправить в другой, но уже мой. Сервисы могут в процессе работы отваливаться либо запускаться новые, потому я предоставляю возможность пользователю добавить Uri на который я буду слать Get'ы, т.е. я заранее не знаю вообще с какого сервиса буду брать данные и сколько одновременно их будет.
Ну, пока что я не стал выдумывать и просто засунул Http-клиент в статический класс-обертку и просто имею коллекцию Uri'ев для Get'ов, но майкрософт пишет про какие-то АшТиТиПиФактори и со стороны оно выглядит прикольно, типа такой вот будет у меня сервис, где я просто вызываю метод GetItems() и получаю что мне нужно, потом как-то привожу к нужному мне виду и делаю PostItemsToMyServer(items), но в их примерах BaseUri вбивается хардкодом в конструкторе этого сервиса, а я ж как-бы не знаю еще Uri, а если передавать его в метод, ну, тогда и разницы-то большой нет между тем что я буду в статический класс этот Uri передавать.
В общем, реквестирую ликбез по HttpClient'у и как такие вот штуки нормально делать. Не думаю что задача какая-то уникальная и нет бест практис по ней.
391 1854560
>>854544

> АшТиТиПиФактори


> если передавать его в метод, ну, тогда и разницы-то большой


Там наверное идея в том что АшТиТиПиФактори может решать сколько ей клиентов нужно. Может использовать один (как я понимаю это рекомендованый вариант, нужно только thread safe методы использовать). Может навернуть пул клиентов. Может использовать один клиент для запросов к какому-то частому uri, а для всех остальных - второй. И т.п.
392 1854577
>>854544
АшТиТиПиФактори он создает HttpClient-ы по запросу, но впихивает в них HttpMessageHandler, которые кеширует на некоторое время.

Это позволяет иметь сколько угодно нужных тебе HttpClient с нужными настройками, не создавать на каждый из них и кое как ловить изменения днс (для этого HttpMessageHandler и не живет вечно)

Эти HttpClient можно смело диспозить.
393 1854640
>>854544
Делай как требуют того создатели - один на всё приложение.

>Как правильно-то, если мне нужно на разные адреса постоянно слать Get'ы, а потом преобразовывать полученную информацию и на другие адреса слать Post'ы?



Оборачивать в статичный класс и слать из него. Слать можно одновременно на разные адреса. Если нужна тонкая настройка: изменить куки, изменить заголовоки, изменить тип данных, то создаешь HttpRequestMessage, указываешь всё нужное у него и используешь HttpClient.SendAsync для его отправки.

Проблемы могут возникнуть только при необходимости использовать прокси-серверы для выполнения запроса, потому что HttpClient не поддерживает изменение прокси-сервера после того как класс уже создан. В такой ситуации для таких запросов лучше использовать более легковесный WebClient или WebRequest.CreateHttp.
394 1854729
Можно ли в студии настроить автоформатирование таким вот образом:

public
void
MethodName()
{
}

?

Ну или может быть есть какие-нибудь плагины, чтобы можно было вот так вот написать:

publiс:
int a {get; set;}
string b {get;set}
?

Просто ну раздражает меня что какой-нибудь метод
public async Task<IEnumerbla<IClient<IAdmin>>> GetAdminsWithPrivileges(IEnumberble<IPrivilegel> privileges, Func<IAdmin,bool> filter, int maxItems = 100)
занимает так много места просто для объявления. Ну, допустим параметры я могу свернуть в столбик, что чутка места сэкономит, но все равно довольно много места отъедает, если я решаю разделить окно редактора на 2, то не влазит уже.

Да, первый вариант неоч смотрится, но это пока что самый приемлемый уровень, еще бы студия не пыталась за меня отступы ставит. Раньше такого не было кстати, а сейчас решаешь лямбду написать пишешь customers.Where(x=> и в этот момент студия вместо x что-то пытается свое всатвить и ты вынужден остановиться, нажать бекспейс, потом когда выпадет список нажать Esc и только потом ты можешь нормально писать лямбду. Вот что за херня? Я вообще уже думаю что нужно бы перейти для написания кода в какой-нибудь Vim, лол, или еще что-то такое простое, а в студии только отлаживать.
395 1854975
Подскажите кто-нибудь, как мне объединить вот это (^$)|[^0-9.]+ и это ^\\d{1}$ в regex, чтобы оно работало? Я уже с ума схожу от этого говна.
396 1855032
>>854975
Солидарен с машиной, тоже не очень тебя понимаю
397 1855036
>>855032

> (^$)|[^0-9.]+


> ^\\d{1}$


Это регулярные выражения, которые по отдельности работают нормально, а я хочу соединить их в одно выражение, но у меня не получается.
398 1855045
>>855036

>Это регулярные выражения


Я какбэ догадался

>^\\d{1}$


Это чё? Зачем две палки когда есть собака? Что за {1}?

>а я хочу соединить их в одно выражение


Т.е. соединить? (^$)|[^0-9.]+|^\\d{1}$ или (^$)^\\d{1}$|[^0-9.]+^\\d{1}$ ? Надеюсь первое, второе совсем наркомания
399 1855055
>>855045

>^\\d{1}$


> Это чё? Зачем две палки когда есть собака?


Можно и так и так

> Что за {1}?


Чтобы можно было только число из одной цифры ввести

> (^$)|[^0-9.]+|^\\d{1}$


Это я пробовал, если так написать, то условие [^0-9.]+ отваливается, на буквы нет реакции никакой
400 1855108
>>855055

>(^$)|[^0-9.]+|^\\d{1}$


УМВР https://rextester.com/VUOL38695
401 1855150
>>855108
А должно быть false. У меня уже крыша едет.
402 1855163
>>855108

>[^0-9.]+


>"a"


>false


Как false? Давай ты словами объяснишь, что ты хочешь.
403 1855168
>>855163
А как не false, если я ограничиваю ввод цифрами, а он true на буквы выдаёт. Блять, я просто хочу, чтобы он выдавал true, когда я ввожу ОДНУ цифру в диапазоне от 0 до 9. На двухзначные и больше числа должно быть false, на отрицательные false, на буквы тем более false.
404 1855173
>>855168

>[^0-9.]


>[^]


Разберись с регулярками что ли
405 1855183
>>855168

>Блять, я просто хочу, чтобы он выдавал true, когда я ввожу ОДНУ цифру в диапазоне от 0 до 9


/^[0-9]$/
406 1855188
>>846539 (OP)
Посоветуйте книги, в которых по больше практики, чтобы было какие api есть и как использовать, желательно современные api что есть в .net core.
407 1855190
>>855183
Всегда false
408 1855193
>>855190
Ну без слешей естественно же.
409 1855197
>>855190
Вот так вроде работает
(^$)|/^[0-9]$/|^\\d{1}$
Но если диапазон уменьшить, то ему похуй. Это из-за | что ли. Вообще уже не соображаю, блять.
410 1855199
>>855193
Всё, понял, спасибо, дай Бог здоровья. Ебал в рот регулярные выражения.
411 1855200
>>855199
Их сатана придумал, не иначе.
412 1855204
>>855199
>>855200
Да хорош, просто почитай хоть параграф в документации
413 1855390
Кто-нибудь может ответить почему делегаты это не буквальное определение костылей?
414 1855395
>>855390
потому что это не буквальное определение костылей
415 1855396
>>853357
Вы чё дятлы? Какой сложнее, скобачники не люди.

only =>
only var
only using ... ;

Мне 23 года, специально залезаю в классы дедов и коммичу syntax исправления, потом лоллирую как они смотрят на меня, когда видят.
416 1855401
>>855396
да можно вообще все убрать. сделать как в перле. мозг распарсит. зачем еще человеку то мозг как не в "уме интерпретировать код"

Есть вкусовщина, как ; var =>, а есть то, что лучше не трогать.

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

убрать using когда много вложенных using - это приемлемо, раз язык не позволяет сделать одно определение using для многих элементов. Но тотально убирать using только "потому что можно" - ИДИОТИЗМ
417 1855403
>>855396
и да. не напрягает ConfigureAwait(false) везде писать? Хотя, скорее всего, ты просто не пишешь
418 1855405
>>852892
Пишу GIS интеграции по COMу, как прадеды завещали.
419 1855408
>>855390
Пиши на ассемблере, в нём костылей нет по минимуму.
420 1855423
>>855408
Да при чём тут асемблер просто у меня гореть начинает когда что бы объяснить их необходимость начинают городить уровня "А давайте представим мульти вселенную в которой есть 8 альтернативных вселенных похожей на нашу в которой мы имеет доступа к родительским классам потому они были написаны и реализованы в неизвестный момент времени неизвестно кем и мы даже не знаем их реализацию и вот в одном из таких случаев мы можем создать делегат указывающий на нужный нам метод." Будто читаешь конспекты по физике написанные первокурсником с будуна.
ну есть уже обычные реализации этих методов в классах которые прекрасно читаемы и соблюдают структруру кода и его иерархию. Для тех кому мало перегрузку их сделали, абстрактные методы добавили, виртуальные НЕТ БЛЯДЬ хочу предполагать мульти вселенную и что где-то есть какие-то методы поэтому буду делегаты хуярить которые еще и должны и методу соответствовать по параметрам и модификаторам.
421 1855426
>>855423
так у тебя претензии к тому, что ты там читаешь или к самим делегатам. ты уж определись

Потому что делегат, как "интерфейс callable" просто архисверхполезная шняга и незаменим.

Комбинирование делегатов...ну это сделали, чтобы event реализовать. Ну так им захотелось "а пусть будет так еще вот уметь"
422 1855434
>>855426
Сможешь на пальцах пример обрисовать их использования где они были НЕЗАМЕНИМЫМЫ? Можно даже с псевдокодом я не против. Я понимаю концепцию их но я даже сам себя переубедить не могу что это костыль но у меня то опыта больше чем лаба1 и лаба2 нет, может понимание их использований через жирные проекты приходит
423 1855439
>>855434

>Сможешь на пальцах пример обрисовать их использования где они были НЕЗАМЕНИМЫМЫ?


изи.
вот тебе древняя концепция - нужно принять калбек в метод. Как будешь реализовывать? Как опишешь что "мне вот нужен метод который примет это и вернет это" не вводя в язык такого описателя?

Какие такие калбеки? да хоть те же евенты. даже если не любишь шарповые евенты (как не люблю их я), а используешь что то типа
observableObject.Observe(...сюда что передавать? мудрить интерфейс плюс класс?...)
или list.Where(..сюда тоже интерфейс мудрить IPredicate?...)

попишешь так и задашь вопрос "а почему я не могу передать метод, как во многих других языках". Почему я должен реализоывать интерфейсы на каждый чих. Я что на жаве что ли пишу?
А тебе в ответ - низзя. передача метода потребует "интерфейс для метода", а это костыль
424 1855444
>>855439
И как часто подобное происходит?
425 1855452
>>855444
постоянно же. Каждый раз когда LINQ пользуешься - вот оно
ну и когда пишешь где нибудь Action<>/Func<>, что тоже очень часто - тоже оно
про event-ы я промолчу, я их избегаю, но обсервабле тоже нужны делегаты
426 1855461
>>855452
Ладно, спасибо. Видимо мне нужно больше больше практики по теме, сейчас хоть всё не так однозначно стало
427 1855463
Я тот страдалец, которому приходится писать под UWP. Как понимаю, это тут редкость. Задавайте свои ответы.
428 1855469
>>855390
А как без них линкью и асинхронщину писать? Или ты про саму реализацию делегатов? не читал, как они внутри устроены
429 1855486
>>855461
Есть парадигмы: ООП и ФП (функциональное программирование)
в шарпе они представлены обе в какой то степени. Передача функций, анонимные методы - все это относится к ФП

И даже если шарпист нихрена не смыслит в ФП все равно использует вещи оттуда. Тот же LINQ это из функциональной парадигмы.
Ну или даже просто где нужен калбек или "мне нужен метод, нахер мне ради этого плодить интерфейс" то использует делегаты
430 1855488
>>855403
Так его везде пихать уже давно не надо. Только если desktop, самописный контекст синхронизации или библиотека.
Нормальные люди пихали его до 2018 года, и потом перестали с выходом стабильной версии кора. А остальные только к 2020 догнали, что ConfigureAwait(false) то оказывается ставить надо! Только поезд ушёл.
431 1855492
>>855488
ничего с выходом кора не изменилось. Ну разве что в asp.net core его по дефолту нет и это позволяет не писать жертвуя некоторой долей перфоманса и в надежде, что контекст никогда не появится
432 1855502
>>855444
Всегда, когда нужно передать функцию как параметр.

Очень часто используемый пример с анонимной функцией
var someEntity = _cache.GetOrCreate("some-key", entry =>
{
entry.AbsoluteExpiration = TimeSpan.FromHours(1);
return _repo.GetSomeEntity(id);
});

Тут метод GetOrCreate принимает 2 параметра - ключ для поиска значения в кэше и функцию, которая притащит свежие данные, в случае если кэш пустой.

Упрощённо GetOrCreate выглядеть будет так:
T GetOrCreate<T>(string key, Func<ICacheEntry, T> func) {
if (_internalStorage.Contains(key))
return _internalStorage[key];

var value = func();
_internalStorage.Add(key, value);

return value;
}
433 1855513
>>855492
Ну так о вебе и речь. Исключения перечислены выше. В консоли и в тестах контекст вообще редко кто добавляет.
В перформансе разницы вообще нет. Хоть ConfigureAwait(false), хоть ConfigureAwait(true). Можно доверять на эту тему статьям в инете, мы лично делали свои тесты, бомбардируя сервер тыщами запросов. Проверялось на разных машинах. Результаты были одинаковые.

При внезапной нужде в контекстe добавить ConfigureAwait(false) по всему коду можно в 1 клик через ctrl+. или alt+Enter.
434 1855516
>>855513

>Хоть ConfigureAwait(false), хоть ConfigureAwait(true)


это если нет контекста. иначе есть, что как бы очевидно.

>добавить ConfigureAwait(false) по всему коду можно


как бэ нельзя.
и как бэ эта простыня читабельности не добавляет.
435 1855519
>>855516
ты там походу пьяный в честь пятницы, твои комменты не стыкуются друг с другом
436 1855527
>>855519
ну так это у тебя "о вебе речь". Я про "только веб" и не говорил

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

из этого вывод - лучше писать во избежание

а про автоматизм там все проще
- нельзя везде проставить ConfigureAwait(false) там где "забыл" проставить. У тебя на проекте это проблем не вызовет - у меня же получишь дедлок (хотя формально он тоже асп.нет кор)
- ну и да. тотальное ConfigureAwait(false) засоряет код, потому то вы его и не пишете - с этим думаю спорить не будешь
437 1855528
>>855519
ой. не дедлок..., ну в общем ты понял
438 1855533
>>855519
и вообще речь о том что этот ConfigureAwait(false) есть говно
все так рады var но мало кто просит "замените ConfigureAwait(false) на что то вменяемое", чтобы вот не было такого "надо писать/можно не писать" раз уж сделали херню, что по дефолту ConfigureAwait(true)

https://github.com/dotnet/csharplang/issues/2542
и никаких подвижек

зато целый юсинг скобочки убрали (а убирать их нужно далеко не везде, но кого это волнует - модно же)
439 1855540
>>855469

> линкью


ЛИНКЬ
image.png252 Кб, 860x280
440 1855656
Аноны, вопрос такой, при нажатии на ентер в инпуте на сервере вызывается не связанный с инпутом метод, причем если его закомментировать вызывается другой если закомментировать и его то вызывается еще другой, и так далее, я не понимаю какого хрена вообще происходит, я не знаю даже что в скринах отправлять потому что понятия не имею что это за ошибка
441 1855668
.NET 5 на Линуксе уже пробовали? Думаю, стоил ли ставить из AUR.
442 1855669
>>855656
Как ты узнаешь об этом?
443 1855671
Если кто не в курсе, .NET 5 релизнули. Я только не понял, он эволюция .NET Core и стоит сразу же использовать его, или они будут развиваться параллельно?
444 1855672
>>855669
В смысле?
445 1855675
>>855672
Говоришь, что знаешь какие методы запускаются, как узнаешь? Вероятно можешь понять и почему?
446 1855679
>>855675
Ну я же могу в дебаге посмотреть какие методы вызываются, так вот вызываются по сути чисто рандомные методы но постоянно
447 1855683
>>855656
Каком сервере, какой импут, болезный? Хорошо хоть аниме прикрепил,обозначив себя умственно отсталым.
image.png45 Кб, 902x167
448 1855684
>>855675
Импуте обычном блять, хтмловском, а сервере дотнетовском, мы в c# треде гений, вот собственно выделена строчка с тем самым импутом
449 1855688
>>855684
Так это не сервер, долбоеб, это браузер. И на скрине даже не Blazor. Тебе в js смотреть нужно, С# здесь не причем.
image.png35 Кб, 1124x213
450 1855690
>>855688
Да, я тоже так подумал, проблема в том что вызывается именно серверный защищенный onClick метод например сейчас такой, если его закомментировать будет другой, и я не понимаю как это возможно, это же защищенный метод, его тупо НЕ ВОЗМОЖНО вот так вот вызвать из клиента какой бы ни был бы скрипт,
451 1855691
А это правда что .net core шлёт телеметрию?
452 1855693
>>855691

>А это правда что .net core шлёт телеметрию?


Доку почитать не вариант?

https://docs.microsoft.com/ru-ru/dotnet/core/tools/telemetry
453 1855696
>>855690

>вызывается именно серверный защищенный onClick


Бесполезный набор слов. Какой onclick, Blazor?
454 1855697
>>855690
Короче, подробно опиши проблему. Мож у тебя там ASP.NET 4 Webforms какойнить, который никто в глаза не видел уже лет 20.
455 1855698
>>855696
Стандардтный EventHandler для аспшних контрлов типа такого как на первом пикриле
или второй пик как подобный контрол выглядит на клиенте

>>855697
Ну как бы да у меня асп вебформс, распространённая платформа, немного устаревшая, но когда-то была популярна
456 1855703
>>855698

>Стандардтный EventHandler


>вебформс


Не стандартный.

>Ну как бы да у меня асп вебформс


И что я должен из тебя все это клещами вытягивать или гадать?
457 1855704
>>855703
Он не зря аниме к посту первому прикрепил, а только потом код показывать начал.
458 1855705
>>855703
а что в разоре или мвс евентХандлеры сильно отличаются? да и какое это имеет отношение ведь не важно где, защищенный метод не может вызываться вот так из клиента
image.png61 Кб, 225x225
459 1855706
>>855704
Я просто не понимаю что конкретно мне скринить потому что то выполняется и то что вызывается вообще не имеет отношения друг к другу, там общее только то что они на одной странице, как я и говорил методы вызываются совершенно рандомно, мне что весь код страницы скринить? там порядка 400 строк бака
460 1855712
>>855705

>а что в разоре или мвс евентХандлеры сильно отличаются? да и какое это имеет отношение ведь не важно где, защищенный метод не может вызываться вот так из клиента


В старом ASP.NET совсем другой конвейер обработки запросов, событий, вообще все другое. Там непрозрачно все происходит, с магией. Так что разбирайся.
16039536975310.png260 Кб, 422x604
461 1855717
>>855712
По моему в вебформах как раз таки все просто, есть клиентская сторона, есть серверная сторона, а в мвс нихуя не понятно, где страницы, где коды страниц, все намешано как спагети, часть кода страницы в одной директории, часть кода страницы в дргуой, часть кода страницы вообще где-то манямирке который я никогда не увижу, разве это удобно? ну да предположим мвс немного быстрее, но ведь в вебформах можно часть code behind вообще низкоуровневым сделать, и оптимизировать код так что мвс такое и не снилось, а в мвс и блазоре что? фреймворки? библиотеки сторонние? надстройки? вы думаете это будет работать быстрее чем низкоуровневый код? что плохого в том что у тебя есть контроль над рендером? разве это не дает еще больше свободы в оптимизации страницы? а вместо веб апи можно использовать веб методы
462 1855718
>>855712
Про дебаг кстати я вообще молчу, и понял почему ты сначала спросил про "Как ты узнаешь об этом?" потому что да в случае мвс это нихрена не очевидно, там дебажить не возможно, понятно зачем туда ввели докер, без него дебажить код просто не возможно потому что он раскидан по всему решению, и вперемешку с клиентским кодом, как это можно дебажить если ты даже за потоком проследить не можешь?
463 1855721
>>855668
https://hub.docker.com/_/microsoft-dotnet-sdk/
Мы Alpine и Ubuntu используем. Можно образ использовать через докер или k8s.

Но можно и на машину установить
https://wiki.archlinux.org/index.php/.NET_Core

Официальной установки под Arch правда не видно
https://docs.microsoft.com/en-us/dotnet/core/install/linux
464 1855723
>>855717

>разве это удобно


>вот у меня всё просто и понятно


>двач памахи методы самовызываются што делать


>catch (ThreadAbortException){}



А ты смешной.
465 1855724
>>855717
Чувак, ты поехавший. Начинай читать нормальные статьи и книги, чем скорее, тем лучше. Иначе это станет не излечимым.
466 1855726
Клевый чел. Чего вы на него набросились? Лучше бы помогли.
467 1855727
>>855723
Ну да, прогеррам на мвс такое не понять, они могут только копировать код с гитхаба или юзать фремвокри, а за претензию к catch (ThreadAbortException){} поясни, в чем проблема скипать сейфовые и обработанные исключения?

>>855724

>Чувак, ты поехавший. Начинай читать нормальные статьи и книги, чем скорее, тем лучше. Иначе это станет не излечимым.


Есть что ответить по сути? кроме оскорблений? Разве я кого-то оскорблял? Так если ты переходишь на личное из за тебе нету чего ответить по сути может это не я поехавший
468 1855728
>>855721

>Но можно и на машину установить


>https://wiki.archlinux.org/index.php/.NET_Core


Да я знаю, просто у меня уже dotnet-sdk-3.1.8 стоит из комьюнити репа. AUR стараюсь использовать только в крайних случаях, тем более с такими новыми пакетами. Я пока почти не читал доку по .NET 5, не будет ли конфликтов, как я будут .NET CLI использовать разных версий на одной машине?

>Можно образ использовать через докер или k8s.


Само собой. Наверное так и сделаю.
469 1855730
>>855726

>Лучше бы помогли.


Еще бы знать как помочь. ASP.NET тыкал давно когда на винде был, сейчас на линуксе и использую net core.
470 1855735
>>855727

>Есть что ответить по сути? кроме оскорблений? Разве я кого-то оскорблял? Так если ты переходишь на личное из за тебе нету чего ответить по сути может это не я поехавший


Он наверное имел ввиду, что у тебя все наоборот. Сами Microsoft неоднократно писали, что создали ASP.NET Core потому что он удобнее, безо всякой магии, а ты твердишь обратное. К слову, в новом ASP.NET Core есть Razor Pages, это сильно более продвинутый Webforms, попробуй.
image.png253 Кб, 362x512
471 1855736
>>855726
Спасибо Анончик, нынче олдов совсем не уважают, облепились фремворками и копипастом с гитхаба и спят и сидят довольные, а у меня между прочем легаси, вот возьми, я угощаю
472 1855738
>>855736

>нынче олдов совсем не уважают


На SO иди, или погугли что ли, олд блин...
473 1855739
>>855736
Ну ты просто не с той стороны зашел со своей проблемой. Так мало инфы дал, что единственный, кто тебе может помочь это чел с такой же проблемой, который все решил сам. Вероятность встретить тут такого чела невелика. Вот и пошли в общем-то небезосновательные предложения перекатиться на технологии поновее.
image.png5 Кб, 338x57
474 1855740
>>855735
Про разор я в курсе, ну а насчет магии смотри, простой быстрый пример на дефолтном проекте, вот предполий хочу я зайти в метод и посмотреть что происходит в view? А мне не дают, почему? В вебформах такой фигни нет, там можно даже в авто генерируемые классы можно зайти и почитать и даже изменять, не знаю зачем это может кому нибудь понадобиться но все же
475 1855741
>>855736
Я в ваших дотнетах 15 лет сижу. У нас тоже есть говно легаси 10+ летней давности и 1гб кодобазой. И есть системы из микросервисов на core 3.1 и net 5.

Я успел нырнуть с головой во все веб фреймворки, которые МС когда-либо пилил, начиная с древнего asp (без всяких net, где на VBScript писать надо было). И на каждом рабочем месте мы перетаскивали легаси на что-то более новое, дабы продлить поддержку, улучшить читаемость, не иметь глюков с новыми ОС, повысить производительность и т.д.

>Есть что ответить по сути?


Судя по твоим сообщениям у тебя страшная каша в голове. Тут даже страницей текста не объяснишь, где эту суть начинать ухватывать.
476 1855748
>>855740
MVC так то тоже уже легаси. Я их 3 года не использовал. Теперь АПИ пилят, и потихоньку начинают перекатываться на gRPC и HTTP2 и Blazor.

Но в MVC очень просто найти откуда что приходит, как обрабатывается и как рендерится. Но только при условии, что проект писал нормальный программист без сильной склонности к креативу. Твой Controller/Action определяет имя папки и файла твоего View. Но тебе никто не запрещает указывать конкретно какое View в данном методе рендерить и какую модель ему отправлять. Во вью лежит только то, что относится конкретно к отображению данных с минимум C# и js. Вся логика должна быть вне твоего Web проекта и должна быть свободно перетаскиваема хоть на десктоп, хоть под мобилки (SOLID должен соблюдаться).

Фронт-енд часть так и остаётся почти чистым html + js + css, только с небольшим пререндерингом на сервере (обычно для безопасности и иногда для удобства с валидацией и прочей чисто фронт-енд функциональностью).
477 1855752
>>855740
В поиске по дереву файлов проекта вводишь "(имяконтроллера)View" и всё, ты уже видишь что это за view и что в нём происходит. Это гораздо удобней ситуации когда у тебя всё в куче.
478 1855756
>>855748
Да я в общих чертах знаю как мвс работает, то что ты написал я точно знаю, и ничего не имею против мвс, просто мне не очевидно то что есть люди в асп которые не знают вебформы, и еще более странно что есть люди которые открыто его хейтят
>>855752
Ты имеешь в виду когда можно просто использовать хелперы и прожать F11? Никто не заставляет тебя писать весь код в одном файле, делай рефрактор как захочешь, просто там поток для построения страницы как у классических приложений, условный мейн и дальше функции которые в этот мейн вызываются, а клиенту ты передаешь то что тебя надо по мере выполнения потока собственно мне это и нравилось когда я в асп перекатывался из дектопного программирования,
479 1855759
>>855756

>условный мейн и дальше функции которые в этот мейн вызываются


Ну да, простыня под названием процедурщина, самый ущербный стиль, который ведёт к путаницам и является родителем макаронного кода и вопросам "у меня методы вызываются непонятно откуда, что делать?".
480 1855763
>>855759
Именно этот "условний мейн" состоть буквально из 10-20 строчек, я не понимаю про какой спагетти код ты говоришь
481 1855764
>>855756

>мне не очевидно то что есть люди в асп которые не знают вебформы, и еще более странно что есть люди которые открыто его хейтят


Ух негодяи, да?
image.png114 Кб, 275x183
482 1855765
>>855764
Баки!
483 1855768
>>855763
Странно, но ты как то умудрился в нём запутаться.
На самом деле всё очевидно - легче жрать кактус и говорить что он вкусный и тебе совсем не больно, просто потому что для того чтобы употреблять нормальную еду нужно немного потрудиться и выучить что то новое, а тебе лень.
484 1855769
>>855768
Если ты по поводу того трабла о котором я спросил, то это вопрос именно к клиентской части, а не серверной, а точнее вопрос к постбеку, костылями этот вопрос можно решить, например юзнуть Page.IsPostBack, или можно избавиться от мастера, или возможно
Event.preventDefault(), но я ищу причину почему выстреливает не правильный постбек, у меня есть подозрения на updatePanel или js теоретически это еще может быть signalR хотя он и не может вызвать защищенные методы, но ведь он может вызвать постбек после которого и сработает евентХандлер, так что в любом случае єто клиентский трабл
485 1855783
>>855671
Это просто новая версия .NET Core.
486 1855798
>>855423
Ну смотри, допустим ты делаешь сервер на сокетах. Все же довольно просто и основная логика - всегда одинакова: приняли клиента - как-то начали обрабатывать. Но вот обработка может быть разной, допустим первому пользователю твоего класса нужно modbus, а другой - хочет таки http, а третий вообще irc хочет, кому-то нужны сессии, кому-то не нужны, может быть кто-то просто хочет на любой запрос - время отдавать текущее и ничего больше. Ну и разве плохо будет если твой класс сервер - просто будет принимать делегат вида void(Server, Client). Пользователь твоего класса тупо описывает что ему нужно: тут мы побайтово читаем, как-то пакетики обрабатываем и делаем modbus фигню, а вот тут мы пытаемся запрос парсить как строку и если все ОК - отдаем ресурс и т.д.. "Сервер" при этом вообще никак не меняется, он просто создает тастку в которую засовывает твой делегат и дальше ждет приема клиентов. Хорошо же.
Да, это не совсем ООПшно. И ты конечно мог бы сделать в ООП стиле, только вот зачастую оно не требуется, а еще чаще ты просто хуйню напишешь, а так - твоя библиотечка в этом случае будет строк в 200, если же будешь все ООП делать - код разрастется, а пользователь будет вынужден разбираться во всей этой структуре - что куда пихать, какие классы ему создавать и т.д.
Ну, по крайней мере мой охуительный опыт работы в 1 год вот такое впечатление оставил. Да.
487 1855937
>>855668
Пробовал, вроде работает. Но вот еап райдера не запускается, поэтому фичи 9 шарпа попробовать не могу. Сука, им деньги платят, а они вовремя не могут выкатить поддержку нового языка, хотя анонс 9 шарпа был еще в марте, вроде.
Хуй знает, кто этот райдер кроме линуксоидов и макодебилов юзает.
488 1855970
>>855668
двачую вопрос, там вообще как десктоп приложения уже можно пилить из под Линуха или только ВЕБ? Студии всё так же нет, только КОД?
489 1855979
>>855970
всегда было можно
вопрос в том удобно ли )
Avalonia/UNO
490 1855981
>>855970
или ты про редакторы? ну там только Rider
491 1855987
>>855970

>там вообще как десктоп приложения уже можно пилить из под Линуха или только ВЕБ?


Да, wpf точно. Почитай, я хз. Или лучше установи и сделай dotnet new, покажет доступные шаблоны, хотя я опять же хз насчет все ли шаблоны из коробки есть, может их отдельно нужно ставить.

>>855970

>Студии всё так же нет, только КОД?


Нах не нужна ты че, 10Гб весит минимум, тормознутое глючное дерьмо. VSCode с Omnisharp позволяет все тоже самое.
492 1856009
>>855987
да ну какой WPF.
даже если редактор умеет WPF и запускается под линукс то это ничего не значит ибо приложение не запустить для дебага
а дизайнер...поставил я на днях Rider и дизайнера для WPF под неткоре просто не существует.
током ебнуть.jpg98 Кб, 512x445
493 1856017
>>855691

>А это правда что .net core шлёт телеметрию?


>>855693

>Доку почитать не вариант?



Подождите ёбана.
СТОЙТЕ БЛЯДЬ!

Я правильно понимаю, в ваш этот свободный дотнет встроена блядь телеметрия.
И никого это не смущает?
494 1856029
>>856017
В твою мобилку тоже встроена телеметрия, как и во все поисковики и популярные сервисы, в винду, в небо и Аллаха. Добро пожаловать в реальный мир, Нео.
495 1856031
>>856017
Не волнуйся, всем похуй на какое маняме ты дрочишь.
496 1856044
>>856017

>Я правильно понимаю, в ваш этот свободный дотнет встроена блядь телеметрия.


И че? Это среда разработки, логично, что им нужна инфа как она работает на устройствах, чтобы ее развивать. Телеметрия отключается вручную. Вообще как бы кто этим пользуется, тот занимается разработкой и ему пох что там сканируют в системе, это же рабочая машина. dotnet может быть в докер контейнере, что вообще исключает выход за пределы одного процесса.
16044317606500.jpg74 Кб, 672x900
497 1856054
>>856044

> ему пох что там сканируют в системе, это же рабочая машина.


>пох что там сканируют в системе


>это же рабочая машина


Блядь блядь блядь сука блядь что происходит?

>>856029
Это другое.

Не не подождите ёбана.
Что происходит вообще? У вас теперь документация для телеметрии идет?
Вы там ёбнулись вконец?
Мало знать дотнет и сишарп нужно еще внимательно изучать телеметрию сука блядь по оф докам?
А сертификация по телеметрии есть?
498 1856070
>>856054
Какое другое? Это все тоже самое, что и везде сейчас. Дальше будет еще круче.
499 1856127
>>856054

>пикча


Она под чем, что с глазами?
bandicam 2020-11-14 19-44-52-810.mp47,8 Мб, mp4,
1920x1080, 1:10
500 1856159
хуй знает на что потратил джва вечера но остался доволен.
Можно как то забустить вывод текста в консоль?
501 1856160
>>856159
Молодчага.
502 1856166
>>856159
Как такое сделать?
503 1856172
>>856166
могу выкинуть архивом или на гитхаб, но там код говна т.к. изначально это был проект интерпретатора брэйнфака с поддержкой слов разной длинны
504 1856174
>>856172
Хитро.
505 1856175
>>856172

>гитхаб


Давай, но все же объясни как сделал, использовал либу какую?
506 1856176
>>856172
А почему в итоге получилось аниме?..
507 1856185
>>856159
Молодец. Теперь сделай чтобы в звук могла.
>>856166
Самое простое - берешь картинки, читаешь как битовую карту и просто рисуешь в консоль. Может быть тот анон как-то сложнее придумал, я для вуза вот так вот как я сказал делал.
508 1856201
>>856185

>Самое простое - берешь картинки, читаешь как битовую карту и просто рисуешь в консоль. Может быть тот анон как-то сложнее придумал, я для вуза вот так вот как я сказал делал.


Там же не статическое изображение, а анимация. Битовые карты это про что вообще, гуглить обработку изображений?
509 1856203
>>856159
Ну так что там насчет гитхаба, или ты обычная вниманиеблядь?
510 1856205
>>856201
Простейшую анимацию ты можешь замутить последовательно читая картинки. Да, не самый оптимальный вариант, но вполне для мелкой фигни сгодится. Возьми сделай какую-нибудь серию из 100 фоточек, запили 30 кадров в секунду и у тебя будет анимация.
Вопрос месяца 511 1856234
Как кроссплатформенно создать и держать трэй-иконку? Трэй-иконку с балон-тултипом на десктопах и с как можно более прозрачным и автоматическим превращением её в пуш-уведомления на мобилах.
512 1856255
>>856234
Делаешь интерфейс: INotification, с методом void Notify(string message), там уже под каждую OS - делаешь свои реализации: WindowsNotification, LinuxNotification и т.д. Там уже от платформы пляшешь. Тут мы берем из винапи что-то, там GTK, тут какие-то андроид хуевины.
При сборке контейнера просто можешь ебануть дефайнами выбор когда какой INotification использовать. Изи-бризи.
Пока писал подумал, что скорее правильно было бы не INotification, а INotifier. Имплементирующие его - делают это под разные платформы и окружения, а вот INotification - может быть скорее каким-то сообщением с приоритетом, типа: ImportantNotification, InformationNotification и т.д., чтобы была возможность как-то управлять этими вот сообщениями. Ну, соответственно можешь сделать какую-то очередь уведомлений, твои классы - кидают это в очередь, INotifier - переодически достает из очереди - выводит, у него по сути один метод Run с циклом который бесконечно достает из очереди - выводит.
Еще подумал. У тебя 3 интерфейса: INotification, INotifier и INotificationDriver, вот Driver как раз будет заниматься всей хуйней специфичной для OS,уведомелния - то что будет приходить INotifier'у, он уже решает вывести его с помощью драйвера или же запихнуть обратно в очередь и выввести что-то более важное. Вот. Да. Как мне кажется - норм решение.

Ну а кк держать иконку - уже в драйвере сам придумаешь под конкретную платформу.
513 1856271
>>855937
Виндовых юзеров на хабре видел с лестными отзывами. Лично только маководов знаю, им вроде тоже норм. Под никсами наверное проще VSCode с плагинами использовать. Тем более там норм дебаг появился и локально и удалённо и в контейнере. Анализаторы не пробовал, но тоже должны работать.
Надеюсь что с завозом telemetry и прочих ништяков, которые дотнет по умолчанию эммитит, появятся всякие опен сорс тулзяки для анализа перформанса и многопоточности.
514 1856278
>>856203
>>856175
>>856166
Занят был + чуть раскидал код
https://github.com/mixa3607/BfInterpreter
515 1856280
>>856278
ну и сделал что бы она умела исполнять то для чего создавалась, не рисовать bad apple в консоли, а исполнять брэйнфак
517 1856293
>>856278
3 проекта? 3 проекта, Карл! Хорошо хоть .net core
518 1856295
>>856293
проще сразу распилить чем потом ебаться. Да и хоть 50. Если они по задачам разбиты то лучше уж 50 чем всё говно в одном проекте держать
519 1856300
>>856127

>Она под чем, что с глазами?


Увидела зонды.

Да просто глаза широко раскрыла.
Девушка молодая, кожа упругая, жира мало.
520 1856302
>>856300
Спидами упоролась
521 1856305
>>856295

>проще сразу распилить чем потом ебаться. Да и хоть 50. Если они по задачам разбиты то лучше уж 50 чем всё говно в одном проекте держать


Это называется ООП головного мозга. Можно разделить на каталоги, модули, файлы, но зачем на проекты? Получаются лишние файлы .csproj и прочая подобная шняга.
522 1856327
>>856305
Затем что тебе не нужно пересобирать все разом, если поменял только небольшую часть.
Ну, допустим у тебя библиотека для работы с устройствами разными. Там куча логики для работы с этими устройствами. При этом ты не хочешь заставлять пользователей для каждой новой версии качать всю программулину, которая может несколько гигов весить. Ты просто добавил в библиотеку классов поддержку нового устройства, затем при старте сама программулина проверяет есть ли новая версия библиотеки устройств и если есть - скачивает ее, кладет в папочку и все, у тебя новый функционал в приложении, а пользователь не все перекачивал, а только 1 библиотечку, которая и весит-то пару килобайт. Круто же.
Ну, по крайней мере я говорю в контексте того с чем имел дело на работе, у нас вот каждый месяц новые устройства появляются, а ПО - нужно чтобы читать из них данные. И мы как раз так вот делаем: есть проект для БД, который почти не меняется, есть проект с интерфейсами, который тоже почти не меняется, есть библиотека всяких штук для работы с устройствами, есть еще куча всяких наших библиотек, есть основное приложение, которое просто, по сути, берет из других проектов куски, запихивает их в контейнеры и знает как рисовать интерфейс. Если мы добавляем новый канал связи - просто добавляем в библиотеку новый класс, если новое устройство - описываем устройство, какие каналы связи оно использует, все это вот. Приложение само при старте все смотрит на наших серваках, если появилась новая библиотечка - скачивает и все работает как часы. Опять же, проще тестировать, нам не нужно все отдавать тестерам, у них там вообще роль основного приложения на консольной утилите, они положили dll'ку, запустили батник, там красненьким будет светиться если что-то не так, а если в интерфейсе что-то новое, опять же не нужно все библиотеки устройст - одна маленькая фейковая.
523 1856343
Python теперь будет разрабатываться Майкрософтом :)

https://techcrunch.com/2020/11/12/python-creator-guido-van-rossum-joins-microsoft/
524 1856353
>>856343

> Python теперь будет разрабатываться Майкрософтом :)


Нет, потому что Гвидо больше не пожизненный диктатор, в Python он теперь не принимает решений. Разве что наравне со всеми.
525 1856355
поясните за source generators
я так понимаю это как в андроидах генерятся классы биндинга, DI и так далее
но там для этого есть отдельная команда make project, которая только это и делает
а в студии где такое? или нужно билдить, ясень пень с ошибками, и это нормально?
526 1856363
>>856255
Спасибо за подробный ответ.
А есть готовые реализации вышеописанного?
Снимок экрана 2020-11-15 024900.png24 Кб, 1190x270
527 1856434
Народ, объясните нубу, откуда эти два вопроса перед 4кой?
528 1856440
>>856434
похоже что в шрифте консольки нет какого то символа. попробуй стереть и по новой напечатать. и ещё вместо запятой лучше отдельно 2 переменных объяви, юзай var, в интерполированных строках можно юзать bool?1:2 тобишь
var div = (x+y)%4 == 0;
Console.WriteLine($"bla bla is {div?"not ":""}divisible bla bla")
529 1856537
>>856440
Переписал, помогло, но так и не понял что с консолькой. При отладке строке result присваивалось нормальное значение без этих вопросов. Мб это как то связано с тем что это "the sum of бла, бла, бла" я копипастил из переводчика?
530 1856579
>>856434
Погоди. Почему у тебя студия белая и вообще тема белая? Ты что, не хакер?
531 1856597
>>856579
что ты имеешь против белой темы? у меня вот тоже белая
532 1856598
Как сделать так, чтобы программулина весь свой стейт запоминала с каким-то интервалос времени и при следующем старте - этот стейт использовала?
533 1856605
>>846539 (OP)
Как зациклить программу правильно? Если юзать беск. цикл то память сильно засоряется
534 1856606
>>856605
где связь между бесконечным циклом и памятью?
while(true) это просто цикл и нормальное средство зацикливания
хотя я больше предпочитаю
while(!ct.IsCancellationRequested)
или
while(lifetime)
535 1856622
>>856606

>while(!ct.IsCancellationRequested)


>или


>while(lifetime)


Что это?
536 1856633
>>856622
обычно это не имеет значения, но даже вечные циклы не вечные и умирают при остановке компонента или приложения. И неплохо бы обеспечить "graceful shutdown", а не бросить все "авось все будет ок"

ct это CancellationToken - ну с этим все понятно. Компонент выгружается, CancellationToken переходит в состояние "отменен" и цикл прерывается как надо

lifetime это концепция немного другого рода. Все живет в некотором lifetime и когда он умирает, то диспозится, отменяется, отписывается все, что было связано с этим lifetime
очень схож с CancellationToken, но семантика другая. CancellationToken это токен отмены операции, а lifetime представляет собой время жизни компонента и когда компонент умер - все связанное с ним должно быть очищено
537 1856636
>>856633
Понял, спасибо
538 1856706
>>856537
Да. Вместе с обычными симолами скопировались невидимые
539 1856708
>>856598
Сохраняй в файл, помле чего загружай, очевидно.
540 1856710
>>856605
Добавляй задержку между итерациями, используя Task.Delay.>>856633
Тз
541 1856747
>>856597
Говорю же нуб. Такая по дефолту ставилась, но думаю стоит всё-таки, раз уж я решил стать белым .net господином И съебать с завода где уже зашкварил свою трудовую одной жёлтой программой
542 1856906
>>856747
Как ты надоел. Сделай скрин. Без него помощи не жди.
543 1857134
Можно ли в асп коре с помощью тэг-хэлпера сформировать ссылку на элемент? Т.е. если мапится routename /anus/{foo}/
asp-route="routename" asp-route-foo="jopa" asp-???="bar"
то я хочу получить
/anus/jopa/#bar
544 1857140
>>857134
Блять. asp-fragment прямо перед глазами же. Пойду спать.
545 1857427
Смторите какая хреновина.
Допустим у меня есть класс, который запихивается в контейнер как синглтон. Допустим у него одна единственная задача - раз в 10 минут печатать в файлик текущее время и есть два метода: ОстановитьПечать - ЗапуститьПечать. Так вот, если я просто в стартапе пишу что вот этот вот класс - синглтон, то чтобы он начал своей фигней заниматься - я должен хотя бы раз использовать его в другом месте, например я должен в контроллер его передать в конструкторе. Да, я могу при билде хоста - достать его и все будет работать, но я вот такая бака, хочу чтобы метод Main выглядил вот так вот:

await CreateHost(args).RunAsync();

красивей же, чем если бы я после того как создал билдера - доставал из него нужный мне класс просто чтобы он запустился.
Так вот, пока что я вот такой вот костыль придумал - делаю класс ServiceLauncher, который имплементирует IHostedService, и в него пихаю все что должно вот так вот запускаться. Но мне кажется что это какой-то жуткий костыль. Имплементировать интерфейс IHostedService для моих сервисов я не хочу, потому что ну серьезно много лишнего получается в классе.
Есть ли какая-то штуковина в этом самом неткоре, чтобы просто явно указать, что инстанс синглтона вот этого вот класса - должен создаваться сразу, а не ждать пока его вызовут?
546 1857451
>>857427
services.AddSingleton<MyService>(new MyService());
Всё, твой сервис активирован, инжектить в конструктор для того чтобы делать что-то начал не надо.
547 1857473
>>847524
О джаве еще кто-то что-то слышал благодаря мобильной разработке. А так это тырпрайзное легаси говно в стадии кобола (какая-то своя атмосфера, которая никому нафиг не нужна и вообще дерьмо динозавра).

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

Го - это звездец, тот случай когда пранк вышел из под контроля.
Если чекнуть графики, то видно что он толком не выстрелил и висит в стагнации спустя 10 лет.

Шарп, конечно, вендор-лок говно, но хоть не выглядит как язык на отъябись.
548 1857650
>>857473

>Шарп, конечно, вендор-лок говно



Уже .Net 5 вышел, а у тебя всё еще вендор-лок. Майкрософт признали свои ошибки, вложились в опенсорс и нацелились на кроссплатформу.
549 1857783
>>857650
Я написал что-то про кроссплатформенность?
550 1857789
>>857783
А что ты под вендор лок подразумеваешь?
551 1857792
>>857789
Разумеется монополия по либам и решениям.
552 1857796
>>857792
Только не надо сейчас бежать и нести сомнительные либы с 1,5 разработчиком, которые нехера никто юзает.
553 1857799
>>857792
а где монополия? в чем?
554 1857808
>>857792

>всё в опенсоре, сотни контрибьютеров, можешь лично внести изменения в ядро, если хватает навыков. Каким-то очень популярным, но слабо оптимизированным решениям майки придумывают аналоги, которые разрабатывают за своё счёт (Text.Json как пример)


>Разумеется монополия по либам и решениям.



Ясно. Очередной вскукарек дилетанта.
555 1857855
>>857808
Альтернатива ASP уже есть?
556 1857856
>>857799
монополия по либам и решениям
557 1857869
>>857855
начнём с того что asp это платформа, там куча разных либ, от разных серверов до тонн прослоек. И собственно зачем что то другое если вот оно уже есть, опенсорсное, рабочее, во что вбивают бабки. Можешь форкнуть и пилить
558 1857870
>>857855
всегда была. ServiceStack например и оно не одно.
и никто не запрещает написать свое

>монополия по либам и решениям


по либам так вообще смешно
в упор не вижу никакой монополии. есть И ЛИБЫ от майков среди многих не майковских. Либ жопой ешь.

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

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

ну правда с DI немного приврал. это они сделали немного жопу что вкинули не контракт, а реализацию DI.
559 1857880
>>857855
Никто не запрещает взять и написать, но мало кому нужно.
Вообще от самих майков есть несколько опций под aspnet - mvc, api, razor pages, blazor, F# aspnet (он малость отличается). Для веб сервака - HTTP.sys https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers

Ещё есть сторонние веб серверы (не IIS и не Kestrel): https://suave.io
Есть веб фреймворки: https://github.com/giraffe-fsharp/Giraffe

Наверняка ещё есть полно всякого невзлетевшего софта и возможно даже широкоиспользуемого, но оно просто не на слуху.
560 1857893
Как мы боремся с вендор локом в голове

>>857869
Ненужно
>>857870
Пиши свое
>>857880
Напиши свое, но ненужно
561 1857903
>>857893
сори чел но ты шиз, реплаиш те посты в которых тебе же и пишут альтернативы. иди луше фронт попиши может отпустит, ну или нейроночку на питоне потренеруй на распознавание говна, только свою фотку для проверки не скармливай а то боюсь результат тебя расстроит
562 1857904
>>857893

>Пиши свое


>НИХАЧУНИЧЕГОСЛЫШАТЬ


>(заткнув уши) ла-ла-ла-ла


ясно все с тобой.

монопольную либу не подскажешь? ну которая или только у майков или никак ничем не заменяется
15761630191970.jpg20 Кб, 301x395
563 1857905
>>846539 (OP)
Подскажите ньюфаговский вопрос - как в WPF'e можно прибиндиться к свойству кастомного класса?
Суть: есть один класс, назовем его YobaTimer, в котором есть условный Tick(), который обновляет свойство-строку ElapsedTime. Как его прибиндить к TextBlock на View.xaml ? OnPropertyChanged поставил, вся хуйня - вначале пытался прибиндить к свойству в View.xaml.cs , значение инитится на вьюхе - но понятное дело не обновляется т.к. Tick() в классе таймера, пытался прибиндить дата контекст в xaml'e по разному и пытался в конструкторе View.xaml.cs написать DataContext = YobaTimer, но значения даже не инитится на вью. Причем в выводе отладки иногда выдает ошибку биндинга, а иногда нет(?!), хотя я месседжбоксами чекал и строка точно обновляется (да, свойство).
На MVVM мне похуй, мне лишь бы работало, хотя я бы рад был послушать как это правильнее сделать.
564 1857945
>>857855
Т. е. существования ASP как-то мешает разработке других ферймворков? Где вендор лок то, долбоебина?
565 1858034
>>857945
Кококо у нас нет вендер лока, хочешь пиши на ASP, хочешь не пиши вообще, полная свобода.как же я проигрываю с вас аутистов
566 1858052
>>858034
ой дурак
567 1858094
>>858034
В JS вообще никаких фреймворков стандартных нет. Значит у них вендор лок на отсутствии фреймворков? Это такой троллинг тупостью или у тебя просто умственная отсталость?
568 1858373
В трёхуровневой архитектуре (UI, BLL, DAL), модели/entities должны быть в DAL или в BLL?
569 1858388
>>857905

>DataContext = YobaTimer


WPF видит инстансы, а не типы
570 1858419
Имеется asp.net core приложение и база mysql. При добавлении данных, содержащих кириллические символы, из приложения в базу (используя орм), в базе они заменяются знаком вопроса. Если в базу делать непосредственно INSERT с кириллицей, то все символы нормально сохраняет, но есил из приложения, то знаки вопроса. Почему это происходит и как это можно исправить?
571 1858462
>>858373
Либо отдельно от всех в Models, либо в DAL. В BLL должны быть DTO которые будут содержать только те данные которые должен получать/отправлять пользователь, если работать напрямую с моделями, то это чревато такими уязвимостями как оверпостинг.
572 1858468
>>858419
В строку подключения добавь charset=utf8
573 1858561
Че там за хуйню понадабовляли в шарп 9 и нет 5?
image.png21 Кб, 998x110
574 1858562
Пора бы шапку исправить.
575 1858716
>>858562
Я так понял перекат может кто угодно сделать, а значит и шапку может кто угодно запилить. Копия с pastebin в самой шапке, можно брать и править.
576 1858732
>>858716
Всё правильно, бери и делай перекат.
577 1858734
>>858716
как показала жизнь кто угодно не может
для этого нужно обладать особым навыком "не влом это сделать"
578 1858813
>>858561
На оф сайте есть ченджлог, прям как в твоей дотке с очередным патчем, можешь прочитать если интересно.
579 1858814
>>858562
Разрешаю. Исправляй.
580 1858975
>>858734
Я до последнего переката думал для него нужны какие-то особые права.
581 1859034
>>858094
ну технически он прав. с асп.нет примерно та же история что и с говно-гитом. Вроде бы альтернативы и есть (и даже лучше чем это говно), но попробуй еще устройся на работу, где используется не гит.
и если не любишь гит и асп.нет (хотя его не любить не за что) - то проблема однака
582 1859041
>>859034
Блять, так при чём здесь разработчик языка и .Net? Почему вы такие тупые? Почему вы думаете, что разработчика языка и фреймворка должны твои заебы волновать?
При этом это фреймворк не от смузихлебов, которые забьют на его поддержку по воле левой пятки, а от крутой компании, которая тратит свои ресурсы на развитие и поддержку. Наоборот радоваться должны, но долбоебы почему-то горят. При этом горят не из-за отсутствия альтернатив от смузихлебов, примеры которых дали выше, а от того что, внимание, на работу не устроиться зная говно которым смузихлеб накормил!
583 1859050
>>859041

>так при чём здесь разработчик языка и .Net?


>Почему вы думаете, что разработчика языка и фреймворка


А не причем.
Как я вижу он просто описал текущее положение дел.
А про "клятый мелкософт ууу" - оппоненты сами придумали
584 1859202
>>858388
Я пытался и объект ему скормить.
585 1859209
>>858813
Знаю, но это надо сидеть и думать. А на дваче можно задать вопрос и не думая получить ответ
586 1859210
>>859209

> и не думая


У нас таких не любят. Троллят, деанонят и срут под двери.
587 1859217
>>859209
Ну так и задавай вопрос нормально, а так говна тебе за шиворот.
588 1859218
>>859217
Что нового в C# 9.0?
589 1859219
>>859210
Ну, это совсем долбоёбов деанонят
590 1859221
>>859218
Нет уж, ты упустил эту возможность, теперь только чейнджлог.
591 1859223
>>859221

>чейнджлог


Ну пожалуйста(
592 1859225
>>859223
Извини, братишка, мне впадлу.
593 1859256
>>859202
биндиг берет за отправную точку объект, что у него в датаконтекст, если не указан source - иначе берет за основу его.

В крайнем случае сделай в code-behind установку свойства вьюхи явно раз уж биндинг никак
594 1859282
Это правда, что со знанием чистых С#, SQL, JS ты никому нахрен не нужен, а Васян со знанием ORM и какого-нибудь CMS довольно востребован?
Знакомый, зарабатывающий на фрилансе, посоветовал мне выбросить нахрен все учебники и купить курс с Udemy, дескать ему хватило, чтобы начать работать.
Поискал там курсы на русском языке по .Net Core, но практически ниухя нет.
595 1859289
>>859282

>Поискал там курсы на русском языке


Без английского ты точно никому нахрен не нужен.
596 1859293
>>859282
Да, нужны не столько языки, сколько технологии с ними связанные. Но и выбрасывать учебники не стоит - просто потрать еще несколько недель на EF, ASP.NET, и фронт какой (jquery + ангуляр/реакт/вью).
>>859289
Этому поддакиваю.
597 1859295
>>859293
Еще добавлю: в работе фреймоворки куда важнее знать, но с большой долей вероятности на собесе на начальную позицию тебя будут про GC и джойны всякие спрашивать.
598 1859389
Аноны такой вопрос. Сегодня у меня был собес, вроде всё прошло нормально. Но теперь я запарился из-за одного вопроса, который был на собеседовании. Вроде ответил правильно но есть СОМНЕНИЯ. Такой вопрос, как будут размещаться данные объекта значимого типа, если он является полем ссылочного? Вроде как они должны размещаться в хипе, внутри памяти, выделенной под ссылочный тип. Что-то особо не могу найти разбора этого варианта ни у Рихтера, ни ещё где-нибудь в сети. Потыкал с sharplab.io, попалил в IL и ASM. Вроде я прав. Но всё ещё СОМНЕВАЮСЬ.
599 1859412
>>859218
Рекорды, init свойства, улучшения паттерн матчинга, новый синтаксис вызова конструктора для самых одарённых и ковариантность возвращаемого типа для реализаций интерфейса.
600 1859421
>>859389
Всё что находится внутри ссылочного типа хранится в куче, если это значимый тип, то это значение этого типа, если это ссылочный тип, то это ссылка на объект данного типа.
601 1859424
>>859389

>Instance variables for a value type are stored in the same context as the variable that declares the value type. The memory slot for the instance effectively contains the slots for each field within the instance. That means (given the previous two points) that a struct variable declared within a method will always be on the stack, whereas a struct variable which is an instance field of a class will be on the heap.


https://web.archive.org/web/20160429155135/http://www.yoda.arachsys.com/csharp/memory.html
602 1859434
>>859412
Сказал бы коротко - " ничего полезного"
603 1859885
Какой IoC контейнер сейчас стандарт, Ninject, Autofac, Microsoft.Extensions.DependencyInjection?
604 1859886
>>859282
Зависит же.

Во всякие гугло-майкрософты только понимание основ и концептов требуют.

В нормальных конторах на джуна спрашивают азы, задают простые задачки и смотрят как ты мыслишь во время их решения, даже пофиг, если ты их не решил или решил неправильно. Главное чтобы логически мыслил и умел полученную от собеседующих информацию применять (они будут подсказывать, если начнёшь плавать). На сеньора будут просить набросать дизайн небольшой системы и потом обсудить уязвимости, пути улучшения и прочее. И могут задачи по коду из существующих проектов подкинуть. Опять же смысл проверить как ты будешь задачу решать, какие вопросы спрашивать, а не выудить из тебя какого-то коня в вакууме. Решение задач на собеседовании в нормальных конторах должно выглядеть так, как будет выглядеть настоящий рабочий процесс. Типа Колян, у нас тут запара, надо сообразить как задачу решить. Собираемся вместе и обсуждаем. Ты их должен в процесс решения вовлекать.

А есть ещё говно конторы. Там будут просить описать параметр, который надо передать в какую-то функцию, чтобы она что-то сделала. Или 10 вариантов написания синглтона. Или в какой версии есть вот такой вот флаг. И прочее зазубривание конкретной версии конкретного фреймворка.

Вообще как только начинают давить на запоминание, а не на мышление - это сразу красный флаг.
605 1859887
>>859885
Microsoft.Extensions.DependencyInjection
Он самый быстрый по всем недавиним бенчмаркам, которые недавно видел. А это важно, потому что оно по всему проекты практически на каждый вызов используется. И он вшит по умолчанию. Не надо никаких доп библиотек добавлять. Если тебе не хватает его возможностей, то у тебя или очень экзотический проект, или твоя архитектура - говно.
606 1859896
>>859887
А для WPF проектов тоже его стоит использовать?
607 1859901
>>859282

>Поискал там курсы на русском языке по .Net Core, но практически ниухя нет.


Зачем? Есть 2 книги очень хорошие.

https://www.ozon.ru/context/detail/id/145871271/
https://www.ozon.ru/context/detail/id/148161571/

Как найти в сети чтобы скачать надеюсь объяснять не надо. Есть более новые издания, но они на английском. Если понадобится найдешь. Еще у .NET отличная документация, и почти вся на русском.
image.png119 Кб, 987x279
608 1859915
Аноны, что вы думаете об этом, меня не засмеют в приличном обществе программистов за пикрил?
609 1859918
>>859915
В приличном обществе не принято смеяться над такими как ты.
610 1859919
>>859915
Но вообще похоже на троллинг, чем на правду. Не верю, что человек может быть настолько тупым и сначала написать такое, а потом еще и выложить на всеобщее обозрение.
611 1859920
>>859918
>>859919
Как фиксить?
612 1859921
>>859920
Твоё говнокод можно заменить switch конструкцией в которой будут два конкретных кейса и один по умолчанию (default).
613 1859922
>>859921
Первый раз слышу о таком, можешь скинуть пример
614 1859924
>>859922
Ну так ты свой говнокод выложи не в виде скриншота или ты предлагаешь мне переписывать?
615 1859925
>>859924
Виноват, вот

Внимание открывайте спойлер только на свой страх и риск, слабонервным смотреть не рекомендуется!
if (file.type == ".png" || file.type == ".jpg" || file.type == ".mp4" || file.type == ".webm")
{
string imageBase64 = "";
try
{
imageBase64 = PagesMethods.Utils.GetBase64Image(file.id);
}
catch (Exception ex)
{
imageBase64 = "i";
}
clientIamge.ID = "clientIamge_" + file.id; clientIamge.CssClass = "client_image"; clientIamge.Attributes.Add("src", "data:image/png;base64," + imageBase64); createDiv.Controls.Add(clientIamge);
}
else if (file.type == ".txt") { clientIamge.ImageUrl = "imgs/" + "txt.svg"; clientIamge.CssClass = "client_image"; createDiv.Controls.Add(clientIamge); }
else if (file.type == ".rar") { clientIamge.ImageUrl = "imgs/" + "rar.svg"; clientIamge.CssClass = "client_image"; createDiv.Controls.Add(clientIamge); }
else if (file.type == ".zip") { clientIamge.ImageUrl = "imgs/" + "zip.svg"; clientIamge.CssClass = "client_image"; createDiv.Controls.Add(clientIamge); }
else if (file.type == ".zip") { clientIamge.ImageUrl = "imgs/" + "zip.svg"; clientIamge.CssClass = "client_image"; createDiv.Controls.Add(clientIamge); }
else if (file.type == ".exe") { clientIamge.ImageUrl = "imgs/" + "exe.svg"; clientIamge.CssClass = "client_image"; createDiv.Controls.Add(clientIamge); }
else if (file.type == ".iso") { clientIamge.ImageUrl = "imgs/" + "iso.svg"; clientIamge.CssClass = "client_image"; createDiv.Controls.Add(clientIamge); }
else if (file.type == ".pdf") { clientIamge.ImageUrl = "imgs/" + "pdf.svg"; clientIamge.CssClass = "client_image"; createDiv.Controls.Add(clientIamge); }
else { clientIamge.ImageUrl = "imgs/" + "other.svg"; clientIamge.CssClass = "client_image"; createDiv.Controls.Add(clientIamge); }
29.jpg65 Кб, 591x502
616 1859928
617 1859929
>>859928
а можешь тоже кодом?
618 1859931
>>859929
Переписывай, тебе на пользу пойдёт.
619 1859934
>>859929

>а можешь тоже кодом?


бляяядь
620 1859935
>>859931
Работает, сохранил, большое спасибо!
621 1860020
>>859885

>Какой IoC контейнер сейчас стандарт


это исключительно фломастеры. нет тут стандарта

>>859887

>Он самый быстрый по всем недавиним бенчмаркам


одно можно сказать - он самый убогий по фичам и не самый быстрый если чо.
и единственная его "заслуга" - его вшили в асп.нет, что и не заменить на что-то другое.

>>859896

>А для WPF проектов тоже его стоит использовать


фломастеры же.
622 1860026
>>859885
от майков самый распространённый. у автофака ахуенная дока и оч полезная для меня фича была с именоваными скоупами, за нинджект не скажу но только упомяну что сайт не понравился и даже доку не смог загрузить когда я судорожно искал ioc
623 1860032
>>860026

>от майков самый распространённый


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

как и с гит - не лучший продукт стал основным потому что гитхаб
624 1860040
>>858468
Благодарствую, правда, добавил в итоге то, что в бд было - utf8mb4
625 1860138
народ, а кто из вас работает на юнити? именно РАБОТАЕТ, а не пет проекты делает. Как вообще жизнь в геймдеве? Я просто работаю бэкэндером и так заебался жисоны гонять. Расскажите плес как там игроделам живется
626 1860186
>>860138

>Я просто работаю бэкэндером и так заебался жисоны гонять.


идеальную работу (бэкенд без фронтенда да без гуистроения) хочешь променять на.... мазохист что ле
627 1860201
>>860186
так я не ебу чем они занимаются
как по мне, так пилить игровые механики - прикольно
насколько они ебутся в UI - хз даже, вот и спрашиваю
628 1860214
>>860201
ничего прикольного нет. я пробовал. помимо самого шарпа нужно знать еще кучу всякой посторонней херни по юнити (не игровые механики, а именно выразить уи в юнити) и иметь терпение для ебли со всей этой поеботой (там моно был когда я пробовал, но уверен на 99% что так и осталось)

одно дело если нет других вакансий или огромная разница в зряплате.
но если сидишь в глубоком бэкенде (а я так понял ты пишешь чисто апи) - то лучше там и сидеть
629 1860233
>>860138
Игрострой сам по себе ещё более перенасыщенный рынок, чем энтерпрайз, так что делать игры есть смысл только в свободное от основной работы время.
630 1860235
>>860233
>>860214
что ж, спасибо, двач)
631 1860261
>>846539 (OP)
Сап.
У меня многопоточка, поэтому есть некоторые проблемы с завершением программы.
У меня есть таймер, после того как вся работа завершена, я хочу чтобы таймер закончился, он у меня в другом потоке. Как мне после завершения последнего метода остановить программу не закрывая консольку, то есть Environment.Exit(0); не подойдёт?
632 1860264
>>860261
в современных шарпах треды это зло, юзай таски, но это лирическое отступление. По делу тебе нужно юзать CancellationToken.
создаёшь cancellation token source
передаёшь токен из cts в тред/таску
в конце программы вызываешь cancel у cts
в таске/треде иногда чекаешь что токен не IsCancellationRequested, если запрошена отмена то заканчиваешь работу треда/таски
633 1860266
>>860264
Спс
634 1860269
>>860264
ну "не иногда чекаешь", а Register своего хендлера, который просто остановит таймер и все.
16057200411840.jpg9 Кб, 225x225
635 1860272
Подскажите как совладать с энтити и датагридом на винформах.
У меня есть в бд колонка (поле) с шифрованными строками, перед загрузкой в датагрид я дешифрую эту колонку циклом, потом при попытке изменить таблицу и внести сохранения энтитя подхвачивает дешифрованные ячейки (это при том блять что я создаю новый объект ToList()), делает изменения и соответственно пидорасит базу.
Как в датагриде можно пройтись циклом по непосредственно значениям в колонке?
636 1860295
Поясните за .NET, зачем он такой огромный нужен. Насколько я понимаю, аналогичной по размеру платформы больше нет, даже экосистема джавы скромнее, хотя кровавого энтерплайза на ней написано явно больше. При этом в вакансиях шарпистов начиная с мидла почти везде нужно знание CLR, .NET, ASP и прочего. Все это еще довольно сильно помазано виндой и изучением её внутренностей и утилит, и хоть и намечается кроссплатформенность, но чёто мне непонятно как это будет реализовано.

1) Такая большая платформа - не оверкилл?
2) Как много сил занимает изучение платформы и как много - непосредственно ЯП?
3) Бывает ли хайлоад на шарпе + винде? А торчащий наружу ASP?

не зелёный, честно интересуюсь
637 1860299
>>860295

> зачем он такой огромный нужен


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

>намечается кроссплатформенность


забудь про framework он уже года как 4 умер. Core полностью кроссплатформа. со всеми проектами с какими имел дело что на коре всё хоститься под линью

> помазано виндой и изучением её внутренностей и утилит


это каких если не секрет? я к примеру из виндового только vs юзаю, всё остальное под wsl'ом
638 1860303
>>860295

>Как много сил занимает изучение платформы


слишком расплывчато. Ты собираешься драйвера не сетевухи писать или json в браузер гонять, а может что то с пиздатым гуем по всем канонам mvvm?

>как много - непосредственно ЯП?


яп как всегда самая лёгкая часть, если в минимальной комплектации то за вечер т.к. большинство языков похожи, если хочешь прям сдохнуть от сахарного диабета то эт на долго.
639 1860314
>>860299

> забудь про framework он уже года как 4 умер. Core полностью кроссплатформа. со всеми проектами с какими имел дело что на коре всё хоститься под линью


Это похоже на ответ на мой вопрос, я не знал про отличие Core от Framework

>>860303

> слишком расплывчато. Ты собираешься драйвера не сетевухи писать или json в браузер гонять, а может что то с пиздатым гуем по всем канонам mvvm?


Выше написали, я не знал про Core и думал что весь фреймворм надо учить, чтобы hello world на шарпе в докере запустить

Спасибо анон
640 1860357
>>860032
Ты заебал уже в каждом комменте гит упоминать. Сходи к психологу, чтоли.
641 1860361
>>860357
сам сходи, раз в каждом моем коменте видишь упоминание (которого там нет)
я упомянул только там, где напрашивалась подходящая аналогия
642 1860379
>>860295

>Бывает ли хайлоад на шарпе + винде


ну стековерфлоу до перехода на коре небось на винде был
643 1860383
>>860295

>3) Бывает ли хайлоад на шарпе + винде? А торчащий наружу ASP?



Хайлоад и на петухоне бывает, а он намного медленнее .Net'a
644 1860534
>>860314

>весь фреймворм надо учить, чтобы hello world на шарпе в докере запустить



Консолька
dotnet new console -o myApp
cd myApp
dotnet run


Веб проект нужно
dotnet new webApp -o myWebApp --no-https
cd myWebApp
dotnet run
http://localhost:5000


Работает и на винде и на маке и на линухе.

Чтобы в докере запустить, на тебе Dockerfile

FROM mcr.microsoft.com/dotnet/sdk
WORKDIR /app
RUN dotnet new webApp --no-https
ENTRYPOINT ["dotnet", "run"]


Потом делаешь
docker build . -t my-app:latest
docker run -p 5000:5000 --name my-app my-app
645 1860642
Какой MVVM фреймворк для WPF сейчас самый популярный?
Screenshot1.png6 Кб, 298x238
646 1860724
Три разных цвета для одного типа. Айм триггерд.
647 1860845
>>860642
на вкус и цвет же.
648 1860846
>>860724
три разных цвета для трех разных ситуаций.
649 1860963
Тупой вопрос.
Для чего нужны разные исключения, если можно везде использовать Exception? Или это увеличивает производительность программы?
650 1860974
>>860963
а как ты их будешь различать?
ну есть у тебя функция ReadDataFromFile и по логике как минимум могут быть 2 типа проблем: невозможно прочитать файл, невалидная инфа в нём. триггернёшь ты 2 исключения Exception() и как ты в коде определишь что пошло не так? просто плюнешь в лицо юзеру "произошла ошибка номер хуй"?
изображение.png6 Кб, 770x107
651 1860980
>>860974
Но ведь оно вывело, в чем ошибка.
652 1860985
>>860980
допустим файла нет и в этом случае тебе нужно загрузить дефолт настройки, но если файл есть и он не валидный то нужно сообщить юзеру. что будешь делать?

ну или юзер запрашивает с сайта какие то данные, у тебя сервис который имеет метод GetSecureData он может вызвать исключения по типу не авторизован юзер, не имеет прав, ошибка получения данных. в первом случае нужно редиректнуть на логин страницу, во втором вернуть что не имеет прав, в 3м отправить "непредвиденная ошибка" и отправить мыло админу что на бэке пиздец
653 1861016
>>860985
Теперь понял. Спасибо.
654 1861074
Разрешите нубский вопрос: вот я, создал хелловорлд, на дотнеткоре 3.1., консольное приложение. Мне на выходе выдаёт ДВА файла. helloworld.exe и helloworld.dll мне бы хотелось, чтобы был один экзешник. Как зделоть? гугл предлагает упаковывать весь дотнет в один файл. Мне это слишком.
655 1861103
>>861074
ты не понял. exe нужен ТОЛЬКО что бы ты мог красиво жмакнуть даблклик по иконке и прога запустилась. dll же нужно запускать через dotnet xxx.dll. то есть ты можешь спокойно удалить exe.
упаковка в один файл нужна когда у тебя ещё другие сборки подключены.
и к примеру при сборке под таргет в виде линухи у тебя будет за место xxx.exe файл xxx который служит для того же. что бы можно было запускать именно файл а не dotnet xxx.dll
656 1861105
>>861074
ещё вспомнил. если велючиш паковку в один файл то туда поместиться ВЕСЬ рантайм. Ты сожешь принести этот экзешник даже туда где нет кора и запустить, при этом при первом запуске по факту будет распаковка того что внутри во временную папку и запуск уже оттуда
657 1861107
>>861105
включишь
поместится
*сможешь
пиздос, аж грустно стало
658 1861109
>>861107
ещё и двач затроллил с *
659 1861114
>>861074
il merge что ли? Когда дохрена длл в папке программы получается
660 1861115
>>861114

>il merge


он же только для фреймворка. под кор есть строенная фича dotnet publish -r <target> -p:PublishSingleFile=true
661 1861119
>>861115

>он же только для фреймворка


с чего вдруг

>dotnet publish -r <target> -p:PublishSingleFile=true


не эквивалент. и вообще другое это
662 1861138
>>860846
Не должно быть такого.
663 1861142
>>861105

>при этом при первом запуске по факту будет распаковка того что внутри во временную папку и запуск уже оттуда


Так было только в коре, а в .NET 5 уже ничего не распаковывается, сразу запускается экзешник.
664 1861153
>>861138
Я без понятия как должно быть. Я юзаю тему из студии 2017 а не эту цветастую галиматью из 2019
665 1861178
>>861103
Спасибо. Теперь понял.
666 1861184
>>861178
Понять-то понял. Но у меня задумана консольная утилита:

> helloworld.exe -p 300 -m 500 -f C:\temp\hellofile.txt


И чо мне вместо этого писать

> dotnet helloworld.dll -p 300 -m 500 -f C:\temp\hellofile.txt


???
667 1861223
>>861184
можешь так, можешь как и хотел запаковать в один экзешник, но если серьёзно то я бы просто забил, ну будет там несколько файлов и будет никто от такого не умирал
668 1861258
>>861223

> ну будет там несколько файлов и будет никто от такого не умирал


Перфекционизм не даёт спокойно работать. Буду с этим бороться.
669 1861333
>>861258
да. с перфекционизмом нужно бороться.
будь сильнее его - создай на каждый класс по длл и не мержи их
670 1861345
Привет аноны.
Нужно сделать курсовую, суть токова: Фотоальбом "типа микро Инстаграма. Авторизация, Лайки, комментарии, личный кабинет, проект в Visual Studio на c# с базой данных MS SQL Server.
Подскажите какие конкретно материалы изучать, чтобы суметь это сделать в кратчайшие сроки?
И можно ли где-то найти подобный опенсурс проект? В гугле ничего толкового найти не могу.
671 1861350
>>861345

> Подскажите какие конкретно материалы изучать, чтобы суметь это сделать в кратчайшие сроки?


> в кратчайшие сроки


Ну тут очевидно, надо пару вечеров посвятить краткому видеокурсу хача на ютубе.
Затем на мутанит.
Даю ссылку сразу на 3й урок (в первых много воды, потом посмотришь). Ссылка с плейлистом. Открывай в отдельной вкладке и хуячь под печеньки и чаёк.
https://www.youtube.com/watch?v=MZ0og1DNcCg&list=PL05SB3rBbUsraqiEUeS70RKhVAu97nGeb&index=3
672 1861368
>>861345
ASP NET + Enitity Framework для бэка
HTML + CSS + Angular для фронта
673 1861369
>>861345
По простому так: хостить будешь в облаке используя PaaS с лоадбалансингом, дудос-защитой и т.д., бекенд делаешь на .NET 5 микросервисами, публичный апи на Nancy, запросы посылаешь через gRPC, события через какую очередь (rabbitMQ, можно использовать PUB/SUB специфический для облачного провайдера). Запросы в БД делай через Dapper для скорости, к БД лучше добавить еще что-то масштабируемое-нереляционное (elasticsearch например, если не привязываться к провайдеру). Фронт - vue.js со статическим хостингом. Аутентификацию на Identity Server. Вроде изи должно быть, я бы с тимой на 4 человека твой диплом за пол года сделал бы!
По материалам - пройди курсы облачного провайдера, любую топ книгу по микросервисам на дотнет, документации MSDN для освоения языка и ASP.NET достаточно, все остальные технологии тоже по документации.
674 1861373
>>861369
Назвать курсач можешь minigram Enterprise Edition
675 1861376
>>861369
Nancy??????
676 1861377
>>861376
Отличный минималистичный фреймворк со стабильной кодовой базой.
16057200411840.jpg9 Кб, 225x225
677 1861378
Кто нибудь знает опенсурс проект-пример где есть нахуяренный ивентами датагрид (желательно винформс?) который умеет добавлять/редактировать/удалять информацию например на кликах мышью по ячейках/строках.
678 1861380
>>861377
И мертвый
679 1861382
>>861378
Вот, например (винформсный не юзал, но судя по докам все это может)
https://docs.telerik.com/devtools/winforms/controls/gridview/overview
680 1861384
>>861382

>опенсурс проект-пример


Ебусь в глаза, простите.
681 1861387
>>861345
дополню этого >>861368, если на безопасность поебать и в приоритете скорость разработки то юзай odata для прослойки между ef и api
682 1861390
>>861378
бля, не думал перестать ебать труп?
683 1861392
>>861382
>>861384
Да у меня есть по сути готовый проект и код, но он весь на кнопках/текстбоксах. Но я боюсь что нужно будет предусмотреть овердохуя нюансов чтобы не обосраться.
684 1861396
>>861390
Мне нужно скрафтить по фасту на колене админскую часть для бд на шинду.
Объясни мне долбаебу нахуя мне нужен впф?
685 1861398
>>861396
В нем даже это проще
686 1861405
>>861387

>odata


И чем она разработку ускорит? Это только новый протокол учить и привыкать к нему.
687 1861407
>>861396
Делай на Electron + Angular. Интерфейс получится красивым и кроссплатформенным.
688 1861408
>>861407
И не дотнет
689 1861410
>>861408
ASP Net проект уже давно можно делать десктопным. Очень удобная штука, рекомендую. Шаблоны для ангуляра там встроенные (хоть и хуевые). Т. е. электрон нахуй не нужен, я забыл что .Net 5 кроссплатформенный.
690 1861411
>>861410
Блазор что ли?
image.png3 Кб, 203x95
691 1861444
>>861411
Как сделать из обычного списка вот это?
692 1861445
>>861444
тхемед цонтролс
693 1861454
>>861405
контроллеры настолько тонкие что ебанёшся. если что то понадобилось на фронте и для этой сущности уже есть Get метод то можно бэк вообще не трогать, и вообще на бэке достаточно в начале просто нагенерить однотипных crud контроллеров по шаблону и не меняя их уже пилить фронт
694 1861455
>>861445
это для компа? не для сайта?
695 1861456
>>861444
из обычного списка ГДЕ? что за технология?
696 1861457
>>861455
Для чего угодно. современные UI-фреймворки позволяют тебе описать абстрактную платформонезависимую view-модель, которая выводится совершенно одинаково хоть в шиндовс, хоть в андроид с иосом, хоть в линуксовый фреймбуфер.
697 1861652
Blazor client-side может использоваться как замена JS. А зачем нужен Blazor server-side? Какие задачи он выполняет, чем он лучше MVC/Razor pages?
698 1861760
Объясните дауну как работает DbContextPool.
Я просто только вчера о нем узнал, т.к. сеньеры не использовали в своих частях программы и я думал что вот эти вот пляски с передачей контекстов - то как нужно делать. Но чет прочитал и вроде правильнее было бы из пула просто брать. С другой стороны, если класс живет долго, то контекстов-то не хватить может, и тогда получается что либо контекст несколько классов используют, либо какие-то классы не получат свой и будут ждать, пока попользуется другой, а может быть тут пул - создаст новые контесты, когда кончатся эти. С этим вот и вопросы.
На данный момент я просто сделал класс: ContextFactory<TContext>, который создает новый контекст, но я думаю что это не самое оптимальное решение
699 1861767
>>861760
Всё уже за тебя сделали, не городи велосипеды, а смотри в документацию:

>https://docs.microsoft.com/en-us/ef/core/miscellaneous/context-pooling

700 1861786
>>861767
Я не городил бы, если бы в коде сеньера, который он сказал мне использовать как пример, не было так вот:

public class MySingleton{

//куча строк со свойствами
string _myConnectionString;

public MySingleton(IConfiguration config, ...)
{
__myConnectionString = config["MyContext"];
...
}
//много-много строк

DbContext GetContext()
{
var builder = new DbContextOptionsBuilder<MyContext>();
var options = builder.UseDbProviderName(_myConnectionString).Options;
return new DbContext(options);
}

Потому я и не стал умничать, все что сделал - декомпозировал этот синглтон на классы поменьше, чтобы он не делал все и сразу.
А вчера таки прочитал про пул контекстов и подумал что может быть вообще не нужен этот DbContextProvider, а правильнее было бы из пула доставать.
}
701 1861980
Делаю приложение на формах для виндуса. Не смог разобраться, как переходить между страницами, поэтому сделал это через изменение координат панелей, причем их всех расположил на одной странице и изменил размер. Им там уже тесно, так что, думаю, это какое-то варварство. Как правильно делать переход между страницами в небольших приложениях?
702 1861982
>>861980
Я имею в виду, панели в конструкторе на одной странице
703 1862123
У меня есть приложуха на винформс. Хочу портировать её на линукс. Но там винформса нет. Что делать? Как быть?
704 1862138
>>862123
Переписывать всё с использованием одного из фреймворков - Avalonia/Electron/Xamarin
705 1862208
>>861652
трафика меньше, отрисовка быстрее, надеемся также на меньшее потребление ресурсов в браузере, особенно после AOT
706 1862210
>>861786
Жесть. Надо на собеседовании начинать спрашивать на сколько кандидат любит креатифф. И всех крайне креативных лесом.
Это на сколько надо любит выдумывать и ненавидеть читать документацию!
707 1862211
>>862138
Uno ещё или ждать MAUI.
708 1862292
>>862123
WINE
I
N
E
709 1862295
Кто как код защищает?
скачал бота для одной игры, он на шарпе, кинул в дечдот, за секунды получид исходник. И за этот бот просят ежемесячнцю плату))
710 1862302
>>862295
1) обфускация
2) важный код присылается с сервера при запуске проги
711 1862304
>>862302
1. офбускация снимается тем же дечдот
2. динамическая компиляция? Это же тоже легко сломать
712 1862306
>>862304
плиз хакни DevXUnityUnpacker
713 1862309
>>861982
Кто-нибудь? Пожалуйста?
image.png113 Кб, 637x1105
714 1862322
>>862304

>дечдот


спойлер, вот его результат
715 1862324
>>861980
если ты про винФормы то просто забей и иди на wpf
716 1862331
>>862322
И что тут запуталось? Код читаемый. Если детдот не взял, то тулзы от codecracker возьмут. Но это если исходник надо, так то код читаем.
717 1862334
>>862210
А я-то тут при чем? Мне сказали: Смотри, Антоша, у меня есть код, делай как у меня, только под свои задачи. Я вообще С++'ером пришел устраиваться, но для С++'ера задач не было, вот и сказали: Вот тебе сайт майкрософта, вот тебе задачи, вот мой код как у нас принято делать, через неделю посмотрим что ты там сделал. Плотно изучать документацию банально нет времени, сейчас время появилось, я смотрю - вижу что оказывается есть пул соединений, который почему то старшие коллеги не используют ни в одном из проектов. Я и спрашиваю тут, есть ли реальные причины писать как они в коде выше, либо правильнее было бы таки использовать уже в моем коде - пул, а не делать такие вот странные решения.
718 1862347
>>862302
А вот говорят, есть некая "нативизация" которая компилирует байткод дотнета в нативный код целевой платформы. Якобы игры на юнити так релизятся - собираешь релиз, а он в нативный код собирается.
Есть ли аналогичное в обычном кодинге, не в геймдеве?
719 1862349
>>861980

> Как правильно делать переход между страницами в небольших приложениях?


Делаешь элемент-хостер для страниц, который должен быть унаследован от любого подходящего элемента-контейнера, способного держать в себе любой другой элемент, например, панель. Страницы загружаешь в коллекцию. При нажатии кнопок перехода, элемент-хостер убирает из потомков предыдущую страницу и достаёт из коллекции следующую.
720 1862350
>>862347
coreRT для кора, il2cpp в unity
721 1862352
>>862350
Только coreRT ещё сырое, в альфе
722 1862354
>>862352
если не спизжу то в прошлом году уже юзал и всё билдилось без проблем. но то что сам компилер билдится дохуя времени и нет никаких готовых бинарей печально
723 1862355
>>862350
Вангую, что нативизируются только стандартные библиотеки. При попытке юзать кучу пакетов из нугета эти тулзы покажут известный жест.
724 1862361
>>862355
нет, всё в натив из-за этого есть некоторые ограничения, к примеру нельзя динамически грузить dll'ки
725 1862366
>>862295
1. Обфускация.
2. Самые важные функции вызываются через сервер по udp в зашифрованном и сжатом виде для минимизации нагрузки и времени отклика.
726 1862401
>>862361
Ну дак! Я ж не могу точно знать, не грузят ли дллки те или иные пакеты из нугета. То-то и оно.
727 1862408
>>862401
на этапе компиляции всё уже известно как бы. только если они динамически подтягивают сборки откуда то что встречается крайне редко. Собственно я и не вижу способа собирать НАТИВНОЕ приложение и при этом иметь возможность исполнять прозрачно НЕ нативный код. Сказать честно я вообще не вижу смысла билдить шарпы в натив при условии что jit иногда бывает даже быстрее
728 1862426
>>862408

> не вижу смысла билдить шарпы в натив


>>862295

> Кто как код защищает?


> скачал бота для одной игры, он на шарпе, кинул в дечдот, за секунды получид исходник


Вроде как в этом был изначальный смысл и вопрос.

Я себе мышку наебнул только что. Промыл спиртом и теперь колёсико не работает. Неудобно пиздец. Держу в курсе. Ушёл спать.
729 1862458
Хм. Вот смотрите. Есть два кода(прикриплейд).
Какой из них лучше? Почему?

Вопрос не о том что делает код, а скорее о том, как лучше поступать в таких вот случаях, когда мы имеем некий цикл который выпонляется почти одинаково, но какая-то часть того как итерируется цикл - может отличаться. Можете предложить свой вариант для подобных случаев.
730 1862460
>>862458
Ясен хуй что второй вариант лучше, так как короче и намного читабельнее. Или я не понял вопрос?
731 1862461
>>862458
а теперь просто задай значениям в enum TimeUnit числа в секундах
public enum TimeUnit
{
Second = 1,
Minute = Second 60,
Hour = Minute
60,
Day = Hour * 24
}
и делай AddSeconds((int)timeUnit)
732 1862462
>>862461
ебучий двач сожрал звёздочки
733 1862465
>>862458
Ну ответ "какой лучше" очевиден.
Название для метода подобрано плохо. И очевидно, что код который будет вызывать эту функцию будет проводить проверку if (FindMissingTime.Count() > 0). Поэтому я бы назвал IsCorrectDateTimeSequence/IsCorrectTimeSequence и возвращал бы булево значение и перечисление интервалов которых не хватает для того чтобы перечисление отвечало нужному условию. Соответственно переменные были бы sequence, interval, start, end

Алсо, этого >>862461 двачую.
734 1862467
>>862460
Ну блин. А что делать если в команде люди, которые не знают что вот так вот можно?
>>862461
>>862465
Я же говорю, что не в этом суть. Хотя мне вот интересно пронумеровав значения в enum мы будем делать в случае если добавятся месяцы, годы. Ну, вот у нас есть теперь Month, он может быть 30 или 31 день или вообще 28, а в високосный - 29. Как ты тут извернешься-то?

А суть вопроса - как избежать копипастного кода, при этом не используя конструкций, которые могут быть непонятны людям из других языков. Вот допустим посадили на проект человека, который всю жизнь на си писал, он привык вообще малым числом штук обходиться и при этом он ну не хочет забивать себе голову шарпом, потому что на шарп его посадили исключительно из необходимости, доделает свою часть и вернется на си, ему второй вариант непонятен, он просит так не делать, конфликтов на пустом месте не хочется, писать вот такой код как на первом - тоже.
735 1862471
>>862467

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



Тут у тебя выбор либо деградировать вместе с этими людьми, либо заставлять этих людей развиваться. Ну и если деградируешь, то делай это максимально медленно, используй >>862461 этот вариант, а не объявление делегата с switch выражением. Перечисления то твои сишники знают?

>Ну, вот у нас есть теперь Month, он может быть 30 или 31 день или вообще 28, а в високосный - 29. Как ты тут извернешься-то?



Так какая разница? Месяц как интервал это 30 дней, переводишь 30 дней в секунды и прибавляешь их при помощи AddSeconds, этот метод уже учтет сколько месяцев в феврале.
736 1862476
>>862467

> ему второй вариант непонятен, он просит так не делать, конфликтов на пустом месте не хочется, писать вот такой код как на первом - тоже.


А что там непонятного? Интуитивно понятно же, что такой код делает. Разве что вместо Func<> я бы написал DateTime addTime(DateTime unit) ...
Локальные функции даже в си есть вроде только в гцц, но есть, а что делает switch expression даже дебил поймет.
737 1862514
>>862467
Просто вместо делегата и switch expression используй функцию (можно даже локальную) и обычный switch statement в ней, в чём проблема.
738 1862520
>>862514
Получится говно не лучше if else, лучше тогда if else портянку сложить в один цикл + switch case
739 1862555
Стаю на распутье между выбором во что погрузиться (C# или
java). Помогите определиться и понять почему C# будет плохим выбором?
740 1862618
>>862458
да блин какие еще енумы или фанки

определяете в своем switch (старого или нового вида) TimeSpan ака "шаг приращения"
и потом только dt.Add(step)
image.png21 Кб, 641x387
741 1862816
Насколько это говнокод?
laba2.cs
742 1862819
>>862816
Юзай TryParse
743 1862884
>>862816
последний catch говнокодище. зачем он вообще?
744 1862887
>>862884
чтобы не упало, очевидно же.
745 1862890
>>862887
так лучше пусть упадет
во первых он никогда не сработает
во вторых когда подобное срабатывет то ты получаешь "не сработало но нискажу пачиму"
746 1862898
>>862890
сработает, это во первых.
во вторых - можно потом вывести мессендж, что что-то пошло не так. Правда лучше было это сразу сделать, и отловить - что за эксепшен.
747 1862904
>>862898
ну если этот Matrix.Parse написан подобным образом то может и сработает
а во вторых ты можешь вывести мессадж что что то пошло не так. но никто никогда не узнает нигде (даже в логах) даже намека на то что не так

вот так же и фильтр сообщение на этом дваче написан
"не прошло и ебись угадывать что ему не так"
748 1862911
>>862904
нет, сработает, если передан list не инициализированный.
749 1862951
>>862911
ох уж эти староверы. по хорошему list никогда не должен быть быть нулл ибо не помечен как нулабле

но принимается.
но гасить такую ошибку вообще глупо
750 1862968
Каждый раз, когда я пытаюсь начать учить шарп, я попадаю на время, когда выходит очередная новая версия чего-то(языка, фреймворка, библиотеки, ещё чего-то) и мне становится некомфортно, что я буду учить язык по устаревшим дедовским материалам. Хочу учить новейшую версию, а по документации обычно ничего не понятно(с нулевым уровнем).
Учить хочу не для вката в профекссию, а просто для саморазвития.
Как избавиться от этого и наконец-то начать?
751 1862969
>>862968
Сходи к психологу/психиатру, таблеток попей.
752 1862977
>>862968
Подожди пока шарп загнется и учи самую современную версию сколько душе угодно. Пока в алгол можешь вкатываться.
753 1862989
>>862977
но ведь тогда он будет уже очень дряхлым стариком побивший мировой рекод по долгожительству
память то будет уже слаба
754 1862993
>>862989
Без надежды - что без одежды: и в теплую погоду замерзнешь.
image.png40 Кб, 809x562
755 1862998
>>862898
>>862890
Достойно мужики.

А если у меня вот такая структура программы, и я уберу крайний catch в функции, и буду ловить этот эксепшен уже здесь? Такое на практике нормально вообще, или лучше в каждой функции отдельно общий ловить и писать сообщение?
756 1863025
>>862998
она у тебя выдаст ошибку если ввести пробел и нажеть ентер.

с исключениями вообще все просто
они делятся на 2 вида - те, про которые ты знаешь и те. про которые не знаешь

ловить исключения нужно там, где знаешь как на них реагировать. Ловить на верхнем уровне то, что не ожидал и решать писать ли в лог или вывести юзеру вот так - тоже подходит под это правило.

придерживайся fail fast подхода - если что -то пошло не так как ожидалось, то лучше прервать выполнение текущей операции (или всей софтины)

В итоге ты отловишь все нежданчики и пропишешь на них действия. И это лучше чем catch который глушит ошибку и делает ситуацию неопределенной и ее не починить (нет контекста проблемы)
ctach c return false тоже иногда полезен, но только иногда, когда нужно TryXXX сделать и реально не волнует "почему не вышло"
757 1863035
>>862998
ну а по хорошему то на скрине неправильно
тебе нужно завести исключение типа InvalidCommandArgs и разбирая все эти command[0/1] и int parse его и кидать
потом его ловить и выводить пользователю
а ниже уже глобальный catch который логирует (пусть хоть прямо в консоль - для консольной утилиты это норм) и говорит что "полный пэ"
758 1863044
>>862816
Я бы как-то так сделал. Вот. Да. Хуй знает, говнокод или не.
759 1863054
>>863044
ну семантический говнокод немного есть
например AsEnumerable и AsReadonly
а насчет ошибок тут ведь "зависит"

это ж консольщина и этот Console.Writeline с 3 пика если не должен прервать операцию, а по факту лог операции, то очень даже валиден
760 1863060
>>862998
С такой вот структурой, я бы, на твоем месте, валидацию вынес до того как добавлять в список матриц. Зачем вообще методу что добавляет матрицу то там знать о том что может возникнуть исключение? Ты просто проводишь валидацию строки, затем, если строка валидна - создаешь матрицу без всяких плясок с исключениями и добавляешь эту матрицу в свой список, если невалидна - выводишь сообщение: "Невалидная строка. Идите нахуй".
Ну и команды бы вынес из простых строчек в отдельные классы, ну да ладно, это наверное для лабы не нужно.
761 1863087
>>862334
DbContext как правило менеджится рантаймом и передаётся через DI (Dependency Injection). Обычно его делают scoped, т.е. он живёт с момента создания и до самой отправки response клиенту. Но там по ситуации. Dispose тоже вручную делать не рекоммендуется (если конечно всё остальное тоже руками не делается), потому что есть шанс что ты его задиспозишь до того, как система решит что делать с объектом и может накидать ошибок.
Немного сложнее, когда у тебя один контекст к разным БД подцепляется, но там надо по ситуации смотреть. Судя по твоему коду этот класс коннектится всегда к одной и той же БД (если это и правда синглтон), поэтому городить и поддерживать свой собственный велосипед = грабить ресурсы у твоего работодателя. Да и иногда твои собственные, когда оно внезапно начнёт заваливаться и тебе придётся сидеть до поздна в офисе и разгребать этот трэш.
762 1863090
>>862347
Много чего уже и так близко к этому работает. К .NET 6 обещают ещё ближе:

We've seen a lot of comments on previous preview posts asking about the relationship between single file apps and ahead of time (AOT) compilation. AOT is a spectrum. The ready-to-run code that dotnet publish generates (when you set PublishReadyToRun to true) is an example of AOT. When you publish ready-to-run images, the build generates machine code for you, ahead of time, instead of the JIT doing it at runtime. Most people will likely accept this as a definition of AOT. However, many people mean something more specific when they say AOT.
They want a solution that has the following characteristics: extremely fast startup, no IL present (for size and obfuscation reasons), a JIT is (at most) optional, and binary size is as small as it can be. We use the term 'native AOT' to describe that point on the AOT spectrum. The single file solution we have in .NET 5.0 doesn't satisfy this definition of AOT. It's a big step forward, but it isn't 'native AOT'. We recently published a survey on Native AOT to get more feedback on that modality. We're looking through the results now and will include them in our 6.0 planning effort.
763 1863138
>>862555
троль?
.png40 Кб, 645x863
764 1863140
Хм. Вот теперь-то точно говнокод. ХЗ зачем я это сделал.
765 1863195
>>863140
Делай интерактивное консольное меню:

while (true) {
switch (Console.ReadKey(true).Value) {
...
}
}
При нажатии стрелок вниз/вверх перерисовываешь консоль смещаясь вниз/вверх и запоминаешь текущее положение, при нажатии Enter выполняешь операцию в зависимости от текущего положения.
766 1863196
>>863140
да какая разница, говнокод или нет главное - что работает. Заказчик не смотрит на говнокод, он в нем вообще ничего не понимает, анон)
767 1863317
Коллеги подбросьте идейку для самостоятельного домашнего проекта на шарпе. Думаю что нить под ASP - заодно подтяну.
Заебался - на работе только ёбаный SQL последние полгода.
768 1863446
>>862295
Зачем его защищать? На шарпе пишут то что крутится на сервере. Если это одиночная компьютерная игра или утилита, то опять же смысла защищать никакого.
769 1863451
>>862968
Учи там где уже все давно устоялось. Яву ту же.
770 1863457
У меня немного ебанутая проблема возникла. Вот есть у меня enum, индексы которому я задаю сам, типа того
enum MyEnum{
Item1 = 15,
Item2 = 31
Item3 = 45
}
Эти индексы в одном месте используются и от этого не уйти сейчас. А ещё у меня есть впфовский combobox, в котором опять-таки лежат названия этих itemов и по индексу элементов comboboxа мне надо опять-таки брать энумовский элемент и использовать, но очевидно, что по индексам 0-2 я уже не возьму нихуя. Как это можно решить?
771 1863488
>>863457
Решил сам вот так
var valuesAsList = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().ToList();
772 1863577
>>863317
Напиши веб-морду для сиквел сервера типа SSMS.
773 1863584
>>863446

>Зачем его защищать?


не надо защищать? То, что продается с абонплатой - не надо защищать?

>На шарпе пишут то что крутится на сервере


а, шарп - это замена php. Понял, принял))
774 1863634
>>863488
можно без лишнего linq просто приводить к T[], там под капотом создаётся Array
775 1863663
>>863488
всегда руками формирую список. зато явное управление порядком
776 1863675
>>862295
Я пишу в коде авторизации комментарии "Жулик, не воруй!" - пока помогает отлично. Правда, я только веб делаю. А для десктопа жду с надеждой AOT компиляцию в .NET 6. Пока дотнет только радует, может и это запилят.
777 1863699
>>863675
Кстати, аппы под UWP уже вроде давно c AOT собираются. Так что если именно надо AOT под тесктоп, а на всё остальное пофиг, то welcome to уёбищный UWP.
778 1863753
>>861369
>>861368
>>861350
Сердечно извиняюсь за крайнюю тупость... Порыскал я по интернетам и нашел вот такой проект.
Скачал, а что с ним делать-то? Как его скомпилировать-то? Где приложение-то???
https://github.com/KCeh/raupjc-projekt-InstaPound
Аноны, мне честно просто тройку получить.
779 1863804
>>863753
нууу.....если все так плохо, то тройку ты не заслуживаешь
780 1863805
>>863753
если тройку то заплати пару банок пива сокамернику и пусть он тебе поднимет эту фигню.
781 1863815
>>863804
>>863805
Архив битый скачался, лул. Скомпилировался, нормально.
Теперь надо его урезать до более убогого состояния.
782 1864035
>>863317

> подбросьте идейку для самостоятельного домашнего проекта на шарпе


Напиши клон инстаграмма этому анону >>861345
783 1864037
>>864035
... поспособствуй деградации отечественного образования.
784 1864050
Ку работяги, чем вообще на работе занимаетесь, какие у шарпа варианты, допустим пилите бек на аспе, кто-то даже может формошлепит, какие еще востребованные варианты на рынке труда есть? сам не шарпист, но интересно
785 1864058
>>864050
Ты забыл про юнити и хамарин и ML
786 1864059
>>864050
Никаких. Аспнет + ангуляр это единственный шанс вкатиться.
787 1864229
Анонче, сразу прошу прощения, может мои вопросы покажутся тупыми и вульгарными. Сижу на линухе, виндоч использую иногда и в основном для игорей. Решил попробовать освоить Си#. Как программировать в виндоче мне понятно. А в линухе возникло не понимание. Есть проект mono, который польностью изображает из себя Си# и даже пользуется поддержкой Макрософт. Если я поставлю его не будет никаких проблем с совместимостью программы при переносе из линуха в виндоч? Есть для линуха .NET Core и Visual Studio Code. Первый это как я понял среда разработки на Си#, а второй просто редактора кода. Правильно я понял, что .Net Core содержит в себе Visual Studio Code? Могу ли я писать кода в простом текстовом редакторе, а компиляцию делать в консоли, если поставлю .Net Core?
788 1864263
Вкатываюсь в ваш С# и пришел задавать тупые вопросы.

Объясните, почему, когда мы перебираем массив, мы можем перебрать его так

string[] b = { "Pidor", "Fago" };

foreach(string c in b)
{
Console.WriteLine(c);
}

Но когда мы читаем файл, то нужно исползовать именно цикл while?

StreamReader a = new StreamReader("/home/netsky/1.txt");

string name = a.ReadLine();

while(name != null)
{
Console.WriteLine(name);

name = a.ReadLine();

}

И почему, когда я хочу использовать foreach, он выдает мне по одной букве

StreamReader a = new StreamReader("/home/netsky/1.txt");

string name = a.ReadLine();

foreach(var o in name)
{
Console.WriteLine(o);

name = a.ReadLine();

}

И как-то можно значения

StreamReader a = new StreamReader("/home/netsky/1.txt");

string name = a.ReadLine();

Записать сначала в массив, а потом методом foreach перебрать строки?

реально хочу понять, как это всё работает, почему так, а не эдак, но в учебниках так не разжевывают
788 1864263
Вкатываюсь в ваш С# и пришел задавать тупые вопросы.

Объясните, почему, когда мы перебираем массив, мы можем перебрать его так

string[] b = { "Pidor", "Fago" };

foreach(string c in b)
{
Console.WriteLine(c);
}

Но когда мы читаем файл, то нужно исползовать именно цикл while?

StreamReader a = new StreamReader("/home/netsky/1.txt");

string name = a.ReadLine();

while(name != null)
{
Console.WriteLine(name);

name = a.ReadLine();

}

И почему, когда я хочу использовать foreach, он выдает мне по одной букве

StreamReader a = new StreamReader("/home/netsky/1.txt");

string name = a.ReadLine();

foreach(var o in name)
{
Console.WriteLine(o);

name = a.ReadLine();

}

И как-то можно значения

StreamReader a = new StreamReader("/home/netsky/1.txt");

string name = a.ReadLine();

Записать сначала в массив, а потом методом foreach перебрать строки?

реально хочу понять, как это всё работает, почему так, а не эдак, но в учебниках так не разжевывают
789 1864331
>>863584

>а, шарп - это замена php. Понял, принял))


С каких пор ассоциации с сервером это пых?
790 1864339
>>864229

>Первый это как я понял среда разработки на Си#, а второй просто редактора кода


первый это рантайм где выполняется код. Ну еще и сдк, который может иметь в себе набор утилит для разработки. Но не редактор
а второй ага редактор
редакторить можно хоть в блокноте, а компилить из консоли.
791 1864341
>>864331
наоборот. пых это ассоциация с сервером
для пыхаря это синонимы
792 1864345
>>864263

>когда я хочу использовать foreach, он выдает мне по одной букве


потому что фореач перебирает Ienumerable, котоырый выдает по 1 элементу перечисления
для массивов это элемент массива, а для стрингов это буква
и в данном примере ты читаешь стринг, а потом его по букве фореачишь

и да ты можешь прочитать File.ReadAllLines и перебирать фореачем потом

фореач для потока не существует и StringReader тоже не умеет. почему не сделали (вот как в питоняшах) - хз
хотя свое решение типа EnumerateAsLines пишется за 10 минут
793 1864436
>>864345

> свое решение типа EnumerateAsLines пишется за 10 минут


Потому и не сделали. Не подтирать же слюни за всеми?
794 1864470
>>864229
Нет кор уже устарел, ставь нет5.
Почитай как устроен шарп. Если грубо и кратко, то неткор/моно/нет5/нетфреймворк это компиляторы+вм+стандартная либа для шарпа, а не иде. Шарпокод без одного из них ты не скомпилишь и даже не запустишь.
Вскод это редактор/иде, кроме него под линукс есть еще платный проприетарный JetBrains Rider.

Алсо, вин формочек и wpf под линукс нет, будь готов к этому.
795 1864473
>>864436
ну так убожества и в жаве хватет. зачем делать вторую жабу
796 1864476
>>864473
Немношк не понял тебя. Убожество - это {наличие вышеописанной фичи} или убожество - это {отсутствие фичи, но возможность (и наличие инструментов для того чтобы) написать её за 10 минут}?
797 1864479
>>864476
убожество это отстуствие
написать за 10 минут можно много чего
и потом у каждого рождается либа типа CommonUtils где ОЧЕВИДНЫЕ велосипедные вещи
798 1864482
>>864341

>для пыхаря это синонимы


Соболезную.
799 1864489
>>864479
Нет, не согласен.
800 1864491
>>864489
у тебя нету? даже у Jon Skeet есть
вот например вышеописанный линечитатель гы гы
https://stackoverflow.com/questions/286533/filestream-streamreader-problem-in-c-sharp/286598#286598
801 1864501
>>864489
А знаешь ли ты, что в Timer захватывает контекст AsyncLocal и чтобы его не захватывало, то например есть вот такая фигня https://github.com/dotnet/aspnetcore/blob/8c1bf1f1a31f852880c16575bca62507b75112bf/src/Shared/NonCapturingTimer/NonCapturingTimer.cs
которая внезапно (то есть типично) internal, а значит ты не можешь использовать готовое решение, а должен делать велосипед

таймер без побочных эффектов - да не. никому не нужен.
а такого добра навалом.
802 1864511
>>864339

>набор утилит для разработки. Но не редактор


А щё за утилиты?
803 1864514
Нужен ваш совет, господа двачеры.
Делаю консольное приложение, мне нужно чтобы при неверном вводе в консоли программа не вылетала, а ввод повторялся заново.
Я нашел 2 варианта решения данной проблемы: https://pastebin.com/J4pAA50M и https://pastebin.com/z7JRbF2k
Но оба варианта пусть и рабочие, но мне кажутся не очень красивыми, читал что использование while(true) считается дурным тоном, а в другом варианте проверка на null как таковая не нужна, но убрать я ее не могу, мне же нужно что-то проверять в цикле...
Может подскажете более элегантный вариант?
804 1864515
>>864514

> while(true) считается дурным тоном


не считается
805 1864523
>>864511
ну всякое разное
шаблоны проектов, рослин тот же, тест утилиты - вся эта хрень на рантайме не нужна и потому она в сдк
806 1864535
>>864515
Стоило погуглить считается или все-таки нет, нашел вариант с for(;;). Спасибо за помощь!
807 1864540
>>864535
а разница с while(true) в чем7
808 1864547
>>864540
Я не знаю, но выглядит более элегантно явно! На самом деле сейчас заинтересовало, как оно работает под капотом, пойду сейчас изучать.
809 1864549
>>864547
выглядит как раз по сишному хаково вместо понятного while(true)
810 1864550
>>864540
И да, отличие в том, что for(;;) написать быстрее!
811 1864605
>>864535
>>864540
Разница в семантике, for(;;) принято использовать в местах где выполняется определенный алгоритм состоящий из нескольких стадий, т. е. это обычный for только переменные инициализированы и изменяются непосредственно в теле цикла. while (true) во всех остальных случаях.
Тебе как раз while(true) использовать нужно.
812 1864616
>>864605
Спасибо за подробный ответ!
813 1864654
>>864605
вайл ещё удобно использовать, когда итератор в теле цикла.
do
{
//команда1
//команда2
i++;
//команда3
}
while (i < 10);
Буквально вчера с этим сталкивался. Мне надо было вернуть количество итераций по выходу из цикла, а цикл мог брейкнуться в любой момент и мне нужно было, чтобы он брейкался не до, не после, а в середине цикла, причём не в начале и после части операций. Тогда получалось удобно мне, что итератор уже прибавлен, но другие команды остались с предыдущей итерацией. Короче долго обеснять и говнокод не здесь.
814 1864742
Господи. Что за ужос. Где все это легаси о котором все говорят, которые можно месяцами ковырять и норм. Я только доделал один новый проект - на мне кидают новый, и опять с нуля, нужно придумывать как все будет, а тут уже новый год же скоро, я уже там, на пьянках, а нужно напрягать мозги, думать что, куда, зачем и чтобы потом удобно было. Вот может быть самому просто писать на отъебись, так сказать - не дают легаси - начни делать его сам?
815 1864745
>>864742

> не дают легаси - начни делать его сам?


Да. Я так делаю.
816 1864766
>>864345

>хотя свое решение типа EnumerateAsLines пишется за 10 минут



Я только вкатываюсь, читаю оф доки на майкрософт и всё по порядке на метанит, сижу прям вдумываюсь, реально хочу понять, как работает нормальный язык. Пока за 10 минут не напишу, даже до ООП еще не дошел, на массивах и циклах уже 2 дня завис, чтоб реально понять, а не копипастить
817 1864768
>>864345

>File.ReadAllLines



Алсо. А этим ,как пользоваться?
818 1864787
>>864768
var arr = File.ReadAllLines("file/path");
foreach(var str in arr) {
//работай со строкой
}

Оно читает все строки из файла и складывает их в массив string[]
.png30 Кб, 1095x349
819 1864799
В общем, спрошу на всякий случай тут.
Я оч люблю шарп, но меня убивает то что нужно неймспейсы и классы прописывать, хотя всеми возможными конвенциями уже порешали, что в одном файле - один класс/интерфейс/структура, а неймспейсы берем из пути.
Так вот, может быть есть какой-нибудь плагин для студии, чтобы что-то подобное можно было написать, а он бы(плагин) потом скомпилировал и сам расставил классы-неймспейсы используя путь и название файла?
Неужели я действительно такой ебанутый и только мне приходит в голову что это какая-то ебота каждый раз писать неймспейс, да даже если не писать, а при создании он сам пропишется, все равно же выходит что просто так 8 символов сожрали на псустом месте, на кой оно надо - непонятно, читать - менее удобно.
820 1864811
>>864766

>оф доки


>метанит


>хочу реально понять



Проиграл. Чтобы реально понять нужно книги читать, а не краткие выдержки из них. Доки хороши только если ты уже знаешь шарп и нужно освежить что то в памяти.
821 1864825
>>864811
Этого не слушай. У каждого свой подход к обучению. Мне за всю жизнь только одна книга зашла - https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X

мимо архитектор
822 1864831
>>864263
>>864263
Тебе вроде как ответили, но все равно разъясню
foreach(var it in enumerable), это по сути то же самое что
while(enumerator.MoveNext())
{
var it = enumerator.Current();
...
}
IEnumerator- интерфейс для классического паттерна Итератор. Этот паттерн используется, когда нужно пройтись по элементам некоего множества.
Так вот, когда ты читаешь строку - ты получаешь массив символов, т.е. логично, что у тебя при foreach будет посимвольный перебор.

Если тебе нужно построчно - используй File.ReadLines, он, во-первых, вернет тебе не массив, а как раз IEnumerable<string>, что позволит не читать файл целиком сразу, а получать строки при когда тебе надо, это будет удобно, допустим, если ты читаешь какой-нибудь здоровый csv, опять же Linq можно использовать и ты можешь просто найти получить, например, все строки, которые начинаются с заглавной буквы.
Вот. Да.
.png10 Кб, 714x211
823 1864848
>>864263
Да, если тебе принципиально хочется StreamReader, то можешь прикриплейд намутить
.png11 Кб, 682x124
824 1864855
>>864263
Господи, забывая про новые штуки шарпа.
В общем, чуть более красивше
825 1864896
>>864855
это старая штука шарпа
в отличие от is not
826 1864946
>>864848
Мне не принципиально. Подскажите, как лучше делать, через вайл и файлопен или как? просто в оф доках именно стримрайдер был
827 1864983
Бля, уже 2 дня сижу над циклами и массивами, чтоб это всё заучить. Походу я оч долгий.
828 1864986
>>864946
Как тебе удобно и в зависимости от задач.
System.IO.File - просто статичный класс, который под капотом делает штуки типа первого прикриплейд(это для чтения файла целиком). Считай такой вот шорткат, чтобы ты не заморачивался со стримом, когда тебе просто нужно прочитать что-то. Ну, как и Console, например. Она под капотом тоже много всего делает, но ты же не запариваешься когда тебе нужно просто строку вывести со всем этим, ты просто пишешь Console.Write/WriteLine в зависимости от того что тебе нужно. Или Math, ты же сможешь написать то что на втором прикриплейде сам, я думаю, но ты просто не паришься и пишешь Math.Max(a,b), оно и понятнее и проще и не нужно постоянно тернарник писать, хотя не то чтобы сложно.
image.png1,2 Мб, 588x1256
829 1865009
830 1865044
Очень нравится ваш тред конечно. Не ожидал такого федбэка на дваче
831 1865050
>>864742
Зачем ты стараешься, ты что дурак. Тебе за это больше не заплатят.
832 1865052
>>864983
Если есть время и вкатывание не горит тебе бы в языке аля С повариться полгодика, сильно проще потом будет.
833 1865055
>>865052
Дак они вроде разные, у меня синтаксис потом в голове в кашу не посыпится?
834 1865059
>>865055
Не посыпится, синтаксис вообще-то одинаковый и там нет ничего лишнего, все что выучишь там пригодится и в С# и в любых других языках. Причем достаточно просто выучить основы С и потренироваться реализовав на нем базовые алгоритмы и структуры данных, это уже тебе буст даст мощный.
835 1865094
Коллеги подскажите плес что нить по микросервисной архитектуре почитать.
images.jpeg6 Кб, 259x194
836 1865268
Охуеть, вот это у меня только что разорвало сраку от WPF'a и его разработчиков
Задача: на пикче при нажатии на определенную область разметить прозрачный прямоугольник кастомных размеров, с красной обводкой типа подсветить конкретный предмет на пикче.
Полез я искать как на контрол Image повешать rectangle. Как оказалось (насколько я понял) что image - хуита без задач и нихуя не поддерживает кроме негетеросексуальной его ориентации разработчиков. В тырнетах сказали что для этого нужен canvas. Дрочился я с канвасом и понял что он тоже говно и нихуя мне не подходит потому что я не могу с него выцепить Actual height/width картинки (мне обязательно надо) которая по задумке должна быть на Imagebrush'e. Были еще советы с каким-то классом для байтоебства (типа битмапа), но я их к сожалению проебал.
Сейчас сижу дрочу Bitmap'и, велком ту 2005 нахуй. Я все же верю что это я даун и есть какой-то нормальный способ изподкоробки нормально подсветить rectangle или что-то подобное.
837 1865271
>>865268
твои личные проблемы
canvas или даже grid и никаких проблем
838 1865281
>>865268
ты же знаешь размер картинки
спроси его у Image если не знаешь
если она автоскейлится то спроси у канваса размер для пересчета
саму картинку как фон канваса и рисуй поверх что хочешь
839 1865294
>>865281

> ты же знаешь размер картинки


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

> спроси у канваса размер для пересчета


Как? А если ресайз окна?
Алсо, как фон канваса она очень всрато подгружается в отличии от image.
>>865271

> мне не подходит канвас


> мне похуй что он тебе подходит - канвас



Алсо, я уже сделал все просто битмапом/graphics, правда конечно было бы лучше рисовать поверх картинки.
840 1865305
>>865294

>Как? А если ресайз окна?


что значит как. у всего есть ActualHeight/ActualWidch
подпишись на ресайз и пересчитай все
это если не хочешь юзать Viewbox
841 1865322
>>865305

> сего есть ActualHeight/ActualWidch


Толи ты не понял, толи я идиот. Мне нужны размеры конкретно пикчи, а не контрола очевидно. Ни в свойствах бэкграунда, ни имеджбраше я такого не нашел, в отличие от имеджа где ни на что подписываться не нужно.
842 1865327
>>865322
хз зачем тебе реальные размеры. если ты не скейлишь то они совпадут с размером контрола. А если скейлишь то толку от них ноль.
но если нужно
но вот тебе псевдокод
var bmp = ImageBox.Source as BitmapImage
bmp.PixelHeight
bmp.PixelWidth
843 1865333
Могу ли я использовать breakpoint на методах не из моей программы?
К примеру есть
List<string> testList= new List<string>();

и я хочу на каждом
testList.Add("XYZ");
остановиться.
Этих вызовов Add в программе просто куча и я не знаю как мне отловить нужный мне чтобы понять что там в программе происходит.
844 1865337
>>865333
относительно можешь
если студия может подгрузить symbols то сняв just my code сможешь - вроде так
решарпер вроде позволяет без исходников декомпиля на лету
dnSpy тоже может
степень успешности наблюдения значений переменных конечно "как повезет"

начни с dnSpy
845 1865339
>>865333
или ты про перехват доступа к элементу? вроде бы ozcode так может. расширеник к студии
846 1865354
>>865337
>>865339

Я про то чтобы ставить точки основа на том же testList.Add что посмотреть что за строку он хочет добавить.
А затем я смогу используя эти данные уже написать условие в точке основа и посмотреть нужное мне место в программе.
Проблема в том что там не один такой Add, а их тысячи в программе и я не знаю какой именно работает не правильно.
847 1865360
>>865354
у тебя проблема

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

хз как тут валидно. если бы очень хотелось то может дикий вариант - получить адресс списка в памяти где ты можешь его достать в коде и потом проставить внутри Add бряку где сделать кондишен на этот адрес для this чтобы ловить только нужные.
848 1865440
>>865268

>долбоеб с двузначным IQ использует WPF для работы с графикой, а не написания десктопных приложений


>рряяяяя WPF сраку рвёт!!



Проиграл.
849 1865455
>>865009
захотелось побенчмаркать
850 1865476
>>865440
Работой с графикой?
851 1865515
>>865009
количество вариантов можно увеличить если вспомнить про ReferenceEquals и то что "" интернирован
852 1865535
>>865009
ну и Span<> с MemoryMarshal для космического разума
853 1865570
Поясните, вот как совмещать гибкость со стороны БД, гибкость со стороны приложения и удобство для фронта?
Ну, допустим, у меня есть товар в магазине, у него есть характеристики, ну, недолго думая, я беру и делаю в БД 3 сущности:
Product(id, name, typeId),
ProducProperty(id, name)
ProductPropertyValue(id, propertyId, productId, valud, dateTime) -- в таком виде, чтобы можно было статистику собирать, смотреть как покупают и какую-то аналитику делать

Так вот, с таким вот видом - получается что нужно кучу DTO'шек, т.к. фронтендеру хочется чтобы ему сразу приходил нормальный JSON'чик, чтобы он просто вставил, ну, оно и понятно, но это же будет куча DTO'шек под каждый тип товара, да, сейчас проще с рекордами, но блин, все равно же получается довольно много dto'шек.
Может быть я что-то не так делаю? Ну и опять же, с таким вот видом мы храним свойства товара в строках, т.е. чтобы больше-меньше делать, придется хардкодить, а эт нехорошо. Зато база получается нормальная.
Короче, наверное не совсем для шарпотреда, но блин, я вот .net'чик, при этом никакого отдельного человека который бы базой занимался - нет, приходится самому придумывать. Возникают вопросы, хз где и у кого спрашивать. Думаю просто что тут тоже многие по долгу службы и базу сами себе пишут.
854 1865652
Пишу одну мульти-таргет либу на netstandard2.0/net5.0, которую изначально делал на net framework только, так вот, последний кусок, который колит глаз - использование шиндоус реестра для настроек юзера. Смотрю на миграцию настроек в settings.json, или типо того. Что можно использовать ещё, или лучше оставить реестр?
855 1865663
>>865652
Ну, я бы вынес в json. С ним же самому тупо удобнее, плюс этот файлик можно хоть на линуксе, хоть на макоси использовать. Короче, я бы вынес.
857 1865683
>>865570
Ну какое то идиотское разбиение, зачем мне разбивать свойства на отдельные таблицы? Если нужна статистика, то создаешь сущность ProductStatistic и делаегь её зависимой сущностью Product
858 1865694
>>865683

> зачем мне разбивать свойства на отдельные таблицы


Чтобы у тебя холодильники, телевизоры, пылесосы и т.д. могли храниться в одной таблице же.
У них есть пересекающиеся свойства, есть уникальные, вот, допустим, масса почти у всех наименований есть, а вот диагональ экрана - только у тех товаров, у которых есть экран и он является той характеристикой, что нужно указывать. Конечно, в nosql - это решается на изи, у нас просто есть сущность товара, а свойства - какие хотим хреначим, но в sql, если мы еще и нормальную форму хотим, не хотим дублирования и т.д. - то я не знаю лучшего решения. В даноном случае - мы запонили свойства и не трогаем, потом у нас начали продаваться увеличители членов - мы добавили новое свойство - давление на член - все, мы можем в ту же таблицу что и остальные товары класть увеличители членов и товары все в одной таблице находятся. Как ты предлагаешь решить такую вот ситуацию в рамках SQL?
859 1865697
>>864799

> Неужели я действительно такой ебанутый и только мне приходит в голову


Воще ящитаю, это какая-та идиотия - считать фаел текстовый классом. Должно быть по другому совсем! Файл - это код на шарпе! Классы - это типы. Вот пусть и обьявляются как типы! Неча мне тут!

Program Sharpoproga
{
class Foo : Form {}
interface IBar {}
string ObychnaPeremenna = "Baz";
void Main(string[] args)
{
new Foo { Title = ObychnaPeremenna }.Show(); //Всё, прога запустилась и работает
}
}
860 1865698
>>865694
То что ты делаешь это тоже самое что в коде создавать интерфейс вида ISacleValueStorage и имплементировать его у любого класса в котором есть хотя бы одна скалярная величина.
Если общих параметров много, например те же вес, габариты и т. д. то для этого можно создать отдельную зависимую сущность - Measurements и хранить всё в ней. Если для отдельной группы есть специальные величины, то создаешь группа продуктов+Measurments.
Не плохо когда у тебя 1-2 свойства повторяются, либо какое-то из свойств не используется у определенных сущностей. DTO на стороне программы уже отфильтрует всё нужное и не нужно. Но вот твой подход просто раздует бд и превратит её в монстра на которого не захочется смотреть.
861 1865707
>>865698
Наоборот же. Данные будут консистентны, разве что к таблице ProducProperty добавить еще и таблицу: PropertyType, в которой прописать, инт это на самом деле или строка или дата.
Ну, т.е. да, я понимаю, что неоч удобно со стороны выглядит, но по факту - у нас получается что товар не обладает ничем лишним, при этом если мы удалим из базы какое-то свойство - мы не будем вынуждены удалять весь товар с этим свойством, мы удалим только записи которые товар со свойством связывают, например вот была бы какая-то сертификация определенной группы товара по одной системе, потом вышел указ - все, эта сертификация хуйня, не нужно - мы удалили, но никаких null'ов не осталось, просто исчезло это свойство, а потом мы добавили новое свойство, например новая система сертификации появилась - все просто будет.
Конечно, можно было бы хранить все в виде поля property которое бы имело формат json, но что если мы решим нашу бд в какой-нибудь СУБД где нет json'ов использовать? Короче, я не знаю на самом деле.

Просто опять же, смотри, вот я могу сделать пару джоинов и у меня будет табличка вида:
IDТовара-Название-Размер-Цвет-Производитель-Страна для одного товара

а другим джоином

IDТовара-Название-ОбъемПамяти-РаъемПодключения-КоличествоЦикловПерезаписи

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

Блин, короче, действительно я чет не понимаю, наверное.
В любом случае спасибо что ответил. Я, наверное, хренью маюсь.
862 1865714
>>865707
Твоё предложение больше на троллинг похоже.

>нашу бд в какой-нибудь СУБД где нет json'ов использовать


JSON это обычная строка. Что-то я не представляю себе СУБД в которой нет поддержки строковых типов данных.

>я могу сделать пару джоинов



И потом ты начинаешь путаться в этих джойнах и отношениях. Не говоря уже о том как это раздует твой код.
863 1865718
>>865714

>Что-то я не представляю себе СУБД в которой нет поддержки строковых типов данных.


мимокрок. хранение json строк и поддержка json это разные вещи.
864 1865722
>>865714

> И потом ты начинаешь путаться в этих джойнах и отношениях.


Вот потому я и спрашиваю нормальное решение. Сам понимаю, что пока это только я пишу на начальном этапе - никакой сложности-то нет, все в голове, а пока этих свойств не так много, но если эта хреновина будет жить какое-то время, а я, банально перекинусь на другой проект - хрен пойми как с этим потом работать.
Но как сделать проще - я не знаю. Вот хоть убей. Особенно учитывая, что задача именно так поставлена: Мы не знаем что будет храниться и какие свойства там будут, потому сделай МАКСИМАЛЬНО ГИБКО.
865 1865727
>>865718
И что же это за поддержка json строк такая?

>>865722
Просто избавься от фобии повторяющихся/неиспользуемых свойств. Всегда нужно выбирать наиболее сбалансированное решение, у тебя сейчас баланс нарушен из-за того что ты хочешь чтобы у всех всё было оригинальное и независимое.
866 1865732
>>865727

>И что же это за поддержка json строк такая?


а это когда ты не просто хранить жсон как строку, а база данных знает, что это жсон и ты можешь использовать это в SQL запросах выполняя поиск по какому то полю в жсон (сравни это с полной выгрузкой всей таблицы на клиента, декодированию жсон и фильтрацией на нем), а то и индексы делать
867 1865735
>>865722

> я и спрашиваю нормальное решение


Там выше тебе анон дал правильное решение. Обрати на него внимание попристальнее:
>>865698

> Если общих параметров много, например те же вес, габариты и т. д. то для этого можно создать отдельную зависимую сущность - Measurements и хранить всё в ней. Если для отдельной группы есть специальные величины, то создаешь группа продуктов+Measurments.

868 1865945
Как вы программируете в visual studio?
Я тут решил попробовать net 5 и для этого пришлось ставить студию и это же ебаный пиздец, там тормозит абсолютно все, каждое нажатие клавиши с задержкой, подсказки тормозят на секунду, а уж про то чтобы быстро реальный код писать я вообще молчу.
Не тормозит только пустой проект на консольке, я же открыл реальный рабочий проект и хотел попробовать на net 5 перевести его, но это такая боль.
Неужели майки не могут запилить нормальную не лагающую IDE?
869 1865969
>>865945
А какая IDE не лагает?
870 1865975
>>865969
Rider, я на нем уже пару лет сижу.
Но он не обновился до net 5, а EAP версия почему-то не качается, выдает старую версию, поэтому пришлось скачать студию.
871 1865977
>>865945
У тебя студия на говне и досках запущена была. Но да, производительность низкая, потребление памяти высокое, работать в ней не слишком комфортно. А что поделать? В каждом опросе от майков пишу, что производительность низкая, и вас призываю.
872 1865997
>>865977
ryzen 3700x, 32 gb ram, 970 evo plus.
Если это говно, то я боюсь представить что происходит на мобильных процессорах.
А на память мне насрать, если надо я еще докуплю 32 гб, лишь не лагало. Кстати студия на том проекте сожрала 12 гигов оперативки.
Меня эти лаги дико напрягают, так как тормозят меня, я тут значит 300-400 знаков в минуту со слепой печатью могу, а студия меня тормозит до 50-100.

> А что поделать?


Уходить на альтернативый если возможно. Тот же Rider, правда он не на всех проектах работает, есть некоторые которые тесно завязаны на студии и там даже скомпилировать не выйдет.
Встречал такое с fody, райдер не смог скомпилировать, а студия сожрала, поэтому пришлось писать в райдере, а затем запускать из студии для дебага.
873 1866004
>>865997

>ryzen 3700x, 32 gb ram, 970 evo plus.


Это странно. Подобные лаги у меня были лишь на 4 ядерном i5 с включенным решарпером - а проект тоже большой. Может баг какой словил?

>Тот же Rider


За него шекели просят - поди убеди ПМа.
HLAfhUxwKp.mp4296 Кб, mp4,
838x262, 0:20
874 1866017
>>866004

>Может баг какой словил?


Это стабильное поведение растущее с временем работы над проектом, уже через час лаги становятся под секунду для подсказок. И это даже еще решарпер не стоит.
Вот первые минут 5-10 еще терпимо работать, тормознуто, но терпимо, а дальше с каждым нажатием все медленнее и медленнее.
Чтобы было понятнее вот видео о том как студия тупит, даже нормально скобочки светить не может, задержка сильная при том каждый раз разная.

>За него шекели просят - поди убеди ПМа.


Для дома можно и бесплатно если очень хочется.
А для организации. Это сильно зависит от организации. Если судить по моим знакомым, то у более чем половина организаций стоит пиратская винда или вообще не активированная. А значит и эту себе взять не проблема.
875 1866022
>>866017

>Это стабильное поведение растущее с временем работы над проектом


В такой ситуации могу лишь сочувствовать и проклинать майкрософт

>Это сильно зависит от организации


В моей не пройдет такое
876 1866031
В первый раз за 12 лет собираюсь писать оконное приложение под десктоп (до этого писал на VB & Delphi).
Какая сейчас главная технология для этого? WPF? В какую сторону мне смотреть.

Никакого Universal-говна писать не собираюсь. Старое доброе окно со старыми добрыми кнопочками
877 1866043
>>865997
Ставлю анус хард у тебя говно.
Алсо, студии нужно нормально прогрузить проект пару минут, особенно твой 12 гиговый, можешь посмотреть по диспетчеру и вкладке диск.
878 1866049
>>866031

>писать оконное приложение под дескто


зависит от того вин десктоп или кросс
если вин то WPF ня
879 1866078
>>866049
да, под вин. Спасибо
880 1866085
>>866043
Поддерживаю ставку своим анусом. Оффтоп, но недавно смотрел стрим по какой-то игре, и там стример жаловался, что у него твердотельник тормозит и он его собирается сдать по гарантии, а пока > четырека небудит, смотрити в двака".

>>865997
Так что твердотельник не гарант скорости. Чекай кристалмарком.
881 1866086
>>866078
Стой, не уходи! ВПФ - говно! Оно прибито гвоздями к венде. Ты сделаешь проект, а потом юзеры запросят билд под макось или убунту - и придётся тебе весь УИ заново переписывать. Юзай Eto.Forms - вотета НЯ!
882 1866089
>>866086

> Eto.Forms


Eto.Ot.Vasyana.Forms?
883 1866091
>>866086

> Eto.Forms


А разве не Xamarin, и что там пришло вместо него?
884 1866174
>>866031
>>866086
Очевидно Qt, лучше ничего нет и походу не будет для кросс десктопа
885 1866200
>>865997
Скорее всего в процессоре проблема. Интеловские процы лучше подходят для вычислительной деятельности.
886 1866201
>>866174
Electron лучше.
887 1866229
>>866201
Нет
888 1866236
>>866089
Не, там какой-то бельгиец штоле разраб.
>>866091
Хамарин это другое. Понимать надо. На мобилах eto рисуется через хамарин, на маках через дарвин, на виндах через впф, на линуксах через гтк - и всё это уже заботливо собрано и разложено по нугет пакетам - только подключай.
>>866174
Линуксоиды не любят кут, не знаю почему, я-то сам убунтовод-колясочник и сижу под кедами. Говорят, существующие шарповые бинды плохи. Но я не проверял. Да и зачем, когда есть Eto?
>>866201
Чот погуглил щас, а там в результатах в основном такое: "до свиданья электрон, здравствуй %очередной УИ_тулкит%"
889 1866313
Кто-нибудь с SNMP дело имел? Какие есть годные, желательно опенсорсные, решения для неткора? Ну, я гуглил и нашел sharpsnmplib но там автор как-то перемудрил на мой взгляд. Может быть я что-то не так понимаю.
Мне-то что нужно: Программулину написать, чтобы следить за количеством краски в принтерах, чтобы я смотрел, что в таком-то кабинете краска заканчивается - пришел, поставил новый картридж, никто не звонит, красота. У принтеров, как я погуглил, есть этот самый SNMP, ну, я подумал: А че, я и так полдня сижу в потолок плюю, да видяшки смотрю, а тут автоматизирую процесс своей работы, буду заранее видеть, заменять и плевать в потолок на 50% больше, красота же. Но то что нагуглил - какой-то оверхед как мне кажется.
890 1866336
>>866313

> Но то что нагуглил - какой-то оверхед как мне кажется.


Да похуй. Ты ж не на код смотреть будешь, а на красивую всплывающую табличку в трее.
891 1866337
>>866313

> и нашел sharpsnmplib


Так, падажжи! Ты нугетом не пользуешься штоле? Я вбил туда snmp и мне выдало десяток вариантов от разных авторов на любой вкус.
1522705160155.mp48,3 Мб, mp4,
1280x720, 0:57
892 1866389
Через что можно написать веб бота? Чтобы без использования браузера(потому какой-нибудь Selenium не подойдет), ибо они жрут ресурсов немерено, но чтобы умел работать с куками(ибо нужен автологин, чтобы все время Auth код не вводить).

Может через задницу гуглю, но что-то не могу найти.
c51ef319-61ad-4311-a9b7-23098ff7a7ad.gif959 Кб, 187x250
893 1866395
Я дебил. Можно ли с помощью dnSpy вынуть весь код из dll в текстовый файл?
894 1866426
>>866389
через httpclient
1473424585845.webm10 Мб, webm,
620x349, 2:15
895 1866434
>>866426
Спасибо.
896 1866473
Читаю сейчас доки по ReactiveUI до чего крутая штука. Золотые горы обещает. Кто юзал? Каковы подводные?
897 1866474
>>866086

> Юзай Eto.Forms - вотета НЯ!


все, где внешний вид не отделен от логики, как в WPF - не ня вообще. Так, хуету делать разве что.
Хз че там в ето.формс, но если там не отделено, то дажа авалоания лучша будя

в WPF тоже хватает WTF (нувот их блин стили че так, хотя в авалония уже получше), но сама концепция ня ня
898 1866478
>>866473
обещает реактивеуи. хорошо для тех кто так мыслит и считает что именно так правильно, а по другому нет. На любителя в общем. Лично я, как мамкин фреймворкописатель (и под авалонию тожа), не нашел достаточных оснований по сравнению с INPC + Fody, чтобы овчинка стоила оверхеда и новой ебли вприсядку
Хотя конечно тут дело привычки восприятия.
899 1866493
>>866474

> где внешний вид не отделен от логики


Отделён, все норм.
900 1866498
>>866478

> INPC + Fody


Почитаем, поглядим.
901 1866502
>>866473
Зато от внедрения lifetimes польза была мне очевидна. Гор никто не обещал - они просто оказались

>Отделён, все норм.


ну там бедновато с примерами. мб мб. но если и так, то зачем тогда он если есть авалония (ну кроме проблемы с шрифтами конечно)
902 1866509
>>866474

> Хз че там в ето.формс


Я месяц назад закатился итт с вопросом

> Посоветуйте кроссплатформенный ЮИ-фреймворк


Мне насоветовали много всякого. В том числе авалонию. Потом я спросил вроде простой вопрос.

> Как мне сделать кроссплатформенную иконку в трей?


И началось. Тут не надо, дам нарушает, здесь ты чо ахуел, и так далее. И только кун, форсяций здесь авалонию (мб это ты?) сказал, что в авалонии иконка в трее реализована через Eto.Forms. Ну я загуглил. и что я вижу?

Охуенный ЮИ-фреймворк, отвечающий всем моим задачам. И никто не посоветовал мне именно его. Ну, напрямую никто, косвенно авалония-кун.
903 1866513
>>866502

> зачем тогда он


() => >>866509
904 1866515
>>866509
Блять.

> И началось. Тут не надо, там нарушает, здесь ты чо ахуел, и так далее. И только кун, форсящий здесь авалонию (мб это ты?) сказал


Быстрофикс
905 1866519
>>866509
насколько я помню тебе правильно ответили что делаешь какой нибудь сервис INotiticator который подключит правильный бэкенд рисования иконки под конкретной платформой. А то во всяких линуксах с их страшными гном3 и кучей других DE не напасешься встроенных средств работы с треем.

я хз чем так реализована иконка в трее в авалония, ведь даже в WPF я для этого ставлю нюгет пакет какого то васяна
906 1866526
>>866519
Не а. Это в этом треде я закидывал удочку на запоминание аноном информации. Реально про иконку в прошлом треде было.
И как выяснилось, анон инфу не усвоил. Вместо того, чтобы посоветовать мне (повторно) Eto.Forms c реализованной кроссплатформенной иконкой, мне насоветовали изобретать велосипеды.
907 1866528
>>866519

> какого то васяна


Зачем Василия обижаешь? Что за тон?
908 1866538
>>866528
почему обижаю
у меня ведь тоже васян продакшен энтерпрайз
так что никакой пренебрежительной окраски в моих словах

>посоветовать мне (повторно) Eto.Forms c реализованной кроссплатформенной иконкой, мне насоветовали изобретать велосипеды.


целый фремворк ради одной иконки. обычно все наоборот
909 1866548
>>866538

> целый фремворк ради одной иконки


Если бы я переходил с равного ему MVVM фреймворка - то да, долбоёбство. Я же по факту вкатываюсь в том числе и в шарп в принципе. Много лет кодил исключительно скрипты в батниках и (немножко) шеллах. До этого во времена дельфи кодил на нём.

Такшта сейчас при прочих равных именно нагугленный Eto даёт мне всё, что мне нужно. Авалония не понравилась статусом беты и подходом к ЮИ как ориентированному на темы. Ето наоборот даёт нативный лук и фил на выходе. Моя приложуха не будет навязывать юзеру свой фирменный стиль, а выдавать ему ту тему, которая установлена у него в системе. ReactiveUI можно подключить отдельно и всласть биндить виды к видомоделям. Как он собственно и к авалонии сбоку прикручен.
>>866478

> INPC + Fody, чтобы овчинка стоила оверхеда и новой ебли вприсядку


> Хотя конечно тут дело привычки восприятия.


Как я уже сказал, привычек как таковых ещё нет, начинаю с чистого листа, открыт к новому, итп, посему изучу и эти тайтлы. Всё, ушол.
910 1866555
>>866548

>Eto даёт мне всё, что мне нужно.


как я вижу это такой кроссплатформенный WinForms. Не вижу чет я там никаких DataTemplate. Видать тебе такая гибкость и не нужна

>подходом к ЮИ как ориентированному на темы


хз о чем ты. просто когда ты сам описываешь визуальщину, то сложновато сделать "как там нативно в платформе выглядит". Это 2 противооположных стула, на которых пытается усидеть хамарин жертвуя гибкостью
911 1866568
Привет програмач. Тащем-то есть задание, худо бедно написал. Хотелось бы почитать замечания по поводу кода, может что неправильно сделал. В данный момент разбираюсь в иерархиях классов.
912 1866581
>>866568
Доебутся. Ух, сколько тут возможностей доебаться!
Почему классы сотрудников пустые? Перенеси туда всё, что ты делаешь в Мэйн. Рейты вынеси в текстовый конфиг, который ебани константой в отдельном структе (public struct TipaDB { public const string rates = "{'dev':3000, 'QA':2500, 'BA':3500}"; }) внутри неймспейса. В конструкторы дочерних классов передавай только имя. Позицию и рейт конструктор поставит сам. Причем рейт возьмёт из текстового конфига, который ты симулируешь константой. Когда спросят зачем это? Ответь, типа, если код будет работать в составе более крупного проекта, то там наверняка будет БД и этот структ - её симуляция. (Важно, именно симуляция, не эмуляция.)
И в общем, следуя этим нехитрым советам - тебе перезвонят.
913 1866586
>>866581
Потом подключи NewtonSoft.JSON и им распарси строку с рейтами. Делов на пять минут, но ты до кучи ещё и продемонстрируешь, что разбираешься в пакетах и не изобретаешь велосипеды.
914 1866593
>>866586
Большое спасибо, учту все моменты.
915 1866597
>>866568
и почему все всегда верят что пользователь введет число
вдруг он напишет "пшелнах"
и твоя программа рухнет
916 1866708
Посоветуйте тему для пет-проекта, чтобы было что работодателю показать.
917 1866727
Я уже задавал этот вопрос в августе, но сейчас повторю. Мы ищем разрабов на хорошие условия, но на наши вакансии никто не откликается. Что с вакансиями не так кроме названия компании?
https://kazan.hh.ru/vacancy/39860758
https://kazan.hh.ru/vacancy/39860773

Заранее спасибо
918 1866738
>>866586

>подключи NewtonSoft.JSON



Вот этого не нужно делать, используй System.Text.Json
919 1866739
>>866738
У него другое поведение. Он видит только property, а field не видит
920 1866748
>>866727
Тебе уже тогда сказали. Не помню правда что, но сейчас обсер виден прям в названии.

>middle программист



Какой нахуй программист в сочетании с middle? Выглядит как колхозник который где-то услышал новое слово и вставил его. Пиши Middle .Net Developer. Либо Middle разработчик.
Но вам не просто мидл нужен, вам нужен фуллстек. Не знаю, может для Казани норм, но для ДС/ДС-2 100к для фуллстека-мидла это смешные деньги. Для мидла минимум это 150к. Тоже самое и с сеньором.

В итоге нужно заменить название на:

Middle Fullstack .Net developer или Middle Fullstack .Net разработчик.

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

>- Понимание, как работает СУБД и зачем нужны индексы в базе;



Как человек может быть мидлом и не понимать принципов работы СУБД и для чего индексы нужны? При чём тут вообще индексы, блять, это что, какое-то сакральное знание? Видимо автор сам не понимает для чего они нужны и поэтому вставил в требования как что-то страшное по его мнению. Мидл должен понимать уровни изоляции транзакций и конкурентность при работе с БД, для того чтобы понять индексы достаточно прочесть пятиминутную статью.

Ну и да. Учитывая зарплату, никому нахуй ваш Фарт и блокчейн не нужен. Это своего рода зашквар на которой идут только за деньгами.
921 1866753
>>866748

> Как человек может быть мидлом и не понимать принципов работы СУБД


У нам приходил человек с 15 годами опыта и не еле-еле скрипя составлял простейшие sql-запросы на выборку из бд. Говорил, что раньше все запросы писал на nhibernate

> мидлом идёт на зарплату джуна


может наоборот?
922 1866754
>>866739
Во-первых, поля не нужны. Во-вторых, игнорируются они только по умолчанию.
923 1866756
>>866753
Ну вот, у тебя еще и требования непоследовательные. Тебе принципы работы нужны или умение составлять sql-запросы? Типичный представитель компании ФАРТ. В требованиях одно, а на собеседовании тебя посадят составлять sql-запросы, при том что в требованиях невнятная хуйня про индексы и требование работы с ORM.

>то раньше все запросы писал на nhibernate


Ну так и есть, зачем мне блять составлять sql запросы, сука, если для того чтобы этого не делать и создавались ORM? Разбираться нужно не в составлении sql запросов, а в работе ORM фреймворка, его тонкостях, умение просматривать эти самые sql запросы которые составляются фреймворком и определить можно ли улучшить данный sql запрос.
924 1866757
>>866748
Просили передать: ты понимаешь в программировании, но не понимаешь в работе программистом

>>866756

> умение составлять sql-запросы


> зачем мне блять составлять sql запросы


> Разбираться нужно не в составлении sql запросов


Как человек, работая с БД, может не знать SQL и не уметь составлять запросы? Что будет делать человек, если ему надо будет что-то (на 1000 строк) поправить внутри БД?
925 1866760
>>866748

>почему не откликаются


>потому что вы у вас требования слишком низкие


Чёт пукнул с этого душнилы. Да, именно поэтому.
Стикер512x512
926 1866786
>>866748

> Называет самые дорогие города с самой большой зарплатой по россии


> может для город-нейм норм, но для Москвабад-сити это смешные деньги

927 1866792
>>866708
Не иди в айти если задаешься такими вопросами
928 1866800
>>866757

>Как человек, работая с БД, может не знать SQL и не уметь составлять запросы?



Для работы с бд есть ORM фреймворки, их предназначение это избавить программистов от необходимости вникать в SQL.

>Что будет делать человек, если ему надо будет что-то (на 1000 строк) поправить внутри БД?



Для этого не нужны какие-то глубокие познания и высокопроизводительные запросы.
929 1866802
>>866786
И давно ты в других городах был или в ДС/ДС2? Программистам уже давно начали платить +- одинаково, исключением будут разве что всякие ООО Фарт и НИИ МухГу
930 1866803
Мне кажется я с ума схожу. У меня в одном классе есть поле, которому я задаю значение при запуске программы и больше его не трогаю ВООБЩЕ, АБСОЛЮТНО, НИКАК. В этом же классе у меня есть 2 метода, которые это поле используют. НО в одном методе это поле имеет значение как и должно, А В ДРУГОМ ОНО ВСЕГДА null. Ещё раз, оно никак не меняется, я проверял, оно просто не может меняться. КАК, СУКА? КАК ОНО ОДНОВРЕМЕННО МОЖЕТ БЫТЬ В ДВУХ СОСТОЯНИЯХ? ПОЧЕМУ ОНО NULL, СУКА
931 1866805
>>866803
Ну так сделай его readonly свойством, дебилоид.
932 1866810
>>866805
Во-первых, с каких пор поля, блять, могу быть ридонли, во-вторых, нахуя мне твой ридонли, в-третьих, это не отвечает на мой вопрос
933 1866815
>>866810

>сделай его readonly свойством


>с каких пор поля



Сожалею, но в твоём случае всё печально, потому что слабоумие не лечится.

>в-третьих, это не отвечает на мой вопрос



Извини, сычуш, писать код исходя из описания умственно отсталых долбоебов, для которых программирование это какая-то магия, пока еще никто не научился.
934 1866822
>>866815
Ещё раз, НАХУЯ мне твой ридонли, что это изменит. И я не могу ему значения присваивать в конструкторе или при инициализации, мне set нужен
935 1866828
>>866822
Тогда делай отдельный метод для установления и изменения этого значения.

>что это изменит


Снимет с твоей программы колдовские чары, которые подменяют значение на null в одном из методов.
936 1866842
>>866828
Но там нигде ничего не подменяется, понимаешь? В set после установления больше ничего на протяжении всей программы не приходит. Я вот буквально беру ставлю точку остановы на set, запускаю программу, при запуске присваивается значение, в set данные пришли. Вызываю один метод и там есть значение, в set ничего не приходит, затем вызываю другой метод и там null, в set так же ничего не приходило. Как это возможно?
Писклявый-пошёл-на-хуй-пидараз.webm200 Кб, webm,
40x30, 0:12
937 1866843
>>866802
Студентик, проснись, ты на лекции, и что-то коричневое стекает по твоим порткам

ОКВЭД 62 (Разработка программного обеспечения)
https://www.audit-it.ru/inform/zarplata/
https://www.audit-it.ru/inform/zarplata/index.php?id_region=184
https://www.audit-it.ru/inform/zarplata/index.php?id_region=123

Москва 142
Татарстан 67
Нижегородская 86
Свердловская область (Ект) 66
Омская область 51
Магаданская область 60

Так что в переводе на ваши, москальские деньги 100 тысяч = 215 тысяч, а 150 тысяч = 323 тысячи.

Обрати, кстати, внимание, что это зарплата в доковидные времени
938 1866850
>>866842

>Данные до 2017 года



Недавно тебя разморозили, да? Доллар уже по 76 рублей продают, прикинь.
Снимок.PNG31 Кб, 1186x288
940 1866854
>>866851
>>866850
Мудила пиздоглазая, ты меня тупостью троллишь что ли?
941 1866864
>>866800

> Для этого не нужны какие-то глубокие познания и высокопроизводительные запросы


Но всё-таки составить запрос нужно, да? На SQL, да?

> их предназначение это избавить программистов от необходимости вникать в SQL


Если у тебя такое глубокое понимание причины существования ORM, то пожалуйста сиди на фрилансе и пили свое говно за $10/час и никуда оттуда не уходи. Не хочу, чтобы такие как ты захламляли пространство собою
942 1866869
>>866792
Я не задавал вопросов.
943 1866875
>>866864

>Но всё-таки составить запрос нужно, да? На SQL, да?


Нет, не нужно, за программиста это делает ORM. Исключением будет либо говнокод, либо долбоеб не разбирающийся в ORM, либо долбоеб вроде тебя который любит пилить велосипеды и верить в то, что они лучше тех которые пилят непосредственные специалисты.
944 1866876
>>866875

> непосредственные специалисты


Типа меня, да
945 1866903
>>866800

>их предназначение это избавить программистов от необходимости вникать в SQL.


вот только успешность этого - ну разве что на петпроектах
946 1866967
На связи вкатывальщик который не работал с тредами с ебанутой задачей для впфа.
Задача: на впф'е есть один image, я хочу после обновления image.source показать эту картинку на 1 сек, а дальше обновить другой картинкой.
Я написал очевидный Thread.sleep, мало того, спустя после еще нескольких операций после апдейта источника, но ебучий имедж даже не вздумал его обновить и тред фризится со старой картинкой.
+я на .net 4.0 и всяких task.delay у меня нету.
Алсо, все это происходит на клик имедж ивенте, думаю пока сделать что-то с клик дауном.
947 1867031
>>866967

>я на .net 4.0 и всяких task.delay у меня нету


какой то вкатывальщик некрофил
кто запрещает взять 4.7.2 хотя бы
948 1867034
>>866967
Некромант, ты должен знать, что есть Task.Run, в нём и заменяй через критическую секцию
949 1867039
>>867031

> кто запрещает взять 4.7.2 хотя бы


Шиндоус хп.
>>867034

> Task.Run


Нету, твердо четко. Есть только waitall, waitany и пару каких-то свойств.
950 1867042
>>867039
Task.Run это сахар
до этго был Task.Factory.StartNew
image.png30 Кб, 921x309
951 1867045
>>865945
>>865977
Я хз что вы с ней делаете. У меня на 4х разных машинах всё летает. Даже после утсановки решарпера никаких проблем нет. Даже в порезаной VDI (пришлось так работать на одного финансового клиена из-за секьюрности) нормально всё было.
image.png38 Кб, 1509x565
952 1867064
>>866017
Я таких лагов вообще припомнить не могу, даже на старых студиях. Делай перестановку винды, лол.
Скорее всего у тебя в системе глюки и вместо поисках нужных флагов проще чистую установку сделать.

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

Можешь Windows Events глянуть, там может краши есть. И ещё Reliability Monitor.
953 1867077
>>866017
было такое. решарпер переставил и прошло.
Еще заметно было там решарпер в углу пишет память. Доходило до 500метров и начинало тупить как на видео.
954 1867082
>>866869
С логикой всё впорядке, можно идти в айти.
955 1867091
MSVS говно. Один лишь дядюшка Джен Брейнс хороший иде, а все другие остальные такое... я не тормоз
956 1867094
>>867091
когда этот дядюшка сможет WPF адекватно - тогда и приходи. и то осторожно
957 1867100
>>866803
Доброе пожаловать в мир программирования. Здесь магия будет тебя преследовать первые лет 10. А потом, после фикса миллионов магических ситуаций, до тебя наконец-то доходит что магии вообще не существует и всегда есть причина, и причина очень конкретная.
image.png346 Кб, 1305x1114
958 1867105
>>866802
Тебя пидораса надо окунуть в Иркутск/Сургут/Тюмень/Воркуту/один_из_тысяч_городов. Да даже Владивосток. Платить им блеадь одинаково начали. Ух гнида!
Соискателей как правило больше, чем предложений. Поэтому приходится переезжать или искать удалёнку или фрилансить.
959 1867147
>>866869
Ты задаешься вопросом какой пет-проект написать.
960 1867151
>>866337
И все они говно, либо перемудряют. Почему бы просто не сделать как httlListener/Client, чтобы взял и пользуйся: у одних - вообще нихуя нет, у других - собирай какие-то там правайдеры, фактории и прочую залупу. А мне просто нужно: Прописал адрес ресурса, указал IP-принтера и все чтобы работало.
961 1867153
>>867151
поддержу анона. 10к либ чего либо на нугет еще не значит, что они написаны хорошо или удобны. Часто такое замудрят, что лицо потом болит
962 1867200
>>867151
https://docs.sharpsnmp.com/tutorials/introduction.html

Тут вроде просто описано. Как ты и хочешь. Запихал айпи и вызвал.
963 1867214
>>867200
я другой анон но спрошу то что я всегда спрашиваю в подобных вещах
где async?
мудрить костыли с Task.Run это костыли. Конечно может быть достаточно,но как спать по ночам
964 1867257
>>867214
Я же не автор того проекта. Вообще его в первый раз вижу. Я отвечал на

>Прописал адрес ресурса, указал IP-принтера и все чтобы работало.



Вообще если АПИ синхронное без всяких .Result костылей, то оно должно нормально работать. Тем более что использующая его прога - это десктопная поделка, использующаяся одним юзером для периодических проверок принтера (судя по поставленной аноном задаче). Там вообще пофиг.

Но если прям невмоготу (хрен знает как это слово писать), то возьми да сделай пул реквест в этот проект.
965 1867293
>>867105

>1с


>программист


>ведущий разработчик


>единственная адекватная на фоне других пыха и та с зарплатой на уровне ДС2



Что сказать то хотела, скотина тупорылая?
966 1867325
>>867293
Во владе в целом уровень зп выше чем в тысячах других городов по стране, и даже там средняя зп даже во всяких ДНСах и Сименсах будет 40-60. На скрине выше видно что для того чтобы получать 100+ надо быть или тим лидом или идти в бухгалтерию, что вообще не программирование. 200 позиций, которые там имеются, на скрин не влезут.

По пыхе там от 60 и скорее всего столько платить и будут. Верхнюю планку указывают чтобы народ привлечь. А требовать будут соорудить межгалактический летательный аппарат.
967 1867342
Подскажите. Вот есть EF, я хочу делать HasData. Так вот, я не совсем понимаю как это лучше делать? Ну, типа, на данный момент я просто так вот в классах которые настраивают модели ебанул статичные методы: GetDefault(), они дают мне данные начальные. Но вседь это какая-то хуета, как я понимаю. Особенно учитывая что я не вынужден для сущностей которые связаны с другими сущностями руками указывать ID, это приведет, потенциально, к хуевой ситуации, если я решу этот же метод GetDefault поменять в той сущности что связана.

Я смотрел как сами майкрософты в своих репках с "архитектурой" делают, так они там вообще никаких HasData не используют, в одном случае - хреначат хардкодом так же, но только делают отдельный здоровый класс Seed, в другом - из CSV читают. Оба варианта мне кажутся сомнительными. CSV - не позволяет нормально сущности связанные заполнять, а хардкод - те же проблемы что и у меня, просто они делают это в отдельном здоровом классе, а я в классе что имплементирует IEntityTypeConfiguration
968 1867377
>>867342
создай xml и парсь в том же Seed'е
969 1867452
Да почему не получается то, а?
970 1867462
>>867452
А это потому что используешь идиотский стиль в виде фу_бар_баз и игнорируя регистр енума

ну а не работает потому что енумы не умеют в new - они не классы, то есть никакого new reason быть не может
971 1867463
>>867452

>Доступ к члену


проиграл с пользователей русификаторов
972 1867467
>>867462
Сеньор, ты точно код правильно прочитал?

>>867452
Студент, иди учи что такое классы и объекты. Ты пытаешься использовать метод класса. А надо его вызывать у объекта.

Класс - описание сущности, оно нифига делать не умеет, пока из него сущность не создадут.
Объект - собственно то, с чем ты работаешь.

var user = new User();
user.ChangingDataAboutUser(hui);
973 1867468
>>867467

>Сеньор, ты точно код правильно прочитал?


по сильной диагонали. с таким стилем оформления пусть мазохисты читают.
974 1867471
>>867462
>>867463
>>867467
Спасибо за советы.Особенно >>867467
>>867468
Стиль такой, потому-что попросили сначала задачу оформить так а потом переписать в нормальном стиле и сделать выводу, почему так лучше не писать.
975 1867507
Ребят, а почему при вызове метода по значению, равенство мы передаем, например, вот так

class Program
{
static void Main(string[] args)
{
Sum(10, 15); // параметры передаются по значению
Console.ReadKey();
}
static int Sum(int x, int y)
{
return x + y;
}
}

то есть x + y

а когда по ссылке, то пишем x += y

static void Main(string[] args)
{
int x = 10;
int y = 15;
Addition(ref x, y); // вызов метода
Console.WriteLine(x); // 25

Console.ReadLine();
}
// параметр x передается по ссылке
static void Addition(ref int x, int y)
{
x += y;
}

почему именно так? почему он не компилируется, если я сделаю, например, x + y
975 1867507
Ребят, а почему при вызове метода по значению, равенство мы передаем, например, вот так

class Program
{
static void Main(string[] args)
{
Sum(10, 15); // параметры передаются по значению
Console.ReadKey();
}
static int Sum(int x, int y)
{
return x + y;
}
}

то есть x + y

а когда по ссылке, то пишем x += y

static void Main(string[] args)
{
int x = 10;
int y = 15;
Addition(ref x, y); // вызов метода
Console.WriteLine(x); // 25

Console.ReadLine();
}
// параметр x передается по ссылке
static void Addition(ref int x, int y)
{
x += y;
}

почему именно так? почему он не компилируется, если я сделаю, например, x + y
976 1867512
>>867507
Потому что ррезультатом выражения должно быть присваивание либо передача в качестве параметра
977 1867514
>>867507
Это вообще никак не связано.
x += y это краткая форма записи x = x + y, то есть ты присваиваешь переменной x сумму x + y. А в первом случае твоя функция возвращала (return) сумму x + y.
Чтобы не иметь такой каши в голове, лучше возьми какую-нибудь книгу по языку и читай от корки до корки.
978 1867525
>>867514
Какую посоветуешь?
979 1867529
>>867514
Из шапки какой нибудь ресурс подойдет? Юзаю метанит, но там много каши в голове возникает, приходится спрашивать тупые вопросы
980 1867540
>>867525
>>867529
Я даже не знаю, из тех книг по шарпу что я видел везде основы программирования поданы очень сжато и быстро переходят к деталям шарпа и .NET платформы, которые тебе сейчас не нужны. Мне было норм так как шарп был не первый язык что я учил (по книге Троелсена, последнее издание сейчас Pro C# 8 with .NET Core 3, но вряд ли она подойдёт для совсем новичка в программировании). Опять же если тебе нужны на русском языке ресурсы то надо смотреть какие книги переведены, но в программировании конечно английский обязателен и его придётся учить в любом случае. А вообще в программирование я вкатывался с C++, там много хороших книг покрывающие самые основы (переменные, функции, if, while, for, классы, и т.п.), поэтому передо мной такой проблемы с шарпом не стояло.
981 1867654
>>867452
У тебя класс юзер - обыкновенный, а ты пытаешься обращаться к нему как к статичному.
Суть, тебе нужно сначала создать объект.

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

Ну, а с точки зрения синтаксиса, чтобы создать новую жопу(нестатичную), ты должен написать Ass myAss = new Ass();
Чтобы вызвать у нее метод - myAss.MakeShit(); А если хочешь обратиться к статичной жопе - Ass.Shit, но тогда метод тоже должен быть статичным.
Как-то так.
.png38 Кб, 620x782
982 1867657
>>867452
Хм. Я бы так вот написал.
983 1867669
Прихожу к выводу что анемичная модель - хуйня. Ну, тупо же неудобно, когда у тебя куча классов которые с ней работают.
Вот что удобнее: Класс Document, у которого просто есть метод Print(IPrinter), в котором можно внутри файла с классом все что нужно сделать, либо ебаться с классом DocumentPrinter, который мало того что не имеет доступа к private полям класса документа(а иногда нужно), так еще и будет в другом файле находиться и ты не можешь тупо клацнуть this. и посмотреть что вообще в классе есть, чтобы понять что там и как печатать.
Скажите, в чем я не прав и почему все равно так много людей хотят делать анемичную модель для приложения, плодя всякие Helper, Utils, *Service, вместо того чтобы нормально все в модели прописать, если модель будет меняться - мы будем менять это в одном месте, сразу править то что нужно, а не бегать по всему проекту в котором из-за анемичности будет 100500 классов чтобы все работало. Мне вот последнее время кажется, что это какой-то способ наебать работадателя, типа делаем анимичную модель, потом маленькое изменение в логике работы - неделя времени.
984 1867677
>>867669
Ты и файлы наверно все в одной папке хранишь. Если что-то нужно, то не нужно бегать по каталогам, всё в одном месте!
IMG20201128132606.jpg478 Кб, 2093x385
985 1867684
Я лох студент, помогите решить задачи по с#

1. Найти произведение целых нечётных числел, кратных 7 и от -80 до 80.

2. Дано число n от 1 до 1000 и число m. Вывести результат квадрат разности числа n и m.

3. (Фото)
986 1867686
>>867669
попробуй напиши пару проектов в обоих стилях - и вопрос твой как рукой снимет.
987 1867695
>>867686
В том-то и дело, что я к этой мысли пришел после 3 лет работы.

Ну серьезно. Вот как ты поймешь нормально для чего тебе нужен класс User, если в нем одни свойства, а вся логика работы вообще в отдельной сборке лежит и ты тупо не знаешь, можно ли тут что-то трогать, чтобы все к хуям не сломалось нахуй. Как по мне, хорошо спроектированный класс - тот класс, при взгляде на список полей, свойств, и методов у тебя тупо не остается вопросов что это и нахуя оно надо вообще и как оно работает. А тут - это DTO'шка? Может быть это объект для БД, может быть еще что-то? Узнаешь когда пройдешься по всем ссылкам которые используют этот класс, а иначе - соси бибу или играй в Вангу.
988 1867702
>>867695
это ты пришел работая с анемик. А все познается в сравнении.
а когда сходишь в DDD то количества мороки с организацией "че как" быстро превысит профит от этого и вернет на грешную землю с лозунгом "уж лучше гет сет публичные чем эта ебля"
989 1867712
>>867684
Это задачи не по C#, а по математике, пиздуй нахуй отсюда, студент.
990 1867713
>>867695
это как с исключениями
- как вы с ними работаете. хер поймешь какое исключение может вылететь из глубин, непонятно что ловить
- не вопрос. попробуй альтернативу с кодами возврата
....через время....
- да ну нахуй. я люблю исключения
991 1867714
>>867695
Ну так 3 года говнокодил, вот и пришел. Писать хороший, структурированный код это такой же навык как и другие, он не приходит сам собой, его нужно оттачивать. А на работе ты этому не научишься, потому что на работе полно таких же долбоебов которым "похуй, лишь бы работало" и менеджмент которому "хуяк-хуяк и в продакшн".

>тот класс, при взгляде на список полей, свойств, и методов у тебя тупо не остается вопросов что это и нахуя оно надо вообще и как оно работает.



Ты запутаешься в этой простыне уже на 100+ строке. Когда у тебя разбито всё по классам, то тебе легче запомнить и представить структуру в целом.

>Узнаешь когда пройдешься по всем ссылкам которые используют этот класс


Вот именно - узнаешь. А если лепить простыню, то ты никогда не узнаешь и будешь тыкать наугад.
992 1867726
>>867657
Ага и еще свитч с паттер матчингом в ChangeData() бы всунул. Зачем новичка expression-bodied пропертями смущаешь, у него и так каша в голове.
993 1867727
>>867657
приватные поля можно выкинуть
if..elseif заменить на if..return
994 1867804
Ну что там ваш дотнет 5? Когда уже выйдет? Какие инновации?
995 1867807
>>867804

>Когда уже выйдет?


никто не знает. даже слухов на эту тему нет
996 1867915
Вопрос по автомапперу. Есть классы
class A { ICollection<A1> SomeProp {get;set;}}
class B { IEnumerable<B1> SomeProp {get;set;}}
Можно ли настроить маппинг A->B так, чтобы при маппинге A.SomeProp->b.SomeProp b.SomeProp по факту было массивом, а не листом (не меняя тип B.SomeProp)?
997 1867969
>>867804
Все вышло.
Рекорды, внезапно, охуенная тема. ДТОшки пишутся в 1 строку, охуенно просто. Теперь, к.м.к. незазорно их прямо в контроллере делать, типа пусть лежат прямо где используются.
Ну а так, в остальном всякая мелочевка.
Да, говнорайдер не может в .net5 пока, ну, как обычно.
998 1868345
>>858975
Чё-т вы в середине треда про перекат попиздели, а ПЕРЕКАТА ТАК И НЕТ.
image.png21 Кб, 984x125
999 1868465
Шапку блять обновите.
1000 1868469
>>867684
Если ты такую хуйню не можешь решить, то нахуй ваще поступил на программиста?
1001 1868522
>>868465
тебе и карты в руки. как раз перекат нужен
1002 1868525
>>868522
Нет, я стесняюсь.
1003 1868560
>>868525
Не стоит стесняться. Ты же не жавист
изображение.png4 Кб, 655x66
1004 1868724
Почему массив both_lower_than_zeroну и название я придумал.......... в результате данных манипуляций никак не изменяется?
1005 1868742
Должен ли код быть рабочим после каждого коммита? Или нормально, если одним коммитом поломаю код, а другими буду исправлять сломавшиеся части?
1006 1868750
>>868724
Потому что ты ничего не меняешь. По принципу работы твой код эквивалентен чему-то типа такого
foreach(double element in array)
...Handle(element);

int Handle(double value)
{
...return value + 0.5;
}
1007 1868752
>>868750
блэт, дабл вместо инта, но сути не меняет
1008 1868770
опять в теме больше 1000 сообщений
и снова мне придется перекатывать ныть о том, чтобы перекатили
1009 1868788
>>868742
Для неполноценных коммитов есть squash. Эта команда может собрать временные и поломанные коммиты в один нормальный.
В мастере каждый коммит в идеале должен содержать код, который можно сбилдить и прогнать тесты без ошибок.
1010 1868869
>>868750
Но ведь Array.ForEach возвращает void
1011 1868872
>>868869
foreach обычный тоже ничего не возвращает
1012 1868893
>>868724
y значимый тип, а значит копируется в лямбду и не заменяется
1013 1868895
>>868893
да даже если и ссылочный, то ничего не заменится. ссылки тоже копируются
1014 1869328
вы забыли перекатиться
1015 1869914
Wpf mvvm. Почему не обновляется изображение в Image?

Window.xaml:
<Image Source="{Binding Path=ImageQuestion, UpdateSourceTrigger=PropertyChanged}"/>

Window.xaml.cs:
private ImageSource _imageQuestion;
public ImageSource ImageQuestion
{
get=>_imageQuestion;
set
{
_imageQuestion = value
OnPropertyChanged("ImageQuestion");
}
public void OnPropertyChanged(string prop)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
public Window()
{
DataContext = this;
}

Обновляю свойство, в метод чеджед тригерит. В выводе приложения ошибок с биндингом никаких нету.
1016 1870129
тест на форматирование кода

`public MyClass GetMyClass(string name) { }`

`
public MyClass GetMyClass(string name) {
var myClass = new MyClass();
return myClass;
}
`

```public MyClass GetMyClass(string name) { }```
1017 1870263
>>869914

> Wpf


Здравствуй, Игорь! Это твой начальник. Помнишь меня? Я попросил тебя портировать наши корпоративные утилиты на линукс, для импортозамещения так сказать. Ты обещал перезвонить, как портируешь. Мы всем отделом уже полгода ждём твоего звонка.
1018 1870266
>>870263
здравствуй начальник. оказалось что никому на линусе мои утилиты не нужны, потому что доля линукса в десктопах да где применима моя утилита - ничтожны. Более того, линуксоиды не любят платить за софт.
1019 1870273
>>870129

> тест на форматирование кода


https://pastebin.com/APF43rYB
1020 1870447
1021 1870475
Нет, вот новый тред https://2ch.hk/pr/res/1870468.html (М)
1022 1873668
>>848127
Двачую WF господина!
1023 1894554
1024 1905687
>>846539 (OP)
Привет всем. Как быть?
была задача на десериализацию ~3000 страниц.
Сразу сделал через parallel.foreach. Пошло не очень, без async не то, ушло 3:10 минут на все.
Переписал на многотопочность через разбиение n количества страниц на 1 поток и внутри ещё async. Намного лучше ушло 1.30-1.40 на все.
потом через дебри узнал про tpl dataflow. Объединяющий удобства параллелизма, многопоточности и еще ассинхронно. Ушло 1:10-1:1:15 на десериализацию.
пока искал решение ушло больше времени чем на написание, чувствую себя архиологом. Если способы быстрого поиска нужного и актуального инструмента? А то вся информация про tpl dataflow за 2012-2017 год.
и так с каждым инструментом решающий сложную задачу. Нахожу первый попавшийся инструмент, потом ещё больше поисков через дебри ещё лучше инструмент, но все инструкции по нему дремучие ужас. А потом сижу и думаю может есть что-то более современее и лучше?
image.png10 Кб, 580x126
1025 1987742
Как в этом ебучем Visual Studio сделать так, чтобы неправильно введенная команда автоматически исправлялась? Эта функция раньше работала, но я что-то нажал и ВСЕ, редактор перестал автокорректировать неправильное написание.

Сижу гуглю уже ебаный час и НИХУЯ, как будто никто и не знает про эту функцию. Может тут кто-то знает?
Тред утонул или удален.
Это копия, сохраненная 18 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски