Главная Юзердоски Каталог Трекер NSFW Настройки

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 1092 91 184
C#/Сишарп/.NET Тред #36 /csharp/ Аноним 08/07/22 Птн 09:13:20 2399284 1
image 58Кб, 1536x1536
1536x1536
Прошлый тред: >>2334153 (OP)

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

1. Ресурсы:
https://dotnet.microsoft.com/learn
https://docs.microsoft.com/ru-ru/dotnet/csharp/
https://metanit.com/

2. Онлайн-компиляторы:
https://ideone.com/
https://dotnetfiddle.net/

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

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

5. Какую IDE выбрать?
Для Windows самым очевидным вариантом будет Visual Studio ( https://visualstudio.microsoft.com/ru/downloads/ ). Бесплатной Community-версии более, чем достаточно для большинства задач. Также есть версия для macOS.
Кроссплатформенный полуредактор/полуIDE VS Code ( https://code.visualstudio.com/ ).
Кроссплатформенный IDE Rider ( https://www.jetbrains.com/rider/ ).
Также существуют C#-плагины для Atom и Sublime Text, но функциональность там достаточно сильно урезана.

6. С# для мобильной разработки
https://dotnet.microsoft.com/apps/xamarin

Новые возможности C# 9.0: https://devblogs.microsoft.com/dotnet/c-9-0-on-the-record/

Текст шапки: https://pastebin.com/pbK8CGqw
Аноним 08/07/22 Птн 09:21:25 2399290 2
>>2399284 (OP)
Кто нибудь запускал юнит тесты .NET 6 VS 2022 на линуксе? Чего-то нихера у меня не пашет, пишет якобы среда WSL не сконфигурирована хотя вроде все по инструкцции сделал. Более того, до этого из студии на той же WSL собирал сишный проект на CMake и все сходу завелось, студия сама предложила доустановить на линукс недостающие компоненты.
08/07/22 Птн 09:23:37 2399291 3
Аноним 08/07/22 Птн 09:30:03 2399294 4
image.png 424Кб, 600x600
600x600
Вчера пытался устроиться на стажировку на модный стэк, за бесплатно естественно. Скинули тест. Ну и я его завалил.

2года опыта, ненавижу тесты блядь.

Не вкатывайтесь в шарп глупцы, хуже только кресты
Аноним 08/07/22 Птн 09:35:26 2399295 5
>>2399294
На днях тестовое на ждуна делал - с прокторингом (запись камеры, микро и экрана) разбирал, что выведет непотокобезопасный отвратительный говнокод и кучку задачек на логику
Аноним 08/07/22 Птн 09:37:44 2399296 6
Аноним 08/07/22 Птн 10:30:40 2399310 7
Мёртвый тред мёртвого языка.
Аноним 08/07/22 Птн 10:53:45 2399333 8
Какое же ведро с крабами, лол.
мимо перекатился с ноды за месяц
Аноним 08/07/22 Птн 11:43:37 2399381 9
Помогите вкатуну. Делаю небольшой пет проект. Хотел найти инфу по документации. Кто нибудь про нее что-то знает?
Аноним 08/07/22 Птн 12:29:23 2399432 10
>>2399284 (OP)
>3. WinForms или WPF?
Это еще предмет спора? Мне кажется, что уже даже WPF начинает отдавать гнильцой.
Аноним 08/07/22 Птн 12:31:45 2399435 11
>>2399295
> разбирал, что выведет непотокобезопасный отвратительный говнокод
Расскажи подробнее, плиз.
Аноним 08/07/22 Птн 12:39:43 2399441 12
Сап, стоит ли втягиваться в C#, учитывая современную ситуацию в необъятной? Не утратит ли язык востребованность в случае ухода Майков с рынка РФ?
Аноним 08/07/22 Птн 12:44:05 2399444 13
Аноним 08/07/22 Птн 13:07:07 2399476 14
Почему в VS Code можно просто добавить класс в папку решения, и всё заводится, а в студии надо прямо прописывать инклюд?
Аноним 08/07/22 Птн 13:22:26 2399505 15
>>2399476
Какой нахуй инклюд? Про пространства имён слышал?
Аноним 08/07/22 Птн 13:24:45 2399514 16
>>2399435
Там типа обычная очередь из квадратов чисел от 0 до 9999
И по количеству ядер запускаются потоки, которые берут числа из очереди и суммируют в общую переменную
Аноним 08/07/22 Птн 14:06:48 2399607 17
>>2399441
Вообще не стоит вкатываться. Ша требуют такой багаж знаний на мидла, что охуеешь.
Аноним 08/07/22 Птн 14:34:48 2399655 18
>>2399441
Никогда не стоило вкатываться, а щас - особенно не стоит. Посмотри жабу. Тот же с#, но оригинал.
Аноним 08/07/22 Птн 14:37:07 2399659 19
>>2399505
В то время на джаве никто ни с какими пространствами в анусах не заморачивается, когда на ассемблер# надо заебываться с такими низкоуровневыми вещами, как инклюды.
Аноним 08/07/22 Птн 15:09:37 2399700 20
Опять джаваеблан срет какой-то залупой, нихуя не понимая в теме...
Аноним 08/07/22 Птн 15:44:18 2399729 21
>>2399659
>Джава
>Якобы образчик ООП
>ни с какими пространствами в анусах не заморачивается
Вы все видели, вы все слышали.
Аноним 08/07/22 Птн 15:54:00 2399735 22
>>2399505
Такой. В sln файле projectreference
Аноним 08/07/22 Птн 15:54:23 2399736 23
>>2399476
VSCode это кал для дебилов не сумевших раздобыть нормальную VS.
Аноним 08/07/22 Птн 15:58:15 2399744 24
>>2399729
Ни пространства ни инклюды к ООП отношения не имеют. Это исключительно технические подходы к реализации языка.
Аноним 08/07/22 Птн 16:12:28 2399770 25
>>2399735
Там только проекты входящие в решение прописываются, ебушек. Если ты закинешь .cs файл с классом в каталог любого проекта, то он спокойно подхватится и будет добавлен в сборку проекта без какого-либо пердолинга
Аноним 08/07/22 Птн 16:22:37 2399785 26
Кстати если неймспейс описывается в разных .cs файлах на выходе это всё ещё один .dll?
Аноним 08/07/22 Птн 16:29:42 2399796 27
>>2399770
Блин, и правда. Я не туда класс закинул.
Аноним 08/07/22 Птн 16:44:28 2399821 28
>>2399785
Между DLL и неймспейсами прямой связи нет. DLL соответствует сборке (assembly). В одной сборке может быть несколько неймспейсов. С другой стороны, классы принадлежащие одному неймспейсу могут располагаться в разных сборках.
Аноним 08/07/22 Птн 17:06:44 2399851 29
>>2399821
Погодь, я думал ассембли := неймспейс.
Аноним 08/07/22 Птн 17:30:01 2399876 30
>>2399851
Не, обычно assembly := project
Аноним 08/07/22 Птн 17:39:00 2399887 31
Аноним 08/07/22 Птн 17:51:39 2399903 32
Почему в MAUI опять не завезли датагриды? Почему МС такие тупые пидорасы?
Аноним 08/07/22 Птн 18:22:23 2399941 33
>>2399744
Пространства имеют отношение к инкапсуляции. В джаве может это как-то иначе называется, но суть должна быть таже. Поэтому нет смысла катить бочку на неймспейсы.
Аноним 08/07/22 Птн 18:26:50 2399945 34
>>2399785
Смотря как и смотря где.
Если ты юзаешь управляемый ресурс, то может заругаться еще на стадии конпиляции, но это больше относится к классам и методам. Но так-то название dll это тоже часть пути, то заругаться может и не может.

Аноним 08/07/22 Птн 18:31:33 2399947 35
>>2399945
>Но так-то название dll это тоже часть пути, то заругаться может и не может.
Щас чет спизданул и сам охуел.
Аноним 08/07/22 Птн 19:20:57 2399987 36
Нахуя нужен мультитхрединг если данные лочатся и в итоге всё всё равно выполняется в порядке очереди?
Аноним 08/07/22 Птн 19:33:59 2399994 37
>>2399987
В задаче, где все треды большую часть времени одновременно юзают одни и те же данные, мультитрединг нахуй не нужен.
Аноним 08/07/22 Птн 19:38:04 2399998 38
>>2399994
А где нужон? Только не надо мне про гуи.
Аноним 08/07/22 Птн 19:43:13 2400004 39
>>2399998
Какие нах гуи? На серверах и в программах с тяжёлыми вычислениями.
Аноним 08/07/22 Птн 19:52:03 2400014 40
Аноним 08/07/22 Птн 19:58:35 2400021 41
>>2400014
Обработка запросов, рендеринг, обучение нейронок, алгоритмы сортировки, используемые в СУБД.
Аноним 08/07/22 Птн 20:01:31 2400025 42
Какой-то очень странный этот ваш ООП и крайне сомнительный в плане удобства. Делаешь всякие экземпляры там и сям, а потом часами сидишь ебешься с тем, чтобы все это друг с другом как-то связать, передать нужные данные через конструктор, параметры метода, хуй, пизду. Хочешь статики - дяди сеньоры грят иди нахуй, это не по ООПовски, потом все это не протестировать нормально. В итоге получаются ебучие макароны, где пятьсот раз приходится повторять одно и то же, чтобы ебучую цифру перекинуть из одного экземпляра класса в метод в другом. Все погромирование в целом ощущается как решение головоломки "как говно а передать в говно б". Может я что-то не так делаю?

Мимогорящий вкатыш.
Аноним 08/07/22 Птн 20:08:10 2400029 43
>>2400025
Любая предметная область сводится к связыванию сущностей и передаче данных через что-то, и не важно, статики или параметры методов. Пиши хоть процедурно, хоть объектно, хоть функционально - одно и то же говно.
Аноним 08/07/22 Птн 20:18:14 2400041 44
Аноним 08/07/22 Птн 20:25:38 2400051 45
>>2400041
Ничего тяжёлого, просто задачи специфичные. Мультитрединг - не серебряная пуля.
Аноним 08/07/22 Птн 20:28:26 2400054 46
>>2400051
И как в этом всём разобраться?
Аноним 08/07/22 Птн 20:32:45 2400061 47
>>2400054
Читать книги и писать код.
Аноним 08/07/22 Птн 20:38:54 2400075 48
>>2400061
>Читать книги
Какие?
>писать код
Куда?
Аноним 08/07/22 Птн 20:41:23 2400078 49
>>2400075
> Какие?
Из шапки.
> Куда?
В стол.
Аноним 08/07/22 Птн 20:46:58 2400085 50
>>2400078
>Из шапки.
Сколько книжек и каких надо прочитать чтобы можно было устроиться на работу?
>В стол.
Почему не на гитхаб?
Аноним 08/07/22 Птн 20:52:49 2400095 51
>>2400085
> Сколько книжек и каких надо прочитать чтобы можно было устроиться на работу?
По самому языку хотя бы одну, ещё пару по всяким технологиям, алгоритмам, подходам. Но практика куда важнее книжек.
> Почему не на гитхаб?
Да хоть на чёрта лысого. Ты пишешь код в первую очередь для себя, чтобы оттачивать свои скиллы. На гитхабе чужие хеллоуворлды мало кому интересны, у каждого и так есть своя свалка учебных проектов.
Аноним 08/07/22 Птн 20:57:06 2400104 52
>>2400085
>Сколько книжек и каких надо прочитать чтобы можно было устроиться на работу?
У тебя не возникало желания написать приблуду, которая бы облегчила тебе работу? Может тебе не нравится как работает какой нибудь софт? Пробовал хотя бы делать моды для игр?
Тебе нужна движуха, пусть идиотская с точки зрения КПД для немедленного обогащения, но решение какой либо задачи заставит тебя использовать определенные инструменты.

Читать книжки просто так — самая тупейшая идея, если ты не гений.

>2400054
>И как в этом всём разобраться?
По-моему все легко.
У тебя есть N задач, выполнение которых не зависит друг от друга. Например массив строк, которые нужно распарсить.
Совершенно очевидно, что парсинг второй строки может выполняться независимо от парсинга первой.

Но если у тебя B-задача не может начать работу без результатов A-задачи, то мультитрединг не подойдет, офкос. Если задачи А и Б блокируют что-то еще, то вот тут уже используется асинхронность — на скорость выполнения А и Б не повлияет, но задо даст дорогу другим задачам. Как-то так.
Аноним 08/07/22 Птн 21:03:34 2400119 53
>>2400104
Такое есть, но этим я буду заниматься когда перекачусь с реакта на другую работу, щас бы сам язык выучить.
Аноним 08/07/22 Птн 21:09:44 2400133 54
>>2400119
Знаешь реакт, а задаешь глупые вопросы в треде, как будто хело ворлда не писал.
Аноним 08/07/22 Птн 21:13:26 2400141 55
>>2400133
Ну всё равно тяжело
Аноним 08/07/22 Птн 21:15:37 2400143 56
>>2400141
Не к лицу тебе такое, мужик. Ты не жук-плавунец.
Аноним 08/07/22 Птн 21:17:37 2400146 57
Аноним 08/07/22 Птн 21:19:21 2400148 58
977818880561.mp4 405Кб, 640x350, 00:00:05
640x350
Аноним 08/07/22 Птн 21:20:09 2400149 59
Аноним 08/07/22 Птн 21:36:01 2400159 60
>>2400029
В процедурке я могу объявить переменную в самом начале и потом без костылей обращаться к ней хоть со 100000-й строки кода. Понятно, что процедурка энивей неюзабельное и неподдерживаемое говно, но ООП тоже то еще мозгоебство. Создай экземпляр класса, в нем экземпляры остальных классов, из которых ты потом хуй вызовешь параметры из экземпляра основного класса, потом появляются другие сторонние классы, все это запутывается и здравствуй макаронная фабрика с огромным объемом кода и строками, вылезающими за границы экрана с постоянными проверками миллионов условий для того, чтобы сделать один пук.
Аноним 08/07/22 Птн 21:42:06 2400168 61
>>2400159
Ну как бы да. Ты платишь всей этой сложностью за то, что у тебя появляется возможность сделать так, чтобы пук был чуть другой тональности просто подминив один из объектов на другой с таким же интерфейсом на этапе сборки этого дерева объектов.
Аноним 08/07/22 Птн 21:44:25 2400174 62
>>2400159
> Создай экземпляр класса, в нем экземпляры остальных классов, из которых ты потом хуй вызовешь параметры из экземпляра основного класса, потом появляются другие сторонние классы
Читай про dependency injection.
Аноним 08/07/22 Птн 21:49:07 2400181 63
>>2400174
А, эта хуйня именно для того, чтобы упростить этот процесс? А я-то думал это какая-то сложная залупа для сеньоров, чтобы кучу разных технологий вместе склеивать.
Аноним 08/07/22 Птн 22:04:51 2400201 64
>>2400159
Что мешает использовать и то и другое?
Аноним 08/07/22 Птн 22:25:05 2400209 65
Когда может понадобиться работа с указателями?
Аноним 08/07/22 Птн 22:31:33 2400211 66
>>2400209
Когда приходится работать с какими-либо unmanaged модулями. К примеру, дергать какое-нибудь виндовое api.
Аноним 08/07/22 Птн 22:34:52 2400212 67
>>2400209
Недавно работал с неуправляемой библиотекой, у которой ref аргумент функции — это указатель по сути. А он еще с стринговый, а каждая манипуляция со стрингами в C# создает новый экземпляр, а не переписывает данные по текущему адресу.

А я еще на бейсике писал, а там нет блока unsafe.
Аноним 08/07/22 Птн 23:32:30 2400236 68
>>2399941
> Пространства имеют отношение к инкапсуляции.
Каким образом?
Аноним 08/07/22 Птн 23:36:28 2400237 69
>>2399941
> Пространства имеют отношение к инкапсуляции.
Давай определимся с терминологией?
Инкапсуляция - это когда участок кода "капсула" делает одну вещь, делает её хорошо, и ей (капсуле) не нужны другие участки кода, таким образом код in-capsule.
Неймспейсы же не имеют отношения к инкапсуляции в том виде, в котором я только что задефайнил. Неймспейсы позволяют нескольким "капсулам" обмениваться данными, что имеет отношение к интерфейсам, которые опять же не имеют отношения к ООП.
Аноним 08/07/22 Птн 23:43:01 2400240 70
Этот ваш MAUI такое же говно как электрон ведь. Хули вы так за него топите?
Аноним 09/07/22 Суб 00:05:10 2400249 71
Аноним 09/07/22 Суб 01:21:22 2400268 72
Поясните за unmanaged ресурсы а именно что ими является. Про потоки понятно (хотя не понятно нахрена после .Close() вызывать .Dispose()). За чем ещё приходится подчищать?
Аноним 09/07/22 Суб 02:10:09 2400286 73
>>2400237
>и ей (капсуле) не нужны другие участки кода
Как так, если все ооп строится на связях между объектами?
Аноним 09/07/22 Суб 02:58:37 2400292 74
>>2400286
Так, что связываются объекты своими интерфейсами, а не участки кода кишками своих реализаций.
Аноним 09/07/22 Суб 03:00:01 2400293 75
>>2399903
потому что это мобильщина (где датагриды не нужны по понятным причинам) которую пытаются портировать на десктоп.
Аноним 09/07/22 Суб 04:32:27 2400303 76
>>2400268
В первую очередь это какие-либо дескрипторы ОС. Даже если ты дёрнул Close и вернул их ОС, то дергать Dispose нужно на случай, если в классе реализован финализатор с Dispose паттерном. В таком случае, если класс грамотно написан, в методе Dispose дернется SuppressFinalize для объекта и сборка мусора пройдет быстро и безболезненно. А если не дернешь, то сборка мусора пойдет длинным путем с вызовами финализаторов в отдельном тредике и возможностью для программы развалится нахуй, если финализатор кривой, так как исключения выбрашенные в финализаторе обработать никакой возможности нет.
Аноним 09/07/22 Суб 09:49:43 2400379 77
>>2400292
>>2400237
Как говорится заставь дурака инкапсулировать, он абсолютно все спрячет и будет связывать интерфейсами. Инкапсуляция позволяет применять имена методов и полей только в пределах своей среды обитания. Инкапсуляция, прежде всего это возможность что-то скрыть.

А у тебя суперфанатичная крайность: ну вот передо мной топор, я буду им и дрова рубить и кашу готовить.
Аноним 09/07/22 Суб 10:17:24 2400389 78
Аноним 09/07/22 Суб 11:04:27 2400404 79
>>2400389
Нет, это я вам перезвоню.
Аноним 09/07/22 Суб 12:11:34 2400419 80
image.png 85Кб, 611x761
611x761
Хочешь в .net? Подумай трижды.
Аноним 09/07/22 Суб 12:14:37 2400421 81
>>2400419
И что не так помимо шизоидных 3+ лет на ждуна?
Ресурсы для практики Аноним 09/07/22 Суб 12:17:49 2400422 82
Ку, аноны. Хотелось бы узнать, какие есть ресурсы, чтобы набивать руку на шарпе. Практиковаться одним словом.
Аноним 09/07/22 Суб 12:21:15 2400425 83
>>2400421
По сути просят готового спеца который может в соло тащить небольшой проект, под видом джуна.
Аноним 09/07/22 Суб 12:34:21 2400436 84
>>2400425
>По сути просят готового спеца
Самые обычные требования к бэковику.
>в соло тащить небольшой проект, под видом джуна.
Обычная практика для мелких галер. Но опыт даёт ебейший, по сравнению с работой в команде все 2-2.5х. Если лояльно к проёбам на начальных этапах будут относиться то вообще всё норм.
Аноним 09/07/22 Суб 12:58:02 2400448 85
>>2400292
Это вообще как? Уже кучу всего перечитал/пересмотрел, но ничего подобного не видел.
Аноним 09/07/22 Суб 13:19:18 2400463 86
>>2399441
>Не утратит ли язык востребованность в случае ухода Майков с рынка РФ?
Их на этом рынке и не было никогда официально.
Аноним 09/07/22 Суб 13:22:34 2400464 87
>>2400025
>Может я что-то не так делаю?
Однозначно. Изучай что такое инверсия управления и какие есть способы ее реализации.
Аноним 09/07/22 Суб 14:13:59 2400494 88
В чём разница между полем и свойством?
Аноним 09/07/22 Суб 14:37:21 2400509 89
>>2400499
Стоит еще сказать, что свойство - это пара методов, под которыми скрыто лежит поле.
Аноним 09/07/22 Суб 14:39:49 2400511 90
>>2400499
>>2400509
А для чего эти изъёбы если и для поля можно сгенерить геттер-сеттер? Это же по-идее и память дополнительную занимает или оно всегда в компайлтайме резолвится?
Аноним 09/07/22 Суб 14:39:56 2400512 91
>>2399284 (OP)
>недавно вышел .NET 5 и С# 9.0
Сука, как же горит жопа. Ебаные дауны перекатчики, уже миллион лет вышел .NET 6 который LTS.
Аноним 09/07/22 Суб 14:41:06 2400514 92
>>2400422
Никаких, есть только 1 способ практики: придумать себе проблему и решить её, сделай парсер жсон, сделай crud сервер REST API
Аноним 09/07/22 Суб 14:43:25 2400522 93
>>2400511
Не для каждого поля нужно публичное свойство, но для каждого свойства нужно поле. В C# сахар делает то, что ты бы сделал руками, памяти занимает настольк незначительно, что вообще похуй

[CompilerGenerated]
private SmthType <Property>k__BackingField;

public SmthType MyProperty
{
[CompilerGenerated]
get
{
return <Property>k__BackingField;
}
[CompilerGenerated]
set
{
<Property>k__BackingField = value;
}
}
Аноним 09/07/22 Суб 14:58:27 2400540 94
image.png 14Кб, 678x338
678x338
Я правильно понимаю, что сейчас предпочтительнее использовать is null вместо обычного сравнения == null?
Аноним 09/07/22 Суб 15:04:19 2400555 95
>>2400540
Какое "сейчас"?
Знак сравнения применителен к структурам типа int, а is к классам типа твоего car.

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

Аноним 09/07/22 Суб 15:07:54 2400566 96
>>2400555
> Какое "сейчас"?
Такое "сейчас", что раньше "is null" и "is not null" не было. Теперь "== null" и "!= null" можно полностью заменить. Но тут вопрос этого ли добивались майкрасофты или же они добавили "is null" / "is not null" для других целей.
Аноним 09/07/22 Суб 15:29:24 2400613 97
>>2400448
Перекатывайся в джаву. У нас есть Бугаенко. Он про всё это расскажет.
Аноним 09/07/22 Суб 15:34:20 2400620 98
>>2400566
>"is null" и "is not null"
да хуй знает, я бесикоблядь, у нас это было всегда. Если структура, то использовали "=", если ссылочный, то "is".

>добивались майкрасофты
C# и бейсик объединяют. С моей точки зрения, такое различие дает визуально понять, что сравнение идет по значению или по ссылке. Сам проебывал порой, если бы не ор студии.


Аноним 09/07/22 Суб 15:46:55 2400629 99
>>2400425
Ну я кстати на 1 работе в соляново написал проект и тащил его.
Аноним 09/07/22 Суб 15:49:24 2400634 100
>>2400613
Я тогда на работу устроюсь аккурат к пенсии, если буду по хуям языкам скакать.
Аноним 09/07/22 Суб 15:51:11 2400636 101
>>2400634
в чем проблема знать несколько языков?
Аноним 09/07/22 Суб 15:55:12 2400639 102
>>2400638
Чел, плиз. Сейчас даже в ИП Говнокод кодревью и тесты проводят.
Аноним 09/07/22 Суб 15:56:02 2400640 103
>>2400638
Есть такое, но Кабану было похуй, да и заказчику тоже.
Аноним 09/07/22 Суб 15:57:01 2400642 104
>>2400634
Петушарп является клоном жабы и фактически ничем не отличается, только в некоторых местах петушарп более низкоуровневый, чем джава. А хорошие программисты умеют кодить на любом языке, ведь принципы чистокода везде одинаковые, кроме скриптопараши конечно.
Аноним 09/07/22 Суб 15:57:13 2400643 105
>>2400639
Ревью было иногда, но тесты я тогда не писал. Чисто в постменчике проверял и нормально.
Аноним 09/07/22 Суб 16:00:07 2400647 106
>>2400643
>Чисто в постменчике проверял и нормально.
Было дело, все так писали. Благо это был нест который многие грехи пропускает или позволяет на аутистах игнорировать.
Аноним 09/07/22 Суб 16:03:11 2400653 107
>>2400648
Забавно, как петушарперы перемогают картиночками. Прямо как хохлы с пораши. Нарисовали свинью (и то, придумали свинью не сами, а спиздили идею и попытались перефорсить), и думают, что правы.
Аноним 09/07/22 Суб 16:05:50 2400656 108
Хочу сменить свою 1 работу джуном. Устал работать за 20к. Писал чисто бекенд, razor и js не использовал. С базой работал только через entity . Не сказал бы, чтобы прям очень многое умею, но что-то сделать сам смогу. 7 месяцев жидкого стажа, иногда могу плохо написать большой запрос к базе на linq. У меня есть вообще хоть какие-то шансы?
Аноним 09/07/22 Суб 16:06:39 2400658 109
>>2400656
В джаве есть. Петушарп умер после ухода мелкомягких из россии.
Аноним 09/07/22 Суб 16:08:33 2400660 110
>>2400656
>Писал чисто бекенд
>иногда могу плохо написать большой запрос к базе на linq
>чегоблядь.jpg
А так подтягиваешь текущие знания, учишь фронтенд, получаешь лычку фуллстака и на ~80к можешь расчитывать.
Аноним 09/07/22 Суб 16:08:49 2400661 111
>>2400658
Если совсем будет плохо, то перекачусь. На яве писал давненько, лень вспомнить всякие нюансы и кишочки спринга
Аноним 09/07/22 Суб 16:09:21 2400664 112
>>2400648
Как нет хаскеля, дарта, Д и кучи других языков на которые всем похуй. Даже чморить лень.
Аноним 09/07/22 Суб 16:14:30 2400674 113
>>2400660
Да просто писал запрос на 10 строчек кода и в итоге написал немного неправильно. В общем я жиденький джун, но я знаю людей, которые сильно слабее и получают хоть что-то, а не ебаные 20 тысяч. Лан, спасибо за совет, буду фронт подтягивать. В реакт лучше вкатываться?
Аноним 09/07/22 Суб 16:17:12 2400677 114
А откуда взялось правило приписывать название класса к айдишнику? Типа:
public class Book
{
public string BookId;
}
..
book.BookId = "123";

Почему это лучше, чем просто "Id"?
Аноним 09/07/22 Суб 16:18:12 2400681 115
>>2400674
Ты сначала с html+css+js+ts освойся. Либу потом выберешь.
Аноним 09/07/22 Суб 16:23:36 2400687 116
>>2400636
Во времени.

>>2400642
>хорошие программисты
>ньюфаг 2 месяца
Олсо, BCL совершенно другая, фреймворки другие, окружающие технологии другие и так далее. Даже шарпосеньору понадобится пара месяцев для освоения.

>>2400674
Я внимательно слежу за вакансиями на разных источниках и в требованиях 9/10 фронтовых фреймворков - это ангуляр. Вью вообще только один раз видел.
Аноним 09/07/22 Суб 16:28:03 2400689 117
>>2400681
А что по поводу знаний бд? Я нативный sql помню на уровне банальных крудов. На работе особо ничего не делаю на нем. Или моего знания достаточно?
Аноним 09/07/22 Суб 16:29:14 2400690 118
>>2400677
Хуета какая-то. Тавтология это плохо. И непонятно зачем стринг дял числового значения. Есть вообще GUID.
Аноним 09/07/22 Суб 16:33:56 2400695 119
image.png 85Кб, 1033x1000
1033x1000
>>2400690
Это так у микрософтов
Аноним 09/07/22 Суб 16:34:30 2400698 120
Самая непонятная, вселенская штука для меня.

Есть вещественное число в стринге "0.001"

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



Аноним 09/07/22 Суб 16:36:58 2400702 121
>>2400695
Там в одном классе как минимум два ID, ну тогда понятно зачем. Хотя это тупо — нужно создавать класс департамента, который в себе будет хранить ID, а не засирать им класс Course
Аноним 09/07/22 Суб 16:37:43 2400704 122
>>2400689
Учишь postgres по их доке, проходишь все уровни sql на литкоде и всё тут.
Аноним 09/07/22 Суб 16:38:33 2400707 123
>>2400702
>>2400695
Бля, у них же есть класс департамента — выше. Они шо, ебанутые?
Аноним 09/07/22 Суб 16:40:31 2400714 124
Аноним 09/07/22 Суб 16:41:28 2400718 125
Аноним 09/07/22 Суб 16:44:01 2400722 126
>>2400512
>миллион лет вышел
Года еще не прошло, хлебушек. Все до сих пор спокойно на 3.1 сидят и ок.
Аноним 09/07/22 Суб 16:51:16 2400736 127
>>2400566
>раньше "is null" и "is not null" не было
is null появился еще в 7-м шарпе, is not - в 9-м.

>>2400540
>Я правильно понимаю, что сейчас предпочтительнее использовать is null вместо обычного сравнения == null
>>2400566
>Но тут вопрос этого ли добивались майкрасофты или же они добавили "is null" / "is not null" для других целей.
Операторы == и != могут быть переопределены в классе, а is null и is not null кладут хуй на любые переопределения операторов.
Выводы сделаешь сам надеюсь.

Аноним 09/07/22 Суб 16:53:48 2400740 128
Поля в тупле называть с большой буквы?
Аноним 09/07/22 Суб 16:54:54 2400741 129
>>2400620
>да хуй знает, я бесикоблядь
Бейсик еще в 90-х называли языком плодящим умственных инвалидов от программирования. И что после него очень сложно избавиться от хуевых практик построения кода.
>>2400620
>С моей точки зрения, такое различие дает визуально понять, что сравнение идет по значению или по ссылке.
Это еще раз говорит о том, что приходя на новый стек/язык не стоит проецировать свой предыдущий опыт на него, а то можно знатно объебаться. Лучше прочитать доки и понять, что и зачем.
Аноним 09/07/22 Суб 16:55:53 2400742 130
Аноним 09/07/22 Суб 16:57:04 2400743 131
>>2400741
>Бейсик еще в 90-х называли языком плодящим умственных инвалидов от программирования. И что после него очень сложно избавиться от хуевых практик построения кода.

Сказал сишарпер. Ну так вали из шарпа тоже и полируй неуправляемый код.
Аноним 09/07/22 Суб 16:59:28 2400749 132
>>2400741
Только вот C# на данный момент послаще бейсика из 90х будет.
Аноним 09/07/22 Суб 17:08:56 2400759 133
>>2400743
Мне то зачем, если мне в шарпах все ок.
Это ты уже второй тред ноешь: "Вот в бейсике было о-о-о, а в шарпе фу-фу-фу".
Ну и косяк бейсика не в его сахаре или в неуправляемости/управляемости кода.
Аноним 09/07/22 Суб 17:22:50 2400772 134
image.png 13Кб, 743x123
743x123
image.png 17Кб, 573x225
573x225
>>2400736
Но это не отвечает на вопрос является ли данный способ сравнения "is null" и "is not null" предпочтительным.
Аноним 09/07/22 Суб 17:44:31 2400792 135
>>2400772
Eще раз для тупых. Операторы == и != могут быть перегружены в классе. И ты вполне можешь на условие if(item == null) получить true, даже если он по факту не null (ну вот захотелось создателю класса вот так) и наоборот при проверке if(item != null) получить true, хотя объект пустой (если чо, то операторы перегружаются статически, т.е. даже у пустого экземпляра отработает перегрузка, а не оригинал)
А при проверке is и is not тебе будет похуй есть там перегрузки или нет.
Т.е. если ты уверен, что в классах которыми ты пользуешься нет и не будет таких перегрузок или твоя логика включает в себя такие перегрузки, либо тебе просто похуй, то проверяй на null через == и !=
А если ты нормальный чел, то поймешь, что проверка через is и is not лучше, т.к. избавляет тебя от вышеописанных головняков.
Аноним 09/07/22 Суб 18:25:16 2400823 136
>>2399284 (OP)
Почему приложение на шарпе может не запускаться на других компах?

Ошибок не выдаёт, копируется вся папка release, где все необходимые библиотеки
Аноним 09/07/22 Суб 18:49:25 2400850 137
>>2400823
>release
>Ошибок не выдаёт
Ну релизные версии не выдадут ошибок даже при запуске отладки из студии. А без запуска отладки даже дебаг версия программы просто закрывается или не запускается.

Может конфигурация сборки другая, может дело в импорте библиотек.

Аноним 09/07/22 Суб 18:52:08 2400853 138
>>2400850
Сама программа консольная, она работает с пдф файлами, на отсутствие библиотек не ругается, просто запускается и быстро завершается, проверок исключений в коде нету

Кучу вариантов перепробовал и посмотрел в интернете, но ответа нету вообще.
Аноним 09/07/22 Суб 19:05:05 2400867 139
>>2400853
Я думаю тогда надо уточнить, мало ли.
Библиотека коммерческая. Может ли быть так, что из-за неё программа отказывается работать на других ПК? В смысле, что она отслеживает, что приложение запускается на другом ПК и не работает?
Аноним 09/07/22 Суб 19:12:26 2400877 140
>>2400853
>на отсутствие библиотек не ругается
А дело может быть не во отсутствии, а в их несовместимости.
Ты можешь хотя бы main на свой код в try завернуть и в случае Catch Exception выдать меседжбокс или записать в txt с информацией об ошибке

Еще я видел у Христа тутор по глобальному Catch
https://www.youtube.com/watch?v=-97tko0ous8
Это чтобы не расписывать в каждой функции по try Catch

>Библиотека коммерческая.
Она может быть нативной. А такое собирается под конкретную конфигурацию.
Аноним 09/07/22 Суб 19:16:58 2400879 141
>>2400877

> Ты можешь хотя бы main на свой код в try завернуть и в случае Catch Exception выдать меседжбокс или записать в txt с информацией об ошибке

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

> А такое собирается под конкретную конфигурацию

Подробнее, ибо под конфигурацией я сходу понимаю железо, ОС и фрамеворк
Аноним 09/07/22 Суб 19:29:04 2400889 142
>>2400823
Хуево собрал / не все собрал
Аноним 09/07/22 Суб 19:33:32 2400892 143
>>2400889
Ща пробую с АдынКлик сделать установщик, пишут, что помогает.
Аноним 09/07/22 Суб 19:39:05 2400894 144
>>2400879
>Попробую
Попробуй глобальный кетч, как в видео

>Попробую, хотя в первый раз жаловалось на занятость потока для записи в файл
Дубина стоеросовая. Ты когда тестировал, небось юзал простенькие файлы, которые быстро записывались и быстро освобождались. И как только этот процесс затянулся, то все пошло по пизде. Еще небось какой нибудь delay приписывал, щоб "наверняка дождаться". Я тебя насквозь вижу.

>Подробнее, ибо под конфигурацией я сходу понимаю железо, ОС и фрамеворк
Например процессор: может интел, может амд, может 32, может 64. Читай что такое JIT-компиляция и чем результат отличается от машинного кода.



Аноним 09/07/22 Суб 19:44:31 2400897 145
>>2400894
> И как только этот процесс затянулся

Не

> JIT-компиляция

Просто ехе файл из релиза или из дебуго, обе машины АМД, причём обе 3000 серии
Аноним 09/07/22 Суб 20:25:47 2400925 146
Несколько функций независимо друг от друга обращаются к однмоу листу и перезаписывают его. Это нормальная практика? Конфликта не будет?
Аноним 09/07/22 Суб 20:31:42 2400928 147
>>2400925
>Это нормальная практика?
Нет.
>Конфликта не будет?
Будет.
Аноним 09/07/22 Суб 21:08:41 2400950 148
>>2400928
А как этого избежать?

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

Есть какие-то решения для этого? Создать вторую переменную, котоаря будет неким семафором? А еще непонятно: в одном случае в листе будет 10 итемов, а в другом случае 40. А что если поступят еще 30, пока не обработаны предыдущие 20? Наверно надо дублировать список и только потом обрабатывать.
Аноним 09/07/22 Суб 21:11:51 2400954 149
>>2400897
Кароч повозился и оно таки ругается на права.

Можно ли как-то в коде поднять права или учесть?

В свойствах папки, в безопасности даже всем давал полный доступ, но оно всё равно ругается.
Аноним 09/07/22 Суб 21:16:18 2400957 150
Аноним 09/07/22 Суб 21:17:28 2400958 151
>>2400954
>Можно ли как-то в коде поднять права или учесть?
Тогда какой был бы смысл в защите, если бы рандомный Васян с малварем сам себе бы повысил права?

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


>В свойствах папки, в безопасности даже всем давал полный доступ
Это дерьмо не работало никогда. Даже в антивирусе ставил в исключения, все равно лезет.
Аноним 09/07/22 Суб 21:21:25 2400962 152
>>2400958
Все файлы лежат в специально созданных папках, в системные я не лезу.
Задача простая - открыть пдф, найти данные, потом этот файл разбить на страницы, которые сохраняются в отдельную с именем, которое создаётся на основе данных, потом изначальный пдф переносится в отдельную папку.

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

В самом лучшем случае он создаёт две папки, но на попытку даже чтения пдф уже ругается.
Аноним 09/07/22 Суб 22:13:25 2401004 153
>>2399284 (OP)
Где прочитать про 3х слойную архитектуру ? Желательно подробно с примерами на c# ? Спасибо
Аноним 09/07/22 Суб 22:17:59 2401008 154
>>2400957
О, спасибо, то что нужно.
Аноним 10/07/22 Вск 00:09:59 2401090 155
Так, я прочитал за 5 дней:
- The C# Player's Guide
- C# 10 and .NET 6 – Modern Cross-Platform Development
- Writing High Performance .NET Code
Чё там дальше?
Аноним 10/07/22 Вск 01:34:55 2401162 156
>>2401090
Стирать трусы, ты обосрался.
Аноним 10/07/22 Вск 01:37:49 2401163 157
>>2401162
Это ты так пошутить попытался, чмоня?
Аноним 10/07/22 Вск 02:03:16 2401170 158
>>2401163
Нет, я спустил тебя на землю.
Аноним 10/07/22 Вск 10:24:22 2401224 159
>>2401170
Пчёл, я крестосеньор, я это всё по диагонали читал.
Аноним 10/07/22 Вск 10:34:13 2401229 160
>>2401224
Нахуй тебе петушарп, крестосерьор?
Аноним 10/07/22 Вск 10:36:54 2401230 161
>>2401229
Интересно освоить что-нибудь новое.
Аноним 10/07/22 Вск 10:39:00 2401231 162
Аноним 10/07/22 Вск 10:41:21 2401234 163
>>2401231
- ваши яблоки вкусные?
- а зачем тебе яблоки?
- да вот захотелось попробовать что-то кроме помидор?
- так есть же гавно, иди говна поешь - новый вкус обеспечен
Аноним 10/07/22 Вск 10:41:45 2401235 164
>>2401231
Так джава ещё хуже.
Аноним 10/07/22 Вск 10:45:40 2401236 165
>>2401235
Че? Джава во всем обоссывает уродливую ассемблеропарашную бездокументационную хуйню типа петушарпа.
Аноним 10/07/22 Вск 10:45:53 2401237 166
>>2401224
Тем более. В таком случае тебе надо читать строго по страничке в день и внимательно все практиковать, усваивать человеческий язык и избавляться от привычек, приобретенных в языке, который создавали шизофреники.
Аноним 10/07/22 Вск 10:48:24 2401239 167
Аноним 10/07/22 Вск 10:48:57 2401240 168
1589368540092.jpeg 84Кб, 620x620
620x620
>>2401237
>петушарпер
>заявляет про писание какого то языка шизофрениками
Аноним 10/07/22 Вск 11:09:51 2401245 169
>>2401240
Разумеется. Петушарп - один из самых стройных и лакончиных языков на данный момент, если вообще не самый. А крестухон - поделие шизофреников, которое сейчас поддерживает сообщество таких же шизофреников. Попытки разобраться в огромной свалке под неприглядным названием С++ приводят к стойким повреждениям психики и требуют длительной реабилитации.
Аноним 10/07/22 Вск 11:22:48 2401251 170
>>2401224
>>2401090
А зачем ты это читаешь? Если любишь читать, я бы посоветовал Чехова, например.
Все подобные книги - они для новичков в программировании вообще, а не на языке.
Я с куда меньшим чем у тебя бекграундом, когда перекатывался в решетку, не прочитал ни одной книги (ну одну на треть прочитал). Потому что это чудовищная потеря времени. Во-первых, в книгах ни одна тема не раскрывается исчерпывающе, и чтобы ощутить понимание, всё равно приходилось лезть и в документацию языка и исходники дотнета. Во-вторых, основы языка постигаются в первые часы изучения. А дальше уже ты предметно лезешь в доки по своим вопросам, либо гуглишь для своей задачи а как вот это сделать.
Аноним 10/07/22 Вск 11:27:14 2401255 171
>>2401245
Если взять и переписать весь дотнет с нуля, то будет да, так как ты описал.
Но огромное количество кода написано и до сих пор используется без всяких типов, с кучей магической рефлексии и атрибутов. WinForms, WFP, ASP и EF, если делать на новом шарпе, могли бы быть прекрасными, но в нынешнем виде - они на уровне джаваскрипта.
Аноним 10/07/22 Вск 11:31:21 2401258 172
>>2401255
Ну вот собсна пример запущенной шизы.
Аноним 10/07/22 Вск 12:38:03 2401292 173
Доставьте список вопросов на собесе для бекэндера
Аноним 10/07/22 Вск 12:53:31 2401306 174
А как вам null-допустимость? Мне кажется идея отличная. Но проблема в том, что C# и его фреймворки уже давно сформировался. Поэтому даже на уровне включаемой/отключаемой эта фича сомнительна. Нужен короче новый СИ, который избавится от всего легаси говна. Какой-нибудь Си Некст.
Аноним 10/07/22 Вск 13:04:04 2401312 175
>>2401306
Вся стандартная дотнетовская либа уже давно переписана в стиле новой модной нуллабилити.
А помойные ашотобиблиотеки если не поспевают за трендами, то идут нах.
Аноним 10/07/22 Вск 13:08:08 2401315 176
>>2401312
> Вся стандартная дотнетовская либа уже давно переписана в стиле новой модной нуллабилити
Хм, и вправду переписана. А может быть такое, что они нуллабилити по умолчанию врубят в будущем? Или такое исключено?
Аноним 10/07/22 Вск 13:31:12 2401326 177
>>2401315
>нуллабилити по умолчанию врубят в будущем?
Всё к этому идёт.
Хотя Nullable<T> в этой концепции выглядит по-идиотски. Потому что как писать в дженериках T? - это слишком ambiguously. Лучше бы её переписали на Optional<T> и убрали все двусмысленности с null. Впрочем и DBNull тоже мутный класс.
Аноним 10/07/22 Вск 17:39:30 2401689 178
Как так получается, что Райдер в разы более тормознутый, чем Студия? Должно же быть наоборот.
Аноним 10/07/22 Вск 17:57:29 2401715 179
>>2401689
>Должно же быть наоборот.
Почему? Всё правильно.
Аноним 10/07/22 Вск 18:00:37 2401725 180
>>2401689
Ты сравниваешь лучшую иде всех времён и народов Студию, написанную на быстрых и лёгких крестами с шарпом, с васянским Райдером на тормознутой прожорливой жабе. Что тебя удивляет?
Аноним 10/07/22 Вск 18:00:44 2401726 181
>>2401689
А ты сравнивай со связкой студия+решарпер. Тогда уже более-менее на равных идут по тормознвтости. И по функционалу.
Аноним 10/07/22 Вск 20:34:04 2401927 182
pic1.PNG 55Кб, 828x830
828x830
pic2.PNG 40Кб, 764x836
764x836
изображение.png 44Кб, 863x525
863x525
Сап двач, помоги с решением проблемы. На VBA в экселе макросом нужно из одного листа сравнить порядок ячеек из второго листа и отсортировать их как во втором. Желательно что бы ячейки напротив ячеек которые будем сортировать, так же перемещались с ними. Пик - таблицы.
Так же нужно на отдельный лист собрать данные которые будут собираться в таблицу в ворд, а потом выводиться на экран.

На пик3 код, который сейчас сортирует и считает кол-во задач на работника.

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

Цитата задачи: На основании данных книги Data.xlsb написать программу на языке VBA, которая по нажатию на кнопку сформирует и выведет на экран документ "Отчет по загрузке" в MS Word.
Требования:
Исходные данные и их структура должны сохраниться.
Отделы и их сотрудники должны быть расположены в порядке убывания количества задач.
Аноним 10/07/22 Вск 20:57:00 2401937 183
Я тут увидел у жабистов довольно пиздатый гайд по вкату. Почему у нас нету? Во-вторых, куда список книжек проебали при перекате? В-третьих, скоро 11 шарп выйдет, а у вас там до сих пор про 9 написано. В-четвертых, вместо мертвого замарина надо вписать мертворожденный мауи.
Аноним 10/07/22 Вск 21:04:38 2401945 184
.png 368Кб, 774x551
774x551
>>2401937
> Напиши гайд сам
> Я???
> Перекатывай сам
> Я??????
> Оформляй шапку сам
> Я?????????
Аноним 10/07/22 Вск 21:11:03 2401952 185
>>2401945
Я вкатыш, куда я там чего напишу.
Аноним 10/07/22 Вск 21:43:25 2401975 186
>>2401952
Хоть и вкатышь, судя по твоему посту ты имеешь представление об идеальной шапке. Значит, ты обязан сам туда что-то написать.
Аноним 10/07/22 Вск 21:51:46 2401982 187
unity.mp4 4036Кб, 856x480, 00:01:58
856x480
>>2401937
> скоро 11 шарп выйдет, а у вас там до сих пор про 9 написано
Ты можешь спокойно начать с шарпа 4.0

Список книжек должен был идти первом постом. Но ОП проебался
https://pastebin.com/pbK8CGqw

Ещё там мельком упоминается Unity. Считаю это большим упущением, потому что это очень крутой и популярный инструмент в данный момент.

Ещё есть очень крутая книжка для самых новичков:
Учимся программировать на C# вместе с Джоном Смайли
она давно снята с продажи, но её легко можно купить с рук
Аноним 10/07/22 Вск 22:06:42 2402002 188
>>2401982
>Ещё там мельком упоминается Unity. Считаю это большим упущением, потому что это очень крутой и популярный инструмент в данный момент.
Популярный - возможно, крутой - не особо.
Аноним 10/07/22 Вск 22:11:47 2402008 189
>>2402002
> крутой - не особо
Как минимум для шарпера лучший выбор. Хочешь делай на ПК, хочешь на консоли, хочешь на мобилки, хочешь для ВР (для поплуярного ВР чата контент делается именно на юнити, кста).

Ближайший аналог - Unreal Engine. Но это тяжеловесный монстр для профессиональных команд.
Аноним 10/07/22 Вск 22:25:01 2402014 190
>>2401975
Я знаю только что там должны были быть книги, ну и версии апдейтнуть надо. Главное - гайд. Его я точно не напишу.

>>2401982
>Ты можешь спокойно начать с шарпа 4.0
Это извращение. У нас модный молодежный язык. Зачем пердолить версии, которых даже в легаси уже не найти? Ниже седьмой сидят единицы.

>>2402008
>Но это тяжеловесный монстр для профессиональных команд.
Совсем не обязательно. Мегаскансы+блюпринты - и вот ты уже можешь делать внушительные проекты даже в одну харю. На юнити же тебе придется знать шарп (причем специализированный) и много с какими вещами дополнительно заебываться. Но на анриле неудобно делать мобилки и в принципе невозможно делать 2д.
Аноним 10/07/22 Вск 23:00:42 2402040 191
У шарпа есть препроцессор? Чем он занимается помимо резолва директив?
Аноним 10/07/22 Вск 23:03:21 2402044 192
>>2402040
Есть, но не надо его юзать.
Аноним 10/07/22 Вск 23:07:12 2402046 193
>>2402044
Это понятно. Какие у него функции вообще? По любому же на каком-нибудь собесе спросят.
Аноним 10/07/22 Вск 23:10:48 2402053 194
>>2402008
>Как минимум для шарпера лучший выбор.
И опять ты не прав. Для шарпера это просто почти единственный выход если он хочет вкатиться в геймдев именно как в профессию. Но в 2К22 вкатываться в проф-геймдев - это хуйня из под коня. Говно в разы хуже галер, еще и платят меньше.
А вот если ты хочешь вкатиться просто, чтобы забацать своей индюшатины на C#, то выбор у тебя намного больше. Stride, Godot, FNA, FlatRedBall и т.д.
Аноним 10/07/22 Вск 23:13:01 2402058 195
Вы так активно движкосрачи начинаете будто гейдев не мёртв уже как лет 5
Аноним 10/07/22 Вск 23:16:59 2402066 196
>>2402040
>Although the compiler doesn't have a separate preprocessor, the directives described in this section are processed as if there were one. You use them to help in conditional compilation.
Нету препроцессора. Есть только директивы, которые обрабатываются как будто бы он есть.
Алсо, на собесах про такое спрашивают практически никогда. Единственный вариант который еще может быть это про nullable context если ты идешь конкретно на .net6. Но и то мало еще кто понимает как их толком использовать.
А за использование остальных директив в коде обычно по ебалу дают, поэтому их можно и не знать.
Аноним 10/07/22 Вск 23:19:02 2402068 197
>>2402014
>Мегаскансы+блюпринты
Говно говненого говна.
Эта хуйня годится, только чтобы геймдизы могли игровую логику для квестов накидывать. А любой нормальный разраб тебе в ебало нассыт за их использование.
Аноним 10/07/22 Вск 23:19:58 2402069 198
Так что выбрать для кросплатформенного гуи то? Нихуя вас не разберёшь. Или Qt так и остаются единственным вариантом?
Аноним 10/07/22 Вск 23:21:51 2402074 199
Аноним 10/07/22 Вск 23:25:47 2402078 200
>>2402074
А как он в плане производительности и потребления ресурсов?
Аноним 10/07/22 Вск 23:26:09 2402079 201
>4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# активно развивается, недавно вышел .NET 5 и С# 9.0. Дотнет стал полностью опенсорсным и кроссплатформенным. В том же энтерпрайзе он очень даже востребован.

Вопрос а как вкатиться в шарпы? Шапка конечно интересная, но ответ на этот вопрос не дает. На 1 курсе были шарпы от преподш, которые сами параллельно работали, все следующие курсы прога будет полное говно. И как-то хочется в шарпы, раз я уже что-то знаю. Сами преподы сказали, что нас с руками и ногами возьмут, потому что мы повидали говно. Да вот хуй там. Я читаю, и почти на все джун позиции нужны опыт работы, знание ASP.NET/Какой-то конкретный SQL/JSON/XML/WPF/нужное вставить. Если это веб, то еще просят html js и прочую поебень. Для джуна. Допустим я выучу что-то из этого списка, а что потом? Искать вакансию с этой конкретной фичей? Про SQL вообще нихуя не ясно, он везде разный. Как вкатиться то, если я такой нахуй никому не нужен? Посоветуйте нужную комбинацию вышеупомянутых фич, чтобы гарантированно пойти куда-нибудь
Аноним 10/07/22 Вск 23:27:50 2402080 202
>>2402068
Ты бы хоть инфу по теме поискал. Блюпринты абсолютно охуеннны. Офк, никто и никогда не будет с их помощью делать ААА, а вот индюшатину можно пилить за милую душу.
Аноним 10/07/22 Вск 23:28:49 2402083 203
>>2402079
Ты просто нытик и бездельник. Я за 3 месяца вкатился и уже работаю получая 2к бачей.
Аноним 10/07/22 Вск 23:29:12 2402084 204
QcEn7XJOuHc.jpg 69Кб, 550x550
550x550
>>2402074
>нет линукса
>кроссплатформенный
Аноним 10/07/22 Вск 23:32:08 2402085 205
>>2402083
Ты за 3 месяца с нуля освоил c#?
Аноним 10/07/22 Вск 23:32:44 2402087 206
>>2402084
Сейчас бы тратить время на платформу, на которой невозможно заработать.
Аноним 10/07/22 Вск 23:33:53 2402089 207
>>2402085
А что тут осваивать?
Аноним 10/07/22 Вск 23:34:27 2402090 208
Аноним 10/07/22 Вск 23:35:49 2402092 209
>>2402090
Не ной, а скачай книжку и начинай читать.
Аноним 10/07/22 Вск 23:48:02 2402106 210
>>2402079
Я вот тоже вкатун и на безрыбье сделал свой план. Не ебу, насколько он адекватный, может местные мидлы-сеньоры поправят.

1. Основы погромирования+синтаксис+база ООП (я сейчас здесь).
2. Тут планирую пробежаться по первому курсу Нила Каммингса, где он показывает запиливание интернет-магазина на ASP+Angular. Это чтобы представлять устройство системы на поверхностном уровне.
3. После этого думаю подтягивать частные знания: SQL (можно учить любой, проще всего PostgreSQL), EF, как работают интернеты, нахвататься базовых знаний по JS/TS/Angular. HTML и CSS вроде особо не нужны, либо их можно подтянуть потом.
4. Поверхностно потрогать паттерны проектирования, алгоритмы и структуры данных, порешать задачки на Литкоде.
5. Второй курс Нила, где он на том же стеке делает что-то вроде соцсети. Тут я уже буду делать кастомный вариант и применять полученные в п. 3 и 4 знания.
6. Свой жирный пет, который будет нормально задеплоен на VPS и будет представлять собой потенциально коммерческий проект.

Там еще много всяких технологий типа Redis, Kafka, RabbitMQ, всякие системы логов, Докер и так далее. Я в душе не ебу, что это вообще такое, но вроде оно с джуна не требуется.
Аноним 11/07/22 Пнд 00:04:51 2402121 211
Аноним 11/07/22 Пнд 00:06:21 2402123 212
>>2402106
Хуйня план. Ты так выгоришь очень быстро. Мой тебе совет - освоить фронт, вкатиться работать с ним и уже после по вечерам доучивать шарп и прочую бекодрочь. Так у тебя и на поесть будет, а если не дурак и того больше и мотивация.
Аноним 11/07/22 Пнд 00:31:28 2402133 213
>>2402121
Я бы не рекомендовал брать этот план за основу, я ж полный ньюфаг не только в шарпе, но и в кодинге вообще.

>>2402123
Так я в бек хочу, фронт - это в качестве дополнения, накидать что-нибудь на бутстрапе и наговнокодить кнопочек на ангуляре. Просто для понимания как оно устроено и в резюме строчку добавить. А нормально залезать во фронт сейчас ни разу не быстрее бека. И конкуренция там охуевшая. И жс учит плохому.
Аноним 11/07/22 Пнд 01:58:04 2402182 214
Два вопроса от ньюфага.
1. Какие паттерны часто используются и их нужно выучить обязательно? Или строго все нужно учить?
2. Несколько раз уже слышал, что из-за того, что сейчас все на микросервисах, наследование практически не используется. Как это устроено? Ведь без наследования мы лишаемся полиморфизма, абстрактных классов, интерфейсов и ООП в целом.
Аноним 11/07/22 Пнд 02:09:49 2402195 215
Нужно ли знать razor pages для вката? Недавно вкатился пилить круды в мелкую компанию, планирую уходить.
Аноним 11/07/22 Пнд 02:23:52 2402200 216
>>2402182
1. DI
2. Хуйня, все монолит пишут и не парятся.
>>2402195
Там нечего знать и учить
Аноним 11/07/22 Пнд 02:55:40 2402206 217
>>2402182
>что сейчас все на микросервисах, наследование практически не используется
в огороде бузина, а в киеве...
Эти вещи вообще не связаны.

Делегирование предпочтительнее наследованию (не всегда конечно), но микросервисы вообще не причем.
Аноним 11/07/22 Пнд 03:11:03 2402208 218
>>2402182
> Несколько раз уже слышал, что из-за того, что сейчас все на микросервисах, наследование практически не используется.
Вообще никак не связано.
> Как это устроено?
Пишешь большое энтерпрайзное приложение и вдруг понимаешь, что иерархия классов для большинства сущностей не нужна, ибо почти все задачи легко решаются без наследования. А там, где нужна, достаточно поля "тип" из какого-то енума + в местах, где надо по-разному обрабатывать разные сущности, делается простой свич. В итоге за счёт отсутствия абстрактных классов всё прозрачно, меньше кода, легче дебажить и тестировать.
> Ведь без наследования мы лишаемся полиморфизма, абстрактных классов, интерфейсов и ООП в целом.
Класс не наследуется от интерфейса, он его реализует. Большая разница. При отказе от активного использования наследования интерфейсы никуда не деваются. Насчёт "ООП в целом" спорно, ООП все по-разному понимают, и в современном понимании наследование является необязательным элементом.
Аноним 11/07/22 Пнд 05:40:08 2402219 219
Аноним 11/07/22 Пнд 07:34:42 2402235 220
В общем думаю сделать пэт проект - облако. Сейчас на стадии предварительного планирования есть пара вопросов.
1. Как имитировать платежи? Есть какой-то пакет или сторонний сервис с колбэками, имитирующий платежи? Чтобы примерно понимать вообще, как оно работает.
2. Как сделать маршрутизацию вида ...:5001/files/papka1/govno/jopa, это обрабатывалось одним контроллером и он ловил "/papka1/govno/jopa" в параметр
Аноним 11/07/22 Пнд 08:50:15 2402251 221
>>2402235
2) Прописываешь в атрибутах контроллера и его методов.
1) Если ты не знаешь как делается пункт 2, то до первого тебе как до китая раком.
Аноним 11/07/22 Пнд 09:08:07 2402258 222
>>2402251
Пажжи, это просто в атрибут как "/files/{path}" условно кидается? Я просто почему-то думал, что раз там слэши, оно не спросит нормально
Аноним 11/07/22 Пнд 09:08:33 2402260 223
Аноним 11/07/22 Пнд 09:57:29 2402277 224
>>2400293
Это кросс в том числе и линукс и винда. Плюс мобильщина бывает на планшетах а там точно таблицы нужны. Больше похоже что педерасты из МС опять хуйней страдают как было с UWP.
Аноним 11/07/22 Пнд 10:00:45 2402278 225
>>2400237
Не так, инкапсуляция скрывает данные, неймспейсы лишь решают конфликты имен. Вообще ортогональные понятия.
Аноним 11/07/22 Пнд 10:25:29 2402302 226
>>2402277
>а там точно таблицы нужны
да ну. разве что в специализированном софте аля "таблицы". ибо больше нигде и не видел.
А так нужно отделять DataGrid от GridView
Аноним 11/07/22 Пнд 10:28:32 2402305 227
Как можно объяснить аномалию, что return напрямую из результата функции, возвращает бяку:
return MyFunction();

и приходится делать через временную переменную:
string result = MyFunction();
return result;
Аноним 11/07/22 Пнд 10:33:54 2402314 228
>>2402305
Функция небось асинхронная?
Аноним 11/07/22 Пнд 10:35:09 2402316 229
>>2402314
В том и дело, что обычная.
Аноним 11/07/22 Пнд 10:36:40 2402319 230
>>2402314
Если бы была асинхронная, то присвоение ничего бы не дало.
Аноним 11/07/22 Пнд 10:41:44 2402331 231
>>2402316
Скинь хотя бы код и ошибку.
Аноним 11/07/22 Пнд 10:47:03 2402336 232
>>2402302
Энтерпрайз это специализация дот нета же, в бизнес задачах почти всегда надо табличку показать.
DataGrid и GridView это же просто разные названия у разных платформ\производителей того что в винформс называлось DatgaGridView.
Аноним 11/07/22 Пнд 10:47:46 2402337 233
>>2401927
1. VB.Net имеет много общего с C#. Но VBA - не имеет ничего общего с C#, так что не в ту дверь ты стучишь. Хотя на шарпе можно написать надстройку в формате VSTO или либу и экспортировать нужные методы в COM, а потом подключить к коду VBA через Tools/References.
2. Допустим у тебя есть таблица сотрудников. У сотрудника есть ID. И есть таблица Порядок сортировки, где каждому ID указан порядок. Тогда ты должен либо формулами Excel (ВПР, ИНДЕКС, ПОИСКПОЗ, СРЗНАЧЕСЛИМН или какой-то другой) привязать значение порядка сортировки из второй таблицы в первую, и по нему сортировать. Никакой VBA тут не нужен.
3. На VBA если делать.
Создаешь структуру (Type Sotrudnik... End Type) под твои данные. Читаешь в массив такой структуры данные из таблицы 1, привязываешь к ней данные из таблицы 2, сортируешь массив (ну реализуй функцию, которая сортирует пузырьком, это легко), выводишь на нужный лист уже готовые данные.
Type Sotrudnik
FIO As String
Identifikator As String
SortirovochnoeZnachenie As Long
End Type
Аноним 11/07/22 Пнд 10:50:58 2402339 234
>>2402331
Ошибки нет, просто возвращается ноль или не то, что ожидается.
Единственное что, функция вызывается из библиотеки.
Аноним 11/07/22 Пнд 10:53:09 2402341 235
>>2402200
>1. DI
А синглтон какой-нибудь? Видел где-то список из примерно 4-5 маст-ноу паттернов, но проебал и не могу обратно найти.

>>2402206
>Эти вещи вообще не связаны.
Я у этого сеньора про это слышал, может неправильно его понял: https://youtu.be/ETdulc1xk04?t=281

>>2402208
Стоит ли мне тогда как нубу тоже минимизировать наследование и использование абстрактных классов?
Аноним 11/07/22 Пнд 10:55:16 2402342 236
>>2402341
>А синглтон какой-нибудь?
Это больше мем, чем паттерн.
Аноним 11/07/22 Пнд 10:57:46 2402349 237
>>2402342
Это иллюстрация что паттерны это развод наперсточников маркетолухов, тупо обозвали глобальную переменную модным словом и типа решили проблему. Вроде еще Луговский говорил что паттерны для дебилов и суть фиговый листочек для прикрытия уёбищности ООП.
Аноним 11/07/22 Пнд 11:07:05 2402359 238
image 113Кб, 960x540
960x540
>>2402200
>1. DI
Это хуйня, а не паттерн, просто кристаллизованный зумерской дебилизм. Передача аргумента в функцию - рррряяяяя, я применил паттерн депенденси инжекшн. Чтение конфиг-файла - рррряяяяя, я применил паттерн депенденси инжекшн.
Аноним 11/07/22 Пнд 11:17:00 2402361 239
>>2402359
А как нужно правильно делать?
Аноним 11/07/22 Пнд 11:25:45 2402371 240
>>2402339
Ну так хотя бы название библиотеки и метода.
Аноним 11/07/22 Пнд 11:35:03 2402377 241
>>2402278
Инкапсуляция - это объединение данных и операций над этими данными в единую сущность. А скрытие - это скрытие, это отдельный принцип, который за каким-то хуем лепят вместе с инкапсуляцией.
Аноним 11/07/22 Пнд 11:41:57 2402381 242
>>2402377
Кто тебе этот бред сказал? Инкапсуляция это именно сокрытие, а объединение данных и операций это вообще класс или тип.
Ты даже если не знал как правильно мог бы догадаться построив контпример класса с операциями над открытыми данными.
Аноним 11/07/22 Пнд 12:32:48 2402418 243
helloviews4.png 21Кб, 200x284
200x284
Аноним 11/07/22 Пнд 12:34:40 2402419 244
>>2402341
да просто предпочитай делегирование наследованию и всего делов. Тем более что при использовании S от SOLID это само собой получается.
Аноним 11/07/22 Пнд 12:47:06 2402433 245
Аноним 11/07/22 Пнд 12:49:31 2402438 246
>>2402436
ну так легко не решать (ваш кэп)
Аноним 11/07/22 Пнд 12:54:44 2402444 247
>>2402361
Не нужно называть паттерном, принципом, шаблоном и т.п. примитивные банальные повседневные элементы программирования.
Аноним 11/07/22 Пнд 12:58:46 2402449 248
>>2402436
Зачем ты решаешь дейлики, чел? Как насчёт того, чтобы перестать индульгировать и найти наконец работу? Ну знаешь, там, мать/жену/дочь на курорт свозить, зубы/фигуру пофиксить, мотоцикл купить, etc.?
Аноним 11/07/22 Пнд 13:01:14 2402451 249
>>2402450
Плохо быть тобой, чел. Какой стек?
Аноним 11/07/22 Пнд 13:07:10 2402456 250
>>2402454
а дейлики тогда зачем?
Аноним 11/07/22 Пнд 13:07:56 2402457 251
>>2402454
Ну допустим. Какой уровень? В любой цивилизованной стране это даже для ждуна $2к.
Аноним 11/07/22 Пнд 13:10:59 2402462 252
>>2402460
ага. а потом на тебя будут смотреть не по скилам, а по паспорту
как вот с мелкими
Аноним 11/07/22 Пнд 13:11:40 2402463 253
image.png 70Кб, 875x239
875x239
Аноним 11/07/22 Пнд 13:35:59 2402489 254
>>2402463
Зато там можно тихонько залезть в какой-нибудь далекий угол, где про тебя никто не вспомнит, смотреть там аниму и получать 300кк/наносек.
Аноним 11/07/22 Пнд 13:37:37 2402492 255
>>2402489
Манямечты. Погугли как в амазоне люди работают.
Аноним 11/07/22 Пнд 13:42:22 2402501 256
>>2402381
>Инкапсуляция это именно сокрытие
Если что, то сокрытие спокойно реализуется и с помощью наследования и с помощью полиморфизма. Так что ты объебался.
Аноним 11/07/22 Пнд 13:47:33 2402506 257
>>2402501
Шли третьи сутки споров о том, что является домом: стены или двери.

>Ну так-то можно хлопнуть не только дверью, но и стеной.
Как всегда логично.
Аноним 11/07/22 Пнд 13:48:28 2402507 258
>>2402341
>А синглтон какой-нибудь? Видел где-то список из примерно 4-5 маст-ноу паттернов, но проебал и не могу обратно найти.
Синглтон достаточно просто знать, чтобы ответить если спросят. Самому про него лучше не спрашивать. (И кстати те синглтоны, что используются в DI - это не те же самые что в паттерне).
Знать хорошо "Фабричный метод" и "Абстрактную фабрику" и чем от них отличаются. Дополнительно неплохо знать "Стратегию", "Цепочку обязанностей", "Команда". Этого в принципе достаточно.
Аноним 11/07/22 Пнд 13:52:08 2402511 259
>>2402507
>Самому про него лучше не спрашивать.
Не говорить.
Аноним 11/07/22 Пнд 13:58:58 2402520 260
>>2402444
Может для тебя повседневные, а кто-то не знает. Тем более реализация ДИ на уровне проекта не тривиальная задача. Нет, конечно, если готовенькое используешь, то может показать тривиальным.
Аноним 11/07/22 Пнд 14:03:17 2402523 261
У меня при каждой итерации лист должен забиваться новыми элементами при помощи .Add

Что лучше: делать Clear старого экземпляра листа, или просто присваивать новый экземпляр New List?
Аноним 11/07/22 Пнд 14:12:04 2402538 262
>>2402520
>Может для тебя повседневные, а кто-то не знает.
Я не знаю как возвращать данные из функции, поэтому я читаю про Return Pattern.

Есть еще Non Floating Pattern, это когда ты создаешь переменную целочисленного типа и присваиваешь ей значение.

Есть еще ABС Pattern, это когда ты создаешь переменную содержащую в названии буквы алфавита.
Аноним 11/07/22 Пнд 14:24:57 2402553 263
>>2402501
У тебя каша в голове, твои тексты это генератор бреда.
Аноним 11/07/22 Пнд 14:29:01 2402558 264
>>2402418
Я этот гридвью как просто грид в впф встречал. Ну да, это совсем из другой оперы, просто лэйаут а надо имеено экселе-подобную табличку для редактирования и ввода данных.
Аноним 11/07/22 Пнд 14:33:46 2402563 265
>>2402538
Я думал, я один так про это думаю, и объяснял это тем, что джунишка и не способен постичь великой мудрости.
А можно так на собесах говорить или пидорнут за такое?
Аноним 11/07/22 Пнд 14:35:03 2402564 266
>>2402523
Для перформанса лучше Clear, зачем грузить и так уставшить ГЦ новыми аллокациями постоянными?
Аноним 11/07/22 Пнд 14:45:48 2402570 267
>>2402563
Просто самому не надо на собеседовании инициировать рассказ про односложные паттерны. А вероятность того, что тебя спросят рассказать про синглтон, близка к нулю. Ну а спросят — расскажешь.

Но если джуна спрашивают, какие паттерны он знает, и он в пример приводит синглтон, а потом добавляет, что "это хуйня для дебилов", то ясен пень, что в таком контексте его воспримут как шизоида.
Аноним 11/07/22 Пнд 14:57:07 2402579 268
maxresdefault ([...].jpg 72Кб, 1280x720
1280x720
>>2402538
— Расскажите про ваш самый часто используемый паттерн
— NonFAP - Non Floating ABС Pattern
Аноним 11/07/22 Пнд 15:05:09 2402584 269
>>2402564
А если в одной итерации 10 000 итемов, а в другой 3 итема?
Читал где-то, что Clear годится для обработки до 100 000 и если количество данных при каждой итерации не отличается разительно.
Аноним 11/07/22 Пнд 15:06:27 2402586 270
Обычные методы или лямбды?
Аноним 11/07/22 Пнд 15:09:06 2402592 271
>>2402586
Щитаю, если метод короткий и применим только в пределах одного метода, то лямбда.
Аноним 11/07/22 Пнд 15:17:48 2402601 272
>>2402584
>что Clear годится для обработки до 100 000
Ожидание: Clear - это магический метод, которые много всякого проворачивает под капотом.
Реальность:
public void Clear() { _free_index = 0; }
Аноним 11/07/22 Пнд 15:22:58 2402607 273
>>2402587
Подтверждаю, "работаю" так же.
мимо из фаанга
Аноним 11/07/22 Пнд 16:13:51 2402651 274
>>2402523
Если важна память то аллокация, если время то clear
Аноним 11/07/22 Пнд 16:14:53 2402653 275
>>2402538
Ты понимаешь что за этим стоит парадигма программирования? Ты пишешь такой код, который можно легко тестировать, потому что его части абстрагированы друг от друга и через внедрение зависимостей ты можешь быстро заменить реальный сервис на тестовый или отладочный. Зачем ты всё упрощаешь до шуточек для умственно отсталых, клоунидзе?
Аноним 11/07/22 Пнд 16:17:55 2402656 276
Как лучше всего сейчас работать с REST API из WPF (чистого)?
Какой из стандартных классов или какой пакет?
Бэкэнд тоже на шарпе
.net core 5
Аноним 11/07/22 Пнд 16:20:59 2402657 277
>>2402305
Какой тип MyFunction возвращает?
Может что она вернула в стрингу кастится.
А твоя какой тип?
Аноним 11/07/22 Пнд 16:24:26 2402660 278
>>2402653
Парадигма кал. Хуй проссышь что там внедрено если заранее не знаешь только усложняет а не помоагает.

>>2402656
Начиная с 5 это просто net.
Аноним 11/07/22 Пнд 17:36:55 2402726 279
>>2402463
Это ещё полуправда. Дело усугубляется тем что в фаанг набирают по квотам педерастов, баб и чурбанов вместо толковых белых программеров. Не удивительно что в итоге получается кал.
Аноним 11/07/22 Пнд 17:56:55 2402738 280
6a97628144034ea[...].jpg 175Кб, 1920x1080
1920x1080
WPF стили нужно переосмысливать.
Чтобы закруглить края, нужно писать километры текста.
Чтобы сделать кнопку с иконкой, нужна простыня, которая способна трижды обернуть земной шар.

Мне хочется написать 5 строчек кода, вместо создания стилей. Я нормален? Везде пишут "Чувак, ксамл стили специально созданы для этого", но нет — я думаю, что созданы для страданий.
Аноним 11/07/22 Пнд 18:02:05 2402741 281
image.png 431Кб, 1657x941
1657x941
>>2402660
> усложняет а не помоагает
Абстракции ради абстракций действительно только усложняют, хотя некоторые рекомендуют их везде использовать. Но в некоторых случаях это жизненно необходимые вещи. В тех же проектах ASP.NET. Ты же не будешь каждый раз тестировать какой-то функционал с реальными сервисами? Тебе нужно подставить тестовые сервисы как раз через внедрение зависимостей. Или, допустим, в игре у тебя может быть много различных сервисов: первый работает с бекендом; второй с аналитикой; третий с платежами; четвёртый подключает фейсбук и другие социальные сети, загружает друзей; пятый грузит функционал стима; и так далее. Чтобы всё безумие нормально тестировать, тебе потребуется внедрение зависимостей.

Есть ещё более сложный пример с архитектурой игры Покемон Го
https://www.youtube.com/watch?v=8hru629dkRY
Аноним 11/07/22 Пнд 18:06:51 2402746 282
>>2402657
Бля, ну это все очевидные вопросы. Зря я стринг в примере использовал. На самом деле возвращал сингл из функции, в которой тупо 2+2. Я очистил код до минимума, чтобы ничего не мешало.

Просто я-то думал, что я в принципе неправильно делаю и что ретёрн напрямую из функции это плохой подход.

Единственное, что я не упомянул, это то, что моя библиотека сконвертирована в unmanaged (просто расставлены точки входа в функции).
Аноним 11/07/22 Пнд 18:13:10 2402754 283
Правильно ли я понимаю, что принцип DI говорит о том, что мы все зависимости объявляем в конструкторах классов, а потом вызываем классы и связываем их друг с другом в Program.cs?
Аноним 11/07/22 Пнд 18:42:43 2402767 284
image 140Кб, 1000x725
1000x725
>>2402741
Внедрение зависимостей и называется, и выглядит как тупое говно, и им же оно и является, если использовать это понятие в узком смузихлёбном смысле, а не в широком (в широком смысле в каждую функцию при её вызове постоянно внедряются зависимости через аргументы).
Диды всё тоже самое делали через define (в шарпе тоже доступно) или через конфиг-файлы, конфиг стринги, да хотя бы просто статик класс или синглтон сделать который скажет инстансу приложения, как и что инициализировать. И всё перечисленное выглядит намного нормальнее и намного менее будет удивлять, чем шизофренический код как слева на картинке.
Аноним 11/07/22 Пнд 18:51:48 2402778 285
Пчелики, угомонитесь со своими принципами, паттернами и прочей хуйнёй. Этим даже в фаанге люди голову не ебут и пишут as is.
Аноним 11/07/22 Пнд 19:04:54 2402788 286
image.png 219Кб, 854x480
854x480
>>2402767
Тяжёлый случай, однако.
Аноним 11/07/22 Пнд 19:54:58 2402848 287
>>2402767
> как слева на картинке.
Мало того что написал какой-то хуеты не относящейся к теме,так еще и говноджавакод в качестве примера приводит.
Аноним 11/07/22 Пнд 20:40:02 2402882 288
2022-07-1120-35[...].png 147Кб, 1692x733
1692x733
Почему в событии OnChecked, несмотря на установленный желтый бэкграунд, у меня какой-то голубой цвет?

Причем форграунд меняется номрально.
Аноним 11/07/22 Пнд 21:33:23 2402952 289
>>2402882
>Почему в событии OnChecked, несмотря на установленный желтый бэкграунд, у меня какой-то голубой цвет?
1. Забилди проект
2. Посмотри внутри тега
3. Покажи скрытый код в #region
Аноним 11/07/22 Пнд 22:12:14 2402985 290
>>2402952
>1. Забилди проект
делал

>2. Посмотри внутри тега
Какого?

>3.Покажи скрытый код в #region
У меня нет региона, и это вообще xaml
Аноним 11/07/22 Пнд 22:24:59 2402987 291
>>2402882
это короче из-за виндовс стилей, типа аэро хуяеро типа такого что-то, не помню
Аноним 11/07/22 Пнд 22:37:01 2402993 292
>>2402987
ааааа, вот прям ненавижу эти ебаные стили.
Аноним 11/07/22 Пнд 22:40:29 2402995 293
>>2402200
Ну да, хуйня, я просто верстать не очень хотел ((
Аноним 11/07/22 Пнд 22:45:25 2403000 294
>>2402985
Твоей кнопки или че там у тя за контрол
Аноним 11/07/22 Пнд 23:12:36 2403009 295
2022-07-1123-08[...].png 3Кб, 483x35
483x35
2022-07-1123-08[...].png 78Кб, 1081x665
1081x665
>>2403000
Ты имеешь виду показать как выглядит свойства экземпляра кнопки? Да там только текст контента (пикрил 1), ну еще биндинг стиля был.

В общем пикрил 2 сделал
Аноним 11/07/22 Пнд 23:33:48 2403026 296
>>2403009
Создай вопрос на ру SO, тебе там очень быстро ответят
Аноним 11/07/22 Пнд 23:36:24 2403027 297
>>2402778
Паттерны еще может быть, а вот без принципов можно написать только наглухо отбитый неподдерживаемый говнокод.
Аноним 12/07/22 Втр 00:20:39 2403047 298
>>2402008
> Ближайший аналог - Unreal Engine.
Ближайший аналог юнити - годот. Там даже кодить на шарпе можно. С анрилом два этих говна не сравнятся.
Аноним 12/07/22 Втр 01:09:48 2403081 299
>>2403047
Юнити в разы превосходит Годот. С Анрилом оно вполне тягается, просто у них задачи разные.
Аноним 12/07/22 Втр 01:19:04 2403084 300
15058216385830.jpg 32Кб, 604x453
604x453
>>2403026
Я лучше подожду, когда эта хуйня издохнет. Надеюсь это будет быстрее, чем скорость ответа на SO. Я бы за потраченное время уже написал миллиард стилей обычным кодом.

Это выше моих сил. Каждый ебаный шаблон имеет свои НЮАНСЫ у каждого элемента, километры соплей вложенных в блевоту - шоб просто изменить цвет рамки. Ну вот если в тексбоксе есть цвет рамки, и в кнопке есть цвет рамки, НУ ТАК СХУЯЛИ шаблоны сука разные должны быть? СХУЯЛИ?

Я не профессиональный анальник, и я эти унижения терпеть не собираюсь!
Аноним 12/07/22 Втр 01:30:43 2403086 301
image.png 1306Кб, 1790x927
1790x927
image.png 1658Кб, 1764x906
1764x906
image.png 866Кб, 1708x833
1708x833
image.png 1582Кб, 1762x877
1762x877
>>2403047
> Ближайший аналог юнити - годот
Клоунидзе, спокуха. Вот лишь небольшая часть игр сделанных на юнити. А на говноте твоём что сделано?
Аноним 12/07/22 Втр 01:39:22 2403090 302
>>2403084
Джоб секурити и защита от вкакотусек.
Аноним 12/07/22 Втр 01:44:09 2403091 303
>>2402738
>WPF стили нужно переосмысливать.
Есть такое. Да, есть возможность задать свой дизайн, но это очень многословно. Да еще рукожопы из мс шаблоны контролов сделали жопно. А стили сами по себе неправильные в плане наследования.
Аноним 12/07/22 Втр 01:46:32 2403093 304
>>2402767
>И всё перечисленное выглядит намного нормальнее
только работает через жопу. 2 разных экземпляра зависимости - хрен тебе, подменить зависимость - хрен тебе, тестирование - соси хрен, тебе же сказали.
Аноним 12/07/22 Втр 05:53:52 2403115 305
>>2402014
> шарп (причем специализированный)
Какой такой специализированный шарп?
>>2402053
> Но в 2К22 вкатываться в проф-геймдев - это хуйня из под коня.
Нихуя. Если тебе это реально интересно, то работа кайф.
Аноним 12/07/22 Втр 08:44:18 2403148 306
>>2403090
Надо больше джоб секюрити. На контур Recrtangle присваиваешь new SolidColorBrush, а на контур Ellipse — new SolidPizdaMamashy. И чтобы изменить толщину линии эллипса, простое присвоение Thickness хуй тебе поможет (ну и что, что есть такое свойство? Ты охуел?), поэтому ты должен пересобрать класс заново. Вот это я понимаю стандартизация и универсальность.

А может это простой бардак. Алсоу, я сейчас пишу плагин для проги, где похожие сектанты вещают точно так же. У них нельзя удалить 3д-модель клавишей delete, и это типа защита от вкатунов. А внутри все элементы интерфейса захардкожены, внутренние скрипты не умеют работать параллельно — новый убивает процесс текущего, а в самом языке отсутствует возможность написания бесконечных циклов. Но это не жопорукость разработчиков, это джоб секюрити.
Аноним 12/07/22 Втр 09:01:48 2403156 307
>>2403148
> внутренние скрипты не умеют работать параллельно
Самое смешное, что в официальном хелпе есть пример написания музыкального плеера, который подразумевает параллельное выполнение на протяжении всей сессии программы. Но добрая часть элементов тоже использует скрипты, поэтому попытка пользоваться программой во время работы плеера к хуям убивает оный. На что разработчики сделали маленькую приписочку, что "из-за однопоточности, работа плеера может вызвать трудности".
Вот это вот классическое американское обтекаемое "может вызвать трудности" применимое к полнейшей невозможности.
Аноним 12/07/22 Втр 09:16:27 2403162 308
А в крестотреде мне рассказывали, что xaml язык богов, и qml у него сосет
Аноним 12/07/22 Втр 09:25:07 2403163 309
Решил тут разобраться в аутентификации всякой, но чёт не понял - а где код, за неё отвечающий? Во всяких доках и гайдах пишут, что код можно менять под себя, лежит он в папке Areas/...
А там нету нихуя
Вот хочу я в юзера поля добавить, группы пользователей поменять или google auth прикрутить, где это можно сделать?
Аноним 12/07/22 Втр 09:58:33 2403172 310
>>2403115
>Какой такой специализированный шарп?
Хуево выразился. Шарп офк тот же самый, но в Юнити своя огромная библиотека. Поэтому тот же бекендер с ноги в Юнити не залетит, придется много чего учить.
Аноним 12/07/22 Втр 10:00:06 2403175 311
>>2402656
>Как лучше всего сейчас работать с REST API из WPF (чистого)?
>Какой из стандартных классов или какой пакет?

Бамп вопросу
Аноним 12/07/22 Втр 10:16:52 2403182 312
>>2403175
А какая свянь между рест и впф?
Аноним 12/07/22 Втр 10:36:48 2403190 313
Аноним 12/07/22 Втр 10:54:37 2403203 314
>>2403182
>>2403190
Интересуюсь что лучше для rest запросов-ответов к использовать с десктопной приложухи
HttpClient или WebClient или может что стороннее будет лучше? Какая лучшая практика для этого?

Дополню вопросом про кэш
Планирую использовать для кэша sqlite в файлике
Но насчет схемы бд решил что пусть будет копией того что на бэке висит + файлы в блоб/байнери хранить
Если у клиента в кэше в дб такая же схема как и в дб на бэке это норм или моветон?
Аноним 12/07/22 Втр 11:02:58 2403217 315
>>2403203
да нет связи десктопности с запросами
берется что нравится
refit например кто любит декларативность, другой рест клиент типа TinyRest или RestSharp
или же тупо HttpClient c json расширением. (но это уже все таки low-level)
или же HttpClient и ручная работа с json

ерунда вопрос же
Аноним 12/07/22 Втр 11:06:01 2403221 316
>>2403203
структура кеша делается для ускорения работы. так что может быть как и "копия бд" аля "работаем оффлайн" (но даже в этом случае нет причин делать 1 к 1), так и вообще "ключ - значение".
Все зависит от потребностей.
Аноним 12/07/22 Втр 11:08:31 2403224 317
>>2403203
лично я использую Tiny.RestClient поскольку часто имею дело с рукожопными апи и строгость декларативности меня ограничивает, а опускаться на уровень HttpClient перебор
Аноним 12/07/22 Втр 11:45:38 2403246 318
>>2403093
Ну вот в примере на Java, если тебе надо поменять зависимость, ты правишь файл service.xxx или хранишь несколько таких файлов.
Что мешает сделать то же самое с конфиг файлом, с дефайнами или наконец с файлом со статик классом, поставляющим зависимость?
Аноним 12/07/22 Втр 11:48:19 2403248 319
>>2403246
единственность зависимости мешает. А если у меня 2 экземпляра потребителя зависимости и каждому нужно своя имплементация зависмости? А менять статик класс вообще жопа - тут статикотипизированный язык
Аноним 12/07/22 Втр 11:48:21 2403249 320
>>2403162
Разве удивительно, что шарпобляди сидят не только в своём треле?
Аноним 12/07/22 Втр 11:53:51 2403253 321
Image 2.png 2Кб, 147x112
147x112
Вот для тех кто смотрит на авалонию пример что с ней не так
шрифты
Аноним 12/07/22 Втр 11:58:56 2403257 322
>>2403253
А там есть Snap to pixels?
Аноним 12/07/22 Втр 12:02:19 2403260 323
>>2403253
А как такими авалониями отображать графику? Например вектор?
Аноним 12/07/22 Втр 12:06:25 2403262 324
А на чём созданы последние версии визуал студио? На WPF? Или у них там своя секретная библиотека.
Аноним 12/07/22 Втр 12:14:23 2403264 325
Аноним 12/07/22 Втр 12:15:06 2403265 326
>>2403257
похоже нет

>>2403260
ну графику то отображай как и в WPF
это со шрифтами беда, они же рендерятся иначе

>>2403262
помесь всего. поверх сях там ты можешь сделать расширение где панелька будет на впф, но в опции тебе придется делать винформс окошко
Аноним 12/07/22 Втр 12:39:58 2403281 327
>>2403217
>да нет связи десктопности с запросами
>берется что нравится
Я понимаю, спрашиваю чем люди пользуются, чем удобнее

>>2403224
Благодарю

>>2403221
Просто мне не охота заново как-либо придумывать структуру
Поэтому интересуюсь если почти 1 в 1 будет не считается ли это дурным тоном
Аноним 12/07/22 Втр 13:15:34 2403317 328
>>2403262
>них там своя секретная библиотека
Думаю да, это же мелкософт, они всю жизнь такие, борьба с конкуренцией.

>>2403264
>На чистом winapi
Вангую у мелкософта есть либы нативно встраивающие winapi в шарп, только вам лохам их не дадут, ебитесь прописывая каждый вызов ручками.
Аноним 12/07/22 Втр 13:28:17 2403338 329
>>2403281
дурным тоном для кого? Это кеш. Как удобно, так и храни.
Аноним 12/07/22 Втр 14:06:20 2403377 330
>>2403317
Может быть для среднего шарписта-кнопкоскруглятеля winapi и является недоступной магией, но для второсортного байтоёба оно весьма просто, примитивно и понятно.
Аноним 12/07/22 Втр 15:02:58 2403460 331
>>2403377
Дело не в сложности, а втом, что майкрософт не дает нормального доступа из шарпа. Но для себя-то за закрытыми дверями по любому имеет, но другим не дает.
Аноним 12/07/22 Втр 15:55:29 2403513 332
Как же хочется вкатиться...
Аноним 12/07/22 Втр 16:27:48 2403573 333
16567616938980.mp4 3495Кб, 1280x720, 00:00:06
1280x720
>>2403513
Вкатывайся. Разрешаю.
Аноним 12/07/22 Втр 16:38:21 2403578 334
Аноним 12/07/22 Втр 16:39:16 2403580 335
Аноним 12/07/22 Втр 16:41:45 2403581 336
Аноним 12/07/22 Втр 17:18:40 2403622 337
>>2403581
а серьезно - не нужен тебе шарп. был бы нужен - ты бы просто его учил, а не спрашивал.
Аноним 12/07/22 Втр 17:22:50 2403628 338
>>2403622
Так я учу, вон 3 книгу уже на 1/5 прочитал. Тяжело просто, поддержите морально.
Аноним 12/07/22 Втр 17:33:44 2403645 339
>>2403628
> Тяжело просто, поддержите морально
И что ты уже освоил? Что можешь написать? Читать без практики бессмысленно. Нужно постоянно программировать.
Аноним 12/07/22 Втр 17:43:04 2403651 340
>>2403645
LINQ могу, таски могу, треды могу, с Http игрался, ща с дотнетом и разором воюю. На кодварсах 5kyu пробую долбить. Ну всякое ооп там, дженерики хуё-моё.
Аноним 12/07/22 Втр 17:44:25 2403654 341
>>2403651
Ну то есть ничего не умеешь.
Аноним 12/07/22 Втр 17:47:17 2403660 342
>>2403654
Это ты так потроллить меня решил?
Аноним 12/07/22 Втр 17:51:17 2403670 343
Посоветуйте библиотеку для создания миниатюр изображений. Нужна скорость, многопоточность.
Аноним 12/07/22 Втр 18:02:45 2403692 344
GC.Collect(n) чистит за поколением n в SOH. А лоха как чистить? GC.Collect(2)?
Аноним 12/07/22 Втр 18:10:43 2403708 345
>>2403692
ну типа да. или спросто Collect()
Аноним 12/07/22 Втр 18:13:39 2403714 346
Аноним 12/07/22 Втр 18:25:15 2403735 347
image.png 424Кб, 600x600
600x600
На почту упало уведомление, о том что епам просмотрел мою заявку на вакансию, которую я отправлял месяца 2 назад.

Сравнил с тем что есть сейчас. Просто пиздец как требования выросли.
Аноним 12/07/22 Втр 19:00:31 2403801 348
>>2403714
так не вызывай. используй сервер с 256 гигов рамы и гоняй на нем консольный калькулятор на шарпе - и вызывать GC.Collect() не придется
Аноним 12/07/22 Втр 19:06:25 2403814 349
>>2403660
Тебе надо учить не отдельные технологии, а программирование. Оно, в свою очередь, учится практикой. Ты мог выучить переменные, условные операторы и циклы с оопом, а после только с помощью этого уже запилить рабочее приложение. Но раз ты уже выучил больше, то пили приложение на асп или на какой стек ты там собрался.
Аноним 12/07/22 Втр 19:14:53 2403825 350
>>2403670
все равно все упрется в "либу что работает с имаджами"
из них Bitmap возможно пойдет лесом ибо почти стал win-only
еще куча отвалится ибо фреймворк старый

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

ну еще есть либы типа opencv, но запускать это на лиунксах как в анекдоте "а теперь попробуем взлететь"

Аноним 12/07/22 Втр 19:19:13 2403831 351
>>2403814
Ну я год фуллстаком отпахал, это считается как программирование?
Аноним 12/07/22 Втр 19:25:41 2403839 352
>>2403831
Так а хули ты тогда вообще? Ты вкатиться можешь с полпинка.
Аноним 12/07/22 Втр 19:26:18 2403842 353
Посоветуйте годный редактор UML-диаграм. Что ни пробую - одна хуйня.
Аноним 12/07/22 Втр 19:28:18 2403844 354
Аноним 12/07/22 Втр 19:31:49 2403851 355
Аноним 12/07/22 Втр 19:36:08 2403860 356
Вот бы тысячу звездочек в репе...
Аноним 12/07/22 Втр 19:40:22 2403866 357
Аноним 12/07/22 Втр 19:57:39 2403884 358
>>2403866
Подписка, лайк, репост.
Лайки = звёздочки
Репосты = форки
Подписки = вотчеры
Аноним 12/07/22 Втр 20:04:02 2403888 359
Аноним 12/07/22 Втр 20:05:05 2403889 360
Аноним 12/07/22 Втр 20:06:31 2403890 361
>>2403888
Пожертвования. Оффер в фаанг.
Аноним 12/07/22 Втр 20:06:31 2403891 362
Аноним 12/07/22 Втр 20:07:19 2403892 363
Аноним 12/07/22 Втр 20:12:48 2403896 364
>>2403851
С нуля вкатываться тяжко, а если ты уже понимаешь за основы кодинга и ооп, как оно там вообще устроено, то тебе по сути надо выучить только синтаксис, фреймворк и немного почитать про около технологии.
Аноним 12/07/22 Втр 20:20:24 2403906 365
>>2403844
А кроссплатформенные и бесплатные варианты есть?
Аноним 12/07/22 Втр 20:34:43 2403923 366
>>2403906
Зачем тебе кроссплатформенность?
Аноним 12/07/22 Втр 20:36:23 2403927 367
Аноним 12/07/22 Втр 20:37:42 2403929 368
Аноним 12/07/22 Втр 20:39:25 2403931 369
Аноним 12/07/22 Втр 20:44:12 2403934 370
>>2403931
Почему ты пользуешься прошивкой для роутера на десктопе?
Аноним 12/07/22 Втр 20:47:25 2403937 371
>>2403934
>Почему ты пользуешься микроконтроллерами?
>Почему ты пользуешься серверами?
>Почему ты пользуешься телефоном?
>Почему ты пользуешься телевизором?
>Почему ты пользуешься автомобилем?
Аноним 12/07/22 Втр 20:48:44 2403938 372
>>2403934
Посоветуй годный UML-редактор для роутеров, чтобы 192.168.0.1, admin, admin, хуяк - и UML.
Аноним 12/07/22 Втр 20:58:05 2403947 373
>>2403923
>>2403931
Благодарю, что ответил за меня. Таки именно для линукса. Но и на виндовых и мак машинах может пригодиться.
Аноним 12/07/22 Втр 22:27:31 2404002 374
>>2403896
Ну так то да. Ладно, ща кофе наверну и пойду превозмогать далее.
Аноним 12/07/22 Втр 22:44:57 2404009 375
А все эти using который автоматом подставляются они разве никак на производительность/финальный размер бандла не влияют? Думается мне лучше ручками прописывать только то, что тебе нужно.
Аноним 12/07/22 Втр 22:48:00 2404013 376
>>2404009
Не влияют. И с вопросами про производительность/размер иди в C++, здесь всем поебать, запускается и ладно.
Аноним 12/07/22 Втр 22:52:18 2404021 377
>>2404013
>И с вопросами про производительность/размер иди в C++, здесь всем поебать, запускается и ладно
Я и так оттуда. И не вижу ни одной причины чтобы сразу не научиться делать всё правильно и качественно. С хорошо работающим кодом и работать приятно.
Аноним 12/07/22 Втр 22:56:05 2404028 378
>>2404021
Здесь есть технические ограничения платформы и рантайма, выше которых не прыгнешь. А в крестах ты ограничен только процессором.
Аноним 12/07/22 Втр 22:57:00 2404029 379
image.png 12Кб, 432x200
432x200
>>2404009
Вообще никак не влияет. На размер влияют подключенные библиотеки. Если работаешь в студии, то использую пикрелейтед команду, чтобы держать порядок в коде.
Аноним 12/07/22 Втр 22:57:05 2404030 380
>>2404009
Непроставленный using наоборот может ухудшить производительность, а именно замедлить сборку мусора, так как незачищенный объект, у которого есть финализатор, придется во время сборки мусора финализировать. Лучше задиспозить его сразу.
Аноним 12/07/22 Втр 22:57:44 2404031 381
>>2404030
Блэд, не про тот using подумал, соре
Аноним 13/07/22 Срд 00:21:34 2404109 382
>>2404028
Прыгнешь, если юзать хаки и ансейф код
Аноним 13/07/22 Срд 00:44:27 2404112 383
>>2404109
Проще писать на предназначенном для этого языке, будет правильно и качественно. Так-то и на петухоне можно грузить нативные DLL-ки и ебаться с ними ради перформанса.
Аноним 13/07/22 Срд 01:47:24 2404128 384
>>2404112
Скажи это тем, кто пишет прошивки на питоне и гуи на js.
Аноним 13/07/22 Срд 10:47:18 2404211 385
Пиздец, блять, вчера весь день писал код и всё было норм. Сегодня открываю и такая хуйня: The type or namespace name 'AspNet' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) Как это говно пофиксить блять, на со и прочем говне одно говно а не решения.
Аноним 13/07/22 Срд 11:15:15 2404226 386
>>2404211
Студия 2022?
Если так, то обнови до последней версии и поотключай все ненужные расширения (лучше вообще все, кроме самых важных).
Там есть какая-то ебала, из-за чего она может неожиданно взять и потерять все референсы в проекте.
Аноним 13/07/22 Срд 11:37:59 2404238 387
Аноним 13/07/22 Срд 11:44:18 2404246 388
>>2404226
Да не, я линуксоид с вимом.
>>2404238
Хз что за хуйня и как это работает но помогла замена AspNet на AspNetCore.
Аноним 13/07/22 Срд 12:42:48 2404301 389
>>2404246
Закрой VS, открой папку с проектом, удали папку .vs, запусти проект заново.
Если нету папки .vs, значит нужно включить отображение скрытых файлов и папок.
Аноним 13/07/22 Срд 13:41:05 2404361 390
image 91Кб, 994x435
994x435
>>2403735
>требования выросли
Был период бума айти, лет 8-10 назад, когда каждому ИП Гаранян стал нужен свой сайт с интернет-магазином и прочими интеграциями. Тренд подхватили буквально все, от банков до крупных промышленников, все стали набирать айтишников. Спрос был взрывной и чтобы закрывать эти дыры, стали брать в айти кого-попало, кто хоть что-то может. Даже продукты уровня лаба по информатике в 9Б стали продаваться как горячие пирожки. Стало очень выгодно открыть IT-шарагу, набрать туда сброд и пусть они пилят сайты, который хоть как-то можно продать, демпингуя ценой.
Но рынок давно уже в стадии остывания, он перенасыщен. Говно - уже не продать. Сложные и уникальные решения под заказ уступают место простоте, минимализму и стандартным решениям. Даже дата-питухам стали показывать на дверь, т.к. во-первых, мало кто из компаний на самом деле имеет достаточное количество данных, а во-вторых, слишком много проходимцев, которые для начальства показывают петухон, а сами втихаря линейные тренды в екселе строят.
Как итог, в 2к22 экспресс-вкат в программирование для соответствования рыночным требованиям реально занимает от 2 лет. Даже продавцы курсов уже не обещают вкатить вас за 3 месяца. Реально указывают сроки - 24 месяца. И если почитать отзывы на том же хабре от людей, которые не имели кодерского бекграунда, там реально приходится пахать и не спать ночами, тратя в день по 6-8 часов, что становится невыполнимым квестом при обучении без отрыва от основной работы.
По факту мы видим, что рынку больше не нужны IT-джамшуты, а срок обучения программированию до начального профессионального уровня приблизился к сроку обучения в ВУЗе. В принципе, если из программы ВУЗа убрать физкультуру, философию, физику и электронику, основательно почистить математику, основательно почистить абстрактные компьютерные науки, то как раз бакалавриат сократится до 2.5-3 лет, что и имеем сейчас для вката с нуля (не важно, через курсы или самостоятельно).
Времена, когда можно было выучить С++ за 21 день и вкатиться, прошли.
Аноним 13/07/22 Срд 13:45:18 2404369 391
>>2403460
>не дает нормального доступа из шарпа
Доступ ровно такой же, как из C++.
Вот на этом сайте pinvoke (точка) net есть 99% всех WinAPI функций, которые для тупого шарписта прокомментированы и обернуты в шарп AS IS.
Я как-то сам подобное делал для себя для одной хитрой задачи, оборачивая нужные WinAPI в нормальном ООП стиле.
Аноним 13/07/22 Срд 13:52:04 2404374 392
>>2404361
Хуя какой ты толстый краб. Если что и перегрето так только веб. А помимо него так-то дохуя других сфер есть в которых конкретный такой голод. Мы к себе в фирму 5 месяц не можем найти годного мидла плюсовика.
Аноним 13/07/22 Срд 14:28:15 2404426 393
>>2404374
деньги платить пробовали?
Аноним 13/07/22 Срд 14:35:40 2404433 394
>>2404426
Пробовали. Всё равно большая часть вчерашние выкатцы из онлайн курсов и те, кто несут дичь.
Аноним 13/07/22 Срд 14:40:19 2404441 395
>>2404433
Попробуй ещё. Только на этот раз постарайся получше. Я в такой же нищуковой конторе работал и там тех дир точно так же был убежден что условия у него охуенные. По факту было ниже в 2-3 раза средних зп в ДС.
Аноним 13/07/22 Срд 14:45:00 2404452 396
>>2404433
да, скорее всего у вас "хорошие условия! кипяток бесплатно, раз в год повышаем зп на 0,004%, даём льготный проездной на троллейбус"
Аноним 13/07/22 Срд 15:02:23 2404483 397
>>2404441
>>2404452
Мне вообще до пизды, я простой разраб не лид, не дир. Но у меня в мои мидловые годы таких условий и вилок не было.
Аноним 13/07/22 Срд 15:23:28 2404510 398
>>2404374
Вот этот птичий язык "не можем найти специалиста", "отрасли не хватает 200 тыщщ айтишников", "на стройках не хватает 500 тыщ специалистов", "на заводах не хватает миллион рабочих рук" означает, что жадный пидор-буржуй не хочет платить рыночную зп, не может удовлетворить свой спрос на труд своим предложением оплаты. За 500к закрывается любая вакансия, так-то. Но капиталист хочет административными методами и мерами принуждения заставить людей работать на кабальных условиях.
Если вы не можете на рынке труда найти чела на свою зп, то значит ваше предложение не релевантно.
Да и вообще, смысл идти в плюсы в 2к22. Плюсы и так перенасыщенными проперженными токсичными дедами с запредельным ЧСВ, мол, в наше время... а сейчас зумерье-смузихлебы пошли... Так ещё и порог входа в плюсы завышенный, и зп при аналогичном опыте самая низкая по рынку. И язык древний и дышит на ладан. И лапши, и говнокода в нём в разы больше, особенно мелкие васянопроекты, они всегда ужасны. И культура разработки очень часто сугубо локальная и оторванная от мировых трендов. Вышел С++ 23? Не, не слышали, у нас Михал Петрович его не принял, у нас С++ 98. И рынок вакансий максимально уёбищен. На условном JS ты даже в мухосрани всегда будешь иметь выбор работы. А на плюсах скорее всего это будет завод и... всё.
Поэтому в плюсы нормис не пойдёт. А если нужен плюсовик, плати х2 от зп на дж на той же позиции. Но ведь никто не будет столько платить. Плюсовик работает медленно, его время очень сложно окупить. Проще выгнать на мороз 3 плюсовиков и нанять одного дотнетчика.
Аноним 13/07/22 Срд 15:30:49 2404525 399
Аноним 13/07/22 Срд 15:39:37 2404543 400
Аноним 13/07/22 Срд 15:45:42 2404554 401
>>2404543
Могу за тебя заплатить только если ты красивая тян.
Аноним 13/07/22 Срд 15:50:36 2404561 402
>>2404554
Ты только учти что по канону бывают и тян мужского рода.
Аноним 13/07/22 Срд 15:54:19 2404568 403
>>2404561
У нас с тобой разные каноны
Аноним 13/07/22 Срд 16:07:06 2404585 404
>>2404568
Канон по определению один.
Аноним 13/07/22 Срд 16:09:26 2404587 405
Аноним 13/07/22 Срд 16:45:06 2404639 406
Когда-то давно, лет может 5 назад, был популярен С++ CLI, который мог свободно использовать все дотнетовские либы. И на нём можно было писать более производительный код, полностью совместимый с дотнетом и шарпом. И можно было на нём как самому управлять памятью как в классическом С++, так и делать managed объекты, чтобы GC заботился о них.
А как сейчас обстоят дела с С++ CLI? Он давно умер или же жив, актуален, развивается?
Аноним 13/07/22 Срд 17:11:17 2404675 407
>>2404639
Толсто. Этот кал никогда не был популярен т.к. унаследовал неудбоство С++ а управлямый код все равно под шарпом лучше писать.
Аноним 14/07/22 Чтв 01:11:49 2404911 408
>>2404639
> лет может 5 назад
Скорее лет 15 назад.
Аноним 14/07/22 Чтв 01:55:36 2404917 409
Что нибудь про документацию узнали?
Аноним 14/07/22 Чтв 02:03:05 2404918 410
>>2404917
Узнали, но тебе не скажем.
Аноним 14/07/22 Чтв 03:09:02 2404925 411
>>2399284 (OP)
Расскажите мне про три вещи:

- Асинхронность.
- Многопоточность.
- Параллелизм.

async/await распараллеливает потоки, создает потоки или что?
Thread создает поток синхронный? Проще говоря, в потоке - функции выполняются синхронно?
Аноним 14/07/22 Чтв 03:14:31 2404927 412
>>2404374
А меня возьмут? На плюсах разве что моды делал на сурс движок.
Шарю за низкоуровневую архитектуру.
Как устроен проц и как работает стэк, куча, указатели. Опыт в Reverse Engineering, чуть ближе к среднему наверное, шарю за виртуальные таблицы.
Но в С++ дальше вот виртуальной памяти и написания драйверов не заходил.
Знания на С++ можно сказать "поверхностные", потому что работал только с указателями, классами.

На сколько мои знания можно оценить, на джуниора сгожусь?
Аноним 14/07/22 Чтв 03:39:24 2404929 413
>>2404374
>Мы к себе в фирму 5 месяц не можем найти годного мидла плюсовика.

Кекус , так все годные вдарили по тапкам нахуй из мордора, примерно как раз 5 месяцев назад.

Сказать, когда найдёте годного плюсовика? когда война кончится
Аноним 14/07/22 Чтв 03:43:46 2404930 414
>>2404927
В штатах от 150К. Ща идет великое ударное переписывание всякого имбед-легаси-говна, на любые процы, которые не в Тайване производятся. От авто и ракет, до вибраторов и унитазов.

Бояре Сишники пануют.
Аноним 14/07/22 Чтв 05:02:54 2404935 415
>>2404925
>Расскажите мне про три вещи:
Это квазиунофантастика, ну то есть всем понятно

>async/await распараллеливает потоки, создает потоки или что?
как и Task не имеет НИКАКОГО отношения к потокам. Является сахаром для кода вида (который в языках без асинков выглядит так)

DoSomething().Then(callback)

чтобы код выглядел как будто обычный. Компилятор преобразует метод помеченный async в конечный автомат ака объект с методами, которые он дергает когда приходит их время await (звучит сложно, но на деле тоже очень просто - посмотри на обычную ручную реализацию итератора, подобный подход же, даже в языках без async но с итераторами их и используют как замену)
Аноним 14/07/22 Чтв 06:50:43 2404945 416
>>2399284 (OP)
Анон, как этот код https://github.com/mono/mono/tree/main/mcs/class/Mono.Data.Sqlite
скомпилировать в Mono.Data.Sqlite.dll ?
Я не вижу там .csproj и .sln файла.
.NET 4.0
Может кто переебенить это всё в отдельное репо, чтобы оно именно dll-ку эту ебучую выдавало на выходе?
Аноним 14/07/22 Чтв 09:11:24 2404960 417
>>2404927
>на джуниора сгожусь
Если ты можешь взять реальную бизнес задачу и начать ее выполнять дрегая своего лида/наставника не более 2-х раз в день на 10 минут максимум, тогда годишься.
Аноним 14/07/22 Чтв 09:30:21 2404962 418
>>2404945
Тебе не нужно это компилировать, подключи в references проекта dll (там поиск есть), или попробуй через nuget пакеты
Аноним 14/07/22 Чтв 09:30:53 2404963 419
>>2404960
>Если ты можешь взять реальную бизнес задачу и начать ее выполнять дрегая своего лида/наставника не более 2-х раз в день на 10 минут максимум, тогда годишься.
Ураа, я джун!
Аноним 14/07/22 Чтв 10:06:40 2404971 420
>>2404960
Нахуя мне дёргать своего лида/наставника если у меня есть интернет и голова на плечах?
Аноним 14/07/22 Чтв 11:27:20 2404998 421
>>2404971
Потому что могут быть неочевидные/не особо задокументированные внутренние штуки
Аноним 14/07/22 Чтв 11:33:10 2405001 422
>>2404998
А я достаточно зрелый спец чтобы и с таким самостоятельно разобраться.
Аноним 14/07/22 Чтв 12:01:00 2405021 423
>>2405001
Ты кал. Мог бы разобраться, уже разобрался бы.
Аноним 14/07/22 Чтв 12:04:27 2405024 424
А можно как-то на ходу заблокировать параметр, чтобы его невозможно было перезаписать? Т.е. в одном экземпляре класса он у меня ReadOnly, а в другом — нет.

Подойдет блокировка на этапе создания экземпляра т.к. далее меняться не будет.
Аноним 14/07/22 Чтв 12:16:51 2405034 425
Аноним 14/07/22 Чтв 12:23:20 2405040 426
Аноним 14/07/22 Чтв 12:33:55 2405044 427
>>2405021
Спокойно разбираюсь. Доёбывайся до кого-нибудь другого, быдло.
Аноним 14/07/22 Чтв 12:47:41 2405049 428
>>2405044
[проводит шершавым по губам собеседника]

Cудя по дебильным вопросам ты - ебанько.
Аноним 14/07/22 Чтв 12:57:29 2405060 429
>>2404962
Да не, я хочу сам бирарь из сореца как-то получить, и сам сорец вклеить, а то бинарь кидать к коду как-то не очень опенсорцно, к тому же в бинаре могут быть бекдоры и трояны всякие, хуй знает что там вшито в этот пре-компиленный бинарь. Код вроде есть, а как сбилдить - хз. Чё, всё моно тянуть, блядь?
Ещё и
>make get-monolite-latest
качает хуй знает что.

Или можно как-то именно это вот Mono.Data.Sqlite, отдельно сделать, чтобы не ебать себе мозг? Сорец вроде полный, но это не точно. И нет ни .csproj, ни .sln файла, блядь. Как создать - хз. Кто-нить может потыкать эту хуйню?
Аноним 14/07/22 Чтв 13:02:04 2405070 430
Поясните за atomic
Аноним 14/07/22 Чтв 13:17:05 2405089 431
>>2405070
atomic - слово из 6 букв, начинается на a, а заканчивается на c

зы: какой вопрос такой и ответ
Аноним 14/07/22 Чтв 13:18:00 2405092 432
>>2405089
Не кукарекай, вниманиеблядь.
Аноним 14/07/22 Чтв 13:23:00 2405096 433
>>2405092
>Не кукарекай, вниманиеблядь.
это тоже пояснять?
Аноним 14/07/22 Чтв 13:25:24 2405098 434
>>2405096
Тут всё и без твоих комментариев ясно.
Аноним 14/07/22 Чтв 13:35:59 2405103 435
>>2404971
Например вопросы из серии "Почему было использовано именно это решение, а не другое" там где это не очевидно. Например у заказчика было такое желание левой пятки или архитектура смежных процессов навязывает такое решение и т.д.
Ну или бывают стандартные вопросы "Чувак тут какой-то чел мне указания дает. Его можно сразу послать нахуй или не стоит, т.к. это гендир?"
Аноним 14/07/22 Чтв 13:38:02 2405104 436
>>2405024
>Т.е. в одном экземпляре класса он у меня ReadOnly, а в другом — нет.
Ну так сделай его в другом тоже ReadOnly, или через свойство сеттер заблокируй.
Аноним 14/07/22 Чтв 13:51:02 2405115 437
>>2404971
наставник это вещь. самый быстрый способ обучения, даже если ты 100 раз зрелый. Он просто тупо покажет как надо и сэкономит тучу времени.
Аноним 14/07/22 Чтв 13:56:25 2405120 438
>>2405103
Лiл, какой ещё такой гендир? Я удалёнщик, джентельмен удачи. Просыпаюсь в 11AM, кушаю, лениво захожу на доску на которую мне ПМ и точка заботливо залила новых тасок. Пишу код 2 часа, трекаю 6, пишу фронту мол, хуйня готова, чекай свагу. И всё, никаких тебе созвонов, никаких вопросов "а почему?" и т.д.
>>2405115
Зачем мне субъективное мнение какого-то хуя, если я могу в интернете прочитать несколько разных точек зрения на вопрос n и выбрать свою позицию?
Аноним 14/07/22 Чтв 14:11:24 2405129 439
>>2405120
изначальный вопрос был про джуна.
Аноним 14/07/22 Чтв 14:15:31 2405131 440
>>2405129
Ну типо. Я премидл aka джун+, самостоятельно делаю 100% задач, что со мной не так?
Аноним 14/07/22 Чтв 14:18:29 2405133 441
>>2405131
тебе УЖЕ показали как должно быть и чего от тебя ожидают. И ты достаточно накодился чтобы потом тебе по шапке на ревью не давали.
Да и задачи тебе дают под твои скилы. Локфри многопоток с хай лоадом тебя писать не просят.
Аноним 14/07/22 Чтв 14:22:27 2405137 442
>>2405133
>тебе УЖЕ показали как должно быть и чего от тебя ожидают.
Нихуя мне не показывали, я до этого сам ебашил книги, курсы и практику. С ревью конечно по началу меня ебали, но сейчас все эти моменты я пофиксил.
>Да и задачи тебе дают под твои скилы.
Самые разные. На мне сейчас 5 проектов.
>Локфри многопоток с хай лоадом тебя писать не просят.
Это же тааааааааааак сложно.
Аноним 14/07/22 Чтв 14:28:12 2405143 443
>>2405137
>С ревью конечно по началу меня ебали, но сейчас все эти моменты я пофиксил.
это и есть работа с наставником. Только вместо "пойду спрошу как надо" тебе сами говорят "как надо", просто с матами и затрещинами.
Результат одинаков )

>Это же тааааааааааак сложно.
Еще как.

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











Аноним 14/07/22 Чтв 14:29:01 2405144 444
>>2405143
суко гребаный знак мешающий печатать. в итоге заранее приходится набивать пустые строки, а потом забываю их удалить
Аноним 14/07/22 Чтв 14:38:37 2405155 445
>>2405143
>просто с матами и затрещинами.
Да нет, обычный рабочий процесс где ты и не дурак, но и не в курсе всех тонкостей.
>Еще как.
Ну типо, поэтому я и написал "читаю несколько источников" а не принимаю на веру первый попавшийся.
Аноним 14/07/22 Чтв 14:43:44 2405160 446
>>2405060
Ну тогда надо скачать всю хуйню, перейти к csproj файлу открыть консольку и написать dotnet build
Аноним 14/07/22 Чтв 15:06:41 2405179 447
>>2404960
Наверное смогу, гугол то мне на что? Как то же я сам этому научился. Читал книги, гуглил, там все ответы есть.
Аноним 14/07/22 Чтв 15:12:56 2405196 448
>>2404935
Я не спрашивал как устроен async/await, то что это state machine Task я знаю. Тут вопрос в том как работает сам Task? Вот так мне надо было вопрос поставить. Смотрел на гитхабе что это ThreadPool, но тредпул это что? Он создает потоки? Вижу ты пишешь что нет, тогда что оно делает, как он взаимодействует вообще с потоками, откуда он их берет.

И то что async/await появился первым в сишарпе и об этом знаю.
Аноним 14/07/22 Чтв 15:29:58 2405239 449
>>2405196
Ну смотри. Допустим ты запускаешь что то асинхронное и передаешь калбэк, чтобы в конце работы его дернули. Но калбэк неудобен, его нельзя вернуть или поменять его расположение.
Поэтому немного изменяется что вместо принятия калбэка асинхронный метод вручает тебе специальный объект и у этого объекта и будет в конце работы изменен статус ну и результат выставлен.
И ты можешь подписаться на изменение статуса этого объекта и сам объект передать куда то
Вот это и есть Task/Future/Promise/Defer. Это просто обещание что по концу операции там будет нужный статус и результат (если есть)
и все.

Он ничего не знает про потоки. Он, как и CancellationToken, всего лишь токен с состоянием и возможностью подписаться на изменение состояния.

А работой в потоках заведуют другие места
ThreadPool - создает фоновые потоки в которых выполняет задачи. Создавать потоки дорого, поэтому этот пул потоков их переиспользует.
Task.Factory.StartNew и Task.Run() - которые планируют задачу в тредупуле (по дефолту)
await, который доверяет решать где выполнять контексту синхронизации иначе пихает в тредпул.
TaskCompletionSource - вообще никаких потоков.
Аноним 14/07/22 Чтв 15:33:04 2405241 450
>>2405044
ИМХО ты лузер не умеющий программировать. Правильно тим лиды делают что тебя отбривают каждый раз.
Аноним 14/07/22 Чтв 15:45:45 2405258 451
>>2405241
Твоё ИМХО не более чем О, чел. Я работаю 8 месяц.
Аноним 14/07/22 Чтв 16:05:08 2405293 452
>>2405179
Ну значит иди и работай. Устроишься джуном - расскажешь.
Аноним 14/07/22 Чтв 18:32:09 2405432 453
>>2405239
Спасибо анон, плюс минус понял. Узнал что-то новое.
Аноним 14/07/22 Чтв 18:41:19 2405438 454
Rlq15ehVQJE.jpg 266Кб, 720x1096
720x1096
Аноним 14/07/22 Чтв 19:10:32 2405451 455
>>2405438
Тебе заняться нечем?
Аноним 14/07/22 Чтв 20:18:53 2405494 456
>>2404935
>DoSomething().Then(callback)
Не понимаю смысла этого кода. Это же то же самое что
DoSomething()
callback()
Ведь пока не отработает DoSomething() всё равно программа будет висеть, поток-то один.

Тут явно что-то не так. Каким образом реализуется параллельность? Если не потоки, тогда должна быть их эмуляция так или иначе.
Аноним 14/07/22 Чтв 20:30:35 2405499 457
>>2405494
она будет висеть если DoSomething() блокирующий. Когда говорим про асинхронность - функции неблокирующие (иначе и нет асинхронности). Почему они не блокируют текущий поток - дело десятое.

Даже если один поток в системе (пусть будет жаваскрипт это) то в системе есть неблокирующие I/O. то есть когда читается файл или идет запрос в сеть, то поток не останавливается ждать.
Поэтому в твоем примере калбэк будет вызван сразу, а не как продолжение DoSomething()


Аноним 14/07/22 Чтв 20:34:48 2405502 458
>>2405494
мой DoSomething().Then(callback) это буквально

DoSomething().ContinueWith(callback)
Аноним 14/07/22 Чтв 20:35:01 2405504 459
>>2405499
>Почему они не блокируют текущий поток - дело десятое.
Попробуй ты так на собесе ответить
Аноним 14/07/22 Чтв 20:39:05 2405506 460
Аноним 14/07/22 Чтв 20:39:31 2405507 461
>>2405504
Легко. На уровне "мне вручили таск и не заблокировали мой поток" знание "почему не заблокировали" не нужно.

Внутри может быть сетевой запрос, отдельный поток (из пула или нет), а может даже отдельный процесс, или таймер с TaskCompletionSource - мне то какое до этого дело? А никакого. Это внутренние детали реализации, а я работаю с контрактом.
Аноним 14/07/22 Чтв 20:41:50 2405508 462
>>2405506
>>2405507
Раз уж взялись отвечать на вопросы зелени, так делайте это качественно. А не так, чтобы чувачок потом пришёл, а его хихикая про сабж спрашивают а он потеет и что-то там про рантайм мямлит.
Аноним 14/07/22 Чтв 20:45:16 2405510 463
>>2405507
качественно это в инете. Там тонны мануалов
но если чел не понял и спрашивает, значит он хочет простое объяснение которое принесет ему понимание. Понимание сути - основа обучения. Если не понял основ - никуда не уедешь, а с основами и гугл научит легко

И я пытаюсь показать на ежиках, а не готовлю к собесу
14/07/22 Чтв 21:38:41 2405539 464
>>2399284 (OP)
Как включить c# 9.0,у меня просто напросто не получается это сделать (я профан),установил net 5,и 6.......Помогите пожайлуста.
Аноним 14/07/22 Чтв 21:50:33 2405553 465
image.png 960Кб, 1280x720
1280x720
Какие недостатки у шарпа или дотнета?
Аноним 14/07/22 Чтв 23:07:48 2405620 466
Структуры или классы?
И вообще когда аллочиться на стеке а когда на куче?
Аноним 14/07/22 Чтв 23:19:10 2405628 467
>>2405553
Их нет, это лучшие язык и платформа, очевидно же.

>>2405620
Погугли случаи, когда стоит использовать структуры. Но в целом это очень редкое явление, ибо слишком много подводных.
Аноним 14/07/22 Чтв 23:51:31 2405651 468
>>2405620
Структура - это тот же класс, но с модификатором доступа public: по умолчанию.
Аноним 14/07/22 Чтв 23:51:55 2405653 469
А блять, это же тред про шарп.
Аноним 14/07/22 Чтв 23:52:23 2405655 470
Аноним 15/07/22 Птн 00:59:03 2405705 471
Бля, хочу вкатится, но никак не могу найти инфу по документации. Кто нибудь слышал что нибудь про ъто?
Аноним 15/07/22 Птн 01:00:23 2405707 472
>>2405620
Структуры это вэлью тип
Классы это референс тип
Аноним 15/07/22 Птн 01:00:52 2405708 473
>>2405705
Доступ к msdn только для премиум-пользователей по подписке, подписку оплачивает работодатель.
Аноним 15/07/22 Птн 01:14:43 2405722 474
Аноним 15/07/22 Птн 02:30:55 2405785 475
>>2403086
Godot лучше тем что весит мало и на нем не только игры можно делать, а еще и приложения ага.
А еще он лучше тем что открытый исходный код и лицензия MIT.

Так что да, с выходом Godot 4 он может и трахнуть этот ваш unity.
Аноним 15/07/22 Птн 02:35:49 2405786 476
>>2405553
Единственный минус который я увидел это разный синтаксический сахар, напузыривание всякой хуетой языка, а так язык просто отличный.
Аноним 15/07/22 Птн 04:49:22 2405808 477
>>2405553
смотря что считать недостатками.
Аноним 15/07/22 Птн 05:50:21 2405810 478
Сначала:
>>2404935
>Task не имеет НИКАКОГО отношения к потокам

Потом:
>>2405507
>Внутри может быть отдельный поток
>а может даже отдельный процесс

))))
Аноним 15/07/22 Птн 06:26:21 2405815 479
>>2405810
Потому что смешиваются понятия.

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

Они не имеют никакого отношения к потокам. Они говорят про выделение отдельных кусков кода (ака задачи) и ассоциацию с ними специального токена для наблюдения. Для унификации работы с этим. Есть тут где-нибудь хоть намек на то, где и как она будет выполнена? НЕТ

А дальше ведь понятно что их можно запускать, то есть можно "запустить таску", ведь по факту она кусок кода.
Есть тут где-нибудь хоть намек на то, где и как она будет выполнена? НЕТ
Просто что она будет выполнена, но не как.
"запустить таску"==="выполнить таску" а не "выполнить в тредпуле"

Концепция деления на задачи и выполнения этих задач - перпендикулярны.

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

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


Аноним 15/07/22 Птн 07:55:44 2405846 480
>>2405815
Ты пишешь бессмыслицу.
>возьмем кусок кода, который мы хотим ожидать окончания его выполнения, нарекем его таском(задачей) и ассоциируем с ним специальный объект
В одном потоке только одна нить выполнения кода, поэтому концепции "ожидания выполнения куска кода" не существует. Код просто выполняется, как он написан, линейно сверху-вниз, ты можешь "ждать" только вставив sleep(), но тогда ничего не выполняется, просто твоя нить кода прекращает работу на некоторое время.

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

Таким образом, вся эта кухня имеет САМОЕ ПРЯМОЕ отношение к потокам, потому что так реализуется параллельность в компьютере, не может существовать без потоков или их эмуляции.

Таким образом, ЭТО И ЕСТЬ ПОТОКИ, только не обычные потоки, а специальные синхронизированные потоки под капотом средствами самого языка. Всего лишь сахар НАД ПОТОКАМИ.

А ты говоришь
>Task не имеет НИКАКОГО отношения к потокам
Чушь.
Аноним 15/07/22 Птн 08:26:20 2405861 481
>>2405846
> вся эта кухня имеет САМОЕ ПРЯМОЕ отношение к потокам
>Таким образом, ЭТО И ЕСТЬ ПОТОКИ, только не обычные потоки, а специальные синхронизированные потоки под капотом средствами самого языка
нет не имеет. Нет никаких спец потоков. TPL не сахар над потоками. TPL это просто реализация корутин
Это концепт определяющий деление кода на блоки, которые работают асинхронно, планирование очередности их выполнения, связи между ними
Это просто правила структурирования сопрограм и работы с ними (ожидание, статус, результат)

То есть таски это "вот это должно быть выполнено после этого" и "статус выполнения и результат будут в объекте Task"

Само собой корутины должны не только делиться, а и выполняться. И поэтому в TPL есть дефолтный "выполнятор" - дефолтный TaskScheduler выполняет эти корутины в тредпуле.
и утилитные методы Task.Run() и Task.Factory.StartNew()

Но это всего лишь дефолтная реализация выполнения. Концепция корутин никак не затрагивает вопрос "как именно будет выполняться корутина" - ей ПОХЕР. Важно лишь, что она будет вообще выполнена, очередность и возвращает Task

А поэтому отлично работают планировщики в 1 потоке (GUI), ожидания задач запущенных в других процессах. А также
>не может существовать без потоков или их эмуляции.
TaskCompletionSource никаких потоков не эмулирует. Он всего лишь выставляет статус у Task )
Аноним 15/07/22 Птн 08:31:44 2405863 482
>>2405846
упс. забыл. так что уточню
"и работы с ними (ожидание, статус, результат)"
следует читать как
"и работы с ними (ПРИОСТАНОВКА, ожидание, статус, результат)"

приостановка и продолжение - одна из ключевых частей концепции корутин
Аноним 15/07/22 Птн 08:43:11 2405869 483
>>2405786
>это разный синтаксический сахар, напузыривание всякой хуетой языка,
Притом не это само по себе, а то что пытаются притащить всякую хуету из языков со динамической и слабой типизацией.
Аноним 15/07/22 Птн 08:45:27 2405870 484
То есть таски, наоборот, АБСТРАГИРУЮТ от деталей выполнения.

var result = await DoSomething()

абстрагирован от деталей выполнения этого самого DoSomething(). внутри этого метода могут использоваться тредпул, потом заменены на foreground поток, а потом быть заменены на процессы или на таймеры с TaskCompletionSource - `var result = await ` продолжит работать не замечая этих изменений.

Даже .ContinueWith не выбивается из этой канвы "выполнение не мое дело", поскольку не сама занимается выполнением продложения, а доверяет это TaskScheduler-у (который можно подменить просто передав свой)
Аноним 15/07/22 Птн 09:15:09 2405884 485
>>2405861
>корутин
>асинхронно
>планирование
Это и есть потоки. Так они и работают, ведь процессоров на всё явно не хватит, вот и эмулируется выполняя по кускам там и сям, получая искусственную параллельность. Этот "выполнятор" находится в ядре ОС, производя потоки, так же как в C# такой же "выполнятор" делает те же самые потоки. Иначе параллельности просто не бывает, как концепция не может существовать в одной нити выполнения.

Ты ошибочно считаешь за поток только системные потоки от ОС, однако совершенно игнорируешь что C# у себя делает то же самое, та же машина потоков там работает, только обозвано по-другому. Но как поток ни назови, это всё равно поток.

Ну а задание "выполни это после того", это лишь сахар для удобства, ничего особенного, никакой концепцией не является.
Аноним 15/07/22 Птн 09:28:53 2405889 486
>>2405884
Ёбу дал? Это более высокий уровень абстракции позволяющий формально доказывать корректность программы например. У тебя мышление слишком баётоёбское и приземлённое какое-то.
Аноним 15/07/22 Птн 09:30:12 2405891 487
>>2405884
>Это и есть потоки.
не вижу тут потоков. Асинхронность - всего лишь обещание не блокировать выполнение в данном месте.
Планирование - всего лишь правила очередности чтобы не перепутались
корутины - это блоки кода которые могут приостановиться и продолжить свою работу

нет тут никаких потоков. Асинхронные структуры построены на TaskCompletionSource и не используют никаких потоков (даже I/O)
Process.WaitForExitAsync() какие потоки использует? Там работает процесс. Продолжение типа будет в потоке? так это уже другая корутина будет. И то, где она будет, тоже можно переопределить (свой TaskScheduler или контекст синхронизации)

>задание "выполни это после того", это лишь сахар для удобства
у тебя смешались мухи и котлеты и кони до кучи.
как концепция может быть сахаром. "выполни это после того" это сахар для чего?
Аноним 15/07/22 Птн 09:33:13 2405894 488
>>2405889
Никто не спорит, что поток обмазанный синхронизацией под капотом это новый уровень абстракции. Ну и? Потоки никуда не делись, самое прямое к ним отношение.
Аноним 15/07/22 Птн 09:39:46 2405896 489
>>2405891
>всего лишь обещание
Еще богу помолись. Компьютер это не обещалка, колдун херов, заклинатель демонов: "сделай мне заебись". Вот результат рекламы программирования среди сброда уличного.
Аноним 15/07/22 Птн 09:41:12 2405898 490
Тяжело...
Аноним 15/07/22 Птн 09:43:20 2405900 491
Что-то треды с решетками стали жить. В чем причина такого резкого ажиотажа?
Аноним 15/07/22 Птн 09:46:16 2405902 492
>>2405896
Ну да. ты результат.

В других языках, например жс, Task имеет имя Promice

Перевод нужен или сам переведешь?
Аноним 15/07/22 Птн 09:46:49 2405903 493
>>2405900
Набег тем кому "тяжело"
Аноним 15/07/22 Птн 09:48:10 2405906 494
>>2405894
Электроны тоже никуда не делись, но это не сахар как ты написал.
Аноним 15/07/22 Птн 09:48:32 2405907 495
>>2405900
Начались каникулы.
Аноним 15/07/22 Птн 10:04:37 2405914 496
Аноним 15/07/22 Птн 10:52:13 2405938 497
>>2405722
>Когда что юзать?
Классы дают больше удобства пользования (для меня)
Ну например если ты создашь класс Point со свойствами X и Y, то ты можешь потом присвоить значение отдельно только X или только Y. В то время как со структурами для достижения того же самого, тебе придется перезаписать структуру полностью т.е. new Point(X, Y)

Структуры важны, если необходима скорость. Например мне надо было рисовать динамические кривые безье и там только время создания дефолтного класса Path, который в себе содержал класс PathFigure, который содержал в себе класс BezierSegment и т.д. — все это, т.е. простое создание нового объекта отжирало столько времени, что ФПС падал чуть ли не в нулину, если такие объекты создавать в цикле. А у меня еще своих классов дофига, и все это используется функциями которые ожидают структуры, то я просто не мог добиться нормального фпс.
Вот тогда я задумался про структуры, когда у тебя высокая частота обмена данными, какие-то математические расчеты которые провоцируют процесс упаковки и распаковки данных.

Тут подробнее про отличие структур от классов
https://youtu.be/8E9P_lnJ7RI

Короче, класс хорош, чтобы его один раз создать и потом использовать продолжительное время. Возможно это что-то комплексное и громоздкое. Структуры это такая херь, которая используется в циклах, в мат. расчетах — легко создал, легко забыл. В цикле можно хоть каждую итерацию создавать new Point или new Rect (а по другому и не получится). Попробуй Rect сделать классом — пизда фпс и памяти.
Аноним 15/07/22 Птн 11:05:36 2405944 498
Image 1.png 20Кб, 592x559
592x559
>>2405938
интересно как жависты живут без структур.
ну ладно примитивные типы оптимизированы
но допустим у меня картинка ARGB
Идеально для структуры,
вот пример имаджшарпа на пике. структуры удобна

но их нет в жава
упаковывают в int что ли
или используют шаблон "приспособленец"?
или тупо работают с data, data[i+1] - жесть.

Аноним 15/07/22 Птн 11:09:26 2405946 499
image.png 105Кб, 336x188
336x188
>>2405944
Да всем похуй на джав, чел.
Аноним 15/07/22 Птн 11:10:47 2405947 500
>>2405946
Тебе должно быть похуй, если у тебя этого нет — в этом основной принцип сохранения психики индивидуума.
Аноним 15/07/22 Птн 11:16:19 2405949 501
>>2405947
Ты сам то понял что сморозил?
Аноним 15/07/22 Птн 11:21:18 2405955 502
>>2405938
Да просто напиши:
struct это стек
class это куча

и пусть загуглит что такое стек и куча, если не знает. Это прям самое простое объяснение.
Аноним 15/07/22 Птн 11:26:01 2405958 503
>>2405914
А кому это гавно нужно однопоточное? Меня лично бесит этот ваш JS , что с ним можно сделать кроме написания веба? Сишарп намного сложен чем JS и более обширен в применение. Тут даже многопоточность сделать можно.
Аноним 15/07/22 Птн 11:29:01 2405961 504
image.png 104Кб, 480x360
480x360
>>2405955
>Да просто напиши:
struct это стек
class это куча
Аноним 15/07/22 Птн 11:45:11 2405984 505
>>2405958
>что с ним можно сделать кроме написания веба?
например запилить "десктопный" софт который будет лагать, занимать кучу памяти и быть унылым говном. И при этом орать "десктоп умер"
Аноним 15/07/22 Птн 12:07:00 2406007 506
>>2405984
Справедливости ради шарповые фреймворки такое же говно что до сих пор делает qt лучшей практикой.
Аноним 15/07/22 Птн 12:23:09 2406019 507
>>2405944
> интересно как жависты живут
Не упоминай калоедов всуе.
Аноним 15/07/22 Птн 12:41:32 2406034 508
>>2405955
Я думаю, что он уже загуглил и получил данный ответ.
Но на самом деле я тоже ничего не понимал, потому что и с тем и с другим хеловорлд работал одинаково, пока не приперло.
Аноним 15/07/22 Птн 13:04:10 2406048 509
>>2405944
>> интересно как жависты живут без структур.
Используют классы вместо структур, а потом тратят кучу времени на пердолинг с настройками GC и выбивание у начальства серверов с бОльшим кол-вом ОЗУ
Аноним 15/07/22 Птн 13:15:15 2406061 510
>>2406048
Это что же получается, хорошо что я решил вкатываться в шарп а не яву?
Аноним 15/07/22 Птн 13:16:15 2406063 511
Стек, куча, пиздец, в крестах такой хуйни не было
Аноним 15/07/22 Птн 13:18:02 2406066 512
>>2406063
В плюсах и не такая хуйня бывает
Аноним 15/07/22 Птн 13:36:56 2406086 513
ключ.PNG 11Кб, 425x567
425x567
hmac.PNG 10Кб, 662x120
662x120
Не знаю куда писать. В общем есть приложение, дотпикером, внутри кода есть два интересующих меня блока это ключ для HMAC-SHA256(пик 1) и сам блок хеширования (пик 2), моих знаний не хватает. Собственно вопрос, можно ли узнать ключ с пика 1? И какой точный порядок хеширования? честно запутался и не имел опыта получения хеша в коде
Аноним 15/07/22 Птн 14:26:55 2406142 514
>>2405160
А где ты видишь там .csproj-файл?
Там Makefile чтобы make делать на линуксе.
А для этого надо билдить весь mono/runtime
а чтобы его сбилдить
надо запустить
>./autogen.sh
и ещё и
>make get-monolite-latest
который качает хуй знает что.
Короче пиздос какой пердолинг.
Надо тупо код Mono.Data.Sqlite.dll заебенить и ебись оно конём. Как - хз. Я не ебу ваще как пропечатывать, все эти непонятные букаффы англюские, чтобы оно работало норм и не выёбывалось мне.
Аноним 15/07/22 Птн 14:28:07 2406145 515
>>2406142
Зачем он тебе вообще
Аноним 15/07/22 Птн 14:28:46 2406146 516
Аноним 15/07/22 Птн 14:29:14 2406147 517
>>2406145
Шобы и в винде и в линухе сиквелайт работал норм.
Аноним 15/07/22 Птн 14:32:28 2406150 518
Аноним 15/07/22 Птн 14:39:07 2406154 519
Аноним 15/07/22 Птн 14:45:09 2406158 520
>>2406154
Чучело, тебя без знания докера даже на собес не позовут.
Аноним 15/07/22 Птн 14:47:50 2406160 521
>>2406158
В твою каловую шарагу для ебаньков? Нахуй иди, долбоёб.
Аноним 15/07/22 Птн 14:49:12 2406161 522
>>2406147
А какой не работает? Возьми стандартный провайдер. Не парь мозг
Аноним 15/07/22 Птн 15:59:04 2406203 523
Кто нибудь знает что то про документацию?
Аноним 15/07/22 Птн 16:05:49 2406205 524
Аноним 15/07/22 Птн 16:19:49 2406210 525
Что за мем про документацию?
Аноним 15/07/22 Птн 16:35:13 2406219 526
>>2406210
Это не мем, а один еблан тут срёт.
Аноним 15/07/22 Птн 16:36:02 2406221 527
>>2406219
Ок. Ну хоть джавапетух съебался, на том спасибо
Аноним 15/07/22 Птн 16:41:34 2406232 528
>>2406221
Наверняка это как раз он.
Аноним 15/07/22 Птн 17:34:16 2406287 529
>>2406219
Это не еблан тут срет, а в ассемблернопарашной хуите нет документации.
Аноним 15/07/22 Птн 17:36:09 2406288 530
Аноним 15/07/22 Птн 17:44:22 2406293 531
>>2406205
In C#, classes are always allocated on the heap. Structs are allocated on the stack, if a local function variable, or on the heap as part of a class if a class member.

Частично я оказался прав. Потому что я делал дизассемблирование (cheat engine) и моя структура лежала в стеке, а класс в куче.
Аноним 15/07/22 Птн 18:09:48 2406317 532
>>2406161
Такой штоли есть разве, в .NET 4.0 ?
Елси да, то нахуя тогда все эти изъёбства с System.Data.Sqlite.dll и Mono.Data.Sqlite.dll ? Два года уже ебусь с этим всем.
Аноним 15/07/22 Птн 19:08:38 2406363 533
>>2406317
>.NET 4.0
> linux
> 2022 год
мазохист
Аноним 15/07/22 Птн 19:28:34 2406374 534
Я ОБАЖАЮ C#
Аноним 15/07/22 Птн 20:32:51 2406412 535
>>2405786
Хуйня, синтаксический сахар в шарпе просто охуенен

>>2405869
Да ну, там наоборот всё строго типизировано
Аноним 15/07/22 Птн 20:35:10 2406413 536
Аноним 15/07/22 Птн 21:05:15 2406434 537
>>2405938
> Ну например если ты создашь класс Point со свойствами X и Y, то ты можешь потом присвоить значение отдельно только X или только Y. В то время как со структурами для достижения того же самого, тебе придется перезаписать структуру полностью т.е. new Point(X, Y)
Схуяли.
Ты путаешь с иммутабл структурами.
> Структуры важны, если необходима скорость. Например мне надо было рисовать динамические кривые безье и там только время создания дефолтного класса Path, который в себе содержал класс PathFigure, который содержал в себе класс BezierSegment и т.д. — все это, т.е. простое создание нового объекта отжирало столько времени, что ФПС падал чуть ли не в нулину, если такие объекты создавать в цикле. А у меня еще своих классов дофига, и все это используется функциями которые ожидают структуры, то я просто не мог добиться нормального фпс.
> Вот тогда я задумался про структуры, когда у тебя высокая частота обмена данными, какие-то математические расчеты которые провоцируют процесс упаковки и распаковки данных.
> Короче, класс хорош, чтобы его один раз создать и потом использовать продолжительное время. Возможно это что-то комплексное и громоздкое. Структуры это такая херь, которая используется в циклах, в мат. расчетах — легко создал, легко забыл. В цикле можно хоть каждую итерацию создавать new Point или new Rect (а по другому и не получится). Попробуй Rect сделать классом — пизда фпс и памяти.
Тут самое важное, что надо отметить - структуры нужны для локальности памяти. Если у тебя List<Point> и поинт это класс, то в списке будут храниться ссылки, и когда ты его будешь проходить в цикле - проц будет переходить по отдельной ссылке в какую-то залупу.
А если поинт это структура - то они в памяти будут по порядку лежать, и проу сразу будет наперёд их в кэш подгружать, поэтому всё будет быстро.
Ну и конечно структуры лишний раз не создают объекты в куче(хотя их можно закинуть в кучу), поэтому сборщика мусора не ебут.
Аноним 15/07/22 Птн 21:07:41 2406437 538
>>2406061
Ну конечно бля, жава это легаси, она сейчас нужна для доработки старой залупы во всяких банках и предприятиях. Но вот котлин вроде бы хорош.

Аноним 15/07/22 Птн 23:24:17 2406526 539
image 28Кб, 884x592
884x592
Если после шарпа закатиться в С++, каких вещей, которые есть в шарпе, но нет в крестах, будет больше всего не хватать в повседневном кодинге?
Про GC, атрибуты и скорость компиляции понятно.
Аноним 15/07/22 Птн 23:25:26 2406527 540
>>2406434
>Схуяли. Ты путаешь с иммутабл структурами.
Ну я часто сталкивался, что структуры не дают шатать какое-то конкретное свойство: что Point, что Rect. Насчет Size не уверен, кстати.

Если там стоит модификатор иммутабельности, то есть варианты почему так сделали. Я сука заебался с этим дерьмом, проще отдельно иметь переменные X и Y. Даже в функциях аругменты в большинстве случаев запрашивают координаты по отдельности, хотя могли бы поит принимать.
Аноним 15/07/22 Птн 23:29:17 2406531 541
>>2406526
Я пытался вкатиться 10 раз, узнавал что-то новое, а оказывается, что это новое — вариация вывода строки в консоль. На 11 раз вкатываюсь, смотрю — незнакомая команда, гуглю, а это вывод строки на экран.

Ну и дропнул эту хуйню.
Аноним 15/07/22 Птн 23:33:32 2406532 542
>>2406531
Ну поставь себе более интересную задачу, чем срать в консольку. Например, срать в окно на winforms или в окно браузера.
Аноним 16/07/22 Суб 01:32:55 2406585 543
>>2399284 (OP)
ThreadPool создается на CPU, ядре или в главном потоке приложения?
Аноним 16/07/22 Суб 02:22:02 2406600 544
>>2406526
>Если после шарпа закатиться в С++, каких вещей, которые есть в шарпе, но нет в крестах, будет больше всего не хватать в повседневном кодинге?
"Виртуальной машины". Твой код против операционной системы, без посредников
Аноним 16/07/22 Суб 05:23:43 2406611 545
>>2406585
а какая разница где. "создан в каком то потоке" не значит что он и далее живет в этом потоке. Существование объекта в памяти к потоку не привязано.
Аноним 16/07/22 Суб 05:29:01 2406612 546
>>2406527
>Если там стоит модификатор иммутабельности, то есть варианты почему так сделали
Вариант один - мутабельные структуры злейшее зло. Заипешься следить за тем чтобы не было создано защитной копии.
Аноним 16/07/22 Суб 07:25:06 2406621 547
>>2406293
А еще есть боксинг. И хз, откуда ты эту парашную цитату вытащил, но где и что аллоцируется будет решать .NET, а не C#, так что на собесе так никогда не говори.
Аноним 16/07/22 Суб 09:01:09 2406633 548
>>2406621
да прямо таки. правила аллокации просты. и цитата верная. И боксинг, несмотря на типа магию, подчиняется тем же правилам.
Аноним 16/07/22 Суб 10:01:04 2406637 549
>>2399284 (OP)
Хочу установить Visual Studio 2022. Стоит ли гнаться за редакцией Enterprise или будет достаточно Community? Буду писать UWP, WPF и ASP.NET приложения, и возможно мобильные. Реально ли найти ключ для Enterprise в сети? Кое-что находил, но не знаю насколько они рабочие, проверить пока негде. Как вообще юзаете лицензионные VS?
Аноним 16/07/22 Суб 10:04:11 2406638 550
Шарпобояре, подскажите. Сейчас работаю на легаси на winforms, но там есть и веб(подпустят ли меня к нему - хз) и куча всего. Как развиваться в свободное от работы время, что учить и самое главное - как? Опыт промышленной разработки набирается, но в вебе я буду даже через год вряд ли лучше обычного вкатунишки.
Аноним 16/07/22 Суб 10:04:58 2406640 551
>>2406293
Если не играть в unsafe (и еще глубже), то просто нужно помнить
стек может ссылаться на кучу (потому локальные ссылки на экземпляры классов в куче лежат в стеке без проблем), а куча на стек нет.

и следствие

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

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

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

- массив значимого типа
массив это ссылочный тип, а значит держит структуру у себя. и выше писал что место выделяется сразу
А значит var test = new BigStruct[100000000] с радостью отхапает себе кусок в несколько гигов памяти

- массив ссылочного типа
типы ссылочные и экземпляры лежат в куче, но сама ссылка на кучу это значение. и место должно быть выделено на сами эти ссылки
и var test = new string[1000000000]; (побольше нуликов ибо ссылка всего 8 байт) тоже выжрет несколько гигов, хотя test[100] скажет что в нем null
(правда чтобы увидеть ее в диспетчере задач нужно включить колонку "выделеная память", ну и студия сразу покажет тоже)

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

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

>>2406637
да. есть полезные шняги. ключ реально. сразу после выхода стало реально ) и тулзы типа решарпера и supercharger подвезли. oz-code проблемен.

Аноним 16/07/22 Суб 10:07:04 2406641 552
>>2406640
>да
Да - это неплохо бы иметь Enterprise или достаточно Community?
Аноним 16/07/22 Суб 10:08:52 2406642 553
Аноним 16/07/22 Суб 10:15:36 2406643 554
>>2406638
Просто берёшь и делаешь пару проектов в гитхаб на ASP. Делаешь аналоги каких-то сервисов в своём упрощённом представлении.
Аноним 16/07/22 Суб 10:23:28 2406645 555
>>2406641
лично мне 99% не нужно того что есть разница в ентерпрайз
даже коделенс разница

"CodeLens доступен в версии сообщества Visual Studio Community, однако в этой версии индикаторы управления source control недоступны."

Тесты это решарпер гоняет

Для меня все решает IntelliTrace, плюс там что то из сторонних вещей может не стать на коммунити
Аноним 16/07/22 Суб 12:36:31 2406718 556
Есть разница между передачей функции другой функции myFunc и делегата этой функции, то есть Func<string, bool>(myFunc)?
Аноним 16/07/22 Суб 12:57:32 2406738 557
>>2406718
Нет. Компилятор услужливо создаст делегат за тебя
Аноним 16/07/22 Суб 13:17:22 2406748 558
Для резюме на джуна/trainee написал простой webapi проект (aspnet, efcore, Mapster, FluentValidation, Serilog, xunit). Js и front-end слабо знаю, попытался на Vue наклепать что-то, но вышло очень примитивно, и боюсь что из-за этого бек будет слабее выглядить)

Как лучше:
- давать ссылку на swagger, чтоб там и мапинги, и валидацию было видно
- доделать/подучить фронт
- оставить так же (в Readme гитхаба есть ссылки и на фронт, и на сваггер)

И вообще на джуна лучше чисто back-end вакансии искать или fullstack? Или через стажировки вкатиться попробовать?
Аноним 16/07/22 Суб 13:41:31 2406757 559
>>2406611
Меня интересует вопрос, что происходит когда я создаю N потоков, ThreadPool за ними тянется и расширяется или он привязан на приложении/процессе или на каждом ядре?
Аноним 16/07/22 Суб 13:46:47 2406760 560
Аноним 16/07/22 Суб 13:50:00 2406762 561
>>2406757
нет. ты просто их создаешь. Они никак не привязаны к тредпулу
тредпул не мифическая сущность
это просто класс, который внутри себя создает потоки и перемылывает в них все что дают
можешь написать свой тредпул даже
Аноним 16/07/22 Суб 16:34:36 2406909 562
>>2406748
Я для того чтобы на джуна попасть пришел, сказал: Приветик, в общем, такое дело, кушц хочу, готов кодить за еду.
Взяли.
Шарп на тот момент я не знал, в школе - учил паскаль.
Аноним 16/07/22 Суб 17:16:41 2406957 563
>>2406909
и продолжаешь кодить за еду...
Аноним 16/07/22 Суб 17:38:20 2406969 564
Аноним 16/07/22 Суб 17:42:01 2406973 565
>>2406969
и молодец. нашел свое место в жизни. Кодить за деньги - так меркантильно. Долой ремесло, программирование это призвание.
Аноним 16/07/22 Суб 21:46:12 2407211 566
Нахера вообще нужны делегаты? Когда просто так вызвать метод из какого-нибудь DI не вариант? Делегат обходит модификаторы доступа?
Аноним 16/07/22 Суб 22:40:47 2407253 567
>>2407211
Нужны для тех случаев, когда тебе нужно передать функцию в качестве аргумента другой функции/методу. Посмотри Linq. Это отличный пример их использования. Ну и для механизма событий они необходимы.
Аноним 16/07/22 Суб 23:08:01 2407281 568
>>2407211
> Когда просто так вызвать метод из какого-нибудь DI не вариант?
Конечно вариант, просто больше кода надо писать, придётся создавать общий интерфейс, реализовывать его в классе с единственным методом, а в методе-приёмнике вызывать метод этого интерфейса. А с делегатами можно тупо передать метод или лямбду, и в методе-приёмнике её вызвать как обычную функцию. Тебе нравится писать больше кода, когда можно меньше? Даже в жабе заебались так делать и придумали сахарок.
Аноним 17/07/22 Вск 09:56:02 2407430 569
Насколько сильно между собой отличаются последние версии языка? Много ли я (вкатун) упущу, если прочитаю книгу условного Троелсена о 7 версии?
Аноним 17/07/22 Вск 11:37:29 2407531 570
>>2407430
>Много ли я (вкатун) упущу, если прочитаю книгу условного Троелсена о 7 версии?
Нет, не много. Можешь вполне спокойно с седьмой версии учить. На освоение действительно значимых нововведений остальных версий языка максимум два дня уходит.
Аноним 17/07/22 Вск 13:49:24 2407717 571
изображение.png 22Кб, 578x342
578x342
изображение.png 48Кб, 608x391
608x391
В чём причина ошибки?
Аноним 17/07/22 Вск 13:56:56 2407726 572
Это нормально что я устраивался на программиста c#, но в итоге пишу раз в неделю на visual basic и всё, прям как в экселе? Ну хоть платят нормально, 60 тысяч
Аноним 17/07/22 Вск 13:59:29 2407731 573
>>2407726
В итоге когда решишь искать другую работу выяснится, что ты ничего не умеешь
Аноним 17/07/22 Вск 14:06:12 2407742 574
>>2407731
Ну я для этого и устраивался...
Аноним 17/07/22 Вск 14:30:07 2407777 575
>>2407717
После обновления EFCore всё заработало.
Аноним 17/07/22 Вск 14:49:47 2407818 576
>>2405785
> а еще и приложения ага
Причём прямо щас, не дожидаясь четвёрки можно лабать бэк на шарпе и фронт на годоте, который запустится на всех актуальных платформах. Встроенный конструктор форм позволяет легко и привычно лепить адаптивные интерфейсы. Единственный минус, фронт всегда будет работать на опен гл ес, нет способа запустить его в режиме обычной оконной отрисовки без графического ускорения.
Аноним 17/07/22 Вск 15:01:27 2407834 577
>>2403086
Хороший пример Rust, который сжирает все ресурсы компьютера и неимоверно лагает
Аноним 17/07/22 Вск 15:30:32 2407864 578
>>2407834
Сначала охуел, а потом понял, что ты про игру.
Аноним 17/07/22 Вск 15:39:10 2407870 579
>>2407834
Потому что разрабы дауны. Тем не менее, игра все равно супер успешная.

Хартстоун кстати тоже на юнити
Аноним 17/07/22 Вск 15:51:02 2407875 580
>>2407870

Тогда понятно, почему эта параша так сильно тормозит на любых спеках.
Аноним 17/07/22 Вск 15:53:02 2407876 581
.png 72Кб, 460x671
460x671
Помогите.
Смотрите. Есть некие данные. Их нужно читать. У данных могут быть разные типы.
Собственно в чем проблема. Я ничего лучше, чем вот такую вот табличку в базе делать - не придумал.
Кто знает решение лучше?
Просто я думал о какой-нибудь хитровыебанной системе с типа тегами и атрибутами и вот это вот все, а данные просто в строке хранить. Но сразу начинается ебатория, с тем, что нужно теперь делать постоянно запросы к базе, чтобы узнать какой же там тип данных, пропадает возможность сортировку нормальную и фильтрацию делать и вообще.
С другой стороны- прикриплейд выглядит кродливо как-то.
Короче. Как нормальные люди подобное делают?
Аноним 17/07/22 Вск 16:02:21 2407885 582
>>2407876

public T Value {get; set;}

public List<T> Filter

Type t = T.GetType();

if( t is int)
...
if (t is DateTime)

...

if (t is String)
...

return List<T>
Аноним 17/07/22 Вск 16:04:01 2407887 583
>>2407885
А каким образом ты это в базу запихнуть собираешься?
Аноним 17/07/22 Вск 16:07:12 2407891 584
>>2407887
Тогда так object Value {get; set}

public List<T> Filter

((Value as Int) not null)

{

}

return List<T>
Аноним 17/07/22 Вск 17:14:18 2407966 585
>>2407876
То есть ты планируешь хранить такое количество полей, и будешь их грузить при каждом запросе, но не хочешь делать лишние запрос, чтобы узнать тип?
Хз. Хранить тип енамкой, значение байтами?
Аноним 17/07/22 Вск 17:35:57 2407996 586
.png 67Кб, 754x354
754x354
.png 5Кб, 446x247
446x247
Кто-нибудь может объяснить мне, почему первый прикриплейд - жрет ~5MB оперативки?
И почему второй прикриплейд всего 500КБ?
Аноним 17/07/22 Вск 17:39:52 2407998 587
>>2407996
>почему
Потому что иди нахуй, вот почему.
Аноним 17/07/22 Вск 17:44:37 2408004 588
>>2407966
Почему ты думаешь что я буду грузить все поля?
Есть отдельная табличка Data в которой как раз енамкой указан тип поля.
Собственно план следующий: при запросе каких-то результатов чтения - смотреть в Data какой там тип, и по этому типу - выбирать какие поля подгружать.
Этот объект же это модель в базе. В приложение и публичное апи он просачиваться не должен будет.
Аноним 17/07/22 Вск 18:05:20 2408024 589
>>2407996
ты бы еще на ассемблере накидал и спросил, почему в ассемблере жрет 1 кб.
Очевидно же что net framework нагружен всякой хуйней и это тащится в сборку скомпилированную.
Аноним 17/07/22 Вск 18:07:40 2408030 590
>>2408004
Ну тогда хранить в одном поле, при загрузке конвертировать в нужный тип. Просто у тебя каждое поле всё равно место жрать будет
Аноним 17/07/22 Вск 18:21:22 2408039 591
>>2408030
Так суть-то в том, что из-за разных типов - я могу делать фильтрацию и прочее на стороне базы, плюс использовать индексы, хуиндексы и прочее. Без этого - придется все уже в приложении это реализовывать.
Ну, типа если там будет битовый массив - я не смогу просто написать WHERE UInt64Value > 10; WHERE ASCIIStringValue LIKE "Vasya" и т.д.
Аноним 17/07/22 Вск 18:28:37 2408045 592
>>2408024
Ну и что мне делать, если мой руководитель из кожи вон лезет, чтобы на железках с 256МБ оперативки и процом ARM'овским за 2 бакса - запускали .Net?
Я просто пытаюсь пояснить, что .NET - прожорливый, у него на все один ответ - вот, мы программулину запустили, она даже работает, жрет всю память, ну дык это потому что никто не умеет с .net'ом работать, а он где-то читал, что вообще на микроконтроллерах .net запускали, значит можно как-то извратиться. Но я как не ебался, не старался - ну минимум для реального использования - это ~150МБ надо, когда такое же приложение на плюсах - уже есть и оно всего 10МБ жрет и нормально работает, сверху даже Nginx запихнуть получилось и PHP и много чего полезного и оно нормально работает, а тут будет одно приложение .NET'овское жить и жрать все для себя. Я не представляю, какие аргументы можно использовать в такой вот ситуации, если все тесты и метрики показывают, что для такого вот слабого железа - .NET противопоказан. Плакать хочется.
Аноним 17/07/22 Вск 18:33:19 2408054 593
>>2408045
Ты учитывай, что с .net 6 программы не отдают память, если в системе ещё че-то остаётся. У меня парочка хуёвин ест 0.85гб от 1гб, но я могу докинуть ещё столько же
Аноним 17/07/22 Вск 18:59:08 2408080 594
>>2408054
Хм. А вот это на самом деле может быть аргументом.
Где про это почитать можно?
Аноним 17/07/22 Вск 19:29:11 2408098 595
Аноним 17/07/22 Вск 19:44:35 2408107 596
>>2407996
ну а как ты хотел
виртуальная машина, 1 мегабайт на стековую память по дефолту, GC нужно где то жить, и джиту развернуться, всякие CoreCLR

для таких придумали .NET Micro Framework

"Memory needs of about 300 kB; in contrast, the next smallest .NET implementation, the .NET Compact Framework running on Windows CE, needs about 12 MB"
Аноним 17/07/22 Вск 20:49:54 2408193 597
>>2405553
>Какие недостатки у шарпа или дотнета?
Отсутствие нормально оплачиваемой работы, даже в сравнении с JS, Java, про GOвно вообще молчу, там платят еще больше.
Ну и тонны легаси с WFC, WebForms и тд
Если без этого - один из лучших ООП языков на ровне с котлином
Аноним 17/07/22 Вск 21:01:44 2408212 598
>>2408193
Ты забыл уточнить, что речь про РФ
Аноним 17/07/22 Вск 22:08:43 2408274 599
Аноним 17/07/22 Вск 22:36:51 2408304 600
>>2408193
>Отсутствие нормально оплачиваемой работы
Пиздишь, просто открой любой сайт с кодерскими вакансиями.

>даже в сравнении с JS, Java
Где в два раза больше вакансий, но в десять раз выше конкуренция. Найс. Еще и языки говно.

>GOвно
Скучно и перспективы мутные.

>Ну и тонны легаси с WFC, WebForms и тд
Очень редко, большинство давно переехало с этого говна или срочно переезжает, потому что с вебформсами меньше чем за 300ккк/наносек никто ебаться не будет, такие вакансии просто сажаскрывают сразу же.
Аноним 17/07/22 Вск 22:42:36 2408315 601
>>2408212
> речь про РФ
Речь в первую очередь про штаты и Канаду.
Технологичность - пиздец.
14 из 15 легаси, платят копейки.
В Бритахе с этим получше, на удивление и новые проекты пилят, но платят все равно смех в сравнении с условным формошлепством на ноде.
Германия - пиздец, сплошная жаба, правда с такими тоннами легаси.
Аноним 17/07/22 Вск 22:44:04 2408318 602
>>2408045
пиши не .net 2.0 или 4, выше нет смысла залезать. Чем выше версия .net тем больше потребление памяти и тем больше весит сборка.
В общем пообкатывай там разные .net версии и найди разницу.
Аноним 17/07/22 Вск 22:45:53 2408323 603
Аноним 17/07/22 Вск 22:52:55 2408332 604
>>2408304
>Пиздишь, просто открой любой сайт с кодерскими вакансиями.
У нас понятия нормально оплачиваемой работы разные.
Условные 300к ты можешь и на дотнете получать в РФ.
На удаленку контрактором на дяду сэму ты не уйдешь, потому что проекты говно и платят ебучие копейки, я уже весь indeed перерыл, сплошной тухлят.
Проекты сплошное говно, выбить условные 50$ в час еще нужно постараться.

>>2408304
>но в десять раз выше конкуренция
На конкуренцию похуй.

>>2408304
>Еще и языки говно
Говно, но кушать хочется лучше

>>2408304
>Очень редко
Очень редко в РФ.
В штатах подобного говна навалом, что-то конечно переписывают, но не на дотнет, а на условный питухон
(реальный случай знакомого который переписывал вебформы на ноду)
|
Я только рад оказаться не прав, но это реальность о которой я сужу по вакансиям на indeed.
14 из 15 - говно.

Может я конечно долбаеб не там ищу
Аноним 17/07/22 Вск 23:21:09 2408363 605
>>2408332
Про забугры я слабо шарю, но по одной свалке вакансий судить точно рано.

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

>На конкуренцию похуй.
Попробуй устройся на Реакт. Вакансий ёбаное море, куча разных проектов и годные зарплаты. Ты не устроишься. Ориентировочно никогда.


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

>ноде
За этот кусок недобэка с 1% рынка вообще что-то платят? Покажи, я такого чуда еще не видел.
Аноним 17/07/22 Вск 23:25:18 2408369 606
>>2408332
>В штатах подобного говна навалом, что-то конечно переписывают, но не на дотнет, а на условный питухон
(реальный случай знакомого который переписывал вебформы на ноду)
Олсо, какой нахуй петухон и нода? На них можно развернуть сайтец локальной аптеки или там местного фитнес-клуба с онлайн-записью. Серьезные энтерпрайзы никто на такие технологии переводить не будет, потому что жирные приложения на петухоне и ноде не подлежат поддержке, это технологии для совершенно других задач.
Аноним 17/07/22 Вск 23:33:43 2408374 607

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

Поддвачну, это действительно так, но на удивление на ноде пару норм вакансий по описанию видел.
Я сужу по всему indeed, не только по плашкам
remote contractor from anywhere
Там большинство вакансий с дотнетом действительно какое-то говно и платят мало.
Может этот ресурс у них не котируется, но я из СНГ брезгую на таком за такие деньги работать, в штатах я бы тем более за такие суммы не работал

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

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

>>2408363
>реальная ситуация конкретно на местах
Это реальная ситуация на аутсорс галере

>>2408363
>недобэка с 1% рынка вообще что-то платят?
Платят, любители говностартапов с пердолингом по 8+ часов в сутки оценят.
Размеренного темпа с планированием и нормальным Agile процессами там и не пахнет
Аноним 17/07/22 Вск 23:36:15 2408379 608
>>2408369
>Серьезные энтерпрайзы никто на такие технологии переводить не будет
Переводили какую-то CRM с вебформ на ноду
В сортах говна не разбираюсь, но proof of concept на сколько я знаю заказчику выкатывали на NestJS
>>2408369
>ноде не подлежат поддержке
Смотря кто пишет, код на дотнете тоже не всегда подлежит поддержке, если его долбаебы писали
Аноним 17/07/22 Вск 23:42:17 2408380 609
>>2408374
А зачем вообще пытаться в эту удаленку с дядей сэмом? Тем более сейчас, когда этот дядя в любой момент тебя нахуй пошлет, дикие проблемы с оплатой и так далее. У нас же локальных годных вакансий дохуя и больше. А если уж к сэму, то имхо надо по-нормальному с релоком.
Аноним 17/07/22 Вск 23:47:25 2408384 610
>>2408380
>А зачем вообще пытаться в эту удаленку с дядей сэмом
Платят значительно больше (при условии если идти на нормальные рейты 50$+) на меньше я не согласен
>>2408380
> Тем более сейчас, когда этот дядя в любой момент тебя нахуй пошлет, дикие проблемы с оплатой и так далее. У нас же локальных годных вакансий дохуя и больше

Я в РБ, у нас рынок схлопнулся, в условный тинек идти не хочется, а больше толком ничего нет, у меня как раз с локальной галерой контракт заканчивается
>>2408380
> А если уж к сэму, то имхо надо по-нормальному с релоком.
А я и рыбку съесть и на пенек залезть хочу, релок предлагают аутсорс галеры, но там говно какое-то, ради условных 1500$ в месяц сверху переезжать ну такое
Аноним 17/07/22 Вск 23:50:34 2408391 611
>>2408384
>Я в РБ
Так вам вроде в рф устроиться должно быть легко.

>релок предлагают аутсорс галеры
Много кто предлагает. Правда с уровня не ниже мидла. Если ты годный специалист (а СНГшные ценятся), то релокнет почти кто-угодно, это не так уж дорого в сравнении с тем, что ты им дашь.
Аноним 17/07/22 Вск 23:53:40 2408394 612
>>2408391
>Много кто предлагает. Правда с уровня не ниже мидла. Если ты годный специалист (а СНГшные ценятся), то релокнет почти кто-угодно, это не так уж дорого в сравнении с тем, что ты им дашь.
>>2408391
>Так вам вроде в рф устроиться должно быть легко.
Я релок принципиально не хочу, в этом вся проблема.
Аноним 18/07/22 Пнд 05:31:33 2408551 613
Аноним 18/07/22 Пнд 08:58:45 2408602 614
Maui это замена wpf и xamarin?
Аноним 18/07/22 Пнд 09:04:06 2408604 615
>>2408602
Maui - это замена Xamarin на EEE.
Аноним 18/07/22 Пнд 20:07:22 2409147 616
>>2408602
Это какая-то надстройка над wpf
Аноним 18/07/22 Пнд 20:10:56 2409151 617
>>2409147
даже рядом не лежало
это хамарин на десктопе, причем без линукса
Аноним 18/07/22 Пнд 20:43:44 2409180 618
>>2409151
Зачем прошивке для роутера графический фреймворк?
Аноним 18/07/22 Пнд 20:50:39 2409188 619
А wpf рендерит интерфейс на видеокарте, или использует родные виндовские примитивы?
Аноним 18/07/22 Пнд 21:05:51 2409215 620
image.png 203Кб, 674x354
674x354
Сделал метод который считает сумму двух чисел. Шанс на вкат есть?
Аноним 18/07/22 Пнд 21:09:44 2409220 621
Можно говорить что угодно, но факт остаётся фактом: лучше WinForms ещё ничего не придумали.
Аноним 18/07/22 Пнд 21:11:07 2409221 622
>>2409220
Всё так анончик, пока клованы ебутся с биндингами и xaml винформо-боги просто мышкой перетаскивают и делают модный UI.
Аноним 18/07/22 Пнд 21:17:51 2409226 623
>>2409221
Всё просто и понятно, как у дедов с RAD. Не надо придумывать себе архитектурные проблемы и потом героически их превозмогать.
Аноним 18/07/22 Пнд 22:41:25 2409348 624
>>2409180
Прошивке для роутера достаточно веб-интерфейса
Аноним 18/07/22 Пнд 23:54:51 2409405 625
>>2409215
Если бы я такое увидел на ревью - я бы тебя убил прямо на месте. Даже не просил бы нормально написать. Просто взял и убил прямо там. А показав этот код другим коллегам - думаю они бы помогли от тела избавиться.
Аноним 19/07/22 Втр 03:34:58 2409473 626
>>2400211
Я вижу 2 причины:
1) Неуправляемые сторонние библиотеки
2) Очень тонкое место в системе, где нужно производить дохуя расчетов, при этом чтобы тут не мешался GC. Например это может произойти в какой нибудь системе реального времени, где данные поступают сплошным нескончаемым потоком - и тебе нужно их как-то обработать. Если тут будет GC, то есть шанс, что из-за его работы внезапно подвиснет поток и программа перестанет успевать за входящими данными
Аноним 19/07/22 Втр 03:43:23 2409474 627
>>2404925
Асинхронность, это когда ты например отправил запрос куда-то там и тупо ожидаешь ответа. Например запрос на сервак или в бд. В это время у тебя программа фактически нихуя не делает, просто ждет.
Парралелизм, это когда программа всё же делает, что-то считает например, отдавая это сторонним потокам.

Это основное отличие асинхронности от парралелизма.

При async await у тебя вообще таска может никуда не уйти из вызывающего потока, например если быстро выполнилось. Как правило работает это все же иначе. Если есть контекст синхронизации, который обычно объявлен общим по всей приложухе, то после await, выполнение 100% вернется обратно в вызывающий поток. Если контекста синхронизации нету, как в ASP приложениях, то выполнение как нехуй может вернуться уже в другом потоке. Это кстати основная причина того, почему await нельзя засунуть в lock и компилятор пошлет тебя нахуй.

Thread - низкоуровневая хуйня, никогда не создавай её ручками. Используй TPL - там хотя бы всякие тредовые пулы юзаются
Аноним 19/07/22 Втр 06:42:54 2409488 628
>>2409221
унылый UI (не умеющий в изменение DPI) из заранее забитых компонентов
(захочешь кастомизации - привет пердолинг в ручное рисование)
Аноним 19/07/22 Втр 07:42:16 2409498 629
>>2409215
Никого не слушай, ты реально талант
Аноним 19/07/22 Втр 07:43:41 2409499 630
>>2409474
>Если есть контекст синхронизации, который обычно объявлен общим по всей приложухе, то после await, выполнение 100% вернется обратно в вызывающий поток

неправда. оно вернется в контекст (который уже сам решит где ему выполнять) и то только если ConfigureAwait(true) - да, эта хрень по дефолту тру, но не у всех - пока мелкие игнорят просьбы сделать выбор на уровне сборки, другие (и я тоже) используют Fody.ConfigureAwait и делают ConfigureAwait(false) по дефолту
Аноним 19/07/22 Втр 07:46:45 2409500 631
>>2409215
а кому такое нужно? Такое нужно только тем, кто либы разные пишет. Но бизнесу такое не нужно.
Аноним 19/07/22 Втр 08:28:52 2409510 632
>>2409500
>а кому такое нужно
Никому, это пустая трата времени. Лучше бы я алгоритмы дрочил, а не эту хуйню.
Аноним 19/07/22 Втр 08:30:25 2409511 633
>>2409215
> пик
Это что-то вроде ассемблерных вставок?
Аноним 19/07/22 Втр 08:32:14 2409513 634
>>2409405
Почему? Можешь объяснить чем этот код плох? Кроме его бесполезности, конечно же.
Аноним 19/07/22 Втр 08:43:04 2409518 635
>>2409500
Бизнесу вообще программирование нахуй не всралось, ему нужна оптимизация процесса получения прибыли. И как это добьются четырёхглазые макаки из айти, ему насрать, пусть хоть через динамикметоды.
Аноним 19/07/22 Втр 09:32:12 2409547 636
Всем привет. Подскжите, какой набор скиллов и проектов сейчас нужен джуну на позицию asp.net разраба, чтобы его резюме было заметно лучше чем у большинства конкурентов?
Аноним 19/07/22 Втр 09:38:41 2409550 637
>>2409511
это кодогенерация. нужна там, где по какой то причине не хватает expression tree
или же генеришь классы на лету. в мапперах всяких или обхода ограничений CLR. То есть в библиотеках.
с приходом source generator стало менее нужным
Я вот использую в маппере игнорируя CLR проверки на типы понимая возможные последствия конечно.

в обычном программировании нахер не нужно - там есть expressio tree

>>2409518
да да. конечно ) если ты будешь кодить год вместо 2х дней, то ему будет не насрать.

Аноним 19/07/22 Втр 09:46:51 2409553 638
>>2409547
Вкатился недавно. Есть апишка с EF одна на гитхабе, но мне кажется её даже не смотрели. Есть год опыта смежного (не .net, но тоже кодинг). Тестовое делал с многопоточкой и сетями (нужно ковырять их специально глючный сервак по TCP и вытягивать данные). На собесе спросили чутка про подробности ООП и про внутреннее устройство коллекций.
Аноним 19/07/22 Втр 09:47:54 2409557 639
>>2409550
Если ты через динамикметод решишь задачу быстрее, чем нормальным способом, тебя заставят юзать динамикметод.
Аноним 19/07/22 Втр 10:37:48 2409579 640
>>2409557
но ты не решишь. Даже будь ты 100000 раз спецом - тупо писать больше.
Если бы так решалось, то все бы писали на ассемблерах и высокоуровневые языки бы не родились (а зачем)
и шарп бы не родился - а зачем если есть си
Аноним 19/07/22 Втр 11:13:47 2409622 641
>>2409579
Ну так это говно и не годится для стандартного крудошлёпства для кабана, его нужно юзать в более специфичных задачах.
Аноним 19/07/22 Втр 11:43:59 2409647 642
Аноним 19/07/22 Втр 11:52:24 2409656 643
image.png 408Кб, 1000x977
1000x977
Чо посоны прислали таки оффер, потерял всего 30% по зп. Почти 5 месяцев без работы сидел.

>>2384400 →-нытик
Аноним 19/07/22 Втр 12:12:09 2409675 644
>>2409656
знание зарплаты ничего не дает
важны требования

можно зарабатывать и косарь, но при этом балду пинать, не отчитываться, иметь гибкий график и так далее.
Аноним 19/07/22 Втр 18:08:23 2410040 645
>>2409656
>потерял всего 30% по зп.
Это ты что, на 700 баксов подписался?
Чет совсем дешево, не ценишь ты себя.
Я столько имел год назад на заводе стоя за станком (причем по старому курсу)
Аноним 19/07/22 Втр 18:26:30 2410055 646
>>2410040
Неее, до спецоперации почти 3к получал.
Аноним 19/07/22 Втр 20:29:10 2410202 647
Аноним 19/07/22 Втр 20:32:52 2410207 648
>>2410202
Сокеты есть? Есть. Чо тебе ещё надо?
Аноним 19/07/22 Втр 21:01:18 2410218 649
Есть класс, наследующий Grid. У этого грида есть дочерний элемент — эллипс, у которого есть событие MouseButtonUp.

Так вот, как бы, так сказать, ретранслировать это событие на родительский класс Grid. Я не хочу снаружи иметь доступ к эллипсу. Городить кастомное событие тоже не хочется — там многабукв.
Аноним 19/07/22 Втр 21:36:46 2410229 650
Аноним 19/07/22 Втр 22:14:57 2410258 651
>>2410229
всегда рады помочь, с вас пять тыщ.
Аноним 19/07/22 Втр 22:24:26 2410264 652
>>2410207
Понимание того, что это за херь, и как сделать нормального пира на них.

Пока, всё что приходит в голову - это блядь костылить такую хуету.
Пир, значит, это и клиент, и сервер...
Значит надо поднять блядь сервер.
Сервер какой?
Очевиднейший TcpServer: https://github.com/username1565/nanoboard/blob/master/nanodb.exe-source/Server/TcpServer.cs
Ну не HttpServer же, блеать:
https://github.com/username1565/nanoboard/blob/master/nanodb.exe-source/Server/HttpServer.cs

Но я пошёл дальше, и нарыл такие коды: https://github.com/username1565/CSharpServers/tree/TCPUDPChat
Короче, можно типа ещё и UDP прихуярить туда, чтобы и TCP и UDP было на одном порту, какбэ.
И шо это даст? Казалось бы, нихуя, но...
UDP поддерживаеть Multicast: https://metanit.com/sharp/net/5.2.php
А значит, можно делать Peer Discovery в LAN, через Multicast,
и так искать пиров, в локалке.
А потом соединяться с ними по TCP или UDP, и короче добавлять их в Dictionary, дальше уже синхронить список пиров между ними (Peer Exchange).

Хуй знает шо за сокеты, и с чем их жрать, но ебанины, очевидно, много.
Написал всю хуйню русскими буквами, кириллическими, вот здесь:
https://github.com/username1565/nanoboard/issues/21#issuecomment-1188924519
А как вкодить - хуй знает блядь. Я уже реально заебался с этой хуйнёй. ПАМАГИТИИИ...
Аноним 19/07/22 Втр 22:40:29 2410282 653
>>2410264
Не надо TCP и UDP. Надо просто UDP. Осталось обмазать DHT и NAT hole punching, и это самое сложное.
Аноним 19/07/22 Втр 23:06:12 2410305 654
>>2410282
А как же без TCP, если там HttpServer.cs увязан на TcpServer.cs? Это типа чо, по UDP - HTTP-запросы можно делать, и всякий HTML c JSON'ом передавать?
Не, по-моему надо оставить TCP-сервер, как есть, чтобы не перепердоливать всё, нахуй блядь, а то можно вусмерть закрасноглазиться на голом энтузиазме, как я.
Поэтому, взбрело в голову заебенить TCP+UDP, какбэ, и вроде как уже протестил, оно пошет, вон код.

Насчет DHT... Ну хуй знает...
Хэш - IP, можно сделать в Dictionary, а потом тупо конвертнуть его в JSON, и дальше уже - можно тупо JSON хуярить текстом, в виде байт, по TCP, уже после установки соединения,
и так синхронить эту хэш-таблицу с пирами, реализуя Peer Exchange.
А уже между пирами, потом синхронить и хэш-таблицу с самой базой данных наноборды (там тоже хэш-таблица, тащемта).

Насчет NAT Hole punching, а он нужен этот пердолинг?
Может просто upnp прихуярить туда, чтобы автопроброс порта работал, как-бэ, а дальше уже биндить всю хуйню на 0.0.0.0, чтобы на всех адресах оно пахало, и не выёбывалось.
Но да, если только в локалке мультикастом пиров искать будет,
то за NAT пиров хуй найдёшь,
поэтому можно было бы замкнуть NAT Hole punching на самих пиров, и пока 1 пир есть, чтобы можно было его юзать, как ноды в криптоговнах.

Я думал есть уже пир, но как обычно придётся самозапиливать всю хуйню самостоятельно, ибо ебать какой я элитарий, я же на острие инноваций.
Аноним 19/07/22 Втр 23:57:53 2410358 655
>>2410305
> А как же без TCP, если там HttpServer.cs увязан на TcpServer.cs? Это типа чо, по UDP - HTTP-запросы можно делать, и всякий HTML c JSON'ом передавать?
Зачем тебе вообще HTTP? Ну, можешь построить туннель поверх UDP, чтобы он мог передавать HTTP, некоторые P2P-сети поддерживают подобное, оборачивают TCP-трафик в UDP. HTML и JSON можно передавать без HTTP, это просто формат данных, он ничего не знает о протоколе.
> Не, по-моему надо оставить TCP-сервер, как есть, чтобы не перепердоливать всё, нахуй блядь, а то можно вусмерть закрасноглазиться на голом энтузиазме, как я.
P2P-сети и перепердоливают всё. Там по сути приходится строить все уровни протоколов с нуля., только вместо IP-пакетов UDP-пакеты.
> Хэш - IP
Ещё IP может быть динамическим. Ещё под одним белым IP может сидеть тысяча узлов с серым локальным IP. 192.168.x.x. Хеш не должен знать о таких нюансах. Возникает другая теоретическая проблема - коллизии хешей, но это крайне редкая ситуация.
> Насчет NAT Hole punching, а он нужен этот пердолинг?
> Может просто upnp прихуярить туда, чтобы автопроброс порта работал, как-бэ, а дальше уже биндить всю хуйню на 0.0.0.0, чтобы на всех адресах оно пахало, и не выёбывалось.
Допустим, проблему с пробросом портов на своём домашнем роутере ты решишь. А что делать с провайдером, который не даёт статический IP и не блокирует входящие соединения по TCP? Те же торренты в безтрекерной сети могут работать и с серыми IP.
> Я думал есть уже пир, но как обычно придётся самозапиливать всю хуйню самостоятельно, ибо ебать какой я элитарий, я же на острие инноваций.
Есть, те же торренты с API для шарпа. Но многие заточены под специфичные юзкейсы, и если ты собрался писать свою сеть общего назначения типа I2P, большую часть придётся реализовывать самому, потому что массово никому такие задачи решать не приходится, почти всем хватает традиционного клиент-сервера поверх TCP.
Аноним 19/07/22 Втр 23:59:39 2410362 656
>>2410358
> и не блокирует входящие соединения по TCP
Блокирует.
fix
Аноним 20/07/22 Срд 07:30:47 2410475 657
Прочел RB Whitaker The C# Player's Guide, который тут неоднократно советовали. Могу ли я теперь считаться джуном и пытаться найти галеру?
Аноним 20/07/22 Срд 09:29:55 2410519 658
Аноним 20/07/22 Срд 10:56:04 2410587 659
Аноним 20/07/22 Срд 11:06:51 2410594 660
>>2410475
Чтобы стать джуном нужно писать.
Аноним 20/07/22 Срд 11:07:38 2410596 661
>>2410475
Для джуна главное софт скилы, а не знания. Ты можешь плавать в теории, не мочь в асинхронность, но иметь подвешенный язык, и тебя возьмут скорее, чем задрота.
Аноним 20/07/22 Срд 11:51:06 2410642 662
image.png 25Кб, 697x160
697x160
>>2410358
>Зачем тебе вообще HTTP?
Потому что наноборда работает по HTTP, а он по TCP, и HttpServer.cs, по коду, увязан на TcpServer.cs

>Ну, можешь построить туннель поверх UDP, чтобы он мог передавать HTTP
Это как так? Через UDP HTTP-запросы отправлять, что-ли?
>некоторые P2P-сети поддерживают подобное, оборачивают TCP-трафик в UDP.
Бля, это ещё пижже, как-бэ, но нахуа?
Прикол в то, что UDP пакеты пиздуют не последовательно, а как-бы вразнобой:
>UDP использует простую модель передачи, без явных «рукопожатий» для обеспечения надёжности, упорядочивания или целостности данных. Датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа, но гарантируется, что если они придут, то в целостном состоянии. UDP подразумевает, что проверка ошибок и исправление либо не нужны, либо должны исполняться в приложении.

В то время как TCP-пакеты пронумерованы, и доставляются последовательно, в потоке (TcpStream).
Это если HTTP поверх UDP слать, и если будет пиздатый запрос, то конец запроса может прийти раньше чем начало запроса, короче кусками запрос придёт - и хуй знает как всё это обрабатывать, блядь.
Также, и ответ может пиздовать вразнобой, надо походу нумеровать пакеты, а потом их складывать в цепочку, и это будет какая-то задержка типа.

>HTML и JSON можно передавать без HTTP, это просто формат данных, он ничего не знает о протоколе.
Ну ясен хуй, что хэш-таблицу нанопостов в виде JSON можно синхронизировать и по TCP и по UDP, между пирами. Как и список пиров, реализуя тем самым Peer Exchange.
Но чтобы HTML передавать по HTTP, через UDP или мутить инкапсуляцию TCP over UDP - ну тут уже хуй знает, я такого не видел. TCP годен тем, что там держится коннект, после тройного рукопожатия, и инфа пиздует в потоке, а не вразнобой. Именно поэтому HTTP-сервер работает по TCP. Но TCP не поддерживает multicast, а значит и Peer Discovery.
Поэтому я решил объединиь TCP/UDP в один сервер, и приебенить туда мультикаст-группу для поиска пиров.
Но всё это в пределах локалки, не за NAT.
Это как Tox, например, если в локалке два TOX-клиента поднять, они друг-друга сразу найдут Multicast'ом, и соединятся, и пока есть хотя-бы один коннект - оба пира в сети, и можно общаться даже без интернета.
Ну а чтобы за NAT'ом приконнектится, тогда уже можно использовать внешние ноды: https://nodes.tox.chat и там походу есть уже NAT Hole punching или что-то вроде этого,
хуй знает, там код на C и питоне - я просто не могу его читать, не зная синтаксис этих языков программирования.

>P2P-сети и перепердоливают всё. Там по сути приходится строить все уровни протоколов с нуля., только вместо IP-пакетов UDP-пакеты.
Могу залить тестовый код.
Я пока сделал такую хуйню,
там короче TCP/UDP сервер вместе,
на одном порту поднимаются,
и к UDP-серверу присоединяется мультикаст-группа тоже.
Затем, клиентская сторона, по таймеру срабатывает регулярно, и шлёт только мультикаст-запросы по UDP, на адрес мультикаст-группы.
Если приходит ответ из мультикаст-группы, берётся IP откуда пришёл ответ, ну и порт дефолтный - порт TCP/UDP-сервера.
IP:PORT добавляется в HashSet, и сразу выводится, на этот IP:PORT можно будет приконнектиться либо по UDP, либо по TCP.
И дальше уже просинхронить этот HashSet, и прочее, когда установится TCP-коннект (так как UDP-пакеты будут идти вразнобой).
Всё это, какбэ работает без NAT пока, потому что я не впердоливал upnp и NAT hole punching, ещё.

>Ещё IP может быть динамическим.
Тогда надо юзать нечто вроде DDNS, походу, и коннектиться на DomainName:PORT
И ещё, вроде как, надо выкидывать подобное говно из HashSet <string> PeersList если нельзя приконнектиться в течении некоего времени. Но это вопрос спорный, тот пир может быть просто отключён на время, а потом включится.

>Ещё под одним белым IP может сидеть тысяча узлов с серым локальным IP. 192.168.x.x.
Вот тут надо upnp, или Port Forwarding для порта TCP/UDP-сервера, потому что иначе, порт TCP/UDP сервера может быть закрыт, а клиент может подключаться к разным серверам - с разных портов, которые ещё и меняься будут.
Ясное дело, что тысяча узлов не могут прокинуться на один и тот же порт.

>Допустим, проблему с пробросом портов на своём домашнем роутере ты решишь.
Так шоб его руками не пробрасывать, надо upnp.
Но если ты говоришь тысяча узлов будет сидеть на роутере,
то это будет 1000 самых разных портов открытых, и номер порта TCP/UDP-сервера, как-бы, не фиксированный, получается.

>А что делать с провайдером, который не даёт статический IP
DDNS.
Его - разрезолвить в IP, и на дефолтный TCP/UDP порт как-бы, ломится, туда.

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

>Те же торренты в безтрекерной сети могут работать и с серыми IP.
Они через обмен пирами приходят, походу. И скорее всего там NAT Hole Punching уже реализован. Пикрелейтед.
Но это не точно.

>Есть, те же торренты с API для шарпа.
>Но многие заточены под специфичные юзкейсы
А они на .NET 3.5 будут работать?
Может реально заливать тупо в торренты и нанопосты, и аттачи для них, и по magnet-ссылкам вытягивать всё это дело потом?
Думал также на IPFS лить всю эту хуйню.
Но это будет куча торрент-файлов, блеать, и куча ссылок...
А хотелось бы просто файл базы синхронить или три хэш-таблицы (список пиров, список нанопостов, список аттачей).

>и если ты собрался писать свою сеть общего назначения типа I2P, большую часть придётся реализовывать самому, потому что массово никому такие задачи решать не приходится
Я изначально подумал следать что-то вроде TOX'а, чтобы можно было просто две наноборды поднять в локалке, и чтобы они сразу друг-друга нашли, и потом сами соединились, и сами просинхрили базу данных - без инета вообще, через роутер, например, и дополнили свои базы данных нанопостами - на обеих пирах.
Но тут NAT не учтён, какбэ, да.

>почти всем хватает традиционного клиент-сервера поверх TCP.
Ну, в принципе, можно было бы просто сервер поднять, и коннектиться. Но наноборда - это же анонимная имиджборда. А если будет сервер, то будет диванон.
Алсо, сервер могут тупо положить дудосом.
Поэтому я хочу заебенить пир. А пир - это не просто сервер, это клиент и сервер одновременно, как-бэ.
И вот, допустим, удалось объединить TCP-сервер и TCP-клиент воедино, в один пир.
И вот два пира поднято - в локалке или в Интернете.
И как они друг-друга найдут?
TCP не поддерживает multicast - в этом прикол.
Значит надо использовать что-то вроде списка addnode, как в криптовалютах, но при таком раскладе, addnode - это по-сути сервера с конкретными IP и проброшенным через Port Forwarding или upnp - портом.
А по IP их могут задиванонить и задудосить нахуй, или нагнать маски-шоу и расхуярить всё там, чтобы пересрать всё нахрен, и всю сеть поломать.
Потому что без нод, хуй приконнектятся пиры эти ебучие.
Я такую ебанину уже заебался зоонаблюдать в криптоговнах,
специально цены на криптоговнины роняют в нулину, сложности роняют тоже, майнить и держать говно не выгодно, ноды держать включёнными не выгодно, их отклчают нафиг,
а эти мочерские, подментованные пидоры пробивонные,
из парочки нод уже могут легко задиванонить криптана,
потому что поле поиска резко сужается, когда мало синхнод, блеать.
Поэтому, чтобы всей этой ублюдочной хуйни не было, я пришёл к Peer Discovery через UDP Multicast, ибо при таком раскладе, пиры могут быть подняты в локалке, и сразу, автоматически, они могут начать синхрониться, без всяких addnode и публичных серверов, как-бы, которые ещё надо хостить, и хостить на белых IP, и палить их.

А так-то, наноборда, вообще без серверов разрабатывалась, там тупо локальный сервер, как читалка нанопостов, и больше нихуя.
Локальный сервер хуй задодосишь, и хуй задиванонишь, потому что он локальный блеать.
Аноним 20/07/22 Срд 12:01:43 2410654 663
Здравствуйте, господа шарписты!
Есть ли тут те, кто сидят на линухе и пишут код на шарпе?
Пару дней назад я установил линукс на пекарню, чисто по приколу. И значит вспомнил, что я люблю этот ваш C#, и хочется на нём пописать. Так вот вопрос к знатокам линуксойдам - где вы пишите код? Rider норм ваще? Не писать же в VS code?
Аноним 20/07/22 Срд 12:03:22 2410657 664
Блять, как вы заебали, ебаные прыщебляди.
Аноним 20/07/22 Срд 12:23:49 2410688 665
Аноним 20/07/22 Срд 12:25:52 2410689 666
Аноним 20/07/22 Срд 12:28:41 2410695 667
Аноним 20/07/22 Срд 13:01:09 2410716 668
>>2410642
> Потому что наноборда работает по HTTP, а он по TCP, и HttpServer.cs, по коду, увязан на TcpServer.cs
Насколько я помню, наноборда клиент-серверная, хоть и резервных серверов несколько, прямого соединения с другими клиентами нет. Она даже более централизована, чем торрент-трекеры.
> Это как так? Через UDP HTTP-запросы отправлять, что-ли?
Ну да.
> Бля, это ещё пижже, как-бэ, но нахуа?
> Прикол в то, что UDP пакеты пиздуют не последовательно, а как-бы вразнобой:
IP-пакеты тоже, там нет никакого контроля и никаких гарантий. Это сам TCP, работающий поверх IP, их за тебя выстраивает в правильном порядке, а UDP этого не делает.
> Поэтому я решил объединиь TCP/UDP в один сервер, и приебенить туда мультикаст-группу для поиска пиров.
Основная проблема TCP - через него невозможно сделать NAT hole punching. Так-то все бы его юзали и не парились.
> Но если ты говоришь тысяча узлов будет сидеть на роутере,
Не, я имел в виду маршрутизатор самого провайдера, который соединён с твоим домашним роутером.
> >Есть, те же торренты с API для шарпа.
> >Но многие заточены под специфичные юзкейсы
> А они на .NET 3.5 будут работать?
Не факт, но попробуй взять релизы постарее.

И много других проблем, по остальному не подскажу, очень специфичная тема.
Аноним 20/07/22 Срд 13:36:13 2410736 669
>>2410654
А че, вс код считается калом*
Аноним 20/07/22 Срд 13:56:38 2410751 670
Аноним 20/07/22 Срд 14:40:54 2410774 671
>>2410654
Rider - охуенная тема. Правда, есть вероятность, что к vs ты уже не захочешь возвращаться.
Аноним 20/07/22 Срд 17:49:04 2410925 672
>>2408045
У меня для тебя неприятная новость: Тебя хотят сократить и ищут предлог.
Аноним 20/07/22 Срд 18:21:45 2410951 673
>>2410688
>>2410695
Вы блять троллите или из 2015?
Какой нахуй mono
>>2410654
>Rider норм ваще
Норм, на нем и пишут
Аноним 20/07/22 Срд 21:00:42 2411067 674
>>2410689
>>2410951
Ну наконец-то мы услышим предложение от настоящих специалистов, как без вайна запустить программу с WinForms на лялехе!
Аноним 20/07/22 Срд 21:19:22 2411092 675
Wpf устарел?
Аноним 20/07/22 Срд 21:28:38 2411099 676
Сколько байт занимает object?
Аноним 20/07/22 Срд 21:29:41 2411101 677
>>2411099
Настолько дохуя, что ты охуеешь. Если не можешь с этим смириться, тебе в C++ тред.
Аноним 20/07/22 Срд 21:31:15 2411104 678
>>2411092
Все некроссплатформенные* API устарели, даже если их написали сегодня.

⚹винда, линукс и макос
Аноним 20/07/22 Срд 21:32:25 2411109 679
>>2411101
>Настолько дохуя, что ты охуеешь
После твоей мамаши меня уже ничего не удивит
Аноним 20/07/22 Срд 21:35:45 2411114 680
Аноним 20/07/22 Срд 21:36:44 2411115 681
>>2411104
Прошивка для роутеров и прошивка для пидоров не нужны.
Аноним 20/07/22 Срд 21:38:21 2411117 682
>>2411115
Лишь бы была прошивка для твоей мамаши.
Аноним 20/07/22 Срд 21:38:54 2411120 683
>>2411114
Который равняется ...?
Аноним 20/07/22 Срд 22:39:34 2411211 684
>>2411120
12 кажется. 8 на номер рантайм типа, 4 байта для флагов синхронизации и системного говна.
Аноним 20/07/22 Срд 22:53:27 2411230 685
Аноним 20/07/22 Срд 23:13:18 2411246 686
Анон, помоги разобраться с dependency injection. Весь день курю гуглы и ютубы по теме, но все еще остаются два вопроса.
1. Какой фреймворк для этого дела учить джуну? Одни советуют родной мелкософтовский, другие autofac, третьи еще что-то. Нормальные туториалы нашел только по автофаку.
2. Видел несколько реализаций без фреймворков - там создается отедльный класс с методами, в которых вызываются инстанции классов. И я как-то не понял, это всегда будет работа с новыми инстанциями? А если мне нужен стабильный класс с определенными данными, который постоянно висит в памяти?
Аноним 20/07/22 Срд 23:25:34 2411260 687
image.png 24Кб, 643x156
643x156
Да что такое эта ваша асинхронщина если оно авейтит выполнение?
Аноним 20/07/22 Срд 23:33:18 2411270 688
>>2411246
>Какой фреймворк для этого дела учить джуну
Microsoft DI
>Видел несколько реализаций без фреймворков
Это каловое говно из жопы. Настоящий DI который юзают в проектах делается не так.

Объясняю на пальцах. У тебя есть интерфейс и его реализация:

interface IPizda { }

class LocalPizda : IPizda { }

Так же, есть класс который ЗАВИСИТ (dependency) от IPizda (т.е в нашем случае IPizda - это dependency/зависимость/залежність):

class Sex
{
private IPizda _pizda;
public Sex(IPizda pizda)
{
_pizda = pizda;
}
}

Но, поскольку реализаций может быть много которые будут меняться во время разработки приложения (например LocalPizda - это класс тупо для теста функциональности на локальном ПК, а в будущем будет такой же класс но с более глобальным функционалом) мы не можем нормально передавать в конструктор класса Sex конкретную реализацию (всё таки всё сведется к тому что мы где-то захардкодим new LocalPizda()), так помимо всего этого в класс LocalPizda может еще прийти 100500 таких же зависимостей (которые в себе могут содержать зависимости.. и так до бесконечности).

Чтобы решить проблему ебли с new ConcreteClass(new Dependency1(), new Dependency2(new DependencyDependency1())) где присутствует конкретная реализация, что плохо, придумали такое как внедрение зависимостей. Внутри Microsoft.DependencyInjection происходит следующее: фиксируется интерфейс IPizda и его реализация LocalPizda. Из LocalPizda фиксируются все возможные конструкторы с параметрами и без. После того, как ты зарегаешь все свои зависимости с зависимостями:

IServiceCollection serviceCollection = new ServiceCollection();

serviceCollection.AddTransient<LocalPizda, IPizda>();
serviceCollection.AddTransient<LocalPizdaDependency, ILocalPizdaDependency>();

Ты можешь их сбилдить в объект:

ServiceProvider provider = serviceCollection.BuildServiceProvider();

Ты можешь сделать следующий вызов:

var localPizda = provider.GetService<IPizda>();

И теперь у тебя есть объект LocalPizda (но будет как IPizda), содержащий все нужные ему зависимости, т.е serviceProvider сам сделал конструктор и засунул туда нужные зависимости и сделал для них конструкторы с их зависимостями (ну и так вглубь до конечного результата который тебе нужен в виде IPizda), это помогает как решить new ConcreteClass(new Dependency1(), new Dependency2(new DependencyDependency1()))
Аноним 20/07/22 Срд 23:37:35 2411274 689
>>2411270
>в нашем случае IPizda - это dependency/зависимость/залежність
Девственникопроблемы
Аноним 21/07/22 Чтв 05:28:48 2411408 690
.png 139Кб, 793x787
793x787
>>2411260

В общем. Я под спойлером кучу слов написал. Но пока писал - понял что на примере нагляднее.
В общем. Вот как ты будешь делать без await https://docs.microsoft.com/ru-ru/dotnet/framework/network-programming/asynchronous-server-socket-example
На картинке - как с await.
Какой код по твоему проще для понимания?
А про саму асинхронщину - таки под спойлером.

Смотри. Вот допустим, у тебя в программе был бы ровно один поток. Так вот. Ты хочешь какую-то долгую операцию выполнить. Допустим - открыть файл в миллион строк и вывести это на экран. Так вот. Поток у тебя все еще один. А значит что? А значит то, что у тебя все будет выполняться последовательно(синхронно), т.е. код дойдет до момента, когда нужно открыть файл. Заблокирует поток. Будет ждать от ОС сигнала о том, что файл есть, его можно открыть, вот тебе хендлер для работы с файлом. Дальше - ты так же синхронно начнешь данные читать/копировать, дальше ты так же синхронно будешь ждать выводить строчки из файла куда тебе там надо. И вот когда все это закончится - только тогда программа будет способна что-то еще делать.

Асинхронщина:
Ты вот так же как и раньше, хочешь работать с файлом. Миллион строк. Так вот. Поток доходит до момента, когда нужно открыть файл. Но вместо того чтобы ждать завершения - просит ос открыть файл и идет дальше делать полезные дела. Когда ос пинганет и вернет хендлер - поток узнает об этом механизмами которые придумали разработчики ОС - и можешь что-то полезное сделать, например так же асинхронно почитать из файла, и так же не блокируя поток продолжить выполнение. Благодаря этому - поток может больше полезных операций выполнить, вместо того чтобы ждать пока ос просрется, пока диск ответит и т.д.
Развивая мысль - мы можем уже сверху натянуть пулы потоков и всячески наращивать более интенсивное использование ресурсов CPU для полезных вещей, вместо того чтобы тот стоял и нихуя не делал полезного, а пользователь думал, что все зависло.

Так вот. В твоем примере - это сахарок для того чтобы ты не ебался с миллионами коллбеков, AsyncEventHandler'ами и прочей залупистикой, а мог писать как-бы синхронно.
Посмотри просто примеры как это говно на ЖС до введения async-await было. Колбек на коллбеке и коллбеком погоняет. Либо еще хуже и у тебя это вот в ООП завернуто. Там у тебя будет пиздец в духе: Хендлер на хендлере и хендлером погоняет.
Потому умные люди подумали-подумали и придумали вот такой вот сахарок.
Аноним 21/07/22 Чтв 06:02:11 2411413 691
Нужно выполнить кучу относительно медленных запросов, по одному - слишком медленно выходит, все сразу - тоже не получится из-за количества. Причём некоторые могут вообще долго тупить, а некоторые - отвалиться, и нужно чтобы основная масса этих запросов выполнилась как можно скорее. Лучшее, что придумалось - сделать очередь и условно десяток асинхронных "воркеров", которые будут брать из очереди запросы и их выполнять. Каждый воркер берёт из очереди запрос, выполняет его, берёт следующий запрос из очереди. Или, если он слишком медленный - канцелит его, кидает в другую очередь, которая будет выполняться в конце особым образом, с более длительным ожиданием и ретраями.

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

Причём задача то звучит как вполне типичная, наверняка где-то лежит её красивое решение с простым кодом, но я чет не могу нагуглить. Хелп.
Аноним 21/07/22 Чтв 06:25:32 2411416 692
>>2411413
Нет не лежит.
Если ты про запросы к базе - то первое что нужно было смотреть - план запроса и пробовать его сделать более быстрым(индексы-хуиндексы, снизить число циклических обходов размер запрашиваемых из базы данных, если оно не надо).
Если запросы какую-то работу выполняют - то +- как ты описал все и делают. Простого решения тут нет.
Для работы потокобезопасно с очередями у шарпа есть ConcurrentQueue.
Чтобы снаружи это выглядело более пристойно - можешь сделать свой LongRunningTask<T> который будет в очередь помимо задачи - класть семафор и после завершения задачи - отжимать его, чтобы снаружи выглядело как обычная задача с await и всем таким.
Аноним 21/07/22 Чтв 11:59:58 2411550 693
Взяли джуном на проект с net framework 4.5 за 45к.
Аноним 21/07/22 Чтв 12:03:50 2411555 694
>>2411550
Взяли премидлом на проект с неткором за 2к евро.
Аноним 21/07/22 Чтв 12:08:15 2411562 695
>>2411550
Взяли джуном на неткор за сотыгу рублей
Аноним 21/07/22 Чтв 12:09:45 2411566 696
Аноним 21/07/22 Чтв 12:10:24 2411567 697
Аноним 21/07/22 Чтв 12:11:32 2411569 698
Аноним 21/07/22 Чтв 12:12:53 2411570 699
>>2411550
Взяли джуном на говнолегаси на жабе за 160к.
Аноним 21/07/22 Чтв 12:16:01 2411575 700
Если взять 2 листа:
1 - закинуты объекты "хуй", "говно"
2 - закинуты тысяча объектов, удалены, закинуты объекты "хуй", "говно"
У них будут одинаковые хэши? А equals? А сравнение через ==?
Аноним 21/07/22 Чтв 12:16:09 2411576 701
>>2411550
Замутил свой стартап на лохчейне, уже 2 года живу на пассивном доходе.
Аноним 21/07/22 Чтв 12:25:05 2411583 702
Аноним 21/07/22 Чтв 12:48:56 2411605 703
>>2411260
Спокуха, щас объясню. Task - это какая-то одна асинхронная операция. Запускается она следующим образом (есть несколько способов, я напишу самый простой):
var task = Task.Run(() => Console.WriteLine("method1"));

Данная операция выполнится асинхронно, но вот когда она выполнится - хуй его знает. Чтобы получить результат таски здесь и сейчас - юзаем `await`, т.е:

await Task.Run(() => Console.WriteLine("method2"));
Слово await заставляет всех в текущей таске ждать выполнения этого метода. Теперь на примере:

public async Task Method1Async()
{
var result = await _service.SmthHuitaAsync();
}

public async Task Method2Async()
{
var result = await _service.SmthHuita2Async();
}

Теперь методы Method1Async и Method2Async можно запустить независимо друг от друга:

public void Pizdec()
{
var task1 = Method1Async();
var task2 = Method1Async();
}

Выполнение пойдет одновременно и вывод может любой:

method1
method2

ИЛИ

method2
method1

Это и есть асинхронная операция.
Аноним 21/07/22 Чтв 12:52:12 2411607 704
>>2411605
Но ведь прога может завершиться до того как будут выведены сообщения.
Аноним 21/07/22 Чтв 12:52:33 2411608 705
Аноним 21/07/22 Чтв 12:54:31 2411609 706
>>2411607
>Но ведь прога может завершиться до того как будут выведены сообщения.
Если будет какой-то краш проги критический который убьёт нахуй процесс, или выключится свет, то да, ну или если у тебя консольная программа из двух строчек кода которые я написал в методе Pizdec в конце ответа
Аноним 21/07/22 Чтв 13:08:56 2411616 707
>>2411609
Так если основной поток отработает до того, как выполнится эта асинхронка она же и не будет выполнена?
Аноним 21/07/22 Чтв 13:13:18 2411623 708
>>2411616
>Так если основной поток отработает до того, как выполнится эта асинхронка она же и не будет выполнена?
Ты путаешь потоки и задачи https://ru.stackoverflow.com/a/548879/422180
Аноним 21/07/22 Чтв 13:20:07 2411629 709
>>2411550
Взял пожрать из холодильника за причитания о поиске работы.
Аноним 21/07/22 Чтв 13:28:12 2411639 710
>>2411270
Два чая, анон, что-то примерно начинает доходить. А где по науке регистрируются все эти зависимости и билдятся в объект? В Program.cs? Олсо, как я потом вызову зависимость из другого класса, если тут тоже используется new ServiceCollection()?
Аноним 21/07/22 Чтв 13:33:31 2411641 711
>>2411639
по науке на самом самом верху приложения в глубину контейнер не передается.

>лсо, как я потом вызову зависимость из другого класса, если тут тоже используется new ServiceCollection()?
шта?
Аноним 21/07/22 Чтв 14:51:04 2411746 712
>>2410774
Хм, внатуре. Годнота та ещё. Надо попробовать clion дать второй шанс.
Аноним 21/07/22 Чтв 15:45:10 2411818 713
>>2411639
Все зависимости регаются как можно ближе к стартующему приложению классу (но не рядом с Main), обычно в отдельном методе, но не обязательно.

К примеру в WPF регать можно где-то в классе App.cs, так же убрать в App.cs.xaml StartupUri для того, чтобы в классе можно было переопределить метод OnStartup, зарегать там твои зависимости и ViewModel'и поскольку зачастую вьюмоделям нужно что-то передавать в конструктор что делает невозможным еблю с кодом в xaml.

Далее делается публичное свойство в App.cs
public static ServiceProvider ServiceProvider { get; set; }

А затем делаешь всё что я описал выше (если что вот так вот объявлять MyWindow через new тоже не стоит, для этого делается класс со словарем который управляет жизненным циклом окна: биндит VW, открывает, закрывает. Для примера в принципе сойдет)

public override void OnStartup()
{
ConfigureServices();

var mainViewModel = ServiceProvider.GetService<MyViewModel>();
MyWindow w = new MyWindow(mainViewModel);
w.Show()
}

private void ConfigureServices()
{
IServiceCollection collection = new ServiceCollection()
collection.AddTransient<MyService, IMyService>();
collection.AddTransient<MainViewModel>(); //Допустим, MainViewModel зависит IMyService

ServiceProvider = collection.BuildServiceProvider();
}

Далее из любой точки программы:
var service = App.ServiceProvider.GetRequiredService<IMyService>();

В ASP.NET Core в контроллерах, а так же Razor Pages нет нужды обращаться напрямую к ServiceProvider поскольку контроллеры и странички автогенерируемы, и их конструкторы по дефолту будут заполняться нужными зависимостями, достаточно только зарегистрировать их. В NET 6 убрали класс Startup и прочее объединив в один класс:

var builder = WebApplication.CreateBuilder(args);
...
builder.Services.AddScoped<MyService, IMyService>();
Аноним 21/07/22 Чтв 16:30:22 2411901 714
Чё-то у меня в мухосранске вообще вакансий на C# нет. Есть токо на VB одна и всё. Что у вас с вакансиями? Неужели кроме гейдева на C# ничего не наработаешь?
Аноним 21/07/22 Чтв 16:39:21 2411917 715
Linq боги здесь?
Есть один список результатов, в котором есть поля:
DateTime date;
int someintvalue;
Как в нем просумировать и вывести среднее int значения по днях? Например в нем может быть n экземпляров с каким-то одним днем, мне нужно вернуть одну экземпляр с этим днем и средним int значением.
Аноним 21/07/22 Чтв 16:46:38 2411928 716
>>2411917

var zalupa = results.GroupBy(res => res.date.Day)
.Select(res => new { day = res.Key, avg = res.Average(res => res.someintvalue) })
.ToArray();

Типа того?
Аноним 21/07/22 Чтв 18:09:38 2412030 717
Аноним 21/07/22 Чтв 19:49:27 2412105 718
>>2411608
Где я их смешивал? Если ты про
> можем уже сверху натянуть пулы потоков и всячески наращивать более интенсивное использование ресурсов CPU
Это не про таски, а про асинхронность как таковую. Тебе зачастую плевать в каком конкретно потоке будет продолжено выполнение, а потому - делая планировщик - ты можешь брать любой не занятый поток и пихать в него остальную часть твоего асинхронного кода.
Аноним 21/07/22 Чтв 21:28:41 2412252 719
>>2412105
я хз где там у тебя увидели смешивание и вообще о какой блокировке идет речь, но у тебя ошибка

await HandleClient() не даст работать 2+ подключениям одновременно.
Аноним 21/07/22 Чтв 21:42:04 2412285 720
>>2412105
>ты можешь брать любой не занятый поток и пихать в него остальную часть твоего асинхронного кода.
да не можеш ты блять. зайди в свою ебучую студию и запусти два потока с несколькими тасками (как с await так и без) и посмотри че будет.
Аноним 21/07/22 Чтв 22:38:09 2412362 721
>>2411550
Вали оттуда при первой же возможности. Через год ты обнаружишь, что даже вкатун, только что выползший с курсов жидбрейнса, будет намного ценнее тебя на рынке труда.
Аноним 21/07/22 Чтв 22:38:33 2412365 722
>>2411917
>>2411928
Я ща подумал, короче я насрал.
Во первых, там создаётся анонимный тип, а не один из экземпляров юзается, во вторых, это хуйня не будет работать нормально, если у тебя больше одного месяца в результатах, тому что Day возвращает просто день в месяце. Наверн можно вывернуть как-то в res.date.ToString("dd:MM:yy"), тогда будет работать до конца века. ну или yyyy сделай.
Аноним 21/07/22 Чтв 23:04:40 2412386 723
>>2411067
> как без вайна запустить программу с WinForms на лялехе
Никак. Попроси разраба сделать билд на Eto.Forms.
Аноним 21/07/22 Чтв 23:12:32 2412399 724
>>2411818
Бро, тебе бы туториалы писать. Я мимокрокодилировал, прочитал и сразу всё понял.
Аноним 22/07/22 Птн 02:03:51 2412534 725
image.png 25Кб, 1211x82
1211x82
Анон, как правильно такие предупреждения решать?

Не игнорируя ясен пень.

Так и делать везде проверку на ноль?
Аноним 22/07/22 Птн 04:33:56 2412568 726
>>2412534
AppSettings?.Get("Version") ?? "Unknown";
Аноним 22/07/22 Птн 05:15:48 2412572 727
Аноним 22/07/22 Птн 06:23:45 2412576 728
>>2412285
> await HandleClient() не даст работать 2+ подключениям одновременно.
Я знаю. Это в данном случае не ошибка, просто я проглядел что MS в старой реализации отпускают ManualResetEvent . В даном случае можно просто таску не эвейтить, ну либо async void делать.
>>2412285
При чем тут таски и асинхронность, чел? По твоему таски это единственный способ сделать выполнение кода асинхронным? Ты троллишь?
Например. Методы стримов BeginRead, BeginWrite - асинхронные.
Аноним 22/07/22 Птн 08:29:27 2412594 729
как же в шарпе не хватает питоновского

def foo(a, b, /, c, *, d, e)

где требование указывать параметры верно позиционно и требовать с именами указывать.
Аноним 22/07/22 Птн 08:35:45 2412596 730
>>2412594
Худшее, что можно было только высрать в петухоне. Теперь все срут функциями по 20 аргументов. Лучше уж передавать один объект, заполненный через initializer block.
Аноним 22/07/22 Птн 08:38:55 2412598 731
>>2412594
>и требовать с именами указывать.
А что если я все коллекции которые принимаю как параметр метода называю items? А у человека в методе нахуй 5 коллекций которые друг с другом ебутся во все дырки чтобы притащить в моей метод коллекцию с названием items? Лол. У меня порой если метод +- крупный то приходится ебаться с названиями чтобы они попросту не конфликтовали и были читаемы
Аноним 22/07/22 Птн 08:42:25 2412599 732
>>2412596
>Теперь все срут функциями по 20 аргументов.
как одно связано с другим. Кто запрещает срать функциями по 20 аргументов в шарпе? там тоже есть именованные параметры.

>>2412598
>А что если я все коллекции которые принимаю как параметр метода называю items?
И? о чем ты вообще. В шарпе ЕСТЬ именованные параметры (только без требования "имя опустить нельзя").
Аноним 22/07/22 Птн 08:43:37 2412600 733
>>2412596
>Лучше уж передавать один объект, заполненный через initializer block.
у которого кстати НЕТ проверки на заполненность на уровне компилятора ибо required не впилили.
Ну можно заполнить через конструктор....ой, а это ж опять те же 20 полей, да без имен )
Аноним 22/07/22 Птн 08:44:16 2412601 734
>>2412599
>В шарпе ЕСТЬ именованные параметры
Видимо не так понял то, что ты имел в виду у пайтона, не ебу что там у него.
Аноним 22/07/22 Птн 08:48:41 2412602 735
>>2412601
def foo(a, b, /, c, *, d, e)

a, b - НЕЛЬЗЯ использовать с именами. только позиционно. Как следствие ты потом можешь их переименовать и ничего не сломается
d, e - использовать только с именами, что люто добавляет читабельности, ведь никто не вызовет
foo(1,2,3,4, 5)
а будет вынужден писать как
foo(1,2,3,d=4, e=5)

в шарпе тоже есть именованные аргументы позволяющие писать так
foo(1,2,3,d:4, e:5)

но это нужно иметь культуру "а вдруг кто читать будет после меня" и особо настраивать правила чистилок "не чисти эти имена гад, ну и что что их не является обязательным указывать, я их указал для читабельности", что конечно никто не делает.
Аноним 22/07/22 Птн 09:02:39 2412604 736
>>2412602
Надеюсь это никогда не добавят, щас бы нахуй думать над позиционированием входящих параметров и чето там запрещать. Нахуя? Нет же ни одной объективной ситуации где это могло бы быть нужным. Читаемость даст следующий код:

void Foo(int a, int b, int c, int d, int e)

а не вот этот:
def foo(a, b, /, c, , d, e)

Какие-то нахуй слэши, звёздочки, нахуя это всё?

>но это нужно иметь культуру "а вдруг кто читать будет после меня"
Вот поэтому этот синтаксис из питона никогда не добавят, мне важнее читаемость в будущем чем какие-то ограничения на параметры
Аноним 22/07/22 Птн 09:14:41 2412609 737
>>2412604
>Какие-то нахуй слэши, звёздочки, нахуя это всё?
Это просто способ указания какие параметры какие. их никто не заставляет применять. Можешь не писать в своем коде, а в чужом - опять же пишешь не ты.

>Читаемость даст следующий код:
>мне важнее читаемость в будущем
я вызываю твой метод
Foo(1,2,3,4, 5)

ты потом читаешь этот код. правда сходу понятно что такое 3, а что 4? или все таки нет? )
читабельность уровня "да хз, вроде норм"

или

Foo(true, true, false, true, false)

красота же. Читаемость 10000%

А теперь следи за руками. Никто не требует указывать имена для всех параметров. Используется только для опциональных!!. И в шарпе тоже самое - используется для опциональных.

Только если опциональный параметр ничего не пропускает, то IDE предлагает убрать имена. и получается
Foo(true, true, false, true, false)
Аноним 22/07/22 Птн 09:25:54 2412615 738
>>2412609
>Foo(1,2,3,4, 5)
>ты потом читаешь этот код

Даже в вс коде есть инлайн подсказки для имён параметров в таких случаях. Одно расширение только что заруинило твою аргументацию
Аноним 22/07/22 Птн 09:28:27 2412616 739
>>2412615
На питоне пишут нормальные люди, а не шарпомакаки, которые без подсказок IDE даже хеллоуаорлд не напишут.
Аноним 22/07/22 Птн 09:40:19 2412620 740
>>2412615
мышью елозить - это не читабельность.
Иначе бы тогда не было претензий к var вместо явного указания типа - "а хули там, мышью навел, какая проблема"

особенно когда читаешь код в каком нибудь diff, где мыши нет.

а по аргументации вот тебе пример

public IEnumerable Product(bool a, bool b, bool c, bool simplify = false, reverse: bool = false)

простой метод, принимающий 3 обязательных параметра и пару опциональных.

и сравни читабельность
foreach ... in Product(true, false, false, true, true)

и

foreach ... in Product(true, false, false, simplify: true, reverse: true)

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

Вот только второй вариант НИКТО не напишет, потому что можно первый вариант, да и IDE задолбает просьбой превратить второе в первое.

заводить для пары опциональных параметров целый класс Options?
Так количество параметров в методе не превышает 5, что не является запахом.

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







Аноним 22/07/22 Птн 09:42:08 2412621 741
16076862308180.mp4 1293Кб, 380x286, 00:00:27
380x286
16111479950850.webm 173Кб, 960x540, 00:00:03
960x540
16530689969290.mp4 2165Кб, 1920x1080, 00:00:04
1920x1080
15971445453710.webm 3540Кб, 1028x720, 00:00:47
1028x720
>>2412616
>На питоне пишут нормальные люди
Аноним 22/07/22 Птн 09:43:54 2412622 742
>>2412621
Уж точно нормальнее шарпомакак.
Аноним 22/07/22 Птн 09:45:18 2412623 743
16088873911800.mp4 438Кб, 320x240, 00:00:06
320x240
>>2412622
>Уж точно нормальнее шарпомакак.
Прекрати пожалуйста, я не могу одеться на работу из-за тебя
Аноним 22/07/22 Птн 09:48:32 2412624 744
>>2412620
>мышью елозить - это не читабельность.
То есть ты даже не шаришь, о чём говоришь.
Аноним 22/07/22 Птн 09:50:24 2412626 745
>>2412624
прекрасно шарю. только в реальном мире код смотрят не только в IDE.
Аноним 22/07/22 Птн 09:53:36 2412627 746
Image 1.png 7Кб, 809x228
809x228
>>2412615
о каких подсказках ты говоришь?
вот например визуал студия 22я
Аноним 22/07/22 Птн 09:55:05 2412628 747
>>2412627
Как ты сделал вот эти полоски слева розовые? У тебя коммьюнити студия?
Аноним 22/07/22 Птн 10:00:01 2412631 748
Image 2.png 28Кб, 933x476
933x476
>>2412628
это supercharger
там много разного бесполезного говна правда.
для коммьюнити студии он фри
Аноним 22/07/22 Птн 10:11:42 2412635 749
>>2412627
В визуалке я хз где-то, но знаю, что там это тоже есть
Аноним 22/07/22 Птн 10:16:09 2412636 750
подсказки.png 87Кб, 946x644
946x644
>>2412627
Держи подсказочки.
Аноним 22/07/22 Птн 10:17:34 2412637 751
>>2412626
Открою секрет. diff-ы можно точно так же спокойно смотреть в IDE и у тебя там будут доступны любые расширения с подсказками и без.

А теперь давай придумай еще какой-нибудь нереалистичный способ, когда я не смогу воспользоваться IDE чтобы, посмотреть что там и где.
Аноним 22/07/22 Птн 10:18:57 2412638 752
Image 4.png 10Кб, 1029x226
1029x226
>>2412635
есть
inline hints назыается
отключается в первую очередь из-за такой херни как на скрине

в решарпере тоже есть и чуть посмартовее, но тоже отключается по той же причине

>>2412637
> можно точно так же спокойно
ты перепутал со словом НУЖНО (в твоем случае) ибо только там мусорные инлайн хинтс или грызун
Аноним 22/07/22 Птн 10:30:20 2412645 753
15961284194210.jpg 96Кб, 672x662
672x662
>>2412620
>и сравни читабельность
>foreach ... in Product(true, false, false, true, true)

>foreach ... in Product(true, false, false, simplify: true, reverse: true)

Во-первых. Если это касается каких-то флагов или перечислений, то шарпе создатель функции может использовать Enum, чтобы принудить пользователя не использовать вот этот подход (false, -1). В нормальной функции у тебя будет так: (Visibility.Hide, HorizontalAlignment.Left), и пользователю не нужно все это расписывать.

Во-вторых, если это касается каких-то чисел, то я давно не припомню, чтобы я прямо в аугменты функции вписывал что-то подобное (356, 80, 45, 90). Если это не перечисления, то вписываю туда уже существующие переменные, типа (X, Y, Width, Height), которые уже говорят сами за себя. У меня возникает МАЛЕНЬКИЙ вопросик, а какого хуя питоноблядь допустила ситуации, когда она пишет это (356, 80, 45, 90), окромя каки-то быстрых тестов. Как у нее это получилось? Как у нее значения заспавнились в середине тела функции? И почему это захаркодено?

В-третьих. Да, нужно приучать себя создавать перечисления и иметь внутреннюю самоорганизацию. К сожалению, попытка языка покрывать лень пишущего, приводит к чудовищным последствиям, и джава скрипт тому пример — 60% функционала рождены только для того, чтобы осилить\исправить изначальное попустительство в сторону пользователя. И что это дает? Возвращает язык к тому, от чего он бежал, а сам юзер в итоге должен изучать дополнительные 60% информации, чтобы в итоге 24\7 быть начеку, отслеживая всякие "поднятия" и прочую хуйню, которая ни на минуту его не расслабляет и не делает его жизнь легче, хотя сам юзер мог бы приучить себя к самоорганизации и упростить себе жизнь многократно.

Аноним 22/07/22 Птн 10:32:33 2412647 754
>>2412638
>отключается в первую очередь из-за такой херни как на скрине
У этого вроде есть даже определение, типа телескопический эффект.
Аноним 22/07/22 Птн 10:40:56 2412651 755
>>2412645
>Если это не перечисления, то вписываю туда уже существующие переменные, типа (X, Y, Width, Height), которые уже говорят сами за себя

ты вообще о чем? где ты в ВЫЗОВАХ методов прописываешь имена параметров? В сигнатурах понятно что имена есть, но в В ВЫЗОВАХ ты прописываешь ТОЛЬКО ЗНАЧЕИЯ
и ситуация вида
(356, 80, 45, 90)
вполне норма, если тебя не очень высокоуровневый код, где у каждого параметра обязательно есть именованная переменная.

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

про перечисления не в тему ибо перечисления это перечисления, а флаги это флаги и опциональные параметры - это опциональные парамтры (то есть могут быть не только true/false)
Потому и плодят разные Options, а не перечисления заводят.

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


Аноним 22/07/22 Птн 10:44:45 2412654 756
>>2412645
то есть понятно что код должен быть самодокументируемым.
но нужно же и меру знать
если метод принимает 5 bool
то я не буду заводить 5 констант только ради того чтобы передать их в метод и были имена.

к тому же методы пишешь НЕ ТЫ
ты их ТОЛЬКО ВЫЗЫВАЕШЬ
и хотелки "а вот они должны принимать" можешь отправить разве что в спортлото

я лучше использую именованные параметры, которые использую разве что я, да и IDE с радостью их потрет при первой возможности
Аноним 22/07/22 Птн 10:48:40 2412658 757
>>2412651
>ты вообще о чем? где ты в ВЫЗОВАХ методов прописываешь имена параметров?
мда...
x int = 100;
y int = 200;
SetPosition(x, y);

>(356, 80, 45, 90) вполне норма, если тебя не очень высокоуровневый код
Я прямо сейчас готов растерзать таких пидорасов, которые вот так и сделали и мне приходится тратить драгоценные часы, чтобы написать пути обхода. Пишу плагин для одной проги, у которой ширины окон железобетонно вбиты.

>про перечисления не в тему ибо перечисления это перечисления, а флаги это флаги и опциональные параметры - это опциональные парамтры
Охуенный аргумент:
— Ваша мать - шлюха
— Моя мать не в тему, потому что мать это мать, отец это отец, бабушка это бабушка.
Аноним 22/07/22 Птн 10:50:15 2412660 758
>>2412654
>если метод принимает 5 bool
Это уже странно.

>то я не буду заводить 5 констант только ради того чтобы передать их в метод и были имена
Ясно.
Аноним 22/07/22 Птн 11:02:00 2412669 759
>>2412658
>SetPosition(x, y);
Ну ты так написал, прямо постарался (хотя я не верю что ты так пишешь), скорее так
SetPosition(x: 100, y: 200);
а 1000 людей так на написали, потому что у них нет такого правила, а у языка нет средств для этого.

>Я прямо сейчас готов растерзать таких пидорасов, которые вот так и сделали
как видишь, ТАК ДЕЛАЮТ и ты вынужден это читать
(то что это захардкожено и создает тебе проблем - это уже проблемы другого плана и к теме отношения не имеют. ты до сих пор путаешь захардкоженность и читаемость)

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

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

Аноним 22/07/22 Птн 11:18:07 2412682 760
Решарпер же все ещё лучше чем IntelliSence?
Аноним 22/07/22 Птн 11:45:11 2412711 761
>>2412669
>Ну ты так написал, прямо постарался
Я так и пишу, потому что так или иначе к моменту использования
нашей условной функции SetPosition, у меня уже сформируются определенный набор переменных — либо они приходят из аргументов, либо появляются по ходу. Это не я себя заставляю, так получается естественным образом. И чтобы я на самом старте юзал SetPosition(x: 100, y: 200), это один случай на миллион. Это может подходить только к примитивным структурам типа поинта или ректенгла, да и то не всегда.

>как видишь, ТАК ДЕЛАЮТ и ты вынужден это читать
Такие пидорасы должны страдать, и судя по тому что Pixolodgic продала свою жопу Maxon, а перед этим мучались в гиене собственного кода, думаю наказание было исчерпывающим. Таких ни джаваскрипт, ни питон не исправит.

>не все впихивается в перечисления
Не все перечисления впихиваются в перечисления? Я написал два способа передачи: перечисления и через переменную. Случай с SetPosition(x, y); — это и есть второй вариант. Напрямую значение никто не передает.

>код начинает пахнуть если больше 5 параметров
Естественно, но опять же, у тебя естественным образом должны сформироваться переменные к моменту передачи аргументов в функцию. Если это не так, то стоит задуматься, а насколько адаптивен твой код. Ты вот критикуешь сишарп, но ты даже сам не осознаешь проблему, которую ты себе создал питоном.
Аноним 22/07/22 Птн 11:45:37 2412712 762
>>2412596
А нахуя они это делают, флуент билдер еще не изобрели?
Аноним 22/07/22 Птн 11:54:22 2412723 763
>>2412596
Ему видите-ли лень писать билдер и хочется здесь и сейчас, а еще ему лень объявлять переменные, поэтому в функцию он передает прямо числа. Там терминальная стадия говнокодинга.

И вот казалось бы, если будет такой волшебный язык, который будет потакать всем его желаниям, то что он получит в итоге? Топорную программу, модули которой не работают сообща.
Аноним 22/07/22 Птн 12:50:39 2412779 764
>>2412711
>SetPosition(x: 100, y: 200), это один случай на миллион
именно. обычно так никто не пишет, потому что IDE этому сопротивляется. обычно пишут
SetPosition(100, 200, false, true)
ты можешь сколько угодно разглагольствовать "а вот я", но я могу открыть рэндомную репку на гитхабе и найти где в функцию прямо передается true/false

И в итоге ты читаешь чужой код а там сплошное SetPosition(100, 200, false, true) и это не является захардкоженым, а деталями реализации. Все так "захардкоженность" подразумевает то потенциальное желание заменить, а это совершенно другое.

>Такие пидорасы должны страдать
но страдают не они. страдаешь ТЫ. они пишут - им норм, а заставить писать иначе ты не можешь, да и не хочешь.

> Я написал два способа передачи: перечисления и через переменную. Случай с SetPosition(x, y); — это и есть второй вариант
тогда я вообще не знаю о чем ты. покажи мне вызов ЧУЖОГО метода по своему по умному

>у тебя естественным образом должны сформироваться переменные к моменту передачи аргументов в функцию
софтистика какая то. какие то проблемы уже питон создает
я ВСЕГО ЛИШЬ ПРОШУ писать читаемо и все. И питон на уровне языка дает возможность ЗАПРЕТИТЬ писать вызов функции.
Ты сам жалуешься, что другие написали непонятно, но при этом запрещаешь им запретить писать непонятно






Аноним 22/07/22 Птн 14:15:11 2412855 765
Запись данных на диск для обмена информацией это нормально? Просто у многих ССД и они трясутся над количеством перезаписей.
Аноним 22/07/22 Птн 14:35:45 2412869 766
Возник еще тупой вопрос про DI. Вот я регаю зависимость <IPizda, Pizda>. А что делать, если у меня несколько имплементаций? Типа BritayaPizda, NebritayaPizda и они мне нужны одновременно, например в конструкторе одного класса одно, а в конструкторе другого другое?
Аноним 22/07/22 Птн 14:43:14 2412874 767
Аноним 22/07/22 Птн 14:45:25 2412877 768
>>2412869
ты должен регать каждую имплементацию
<IPizda, Pizda>
<IPizda, BritayaPizda>
<IPizda, NebritayaPizda>

в итоге при резолве одного будет хз какой, а при резовле IEnumerable<IPizda> получишь список

вот так же с IHostedService происходит - там же куча имплементаций

но вообще все зависит от конкретного IoC. я говорю про мелких
Аноним 22/07/22 Птн 14:48:39 2412881 769
>>2412869
вернее при резолве одного должен быть последний, что очень годно, но это "должен быть", а на деле хз что в реальности в разных IoC контейнерах
Аноним 22/07/22 Птн 14:52:03 2412889 770
>>2412869
> и они мне нужны одновременно
возможность указать зависимости по условию поддерживает не каждая либа
Если у тебя реализация интерфейса и ты делаешь вторую и тебе не нужен список, а просто хочешь ОДНОМУ классу подсунуть свою реализацию,а другим дефолтную и у тебя либа от мелких - то у тебя проблемы

так что ...не нужны они тебе одновременно.
Аноним 22/07/22 Птн 15:19:19 2412918 771
>>2412874
Между двумя приложениями. Я знаю про MemoryMapping, но мне надо передать массив стрингов.
Аноним 22/07/22 Птн 15:23:25 2412923 772
Шарпоманьки, через 5 лет вы будете нахуй не нужны, аи от майков сам будет писать код, посадят только макаку таб кликать.
Аноним 22/07/22 Птн 15:33:39 2412935 773
>>2412923
Если даже ии может писать нормальный код, получается, язык идеальный
Аноним 22/07/22 Птн 15:35:54 2412938 774
>>2412923
Для кого он будет писать код через 5 лет когда через год дебилы на людях забросают друг друга ядеркой?
Аноним 22/07/22 Птн 15:47:30 2412949 775
>>2412918
ну это ж не единственный способ IPC
сокеты, пайпы, параметры и т.д - никто не отменял
Аноним 22/07/22 Птн 16:09:21 2412977 776
>>2412889
>так что ...не нужны они тебе одновременно.
А как же всякие стандартные случаи, когда например есть интерфейс IEmployee и его дефолтные имплементации типа: Stuff, Clerks, Managers и так далее? Для каждого такого класса делать отдельный интерфейс и наследовать его от IEmployee?
Аноним 22/07/22 Птн 16:22:14 2412990 777
>>2412923
Когда это произойдет, то твоя обрыганная джава уж тем более нахуй никому не нужна будет, клован.
Аноним 22/07/22 Птн 16:22:57 2412991 778
>>2412869
У тебя не должно быть моментов где тебе нужно регистрировать несколько имплементаций. Регистрируешь ты только сервисы, никаких нахуй `IEmpoyee` и прочую хуйню.
Аноним 22/07/22 Птн 16:30:28 2413002 779
>>2412977
Покажи код, что ты регаешь? DI облегчает жизнь только для сложных сервисов зависящих от других сервисов, доменную логику (например класс который чистит папки) зачастую не регают. Регистрируют только сервисы уровня приложения (application services). Сервисы уровня приложения вызывают уже конкретные методы доменной логики
Аноним 22/07/22 Птн 16:31:37 2413003 780
>>2412779
>И питон на уровне языка дает возможность ЗАПРЕТИТЬ писать вызов функции
А чем тебе C# мешает добавить private?
Аноним 22/07/22 Птн 16:45:29 2413020 781
>>2412977
Ну обычно IoC мыслит более фундаментальными вещами. стринги же не регистрируешь. IEmployee все таки не сервис и делать ему в контейнере нечего

Но вообще да, не хватает такой фичи у мелких. Как и в декораторы не умеет нормальные (скрутор это костыль)

Аноним 22/07/22 Птн 16:48:10 2413026 782
>>2413003
ты просто проустил тему, а я там похерил часть предложения воюя с формой (дебильная кнопка стикеров падла)

речь шла про запрет писать

foreach ... in Product(true, false, false, true, true)

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

foreach ... in Product(true, false, false, simplify: true, reverse: true)

что добавляет читаемости
Аноним 22/07/22 Птн 17:00:29 2413036 783
>>2412991
А как тогда быть с зависимостями типа IEmployee?

>>2413002
Я пока консольки только пишу, написанное тобой для меня - мунспик.
Аноним 22/07/22 Птн 17:03:06 2413040 784
>>2413036
передавать в конструктор явно. как и другие объекты, что не являются сервисами.
Аноним 22/07/22 Птн 17:04:37 2413044 785
>>2413036
>А как тогда быть с зависимостями типа IEmployee?
Покажи код, все что не сервисы - передаётся руками.

>Я пока консольки только пишу, написанное тобой для меня - мунспик.
Та дропай нахуй, чем сложнее ебатория тем лучше разберешься, тем более судя по всему ты не особо понимаешь что такое эти сервисы. Захуяч какой-нибудь интернет магазин на WPF, сделай всё по канону DDD. Стековерфлоу и двач тебе если надо всё объяснит если будут проблемы.
Аноним 22/07/22 Птн 18:07:48 2413197 786
>>2413036
> Я пока консольки только пишу, написанное тобой для меня - мунспик.
Да просто DI нужен только чтобы самые высокоуровневые системы связать, для всякой мелочи нинужон
Аноним 22/07/22 Птн 18:10:17 2413199 787
>>2413026
Ну сделай паттерн билдер в чем проблема
Аноним 22/07/22 Птн 18:11:34 2413203 788
>>2413199
мне для каждой пары параметров билдер делать?
Аноним 22/07/22 Птн 19:36:59 2413333 789
nick-young-conf[...].jpg 20Кб, 800x450
800x450
>>2413044
>интернет магазин
>WPF
Аноним 22/07/22 Птн 19:41:42 2413340 790
>>2413333
>>интернет магазин
>>WPF
Да, согласен. Под конец рабочего дня совсем расплавило мозг. Да на самом деле похуй на чем и где практиковать, везде юзается один подход но конечное говно доходит до заказчика в виде десктоп говна либо в виде сайтика, меняется тока вьюшка.
Аноним 22/07/22 Птн 19:49:45 2413349 791
>>2413340
А насколько мне в будущей работе вообще нужно будет уметь писать какие-то сложные консольные приложения? Спрашиваю не только про уровень джуна, но и дальше.
Аноним 22/07/22 Птн 20:02:55 2413373 792
>>2413333
Почему бы не сделать десктоп приложение для интернет магазина? Охуенная же идея, почему никто еще до такого не додумался? Можно включить автозапуск при старте системы и пихать рекламу в уведомления.
Аноним 22/07/22 Птн 20:06:21 2413382 793
>>2413373
Хотя бы потому, что поисковики не смогут такое проиндексировать, только ссылку на сайт для скачивания клиента. Ну а клиент ставить мало кто захочет, быстрее в другом магазине купить.
Аноним 22/07/22 Птн 20:14:22 2413392 794
>>2413349
Шанс близок к 0. Мне пригодилось консолька 1 раз когда надо было сделать мини-команды по дрочке видео-файлов с помощью fmpeg, но там настолько всё просто что ваще пиздец. олсо юзал чью-то либу под названием CliFx, так что если нужно будет дрочиться с команд-лайн задачкой то вот те в помощь полезная либа. Так же есть от майкрософтов CommandLineApplication, но она конченая и неудобная.
Аноним 22/07/22 Птн 21:04:37 2413452 795
Как не впасть в гордыню, когда сравниваешь свою реализацию с чужой и твоя всем лучше, кроме разве что читаемости?
Просто пиздец у меня писька встала, когда сравнил легаси штуку со своей и внезапно оказалось - что мой код работает в 1000 раз быстрее. ТЫСЯЧА, блядь. 10 единовременных активных сессий коммуникации, против 10к. Сука. А сверху - на эти 10 сессий - старое добро жрет 4 гига оперативы, у меня на 10к - гиг. Блядь. Я просто охуеваю с себя. Как же я хорош. Мог бы дотянуться до хуя - сам себе бы отсосал.
Аноним 22/07/22 Птн 21:09:32 2413467 796
>>2413452
Никак, ибо на крестах ты смог бы добиться икса примерно в 1кк раз. Тебе ещё расти и расти.
Аноним 22/07/22 Птн 21:12:06 2413474 797
>>2413467
Та были бы менеджеры не так запуганы крестами - я бы на крестах и писал. Кек. Другое дело, что на шарпе я реализацию свою сделал за 2 месяца, а думаю с крестами бы пришлось ебаться не меньше полугода.
Аноним 22/07/22 Птн 21:14:31 2413479 798
>>2413474
>я реализацию свою сделал за 2 месяца, а думаю с крестами бы пришлось ебаться не меньше полугода
Ты там целый сервис переписывал что ли?
Аноним 22/07/22 Птн 21:17:52 2413487 799
>>2413479
Не. Коммуникационный сервер.
Аноним 22/07/22 Птн 22:06:55 2413561 800
>>2413487
А что коммуницирует?
Аноним 22/07/22 Птн 22:10:36 2413563 801
Бля, какой пет на неткоре замутить чтобы меня потом с распростёртыми объятиями на работку взяли?
Аноним 22/07/22 Птн 22:49:07 2413584 802
>>2413563
Любой. Главное сделай его максимально хорошо. В идеале - это должен быть проект который можно было бы взять и начать продавать.
Ну, давай с простого. Ты можешь сделать калькулятор. Так вот. Если ты делаешь его на отъебись(в винформах накида кнопок, на каждую повесил обработчик и типа ЗБС)))) - никто не похвалит тебя и брать на работу будут только в случае, если острый дефицит кадров. А можешь сделать - заебок, чтобы и дизайн эргономичный, и код был: ВАХ, КРАСЫВА, и фичей напихать которых часто не хватает(допустим - для программисткого калькулятора часто не хватает фичи с отображением как текст, ну пиздец бесит, мне приходится лезть в гугол и смотреть, либо открывать таблицу ASCII, вот хули никто не сделает?) И при этом сделаешь это быстро(нахуй перфекционистов и прочих мутителей воды в команде, нужен здравый смысл, когда мы понимаем, что нужно сделать фичу и сделать ее нормально, а не уходим в какие-то пространные достижения идеала хуй пойми в чем) Ну и т.д.
Суть я думаю ты уловил. Чтобы тебя без реального опыта хотели с руками оторвать - нужно чтобы было видно, что ты не на отъебись и только то что тебе интересно делаешь, а как раз - способен сесть и сделать хорошо, но при этом за разумные сроки.
Аноним 22/07/22 Птн 22:57:05 2413588 803
>>2413584
Да ну какой калькулятор лол, я же не пусси совсем, 2 года суммарно в вебе отпахал, но на жсе. Мне нужен вариант который я за несколько вечеров на связке Рякт+С#+pg/монга/кассандра ебану, задеплою и у меня и всё что я до этого выучил по шарпу устаканится и нихуёвый такой плюсик мол вот я крутой, могу весь проект в соло тащить.
Аноним 22/07/22 Птн 23:00:51 2413591 804
>>2413588
Ну, тогда пили совместное редактирование документов, с разграничением прав, версионированием, чатиком и возможностью отобразить битовую строку как текст.
Аноним 22/07/22 Птн 23:09:38 2413595 805
>>2413591
Слишком дохуя всего для пета, хватит троллить.
Аноним 22/07/22 Птн 23:15:14 2413597 806
>>2413595
Это 3 недели ленивой работы для одного человека. Для пета - самое то. Разве что битовую строку как текст - может занять много времени, не зря же ее никто не хочет внедрять.
Аноним 22/07/22 Птн 23:22:57 2413602 807
>>2413597
Я и говорю - дохуя. Я готов выделить не более 5 дней на работу.
Аноним 23/07/22 Суб 00:19:47 2413634 808
Бля. Решал сейчас задачку на литкоде. Решил, результаты в районе 30-40% по памяти и времени.
Там в одном месте foreach по string.Reverce()
По приколу заменил на for с перебором индексов от n-1 до 0 и вытаскивание чара
Результаты по времени и памяти 95%+
Ебать я охуел с этого
Аноним 23/07/22 Суб 00:22:22 2413637 809
Ну и кстати: есть возможность проитерироваться форичем в обратном порядке без аллокаций?
Аноним 23/07/22 Суб 01:09:40 2413675 810
>>2413637
Да. Делаешь структуру-итератор которая ходит в обратном порядке
Аноним 23/07/22 Суб 09:20:07 2413790 811
>>2413634
>>2413637
foreach в принципе не предназначен для вытаскивания чего-либо в определенном порядке. Ну т.е. это можно сделать (причем за счет самой перебираемой коллекции), но он для этого не предназначен от слова совсем.
Аноним 23/07/22 Суб 09:27:14 2413796 812
>>2413790
А почему тогда если я пишу перебор циклом, решарпер мне пишет "это хуйня, давай я на форич переделаю"?
Аноним 23/07/22 Суб 10:48:10 2413832 813
изображение.png 11Кб, 458x111
458x111
Можно как-то сделать, чтобы подсказка от ide отображалась перед атрибутами?
Аноним 23/07/22 Суб 13:36:58 2413982 814
>>2409499
Да, спасибо что поправил. На сколько мне известно, контекст синхронизации сейчас по сути объявлен только в десктопе, но там ты полюбас вернешься в UI поток. Ещё он раньше был объявлен в старых версиях ASP .NET MVC, но его полностью выпилили из ASP .NET Core
Аноним 23/07/22 Суб 13:41:31 2413984 815
>>2411246
1. Вообще похуй. Начни с MSDI. В ASP .NET Core там один хуй будет фасад поверх контейнера. Разница будет заключаться только лишь в деталях конфигурации.

2. Какую-то хуйню ты видел. Вот этот чувак например реализовал более менее норм DI.

https://www.youtube.com/watch?v=dCkYP03lXOs
Аноним 23/07/22 Суб 14:19:44 2414007 816
>>2413796
ну. во первых, он не самый умный и мне бывало переписывал в нерабочую конструкцию
Во-вторых, он может видеть что у тебя List, а не Ienumerable и можно без проблем шагать от от обратного надеясь на оптимизации
но скорее первое
Аноним 23/07/22 Суб 17:42:51 2414126 817
>>2413796
>почему
В душе не ебу, я не пользуюсь решарпером.
Ну и опять же мой поинт был в том, что цикл foreach предназначен для перебора 'всех элементов коллекции', но он не предназначен для перебора элементов 'в определенном порядке'. Основное его назначение взять каждый элемент коллекции и выполнить тело цикла.
Ты не можешь контролировать порядок из самого цикла, т.к. это полностью на стороне перебираемой коллекции. В цикле For можешь (если есть индексатор), в foreach нет.
Возможно у тебя в решарпере стоит настройка, что он видит, что твой способ перебора в for кладет хер на порядок и предлагает переделать на вариант с foreach

Аноним 23/07/22 Суб 17:53:02 2414149 818
>>2414126
Вероятно суть в том, что энумерация строки гарантированно идёт 0 -> n-1
Аноним 23/07/22 Суб 17:53:46 2414152 819
>>2413984
Зашёл посмотреть видос по шарпу а мне зачем то политотой в уши ссут, 10/10.
Аноним 23/07/22 Суб 18:07:27 2414170 820
>>2413790
> foreach в принципе не предназначен для вытаскивания чего-либо в определенном порядке.
Предназначен, лол, ты чо рофлишь?
Он перебирает в таком порядке, какой IEnumerable даст
Аноним 23/07/22 Суб 18:14:30 2414173 821
>>2413634
Ну как бы в первом случае ты используешь LINQ метод Reverse(this IEnumerable<T>). А он в силу универсальности медленный. У тебя там как минимум одно доп выделение памяти для промежуточного буфера происходит, с копированием строки в него. А скорее всего несколько, так как String не реализует ICollection<T>, а значит нет возможности пойти по быстрому пути и выделить массив памяти нужного размера сразу, а значит он будет пересоздаваться несколько раз, конечно же с копированием из старого в новый. А без материализации в промежуточный буфер нельзя, вдруг ты туда не строку фиксированной длины передавал, а вообще какой-нибудь генератор. Плюс у тебя ещё два енумератора в куче создастся. За тем, чтобы понять какого хуя происходит следует сходить сюда: https://github.com/microsoft/referencesource/blob/master/System.Core/System/Linq/Enumerable.cs

Во втором же случае у тебя просто доступ к элементам массива по индексу, без всяких там выделений памяти, копирований и прочего.
Аноним 23/07/22 Суб 18:17:01 2414176 822
>>2413634
Перезапусти ещё несколько раз, там всегда разные результаты будут. На эффективность надо дрочить только на С++.

Вообще надо исходники посмотреть, во что там этот реверс оборачивается
Аноним 23/07/22 Суб 18:20:53 2414178 823
>>2414173
Я надеялся что у спана есть реверс, но нет. Получается для таких приколов надо самому писать экстеншен.
Аноним 23/07/22 Суб 18:23:06 2414182 824
>>2414176
>На эффективность надо дрочить только на С++
Потому что даже самому нишёвому стартапу похуй, будет ли запрос на ручку обрабатываться 5 секунд или 500 мс
Аноним 23/07/22 Суб 18:26:21 2414189 825
>>2413634
Попробуй сделать так foreach (var s in string.ToCharArray().Reverse())
Аноним 23/07/22 Суб 19:17:12 2414217 826
Сколько книг, статей, примеров и видео не смотрю/читаю никто не юзает in для передачи параметров в метод. Все хуярят по значению и ни о чём не сожалеют. Вопрос - почему? Вопрос 2 - они ебанаты?
Аноним 23/07/22 Суб 19:31:11 2414222 827
>>2414217
in/out-параметры могли высрать только какие-то процедурные шизоиды.
Аноним 23/07/22 Суб 19:38:47 2414229 828
>>2414222
Допустим на второй вопрос ты ответил. Что по первому?
Аноним 23/07/22 Суб 19:44:23 2414230 829
>>2414217
Во-вторых, указав in, вы объявляете о намерении передать аргумент по ссылке. Аргумент, используемый с in, должен представлять расположение, на которое можно сослаться напрямую. Такие же общие правила применяются к аргументам out и ref: вы не можете использовать константы, обычные свойства или другие выражения, возвращающие значения. В противном случае пропуск in в месте вызова сообщает компилятору, что вы разрешите ему создать временную переменную для передачи с помощью ссылки на метод, доступной только для чтения. Компилятор создает временную переменную, чтобы преодолеть некоторые ограничения для аргументов....
Аноним 23/07/22 Суб 20:23:32 2414258 830
>>2414222
Во всём прав. out еще можно понять и это норм, но in - максимально бесполезная хуета.
Аноним 23/07/22 Суб 20:29:36 2414264 831
>>2414222
out нужная вещь, у того же дикшинари trygetvalue его юзает, очень удобного.

in хз
Аноним 23/07/22 Суб 20:32:18 2414266 832
То есть большиство здесь внатуре кладёт свои 14 см на память и хуярит as is? Почему вы на жс пишете? Тоже самое получится, да ещё и быстрее.
Аноним 23/07/22 Суб 20:32:42 2414269 833
>>2414266
>Почему вы на жс не пишете?
Аноним 23/07/22 Суб 20:36:51 2414274 834
>>2414258
Почему бесполезная? Дает понять, что переменная передается по ссылке но не модифицируется.
Аноним 23/07/22 Суб 20:40:04 2414278 835
>>2414266
что не так с памятью?
Аноним 23/07/22 Суб 20:40:22 2414279 836
>>2414266
> кладёт свои 14 см на память
Почему ты на C++ не пишешь? То же самое получится, да ещё и быстрее.
Аноним 23/07/22 Суб 20:42:20 2414282 837
>>2414279
> Почему ты на C++ не пишешь?
Вакансий нет.
Аноним 23/07/22 Суб 20:45:46 2414286 838
>>2414279
Пишу на обоих языках. Ещё вопросы?
Аноним 23/07/22 Суб 20:52:21 2414294 839
>>2414182
Именно из-за этого карта лояльности в пятёрочке применяется секунд 10
Аноним 23/07/22 Суб 20:53:30 2414296 840
>>2414294
>Именно из-за этого карта лояльности в пятёрочке применяется секунд 10
Джвачаю. Очко горит с этих ебаных кодеров на питонах которые приложение банков пишут которые кэширует 500 мб в неделю
Аноним 23/07/22 Суб 20:53:55 2414298 841
Аноним 23/07/22 Суб 20:54:40 2414299 842
>>2414298
А в Тбилиси есть кассы самообслуживания?
Аноним 23/07/22 Суб 20:56:28 2414300 843
16076862308180.mp4 1293Кб, 380x286, 00:00:27
380x286
>>2414299
>А в Тбилиси есть кассы самообслуживания?
Обосрался, ебать ты попустил этого любителя забить хуй на оптимизацию для которого нет разницы в 500 мс и 5 сек
Аноним 23/07/22 Суб 20:56:47 2414301 844
>>2414299
Хз, я Грузию видел только в фильме Кавказская пленница.
Аноним 23/07/22 Суб 21:56:53 2414322 845
>>2414286
да есть. что не так с памятью без in и суперски с in?
Аноним 24/07/22 Вск 03:09:06 2414459 846
>>2414170
Блять, да хули вы тупые то такие.
Еще раз. Используя foreach ты никак не можешь повлиять на порядок обработки элементов внутри самого цикла. Порядком заведует исключительно сама коллекция. Т.е. тебе сначала нужно произвести манипуляции с ней, задав порядок выдачи элементов енумератором и потом уже пихать ее в foreach.
В то время как в for ты именно, что сам определяешь этот порядок, без дополнительных манипуляций с самой коллекцией.
Аноним 24/07/22 Вск 09:03:34 2414506 847
>>2414459
Коллекция это коллекция. Она просто хранит.
Порядком обхода ведает итератор. Это отдельная сущность. Конечно коллекция имеет дефолтный итератор.
но coll.Reverse() выдает свой итератор ReverseIterator<TSource>

Вот только ReverseIterator<TSource> хоть и реверсит, но делает это тупо материализацией во временный буфер с очевидным перераходом памяти на ровном месте.
Аноним 24/07/22 Вск 12:53:08 2414652 848
>>2414459
Че ты несёшь
> Используя foreach ты никак не можешь повлиять на порядок обработки элементов внутри самого цикла.
Они идут ровно в том порядке, в каком их выдаёт енумератор
> Порядком заведует исключительно сама коллекция.
Да.
> Т.е. тебе сначала нужно произвести манипуляции с ней, задав порядок выдачи элементов енумератором и потом уже пихать ее в foreach
Ты же только что выше сказал, что порчдком заведвет сама коллекция(енумератор, который она выдаёт, в случае листа он обходит элементы с первого по последний)
Аноним 24/07/22 Вск 16:27:07 2414904 849
>>2414152
Да, напрягает эта хуйня порой. Но чисто по технической части контент заебатый.
Аноним 24/07/22 Вск 17:31:23 2415007 850
Какой модификатор доступа будет у типа если не указывать его?
Аноним 24/07/22 Вск 17:34:42 2415014 851
Qt или WPF?
Аноним 24/07/22 Вск 17:44:20 2415030 852
Аноним 24/07/22 Вск 17:51:37 2415051 853
Сап шарп, может кто знает как програмно шарп кодом сгенерить self-extracted .exe или мб какой-то йоба инсталлер библиотеку для этого?
Пока что я нашел:
1) https://products.aspose.com/zip/net/
Очень удобно, но гуи на ангельском, конечный юзер может не понять. Хотя на крайний случай я его таки использую.
2) https://devindeep.com/creating-a-self-extracting-executable-in-c-source-code-included/
Вроде годно, простой messagebox с текстом который можно указать. Правда он нихуя не работает. И я абсолютно не понимаю почему.
Проект сбилдили на 4.5, в майках на сайте сдк уже нету, обновил до 4.8, правда на что это может влиять я не понимаю т.к. там просто запуск консоли с параметрами путей до 7z либ и екзешников. Конечный exe выдает ошибку 7-zip что файл не найден. Да, я глобальные пути поменял.
Еще варианты?
Аноним 24/07/22 Вск 17:51:50 2415052 854
image.png 858Кб, 1200x801
1200x801
Аноним 24/07/22 Вск 17:53:46 2415060 855
>>2415051
>Сап шарп, может кто знает как програмно шарп кодом сгенерить self-extracted .exe
Гуглишь консольные команды для этого говна и делаешь утилиту которая запускается где-нибудь в фоновом режиме. Только сделай условие на текущее ОС, команды могут быть разными.
Аноним 24/07/22 Вск 18:22:49 2415086 856
Можете привести пример случая, где нужно апкастить класс? Делал это только в тестовых проектах при обучении. Там есть помимо явного приведения ключевые слова as, или is, на тот случай, если приведение не получится выполнить, но у меня ещё не случалось такого. Всем спасибо, надеюсь ясно выразился.
Аноним 24/07/22 Вск 18:26:42 2415091 857
>>2415086
В теории тебе может пригодиться что угодно когда угодно. На практике - всё индивидуально.
Аноним 24/07/22 Вск 18:32:52 2415100 858
>>2415086
К примеру для оптимизации. В реализации многих linq-методов есть попытка апкастнуть IEnumerable к ICollection или IList, так как многие операции можно в таком случае выполнить эффективней (к примеру, при вызове ToArray можно сразу выделить массив нужного размера под все элементы).
Аноним 24/07/22 Вск 18:33:55 2415104 859
>>2415086
Ну, допустим тебе досталась сторонняя библиотека с оч странной архитектурой.
Возвращается предок. Но у наследника есть нужный тебе метод, которого нет в родителе и он тебе нужен здесь. Ты точно знаешь что вернулся экземпляр наследника. Ты берешь и апкастишь.
Ну и в таком духе штуки.
Короче, это примеры реальных кейсов. Можно плеваться, что архитектура плохая и все такое, но ты не весь код на планете пишешь, и тебе никто не даст миллион лет делать адаптеры-хуяптеры и прочее, иногда нужно просто взять и сделать вчера.
Аноним 24/07/22 Вск 18:36:18 2415109 860
Почему создатели языка выбрали стрёмный с-стайл каст в качестве каста? Почему не какой-нибудь as T?
Аноним 24/07/22 Вск 18:36:40 2415111 861
Аноним 24/07/22 Вск 18:39:10 2415116 862
>>2415104
Блин. Я довен кажется и перепутал апкаст с даункастом(((
Аноним 24/07/22 Вск 18:39:52 2415119 863
Аноним 24/07/22 Вск 18:42:26 2415128 864
>>2415119
Ну это уже когда даже гей-порно не вставляет.
Аноним 24/07/22 Вск 18:47:16 2415140 865
>>2415014
Ну а если без шуток то вопрос не имеет смысла

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

А если кросс, то выбор из Qt или WPF очевиден - кто из них кросс
Аноним 24/07/22 Вск 19:24:51 2415215 866
>>2415109
А что в нем стремного? Удобный каст. Разве что плюсовиков пугает.
Аноним 24/07/22 Вск 19:34:19 2415228 867
>>2415109
"as T" тоже есть. Только работает как dynamic_cast в плюсах
Аноним 25/07/22 Пнд 09:53:55 2415614 868
>>2415086
Самое очевидное - рефлексия.
Аноним 25/07/22 Пнд 11:40:06 2415686 869
>>2415140
> А если кросс
Только кросс! Всегда кросс!
>>2415014
> Qt или WPF?
Ни тот ни другой.
Юзай оверлейные тулкиты, которые на винде выводят твои абстрактные окошки через ВПФ/ВинФормс, на линуксе через КТ/ГТК, на маке через маковское говно.
Например, я выбираю графический тулкит Eto.Forms.
Аноним 25/07/22 Пнд 11:56:44 2415710 870
>>2415686
> Юзай оверлейные тулкиты, которые на винде выводят твои абстрактные окошки через ВПФ/ВинФормс, на линуксе через КТ/ГТК, на маке через маковское говно.
То есть Qt
Аноним 25/07/22 Пнд 12:35:41 2415756 871
>>2415710
Я пробовал вкатиться в кют, но к своему стыду не обнаружил нормальных, юзабельных врапперов в шарп. Ткни носом, анончик, какой враппер ты юзаешь?
Аноним 25/07/22 Пнд 14:50:04 2415866 872
Безымянный.png 11Кб, 998x515
998x515
Сап, аноны, есть весьма ебанутый вопрос

Есть задача - реализовать этакий прототип хэш таблицы (возможно, используется метод цепочек)
На входе дается строка ключа навроде "farhncxs" и строка данных
Нужно создать многомерный вложенный список (в данном случае уровень вложенности 8), в котором каждая буква ключа будет является идентификатором вложенного списка, и так до последнего символа
В последнем списке будет пара ключ-строка данных
Собственно вопрос - как реализовать класс для этой таблицы
Пикча как пример, как это должно работать

Не бейте тапками, в C# только начал вкатываться
Аноним 25/07/22 Пнд 16:06:57 2415990 873
>>2415686
>Только кросс! Всегда кросс!
сочувствую.
Аноним 25/07/22 Пнд 16:20:12 2416015 874
Неужели нет современной литературы по .NET на русском?
Аноним 25/07/22 Пнд 16:32:12 2416029 875
Аноним 25/07/22 Пнд 18:23:43 2416140 876
Для юнити шарп прям хай-эндовый нужен? Прям придется сеньером становится шарповым чтобы допустим инди поебень как неон вайт сделать?
Аноним 25/07/22 Пнд 18:32:26 2416145 877
>>2416140
Нет, для инди-поебени шарп можно учить на отъебись, запомнил базовый синтаксис и копай API юнити. Можно вооьще не учить, там есть какое-то no-code говно для юнити.
Аноним 25/07/22 Пнд 18:34:50 2416149 878
>>2416145
То есть я пройду Дударя без задней мысли, мне этого хватит сделать допустим бомжовый дарксоулс с аниме тянкой?
Аноним 25/07/22 Пнд 18:36:03 2416152 879
Короче хули бухтеть да? Пойду обмажусь вашим калом.
Аноним 25/07/22 Пнд 18:36:56 2416154 880
И да, спасибо. А то чет на секунду тильт словил. Игры ведь делают даже школьники, хули мне 54 летнему динозавру.
Аноним 25/07/22 Пнд 18:38:20 2416157 881
Оооооо у дударя курс еще под юнити. Ахуеть, вот это нахуй технологии, вот это коллективный разум.
Аноним 25/07/22 Пнд 19:44:14 2416260 882
>>2416149
Кодить ты будешь 5 минут своего времени, все остальное это рисовать в блендере и накидывать анимации на скелет, а эта та еще ебатория. Большая часть времени уходит в модели, анимации, звуки, левел-дизайн и прочая залупня.

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

А ну тебе еще обязательно надо базово знать тригонометрию, синус/косинус и вот это вот все + вектора и простую арифметику, математики применять будешь оч много.

Тогда да, попробовать можешь.

Я когда в геймдев ударился godot, то ахуел от того скок пришлось учить, потому что в школе не учил вообще ничего, даже не знал кто такой Эйлер и как находить синус.
Аноним 25/07/22 Пнд 19:44:30 2416263 883
Аноним 25/07/22 Пнд 20:37:03 2416308 884
2022-07-2520-30[...].png 1Кб, 151x129
151x129
Сторонее приложение передает в функцию моей библиотеки строку. Там кракозябры (пикрил).
Текст: ;Голова.;19

Я точно знаю, что передаваемый в функцию текст на русском.
Онлайн декодер пишет, что это WINDOWS-1251.
Как это конвертнуть?


Аноним 25/07/22 Пнд 21:07:12 2416320 885
.png 129Кб, 794x781
794x781
>>2415866
Я бы так дела. Может быть сверху какой-нибудь итератор бы намутил.
Аноним 25/07/22 Пнд 21:09:36 2416325 886
>>2416320
наглядный пример какой треш и мазохизм эти inline hints
Аноним 25/07/22 Пнд 21:11:18 2416327 887
>>2416325
Ну, я их обычно и не использую. Говно без задач. Просто знакомый просил показать как их включать. А я так и не выключил.
Аноним 25/07/22 Пнд 21:13:09 2416331 888
>>2416320
А еще дикая любовь к касту через as
при том что даже студия ругается, но все равно.
Аноним 25/07/22 Пнд 21:15:20 2416333 889
Аноним 25/07/22 Пнд 21:15:28 2416334 890
Аноним 25/07/22 Пнд 21:27:17 2416347 891
>>2416140
> чтобы допустим инди поебень как неон вайт сделать?
Ты неонвайт в одно омежье ебало не вывезешь. Погугли сколько там народу участвовало в девелопе.
Аноним 25/07/22 Пнд 21:51:26 2416377 892
>>2416260
>А ну тебе еще обязательно надо базово знать тригонометрию, синус/косинус и вот это вот все + вектора и простую арифметику, математики применять будешь оч много.
Ты забыл еще матрицы и комплексные числа (особенно если в 3Д лезть)
Аноним 25/07/22 Пнд 22:22:46 2416446 893
Где кроме бэка и десктопа есть работа в шарпее?
Аноним 25/07/22 Пнд 22:30:21 2416458 894
>>2416446
Да, геймдев. Разработка библиотек для самого шарпа. Можешь например добавить поддержку линукса, я тогда тебе лично буду 10% зп донатить.
Аноним 25/07/22 Пнд 22:32:11 2416460 895
Аноним 25/07/22 Пнд 22:34:03 2416462 896
>>2416460
А мауи скомпилится и запустится тоже?
Аноним 25/07/22 Пнд 22:36:11 2416465 897
>>2416462
Вот тут хз, с гуи не работал.
Аноним 25/07/22 Пнд 22:54:39 2416481 898
>>2416462
Не скомпилится и не запустится, из него намеренно выпилили линукс.
Аноним 25/07/22 Пнд 22:55:46 2416484 899
Так что потенциал MAUI не намного больше, чем у WinForms/WPF.
Аноним 25/07/22 Пнд 23:01:43 2416494 900
16076862308180.mp4 1293Кб, 380x286, 00:00:27
380x286
>>2416481
>из него намеренно выпилили линукс.
Я когда это осознаю - у меня едет крыша. Вы же в курсе что там под копотом комплится в джаву просто потому что нет поддержки линукса, т.к андроид написан на базе ядра линукс?
Аноним 25/07/22 Пнд 23:04:25 2416497 901
>>2416462
> А мауи скомпилится и запустится тоже?
Нахуя тебе переобутый в полёте хамарин? Юзай кроссплатформенные тулкиты, которые на каждой из поддерживаемых систем разворачиваются в нативную графическую подсистему, например, в линуксе в ГТК, в шынде шын32, в макоси макошное говно.
Например, из таких тулкитов есть Eto.Forms.
Аноним 25/07/22 Пнд 23:06:09 2416500 902
>>2416497
>Eto.Forms
Зачем если есть Qt?
Аноним 25/07/22 Пнд 23:21:44 2416510 903
>>2416500
Нет кьюта. По крайней мере я не нашел пригодного к продакшону враппера в шарп.
Аноним 25/07/22 Пнд 23:24:55 2416514 904
>>2416510
Почему ты не выучишь кресты? Зная шарп и их ты станешь ультимативной прогерской машиной.
Аноним 25/07/22 Пнд 23:27:05 2416515 905
>>2416500
Шарп проще и приятнее крестов, даже современных.
Аноним 25/07/22 Пнд 23:30:31 2416518 906
>>2416514
> Почему ты не выучишь кресты?
Потому что у них омерзительные закорючки и звёздочки вместо человеческого синтаксиса. Я лучше потерплю лишние 500 тактов проца и лишние 300 Мб бинарника, чем полезу в это дерьмо. Нахуя ты крестовыблядок в шарпотред залез? Репортом по айпи уебать?
Аноним 25/07/22 Пнд 23:33:49 2416521 907
>>2416518
Чё такой нервый? Сходи к мозгоправу, попей колёсики.
Аноним 25/07/22 Пнд 23:40:51 2416525 908
>>2416521
Ты сходи в свой тред для начала.
Аноним 25/07/22 Пнд 23:43:22 2416526 909
Аноним 25/07/22 Пнд 23:47:03 2416527 910
Аноним 25/07/22 Пнд 23:49:50 2416529 911
>>2416527
Не заводись ты так. Я одинаково хорошо пишу что на плюсах, что на шарпе, что на жсе с питоном.
Аноним 25/07/22 Пнд 23:51:07 2416531 912
>>2416529
Больше ты не будешь писать на шарпе.
Аноним 25/07/22 Пнд 23:52:25 2416532 913
Аноним 25/07/22 Пнд 23:53:44 2416535 914
>>2416532
Бабка надвое сказала.
Аноним 25/07/22 Пнд 23:53:54 2416536 915
Аноним 25/07/22 Пнд 23:56:03 2416538 916
>>2416535
Поосторожнее с бабкой, как бы дедлок не случился.
>>2416536
Гжегож Бженчишчикевич
Аноним 26/07/22 Втр 07:22:07 2416607 917
Кто-нибудь пробовал Eclipse?
Аноним 26/07/22 Втр 09:28:56 2416629 918
Аноним 26/07/22 Втр 11:53:12 2416721 919
>>2416538
> Гжегож Бженчишчикевич
Gzhegozh Bzhenchischchikevich
Аноним 26/07/22 Втр 18:00:07 2417074 920
1584775451612.mp4 938Кб, 480x360, 00:00:12
480x360
Почему джависты так не любят шарпистов? Завидуют нашему прогрессивному ЯП?
Аноним 26/07/22 Втр 22:19:18 2417356 921
>>2417074
Конечно. Это по сути та самая ситуация когда чед просто подошел к твоей тян рыночку, агрессивно схватил за пизду, та потекла и пошла с ним ебаться..
Аноним 26/07/22 Втр 23:39:41 2417415 922
>>2416629
Он поддерживает его. Единственная живая бесплатная ide
Аноним 26/07/22 Втр 23:42:44 2417419 923
>>2417415
Хуясе. Надо попробовать.
Аноним 27/07/22 Срд 00:39:57 2417447 924
>>2417415
Студия community уже не иде?
Аноним 27/07/22 Срд 00:43:29 2417451 925
>>2417447
Нет, не работает без интернета, т.е, например, из внутренней корпоративной сети.
Аноним 27/07/22 Срд 00:52:39 2417455 926
>>2417451
Да и вообще, сама идея иде с логином в аккаунт - порочна. Вот майкрософт там что-то заявлял об уходе из России. Ща возьмут и заблочат студию дистанционно. И чо теперь? Так что нет, надо искать альтернативы. В т.ч. на торрентах, хехе
Аноним 27/07/22 Срд 00:56:11 2417456 927
>>2417455
Ну а чо, пиратство уже наполовину легализовали
Аноним 27/07/22 Срд 11:55:21 2417611 928
Когда юзаю generic math получаю невероятное удовольствие. Давно такое не испытывал. Побыстрее бы новую .NET подвезли с официальным апдейтом.
Аноним 27/07/22 Срд 12:30:26 2417635 929
>>2399284 (OP)
Есть TcpClient.
И есть Networkstream TcpClient.GetStream()
И вот есть метод, где обрабатывается запрос и выдаётся ответ.
Теперь, вся эта хуйня вызывается в отдельном потоке Parametrized threadStart
Дальше, есть много клиентов.
На каждого клиента - по потоку.
Вот они подключаются, отправляют запросы... И внезапно, соединения закрываются блядь.
Второй запрос если отправляется, TcpClient.GetStream() снова вызывается и какая-то хуйня получается - соединение рвётся нахуй.

Кроче, что делать с этой хуйнёй?
Надо шоб соединения были открытыми, и активными, и чтобы они держались открытыми и не выёбывались мне.
Аноним 27/07/22 Срд 14:10:00 2417694 930
Бля, а доттрейса для пингвина нет что ли? И как профайлить то?
Аноним 27/07/22 Срд 15:12:21 2417743 931
Взялся в качестве пета написать веб сервак. Если для гет метода всё понятно то как правильно прокидывать и обрабатывать post/put/patch/delete?
Аноним 27/07/22 Срд 15:45:02 2417757 932
Аноним 27/07/22 Срд 16:00:40 2417766 933
>>2417694
по старинке же )
PerfCollect.
а вот дотмемори для снятия дампов есть
Аноним 27/07/22 Срд 16:03:55 2417771 934
Как в злоебучем ридере смапить директорию в готовый билд? Вот есть у меня папка www, там несколько html говна, но при билде они не открываются т.к. CurrentDirectory не та.
Аноним 27/07/22 Срд 21:22:42 2418029 935
Когда запускаю модальное окно в WPF, то многие события учитывают родительское окно: MouseLeave, Deactivated.

Грубо говоря, если я увожу мышь с модального окна на родительское, то событие MouseLeave не срабатывает. Но если я увожу в другое место, то событие срабатывает.

Как это убрать? Мне нужно закрыть окно, если пользователь кликает за его пределами.
Аноним 27/07/22 Срд 21:35:47 2418037 936
Аноним 27/07/22 Срд 22:40:32 2418087 937
>>2418037
Ок, спасибо, посмотрю.
Аноним 27/07/22 Срд 22:53:59 2418092 938
>>2417635
> TcpClient client = new TcpClient();
> client.Connect(server, port);
> NetworkStream stream = client.GetStream();
>
> byte[] data = new byte[256];
> StringBuilder response = new StringBuilder();
>
>//запрос
> byte[] buffer = Encoding.UTF8.GetBytes("request");
> stream.Write(buffer, 0, buffer.Length);
>//ответ
> do
> {
> int bytes = stream.Read(data, 0, data.Length);
> response.Append(Encoding.UTF8.GetString(data, 0, bytes));
> }
> while (stream.DataAvailable); // пока данные есть в потоке
>
> Console.WriteLine(response.ToString());

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

ПАМАГИТИ.
Аноним 27/07/22 Срд 23:23:14 2418105 939
>>2418092
отличный формат.

хуй знает, ты скинул два куска, и че то интересное, видимо, происходит между ними. че значит рвётся, какую ошибку то он кидает? там разные бывают, знаешь
Аноним 27/07/22 Срд 23:49:02 2418118 940
>>2418105
Ну, я просто, снова, продублировал код, где запрос и ответ
и вместо
>byte[] buffer = Encoding.UTF8.GetBytes("request");
написал вот это вот всё:
> stream.Close();
> client.Close();
> client = new TcpClient();
> client.Connect(server, port);
> stream = client.GetStream();
> response = new StringBuilder();
> buffer = Encoding.UTF8.GetBytes("request2");

Вижу два запроса и два ответа:
>REQUEST
>REQUEST2
>Запрос завершен...

А теперь думаю, как же можно выкинуть из кода всё это вот, ненужное ???
> stream.Close();
> client.Close();
> client = new TcpClient();
> client.Connect(server, port);
> stream = client.GetStream();
Чтобы не открывалось новое соединение с нового TCPClient'a, блеать?
Аноним 28/07/22 Чтв 00:37:57 2418133 941
>>2418118
Там, походу, во втором запросе, надо как-то хитрожопо, писать в конец потока, и читать из конца потока.
Короче, надо задать оффсет какой-то, смещение, в потоке,
или что-то наподобие этого. А как это сделать - хуй знает.
А то оно читает аж пока данные есть в потоке. А потом что-то происходит, наподобие EOS (End Of Stream), после чего stream.DataAvailable становится false и софтина выпиздячивает чтение данных из цикла.

А когда открываешь
>NetworkStream stream = client.GetStream();
оно по новой хуярит чтение - с начала потока...
И как эту хуйню зарулить - хз.
Аноним 28/07/22 Чтв 01:16:45 2418154 942
LWHoL.png 18Кб, 643x353
643x353
Сломался диск где лежат кеш пакетов, и теперь установщик вообще не видит вижуал студию
Можно ли как-то восстановить без переустановки? Хотя даже заново установить не даёт, пишет папка уже занята
Аноним 28/07/22 Чтв 01:47:19 2418163 943
>>2418154
> A:\
Как ты на дискету установил студию???
Аноним 28/07/22 Чтв 01:47:47 2418164 944
>>2418163
Скрин с инета, у меня на ссд стоит остальное
Аноним 28/07/22 Чтв 09:25:11 2418228 945
>>2418092
ServicePoint.SetTcpKeep не подходит?
Аноним 28/07/22 Чтв 13:05:44 2418388 946
>>2418037
причем тут вообщще MVVM до закрытия окна с помощью мыши?
Проблема автора вообще никак не лежит в плоскости MVVM
даже рядом не лежит, да и за 100 км тоже не валялась.

>>2418029
так просто не делай окно модальным и всего делов. Любой клик на родительское окно все равно должен закрыть - ну так лови там превиев событие и если дочеренее открыто, то закрой его
Аноним 28/07/22 Чтв 13:07:17 2418389 947
>>2418029
А еще есть Mouse.Capture()
это позволяет ловить клики за пределами там чего то. Так закрываются попапы (например комбобоксы или меню) если кликнуть куда то еще.

Не могу сказать как это работает если больше одного окна
Аноним 28/07/22 Чтв 13:07:18 2418390 948
Модальное окно в WTF.
Аноним 28/07/22 Чтв 13:19:55 2418397 949
>>2418390
> WTF
Вот на таком фреймворке я бы сделал охуенное приложение!
Аноним 28/07/22 Чтв 13:40:40 2418409 950
>>2418029
В общем то Mouse.Capture работает, но если тебе не нужно отличать куда кликнули - на родитеьскую форму, на десктоп, на титлбар модального окна
иначе тебе придется вычислять куда был клик, что геморно
Да еще всякие там textbox любят срывать capture

потому подход с немодальным окном проще
Аноним 28/07/22 Чтв 13:42:02 2418410 951
>>2418133
Чел, у тебя херня мутная пиздец. Ты кидаешь кусок, как ты читаешь, но я не вижу, где ты отправляешь ещё раз запрос туда. Ну и чтения со стороны сервера тоже нет. Ошибку ты не написал, то есть непонятно, кто мудачит. Короче, земля тебе пухом.
Аноним 28/07/22 Чтв 14:10:11 2418437 952
А что за дллка генерируется рядом с программой в net 5+?
Аноним 28/07/22 Чтв 14:15:03 2418439 953
>>2418437
Это и есть основной код
Ты можешь запустить его без ехе
Аноним 28/07/22 Чтв 14:38:21 2418459 954
>>2418389
>>2418388
>>2418409

Да мне нужно модальное, чтобы ожидать закрытия. Я уже и так сделал через обычный запуск при помощи Await, просто каждый раз есть соблазн использовать модальное окно, типа одной строкой, и каждый раз жую говна с ним.
Аноним 28/07/22 Чтв 14:53:26 2418474 955
>>2418459
> Да мне нужно модальное, чтобы ожидать закрытия

Да, делается через await немодальное окно. Это нормально.
Я так делал когда у меня несколько немодальных форм и если одна из них откроет диалог, то остальное лочит нахер. Поэтому все через await и Preview события на "заблокированных" окнах
Аноним 28/07/22 Чтв 15:15:00 2418492 956
>>2418459
все равно держи для примера наивную реализацию на коленке просто для понимания какое оно все го....WPF то есть

https://pastebin.com/UsEPGmg3

использовать в диалоговом окне
<Window
local:OutsideCloser.Close="True"

Аноним 28/07/22 Чтв 15:25:32 2418501 957
>>2418459
небольшое улучшение что клик был по родительскому окну, а не абы где
https://pastebin.com/Btmxd3ad

но все еще остается вопрос клика по титлбару модального окна
(это конечно если он используется)
Аноним 28/07/22 Чтв 16:12:58 2418510 958
>>2418492
>>2418501

О, спасибо. Я сделал через бесконечный цикл и событие деактивейта.
https://pastebin.com/PQ3rqdz4

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

Какча не валидна
Аноним 28/07/22 Чтв 16:40:04 2418529 959
>>2418510
непонятно зачем вечный цикл.

Если у тебя Task нужен, то конвертишь событие Closed в Task (с помощью TaskCompletionSource) и все.
Аноним 28/07/22 Чтв 19:36:47 2418692 960
>>2418529
Ух ты, что-то подобное я искал.
Только не понял что значит конвертировать. Я Ж
1. создал новый экземпляр TaskCompletionSource
2. в переопределенной функции ShowDialog поставил его на Await
3. в событии Closing использовал TrySetResult.

>непонятно зачем вечный цикл.
а разве внутри TaskCompletionSource не сидит какой нибудь цикл или таймер? Как оно там бесконечно ожидает события?
Аноним 28/07/22 Чтв 20:17:34 2418705 961
Image 1.png 10Кб, 599x245
599x245
>>2418692
>Только не понял что значит конвертировать
Любое асинхронное что угодно можно выразить в Task. В этом и есть смысл Task, как реализации корутин - чтобы была унифицированная работа с любой асинхронщиной.

>а разве внутри TaskCompletionSource не сидит какой нибудь цикл или таймер?
нет. это такой же объект как и CancellationTokenSource. Очень простая штука. По просьбе он просто выставляет значение у таски, как CancellationTokenSource у CancellationToken

А смысл существования CancellationTokenSource и TaskCompletionSource - чтобы получатель Task или CancellationToken не могли их изменять.
Точно так же с LifetimeDefinition и Lifetime - спец объект холдер для изменения токена.

>Как оно там бесконечно ожидает события?
никто никого не ожидает. У Task есть ContinueWith (вернее для внутренних нужд там более лекговесный интерфейс, но суть та же), то есть по факту подписка на изменение состояния.
Понимаешь же как работает event в шарпе - никакой разницы нет.
Аноним 28/07/22 Чтв 20:24:50 2418709 962
>>2418692
ты не мыслишь асинхронно.

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

Так и в тасках - ВСЕ просто подписываются на изменение состояния интересующей их таски (на звонок курьера) и по "звонку" планируют продолжение "позвонил, значит теперь можно делать это". Все эти продолжения планируются с помощью TaskScheduler (дефолтный планирует на тредпуле) на выполнение и потом перемалываются тем, кем запланировано выполнять.

await же просто сахар, где компилятор за тебя пишет многочисленные ContinueWith (на деле конечно не их,а другую более эффективную структуру, но смысл одинаковый)
Аноним 28/07/22 Чтв 22:04:50 2418768 963
>>2418709
>Асинхронно - когда ты дома ждешь посылку, то не бегаешь к окну выглядывать курьера, а он сам тебе позвонит когда приедет.
Ну аналогии всегда понятны, но непонятно как это работает в коде.
Почему же если сделать пустую асинхронную функцию, то она просто выполнит себя и завершится? Для этого она должна что-то ожидать, но мы снова плодим очередную асинхронную функцию, внутри которой пустота и которая так же быстро завершится, если внутри нет цикла.

Правильно ли я понял, что запускается задача, смотрит на условный флаг, если он отрицательный, то программа идет дальше, перешагивая через все, что идет после await? И при каждой итерации будет заглядывать в функцию, прыгать "аля GоTo" в задачу и снова перешагивать код, пока в это задаче не будет положительного флага?

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

Аноним 28/07/22 Чтв 22:54:07 2418793 964
>>2418474
Кстати да. Как-то ещё в дельфийские времена читал критику принципа модальности. Типа, если софт слишком сложный, он может выкинуть больше одного модального окна за раз и самозалочиться.
Аноним 28/07/22 Чтв 23:23:26 2418797 965
>>2418768
ты как то сложно выразился
но в общем - нет никакого цикла для мониторинга.
Нет никаких условных флагов

попробую упростить на котиках
синхронный метод
void Foo(){
MakingTea()
WaitForCat()
PetTheCat()
WaitForDog()
PetTheDog()
}
пока мы внутри чего то ждем, то поток зря блокируем.

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

псевдокот:

void Foo(){
MakingTea()
WaitForCat().Then(PetTheCat()).Then(WaitForDog()).Then(PetTheDog())
}

Тут MakingTea() выполняется синхронно, а WaitForCat() уже асинхронная, поэтому тот код который должен выполниться по концу WaitForCat() уходит в Then

Что такое Then?
Да это мы пишем либу, которая предоставляет метод Then, который принимает Action и когда action выполнен, то мы выполняем следующий. А пока время не настало (у нас action просто ждет), то и поток не занимаем
Как понять, когда action выполнен - заводим токен Defer, который просто токен как и CancellationToken и к нему можно подписку Subscribe сделать. и его возвращает метод Then, и Then по факту подписка на Defer предыдущего action
Так мы получаем цепочку продолжений.
Заодно делаем пул потоков, где будем выполнять эти продолжения.
Вводим сущность taskScheduler, чтобы "а пусть он планирует где выполнять, вдруг юзеру не нужно в пуле потоков, а свое что то".
переименовываем Then -> ContinuwWith, Defer -> Task
И вот мы изобрели подобие TPL


Как видишь - каждый асинхронный метод выдает объект Task, к которому можно подписаться и выполнить продолжение (который тоже выдает свой Task, к которому можно подписаться и выполнить...)
Цепочка подписок и продолжений.

async/await - сахар, что заставляет компилятор написать все продолжения за нас.

void Foo(){
MakingTea()
await WaitForCat()
PetTheCat()
await WaitForDog()
PetTheDog()
}

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

>сделать пустую асинхронную функцию,
пустая асинхронная фукнция является синхронной, потому что нигде в ней нет точек, где "я тут в ожидании и мне поток не нужен"
async это маркер, что в коде будут await и потому нужно строить стейт машину с продолжениями. Но если await нет, то и продолжений нет и все выполнится синхронно
Аноним 28/07/22 Чтв 23:54:19 2418804 966
1508465978938.png 113Кб, 1477x635
1477x635
Хочу добавить в игру что-то вроде простого сервис локатора. Обычные иок контейнеры, внедрение через конструкторы и прочее - недоступно, потому что движок так устроен.

Хочу через статический класс Context получать ссылки на конфиги и сервисы:
Context.Resolve<StorageConfig>();
Context.Resolve<IAccountService>();
Context.Resolve<ILocalizer>();


Устанавливаться сервисы и конфиги будут через Context Installer. Я выбираю в редакторе Production, Staging или Development, и в зависимости от этого подключается нужный инсталлер.

Думаю как бы всё это организовать в плане классов/интерфейсов? Не хотел использовать связку ServiceCollection + ServiceProvider(ServiceCollection collection) по аналогии с asp.net, потому что внутри инсталлеров будут задаваться как сервисы, так и конфиги, поэтому это будет вызывать путаницу, типа:
services.AddInstance(UIConfig);
services.AddFromPrefab<IPlayerService>(playerServicePrefab);



В общем, набросал пикрелейтед, но что-то мне не нравится. Классы ContextBuilder и ContextContainer будут использоваться только внутри класса Context, а снаружи только интерфейсы IContextInstaller и IContextBuilder.
Аноним 29/07/22 Птн 06:17:09 2418858 967
>>2418228
Cудя по https://stackoverflow.com/questions/23752783/httpwebrequest-keepalive-vs-servicepoint-settcpkeepalive
Это для HttpWebRequest
Глядя на это https://darchuk.net/2019/01/04/c-setting-socket-keep-alive/
прописал это
>TcpClient client = new TcpClient();
>client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
Но второй запрос всё-равно чё-то не пашет.

>>2418410
Чувак, я же скинул всю инфу.
>Ты кидаешь кусок, как ты читаешь, но я не вижу, где ты отправляешь ещё раз запрос туда.
>>2418092
>stream.Write(buffer, 0, buffer.Length);

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

>Ну и чтения со стороны сервера тоже нет.
Там сервер тупо делает это
>TcpListener server = new TcpListener(localAddr, port);
>server.Start();
и дальше в бесконечном цикле
>TcpClient client = server.AcceptTcpClient();
и потом в
>using (NetworkStream stream = client.GetStream())
читает и отвечает той же строчкой, больше нихуя.

Так вот, я продублировал этот юзинг ебучий на сервире, и вижу такую хуйню:
>System.InvalidOperationException: Операция не разрешается на неподключенных сокетах.
> в System.Net.Sockets.TcpClient.GetStream()
А клиент шлёт второй запрос, но нихуя не получает.
Там надо что-то вроде stream.Seek stream.Peek или оффсет какй-то блядь задать, походу, чтобы оно нормально читалось этот ебучий запрос.
Аноним 29/07/22 Птн 11:11:52 2418953 968
1599239716797.png 58Кб, 679x506
679x506
>>2418907
Это Unity3D. Там своя архитектура, свой подход к написанию кода. Там даже у базового объекта Object переопределены операторы сравнения, чтобы сравнение с null сделать иначе (из-за этого многие начинающие попадаются на трудноуловимые баги)
Аноним 29/07/22 Птн 11:47:11 2418982 969
>>2418797
Спасибо, анон за обстоятельныйое объяснение. Стало понятнее.
Аноним 29/07/22 Птн 12:34:35 2419010 970
>>2418982
Кстати вот это синхронное выполнение до первого await иногда портит жизнь.
Например HttpClient
await http.GetAsync тупо тормозило.
Потому что dns запрос выполняется синхронно, а на машине стоял каспер и вызывал тормоза.

Еще можешь увидеть ValueTask.
любая асинхронная операция возвращает Task (унифицированный подход), но если ты читаешь из stream, то там у тебя буфер. Ты читаешь из него по 10 байт, а он при первом запросе мог забить буфер на 80кб и далее тебе синхронно отдает из этого буфера. То есть уже при втором запросе он за данными никуда не ходит (они уже у него в буфере), но Task приходится создать на каждый такой запрос чтения. И получается много аллокаций на ровном месте. И тут на сцену выходит ValueTask - GC на него плевать, но получаешь больше копирования ибо это структура.

TaskCompletionSource полезен, когда нужно вернуть Task сейчас и вручную потом установить его состояние.
Это примитивный объект холдер. Нельзя чтобы каждый встречный поперечный мог изменить состояние Task. Поэтому Task - риоднли и заводится объект-владелец через который и можно менять.
Такой же подход и в CancellationToken, IMemoryOwner и так далее.

Ну и лишний пример для понимания. Вот у тебя класс, который в 1 выделенный поток перемалывает что-то. И у тебя есть внутренняя очередь
и есть метод
exceсutor.RunAsync(Action action, CancellationToken)
который внешний код вызывает. Но этот action может быть сотый в очереди и мы не можем его выполнить сейчас. И мы не можем блокировать в этом месте и поэтому должны вернуть Task
Вот тут нам и приходится TaskCompletionSource - мы его создаем и возвращаем его Task, а его самого кладем в очередь вместе с action и когда до action дойдет очередь и он будет выпонлен - мы воспользуемся сохраненным
TaskCompletionSource и выставим статус у Task

Так же работают и всякие AsyncQueue - для каждого входящего "await queue.GetNextItemAsync()" создается TaskCompletionSource, кладется во внутренний список `List<TaskCompletionSource> awaiters` и возвращется его Task. Как только в очереди появляется новый элемент, то берется первый TaskCompletionSource из списка awaiters и выставляется SetResult(item)

Ну и часто рядом ходит CancellationToken - тут нужно не забывать подумать про CancellationTokenSource.CreateLinkedTokenSource()
Неважно как оно выглядит
task.ContinueWith
cancellationToken.Register()
obj.MyEvent+=
подписка есть подписка и можно легко подвесить приличный граф в памяти.
вот и на моем пике >>2418705 TaskCompletionSource захватывает child. Это не страшно, поскольку просто создает кольцевую ссылку, но лучше все таки так не захватывать.
Аноним 29/07/22 Птн 13:46:04 2419057 971
Как в 22 студии сделать горизонтальный скролл с шифтом? Там есть аддон для этого, но он выдает ошибку при установке
понятно, что надо использовать райдер, но на работе мы используем VS
Аноним 29/07/22 Птн 13:46:24 2419058 972
Аноним 29/07/22 Птн 14:10:52 2419071 973
>>2419010
Спасибо, я сохранил весть текст. На ходу переварить сложно, пкоа не упрешься в пробелму.
Аноним 29/07/22 Птн 15:30:01 2419159 974
В треде есть блейзор-зумеры?
Как на кестреле(!) завести content compression?
Проделал все отсюда: https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/webassembly?view=aspnetcore-6.0#compression
И по итогу только несколько блейзеровских js'ок (и то не все) с тегом content-compressed. Это норма?
На простом asp net core было: services.AddResponseCompression();
services.Configure<BrotliCompressionProviderOptions>(options => {
options.Level = CompressionLevel.SmallestSize;
});
И такой же конфиг для gzip'a.
Мне что-то не очень хочется поднимать IIS т
к. у меня мелкохуита и он по бенчмаркам а тырнете на порядок тормознутее простого кестрела без прокси оберток.
Аноним 30/07/22 Суб 01:24:13 2419568 975
>>2419058
1) Чувак, ты попутал.
Есть юнити как игровой движок Unity
А есть DI контейнер с таким же именем - Unity.
Это две совершенно разные вещи и у них только имя одинаковое.

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

3) В юнити (движке), вроде как народ применяет DI, но то ли там что-то специфическое, то ли народ просто свои велосипеды пишет. Как-то так.
Аноним 30/07/22 Суб 01:26:26 2419570 976
Аноним 30/07/22 Суб 02:28:11 2419588 977
>>2418953
> Там даже у базового объекта Object переопределены
Object и object это разные классы.

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

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

>>2419568
> В юнити (движке), вроде как народ применяет DI, но то ли там что-то специфическое, то ли народ просто свои велосипеды пишет. Как-то так.
Там Zenject(Extenject) юзают. Но можешь чё угожно юзать, это не принципиально, в зенжекте просто много полезного есть, что сразу работает с компонентами и объектами юнити.

>>2418804
У тебя че там так много сервисов будет, чтобы такую залупу надо было городить?
Зенжект юзай тогда просто
Аноним 30/07/22 Суб 10:38:17 2419702 978
Как удалить MemoryMappingFile из оперативки?
Еще не могу понят почему на считывающей стороне при первом запуске ругается, что файл с таким именем не найден, но при последюущих обращениях все норм. Причем даже когда я перезапускаю программу или ПК, больше этой ошибки не возникает.

Но ведь MemoryMappingFile не может оставаться после закрытия программы, да?
Аноним 30/07/22 Суб 10:45:04 2419707 979
>>2419588
>Object и object это разные классы.
будни сишарпа. Никогда не понимал, зачем плодить сущности, различающиеся только размером буквы. Хорошо, что в бейсике нет чувствительности к регистру и это не плодит мудаков.

Этож надо сидеть с линейкой и определять отклонение дуги O на несколько пикселей, чтобы понять что тебе высирает интелсенс. Больные люди.
Аноним 30/07/22 Суб 12:44:45 2419797 980
1555237931786.png 130Кб, 844x444
844x444
1586864084483.png 91Кб, 985x328
985x328
>>2419588
> У тебя че там так много сервисов будет, чтобы такую залупу надо было городить?
Проблема не столько в DI контейнере(его достаточно просто реализовать), а в переключении режимов. У меня, как и в вебе, есть три режима запуска игры: Productuion, Staging и Development. В первых двух меняются только ключи доступа к многочисленным внешним сервисам (бекенд, мультиплеер, аналитика, пуш-нотификации, реклама). В третьем используются фейковые сервисы.

Игра мобильная, но тестирую я её как на мобилках, так и на ПК. А значит мне под Mobile и Standalone уже нужен немного иной набор сервисов (MobileAccountService и StandaloneAccountService; MobileInputSystem и StandaloneInputSystem; DebugAnalyticsService на пк, а на мобилках - реальная аналитика). Из этого получается, что мне нужно 6 конфигов для запуска.

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

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

Для standalone не буду с нуля заполнять все данные. Воспользуюсь методом AddOrReplaceComponentFromNewPrefab, чтобы заменить тот же MobileAccountService на StandaloneAccountService.
Аноним 30/07/22 Суб 12:57:37 2419819 981
>>2419707
> будни сишарпа. Никогда не понимал, зачем плодить сущности, различающиеся только размером буквы.
Нет, Object это класс созданный для вполнк конкретной цели, он не буквой отличается.
В юнити есть своя система сериализации, через неё работает весь контент в проекте. Для того чтобы ты мог просто взять и перетащить материал на модельку на сцене - материал должен быть Objectом и все объекты на сцене Objectы, у них там есть инстанс айди через которые оно всё работает... Название путающее, но этот класс необхожим.
При этом само собой, ты можешь делать классы, которые НЕ Object, никаких проблем.
Аноним 30/07/22 Суб 13:16:30 2419855 982
>>2419797
Блять, я даже половины из вышеописанного не понял. Как же мне сделоть свою игру? Эхх... Придётся программиста нанимать. Пойдёшь в мою студию? Зарплата - банка тушёнки.
Аноним 30/07/22 Суб 13:31:25 2419879 983
>>2419819
>Нет, Object это класс созданный для вполнк конкретной цели, он не буквой отличается.
Я понимаю, сам писал плагины для графических программ и всегда хочется назвать какой-то элемент объектом, что вводит в диссонанс с логикой .NET
Но я имел ввиду зачем назначать одинаковые имена классам, которые визуально отличаются малой и большой буквой? Ну назви ты UObject или SceneObject.

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

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

Аноним 30/07/22 Суб 13:41:33 2419892 984
>>2419819
Благо они переносят весь движок на ECS, который лишён всех нынешних легаси-проблем Юнити.
Аноним 30/07/22 Суб 13:51:37 2419909 985
>>2419855
> Как же мне сделоть свою игру?
В какой-нибудь инди-игрушке на ПК всё это дерьмо не потребуется. А вот если ты делаешь сетевую сервисную игру на мобилки, то готовься к Аду.
Аноним 30/07/22 Суб 15:08:49 2419999 986
>>2419892
ECS - это всего-лишь архитектурный паттерн. Сам по себе он не решает проблем архитектуры самой юнити.
Аноним 30/07/22 Суб 15:32:04 2420026 987
Как в редакторе xaml добавлять обработчик события со своим именем, чтобы среда сама добавляла нужный код в класс? Пока это работает только со стандартным именем метода, который предлагает студия.
Аноним 30/07/22 Суб 15:45:18 2420048 988
Подскажите, делегаты и эвенты сейчас используются в продакшне вообще?
Аноним 30/07/22 Суб 15:46:48 2420050 989
>>2420026
ну просто сразу же переименуй то что создала студия и все.

>>2420048
это вопрос сродни "а скажите колеса еще используются в машинах"?
Аноним 30/07/22 Суб 16:03:24 2420060 990
Внутри основного окна создаю экземпляр окна (которое я даже не запускал), после чего при закрытии основного окна в режиме отладки, студия не хочет детектить закрытие приложения.

Аноним 30/07/22 Суб 16:14:42 2420074 991
>>2420050
>это вопрос сродни "а скажите колеса еще используются в машинах"?
Я ж не знаю что там в продакшне происходит. И видел еще видео какого-то сеньора, который пояснял, что лучше юзать MediatR для этих дел.
Аноним 30/07/22 Суб 16:27:19 2420091 992
>>2420074
1 на асп.нет продакшен не заканчивается.
2 и даже если асп.нет и даже если прямо прямо последнее, то насчет MediatR - его личное мнение. У MediatR есть сторонники и противники - и их больше чем сторонников. (такая же ситуация как и с DDD)
Аноним 30/07/22 Суб 18:50:15 2420200 993
Аноны, есть ли в треде тестировщики-автоматизаторы на данном языке? Если есть, подскажите пожалуйста что нужно почитать. Вкатился в новую компашку из php и пишу автотесты на шарпах чисто по аналогии с пыхой. Тимлид смотрит мой код и ужасается, говорит про всякие дженерики и прочие приколы. Какую true книжку можно почитать по таким тонкостям языка?
Аноним 30/07/22 Суб 22:46:06 2420370 994
>>2420200
Я х.з. что ты за тесты на шарпе пишешь.
Но если это действительно какие-то автотесты, то имхо ты страдаешь хуйней, т.к. для этого есть более удобные инструменты чем шарп и то, что ты на нем напишешь.

Если же ты имеешь в виду юнит тесты. То там наоборот - чем проще и тупее тем лучше. Т.к. вся суть юнит теста - быть простым, проверять какой-то необходимый минимум функционала за раз и быть легко отлаживаемым.
Если же ты начнешь на них наворачивать какие-либо паттерны и усложнять, то заебешься потом искать где у тебя косяк в коде или самих тестах.
Аноним 30/07/22 Суб 22:47:24 2420372 995
>>2420048
Делегаты постоянно использую.
Евенты вообще ни разу.
Аноним 31/07/22 Вск 12:01:54 2420654 996
Два объекта одного типа должны быть равны, если равны два любых поля:
public override bool Equals(A other){
//...
return this.Foo == other.Foo || this.Bar == other.Bar

Как для такого равенства сгенерировать хэш?
Аноним 31/07/22 Вск 12:57:53 2420677 997
>>2420372
>Евенты вообще ни разу.
веб?
Аноним 31/07/22 Вск 15:09:56 2420791 998
>>2420074
> лучше юзать MediatR для этих дел
У меня вообще такое ощущения, что properties и events в C# - это жуткий костыль от которого надо избавляться. Проперти претворяются обычными полями и скрывают внутри себя логику, которая может приводить к неблагоприятным последствиям. Ивенты создают много проблем с утечкой памяти, нужно постоянно отслеживать привязки.
Аноним 31/07/22 Вск 15:26:08 2420801 999
>>2420791
у тебя неправильные ощущения. Конечно event в своем реализации не самая удачная реализация паттерна Observer, но PubSub инвертирует не только недостатки, но и достоинства первого. Получив плюшки, теряешь...другие плюшки. Идеала нет.

MediatR (так паттерн требует)
достоинство - скрывает компонент который обработает запрос
недостаток - скрывает компонент который обработает запрос

Более того, MediatR усиливает это достоинство(а может недостаток) тем, что базируется по дефолту на IoC

MediatR не первая и не уникальная реализация паттерна, Просто очередная с предсказуемым результатом - а хороший он или плохой - фломастеры

Про свойства вообще бред. Тут даже нечего обсуждать. Они были введены в язык потому что тупо нужны. И в тех языках, где их нет, тупо пилят свои кастомные getProp()/setProp() и плачут.

А скрыть логику можно и в явном методе setProp() - как будто вызывающему коду вообще есть разница.
Аноним 31/07/22 Вск 15:53:11 2420820 1000
>>2420801
> Про свойства вообще бред
БОЛЬШАЯ проблема свойств том, что ты не знаешь, как работать с конкретным свойством: как с полем или как с методом? Свойство при каждом обращении может выделять память. Свойство при каждом обращении может совершать относительно тяжёлую операцию, например, по поиску. И тебе в каждом случае приходится смотреть исходный код свойства, чтобы понять - я должен кэшировать значение?
Аноним 31/07/22 Вск 16:05:36 2420832 1001
>>2420820
>что ты не знаешь, как работать с конкретным свойством: как с полем или как с методом?
А ты и не должен это знать.

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

Будь это метод... и что? как то, что это метод дает знание нужно кешировать или нет? А никак. Ты запустишь - увидишь тормоза...и закешируешь.

а если нет разницы, то зачем херить нужный механизм только потому, что его некоторые люди идиотски применияют. Попробуй сделать без свойств private set поле и сразу же свойства захочешь.
Аноним 31/07/22 Вск 16:12:05 2420836 1002
>>2420832
> только потому, что его некоторые люди идиотски применияют
Вот эта неоднозначность напрягает. Я сейчас больше в геймдеве работаю. И есть примеры ебанутого использования свойств. Допустим, есть свойство MainCamera, которое даёт ссылку на основную камеру игровой сцены. Казалось бы всё охуенно, красиво, удобно. Открываешь исходник свойства, а там блять при каждом обращении происходит обход всех объектов сцены и поиск тега "maincamera". Ну, добавь ты метод FindMainCamera(), тогда всё будет очевидно и понятно любому дураку. Нет, блять, хочу свойства, это же сишарп, если есть свойства, надо использовать. Такие моменты часто встречаются.
Аноним 31/07/22 Вск 16:40:22 2420855 1003
>>2420836
Нахуевертить можно всегда. Можно и в конструктор запихать сетевую логику, но это не повод отказываться от конструкторов.
Аноним 31/07/22 Вск 17:41:26 2420901 1004
CLR via C# стоит читать? Там полезное есть что?
31/07/22 Вск 18:27:16 2420982 1005
Пишу новую шапку, а то старая просто говнище ебаное которое никто не читает. Рейт

https://pastebin.com/HT7Hi6FD
Аноним 31/07/22 Вск 18:34:43 2420990 1006
>>2420982
> 4. С# для игр
> Unity-тред в /gd/
Юнити одна из сильнейших сторон современного C#, а ты так невзрачно об этом написал? Можно делать игры и в два клика билдить их на множество платформ. Это же бомба.
Аноним 31/07/22 Вск 18:38:47 2420994 1007
>>2420990
Геймдеву вообще не место в /pr/.
31/07/22 Вск 18:41:43 2420997 1008
>>2420990
Про геймдев есть отдельный тред на отдельной доске. Юнити это рыгня которую делали не майки, поэтому похуй. Тот кто хочет в игры найдет либо анриал енжин или юнити.
Аноним 31/07/22 Вск 18:43:45 2420999 1009
>>2420997
С таким быдло-подходом тебе точно не стоит кого-то там наставлять через шапки.
31/07/22 Вск 18:47:30 2421003 1010
>>2420999
У нас в текущей шапке тоже самое. Я не стал менять поскольку никак не отношусь к геймдеву. Можешь написать сюда что считаешь нужным, а я добавлю
Аноним 31/07/22 Вск 19:15:39 2421023 1011
>>2420370
В моей компании пишут автотесты на C#. И за это так называемое, страдание хуйней, мне платят деньги.
Аноним 31/07/22 Вск 19:51:24 2421089 1012
Аноним 31/07/22 Вск 20:39:00 2421156 1013
static readonly
или
readonly static
Аноним 31/07/22 Вск 20:44:08 2421162 1014
Аноним 31/07/22 Вск 22:49:10 2421288 1015
>>2421162
мне кажется, ты тредом ошибся
Аноним 31/07/22 Вск 23:26:13 2421345 1016
Аноним 31/07/22 Вск 23:27:31 2421347 1017
Аноним 31/07/22 Вск 23:30:39 2421355 1018
>>2421347
Программирование - это не синтаксис языка
Аноним 31/07/22 Вск 23:36:12 2421362 1019
>>2421355
Тред про шарп, а не про программирование.
Аноним 01/08/22 Пнд 05:07:14 2421470 1020
Аноним 01/08/22 Пнд 07:51:03 2421487 1021
изображение.png 9Кб, 708x112
708x112
Читаю сейчас троелсена и наткнулся на данный момент. Разве в блоке using нужно самому закрывать файловый поток? Он сам не закроется?
Аноним 01/08/22 Пнд 11:58:37 2421574 1022
Есть базовый класс Base со свойством Visability.
Этот класс наследуют еще два класса BaseExtendA и BaseExtendB, в одном из которых переопределено свойство Visability.

Так вот вопрос, как мне универсально обратиться к свойству Visability наследников? Если я буду обращаться к объектам через каст Base, то не сработает переопределившееся свойство.
Я делал через Object и технически работает, но может есть какой-то более элегантный способ?
Аноним 01/08/22 Пнд 12:04:01 2421579 1023
Аноним 01/08/22 Пнд 12:06:56 2421582 1024
>>2421574
> то не сработает переопределившееся свойство
Почему ты так в этом уверен? Может проверишь в тестовом консольном проекте?
Аноним 01/08/22 Пнд 12:40:58 2421597 1025
>>2421574
>Если я буду обращаться к объектам через каст Base, то не сработает переопределившееся свойство.

а? откуда ты это взял
Аноним 01/08/22 Пнд 12:48:40 2421600 1026
>>2421574
Я ща покумекал. Короче, если ты "переопределяешь" методы через new в наследниках, то это не переопределение, а сокрытие. И сокрытие так ебано работает, да. Тебе нужно override метода сделать, в этом вся суть полиморфизма так то. Почитай про виртуальные методы, переопределение и прочее, это база
Аноним 01/08/22 Пнд 13:26:12 2421628 1027
>>2421582
>>2421597
>>2421600
Ах, оказывается я неправильно изъяснился. Я через сокрытие Shadows делал.

>Тебе нужно override метода сделать
А тогда можно обращаться к базовому свойству? У меня там суть такая, что выполняется логика базового свойства, плюс еще кое что. Я чет боюсь оверрайд использовать, какой-то он грозный.
Аноним 01/08/22 Пнд 13:40:55 2421643 1028
>>2421628
Не бойся, вся суть ооп в этом.

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

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

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

Лучше почитай обо всём этом, это прямо самая-самая база, ты как-то рано полез штуки писать, раз в итоге начал заниматься вуду магией с сокрытием. На msdn есть всё, что тебе нужно знать.
Аноним 01/08/22 Пнд 13:43:23 2421646 1029
.png 99Кб, 770x789
770x789
.png 102Кб, 663x595
663x595
.png 85Кб, 771x495
771x495
>>2417635
Короче. Я бы как-то так сделал...
Аноним 01/08/22 Пнд 15:19:24 2421753 1030
>>2421646
Мне больно видеть, что ты не определился: использовать ли тебе var или использовать new(). Из-за этого получилась каша. Лично я решил использовать new() только для инициализации полей/свойств класса.
Аноним 01/08/22 Пнд 15:35:52 2421769 1031
>>2421753
Ну да.
Сам-то я как-бы того же подхода хочу придерживаться, что и ты, но чисто механически так выходит.
Такая же фигня и с is not null. Типа я как-бы понимаю что этот вариант предпочтительнее, но иногда хреначу != null по старой памяти.

Все из-за отсутствия кодревью на работке. И нежелания настроить code-style чтобы оно просто не собиралось в случае отхода от стайлгайдов(((
Аноним 01/08/22 Пнд 15:37:50 2421771 1032
>>2421769
А, ну и в довесок от того, что на работке нужно то на си, то на плюсах, то на жаве писать, то на ЖС, это тоже немного выбивает.
Аноним 01/08/22 Пнд 15:39:53 2421773 1033
>>2421769
> Такая же фигня и с is not null. Типа я как-бы понимаю что этот вариант предпочтительнее, но иногда хреначу != null по старой памяти.
Ага, есть такая проблемка.
Аноним 01/08/22 Пнд 16:49:50 2421814 1034
>>2421487
C# provides a special "using" statement to call Dispose method explicitly.
Аноним 01/08/22 Пнд 17:06:09 2421831 1035
>>2421487
Блок using - по факту, это что-то типа такого:

IDisposable obj = GetSomeIDisposable ();
try{
...логика
}
finaly{
obj.Dispose();
}

Все. Закроется поток или нет - зависит от того реализовали ли в Dispose - его закрытие.
Аноним 01/08/22 Пнд 22:55:33 2422196 1036
image.png 19Кб, 786x407
786x407
Когда мы по линкью запросу форичем проходимася - какую сложность по памяти получаем? Например, для кода на пике у нас память будет для всего запроса сразу выделяться, или оно просто пройдет и все действия одно за одним выполнит, не выделяя одноразово память под всю коллекцию?
Аноним 01/08/22 Пнд 22:59:43 2422201 1037
>>2422196
выделится память на создание цепочки итераторов
далее для каждого итератора будет MoveNext
Если нет действий, где нужна материализация коллекции, то память расти не будет.
Аноним 01/08/22 Пнд 23:05:48 2422213 1038
>>2422201
Чего-то я тебя не совсем понял - если выделится память на создание всей цепочки итератора - то как она расти не будет?
Аноним 01/08/22 Пнд 23:21:17 2422227 1039
>>2422213
твоя сложная from ...where просто сахарная форма эквиалентного кода
scores.Where().Select()

каждый этот метод Where/Select просто получает IEnumerable, создает итератор и возвращает его как свой IEnumerable, то есть просто наращивая цепочку.

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

До момента запуска это просто цепочка итераторов. После запуска память будет расти пропорционально необходимости материализации.
В твоем запросе вырастет чуть чуть даже если ты скормишь этому запросу бесконечный источник. Но стоит тебе добавить Distinct() и получишь атата
Аноним 02/08/22 Втр 00:39:46 2422281 1040
.png 48Кб, 755x554
755x554
>>2422196
Линку - в общем случае - ленивый.
Но ты сам мог посмотреть как это работает.
Аноним 02/08/22 Втр 00:49:11 2422286 1041
>>2399284 (OP)
Как реализовать хранение хэш-таблицы (key-value) так,
чтобы она могла вместить BigData?
Аноним 02/08/22 Втр 00:51:14 2422288 1042
>>2422286
Чем тебе Dictionary не подходит?
Аноним 02/08/22 Втр 00:59:23 2422293 1043
>>2422286
Взять готовую СУБД, либо посмотреть, как в них это реализовано и запилить свой велосипед.
Аноним 02/08/22 Втр 08:04:11 2422385 1044
Аноним 02/08/22 Втр 09:08:28 2422410 1045
>>2422385
> Там 2 лярда строчек всего можно запхнуть.
А ты собираешься такую здоровую хеш-таблицу в оперативной памяти держать?
Совсем бака?

Я просто к тому, что это вопрос не про шарп.
Почитай Introduction to Database Systems, пойми, что ты охуеешь это все нормально на про уровне реализовывать и бери СУБД под свои нужды. Попробуешь какую-нибудь монгу, поймешь что говно, возьмешь нормальную реляционную СУБД, например Postgres и будешь с ней как человек работать.
Аноним 02/08/22 Втр 09:40:38 2422422 1046
>>2422410
>> Там 2 лярда строчек всего можно запхнуть.
>А ты собираешься такую здоровую хеш-таблицу в оперативной памяти держать?
>Совсем бака?
Ну если там value порядка Int32.MaxValue, то лучше просто ключи хранить в оперативке, а сами значения - на диске пусть лежат, и обращаться к нему по мере необходимости, кэшируя небольшие но частно-используемые values.

Но если там болеее 2 млрд пар ключ-значение, то одни лишь только ключи - уже в оперативку не влезут, какбэ.

>Я просто к тому, что это вопрос не про шарп.
Ну как не про шарп, на шарпеге же вся хуйня.

>Почитай Introduction to Database Systems
Да бля, нахуя мне тонны литературы на английском лопатить, это простая же задача, как-бэ. Тупо скинуть на диск хэш-таблицу, закэшировать часто-используемые ключи-значения, а остальное пусть на диске лежит, в raid массивах.
Ну и собственно как эту всю хуйню заебенить чтобы годно было?
Всякие там индексы-хуиндексы, оффсеты-хуйсеты, это вот это вот всё байтоёбство как делать - хз.

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

>и бери СУБД под свои нужды
Так а какую - ты так и не сказал. Какая там на шарпеге есть, чтоб была - для BigData?

>Попробуешь какую-нибудь монгу, поймешь что говно, возьмешь нормальную реляционную СУБД, например Postgres и будешь с ней как человек работать.

>монгу
Так она на сях, плюсах, и жаваскрипте.
>Postgres
И эта на CLang'e, как мне этот шланг в шарпег потом припердолить?
К тому же там размер таблицы ограничен 32 терабайтами. https://ru.wikipedia.org/wiki/PostgreSQL#Поддержка_стандартов,_возможности,_особенности
А что если там петабайтная хэш-таблица будет?

Тащемта у меня задача довольно простая. Раздать DHT между пирами, в децентрализованной сети:
https://github.com/username1565/nanoboard/issues/21#issuecomment-1200594467
А чтобы её раздать, эту DHT, надо для начала заебенить норм HT (HashTable), и её уже потом раздавать, чтобы была DHT (Distributed Hash Table). И всё это говно ещё опенсорцное, и ещё и на шарпеге. Понял, да?
Аноним 02/08/22 Втр 12:31:17 2422541 1047
>>2422422
А? Для любой популярной и мало мальски известной субд есть либа на шарпе. Не говоря уже о монге и постегресе
Аноним 02/08/22 Втр 13:30:47 2422594 1048
>>2422541
Ох уж эти бигдата бд типа монги )

ну так то в любую бд можно загрузить много данных
даже в sqlite даже можно загрузить 281 ТБ (а еще можно сделать attach таких же 125 баз)

Вот только как быстро это будет работать )))
Аноним 02/08/22 Втр 14:05:20 2422618 1049
>>2422594
Я не о том, что их стоит юзать. Чел просто почему-то думает, что нет провайдеров на шарпе для этих субд.
Аноним 02/08/22 Втр 14:24:48 2422634 1050
>>2422594
>>2422618
Оки-доки. Давайте причины, почему тот же PG/MSSql не юзать для бигдаты и что юзать.
Аноним 02/08/22 Втр 14:33:05 2422637 1051
>>2422634
А я то че, Я вообще не шарю, че для бигдаты юзать. Чел просто неправду написал, и я доебался
Аноним 02/08/22 Втр 14:43:43 2422649 1052
>>2422637
Реляционки и юзать. Просто есть некоторые дополнительные сложности связанные с масштабированием. Приходится применять вуду-магию с шардингами, репликациями, вынесением баз на отдельные физические сервера, оптимизацией запросов и работы с индексами, и т.д. Но это как-бы закономерный этап развития. На нем обычно приходит лысенький худой чел в очках в команду, с какой-нибудь профессорской степенью, смотрит на все это дело, морщит брови, и постепенно приводит вашу структуру к пригодной для того чтобы с этой самой бигдатой работать, а вам - приходится обижаться, что вот, теперь оказывается база данных не просто хранилище в которое ты серишь без разбора.
Аноним 02/08/22 Втр 14:45:32 2422652 1053
>>2422649
Моя удача, что я хуйню пишу, а не нормальные приложения
Аноним 02/08/22 Втр 15:05:04 2422676 1054
Некая программа использует мою библиотеку, написанную на net и мимикрирующую под native library с точками экспорта. Так вот, эта программа сперва выделяет memory block и передает переменную в функцию моей либы.
Там меняется значение, после чего прога снова обращается к memory block и получает новые данные.

В принципе работает и так:
public static float ChangeData(ref float data))
{
data = 287;
return 0;
}



Но потом меня черт дернул использовать маршалинг:
public static float ChangeData(IntPtr data)
{

float M;
M = Marshal.PtrToStructure<float>(data);
Interaction.MsgBox($"Полученное значение: {M}");

M = 287;
Marshal.StructureToPtr(M, data, false);
Interaction.MsgBox($"Новое значение: {M}");

return 0;
}


Короче вопрос, а оно того стоит? Программа думает, что моя либа написана на C.
Экспортировал функции по этой инструкции: https://habr.com/ru/post/137300/
Не будет ли чего недоброго, если я буду использовать первый вариант?
Аноним 02/08/22 Втр 15:26:33 2422690 1055
Аноним 02/08/22 Втр 15:46:17 2422707 1056
>>2422690
Я пытался юзать unmanagedexports но там как оказалось с кодировкой не дружит. Надо шиндовс переключать в англ регион.
Потом еще пару говен перелопатил и вы итоге свою тулзу написал.

Эту вроде не пробовал, спасибо.
Аноним 02/08/22 Втр 15:49:03 2422712 1057
>>2422690
Судя по семплам, там тоже используют IntPtr.
Хотя для стрингов у меня получалось использовать StringBuilder, тоже меняет значение по ссылке.
Аноним 02/08/22 Втр 19:20:37 2422865 1058
Посоны, можете скинуть ссылку на сайт, который показывает, что компилятор делает, когда убирает весь этот синтаксический сахар в коде и показывает всякие метаданные
Аноним 02/08/22 Втр 19:24:18 2422869 1059
Аноним 02/08/22 Втр 19:25:06 2422870 1060
>>2422869
Есть, я нашел, SharpLab, соррян за тупое описание, лол
Аноним 02/08/22 Втр 20:17:48 2422895 1061
Почему для реализации элементарного свойства зависимости на wpf надо написать хуеву тучу строк кода?
Аноним 02/08/22 Втр 20:20:25 2422899 1062
>>2422895
Потому что WTF - говно.
Аноним 02/08/22 Втр 20:36:53 2422906 1063
>>2422895
да прямо таки много
ВСЕ НУЖНОЕ
само определение свойства + явный геттер и сеттер для текущего контрола.
Аноним 02/08/22 Втр 21:50:19 2422972 1064
Вопрос немного не про шарп, а архитектуру.

Вот допустим, я - дебил, хочу что-то делать без фреймворков и движков. В целях обучения.
Допустим это должна будет быть игра. Рогалик именно что классического толка.
Ну так вот.
Я внезапно осознал, что не могу придумать архитектуру того как оно должно быть правильно.
Типа, вот я делаю класс Game. Классический GameLoop: Update, Draw;
Вот я решаю, что нужно добавить абстракцию: Scene и в нее запихнуть эти Update, Draw, чтобы можно было менюшки там делать, лоад-скрины и прочее
Вот я ввожу SceneManager чтобы можно было просто получить доступ к сцене и GameLoop преобразуется в SceneManager.Current.Update, SceneManager.Current.Draw
Вот я понимаю, что нужно будет делать сцену для игры и новая абстракция: Level, который та же сцена, но только теперь это уровень, с картой и всем таким. Можно конечно было бы эти уровни наследовать от GameScene, но мне кажется это неправильно, думаю лучше будет GameScene чтобы в себе хранил ссылку на текущий Level и переключал их по необходимости.
Так вот. Чтобы между левелами хранить состояние игрока - я придумал GameContext, там инвентарь, хп, уровень, позиция на текущем уровне.

И вот чет мне кажется это все как-то сложно уже на этом этапе. Плюс - мне не нравится, что пришлось сделать класс GameObject, которые содержат методы Update и Draw. Не нравится это потому что какому-нибудь триггеру - не обязательно иметь метод draw - он должен просто проверять какое-то условие и если оно наступило - кидать событие. Но как это все скомпоновать вместе - я хз.

В общем. Может быть есть какая-то литература где рассматривается создание игры на примере какой-нибудь консольной рпг, чтобы там были эти всякие эффекты, объекты, инвентари рассмотрены и прочее?
Аноним 02/08/22 Втр 21:56:30 2422982 1065
Помидоры поясните.
Вот приходит ко мне json, я его в объект кладу. Потом мне нужно этот объект превратить в объект другого класса.
Ну я просто создал класс в нем метод типо UserConvert ну и типо в него пихаю один объект и на выходе получаю другой.
Это правильный подход?
Ну вроде все норм, но меня не покидает чувство что за такое могут и обосцать.
Аноним 02/08/22 Втр 22:03:02 2422990 1066
>>2422982
По хорошему - стоило бы сделать что-то типа:
interface IMapper<TIn, TOut>
{
TOut Map(Tin @in);
}

На деле - в принципе можно и так, особенно если у тебя какие-то приватные поля используются. Просто засерать такой вот фигней класс - ну такое. У тебя со временем может миллион классов появиться, к которым ты мапить должен, и все это будет вот там и ты уже хуй разберешься.
Аноним 02/08/22 Втр 22:47:50 2423022 1067
>>2422982
Если работаешь по DDD, то в принципе норм.
В других случаях лучше выносить все это в экстеншены, чтобы не засирать класс, либо юзать автомаппер.
Аноним 02/08/22 Втр 23:24:00 2423032 1068
Аноним 02/08/22 Втр 23:34:27 2423036 1069
Аноним 03/08/22 Срд 10:09:17 2423200 1070
>>2422541
>А? Для любой популярной и мало мальски известной субд есть либа на шарпе. Не говоря уже о монге и постегресе
>>2422618
>Я не о том, что их стоит юзать. Чел просто почему-то думает, что нет провайдеров на шарпе для этих субд.
Да речь шла не столько о провайдерах, сколько о кодах их либ, а то всякие пре-компиленные бинарники без исходника, инклюдить к коду, ну как-то совсем не опенсорцно нихуя.

>>2422594
>даже в sqlite даже можно загрузить 281 ТБ (а еще можно сделать attach таких же 125 баз)
Эксабайт не потянет, вроде.

Пока, у меня, какие-то вот такие размышления:
https://github.com/username1565/KeyValue/issues/1
Эксабайт вроде должен поместиться, если почикать на части всю ебанину, как в торрентах.

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

>Вот только как быстро это будет работать )))
А вот об этом я не подумал. Может прикрутить туда какой-нибудь lock и MultiThreading?
03/08/22 Срд 10:33:29 2423225 1071
03/08/22 Срд 10:33:58 2423226 1072
Аноним 07/08/22 Вск 09:30:53 2426855 1073
изображение.png[...].png 37Кб, 754x214
754x214
изображение.png[...].png 13Кб, 669x253
669x253
Почему этот код из троеллсена крашит конструктор wpf?
Аноним 07/08/22 Вск 20:19:45 2427515 1074
image.png 255Кб, 577x729
577x729
>>2399284 (OP)
Господа, можете посоветовать что-то похожее на пикрил? Тут ее неоднократно хвалили и говорили, что после ее полного прочтения можно смело идти в джуны. Но к сожалению, мне не хватает английского, чтобы свободно ее читать и это весьма сомнительное удовольствие по полчаса переводить каждую страницу, тем более после начала ООП.
Аноним 07/08/22 Вск 20:47:46 2427549 1075
>>2427515
Мне книга Троелсона зашла в свое время . Пишет легко и доступно объясняет . Не сказал бы ,чтобы уж очень глубоко ,но достатоно для того, чтобы вникнуть
Аноним 07/08/22 Вск 23:34:08 2427745 1076
Аноны, объясните плс одну вещь. Я попробовал посмотреть гайды на ютубе, но это только сильнее запутало. Есть стек, есть куча. В одном храняться значимые типы, во-втором ссылочные. Во-первых, нахуя это разделение нужно и на что это влияет при работе?
Так же не понял этого дроча со значимыми и ссылочными типами: допустим, есть у меня две переменные инт со значением 10. Получается, у меня в памяти существуют два независимых числа 10?
Если тип ссылочный, например, два стринга со значением "Hello". Это значит, что "Hello" существует только в одном экземпляре? А если я этот стринг решу запихнуть в метод аргументом и изменить его там? Я получу на выходе совершенно другую переменную? Или что?И опять таки - нахуй оно нужоно?
Аноним 08/08/22 Пнд 09:12:16 2427846 1077
Здрасьте, давно не пользовался этим вашим дотнетом. С какой версии можно юзать всякие Console, LinkedList и тд без using?
Аноним 08/08/22 Пнд 09:18:21 2427850 1078
Аноним 09/08/22 Втр 18:05:49 2429110 1079
>>2400464
Я правильно понимаю, что внедрение зависимостей - это один из способов достижения инверсии?
Аноним 10/08/22 Срд 10:33:29 2429531 1080
Аноним 11/08/22 Чтв 12:05:34 2430351 1081
1.PNG 50Кб, 583x636
583x636
Всем привет. У меня имеется интерфейс, который имеет в себе protected метод Move(). Я этот метод реализую в классе Car, после я наследую класс Car. Как мне вызвать protected метод IMove.Move() в классе наследнике? Можно ли вообще так делать? Пожалуйста, объясните.
Аноним 11/08/22 Чтв 12:17:16 2430370 1082
>>2430351
И вообще в чём прикол? Protected метод из интерфейса становиться private методом в классе Car, при этом еще хуй знает как его вызвать в классе наследнике
Аноним 11/08/22 Чтв 13:35:38 2430451 1083
Ахахахахаха всего джва треда, да и то дохлые. Шарписты, а почему вы такие говноеды, ваше мнение?
мимо Великий Java - господин
Аноним 11/08/22 Чтв 15:12:58 2430548 1084
image.png 23Кб, 442x255
442x255
И ещё один вопрос, почему я могу реализовать метод, который в интерфейсе protected через модификатор public?
Аноним 11/08/22 Чтв 17:46:10 2430698 1085
при откладке проекта с блейзер компонент "статический", не срабатывают функции на onInput и onChange в текстовых полях.
в чем может быть проблема?
уже переустановил студию и виндовс
Аноним 11/08/22 Чтв 18:19:14 2430754 1086
Аноним 12/08/22 Птн 02:38:39 2431208 1087
Emgu CV может распознать движения на видео?
Мне нужно в 50 часах видео найти движение одного обьекта.
Аноним 13/08/22 Суб 01:39:30 2432263 1088
Актуальна ли на данный момент книга CLR VIA C# ? Почитываю Албахари , он достаточно глубоко описывает синтаксис на современном стандарте , или Рихтер неизменная классика ?
Аноним 13/08/22 Суб 18:46:05 2432808 1089
Увидел в одном из паттернов такую схему, есть два new Cl1(); и new Cl2();

Вот из подвели под один тип TypeOfCl cl и обращаются к ним.
Как это называется?
class Cl3{ Cl3(TypeOfCl cl) {} }
Аноним 14/08/22 Вск 00:38:43 2433106 1090
>>2399284 (OP)
>System.InvalidCastException: Заданное приведение является недопустимым.
Как изгнать это ебучее приведение, которое вселилось в мой грёбанный код?
Аноним 14/08/22 Вск 02:02:22 2433141 1091
Мне нужно написать программулину для работы в консоли Линукса. Программа проста до безумия: открыть файл с картинкой в стандартном формате, отресайзить его и, допустим, скопировать поверх другого Canvas'а.

GDI под прыщами не работает. Microsoft официально предлагает три стула https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only#recommended-action
- https://github.com/dotnet/Microsoft.Maui.Graphics
- https://github.com/SixLabors/ImageSharp
- https://github.com/mono/SkiaSharp

Приложение будет написано с нуля заковано в docker-контейнер, поэтому версия .Net абсолютно не важна. Какой из трёх стульев выбрать?
Сам склоняюсь в Мауи, как к официальному решению от самого Майкрософт. Нужен ли Мауи доступ к видеокарте (её не будет в доккер-контейнере, тем более на прыще-сервере без физической видухи)? Что с остальными двумя?
Аноним 12/10/22 Срд 03:46:20 2486576 1092
>>2433106
Надо код показать было
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов