Программирование

Ответить в тред Ответить в тред
Check this out!
C#/Сишарп/.NET Тред #22 /csharp/ Аноним 02/11/20 Пнд 20:21:13 18465391
 .jpg 75Кб, 900x900
900x900
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.

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

1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- 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%20Overview
Новые возможности C# 8.0: https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-8

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

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

Прошлый тред тонет здесь: >>1797054 (OP)
Аноним 02/11/20 Пнд 20:22:27 18465432
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
Аноним 02/11/20 Пнд 20:41:46 18465603
шапка, как всегда, старее говна мамонта.
Аноним 02/11/20 Пнд 20:42:57 18465624
>>1846560
Напиши текст для новой шапки.
Аноним 02/11/20 Пнд 20:43:04 18465635
>>1846560
Все равно человек герой. Взял, да и перекатил.
Аноним 03/11/20 Втр 07:51:17 18468716
devenvsHXPn754yD.png 27Кб, 848x379
848x379
так ребята, вопрос по 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
Аноним 03/11/20 Втр 11:29:21 18469537
Вот знаешь ты C# лучше всех на свете, но ничего кроме C#. Потому нахрен никому ты не нужен. Учи блять технологии, фреймворки и дохуя всего.
То ли дело какой-нибудь PL/SQL - если ты профи, то будешь получать столько же, сколько сеньор шарпист, а знать дополнительно ничего не нужно.
Аноним 03/11/20 Втр 11:57:55 18469728
>>1846871
Самый простой способ найти функцию рендера и подставить вместо нее функцию, которая ничего не делает, чем снизить нагрузку на видеокарту почти до 0. Сомневаюсь, что кто-то реверсил Adobe AIR.dll, так что в руки какой-нибудь IDA Pro и вперед копаться в асме.

Как вариант найти адрес функции начала сцены по смещению, но для этого надо понимать что это такое, DirectX или OpenGL или еще какая хуйня.
Аноним 03/11/20 Втр 13:00:41 18470569
>>1846539 (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, чистил кэш, толку никакого.
Аноним 03/11/20 Втр 13:01:46 184705710
>>1846869 →
> есть ли что-то про архитектуры кроссплтформенных решений?
нетстандарт, неткоре
> как я понимаю в шарпе такой подход не будет работать
> А как тогда?
> Делаем разные реализации для каждой платформы
В качестве примера - современные MVVM-UI-тулкиты.
Кроссфплатформенный шаблон выглядит так:
Солюшон (Тест1)
Проект (Тест1_ЮИ), зависит от: дотнетстандарт
- Логика, окошки, модель (model), вью-модель (view-model) - абстрактные и платформонезависимые
Проект (Тест1_виндовс), зависит от дотнетстандарт, Тест1_ЮИ, ВПФ или формочки
Проект (Тест1_линукс), зависит от дотнетстандарт, Тест1_ЮИ, ГТКшарп или Кутшарп или от голых иксов или от фреймбуфера нахой
Проект (Тест1_андроид), зависит от дотнетстандарт, Тест1_ЮИ, андроид СДК или чо там
Проект (Тест1_макось), зависит от дотнетстандарт, Тест1_ЮИ, мак СДК или чо там

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

Всю логику пишешь в основном первом проекте солюшена Тест1_ЮИ. В остальные проекты не лезешь принципиально, они заточены под то, чтобы динамически выводить предоставляемые твоей вью-моделью данные и отдавать ей же события ввода. И соответственно, при сборке решения заводишь несколько конфигов, которые под каждую целевую платформу, на которую ты нацелился, собирают и разворачивают только два проекта из всего решения: Тест1_ЮИ и Тест1_%платформнейм%
Аноним 03/11/20 Втр 13:02:46 184705811
>>1847056
Создай новый проект заново и вручную добавь в него все файлы из старого.
Аноним 03/11/20 Втр 13:04:45 184705912
>>1847056
Попробуй удалить папки bin/obj вручную и сделать ребилд.
Аноним 03/11/20 Втр 13:16:42 184706313
image.png 89Кб, 225x225
225x225
Аноним 03/11/20 Втр 13:18:15 184706414
Аноним 03/11/20 Втр 13:25:53 184706715
Есть asp.net core приложение, довольно всё стандартно, обычный mvc. Хочу как-то логгировать изменение одного свойства в модели. Как это проще сделать? Гугл предлагает реализовывать INotifyPropertyChanged, но прочитал, что для web-приложений этот вариант не очень.
Аноним 03/11/20 Втр 13:34:37 184707316
>>1847064
> Model-View-Update
Хуясе, ебать! Спасибо, буду в курсе.
Аноним 03/11/20 Втр 13:42:27 184707417
>>1847067
Модель находится на клиенте или на сервере? Если на клиенте, то надо отправлять запрос на сервер при изменении. Если на сервере, то просто логгировать, используя NLog, Serilog, еще чего.

INotifyPropertyChanged - это просто интерфейс, который ничего не делает. WPF умеет автоматически через рефлексию пытаться взаимодействовать с INotifyPropertyChanged. Это не веб, но ничего не мешает реализовать это самому, смотреться только дико будет.
Аноним 03/11/20 Втр 14:24:55 184710618
>>1847073
Настолько молодежно, что его даже негде применить и хз зачем вообще его применять
Аноним 03/11/20 Втр 15:01:11 184714919
Господа, послезавтра собеседование, очко играет, покидайте вопросов на собеседовании по шарпу. Первые страницы гугла уже проверил
Аноним 03/11/20 Втр 15:07:32 184715420
>>1846972
>Самый простой способ найти функцию рендера и подставить вместо нее функцию, которая ничего не делает

Так EasyHook это и делает - перехватывает вызов функции и подставляет вместо него тот что тебе нужен.
Аноним 03/11/20 Втр 15:08:53 184715521
>>1846953
Ну так учи SQL. Если не выучил, значит не так уж это и просто - быть экспертом по SQL.
Аноним 03/11/20 Втр 15:11:39 184715722
>>1847149
В чём различия понятий "асинхронность, многопоточность и параллельность", опиши каждое, если они чем-то различаются.
Аноним 03/11/20 Втр 15:22:39 184716523
>>1847157
Многопоточность -- это когда код может выполняться в разных потоках, не обязательно одновременно. Параллельность означает что потоки могут выполняться одновременно, асинхронность -- это способность потока запускаться, не блокируя порождающий его поток.
Аноним 03/11/20 Втр 15:55:40 184719424
image.png 48Кб, 620x516
620x516
image.png 48Кб, 977x541
977x541
>>1846539 (OP)
Почему программа останавливается? Здесь 2 ридлайна, после того как я нажимаю интер после этого появляется fff2 и программа не завершается, последний метод не срабатывает.
Аноним 03/11/20 Втр 15:57:39 184719825
>>1847194
>и программа не завершается
Верней завершается вся программа, при этом что не срабатывает второй ридлайн
Аноним 03/11/20 Втр 16:00:36 184720426
>>1847194
async void - анти-паттерн и может вызывать непредсказуемые результаты, используй async Task.
Аноним 03/11/20 Втр 16:13:33 184721527
Аноним 03/11/20 Втр 16:15:13 184721828
image.png 5Кб, 465x137
465x137
>>1847204
Ну всё равно какой-то авто-интер срабатывает и после вывода ффф2 опять заканчивается программа, я не нажимал на интер
Аноним 03/11/20 Втр 16:21:38 184722429
>>1847218
Замени Read на ReadLine. Или используй два Read вместо одного.
Аноним 03/11/20 Втр 16:23:53 184722830
>>1846972
я вот кстате подменил d3d9 из того форума, картинки нету но память жрет абсолютно одинакового
Аноним 03/11/20 Втр 16:24:58 184723031
>>1847218
Можно еще ReadKey использовать. Enter - это два символа на Шиндовс.
Аноним 03/11/20 Втр 16:32:31 184724732
>>1847165
>асинхронность -- это способность потока запускаться, не блокируя порождающий его поток.

Т. е. асинхронность недостижима в однопоточных системах?
Аноним 03/11/20 Втр 16:36:01 184725233
>>1847228
Надо еще вырезать код, который создает константные буфферы и который загружает меши с текстурами. Причем такие буфферы бывают еще разных режимов. PoE ловит такую хуйню и дает бан.

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

Слышал новые видеокарты хотят научиться доставать ресурсы без процессора, не слежу.
Аноним 03/11/20 Втр 16:39:14 184725434
>>1847194
Task.Run убери везде.
Thread.Sleep на await Task.Delay(1000).
ShowTimer не должен быть асинхронным.
totalTime сделай внутри функции которая увеличивает эту переменную, перед циклом while;

>последний метод не срабатывает.
Отключи оптимизации при компиляции, возможно Console.Read() вырезается из-за того что дальше никакого кода нет. Если не поможет, то замени на Console.ReadLine();
Аноним 03/11/20 Втр 16:41:46 184726035
>>1847247
Философский вопрос. Асинхронность в шарпе всё равно использует потоки, просто не системные потоки.
Аноним 03/11/20 Втр 16:45:04 184727136
>>1847254
>>1847230
>>1847224
Спасибо, с двумя ридлайнами в конце программа корректно работает, а ещё работает если верхний Read на ReadLine заменить, а нижний можно просто Read оставить
Аноним 03/11/20 Втр 17:00:06 184728437
>>1847260
>Философский вопрос.

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

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

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

Асинхронность это больше про взаимодействие с внешними устройствами, а не многопоточность. Толку от того что ты отправишь запрос на сервер в отдельном потоке не будет.
Аноним 03/11/20 Втр 17:05:29 184729138
>>1847284
Всё равно ведь сохраняется стек и счётчик инструкций. Если они сохраняются, то там таки есть отдельный поток, пусть это и не поток операционной системы.
Поправь меня, если я не прав.
Аноним 03/11/20 Втр 17:23:16 184731539
Бтв, на тему параллелизма. Можно написать простой синхронный код, но выполняться его участки будут параллельно. Например:
https://youtu.be/Tb2Fx9qku_o?t=272

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

99% шанс, из собеседующих никто это знать не будет.
Аноним 03/11/20 Втр 18:34:21 184737740
>>1847106
Штош, тогда не буду в курсе.
Аноним 03/11/20 Втр 18:53:45 184741341
>>1847291

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

Асинхронность это когда ты не выполняешь задачу сразу, а возвращаешься к другим задачам, откладывая выполнение текущей. Это полезно когда на этапе выполнения задачи задействованы сторонние устройства, которые выполняют задачи на аппаратном уровне - сетевые запросы, чтение файлов с носителей, печать документов. Тебе достаточно периодически возвращаться к ним и проверять их статус.
Аноним 03/11/20 Втр 18:55:21 184741842
>>1847413
Ты не вполне понимаешь, что такое "поток" по-моему. Стек это часть потока?
Аноним 03/11/20 Втр 18:59:23 184742343
>>1847418
Да, но какое это отношение имеет к теме?
Аноним 03/11/20 Втр 19:03:56 184742844
>>1847315
>Можно написать простой синхронный код, но выполняться его участки будут параллельно.

Но это зависит от архитектуры процессора, как сказано в видео. А для эффективности многопоточного кода достаточно чтобы у процессора было >= 2 ядер.
Аноним 03/11/20 Втр 19:04:11 184742945
>>1847423
Прямое же.
В асинхронном методе поток выполнения доходит до await. Он сохраняет стек и возвращает поток выполнение в точку вызова асинхронного метода.
Философский вопрос: если у потока в двух точках разный стек, то разве это один и тот же поток? Если считать, что это поток операционной системы, то ответ да, возможна реализация асинхронности с помощью одного потока операционной системы. На деле происходит переключение потоков реализации асинхронности! Стеки-то разные, счётчики инструкций разные. Это натуральное преключение потоков.
Аноним 03/11/20 Втр 19:28:44 184744946
>>1847429
Он не сохраняет стек и не возвращает поток в точку вызова. Дойдя до await поток возвращается в пул потоков, помещая задачу в очередь пула потоков.
Сама асинхронная функция это объект в виде машины состояний в которой каждый await и всё что до него это определенный блок кода, выполнение этих блоков никак не связано с потоком который дошел до первого await.
Запусти асинхронный метод и выводи Thread.CurrentThread.ManagedThreadId перед await, во время работы метода и по его окончанию. Номер потока который продолжает выполнение после await будет всегда совпадать с номером который выполнил заключительную часть асинхронного метода.
Аноним 03/11/20 Втр 19:45:30 184745547
>>1847449
>Номер потока который продолжает выполнение после await будет всегда совпадать с номером который выполнил заключительную часть асинхронного метода.
Что говорит нам, что это один и тот же поток CLR. Не вижу, как это противоречит тому, что я написал выше.
Аноним 03/11/20 Втр 19:54:43 184746648
>>1847455
Тебя на собесе попустят с твоими философскими вопросами и попытками маняврировать.
Аноним 03/11/20 Втр 20:00:15 184747049
>>1847466
Отнесусь к этому философски и буду сразу уточнять, что интервьювер имеет в виду под потоком.
Я думаю, на собесе так и так попустят.
Аноним 03/11/20 Втр 20:10:40 184748350
Смотрите, обернул я, значится, статический HttpClient в нестатический класс, ну типа фасад, вы поняли, в инстансе этого фасада я принимаю еще Uri, ну и из разных мест могу делать запросы конкретно к нужному мене Uri, при этом выглядит со стороны будто HttpClient - не статичный. Так вот, все работало абсолютно нормально до того момента как мне взбрело в голову: Ой, смотри, это же куча однотипных задач с запросами, давай ка я сделаю кучу тасков и просто подожду пока они завершатся все. Ну дык, сказано - сделано. Запускаю - бах, нулл референс эксепшн, я такой охуеваю, смотрю, а почему-то тот Uri что должен передаваться в конструкторе - действительно nul(при этом я то не дурак, я в конструкторе проверку на null делал, а поле это вообще ридонли)l, окей, ставлю точку останова, и нихуя, все нормально Uri то что нужен, вообще все охуенно. Что, блядь, это за магия такая? Почему поле-то внезапно null становится и именно в релизе и исключительно после того как я решил не по очереди запросы делать а с вот так вот асинхронно все разом запустить и подождать пока завершатся.
Аноним 03/11/20 Втр 20:20:34 184748851
>>1847483
Если ты глядя на код ничего не понял, то чего ожидаешь от тех кто этого кода не видел?
Аноним 03/11/20 Втр 20:22:08 184748952
Image 3.png 16Кб, 553x380
553x380
>>1847483
значит не повезло тебе
я вот прямо щас ебусь с таким
но похоже у тебя не мой случай и прицепом за мной не пойдешь
Аноним 03/11/20 Втр 20:51:23 184752453
>>1846560
потому что шарп толком уже никому не нужен.
джава как была, так и осталась, а шарп, традиционно сильный в программах под винду, просто умер вместе с виндой. осталось только юнити и совсем чуть-чуть энтерпрайза.
винфон/винмобайл, винформ, впф, сильверлайт, виндоус сервер - все сгинуло.

сейчас на каком-нибудь жс/го/котлине можно гораздо быстрее написать несложный бек, либо на той же жабе, если нужно что-то более громоздкое. шарп не нужен, это видно по количеству вакансий.
Аноним 03/11/20 Втр 20:57:58 184753554
>>1847488
Ну блин. Кода с собой нет.

Суть, было так:
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 - нулл
...
}
}
Аноним 03/11/20 Втр 21:13:53 184754955
>>1847524
>традиционно сильный в программах под винду, просто умер вместе с виндой
шта?
как юзер видел софта под винду на шарпе - по пальцам одной руки можно пересчитать.
а в ентерпрайзах переходы на линуксы только мечты. как было - так и осталось.
Аноним 03/11/20 Втр 21:20:32 184755656
>>1847549
>а в ентерпрайзах переходы на линуксы только мечты. как было - так и осталось

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

да и вообще, вы ебанутые чтоли, какие сервера на WINDOWS SERVER в 2020 году? все уже давно либо свои сервера делают под линухом, либо арендуют у амазона под тем же линухом.
Аноним 03/11/20 Втр 21:47:37 184757557
>>1847556
>ну может и есть где, но мы не видели.
если не видели, значит не существует, ага )

весь виндовый софт в ентерпрайзах никуда не делся одним махом. это только в мечтах распильщиков "хуяк хуяк и линукса". а в остальном то же самое - переписывать софт под линукс сервер только потому что вот - мало кто будет.
Аноним 04/11/20 Срд 06:53:33 184770358
image.png 338Кб, 2308x1046
2308x1046
>>1847524
Сказочник. Если в твоей мухосрани нет вакансий, то это не значит что их вообще нет. Шарп разрабов порядка 6 млн сейчас и потихоньку начинают писать под линухи и контейнеры.
Факт - на шарпе гораздо быстрее написать бэк, чем на го/жава/скала. Дотнет по перформансу уделал жаву.

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

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

https://www.youtube.com/watch?v=kX0eX5tDGgc
Аноним 04/11/20 Срд 06:54:50 184770559
>>1847535
Попытался прочитать этот код, но глаза отказались. Надо или форматировать нормально или через ссылку на какой-нибудь pastebin.
Аноним 04/11/20 Срд 07:44:48 184771660
image.png 93Кб, 1003x831
1003x831
Аноним 04/11/20 Срд 12:56:34 184783361
>>1847716
Ваш дотнет не будет нужен, если не завезут поддержку ARM.
Аноним 04/11/20 Срд 13:02:09 184783562
Аноним 04/11/20 Срд 13:02:30 184783663
>>1847833
Тебя даже шторм не разбудил
Аноним 04/11/20 Срд 13:48:27 184786364
Объясните, что вы делаете на работе? Ну, не в смысле: "Пишем код", а какие задачи решаются, можно без конкретики, я понимаю, что всякие nda и все такое, достаточно в общем объяснить.
Аноним 04/11/20 Срд 14:16:52 184788365
>>1847558 →
что поделать. У каждого подхода свои недостатки.
Аноним 04/11/20 Срд 14:21:03 184788866
>>1847833
>>1847524
Почему как только я зайду в шарпо тред, всегда вижу спор с дебилом вылезшим из 2007, который кукарекает что шарп мертв, так как работает только на винде?
Заебал уже, в тред срать время у него есть, а посмотреть на вики что такое .net core нет.
Аноним 04/11/20 Срд 14:41:43 184790167
>>1846539 (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); всё равно получается хуета.
Аноним 04/11/20 Срд 15:04:02 184792468
>>1847901
Винформс не адаптивная, нужно wpf юзать
Аноним 04/11/20 Срд 15:33:06 184796369
>>1847863
"Эта херня не работает - почини" - дебажу, разбираюсь в коде, вношу исправления.
"Эта херня должна работать по новому" - разбираюсь в коде, меняю
"Запили эту херню" - пытаюсь найти схожий функционал, запиливаю херню
"Эта херня работает на старых библиотеках/не соответствует новой архитектуре/работает медленно" - переделываю как надо
"Сделай ревью этой херни" - делаю код ревью, пишу комментарии.
"Ананон, анон, что мы будем делать? Анон, анон, как мы будем жить?" - собираемся с командой и обсуждаем проблемы архитектуры или как будем делать конкретную нетривиальную фичу.
А еще есть планирование следующих итераций, где обсуждаем и разбираем задачи, оцениваем времязатраты; созвоны с клиентом; личные консультации с сотрудниками по небольшим проблемам разработки.
Аноним 04/11/20 Срд 16:02:07 184799170
У меня есть массив структур. Я бы хотел, чтобы в каждой структуре была ссылка на следующую структуру (Next).
Думал сделать это как ref поле. Но оказывается так нельзя.
Можно ли как-то сделать это без использования unsafe и без пихания в каждую структуру всего массива структур.
Аноним 04/11/20 Срд 16:44:58 184801671
>>1847991
У структуры должен быть фиксированный размер, цепочка связных структур невозможна, потому что размер первой структуры должен быть бесконечен.

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

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

Где NextIndex это индекс следующей структуры в массиве структур.
Аноним 04/11/20 Срд 18:23:22 184807172
>>1847991
Можешь юзать боксинг:
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);
Всрато, неэффективно, но без массива структур. Вообще, для такой хуйни созданы классы, посмотри что это такое.
Аноним 04/11/20 Срд 18:25:31 184807273
>>1847901
Нахрена тебе винформс? Бери и делай в браузере, как белый человек. ХЗ в чем проблема-то. Если это вообще что-то простое, то можешь вообще на электроне делтать, как все нормальные люди. Серьезно, тебе же удобнее будет.
Аноним 04/11/20 Срд 18:27:32 184807374
>>1848072
>на электроне
А что это?

другой чел
Аноним 04/11/20 Срд 18:28:12 184807475
Аноним 04/11/20 Срд 18:44:11 184807676
>>1848071
и да, изменять структуру через 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 это не указатель и не ссылочный тип, и вместо налла кинет в тебе в ебло ексепшн.
Аноним 04/11/20 Срд 19:11:27 184808977
>>1848073
лютое говно. да еще на лютом говне - жс
Аноним 04/11/20 Срд 19:39:19 184812778
>>1848072
WinForms - это лёгкость, простота, ясность и производительность.
WFP - это какое-то кривое чудовищное говнище для поехавших.
А уж JS-параша не нужна в принципе.
Аноним 04/11/20 Срд 19:42:22 184812879
>>1848127
WinForms - это лёгкость, простота, ясность и производительность.

пофиксил

когда нужно будет создать что то адаптивное, да с сложнее тупынх кнопочек, то сразу простота и легкость улетят в одно темное вонючее место
Аноним 04/11/20 Срд 19:46:36 184813580
>>1848128
Для нубов хорошо, что практически любой вопрос по WF легко гуглится.
Аноним 04/11/20 Срд 19:48:35 184813681
>>1848135
по WPF аналогично.
возможности несравнимы. разве что менее производительнее - факт
Аноним 04/11/20 Срд 19:53:03 184814682
>>1848136
Что может WFP, чего не может WinForms?
Аноним 04/11/20 Срд 20:03:45 184815783
Аноним 04/11/20 Срд 20:07:25 184816584
>>1848146
Возможность кастомизации - создание контролов с любой визуальной частью простыми средствами, а не еблей с OnPaint
ну и MVVM из коробки
Аноним 04/11/20 Срд 20:24:34 184818185
Аноним 04/11/20 Срд 20:35:26 184818886
>>1848181
Зачем выдирать интерфейсы, если у тебя нет других реализаций интерфейса и ты не собираешься использовать эти классы полиморфно? По-моему это глупо. Интерфейсы мудны. Логгер велосипедировать последнее дело, ставь NLog.
> public enum ServerState
Почему не bool? Undef нигде не используется.
> Socket acceptor = new Socket();
var
> acceptor.Bind(new IPEndPoint(IPAddress.Parse(_host), _port));
Нет валидации, запросто может вылететь исключение
> acceptor.Listen(100);
Магическое число

В целом нагородил "архитектуры" где её нет, получилось горе от ума — путанный студенческий код.
Аноним 04/11/20 Срд 20:52:05 184819687
>>1848181
async void Stop()
это как
и в чем заключается операция остановки?
Аноним 04/11/20 Срд 20:52:41 184819788
>>1848196
>async void
Антипаттерн вне эвент хендлеров, кстати
Аноним 04/11/20 Срд 20:59:59 184820489
>>1848196
Да, тупанул, тут async не нужен, просто по инерции написал.
В данном случае - просто меняем флаг.

>>1848197
А как тогда нормально запустить что-то что должно просто выполняться и я этого ждать не хочу?
Аноним 04/11/20 Срд 21:00:40 184820690
Аноним 04/11/20 Срд 21:03:09 184820791
>>1848206
Ну дык async Task предполагает что я ждать буду, а мне не надо. Я конечно могу и не ждать, но тогда IDE будет мне упорно светить зелененьким что нужно подождать.
Аноним 04/11/20 Срд 21:11:58 184821592
>>1848204
В чем смысл просто смены флага если оно висит на await
Аноним 04/11/20 Срд 21:13:34 184821993
>>1848207
_=MyAsyncMethod() если нужно fire and forget
Аноним 04/11/20 Срд 21:16:34 184822294
>>1848188
>Зачем выдирать интерфейсы, если у тебя нет других реализаций интерфейса
Я не тот анон, но я всегда выделяю интерфейсы для больших и/или сложных классов. Они добавляют читабельности.
Смотришь на интерфейс и сразу понимаешь внешний функционал класса, понимаешь его связность с другими классами, понимаешь, насколько он грамотно выделен.
Аноним 04/11/20 Срд 21:22:36 184823395
>>1848222
Code region + Collapse to definitions
Аноним 04/11/20 Срд 21:29:33 184824696
>>1848215
Ну блин, не хотелось мне оборачивать прием сокета в Socket clientSocket = await Task.Run(async () => await acceptor.AcceptAsync(), cancellationTokenSource.Token). Выглядит это убого.
Аноним 04/11/20 Срд 21:36:43 184825497
>>1848246
ну а кто вас заставляет не любить TcpListener и опускаться ниже без особой на то причины
Аноним 04/11/20 Срд 23:00:51 184831598
>>1848246
Если уж пилить велосипед, то либо с идеально архитектурой, либо с какими-то фишками. А это что? Поделка из раздела "топориком на коленке".
Аноним 04/11/20 Срд 23:07:35 184831999
>>1848315
Курсовая это. Вебсервером оно должно стать. С поддержкой этих ваших шифрований и прочей фигней. Ну и возможностью в случае чего быть не только веб-сервером, а каким-нибудь сервером для проверки времени. Не будешь же ты время засовывать в HTTP, когда можно просто отдать просто байтики.
Аноним 04/11/20 Срд 23:18:20 1848326100
>>1848319
Ну тогда открывай готовую реализацию и переписывай своими словами.
Аноним 04/11/20 Срд 23:19:54 1848327101
Lul
Аноним 04/11/20 Срд 23:55:18 1848338102
>>1848326
Да я как-бы уже посмотрел как гайды так и исходники того же кестрелла. Просто например кестрел по мне слишком сложноватый для курсача, с другой стороны то что в гайдах там совсем какая-то примитивщина, где мы берем просто HttpListener, пишем один цикл, добавляем асинхронный обработчик, и все готово. При этом оба эти варианта заточены исключительно под веб, а мне таки хотелось чтобы можно было запилить решение которое могло бы в теории таки не ограничиваться 2 протоколами.
Аноним 05/11/20 Чтв 00:29:21 1848367103
>>1848338
>ограничиваться 2 протоколами
это какие такие протоколы?
Аноним 05/11/20 Чтв 10:24:10 1848485104
Как правильно реализовывается паттерн Репозиторий и Unit of Work, и нужно ли вообще это делать, или это антипаттерн и достаточно EF контекста? В одних примерах репозитории возвращают IQueryable<T>, в других IEnumerable<T>, в одних сохраняют изменения после каждой операции, в других этим занимается unit of work, хрен поймёшь.
Аноним 05/11/20 Чтв 11:05:36 1848501105
«На дваче только и разговоров, что о дотнете и о пятой версии. Там говорят о том, как чертовски здорово наблюдать за огромной платформой, как он решает все вопросы бизнеса. И еле видимый свет, словно от тень от джавы, горит где-то на дне…»
Аноним 05/11/20 Чтв 11:12:56 1848507106
>>1848485
>нужно ли вообще это делать,

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

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

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

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

Сохранением, изменением, восстановлением должен заниматься unit of work это его прямое назначение.
Аноним 05/11/20 Чтв 12:13:41 1848535107
>>1848507
А если я к возвращаемым из репозиториев IEnumerable буду применять всякие .Where().Select(), я же получается загружу лишние данные из БД, и только потом буду их фильтровать. Это ведь не хорошо?
Аноним 05/11/20 Чтв 12:15:05 1848536108
>>1848535
IEnumerable уже загрузил всё, вот если к IQueryable применить фильтрацию, то будет запрос к бд.
Аноним 05/11/20 Чтв 12:17:36 1848537109
Аноним 05/11/20 Чтв 12:19:56 1848539110
>>1848536
Так я и спрашиваю, плохо ведь всё загружать из БД, если мне нужны отфильтрованные данные? Фильтрация на стороне бд ведь лучше?
Аноним 05/11/20 Чтв 12:20:40 1848540111
>>1848539
кэп говорит что да, плохо
Аноним 05/11/20 Чтв 13:42:22 1848580112
>>1848540
И если возвращать IQueryable и к нему применять всякие фильтры, то фильтрация будет происходить в бд. Зачем тогда репозиториям возвращать IEnumerable (то есть всю таблицу)?
Аноним 05/11/20 Чтв 13:44:05 1848584113
>>1848580
я зачем ссылку дал? прочел бы и понял суть
Аноним 05/11/20 Чтв 14:58:11 1848631114
Как встроенными средствами без ручного парсинга конвертнуть дату из строки типа "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
Аноним 05/11/20 Чтв 15:01:42 1848639115
>>1848539
Поэтому вся фильтрация происходит в репозитории, а из него возвращаются отфильтрованные данные. Если тебе репозиторий возвращает IQueryable, значит ты из кода вне репозитория будешь работать с БД. Что тебе не понятно?
Аноним 05/11/20 Чтв 15:02:54 1848640116
>>1848631
ну тащем там MMMM надо
Аноним 05/11/20 Чтв 15:03:54 1848642117
>>1848639
>Поэтому вся фильтрация происходит в репозитории
То есть репозиторий должен определить методы Where и прочие?
Аноним 05/11/20 Чтв 15:05:23 1848645118
29.jpg 26Кб, 647x249
647x249
Аноним 05/11/20 Чтв 15:11:13 1848650119
>>1848640
Точно, спасибо
>>1848645
Тоже спасибо, но остановлюсь на первом варианте
Аноним 05/11/20 Чтв 15:12:33 1848651120
>>1848580
IEnumerable означает, что данные уже загружены, и ты вне репозитория не сможешь применить логику, повлияющую на БД
Аноним 05/11/20 Чтв 15:16:19 1848655121
>>1848642
Если под "определить" ты подразумеваешь фильтрацию и выборку, то да. Происходит это либо в зависимости от параметров запроса метода репозитория, либо в зависимости от самого метода. Например, если тебе нужен товары всех видов кроме определенных, то у репозитория должен быть метод ProductRepository.GetAllProductsExcept(ProductType[] pTypes), а внутри этого метода ты уже вызываешь осуществляешь соответствующий запрос к бд с нужной фильтрацией.
Аноним 05/11/20 Чтв 15:18:47 1848660122
>>1848650
Замени еще new CultureInfo("ru-RU") на CultureInfo.GetCultureInfo("ru-RU")
Аноним 05/11/20 Чтв 15:28:21 1848675123
>>1848580
>Зачем тогда репозиториям возвращать IEnumerable (то есть всю таблицу)?
зачем зачем . причины
1 логика фильтрации закодирована внутри метода, так что вернет он уже отфильтрованное (и обычно имя метода намекает)
2 если логика фильтрации не закодирована внутри метода, то может принимает спецификацию
3 А может реально нужно прочитать все. GetAll должен читать все по определению.
4 А если и спеки нет, то может кодил тупой кодер, для которого нормально, что он идет за пивом, притаскивает домой все содержимое магазина, берет бутылочку, а остальное в мусор
Аноним 05/11/20 Чтв 17:58:20 1848830124
image.png 1112Кб, 1920x1080
1920x1080
image.png 870Кб, 1920x1080
1920x1080
image.png 147Кб, 858x513
858x513
image.png 213Кб, 805x500
805x500
Блять, а как многопоточность дебагать? У меня при дебагинге правильно код строится, а когда без него запускаю какого-то хуя переменная увеличивается на 1, а я даже логически не пойму как она может увеличиться
Аноним 05/11/20 Чтв 18:09:12 1848839125
>>1848830
и там в скобочках обосрался немного где (int) но все равно увеличивается b каким-то хуем
Аноним 05/11/20 Чтв 18:11:20 1848840126
>>1848830
ебать я долбоёб += с = перепутал...
Аноним 05/11/20 Чтв 19:11:00 1848893127
>>1848830
У тебя не многопоточность
а асихнхронность

совершенно разные вещи
Аноним 05/11/20 Чтв 19:13:31 1848898128
>>1848840
> ебать я долбоёб
Все мы тут братушки. Не расстраюйся.webm
Аноним 05/11/20 Чтв 19:14:22 1848899129
>>1848893
> совершенно разные вещи
Чому разные? Асинхронность же реализуется через потоки.
Аноним 05/11/20 Чтв 19:21:02 1848910130
>>1848899
Да, через потоки.
Но это не самоцель "создать потоки", смысл асинхронности - не задерживать выполнение программы, а пропускать выполнение дальше. Автоматически создавать потоки и не иметь управление ими.
Многопоточность это всегда про управление потоками, а не использование их для достижения "пропустить код без задержки" главного цикла

шиза, конечно,
Аноним 05/11/20 Чтв 19:37:08 1848923131
>>1848830
lock лишний, если изменение переменной происходит в одном месте. Если не в одном, то лучше заменить на Interlocked.Increment(totalTime);
Аноним 05/11/20 Чтв 19:49:39 1848937132
>>1848910
> шиза, конечно
Не шиза, а магическое мышление:
> я низнаю що такое патоки, мене сказали тут асинк - там авайт - и буит работать. И ищо мне сказали пишиш таск.рун, скобачьки, стрелачку, фигурные скобачки и вот шо в фигурных скобачках - то будит асинхрона. А остальное миня ниибёт. Главнае - работаит.
Аноним 05/11/20 Чтв 20:00:49 1848948133
>>1848937
О, это моё мышление, вопросы?
Аноним 05/11/20 Чтв 21:31:07 1849013134
>>1848923
да вообще то даже если и в одном. если чтение происходит в другом и у вас не асинк/авайты то в теории могут быть проблемы из-за оптимизаций компилятора
Аноним 05/11/20 Чтв 21:54:36 1849040135
>>1848948
> вопросы?
Хуй будешь?
Аноним 05/11/20 Чтв 21:57:54 1849043136
>>1849013
Каких оптимизаций? int переменную можно безопасно изменять одним потоком одновременно и считывать эту переменную из нескольких потоков тоже одновременно. Потому что это всё атомарные операции.
Аноним 05/11/20 Чтв 22:00:15 1849047137
>>1849043
>Каких оптимизаций
перестановка инструкций
кеширование значения
инлайн переменной
и тому подобное
Аноним 05/11/20 Чтв 22:03:17 1849052138
Аноним 05/11/20 Чтв 22:04:42 1849054139
>>1849052
и всё
от похер до "ай пиздец бедная моя жопа"
Аноним 05/11/20 Чтв 22:12:13 1849074140
>>1849047
Похоже на шизу, а не на реальность.
Аноним 05/11/20 Чтв 22:14:55 1849080141
>>1849074
да. лучше не знать. а зачем знать. все равно говнокод пишем, да текущая архитектура процессоров спасает положение. да jit действует по алгоритму "да ну хз лучше я лишний раз не полезу оптимизировать"

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

а в данный момент я в очередной раз пишу телеги в мс и остальные ко ибо очередной гейзенбаг с NRE
Аноним 05/11/20 Чтв 22:46:18 1849123142
Аноним 05/11/20 Чтв 23:02:56 1849134143
Сеньор-крестовик 7 лет опыта на связи. Плюсы задолбали, ищу запасной аэродром.
Посоветуйте, есть ли смысл вкатываться в шарп? Какие подводные камни? Что почитать, чтобы быстро освоиться, минуя стадию хелловорлдов и физбаззов?
Аноним 06/11/20 Птн 00:45:35 1849198144
>>1847703
>картинка
>.net на mobile и iot
Я бы постеснялся такое скидывать.

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

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

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

В плане clr vs jvm? Ну принеси пруфы, посмотрим. Однако перфоманс в энтерпрайзе не так уж и важен, имхо.
Аноним 06/11/20 Птн 00:59:36 1849205145
>>1849198
Оправдания жабапетуха:
>за счёт легаси дерьма вакансий больше в 2.5 раза
>компания будет платить за хуевую жабу больше просто потому что
>если хоть один жаба-петух не слышал про выход .Net в опенсорс, значит шарп это только майкрософт
>компании будет всё равно на хуевую производительность жабы просто потому что

проиграл. Майкрософт это, кстати, один из больших плюсов C# и .Net, они поддерживают большой штат высококлассных специалистов, которые каждый день работают над улучшением платформы. Они могут себе позволить делать код-ревью тех кто хочет сделать свой вклад в опенсорс, что еще больше повышает качество кода. Всё это время разработчики Java сосут лапу и думают как выжить, о развитии языка даже речи не идёт, всё держиться на Java-макаках, которые не хотят осваивать более лучшие инструменты.
Аноним 06/11/20 Птн 01:00:50 1849206146
>>1849198
>В плане clr vs jvm? Ну принеси пруфы, посмотрим. Однако перфоманс в энтерпрайзе не так уж и важен, имхо.

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

Вот тебе июльский отчет об улучшении производительности. Показывай подобное от жаба-разрабов.
Аноним 06/11/20 Птн 01:05:45 1849210147
>>1849134
>Какие подводные камни?
ConfigureAwait по дефолту true
так что сиди лучше на плюсах
Аноним 06/11/20 Птн 01:49:49 1849225148
Жвач, сколько по вашему останется актуальным ASPNET Core?
Аноним 06/11/20 Птн 01:54:32 1849227149
>>1849225
Хочу вкатится, ток непонятно на какой шаблон больше спрос там mvc не mvc, react не react, какая то темень но интересно
Аноним 06/11/20 Птн 02:02:28 1849230150
>>1849227
У ASP .Net сейчас один шаблон - MVC. Только View можно отбросить, так как это задача фронтенд фреймворка, бэкенд только общается с БД и отдает данные в json формате. Самый популярный сейчас фронтенд фреймворк это React, потом Angular, потом Vue. В дополнении к этому нужно знать Entity Framework и SQL.
Из фронтенд фреймворков приятнее всего работать с Ангуляром, потому что архитектура и принципы похожи на ASP .Net, но для него нужно будет выучить Typescript (осваивается за пару недель при условии что знаешь C# и JS).
Аноним 06/11/20 Птн 02:12:56 1849233151
>>1849227
Ну хоти. Я-то спрашивал про время актуальности, а не вкат.
Аноним 06/11/20 Птн 04:14:34 1849248152
>>1847888
Тоже по пол года не захожу, а как зайду то сразу вижу вброс про винду.
Через 4 дня выходит .NET 5 и окончательно стирает все вопросы о кроссплатформенности, а у него какие-то старые мантры десятилетней давности.
Аноним 06/11/20 Птн 04:46:56 1849253153
>>1849248
вот только они там умудрились набрякаченджить по сравнению с 3.1
посмотрим посмотрим

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

Я так понимаю, надо наследоваться от селектора или же есть способы проще? Много времени на это тратить нежелательно, а сделать хочется красиво и удобно. Сам я вообще плюсовик, пожалуйста, направьте в нужное русло
Аноним 06/11/20 Птн 10:17:29 1849333156
>>1849310
Ну бля, если ты видя готовое решение не можешь написать своё, то анон здесь бессилен.
Аноним 06/11/20 Птн 10:17:55 1849335157
>>1849294
Правильно, не нужен. В следующим перекате уберёшь.
Аноним 06/11/20 Птн 10:38:37 1849352158
>>1849333
Там нет сурсов, в этом и дело
Аноним 06/11/20 Птн 10:58:13 1849367159
>>1849248
Какой шанс, что популярность скакнет OVER 9000% как питухон в свое время "взорвал" интернеты?
Аноним 06/11/20 Птн 11:01:44 1849374160
Эх, вот бы мне перекатиться в C# без потери ЗП...
2 года скриптов на питоне, потом смещено бекенд на JS/C++

Надеюсь, с выходом .net5 вакансий станет на 50% больше и я смогу конкурировать на 100к хотя бы
Аноним 06/11/20 Птн 11:08:33 1849382161
>>1849352
Есть демо версия. Как оно по твоему отображается? Особенно учитывая, что у них проверка лицензии оффлайн происходит.
Аноним 06/11/20 Птн 11:33:31 1849419162
>>1849382
Я пошарился в нугет-пакете, там дллки, насколько понимаю, сурсы с них не получить
Аноним 06/11/20 Птн 11:43:02 1849434163
>>1849419
Ясно. Пиши тогда сам, реализацию найдёшь на JS-е, перенести на WPF будет не сложно.
Аноним 06/11/20 Птн 12:44:47 1849488164
>>1849419
> сурсы с них не получить
да сурсы получить легко. просто они бесполезны же ведь это хамарин где ты описываешь хамлом содержимое, а потом рендереры пытаются на конечной оси пытаются это нарисовать средствами системы понативнее.
Аноним 06/11/20 Птн 15:50:48 1849627165
Аноним 06/11/20 Птн 17:27:44 1849752166
>>1849627
Спасибо, видел это, как раз собираюсь переделать, если ничего лучше не получится
Аноним 06/11/20 Птн 19:17:59 1849862167
.png 22Кб, 709x534
709x534
Няшные вы мои, давайте, объясните, как будет работать код на прикриплейде и нужно ли мне писать lock тут?
Аноним 06/11/20 Птн 19:27:38 1849872168
20200305031119.jpg 32Кб, 447x207
447x207
>>1849862
Конструктор замени на статичный чтобы предотвратить возможность создать несколько таких таймеров.
Аноним 06/11/20 Птн 20:28:14 1849931169
image.png 11Кб, 382x145
382x145
image.png 7Кб, 476x130
476x130
Бесполезный метод, добавленный обфускатором, состоит в числе используемых в программе, и чекается в моём алгоритме по исключению трешовых методов, хотя проверил IL-инструкции глазами (поиск, сука, не завезли) - нихуя нет.

В чём может быть проблема?
Аноним 06/11/20 Птн 20:39:26 1849938170
>>1849931
Вычищаю адаптацией вот этого https://github.com/Silv3rPRO/proshine-cleaner
если что. Из коробки она не работает, надо было допилить всякие штуки.

Излишние методы иногда ссылаются сами на себя (и тут мне надо кумекать алгоритм), но есть и такие, на которые ссылаются подлинные методы, но на самом деле нет
Аноним 06/11/20 Птн 20:56:29 1849949171
>>1849862
так делай таймер одноразовым, а калбек таймера пусть перезапускает таймер
или же сделай while(true) (на самом деле while ct.IsCancellationRequested) с кодом выполнения и await Task.Delay вместо таймера
Аноним 06/11/20 Птн 21:13:07 1849967172
.jpg 244Кб, 1533x2048
1533x2048
Почитал эту вот статью https://habr.com/ru/company/vdsina/blog/525738/. Автор конечно мудак и большая часть как по мне хуйня, но вот идея с папками и неймспейсами мне понравилась.
И теперь вот не знаю, а как действительно лучше с именами классов поступать. Ну, просто сереьзно, все в моей галлере тупо делают 4 папочки: Models, Controllers, Data, Services иногда добавляя Const и Util и хреначат в них, потому чтобы как-то различать схожие по незнанию сущности приходится изебываться как не в себя, потому что вот у нас есть User, и есть еще один User, один это от Identity, другой внутри приложения, и когда они встречаются в рамках одного класса получается какая-то залупа, потому в конторе придумывают всякие AppUser, и прочую странную фигнюа ведь серьезно просто Identity.User, Application.User - все понятно и при этом вроде норм смотрится.
В общем, объясните, как вы именуете классы, как неймспейсы используете, как папочки и расположение файлов у вас организованы, потому что чаще всего я примерно как у нас на гитхабе вижу, но мне вот как-то оно не нравится, как-то оно просто при росте кодовой базы превращается имхо в какой-то пиздец и удобнее было бы, наверное, папочки скорее по фитчам разбивать. Короче, делитесь своими секретиками, как проект количество файлов с иходным текстом в котором перевалило за 500 держать в структурированном состоянии, чтобы искать было просто и чтобы не было проблем с пониманием какая сущность где.
Да, проблема у нас еще в том, что никто не хочет брать на себя работу сделать какие-то общие библиотечки и вынести то что часто пользуем в отдельный проектик, потому получается вот такая срань: Ты пилишь свой микросервис, изначально что-то общее скопипастил из другого, потом идет время, в том куске что-то поменялось, а тебе не хочется менять свой код, потому что оно-то работает у тебя и ничего тебе нового не нужно, и получается что куча дублирования. Я говорил: "Давайте вынесем это в отдельную библиотеку, чтобы каждый раз этой хренью не заниматься", но мне говорят, что это лишняя трата времени и проще копипастнуть. Вот.
Аноним 06/11/20 Птн 21:16:12 1849973173
>>1849967
Статью не читал, подход хороший. Если модели в одном месте начинается "Customer", "SmallCustomer", "CustomerLight", "CustomerWithZalupa"... Особенно хорошо ложится на CQRS - модель вообще можно держать вместе с командой/запросом.
Аноним 07/11/20 Суб 01:19:01 1850154174
Хм. Часто слышу что switch не нужен. Ну и как-бы понимаю почему обычный ругают.
Но а что насчет
var time= offsetType/пусть это типа enum/ switch{
OffsetType.Day => DateTime.Now.AddDays(offsetValue),
OffsetType.Minutes => DateTime.Now.AddMinutes(offsetValue),
...
};
?
Просто мне кажется это удобнее чем городить кучу ифов или вообще ебануться и цепочку ответственности для этой херни делать. Вроде с ходу все ясно, при этом довольно компактно. Хотя я бака что в иногда достает из этого свича экшн, наверное так делать не стоит, но в общем случае же он все еще удобен и прост для понимания.
Аноним 07/11/20 Суб 02:27:53 1850185175
>>1849967
Так это проеб в архитектуре, а не именовании. Чем дольше откладывают рефакторинг, тем ближе всё становится к пиздецу.
Аноним 07/11/20 Суб 02:31:19 1850188176
>>1850154
Если нужно присвоить значение переменной, то удобней использовать switch-expression, особенно удобно когда нужно присвоить несколько значений - возвращаешь кортеж и деконструируешь его. Если нужно сделать какие-то действия, то лучше обычный switch, также он удобен когда несколько значений отвечают за одно и тоже действие.
Заменять обычный свитч можно только паттерном Состояние, когда ты вместо свитча создаешь состояния и присваиваешь их объекту который их принимает.
Аноним 07/11/20 Суб 04:41:53 1850224177
>>1848233
Какой пиздец. Пиздить по ебалу всех, кто region использует. Я их ещё в 2008 ненавидел, а теперь так вообще хочется выслеживать кодера с арматурой за такое.
Аноним 07/11/20 Суб 04:42:27 1850225178
>>1848188
Интерфейс - это контракт. А потом уже полиморфизм.
Аноним 07/11/20 Суб 05:02:53 1850226179
>>1849198
Ну вообще относительно вакансий под разные технологии смотреть СНГ в принципе глупо. Надо в первую очередь смотреть те страны, где эти технологии разрабатывают. Майки щас нет5 распиарят и через 1-2 года кол-во проектов и вакансий на нём попрёт в гору (в целом в них и щас недостатка нет).

Производительность хоть где нужна. Но у энтерпрайза как раз большое кол-во пользователей и, как следствие, трафика. У них есть такая фигня как SLA - https://en.wikipedia.org/wiki/Service-level_agreement
Часто требуется чтобы ресурс под нагрузкой полностью загружался в течении 1-3 сек. Мы умудрялись тяжёлые сайты за 200-500мс полностью загружать и отрисовывать, когда у тебя наплыв несколько тыщ юзеров разом. Клиенты тоже могут тебя ссаными тапками закидать, если им постоянно отклик ждать приходится.
Аноним 07/11/20 Суб 05:04:44 1850227180
>>1847558 →
У меня их 100, полёт нормальный. Под каждый набор сущностей свои репозитории.
Аноним 07/11/20 Суб 10:42:46 1850265181
1604734965911.png 61Кб, 200x201
200x201
>>1850224
Корни этой ненависти в детстве?
Ты трогал себя под одеялом, а мама ругала тебя за это?
Аноним 07/11/20 Суб 12:01:39 1850299182
>>1850227
и в каждой репе куча методов
или небось IQuerable наружу выставлен
Аноним 07/11/20 Суб 12:56:10 1850325183
>>1848233
Это не скроет кучу приватных полей и методов, хотя при чтении кода нужно зачастую видеть лишь внешнее поведение класса.
Аноним 07/11/20 Суб 12:58:25 1850326184
>>1849374
100к - это и для толкового джуна не зарплата.
Аноним 07/11/20 Суб 14:05:43 1850394185
>>1850224
Ну блин, няша, вот я делаю имплементацию какого-то интерфейса, удобнее же взять и отделить ее #region. Получается оч удобно, конечно при условии что ты из этих имплементаций не тянешь что-то что в других имплементациях лежит, но я обычно так не делаю.
Аноним 07/11/20 Суб 14:08:19 1850397186
>>1850326
Да-да, все же в ДС живут и в каждом городе есть конторы, которые предлагают такие вот ЗП. В моем вот за шарписта с требованиями будто в гугл платят 80к рублей, это с 6 годами опыта.
Аноним 07/11/20 Суб 15:22:07 1850432187
>>1850394
Удобнее когда у тебя этот интерфейс лежит в отдельном неймспейсе. А регион только служит успокоительным вида "у меня не насрано в структуре приложения, потому что я по регионам разбил всё.
Аноним 07/11/20 Суб 15:45:20 1850461188
>>1850432
Так интерфейс и лежит в отедельном неймспейсе.
Просто банально нужно 2-3 интерфейса имплементировать в рамках одного класса.
Аноним 07/11/20 Суб 16:26:08 1850496189
Поясните за наследование. Когда надо, а когда нет?
Вообще, складывается ощущение что не нужно никогда, разве что наследуешься от совсем уж какого-то базового абстрактного класса в котором просто логика которая всегда и везде используется, а вот если уже брать уровни повыше, то получаешь ненужный обвес в наследство и проще вообще использовать только интерфейсы.
Вот и поясните, когда надо-то, а то мои попытки использовать наследование, когда иерархия состоит хотя бы из 3 уровней превращается в пиздос.
Аноним 07/11/20 Суб 17:10:53 1850531190
>>1850496

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

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

Интерфейсом классы не заменишь хотя бы потому что у интерфейса не может быть конструкторов (в 8 версии можно объявить статический конструктор, констант (в 8 вресии может), полей.
Аноним 07/11/20 Суб 17:47:12 1850577191
>>1850496
предпочитай де-ле-ги-ро-ва-ние (чокнутый фильтр двача), кроме случаев, когда наследование выгоднее или так и должно быть
Аноним 07/11/20 Суб 19:13:04 1850615192
>>1849253
Гуляю по разной степени паршивости долгостроев. Не видел ConfigureAwait(false). В новых его тоже нет. ЧЯДНТ?
Аноним 07/11/20 Суб 19:47:06 1850631193
>>1850615
Гуляешь по говнокоду значит или по коду с UI
Ну или asp.net core где SyncronizationContext-а нет и можно не писать.
Но скорее всего по говнокоду, ведь рекомендация гласит - используйте везде ConfigureAwait(false) во избежание потенциальных дидлоков. Но это не значит, что дидлоки будут везде - потому народ и не пишет, пока не стрельнет
Опытный же программист пишет всегда когда не нужно иное.
Аноним 07/11/20 Суб 19:55:21 1850635194
>>1850631
> или asp.net core где SyncronizationContext-а нет

Он там есть.
Аноним 07/11/20 Суб 19:56:16 1850637195
Аноним 07/11/20 Суб 20:00:58 1850640196
Аноним 07/11/20 Суб 20:03:54 1850642197
>>1850640
ты это к чему линк дал?
Аноним 07/11/20 Суб 20:08:02 1850647198
>>1850642
Чтобы ты прочитал и не срал своим бредом в треде.
Аноним 07/11/20 Суб 20:12:28 1850649199
>>1850647
ты сам хоть читал что дал?
по твоей ссылке написано (впрочем и так все знают)

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

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

так что больше кумекай, а потом кукарекай )
Аноним 07/11/20 Суб 20:32:06 1850658200
29.jpg 163Кб, 787x360
787x360
>>1850649
>- Avoiding deadlocks
>нужно ConfigureAwait(false), чтобы избежать дедлоков
Избегает дедлоки использование ConfigureAwait(false) в случаях когда твой код используется в качестве импортируемой библиотеки. В этой статье это подробно описывается.

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

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

Ну да, даже сам создатель не знает, спешите видеть (пикрил из статьи).
Аноним 07/11/20 Суб 20:55:28 1850675201
Image 1.png 27Кб, 855x295
855x295
>>1850658
>в случаях когда твой код используется в качестве импортируемой библиотеки. В этой статье это подробно описывается.
ну я библиотеки часто пишу.
более того, любой модуль в программе рекомендую воспринимать как библиотеку. Сегодня он вызывается без контекста, а через годик может нарисоваться контекст, даже в 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 тоже упоминал, раз ты читаешь все буквально.

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


Аноним 07/11/20 Суб 21:40:10 1850708202
>>1850649
>Avoiding deadlocks
Хз, где может потребоваться писать Result или Wait.
Аноним 07/11/20 Суб 21:47:46 1850714203
>>1850708
Программисты делятся на 2 вида
кто еще не ставит ConfigureAwait(false), там где контекст явно не нужен и оставляет "ну вроде работает же и так будет всегда"
и кто УЖЕ ставит ConfigureAwait(false).

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

Удивляюсь что мс не сделали что то типа
await
await!
вместо длинннннючего ConfigureAwait
Аноним 08/11/20 Вск 15:02:35 1851108204
>>1850397
А что тебя держит в твоём городе?
Я свалил из вонючей мухосрани в ДС вообще без подготовки и плана, просто заебала беспросветная совковая нигерия в снегах без перспектив и надежд. Поначалу спал в хостелах с гастерами, всё ценное носил с собой в рюкзаке (большом и желтом, хе-хе), учил питон, и уже через 3 месяца работал в тёплом офисе и снимал комнату на одного. А через год жил уже совсем как белый человек.
Аноним 08/11/20 Вск 15:35:49 1851134205
>>1851108
Допустим я не хочу жить в хостеле, а при текущей ЗП чтобы снимать даже студию я должен, минимум, год откладывать(имеется ввиду заплатив за полгода вперед, конечно, я же если решу ехать хочу быть уверен что закреплюсь, а не просто приеду, попержу в студии и поеду обратно), при этом я не знаю города, я не умею заводить знакомства и не хочу просто сыграть в рулетку. Оставаясь тут, есть ненулевой шанс, что таки либо станет все лучше со временем(у дедек старше же ЗП больше), либо таки подвернется шанс. А поступать импульсивно - ну такое.

мимо
Аноним 08/11/20 Вск 16:21:46 1851160206
>>1851134
Нет никакой лотереи. Чем быстрее перекатишься, тем раньше начнёшь нормально жить.
Курьер в яндекс-яде или аналоге получает 200 руб./час. Это самая тупая работа, куда берут всех. Если работать 20 дней в месяц (2 дня через 1) по 12 часов, то чистыми на руки получишь 42к. Из них 15к отдашь за комнату. На остальное живешь, на жрать без изысков, связь, на шмотки, мыльно-рыльное хватит. Параллельно ходишь по собесам, ботанишь и восполняешь пробелы в знаниях. На работе в плеере английский (аудиоуроки) учишь.
Если у тебя есть опыт работы несколько лет в твоей мухосрани, то тебя в принципе на первом же собесе в ДС возьмут на зп, большую чем в мухосранях, этак в 1.5-2 раза, а если поискать побольше, то и оффер будет пожирнее.
Нет, конечно я понимаю, ты не хочешь жить в хостеле. Только, анон, пойми, там и не живут, там спят. В остальное время ты работаешь. В выходные сидишь в кафе с ноутом. Кроме того, не бывает так, чтобы всё и сразу. Да, вначале потерпишь, зато потом профиты перевесят все эти мимолётные невзгоды.
Мне реально жалко людей, которые живут в глубинке, которые пашут, но получают гроши, в то время, как московские линивые бездари гребут бабло деньгами, нихера не знают, нихера по сути не делают, и ещё и не довольны чем-то.
Аноним 08/11/20 Вск 18:13:19 1851232207
>>1851160
>Если работать 20 дней в месяц (2 дня через 1) по 12 часов
Я думаю, очень мало кто в таком графике сможет что-то учить в свободные дни.
Аноним 08/11/20 Вск 19:40:06 1851298208
>>1850299
1-5 методов в каждой репе, знания об источнике данных не выползают из Persistence слоя вообще.

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

Вообще тут 2 стула:
- пишешь больше кода, но имеешь легко поддерживаемый и масштабируемый проект;
- пишешь меньше кода с одним классом/методом под миллион не до конца определённых нужд, но страдаешь при расширении проекта, от внезапно изменяющихся требований, от притаившихся на несколько месяцев багов, от merge конфликтов.
Аноним 08/11/20 Вск 19:44:42 1851303209
>>1850265
Всё проще - нужно отправлять старпёров, тащущих свои техники разработки из эры динозавров, на пенсию. Или хотя бы на переобучение. Код станет чистым и никто не будет беситься.

Прикол в том, что эти старпёры до глубины души уверены в своей правоте и своих техниках. Но они лихо разбиваются об реальность, когда им начинают выставлять метрики.
Аноним 08/11/20 Вск 19:55:15 1851312210
>>1850394
Был джуном/мидлом, следовал стандартам, которые установили деды. В эти стандарты входили несколько классов в файле, классы на 1к строк кода, #region, #pragma, и прочий индусский код.
Потом начал усиленно учить паттерны проектирования, алгоритмы, смотреть за конференциями, читать код крутых чуваков и всё это мракобесие само собой отвалилось.

Получается так, что без использования #region работа ускоряется. Можно замерить сколько времени уходить на чтение, написание и понимание кода. Убрав весь мусор из класса я трачу в 2-3 раза меньше времени чтобы выполнить те же самые задачи. У меня получилось это доказать местным дедам в двух разных конторах. Пришлось повозиться с презентацией, подборкой примеров из текущих проектов, переписыванием их по новому.
Аноним 08/11/20 Вск 19:58:53 1851316211
>>1850496
Я за 15 лет асбтрактных классов так и не понял. Тоже обычно или интерфейс или какой-то совсем базовый класс, типа Entity, у которого только Id есть.
Все проекты, в которых приходилось работать с асбтрактными классами - это индусский говнокод, 10+лет легаси, которое разваливается на ходу, и учебка.
Аноним 08/11/20 Вск 21:06:02 1851375212
>>1851298
>1-5 методов в каждой репе
маленький какой то проект

>_recordsRepo.LastYearRecords();
а потом понадобится фильтрация для этих рекордсов и понеслось
но раз у тебя 1-5 методов значит "не понадобится". Обычно это не так - обычно надо и надо и методы либо множатся либо пухнут
Аноним 08/11/20 Вск 21:12:57 1851384213
>>1851316
это базовый класс, который нельзя инстанцировать, что хорошо если нужен базовый класс, который хотелось бы чтобы нельзя было создать инстанс и обязательно делали наследника. Попутно дается возможность заставить наследника реализовать нужные методы.

И полезен он там, где собственно такое и нужно. Зону использования абстрактного класса нечем заменить. У интерфейсов другая ниша.
Абстрактный класс можно использовать как интерфейс, но не всегда наоборот.
В общем адски полезная вещь там где он нужен
Аноним 09/11/20 Пнд 05:29:45 1851637214
>>1851375
1kk+ строк кода, 100+ сущностей, 100+гб бд (их таких несколько).
Аноним 09/11/20 Пнд 05:37:20 1851639215
>>1851384
Я знаю всё что можно знать об абстрактных классах (с точки зрения их пользователя). Они мне ни разу не пригодились. Приходится с ними работать только тогда, когда у тебя уже куча легаси или когда проморгал код ревью. Но не отрицаю, что под какие-то задачи с определённой архитектурой они могут нормально ложиться.
От них веет жавой, а в жаве с написанием красивого кода беда.
Аноним 09/11/20 Пнд 05:55:00 1851644216
>>1851639
>Они мне ни разу не пригодились
>Приходится с ними работать только тогда, когда у тебя уже куча легаси или когда проморгал код ревью.
>От них веет жавой, а в жаве с написанием красивого кода беда.

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

Мне вот например наоборот сложно представить код в котором нет применения абстрактному классу. Вот есть у тебя функционал, часть этого функционала общая, а другая часть зависит от чего-либо, но при этом этот функционал используется в обобщенном коде.
Что ты применять будешь? Интерфейс? Но тогда весь общий функционал придётся переписывать каждый раз когда ты его наследуешь. Класс? Но тогда тебе каждый раз придётся запоминать/смотреть какая часть функционала используется в обобщенном коде. Вот здесь нам и приходит на помощь абстрактный класс - в нём можно оставить общий для всех функционал, а конкретный для каждой реализации, но используемый в обобщенном коде, объявить в виде абстрактных методов и свойств, таким образом каждый раз наследуя этот класс, т. е. каждый раз имплементируя конкретный функционал, компилятор будет за тебя создавать шаблоны тех методов которые используются в обобщенном коде, тебе останется написать реализацию для них, тебе не нужно смотреть этот обобщенный код.
Аноним 09/11/20 Пнд 12:30:38 1851751217
>>1851637
>100+ сущностей
и к каждой сущности по выборке требований всего ничего (видно по 1-5 методов)
Аноним 09/11/20 Пнд 14:41:16 1851856218
>>1851644
>Что ты применять будешь? Интерфейс?
Композицию. Рано или поздно упрешься в множественное наследование, которого нет в C#.
Аноним 09/11/20 Пнд 15:17:57 1851886219
Нужно замутить небольшой сервер для телеграмм бота и мини веб сайта (максимум 100 пользователей в час) думаю для этого взять какой-нибудь single board computer типа малинки 4, но вопрос какой лучше брать под net core, может у кого уже есть опыт?
Да, я знаю что можно взять тупо VPS сервер и будет тоже самое и годовая цена будет как за плату(хотя плата вроде помощнее), но я хочу именно физическое устройство, которое рядом, к которому я имею непосредственный доступ и чтобы когда решу свернуть сервера можно было что-то еще замутить из этого.
Аноним 09/11/20 Пнд 15:24:07 1851895220
>>1851886
Разверни серверлес на амазоне или ажуре. Бабки будет чаржить только за использование. Не используешь - не платишь.
Аноним 09/11/20 Пнд 15:26:09 1851897221
>>1851886
плату еще где то разместить нужно, белый ip нужен, надежный инет
у VPS с этим всяко лучше
Аноним 09/11/20 Пнд 16:14:47 1851945222
image.png 12Кб, 348x135
348x135
>>1851895
Посмотрел я по ценам там и не думаю что это выгоднее платы будет если я захочу не тупо 1 бота туда закинуть, а скажем наращивать их количество. Чего я и хотел бы делать в будущем.
Плюс я это не для коммерции делаю, а чисто для удобства.
К примеру на дискорд канал закинуть бота который из моей базы по запросу что-то выдавать может или в телеграмме сделать бота который будет видос с ютуба качать и скидывать сообщением (да да, очень нужно когда интернет на мобилке не стабилен).
Это на азуре может дорогого стоить если активно юзать.

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

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

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

Вопрос лишь в том что брать и насколько сложно с этим работать.
Опыта в этом у меня даже не 0, а скорее -1.
Аноним 09/11/20 Пнд 18:41:20 1852055223
Можно ли как-то в шарповском DI указать как-то что этому вот сервису - эту имплементацию интерфейса, а всем остальным - ту? Я не гуглил правда пока, но что-то подсказывает что нет. Я конечно понимаю что обойти это легко, просто введя пару пустых интерфейсов, которые один и тот же расширяют и так вот зарегистрировав разные классы под разными интерфейсами зарегистрировать и потом пользоваться, но все же не хочется такого делать, типа 2 идентичных интерфейса из-за того что тут у нас нужен костыль который реализован в другом классе -как мне кажется - плохая идея.
Аноним 09/11/20 Пнд 18:53:36 1852064224
>>1851751
Потому что дизайн нормальный, когда не нужно изворачиваться и выдумывать как впихнуть невпихуемое
Аноним 09/11/20 Пнд 18:55:19 1852065225
>>1851644
>Ты же сам себе противоречишь.
чем? легаси никто не трогает, его переписывают и потом отключают навсегда.
когда проморгал в код ревью, возвращаешься назад, выпиливаешь и даёшь по рукам девелоперам и больше так не делают.
Аноним 09/11/20 Пнд 18:56:20 1852067226
>>1852055
services.AddScoped<IService, TImplementation>(service);
Аноним 09/11/20 Пнд 19:16:29 1852077227
>>1852064
>Потому что дизайн нормальный
ай петросян.
Аноним 09/11/20 Пнд 19:20:24 1852078228
>>1852067
и как это должно работать?
Аноним 09/11/20 Пнд 19:36:26 1852080229
Челы, напомните плиз, как называется сайт с задачками по программированию. Там еще стилистика каратистская.
Аноним 09/11/20 Пнд 19:46:10 1852085230
Аноним 09/11/20 Пнд 19:53:28 1852091231
>>1852085
Первая ссылка - то, что хотел. Спасибо, чел.
Аноним 09/11/20 Пнд 19:59:13 1852092232
>>1852078
Последний зарегистрированный сервис типа IService, TImplementationбудет добавляться в конструктор если в конструкторе ты укажешь просто ClassConstructor(IService myService);
Для того чтобы выбрать какой-то определенный, тебе нужно добавлять в конструктор IEnumerable<IService> myServices
ClassConstructor(IEnumerable<IService> myServices);
Далее в теле конструктара ты можешь либо перебором выбрать нужные сервис, либо написать:
TImplementation service = myServices[0] as TImplementation;
Таким образом ты получишь первую зарегистрированную имплементацию.
Аноним 09/11/20 Пнд 20:03:10 1852099233
>>1852092
это какой то лютый костыль, нарушающий правила DI
лучше уж вручную в методе фабрике собрать.
Аноним 09/11/20 Пнд 20:18:59 1852112234
>>1852099
Регистрация сервиса по имени подходит?
Аноним 09/11/20 Пнд 20:31:02 1852117235
>>1852112
я не первоначальный анон. У меня нужды нет.

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

Аноним 09/11/20 Пнд 20:41:23 1852128236
>>1852099
Можно обернуть в один класс вида SomeServiceResolver, в котором будет метод IService GetService<implementation>() который будет возвращать определенную имплементацию.
Далее регистрируешь SomeServiceResolver как синглтон и внедряешь в конструктор зависимых классов у каждого вызывая GetService<ConcreteImplementation>();
Аноним 09/11/20 Пнд 20:45:50 1852134237
>>1852128
А это уже ServiceLocator, что антипаттерн.

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

например в SimpleInjector можно указать условие "если впихивать в этот класс, то эту имплементацию"
DI от майков ущербен в этом плане.
Аноним 09/11/20 Пнд 21:42:36 1852177238
>>1852134
Ну и как ты этот метод вызывать будешь? Это уже не DI и нарушение IoC
Аноним 09/11/20 Пнд 22:06:44 1852206239
>>1852177
>Ну и как ты этот метод вызывать будешь?
services.AddTransient<MyService>(p=>и тут собираем его руками подсовывая свою имплементацию IService)

это работает и по факту единственный нормальный вариант
но уж больно ручной
Аноним 09/11/20 Пнд 23:21:40 1852246240
DI через КОНТЕЙНЕРЫ - это самая уёбищная концепция эвер. Если ты обосрёшься с зависимостью, то приложение будет падать в рантайме, а не во время компиляции, что пиздец.
Аноним 10/11/20 Втр 00:05:54 1852260241
>>1852246
DI через КОНТЕЙНЕРЫ - это самая САМАЯ КРУТАЯ И ПОЛЕЗНАЯ КОНЦЕПЦИЯ

Что такое писать в стиле ООП? Это классы как кубики. из этих кубиков мы сооружаемся что-то, потом пнули его и оно заработало. И контейнер позволяет сконфигурировать это сооружение и подменить любую его часть на нужную, перегрузив тем самым часть функциональности.
Без этого же мудрят разные точки расширения, которые использовать нужно по правилам, где то по особому регистрировать.
А контейнеры делают все это тупо проще. Единая точка расширения и переопределения.
В общем имба самая настоящая.
Аноним 10/11/20 Втр 00:05:55 1852261242
>>1852246
Это про все ООП. А F# никто в реальных проектах почти не использует.
Аноним 10/11/20 Втр 00:07:17 1852263243
>>1852260
Кубики - это композиция, а не интерфейсы в конструкторе.
Аноним 10/11/20 Втр 00:09:31 1852264244
>>1852263
Интерфейсы в конструкторе это зависимость кубиков от других кубиков. Так что самая суть
И поскольку кубики и их зависимости собираются в одном месте и автоматически, то потому и можно кубики на свои менять если нужно расширить че то
люто удобно.
Аноним 10/11/20 Втр 02:31:22 1852320245
12123.jpg 163Кб, 1491x182
1491x182
>>1852246
>>1852260
Без DI как в ASP.Net у тебя как на пикрил будет.
Аноним 10/11/20 Втр 05:07:40 1852345246
Сегодня релиз .NET 5, готовы?
Аноним 10/11/20 Втр 05:29:17 1852357247
>>1852345
Так его уже со всех сторон обсосали. Обычная галочка, ничего грандиозного.
Аноним 10/11/20 Втр 05:55:13 1852363248
>>1852345
Уже джва месяца жду! Буду пытаться один из самых маленьких сервисов конвертировать и тащить новый 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 вообще шансов не будет.
Аноним 10/11/20 Втр 06:02:03 1852366249
image.png 14Кб, 645x124
645x124
>>1852345
Ну ты и соня.

Опять перенесут, очевидно
Аноним 10/11/20 Втр 09:18:22 1852415250
>>1852363
>В пхп отделе - 4ГБ!
Да там аниме в основном или поняши
Аноним 10/11/20 Втр 09:19:49 1852416251
>>1852366
При чём здесь release candidate, я про окончательный релиз, и он сегодня.
Аноним 10/11/20 Втр 09:21:10 1852418252
>>1852416
Ставлю 100 рублей, что перенесут
Аноним 10/11/20 Втр 09:21:57 1852419253
>>1852415
вот бы сейчас в гигабайтах измерять бизнес
Аноним 10/11/20 Втр 11:46:54 1852478254
>>1852320
так то нет связи наличия или отсутствия IoC с тем, что на скрине.. Ну вообще нет.
Аноним 10/11/20 Втр 11:50:29 1852481255
>>1852345
сегодня конец поддержки .NET 5 RC 2
а будет ли .NET 5 - хз хз хз
Аноним 10/11/20 Втр 12:38:56 1852495256
>>1852478
Так кто про отсутствие IoC говорил? Она там есть, просто код раздувается когда нужно внедрять зависимости, а в асп.нет за тебя всё фреймворк делает.
Аноним 10/11/20 Втр 12:41:47 1852497257
>>1852495
ты скрин выдал и записку про DI прилепил и мол без этого будет как на скрине
я же отметил, что вообще нет связи скрина с DI
Аноним 10/11/20 Втр 12:53:41 1852512258
>>1852497
То у тебя IoC, то DI, запутался в терминах? На скрине тебе нужно внедрить в качестве зависимости обобщенные типы, при этом эти типы взаимодействую друг с другом, в итоге получается такая простыня из перечислений типов.
Аноним 10/11/20 Втр 13:03:03 1852524259
>>1852512
не запутался
DI это концепция, упрощенно "впихивай зависимости извне". а в DI подходе в ASP.NET чего то уникального нет- там базовая концепция "инъекции через конструктор" (исключая Startup класс, который уникален, но не из-за DI)
А значит фраза " DI как в ASP.Net" говорит про контейнер. И даже если нет, то это неважно, ибо на скрине определение generic класса, к которому использование или не использование DI не имеет никакого отношения

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

Аноним 10/11/20 Втр 13:04:27 1852527260
>>1852512
>На скрине тебе нужно внедрить в качестве зависимости обобщенные типы
из скрина этого не следует. аж вообще не следует. этот класс может быть с легкостью с пустым конструктором и не нарушать DI во время использования
Аноним 10/11/20 Втр 13:08:54 1852530261
>>1852527
Это не класс, а какой-то пиздец с кучей зависимостей.
Аноним 10/11/20 Втр 13:12:55 1852532262
>>1852530
я не спорю, что он пиздец. Я оспариваю лишь связь с DI, мол с DI будет все не так
DI это про зависимости. а не про дженерики, так что никак он не влияет на сигнатуру класса. DI влияет на то, как потом все это будет попадать внутрь. Но оно вполне может попадать и со временем и вообще внутри быть изначально (хотя это не следует из названия класса, но мало ли в какой области приложения этот класс обитает)

то есть если обладатель этого класса прочитает по DI то в итоге он переделает конструктор и всё. сигнатура останется прежней ибо связи нет
Аноним 10/11/20 Втр 13:39:55 1852552263
В идеале компилятор должен проверять большую часть ошибок, как это сделано во многих хороших языках программирования. Программа компилируется - значит программа работает, вот самый правильный подход. Поскорее бы шарпик таким стал.
Аноним 10/11/20 Втр 13:56:47 1852568264
Аноним 10/11/20 Втр 14:12:59 1852590265
>>1852568
шарписты должны страдать?
Аноним 10/11/20 Втр 14:19:11 1852599266
>>1852590
Программист это про борьбу с ошибками. Ты опять хочешь лишить нас последней работы за 50к?
Аноним 10/11/20 Втр 14:21:37 1852605267
>>1852599
>Ты опять хочешь лишить нас последней работы за 50к?
а такая еще есть? это ж зарплата недонедонедоджуна
Аноним 10/11/20 Втр 14:35:44 1852616268
>>1852552
> Программа компилируется - значит программа работае
Обратная совместимость, слышал про такое? Никто не уберет из шарпа наллы или сделает варнинги компайл тайм ошибками.
Аноним 10/11/20 Втр 14:39:01 1852618269
>>1852616
>или сделает варнинги компайл тайм ошибками.
ну так то это есть. просто не очень игноры в ней работают.
Аноним 10/11/20 Втр 15:22:26 1852631270
Аноним 10/11/20 Втр 15:24:51 1852634271
>>1852605
на джуна 32 тысячи сейчас
Аноним 10/11/20 Втр 15:59:51 1852657272
>>1852524
Там 4 обобщенных класса которые входят в 1 класс, при этом эти 4 обобщенных класса должны взаимодействовать друг с другом, т. е. некоторые из них имею ссылки на других. Чтобы всё это реализовать нужно создавать объекты последовательно, потом внедрять их в конструкторы других и тд, либо можно сделать так чтобы у 4 обобщенных классов была ссылка на 1 класс в который все они включены, что приводит к вот такому перечислению обобщений.
Но если делать всё в рамках ASP .Net то 4 класса регистрируются как службы в виде конкретных реализаций и автоматически внедряются в зависимости от присутствия друг друга в конструкторах других классов.
Аноним 10/11/20 Втр 16:09:15 1852665273
>>1852657
>Там 4 обобщенных класса которые входят в 1 класс, при этом эти 4 обобщенных класса должны взаимодействовать друг с другом, т. е. некоторые из них имею ссылки на других.

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

Контейнер добавляет удобства не писать ручками инстанцирование и упрощает именно этот аспек "сборка графа", но не является магическим артефактом и то, что соорудил автор кода на скрине - его личное видение кода, а не вынужденная мера "а по другому низзя"
Аноним 10/11/20 Втр 16:18:23 1852673274
>>1852665
Ну так я про это и говорил изначально - ASP .Net удобное упрощение, не нужно писать всё в ручную, при этом код получается чище. Разве не для этого фреймворки нужны?
Аноним 10/11/20 Втр 16:25:37 1852679275
>>1852673
>ASP .Net удобное упрощение, не нужно писать всё в ручную,
вообще то оно там ОБЫЧНОЕ

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

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

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


Аноним 10/11/20 Втр 16:26:54 1852681276
>>1852673
>ASP .Net удобное упрощение
так то DI от мелкософта - самый примитивный по фичам. Просто он встроен не как раньше только контракт и приходится использовать его или городить огород.
Аноним 10/11/20 Втр 16:46:53 1852697277
>>1852679
>а не "мир без DI"

Код на скрине это "мир с DI без фреймворков которые за тебя делают большую часть", не понятно почему ты захотел увидеть что-то другое, попахивает шизой.
Аноним 10/11/20 Втр 16:54:29 1852703278
>>1852697
>Код на скрине это "мир с DI без фреймворков которые за тебя делают большую часть"
ок. уйдем от DI. наличие или отсутствие фреймворков тоже не заставляют рождать такой код. Да вообще НИЧЕГО не заставляет, кроме безумия или лютой неопытности программиста.

попытка натянуть сову на глобус "или берете DI и фреймворки или у вас будет такое..." обречена на провал, потому что "такое..." не будет.
Без фреймворка больше ручной работы, а не априори говнокод. да и фреймворк не помешает родить то, что на скрине и зарегать это в контейнер.
Аноним 10/11/20 Втр 17:02:58 1852713279
>>1852703
Фреймворк создаст условия которые позволят упростить код, при этом функционал не изменится.
>Да вообще НИЧЕГО не заставляет, кроме безумия или лютой неопытности программиста.
Так тебе задачу описали. 1 класс обобщенный с общей логикой для различных конкретных реализаций, и n классов которые наследуют общую логику от базовых классов + предоставляют свою, конкретную для каких-то определенных методов. У каждого из этих классов, кроме 1 обобщенного есть несколько реализаций, при этом какие-то из этих n классов взаимодействуют друг с другом. Как ты собираешься всё это реализовать по-другому? У тебя либо ничего не получится, либо получится говнокод, либо получится тоже самое что на скрине.
Вот фреймворк и сокращает объем этого описания, потому что внедряет зависимости автоматически, если ты следуешь определенным конвенциям.
Аноним 10/11/20 Втр 17:34:35 1852748280
>>1852713
фреймворк дает архитектурный каркас, что позволяет избежать разброда и шатания архитектурных решений в коде и готовые реализации разного функционала

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

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

>Как ты собираешься всё это реализовать по-другому?
хз. это сильно абстрактная задача
>У тебя либо ничего не получится
получится. IoC контейнер решает свою задачу, но это не значит, что в остальном мире говнокод. Собственно код идентичный - различается лишь composition root
> либо получится тоже самое что на скрине.
не. такое точно нет. у меня мозг не родит такое, а обойдется более простыми решениями.
Я просто никогда не преобразую такое "этих n классов взаимодействуют друг с другом" в то, что на скрине. Общаются? - значит через интерфейсы знают друг о друге. Если контейнер решает задачу, то она ТОЧНО ТАК ЖЕ решается и без контейнера, ведь контейнер решает только задачу сборки графа объектов. А то что на скрине - хз. больше похоже на кривой медиатор, чем на общий нужный всем абстрактный класс
Аноним 10/11/20 Втр 17:37:13 1852754281
>>1852419
У нас тыщи контейнеров крутятся в AWS/GCP. Как бы 100мб vs 4гб в итоге в дохрена разницы вываливаются в куче разных метрик. И $$ превращается в $$$$$.
Аноним 10/11/20 Втр 17:41:37 1852760282
image.png 21Кб, 814x359
814x359
>>1852481
По идее через 2 часа объявят о релизе
ВЫШЕЛ ВЫШЕЛ ВЫШЕЛ Аноним 10/11/20 Втр 18:49:00 1852815283
Аноним 10/11/20 Втр 18:50:53 1852816284
>>1852815
пока нет обновления на студию - можно сказать, что не вышел
Аноним 10/11/20 Втр 18:51:00 1852817285
>>1852815
Оно само не обновится что ли?
Аноним 10/11/20 Втр 18:53:19 1852822286
>>1852817
Не видел чтобы оно само обновлялось. Разве что со студией прилетало.
Аноним 10/11/20 Втр 19:11:53 1852845287
>>1852815
>пересказ того о чём и так уже все сто раз прочитали

Скучно как-то.
Аноним 10/11/20 Втр 19:20:35 1852858288
А когда студия до 16.8 обновится?
Аноним 10/11/20 Втр 19:33:01 1852874289
>>1852845
какой то спорный по фичам релиз получился

ну и как обычно всегда "мы наконец то докумекали"
вот как с IReadOnlyList они потом ввели
как с нуллами
а теперь вот и с ламбда static (даже пхп умнее лол)
Аноним 10/11/20 Втр 19:51:02 1852892290
>>1846539 (OP)
Зачем учить Шарп в 2021? Без тралленка. Какая сфера интересов и целей у людей, выбирающих шарп? Где вы видите себя применяя этот язык?
Аноним 10/11/20 Втр 19:52:58 1852897291
>>1852892
Бэк на ASP .NET Core + EF Сore, фронт на Angular.
Аноним 10/11/20 Втр 20:00:42 1852913292
>>1852892
Из самых больших направлений: веб, геймдев, мобилки, облака. В основном это какие-то огромные агрегаторы, где черт ногу сломит.
Аноним 10/11/20 Втр 20:09:29 1852923293
>>1852892
Теперь на нём что угодно пилить можно. Даже всякие CLI тулзяки. Пилится быстро, компилится куда надо легко и весит мало.

С Blazor можно переставать учить жабаскрипт. Вакансии потихоньку подтянутся.
Аноним 10/11/20 Втр 20:14:37 1852927294
>>1852923
>С Blazor можно переставать учить жабаскрипт
Нельзя. Иначе придётся пилить кучу велосипедов, вместо использования готовых решений.
Аноним 10/11/20 Втр 20:16:24 1852928295
>>1852927
Например?
мимо сеньер-помидор реактов, ангуларов, вью
Аноним 10/11/20 Втр 20:21:38 1852936296
>>1852927
Ну так у любой новой технологии в начале мало пакетов и тулзяк. Их за год настрочат дофига. Хотя в случае с Блэйзор у него уже много чего из коробки есть и можно подключать существующие нугет пакеты.
Аноним 10/11/20 Втр 20:22:07 1852937297
>>1852928
Любой не примитивный, анимированный элемент интерфейса, который приятно выглядит.
Аноним 10/11/20 Втр 20:26:28 1852943298
>>1852858
Только что сказали что через минут 40 должна быть доступна.
Аноним 10/11/20 Втр 20:29:41 1852948299
>>1852937
Всякие телерики уже много чего напилили.
Интересно, WPF компоненты будут поддерживаться?
Аноним 10/11/20 Втр 20:32:11 1852954300
>>1852937
По части юи обычно прилепливается какой-нибудь богомерзкий кендо юи, который нехуя не красивый, не приятный и не упрощает разработку. В конечном итоге все в велосипеды заканчивается и проклинаются дятлы, которые всякого дерьма в проект натащили. Или твоя-любимая-юи-либа-нейм зарастает хаками.

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

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

Соре, не имею ничего против формошлепов, там без б лучше реакт и коробочный ангулар. С тем же успехом можно пойти дальше и использовать цмски на шарпе.
Аноним 10/11/20 Втр 20:36:13 1852959301
>>1852954
если бы на фронте был не говножс, а что то вменяемое, то и блазоры были бы не нужны.
Аноним 10/11/20 Втр 20:40:25 1852962302
>>1852959
Так правильно, красноглазые с++ девы (читай ржавые), только недавно релизнули WebAssembly. Технология еще довольно молодая.
Аноним 10/11/20 Втр 20:53:15 1852972303
Есть смысл обмазываться clr via c#? Уже 2 года почти прогаю на шарпе помаленьку, ни один учебник не дочитал дальше 100 страницы, всё гуглил. Тут просто на озоне увидел и подумал, что может стоит взять почитать.
Аноним 10/11/20 Втр 21:01:24 1852984304
>>1852972
Это библия .Net, ты её должен прочитать и не один раз, а несколько, после чего держать под рукой и обращаться при любой непонятной ситуации.
Аноним 10/11/20 Втр 21:04:10 1852989305
>>1852984
Рихтер сдох? Когда книга под .NET Core?
Аноним 10/11/20 Втр 21:11:04 1853004306
>>1852989
есть новая книга по языку джарп
K. Wolanski - Jarp invasion
Аноним 10/11/20 Втр 21:12:17 1853006307
Всё, студия обновляется
Аноним 10/11/20 Втр 21:23:58 1853028308
>>1853006
Сижу на 10 студии до сих пор, мне норм
Аноним 10/11/20 Втр 21:31:34 1853036309
>>1853006
а решарпер еще не готов (
Аноним 10/11/20 Втр 21:32:57 1853038310
а еще они там в jetbrains вообще чокнулись
хочешь что то одно - тащишь гигабайт говна
Аноним 10/11/20 Втр 21:33:21 1853039311
Че делать если пытался писать код нормально, писал-писал, но в ходе того как добавлялись и менялись требования, ты не хотел полностью переписывать, потому просто придумывал как впихнуть новую залупу туда куда оно не задумывалось и в итоге получил настолько запутанный и хрупкий код, что сам боишься что-то там менять? Ну, т.е. я понимаю примерно что можно делать в следующий раз, но хочется-то как-то этот код сделать ну хотя бы менее запутанным.
Аноним 10/11/20 Втр 21:34:05 1853042312
а это ВНЕЗАПНО

"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. "
Аноним 10/11/20 Втр 21:34:30 1853043313
>>1853039
можно учиться на своих и чужих ошибках и больше так не делать
Аноним 10/11/20 Втр 21:53:19 1853060314
>>1853039
Изучай паттерны и применяй их на практике, смотри чужой код. Сначала будет сложно и не понятно, но первая программа написанная с применением паттернов и соблюдением принципов SOLID тебя сильно обрадует.
Аноним 10/11/20 Втр 22:09:10 1853071315
>>1853060
> Изучай паттерны
Так изучаю. Просто применяешь, а потом новые требования или уточнения появляются из-за которых этот паттерн скорее мешается.
> смотри чужой код
Смотрю. Но если смотреть коллег - то там просто хреначат простыню в 4к строк в каждом классе и заебись. А на гитхабе создается впечатление что задачи были ясны сразу и не было такого: Сделай эту штуку, ту, ту и ту. Ты сделал, говоришь что все готово, а тебе говорят: Ну, вообще-то заказчик мудак и он хочет не те две шутки а вон ту-ту и эту штуку и еще в довесок такой вот функционал и чтобы на самом деле твой софт потреблял не больше 100мб оперативки и использовал вот эти вот штуки, т.к. у них там уже есть что-то и они хотят твою хуевину к своей присобачить.
Аноним 10/11/20 Втр 22:16:09 1853080316
>>1853071
> Просто применяешь, а потом новые требования или уточнения появляются из-за которых этот паттерн скорее мешается.

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

Частой ошибкой новичков бывает желание сразу описывать классы и взаимодействие между ними, а потом уже исходя от этого описывать действия для выполнения нужных задач. На самом деле нужно начинать написание кода с того что он делает, а потом уже подстраивать под него классы, создавать интерфейсы. Еще не нужно стараться подстроиться под определенный паттерн, на начальном этапе нужно просто писать код и придерживаться общих правил, а определение необходимого паттерна придёт по ходу написания кода.
Аноним 10/11/20 Втр 23:04:04 1853108317
>>1852892
А что еще есть? Динамикодрисню учить я не хочу, на плюсах ебаться с атавизмами си тоже. Остается джава и хипсторские языки без вакансий. Джава противная, на хипсторских языках нет работы.
В результате остается шарп - нормальная типизация, сахарка больше чем в любом хипсторском языке и тонна вакансий. Если знаешь другой такой же язык, то говори.
Аноним 10/11/20 Втр 23:47:29 1853144318
>>1853108
Учи питон, поясняй за нейронки, оный яз обогнал жабу по популярности.
Аноним 10/11/20 Втр 23:52:40 1853147319
>>1852892
А что там учить-то? Я вот в ВУЗе учил плюсы, предложили работу на шарпе, за неделю освоился и пошел работать. Это же оч простая штука, причем все из коробки, сейчас все нужное ты ставишь нугетом, я как вспомню, как с ебучим Make разбирался, как подключать библиотеки нужно было в плюсах, сколько ебли с тем что какой-то компилятор отказывается компилировать твой код из-за того что в одной из либ что-то сделано с каким-то не совсем стандартным способом, аж в дрожь бросает, а тут все просто, понятно, работы достаточно, платят нормальные деньги. Короче, учить там ничего особо и не нужно оказалось-то, после плюсов-то, сами либы что в стандарте - для всего буквально есть и тебе не нужно даже думать о том чтобы свой велосипед делать. Короче, чил, легкие деньги и работа на расслабоне. Я не понимаю скорее как кто-то в 2020+, выбирая не фронтенд - выбирает не шарп. Ну, допустим в городе твоем нет вакансии с шарпом, есть только джава, тут ясно, но куча всяких шизов лезут в Го, в Раст, в питон, прости господи. Вот зачем они это делают? Почему вообще тогда бы фортран не взять, а потом верещать всюду, что на работу не берут.
Аноним 10/11/20 Втр 23:52:54 1853148320
>>1853144
Он её обогнал, потому что некий Гугл распопуляризовал его через всякие универы, конференции, тулзяки. И на нём было удобно быстро накидать каких-то формул и выборок данных и повертеть этими данными всяко разно для какого-то анализа. Не надо было во всякий дата саенс погружаться, просто взял и сделал. У учёных можно и 10 дней для результата программы подождать, лол.

Короче он стал популярным просто потому что. Удачное стечение обстоятельств. Так то шарп (кстати оба, и си и эф шарп) круче питона. Но Гуглу будет впадлу на Майкрософт подсаживаться, поэтому они будут продолжать пилить свои Го. Уж лучше бы в Раст вкладывались, ей богу.
Аноним 10/11/20 Втр 23:55:57 1853155321
>>1853148
Очепятка, имелось ввиду что дата сайентистам не надо погружаться в компьютер сайенс. Data science то им как раз нужен.
Аноним 10/11/20 Втр 23:57:54 1853158322
image.png 25Кб, 759x575
759x575
Аноним 11/11/20 Срд 00:30:32 1853178323
>>1853158
Я уже 2 часа пользуюсь :)
Аноним 11/11/20 Срд 02:09:40 1853215324
>>1853158
Тоже наслаждаюсь рекордами и инитами.
Те кто пишет кучу DTO и вообще обмазывается CQS то рекорды это как божья роса.
Аноним 11/11/20 Срд 08:49:49 1853283325
Рекорды могут стать заменой структов?
Аноним 11/11/20 Срд 09:06:57 1853288326
>>1853080
> Частой ошибкой новичков бывает желание сразу описывать классы и взаимодействие между ними, а потом уже исходя от этого описывать действия для выполнения нужных задач. На самом деле нужно начинать написание кода с того что он делает, а потом уже подстраивать под него классы, создавать интерфейсы
Предлагаешь нахуярить говна в один класс, а потом раскидывать это всё по разным классам и чистить вилкой?
Аноним 11/11/20 Срд 10:07:02 1853304327
Аноним 11/11/20 Срд 10:17:22 1853307328
>>1853304
Это понятно, но структы создают когда нужны immutable типы с value semantics, и рекорды как раз такие (сравниваются по свойствам, а не по ссылке), к тому же имеют удобный синтаксис для создания и копирования. По-моему в большинстве случаев где раньше бы использовался struct теперь удобнее использовать record, не?
Аноним 11/11/20 Срд 10:45:17 1853314329
>>1853307
а где раньше использовался структ? чтобы в кучу не срать. Другого смысла для использования struct со всеми его побочками нет
Аноним 11/11/20 Срд 11:03:21 1853323330
>>1853307
> и рекорды как раз такие
Сначала были records в паскале и диды с удовольствием юзали их. Потом диды-сишники сделали структы - аналог паскалевых рекордсов и благостно урча тоже юзали их, но снабдили их некоторыми свойствами классов. Диды-паскальщики глядя на это, обзавидовались и создали новую спецификацию паскаля, в которой рекордсы так же обладали некоторыми свойствами классов.

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

мимодед
Аноним 11/11/20 Срд 11:05:32 1853325331
>>1853323
Сильнее всего проиграю, когда ньюфагам впарят в сишарп бегин энд, как более кодокондуктовое новшество вместо "устаревших скобачек".

всё тот же мимодед
Аноним 11/11/20 Срд 11:49:06 1853357332
>>1853325
Оно туда и идет
Код уже сложнее читать с этими новыми using
Приходится в голове вычислять где будет диспоз вместо явного блока
Теперь вот их
с <5 or 25
тоже сложно читается
Да и вообще куча всякой ерунды что и не упомнишь в силу их "а реальная польза где "
Аноним 11/11/20 Срд 12:15:48 1853383333
>>1853357
Нахуй вообще нужны using?
Аноним 11/11/20 Срд 12:19:58 1853386334
Аноним 11/11/20 Срд 12:21:53 1853388335
>>1853386
Ты же эти имел в виду
using (Pidor p = new Pidor())
{
}
Я их не использую вообще
Аноним 11/11/20 Срд 12:25:52 1853394336
>>1853388
ну это твой личный подход такой.

не все IDisposable прямо уж так нужно диспозить, но в основном нужно. Неча ресурсы удерживать больше необходимого
Аноним 11/11/20 Срд 12:42:08 1853411337
>>1853388
сам по себе Disposable кривой паттерн, но стандартно используется именно он
Аноним 11/11/20 Срд 14:34:57 1853515338
Мне нужно в ListViw взять один элемент по индексу. Пробовал брать просто по индексу view.Items[index] и так view.GetItemAt(index) и чем больше индекс, тем эта срань медленнее работает. Если 8000, например, то эта хуита 12 секунд тупит, для меня это слишком много. Какие ещё варианты есть?
Аноним 11/11/20 Срд 14:42:21 1853522339
>>1853515
ObjectListView, точнее, FastObjectListView
Аноним 11/11/20 Срд 14:50:42 1853528340
>>1853515
нужно же уточнять что это винформс или впф
Аноним 11/11/20 Срд 15:02:09 1853531341
Аноним 11/11/20 Срд 15:05:25 1853535342
Есть консольная игра в жизнь, без функции расстановки изначальных клеток. Собственно, вопроса два:
1) как ебануть функцию расстановки живых перед началом игры, чтобы не прокликивать на клаве 400 клеток вручную?
2) если захочу ебануть это в винформс, чтобы мышкой выбирать, сложно будет реализовать выбор клеток и отрисовку игры?
винформы вообще не юзал
Аноним 11/11/20 Срд 15:10:00 1853541343
>>1853288
Предлагаю начинать реализацию с места входа программы. Т. е. с метода Main, допустим у тебя там будет создание класса, который будет выполнять всю логику, тогда ты пишешь:

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

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

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

Аноним 11/11/20 Срд 15:12:51 1853543344
>>1853388
Чтобы утечек памяти не было в случае когда объект использует ресурсы системы.
Аноним 11/11/20 Срд 15:14:01 1853545345
>>1853522
Нет, это хуйня какая-то, там половины функций обычного ListView нет
Аноним 11/11/20 Срд 15:14:17 1853546346
>>1853535
>как ебануть функцию расстановки живых перед началом игры, чтобы не прокликивать на клаве 400 клеток вручную?
Рандом или читать из файла.
>если захочу ебануть это в винформс, чтобы мышкой выбирать, сложно будет реализовать выбор клеток и отрисовку игры?
Не особо, только сетку программно создавай.
Аноним 11/11/20 Срд 15:25:24 1853563347
>>1853531
ну хз че оно так долго. в Items та же коллекция что ты прибиндил (если ты конечно его используешь) и достать элемент из коллекции это ж константное время
другое дело достать вьюху для элемента
Аноним 11/11/20 Срд 15:38:28 1853574348
>>1853563
Возможно из-за выделения тогда
view.SelectedItem = view.Items[newRow]
Аноним 11/11/20 Срд 15:39:51 1853577349
>>1853574
это выделение новой добавленной строки что ли? лучше доверить это декларативщине
Аноним 11/11/20 Срд 15:41:06 1853579350
>>1853577
Нет, это выделение любой нужной строки, просто назвал так.
Аноним 11/11/20 Срд 15:56:04 1853594351
>>1853579
ну хз. набросал на коленке пример где листвью(гридвью) на 100к элементов и выделение нужного элемента с индексом 90к да с автоскролом на него
все мгновенно
Аноним 11/11/20 Срд 16:02:48 1853604352
>>1853594
Даже не знаю тогда, у меня, конечно, завязана всякая хуйня на это выделение, но тормоза идут именно в строчке
view.SelectedItem = view.Items[newRow]
Аноним 11/11/20 Срд 16:07:02 1853611353
11-11-2020-15-0[...].gif 2661Кб, 784x642
784x642
>>1853604
>view.SelectedItem = view.Items[newRow]
ну я выбираю из ориг коллекции (к которой бинд делаю). впрочем даже так
SelectedItem = (Item)ListView.Items[90000];
результат тот же

http://paste.org.ru/?cwilch
Аноним 11/11/20 Срд 16:11:13 1853620354
>>1853604
даже на миллион чуть чуть медленнее
ты там проверь не убил ли ты виртуализацию
в частности не перегружал ли шаблон
Аноним 11/11/20 Срд 16:17:59 1853626355
>>1853620
>ты там проверь не убил ли ты виртуализацию
Каким образом?
Аноним 11/11/20 Срд 16:20:05 1853629356
>>1853626
ну я убивал виртуализацию когда перегружал шаблон тем что в инете находил и оно было неправильное.
ну это кроме явного выключения виртуализации
больше способов не знаю.
так то с листвью редко работаю -только когда нужна скорость, а датагрид сильно медленнее
Аноним 11/11/20 Срд 16:24:49 1853631357
>>1853626
я включил виртуализацию и переход такой же быстрый, но сама первоначальная загрузка списка очень долгая.
Аноним 11/11/20 Срд 16:26:42 1853633358
>>1853631
Виртуализацию я врубаю
Аноним 11/11/20 Срд 16:34:51 1853645359
>>1853633
она там и так включена. впрочем неважно же. на переходе не тормозит
попробуй мой пример у себя и посмотри в чем разница с твоим подходом
можешь разделить свое
view.SelectedItem = view.Items[newRow]
на 2 строки и поймешь конкретно в какой тормозит.
хотя 99% на SelectedItem из -за вызванных побочных эффектов которые ты накодил на смену выделения
ну и конечно я говорю про биндинг вариант использования листвью. напрямую я его никогда не заполнял
Аноним 11/11/20 Срд 16:35:50 1853648360
Аноним 11/11/20 Срд 17:49:55 1853736361
>>1853323
> И вот наступил сегодняшний день и ньюфагам тулят старые добрые рекордсы паскаля под видом чего-то нового и модномолодёжного.
Их тулят как модную ФП фичу из хаскеля и фшарпа. Я конечно не дед и паскаль не изучал, но сомневаюсь что рекорды в нем основаны на иммутабельности и аналоге with expression.
Аноним 11/11/20 Срд 18:53:51 1853788362
>>1852858
Обновил сегодня студию на работе. Два раза намертво зависала во время отладки, протекая памятью из зо всех щелей. Один раз оставил её в таком зависшем состояния на 10 минут (посрать бегал, да), прихожу, а она к тому моменту уже 6 гб оперативы выжрать успела.
Аноним 11/11/20 Срд 19:22:56 1853806363
Короче, тут до релиза мне осталось неделя, потом нужно будет заказчикам отдавать. В принципе все отлажено и готово, но пилилось на core 3.1 и соответственно 8 шарпе, и вот вышел 5й.
Вроде как не должно же быть проблем если я мигрирую на него вот так вот? Или лучше не испытывать судьбу и уже в другом проекте плюшки 9 шарпа попробовать?
Аноним 11/11/20 Срд 19:32:01 1853820364
>>1853806
Не думаю, что с обратной совместимостью чето будет.
А вот с тем, что на прод сервере может не быть нет 5, проблемы будут. Проверь что он есть или если юзаешь докеры, что там уже есть образ с ним.
Аноним 11/11/20 Срд 19:33:30 1853824365
>>1853806
Скорее всего, само обновление особых проблем не доставит, но если ты начнешь перепиливать что-то для "попробовать новые фишки", проблем масса может вылезти. Оно тебе надо за неделю до релиза? Кроме того, 3.1 дольше поддерживаться будет.
Аноним 11/11/20 Срд 19:38:12 1853831366
>>1853806
В релизе говорится, что можно уверенно переходить с любой Net Core версии.
Аноним 11/11/20 Срд 19:54:46 1853852367
>>1853831
но в реале уверенно можно переходить не ранее 5.1.
А щас переходить просто потому что "хочется пощупать новые фичи"
Аноним 11/11/20 Срд 20:00:05 1853857368
>>1853541
Новичок так не напишет. Он понятия не имеет о каких-то диспетчерах и фабриках и вообще о том, что можно логику в два класса распихать. Не зря же интернет наводнён вопросами типа "как передать параметры из одного класса в другой?". Да я и сам такой был. Какие-то там паттерны проектирования. Вот тебе класс на 10к строк кода. Работает и фиг с ним.

Это щас кажется что это всё просто. Но когда только начинаешь, то все эти красивые слова - это всё пустой звук. Прям совсем пустой. Вообще абсолютно никакого понимания.
dispatcher.Run(); - это уже пиздец магия и чтобы сюда новичку дойти, придётся пол года книжки/статьи читать.
Аноним 11/11/20 Срд 20:12:43 1853873369
>>1853857
Я сначала прочитал книгу + возвращался к кратким статьям в интернете для того чтобы освежить память. Потом сразу пытался писать с применением паттернов и соблюдением принципов SOLID. Да, первый раз было сложно, голова пухла, я прокручивал всё в голове сотни раз и всё равно не мог обрисовать как всё это сделать, но в итоге сделал и результат меня более чем обрадовал. При этом первый раз я начал с жопы, а именно с описания классов, а не логики. Последующие проекты ты уже делаешь с мыслью "как мне раньше такое в голову не приходило, это ведь так удобно". В общем, ты либо идёшь навстречу страху "у меня не получится, я тупой" и борешься с соблазном "да захуячу лишь бы работало и хуй с ним", по итогу становясь программистом который пишет хороший код, либо присоединяешь к адептам "эта хуйня только замедляет разработку, вы сами себе палки в колеса вставляете, мой код ничем не хуже" и продолжаешь писать говнокод.
Аноним 11/11/20 Срд 20:42:31 1853886370
>>1853873
>либо присоединяешь к адептам
либо становишься прагматиком

Этапы прохождения к чистому коду
- говнокодер - пишет код для своих нужд, работает через жопу, но плевать.
- начинающий программист - понимает, что код говно и хочет знать, как сделать его хорошим
...эти пропустим...
- шаблонист - упарывается паттернами, все пытается впихнуть в паттерны, выразить через паттерны, паттерн на паттерне сидит и паттерна в паттерн паттернирует
... еще пропустим...
- перфекционист - везде ищет идеал. обычно у такого время и бабло не жмет, поэтому есть возможность порассуждать, посравнивать, возможно знает несколько языков и везде видит "фатальный недостаток"
- прагматик - принимает, что идеал недостижим и что чистый код не значит упоротая приверженность к "вот так принято", а "все должно быть к месту". Пишет хороший код, но если позволяет ситуация, то не боится отойти от канонов "чистого кода", если от этого есть выгода и при этом все равно не сделать нерасширяемое говно ибо есть опыт.
Аноним 11/11/20 Срд 20:47:44 1853890371
И уж точно прагматик не напишет такое говнище, как цензор-фильтр на дваче, из-за которого напишешь текст и потом приходится его стирать кусками пытаясь угадать что не так, ведь тупорылый фильтр не скажет какое слово ему не по душе.
Аноним 11/11/20 Срд 20:52:28 1853891372
>>1853890
У меня на этот случай регулярка есть которая меняет кириллические символы на латинские, если выглядят также.
Аноним 11/11/20 Срд 21:08:45 1853898373
Тем, у кого решарпер, рановато переходить. У меня только что решарпер не справился с Adjust Namespaces с учетом xaml файлов. Сижу починаю неймспейсы в них - часть он изменил, часть нет, а часть вообще стер. Ну и упал в конце с ехепшеном мне на радость.
претензий нет - все таки EAP, но все же неприятно
Аноним 11/11/20 Срд 21:15:44 1853899374
Аноним 11/11/20 Срд 21:19:56 1853901375
>>1853899
У меня его нет. У меня нормальная dvcs
Ну а по теме - а что гит. Ну сделаю я откат и чо. Это равносильно " не начинал"
Аноним 11/11/20 Срд 21:38:33 1853917376
>>1853901
> У меня нормальная dvcs
Это какая?
Аноним 11/11/20 Срд 21:40:58 1853921377
Аноним 11/11/20 Срд 21:55:12 1853933378
>>1853788
Уверен что это не твой говнопроект? У меня полёт нормальный.
Аноним 11/11/20 Срд 22:01:07 1853939379
Аноним 11/11/20 Срд 22:03:58 1853942380
>>1853939
ну значит пора выигрывать )
Аноним 11/11/20 Срд 22:04:25 1853944381
>>1853898
У меня веб проекты и решарпер. Делал несколько глобальных изменений по всему солюшену сегодня (namespaces, class names, formatting) - нормально работает.
Аноним 11/11/20 Срд 22:09:57 1853946382
>>1853944
ключевое слово "веб"
с xaml же все далеко не так хорошо. И так было всегда. Решарпер подрос хорошо в этом плане, но в EAP видимо что-то сломали. Зато новые иконки (зачем только)
Аноним 12/11/20 Чтв 04:43:42 1854056383
>>1853933
Уверен. На предыдущей версии студии во время отладки этого места зависаний не было. Да и зависания происходили после выполнения одного шага отладка (F10).
Аноним 12/11/20 Чтв 07:18:34 1854082384
Анон, вот смотри, многие говорят не писать что-то на всякий случай. Типа не понадобится и все дела. Так вот, я джун, ну, я думал так же, типа зачем мне делать для простого микросервиса сложную структуру запросов и модель, ведь со стороны клиента нужна всего 1 сущность от моего микросервиса(под капотом правда много работы, но клиент-то получит красивенький json с результатом), а настройки я могу хранить в виде appsettings.json. Ну так вот, я так и делал, но потом мне за 2 недели до того как нужно сдавать приходит тимлид и говорит: Вообще-то теперь нужно чтобы разные клиенты могли с твоим микросервисом общаться и вообще мы тут решили что нужно было чтобы каждый клиент мог свои настройки делать, еще нужно чтобы были политики доступа и вообще хорошо бы чтобы вот это(новая фитча) там было, а еще мы тут пока ты свой сервис пилил релили свою часть api полностью переписать, потому и ты тоже должен свою. Ну так вот, если бы я писал в классическом стиле, оно бы у меня все и так было, просто ждало бы своего часа, а используй я изначально БД для хранения настроек - не было бы таких проблем с тем что настройка была в json'е.
Вот и мне непонятно, кого пытаются все эти любители аббревиатур наебать? KISS, YAGNI. Серьезно, это третий проект в котором я участвую и каждый, блядь вот так и выглядит: да не парься, тут простенькая срань, сделай главное быстро, я делаю быстро, меня просят показать что все работает, а потом докидывают и докидывают новые требования и пожелания и некоторые из них ну не получается не меняя того что писал впихнуть, приходится переделывать то что уже есть, часто модель, а меняя модель приходится перепиливать куски которые с этой моделью работают, потому что таки есть разница: изначально сказали что будут такие вот сущности - я вынес их в enum и использовал свич, но теперь это полноценный класс и теперь большая часть работы с ним уже в этом классе -> одни куски исчезают, другие появляются.
Аноним 12/11/20 Чтв 08:38:20 1854100385
>>1854082
У тебя не "писать на всякий случай", а обычный говнокод. С самого начала нужно строить адекватную архитектуру, а не колосса на глиняных ногах.
Аноним 12/11/20 Чтв 08:39:45 1854101386
>>1854082
Смотри, YAGNI (в отличие от KISS который рулит) это хуйня. Он нужен для контроля всяких шизиков с OCR, которым дай волю они будут неделями писать никому не нужную хуйню. Но твоя проблема не в YAGNI, а в том что ты написал нерасширяемый кал. Твоему коду должно быть похуй откуда читаются настройки - из json или бд. Все что ты должен был поменять когда сказали что нужно читать из бд - дописать еще одну функцию которя читает настройки из бд, и добавить ее вызов когда нужно. Изменение внешних апи должно решаться добавлением/изменением нескольких однострочных адаптеров. Если у тебя при подобных изменениях распидорашивает весь код - проблема не в YAGNI. Ну и конечно изменение требований в середине проекта это зло, тебе придется время от времени переписывать огромные куски кода. И наперед ты это не предугадаешь. Чем больше напишешь сначала - тем больше будешь переписывать потом. А так-то YAGNI - хуйня, спорить тут могут только клоуны и каргокультисты.
Аноним 12/11/20 Чтв 09:05:58 1854110387
>>1853535
> как ебануть функцию расстановки живых перед началом игры
Простейшая задача же, ты чо?
У нас есть поле из клеток, соответственно, мы это поле можем описать массивом, соответственно, каждой клетке мы можем присвоить уникальные координаты (x, y) являющиеся индексами массива. Есть способ даже в одномерный массив вписать двумерные поля из ячеек. Но для простоты используем двумерный:
https://pastebin.com/BBvH9ces
Аноним 12/11/20 Чтв 18:45:51 1854498388
>>1854082
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 лет не было ни одного проекта, где бы всякие менеджеры и тим лиды не произносили этих слов. И каждый(!) раз потом работы по переписыванию было в несколько раз больше, чем если бы изначально нормально сделали.
Бизнесу всегда всё нужно вчера. Но со временем ты начинаешь их хотелки фильтровать и учиться предъявлять контр аргументы. А потом ты сам лид/архитектор, и не позволяешь бизнесу такую хуйню на голову твоих программистов скидывать.
Аноним 12/11/20 Чтв 19:19:46 1854528389
>>1853535
> 1) как ебануть функцию расстановки живых перед началом игры, чтобы не прокликивать на клаве 400 клеток вручную?
Я в вузе выебнулся и читал из битмапа: белая - пустая; черная(или любая другая) - живая. При отрисовке можешь как угодно уже рисовать.

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

Я вот делал что на каждом ходе схоронялась картинка, типа чтобы можно было проследить как там развивалось и самые удачные потом зацикливал и делал гифки как обоины для телефона. Вооооот.
Аноним 12/11/20 Чтв 19:39:31 1854544390
Привет.
Смотрите, вот пишут в интернете что не нужно диспозить HttpClient, типа нужно сделать один на все приложение. Другие пишут что нужно для каждого эндпоинта(либо наоборот для каждого api) свой делать. Третьи берут и диспозят.
Как правильно-то, если мне нужно на разные адреса постоянно слать Get'ы, а потом преобразовывать полученную информацию и на другие адреса слать Post'ы?
Ну, чтобы было ясненько, допустим есть n запущенных сторонних сервисов расположенных на разных доменах у которых есть общий API, мне нужно получить от этих серверов информацию и отправить в другой, но уже мой. Сервисы могут в процессе работы отваливаться либо запускаться новые, потому я предоставляю возможность пользователю добавить Uri на который я буду слать Get'ы, т.е. я заранее не знаю вообще с какого сервиса буду брать данные и сколько одновременно их будет.
Ну, пока что я не стал выдумывать и просто засунул Http-клиент в статический класс-обертку и просто имею коллекцию Uri'ев для Get'ов, но майкрософт пишет про какие-то АшТиТиПиФактори и со стороны оно выглядит прикольно, типа такой вот будет у меня сервис, где я просто вызываю метод GetItems() и получаю что мне нужно, потом как-то привожу к нужному мне виду и делаю PostItemsToMyServer(items), но в их примерах BaseUri вбивается хардкодом в конструкторе этого сервиса, а я ж как-бы не знаю еще Uri, а если передавать его в метод, ну, тогда и разницы-то большой нет между тем что я буду в статический класс этот Uri передавать.
В общем, реквестирую ликбез по HttpClient'у и как такие вот штуки нормально делать. Не думаю что задача какая-то уникальная и нет бест практис по ней.
Аноним 12/11/20 Чтв 19:58:46 1854560391
>>1854544
> АшТиТиПиФактори
> если передавать его в метод, ну, тогда и разницы-то большой
Там наверное идея в том что АшТиТиПиФактори может решать сколько ей клиентов нужно. Может использовать один (как я понимаю это рекомендованый вариант, нужно только thread safe методы использовать). Может навернуть пул клиентов. Может использовать один клиент для запросов к какому-то частому uri, а для всех остальных - второй. И т.п.
Аноним 12/11/20 Чтв 20:13:00 1854577392
>>1854544
АшТиТиПиФактори он создает HttpClient-ы по запросу, но впихивает в них HttpMessageHandler, которые кеширует на некоторое время.

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

Эти HttpClient можно смело диспозить.
Аноним 12/11/20 Чтв 21:07:19 1854640393
>>1854544
Делай как требуют того создатели - один на всё приложение.
>Как правильно-то, если мне нужно на разные адреса постоянно слать Get'ы, а потом преобразовывать полученную информацию и на другие адреса слать Post'ы?

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

Проблемы могут возникнуть только при необходимости использовать прокси-серверы для выполнения запроса, потому что HttpClient не поддерживает изменение прокси-сервера после того как класс уже создан. В такой ситуации для таких запросов лучше использовать более легковесный WebClient или WebRequest.CreateHttp.
Аноним 13/11/20 Птн 00:10:02 1854729394
Можно ли в студии настроить автоформатирование таким вот образом:

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, лол, или еще что-то такое простое, а в студии только отлаживать.
Аноним 13/11/20 Птн 12:36:47 1854975395
Подскажите кто-нибудь, как мне объединить вот это (^$)|[^0-9.]+ и это ^\\d{1}$ в regex, чтобы оно работало? Я уже с ума схожу от этого говна.
Аноним 13/11/20 Птн 14:03:25 1855032396
>>1854975
Солидарен с машиной, тоже не очень тебя понимаю
Аноним 13/11/20 Птн 14:13:50 1855036397
>>1855032
> (^$)|[^0-9.]+
> ^\\d{1}$
Это регулярные выражения, которые по отдельности работают нормально, а я хочу соединить их в одно выражение, но у меня не получается.
Аноним 13/11/20 Птн 14:19:29 1855045398
>>1855036
>Это регулярные выражения
Я какбэ догадался
>^\\d{1}$
Это чё? Зачем две палки когда есть собака? Что за {1}?
>а я хочу соединить их в одно выражение
Т.е. соединить? (^$)|[^0-9.]+|^\\d{1}$ или (^$)^\\d{1}$|[^0-9.]+^\\d{1}$ ? Надеюсь первое, второе совсем наркомания
Аноним 13/11/20 Птн 14:34:18 1855055399
>>1855045
>^\\d{1}$
> Это чё? Зачем две палки когда есть собака?
Можно и так и так
> Что за {1}?
Чтобы можно было только число из одной цифры ввести
> (^$)|[^0-9.]+|^\\d{1}$
Это я пробовал, если так написать, то условие [^0-9.]+ отваливается, на буквы нет реакции никакой
Аноним 13/11/20 Птн 15:30:08 1855108400
Аноним 13/11/20 Птн 16:05:49 1855150401
>>1855108
А должно быть false. У меня уже крыша едет.
Аноним 13/11/20 Птн 16:12:44 1855163402
>>1855108
>[^0-9.]+
>"a"
>false
Как false? Давай ты словами объяснишь, что ты хочешь.
Аноним 13/11/20 Птн 16:18:20 1855168403
>>1855163
А как не false, если я ограничиваю ввод цифрами, а он true на буквы выдаёт. Блять, я просто хочу, чтобы он выдавал true, когда я ввожу ОДНУ цифру в диапазоне от 0 до 9. На двухзначные и больше числа должно быть false, на отрицательные false, на буквы тем более false.
Аноним 13/11/20 Птн 16:21:51 1855173404
>>1855168
>[^0-9.]
>[^]
Разберись с регулярками что ли
Аноним 13/11/20 Птн 16:27:40 1855183405
>>1855168
>Блять, я просто хочу, чтобы он выдавал true, когда я ввожу ОДНУ цифру в диапазоне от 0 до 9
/^[0-9]$/
Аноним 13/11/20 Птн 16:31:36 1855188406
>>1846539 (OP)
Посоветуйте книги, в которых по больше практики, чтобы было какие api есть и как использовать, желательно современные api что есть в .net core.
Аноним 13/11/20 Птн 16:34:46 1855190407
Аноним 13/11/20 Птн 16:38:59 1855193408
>>1855190
Ну без слешей естественно же.
Аноним 13/11/20 Птн 16:40:18 1855197409
>>1855190
Вот так вроде работает
(^$)|/^[0-9]$/|^\\d{1}$
Но если диапазон уменьшить, то ему похуй. Это из-за | что ли. Вообще уже не соображаю, блять.
Аноним 13/11/20 Птн 16:42:23 1855199410
>>1855193
Всё, понял, спасибо, дай Бог здоровья. Ебал в рот регулярные выражения.
Аноним 13/11/20 Птн 16:43:10 1855200411
>>1855199
Их сатана придумал, не иначе.
Аноним 13/11/20 Птн 16:44:06 1855204412
>>1855199
>>1855200
Да хорош, просто почитай хоть параграф в документации
Аноним 13/11/20 Птн 19:43:57 1855390413
Кто-нибудь может ответить почему делегаты это не буквальное определение костылей?
Аноним 13/11/20 Птн 19:49:01 1855395414
>>1855390
потому что это не буквальное определение костылей
Аноним 13/11/20 Птн 19:54:09 1855396415
>>1853357
Вы чё дятлы? Какой сложнее, скобачники не люди.

only =>
only var
only using ... ;

Мне 23 года, специально залезаю в классы дедов и коммичу syntax исправления, потом лоллирую как они смотрят на меня, когда видят.
Аноним 13/11/20 Птн 20:02:22 1855401416
>>1855396
да можно вообще все убрать. сделать как в перле. мозг распарсит. зачем еще человеку то мозг как не в "уме интерпретировать код"

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

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

убрать using когда много вложенных using - это приемлемо, раз язык не позволяет сделать одно определение using для многих элементов. Но тотально убирать using только "потому что можно" - ИДИОТИЗМ
Аноним 13/11/20 Птн 20:04:41 1855403417
>>1855396
и да. не напрягает ConfigureAwait(false) везде писать? Хотя, скорее всего, ты просто не пишешь
Аноним 13/11/20 Птн 20:10:09 1855405418
>>1852892
Пишу GIS интеграции по COMу, как прадеды завещали.
Аноним 13/11/20 Птн 20:12:16 1855408419
>>1855390
Пиши на ассемблере, в нём костылей нет по минимуму.
Аноним 13/11/20 Птн 20:29:50 1855423420
>>1855408
Да при чём тут асемблер просто у меня гореть начинает когда что бы объяснить их необходимость начинают городить уровня "А давайте представим мульти вселенную в которой есть 8 альтернативных вселенных похожей на нашу в которой мы имеет доступа к родительским классам потому они были написаны и реализованы в неизвестный момент времени неизвестно кем и мы даже не знаем их реализацию и вот в одном из таких случаев мы можем создать делегат указывающий на нужный нам метод." Будто читаешь конспекты по физике написанные первокурсником с будуна.
ну есть уже обычные реализации этих методов в классах которые прекрасно читаемы и соблюдают структруру кода и его иерархию. Для тех кому мало перегрузку их сделали, абстрактные методы добавили, виртуальные НЕТ БЛЯДЬ хочу предполагать мульти вселенную и что где-то есть какие-то методы поэтому буду делегаты хуярить которые еще и должны и методу соответствовать по параметрам и модификаторам.
Аноним 13/11/20 Птн 20:35:15 1855426421
>>1855423
так у тебя претензии к тому, что ты там читаешь или к самим делегатам. ты уж определись

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

Комбинирование делегатов...ну это сделали, чтобы event реализовать. Ну так им захотелось "а пусть будет так еще вот уметь"
Аноним 13/11/20 Птн 20:43:32 1855434422
>>1855426
Сможешь на пальцах пример обрисовать их использования где они были НЕЗАМЕНИМЫМЫ? Можно даже с псевдокодом я не против. Я понимаю концепцию их но я даже сам себя переубедить не могу что это костыль но у меня то опыта больше чем лаба1 и лаба2 нет, может понимание их использований через жирные проекты приходит
Аноним 13/11/20 Птн 20:51:40 1855439423
>>1855434
>Сможешь на пальцах пример обрисовать их использования где они были НЕЗАМЕНИМЫМЫ?
изи.
вот тебе древняя концепция - нужно принять калбек в метод. Как будешь реализовывать? Как опишешь что "мне вот нужен метод который примет это и вернет это" не вводя в язык такого описателя?

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

попишешь так и задашь вопрос "а почему я не могу передать метод, как во многих других языках". Почему я должен реализоывать интерфейсы на каждый чих. Я что на жаве что ли пишу?
А тебе в ответ - низзя. передача метода потребует "интерфейс для метода", а это костыль
Аноним 13/11/20 Птн 20:58:47 1855444424
>>1855439
И как часто подобное происходит?
Аноним 13/11/20 Птн 21:04:51 1855452425
>>1855444
постоянно же. Каждый раз когда LINQ пользуешься - вот оно
ну и когда пишешь где нибудь Action<>/Func<>, что тоже очень часто - тоже оно
про event-ы я промолчу, я их избегаю, но обсервабле тоже нужны делегаты
Аноним 13/11/20 Птн 21:11:23 1855461426
>>1855452
Ладно, спасибо. Видимо мне нужно больше больше практики по теме, сейчас хоть всё не так однозначно стало
Аноним 13/11/20 Птн 21:12:28 1855463427
Я тот страдалец, которому приходится писать под UWP. Как понимаю, это тут редкость. Задавайте свои ответы.
Аноним 13/11/20 Птн 21:26:48 1855469428
>>1855390
А как без них линкью и асинхронщину писать? Или ты про саму реализацию делегатов? не читал, как они внутри устроены
Аноним 13/11/20 Птн 21:57:07 1855486429
>>1855461
Есть парадигмы: ООП и ФП (функциональное программирование)
в шарпе они представлены обе в какой то степени. Передача функций, анонимные методы - все это относится к ФП

И даже если шарпист нихрена не смыслит в ФП все равно использует вещи оттуда. Тот же LINQ это из функциональной парадигмы.
Ну или даже просто где нужен калбек или "мне нужен метод, нахер мне ради этого плодить интерфейс" то использует делегаты
Аноним 13/11/20 Птн 22:04:38 1855488430
>>1855403
Так его везде пихать уже давно не надо. Только если desktop, самописный контекст синхронизации или библиотека.
Нормальные люди пихали его до 2018 года, и потом перестали с выходом стабильной версии кора. А остальные только к 2020 догнали, что ConfigureAwait(false) то оказывается ставить надо! Только поезд ушёл.
Аноним 13/11/20 Птн 22:11:24 1855492431
>>1855488
ничего с выходом кора не изменилось. Ну разве что в asp.net core его по дефолту нет и это позволяет не писать жертвуя некоторой долей перфоманса и в надежде, что контекст никогда не появится
Аноним 13/11/20 Птн 22:27:51 1855502432
image.png 19Кб, 885x196
885x196
image.png 28Кб, 899x336
899x336
>>1855444
Всегда, когда нужно передать функцию как параметр.

Очень часто используемый пример с анонимной функцией
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;
}
Аноним 13/11/20 Птн 22:36:25 1855513433
>>1855492
Ну так о вебе и речь. Исключения перечислены выше. В консоли и в тестах контекст вообще редко кто добавляет.
В перформансе разницы вообще нет. Хоть ConfigureAwait(false), хоть ConfigureAwait(true). Можно доверять на эту тему статьям в инете, мы лично делали свои тесты, бомбардируя сервер тыщами запросов. Проверялось на разных машинах. Результаты были одинаковые.

При внезапной нужде в контекстe добавить ConfigureAwait(false) по всему коду можно в 1 клик через ctrl+. или alt+Enter.
Аноним 13/11/20 Птн 22:40:05 1855516434
>>1855513
>Хоть ConfigureAwait(false), хоть ConfigureAwait(true)
это если нет контекста. иначе есть, что как бы очевидно.

>добавить ConfigureAwait(false) по всему коду можно
как бэ нельзя.
и как бэ эта простыня читабельности не добавляет.
Аноним 13/11/20 Птн 22:42:55 1855519435
>>1855516
ты там походу пьяный в честь пятницы, твои комменты не стыкуются друг с другом
Аноним 13/11/20 Птн 22:52:35 1855527436
>>1855519
ну так это у тебя "о вебе речь". Я про "только веб" и не говорил

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

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

а про автоматизм там все проще
- нельзя везде проставить ConfigureAwait(false) там где "забыл" проставить. У тебя на проекте это проблем не вызовет - у меня же получишь дедлок (хотя формально он тоже асп.нет кор)
- ну и да. тотальное ConfigureAwait(false) засоряет код, потому то вы его и не пишете - с этим думаю спорить не будешь
Аноним 13/11/20 Птн 22:53:54 1855528437
>>1855519
ой. не дедлок..., ну в общем ты понял
Аноним 13/11/20 Птн 23:10:09 1855533438
>>1855519
и вообще речь о том что этот ConfigureAwait(false) есть говно
все так рады var но мало кто просит "замените ConfigureAwait(false) на что то вменяемое", чтобы вот не было такого "надо писать/можно не писать" раз уж сделали херню, что по дефолту ConfigureAwait(true)

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

зато целый юсинг скобочки убрали (а убирать их нужно далеко не везде, но кого это волнует - модно же)
Аноним 13/11/20 Птн 23:28:18 1855540439
Аноним 14/11/20 Суб 02:20:59 1855656440
image.png 252Кб, 860x280
860x280
Аноны, вопрос такой, при нажатии на ентер в инпуте на сервере вызывается не связанный с инпутом метод, причем если его закомментировать вызывается другой если закомментировать и его то вызывается еще другой, и так далее, я не понимаю какого хрена вообще происходит, я не знаю даже что в скринах отправлять потому что понятия не имею что это за ошибка
Аноним 14/11/20 Суб 03:14:40 1855668441
.NET 5 на Линуксе уже пробовали? Думаю, стоил ли ставить из AUR.
Аноним 14/11/20 Суб 03:15:24 1855669442
>>1855656
Как ты узнаешь об этом?
Аноним 14/11/20 Суб 03:20:31 1855671443
Если кто не в курсе, .NET 5 релизнули. Я только не понял, он эволюция .NET Core и стоит сразу же использовать его, или они будут развиваться параллельно?
Аноним 14/11/20 Суб 03:21:41 1855672444
Аноним 14/11/20 Суб 03:29:51 1855675445
>>1855672
Говоришь, что знаешь какие методы запускаются, как узнаешь? Вероятно можешь понять и почему?
Аноним 14/11/20 Суб 03:37:12 1855679446
>>1855675
Ну я же могу в дебаге посмотреть какие методы вызываются, так вот вызываются по сути чисто рандомные методы но постоянно
Аноним 14/11/20 Суб 03:42:53 1855683447
>>1855656
Каком сервере, какой импут, болезный? Хорошо хоть аниме прикрепил,обозначив себя умственно отсталым.
Аноним 14/11/20 Суб 03:44:38 1855684448
image.png 45Кб, 902x167
902x167
>>1855675
Импуте обычном блять, хтмловском, а сервере дотнетовском, мы в c# треде гений, вот собственно выделена строчка с тем самым импутом
Аноним 14/11/20 Суб 03:50:52 1855688449
>>1855684
Так это не сервер, долбоеб, это браузер. И на скрине даже не Blazor. Тебе в js смотреть нужно, С# здесь не причем.
Аноним 14/11/20 Суб 03:56:11 1855690450
image.png 35Кб, 1124x213
1124x213
>>1855688
Да, я тоже так подумал, проблема в том что вызывается именно серверный защищенный onClick метод например сейчас такой, если его закомментировать будет другой, и я не понимаю как это возможно, это же защищенный метод, его тупо НЕ ВОЗМОЖНО вот так вот вызвать из клиента какой бы ни был бы скрипт,
Аноним 14/11/20 Суб 03:56:33 1855691451
А это правда что .net core шлёт телеметрию?
Аноним 14/11/20 Суб 04:04:36 1855693452
Аноним 14/11/20 Суб 04:07:47 1855696453
>>1855690
>вызывается именно серверный защищенный onClick
Бесполезный набор слов. Какой onclick, Blazor?
Аноним 14/11/20 Суб 04:09:29 1855697454
>>1855690
Короче, подробно опиши проблему. Мож у тебя там ASP.NET 4 Webforms какойнить, который никто в глаза не видел уже лет 20.
Аноним 14/11/20 Суб 04:13:51 1855698455
image.png 27Кб, 611x175
611x175
image.png 99Кб, 1220x314
1220x314
>>1855696
Стандардтный EventHandler для аспшних контрлов типа такого как на первом пикриле
или второй пик как подобный контрол выглядит на клиенте

>>1855697
Ну как бы да у меня асп вебформс, распространённая платформа, немного устаревшая, но когда-то была популярна
Аноним 14/11/20 Суб 04:32:12 1855703456
>>1855698
>Стандардтный EventHandler
>вебформс
Не стандартный.

>Ну как бы да у меня асп вебформс
И что я должен из тебя все это клещами вытягивать или гадать?
Аноним 14/11/20 Суб 04:33:39 1855704457
>>1855703
Он не зря аниме к посту первому прикрепил, а только потом код показывать начал.
Аноним 14/11/20 Суб 04:34:06 1855705458
>>1855703
а что в разоре или мвс евентХандлеры сильно отличаются? да и какое это имеет отношение ведь не важно где, защищенный метод не может вызываться вот так из клиента
Аноним 14/11/20 Суб 04:36:40 1855706459
image.png 61Кб, 225x225
225x225
>>1855704
Я просто не понимаю что конкретно мне скринить потому что то выполняется и то что вызывается вообще не имеет отношения друг к другу, там общее только то что они на одной странице, как я и говорил методы вызываются совершенно рандомно, мне что весь код страницы скринить? там порядка 400 строк бака
Аноним 14/11/20 Суб 04:51:28 1855712460
>>1855705
>а что в разоре или мвс евентХандлеры сильно отличаются? да и какое это имеет отношение ведь не важно где, защищенный метод не может вызываться вот так из клиента
В старом ASP.NET совсем другой конвейер обработки запросов, событий, вообще все другое. Там непрозрачно все происходит, с магией. Так что разбирайся.
Аноним 14/11/20 Суб 05:05:26 1855717461
16039536975310.png 260Кб, 422x604
422x604
>>1855712
По моему в вебформах как раз таки все просто, есть клиентская сторона, есть серверная сторона, а в мвс нихуя не понятно, где страницы, где коды страниц, все намешано как спагети, часть кода страницы в одной директории, часть кода страницы в дргуой, часть кода страницы вообще где-то манямирке который я никогда не увижу, разве это удобно? ну да предположим мвс немного быстрее, но ведь в вебформах можно часть code behind вообще низкоуровневым сделать, и оптимизировать код так что мвс такое и не снилось, а в мвс и блазоре что? фреймворки? библиотеки сторонние? надстройки? вы думаете это будет работать быстрее чем низкоуровневый код? что плохого в том что у тебя есть контроль над рендером? разве это не дает еще больше свободы в оптимизации страницы? а вместо веб апи можно использовать веб методы
Аноним 14/11/20 Суб 05:13:57 1855718462
>>1855712
Про дебаг кстати я вообще молчу, и понял почему ты сначала спросил про "Как ты узнаешь об этом?" потому что да в случае мвс это нихрена не очевидно, там дебажить не возможно, понятно зачем туда ввели докер, без него дебажить код просто не возможно потому что он раскидан по всему решению, и вперемешку с клиентским кодом, как это можно дебажить если ты даже за потоком проследить не можешь?
Аноним 14/11/20 Суб 05:18:41 1855721463
Аноним 14/11/20 Суб 05:19:25 1855723464
>>1855717
>разве это удобно
>вот у меня всё просто и понятно
>двач памахи методы самовызываются што делать
>catch (ThreadAbortException){}

А ты смешной.
Аноним 14/11/20 Суб 05:23:40 1855724465
>>1855717
Чувак, ты поехавший. Начинай читать нормальные статьи и книги, чем скорее, тем лучше. Иначе это станет не излечимым.
Аноним 14/11/20 Суб 05:25:44 1855726466
Клевый чел. Чего вы на него набросились? Лучше бы помогли.
Аноним 14/11/20 Суб 05:26:14 1855727467
>>1855723
Ну да, прогеррам на мвс такое не понять, они могут только копировать код с гитхаба или юзать фремвокри, а за претензию к catch (ThreadAbortException){} поясни, в чем проблема скипать сейфовые и обработанные исключения?

>>1855724
>Чувак, ты поехавший. Начинай читать нормальные статьи и книги, чем скорее, тем лучше. Иначе это станет не излечимым.
Есть что ответить по сути? кроме оскорблений? Разве я кого-то оскорблял? Так если ты переходишь на личное из за тебе нету чего ответить по сути может это не я поехавший
Аноним 14/11/20 Суб 05:26:29 1855728468
>>1855721
>Но можно и на машину установить
>https://wiki.archlinux.org/index.php/.NET_Core
Да я знаю, просто у меня уже dotnet-sdk-3.1.8 стоит из комьюнити репа. AUR стараюсь использовать только в крайних случаях, тем более с такими новыми пакетами. Я пока почти не читал доку по .NET 5, не будет ли конфликтов, как я будут .NET CLI использовать разных версий на одной машине?

>Можно образ использовать через докер или k8s.
Само собой. Наверное так и сделаю.
Аноним 14/11/20 Суб 05:28:42 1855730469
>>1855726
>Лучше бы помогли.
Еще бы знать как помочь. ASP.NET тыкал давно когда на винде был, сейчас на линуксе и использую net core.
Аноним 14/11/20 Суб 05:32:16 1855735470
>>1855727
>Есть что ответить по сути? кроме оскорблений? Разве я кого-то оскорблял? Так если ты переходишь на личное из за тебе нету чего ответить по сути может это не я поехавший
Он наверное имел ввиду, что у тебя все наоборот. Сами Microsoft неоднократно писали, что создали ASP.NET Core потому что он удобнее, безо всякой магии, а ты твердишь обратное. К слову, в новом ASP.NET Core есть Razor Pages, это сильно более продвинутый Webforms, попробуй.
Аноним 14/11/20 Суб 05:32:35 1855736471
image.png 253Кб, 362x512
362x512
>>1855726
Спасибо Анончик, нынче олдов совсем не уважают, облепились фремворками и копипастом с гитхаба и спят и сидят довольные, а у меня между прочем легаси, вот возьми, я угощаю
Аноним 14/11/20 Суб 05:38:51 1855738472
>>1855736
>нынче олдов совсем не уважают
На SO иди, или погугли что ли, олд блин...
Аноним 14/11/20 Суб 05:40:21 1855739473
>>1855736
Ну ты просто не с той стороны зашел со своей проблемой. Так мало инфы дал, что единственный, кто тебе может помочь это чел с такой же проблемой, который все решил сам. Вероятность встретить тут такого чела невелика. Вот и пошли в общем-то небезосновательные предложения перекатиться на технологии поновее.
Аноним 14/11/20 Суб 05:41:02 1855740474
image.png 5Кб, 338x57
338x57
>>1855735
Про разор я в курсе, ну а насчет магии смотри, простой быстрый пример на дефолтном проекте, вот предполий хочу я зайти в метод и посмотреть что происходит в view? А мне не дают, почему? В вебформах такой фигни нет, там можно даже в авто генерируемые классы можно зайти и почитать и даже изменять, не знаю зачем это может кому нибудь понадобиться но все же
Аноним 14/11/20 Суб 05:43:29 1855741475
>>1855736
Я в ваших дотнетах 15 лет сижу. У нас тоже есть говно легаси 10+ летней давности и 1гб кодобазой. И есть системы из микросервисов на core 3.1 и net 5.

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

>Есть что ответить по сути?
Судя по твоим сообщениям у тебя страшная каша в голове. Тут даже страницей текста не объяснишь, где эту суть начинать ухватывать.
Аноним 14/11/20 Суб 05:56:55 1855748476
>>1855740
MVC так то тоже уже легаси. Я их 3 года не использовал. Теперь АПИ пилят, и потихоньку начинают перекатываться на gRPC и HTTP2 и Blazor.

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

Фронт-енд часть так и остаётся почти чистым html + js + css, только с небольшим пререндерингом на сервере (обычно для безопасности и иногда для удобства с валидацией и прочей чисто фронт-енд функциональностью).
Аноним 14/11/20 Суб 06:09:51 1855752477
>>1855740
В поиске по дереву файлов проекта вводишь "(имяконтроллера)View" и всё, ты уже видишь что это за view и что в нём происходит. Это гораздо удобней ситуации когда у тебя всё в куче.
Аноним 14/11/20 Суб 06:19:55 1855756478
>>1855748
Да я в общих чертах знаю как мвс работает, то что ты написал я точно знаю, и ничего не имею против мвс, просто мне не очевидно то что есть люди в асп которые не знают вебформы, и еще более странно что есть люди которые открыто его хейтят
>>1855752
Ты имеешь в виду когда можно просто использовать хелперы и прожать F11? Никто не заставляет тебя писать весь код в одном файле, делай рефрактор как захочешь, просто там поток для построения страницы как у классических приложений, условный мейн и дальше функции которые в этот мейн вызываются, а клиенту ты передаешь то что тебя надо по мере выполнения потока собственно мне это и нравилось когда я в асп перекатывался из дектопного программирования,
Аноним 14/11/20 Суб 06:22:55 1855759479
>>1855756
>условный мейн и дальше функции которые в этот мейн вызываются
Ну да, простыня под названием процедурщина, самый ущербный стиль, который ведёт к путаницам и является родителем макаронного кода и вопросам "у меня методы вызываются непонятно откуда, что делать?".
Аноним 14/11/20 Суб 06:30:25 1855763480
>>1855759
Именно этот "условний мейн" состоть буквально из 10-20 строчек, я не понимаю про какой спагетти код ты говоришь
Аноним 14/11/20 Суб 06:30:29 1855764481
>>1855756
>мне не очевидно то что есть люди в асп которые не знают вебформы, и еще более странно что есть люди которые открыто его хейтят
Ух негодяи, да?
Аноним 14/11/20 Суб 06:39:16 1855765482
image.png 114Кб, 275x183
275x183
Аноним 14/11/20 Суб 06:56:12 1855768483
>>1855763
Странно, но ты как то умудрился в нём запутаться.
На самом деле всё очевидно - легче жрать кактус и говорить что он вкусный и тебе совсем не больно, просто потому что для того чтобы употреблять нормальную еду нужно немного потрудиться и выучить что то новое, а тебе лень.
Аноним 14/11/20 Суб 07:07:17 1855769484
>>1855768
Если ты по поводу того трабла о котором я спросил, то это вопрос именно к клиентской части, а не серверной, а точнее вопрос к постбеку, костылями этот вопрос можно решить, например юзнуть Page.IsPostBack, или можно избавиться от мастера, или возможно
Event.preventDefault(), но я ищу причину почему выстреливает не правильный постбек, у меня есть подозрения на updatePanel или js теоретически это еще может быть signalR хотя он и не может вызвать защищенные методы, но ведь он может вызвать постбек после которого и сработает евентХандлер, так что в любом случае єто клиентский трабл
Аноним 14/11/20 Суб 07:49:33 1855783485
>>1855671
Это просто новая версия .NET Core.
Аноним 14/11/20 Суб 08:27:18 1855798486
>>1855423
Ну смотри, допустим ты делаешь сервер на сокетах. Все же довольно просто и основная логика - всегда одинакова: приняли клиента - как-то начали обрабатывать. Но вот обработка может быть разной, допустим первому пользователю твоего класса нужно modbus, а другой - хочет таки http, а третий вообще irc хочет, кому-то нужны сессии, кому-то не нужны, может быть кто-то просто хочет на любой запрос - время отдавать текущее и ничего больше. Ну и разве плохо будет если твой класс сервер - просто будет принимать делегат вида void(Server, Client). Пользователь твоего класса тупо описывает что ему нужно: тут мы побайтово читаем, как-то пакетики обрабатываем и делаем modbus фигню, а вот тут мы пытаемся запрос парсить как строку и если все ОК - отдаем ресурс и т.д.. "Сервер" при этом вообще никак не меняется, он просто создает тастку в которую засовывает твой делегат и дальше ждет приема клиентов. Хорошо же.
Да, это не совсем ООПшно. И ты конечно мог бы сделать в ООП стиле, только вот зачастую оно не требуется, а еще чаще ты просто хуйню напишешь, а так - твоя библиотечка в этом случае будет строк в 200, если же будешь все ООП делать - код разрастется, а пользователь будет вынужден разбираться во всей этой структуре - что куда пихать, какие классы ему создавать и т.д.
Ну, по крайней мере мой охуительный опыт работы в 1 год вот такое впечатление оставил. Да.
Аноним 14/11/20 Суб 14:22:48 1855937487
>>1855668
Пробовал, вроде работает. Но вот еап райдера не запускается, поэтому фичи 9 шарпа попробовать не могу. Сука, им деньги платят, а они вовремя не могут выкатить поддержку нового языка, хотя анонс 9 шарпа был еще в марте, вроде.
Хуй знает, кто этот райдер кроме линуксоидов и макодебилов юзает.
Аноним 14/11/20 Суб 15:19:32 1855970488
>>1855668
двачую вопрос, там вообще как десктоп приложения уже можно пилить из под Линуха или только ВЕБ? Студии всё так же нет, только КОД?
Аноним 14/11/20 Суб 15:43:43 1855979489
>>1855970
всегда было можно
вопрос в том удобно ли )
Avalonia/UNO
Аноним 14/11/20 Суб 15:44:16 1855981490
>>1855970
или ты про редакторы? ну там только Rider
Аноним 14/11/20 Суб 15:53:43 1855987491
>>1855970
>там вообще как десктоп приложения уже можно пилить из под Линуха или только ВЕБ?
Да, wpf точно. Почитай, я хз. Или лучше установи и сделай dotnet new, покажет доступные шаблоны, хотя я опять же хз насчет все ли шаблоны из коробки есть, может их отдельно нужно ставить.

>>1855970
>Студии всё так же нет, только КОД?
Нах не нужна ты че, 10Гб весит минимум, тормознутое глючное дерьмо. VSCode с Omnisharp позволяет все тоже самое.
Аноним 14/11/20 Суб 16:22:11 1856009492
>>1855987
да ну какой WPF.
даже если редактор умеет WPF и запускается под линукс то это ничего не значит ибо приложение не запустить для дебага
а дизайнер...поставил я на днях Rider и дизайнера для WPF под неткоре просто не существует.
Аноним 14/11/20 Суб 16:30:53 1856017493
током ебнуть.jpg 98Кб, 512x445
512x445
>>1855691
>А это правда что .net core шлёт телеметрию?
>>1855693
>Доку почитать не вариант?

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

Я правильно понимаю, в ваш этот свободный дотнет встроена блядь телеметрия.
И никого это не смущает?
Аноним 14/11/20 Суб 16:37:49 1856029494
>>1856017
В твою мобилку тоже встроена телеметрия, как и во все поисковики и популярные сервисы, в винду, в небо и Аллаха. Добро пожаловать в реальный мир, Нео.
Аноним 14/11/20 Суб 16:38:11 1856031495
>>1856017
Не волнуйся, всем похуй на какое маняме ты дрочишь.
Аноним 14/11/20 Суб 16:44:34 1856044496
>>1856017
>Я правильно понимаю, в ваш этот свободный дотнет встроена блядь телеметрия.
И че? Это среда разработки, логично, что им нужна инфа как она работает на устройствах, чтобы ее развивать. Телеметрия отключается вручную. Вообще как бы кто этим пользуется, тот занимается разработкой и ему пох что там сканируют в системе, это же рабочая машина. dotnet может быть в докер контейнере, что вообще исключает выход за пределы одного процесса.
Аноним 14/11/20 Суб 16:53:10 1856054497
16044317606500.jpg 74Кб, 672x900
672x900
>>1856044
> ему пох что там сканируют в системе, это же рабочая машина.
>пох что там сканируют в системе
>это же рабочая машина
Блядь блядь блядь сука блядь что происходит?

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

Не не подождите ёбана.
Что происходит вообще? У вас теперь документация для телеметрии идет?
Вы там ёбнулись вконец?
Мало знать дотнет и сишарп нужно еще внимательно изучать телеметрию сука блядь по оф докам?
А сертификация по телеметрии есть?
Аноним 14/11/20 Суб 17:02:54 1856070498
>>1856054
Какое другое? Это все тоже самое, что и везде сейчас. Дальше будет еще круче.
Аноним 14/11/20 Суб 17:56:04 1856127499
>>1856054
>пикча
Она под чем, что с глазами?
Аноним 14/11/20 Суб 18:53:03 1856159500
bandicam 2020-1[...].mp4 8017Кб, 1920x1080, 00:01:10
1920x1080
хуй знает на что потратил джва вечера но остался доволен.
Можно как то забустить вывод текста в консоль?
Аноним 14/11/20 Суб 18:56:03 1856160501
Аноним 14/11/20 Суб 19:02:53 1856166502
Аноним 14/11/20 Суб 19:07:11 1856172503
>>1856166
могу выкинуть архивом или на гитхаб, но там код говна т.к. изначально это был проект интерпретатора брэйнфака с поддержкой слов разной длинны
Аноним 14/11/20 Суб 19:10:44 1856174504
Аноним 14/11/20 Суб 19:11:20 1856175505
>>1856172
>гитхаб
Давай, но все же объясни как сделал, использовал либу какую?
Аноним 14/11/20 Суб 19:11:34 1856176506
>>1856172
А почему в итоге получилось аниме?..
Аноним 14/11/20 Суб 19:20:00 1856185507
>>1856159
Молодец. Теперь сделай чтобы в звук могла.
>>1856166
Самое простое - берешь картинки, читаешь как битовую карту и просто рисуешь в консоль. Может быть тот анон как-то сложнее придумал, я для вуза вот так вот как я сказал делал.
Аноним 14/11/20 Суб 19:50:17 1856201508
>>1856185
>Самое простое - берешь картинки, читаешь как битовую карту и просто рисуешь в консоль. Может быть тот анон как-то сложнее придумал, я для вуза вот так вот как я сказал делал.
Там же не статическое изображение, а анимация. Битовые карты это про что вообще, гуглить обработку изображений?
Аноним 14/11/20 Суб 19:56:38 1856203509
>>1856159
Ну так что там насчет гитхаба, или ты обычная вниманиеблядь?
Аноним 14/11/20 Суб 19:59:27 1856205510
>>1856201
Простейшую анимацию ты можешь замутить последовательно читая картинки. Да, не самый оптимальный вариант, но вполне для мелкой фигни сгодится. Возьми сделай какую-нибудь серию из 100 фоточек, запили 30 кадров в секунду и у тебя будет анимация.
Вопрос месяца Аноним 14/11/20 Суб 20:28:59 1856234511
Как кроссплатформенно создать и держать трэй-иконку? Трэй-иконку с балон-тултипом на десктопах и с как можно более прозрачным и автоматическим превращением её в пуш-уведомления на мобилах.
Аноним 14/11/20 Суб 20:51:01 1856255512
>>1856234
Делаешь интерфейс: INotification, с методом void Notify(string message), там уже под каждую OS - делаешь свои реализации: WindowsNotification, LinuxNotification и т.д. Там уже от платформы пляшешь. Тут мы берем из винапи что-то, там GTK, тут какие-то андроид хуевины.
При сборке контейнера просто можешь ебануть дефайнами выбор когда какой INotification использовать. Изи-бризи.
Пока писал подумал, что скорее правильно было бы не INotification, а INotifier. Имплементирующие его - делают это под разные платформы и окружения, а вот INotification - может быть скорее каким-то сообщением с приоритетом, типа: ImportantNotification, InformationNotification и т.д., чтобы была возможность как-то управлять этими вот сообщениями. Ну, соответственно можешь сделать какую-то очередь уведомлений, твои классы - кидают это в очередь, INotifier - переодически достает из очереди - выводит, у него по сути один метод Run с циклом который бесконечно достает из очереди - выводит.
Еще подумал. У тебя 3 интерфейса: INotification, INotifier и INotificationDriver, вот Driver как раз будет заниматься всей хуйней специфичной для OS,уведомелния - то что будет приходить INotifier'у, он уже решает вывести его с помощью драйвера или же запихнуть обратно в очередь и выввести что-то более важное. Вот. Да. Как мне кажется - норм решение.

Ну а кк держать иконку - уже в драйвере сам придумаешь под конкретную платформу.
Аноним 14/11/20 Суб 21:15:01 1856271513
>>1855937
Виндовых юзеров на хабре видел с лестными отзывами. Лично только маководов знаю, им вроде тоже норм. Под никсами наверное проще VSCode с плагинами использовать. Тем более там норм дебаг появился и локально и удалённо и в контейнере. Анализаторы не пробовал, но тоже должны работать.
Надеюсь что с завозом telemetry и прочих ништяков, которые дотнет по умолчанию эммитит, появятся всякие опен сорс тулзяки для анализа перформанса и многопоточности.
Аноним 14/11/20 Суб 21:20:33 1856278514
Аноним 14/11/20 Суб 21:21:39 1856280515
>>1856278
ну и сделал что бы она умела исполнять то для чего создавалась, не рисовать bad apple в консоли, а исполнять брэйнфак
Аноним 14/11/20 Суб 21:22:07 1856282516
Аноним 14/11/20 Суб 21:36:09 1856293517
>>1856278
3 проекта? 3 проекта, Карл! Хорошо хоть .net core
Аноним 14/11/20 Суб 21:38:56 1856295518
>>1856293
проще сразу распилить чем потом ебаться. Да и хоть 50. Если они по задачам разбиты то лучше уж 50 чем всё говно в одном проекте держать
Аноним 14/11/20 Суб 21:45:18 1856300519
>>1856127
>Она под чем, что с глазами?
Увидела зонды.

Да просто глаза широко раскрыла.
Девушка молодая, кожа упругая, жира мало.
Аноним 14/11/20 Суб 21:51:49 1856302520
Аноним 14/11/20 Суб 21:57:25 1856305521
>>1856295
>проще сразу распилить чем потом ебаться. Да и хоть 50. Если они по задачам разбиты то лучше уж 50 чем всё говно в одном проекте держать
Это называется ООП головного мозга. Можно разделить на каталоги, модули, файлы, но зачем на проекты? Получаются лишние файлы .csproj и прочая подобная шняга.
Аноним 14/11/20 Суб 22:33:47 1856327522
>>1856305
Затем что тебе не нужно пересобирать все разом, если поменял только небольшую часть.
Ну, допустим у тебя библиотека для работы с устройствами разными. Там куча логики для работы с этими устройствами. При этом ты не хочешь заставлять пользователей для каждой новой версии качать всю программулину, которая может несколько гигов весить. Ты просто добавил в библиотеку классов поддержку нового устройства, затем при старте сама программулина проверяет есть ли новая версия библиотеки устройств и если есть - скачивает ее, кладет в папочку и все, у тебя новый функционал в приложении, а пользователь не все перекачивал, а только 1 библиотечку, которая и весит-то пару килобайт. Круто же.
Ну, по крайней мере я говорю в контексте того с чем имел дело на работе, у нас вот каждый месяц новые устройства появляются, а ПО - нужно чтобы читать из них данные. И мы как раз так вот делаем: есть проект для БД, который почти не меняется, есть проект с интерфейсами, который тоже почти не меняется, есть библиотека всяких штук для работы с устройствами, есть еще куча всяких наших библиотек, есть основное приложение, которое просто, по сути, берет из других проектов куски, запихивает их в контейнеры и знает как рисовать интерфейс. Если мы добавляем новый канал связи - просто добавляем в библиотеку новый класс, если новое устройство - описываем устройство, какие каналы связи оно использует, все это вот. Приложение само при старте все смотрит на наших серваках, если появилась новая библиотечка - скачивает и все работает как часы. Опять же, проще тестировать, нам не нужно все отдавать тестерам, у них там вообще роль основного приложения на консольной утилите, они положили dll'ку, запустили батник, там красненьким будет светиться если что-то не так, а если в интерфейсе что-то новое, опять же не нужно все библиотеки устройст - одна маленькая фейковая.
Аноним 14/11/20 Суб 23:09:34 1856343523
Аноним 14/11/20 Суб 23:34:31 1856353524
>>1856343
> Python теперь будет разрабатываться Майкрософтом :)
Нет, потому что Гвидо больше не пожизненный диктатор, в Python он теперь не принимает решений. Разве что наравне со всеми.
Аноним 14/11/20 Суб 23:42:54 1856355525
поясните за source generators
я так понимаю это как в андроидах генерятся классы биндинга, DI и так далее
но там для этого есть отдельная команда make project, которая только это и делает
а в студии где такое? или нужно билдить, ясень пень с ошибками, и это нормально?
Аноним 15/11/20 Вск 00:15:29 1856363526
>>1856255
Спасибо за подробный ответ.
А есть готовые реализации вышеописанного?
Аноним 15/11/20 Вск 02:51:38 1856434527
Снимок экрана 2[...].png 24Кб, 1190x270
1190x270
Народ, объясните нубу, откуда эти два вопроса перед 4кой?
Аноним 15/11/20 Вск 03:11:59 1856440528
>>1856434
похоже что в шрифте консольки нет какого то символа. попробуй стереть и по новой напечатать. и ещё вместо запятой лучше отдельно 2 переменных объяви, юзай var, в интерполированных строках можно юзать bool?1:2 тобишь
var div = (x+y)%4 == 0;
Console.WriteLine($"bla bla is {div?"not ":""}divisible bla bla")
Аноним 15/11/20 Вск 09:38:47 1856537529
>>1856440
Переписал, помогло, но так и не понял что с консолькой. При отладке строке result присваивалось нормальное значение без этих вопросов. Мб это как то связано с тем что это "the sum of бла, бла, бла" я копипастил из переводчика?
Аноним 15/11/20 Вск 11:18:16 1856579530
>>1856434
Погоди. Почему у тебя студия белая и вообще тема белая? Ты что, не хакер?
Аноним 15/11/20 Вск 11:42:35 1856597531
>>1856579
что ты имеешь против белой темы? у меня вот тоже белая
Аноним 15/11/20 Вск 11:45:09 1856598532
Как сделать так, чтобы программулина весь свой стейт запоминала с каким-то интервалос времени и при следующем старте - этот стейт использовала?
Аноним 15/11/20 Вск 11:57:06 1856605533
>>1846539 (OP)
Как зациклить программу правильно? Если юзать беск. цикл то память сильно засоряется
Аноним 15/11/20 Вск 11:59:48 1856606534
>>1856605
где связь между бесконечным циклом и памятью?
while(true) это просто цикл и нормальное средство зацикливания
хотя я больше предпочитаю
while(!ct.IsCancellationRequested)
или
while(lifetime)
Аноним 15/11/20 Вск 12:22:22 1856622535
>>1856606
>while(!ct.IsCancellationRequested)
>или
>while(lifetime)
Что это?
Аноним 15/11/20 Вск 12:37:57 1856633536
>>1856622
обычно это не имеет значения, но даже вечные циклы не вечные и умирают при остановке компонента или приложения. И неплохо бы обеспечить "graceful shutdown", а не бросить все "авось все будет ок"

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

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



Аноним 15/11/20 Вск 12:39:32 1856636537
Аноним 15/11/20 Вск 14:17:49 1856706538
>>1856537
Да. Вместе с обычными симолами скопировались невидимые
Аноним 15/11/20 Вск 14:18:39 1856708539
>>1856598
Сохраняй в файл, помле чего загружай, очевидно.
Аноним 15/11/20 Вск 14:20:32 1856710540
>>1856605
Добавляй задержку между итерациями, используя Task.Delay.>>1856633
Тз
Аноним 15/11/20 Вск 15:13:34 1856747541
>>1856597
Говорю же нуб. Такая по дефолту ставилась, но думаю стоит всё-таки, раз уж я решил стать белым .net господином И съебать с завода где уже зашкварил свою трудовую одной жёлтой программой
Аноним 15/11/20 Вск 18:34:38 1856906542
>>1856747
Как ты надоел. Сделай скрин. Без него помощи не жди.
Аноним 15/11/20 Вск 23:01:36 1857134543
Можно ли в асп коре с помощью тэг-хэлпера сформировать ссылку на элемент? Т.е. если мапится routename /anus/{foo}/
asp-route="routename" asp-route-foo="jopa" asp-???="bar"
то я хочу получить
/anus/jopa/#bar
Аноним 15/11/20 Вск 23:05:12 1857140544
>>1857134
Блять. asp-fragment прямо перед глазами же. Пойду спать.
Аноним 16/11/20 Пнд 07:41:05 1857427545
Смторите какая хреновина.
Допустим у меня есть класс, который запихивается в контейнер как синглтон. Допустим у него одна единственная задача - раз в 10 минут печатать в файлик текущее время и есть два метода: ОстановитьПечать - ЗапуститьПечать. Так вот, если я просто в стартапе пишу что вот этот вот класс - синглтон, то чтобы он начал своей фигней заниматься - я должен хотя бы раз использовать его в другом месте, например я должен в контроллер его передать в конструкторе. Да, я могу при билде хоста - достать его и все будет работать, но я вот такая бака, хочу чтобы метод Main выглядил вот так вот:

await CreateHost(args).RunAsync();

красивей же, чем если бы я после того как создал билдера - доставал из него нужный мне класс просто чтобы он запустился.
Так вот, пока что я вот такой вот костыль придумал - делаю класс ServiceLauncher, который имплементирует IHostedService, и в него пихаю все что должно вот так вот запускаться. Но мне кажется что это какой-то жуткий костыль. Имплементировать интерфейс IHostedService для моих сервисов я не хочу, потому что ну серьезно много лишнего получается в классе.
Есть ли какая-то штуковина в этом самом неткоре, чтобы просто явно указать, что инстанс синглтона вот этого вот класса - должен создаваться сразу, а не ждать пока его вызовут?
Аноним 16/11/20 Пнд 08:36:58 1857451546
>>1857427
services.AddSingleton<MyService>(new MyService());
Всё, твой сервис активирован, инжектить в конструктор для того чтобы делать что-то начал не надо.
Аноним 16/11/20 Пнд 10:08:36 1857473547
>>1847524
О джаве еще кто-то что-то слышал благодаря мобильной разработке. А так это тырпрайзное легаси говно в стадии кобола (какая-то своя атмосфера, которая никому нафиг не нужна и вообще дерьмо динозавра).

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

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

Шарп, конечно, вендор-лок говно, но хоть не выглядит как язык на отъябись.
Аноним 16/11/20 Пнд 14:58:20 1857650548
>>1857473
>Шарп, конечно, вендор-лок говно

Уже .Net 5 вышел, а у тебя всё еще вендор-лок. Майкрософт признали свои ошибки, вложились в опенсорс и нацелились на кроссплатформу.
Аноним 16/11/20 Пнд 17:29:21 1857783549
>>1857650
Я написал что-то про кроссплатформенность?
Аноним 16/11/20 Пнд 17:34:28 1857789550
>>1857783
А что ты под вендор лок подразумеваешь?
Аноним 16/11/20 Пнд 17:51:16 1857792551
>>1857789
Разумеется монополия по либам и решениям.
Аноним 16/11/20 Пнд 17:55:26 1857796552
>>1857792
Только не надо сейчас бежать и нести сомнительные либы с 1,5 разработчиком, которые нехера никто юзает.
Аноним 16/11/20 Пнд 18:05:37 1857799553
>>1857792
а где монополия? в чем?
Аноним 16/11/20 Пнд 18:20:40 1857808554
>>1857792
>всё в опенсоре, сотни контрибьютеров, можешь лично внести изменения в ядро, если хватает навыков. Каким-то очень популярным, но слабо оптимизированным решениям майки придумывают аналоги, которые разрабатывают за своё счёт (Text.Json как пример)
>Разумеется монополия по либам и решениям.

Ясно. Очередной вскукарек дилетанта.
Аноним 16/11/20 Пнд 19:29:52 1857855555
>>1857808
Альтернатива ASP уже есть?
Аноним 16/11/20 Пнд 19:31:02 1857856556
>>1857799
монополия по либам и решениям
Аноним 16/11/20 Пнд 19:46:18 1857869557
>>1857855
начнём с того что asp это платформа, там куча разных либ, от разных серверов до тонн прослоек. И собственно зачем что то другое если вот оно уже есть, опенсорсное, рабочее, во что вбивают бабки. Можешь форкнуть и пилить
Аноним 16/11/20 Пнд 19:46:52 1857870558
>>1857855
всегда была. ServiceStack например и оно не одно.
и никто не запрещает написать свое

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

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

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

ну правда с DI немного приврал. это они сделали немного жопу что вкинули не контракт, а реализацию DI.
Аноним 16/11/20 Пнд 19:52:37 1857880559
>>1857855
Никто не запрещает взять и написать, но мало кому нужно.
Вообще от самих майков есть несколько опций под 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

Наверняка ещё есть полно всякого невзлетевшего софта и возможно даже широкоиспользуемого, но оно просто не на слуху.
Аноним 16/11/20 Пнд 20:02:54 1857893560
Как мы боремся с вендор локом в голове

>>1857869
Ненужно
>>1857870
Пиши свое
>>1857880
Напиши свое, но ненужно


Аноним 16/11/20 Пнд 20:14:57 1857903561
>>1857893
сори чел но ты шиз, реплаиш те посты в которых тебе же и пишут альтернативы. иди луше фронт попиши может отпустит, ну или нейроночку на питоне потренеруй на распознавание говна, только свою фотку для проверки не скармливай а то боюсь результат тебя расстроит
Аноним 16/11/20 Пнд 20:16:36 1857904562
>>1857893
>Пиши свое
>НИХАЧУНИЧЕГОСЛЫШАТЬ
>(заткнув уши) ла-ла-ла-ла
ясно все с тобой.

монопольную либу не подскажешь? ну которая или только у майков или никак ничем не заменяется
Аноним 16/11/20 Пнд 20:18:02 1857905563
15761630191970.jpg 20Кб, 301x395
301x395
>>1846539 (OP)
Подскажите ньюфаговский вопрос - как в WPF'e можно прибиндиться к свойству кастомного класса?
Суть: есть один класс, назовем его YobaTimer, в котором есть условный Tick(), который обновляет свойство-строку ElapsedTime. Как его прибиндить к TextBlock на View.xaml ? OnPropertyChanged поставил, вся хуйня - вначале пытался прибиндить к свойству в View.xaml.cs , значение инитится на вьюхе - но понятное дело не обновляется т.к. Tick() в классе таймера, пытался прибиндить дата контекст в xaml'e по разному и пытался в конструкторе View.xaml.cs написать DataContext = YobaTimer, но значения даже не инитится на вью. Причем в выводе отладки иногда выдает ошибку биндинга, а иногда нет(?!), хотя я месседжбоксами чекал и строка точно обновляется (да, свойство).
На MVVM мне похуй, мне лишь бы работало, хотя я бы рад был послушать как это правильнее сделать.
Аноним 16/11/20 Пнд 21:10:05 1857945564
>>1857855
Т. е. существования ASP как-то мешает разработке других ферймворков? Где вендор лок то, долбоебина?
Аноним 16/11/20 Пнд 23:38:24 1858034565
>>1857945
Кококо у нас нет вендер лока, хочешь пиши на ASP, хочешь не пиши вообще, полная свобода.как же я проигрываю с вас аутистов
Аноним 17/11/20 Втр 00:13:23 1858052566
Аноним 17/11/20 Втр 03:34:59 1858094567
>>1858034
В JS вообще никаких фреймворков стандартных нет. Значит у них вендор лок на отсутствии фреймворков? Это такой троллинг тупостью или у тебя просто умственная отсталость?
Аноним 17/11/20 Втр 13:42:28 1858373568
В трёхуровневой архитектуре (UI, BLL, DAL), модели/entities должны быть в DAL или в BLL?
Аноним 17/11/20 Втр 14:17:01 1858388569
>>1857905
>DataContext = YobaTimer
WPF видит инстансы, а не типы
Аноним 17/11/20 Втр 14:55:00 1858419570
Имеется asp.net core приложение и база mysql. При добавлении данных, содержащих кириллические символы, из приложения в базу (используя орм), в базе они заменяются знаком вопроса. Если в базу делать непосредственно INSERT с кириллицей, то все символы нормально сохраняет, но есил из приложения, то знаки вопроса. Почему это происходит и как это можно исправить?
Аноним 17/11/20 Втр 15:47:25 1858462571
>>1858373
Либо отдельно от всех в Models, либо в DAL. В BLL должны быть DTO которые будут содержать только те данные которые должен получать/отправлять пользователь, если работать напрямую с моделями, то это чревато такими уязвимостями как оверпостинг.
Аноним 17/11/20 Втр 16:02:53 1858468572
>>1858419
В строку подключения добавь charset=utf8
Аноним 17/11/20 Втр 18:12:52 1858561573
Че там за хуйню понадабовляли в шарп 9 и нет 5?
Аноним 17/11/20 Втр 18:14:04 1858562574
image.png 21Кб, 998x110
998x110
Пора бы шапку исправить.
Аноним 17/11/20 Втр 20:18:18 1858716575
>>1858562
Я так понял перекат может кто угодно сделать, а значит и шапку может кто угодно запилить. Копия с pastebin в самой шапке, можно брать и править.
Аноним 17/11/20 Втр 20:32:27 1858732576
>>1858716
Всё правильно, бери и делай перекат.
Аноним 17/11/20 Втр 20:33:52 1858734577
>>1858716
как показала жизнь кто угодно не может
для этого нужно обладать особым навыком "не влом это сделать"
Аноним 17/11/20 Втр 21:19:13 1858813578
>>1858561
На оф сайте есть ченджлог, прям как в твоей дотке с очередным патчем, можешь прочитать если интересно.
Аноним 17/11/20 Втр 21:19:41 1858814579
>>1858562
Разрешаю. Исправляй.
Аноним 17/11/20 Втр 22:37:14 1858975580
>>1858734
Я до последнего переката думал для него нужны какие-то особые права.
Аноним 17/11/20 Втр 23:18:23 1859034581
>>1858094
ну технически он прав. с асп.нет примерно та же история что и с говно-гитом. Вроде бы альтернативы и есть (и даже лучше чем это говно), но попробуй еще устройся на работу, где используется не гит.
и если не любишь гит и асп.нет (хотя его не любить не за что) - то проблема однака
Аноним 17/11/20 Втр 23:23:54 1859041582
>>1859034
Блять, так при чём здесь разработчик языка и .Net? Почему вы такие тупые? Почему вы думаете, что разработчика языка и фреймворка должны твои заебы волновать?
При этом это фреймворк не от смузихлебов, которые забьют на его поддержку по воле левой пятки, а от крутой компании, которая тратит свои ресурсы на развитие и поддержку. Наоборот радоваться должны, но долбоебы почему-то горят. При этом горят не из-за отсутствия альтернатив от смузихлебов, примеры которых дали выше, а от того что, внимание, на работу не устроиться зная говно которым смузихлеб накормил!
Аноним 17/11/20 Втр 23:29:21 1859050583
>>1859041
>так при чём здесь разработчик языка и .Net?
>Почему вы думаете, что разработчика языка и фреймворка
А не причем.
Как я вижу он просто описал текущее положение дел.
А про "клятый мелкософт ууу" - оппоненты сами придумали
Аноним 18/11/20 Срд 07:32:55 1859202584
>>1858388
Я пытался и объект ему скормить.
Аноним 18/11/20 Срд 08:25:45 1859209585
>>1858813
Знаю, но это надо сидеть и думать. А на дваче можно задать вопрос и не думая получить ответ
Аноним 18/11/20 Срд 08:32:11 1859210586
>>1859209
> и не думая
У нас таких не любят. Троллят, деанонят и срут под двери.
Аноним 18/11/20 Срд 08:47:37 1859217587
>>1859209
Ну так и задавай вопрос нормально, а так говна тебе за шиворот.
Аноним 18/11/20 Срд 08:50:00 1859218588
Аноним 18/11/20 Срд 08:50:35 1859219589
>>1859210
Ну, это совсем долбоёбов деанонят
Аноним 18/11/20 Срд 08:55:31 1859221590
>>1859218
Нет уж, ты упустил эту возможность, теперь только чейнджлог.
Аноним 18/11/20 Срд 08:56:34 1859223591
>>1859221
>чейнджлог
Ну пожалуйста(
Аноним 18/11/20 Срд 09:09:48 1859225592
>>1859223
Извини, братишка, мне впадлу.
Аноним 18/11/20 Срд 10:39:19 1859256593
>>1859202
биндиг берет за отправную точку объект, что у него в датаконтекст, если не указан source - иначе берет за основу его.

В крайнем случае сделай в code-behind установку свойства вьюхи явно раз уж биндинг никак
Аноним 18/11/20 Срд 11:42:25 1859282594
Это правда, что со знанием чистых С#, SQL, JS ты никому нахрен не нужен, а Васян со знанием ORM и какого-нибудь CMS довольно востребован?
Знакомый, зарабатывающий на фрилансе, посоветовал мне выбросить нахрен все учебники и купить курс с Udemy, дескать ему хватило, чтобы начать работать.
Поискал там курсы на русском языке по .Net Core, но практически ниухя нет.
Аноним 18/11/20 Срд 12:21:22 1859289595
>>1859282
>Поискал там курсы на русском языке
Без английского ты точно никому нахрен не нужен.
Аноним 18/11/20 Срд 12:24:37 1859293596
>>1859282
Да, нужны не столько языки, сколько технологии с ними связанные. Но и выбрасывать учебники не стоит - просто потрать еще несколько недель на EF, ASP.NET, и фронт какой (jquery + ангуляр/реакт/вью).
>>1859289
Этому поддакиваю.
Аноним 18/11/20 Срд 12:26:29 1859295597
>>1859293
Еще добавлю: в работе фреймоворки куда важнее знать, но с большой долей вероятности на собесе на начальную позицию тебя будут про GC и джойны всякие спрашивать.
Аноним 18/11/20 Срд 16:15:34 1859389598
Аноны такой вопрос. Сегодня у меня был собес, вроде всё прошло нормально. Но теперь я запарился из-за одного вопроса, который был на собеседовании. Вроде ответил правильно но есть СОМНЕНИЯ. Такой вопрос, как будут размещаться данные объекта значимого типа, если он является полем ссылочного? Вроде как они должны размещаться в хипе, внутри памяти, выделенной под ссылочный тип. Что-то особо не могу найти разбора этого варианта ни у Рихтера, ни ещё где-нибудь в сети. Потыкал с sharplab.io, попалил в IL и ASM. Вроде я прав. Но всё ещё СОМНЕВАЮСЬ.
Аноним 18/11/20 Срд 16:35:53 1859412599
>>1859218
Рекорды, init свойства, улучшения паттерн матчинга, новый синтаксис вызова конструктора для самых одарённых и ковариантность возвращаемого типа для реализаций интерфейса.
Аноним 18/11/20 Срд 16:47:07 1859421600
>>1859389
Всё что находится внутри ссылочного типа хранится в куче, если это значимый тип, то это значение этого типа, если это ссылочный тип, то это ссылка на объект данного типа.
Аноним 18/11/20 Срд 16:51:22 1859424601
>>1859389
>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
Аноним 18/11/20 Срд 17:04:37 1859434602
>>1859412
Сказал бы коротко - " ничего полезного"
Аноним 19/11/20 Чтв 04:51:16 1859885603
Какой IoC контейнер сейчас стандарт, Ninject, Autofac, Microsoft.Extensions.DependencyInjection?
Аноним 19/11/20 Чтв 05:00:52 1859886604
>>1859282
Зависит же.

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

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

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

Вообще как только начинают давить на запоминание, а не на мышление - это сразу красный флаг.
Аноним 19/11/20 Чтв 05:06:20 1859887605
>>1859885
Microsoft.Extensions.DependencyInjection
Он самый быстрый по всем недавиним бенчмаркам, которые недавно видел. А это важно, потому что оно по всему проекты практически на каждый вызов используется. И он вшит по умолчанию. Не надо никаких доп библиотек добавлять. Если тебе не хватает его возможностей, то у тебя или очень экзотический проект, или твоя архитектура - говно.
Аноним 19/11/20 Чтв 06:32:15 1859896606
>>1859887
А для WPF проектов тоже его стоит использовать?
Аноним 19/11/20 Чтв 06:58:30 1859901607
>>1859282
>Поискал там курсы на русском языке по .Net Core, но практически ниухя нет.
Зачем? Есть 2 книги очень хорошие.

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

Как найти в сети чтобы скачать надеюсь объяснять не надо. Есть более новые издания, но они на английском. Если понадобится найдешь. Еще у .NET отличная документация, и почти вся на русском.
Аноним 19/11/20 Чтв 08:01:39 1859915608
image.png 119Кб, 987x279
987x279
Аноны, что вы думаете об этом, меня не засмеют в приличном обществе программистов за пикрил?
Аноним 19/11/20 Чтв 08:10:33 1859918609
>>1859915
В приличном обществе не принято смеяться над такими как ты.
Аноним 19/11/20 Чтв 08:11:33 1859919610
>>1859915
Но вообще похоже на троллинг, чем на правду. Не верю, что человек может быть настолько тупым и сначала написать такое, а потом еще и выложить на всеобщее обозрение.
Аноним 19/11/20 Чтв 08:14:11 1859920611
Аноним 19/11/20 Чтв 08:16:29 1859921612
>>1859920
Твоё говнокод можно заменить switch конструкцией в которой будут два конкретных кейса и один по умолчанию (default).
Аноним 19/11/20 Чтв 08:17:23 1859922613
>>1859921
Первый раз слышу о таком, можешь скинуть пример
Аноним 19/11/20 Чтв 08:18:04 1859924614
>>1859922
Ну так ты свой говнокод выложи не в виде скриншота или ты предлагаешь мне переписывать?
Аноним 19/11/20 Чтв 08:20:23 1859925615
>>1859924
Виноват, вот

Внимание открывайте спойлер только на свой страх и риск, слабонервным смотреть не рекомендуется!
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); }
Аноним 19/11/20 Чтв 08:31:35 1859928616
29.jpg 65Кб, 591x502
591x502
Аноним 19/11/20 Чтв 08:33:50 1859929617
>>1859928
а можешь тоже кодом?
Аноним 19/11/20 Чтв 08:36:35 1859931618
>>1859929
Переписывай, тебе на пользу пойдёт.
Аноним 19/11/20 Чтв 08:54:18 1859934619
>>1859929
>а можешь тоже кодом?
бляяядь
Аноним 19/11/20 Чтв 09:00:54 1859935620
>>1859931
Работает, сохранил, большое спасибо!
Аноним 19/11/20 Чтв 12:46:36 1860020621
>>1859885
>Какой IoC контейнер сейчас стандарт
это исключительно фломастеры. нет тут стандарта

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

>>1859896
>А для WPF проектов тоже его стоит использовать
фломастеры же.
Аноним 19/11/20 Чтв 12:55:30 1860026622
>>1859885
от майков самый распространённый. у автофака ахуенная дока и оч полезная для меня фича была с именоваными скоупами, за нинджект не скажу но только упомяну что сайт не понравился и даже доку не смог загрузить когда я судорожно искал ioc
Аноним 19/11/20 Чтв 13:07:29 1860032623
>>1860026
>от майков самый распространённый
только потому что встроен в асп.нет
а значит все либоделы вынуждены брать его за основной при своих разработках либ
и многие на этом и останавливаются ибо на зоопарк контейнеров плодить поддержку - еще тот гемор.

как и с гит - не лучший продукт стал основным потому что гитхаб
Аноним 19/11/20 Чтв 13:23:11 1860040624
>>1858468
Благодарствую, правда, добавил в итоге то, что в бд было - utf8mb4
Аноним 19/11/20 Чтв 15:14:40 1860138625
народ, а кто из вас работает на юнити? именно РАБОТАЕТ, а не пет проекты делает. Как вообще жизнь в геймдеве? Я просто работаю бэкэндером и так заебался жисоны гонять. Расскажите плес как там игроделам живется
Аноним 19/11/20 Чтв 15:58:57 1860186626
>>1860138
>Я просто работаю бэкэндером и так заебался жисоны гонять.
идеальную работу (бэкенд без фронтенда да без гуистроения) хочешь променять на.... мазохист что ле
Аноним 19/11/20 Чтв 16:17:16 1860201627
>>1860186
так я не ебу чем они занимаются
как по мне, так пилить игровые механики - прикольно
насколько они ебутся в UI - хз даже, вот и спрашиваю
Аноним 19/11/20 Чтв 16:31:20 1860214628
>>1860201
ничего прикольного нет. я пробовал. помимо самого шарпа нужно знать еще кучу всякой посторонней херни по юнити (не игровые механики, а именно выразить уи в юнити) и иметь терпение для ебли со всей этой поеботой (там моно был когда я пробовал, но уверен на 99% что так и осталось)

одно дело если нет других вакансий или огромная разница в зряплате.
но если сидишь в глубоком бэкенде (а я так понял ты пишешь чисто апи) - то лучше там и сидеть
Аноним 19/11/20 Чтв 16:49:29 1860233629
>>1860138
Игрострой сам по себе ещё более перенасыщенный рынок, чем энтерпрайз, так что делать игры есть смысл только в свободное от основной работы время.
Аноним 19/11/20 Чтв 16:55:56 1860235630
Аноним 19/11/20 Чтв 17:34:08 1860261631
>>1846539 (OP)
Сап.
У меня многопоточка, поэтому есть некоторые проблемы с завершением программы.
У меня есть таймер, после того как вся работа завершена, я хочу чтобы таймер закончился, он у меня в другом потоке. Как мне после завершения последнего метода остановить программу не закрывая консольку, то есть Environment.Exit(0); не подойдёт?

Аноним 19/11/20 Чтв 17:41:20 1860264632
>>1860261
в современных шарпах треды это зло, юзай таски, но это лирическое отступление. По делу тебе нужно юзать CancellationToken.
создаёшь cancellation token source
передаёшь токен из cts в тред/таску
в конце программы вызываешь cancel у cts
в таске/треде иногда чекаешь что токен не IsCancellationRequested, если запрошена отмена то заканчиваешь работу треда/таски
Аноним 19/11/20 Чтв 17:43:06 1860266633
Аноним 19/11/20 Чтв 17:46:13 1860269634
>>1860264
ну "не иногда чекаешь", а Register своего хендлера, который просто остановит таймер и все.
Аноним 19/11/20 Чтв 17:57:37 1860272635
16057200411840.jpg 9Кб, 225x225
225x225
Подскажите как совладать с энтити и датагридом на винформах.
У меня есть в бд колонка (поле) с шифрованными строками, перед загрузкой в датагрид я дешифрую эту колонку циклом, потом при попытке изменить таблицу и внести сохранения энтитя подхвачивает дешифрованные ячейки (это при том блять что я создаю новый объект ToList()), делает изменения и соответственно пидорасит базу.
Как в датагриде можно пройтись циклом по непосредственно значениям в колонке?
Аноним 19/11/20 Чтв 18:31:55 1860295636
Поясните за .NET, зачем он такой огромный нужен. Насколько я понимаю, аналогичной по размеру платформы больше нет, даже экосистема джавы скромнее, хотя кровавого энтерплайза на ней написано явно больше. При этом в вакансиях шарпистов начиная с мидла почти везде нужно знание CLR, .NET, ASP и прочего. Все это еще довольно сильно помазано виндой и изучением её внутренностей и утилит, и хоть и намечается кроссплатформенность, но чёто мне непонятно как это будет реализовано.

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

не зелёный, честно интересуюсь
Аноним 19/11/20 Чтв 18:39:17 1860299637
>>1860295
> зачем он такой огромный нужен
согласись, всегда приятно когда тебе не нужно самому крафтить пули а достаточно сходить в оружейный гипермаркет за углом

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

> помазано виндой и изучением её внутренностей и утилит
это каких если не секрет? я к примеру из виндового только vs юзаю, всё остальное под wsl'ом
Аноним 19/11/20 Чтв 18:46:46 1860303638
>>1860295
>Как много сил занимает изучение платформы
слишком расплывчато. Ты собираешься драйвера не сетевухи писать или json в браузер гонять, а может что то с пиздатым гуем по всем канонам mvvm?

>как много - непосредственно ЯП?
яп как всегда самая лёгкая часть, если в минимальной комплектации то за вечер т.к. большинство языков похожи, если хочешь прям сдохнуть от сахарного диабета то эт на долго.
Аноним 19/11/20 Чтв 19:01:06 1860314639
>>1860299
> забудь про framework он уже года как 4 умер. Core полностью кроссплатформа. со всеми проектами с какими имел дело что на коре всё хоститься под линью
Это похоже на ответ на мой вопрос, я не знал про отличие Core от Framework

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

Спасибо анон
Аноним 19/11/20 Чтв 19:42:07 1860357640
>>1860032
Ты заебал уже в каждом комменте гит упоминать. Сходи к психологу, чтоли.
Аноним 19/11/20 Чтв 19:47:12 1860361641
>>1860357
сам сходи, раз в каждом моем коменте видишь упоминание (которого там нет)
я упомянул только там, где напрашивалась подходящая аналогия
Аноним 19/11/20 Чтв 20:26:28 1860379642
>>1860295
>Бывает ли хайлоад на шарпе + винде
ну стековерфлоу до перехода на коре небось на винде был
Аноним 19/11/20 Чтв 20:29:27 1860383643
>>1860295
>3) Бывает ли хайлоад на шарпе + винде? А торчащий наружу ASP?

Хайлоад и на петухоне бывает, а он намного медленнее .Net'a
Аноним 19/11/20 Чтв 23:24:36 1860534644
>>1860314
>весь фреймворм надо учить, чтобы 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
Аноним 20/11/20 Птн 01:40:27 1860642645
Какой MVVM фреймворк для WPF сейчас самый популярный?
Аноним 20/11/20 Птн 05:22:13 1860724646
Screenshot1.png 6Кб, 298x238
298x238
Три разных цвета для одного типа. Айм триггерд.
Аноним 20/11/20 Птн 11:09:38 1860845647
Аноним 20/11/20 Птн 11:10:27 1860846648
>>1860724
три разных цвета для трех разных ситуаций.
Аноним 20/11/20 Птн 13:23:48 1860963649
Тупой вопрос.
Для чего нужны разные исключения, если можно везде использовать Exception? Или это увеличивает производительность программы?
Аноним 20/11/20 Птн 13:37:58 1860974650
>>1860963
а как ты их будешь различать?
ну есть у тебя функция ReadDataFromFile и по логике как минимум могут быть 2 типа проблем: невозможно прочитать файл, невалидная инфа в нём. триггернёшь ты 2 исключения Exception() и как ты в коде определишь что пошло не так? просто плюнешь в лицо юзеру "произошла ошибка номер хуй"?
Аноним 20/11/20 Птн 13:41:24 1860980651
изображение.png 6Кб, 770x107
770x107
>>1860974
Но ведь оно вывело, в чем ошибка.
Аноним 20/11/20 Птн 13:48:00 1860985652
>>1860980
допустим файла нет и в этом случае тебе нужно загрузить дефолт настройки, но если файл есть и он не валидный то нужно сообщить юзеру. что будешь делать?

ну или юзер запрашивает с сайта какие то данные, у тебя сервис который имеет метод GetSecureData он может вызвать исключения по типу не авторизован юзер, не имеет прав, ошибка получения данных. в первом случае нужно редиректнуть на логин страницу, во втором вернуть что не имеет прав, в 3м отправить "непредвиденная ошибка" и отправить мыло админу что на бэке пиздец
Аноним 20/11/20 Птн 14:09:07 1861016653
>>1860985
Теперь понял. Спасибо.
Аноним 20/11/20 Птн 15:07:32 1861074654
Разрешите нубский вопрос: вот я, создал хелловорлд, на дотнеткоре 3.1., консольное приложение. Мне на выходе выдаёт ДВА файла. helloworld.exe и helloworld.dll мне бы хотелось, чтобы был один экзешник. Как зделоть? гугл предлагает упаковывать весь дотнет в один файл. Мне это слишком.
Аноним 20/11/20 Птн 15:33:15 1861103655
>>1861074
ты не понял. exe нужен ТОЛЬКО что бы ты мог красиво жмакнуть даблклик по иконке и прога запустилась. dll же нужно запускать через dotnet xxx.dll. то есть ты можешь спокойно удалить exe.
упаковка в один файл нужна когда у тебя ещё другие сборки подключены.
и к примеру при сборке под таргет в виде линухи у тебя будет за место xxx.exe файл xxx который служит для того же. что бы можно было запускать именно файл а не dotnet xxx.dll
Аноним 20/11/20 Птн 15:35:15 1861105656
>>1861074
ещё вспомнил. если велючиш паковку в один файл то туда поместиться ВЕСЬ рантайм. Ты сожешь принести этот экзешник даже туда где нет кора и запустить, при этом при первом запуске по факту будет распаковка того что внутри во временную папку и запуск уже оттуда
Аноним 20/11/20 Птн 15:36:52 1861107657
>>1861105
включишь
поместится
*сможешь
пиздос, аж грустно стало
Аноним 20/11/20 Птн 15:37:43 1861109658
>>1861107
ещё и двач затроллил с *
Аноним 20/11/20 Птн 15:40:50 1861114659
>>1861074
il merge что ли? Когда дохрена длл в папке программы получается
Аноним 20/11/20 Птн 15:45:10 1861115660
>>1861114
>il merge
он же только для фреймворка. под кор есть строенная фича dotnet publish -r <target> -p:PublishSingleFile=true
Аноним 20/11/20 Птн 15:49:32 1861119661
>>1861115
>он же только для фреймворка
с чего вдруг

>dotnet publish -r <target> -p:PublishSingleFile=true
не эквивалент. и вообще другое это
Аноним 20/11/20 Птн 16:10:45 1861138662
Screenshot1.png 3Кб, 321x224
321x224
Screenshot2.png 4Кб, 305x234
305x234
>>1860846
Не должно быть такого.
Аноним 20/11/20 Птн 16:13:45 1861142663
>>1861105
>при этом при первом запуске по факту будет распаковка того что внутри во временную папку и запуск уже оттуда
Так было только в коре, а в .NET 5 уже ничего не распаковывается, сразу запускается экзешник.
Аноним 20/11/20 Птн 16:38:14 1861153664
>>1861138
Я без понятия как должно быть. Я юзаю тему из студии 2017 а не эту цветастую галиматью из 2019
Аноним 20/11/20 Птн 17:07:57 1861178665
>>1861103
Спасибо. Теперь понял.
Аноним 20/11/20 Птн 17:11:47 1861184666
>>1861178
Понять-то понял. Но у меня задумана консольная утилита:
> helloworld.exe -p 300 -m 500 -f C:\temp\hellofile.txt
И чо мне вместо этого писать
> dotnet helloworld.dll -p 300 -m 500 -f C:\temp\hellofile.txt
???
Аноним 20/11/20 Птн 17:45:40 1861223667
>>1861184
можешь так, можешь как и хотел запаковать в один экзешник, но если серьёзно то я бы просто забил, ну будет там несколько файлов и будет никто от такого не умирал
Аноним 20/11/20 Птн 18:29:13 1861258668
>>1861223
> ну будет там несколько файлов и будет никто от такого не умирал
Перфекционизм не даёт спокойно работать. Буду с этим бороться.
Аноним 20/11/20 Птн 19:23:17 1861333669
>>1861258
да. с перфекционизмом нужно бороться.
будь сильнее его - создай на каждый класс по длл и не мержи их
Аноним 20/11/20 Птн 19:37:11 1861345670
Привет аноны.
Нужно сделать курсовую, суть токова: Фотоальбом "типа микро Инстаграма. Авторизация, Лайки, комментарии, личный кабинет, проект в Visual Studio на c# с базой данных MS SQL Server.
Подскажите какие конкретно материалы изучать, чтобы суметь это сделать в кратчайшие сроки?
И можно ли где-то найти подобный опенсурс проект? В гугле ничего толкового найти не могу.
Аноним 20/11/20 Птн 19:47:22 1861350671
>>1861345
> Подскажите какие конкретно материалы изучать, чтобы суметь это сделать в кратчайшие сроки?
> в кратчайшие сроки
Ну тут очевидно, надо пару вечеров посвятить краткому видеокурсу хача на ютубе.
Затем на мутанит.
Даю ссылку сразу на 3й урок (в первых много воды, потом посмотришь). Ссылка с плейлистом. Открывай в отдельной вкладке и хуячь под печеньки и чаёк.
https://www.youtube.com/watch?v=MZ0og1DNcCg&list=PL05SB3rBbUsraqiEUeS70RKhVAu97nGeb&index=3
Аноним 20/11/20 Птн 20:18:09 1861368672
>>1861345
ASP NET + Enitity Framework для бэка
HTML + CSS + Angular для фронта
Аноним 20/11/20 Птн 20:19:40 1861369673
>>1861345
По простому так: хостить будешь в облаке используя PaaS с лоадбалансингом, дудос-защитой и т.д., бекенд делаешь на .NET 5 микросервисами, публичный апи на Nancy, запросы посылаешь через gRPC, события через какую очередь (rabbitMQ, можно использовать PUB/SUB специфический для облачного провайдера). Запросы в БД делай через Dapper для скорости, к БД лучше добавить еще что-то масштабируемое-нереляционное (elasticsearch например, если не привязываться к провайдеру). Фронт - vue.js со статическим хостингом. Аутентификацию на Identity Server. Вроде изи должно быть, я бы с тимой на 4 человека твой диплом за пол года сделал бы!
По материалам - пройди курсы облачного провайдера, любую топ книгу по микросервисам на дотнет, документации MSDN для освоения языка и ASP.NET достаточно, все остальные технологии тоже по документации.
Аноним 20/11/20 Птн 20:21:31 1861373674
>>1861369
Назвать курсач можешь minigram Enterprise Edition
Аноним 20/11/20 Птн 20:22:21 1861376675
Аноним 20/11/20 Птн 20:24:16 1861377676
>>1861376
Отличный минималистичный фреймворк со стабильной кодовой базой.
Аноним 20/11/20 Птн 20:24:48 1861378677
16057200411840.jpg 9Кб, 225x225
225x225
Кто нибудь знает опенсурс проект-пример где есть нахуяренный ивентами датагрид (желательно винформс?) который умеет добавлять/редактировать/удалять информацию например на кликах мышью по ячейках/строках.
Аноним 20/11/20 Птн 20:25:53 1861380678
Аноним 20/11/20 Птн 20:27:54 1861382679
Аноним 20/11/20 Птн 20:28:42 1861384680
>>1861382
>опенсурс проект-пример
Ебусь в глаза, простите.
Аноним 20/11/20 Птн 20:30:50 1861387681
>>1861345
дополню этого >>1861368, если на безопасность поебать и в приоритете скорость разработки то юзай odata для прослойки между ef и api
Аноним 20/11/20 Птн 20:31:53 1861390682
>>1861378
бля, не думал перестать ебать труп?
Аноним 20/11/20 Птн 20:33:02 1861392683
>>1861382
>>1861384
Да у меня есть по сути готовый проект и код, но он весь на кнопках/текстбоксах. Но я боюсь что нужно будет предусмотреть овердохуя нюансов чтобы не обосраться.
Аноним 20/11/20 Птн 20:34:44 1861396684
>>1861390
Мне нужно скрафтить по фасту на колене админскую часть для бд на шинду.
Объясни мне долбаебу нахуя мне нужен впф?
Аноним 20/11/20 Птн 20:36:29 1861398685
>>1861396
В нем даже это проще
Аноним 20/11/20 Птн 20:45:09 1861405686
>>1861387
>odata
И чем она разработку ускорит? Это только новый протокол учить и привыкать к нему.
Аноним 20/11/20 Птн 20:46:23 1861407687
>>1861396
Делай на Electron + Angular. Интерфейс получится красивым и кроссплатформенным.
Аноним 20/11/20 Птн 20:47:25 1861408688
Аноним 20/11/20 Птн 20:49:17 1861410689
>>1861408
ASP Net проект уже давно можно делать десктопным. Очень удобная штука, рекомендую. Шаблоны для ангуляра там встроенные (хоть и хуевые). Т. е. электрон нахуй не нужен, я забыл что .Net 5 кроссплатформенный.
Аноним 20/11/20 Птн 20:51:15 1861411690
Аноним 20/11/20 Птн 21:28:18 1861444691
image.png 3Кб, 203x95
203x95
>>1861411
Как сделать из обычного списка вот это?
Аноним 20/11/20 Птн 21:30:40 1861445692
Аноним 20/11/20 Птн 21:50:30 1861454693
>>1861405
контроллеры настолько тонкие что ебанёшся. если что то понадобилось на фронте и для этой сущности уже есть Get метод то можно бэк вообще не трогать, и вообще на бэке достаточно в начале просто нагенерить однотипных crud контроллеров по шаблону и не меняя их уже пилить фронт
Аноним 20/11/20 Птн 21:52:17 1861455694
>>1861445
это для компа? не для сайта?
Аноним 20/11/20 Птн 21:53:20 1861456695
>>1861444
из обычного списка ГДЕ? что за технология?
Аноним 20/11/20 Птн 21:55:00 1861457696
>>1861455
Для чего угодно. современные UI-фреймворки позволяют тебе описать абстрактную платформонезависимую view-модель, которая выводится совершенно одинаково хоть в шиндовс, хоть в андроид с иосом, хоть в линуксовый фреймбуфер.
Аноним 21/11/20 Суб 07:49:10 1861652697
Blazor client-side может использоваться как замена JS. А зачем нужен Blazor server-side? Какие задачи он выполняет, чем он лучше MVC/Razor pages?
Аноним 21/11/20 Суб 11:08:58 1861760698
Объясните дауну как работает DbContextPool.
Я просто только вчера о нем узнал, т.к. сеньеры не использовали в своих частях программы и я думал что вот эти вот пляски с передачей контекстов - то как нужно делать. Но чет прочитал и вроде правильнее было бы из пула просто брать. С другой стороны, если класс живет долго, то контекстов-то не хватить может, и тогда получается что либо контекст несколько классов используют, либо какие-то классы не получат свой и будут ждать, пока попользуется другой, а может быть тут пул - создаст новые контесты, когда кончатся эти. С этим вот и вопросы.
На данный момент я просто сделал класс: ContextFactory<TContext>, который создает новый контекст, но я думаю что это не самое оптимальное решение
Аноним 21/11/20 Суб 11:14:13 1861767699
Аноним 21/11/20 Суб 11:29:08 1861786700
>>1861767
Я не городил бы, если бы в коде сеньера, который он сказал мне использовать как пример, не было так вот:

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, а правильнее было бы из пула доставать.
}
Аноним 21/11/20 Суб 16:16:29 1861980701
Делаю приложение на формах для виндуса. Не смог разобраться, как переходить между страницами, поэтому сделал это через изменение координат панелей, причем их всех расположил на одной странице и изменил размер. Им там уже тесно, так что, думаю, это какое-то варварство. Как правильно делать переход между страницами в небольших приложениях?
Аноним 21/11/20 Суб 16:16:56 1861982702
>>1861980
Я имею в виду, панели в конструкторе на одной странице
Аноним 21/11/20 Суб 18:24:04 1862123703
У меня есть приложуха на винформс. Хочу портировать её на линукс. Но там винформса нет. Что делать? Как быть?
Аноним 21/11/20 Суб 18:35:20 1862138704
>>1862123
Переписывать всё с использованием одного из фреймворков - Avalonia/Electron/Xamarin
Аноним 21/11/20 Суб 20:26:48 1862208705
>>1861652
трафика меньше, отрисовка быстрее, надеемся также на меньшее потребление ресурсов в браузере, особенно после AOT
Аноним 21/11/20 Суб 20:30:11 1862210706
>>1861786
Жесть. Надо на собеседовании начинать спрашивать на сколько кандидат любит креатифф. И всех крайне креативных лесом.
Это на сколько надо любит выдумывать и ненавидеть читать документацию!
Аноним 21/11/20 Суб 20:31:02 1862211707
>>1862138
Uno ещё или ждать MAUI.
Аноним 21/11/20 Суб 22:29:10 1862292708
Аноним 21/11/20 Суб 22:34:37 1862295709
Кто как код защищает?
скачал бота для одной игры, он на шарпе, кинул в дечдот, за секунды получид исходник. И за этот бот просят ежемесячнцю плату))
Аноним 21/11/20 Суб 22:40:29 1862302710
>>1862295
1) обфускация
2) важный код присылается с сервера при запуске проги
Аноним 21/11/20 Суб 22:43:15 1862304711
>>1862302
1. офбускация снимается тем же дечдот
2. динамическая компиляция? Это же тоже легко сломать
Аноним 21/11/20 Суб 22:44:18 1862306712
>>1862304
плиз хакни DevXUnityUnpacker
Аноним 21/11/20 Суб 22:50:54 1862309713

>>1861982
Кто-нибудь? Пожалуйста?
Аноним 21/11/20 Суб 23:00:23 1862322714
image.png 113Кб, 637x1105
637x1105
>>1862304
>дечдот
спойлер, вот его результат
Аноним 21/11/20 Суб 23:02:05 1862324715
>>1861980
если ты про винФормы то просто забей и иди на wpf
Аноним 21/11/20 Суб 23:14:03 1862331716
>>1862322
И что тут запуталось? Код читаемый. Если детдот не взял, то тулзы от codecracker возьмут. Но это если исходник надо, так то код читаем.
Аноним 21/11/20 Суб 23:19:43 1862334717
>>1862210
А я-то тут при чем? Мне сказали: Смотри, Антоша, у меня есть код, делай как у меня, только под свои задачи. Я вообще С++'ером пришел устраиваться, но для С++'ера задач не было, вот и сказали: Вот тебе сайт майкрософта, вот тебе задачи, вот мой код как у нас принято делать, через неделю посмотрим что ты там сделал. Плотно изучать документацию банально нет времени, сейчас время появилось, я смотрю - вижу что оказывается есть пул соединений, который почему то старшие коллеги не используют ни в одном из проектов. Я и спрашиваю тут, есть ли реальные причины писать как они в коде выше, либо правильнее было бы таки использовать уже в моем коде - пул, а не делать такие вот странные решения.
Аноним 22/11/20 Вск 00:01:46 1862347718
>>1862302
А вот говорят, есть некая "нативизация" которая компилирует байткод дотнета в нативный код целевой платформы. Якобы игры на юнити так релизятся - собираешь релиз, а он в нативный код собирается.
Есть ли аналогичное в обычном кодинге, не в геймдеве?
Аноним 22/11/20 Вск 00:05:48 1862349719
>>1861980
> Как правильно делать переход между страницами в небольших приложениях?
Делаешь элемент-хостер для страниц, который должен быть унаследован от любого подходящего элемента-контейнера, способного держать в себе любой другой элемент, например, панель. Страницы загружаешь в коллекцию. При нажатии кнопок перехода, элемент-хостер убирает из потомков предыдущую страницу и достаёт из коллекции следующую.
Аноним 22/11/20 Вск 00:07:27 1862350720
>>1862347
coreRT для кора, il2cpp в unity
Аноним 22/11/20 Вск 00:13:02 1862352721
>>1862350
Только coreRT ещё сырое, в альфе
Аноним 22/11/20 Вск 00:14:56 1862354722
>>1862352
если не спизжу то в прошлом году уже юзал и всё билдилось без проблем. но то что сам компилер билдится дохуя времени и нет никаких готовых бинарей печально
Аноним 22/11/20 Вск 00:16:48 1862355723
>>1862350
Вангую, что нативизируются только стандартные библиотеки. При попытке юзать кучу пакетов из нугета эти тулзы покажут известный жест.
Аноним 22/11/20 Вск 00:22:57 1862361724
>>1862355
нет, всё в натив из-за этого есть некоторые ограничения, к примеру нельзя динамически грузить dll'ки
Аноним 22/11/20 Вск 00:31:06 1862366725
>>1862295
1. Обфускация.
2. Самые важные функции вызываются через сервер по udp в зашифрованном и сжатом виде для минимизации нагрузки и времени отклика.
Аноним 22/11/20 Вск 01:11:21 1862401726
>>1862361
Ну дак! Я ж не могу точно знать, не грузят ли дллки те или иные пакеты из нугета. То-то и оно.
Аноним 22/11/20 Вск 01:19:16 1862408727
>>1862401
на этапе компиляции всё уже известно как бы. только если они динамически подтягивают сборки откуда то что встречается крайне редко. Собственно я и не вижу способа собирать НАТИВНОЕ приложение и при этом иметь возможность исполнять прозрачно НЕ нативный код. Сказать честно я вообще не вижу смысла билдить шарпы в натив при условии что jit иногда бывает даже быстрее
Аноним 22/11/20 Вск 01:36:52 1862426728
>>1862408
> не вижу смысла билдить шарпы в натив
>>1862295
> Кто как код защищает?
> скачал бота для одной игры, он на шарпе, кинул в дечдот, за секунды получид исходник
Вроде как в этом был изначальный смысл и вопрос.

Я себе мышку наебнул только что. Промыл спиртом и теперь колёсико не работает. Неудобно пиздец. Держу в курсе. Ушёл спать.
Аноним 22/11/20 Вск 02:55:44 1862458729
.png 28Кб, 805x676
805x676
.png 27Кб, 815x351
815x351
Хм. Вот смотрите. Есть два кода(прикриплейд).
Какой из них лучше? Почему?

Вопрос не о том что делает код, а скорее о том, как лучше поступать в таких вот случаях, когда мы имеем некий цикл который выпонляется почти одинаково, но какая-то часть того как итерируется цикл - может отличаться. Можете предложить свой вариант для подобных случаев.
Аноним 22/11/20 Вск 03:07:15 1862460730
>>1862458
Ясен хуй что второй вариант лучше, так как короче и намного читабельнее. Или я не понял вопрос?
Аноним 22/11/20 Вск 03:10:11 1862461731
>>1862458
а теперь просто задай значениям в enum TimeUnit числа в секундах
public enum TimeUnit
{
Second = 1,
Minute = Second 60,
Hour = Minute
60,
Day = Hour * 24
}
и делай AddSeconds((int)timeUnit)
Аноним 22/11/20 Вск 03:11:06 1862462732
>>1862461
ебучий двач сожрал звёздочки
Аноним 22/11/20 Вск 03:20:29 1862465733
>>1862458
Ну ответ "какой лучше" очевиден.
Название для метода подобрано плохо. И очевидно, что код который будет вызывать эту функцию будет проводить проверку if (FindMissingTime.Count() > 0). Поэтому я бы назвал IsCorrectDateTimeSequence/IsCorrectTimeSequence и возвращал бы булево значение и перечисление интервалов которых не хватает для того чтобы перечисление отвечало нужному условию. Соответственно переменные были бы sequence, interval, start, end

Алсо, этого >>1862461 двачую.
Аноним 22/11/20 Вск 03:25:21 1862467734
>>1862460
Ну блин. А что делать если в команде люди, которые не знают что вот так вот можно?
>>1862461
>>1862465
Я же говорю, что не в этом суть. Хотя мне вот интересно пронумеровав значения в enum мы будем делать в случае если добавятся месяцы, годы. Ну, вот у нас есть теперь Month, он может быть 30 или 31 день или вообще 28, а в високосный - 29. Как ты тут извернешься-то?

А суть вопроса - как избежать копипастного кода, при этом не используя конструкций, которые могут быть непонятны людям из других языков. Вот допустим посадили на проект человека, который всю жизнь на си писал, он привык вообще малым числом штук обходиться и при этом он ну не хочет забивать себе голову шарпом, потому что на шарп его посадили исключительно из необходимости, доделает свою часть и вернется на си, ему второй вариант непонятен, он просит так не делать, конфликтов на пустом месте не хочется, писать вот такой код как на первом - тоже.
Аноним 22/11/20 Вск 03:40:03 1862471735
>>1862467
>А суть вопроса - как избежать копипастного кода, при этом не используя конструкций, которые могут быть непонятны людям из других языков

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

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

Так какая разница? Месяц как интервал это 30 дней, переводишь 30 дней в секунды и прибавляешь их при помощи AddSeconds, этот метод уже учтет сколько месяцев в феврале.
Аноним 22/11/20 Вск 04:05:41 1862476736
>>1862467
> ему второй вариант непонятен, он просит так не делать, конфликтов на пустом месте не хочется, писать вот такой код как на первом - тоже.
А что там непонятного? Интуитивно понятно же, что такой код делает. Разве что вместо Func<> я бы написал DateTime addTime(DateTime unit) ...
Локальные функции даже в си есть вроде только в гцц, но есть, а что делает switch expression даже дебил поймет.
Аноним 22/11/20 Вск 08:32:34 1862514737
>>1862467
Просто вместо делегата и switch expression используй функцию (можно даже локальную) и обычный switch statement в ней, в чём проблема.
Аноним 22/11/20 Вск 09:01:48 1862520738
>>1862514
Получится говно не лучше if else, лучше тогда if else портянку сложить в один цикл + switch case
Аноним 22/11/20 Вск 10:55:41 1862555739
Стаю на распутье между выбором во что погрузиться (C# или
java). Помогите определиться и понять почему C# будет плохим выбором?
Аноним 22/11/20 Вск 12:26:51 1862618740
>>1862458
да блин какие еще енумы или фанки

определяете в своем switch (старого или нового вида) TimeSpan ака "шаг приращения"
и потом только dt.Add(step)
Аноним 22/11/20 Вск 17:06:52 1862816741
image.png 21Кб, 641x387
641x387
Насколько это говнокод?
laba2.cs
Аноним 22/11/20 Вск 17:14:06 1862819742
Аноним 22/11/20 Вск 18:08:51 1862884743
>>1862816
последний catch говнокодище. зачем он вообще?
Аноним 22/11/20 Вск 18:12:37 1862887744
>>1862884
чтобы не упало, очевидно же.
Аноним 22/11/20 Вск 18:16:31 1862890745
>>1862887
так лучше пусть упадет
во первых он никогда не сработает
во вторых когда подобное срабатывет то ты получаешь "не сработало но нискажу пачиму"
Аноним 22/11/20 Вск 18:20:17 1862898746
>>1862890
сработает, это во первых.
во вторых - можно потом вывести мессендж, что что-то пошло не так. Правда лучше было это сразу сделать, и отловить - что за эксепшен.
Аноним 22/11/20 Вск 18:25:02 1862904747
>>1862898
ну если этот Matrix.Parse написан подобным образом то может и сработает
а во вторых ты можешь вывести мессадж что что то пошло не так. но никто никогда не узнает нигде (даже в логах) даже намека на то что не так

вот так же и фильтр сообщение на этом дваче написан
"не прошло и ебись угадывать что ему не так"
Аноним 22/11/20 Вск 18:29:08 1862911748
>>1862904
нет, сработает, если передан list не инициализированный.
Аноним 22/11/20 Вск 18:49:39 1862951749
>>1862911
ох уж эти староверы. по хорошему list никогда не должен быть быть нулл ибо не помечен как нулабле

но принимается.
но гасить такую ошибку вообще глупо
Аноним 22/11/20 Вск 19:01:27 1862968750
Каждый раз, когда я пытаюсь начать учить шарп, я попадаю на время, когда выходит очередная новая версия чего-то(языка, фреймворка, библиотеки, ещё чего-то) и мне становится некомфортно, что я буду учить язык по устаревшим дедовским материалам. Хочу учить новейшую версию, а по документации обычно ничего не понятно(с нулевым уровнем).
Учить хочу не для вката в профекссию, а просто для саморазвития.
Как избавиться от этого и наконец-то начать?
Аноним 22/11/20 Вск 19:02:33 1862969751
>>1862968
Сходи к психологу/психиатру, таблеток попей.
Аноним 22/11/20 Вск 19:07:21 1862977752
>>1862968
Подожди пока шарп загнется и учи самую современную версию сколько душе угодно. Пока в алгол можешь вкатываться.
Аноним 22/11/20 Вск 19:15:10 1862989753
>>1862977
но ведь тогда он будет уже очень дряхлым стариком побивший мировой рекод по долгожительству
память то будет уже слаба
Аноним 22/11/20 Вск 19:18:53 1862993754
>>1862989
Без надежды - что без одежды: и в теплую погоду замерзнешь.
Аноним 22/11/20 Вск 19:32:44 1862998755
image.png 40Кб, 809x562
809x562
>>1862898
>>1862890
Достойно мужики.

А если у меня вот такая структура программы, и я уберу крайний catch в функции, и буду ловить этот эксепшен уже здесь? Такое на практике нормально вообще, или лучше в каждой функции отдельно общий ловить и писать сообщение?
Аноним 22/11/20 Вск 19:53:23 1863025756
>>1862998
она у тебя выдаст ошибку если ввести пробел и нажеть ентер.

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

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

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

В итоге ты отловишь все нежданчики и пропишешь на них действия. И это лучше чем catch который глушит ошибку и делает ситуацию неопределенной и ее не починить (нет контекста проблемы)
ctach c return false тоже иногда полезен, но только иногда, когда нужно TryXXX сделать и реально не волнует "почему не вышло"
Аноним 22/11/20 Вск 19:58:54 1863035757
>>1862998
ну а по хорошему то на скрине неправильно
тебе нужно завести исключение типа InvalidCommandArgs и разбирая все эти command[0/1] и int parse его и кидать
потом его ловить и выводить пользователю
а ниже уже глобальный catch который логирует (пусть хоть прямо в консоль - для консольной утилиты это норм) и говорит что "полный пэ"
Аноним 22/11/20 Вск 20:03:37 1863044758
.png 79Кб, 536x830
536x830
.png 41Кб, 541x328
541x328
.png 24Кб, 904x282
904x282
>>1862816
Я бы как-то так сделал. Вот. Да. Хуй знает, говнокод или не.
Аноним 22/11/20 Вск 20:11:26 1863054759
>>1863044
ну семантический говнокод немного есть
например AsEnumerable и AsReadonly
а насчет ошибок тут ведь "зависит"

это ж консольщина и этот Console.Writeline с 3 пика если не должен прервать операцию, а по факту лог операции, то очень даже валиден
Аноним 22/11/20 Вск 20:22:40 1863060760
>>1862998
С такой вот структурой, я бы, на твоем месте, валидацию вынес до того как добавлять в список матриц. Зачем вообще методу что добавляет матрицу то там знать о том что может возникнуть исключение? Ты просто проводишь валидацию строки, затем, если строка валидна - создаешь матрицу без всяких плясок с исключениями и добавляешь эту матрицу в свой список, если невалидна - выводишь сообщение: "Невалидная строка. Идите нахуй".
Ну и команды бы вынес из простых строчек в отдельные классы, ну да ладно, это наверное для лабы не нужно.
Аноним 22/11/20 Вск 20:55:00 1863087761
>>1862334
DbContext как правило менеджится рантаймом и передаётся через DI (Dependency Injection). Обычно его делают scoped, т.е. он живёт с момента создания и до самой отправки response клиенту. Но там по ситуации. Dispose тоже вручную делать не рекоммендуется (если конечно всё остальное тоже руками не делается), потому что есть шанс что ты его задиспозишь до того, как система решит что делать с объектом и может накидать ошибок.
Немного сложнее, когда у тебя один контекст к разным БД подцепляется, но там надо по ситуации смотреть. Судя по твоему коду этот класс коннектится всегда к одной и той же БД (если это и правда синглтон), поэтому городить и поддерживать свой собственный велосипед = грабить ресурсы у твоего работодателя. Да и иногда твои собственные, когда оно внезапно начнёт заваливаться и тебе придётся сидеть до поздна в офисе и разгребать этот трэш.
Аноним 22/11/20 Вск 20:58:10 1863090762
>>1862347
Много чего уже и так близко к этому работает. К .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.
Аноним 22/11/20 Вск 21:35:43 1863138763
Аноним 22/11/20 Вск 21:37:30 1863140764
.png 40Кб, 645x863
645x863
Хм. Вот теперь-то точно говнокод. ХЗ зачем я это сделал.
Аноним 22/11/20 Вск 22:30:29 1863195765
>>1863140
Делай интерактивное консольное меню:

while (true) {
switch (Console.ReadKey(true).Value) {
...
}
}
При нажатии стрелок вниз/вверх перерисовываешь консоль смещаясь вниз/вверх и запоминаешь текущее положение, при нажатии Enter выполняешь операцию в зависимости от текущего положения.
Аноним 22/11/20 Вск 22:30:54 1863196766
>>1863140
да какая разница, говнокод или нет главное - что работает. Заказчик не смотрит на говнокод, он в нем вообще ничего не понимает, анон)
Аноним 23/11/20 Пнд 00:40:52 1863317767
Коллеги подбросьте идейку для самостоятельного домашнего проекта на шарпе. Думаю что нить под ASP - заодно подтяну.
Заебался - на работе только ёбаный SQL последние полгода.
Аноним 23/11/20 Пнд 08:02:41 1863446768
>>1862295
Зачем его защищать? На шарпе пишут то что крутится на сервере. Если это одиночная компьютерная игра или утилита, то опять же смысла защищать никакого.
Аноним 23/11/20 Пнд 08:20:26 1863451769
>>1862968
Учи там где уже все давно устоялось. Яву ту же.
Аноним 23/11/20 Пнд 08:42:22 1863457770
У меня немного ебанутая проблема возникла. Вот есть у меня enum, индексы которому я задаю сам, типа того
enum MyEnum{
Item1 = 15,
Item2 = 31
Item3 = 45
}
Эти индексы в одном месте используются и от этого не уйти сейчас. А ещё у меня есть впфовский combobox, в котором опять-таки лежат названия этих itemов и по индексу элементов comboboxа мне надо опять-таки брать энумовский элемент и использовать, но очевидно, что по индексам 0-2 я уже не возьму нихуя. Как это можно решить?
Аноним 23/11/20 Пнд 10:13:21 1863488771
>>1863457
Решил сам вот так
var valuesAsList = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().ToList();
Аноним 23/11/20 Пнд 12:30:58 1863577772
>>1863317
Напиши веб-морду для сиквел сервера типа SSMS.
Аноним 23/11/20 Пнд 12:39:38 1863584773
>>1863446
>Зачем его защищать?
не надо защищать? То, что продается с абонплатой - не надо защищать?

>На шарпе пишут то что крутится на сервере
а, шарп - это замена php. Понял, принял))
Аноним 23/11/20 Пнд 14:04:44 1863634774
>>1863488
можно без лишнего linq просто приводить к T[], там под капотом создаётся Array
Аноним 23/11/20 Пнд 14:35:55 1863663775
>>1863488
всегда руками формирую список. зато явное управление порядком
Аноним 23/11/20 Пнд 14:48:55 1863675776
>>1862295
Я пишу в коде авторизации комментарии "Жулик, не воруй!" - пока помогает отлично. Правда, я только веб делаю. А для десктопа жду с надеждой AOT компиляцию в .NET 6. Пока дотнет только радует, может и это запилят.
Аноним 23/11/20 Пнд 15:05:33 1863699777
>>1863675
Кстати, аппы под UWP уже вроде давно c AOT собираются. Так что если именно надо AOT под тесктоп, а на всё остальное пофиг, то welcome to уёбищный UWP.
Аноним 23/11/20 Пнд 16:05:31 1863753778
>>1861369
>>1861368
>>1861350
Сердечно извиняюсь за крайнюю тупость... Порыскал я по интернетам и нашел вот такой проект.
Скачал, а что с ним делать-то? Как его скомпилировать-то? Где приложение-то???
https://github.com/KCeh/raupjc-projekt-InstaPound
Аноны, мне честно просто тройку получить.
Аноним 23/11/20 Пнд 16:50:26 1863804779
>>1863753
нууу.....если все так плохо, то тройку ты не заслуживаешь
Аноним 23/11/20 Пнд 16:50:39 1863805780
>>1863753
если тройку то заплати пару банок пива сокамернику и пусть он тебе поднимет эту фигню.
Аноним 23/11/20 Пнд 17:01:34 1863815781
>>1863804
>>1863805
Архив битый скачался, лул. Скомпилировался, нормально.
Теперь надо его урезать до более убогого состояния.
Аноним 23/11/20 Пнд 21:32:15 1864035782
>>1863317
> подбросьте идейку для самостоятельного домашнего проекта на шарпе
Напиши клон инстаграмма этому анону >>1861345
Аноним 23/11/20 Пнд 21:33:01 1864037783
>>1864035
... поспособствуй деградации отечественного образования.
Аноним 23/11/20 Пнд 21:42:41 1864050784
Ку работяги, чем вообще на работе занимаетесь, какие у шарпа варианты, допустим пилите бек на аспе, кто-то даже может формошлепит, какие еще востребованные варианты на рынке труда есть? сам не шарпист, но интересно
Аноним 23/11/20 Пнд 21:50:08 1864058785
>>1864050
Ты забыл про юнити и хамарин и ML
Аноним 23/11/20 Пнд 21:50:11 1864059786
>>1864050
Никаких. Аспнет + ангуляр это единственный шанс вкатиться.
Аноним 24/11/20 Втр 02:59:45 1864229787
Анонче, сразу прошу прощения, может мои вопросы покажутся тупыми и вульгарными. Сижу на линухе, виндоч использую иногда и в основном для игорей. Решил попробовать освоить Си#. Как программировать в виндоче мне понятно. А в линухе возникло не понимание. Есть проект mono, который польностью изображает из себя Си# и даже пользуется поддержкой Макрософт. Если я поставлю его не будет никаких проблем с совместимостью программы при переносе из линуха в виндоч? Есть для линуха .NET Core и Visual Studio Code. Первый это как я понял среда разработки на Си#, а второй просто редактора кода. Правильно я понял, что .Net Core содержит в себе Visual Studio Code? Могу ли я писать кода в простом текстовом редакторе, а компиляцию делать в консоли, если поставлю .Net Core?
Аноним 24/11/20 Втр 05:13:23 1864263788
Вкатываюсь в ваш С# и пришел задавать тупые вопросы.

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

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 перебрать строки?


реально хочу понять, как это всё работает, почему так, а не эдак, но в учебниках так не разжевывают
Аноним 24/11/20 Втр 10:05:33 1864331789
>>1863584
>а, шарп - это замена php. Понял, принял))
С каких пор ассоциации с сервером это пых?
Аноним 24/11/20 Втр 10:34:56 1864339790
>>1864229
>Первый это как я понял среда разработки на Си#, а второй просто редактора кода
первый это рантайм где выполняется код. Ну еще и сдк, который может иметь в себе набор утилит для разработки. Но не редактор
а второй ага редактор
редакторить можно хоть в блокноте, а компилить из консоли.
Аноним 24/11/20 Втр 10:40:26 1864341791
>>1864331
наоборот. пых это ассоциация с сервером
для пыхаря это синонимы
Аноним 24/11/20 Втр 10:46:55 1864345792
>>1864263
>когда я хочу использовать foreach, он выдает мне по одной букве
потому что фореач перебирает Ienumerable, котоырый выдает по 1 элементу перечисления
для массивов это элемент массива, а для стрингов это буква
и в данном примере ты читаешь стринг, а потом его по букве фореачишь

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

фореач для потока не существует и StringReader тоже не умеет. почему не сделали (вот как в питоняшах) - хз
хотя свое решение типа EnumerateAsLines пишется за 10 минут
Аноним 24/11/20 Втр 13:24:56 1864436793
>>1864345
> свое решение типа EnumerateAsLines пишется за 10 минут
Потому и не сделали. Не подтирать же слюни за всеми?
Аноним 24/11/20 Втр 14:09:32 1864470794
>>1864229
Нет кор уже устарел, ставь нет5.
Почитай как устроен шарп. Если грубо и кратко, то неткор/моно/нет5/нетфреймворк это компиляторы+вм+стандартная либа для шарпа, а не иде. Шарпокод без одного из них ты не скомпилишь и даже не запустишь.
Вскод это редактор/иде, кроме него под линукс есть еще платный проприетарный JetBrains Rider.

Алсо, вин формочек и wpf под линукс нет, будь готов к этому.
Аноним 24/11/20 Втр 14:28:28 1864473795
>>1864436
ну так убожества и в жаве хватет. зачем делать вторую жабу
Аноним 24/11/20 Втр 14:40:15 1864476796
>>1864473
Немношк не понял тебя. Убожество - это {наличие вышеописанной фичи} или убожество - это {отсутствие фичи, но возможность (и наличие инструментов для того чтобы) написать её за 10 минут}?
Аноним 24/11/20 Втр 14:42:10 1864479797
>>1864476
убожество это отстуствие
написать за 10 минут можно много чего
и потом у каждого рождается либа типа CommonUtils где ОЧЕВИДНЫЕ велосипедные вещи
Аноним 24/11/20 Втр 14:44:40 1864482798
>>1864341
>для пыхаря это синонимы
Соболезную.
Аноним 24/11/20 Втр 14:54:31 1864489799
Аноним 24/11/20 Втр 14:56:04 1864491800
Аноним 24/11/20 Втр 15:06:07 1864501801
>>1864489
А знаешь ли ты, что в Timer захватывает контекст AsyncLocal и чтобы его не захватывало, то например есть вот такая фигня https://github.com/dotnet/aspnetcore/blob/8c1bf1f1a31f852880c16575bca62507b75112bf/src/Shared/NonCapturingTimer/NonCapturingTimer.cs
которая внезапно (то есть типично) internal, а значит ты не можешь использовать готовое решение, а должен делать велосипед

таймер без побочных эффектов - да не. никому не нужен.
а такого добра навалом.
Аноним 24/11/20 Втр 15:21:20 1864511802
>>1864339
>набор утилит для разработки. Но не редактор
А щё за утилиты?

Аноним 24/11/20 Втр 15:23:57 1864514803
Нужен ваш совет, господа двачеры.
Делаю консольное приложение, мне нужно чтобы при неверном вводе в консоли программа не вылетала, а ввод повторялся заново.
Я нашел 2 варианта решения данной проблемы: https://pastebin.com/J4pAA50M и https://pastebin.com/z7JRbF2k
Но оба варианта пусть и рабочие, но мне кажутся не очень красивыми, читал что использование while(true) считается дурным тоном, а в другом варианте проверка на null как таковая не нужна, но убрать я ее не могу, мне же нужно что-то проверять в цикле...
Может подскажете более элегантный вариант?
Аноним 24/11/20 Втр 15:27:06 1864515804
>>1864514
> while(true) считается дурным тоном
не считается
Аноним 24/11/20 Втр 15:31:09 1864523805
>>1864511
ну всякое разное
шаблоны проектов, рослин тот же, тест утилиты - вся эта хрень на рантайме не нужна и потому она в сдк
Аноним 24/11/20 Втр 15:37:05 1864535806
>>1864515
Стоило погуглить считается или все-таки нет, нашел вариант с for(;;). Спасибо за помощь!
Аноним 24/11/20 Втр 15:39:13 1864540807
>>1864535
а разница с while(true) в чем7
Аноним 24/11/20 Втр 15:42:22 1864547808
>>1864540
Я не знаю, но выглядит более элегантно явно! На самом деле сейчас заинтересовало, как оно работает под капотом, пойду сейчас изучать.
Аноним 24/11/20 Втр 15:43:19 1864549809
>>1864547
выглядит как раз по сишному хаково вместо понятного while(true)
Аноним 24/11/20 Втр 15:44:02 1864550810
>>1864540
И да, отличие в том, что for(;;) написать быстрее!
Аноним 24/11/20 Втр 16:31:11 1864605811
>>1864535
>>1864540
Разница в семантике, for(;;) принято использовать в местах где выполняется определенный алгоритм состоящий из нескольких стадий, т. е. это обычный for только переменные инициализированы и изменяются непосредственно в теле цикла. while (true) во всех остальных случаях.
Тебе как раз while(true) использовать нужно.
Аноним 24/11/20 Втр 16:38:33 1864616812
>>1864605
Спасибо за подробный ответ!
Аноним 24/11/20 Втр 17:20:54 1864654813
>>1864605
вайл ещё удобно использовать, когда итератор в теле цикла.
do
{
//команда1
//команда2
i++;
//команда3
}
while (i < 10);
Буквально вчера с этим сталкивался. Мне надо было вернуть количество итераций по выходу из цикла, а цикл мог брейкнуться в любой момент и мне нужно было, чтобы он брейкался не до, не после, а в середине цикла, причём не в начале и после части операций. Тогда получалось удобно мне, что итератор уже прибавлен, но другие команды остались с предыдущей итерацией. Короче долго обеснять и говнокод не здесь.
Аноним 24/11/20 Втр 19:44:53 1864742814
Господи. Что за ужос. Где все это легаси о котором все говорят, которые можно месяцами ковырять и норм. Я только доделал один новый проект - на мне кидают новый, и опять с нуля, нужно придумывать как все будет, а тут уже новый год же скоро, я уже там, на пьянках, а нужно напрягать мозги, думать что, куда, зачем и чтобы потом удобно было. Вот может быть самому просто писать на отъебись, так сказать - не дают легаси - начни делать его сам?
Аноним 24/11/20 Втр 19:57:44 1864745815
>>1864742
> не дают легаси - начни делать его сам?
Да. Я так делаю.
Аноним 24/11/20 Втр 20:32:59 1864766816
>>1864345
>хотя свое решение типа EnumerateAsLines пишется за 10 минут

Я только вкатываюсь, читаю оф доки на майкрософт и всё по порядке на метанит, сижу прям вдумываюсь, реально хочу понять, как работает нормальный язык. Пока за 10 минут не напишу, даже до ООП еще не дошел, на массивах и циклах уже 2 дня завис, чтоб реально понять, а не копипастить
Аноним 24/11/20 Втр 20:34:10 1864768817
>>1864345
>File.ReadAllLines

Алсо. А этим ,как пользоваться?
Аноним 24/11/20 Втр 20:47:17 1864787818
>>1864768
var arr = File.ReadAllLines("file/path");
foreach(var str in arr) {
//работай со строкой
}

Оно читает все строки из файла и складывает их в массив string[]
Аноним 24/11/20 Втр 20:56:02 1864799819
.png 30Кб, 1095x349
1095x349
В общем, спрошу на всякий случай тут.
Я оч люблю шарп, но меня убивает то что нужно неймспейсы и классы прописывать, хотя всеми возможными конвенциями уже порешали, что в одном файле - один класс/интерфейс/структура, а неймспейсы берем из пути.
Так вот, может быть есть какой-нибудь плагин для студии, чтобы что-то подобное можно было написать, а он бы(плагин) потом скомпилировал и сам расставил классы-неймспейсы используя путь и название файла?
Неужели я действительно такой ебанутый и только мне приходит в голову что это какая-то ебота каждый раз писать неймспейс, да даже если не писать, а при создании он сам пропишется, все равно же выходит что просто так 8 символов сожрали на псустом месте, на кой оно надо - непонятно, читать - менее удобно.
Аноним 24/11/20 Втр 21:10:05 1864811820
>>1864766
>оф доки
>метанит
>хочу реально понять

Проиграл. Чтобы реально понять нужно книги читать, а не краткие выдержки из них. Доки хороши только если ты уже знаешь шарп и нужно освежить что то в памяти.
Аноним 24/11/20 Втр 21:27:03 1864825821
Аноним 24/11/20 Втр 21:35:01 1864831822
>>1864263
>>1864263
Тебе вроде как ответили, но все равно разъясню
foreach(var it in enumerable), это по сути то же самое что
while(enumerator.MoveNext())
{
var it = enumerator.Current();
...
}
IEnumerator- интерфейс для классического паттерна Итератор. Этот паттерн используется, когда нужно пройтись по элементам некоего множества.
Так вот, когда ты читаешь строку - ты получаешь массив символов, т.е. логично, что у тебя при foreach будет посимвольный перебор.

Если тебе нужно построчно - используй File.ReadLines, он, во-первых, вернет тебе не массив, а как раз IEnumerable<string>, что позволит не читать файл целиком сразу, а получать строки при когда тебе надо, это будет удобно, допустим, если ты читаешь какой-нибудь здоровый csv, опять же Linq можно использовать и ты можешь просто найти получить, например, все строки, которые начинаются с заглавной буквы.
Вот. Да.
Аноним 24/11/20 Втр 21:50:31 1864848823
.png 10Кб, 714x211
714x211
>>1864263
Да, если тебе принципиально хочется StreamReader, то можешь прикриплейд намутить
Аноним 24/11/20 Втр 21:55:38 1864855824
.png 11Кб, 682x124
682x124
>>1864263
Господи, забывая про новые штуки шарпа.
В общем, чуть более красивше
Аноним 24/11/20 Втр 23:07:56 1864896825
>>1864855
это старая штука шарпа
в отличие от is not
Аноним 25/11/20 Срд 00:11:31 1864946826
>>1864848
Мне не принципиально. Подскажите, как лучше делать, через вайл и файлопен или как? просто в оф доках именно стримрайдер был
Аноним 25/11/20 Срд 01:09:03 1864983827
Бля, уже 2 дня сижу над циклами и массивами, чтоб это всё заучить. Походу я оч долгий.
Аноним 25/11/20 Срд 01:10:53 1864986828
.png 16Кб, 1037x252
1037x252
.png 15Кб, 703x207
703x207
>>1864946
Как тебе удобно и в зависимости от задач.
System.IO.File - просто статичный класс, который под капотом делает штуки типа первого прикриплейд(это для чтения файла целиком). Считай такой вот шорткат, чтобы ты не заморачивался со стримом, когда тебе просто нужно прочитать что-то. Ну, как и Console, например. Она под капотом тоже много всего делает, но ты же не запариваешься когда тебе нужно просто строку вывести со всем этим, ты просто пишешь Console.Write/WriteLine в зависимости от того что тебе нужно. Или Math, ты же сможешь написать то что на втором прикриплейде сам, я думаю, но ты просто не паришься и пишешь Math.Max(a,b), оно и понятнее и проще и не нужно постоянно тернарник писать, хотя не то чтобы сложно.
Аноним 25/11/20 Срд 01:28:10 1865009829
image.png 1189Кб, 588x1256
588x1256
Аноним 25/11/20 Срд 02:28:54 1865044830
Очень нравится ваш тред конечно. Не ожидал такого федбэка на дваче
Аноним 25/11/20 Срд 02:40:41 1865050831
>>1864742
Зачем ты стараешься, ты что дурак. Тебе за это больше не заплатят.
Аноним 25/11/20 Срд 02:42:17 1865052832
>>1864983
Если есть время и вкатывание не горит тебе бы в языке аля С повариться полгодика, сильно проще потом будет.
Аноним 25/11/20 Срд 02:46:00 1865055833
>>1865052
Дак они вроде разные, у меня синтаксис потом в голове в кашу не посыпится?
Аноним 25/11/20 Срд 02:58:49 1865059834
>>1865055
Не посыпится, синтаксис вообще-то одинаковый и там нет ничего лишнего, все что выучишь там пригодится и в С# и в любых других языках. Причем достаточно просто выучить основы С и потренироваться реализовав на нем базовые алгоритмы и структуры данных, это уже тебе буст даст мощный.
Аноним 25/11/20 Срд 04:41:58 1865094835
Коллеги подскажите плес что нить по микросервисной архитектуре почитать.
Аноним 25/11/20 Срд 12:26:35 1865268836
images.jpeg 6Кб, 259x194
259x194
Охуеть, вот это у меня только что разорвало сраку от WPF'a и его разработчиков
Задача: на пикче при нажатии на определенную область разметить прозрачный прямоугольник кастомных размеров, с красной обводкой типа подсветить конкретный предмет на пикче.
Полез я искать как на контрол Image повешать rectangle. Как оказалось (насколько я понял) что image - хуита без задач и нихуя не поддерживает кроме негетеросексуальной его ориентации разработчиков. В тырнетах сказали что для этого нужен canvas. Дрочился я с канвасом и понял что он тоже говно и нихуя мне не подходит потому что я не могу с него выцепить Actual height/width картинки (мне обязательно надо) которая по задумке должна быть на Imagebrush'e. Были еще советы с каким-то классом для байтоебства (типа битмапа), но я их к сожалению проебал.
Сейчас сижу дрочу Bitmap'и, велком ту 2005 нахуй. Я все же верю что это я даун и есть какой-то нормальный способ изподкоробки нормально подсветить rectangle или что-то подобное.
Аноним 25/11/20 Срд 12:28:57 1865271837
>>1865268
твои личные проблемы
canvas или даже grid и никаких проблем
Аноним 25/11/20 Срд 12:45:33 1865281838
>>1865268
ты же знаешь размер картинки
спроси его у Image если не знаешь
если она автоскейлится то спроси у канваса размер для пересчета
саму картинку как фон канваса и рисуй поверх что хочешь
Аноним 25/11/20 Срд 13:02:29 1865294839
>>1865281
> ты же знаешь размер картинки
Не совсем, пикчи динамически подгружаются с коллекции байт массивов.
> спроси у канваса размер для пересчета
Как? А если ресайз окна?
Алсо, как фон канваса она очень всрато подгружается в отличии от image.
>>1865271
> мне не подходит канвас
> мне похуй что он тебе подходит - канвас

Алсо, я уже сделал все просто битмапом/graphics, правда конечно было бы лучше рисовать поверх картинки.
Аноним 25/11/20 Срд 13:10:55 1865305840
>>1865294
>Как? А если ресайз окна?
что значит как. у всего есть ActualHeight/ActualWidch
подпишись на ресайз и пересчитай все
это если не хочешь юзать Viewbox
Аноним 25/11/20 Срд 13:22:39 1865322841
>>1865305
> сего есть ActualHeight/ActualWidch
Толи ты не понял, толи я идиот. Мне нужны размеры конкретно пикчи, а не контрола очевидно. Ни в свойствах бэкграунда, ни имеджбраше я такого не нашел, в отличие от имеджа где ни на что подписываться не нужно.
Аноним 25/11/20 Срд 13:26:24 1865327842
>>1865322
хз зачем тебе реальные размеры. если ты не скейлишь то они совпадут с размером контрола. А если скейлишь то толку от них ноль.
но если нужно
но вот тебе псевдокод
var bmp = ImageBox.Source as BitmapImage
bmp.PixelHeight
bmp.PixelWidth
Аноним 25/11/20 Срд 13:31:33 1865333843
Могу ли я использовать breakpoint на методах не из моей программы?
К примеру есть
List<string> testList= new List<string>();

и я хочу на каждом
testList.Add("XYZ");
остановиться.
Этих вызовов Add в программе просто куча и я не знаю как мне отловить нужный мне чтобы понять что там в программе происходит.
Аноним 25/11/20 Срд 13:34:18 1865337844
>>1865333
относительно можешь
если студия может подгрузить symbols то сняв just my code сможешь - вроде так
решарпер вроде позволяет без исходников декомпиля на лету
dnSpy тоже может
степень успешности наблюдения значений переменных конечно "как повезет"

начни с dnSpy
Аноним 25/11/20 Срд 13:35:05 1865339845
>>1865333
или ты про перехват доступа к элементу? вроде бы ozcode так может. расширеник к студии
Аноним 25/11/20 Срд 13:50:09 1865354846
>>1865337
>>1865339

Я про то чтобы ставить точки основа на том же testList.Add что посмотреть что за строку он хочет добавить.
А затем я смогу используя эти данные уже написать условие в точке основа и посмотреть нужное мне место в программе.
Проблема в том что там не один такой Add, а их тысячи в программе и я не знаю какой именно работает не правильно.
Аноним 25/11/20 Срд 13:59:51 1865360847
>>1865354
у тебя проблема

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

хз как тут валидно. если бы очень хотелось то может дикий вариант - получить адресс списка в памяти где ты можешь его достать в коде и потом проставить внутри Add бряку где сделать кондишен на этот адрес для this чтобы ловить только нужные.
Аноним 25/11/20 Срд 15:57:43 1865440848
>>1865268
>долбоеб с двузначным IQ использует WPF для работы с графикой, а не написания десктопных приложений
>рряяяяя WPF сраку рвёт!!

Проиграл.
Аноним 25/11/20 Срд 16:20:47 1865455849
>>1865009
захотелось побенчмаркать
Аноним 25/11/20 Срд 16:38:39 1865476850
>>1865440
Работой с графикой?
Аноним 25/11/20 Срд 17:25:38 1865515851
>>1865009
количество вариантов можно увеличить если вспомнить про ReferenceEquals и то что "" интернирован
Аноним 25/11/20 Срд 17:42:53 1865535852
>>1865009
ну и Span<> с MemoryMarshal для космического разума
Аноним 25/11/20 Срд 18:29:50 1865570853
Поясните, вот как совмещать гибкость со стороны БД, гибкость со стороны приложения и удобство для фронта?
Ну, допустим, у меня есть товар в магазине, у него есть характеристики, ну, недолго думая, я беру и делаю в БД 3 сущности:
Product(id, name, typeId),
ProducProperty(id, name)
ProductPropertyValue(id, propertyId, productId, valud, dateTime) -- в таком виде, чтобы можно было статистику собирать, смотреть как покупают и какую-то аналитику делать

Так вот, с таким вот видом - получается что нужно кучу DTO'шек, т.к. фронтендеру хочется чтобы ему сразу приходил нормальный JSON'чик, чтобы он просто вставил, ну, оно и понятно, но это же будет куча DTO'шек под каждый тип товара, да, сейчас проще с рекордами, но блин, все равно же получается довольно много dto'шек.
Может быть я что-то не так делаю? Ну и опять же, с таким вот видом мы храним свойства товара в строках, т.е. чтобы больше-меньше делать, придется хардкодить, а эт нехорошо. Зато база получается нормальная.
Короче, наверное не совсем для шарпотреда, но блин, я вот .net'чик, при этом никакого отдельного человека который бы базой занимался - нет, приходится самому придумывать. Возникают вопросы, хз где и у кого спрашивать. Думаю просто что тут тоже многие по долгу службы и базу сами себе пишут.
Аноним 25/11/20 Срд 20:19:38 1865652854
Пишу одну мульти-таргет либу на netstandard2.0/net5.0, которую изначально делал на net framework только, так вот, последний кусок, который колит глаз - использование шиндоус реестра для настроек юзера. Смотрю на миграцию настроек в settings.json, или типо того. Что можно использовать ещё, или лучше оставить реестр?
Аноним 25/11/20 Срд 20:31:37 1865663855
>>1865652
Ну, я бы вынес в json. С ним же самому тупо удобнее, плюс этот файлик можно хоть на линуксе, хоть на макоси использовать. Короче, я бы вынес.
Аноним 25/11/20 Срд 21:07:38 1865679856
Аноним 25/11/20 Срд 21:12:32 1865683857
>>1865570
Ну какое то идиотское разбиение, зачем мне разбивать свойства на отдельные таблицы? Если нужна статистика, то создаешь сущность ProductStatistic и делаегь её зависимой сущностью Product
Аноним 25/11/20 Срд 21:25:01 1865694858
>>1865683
> зачем мне разбивать свойства на отдельные таблицы
Чтобы у тебя холодильники, телевизоры, пылесосы и т.д. могли храниться в одной таблице же.
У них есть пересекающиеся свойства, есть уникальные, вот, допустим, масса почти у всех наименований есть, а вот диагональ экрана - только у тех товаров, у которых есть экран и он является той характеристикой, что нужно указывать. Конечно, в nosql - это решается на изи, у нас просто есть сущность товара, а свойства - какие хотим хреначим, но в sql, если мы еще и нормальную форму хотим, не хотим дублирования и т.д. - то я не знаю лучшего решения. В даноном случае - мы запонили свойства и не трогаем, потом у нас начали продаваться увеличители членов - мы добавили новое свойство - давление на член - все, мы можем в ту же таблицу что и остальные товары класть увеличители членов и товары все в одной таблице находятся. Как ты предлагаешь решить такую вот ситуацию в рамках SQL?
Аноним 25/11/20 Срд 21:39:01 1865697859
>>1864799
> Неужели я действительно такой ебанутый и только мне приходит в голову
Воще ящитаю, это какая-та идиотия - считать фаел текстовый классом. Должно быть по другому совсем! Файл - это код на шарпе! Классы - это типы. Вот пусть и обьявляются как типы! Неча мне тут!

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

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

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

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

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

Блин, короче, действительно я чет не понимаю, наверное.
В любом случае спасибо что ответил. Я, наверное, хренью маюсь.
Аноним 25/11/20 Срд 22:10:26 1865714862
>>1865707
Твоё предложение больше на троллинг похоже.
>нашу бд в какой-нибудь СУБД где нет json'ов использовать
JSON это обычная строка. Что-то я не представляю себе СУБД в которой нет поддержки строковых типов данных.

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

И потом ты начинаешь путаться в этих джойнах и отношениях. Не говоря уже о том как это раздует твой код.
Аноним 25/11/20 Срд 22:13:29 1865718863
>>1865714
>Что-то я не представляю себе СУБД в которой нет поддержки строковых типов данных.
мимокрок. хранение json строк и поддержка json это разные вещи.
Аноним 25/11/20 Срд 22:17:38 1865722864
>>1865714
> И потом ты начинаешь путаться в этих джойнах и отношениях.
Вот потому я и спрашиваю нормальное решение. Сам понимаю, что пока это только я пишу на начальном этапе - никакой сложности-то нет, все в голове, а пока этих свойств не так много, но если эта хреновина будет жить какое-то время, а я, банально перекинусь на другой проект - хрен пойми как с этим потом работать.
Но как сделать проще - я не знаю. Вот хоть убей. Особенно учитывая, что задача именно так поставлена: Мы не знаем что будет храниться и какие свойства там будут, потому сделай МАКСИМАЛЬНО ГИБКО.
Аноним 25/11/20 Срд 22:23:42 1865727865
>>1865718
И что же это за поддержка json строк такая?

>>1865722
Просто избавься от фобии повторяющихся/неиспользуемых свойств. Всегда нужно выбирать наиболее сбалансированное решение, у тебя сейчас баланс нарушен из-за того что ты хочешь чтобы у всех всё было оригинальное и независимое.
Аноним 25/11/20 Срд 22:31:39 1865732866
>>1865727
>И что же это за поддержка json строк такая?
а это когда ты не просто хранить жсон как строку, а база данных знает, что это жсон и ты можешь использовать это в SQL запросах выполняя поиск по какому то полю в жсон (сравни это с полной выгрузкой всей таблицы на клиента, декодированию жсон и фильтрацией на нем), а то и индексы делать
Аноним 25/11/20 Срд 22:45:25 1865735867
>>1865722
> я и спрашиваю нормальное решение
Там выше тебе анон дал правильное решение. Обрати на него внимание попристальнее:
>>1865698
> Если общих параметров много, например те же вес, габариты и т. д. то для этого можно создать отдельную зависимую сущность - Measurements и хранить всё в ней. Если для отдельной группы есть специальные величины, то создаешь группа продуктов+Measurments.

Аноним 26/11/20 Чтв 10:54:25 1865945868
Как вы программируете в visual studio?
Я тут решил попробовать net 5 и для этого пришлось ставить студию и это же ебаный пиздец, там тормозит абсолютно все, каждое нажатие клавиши с задержкой, подсказки тормозят на секунду, а уж про то чтобы быстро реальный код писать я вообще молчу.
Не тормозит только пустой проект на консольке, я же открыл реальный рабочий проект и хотел попробовать на net 5 перевести его, но это такая боль.
Неужели майки не могут запилить нормальную не лагающую IDE?

Аноним 26/11/20 Чтв 11:26:11 1865969869
>>1865945
А какая IDE не лагает?
Аноним 26/11/20 Чтв 11:29:22 1865975870
>>1865969
Rider, я на нем уже пару лет сижу.
Но он не обновился до net 5, а EAP версия почему-то не качается, выдает старую версию, поэтому пришлось скачать студию.
Аноним 26/11/20 Чтв 11:32:34 1865977871
>>1865945
У тебя студия на говне и досках запущена была. Но да, производительность низкая, потребление памяти высокое, работать в ней не слишком комфортно. А что поделать? В каждом опросе от майков пишу, что производительность низкая, и вас призываю.
Аноним 26/11/20 Чтв 11:43:49 1865997872
>>1865977
ryzen 3700x, 32 gb ram, 970 evo plus.
Если это говно, то я боюсь представить что происходит на мобильных процессорах.
А на память мне насрать, если надо я еще докуплю 32 гб, лишь не лагало. Кстати студия на том проекте сожрала 12 гигов оперативки.
Меня эти лаги дико напрягают, так как тормозят меня, я тут значит 300-400 знаков в минуту со слепой печатью могу, а студия меня тормозит до 50-100.

> А что поделать?
Уходить на альтернативый если возможно. Тот же Rider, правда он не на всех проектах работает, есть некоторые которые тесно завязаны на студии и там даже скомпилировать не выйдет.
Встречал такое с fody, райдер не смог скомпилировать, а студия сожрала, поэтому пришлось писать в райдере, а затем запускать из студии для дебага.
Аноним 26/11/20 Чтв 11:50:53 1866004873
>>1865997
>ryzen 3700x, 32 gb ram, 970 evo plus.
Это странно. Подобные лаги у меня были лишь на 4 ядерном i5 с включенным решарпером - а проект тоже большой. Может баг какой словил?
>Тот же Rider
За него шекели просят - поди убеди ПМа.
Аноним 26/11/20 Чтв 12:17:44 1866017874
HLAfhUxwKp.mp4 296Кб, 838x262, 00:00:20
838x262
>>1866004
>Может баг какой словил?
Это стабильное поведение растущее с временем работы над проектом, уже через час лаги становятся под секунду для подсказок. И это даже еще решарпер не стоит.
Вот первые минут 5-10 еще терпимо работать, тормознуто, но терпимо, а дальше с каждым нажатием все медленнее и медленнее.
Чтобы было понятнее вот видео о том как студия тупит, даже нормально скобочки светить не может, задержка сильная при том каждый раз разная.

>За него шекели просят - поди убеди ПМа.
Для дома можно и бесплатно если очень хочется.
А для организации. Это сильно зависит от организации. Если судить по моим знакомым, то у более чем половина организаций стоит пиратская винда или вообще не активированная. А значит и эту себе взять не проблема.
Аноним 26/11/20 Чтв 12:29:54 1866022875
>>1866017
>Это стабильное поведение растущее с временем работы над проектом
В такой ситуации могу лишь сочувствовать и проклинать майкрософт
>Это сильно зависит от организации
В моей не пройдет такое
Аноним 26/11/20 Чтв 12:53:03 1866031876
В первый раз за 12 лет собираюсь писать оконное приложение под десктоп (до этого писал на VB & Delphi).
Какая сейчас главная технология для этого? WPF? В какую сторону мне смотреть.

Никакого Universal-говна писать не собираюсь. Старое доброе окно со старыми добрыми кнопочками
Аноним 26/11/20 Чтв 13:27:12 1866043877
>>1865997
Ставлю анус хард у тебя говно.
Алсо, студии нужно нормально прогрузить проект пару минут, особенно твой 12 гиговый, можешь посмотреть по диспетчеру и вкладке диск.
Аноним 26/11/20 Чтв 13:32:08 1866049878
>>1866031
>писать оконное приложение под дескто
зависит от того вин десктоп или кросс
если вин то WPF ня
Аноним 26/11/20 Чтв 14:11:38 1866078879
>>1866049
да, под вин. Спасибо
Аноним 26/11/20 Чтв 14:21:24 1866085880
>>1866043
Поддерживаю ставку своим анусом. Оффтоп, но недавно смотрел стрим по какой-то игре, и там стример жаловался, что у него твердотельник тормозит и он его собирается сдать по гарантии, а пока > четырека небудит, смотрити в двака".

>>1865997
Так что твердотельник не гарант скорости. Чекай кристалмарком.
Аноним 26/11/20 Чтв 14:23:32 1866086881
>>1866078
Стой, не уходи! ВПФ - говно! Оно прибито гвоздями к венде. Ты сделаешь проект, а потом юзеры запросят билд под макось или убунту - и придётся тебе весь УИ заново переписывать. Юзай Eto.Forms - вотета НЯ!
Аноним 26/11/20 Чтв 14:27:43 1866089882
Аноним 26/11/20 Чтв 14:31:08 1866091883
>>1866086
> Eto.Forms
А разве не Xamarin, и что там пришло вместо него?
Аноним 26/11/20 Чтв 16:47:47 1866174884
>>1866031
>>1866086
Очевидно Qt, лучше ничего нет и походу не будет для кросс десктопа
Аноним 26/11/20 Чтв 17:13:23 1866200885
>>1865997
Скорее всего в процессоре проблема. Интеловские процы лучше подходят для вычислительной деятельности.
Аноним 26/11/20 Чтв 17:14:37 1866201886
Аноним 26/11/20 Чтв 17:47:34 1866229887
Аноним 26/11/20 Чтв 17:53:22 1866236888
>>1866089
Не, там какой-то бельгиец штоле разраб.
>>1866091
Хамарин это другое. Понимать надо. На мобилах eto рисуется через хамарин, на маках через дарвин, на виндах через впф, на линуксах через гтк - и всё это уже заботливо собрано и разложено по нугет пакетам - только подключай.
>>1866174
Линуксоиды не любят кут, не знаю почему, я-то сам убунтовод-колясочник и сижу под кедами. Говорят, существующие шарповые бинды плохи. Но я не проверял. Да и зачем, когда есть Eto?
>>1866201
Чот погуглил щас, а там в результатах в основном такое: "до свиданья электрон, здравствуй %очередной УИ_тулкит%"
Аноним 26/11/20 Чтв 19:11:40 1866313889
Кто-нибудь с SNMP дело имел? Какие есть годные, желательно опенсорсные, решения для неткора? Ну, я гуглил и нашел sharpsnmplib но там автор как-то перемудрил на мой взгляд. Может быть я что-то не так понимаю.
Мне-то что нужно: Программулину написать, чтобы следить за количеством краски в принтерах, чтобы я смотрел, что в таком-то кабинете краска заканчивается - пришел, поставил новый картридж, никто не звонит, красота. У принтеров, как я погуглил, есть этот самый SNMP, ну, я подумал: А че, я и так полдня сижу в потолок плюю, да видяшки смотрю, а тут автоматизирую процесс своей работы, буду заранее видеть, заменять и плевать в потолок на 50% больше, красота же. Но то что нагуглил - какой-то оверхед как мне кажется.
Аноним 26/11/20 Чтв 19:30:41 1866336890
>>1866313
> Но то что нагуглил - какой-то оверхед как мне кажется.
Да похуй. Ты ж не на код смотреть будешь, а на красивую всплывающую табличку в трее.
Аноним 26/11/20 Чтв 19:34:00 1866337891
>>1866313
> и нашел sharpsnmplib
Так, падажжи! Ты нугетом не пользуешься штоле? Я вбил туда snmp и мне выдало десяток вариантов от разных авторов на любой вкус.
Аноним 26/11/20 Чтв 20:14:26 1866389892
1522705160155.mp4 8469Кб, 1280x720, 00:00:57
1280x720
Через что можно написать веб бота? Чтобы без использования браузера(потому какой-нибудь Selenium не подойдет), ибо они жрут ресурсов немерено, но чтобы умел работать с куками(ибо нужен автологин, чтобы все время Auth код не вводить).

Может через задницу гуглю, но что-то не могу найти.
Аноним 26/11/20 Чтв 20:24:33 1866395893
c51ef319-61ad-4[...].gif 959Кб, 187x250
187x250
Я дебил. Можно ли с помощью dnSpy вынуть весь код из dll в текстовый файл?
Аноним 26/11/20 Чтв 21:09:37 1866426894
Аноним 26/11/20 Чтв 21:22:37 1866434895
1473424585845.webm 10207Кб, 620x349, 00:02:15
620x349
Аноним 26/11/20 Чтв 22:20:31 1866473896
Читаю сейчас доки по ReactiveUI до чего крутая штука. Золотые горы обещает. Кто юзал? Каковы подводные?
Аноним 26/11/20 Чтв 22:20:50 1866474897
>>1866086
> Юзай Eto.Forms - вотета НЯ!
все, где внешний вид не отделен от логики, как в WPF - не ня вообще. Так, хуету делать разве что.
Хз че там в ето.формс, но если там не отделено, то дажа авалоания лучша будя

в WPF тоже хватает WTF (нувот их блин стили че так, хотя в авалония уже получше), но сама концепция ня ня
Аноним 26/11/20 Чтв 22:24:43 1866478898
>>1866473
обещает реактивеуи. хорошо для тех кто так мыслит и считает что именно так правильно, а по другому нет. На любителя в общем. Лично я, как мамкин фреймворкописатель (и под авалонию тожа), не нашел достаточных оснований по сравнению с INPC + Fody, чтобы овчинка стоила оверхеда и новой ебли вприсядку
Хотя конечно тут дело привычки восприятия.
Аноним 26/11/20 Чтв 22:35:33 1866493899
>>1866474
> где внешний вид не отделен от логики
Отделён, все норм.
Аноним 26/11/20 Чтв 22:36:35 1866498900
>>1866478
> INPC + Fody
Почитаем, поглядим.
Аноним 26/11/20 Чтв 22:37:40 1866502901
>>1866473
Зато от внедрения lifetimes польза была мне очевидна. Гор никто не обещал - они просто оказались

>Отделён, все норм.
ну там бедновато с примерами. мб мб. но если и так, то зачем тогда он если есть авалония (ну кроме проблемы с шрифтами конечно)
Аноним 26/11/20 Чтв 22:41:47 1866509902
>>1866474
> Хз че там в ето.формс
Я месяц назад закатился итт с вопросом
> Посоветуйте кроссплатформенный ЮИ-фреймворк
Мне насоветовали много всякого. В том числе авалонию. Потом я спросил вроде простой вопрос.
> Как мне сделать кроссплатформенную иконку в трей?
И началось. Тут не надо, дам нарушает, здесь ты чо ахуел, и так далее. И только кун, форсяций здесь авалонию (мб это ты?) сказал, что в авалонии иконка в трее реализована через Eto.Forms. Ну я загуглил. и что я вижу?

Охуенный ЮИ-фреймворк, отвечающий всем моим задачам. И никто не посоветовал мне именно его. Ну, напрямую никто, косвенно авалония-кун.
Аноним 26/11/20 Чтв 22:42:49 1866513903
Аноним 26/11/20 Чтв 22:44:03 1866515904
>>1866509
Блять.
> И началось. Тут не надо, там нарушает, здесь ты чо ахуел, и так далее. И только кун, форсящий здесь авалонию (мб это ты?) сказал
Быстрофикс
Аноним 26/11/20 Чтв 22:46:25 1866519905
>>1866509
насколько я помню тебе правильно ответили что делаешь какой нибудь сервис INotiticator который подключит правильный бэкенд рисования иконки под конкретной платформой. А то во всяких линуксах с их страшными гном3 и кучей других DE не напасешься встроенных средств работы с треем.

я хз чем так реализована иконка в трее в авалония, ведь даже в WPF я для этого ставлю нюгет пакет какого то васяна

Аноним 26/11/20 Чтв 22:48:56 1866526906
>>1866519
Не а. Это в этом треде я закидывал удочку на запоминание аноном информации. Реально про иконку в прошлом треде было.
И как выяснилось, анон инфу не усвоил. Вместо того, чтобы посоветовать мне (повторно) Eto.Forms c реализованной кроссплатформенной иконкой, мне насоветовали изобретать велосипеды.
Аноним 26/11/20 Чтв 22:50:12 1866528907
>>1866519
> какого то васяна
Зачем Василия обижаешь? Что за тон?
Аноним 26/11/20 Чтв 22:54:13 1866538908
>>1866528
почему обижаю
у меня ведь тоже васян продакшен энтерпрайз
так что никакой пренебрежительной окраски в моих словах

>посоветовать мне (повторно) Eto.Forms c реализованной кроссплатформенной иконкой, мне насоветовали изобретать велосипеды.
целый фремворк ради одной иконки. обычно все наоборот
Аноним 26/11/20 Чтв 23:08:34 1866548909
>>1866538
> целый фремворк ради одной иконки
Если бы я переходил с равного ему MVVM фреймворка - то да, долбоёбство. Я же по факту вкатываюсь в том числе и в шарп в принципе. Много лет кодил исключительно скрипты в батниках и (немножко) шеллах. До этого во времена дельфи кодил на нём.

Такшта сейчас при прочих равных именно нагугленный Eto даёт мне всё, что мне нужно. Авалония не понравилась статусом беты и подходом к ЮИ как ориентированному на темы. Ето наоборот даёт нативный лук и фил на выходе. Моя приложуха не будет навязывать юзеру свой фирменный стиль, а выдавать ему ту тему, которая установлена у него в системе. ReactiveUI можно подключить отдельно и всласть биндить виды к видомоделям. Как он собственно и к авалонии сбоку прикручен.
>>1866478
> INPC + Fody, чтобы овчинка стоила оверхеда и новой ебли вприсядку
> Хотя конечно тут дело привычки восприятия.
Как я уже сказал, привычек как таковых ещё нет, начинаю с чистого листа, открыт к новому, итп, посему изучу и эти тайтлы. Всё, ушол.
Аноним 26/11/20 Чтв 23:17:04 1866555910
>>1866548
>Eto даёт мне всё, что мне нужно.
как я вижу это такой кроссплатформенный WinForms. Не вижу чет я там никаких DataTemplate. Видать тебе такая гибкость и не нужна
>подходом к ЮИ как ориентированному на темы
хз о чем ты. просто когда ты сам описываешь визуальщину, то сложновато сделать "как там нативно в платформе выглядит". Это 2 противооположных стула, на которых пытается усидеть хамарин жертвуя гибкостью
Аноним 26/11/20 Чтв 23:35:47 1866568911
21.png 504Кб, 1155x278
1155x278
один.png 21Кб, 568x604
568x604
два.png 25Кб, 769x729
769x729
три.png 12Кб, 776x294
776x294
Привет програмач. Тащем-то есть задание, худо бедно написал. Хотелось бы почитать замечания по поводу кода, может что неправильно сделал. В данный момент разбираюсь в иерархиях классов.
Аноним 26/11/20 Чтв 23:56:39 1866581912
>>1866568
Доебутся. Ух, сколько тут возможностей доебаться!
Почему классы сотрудников пустые? Перенеси туда всё, что ты делаешь в Мэйн. Рейты вынеси в текстовый конфиг, который ебани константой в отдельном структе (public struct TipaDB { public const string rates = "{'dev':3000, 'QA':2500, 'BA':3500}"; }) внутри неймспейса. В конструкторы дочерних классов передавай только имя. Позицию и рейт конструктор поставит сам. Причем рейт возьмёт из текстового конфига, который ты симулируешь константой. Когда спросят зачем это? Ответь, типа, если код будет работать в составе более крупного проекта, то там наверняка будет БД и этот структ - её симуляция. (Важно, именно симуляция, не эмуляция.)
И в общем, следуя этим нехитрым советам - тебе перезвонят.
Аноним 26/11/20 Чтв 23:59:22 1866586913
>>1866581
Потом подключи NewtonSoft.JSON и им распарси строку с рейтами. Делов на пять минут, но ты до кучи ещё и продемонстрируешь, что разбираешься в пакетах и не изобретаешь велосипеды.
Аноним 27/11/20 Птн 00:08:08 1866593914
>>1866586
Большое спасибо, учту все моменты.
Аноним 27/11/20 Птн 00:16:05 1866597915
>>1866568
и почему все всегда верят что пользователь введет число
вдруг он напишет "пшелнах"
и твоя программа рухнет
Аноним 27/11/20 Птн 10:43:37 1866708916
Посоветуйте тему для пет-проекта, чтобы было что работодателю показать.
Аноним 27/11/20 Птн 11:07:09 1866727917
Я уже задавал этот вопрос в августе, но сейчас повторю. Мы ищем разрабов на хорошие условия, но на наши вакансии никто не откликается. Что с вакансиями не так кроме названия компании?
https://kazan.hh.ru/vacancy/39860758
https://kazan.hh.ru/vacancy/39860773

Заранее спасибо
Аноним 27/11/20 Птн 11:18:05 1866738918
>>1866586
>подключи NewtonSoft.JSON

Вот этого не нужно делать, используй System.Text.Json
Аноним 27/11/20 Птн 11:20:15 1866739919
>>1866738
У него другое поведение. Он видит только property, а field не видит
Аноним 27/11/20 Птн 11:27:30 1866748920
>>1866727
Тебе уже тогда сказали. Не помню правда что, но сейчас обсер виден прям в названии.
>middle программист

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

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

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

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

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

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

Ну и да. Учитывая зарплату, никому нахуй ваш Фарт и блокчейн не нужен. Это своего рода зашквар на которой идут только за деньгами.
Аноним 27/11/20 Птн 11:37:39 1866753921
>>1866748
> Как человек может быть мидлом и не понимать принципов работы СУБД
У нам приходил человек с 15 годами опыта и не еле-еле скрипя составлял простейшие sql-запросы на выборку из бд. Говорил, что раньше все запросы писал на nhibernate

> мидлом идёт на зарплату джуна
может наоборот?
Аноним 27/11/20 Птн 11:38:25 1866754922
>>1866739
Во-первых, поля не нужны. Во-вторых, игнорируются они только по умолчанию.
Аноним 27/11/20 Птн 11:43:28 1866756923
>>1866753
Ну вот, у тебя еще и требования непоследовательные. Тебе принципы работы нужны или умение составлять sql-запросы? Типичный представитель компании ФАРТ. В требованиях одно, а на собеседовании тебя посадят составлять sql-запросы, при том что в требованиях невнятная хуйня про индексы и требование работы с ORM.
>то раньше все запросы писал на nhibernate
Ну так и есть, зачем мне блять составлять sql запросы, сука, если для того чтобы этого не делать и создавались ORM? Разбираться нужно не в составлении sql запросов, а в работе ORM фреймворка, его тонкостях, умение просматривать эти самые sql запросы которые составляются фреймворком и определить можно ли улучшить данный sql запрос.
Аноним 27/11/20 Птн 11:52:45 1866757924
>>1866748
Просили передать: ты понимаешь в программировании, но не понимаешь в работе программистом

>>1866756
> умение составлять sql-запросы
> зачем мне блять составлять sql запросы
> Разбираться нужно не в составлении sql запросов
Как человек, работая с БД, может не знать SQL и не уметь составлять запросы? Что будет делать человек, если ему надо будет что-то (на 1000 строк) поправить внутри БД?
Аноним 27/11/20 Птн 11:58:04 1866760925
>>1866748
>почему не откликаются
>потому что вы у вас требования слишком низкие
Чёт пукнул с этого душнилы. Да, именно поэтому.
Аноним 27/11/20 Птн 12:31:09 1866786926
Стикер 0Кб, 512x512
512x512
>>1866748
> Называет самые дорогие города с самой большой зарплатой по россии
> может для город-нейм норм, но для Москвабад-сити это смешные деньги
Аноним 27/11/20 Птн 12:45:41 1866792927
>>1866708
Не иди в айти если задаешься такими вопросами
Аноним 27/11/20 Птн 13:02:36 1866800928
>>1866757
>Как человек, работая с БД, может не знать SQL и не уметь составлять запросы?

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

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

Для этого не нужны какие-то глубокие познания и высокопроизводительные запросы.
Аноним 27/11/20 Птн 13:03:37 1866802929
>>1866786
И давно ты в других городах был или в ДС/ДС2? Программистам уже давно начали платить +- одинаково, исключением будут разве что всякие ООО Фарт и НИИ МухГу
Аноним 27/11/20 Птн 13:03:46 1866803930
Мне кажется я с ума схожу. У меня в одном классе есть поле, которому я задаю значение при запуске программы и больше его не трогаю ВООБЩЕ, АБСОЛЮТНО, НИКАК. В этом же классе у меня есть 2 метода, которые это поле используют. НО в одном методе это поле имеет значение как и должно, А В ДРУГОМ ОНО ВСЕГДА null. Ещё раз, оно никак не меняется, я проверял, оно просто не может меняться. КАК, СУКА? КАК ОНО ОДНОВРЕМЕННО МОЖЕТ БЫТЬ В ДВУХ СОСТОЯНИЯХ? ПОЧЕМУ ОНО NULL, СУКА
Аноним 27/11/20 Птн 13:05:44 1866805931
>>1866803
Ну так сделай его readonly свойством, дебилоид.
Аноним 27/11/20 Птн 13:12:27 1866810932
>>1866805
Во-первых, с каких пор поля, блять, могу быть ридонли, во-вторых, нахуя мне твой ридонли, в-третьих, это не отвечает на мой вопрос
Аноним 27/11/20 Птн 13:20:28 1866815933
>>1866810
>сделай его readonly свойством
>с каких пор поля

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

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

Извини, сычуш, писать код исходя из описания умственно отсталых долбоебов, для которых программирование это какая-то магия, пока еще никто не научился.
Аноним 27/11/20 Птн 13:29:28 1866822934
>>1866815
Ещё раз, НАХУЯ мне твой ридонли, что это изменит. И я не могу ему значения присваивать в конструкторе или при инициализации, мне set нужен
Аноним 27/11/20 Птн 13:35:10 1866828935
>>1866822
Тогда делай отдельный метод для установления и изменения этого значения.
>что это изменит
Снимет с твоей программы колдовские чары, которые подменяют значение на null в одном из методов.
Аноним 27/11/20 Птн 13:46:47 1866842936
>>1866828
Но там нигде ничего не подменяется, понимаешь? В set после установления больше ничего на протяжении всей программы не приходит. Я вот буквально беру ставлю точку остановы на set, запускаю программу, при запуске присваивается значение, в set данные пришли. Вызываю один метод и там есть значение, в set ничего не приходит, затем вызываю другой метод и там null, в set так же ничего не приходило. Как это возможно?
Аноним 27/11/20 Птн 13:46:50 1866843937
Писклявый-пошёл[...].webm 200Кб, 40x30, 00:00:12
40x30
>>1866802
Студентик, проснись, ты на лекции, и что-то коричневое стекает по твоим порткам

ОКВЭД 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 тысячи.

Обрати, кстати, внимание, что это зарплата в доковидные времени
Аноним 27/11/20 Птн 13:53:03 1866850938
>>1866842
>Данные до 2017 года

Недавно тебя разморозили, да? Доллар уже по 76 рублей продают, прикинь.
Аноним 27/11/20 Птн 13:53:19 1866851939
Аноним 27/11/20 Птн 13:54:37 1866854940
Снимок.PNG 31Кб, 1186x288
1186x288
>>1866851
>>1866850
Мудила пиздоглазая, ты меня тупостью троллишь что ли?
Аноним 27/11/20 Птн 14:00:39 1866864941
>>1866800
> Для этого не нужны какие-то глубокие познания и высокопроизводительные запросы
Но всё-таки составить запрос нужно, да? На SQL, да?
> их предназначение это избавить программистов от необходимости вникать в SQL
Если у тебя такое глубокое понимание причины существования ORM, то пожалуйста сиди на фрилансе и пили свое говно за $10/час и никуда оттуда не уходи. Не хочу, чтобы такие как ты захламляли пространство собою
Аноним 27/11/20 Птн 14:04:33 1866869942
>>1866792
Я не задавал вопросов.
Аноним 27/11/20 Птн 14:09:32 1866875943
>>1866864
>Но всё-таки составить запрос нужно, да? На SQL, да?
Нет, не нужно, за программиста это делает ORM. Исключением будет либо говнокод, либо долбоеб не разбирающийся в ORM, либо долбоеб вроде тебя который любит пилить велосипеды и верить в то, что они лучше тех которые пилят непосредственные специалисты.
Аноним 27/11/20 Птн 14:10:28 1866876944
>>1866875
> непосредственные специалисты
Типа меня, да
Аноним 27/11/20 Птн 14:31:45 1866903945
>>1866800
>их предназначение это избавить программистов от необходимости вникать в SQL.
вот только успешность этого - ну разве что на петпроектах
Аноним 27/11/20 Птн 15:55:20 1866967946
На связи вкатывальщик который не работал с тредами с ебанутой задачей для впфа.
Задача: на впф'е есть один image, я хочу после обновления image.source показать эту картинку на 1 сек, а дальше обновить другой картинкой.
Я написал очевидный Thread.sleep, мало того, спустя после еще нескольких операций после апдейта источника, но ебучий имедж даже не вздумал его обновить и тред фризится со старой картинкой.
+я на .net 4.0 и всяких task.delay у меня нету.
Алсо, все это происходит на клик имедж ивенте, думаю пока сделать что-то с клик дауном.
Аноним 27/11/20 Птн 17:04:24 1867031947
>>1866967
>я на .net 4.0 и всяких task.delay у меня нету
какой то вкатывальщик некрофил
кто запрещает взять 4.7.2 хотя бы
Аноним 27/11/20 Птн 17:10:16 1867034948
>>1866967
Некромант, ты должен знать, что есть Task.Run, в нём и заменяй через критическую секцию
Аноним 27/11/20 Птн 17:13:28 1867039949
>>1867031
> кто запрещает взять 4.7.2 хотя бы
Шиндоус хп.
>>1867034
> Task.Run
Нету, твердо четко. Есть только waitall, waitany и пару каких-то свойств.
Аноним 27/11/20 Птн 17:18:51 1867042950
>>1867039
Task.Run это сахар
до этго был Task.Factory.StartNew
Аноним 27/11/20 Птн 17:24:52 1867045951
image.png 30Кб, 921x309
921x309
>>1865945
>>1865977
Я хз что вы с ней делаете. У меня на 4х разных машинах всё летает. Даже после утсановки решарпера никаких проблем нет. Даже в порезаной VDI (пришлось так работать на одного финансового клиена из-за секьюрности) нормально всё было.
Аноним 27/11/20 Птн 17:37:00 1867064952
image.png 38Кб, 1509x565
1509x565
>>1866017
Я таких лагов вообще припомнить не могу, даже на старых студиях. Делай перестановку винды, лол.
Скорее всего у тебя в системе глюки и вместо поисках нужных флагов проще чистую установку сделать.

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

Можешь Windows Events глянуть, там может краши есть. И ещё Reliability Monitor.
Аноним 27/11/20 Птн 17:47:49 1867077953
>>1866017
было такое. решарпер переставил и прошло.
Еще заметно было там решарпер в углу пишет память. Доходило до 500метров и начинало тупить как на видео.
Аноним 27/11/20 Птн 17:53:39 1867082954
>>1866869
С логикой всё впорядке, можно идти в айти.
Аноним 27/11/20 Птн 18:04:40 1867091955
MSVS говно. Один лишь дядюшка Джен Брейнс хороший иде, а все другие остальные такое... я не тормоз
Аноним 27/11/20 Птн 18:06:53 1867094956
>>1867091
когда этот дядюшка сможет WPF адекватно - тогда и приходи. и то осторожно
Аноним 27/11/20 Птн 18:18:13 1867100957
>>1866803
Доброе пожаловать в мир программирования. Здесь магия будет тебя преследовать первые лет 10. А потом, после фикса миллионов магических ситуаций, до тебя наконец-то доходит что магии вообще не существует и всегда есть причина, и причина очень конкретная.
Аноним 27/11/20 Птн 18:25:23 1867105958
image.png 346Кб, 1305x1114
1305x1114
>>1866802
Тебя пидораса надо окунуть в Иркутск/Сургут/Тюмень/Воркуту/один_из_тысяч_городов. Да даже Владивосток. Платить им блеадь одинаково начали. Ух гнида!
Соискателей как правило больше, чем предложений. Поэтому приходится переезжать или искать удалёнку или фрилансить.
Аноним 27/11/20 Птн 19:01:14 1867147959
>>1866869
Ты задаешься вопросом какой пет-проект написать.
Аноним 27/11/20 Птн 19:05:28 1867151960
>>1866337
И все они говно, либо перемудряют. Почему бы просто не сделать как httlListener/Client, чтобы взял и пользуйся: у одних - вообще нихуя нет, у других - собирай какие-то там правайдеры, фактории и прочую залупу. А мне просто нужно: Прописал адрес ресурса, указал IP-принтера и все чтобы работало.
Аноним 27/11/20 Птн 19:07:50 1867153961
>>1867151
поддержу анона. 10к либ чего либо на нугет еще не значит, что они написаны хорошо или удобны. Часто такое замудрят, что лицо потом болит
Аноним 27/11/20 Птн 20:11:27 1867200962
Аноним 27/11/20 Птн 20:23:32 1867214963
>>1867200
я другой анон но спрошу то что я всегда спрашиваю в подобных вещах
где async?
мудрить костыли с Task.Run это костыли. Конечно может быть достаточно,но как спать по ночам
Аноним 27/11/20 Птн 21:18:54 1867257964
>>1867214
Я же не автор того проекта. Вообще его в первый раз вижу. Я отвечал на
>Прописал адрес ресурса, указал IP-принтера и все чтобы работало.

Вообще если АПИ синхронное без всяких .Result костылей, то оно должно нормально работать. Тем более что использующая его прога - это десктопная поделка, использующаяся одним юзером для периодических проверок принтера (судя по поставленной аноном задаче). Там вообще пофиг.

Но если прям невмоготу (хрен знает как это слово писать), то возьми да сделай пул реквест в этот проект.
Аноним 27/11/20 Птн 21:55:55 1867293965
>>1867105
>1с
>программист
>ведущий разработчик
>единственная адекватная на фоне других пыха и та с зарплатой на уровне ДС2

Что сказать то хотела, скотина тупорылая?
Аноним 27/11/20 Птн 22:37:34 1867325966
>>1867293
Во владе в целом уровень зп выше чем в тысячах других городов по стране, и даже там средняя зп даже во всяких ДНСах и Сименсах будет 40-60. На скрине выше видно что для того чтобы получать 100+ надо быть или тим лидом или идти в бухгалтерию, что вообще не программирование. 200 позиций, которые там имеются, на скрин не влезут.

По пыхе там от 60 и скорее всего столько платить и будут. Верхнюю планку указывают чтобы народ привлечь. А требовать будут соорудить межгалактический летательный аппарат.
Аноним 27/11/20 Птн 22:55:02 1867342967
Подскажите. Вот есть EF, я хочу делать HasData. Так вот, я не совсем понимаю как это лучше делать? Ну, типа, на данный момент я просто так вот в классах которые настраивают модели ебанул статичные методы: GetDefault(), они дают мне данные начальные. Но вседь это какая-то хуета, как я понимаю. Особенно учитывая что я не вынужден для сущностей которые связаны с другими сущностями руками указывать ID, это приведет, потенциально, к хуевой ситуации, если я решу этот же метод GetDefault поменять в той сущности что связана.

Я смотрел как сами майкрософты в своих репках с "архитектурой" делают, так они там вообще никаких HasData не используют, в одном случае - хреначат хардкодом так же, но только делают отдельный здоровый класс Seed, в другом - из CSV читают. Оба варианта мне кажутся сомнительными. CSV - не позволяет нормально сущности связанные заполнять, а хардкод - те же проблемы что и у меня, просто они делают это в отдельном здоровом классе, а я в классе что имплементирует IEntityTypeConfiguration
Аноним 27/11/20 Птн 23:15:45 1867377968
>>1867342
создай xml и парсь в том же Seed'е
Аноним 28/11/20 Суб 00:17:24 1867452969
ab1785abef2af9a[...].jpg 50Кб, 600x446
600x446
изображение.png 16Кб, 448x573
448x573
изображение.png 16Кб, 451x556
451x556
изображение.png 5Кб, 777x55
777x55
Да почему не получается то, а?
Аноним 28/11/20 Суб 00:35:22 1867462970
>>1867452
А это потому что используешь идиотский стиль в виде фу_бар_баз и игнорируя регистр енума

ну а не работает потому что енумы не умеют в new - они не классы, то есть никакого new reason быть не может
Аноним 28/11/20 Суб 00:36:50 1867463971
>>1867452
>Доступ к члену
проиграл с пользователей русификаторов
Аноним 28/11/20 Суб 00:39:50 1867467972
>>1867462
Сеньор, ты точно код правильно прочитал?

>>1867452
Студент, иди учи что такое классы и объекты. Ты пытаешься использовать метод класса. А надо его вызывать у объекта.

Класс - описание сущности, оно нифига делать не умеет, пока из него сущность не создадут.
Объект - собственно то, с чем ты работаешь.

var user = new User();
user.ChangingDataAboutUser(hui);
Аноним 28/11/20 Суб 00:41:54 1867468973
>>1867467
>Сеньор, ты точно код правильно прочитал?
по сильной диагонали. с таким стилем оформления пусть мазохисты читают.
Аноним 28/11/20 Суб 00:49:21 1867471974
>>1867462
>>1867463
>>1867467
Спасибо за советы.Особенно >>1867467
>>1867468
Стиль такой, потому-что попросили сначала задачу оформить так а потом переписать в нормальном стиле и сделать выводу, почему так лучше не писать.
Аноним 28/11/20 Суб 05:35:36 1867507975
Ребят, а почему при вызове метода по значению, равенство мы передаем, например, вот так

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
Аноним 28/11/20 Суб 05:48:03 1867512976
>>1867507
Потому что ррезультатом выражения должно быть присваивание либо передача в качестве параметра
Аноним 28/11/20 Суб 05:50:36 1867514977
>>1867507
Это вообще никак не связано.
x += y это краткая форма записи x = x + y, то есть ты присваиваешь переменной x сумму x + y. А в первом случае твоя функция возвращала (return) сумму x + y.
Чтобы не иметь такой каши в голове, лучше возьми какую-нибудь книгу по языку и читай от корки до корки.
Аноним 28/11/20 Суб 06:22:28 1867525978
>>1867514
Какую посоветуешь?
Аноним 28/11/20 Суб 06:31:52 1867529979
>>1867514
Из шапки какой нибудь ресурс подойдет? Юзаю метанит, но там много каши в голове возникает, приходится спрашивать тупые вопросы
Аноним 28/11/20 Суб 07:30:32 1867540980
>>1867525
>>1867529
Я даже не знаю, из тех книг по шарпу что я видел везде основы программирования поданы очень сжато и быстро переходят к деталям шарпа и .NET платформы, которые тебе сейчас не нужны. Мне было норм так как шарп был не первый язык что я учил (по книге Троелсена, последнее издание сейчас Pro C# 8 with .NET Core 3, но вряд ли она подойдёт для совсем новичка в программировании). Опять же если тебе нужны на русском языке ресурсы то надо смотреть какие книги переведены, но в программировании конечно английский обязателен и его придётся учить в любом случае. А вообще в программирование я вкатывался с C++, там много хороших книг покрывающие самые основы (переменные, функции, if, while, for, классы, и т.п.), поэтому передо мной такой проблемы с шарпом не стояло.
Аноним 28/11/20 Суб 12:19:19 1867654981
>>1867452
У тебя класс юзер - обыкновенный, а ты пытаешься обращаться к нему как к статичному.
Суть, тебе нужно сначала создать объект.

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

Ну, а с точки зрения синтаксиса, чтобы создать новую жопу(нестатичную), ты должен написать Ass myAss = new Ass();
Чтобы вызвать у нее метод - myAss.MakeShit(); А если хочешь обратиться к статичной жопе - Ass.Shit, но тогда метод тоже должен быть статичным.
Как-то так.
Аноним 28/11/20 Суб 12:33:10 1867657982
.png 38Кб, 620x782
620x782
>>1867452
Хм. Я бы так вот написал.
Аноним 28/11/20 Суб 12:56:08 1867669983
Прихожу к выводу что анемичная модель - хуйня. Ну, тупо же неудобно, когда у тебя куча классов которые с ней работают.
Вот что удобнее: Класс Document, у которого просто есть метод Print(IPrinter), в котором можно внутри файла с классом все что нужно сделать, либо ебаться с классом DocumentPrinter, который мало того что не имеет доступа к private полям класса документа(а иногда нужно), так еще и будет в другом файле находиться и ты не можешь тупо клацнуть this. и посмотреть что вообще в классе есть, чтобы понять что там и как печатать.
Скажите, в чем я не прав и почему все равно так много людей хотят делать анемичную модель для приложения, плодя всякие Helper, Utils, *Service, вместо того чтобы нормально все в модели прописать, если модель будет меняться - мы будем менять это в одном месте, сразу править то что нужно, а не бегать по всему проекту в котором из-за анемичности будет 100500 классов чтобы все работало. Мне вот последнее время кажется, что это какой-то способ наебать работадателя, типа делаем анимичную модель, потом маленькое изменение в логике работы - неделя времени.
Аноним 28/11/20 Суб 13:17:36 1867677984
>>1867669
Ты и файлы наверно все в одной папке хранишь. Если что-то нужно, то не нужно бегать по каталогам, всё в одном месте!
Аноним 28/11/20 Суб 13:26:28 1867684985
IMG202011281326[...].jpg 478Кб, 2093x385
2093x385
Я лох студент, помогите решить задачи по с#

1. Найти произведение целых нечётных числел, кратных 7 и от -80 до 80.

2. Дано число n от 1 до 1000 и число m. Вывести результат квадрат разности числа n и m.

3. (Фото)
Аноним 28/11/20 Суб 13:30:02 1867686986
>>1867669
попробуй напиши пару проектов в обоих стилях - и вопрос твой как рукой снимет.
Аноним 28/11/20 Суб 13:49:24 1867695987
>>1867686
В том-то и дело, что я к этой мысли пришел после 3 лет работы.

Ну серьезно. Вот как ты поймешь нормально для чего тебе нужен класс User, если в нем одни свойства, а вся логика работы вообще в отдельной сборке лежит и ты тупо не знаешь, можно ли тут что-то трогать, чтобы все к хуям не сломалось нахуй. Как по мне, хорошо спроектированный класс - тот класс, при взгляде на список полей, свойств, и методов у тебя тупо не остается вопросов что это и нахуя оно надо вообще и как оно работает. А тут - это DTO'шка? Может быть это объект для БД, может быть еще что-то? Узнаешь когда пройдешься по всем ссылкам которые используют этот класс, а иначе - соси бибу или играй в Вангу.
Аноним 28/11/20 Суб 14:13:40 1867702988
>>1867695
это ты пришел работая с анемик. А все познается в сравнении.
а когда сходишь в DDD то количества мороки с организацией "че как" быстро превысит профит от этого и вернет на грешную землю с лозунгом "уж лучше гет сет публичные чем эта ебля"
Аноним 28/11/20 Суб 14:31:05 1867712989
>>1867684
Это задачи не по C#, а по математике, пиздуй нахуй отсюда, студент.
Аноним 28/11/20 Суб 14:32:59 1867713990
>>1867695
это как с исключениями
- как вы с ними работаете. хер поймешь какое исключение может вылететь из глубин, непонятно что ловить
- не вопрос. попробуй альтернативу с кодами возврата
....через время....
- да ну нахуй. я люблю исключения
Аноним 28/11/20 Суб 14:35:43 1867714991
>>1867695
Ну так 3 года говнокодил, вот и пришел. Писать хороший, структурированный код это такой же навык как и другие, он не приходит сам собой, его нужно оттачивать. А на работе ты этому не научишься, потому что на работе полно таких же долбоебов которым "похуй, лишь бы работало" и менеджмент которому "хуяк-хуяк и в продакшн".

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

Ты запутаешься в этой простыне уже на 100+ строке. Когда у тебя разбито всё по классам, то тебе легче запомнить и представить структуру в целом.
>Узнаешь когда пройдешься по всем ссылкам которые используют этот класс
Вот именно - узнаешь. А если лепить простыню, то ты никогда не узнаешь и будешь тыкать наугад.
Аноним 28/11/20 Суб 15:25:22 1867726992
>>1867657
Ага и еще свитч с паттер матчингом в ChangeData() бы всунул. Зачем новичка expression-bodied пропертями смущаешь, у него и так каша в голове.
Аноним 28/11/20 Суб 15:27:37 1867727993
>>1867657
приватные поля можно выкинуть
if..elseif заменить на if..return
Аноним 28/11/20 Суб 18:06:44 1867804994
Ну что там ваш дотнет 5? Когда уже выйдет? Какие инновации?
Аноним 28/11/20 Суб 18:09:37 1867807995
>>1867804
>Когда уже выйдет?
никто не знает. даже слухов на эту тему нет
Аноним 28/11/20 Суб 21:21:29 1867915996
Вопрос по автомапперу. Есть классы
class A { ICollection<A1> SomeProp {get;set;}}
class B { IEnumerable<B1> SomeProp {get;set;}}
Можно ли настроить маппинг A->B так, чтобы при маппинге A.SomeProp->b.SomeProp b.SomeProp по факту было массивом, а не листом (не меняя тип B.SomeProp)?
Аноним 28/11/20 Суб 22:00:04 1867969997
>>1867804
Все вышло.
Рекорды, внезапно, охуенная тема. ДТОшки пишутся в 1 строку, охуенно просто. Теперь, к.м.к. незазорно их прямо в контроллере делать, типа пусть лежат прямо где используются.
Ну а так, в остальном всякая мелочевка.
Да, говнорайдер не может в .net5 пока, ну, как обычно.
Аноним 29/11/20 Вск 12:27:03 1868345998
>>1858975
Чё-т вы в середине треда про перекат попиздели, а ПЕРЕКАТА ТАК И НЕТ.
Аноним 29/11/20 Вск 15:22:46 1868465999
image.png 21Кб, 984x125
984x125
Шапку блять обновите.
Аноним 29/11/20 Вск 15:23:32 18684691000
>>1867684
Если ты такую хуйню не можешь решить, то нахуй ваще поступил на программиста?
Аноним 29/11/20 Вск 16:10:40 18685221001
>>1868465
тебе и карты в руки. как раз перекат нужен
Аноним 29/11/20 Вск 16:13:32 18685251002
Аноним 29/11/20 Вск 16:53:45 18685601003
>>1868525
Не стоит стесняться. Ты же не жавист
Аноним 29/11/20 Вск 19:19:44 18687241004
изображение.png 4Кб, 655x66
655x66
Почему массив both_lower_than_zeroну и название я придумал.......... в результате данных манипуляций никак не изменяется?
Аноним 29/11/20 Вск 19:34:26 18687421005
Должен ли код быть рабочим после каждого коммита? Или нормально, если одним коммитом поломаю код, а другими буду исправлять сломавшиеся части?
Аноним 29/11/20 Вск 19:41:02 18687501006
>>1868724
Потому что ты ничего не меняешь. По принципу работы твой код эквивалентен чему-то типа такого
foreach(double element in array)
...Handle(element);

int Handle(double value)
{
...return value + 0.5;
}
Аноним 29/11/20 Вск 19:42:20 18687521007
>>1868750
блэт, дабл вместо инта, но сути не меняет
Аноним 29/11/20 Вск 20:01:50 18687701008
опять в теме больше 1000 сообщений
и снова мне придется перекатывать ныть о том, чтобы перекатили
Аноним 29/11/20 Вск 20:11:57 18687881009
>>1868742
Для неполноценных коммитов есть squash. Эта команда может собрать временные и поломанные коммиты в один нормальный.
В мастере каждый коммит в идеале должен содержать код, который можно сбилдить и прогнать тесты без ошибок.
Аноним 29/11/20 Вск 21:01:32 18688691010
>>1868750
Но ведь Array.ForEach возвращает void
Аноним 29/11/20 Вск 21:02:53 18688721011
>>1868869
foreach обычный тоже ничего не возвращает
Аноним 29/11/20 Вск 21:24:36 18688931012
>>1868724
y значимый тип, а значит копируется в лямбду и не заменяется
Аноним 29/11/20 Вск 21:28:21 18688951013
>>1868893
да даже если и ссылочный, то ничего не заменится. ссылки тоже копируются
Аноним 30/11/20 Пнд 17:30:13 18693281014
вы забыли перекатиться
Аноним 01/12/20 Втр 12:22:08 18699141015

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;
}

Обновляю свойство, в метод чеджед тригерит. В выводе приложения ошибок с биндингом никаких нету.
Аноним 01/12/20 Втр 17:36:04 18701291016
тест на форматирование кода

`public MyClass GetMyClass(string name) { }`

`
public MyClass GetMyClass(string name) {
var myClass = new MyClass();
return myClass;
}
`

```public MyClass GetMyClass(string name) { }```
Аноним 01/12/20 Втр 19:05:14 18702631017
>>1869914
> Wpf
Здравствуй, Игорь! Это твой начальник. Помнишь меня? Я попросил тебя портировать наши корпоративные утилиты на линукс, для импортозамещения так сказать. Ты обещал перезвонить, как портируешь. Мы всем отделом уже полгода ждём твоего звонка.
Аноним 01/12/20 Втр 19:06:44 18702661018
>>1870263
здравствуй начальник. оказалось что никому на линусе мои утилиты не нужны, потому что доля линукса в десктопах да где применима моя утилита - ничтожны. Более того, линуксоиды не любят платить за софт.
Аноним 01/12/20 Втр 19:09:44 18702731019
Аноним 01/12/20 Втр 22:30:16 18704471020
Аноним 01/12/20 Втр 22:52:24 18704751021
Аноним 05/12/20 Суб 17:54:35 18736681022
>>1848127
Двачую WF господина!
Аноним 29/12/20 Втр 15:37:03 18945541023
Аноним 09/01/21 Суб 18:03:04 19056871024
>>1846539 (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 год.
и так с каждым инструментом решающий сложную задачу. Нахожу первый попавшийся инструмент, потом ещё больше поисков через дебри ещё лучше инструмент, но все инструкции по нему дремучие ужас. А потом сижу и думаю может есть что-то более современее и лучше?
Аноним 06/04/21 Втр 12:35:51 19877421025
image.png 10Кб, 580x126
580x126
Как в этом ебучем Visual Studio сделать так, чтобы неправильно введенная команда автоматически исправлялась? Эта функция раньше работала, но я что-то нажал и ВСЕ, редактор перестал автокорректировать неправильное написание.

Сижу гуглю уже ебаный час и НИХУЯ, как будто никто и не знает про эту функцию. Может тут кто-то знает?
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов