Сохранен 1076
https://2ch.hk/pr/res/2484368.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

C# Thread.Version=40 /csharp/

 Аноним 08/10/22 Суб 14:30:34 #1 №2484368 
image.png
image.png
Тред лучшего языка на планете.

1. Ресурсы:
https://dotnet.microsoft.com/learn
https://ru.stackoverflow.com/a/416585/422180
https://metanit.com
https://professorweb.ru

2. С# для веб
https://docs.microsoft.com/ru-ru/aspnet/core

3. C# для десктопа
— WPF ( https://docs.microsoft.com/ru-ru/dotnet/desktop/wpf )
— WinForms ( https://docs.microsoft.com/ru-ru/dotnet/desktop )

4. С# для игр
— Unity-тред в /gd/, а так же учебники: https://ru.stackoverflow.com/a/609901/422180

5. С# для мобильной разработки
https://docs.microsoft.com/ru-ru/dotnet/maui

6. Годные ютуб-каналы
https://www.youtube.com/c/CODEBLOG
https://www.youtube.com/c/AndreyShyrokoriadov
https://www.youtube.com/c/DevJungles
https://www.youtube.com/user/Shmachilin

Шапка: https://pastebin.com/HT7Hi6FD
Прошлый тред: >>2445746 (OP)
Аноним 08/10/22 Суб 14:31:07 #2 №2484369 
7. Какую IDE выбрать?
— Для Windows Visual Studio ( https://visualstudio.microsoft.com/ru/downloads ). Также есть версия для macOS.
Кроссплатформенный IDE Rider ( https://www.jetbrains.com/rider ).
Если в C# хочется, но пк уж слишком хуёвый: https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio-code

8. Что нужно знать, чтобы взяли работать?
Общие навыки — TPL, Linq, DI, интеграционные тесты. Преимущество перед такими же вкатунами даст парочка интересных пет-проектов где вы делаете всё максимально правильно и точно следуя архитектуре.
Архитектура — DDD, микросервисная архитектура. Так же необходимо ознакомиться с паттернами проектирования. Обязательны к изучению: MVVM, MVC.
Базы данных — PostgreSQL/MSSQL + Mongo/Redis. Из ORM: EFCore обычно достаточно, но есть более быстрый, но менее удобный Dapper. Тратить время на ADO.NET не стоит.
Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
Структуры данных — связанные списки, деревья (бинарные, красно-чёрные), хеш-таблицы, графы.
Системы контроля версий — обычно гита достаточно.
Аноним 08/10/22 Суб 14:34:47 #3 №2484372 
>>2484152 →
> ui на авалонии(c#) какие есть тулкиты под неe
Она сама тулкит. Тебе нужен тулкит под тулкит? Нигер штоле?
>>2484363 →
> qt платный
Da.
> Gtk всратый
Ты всратый.
Аноним 08/10/22 Суб 15:00:17 #4 №2484377 
>>2484372
https://habr.com/ru/post/487000/
https://habr.com/ru/news/t/475256/
https://habr.com/ru/post/528620/
Аноним 08/10/22 Суб 15:27:22 #5 №2484381 
>>2484377
Просмотрел ссылки. Там темы для авалонии. И что? Что ты этим хотел сказать? Что анон перепутал тулкит и тему в своём посте? Или что?
Аноним 08/10/22 Суб 16:42:46 #6 №2484400 
>>2484377
Хуясе, красивые вьюшки.
мимо
Аноним 08/10/22 Суб 20:11:16 #7 №2484512 
>>2484377
Как же все таки уебищен современный UI дизайн. Безотносительно к авалонии, он везде говно.
Аноним 08/10/22 Суб 21:07:40 #8 №2484534 
А че такое, на работе хотел Visual Studio скачать - не выходит. Дома тоже на двух компах, на одной 10, на другой 7 винда. Майкоскот отрубил?
Аноним 08/10/22 Суб 21:12:41 #9 №2484537 
.png
>>2484512
Самый красивый UI - дефолтный с дефолтными стилями. Он всем привычен, пользователи никогда не скажут, что им не нравится цвет кнопки, им тупо похуй.
Вообще, странная тенденция со стилями этими. Лет 10 назад все плевались от кроссплатформенных тулкитов с собственными стилями, не выглядящими нативно, а теперь все ругают нативные стили и пытаются высрать очередной уникальный дизайн, где невозможно отличить кнопку от надписи.
Аноним 08/10/22 Суб 21:14:19 #10 №2484539 
А, пидорософт отрубил Раху окончательно. Через ВПН качает.
Аноним 08/10/22 Суб 21:15:18 #11 №2484540 
>>2484534
Что значит не выходит? Для теста зашёл на https://visualstudio.microsoft.com/ru/downloads/ , всё качается. Проверил в Firefox и IE.
Аноним 08/10/22 Суб 21:17:15 #12 №2484544 
>>2484537
Согласен.
Аноним 08/10/22 Суб 21:29:46 #13 №2484551 
>>2484540
А ты поставить попробуй. У меня не скачиваются обновы.
Аноним 08/10/22 Суб 21:55:32 #14 №2484561 
.png
>>2484551
Обнова скачалась и установилась. Возможно, через моего провайдера пока ещё работает.
Аноним 08/10/22 Суб 22:07:20 #15 №2484567 
>>2484537
Именно поэтому Eto.Forms лучше авалонии. Eto.Forms генерирует нативные окна под каждую платформу WPF, Winforms, GTK, MAC. В отличие от авалонии, которая создаёт графический контекст и рисует в нём свой вид согласно установленной внутри себя теме.
Кому нужны мокрописечные интерфейсы - тем в авалонию.
Кому нужен натив - добро пожаловать в Eto.Forms.
Аноним 08/10/22 Суб 22:09:51 #16 №2484569 
>>2484561
У меня только через впн вышло. Пробовал на разных компах с разными провайдерами. Хуйня, кстати, появилась буквально день назад.
Аноним 08/10/22 Суб 22:32:18 #17 №2484585 
>>2484569
Точно так же через некоторое время она пропадет и все станет нормально.
Это кстати не только особенность майковского сайта, но и многих других подобных крупных порталов. И нынешняя политическая ситуация тут не при чем. Скорее всего это косяки защиты от дудоса, которые на время блокируют целые регионы.
Аноним 09/10/22 Вск 08:10:57 #18 №2484695 
Как в вижле включить автосохранение? 2022 год, а они предлагают самому жать CTRL+S.
Аноним 09/10/22 Вск 10:35:43 #19 №2484731 
1665300943395.png
>>2484695
Аноним 09/10/22 Вск 11:54:40 #20 №2484764 
>>2484731
Вместо ctrl-s нажимать alt-tab? 🤣
Аноним 09/10/22 Вск 12:00:24 #21 №2484768 
В общем. Смотрите. Есть приложение, разработанное для работы в контейнерах и облаках(раньше разворачивали на AWS, потом пришлось перекатиться на Яндекс).
Бекенд - это набор веб-приложений на .NET6. Фронт был на ангуляр+nginx.
Так вот. Внезапно возникла охуитительная идея - запихнуть все это дело в десктопное приложение. Не спрашивайте. Просто требования бизнеса такие возникли.
Хочется все это дело малой кровью провернуть.
Насколько норм решение - просто запихнуть фронтенд в какой-нибудь компонент QT для рендеринга веб-страничек и запускать локально тихонько приложухи. Ну или не Qt - копмонент, а электрон, допустим.
Кто-нибудь такой фигней маялся?
Или хуйня все это и придется по хардкору - разбирать микросервисы и делать отдельное полноценное приложение для десктопа?
Аноним 09/10/22 Вск 13:36:52 #22 №2484815 
>>2484567
https://github.com/AvaloniaCommunity/awesome-avalonia#tutorials
>>2484567
аналогично
Аноним 09/10/22 Вск 18:25:40 #23 №2485027 
>>2484768
Если у тебя Qt в роли браузера, Qt тебе нахуй не всрался. Бери электрон, тупо копируй файлы веб-приложения и пиши скрипт для запуска. Но надо ещё придумать, как будешь обновлять.
Аноним 09/10/22 Вск 18:59:35 #24 №2485049 
Думаю написать движок для ГИСов на шарпе с использованием Вулкана (через vke обёртку). Доступные решения юзают старый GDI/GDI+, а я сделаю высокопроизводительный рендеринг для 1кк+ элементов. Аналоговнеть даже на С++ вроде.
Аноним 09/10/22 Вск 19:13:10 #25 №2485061 
>>2485049
Сделай! Как сделаешь - покажи.
Аноним 09/10/22 Вск 20:35:55 #26 №2485152 
>>2485049
Лучше сразу на крестах пиши.
Аноним 09/10/22 Вск 21:25:57 #27 №2485197 
>>2485061
Если сделаю - то вы все и так узнаете, вот увидите. Конечно, скорее всего через три дня я заброшу эту идею.

>>2485152
Я об этом думал, но суть в том, что я резко потеряю в скилле и уровнях абстракции для разработки фич, которые мне нужны будут. Даже если там будут просадки со стороны .NET, Вулкан умножит на ноль любые потери в самом рендеринге, а я не буду читать мануалы аля как в этом ебаном С++ создать легкую хуйню X, которую в шарпе я могу закрытым глазами запилить.

В целом, нужны простые вещи: нарисовать линии, добавить точку, в основном всё будет 2d + возможности 3d интерфейса (сами данные 2d, но юзер может покрутить карту, угол обзора).

На данный момент на Шарпе нету карты, способной в сложный рендеринг, которая не стоила бы больших денег. Я знаю только про движок от ESRI. Кто напишет про GMap, SharpMap, MapWinGIS, dotSpatial, EasyGIS - сразу нахуй, коль не соображаете ничяго.
Аноним 10/10/22 Пнд 15:31:56 #28 №2485624 
Вкотился в фулл стэк, мне пизда?
Аноним 10/10/22 Пнд 15:48:36 #29 №2485631 
>>2485624
да. и ты заслужил
Аноним 10/10/22 Пнд 16:10:33 #30 №2485648 
>>2485633
Где?
Аноним 10/10/22 Пнд 16:13:58 #31 №2485651 
>>2485049
Сколько ты это пилить будешь? 10 лет? Сможешь запилить хотя бы что-то отдаленно напоминающее josm? Он кстати вроде на обычной джаве со свингом написан, без погружения в опенгл, вулкан или директикс. Но и 1кк+ элементов он не вытягивает, да и зачем?

>>2485197
>Даже если там будут просадки со стороны .NET, Вулкан умножит на ноль любые потери в самом рендеринге
Вулкан не панацея от всех проблем.
Аноним 10/10/22 Пнд 16:57:54 #32 №2485679 
Как вы изучали ASP.NET?
sage[mailto:sage] Аноним 10/10/22 Пнд 19:23:30 #33 №2485780 
>>2485679
Устроился на работу.
Аноним 10/10/22 Пнд 19:26:13 #34 №2485782 
>>2485679
METANIT
sage[mailto:sage] Аноним 10/10/22 Пнд 19:27:55 #35 №2485783 
>>2485679
Читай шапку, есть канал андрей широкорядов.
Аноним 10/10/22 Пнд 21:01:45 #36 №2485828 
Метанит - прекрасная платформа для обучения. Читаешь руководства по шарпу и аспнету и уже можешь искать работу.
Аноним 10/10/22 Пнд 21:05:11 #37 №2485832 
>>2485780
А если не берут без знания ASP.NET?

>>2485782
>>2485828
Дак там примеры только для вижлы, а значит надо ставить винду

>>2485783
Он так асмрно говорит, что не думается о программировании
sage[mailto:sage] Аноним 10/10/22 Пнд 21:07:24 #38 №2485834 
>>2485832
>А если не берут без знания ASP.NET?
Тада учиться по видосикам андрея широкорядова.

>Он так асмрно говорит, что не думается о программировании
Двачую, мне кажется он на каких-нибудь нереальных транквилизаторах сидит.
Аноним 10/10/22 Пнд 21:16:11 #39 №2485843 
>>2485832
> Дак там примеры только для вижлы, а значит надо ставить винду
В любом случае надо. Один хуй на работе будет Visual Studio, разработка будет на винде, сервера на винде, и это при мнимой кроссплатформенности дотнета.
Аноним 10/10/22 Пнд 22:31:37 #40 №2485890 
>>2485843
Если речь про веб на ASP .Net Core то не факт.

> на работе будет Visual Studio
Не факт, у нас, к примеру, дозволен онли Rider. За VS розгами секут.

> сервера на винде
На всех трёх работах, где веслал деплоили в кубер/openshift под линухом.

> разработка будет на винде
У нас в команде ограничений по ОС нет. Большая часть команды, да, юзает Винду, но есть и пара линуксоидов и даже один яблочник. Проблем с разработкой не испытывают.

В общем, в компаниях, у которых все на .net Core нет такой лютой привязки к винде. Во всех местах, где работал и про которые слышал, вообще предпочитают деплоить кормовые приложение в кубер под линухом. Вот если в компании есть что-то легасевое на .net framework, то да, может быть требование винды. Но я бы сейчас такие компании старался стороной обходить.
Аноним 11/10/22 Втр 06:04:33 #41 №2485975 
>>2485832
>Дак там примеры только для вижлы, а значит надо ставить винду
Пиздец, это же такая проблема в 2К22-м году-то.
Аноним 11/10/22 Втр 06:38:29 #42 №2485980 
Смотрите какая ситуевина.
Вводные данные: Npgsql+EFCore
Собственно. Программулина - шлюз. TCP-соединение открывается, клиент регистрируется по моему протоколу, я выделяю ему порт в системе, через который другие клиенты могут как-бы напрямую с ним общаться, сохраняю данные в базу. Механизм вроде как простой и все работает.
Но есть ньюанс. После примерно 30к таких висящих клиентов - начинается треш. Во-первых, PgSql - почему-то не закрывает соединения с базой. Хотя я их честно диспозю, и вообще они мне из DI'я приходят. Из-за этого, после определенного порога - новый клиент зарегистрироваться не может, получаю WSAENOBUFS (10055)
Есть и другие моменты, но вот этот пока что самый бесячий и я буквально не представляю, что мне тут делать, потому что блин, я все как в документации и рекомендациях написано делал.
На SO находил мнение, что для PGSql - нужно один коннект на все приложение делать, но из коробки так нельзя, потому нужно на PGSql+ типа переходить, там какая-то хуевина якобы есть, которая все твои контексты оборачивает во что-то и фактически у тебя один коннект, но в приложении - куча контекстов. Плотить - пока что, не хочется.
Может быть я что-то не так делаю? Кто-нибудь вообще, кроме меня сталкивался с вот такой вот фигней, что просто не удается открыть сокет, хотя чисто номинально - их свободных еще должно быть куча, всего-то половина от 65535 использована.
Аноним 11/10/22 Втр 09:03:59 #43 №2485997 
>>2485890
>Rider
Проблемы бы не было, если бы была коммьюнити версия хотя бы. Всякие решарперы не особо нужны, а в обучении может и вредны.
Аноним 11/10/22 Втр 10:09:29 #44 №2486004 
>>2485980
>Кто-нибудь вообще, кроме меня сталкивался с вот такой вот фигней, что просто не удается открыть сокет,
Вряд ли. Сейчас подавляющее большинство через REST работает. А там где есть перспектива пощупать сокеты, все сразу "нахуй-нахуй" и либо съебывают, либо REST продавливают.
Аноним 11/10/22 Втр 13:38:56 #45 №2486159 
>>2486004
это вообще из разных миров как бы
А по теме...это ж pg.
притащу цитату с перехода убера

"Помимо вышеперечисленных проблем, похоже, в Postgres не лучшим образом реализовано управление большим количеством соединений. Даже в тех случаях, когда памяти было более чем достаточно, мы испытывали серьезные проблемы с масштабированием Postgres после достижения порога в несколько сотен соединений. В документации (хотя мы не смогли найти этому точного объяснения) настоятельно рекомендуется использовать внешний пул (connection pooler) для обслуживания большого количества соединений. Для этих целей мы достаточно успешно применяли pgbouncer. Однако периодически проявлялась ошибка, которая приводила к открытию большего количества активных соединений (обычно в статусе “idle in transaction”), чем было нужно. В итоге это приводило к увеличению времени простоя."
Аноним 11/10/22 Втр 13:50:45 #46 №2486169 
>>2485997
На работе тебе оплатят лицуху, а дома можешь обучаться на торрент эдишон. И хуй тебе кто что сделоет.
Аноним 11/10/22 Втр 13:52:55 #47 №2486171 
>>2486169
Единственная трабла может быть если ты самозанятый фрилансер, тогда существует некоторая вероятность, что к тебе доебутся за лицензию. Но после day Z эта вероятность стала ещё более призрачной. Воруй! Качай! Еби гусей! Мы русские! Какой восторг!
Аноним 11/10/22 Втр 14:33:39 #48 №2486190 
>>2486169
Дак райдер ломануть нормально не могут. Там какой-то замороченный гайд на старую версию с запретом обновлений и блокировкой интернет-соединения.
Аноним 11/10/22 Втр 14:35:19 #49 №2486191 
1665488107178.jpeg
Хочу чтобы у меня в wpf через секунду после бездействия скрывался интерфейс. Сделал через behavior, пик. Но проблема в том, что интерфейс скрывается через 2 секунды. Почему?
Фото монитора, так как с пк двач не грузит.
Аноним 11/10/22 Втр 15:13:07 #50 №2486201 
>>2486190
глупости какие то. уже больше года есть норм средство для всех idea-based редакторов
Аноним 11/10/22 Втр 15:16:15 #51 №2486203 
>>2486191
жуть, а не код. Особенно реализация "таймера" )))
Аноним 11/10/22 Втр 15:27:54 #52 №2486214 
>>2486201
Пишут, что не у всех работает и в 2022 версии жидбрейнсы пофиксили лазейку
Аноним 11/10/22 Втр 15:35:07 #53 №2486217 
1665491703784.jpeg
>>2486203
Я вроде не спрашивал мнения о коде, я спрашивал, почему он работает неверно. Сам код я уже переписал (пик), но вопрос меня всё еще интересует.
Аноним 11/10/22 Втр 16:50:58 #54 №2486273 
image.png
Что блять? Это нахуя так сделано? Если в списке чисел не найдено нужное значение то вернется 0 нахуй?

Мне что, ручками цикл писать?
Аноним 11/10/22 Втр 17:08:19 #55 №2486281 
>>2486273
А что по твоему он должен был бы вернуть?
Аноним 11/10/22 Втр 17:15:22 #56 №2486288 
>>2486273
>Мне что, ручками цикл писать?
100% нужно
в принципе можно использовать Array.FindIndex, но не нужно.

Так то ты прав. должно быть bool Find(...out value)
Аноним 11/10/22 Втр 17:31:42 #57 №2486304 
>>2486273
Как на счёт Linq?
.Any(a => a == x)
И получишь себе bool на выходе.
Аноним 11/10/22 Втр 17:40:50 #58 №2486311 
>>2486217
>не спрашивал мнения о коде
А это никого не волнует. Опубликовал код - радуйся что обосрали. Вот ты даже код поправил.

А по теме - исчезает через секунду. Не верь глазам, добавь Stopwatch
Аноним 11/10/22 Втр 18:02:20 #59 №2486331 
>>2486214
Я только что проверял …нет, не скажу какой трекер, и там висит 2022 с патченым экзешником на раздаче и никто не жалуется.
Аноним 11/10/22 Втр 18:02:33 #60 №2486333 
Image 1.png
>>2486217
хз же что это за InterfaceVisibility и что там в обработчике MouseLeave ибо не представлено
но в остальном пруфпик
Аноним 12/10/22 Срд 10:08:36 #61 №2486635 
>>2485651
>Сколько ты это пилить будешь? 10 лет? Сможешь запилить хотя бы что-то отдаленно напоминающее josm?
Не совсем. josm - это не движок, а полноценная ГИС. Я же собираюсь сделать только прослойку между graphics API и ГИС приложениями. Ну это всё фантазии пока конечно.

Но на Вулкане через .NET обёртку я уже смог прорендерить 1кк+ объектов через несколько пайпов с ФПС 60. Правда там shaders без обвеса, а они перфоманс просадить могут. Но если удасться изменить модели на более качественные и удержать ФПС - то я точно продолжу разработку, ибо самый топовый движок до сих пор юзаею OpenGL, а тут у меня готовый .NET компонент будет для десктопа.
Аноним 12/10/22 Срд 18:57:53 #62 №2486921 
изображение.png
изображение.png
Помогите с wpf, хочу расширить класс TextBlock, добавляю свойство зависимости, но программа на него никак не реагирует! При его изменении просто ничего не происходит, сеттер никогда не вызывается.
Аноним 12/10/22 Срд 19:03:51 #63 №2486932 
>>2486921
В итоге разобрался сам, для изменения других свойств надо было создать отдельную функцию и передать её в PropertyMetadata
Аноним 12/10/22 Срд 19:19:54 #64 №2486947 
>>2486635
>Я же собираюсь сделать только прослойку между graphics API и ГИС приложениями
А в чем тогда смысл твоих начинаний? Любая макака может из джавы/шарпы/питона дергать opengl и вулкан, обертки уже есть. Или ты хочешь какую-то особую gis-либу запилить со всеми необходимыми компонентами для разработчиков гис софтин?

А почему бы не посмотреть в сторону js и вебассембли? Например те же народные карты яндекса вполне шустро работают. Ну или викимапия, там наверное совсем что-то древнее под капотом у них крутится, но работает быстро.
Аноним 12/10/22 Срд 22:09:24 #65 №2487065 
>>2486004
А я так и не успел эти сигналРы пощупать на боевом проекте
ТОЛЬКО ВЫИГРАЛ?
Аноним 12/10/22 Срд 22:59:19 #66 №2487095 
>>2486947
>народные карты яндекса вполне шустро работают
Ты пробовал в них сотни тысяч элементов с графикой прогружать?

>обертки уже есть
Нету FOSS GIS компонента для .NET, способного в высокую производительность. Бесплатно только старые GDI/GDI+ движки.

>>2486947
>викимапия
Дебил, просто съеби. Почитай про deck.gl, QGIS, ArcGIS Pro, Carmenta Engine, а потом неси своё говно мамонта, которое на первом же слое обосрётся.
Аноним 13/10/22 Чтв 01:19:38 #67 №2487154 
Скучаю по системе типов из тайпскрипта. Например, иногда хотелось бы не bool SomeProp, а true SomeProp. И чтобы можно было в ограничениях для генериков указывать не только интерфейсы, а любые типы.
Заметил, что указание типа после имени переменной на самом деле удобнее:
int Count;
Count int; – это удобнее, потому что большую часть времени ебёшь мозг над названием переменной, и, если название придумал, то структуру данных подобрать – дело наживное

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

Вам не кажется, что в последнее время маятник качнулся обратно, и паттерны ради паттернов и интерфейсы на ровном месте стали использовать реже? Например, ебучие IRepository или UnitOfWork, которые тупо обёртка над EF. Ладно бы хоть с бизнес-логикой, так ведь не всегда
Если посмотреть EShopOnContainers, который разбирают на msdn, то выглядит очень даже ничего
Аноним 13/10/22 Чтв 09:59:36 #68 №2487393 
>>2487154
>Например, ебучие IRepository или UnitOfWork, которые тупо обёртка над EF.
Как быть суть как раз в создание отдельного слоя данных, не привязанного к ORM. То есть ты пишешь IRepository<Entity>.Save в контроллере, и при смене ORM или вообще на переходе на SQL raw тебе не надо лезть ВО все контроллеры и вручную переписывать методы.

А Unity of Work - это просто удобный способ контроля изменений, когда ты сохраняешь всё по факту.
Аноним 13/10/22 Чтв 11:12:51 #69 №2487420 
>>2485828
А как учится по Метаниту? Читать по-порядку? А практика? Там нет ни одной задачи после теории.
Аноним 13/10/22 Чтв 14:56:23 #70 №2487574 
>>2487420
каждому свое
я вот читаю по диагонали чтобы понять основные принципы
а потом активно читаю чужой код и тем самым эти принципы вижу на деле
Аноним 13/10/22 Чтв 18:46:38 #71 №2487847 
Вот говорят, что сишарп кроссплатформенный, а на деле надо собирать проект на каждой платформе. На винде - это ехешник, а на линупсе - исполняемый стартер и dll-сборка с основным кодом. Просто скопировать файл и попытаться запустить не получится.
Аноним 13/10/22 Чтв 19:00:33 #72 №2487865 
>>2487847
Получится. Внимательнее перечитай документацию. dll-сборка и есть кроссплатформенная программа. Ты можешь запустить её командой наподобие dotnet <сборка>, которая на всех платформах есть. Если ты не собирал, разумеется под конкретную платформу, то сборка будет собрана в общем для всех платформ виде.
Аноним 13/10/22 Чтв 19:01:08 #73 №2487866 
изображение.png
Почему студия не скачивается?
Аноним 13/10/22 Чтв 19:04:44 #74 №2487871 
>>2487866
Скоро и дотнет отключат
Аноним 13/10/22 Чтв 19:21:12 #75 №2487887 
1665678068611.png
>>2487866
> Почему студия не скачивается?
Потому что ты - коллективно виноватый террорист.
Извините, не удержался. Не баньте, плиз.
Аноним 14/10/22 Птн 06:25:37 #76 №2488113 
>>2487866
впн требуют наши сердца
sage[mailto:sage] Аноним 14/10/22 Птн 07:45:38 #77 №2488130 
>>2487866
Потому что петушарп. А ты что думал? Пока ты нравишься майкрософту, петушарп для тебя опенсорс. А как только не понравишься - сразу делается проприетарным и ты не сможешь им пользоваться. Так и произошло в твоем случае - майкрософту не понравилась вся Россия. Кстати, петушарп ещё и кроссплатформенный - пока ты пользуешься шиндовсом. Как только ты переходишь на линукс или боже упаси пук оес, сразу он становишься намертво залоченным на платформу. Вот так гении майнрософты, что такую крутую систему придумали! Слава шарпу!
Аноним 14/10/22 Птн 08:13:11 #78 №2488136 
>>2488130
>Потому что петушарп.
Явадебил, спок. Язык, компилятор и дотнет никак не связаны с вижаком, можно хоть в блокноте писать. Если действительно блокнут вижак полностью для русни - это печально, но не критично, есть VS Code
Аноним 14/10/22 Птн 08:18:46 #79 №2488137 
>>2485049
Анон у меня такая же идея есть, го вместе пилить? Только без детского 2d, сразу в 3d на эллипсоиде.
Аноним 14/10/22 Птн 08:25:28 #80 №2488138 
>>2488136
>вижак полностью для русни
не локнут. как отличить то
Аноним 14/10/22 Птн 08:32:58 #81 №2488140 
>>2488130
Орнул. Джаву оракл еще в марте блокнул для рабсиян, жри стороннее говно непригодное к проду от openjdk или других хозяев (amazon, red hat, microsoft jdk внезапно)
Аноним 14/10/22 Птн 08:51:44 #82 №2488153 
>>2488136
Ещё можно райдер ломануть. Правда я не знаю как.
Аноним 14/10/22 Птн 09:30:41 #83 №2488175 
>>2488153
да вы замучили
вот поставлю райдер и проверю что там изменилось с прошлого раза
последний раз пробовал 2022 версию и все было ок
Аноним 14/10/22 Птн 09:57:32 #84 №2488191 
16578132809960.jpg
>>2487866
Реально забанили или он криворукий?
И что с нугетом?
Аноним 14/10/22 Птн 09:59:04 #85 №2488194 
>>2488191
обе догадки верны. он же шарпист )
с нугетом давно не пашет подсказки
а поиск вроде работает
Аноним 14/10/22 Птн 10:39:58 #86 №2488245 
>>2487866
Наверное потому что ты криворукий долбоеб.
Аноним 14/10/22 Птн 10:41:56 #87 №2488246 
>>2488191
У меня работает, но уже не в первый раз вижу посты, что у кого-то перестало качаться.
Аноним 14/10/22 Птн 11:51:46 #88 №2488307 
Ребят, где можно generic.xaml файлы с дефолтными шаблонами элементов от старых сдк скачать?
Аноним 14/10/22 Птн 11:58:28 #89 №2488314 
Когда переведут новую книгу Фримена на русский? Текущая по старой версии ASP.NET 2.0 и это даже не LTS, в итоге ни один пример уже не компилируется.
https://youtu.be/BG4nnMR7uTs
Аноним 14/10/22 Птн 12:07:56 #90 №2488320 
>>2488191
Можно ли пользоваться нугетом через вс код?
Аноним 14/10/22 Птн 12:58:20 #91 №2488360 
>>2488314
Просто в яндексе открой и в контекстном меню вруби перевод. Это не реклама, это суровая реальность на личном опыте. Яндекс теперь не вредоносный рекламный браузер, ставящийся вместе с левыми прогами, теперь это полноценная замена гуглу с хромом.
Аноним 14/10/22 Птн 12:58:57 #92 №2488362 
>>2488320
Анонимус разрешает.
Аноним 14/10/22 Птн 13:11:18 #93 №2488374 
>>2488314
А в чем проблема взять эти примеры и доработать так чтобы они запускались?
Аноним 14/10/22 Птн 13:27:51 #94 №2488388 
>>2488374
Проблема в непонимании основ. Новичок читает и не знает почему это пишется именно так, а не иначе. Соответственно, у него нет знаний, как доработать, если оно не работает.
Аноним 14/10/22 Птн 13:37:40 #95 №2488392 
Пацаны, помогите, кто-нибудь знает как в linq2db сделать так чтобы при сравнении е было равно ё и это всё нормально парсилось в запрос?
Аноним 14/10/22 Птн 13:41:51 #96 №2488398 
>>2488388
>Соответственно, у него нет знаний, как доработать, если оно не работает.
А, ну точно. Я и забыл, что сейчас 2K22-й год на дворе. Интернета нормального нет, дополнительную информацию посмотреть негде. Да и компиляторы до сих пор дубовые, в сообщениях об ошибках никакой информации нет. А до изобретения онлайн переводчиков еще лет 10 наверное.

А если без сарказма.
Самые основы учатся по другим книжкам.
Основы ASP-а?
Ну запустил ты пример из книги - не запускается. Прочитал сообщение об ошибке. Не понял - загуглил, почитал сопутствующие материалы. Не получилось. Открыл английский вариант книги и посмотрел тот же пример - сравнили на разницу. Что непонятно - перевел (со словарем хотя бы).
За пару часов такой возни опыта и знаний наберешь больше, чем за несколько дней копирования работающих примеров из книжки.
Аноним 14/10/22 Птн 14:04:19 #97 №2488427 
>>2488392
Сделай экстеншен который будет заменять все Ё на Е, в строках и сравнивай сколько хочешь (по аналогии с ToUpper или ToLower).
К сожалению в CultureInfo "ru-RU" нет эквивалента для этих букв.
Аноним 14/10/22 Птн 14:09:04 #98 №2488434 
image.png
>>2488427
Ну тут проблема в том что я могу преобразовывать только искомую фразу иначе не спарсится, а в бд эти данные могут быть в какому угодно виде там могут быть как е так и ё и всё в кучу, и вот что делать в такой ситуации непонятно, я решил пикрил попробовать
Аноним 14/10/22 Птн 14:11:38 #99 №2488439 
>>2488434
Можешь попробовать в самой БД сконфигурировать, чтобы в запросах эти буквы считались эквивалентными.
Вот например для постгреса из доков:
https://www.postgresql.org/docs/current/unaccent.html
Аноним 14/10/22 Птн 14:12:36 #100 №2488441 
>>2488439
Я думаю меня нахуй пошлют с таким запросом слишком всеобъемлющее изменение будет по сути, но за инфу что так можно спасибо
Аноним 14/10/22 Птн 14:17:46 #101 №2488446 
>>2488398
Хоть сарказм, хоть не сарказм, а многими уже подтверждаются печальные наблюдения о том, что чем больше доступ к знаниям, тем больше людям на знания похуй. Кого ты собрался заставлять читать книжки? Клиповых зумеров?
Аноним 14/10/22 Птн 14:22:32 #102 №2488448 
>>2488441
>но за инфу что так можно спасибо
Есть еще такие приколы, что в БД (например MySQL) такое может быть по умолчанию включено.
Аноним 14/10/22 Птн 14:35:50 #103 №2488458 
>>2488446
Сейчас ещё ковид сильно ударил по мозгам и учиться в разы тяжелее. Зумерам как раз ещё не так сложно, а вот кому за 30, уже не так легко.
Аноним 14/10/22 Птн 14:39:18 #104 №2488466 
>>2488458
Эх, да. Бывает сяду с книжкой и уже на второй странице засыпаю. А с аудиокнижкой - на первой, под бубнёж.
Аноним 14/10/22 Птн 15:09:26 #105 №2488534 
>>2488458
Так не будь за 30. Будет легко
Вечно проблемы находите
Аноним 14/10/22 Птн 15:45:39 #106 №2488617 
>>2488458
>за 30, уже не так легко.
Забавно такие рассуждения слушать когда тебе уже за 40 и никаких проблем с освоением этой мути не ощущаешь.
Дело не в возрасте, а образе жизни. И да ковидом я тоже болел, чуть легкие не выплюнул.
Аноним 14/10/22 Птн 15:52:08 #107 №2488627 
>>2488617
Да у тебя ковид ударил по легким, а меня по мозгам
Аноним 14/10/22 Птн 16:04:12 #108 №2488644 
А я просто дебил, без всякого ковида.
Аноним 14/10/22 Птн 18:25:37 #109 №2488854 
>>2488245
Допустим, но какое отношение это имеет к студии, которая без костылей должна устанавливаться через официальный сайт, через официальный инсталлятор? Я знаю, что нужен впн, но какое это отношение имеет к моей криворукости?
Аноним 14/10/22 Птн 18:31:46 #110 №2488867 
прямо сейчас VS 2022 качается без VPN
Аноним 14/10/22 Птн 19:00:46 #111 №2488914 
Зачем вы срете в треде каждого ЯПа?
Аноним 14/10/22 Птн 19:07:01 #112 №2488919 
>>2488914
кто мы, дебич?
Аноним 14/10/22 Птн 19:11:39 #113 №2488928 
>>2488854
>но какое это отношение имеет к моей криворукости?
Такое, что это давно известная проблема решаемая за пару минут. И она никак не связана с блокировками ни с той ни с этой стороны.
Просто каждый такой долбоеб вместо того, чтобы просто погуглить и решить ее самостоятельно, тут же бежит во все профильные темы и начинает срать в духе "У-у-у, майкрософт заблокировала Россию, всему пизда".
Аноним 14/10/22 Птн 19:48:46 #114 №2488959 
В uwp/winui3 завезли врап панель с виртуализацией? А то для впф нужно было качать мокропиську с гитхаба.
Аноним 14/10/22 Птн 20:04:58 #115 №2488970 
>>2488959
Там вообще врап панели из коробки нету
Аноним 14/10/22 Птн 20:25:01 #116 №2488992 
>>2488928
>Такое, что это давно известная проблема решаемая за пару минут.
А ну расскажи решение
Аноним 14/10/22 Птн 20:25:35 #117 №2488994 
Стоит ли учиться писать код в VS Code? Или всё равно потом заставят писать в вижле/райдере?
Аноним 14/10/22 Птн 20:31:37 #118 №2489001 
>>2488994

В смысле учится писать? Установил, поставил нужные дополнения и пишешь. Нихуя учится не надо, если обладаешь знаниями выше дауна копирайтера
Аноним 14/10/22 Птн 20:32:50 #119 №2489003 
>>2489001
Как работать с гiтом?
Аноним 14/10/22 Птн 20:39:35 #120 №2489009 
>>2489003

В смысле как ? Вася... Просто ставишь нужное расширение и всё. В расширение описаны минимальные команды как да и что. Любой пенёк разберётся
Аноним 14/10/22 Птн 21:01:51 #121 №2489016 
>>2489003
Учишь десяток команд гита и работаешь.
Аноним 14/10/22 Птн 21:08:01 #122 №2489022 
>>2489016
да. попутно правда раз МНОГО угробишь все, но то такое.
Аноним 14/10/22 Птн 21:22:38 #123 №2489028 
>>2489022
Насколько руки должны быть из жопы, чтобы с примитивным гитом всё угробить? В начале, правда, не стоит баловаться с ребейзами, но всё необходимое учится за вечер.
Аноним 14/10/22 Птн 22:07:11 #124 №2489059 
>>2489028
спроси это у тех, кто пишет тысячи статей "как в гит сделать это и не сломать".
Аноним 14/10/22 Птн 22:09:17 #125 №2489062 
>>2489059
Да, тысячи статей с простыми и понятными рекомендациями, всё давно разжёвано и быстро изучается.
Аноним 14/10/22 Птн 22:16:14 #126 №2489066 
>>2489062
Ага. и финальная рекомендация - если что, то удалите репу и склонируйте заново.
Аноним 14/10/22 Птн 22:28:44 #127 №2489075 
>>2489066
Такая рекомендация даётся только в мемасах уровня пикабу. Даже если настал совсем пиздец, на stackoverflow легко найти, как в пару команд всё починить.
Аноним 14/10/22 Птн 22:36:05 #128 №2489081 
Capture.JPG
шарпач спасай это что-то из новых версий языка? что он хочет этим сказать? { get { return false; } }?
Аноним 14/10/22 Птн 22:39:13 #129 №2489085 
Привет, аноны, я школьник 11 класс увлекался фронтэндом, думал поступлю в универ, найду работу, но случился какой то пиздец и на вакансию стало откликаться по пол тыщи человек. Хочу теперь попробовать c#, подскажите много ли сейчас работы и как сложно на нее попасть, заранее спасибо.
Аноним 14/10/22 Птн 22:45:12 #130 №2489086 
>>2489081
Да
Аноним 14/10/22 Птн 23:12:04 #131 №2489100 
>>2489086
спасибо
Аноним 14/10/22 Птн 23:34:41 #132 №2489123 
почему ньюфаги такие тупые? хоспади, дай мне сил не начать охуяривать тупость-хуюпость ньюфагов-хуягов!
Аноним 14/10/22 Птн 23:37:38 #133 №2489126 
>>2489123
Ты сам когда-то был тупым нюфагом. Уже позабыл?
Аноним 15/10/22 Суб 00:05:04 #134 №2489140 
2022-10-1423-53-32.png
У меня есть базовый стиль WPF. Скрин и код прилагаются:
https://pastebin.com/0TTmUVP8

В этом стиле есть Grid, внутри которого три векторных контура Path. А еще есть стиль-наследник, смысл которого — менять данные этих патчей. Но как это сделать?

Я пытался по TargetName перезаписать, но мне дает отказ.
Ошибка: свойство TargetName не может быть задано для типа Style Setter.
Аноним 15/10/22 Суб 00:07:51 #135 №2489142 
>>2489085
Нигде сейчас не легко. А где легко — на всех не хватит.
Аноним 15/10/22 Суб 00:39:00 #136 №2489150 
>>2489140
Сделай кустомный контрол на основе шаблона, который наследуется от контент контрола, добавь в этот контрол 3 свойства BoundingPath, FillShapePath и StrokeShapePath, потом в шаблоне <Path x:Name="bounding" Data="{TemplateBinding BoundingPath}". Потом сможешь менять <Setter Property="BoundingPath" Value="M0 20,0 20,20 0,20" />
Аноним 15/10/22 Суб 00:41:23 #137 №2489151 
>>2489150
потом в шаблоне Path x:Name="bounding" Data="{TemplateBinding BoundingPath}"
Через стиль можно будет менять Property="BoundingPath" Value="M0 20,0 20,20 0,20"
Аноним 15/10/22 Суб 00:47:22 #138 №2489152 
>>2489150
>>2489151
А, я понял. Но кастомный контрол делается только через код шарпа?
Аноним 15/10/22 Суб 00:50:44 #139 №2489153 
Нахуй эта ебля с WTF, если винформы простые и понятные.
Аноним 15/10/22 Суб 01:03:02 #140 №2489154 
>>2489152
Ну в коде просто три депенденси проперти добавишь и всё, всё остальное уже в темплейте
Аноним 15/10/22 Суб 01:06:51 #141 №2489155 
Стикер
>>2489153
Возможностей нуль. Это я как десигнер говорю.
Сначала тоже плевался, а потом как понял.

А перешел буквально из-за одного недостатка — контроль прозрачности. На винформсах можно установить главному окну общий процент прозрачности, но нельзя сделать прозрачность по маске
<— типа как этот стикер.

У меня щас весь интерфейс векторный, и минимум растра. Можно применять матрицу трансформаций и делать масштабируемую и адаптивную годноту. Единственная беда — это попиксельная работа с растром, т.к. либа есть только на винформсах.
Аноним 15/10/22 Суб 01:16:07 #142 №2489158 
>>2489154
Ну да, я так и представил. Даже если бы и была возможность, то не хотел бы о ней знать т.к. там 100% была бы простыня из тэгов.

Че меня дико бесит, это отсутствие возможности написать так:
<Setter.Value.Viewbox.Grid>
...
</>


вместо
<Setter.Value>
<DataTemplate>
<Viewbox >
<Grid>
...
</Grid>
</Viewbox>
</DataTemplate>
</Setter.Value>
Аноним 15/10/22 Суб 03:45:27 #143 №2489179 
>>2489150
>>2489151
Неееет, зачем я заговорил про простыню кода?
Короче, сделал я кастомный класс со свойствами, начал в стиле менять свойства. Приехали:

Error XDG0041 : The "Date" property is not a DependencyProperty. To be usable in tags, unattached properties must be visible on the target type with an accessible instance property "BorderBrushB". For joined properties, the declared type must provide the static methods "GetDate" and "SetDate".

ОшибкаXDG0041Свойство "BorderBrushB" не является свойством DependencyProperty. Для использования в разметке неприсоединенные свойства необходимо предоставить целевому типу с доступным свойством экземпляра "BorderBrushB". Для присоединенных свойств в объявляющем типе должны быть представлены статические методы "GetBorderBrushB" и "SetBorderBrushB".
Аноним 15/10/22 Суб 09:39:06 #144 №2489196 
Почему перестали переводить книги по сишарпу?
Аноним 15/10/22 Суб 10:25:09 #145 №2489213 
>>2489196
Потому что сотрудничать с издательствами страны-террориста очень чревато последствиями
Аноним 15/10/22 Суб 11:15:31 #146 №2489222 
>>2489142
ну а куда хоть устроиться можно будет, просто такое ощущение что в фронтэнд и qa вообще не реально на джуна устроиться
Аноним 15/10/22 Суб 11:45:42 #147 №2489231 
>>2489213
Но ведь переводы делало издательство Диалектика, Куiв
Аноним 15/10/22 Суб 11:45:49 #148 №2489232 
>>2489222
>ну а куда хоть устроиться можно будет
Да хоть кассиром, твое дело щас максимально набираться знаний. Если ты в душе не красноглазик, то становись в очередь мечтающих об успешном успехе.

Ты еще первый курс не прошел, ахахаха!
Аноним 15/10/22 Суб 11:47:29 #149 №2489233 
Программисты не нужны.webm
>>2489085
Аноним 15/10/22 Суб 11:50:44 #150 №2489234 
>>2489231
Нахер ты кормишь политического шизоида? Они и так срут во всех тредах.

На мой взгляд причины три:
- появились интернеты
- появились переводчики
- появилась мнение, что погромист обязан знать инглиш
Если раньше узкоспециализированная литература была мало популярна, то сейчас наверно вообще не рентабельна.
Аноним 15/10/22 Суб 11:51:31 #151 №2489236 
>>2489222
На джуна +- везде не просто попасть, либо оверхайп js, python, либо меньше хайпа (c#, java, go) но порог вхождения повыше.
Если уже фронт знаешь, норм варианты:
1. Дожать фронт: норм выучить react, angular, vue. К ним TS, redux`ы эти, router`ы под фреймворк, найди roadmap`у просто.
Как по мне, лучше взять angular, там TS, не смешаный в кашу HTML и JS, state легче сделан и меньше магии.
А там уже можно и перекатиться на react/vue

2. Взять бек, можно шарпы. Нужные знания фронта у тебя есть.
Сначала сами шарпы: ulearn.me
Потом ASP.NET Core, делаешь проекты WebApi, на RazorPages.
Норм каналы Platinum DEV (плейлист WebApi .NET5), Sergei Calabonga (там и сам шарп, aspnet проекты, и околошарповые темы),
Потом уже: Роман Сакутин (не курсы, а критика кода), Nick Chapsas, RadioDotNet.

А так, тупа пиши код. На любом языке, в любом направлении, желательно часто. Главное чтобы нравилось.
Посмотри на Desktop, Web, игры, написание ботов, тестирование.
Тут проекты какие-то https://eax.me/programming-language-learning/

Главное не отвлекайся на бред типо: каждый прогер должен знать Linux, C\C++, на память все алгоритмы, паттерны, железо, память.
Тут либо сам потом дойдешь, либо и вовсе не нужно будет.
Аноним 15/10/22 Суб 11:53:16 #152 №2489237 
>>2489233
Почему тогда у него одних джавистов работает несколько тысяч? Найс из контекста вырезал
Аноним 15/10/22 Суб 11:53:55 #153 №2489238 
>>2489236
>Роман Сакутин
Фу, это вообще противный чел. Весь в наколках как тюремщик и ещё выделывается на пустом месте, что он дофига великий программист и создатель курсов, а все остальные тупые.
Аноним 15/10/22 Суб 11:56:20 #154 №2489239 
>>2489234
Я за два дня только 8 страниц смог прочитать на твоём этом инглише. И то это введение. А в книге как бы 1300 страниц.
Аноним 15/10/22 Суб 11:58:01 #155 №2489240 
>>2489126
> Ты сам когда-то был тупым нюфагом. Уже позабыл?
Когда я был ньюфагом меня обзывали тупым тогдашние олдфаги, которые когда-то были ньюфагами и их обзывали тупыми праолдфаги, которые...
Аноним 15/10/22 Суб 11:58:34 #156 №2489242 
>>2489237
Скоро начнут сокращать. Новых точно уже не нужно.
Аноним 15/10/22 Суб 12:57:14 #157 №2489278 
>>2489236
Спасибо анон, я и сам смотреть начал в c#, но как то посмотрел что на нем пишут и вообще запутался там и игры и бек и еще лабудень какая то. Спасибо что каналы хорошие подсказал, а то обычно все что ютуб или гугл выдает это инфоцыган, которые учат хело ворлд печатать. Надесю справлюсь с обучением и смогу куда нибдуь на работу залететь.
Аноним 15/10/22 Суб 13:04:45 #158 №2489281 
image.png
image.png
image.png
>>2489179
Аноним 15/10/22 Суб 13:51:36 #159 №2489292 
2022-10-1513-48-41.png
2022-10-1513-44-53.png
>>2489281
Да, спасибо. Сегодня до шести утра сидел и практически методом тыка добрался. Щас ебался с переопределением дефолтных свойств.

Меня бесит какая-то неоднозначность.
Вот я регистрирую свойство зависимости для SolidColorBrush, и там PropertyMetadata можно не указывать (пикрил 1)
https://pastebin.com/2wfX6rh1

И у меня нормально отрабатывает свойство "MyBrush". Но в случае с Path (Geometry, не суть), оно не хочет срабатывать.
Мне приходится юзать PropertyMetadata с ссылкой на метод, который перезаписывает свойство (пикрил 2)
https://pastebin.com/NU1MnKE1
Аноним 15/10/22 Суб 14:14:25 #160 №2489298 
Есть файловый проводник Files, весьма известный, написан на C# + WinUI 3, так вот, он в сравнении со стандартным довольно тормозной. Анимации, загрузка миниатюр и тд, всё слегка подлагивает. Это вина говнокода, или в принципе шарп не может обеспечить должную скорость?
sage[mailto:sage] Аноним 15/10/22 Суб 14:36:40 #161 №2489303 
image.png
>>2489298
>Это вина говнокода
Да
>или в принципе шарп не может обеспечить должную скорость
Может, C# является тир-2 языком по скорости после C++ не знаю на счет Rust. C# в последние версии нереально бустят по скорости. Вот пример на скрине новый linq, как видишь скорость в сотни раз быстрее, а аллокаций памяти вообще нет, всё дело в программисте, а не в языке. Даже пайтон можно разогнать, где-то видос видел, добавляли jit
Аноним 15/10/22 Суб 14:42:22 #162 №2489305 
>>2489292
Кажется понял в чем причина, но не понял как это работает.

В свойствах срабатывает SetValue DependecyProperty, кисть действительно назначается. Я панели свойств элемента я вижу, что кисть изменилась.
Но весь остальной код, что находится внутри кавычек Set — игнорируется. Для выполнения дополнительной логики, нужно юзать PropertyMetadata.

Как это работает — хз.
Аноним 15/10/22 Суб 14:45:50 #163 №2489307 
>>2489303
>где-то видос видел
Я бы не стал доверять современным замерщикам скорости. Был же недавно скандал, когда ради гонки показателей получилось так, что сервер выдавал ответов больше, чем приходило запросов.
Аноним 15/10/22 Суб 14:46:07 #164 №2489308 
Кто нибудь из треда релоцировался после февраля с одними шарпами?
sage[mailto:sage] Аноним 15/10/22 Суб 15:02:32 #165 №2489312 
>>2489308
>с одними шарпами
Такие не нужны. У тебя 2 стула будучи на .NET:
1. .NET + html + css + js/ts
2. .NET + C/C++
Аноним 15/10/22 Суб 15:03:37 #166 №2489313 
>>2489312
А есть вариант: ASP.NET + Blazor?
sage[mailto:sage] Аноним 15/10/22 Суб 15:04:54 #167 №2489314 
>>2489313
Есть само собой. Но ты обязан быть фуллстеком чтобы релоцироваться, даже если будешь писать чисто бэкенд
Аноним 15/10/22 Суб 15:06:30 #168 №2489316 
>>2489312
Ожидаемо. Единственный знакомый работяга улетел в июне, но судя по линкеду ему пришлось свитчнуться на другой стек
Аноним 15/10/22 Суб 15:21:38 #169 №2489327 
>>2489313
>Blazor
кал
Аноним 15/10/22 Суб 15:31:58 #170 №2489333 
>>2489303
> пик
Сравнивать скорость на сотне элементов это смешно просто. Хотя бы миллион надо.
Аноним 15/10/22 Суб 16:09:55 #171 №2489369 
>>2489333
А какая разница
Без материализующих шагов потребление памяти (а именно оверхед) хоть на 1 миллионе, хоть на бесконечности - одинаковое
Аноним 15/10/22 Суб 19:29:10 #172 №2489503 
>>2489307
>Был же недавно скандал, когда ради гонки показателей получилось так, что сервер выдавал ответов больше, чем приходило запросов.
что за скандал
Аноним 15/10/22 Суб 21:00:18 #173 №2489545 
Screenshot4.png
>>2489303
Эталоном считается benchmarks game. Просто потому что он самый известный бенчмарк. компиляторов
Аноним 15/10/22 Суб 22:46:26 #174 №2489600 
>>2489281
А ты случайно не знаешь как снять регистрацию с депендеси проперти? Ну вот допустим у класса есть по-умолчанию свойство Background, а в моем элементе это сбивает с толку, мне нужно свойство Fill.
Аноним 15/10/22 Суб 23:01:34 #175 №2489609 
2022-10-1522-57-52.png
photo2022-07-1909-04-48.jpg
2022-10-1523-00-36.png
2022-10-1523-00-46.png
>>2489503
Аноним 16/10/22 Вск 08:15:59 #176 №2489741 
pidor.jpg
>>2484368 (OP)
Что за ошибка?
Аноним 16/10/22 Вск 08:40:37 #177 №2489742 
>>2489741
Не записался в свое время на курсы английского языка
А теперь всё - только на завод работать
Аноним 16/10/22 Вск 08:42:22 #178 №2489744 
>>2489742
У нас нет заводов с 1992 года
Аноним 16/10/22 Вск 09:12:34 #179 №2489754 
Все таки в шарпе хороший рантайм, но выразительность так себе.
Когда портируешь с питона или котлина прямо таки чувствуешь что тебя ограничивают.

Или вообще WTF
вот сейчас столкнулся что yield return не может быть в try/catch
ШТА? 22 год на дворе и не нашли время это пофиксить? Невозможно это сделать? А почему питон может?

Не пишите на выразительных языках, а то потом на шарпе будете страдать.
Аноним 16/10/22 Вск 09:26:16 #180 №2489760 
>>2489754
Мне бы твои проблемы
джавист на 11 жабе мечтающий свитчнуться на шарп
Аноним 16/10/22 Вск 09:51:47 #181 №2489782 
>>2489760
так они у тебя и есть - мои проблемы.
ты страдаешь от недостатка выразительности языка и вынужден городить многословные костыли зная о том, что бывает проще.
Аноним 16/10/22 Вск 11:24:40 #182 №2489821 
>>2489545
Блть, паскаль, ты чего? Ты же был быстрым, паскаль?
Аноним 16/10/22 Вск 11:47:09 #183 №2489831 
>>2489741
бамп
Аноним 16/10/22 Вск 11:52:02 #184 №2489834 
Безымянный.png
>>2489831
Чо бамп? Ты имя свойства неправильно написал.
Пользуйся подсказками студии.
Аноним 16/10/22 Вск 11:57:55 #185 №2489840 
>>2489834
Охренеть, добра и отсрочки
Аноним 16/10/22 Вск 12:01:55 #186 №2489844 
>>2489840
охренеть что когда я тебе намекнул на англ язику
ты до сих пор сидел и не понимал что сделать
Аноним 16/10/22 Вск 12:08:01 #187 №2489850 
>>2489844
Если писать как анон, то получится латынь
statci vodi Mani (strign[] arsg)
Аноним 16/10/22 Вск 12:34:40 #188 №2489864 
Привет аноны, хочу начать учить шарп, посоветуйте хорошие курсы или книги.
Аноним 16/10/22 Вск 12:43:07 #189 №2489868 
Вот как то развитие идет хз каким путем. Поправьте если не так.

Вот накидали в язык async/await
А async примитивы где? Где нормальный асинксемафор? где AsyncReaderWriterLock? и так далее.
1 сделали цикл статей на мсдн как можно сделать самому.
2 ну ладно есть либа AsyncEx, но
а) она сторонняя
б) автор себе на уме - например, в том же AsyncReaderWriterLock он убрал возможность апгрейда лока, мол НИНУЖНА
в) медленная так то
3 ага. есть Microsoft.VisualStudio.Threading - но опять же, это просто пакет в нугет и даже из названия следует, что они писали для личных нужд.

Далее....есть такая штука как контракт кода.
вот в котлине есть всякие reqiure/check на уровне основного синтаксиса. А в шарпе что? А в шарпе жопа

1 всякие Guard для проверки входных параметров - но по факту это велосипеды. Где стандартное решение?

2 Debug.Assert...но он кстати не кидает исключение сам по себе. Не знали? Вот и я офигел когда привык что в винформсах он мессаджбок выбросит, а в консольке (и даже в WPF, хотя типа должен) код просто пойдет дальше

3 Родили как то CodeContract. Идея правильная, даже во фреймворке много где юзали. Но в итоге решили - это вам не нужно и херакс

"Контракты кода не поддерживаются в .NET 5 + (включая версии .NET Core). Вместо этого рекомендуется использовать Ссылочные типы, допускающие значения NULL ."

Бл... Это же частный случай контракта. Это как говорить "вместо борща иди погрызи шкурку от картошки".

Ну они все равно внесли, но "мы не поддерживаем и не рекомендуем"

При этом сами такие без трусов и с крестиком - для себя запилили Microsoft.VisualStudio.Validation, который тот же контракт, только в профиль и "ну это мы для себя такие, а вам нирикаминдуем, вот".

>>2489864
не нужно оно тебе. береги нервы
в
Аноним 16/10/22 Вск 12:49:47 #190 №2489872 
>>2489868
почему ненужно? Все равно нужно же что то учить в универе.
Аноним 16/10/22 Вск 12:53:33 #191 №2489873 
>>2489872
тогда почему именно шарп? Будешь работать шарпистом?
Аноним 16/10/22 Вск 12:55:29 #192 №2489874 
>>2489864
The c# player's guide, который с 6 дотнетом
Вообще надо вернуть книги в шапку, в старых тредах были
Аноним 16/10/22 Вск 13:00:48 #193 №2489879 
>>2489873
да я свои школьные гощды на js быдлокодил, теперь хочется что то серьезное посмотреть, может потом и буду каким нибудь фулстеком работать, не знаю пока
Аноним 16/10/22 Вск 13:01:17 #194 №2489880 
>>2489864
Троеллсен, как раз недавно на русик перевели новую книгу для 5 нета.
Аноним 16/10/22 Вск 13:21:07 #195 №2489885 
>>2489868
Додич, иди нахуй.
Вся хуйня, что ты описал (пожалуй кроме ненужного AsyncReaderWriterLock) тебе жопу печет только потому, что ты додич.
Не думал, что я буду это говорить в контексте C# и .Net ибо их и так ругают за перегруженность, но есть хорошие либы, которые это все решают без лишних напрягов. И есть уже даже "стандартным решением".
То, чт оты боишься добакить пакет, который начниается не с "Microsoft" - твои анальные проблемы.
Аноним 16/10/22 Вск 13:54:20 #196 №2489890 
>>2489885
а ну обоснуй мне ненужность асинк примитивов
Ну или сам иди нахуй
Как можно обойтись без них? Разработчики визуал студии вот не обошлись например. Видать не понимают как ты. Так просвети

>но есть хорошие либы
они всегда есть. Однако почему то мелкософт решил выдать свой DI контейнер, а не использовать один из 100500 готовых. Причем любой другой лучше мелкософтовского, но есть нюанс)

> который начниается не с "Microsoft"
Вообще то пакеты начинаются как раз с мелкософт.
просто они написаны ДЛЯ СЕБЯ. - в частности там есть штуки которые нужны для разработки расширений к студии, а в валидации писало "тут проблема контракта обратитесь в мелкософт".
Аноним 16/10/22 Вск 14:01:30 #197 №2489894 
>>2489885
Поясню подробнее для додика

Я не говорю про специфические вещи типа DataFlow
Я говорю про БАЗОВЫЕ примитивы. Которые нужны буквально всем, кто не формошлеп и использует async.
Хотя те же Channel были отдельно, а теперь стали частью.
А примитивы где? - ищи среди велосипедов
Аноним 16/10/22 Вск 14:02:47 #198 №2489895 
изображение.png
Ебучие макаки, и как только раньше жили без этих двух невероятно нужных апи
> XAML islands was a technology preview and didn't support high-DPI, DPI changes, or accessibility in 1809. We rely on them heavily.
> 1903 added support for side-by-side WinRT component activation, something deep in the COM stack that lets us find our DLLs when they're right next to our EXE
Аноним 16/10/22 Вск 16:48:08 #199 №2489972 
изображение.png
>>2489303
>Да
А вот в DevExpress считают иначе. На пике их сравнение производительности нового Winui 3 и старого доброго wpf.
Аноним 16/10/22 Вск 16:59:20 #200 №2489980 
>>2489890
>а ну обоснуй мне ненужность асинк примитивов
А примитивы где? - ищи среди велосипедов
>СемафорСлим юзай и не выебуйся.

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

>Вообще то пакеты начинаются как раз с мелкософт.
Ты хуйню какаую-то выбрал. Никто по-хорошему сейчас ни майкрософт асерты не юзает ни ту твою вторую дичь.
Аноним 16/10/22 Вск 17:58:51 #201 №2490012 
>>2489239
Читай дальше, выучишь англ хотя бы до А2
Аноним 16/10/22 Вск 17:59:31 #202 №2490014 
>>2489972
А я до сего момента считал WPF тормозным кошмаром (заслуженно). Лишнее подтверждение истины, что у дна не бывает дна, всегда есть куда падать.
Аноним 16/10/22 Вск 18:40:37 #203 №2490054 
>>2489980
>СемафорСлим юзай и не выебуйся.
интересно зачем существует ReaderWriterLock, если "все можно через семафор"? или все же не все....
Можешь не отвечать, я понял что примера замены я не увижу.Ну или ты создашь через семафор свой ReaderWriterLock - ну это и я умею, просто это ЛИСАПЕД

>Ну так сиди и не бухти
схера ли. имею полное право иметь свое мнение и критиковать что угодно. Как ты вот щас критикуешь мое право критиковать.

>Пусть лучше корными вещами занимаются
лол. примитивы синхронизации - куда уж корнее.

>Ты хуйню какаую-то выбрал
что было то и выбрал. выбор или лисапед или "от мелких"
как раз именно ИХ они и юзают. Именно их они и создали для того, чтобы юзать. Или визуал студию уже не мелкие разрабатывают?
Аноним 16/10/22 Вск 19:26:42 #204 №2490086 
>>2489821
Может ты его с GNU Pascal перепутал?

Free Pascal это диалект Object Pascal со своим компилятором. У него бекенд не GCC и не LLVM как я понимаю.
Аноним 17/10/22 Пнд 04:22:07 #205 №2490306 
изображение.png
Это вообще хуйня? Чувствую, что тут нужно паттерн использовать, но я за них даже ещё не брался...
Аноним 17/10/22 Пнд 04:24:56 #206 №2490307 
>>2490306
Просто не надо всё писать в одну строчку.
Аноним 17/10/22 Пнд 04:27:03 #207 №2490308 
>>2490307
Тогда наделать экземпляров? Я просто снихуя решил, что они глаза мозолят и будет круче всё в одну строку написать
Аноним 17/10/22 Пнд 04:42:09 #208 №2490309 
>>2489821
Это тест компиляторов (времени компиляции), а не работы собранного кода. Паскаль конечно наравне с си/крестами.
Аноним 17/10/22 Пнд 06:22:58 #209 №2490317 
>>2490309
> Это тест компиляторов (времени компиляции)
Что за бред, тогда кресты были бы в самом конце.
Аноним 17/10/22 Пнд 08:46:08 #210 №2490324 
>>2490317
Фиг знает, написано под спойлером. Я исходил из того, что если предположить что это тест программ, тогда получается гораздо больший бред. На графике все примерно одинаковые, наибольшая разница всего в 3 раза, хотя реальная в сотни раз.
Аноним 17/10/22 Пнд 10:35:01 #211 №2490353 
У всех нормально обновляется студия? Сегодня час думала и высрала ошибку сети.

При этом фоновая интеллектуальная служба BITS на 40% систему (и начинает грузить аж на старте системы).
Аноним 17/10/22 Пнд 10:36:38 #212 №2490354 
>>2490353
после добавления ip в впн - да
Аноним 17/10/22 Пнд 10:39:31 #213 №2490356 
>>2489868
>2 Debug.Assert...но он кстати не кидает исключение сам по себе. Не знали? Вот и я офигел когда привык что в винформсах он мессаджбок выбросит, а в консольке (и даже в WPF, хотя типа должен) код просто пойдет дальше

Надо подписаться на событие необрабатываемых исключений. Я к этому привык, когда делал плагин, иначе из-за исключения крашит программу-родителя.
Аноним 17/10/22 Пнд 10:46:19 #214 №2490361 
>>2490356
Ты понял неправильно. Нет никаких исключений.
Если ты ожидаешь, что в этом месте выполнение остановится ибо полетит исключение, то тебя ждет сюрприз.
Debug.Assert просто срет в слушателей (а это по дефолту output) и всё - то есть эквивалентен Debug.WriteLine('Alarm')

И нужно добавлять Listener, который бросит исключение, тем самым реально прервав выполнение.

Лучше бы он делал это по дефолту (с возможностью отключения), а не приходилось делать доп шаги
Аноним 17/10/22 Пнд 10:59:19 #215 №2490366 
>>2490361
А, я нафаня — этим не пользовался.
Я try cath юзаю и Debug.WriteLine

И вообще написал функцию записи всех логов в текстовый файл. Хз как сделать так, чтобы был доступен аутпут для проверки библиотек, а точнее чтобы сторонняя программа загружала мою библиотеку, которая бы срала в окно интерпретации студии.
Аноним 17/10/22 Пнд 11:01:50 #216 №2490369 
>>2490361
>>2490366
Хотя чисто логически, ассерт не должен останавливать программу, он же просто выдает сообщение при неком условии. Это не трай кетч. Не знаю чего ты ожидал от него.
Аноним 17/10/22 Пнд 11:23:11 #217 №2490380 
>>2490366
Задача ассерта -проверить инвариант что все верно в данный момент и fail-fast с диким ором делать (по идее). В релизе будет вырезано чтобы не тормозить. А твой try..catch это ну "логгер ошибок" разве что.

>>2490369
>Хотя чисто логически, ассерт не должен останавливать программу
чисто логически должен. assert проверяет корректность выполнения
и если проверка провалилась, то дальше выполнять нельзя

в других языках ведет себя ожидаемо - генерит исключения. И в реализации код контракта тоже исключения. И в валидации от мелких - тоже

для чисто вывода в аутпут и так есть Debug.WriteLine,

просто реализован он через механизм листенеров (нет это не есть плохо) и для винформс этот листенер устанавливается ,а для впф почему то нет (а должен)
для консоли разумеется не устанавливается

но лучше бы устанавливался всегда
Аноним 17/10/22 Пнд 11:23:59 #218 №2490381 
>>2490377
Боюсь представить зачем он нужен, если ты не на галере. Возможно просто исследовал чужой элемент.
Аноним 17/10/22 Пнд 11:35:18 #219 №2490384 
>>2490377
> Растёшь
Просто Хач в недавнем видосе на ютубе сказал, что риоднли - это хорошо, и надо везде делать ридонли.

...Или это был не Хач? А, точно, это Сакутин так сказал.
Аноним 17/10/22 Пнд 11:35:29 #220 №2490385 
>>2490380
>assert проверяет корректность выполнения
и если проверка провалилась, то дальше выполнять нельзя
Кто сказал? А если это не критическая ошибка, а обычный ворнинг? Вариаций масса и если какая-то залупа вдруг взяла на себя право чет там завершать, то надо такую залупу давить сапогом. В документации написано:
>Проверяет условие. Если условие имеет значение false, выдается сообщение и отображается окно сообщения со стеком вызовов.
Если ты судишь по другим языкам, то штош, логика сишарпа меня устраивает больше.

>для чисто вывода в аутпут и так есть Debug.WriteLine
Но он без условия. У меня был случай, когда окно должно было закрываться при отсутствии связи с сервером. Но связь может разрываться как штатно, так и в случае ошибки на стороне сервера. И чтобы окно мне не срало лог при каждом штатном закрытии, я использовал if, хотя надо было assert. При этом выполнение остального кода должно было проходить в обычном режиме, потому что на стороне окна проблем нет.

А для прерывания обрабатывай исключения или сам указывай дальнейшие действия. Все логично.
Аноним 17/10/22 Пнд 11:38:23 #221 №2490388 
>>2490383
Да это я понял. Просто коллекция с запретом редактирвоания.
Только я не представляю случаев, в 98% мне именно что нужно редактировать коллекцию — в этом суть.
Аноним 17/10/22 Пнд 11:41:08 #222 №2490389 
>>2490387
>так как в IReadOnlyCollection можно завернуть любой массив
Чем тебе IEnumerable не устаривает? Это ведь тоже универсальная вещь.
Аноним 17/10/22 Пнд 11:50:04 #223 №2490390 
>>2490389
У этой абстракции 2 проблемы
1 нет признака конечности
2 нет размера.
Аноним 17/10/22 Пнд 11:54:00 #224 №2490393 
>>2490385
принимается.

Так то претензия не к ассерт у меня, а к тому что они похерили код контракт, а взамен предложили лютую дичь в виде nullable

assert поддерживают, но это не совсем то.
Аноним 17/10/22 Пнд 12:09:34 #225 №2490399 
>>2490353
У меня когда устанавливалась то половина файлов не установилась. ХЗ как работает щас, мелкософт в своём репертуаре что пиратка что с сайта всё один хуй у них
Аноним 17/10/22 Пнд 12:58:37 #226 №2490426 
Есть лист родительского типа, в который я запихиваю элементы побочных типов. И мне нужно сделать orderby этого листа по общему для всех параметру. Но если я его делаю, то элементы сортируются только внутри типа. То есть, сначала идут все элементы одного типа, отсортированные по полю, затем другого типа и так далее. А мне надо, чтобы они все перемешались и отсортировались по этому полю. Што делоть?
Аноним 17/10/22 Пнд 13:09:39 #227 №2490432 
>>2490377
То были эксперементы... А то, как я сейчас написал в100 раз легче, понятнее и тд. Я даже без особых проблем смог linq запрос сделать. Тупо по кайфу, тут я потратил часа 2, а там я дня два ебалася и в итоге все криво, хуево было
Аноним 17/10/22 Пнд 18:04:34 #228 №2490616 
>>2489545
Мда, и накуя го(вно)ланг нужен-то тогда…
Аноним 17/10/22 Пнд 18:28:10 #229 №2490638 
Для чего в WPF DesignHeight, если есть просто Height.
Аноним 17/10/22 Пнд 19:44:09 #230 №2490741 
>>2490638
Для дизайнера, очевидно же.
Аноним 17/10/22 Пнд 20:04:59 #231 №2490757 
>>2490741
Я дизайнер, зачем мне это?
Аноним 17/10/22 Пнд 20:07:56 #232 №2490762 
Я фотошоп, меня не обманешь.
Аноним 17/10/22 Пнд 20:26:52 #233 №2490788 
>>2490757
ты можешь знать свою высоту.
Аноним 17/10/22 Пнд 21:06:50 #234 №2490824 
>>2490788
Я могу узнать из Width или ActualWith
Аноним 17/10/22 Пнд 21:36:20 #235 №2490839 
>>2490387
>рассказывать "алгоритмы нинужны", "матиматика нинужна", "можна в экселе загребать бабулесики больше чем любой программист
А ты сможешь пояснить-то зачем они нужны.
Ну, давай. Какие задачи ты решал за пределами собеса, где тебе хоть раз пригодились алгоритмы.

Даже не так. Давай я тебе реальную задачу дам.
У тебя есть ARM32 битный одноядерный, 64MB оперативки, BusyBox, sqlite. Задача - опросить 256*x устройств по modbus и отдать данные в облако по какому-нибудь mqtt за максимально быстрое время.
Так вот. Это реальный кейс. Это кейс требующий производительности близкой к максимальной. Где ты тут будешь математику использовать? Какие алгоритмы применишь? Почему все что ты придумаешь, кроме очереди с приоритетом - говно?
Аноним 17/10/22 Пнд 21:39:23 #236 №2490844 
>>2490824
Хреновый тогда из тебя дизайнер

>>2490839
вот этот чел познал "дзен" - все в мире есть одна задача, других задач не бывает )
Аноним 17/10/22 Пнд 21:48:08 #237 №2490846 
>>2490393
Заебал ты уже своим код контрактом. Единственный плюс у него был, что он там что-то пытался в былд тайме проверить. Но это не нужно ибо все равно внешних данных больше.
Все остальное пишеться или самому в один файл в 100 строк, или есть хорошие готовые либы.
Либо можно угореть и запилить себе и код генерацию, и билд тайм чеки.
Встроеный в язык нул гард отменили кста
https://devblogs.microsoft.com/dotnet/early-peek-at-csharp-11-features/#c-11-preview-parameter-null-checking
Аноним 17/10/22 Пнд 21:48:28 #238 №2490847 
>>2490844
Так это задача требовательна к производительности, эта задача - требовательна к ресурсам. И при этом оно явно показывает, что ничего кроме умения обойти массив и в крайнем случае - использовать очередь с приоритетом - тебе нихуя в реальном мире и не надо.
Какие задачи средний шарпер-то решать будет? DTO'шку в базу загнать, да иногда что-то с xml поделать. Все это у тебя на стандартных решениях майков сделано, где уже индусы тебе оптимизировали все что только можно. Не выебывайся - учись этим пользоваться и сиди спокойно.
Аноним 17/10/22 Пнд 21:53:12 #239 №2490849 
image.png
>>2490396
Нахуй так заморачиваться пасаны?
Тыщи телодвижений вместо того, чтоб ебануть везде IEnumerable/ICollection да хоть List бля
>IEnumerable я принимаю на вход и если мне нужно свойство Count, то я проверяю реализует ли коллекция ICollection
Зачем и главное нахуя?
Аноним 17/10/22 Пнд 22:09:39 #240 №2490860 
>>2490849
Затем, что если мне придёт коллекция на 100 миллионов объектов я не хочу их итерировать в случае Count() да, такого не должно быть в принципе, но всё же. Даже условные тысячи 2-3 объектов супер впадлу итерировать и это нереально медленно.

>Тыщи телодвижений вместо того, чтоб ебануть везде IEnumerable/ICollection
Затем, что ICollection ты должен использовать для имплементации пользовательских возможно потокобезопасных коллекций которых нет из коробки, например деревья или графики
>да хоть List бля
Это может быть избыточным

Понятное дело, что у условном ендпоинте можно сделать хоть массив, хоть коллекцию, хоть блять че угодно, но когда ты делаешь что-то производительное - приходится думать правильно
Аноним 17/10/22 Пнд 22:10:50 #241 №2490862 
>>2490846
этот единственный плюс есть киллер фича так то.
Помимо расширенного Assert проверка в билдтайме весьма приятная штука.

И при желании все это вырезается из рантайма ради перфоманса.

Можно ли сделать свою реализацию с блекжеком? ну можно конечно. можно и свой редактор запилить - а че нет, вон жетрбаинсы запилили и ты запили. делов то )

Каждый день с утра занимаюсь разработкой тулзов вместо разработки собственно продукта ))) (сарказм)
Аноним 17/10/22 Пнд 22:20:30 #242 №2490871 
>>2490860
Ставишь пакет от того же жидбрайнса, обмазываешь арибутами аргументы и у тебя есть ворнинги. Раз тебе так стандартные нулаблы не нравятся.
Подкручиваешь код генерацию, тот же фоди умеет геренировать чеки по жидбрайновским нул атрибутам - есть рантайм валидация. Я давно нек иследовал, но думаю, что сейчас даже лучше варик, чем фоди есть.
>И при желании все это вырезается из рантайма ради перфоманса.
Хуйню не неси. Смысла в таких валидация без рантайма ноль. А если надо, то в тех же гардах касатомных в одну трочку делается.
Аноним 17/10/22 Пнд 22:21:21 #243 №2490872 
Это вот
>>2490871
Сюда >>2490862
Аноним 17/10/22 Пнд 22:43:57 #244 №2490894 
>>2490844
>Хреновый тогда из тебя дизайнер
Да ты троллишь? Ты знаешь для чего это, или нет?
Аноним 17/10/22 Пнд 23:57:46 #245 №2490930 
Глупый вопрос, но всё же: можно ли как-то разграничить действия пользователя при использовании static List'a? Каждый отдельный пользователь изменяет данные, а так-как это static List, то все изменения видны другому пользователю. Короче мне надо заместо static сделать не static или можно как-то разграничить?
Аноним 18/10/22 Втр 00:43:46 #246 №2490946 
>>2490894
Для дизайнера. Дизайнер - это когда ты в хамл код разметки пишешь, а рядом готовое окошко рисуется. Это в данном контексе - дизайнер. Это - для него.
Аноним 18/10/22 Втр 02:03:40 #247 №2490959 
>>2490946
Ну е-мое, ну это понятно. Вопрос в том, а зачем оно понадобилось, если есть параметр ширины и актуальной ширины? Зачем нужен третий параметр?
Аноним 18/10/22 Втр 08:21:12 #248 №2490998 
>>2490930
Тебе нужна сессия судя по всему.
Аноним 18/10/22 Втр 08:58:07 #249 №2491006 
Дак что? Реально надо учить Angular или хватит Blazor'а?
Аноним 18/10/22 Втр 09:58:02 #250 №2491021 
image.png
>>2490860
>Затем, что если мне придёт коллекция на 100 миллионов объектов я не хочу их итерировать в случае Count() да
Аноним 18/10/22 Втр 09:58:04 #251 №2491022 
>>2490433
В итоге просто через Sort сделал
Аноним 18/10/22 Втр 10:07:26 #252 №2491026 
Как асинхронно в файл записывать чтоб эксепшна не было?
Аноним 18/10/22 Втр 10:23:35 #253 №2491035 
>>2490959
>если есть параметр ширины и актуальной ширины?
Актуальная вообще для рантайма. Да и просто ширина тоже.
Ты же не всегда можешь ее вписать (допустим ты пишешь контрол, который должен вписываться в контейнер и ты ему ничего не задашь), а может ты вообще в Blend дизайнишь и у тебя все застаблено, данных нет, кода нет, размер не вычисляется как надо и все выглядит не так.

поэтому в дизайне есть d: аттрибуты которые могут выставить/переопределить значение

Нужно просто не очень часто.
Аноним 18/10/22 Втр 10:23:57 #254 №2491036 
>>2491026
бери да записывай. и не будет тебе эксепшена
Аноним 18/10/22 Втр 10:25:45 #255 №2491039 
>>2491026
Так есть же асинхронная функция в FileStream, она запишет тогда, когда файл освободится. Правда если ты что-то с высокой частотой пишешь, типа лога, то может записываться не в том порядке, в каком ожидалось из-за занятости файла другими процессами.
Аноним 18/10/22 Втр 10:34:16 #256 №2491045 
2022-10-1810-32-36.png
>>2491026
Асинхронная запись вроде не вызывает эксепшина т.к. ее суть — дождаться и записать.
Можешь проверять File.Exists перед записью или чтением.

https://stackoverflow.com/questions/11774827/writing-to-a-file-asynchronously
Аноним 18/10/22 Втр 10:35:47 #257 №2491047 
>>2490871
>Раз тебе так стандартные нулаблы не нравятся.
да не говорил я что мне не нравятся стандартные нулабле
Я говорил что нулаблы - маааленькая часть же

псевдокод
int Delta(int min, int max){
Contract.Requires(min<max)
...
}

по хорошему при попытке вызвать Delta(10, 5) получу ошибку в рантайме и варнинг в разработко-тайм.
Где тут нулабле и как мне помогает "вместо контракта используйте нулабле" я хз о чем они вообще.

> Смысла в таких валидация без рантайма ноль
Нет это не так. Ты же не проверяешь валидность в каждом методе. Если у меня граница контекста и я проверил на границе валидность входных данных, то должен ли я в каждом методе и далее проверять валидность данных и состояний? Я могу просто вырезать это все, как сейчас вырезается Debug.Assert

Тут каждому свое - кто то юзает везде List и "я и так все знаю и не ошибусь", а кто-то любит строгость когда компилятор проверяет максимум, а "потом в рантайме оно бахнет". Понятно что все не проверить, но все же.
Аноним 18/10/22 Втр 10:44:56 #258 №2491053 
image.png
Пиздос ебка на работе. Такой хуйни ни разу за всю мою карьеру 8милетнюю в айти не было. Даже в первый год, когда я выездным сисадмином работал. Тогда начальсто только за крупные косяки ебало. А сейчас техлид ебет понечножку, но каждый день.
Аноним 18/10/22 Втр 10:45:17 #259 №2491054 
2022-10-1810-35-43.png
Можно ли как-то в WPF темплейте ограничить область видимости кистей или констант? К примеру (пикрил) у меня есть набор кистей для слайдера, хранящихся в отдельном файлике стиля, и видеть их должен только слайдер.

В MDSN примерах, в параметре "Key" приписывают тип слайдера для ориентира, но если у тебя дохрена элементов, то при биндинге локального ресурса выпадает такой адский список кистей, что будешь год искать нужное. При этом по факту они не нужны.
Аноним 18/10/22 Втр 10:54:19 #260 №2491055 
>>2491053
Как ты без мышки формочки шлёпаешь?
Аноним 18/10/22 Втр 11:02:20 #261 №2491058 
>>2491055
Я просто Шлепа
Аноним 18/10/22 Втр 12:36:45 #262 №2491088 
image.png
>>2491045
И что мне эта проверка даст? Я всё на в MSDN написано делаю, но если пытаюсь записать в файл почти одновременно то происходит пикрил. На UWP пилю.
Аноним 18/10/22 Втр 12:46:12 #263 №2491090 
Какие есть варианты вакансий на C# кроме юнити и асп.нет? Реально будет в обозримом будущем вкатиться в MAUI или Blazor?
Аноним 18/10/22 Втр 12:58:41 #264 №2491095 
>>2491088
там же в конструкторе есть параметр с этим
https://learn.microsoft.com/ru-ru/dotnet/api/system.io.fileshare?view=net-6.0
Аноним 18/10/22 Втр 13:01:11 #265 №2491096 
>>2491090
Blazor без asp.net явно никому не будет нужен. А из вариантов есть ещё десктопное гуи - wpf, winforms. Maui мертворожденный проект.
Аноним 18/10/22 Втр 13:01:20 #266 №2491097 
>>2491088
Закольцуй в цикл и записывай через try catch. Если выводится исключение, то меняй флаг выхода из цикла на false. Без проверки исключения.

Только вся эта асинхронность очень дурно влияет на порядок записи из разных потоков. Функция соберется записать в одно время, а по факту запишет спустя 10 строк, когда появится "свободное окно".

Тут надо городить что-то типа очереди, причем не обычной а ConcurrentQueue. Все потоки скидывают в эту очередь, а записывающая в файл функция — одна на всех и вытаскивает таски из очереди.
Аноним 18/10/22 Втр 13:05:17 #267 №2491099 
>>2491097
>ConcurrentQueue
если нужно ждать, то обычный семафор
иначе Channel/BlockingCollection

ConcurrentQueue тут неудобен
Аноним 18/10/22 Втр 13:12:04 #268 №2491103 
>>2491099
Ну вот я кстати семафор приколхозил, с ним работает, но я думаю это какой-то совсем лютый костыль
Аноним 18/10/22 Втр 13:14:09 #269 №2491106 
>>2491103
Абсолютно самая что ни на есть нормальность.
Просто нужно понимать что при очень интенсивной записи код будет ждать пока запишет.
Аноним 18/10/22 Втр 13:30:55 #270 №2491121 
>>2491106
Вот поэтому я и предложил ConcurrentQueue.
Все кидают в один "буфер" и продолжают делать свои дела, а одна функция этот буфер разгребает и пишет в файл.

>Channel/BlockingCollection
А разве не от этого ConcurrentQueue призвана избавить?

>ConcurrentQueue тут неудобен
А что там неудобного? Всего два метода: добавить в очередь и вытащить из очереди.
Метод Enqueue для добавления данных в очередь.
Только читальщик должен "пытаться" взять из очереди таску через TryDequeue — тут надо цикл организовать.
Причем там не надо ничего удалять из очереди — оно автоматом.

Единственное, над чем нужно подумать, как записывальщику в файл мониторить очередь, потому что совершенно непонятно в какой момент туда поступят данные (не будет же он в цикле постоянно чекать очередь?). Тут нужно какое-то событие или токен.
Аноним 18/10/22 Втр 13:33:04 #271 №2491123 
>>2491053
>куртка на спинке стула
Ну что за чушканство, честное слово.
Аноним 18/10/22 Втр 13:34:48 #272 №2491125 
>>2491121
>не будет же он в цикле постоянно чекать очередь?
А почему нет?
Аноним 18/10/22 Втр 13:36:19 #273 №2491126 
>>2491121
>Channel/BlockingCollection
они заточены на автопродолжение выгребания из них при появлении новых элементов.

>А что там неудобного?
ConcurrentQueue для этого не приспособлен, потому что никак не сообщает, что в нем появились элементы.
Нужно городить СЛОЖНЫЙ огород при добавлении элементов, который запустит цикл выгребания и учтет что пока он выгребает снова были добавлены и никаких проблем с синхронизацией не было
Ну или городить свою структуру которая прячет эту сложность внутри себя - собственно так ты и сделаешь подобие Channel/BlockingCollection

>как записывальщику в файл мониторить очеред
а в случае Channel/BlockingCollection думать не нужно. Они предназначены для решения паттерна Producer/Consumer
а обычная очередь это просто очередь.
Аноним 18/10/22 Втр 13:46:11 #274 №2491133 
>>2491125
>А почему нет?
Дед, мы живем в век мобильных устройств. Побереги батарею.
Сколько видов таймеров высрано по этому поводу.
А уж цикл While это вообще аут. События как-то шпокойнее.
Аноним 18/10/22 Втр 14:35:18 #275 №2491159 
Пасаны, помогите с линком.
Есть List<string> externalCodes = ["a", "b", "c", ... , "z"] (например)

И есть табличка Companies с проперти AgentList. AgentList это коллекция агентов у которых есть стринговая проперти CodeNumber.

Так вот. Как мне получить те компании, у которых хотя бы одна пропертя codenumber агента из АгентЛиста есть в externalCodes

Что не работает:
var _dbSet = cont.Set<Companies>()
.Include(p => p.AgentList)
//.Where(s => (s.AgentList.Any(p => externalCodes .Contains(p.CodeNumber))))
//.Where(p => p.AgentList.Select(cg => cg.CodeNumber).Intersect(externalCodes).Any())

Помогите пожалуйста с нужным Where, оба закомменченных не работают
Аноним 18/10/22 Втр 14:37:43 #276 №2491161 
Подскажите, пожалуйста, как сделать так: пользователь вводит время, это время заносится в BD PostrgeSQL, потом когда это время наступает происходят какие-то действия. Как мне сделать взаимодействие между временем в бд и скриптом, который должен выполнится?
Аноним 18/10/22 Втр 14:57:17 #277 №2491181 
>>2491161
Почитай про TaskScheduler.

>>2491159
Я не уверен, но такая конструкция разве не будет работать?
var x = cont.Set<Companies>().Include(p => p.AgentList.Where(w = > externalCodes.Contains(w.CodeNumber))
Аноним 18/10/22 Втр 15:14:32 #278 №2491192 
>>2491181
Ошибка в линке - The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.
Имя параметра: path
Аноним 18/10/22 Втр 15:18:19 #279 №2491194 
>>2491161
Hangfire или Quarts.net
Аноним 18/10/22 Втр 15:49:05 #280 №2491218 
>>2491159
>>2491175
>>2491181
Отбой, мне приходил массив стрингов с пробелами в начале каждого элемента, что я в дебаге никак не заметил.
В итоге .Where(s => (s.AgentList.Any(p => externalCodes .Contains(p.CodeNumber)))) работает и всё ок
Аноним 18/10/22 Втр 18:52:02 #281 №2491302 
bandicam 2022-10-18 18-41-01-570.mp4
bandicam 2022-10-18 18-41-51-476.mp4
Как сделать так, чтобы шаг изменения значения в начале слайдера был меньше, чем в конце? Какой множитель применить?

К примеру есть диапазон значений от 0,1 до 100.
Длина слайдера примерно 200мм.
На первом видеорил — слайдер одной программы.
На втором — мой.

Заметьте, что у оригинального слайдера при такой же длине (и даже меньше), на участке от 0,1 до 1 шаг более подробный. Тут очевидно какой-то множитель. Какие есть идеи? Или лучше с этим вопросом в матан?
Аноним 18/10/22 Втр 18:56:15 #282 №2491304 
>>2491302
Л О Г А Р И Ф М
О
Г
А
Р
И
Ф
М
Аноним 18/10/22 Втр 19:32:58 #283 №2491326 
>>2491302
Правильно говорят - логарифмы используй.
Если что - это даже не матан, а школьный курс.
Аноним 18/10/22 Втр 19:59:59 #284 №2491341 
2022-10-1819-55-36.png
>>2491304
>>2491326
>Если что - это даже не матан, а школьный курс.
Я дурак дизайнер

>логарифмы используй
Чет даже по графикам логарифм дает не ту кривую.
Квадратичная функция мне кажется ближе. Пикрил: x ^ 2 / MaxValue.
Только степень "прогиба" не сложно контролировать, но и этого достаточно.
Аноним 18/10/22 Втр 20:03:02 #285 №2491342 
>>2491341
>не сложно
сложно*
Аноним 18/10/22 Втр 22:05:48 #286 №2491437 
изображение.png
Хочу добавить модель ADO.NET EDM. Но выскакивает вот такая ошибка.
Аноним 18/10/22 Втр 22:35:37 #287 №2491446 
>>2491437
>EDM
Дед, ты чего? таблетки прими
ты реально ебанутый или какой-то старый кал портируешь?
Аноним 18/10/22 Втр 22:52:34 #288 №2491456 
>>2491446
смотрю видос какого-то индуса, он на основе бд сделал классы. Я хотел проторить, но обасрался
Сам видос https://www.youtube.com/watch?v=1HE6xKCthLA&t
Аноним 18/10/22 Втр 23:12:48 #289 №2491464 
image.png
image.png
>>2491456
рандомный скрин и везде "ебать"
Ты тралишь тута, сучка?
Аноним 18/10/22 Втр 23:17:35 #290 №2491466 
>>2491464
ну мне при просмотре уже стало понятно, что тут что-то не так. Но всё равно, хотел вот так несколькими кликами сделать классы.
Аноним 18/10/22 Втр 23:19:06 #291 №2491467 
image.png
image.png
>>2491466
если бд есть, то сюда смотри https://learn.microsoft.com/en-us/ef/core/managing-schemas/scaffolding/?tabs=dotnet-core-cli
Аноним 18/10/22 Втр 23:22:41 #292 №2491470 
image.png
нихуя он там по алгоритмам угорает. так вот какие они, любители мамкиных литкодов
Аноним 18/10/22 Втр 23:27:07 #293 №2491472 
image.png
Почуствовал себе буржуем
Аноним 19/10/22 Срд 05:31:05 #294 №2491514 
>>2491472
У меня 12, большую часть сжирает ебаный браузер
Аноним 19/10/22 Срд 05:39:19 #295 №2491515 
blyadi.jpg
Без этих хуёвин возможно кодить?
Аноним 19/10/22 Срд 09:25:41 #296 №2491555 
Кто-нибудь пользуется VS Code? Действительно ли нужно создавать иерархию в виде: Решение (солюшин) -> Проект, как в студии? И если так, то что выбирать в качестве рабочей папки: папку с решением или с проектом?
Аноним 19/10/22 Срд 10:23:06 #297 №2491572 
>>2491515
Да, если тебе пайтон и ажура не нужны.
Аноним 19/10/22 Срд 10:31:20 #298 №2491576 
>>2491555
Сделал иерархию, в итоге мне вс код выдаёт миллион ошибок, что не видит всякие пространства имён...
А потом ещё говорят: ой, у нас дотнет давно кроссплатформенный, винда с вижлой не нужна, всё можно в вс коде делать.
Аноним 19/10/22 Срд 11:25:08 #299 №2491591 
>>2491472
Так это свободные 16Гб
Так что у тебя должно быть 32Гб, чего действительно не у всех есть.
Аноним 19/10/22 Срд 11:30:40 #300 №2491592 
>>2491576
Все (кроме жителей страны 404) юзают rider на маках
Аноним 19/10/22 Срд 11:54:39 #301 №2491605 
>>2491555
Я пользуюсь Vim. Моё ебало представили?
Аноним 19/10/22 Срд 13:08:20 #302 №2491627 
hjjjjj.jpeg
>>2491605
Да
Аноним 19/10/22 Срд 17:04:45 #303 №2491807 
>>2491576
> выдаёт миллион ошибок
> Сделал иерархию
> А потом ещё говорят
Вс кодом открывай только папку, в которой лежит файл csproj.
Аноним 19/10/22 Срд 17:18:55 #304 №2491832 
Как из кода установить параметр Autosize?
Аноним 19/10/22 Срд 17:33:34 #305 №2491863 
Куда писать Main entry point?
Аноним 19/10/22 Срд 17:51:32 #306 №2491883 
Глупый вопрос, но почему фреймворки для рендера используют opengl, а не вулкан?
Аноним 19/10/22 Срд 18:07:45 #307 №2491910 
>>2491807
А если у меня два проекта: само приложение и тесты?
Аноним 19/10/22 Срд 18:11:26 #308 №2491915 
>>2491832
Разобрался: Double.NaN
Аноним 19/10/22 Срд 18:17:45 #309 №2491931 
>>2491863
Ой, такой головняк.

в Application.xml, в заголовке прописываешь
Startup="YourMethodName"

Ну еще в свойствах проекта чекнуть, чтобы не стояло дефолтное имя запускаемого метода
Аноним 19/10/22 Срд 19:20:52 #310 №2492008 
>>2491931
Нашёл, в свойствах удобнее
Аноним 19/10/22 Срд 19:32:38 #311 №2492024 
Обьясните мне кто нибудь что такое blazor и maui. Я могу использовать C# для верстки веб-приложений/сайтов на blazor для фронта + asp.net для бека? MAUI я так понимаю замена для xamarin.forms и будет конкурировать с flutter.
Аноним 19/10/22 Срд 19:51:43 #312 №2492042 
>>2492024
MAUI предполагается как универсальная платформа для UI, но в большей степени ориентируется на мобилочки.
Аноним 19/10/22 Срд 23:32:18 #313 №2492377 
>>2484368 (OP)
Ребзя, где я могу найти книги/статьи advanced и выше уровня о том как CLR компилирует и ранает C#? Например, как статические классы и переменные, лямбда выражения, параметры, вызовы, типа и структуры и т.п. выглядят под капотом?
Аноним 19/10/22 Срд 23:46:46 #314 №2492386 
Можно ли при помощи интерфейса как-то заставить создавать экземпляр класса с определенными аргументами?
Аноним 19/10/22 Срд 23:48:56 #315 №2492389 
>>2492377
>типа и структуры и т.п. выглядят под капотом?
Ты точно advanced?
Sharplab.io позволяет любые куски кода в рантайме переводить в IL.
Аноним 19/10/22 Срд 23:49:17 #316 №2492390 
>>2492377
sharplab.io тут тестить как что под капотом, олсо читай шапку треда, тем есть ссылка на стековерфлоу и книги хай лвла
Аноним 20/10/22 Чтв 00:36:06 #317 №2492419 
>>2492389
>Sharplab.io
Я блять IL могу и в дотпике посмотреть, мне нужна книга где описывается вся теория дотнета, CLR, JIT, GC, причем глубокая, а не "переменная это коробочка, которая ссылается на значение в кучке"
Аноним 20/10/22 Чтв 00:38:05 #318 №2492421 
>>2492390
Ооо, а книжечки там хорошие
Аноним 20/10/22 Чтв 01:57:08 #319 №2492465 
>>2492377
CLR via C# Рихтера. Чуть подустарела, но все еще актуальна.
Ещё такая штука есть https://github.com/dotnet/coreclr/tree/master/Documentation/botr - оче специфичная инфа о принципах устройства clr-рантайма.
Аноним 20/10/22 Чтв 09:06:09 #320 №2492511 
>>2492377
Рихтер CLR via C#
Аноним 20/10/22 Чтв 09:10:59 #321 №2492513 
>>2492386
Нет. Потому что "Interfaces cannot contain constructors"
Аноним 20/10/22 Чтв 10:17:57 #322 №2492530 
testcsharp.jpg
И что реально надо писать такую крольчатку и понимать как это всё работает?
Аноним 20/10/22 Чтв 10:34:04 #323 №2492533 
Помогите решить дилемму. Насколько правомерно в дизайнере окна выставлять состояния чекбоксов, радиобаттонов и прочего.

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

А дилемма в том, что я бы хотел все активации элементов делать в коде после инициализации, но при этом нет никакой защиты, если случайно в дизайнере будет выставлена галочка. А через месяц я об этом забуду и буду соображать, почему приложение не запускается.
Аноним 20/10/22 Чтв 11:10:04 #324 №2492546 
>>2492533
Даже если я буду в каждом событии проверять IsInitialized, то это за задолбаешься везде прописывать.
Мне не нравится ситуация, когда нужно в голове держать некое правило, без которого код работать не будет.
Аноним 20/10/22 Чтв 11:25:07 #325 №2492555 
>>2492546
>>2492533
Мда ... судя по ответам
https://stackoverflow.com/questions/3150882/how-to-prevent-value-changed-events-from-firing-on-form-initialization-in-net
Чуда не существует. Нет никакого глобального рубильника, выключающего все обработчики событий, а если бы и был, то сломалась бы инициализация.

В итоге два выхода:
- Либо в каждом методе делать проверку на статус инициализации окна (или какой-то свой флаг).
- Либо забыть о создании автоматических подписок. И создать свой метод инициализации с ручной подпиской, и как следствие диспоза.

Второй вариант мне кажется более безопасным в долгосрочной перспективе, но опять какой-то лишний код.
Аноним 20/10/22 Чтв 11:52:47 #326 №2492566 
>>2492555
ты же про винформс?
ну страдай.
Аноним 20/10/22 Чтв 12:18:38 #327 №2492583 
>>2492566
WPF
Аноним 20/10/22 Чтв 12:33:11 #328 №2492593 
>>2492583
в WPF у тебя все во вьюмоделях и чекед это биндинг, так что "случайно" ничего не поставишь.
Да и события обычные используются в разы реже
Аноним 20/10/22 Чтв 12:57:15 #329 №2492622 
Мимокрокодил интересуется - а относятся ли к шарпистам приколы про джавистов по типу «Попросили у джависта прикурить, а он фабрику для зажигалок строит»? Или шарпобоги перебороли желание на каждый чих городить абстрактно-фабричный фасадный метод?
Аноним 20/10/22 Чтв 13:19:18 #330 №2492644 
>>2492622
Суть шарпа ничем не отличается от жабы.
Аноним 20/10/22 Чтв 13:27:57 #331 №2492653 
>>2492622
Это не желание
А опыт
Вечно "да тут нужно ерунда" превращается в "нужно это и то"
В итоге заранее закладываешь за воротник на будущее
Аноним 20/10/22 Чтв 13:32:07 #332 №2492662 
>>2492660
Зачем на 10
На пару шагов.
Аноним 20/10/22 Чтв 13:41:51 #333 №2492665 
>>2492654
Много всяких закорючек непонятных и в целом конструкция слишком монструозная
Аноним 20/10/22 Чтв 13:57:36 #334 №2492680 
После обновления студии решарпер стал загружаться через несколько минут после запуска. Раньше такой херни не было. Как фиксить?
Аноним 20/10/22 Чтв 14:00:31 #335 №2492685 
>>2492680
Вроде на третий раз должно уже нормально включаться, но это не точно.
Аноним 20/10/22 Чтв 14:08:55 #336 №2492700 
>>2492680
Как часто ты нажимаешь Ctrl+S?
Аноним 20/10/22 Чтв 14:21:52 #337 №2492714 
>>2492680
подтверждаю. такая же хрень. даже для нового проекта.
Аноним 20/10/22 Чтв 15:15:14 #338 №2492756 
>>2492665
Покажи скриншотом, как ты хочешь чтобы было?
Аноним 20/10/22 Чтв 15:35:38 #339 №2492775 
Студия конечно непривычная после жетбрейнсовских иде, стоит ли привыкать к ней? Или сразу на Rider перескочить?
Аноним 20/10/22 Чтв 15:37:29 #340 №2492776 
>>2492775
А если жидбрейнс непривычен после студии?
Аноним 20/10/22 Чтв 15:48:43 #341 №2492783 
testcsharp2.jpg
>>2492756
Аноним 20/10/22 Чтв 16:28:01 #342 №2492815 
>>2492806
После PHP
Аноним 20/10/22 Чтв 16:54:18 #343 №2492828 
Capture.JPG
шарпач, можно ли как-то хитро подкинуть свой код в сеттер чужого объекта, который я не могу редактировать?
сейчас у меня пикрелейтед: имеется коллекция чужих объектов, у них public bool IsDirty. они работают как "грязный бит" - когда есть какое-то изменение в объекте они становятся true, затем его надо самостоятельно менять обратно. при этом, я не контролирую другие компоненты которые могут изменить эти булевые или кто вообще это делает, единственное что торчит наружу это булевая на объекте.
Аноним 20/10/22 Чтв 17:17:45 #344 №2492837 
>>2492783
Но это же говнокод!
На любом языке говнокод, невзирая на синтаксис.
В ифе идёт сравнение со строковым литералом. За это на первых курсах линейкой по рукам пиздят.
Аноним 20/10/22 Чтв 17:34:58 #345 №2492871 
>>2492837
Но ведь в сишарпе == перегружен и сравнивает значения, а не ссылки.
Аноним 20/10/22 Чтв 17:37:33 #346 №2492891 
>>2492835
ну... не совсем подменяться, но если сеттер какой-нибудь эвент квакнет после изменения было бы вообще идеально
Аноним 20/10/22 Чтв 18:11:01 #347 №2493006 
>>2492994
Конечно забанят. То на четверг операция то на пятницу
Аноним 20/10/22 Чтв 18:25:59 #348 №2493023 
Пасаны, куда ентити фреймворк с постгресом табличку дели мою?
Я скопом несколько добавил (в контекст), сделал миграцию, апдейтнул базу.

Новые таблички появились все кроме одной (называется Containers).

Так вот - через пгадмин и дбивер нет этой таблички, но через ЕФ она видна и с ней можно работать.

ЧЯДНТ?
Аноним 20/10/22 Чтв 18:34:28 #349 №2493027 
>>2493020
Того что каждый день этот пост про операцию на завтра
Аноним 20/10/22 Чтв 18:41:11 #350 №2493033 
>>2493006
Он раньше кидал полную картинку, где обследование за 2017 год. Сейчас обрезал дату. Этот кот сдох 5 лет назад.
Аноним 20/10/22 Чтв 19:20:25 #351 №2493057 
>>2492775
я много жетбрэиню, но для шарпа студия
Мне в ней приятнее. Да и расширений побольше
и та штука показывающая потребление памяти и события тоже неплохо. А еще supercharger есть расширение
Аноним 20/10/22 Чтв 19:34:58 #352 №2493062 
Я вот уже неделю как работаю интерном в одном крупном банке и просто охуеваю с количества получаемой информации. Я просто смотрю в код и не понимаю как он работает, причем навыки программирования у меня есть. Просто смотрю как на код когда я был 8-ми кассником и нихуя не понимаю что это. Функции? Процедуры? Сейчас примерно также только масшатабируемость иная. А про навыки энтерпрайз разработки я вообще молчу. Совершенно иной подход и где его брать не знаю.
Аноним 20/10/22 Чтв 19:38:14 #353 №2493063 
>>2492891
https://github.com/Aarnihauta/MethodReplacer/
Чекай Program, теперь вместо set_Property вызывается другой метод. Там можешь написать что угодно
Аноним 20/10/22 Чтв 19:52:00 #354 №2493070 
>>2493063
404 так то
Аноним 20/10/22 Чтв 19:53:12 #355 №2493072 
>>2493070
Забыл его публичным сделать, чекай еще раз
Аноним 20/10/22 Чтв 19:55:09 #356 №2493074 
>>2493072
>хармони
спасибо но меня за это убьют нахуй лучше буду поллить как раньше
Аноним 20/10/22 Чтв 19:57:04 #357 №2493079 
>>2493074
Там нет хармони, я руками всё сделал, просто неймспейс остался.
Аноним 20/10/22 Чтв 19:58:38 #358 №2493082 
>>2493079
а это для инстансов никак?
Аноним 20/10/22 Чтв 20:03:13 #359 №2493085 
>>2493082
Можешь описать изначальную задачу, мне кажется, раз тебе приходится лезть внутрь метода, то ты что-то не так делаешь
Аноним 20/10/22 Чтв 20:16:25 #360 №2493089 
>>2493085
Я другой мимокрок
Мне такое пригодится для импортозамещения
Аноним 20/10/22 Чтв 20:26:02 #361 №2493101 
>>2493082
Для инстансов можешь использовать dynamic proxy, там есть способ перехватывать вызовы методов
Аноним 20/10/22 Чтв 20:26:37 #362 №2493102 
>>2493101
>dynamic proxy
Имею в виду Castle Dynamic Proxy
Аноним 20/10/22 Чтв 20:28:08 #363 №2493105 
>>2493079
так хармони не в смысле что хармони а в смысле что рефлексия
если для достижения результата надо метод подменять то лучше ну его нахуй
Аноним 20/10/22 Чтв 22:12:06 #364 №2493154 
Аноны помогите. Работал фронтэндером, хочу перекатиться в .net подскажите, насколько большая конкуренцию у джунов, и реально ли сейчас вкатиться сюда.
Аноним 20/10/22 Чтв 23:04:44 #365 №2493382 
>>2493154
Конкуренции почти нет, одебилевшие от курсов гигбрейновские швайнокараси все в петухоне и жиесе. Вкатывайся анон
Аноним 20/10/22 Чтв 23:12:34 #366 №2493389 
>>2493382
спасибо, и еще вопрос, насколько реально каким нибудь фуллстеком залететь? Мне кажется развиваться в двух напрвлениях сложно, плюс универ.
Аноним 20/10/22 Чтв 23:15:09 #367 №2493393 
>>2493380
тебе бы какую нибудь выписку с суммой за операцию скинуть...
Аноним 21/10/22 Птн 07:29:22 #368 №2493470 
>>2493382
Шанс вката меньше 5% вообще-то
Аноним 21/10/22 Птн 08:54:49 #369 №2493504 
>>2493382
>одебилевшие от курсов гигбрейновские швайнокараси все в петухоне и жиесе.
Кстати, забавный факт.
Где-то два года назад перед приходом .net6 во всяких скилбоксах и т.д. и прочих начали открывать курсы по шарпу. Даже джаваеб Немчинский постоянно предрекавший смерть шарпу открыл у себя его курс. Но продержалось все это чуть больше года и либо шарпокурсы перестали пиарить, либо совсем позакрывали (как например в жидбрейнсе - инсайд инфа).
Аноним 21/10/22 Птн 08:59:20 #370 №2493506 
>>2493062
>навыки программирования
> Совершенно иной подход и где его брать не знаю.
Навыки программирования сейчас даже у детсадовцев есть. Для того чтобы понимать как раз и нужно учиться и читать дохуя скучных (для нормисов) книжек.
Аноним 21/10/22 Птн 09:00:26 #371 №2493507 
>>2493504
И что? C# сфера потихоньку сокращается или просто курсы были слишком сложные и никто бабло не платил?
Аноним 21/10/22 Птн 09:04:04 #372 №2493509 
>>2493389
>насколько реально каким нибудь фуллстеком залететь?
Фуллстеком как раз реально залететь, т.к. какой-нибудь условный реакт с js учится за месяц...два. Плюс очень много работодателей хочет себе двух спецов по цене одного.
Только нужно сразу понимать. Что по факту ты будешь на двух работах за одну з/п работать. Плюс это путь в никуда и нужно при первом возможном случае перекатываться в чистый бэк.
Аноним 21/10/22 Птн 09:25:18 #373 №2493516 
>>2493507
Насчет сокращения сферы - все так же как и в остальных сферах/языках. Разве что шарп себе в относительном выражении у джавы немного рынок отгрыз.
А вот насчет сложности, да есть такое. Насколько я заметил в шарпе традиционно намного сильнее ебут за чистоту кода. Плюс сам-то язык выучить просто, а вот начать разрабатывать на том уровне который нужен энтерпрайзу - новичку поебаться знатно придется.
Плюс не так уж много толковых преподов, а с учетом того, что в шарпе (для норм спецов) неплохо так в 21-м году зарплаты выросли, то им нахуй не уперлось идти в жидбрейнс за копейки лекции читать.
Я не знаю как на курсах по другим языкам например. Но на шарповых курсах конверсия была процентов 10 максимум. Т.е. из 10 человек только 1 мог претендовать на то, что его резюме хотя бы рассматривать станут и то если у него уже был хотя бы какой-нибудь бэкграунд при этом.
Аноним 21/10/22 Птн 09:28:33 #374 №2493518 
>>2493470
Я после ПНД и ПТУ сразу же устроился в нищем милионнике. Потом спустя 9 месяцев так же без задней мысли нашел новую работу. Так что динаху джавадебил

>>2493504
Да бля у немчинского шиза ебаная, каждую секунду пиздит что ВОТ-ВОТ ЕЩЕ НЕМНОГО И ШАРП ТОЧНО ВСЁ ПУЗЫРЬ НАДУЛСЯ НЕВЕРОЯТНО, НУЖНА ТОКА ДЖАВА! А по факту в джаву вкатываются всё меньше и меньше, нежели в шарп, потому что джава морально устарела и уже не сможет догнать по возможностям .NET
Аноним 21/10/22 Птн 09:30:11 #375 №2493519 
>>2493507
>слишком сложные
Еще, кстати, в шарпе до сих пор языковый барьер играет роль. Практически вся актуалочка по фреймворкам до сих пор на английском, а то что переведено устарело и никому не нужно.
А большинство посетителей таких курсов не то, что онлайн переводчиками пользоваться не умеют, даже простой процесс гугления по ошибке для них это уровень рокет саенс.
Аноним 21/10/22 Птн 09:37:37 #376 №2493524 
>>2493518
>ВОТ-ВОТ ЕЩЕ НЕМНОГО И ШАРП ТОЧНО ВСЁ ПУЗЫРЬ НАДУЛСЯ НЕВЕРОЯТНО, НУЖНА ТОКА ДЖАВА!
Ну я про что и написал. При всей его ненависти к шарпу он все равно попытался под рыночек прогнуться и открыл у себя курсы по нему.
Я правда сейчас глянул на его сайт, как и ожидалось он так же учит неактуальной хуйне вроде винформс, WPF и MVC.
Аноним 21/10/22 Птн 09:39:01 #377 №2493525 
>>2493524
А с чего мвц не актуально вдруг?
Аноним 21/10/22 Птн 09:40:17 #378 №2493527 
>>2493524
WPF еще актуальна более чем. Корпоративное ПО делают на винформах или впф, это его нисша. Иногда добавляют C++ если нужна высокая скорость
Аноним 21/10/22 Птн 09:40:38 #379 №2493528 
>>2493518
>сразу же устроился
Лет 10 назад?
Аноним 21/10/22 Птн 09:42:08 #380 №2493529 
>>2493528
Чуть больше года назад
Аноним 21/10/22 Птн 09:43:32 #381 №2493530 
>>2493529
Чел, сейчас ситуация кардинально иная. Вакансий очень мало.
Аноним 21/10/22 Птн 09:47:51 #382 №2493533 
>>2493530
Твои проблемы, раз тебя волнует конкуренция то может тебе и не нравится программировать? Кому нравится тот ебашит код каждый день и вкатывается, оставляя нубасов позади
Аноним 21/10/22 Птн 09:52:52 #383 №2493539 
>>2493527
В большинстве своем это закрытые системы. Т.е. они пилятся/ковыряются годами и там сидит прикормленая команда, которой тепло-сытно и дергаться никуда не хочется. Что-то новое пилится только в областях САПР-а и экспертных систем, но чтобы туда вкатиться нужен хороший багаж по предметной области. Ну и зарплаты там в большинстве намного ниже рынка.
Аноним 21/10/22 Птн 09:59:00 #384 №2493544 
>>2493525
Потому что, где-то с выхода Core 3.1 народ осознал, что MVC с его привязкой к винде теперь нахуй не нужон и можно спокойно садить бэкэндера пилить чистый WebApi бэк, которому будет похуй на какой системе работать и похуй на чем будет написан фронт. Т.е. намного выгоднее иметь грамотного бэкэндера и грамотного фронтендера, чем двух фулстеков хуево разбирающихся в обеих областях.
Ну и все постепенно к этому и переходят. Так что искать сейчас работу на MVC - путь в никуда, т.к. в основной массе это будет старый стек и потом ты нахуй не нужен будешь с таким опытом.
Аноним 21/10/22 Птн 10:04:17 #385 №2493547 
>>2493544
Можно ли в фронте использовать Blazor?
Аноним 21/10/22 Птн 10:09:49 #386 №2493548 
>>2493547
Я хер знает. Теоретически да.
Но практически...
В серьезных конторах вряд ли. Там за лишнюю библиотеку прикрепленную к проекту заебешься согласовывать все. Ну чтобы писать на чем-то не имеющего статус LTS вообще можно забыть.
Может только где-нибудь в стартапчиках, где кабанчик модно-молодежный и топит за инновации и все новое.
Аноним 21/10/22 Птн 10:54:49 #387 №2493575 
>>2493547
В тырпрайз говне, где все шарперы и вы делаете веб приложение для "локального" пользования клиентом - может даже и нужно.
В остальном конечно юзлесс
Аноним 21/10/22 Птн 11:29:22 #388 №2493604 
>>2484368 (OP)
Котаны, а как вы парсите в объекты json-ы у которых ключи на русском языке?
Через dynamic или делаете объекты у которых поля кириллицей обозваны?
Аноним 21/10/22 Птн 11:45:01 #389 №2493705 
>>2493604
есть же JsonPropertyName или его аналоги
Аноним 21/10/22 Птн 12:02:10 #390 №2493826 
>>2493820
Твой кот сдох в 2018
Аноним 21/10/22 Птн 14:33:27 #391 №2493956 
Как вы учили Entity Framework?
Аноним 21/10/22 Птн 15:17:27 #392 №2494177 
>>2493956
Примерно так:
- таак почитаем что это такое
- да блин еще статьи по EF, а мне нужен кор
- попробую
- да епрст
- да ну блин
- да как так то
- привет dapper
Аноним 21/10/22 Птн 15:40:30 #393 №2494196 
>>2494177
Так вот почему даперисты так срут вонюче везде - неосиляторы
Аноним 21/10/22 Птн 15:41:16 #394 №2494199 
>>2493604
>Котаны, а как вы парсите в объекты json-ы у которых ключи на русском языке?
Никак. Это как себя не уважать надо, чтоб с таким кодом работать?
Аноним 21/10/22 Птн 16:08:20 #395 №2494233 
>>2494196
Зато EF-овцы дважды осиляторы
знают и SQL и "а как его выразить в терминах EF бл.."
Аноним 21/10/22 Птн 16:53:58 #396 №2494368 
Я хз куда еще написать, поэтому напишу здесь.
Я планирую фрилансить и иногда попиливать игрухи. Фрилансить собираюсь пиля мобильные приложухи или веб-приложения. Так вот, я никак не могу выбрать между флаттером и C# стеком.
Флаттер кажется больше подходит под разработку мобильных приложух. И игры простенькие 2д на нем можно делать, вроде все подходит. К тому же флаттер работает сразу почти на все стороны, и веб, и десктоп, и мобилки, фрилансить на нем должно быть довольно легко, сразу пиля приложуху и под айос и под андроид.
НО.
Тут я наткнулся на .net и понял что на шарпе можно делать то же самое, благодаря в основном Uno Platform. Плюс на шарпах есть юнити и моногейм. Плюс MAUI потихоньку допиливают.
Ну и вот я не могу решить флаттер или C#. Реально ли будет фрилансить разрабатывая мобильные приложухи на шарпе, или мне лучше смотреть в сторону флаттера. Плюс у шарпа охват шире, можно аж целую операционную систему почти полностью на нем запилить.
Кароче по сути мне нужно чтобы кто нибудь шарящий за меня решил, флатер или .net. Какие еще можно привести доводы C# против флатер? Есть тут такие кто пилит приложухи на фрилансе? Реально ли будет фрилансить на MAUI через годик другой?
Аноним 21/10/22 Птн 17:17:37 #397 №2494500 
>>2494368
На мобилках надо учить джаву/котлин. Там и инструментарий неплохой с Андроид студией.
Аноним 21/10/22 Птн 17:26:25 #398 №2494509 
Аноны подскажите хантят ли сейчас студентов универа?
Просто раньше на курсе 3 приходил дяденька и забирал маслят на стажировки. Но сейчас пиздец происходит и стало интересно продолжаются ли такие практиики.
Аноним 21/10/22 Птн 17:32:11 #399 №2494513 
>>2494368
Очередной инфантил с мриями о фрилансе, заканчивай с этой хуйней
Аноним 21/10/22 Птн 17:42:01 #400 №2494518 
Ребят, ну хули вы дизморалите то?
Аноним 21/10/22 Птн 17:50:00 #401 №2494528 
>>2494518
Да кто дизморалит то?
Аноним 21/10/22 Птн 19:25:15 #402 №2494588 
>>2494233
осиляторского во мне дохуя. Сиквельщик передо мной стоит там, екзекюшн планы дрочит свои, я говорю бля старина съеби нахуй, выгребаю все таблицу в память, забирай и съёбывай
Аноним 21/10/22 Птн 19:28:37 #403 №2494590 
>>2494233
Все так и есть кста
Аноним 21/10/22 Птн 20:35:55 #404 №2494657 
>>2493705
>>2494184
Спасибо за подсказки, но я более удобную штуку нашел пока их изучал: ContractResolver
Аноним 21/10/22 Птн 20:37:00 #405 №2494658 
>>2494199
>Это как себя не уважать надо, чтоб с таким кодом работать?
Импортозамещение во все поля, чувачок.
Закажет тебе бизнес интеграцию с каким-нибудь гос-сервисом, еще и не с таким говном поработаешь.
Аноним 21/10/22 Птн 20:47:56 #406 №2494665 
>>2494509
Скорее приходят за теми кто представляет из себя что-то экрстраординарное. Либо дохуя умные, либо те за кого заранее проплачено.
Причем умные не в плане каких-нибудь олимпиадников (они то как раз нахуй никому не нужны), а те кто действительно быстренько во все въезжает, шарит на уровне намного выше среднего, плюс показывают хорошие результаты на практике помогая делать преподам их собственный гешефт. Таких преподы сами устраивают сигналя нужным дядям.
Аноним 21/10/22 Птн 20:52:58 #407 №2494666 
>>2494665
повеяло запахом гречневого говна
Аноним 21/10/22 Птн 21:00:52 #408 №2494674 
>>2494666
Не-а. Нормальная практика, точно так же как за рубежом. И не только в айтишечке, но и во всех остальных сферах. Берут либо тех кто уже свой, либо тот кто уже показал, что чего-то стоит.
Аноним 21/10/22 Птн 21:13:20 #409 №2494681 
>>2494674
Ну может. Хотя кому там тот задроченый препод может посигналить? Рогам и копытам, в которых их зять работает?
Аноним 21/10/22 Птн 21:33:32 #410 №2494687 
>>2494681
Мы про универ говорим. Это в школе все задроченные. В универе есть два типа преподов. Либо долбоебы до сих пор преподающие студиозам лабы на паскале. Либо продвинутые ребята шарящие за рынок и имеющие связи, и знающие что и как сделать на имеющихся у них мощностях (люди это кстати тоже ресурсы, а толковые студенты хороши тем, что это максимум дешевые ресурсы).
Причем ай-тишные факультеты даже проигрывают немного тем где реальным вещам учат. Например какой-нибудь шустрый завкафедрой машиностроения имея в наличии лабораторию с парой ЧПУ-шных станочков будет в деньгах купаться.
Аноним 22/10/22 Суб 02:09:18 #411 №2494771 
Слишком сладко

var collection = new int[] { 0, 2, 10, 5, 4 };
if (collection is [.., > 5, _, var even] && even % 2 == 0)
{
Console.WriteLine(even);
// 4
}
Аноним 22/10/22 Суб 04:11:20 #412 №2494794 
эх вот бы в сишарп вкатиться, да толко няшный шарпик мастдайной гнилью еще лет 10 отдавать будет... придется подождать, пока проветриться
Аноним 22/10/22 Суб 08:11:35 #413 №2494825 
>>2494794
Инсайд индустрии - через 10 лет все будет писаться на расте + гитхаб копилот
Аноним 22/10/22 Суб 08:51:57 #414 №2494833 
>>2494771
Вот нафига так делают? Это же абсолютно не читабельно.
Аноним 22/10/22 Суб 09:05:43 #415 №2494836 
>>2494794
игруньки делать хочешь?
Аноним 22/10/22 Суб 09:17:54 #416 №2494838 
>>2494771
Вот хейтят джаву, что там нету такого сахара, дак это даже хорошо, потому что язык легко учится и код легко читается. В сишарпе же навводили всяких закорючек и хрен пойми что они означают.
Если до 5 версии все изменения были логичными и делались с определенной целью, то сейчас разработчики языка как сороки собирают все фишки из других языков, без понимания зачем это нужно там. Ни какой цели в этих изменениях нет, просто напихать побольше всего, чтобы выкатить новую версию к назначенной дате. Язык замусоривается и превращается в синтаксическую помойку.
Аноним 22/10/22 Суб 09:48:17 #417 №2494896 
Можно ли на сишарпе написать консольное кроссплатформенное приложение типа вима или нортон коммандера? То есть можно ли рисовать в консоли как на экране по знакоместам: символ и аттрибут?
Или кроссплатформенность позволяет работать с консолью в режиме потока: читать символы из него и выводить символы без перескакивания по координатам?
Аноним 22/10/22 Суб 10:00:18 #418 №2494981 
>>2494896
>Можно ли на сишарпе написать консольное кроссплатформенное приложение типа вима или нортон коммандера
Можно, но UI будет на каком-нибудь электроне

>То есть можно ли рисовать в консоли как на экране по знакоместам: символ и аттрибут
Чего?

>Или кроссплатформенность позволяет работать с консолью в режиме потока: читать символы из него и выводить символы без перескакивания по координатам
Тоже нихуя непонятно, но можно
Аноним 22/10/22 Суб 10:15:14 #419 №2495052 
>>2494981
Мне кажется ты не понимаешь как работают консольные приложения типа вима или нортон коммандера. Они не создают своё окно, а работают в рамках обычной консоли.
Допустим у нас есть консольное окно 80 на 25 знакомест и я мог бы вывести символ в любое знакоместо по любой координате. Учитывая, что можно задать цвет символа и цвет фона, то получается простая псевдографика.
Вопрос, поддерживает ли .Net Core такой режим работы?
Аноним 22/10/22 Суб 10:23:20 #420 №2495057 
>>2494833
>>2494838
Для вас гугол сделал голанг
Аноним 22/10/22 Суб 10:27:16 #421 №2495064 
>>2495057
Мне в МВП-треде запретили учить голанг и сказали учить сишарп
Аноним 22/10/22 Суб 11:33:15 #422 №2495079 
Что за уебанство ныть на любой сахар типо «ЭТО НЕЧИТАБЕЛЬНО!1!11!»??? Сука, взял один раз прочитал что это за фича и запомнил, вы наверно ещё на хаскель выёбываетесь изнеженные джавадебилы, а какой-нибудь банальный list comprehension в пиздоне вводит вас в панику
Аноним 22/10/22 Суб 11:34:44 #423 №2495080 
>>2495079
Соси писю
Аноним 22/10/22 Суб 11:38:45 #424 №2495083 
>>2495079
ну так попробуй распарси >>2494771
Аноним 22/10/22 Суб 11:42:46 #425 №2495084 
ascii-graphic.jpg
>>2494981
Работает! Даже на линупсе!
Аноним 22/10/22 Суб 11:45:00 #426 №2495085 
>>2495083
Если тебе дали инструмент это еще не значит, что надо с него такие хатки строить
Даже на одних ифах можно такое наворотить, что хуй ты его распарсишь

Все нитики на сахар в шарпе - закостенелые тупые уебаны, которым лень швелиться.
Аноним 22/10/22 Суб 11:56:38 #427 №2495093 
>>2495085
что значит не значит
как раз значит чтобы ты строил ТАКУЮ хатку вместо ручного кода
Аноним 22/10/22 Суб 12:04:15 #428 №2495094 
>>2484368 (OP)
Есть способ в VS автоматом добавлять в ссылочную базу проекта цепочи зависимых разделяемых библиотек?
Не надо кукарекать что это не для этого. Оно для того самого.
Аноним 22/10/22 Суб 12:07:00 #429 №2495095 
>>2495084
Но ведь .NET не кроссплатформенна!!!!???
Аноним 22/10/22 Суб 12:09:29 #430 №2495096 
image.png
>>2495095
Начнем с того, что .NET != .NET Core

мимо
Аноним 22/10/22 Суб 12:10:41 #431 №2495097 
>>2495095
Видимо было заложено в Mono, а микрософты украли их код для своего Core.
Аноним 22/10/22 Суб 12:14:21 #432 №2495098 
>>2495096
Начнем с того, что .NET Core уже легаси и у нас теперь просто .NET
Аноним 22/10/22 Суб 12:15:35 #433 №2495100 
>>2495098
>.NET Core уже легаси и у нас теперь просто .NET
Вы че там, охуели совсем? Я ж только посрать отошел! Заказанные свежие книжки по кору только через неделю приедут. Вкатился, блять.
Аноним 22/10/22 Суб 12:16:31 #434 №2495102 
>>2495100
Какие книги? Доки от майкрософт лучшие среди всех прочих языков
Аноним 22/10/22 Суб 12:16:51 #435 №2495103 
>>2495100
Что заказал?
Но вообще книжки устаревают уже на выходе, потому что каждый год выходит новая версия, которая всё ломает.
Аноним 22/10/22 Суб 12:19:52 #436 №2495107 
image.png
image.png
>>2495102
>>2495103
Хохла какого-то и пиндоса какого-то.
Аноним 22/10/22 Суб 12:20:26 #437 №2495108 
>>2495094
Бамп, заебали, книгоебы.
Аноним 22/10/22 Суб 12:25:23 #438 №2495112 
>>2495100
Зачем читать бумажные книги
Из них даже код не скопировать
Аноним 22/10/22 Суб 12:26:02 #439 №2495113 
6156255835.jpg
6228320071.jpg
>>2495107
А надо было
Аноним 22/10/22 Суб 12:27:36 #440 №2495115 
>>2495113
А вторая-то нахуя? Играть в байтоеба на шарпе?
Аноним 22/10/22 Суб 12:27:45 #441 №2495116 
>>2495115
>вторая
первая
Аноним 22/10/22 Суб 12:28:31 #442 №2495118 
>>2495115
>>2495116
На каждом собесе дрочат по Рихтеру
Аноним 22/10/22 Суб 12:28:39 #443 №2495119 
>>2495112
>Из них даже код не скопировать
Пиши ручками, развивай моторику, нюфажина.
Аноним 22/10/22 Суб 12:29:29 #444 №2495120 
>>2495118
Хз, ни разу не спрашивали. Это в ойропейских потогонках наверное такой хуйней страдают, чтобы зарплату сбить.
Аноним 22/10/22 Суб 12:30:16 #445 №2495121 
>>2495118
>На каждом собесе дрочат
Так а зачем? Чтобы потом байтоебить на шарпе?
Аноним 22/10/22 Суб 12:34:42 #446 №2495124 
>>2495121
Есть свои подводные камни вроде автобоксинга, которые могут существенно снижать производительность программы.
Аноним 22/10/22 Суб 12:39:55 #447 №2495131 
>>2495124
Понятно. Ну раз вы тут такие умные, может ответите наконец на простой вопрос? >>2495094 Он уж поважнее этих охуительных потерь на прозрачной запаковке в интерпретируемом языке.
Аноним 22/10/22 Суб 12:41:39 #448 №2495134 
>>2495131
Язык компилируемый! Причём первый раз из исходников в байт-код, а потом из байт-кода в нативный код процессора.
Аноним 22/10/22 Суб 12:42:51 #449 №2495136 
>>2495134
>Язык компилируемый
Хорошо. А что с формализацией зависимостей между разделяемыми библиотеками? >>2495094
Аноним 22/10/22 Суб 12:50:03 #450 №2495139 
>>2495136
Лес рук! Вам бы лишь бы на собеседованиях с умным ебалом ответы на вопросы угадать, а дальше хоть трава не расти, ебашите такой же говнокод как и все, только с претензией.
Аноним 22/10/22 Суб 12:51:35 #451 №2495143 
Уэсака Сумирэ в русском книжном магазине.webm
>>2495108
Если книг читать не будешь - скоро грамоту забудешь! (с) Уесака Сумире, японская писечка
Аноним 22/10/22 Суб 13:51:33 #452 №2495181 
Ты о чем?
Аноним 22/10/22 Суб 14:29:26 #453 №2495203 
Почему в вижле ставишь темную тему, но окно с настройками всё равно светлое?
Аноним 22/10/22 Суб 15:27:36 #454 №2495242 
Как в WPF кинуть в свойство экземпляр объекта?

Допустим есть некая кнопка, которой надо перебросить ссылку на экземпляр Grid.
<CustomButton TargetGrid="{Binding ElementName=MyGrid}" />

Выводит ошибку:
Cannot find source for binding with reference 'ElementName=MyGrid'. BindingExpression:(no path); DataItem=null;

А какой Path, если я не хочу биндить свойство, я хочу биндить экземпляр целиком?
Аноним 22/10/22 Суб 15:35:16 #455 №2495247 
>>2495242
Path=. в таких случаях
Аноним 22/10/22 Суб 15:47:30 #456 №2495254 
>>2495247
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=MyGrid'. BindingExpression:Path=.; DataItem=null; target element is 'CustomButton' (Name='MyButton'); target property is 'TargetGrid' (type 'Grid')
Аноним 22/10/22 Суб 15:48:33 #457 №2495255 
>>2495247
>>2495254
Каждый раз пишется DataItem=null
Аноним 22/10/22 Суб 16:40:37 #458 №2495332 
2022-10-2216-29-19.png
Чет не заводится никак.

Короче (пикрил) есть два фрейма:
ModsPanelInserted и ModsPanelExpanding.

Задача состоит в том, чтобы страница типа ModifiersPanel сама себя перемещала из одного фрейма в другой. Но страница не знает куда ей перемещаться, для этого в нее добавлены два свойства:
InsertedFrame и ExpandingFrame (оба реализованы через DependecyProperty), в которых должны передаваться ссылки на оба фрейма.

Собсно в XAML я пытался передать экземпляр на фреймы, но без толку.
Причем во второй вариант с RelativeSource не выдает ошибки, но все равно свойство остается пустым.
Аноним 22/10/22 Суб 16:42:26 #459 №2495336 
>>2489242
Вкатуны скорее нахуй никому не нужны. Будут брать мидлов-синьйоров. Всех остальных нахуй
Аноним 22/10/22 Суб 16:48:41 #460 №2495349 
>>2495336
У меня дногруппник вкатился на джаву в сбер на прошлой неделе единственный из группы пока нашел работу
Аноним 22/10/22 Суб 16:50:39 #461 №2495354 
>>2495332
Попробуй {Binding ,ElementName=ModsPanelInserted}
Аноним 22/10/22 Суб 16:54:25 #462 №2495362 
>>2495354
Первым делом так сделал.
Аноним 22/10/22 Суб 16:57:29 #463 №2495369 
>>2495332
Так ты свойству, которое grid принимает передаешь frame.
Аноним 22/10/22 Суб 17:01:42 #464 №2495376 
>>2495369
Не, не, сейчас фрейм. Актуально то, что в этом посте >>2495332 .В ошибке пишется, что не найден источник. Иначе бы ругался на неудачную попытку каста.

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=ModsPanelInserted'. BindingExpression:Path=.; DataItem=null; target element is 'ModifiersPanel' (Name='ModifiersPanel'); target property is 'InsertedFrame' (type 'Frame')
Аноним 22/10/22 Суб 17:04:16 #465 №2495384 
>>2495376
Покажи код dp
Аноним 22/10/22 Суб 17:19:22 #466 №2495400 
2022-10-2217-18-16.png
>>2495384
https://pastebin.com/npn8YShA
Аноним 22/10/22 Суб 17:31:33 #467 №2495415 
>>2495254
Ну не знает он где этот элемент mygrid в дернве
Аноним 22/10/22 Суб 17:33:45 #468 №2495417 
>>2495400
Во первых не RegisterAttached, а просто Register, во вторых класс должен быть унаследован от UIElement, в третьих геттер и сеттер должны выглядеть так:
public Frame InsertedFrame{
get => (Frame)GetValue(InsertedFrameProperty);
set => SetValue(InsertedFrameProperty, value);
}
Аноним 22/10/22 Суб 17:57:50 #469 №2495445 
>>2495349
Вполне логично. Шанс вката в джаву почти в 2 раза выше, чем в сишарп. Там и вакансий больше и конкурентов меньше.
sage[mailto:sage] Аноним 22/10/22 Суб 18:31:54 #470 №2495503 
Вопрос, скорее не по шарпу, а по РУЧКАМ. Вот пишу я двач, сделал удаление постов /api/posts/delete, а сделал баны /api/bans/create. А теперь мне нужна функция удалить+забанить, как поступить? Новый контроллер с эндпоинтом вида /api/mod/deleteAndBan или добавить в параметры удаления поста флаг AlsoBan?
Аноним 22/10/22 Суб 18:35:16 #471 №2495510 
>>2495503
Модифицируй удаление поста с необязательным аргументом bool ban. Почему так? Нет смысла банить без удаления поста. Нет смысла держать отдельный ендпоинт для банов, какой в этом практический смысл? Если ты банишь кого-то, значит его пост который нарушает правила сайта (не просто же так бан выдали, да мочух?) должен быть удален.
Аноним 22/10/22 Суб 18:40:15 #472 №2495513 
>>2495503
Урлы - это ресурсы, а не действия, в них не должно быть глаголов. Нет сущности "delete". Должна быть ручка DELETE /api/posts/post_id, куда может передаваться флаг ban, про него правильно всё сказали.
Аноним 22/10/22 Суб 18:47:45 #473 №2495521 
>>2495513
Двачаю, еще парашу в виде bool ban небходимо завернуть в dto какую-нибудь и вьюмодельку, а для респонса сделать условный АпиРеспонсБилдер который будет возвращать всегда одинаковую хуйню:
1. Дата и время ответа
2. Свойство Data (будет отражать сам ответ контроллера)
3. Свойство Error
В таком случае ответ ендпоинта всегда будет структурирован и условному мобильному дауну который юзать будет ендпоинты всегда будет приходить структура
{
dateTime: "...",
data: { ... жсон},
error: null
}

Так же, если сильно надо, можно добавить другие поля значимые, типа code. Офк возвращать надо Ok(ApiResponseBuilder.CreateApiResponse<T>(T data)) в случае если всё норм и BadRequest(ApiResponseBuilder.CreateErrorApiResponse<T>(message)) если например условный юзер не найден. Добавлять [ProduceResponseType] на контроллеры для OK и BadRequest, а сами методы контроллера должны возвращать (всегда) Task<IActionResult>1
Аноним 22/10/22 Суб 19:02:30 #474 №2495534 
>>2495510
>ендпоинт для банов, какой в этом практический смысл?
Ну бан можно отменить, можно просматривать баны по каким-то критериям.
>Нет смысла банить без удаления поста
Я тоже так думаю. Но есть но, а вдруг админ захочет забанить айпи/подсеть просто так (ну там торы хуйоры, страна не та и т.д.)
>>2495513
> в них не должно быть глаголов.
А это всегда так или для рест-сектантов? А то вот, апи вк полон глаголов, например. Но я там в урлах delete написал для наглядности, у меня то в коде все лк ага, как же
Аноним 22/10/22 Суб 19:13:45 #475 №2495548 
>>2495534
> А это всегда так или для рест-сектантов?
Для рест-сектантов, конечно же. У нормальных людей эндпоинты типа POST /api/posts/deletePostById, всё через POST, везде глаголы, никакого GET, в ответе всегда 200 OK и код ошибки в теле ответа.
Аноним 22/10/22 Суб 19:17:36 #476 №2495550 
Capture.JPG
шарпач, надеюсь не слишком сумбурно, посоветуй как минимизировать теребоньканье желтых методов, но всегда использовать последние обновленные данные и если поменялись то вызывать execute. красный метод дергается раз в фиксированное время, но голубенькие могут прилететь в любой момент. может их стоит на эвент повесить? но что будет если красный метод притащит новые models уже после того как эвент отработал?
Аноним 22/10/22 Суб 19:21:25 #477 №2495552 
>>2495548
пик
>>2495521
>[ProduceResponseType]
Можешь пояснить, а то мне лень гуглить? Это в рантайме проверяет что вернут метод? И что будет, если я верну например 301, который не указан в аттрибуте? Или это только для сваггера?
Аноним 22/10/22 Суб 19:21:45 #478 №2495553 
index.jpg
>>2495552
вот пик
Аноним 22/10/22 Суб 19:41:04 #479 №2495615 
>>2495552
>сваггера
Да
Аноним 22/10/22 Суб 20:31:04 #480 №2495811 
>>2495513
>Нет сущности "delete". Должна быть ручка DELETE /api/posts/post_id
Вот посмотрел на свой говнокод еще раз и у меня есть
/api/threads/pin /api/threads/lock etc
получается я должен это переделать на
[PATCH] /api/threads/{id}
и получается в body гнать на сервер все значения полей для треда, включая текстовые? А если это сущность, где много текстовых полей, гнать это все на сервер ради обновления одного флага (хуита). Проверять на нулл в модели? А если налл валидное значение? Так много вопросов и нихуя не понятно. А все статьи в тырнете описывают только простейшие случаи, где никаких проблем офк нет.
Аноним 22/10/22 Суб 20:48:09 #481 №2495830 
>>2495553
Уж как знать. Это называется удалённым вызовом процедур, используется много где и на соглашения restful совсем не похоже.
Аноним 22/10/22 Суб 21:00:52 #482 №2495837 
>>2495811
Да, PATCH. Надо только решить эту проблему:
> Проверять на нулл в модели? А если налл валидное значение?
Для валидных значений можно передавать не null, а 0, пустую строку, пустой список и т.д. Так и отличать не заданное значение от не переданного. Это опять же простые случаи, в более сложных придётся выдумывать флаги для идентификации, что указанное поле передано. Да, сплошные костыли в этом ресте. Особенно если действие не вписывается в концепцию круда.
Аноним 22/10/22 Суб 21:28:48 #483 №2495851 
2022-10-2220-58-37.png
>>2495417
> RegisterAttached
Исправил

> во вторых класс должен быть унаследован от UIElement
Это Page, а она наследует UIElement (пикрил)

>третьих геттер и сеттер должны выглядеть так
А какая разница через что присваивать? Мне геттер не нужен. Просто через свойство не так универсально.
В любом случае я попробовал и не помогло.

Если присваивать через код, то норм работает. Похоже биндить можно только свойства, но не экземпляр класса целиком.
Аноним 22/10/22 Суб 21:44:33 #484 №2495861 
>>2495550
Опиши задачу, возможно стоит отказаться вообще от этого
Аноним 22/10/22 Суб 21:45:51 #485 №2495864 
image.png
image.png
>>2495851
>Похоже биндить можно только свойства, но не экземпляр класса целиком.
Хз, ща от нехуй делать потестил, всё биндится.
мимо другой анон
Аноним 22/10/22 Суб 21:46:05 #486 №2495865 
>>2495837
>Для валидных значений можно передавать не null
В этом нет смысла, значения должны быть nullable обязательно. Параметры которые являются обязательными помечаются в моделях как [Required]
Аноним 22/10/22 Суб 23:27:10 #487 №2495903 
>>2495864
И что я делаю не так?
Исходник https://dropmefiles.com/ZkPGK
Аноним 22/10/22 Суб 23:32:01 #488 №2495906 
>>2495903
Не качайте. Уродский дропмифайлс положил архив в архив, запаролил, а пошатал всю структуру файлов .

Другая ссылка https://transfiles.ru/6ibm4
Аноним 22/10/22 Суб 23:51:15 #489 №2495916 
Знаю норм жабу и шарпы, збс крудошлёпаю что на спринге что на асп, куда мне вкатываться, анон?
Аноним 23/10/22 Вск 00:03:23 #490 №2495920 
>>2495916
Вот ты спросил это здесь, но не в треде про жабу. Значит, шарп тебе ближе.
Аноним 23/10/22 Вск 00:09:33 #491 №2495923 
image.png
>>2495906
Вот такую ебалу написал, и прокнул OnChanged, приехал туда грид
Аноним 23/10/22 Вск 00:56:53 #492 №2495945 
>>2495923
Фуух, спасибо! Завелось.
А почему работает только с UIElement? если я хочу передать фрейм и ставлю тип свойства Frame, то пишет
Cannot create default converter to perform 'one-way' conversions between types 'ModifiersPanel' and 'System.Windows.Controls.Frame'. Consider using Converter property of Binding. BindingExpression:Path=; DataItem='ModifiersPanel' (Name='uModifiersPanel'); target element is 'ModifiersPanel' (Name='uModifiersPanel'); target property is 'ExpandingFrame' (type 'Frame')


Приходится каждый раз делать каст. Ну тут я попробую разобраться сам. Еще раз спасибо.
Аноним 23/10/22 Вск 01:27:27 #493 №2495957 
>>2495861
я нашел как мне кажется охуенное решение:
1. сделал энум флаги
2. каждый тик флаги проверяются:
if ((state & flagname) == flagname)
3. если да то выполняется какой-либо из этапов обновления кешей и целевой метод
флаги моделей выставляются тоже каждый тик если обновились
а флаги из гуя нанизываются |= flagname по эвенту
после выполнения целевого метода флаг сбрасывается
таким образом каждый тик в теории у меня самые последние данные, а если им не надо обновляться то и не надо...
Аноним 23/10/22 Вск 03:06:36 #494 №2495986 
2022-10-2302-59-58.png
>>2495945
Сука как же меня бесит этот впф. Самое нелогичное говно во вселенной. Я кодом мог написать две строки сутки назад.

Ну какого хуя снова не работает? Как забиндить родителя?
По имени не могу — цикличная зависимость.
Начинаю искать предка — предок не найден.
Даже Self не работает.

Я уже тупо перебрал все ключевые слова и комбинации.
Аноним 23/10/22 Вск 03:51:38 #495 №2495993 
>>2495986
Так юзай WinForms, они простые и логичные.
Аноним 23/10/22 Вск 10:10:54 #496 №2496021 
Что с VS? Просто не устанавливается
Аноним 23/10/22 Вск 10:36:33 #497 №2496029 
>>2495993
>Нет ног — нет проблем
Аноним 23/10/22 Вск 11:04:54 #498 №2496051 
Image 1.png
>>2495986
хз че там у тебя. слепил кастомный проперти для контрола и попробовал аналогично - проперти получает родительскую кнопку
Аноним 23/10/22 Вск 11:42:23 #499 №2496074 
>>2496051
Заверни во Frame
Аноним 23/10/22 Вск 11:52:54 #500 №2496084 
2022-10-2311-45-36.png
>>2496051
Хз что за магия.
https://transfiles.ru/sthr6
Аноним 23/10/22 Вск 11:53:47 #501 №2496086 
Безымянный.png
Мне чет скучно.
Потому сейчас мы будем писать TCP-чатик.
От вас - предложения по тому как улучшить это дело.
Аноним 23/10/22 Вск 12:07:59 #502 №2496102 
>>2496021
ВПН включи
Аноним 23/10/22 Вск 12:09:53 #503 №2496104 
>>2496021
У меня он еще попытками связаться с сервером грузит проц на 40%
Аноним 23/10/22 Вск 12:11:15 #504 №2496106 
>>2496086
А потом тебя всем тредом чятить?
Аноним 23/10/22 Вск 12:13:20 #505 №2496108 
>>2496074
с Frame не работает. Ну и плюнь на него.
Используй DataContext (тру) или проксиобъект сделай (неплохо, но не тру в данном случае).

Ну и вот тебе еще в копилку решений
https://pastebin.com/VPtVBst0
в данном случае не работает ибо видит выше родителя, но работает если нужно биндить всякие меню и прочую хрень что не найти в дереве.
Аноним 23/10/22 Вск 12:52:49 #506 №2496123 
Безымянный.png
2.png
>>2496106
Не знаю.

Блин. Чет не могу придумать формат сообщения.
Пока что придумал "[clientId] message" Но эт какая-то херня. Надо нормальный формат в духе: [len][headers][body]. Но чет не знаю я. Ды.
Аноним 23/10/22 Вск 12:54:22 #507 №2496124 
>>2496123
Признайся. ты просто хвастаешься темой в студии. А на формат сообщений тебе пох.
Аноним 23/10/22 Вск 12:56:12 #508 №2496125 
>>2496124
Не.
Я могу на дефолтную поменять.
Я ж сразу сказал. Мне - скучно. Хочу чатик нахуячить. И думал скучающие аноны - посмотрят,за полетом моей фантазии и будут чет там советовать. Типа да. Укажут, где я говнокодю.
Аноним 23/10/22 Вск 12:57:31 #509 №2496126 
>>2496124
>>2496125
Ну. Т.е. чтобы я не сразу вывалил там охуевшую хуйню на 100500к строк, и никто бы не стал разбираться. А по частям.
Аноним 23/10/22 Вск 13:30:34 #510 №2496129 
>>2496108
>с Frame не работает. Ну и плюнь на него.
У меня во фреймы загружается страница, а их может содержать вроде только Frame и NavigationWindow.

>DataContext
А каким образом? Насколько я понял, можно создать класс, а DataContext просто делает доступным свойства этого класа в XAML.

Или нужен какой-то промежуточный класс, свойства которого связываются с Фреймами. А затем Страница свзязывается со свойствами класса?
Аноним 23/10/22 Вск 13:37:11 #511 №2496135 
>>2496129
Зачем тебе обязательно страница то? Используй юзер контрол место неё да и всё
Аноним 23/10/22 Вск 14:20:37 #512 №2496161 
>>2496129
>У меня во фреймы загружается страница
хз. никогда не использовал Frame.
Суть Frame - изоляция. Ну чтобы типа оно работало в своей песочнице, не наследовало стили (кроме основных стилей приложения) и поэтому не наследует DataContext, ну и такие проблемы биндинга

ContentControl + немного кода на коленке = отлично работают.

>А каким образом? Насколько я понял, можно создать класс
Для тебя наверное никаким. Раз ты решил использовать Frame значит "так надо" и в нем....ну можно в code-behind прокинуть DataContext странице, но...собственно в этом месте можно прокинуть и сам Frame, то есть именно то, что ты хочешь сделать через xaml

То есть ты изи можешь решить проблему через code-behind/attached/behaviors/...
и лично я бы решил создав аттачед с кодом

>Или нужен какой-то промежуточный класс
Такое тоже возможно. Кодится класс который обычно называют вида BindigProxy, который кладется в ресурсы окна и его видят все кому не лень
типа вот https://thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/
только в твоем случае холдер ссылки.

Но проще атачед сделать прокидывающий фрейм странице..
...но лично я вообще хз зачем странице знать про родителя вообще, а уж тем более про то, что это фрейм. Это неправильный подход в принципе.
Аноним 23/10/22 Вск 15:09:44 #513 №2496209 
>>2496135
>>2496161
Страница позволяет вынести группу элементов, как будто это отдельное окно — со своим XAML-дизайнером. Это позволяет стакать окна, как сделано в вижуал студии, к примеру. Да и вообще удобно.

Вы должны понимать, что я не знаю какие там впереди подводные камни. Я взял страницу как нечто очевидное для моей задачи. Затем оказалось, что страница может помещаться только во фреймы. Затем оказалось, что и фреймы имеют свои ограничения при биндинге.
Маленькие ограничения нарастают как снежный ком и приводят тебя в тупик.

>>2496135
>Используй юзер контрол
А на чем о будет основан? Мне надо плодить сущности. Сперва нужна все та же страница, которая обязательно оборачивается во фрейм, а дальше я это оборачиваю в грид — вот он мой контрол, основанный на этом гриде. У меня иногда кровь из глаз от количества вложений.

Сидит дед, во сто шуб одет. Ответ: WPF-кнопка
Аноним 23/10/22 Вск 15:17:25 #514 №2496218 
>>2496209
> как будто это отдельное окно — со своим XAML-дизайнером
>Это позволяет стакать окна, как сделано в вижуал студии
не понимаю. покажи пример.
Аноним 23/10/22 Вск 15:17:58 #515 №2496222 
>>2496161
>но лично я вообще хз зачем странице знать про родителя вообще
Сомнительное решение, которое вероятно мне аукнется. Хотел сделать страницу целиком автономной — она может быть в нескольких местах в окне. Я хотел этой странице перекинуть список всех фреймов, в которых она может существовать. А далее страница сама перемещается от фрейма к фрейму, вместо того, чтобы основное окно перемещало страницу.

Короче, реализация как в вижуал студии, когда пользователь может объединить два окна в одно. Только там посложнее структура, а не просто стак.
Аноним 23/10/22 Вск 15:26:46 #516 №2496233 
>>2496222
>когда пользователь может объединить два окна в одно
типа такого что ли?
https://github.com/Dirkster99/AvalonDock
Аноним 23/10/22 Вск 15:31:37 #517 №2496237 
2022-10-2315-20-39.png
2022-10-2315-20-53.png
>>2496218
Ну смотри. Ты мог бы сделать как пикрил 1 — окно, которое визуально разбито на два блока.

Вот если каждый блок вынести на отдельную страницу. То у пользователя есть возможность просто сделать два отдельных окна (пикрил 2) , или поменять блоки местами, или расположить горизонтально.

Главное, что каждый блок живет своей жизнью.
Аноним 23/10/22 Вск 15:33:25 #518 №2496241 
>>2496233
Да, оно.
Аноним 23/10/22 Вск 15:33:53 #519 №2496243 
>>2496237
Тебе для этого не нужна страница, тебе нужен юзер контрол ещё раз тебе говорю
Аноним 23/10/22 Вск 15:41:53 #520 №2496251 
>>2496222
>>2496237
>А далее страница сама перемещается от фрейма к фрейму, вместо того, чтобы основное окно перемещало страницу.

У каждого свой подход к фломастерам.
Можно чтобы окно перемещало между фреймами
Можно чтобы страница страдала ерундой и перемещала
А можно сделать какой то манаджер который может вызвать окно или страница и он все устроит

но лично я просто бы сделал эти страницы юзерконтролами (а ведь страницы и есть юзеркотролы с оговорками и знанием (нужным ли в твоем случае??????) о навигации)
И у меня везде такие вьюмодели и DataTemplate и никто ни про какие фреймы и окна не знает - перемещение происходит одной вьюмодели коллекции в другую коллекцию, а там уже Items/ContentControl-ы сами найдут и отрисуют что нужно.
То есть принцип тот же, но все знание не на уровне визуальных контролов - их дело только рисовать содержимое и ничего не знать.

Если можно все решить на уровне вьюмоделей и не лезть в code-behind то я так и делаю.
Аноним 23/10/22 Вск 15:50:11 #521 №2496259 
>>2496243
>>2496251
Я не знал про юзер контролы. Я думал речь идет о классе, наследующем какой нибудь грид.
Спасибо, теперь понял.
Аноним 23/10/22 Вск 16:01:40 #522 №2496266 
>>2496243
>>2496251
У юзер контролов даже превью есть, какая годнота.
Содержимое фреймов не видно в дизайнере.
Моя жизнь больше не будет прежней.
Аноним 23/10/22 Вск 16:20:07 #523 №2496287 
>>2484368 (OP)
Кроме юнити что ещё можно пилить?
Аноним 23/10/22 Вск 17:11:27 #524 №2496441 
>>2496419
А ведь выше по треду уже говорилось про вечное "на завтра операция "
Аноним 23/10/22 Вск 17:14:09 #525 №2496443 
>>2496266
А чего ему не быть. Юзер контрол это обычный контрол
Как та же кнопка только без поведения и дефольного шаблона
Это Page особый
Аноним 23/10/22 Вск 17:23:02 #526 №2496450 
>>2496447
Тогда там было написано на пятницу
А еще за день до этого на четверг
Аноним 23/10/22 Вск 17:41:19 #527 №2496532 
>>2496524
Кому ты лечишь
Вот еще мой пост сохранился >>2493006
Аноним 23/10/22 Вск 18:35:05 #528 №2496638 
как вкатиться в data oriented design?
Аноним 23/10/22 Вск 18:45:14 #529 №2496665 
>>2496638
Как засунуть жирафа в холодильник?
Аноним 23/10/22 Вск 19:22:50 #530 №2496708 
У всех сейчас без впн студия не обновляется? Пытался скачать пакетов, висит вечная проверка обновлений.
Аноним 23/10/22 Вск 19:33:14 #531 №2496723 
>>2496708
У меня пока обновляется, проверил только что.
Аноним 23/10/22 Вск 19:42:32 #532 №2496739 
>>2496723
Ты впн используешь?
Аноним 23/10/22 Вск 19:50:39 #533 №2496747 
>>2496739
Нет.
Аноним 23/10/22 Вск 20:40:56 #534 №2496771 
>>2496123
Как называется болезнь, когда маркируется табуляция?
Аноним 23/10/22 Вск 21:08:30 #535 №2496790 
>>2496771
то есть русская студия
анимешная тема (при этом справа нет баров чтобы не закрывать рисунок)
тебя не смущают )
Аноним 23/10/22 Вск 21:16:18 #536 №2496796 
>>2496771
Называется "предпочтения".
Аноним 23/10/22 Вск 23:10:18 #537 №2496857 
>>2496796
У Ганнибала Лектора тоже были "предпочтения".
Аноним 23/10/22 Вск 23:11:22 #538 №2496858 
>>2496790
Все это меркнет перед шумом из точек.
Аноним 23/10/22 Вск 23:35:17 #539 №2496887 
>>2496857
Ещё Гитлера приведи в пример. Настройки в студии не убивают людей.
Аноним 24/10/22 Пнд 08:05:21 #540 №2497015 
Пилю движок для вн, надо добавить возможность портировать под мобилки и декстоп. Можно ли это сделать с помощью юнити? Типа машинно правишь шарп скрипты а потом через консоль билдишь например под ведро? Или лучше мауи? Реакт натив сойдет?
Аноним 24/10/22 Пнд 09:31:48 #541 №2497028 
>>2497015
Моногейм возьми
Аноним 24/10/22 Пнд 10:49:42 #542 №2497059 
>>2497015
> движок для вн
> с помощью юнити
> Или лучше мауи
Годот.
Аноним 24/10/22 Пнд 11:56:08 #543 №2497091 
>>2497015
Годот попробуй.
Там можно настроить билд на разные платформы через консоль парой команд.
Я пару лет назад как-то делал. Собрал батник, который командовал годоту сборку релизов под нужные мне платформы (андроид, веб и винда), а потом через батлер сразу деплой всего этого на itch.io. И грубо говоря у меня с нажатия одной кнопки сразу релиз обновлялся на сайте.
Сейчас правда я все это забросил.
В годоте еще и нормальный шарп встроен, в отличие от того огрызка в юнити. Плюс если есть навыки можно пересобрать сам движок, выкинув оттуда все лишнее (например 3Д если оно не нужно) и получить относиетльно легковесные поделк (но тут уже знание плюсов нужно или нужных людей)
Аноним 24/10/22 Пнд 14:20:26 #544 №2497168 
image.png
Ребят, как в PostrgreSQL передать json данные? Использую npgsql.
Аноним 24/10/22 Пнд 14:20:47 #545 №2497169 
image.png
Ребят, как в PostrgreSQL передать json данные? Использую npgsql.
Аноним 24/10/22 Пнд 14:21:14 #546 №2497170 
Ого, а капча-то валидна оказалась.
Аноним 24/10/22 Пнд 14:37:11 #547 №2497179 
>>2497170
Лол.
Аноним 24/10/22 Пнд 18:42:33 #548 №2497348 
Capture.JPG
>>2495957
какую-то хуйню я нагородил в общем. ночью это казалось охуенным решением
есть ли способ похитрее сделать?
я не могу отойти от необходимости теребонькать WeightChangePolling() и соответственно весь метод каждые N секунд
Аноним 24/10/22 Пнд 19:16:06 #549 №2497372 
>>2497348
Анон, ты флаговый enum написал довольно тупо.
1)Он используют байтовую маску, поэтому любое значение с 0 будет считаться активным всегда (то есть 6 он будет воспринимать как 0 + 2 + 4)
Аноним 24/10/22 Пнд 20:32:01 #550 №2497399 
Capture.JPG
>>2497372
я тупенький и не очень разбираюсь, про флаги и байтовые операции узнал только вчера. как правильнее сделать?
алсо вот что сделал. насколько это ГРЯЗЬ?
протестировал, вроде бы значение с 0 воспринимает правильно и выполняет нужный метод при нужном значении
Аноним 24/10/22 Пнд 20:59:37 #551 №2497409 
>>2497399
Полный капец. Тебя уволить и не брать даже на завод.
Аноним 24/10/22 Пнд 21:01:54 #552 №2497411 
Как адекватно переименовывать WPF классы, типа Windows или UserControl? Как только переименовываю, все летит к чертям, у студии крыша едет.

Приходится создавать новый файл, с новым именем класса и копипастить код туда.
Аноним 24/10/22 Пнд 21:09:03 #553 №2497417 
>>2497409
хорошо, полный капец. можешь объяснить почему?
я не работаю программистом, это хобби.
Аноним 24/10/22 Пнд 21:20:16 #554 №2497427 
>>2497399
1) Флаговый енам можно начать со значения 1 << 0 - он будет равен единице
2) Название класса должно быть с большой буквы.
3) Метод InitMethods - не нужен, все это в конструктор. Плюс он у тебя даже не сработает, т.к. actions - readonly
4) Переменная actions должна называться _actions
5) Использовать флаговый енам в качестве ключа словаря в таком виде - ебанизм. Во первых ты не все варианты учел (например Method1+Method2 и т.д.) и при выпадении словишь исключение. Во вторых если у тебя вариантов станет побольше ты заебешься прописывать все варианты.
Аноним 24/10/22 Пнд 21:50:46 #555 №2497441 
Ананасы, накидайте актуальной литературы по C#. Как Рихтер только для новых версий языка.
Аноним 24/10/22 Пнд 22:04:52 #556 №2497454 
>>2497441
Шапку читай
Аноним 24/10/22 Пнд 22:14:53 #557 №2497458 
>>2497417
я код не смотрел. просто демотивирую.

а теперь посмотрел.
хз че он делает, но зачем кастовать к инту енумы хз. Их можно использовать прямо как ключи у словаря
А еще можно унаследовать енум от байта и экономить.
Аноним 24/10/22 Пнд 22:38:57 #558 №2497467 
>>2497427
спасибо за развернутый ответ
1. не знал про это но читал что флаговые энамы вроде бы требуют None = 0
2, 4. класс тестовый я чисто проверить возможность но да я насвинячил
3. всмысле не сработает? я же запустил этот код, все сработало и заполнило даже с ридонли.
5. это да, я затуп
но у меня будет только три варианта твердо и четко, больше не будет
и тут подумал а зачем мне вообще флаги и вот это вот все добавление?
я хочу сделать такую вещь.
у меня только три метода которые я хочу вызывать в определенном порядке:
метод 1 => метод 2 => метод 3 если данные для метода 1 изменились
метод 2 => метод 3 если данные для метода 2 изменились, но данные для метода 1 в порядке
и метод 3 если данные для метода 3 изменились, но все остальное нет.
>>2497458
я где-то прочитал что энумы оптимизированы под инт, а если использовать как ключ энум то там вроде бы получается объект вместо инта который внутри в инт, но я не уверен, я хотел чисто инт сравнивать
Аноним 24/10/22 Пнд 22:49:36 #559 №2497472 
>>2497467
ну словарю на тим плевать - он все равно вызовет GetHashCode и потом сравнивать будет.
А енумы внутри себя имеют кучу переборов "is int32/byte/double"

Вообще магические структуры.
Аноним 25/10/22 Втр 01:29:03 #560 №2497546 
Блять, я нихуя не понимаю. Просто ни Ху я, ну ладно чуть-чуть понимаю. Почему код стал таким "другим". Нет я встречал и использовал интерфейсы(нямка), делегаты и прочая, но когда попал на работу и увидел кодище, то просто ахуеваю. Как будто три года изучения канули в лету и пиздец. Я тут за ночь могу написать дипломный проект, что рук охуеет, но тут это какой-то ужас
Аноним 25/10/22 Втр 05:16:42 #561 №2497558 
16382812100460.jpg
Я вот не совсем понимаю как работать с потоками и тасками. В каком случает таска создает поток, а в каком нет. Блин. Может кто-то подсказать?
Аноним 25/10/22 Втр 06:06:00 #562 №2497560 
>>2495083
>>2495085
>>2495093
Нихуя не понял, а что там не так? Условие - если значение больше 5 и четное, по моему все просто.
Аноним 25/10/22 Втр 06:59:20 #563 №2497565 
>>2497560
>если значение больше 5 и четное, по моему все просто
значение говоришь )
там вывод - 4
4 больше 5?

ты, прав, ты
>Нихуя не понял
Аноним 25/10/22 Втр 07:04:39 #564 №2497567 
>>2497558
ни в каком не создает. таска это "десктриптор задачи". аналогичен CancellationToken по сути.
Аноним 25/10/22 Втр 09:17:27 #565 №2497579 
>>2497558
https://ru.stackoverflow.com/a/1250885/422180
https://ru.stackoverflow.com/a/548879/422180
https://stackoverflow.com/questions/4130194/what-is-the-difference-between-task-and-thread
Аноним 25/10/22 Втр 10:21:18 #566 №2497597 
Поддерживает ли сишарп ковариантность и контрвариантность обощенных типов?
Аноним 25/10/22 Втр 10:23:06 #567 №2497598 
>>2497597
Ты про out T и in T?
Аноним 25/10/22 Втр 11:15:04 #568 №2497634 
>>2497598
Допусти есть классы:
class A { }
class B : A { }

Можно ли сделать так?
List<A> a = new List<B>();
или наоборот
List<B> b = new List<A>();
Аноним 25/10/22 Втр 17:40:46 #569 №2497925 
>>2497567
Если это так, то почему иногда когда я из таски обращаюсь к основному потоку, то он сыпет экспешный о том, что низя из другого потока к мейн потоку обращаться.
Когда писал бэкэнды, с этим проблем не было. А когда писал клиентские приложения, то орал.
Аноним 25/10/22 Втр 18:16:10 #570 №2497955 
>>2497925
я это 3 треда назад пояснял.
потому что у тебя в голове перемешались понятия

У тебя в голове таска - "вот это мне нужно выполнить отдельно в другом потоке/тредпуле"

А на деле есть такие понятия
1 таска, которая имеет семантику "задача", то есть что то логически отделить и выполнить.
2 Объект-дескриптор, который ассоциирован с этой задачей чтобы видеть статус, дожидаться и получить результат (его синонимы - Defer/Promise/Future/..)

Пункт 1 говорит про то что у задачи есть границы и вообще она будет выполнена и есть начало конец.
Но тут нет ничего про то "как она будет выполнена".

Поэтому таски сами по себе не работают. Это просто определение корутины, которые ты называешь тасками.

Их выполняют другие - тредпул, отдельные потоки, процессы, вообще никто (CancellationTokenSource)...

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

Туда же и async/await - он просто пихает все в контекст синхронизации или тредпул. Это механизм тоже не из TPL, а тупо сахар, который появился позже понятия тасков

Task.Factory.StartNew/Task.Run - несмотря на класс Task - тупо хелперы для запихивания задач в тредпул/свой поток (ну чтобы все было красиво и ты не работал напрямую с тредпулом, что неудобно)
Аноним 25/10/22 Втр 20:09:55 #571 №2498030 
Есть тут мастера работы с EFCore+Npgsql?

Смотритет какая фигня.
Сервер. TCP.
Подключаются 50к клиентов. Соответственно - тредпул расширяется. Пытается обработать клиентов. Все ок. Лезем в базу - хуяк, количество коннектов резко к максимуму подходит. Часть коннектов клиентов успешно обрабатывается. Дальше - все соединения, что создал EFCore - висят в Idle. Умирают через 5 минут. Это повторяется.
Собственно. Я нашел костыльный метод - убиваем коннект который больше 10 секунд в Idle. Но это пиздец же не правильно и кажется оно не должно так работать.

Проблема, как я понимаю, в том, что коннект привязывается к потоку в котором создан. А т.к. всюду асинхронщина и ConfigureAwait(false) - выходит так, что выполнение работы с сессией клиента - по потокам прыгает.
Почему так думаю? Потому что чтобы воспроизвести проблему - достаточно создать 110 тредов и в них контекст создать - сразу счетчик подключений в pgAdmin - скакнул, а потом оно Idle. И из других мест не подключиться.
Собственно. Че делать-то?
Вроде как PgSQL - хороший-годный. Я - дебил, что не следил за потоками и вот так вот скакал, чтобы ничего не простаивало. Но блин. Да.
Аноним 26/10/22 Срд 00:03:59 #572 №2498195 
>>2497955
Спасибо
Аноним 26/10/22 Срд 05:23:06 #573 №2498279 
16496137496602.png
Господа програмистеры, есть вопрос. Только что закончил изучать ООП. Я теперь могу претендовать на должность стажера/джуна?Если нет, то что мне в какую тему мне следует углубляться дальше? Алсо, планирую работать в бэкэнде.
Аноним 26/10/22 Срд 08:01:57 #574 №2498304 
>>2498279
Циклы и массивы изучил?
Аноним 26/10/22 Срд 08:04:57 #575 №2498305 
>>2498304
Нет. А шо це таке?
Аноним 26/10/22 Срд 08:57:51 #576 №2498315 
Какие вакухи вообще существуют на .net? Кроме asp.net.
Аноним 26/10/22 Срд 09:47:27 #577 №2498337 
>>2498315
Делать игоры на юнити
Аноним 26/10/22 Срд 10:10:42 #578 №2498347 
>>2498279
>Я теперь могу претендовать на должность стажера/джуна
Нет. Джуниор - это младший специалист.
Читай >>2484369
Со всем, что там написано в 8 пункте необходимо быть знакомым просто, этого достаточно
Аноним 26/10/22 Срд 15:52:07 #579 №2498588 
>>2498315
>Кроме asp.net
А зачем нужно что-то еще?
Аноним 26/10/22 Срд 17:32:54 #580 №2498831 
https://www.ozon.ru/product/asp-net-core-v-deystvii-318590549/
Где можно спиратить?
Аноним 26/10/22 Срд 17:44:10 #581 №2498852 
>>2498588
очевидно же чтобы было больше шансов.
Аноним 26/10/22 Срд 20:33:43 #582 №2499088 
>>2498831
https://vk.com/wall-54530371_344811
Аноним 26/10/22 Срд 22:51:31 #583 №2499158 
>>2499088
Это старое
>>2498831
Кину файлик попробую скоро
Аноним 26/10/22 Срд 22:55:04 #584 №2499160 
>>2499158
https://dropmefiles.com/wQzHi
Аноним 27/10/22 Чтв 00:17:26 #585 №2499214 
>>2499158
>Это старое
Комментарии читай, там новое.
Аноним 27/10/22 Чтв 01:34:50 #586 №2499239 
>>2498030
Это читал уже?
https://stackoverflow.com/questions/65692743/postgres-and-net-connection-pooling-best-practices
Аноним 27/10/22 Чтв 01:38:31 #587 №2499240 
2022-10-26 234806-pr - C# Thread.Version=40 – Atomanonimous-pc.png
15108678954610.png
Как запустить csc в интерактивном режиме?
Аноним 27/10/22 Чтв 04:41:02 #588 №2499266 
image.png
Аноны, проясните плс следующий момент.
Зачем в 26 строке создается объект базового класса с конструктором дочернего? Он же все равно не будет иметь весь функционал. Не легче создать объект дочернего?
Аноним 27/10/22 Чтв 07:05:46 #589 №2499274 
Господа, а где можно порешать задачки на закрепление материала? Глянул два самых популярных варианта - один сайт от телеграмма забыл как называется - 90% какая-то хуета на циклы, найти что-то на конкретную тему на грани фантастики. Второй же это кодварс, но в нем нихуя не смог разобраться, у меня английский совсем нулевый. Есть еще какие-то варианты?
Аноним 27/10/22 Чтв 09:46:20 #590 №2499338 
>>2499214
Новое, но на английском, не? А у меня на русском
Аноним 27/10/22 Чтв 10:08:42 #591 №2499362 
>>2499266
Создается объект дочернего класса и приводится к базовому
нахера? Ну может показывают что так можно. Для примера по полиморфизму кода не хватает.
Аноним 27/10/22 Чтв 11:09:29 #592 №2499399 
>>2499266
Почитай книжку "Философия Java" Брюса Эккеля. Там всё подробно разжёвано про ООП.
Аноним 27/10/22 Чтв 15:05:41 #593 №2499555 
Зачем в шестом асп.нет перелопатили стандартный шаблон и убрали класс startup?
Аноним 27/10/22 Чтв 16:15:43 #594 №2499647 
>>2499555
а зачем они сделали main без функции main?
для кого это все.
Аноним 27/10/22 Чтв 17:55:57 #595 №2499755 
>>2499555
Затем чтобы отсеивать долбоебов, которые до сих пор начинают проекты со стандартных шаблонов.
Аноним 27/10/22 Чтв 18:51:41 #596 №2499815 
>>2499755
аргумент уровня /b, но никак не /pr
Аноним 27/10/22 Чтв 19:42:29 #597 №2499846 
2022-10-2719-08-32.png
2022-10-2719-25-27.png
Аноны. Возникла проблема, не то чтобы нерешаемая, скорее решение через всякие жопы.

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

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

Так вот была идея завернуть юзер контрол в какой нибудь контейнер и опираясь на UserControl.ActualHeight менять высоту контейнера. И вот тут возникает проблемка.
1. Если контейнером будет Grid, то статическая высота грида делает ActualHeight контента равным, собсно, высоте грида. И я тупо не знаю до какой высоты анимировать.
2. Есть контейнером будет Canvas, то габариты холста никак не повлияют на актуальный размер контента. Но тут возникает другая проблема: по задаче, ширина UserControl должна быть равна ширине контейнера.

Короче, я не знаю как естественным образом взять максимальную высоту UserControl, если этот контрол может быть "сжат" гридом. И таких UserControl-ов будет 10500 и я не хотел бы в каждой прописывать новое свойство, добавлять подписки на события (даже если это будет абстрактный класс).
Аноним 27/10/22 Чтв 19:52:01 #598 №2499852 
>>2499510
>Если ООП, то вот тебе задача:
>Есть openweather API
Дядь, какой нахуй апи? Я пока только полиморфизм начал осваивать.
Аноним 27/10/22 Чтв 19:56:43 #599 №2499854 
>>2499852
Тогда какие тебе задачки нужны?
Аноним 27/10/22 Чтв 20:04:59 #600 №2499857 
>>2499852
Сила ООП не в 3х китах, а в гибкости, которое оно дает. Ты формируешь рабочий граф и все начинает работать, инкапсулируется, SOLID-ируется, сообщения бегают. В общем это нужно мозг форматировать чтобы ООП начать использовать по делу, а не просто так.

я очень давно не читал книг, поэтому посоветую старое -
дуй читать про паттерны, только не GoF, а что то типа Thinking about patterns (и похер что там жава), а потом вроде бы "Джошуа Кериевски: Рефакторинг с использованием шаблонов"(название вроде то, но год смущает) не сильно прорабатывая
(сам то я ее не дочитал, когда понял суть)
Аноним 27/10/22 Чтв 21:42:02 #601 №2499915 
Подскажите пожалуйста по поводу паттернов.
Я хочу, что бы разные части моей программы (которых может быть сколько угодно) работали с разными реализациями интерфейса IPrinter (которых тоже может быть сколько угодно).
В общем, в конструктор классов частей программы я буду передавать словарь с реализациями. Моя задача в том, что бы если в будущем появятся еще реализации интерфейса IPrinter, я мог добавить реализацию нового класса и дописать лишь одну строку - dictionary.Add("N", () => new PrinterN());

var dictionary = new Dictionary<string, Func<IPrinter>>();
dictionary.Add("1", () => new Printer1());
dictionary.Add("2", () => new Printer2());

var class_of_getter = dictionary["1"].Invoke();
class_of_getter.Print();

public interface IPrinter
{
public void Print();
}

class Printer1 : IPrinter
{
public void Print() => Console.WriteLine("hello 1");
}

class Printer2 : IPrinter
{
public void Print() => Console.WriteLine("hello 2");
}

Не является ли то, что я тут написал, антипаттерном? Возможно, кто-то уже такое придумал?
Аноним 27/10/22 Чтв 21:45:13 #602 №2499917 
>>2499510
Что такое кричать во View с точки зрения микросервиса?
Аноним 27/10/22 Чтв 22:09:49 #603 №2499933 
>>2499846
Кажись разобрался. В попыте канвас, в канвасе юзер контрол. И все трое биндят ширину к нужному объекту. Или двое — попыт сам растянется.
Аноним 27/10/22 Чтв 22:28:40 #604 №2499946 
>>2499917
Ты о чем? Микросервисы ничего о вьюшках не знают.
Аноним 27/10/22 Чтв 22:47:11 #605 №2499964 
>>2499915
>Не является ли то, что я тут написал, антипаттерном?
Под антипаттерн можно подписать практически, что угодно. То что, ты описал по факту разновидность паттерна стратегия, одного из самых часто применяемых.
>Возможно, кто-то уже такое придумал?
В DI контейнерах даже под это дело специальные механизмы есть, когда ты запихиваешь в контейнер кучу реализаций одного интерфейса, а потом при внедрении получаешь словарь на них и выбираешь нужный.
Поздравляю с изобретением велосипеда. Без сарказма.
Аноним 27/10/22 Чтв 23:05:07 #606 №2499977 
>>2499946
>необходимо реализовать микросервис... погода изменятся на новое состояние - кричать об этом во View

Не понял этот момент, кто кричать должен?
Аноним 27/10/22 Чтв 23:35:35 #607 №2499983 
>>2499917
вебсокеты же или другие постоянные коннекты.
Аноним 28/10/22 Птн 02:01:37 #608 №2500028 
посоны проясните моменты некоторые по неймспейсам и ассембли
вопрос 1:
есть dll #1. в нем статический класс со статическими методами и т.д., к нему обращаются изнутри, все туда-сюда
есть dll #2. с тем же статическим классом.
что будет когда два dll встретятся в одном ассембли?
два разных но одинаковых во всем кроме неймспейса статиков будет?
как поступать в таком случае если я не знаю заранее будут ли две дллки в одной ассембли?
вопрос 2(практически то же самое):
вот я хочу подключить сторонний код к своей хреноте №1. я ее хочу смерджить в один длл со своей хренотой №1. что будет если смердженный код встретится в одном ассембли с собой же но не смердженным(отдельный длл)?
и что будет если хренота №1 с этой либой встретится с хренотой №2 с тем же кодом и тем же неймспейсом?
как такие вещи вообще решаются? и надо ли
Аноним 28/10/22 Птн 03:45:33 #609 №2500080 
>>2500028
А ты проведи эксперимент. Сделай простые dll-ки по типу тех, что в твоем вопросе описаны и попробуй их объединить. Потом пацанам расскажешь, что получилось.
Аноним 28/10/22 Птн 09:25:51 #610 №2500122 
>>2499362
>Ну может показывают что так можно
В этом есть какой-то практический смысл?
Аноним 28/10/22 Птн 10:51:20 #611 №2500140 
>>2500122
Хз. Может демогстрация неявного каста и возможность присвоения экземпляра дочернего класса переменной базового. Больше код ничего не демонстрирует
Аноним 28/10/22 Птн 14:40:26 #612 №2500259 
>>2484368 (OP)
Можно ли вывести "автоматом" на консоль все имеющиеся переменные?
Аноним 28/10/22 Птн 15:15:01 #613 №2500278 
>>2500259
var variablesClass = new VariablesClass();
var allPublicFields = variablesClass .GetType(). GetFields(BindingFlags.Public | BindingFlags.Instance);
Как-то так.
Аноним 28/10/22 Птн 16:44:24 #614 №2500340 
>>2500278
>There is no argument given that corresponds to the required formal parameter 'classname' of 'Program.Warrior.Warrior(string, string, string, string, string)'
Аноним 28/10/22 Птн 16:50:55 #615 №2500345 
Блять, как сериализовать класс в xml, а потом в строку минуя ебучий Stream? Хочу лист с классом Valute сериализовать в xml строку, но нужно обязательно создавать ебучий файл, а мне он не нужен. Как быть? Подскажите, пожалуйста.
Аноним 28/10/22 Птн 17:27:22 #616 №2500381 
Есть грид с четырьмя строками.
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="20/>
<RowDefinition Height="*" MinHeight="150"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
</Grid>


Одна из строк имеет адаптивную высоту с ограничением минимума = 150.
Как ограничить основное окно, чтобы оно не сжималось меньше, чем так сказать, результирующий минимум грида с учетом всех строк?
Аноним 28/10/22 Птн 18:35:21 #617 №2500454 
Сап, аноны. Пилю свой пет-проджект, хочу один модуль из него разместить на гитхабе, чтобы пользователи могли докинуть фич, если им надо будет. Как подобное принято интегрировать в основной код? Публиковать в Nuget наверное не стоит, раз этот модуль только в моём проекте может использоваться?
Аноним 28/10/22 Птн 18:51:26 #618 №2500469 
>>2500345
А зачем создавать файл? MemoryStream для кого придумали?
Аноним 28/10/22 Птн 18:52:15 #619 №2500470 
>>2500381
выстави окну же MinHeight
20+20+150+20
Аноним 28/10/22 Птн 18:54:38 #620 №2500473 
>>2500454
>Как подобное принято интегрировать в основной код?
с высказыванием нехороших слов о авторе.
Это ведь не пхп/питоны всякие где можно вот так в продакшене забирать с гитхаба. Тут компилить нужно и с этим часто проблемы.
Аноним 28/10/22 Птн 19:43:23 #621 №2500522 
>>2500470
Самое очевидное, это при событии окна SizeChanged, чекать все ячейки грида. Это я и так знаю, я думал есть что-то более вменяемое.
Аноним 28/10/22 Птн 20:19:17 #622 №2500564 
>>2500522
зачем. Если ты знаешь минимальную высоту таблицы то можно выставить лимит окна и ничего не чекать.
Аноним 28/10/22 Птн 21:07:05 #623 №2500583 
>>2500564
Я не могу знать. Некоторые ячейки могут поменять свойства в процессе, поэтому я не могу где-то единожды вычислить значение. При этом расчеты в риалтайме при SizeChanged слишком затратны, если ячеек будет 100500.

А еще в некоторых ячейках стоит сплиттер, к примеру. У таких ячеек MinHeight предназначен для сплиттера, а сами ячейки не реагируют на изменение габаритов окна. Я не могу просто циклом пройтись по всем ячейкам и взять оттуда MinHeight.

А вручную указывать, мол, "здесь возьми MinHeight, а здесь ActualHeight" — это какой-то бред.
Аноним 28/10/22 Птн 22:09:57 #624 №2500593 
>>2500583
вообще не понимаю причем тут ячейки. Есть размер таблицы, можно следить за его SizeChanged, можно за SizeChanged окна - одинаково будет. Лучше за SizeChanged таблицы и выставлять MinHeight окна
Аноним 28/10/22 Птн 22:22:40 #625 №2500599 
изображение.png
>>2500345
решение
Аноним 29/10/22 Суб 00:23:18 #626 №2500631 
>>2500599
я в ахуе, запустил этот же пример,но чуть позже - уже ничего не работает АХАХХАХАХААХАХХХАХААХ
Аноним 29/10/22 Суб 01:38:21 #627 №2500655 
изображение.png
Подскажите, пожалуйста, что делать. Из класса сереализуется только IsSelect, всё остальное не сереализуется....
Аноним 29/10/22 Суб 02:03:39 #628 №2500665 
изображение.png
>>2500655
А нужно было всего-то добавить set везде
Аноним 29/10/22 Суб 02:49:46 #629 №2500670 
>>2500655
>>2500665
Пиздец. Я две недели потратил, чтобы как-то передавать информацию по именованным каналам, а оказывается есть сереализация.

И насколько она затратна?
Аноним 29/10/22 Суб 05:15:44 #630 №2500691 
Как по названию различать классы и методы и свойства?
Аноним 29/10/22 Суб 14:07:33 #631 №2500793 
>>2500670
Твое как-то и есть сериализация. Ничего в этом плохого

Другое дело что есть море универсальных, где за универсальность платишь размером сообщения или скоростью десереализации

И форматов очень много: текстовые xml/json (+сжатие), разные бинарные: cbor, messagepack, can n proto, bjson, protobuffers....

Затратность штука "придется замерять"
Но если не нужно суперхайперфоманс то общих решений хватает с головой
Выбор из них это уже холивары
Аноним 29/10/22 Суб 14:08:17 #632 №2500794 
>>2500691
Никак. Они определяются по контексту
Аноним 29/10/22 Суб 14:42:57 #633 №2500822 
Как в темплейтах WPF одному цвету присвоить значение другого цвета?

Цвет в одном файле
<Color x:Key="MyBaseColor">#FF00FF00</Color>

Цвет в другом файле должен получить данные из MyBaseColor
<Color x:Key="MyLocalColor" />


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

Разве нет никакой инкапсуляции в XAML? Это уже второй вопрос.
Аноним 29/10/22 Суб 15:36:47 #634 №2500842 
Я вам немного базы принес от си шарп лахты

In the software industry PHP is used first and foremost for small projects, because it can easily lead developers into writing code that is bad, disorganized and hard to maintain, making it inconvenient for more substantial projects. This subject is also debatable, but it is commonly accepted that, because of its antiquated concepts and origins it is built on and because of various evolutionary reasons, PHP is a language that tends towards low-quality programming, writing bad code and creating hard to maintain software. PHP is a procedural language in concept and although it supports the paradigms of modern object-oriented programming, most PHP programmers write procedurally. PHP is known as the language of "code monkeys" in the software engineering profession, because most PHP programmers write terrifyingly low-quality code. Because of the tendency to write low-quality, badly structured and badly organized programming code, the entire concept of the PHP language and platform is considered wrong and serious companies (like Microsoft, Google, SAP, Oracle and their partners) avoid it. Due to this reason, if you want to become a serious software engineer, start with C# or Java and avoid PHP (as much as possible).

A programmer’s productivity under pure C is many times lower compared to their productivity under modern general-purpose programming languages like C# and Java. A variant of C is used among Apple / iPhone developers, but not because it is a good language, but because there is no decent alternative. Most Apple-oriented programmers do not like Objective-C, but they have no choice in writing in something else. In 2014 Apple promoted their new language Swift, which is of higher level and aims to replace Objective-C for the iOS platform.

C++ is good when you have to program applications that require very close work with the hardware or that have special performance requirements (like 3D games). For all other purposes (like Web applications development or business software) C++ is inadequate. We do not advise you to pursue it, if you are starting with programming just now. One reason it is still being studied in some schools and universities is hereditary, because these institutions are very conservative. For example, the International Olympiad in Informatics (IOI) continues to promote C++ as the only language permitted to use at programming contests, although C++ is rarely used in the industry. If you don’t believe this, look through some job search site and count the percentage of job advertisements with C++.

The C++ language lost its popularity mainly because of the inability to quickly write quality software with it. In order to write high-quality software in C++, you have to be an incredibly smart and experienced programmer, whereas the same is not strictly required for C# and Java. Learning C++ takes much more time and very few programmers know it really well. The productivity of C++ programmers is many times lower than C#’s and that is why C++ is losing ground. Because of all these reasons, the C++ language is slowly fading away and therefore we do not advise you to learn it.
Аноним 29/10/22 Суб 16:19:37 #635 №2500857 
Стикер
>>2500822
Какая же ебанина... Либо я чего-то не знаю.
Вот есть практика, что перед стилями выводится список цветов\кистей, чтобы каждый раз не лазить по стилям. Любой стиль в MDSN так представлен.

Допустим в одном словаре ресурсов у меня стоит цвет
<Color x:Key="Background">#FF00FF00</Color>

Тут я подгружаю другой словарь ресурсов, у которого есть цвет с таким же ключом
<Color x:Key="Background">#00000000</Color>

Одно переопределяет другое.
И как быть? Переименовывать один из цветов? А затем шатать ВЕСЬ стиль, чтобы исправить все ссылки по этому ключу? А завтра появится еще один стиль и давай поновой.
Неужели нет способа как-то ограничить область видимости кистей? Может есть какой-то контейнер, в который можно сапизнуть все кисти?.
Аноним 29/10/22 Суб 16:40:12 #636 №2500867 
>>2500454
Как git сабмодуль.
Тогда у тебя в основном проекте и контроль будет из какой ветки тянуть версию библиотеки, так и пользователи сами у себя смогут впилить ветку с нужными фичами и переключаться на нее.

Так что учи git submodule.
Аноним 29/10/22 Суб 16:40:57 #637 №2500869 
>>2500857
дык в этом и есть смысл - можно переопределить лишь часть, остальное унаследуется.

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

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

давай имена стилям, наследуй, в общем СТРАДАЙ.

В остальном ...ну да в WPF с этим неудобно сделали.
Но не потому что можно переопределить, а потому что херово как раз с наследованием. Его нужно задавать явно.
Аноним 29/10/22 Суб 17:28:40 #638 №2500892 
2022-10-2917-17-17.png
2022-10-2917-18-48.png
>>2500869
Объясни тогда, какова практика работы?

Допустим, Вася Пупкин сделал стиль для кнопки (пикрил 1).
Он вывел две кисти для удобного редактирования стиля. После присоединения этого словаря стилей, кисти с ключами "Button.Background" и "Button.Outline" становятся общедоступными.

Второй сотрудник — Костя Синичкин, увидев эти кисти, решает забиндить их к каким-то другим элементам (они же в едином стиле). А через неделю заходит босс и говорит, что в нашем меню добавляется новая кнопка - СУПЕР КНОПКА!, не простая, а с совершенно новым стилем, и наш уважаемый третий сотрудник Петя Клюшкин, уже подготовил под это дело словарь ресурсов (пикрил 2).

Петя Клюшкин, как и Вася Пупкин тоже вывел две кисти с ключами "Button.Background" и "Button.Outline". И что же произошло? Все, что делал Костя Синичкин к херам переопределилось. Костя Синичкин ругает Васю Пупкина, что то поменял стиль, а тот утверждает, что этого не делал.

Что Пете Клюшкину теперь делать? Переименовывать все совпадающие ключи, о совпадениях которых студия тебе не расскажет? Ты вообще в другом отделе. Ты не можешь просто переименовать ключи, ты должен перелопатить весь стиль.
ЭТО ПИЗДЕЦ. Я не знаю как донести важность инкапсуляции. Даже в одиночном проекте я могу через месяц забыть, что под каким-то ключом уже есть стиль и не понимать шо вообще произошло.
Аноним 29/10/22 Суб 17:39:16 #639 №2500900 
Окей, гугл, а как в XAML взять итем из словаря?

Допустим я создал класс на основе словаря
public class BrushDictionary : Dictionary<string, SolidColorBrush> { }

Затем в ресурсах объявил класс и заполнил кистями.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<local:BrushDictionary x:Key="MyBrushes">
<SolidColorBrush x:Key="COLOR_NAME1" Color="#FFF4F513"/>
<SolidColorBrush x:Key="COLOR_NAME2" Color="#FFF313F5"/>
</local:BrushDictionary>


</ResourceDictionary>


А как теперь взять кисть? Пробовал:
Background="{DynamicResource ResourceKey=MyBrushes[COLOR_NAME2].Item}"
Ошибку не выводит, но выглядит как Null. При StaticResource мгновенно ругается, что не может найти ресурс с таким ключом.
Аноним 29/10/22 Суб 18:05:02 #640 №2500914 
>TreeView не умеет в мультиселект
Бляя...
Аноним 29/10/22 Суб 18:08:21 #641 №2500916 
>>2500892
Хз.
Ты как то пытаешься усидеть на всех стульях
И глобальный словарь чтобы кто угодно мог перегружать
И хочешь запретить перегружать

Словари это как бы глобально
ОСОБАЯ кнопка и ГЛОБАЛЬНОСТЬ вместе не живут
Аноним 29/10/22 Суб 18:13:15 #642 №2500922 
>>2500914
Решается как обычно - перегрузкой портянки шаблона со своими шлюхами
Бесит
Аноним 29/10/22 Суб 18:15:22 #643 №2500924 
>>2500916
Ок, а как поступить? Вот возьмем любой пример стиля с MDSN, он выглядит как пикрилы >>2500892
Куда их пихать, чтобы юзать стиль?
Аноним 29/10/22 Суб 18:24:24 #644 №2500928 
>>2500922
Непонятно как в 2к22 не иметь мультиселект для тривью. Вроде даже в WinForm была галочка.
Аноним 29/10/22 Суб 18:25:46 #645 №2500929 
>>2500928
впф заброшен очень давно. там дохера косяков которые никто не чинит
и не делает нужных вещей вида диалога выбора файла
Аноним 29/10/22 Суб 18:28:06 #646 №2500931 
как быть, если у меня есть объект с переменными-настройками, и их очень много?
я сейчас скрыл их в абстракт классе и наследую от него но все равно получается слишком дохуя
может быть имеет смысл выделить все настройки в отдельный класс-настройку?
Аноним 29/10/22 Суб 18:28:58 #647 №2500932 
>>2500924
ну такие стили позволяют в ресурсах переопределить кисть допустим.
И в ресуре задается тема всего приложения.

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

Хз как иначе. при интеграции словарей они же мержатся и в итоге работаешь с одним большим словарем и никак не сделать разделение если ключи совпадают.
Аноним 29/10/22 Суб 18:30:47 #648 №2500933 
>>2500931
Ну группируй настройки. Далее проблемы только хранения чтобы можно было хранить эту структуру....ну где ты там ее хранишь.

Посмотри на appsetings.json в том же асп.нет - там же иерархия которую можно читать и прямо по строкам или же забиндить на граф объектов (будет аналог десериализации из жсон, только без конвертеров)
Аноним 29/10/22 Суб 18:44:42 #649 №2500939 
Capture.JPG
>>2500933
группировать в смысле в объект, так?
у меня они все (сейчас 10, я потом еще хочу дополнительные добавлять для большего контроля) вот как на пике под копирку
Аноним 29/10/22 Суб 18:45:46 #650 №2500940 
>>2500932
>Почему вдруг твоя особая кнопка должна менять общую тему приложения.
Потому что у них совпадают ключи? Может ты стиль вытащил из пыльного чулана и непонятно как ты в будущем в приложении хочешь назвать базовые стили.

Я просто не понимаю как столько лет существует впф и ни у кого нет на эту тему вопросов. Может есть какой-то способ. Допустим я хочу хранить все свои кисти в Dictionary >>2500900 , меня и такой подход более чем устроит, но чет не получается оттуда вытащить.
Аноним 29/10/22 Суб 19:01:37 #651 №2500947 
>>2500939
ты неправильно ставишь вопрос
сначала ты решаешь как будешь хранить, раз уж ты хочешь не только читать как вот в асп.нетах всяких. Ты хочешь редактировать и сохранять. А значит должен выбрать как ты это будешь делать
А потом уже смотреть что может предложить тебе выбранная система конфигурации.
Аноним 29/10/22 Суб 19:14:17 #652 №2500955 
>>2500947
система хранения такая - из настроек собирается xml, упаковывается в файл на диске а потом при нужде разворачивается.
Аноним 29/10/22 Суб 19:18:40 #653 №2500960 
>>2500940
ну если не вдумываться что ты можешь
1 ты можешь создать общий стиль на который ссылаться через BaseOn и там наплодить в ресурсах кучу кистей
2 ты можешь просто сделать свой класс MyDynamicResource который есть MarkupExtension и он тебе достанет откуда нужно. А стандартный DynamicResource ищет просто по ключу и про твой словарь знать не знает
3 по идее можно юзать тупо биндинг. Есть объект, у него данные - ну так просто биндинг - уж он то в отличие от Static/DynamicResource ищет как тебе нужно.
Правда тут нужно будет искать по имени, а оно ж может быть хер знает где определено. (хотя можно и по типу поискать)
Аноним 29/10/22 Суб 19:27:53 #654 №2500966 
>>2500955
У тебя ридонди конфиг
Нафиг тебе хмл
Да и даже если он - он тоже десереализуется в граф классов

И всё же вопрос был про систему работы с конфигом

Из стандартных в старом дотнете какая то на хмл основанная
Можно читать и писать
А в вебе там новомодный конфиг. Он только на чтение и собирает в себя разные форматы


Но если только читать то абсолютно изи сделать хоть свое
Да даже если хранить - оно легко

Велик не значит плохо работает
Это просто значит что левый человек сразу не будет знать где что в коде
Аноним 29/10/22 Суб 21:00:26 #655 №2501029 
>>2500966
>Нафиг тебе хмл
система сериализации в конкретно моем случае принимает только хмл. это не моя система если что и лезть внутрь и чето там менять я не собираюсь. сказано хмл значит хмл.
я вообще не про конфиги с вебами вопрос задавал, а как правильно организовать работу с раздувшимся от переменных классом.
Аноним 29/10/22 Суб 21:11:30 #656 №2501034 
>>2501029
твой вопрос вообще изначально не очень понятен. Хз что значит асбтракт класс. Есть класс работы с конфигом. Это может быть класс "дай значение такого то ключа" или тупо граф DTO объектов.

И твое "очень много" я трактовал как "у меня 100000 полей в 1 классе"
Аноним 29/10/22 Суб 21:31:39 #657 №2501049 
Capture.JPG
>>2501034
да, я хреново вопрос поставил
полностью выложить слишком много кода выходит в экран не влезет, но я что-то такое вот делаю примерно
я хочу завернуть все проперти с полями которые используют потомки ClassBase в отдельный класс и хотел узнать как это лучше всего сделать и может быть есть какой-нибудь паттерн на эту тему
Аноним 30/10/22 Вск 04:55:18 #658 №2501298 
suka.jpg
А эта хуйня разве не бесплатная? В чём смысл тогда ставить community?
Аноним 30/10/22 Вск 07:48:50 #659 №2501318 
>>2501298
Бесплатная замануха, а потом плати!
Аноним 30/10/22 Вск 08:37:38 #660 №2501324 
>>2501298
может у тебя проф версия стоит? я один раз так тоже лоханулся, пришлось перекачивать
Аноним 30/10/22 Вск 08:52:15 #661 №2501327 
>>2501324
Сказали залогиниуться и пропадёт. Пришлось аккаунт делать в мелкософте. Но это всё равно не бесплатный софт получается, а подписка бесплатная на неопределенный период и непонятно что если я хочу на оффлайн компе аутировать
.
Аноним 30/10/22 Вск 11:03:00 #662 №2501359 
Здарова, подскажите как быть. В Wpf проекте имеется обсерваблколлектион привязанный к листвиев. Так вот при добавлении сразу несколькоих элементов в коллекцию интерфейс иногда подвисает, есть ли способы этого избежать?
Аноним 30/10/22 Вск 11:27:08 #663 №2501370 
2022-10-3011-23-51.png
А как в TreeView вот так добавляется контент, и он не заменяет собой основной, а идет как Items. Как подобное сделать при помощи UserControl?
Аноним 30/10/22 Вск 13:46:44 #664 №2501432 
Как же вы заебали своим десктопным калом
Аноним 30/10/22 Вск 14:14:03 #665 №2501455 
>>2501359
Добавлять через асинк. Чекай как делают прогрессбар.
Аноним 30/10/22 Вск 15:49:33 #666 №2501496 
face-head.png
Охуительные истории вместе с WPF.
Решил я, значит, хоть как-то изолировать стили. Создал юзерконтрол, содержащий TreeView, и чтобы стилем для дерева не засирать все приложение, добавил стиль не в <Application.Resources/>, а в <UserControl.Resources/>.

И затем я беру и сей юзерконтрол добавляю в окно. И что бы вы думали? ... Не найден стиль. При этом юзер контрол этот стиль видит, а родитель — нет.

Как только я добавляю стиль в глобальные ресурсы — все норм.
Аноним 30/10/22 Вск 15:51:08 #667 №2501500 
98371619680576.jpg
>>2501496
Ну а чего ты ожидал? Естественно родитель не видит стиль контента.
Добавляй в глобалку.
@
Ну а чего ты ожидал? Естественно стили будут перегружены, ведь у тебя все в глобалке.
Аноним 30/10/22 Вск 16:27:21 #668 №2501514 
>>2501327
ну вот я уже второй год на оффлайндля студии компе аутирую, полет нормальный
Аноним 30/10/22 Вск 18:41:30 #669 №2501602 
>>2501298
Это комьюнити версия?
Аноним 30/10/22 Вск 19:29:45 #670 №2501633 
>>2501327
Хз, я несколько лет юзал комьюнити и лицензия не слетала. Сам мелкософтовский акк существует уже лет 5, на протяжении которого ставились студии.

Проверь тип лицензии, ну мб у тебя какой-то конфликт с "поломанной" версией.
Аноним 30/10/22 Вск 22:11:20 #671 №2501713 
А чего это шарпы быстрые такие? Ну типо по скорости шарпы догоняют Го, но Го компилируемый и там ничего в принципе нет. В джаве тоже ничего нет (побольше чем в го конечно) и она помедленнее будет несмотря на все попытки оптимизаций. В CLR дело? Типо наверно лучший язык по соотношению фичеватость/скорость не учитывая хаскелли
Аноним 30/10/22 Вск 22:59:46 #672 №2501731 
Что вообще происходит? Почему я не могу зарегать депенденси проперти с одинаковым именем для разных классов? Пишет, что уже зарегистрировано.

Единственное что один вложен в ControlTemplate другого.
Аноним 30/10/22 Вск 23:09:06 #673 №2501734 
СУКА ЕБАНОЕ КОНФЛИКТНОЕ ВПФ ГОВНО.
сил нет
Аноним 30/10/22 Вск 23:16:57 #674 №2501739 
Как сделать юзерконтрол базированный на гриде, к примеру? Или грид с xaml дизайнером.

Я не могу запихнуть внутрь контрола грид, потому что это не будет гридом по сути.
Аноним 31/10/22 Пнд 00:13:41 #675 №2501753 
>>2501734
>>2501496
Нахуя вы это говно жрете. Я когда только увидел эту XAML парашу в первый раз, понял что мне с ней вообще не попути.
А потом постиг дзен, ASP.Net WebApi и вообще забыл о десктопе и фронте как о страшном сне.
Аноним 31/10/22 Пнд 00:26:26 #676 №2501759 
>>2501731
Можешь конечно
Но регистрация должна быть в разных классах
Аноним 31/10/22 Пнд 00:29:17 #677 №2501761 
>>2501753
Да всё нормально с xaml. Это везение если можно wpf кодить

И не всем же удается кодить именно вебапи

Вали с работы и дай посидеть на твоем месте тем кому повезло меньше
А ты вот умный значит найдешь себе изи
Аноним 31/10/22 Пнд 00:51:49 #678 №2501766 
2022-10-3100-47-00.png
>>2501753
А шо если мне плагины делать нужно? Или как говорится, не стоит прогибаться под задачи, однажды они прогнутся под нас?
Алсо, основное отличие студенческой работы от реальной состоит в том, что в студенческой сначала выбирают технологию, а под нее придумывают задачу.

>>2501759
>регистрация должна быть в разных классах
Так она в разных.
1. Я создал UserControl, в нем сделал депенденси проперти ButtonHeight
2. Я создал класс MyClass, наследующий TreeviewItem (ну мне нужна, типа, коллекция итемов внутри итема), в этом классе тоже создал депенденси проперти ButtonHeight.
3. Затем определяю стиль моего класса MyClass, где в Template пихаю UserControl.

И вот на этой стадии ругается на мой класс MyClass, мол, братан а уже зарегистрировано свойство с именем ButtonHeight.

Или может есть какой-то способ как "вытянуть" свойство UserControl наружу? Ну к примеру пикрил. Я в темплейт добавил юзерконтрол "MyUserControl", у которого есть свойство "ButtonHeight". Такого свойства в TreeViewItem нет. Как мне его сделать доступным снаружи? Я очевидно начинаю колхозить свой класс с дублирующими именами свойств.
На Grid.Row не смотри.
Аноним 31/10/22 Пнд 02:14:15 #679 №2501784 
>>2501766
Показывать нужно как ты свойства создаешь

А вообще я не понимаю какой огород ты городишь что Controltemplate зачем то меняешь
Да еще наследника задаешь да с высотой кнопки

Ты что вообще сделать пытаешься?
Аноним 31/10/22 Пнд 02:58:11 #680 №2501790 
>>2501761
>Да всё нормально с xaml
Не-не. Хуйня это полная. Попытка перетащить уебищную фронтовую парадигму в нормальный язык. Даже долбаные js фреймворки вроде react'а в разы удобнее (хотя тоже дерьмом пахнут местами - и имя этому дерьму js)
>И не всем же удается кодить именно вебапи
Учись, так чтобы быть более востребованным как узконаправленный специалист. С пришествием .net Core вообще лафа наступила и профессия .net фулстека потихоньку отмирает, в пользу чистого бэк-энда.
>Вали с работы и дай посидеть на твоем месте тем кому повезло меньше
Вот только два месяца как поменял работу. Можешь занимать.
Аноним 31/10/22 Пнд 03:05:10 #681 №2501792 
>>2501766
>Или как говорится, не стоит прогибаться под задачи, однажды они прогнутся под нас?
А то. Дело бизнеса "Бабки платить и завалити ебало". А что с этими бабками делать мы сами решим.
Аноним 31/10/22 Пнд 03:42:59 #682 №2501797 
>>2501602
Да
Аноним 31/10/22 Пнд 03:43:35 #683 №2501798 
>>2501633
А "не поломанные" вообще не ставятся
Аноним 31/10/22 Пнд 03:55:14 #684 №2501799 
>>2501790
>Попытка перетащить уебищную фронтовую парадигму в нормальный язы

Ты бредишь. Шарп изначально десктопный язык. Винформс там изначально. И даже асп вебформсы шли по тому же пути.

И нет реакт не лучше а просто другое.
Если не нужно перегружать шаблон контрола то норм в wpf. Перегрузка просто сильно многословная.
Аноним 31/10/22 Пнд 11:44:01 #685 №2501881 
2022-10-3111-37-27.png
>>2501784
Нужен TreeView. Но TreeViewItem должен быть со своим стилем, что-то на подобие слоя в фотошопе.

Меня простыня стиля как-то подзаебала, да и вообще работать в полуслепую. Я решил участок с Template вынести в UserControl, чтобы был свой xaml дизайнер и удобно было редактировать (пикрил).

А вот как этот юзерконтрол превратить теперь в TreeViewItem — хз.
Аноним 31/10/22 Пнд 12:36:12 #686 №2501913 
как конец строки обрезать? (например C:/Users/Abu/Downloads)
я реально не пынямаю, напишите плиз код
Аноним 31/10/22 Пнд 12:41:23 #687 №2501916 
>>2501913
при условии, что после Abu может быть, что угодно
Аноним 31/10/22 Пнд 12:50:40 #688 №2501919 
>>2501913



Для папок
DirectoryInfo(@"C:\Users\Abu\Downloads").Name;

Для файлов (с расширением)
fileName = Path.GetFileName (path)
Для файлов (без расширения)
fileName = Path.GetFileNameWithoutExtension (path)
Аноним 31/10/22 Пнд 13:16:15 #689 №2501934 
>>2501913
Substring()
Аноним 31/10/22 Пнд 13:23:51 #690 №2501942 
>>2501799
>Шарп изначально десктопный язык
Десктоп и веб-хуйня несколько разные вещи. Инзачально там winforms был если чо. Ну и так-то это не часть языка если что, а отдельный фреймворк.
Аноним 31/10/22 Пнд 13:33:52 #691 №2501950 
>>2501942
язык и фреймворк это разные вещи. сравнил мягкое с теплым.
та же "веб-хуйня" это тоже фреймворк

Так что направленность языка определяется стандартной поставкой, то есть что рантайм дает "искаропки". И для дотнета это были винформс (а потом WPF).

Так что веб-направленность после появления кроссплатформы пришла в дотнет (не нужно стало моно), а десктоп направленность была всегда.
Аноним 31/10/22 Пнд 13:36:56 #692 №2501952 
>>2501881
ты опять даешь недостаточно информации. По скрину где тут вообще TreeView?

то что юзаешь дизайнер - похвально. Я помню проекты, где ВСЕ делалось через стили перегрузкой темплате. вот где реально дичь.

А так - ну опять же хз твоя проблема. У разных ItemControl при биндинге идет поиск DataTemplate и он сам обернет их в TreeViewItem/ListViewItem и как оно там еще.
Аноним 31/10/22 Пнд 13:51:45 #693 №2501968 
>>2501950
Так я и писал изначально, что WPF и его xaml - это подтягивание веб-хуйни с ее разметкой, стилями и т.д. в десктоп.
Может не так в изначальном посте выразился, но как-то так.
Аноним 31/10/22 Пнд 14:06:45 #694 №2501992 
>>2501968
>WPF и его xaml - это подтягивание веб-хуйни с ее разметкой, стилями
вот только это бред

html+css в дотнетах использовалась еще 20 лет назад в первых студиях даже были такие окна и можно было делать гуи.

xaml != html. xaml это хмл...ну да и все. хтмл описывает разметку, а хамл описывает граф объектов. То есть вот как в винформс там генерится код описывающий объекты гуи, так вот хамл это такое же описание, только в виде хамл.

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

да и как бы гуи с разметкой и стилями - СЛИШКОМ ОБЩЕЕ понятие чтобы приписывать "из веб пришло".
Аноним 31/10/22 Пнд 14:13:39 #695 №2501996 
2022-10-3113-52-57.png
2022-10-3113-58-20.png
>>2501952
>По скрину где тут вообще TreeView?
Это TreeViewItem, а TreeView - пикрил 1.

>то что юзаешь дизайнер - похвально.
Только вот мне придется щас скопировать оттуда разметку и вставлять прямо в темплейт стиля.

>У разных ItemControl при биндинге идет поиск DataTemplate и он сам обернет их в TreeViewItem/ListViewItem и как оно там еще.
Ну смотри. Вот на пикрил 2 я беру и между открывающим и закрывающим тэгом "TreeViewItem" пихаю еще три итема и они воспринимаются как ItemCollection (в темплейте за это отвечает ItemsPresenter).

Должен отметить, что в моем классе никак не указан ItemsPresenter и я не знаю как его обозначить. Соответственно разметка не знает куда пихать контент.
Если я попробую завернуть итемы в свой класс SubtoolItem, то идет попытка заменить контент самого SubtoolItem т.e. ContentPresenter. Собственно и вылезает ошибка:
XDG0040Свойство "Content" может быть задано только один раз.
Аноним 31/10/22 Пнд 14:21:08 #696 №2502006 
>>2501996
брр. давай начнем с
"почему ты не используешь HierarchicalDataTemplate, а городишь свой огород?"
тогда может смогу понять что ты пытаешься сделать
Аноним 31/10/22 Пнд 14:24:37 #697 №2502011 
>>2502006
Если я чет не использую, значит я об этом не знаю. Пошел гуглить.
Я знаю про TreeView, который юзает TreeViewItems, вот и пытаюсь своё как-то приклеить туда.
Аноним 31/10/22 Пнд 14:24:52 #698 №2502012 
Сап, нужна оценка специалиста. Был на стажировке по Go, уволился из-за сво.
Сейчас нахожусь в польше, и хочу вкатиться в .net

Года 3-4 назад я проходил йоба курсы, обучающие работать с бэкендом (на .net asp core, тогда только только core вышел, кстати). Меня в конце них даже на работу пригласили, но я был не совершеннолетним, так что мне сказали приходите позже.
У меня есть пару пет проэктов на гите.

Но я совсем забыл сишарп, и не следил за обновлениями языка.

Я думаю по 5 часов 5 дней в неделю в течении следующих 2 месяцев изучать язык по роадмапу. Это будет где-то 200 часов минимум изучения.
Хватит мне столько времени, чтобы вкатиться на джуна, с условием что я имею представление как устоен интернет, и что я знаю алгоритмы, ооп, систему контроля версий, бд, тесты ну и по мелочи ещё? Опять же, мне по-сути надо только повторить всё
Какие книжки почитать? Джеффри Рихтера читал.

Ещё вопрос, какой стек выбрать? Я думаю либо backend, либо full-stack, но не знаю что используют для фронта. Я когда-то только ангуляр и чистый жс пробовал и всё. Посоветуйте что-нибудь.
Аноним 31/10/22 Пнд 14:28:07 #699 №2502015 
>>2502011
прямое использование Item из хамл нужно только тогда, когда не используется биндинг списка. То есть при MVVM подходе крайне редко, почти никогда.

Вся структура данных определяется графом вьюмоделей, а гуи через биндинг все это рисует используя систему связывания вьюмодели с DataTempate (в котором твой UserControl)

TreeView не исключение.
Аноним 31/10/22 Пнд 14:34:18 #700 №2502023 
>>2502015
>прямое использование Item из хамл нужно только тогда, когда не используется биндинг списка.
Да я и не собирался — чисто для теста, и заметил, что у TreeViewItem содержимое работает иначе.
Аноним 31/10/22 Пнд 18:56:06 #701 №2502351 
Начал я разбираться в этой.. чистой архитектуре. Возник вопрос. Вот у меня есть операции crud, но только для внутреннего пользования. То есть извне их никто вызвать не может. Я правильно понимаю, что мне под всё это нужно создавать контроллеры, репозитории и т.д, а потом уже откуда надо в программе обращаться к контроллеру.
Аноним 31/10/22 Пнд 18:59:40 #702 №2502357 
>>2502351
Приложение, если что, консольное
Аноним 31/10/22 Пнд 19:20:14 #703 №2502381 
>>2502351
какие еще контроллеры.
всякие классы выделяются чтобы изолировать изменения в них
и оперировать более высокими абстракциями.

Ну а степень всего этого зависит от нужд.
Аноним 31/10/22 Пнд 19:24:48 #704 №2502388 
>>2502381
Я просто щас видос смотрю, тут чел делает приложение на чистой архетиктуре, вот там у него есть контроллеры. Использует web api
Аноним 31/10/22 Пнд 19:25:36 #705 №2502389 
TreeView))))))00)0
Аноним 31/10/22 Пнд 19:46:30 #706 №2502409 
Танака Сан.mp4
>>2502389
Танака Сан, кажется вам есть что сказать. Не молчите.
Аноним 31/10/22 Пнд 19:48:40 #707 №2502411 
Танака Сан2.mp4
>>2502389
>))))))00)0
Аноним 31/10/22 Пнд 20:08:02 #708 №2502430 
>>2502388
ну так он делает вебапи, там контроллеры принимают запросы
у тебя консолька несчастная.
Аноним 31/10/22 Пнд 20:09:42 #709 №2502433 
>>2502430
воо, это я уже понял. А что мне в качестве аналога написать?
Аноним 31/10/22 Пнд 20:19:28 #710 №2502436 
>>2502433
Аналога чего? Мы ж не телепаты, чтобы понимать, что твоя приложуха делать должна.
Во вторых тебе нужно хорошо осознать сначала, в принципе, понятие абстракции. Атомарно, так сказать. На уровне хотя бы классов, объектов их свойств и т.д. А потом уже лезть в более высокие уровни типа слоев или архитектуры.
Аноним 31/10/22 Пнд 20:35:50 #711 №2502452 
2022-10-3120-29-21.png
>>2502015
А как вот тут
https://metanit.com/sharp/wpf/14.8.php

Идет привязка к свойству Nodes? У меня отказывается видеть свойства основного класса.
Пробовал в инициализации ставить DataContext = this
Аноним 31/10/22 Пнд 20:40:52 #712 №2502461 
>>2502436
приложуха - телеграм бот. Принимает запросы от пользователя и выдаёт ифну из бд. Приложуха уже написана и более-менее работает. Но там каша из классов и тд. Хотел всё по полочкам разложить попутно изучая чистую архитектуру.
Аноним 31/10/22 Пнд 20:46:11 #713 №2502472 
>>2502433
щас я тебе поясню на ёжиках.

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

ну берешь ты метод Main и в нем открываешь File.OpenRead кладешь стримы в список, открываешь выходной файл File.OpenWrite - и в цикле начинаешь обходить этот список (кстати лучше очередь но не суть)
фильтровать и писать в вывод
задача выполнена? выполнена. Но выглядит как то "грязно"

И ты дербанишь на статические методы чтения, фильтрации и сохранения.
Стало чище, но "классы, где мои классы?"

Хз что такое классы, потому делаешь класс типа class App где в конструктор передаешь пути к файлам и метод Run() делаешь

Но разве "чистый код" такой???? Оопшно, но как то не SOLID-но.

Начинаем "чистокодить"
- выделяем класс LineReader, которыйй будет выдавать линии
- класс LineWriter, что инкапсулирует куда пишется вывод
- класс FilterStrategy чтобы определить как фильруется
- CombineStrategy чтобы определить стратегию комбинироания строк

Потом еще в голову "чистый код" стукнет и такой "а вдруг не из файлов читать"
и давай еще класс SourceReader вместо простого fileStream и вот уже LineReader работает с набором SourceReader

Ну и конечно LineReaderFactory и LineWriterFactory

Но понимаешь, что этого мало. Все как то жестко связано и ты рождаешь кучу интерфейсов
ILineReader/ILineWriter/IFilterStrategy/ICombineStrategy/SourceReader

подключаешь DI контейнер и регистрируешь все в нем.

И смотришь ты на эту гору кода (по сравнению с оригиналом) и задаешься вопросом
"а оно все нужно было то?"

А ответ....не так очевиден.
Аноним 31/10/22 Пнд 20:47:05 #714 №2502474 
2022-10-3120-46-04.png
>>2502452
Пизжу. с DataContext завелось.
Но непонятно почему работает только если я итем сорс привязываю дважды: к TreeView, и к HierarchicalDataTemplate.

Если привязать только к TreeView, то не появляются сабитемы.
Если привязать только к HierarchicalDataTemplate, то вообще ничего не видно.
Аноним 31/10/22 Пнд 20:47:24 #715 №2502475 
>>2502452
это же пример и там тупо сделали
treeView1.ItemsSource = nodes;
Аноним 31/10/22 Пнд 20:49:07 #716 №2502476 
>>2502474
TreeView биндятся корневые ноды
к HierarchicalDataTemplate биндятся вложенные ноды.
ведь дерево это список списков списков...
ну а как иначе. ведь нода может не иметь вложенных нод
Аноним 31/10/22 Пнд 20:50:44 #717 №2502478 
>>2502476
Т.е. это в туторе ошиблись?
Аноним 31/10/22 Пнд 20:55:49 #718 №2502490 
>>2502478
ты должен понимать что
у TreeView и у HierarchicalDataTemplate РАЗНЫЙ DataContext
у TreeView DataContext это твой список во вьюмоделе или где там у тебя, а у HierarchicalDataTemplate контекстом является сама нода и ItemsSource у HierarchicalDataTemplate это для биндинга ВЛОЖЕННЫХ узлов

то есть на твоем пике первый итемс будет искать во вьюмодели, а второй будет искать внутри забинденной ноды
Аноним 31/10/22 Пнд 20:56:25 #719 №2502491 
>>2502478
Надо еще погуглить. Ща очень поверхностно все делаю.

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

Иначе получается, что мне придется дважды инициализировать грузный юзерконтрол — один для списка данных, другой для дерева. Или как-то можно экземпляр биндить, а не создавать новый?
Аноним 31/10/22 Пнд 20:58:41 #720 №2502492 
>>2502491
Экземпляр создается всегда. Только тебя это волновать не должно - ты создавай вьюмодели себе, а оно само все.
Также ты можешь предоставить разные шаблоны для разных типов данных.
Аноним 31/10/22 Пнд 21:01:54 #721 №2502494 
>>2502490
>то есть на твоем пике первый итемс будет искать во вьюмодели, а второй будет искать внутри забинденной ноды
Да, щас кликнул по "перейти к источнику" ItemsSource у HierarchicalDataTemplate и он перекинул меня к ItemsSource у TreeView.

Смущает только предупреждение в TreeView, что не найден контекст данных.
Аноним 31/10/22 Пнд 21:04:04 #722 №2502496 
>>2502494
предупреждения в дизайн-тайм норма если ты не юзаешь d:DataContext
но даже с ним до сих пор херь со списками

а перекинуло тебя потому что у тебя не заполнен DataType, а оно до сих пор хреново все резолвится по спискам
Аноним 31/10/22 Пнд 21:05:12 #723 №2502498 
>>2502492
>Также ты можешь предоставить разные шаблоны для разных типов данных.
О, кстати. А я все голову ломал как мне отделить папки от итемов.
Аноним 31/10/22 Пнд 21:09:26 #724 №2502502 
>>2502498
как и везде в списковых контролах
ItemSource по типу итема ищет DataTemplate DataType="{x:Type"
если найдет то рисует иначе ToString()
так работают списковые контролы и ContentControl
там никаких проблем
ты просто создаешь 2 класса Folder и Item
у фолдера есть вложенный список.
На стороне хамл в ресурсы кладешь
<HierarchicalDataTemplate DataType = "{x:Type Folder}"
ItemsSource = "{Binding Path=Items}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType = "{x:Type Item}">
<Image/>
</HierarchicalDataTemplate>

В рантайме делаешь правильное дерево вьюмоделей и оно само все сбиндит
Аноним 31/10/22 Пнд 21:10:22 #725 №2502504 
Хоспаде какая же духота в треде, какие-то хамл, впфы, вы че там ахуели? Где интересное?
Аноним 31/10/22 Пнд 21:11:26 #726 №2502508 
>>2502504
интересное в котлине. А тут всего лишь шарп
Аноним 31/10/22 Пнд 21:12:06 #727 №2502510 
>>2502508
Джавист, ну-ка парашу чистить, уходи с треда
Аноним 31/10/22 Пнд 21:57:40 #728 №2502557 
Совершенно идиотский вопрос.
Допустим, у меня есть юзер контрол с какой-то там xaml-разметкой.
И мне нужен еще один, где меняется только 5% от первого. Не существует никакого наследования в плане xaml?
Аноним 31/10/22 Пнд 22:26:40 #729 №2502582 
>>2502472
Спасибо, суть понял. В моем случае лучше оставить как есть, потому что кода не очень много но много , функционал не большой. Но мне энивей хочется натянуть это на нормальную архетиктуру. К тому же самому хочется пощупать, посмотреть как оно все там работает. Плюс если будут смотреть этот проект, явно будет плюсом, что есть какая-нибудь архетиктура.
Аноним 31/10/22 Пнд 22:46:29 #730 №2502597 
>>2502582
Ну дербань по SOLID и паттернам. Чисто для форматирования мозга допустимо же.
Аноним 01/11/22 Втр 01:25:27 #731 №2502690 
Можно по-русски для тупого:
В классе есть структура. Когда я методом в классе дергаю структуру - она не дергается. Меняю struct на class - дергается.

Я так понимаю что struct внутри класса не thread-safe (или дергать его не thread-safe???), а класс внутри класса - thread-safe.

Объясните плиз почему так?
Аноним 01/11/22 Втр 01:57:09 #732 №2502698 
>>2502690
Код.
Аноним 01/11/22 Втр 02:07:51 #733 №2502701 
>>2502690
Кажись я заразил тред словом "дергать".

В каком смысле дергать? Перезаписывать свойства структуры? нИпалучится. Свойство структуры дает тебе не ссылку, а значение.
Аноним 01/11/22 Втр 02:20:33 #734 №2502703 
>>2502502
Какая же ляпота c DataTemplate.
Все так чистенько стало. Спасибо, анон.
Аноним 01/11/22 Втр 02:46:02 #735 №2502708 
>>2502701
Понел, спасибо, чёт ступил.

А можно тогда реальных примеров, когда надо использовать структуру вместо класса?

Вот пишет микрософт когда выбрать структуру вместо класса:
It logically represents a single value, similar to primitive types (integer, double, and so on).
It has an instance size smaller than 16 bytes.
It is immutable.
It will not have to be boxed frequently.

А можно примеры такого? Особенно про иммутабельность и >represent single value интересно
Аноним 01/11/22 Втр 02:56:18 #736 №2502710 
>>2502708
про single value перегнули палку. Это типа "если вы пилите ValueObject, то подумайте может структуру сделать, а не класс" Пример хотя бы DateTime

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

Ну а выбирать структуру нужно когда хочешь поменьше грузить GC и от структуры есть польза и не так уж много вреда
Аноним 01/11/22 Втр 08:09:36 #737 №2502762 
>>2502508
В котлине типы стираются как и в джаве, потому что это косяк JVM
Аноним 01/11/22 Втр 11:24:54 #738 №2502848 
>>2502708
>А можно тогда реальных примеров, когда надо использовать структуру вместо класса?

Я с различиями столкнулся до степени, когда "иного пути нет" — это когда работал с отрисовкой графики, где у тебя в риалтайме идут расчеты координат по всяким формулам. Даже стандартные функции из библиотек для расчета каких нибудь периметров, дистанций или точек внутри фигуры, принимают ТОЛЬКО структуры. Причем примитивные т.е. вместо структуры Point(x,y), функция принимает отдельно x, и отдельно y.

А дело в том, что создание экземпляра класса это очень дорогостоящая операция. Может занимать в 10-100 раз больше времени, чем создание структуры. Она практически незаметна в так сказать, спокойном режиме (потому и возникают у тебя вопросы). Но если ты захочешь, к примеру, переместить фигуру прямоугольника по холсту и в каждом кадре попытаешься создать новый экземпляр класса прямоугольника с новыми координатами, то у тебя будет такой жидкий ФПС, что охуеешь. А если прямоугольников в кадре сотни?
Можешь сам потестить, посмотри тутор про бенчмарки и замеры скорости. Есть такой BenchmarkDotNet, и тутор от SimpleCode. Затем создай функцию, принимающую классы и принимающую структуры, после чего замерь память и время.

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

Классы нужны в долгосрочной или среднесрочной перспективе — ты его один раз создал и дальше пользуешься. Экземпляры классов создают до цикла, и уже в теле цикла их обрабатывают (это не правило, но я так делаю). А то может случиться так, что сборщик мусора будет подчищать неиспользуемые экземпляры классов медленнее, чем создаются новые экземпляры — тогда твоя программа мало того, что захлебнется при расчетах, так еще и количество занимаемой памяти взлетит в небеса.
Аноним 01/11/22 Втр 13:05:10 #739 №2502893 
2022-11-0113-00-41.png
>>2502502
HierarchicalDataTemplate работает только с TreeView, а у него в стиле прописана стрелка, сигнализирующая вложенный контент (типа как пикрил). Короче, без переопределения стиля не обойтись.
Аноним 01/11/22 Втр 14:08:28 #740 №2502951 
>>2502710
>>2502848
Понел, спасибо
Аноним 01/11/22 Втр 14:12:56 #741 №2502952 
>>2502893
да. с одной стороны WPF позволяет переопределить эти компоненты через стиль
с другой - рукожопные дефолтные шаблоны требуют полного переопределения шаблона
что не сильно сложно ибо 90% копипаст с ориг шаблона или с SO, но пипец портянка получается.

>HierarchicalDataTemplate работает только с TreeView,
не совсем верно. это TreeView работает с HierarchicalDataTemplate
ты можешь спокойно запилить свой контрол работающий с чем угодно существующим.
Аноним 01/11/22 Втр 19:05:00 #742 №2503264 
2022-11-0118-52-47.png
>>2502952
В классе данных, к которому привязывается TreeView, установил событие, срабатывающее при изменении свойств в этом классе: PropertyChangedEventHandler, наследуемый от INotifyPropertyChanged

Теперь при изменении свойств данных, автоматом меняются и свойства итемов TreeView.

А как сделать наоборот? На пикрил, у меня при раскрытии TreeViewItem срабатывает триггер, который меняет текст в свойстве Header. Визуально я вижу изменения, но событие PropertyChanged не срабатывает — данные остаются неизменными.

Как быть-то?
Аноним 01/11/22 Втр 19:06:38 #743 №2503267 
Как же заебали с TreeView, ъуъ сука.
Аноним 01/11/22 Втр 19:50:19 #744 №2503309 
>>2503264
Хм... если я меня свойство изнутри итема, не через триггер, то все срабатывает.

Как будто сеттер триггера перезаписывает биндинг.
Аноним 01/11/22 Втр 19:53:17 #745 №2503313 
>>2503264
Ну на скрине ты никак не сообщаешь классу данных (который datacontext) о событии isexpanded, а всего лишь напрямую меняешь хидер
Для решения можешь погуглить вариант биндинга к isexpanded
Либо внутри теститем отслеживать ischecked и прокидывать датаконтексту
Аноним 01/11/22 Втр 20:06:13 #746 №2503324 
2022-11-0120-01-27.png
>>2503313
>а всего лишь напрямую меняешь хидер
Ну так у меня в итеме (пикрил) текст тоже двухсторонне привязан к свойству Header. При смене текста должен произойти пинок проперти Header, который связан с проперти datacontext.

Вот если я через событие поменяю Header, то datacontext это улавливает.
Аноним 01/11/22 Втр 20:10:57 #747 №2503330 
>>2503324
Привязан к хеадер, который есть свойство контрола
А не вьюмодели
Аноним 01/11/22 Втр 20:13:53 #748 №2503336 
У меня на ноут вижуал студия не ставится. Пробовал и про и коммунити, и пиратскую версию и оффициальную, когда установка доходит до 100%, пишет очистка а потом через несколько сек выкидывает ошибку без номера, типа неудалось установить и всё.
На комп нормально поставилось а на ноут не хочет.
Может это быть изза васянской версии винды? Я уже не знаю что ему блядь надо в чем причина.
Поставил покачто ВС код с .Нет СДК и пердолингом.
Аноним 01/11/22 Втр 20:37:46 #749 №2503365 
>>2503330
Вопрос в том, как мне вытащить событие, происходящее внутри итема. Меня, к примеру интересует событие изменения текста.

Даже если datacontext задетектит изменение свойства, ему не доступен экземпляр TreeView.
Аноним 01/11/22 Втр 21:12:26 #750 №2503415 
>>2503365
как вытащить как вытащить?
как и везде - биндинги к свойствам, или просто событие и там обратиться к вьюмодели.

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

>ему не доступен экземпляр TreeView.
и нах не нужен вьюмодели твой тривью. Вьюмодель ничего не знает про вид. вообще НИЧЕГО. Она не знает кто на нее смотрит, кто ее использует и для чего (отображение). Ну логически она (вернее программист который ее пишет) конечно знает, ведь это вид просит ее "дай мне правильный стейт", но никакой другой связи нет.
Аноним 01/11/22 Втр 21:16:18 #751 №2503423 
>>2501713
>В джаве тоже ничего нет
толсто

>она помедленнее будет несмотря на все попытки оптимизаций
Последние годы основные оптимизации делались в GC. Ну и тут еще у жабы оверхед по памяти будет побольше из-за исторических ошибок
Аноним 01/11/22 Втр 21:52:01 #752 №2503489 
Сводка треда:
1. Бля хамл ниработаеть((((
2. TreeView ))))))))0
3. Бля вижл студия ниробить (((

Больше ничего нет, можно не читать.
Аноним 01/11/22 Втр 21:58:26 #753 №2503498 
>>2503489
— Здесь постят неинтересное
— Постите интересное сами
— Кто, я?
Аноним 01/11/22 Втр 22:22:32 #754 №2503535 
>>2503498
>— Кто, я?
Ты нахуй иди со своими баянами. Хоть бы картинку не поленился найти.
Аноним 01/11/22 Втр 22:28:41 #755 №2503541 
>>2503535
Ты че такой злой? Рассказывай кто тебя обидел
Аноним 01/11/22 Втр 22:38:47 #756 №2503553 
>>2503535
Танака Сан, о каком опоганивании треда ты говоришь?
Аноним 01/11/22 Втр 23:45:49 #757 №2503601 
>>2503489
Это хорошо показывает, чем на работе занимаются шарписты на самом деле. Древний проприетарный дотнет фреймворк, формочки на винформах и WTF, программирование мышкой, засилье винды, а неткор+ - это мем вкатышей, поиграться и никогда не использовать в проде. Убийца жабы, говорите?))) Ну-ну.
Аноним 02/11/22 Срд 00:17:07 #758 №2503612 
Стикер
>>2503601
Хули мне твоим неткором делать, блять, долбоеб? У меня плагин программы, существующей онли под шиндовс и мак (где без лицензи разраба ты хуй простой). Иди посмейся над создателем программы, клоун — он же точно тупее тебя.

Сидит тут деревенский дурачок, надувающий джаву через соломинку, и чет мне советует, нихуя не зная о ситуации. Вышлите претензии в письменном виде, милорд-обрыган, я обязательно их прочитаю своей жопой после того, как хорошенько просрусь.
Аноним 02/11/22 Срд 00:48:07 #759 №2503623 
>>2503601
> Древний проприетарный дотнет фреймворк
ты о чем вообще. WPF он на последнем дотнет 6 юзается

давно уже во всем переехали на последний дотнет
Аноним 02/11/22 Срд 01:46:12 #760 №2503630 
Антон, если в теме, то подскажи, что пизже на .net6 использовать GostCryptography или BouncyCastle?
Задачи: подписание, расшифровка, проверка, ГОСТ 34.11-2012.
Аноним 02/11/22 Срд 02:18:47 #761 №2503642 
>>2503630
Насчёт BouncyCastle хз, но GostCryptography - тупо драйвер-обёртка для криптопровайдера и сама работать не будет без установленного КриптоПро CSP или аналога (а он платный и стоит немало). Более того, такие СКЗИ требует сертификации ФСБ, и, если это важно, как в случае с ЭЦП для госорганов, любая проверка контролирующими органами будет иметь серьёзные юридические последствия. Если BouncyCastle умеет сама в ГОСТ-2012, лучше эту либу юзать только для тестовых утилит и не более.
Аноним 02/11/22 Срд 09:13:44 #762 №2503699 
>>2503336
Хуй знает, у всех по разному получается поставить. Последнии дни совсем непонятно.
Аноним 02/11/22 Срд 11:43:19 #763 №2503787 
>>2503642
>Насчёт BouncyCastle хз, но GostCryptography - тупо драйвер-обёртка для криптопровайдера
Ну мне по факту это и нужно. Просто самому ручки у advapi32.dll и crypt32.dll дергать это тот еще геморрой. Я написал несколько методов, оно вроде работает, но в рот имел я все это барахло с указателями и unmanaged хренью поддерживать в будущем, хочется что-то готовое.
>без установленного КриптоПро CSP или аналога (а он платный и стоит немало). Более того, такие СКЗИ требует сертификации ФСБ, и, если это важно, как в случае с ЭЦП для госорганов, любая проверка контролирующими органами будет иметь серьёзные юридические последствия.
Ну это понятно, но это не моя проблема, а заказчика. В том смысле что стульев у него по факту всего два КриптоПро и ВипНет. По факту будет КриптоПро.
>Если BouncyCastle умеет сама в ГОСТ-2012, лучше эту либу юзать только для тестовых утилит и не более.
Они обе судя по всему умеют. Вернее GostCryptography изначально, а у BouncyCastle есть форк с их поддержкой.
Судя по тому, что я вычитал BouncyCastle более популярен и инфы по нему больше. Но честно говоря я в сорцы заглянул и там пиздец какой-то внутри, какая-то каша в которой хер разберешься. В GostCryptography все на первый взгляд более аккуратно и понятно выглядит и поддерживаемо будет проще если что. Но по нему и инфы меньше.
Аноним 02/11/22 Срд 14:41:40 #764 №2503961 
Можно как-то без рекурсии узнать индекс ноды в дереве? Или может есть какая-то стратегия, чтобы в будущем минимизировать расходы на вычисления?

Допустим есть список путей, вроде этого
"Project\FolderA1\FolderB1\Item1"
"Project\FolderA2\FolderB1\Item2"
"Project\FolderA2\FolderB2\Item3"


далее выстраивается дерево
Project
. . .FolderA1
. . . . . . FolderB1
. . . . . . . . . . Item1
. . .FolderA2
. . . . . . FolderB1
. . . . . . . . . . Item2
. . . . . . FolderB2
. . . . . . . . . . Item3

Мне не важны индексы папок, меня интересуют только индексы итемов. Естественно, дерево не ридонли, а предполагается миграция итемов.
Аноним 02/11/22 Срд 15:04:54 #765 №2503987 
>>2503961
У меня идея — добавить свойство Index в каждую ноду, потому что индекс нужен мне в 100% операций.
Но если будет операция удаления\перемещения, то вызывается событие для всех остальных нод, и те прибавляют или убавляют свой собственный индекс на нужное значение.

>>2503415
Я сейчас смотрю MVVM и чет там какие-то маня-ситуации.

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

Наверно предполагается, что вся остальная часть приложения работает в тех же условиях, иначе пук-среньк.
Аноним 02/11/22 Срд 15:30:56 #766 №2504007 
>>2503987
>Я сейчас смотрю MVVM и чет там какие-то маня-ситуации.
нет там никаких маня ситуаций. вьюмодель держит состояние вида, а вид синхронно рисует это все как ему хочется

>И как же эта нода расскажет про свой индекс не зная где она находится? На деревне у дедушки?
она знает где она находится. на уровне вьюмоделей у тебя тоже дерево. Представь что ты пишешь в консоли - ты построил дерево и вот это оно и есть - и ты можешь получить в нем индекс, что то менять и так далее.. Просто это дерево НИЧЕГО НЕ ЗНАЕТ (ему не нужно) про тривью ибо это просто дерево из вложенных объектов. НО вот тривью про это дерево знает и может его отрисовать.

В любой момент ты можешь выбросить WPF и заменить гуи на консоль. Так конечно нет смысла делать, но вот тестирование другое дело. Точно так же работает и мультиплафторма - вьюмодель одна, а под каждую платформу вид рисует по своему. И это можно ибо вьюмодель ни про кого не знает.
Аноним 02/11/22 Срд 15:42:26 #767 №2504026 
Нужно запилить преоектик: api на дотнете + фронт. Что лучше взять для фронта человеку, который только jQuery тыкал. React или Vue? Каких то супер фич у фронта не будет, поэтому в приоритете простота изучения до уровня mvp+. Посоветуйте.
И да, хочется пощупать именно популярное и современное, поэтому варианты которыми пользуются 1.5 анонимуса не предлагайте.
Аноним 02/11/22 Срд 18:06:33 #768 №2504183 
>>2504026
>который только jQuery тыкал. React или Vue?
нужно взять фронтендера, а самому писать бэкенд.
фронтендера не кормить и иногда бить плеткой

и все будет тип-топ
Аноним 02/11/22 Срд 18:29:11 #769 №2504230 
>>2504026
Скажу только за реакт, т.к. только его знаю.
Он в принципе простой, если знаешь js, то на его освоение уйдет от 1 до 3 недель.
Но у него есть две разновидности (ну или парадигмы). Одна - это когда компоненты пишутся на классах, другая на хуках. Первая чем-то ближе к ООП и для бэкэндера будет попроще в освоении, но считается уже года 3...4 устаревшей и так уже не пишут. Вторая чем-то ближе к функциональщине и считается более актуальной. Но менее удобная и понятная на мой взгляд.
Я бы для себя наверное сейчас вью бы взял, т.к. думаю что с учетом знаний освоил бы его быстро. Но если бы это было с перспективой на профессию, то реакт в связке с .net чаще встречается. С другой стороны я в фулстеки возвращаться не собираюсь, так что точно попробовал бы вью.
Аноним 02/11/22 Срд 20:37:51 #770 №2504350 
>>2504007
Кажется я начинаю въезжать в логику MVVM паттерна. Ну по сути вьюмодель это как прилинкованный файл к xaml во всяких окнах, юзерконтролах и страницах, только живет своей жизнью.
Аноним 02/11/22 Срд 21:29:21 #771 №2504392 
>>2504350
верно до наоборот.
Есть разные способы работы с гуи. все они частично имеют общие подходы, так что опишу отличительные части.
1 типа как хтмл или хмл в андроид классик - описывается разметка и далее кодом все это дело собирается во что то. Классика - ловим событие и в хендлере допустим меняем цвет чего то напрямую. ну поверх этого делают еще биндинги в некоторых местах.

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

3 WPF+MVVM - тут уже биндинг прикручен не сбоку, а является центральной частью и есть средства чтобы вюмодели просто содержали "что рисовать", а мощная система биндингов позволит декларативно связать с гуи, который знает "как рисовать". гуи и вьюмодели могут быть зеркальным отражением, а могут полностью отличаться. Главное от вьюмоделей - удобно представить данные для отображения и держать в себе состояние.
Тут уже обычные события редкие гости - их заменяют биндинги и реакцию на событие тоже заменяют биндинги.

4 MVU - жетпак композе, комбине у эпл, возможно мауи. Тут гуи описывается кодом и есть стейты (особые переменные). Если они меняются то происходит перевыполнение кода описывающего гуи. Конечно из-за оптимизаций меняется тот же контрол, который подписан на изменение стейта и это логически похоже на MVVM + контрол (который типа изменяет себя при изменении того, на что забинден), но
а) там нет биндингов - гуи следит только за стейтами и обновляется при их изменении. То есть можно образно считать что заново выполняется весь код описыващий гуи.
б) из за того, что это код, то типа код напрямую работает в гуи. вместо Visibility.Collapsed для кнопки юзается if(условие) { наша кнопка }. Если условие стал false то кнопка исчезнет при следующем проходе.
Ну тут в комбайне и в мауи не сильно это заметно ибо там классы используются с требованием конструктора, метода типа рендер (ну а чем это не контрол то обычный а? в чем раличие???), а вот в жетпак композ это функции и получается буквально код (от чего я ссу кипятком от такой гибкости, но считаю что WPF не хуже - просто в нем другой подход)

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

за счет центральной системы биндингов MVVM просто лютый вин. Ну правда там начинаются свои проблемы в виде "god viewmodel" но все же все равно удобнее обычного подхода как в винформс. И при некотором умении даже сверху можно прикрутить Lifetime (хоть WPF к этому подходит как винт вертолета подводной лодке)
Аноним 02/11/22 Срд 23:04:29 #772 №2504437 
Что там по блейзеру слышно? Пользуется кто?
Аноним 02/11/22 Срд 23:17:16 #773 №2504448 
>>2503630
Ангуляр
>>2504437
Да, юзаем на проекте для внутреннего кала. Фигня все еще лучше ваших десктопов
реальный юзкейс у него один - какая-товнутреняя админка. На удивление блейзо сервер выглядит лучше, чем ВАСМ
Аноним 02/11/22 Срд 23:21:12 #774 №2504450 
>>2503601
Это показывает какие ИТТ калоеды только
Я за последних года 4 не видел ни один даже легаси проект, который бы не портировали на кор+. Новые на последнем ЛТС всегда офкоз
>>2503612
А кто тебе нахуй что советует? Доволен своим калом - ну и сиди на нем. Жава не лучше, да.
Аноним 03/11/22 Чтв 00:17:50 #775 №2504466 
Братики помогите. Завтра собес а никак не могу найти ответ на один вопрос которым меня на собесах ебут постоянно.
В чем разнице в скорости между хранимкой, запросом ADO и Entity?
Насколько я понимаю дело в плане исполнения, для хранимки план исполнения строится после первого исползьования. АДО и Энтити всякий раз присылают новый запрос, приходится сторить новый план исполнения, так? Еще какая-то пежня есть с конвертацией данных. Короче тема мутная, под рукой никого нет кто объяснит, а найти никого не могу.
Аноним 03/11/22 Чтв 01:01:14 #776 №2504479 
grass.png
Хочу сделать горящую траву в консольке через ивенты. Прохожу по 2д массиву тайлов (пик1) и подписываю на каждый тайл все его окружающие.
Теперь когда "поджигаю" произвольный тайл должны инвокнуться все на него подписанные. Я хочу чтоб инвокались (и загорались) как на пик2, а по факту происходит как на пик3. сорри за хуевую картинку

Как правильно подписаться и вызывать, чтоб было как на втором примере?
Выглядит как обход дерева/графа в ширину, но тогда мне надо будет строить граф от "поджигаемого" элемента и подписываться на окружающие тайлы проходя по нему?
Аноним 03/11/22 Чтв 02:17:00 #777 №2504489 
>>2504479
> обход дерева
Ну здесь однозначно надо использовать TreeView.
Аноним 03/11/22 Чтв 08:17:39 #778 №2504529 
>>2504230
От Vue все файлы на компьютере могут превратиться в сердечки
Аноним 03/11/22 Чтв 12:49:55 #779 №2504655 
>>2504489
Нет здесь однозначно надо использовать неткор+ , а лучше джаву.
Аноним 03/11/22 Чтв 13:54:09 #780 №2504720 
сокращенный текст.mp4
А как вообще происходят модификации содержимого биндинга?

К примеру, в моем итеме я хочу текст отображать в сокращенном варианте, если для него нет места по ширине, т.е. середина или конец заменяется на многоточие (видеорил).

Как это вписывается в концепцию MVVM?
Во-первых мне нужно событие изменения ширины итема.
Во-вторых я не могу железно привязать текст итема напрямую, нужно какое-то промежуточное свойство, которое биндится с вьюмоделью. А вот событие берет эти данные из свойства, обрабатывает стринг и вставляет в лейбл или текстблок.
Но везде пишут, что в связанном с xaml файле ничего кроме инициализации быть не должно, если хотите придерживаться трушности паттерна.

И ведь это малая часть вещей, которые меняют свой внешний вид в зависимости от состояния других элементов (при этом никак не влияют на содержимое данных).
Аноним 03/11/22 Чтв 14:03:09 #781 №2504726 
>>2504720
Нахуя во вьиев модели что-то менять? Через интерактьён подписаться на событие изменения сизе чангед и всё там делаешь обработку
Аноним 03/11/22 Чтв 14:08:39 #782 №2504734 
>>2504479
Вроде все воксельные сетки делятся на строки и чанки.
Проще залезть в соседнюю строку с тем же индексом, что и "источник горения" и быть уверенным, что это его сосед.

А так у тебя получается отдельный список для каждого вокселя. И так любая симуляция требует огромной оперативы. Если ты думал, что изобрел быструю симуляцию, то наверно нобелевку не получишь (в этом году).
Аноним 03/11/22 Чтв 14:09:05 #783 №2504735 
>>2504720
повторюсь еще раз
в MVVM
VM (вьюмодели) отвечают за то ЧТО отображать
а V(вид) за КАК отображать.

то есть вьюмодель содержит этот "очень длинный текст итема" (что отображать), а сжатием при ресайзе заведует вид (как отображать)
и вьюмодель про многоточие ничего не знает. и про размер окна не знает. и про размер контрола не знает.
Аноним 03/11/22 Чтв 14:11:01 #784 №2504737 
>>2504720
и то вьюмодель содержит не сам текст прямо (ну тут зависит), ведь не нужно забывать про локализацию
Аноним 03/11/22 Чтв 14:13:00 #785 №2504739 
>>2504735
Да я понимаю. Просто потрясает радикализм делающих туторы по MVVM. Нет бы сказать "не пишите внутри вью логику того, что может изменить данные модели".
Аноним 03/11/22 Чтв 14:15:53 #786 №2504743 
>>2504739
>не пишите внутри вью логику того, что может изменить данные модели".
это вообще про другое
вид может менять состояние вьюмодели
но типа не гуд ему лезть в саму модель напрямую, а типа гуд чтобы вьюмодель была между ними прослойкой.
Аноним 03/11/22 Чтв 16:31:55 #787 №2504839 
>>2504734
> Проще залезть в соседнюю строку с тем же индексом, что и "источник горения" и быть уверенным, что это его сосед.
Но тогда условной "передачей горения" будет заниматься класс, в котором тайлы травы добавлены, например класс Поле это у меня, а я хотел, чтоб тайлы горели без участия поля, оно только заполняет/отрисовывает, поэтому хотел на ивентах

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

Я понимаю, при этом ещё циклические связи возникают при привязке получается (другое дело что горящие тайлы уже не инвокают повторно и как бы цикл рвется), но здесь как раз и вопрос в том, чтобы красиво горение шло (то есть сначала в ширину инвокалось, а уже потом в глубину), а не вглубь по одной цепочке.
Получается мне типа надо смотреть в сторону асинхронных событий или Parallel.Invoke?
Аноним 03/11/22 Чтв 17:14:55 #788 №2504875 
>>2504839
Ты бы загуглил алгоритм, есть целые статьи по этому поводу.
https://www.researchgate.net/publication/355450242_Adaptive_Forest_Fire_Spread_Simulation_Algorithm_Based_on_Cellular_Automata

А еще я у одного японца на стриме по гудини заметил такой ресурс
https://citeseerx.ist.psu.edu
Там можно найти научные пдф-ки на разную тематику. Т.е. он забил что-то вроде "dune simulation" и нашел пару статей, которые описывали алгоритм симуляции песка дюны.

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

А по поводу твоей организации, я не совсем понял как у тебя. Как я себе представляю:
Есть один или два слоя. Первый — земля (если она тоже бывает разных видов), второй — объект (трава, дерево, камень). Это два двумерных массива.
Что мешает обратиться к верхнему слою объектов и проверить если по указанному индексу объект со свойством горючести, а если есть, то "поджечь"?

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

Я помню как делал моды для 7 days to die, там у каждого блока был набор свойств: материал, ориентация в пространстве, прочность, состояние и т.д. Причем когда чанк вокселей записывался в файл, то все эти свойства соединялись в одно число т.е. от 0 до 100 записывались ID материала, затем каждая сотня отвечала за ориентацию. Каждая тысяча — прочность.
Все складывалось вместе и получалось что-то вроде такого: 10345. Битовым сдвигом разбивается и собирается.
Аноним 03/11/22 Чтв 17:32:02 #789 №2504889 
>>2504839
> чтоб тайлы горели без участия поля, оно только заполняет/отрисовывает, поэтому хотел на ивентах
А что мешает создать второй класс и не нагружать этим поле?

У тебя поле вообще ничего не должно делать. Поле это просто массив объектов. GUI читает этот массив и визуализирует, на этом его фунциклирование заканчивается.

А вот другие процессы должны это массив "поле" как-то редактировать: один генерирует среду, другой симулирует горение, третий укладывает снег. Отдельный вопрос как они это будут делать одновременно, но то что задачи должны быть делегированы — это факт.
Аноним 03/11/22 Чтв 18:08:05 #790 №2504906 
>>2504875
Спасибо, не так гуглил запросы про горение
> Нужно просто установить порядок проверки "соседей" для твоего красивого горения. Ходишь по кругу своей точки и поджигаешь (мб с каким нибудь шансом горения — для неоднородности), потом повторяешь цикл проверки соседей по кругу для всех уже загоревшихся объектов.
Это я делал, это работает, но хочется-то на ивентах, или на а ля агентах, чтоб тайлы травы общались друг с другом, а не с внешним слоем (или хотя бы чтоб через спец прослойку общались, но чтоб она их напрямую не контролировала)!
>>2504889
> А вот другие процессы должны это массив "поле" как-то редактировать: один генерирует среду, другой симулирует горение, третий укладывает снег. Отдельный вопрос как они это будут делать одновременно, но то что задачи должны быть делегированы — это факт.
Ну так примерно и есть сейчас, просто из "поля" пока недовынес части, а так трава и поле это разные классы, да
Аноним 03/11/22 Чтв 18:42:09 #791 №2504926 
Аноны, нужна ваша помощь. Никак не могу решить эту задачу: "В консоль вводятся два числа. В обоих числах есть одна общая цифра. Выведите в консоль цифру, которая есть в обоих числах через пробел столько раз, сколько раз она встречается в первом числе."
Использовать только циклы.
Аноним 03/11/22 Чтв 18:43:01 #792 №2504929 
>>2504926
А я могу.
Аноним 03/11/22 Чтв 18:47:06 #793 №2504934 
>>2504926
Извини, чувак. Но "математика в программировании не нужна". А для решения этой задачи нужны базовые математические знания. Так что решения у задачи нет.
Аноним 03/11/22 Чтв 18:51:22 #794 №2504938 
>>2504934
Я понял как разделить эти числа но до сих пор не могу решить как все эти числа между собой сравнить.
Аноним 03/11/22 Чтв 19:16:07 #795 №2504954 
>>2504906
>чтоб тайлы травы общались друг с другом, а не с внешним слоем
Технически ты можешь запихнуть траву в отдельную коллекцию ObservableCollection, у которой есть событие на изменение.

Но давай проверим, что эффективнее. Допустим у тебя 100 спрайтов травы.
Если кто-то пукнет в "чатик" травы, то вся сотня всполошится и начнет проверять себя. Установить лимит на дальность проверки связей я не знаю как.

А если ты будешь ближайших чекать, то проверяться будут собственно только ближайшие. Конечно же чем больше огонь будет расти, тем больше циклов проверки и под конец будет проверяться всё и не только трава, но и Аллах, но это можно оптимизировать жизнью горения и удалять из списка те спрайты, которые горят давно — таким образом у тебя всегда будет n-количество горящих объектов.

У тебя должен быть отдельный буфер горящей травы, и отдельный процесс поджигающий и проверяющий время жизни травы. Может быть буфер в виде стака(очереди) Stack<T>, чтобы можно было легко добавлять новые объекты и удалять последние.
Аноним 03/11/22 Чтв 19:32:25 #796 №2504959 
forestfire.mp4
6fc4b25110e.gif
>>2504906
Ля че нашел.
https://triplebyte.com/blog/how-fire-spreads-mathematical-models-and-simulators
Исходник?
https://github.com/scipython/scipython-maths/tree/master/forest_fire

Там даже ветер можно настроить
Аноним 03/11/22 Чтв 19:36:27 #797 №2504965 
image.png
>>2504938
А, я все равно бухаю. На, развлекайся...
Аноним 03/11/22 Чтв 19:38:54 #798 №2504970 
>>2504965
Написано же, использовать только циклы. А с if любой дурак сможет.
Еще и переменные использует — вообще атас.
Аноним 03/11/22 Чтв 19:41:20 #799 №2504971 
>>2504965
Спасибо большое :3
Аноним 03/11/22 Чтв 20:07:14 #800 №2505002 
>>2504970
Ну бля, объебался, бывает.
Аноним 03/11/22 Чтв 20:27:23 #801 №2505019 
>>2504970
> использовать только циклы
while (условие)
{
...
break;
}
Аноним 03/11/22 Чтв 22:30:32 #802 №2505084 
wd-efarchdiagram.gif
>>2504466
Внутри EF лежит АДО кста (ну по крайней мере раньше лежал, хз что там с кором)
План выполнения тебе еще и поднасрать может кста(2), но да, аргумент
Аноним 03/11/22 Чтв 23:02:06 #803 №2505100 
Есть графический интерфейс на WPF
Как по нажатию кнопки запустить долгий, очень долгий процесс в другом потоке, да так, чтобы тот поток мог гуй обновлять?
Аноним 03/11/22 Чтв 23:14:34 #804 №2505107 
>>2505100
а проблема то в чем?
Аноним 03/11/22 Чтв 23:23:10 #805 №2505114 
>>2505107
В том, что если внутри обработчика я стартую другой поток/асинхронную хуйню/что угодно, то ничего не происходит. У меня просто глохнет UI
Аноним 03/11/22 Чтв 23:33:29 #806 №2505119 
>>2505114
Application.Current.Dispatcher.InvokeAsync
Аноним 03/11/22 Чтв 23:41:37 #807 №2505131 
>>2505119
Мне это внутрь обработчика засовывать?
Оно будет при этом обновлять гуй?
Аноним 03/11/22 Чтв 23:43:16 #808 №2505133 
>>2505114
Любой способ раьотает
Хоть таск.рун
Хоть что угодно
Аноним 04/11/22 Птн 00:24:29 #809 №2505176 
>>2505119
При асинке, если просто тупо чет пихать в проперти гуи, то ничего не произойдет. Нужно сихронизирваться с помощью инвока.

При любом обращении из асинхронной функции к ГУИ используешь инвок. Но лучше сразу собрать все "пожелания" в кучу и обратиться за один раз.

App.Current.Dispatcher.Invoke(async () =>
{
// здесь любой код, который относится в сторону ГУИ
//к примеру
MainWindow.Width = 300;
MainWindow.Title= "Pososi u traktorista";
});
Аноним 04/11/22 Птн 00:24:51 #810 №2505177 
>>2505131
>>2505176
Аноним 04/11/22 Птн 00:27:29 #811 №2505179 
>>2505114
Если асинхронная функция работает успешно, то фризиться интерфейс не должен. Он может не получать или передавать данные из-за отсутствия инвока, но точно не фризиться.
Аноним 04/11/22 Птн 00:36:36 #812 №2505187 
А шо правда, что бинарных деревьев нет из коробки? Раньше не юзал, а когда захотелось, то оказалось их нет.
Аноним 04/11/22 Птн 01:26:52 #813 №2505207 
.png
>>2505187
Они же в 10 строчек пишутся, или нужны какие-то требования по сбалансированности?
Аноним 04/11/22 Птн 01:58:25 #814 №2505219 
>>2505207
A Find, Remove, Traverse негры напишут?
Конечно можно скопировать из интернета, но так-то можно и list самому написать.
Аноним 04/11/22 Птн 02:32:50 #815 №2505224 
>>2505219
Ок, ещё 40 строчек.
Деревья нужны относительно редко, поэтому универсальных деревьев и нет из коробки (только XDocument, TreeView и подобные, между ними мало общего), к тому же, большинство применений деревьев настолько специфичное, что обычно пишут свои реализации на каждый случай или берут сторонние либы.
В любом случае, есть SortedSet, SortedDictionary и SortedList, они реализованы через деревья, но хуёво то, что там нельзя непосредственно работать с узлами, как следствие, обход в глубину или удаление поддеревьев там не применить.
Аноним 04/11/22 Птн 03:58:56 #816 №2505236 
>>2505100
если запускать из GUI то там для синхронизации нужны доп шаги - это Dispatcher/контекст синхронизации (можно даже хелперы слепить)
Если это MVVM то там биндинги, то там уже используется контекст синхронизации и доп усилия не нужны, но обновлять вьюмодели в многопотоке не гуд (не стоит правда путать многопоток и асинхронность)
Аноним 04/11/22 Птн 09:23:09 #817 №2505254 
>>2504026
Blazor thread
Аноним 04/11/22 Птн 10:55:43 #818 №2505278 
А объясните различия между ControlTemplate и DataTemplate. Первый описывает визуальную часть элемента, в а второй привязывает данные содержимого.

Логично для кнопки, когда в ControlTemplate пихают прямоугольник, а в DataTemplate какой нибудть текстовый блок, подключенный ко вьюмоедли. В финале мы имеем текстовый блок в прямоугольнике.

Все это выглядит логично, если элемент раздроблен по частям. А что если я не могу вот так вот дробить? Что если у меня единый элемент? Допустим это тексбокс — текст в прямоугольнике. Я поясню в чем затык. Дело в том, что триггеры, типа выбора элемента или наведения курсора работают только в области ControlTemplate.

И куда пихать мой единственный текстовый бокс, если я хочу триггерами поменять его рамку, но и рыбку съесть и данные текста привязать ко вьюмодели?
Аноним 04/11/22 Птн 11:03:35 #819 №2505280 
>>2505278
Хм, есть DataTrigger.
Но как же все щас через жопу. Упростил в одном месте, сложности вылезли боком.
Аноним 04/11/22 Птн 11:08:58 #820 №2505283 
>>2505236
Там всё сложно, ибо с MVVM я не разобрался. Но биндинги есть. Внутри потока должно обновляться свойство, отвечающее за вывод
Аноним 04/11/22 Птн 11:36:49 #821 №2505296 
>>2505236
>но обновлять вьюмодели в многопотоке не гуд
А как быть тогда? Вот я (другой анон) сделал возможность подавлять вызов события изменения содержимого ObservableCollection.

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

Если нужно что-то типа прогрессбара, то достаточно просто перезаписывать нужное свойство вьюмодели и ГУИ автоматом обновляется не стопорится.

>>2505283
>ибо с MVVM я не разобрался
Давай вместе разбираться. Я уже начинаю въезжать, кроме нюансов — там шаг в сторону и расстрел.
Я себе отдельный проект для тестов вывел, только он на VB. Хотел плавно перейти на шарп, но совмещать несколько проектов на разных языках не очень удобно — линк проектов работает только в одну сторону..
Аноним 04/11/22 Птн 12:13:52 #822 №2505316 
>>2504026
Берешь блейзор и хуяришь.
Аноним 04/11/22 Птн 13:49:12 #823 №2505410 
gradusov.jpg
>>2505316
Пробовал апельсиновый, но производительность на мой взгляд падает. С другой стороны тебе это не важно.
Аноним 04/11/22 Птн 16:29:57 #824 №2505622 
>>2505278
ControlTemplate описывает шаблон самого контрола. У него даже есть спец биндинг TemplateBinding

DataTemplate описывает шаблон контента (тот самый ItemPresenter, который мы используем в ControlTemplate) - и подходящий DataTemplate ищется по типу контента или же устанавливается дефолтный.
Аноним 04/11/22 Птн 16:36:08 #825 №2505625 
Есть задача: получать данные с сайта каждые полчаса и каждые полчаса отправлять их в тг бот.
Через httpclient отправляю запрос, данные получаю, всё ок. А как правильно сделать "автоматическую" отправку запросов, то есть каждые полчаса ?
Аноним 04/11/22 Птн 16:56:10 #826 №2505637 
>>2505296
>А как быть тогда?
С чем быть?
Сами биндинги которые идут на GUI они сохраняют в себе контекст синхронизации и защищены от "нельзя контрол вызывать в другом потоке".
Но ты можешь быть внутри твоих вюмоделей или контролов подписан на изменение допустим ObservableCollection - и эта подписка будет вызвана в другом потоке.

Если ты говнокодишь и запускаешь что то долгое асинхронное внутри вьюмодели и оно внутри и работает (сами все шаги во вьюмодели) то тебе нужна синхронизация
а) если там асинки то await по дефолту (если не юзаешь Fody.ConfigureAwait) вернет в UI поток
б) а если контекст потерян, то для синхронизации тебе нужен Dispatcher. но тут уже велосипедят кто во что горазд
- Кто то юзает Dispatcher прокидывая его в вьюмодель - можно сказать "фуу", но он то лежит в System.Windows.Threading, а не в Presntation
- другие используют класс хелпер типа UIDispacther который имеет статические методы и инициализируется нужным Dispatcher на старте приложения. Ну чтобы не запутаться в эти диспатчерах. Есть в некоторых фреймворках, ну и вот https://learn.microsoft.com/ru-ru/archive/msdn-magazine/2014/april/mvvm-multithreading-and-dispatching-in-mvvm-applications
- странный вариант вида
uiFactory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());
в конструкторе вьюмодели. и далее синхронизация вида
uiFactory.StartNew( () => эта задача работает в UI потоке );

Если же ты говнокодишь иначе, то есть "а хули вьюмодель сама делает всю работу? ее дело только держать состояние визуальной части, а...пусть сервисы работают" и значит вьюмодель тоньше и вызывает сервис "сделай че то там", и ты обычно передаешь
1 IMyOperationContext какой нибудь - где ты можешь влепить класс обертку над твоей вьюмоделью, что будет менять твою вьюмодель и заботиться о потоках (или если лень говнокодить больше меры, то сама вьюмодель может реализовывать этот кастомный интерфейс (говнокодим как хотим) только не забывай про потоки. Вот через нее долгая операция может менять гуи (через изменения вьюмоделей конечно)
2 IProgress - он может быть как частью IMyOperationContext, так и отдельно - и его дефолтная реализация захватывает контекст синхронизации при создании, то есть дополнительных шагов не требует
3 CancellationToken для отмены операции же. Чтобы на гуи жмакнул и можно отменить.
Аноним 04/11/22 Птн 17:01:26 #827 №2505640 
>>2505283
с MVVM все просто. Ты просто складываешь визуальное состояние из вьюмоделей, а гуи за счет биндингов сам отслеживает их изменение и подходящим способом отображает
в чем проблема?
Аноним 04/11/22 Птн 17:04:45 #828 №2505642 
>>2505625
Таймер не?
Аноним 04/11/22 Птн 17:07:21 #829 №2505644 
>>2505625
или таймер или запустить.
await Task.Delay(TimeSpan.From*, ct) //начальная задержка
while(!ct.IsCancellationRequested){
//отправляем
await Task.Delay(TimeSpan.FromMinutes(30), ct)
}
Аноним 04/11/22 Птн 17:53:20 #830 №2505667 
Capture.JPG
суп шарпач, код не мой, поясните пожалуйста что за жесть здесь происходит, особенно на 348
Аноним 04/11/22 Птн 18:05:11 #831 №2505679 
>>2505667
свойство OnBind требует Action<ComputeNode, ComputeNode>
тут же это свойство выставляется не напрямую на Action, а через лямбду, которая допускает, что Action может не быть в момент вызова с помощью ?.

Ну может оно там часто меняется на нулл или выставляется сильно поздно, а OnBind не переваривает нулл, поэтому и такое проксирование.
Аноним 04/11/22 Птн 18:11:01 #832 №2505688 
>>2505679
т.е. он таким образом пропускает все инвоки SInstance.ComputeControl.OnBind через себя?
Аноним 04/11/22 Птн 18:15:29 #833 №2505694 
там просто он еще у себя на свой OnBind подписывается и выполняет дополнительные манипуляции с ComputeNode
Аноним 04/11/22 Птн 18:48:51 #834 №2505730 
>>2505688
ну да. обычное дело.
Аноним 04/11/22 Птн 19:42:10 #835 №2505786 
>>2505730
спасибо
Аноним 04/11/22 Птн 20:27:52 #836 №2505828 
Мда. С так называемыми стилями никакого солида не жди. Вот так просто перекинуть участок кода с контролами, ссылающимися на 100500 брашей, это я вам скажу то еще удовольствие.
Аноним 04/11/22 Птн 20:31:43 #837 №2505830 
>>2505828
Надеюсь, ты про SOLID, а не про всякую хуйню без задач типа WTF?
Аноним 04/11/22 Птн 20:33:58 #838 №2505833 
>>2505830
Небезосновательный намек понял.
Аноним 04/11/22 Птн 21:02:11 #839 №2505854 
>>2505828
а это все от того что вместо сурового нормально гуи делают пестроцветную хрень.
Аноним 05/11/22 Суб 02:18:34 #840 №2506066 
Capture.JPG
шарпаны, насколько тяжелая вещь эвенты?
я хочу каждую проперти завернуть в класс со своим собственным эвентом, у него будет один подписчик, который будет иногда дергаться.
вот у меня пикрелейтед есть и таких по 6-7 штук на каждом объекте, объектов пока не знаю, например 20-30, а подписывать на эвенты я планирую UI, т.е. одновременно вызываться будет только один
можно ли сделать как-то иначе?
я юнитихолоп, не бейте сильно
Аноним 05/11/22 Суб 02:24:58 #841 №2506067 
>>2506066
тяжелая в чем?
в плане вызова это просто вызов метода через делегат (такого везде полно), то есть чуть медленнее прямого вызова

В плане удобства эвенты работы с ними конечно говно, но вот они такие вот в языке.
Аноним 05/11/22 Суб 02:28:17 #842 №2506069 
>>2506067
я скорее имел в иду память, там же есть какие-то аллокации?
или на таких объемах без разницы
если я правильно понимаю вот есть INotifyPropertyChanged, там только один эвент, но как он определяет что передать?
Аноним 05/11/22 Суб 02:40:09 #843 №2506072 
>>2506069
там самые обычные делегаты. вернее там multicast delegate, что эквивалентно иммутабельному списку обычных делегатов.

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

аллокации получишь если будешь постоянно подписываться/отписываться, ведь тогда будет рождаться новый multicast delegate на каждый такой чих

но это у тебя какой то дикий многопоток будет, а события и многопоток это как "жрать жидкое говно вилкой", то есть неудобно, но с и с ложкой лучше не станет.
Аноним 05/11/22 Суб 04:25:53 #844 №2506097 
>>2506066
Датабиндинг элементов UI работает с ObservableCollection, и при любом изменении коллекции автмоатически обновляются забинденные свойства. А знаешь как элемент узнает, что в коллекции было изменение? Внутри нее есть событие.

А теперь представь, что у тебя список или дерево с сотнями элементов, где каждый элемент подписан на сие событие. И это итпа нормально. Единственное что, если ты сам подписываешься, то не забудь отписаться, т.к. подписка — это хороший источник утечек памяти т.е. очиств переменную с классом, он не удалится и будет работать.
Аноним 05/11/22 Суб 05:59:21 #845 №2506104 
>>2506072
>>2506097
спасибо, теперь более понятно
я решил отказаться от этого класса и все же посмотреть на eventargs
вот как на пике объект чисто с данными-проперти, его обновляю и на каждом изменении внешних проперти посылаю его вместе с eventargs и enum, а подписчик(и) будут брать этот enum и уже там раскидывать как надо
есть ли подводные камни?
помимо того как на другой стороне этот enum обрабатывать и не городить колоссальный свитч, я пока даже не представляю как за это браться. может забить и тупо обновлять вообще ВСЕ UI элементы через посланный объект в обработчике события? гулять так гулять
Аноним 05/11/22 Суб 06:00:06 #846 №2506105 
я забыл пик осел.JPG
>>2506104
забыл пик
Аноним 05/11/22 Суб 10:36:05 #847 №2506156 
Аноны, для новичка метанит + троелсен норм идея? Или есть варианты получше?
Аноним 05/11/22 Суб 10:57:56 #848 №2506159 
Здарова, бандиты! Книга Рихтера для кора актуальна ещё? Стоит читать? Её по прежнему продолжают советовать из всех утюгов. Хули он новое актуальное издание не выпустит, блять?
Аноним 05/11/22 Суб 11:01:21 #849 №2506162 
>>2505254
>>2505316
Хуйни не советуйте.
Пусть учит онгуляры и вкатывается в фулстек
Аноним 05/11/22 Суб 11:36:57 #850 №2506176 
А правда что в Core из коробки можно слить все библиотеки в одну? Или какие вообще есть решения?
Аноним 05/11/22 Суб 13:04:10 #851 №2506247 
>>2506105
Во-первых уже есть специальный интерфейс INotifyPropertyChanged.
Там все уже сделано и не надо городить города, как у тебя.
А интерфейс вынудит тебя создать одно единственное событие, и один метод OnPropertyChanged вызывающий это событие.

В дальнейшем это событие работает для всех твоих свойств. Т.е. ты в своем свойстве CurveSamples, после всех своих делишек подставляешь ровно одну строчку OnPropertyChanged с именем своего свойства. Например:
OnPropertyChanged("CurveSamples") Можно даже имя не вставлять, если добавить атрибут CallerMemberName, который позволяет автоматом получить имя свойства или метода, вызывающего OnPropertyChanged.

И самое главное, что биндинги к UI автоматом работают с этим интерфейсом и сами подписываются на событие. Тебе достаточно только забиндиться к свойству, которое вызывает OnPropertyChanged. Ну и еще кое че подшаманить.

В целом, ты повторил основную идею INotifyPropertyChanged, только без списков пропертей (как ты собрался их обновлять в будущем? Это же жопа в плане обслуживания — тебе придется вручную вносить изменения каждый раз, когда какие0то свойства прибавились или убавились)
Аноним 05/11/22 Суб 13:07:35 #852 №2506251 
>>2506105
А че делаешь? Чет с кривыми.
Аноним 05/11/22 Суб 13:26:29 #853 №2506259 
>>2506247
>>2506104
> и не городить колоссальный свитч
вот меня, кстати, тоже интересует, а как WPF обрабатывает события INotifyPropertyChanged? Автоматом создает внутри свич на все биндинги?

Конечно, событие можно сформировать как угодно и передавать даже делегаты на исполняемый метод (или команды). Но по дефолту в EventArgs события OnPropertyChanged возвращается только стринговое имя свойства. Как биндинг знает что и чего?
Аноним 05/11/22 Суб 13:37:30 #854 №2506263 
Как работает объединение ресурсов MergedDictionaries?

Вот допустим у меня отдельным проектом идет словарь ресурсов со стилем. Рядом еще 5 проектов, которые мерджат этот словарь в свой стиль. Это что получается? Тупо xaml-конкатенация? В каждом проекте будет своя копия простыни присоединяемого ресурса?

Выглядит расточительно. Я уже пытаюсь не юзерконтрол делать, а отдельный проект под достаточно комплексные модули UI, но идут по пизде стили — их приходится подгружать отдельно.
Аноним 05/11/22 Суб 13:46:39 #855 №2506270 
>>2506259
просто пропертигеттер через рефлексию и далее этот геттер в словарик и всего делов.
Аноним 05/11/22 Суб 14:31:10 #856 №2506285 
>>2506263
Так, ща в главный аппликешин добавил словари и чому-то все остальные проекты не задали вопросов.
Аноним 05/11/22 Суб 14:52:03 #857 №2506295 
>>2506162
Почему хуйня-то? Под свои задачи блейзор самое оно, тем более для шарписта. А такие задачи в разных бизнесах могут возникать. Вон смотрел доклад какого-то чела с альфы, что ему пришлось внедрять какие-то штуки, и он выбрал блейзор. Все у него заработало. Расхваливал что майки не стали изощряться и просто повторили, типичный вебфреймворк, по структуре. То есть въехав в блейзор, будешь понимать как работают все прочие фрейморки на жиэсах.

А потом те же компоненты разора можно в формочках или впфе использовать, потому что блейзор гибрид и в этих десктопных окнах умеет жить. А значит тот же код можно использовать в абсолютно разных вещах. Это же охуенно по сути, надо только разобраться и научится понимать, где фулстак без js фреймворков невозможно реализовать, а где уже можно обойтись чистым дотнетом.
Аноним 05/11/22 Суб 15:42:51 #858 №2506333 
>>2484368 (OP)
Как добавить C# в codeblocks?
Аноним 05/11/22 Суб 16:41:11 #859 №2506356 
изображение.png
Почему num всегда равно двум?
Аноним 05/11/22 Суб 16:50:42 #860 №2506370 
>>2506356
Может срабатывает твоя функция один раз.
Аноним 05/11/22 Суб 17:44:54 #861 №2506436 
>>2506247
я же говорил что я юнитихолоп, в версии с которой я работаю нет биндингов и т.д. наш UI не знает про это если его не допиливать.
я бы с удовольствием воспользовался уже готовым решением, но информации по этой теме у нас практически нет, а то что есть какая-то шляпа
надо будет подробнее почитать про INotifyPropertyChanged и попытаться адаптировать
>>2506251
да, мне нужна была деформация 3д модели по сплайну, это я уже насвинячил и уже было начал пилить версию которая будет вместо процессора использовать видеокарту, но окинул взглядом что за хуйню я нагородил и теперь хочу как нормальный человек сделать
Аноним 05/11/22 Суб 18:04:41 #862 №2506460 
>>2506436
>надо будет подробнее почитать про INotifyPropertyChanged и попытаться адаптировать
Да там все тоже самое, что и тебя. Просто шаблон интерфейса заставляет добавить событие и функцию для вызова события — всё. Ровно все то, что у тебя, только передается не индекс свойства, а его имя (да и то автоматически).
Аноним 05/11/22 Суб 18:16:39 #863 №2506469 
>>2506356
Потому что на каждый запрос создается инстанс класса
С контроллерами та же история
Аноним 05/11/22 Суб 18:38:03 #864 №2506501 
>>2484368 (OP)
А при установке Visual Studio галочка на Unity скачивает Unity? То есть, если Unity уже установлено то можно её не ставить в Visual Studio?
Аноним 05/11/22 Суб 19:27:45 #865 №2506595 
>>2506460
а из имени на другом конце соответственно вытаскивается проперти и значение через какой-нибудь GetProperty.GetValue?
Аноним 05/11/22 Суб 19:33:09 #866 №2506602 
>>2506595
Угу
Аноним 05/11/22 Суб 20:34:05 #867 №2506656 
2022-11-0520-31-27.png
>>2506595
Можно так, а можно через сендер вытащить. В проперти нейм использовать как идентификатор.
Аноним 05/11/22 Суб 20:41:20 #868 №2506662 
>>2506501
Нет
Аноним 06/11/22 Вск 12:46:09 #869 №2507038 
>>2506501
Раньше - да.
Сейчас - скачивается unity hab, в котором нужно выбрать что тебе там скачать нужно.
Аноним 06/11/22 Вск 13:01:58 #870 №2507049 
Объясните тупому, вот есть сервис, нахуя его через конструктор получать, если можно тупо статические методы запилить и использовать где захочется без всяких там интерфейсов?
Аноним 06/11/22 Вск 13:05:10 #871 №2507054 
.png
Как же я чет подзаебался.
Че меня триггерит.
Я не могу решить как правильно в плане архитектуры сделать.
Вот смотрите. 2 стула:
1. Делаем абстрактный TCP-сервер с интерфейсом как на прикриплейд. Дальше - от этого класса наследуемся и реализуем че нам там надо.
2. Делаем один TCP-сервер, в него передаем обработчик соединения, на которого положили то же самое что было бы в этом интерфейсе, но этот обработчик - передается снаружи. Соответственно - интерфейс у нас уже будет не INetworkServer, а IConnectionHandler.

Вот я блядь не знаю как лучше-то. Типа все во мне говорит - второе - лучше. Но потом шепот в ушко: Няша, наследование же не просто так придумали, чего ты его использовать не хочешь?
Не знаю короче. Че делать-то? Как быть?

Типа что я хочу получить-то?
Хочу что-то в духе:
var server = ServerBuilder()
.UseTcpTransport()
.AddTcpListener("0.0.0.0:8000")
.AddTcpListener("0.0.0.0:8001")
.AddExceptionHandler(e => Console.Error.WriteLine($"[ERROR] {ex}"))
.AddFilterFirst(x=>Console.WriteLine($"[{x.LocalEndPoint}] data rec {x.Input.Buffer.Length}"), y=>Console.WriteLine($"[{y.LocalEndPoint}] data snd {y.Out.Buffer.Length}"))
.Use<Mqtt>()
.Build();

await server.Run();
Аноним 06/11/22 Вск 13:10:15 #872 №2507059 
>>2507049
Как ты собираешься тестировать те классы, которые должны будут твой сервис потреблять?
Аноним 06/11/22 Вск 13:11:31 #873 №2507060 
>>2507054
Не скажу по твоей проблеме, но Божечки, какие же интуитивные лямбда-выражения в C#. В бейсике это просто жуть (как и реализация событий).
Аноним 06/11/22 Вск 15:45:55 #874 №2507142 
>>2507059
Хочешь сказать, что вся эта ебля с внедрением зависимостей была придумана тупо ради юнит-тестов?
Аноним 06/11/22 Вск 16:19:51 #875 №2507156 
>>2507142
Не только. Но это самый простой пример того зачем оно нужно.
Статический класс - это считай, глобальная переменная. Это сразу пиздос в плане многопточки, это сразу пиздос в плане: надо изменить поведение в одном месте, но не менять в других, это сразу пиздос в плане реальной разработки, потому что если ты меняешь статический класс - тебе нужно перетестировать буквально все места, где он используется.
Короче. Когда ты начнешь работать в реальной фирме, где делается реальный продукт, ты поймешь, насколько говняно самому писать статику. Еще сильнее ты это поймешь, когда у вас больше одного человека над одним проектом работает.
Аноним 06/11/22 Вск 16:24:15 #876 №2507160 
>>2507156
>Когда ты начнешь работать в реальной фирме
Эх, вот бы дожить до такого(
Аноним 06/11/22 Вск 17:12:12 #877 №2507201 
изображение.png
изображение.png
Продолжаю постигать азы asp.net. Почему у меня numb с атрибутом привязывается к введенному числу, а параметр метода OnPost (когда атрибута нет естественно) нет?
Аноним 06/11/22 Вск 18:21:37 #878 №2507267 
>>2507201
Сам разобрался, имя параметра должно было совпадать с именем поля.
Аноним 06/11/22 Вск 19:21:57 #879 №2507336 
поясните что это на языке C# означает?
public DirectoryNode(DirectoryInfo directoryInfo, DirectoryNode parent) : this(directoryInfo)
{
this.Parent = parent;
}


Меня интересует двоеточие после заголовка функции.
Аноним 06/11/22 Вск 19:22:51 #880 №2507341 
>>2507336
Вызов другого конструктора.
Аноним 06/11/22 Вск 19:28:32 #881 №2507354 
>>2507341
А, это типа перегрузка, но с выполнением кода основного конструктора. Равносильно
public DirectoryNode(DirectoryInfo directoryInfo, DirectoryNode parent)
{
this.New(directoryInfo);
this.Parent = parent;
}

У нас такой херни в бейсике нет.
Аноним 06/11/22 Вск 19:54:49 #882 №2507393 
А тут что? Сингл-лайн if ?
return this.Directory == null ? string.Empty : this.Directory.Name;

Что вообще означают двоеточия в шарпе? Символ на все случаи жизни?
Писец, собрали все знаки. Ля как в бисике
Return If(Me.Directory Is Nothing, String.Empty, Me.Directory.Name)
Просто через запятую.
Аноним 06/11/22 Вск 20:06:32 #883 №2507406 
2022-11-0620-03-09.png
А почему в этом коде вызывается событие изменения свойства, если
обзевабл коллекция в сама имеет событие внутри? Не будет двойного обновления?

Я такого не видел в других примерах кода. Там по дефолту все биндинги прекрасно обновлялись.
Аноним 06/11/22 Вск 20:09:45 #884 №2507412 
У тебя гугл забанен?
Аноним 06/11/22 Вск 20:11:31 #885 №2507415 
>>2507406
Коллекция не отслеживает изменение внутри самих объектов.
Аноним 06/11/22 Вск 20:15:44 #886 №2507420 
>>2507415
Так и это свойство тоже.

В итоге если я изменю итемы коллекции, то сначала произойдет событие в коллекции, а затем внешнее событие. Или одно переопределит другое?
Аноним 06/11/22 Вск 20:19:02 #887 №2507424 
>>2507420
>я изменю итемы коллекции
Я имею ввиду, типа, удалю один итем из коллекции.
Аноним 06/11/22 Вск 20:31:22 #888 №2507437 
>>2507406
Чтоб, если новый экземпляр коллекции создаёшь, графон обновился
Аноним 06/11/22 Вск 20:38:20 #889 №2507444 
>>2507437
ааа, понял.
Событие коллекции будет сообщать о внутренних изменениях.
Событие в свойстве будет сообщать об изменении самой коллекции.
Аноним 06/11/22 Вск 20:40:39 #890 №2507449 
>>2507412
У меня дефицит общения :3 Чмоки, сладкий.
Аноним 06/11/22 Вск 20:43:35 #891 №2507455 
Сап двачера c# может есть желающие скинутся на курс по ASP NET
https://stepik.org/course/114281/promo
если кто-то захочет, отпишитесь к посту оставлю телегу
Аноним 06/11/22 Вск 20:47:57 #892 №2507458 
>>2507455
Дорохо
Аноним 06/11/22 Вск 20:53:03 #893 №2507463 
>>2507455
Лол, просят за инфу, которая рассказана на первых 300 страницах asp.net в действии 45к. И ведь находятся дураки.
Аноним 06/11/22 Вск 20:53:15 #894 №2507464 
>>2507458
Да есть такое, но информация там годно подаваться должна, если бы хотя бы человек 10 набралось, можно было бы осилить
Аноним 06/11/22 Вск 20:54:15 #895 №2507466 
>>2507463
Дак что та инфа, если ее на практике не понятно как применять, мне как новичку например
Аноним 06/11/22 Вск 21:06:53 #896 №2507476 
>>2507464
во время инета подавай себе инфу как хочешь.
то есть можно остановиться на месте и ковырять пока не разберешься детально под 100 углами, чем идти дальше
и бесплатно
а тут ожидать волшебную таблетку...мде
Аноним 06/11/22 Вск 21:15:00 #897 №2507480 
>>2507464
>годно подаваться должна
Потому что дорого? Кек.
Там по структуре уроков видно, что темы можно взять из ютуба.

Покажи мне хоть один их тутор.
Аноним 06/11/22 Вск 21:17:31 #898 №2507483 
>>2507476
>то есть можно остановиться на месте и ковырять пока не разберешься детально под 100 углами
Люто двачую. Даже если прямо ответят на твои вопросы, тебе эта инфа будет пустым местом, пока ты 50 раз не исследуешь тему.
Аноним 06/11/22 Вск 21:25:36 #899 №2507486 
>>2507466
А с чего ты взял, что там тебе объяснят? Опять навалят маня-ситуаций, где их код работает идеально, но чуть в сторону и тупик.
Единственная причина — это заебать вопросами ментора и выбить из колеи курса. Дико горят, но так есть толк хотя бы. Всегда так делал, еще с института.

Алсо, Павел Шмачилин трехчасовые стримы ведет, по 20 стримов на тему. Можно весь отпуск нонстопом смотреть.
Аноним 06/11/22 Вск 21:28:45 #900 №2507490 
>>2507480
>>2507483
Я 3 курса на степике прошел у этого автора, например по Linq ты такой информации собранной не найдешь нормально, на ютубе очень плохо эта тема освещена, много практических заданий. Тут вопрос в том, что ты получаешь собранную информацию и не надо понимать что в какой последовательности тебе изучать и тратить на это кучу времени. А по 50 раз исследовать и расширять полученную информацию лучше, чем какой-то набор статей разрозненный, ну 40 к я согласен за такую инфу платить бредово, но 4 - 7 к я за такую инфу бы отдал
Аноним 06/11/22 Вск 21:33:14 #901 №2507496 
>>2507490
У нас не найдется столько народу, чтобы платить по 5к. Это надо человек 10, в треде стольких нет.
Аноним 06/11/22 Вск 21:35:26 #902 №2507499 
>>2507496
Он на складчинах весит, но что-то движения особого там нет, ну скорее всего придется этот месяце по видеоуркам индуса идти, если вдруг кому нужен курс могу поделится по AspNet.6
Аноним 06/11/22 Вск 21:37:06 #903 №2507502 
Проблема не в том, что плохо пояснят. Пояснять могут хорошо и очень подробно, но....
но дело в том, что мозг устроен так, что он не понимает какую то часть и поэтому картина не складывается, все как то пипец сложно и связи не прослеживаются.
Как только этот кусочек понимается, то картина становится легкой и целостной.
И тут не проблема учителя - он видит картину по другому, для него она "да все там понятно", а ученик тупит и "не может уловить самую суть".
Аноним 06/11/22 Вск 22:27:45 #904 №2507565 
Что нужно уметь реализовать и знать из стека: asp, entity Framework, pgsql что бы соответствовать джуну? А то вроде могу всякое делать но не ясен уровень.
Будет ли плюсом что могу в angular и соответственно работать с данным с фронта, запросить что нибудь, отправить на бек и тд? Всякую фронтендную мишуру по типу html,css тоже умею.
Аноним 07/11/22 Пнд 05:40:07 #905 №2507702 
using System;

namespace Std
{
class Program
{
static void Main(string[] args)
{
const double pi = 3.14;
double radius;


Console.WriteLine(pi);
radius = Convert.ToDouble(Console.Read());
Console.WriteLine(radius);
Console.WriteLine(radiusradiuspi);

}
}
}
Почему не работает???
Аноним 07/11/22 Пнд 09:18:53 #906 №2507740 
>>2507466
>Дак что та инфа, если ее на практике не понятно как применять, мне как новичку например
На примере сраного интернет магазина-то, ну-ну.
Аноним 07/11/22 Пнд 09:19:49 #907 №2507741 
>>2507486
>Единственная причина — это заебать вопросами ментора и выбить из колеи курса. Дико горят, но так есть толк хотя бы.
Вот этот дело говорит.
Аноним 07/11/22 Пнд 11:01:03 #908 №2507767 
>>>2507486

Кстати если про менторов говорить, может кто находил себе ментора платного, на youdo или freelance сайте, чтобы какую-то сложную или непонятную тему разобрать, поделитесь инфой
Аноним 07/11/22 Пнд 11:03:18 #909 №2507768 
>>2507740
Ну если брать курсы, то в большинстве пишется интернет магазин, я вот слив нашел по WPF где пишется канбан доска с задачками, супер пупер приложение никто не пилит на учебных проектах, хотя было бы круто
Аноним 07/11/22 Пнд 11:12:01 #910 №2507772 
>>2507767
Если что-то непонятно можешь спросить итт, или на so.
Аноним 07/11/22 Пнд 11:44:00 #911 №2507794 
>>2484537
>пользователи никогда не скажут, что им не нравится цвет кнопки
Потому что у них не будет выбора? Ты смотришь со своей позиции, но я лично встречал людей, которые уходили в говнософт с блядской политикой, потому что "у них интерфейс не такой отсталый".

Мало кому хочется ездить в надежном тракторе — всем хочется комфорта и эстетического удовольствия, даже если этот комфорт временный под руководством пидорасов.
Аноним 07/11/22 Пнд 18:23:07 #912 №2508093 
>>2507565
Необходимо запустить микросервисы на докере, уметь в красночерное дерево, уметь в поиск LCP и прочую хуйню для строк. Этого достаточно чтобы называться джуном.
Аноним 07/11/22 Пнд 18:31:06 #913 №2508100 
>>2507794
Поясни за микросервисы. Это отдельные программы, которые выполняются в фоне и вызывают друг друга? Разве от этого не страдает скорость? В винде вот точно немаленькие накладные расходы при использовании com.
Аноним 07/11/22 Пнд 18:31:21 #914 №2508101 
>>2508100
>>2508093
Аноним 07/11/22 Пнд 18:54:10 #915 №2508138 
>>2507768
>то в большинстве пишется интернет магазин
Вот именно, что в большинстве. Т.е. каждый второй будет у себя в резюме ссылку на свой пет с недоделанным магазином какой-нибудь бесполезной хуйни.
Ну и если ты даже дойдешь до собеса, то первый вопрос будет - нахуя ты на шарпе делал то, что в любой cms делаетс в пару кликов.

Вот тебе нормальная идея:
Запили микросервис для сбора метрик с сервера.
1) Т.е. модуль который устанавливается непосредственно на сервере и по запросу может отдавать нужные метрики (память, диск, нагрузка и т.д.). Тут как минимум отработаешь REST, оптимизацию и научишься получать метрики разными хитровыебанными способами (причем еще и по разному в зависимости от системы)
2) Затем сервис-агрегатор, в котором регистрируются сервисы первого типа и он опрашивает их с заданной периодичностью и складирует данные у себя в БД. Плюс по запросу может отдать их в нужном количестве и разнообразии. Тут отработаешь работу с БД, Quarz, межсервисное взаимодействие, фильтры и сортировки в запросах и т.д (например через OData или вообще свой миниязык запросов придумать), можешь еще и аутентификацию прикрутить.
3) Ну и третье - это морда (например на WPF или React-е) которая будет обращаться к агрегатору и выводить данные в виде графиков-цифирок. Тут отработаешь взаимодействие с пользователем, те же запросы к сервису и т.д.

Короче что-то вроде самописного аналога Прометеуса+Графана.

Далее заводишь себе пару тройку vps-ок, раскидываешь на них свои сервисы и можешь в любой момент показать их работу кому угодно. Если сделаешь толково, то даже сам сможешь этим пользоваться. Плюс немного подучишь работу со стороны девопса, т.к. в реальной работе часто нужно разворачивать всякую хрень, как минимум для тестов своего говнокода.
Аноним 07/11/22 Пнд 19:21:39 #916 №2508176 
>>2508100
>Разве от этого не страдает скорость?
>В винде вот точно немаленькие накладные расходы при использовании com.
И при этом ты делаешь приложение, которое работает с базой данных по сокету и тебя не парит этот факт "ааааа производительность".
Все зависит от деления монолита.
Аноним 07/11/22 Пнд 20:41:33 #917 №2508255 
Правильно ли я понял, что в майкрософт стор щас нихуя залить нельзя?
Аноним 07/11/22 Пнд 20:45:09 #918 №2508261 
>>2508255
Можно.
Аноним 07/11/22 Пнд 20:54:04 #919 №2508272 
Повторяю сишку, вот такая задача:
Калипта Анны, которая считается самой быстрой птицей в мире относительно своего размера, может развивать скорость до 80 км в час.

Задача
Напишите программу, чтобы вывести, сколько километров она будет преодолевать каждый час за 5 часов полета.

Выходные данные
80
160
240
320
400

Подсказка
Просто умножьте 80 на счетчик для каждой итерации.
Используйте цикл for для итеративного выполнения умножения.

Я вот сейчас час думал над тем, что требуется, даже заснул от того, что сложно понять. Что она. По условию задачки. Летит на максимальной скорости и надо просто количество км с нуля каждый час выводить. ПРИ УСЛОВИИ, ЧТО НЕПРЕРЫВНО ЛЕТИТ ПО ПРЯМОЙ!!!
Пиздос, ну кто так условия ставит.
А как проходит ваш день?
Аноним 07/11/22 Пнд 20:59:27 #920 №2508277 
>>2508272
АЛГ ПТИЦА
НАЧ
ДЛЯ И ОТ 1 ДО 5
НЦ
ВЫВОД И * 80
КЦ
КОН
Аноним 07/11/22 Пнд 21:39:13 #921 №2508307 
>>2508277
Не плодить лишние сущности!
for (var i=80;i<=400;i+=80){
Console.WriteLine(i);
}
Аноним 07/11/22 Пнд 21:40:03 #922 №2508308 
>>2508138
годно, спасибо
Аноним 07/11/22 Пнд 21:41:41 #923 №2508310 
>>2508307
Enumerable.Range(1, 5).Select(i=>Console.WriteLine(i*80));
Аноним 07/11/22 Пнд 21:48:36 #924 №2508317 
>>2508272
>которая считается самой быстрой птицей в мире относительно своего размера,
Пиздос у составителя задачи хлебушек в голове. За каким хером тут ремарка о размере. Вот поэтому сидишь и думаешь, что где-то проебался, думая куда тут размер приткнуть.
Аноним 07/11/22 Пнд 21:54:38 #925 №2508322 
>>2508317
>За каким хером тут ремарка о размере
Для общего развития же
Аноним 07/11/22 Пнд 22:13:01 #926 №2508331 
>>2508317
Вкатунов надо сразу приучать находить суть в многостраничных доках кабана, где много лишнего описания, не имеющего отношения к самой реализации.
Аноним 07/11/22 Пнд 22:14:04 #927 №2508333 
>>2508317
Это хорошая идея, чтобы человек фильтровал информацию. Школьники и первокурсники очень туго воспринимают условия задачи и тот факт, что половина ответа всегда содержится в вопросе.

Когда научишься воспринимать инфу в целом, то даже будешь ловить кайф от затерявшихся между строк нюансов. Появится своего рода наблюдательность.
Аноним 08/11/22 Втр 00:13:17 #928 №2508404 
Capture.JPG
шарпаны, есть вопрос по дженерикам и интерфейсам
вот я хочу определить интерфейс такого вида
у меня есть два источника данных, один выдает float, другой выдает int, я бы хотел чтобы класс с этим интерфейсом мог одновременно и источник с int и источник с float обрабатывать, чтобы не городить дичь типа
MyClassInt : MyInterface<int>
и
MyClassFloat : MyInterface<float>
специально под каждый источник данных
как это лучше сделать?
Аноним 08/11/22 Втр 00:34:42 #929 №2508418 
>>2508404
Ну так ты производный класс тоже сделай дженерик.
Ты должен определять тип данных класса на стадии его объявления.
Аноним 08/11/22 Втр 00:38:24 #930 №2508423 
2022-11-0800-34-55.png
>>2508418
>>2508404
Аноним 08/11/22 Втр 00:41:10 #931 №2508425 
>>2508418
так источник данных уже на определенном классе будет
может сделать проверку в конструкторе? типа
if(typeof(T) == typeof(int)) использовать этот метод обработки
и т.д.
Аноним 08/11/22 Втр 01:17:50 #932 №2508447 
>>2508425
>if(typeof(T) == typeof(int))
Не нужны никакие проверки, если ты используешь дженерики.

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

Я не помню как в шарпе, но в бейсике когда ты создаешь экземпляр класса, пишется вот такое:
New MyClass(Of Integer)
Т.е. ты говоришь, создай мне класс, который будет обрабатывать интеджер. А если тебе надо обработать флоат, то создаешь новый экземпляр
New MyClass(Of Float)
И у тебя будет два экземпляра класса, где каждый обрабатывает свой конкретный тип.

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

Если мы говорим про функции класса, где ты хош интеджер запихнул в аргумент, а хош флоат, то это уже называется перегрузкой. Но как ты наверно понял, удобство использования компенсируется неудобством создания. Для перегрузок тебе придется писать код несколько раз.
Аноним 08/11/22 Втр 01:23:10 #933 №2508450 
>>2508447
> с дженерик аргументами, то обозначать тип не нужно.
т.е. два экземпляра класса
Аноним 08/11/22 Втр 01:23:59 #934 №2508451 
>>2508450
да е-мое.

>По факту у тебя будет две функции, одна под int, другая под float.
т.е. два экземпляра класса
Аноним 08/11/22 Втр 02:41:52 #935 №2508490 
>>2508447
так в итоге мне придется делать:
2 экземпляра класса-потребителя данных c дублированным кодом и 2 экземпляра класса-форвардера данных с дублированным кодом
это кмк уродство выйдет
вот бы было возможно сразу на старте узнавать что за данные и, ну не знаю, подменять внутренний делегат на doInt/doFloat/doEtc
Аноним 08/11/22 Втр 03:02:05 #936 №2508498 
image.png
Сап дотнетач, фронтедодебил с дно.жс нод.жс на связи.

Занимаюсь этой хуетой уже последние лет десять до этого были жалкие попытки вкатиться в гейдев через юнити. Последние пару лет всё больше думаю перебраться во что-то более стабильное и менее всратое нода катится непойми куда, фрагментация с дено/бан/пизда-твоего-трапа, низкое качество проектов, без пакетов хуй что сделаешь, write-only код, на фронте не лучше, реакт написан дропаутами без вышки с переизобретением всех хуёвых концепций прошлого до которых хватило ума соевых разрабов, ангуляр сдох, свелт сырой и популярен только у твитерских сойбоев, тулы переписывают на раст, потому что жс говно. Изначально выбор пал на Гошечку, так как она показалась простой для кододебила вроде меня. Вроде начал вкатываться, вроде всё понятно... но потом я начал упираться в примитивность языка (и это ещё на этапе изучения), которая начала просто раздражать. Позже понял что также сложно найти работу на удалёнке, когда ты по сути жуниор в Го, а на месте вакансий по Го и нет. В общем пока забросил Го, но думаю попробовать ещё раз вкатиться в бекенд через .Net/C#. Собственно вопроса на данном этапе два:

1. Насколько глубокл в легаси надо лезть при изучении платформы и языка? Пробежавшись по верхам вакансий, вижу много современных вещей уровня .Net 6. Но в тоже самое время вижу какие-то более древние вещи типа ASP.Net. Как часто нужны знания древних, когда работаешь над новыми проектами? Буду ли я огребать не поевши легаси лет десять назад? Вопрос скорее всего покажется идиотским, попробую пояснить по аналогии. Часто встречаю фронтов, которые начали свой путь с Реакта и до этого им не приходилось работать с DOM напрямую, писать чистый жс и тому подобное. Я вижу как они страдают когда надо закодить что-то снаружи современного джаваскрипта или разобраться с чем-то уровня Backbone.js или какого-то кода написаного в стиле ES5.

2. Второй вопрос по поводу Винды/Микрософта. Так или иначе когда сталкивался с .Net проектами или разрабами, они все юзали Windows/Azure/Visual Studio. Как обстоят дела с .Net разработкой из под macOS инбифо туда ли ты зашёл, сахарок?? Сижу на маке уже много лет, а до этого сидел под Линуксом уже не чисто на уровне мышычной памяти не могу использовать Windows. И соответсвенно мне было бы комфортно продолжать юзать всякие macOS'ы. Есть ли вообще смысл вкатываться в .Net с этим моим Маком? Или опять же буду огребать от несовместимостей, более слабых тулзов, нежелания работодателей выдавать оборудование от Apple?
Аноним 08/11/22 Втр 05:15:52 #937 №2508514 
Capture.JPG
у меня уже жалкие остатки мозга плавятся
почему ТУДА(метод Set, который принимает float) каст из инта не нужен, а ОТТУДА(int который передается обратно через ValueChanged) без каста в инт нельзя? в чем разница?
Аноним 08/11/22 Втр 05:19:09 #938 №2508515 
>>2508514
ну так int может implicit cast в float без потерь точности (не дробное же число)
а обратно cast теряет точность и поэтому требует явного указания.
Аноним 08/11/22 Втр 05:31:57 #939 №2508517 
>>2508515
теперь понятно, но все равно странно
мне просто казалось что C# это строгие типы и вот это все
а тут можно если на пол-шишечки, а вот тут нельзя, а тут вообще объект заворачиваем...
Аноним 08/11/22 Втр 05:35:02 #940 №2508518 
>>2508517
В шарпе есть такая штука implicit/explicit operator
Но мало кто помнит о ней
Аноним 08/11/22 Втр 07:41:17 #941 №2508539 
>>2508498
1. Если учить только .Net Core стэк (.Net 6, ASP .Net Core, EF Core и т.д.), и собеседоваться только на вакансии на нём, то в легаси особо лезть не придётся. Нормальные компании уже давно на него переметнулись и пилят сервисы только на нём. Вакансии с .Net framework лучше просто стороной обходить. С ними можно совсем на лютую дичь нарваться, типа первого ASP (что они вообще в начале 2000-х курили?) или ASP Web Forms. Уже достаточно вакансий на .Net Core(.Net 5, .Net 6).

2) .Net Core кроссплатформенный, нормально собирается и
работает под Mac OS (по крайней мере консольные приложения и веб-сервисы, шо там с гуём не знаю). С очень большой долей вероятности, сервисы вообще будут билдится в докер-образы и деплоиться в какой-нибудь кубер.
Под Mac OS есть Visual Studio, но она вроде урезана относительно виндовой, поэтому рекомендую разжиться лицензией на Rider от жид брейнс (в нормальных компаниях дают).
У меня коллега как раз сидит на маке и проблем не испытывает. Другой кстати, вообще на арчике. Тоже без проблем.
Аноним 08/11/22 Втр 08:23:25 #942 №2508551 
image2022-11-0808-21-11.png
У меня так нихрена и не завёлся многопоток, так что перефразирую вопрос
Есть обработчик нажатия кнопки, и надо сделать так, чтобы chat.Send() не вешал мне UI, при этом исправно обновляя его (там биндинг). Попытка сделать через таск попросту не работает
Аноним 08/11/22 Втр 08:32:47 #943 №2508554 
>>2508551
код на скрине плох. Он запускает таску и не дожидаясь ее окончания очищает текст в надежде, что таска успеет запуститься раньше очистки.

Так то можно юзать async/await в обработчике
или запустить Task.Run где юзать Dispatcher для обращения к контролу

Но вообще вся затея неправильная. Нужно сначала очищать поле ввода, а сообщение ставить в очередь на отправку с обдумыванием "а что делать если оно не отправится"
Аноним 08/11/22 Втр 08:39:40 #944 №2508556 
>>2508554
Мне нужен любой костыль, который просто это запустит, потому что это лаба, читай MVP, а не бизнес-приложение. async/await тоже ничего не делали. Про диспатчер не первый раз слышу, но он как-то крайне странно выглядит, и как его прикрутить я не понял. А ещё, что он собственно даёт
Чё? Почём? Куда? Аноним 08/11/22 Втр 09:02:03 #945 №2508564 
1667887323013.png
Итак, уважаемые знатоки, внимание на экран!
Вопрос от Василия Пупкина из города Костромы. Василий обнаружил, что код можно написать тремя разными способами. Детали вопроса на экране.
Время пошло.
...
Отвечает Александр Друзь:
Аноним 08/11/22 Втр 09:20:51 #946 №2508573 
>>2508564
Друзь говорит что всё это яйца, но в анфас последний вариант
Аноним 08/11/22 Втр 09:47:15 #947 №2508582 
>>2508573
Ещё варианты ответов будут? МБ Поташев что-то желает добавить?
Аноним 08/11/22 Втр 10:00:44 #948 №2508592 
Парни, вопрос больше к джунам и мидлам. Как сейчас в условиях санкций с работой? Выучил шарп и стою перед выбором: учить asp.net или сменить язык. Чекнул hh.ru там вакансий для джуна очень мало
Аноним 08/11/22 Втр 10:01:05 #949 №2508594 
Парни, вопрос больше к джунам и мидлам. Как сейчас в условиях санкций с работой? Выучил шарп и стою перед выбором: учить asp.net или сменить язык. Чекнул hh.ru там вакансий для джуна очень мало
Аноним 08/11/22 Втр 10:08:53 #950 №2508603 
>>2508592
>Выучил шарп
А как ты это определил? Тоже хочу выучить, всё никак не могу
Аноним 08/11/22 Втр 10:14:49 #951 №2508605 
>>2508603
> А как ты это определил?
Хелловорлд конпелируется без ошибок - значит выучил! Еее! Где мои 1000ККК зряплаты!?
Аноним 08/11/22 Втр 10:23:02 #952 №2508610 
>>2508594
Меняй на джаву, там больше вакансий
Аноним 08/11/22 Втр 11:22:06 #953 №2508646 
>>2508556
Деспетчер инвок выглядит странно, но без него никуда.

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

Допустим у тебя есть сия конструкция.
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background,
new Action(() => Mouse.OverrideCursor = Cursors.Arrow));

Вот это твой портал. А вот в круглых скобках это та самая щель портала.
Application.Current.Dispatcher.BeginInvoke( );

А тут все то, что ты хочешь сделать со своим окном, пока скобки открыты.
new Action(() => this.Height = 100500) //Называется делегатом.

А это настройки портала:
DispatcherPriority.Background
Аноним 08/11/22 Втр 11:40:33 #954 №2508658 
>>2508646
Тут выше кто-то говорил, что биндинги могут UI даже из другого потока обновлять. Проблема в том, что таск, который я запускаю, в итоге ничего не делает. На второй стороне попросту не принимаются символы

Диспатчер это единственный вариант что-то асинхронно с UI запустить, чтобы при этом я мог этот UI обновлять?
Аноним 08/11/22 Втр 12:32:48 #955 №2508683 
>>2508658
>Тут выше кто-то говорил, что биндинги могут UI даже из другого потока обновлять.
С другим потоком всегда будут проблемы. Речь шла про асихронщину.
Биндинги на мой взгляд в первую очередь рассчитаны на связку с данными. У тебя могут быть трудности с перезаписью этих данных.

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

>Диспатчер это единственный вариант что-то асинхронно с UI запустить, чтобы при этом я мог этот UI обновлять?
Биндинги. Но там нужна предварительная настройка.
Тебе не избежать инвоков. Вот возьми и создай отдельное решение с тестом инвоков. Можешь выложить сюда.

Меня они тоже бесят и я скорее их использую как заклинание.
А так там всякие сложности типа объект А ожидает синхронизации с объектом Б, и наоборот объект Б ожидает синхронизации с объектом А.
Есть Application.Current.Dispatcher.BeginInvoke
А есть textbox.Invoke
Аноним 08/11/22 Втр 13:53:02 #956 №2508757 
>>2508683
Так я и работаю с биндингами. Как мне их донастроить, чтобы они работали с асинхронностью/в отдельном потоке, при этом изменяя некоторый текст в гуе?
Аноним 08/11/22 Втр 14:19:09 #957 №2508774 
>>2508757
Хз, биндинги у тебя без асинхронности работают? Т.е. ты меняешь свойство из данных и у тебя автоматом меняется свойство твоего тексбокса? Стоит Mode=TwoWay и все такое?
Аноним 08/11/22 Втр 14:24:48 #958 №2508784 
>>2508774
Всё так. Теперь надо добавить асинхронности, потому что тяжёлая операция и бла-бла-бла
Аноним 08/11/22 Втр 15:50:28 #959 №2508871 
bandicam 2022-11-08 15-39-40-117.mp4
>>2508784
Возможно ты используешь invoke. Попробуй BeginInvoke.

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

Используй BeginInvoke. Ее отличие в том, что она не с ноги ебашит и грит "вот она я, прими мои метод".
BeginInvoke стучит в дверь и спрашивает "можно войти?", у нее есть await — ожидание.

И на видерил (извини шо бейсик) я запустил одновременно два цикла.
раньше вроде был еще EndEnvoke и он должен был идти после BeginInvoke, но сейчас его не нашел.
Аноним 08/11/22 Втр 15:54:44 #960 №2508872 
>>2508871
Нене, у меня на данный момент только то, что было на скрине закомменчено. Такс не сработал, так что я ищу обходные пути
Есть только обработчик кнопки и в нём тяжёлая функция, которую желательно бы стартануть где-нибудь в другом месте, чтобы она при этом обновляла гуй
Аноним 08/11/22 Втр 16:09:12 #961 №2508888 
>>2508872
Перед чат.сенд просто await Task.Delay(50); поставь и всё
Аноним 08/11/22 Втр 16:14:20 #962 №2508889 
>>2508872
Ну да, выносишь функцию отдельно, это первым делом.

Если она долго считает, но используется с малой частотой, и тебе хочется, то делаешь эту функцию асинхронной, а в конце return task (или как там у вас). А то что эта функция возвратит, ты пихаешь в свойство текста.

Если как у меня в примере, где функция очень часто обращается к гуи, то используешь InvokeAsync.
Аноним 08/11/22 Втр 16:16:42 #963 №2508891 
>>2508888
Плохая идея, а если операция будет длиться дольше 50 миллисекунд?
Аноним 08/11/22 Втр 16:26:35 #964 №2508898 
>>2508889
Она и так вроде как отдельно вывешена. Там рядом разве что очистка поля ввода
Частота зависит от пользователя. Возвращает она примерно нихрена, поэтому я не знаю, куда внутри await засовывать
Аноним 08/11/22 Втр 17:09:47 #965 №2508933 
>>2508658
>что биндинги могут UI даже из другого потока обновлять
если мы говорим ПРО WPF, то да - свойства вьюмодели можно обновлять из другого потока, а биндинг который привязан к этому свойству обновит гуи через контект синхронизаци (конечно затрачивая на это время и тормозя алгоритм в другом потоке)
(но при этом не Add/Remove у биндинга коллекций)

на твоем скрине вообще не пойми что это впф или винфрмс и где там биндинги или хотя бы обновление чего либо в гуи.
Аноним 08/11/22 Втр 17:13:48 #966 №2508935 
>>2508898
Я понял в чем у тебя проблема. Стринг хоть и притворяется структурой, но он все же ссылочный тип.
Когда ты таску передаешь ссылку, то таск начинает шатать ее и не давать другим заюзать. И у тебя случается подвисон.

Передай текст во временную переменную (любые операции со строкой порождают новую строку), которую потом отправляй в Task.
Аноним 08/11/22 Втр 17:18:37 #967 №2508940 
>>2508933
>если мы говорим ПРО WPF, то да - свойства вьюмодели можно обновлять из другого потока, а биндинг который привязан к этому свойству обновит гуи через контект синхронизаци

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

Результат: подвисон.
Аноним 08/11/22 Втр 17:23:00 #968 №2508945 
>>2508940
> к депенденси проперти типа string.
кто говорил про депенденси проперти?
Аноним 08/11/22 Втр 17:23:19 #969 №2508946 
>>2508940
И да, проперти — это часть класса MainWindow, и биндиг вероятно не виноват в неисполнении своих обязанностей т.к. виснет все окно.

Но ведь когда ты создаешь экземпляр класса вьюмодели, то ведь с этого омента этот экземпляр начинает принадлежать STA-потоку окна.
Аноним 08/11/22 Втр 17:34:08 #970 №2508957 
>>2508935
Падажжи, в таск отправляется делегат, в моём случае лямда, которая уже принимает стрингу. Плюс та самая стринга больше нигде не юзается. Попробую, конечно, но звучит странно
Аноним 08/11/22 Втр 17:37:30 #971 №2508961 
>>2508945
Ах ну да.
Если юзать INotifyPropertyChanged, то обновление свойства будет по событию. Проверил — работает.
Аноним 08/11/22 Втр 17:37:53 #972 №2508962 
Почему восьмая жава будет поддерживаться вплоть до 2030 года, а у дотнета лтски дай бог 3 года обновы получают?
Аноним 08/11/22 Втр 17:38:24 #973 №2508964 
>>2508935
Однако ж, заработало. Спасибо
Аноним 08/11/22 Втр 17:40:36 #974 №2508967 
>>2508962
потому что жава это говно мамонта, где сидят заскорузлые жависты, которые не умеют в новое.
А шарписты нормальные ребята и с радостью отбрасывают устаревшее говно и не считают нужным его продолжать жрать.
Аноним 08/11/22 Втр 17:42:23 #975 №2508970 
>>2508957
Ну я тоже думал что хрень, но с новым экземпляром стринга у меня завелось. Но если я передаю ссылку напрямую, то виснет.
Передается ссылка на оригинальное совйство и таск начинает эту ссылку блокировать для остальных.


Алсо >>2508961 как анон писал >>2508935 , если ты биндил к свойству через INotifyPropertyChanged, то там вообще не важна занятость свойства. Свойство отправляет событие и элемент гуи работает именно с событиями.
Аноним 08/11/22 Втр 17:44:12 #976 №2508972 
>>2508970
Фикс:
как анон писал >>2508933
Аноним 08/11/22 Втр 17:45:19 #977 №2508974 
>>2508970
>Свойство отправляет событие и элемент гуи работает именно с событиями.
не думаю. думаю что биндинг получает событие, достает значение свойства из объекта в абы каком потоке, а потом уже маршалит его в контекст синхронизации для рисования в гуи.
Аноним 08/11/22 Втр 18:47:15 #978 №2509034 
Ну если посмотреть на LINQ в нет7 то видим, что ускорение там через векторизацию, что...ну так то редкий случай, ведь обычно LINQ это всякие Where
Аноним 08/11/22 Втр 20:42:11 #979 №2509148 
Capture.JPG
Capture2.JPG
как эффективнее всего проходить такую структуру?
вот код приложил, допустим если на каждом объекте есть условие(изменился). они могут изменяться, например child1 будет изменен, child2 нет, если родитель не изменен, то обновить только child1, в противном случае всех. я как-то так хочу сделать.
как вообще подобные иерархические "деревья" строят?
я нигде не учился и не программист вообще не бейте палками
Аноним 08/11/22 Втр 21:30:30 #980 №2509183 
>>2509148
Когда нужно обходить графовые структуры , то лучше всего использовать BFS( https://e-maxx.ru/algo/bfs ) или DFS ( https://e-maxx.ru/algo/dfs ), в зависимости от того, какой порядок тебе нужен. Лучше всего взять стандартную реализацию одного из них (они простые, всего-то стэк/очередь + цикл) и дополнить своими кусками кода.
Аноним 08/11/22 Втр 21:45:33 #981 №2509198 
Катите, глупцы!
Аноним 08/11/22 Втр 21:52:45 #982 №2509207 
>>2508962
Во первых .Net Framework 4.8 поддерживается до сих пор и будет поддерживаться до тех пор пока жива 10-я винда, а это минимум до 2025-года. А с учетом того, что и в 11-й он будет, то и того дольше.
А у .Net Core и .Net смысла нет дольше LTS-ки держать, т.к. новые версии - это по сути и есть мажорные обновы платформы и переход с одной, на другую вообще минимальные усилия по меркам бизнеса занимает.
Если проекты построены нормально (а чаще всего это так, т.к. в шарпе исторически и традиционно более жесткие требования к чистоте кода), то переход с версии на версии вообще между делом может происходить в течение пары спринтов.
Аноним 08/11/22 Втр 21:54:55 #983 №2509209 
>>2509148
Гугли "Обход дерева в ширину" и "Обход дерева в глубину" и выбирай то, что соответствует твоим потребностям.
Аноним 08/11/22 Втр 22:03:14 #984 №2509215 
>>2509198
Заметил, что в каждом треде каждого раздела найдется такой пассивно-агрессивный попукиватель.
Аноним 08/11/22 Втр 22:04:49 #985 №2509220 
>>2509198
Перекати.
Аноним 09/11/22 Срд 05:12:54 #986 №2509421 
Там .NET 7 вышел а вы молчите
Аноним 09/11/22 Срд 05:50:51 #987 №2509425 
>>2509421
А тебя мы для чего держим
Аноним 09/11/22 Срд 06:18:16 #988 №2509434 
>>2509421
Тс. Не пали контору.
Аноним 09/11/22 Срд 06:49:20 #989 №2509441 
.png
>>2508551
Делай так. Базарю, еще захочешь!
Аноним 09/11/22 Срд 07:12:05 #990 №2509448 
Такой тупой вопрос.
Есть ли какой-то простой способ узнать оригинальный IPадрес-порт по которому моя хуйня доступна снаружи?
Ну. Т.е. смотрите. Моя хуйня - за натом. Сидит на 80 порту на виртуалке. Одмены настроили проброс. И вот я - забываю на каком порту внешнего IP-адреса висит моя хуйня. Хочу чтобы на веб-морде можно было посмотреть этот адрес-порт, чтобы если кому-то надо - не лезть в почту и не искать проброс.
Аноним 09/11/22 Срд 09:03:34 #991 №2509470 
>>2509448
решается очень просто - сканируешь весь диапазон IP
их не так уж много, всего чуток миллиардов.
Аноним 09/11/22 Срд 09:25:56 #992 №2509478 
>>2509448
Сделать запрос к какому-нибудь checkip.dyndns.org, но так можно узнать только IP. Так что лучше вынести эти данные в конфиг, всё равно они будут редко меняться.
Аноним 15/11/22 Втр 14:50:31 #993 №2514360 
>>2484368 (OP)
Я в глаза долблюсь или 41-й тред по шарпу смыло?
Аноним 15/11/22 Втр 14:53:47 #994 №2514362 
>>2514360
> Я в глаза долблюсь или 41-й тред по шарпу смыло?
Смыло(
Аноним 15/11/22 Втр 15:00:32 #995 №2514367 
>>2514360
У меня даже из подписок тред пропал
Аноним 15/11/22 Втр 15:17:59 #996 №2514376 
Видимо какой то жавист в админах.
Аноним 15/11/22 Втр 15:23:57 #997 №2514378 
Привет , есть два вопроса
1) Решил поизучать с# и столкнулся с проблемой запуска кода в стандартном проекте, не могу запустить и кнопка запуска серого цвета, с хот кеем тоже самое
2) Я немного изучаю Java и хотелось бы узнать чем же c# по вашему мнению лучше и в каких областях имеет преимущество.

Спасибо
Аноним 15/11/22 Втр 16:18:49 #998 №2514401 
>>2514378
>столкнулся с проблемой запуска кода
Какая IDE хоть?
>чем же по вашему мнению лучше
По "нашему мнению" всем чем можно. Для меня прежде всего удобство и широта возможностей.
Можно ебашить жесткий ООП, лайтовую функциональщину и ламповую байтоеблю
Можно в винду, можно в линукс, а можно и в сраку мак
Можно в десктоп, можно в кровавый энтерпрайз, можно в иссушающий геймдев.
Сахарок, ммм.
Главное, что в любой области которую выберешь, при использовании шарпа все это делается легко и приятно, особенно после прихода Core.
Аноним 15/11/22 Втр 16:33:39 #999 №2514409 
>>2514378
Джава лучше. Больше вакансий, легче изучать. Стек не зависит от хотелок одной фирмы. Ничего не переделывается в каждой версии, а имеется обратная совместимость, т.е. код для джавы 1.0 можно выполнить на джава 18.
Аноним 15/11/22 Втр 16:36:27 #1000 №2514412 
>>2514409
код!!! шарпа тоже можно выполнить
речь идет про бинарную совместимость, но из за этого у жавы хуже рантайм - типов нет, структур нет - все в угоду старья (legacy)
Аноним 15/11/22 Втр 16:39:35 #1001 №2514413 
>>2514412
Структуры очень спорный момент. Не факт даже, что они ускорят выполнение, но вот проблем (особенно в многопоточных приложениях) добавят.
Аноним 15/11/22 Втр 17:12:09 #1002 №2514435 
>>2514413
Что значит не факт. Еще какой факт.
Даже в жаве примитивные типы оптимизированы как структуры ибо это имеет значимый эффект. А в шарпах есть ref структуры, что еще быстрее.

А насчет многопотока - сдуру можно и.... (цензура)

Зато у жавы есть котлин который неплохо смотрится на фоне жадного до выразительности шарпа (аж трисёт)
Аноним 15/11/22 Втр 18:05:28 #1003 №2514466 
>>2514401
Visual Studio 2022
Аноним 15/11/22 Втр 18:18:17 #1004 №2514473 
А чаво 41 тред удалили?
Аноним 15/11/22 Втр 18:19:32 #1005 №2514474 
джавист на мочухе.
Аноним 15/11/22 Втр 18:24:19 #1006 №2514476 
>>2514474
Да хуета какая-то. В 3д-разделе тоже удаляли целые треды, посвященные конкретному пакету, и тоже были теории на подобии твоей, мол админ не любит тот софт.
Но слишком много совпадений.

Что с двачем происходит? Бардак какой-то.
Аноним 15/11/22 Втр 18:28:48 #1007 №2514478 
Почему когда учишь сам сишарп, то всё интересно, куча энтузиазма, а когда доходишь до изучения ASP.NET, то начинается жуткая депрессия?
Аноним 15/11/22 Втр 18:30:13 #1008 №2514480 
>>2514478
хз. так то асп.нет неплохая штука в плане реализации
жаль что MVC если для стандартных сайтов со страничками
но обычно ж пишем вебапи, а там нормусик
Аноним 15/11/22 Втр 18:37:43 #1009 №2514484 
>>2514480
Я вообще не понимаю что и к чему там. Куча кода, куча каких-то файлов-папок. А вместо объяснения, говорят пиши контроллер в такой-то папке, иначе ничего работать не будет. Почему надо писать там? Зачем нужны другие папки? Что там наворочено под капотом?
Вообще, нельзя было сделать просто набор методов для работы с HTTP? А уже где и что размещать, программист решал бы сам.
Аноним 15/11/22 Втр 18:42:49 #1010 №2514487 
>>2514466
Показывай проект или скрины хотя бы тогда.
Аноним 15/11/22 Втр 18:43:30 #1011 №2514488 
>>2514484
Потому что конвенция.
Конвенция дает структурность и понимание, чтобы был порядок и все работало как положено, и чтобы левый программист не тыкался как слепой котенок не понимаю как у тебя все организовано

>нельзя было сделать просто набор методов для работы с HTTP
ну почему нельзя? льзя. вот сделали для любителей такого "как в тех микрофреймворках вот мы тоже так могем"
и для любителей вебформс тоже сделали подобие.
Но конкретно asp.net MVC он исповедует MVC как там дедушка Ruby On Rails завещал всем делать - потому эти все фреймворки похожи в разных языках (кроме питона в силу его особой модульности) и вот я после пхп в асп.нет сразу знаю где чего лежит.
(хотя конечно МVP, с которым я имел дело в пхп, удобнее)
Аноним 15/11/22 Втр 18:44:47 #1012 №2514490 
>>2514484
Читай "Asp.net в действии", есть на русском, там все исчерпывающе объясняют.
> Почему надо писать там?
Общепринятое соглашение. Впрочем никто не мешает задать собственные пути для контроллеров и прочего.
Аноним 15/11/22 Втр 18:46:02 #1013 №2514492 
>>2514484
>А вместо объяснения, говорят пиши контроллер в такой-то папке, иначе ничего работать не будет. Почему надо писать там? Зачем нужны другие папки? Что там наворочено под капотом?

Ну так прекращай смотреть говновидосики с говнокурсами и начни читать умные книжки и статьи. Там все это написано.
Аноним 15/11/22 Втр 18:47:44 #1014 №2514493 
>>2514490
>Asp.net в действии
Дак книга не успела выйти, а уже устарела. Там дотнет 3, а сейчас уже 7. Ни один пример даже не откомпилируется.
Аноним 15/11/22 Втр 18:50:10 #1015 №2514495 
>>2514493
На русском второе издание, там net 5.
Аноним 15/11/22 Втр 19:01:15 #1016 №2514504 
Ебанутые, вы нахуя тред удалили?
Аноним 15/11/22 Втр 19:02:33 #1017 №2514508 
>>2514504
Оп срал политикой в мвп треде
Аноним 15/11/22 Втр 19:04:34 #1018 №2514509 
>>2514508
У него автоматически удалили все посты и заодно его треды?
Аноним 15/11/22 Втр 19:08:57 #1019 №2514512 
>>2514509
Видимо моча психанула.
Аноним 15/11/22 Втр 19:09:07 #1020 №2514513 
>>2514495
Как раз с 5 на 6 самый сильный слом произошёл. Всё поменялось кардинально.
Аноним 15/11/22 Втр 19:10:25 #1021 №2514514 
>>2514513
да они упоролись
старое осталось работать, но новый шаблон изменился
Аноним 15/11/22 Втр 19:15:20 #1022 №2514517 
>>2514513
Что такого кардинального? Всего лишь убрали класс стартап, переместив все в билдер. Все методы остались прежними.
Аноним 15/11/22 Втр 19:27:23 #1023 №2514524 
>>2514517
Роуты тоже поменялись
Аноним 15/11/22 Втр 19:29:23 #1024 №2514525 
1.JPG
2.JPG
посоны, посоветуйте как лучше, вот у меня два варианта, сейчас использую первый, второй дикая дичь и я не уверен даже что это работать будет
но мне бы хотелось чтобы и ShapeMaker и ShapeTemplate не знали про конкретные Shape
Аноним 15/11/22 Втр 19:46:55 #1025 №2514533 
>>2514525
Ну первая этакое подобие абстрактной фабрики (паттерны это модно)
второе это просто фабрика (паттерны это модно)
а учитывая что мы не знаем что там происходит
если бы мы знали что это такое, мы не знаем что это такое
Аноним 15/11/22 Втр 21:01:37 #1026 №2514571 
Как мне выбрать несколько папок? FolderBrowserDialog позволяет выбрать только одну, OpenFileDialog только для файлов.
Аноним 15/11/22 Втр 21:36:43 #1027 №2514590 
>>2514571
https://stackoverflow.com/questions/12261598/browse-multiple-folders-using-folderbrowserdialog-in-windows-application
Аноним 16/11/22 Срд 09:18:18 #1028 №2514800 
По каким книгам лучше учить ASP.NET в 2023 году?
Аноним 16/11/22 Срд 09:38:23 #1029 №2514834 
>>2514800
Metanit
Аноним 16/11/22 Срд 10:00:27 #1030 №2514847 
1668582027592.jpg
>>2514800
Аноним 16/11/22 Срд 14:20:16 #1031 №2515069 
>>2514834
Там устаревшая инфа по 6 дотнету, а сейчас уже 7

>>2514847
Тут вообще 5

Когда ожидать книги по дотнет 7?
Аноним 16/11/22 Срд 14:24:24 #1032 №2515072 
А нужно учить всякие кафки, рэбитсыМК и кубернетисы всякие? Или достаточно ASP.NET + EF?
Аноним 16/11/22 Срд 14:46:32 #1033 №2515084 
>>2515072
Да.
Аноним 16/11/22 Срд 15:07:11 #1034 №2515094 
>>2515069
Вытекаешь
Аноним 16/11/22 Срд 15:10:48 #1035 №2515098 
>>2515094
Это микрософты вытекают. Сколько можно обновлять дотнет? Почему нельзя сбавить темпы и выкатывать новую версию раз в 3 года хотя бы. Вы сами-то успеваете отслеживать все эти изменения?
Аноним 16/11/22 Срд 15:48:25 #1036 №2515127 
>>2515072
RabbitMQ - обязательно
Кафка - встречается крайне редко. Если знаешь рэббит, то сможешь в любое время и ее изучить.
Кубер - не нужен, докер - нужен.
Аноним 16/11/22 Срд 15:57:42 #1037 №2515143 
>>2515098
Если бы так и было, у нас до сих пор был бы .net framework, никакой кроссплатформенности, никакой контейнеризации, никакого linq и т.д.
Маши крыльями или сдохнешь.
Аноним 16/11/22 Срд 16:03:03 #1038 №2515151 
>>2515143
Везёт же
Аноним 16/11/22 Срд 16:53:59 #1039 №2515202 
Мне прислали приглашение на собес, в компанию, где используется asp.net mvc с net framework 4.6. Между ним и asp.net core большая разница?
мимо джун без опыта
Аноним 16/11/22 Срд 17:09:39 #1040 №2515215 
>>2515202
Там наверно IIS сервер ещё. Завидую!
Аноним 16/11/22 Срд 17:12:57 #1041 №2515222 
>>2515202
https://ru.stackoverflow.com/questions/1325059/%D0%A0%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-asp-net-core-%D0%B8-asp-net-mvc-%D0%B8-asp-net-core-mvc-%D0%B8-asp-net
Аноним 16/11/22 Срд 18:41:43 #1042 №2515287 
Screenshot1.png
>>2514487
Кто-то может сказать почему не хочет запускаться? НА всякий случай переустановил и не помогло
Аноним 16/11/22 Срд 18:44:48 #1043 №2515290 
>>2515287
Удали всякие юнити, профилировщики и прочий мусор, что ты наустанавливал.
Аноним 16/11/22 Срд 18:53:23 #1044 №2515294 
>>2515287
- Выбран не тот проект для старта. Нам не видно же
- не тот фреймворк. Может там тот что нет в системе
- русификация студии самая вероятная причина
Аноним 16/11/22 Срд 19:20:20 #1045 №2515314 
>>2515294
У меня русифицированная студия, полет нормальный.
Видна субъективная неприязнь к русификации.
Аноним 16/11/22 Срд 19:21:23 #1046 №2515316 
>>2515294
>Выбран не тот проект для старта.
Стартанет выбранный. У него вообще нет доступа.
Аноним 16/11/22 Срд 19:33:39 #1047 №2515332 
>>2515287
Сделай полный скрин экрана, чтобы было видно код, обозреватель решения и панель инструментов.
Аноним 16/11/22 Срд 22:28:35 #1048 №2515510 
Тред запилите, шарпочане
Аноним 16/11/22 Срд 22:32:12 #1049 №2515514 
>>2515510
Запили.
Аноним 16/11/22 Срд 23:20:23 #1050 №2515549 
>>2515510
Админ, ты? Зачем удалил тред?
Аноним 17/11/22 Чтв 00:01:06 #1051 №2515576 
Можно как-то документировать кортежи?
Когда у меня функция возвращает кортеж, то у меня во всплывающей подсказке над именем функции идет подпись "Types:", но там пусто.
Аноним 17/11/22 Чтв 03:44:29 #1052 №2515632 
>>2515314
>У меня русифицированная студия, полет нормальный.
а у дофига новичков нет ибо
>Видна субъективная неприязнь к русификации.
нерусифицированная студия выдает ошибки на англ языке, которые можно загуглить в инете.
Та же херня с русифицированными исключениями.
Аноним 17/11/22 Чтв 08:28:12 #1053 №2515678 
TupleExample.gif
>>2515576
В Visual Studio по дефолту все показывается.
Аноним 17/11/22 Чтв 10:33:34 #1054 №2515733 
Ну и нахуя потерли тред?
Аноним 17/11/22 Чтв 13:09:12 #1055 №2515864 
Киньте картинок для переката
Аноним 17/11/22 Чтв 13:09:47 #1056 №2515866 
>>2515632
>нерусифицированная студия выдает ошибки на англ языке
У каждой ошибки есть код. Этот код еще и URL ссылка, которую можно тыкнуть и перейти сразу в MDSN.
Аноним 17/11/22 Чтв 13:21:04 #1057 №2515882 
Насколько часто уместна подписка на событие?
Допустим я хочу, чтобы событие MouseMove работало только при зажатой левой кнопке.

Могу ли я подписаться в событии MouseButtonDown и отписаться при MouseButtonUp. Хочу реализовать функцию Drag n Drop.
Аноним 17/11/22 Чтв 13:25:20 #1058 №2515889 
>>2515882
Конечно можешь, это так и делается как бы.
Аноним 17/11/22 Чтв 13:28:30 #1059 №2515895 
>>2515864
Возьми из шапки.
Аноним 17/11/22 Чтв 13:35:20 #1060 №2515907 
>>2515866
И узнать там что это за ошибка (хотя и так понятно из её текста что она значит)
Но это не дает ответа ПОЧЕМУ У МЕНЯ ЭТА ОШИБКА
Аноним 17/11/22 Чтв 14:09:11 #1061 №2515944 
В смысле не знаешь?
Вот я щас кликнул по ссылке ошибки
https://learn.microsoft.com/en-us/dotnet/visual-basic/language-reference/error-messages/name-name-is-not-declared

И это с русскоязычной студии
Аноним 17/11/22 Чтв 14:09:23 #1062 №2515945 
>>2515907
>>2515944
Аноним 17/11/22 Чтв 14:15:59 #1063 №2515948 
>>2515944
Частный случай
Если бы все было так просто то SO был бы чист от этих вопросов
И гугл выдача тоже
Аноним 17/11/22 Чтв 14:20:03 #1064 №2515952 
>>2515864
В общем сам нафотошопил, сильно не бейте
https://2ch.hk/pr/res/2515951.html
Аноним 17/11/22 Чтв 18:11:43 #1065 №2516136 
>>2508594
>там вакансий для джуна очень мало
Джуны никому не нужны вне зависимости от стека технологий. Ну только разве если 1С выучишь.
Ищи крупные компании, которые берут джунов и стажеров, и смотри, какие технологии там используются.
Аноним 17/11/22 Чтв 18:14:23 #1066 №2516141 
Screenshot2.png
>>2515332
Аноним 17/11/22 Чтв 18:31:27 #1067 №2516158 
>>2516141
Так у тебя проекта нет. Разумеется просто сам cs файл скомпилить нельзя.
Аноним 17/11/22 Чтв 18:38:36 #1068 №2516169 
>>2515948
>SO
Там задают все что угодно и даже спрашивают как какать.
Аноним 17/11/22 Чтв 18:39:55 #1069 №2516172 
>>2516141
А что ты хотел там компилировать? Где точка входа?
Аноним 17/11/22 Чтв 19:35:11 #1070 №2516217 
>>2516158
Ок, какие шаги мне нужно сделать и какой код написать, чтобы была точка входа ?( смотрел туториал , там тип создал такой же проект и сразу запустил … ) спасибо
Аноним 17/11/22 Чтв 19:52:54 #1071 №2516227 
>>2516217
Просто создай новый проект консольного типа и все. В него уже будет включен класс Program с методом Main, который ты сможешь запустить.
Аноним 19/11/22 Суб 19:50:38 #1072 №2517669 
А теперь вопрос:
Во всяких TreeView и ListView событие SelectedItemChanged срабатывает по MouseDown (а не по MousUp), что делает невозможным такие вещи, как Drag n Drop.

Я уже устал назвать WPF дебилизмом. Но как это дерьмо обходить? Есть возможность самому узнать на как какой итем указывает курсор?
Аноним 19/11/22 Суб 20:38:55 #1073 №2517716 
>>2517669
Какой же говнокод получился.

SelectedItemChanged биндится к свойству вьюмодели и просто там существует.

А потом событие MouseButtonUp заглядывает во вьюмодель к упомянутому свойству выше и "выделяет" его.
Аноним 19/11/22 Суб 20:39:35 #1074 №2517717 
>>2517716
>и "выделяет" его.
Выделяет итем, хранящийся в этмо свойстве*
Аноним 20/11/22 Вск 11:16:25 #1075 №2518074 
>>2517669
>Но как это дерьмо обходить?
Для начала перестать сидеть в заброшенном треде
Аноним 25/11/22 Птн 21:20:02 #1076 №2523295 
>>2515215
А я с ним работал
У нас еще девопса не было, поэтому любое обновление говносайта шло через ручную остановку IIS и копирования всех измененных файлов
Ну и создания папочки бекап_дата
comments powered by Disqus

Отзывы и предложения