Этого треда уже нет.
Это копия, сохраненная 29 ноября 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C# Thread.Version=40 /csharp/ 2484368 В конец треда | Веб
Тред лучшего языка на планете.

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)
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 не стоит.
Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
Структуры данных — связанные списки, деревья (бинарные, красно-чёрные), хеш-таблицы, графы.
Системы контроля версий — обычно гита достаточно.
3 2484372
>>2484152 →

> ui на авалонии(c#) какие есть тулкиты под неe


Она сама тулкит. Тебе нужен тулкит под тулкит? Нигер штоле?
>>2484363 →

> qt платный


Da.

> Gtk всратый


Ты всратый.
5 2484381
>>484377
Просмотрел ссылки. Там темы для авалонии. И что? Что ты этим хотел сказать? Что анон перепутал тулкит и тему в своём посте? Или что?
6 2484400
>>484377
Хуясе, красивые вьюшки.
мимо
7 2484512
>>484377
Как же все таки уебищен современный UI дизайн. Безотносительно к авалонии, он везде говно.
8 2484534
А че такое, на работе хотел Visual Studio скачать - не выходит. Дома тоже на двух компах, на одной 10, на другой 7 винда. Майкоскот отрубил?
.png56 Кб, 548x382
9 2484537
>>484512
Самый красивый UI - дефолтный с дефолтными стилями. Он всем привычен, пользователи никогда не скажут, что им не нравится цвет кнопки, им тупо похуй.
Вообще, странная тенденция со стилями этими. Лет 10 назад все плевались от кроссплатформенных тулкитов с собственными стилями, не выглядящими нативно, а теперь все ругают нативные стили и пытаются высрать очередной уникальный дизайн, где невозможно отличить кнопку от надписи.
10 2484539
А, пидорософт отрубил Раху окончательно. Через ВПН качает.
11 2484540
>>484534
Что значит не выходит? Для теста зашёл на https://visualstudio.microsoft.com/ru/downloads/ , всё качается. Проверил в Firefox и IE.
12 2484544
>>484537
Согласен.
13 2484551
>>484540
А ты поставить попробуй. У меня не скачиваются обновы.
.png33 Кб, 1100x440
14 2484561
>>484551
Обнова скачалась и установилась. Возможно, через моего провайдера пока ещё работает.
15 2484567
>>484537
Именно поэтому Eto.Forms лучше авалонии. Eto.Forms генерирует нативные окна под каждую платформу WPF, Winforms, GTK, MAC. В отличие от авалонии, которая создаёт графический контекст и рисует в нём свой вид согласно установленной внутри себя теме.
Кому нужны мокрописечные интерфейсы - тем в авалонию.
Кому нужен натив - добро пожаловать в Eto.Forms.
16 2484569
>>484561
У меня только через впн вышло. Пробовал на разных компах с разными провайдерами. Хуйня, кстати, появилась буквально день назад.
17 2484585
>>484569
Точно так же через некоторое время она пропадет и все станет нормально.
Это кстати не только особенность майковского сайта, но и многих других подобных крупных порталов. И нынешняя политическая ситуация тут не при чем. Скорее всего это косяки защиты от дудоса, которые на время блокируют целые регионы.
18 2484695
Как в вижле включить автосохранение? 2022 год, а они предлагают самому жать CTRL+S.
1665300943395.png51 Кб, 847x572
19 2484731
20 2484764
>>484731
Вместо ctrl-s нажимать alt-tab? 🤣
21 2484768
В общем. Смотрите. Есть приложение, разработанное для работы в контейнерах и облаках(раньше разворачивали на AWS, потом пришлось перекатиться на Яндекс).
Бекенд - это набор веб-приложений на .NET6. Фронт был на ангуляр+nginx.
Так вот. Внезапно возникла охуитительная идея - запихнуть все это дело в десктопное приложение. Не спрашивайте. Просто требования бизнеса такие возникли.
Хочется все это дело малой кровью провернуть.
Насколько норм решение - просто запихнуть фронтенд в какой-нибудь компонент QT для рендеринга веб-страничек и запускать локально тихонько приложухи. Ну или не Qt - копмонент, а электрон, допустим.
Кто-нибудь такой фигней маялся?
Или хуйня все это и придется по хардкору - разбирать микросервисы и делать отдельное полноценное приложение для десктопа?
23 2485027
>>484768
Если у тебя Qt в роли браузера, Qt тебе нахуй не всрался. Бери электрон, тупо копируй файлы веб-приложения и пиши скрипт для запуска. Но надо ещё придумать, как будешь обновлять.
24 2485049
Думаю написать движок для ГИСов на шарпе с использованием Вулкана (через vke обёртку). Доступные решения юзают старый GDI/GDI+, а я сделаю высокопроизводительный рендеринг для 1кк+ элементов. Аналоговнеть даже на С++ вроде.
25 2485061
>>485049
Сделай! Как сделаешь - покажи.
26 2485152
>>485049
Лучше сразу на крестах пиши.
27 2485197
>>485061
Если сделаю - то вы все и так узнаете, вот увидите. Конечно, скорее всего через три дня я заброшу эту идею.

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

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

На данный момент на Шарпе нету карты, способной в сложный рендеринг, которая не стоила бы больших денег. Я знаю только про движок от ESRI. Кто напишет про GMap, SharpMap, MapWinGIS, dotSpatial, EasyGIS - сразу нахуй, коль не соображаете ничяго.
28 2485624
Вкотился в фулл стэк, мне пизда?
29 2485631
>>485624
да. и ты заслужил
30 2485648
31 2485651
>>485049
Сколько ты это пилить будешь? 10 лет? Сможешь запилить хотя бы что-то отдаленно напоминающее josm? Он кстати вроде на обычной джаве со свингом написан, без погружения в опенгл, вулкан или директикс. Но и 1кк+ элементов он не вытягивает, да и зачем?

>>485197

>Даже если там будут просадки со стороны .NET, Вулкан умножит на ноль любые потери в самом рендеринге


Вулкан не панацея от всех проблем.
32 2485679
Как вы изучали ASP.NET?
sage 33 2485780
>>485679
Устроился на работу.
34 2485782
>>485679
METANIT
sage 35 2485783
>>485679
Читай шапку, есть канал андрей широкорядов.
36 2485828
Метанит - прекрасная платформа для обучения. Читаешь руководства по шарпу и аспнету и уже можешь искать работу.
37 2485832
>>485780
А если не берут без знания ASP.NET?

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

>>485783
Он так асмрно говорит, что не думается о программировании
sage 38 2485834
>>485832

>А если не берут без знания ASP.NET?


Тада учиться по видосикам андрея широкорядова.

>Он так асмрно говорит, что не думается о программировании


Двачую, мне кажется он на каких-нибудь нереальных транквилизаторах сидит.
39 2485843
>>485832

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


В любом случае надо. Один хуй на работе будет Visual Studio, разработка будет на винде, сервера на винде, и это при мнимой кроссплатформенности дотнета.
40 2485890
>>485843
Если речь про веб на ASP .Net Core то не факт.

> на работе будет Visual Studio


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

> сервера на винде


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

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


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

В общем, в компаниях, у которых все на .net Core нет такой лютой привязки к винде. Во всех местах, где работал и про которые слышал, вообще предпочитают деплоить кормовые приложение в кубер под линухом. Вот если в компании есть что-то легасевое на .net framework, то да, может быть требование винды. Но я бы сейчас такие компании старался стороной обходить.
41 2485975
>>485832

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


Пиздец, это же такая проблема в 2К22-м году-то.
42 2485980
Смотрите какая ситуевина.
Вводные данные: Npgsql+EFCore
Собственно. Программулина - шлюз. TCP-соединение открывается, клиент регистрируется по моему протоколу, я выделяю ему порт в системе, через который другие клиенты могут как-бы напрямую с ним общаться, сохраняю данные в базу. Механизм вроде как простой и все работает.
Но есть ньюанс. После примерно 30к таких висящих клиентов - начинается треш. Во-первых, PgSql - почему-то не закрывает соединения с базой. Хотя я их честно диспозю, и вообще они мне из DI'я приходят. Из-за этого, после определенного порога - новый клиент зарегистрироваться не может, получаю WSAENOBUFS (10055)
Есть и другие моменты, но вот этот пока что самый бесячий и я буквально не представляю, что мне тут делать, потому что блин, я все как в документации и рекомендациях написано делал.
На SO находил мнение, что для PGSql - нужно один коннект на все приложение делать, но из коробки так нельзя, потому нужно на PGSql+ типа переходить, там какая-то хуевина якобы есть, которая все твои контексты оборачивает во что-то и фактически у тебя один коннект, но в приложении - куча контекстов. Плотить - пока что, не хочется.
Может быть я что-то не так делаю? Кто-нибудь вообще, кроме меня сталкивался с вот такой вот фигней, что просто не удается открыть сокет, хотя чисто номинально - их свободных еще должно быть куча, всего-то половина от 65535 использована.
43 2485997
>>485890

>Rider


Проблемы бы не было, если бы была коммьюнити версия хотя бы. Всякие решарперы не особо нужны, а в обучении может и вредны.
44 2486004
>>485980

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


Вряд ли. Сейчас подавляющее большинство через REST работает. А там где есть перспектива пощупать сокеты, все сразу "нахуй-нахуй" и либо съебывают, либо REST продавливают.
45 2486159
>>486004
это вообще из разных миров как бы
А по теме...это ж pg.
притащу цитату с перехода убера

"Помимо вышеперечисленных проблем, похоже, в Postgres не лучшим образом реализовано управление большим количеством соединений. Даже в тех случаях, когда памяти было более чем достаточно, мы испытывали серьезные проблемы с масштабированием Postgres после достижения порога в несколько сотен соединений. В документации (хотя мы не смогли найти этому точного объяснения) настоятельно рекомендуется использовать внешний пул (connection pooler) для обслуживания большого количества соединений. Для этих целей мы достаточно успешно применяли pgbouncer. Однако периодически проявлялась ошибка, которая приводила к открытию большего количества активных соединений (обычно в статусе “idle in transaction”), чем было нужно. В итоге это приводило к увеличению времени простоя."
46 2486169
>>485997
На работе тебе оплатят лицуху, а дома можешь обучаться на торрент эдишон. И хуй тебе кто что сделоет.
47 2486171
>>486169
Единственная трабла может быть если ты самозанятый фрилансер, тогда существует некоторая вероятность, что к тебе доебутся за лицензию. Но после day Z эта вероятность стала ещё более призрачной. Воруй! Качай! Еби гусей! Мы русские! Какой восторг!
48 2486190
>>486169
Дак райдер ломануть нормально не могут. Там какой-то замороченный гайд на старую версию с запретом обновлений и блокировкой интернет-соединения.
1665488107178.jpeg509 Кб, 1490x1452
49 2486191
Хочу чтобы у меня в wpf через секунду после бездействия скрывался интерфейс. Сделал через behavior, пик. Но проблема в том, что интерфейс скрывается через 2 секунды. Почему?
Фото монитора, так как с пк двач не грузит.
50 2486201
>>486190
глупости какие то. уже больше года есть норм средство для всех idea-based редакторов
51 2486203
>>486191
жуть, а не код. Особенно реализация "таймера" )))
52 2486214
>>486201
Пишут, что не у всех работает и в 2022 версии жидбрейнсы пофиксили лазейку
1665491703784.jpeg358 Кб, 1591x975
53 2486217
>>486203
Я вроде не спрашивал мнения о коде, я спрашивал, почему он работает неверно. Сам код я уже переписал (пик), но вопрос меня всё еще интересует.
image.png54 Кб, 921x945
54 2486273
Что блять? Это нахуя так сделано? Если в списке чисел не найдено нужное значение то вернется 0 нахуй?

Мне что, ручками цикл писать?
55 2486281
>>486273
А что по твоему он должен был бы вернуть?
56 2486288
>>486273

>Мне что, ручками цикл писать?


100% нужно
в принципе можно использовать Array.FindIndex, но не нужно.

Так то ты прав. должно быть bool Find(...out value)
57 2486304
>>486273
Как на счёт Linq?
.Any(a => a == x)
И получишь себе bool на выходе.
58 2486311
>>486217

>не спрашивал мнения о коде


А это никого не волнует. Опубликовал код - радуйся что обосрали. Вот ты даже код поправил.

А по теме - исчезает через секунду. Не верь глазам, добавь Stopwatch
59 2486331
>>486214
Я только что проверял …нет, не скажу какой трекер, и там висит 2022 с патченым экзешником на раздаче и никто не жалуется.
Image 1.png56 Кб, 962x988
60 2486333
>>486217
хз же что это за InterfaceVisibility и что там в обработчике MouseLeave ибо не представлено
но в остальном пруфпик
61 2486635
>>485651

>Сколько ты это пилить будешь? 10 лет? Сможешь запилить хотя бы что-то отдаленно напоминающее josm?


Не совсем. josm - это не движок, а полноценная ГИС. Я же собираюсь сделать только прослойку между graphics API и ГИС приложениями. Ну это всё фантазии пока конечно.

Но на Вулкане через .NET обёртку я уже смог прорендерить 1кк+ объектов через несколько пайпов с ФПС 60. Правда там shaders без обвеса, а они перфоманс просадить могут. Но если удасться изменить модели на более качественные и удержать ФПС - то я точно продолжу разработку, ибо самый топовый движок до сих пор юзаею OpenGL, а тут у меня готовый .NET компонент будет для десктопа.
62 2486921
Помогите с wpf, хочу расширить класс TextBlock, добавляю свойство зависимости, но программа на него никак не реагирует! При его изменении просто ничего не происходит, сеттер никогда не вызывается.
63 2486932
>>486921
В итоге разобрался сам, для изменения других свойств надо было создать отдельную функцию и передать её в PropertyMetadata
64 2486947
>>486635

>Я же собираюсь сделать только прослойку между graphics API и ГИС приложениями


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

А почему бы не посмотреть в сторону js и вебассембли? Например те же народные карты яндекса вполне шустро работают. Ну или викимапия, там наверное совсем что-то древнее под капотом у них крутится, но работает быстро.
65 2487065
>>486004
А я так и не успел эти сигналРы пощупать на боевом проекте
ТОЛЬКО ВЫИГРАЛ?
66 2487095
>>486947

>народные карты яндекса вполне шустро работают


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

>обертки уже есть


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

>>486947

>викимапия


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

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

Вам не кажется, что в последнее время маятник качнулся обратно, и паттерны ради паттернов и интерфейсы на ровном месте стали использовать реже? Например, ебучие IRepository или UnitOfWork, которые тупо обёртка над EF. Ладно бы хоть с бизнес-логикой, так ведь не всегда
Если посмотреть EShopOnContainers, который разбирают на msdn, то выглядит очень даже ничего
68 2487393
>>487154

>Например, ебучие IRepository или UnitOfWork, которые тупо обёртка над EF.


Как быть суть как раз в создание отдельного слоя данных, не привязанного к ORM. То есть ты пишешь IRepository<Entity>.Save в контроллере, и при смене ORM или вообще на переходе на SQL raw тебе не надо лезть ВО все контроллеры и вручную переписывать методы.

А Unity of Work - это просто удобный способ контроля изменений, когда ты сохраняешь всё по факту.
69 2487420
>>485828
А как учится по Метаниту? Читать по-порядку? А практика? Там нет ни одной задачи после теории.
70 2487574
>>487420
каждому свое
я вот читаю по диагонали чтобы понять основные принципы
а потом активно читаю чужой код и тем самым эти принципы вижу на деле
71 2487847
Вот говорят, что сишарп кроссплатформенный, а на деле надо собирать проект на каждой платформе. На винде - это ехешник, а на линупсе - исполняемый стартер и dll-сборка с основным кодом. Просто скопировать файл и попытаться запустить не получится.
72 2487865
>>487847
Получится. Внимательнее перечитай документацию. dll-сборка и есть кроссплатформенная программа. Ты можешь запустить её командой наподобие dotnet <сборка>, которая на всех платформах есть. Если ты не собирал, разумеется под конкретную платформу, то сборка будет собрана в общем для всех платформ виде.
изображение.png15 Кб, 506x299
73 2487866
Почему студия не скачивается?
74 2487871
>>487866
Скоро и дотнет отключат
1665678068611.png220 Кб, 680x680
75 2487887
>>487866

> Почему студия не скачивается?


Потому что ты - коллективно виноватый террорист.
Извините, не удержался. Не баньте, плиз.
76 2488113
>>487866
впн требуют наши сердца
sage 77 2488130
>>487866
Потому что петушарп. А ты что думал? Пока ты нравишься майкрософту, петушарп для тебя опенсорс. А как только не понравишься - сразу делается проприетарным и ты не сможешь им пользоваться. Так и произошло в твоем случае - майкрософту не понравилась вся Россия. Кстати, петушарп ещё и кроссплатформенный - пока ты пользуешься шиндовсом. Как только ты переходишь на линукс или боже упаси пук оес, сразу он становишься намертво залоченным на платформу. Вот так гении майнрософты, что такую крутую систему придумали! Слава шарпу!
78 2488136
>>488130

>Потому что петушарп.


Явадебил, спок. Язык, компилятор и дотнет никак не связаны с вижаком, можно хоть в блокноте писать. Если действительно блокнут вижак полностью для русни - это печально, но не критично, есть VS Code
79 2488137
>>485049
Анон у меня такая же идея есть, го вместе пилить? Только без детского 2d, сразу в 3d на эллипсоиде.
80 2488138
>>488136

>вижак полностью для русни


не локнут. как отличить то
81 2488140
>>488130
Орнул. Джаву оракл еще в марте блокнул для рабсиян, жри стороннее говно непригодное к проду от openjdk или других хозяев (amazon, red hat, microsoft jdk внезапно)
82 2488153
>>488136
Ещё можно райдер ломануть. Правда я не знаю как.
83 2488175
>>488153
да вы замучили
вот поставлю райдер и проверю что там изменилось с прошлого раза
последний раз пробовал 2022 версию и все было ок
16578132809960.jpg266 Кб, 720x1096
84 2488191
>>487866
Реально забанили или он криворукий?
И что с нугетом?
85 2488194
>>488191
обе догадки верны. он же шарпист )
с нугетом давно не пашет подсказки
а поиск вроде работает
86 2488245
>>487866
Наверное потому что ты криворукий долбоеб.
87 2488246
>>488191
У меня работает, но уже не в первый раз вижу посты, что у кого-то перестало качаться.
88 2488307
Ребят, где можно generic.xaml файлы с дефолтными шаблонами элементов от старых сдк скачать?
89 2488314
Когда переведут новую книгу Фримена на русский? Текущая по старой версии ASP.NET 2.0 и это даже не LTS, в итоге ни один пример уже не компилируется.
https://youtu.be/BG4nnMR7uTs
90 2488320
>>488191
Можно ли пользоваться нугетом через вс код?
91 2488360
>>488314
Просто в яндексе открой и в контекстном меню вруби перевод. Это не реклама, это суровая реальность на личном опыте. Яндекс теперь не вредоносный рекламный браузер, ставящийся вместе с левыми прогами, теперь это полноценная замена гуглу с хромом.
92 2488362
>>488320
Анонимус разрешает.
93 2488374
>>488314
А в чем проблема взять эти примеры и доработать так чтобы они запускались?
94 2488388
>>488374
Проблема в непонимании основ. Новичок читает и не знает почему это пишется именно так, а не иначе. Соответственно, у него нет знаний, как доработать, если оно не работает.
95 2488392
Пацаны, помогите, кто-нибудь знает как в linq2db сделать так чтобы при сравнении е было равно ё и это всё нормально парсилось в запрос?
96 2488398
>>488388

>Соответственно, у него нет знаний, как доработать, если оно не работает.


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

А если без сарказма.
Самые основы учатся по другим книжкам.
Основы ASP-а?
Ну запустил ты пример из книги - не запускается. Прочитал сообщение об ошибке. Не понял - загуглил, почитал сопутствующие материалы. Не получилось. Открыл английский вариант книги и посмотрел тот же пример - сравнили на разницу. Что непонятно - перевел (со словарем хотя бы).
За пару часов такой возни опыта и знаний наберешь больше, чем за несколько дней копирования работающих примеров из книжки.
97 2488427
>>488392
Сделай экстеншен который будет заменять все Ё на Е, в строках и сравнивай сколько хочешь (по аналогии с ToUpper или ToLower).
К сожалению в CultureInfo "ru-RU" нет эквивалента для этих букв.
image.png23 Кб, 574x113
98 2488434
>>488427
Ну тут проблема в том что я могу преобразовывать только искомую фразу иначе не спарсится, а в бд эти данные могут быть в какому угодно виде там могут быть как е так и ё и всё в кучу, и вот что делать в такой ситуации непонятно, я решил пикрил попробовать
99 2488439
>>488434
Можешь попробовать в самой БД сконфигурировать, чтобы в запросах эти буквы считались эквивалентными.
Вот например для постгреса из доков:
https://www.postgresql.org/docs/current/unaccent.html
100 2488441
>>488439
Я думаю меня нахуй пошлют с таким запросом слишком всеобъемлющее изменение будет по сути, но за инфу что так можно спасибо
101 2488446
>>488398
Хоть сарказм, хоть не сарказм, а многими уже подтверждаются печальные наблюдения о том, что чем больше доступ к знаниям, тем больше людям на знания похуй. Кого ты собрался заставлять читать книжки? Клиповых зумеров?
102 2488448
>>488441

>но за инфу что так можно спасибо


Есть еще такие приколы, что в БД (например MySQL) такое может быть по умолчанию включено.
103 2488458
>>488446
Сейчас ещё ковид сильно ударил по мозгам и учиться в разы тяжелее. Зумерам как раз ещё не так сложно, а вот кому за 30, уже не так легко.
104 2488466
>>488458
Эх, да. Бывает сяду с книжкой и уже на второй странице засыпаю. А с аудиокнижкой - на первой, под бубнёж.
105 2488534
>>488458
Так не будь за 30. Будет легко
Вечно проблемы находите
106 2488617
>>488458

>за 30, уже не так легко.


Забавно такие рассуждения слушать когда тебе уже за 40 и никаких проблем с освоением этой мути не ощущаешь.
Дело не в возрасте, а образе жизни. И да ковидом я тоже болел, чуть легкие не выплюнул.
107 2488627
>>488617
Да у тебя ковид ударил по легким, а меня по мозгам
108 2488644
А я просто дебил, без всякого ковида.
109 2488854
>>488245
Допустим, но какое отношение это имеет к студии, которая без костылей должна устанавливаться через официальный сайт, через официальный инсталлятор? Я знаю, что нужен впн, но какое это отношение имеет к моей криворукости?
110 2488867
прямо сейчас VS 2022 качается без VPN
111 2488914
Зачем вы срете в треде каждого ЯПа?
112 2488919
>>488914
кто мы, дебич?
113 2488928
>>488854

>но какое это отношение имеет к моей криворукости?


Такое, что это давно известная проблема решаемая за пару минут. И она никак не связана с блокировками ни с той ни с этой стороны.
Просто каждый такой долбоеб вместо того, чтобы просто погуглить и решить ее самостоятельно, тут же бежит во все профильные темы и начинает срать в духе "У-у-у, майкрософт заблокировала Россию, всему пизда".
114 2488959
В uwp/winui3 завезли врап панель с виртуализацией? А то для впф нужно было качать мокропиську с гитхаба.
115 2488970
>>488959
Там вообще врап панели из коробки нету
116 2488992
>>488928

>Такое, что это давно известная проблема решаемая за пару минут.


А ну расскажи решение
117 2488994
Стоит ли учиться писать код в VS Code? Или всё равно потом заставят писать в вижле/райдере?
118 2489001
>>488994

В смысле учится писать? Установил, поставил нужные дополнения и пишешь. Нихуя учится не надо, если обладаешь знаниями выше дауна копирайтера
119 2489003
>>489001
Как работать с гiтом?
120 2489009
>>489003

В смысле как ? Вася... Просто ставишь нужное расширение и всё. В расширение описаны минимальные команды как да и что. Любой пенёк разберётся
121 2489016
>>489003
Учишь десяток команд гита и работаешь.
122 2489022
>>489016
да. попутно правда раз МНОГО угробишь все, но то такое.
123 2489028
>>489022
Насколько руки должны быть из жопы, чтобы с примитивным гитом всё угробить? В начале, правда, не стоит баловаться с ребейзами, но всё необходимое учится за вечер.
124 2489059
>>489028
спроси это у тех, кто пишет тысячи статей "как в гит сделать это и не сломать".
125 2489062
>>489059
Да, тысячи статей с простыми и понятными рекомендациями, всё давно разжёвано и быстро изучается.
126 2489066
>>489062
Ага. и финальная рекомендация - если что, то удалите репу и склонируйте заново.
127 2489075
>>489066
Такая рекомендация даётся только в мемасах уровня пикабу. Даже если настал совсем пиздец, на stackoverflow легко найти, как в пару команд всё починить.
Capture.JPG5 Кб, 591x74
128 2489081
шарпач спасай это что-то из новых версий языка? что он хочет этим сказать? { get { return false; } }?
129 2489085
Привет, аноны, я школьник 11 класс увлекался фронтэндом, думал поступлю в универ, найду работу, но случился какой то пиздец и на вакансию стало откликаться по пол тыщи человек. Хочу теперь попробовать c#, подскажите много ли сейчас работы и как сложно на нее попасть, заранее спасибо.
130 2489086
131 2489100
>>489086
спасибо
132 2489123
почему ньюфаги такие тупые? хоспади, дай мне сил не начать охуяривать тупость-хуюпость ньюфагов-хуягов!
133 2489126
>>489123
Ты сам когда-то был тупым нюфагом. Уже позабыл?
2022-10-1423-53-32.png59 Кб, 957x619
134 2489140
У меня есть базовый стиль WPF. Скрин и код прилагаются:
https://pastebin.com/0TTmUVP8

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

