Двач.hk не отвечает.
Вы видите копию треда, сохраненную 28 июля 2023 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред лучшего языка на планете Ждем лета... 1. Ресурсы: — https://dotnet.microsoft.com/learn — http /csharp/ С! 2697488 В конец треда | Веб
Тред лучшего языка на планете

Ждем лета...

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# для десктопа
https://docs.microsoft.com/ru-ru/dotnet/desktop

4. С# для игр
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
Прошлый тред: >>2649578 (OP)
2 2697494
Вопрос задам друзья.
Поначалу пытался вкатиться во фронт с тайпскриптом. Учил долго его но по итогу понял что не мое. Паралельно с фронтом зачастую ковырял бэк на node.js и это мне нравилось больше. Решил все же оставить фронт и попробовать бэк. Выбрал сначала golang но ничерта в нем не понял и забросил его. Решил попробовать на сишарпе. В итоге язык мне очень сильно вкатил. Подучил синтаксис его и с большим удовольствием запилил пару примитивных тудушек на нем. Теперь стоит вопрос целесобразности углубления в изучение экосистемы шарпа. Стоит ли это делать? Реально ли подучить стек на уровне джуна не потратив больше полугода на это? Очень вкатывает этот процесс мне, буквально по 6 часов в день минимум это делаю но времени у меня не очень много, деньги заканчиваются.
3 2697495
>>697488 (OP)
БАМП!!!
4 2697496
>>697494
Если заниматься интенсивно, то вполне можно. В веб-разработке довольно хорошие позиции имеет. Только это, анон, готовься к тому, что платформы под шарп будут жрать оперативку компа, как ебанутые.
5 2697505
>>697494
Я подушню.

Зависит от первоначальной базы. И куда ты там вкатываться собрался.

Типа мое мнение, как человека, который сначала пришел на завод, писал на си, и только спустя пару лет перекатился в шарпы - знания того, кто по метаниту условному - изучил минимально необходимый уровень для работы - говно полное. Типа да, можно взять такого, если команда сильно загружена и на него тупую работу скинуть, по деланью ручен и все такое. Но как только возникает какая-то специфичная хуйня, все, пизда.
Ну. Типа вот ты изучил шарп. Ок. Да. Инструментарий. Асп эти. Возникает задача - настройки подключения к БД - менять "на лету". Т.е. админ должен иметь возможность просто взять и изменить строку подключения для всего приложения. Вроде элементарная задача, но многих приучили - вот есть файлик appsettings.json, я всю жизнь так подключался к БД, ваша задача - нереализуема на шарпе, извините. Утрирую конечно и задача обычно не такая дебильная. Просто про сам майндсет говорю.

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

Но. Если цель просто найти работу и чтобы денежку платили, а тебе в принципе похуй, что ты будешь унылой рутиной заниматься, которую более шаристые делать просто не хотят - то да, за полгода освоить чтобы вкатиться на 40-60к можно.
6 2697526
>>697496
Это фигово. У меня ноут не шибко мощный, 16 гигов оперативы есть но все же. Видимо линь поставлю не слишком требовательный.

>>697505
Услышал тебя, благодарю. К сожалению у меня нет времени чтобы досконально разбираться в том что ты описал. Не из-за лени, мне действительно очень вкатывает процесс обучения и написания кода на шарпе, даже если это рутинная хуйня. Просто очень уж надо поскорее начать денежку получать поскольку я сейчас без работы а через несколько месяцев деньги закончатся. Да могу экономно пожить где-то пол года но все же. Но если есть советы как выстроить обучение чтобы научиться этому то с радостью выслушаю и приступлю к ним как только базовые знания экосистемы шарпа и баз данных получу.
7 2697590
>>697526
16 Гб терпимо, помниться я на 6 ГБ диплом писал, хотя изругался пиздец как.
В шарпе пиздатый синтаксис, и очень близок к канонiчному ООП.
Старые ролики с ютуб-канала ExteremeCode в свое время помогли освежить память относительно ООП.
А по работе все равное первое время будешь нубачить, вкатываясь в особенности работы, дважды подтверждено лично.
8 2697782
>>697526
Если нужно прямо срочно - бери метанит и начнись по урокам проходиться. Если базы совсем нет - берешь и пробуешь что-нибудь с изученным сделать по быстрому.

Из того что надо чтобы джуном взяли в что-то с вебом связанное:

База по программированию(то что обычно на уроках информатики было)
База по синтаксическим конструкциям языка (ветвления, циклы, методы, классы, вот это вот)
Основные структуры данных - массивчики, связные списки, деревья, хешмапы, вот это вот все
Минимальное понимание, чем управляемый код от неуправляемого отличается
Минимальное понимание, что такое среда выполнения
Минимальное понимание, что такое сборщик мусора
Работа со строками
Работа с коллекциями
LINQ
Исключения и их обработка
База по ООП (инкапсуляция, наследование, полиморфизм, хорошо если еще пару паттернов знаешь и сможешь объяснить про них чутка)
Вот это вот - это прям база-база, если ее нет - дальше спрашивать не будет смысла

Дальше - уже тут будет решаться, берут тебя или нет на грязную работу:
Веб -
Клиент-серверные приложения, че такое клиент, че такое сервер. К чему относится тот код, который ты будешь писать.
HTTP - че зачем и почему, какой уровень модели OSI вся эта духота. Структура HTTP-запроса, какие методы, че такое заголовки, почему всегда 200 - не оч хорошо
REST - ну, основные моменты
EF/EFCore - че зачем почему
Identity - че зачем почему
Авторизация, политики и вся эта вот духота
DI - че зачем почему, обязательно надо сказать, что это охуенно и вообще.
Асинхронщина - на базовом уровне, че зачем и почему.
Минимальное понимание что такое юнит-тесты, как их писать, какие фреймворки для шарпа используются.
Если не повезет - MVC, Blazor и вот эта духота.

Десктоп -
Потоки - че такое основной поток приложения, че в шарпе делает volatile, синхронизация доступа, блокировки, гоники-хуенки
Асинхронщина - на базовом уровне, что зачем и почему
MVC - че каждая буква значит и пояснить зачем оно надо
MVVM - че каждая буква значит и пояснить зачем оно надо
EF/EFCore - че зачем и почему
Работа с ресурсами приложения
Локализация
Стилизация

Вот это вот - минимально необходимый набор, чтобы в большинство контор на трейни-джуна попасть и за миску супа начать работать. Дальше - по результатам будет.
8 2697782
>>697526
Если нужно прямо срочно - бери метанит и начнись по урокам проходиться. Если базы совсем нет - берешь и пробуешь что-нибудь с изученным сделать по быстрому.

Из того что надо чтобы джуном взяли в что-то с вебом связанное:

База по программированию(то что обычно на уроках информатики было)
База по синтаксическим конструкциям языка (ветвления, циклы, методы, классы, вот это вот)
Основные структуры данных - массивчики, связные списки, деревья, хешмапы, вот это вот все
Минимальное понимание, чем управляемый код от неуправляемого отличается
Минимальное понимание, что такое среда выполнения
Минимальное понимание, что такое сборщик мусора
Работа со строками
Работа с коллекциями
LINQ
Исключения и их обработка
База по ООП (инкапсуляция, наследование, полиморфизм, хорошо если еще пару паттернов знаешь и сможешь объяснить про них чутка)
Вот это вот - это прям база-база, если ее нет - дальше спрашивать не будет смысла

Дальше - уже тут будет решаться, берут тебя или нет на грязную работу:
Веб -
Клиент-серверные приложения, че такое клиент, че такое сервер. К чему относится тот код, который ты будешь писать.
HTTP - че зачем и почему, какой уровень модели OSI вся эта духота. Структура HTTP-запроса, какие методы, че такое заголовки, почему всегда 200 - не оч хорошо
REST - ну, основные моменты
EF/EFCore - че зачем почему
Identity - че зачем почему
Авторизация, политики и вся эта вот духота
DI - че зачем почему, обязательно надо сказать, что это охуенно и вообще.
Асинхронщина - на базовом уровне, че зачем и почему.
Минимальное понимание что такое юнит-тесты, как их писать, какие фреймворки для шарпа используются.
Если не повезет - MVC, Blazor и вот эта духота.

Десктоп -
Потоки - че такое основной поток приложения, че в шарпе делает volatile, синхронизация доступа, блокировки, гоники-хуенки
Асинхронщина - на базовом уровне, что зачем и почему
MVC - че каждая буква значит и пояснить зачем оно надо
MVVM - че каждая буква значит и пояснить зачем оно надо
EF/EFCore - че зачем и почему
Работа с ресурсами приложения
Локализация
Стилизация

Вот это вот - минимально необходимый набор, чтобы в большинство контор на трейни-джуна попасть и за миску супа начать работать. Дальше - по результатам будет.
9 2697785
>>697782
Да. Если веб - скорее всего еще докер, на уровне - можешь объяснить че это такое, написать простейший Dockerfile для сборки и запуска в докере и умение отлаживать инструментами студии приложение в докере крутящееся.
10 2697867
>>697782

>почему всегда 200 - не оч хорошо


очень спорное заявление. кодировать ошибки логики в хттп ответы - вот что есть дичь.
А разделение ошибок транспорта и ошибок логики - как раз очень даже хорошо.
11 2697969
>>697782
Не слушайте толстого, вкатуны. Не каждый "мидл" по его списку пройдется и без ошибок со знанием пояснит. А от джуна подавно ни один адекватный лид такого объема знаний не ждет. Чтобы крудошлепить имплементации бизнесовых методов вам эти знания не нужны. Умейте кодить и знайте гит. Фреймворкам на работе научитесь. На собесе косите под молодого Торвальдса. Если судить по молодежи с моей работы, навыку "говорить о чем угодно со знанием дела, нихуя при этом не понимая" сейчас в универах хорошо учат. Это основное умение чтобы собес пройти.
12 2697980
>>697867
Двухсотка-додик заказывает пиццу.txt
13 2697985
>>697980
бла бла. бла бла бла. ресты хуесты
а как берешь апи какого нибудь крупняка типа клауды или гугл - и внезапно они шлют 200. Может они чего то не знают....или наоборот - ЗНАЮТ )
14 2698015
>>697969
Без ошибок - надо только первую часть.
Вторая часть - должна показать, что ты хотя бы слова такие знаешь и слышал про них. Я не говрил нигде, что нужно это наизусть знать вплоть до кишочков. Но если ты банально не знаешь что такое HTTP и как сделать свой эндпоинт для обработки запроса - тебя брать в команду на работу - нет смысла.
И я таки напомню. АйТи компания и конекретная команда - не вуз и не курсы, которые тебя обучить и "вырастить" хотят. Тебя нанимают, потому что у текущей команды не хватает рук, чтобы всю работу выполнять. Либо потому что открылось новое направление и люди нужны, которые будут его развивать. Чел, который сидит-вдупляет 4 месяца, как ему из XML достать данные и запихнуть в базу, а потом говорит, что вы такие мудаки, не дали ему сниппет чтобы он копипастнул - нахуй не нужен в команде.
Ну блин. Это просто так и есть. Вот давайте для вас, умников, на понятные аналогии. Вот вы решили в турике по кс поиграть, хотите призовые получить. Нужен 5й чел в команду. Будете вы брать чела, который в каждой катке: "А как мне купить патроны?" спрашивает? "А где бомбу закладывать?" Еще и ливает если его ноускопом ебнули. Нахуй такой в тиме не нужен. И такой кадр в тиме - будет всех остальных на дно тянуть.
И самое главное - 99% контор, которые готовы предложить тебе работу - нихуя не гугл, в которых настолько всего, что ты можешь год нихуя не делая просидеть, и никто даже не заметит. В среднем, ты либо будешь у интеграторов работать, либо в продуктовой фирме. В обоих вариантах - это не очень богатые работадатели и они на тебе зарабатывают деньги, а не на махинациях с ценными бумагами и продажей воздуха. Потому хоть что-то, но стоить ты должен, при этом тебя они еще и дороже чем ты есть будут перепродавать. А как, блядь, продать дороже чела, который слыша слова про JWT - падает в обморок, слыша про потоки - нервно хихикает, на вопрос про докер - говорит, что да, это такая фигня, чтобы доки хранить.
Короче. Я минимум, чтобы в норальную контору за нормальную ЗП дал. Альтернатива - идти на завод работать АВТОМАТИЗАТОРОМ ПРОИЗВОДСТВА и на формах клепать очередную хуйню, которая будет деду инженеру - по нужным папочкам раскидывать документы и сохранять в какое-нибудь местное файловое хранилище в фоне. За 25к.
14 2698015
>>697969
Без ошибок - надо только первую часть.
Вторая часть - должна показать, что ты хотя бы слова такие знаешь и слышал про них. Я не говрил нигде, что нужно это наизусть знать вплоть до кишочков. Но если ты банально не знаешь что такое HTTP и как сделать свой эндпоинт для обработки запроса - тебя брать в команду на работу - нет смысла.
И я таки напомню. АйТи компания и конекретная команда - не вуз и не курсы, которые тебя обучить и "вырастить" хотят. Тебя нанимают, потому что у текущей команды не хватает рук, чтобы всю работу выполнять. Либо потому что открылось новое направление и люди нужны, которые будут его развивать. Чел, который сидит-вдупляет 4 месяца, как ему из XML достать данные и запихнуть в базу, а потом говорит, что вы такие мудаки, не дали ему сниппет чтобы он копипастнул - нахуй не нужен в команде.
Ну блин. Это просто так и есть. Вот давайте для вас, умников, на понятные аналогии. Вот вы решили в турике по кс поиграть, хотите призовые получить. Нужен 5й чел в команду. Будете вы брать чела, который в каждой катке: "А как мне купить патроны?" спрашивает? "А где бомбу закладывать?" Еще и ливает если его ноускопом ебнули. Нахуй такой в тиме не нужен. И такой кадр в тиме - будет всех остальных на дно тянуть.
И самое главное - 99% контор, которые готовы предложить тебе работу - нихуя не гугл, в которых настолько всего, что ты можешь год нихуя не делая просидеть, и никто даже не заметит. В среднем, ты либо будешь у интеграторов работать, либо в продуктовой фирме. В обоих вариантах - это не очень богатые работадатели и они на тебе зарабатывают деньги, а не на махинациях с ценными бумагами и продажей воздуха. Потому хоть что-то, но стоить ты должен, при этом тебя они еще и дороже чем ты есть будут перепродавать. А как, блядь, продать дороже чела, который слыша слова про JWT - падает в обморок, слыша про потоки - нервно хихикает, на вопрос про докер - говорит, что да, это такая фигня, чтобы доки хранить.
Короче. Я минимум, чтобы в норальную контору за нормальную ЗП дал. Альтернатива - идти на завод работать АВТОМАТИЗАТОРОМ ПРОИЗВОДСТВА и на формах клепать очередную хуйню, которая будет деду инженеру - по нужным папочкам раскидывать документы и сохранять в какое-нибудь местное файловое хранилище в фоне. За 25к.
15 2698034
>>697985
Майки забили на LSP, делая стримы - давайте тоже забьем и в своем коде!
Майки забили на SRP, делая сокеты - давайте тоже забьем и в своем коде!
Майки сначала советуют везде указывать имя параметра, потом говорят, что это говно практика.
В гайдлайне последнем - майки пишут, что надо с _ приватные поля обзывать, а если по коду смотреть - m_ - в половине их классов используется.

Там тоже работают люди. И у этих людей есть свои взгляды на некоторые вещи. Сверху - у гугла миллионы бачей вбуханы в инфраструктуру и тех специалистов, которые могут это все заставить работать. В большинстве случаев - у тебя нихуя не гугл и не амазон. Копирование их подходов, в случае если ты не понимаешь, зачем они это делают и какие проблемы решают они - это просто карго культ ебучий. Они - могут, блядь, платить инженерам по 200к в год, чтобы те все поддерживали, у тебя - будет 1 чел, который быстро погуглил как настроить nginx - и на проде с всегда 200 - у тебя начнется хуета с кешами-хуешами и прочей залупистикой.
Когда дорастете до гугла, прийдут дядьки из гугла вам в тиму - тогда и можете гугловские и прочие приколы брать. А пока я вижу, как яндекс - так же обезьянничает, а модбас ебучий к IoT своему - прикрутить нормально не в состоянии.
16 2698080
>>698015
Ты советуешь челам идти самообучаться на протяжении вечности. А кушать им что? А мотивацию где брать чтобы изучать бессмысленные в отрыве от реализаций в реальных проектах фреймворки и подходы? И самое смешное, что если чел реально такой молодец и все это знает, то он сам будет на собесах себе фирму искать, а не наоборот.

Айти наводнено вкатунами потому что, чтобы начать работать, условие "все знать" у нас не обязательное. Миска риса это - умеешь кодить, можешь писать код согласованно с другими разрабами - то бишь пушить так, чтобы ничего не ломать остальным. Что писать челу скажут, понимать ничего не нужно - стреляй туда, грубо говоря. Ах да отладкой пользоваться хорошо бы сразу уметь, а не начинать учиться этому после того как челу 10 раз ответили "я не знаю почему у тебя не работает, посмотри в отладке".
17 2698091
>>698034

>В большинстве случаев - у тебя нихуя не гугл и не амазон.


и что с того? рестопоклонники никак не могут оправдать натягивание ошибок логики на хттп статусы кроме "а вот там где то написали что так надо".

>nginx - и на проде с всегда 200 - у тебя начнется хуета с кешами-притянуто за уши. и как только раньше жили то? а нормально. потому что вернуть 200 GET запросу и POST/PUT запросу - 2 большие разницы.

18 2698117
>>698080
Та что из того что я написал - на протяжении вечности-то учится?
Это все можно узнать за время курсоча уровня: Автоматизация библиотеки с использованием ASP.Net Core.

>>698091

> натягивание ошибок логики на хттп статусы


Это просто удобно как в плане сопровождения, так и для клиента. Какие еще нужны оправдания?
Давай так. Сколько транспортных протоколов, за время разработки - сменилось, у тебя? И насколько часто это происходило? А давай дальше вопрос. Почему мы должны в JSON'е передавать, если мы тогда можем TLV какой-нибудь использовать, раз уж отходим от HTTP, то чего бы не отойти и от текста с JSON/XML, чтобы уж точно наше приложение не зависило от каких-то непонятных технологий и форматов передачи данных. А то, знаешь ли, прибили гвоздями свои жсоны, завтра образуется какой-нибудь JSON Foundation, закроет формат и будет денежку просить. Давайте не будем и на JSON'е как формате передачи базироваться, все равно же говно какое-то а не протокол, TLV'шными мы можем экономить охуеть сколько места. А можно и дальше - пропиеретарный бинарный протокол, который только наши клиенты понимают, и плагин для браузера. Путь настоящих гигашлеп, которые не хотят ни от кого зависеть.
19 2698119
>>698117

> говно какое-то а не протокол


говно какое-то а не формат

> экономить охуеть сколько места


экономить охуеть сколько трафика

Спать больше надо
20 2698122
>>698117

>Это просто удобно как в плане сопровождения, так и для клиента. Какие еще нужны оправдания?


пытаться натянуть 100500 ответов логики на небольшой набор хттп ответов
"удобно" лол

>раз уж отходим от HTTP, то чего бы не отойти и от текста с JSON/XML,


мы не отходим от хттп. мы НЕ приходим. хттп изначально был транспортом. и на этот транспорт решили натянуть ответы логики. И как раз тут встает вопрос - а мы потом перейдем на вебсокеты и где будут ваши хттп ответы?
21 2698140
>>698122

> а мы потом перейдем на вебсокеты и где будут ваши хттп ответы


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

> пытаться натянуть 100500 ответов логики на небольшой набор хттп ответов


Тебе и не нужно 100500 ответов логики натягивать. Еще раз - не строй из своей конторы с числом кодеров - 20 человек гугл. Вы просто надорветесь, ну, либо если вы аутсорс - ты говно сделаешь, а другим потом поддерживать это говно.
22 2698171
>>698140

> Когда перейдем - тогда думать и будем, няша


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

>Тебе и не нужно 100500 ответов логики натягивать


и не натягиваем. и размер и сложность апи не зависит от размера конторы. Даже в одно рыло можно запилить к продукту огромный и валидный апи. Типа конторы только бложики пишут ))
23 2698191
>>697488 (OP)
Когда сделают уже вс для линупсов? Для мака есть для шиндошса есть, а где для линупса?
24 2698201
>>698191
Для мака тоже нет, там переименованный Xamarin, не имеющий к студии никакого отношения. Можно так же переименовать на линуксе MonoDevelop.
25 2698227
>>698201
Ну то есть всем кто не сидит на шиндошс - бежать покупать(сбрасывать триал) в райдере?
26 2698232
>>698227
Ну или ебаться с убогим вскодом.
27 2698301
>>698227
вот придет новый дизайн визуал студии
и придется переходить на райдер
28 2698384
>>698171

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


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

> и размер и сложность апи не зависит от размера конторы


Зависит. Если у вас на всю контору - 20 человек программистов, а вы тратите ресурсы, чтобы придумать апи, на случай, который может никогда не произойти - вы как минимум ебанаты, как максимум - с такими растратами - вы по миру пойдете. Если ты предлагаешь пилить свой, специфичный для вашего приложения протокол - опять же, давай идти дальше и делать свою, специфичную для вашего приложения ОРМ, а то вдруг завтра вы решите переходить на носкуль, или шарить в памяти чет, или из файлика читать. Аргументы - будут ровно те же, что ты приводишь для отказа от реста и статускодов. Рацоинальность этой хуйни - околонулевая при этом, если вы не способны этот велосипед потом развивать и поддерживать.

> Даже в одно рыло можно запилить к продукту огромный и валидный


Та в одно рыло и ОС реального времени написать можно. Хули бы не пилить ОС реального времени на каждом проекте, под ваше приложение? Аргумент просто 11/10.
29 2698392
Даже здесь смогли устроить распонс-срач, лол.
30 2698396
>>698384

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


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

>Ну или сам иди и делай как тебе нужно


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

>а вы тратите ресурсы, чтобы придумать апи


ты вообще о чем дядя??? - апи выглядят одинаково. Никто другие принципы рест не отменяет. что ты заладил. Просто тебе придется делать ДОПОЛНИТЕЛЬНЫЙ шаг вида "тааак вот у нас логика дает ошибку и нужно смапить ее на хттп код, пошли выбирать код".
Это тебе нужно прилагать ДОПОЛНИТЕЛЬНЫЕ усилия по сравнению с агностикхттп вариантом.

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

{ "success": ..., "data": ..., "error":...}
вот и вся разница.
31 2698412
>>698396

> { "success": ..., "data": ..., "error":...}


Так это не агностичный к транспорту протокол. Это rpc-like. Если мы возьмем в качестве транспорта голый UDP - оно посыпится нафиг без кадрирования. Хреновый протокол придумал. Давай следующий.
32 2698414
Ох ребятки, запутали вы меня легоньца. Ладно, попробую пока без фреймворков парочку тудушных апи запилить с http и sql базой. Там дальше видно будет.
33 2698421
>>698414

> без фреймворков


> http


Будешь парсер HTTP писать и гонять его поверх сокетов? Или будешь ебаться с HttpListener?
34 2698424
>>698414
Не нужно без фреймворка, если у тебя есть база какая-то. Задолбаешься, если будешь прям по хардкору.
Лучше наоборот - возьми свой ТуДу и придумай ему более-менее законченный вид:
Есть пользователь, он может добавлять, изменять, удалять задачи.
У каждого пользователя - свой список задач.
Чтобы получить свой список - нужно авторизоваться на сервере.
У задач - можно выставлять приоритет, дедлайн, прогресс, затраченное время.
К задачкам - можно прикрепить файлики.
В качестве киллерфичи - ранжирование задач по приоритету+дедлайну. Т.е. в самом верху - самые приоритетные задачи которые ближе всего к текущей дате.
В качестве клиента - достаточно постмана/свагера.

Потом к этому - добавляешь возможность группировать задачи в иерархию(родительская задача-дочерние задачи) и проекты.
Как задача максимум - делишь пользователей на менеджеров-исполнителей. Исполнителям задачи просто назначаются. Менеджер - может создавать задачи, устанавливать сроки, смотреть прогресс.
Собственно - вот ты и сделал простенькую систему управления проектами и можешь гордо ее показывать на собесах.
35 2698433
>>698421
>>698424
Ладно, убедили. Так и сделаю
.png110 Кб, 740x402
36 2698435
>>698424
Вкатунский тудулист медленно, но верно превращается в написание клона джиры. Осталось только ролевую модель доступа прикрутить и всякие дашборды.
37 2698527
Бля. Транспорто-протоколо-додики, кто вас из загона своего выпустил?
Нахуя вы воздух сотрясаете? Один хрен в реальности все ваши аргументы будут упираться в "у нас вот так принято" и никто не даст вам хоть что-то менять. Поэтому будете делать так как кабан скажет, засунув свое очень важное мнение в жопу.
38 2698548
>>698412

>Это rpc-like


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

>голый UDP - оно посыпится нафиг без кадрирования.


а схера ты http приравниваешь к tcp. Проблема доставки пакетов находится уровнем ниже и не твоя проблема. так что взять я могу вебсокеты, пайпы и любое другое - и это будет его проблемы доставки, а не мое.
39 2698554
>>698527
Лучше уж эти, чем замлдебилы со своими брашами и листбоксами...
40 2698563
>>698548

> а схера ты http приравниваешь к tcp.


Потому что ты по какой-то причине - HTTP приравнял к транспорту. Потому и говорим в контексте транспортного уровня модели OSI. Ну так вот. Если твой протокол - агностичен к транспорту - он должен реализовывать проверку целостности пакета, кадрирование и прочие вещи. Либо сообщение должно умещаться в 256 байт. Твой ЖСОН - в общес случае - не уместится.

> json-rpc


Я про json-rpc и не говорил, няш. Я говорил об общем rpc-подходе. И почти любой rpc - не агностичен к транспорту. Он изначально должен выбрать стул, на котором будет сидеть.
41 2698601
>>698563

>HTTP приравнял к транспорту


потому что http и есть транспорт. он и возит твои данные. с чего вдруг ты ниже полез...ты админ что ли? Это админ будет грузить херню про уровни OSI. Но тут тред про программирование.

>он должен реализовывать проверку целостности пакета, кадрирование и прочие вещи...Либо сообщение должно умещаться в 256 байт


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

>И почти любой rpc - не агностичен к транспорту


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

но повторюсь - rpc подход тут вообще не причем. аж нигде и никак. тут 200 против "придумываем коды для логики" и rpc там и рядом не лежало.
42 2698617
>>698601

> с чего вдруг ты ниже полез


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

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


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

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


Он все еще завязывается на некоторые гарантии доставки, которые не каждый транспорт может предоставить. Так что если реально в противовес ресту ставить что завтра транспорт поменяется - надо идти до конца и делать протокол таким, чтобы независимо от транспорта. Иначе аргумент - просто невалиден.
43 2698621
>>698617

> независимость от протокола


Независимость от транспорта

Уже спать пора. Не могу нормально мысли формулировать.
44 2698982
>>698617
возьмем допустим json-rpc

>он должен реализовывать проверку целостности пакета


и проверит. на своем уровне проверит что это валидный жсон валидного формата

>кадрирование


а это уже не его дело (ну разве что ты про батчи)

>должно умещаться в 256 байт


а нет, не про батчи.

его дело извлечь и распарсить json сообщение(я) и сформировать ответ. Проблемами доставки занимается нижележащий протокол.

json-rpc не обязан уметь работать с железками до канального уровня. Но есть сама возможность заменить транспорт и ничего не сломается. У нас UDP? пишем или берем что-то что будет решать проблему гарантий доставки, сверху все это накрываем Stream, делаем MyRpcServer.Attach(Stream ...). На клиенте делаем то же самое. Мы просто заменили способ доставки и ничего не сломалось. json-rpc готов к этому - поскольку он не завязан на транспорт, то не знает ни про какие хттп статусы, урлы и прочее.

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

НО...
мы вообще о чем говорим? Я уже потерял нить разговора. Проблема "200 или не 200" это не только проблема "щас было хттп, будет вебсокеты"(мой косяк что об этом упомянул, а тебя как понесло)
Тут проблемы "проблема 404" (хотя тут можно сказать "у норм админа все норм"), "проблемы с батч операциями", ну и конечно главное - "коды хттп хорошо натягиваются на проблемы транспорта, валидации, и другого общего, но решили коды слать в хидере и теперь вынуждены все туда пихать, а как то не очень коды хттп мапятся. да и у каждого свое мнение на какой код мапить" - да и тело ответа нужно бы послать в случае той или иной ошибки на радость клиенту, который пишет на языке со стат типизацией (и тут голову ломаешь "как это парсить без JObject.Parse то" )
image.png32 Кб, 798x304
45 2699091
Есть один солюшен.
В проекте WPFApp есть ошибки, но он не используется (подглядываю туда, пока переписываю), основной - WPFApp4.
Можно как-то заигнорить WPFApp? Сейчас приходится выгружать для дебага, а потом перезагружать проект.
46 2699904
>>698982

> и проверит. на своем уровне проверит что это валидный жсон валидного формата


Так. А какой это уровень-то? Это уровень приложения разви, проверять, что это валидный жисон валидного формата? До приложения, так-то должны только валидные запросы доходить, а все остальное - еще на промежуточном слое - отфильтроваться.

Ну и да. Тебе вот прям кто-то мешает вернуть в ресте 404, а в теле: {"error":"not found", "errorCode":228} ? Это как-то прям противоречит ресту? Да нет, у реста никаких таких ограничений.
Еще раз - это удобно. Это просто настраивается и поддерживается. На клиенте - тебе не нужно думать, а через прокси я там общаюсь, чи напрямую с сервером, а какой сервер это мне отдал и прочее. И поддержка всего этого дела - проще, если вы не сами себе архитекторы, а заранее садитесь и декларируете - какие коды что значат.

Ладно. Мне не хочется дальше рестосрач развивать. Решение про всегда 200 - не лучшее. Всегда посты - тоже не лучшее. Поддерживать это сложнее, а со временем - апи превращается в кашу, потому что каждый себе придумает кодов, придумает как ему что отдавать, а потом - надо это становится стандартизовать, чтобы на сторону передать. И вы страдаете какой-то херней, вместо работы.
47 2700217
>>699904

>Так. А какой это уровень-то?


прикладной конечно

>Это уровень приложения разви, проверять, что это валидный жисон валидного формата?


ох ты достал с уровнями. Есть SRP и каждый делает свое дело. тот же кестрел проверяет что к нему пришел валидный хттп (ну парсит тупо), а json-rpc сервер (что аналог того же кестрел) почему то должна заниматься чем то другим? да она парсит жсон сообщение и тем самым валидирует.

>то-то мешает вернуть в ресте 404, а в теле: {"error":"not found", "errorCode":228} ?


вот тут то собака и порылась. МНЕ, МНЕ!!! не мешает. А вот другим почему то мешают. И они так не делают - они используют статус хттп. ДЛЯ ВСЕГО. И в ответ идет голое тело без этой стандартизированной оболочки. И приходится разбираться "ааа у нас такой код значит парсим мы жсон так, а если так то вот этак". Вместо единого и простого парсера ветки error целая пляска с бубном. Потому что "каждый видит по своему", да и вообще думает что на клиенте питоны или что то такое где тупо можно сделать json.loads

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

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

>потому что каждый себе придумает кодо


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

>И вы страдаете какой-то херней, вместо работы.


я еще раз повторюсь - пытаться мапить на хттп коды = дополнительная работа. оно никак не влияет на продуманность апи. вон у клауды замечательная апи и без всяких кодов. просто продумана потому что.
47 2700217
>>699904

>Так. А какой это уровень-то?


прикладной конечно

>Это уровень приложения разви, проверять, что это валидный жисон валидного формата?


ох ты достал с уровнями. Есть SRP и каждый делает свое дело. тот же кестрел проверяет что к нему пришел валидный хттп (ну парсит тупо), а json-rpc сервер (что аналог того же кестрел) почему то должна заниматься чем то другим? да она парсит жсон сообщение и тем самым валидирует.

>то-то мешает вернуть в ресте 404, а в теле: {"error":"not found", "errorCode":228} ?


вот тут то собака и порылась. МНЕ, МНЕ!!! не мешает. А вот другим почему то мешают. И они так не делают - они используют статус хттп. ДЛЯ ВСЕГО. И в ответ идет голое тело без этой стандартизированной оболочки. И приходится разбираться "ааа у нас такой код значит парсим мы жсон так, а если так то вот этак". Вместо единого и простого парсера ветки error целая пляска с бубном. Потому что "каждый видит по своему", да и вообще думает что на клиенте питоны или что то такое где тупо можно сделать json.loads

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

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

>потому что каждый себе придумает кодо


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

>И вы страдаете какой-то херней, вместо работы.


я еще раз повторюсь - пытаться мапить на хттп коды = дополнительная работа. оно никак не влияет на продуманность апи. вон у клауды замечательная апи и без всяких кодов. просто продумана потому что.
show.png5 Кб, 270x120
48 2700634
>>697488 (OP)

>Тред лучшего языка на планете Ждем лета...


Скажите, зачем этот аниме-чудо ждет лета? Будет какое-то событие или додо просто лета ждет?
49 2700743
>>700634
Летом будет очередной перекат
50 2700780
Ребзя, лучший учебник сишарпа - обычная дока майкрософта? Я хотел бы по роадмапе идти и в конце сделать проект какой нить энтрилевельный. На каком сайте есть чето подобное? фрикодкемп, в3скулс, удеми? Есть знания фронта и реакта, поэтому хотел бы что-то не совсем энтрилевельное.
51 2700820
>>700780
Ты эти роадмапы с настороженностью смотри. Какой только хуйни туда не пихают. Для начала синтаксис подучи а то там много чего незнакомого после жс и тс
52 2700858
>>700820
Так роадмап я и не знаю никаких...
Даже во фронте их не было толком, грили ну учи вот это это и все.
0 имплемента в реал ворлд, 0 кодинга чего-то осязаемого. Я просто выучил милиард концепций и все. Пришлось смотреть курс на ютубе где чел пишет магазин пиццы, там хоть можн обыло посмотреть финальный резалт того, что учу. Вот я не хочу чтобы и с сишарпом была такая же хуйня - я учил прсото ради учебы.
53 2701220
>>700743
Вот ты прав!
>>700634
А ты - злюка!
54 2701239
Почему implicit operator не дружит с ref return? Это же по факту обычный метод, почему я не могу по ссылке вернуть значение?
55 2701356
>>700858
Честно скажу - с роудмапами не знаком, учился в ентих ваших политехах 6.5 годиков, из которых 4 годика ОЧно.
Заряжал курсачи, бывало, помогало в дальнейшем понять некоторые особенности структур типа DateTime.
Многое чего познается непосредственно в работе.
Не-мимо работяга с тремя годами стажа
56 2701357
>>700780
Часто заглядываю в доку МС, чуть реже в метанит.
Что-то пытался черпать из Шилдта (но 4 версия СиСярпа уже дохуя устаревшая)
57 2701570
>>701239
если ты про каст, то это не обычный метод
на их основе генерится метод с именем op_Implicit и каст знает про этот метод и ожидает его правильным без всяких лишних параметров

а вот Convert.ChangeType не знает, он тупенький.
58 2701581
>>701570
Так я в курсе, что генерится. Я потому и спрашиваю, чому нельзя бахнуть ref, чтобы кастить к ref переменным.

Представь что у меня есть много class Biba, которые холдят struct Boba, которая репрезентирует Bib'у где-то на стороне (вызовы GAPI например). И есть куча методов которые принимают struct Boba по ссылке. При вызове этих методов происходит каст от Biba к Boba. И на этом этапе структура копируется. Можно было бы этого избежать, если была бы возможность написать каст ref возвратом. Компилятор же потом может понять какой метод вызвать в месте каста.
59 2701590
>>701581
ну вообще майки больше думали про доп вариант такого типа MemoryMarshal а не вот так как ты
Да они много где не подумали.
60 2701682
Сап, работяги, подскажите какие версии C# .NET наиболее распространены в веб-тырпрайзе и насколько легко перекатываться на новые версии?
61 2701745
>>701682
.NET Framework 4.8
image.png27 Кб, 1405x104
62 2701862
Написал такой запрос и почему то массив Bookings всегда пустой прилетает. Без where заполняет , с ним пусто. И дело не в том что по данному сравнению нет результатов в таблице , они есть. Если сначала вытянуть без where и сортануть в коде уже то массив тоже пуст не будет. В чем может быть дела ?
63 2701874
>>701862
я уже ослеп походу. Я не ту дату вбивал
64 2702161
>>701874

>я уже ослеп походу


Неудивительно с такой кашей. Ты бы инлайны поотключал и учился читать чистые выражения.
Для справки. Alt+F1 покажет тебе то же самое, пока ты держишь их нажатыми, намного удобнее чем постоянно такую парашу на экране наблюдать.
65 2702375
Блок try catch обязательно должен завершаться?
Что если я посреди этого блока вставлю Return?
66 2702403
>>702375
Если эксепшена нет, остальное похуй, хоть goto делай.
67 2702573
Сап аноны. Подскажите пожалуйста материалов для изучения ASP.Net с практическими задачками. Читаю сейчас "ASP.Net Core в действии". Страниц 100 прочёл, вроде понятно всё пока. Однако там практики почти нет. Из-за этого не чувствую что знания усваиваются.

И вообще приму советы по изучению asp.net.
68 2702687
>>702573
Так бэк везде примерно одинаковый, тебе просто надо понять что на нем делают: поиграйся с rest, soap, попробуй что такое grpc, попробуй чего такое крон джобы, что такое очереди и консьюмеры. Ну вот и поймешь что язык твой дело десятое, да и к тому же может вообще не на своем дотнете писать будешь, не то что он плохой, но на рынке труда щас чет хз, специфичный
69 2702774
>>702687

>но на рынке труда щас чет хз, специфичный


Чем специфичный?
70 2705163
>>701682
Но новые версии перекатываться изи, но можно охуеть от количества сахара при чтении чужого кода. Уже даже стрелочные функции добавили ради экономии двух переносов строк. В целом, мне не очень нравится куда движется развитие C#. Залупа в том, что менять особо не на что.
.png4 Кб, 303x216
71 2705217
Хочу разобраться как правильно готовить микросервисы.
Собственно. Прикрутил аутентификацию по JWT. Решил использовать шифрованные, типа а почему нет.
И вот тута вопрос. Я хочу чтобы сервис FileStorage - тоже мог из токена получить ин-ю о пользователе(id, пермишины)
Одно решение что я могу придумать - выставить перед ним сервис типа Gateway, который расшифрует токен и положит в заголовки нужную ин-ю.
И мне это кажется какой-то парашей а не решением.
Второе - пихать токен в какое-то общее хранилище вида токен-расшифровка разрешений и инф-ии о пользователи, и при запросе к сервису - FileStorage достанет из этого хранилища инф-ю
Это решение тоже кажется говном.

Кто шарит. Поясните. Как правильно делать это вот?
Не думаю просто что какая-то специфичная хуйня.
72 2705244
>>705163

>экономии двух переносов строк


коих в рамках класса набирается сотня. А зачем? а прост.
туда же и дебильные
if()
{
a=1
}
else
{
b=1
}
73 2705573
Реально вижуал студио заставить выглядить ни как выкидыш нулевых?

Нужна конкретно она, но как же она убого выглядит.
sage 75 2705579
>>705573
Достаточно перестать сидеть на студии 2005 года.
изображение.png196 Кб, 1920x1019
76 2705583
>>705577
Ясно. Через пару лет выйдет.

>>705579
На пике 2022, не вижу никаких отличий от 2005.
77 2705587
>>705583
К 8 дотнету. Ставлю анус...
sage 78 2705590
>>705583
Обратись к окулисту.
79 2705601
>>705573
И это здорово
И грядущие херовые изменения гуи заставят перейти на райдер если нельзя будет выбрать текущий вид
80 2705610
>>705601
Чел в 17.6 добавили возможность подкрашивать пары скобок разными цветами...
image113 Кб, 1280x720
81 2705614
>>705573

>студио заставить выглядить ни как выкидыш нулевых?


Шарп - для зрелых людей.
Здесь как в онлайн-играх, один кусок школоты с писклявым голоском может засрать нормальным людям весь рейд.
Поэтому коммьюнити решило пойти на такой шаг, чтобы всячески не допускать в язык порриджей, зумерьё и прочих любителей фортнайта и тиктока.
Считаю получилось очень эффективно, мы очень рады, что вы не сможете пройти в шарпы в ближайшие 5-7 лет.
82 2705664
>>705610
Код можно было всегда красить как угодно , рисовать что угодно и форматировать как хочешь
Я же говорю про сам гуи

Мне хватило маркетолухов похеривших гуи винды
Хватило похеривших гуи фф

И тут та же херня
83 2705954
>>705163
Я как раз с Java на C# перекатываюсь из-за того, что ваш язык активно развивается. Надоело чувствовать себя некрофилом, когда пробую инфраструктуру вокруг джавы. И разрабы максимально стараются не внедрять новых фич в синтаксис
84 2705972
А с хуя ли массив [] может неявно кастоваться к IList? Он же не является динамической коллекцией, я что-то не понимаю?
85 2706002
>>705972
Обертка чтобы дедам жизнь облегчить. Все приводилось к обжектам. Вэлью боксилось. Было актуально до изобретения женериков.
86 2706014
>>706002
У тебя экспепшон в ебало на 5 строчке, анончик. Я потому и спросил, может я что-то не понимаю.

Но быстрый гуглеж дал понять что деды густо насрали в штаны и нарушили LSP. Никто ведь не чекает IsFixedSize у IList. Не пизди что чекаешь в рабочем коде.

Массив должен IReadOnlyList реализовывать, почему они в Core это не сделали? Пиздец, индусы с этой обратной зависимостью погубят мой любимый шарпик как плюсы
image.png67 Кб, 1795x257
87 2706071
>>706014
Получается можно делать вот так:
var m = new string[] { "2", "3", "4" };
((IList)m).Add(1);
И ловить эксепшен.

Так нетрудно забыть что к тебе в IЛисте может прийти массив, а ты на нем Add вызовешь без задней мысли.

Вот это место. Охуенная имплементация, что тут сказать.
88 2706082
>>706071
Скорее легче следить за тем чтобы никто не пихал массивы туда где не массивы чем шизить и чекать.

В репе corefx даже не смог найти обсуждения, что этот проеб рано или поздно нужно фиксить.
image.png4 Кб, 270x120
89 2706181
>>705217
Отдельный сервис авторизации, в который могут стучаться только твои микросервисы в пределах твоей vpn.
В самом микросервисе где нужно прокидываешь контекст авторизации который по необходимости стучится в сервис авторизации (например по grpc) и извлекает нужные данные.
Можешь это либо на уровне мидлвари прокинуть, либо через DI.
image.png5 Кб, 270x120
90 2706182
>>706181
Без негатива - картинка не наезд, просто капча показалась забавной.
91 2706183
>>705583
Нехуй сидеть на ноутбуках с микроэкраном. Купи себе нормальный большой монитор и выставь нормальный scale.
92 2706184
>>705577
Бля, уберите этих "'эффективных" уебков от интерфейса.
93 2706339
>>706184
Увеличим расстояние между кнопками. Увеличим шрифты надписей.
Как итог - становится проще, остаются только действительно нужные функции.
Всякие настройки тоже отключим. Вот у вас же есть телефон, на нём есть ватсап, вам же не приходит в голову менять там шрифты или цвета.
Так и в студии, всё будет по современному стандарту. Функционал будет доступен для людей с ограниченными возможностями, а не только для отдельных задротов. Всё будет настроено из коробки на нужды среднего человека.
Таков рыночек.
image151 Кб, 2538x708
94 2706343
>>706183
Завидую людям с прекрасным зрением. У меня вот 27 дюймов моник. Но размер шрифтов за счёт масштабирования такой, что это эквивалентно разрешению 1024х600.
.jpg227 Кб, 1920x1056
95 2707267
>>705577
Какое же говно. Пиздец. Там в щели между блоками мой хуй пролезет
Почему блядь не сделать нормально. Т.е. чтобы как на прикриплейде можно было делать ПО УМОЛЧАНИЮ. А не каждый раз приходилось окошки рассвывать. Вот это - было бы пиздец как охуенно. И чтобы при этом переключаться между этими окошками можно было быстро каким-нибудь shit+tab
Не. Блядь. Сделаем какое-то говно, влепив какие-то скругления и дырки между блоками.
Пиздец. Вебобляди заебали. Этот дизайн под веб - бесит что пиздец.

И да. Я знаю, что я могу PowerToys сделать вот такой присет, но это немного не то. Все равно приходится каждый раз распихивать окошки по блокам. А я хочу чтобы сохранил и потом оно постоянно так было.
96 2707422
>>707267
Пусть это хотя бы в превьюхе появится. А то ваши жопы порвались с парочки скринов, а на деле это все будет не так плохо.
.png76 Кб, 1920x1050
97 2707466
>>707422
Ну. У меня жопа подорвалась с того, что лично мне - нужно чтобы для кода было больше места и можно было бы поставить экран с кодом - по центру.
Почти идеально, это сорт оф прикриплейд, но с IntelliSense, дебагом, рефакторингами, темной темой и для тестов чего-нибудь.

Ну и еще она рвется, потому что у меня на работе монитор 24 дюйма, и я борюсь за каждый миллиметр полезного пространства, а тута - просто взяли и хуйнули на изичах ненужные пустоты.
98 2707788
>>707466
Ты какой-то шиз. Просто поставь монитор вертикально и режим для доп окошек который скрывает обозреватель солюшенов, ошибки и свойства. Нахуя смотреть на них постоянно при написании кода?

Именно из-за таких поехавший дедов, мы все еще сидим и вилкой говно захошее колупаем вместо ГУИ.
изображение.png7 Кб, 270x120
99 2707825
>>707788
Это ты какой то шиз. Делать по 100000 лишних кликов (и возможно скроллов) для переходов просто ради "зато модняво, все скрыто и огромное"

не разработчики, а смузихлебы.
капча намекает
100 2707836
>>707825
Поддерживаю.
101 2708029
>>707825

>без решарпера


>без горячих клавиш


>водит мышкой


>не смузихлёб



Держи в курсе, дед. Весь мой проект у меня на кончиках пальцах, зона досягаемости до любого элемента три клавиши которые нажимаются в десять раз быстрее колупания в окошечках.
102 2708040
>>708029
смузихлебыч, поясни мне как тебе вдруг станет лучше жить от увеличенных отступов?

Как хуже станет тем, кто любит что на экране больше информации - сразу видно контекст и НЕ НУЖНО дыркаться чтобы открывать то и это как дебил....это сразу видно

как лучше станет тебе поясни.

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

С пустыми пространствами мы уже проходили, когда выкатили на десктопы метрошные говноприложения что охеренно ТУПО смотрится на мониторе, который как бы сильно больше чем планшет.
103 2708178
>>708040
Не бросайся в крайности. Это контрпродуктивно, еще даже обнову не выкатили а у тебя уже жопа сгорела. К тому же мелкомягкие скорее всего они оставят возможность вернуться на старый вариант.

По поводу же солюшена, мне неудобно и отвлекает. Я хочу видеть код когда что-то делаю и только, прыгать по файликам мне помогает решарпер как и выносить в отдельные файлы нужные части кода. Просто нет смысла смотреть на него.
104 2708196
>>708178
потому что я это проходил уже с фф. И резко появилась необходимость скролить и вообще стало выглядеть по пидорски.

И нет - НЕ ОСТАВИЛИ в фф метода вернуть как было. Просто выпилили флаг compact mode. Но это фф и на 90% все решилось через стили

ОЧЕВИДНО уже сейчас что это будет говно ибо и так понятно что оно будет из себя. А вот оставят ли возможность "вернуть взад" - еще не факт.

>По поводу же солюшена, мне неудобно и отвлекает


ключевое слово МНЕ. не все такие как ты. Некоторые любители и в гит консоль попердолится.

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

Держать в голове виртуальную картину "что где как связано с текущим моментом" - моя голова занята кодом и мне лишняя нагрузка ни к чему - весь контекст тупо перед глазами.

И я такой не один, а таких очень много.
105 2708209
>>708196
Ну что сказать, хуёво быть тобой. Можешь попробовать по ссылке выше где фидбек собирают, действительно его дать аргументированно со скринами. Может учтут, а может нет.
106 2708218
>>708209
там и без меня хватает. посмотри сколько лайков под коментами вида "оставьте возможность выключить эту хрень"

>Может учтут, а может нет.


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

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

>Ну на винде то можно переназначить все что угодно в оформлении.


ой шутник ой шутник, спасибо посмеялся

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

в студии же - ну полумертвое расширение которое даже рядом не лежало и даже не может сохранить бряки ибо апи студии не позволяет. Тупо сохранить загрузить открытые вкладки. Ни о чем.
109 2708331
>>708196

>а supercharger


Глянул ради интереса. Выглядит вроде ничего так.
Вопрос - оно сильно тормозное?
110 2708368
>>708331
Не знаю. Я юзаю только карту кода и вертикальные линии отступов
111 2709003
Если есть заранее известное количество способов использования модели, то как лучше поступить - запилить базовую вью модель для "основных" свойств, и наследующие вью модели для каждого способа, или же написать на каждый способ интерфейс и все реализовать одной ёба вью моделью?

А если в будущем может стать больше вариантов использования?

Или лучше не совать каждый чих во вью модель, а по возможности выносить, например, выведение значения для сортировки во вью, используя конвертер?
112 2709005
>>697488 (OP)
Я дико извиняюсь, никто не подскажет где можно купить на торрентах вот это https://code-maze.com/blazor-webassembly-course/?source=nav ?
113 2709025
>>709003
выбирай любой вариант. тут нет правильно или нет. есть "в этом случае так наверное более удобнее чем этак"
просто не забывай что вьюмодели и так страдают жирностью по своей природе. Например те же контроллеры - попытки посадить вьюмодели на диету.
114 2709036
>>709025
Мне сейчас кажется более предпочтительным вариант с кучей классов по простой причине - чтобы случайно не нахуевертить с ёба моделью. Даже если будет интерфейс на каждое применение, я, допустим, спустя какое-то время, забыв что и как, сяду что-то добавить/исправить, ебанусь, кастану в класс и сделаю хуйню.
С другой стороны это наверно уже паранойя, но из-за этого я сижу и охуеваю сам с себя.

Ну и опять же жирная вью модель... Хотя если пилить класс на каждый случай, то будет куча повторяющегося кода.
115 2709039
>>709036
ты прав - тебе кажется.

на деле тут все фломастеры. ты можешь плодить много классов и сделать себе неудобно. Можешь сделать 1 класс и в итоге он станет делать много разного и тебе станет неудобно. Можешь потом этот жирный разбить на несколько вложенных вьюмоделей (явных или нет) и это тоже может быть неудобно

все оно на самом деле неудобно - всегда или не хватает или слишком жирно, поэтому и фломастеры.

>то будет куча повторяющегося кода.


наследование никто не отменял
116 2709074
>>709039

>наследование никто не отменял


Модель
Базовая ВМ
ВМ для листбокса с чекбоксом как сабкласс базовой (добавляем свойство bool State)
ВМ для дерева без чекбокса как сабкласс базовой (добавляем свойство bool IsSelected)
ВМ для дерева с чекбоксом как сабкласс предыдущей, но с добавлением свойства bool State - и получается повторяющийся код.

Очень грубо и тупо, конечно, но как-то так. ВМ можно объединить так или иначе, но это уже шаг в сторону ёба ВМ.
117 2709089
>>709036
хочешь еще неудобств? щас отсыплю.

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

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

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

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

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

Лучше идти на завод. Капча намекает
117 2709089
>>709036
хочешь еще неудобств? щас отсыплю.

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

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

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

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

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

Лучше идти на завод. Капча намекает
118 2709109
>>709039
и этот последний шаред медиатор он ведь как контроллер же - ведь принимает команды и уведомляет вид (который VM). чем не контроллер?.
Как медиатор он зло, но контроллер это ж добро )

А нормальная ли эта реализация? почему в инетах делают что то другое? нипанятна, памагите))
119 2709120
>>709074
не вижу в твоей схеме ничего особенного. можно и наследованием и супер моделью порешать.
120 2709259
Товарищи, доброго времени суток!

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

Находил одно из таких предложений в инете:
Class Myclass<T> : MyBaseClass<T> : where T : IComparable<T>

поле: IComparer<T> myComparer;

Затем в самом условии: myComparer.Compare(data1, data2) > 0
Но проблема в том, что валится всё на том, что myComparer NULL'овый. Как его правильно инициализировать? Или быть может надо реализацию интерфейса IComparable переопределять? Подскажите пожалуйста!
121 2709265
>>709259
непонятно зачем ты делегировал сравнение и у тебя вдруг стало необходимом дополнительное поле в классе, но если уж то лези инициализация

LazyInitializer.EnsureInitialized(...)

хотя зачем тебе поле вообще....
76787645345.gif742 Кб, 500x500
122 2709405
>>705614
Сука блядь как же я кринжую с пикчи. Ебаные сойбои сука.
123 2709443
>>709405
Думаешь, не смогут повторить?
124 2709476
>>709443
Чего?
i.webp48 Кб, 612x408
125 2709489
126 2709517
Как корректно разрулить реентрантность async методов?
Допустим есть долгоиграющий async:

asynd Task DoWork()

и он вызывается в обработчике клика мыши, как правильно гасить первый вызов если он еще не закончен? Короче какой тут паттерн?
127 2709559
>>709489
Я не понимаю, что ты мне пытаешься сказать.
128 2709563
>>709559
Это была контекстная шутка на пять сек, ты уже развёл КРИНГЕ, а обьяснять это вообще пиздец.
129 2709581
>>709517
CancellationToken же

запарил двач своей викториной. ботам не мешает, а людям страдать
.jpg509 Кб, 941x2000
130 2709715
Пацаны. Пацаны. Поясните за чистую архитектуру.

Смотрите. Допустим, у меня монолит по причинам - проще деплоить, маленькая команда.
Дальше. Мое приложение - это система мониторинга и управления арендованными роботами.
Что оно делает.
1. Робот - подключается к моему серверу по своему робото-протоколу. Раз в минуту отправляет мне по роботопротоколу данные о своем текущем состоянии.
2. Есть веб-морда, с помощью которой пользователь(человек) - может следить за состоянием роботов, а так же отправлять им команды, в духе - начни готовить, начни уборку, постриги кусты.
3. Приложение - используют и люди из сервиса поддержки, потому - оно предоставляет сквозной интерфейс с высоким приоритетом, для отправки комнад по секретному протоколу от сервиса поддержки роботам.
4. У самого приложения - есть акции, и периодически уже сверху менеджер может сделать акцию - приведи друга, получи скидку на месяц аренды робота.
Важное условие, роботов - очень много, а потому - нужно стараться экономить на ресурсах, т.к. заказчик уточнил, что у них свое железо, и спецификация железа: Pentium4, 2 гига оперативы и 100ГБ ХДД в рейде.

Ну так вот. Как должна быть построена-то архитектура, чтобы это было чисто и этим было удобно управлять и развивать?
Я просто не понимаю. Все примеры чистой архитектуры в интернете - это какая-то унылая фигня с крудами, в которых лезем в базу, достаем из базы. А вот как в таком случае-то предполагается делать чисто. Ведь нужно и какие-то очереди задач прикрутить, и выделить высокоприоритетный интерфейс для поддержи, и рассылать уведомления об акциях.
В общем. Кто шарит дальше чем взять медиатор и круд намутить - поясните, если не сложно.
131 2709951
>>709581
Так как правильно оформить, вручную что ли самому менеджментом заниматься? Там же всякую херь нужно отслеживать типа если отмена не закончена, то дожидаться завершения предыдущего вызова.
Без названия(2).jpg442 Кб, 1600x900
132 2709953
>>709715
Хуйню какую-то напесал. В твоём случае надо было не оборудование закупать, а использовать облачные сервисы. Yandex IoT Core https://cloud.yandex.ru/docs/iot-core/ стоит 115 рублей за миллион сообщений. Считаем:

Допустим, у тебя 100 роботов, каждый отправляет 1 сообщение в минуту, получается:
(43800 x 100) / 1,000,000 x 115 = 503 рубля в месяц.

Далее, всё это дело пишется в какую-нибудь условную YDB. А дальше по API можно раздавать сайту, приложению и другим потребителям данные. По сути, это обычные временные ряды. Надо будет этот временной ряд как-то агреггировать и прочие операции делать. В идеале конечно лучше брать специализированные базы, а-ля https://iotdb.apache.org/, InfluxDB, CrateDB, Riak TS, они лучше аггрегируют данные. Если ты всё в SQL-базу будешь писать, у тебя будет пиздец какая проблема с масштабированием, и с запросами типа "покажи мне усредненные данные с 3-го робота за последний месяц, с шагом усреднения 2 часа". В обычной базе данных а-ля PostgreSQL вряд ли получится так сделать, не запрашивая 40 тысяч записей за раз.

Всё остальное в принципе хуйня. Под веб-морду есть готовые компоненты а-ля https://awslabs.github.io/iot-app-kit/ Акции-хуякции это всё делается через событийно ориентированную архитектуру по триггеру.

Смотри картинку, плюс-минус как это должно выглядеть.
133 2710059
>>709951
ну если не используешь разные Observable реактивные, то конечно вручную - просто новый CancellationTokenSource (а старый cancel),получить токен, запустить с ним активность. и проверять его постоянно + 1 раз после получения результата активности в основном потоке - может результат уже не нужен и там не будет гонки "отменили, новый запустили, используем невалидный результат".

капча вообще невменяемая.
134 2710684
>>709953

> Yandex IoT Core


> MQTT-сервер


Я вроде не говорил, что роботы по MQTT общаются.
В тексте: Раз в минуту отправляет мне по роботопротоколу
Ну и вопрос таки не про яндексы и прочее. А про то, как соблюсти чистоту, когда у меня приложение не просто - достать из базы, положить в базу.
И монолит взят специально, чтобы нельзя было сказать: Ай, сделай сервис управления роботами, сервис хранения данных, идентити хуйни кафку-ребит и погнали.
135 2710991
Есть ли у студии какой-то шорткат, чтобы быстро превратить строку в интерполируемую?
Я про случай:
Я начинаю писать
Console.WriteLine("Hero name is : {hero.Name}");

Вижу, что ебучий $ забыл и перемещаю курсор, добавляю.
Вот было бы удобно чтобы я просто чет нажал и этот $ появился.

Допустим, для случая вида Console.WriteLine("Hero name is : " + hero.Name); такое есть в качестве рефакторинга.

Просто пальчики коротенькие, до $ тянуться тяжело...
136 2711209
>>710991
Ctrl+. -> make interpolate string
137 2711725
Есть тут знатоки uwp? Как можно перехватывать клик по flyout? Все остальные клики мышью перехватываются Window.Current.CoreWindow.OnPointerPressed а вот клики по flyout нет.
138 2711894
>>711725
Использовать AABB и определять килинкли или нет?
139 2712003
Посоветуйте хорошую статейку или туториал про стримы и пайплайны
140 2712004
>>712003
про каналы и пайплайны может?
.png7 Кб, 270x120
141 2712029
>>712003
Стрим про стримы.
142 2712069
>>697782
Лол, вообще нет упоминания про SQL
Или это относится к "то что обычно на уроках инфоматики было"? Ну охуеть.
143 2712156
>>697782

>че в шарпе делает volatile


А что делает? Этот вопрос сложен даже для тех кто книги про шарп пишет.
144 2712189
>>712156
Ты не смог открыть мсдн и прочитать зачем нужен volatile?
145 2712243
Читаю про асинхронщину в .NET. Насколько я понимаю сейчас используется TAP паттерн. Стоит ли в таком случае изучать APM и EAP паттерны или просто глазами пройтись?
146 2712402
Почему не стоит вкатываться в С++, а стоит вкатиться в шарф?
147 2712470
>>712243
Не загоняйся. Просто пиши await везде где вызываешь async метод и все. Я уже 2 года так делаю, меня никто еще не раскусил. В душе не ебу ни про какие паттерны.
148 2712544
>>712189
ну ТЕПЕРЬ в ней написано про то, что на деле нет никаких гарантий того, что будет прочитано именно последнее значение.

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

капча ну просто звиздец
149 2712980
>>712470

> Просто пиши await везде где вызываешь async метод и все.


await в main() не работает.
150 2712983
>>712980
Так сделай асинхронкой или через Task.Factory.StartNew
151 2712987
>>712980
работает. с 7 шарпа можно async Task Main и даже Tas<T>
152 2713005
Синтаксис шарпа и постгреsql подучил. К чему переходить теперь?
все дико нравится пока
153 2713007
>>713005
ASP.NET
154 2713010
>>713007
Благодарю. Его как-то отдельно учить надо или пару приложений по туториалам посмотреть как делается и по ходу разберусь?
155 2713024
>>713010
Основы учить отдельно. Вряд ли ты просто посмотрев код разберёшься, как работает DI. Ну а дальше ковырять примеры.
156 2713030
>>713024
Понял. Есть у кого на примере годные обучалки?
157 2713047
158 2713070
>>712980

>await в main() не работает.


Давно уже работает.
159 2713074
>>713070
Я пишу на пятом шарпе и .NET Framework 4.0. Как мне сделать асинхронный Main???
160 2713077
>>713074

>Я пишу на пятом шарпе


а зачем ты это делаешь? проспорил что ли?
Делается то элементарно, но...зачем
161 2713079
>>713047
Еба сколько там всего. Ладно попробую. Хотя чет в конфе сишарпа в телеге хаят этот метанит
162 2713081
>>713079

> в конфе сишарпа в телеге хаят этот метанит


Правильно, надо же убедить себя, что покупка курсов за 100к не была пустой тратой деняк.
163 2713084
>>713077
Не нашёл более нового в папке C:\Windows\Microsoft.NET\Framework\
164 2713088
>>713084
с какого браузера сидишь?
165 2713092
>>713088
Internet Explorer 11.
166 2713094
>>713092
ну так бы и сказал что тебя прокляли. Тебе в церковь нужно. А про шарп забудь. И вообще про программирование забудь. А не то карма тебя настигнет.
167 2713098
>>713094
Ну нравится мне шарп. Не писать же на Visual Basic.
168 2713171
>>713081
ну там профи сидят а не курсовкатывальщики
169 2713178
>>713098
Ну ты и загнул, братик. ВБ в принципе неудобный
Сужу по работе в MSVS, будучи шарпистом
170 2713217
>>713081
Конфы в телеге притягивают сплошных долбоёбов
171 2713318
Ребзь, писал на сишарпе 10 лет назад. За это время что-нибудь добавили в язык что надо подучить? Ну кроме варов.
172 2713330
>>713318
Джавадебил, ты? Заново учи, или на собессе будешь обоссан?
173 2713332
>>713330
Чего заново учить дебич? Я все концепции наизусть помню, просто свежие нужно дркинуть сверху

>джавадебил


Не проецируй. Никогда не писал на этом говне и не собираюсь. Просто перекатился в ерланг в свое время и сейчас возвращаюсь.
174 2713351
>>712069
Лично мое мнение - SQL не относится к тому, что надо знать программисту на начальном этапе. По ряду причин. Главная из них - разные СУБД ведут себя по разному и какая используется конкретно в этой фирме - хуй знает. А под знанием SQL как раз обычно прячется понимание, какой там план запроса составит PG, какой MySQL, какой MSSQL, и как их оптимизировать надо, какие там у кого индексы и когда надо, а когда - нет, сверху вся хуйня с транзакционной целостностью, локами и прочий дроч.
В общем - не совсем знания для вкатышей.
Можно конечно было бы написать про базу в духе селектов-джоинов-юнионов ну и третья нормальная форма, но именно это - совсем простые темы, которые осваиваются за 10 минут, а третья нормальная получается сама у большинства людей.
175 2713359
Сишарподжунов часто гоняют по алгоритмам? Если да то посоветуйте ресурсов где учат по ним именно на сишарпе
176 2713367
>>713074

>Я пишу на пятом шарпе и .NET Framework 4.0.


Земля тебе пухом братишка.

>Как мне сделать асинхронный Main???


Из обычного main вызываешь асинхронный метод через
.GetAwaiter().GetResult();
177 2713556
1) Скажите, что становятся со старыми версиями рантаймов дотнета, смогу ли я скажем через 3-5 лет скачать и поставить, скажем 6 дотнет (сдк и рантайм)? Есть просто ряд старых машин на 7 винде, обновлять их никто не собирается.

2) Я так понимаю новый шарп 11 совместим только с новым дотнетом 7, нельзя на последних шарпах писать на предыдущих дотнетах?
178 2713620
>>713556
Как я понимаю, нет-фреймворк это часть винды, поэтому годная стабильная штука, а мультиплатформенные дотнеты это соевые однодневки выбрасываемые на помойку каждый год, и по сути та же джава, на винде чужеродное пердящее говно. Как и джава, дотнет может используется в хуерпрайзе, но для нормальных приложений такое же говнище как джава или тот же электрон.
179 2713662
>>713556
1. На винде без проблем. На линуксы новые в репах может не быть старого дотнета, а руками может ругаться на зависимости (в теории). Внутри докера проблем конечно не будет

2 а где то разве не так? Везде так где есть рантайм для выполнения кода. Старый рантайм физически не может выполнить инструкции про которые он не знает и это не сахар.

.
180 2714096
Допустим у меня есть приложение на wpf для выбора деталей для машины. К примеру шины, аксессуары и тд. Мне нужно реализовать возможность выбирать все это по клику. Внизу окна есть список категорий, по клику на категорию открывается список со, скажем шинами. И можно выбрать только один вид шин, что логично. То есть при клике на одну шину с другой выделение автоматически снимается. А вот если я выберу скажем аксессуары, то их уже можно выбирать в любом количестве. Вопрос, как такое реализовать?
181 2714099
>>713556
Какие проблемы со скачиванием могут быть? Готовые релизы есть как на сайте Майков так и прямо на гитхабе.

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

Выставляешь настройках проекта версию языка latest или конкретную, а дотнет например 6.0. Компилятор ведь собирает в IL при JIT или в ассемблер при AOT, так что если нет каких-то breaking changes в IL (а это вообще было когда-нибудь?), то никаких проблем.
182 2714109
>>714099

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


Фиг там. Латест он выставит от таргета, а если указать версию языка то будет ругаться
image.png47 Кб, 1806x351
183 2714123
>>714109

>то будет ругаться


Не пизди.
184 2714169
>>714109
Тебя стоит уволить и обоссать.
185 2714227
>>714096
а в чем проблема то.
SelectedItem={Binding ...} и bool IsSelected {get; set;}
186 2714250
Правильно ли понимаю что из всего зоопарка asp.net надо учить core?
187 2714274
>>714250
Core и Core MVC.
Опционально можно поигаться с Razor/Blazor.
188 2714277
>>714227
И как мне устанавливать isselected в false?
189 2714332
>>714277
А в чем проблема? При установке нового SelectedItem делаешь старому селектед oldSelected.isselected=false
190 2714343
>>714277
а с мультивыбором еще проще, ведь забинден прямо на нужный элемент. Ну разве что нужно где то реагировать на изменение селектед, но тут куча разных вариантов от события до чего угодно
0035ConstantiaS2.jpg112 Кб, 1280x1451
191 2714345
Покажите свои пет-проектики
192 2714365
Есть какой-нибудь аналог metanit но на английском?
sage 193 2714368
>>697488 (OP)
язык неоч джава лучше
194 2714382
>>714368
Что такое джава, это же что-то давно мертвое типа perl?
195 2714387
>>714382
Нет, мёртвое типа COBOL.
196 2714389
197 2714396
>>714368
Пруфс?
198 2714412
Из практики. Когда-то давно реализовали мы REST-like API для одного сервиса, задокументировали и раздали пользователям (их тогда было несколько сотен).

Поскольку стандартных HTTP-кодов было недостаточно, каждый ответ (если он шёл от приложения) содержал развернутый индикацию успешности или отчёт об ошибке (или сразу о нескольких, если их было больше одной).

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

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

По этой причине следующая версия API была построена по простому принципу - 200 - запрос дошёл до приложения, >= 300 - не дошёл. И дело пошло - с тех пор проблем и вопросов у пользователей сильно поубавилось, потому что детальные отчеты в теле были достаточно красноречивы, и самое главное - их стали читать и парсить.

С тех пор у меня есть чёткое убеждение - не надо смешивать транспорт (HTTP) и приложение (JSON/XML/etc), а также не надо пытаться впихнуть в куцые варианты кодов HTTP варианты ответов приложения - их банально недостаточно и они практически бесполезны в сложных API. А если API доступно не только через HTTP (да, есть и другие транспорты), то отсутствие привязки только упрощает разработку.

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

Разумеется, в очень простых API, где всё влезает в HTTP-коды их можно использовать (хотя и остаётся неоднозначность с 404), но это частный случай.

По поводу кэширования - есть же вполне себе стандартизованный Cache-Control, который решает проблемы с прокси и прочими посредниками, а если прокси его не понимает или пытается "умничать" - то грош ему цена.
198 2714412
Из практики. Когда-то давно реализовали мы REST-like API для одного сервиса, задокументировали и раздали пользователям (их тогда было несколько сотен).

Поскольку стандартных HTTP-кодов было недостаточно, каждый ответ (если он шёл от приложения) содержал развернутый индикацию успешности или отчёт об ошибке (или сразу о нескольких, если их было больше одной).

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

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

По этой причине следующая версия API была построена по простому принципу - 200 - запрос дошёл до приложения, >= 300 - не дошёл. И дело пошло - с тех пор проблем и вопросов у пользователей сильно поубавилось, потому что детальные отчеты в теле были достаточно красноречивы, и самое главное - их стали читать и парсить.

С тех пор у меня есть чёткое убеждение - не надо смешивать транспорт (HTTP) и приложение (JSON/XML/etc), а также не надо пытаться впихнуть в куцые варианты кодов HTTP варианты ответов приложения - их банально недостаточно и они практически бесполезны в сложных API. А если API доступно не только через HTTP (да, есть и другие транспорты), то отсутствие привязки только упрощает разработку.

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

Разумеется, в очень простых API, где всё влезает в HTTP-коды их можно использовать (хотя и остаётся неоднозначность с 404), но это частный случай.

По поводу кэширования - есть же вполне себе стандартизованный Cache-Control, который решает проблемы с прокси и прочими посредниками, а если прокси его не понимает или пытается "умничать" - то грош ему цена.
199 2714484
>>714412
Ответь, любитель 200, что там создает транспорт-то?
А за что транспорт просит мзду?
Может быть скажешь, почему транспорт - каким-то образом решает, поддерживаемый ли медиа-тип или нет?

Ладно. Я не хочу очередной рестосрач разводить. Просто это все забавно, когда говорят про транспорт в контексте HTTP. А потом - мы берем нормальный транспортный протокол типа TCP-UDP и такой фигни вообще не возникает: хочешь - гоняешь модбас, хочешь - DLMS, хочешь - IRС, хочешь - просто отправь файл и на той стороне - порешают че с ним делать. Транспорт ведет себя как транспорт, мать его. Да, иногда может отвалиться и приложению надо нахлобучить что-то, чтобы самому уже гарантировать доставку, но это именно что ложится в транспорт. А вот эта вот залупистика с тем, что HTTP - теперь транспорт, это просто рофл на самом деле какой-то, и нежелание спецификацию подробно читать, чтобы самим делать нормально.
200 2714513
>>714484

>мы берем нормальный транспортный протокол типа TCP-UDP


а ты когда берешь это тоже лезешь в содержимое tcp пакета и коды ЛОГИКИ пихаешь в его хидеры в расчете "а вот доставайте код логики из хидера tcp пакета, хуле вы"?

А если ты это не делаешь, а позволяешь tcp/udp/жопаdp просто доставить, то зачем ты постоянно сравниваешь теплое с мягким?!

это риторический вопрос.
201 2714528
>>714513
Няша, HTTP - прикладной протокол. Если для твоего приложения он не подходит - значит ты просто неправильную технологию выбрал.
Что тут блин сложного-то?

Ты же не пытаешься через FTP включить лампочку или че ты там пытаешься через HTTP делать. Почему-то некой интуиции тебе хватает, чтобы не пытаться извращаться, даже если это реально можно сделать всяческими ухищрениями.
Но вот когда речь заходит про HTTP - сразу начинается эта фигня: Ряяяя, HTTP-транспорт. Ну, блин, серьезно. А можем мы в таком случае этот транспорт по USB погонять без лишних телодвижений? TCP - можем вполне, ему в принципе похуй по чему гоняться. Покажи мне в таком случае, как ты будешь организовывать общение браузера через USB или UART подключения к серверу.
202 2714535
>>714484
Для чего общаться с копипастой с хабра?
203 2714536
Прикладной транспортный протокол HTTP.
204 2714539
>>714535
Я хочу пообщаться с анончиком, который ее запостил же.
Только сейчас починился сосачик, целых 2 дня не с кем было пообщаться.
Ну да ладно.
205 2714541
>>714528

> HTTP - прикладной протокол


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

поэтому

>Если для твоего приложения он не подходит


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

Я выделил жирным для непонятливых. Завязываясь на особенности хттп ты ВЫНУЖДЕН разгребать и все неудобства этого выбора - это и в пасте описано и необходиость клиенту писать if портянки для разбора, непонятки с батчами и так далее.

Можешь жить? ну замечательно. Также ты возможно можешь решить возникающие проблемы...которые не возникли бы если бы ты сам не решил их создать своим выбором.
206 2714548
>>714528
А ещё HTTP - протокол передачи ГИПЕРТЕКСТА. То есть HTML. Передаёшь JSON-ы => используешь HTTP неправильно. При единственном правильном использовании HTTP сайт должен выглядеть как пикрил.
207 2714629
>>714548
Чел, у тебя на скриншоте картинка, бинарный файл, какой текст, иди проспись.
Только вчера ебал стримы с массивами байтов как в Си байтоёбля! хексдампы! по HTTP, просто чтобы картинку в ГИПЕРТЕКСТ положить как у тебя на скриншоте.
208 2714638
>>714099
То есть, я могу взять 11 шарп (на 10 винде) и скомпилить под винду 7 (там стоит рантайм дотнета 6)?
209 2714650
>>714629
Это был сарказм. Я и не респонс-шизик и понимаю, что HTTP ещё 20 лет назад во времена SOAP использовали как транспортный протокол.
210 2714670
>>714638
Будет работать если из новых фич 11-го шарпа ты будешь исползовать только сахар. Т.е. то что используется до компиляции в IL. Если же это изменения требующие именно нового рантайма, то нет, если не сможешь накатить его на win7
Но самый главный вопрос. Какое из новых изменений в C#11 тебе нужно настолько сильно, что ты вообще задался этим вопросом?
211 2714687
>>714638
Да, блять, можешь. Конечно если ты не используешь какие-то новые типы из System, в таком случае тебе действительно нужен новый рантайм. А просто новая версия языка в новом рантайме не нуждается.
212 2715239
Asp.net core 6 актуален? Стоит изучая его вкатываться? Или седьмую версию искать лучше по обучалкам?
213 2715403

> C#11 тебе нужно настолько сильно, что ты вообще задался этим вопросом?


Это https://learn.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-11#raw-string-literals
214 2715418
>>715403
удивительно что эта фича появилась аж в 11 версии языка через десятилетия. Это к тому насколько быстро делаются нужные фичи
215 2715442
Есть лямбды и var, и на том спасибо.
216 2715459
>>715442
В JS это хуеву тучу лет есть
217 2715580
>>715459
Ты это к чему сказал
В шарпе лямбды появились в 2007 а жс аж в 2015
218 2715786
Чет я запутался нахуй. Правильно ли я понимаю? Asp.net состоит из Web Forms, MVC, Web API, Razor Pages, Blazor и Minimal API. И мне из всего этого нужен только MVC для вката?
219 2715795
>>715403
1) Эта сахар, значит должен работать и на старом рантайме.
2) Хранить таким образом текстовые данные в коде - мудачество. Не делай так. Для нормальных задач вполне хватает интерполированных строк. А такая хуета для уебанов любящих пихать Raw SQL в код. За такое гвоздь в голову вбивают.
220 2715796
>>715418

>нужные фичи


Нихуя они не нужные. Очередная уступка ноющим пидарасам.
221 2715797
>>715786

>И мне из всего этого нужен только MVC для вката?


Нет. MVC нахуй сейчас никому не нужен. Достаточно Web Api.
222 2715798
>>715796
Не нужные - иди мимо. А людям нужно.
223 2715852
>>715786
Изучай что интересно, но только не веб формы. Так ты быстрее чему-то научишься. Вон блазор поковыряй. Текущий фронтир дотнета в вебе.
224 2715859
>>715852
Мне безумно нравится изучать сишарп особенно после javascript. Я планировал изучить и blazor и mvc и микросервисы и алгоритмы на шарпе и azure.
Но мне необходимо набрать минимальный набор знаний чтобы начать искать работу. Вот как это сделаю буду для души ковырять азур с блейзером
225 2715860
>>715795

> А такая хуета для уебанов любящих пихать Raw SQL в код



А ты хочешь запихнуть этот SQL в отдельный файлик и потом подгружать его каждый раз, молить богов, чтобы юзер-долбоеб не удалил папку с ними и вспоминать как там надо параметры в запросе передавать, вместо того чтобы просто видеть это?
Или что? Я не понял.
226 2715879
Можно ли обходиться одним .Net sdk, или обязательно качать вижлу для работы с шарком?
227 2715889
>>715879
Можно. Кто ж тебе запретит.

Вообще. Ты можешь так-то вообще одним MSBuild и csc обходиться, если так уж хочется.

Блин. Как я по моно скучаю. Да, была кривой-косой, но мне так нравилось что был выбор. Хочу чтоб кто-то взял и сделал нормальную вендор-фри реализацию шарпов.
228 2715908
>>715860
Не быть уебаном использующим raw SQL в коде вообще. Очевидно же.
229 2715922
>>715860

> запихнуть этот SQL в отдельный файлик


Можно же заэмбеддить ресурсы.

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


А если он удалит DLL-ки? А если он удалит рантайм дотнета? А если он удалит операционную систему???

> вспоминать как там надо параметры в запросе передавать


Один раз пишешь DAO с заполнением всех параметров и дальше тупо вызываешь везде методы оттуда. Проблема непонятна.
230 2715931
>>715922

>Можно же заэмбеддить ресурсы.


А можно этого не делать, а иметь запрос прямо "на месте", потому что от запихивания запроса в ресурсы пользы нет, а править ресурсы морока.
К тому же ресурс это....ресурс. А sql запрос не совсем ресурс.
Делаем фичу, меняем sql запросы и эти изменения в истории контроля версий логически связаны, то есть относятся к правильным файлам, а не "отдельный словарь sql запросов, хер пойми где и как он с чем логически связан (ведь сам файл DAO не изменился)" (а уж мерж этого файла - отдельное удовольствие).

Потому и пихали в ресурс не потому что нужно, а потому что не было возможности нормально вписать это в коде.
231 2715932
>>715908
Аргументы кроме ЯСКОЗАЛ будут? Или ты думаешь, что те, кто использует dapper не осилили EF или что то другое )
232 2715947
>>715795
Боюсь спросить, а как ты сырые json'ы описывал.
Вещь очень нужная, я тоже не пойму почему только сейчас завезли (на самом деле думал что такое подобное уже есть)
233 2715948
>>715403
Ебись с @
234 2716050
>>715932
Аргументы, в том, что твой софт становится неподдерживаемым куском говна.
>>715947
Ну бля, в json файлах наверное, не? За каким бы хером мне json-ы в код то пихать? Ты может еще и xml в код в виде строк предложишь засунуть?
235 2716264
>>716050

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


скажи это разрабам стековерфлоу, а то они придумали dapper и не знают что их продукт нельзя поддерживать )))
236 2716533
>>716264
Любимый аргумент говнокодеров. "А вот в MIcrosoft/Google/Stackoverflow так делают, почему мне нельзя".
Потому что ты - не они. И твой говнокод точно не соответствует никаким стандартам.
237 2716568
>>716533
то есть у тебя аргумент вида ЯСКОЗАЛ
ясно понятно
238 2716607
>>714332
>>714343
Короче сделал проще - через статическое событие в статическом же классе. Каждый объект в своем конструкторе подписывается на это событие, затем при изменении свойства selected вызывает метод статического класса, в котором уже происходит вызов события, таким образом при изменении объекта об этом уведомляются все остальные. Поясните, насколько это говнокод? Статические классы это же вроде зло и все такое.
239 2716612
Можно как-то заигнорить Environment.FailFast? Одна блядская библиотека валит приложуху.
240 2716630
Здравствуйте., я студентик, простите за лёгкий примитивный вопрос наверное
задание: обчислить сумму бесконечного ряда
проблема: в sum как ответ выходит знак вопроса
как фикстить?65
image.png42 Кб, 937x174
241 2716636
Дотнетаны, есть один IIS и после оновления винды на десятку 22Н2 он меня заебал.
Бочку сделал, хуйцов соснул,права на папки у учетки appool раздал
и даже группу IIS_USRS добавил

Что еще этой мрази надо?
242 2716731
>>716607
абсолютный говнокод. в односелекте события вообще не нужны
в мультиселекте вьюмодель итема должна уведомить что ее выделили. И то ЕСЛИ ДОЛЖНА - вот тогда уж приходится думать "а как при ее изменении IsSelected других уведомлять". и тут уже разные варианты.
243 2716734
>>716731

> И то ЕСЛИ ДОЛЖНА - вот тогда уж приходится думать "а как при ее изменении IsSelected других уведомлять". и тут уже разные варианты.


Ну так чей плох мой вариант?
244 2716737
>>716734
ты сам ответил на свой вопрос же чем он плох
245 2716742
>>716737
Ну других вариантов я не вижу, разве что сделать приватное событие прямо внутри класса и вызывать его в сеттере... Хм, звучит то неплохо.
246 2716759
>>716630
Поставь точку останова и посмотри результат. Если результат правильный - то чет с форматом.
247 2716875
>>716636
1. Я бы написал как-то так, если бы на первом курсе учился.
2. У тебя факториал твой - всегда 0. Потому - результат либо инфинити будет.

Консолька - не умеет рисовать знак бесконечности, потому - у тебя вместо него вопросик.
248 2716876
Блин промазал(((
Это >>716875
Сюда >>716630

>сумму бесконечного ряда

249 2717082
Кто-то на WPF'e сталкивался с полным внезапным крашем приложения из-за MediaElement? Ситуация следующая - при загрузке окна в котором должно сразу загрузиться видео (локальный файл) приложение висит несколько секунд даже без черного кадра в MediaElement и затем просто отлетает. Не срабатывает вообще ничего, ни OnMediaFailed, ни try/catch в инициализаторе, ни в мейне программы. Но это еще пол беды, самая хуйня в том что оно таки периодически (как правило) работает и все нормально запускается. Видео одно и тоже (40мб, 15сек). Пытался отловить это в дебагере чтобы посмотреть вывод - все работает, запускал кучу раз, ловлю изредка эти отвалы только на релизе. Проверял на разных пеках, там тоже иногда отваливается.
Я знаю что у MediaElement под капотом Windows player, пытался смотреть ивенты системы, никаких ошибок не нашел.
Может кто подскажет как можно отловить хотя бы ошибку - что ему не нравиться? Я так понимаю что это какое-то COM исключение на стороне самого windows player'a.
250 2717083
Кто-то на WPF'e сталкивался с полным внезапным крашем приложения из-за MediaElement? Ситуация следующая - при загрузке окна в котором должно сразу загрузиться видео (локальный файл) приложение висит несколько секунд даже без черного кадра в MediaElement и затем просто отлетает. Не срабатывает вообще ничего, ни OnMediaFailed, ни try/catch в инициализаторе, ни в мейне программы. Но это еще пол беды, самая хуйня в том что оно таки периодически (как правило) работает и все нормально запускается. Видео одно и тоже (40мб, 15сек). Пытался отловить это в дебагере чтобы посмотреть вывод - все работает, запускал кучу раз, ловлю изредка эти отвалы только на релизе. Проверял на разных пеках, там тоже иногда отваливается.
Я знаю что у MediaElement под капотом Windows player, пытался смотреть ивенты системы, никаких ошибок не нашел.
Может кто подскажет как можно отловить хотя бы ошибку - что ему не нравиться? Я так понимаю что это какое-то COM исключение на стороне самого windows player'a.
В тырнете пока ничего не нашел.
251 2717085
Планирую из-за этого говна перекатиться на vlc либу, но там зависимости 4.6.1, а я некроёб на 4 фреймворке и у меня отвалиться полтора некроёба на XPшках.
252 2717116
>>717082
Забей, тут одни веб макаки сидят, такие вопросы даже не поймут.
253 2717122
>>717116
Лучше уж быть вебмакакой, чем ебаться с TREEVIEW.
254 2717141
>>717082
Лови же unhandledexception
255 2717229
>>717141

>unhandledexception


Репортинг ин - нихуя. Я уже обмазал вывод в файлы ибо изначально я натыкал месседжбоксы и я подумал что может там гуишник крашится.
Энивей спасибо, я вообще за него забыл.
256 2717306
>>717229
ну технически в дотнете есть настройки создавать дамп при краше
https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/botr/xplat-minidump-generation.md
но хз сработает ли если крашится в нативной части.
257 2717389
>>716636
Тебе точно иис нужен? Есть же кестрел
БАМП!!! 258 2717472
БАМП!!!
259 2717546
>>717389
Мне иис нахуй не нужен, но так заведено в нашей команде где я сорт оф новенький

Оказалось надо доставить всяких фреймворков от 2 го 6го и с каким то из них всё заработало
260 2717565
>>717082
Ловишь appdomain unhandledexception и firstchanceexception? Вообще такое может если контрол еще не прогрузился, а его уже пытаются запустить.
261 2717661
>>713351

>а третья нормальная получается сама у большинства людей.


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

мимо-синьор-скуль-помидор
262 2718218
Я не понимаю, объясните. Вот вы в шапке написали, что ваш язык лучший в мире, но на хх у пхп вакансий на бэкэнд больше в два раза, чем у сишарпа. Почему так? А ещё у вас аниме в шапке, вы в курсе?
263 2718241
>>718218

> Искать вакансии на ХХ в 2023м.


Ну ты понял...
264 2718244
>>718218
А в джаве, питоне и жсе еще больше чем в пхп, зачем ты сюда пришел тогда?
265 2718261
>>718241
А где надо искать?
266 2718286
>>718261
Связи.
267 2718314
>>718218
Вакансии и даже общая популяность языка никак не отражает его качества, особенно в бизнес среде.

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

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

Как только ты попадешь на реальную работу ты охреенеешь от тупости людей и их приверженству как уточек к первому что они видели в жизни. Сразу появится понимание того что популярное != хорошее/лучшее.
268 2718319
>>718241

>Искать вакансии на ХХ в 2023м.


А я не искал. Я лишь проанализировл уровень востребованости.

>>718244

>А в джаве, питоне и жсе еще больше чем в пхп


Я выбираю между пхп и сишарпом. пипитон и прочии жабы с 500 откликами на вакансию меня не интересуют

>>718314

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


Ладно. То есть ты намекаешь, что сишарп для бэка более удобен, чем пхп, но найти работу на нём тяжелее чем на пыхе?
269 2718322
>>718319
А, дак ты вкатунишка. Тогда советую тебе идти нахуй, а не набрасывать на вентилятор
270 2718346
>>718322

>А, дак ты вкатунишка.


Скуф, спокуха. Молодые плэйбои типа меня вас заменят, это правда, да. Но это не повод подрываться и посылать меня нахуй из треда, предназначенного для ВКАТА в сишарп.
271 2718359
>>718319

>То есть ты намекаешь, что сишарп для бэка более удобен, чем пхп, но найти работу на нём тяжелее чем на пыхе?


Я не он, но отмечу что прогаю с 2005 года и весь серьезный промышелнный бекенд что я встерчал, это исключительно Java и потом C#.

Пхп говно говна. Но, объективно говоря, шарп переусложненния душная хуйня.
272 2718364
>>718346

>Скуф, спокуха. Молодые плэйбои типа меня вас заменят, это правда, да.


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

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

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

А эти умения получают исключительно с опытом.

Вот возьмем к примеру меня: 12 лет автоматизации аналитики продаж и финансовой отчетности. 2 года автоматизации анализа спутниковых снимков. Ну и немного всякого другого по мелочи.

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

мимо-38-лвл-синьор-наносек
273 2718386
>>718319

>А я не искал. Я лишь проанализировл уровень востребованости.


Хорошие компании редко выкладывают вакансии.
А отличные на 30-50 тел так вообще сами ищут когда им кто-то нужен, изредка в своем уютном бложеке публикуя инфу о том что им кто-то нужен.

>Я выбираю между пхп и сишарпом. пипитон и прочии жабы с 500 откликами на вакансию меня не интересуют


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

>Ладно. То есть ты намекаешь, что сишарп для бэка более удобен, чем пхп, но найти работу на нём тяжелее чем на пыхе?


Смотря где ты хочешь работу искать, в некоторых странах C# проще найти. Плюс нужно понимать чего ты хочешь, язык который использует компания это чаще всего показатель чего стоит ждать от компании в целом.
У нас вообще очень слабый рынок по ИТ в плане инновация и хорошего инструментария, в том же C# найдя работу ты будешь писать на какой-нибудь 6-7 версии и тебя по рукам за тот же сорс ген бить будут потому что команда его не знает.

А так да, C# намного лучше других языков для разработки именно из-за инструментов, это по мне самый удобный язык в плане дебага и разработки. Тут можно писать грязные дерьмовый код, а затем парой нажатий превратить в красоту где с легкой правкой сделать код еще и хорошим.
274 2718399
>>718386

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



Вот этот по сути дело говорит. С# хорош своей инфраструктурой. Охуенная среда разработки, даже так, ОХУЕННАЯ. Централизованный репозиторий пакетов, где следят за качеством. Чрезвычайно душная типизация заставляет даже самую тупую макаку писать +- вменяемый код. Плюс богатые возможности по дебагу, автогенераторы всего и вся искаропки, автомапперы, охуенные "клиенты" к самым ходовым СУБД.

Т.е. ты просто изкаропки имеешь весь передовой инструментарий.

Оборотная сторона - очень мало новых проектов по крайней мере в МСК. Вот я чейчас в 2023м году сижу на легаме параше в стиле
.metCore3 и .net5 прости господи. Притом клиентами к бд у нас какие то самописные провайдеры. Вместо Entity или хотя б даппера

Тоскааааа

НО при всём при этом, ежели вкатун хочет в бек, всё остальное ЕЩЕ хуже

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

мимо-38-лвл-синьор-наносек
275 2718421
>>718386

>Ради денег?


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

По этой причине

>Иди в 1С


не подходит, не говоря уже о том, что 1С - это скучная вакуумная поебень.

>>718386

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


>>718399

>Чрезвычайно душная типизация заставляет даже самую тупую макаку писать +- вменяемый код


Ну понятно в прицнипе. Качество в обмен на скорость написания кода грубо говоря, соответственно и время вката тоже больше будет. Спасибо за пояснение.
276 2718499
>>718399

>сижу на легаме параше в стиле


>.metCore3 и .net5 прости господи.


Чел, ты сейчас просто у кучи джавистов инфаркт вызвал, записав в легаси фреймворк которому меньше четырех лет (это если про 3.1 говорить, .net5 и того меньше).
image.png17 Кб, 574x298
277 2718514
>>718499
Ну понимаешь, я в то же самое время мамкин вебдев на ангуляре, и у меня со времен вката в .net нагуляр вырос с 8 по уже 16й

В мире тайпскрипта всё такое быстрое...

Ну и чтоб ты понимал, вот одна из моих "главных админак"
278 2718519
>>718218

>о на хх у пхп вакансий на бэкэнд больше в два раза


почему то вакансий на продавца в пятерочку больше чем в президенты. выходит быть президентом убого, а продавцом в пятерочке востребовано.
279 2718537
>>718286
Это для социоблядей
280 2718579
>>718499

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


он правильно записал. ведь это все на деле довольно молодое

я вот смог переехать с дотнета4.8 аж только на нет6
а на нет5 не смог (ведь несмотря на циферку он умеет сильно меньше чем 4.8)
281 2719035
А можно как-то скопировать в буфер обмена текст с дополнительными параметрами? Я хочу чтобы в другие приложения вставлялся обычный текст, а для моего собственного были дополнительные метаданные о форматировании и прочем.
282 2719109
Обновили авалонию до 11rc, ёбаный рот этого казино.
Обьясните, в чем может быть проблема, вьюхи отъёбывают под wsl бубунтой, под шиндовс полет нормальный. Никак не могу понять в чем причина
283 2719152
У меня проблемы с именами.
Вот, например, ReadOnlySomeShitViewModel. Это ViewModel для ReadOnlySomeShit? Или ReadOnlyViewModel для SomeShit? И если последнее, не логичнее ли будет изменить на SomeShitReadOnlyViewModel?
284 2719241
>>719152

>не логичнее ли будет изменить на SomeShitReadOnlyViewModel?


Да, логичнее (но не на 100%)
285 2719251
>>719241
Для читаемости, логичности и понятности по моему скромному мнению было бы лучше
ViewModelOfReadOnlyShit
ReadOnlyViewModelOfShit
Но так же низзя, ViewModel должно быть суффиксом...
286 2719254
БТВ, а что насчёт алиасов? Вот есть тип со сложно читаемым или охуенно длинным названием, или даже вообще названный так, что хуй пойми что он делает, почему бы не использовать алиасы?
using ShitROVM = PublicToiletManager.ViewModels.ReadOnlyViewModelOfShit и збс.

Но пишут, что это хуйня и использоваться должно только для коллизий.
287 2719323
>>719251
ReadOnly и ViewModel - указание на функционал
SomeShit - на суть
Суть > функционала

>>719254

>Но пишут


На заборе тоже дохуя всего пишут. Но там хуи.

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

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

И какие книжки есть по c#?
И почему ссылки разные для десктопа, веба и т.д.? С# для каждой платформы свой что ли?
289 2719364
>>719035
Есть подозрение что тебе куда то вот сюда

https://learn.microsoft.com/en-us/windows/win32/dataxchg/clipboard
290 2719411
>>719328

>типо где в левом окне инфа написана, справа прямо редактор кода


Боюсь имагинировать что за уровень туториалов в этой параше можно провернуть окромя хело ворлд и сортировки пузырьком. Редактор это же не хуйня из под коня, поэтому что мешает тебе пользоваться Alt+Tab для переключения между тутором и редактором? Ну или за пару тысяч купить дополнительный монитор.
В гибридах я не вижу ничего хорошего.

Единственное, что может быть интересным, это онлайн переводчик кода на шарпе в IL-код https://sharplab.io/

>И какие книжки есть по c#?


В шапке

>И почему ссылки разные для десктопа, веба и т.д.? С# для каждой платформы свой что ли?


Шарп одинаковый, но разные условия для работы, соответственно иной подход, библиотеки. Это не мешает особенности разработки веба использовать в десктопе. У меня, к примеру, так и есть.

Проще с десктопа начать т.к. веб сразу кидает тебя в омут паттернов, сервисов и прочего.
291 2719412
>>719328

>С# для каждой платформы свой что ли?


Да десктопный C# и веб C# (а еще есть геймдевный C#) это совсем разные языки. У них очень давняя и глубокая история вражды. Может быть когда-то и была надежда, что они станут чем-то одним, но она давно уже утеряна.
292 2719440
>>719411
я просто решил вкатиться в гейдев( и не в юнити)
поэтому и надо шарп учить.
293 2719442
>>719412

>Да десктопный C# и веб C# (а еще есть геймдевный C#) это совсем разные языки



И в чем разница?
294 2719444
>>719442
Забей, он тралет
295 2719563
SDK x64 или АMR ставить? Какая разница в них?
296 2719564
>>719563
такая же какая между процессорами х64 и arm
297 2719577
>>719563
Ставь оба, вдруг ты процессор решишь поменять
298 2719617
Нулёвый студент с горящим проектом просит помощи.
Есть свёрстанный сайт на реакт который работает на локалхосте с портом 3000 и слушает asp.net web api на порте 5000, но на самом деле нихуя он не слушает, хотя всё подключено(как мне кажется).
как сделать так шоб всё работала?
Я полный ньюфаг, и только начал вникать, воот.
Скрины кода могу показать, но я не буду ничего лить сюда, пушо не ебу что может пригодиться
299 2719618
>>719577
вот только смена процессора вызовет необходимость переустановки всей винды, но твой совет верный )
300 2719673
Как телеметрию отключить? Через cmd?
DOTNET_CLI_TELEMETRY_OPTOUT

Нашел что надо писать "setx DOTNET_CLI_TELEMETRY_OPTOUT 1"

На сайте другео написано.
А еще написано - закрой установщик и запустите его снова.
И что дальше? Выбрать "восстановить"?
301 2719797
Как в visual studio code запустить дебагер?
пишет nable to generate assets to build and debug. OmniSharp server is not running.
302 2720140
>>719797
У тебя установлены приблуды для работы с дотнетом в вскоде?
Просто сейчас - буквально что нужно - это нажать кнопку AddConfiguration и выбрать .net
А дальше - через f5 запустить.
image.png51 Кб, 488x209
303 2720162
>>720140
Консольный текстовый треш в графическом приложении.
304 2720271
>>720140
я устанавливал только с# расширение от микрософта
vsgovno.jpg330 Кб, 1285x951
305 2720280
>>720140
Нихуя не понимаю.
что надо сделать-то?

Пиздец. Нет нормальных редакторов для C# каких где ебаться не надо так?
306 2720306
>>720280
А у тебя проект-то создан? Код - открыт в той же папке где солюшн/проект?
307 2720316
>>720306
Не ебу о чем ты.
309 2720325
Посаны-посаны.
А как в DDD, когда у нас богатая модель - закладывать сложную логику?

Типа вот допустим. Учебный пример. Есть две доменные сущности: Зал и Работник. Есть логика - один работник не может быть одновременно в двух залах в один день задействован.
Где это должно быть? В модели зала? В модели работника?

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

Да. Я понимаю, что в DDD надо как-бы с доменным экспертом и все такое. Но если его нет? Есть просто набор требований в духе: система должна позволять выполнять круд-операции базовые + распределять работников по залам, с озвученным выше условием.
310 2720353
>>720306
ААА, ПОНЯЛ
там оказывается через ком строку создавать надо было
311 2720374
>>720353
все работает, вдруг кому пригодиться алгоритм
https://learn.microsoft.com/ru-ru/dotnet/core/tutorials/with-visual-studio-code?pivots=dotnet-6-0
312 2720483
>>720280

>Нет нормальных редакторов для C# каких где ебаться не надо так?


визуал студия
райдер

ты сам выбрал каку
313 2720743
>>720325

>Есть две доменные сущности: Зал и Работник. Есть логика - один работник не может быть одновременно в двух залах в один день задействован.


Сдается мне что тут должна быть какая-то третья сущность (например "Рабочая смена" или что-то подобная), которая уже и будет содержать связывающую их логику.
>>720325

>Я понимаю, что в DDD надо как-бы с доменным экспертом и все такое. Но если его нет?


Тогда лучше не использовать ДДД. Если у тебя нет нормального ТЗ где расписаны все связи, условия консистентности моделей и т.д., то ты просто размажешь всю логику в доменном слое и охуеешь при первом же рефакторинге или изменении чего-либо.
314 2720812
у меня есть вот такая вот строка, которая парсится с html страницы
https://pastebin.com/bXc0i6M8
Как ее в шарпе можно нормально запарсить?
315 2720962
>>720812
Раз принёс жс код то вот и ищи парсеры жса под шарпы. Но я думаю вряд ли ты захочешь работать с ast деревом так что сразу ищи либы (есть и натив и менеджет реализация) для того что бы исполнять его
316 2720981
>>720812
начни с банального парсинга жсон
>>720962

>вряд ли ты захочешь работать с ast деревом


в данном случае даже ручной парсер пишется легко
317 2721422
Изучаю сишарп для веба. На реддите пишут что вместо asp.net изучать .net core. Я запутался в этом зоопарке если честно. Что в итоге изучать то?
318 2721435
>>721422
Asp.net core
319 2721452
>>721422

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


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

>На реддите пишут что вместо asp.net изучать .net core.


Не читай реддит, тем более для изучения чего бы то ни было вообще.

Лень расписывать, поэтому совсем кратко:
Учишь .Net6 и выше (дополнительно ознакамливаешься с .Net Core3.1) для понимания платформы и т.д.
Сверху учишь Asp.Net Core 6 и выше, конкретно для веб разработки.
320 2721458
>>721452
А почему именно .net 6 а не скажем 7 или 8 (если не путаю вроде недавно выкатили)
321 2721539
>>721422
да все там просто

были дотнеты 1.1, 2.0, 3.5, 4.0...4.8
ну и со всем этим росли EF и asp.net, винформс и WPF

в какой то момент нашлась голова решившая что кросс это хорошо и нужно рантайм кросс. Но переделать это сложно, поэтому решили писать с нуля "сразу правильно и без депрекатед говна"
А попутно "переписать с нуля всякие EF и ASP.NET". Винформс и WPF никто и не планировал делать кросс - их и не трогали.

Пояснили народу что 4.8 последний и больше развиваться не будет и ждите пока новое сделаем

Дали этому новому имя dontnet core.
Много там херни наделали, переделали, не хотели портировать разные штуки, потом портировали таки часть.

В итоге дописали до "кажись стабилизировали и юзать можно, пора делать его основным, а про 4.8 забыть"
Так этот core ожидаемо стал дотнет 5-6-7, а у сопутствующих продуктов осталось слово core (ну а куда ж без него - тогда не отличить от старого)

поэтому те, кто пишет на 4.8 фреймворке и ASP.NET - просто пишут на старье, которое решили похоронить и оно легаси со всеми вытекающими (некоторые вон и на дотнет 2 пишут, мазохисты)

И в плане "что учить" тут просто
ожидаешь ли ты что на твоей работе будут использовать старье (что кстати можно понять ибо не все можно перевести на новые рельсы) или же ты не хочешь грузить себя голову старьем которого может и не быть на твоей работе...вот и думай.
322 2721555
>>721539
Не хочу грузить голову старьем. Хочу учить актуальные технологии. Если на работе скажут что легаси нужно поддерживать, хорошо, я это буду делать, но пока у меня нет работы я хочу учить актуальный стек.
323 2721574
Вопрос тупой, но всё же задам. Что от меня хотят и как это сделать?
С интерфейсами, классами и т.д. знаком.

1.Составить иерархию классов в соответствии с вариантом. Во главе иерархии классов одолжен находиться интерфейс, которые определяет возможность создания объекта с помощью ДСЧ:
interface IRandomInit
{
void RandomInit();
}
324 2721576
>>721458

>А почему именно .net 6 а не скажем 7 или 8


На .net6 массово начали переходить где-то во второй половине 2022года. И до сих пор еще достаточно много проектов которые крутятся на .Net Core 3.1.
С учетом того, что на 7-й .Net никто переходить не будет, а 8-й выйдет только в конце этого года, то ты его раньше конца 2024 года на реальных проектах вряд ли пощупаешь.
Т.е. учить стоит то, что актуально сейчас и будет актуально как минимум еще полтора-два года, а потом уже хватит простого ознакомления с новыми версиями.
325 2721583
>>721574

>Что от меня хотят и как это сделать?


А хер его знает. Выглядит как куча несвязанных слов на тему ООП.
326 2721664
Пасаны, помогите с блейзор васм + девекспресс отчетом.
Леплю данные в датасурс (похуй какой, взял из самого простого примера https://docs.devexpress.com/XtraReports/403671/detailed-guide-to-devexpress-reporting/reporting-api/create-reports-in-code/create-a-simple-data-bound-report) - данные не отображаются в отчете, данные которые вместо этого руками биндю к лейблам всяким - отображаются.
Сделано всё более-менее по этим двум штукам
https://supportcenter.devexpress.com/ticket/details/t988191/how-to-integrate-devexpress-blazor-reporting-to-a-blazor-wasm-hosted-app
и
https://docs.devexpress.com/XtraReports/401677/web-reporting/blazor-reporting/server/quick-start-in-blazor-reporting/create-a-blazor-reporting-application

ТЛДР - Данные по ExpressionBindings не отображаются, данные по обычным биндам а ля this.nameLabel = "pizda" отображаются
image.png82 Кб, 912x482
327 2722117
Привет анон. Кто знает за Bot Framework SDK , подскажи пожалуйста, как начать новый диалог из proacktive callback ? Имею вот такой код, он вызывает прописанный диалог , но после первого этапа в водопаде крашитс.
328 2722201
Сап, дотнетач. Вопрос больше по архитектуре, вот вы бы в каких ситуациях заюзали брокер сообщений? Делаю в своей шараге ебаной телеграм-бота с админ-панелью, через которую можно отправлять в бота сообщения, опросы и так далее. И думаю при вызове метода апи этой админки отправлять через условный RabbitMQ события, которые бот бы обрабатывал со своей стороны.

Не слишком мудрёно ли это? И если да, то какие альтернативы могут быть? Думал мб вебхук написать вручную, но будто бы это ебля тоже.
329 2722240
>>722201
Вебхуки/стейт машина
variables.png23 Кб, 443x381
330 2722854
Уважаемые погроммисты!

Поясните, пожалуйста, за локальные переменные и утечки памяти.
Вот есть поле в классе _globalVaariable, оно один раз создается и задается. Потом в цикле переиспользуется сколько надо раз.

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

Пример прицепил.
331 2722874
>>722854

>утечки памяти


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

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


Ты (конкретно ты) не знаешь. У тебя там будет два этапа компиляции. Из C# в IL и из IL в маш.код. И на каждом этапе компилятор может сделать все что сам посчитает нужным для оптимизации. Он может разложить цикл или самостоятельно вынести переменную за скоуп, т.к. увидит, что она не меняется и т.д. Поэтому строго забей хуй на подобный умственный онанизм и изучай базу языка. Отличие типов значений от ссылочных, как ведет себя стринг, упаковка/распаковка, статика и т.д.
332 2722892
>>722874

>Ты (конкретно ты) не знаешь.


Да, не знаю, поэтому вопрос и задал. При всем уважении, но ты мне пыню напоминаешь, которого спросили про 2+2, а он развез говна на два абзаца. Без обид, если ты (конкретно ты) знаешь ответ на вопрос из примера, то прошу ответить, если нет, то не надо уподобляться бункерному.
image.png89 Кб, 1248x494
333 2722893
>>720962
Все оказалось очень просто, эту фигню я смог спарсить как json массив через JArray.Parse и с этого момента можно было уже делать все, что хочешь.
Сперва я написал свой метод, который проходился по дереву без рекурсии, а потом понял, что нахуй это не нужно, можно тупо через linq .Descendants().Where() и select и всё, блэт.
334 2722915
>>722892

>то прошу ответить


Во первых тебе дали прямой ответ - это не твоего ума дело, за тебя это решает компилятор. В каждом случае он будет решать исходя из кучи разных условий о которых ты даже представления не имеешь.
Во вторых, если ты хочешь подробностей то идешь и читаешь книги вынесенные в шапку. Все это описывается в первых главах почти любой книги по шарпу. Если тебе мало - читаешь Рихтера. Если мало ставишь какой-нибудь дотпик и лезешь исследовать IL. Нахуя анону тебе объяснять то, что уже тысячу раз разжевано в интернете.
В третьих - ты пидор, раз вот так сходу съезжаешь на политику.
335 2722923
>>722915
Ты опять вместо прямого краткого ответа в залупу лезешь, вместо того, чтобы сказать что ты сам не знаешь или промолчать.
336 2722925
>>722923

>прямого краткого ответа


Иди нахуй.
Такой ответ устроит?
337 2722926
>>722925
Слив засчитан. Нассал тебе на пятак.
338 2723049
Какие проекты можно в соло пилить на шарпе? Типо портфолио?
Вот при собесе на андроид разраба можно показать свои приложухи например.
339 2723077
>>723049
Любые? От микроконтроллеров до смузи веба.
Вопрос говна и ответ под стать
340 2723152
>>723077
Веб для пидоров же. Если б я хотел веб я б жс дрочил.
А по микроконтроллерво нет вакансий. Так что мимо.
341 2723191
>>723152
Ещё и ответ на ответ говно.
Конечно никто в проде НЕ будет писать под мк на шарпах, но это просто пет проект который можно кинуть в портфолио и показать что как минимум ты не камень. Если ты реально хочешь в это лезть то стоит уметь всего по немногу о что то хорошо т.к. задачи разные и сопосбы их решения тоже
342 2723270
343 2723335
>>722854
Если по простому - там твой код на уровне IL переписывается под выполнение стековой машиной. У нее есть регистры и стек, который и выделяется для локальных переменных. На изначальный код это совсем не похоже ибо другой принцип выполнения. И для выполнения IL инструкций значения помещаются в стек, и при выполнении вытесняются.

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

Так что даже для 100 переменных и цикле размер стека может быть на 2-3 значения и ему хватит.
344 2723852
Шарп реально хорош на линуксе, или мягкие что-то мутят?
345 2723870
346 2723887
>>723852
кроме TreeView
он лютое говно. тред не даст соврать
347 2723912
>>723335
У стековой машины нет регистров. У регистровой машины есть регистры. Рослин компилит код в ил - стековый язык. Ил во время выполнения приложения, каждого конкретного метода, компилируется джитом в нативный код. Вот нативный код выполняется процессором на регистрах - на регистровой машине.

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

Локальными переменными можно стек переполнить. Просто находясь внутри метода, вызови этот же метод.
348 2723915
>>723912

>У стековой машины нет регистров.


но я так и не понял где сохранятся значения.
параметр1 грузим в стек
параметр2 грузим в стек
делаем операцию и стек опустошается
переходим к следующей операции
А где хранится результат - непонятно по коду IL
349 2723920
>>723915
На вершине стека.
350 2723935
>>723915
Представь себе поток - единица выполнения. Поток бежит по строчкам кода, занося в стек значения переменных и выполняя операции над над ними. Сложить два верхних значения, результат оказывается в вершине стека. Вызов функции это тоже значения в стеке - адрес возврата, значения параметров и прочие ништяки про которые шарписатм знать неположено. И так поток хуярит пока не встречает инструкцию ретурн. Одну за другой. Стек начинает сворачиваться. Значение на вершине постоянно меняется. В конце концов на вершине стека оказывается условный ноль и выполняется инструкция ретурн - метод мейн возвращает результат вызывающему коду.
Image 1.png25 Кб, 537x708
351 2723936
>>723935
просто там локальные помечены как .locals
что никак не говорит где оно лежит
здравый смысл говорит, что конечно в том же стеке только повыше, но я нигде не нашел где об этом было бы написано явно.
352 2723960
>>723936
В кадр стека. Это условный мегабайт выделенный виндой потоку под стек. Заходя в метод поток заранее выделяет под локальные переменные память. 3 инта, каждый по 4 байта. После сложения значение с вершины стека вычислений помещается в память выделенную под локальные переменные и занимает там 4 байта.

Физически в этом процессе участвует пара регистров и физическая память в оперативке.
353 2723975
>>723936
Нигде не сохраняет. Этот код нужен чтобы джитер мог сджитить нейтив. Вот машинный код уже где-то сохранит. Stloc.0 отправляет результат сложения из регистра в память, по конкретному адресу в кадре стека. Затем Ldloc.0 прочтет этот адрес и поместит 4 байта инта в регистр процессора.
354 2723977
Программист oneass шарит за программирование лучше чем шарписты...

https://www.youtube.com/watch?v=wKR1WxLVB0k
355 2724004
>>723977
Ты попутал разработчика на языке (шарпист)
с разработчиком языка (сишник)

Шарписту нахрен не сдались такие подробности если он сам не пишет IL код. Но даже если иногда и пишет, то проще написать код руками, потом глянуть что за IL получился и перенести.
356 2724049
>>723977

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


Вот только неприятная загвоздочка, кто шарит за программирование, программ не пишет, это пиздабол-консультант который только языком мелет.
357 2724124
>>724049
Попробуй пунктуацию
358 2724730
Я тут вдруг понял, что можно создать иерархию классов, где родительский класс может иметь член типа класса наследника:
public class A {
private B _b;
}

public class B : A {}

Где подобное может быть полезно?
359 2724905
>>724730

>Где подобное может быть полезно?


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

1. Как прокачиваться, в какую сторону? Основа моего стека - .Net, а также много работал с фронтом на JS (но это не модные React/Angular, а непопулярный ExtJs), SQL. Насколько я понимаю, лучше всего стоит
1.1. Подтянуть фронт, хочу пройти курсы по Реакту
1.2. Погрузиться в Azure, эта облачная инфраструктура тесно связана с .Net

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

2. Как искать работу за рубежом? Я застрял где-то на планке 3,3 тысячи долларов в месяц. Варианты нахожу в основном среди фирм, которые перенесли деятельность из РФ, а не напрямую с западными заказчиками.
361 2725110
>>725038

>Как искать работу за рубежом? Я застрял где-то на планке 3,3 тысячи долларов в месяц.


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

>Погрузиться в Azure, эта облачная инфраструктура тесно связана с .Net


Нахуй сейчас никому не нужно. Причем не только в РФ, но и за границей тоже. Уже после Core3.1 стало понятно, что .net прекрасно и на линуксе пашет и контейнизируется. Поэтому прокладка в виде ажура стала никому не нужна.
>>725038

>Подтянуть фронт, хочу пройти курсы по Реакту


Это дело если хочешь фулстечить, но лучше тогда еще и TypeScript захватить.
>>725038

>Как вообще стать хорошим, ценным специалистов?


В нынешних реалиях достаточно просто качественно рабоать, уметь исправлять и не повторять свои косяки. Ну и немного развиваться в свободное/рабочее время.
.png885 Кб, 753x1063
362 2725119
Смотрите какая ситуевина возникла.
Суть. Че я хочу. Есть библиотека A, есть библиотека B.
Я хочу, чтобы A - могла пользоваться B, но при этом A - про то что в B - ничего лишнего не знала. Но при этом все еще могла бы все что надо дергать.
Потому - что я придумал. Пусть у B будет интерфейс вида:
```cs
[EntryPoint] IReadOnlyDictionart<string, Delegate> Provide { get;}
```

Собственно. Вот в этом суть. Я думаю понятно. A - теперь подгрузив библиотеку - может найти там нужный атрибут, по нему - достать этот Provide и дальше - дергать как надо.

И для моих целей - подход рабочий. НО. Я решил померить разницу в скорости вызова. И меня это смутило. Вот таким вот макаром - вызов метода - в 10-100 раз медленнее. Не то чтобы критично, но меня напрягает. Такая жа срань но с дерганьем из сишных библиотек - намного быстрее работает.
Собственно, теперь мне интересно, а есть ли какие-то способы ускорить? Ну, допустим - выдернуть этот метод и пристыковать его к типу, чтобы создавать тип в рантайме, и потом уже он бы дергал эти методы будто из своего типа. Ну или что-то в таком духе. Кто-нибудь вообще такой хуйней занимался? Поясните плиз.
363 2725123
>>725110

>Поэтому прокладка в виде ажура стала никому не нужна.


Долбоёп! Это ты прокладка в виде долбоёба не нужен. Как будто бы у тебя свой дата-центр и своё облако с 200+ сервисами.
364 2725125
>>725038

>Я застрял где-то на планке 3,3 тысячи долларов в месяц


И чё те ещё надо, собака? Мало платят? На феррари не хватает? На устрицы с лимоном не хватает? На студию в москва-сити с мебелью от boca room не хватает?

>Варианты нахожу в основном среди фирм, которые перенесли деятельность из РФ


Ебать ну естественно, ажур ушёл с рынка же. Ты случайно не в анабиозе был последние 1,5 года? Хотя, обходить ограничения из России можно.

>Как вообще стать хорошим, ценным специалистов?


Работать, читать, изучать, развиваться. Ты продаёшь знания и своё время. Чем больше знаний накапливаешь, тем больше можешь предложить рынку.

>Как прокачиваться, в какую сторону?


Ажур + рякт + базы данных (nosql + реляционные бд) для начала будет норм. Ажур - это гигант сам по себе, там невъебенное количество сервисов. Ты пока их все изучишь - состаришься.
365 2725132
>>725123
У работодателя.
.jpg144 Кб, 700x778
366 2725134
>>725119
Сразу поясню, почему вот такой вот охуитительный подход.
Мне нужно, чтобы библиотека A - могла пользоваться любой библиотекой, которая реализует вот этот вот простой интерфейс. Допустим, библиотека B - это плагин, который нужно будет инициализировать. Вот A - это как раз инициализатор. Он будет брать из папки 100500 библиотек B и раскидывать их по элементам меню, а то что провайдится - будет кнопочками в подменюшках.
367 2725139
Чё, пацаны, аниме?
368 2725150
>>725125

>И чё те ещё надо, собака? Мало платят? На феррари не хватает? На устрицы с лимоном не хватает? На студию в москва-сити с мебелью от boca room не хватает?


В Тбилиси с женой и дочкой - впритык.

>>725125

>Ебать ну естественно, ажур ушёл с рынка же. Ты случайно не в анабиозе был последние 1,5 года?


Я не в РФ сейчас.

>>725125

>Ажур + рякт + базы данных (nosql + реляционные бд) для начала будет норм.


Да, вот об этом я и думаю сейчас. Ажур уже пользую понемногу, но в основном только их пайплайны.
369 2725582
Кто-нибудь знает ресурсы где можно подготовиться к вопросам на собеседованиях? Что-нибудь по типу этого с вопросами по ЖаваСкприпт

https://github.com/sudheerj/javascript-interview-questions#what-are-the-different-error-names-from-error-object
370 2725655
>>725110

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


ты клонишь в сторону неактуальности и невостребованности дотнет стека? или что
2023-06-0815-59-44.png19 Кб, 778x454
371 2726063
Почему когда я загружаю изображение с диска, то мне доступны метаданные, а когда с URI из интернета абсолютно то же изображение при получении метаданных возвращает null?

Ссылка на код
https://pastebin.com/2QYsJTuj

Ссылка на изображение
https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/306b9cad-4137-455e-94b2-f57cce570a00/width=450/21950.jpeg
372 2726107
>>726063
А ты уверен что твой BitmapFrame. Create сразу начинает грузить ссылку чтобы от него на следующей строке метаданные требовать?
373 2726131
>>726107
Точняк.
.IsDownloading = true

А чего он ведет себя как асинхронный метод?
374 2726141
>>726131
видимо для использования в Image. Это ж часть WPF. Если каждый Image будет блокировать UI, будет атата
2023-06-0818-49-58.png29 Кб, 731x686
375 2726291
>>726141
Не могу разобраться. Мне надо оторазить изображение и метаданные.

Чтобы добавить изображение в Image.Source, я использую BitmapImage. Но у этого типа, свойство Metadata официально не поддерживается — возвращает NotSupportedException
https://learn.microsoft.com/ru-ru/dotnet/api/system.windows.media.imaging.bitmapimage.metadata

Чтобы получить метаданные, я должен использовать тип BitmapFrame. Но вместе BitmapFrame и BitmapImage мне не удалось подружить, хоть оба являются наследниками ImageSource.

А теперь мой код (скрин или по ссылке https://pastebin.com/78mshqEk )
Код условно можно поделить на два блока: сначала создается BitmapImage, который загружает и отображает картинку, затем BitmapFrame, который ТОЖЕ загружает картинку и отображает метаданные. Т.е. я дважды обращаюсь к серверу.

На SO пишут, что раз оба типа являются наследниками одного и того же, то можно создать BitmapFrame, а потом присвоить UI-элементу в качестве источника Image.Source = BitmapFrame. Но у меня ничего не происходит.

Я пытался создать экземпляр BitmapFrame на основе BitmapImage, но тогда у меня не выводится метаданные.
376 2726308
>>726291
ты можешь загрузить картинку в MemoryStream (не забывая про его ущербность) и потом получать метаданные 100500 способами.

также ты можешь подписаться на окончание загрузки в BitmapFrame и соответственно обновить данные на UI

преврати DownloadCompleted в await и получишь то, что тебе нужно.
у тебя все равно async void
377 2726323
>>726291
ну или не превращай в await (тебе async не особ и нужен же), а напрямую подписывайся на события
378 2726327
>>726308

>преврати DownloadCompleted в await и получишь то, что тебе нужно.


Это как? Это же событие.

Алсоу через декодер (у которого есть событие DownloadCompleted) геморно, как и скачивать изображение на диск — надо определять формат изображения, чтобы создать нужный декодер.
379 2726331
>>726327
... но через декодер удалось получить и изображение и метаданные.
380 2726338
>>726327

>Это как? Это же событие.


событие переводится в Task
в общих чертах создаешь хендлер в котором TaskCompletionSource и по окончанию события он SetResult
https://stackoverflow.com/questions/22783741/a-reusable-pattern-to-convert-event-into-task

Но поскольку там 2 события, то лучше метод расширение
https://stackoverflow.com/questions/46709382/async-load-bitmapimage-in-c-sharp
там смотри в конце реализацию GetNewImageAsync
реализации через MemoryStream просто лишнюю память выделят почем зря.

правда меня смущает подписка
if (bitmap.IsDownloading)
{
bitmap.DownloadCompleted += (s, e) => tcs.SetResult(bitmap);

тут точно не будет состояние гонки? это нужно смотреть на исходники класса

Но это если тебе очень хочется "хочу красивый async/await, а не вот эти ваши события фууу"

>DownloadCompleted) геморно, как и скачивать изображение на диск


вообще не знаю о чем ты
первое = декодер с внутри него стрим и он уже декодировал
второе - стрим (и зачем на диск если в память) и можно декодировать чем угодно, что принимает стрим.
381 2726348
>>726338

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



Есть JpegBitmapDecoder
Есть PngBitmapDecoder
Есть еще куча.

Т.е. я должен смотреть что я загружаю и использовать нужный декодер.
Кроме того я сейчас проверил, с некоторыми изображениями проблемы с кодировкой. В моем старом варианте я мог загрузить изображение и отобразить его, но при взятии метаданных выскакивало исключение. Если же я загружаю через декодер, то на его создании выскакивает исключение:
System.IO.FileFormatException: Кодек не может использовать указанный тип идентификатора URI.

Ща еще поковыряю.
382 2726358
>>726348
Можно просто заюзать BitmapDecoder, но с опцией BitmapCacheOption.Default.
У меня BitmapCacheOption.OnLoad стоял.

>событие переводится в Task


А какой в этом смысл, если можно через цикл авейт ожидать?
383 2726369
>>726358
ага вижу

BitmapMetadata is not available on BitmapImage.

дичь какая то.

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

>если можно через цикл авейт ожидать?


А ты когда ждешь курьера постоянно выбегаешь на улицу глянуть не пришел ли курьер или занимаешься своими делами и тупо ждешь звонка? )
это риторический вопрос.
2023-06-0822-16-02.png29 Кб, 779x159
384 2726467
>>726369
Как такое возможно? Простите за бейсик

Я проверяю bitmapSource на null и экземпляр явно пуст. Но как только я хочу извлечь из него Metadata — выкидывет NullReferenceException.

Причем наплевать, что всё обернуто в TryCatch. Как такое контрить вообще?
385 2726473
>>726467

>и экземпляр явно НЕ пуст *

386 2726507
>>726467
ну bitmapSource не нулл, а bitmapSource.Metadata внутри себя делает NRE
что не так то?
387 2726530
>>726507

>то не так то?


Как этому противостоять? Оно плюет на TryCatch.

Если из интернета пытается загрузить каку-то залупу, типа этого
https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/6046154e-6d32-4500-8772-602edb4a4600/width=96/JustMaier.jpeg

... то приложение падает. Ну можно на старте подписатсья на отлов необрабатываемых исключений, но как еще можно этого избежать?
388 2726543
>>726530
если ты можешь получить его в UnhandledExceptions значит не плюет, а ты что то делаешь не так.
389 2726548
>>726543

>если ты можешь получить его в UnhandledExceptions


Откуда мне знать? Я предполагаю.

У меня студия ругается, как будто там нет TryCatch.
А еще я скачал этот файл и попытался открыть с диска и TryCatch отработал как надо. Ошибка возникает только при загрузке с сервера. Метод работает тот же самый, только URL другой.
390 2726567
>>726548
Короче, я эту залупу с ожидающим циклом убрал.
В этой ситуации как раз срабатывает событие DownloadFailed и все нормально. Естественно я своей проверкой IsDownloading ничего подобного отловить не могу, ну цикл как бы прекращается и пытается обратиться к декодеру у которого полномочия как бы всё.
391 2726634
>>726567
Залупа эти события.
Вот есть случай, когда не возвращается ни DownloadCompleted, ни DownloadFailed. Просто тишина.

При этом статус IsDownloading = false. Оно не загружается, но и не сообщает о результате.
Событие DownloadProgress вообще бесполезное — пишет только когда достигнет 100%.
392 2726637
>>726634
Я поставил цикл в DownloadProgress, и там странные числа скачут.
Закачка завершилась — об этом сообщило событие DownloadCompleted, а в цикле значение процесса скачет: 84, 100, 84, 100, 100, 84.
393 2726640
>>726637
Да, циклом счетчик повышается, нужно это как-то спамить запросом IsDownloading, чтобы завершить цикл. Бред из чисел получается только после завершения загрузки.
394 2726700
Хочу вкатиться в C# новичком который пару лет назад полностью выдрочил синтаксис питона но потом бросил и щас нихуя не помню. Метанита будет достаточно?
395 2726771
Есть какие-то курсы по оптимизации и профилированию шарпов? А то чувствую что без этого до сеньора уже не дотяну
396 2726828
>>726700

>выдрочил синтаксис


>Метанита будет достаточно?


Достаточно для чего? Для изучения синткасиса достаточно, а для избавления от говнокодинга — нет. Если ты чет там выдрочил, то уже должен представлять что к чему.
397 2726833
>>726637
>>726640
Был какой-то баг. Все таки обновление прогресса должно происходить событием, но работает все очень странно. Теперь, даже если загрузка завершена, цикл спамит стабильно значением 100.
398 2726837
Пацы а знание синтаксиса и умение шлепать несложные круды на asp.net core достаточно чтоб начинать откликаться? Еще реакт и жс с тс знаю но не хочу в фронт.
399 2726868
400 2727209
Как сделать список лямбд?
Нужно пройтись по циклу и каждую лямбду
401 2727253
>>727209
Список Func<>
image.png6 Кб, 384x22
402 2727262
>>727253
А по подробней?
403 2727326
>>727262
Читай блять про делегаты.
404 2727339
>>727326
Соси анус бесполезная херня.
405 2727344
>>727339
Иди нах
406 2727361
>>727262

>по подробней


>бесполезная херня


Не твой личный чат гпт.
407 2727507
>>727344
Зачем отвечаешь если сам не знаешь?
408 2727512
>>727361
Нахер вы дегроды безработные тогда нужны в треде?
409 2727544
>>727512
Явно не для тебя.
.png35 Кб, 754x517
410 2727817
Список лямбд. Только хуй я тебе что покажу.
411 2727829
>>727817
spisokPipisok
.png176 Кб, 680x383
412 2727853
>>727829
Haha benis
413 2727886
>>726833
ну да, работа с изображениями в WPF жесть и вообще не подразумевает экономии памяти или убрать лишние шаги

но у тебя вообще карма.
414 2727999
>>727817
Бесполезная пародия на chatgpt, которая не была бы унижена если бы просто промолчала. Но нет, низкая самооценка заставила высрать пост, но ума хватило на уровень ответов мейл-ру. И теперь, спустя 4 часа, униженный продолжает позорится и высерая подобие шутки.
Ты жалок.

То что в шарпе анонимные функции сделаны через одно место, через делегаты, как раз нормальный новичковый вопрос, потому что не сразу понятно как этот костыль натягивается на шаблоны.
.png123 Кб, 320x320
415 2728014
416 2728108
>>728014
Как боевая картинка должна компенсировать то чувство ничтожности у тебя внутри? Ведь анон, ты реально спустя 4 часа не отбомбил я реально уже забыл что тебя обоссал и высрал говно шутку, пытаясь компенсировать свою жалкость?
417 2729000
>>727999
Хуя тебе бомбит
418 2729011
>>729000
Проснулся, опять аниму свою всю ночь смотрел?
1686433562941.jpg456 Кб, 1080x2340
419 2729015
>>729011
Шизик, не умеющий создавать коллекции, успокойся
Тебе уже двое на лицо пописали
15822835631.696x696.jpg298 Кб, 696x696
420 2729162
Раз уж зашла речь про методы как объекты.

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

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

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

Так что и лямды и анонимные "функции" это простые методы по своей сути, реализованные на автоматически сгенерированном компилятором классе. Никакой магии. Обыкновенное наебалово (без негатива).

И делегаты в свою очередь ничего не знают ни про какие функции или лямды. Они просто хранят в себе пару полей: ссылку на объект и название метода (его индекс кажется). То есть откуда вызвать и что вызвать.

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

Просто вспомните, что ваша лямда замкнувшая this чего-то большого, все еще хранит ссылку на этот объект. А ссылку на лямду хранит в себе делегат. А ГК, как мы все знаем, не трогает объекты которые числятся достижимыми.

Все вышесказанное касается любителей линка. Ведь предикат это та же самая лямбдочка, которая превращается в полноценный объект с участием оператора new, уборкой мусора и прочими ништяками.
421 2729188
Здрасти. Я устроился на работу в backend на C# почти месяц назад и чувствую, что мне не хватает структурированных знаний о C# и ASP.NET. Одна из последних проблем, связанных с этим, - я не был уверен, как переменные передаются в функции по значению или по ссылке. И я подумал, что это работает как в C++ - по значению.

Порекомендуйте книгу или какой-нибудь другой источник (я предпочитаю читать), чтобы улучшить свои знания в C# и ASP.NET
422 2729196
>>729188
По значению, разумеется. То есть аргументы всегда копируются в фрейм вызываемого метода. Просто иногда значение это ссылка на объект в куче.

Из очевидного прочитай Рихтера "CLR via C#".
423 2729311
>>729015
На анонимном форуме очень трудно сделать независимые посты. Обоссали вы себя сами, ибо сами срете там где едите, токсики анимешные.
424 2729348
>>729311
Анимешные токсики хотя бы умеют создавать коллекции
Брысь отсюда, тупень, брысь
425 2729416
Пишу десктопный клиент для бур, встал вопрос загрузки информации о тегах. Если делать это по одному то получается жутко медленно, для каждого тега приходится отправлять отдельный запрос, потом читать, парсить, занимает это около 0.5 секунд. Потому принял решение при первом запуске программы скачивать информацию о всех тегах, их около миллиона, парсить и заносить в бд, в дальнейшем обращаясь уже к ней, а не к веб сервису. Если же тега в бд не окажется, то тогда уже буду отправлять запрос и заносить новый тег в бд.
Правильное решение, или есть варианты получше?
426 2729421
>>729416
И единственный способ обновить информацию о тегах - переустановить программу?
427 2729462
>>729416

> Пишу десктопный клиент для бур


Нахуя?
428 2729471
>>729462
Во первых хочу пощупать авалонию, во вторых как мне кажется это сама по себе интересная задачка. Тут и веб, и база данных, и работа с изображениями, много всего короче.
429 2729522
>>729471
К слову, я правильно понимаю, что десктопных приложений нет других вариантов для базы данных кроме sqlite ну и litedb, если нужна nosql?
430 2729636
>>729522
Да используй что угодно
Выбор узкий если нужно ембедед
431 2729731
>>729522
Можешь жсоны в файликах хранить.
432 2730030
>>729731
да. только сам реализуй атомарность, целостность, индексы, поиск. ерунда же.
433 2730289
>>697488 (OP)
ОП, добавь позязя в шапку:

6. С# для создания нейросетей
https://docs.microsoft.com/ru-ru/dotnet/machine-learning/
434 2730310
>>729522
Зависит от задач и что именно тебе от БД требуется.
Вот тебе пример нормальной БД для десктопа
https://github.com/CoreyKaylor/Lightning.NET
435 2730549
>>730289
Не надо добавлять, а то нейрошизики будут здесь всё время спрашивать про эту либу и ежедневно срать постами про ChatGPT.
436 2730580
>>730549
Не будут. У них свой загон сделали. Хочу, чтобы анончики вкатывались в нейросетки на шарпе и можно было бы здесь обсуждать всякие технические вопросы.
437 2730608
>>730580
Может организуешь небольшой ликбез? На сколько я понял из всей этой движухой что, чтобы учить нужно владеть библиотечками, которые нативные на питоне. А весь ml net это обертка над ними.
438 2730647
>>730608
Нет. Прямая обёртка это: https://github.com/SciSharp/TensorFlow.NET , а ML.NET полноценный фреймворк нейросеток на шарпе. Опционально он может использовать модели TensorFlow.
439 2730794
ну все таки нейросетить проще на питоне в силу динамичности языка. А использовать уже хоть в том же шарпе через onnx
440 2731995
А есть ултимативная книга по C#, которая включает глубину Рихтера и последние фичи языка?

Десять лет уже профессионально программирую на шарпе, надо и основы перечитать, и с последними фичами подробнее познакомиться.
441 2732008
>>731995
Кокоса Управление памятью. Но там без фитч.
442 2732273
>>731995
Вообще, раньше были Албахари Джозеф и Бен со своими справочниками полным и кратким, где все очень хорошо описывалось. Полный - если нужно вдумчиво разобраться, краткий - если просто освежить. По факту это был MSDN на бумаге, человеческим языком. Но они остановились на C#9.
Есть еще книжка "C#10 in a nutshell" от одного Джозефа Албахари. Но я ее не читал, поэтому рекомендовать не буду, но вроде отзывы неплохие.
443 2732274
>>731995
Албахари, правда без "глубины Рихтера". Собственно после него вряд ли кто-то что-то подобное писал.
444 2732449
Есть два проекта, можно как-то "слить" их в одно целое, но не физически, а чтобы проект В наследовал проект А? Хочу, чтобы обращаясь к проекту В я видел неймспейсы проекта А.
445 2733212
Посоветуйте идейку для пет прожекта на asp.net, шо можно написать, чтобы показать, что в asp.net я не полное дно, у меня есть идейки, но все связано лишь с десериализацией жсона кастомной через utf8jsonreader, кстати, заебись штука, даже у меня получилось в 30 раз меньше памяти выделять с ним, чем с newtonsoft, подумываю написать какую-нибудь обертку, которая позволила бы с ним работать делая код более читаемым, оверхеада добавит, конечно, от вызова методов, но там мож jit справится и будет сам инлайнить методы, ну и все, конечно, для нестандартных кейсов.
446 2733235
>>733212

> utf8jsonreader


Он же и так в свежих аспах по дефолту. Что бы вернуть ньютон нужно специально пакет подсосать
447 2733284
>>733212
1) Электронная очередь. Учитывая все ньюансы. От выдачи номера, до распределения к кому из операторов клиент попадет на обработку, с учетом того, что задачи у посетителей могут быть разные и что у операторов тоже разная области ответственности. И все должно идти ровно и без долгих простоев. Если делать по честному от и до, то сможешь проработать дохуя ньюансов, о которых не стыдно будет рассказать.
2) Роутинг электронных сообщений. Это когда в какой-нибудь каталог на диске или сетевую шару постоянным потокам сыпятся xml-ки в охуительных объемах и их нужно оперативно оттуда разбирать, обрабатывать согласно бизнес-процессу и передавать дальше, попутно сохраняя нужную инфу в БД и выкидывая нужные ссобщения. Тут тоже дохуя приколов от многопотока, до разбора ЭС и т.д. И как бы тупо это не звучало, но это до сих пор стандарт и куча B2B взаимодействия происходит в таком виде (да-да никаких очередей вам сучечки). Поэтому нужно не просто уметь делать такие вещи, а делать их быстро и эффективно. Вплоть до того, что тебе тупо могут дать xml-ну на несколько тысяч строк и без всяких спеков и xsd схем и ты должен уметь ее разобрать и встроить это в существующий БП.
448 2733321
>>733235
ну я для себя ocrку делал из гугл линзы, там все просто было, кроме парсинга жсона, для этого пришлось учиться, как работать через ридер кастомно, это не asp проект был, но было весело, а еще и штука полезная
449 2733365
>>733284
О, вот с xml я еще не работал серьезно.
Можно по 2-му примеру побольше инфы? А то я понятия не имею, какие там xml документы, какая бизнес логика
450 2733704
>>729162
Ну это очевидно, ienumerable это отложенное вычисление и пока его используешь он будет содержать в себе все захваченные обьекты, но после использования он будет собран в последствии. Например создал лист и вернул из метода, IEnumerable вместе со всеми предикатами будет собран потому что на него никто не ссылается. А про подписки это баян, и решается простым майндсетом "убирай за собой, получил idisposable - вызови диспоуз, когда закончил работу, подписался - отпишись".
Но ты не написал про главное, захват execution context асинками, вот это реально дьявольская вещь. Потому что про те же замыкания тебе учтиво скажут анализаторы кода, а вот про эту хуету никто, насколько я знаю
451 2733765
>>733704

>захват execution context асинками, вот это реально дьявольская вещь


ча?
452 2733775
Граждане шарпаны? Как правильно читать желтый экран смерти? Вот, допустим, там такая строчка
SomeApp.Services.SomeService.SomeMethod(int someName) +150
Что это за +150? Где именно ошибка? Это типа позиция курсора в тексте метода? 150-й символ? А откуда начинать считать? А комментарии считаются? А пустые строки?
454 2733866
Как дать по морде студии, чтобы она не предлагала "упростить" одну строчку из четырех, ставя бессмысленные скобки и уменьшая читабельность? По факту третья и четвертая строки не могут быть помещены в фигурные скобки (пикрил2 - предложенное студией) и почему студию не научили такую хуету предлагать для N-строк > 1.

Есть еще флоу-кодинг или как-то так, но я не знаю как это гуглить. Суть в том, что следующая строка является логическим продолжением предыдущей и в бейсике добавляется через нижний прочерк "_"
455 2733905
>>733866
1. бери и не слушай студию (это даже не компилер), тебя же не бьют за непослушание
2. Это не бейсик
456 2733911
>>733905
1. глаза мозолит
2. я как раз этот подход стырил с одного тутора про шарп, но забыл как он делался и как назывался.
457 2733916
>>733866

>чтобы она не предлагала


Чё ты как тряпка. Не будь каблуком, не слушай свою IDE. Поступай всегда по совести. АУФ.
>>733866

>Есть еще флоу-кодинг или как-то так, но я не знаю как это гуглить.


Экстеншены (они же методы расширения) укажут тебе путь. Это база.
Когда поймешь как они работаеют, гугли fluent синтаксис и примеры его применения. Самый банальный из которых LINQ.
458 2733928
Ггебята, а есть какая-нибудь возможность в уже развёрнутом приложении на старом asp mvc узнать дебаг оно или релиз?
459 2733938
>>733916

>fluent синтаксис


Точняк
460 2733944
>>733938
А при чем тогда были _ ?
461 2734117
Аноны, вам накидывают на собесах задачек как жаваскриптизёров, на знание языка в стиле:
Дан код
{ govnocode }
Что выведется в консоль?

Буду благодарен, если подкинете чего-нибудь подобного.
Хочу покормить гопоту дерьмой
2023-06-1518-15-24.png26 Кб, 779x138
462 2734217
>>733944
Потому что так в бейсике
463 2734221
>>733944
>>734217
Я конечно понимаю, что "_" это инвертированная точка с запятой, т.е. сообщает что новая стркоа — это продолжение предыдущей и запись
X _
.Y _
.Z _
эквивалентна: X.Y.Z
но я чет тупанул и начал запятые расставлять или еще какую хрень.
464 2734263
>>733866
Совсем зелёный что-ли?

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



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

Далее, не пиши имена методов с маленькой буквы джавадебил. И уж тем более не используй снейк_кейс шиз

Имена обработчиков событий должны начинаться с префикса "On"

Используй var или короткое объявление конструктора

В итоге твой код должен выглядеть так:

DispatcherTimer foldingUpdateTimer = new() { Interval = TimeSpan.FromSeconds(2) };
foldingUpdateTimer.Tick += OnFoldingUpdateTimerTick;
465 2734276
>>734263

>Далее, не пиши имена методов с маленькой буквы джавадебил


Это не я, это чужой соурс. Мне нужен бы визуализатор кода с подсветкой синтаксиса, а методами RichTectBox WPF это сделать невозможно. Наткнулся на проект AvalonEdit, вот ковыряю палкой.

>Далее, не пиши имена методов с маленькой буквы джавадебил


А почему студия не научилась делать это сама, кстати?
Я думал "On" нужно приписывать только к методам, которые вызывают события.
466 2734340
>>734276
Это да. Всегда удивляет что студия генерит обработчики с маленькой буквы.
467 2734355
>>734217
Чёт я вообще не понял прикола ставить его. Визуально выделить? Ну такое.
А больше ни на что и не влияет он
468 2734368
>>734340
Генерит-то она так, как называется имя твоего контрола, если ты про автоматическую подписку.

>Чёт я вообще не понял прикола ставить его. Визуально выделить?


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

Это своего рода инвертированная точка с запятой. Что считаю гораздо удобнее т.к. чисто статистически визуальная строка совпадает с логической гораздо чаще, чем наоборот.
469 2734370
470 2734458
>>734370
Каждый дрочит как хочет, главное не тащи в проекты где так не делают (нигде лично не видел такого извращения)
471 2734495
>>734458
Тащить что? Это синтаксис VB.NET
По другому не получится.
472 2734500
>>734495

> VB.NET


А тред целиком и полностью про шарп
473 2734516
>>734368

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


может быть. хотя я не уверен что там имя.
но даже это тупо. Сделали бы OnmycontlNameChanged
474 2734531
>>734500
Хватит хуйней страдать. Это .Net тред.
Влез, блять, неделю назад и пытается строить из себя вахтера. Здесь бейсик обсуждали еще до твоего существования ИТТ.
475 2734541
>>734516
"On" я видел только в методах, вызывающих событие, типа OnPropertyChange. Возможно иначе будет путаница с обработчиками событий.
476 2734557
Для .NET есть только один язык - C#. Остальные даже упоминать нет смысла, на них только борщи хлебать.
477 2734577
>>734557
Это >>733916 твой пост?
478 2734596
>>734577
Нет, я мимокрок.
479 2734608
>>734596
Я догадывался.
480 2734640
>>734577
Это мой. Но я далеко не считаю что C# единственый язык для .net. Есть тот же F#, да даже на чистом IL можно вполне можно что-то делать.
Вот только VB - практически мертв. И размышления "вот в VB была пиздатая фича, не то что..." крайне неконструктивны. До шарпа был делфи, до него паскаль и в них тоже было много пиздатых штук. Но они ушли и остался шарп.

Бейсик не зря в свое время назвали языком плодящим калек. Он сильно ломает мышление и это мешает принятию нового. Лучшим выходом в твоем случае было бы забыть опыт на VB и попытаться осваивать новый язык (не обязательно шарп) без оглядок на него.
.jpg204 Кб, 600x660
481 2734683
Эх. Никто на это так и не ответил >>725134 >>725119

Грустно.
482 2734704
В жаба-треде говорят, что ASP после СВО подыхает. Что, мол, то самое ВСЁ наступило для вашего шарпа. Ваше мнение? Так ли это? К вам вкатываться или в жабу?
483 2734707
>>734704
Больше слушай джавадебилов с их языком из 2007 и убогим тулингом
484 2734712
>>734707
Ага братиш, тока в асп 300 вакансий на всю РФ, а в спринге 1.5к, а качество сейм
485 2734717
>>734712
И? Это говорит только о том, что на джаве больше легаси, что не удивительно ведь она была намного популярнее старого вендорлокнутого дотнета.
486 2734737
>>734640
Дельфи никуда не ушел, живет себе прекрасно как всегда, а то что быдло из него ушло, так это только в плюс. Теперь шарпоговно стало помойкой для быдла, поздравляю.
487 2734793
>>733765
Про асинк (tpl) написал, потому что это самое распространённое, т.к напрямую с тредами, скедулерами и т.п мало кто работает. Может видел в bcl есть ряд методов с префиксом Unsafe? Например ThreadPool.UnsafeQueueUserWorkItem или UnsafeRegister на CancellationToken, это как раз семейство методов, которые сапресят контекст и не передают его дальше. А execution context это например AsyncLocal. Поэтому когда из http реквеста дергаешь какой нибудь синглтон на поработать подумой что в него может попасть
488 2734913
>>734640

>Вот только VB - практически мертв.


По воле самой майкрософт, которая перестала его поддерживать.

>Он сильно ломает мышление


Чем же он ламоет? Сретеотип из 90х, когда был учебынй бейсик, а сейчас он на 90% это шарп, и многие штуки за последние годы перетекли в шарп внезапно из бейсика.
Точка с запятой это далеко не новое, а старое, причем старое еще на момент возникновения шарпа. Но МС важнее влиться в тусовочку "серьезных языков", чем не заставлять юзеров заниматься бесполезной расстановкой разделяющих знаков, которые важны только в 10% случаев.

Это статистика, против которой идти — долбоебизм и сектантство. Часто ты пишешь несколько логических строк в одной? Посчитай сам.
489 2734933
>>734913

>чем не заставлять юзеров заниматься бесполезной расстановкой разделяющих знаков, которые важны только в 10% случаев.


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

>Это статистика, против которой идти — долбоебизм и сектантство. Часто ты пишешь несколько логических строк в одной? Посчитай сам.


Ты современный промышленный код на шарпе то видел? Там полно многострочных конструкций. И гораздо лучше один раз поставить точку с запятой в конце нескольких строк, чем в каждой расставлять символы подчеркивания.
glootie.png905 Кб, 1189x992
490 2734980
>>730289
А зачем? Типа петухон непривычен или деплоить модели хочется в шарпе? Или хочется по быстрому какую-нибудь хуиту обучить и сразу встроить в свое уютное приложение?
Ладно, я сам ответил на свой вопрос.
491 2734989
>>734933
На самом деле проблему можно решить каким нибудь расширением, которое ставит точку с запятой по нажатию Enter или Shift + Enter (в зависимости от стиля работы). Бейсик, собственно это и делает.

А пайтонисты просто долбоебы и решают то, что и так решено автодополнением. Другое дело джава скриптизеры, у которых нет четкой позиции "никогда не ставим разделитель", либо "всегда ставим разделитель". Вместо этого "хош ставь, а хош не ставь" и получается что:
x{
...
}

делает не тоже самое, что:
x
{
...
}
492 2735026
>>697488 (OP)
Там шарфик догнал джаву по использованию в индустрии
https://survey.stackoverflow.co/2023/#most-popular-technologies-language-prof
Как же мощно ебка идет, а ведь с выхода .net core даже 10 лет не прошло
493 2735079
>>735026
Наконец-то можно перекатываться.
494 2735244
>>735026
Майки ебурят, кайф
495 2735396
Какой же с# охуенный! Сразу влюбился.
.jpg80 Кб, 700x700
496 2735487
Вот и перекатывай вам треды.

Никто разве не может предложить как ускорить вызов тянущихся с рефлексии методов? Майки же как-то это делают.

Ладно. Пойду исходники смотреть.
497 2735607
>>735487
Создавай типы в рантайме.
Но сам твой концепт попахивает говной имхо
500 2735737
>>733704
Тейк был в том, что лямбды для предикатов это нагрузка на ГЦ. Лямбды для обработки событий это легкий способ получить утечку.

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

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

Про многопоток и асинхронщину детерминистично рассказать не смогу, поэтому пробовать пока не стану.
501 2735812
Ребята привет. У меня созрел вопрос. Сейчас я работаю QA автоматизатором ручным никогда не занимался, да и не нравится и пришло осознание, что развиваться как тестировщик - мне не интересно, грустно и скучно. Но, на проекте автотестов используется C#, я уже около полутора лет в нем практически варюсь. В общем вопрос: Есть ли какая-то возможность перекатится в разработчика? Я выставил резюме на хх как джун C# разраб, но за 2 недели мне так никто и не написал, хотя опыт есть и в вебе (пхп, немного жс, sql) и автоматизации (C#) общий почти 3 года
502 2735821
>>735812
Сам откликайся.
503 2735830
>>735812
Ебать, ждать у моря погоды можно годами
504 2735841
>>735821
>>735830

В требованиях вакансий указывается ASP.NET с которым я никогда не работал, на такие стоит откликаться?
505 2735849
>>735841
Если хочешь этим заниматься, то конечно. Посмотришь на тестовые задания, разберешься что от тебя хотят.
506 2735960
>>735841
Откликаться то можешь, но смысла в этом будет мало пока ты его не выучишь. Только если попытаться на тоненького проскочить.
Сейчас под джуном на веб-разработку подразумевается, что ты можешь с нуля собрать хотя бы простенький веб-сервис на Asp.Net с использованием БД, какой-нибудь ORM и с хоть каким-то представлением об архитектуре (хотя бы тупо по слоям уметь разбить). Ты просто посыпешься на первых же вопросах про конвеер запросов, фильтры, лайфтаймы в DI и т.д.
507 2735963
>>735812

>Я выставил резюме на хх как джун C# разраб, но за 2 недели мне так никто и не написал,


А ты резюме покажи и анон скажет тебе чего ты стоишь и откликнется ли на него хоть кто-нибудь вообще.
508 2735999
>>734793
я знаю про захват контекста
только асинк тут причем?
захват таймером - беда ибо таймер может существовать годами даже.
захват ThreadPool так себе проблема.
а асинкам контекст нужен хотя бы для того же AsyncLocal
509 2736160
Какая нынче средняя зп у джунов?
510 2736331
>>736160
С учетом инфляции в пыняномике уже 300к без рофлов
511 2736415
Надо было наговнокодить скриптить, но решил потыкать палкой в шарп и приятно удивился, как приятен хотрелоад. Недооцененная удобная штука.
512 2736570
>>736160
40...80К.
513 2736572
>>736415
Годится только для каких-нибудь мелкоскриптов или небольших приожений, когда нужно поэкспериментировать по быстрому.
Более-менее комплексный сервис эта штука не вытягивает.
514 2736575
>>736415
Ну и на самом деле штука вполне оцененная. Т.к. когда майки попытались её по тихому выпилить, комьюнити нехило так взбугуртнуло и её тут же назад вернули.
515 2736594
>>736572
что именно или ты просто экстраполируешь.
По сути для скриптинга и надо, визуальное что подергать, гейминг. Но думаю в юнити нехера не работает))
516 2736618
>>736575
там вроде хотели сделать эксклюзивно для вижлы, поэтому бугурт вроде больше был за свободу, чем за фичу. Хотя хз, по мне это прям серебряная пуля вышла. Я писал что-то типа веб-тестов или даже полу-бота, надо было в глубоком вложение что-то подергать, а так бы приходилось все 100500 шагов каждый раз занова исполнят и перезапускать (ну не только вход, а еще тучу вещей). Тут даже шустрые динамические языки не помогли бы ибо тоже перезапуск нужен.
517 2736622
>>736618

>шустрые динамические языки


Каво?
518 2736648
>>736570
40к джун - это ты где видел такую зп? Просто интересно
80к - это уровень trainee, когда у тебя вообще 0 опыта и 0 скилов.
image.png8 Кб, 245x188
519 2736654
Это Interface segregation?
520 2736667
>>736654
Мелкие в него уже научились? Как-то находил какую-то залупу в винформах, там надо было реализовать ебанутый интерфейс из 30 методов.
521 2736712
>>736622
в компиляции
image.png46 Кб, 624x406
522 2736811
Мне вот было лень реализовывать маппинг для всех классов, и я хуйнул вот это, вы бы за такое дали леща или сломали колени?
Или может это ок, просто мне не оч нравится.
Мб через метод расширения базового класса ебануть?
523 2736883
Поясните нубу, как сложить в уме ASP и ООП. В ASP у нас данные валяются отдельно в энтитис и дто, поведение отдельно в репозиториях (если используются), сервисах и контроллерах. Это не вяжется с инкапсуляцией и сразу нарушает Information Expert, то есть данные обрабатываются не в том же объекте. Наследование таким образом получается отдельно с данными и отдельно с поведением, что странно. Полиморфизм в основном идет через интерфейсы. В итоге получается нечто, что никак не вяжется с тем, что я изучал по ООП, где мы должны создавать классы с данными и поведением, относящимися к определенному объекту, переиспользовать код с помощью наследования и со всем этим реализовывать полиморфизм. Как это понять? ASP не реализует ООП или я чего-то не понимаю?
524 2736903
Можно без пересоздания проекта сменить целевую платформу?
К примеру в проекте на пикрил 1 отсутствует платформа
Microsoft.Windows.Desktop.App.Wpf
А вот в проекте на пикрил 2 есть, потому что оно является библиотекой пользовательских элементов
Как это добавить в первый проект?

Мне понадобилось заюзать System.Diagnostics.PresentationTraceSources
И вдруг оказалось, что в System.Diagnostics такого класса нет (хотя должен быть). Я догадываюсь, что это из-за того, что мой проект не является библиотекой пользовательских элементов или WPF.

Но вообще удивило, что библиотека с одними и теми же неймспейсами и классами являются разными по содержанию. Я втречал отсутствие библиотеки, но чтобы такое.
525 2736936
>>736811
Норм. Только
1) Название метода (AdaptTo) ебанутое. Если это у тебя маппинг, то и называй MapTo
2) Проверок на null нет.
526 2736937
>>736883
Гугли DDD
527 2736940
>>736883

>где мы должны создавать классы с данными


А сервис это не класс с данными?

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


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

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

И вариаций тысячи. Ты можешь один сервис логирования заменить на дрогой без изменения всего приложения.
528 2737088
>>736936
1)Это либа, Mapster
2)Мерси
529 2737092
В объясните мне, почему студия заставляет ставить вопросики инициализации или определении КЛАССОВ? Разве не очевидно,что все классы могут быть Nullable? Я понимаю там структуры.
У меня весь код в ссаных (буквально желтого цвета) подчеркиваниях.

Пиздец бля. Только отошел от точек с запятой и тут это говно. Какой же мусор, пиздец.
2023-06-1811-30-11.png16 Кб, 762x79
530 2737116
>>737092
Как же у меня горит. Почему я не могу передать стринг как обжект,
531 2737118
>>737116
а, обосрался

> !=

532 2737123
>>737116
Братан, купи (скачай) какой-нибудь норм учебник по последним версиям дотнета - там популярно объясняется, что такое nullable и почему за использование object наказывают раскаленной кочергой. Или просто выруби nullable в csproj, false там напиши, и ручками везде проверяй на null.
533 2737127
>>737123

>и почему за использование object наказывают раскаленной кочергой


Я знаю почему, но в данном случае метод записи в реестр SetValue требует object.
534 2737131
>>737127
>>737123
А я не знаю, расскажите что не так с object
535 2737141
>>737131
Возможные аллокации. Рекомендую ознакомиться с BenchmarkDotNet
https://youtu.be/8Slzd1G7f9Q

Но на самом деле, единственное место где мне это потребовалось учитывать — это при отрисовке графики. Ну еще один челик мобилочками занимался и эму это тоже было важно.
536 2737151
>>737092
Шиз, если даже анализатор умирает от кринжа и включает тревогу - то ты туго срешь.

Будь я тимлидом у тебя, переключил бы nullable ворнинги на ошибки, чтобы ты, обезьяна, не смогла собрать проект, пока не уберешь на собой
537 2737153
>>737116
Проверь свое value с помощью string.IsNullOrWhiteSpace() и кумпилятор узбогоится.

И все нулове детерминируй с помощью проверок, инициализации в конструкторе =new() или =null!.
538 2737154
>>737153
Ну и разумеется этот совет не касается переменных которые могут иметь null. Такие как раз стоит помечать как налабле и проводить проверки везде где кумпилятор тебе советует.
2023-06-1812-22-34.png14 Кб, 1019x56
539 2737156
>>737151

>И все нулове детерминируй с помощью проверок, инициализации в конструкторе =new() или =null!.



Это как? Сейчас мне нужно писать что-то типа пикрила. А можно как-то компактнее все делать?
2023-06-1812-30-50.png16 Кб, 1150x63
540 2737161
>>737153
>>737156

> string.IsNullOrWhiteSpace()


Да заметил, тоже заменил.
541 2737164
>>737156
Можно, конечно. Но зачем? Другими словами это уже вкусовщина/конвенции/выебоны. Главное чтобы работало и не ломалось.

Встроенный налл гуард про последнее.
542 2737172
>>737161
Фигурные скобочки можешь убрать.

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

Эксепшен этот можешь перехватить выше и попытаться получить вэлью еще раз. Если опять не получилось кидай уже там ексепшен и сообщай через него почему не все сломалось.
543 2737181
>>737172

> Фигурные скобочки можешь убрать.


Мы вам перезвоним.
544 2737281
Кстати, почему когда слизали вдохновились котлиновскими нуллами, не взяли оператор !!, почему теперь ручками надо писать это:
if (vr == null) throw new NullReferenceException();
// дальнейшее использование vr без вопросиков.
545 2737307
А такой вопрос с этими "вопросиками".

Допустим в методе я десяток раз использую экземпляр класса, и мне что - 10 раз проверять его на null перед тем как обратиться к его свойству?

Есть какие-то способы один раз проверить и дальше не проверять? Выйти из метода я не могу, есть другие действия, которые мне нужно выполнить.
546 2737360
Кто нибудь сталкивался с системой Spell?
Как можно заставить её запоминать слова и чтобы это сохранялось в следующих проектах?
2023-06-1817-06-03.png7 Кб, 433x94
547 2737396
>>737151
Ну давай, поясни мне - тупому.

В первой строчке я ОЧЕВИДНО создал экземпляр.
Какого хуя студия требует, чтобы я его проверял на null?
548 2737397
>>737281
>>737307
Чел, не еби себе мозг. Тебе же сказали выключи в свойствах проекта <Nullable>disable</Nullable> так все делают.
549 2737406
>>737396
Она требует проверять не его, а Directory. Ты бы хоть мышку навел да подсказку прочел.
550 2737408
>>737396
Ты прежде чем в кодинг лезть, читать научись. Тебе компилятор прямым текстом пишет CS8602 и то, что " 'Directory' may benull here"
Ставь восклицательный знак после Directiry если уверен или ебашь проверку на null;
551 2737462
>>737396
Тебе уже конечно обоссали пояснили, но я повторю - учи язык или будешь попускаем на работе.
552 2737464
>>737397

>Чел, не еби себе мозг. Тебе же сказали выключи в свойствах проекта <Nullable>disable</Nullable> так все делают.



>так все делают.



Утенок, может тебе в жаватред? Там из-за таких как ты аж целый новый язык делать пришлось.
553 2737510
В шарпе есть что-то похожее на метод бейсиковский TryCast()? Метод либо успешно каст, либо возвращает null.
554 2737514
>>737510

>Метод либо производит успешно каст*

555 2737518
>>737462
Ты к чему эту хуету высрал, вахтер хуев? Ебать вековая мудрость. А попу мыть надо? Пиздец.
556 2737522
557 2737523
>>737510
переменная as тип.
558 2737532
>>737522
>>737523
а, вот как
559 2737535
Почему чтобы прочесть результат простейшего http запроса нужно городить огороды с httpRequest, stream, streamreader?
560 2737536
>>737535
Напиши один раз HttpUtils.
561 2737581
Чем GetType() отличается от typeof()?
Почему второе не всегда работает, когда речь идет о переменных?
изображение.png6 Кб, 270x120
563 2737694
>>737092

> Разве не очевидно,что все классы могут быть Nullable?


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

ну ты выключи в настройках и по старинке лови NRE

конченная капча
564 2737706
В мире РАБотки на .net есть что то кроме wpf, asp.net и unity?
565 2737725
>>737706
Пилю движок для симуляций на последнем шарпе, сидя в НИИ. Ебало?
566 2737757
>>737706
Мобилки, мкшоб.
567 2737801
>>737725
Сколько платят?
568 2737846
>>737725
За что посадили?
569 2737978
>>736811
леща бы дал
найс обертка из-за которой вместо одного дженерик параметра надо писать два, чтобы что? убедиться что мапинг вызывается для каких-то Base типов? нахуя?
570 2737989
>>737978
убери 1 дженерик и сделай
ToZalupa<TZaulpa>(this BaseShit shit) where TZaulpa : tvoikalisjopy
571 2738087
>>737725

>Пилю движок для симуляций на последнем шарпе, сидя в НИИ.


Анончик из НИИ, серьезно озвучь з.п. хотя бы плюс\минус. Очень охота знать сколько сейчас можно получать в науке. Ну и какие есть перспективы роста и сколько приходится перерабатывать за текущий прайс?
Просто сам несколько лет назад продал душу бизнесу и ушел из авиа-космоса. Интересно имел бы сейчас такой же выхлоп от своих трудов.
572 2738217
>>736811
эээх. а ведь есть в языке такая няшофича как explicit/implicit operator. Но нет - маптукают явно, фу.
573 2738223
>>737535
Всегда тяну flurl, брат жив
574 2738417
Почему httprequest загружает данные медленнее, чем браузер?
575 2738501
>>734933

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


Ну а в рубях например нет ни проблемы отступов, ни скобок, ни точек с запятой. Кроме тех случаев, где они объективно (плюс-минус) нужны.
576 2738589
>>738087
В среднем 150к, я типа мидл в местной кастовой системе. Но у нас не совсем бюджетная богодельня, мы на коммерческих заказах. Ну и прям наукой у нас занимаются только учёные в говне моченые, а я прогер в основном
577 2738594
>>738087
В догонку

>сколько приходится перерабатывать за текущий прайс?


Нискока, но я сам иногда подпушиваю на выходных по удалёнке, потому шо в кайф
2023-06-2012-53-19.png26 Кб, 1294x588
578 2739273
Объясните мне Dependency Injection. У меня такое ощущение, что мне не хватает какой-то детали, без которой все рушится или создает гиперсложности.

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

Тут начинаются вопросы, начну с первого. Каждый сервис должен реализовать интерфейс, а где этот интерфейс нужно хранить в моем случае? В каком месте?

Вариант 1. Интерфейс, представляющий сервис мы храним в пространстве проекта, в котором находится этот сервис.
Проблема: другим сервисам придется линковать проект, чтобы получить этот интерфейс, что по сути создаст зависимость от которой мы все так бежали. Даже если взять известные логгеры, то интерфейс ILogger у каждого свой и вот это вот хваленое "с DI мы можем один сервис с легкостью заменить другим" не работает т.к. тот же майкрософтовский ILogger это не тот ILogger что у Serilog — у них даже методы по разному называются.

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

Вариант 3. Все сервисы храним в проекте хоста сервисов. Но тогда мы создадим зацикленность т.е. ServiceA нужно линковать SreviceHosting для получения интерфейса, а SreviceHosting нужно линковать ServiceA для получения экземпляра сервиса.
579 2739401
>>739273

>В каком месте?


Почти всегда 2 и немножко 1
Причем по 2-му варианту у тебя даже может быть несколько таких подпроектов. Например один общий CommonContracts который шарится на все сервисы и в самих сервисах собственный подпроект Contracts.
Вариант 1 лучше делать когда реализация со своим интерфейсом представляет какой-то отдельный подключаемый модуль, который можно выкинуть в любой момент.

Вариант 3 - ебань какая-то.
580 2739541
>>738417
Сервер может поддерживать фичи которые юзает браузер но не юзаешь ты в коде
581 2739673
>>736811
Я бы так сделал.
582 2739737
>>739273
Мужик, я и сам поверхностно раньше знал IoC/DI в C#. Мне на одном собесе порекомендовали книгу. Я её купил на торрентах, прочитал и гуднайс стал понимать. Хорошая в целом книга.

Симан, Дерсен: Внедрение зависимостей на платформе .NET
Подробнее: https://www.labirint.ru/books/789121/

https://www.labirint.ru/books/789121/
583 2739772
>>739401
Тогда в чем смысл DI, если зависимость по сути осталась? Что мешает напрмую передать нитерфейс при инициализации?
Типа жедается это автоматом?

>>739737
Ух ты, интересно. Спасибо!
.png16 Кб, 309x545
584 2739823
>>739273

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


CompanyName.ServiceName.Abstractions

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

При чем правда DI пока не понял.
585 2739827
>>739823
Да. Там еще каждому сервису и солюшину целиком по папочке Core надо добавить. В ней - в рамках солюшина - то что общее-общее для всех. В папочках сервиса - то что в рамках сервиса - общее.
586 2739891
>>739823
А что это за хостинги под каждый проект? Как это работает?
587 2739933
>>739772

>Тогда в чем смысл DI, если зависимость по сути осталась?


Ответ был на вопрос "где хранить интерфейсы"

>Что мешает напрмую передать нитерфейс при инициализации?


Передавать кому? Инициализации чего?
588 2739971
>>739891
Просто проект в котором у тебя методы расширения, для того чтобы запихнуть в DI.
Сорт оф:
static IServiceCollection AddServiceA(this IServiceCollection services);
static IMyApplicationBuilder UseServiceA(this IMyApplicationBuilder app, ServiceASettings settings = null);

В принципе - не обязательно бы было выделять сборку под это дело отдельно, но так часто удобнее.
589 2739978
>>739971
Разверну мысль почему удобно.
Вот я, допустим, при разработке сервиса - хочу тесты погонять. Так - мой проект с тестами - может дефолтное окружение получить и начать гонять, а не заниматься настройкой этого дефолтного окружения.
Другой пример. Я хочу чтобы в моем сервисе - не было лишних зависимостей, ну, не нравится мне что мой сервис тянет какие-то Microsoft.Extensions.ЧтоТоТам. Хочу чтобы мой сервис - был чист от этого добра и, если мне надо - мог бы переехать с майковского DI на какой-то другой. Собственно - так я могу ограничить себя и тянуть в сам сервис только то что надо ему для работы, а вот эти вот DI, логгеры и прочее - пусть в отдельной сборкe хранятся.

Опять же - так делать не обязательно.
590 2739981
>>739933

>Передавать кому? Инициализации чего?


Сервис хост при инициализации сервиса передает ему экземпляры других запрашиваемых сервисов.

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

Возможно из-за того, что экземпляр сервиса создается только по запросу. Ну наверно сервис хост это просто такой удобный менеджер, который делает все сам.
591 2739984
>>739971
>>739978
А, понял.
592 2740004
>>739981

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


Вопрос из серии "Зачем нужен GC, ведь можно самому ебаться с указателями и менеджментом памяти"
>>739978

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


И как часто тебе приходится DI менять на готовом проекте и по какой причине?
593 2740065
>>740004

> И как часто


Не то чтобы часто. Последний раз - слезали с нинжекта на этот вот майковский.

> по какой причине?


После появления майковского DI - тот же нинжект - считай сдох.
594 2740144
>>740065
я тоже слезал. так то майковский самый убогий по фичам, но сидеть на 2х стульях надоело и слез с SimpleInjector на майковскую какашку.
595 2740243
596 2740335
>>740065
>>740144
Ну так я и о чем. Я о нинжекте последний раз слышал года 3...4 назад. Сейчас по моему кроме автофака и майковского уже ничего не осталось актуального. И фич второго хватает в 95% случаев.
По факту смена DI это событие уровня "перелезаем на новую версю LTS". Там либо все проходит гладко и нормально, либо есть breacking changes, которые ты никакими абстракциями и слабым связыванием не учтешь и придется по любому, что-то курочить. Поэтому в какой-то момент нужно остановится и сказать себе, что налайткожено достаточно, пора и поработать.
597 2741612
Win2d или Skiasharp?
598 2741622
>>741612
По задачам.
599 2763359
>>738589
Нефтегаз?
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 28 июля 2023 года.

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

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