Я пытался по TargetName перезаписать, но мне дает отказ.
Ошибка: свойство TargetName не может быть задано для типа Style Setter.
135 2489142
>>489085
Нигде сейчас не легко. А где легко — на всех не хватит.
136 2489150
>>489140
Сделай кустомный контрол на основе шаблона, который наследуется от контент контрола, добавь в этот контрол 3 свойства BoundingPath, FillShapePath и StrokeShapePath, потом в шаблоне <Path x:Name="bounding" Data="{TemplateBinding BoundingPath}". Потом сможешь менять <Setter Property="BoundingPath" Value="M0 20,0 20,20 0,20" />
137 2489151
>>489150
потом в шаблоне Path x:Name="bounding" Data="{TemplateBinding BoundingPath}"
Через стиль можно будет менять Property="BoundingPath" Value="M0 20,0 20,20 0,20"
138 2489152
>>489150
>>489151
А, я понял. Но кастомный контрол делается только через код шарпа?
139 2489153
Нахуй эта ебля с WTF, если винформы простые и понятные.
140 2489154
>>489152
Ну в коде просто три депенденси проперти добавишь и всё, всё остальное уже в темплейте
Стикер63 Кб, 200x200
141 2489155
>>489153
Возможностей нуль. Это я как десигнер говорю.
Сначала тоже плевался, а потом как понял.

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

У меня щас весь интерфейс векторный, и минимум растра. Можно применять матрицу трансформаций и делать масштабируемую и адаптивную годноту. Единственная беда — это попиксельная работа с растром, т.к. либа есть только на винформсах.
142 2489158
>>489154
Ну да, я так и представил. Даже если бы и была возможность, то не хотел бы о ней знать т.к. там 100% была бы простыня из тэгов.

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


вместо
<Setter.Value>
<DataTemplate>
<Viewbox >
<Grid>
...
</Grid>
</Viewbox>
</DataTemplate>
</Setter.Value>
143 2489179
>>489150
>>489151
Неееет, зачем я заговорил про простыню кода?
Короче, сделал я кастомный класс со свойствами, начал в стиле менять свойства. Приехали:

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".
144 2489196
Почему перестали переводить книги по сишарпу?
145 2489213
>>489196
Потому что сотрудничать с издательствами страны-террориста очень чревато последствиями
146 2489222
>>489142
ну а куда хоть устроиться можно будет, просто такое ощущение что в фронтэнд и qa вообще не реально на джуна устроиться
147 2489231
>>489213
Но ведь переводы делало издательство Диалектика, Куiв
148 2489232
>>489222

>ну а куда хоть устроиться можно будет


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

Ты еще первый курс не прошел, ахахаха!
Программисты не нужны.webm4,1 Мб, webm,
1280x720, 0:16
149 2489233
150 2489234
>>489231
Нахер ты кормишь политического шизоида? Они и так срут во всех тредах.

На мой взгляд причины три:
- появились интернеты
- появились переводчики
- появилась мнение, что погромист обязан знать инглиш
Если раньше узкоспециализированная литература была мало популярна, то сейчас наверно вообще не рентабельна.
151 2489236
>>489222
На джуна +- везде не просто попасть, либо оверхайп 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++, на память все алгоритмы, паттерны, железо, память.
Тут либо сам потом дойдешь, либо и вовсе не нужно будет.
152 2489237
>>489233
Почему тогда у него одних джавистов работает несколько тысяч? Найс из контекста вырезал
153 2489238
>>489236

>Роман Сакутин


Фу, это вообще противный чел. Весь в наколках как тюремщик и ещё выделывается на пустом месте, что он дофига великий программист и создатель курсов, а все остальные тупые.
154 2489239
>>489234
Я за два дня только 8 страниц смог прочитать на твоём этом инглише. И то это введение. А в книге как бы 1300 страниц.
155 2489240
>>489126

> Ты сам когда-то был тупым нюфагом. Уже позабыл?


Когда я был ньюфагом меня обзывали тупым тогдашние олдфаги, которые когда-то были ньюфагами и их обзывали тупыми праолдфаги, которые...
156 2489242
>>489237
Скоро начнут сокращать. Новых точно уже не нужно.
157 2489278
>>489236
Спасибо анон, я и сам смотреть начал в c#, но как то посмотрел что на нем пишут и вообще запутался там и игры и бек и еще лабудень какая то. Спасибо что каналы хорошие подсказал, а то обычно все что ютуб или гугл выдает это инфоцыган, которые учат хело ворлд печатать. Надесю справлюсь с обучением и смогу куда нибдуь на работу залететь.
159 2489292
>>489281
Да, спасибо. Сегодня до шести утра сидел и практически методом тыка добрался. Щас ебался с переопределением дефолтных свойств.

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

И у меня нормально отрабатывает свойство "MyBrush". Но в случае с Path (Geometry, не суть), оно не хочет срабатывать.
Мне приходится юзать PropertyMetadata с ссылкой на метод, который перезаписывает свойство (пикрил 2)
https://pastebin.com/NU1MnKE1
160 2489298
Есть файловый проводник Files, весьма известный, написан на C# + WinUI 3, так вот, он в сравнении со стандартным довольно тормозной. Анимации, загрузка миниатюр и тд, всё слегка подлагивает. Это вина говнокода, или в принципе шарп не может обеспечить должную скорость?
image.png252 Кб, 833x268
sage 161 2489303
>>489298

>Это вина говнокода


Да

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


Может, C# является тир-2 языком по скорости после C++ не знаю на счет Rust. C# в последние версии нереально бустят по скорости. Вот пример на скрине новый linq, как видишь скорость в сотни раз быстрее, а аллокаций памяти вообще нет, всё дело в программисте, а не в языке. Даже пайтон можно разогнать, где-то видос видел, добавляли jit
162 2489305
>>489292
Кажется понял в чем причина, но не понял как это работает.

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

Как это работает — хз.
163 2489307
>>489303

>где-то видос видел


Я бы не стал доверять современным замерщикам скорости. Был же недавно скандал, когда ради гонки показателей получилось так, что сервер выдавал ответов больше, чем приходило запросов.
164 2489308
Кто нибудь из треда релоцировался после февраля с одними шарпами?
sage 165 2489312
>>489308

>с одними шарпами


Такие не нужны. У тебя 2 стула будучи на .NET:
1. .NET + html + css + js/ts
2. .NET + C/C++
166 2489313
>>489312
А есть вариант: ASP.NET + Blazor?
sage 167 2489314
>>489313
Есть само собой. Но ты обязан быть фуллстеком чтобы релоцироваться, даже если будешь писать чисто бэкенд
168 2489316
>>489312
Ожидаемо. Единственный знакомый работяга улетел в июне, но судя по линкеду ему пришлось свитчнуться на другой стек
169 2489327
>>489313

>Blazor


кал
170 2489333
>>489303

> пик


Сравнивать скорость на сотне элементов это смешно просто. Хотя бы миллион надо.
171 2489369
>>489333
А какая разница
Без материализующих шагов потребление памяти (а именно оверхед) хоть на 1 миллионе, хоть на бесконечности - одинаковое
172 2489503
>>489307

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


что за скандал
Screenshot4.png39 Кб, 591x357
173 2489545
>>489303
Эталоном считается benchmarks game. Просто потому что он самый известный бенчмарк. компиляторов
174 2489600
>>489281
А ты случайно не знаешь как снять регистрацию с депендеси проперти? Ну вот допустим у класса есть по-умолчанию свойство Background, а в моем элементе это сбивает с толку, мне нужно свойство Fill.
pidor.jpg204 Кб, 2384x768
176 2489741
>>484368 (OP)
Что за ошибка?
177 2489742
>>489741
Не записался в свое время на курсы английского языка
А теперь всё - только на завод работать
178 2489744
>>489742
У нас нет заводов с 1992 года
179 2489754
Все таки в шарпе хороший рантайм, но выразительность так себе.
Когда портируешь с питона или котлина прямо таки чувствуешь что тебя ограничивают.

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

Не пишите на выразительных языках, а то потом на шарпе будете страдать.
180 2489760
>>489754
Мне бы твои проблемы
джавист на 11 жабе мечтающий свитчнуться на шарп
181 2489782
>>489760
так они у тебя и есть - мои проблемы.
ты страдаешь от недостатка выразительности языка и вынужден городить многословные костыли зная о том, что бывает проще.
182 2489821
>>489545
Блть, паскаль, ты чего? Ты же был быстрым, паскаль?
183 2489831
>>489741
бамп
Безымянный.png24 Кб, 720x503
184 2489834
>>489831
Чо бамп? Ты имя свойства неправильно написал.
Пользуйся подсказками студии.
185 2489840
>>489834
Охренеть, добра и отсрочки
186 2489844
>>489840
охренеть что когда я тебе намекнул на англ язику
ты до сих пор сидел и не понимал что сделать
187 2489850
>>489844
Если писать как анон, то получится латынь
statci vodi Mani (strign[] arsg)
188 2489864
Привет аноны, хочу начать учить шарп, посоветуйте хорошие курсы или книги.
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, который тот же контракт, только в профиль и "ну это мы для себя такие, а вам нирикаминдуем, вот".

>>489864
не нужно оно тебе. береги нервы
в
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, который тот же контракт, только в профиль и "ну это мы для себя такие, а вам нирикаминдуем, вот".

>>489864
не нужно оно тебе. береги нервы
в
190 2489872
>>489868
почему ненужно? Все равно нужно же что то учить в универе.
191 2489873
>>489872
тогда почему именно шарп? Будешь работать шарпистом?
192 2489874
>>489864
The c# player's guide, который с 6 дотнетом
Вообще надо вернуть книги в шапку, в старых тредах были
193 2489879
>>489873
да я свои школьные гощды на js быдлокодил, теперь хочется что то серьезное посмотреть, может потом и буду каким нибудь фулстеком работать, не знаю пока
194 2489880
>>489864
Троеллсен, как раз недавно на русик перевели новую книгу для 5 нета.
195 2489885
>>489868
Додич, иди нахуй.
Вся хуйня, что ты описал (пожалуй кроме ненужного AsyncReaderWriterLock) тебе жопу печет только потому, что ты додич.
Не думал, что я буду это говорить в контексте C# и .Net ибо их и так ругают за перегруженность, но есть хорошие либы, которые это все решают без лишних напрягов. И есть уже даже "стандартным решением".
То, чт оты боишься добакить пакет, который начниается не с "Microsoft" - твои анальные проблемы.
196 2489890
>>489885
а ну обоснуй мне ненужность асинк примитивов
Ну или сам иди нахуй
Как можно обойтись без них? Разработчики визуал студии вот не обошлись например. Видать не понимают как ты. Так просвети

>но есть хорошие либы


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

> который начниается не с "Microsoft"


Вообще то пакеты начинаются как раз с мелкософт.
просто они написаны ДЛЯ СЕБЯ. - в частности там есть штуки которые нужны для разработки расширений к студии, а в валидации писало "тут проблема контракта обратитесь в мелкософт".
197 2489894
>>489885
Поясню подробнее для додика

Я не говорю про специфические вещи типа DataFlow
Я говорю про БАЗОВЫЕ примитивы. Которые нужны буквально всем, кто не формошлеп и использует async.
Хотя те же Channel были отдельно, а теперь стали частью.
А примитивы где? - ищи среди велосипедов
изображение.png14 Кб, 1010x277
198 2489895
Ебучие макаки, и как только раньше жили без этих двух невероятно нужных апи

> 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

изображение.png13 Кб, 943x353
199 2489972
>>489303

>Да


А вот в DevExpress считают иначе. На пике их сравнение производительности нового Winui 3 и старого доброго wpf.
200 2489980
>>489890

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


А примитивы где? - ищи среди велосипедов

>СемафорСлим юзай и не выебуйся.



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


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

>Вообще то пакеты начинаются как раз с мелкософт.


Ты хуйню какаую-то выбрал. Никто по-хорошему сейчас ни майкрософт асерты не юзает ни ту твою вторую дичь.
201 2490012
>>489239
Читай дальше, выучишь англ хотя бы до А2
202 2490014
>>489972
А я до сего момента считал WPF тормозным кошмаром (заслуженно). Лишнее подтверждение истины, что у дна не бывает дна, всегда есть куда падать.
203 2490054
>>489980

>СемафорСлим юзай и не выебуйся.


интересно зачем существует ReaderWriterLock, если "все можно через семафор"? или все же не все....
Можешь не отвечать, я понял что примера замены я не увижу.Ну или ты создашь через семафор свой ReaderWriterLock - ну это и я умею, просто это ЛИСАПЕД

>Ну так сиди и не бухти


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

>Пусть лучше корными вещами занимаются


лол. примитивы синхронизации - куда уж корнее.

>Ты хуйню какаую-то выбрал


что было то и выбрал. выбор или лисапед или "от мелких"
как раз именно ИХ они и юзают. Именно их они и создали для того, чтобы юзать. Или визуал студию уже не мелкие разрабатывают?
204 2490086
>>489821
Может ты его с GNU Pascal перепутал?

Free Pascal это диалект Object Pascal со своим компилятором. У него бекенд не GCC и не LLVM как я понимаю.
изображение.png31 Кб, 1304x391
205 2490306
Это вообще хуйня? Чувствую, что тут нужно паттерн использовать, но я за них даже ещё не брался...
206 2490307
>>490306
Просто не надо всё писать в одну строчку.
207 2490308
>>490307
Тогда наделать экземпляров? Я просто снихуя решил, что они глаза мозолят и будет круче всё в одну строку написать
208 2490309
>>489821
Это тест компиляторов (времени компиляции), а не работы собранного кода. Паскаль конечно наравне с си/крестами.
209 2490317
>>490309

> Это тест компиляторов (времени компиляции)


Что за бред, тогда кресты были бы в самом конце.
210 2490324
>>490317
Фиг знает, написано под спойлером. Я исходил из того, что если предположить что это тест программ, тогда получается гораздо больший бред. На графике все примерно одинаковые, наибольшая разница всего в 3 раза, хотя реальная в сотни раз.
211 2490353
У всех нормально обновляется студия? Сегодня час думала и высрала ошибку сети.

При этом фоновая интеллектуальная служба BITS на 40% систему (и начинает грузить аж на старте системы).
212 2490354
>>490353
после добавления ip в впн - да
213 2490356
>>489868

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



Надо подписаться на событие необрабатываемых исключений. Я к этому привык, когда делал плагин, иначе из-за исключения крашит программу-родителя.
214 2490361
>>490356
Ты понял неправильно. Нет никаких исключений.
Если ты ожидаешь, что в этом месте выполнение остановится ибо полетит исключение, то тебя ждет сюрприз.
Debug.Assert просто срет в слушателей (а это по дефолту output) и всё - то есть эквивалентен Debug.WriteLine('Alarm')

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

Лучше бы он делал это по дефолту (с возможностью отключения), а не приходилось делать доп шаги
215 2490366
>>490361
А, я нафаня — этим не пользовался.
Я try cath юзаю и Debug.WriteLine

И вообще написал функцию записи всех логов в текстовый файл. Хз как сделать так, чтобы был доступен аутпут для проверки библиотек, а точнее чтобы сторонняя программа загружала мою библиотеку, которая бы срала в окно интерпретации студии.
216 2490369
>>490361
>>490366
Хотя чисто логически, ассерт не должен останавливать программу, он же просто выдает сообщение при неком условии. Это не трай кетч. Не знаю чего ты ожидал от него.
217 2490380
>>490366
Задача ассерта -проверить инвариант что все верно в данный момент и fail-fast с диким ором делать (по идее). В релизе будет вырезано чтобы не тормозить. А твой try..catch это ну "логгер ошибок" разве что.

>>490369

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


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

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

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

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

но лучше бы устанавливался всегда
218 2490381
>>490377 (Del)
Боюсь представить зачем он нужен, если ты не на галере. Возможно просто исследовал чужой элемент.
219 2490384
>>490377 (Del)

> Растёшь


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

...Или это был не Хач? А, точно, это Сакутин так сказал.
220 2490385
>>490380

>assert проверяет корректность выполнения


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

>Проверяет условие. Если условие имеет значение false, выдается сообщение и отображается окно сообщения со стеком вызовов.


Если ты судишь по другим языкам, то штош, логика сишарпа меня устраивает больше.

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


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

А для прерывания обрабатывай исключения или сам указывай дальнейшие действия. Все логично.
221 2490388
>>490383 (Del)
Да это я понял. Просто коллекция с запретом редактирвоания.
Только я не представляю случаев, в 98% мне именно что нужно редактировать коллекцию — в этом суть.
222 2490389
>>490387 (Del)

>так как в IReadOnlyCollection можно завернуть любой массив


Чем тебе IEnumerable не устаривает? Это ведь тоже универсальная вещь.
223 2490390
>>490389
У этой абстракции 2 проблемы
1 нет признака конечности
2 нет размера.
224 2490393
>>490385
принимается.

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

assert поддерживают, но это не совсем то.
225 2490399
>>490353
У меня когда устанавливалась то половина файлов не установилась. ХЗ как работает щас, мелкософт в своём репертуаре что пиратка что с сайта всё один хуй у них
226 2490426
Есть лист родительского типа, в который я запихиваю элементы побочных типов. И мне нужно сделать orderby этого листа по общему для всех параметру. Но если я его делаю, то элементы сортируются только внутри типа. То есть, сначала идут все элементы одного типа, отсортированные по полю, затем другого типа и так далее. А мне надо, чтобы они все перемешались и отсортировались по этому полю. Што делоть?
227 2490432
>>490377 (Del)
То были эксперементы... А то, как я сейчас написал в100 раз легче, понятнее и тд. Я даже без особых проблем смог linq запрос сделать. Тупо по кайфу, тут я потратил часа 2, а там я дня два ебалася и в итоге все криво, хуево было
228 2490616
>>489545
Мда, и накуя го(вно)ланг нужен-то тогда…
229 2490638
Для чего в WPF DesignHeight, если есть просто Height.
230 2490741
>>490638
Для дизайнера, очевидно же.
231 2490757
>>490741
Я дизайнер, зачем мне это?
232 2490762
Я фотошоп, меня не обманешь.
233 2490788
>>490757
ты можешь знать свою высоту.
234 2490824
>>490788
Я могу узнать из Width или ActualWith
235 2490839
>>490387 (Del)

>рассказывать "алгоритмы нинужны", "матиматика нинужна", "можна в экселе загребать бабулесики больше чем любой программист


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

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

>>490839
вот этот чел познал "дзен" - все в мире есть одна задача, других задач не бывает )
237 2490846
>>490393
Заебал ты уже своим код контрактом. Единственный плюс у него был, что он там что-то пытался в былд тайме проверить. Но это не нужно ибо все равно внешних данных больше.
Все остальное пишеться или самому в один файл в 100 строк, или есть хорошие готовые либы.
Либо можно угореть и запилить себе и код генерацию, и билд тайм чеки.
Встроеный в язык нул гард отменили кста
https://devblogs.microsoft.com/dotnet/early-peek-at-csharp-11-features/#c-11-preview-parameter-null-checking
238 2490847
>>490844
Так это задача требовательна к производительности, эта задача - требовательна к ресурсам. И при этом оно явно показывает, что ничего кроме умения обойти массив и в крайнем случае - использовать очередь с приоритетом - тебе нихуя в реальном мире и не надо.
Какие задачи средний шарпер-то решать будет? DTO'шку в базу загнать, да иногда что-то с xml поделать. Все это у тебя на стандартных решениях майков сделано, где уже индусы тебе оптимизировали все что только можно. Не выебывайся - учись этим пользоваться и сиди спокойно.
image.png132 Кб, 1258x929
239 2490849
>>490396 (Del)
Нахуй так заморачиваться пасаны?
Тыщи телодвижений вместо того, чтоб ебануть везде IEnumerable/ICollection да хоть List бля

>IEnumerable я принимаю на вход и если мне нужно свойство Count, то я проверяю реализует ли коллекция ICollection


Зачем и главное нахуя?
240 2490860
>>490849
Затем, что если мне придёт коллекция на 100 миллионов объектов я не хочу их итерировать в случае Count() да, такого не должно быть в принципе, но всё же. Даже условные тысячи 2-3 объектов супер впадлу итерировать и это нереально медленно.

>Тыщи телодвижений вместо того, чтоб ебануть везде IEnumerable/ICollection


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

>да хоть List бля


Это может быть избыточным

Понятное дело, что у условном ендпоинте можно сделать хоть массив, хоть коллекцию, хоть блять че угодно, но когда ты делаешь что-то производительное - приходится думать правильно
241 2490862
>>490846
этот единственный плюс есть киллер фича так то.
Помимо расширенного Assert проверка в билдтайме весьма приятная штука.

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

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

Каждый день с утра занимаюсь разработкой тулзов вместо разработки собственно продукта ))) (сарказм)
242 2490871
>>490860
Ставишь пакет от того же жидбрайнса, обмазываешь арибутами аргументы и у тебя есть ворнинги. Раз тебе так стандартные нулаблы не нравятся.
Подкручиваешь код генерацию, тот же фоди умеет геренировать чеки по жидбрайновским нул атрибутам - есть рантайм валидация. Я давно нек иследовал, но думаю, что сейчас даже лучше варик, чем фоди есть.

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


Хуйню не неси. Смысла в таких валидация без рантайма ноль. А если надо, то в тех же гардах касатомных в одну трочку делается.
243 2490872
Это вот
>>490871
Сюда >>490862
244 2490894
>>490844

>Хреновый тогда из тебя дизайнер


Да ты троллишь? Ты знаешь для чего это, или нет?
245 2490930
Глупый вопрос, но всё же: можно ли как-то разграничить действия пользователя при использовании static List'a? Каждый отдельный пользователь изменяет данные, а так-как это static List, то все изменения видны другому пользователю. Короче мне надо заместо static сделать не static или можно как-то разграничить?
246 2490946
>>490894
Для дизайнера. Дизайнер - это когда ты в хамл код разметки пишешь, а рядом готовое окошко рисуется. Это в данном контексе - дизайнер. Это - для него.
247 2490959
>>490946
Ну е-мое, ну это понятно. Вопрос в том, а зачем оно понадобилось, если есть параметр ширины и актуальной ширины? Зачем нужен третий параметр?
248 2490998
>>490930
Тебе нужна сессия судя по всему.
249 2491006
Дак что? Реально надо учить Angular или хватит Blazor'а?
image.png107 Кб, 1163x758
250 2491021
>>490860

>Затем, что если мне придёт коллекция на 100 миллионов объектов я не хочу их итерировать в случае Count() да

251 2491022
>>490433 (Del)
В итоге просто через Sort сделал
252 2491026
Как асинхронно в файл записывать чтоб эксепшна не было?
253 2491035
>>490959

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


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

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

Нужно просто не очень часто.
254 2491036
>>491026
бери да записывай. и не будет тебе эксепшена
255 2491039
>>491026
Так есть же асинхронная функция в FileStream, она запишет тогда, когда файл освободится. Правда если ты что-то с высокой частотой пишешь, типа лога, то может записываться не в том порядке, в каком ожидалось из-за занятости файла другими процессами.
2022-10-1810-32-36.png20 Кб, 739x239
256 2491045
>>491026
Асинхронная запись вроде не вызывает эксепшина т.к. ее суть — дождаться и записать.
Можешь проверять File.Exists перед записью или чтением.

https://stackoverflow.com/questions/11774827/writing-to-a-file-asynchronously
257 2491047
>>490871

>Раз тебе так стандартные нулаблы не нравятся.


да не говорил я что мне не нравятся стандартные нулабле
Я говорил что нулаблы - маааленькая часть же

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

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

> Смысла в таких валидация без рантайма ноль


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

Тут каждому свое - кто то юзает везде List и "я и так все знаю и не ошибусь", а кто-то любит строгость когда компилятор проверяет максимум, а "потом в рантайме оно бахнет". Понятно что все не проверить, но все же.
image.png851 Кб, 1024x768
258 2491053
Пиздос ебка на работе. Такой хуйни ни разу за всю мою карьеру 8милетнюю в айти не было. Даже в первый год, когда я выездным сисадмином работал. Тогда начальсто только за крупные косяки ебало. А сейчас техлид ебет понечножку, но каждый день.
2022-10-1810-35-43.png64 Кб, 732x290
259 2491054
Можно ли как-то в WPF темплейте ограничить область видимости кистей или констант? К примеру (пикрил) у меня есть набор кистей для слайдера, хранящихся в отдельном файлике стиля, и видеть их должен только слайдер.

В MDSN примерах, в параметре "Key" приписывают тип слайдера для ориентира, но если у тебя дохрена элементов, то при биндинге локального ресурса выпадает такой адский список кистей, что будешь год искать нужное. При этом по факту они не нужны.
260 2491055
>>491053
Как ты без мышки формочки шлёпаешь?
261 2491058
>>491055
Я просто Шлепа
image.png7 Кб, 582x63
262 2491088
>>491045
И что мне эта проверка даст? Я всё на в MSDN написано делаю, но если пытаюсь записать в файл почти одновременно то происходит пикрил. На UWP пилю.
263 2491090
Какие есть варианты вакансий на C# кроме юнити и асп.нет? Реально будет в обозримом будущем вкатиться в MAUI или Blazor?
264 2491095
>>491088
там же в конструкторе есть параметр с этим
https://learn.microsoft.com/ru-ru/dotnet/api/system.io.fileshare?view=net-6.0
265 2491096
>>491090
Blazor без asp.net явно никому не будет нужен. А из вариантов есть ещё десктопное гуи - wpf, winforms. Maui мертворожденный проект.
266 2491097
>>491088
Закольцуй в цикл и записывай через try catch. Если выводится исключение, то меняй флаг выхода из цикла на false. Без проверки исключения.

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

Тут надо городить что-то типа очереди, причем не обычной а ConcurrentQueue. Все потоки скидывают в эту очередь, а записывающая в файл функция — одна на всех и вытаскивает таски из очереди.
267 2491099
>>491097

>ConcurrentQueue


если нужно ждать, то обычный семафор
иначе Channel/BlockingCollection

ConcurrentQueue тут неудобен
268 2491103
>>491099
Ну вот я кстати семафор приколхозил, с ним работает, но я думаю это какой-то совсем лютый костыль
269 2491106
>>491103
Абсолютно самая что ни на есть нормальность.
Просто нужно понимать что при очень интенсивной записи код будет ждать пока запишет.
270 2491121
>>491106
Вот поэтому я и предложил ConcurrentQueue.
Все кидают в один "буфер" и продолжают делать свои дела, а одна функция этот буфер разгребает и пишет в файл.

>Channel/BlockingCollection


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

>ConcurrentQueue тут неудобен


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

Единственное, над чем нужно подумать, как записывальщику в файл мониторить очередь, потому что совершенно непонятно в какой момент туда поступят данные (не будет же он в цикле постоянно чекать очередь?). Тут нужно какое-то событие или токен.
271 2491123
>>491053

>куртка на спинке стула


Ну что за чушканство, честное слово.
272 2491125
>>491121

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


А почему нет?
273 2491126
>>491121

>Channel/BlockingCollection


они заточены на автопродолжение выгребания из них при появлении новых элементов.

>А что там неудобного?


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

>как записывальщику в файл мониторить очеред


а в случае Channel/BlockingCollection думать не нужно. Они предназначены для решения паттерна Producer/Consumer
а обычная очередь это просто очередь.
274 2491133
>>491125

>А почему нет?


Дед, мы живем в век мобильных устройств. Побереги батарею.
Сколько видов таймеров высрано по этому поводу.
А уж цикл While это вообще аут. События как-то шпокойнее.
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, оба закомменченных не работают
276 2491161
Подскажите, пожалуйста, как сделать так: пользователь вводит время, это время заносится в BD PostrgeSQL, потом когда это время наступает происходят какие-то действия. Как мне сделать взаимодействие между временем в бд и скриптом, который должен выполнится?
277 2491181
>>491161
Почитай про TaskScheduler.

>>491159
Я не уверен, но такая конструкция разве не будет работать?
var x = cont.Set<Companies>().Include(p => p.AgentList.Where(w = > externalCodes.Contains(w.CodeNumber))
278 2491192
>>491181
Ошибка в линке - 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
279 2491194
>>491161
Hangfire или Quarts.net
280 2491218
>>491159
>>491175 (Del)
>>491181
Отбой, мне приходил массив стрингов с пробелами в начале каждого элемента, что я в дебаге никак не заметил.
В итоге .Where(s => (s.AgentList.Any(p => externalCodes .Contains(p.CodeNumber)))) работает и всё ок
281 2491302
Как сделать так, чтобы шаг изменения значения в начале слайдера был меньше, чем в конце? Какой множитель применить?

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

Заметьте, что у оригинального слайдера при такой же длине (и даже меньше), на участке от 0,1 до 1 шаг более подробный. Тут очевидно какой-то множитель. Какие есть идеи? Или лучше с этим вопросом в матан?
282 2491304
>>491302
Л О Г А Р И Ф М
О
Г
А
Р
И
Ф
М
283 2491326
>>491302
Правильно говорят - логарифмы используй.
Если что - это даже не матан, а школьный курс.
2022-10-1819-55-36.png21 Кб, 731x745
284 2491341
>>491304
>>491326

>Если что - это даже не матан, а школьный курс.


Я дурак дизайнер

>логарифмы используй


Чет даже по графикам логарифм дает не ту кривую.
Квадратичная функция мне кажется ближе. Пикрил: x ^ 2 / MaxValue.
Только степень "прогиба" не сложно контролировать, но и этого достаточно.
285 2491342
>>491341

>не сложно


сложно*
изображение.png15 Кб, 599x316
286 2491437
Хочу добавить модель ADO.NET EDM. Но выскакивает вот такая ошибка.
287 2491446
>>491437

>EDM


Дед, ты чего? таблетки прими
ты реально ебанутый или какой-то старый кал портируешь?
288 2491456
>>491446
смотрю видос какого-то индуса, он на основе бд сделал классы. Я хотел проторить, но обасрался
Сам видос https://www.youtube.com/watch?v=1HE6xKCthLA&t
289 2491464
>>491456
рандомный скрин и везде "ебать"
Ты тралишь тута, сучка?
290 2491466
>>491464
ну мне при просмотре уже стало понятно, что тут что-то не так. Но всё равно, хотел вот так несколькими кликами сделать классы.
image.png564 Кб, 1705x741
292 2491470
нихуя он там по алгоритмам угорает. так вот какие они, любители мамкиных литкодов
image.png86 Кб, 639x361
293 2491472
Почуствовал себе буржуем
294 2491514
>>491472
У меня 12, большую часть сжирает ебаный браузер
blyadi.jpg51 Кб, 652x377
295 2491515
Без этих хуёвин возможно кодить?
296 2491555
Кто-нибудь пользуется VS Code? Действительно ли нужно создавать иерархию в виде: Решение (солюшин) -> Проект, как в студии? И если так, то что выбирать в качестве рабочей папки: папку с решением или с проектом?
297 2491572
>>491515
Да, если тебе пайтон и ажура не нужны.
298 2491576
>>491555
Сделал иерархию, в итоге мне вс код выдаёт миллион ошибок, что не видит всякие пространства имён...
А потом ещё говорят: ой, у нас дотнет давно кроссплатформенный, винда с вижлой не нужна, всё можно в вс коде делать.
299 2491591
>>491472
Так это свободные 16Гб
Так что у тебя должно быть 32Гб, чего действительно не у всех есть.
300 2491592
>>491576
Все (кроме жителей страны 404) юзают rider на маках
301 2491605
>>491555
Я пользуюсь Vim. Моё ебало представили?
hjjjjj.jpeg43 Кб, 512x512
302 2491627
303 2491807
>>491576

> выдаёт миллион ошибок


> Сделал иерархию


> А потом ещё говорят


Вс кодом открывай только папку, в которой лежит файл csproj.
304 2491832
Как из кода установить параметр Autosize?
305 2491863
Куда писать Main entry point?
306 2491883
Глупый вопрос, но почему фреймворки для рендера используют opengl, а не вулкан?
307 2491910
>>491807
А если у меня два проекта: само приложение и тесты?
308 2491915
>>491832
Разобрался: Double.NaN
309 2491931
>>491863
Ой, такой головняк.

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

Ну еще в свойствах проекта чекнуть, чтобы не стояло дефолтное имя запускаемого метода
310 2492008
>>491931
Нашёл, в свойствах удобнее
311 2492024
Обьясните мне кто нибудь что такое blazor и maui. Я могу использовать C# для верстки веб-приложений/сайтов на blazor для фронта + asp.net для бека? MAUI я так понимаю замена для xamarin.forms и будет конкурировать с flutter.
312 2492042
>>492024
MAUI предполагается как универсальная платформа для UI, но в большей степени ориентируется на мобилочки.
313 2492377
>>484368 (OP)
Ребзя, где я могу найти книги/статьи advanced и выше уровня о том как CLR компилирует и ранает C#? Например, как статические классы и переменные, лямбда выражения, параметры, вызовы, типа и структуры и т.п. выглядят под капотом?
314 2492386
Можно ли при помощи интерфейса как-то заставить создавать экземпляр класса с определенными аргументами?
315 2492389
>>492377

>типа и структуры и т.п. выглядят под капотом?


Ты точно advanced?
Sharplab.io позволяет любые куски кода в рантайме переводить в IL.
316 2492390
>>492377
sharplab.io тут тестить как что под капотом, олсо читай шапку треда, тем есть ссылка на стековерфлоу и книги хай лвла
317 2492419
>>492389

>Sharplab.io


Я блять IL могу и в дотпике посмотреть, мне нужна книга где описывается вся теория дотнета, CLR, JIT, GC, причем глубокая, а не "переменная это коробочка, которая ссылается на значение в кучке"
318 2492421
>>492390
Ооо, а книжечки там хорошие
319 2492465
>>492377
CLR via C# Рихтера. Чуть подустарела, но все еще актуальна.
Ещё такая штука есть https://github.com/dotnet/coreclr/tree/master/Documentation/botr - оче специфичная инфа о принципах устройства clr-рантайма.
320 2492511
>>492377
Рихтер CLR via C#
321 2492513
>>492386
Нет. Потому что "Interfaces cannot contain constructors"
testcsharp.jpg82 Кб, 547x537
322 2492530
И что реально надо писать такую крольчатку и понимать как это всё работает?
323 2492533
Помогите решить дилемму. Насколько правомерно в дизайнере окна выставлять состояния чекбоксов, радиобаттонов и прочего.

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

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

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

Второй вариант мне кажется более безопасным в долгосрочной перспективе, но опять какой-то лишний код.
326 2492566
>>492555
ты же про винформс?
ну страдай.
327 2492583
328 2492593
>>492583
в WPF у тебя все во вьюмоделях и чекед это биндинг, так что "случайно" ничего не поставишь.
Да и события обычные используются в разы реже
329 2492622
Мимокрокодил интересуется - а относятся ли к шарпистам приколы про джавистов по типу «Попросили у джависта прикурить, а он фабрику для зажигалок строит»? Или шарпобоги перебороли желание на каждый чих городить абстрактно-фабричный фасадный метод?
330 2492644
>>492622
Суть шарпа ничем не отличается от жабы.
331 2492653
>>492622
Это не желание
А опыт
Вечно "да тут нужно ерунда" превращается в "нужно это и то"
В итоге заранее закладываешь за воротник на будущее
332 2492662
>>492660 (Del)
Зачем на 10
На пару шагов.
333 2492665
>>492654 (Del)
Много всяких закорючек непонятных и в целом конструкция слишком монструозная
334 2492680
После обновления студии решарпер стал загружаться через несколько минут после запуска. Раньше такой херни не было. Как фиксить?
335 2492685
>>492680
Вроде на третий раз должно уже нормально включаться, но это не точно.
336 2492700
>>492680
Как часто ты нажимаешь Ctrl+S?
337 2492714
>>492680
подтверждаю. такая же хрень. даже для нового проекта.
338 2492756
>>492665
Покажи скриншотом, как ты хочешь чтобы было?
339 2492775
Студия конечно непривычная после жетбрейнсовских иде, стоит ли привыкать к ней? Или сразу на Rider перескочить?
340 2492776
>>492775
А если жидбрейнс непривычен после студии?
testcsharp2.jpg30 Кб, 527x230
341 2492783
342 2492815
>>492806 (Del)
После PHP
Capture.JPG19 Кб, 649x270
343 2492828
шарпач, можно ли как-то хитро подкинуть свой код в сеттер чужого объекта, который я не могу редактировать?
сейчас у меня пикрелейтед: имеется коллекция чужих объектов, у них public bool IsDirty. они работают как "грязный бит" - когда есть какое-то изменение в объекте они становятся true, затем его надо самостоятельно менять обратно. при этом, я не контролирую другие компоненты которые могут изменить эти булевые или кто вообще это делает, единственное что торчит наружу это булевая на объекте.
344 2492837
>>492783
Но это же говнокод!
На любом языке говнокод, невзирая на синтаксис.
В ифе идёт сравнение со строковым литералом. За это на первых курсах линейкой по рукам пиздят.
345 2492871
>>492837
Но ведь в сишарпе == перегружен и сравнивает значения, а не ссылки.
346 2492891
>>492835 (Del)
ну... не совсем подменяться, но если сеттер какой-нибудь эвент квакнет после изменения было бы вообще идеально
347 2493006
>>492994 (Del)
Конечно забанят. То на четверг операция то на пятницу
348 2493023
Пасаны, куда ентити фреймворк с постгресом табличку дели мою?
Я скопом несколько добавил (в контекст), сделал миграцию, апдейтнул базу.

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

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

ЧЯДНТ?
349 2493027
>>493020 (Del)
Того что каждый день этот пост про операцию на завтра
350 2493033
>>493006
Он раньше кидал полную картинку, где обследование за 2017 год. Сейчас обрезал дату. Этот кот сдох 5 лет назад.
351 2493057
>>492775
я много жетбрэиню, но для шарпа студия
Мне в ней приятнее. Да и расширений побольше
и та штука показывающая потребление памяти и события тоже неплохо. А еще supercharger есть расширение
352 2493062
Я вот уже неделю как работаю интерном в одном крупном банке и просто охуеваю с количества получаемой информации. Я просто смотрю в код и не понимаю как он работает, причем навыки программирования у меня есть. Просто смотрю как на код когда я был 8-ми кассником и нихуя не понимаю что это. Функции? Процедуры? Сейчас примерно также только масшатабируемость иная. А про навыки энтерпрайз разработки я вообще молчу. Совершенно иной подход и где его брать не знаю.
353 2493063
>>492891
https://github.com/Aarnihauta/MethodReplacer/
Чекай Program, теперь вместо set_Property вызывается другой метод. Там можешь написать что угодно
354 2493070
>>493063
404 так то
355 2493072
>>493070
Забыл его публичным сделать, чекай еще раз
356 2493074
>>493072

>хармони


спасибо но меня за это убьют нахуй лучше буду поллить как раньше
357 2493079
>>493074
Там нет хармони, я руками всё сделал, просто неймспейс остался.
358 2493082
>>493079
а это для инстансов никак?
359 2493085
>>493082
Можешь описать изначальную задачу, мне кажется, раз тебе приходится лезть внутрь метода, то ты что-то не так делаешь
360 2493089
>>493085
Я другой мимокрок
Мне такое пригодится для импортозамещения
361 2493101
>>493082
Для инстансов можешь использовать dynamic proxy, там есть способ перехватывать вызовы методов
362 2493102
>>493101

>dynamic proxy


Имею в виду Castle Dynamic Proxy
363 2493105
>>493079
так хармони не в смысле что хармони а в смысле что рефлексия
если для достижения результата надо метод подменять то лучше ну его нахуй
364 2493154
Аноны помогите. Работал фронтэндером, хочу перекатиться в .net подскажите, насколько большая конкуренцию у джунов, и реально ли сейчас вкатиться сюда.
365 2493382
>>493154
Конкуренции почти нет, одебилевшие от курсов гигбрейновские швайнокараси все в петухоне и жиесе. Вкатывайся анон
366 2493389
>>493382
спасибо, и еще вопрос, насколько реально каким нибудь фуллстеком залететь? Мне кажется развиваться в двух напрвлениях сложно, плюс универ.
367 2493393
>>493380 (Del)
тебе бы какую нибудь выписку с суммой за операцию скинуть...
368 2493470
>>493382
Шанс вката меньше 5% вообще-то
369 2493504
>>493382

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


Кстати, забавный факт.
Где-то два года назад перед приходом .net6 во всяких скилбоксах и т.д. и прочих начали открывать курсы по шарпу. Даже джаваеб Немчинский постоянно предрекавший смерть шарпу открыл у себя его курс. Но продержалось все это чуть больше года и либо шарпокурсы перестали пиарить, либо совсем позакрывали (как например в жидбрейнсе - инсайд инфа).
370 2493506
>>493062

>навыки программирования


> Совершенно иной подход и где его брать не знаю.


Навыки программирования сейчас даже у детсадовцев есть. Для того чтобы понимать как раз и нужно учиться и читать дохуя скучных (для нормисов) книжек.
371 2493507
>>493504
И что? C# сфера потихоньку сокращается или просто курсы были слишком сложные и никто бабло не платил?
372 2493509
>>493389

>насколько реально каким нибудь фуллстеком залететь?


Фуллстеком как раз реально залететь, т.к. какой-нибудь условный реакт с js учится за месяц...два. Плюс очень много работодателей хочет себе двух спецов по цене одного.
Только нужно сразу понимать. Что по факту ты будешь на двух работах за одну з/п работать. Плюс это путь в никуда и нужно при первом возможном случае перекатываться в чистый бэк.
373 2493516
>>493507
Насчет сокращения сферы - все так же как и в остальных сферах/языках. Разве что шарп себе в относительном выражении у джавы немного рынок отгрыз.
А вот насчет сложности, да есть такое. Насколько я заметил в шарпе традиционно намного сильнее ебут за чистоту кода. Плюс сам-то язык выучить просто, а вот начать разрабатывать на том уровне который нужен энтерпрайзу - новичку поебаться знатно придется.
Плюс не так уж много толковых преподов, а с учетом того, что в шарпе (для норм спецов) неплохо так в 21-м году зарплаты выросли, то им нахуй не уперлось идти в жидбрейнс за копейки лекции читать.
Я не знаю как на курсах по другим языкам например. Но на шарповых курсах конверсия была процентов 10 максимум. Т.е. из 10 человек только 1 мог претендовать на то, что его резюме хотя бы рассматривать станут и то если у него уже был хотя бы какой-нибудь бэкграунд при этом.
374 2493518
>>493470
Я после ПНД и ПТУ сразу же устроился в нищем милионнике. Потом спустя 9 месяцев так же без задней мысли нашел новую работу. Так что динаху джавадебил

>>493504
Да бля у немчинского шиза ебаная, каждую секунду пиздит что ВОТ-ВОТ ЕЩЕ НЕМНОГО И ШАРП ТОЧНО ВСЁ ПУЗЫРЬ НАДУЛСЯ НЕВЕРОЯТНО, НУЖНА ТОКА ДЖАВА! А по факту в джаву вкатываются всё меньше и меньше, нежели в шарп, потому что джава морально устарела и уже не сможет догнать по возможностям .NET
375 2493519
>>493507

>слишком сложные


Еще, кстати, в шарпе до сих пор языковый барьер играет роль. Практически вся актуалочка по фреймворкам до сих пор на английском, а то что переведено устарело и никому не нужно.
А большинство посетителей таких курсов не то, что онлайн переводчиками пользоваться не умеют, даже простой процесс гугления по ошибке для них это уровень рокет саенс.
376 2493524
>>493518

>ВОТ-ВОТ ЕЩЕ НЕМНОГО И ШАРП ТОЧНО ВСЁ ПУЗЫРЬ НАДУЛСЯ НЕВЕРОЯТНО, НУЖНА ТОКА ДЖАВА!


Ну я про что и написал. При всей его ненависти к шарпу он все равно попытался под рыночек прогнуться и открыл у себя курсы по нему.
Я правда сейчас глянул на его сайт, как и ожидалось он так же учит неактуальной хуйне вроде винформс, WPF и MVC.
377 2493525
>>493524
А с чего мвц не актуально вдруг?
378 2493527
>>493524
WPF еще актуальна более чем. Корпоративное ПО делают на винформах или впф, это его нисша. Иногда добавляют C++ если нужна высокая скорость
379 2493528
>>493518

>сразу же устроился


Лет 10 назад?
380 2493529
>>493528
Чуть больше года назад
381 2493530
>>493529
Чел, сейчас ситуация кардинально иная. Вакансий очень мало.
382 2493533
>>493530
Твои проблемы, раз тебя волнует конкуренция то может тебе и не нравится программировать? Кому нравится тот ебашит код каждый день и вкатывается, оставляя нубасов позади
383 2493539
>>493527
В большинстве своем это закрытые системы. Т.е. они пилятся/ковыряются годами и там сидит прикормленая команда, которой тепло-сытно и дергаться никуда не хочется. Что-то новое пилится только в областях САПР-а и экспертных систем, но чтобы туда вкатиться нужен хороший багаж по предметной области. Ну и зарплаты там в большинстве намного ниже рынка.
384 2493544
>>493525
Потому что, где-то с выхода Core 3.1 народ осознал, что MVC с его привязкой к винде теперь нахуй не нужон и можно спокойно садить бэкэндера пилить чистый WebApi бэк, которому будет похуй на какой системе работать и похуй на чем будет написан фронт. Т.е. намного выгоднее иметь грамотного бэкэндера и грамотного фронтендера, чем двух фулстеков хуево разбирающихся в обеих областях.
Ну и все постепенно к этому и переходят. Так что искать сейчас работу на MVC - путь в никуда, т.к. в основной массе это будет старый стек и потом ты нахуй не нужен будешь с таким опытом.
385 2493547
>>493544
Можно ли в фронте использовать Blazor?
386 2493548
>>493547
Я хер знает. Теоретически да.
Но практически...
В серьезных конторах вряд ли. Там за лишнюю библиотеку прикрепленную к проекту заебешься согласовывать все. Ну чтобы писать на чем-то не имеющего статус LTS вообще можно забыть.
Может только где-нибудь в стартапчиках, где кабанчик модно-молодежный и топит за инновации и все новое.
387 2493575
>>493547
В тырпрайз говне, где все шарперы и вы делаете веб приложение для "локального" пользования клиентом - может даже и нужно.
В остальном конечно юзлесс
388 2493604
>>484368 (OP)
Котаны, а как вы парсите в объекты json-ы у которых ключи на русском языке?
Через dynamic или делаете объекты у которых поля кириллицей обозваны?
389 2493705
>>493604
есть же JsonPropertyName или его аналоги
390 2493826
>>493820 (Del)
Твой кот сдох в 2018
391 2493956
Как вы учили Entity Framework?
392 2494177
>>493956
Примерно так:
- таак почитаем что это такое
- да блин еще статьи по EF, а мне нужен кор
- попробую
- да епрст
- да ну блин
- да как так то
- привет dapper
393 2494196
>>494177
Так вот почему даперисты так срут вонюче везде - неосиляторы
394 2494199
>>493604

>Котаны, а как вы парсите в объекты json-ы у которых ключи на русском языке?


Никак. Это как себя не уважать надо, чтоб с таким кодом работать?
395 2494233
>>494196
Зато EF-овцы дважды осиляторы
знают и SQL и "а как его выразить в терминах EF бл.."
396 2494368
Я хз куда еще написать, поэтому напишу здесь.
Я планирую фрилансить и иногда попиливать игрухи. Фрилансить собираюсь пиля мобильные приложухи или веб-приложения. Так вот, я никак не могу выбрать между флаттером и C# стеком.
Флаттер кажется больше подходит под разработку мобильных приложух. И игры простенькие 2д на нем можно делать, вроде все подходит. К тому же флаттер работает сразу почти на все стороны, и веб, и десктоп, и мобилки, фрилансить на нем должно быть довольно легко, сразу пиля приложуху и под айос и под андроид.
НО.
Тут я наткнулся на .net и понял что на шарпе можно делать то же самое, благодаря в основном Uno Platform. Плюс на шарпах есть юнити и моногейм. Плюс MAUI потихоньку допиливают.
Ну и вот я не могу решить флаттер или C#. Реально ли будет фрилансить разрабатывая мобильные приложухи на шарпе, или мне лучше смотреть в сторону флаттера. Плюс у шарпа охват шире, можно аж целую операционную систему почти полностью на нем запилить.
Кароче по сути мне нужно чтобы кто нибудь шарящий за меня решил, флатер или .net. Какие еще можно привести доводы C# против флатер? Есть тут такие кто пилит приложухи на фрилансе? Реально ли будет фрилансить на MAUI через годик другой?
397 2494500
>>494368
На мобилках надо учить джаву/котлин. Там и инструментарий неплохой с Андроид студией.
398 2494509
Аноны подскажите хантят ли сейчас студентов универа?
Просто раньше на курсе 3 приходил дяденька и забирал маслят на стажировки. Но сейчас пиздец происходит и стало интересно продолжаются ли такие практиики.
399 2494513
>>494368
Очередной инфантил с мриями о фрилансе, заканчивай с этой хуйней
400 2494518
Ребят, ну хули вы дизморалите то?
401 2494528
>>494518
Да кто дизморалит то?
402 2494588
>>494233
осиляторского во мне дохуя. Сиквельщик передо мной стоит там, екзекюшн планы дрочит свои, я говорю бля старина съеби нахуй, выгребаю все таблицу в память, забирай и съёбывай
403 2494590
>>494233
Все так и есть кста
404 2494657
>>493705
>>494184 (Del)
Спасибо за подсказки, но я более удобную штуку нашел пока их изучал: ContractResolver
405 2494658
>>494199

>Это как себя не уважать надо, чтоб с таким кодом работать?


Импортозамещение во все поля, чувачок.
Закажет тебе бизнес интеграцию с каким-нибудь гос-сервисом, еще и не с таким говном поработаешь.
406 2494665
>>494509
Скорее приходят за теми кто представляет из себя что-то экрстраординарное. Либо дохуя умные, либо те за кого заранее проплачено.
Причем умные не в плане каких-нибудь олимпиадников (они то как раз нахуй никому не нужны), а те кто действительно быстренько во все въезжает, шарит на уровне намного выше среднего, плюс показывают хорошие результаты на практике помогая делать преподам их собственный гешефт. Таких преподы сами устраивают сигналя нужным дядям.
407 2494666
>>494665
повеяло запахом гречневого говна
408 2494674
>>494666
Не-а. Нормальная практика, точно так же как за рубежом. И не только в айтишечке, но и во всех остальных сферах. Берут либо тех кто уже свой, либо тот кто уже показал, что чего-то стоит.
409 2494681
>>494674
Ну может. Хотя кому там тот задроченый препод может посигналить? Рогам и копытам, в которых их зять работает?
410 2494687
>>494681
Мы про универ говорим. Это в школе все задроченные. В универе есть два типа преподов. Либо долбоебы до сих пор преподающие студиозам лабы на паскале. Либо продвинутые ребята шарящие за рынок и имеющие связи, и знающие что и как сделать на имеющихся у них мощностях (люди это кстати тоже ресурсы, а толковые студенты хороши тем, что это максимум дешевые ресурсы).
Причем ай-тишные факультеты даже проигрывают немного тем где реальным вещам учат. Например какой-нибудь шустрый завкафедрой машиностроения имея в наличии лабораторию с парой ЧПУ-шных станочков будет в деньгах купаться.
411 2494771
Слишком сладко

var collection = new int[] { 0, 2, 10, 5, 4 };
if (collection is [.., > 5, _, var even] && even % 2 == 0)
{
Console.WriteLine(even);
// 4
}
412 2494794
эх вот бы в сишарп вкатиться, да толко няшный шарпик мастдайной гнилью еще лет 10 отдавать будет... придется подождать, пока проветриться
413 2494825
>>494794
Инсайд индустрии - через 10 лет все будет писаться на расте + гитхаб копилот
414 2494833
>>494771
Вот нафига так делают? Это же абсолютно не читабельно.
415 2494836
>>494794
игруньки делать хочешь?
416 2494838
>>494771
Вот хейтят джаву, что там нету такого сахара, дак это даже хорошо, потому что язык легко учится и код легко читается. В сишарпе же навводили всяких закорючек и хрен пойми что они означают.
Если до 5 версии все изменения были логичными и делались с определенной целью, то сейчас разработчики языка как сороки собирают все фишки из других языков, без понимания зачем это нужно там. Ни какой цели в этих изменениях нет, просто напихать побольше всего, чтобы выкатить новую версию к назначенной дате. Язык замусоривается и превращается в синтаксическую помойку.
417 2494896
Можно ли на сишарпе написать консольное кроссплатформенное приложение типа вима или нортон коммандера? То есть можно ли рисовать в консоли как на экране по знакоместам: символ и аттрибут?
Или кроссплатформенность позволяет работать с консолью в режиме потока: читать символы из него и выводить символы без перескакивания по координатам?
418 2494981
>>494896

>Можно ли на сишарпе написать консольное кроссплатформенное приложение типа вима или нортон коммандера


Можно, но UI будет на каком-нибудь электроне

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


Чего?

>Или кроссплатформенность позволяет работать с консолью в режиме потока: читать символы из него и выводить символы без перескакивания по координатам


Тоже нихуя непонятно, но можно
419 2495052
>>494981
Мне кажется ты не понимаешь как работают консольные приложения типа вима или нортон коммандера. Они не создают своё окно, а работают в рамках обычной консоли.
Допустим у нас есть консольное окно 80 на 25 знакомест и я мог бы вывести символ в любое знакоместо по любой координате. Учитывая, что можно задать цвет символа и цвет фона, то получается простая псевдографика.
Вопрос, поддерживает ли .Net Core такой режим работы?
420 2495057
>>494833
>>494838
Для вас гугол сделал голанг
421 2495064
>>495057
Мне в МВП-треде запретили учить голанг и сказали учить сишарп
422 2495079
Что за уебанство ныть на любой сахар типо «ЭТО НЕЧИТАБЕЛЬНО!1!11!»??? Сука, взял один раз прочитал что это за фича и запомнил, вы наверно ещё на хаскель выёбываетесь изнеженные джавадебилы, а какой-нибудь банальный list comprehension в пиздоне вводит вас в панику
423 2495080
>>495079
Соси писю
424 2495083
>>495079
ну так попробуй распарси >>494771
ascii-graphic.jpg71 Кб, 820x828
425 2495084
>>494981
Работает! Даже на линупсе!
426 2495085
>>495083
Если тебе дали инструмент это еще не значит, что надо с него такие хатки строить
Даже на одних ифах можно такое наворотить, что хуй ты его распарсишь

Все нитики на сахар в шарпе - закостенелые тупые уебаны, которым лень швелиться.
427 2495093
>>495085
что значит не значит
как раз значит чтобы ты строил ТАКУЮ хатку вместо ручного кода
428 2495094
>>484368 (OP)
Есть способ в VS автоматом добавлять в ссылочную базу проекта цепочи зависимых разделяемых библиотек?
Не надо кукарекать что это не для этого. Оно для того самого.
429 2495095
>>495084
Но ведь .NET не кроссплатформенна!!!!???
image.png165 Кб, 316x214
430 2495096
>>495095
Начнем с того, что .NET != .NET Core

мимо
431 2495097
>>495095
Видимо было заложено в Mono, а микрософты украли их код для своего Core.
432 2495098
>>495096
Начнем с того, что .NET Core уже легаси и у нас теперь просто .NET
433 2495100
>>495098

>.NET Core уже легаси и у нас теперь просто .NET


Вы че там, охуели совсем? Я ж только посрать отошел! Заказанные свежие книжки по кору только через неделю приедут. Вкатился, блять.
434 2495102
>>495100
Какие книги? Доки от майкрософт лучшие среди всех прочих языков
435 2495103
>>495100
Что заказал?
Но вообще книжки устаревают уже на выходе, потому что каждый год выходит новая версия, которая всё ломает.
436 2495107
>>495102
>>495103
Хохла какого-то и пиндоса какого-то.
437 2495108
>>495094
Бамп, заебали, книгоебы.
438 2495112
>>495100
Зачем читать бумажные книги
Из них даже код не скопировать
440 2495115
>>495113
А вторая-то нахуя? Играть в байтоеба на шарпе?
441 2495116
>>495115

>вторая


первая
442 2495118
>>495115
>>495116
На каждом собесе дрочат по Рихтеру
443 2495119
>>495112

>Из них даже код не скопировать


Пиши ручками, развивай моторику, нюфажина.
444 2495120
>>495118
Хз, ни разу не спрашивали. Это в ойропейских потогонках наверное такой хуйней страдают, чтобы зарплату сбить.
445 2495121
>>495118

>На каждом собесе дрочат


Так а зачем? Чтобы потом байтоебить на шарпе?
446 2495124
>>495121
Есть свои подводные камни вроде автобоксинга, которые могут существенно снижать производительность программы.
447 2495131
>>495124
Понятно. Ну раз вы тут такие умные, может ответите наконец на простой вопрос? >>495094 Он уж поважнее этих охуительных потерь на прозрачной запаковке в интерпретируемом языке.
448 2495134
>>495131
Язык компилируемый! Причём первый раз из исходников в байт-код, а потом из байт-кода в нативный код процессора.
449 2495136
>>495134

>Язык компилируемый


Хорошо. А что с формализацией зависимостей между разделяемыми библиотеками? >>495094
450 2495139
>>495136
Лес рук! Вам бы лишь бы на собеседованиях с умным ебалом ответы на вопросы угадать, а дальше хоть трава не расти, ебашите такой же говнокод как и все, только с претензией.
Уэсака Сумирэ в русском книжном магазине.webm19,1 Мб, webm,
1280x720, 1:23
451 2495143
>>495108
Если книг читать не будешь - скоро грамоту забудешь! (с) Уесака Сумире, японская писечка
452 2495181
Ты о чем?
453 2495203
Почему в вижле ставишь темную тему, но окно с настройками всё равно светлое?
454 2495242
Как в WPF кинуть в свойство экземпляр объекта?

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

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

А какой Path, если я не хочу биндить свойство, я хочу биндить экземпляр целиком?
455 2495247
>>495242
Path=. в таких случаях
456 2495254
>>495247
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')
457 2495255
>>495247
>>495254
Каждый раз пишется DataItem=null
2022-10-2216-29-19.png9 Кб, 715x264
458 2495332
Чет не заводится никак.

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

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

Собсно в XAML я пытался передать экземпляр на фреймы, но без толку.
Причем во второй вариант с RelativeSource не выдает ошибки, но все равно свойство остается пустым.
459 2495336
>>489242
Вкатуны скорее нахуй никому не нужны. Будут брать мидлов-синьйоров. Всех остальных нахуй
460 2495349
>>495336
У меня дногруппник вкатился на джаву в сбер на прошлой неделе единственный из группы пока нашел работу
461 2495354
>>495332
Попробуй {Binding ,ElementName=ModsPanelInserted}
462 2495362
>>495354
Первым делом так сделал.
463 2495369
>>495332
Так ты свойству, которое grid принимает передаешь frame.
464 2495376
>>495369
Не, не, сейчас фрейм. Актуально то, что в этом посте >>495332 .В ошибке пишется, что не найден источник. Иначе бы ругался на неудачную попытку каста.

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')
465 2495384
>>495376
Покажи код dp
2022-10-2217-18-16.png29 Кб, 1003x573
466 2495400
467 2495415
>>495254
Ну не знает он где этот элемент mygrid в дернве
468 2495417
>>495400
Во первых не RegisterAttached, а просто Register, во вторых класс должен быть унаследован от UIElement, в третьих геттер и сеттер должны выглядеть так:
public Frame InsertedFrame{
get => (Frame)GetValue(InsertedFrameProperty);
set => SetValue(InsertedFrameProperty, value);
}
469 2495445
>>495349
Вполне логично. Шанс вката в джаву почти в 2 раза выше, чем в сишарп. Там и вакансий больше и конкурентов меньше.
sage 470 2495503
Вопрос, скорее не по шарпу, а по РУЧКАМ. Вот пишу я двач, сделал удаление постов /api/posts/delete, а сделал баны /api/bans/create. А теперь мне нужна функция удалить+забанить, как поступить? Новый контроллер с эндпоинтом вида /api/mod/deleteAndBan или добавить в параметры удаления поста флаг AlsoBan?
471 2495510
>>495503
Модифицируй удаление поста с необязательным аргументом bool ban. Почему так? Нет смысла банить без удаления поста. Нет смысла держать отдельный ендпоинт для банов, какой в этом практический смысл? Если ты банишь кого-то, значит его пост который нарушает правила сайта (не просто же так бан выдали, да мочух?) должен быть удален.
472 2495513
>>495503
Урлы - это ресурсы, а не действия, в них не должно быть глаголов. Нет сущности "delete". Должна быть ручка DELETE /api/posts/post_id, куда может передаваться флаг ban, про него правильно всё сказали.
473 2495521
>>495513
Двачаю, еще парашу в виде 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
474 2495534
>>495510

>ендпоинт для банов, какой в этом практический смысл?


Ну бан можно отменить, можно просматривать баны по каким-то критериям.

>Нет смысла банить без удаления поста


Я тоже так думаю. Но есть но, а вдруг админ захочет забанить айпи/подсеть просто так (ну там торы хуйоры, страна не та и т.д.)
>>495513

> в них не должно быть глаголов.


А это всегда так или для рест-сектантов? А то вот, апи вк полон глаголов, например. Но я там в урлах delete написал для наглядности, у меня то в коде все лк ага, как же
475 2495548
>>495534

> А это всегда так или для рест-сектантов?


Для рест-сектантов, конечно же. У нормальных людей эндпоинты типа POST /api/posts/deletePostById, всё через POST, везде глаголы, никакого GET, в ответе всегда 200 OK и код ошибки в теле ответа.
Capture.JPG69 Кб, 1565x650
476 2495550
шарпач, надеюсь не слишком сумбурно, посоветуй как минимизировать теребоньканье желтых методов, но всегда использовать последние обновленные данные и если поменялись то вызывать execute. красный метод дергается раз в фиксированное время, но голубенькие могут прилететь в любой момент. может их стоит на эвент повесить? но что будет если красный метод притащит новые models уже после того как эвент отработал?
477 2495552
>>495548
пик
>>495521

>[ProduceResponseType]


Можешь пояснить, а то мне лень гуглить? Это в рантайме проверяет что вернут метод? И что будет, если я верну например 301, который не указан в аттрибуте? Или это только для сваггера?
index.jpg8 Кб, 225x225
478 2495553
>>495552
вот пик
479 2495615
>>495552

>сваггера


Да
480 2495811
>>495513

>Нет сущности "delete". Должна быть ручка DELETE /api/posts/post_id


Вот посмотрел на свой говнокод еще раз и у меня есть
/api/threads/pin /api/threads/lock etc
получается я должен это переделать на
[PATCH] /api/threads/{id}
и получается в body гнать на сервер все значения полей для треда, включая текстовые? А если это сущность, где много текстовых полей, гнать это все на сервер ради обновления одного флага (хуита). Проверять на нулл в модели? А если налл валидное значение? Так много вопросов и нихуя не понятно. А все статьи в тырнете описывают только простейшие случаи, где никаких проблем офк нет.
481 2495830
>>495553
Уж как знать. Это называется удалённым вызовом процедур, используется много где и на соглашения restful совсем не похоже.
482 2495837
>>495811
Да, PATCH. Надо только решить эту проблему:

> Проверять на нулл в модели? А если налл валидное значение?


Для валидных значений можно передавать не null, а 0, пустую строку, пустой список и т.д. Так и отличать не заданное значение от не переданного. Это опять же простые случаи, в более сложных придётся выдумывать флаги для идентификации, что указанное поле передано. Да, сплошные костыли в этом ресте. Особенно если действие не вписывается в концепцию круда.
2022-10-2220-58-37.png23 Кб, 692x107
483 2495851
>>495417

> RegisterAttached


Исправил

> во вторых класс должен быть унаследован от UIElement


Это Page, а она наследует UIElement (пикрил)

>третьих геттер и сеттер должны выглядеть так


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

Если присваивать через код, то норм работает. Похоже биндить можно только свойства, но не экземпляр класса целиком.
484 2495861
>>495550
Опиши задачу, возможно стоит отказаться вообще от этого
485 2495864
>>495851

>Похоже биндить можно только свойства, но не экземпляр класса целиком.


Хз, ща от нехуй делать потестил, всё биндится.
мимо другой анон
486 2495865
>>495837

>Для валидных значений можно передавать не null


В этом нет смысла, значения должны быть nullable обязательно. Параметры которые являются обязательными помечаются в моделях как [Required]
487 2495903
>>495864
И что я делаю не так?
Исходник https://dropmefiles.com/ZkPGK
488 2495906
>>495903
Не качайте. Уродский дропмифайлс положил архив в архив, запаролил, а пошатал всю структуру файлов .

Другая ссылка https://transfiles.ru/6ibm4
489 2495916
Знаю норм жабу и шарпы, збс крудошлёпаю что на спринге что на асп, куда мне вкатываться, анон?
490 2495920
>>495916
Вот ты спросил это здесь, но не в треде про жабу. Значит, шарп тебе ближе.
image.png11 Кб, 661x107
491 2495923
>>495906
Вот такую ебалу написал, и прокнул OnChanged, приехал туда грид
492 2495945
>>495923
Фуух, спасибо! Завелось.
А почему работает только с 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')

Приходится каждый раз делать каст. Ну тут я попробую разобраться сам. Еще раз спасибо.
493 2495957
>>495861
я нашел как мне кажется охуенное решение:
1. сделал энум флаги
2. каждый тик флаги проверяются:
if ((state & flagname) == flagname)
3. если да то выполняется какой-либо из этапов обновления кешей и целевой метод
флаги моделей выставляются тоже каждый тик если обновились
а флаги из гуя нанизываются |= flagname по эвенту
после выполнения целевого метода флаг сбрасывается
таким образом каждый тик в теории у меня самые последние данные, а если им не надо обновляться то и не надо...
2022-10-2302-59-58.png28 Кб, 1109x159
494 2495986
>>495945
Сука как же меня бесит этот впф. Самое нелогичное говно во вселенной. Я кодом мог написать две строки сутки назад.

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

Я уже тупо перебрал все ключевые слова и комбинации.
495 2495993
>>495986
Так юзай WinForms, они простые и логичные.
496 2496021
Что с VS? Просто не устанавливается
497 2496029
>>495993

>Нет ног — нет проблем

Image 1.png5 Кб, 901x102
498 2496051
>>495986
хз че там у тебя. слепил кастомный проперти для контрола и попробовал аналогично - проперти получает родительскую кнопку
499 2496074
>>496051
Заверни во Frame
2022-10-2311-45-36.png22 Кб, 1452x158
500 2496084
>>496051
Хз что за магия.
https://transfiles.ru/sthr6
Безымянный.png189 Кб, 1920x1050
501 2496086
Мне чет скучно.
Потому сейчас мы будем писать TCP-чатик.
От вас - предложения по тому как улучшить это дело.
502 2496102
>>496021
ВПН включи
503 2496104
>>496021
У меня он еще попытками связаться с сервером грузит проц на 40%
504 2496106
>>496086
А потом тебя всем тредом чятить?
505 2496108
>>496074
с Frame не работает. Ну и плюнь на него.
Используй DataContext (тру) или проксиобъект сделай (неплохо, но не тру в данном случае).

Ну и вот тебе еще в копилку решений
https://pastebin.com/VPtVBst0
в данном случае не работает ибо видит выше родителя, но работает если нужно биндить всякие меню и прочую хрень что не найти в дереве.
506 2496123
>>496106
Не знаю.

Блин. Чет не могу придумать формат сообщения.
Пока что придумал "[clientId] message" Но эт какая-то херня. Надо нормальный формат в духе: [len][headers][body]. Но чет не знаю я. Ды.
507 2496124
>>496123
Признайся. ты просто хвастаешься темой в студии. А на формат сообщений тебе пох.
508 2496125
>>496124
Не.
Я могу на дефолтную поменять.
Я ж сразу сказал. Мне - скучно. Хочу чатик нахуячить. И думал скучающие аноны - посмотрят,за полетом моей фантазии и будут чет там советовать. Типа да. Укажут, где я говнокодю.
509 2496126
>>496124
>>496125
Ну. Т.е. чтобы я не сразу вывалил там охуевшую хуйню на 100500к строк, и никто бы не стал разбираться. А по частям.
510 2496129
>>496108

>с Frame не работает. Ну и плюнь на него.


У меня во фреймы загружается страница, а их может содержать вроде только Frame и NavigationWindow.

>DataContext


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

Или нужен какой-то промежуточный класс, свойства которого связываются с Фреймами. А затем Страница свзязывается со свойствами класса?
511 2496135
>>496129
Зачем тебе обязательно страница то? Используй юзер контрол место неё да и всё
512 2496161
>>496129

>У меня во фреймы загружается страница


хз. никогда не использовал 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/
только в твоем случае холдер ссылки.

Но проще атачед сделать прокидывающий фрейм странице..
...но лично я вообще хз зачем странице знать про родителя вообще, а уж тем более про то, что это фрейм. Это неправильный подход в принципе.
513 2496209
>>496135
>>496161
Страница позволяет вынести группу элементов, как будто это отдельное окно — со своим XAML-дизайнером. Это позволяет стакать окна, как сделано в вижуал студии, к примеру. Да и вообще удобно.

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

>>496135

>Используй юзер контрол


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

Сидит дед, во сто шуб одет. Ответ: WPF-кнопка
514 2496218
>>496209

> как будто это отдельное окно — со своим XAML-дизайнером


>Это позволяет стакать окна, как сделано в вижуал студии


не понимаю. покажи пример.
515 2496222
>>496161

>но лично я вообще хз зачем странице знать про родителя вообще


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

Короче, реализация как в вижуал студии, когда пользователь может объединить два окна в одно. Только там посложнее структура, а не просто стак.
516 2496233
>>496222

>когда пользователь может объединить два окна в одно


типа такого что ли?
https://github.com/Dirkster99/AvalonDock
517 2496237
>>496218
Ну смотри. Ты мог бы сделать как пикрил 1 — окно, которое визуально разбито на два блока.

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

Главное, что каждый блок живет своей жизнью.
518 2496241
>>496233
Да, оно.
519 2496243
>>496237
Тебе для этого не нужна страница, тебе нужен юзер контрол ещё раз тебе говорю
520 2496251
>>496222
>>496237

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



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

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

Если можно все решить на уровне вьюмоделей и не лезть в code-behind то я так и делаю.
521 2496259
>>496243
>>496251
Я не знал про юзер контролы. Я думал речь идет о классе, наследующем какой нибудь грид.
Спасибо, теперь понял.
522 2496266
>>496243
>>496251
У юзер контролов даже превью есть, какая годнота.
Содержимое фреймов не видно в дизайнере.
Моя жизнь больше не будет прежней.
523 2496287
>>484368 (OP)
Кроме юнити что ещё можно пилить?
524 2496441
>>496419 (Del)
А ведь выше по треду уже говорилось про вечное "на завтра операция "
525 2496443
>>496266
А чего ему не быть. Юзер контрол это обычный контрол
Как та же кнопка только без поведения и дефольного шаблона
Это Page особый
526 2496450
>>496447 (Del)
Тогда там было написано на пятницу
А еще за день до этого на четверг
527 2496532
>>496524 (Del)
Кому ты лечишь
Вот еще мой пост сохранился >>493006
528 2496638
как вкатиться в data oriented design?
529 2496665
>>496638
Как засунуть жирафа в холодильник?
530 2496708
У всех сейчас без впн студия не обновляется? Пытался скачать пакетов, висит вечная проверка обновлений.
531 2496723
>>496708
У меня пока обновляется, проверил только что.
532 2496739
>>496723
Ты впн используешь?
533 2496747
>>496739
Нет.
534 2496771
>>496123
Как называется болезнь, когда маркируется табуляция?
535 2496790
>>496771
то есть русская студия
анимешная тема (при этом справа нет баров чтобы не закрывать рисунок)
тебя не смущают )
536 2496796
>>496771
Называется "предпочтения".
537 2496857
>>496796
У Ганнибала Лектора тоже были "предпочтения".
538 2496858
>>496790
Все это меркнет перед шумом из точек.
539 2496887
>>496857
Ещё Гитлера приведи в пример. Настройки в студии не убивают людей.
540 2497015
Пилю движок для вн, надо добавить возможность портировать под мобилки и декстоп. Можно ли это сделать с помощью юнити? Типа машинно правишь шарп скрипты а потом через консоль билдишь например под ведро? Или лучше мауи? Реакт натив сойдет?
541 2497028
>>497015
Моногейм возьми
542 2497059
>>497015

> движок для вн


> с помощью юнити


> Или лучше мауи


Годот.
543 2497091
>>497015
Годот попробуй.
Там можно настроить билд на разные платформы через консоль парой команд.
Я пару лет назад как-то делал. Собрал батник, который командовал годоту сборку релизов под нужные мне платформы (андроид, веб и винда), а потом через батлер сразу деплой всего этого на itch.io. И грубо говоря у меня с нажатия одной кнопки сразу релиз обновлялся на сайте.
Сейчас правда я все это забросил.
В годоте еще и нормальный шарп встроен, в отличие от того огрызка в юнити. Плюс если есть навыки можно пересобрать сам движок, выкинув оттуда все лишнее (например 3Д если оно не нужно) и получить относиетльно легковесные поделк (но тут уже знание плюсов нужно или нужных людей)
image.png27 Кб, 643x169
544 2497168
Ребят, как в PostrgreSQL передать json данные? Использую npgsql.
image.png27 Кб, 643x169
545 2497169
Ребят, как в PostrgreSQL передать json данные? Использую npgsql.
546 2497170
Ого, а капча-то валидна оказалась.
547 2497179
>>497170
Лол.
Capture.JPG98 Кб, 1135x912
548 2497348
>>495957
какую-то хуйню я нагородил в общем. ночью это казалось охуенным решением
есть ли способ похитрее сделать?
я не могу отойти от необходимости теребонькать WeightChangePolling() и соответственно весь метод каждые N секунд
549 2497372
>>497348
Анон, ты флаговый enum написал довольно тупо.
1)Он используют байтовую маску, поэтому любое значение с 0 будет считаться активным всегда (то есть 6 он будет воспринимать как 0 + 2 + 4)
Capture.JPG47 Кб, 700x620
550 2497399
>>497372
я тупенький и не очень разбираюсь, про флаги и байтовые операции узнал только вчера. как правильнее сделать?
алсо вот что сделал. насколько это ГРЯЗЬ?
протестировал, вроде бы значение с 0 воспринимает правильно и выполняет нужный метод при нужном значении
551 2497409
>>497399
Полный капец. Тебя уволить и не брать даже на завод.
552 2497411
Как адекватно переименовывать WPF классы, типа Windows или UserControl? Как только переименовываю, все летит к чертям, у студии крыша едет.

Приходится создавать новый файл, с новым именем класса и копипастить код туда.
553 2497417
>>497409
хорошо, полный капец. можешь объяснить почему?
я не работаю программистом, это хобби.
554 2497427
>>497399
1) Флаговый енам можно начать со значения 1 << 0 - он будет равен единице
2) Название класса должно быть с большой буквы.
3) Метод InitMethods - не нужен, все это в конструктор. Плюс он у тебя даже не сработает, т.к. actions - readonly
4) Переменная actions должна называться _actions
5) Использовать флаговый енам в качестве ключа словаря в таком виде - ебанизм. Во первых ты не все варианты учел (например Method1+Method2 и т.д.) и при выпадении словишь исключение. Во вторых если у тебя вариантов станет побольше ты заебешься прописывать все варианты.
555 2497441
Ананасы, накидайте актуальной литературы по C#. Как Рихтер только для новых версий языка.
556 2497454
>>497441
Шапку читай
557 2497458
>>497417
я код не смотрел. просто демотивирую.

а теперь посмотрел.
хз че он делает, но зачем кастовать к инту енумы хз. Их можно использовать прямо как ключи у словаря
А еще можно унаследовать енум от байта и экономить.
558 2497467
>>497427
спасибо за развернутый ответ
1. не знал про это но читал что флаговые энамы вроде бы требуют None = 0
2, 4. класс тестовый я чисто проверить возможность но да я насвинячил
3. всмысле не сработает? я же запустил этот код, все сработало и заполнило даже с ридонли.
5. это да, я затуп
но у меня будет только три варианта твердо и четко, больше не будет
и тут подумал а зачем мне вообще флаги и вот это вот все добавление?
я хочу сделать такую вещь.
у меня только три метода которые я хочу вызывать в определенном порядке:
метод 1 => метод 2 => метод 3 если данные для метода 1 изменились
метод 2 => метод 3 если данные для метода 2 изменились, но данные для метода 1 в порядке
и метод 3 если данные для метода 3 изменились, но все остальное нет.
>>497458
я где-то прочитал что энумы оптимизированы под инт, а если использовать как ключ энум то там вроде бы получается объект вместо инта который внутри в инт, но я не уверен, я хотел чисто инт сравнивать
559 2497472
>>497467
ну словарю на тим плевать - он все равно вызовет GetHashCode и потом сравнивать будет.
А енумы внутри себя имеют кучу переборов "is int32/byte/double"

Вообще магические структуры.
560 2497546
Блять, я нихуя не понимаю. Просто ни Ху я, ну ладно чуть-чуть понимаю. Почему код стал таким "другим". Нет я встречал и использовал интерфейсы(нямка), делегаты и прочая, но когда попал на работу и увидел кодище, то просто ахуеваю. Как будто три года изучения канули в лету и пиздец. Я тут за ночь могу написать дипломный проект, что рук охуеет, но тут это какой-то ужас
16382812100460.jpg42 Кб, 548x634
561 2497558
Я вот не совсем понимаю как работать с потоками и тасками. В каком случает таска создает поток, а в каком нет. Блин. Может кто-то подсказать?
562 2497560
>>495083
>>495085
>>495093
Нихуя не понял, а что там не так? Условие - если значение больше 5 и четное, по моему все просто.
563 2497565
>>497560

>если значение больше 5 и четное, по моему все просто


значение говоришь )
там вывод - 4
4 больше 5?

ты, прав, ты

>Нихуя не понял

564 2497567
>>497558
ни в каком не создает. таска это "десктриптор задачи". аналогичен CancellationToken по сути.
566 2497597
Поддерживает ли сишарп ковариантность и контрвариантность обощенных типов?
567 2497598
>>497597
Ты про out T и in T?
568 2497634
>>497598
Допусти есть классы:
class A { }
class B : A { }

Можно ли сделать так?
List<A> a = new List<B>();
или наоборот
List<B> b = new List<A>();
569 2497925
>>497567
Если это так, то почему иногда когда я из таски обращаюсь к основному потоку, то он сыпет экспешный о том, что низя из другого потока к мейн потоку обращаться.
Когда писал бэкэнды, с этим проблем не было. А когда писал клиентские приложения, то орал.
570 2497955
>>497925
я это 3 треда назад пояснял.
потому что у тебя в голове перемешались понятия

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

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

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

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

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

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

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

Task.Factory.StartNew/Task.Run - несмотря на класс Task - тупо хелперы для запихивания задач в тредпул/свой поток (ну чтобы все было красиво и ты не работал напрямую с тредпулом, что неудобно)
571 2498030
Есть тут мастера работы с EFCore+Npgsql?

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

Проблема, как я понимаю, в том, что коннект привязывается к потоку в котором создан. А т.к. всюду асинхронщина и ConfigureAwait(false) - выходит так, что выполнение работы с сессией клиента - по потокам прыгает.
Почему так думаю? Потому что чтобы воспроизвести проблему - достаточно создать 110 тредов и в них контекст создать - сразу счетчик подключений в pgAdmin - скакнул, а потом оно Idle. И из других мест не подключиться.
Собственно. Че делать-то?
Вроде как PgSQL - хороший-годный. Я - дебил, что не следил за потоками и вот так вот скакал, чтобы ничего не простаивало. Но блин. Да.
572 2498195
>>497955
Спасибо
16496137496602.png675 Кб, 600x600
573 2498279
Господа програмистеры, есть вопрос. Только что закончил изучать ООП. Я теперь могу претендовать на должность стажера/джуна?Если нет, то что мне в какую тему мне следует углубляться дальше? Алсо, планирую работать в бэкэнде.
574 2498304
>>498279
Циклы и массивы изучил?
575 2498305
>>498304
Нет. А шо це таке?
576 2498315
Какие вакухи вообще существуют на .net? Кроме asp.net.
577 2498337
>>498315
Делать игоры на юнити
578 2498347
>>498279

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


Нет. Джуниор - это младший специалист.
Читай >>484369
Со всем, что там написано в 8 пункте необходимо быть знакомым просто, этого достаточно
579 2498588
>>498315

>Кроме asp.net


А зачем нужно что-то еще?
580 2498831
581 2498852
>>498588
очевидно же чтобы было больше шансов.
583 2499158
>>499088
Это старое
>>498831
Кину файлик попробую скоро
585 2499214
>>499158

>Это старое


Комментарии читай, там новое.
587 2499240
Как запустить csc в интерактивном режиме?
image.png71 Кб, 616x771
588 2499266
Аноны, проясните плс следующий момент.
Зачем в 26 строке создается объект базового класса с конструктором дочернего? Он же все равно не будет иметь весь функционал. Не легче создать объект дочернего?
589 2499274
Господа, а где можно порешать задачки на закрепление материала? Глянул два самых популярных варианта - один сайт от телеграмма забыл как называется - 90% какая-то хуета на циклы, найти что-то на конкретную тему на грани фантастики. Второй же это кодварс, но в нем нихуя не смог разобраться, у меня английский совсем нулевый. Есть еще какие-то варианты?
590 2499338
>>499214
Новое, но на английском, не? А у меня на русском
591 2499362
>>499266
Создается объект дочернего класса и приводится к базовому
нахера? Ну может показывают что так можно. Для примера по полиморфизму кода не хватает.
592 2499399
>>499266
Почитай книжку "Философия Java" Брюса Эккеля. Там всё подробно разжёвано про ООП.
593 2499555
Зачем в шестом асп.нет перелопатили стандартный шаблон и убрали класс startup?
594 2499647
>>499555
а зачем они сделали main без функции main?
для кого это все.
595 2499755
>>499555
Затем чтобы отсеивать долбоебов, которые до сих пор начинают проекты со стандартных шаблонов.
596 2499815
>>499755
аргумент уровня /b, но никак не /pr
597 2499846
Аноны. Возникла проблема, не то чтобы нерешаемая, скорее решение через всякие жопы.

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

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

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

Короче, я не знаю как естественным образом взять максимальную высоту UserControl, если этот контрол может быть "сжат" гридом. И таких UserControl-ов будет 10500 и я не хотел бы в каждой прописывать новое свойство, добавлять подписки на события (даже если это будет абстрактный класс).
598 2499852
>>499510 (Del)

>Если ООП, то вот тебе задача:


>Есть openweather API


Дядь, какой нахуй апи? Я пока только полиморфизм начал осваивать.
599 2499854
>>499852
Тогда какие тебе задачки нужны?
600 2499857
>>499852
Сила ООП не в 3х китах, а в гибкости, которое оно дает. Ты формируешь рабочий граф и все начинает работать, инкапсулируется, SOLID-ируется, сообщения бегают. В общем это нужно мозг форматировать чтобы ООП начать использовать по делу, а не просто так.

я очень давно не читал книг, поэтому посоветую старое -
дуй читать про паттерны, только не GoF, а что то типа Thinking about patterns (и похер что там жава), а потом вроде бы "Джошуа Кериевски: Рефакторинг с использованием шаблонов"(название вроде то, но год смущает) не сильно прорабатывая
(сам то я ее не дочитал, когда понял суть)
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");
}

Не является ли то, что я тут написал, антипаттерном? Возможно, кто-то уже такое придумал?
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");
}

Не является ли то, что я тут написал, антипаттерном? Возможно, кто-то уже такое придумал?
602 2499917
>>499510 (Del)
Что такое кричать во View с точки зрения микросервиса?
603 2499933
>>499846
Кажись разобрался. В попыте канвас, в канвасе юзер контрол. И все трое биндят ширину к нужному объекту. Или двое — попыт сам растянется.
604 2499946
>>499917
Ты о чем? Микросервисы ничего о вьюшках не знают.
605 2499964
>>499915

>Не является ли то, что я тут написал, антипаттерном?


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

>Возможно, кто-то уже такое придумал?


В DI контейнерах даже под это дело специальные механизмы есть, когда ты запихиваешь в контейнер кучу реализаций одного интерфейса, а потом при внедрении получаешь словарь на них и выбираешь нужный.
Поздравляю с изобретением велосипеда. Без сарказма.
606 2499977
>>499946

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



Не понял этот момент, кто кричать должен?
607 2499983
>>499917
вебсокеты же или другие постоянные коннекты.
608 2500028
посоны проясните моменты некоторые по неймспейсам и ассембли
вопрос 1:
есть dll #1. в нем статический класс со статическими методами и т.д., к нему обращаются изнутри, все туда-сюда
есть dll #2. с тем же статическим классом.
что будет когда два dll встретятся в одном ассембли?
два разных но одинаковых во всем кроме неймспейса статиков будет?
как поступать в таком случае если я не знаю заранее будут ли две дллки в одной ассембли?
вопрос 2(практически то же самое):
вот я хочу подключить сторонний код к своей хреноте №1. я ее хочу смерджить в один длл со своей хренотой №1. что будет если смердженный код встретится в одном ассембли с собой же но не смердженным(отдельный длл)?
и что будет если хренота №1 с этой либой встретится с хренотой №2 с тем же кодом и тем же неймспейсом?
как такие вещи вообще решаются? и надо ли
609 2500080
>>500028
А ты проведи эксперимент. Сделай простые dll-ки по типу тех, что в твоем вопросе описаны и попробуй их объединить. Потом пацанам расскажешь, что получилось.
610 2500122
>>499362

>Ну может показывают что так можно


В этом есть какой-то практический смысл?
611 2500140
>>500122
Хз. Может демогстрация неявного каста и возможность присвоения экземпляра дочернего класса переменной базового. Больше код ничего не демонстрирует
612 2500259
>>484368 (OP)
Можно ли вывести "автоматом" на консоль все имеющиеся переменные?
613 2500278
>>500259
var variablesClass = new VariablesClass();
var allPublicFields = variablesClass .GetType(). GetFields(BindingFlags.Public | BindingFlags.Instance);
Как-то так.
614 2500340
>>500278

>There is no argument given that corresponds to the required formal parameter 'classname' of 'Program.Warrior.Warrior(string, string, string, string, string)'

615 2500345
Блять, как сериализовать класс в xml, а потом в строку минуя ебучий Stream? Хочу лист с классом Valute сериализовать в xml строку, но нужно обязательно создавать ебучий файл, а мне он не нужен. Как быть? Подскажите, пожалуйста.
616 2500381
Есть грид с четырьмя строками.
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="20/>
<RowDefinition Height="*" MinHeight="150"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
</Grid>


Одна из строк имеет адаптивную высоту с ограничением минимума = 150.
Как ограничить основное окно, чтобы оно не сжималось меньше, чем так сказать, результирующий минимум грида с учетом всех строк?
617 2500454
Сап, аноны. Пилю свой пет-проджект, хочу один модуль из него разместить на гитхабе, чтобы пользователи могли докинуть фич, если им надо будет. Как подобное принято интегрировать в основной код? Публиковать в Nuget наверное не стоит, раз этот модуль только в моём проекте может использоваться?
618 2500469
>>500345
А зачем создавать файл? MemoryStream для кого придумали?
619 2500470
>>500381
выстави окну же MinHeight
20+20+150+20
620 2500473
>>500454

>Как подобное принято интегрировать в основной код?


с высказыванием нехороших слов о авторе.
Это ведь не пхп/питоны всякие где можно вот так в продакшене забирать с гитхаба. Тут компилить нужно и с этим часто проблемы.
621 2500522
>>500470
Самое очевидное, это при событии окна SizeChanged, чекать все ячейки грида. Это я и так знаю, я думал есть что-то более вменяемое.
622 2500564
>>500522
зачем. Если ты знаешь минимальную высоту таблицы то можно выставить лимит окна и ничего не чекать.
623 2500583
>>500564
Я не могу знать. Некоторые ячейки могут поменять свойства в процессе, поэтому я не могу где-то единожды вычислить значение. При этом расчеты в риалтайме при SizeChanged слишком затратны, если ячеек будет 100500.

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

А вручную указывать, мол, "здесь возьми MinHeight, а здесь ActualHeight" — это какой-то бред.
624 2500593
>>500583
вообще не понимаю причем тут ячейки. Есть размер таблицы, можно следить за его SizeChanged, можно за SizeChanged окна - одинаково будет. Лучше за SizeChanged таблицы и выставлять MinHeight окна
изображение.png44 Кб, 486x418
625 2500599
>>500345
решение
626 2500631
>>500599
я в ахуе, запустил этот же пример,но чуть позже - уже ничего не работает АХАХХАХАХААХАХХХАХААХ
изображение.png109 Кб, 1561x543
627 2500655
Подскажите, пожалуйста, что делать. Из класса сереализуется только IsSelect, всё остальное не сереализуется....
изображение.png122 Кб, 1562x534
628 2500665
>>500655
А нужно было всего-то добавить set везде
629 2500670
>>500655
>>500665
Пиздец. Я две недели потратил, чтобы как-то передавать информацию по именованным каналам, а оказывается есть сереализация.

И насколько она затратна?
630 2500691
Как по названию различать классы и методы и свойства?
631 2500793
>>500670
Твое как-то и есть сериализация. Ничего в этом плохого

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

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

Затратность штука "придется замерять"
Но если не нужно суперхайперфоманс то общих решений хватает с головой
Выбор из них это уже холивары
632 2500794
>>500691
Никак. Они определяются по контексту
633 2500822
Как в темплейтах WPF одному цвету присвоить значение другого цвета?

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

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

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

Разве нет никакой инкапсуляции в XAML? Это уже второй вопрос.
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.
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.
Стикер255 Кб, 512x512
635 2500857
>>500822
Какая же ебанина... Либо я чего-то не знаю.
Вот есть практика, что перед стилями выводится список цветов\кистей, чтобы каждый раз не лазить по стилям. Любой стиль в MDSN так представлен.

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

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

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

Так что учи git submodule.
637 2500869
>>500857
дык в этом и есть смысл - можно переопределить лишь часть, остальное унаследуется.

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

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

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

В остальном ...ну да в WPF с этим неудобно сделали.
Но не потому что можно переопределить, а потому что херово как раз с наследованием. Его нужно задавать явно.
638 2500892
>>500869
Объясни тогда, какова практика работы?

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

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

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

Что Пете Клюшкину теперь делать? Переименовывать все совпадающие ключи, о совпадениях которых студия тебе не расскажет? Ты вообще в другом отделе. Ты не можешь просто переименовать ключи, ты должен перелопатить весь стиль.
ЭТО ПИЗДЕЦ. Я не знаю как донести важность инкапсуляции. Даже в одиночном проекте я могу через месяц забыть, что под каким-то ключом уже есть стиль и не понимать шо вообще произошло.
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 мгновенно ругается, что не может найти ресурс с таким ключом.
640 2500914

>TreeView не умеет в мультиселект


Бляя...
641 2500916
>>500892
Хз.
Ты как то пытаешься усидеть на всех стульях
И глобальный словарь чтобы кто угодно мог перегружать
И хочешь запретить перегружать

Словари это как бы глобально
ОСОБАЯ кнопка и ГЛОБАЛЬНОСТЬ вместе не живут
642 2500922
>>500914
Решается как обычно - перегрузкой портянки шаблона со своими шлюхами
Бесит
643 2500924
>>500916
Ок, а как поступить? Вот возьмем любой пример стиля с MDSN, он выглядит как пикрилы >>500892
Куда их пихать, чтобы юзать стиль?
644 2500928
>>500922
Непонятно как в 2к22 не иметь мультиселект для тривью. Вроде даже в WinForm была галочка.
645 2500929
>>500928
впф заброшен очень давно. там дохера косяков которые никто не чинит
и не делает нужных вещей вида диалога выбора файла
646 2500931
как быть, если у меня есть объект с переменными-настройками, и их очень много?
я сейчас скрыл их в абстракт классе и наследую от него но все равно получается слишком дохуя
может быть имеет смысл выделить все настройки в отдельный класс-настройку?
647 2500932
>>500924
ну такие стили позволяют в ресурсах переопределить кисть допустим.
И в ресуре задается тема всего приложения.

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

Хз как иначе. при интеграции словарей они же мержатся и в итоге работаешь с одним большим словарем и никак не сделать разделение если ключи совпадают.
648 2500933
>>500931
Ну группируй настройки. Далее проблемы только хранения чтобы можно было хранить эту структуру....ну где ты там ее хранишь.

Посмотри на appsetings.json в том же асп.нет - там же иерархия которую можно читать и прямо по строкам или же забиндить на граф объектов (будет аналог десериализации из жсон, только без конвертеров)
Capture.JPG10 Кб, 567x223
649 2500939
>>500933
группировать в смысле в объект, так?
у меня они все (сейчас 10, я потом еще хочу дополнительные добавлять для большего контроля) вот как на пике под копирку
650 2500940
>>500932

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


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

Я просто не понимаю как столько лет существует впф и ни у кого нет на эту тему вопросов. Может есть какой-то способ. Допустим я хочу хранить все свои кисти в Dictionary >>500900 , меня и такой подход более чем устроит, но чет не получается оттуда вытащить.
651 2500947
>>500939
ты неправильно ставишь вопрос
сначала ты решаешь как будешь хранить, раз уж ты хочешь не только читать как вот в асп.нетах всяких. Ты хочешь редактировать и сохранять. А значит должен выбрать как ты это будешь делать
А потом уже смотреть что может предложить тебе выбранная система конфигурации.
652 2500955
>>500947
система хранения такая - из настроек собирается xml, упаковывается в файл на диске а потом при нужде разворачивается.
653 2500960
>>500940
ну если не вдумываться что ты можешь
1 ты можешь создать общий стиль на который ссылаться через BaseOn и там наплодить в ресурсах кучу кистей
2 ты можешь просто сделать свой класс MyDynamicResource который есть MarkupExtension и он тебе достанет откуда нужно. А стандартный DynamicResource ищет просто по ключу и про твой словарь знать не знает
3 по идее можно юзать тупо биндинг. Есть объект, у него данные - ну так просто биндинг - уж он то в отличие от Static/DynamicResource ищет как тебе нужно.
Правда тут нужно будет искать по имени, а оно ж может быть хер знает где определено. (хотя можно и по типу поискать)
654 2500966
>>500955
У тебя ридонди конфиг
Нафиг тебе хмл
Да и даже если он - он тоже десереализуется в граф классов

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

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

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

Велик не значит плохо работает
Это просто значит что левый человек сразу не будет знать где что в коде
655 2501029
>>500966

>Нафиг тебе хмл


система сериализации в конкретно моем случае принимает только хмл. это не моя система если что и лезть внутрь и чето там менять я не собираюсь. сказано хмл значит хмл.
я вообще не про конфиги с вебами вопрос задавал, а как правильно организовать работу с раздувшимся от переменных классом.
656 2501034
>>501029
твой вопрос вообще изначально не очень понятен. Хз что значит асбтракт класс. Есть класс работы с конфигом. Это может быть класс "дай значение такого то ключа" или тупо граф DTO объектов.

И твое "очень много" я трактовал как "у меня 100000 полей в 1 классе"
Capture.JPG28 Кб, 627x508
657 2501049
>>501034
да, я хреново вопрос поставил
полностью выложить слишком много кода выходит в экран не влезет, но я что-то такое вот делаю примерно
я хочу завернуть все проперти с полями которые используют потомки ClassBase в отдельный класс и хотел узнать как это лучше всего сделать и может быть есть какой-нибудь паттерн на эту тему
suka.jpg23 Кб, 342x189
658 2501298
А эта хуйня разве не бесплатная? В чём смысл тогда ставить community?
659 2501318
>>501298
Бесплатная замануха, а потом плати!
660 2501324
>>501298
может у тебя проф версия стоит? я один раз так тоже лоханулся, пришлось перекачивать
661 2501327
>>501324
Сказали залогиниуться и пропадёт. Пришлось аккаунт делать в мелкософте. Но это всё равно не бесплатный софт получается, а подписка бесплатная на неопределенный период и непонятно что если я хочу на оффлайн компе аутировать
.
662 2501359
Здарова, подскажите как быть. В Wpf проекте имеется обсерваблколлектион привязанный к листвиев. Так вот при добавлении сразу несколькоих элементов в коллекцию интерфейс иногда подвисает, есть ли способы этого избежать?
2022-10-3011-23-51.png13 Кб, 702x119
663 2501370
А как в TreeView вот так добавляется контент, и он не заменяет собой основной, а идет как Items. Как подобное сделать при помощи UserControl?
664 2501432
Как же вы заебали своим десктопным калом
665 2501455
>>501359
Добавлять через асинк. Чекай как делают прогрессбар.
face-head.png105 Кб, 900x653
666 2501496
Охуительные истории вместе с WPF.
Решил я, значит, хоть как-то изолировать стили. Создал юзерконтрол, содержащий TreeView, и чтобы стилем для дерева не засирать все приложение, добавил стиль не в <Application.Resources/>, а в <UserControl.Resources/>.

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

Как только я добавляю стиль в глобальные ресурсы — все норм.
98371619680576.jpg70 Кб, 1000x600
667 2501500
>>501496
Ну а чего ты ожидал? Естественно родитель не видит стиль контента.
Добавляй в глобалку.
@
Ну а чего ты ожидал? Естественно стили будут перегружены, ведь у тебя все в глобалке.
668 2501514
>>501327
ну вот я уже второй год на оффлайндля студии компе аутирую, полет нормальный
669 2501602
>>501298
Это комьюнити версия?
670 2501633
>>501327
Хз, я несколько лет юзал комьюнити и лицензия не слетала. Сам мелкософтовский акк существует уже лет 5, на протяжении которого ставились студии.

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

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

Я не могу запихнуть внутрь контрола грид, потому что это не будет гридом по сути.
675 2501753
>>501734
>>501496
Нахуя вы это говно жрете. Я когда только увидел эту XAML парашу в первый раз, понял что мне с ней вообще не попути.
А потом постиг дзен, ASP.Net WebApi и вообще забыл о десктопе и фронте как о страшном сне.
676 2501759
>>501731
Можешь конечно
Но регистрация должна быть в разных классах
677 2501761
>>501753
Да всё нормально с xaml. Это везение если можно wpf кодить

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

Вали с работы и дай посидеть на твоем месте тем кому повезло меньше
А ты вот умный значит найдешь себе изи
2022-10-3100-47-00.png10 Кб, 527x408
678 2501766
>>501753
А шо если мне плагины делать нужно? Или как говорится, не стоит прогибаться под задачи, однажды они прогнутся под нас?
Алсо, основное отличие студенческой работы от реальной состоит в том, что в студенческой сначала выбирают технологию, а под нее придумывают задачу.

>>501759

>регистрация должна быть в разных классах


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

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

Или может есть какой-то способ как "вытянуть" свойство UserControl наружу? Ну к примеру пикрил. Я в темплейт добавил юзерконтрол "MyUserControl", у которого есть свойство "ButtonHeight". Такого свойства в TreeViewItem нет. Как мне его сделать доступным снаружи? Я очевидно начинаю колхозить свой класс с дублирующими именами свойств.
На Grid.Row не смотри.
679 2501784
>>501766
Показывать нужно как ты свойства создаешь

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

Ты что вообще сделать пытаешься?
680 2501790
>>501761

>Да всё нормально с xaml


Не-не. Хуйня это полная. Попытка перетащить уебищную фронтовую парадигму в нормальный язык. Даже долбаные js фреймворки вроде react'а в разы удобнее (хотя тоже дерьмом пахнут местами - и имя этому дерьму js)

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


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

>Вали с работы и дай посидеть на твоем месте тем кому повезло меньше


Вот только два месяца как поменял работу. Можешь занимать.
681 2501792
>>501766

>Или как говорится, не стоит прогибаться под задачи, однажды они прогнутся под нас?


А то. Дело бизнеса "Бабки платить и завалити ебало". А что с этими бабками делать мы сами решим.
682 2501797
683 2501798
>>501633
А "не поломанные" вообще не ставятся
684 2501799
>>501790

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



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

И нет реакт не лучше а просто другое.
Если не нужно перегружать шаблон контрола то норм в wpf. Перегрузка просто сильно многословная.
2022-10-3111-37-27.png11 Кб, 438x245
685 2501881
>>501784
Нужен TreeView. Но TreeViewItem должен быть со своим стилем, что-то на подобие слоя в фотошопе.

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

А вот как этот юзерконтрол превратить теперь в TreeViewItem — хз.
686 2501913
как конец строки обрезать? (например C:/Users/Abu/Downloads)
я реально не пынямаю, напишите плиз код
687 2501916
>>501913
при условии, что после Abu может быть, что угодно
688 2501919
>>501913

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

Для файлов (с расширением)
fileName = Path.GetFileName (path)
Для файлов (без расширения)
fileName = Path.GetFileNameWithoutExtension (path)
689 2501934
>>501913
Substring()
690 2501942
>>501799

>Шарп изначально десктопный язык


Десктоп и веб-хуйня несколько разные вещи. Инзачально там winforms был если чо. Ну и так-то это не часть языка если что, а отдельный фреймворк.
691 2501950
>>501942
язык и фреймворк это разные вещи. сравнил мягкое с теплым.
та же "веб-хуйня" это тоже фреймворк

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

Так что веб-направленность после появления кроссплатформы пришла в дотнет (не нужно стало моно), а десктоп направленность была всегда.
692 2501952
>>501881
ты опять даешь недостаточно информации. По скрину где тут вообще TreeView?

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

А так - ну опять же хз твоя проблема. У разных ItemControl при биндинге идет поиск DataTemplate и он сам обернет их в TreeViewItem/ListViewItem и как оно там еще.
693 2501968
>>501950
Так я и писал изначально, что WPF и его xaml - это подтягивание веб-хуйни с ее разметкой, стилями и т.д. в десктоп.
Может не так в изначальном посте выразился, но как-то так.
694 2501992
>>501968

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


вот только это бред

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

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

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

да и как бы гуи с разметкой и стилями - СЛИШКОМ ОБЩЕЕ понятие чтобы приписывать "из веб пришло".
695 2501996
>>501952

>По скрину где тут вообще TreeView?


Это TreeViewItem, а TreeView - пикрил 1.

>то что юзаешь дизайнер - похвально.


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

>У разных ItemControl при биндинге идет поиск DataTemplate и он сам обернет их в TreeViewItem/ListViewItem и как оно там еще.


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

Должен отметить, что в моем классе никак не указан ItemsPresenter и я не знаю как его обозначить. Соответственно разметка не знает куда пихать контент.
Если я попробую завернуть итемы в свой класс SubtoolItem, то идет попытка заменить контент самого SubtoolItem т.e. ContentPresenter. Собственно и вылезает ошибка:
XDG0040Свойство "Content" может быть задано только один раз.
696 2502006
>>501996
брр. давай начнем с
"почему ты не используешь HierarchicalDataTemplate, а городишь свой огород?"
тогда может смогу понять что ты пытаешься сделать
697 2502011
>>502006
Если я чет не использую, значит я об этом не знаю. Пошел гуглить.
Я знаю про TreeView, который юзает TreeViewItems, вот и пытаюсь своё как-то приклеить туда.
698 2502012
Сап, нужна оценка специалиста. Был на стажировке по Go, уволился из-за сво.
Сейчас нахожусь в польше, и хочу вкатиться в .net

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

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

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

Ещё вопрос, какой стек выбрать? Я думаю либо backend, либо full-stack, но не знаю что используют для фронта. Я когда-то только ангуляр и чистый жс пробовал и всё. Посоветуйте что-нибудь.
699 2502015
>>502011
прямое использование Item из хамл нужно только тогда, когда не используется биндинг списка. То есть при MVVM подходе крайне редко, почти никогда.

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

TreeView не исключение.
700 2502023
>>502015

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


Да я и не собирался — чисто для теста, и заметил, что у TreeViewItem содержимое работает иначе.
701 2502351
Начал я разбираться в этой.. чистой архитектуре. Возник вопрос. Вот у меня есть операции crud, но только для внутреннего пользования. То есть извне их никто вызвать не может. Я правильно понимаю, что мне под всё это нужно создавать контроллеры, репозитории и т.д, а потом уже откуда надо в программе обращаться к контроллеру.
702 2502357
>>502351
Приложение, если что, консольное
703 2502381
>>502351
какие еще контроллеры.
всякие классы выделяются чтобы изолировать изменения в них
и оперировать более высокими абстракциями.

Ну а степень всего этого зависит от нужд.
704 2502388
>>502381
Я просто щас видос смотрю, тут чел делает приложение на чистой архетиктуре, вот там у него есть контроллеры. Использует web api
705 2502389
TreeView))))))00)0
Танака  Сан.mp45,1 Мб, mp4,
1168x464, 0:20
706 2502409
>>502389
Танака Сан, кажется вам есть что сказать. Не молчите.
Танака  Сан2.mp42,5 Мб, mp4,
1168x464, 0:15
707 2502411
>>502389

>))))))00)0

708 2502430
>>502388
ну так он делает вебапи, там контроллеры принимают запросы
у тебя консолька несчастная.
709 2502433
>>502430
воо, это я уже понял. А что мне в качестве аналога написать?
710 2502436
>>502433
Аналога чего? Мы ж не телепаты, чтобы понимать, что твоя приложуха делать должна.
Во вторых тебе нужно хорошо осознать сначала, в принципе, понятие абстракции. Атомарно, так сказать. На уровне хотя бы классов, объектов их свойств и т.д. А потом уже лезть в более высокие уровни типа слоев или архитектуры.
2022-10-3120-29-21.png24 Кб, 1083x407
711 2502452
>>502015
А как вот тут
https://metanit.com/sharp/wpf/14.8.php

Идет привязка к свойству Nodes? У меня отказывается видеть свойства основного класса.
Пробовал в инициализации ставить DataContext = this
712 2502461
>>502436
приложуха - телеграм бот. Принимает запросы от пользователя и выдаёт ифну из бд. Приложуха уже написана и более-менее работает. Но там каша из классов и тд. Хотел всё по полочкам разложить попутно изучая чистую архитектуру.
713 2502472
>>502433
щас я тебе поясню на ёжиках.

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

ну берешь ты метод 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 контейнер и регистрируешь все в нем.

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

А ответ....не так очевиден.
713 2502472
>>502433
щас я тебе поясню на ёжиках.

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

ну берешь ты метод 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 контейнер и регистрируешь все в нем.

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

А ответ....не так очевиден.
2022-10-3120-46-04.png34 Кб, 688x298
714 2502474
>>502452
Пизжу. с DataContext завелось.
Но непонятно почему работает только если я итем сорс привязываю дважды: к TreeView, и к HierarchicalDataTemplate.

Если привязать только к TreeView, то не появляются сабитемы.
Если привязать только к HierarchicalDataTemplate, то вообще ничего не видно.
715 2502475
>>502452
это же пример и там тупо сделали
treeView1.ItemsSource = nodes;
716 2502476
>>502474
TreeView биндятся корневые ноды
к HierarchicalDataTemplate биндятся вложенные ноды.
ведь дерево это список списков списков...
ну а как иначе. ведь нода может не иметь вложенных нод
717 2502478
>>502476
Т.е. это в туторе ошиблись?
718 2502490
>>502478
ты должен понимать что
у TreeView и у HierarchicalDataTemplate РАЗНЫЙ DataContext
у TreeView DataContext это твой список во вьюмоделе или где там у тебя, а у HierarchicalDataTemplate контекстом является сама нода и ItemsSource у HierarchicalDataTemplate это для биндинга ВЛОЖЕННЫХ узлов

то есть на твоем пике первый итемс будет искать во вьюмодели, а второй будет искать внутри забинденной ноды
719 2502491
>>502478
Надо еще погуглить. Ща очень поверхностно все делаю.

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

Иначе получается, что мне придется дважды инициализировать грузный юзерконтрол — один для списка данных, другой для дерева. Или как-то можно экземпляр биндить, а не создавать новый?
720 2502492
>>502491
Экземпляр создается всегда. Только тебя это волновать не должно - ты создавай вьюмодели себе, а оно само все.
Также ты можешь предоставить разные шаблоны для разных типов данных.
721 2502494
>>502490

>то есть на твоем пике первый итемс будет искать во вьюмодели, а второй будет искать внутри забинденной ноды


Да, щас кликнул по "перейти к источнику" ItemsSource у HierarchicalDataTemplate и он перекинул меня к ItemsSource у TreeView.

Смущает только предупреждение в TreeView, что не найден контекст данных.
722 2502496
>>502494
предупреждения в дизайн-тайм норма если ты не юзаешь d:DataContext
но даже с ним до сих пор херь со списками

а перекинуло тебя потому что у тебя не заполнен DataType, а оно до сих пор хреново все резолвится по спискам
723 2502498
>>502492

>Также ты можешь предоставить разные шаблоны для разных типов данных.


О, кстати. А я все голову ломал как мне отделить папки от итемов.
724 2502502
>>502498
как и везде в списковых контролах
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>

В рантайме делаешь правильное дерево вьюмоделей и оно само все сбиндит
725 2502504
Хоспаде какая же духота в треде, какие-то хамл, впфы, вы че там ахуели? Где интересное?
726 2502508
>>502504
интересное в котлине. А тут всего лишь шарп
727 2502510
>>502508
Джавист, ну-ка парашу чистить, уходи с треда
728 2502557
Совершенно идиотский вопрос.
Допустим, у меня есть юзер контрол с какой-то там xaml-разметкой.
И мне нужен еще один, где меняется только 5% от первого. Не существует никакого наследования в плане xaml?
729 2502582
>>502472
Спасибо, суть понял. В моем случае лучше оставить как есть, потому что кода не очень много но много , функционал не большой. Но мне энивей хочется натянуть это на нормальную архетиктуру. К тому же самому хочется пощупать, посмотреть как оно все там работает. Плюс если будут смотреть этот проект, явно будет плюсом, что есть какая-нибудь архетиктура.
730 2502597
>>502582
Ну дербань по SOLID и паттернам. Чисто для форматирования мозга допустимо же.
731 2502690
Можно по-русски для тупого:
В классе есть структура. Когда я методом в классе дергаю структуру - она не дергается. Меняю struct на class - дергается.

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

Объясните плиз почему так?
732 2502698
>>502690
Код.
733 2502701
>>502690
Кажись я заразил тред словом "дергать".

В каком смысле дергать? Перезаписывать свойства структуры? нИпалучится. Свойство структуры дает тебе не ссылку, а значение.
734 2502703
>>502502
Какая же ляпота c DataTemplate.
Все так чистенько стало. Спасибо, анон.
735 2502708
>>502701
Понел, спасибо, чёт ступил.

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

Вот пишет микрософт когда выбрать структуру вместо класса:
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 интересно
736 2502710
>>502708
про single value перегнули палку. Это типа "если вы пилите ValueObject, то подумайте может структуру сделать, а не класс" Пример хотя бы DateTime

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

Ну а выбирать структуру нужно когда хочешь поменьше грузить GC и от структуры есть польза и не так уж много вреда
737 2502762
>>502508
В котлине типы стираются как и в джаве, потому что это косяк JVM
738 2502848
>>502708

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



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

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

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

Классы нужны в долгосрочной или среднесрочной перспективе — ты его один раз создал и дальше пользуешься. Экземпляры классов создают до цикла, и уже в теле цикла их обрабатывают (это не правило, но я так делаю). А то может случиться так, что сборщик мусора будет подчищать неиспользуемые экземпляры классов медленнее, чем создаются новые экземпляры — тогда твоя программа мало того, что захлебнется при расчетах, так еще и количество занимаемой памяти взлетит в небеса.
738 2502848
>>502708

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



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

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

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

Классы нужны в долгосрочной или среднесрочной перспективе — ты его один раз создал и дальше пользуешься. Экземпляры классов создают до цикла, и уже в теле цикла их обрабатывают (это не правило, но я так делаю). А то может случиться так, что сборщик мусора будет подчищать неиспользуемые экземпляры классов медленнее, чем создаются новые экземпляры — тогда твоя программа мало того, что захлебнется при расчетах, так еще и количество занимаемой памяти взлетит в небеса.
2022-11-0113-00-41.png3 Кб, 198x112
739 2502893
>>502502
HierarchicalDataTemplate работает только с TreeView, а у него в стиле прописана стрелка, сигнализирующая вложенный контент (типа как пикрил). Короче, без переопределения стиля не обойтись.
740 2502951
>>502710
>>502848
Понел, спасибо
741 2502952
>>502893
да. с одной стороны WPF позволяет переопределить эти компоненты через стиль
с другой - рукожопные дефолтные шаблоны требуют полного переопределения шаблона
что не сильно сложно ибо 90% копипаст с ориг шаблона или с SO, но пипец портянка получается.

>HierarchicalDataTemplate работает только с TreeView,


не совсем верно. это TreeView работает с HierarchicalDataTemplate
ты можешь спокойно запилить свой контрол работающий с чем угодно существующим.
2022-11-0118-52-47.png47 Кб, 1268x479
742 2503264
>>502952
В классе данных, к которому привязывается TreeView, установил событие, срабатывающее при изменении свойств в этом классе: PropertyChangedEventHandler, наследуемый от INotifyPropertyChanged

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

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

Как быть-то?
743 2503267
Как же заебали с TreeView, ъуъ сука.
744 2503309
>>503264
Хм... если я меня свойство изнутри итема, не через триггер, то все срабатывает.

Как будто сеттер триггера перезаписывает биндинг.
745 2503313
>>503264
Ну на скрине ты никак не сообщаешь классу данных (который datacontext) о событии isexpanded, а всего лишь напрямую меняешь хидер
Для решения можешь погуглить вариант биндинга к isexpanded
Либо внутри теститем отслеживать ischecked и прокидывать датаконтексту
2022-11-0120-01-27.png75 Кб, 1023x485
746 2503324
>>503313

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


Ну так у меня в итеме (пикрил) текст тоже двухсторонне привязан к свойству Header. При смене текста должен произойти пинок проперти Header, который связан с проперти datacontext.

Вот если я через событие поменяю Header, то datacontext это улавливает.
747 2503330
>>503324
Привязан к хеадер, который есть свойство контрола
А не вьюмодели
748 2503336
У меня на ноут вижуал студия не ставится. Пробовал и про и коммунити, и пиратскую версию и оффициальную, когда установка доходит до 100%, пишет очистка а потом через несколько сек выкидывает ошибку без номера, типа неудалось установить и всё.
На комп нормально поставилось а на ноут не хочет.
Может это быть изза васянской версии винды? Я уже не знаю что ему блядь надо в чем причина.
Поставил покачто ВС код с .Нет СДК и пердолингом.
749 2503365
>>503330
Вопрос в том, как мне вытащить событие, происходящее внутри итема. Меня, к примеру интересует событие изменения текста.

Даже если datacontext задетектит изменение свойства, ему не доступен экземпляр TreeView.
750 2503415
>>503365
как вытащить как вытащить?
как и везде - биндинги к свойствам, или просто событие и там обратиться к вьюмодели.

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

>ему не доступен экземпляр TreeView.


и нах не нужен вьюмодели твой тривью. Вьюмодель ничего не знает про вид. вообще НИЧЕГО. Она не знает кто на нее смотрит, кто ее использует и для чего (отображение). Ну логически она (вернее программист который ее пишет) конечно знает, ведь это вид просит ее "дай мне правильный стейт", но никакой другой связи нет.
751 2503423
>>501713

>В джаве тоже ничего нет


толсто

>она помедленнее будет несмотря на все попытки оптимизаций


Последние годы основные оптимизации делались в GC. Ну и тут еще у жабы оверхед по памяти будет побольше из-за исторических ошибок
752 2503489
Сводка треда:
1. Бля хамл ниработаеть((((
2. TreeView ))))))))0
3. Бля вижл студия ниробить (((

Больше ничего нет, можно не читать.
753 2503498
>>503489
— Здесь постят неинтересное
— Постите интересное сами
— Кто, я?
754 2503535
>>503498

>— Кто, я?


Ты нахуй иди со своими баянами. Хоть бы картинку не поленился найти.
755 2503541
>>503535
Ты че такой злой? Рассказывай кто тебя обидел
756 2503553
>>503535
Танака Сан, о каком опоганивании треда ты говоришь?
757 2503601
>>503489
Это хорошо показывает, чем на работе занимаются шарписты на самом деле. Древний проприетарный дотнет фреймворк, формочки на винформах и WTF, программирование мышкой, засилье винды, а неткор+ - это мем вкатышей, поиграться и никогда не использовать в проде. Убийца жабы, говорите?))) Ну-ну.
Стикер191 Кб, 420x350
758 2503612
>>503601
Хули мне твоим неткором делать, блять, долбоеб? У меня плагин программы, существующей онли под шиндовс и мак (где без лицензи разраба ты хуй простой). Иди посмейся над создателем программы, клоун — он же точно тупее тебя.

Сидит тут деревенский дурачок, надувающий джаву через соломинку, и чет мне советует, нихуя не зная о ситуации. Вышлите претензии в письменном виде, милорд-обрыган, я обязательно их прочитаю своей жопой после того, как хорошенько просрусь.
759 2503623
>>503601

> Древний проприетарный дотнет фреймворк


ты о чем вообще. WPF он на последнем дотнет 6 юзается

давно уже во всем переехали на последний дотнет
760 2503630
Антон, если в теме, то подскажи, что пизже на .net6 использовать GostCryptography или BouncyCastle?
Задачи: подписание, расшифровка, проверка, ГОСТ 34.11-2012.
761 2503642
>>503630
Насчёт BouncyCastle хз, но GostCryptography - тупо драйвер-обёртка для криптопровайдера и сама работать не будет без установленного КриптоПро CSP или аналога (а он платный и стоит немало). Более того, такие СКЗИ требует сертификации ФСБ, и, если это важно, как в случае с ЭЦП для госорганов, любая проверка контролирующими органами будет иметь серьёзные юридические последствия. Если BouncyCastle умеет сама в ГОСТ-2012, лучше эту либу юзать только для тестовых утилит и не более.
762 2503699
>>503336
Хуй знает, у всех по разному получается поставить. Последнии дни совсем непонятно.
763 2503787
>>503642

>Насчёт BouncyCastle хз, но GostCryptography - тупо драйвер-обёртка для криптопровайдера


Ну мне по факту это и нужно. Просто самому ручки у advapi32.dll и crypt32.dll дергать это тот еще геморрой. Я написал несколько методов, оно вроде работает, но в рот имел я все это барахло с указателями и unmanaged хренью поддерживать в будущем, хочется что-то готовое.

>без установленного КриптоПро CSP или аналога (а он платный и стоит немало). Более того, такие СКЗИ требует сертификации ФСБ, и, если это важно, как в случае с ЭЦП для госорганов, любая проверка контролирующими органами будет иметь серьёзные юридические последствия.


Ну это понятно, но это не моя проблема, а заказчика. В том смысле что стульев у него по факту всего два КриптоПро и ВипНет. По факту будет КриптоПро.

>Если BouncyCastle умеет сама в ГОСТ-2012, лучше эту либу юзать только для тестовых утилит и не более.


Они обе судя по всему умеют. Вернее GostCryptography изначально, а у BouncyCastle есть форк с их поддержкой.
Судя по тому, что я вычитал BouncyCastle более популярен и инфы по нему больше. Но честно говоря я в сорцы заглянул и там пиздец какой-то внутри, какая-то каша в которой хер разберешься. В GostCryptography все на первый взгляд более аккуратно и понятно выглядит и поддерживаемо будет проще если что. Но по нему и инфы меньше.
764 2503961
Можно как-то без рекурсии узнать индекс ноды в дереве? Или может есть какая-то стратегия, чтобы в будущем минимизировать расходы на вычисления?

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


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

Мне не важны индексы папок, меня интересуют только индексы итемов. Естественно, дерево не ридонли, а предполагается миграция итемов.
765 2503987
>>503961
У меня идея — добавить свойство Index в каждую ноду, потому что индекс нужен мне в 100% операций.
Но если будет операция удаления\перемещения, то вызывается событие для всех остальных нод, и те прибавляют или убавляют свой собственный индекс на нужное значение.

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

>Вьюмодель ничего не знает про вид.


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

Наверно предполагается, что вся остальная часть приложения работает в тех же условиях, иначе пук-среньк.
766 2504007
>>503987

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


нет там никаких маня ситуаций. вьюмодель держит состояние вида, а вид синхронно рисует это все как ему хочется

>И как же эта нода расскажет про свой индекс не зная где она находится? На деревне у дедушки?


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

В любой момент ты можешь выбросить WPF и заменить гуи на консоль. Так конечно нет смысла делать, но вот тестирование другое дело. Точно так же работает и мультиплафторма - вьюмодель одна, а под каждую платформу вид рисует по своему. И это можно ибо вьюмодель ни про кого не знает.
767 2504026
Нужно запилить преоектик: api на дотнете + фронт. Что лучше взять для фронта человеку, который только jQuery тыкал. React или Vue? Каких то супер фич у фронта не будет, поэтому в приоритете простота изучения до уровня mvp+. Посоветуйте.
И да, хочется пощупать именно популярное и современное, поэтому варианты которыми пользуются 1.5 анонимуса не предлагайте.
768 2504183
>>504026

>который только jQuery тыкал. React или Vue?


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

и все будет тип-топ
769 2504230
>>504026
Скажу только за реакт, т.к. только его знаю.
Он в принципе простой, если знаешь js, то на его освоение уйдет от 1 до 3 недель.
Но у него есть две разновидности (ну или парадигмы). Одна - это когда компоненты пишутся на классах, другая на хуках. Первая чем-то ближе к ООП и для бэкэндера будет попроще в освоении, но считается уже года 3...4 устаревшей и так уже не пишут. Вторая чем-то ближе к функциональщине и считается более актуальной. Но менее удобная и понятная на мой взгляд.
Я бы для себя наверное сейчас вью бы взял, т.к. думаю что с учетом знаний освоил бы его быстро. Но если бы это было с перспективой на профессию, то реакт в связке с .net чаще встречается. С другой стороны я в фулстеки возвращаться не собираюсь, так что точно попробовал бы вью.
770 2504350
>>504007
Кажется я начинаю въезжать в логику MVVM паттерна. Ну по сути вьюмодель это как прилинкованный файл к xaml во всяких окнах, юзерконтролах и страницах, только живет своей жизнью.
771 2504392
>>504350
верно до наоборот.
Есть разные способы работы с гуи. все они частично имеют общие подходы, так что опишу отличительные части.
1 типа как хтмл или хмл в андроид классик - описывается разметка и далее кодом все это дело собирается во что то. Классика - ловим событие и в хендлере допустим меняем цвет чего то напрямую. ну поверх этого делают еще биндинги в некоторых местах.

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

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

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

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

за счет центральной системы биндингов MVVM просто лютый вин. Ну правда там начинаются свои проблемы в виде "god viewmodel" но все же все равно удобнее обычного подхода как в винформс. И при некотором умении даже сверху можно прикрутить Lifetime (хоть WPF к этому подходит как винт вертолета подводной лодке)
771 2504392
>>504350
верно до наоборот.
Есть разные способы работы с гуи. все они частично имеют общие подходы, так что опишу отличительные части.
1 типа как хтмл или хмл в андроид классик - описывается разметка и далее кодом все это дело собирается во что то. Классика - ловим событие и в хендлере допустим меняем цвет чего то напрямую. ну поверх этого делают еще биндинги в некоторых местах.

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

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

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

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

за счет центральной системы биндингов MVVM просто лютый вин. Ну правда там начинаются свои проблемы в виде "god viewmodel" но все же все равно удобнее обычного подхода как в винформс. И при некотором умении даже сверху можно прикрутить Lifetime (хоть WPF к этому подходит как винт вертолета подводной лодке)
772 2504437
Что там по блейзеру слышно? Пользуется кто?
773 2504448
>>503630
Ангуляр
>>504437
Да, юзаем на проекте для внутреннего кала. Фигня все еще лучше ваших десктопов
реальный юзкейс у него один - какая-товнутреняя админка. На удивление блейзо сервер выглядит лучше, чем ВАСМ
774 2504450
>>503601
Это показывает какие ИТТ калоеды только
Я за последних года 4 не видел ни один даже легаси проект, который бы не портировали на кор+. Новые на последнем ЛТС всегда офкоз
>>503612
А кто тебе нахуй что советует? Доволен своим калом - ну и сиди на нем. Жава не лучше, да.
775 2504466
Братики помогите. Завтра собес а никак не могу найти ответ на один вопрос которым меня на собесах ебут постоянно.
В чем разнице в скорости между хранимкой, запросом ADO и Entity?
Насколько я понимаю дело в плане исполнения, для хранимки план исполнения строится после первого исползьования. АДО и Энтити всякий раз присылают новый запрос, приходится сторить новый план исполнения, так? Еще какая-то пежня есть с конвертацией данных. Короче тема мутная, под рукой никого нет кто объяснит, а найти никого не могу.
grass.png230 Кб, 3790x1068
776 2504479
Хочу сделать горящую траву в консольке через ивенты. Прохожу по 2д массиву тайлов (пик1) и подписываю на каждый тайл все его окружающие.
Теперь когда "поджигаю" произвольный тайл должны инвокнуться все на него подписанные. Я хочу чтоб инвокались (и загорались) как на пик2, а по факту происходит как на пик3. сорри за хуевую картинку

Как правильно подписаться и вызывать, чтоб было как на втором примере?
Выглядит как обход дерева/графа в ширину, но тогда мне надо будет строить граф от "поджигаемого" элемента и подписываться на окружающие тайлы проходя по нему?
777 2504489
>>504479

> обход дерева


Ну здесь однозначно надо использовать TreeView.
778 2504529
>>504230
От Vue все файлы на компьютере могут превратиться в сердечки
779 2504655
>>504489
Нет здесь однозначно надо использовать неткор+ , а лучше джаву.
сокращенный текст.mp4244 Кб, mp4,
512x156, 0:13
780 2504720
А как вообще происходят модификации содержимого биндинга?

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

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

И ведь это малая часть вещей, которые меняют свой внешний вид в зависимости от состояния других элементов (при этом никак не влияют на содержимое данных).
781 2504726
>>504720
Нахуя во вьиев модели что-то менять? Через интерактьён подписаться на событие изменения сизе чангед и всё там делаешь обработку
782 2504734
>>504479
Вроде все воксельные сетки делятся на строки и чанки.
Проще залезть в соседнюю строку с тем же индексом, что и "источник горения" и быть уверенным, что это его сосед.

А так у тебя получается отдельный список для каждого вокселя. И так любая симуляция требует огромной оперативы. Если ты думал, что изобрел быструю симуляцию, то наверно нобелевку не получишь (в этом году).
783 2504735
>>504720
повторюсь еще раз
в MVVM
VM (вьюмодели) отвечают за то ЧТО отображать
а V(вид) за КАК отображать.

то есть вьюмодель содержит этот "очень длинный текст итема" (что отображать), а сжатием при ресайзе заведует вид (как отображать)
и вьюмодель про многоточие ничего не знает. и про размер окна не знает. и про размер контрола не знает.
784 2504737
>>504720
и то вьюмодель содержит не сам текст прямо (ну тут зависит), ведь не нужно забывать про локализацию
785 2504739
>>504735
Да я понимаю. Просто потрясает радикализм делающих туторы по MVVM. Нет бы сказать "не пишите внутри вью логику того, что может изменить данные модели".
786 2504743
>>504739

>не пишите внутри вью логику того, что может изменить данные модели".


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

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


Но тогда условной "передачей горения" будет заниматься класс, в котором тайлы травы добавлены, например класс Поле это у меня, а я хотел, чтоб тайлы горели без участия поля, оно только заполняет/отрисовывает, поэтому хотел на ивентах

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



Я понимаю, при этом ещё циклические связи возникают при привязке получается (другое дело что горящие тайлы уже не инвокают повторно и как бы цикл рвется), но здесь как раз и вопрос в том, чтобы красиво горение шло (то есть сначала в ширину инвокалось, а уже потом в глубину), а не вглубь по одной цепочке.
Получается мне типа надо смотреть в сторону асинхронных событий или Parallel.Invoke?
788 2504875
>>504839
Ты бы загуглил алгоритм, есть целые статьи по этому поводу.
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. Битовым сдвигом разбивается и собирается.
789 2504889
>>504839

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


А что мешает создать второй класс и не нагружать этим поле?

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

А вот другие процессы должны это массив "поле" как-то редактировать: один генерирует среду, другой симулирует горение, третий укладывает снег. Отдельный вопрос как они это будут делать одновременно, но то что задачи должны быть делегированы — это факт.
790 2504906
>>504875
Спасибо, не так гуглил запросы про горение

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


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

> А вот другие процессы должны это массив "поле" как-то редактировать: один генерирует среду, другой симулирует горение, третий укладывает снег. Отдельный вопрос как они это будут делать одновременно, но то что задачи должны быть делегированы — это факт.


Ну так примерно и есть сейчас, просто из "поля" пока недовынес части, а так трава и поле это разные классы, да
791 2504926
Аноны, нужна ваша помощь. Никак не могу решить эту задачу: "В консоль вводятся два числа. В обоих числах есть одна общая цифра. Выведите в консоль цифру, которая есть в обоих числах через пробел столько раз, сколько раз она встречается в первом числе."
Использовать только циклы.
792 2504929
>>504926
А я могу.
793 2504934
>>504926
Извини, чувак. Но "математика в программировании не нужна". А для решения этой задачи нужны базовые математические знания. Так что решения у задачи нет.
794 2504938
>>504934
Я понял как разделить эти числа но до сих пор не могу решить как все эти числа между собой сравнить.
795 2504954
>>504906

>чтоб тайлы травы общались друг с другом, а не с внешним слоем


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

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

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

У тебя должен быть отдельный буфер горящей травы, и отдельный процесс поджигающий и проверяющий время жизни травы. Может быть буфер в виде стака(очереди) Stack<T>, чтобы можно было легко добавлять новые объекты и удалять последние.
image.png124 Кб, 883x676
797 2504965
>>504938
А, я все равно бухаю. На, развлекайся...
798 2504970
>>504965
Написано же, использовать только циклы. А с if любой дурак сможет.
Еще и переменные использует — вообще атас.
799 2504971
>>504965
Спасибо большое :3
800 2505002
>>504970
Ну бля, объебался, бывает.
801 2505019
>>504970

> использовать только циклы


while (условие)
{
...
break;
}
wd-efarchdiagram.gif18 Кб, 482x450
802 2505084
>>504466
Внутри EF лежит АДО кста (ну по крайней мере раньше лежал, хз что там с кором)
План выполнения тебе еще и поднасрать может кста(2), но да, аргумент
803 2505100
Есть графический интерфейс на WPF
Как по нажатию кнопки запустить долгий, очень долгий процесс в другом потоке, да так, чтобы тот поток мог гуй обновлять?
804 2505107
>>505100
а проблема то в чем?
805 2505114
>>505107
В том, что если внутри обработчика я стартую другой поток/асинхронную хуйню/что угодно, то ничего не происходит. У меня просто глохнет UI
806 2505119
>>505114
Application.Current.Dispatcher.InvokeAsync
807 2505131
>>505119
Мне это внутрь обработчика засовывать?
Оно будет при этом обновлять гуй?
808 2505133
>>505114
Любой способ раьотает
Хоть таск.рун
Хоть что угодно
809 2505176
>>505119
При асинке, если просто тупо чет пихать в проперти гуи, то ничего не произойдет. Нужно сихронизирваться с помощью инвока.

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

App.Current.Dispatcher.Invoke(async () =>
{
// здесь любой код, который относится в сторону ГУИ
//к примеру
MainWindow.Width = 300;
MainWindow.Title= "Pososi u traktorista";
});
810 2505177
811 2505179
>>505114
Если асинхронная функция работает успешно, то фризиться интерфейс не должен. Он может не получать или передавать данные из-за отсутствия инвока, но точно не фризиться.
812 2505187
А шо правда, что бинарных деревьев нет из коробки? Раньше не юзал, а когда захотелось, то оказалось их нет.
.png26 Кб, 1139x342
813 2505207
>>505187
Они же в 10 строчек пишутся, или нужны какие-то требования по сбалансированности?
814 2505219
>>505207
A Find, Remove, Traverse негры напишут?
Конечно можно скопировать из интернета, но так-то можно и list самому написать.
815 2505224
>>505219
Ок, ещё 40 строчек.
Деревья нужны относительно редко, поэтому универсальных деревьев и нет из коробки (только XDocument, TreeView и подобные, между ними мало общего), к тому же, большинство применений деревьев настолько специфичное, что обычно пишут свои реализации на каждый случай или берут сторонние либы.
В любом случае, есть SortedSet, SortedDictionary и SortedList, они реализованы через деревья, но хуёво то, что там нельзя непосредственно работать с узлами, как следствие, обход в глубину или удаление поддеревьев там не применить.
816 2505236
>>505100
если запускать из GUI то там для синхронизации нужны доп шаги - это Dispatcher/контекст синхронизации (можно даже хелперы слепить)
Если это MVVM то там биндинги, то там уже используется контекст синхронизации и доп усилия не нужны, но обновлять вьюмодели в многопотоке не гуд (не стоит правда путать многопоток и асинхронность)
817 2505254
>>504026
Blazor thread
818 2505278
А объясните различия между ControlTemplate и DataTemplate. Первый описывает визуальную часть элемента, в а второй привязывает данные содержимого.

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

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

И куда пихать мой единственный текстовый бокс, если я хочу триггерами поменять его рамку, но и рыбку съесть и данные текста привязать ко вьюмодели?
819 2505280
>>505278
Хм, есть DataTrigger.
Но как же все щас через жопу. Упростил в одном месте, сложности вылезли боком.
820 2505283
>>505236
Там всё сложно, ибо с MVVM я не разобрался. Но биндинги есть. Внутри потока должно обновляться свойство, отвечающее за вывод
821 2505296
>>505236

>но обновлять вьюмодели в многопотоке не гуд


А как быть тогда? Вот я (другой анон) сделал возможность подавлять вызов события изменения содержимого ObservableCollection.

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

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

>>505283

>ибо с MVVM я не разобрался


Давай вместе разбираться. Я уже начинаю въезжать, кроме нюансов — там шаг в сторону и расстрел.
Я себе отдельный проект для тестов вывел, только он на VB. Хотел плавно перейти на шарп, но совмещать несколько проектов на разных языках не очень удобно — линк проектов работает только в одну сторону..
822 2505316
>>504026
Берешь блейзор и хуяришь.
gradusov.jpg66 Кб, 604x403
823 2505410
>>505316
Пробовал апельсиновый, но производительность на мой взгляд падает. С другой стороны тебе это не важно.
824 2505622
>>505278
ControlTemplate описывает шаблон самого контрола. У него даже есть спец биндинг TemplateBinding

DataTemplate описывает шаблон контента (тот самый ItemPresenter, который мы используем в ControlTemplate) - и подходящий DataTemplate ищется по типу контента или же устанавливается дефолтный.
825 2505625
Есть задача: получать данные с сайта каждые полчаса и каждые полчаса отправлять их в тг бот.
Через httpclient отправляю запрос, данные получаю, всё ок. А как правильно сделать "автоматическую" отправку запросов, то есть каждые полчаса ?
826 2505637
>>505296

>А как быть тогда?


С чем быть?
Сами биндинги которые идут на 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 для отмены операции же. Чтобы на гуи жмакнул и можно отменить.
826 2505637
>>505296

>А как быть тогда?


С чем быть?
Сами биндинги которые идут на 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 для отмены операции же. Чтобы на гуи жмакнул и можно отменить.
827 2505640
>>505283
с MVVM все просто. Ты просто складываешь визуальное состояние из вьюмоделей, а гуи за счет биндингов сам отслеживает их изменение и подходящим способом отображает
в чем проблема?
828 2505642
>>505625
Таймер не?
829 2505644
>>505625
или таймер или запустить.
await Task.Delay(TimeSpan.From*, ct) //начальная задержка
while(!ct.IsCancellationRequested){
//отправляем
await Task.Delay(TimeSpan.FromMinutes(30), ct)
}
Capture.JPG22 Кб, 680x219
830 2505667
суп шарпач, код не мой, поясните пожалуйста что за жесть здесь происходит, особенно на 348
831 2505679
>>505667
свойство OnBind требует Action<ComputeNode, ComputeNode>
тут же это свойство выставляется не напрямую на Action, а через лямбду, которая допускает, что Action может не быть в момент вызова с помощью ?.

Ну может оно там часто меняется на нулл или выставляется сильно поздно, а OnBind не переваривает нулл, поэтому и такое проксирование.
832 2505688
>>505679
т.е. он таким образом пропускает все инвоки SInstance.ComputeControl.OnBind через себя?
833 2505694
там просто он еще у себя на свой OnBind подписывается и выполняет дополнительные манипуляции с ComputeNode
834 2505730
>>505688
ну да. обычное дело.
835 2505786
>>505730
спасибо
836 2505828
Мда. С так называемыми стилями никакого солида не жди. Вот так просто перекинуть участок кода с контролами, ссылающимися на 100500 брашей, это я вам скажу то еще удовольствие.
837 2505830
>>505828
Надеюсь, ты про SOLID, а не про всякую хуйню без задач типа WTF?
838 2505833
>>505830
Небезосновательный намек понял.
839 2505854
>>505828
а это все от того что вместо сурового нормально гуи делают пестроцветную хрень.
Capture.JPG32 Кб, 587x577
840 2506066
шарпаны, насколько тяжелая вещь эвенты?
я хочу каждую проперти завернуть в класс со своим собственным эвентом, у него будет один подписчик, который будет иногда дергаться.
вот у меня пикрелейтед есть и таких по 6-7 штук на каждом объекте, объектов пока не знаю, например 20-30, а подписывать на эвенты я планирую UI, т.е. одновременно вызываться будет только один
можно ли сделать как-то иначе?
я юнитихолоп, не бейте сильно
841 2506067
>>506066
тяжелая в чем?
в плане вызова это просто вызов метода через делегат (такого везде полно), то есть чуть медленнее прямого вызова

В плане удобства эвенты работы с ними конечно говно, но вот они такие вот в языке.
842 2506069
>>506067
я скорее имел в иду память, там же есть какие-то аллокации?
или на таких объемах без разницы
если я правильно понимаю вот есть INotifyPropertyChanged, там только один эвент, но как он определяет что передать?
843 2506072
>>506069
там самые обычные делегаты. вернее там multicast delegate, что эквивалентно иммутабельному списку обычных делегатов.

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

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

но это у тебя какой то дикий многопоток будет, а события и многопоток это как "жрать жидкое говно вилкой", то есть неудобно, но с и с ложкой лучше не станет.
844 2506097
>>506066
Датабиндинг элементов UI работает с ObservableCollection, и при любом изменении коллекции автмоатически обновляются забинденные свойства. А знаешь как элемент узнает, что в коллекции было изменение? Внутри нее есть событие.

А теперь представь, что у тебя список или дерево с сотнями элементов, где каждый элемент подписан на сие событие. И это итпа нормально. Единственное что, если ты сам подписываешься, то не забудь отписаться, т.к. подписка — это хороший источник утечек памяти т.е. очиств переменную с классом, он не удалится и будет работать.
845 2506104
>>506072
>>506097
спасибо, теперь более понятно
я решил отказаться от этого класса и все же посмотреть на eventargs
вот как на пике объект чисто с данными-проперти, его обновляю и на каждом изменении внешних проперти посылаю его вместе с eventargs и enum, а подписчик(и) будут брать этот enum и уже там раскидывать как надо
есть ли подводные камни?
помимо того как на другой стороне этот enum обрабатывать и не городить колоссальный свитч, я пока даже не представляю как за это браться. может забить и тупо обновлять вообще ВСЕ UI элементы через посланный объект в обработчике события? гулять так гулять
я забыл пик осел.JPG67 Кб, 1097x811
846 2506105
>>506104
забыл пик
847 2506156
Аноны, для новичка метанит + троелсен норм идея? Или есть варианты получше?
848 2506159
Здарова, бандиты! Книга Рихтера для кора актуальна ещё? Стоит читать? Её по прежнему продолжают советовать из всех утюгов. Хули он новое актуальное издание не выпустит, блять?
849 2506162
>>505254
>>505316
Хуйни не советуйте.
Пусть учит онгуляры и вкатывается в фулстек
850 2506176
А правда что в Core из коробки можно слить все библиотеки в одну? Или какие вообще есть решения?
851 2506247
>>506105
Во-первых уже есть специальный интерфейс INotifyPropertyChanged.
Там все уже сделано и не надо городить города, как у тебя.
А интерфейс вынудит тебя создать одно единственное событие, и один метод OnPropertyChanged вызывающий это событие.

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

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

В целом, ты повторил основную идею INotifyPropertyChanged, только без списков пропертей (как ты собрался их обновлять в будущем? Это же жопа в плане обслуживания — тебе придется вручную вносить изменения каждый раз, когда какие0то свойства прибавились или убавились)
852 2506251
>>506105
А че делаешь? Чет с кривыми.
853 2506259
>>506247
>>506104

> и не городить колоссальный свитч


вот меня, кстати, тоже интересует, а как WPF обрабатывает события INotifyPropertyChanged? Автоматом создает внутри свич на все биндинги?

Конечно, событие можно сформировать как угодно и передавать даже делегаты на исполняемый метод (или команды). Но по дефолту в EventArgs события OnPropertyChanged возвращается только стринговое имя свойства. Как биндинг знает что и чего?
854 2506263
Как работает объединение ресурсов MergedDictionaries?

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

Выглядит расточительно. Я уже пытаюсь не юзерконтрол делать, а отдельный проект под достаточно комплексные модули UI, но идут по пизде стили — их приходится подгружать отдельно.
855 2506270
>>506259
просто пропертигеттер через рефлексию и далее этот геттер в словарик и всего делов.
856 2506285
>>506263
Так, ща в главный аппликешин добавил словари и чому-то все остальные проекты не задали вопросов.
857 2506295
>>506162
Почему хуйня-то? Под свои задачи блейзор самое оно, тем более для шарписта. А такие задачи в разных бизнесах могут возникать. Вон смотрел доклад какого-то чела с альфы, что ему пришлось внедрять какие-то штуки, и он выбрал блейзор. Все у него заработало. Расхваливал что майки не стали изощряться и просто повторили, типичный вебфреймворк, по структуре. То есть въехав в блейзор, будешь понимать как работают все прочие фрейморки на жиэсах.

А потом те же компоненты разора можно в формочках или впфе использовать, потому что блейзор гибрид и в этих десктопных окнах умеет жить. А значит тот же код можно использовать в абсолютно разных вещах. Это же охуенно по сути, надо только разобраться и научится понимать, где фулстак без js фреймворков невозможно реализовать, а где уже можно обойтись чистым дотнетом.
858 2506333
>>484368 (OP)
Как добавить C# в codeblocks?
изображение.png28 Кб, 812x390
859 2506356
Почему num всегда равно двум?
860 2506370
>>506356
Может срабатывает твоя функция один раз.
861 2506436
>>506247
я же говорил что я юнитихолоп, в версии с которой я работаю нет биндингов и т.д. наш UI не знает про это если его не допиливать.
я бы с удовольствием воспользовался уже готовым решением, но информации по этой теме у нас практически нет, а то что есть какая-то шляпа
надо будет подробнее почитать про INotifyPropertyChanged и попытаться адаптировать
>>506251
да, мне нужна была деформация 3д модели по сплайну, это я уже насвинячил и уже было начал пилить версию которая будет вместо процессора использовать видеокарту, но окинул взглядом что за хуйню я нагородил и теперь хочу как нормальный человек сделать
862 2506460
>>506436

>надо будет подробнее почитать про INotifyPropertyChanged и попытаться адаптировать


Да там все тоже самое, что и тебя. Просто шаблон интерфейса заставляет добавить событие и функцию для вызова события — всё. Ровно все то, что у тебя, только передается не индекс свойства, а его имя (да и то автоматически).
863 2506469
>>506356
Потому что на каждый запрос создается инстанс класса
С контроллерами та же история
864 2506501
>>484368 (OP)
А при установке Visual Studio галочка на Unity скачивает Unity? То есть, если Unity уже установлено то можно её не ставить в Visual Studio?
865 2506595
>>506460
а из имени на другом конце соответственно вытаскивается проперти и значение через какой-нибудь GetProperty.GetValue?
866 2506602
>>506595
Угу
2022-11-0520-31-27.png8 Кб, 846x151
867 2506656
>>506595
Можно так, а можно через сендер вытащить. В проперти нейм использовать как идентификатор.
868 2506662
>>506501
Нет
869 2507038
>>506501
Раньше - да.
Сейчас - скачивается unity hab, в котором нужно выбрать что тебе там скачать нужно.
870 2507049
Объясните тупому, вот есть сервис, нахуя его через конструктор получать, если можно тупо статические методы запилить и использовать где захочется без всяких там интерфейсов?
.png21 Кб, 882x183
871 2507054
Как же я чет подзаебался.
Че меня триггерит.
Я не могу решить как правильно в плане архитектуры сделать.
Вот смотрите. 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();
872 2507059
>>507049
Как ты собираешься тестировать те классы, которые должны будут твой сервис потреблять?
873 2507060
>>507054
Не скажу по твоей проблеме, но Божечки, какие же интуитивные лямбда-выражения в C#. В бейсике это просто жуть (как и реализация событий).
874 2507142
>>507059
Хочешь сказать, что вся эта ебля с внедрением зависимостей была придумана тупо ради юнит-тестов?
875 2507156
>>507142
Не только. Но это самый простой пример того зачем оно нужно.
Статический класс - это считай, глобальная переменная. Это сразу пиздос в плане многопточки, это сразу пиздос в плане: надо изменить поведение в одном месте, но не менять в других, это сразу пиздос в плане реальной разработки, потому что если ты меняешь статический класс - тебе нужно перетестировать буквально все места, где он используется.
Короче. Когда ты начнешь работать в реальной фирме, где делается реальный продукт, ты поймешь, насколько говняно самому писать статику. Еще сильнее ты это поймешь, когда у вас больше одного человека над одним проектом работает.
876 2507160
>>507156

>Когда ты начнешь работать в реальной фирме


Эх, вот бы дожить до такого(
877 2507201
Продолжаю постигать азы asp.net. Почему у меня numb с атрибутом привязывается к введенному числу, а параметр метода OnPost (когда атрибута нет естественно) нет?
878 2507267
>>507201
Сам разобрался, имя параметра должно было совпадать с именем поля.
879 2507336
поясните что это на языке C# означает?
public DirectoryNode(DirectoryInfo directoryInfo, DirectoryNode parent) : this(directoryInfo)
{
this.Parent = parent;
}


Меня интересует двоеточие после заголовка функции.
880 2507341
>>507336
Вызов другого конструктора.
881 2507354
>>507341
А, это типа перегрузка, но с выполнением кода основного конструктора. Равносильно
public DirectoryNode(DirectoryInfo directoryInfo, DirectoryNode parent)
{
this.New(directoryInfo);
this.Parent = parent;
}

У нас такой херни в бейсике нет.
882 2507393
А тут что? Сингл-лайн if ?
return this.Directory == null ? string.Empty : this.Directory.Name;

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

Я такого не видел в других примерах кода. Там по дефолту все биндинги прекрасно обновлялись.
884 2507412
У тебя гугл забанен?
885 2507415
>>507406
Коллекция не отслеживает изменение внутри самих объектов.
886 2507420
>>507415
Так и это свойство тоже.

В итоге если я изменю итемы коллекции, то сначала произойдет событие в коллекции, а затем внешнее событие. Или одно переопределит другое?
887 2507424
>>507420

>я изменю итемы коллекции


Я имею ввиду, типа, удалю один итем из коллекции.
888 2507437
>>507406
Чтоб, если новый экземпляр коллекции создаёшь, графон обновился
889 2507444
>>507437
ааа, понял.
Событие коллекции будет сообщать о внутренних изменениях.
Событие в свойстве будет сообщать об изменении самой коллекции.
890 2507449
>>507412
У меня дефицит общения :3 Чмоки, сладкий.
891 2507455
Сап двачера c# может есть желающие скинутся на курс по ASP NET
https://stepik.org/course/114281/promo
если кто-то захочет, отпишитесь к посту оставлю телегу
892 2507458
>>507455
Дорохо
893 2507463
>>507455
Лол, просят за инфу, которая рассказана на первых 300 страницах asp.net в действии 45к. И ведь находятся дураки.
894 2507464
>>507458
Да есть такое, но информация там годно подаваться должна, если бы хотя бы человек 10 набралось, можно было бы осилить
895 2507466
>>507463
Дак что та инфа, если ее на практике не понятно как применять, мне как новичку например
896 2507476
>>507464
во время инета подавай себе инфу как хочешь.
то есть можно остановиться на месте и ковырять пока не разберешься детально под 100 углами, чем идти дальше
и бесплатно
а тут ожидать волшебную таблетку...мде
897 2507480
>>507464

>годно подаваться должна


Потому что дорого? Кек.
Там по структуре уроков видно, что темы можно взять из ютуба.

Покажи мне хоть один их тутор.
898 2507483
>>507476

>то есть можно остановиться на месте и ковырять пока не разберешься детально под 100 углами


Люто двачую. Даже если прямо ответят на твои вопросы, тебе эта инфа будет пустым местом, пока ты 50 раз не исследуешь тему.
899 2507486
>>507466
А с чего ты взял, что там тебе объяснят? Опять навалят маня-ситуаций, где их код работает идеально, но чуть в сторону и тупик.
Единственная причина — это заебать вопросами ментора и выбить из колеи курса. Дико горят, но так есть толк хотя бы. Всегда так делал, еще с института.

Алсо, Павел Шмачилин трехчасовые стримы ведет, по 20 стримов на тему. Можно весь отпуск нонстопом смотреть.
900 2507490
>>507480
>>507483
Я 3 курса на степике прошел у этого автора, например по Linq ты такой информации собранной не найдешь нормально, на ютубе очень плохо эта тема освещена, много практических заданий. Тут вопрос в том, что ты получаешь собранную информацию и не надо понимать что в какой последовательности тебе изучать и тратить на это кучу времени. А по 50 раз исследовать и расширять полученную информацию лучше, чем какой-то набор статей разрозненный, ну 40 к я согласен за такую инфу платить бредово, но 4 - 7 к я за такую инфу бы отдал
901 2507496
>>507490
У нас не найдется столько народу, чтобы платить по 5к. Это надо человек 10, в треде стольких нет.
902 2507499
>>507496
Он на складчинах весит, но что-то движения особого там нет, ну скорее всего придется этот месяце по видеоуркам индуса идти, если вдруг кому нужен курс могу поделится по AspNet.6
903 2507502
Проблема не в том, что плохо пояснят. Пояснять могут хорошо и очень подробно, но....
но дело в том, что мозг устроен так, что он не понимает какую то часть и поэтому картина не складывается, все как то пипец сложно и связи не прослеживаются.
Как только этот кусочек понимается, то картина становится легкой и целостной.
И тут не проблема учителя - он видит картину по другому, для него она "да все там понятно", а ученик тупит и "не может уловить самую суть".
904 2507565
Что нужно уметь реализовать и знать из стека: asp, entity Framework, pgsql что бы соответствовать джуну? А то вроде могу всякое делать но не ясен уровень.
Будет ли плюсом что могу в angular и соответственно работать с данным с фронта, запросить что нибудь, отправить на бек и тд? Всякую фронтендную мишуру по типу html,css тоже умею.
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);

}
}
}
Почему не работает???
906 2507740
>>507466

>Дак что та инфа, если ее на практике не понятно как применять, мне как новичку например


На примере сраного интернет магазина-то, ну-ну.
907 2507741
>>507486

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


Вот этот дело говорит.
908 2507767

>>>507486



Кстати если про менторов говорить, может кто находил себе ментора платного, на youdo или freelance сайте, чтобы какую-то сложную или непонятную тему разобрать, поделитесь инфой
909 2507768
>>507740
Ну если брать курсы, то в большинстве пишется интернет магазин, я вот слив нашел по WPF где пишется канбан доска с задачками, супер пупер приложение никто не пилит на учебных проектах, хотя было бы круто
910 2507772
>>507767
Если что-то непонятно можешь спросить итт, или на so.
911 2507794
>>484537

>пользователи никогда не скажут, что им не нравится цвет кнопки


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

Мало кому хочется ездить в надежном тракторе — всем хочется комфорта и эстетического удовольствия, даже если этот комфорт временный под руководством пидорасов.
912 2508093
>>507565
Необходимо запустить микросервисы на докере, уметь в красночерное дерево, уметь в поиск LCP и прочую хуйню для строк. Этого достаточно чтобы называться джуном.
913 2508100
>>507794
Поясни за микросервисы. Это отдельные программы, которые выполняются в фоне и вызывают друг друга? Разве от этого не страдает скорость? В винде вот точно немаленькие накладные расходы при использовании com.
914 2508101
915 2508138
>>507768

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


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

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

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

Далее заводишь себе пару тройку vps-ок, раскидываешь на них свои сервисы и можешь в любой момент показать их работу кому угодно. Если сделаешь толково, то даже сам сможешь этим пользоваться. Плюс немного подучишь работу со стороны девопса, т.к. в реальной работе часто нужно разворачивать всякую хрень, как минимум для тестов своего говнокода.
916 2508176
>>508100

>Разве от этого не страдает скорость?


>В винде вот точно немаленькие накладные расходы при использовании com.


И при этом ты делаешь приложение, которое работает с базой данных по сокету и тебя не парит этот факт "ааааа производительность".
Все зависит от деления монолита.
917 2508255
Правильно ли я понял, что в майкрософт стор щас нихуя залить нельзя?
918 2508261
>>508255
Можно.
919 2508272
Повторяю сишку, вот такая задача:
Калипта Анны, которая считается самой быстрой птицей в мире относительно своего размера, может развивать скорость до 80 км в час.

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

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

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

Я вот сейчас час думал над тем, что требуется, даже заснул от того, что сложно понять. Что она. По условию задачки. Летит на максимальной скорости и надо просто количество км с нуля каждый час выводить. ПРИ УСЛОВИИ, ЧТО НЕПРЕРЫВНО ЛЕТИТ ПО ПРЯМОЙ!!!
Пиздос, ну кто так условия ставит.
А как проходит ваш день?
920 2508277
>>508272
АЛГ ПТИЦА
НАЧ
ДЛЯ И ОТ 1 ДО 5
НЦ
ВЫВОД И * 80
КЦ
КОН
921 2508307
>>508277
Не плодить лишние сущности!
for (var i=80;i<=400;i+=80){
Console.WriteLine(i);
}
922 2508308
>>508138
годно, спасибо
923 2508310
>>508307
Enumerable.Range(1, 5).Select(i=>Console.WriteLine(i*80));
924 2508317
>>508272

>которая считается самой быстрой птицей в мире относительно своего размера,


Пиздос у составителя задачи хлебушек в голове. За каким хером тут ремарка о размере. Вот поэтому сидишь и думаешь, что где-то проебался, думая куда тут размер приткнуть.
925 2508322
>>508317

>За каким хером тут ремарка о размере


Для общего развития же
926 2508331
>>508317
Вкатунов надо сразу приучать находить суть в многостраничных доках кабана, где много лишнего описания, не имеющего отношения к самой реализации.
927 2508333
>>508317
Это хорошая идея, чтобы человек фильтровал информацию. Школьники и первокурсники очень туго воспринимают условия задачи и тот факт, что половина ответа всегда содержится в вопросе.

Когда научишься воспринимать инфу в целом, то даже будешь ловить кайф от затерявшихся между строк нюансов. Появится своего рода наблюдательность.
Capture.JPG17 Кб, 401x361
928 2508404
шарпаны, есть вопрос по дженерикам и интерфейсам
вот я хочу определить интерфейс такого вида
у меня есть два источника данных, один выдает float, другой выдает int, я бы хотел чтобы класс с этим интерфейсом мог одновременно и источник с int и источник с float обрабатывать, чтобы не городить дичь типа
MyClassInt : MyInterface<int>
и
MyClassFloat : MyInterface<float>
специально под каждый источник данных
как это лучше сделать?
929 2508418
>>508404
Ну так ты производный класс тоже сделай дженерик.
Ты должен определять тип данных класса на стадии его объявления.
2022-11-0800-34-55.png550 Кб, 960x869
930 2508423
931 2508425
>>508418
так источник данных уже на определенном классе будет
может сделать проверку в конструкторе? типа
if(typeof(T) == typeof(int)) использовать этот метод обработки
и т.д.
932 2508447
>>508425

>if(typeof(T) == typeof(int))


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

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

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

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

Если мы говорим про функции класса, где ты хош интеджер запихнул в аргумент, а хош флоат, то это уже называется перегрузкой. Но как ты наверно понял, удобство использования компенсируется неудобством создания. Для перегрузок тебе придется писать код несколько раз.
933 2508450
>>508447

> с дженерик аргументами, то обозначать тип не нужно.


т.е. два экземпляра класса
934 2508451
>>508450
да е-мое.

>По факту у тебя будет две функции, одна под int, другая под float.


т.е. два экземпляра класса
935 2508490
>>508447
так в итоге мне придется делать:
2 экземпляра класса-потребителя данных c дублированным кодом и 2 экземпляра класса-форвардера данных с дублированным кодом
это кмк уродство выйдет
вот бы было возможно сразу на старте узнавать что за данные и, ну не знаю, подменять внутренний делегат на doInt/doFloat/doEtc
image.png395 Кб, 604x452
936 2508498
Сап дотнетач, фронтедодебил с дно.жс нод.жс на связи.

Занимаюсь этой хуетой уже последние лет десять до этого были жалкие попытки вкатиться в гейдев через юнити. Последние пару лет всё больше думаю перебраться во что-то более стабильное и менее всратое нода катится непойми куда, фрагментация с дено/бан/пизда-твоего-трапа, низкое качество проектов, без пакетов хуй что сделаешь, 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?
image.png395 Кб, 604x452
936 2508498
Сап дотнетач, фронтедодебил с дно.жс нод.жс на связи.

Занимаюсь этой хуетой уже последние лет десять до этого были жалкие попытки вкатиться в гейдев через юнити. Последние пару лет всё больше думаю перебраться во что-то более стабильное и менее всратое нода катится непойми куда, фрагментация с дено/бан/пизда-твоего-трапа, низкое качество проектов, без пакетов хуй что сделаешь, 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?
Capture.JPG24 Кб, 1014x324
937 2508514
у меня уже жалкие остатки мозга плавятся
почему ТУДА(метод Set, который принимает float) каст из инта не нужен, а ОТТУДА(int который передается обратно через ValueChanged) без каста в инт нельзя? в чем разница?
938 2508515
>>508514
ну так int может implicit cast в float без потерь точности (не дробное же число)
а обратно cast теряет точность и поэтому требует явного указания.
939 2508517
>>508515
теперь понятно, но все равно странно
мне просто казалось что C# это строгие типы и вот это все
а тут можно если на пол-шишечки, а вот тут нельзя, а тут вообще объект заворачиваем...
940 2508518
>>508517
В шарпе есть такая штука implicit/explicit operator
Но мало кто помнит о ней
941 2508539
>>508498
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 от жид брейнс (в нормальных компаниях дают).
У меня коллега как раз сидит на маке и проблем не испытывает. Другой кстати, вообще на арчике. Тоже без проблем.
image2022-11-0808-21-11.png22 Кб, 459x173
942 2508551
У меня так нихрена и не завёлся многопоток, так что перефразирую вопрос
Есть обработчик нажатия кнопки, и надо сделать так, чтобы chat.Send() не вешал мне UI, при этом исправно обновляя его (там биндинг). Попытка сделать через таск попросту не работает
943 2508554
>>508551
код на скрине плох. Он запускает таску и не дожидаясь ее окончания очищает текст в надежде, что таска успеет запуститься раньше очистки.

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

Но вообще вся затея неправильная. Нужно сначала очищать поле ввода, а сообщение ставить в очередь на отправку с обдумыванием "а что делать если оно не отправится"
944 2508556
>>508554
Мне нужен любой костыль, который просто это запустит, потому что это лаба, читай MVP, а не бизнес-приложение. async/await тоже ничего не делали. Про диспатчер не первый раз слышу, но он как-то крайне странно выглядит, и как его прикрутить я не понял. А ещё, что он собственно даёт
1667887323013.png51 Кб, 557x258
Чё? Почём? Куда? 945 2508564
Итак, уважаемые знатоки, внимание на экран!
Вопрос от Василия Пупкина из города Костромы. Василий обнаружил, что код можно написать тремя разными способами. Детали вопроса на экране.
Время пошло.
...
Отвечает Александр Друзь:
946 2508573
>>508564
Друзь говорит что всё это яйца, но в анфас последний вариант
947 2508582
>>508573
Ещё варианты ответов будут? МБ Поташев что-то желает добавить?
948 2508592
Парни, вопрос больше к джунам и мидлам. Как сейчас в условиях санкций с работой? Выучил шарп и стою перед выбором: учить asp.net или сменить язык. Чекнул hh.ru там вакансий для джуна очень мало
949 2508594
Парни, вопрос больше к джунам и мидлам. Как сейчас в условиях санкций с работой? Выучил шарп и стою перед выбором: учить asp.net или сменить язык. Чекнул hh.ru там вакансий для джуна очень мало
950 2508603
>>508592

>Выучил шарп


А как ты это определил? Тоже хочу выучить, всё никак не могу
951 2508605
>>508603

> А как ты это определил?


Хелловорлд конпелируется без ошибок - значит выучил! Еее! Где мои 1000ККК зряплаты!?
952 2508610
>>508594
Меняй на джаву, там больше вакансий
953 2508646
>>508556
Деспетчер инвок выглядит странно, но без него никуда.

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

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

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

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

А это настройки портала:
DispatcherPriority.Background
954 2508658
>>508646
Тут выше кто-то говорил, что биндинги могут UI даже из другого потока обновлять. Проблема в том, что таск, который я запускаю, в итоге ничего не делает. На второй стороне попросту не принимаются символы

Диспатчер это единственный вариант что-то асинхронно с UI запустить, чтобы при этом я мог этот UI обновлять?
955 2508683
>>508658

>Тут выше кто-то говорил, что биндинги могут UI даже из другого потока обновлять.


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

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


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

>Диспатчер это единственный вариант что-то асинхронно с UI запустить, чтобы при этом я мог этот UI обновлять?


Биндинги. Но там нужна предварительная настройка.
Тебе не избежать инвоков. Вот возьми и создай отдельное решение с тестом инвоков. Можешь выложить сюда.

Меня они тоже бесят и я скорее их использую как заклинание.
А так там всякие сложности типа объект А ожидает синхронизации с объектом Б, и наоборот объект Б ожидает синхронизации с объектом А.
Есть Application.Current.Dispatcher.BeginInvoke
А есть textbox.Invoke
956 2508757
>>508683
Так я и работаю с биндингами. Как мне их донастроить, чтобы они работали с асинхронностью/в отдельном потоке, при этом изменяя некоторый текст в гуе?
957 2508774
>>508757
Хз, биндинги у тебя без асинхронности работают? Т.е. ты меняешь свойство из данных и у тебя автоматом меняется свойство твоего тексбокса? Стоит Mode=TwoWay и все такое?
958 2508784
>>508774
Всё так. Теперь надо добавить асинхронности, потому что тяжёлая операция и бла-бла-бла
bandicam 2022-11-08 15-39-40-117.mp41,1 Мб, mp4,
1224x576, 0:24
959 2508871
>>508784
Возможно ты используешь invoke. Попробуй BeginInvoke.

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

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

И на видерил (извини шо бейсик) я запустил одновременно два цикла.
раньше вроде был еще EndEnvoke и он должен был идти после BeginInvoke, но сейчас его не нашел.
960 2508872
>>508871
Нене, у меня на данный момент только то, что было на скрине закомменчено. Такс не сработал, так что я ищу обходные пути
Есть только обработчик кнопки и в нём тяжёлая функция, которую желательно бы стартануть где-нибудь в другом месте, чтобы она при этом обновляла гуй
961 2508888
>>508872
Перед чат.сенд просто await Task.Delay(50); поставь и всё
962 2508889
>>508872
Ну да, выносишь функцию отдельно, это первым делом.

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

Если как у меня в примере, где функция очень часто обращается к гуи, то используешь InvokeAsync.
963 2508891
>>508888
Плохая идея, а если операция будет длиться дольше 50 миллисекунд?
964 2508898
>>508889
Она и так вроде как отдельно вывешена. Там рядом разве что очистка поля ввода
Частота зависит от пользователя. Возвращает она примерно нихрена, поэтому я не знаю, куда внутри await засовывать
965 2508933
>>508658

>что биндинги могут UI даже из другого потока обновлять


если мы говорим ПРО WPF, то да - свойства вьюмодели можно обновлять из другого потока, а биндинг который привязан к этому свойству обновит гуи через контект синхронизаци (конечно затрачивая на это время и тормозя алгоритм в другом потоке)
(но при этом не Add/Remove у биндинга коллекций)

на твоем скрине вообще не пойми что это впф или винфрмс и где там биндинги или хотя бы обновление чего либо в гуи.
966 2508935
>>508898
Я понял в чем у тебя проблема. Стринг хоть и притворяется структурой, но он все же ссылочный тип.
Когда ты таску передаешь ссылку, то таск начинает шатать ее и не давать другим заюзать. И у тебя случается подвисон.

Передай текст во временную переменную (любые операции со строкой порождают новую строку), которую потом отправляй в Task.
967 2508940
>>508933

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



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

Результат: подвисон.
968 2508945
>>508940

> к депенденси проперти типа string.


кто говорил про депенденси проперти?
969 2508946
>>508940
И да, проперти — это часть класса MainWindow, и биндиг вероятно не виноват в неисполнении своих обязанностей т.к. виснет все окно.

Но ведь когда ты создаешь экземпляр класса вьюмодели, то ведь с этого омента этот экземпляр начинает принадлежать STA-потоку окна.
970 2508957
>>508935
Падажжи, в таск отправляется делегат, в моём случае лямда, которая уже принимает стрингу. Плюс та самая стринга больше нигде не юзается. Попробую, конечно, но звучит странно
971 2508961
>>508945
Ах ну да.
Если юзать INotifyPropertyChanged, то обновление свойства будет по событию. Проверил — работает.
972 2508962
Почему восьмая жава будет поддерживаться вплоть до 2030 года, а у дотнета лтски дай бог 3 года обновы получают?
973 2508964
>>508935
Однако ж, заработало. Спасибо
974 2508967
>>508962
потому что жава это говно мамонта, где сидят заскорузлые жависты, которые не умеют в новое.
А шарписты нормальные ребята и с радостью отбрасывают устаревшее говно и не считают нужным его продолжать жрать.
975 2508970
>>508957
Ну я тоже думал что хрень, но с новым экземпляром стринга у меня завелось. Но если я передаю ссылку напрямую, то виснет.
Передается ссылка на оригинальное совйство и таск начинает эту ссылку блокировать для остальных.

Алсо >>508961 как анон писал >>508935 , если ты биндил к свойству через INotifyPropertyChanged, то там вообще не важна занятость свойства. Свойство отправляет событие и элемент гуи работает именно с событиями.
976 2508972
>>508970
Фикс:
как анон писал >>508933
977 2508974
>>508970

>Свойство отправляет событие и элемент гуи работает именно с событиями.


не думаю. думаю что биндинг получает событие, достает значение свойства из объекта в абы каком потоке, а потом уже маршалит его в контекст синхронизации для рисования в гуи.
978 2509034
Ну если посмотреть на LINQ в нет7 то видим, что ускорение там через векторизацию, что...ну так то редкий случай, ведь обычно LINQ это всякие Where
979 2509148
как эффективнее всего проходить такую структуру?
вот код приложил, допустим если на каждом объекте есть условие(изменился). они могут изменяться, например child1 будет изменен, child2 нет, если родитель не изменен, то обновить только child1, в противном случае всех. я как-то так хочу сделать.
как вообще подобные иерархические "деревья" строят?
я нигде не учился и не программист вообще не бейте палками
980 2509183
>>509148
Когда нужно обходить графовые структуры , то лучше всего использовать BFS( https://e-maxx.ru/algo/bfs ) или DFS ( https://e-maxx.ru/algo/dfs ), в зависимости от того, какой порядок тебе нужен. Лучше всего взять стандартную реализацию одного из них (они простые, всего-то стэк/очередь + цикл) и дополнить своими кусками кода.
981 2509198
Катите, глупцы!
982 2509207
>>508962
Во первых .Net Framework 4.8 поддерживается до сих пор и будет поддерживаться до тех пор пока жива 10-я винда, а это минимум до 2025-года. А с учетом того, что и в 11-й он будет, то и того дольше.
А у .Net Core и .Net смысла нет дольше LTS-ки держать, т.к. новые версии - это по сути и есть мажорные обновы платформы и переход с одной, на другую вообще минимальные усилия по меркам бизнеса занимает.
Если проекты построены нормально (а чаще всего это так, т.к. в шарпе исторически и традиционно более жесткие требования к чистоте кода), то переход с версии на версии вообще между делом может происходить в течение пары спринтов.
983 2509209
>>509148
Гугли "Обход дерева в ширину" и "Обход дерева в глубину" и выбирай то, что соответствует твоим потребностям.
984 2509215
>>509198
Заметил, что в каждом треде каждого раздела найдется такой пассивно-агрессивный попукиватель.
985 2509220
>>509198
Перекати.
986 2509421
Там .NET 7 вышел а вы молчите
987 2509425
>>509421
А тебя мы для чего держим
988 2509434
>>509421
Тс. Не пали контору.
.png23 Кб, 634x263
989 2509441
>>508551
Делай так. Базарю, еще захочешь!
990 2509448
Такой тупой вопрос.
Есть ли какой-то простой способ узнать оригинальный IPадрес-порт по которому моя хуйня доступна снаружи?
Ну. Т.е. смотрите. Моя хуйня - за натом. Сидит на 80 порту на виртуалке. Одмены настроили проброс. И вот я - забываю на каком порту внешнего IP-адреса висит моя хуйня. Хочу чтобы на веб-морде можно было посмотреть этот адрес-порт, чтобы если кому-то надо - не лезть в почту и не искать проброс.
991 2509470
>>509448
решается очень просто - сканируешь весь диапазон IP
их не так уж много, всего чуток миллиардов.
992 2509478
>>509448
Сделать запрос к какому-нибудь checkip.dyndns.org, но так можно узнать только IP. Так что лучше вынести эти данные в конфиг, всё равно они будут редко меняться.
993 2514360
>>484368 (OP)
Я в глаза долблюсь или 41-й тред по шарпу смыло?
994 2514362
>>514360

> Я в глаза долблюсь или 41-й тред по шарпу смыло?


Смыло(
995 2514367
>>514360
У меня даже из подписок тред пропал
996 2514376
Видимо какой то жавист в админах.
997 2514378
Привет , есть два вопроса
1) Решил поизучать с# и столкнулся с проблемой запуска кода в стандартном проекте, не могу запустить и кнопка запуска серого цвета, с хот кеем тоже самое
2) Я немного изучаю Java и хотелось бы узнать чем же c# по вашему мнению лучше и в каких областях имеет преимущество.

Спасибо
998 2514401
>>514378

>столкнулся с проблемой запуска кода


Какая IDE хоть?

>чем же по вашему мнению лучше


По "нашему мнению" всем чем можно. Для меня прежде всего удобство и широта возможностей.
Можно ебашить жесткий ООП, лайтовую функциональщину и ламповую байтоеблю
Можно в винду, можно в линукс, а можно и в сраку мак
Можно в десктоп, можно в кровавый энтерпрайз, можно в иссушающий геймдев.
Сахарок, ммм.
Главное, что в любой области которую выберешь, при использовании шарпа все это делается легко и приятно, особенно после прихода Core.
999 2514409
>>514378
Джава лучше. Больше вакансий, легче изучать. Стек не зависит от хотелок одной фирмы. Ничего не переделывается в каждой версии, а имеется обратная совместимость, т.е. код для джавы 1.0 можно выполнить на джава 18.
1000 2514412
>>514409
код!!! шарпа тоже можно выполнить
речь идет про бинарную совместимость, но из за этого у жавы хуже рантайм - типов нет, структур нет - все в угоду старья (legacy)
1001 2514413
>>514412
Структуры очень спорный момент. Не факт даже, что они ускорят выполнение, но вот проблем (особенно в многопоточных приложениях) добавят.
1002 2514435
>>514413
Что значит не факт. Еще какой факт.
Даже в жаве примитивные типы оптимизированы как структуры ибо это имеет значимый эффект. А в шарпах есть ref структуры, что еще быстрее.

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

Зато у жавы есть котлин который неплохо смотрится на фоне жадного до выразительности шарпа (аж трисёт)
1003 2514466
>>514401
Visual Studio 2022
1004 2514473
А чаво 41 тред удалили?
1005 2514474
джавист на мочухе.
1006 2514476
>>514474
Да хуета какая-то. В 3д-разделе тоже удаляли целые треды, посвященные конкретному пакету, и тоже были теории на подобии твоей, мол админ не любит тот софт.
Но слишком много совпадений.

Что с двачем происходит? Бардак какой-то.
1007 2514478
Почему когда учишь сам сишарп, то всё интересно, куча энтузиазма, а когда доходишь до изучения ASP.NET, то начинается жуткая депрессия?
1008 2514480
>>514478
хз. так то асп.нет неплохая штука в плане реализации
жаль что MVC если для стандартных сайтов со страничками
но обычно ж пишем вебапи, а там нормусик
1009 2514484
>>514480
Я вообще не понимаю что и к чему там. Куча кода, куча каких-то файлов-папок. А вместо объяснения, говорят пиши контроллер в такой-то папке, иначе ничего работать не будет. Почему надо писать там? Зачем нужны другие папки? Что там наворочено под капотом?
Вообще, нельзя было сделать просто набор методов для работы с HTTP? А уже где и что размещать, программист решал бы сам.
1010 2514487
>>514466
Показывай проект или скрины хотя бы тогда.
1011 2514488
>>514484
Потому что конвенция.
Конвенция дает структурность и понимание, чтобы был порядок и все работало как положено, и чтобы левый программист не тыкался как слепой котенок не понимаю как у тебя все организовано

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


ну почему нельзя? льзя. вот сделали для любителей такого "как в тех микрофреймворках вот мы тоже так могем"
и для любителей вебформс тоже сделали подобие.
Но конкретно asp.net MVC он исповедует MVC как там дедушка Ruby On Rails завещал всем делать - потому эти все фреймворки похожи в разных языках (кроме питона в силу его особой модульности) и вот я после пхп в асп.нет сразу знаю где чего лежит.
(хотя конечно МVP, с которым я имел дело в пхп, удобнее)
1012 2514490
>>514484
Читай "Asp.net в действии", есть на русском, там все исчерпывающе объясняют.

> Почему надо писать там?


Общепринятое соглашение. Впрочем никто не мешает задать собственные пути для контроллеров и прочего.
1013 2514492
>>514484

>А вместо объяснения, говорят пиши контроллер в такой-то папке, иначе ничего работать не будет. Почему надо писать там? Зачем нужны другие папки? Что там наворочено под капотом?



Ну так прекращай смотреть говновидосики с говнокурсами и начни читать умные книжки и статьи. Там все это написано.
1014 2514493
>>514490

>Asp.net в действии


Дак книга не успела выйти, а уже устарела. Там дотнет 3, а сейчас уже 7. Ни один пример даже не откомпилируется.
1015 2514495
>>514493
На русском второе издание, там net 5.
1016 2514504
Ебанутые, вы нахуя тред удалили?
1017 2514508
>>514504
Оп срал политикой в мвп треде
1018 2514509
>>514508
У него автоматически удалили все посты и заодно его треды?
1019 2514512
>>514509
Видимо моча психанула.
1020 2514513
>>514495
Как раз с 5 на 6 самый сильный слом произошёл. Всё поменялось кардинально.
1021 2514514
>>514513
да они упоролись
старое осталось работать, но новый шаблон изменился
1022 2514517
>>514513
Что такого кардинального? Всего лишь убрали класс стартап, переместив все в билдер. Все методы остались прежними.
1023 2514524
>>514517
Роуты тоже поменялись
1024 2514525
посоны, посоветуйте как лучше, вот у меня два варианта, сейчас использую первый, второй дикая дичь и я не уверен даже что это работать будет
но мне бы хотелось чтобы и ShapeMaker и ShapeTemplate не знали про конкретные Shape
1025 2514533
>>514525
Ну первая этакое подобие абстрактной фабрики (паттерны это модно)
второе это просто фабрика (паттерны это модно)
а учитывая что мы не знаем что там происходит
если бы мы знали что это такое, мы не знаем что это такое
1026 2514571
Как мне выбрать несколько папок? FolderBrowserDialog позволяет выбрать только одну, OpenFileDialog только для файлов.
1028 2514800
По каким книгам лучше учить ASP.NET в 2023 году?
1029 2514834
>>514800
Metanit
1668582027592.jpg20 Кб, 300x400
1030 2514847
1031 2515069
>>514834
Там устаревшая инфа по 6 дотнету, а сейчас уже 7

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

Когда ожидать книги по дотнет 7?
1032 2515072
А нужно учить всякие кафки, рэбитсыМК и кубернетисы всякие? Или достаточно ASP.NET + EF?
1033 2515084
1034 2515094
>>515069
Вытекаешь
1035 2515098
>>515094
Это микрософты вытекают. Сколько можно обновлять дотнет? Почему нельзя сбавить темпы и выкатывать новую версию раз в 3 года хотя бы. Вы сами-то успеваете отслеживать все эти изменения?
1036 2515127
>>515072
RabbitMQ - обязательно
Кафка - встречается крайне редко. Если знаешь рэббит, то сможешь в любое время и ее изучить.
Кубер - не нужен, докер - нужен.
1037 2515143
>>515098
Если бы так и было, у нас до сих пор был бы .net framework, никакой кроссплатформенности, никакой контейнеризации, никакого linq и т.д.
Маши крыльями или сдохнешь.
1038 2515151
>>515143
Везёт же
1039 2515202
Мне прислали приглашение на собес, в компанию, где используется asp.net mvc с net framework 4.6. Между ним и asp.net core большая разница?
мимо джун без опыта
1040 2515215
>>515202
Там наверно IIS сервер ещё. Завидую!
Screenshot1.png47 Кб, 1153x469
1042 2515287
>>514487
Кто-то может сказать почему не хочет запускаться? НА всякий случай переустановил и не помогло
1043 2515290
>>515287
Удали всякие юнити, профилировщики и прочий мусор, что ты наустанавливал.
1044 2515294
>>515287
- Выбран не тот проект для старта. Нам не видно же
- не тот фреймворк. Может там тот что нет в системе
- русификация студии самая вероятная причина
1045 2515314
>>515294
У меня русифицированная студия, полет нормальный.
Видна субъективная неприязнь к русификации.
1046 2515316
>>515294

>Выбран не тот проект для старта.


Стартанет выбранный. У него вообще нет доступа.
1047 2515332
>>515287
Сделай полный скрин экрана, чтобы было видно код, обозреватель решения и панель инструментов.
1048 2515510
Тред запилите, шарпочане
1049 2515514
>>515510
Запили.
1050 2515549
>>515510
Админ, ты? Зачем удалил тред?
1051 2515576
Можно как-то документировать кортежи?
Когда у меня функция возвращает кортеж, то у меня во всплывающей подсказке над именем функции идет подпись "Types:", но там пусто.
1052 2515632
>>515314

>У меня русифицированная студия, полет нормальный.


а у дофига новичков нет ибо

>Видна субъективная неприязнь к русификации.


нерусифицированная студия выдает ошибки на англ языке, которые можно загуглить в инете.
Та же херня с русифицированными исключениями.
TupleExample.gif403 Кб, 575x356
1053 2515678
>>515576
В Visual Studio по дефолту все показывается.
1054 2515733
Ну и нахуя потерли тред?
1055 2515864
Киньте картинок для переката
1056 2515866
>>515632

>нерусифицированная студия выдает ошибки на англ языке


У каждой ошибки есть код. Этот код еще и URL ссылка, которую можно тыкнуть и перейти сразу в MDSN.
1057 2515882
Насколько часто уместна подписка на событие?
Допустим я хочу, чтобы событие MouseMove работало только при зажатой левой кнопке.

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

И это с русскоязычной студии
1062 2515945
1063 2515948
>>515944
Частный случай
Если бы все было так просто то SO был бы чист от этих вопросов
И гугл выдача тоже
1064 2515952
>>515864
В общем сам нафотошопил, сильно не бейте
https://2ch.hk/pr/res/2515951.html (М)
1065 2516136
>>508594

>там вакансий для джуна очень мало


Джуны никому не нужны вне зависимости от стека технологий. Ну только разве если 1С выучишь.
Ищи крупные компании, которые берут джунов и стажеров, и смотри, какие технологии там используются.
Screenshot2.png183 Кб, 1919x1079
1066 2516141
1067 2516158
>>516141
Так у тебя проекта нет. Разумеется просто сам cs файл скомпилить нельзя.
1068 2516169
>>515948

>SO


Там задают все что угодно и даже спрашивают как какать.
1069 2516172
>>516141
А что ты хотел там компилировать? Где точка входа?
1070 2516217
>>516158
Ок, какие шаги мне нужно сделать и какой код написать, чтобы была точка входа ?( смотрел туториал , там тип создал такой же проект и сразу запустил … ) спасибо
1071 2516227
>>516217
Просто создай новый проект консольного типа и все. В него уже будет включен класс Program с методом Main, который ты сможешь запустить.
1072 2517669
А теперь вопрос:
Во всяких TreeView и ListView событие SelectedItemChanged срабатывает по MouseDown (а не по MousUp), что делает невозможным такие вещи, как Drag n Drop.

Я уже устал назвать WPF дебилизмом. Но как это дерьмо обходить? Есть возможность самому узнать на как какой итем указывает курсор?
1073 2517716
>>517669
Какой же говнокод получился.

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

А потом событие MouseButtonUp заглядывает во вьюмодель к упомянутому свойству выше и "выделяет" его.
1074 2517717
>>517716

>и "выделяет" его.


Выделяет итем, хранящийся в этмо свойстве*
1075 2518074
>>517669

>Но как это дерьмо обходить?


Для начала перестать сидеть в заброшенном треде
1076 2523295
>>515215
А я с ним работал
У нас еще девопса не было, поэтому любое обновление говносайта шло через ручную остановку IIS и копирования всех измененных файлов
Ну и создания папочки бекап_дата
Тред утонул или удален.
Это копия, сохраненная 29 ноября 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски