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

C# тред #41 (Second Edition) csharp /csharp/

 Аноним 17/11/22 Чтв 14:19:50 #1 №2515951 
Aishiteruze Baby - Asp.Net In Action.jpg
Тред лучшего языка на планете.

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

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

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

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

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

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

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

8. Что нужно знать, чтобы взяли работать?
— Общие навыки — TPL, Linq, DI, интеграционные тесты. Преимущество перед такими же вкатунами даст парочка интересных пет-проектов где вы делаете всё максимально правильно и точно следуя архитектуре.
— Архитектура — DDD, микросервисная архитектура. Так же необходимо ознакомиться с паттернами проектирования. Обязательны к изучению: MVVM, MVC.
— Базы данных — PostgreSQL/MSSQL + Mongo/Redis. Из ORM: EFCore обычно достаточно, но есть более быстрый, но менее удобный Dapper. Тратить время на ADO.NET не стоит.
— Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
— Структуры данных — связанные списки, деревья (бинарные, красно-чёрные), хеш-таблицы, графы.
— Системы контроля версий — обычно гита достаточно.
Аноним 17/11/22 Чтв 18:22:09 #3 №2516147 
Подписался на тред. Ожидаем удаления.
Аноним 17/11/22 Чтв 19:26:04 #4 №2516212 
А где книги?
Аноним 17/11/22 Чтв 19:28:19 #5 №2516213 
>>2516212
Metanit лучше всяческих книг!
Аноним 17/11/22 Чтв 19:37:37 #6 №2516219 
Сениор, который собеседует челиков - в треде. Спрашивайте что ли как пройти собеседования и как 300к в секунду зарабатывать. Хотя я больше сервисами занимаюсь, а у вас судя по прошлому треду сплошное WPF и прочее говно.
Аноним 17/11/22 Чтв 19:48:16 #7 №2516222 
>>2516219
Нужно ли весь сахар учить?
Аноним 17/11/22 Чтв 19:49:41 #8 №2516224 
>>2516219
За солид ебешь? Лайвкодить заставляешь?
Аноним 17/11/22 Чтв 19:50:37 #9 №2516225 
>>2516222
Нет. Using выучи и во что он разворачивается.
Аноним 17/11/22 Чтв 20:21:06 #10 №2516242 
>>2516219
А правда, что не нужно писать самому код для работы с БД, а он сам генерируется командой в консоли?
Аноним 17/11/22 Чтв 21:11:15 #11 №2516281 
>>2516219
Можно ASP.NET не учить?
Аноним 17/11/22 Чтв 21:17:28 #12 №2516284 
>>2515951 (OP)
Даун, ты тег проебал
Аноним 17/11/22 Чтв 23:57:20 #13 №2516358 
Capture.JPG
шарпач, какие могут быть подводные камни?
у меня есть класс в котором имеется лист из ConcreteNode
я отдаю его другому классу через интерфейс, а он дергает интерфейс на ConcreteNode и вызывает метод
метод Tick() на этом классе вызывается +- 90-120 раз в секунду, когда и сколько раз конкретно заранее неизвестно
если лист который я отдаю из Repository изменится(ConcreteNode будут добавляться-убираться по индексу через эвенты на который там подписано), хватит ли проверки на null перед ProcessNode() или нужно как-то хитрее идти?
Аноним 18/11/22 Птн 02:28:54 #14 №2516394 
>>2516358
ох ты и понаписал
да какая разница сколько в секунду.
у тебя многопоток что ли? есть состояние гонки?
если да, то от этого и пляши. тебе же ВИДНЕЕ

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

Если все же многопоток, то всегда думай с точки зрения "а если изменится"

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

Вот ты взял итератор и итерируешь. Есть ли вероятность, что содержимое списка изменится? Если да, то итератор это не любит ибо List не threadsafe, тут нужно иммутаблелист

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

хз что вообще делают null в списке. ЗАЧЕМ ВООБЩЕ ДОБАВЛЯТЬ
null в список???
Аноним 18/11/22 Птн 03:00:05 #15 №2516408 
>>2516358
Ну а также не забывай про channel/blockingcollection
Чем бегать проверять "а нет ли чего" лучше использовать очереди с уведомлением
Аноним 18/11/22 Птн 03:26:46 #16 №2516411 
>>2516394
я реально не шарю нихуя. у меня не многопоток, тут может быть состояние гонки?
например вот у меня итерируется одна версия листа
а в это время приходит эвент который активирует метод, который сносит одну из ConcreteNode из листа. лист итерируется на старых данных, а затем на новых?
>на скрине оно вообще закоменчено и не используется.
так закоменченое сидит в другом классе который этот интерфейс использует, я его для наглядности приложил
Аноним 18/11/22 Птн 03:54:55 #17 №2516413 
>>2516411
А нужно шарить. кто из нас телепат? ответ: никто

В одном потоке не может работать сразу 2 разных кода.
Если у тебя везде 1 поток, значит код, который выкидывает событие, не сможет работать пока идет вот эта итерация.
А значит список никогда не будет изменен, да и нуллабле его делать нет смысла - лучше присвоить дефолтное Array.Empty<> и проверка на нулл станет не нужна.

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

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

То есть реализация стандартного Producer-Consumer
1 есть общая очередь канал или блокколлекция
2 сервис1 может генерить событие или может знать по очередь прямо (пофиг) - суть в том, что на событие он просто кладет ноду в очередь и идет дальше заниматься своим делом
3 в то же время сервис2 выгребает эти ноды и что-то с ними делает

Ни одна нода не будет потеряна, не будет лагов на событии и вообще это просто стандартно и удобно
Аноним 18/11/22 Птн 06:28:30 #18 №2516423 
>>2516411
>а в это время приходит эвент который активирует метод, который сносит одну из ConcreteNode из листа. лист итерируется на старых данных, а затем на новых?
Итератор выкинет эксепшон - коллекцияю нельзя менять во время итераций.

Самый простой способ обойти это - делоешь копию коллеции по которой надо итерироваться и ей уже не грозит краш, если прилетят или удялятся ноды. Потом надо будет отдельно как-то обработать новые ноды, но ты сам думай как это сделать.
Аноним 18/11/22 Птн 10:33:52 #19 №2516487 
>>2516222
Про юзинг правильно написали, это очень любят спрашивать. А так смотря что ты называешь сахаром.

>>2516224
>За солид ебешь?
Не ебу, но иногда спрашиваю. Желательно всё же понимать что там за принципы, к тому же они не особо сложные, 2 минуты на вики буквально дадут понимание.
>Лайвкодить заставляешь?
Не, я не делаю то, что ненавидел сам. У нас есть идея давать кандидатам код, чтобы они делали лайв код ревью - вот эта штука кажется мне гораздо более показательной и не такой напрягающей.
>>2516242
В Dapper например пишут прямо sql код для работы с БД, и иногда это оправдано. В EF действительно всё под капотом. В остальном хз о чём ты, может не работал с такими технологиями.

>>2516281
Если ты сидишь на десктопе тебе виднее какой там рынок. Нормально специализироваться на чём-то одном, я вот ничего кроме asp.net core считай и не делаю.
Аноним 18/11/22 Птн 11:48:53 #20 №2516530 
>>2516219
Не совсем по собесам, но насколько легко залететь с 0 опыта на aspnet core онли бэк (без js)? А то на большинстве вакансий trainee\junior просят ангуляр\реакт.

И насколько хорошо вообще шарписту надо знать JS? Я то вроде в ангуляре могу компоненты накидать, но нравится не сильно. А если будет react\vue и без TS то вообще боль :(
Аноним 18/11/22 Птн 12:51:24 #21 №2516571 
>>2516530
а ты не иди туда, где с тебя еще и фронт просят. Вот просто не иди - спрашиваю больше, а оно тебе надо?!
Аноним 18/11/22 Птн 13:24:28 #22 №2516590 
>>2516487
>В EF действительно всё под капотом.
Хм. В EF точно так же можно чистым sql-м хуярить при надобности. Ну а то, что под капотом, вполне спокойно в отладчике смотрится во что оно преобразуется.
Аноним 18/11/22 Птн 13:28:55 #23 №2516594 
>>2516530
>но насколько легко залететь с 0 опыта на aspnet core онли бэк (без js)?
С нуля практически малореально. Вот где-то через год-полтора работы недофулстеком вполне уже можно.
Просто по опыту сейчас на рынке очень мало контор в коотрых одновременно было бы и толковое разделение на фронт/бэк и чтобы им требовались безопытные джуны.
Вполне реально влезть в контору где ты будешь у тебя разделение обязанностей бэк/фронт будет где-то 70/30. А оттуда уже потихоньку двигаться в сторону чистого бэка.
Аноним 18/11/22 Птн 13:30:55 #24 №2516595 
>>2516530
>И насколько хорошо вообще шарписту надо знать JS?
В принципе достаточно знать как запрос с фронта на бэк и обратно ходит. Плюс уметь пользоваться отладочной консолью браузера.
Аноним 18/11/22 Птн 13:36:09 #25 №2516598 
>>2516530
>Не совсем по собесам, но насколько легко залететь с 0 опыта на aspnet core онли бэк (без js)?
Сейчас скорее оче сложно. После пиздеца много рабочей силы появилось. Половина челиков которых собеседую говорят, что их проект закрыли/сократили/убрали премии. И это не джуны.
>И насколько хорошо вообще шарписту надо знать JS?
Хз. Я онли бэк пишу, на JS писать могу, но знаю очень поверхностно, собес по нему точно не пройду. Чо тебе кстати реакт не нравится? По мне так скорее ангуляр это неудобная хрень.

>>2516590
Всё так. Я бы правда чистого SQL в EF пытался избегать насколько можно.
Аноним 18/11/22 Птн 14:31:43 #26 №2516631 
>>2516598
>Всё так. Я бы правда чистого SQL в EF пытался избегать насколько можно.
Я бы чистого SQL в любой ORM избегал бы до самого последнего.
Вся суть ORM как раз в том, чтобы как можно меньше касаться SQL напрямую.
Аноним 18/11/22 Птн 15:13:01 #27 №2516658 
У меня такой тупой вопрос, что вы охуеете.

Зачем вообще нужен sql и ебанина с СУБД? Какой от них профит по сравнению с обычной файловой системой в качестве бд? Там кроме индексов и транзакций что-то полезное еще есть?

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

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

Еще вспоминаю опыт в геймдеве - никакой СУБД-поебистикой для данных не занимались. Хранили все данные в зип-архивах с логической структурой подходящей проекту. Довольно гибко и удобно.
Аноним 18/11/22 Птн 15:36:51 #28 №2516695 
>>2516658
Я же в соседнем треде рассказывал:
https://2ch.hk/pr/res/2424142.html#2475553
Аноним 18/11/22 Птн 15:41:04 #29 №2516700 
>>2516658
Закинь в какой-нибудь каталог пару миллионов текстовых файлов и сделай по ним полнотекстовый поиск, потом снова приходи.
Аноним 18/11/22 Птн 15:59:02 #30 №2516709 
>>2516700
а он такой скажет - я сделаю индекс. вот тот же поиск виндовый он ведь файлы индексирует, но файлы остаются файлами.
Аноним 18/11/22 Птн 16:23:16 #31 №2516734 
>>2516413
>>2516423
спасибо. мало что понятно, но я попытаюсь разобраться.
Аноним 18/11/22 Птн 17:41:28 #32 №2516818 
Помогите с ef core. Хочу сделать миграцию, но диспетчер говорит, что не может определить отношения между таблицами. У меня два класса - книга и автор. В каждом есть коллекция объектов другого класса.(public ICollection<Book> BookAuthors {get; set;} в классе Author и public ICollection<Author> AuthorBooks {get; set;} в классе Book соответственно.
Аноним 18/11/22 Птн 18:15:41 #33 №2516873 
>>2516818
Назови попробуй их Books и Authors просто, кмк еф хочет создать для твоего м2м промежуточную таблицу, которая как раз называется либо BookAuthors либо AuthorBooks и сосёт. Переименуй кароч проперти
Аноним 18/11/22 Птн 18:27:24 #34 №2516892 
>>2516818
Разобрался, проблема была в том, что помимо списка авторов у меня было поле "Руководитель проекта" также типа Author. Убрал поле - всё заработало. Но оно то всё равно мне нужно.
Аноним 18/11/22 Птн 21:28:56 #35 №2517039 
Дороу. Есть у меня одна папка в которой 10к файлов, и есть вторая папка в которой те же самые 10к файлов, только некоторые из которых изменены. Какой самый нормальный способ их синхронизировать и заменить все изменённые файлы в одной из папок? Перебирать что ли все 10к?
Аноним 18/11/22 Птн 21:32:49 #36 №2517043 
>>2517039
Git
Аноним 18/11/22 Птн 21:42:45 #37 №2517047 
>>2517039
Если тебе пофиг на историю изменений просто скопируй один каталог поверх другого, измененные файлы заменятся, те которые не изменялись - останутся теми же.
Аноним 19/11/22 Суб 00:16:49 #38 №2517135 
А зачем вообще нужны ORM? Мне кажется, они только захламляют код. В современных джава-проектах уже не используют Hibernate или JPA.
Аноним 19/11/22 Суб 08:24:58 #39 №2517269 
>>2517135
А что там используют? JDBC?
Аноним 19/11/22 Суб 08:45:19 #40 №2517276 
>>2516487
>А так смотря что ты называешь сахаром.
Дак в том и вопрос, что не понятно что учить, а что нет. Та же джава хороша тем, что легко учится, т.к. содержит мало конструкций. А в шарп их надобавляли дофига. Некоторые на мой взгляд просто избыточны и лишь ухудшают чтение кода. А вот код на джаве, хоть и многословный, но всегда легко читается.
Аноним 19/11/22 Суб 09:39:42 #41 №2517289 
>>2517276
Всё учи
Аноним 19/11/22 Суб 09:42:27 #42 №2517291 
>>2517276
А какие именно конструкции по твоему избыточны?
Аноним 19/11/22 Суб 13:03:47 #43 №2517372 
>>2517291
ConfigureAwait так и не засахарили
using тупо не может сделать 2 var disposable в одном выражении. нужно 2 using. возможность опустить скобки не является решением.
if не является выражением. Тернарный оператор здорово, но не для сложных конструкций
new
Аноним 19/11/22 Суб 15:16:37 #44 №2517468 
Помогите с entity framework. Есть класс в котором есть две переменные одного типа (компания заказчик и компания исполнитель), как запретить присваивать им одинаковые значения?
Аноним 19/11/22 Суб 15:19:25 #45 №2517470 
>>2517291
Делегаты и евенты слишком сахарные. Я конечно разобрался, что там в основе те же функциональные интерфейсы как в джаве, но всё равно в голове сложно укладывается.
Аноним 19/11/22 Суб 15:34:14 #46 №2517486 
>>2517470

А костыльные интерфейсы, в которых ДОЛЖЕН БЫТЬ ТОЛЬКО ОДИН МЕТОД - не тяжело?
Аноним 19/11/22 Суб 17:46:16 #47 №2517563 
изображение.png
Как инициализировать базу данных в режиме разработки? Код с пика выдает ошибку, мол нельзя scoped сервис в корне вызывать.
Аноним 19/11/22 Суб 18:05:02 #48 №2517579 
>>2517269
Jooq, либо jdbc, да. Это если от хуйбирнейта отказаться.
Аноним 19/11/22 Суб 18:05:26 #49 №2517581 
>>2517486
Нормально. Они наглядные, прямо в коде видно их, а в сишарпе всё по десятью слоями абстракции.
Аноним 19/11/22 Суб 18:44:42 #50 №2517619 
>>2517581

Да какие асбтракции-то. Делегат - это обычный типизированный коллбек, безопасный аналог указателя на функцию из плюсов. Совершенно ясный и понятный. А нагромождение костылей в жабе - этот как раз обход недостатка дизайна языка, где это изначально не было продумано.
Аноним 19/11/22 Суб 18:48:06 #51 №2517623 
>>2517135

Это для маленьких кривеньких проектиков, долгая жизнь которых не предусмотрена. Т.к. естественная жизнь многих проектов в это не укладывается, создателям orm-ов пришлось придумать микросервисную архитектуру.
Аноним 19/11/22 Суб 20:24:50 #52 №2517699 
>>2517563
Юзай HostedService. В нем и инициализируй.
Аноним 20/11/22 Вск 00:32:23 #53 №2517887 
Анончики, хочу вкатиться в c# разработку, какую-то базу учил в универе, сейчас уже плохо помню, сколько в среднем займет времени, чтобы я смог выполнять какие-то простенькие заказы?
Аноним 20/11/22 Вск 05:35:00 #54 №2517998 
>>2517619
А в шарпе типа пипец продумано лол.
Вот прямо щас
Я могу
Array.Sort(_values, (x, y)=> x.CompareTo(y));
но не могу
Array.BinarySearch(_values, keyTuple, (x, y) => x.CompareTo(y));

потому что для Sort есть перегрузка с делегатом, а для BinarySearch нету, ему IComparer подавай, который как раз тот самый функциональный интерфейс с одним методом и он НЕ ПРЕОБРАЗУЕТСЯ из (x, y)=> x.CompareTo(y), ведь у нас тут не жава, а шарп.

Так что костыль это или фича - крайне спорно. Лично я считаю что это фича и я бы хотел видеть такую и в шарпе.
Аноним 20/11/22 Вск 05:45:09 #55 №2517999 
>>2517998
Comparer<>.Create()
Аноним 20/11/22 Вск 06:29:25 #56 №2518008 
>>2517999
ну то есть костыль ага

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

И после этого они над функциональными интерфейсами смеются ха ха.
Аноним 20/11/22 Вск 06:37:53 #57 №2518015 
>>2517999
ты только зацени уровень портяночности
var index = Array.BinarySearch(_values, key, Comparer<KeyValuePair<TKey, object>>.Create((x, y) => x.Key.CompareTo(y.Key)));

и

Array.Sort(_values, (x, y) => x.Key.CompareTo(y.Key));

У меня от первого варианта глаз дергается. Ширина пипец. Про читабельность вообще молчу
Аноним 20/11/22 Вск 06:49:57 #58 №2518020 
>>2518008
Ты мог бы доебаться до дизайна Array.BinarySearch, не умеющего в делегаты, но за каким-то хуем доебался до самих делегатов.
Функциональные интерфейсы - это тупо костыль, чтобы не добавлять в жабу делегаты, которые так сложно добавить из-за говнокода в JVM и политики оракла тормозить развитие жабы.
Аноним 20/11/22 Вск 06:58:01 #59 №2518025 
>>2518020
до делегатов доебался не я.
я просто мимо проходил и показал что НЕ СТОИТ высмеивать фичи из других языков которые неплохо бы и в шарпе видеть.

>это тупо костыль
А вот лично для меня костыль - как раз Comparer<>.Create()

ведь хули один из БАЗОВЫХ классов шарпа даже в последней версии дотнета не принимает делегат (которые существуют аж с версии дотнета 1.1)

И вообще фича удобная, ведь тупо пришлось бы делать меньше перегрузок метода и такой херни как с BinarySearch просто не было бы.
Аноним 20/11/22 Вск 07:04:20 #60 №2518027 
>>2518020
>которые так сложно добавить из-за говнокода в JVM
это оффтоп конечно, но я без понятия о чем ты. Я не знаю жаву, я юзаю котлин и там совместо сосуществуют и всякие там (Int)->Long (аналог Func<int, long>), так и эти функциональные интерфейсы. И JVM как то не мешает. Да и вообще как она может мешать, если это на уровне компилятора решается - компилятор просто может переписать лямбду в интерфейс и сам и на бинарном уровне будет одинаково.
Аноним 20/11/22 Вск 08:07:18 #61 №2518032 
>>2518015
А джуну надо понимать такие портянки?
Аноним 20/11/22 Вск 08:11:32 #62 №2518033 
>>2518032
Нет, только сеньорам, джунам достаточно уметь выводить хеллоуаорлд в консольку. Милдлы уже могут объявлять свои переменные и даже писать свои методы.
Аноним 20/11/22 Вск 08:51:35 #63 №2518040 
Полдня ебался с нерабочими инклюдами, в итоге оказалось, что вместо efcore у меня импортировался ef6
Аноним 20/11/22 Вск 09:13:34 #64 №2518043 
Image 1.png
>>2518032
джун должен понимать и уметь писать базовый код. вот как пример на скрине. Иначе это не джун, а дворник
Аноним 20/11/22 Вск 09:37:01 #65 №2518046 
>>2518040
Я раньше путал ASP.NET MVC 5 и ASP.NET Core для .NET 5. Почему у Микрософт такие дебильные названия?
Аноним 20/11/22 Вск 09:54:42 #66 №2518050 
>>2518046
ну а как бы ты назвал?
ASP.NET vNext что ли )))
Аноним 20/11/22 Вск 10:30:37 #67 №2518056 
>>2518050
ASP.NET Core надо было по-новому назвать. К примеру, Autumn. Были бы разные модули типа: Autumn MVC, Autumn Data (вместо EF), Autumn Cloud для микросервисов всяких.
Аноним 20/11/22 Вск 10:33:34 #68 №2518057 
>>2518056
Вот только плаьформа с которой он родился называется core
А не dotnet autumn
Аноним 20/11/22 Вск 11:11:40 #69 №2518071 
Че, пацаны.
Кто Either и прочую манду протаскивал в проекты?
Как объяснить тем кто с сей начинал, что пиздато же выходит с мандами?
Аноним 20/11/22 Вск 11:46:54 #70 №2518097 
>>2518071
Никак. Ведь ничего пи... удобного нет.
В шарпе это костыли
Аноним 20/11/22 Вск 11:54:35 #71 №2518108 
>>2518097
Так красивше же:

async Task<Either<Result, Error>> Foo()
{
...
if(!valid)
return new ValidationError();
return new Result();
}

а наверху:

(var res, var error) = await Foo();
if(error is not null)
{
_logger.LogError(error);
return;
}
Process(res);
Аноним 20/11/22 Вск 12:05:53 #72 №2518123 
>>2518108
Глянул и покрылся холодным потом от ужаса
Аноним 20/11/22 Вск 12:10:02 #73 №2518132 
>>2518108

мм.. а если исключением?
Аноним 20/11/22 Вск 12:12:38 #74 №2518140 
>>2518123
А какой выход ты видишь лучше, кроме как делать уродство в виде:

abstract ActionResult<T>
ErrorResult<T> : ActionResult<T>
OkResult<T> : ActionResult<T>
?
Вот это как раз уродливо в конечном варианте выглядит.
Или по твоему - все методы - всегда возвращают однозначный результат? Или может - нужно на каждый чих - кидать исключения?
Как по мне - с мандами - красивше выходит и удобнее.

>>2518132
Так это проблемы по перформансу. А не прошедшее валидацию сущности - не являются исключительной ситуацией. Исключение нужно бросать, внезапно, в исключительных ситуациях, например - база недоступна, тут действительно надо кинуть исключение, чтобы на самом высоком уровне- перехватить его и прекратить обработку.
Если на каждый чих кидать исключение то оно уебищно выглядит + сразу большие проблемы с производительностью.
Аноним 20/11/22 Вск 12:25:59 #75 №2518160 
>>2518140
>А не прошедшее валидацию сущности - не являются исключительной ситуацией

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

Приведи другой тогда пример, где нужен этот either на твой взгляд.
Аноним 20/11/22 Вск 12:34:48 #76 №2518177 
>>2518015
>var index = Array.BinarySearch(_values, key, Comparer<KeyValuePair<TKey, object>>.Create((x, y) => x.Key.CompareTo(y.Key)));
Ты написал говнокод.
Я бы тебе за такое на ревью лося бы пробил сапогом.
1. Делегат и компарер должны быть предварительно объявлены отдельными переменными с понятными названиями и комментариями при необходимости.
2. var index? Кто JS-петуха пустил в мою решоточку? Почему был не написать int вместо var? Длина такая же. Ясности больше. var указывается только там, где тип очевиден. Например var sb = new StringBuilder(). Но и это уже не актуально в новых шарпах. Поэтому по сути хорошим тоном является везде явно указывать тип, а var писать может быть только в Linq'е.
Аноним 20/11/22 Вск 12:38:27 #77 №2518182 
>>2518177
В ide тип указывается рядом с объявлением переменной, писать самому его нет смысла.
Аноним 20/11/22 Вск 12:44:47 #78 №2518191 
>>2518182

Это когда либо он всплывает через несколько секунд по наведению пойнтера (охуенно удобно), либо дублируется var, а серенькими букофками ещё добавляется тип. Просто заебись. Правда, при ревью пулл реквеста в браузере, например, нихуя ни всплывает, как и при просмотре истории, но ничего.

А ещё можешь почитать для чего ms вообще высрал этот var, и это совсем не для того, чтобы совать его везде при каждом удобном случаче.
Аноним 20/11/22 Вск 12:50:05 #79 №2518196 
>>2517887
>выполнять какие-то простенькие заказы
Какие заказы? На шарпе фриланс мертв. Это ентерпрайз решение для штатных сотрудников, как и джава. Мелкие задачи в одно рыло на нем не решают.
В лучшем случае будешь на фреймворке 4.6.1 пилить для пиндоса надстройку к аутлуку или екселю.
Учи пхп, если хочешь с заказов кормиться.
Аноним 20/11/22 Вск 12:57:39 #80 №2518206 
image
image
>>2517291
>какие именно конструкции по твоему избыточны?
Пикрилы уебищны и уродливы.
Зачем такие вырвиглазние брайнфак-лайк решения наспех впихивать в язык мне не понятно.
Некоторая экономия строк кода за счёт убийства читабельности и интуитивности понимания и тем более написания таких конструкций.
Аноним 20/11/22 Вск 13:03:55 #81 №2518210 
>>2518177
>Делегат и компарер должны быть предварительно объявлены отдельными переменными с понятными названиями и комментариями при необходимости.
Кому должны? с хера ли? ты и в LINQ вместо каждой лямбды обьявляешь?
Аноним 20/11/22 Вск 13:21:46 #82 №2518225 
>>2518210
Чел, ты можешь в своих петпроектах срать как тебе вздумается.
Просто когда твой код будут читать другие люди, не нужно делать так, чтобы они тебя ненавидели, и считали необученным и безграмотным идиотом.
Если в твоём коде появляется конструкция типа ))) - три и более скобки подряд, то это например один из верных маркеров того, что это сложно будет читать и понимать, читателю придется останавливаться и разбираться что во что вложено, а может быть даже копировать из браузера код в текстовый редактор и там разбивать на блоки, чтобы прочитать.
Поэтому очевидным решением будет выносить отдельные вложенные сущности в самостоятельные переменные.
Линк при грамотном написании не имеет таких проблем и там это не требуется, как правило.
Аноним 20/11/22 Вск 13:27:15 #83 №2518236 
Где хранить классы, определяющие формат входных данных для webapi? В asp.net в действии советуют создавать их внутри контроллера, но я хз насколько это правильно.
Аноним 20/11/22 Вск 13:44:48 #84 №2518264 
>>2518225
>Если в твоём коде появляется конструкция типа ))) - три и более скобки подряд
ну так поэтому я и хейтю что нет функциональных интерфейсов, а эти костыли
и когда тебя ВЫНУЖДАЮТ мудрить с именаи, то это говно язык
Аноним 20/11/22 Вск 14:10:11 #85 №2518299 
>>2518264
>нет функциональных интерфейсов
Где их нет? В стандартной либе? Так там дохуя чего нет, даже не смотря на то, что стандартная либа шапра из коропки даёт столько всего, что другим языкам и не снилось, и в которые в отличие от шарпа в каждый проект приходится тянуть зависимости от дикого зоопарка разномастных либ.
Зато можно допилить самому или сделать обертку или сделать аналог или скачать нугет пакет, если кто-то уже озаботился проблемой.
Сам по себе язык сишарп поддерживает функциональные интерфейсы, типа IComparer. Можно даже запилить какой-то свой обобщённый класс с имплисит кастованием его интанса из делегата.
Так что я не очень понимаю, на что ты жалуешься. На отсутствие вожделенных перегрузок в стандартной либе грех жаловаться.
Аноним 20/11/22 Вск 14:21:50 #86 №2518310 
>>2518299
>Сам по себе язык сишарп поддерживает функциональные интерфейсы, типа IComparer
их нет в шарпе. он не скастит сам (x, y)=> в IComparer
поэтому и приходится использовать портяночную фабрику вместо "компилятор за меня это сам переписал"

>На отсутствие вожделенных перегрузок в стандартной либе грех жаловаться.
ну так то да. всего то пара десятков лет прошло с момента рождения класса Array и делегатов
И можно было бы сказать, что не знал автор класса по делегаты, но в Array.Sort он есть.
Аноним 20/11/22 Вск 14:23:15 #87 №2518315 
>>2518196
Каждый раз как вижу пхп у меня начинается какая то огрессия, и зубы скрипят.
Аноним 20/11/22 Вск 14:24:26 #88 №2518316 
>>2518196
А вообще, разве шарписты не нужны тем же юнитистам? Модуль какой нибудь захуярить им время о твремени разве не требуется?
Аноним 20/11/22 Вск 14:27:01 #89 №2518320 
>>2518043
Понимаю что на скрине, могу уже кидать резюме на hh?
Аноним 20/11/22 Вск 15:02:06 #90 №2518351 
>>2518320
так любой джун понимает. учись еще
Аноним 20/11/22 Вск 15:20:25 #91 №2518382 
>>2518196
>Какие заказы? На шарпе фриланс мертв.
Не совсем так. Он не мертв, он скорее в тени. Вполне возможно найти какую-нибудь подработку, вроде написания пары-тройки микросервисов для какой-нибудь мелкой (относительно энтрепрайза) конторы за более-менее нормальный прайс. Но только по знакомству. С улицы в такие проекты никого не берут.
>>2518316
>А вообще, разве шарписты не нужны тем же юнитистам? Модуль какой нибудь захуярить им время о твремени разве не требуется?
Нет, там своя атмосфера. В геймдеве (особенно на юнити) кодерских задач как таковых не особо много, все что нужно вполне решается силами пары-тройки штатных макак.
Аноним 20/11/22 Вск 15:36:26 #92 №2518415 
>>2518046
>Почему у Микрософт такие дебильные названия?
Просто у них в отделе нейминга продуктов какой-то рептилоид сидит (наверное брат того который названия в IKEA придумывает)
У них абсолютно всегда и во всех продуктах была хуйня с неймингом. Что в досе, что в винде, что с МС офисом, что с консолями. Смирись.
Аноним 20/11/22 Вск 16:48:16 #93 №2518533 
>>2518415
Нет. Просто исторически сложилось
Аноним 20/11/22 Вск 17:16:19 #94 №2518561 
Entity framework из меня уже все соки выпил. Я пытался сделать миграцию, но при обновлении бд постоянно вылезала ошибка, причину которой я понять был не в состоянии. что-то про каскадное удаление и рекурсию Помогло в итоге только удаление бд, всех миграций и создание бд начисто.
Аноним 20/11/22 Вск 17:25:36 #95 №2518573 
>>2518533
Что нет?
То что это исторически сложилось, никак не отменяет ебанутости нейминга во всех линейках продуктов Майкрософта.
Аноним 20/11/22 Вск 17:27:54 #96 №2518579 
>>2518561
>Помогло в итоге только удаление бд, всех миграций и создание бд начисто.
Ну, на этапе разработки ситуация "да заебало бля, короче я дропаю БД и все миграции и делаю единую" - очень часто встречается. Так что норм.
Аноним 20/11/22 Вск 18:03:33 #97 №2518658 
>>2518573
Но конкретно этот случай не относится к чудищу из икеи который клонировал мелкософт
Аноним 21/11/22 Пнд 10:03:22 #98 №2519169 
>>2518206
Тоже с этого жопа горит. Какие-то хипстерки тащат парашный стрелочный синтаксис из функциональных языков. До дебилов не доходит, что уже есть православый switch, а более сложные случаи ПАТТЕРН МАТЧИНГА должны быть спрятаны в полиморфные вызовы методов объектов.
Аноним 21/11/22 Пнд 10:33:42 #99 №2519181 
>>2519169
>есть православый switch,
а он тут причем?
>а более сложные случаи ПАТТЕРН МАТЧИНГА
и он тот же тут причем?

паттерн-матчинг - сокращают цепочку развесистых if
Аноним 21/11/22 Пнд 11:17:06 #100 №2519203 
>>2519181
>а он тут причем?
Да все при том же. Весь синтаксический сахар стрелочек компиляется в свичи/ифы.

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

Какбы плохая практика патерн матчинга - пытаться проверить сразу много данных на месте, вместо упаковки их инвариантов и проверки их одним семантическим методом. Это наследие из тех времен когда были списки, но не было объектов с поведением. В списки могли засунуть всякую херень. Нужен был гибкий способ их фильтровать на предмет ошибок и дальнейшей обработки. В ОО-языке наличие патерн матчинга это шаг назад, разрабы натурально лезут обратно на дерево функций с которого только недавно слезли.
Аноним 21/11/22 Пнд 11:56:43 #101 №2519221 
>>2519203
>Весь синтаксический сахар стрелочек компиляется в свичи/ифы.
ммм. в этом наверное и есть суть сахара как сахара )
Предлагать взамен то, от чего сахар должен спасти - ну такое себе

>В тру объектном дизайне развесистых ифов не должно быть.
>ОО-языке наличие патерн матчинга
внезапно люди пишут НЕ ТОЛЬКО крайне высокоуровневый код. И этим все сказано.
Каждой задаче - СВОЙ ИНСТРУМЕНТ.

Считать, что в коде не должно быть развесистых иф - ты там формошлепаешь что ли? да любой алгоритмический код или работающий с рефлексией и кодогеном, да всякие сериализаторы кастомные просто перенасыщены разными ифами.
Аноним 21/11/22 Пнд 12:05:43 #102 №2519231 
Вышла книга Троелсена по дотнет 7!

https://vk.com/doc44301783_525415153?hash=pJDlsZlDIqqRXwvL5bO5uyXzGp3zx7SzQsWsxxTsqfc&dl=1DgZwktH4Y4b3w1gkWVHCCIwiMi9JkcBnlO99oF56bo
Аноним 21/11/22 Пнд 12:31:20 #103 №2519251 
Если я в Xaml подписываюсь на событие, то после удаления контрола, там все подчищается автоматически?
Аноним 21/11/22 Пнд 12:31:28 #104 №2519252 
>>2519231
Хрена себе. А ведь только летом по net 5 выпустили.
Аноним 21/11/22 Пнд 12:32:54 #105 №2519253 
>>2519231
Сука, наебал.
Аноним 21/11/22 Пнд 12:36:42 #106 №2519258 
я обожаю C#, обожаю его синтаксис, люблю писать на нём что-то (WPF, хочу учить asp.net), но блять, по сравнению с другими языками (python, java, js) количество ресурсов по изучению C# и его технологий равно нулю. Я говорю про ресуры на русском (да, я не знаю английского, вот такой хуесос). Дрочить метанит уже заебало (мне не нравится статьи там, особенно бесит дохуя опечаток и ошибок); мне не нравится профессор веб; я не хочу изучать язык или технологию по документации, потому что для любого нормального языка есть сайты по изучению/курсы/книги; я не хочу читать устаревшие книги фримана или шилдта, потому что новые ещё не перевели. Я писал на C# для себя 1.5-2 года и сейчас просто выгорел от того, что последние полгода я не прогрессирую от слова совсем, нет желания что-то учить и программировать вообще, просто потому что уже тошно видеть одни и те же ублюдские ресурсы с отвратительными статьями. Ну почему так нахуй, один из самых популярных языков, а происходит такое говно. (и да, может с английскими ресурсами такая же хуйня, хз)
Аноним 21/11/22 Пнд 12:37:40 #107 №2519259 
>>2519251
при подписке на кого-то этот кто-то удерживает тебя пока сам жив и не дает тебя скушать.
А значит если контрол удалился, то его ссылка на тебя не препятствует тебя сожрать.
Аноним 21/11/22 Пнд 12:39:11 #108 №2519261 
>>2519253
Блин. Я перепутал версию языка и дотнета. Сорян, тупанул.
Аноним 21/11/22 Пнд 12:46:40 #109 №2519265 
>>2519258
— Ко-ко-ко я топчусь на месте
— Как тебе цель: изучить английский?
— В смысле? Я хочу, чтобы вы сами сдвинули меня с места

Прости, что пришлось расписать банальные вещи.
Аноним 21/11/22 Пнд 12:49:16 #110 №2519266 
>>2519251
Ну а в обычных событиях контрола где в code-behind этого же контрола хендлер - там контрол ссылается сам на себя, то есть такое GC выглядит как циклическая ссылка, что не мешает собрать мусор.

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

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

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

Исключение - не OneTime биндинг к свойствам без INPC - то есть если биндинг к чему то, что не поддерживает INPC, например ты биндишься к IList то без OneTime у тебя будет утечка.
Аноним 21/11/22 Пнд 12:51:26 #111 №2519268 
>>2519265
Какие книги почитать на английском?
Аноним 21/11/22 Пнд 12:53:05 #112 №2519274 
>>2519259
>то его ссылка на тебя не препятствует тебя сожрать
Сборщиком мусора?

Но когда я вручную подписывался внутри контрола, то было очень много случаев, когда контрол продолжал существовать, даже когда я удалял на него ссылку.
Аноним 21/11/22 Пнд 12:55:19 #113 №2519276 
>>2519268
Чел писал про книги, которые не переведены. Ну наверно их.
Аноним 21/11/22 Пнд 12:58:05 #114 №2519280 
>>2519274
Если объект держит на тебя ссылку, но сам объект был скушан GC, то и ссылка на тебя исчезла.
При обычной подписке ссылку на тебя удерживают через делегат, что просто немного косвенности, но смысл не меняет.

>даже когда я удалял на него ссылку.
ссылку откуда?

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

Если ты не плодишь код, где в коде рождаешь контролы или захватываешь ссылки на контролы и этот сам код не прилепляешь к чему то долгоживущему, то проблем нет
Аноним 21/11/22 Пнд 13:30:52 #115 №2519299 
>>2519265
типичный двачер, я ему говорю про то, что для других языков дохуища курсов/книг/сайтов для изучения, он мне говорит выучить англ. язык. Если что, выученный мной английский не увеличит количество ресурсов на русском и не улучшит их качество, чини логику.

И да, я не говорил, что не учу англ./не собираюсь учить англ, я говорю про то, что нет ресурсов, какое "сами сдвинули меня с места", ты чет ваще дебил какой-то...
Аноним 21/11/22 Пнд 13:48:33 #116 №2519312 
C# vs Java - кто круче?

https://youtu.be/fG290-1sljc
Аноним 21/11/22 Пнд 14:00:46 #117 №2519318 
>>2519312
целый час? да ну нахер.
хватает БРЕДОВОГО комента от @generalchannel6740 под видео чтобы понять что смотреть не стоит.
Аноним 21/11/22 Пнд 14:24:24 #118 №2519327 
>>2519312
Вообще дикий комент там

>Во первых в шарпах куча сахара. Он не всем так уж и нужен, по мне, это ничтожный аргумент.
Верно. Он не нужен упоротым, поросшим мхом, жавистам, любящим писать длиннннно и много.
>Во вторых java опенсорс, линуха
Ну тут как бы можно и не читать дальше ибо и так все понятно
> В третьих у шарпов есть куча нюансов в CLR в отличие от уже отшлифованной JVM.
А тут в прошлых тредах жаловались именно на необходимость тюнинга JVM.
про type erasure будем вспоминать? нет, ну и ладно
>и не заморачиваться над более узкими оптимизациями
структуры были изначально. Далее Span/ref, дотнет 7 вообще вышел под лозунгом "не нужны нам новые фичи, даешь оптимизацию"
>и безопастностью которая у шарпов слабее
хз о чем это он. особенно после нашумевшей истории с log4net
>Видим nхибернейт стартовал на java, стиздили на шарпы.
ммм и чо? для жавистом же - им же проще переходить. А так кто юзает хибернейт? стандарт это EF
>elasticsearch - java, Jira - java, Jenkins - java, Kafka - java
а гитлаб внезапно руби. И чет НИКТО не переписывает на жаву, на такую замечательную жаву.
>То что крупные компании используют java тк раньше не было выбора - смешно.
мда. ой дурак.
>async await? Может стоит осторожнее с многопоточным работать?
асинк/авайт это киллер вещь для работы с корутинщиной и асинхронщиной. настолько крутая, что ее вводят везде где можно - питон, жс, даже руби
писать в старом стиле это как делать операцию топором - можно коненчно, но топорно
и тут его "осторожнее" как раз и нужно.
>В java хорошая многопоточность в отличии от шарпов
дооааа доааа ))
>Почему в на CS50 Harvard, java изучается как нормальный язык
ох ох. да в разных учебных заведениях даже паскаль изучают. это ни о чем не говорит.
>но программируя на python, go, java чувствуешь себя программистом, а не девелопером.
ась?
на питоне кстати реально кульно в плане "думаешь о задаче. а не о том как". Потом идет шарп. потом жава, потом го

ладно бы он про котлин, но он про жаву
Аноним 21/11/22 Пнд 14:33:05 #119 №2519334 
>>2519299
>для других языков дохуища курсов/книг/сайтов для изучения
Каких? Русскоязычный материал — всякая основа, уровня информации из метанита или "курсы для прокрастинаторов". Специализированные вещи никто никогда не переводит.

На C# количественно туторов меньше просто потому, что всяких хуесосов-разводил меньше, но тематически все на том же уровне.
Не знаю в какой ты реальности живешь, но в моей реальности найти годную информацию по питону и джаваскрипту гораздо сложнее — без вот этой хуни, где на середине статьи тебе начинают впаривать масло для бороды.
Аноним 21/11/22 Пнд 14:37:24 #120 №2519336 
>>2519327
Очень шикарно развёрнутый ответ,вы круты
Аноним 21/11/22 Пнд 14:37:35 #121 №2519337 
>>2519327
>"думаешь о задаче. а не о том как"
В любом языке можно так делать, просто потом получается говнокод. И в одних языках это осуждается (поэтому приходится "думать как"), а в других это норма.
Аноним 21/11/22 Пнд 14:38:26 #122 №2519339 
>>2519299
то просто ты ленивый
да одного хабра хватает чтобы знать разные этакие штуки глубоко
в мсдн неплохо описана работа с их продуктами - тот же EF внезапно хорошо описан
Книги никогда не читал.
Аноним 21/11/22 Пнд 14:38:47 #123 №2519340 
>>2519318

Как это вообще можно прочитать?.

>Во первых в шарпах куча сахара. Он не всем так уж и нужен, по мне, это ничтожный аргумент. Во вторых java опенсорс, линуха и тп, а это власть и кастом перед любым заказчиком, не говоря уже про разные APS, JVM, JDK, GC. И как сказали что заказчику нужно быстрее и хорошо - тогда java так же очень хорошо подходит(подключаем бут и не паримся, все работает из коробки). В третьих у шарпов есть куча нюансов в CLR в отличие от уже отшлифованной JVM. Мелкомягкие просто тупо продают язык как продукт и не заморачиваться над более узкими оптимизациями и безопастностью которая у шарпов слабее. Винда сущее говно на которое подсадили СНГ в 2000х. Мы в компании используем linux и поем, мак тут дело вкуса, по мне, лучше взять нормальный ноут и пихнуть туда linux. В четверых, открываем вакансии по шарпам. Видим Например касандру, она на java. Видим nхибернейт стартовал на java, стиздили на шарпы. Далее, elasticsearch - java, Jira - java, Jenkins - java, Kafka - java. То что крупные компании используют java тк раньше не было выбора - смешно. Почему они тогда до сих пор пишут новые сервисы и опенсорc на java? Да java по синтаксису проигрывает, шарпы надувают из года в год, а java забросили на 10 лет. Но даже при таком раскладе, можно писать все что угодно(практически) и не париться. Если вам нужно куча сахара, то шарпы. Зато когда будете работать над крупными проектами в USA, ОАЭ ,China, то слезы не показывайте. async await? Может стоит осторожнее с многопоточным работать? В java хорошая многопоточность в отличии от шарпов. Деплой на azure? Серьезно? 90% девопсов писают кипятком от AWS или на худой GCP, мб стоит выбросить все сертификаты. Почему в на CS50 Harvard, java изучается как нормальный язык, а шарпы мелькают только на курсе Game Development. Почему в Stanford CS java это самый большой курс из всех, а шарпы изучаются в кратком обзоре современных языков. Язык это инструмент, но программируя на python, go, java чувствуешь себя программистом, а не девелопером. Я понимаю что некоторым хочется верить что они давно сделали правильный выбор, и оба спикера сделали правильный выбор. Каждому инженеру важно иметь хороший инструмент. Заказчику хочется быстрее, дешевле, и что бы все могли. Оба языка отлично справляются. Но мало заказчиков знают сколько ночей потребовалось что бы внедрить хорошие решения используя тот или иной язык.
Аноним 21/11/22 Пнд 15:27:42 #124 №2519370 
>>2519312
Чел, который представлял джаву, не сказал, что в джаве есть полная обратная совместимость и код 1995 года работает и сейчас. А в сишарпе каждый год всё ломают. Даже в этом треде все сидят и ждут новых книг по дотнету 7, потому что на старом дотнете уже ничего не запускается.
Аноним 21/11/22 Пнд 15:38:49 #125 №2519377 
>>2519370

Что имеешь в виду под "полной обратной совместимостью"?..

Кстати, "полная обратная совместимость" спринга - отдельный вид изощрённого удовольствия.
Аноним 21/11/22 Пнд 16:00:57 #126 №2519415 
>>2519370
>и код 1995 года работает и сейчас.
Хватит распространять этот миф
Аноним 21/11/22 Пнд 16:22:37 #127 №2519454 
>>2519415
Я начинал учить джаву по старой книжке и все примеры работали на jdk 17

>>2519377
Компилируется и работает.
Аноним 21/11/22 Пнд 16:25:12 #128 №2519459 
>>2519454
>Компилируется и работает.

А C#-код, написанный на первой версии языка, у тебя не компилируется и не работает что ли? Чего пиздишь?

Или недоволен, что на .net6 не можешь создать приложение Виндоус Формс?
Аноним 21/11/22 Пнд 16:28:24 #129 №2519463 
>>2519459
> А C#-код, написанный на первой версии языка, у тебя не компилируется и не работает что ли? Чего пиздишь?
Не все стандартные либы нет фреймворк перенесены на неткор.
Аноним 21/11/22 Пнд 16:30:06 #130 №2519465 
>>2519459
А ты в курсе вообще, что в 8 версии они ввели null-значимые типы и теперь все ссылочным типам надо приписывать ?, чтобы присвоить null.
В 10 версии они изменили Main и он теперь как отдельный файл без класса и функции.
Про переделки фреймворков я вообще молчу. Там вообще ничего не осталось от первой версии.
Аноним 21/11/22 Пнд 16:31:30 #131 №2519467 
>>2519463
>Не все стандартные либы нет фреймворк перенесены на неткор.

Стандартные либы - какие? Сравним с "стандартными либами" в джаве...
Аноним 21/11/22 Пнд 16:32:28 #132 №2519468 
>>2519465
>А ты в курсе вообще, что в 8 версии они ввели null-значимые типы и теперь все ссылочным типам надо приписывать ?, чтобы присвоить null.
>В 10 версии они изменили Main и он теперь как отдельный файл без класса и функции.

Хочешь, научу чтобы не надо было, и чтобы Main был с классом и функцией?

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

А ты не молчи. Сравним с джавой...
Аноним 21/11/22 Пнд 16:32:57 #133 №2519469 
>>2519467
В джаве даже стандартные либы сохраняют обратную совместимость. Есть даже неудачные решения, которые не удаляют, чтобы старый код работал.
Аноним 21/11/22 Пнд 16:35:33 #134 №2519471 
>>2519468
>Хочешь, научу чтобы не надо было, и чтобы Main был с классом и функцией?
Давай!

Я пробовал писать код из книжки Фримана по дотнет кор 2.0 и ничего не работало. Сидел как дурак и гуглил каждый кусок кода, а там писали, что в дотнет 6 всё по-другому. Даже не просто заменить А на Б, а совершенно иной подход. Надо целые модули переписывать.
Аноним 21/11/22 Пнд 16:37:59 #135 №2519474 
>>2519469

Ну вот можно конкретный пример "стандартной либы"?

>>2519471

То же самое, нужен конкретный пример. А то я тоже из гайда спринга (прям текущего на сайте с оф докой) пишу хеллоу ворлд, и он не работает. Т.к. они опять что-то поменяли. Но я-то понимаю, что спринг - это нихуя не "стандартная библиотека".
Аноним 21/11/22 Пнд 16:41:03 #136 №2519478 
>>2519474
java.util.*

>>2519474
В Спринге хеллоу ворлд не менялся. Даже в Спринг буте всё тоже самое. Можно взять любую книга за любой год и все примеры выполняться как родные.
Аноним 21/11/22 Пнд 16:52:47 #137 №2519502 
>>2519478
>java.util.*

Я про .net, к нему ж претензии. Могу также ответить - System.Collections

>В Спринге хеллоу ворлд не менялся.

В windows forms тоже.
Аноним 21/11/22 Пнд 17:08:51 #138 №2519540 
>>2519299
>я ему говорю про то, что для других языков дохуища курсов/книг/сайтов для изучения
Для шарпа есть МСДН, который покрывает где-то 85...90% информации которую нужно знать.
Аноним 21/11/22 Пнд 17:11:16 #139 №2519548 
>>2519540
>msdn
Дядь, как там в 2008?
Аноним 21/11/22 Пнд 17:13:46 #140 №2519552 
Зумерский МСДН.
Аноним 21/11/22 Пнд 17:14:01 #141 №2519553 
>>2519548
мсдн-ом он называет оф доку от мелкософт
то что ее перенесли на новый адрес сути не меняет.
в народе она по прежнему зовется "мсдн" и все понимают о чем речь.
Аноним 21/11/22 Пнд 17:14:58 #142 №2519555 
>>2519471
>>Хочешь, научу чтобы не надо было, и чтобы Main был с классом и функцией?
>Давай!
При создании солюшена ставишь галку "Do not use ttop level statements" и у тебя будет нормальная структура с Main'ом
Затем в свойствах проекта устанавливаешь
ImplicitUsings и Nullable в disable
И у тебя будут нормальные юзинги и отсутствие дроча с nullable
Аноним 21/11/22 Пнд 17:15:42 #143 №2519556 
>>2519553
Хз, я начинал вкатываться в шарп еще в 2015, уже никто так не называл. Я чисто по аббревиатуре догадался что он имеет ввиду.
Аноним 21/11/22 Пнд 17:17:32 #144 №2519558 
>>2519555
кстати студия научилась запоминать эту галку
А вот нулабле трогать не нужно.

>>2519556
так до сих пор даже называют. а молодежь нынче необразованная - вон книжки им подавай
Аноним 21/11/22 Пнд 17:18:07 #145 №2519559 
>>2519548
Я хуй знает, но и сейчас любой поисковик по тегу "мсдн" тебя на сайт с доками майкрософта по дефолту выкинет. Так что похуй как он там сейчас называется, суть одна и та же, только пользоваться удобнее стало.
Аноним 21/11/22 Пнд 17:19:17 #146 №2519560 
>>2519556
Я вообще с 2018-го вкатился, но до этого с C++ начинал, поэтому так и помню.
Аноним 21/11/22 Пнд 17:25:55 #147 №2519565 
>>2519560
>>2519558
>>2519559
Ну вот мы и сошлись во мнении, что в первую очередь так говорят олды, переадресацию сделали для неофитов, которые услышат от них такую аббревиатуру.
Аноним 21/11/22 Пнд 18:17:06 #148 №2519619 
>>2519565
а как говорят неофиты?
официальная документация?
фууу быть такими
Аноним 21/11/22 Пнд 18:21:06 #149 №2519622 
>>2519619
Ну все, пристыдил, как жить то теперь, блядь.
Аноним 21/11/22 Пнд 18:36:48 #150 №2519645 
>>2519340
>программируя на python, go, java чувствуешь себя программистом, а не девелопером
Проиграл с этого ментального самоподдува

мимо go-господин, в прошлом писал на жабе
Аноним 21/11/22 Пнд 18:38:40 #151 №2519646 
>>2519312
>>2519327
>>2519340
https://www.youtube.com/watch?v=g0sRBc4ZisM

Адекватное мнение.
Аноним 21/11/22 Пнд 18:46:29 #152 №2519653 
>>2519645
А программируя на c++ чувствуешь себя Computer Engineer, а не каким-то программистом или девелопером.
Аноним 21/11/22 Пнд 18:52:43 #153 №2519659 
>>2519327
>>В java хорошая многопоточность в отличии от шарпов
>дооааа доааа ))
Там видимо подразумевались фишки виртуальных тредов.

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

>>2519327
>асинк/авайт это киллер вещь для работы с корутинщиной и асинхронщиной
Обсуждаемо. Делить мир на синхронные и асинхронные функции тоже не есть хорошо. Из всех языков конкарренси для среднего обывателя лучше всего реализован в Go.
Аноним 21/11/22 Пнд 18:57:32 #154 №2519661 
>>2519502
Если я возьму старющую книгу по шарпу, то там откомпилируется хоть один пример?
Аноним 21/11/22 Пнд 18:57:42 #155 №2519662 
>>2519619
>а как говорят неофиты?
А никак они требуют книжек на русском и плачутся об отсутствии материалов по шарпу.
Аноним 21/11/22 Пнд 19:00:14 #156 №2519664 
>>2519661
Конечно. Тут же не просто так советую Рихтера, а это 2012 год.
Аноним 21/11/22 Пнд 19:02:00 #157 №2519665 
>>2519664
Почему Рихтер не может поставить жену на место и написать новую книгу?
Аноним 21/11/22 Пнд 19:06:29 #158 №2519671 
>>2519665
которую через год переписывать потому что неофиты бестолковые и "у нас не компилируется, мы не понимаем, а в гугле забанили".
Аноним 21/11/22 Пнд 19:13:07 #159 №2519677 
>>2519671
Ну а как бы ты поступил, если у тебя не компилировалось бы?
Аноним 21/11/22 Пнд 19:26:06 #160 №2519687 
>>2519327
>>2519312
А какая разница какой язык круче? Я в свое время писал и на С++, и на шарпе, и на джаве, и на питухоне. В итоге сейчас на проектах с говнолангом сижу.
В первую очередь выбирайте проекты, чтобы там были выстроены адекватные процессы и разрабы были нормальными, а не пассажирами с заводов, вкатившиеся по айти курсам. Язык и тулинг это уже сугубо вторично.
Аноним 21/11/22 Пнд 19:32:08 #161 №2519690 
>>2519677
Гуглил про миграцию с версии языка в книге на новее. Там описана разница

>>2519687
А я прошел через 10ок языков и сижу на 3 основных ибо в каждом своя радость
Аноним 21/11/22 Пнд 19:32:19 #162 №2519692 
>>2519687
Вдруг придётся вручную прикручивать к проекту Tomcat или выучишь дотнет 7, а на работе скажут, а мы пишем на дотнет 8, а ты там нифига не понимаешь, потому что снова всё перелопатили?
Вдруг у тебя сломается комп и надо будет писать на слабом ноуте, на котором 10-ку не поставить и вижлу не запустить?
Вдруг надо будет написать веб-приложение, а идея у тебя бесплатная и нельзя создать проект на спринге?
Вдруг придётся писать под отечественный линупс, а там дотнет не ставится?
Аноним 21/11/22 Пнд 19:33:19 #163 №2519693 
>>2519690
По своему опыту скажу, придётся гуглить каждую вторую строчку.
Аноним 21/11/22 Пнд 19:34:38 #164 №2519694 
>>2519693
Так читай мсдн. Там актуально
Аноним 21/11/22 Пнд 19:35:20 #165 №2519696 
>>2519694
Мне нужен учебник, а не справочник
Аноним 21/11/22 Пнд 19:45:31 #166 №2519712 
Почему Шилдт перестал писать по шарпу, а по джаве продолжает писать?
Аноним 21/11/22 Пнд 19:48:35 #167 №2519718 
>>2519712
Очевидно, решил, что шарп всё. Через пару лет и по жабе писать перестанет.
Аноним 21/11/22 Пнд 19:49:31 #168 №2519722 
>>2519692
Это такой местный троллинг тупостью?
Аноним 21/11/22 Пнд 19:51:56 #169 №2519725 
>>2519722
Это реальные проблемы, с которыми можешь столкнуться, если не правильно выбрал язык.
Аноним 21/11/22 Пнд 19:54:00 #170 №2519727 
>>2519677
>Ну а как бы ты поступил, если у тебя не компилировалось бы?
Раньше в книгах по программированию так и писали: "Чел, извини у нас тут дохуя ошибок в листингах программ, но ты разберешься - мы в тебя верим"
Аноним 21/11/22 Пнд 19:54:57 #171 №2519728 
Capture.JPG
как получить делегаты на геттер и сеттер, если на входе объект и его PropertyInfo?
с дженериком вместо "????" работает, но я к сожалению не могу использовать дженерик
Аноним 21/11/22 Пнд 19:56:26 #172 №2519730 
>>2519725
>>2519692
>Вдруг придётся вручную прикручивать к проекту Tomcat
Берешь и прикручиваешь, это делается просто, достаточно парочку гайдов от индусов прочесть.

>>2519692
>выучишь дотнет 7, а на работе скажут, а мы пишем на дотнет 8, а ты там нифига не понимаешь, потому что снова всё перелопатили?
Значит берешь и начинаешь понимать, что там они перелопатили.

>>2519692
>Вдруг у тебя сломается комп
Тогда я прошу компанию выдать мне новый.

>>2519692
>на котором 10-ку не поставить и вижлу не запустить
Ставлю легковесный дистр линукса + vs code.

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

>>2519692
>Вдруг придётся писать под отечественный линупс
Попросту не работай в подобных конторах.

Видишь, какие простые решения у всех проблем?
Аноним 21/11/22 Пнд 19:56:27 #173 №2519731 
>>2519728
>"????"
Это новый сахар? Сколько можно-то...
Аноним 21/11/22 Пнд 19:57:22 #174 №2519732 
>>2519728
Испоьзовать кодогенерацию
Или одну из кучи готовых либ генерящиъ геттеры сеттеры
Аноним 21/11/22 Пнд 19:59:20 #175 №2519733 
>>2519730
Ну тогда получается, что выгоднее учить джаву, а у сишарпа больше минусов.
Аноним 21/11/22 Пнд 20:01:59 #176 №2519737 
>>2519692
>Вдруг придётся вручную прикручивать к проекту Tomcat или выучишь дотнет 7, а на работе скажут, а мы пишем на дотнет 8, а ты там нифига не понимаешь, потому что снова всё перелопатили?
А может ты просто даун который не способен осилить несколько страниц текста с описанием изменений.
>Вдруг у тебя сломается комп и надо будет писать на слабом ноуте, на котором 10-ку не поставить и вижлу не запустить?
Во первых. Ноутов на которых невозможно десятку и студию запустить ты сейчас не найдешь уже в рабочем состоянии, так что не надо пиздеть.
Во вторых. Сейчас даже под андроид IDE есть, с автоподстановкой, нюгетами и даже компиляцией на теле. Так что даже в жопе мира можно кодить (как-то так и делал зависнув на неделю без компа в ебенях)
>Вдруг надо будет написать веб-приложение, а идея у тебя бесплатная и нельзя создать проект на спринге?
Чиво бля?
>Вдруг придётся писать под отечественный линупс, а там дотнет не ставится?
Ты из какой дыры выполз? Ты сейчас заебешься придумывать линукс на котором нет .net'а.
Аноним 21/11/22 Пнд 20:03:57 #177 №2519741 
Capture.JPG
>>2519731
нет это я тупой и не могу понять что туда пихать чтобы заработало
вот это работает отлично, одна проблема только - дженерики использовать нельзя
>>2519732
а можно где-то примеры посмотреть? кодогенерация всмысле Reflection.Emit?
Аноним 21/11/22 Пнд 20:04:46 #178 №2519742 
>>2519737
У меня рабочий ноут, на который нельзя поставить 10-ку. Зато там работает линупс легковесный.
Аноним 21/11/22 Пнд 20:08:04 #179 №2519745 
В нет6 добавили тип DateOnly, уже релизнули нет 7, а маппинг для sql date так и не завезли.
Аноним 21/11/22 Пнд 20:09:26 #180 №2519747 
>>2519733
Все так. Хотя если хочется игрульники на юнити делать, то шарп норм выбор.
Аноним 21/11/22 Пнд 20:18:45 #181 №2519754 
>>2519737
А мне кажется, что ты сам не разбираешься в теме и резок на суждения.
Старых ноутов дофига и они работают. Это новые ломаются через год, потому что их делают фигово. А старые ещё 50 лет прослужат, а может и больше.
Отечественные линупсы не поддерживают дотнет, но зато из коробки есть джава 8 либерика и опенждк. Для примера можешь любой взять, хоть Астру, хоть РедОС.
Аноним 21/11/22 Пнд 20:21:44 #182 №2519759 
>>2519754
>Вдруг надо будет написать веб-приложение, а идея у тебя бесплатная и нельзя создать проект на спринге?

Это ты написал же? После этого ни к чему, что ты пишешь, уже серьезно относиться не получается...
Аноним 21/11/22 Пнд 20:25:22 #183 №2519765 
>>2519759
Ну иди создай в бесплатной идее. Они забанили все плагины, через которые можно было это делать раньше.
Аноним 21/11/22 Пнд 20:26:30 #184 №2519768 
>>2519765
Ну бери тогда эклипс, нетбинс или vs code.
Аноним 21/11/22 Пнд 20:27:57 #185 №2519771 
>>2519765

Чел.. ладно. Все мы были в этом месте наверное
Аноним 21/11/22 Пнд 20:32:17 #186 №2519777 
>>2519741
https://weblogs.asp.net/marianor/using-expression-trees-to-get-property-getter-and-setters
https://stackoverflow.com/questions/2823236/creating-a-property-setter-delegate

можно и емит
Аноним 21/11/22 Пнд 20:37:35 #187 №2519781 
>>2519768
Эклипс крутой. Спору нет. Есть даже сборки под Спринг бут. Но сам редактор морально устарел
Нетбинс вообще не рабочий из коробки. Замаешься его настраивать. VS Code прикольный, но плагин на Спринг не удобный, там тебе выдают последовательно поля ввода, которые надо безошибочно заполнить.

>>2519771
Да я знаю, что ты скажешь. Типа есть веб-форма, где можно заполнить поля и скачать архив с заготовкой проекта. Но это очень не удобно и требует подключение к интернету. А если интернет отключили, а срочно надо что-то сделать!?
Аноним 21/11/22 Пнд 20:41:39 #188 №2519783 
>>2519781
>А если интернет отключили, а срочно надо что-то сделать!?

Ты решил окончательно себя потопить что-ли? ) Все мы были вкатунами, все чего-то не знали и были наивными. Ничего страшного.
Аноним 21/11/22 Пнд 21:44:30 #189 №2519834 
Какие есть платформы, и есть ли вообще, для бесплатного хостинга неткор приложеинй? Раньше использовал хероку для ноды и пыхыпы, но сейчас хероку прикрывают на днях.
Читаю списки альтернатив хероку и чтот там нету поддержки С# райнтаймов. Куда энтузиасту загружать приложухи для портфолио?
Аноним 21/11/22 Пнд 21:56:31 #190 №2519848 
>>2519834
Заливай через докер вместо дотнет рантайма
Аноним 21/11/22 Пнд 21:57:14 #191 №2519849 
>>2519834
Локалхост.
Аноним 21/11/22 Пнд 23:58:51 #192 №2519931 
>>2519848
Докер хуйня, у меня памяти нет для этого чудища.
Аноним 22/11/22 Втр 00:36:27 #193 №2519949 
>>2519931
Тогда ищи где рантайм есть (бтв сделай виртуалку под линупсом на гиг рама и тебе хватит запаковать в докер твое говно)
Аноним 22/11/22 Втр 01:29:33 #194 №2519970 
а пpоясните за аттрибуты
новый инстанс создается каждый раз когда к нему обращаются? может ли их быть несколько одновременно?
Аноним 22/11/22 Втр 01:42:09 #195 №2519974 
>>2519970

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

Думаю, это ответ на твой вопрос.
Аноним 22/11/22 Втр 01:55:24 #196 №2519978 
Capture.JPG
Capture2.JPG
>>2519974
я не пони
это статические классы получается?
допустим вот я сделал атрибут пикрелейтед и повесил на несколько проперти
а потом на пике 2 их еще в коллекцию положу
куда это все ссылается?
Аноним 22/11/22 Втр 01:56:40 #197 №2519979 
>>2519978
только теперь заметил что проебался в конструкторе
Аноним 22/11/22 Втр 02:01:42 #198 №2519981 
>>2519978
Это другое.

Сорян, засыпаю. Но в целом инстансы создаёт clr в условной куче, а атрибуты существовуют как метаданных в il
Аноним 22/11/22 Втр 02:20:55 #199 №2519985 
>>2519981
теперь я еще больше запутался.
я хочу так вот сделать в теории: атрибут будет самостоятельно описывать свой проперти: сделает делегаты на геттер-сеттер, имя для INotify, имя для GUI, какие-то ограничения для элементов GUI и т.д. короче говоря хочу что-то вроде карточки над проперти которая по большей части будет автоматически будет заполняться, а что не будет то прямо над проперти в коде будет висеть - удобно же
а затем я хочу вытянуть все эти атрибуты с класса в рантайме и уже через них цепляться.
имеет ли смысл морочиться?
Аноним 22/11/22 Втр 02:57:10 #200 №2519995 
А правда, что когда юзаешь модальное окно (ShowDialog), нужно обязательно диспозить его?

Ну допусутим я реализую интерфейс IDisposable, а что там писать? Пустым оставлять? Лично в моем коде нет ничего, что нужно освобождать.
Аноним 22/11/22 Втр 09:06:44 #201 №2520066 
>>2519985
>имеет ли смысл морочиться?
Имеет, если ты собираешься динамически подцеплять внешние плагины с чужим кодом. Если весь код твои и никакой поддержки расширений не ожидается, то проще эти самые карточки сделать обычными классами без привлечения рефлексии на атрибутах.

>>2519995
>А правда, что когда юзаешь модальное окно (ShowDialog), нужно обязательно диспозить его?
Ты про ВинФормы?

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

Cекция using(var shit = new SomeShit()) нужна чтобы формошлепы не забыли гарантировано освободить ресы и занулится.

>Ну допусутим я реализую интерфейс IDisposable, а что там писать?
Его надо писать только если у тебя в классе есть неуправляемые ресурсы, во всех остальных случаях - нет.
Аноним 22/11/22 Втр 09:44:23 #202 №2520087 
>>2520066
> Его надо писать только если у тебя в классе есть неуправляемые ресурсы, во всех остальных случаях - нет.
Ну вот например в контроллере есть контекст бд, но в шаблоне по умолчанию idispose не реализуется. Почему так?
Аноним 22/11/22 Втр 10:16:00 #203 №2520097 
>>2520087
Потому что каждый запрос это createScope у контейнера
И в конце каждого запроса scope диспознет все что родил и что имеет lifetime scoped
Аноним 22/11/22 Втр 11:07:28 #204 №2520141 
Какими проектами занимаются сишарп-программисты?
Аноним 22/11/22 Втр 11:12:24 #205 №2520146 
изображение.png
Аноны, на пике сильно говнокод? Как написать нормально?
Аноним 22/11/22 Втр 11:40:16 #206 №2520161 
>>2520141
Программируют мышкой винформы и WTF. И пишут сайтики для госконтор на древнем проприетарном дотнет фреймворке.
Аноним 22/11/22 Втр 11:44:37 #207 №2520166 
>>2520161
Wpf на дотнет 7
А те кому лень перекатить техгологии - их выбор
Аноним 22/11/22 Втр 12:05:29 #208 №2520185 
>>2520146
Ставлю на сектор "говнокод".

В конце ты делаешь ToList() и ВНИМАНИЕ у листа есть родной метод реверса. Если тебе нужен иногда обратный порядок группировки можно просто вызвать этот метод конечному результату после линкодрисни.
Аноним 22/11/22 Втр 12:12:07 #209 №2520193 
>>2520146
А еще у тебя сраная стрелочка вместо нормальныйх скобок. Выкинь эту каку из своей жизни.
Аноним 22/11/22 Втр 12:27:56 #210 №2520199 
>>2520146
Говнокод из-за повторов
Аноним 22/11/22 Втр 12:33:33 #211 №2520202 
>>2520161
Получается нет смысла ждать новых книг и можно учиться по старым?
Аноним 22/11/22 Втр 12:39:49 #212 №2520205 
>>2520202
Всегда есть смысл ждать новых
А когда они выйдут лучше все же новее подождать
Ведь они точно лучше

А до тех пор работать на заводе
Аноним 22/11/22 Втр 12:48:54 #213 №2520210 
>>2520205
Проще тогда учить джаву, потому что там все книги актуальные
Аноним 22/11/22 Втр 12:50:40 #214 №2520211 
>>2520210
Лучше уж синклер бейсик. Там язык гарантировано стабилен
Проверено десятилетиями
Аноним 22/11/22 Втр 12:54:20 #215 №2520212 
>>2520211
На синклер бейсике никто не пишет серьёзных программ, а пишут сразу на ассемблере Z80A. Это раньше было сложно достать инфу, а сейчас благодаря интернету можно найти всю инфу по архитектуре Спектрумов.
Аноним 22/11/22 Втр 13:02:47 #216 №2520215 
>>2520212
Зачем писать.
Главное - учить то что не устареет пока учишь

Ведь людям сложно выучить по любой инфе а потом прочитать несколько статей из раздела "что нового"
Аноним 22/11/22 Втр 13:14:04 #217 №2520228 
>>2520215
Дак ладно там бы добавляли новое из разряда: новая функция в библиотеке или новая закорючка в языке. Дак они переделывают полностью язык. Сишарп 1.0 и Сишарп 11 - это два разных языка, как джава и котлин наверно. Я уж молчу про фреймворки, там вообще всё новое в каждой версии. Если взять даже старые книги по ним, то авторы это неоднократно отмечают, что пришлось переписать большую часть книги.
Аноним 22/11/22 Втр 13:16:38 #218 №2520231 
>>2520228
И что с того
Весь мир так учил
Или ты думаешь что на каждую новую версию снова книгу читать

Просто читается "что нового" и миграция
И немного статей по новым фичам если оно не простое
Аноним 22/11/22 Втр 13:20:23 #219 №2520236 
>>2520231
Меня ещё смущает, что надо консольной командой генерировать миграции. Не могу смириться с этим фактом.
Аноним 22/11/22 Втр 13:23:00 #220 №2520238 
>>2520236
я не про те миграции
а про миграции с одной версии либы/фреймворка на другую
где очередной гений из мелких решил переделать Startup класс
Аноним 22/11/22 Втр 14:34:03 #221 №2520302 
>>2520212
>На синклер бейсике никто не пишет серьёзных программ
Воу-воу, палехче. Пишут. И игры даже норм делают. Правда все больше на компилируемом варианте, но пишут.
Аноним 22/11/22 Втр 14:48:56 #222 №2520325 
>>2520228
>Сишарп 1.0 и Сишарп 11 - это два разных языка, как джава и котлин наверно.
Угу. И у большинства джавистов одна и та же проблема, всем хотелось бы работать на няшном котлине, но приходится работать на 8-й версии джавы (которая почти 10 лет назад вышла).
В то же время на шарпе сейчас найти проекты на версиях ниже 7-й (а сейчас уже наверное ниже 8-й) - постараться нужно.
Аноним 22/11/22 Втр 15:12:27 #223 №2520351 
>>2520325

Да это чисто вкатунская боль, он из книги 2006го года перепечатал в студию, а оно не компилируется, т.к. класса Bitmap нет в .NET6, и начинаются рякания.

Для норм разработки всё это не имеет никакого значения (другое - да, но не это).
Аноним 22/11/22 Втр 15:17:31 #224 №2520358 
>>2520325
>приходится работать на 8-й версии джавы (которая почти 10 лет назад вышла)
А в чем проблема, собственно? Да, некоторых удобных фишек в 8 джаве нет, но все основное, включая лямбды и стримы, вполне себе присутствуют. Все последующие версии по факту минорные, может только 21 LTS версия будет популярной, так как туда лум уже могут завезти
Аноним 22/11/22 Втр 15:19:10 #225 №2520361 
>>2520146
Нечитаемая параша
Аноним 22/11/22 Втр 15:33:19 #226 №2520376 
>>2520325
>приходится работать на 8-й версии джавы
Я бы с удовольствием пошёл работать на 5 версию джавы. Хоть многолетние сеньоры кичатся знаниями, но тогда было легче всё осваивать, чем сейчас. Без лямбд и прочих стримов собес не пройти, а это как бы функциональное программирование, которое требует иного мышления, а не просто ещё одна библиотека.
Аноним 22/11/22 Втр 15:40:32 #227 №2520386 
>>2520376

Вот sql-запросы (реляционная алгебра) требуют иного мышления, а лямбды это так... хотя тоже отчасти верно.
Аноним 22/11/22 Втр 16:07:33 #228 №2520418 
>>2520386
Всю эту инопланетную хуйню надо сжечь с огнем и оставить только ОО-подход везде.
Аноним 22/11/22 Втр 16:23:59 #229 №2520429 
>>2520418
И веб тоже. Декларативный недосинтаксис хтмл с полной зависимостью от браузера давно по факту вытеснил убеищных JS. Т.е. весь веб исполняемый, а не декаративный как задумывалось изначально. Можно все заменить объектами на любом языке и гонять их по сети на клиент. Мелкомягкие пытались родить что-то похожее в виде сильверлайта, но как обычно не довели до конца и обосрались. Их поражение - наше пролжающеся говноедство ублюдочной функциональной парадигмы JS торчащей из каждого умного утюга.
Аноним 22/11/22 Втр 16:29:53 #230 №2520433 
>>2520429
>сильверлайт
Дак это попытка создать сишарп-апплеты, когда джава-апплеты умерли.
Аноним 22/11/22 Втр 16:38:22 #231 №2520448 
>>2520429
Так уже есть wasm
Аноним 22/11/22 Втр 16:42:20 #232 №2520453 
>>2520448
Да ну. То есть теперь можно сесть и разработать не сервелат, который проприетарный модуль и браузеры ему противились (как и вообще доп плагинам), а сделать можно на wasm и будет счастье?

Но стоп, вот же сделали blazor, а чет не видно массового бега с жс
Аноним 22/11/22 Втр 16:42:23 #233 №2520454 
>>2515951 (OP)
Спасибо что перекатили. Следующий перекачу я, был очень занят.
мимо бывший ОП
Аноним 22/11/22 Втр 16:48:50 #234 №2520467 
>>2520302
Дак он наверно на больших ЭВМ компилируется, а на Спектрум заливается образ в машинных кодах. Насколько помню такие компиляторы и раньше были, но ими никто не пользовался, потому что они съедали половину ОЗУ и на программу ничего не оставалось.
Аноним 22/11/22 Втр 17:02:26 #235 №2520497 
>>2520433
Да. И в этих аплетах можно было реализовать приложение без браузерной прослойки хтмл-цсс-жс, плюс нормальное апи для бека. Неудобство только в том, что пользователям надо ставить фреймворк и аддон на браузер, зато с точки зрения разработки каеф - пишешь почти нормальный десктоп, за исключением данных прилетающих по сети.

Алсо, я как-то давно забредал на сайт посвященный алгоритмам поиска путей, определения видимости, разбиения полигонов и прочими такими задачками для игор/графики. На нем все примеры были сделны в аплетах на жаве. Можно было алгоритм из статьи сразу пощупать в живую - поменять данные, мышкой подергать обстаклы и все такое. Был удивлен как все удобно и без тормозов, просто космические технологии древних.
Аноним 22/11/22 Втр 17:08:47 #236 №2520510 
>>2520453
>blazor
Он же вроде компилируется в жс на фронте? Это другое.

Идея в том чтобы вообще выкинуть каличный браузерный стек оставив одну запускалку объектов полученых из сети, а дальше они пусть сами ебутся с логикой и отрисовкой всего что нужно.
Аноним 22/11/22 Втр 17:14:32 #237 №2520522 
>>2520510
>Он же вроде компилируется в жс на фронте? Это другое.
нет. ты путаешь с тайпскриптом.
Аноним 22/11/22 Втр 17:30:17 #238 №2520543 
Нужно ли создавать отдельную сущность для парсинга строки запроса в webapi?
Аноним 22/11/22 Втр 17:42:23 #239 №2520560 
>>2520543
строку запроса парсит сам движок и биндит тебе на параметры, только называй их правильно и аттрибуты вешай если нужно
а сущность нужно если ты хочешь распарсить post или гет запрос сразу в объект вместо параметров к action
Аноним 22/11/22 Втр 17:48:44 #240 №2520573 
>>2520066
>Если весь код твои и никакой поддержки расширений не ожидается
ага, весь код мой. я хочу свои собственные классы динамически подцеплять.
я хочу. биндингов там где я макакирую юнити нет, поэтому мне приходится велосипедить, суть такова:
есть мои сущности, к проперти которых я хочу подцеплять свой UI, двухсторонним манером 1 проперти к коллекции UI элементов.
сущности я потом планирую дополнять, возможно менять по мере разработки и хотел бы сделать биндинг этот максимально приятным и открытым для себя же в будущем чтобы потом таскать его в другие проекты.
я хочу сделать что-то вроде репозитория где ключом будет тип, а данными - класс-коллекция открытых делегатов на все геттеры/сеттеры декорированных атрибутом проперти и вытянутые из атрибута данные(имя для UI, ограничения т.д.)
если попадается класс, которому нужно рисовать UI, то сначала смотрится репозиторий, если там ничего, то создается с рефлексией и фильтром по декорированным проперти и отдается.
а если и там нет и атрибутов нет, то орать на весь поезд и требовать остановки потому что классы без атрибута не имеют права в этот обработчик вообще попадать и я где-то проебся.
в итоге по идее должна получиться система, где хардкодиться будет только имя проперти для UI и прочие вещи которые я хочу в конструктор атрибута передавать, но т.к. это будет висеть прямо над проперти, то там все сразу будет наглядно видно
а всю дичь с рефлексией можно и под капот и она будет крутиться только один раз для каждого декорированного типа, а потом просто раздавать кешированные данные классу отвечающему за создание UI
единственное что я пока не допер как делать каким образом правильно запилить открытый делегат
буду благодарен если мне укажут где я дурак и как сделать правильнее
Аноним 22/11/22 Втр 17:50:36 #241 №2520575 
>>2520560
Проблема в том, что я могу забиндить параметры только к строкам, так как например min и max у меня могут быть разных типов, в зависимости от выбранного свойства для фильтрации. В итоге мне приходится писать большую портянку из switch case. Я и спрашиваю, уместно ли эту портянку оставлять в обработчике, или лучше вынести в отдельный класс.
Аноним 22/11/22 Втр 18:00:36 #242 №2520597 
>>2520575
Хотя я только что подумал, что можно просто создать отдельные параметры для каждого типа и не ебаться со свитчами и tryparse
Аноним 22/11/22 Втр 18:04:14 #243 №2520602 
>>2520575
получением запроса занимается контроллер
и значит его дело разобраться "что там пришло и что с ним делать"

тебе же либо вот так разбираться самому
либо убрать совпадение имен
либо написать свой биндинг
Аноним 22/11/22 Втр 18:04:21 #244 №2520603 
>>2520573
>единственное что я пока не допер как делать каким образом правильно запилить открытый делегат
Вот это непонятно. Что за открытый делегат? Ты хочешь атрибут который указывает метод-обработчик события?
Аноним 22/11/22 Втр 18:11:43 #245 №2520614 
>>2520603
это я у джона скита увидел и сразу понял что ХОТЕТ
https://codeblog.jonskeet.uk/2008/08/09/making-reflection-fly-and-exploring-delegates/
https://github.com/jskeet/protobuf-csharp-port/blob/master/src/ProtocolBuffers/FieldAccess/ReflectionUtil.cs
там в общем один и тот же делегат дергает метод любого инстанса если ему нужный инстанс передать
Аноним 22/11/22 Втр 18:19:05 #246 №2520623 
>>2519949
У меня не в раме проблема, а в жд, у меня памяти нет от слова совсем. 10 гигов на такую хуету это жырно ппц, придется искать
Аноним 22/11/22 Втр 18:31:56 #247 №2520660 
>>2520614
Понятно. Смотри там передоз от магии не схвати.
Аноним 22/11/22 Втр 18:38:26 #248 №2520680 
>>2520573
какой еще открытый делегат. геттеры сеттеры тебе делегаты не помогут. Ты просто не сможешь скастить к Func<T> ведь у тебя нет этого самого T
Ты достаешь PropertyInfo и далее генеришь геттеры/сеттеры через expressions или emit и складываешь в словарик и используешь. Конечно ты не сможешь избежать боксинга ведь в этот словарик нужно положить геттер сигнатурно одинаковый, а значит Func<T, object>

Другое дело если ты используешь методы маппинга сразу чтобы не было лишнего object (но это не твой случай, ты же не маппер пишешь)
Аноним 22/11/22 Втр 19:21:08 #249 №2520737 
Вопрос от нюфани: почему во всех примера на шарпе я вижу, что сперва создают объект класса, а только в самом конце программы непосредственно сам класс. Разве программа не выполняется последовательно, сверху вниз? И экземпляр еще не может быть создан до инициализации класса.
Аноним 22/11/22 Втр 19:27:11 #250 №2520755 
>>2520737
Это не питон и не руби. Тут опреление сигнатур порядка не имеет, лишь бы оно где то было чтобы компилятор смог найти
Аноним 22/11/22 Втр 19:27:23 #251 №2520756 
>>2520737
Последовательно выполняются инструкции внутри функции. А все определения классов, перечислений и тд, заносятся в метаданные во время компиляции.
Аноним 22/11/22 Втр 19:39:35 #252 №2520777 
>>2520755
>>2520756
Понял, спасибо.
Аноним 23/11/22 Срд 02:06:53 #253 №2521112 
>>2518236
Храню отдельныии классами в папочке моделс.
Аноним 23/11/22 Срд 06:20:17 #254 №2521168 
изображение.png
Как пофиксить неоднозначность?
Аноним 23/11/22 Срд 09:16:00 #255 №2521220 
>>2521168
Как нам догадаться в чем неоднозначность
Аноним 23/11/22 Срд 09:17:09 #256 №2521222 
>>2521220
В этом и неоднозначность 😂😂😂
Аноним 23/11/22 Срд 09:22:53 #257 №2521226 
>>2521168
Перестать выебываться, не?
Аноним 23/11/22 Срд 09:41:22 #258 №2521235 
>>2521168
очевидно же дропнуть первый метод и нормально переписать второй
а еще бросить шарп и уйти работать в пятерочку, а то там вечно на кассе не хватает людей.
Аноним 23/11/22 Срд 12:46:29 #259 №2521318 
>>2519834
А 3.5 доллара за впску амазона - никак не осилишь? Там же и впн развернуть можно заодно.
Аноним 23/11/22 Срд 15:28:15 #260 №2521467 
>>2521318
Где же он доллары возьмет ))
Аноним 23/11/22 Срд 15:37:28 #261 №2521471 
>>2519834
https://vds.selectel.ru/ru/pricing.html
Берешь самую дешёвую vds-ку и грузишь.
Аноним 23/11/22 Срд 19:04:00 #262 №2521612 
>>2518236
Для дтошек использую Requests/Responses
И опять же к каждой дто добавляю постфикс Request/Response чтобы быстро понять что это.
Когда их много можно группировать по фичам/версиям апи(иногда все вместе).
Вообще иногда есть смысл для контрактов завести отдельный проект, где у тебя сообщения для шины и запросы/ответы шарятся между проектами.
Аноним 23/11/22 Срд 19:41:55 #263 №2521648 
Какой уебан посоветовал переходить на NET6 и выше?
>Xaml не поддерживает кириллицу даже в свойствах Text

Вы ебанутые?
Аноним 23/11/22 Срд 19:55:06 #264 №2521655 
Нужно создать веб-сервис, который будет разворачиваться в IIS, отправляющий запросы в определённый интервал времени. Что почитать по этой теме?
Аноним 23/11/22 Срд 19:57:13 #265 №2521660 
>>2521648
ты о чем вообще?
Аноним 23/11/22 Срд 19:58:19 #266 №2521662 
>>2521655
куда отправляющий? причем тут вообще IIS?
Аноним 23/11/22 Срд 20:01:09 #267 №2521667 
>>2521648
Братиш, .net Framework 3.5 - 4.6 наше все. Остальные индусоаподелия под этой торговой маркой идут нахуй.
Аноним 23/11/22 Срд 20:05:30 #268 №2521674 
>>2521662
>куда отправляющий
разве важно куда? там get запрос на получение данных из одной системы (типа 1с предприятие) и post запрос во внутреннюю систему компании. Иными словами, тупо перекидывание данных. нужно сделать так, чтобы это происходило каждые 15 минут.
>причем тут вообще IIS
приложение должно быть на asp.net, такие приложение разворачиваются в IIS
Аноним 23/11/22 Срд 20:14:17 #269 №2521686 
>>2521674
Конечно важно
Потому что суть веб-сервиса ПРИНИМАТЬ запросы

Иначе это просто сервис который тупо цикл с периожом в нужное время
Аноним 23/11/22 Срд 20:19:15 #270 №2521691 
>>2521660
>ты о чем вообще?
О том, что в NetFramework WPF-проекте я вообще не парился, если в xaml-разметке присутствовала кириллица. Я даже порой иконки тащил прямо из символа юникода, если надо какую стрелку вставить.

Щас сделал проект на NET6 и компилятор ругается, что присутствуют недопустимые знаки. Даже если это Text="ываывыва" в TextBlock, даже если это комментарий (тебя ебет, компилятор?). Специфическая универсальность по версии майкрософта, это не когда ты "можешь и там и здесь", а когда ты "не можешь ни здесь, ни там".

Щас почитал SO, все предлагают вставлять коды символов. Вы, блять, больные?
22й год на дворе, вернулись в каменный век. Я себе типа жизнь облегчить хотел, а не решать новые пробелмы.
Аноним 23/11/22 Срд 20:24:33 #271 №2521694 
>>2521691
хз о чем ты.
у самого такой проект еще со времен 2 нета доросший до 4.8
спокойно переехал на 6 когда он вышел
и вот недавно на 7

никаких проблем с кириллицей. А он такой весь.

Но в новых проектах предпочитаю строки из ресурсов.
Аноним 23/11/22 Срд 20:24:40 #272 №2521695 
>>2521686
там будут управляющие запросы. (задание параметров)
Аноним 23/11/22 Срд 20:27:17 #273 №2521698 
>>2521694
Да я вроде тоже как-то переводил проект и вроде ошибок не было, а щас создал новый и какая-то херь.
Аноним 23/11/22 Срд 20:28:13 #274 №2521700 
>>2521695
Ну так и делай что задумал. Ну а что еще делать то
делай asp.net проект, пусть принимает запросы. IIS ему особо не нужен, но если хочется, то...да твое дело.
И в нем сервис IHostedService/BackgroundService где
while(!ct.IsCancellationRequested){
делаем работу
await Task.Delay(Timeout.FromMinutes(15))
}

Ну а при внешних запросах меняй в нем что хочешь - это ж singleton (только придется правильно в DI регать)
Аноним 23/11/22 Срд 20:30:27 #275 №2521702 
Image 1.png
>>2521698
никаких проблем
Аноним 23/11/22 Срд 20:32:04 #276 №2521704 
>>2521702
Я вот щас в ресурсах кириллицу оставил и норм, но как только оставляю ее в Window — ошибка.
Аноним 23/11/22 Срд 20:33:41 #277 №2521705 
>>2521655
>Нужно создать веб-сервис, который будет разворачиваться в IIS
ASp.Net, только ему необязательно в IIS разворачиваться.
>отправляющий запросы в определённый интервал времени. Что почитать по этой теме?
Quartz.net
Аноним 23/11/22 Срд 20:37:29 #278 №2521709 
>>2521704
Ну разве что у меня англ студия но это не имеет значения ибо файлы юникод
Аноним 23/11/22 Срд 20:41:58 #279 №2521712 
>>2521709
Короче это был какой-то глюк студии. Щас создал новое окно и все хорошо. Я не знаю что это и почему.
Аноним 23/11/22 Срд 20:53:16 #280 №2521720 
шарпаны, есть два разных интерфейса, наследовать один от другого или от общего базового не хочу
можно ли сделать так, чтобы если в классе определен один интерфейс компилятор ОБЯЗЫВАЛ меня определять второй там же?
Аноним 23/11/22 Срд 20:57:52 #281 №2521722 
>>2521720
С чего ему тебе приказывать

Это ты можешь запилить агализатор
или проверить на старте в рантайме для дебаг версии.
Аноним 23/11/22 Срд 20:58:51 #282 №2521723 
изображение.png
Почему запрос выделен красным?
Аноним 23/11/22 Срд 21:00:14 #283 №2521724 
>>2521723
Видимо раскрасил увидев слово failed
Аноним 23/11/22 Срд 21:04:55 #284 №2521728 
>>2521724
А почему failed? Я ведь ничего не трогал, делал чисто по руководству.
Аноним 23/11/22 Срд 21:07:35 #285 №2521729 
>>2521728
Ну так ты свойство в классе назвал
А у тебя вывод видимо ищет маркеры в выводе для раскраски
Аноним 23/11/22 Срд 21:10:48 #286 №2521731 
>>2521729
А, вот ты о чем. Я сперва подумал, что рядом с запросом failed было, а плагин его скрыл, заменив цветом.
Аноним 23/11/22 Срд 23:15:06 #287 №2521769 
Миксеры2.mp4
>>2521720
Нет, ты уж прям хочешь какого-то совсем необычного поведения на уровне вангования. Это же ведь суть интерфейсов — быть смиксованными и уже потом реализоваться. Это же буквально шаблон из трех слов. Уходит традиция, тонкая традиция, когда ты берешь спокойно IКартофель, IМорковь берешь, IБаклажаны берешь, или еще берешь, например, это ... и IМорковки берется например, берется и забираются IДети и IСтарыеЛюди, собираются где-то на Кухне.cs, или если угодно вам ... или если угодно вам в КухонномПритворе.csproj, собираются интерфейсы и спокойно делается руками всё. От этого миксера пошла и микс-культура. Микс-культура нарезается в подпольных фабриках...
Аноним 23/11/22 Срд 23:59:07 #288 №2521782 
Граждане, шарполголики, такой вопрос. Есть некое ASP MVC веб приложение на древнем netframeworke. И у этого приложения при попытке паблишинга где-то лапками прописанно к бэку еще и одновременно паблишить и фронт и складывать его в wwwroot и студия пытается подавать команды node и на них и сыпется. Меня интересуют небольшие правки на беке, мне в хуй не уперлось паблишить одновременно с ним виснущий фронт. Как в древнем netframeworke потререть дополнительные, прописанные лапками, команды при паблишинге. В коре это, кажется делается в csproj. А тут де?
Аноним 24/11/22 Чтв 01:33:02 #289 №2521810 
>>2521769
Проорал люто с КухонногоПритвора.csproj
Аноним 24/11/22 Чтв 07:38:24 #290 №2521856 
>>2521769
>Микс-культура нарезается в подпольных фабриках...
На абстрактных подпольных фабриках.
Аноним 24/11/22 Чтв 12:10:43 #291 №2522032 
>>2521782
Сделай exclude на папке с фронтом.
Аноним 24/11/22 Чтв 12:40:21 #292 №2522060 
>>2521782
>>2522032
Сам нашел уже. Было насрано в пропертис проекта -> билд ивэнтс -> пост билд команд лайн
Аноним 24/11/22 Чтв 17:39:55 #293 №2522303 
Есть TermBaseRegister и есть TermStorageRegister : TermBaseRegister

TermStorageRegister уже есть в БД (кодфёрст еф6 все дела).
Теперь хочу добавить в БД TermBaseRegister, но при миграции ЕФ норовит просто переименовать TermStorageRegister в TermBaseRegister. А мне надо чтоб это две разные таблички были

Подскажите плиз как ЕФ заставить создать вторую табличку, а не переименовывать старую
Аноним 25/11/22 Птн 02:14:42 #294 №2522630 
Capture.JPG
хочу разделить коммуникацию некоторых классов вот этой штукой
имеет ли смысл?
Аноним 25/11/22 Птн 07:52:29 #295 №2522693 
>>2522630
Говно.

Шину событий лучше напиши и прокиджывай ее как сервис везде где нужно непрямое взаимодействие объектов.
Аноним 25/11/22 Птн 09:08:58 #296 №2522741 
>>2522693
а как ее сделать?
и как сервис прокидывать, это же что-то из впф?
Аноним 25/11/22 Птн 10:04:12 #297 №2522769 
>>2522741
как хочешь.
тут все фломастеры
некоторые любят шину за косвенность
другие хейтят шину за косвенность
кто то делает синглтон
кто то таскает с зависимостями
кто то просто строки как имена событий и отдельно объект данных
кто то юзает целые объекты как события
кто то делает получателем метод подходящей сигнатуры
а кто то делает интерфейсы типа IReceiver
Аноним 25/11/22 Птн 10:14:43 #298 №2522775 
>>2522741
А еще кто то просто шлет сообщения ака события типа "всех уведомляем"
другие же делают Domain Events - тут уже и события ДО самого события даже можно послать.
А то и вообще пытаются сшивать части чтобы они друг о друге не знали, а чисто кидались С ОТВЕТАМИ друг в друга, возможно даже инстанцируясь при этом (mediatr)

ты знал куда шел (с)
Аноним 25/11/22 Птн 11:10:52 #299 №2522803 
>>2522303
Конфигурации пропиши
Аноним 25/11/22 Птн 11:20:20 #300 №2522808 
>>2522803
Я нашел, что по дефолту в ЕФе TPH, а я хочу TPC - https://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx и https://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx

Только вот я столкнулся с проблемой такой вот - https://stackoverflow.com/questions/31315158/tpc-inheritance-error?noredirect=1&lq=1

Т.е. меня в базовом классе есть ссылки на другие классы
а ля
TermBaseRegister
{
...
public User Agent {get; set;}
...
}
И при попытке миграции я получаю ошибку
The association 'TermBaseRegister_Agent' between entity types 'TermBaseRegister' and 'User' is invalid. In a TPC hierarchy independent associations are only allowed on the most derived types.
Т.е. вот эти ссылки должны быть у наследников только (Я так понимаю в TPC базовый класс чуть ли не абстрактным хотят видеть)
Можно конечно в TPT попробовать, но это же кал говна ебаный, от которого только головняк при сборе данных будет кмк
Аноним 25/11/22 Птн 11:21:21 #301 №2522809 
>>2522808
https://learn.microsoft.com/en-us/ef/core/modeling/inheritance
*фикс второй ссылки
Аноним 25/11/22 Птн 11:35:17 #302 №2522824 
Eb.png
>>2522741
>а как ее сделать?
Например как на пике.

Шина событий - это просто класс который споставляет TEvent => список обработчиков.

Любой объект может подписаться на нужное ему событие:
Bus.Subscribe<MouseClick>(this.MouseClickHandler);

Любой объект может отправить событие в шину:
Bus.Send<MouseClick>(new MouseClick(X, Y));

Все кто на него подписан, получают объект класса события и что-то с ним делают.

>и как сервис прокидывать
Просто в конструкторе передаешь инстанцию шины. Или еще проще - делаешь шину синглетоном, но это не тру.

Небольшое замечание: на пикче использованы слабые события, чтобы не было нужды явно отписываться от шины, когда класс получатель становится не нужен. Если использовать обычные делегаты, то нужно отписывааться явно, чтобы не получить утечку память. Слабые события создают меньше головняка с правильным удалением объектов, но внутри у них уличная магия.
Аноним 25/11/22 Птн 11:46:11 #303 №2522832 
>>2522824
>когда класс получатель становится не нужен
Вот только отписка так будет только когда GC придет
А до этого так и будет получать уведомления и реагировать, хотя уже не нужно

>Слабые события создают меньше головняка с правильным удалением объектов
самый лучший подход это сильная (ну то есть не слабая) подписка с lifetime-ом
Аноним 25/11/22 Птн 11:53:52 #304 №2522836 
>>2522832
>Вот только отписка так будет только когда GC придет
Ноуп. В моей реализации дохлый класс отпишется когда произойдет любое событие на которое он потписан.

Порядок действий примерно такой:
1. На объект теряются все ссылки.
2. Отрабтавает GC.
3. Становятся невалидными все ссылки в слабых событиях на него.
4. Проходит много-много времени...
5. Происходит событие на которое был подписан уже несуществующий объект - все дохлые ссылки на него чистятся. Вызываются обработчики только у живых объектов.

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

>самый лучший подход это сильная (ну то есть не слабая) подписка с lifetime-ом
Можно и так.
Аноним 25/11/22 Птн 12:04:53 #305 №2522850 
>>2522836
у тебя вера в то, что пункт 2 произойдет быстро. На деле твой объект лежит во втором поколении и неизвестно когда GC почистит второе поколение.
Аноним 25/11/22 Птн 12:13:11 #306 №2522853 
>>2522850
Вспомнил лузный флаг IsDisposed и его проверку в каждом публичноv методе. Не вижу проблем добавить еще один флаг IsDead чтобы запретить прием нежелательных событий после кончины объекта. Один флаг всяк проще чем отписка от 100500 событий в шине.

>пункт 2 произойдет быстро
Алсо у меня такой проблемы не было. Высокоуровневые события происходят оче редко, между ними всегда успевает встрять GC.
Аноним 25/11/22 Птн 13:39:21 #307 №2522910 
>>2522853
>Один флаг всяк проще чем отписка от 100500 событий в шине.
отписка всегда лучше.
Ведь сам компонент может продолжать жить, просто не нужные ему события. А значит без механизма явной отписки никуда.

Нужна агитация за использования лайфтаймов, чтобы народ перестал страдать фигней и сразу делал правильно.
Аноним 25/11/22 Птн 13:42:31 #308 №2522912 
>>2522910
>Нужна агитация за использования лайфтаймов
Дай годную статью, а то нихуя не понятно.
Аноним 25/11/22 Птн 14:00:29 #309 №2522923 
>>2515951 (OP)
Есть уважаемый аноном современный курс или книга по асп нету, кроме доки? Английский знаю
Аноним 25/11/22 Птн 14:09:24 #310 №2522931 
>>2522912
статью не могу. могу дать годный доклад
https://www.youtube.com/watch?v=Sq_h5bVWJ0k

Про dispose все знают - понятно, но это не более чем информация "меня очищать нужно так то".

Но не более.
когда очищать? как вызвать? очищать ли вложенные IDisposable?

Кто то же должен отвечать за вызов Dispose (мы не говорим конечно про примитивные вещи которым хватит using)

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

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

В общем то если даже у нас не супер сложный код, то все равно можно использовать эту явность. Просто это непривычно "я не пишу сложные штуки зачем оно мне..."
Удобно же что списки принимают лайфтайм, события принимают лайфтайм - отписка пройдет автоматом и не разделена "подписались в конструкторе и отписались в диспозе который хер знает где внизу портянки и вообще если не забыли отписаться" (с лайфтаймом забыть отписаться невозможно.
Аноним 25/11/22 Птн 14:20:34 #311 №2522936 
Слухайте, а если я забыл задиспосить то, что следовало бы. Когда оно исчезнет и перестанет мешаться? После остановки приложение? После перезагрузки компа? Никогда?
Аноним 25/11/22 Птн 14:24:57 #312 №2522938 
>>2522936
обычно для этого пишут финализатор, который GC (если до него дошло, то есть ссылок больше нет) дернет и оно задиспозит забытое

Но это не тру - финализатор вызывается в отдельном потоке, неизвестно когда.
Это костыль (плохой) для решения проблемы "забыть диспознуть"
Аноним 25/11/22 Птн 14:33:51 #313 №2522943 
>>2522936
Ресурсы не обязательно управляются сборщиком мусора или операционной системой. Это может быть, к примеру, временный файл, который надо явным действием удалить, или завершение сессии пользователя на сервере, для чего надо отправить туда запрос. И всё это придётся делать в Dispose.
Аноним 25/11/22 Птн 14:40:59 #314 №2522950 
>>2522912
Если очень просто, то это как
CancellationTokenSource и CancellationToken, где CancellationToken

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

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

Семантика это важно. Вон мелкие используют CancellationToken как события appllication в асп.нет, что вызывает недоумение - ну да, там есть Register но как бы от CancellationToken ожидается отмена, а для событий есть...ну event
Аноним 25/11/22 Птн 15:09:16 #315 №2522963 
У меня в таблице есть два поля: дата начала и дата завершения. Можно как-то с помощью атрибутов или fluent api задать условие, согласно которому первая должна быть меньше второй?
Аноним 25/11/22 Птн 16:02:06 #316 №2523007 
Мнения?

https://habr.com/ru/post/701352/
Аноним 25/11/22 Птн 16:11:28 #317 №2523017 
>>2523007
Там есть

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

Хочешь сравнить с php - бери laravel, Yii (374 строчка), а не mixphp. Хочешь сравнивать c Java - тогда где Spring? А, на 351ой.."

Лично я с этим согласен
Аноним 25/11/22 Птн 16:15:57 #318 №2523021 
>>2523007
Ну наебали с результатами значит наебали, чего бухтеть? Жаль конечно нашего techempower-шизика, он с этой таблицей носился по всей борде больше года, а тут такое вскрылось...
Аноним 25/11/22 Птн 16:22:52 #319 №2523026 
image.png
>>2522963
Да, можешь сделать кастомный аттрибут, наследованный от ValidationAttribute и надписать метод IsValid как тебе удобно.

Или можно как на пикрил, но надо следить, чтобы у MaxValue всегда было значение.
Аноним 25/11/22 Птн 16:29:40 #320 №2523037 
>>2523007
А что там? Снова мухлюют с бенчмарками? Вот это новость (нет).

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

К сожалению мы живем во времена пыли в глаза и впечатлительных людей, иначе пройдут мимо.
Аноним 25/11/22 Птн 16:57:52 #321 №2523062 
>>2522769
>>2522775
>>2522824
сложно пиздос и это получается надо эту шину зависимостью всех кому надо общаться держать?
Аноним 25/11/22 Птн 17:17:45 #322 №2523087 
>>2523062
ну шину легко сделать или взять готовую
а вот выбирать как с ней работать - тут сложно
можешь держать, передавая через конструктор
может статик (те же Domain Events если будешь гуглить то сплошные статики)
а можешь как медиатр - посылатель через конструктор, а вот получатель только реализует интерфейс и сам не подписывается. (но вот лично мне такое не нравится - если подписчик не инстанцирован, значит нечего его будить)
Аноним 25/11/22 Птн 17:24:00 #323 №2523094 
>>2523087
если шину передавать через конструктор то это получается во всех объектах которые создают объекты, которым нужна шина, ее надо держать в референсах т.е. к прочим параметрам при создании надо еще и шину добавлять
если у меня например создание:
MyObject o = new myObject(arg1, arg2, arg3);
то с шиной будет
MyObject o = new myObject(arg1, arg2, arg3, bus);
или можно как-то иначе?
Аноним 25/11/22 Птн 17:36:20 #324 №2523107 
>>2523094
ну да, зависимостей много
но как бы их создает DI

но это как и с логгером. кто то принимает Ilogger<>, другие считают что логинк это вообще "cross cutting concerns" и делают статиком (я статиком)

так что тут выбор из "что меньше бесит и мешает тестированию"
1 статик
2 параметр
3 ambient context, что делают с логгированием, но с мессенджером как то смысла нет, ведь это тот же пункт 1

Можно ведь хотеть разные месседжеры, а можно один статик, но сделать в нем "каналы"(или токен слать с сообщением как доп метка)

В общем кинь монетку

Я как то заморочился и у меня
1 во вьюмоделях мессенджер имеет события с текстовыми именами, вызывает методы и имеет токен. Неудобство - только в рантайме узнаешь, что тип объекта данных не подходит
2 а вот подобие домаиневентс - там классы определяют событие. Целевой класс может иметь несколько хендлеров. Удобно подписывать, неудобно отписывать (обычно и не нужно)
3 я не люблю медиатр с его DI - да ну нечего будить компоненты, да и вообще такая тотальная косвенность приводит к тому что непонятно где что кого. Поэтому у меня подписки явные. Отписки - lifetime отпишет
Аноним 25/11/22 Птн 17:49:33 #325 №2523118 
>>2523026
Спасибо за ответ, воспользуюсь атрибутами. Только тогда возникает еще один вопрос, вот у меня есть класс представляющий таблицу, например book, и класс bookdto, который я использую для получения жсонов, мне получается нужно будет дублировать атрибуты, это не считается плохой практикой?
Аноним 25/11/22 Птн 17:56:07 #326 №2523124 
>>2523118
А вообще, где можно найти пример эталонного web api приложения, чтобы знать к чему стремиться?
Аноним 25/11/22 Птн 18:10:52 #327 №2523142 
>>2523124
Мечтаю вкатиься шарпы, но работа не дает. Два тимлида заставляют сидеть на их технологиях: питухонеры и паскалисты. Это какие-то два микроада. Как хитростью незаметно перевести их на рельсы шарпа?
Аноним 25/11/22 Птн 18:13:16 #328 №2523145 
>>2523142
да прям таки
питончик тоже норм
ну который с типизацией и если не нужна сильная многопоточность.
Аноним 25/11/22 Птн 19:01:01 #329 №2523194 
>>2523142
Расскажи про паскаль
Аноним 25/11/22 Птн 19:01:47 #330 №2523196 
>>2523142
>паскалисты
Делфи в 2023 году?
Аноним 25/11/22 Птн 19:04:53 #331 №2523199 
>>2523142
>и паскалисты
Ебать тебе повезло, аж завидую малость. Хоть нормальный ЯП попробуешь перед тем как твои мозги будут безвозвратно съедены питоном, шарпом или жабаскриптом.
Аноним 25/11/22 Птн 19:07:15 #332 №2523201 
>>2523199
Ты не фан Столярова?
Аноним 25/11/22 Птн 19:08:10 #333 №2523205 
>>2519745
Блин, они еще и сериализацию/десериализацию для него не завезли, ну как так можно.
Аноним 25/11/22 Птн 19:15:54 #334 №2523215 
>>2523201
Нет. Столяров швабодошизик, который боится исполнять чужие покакуньуки на своем калькуляторе. Я свободный от этих предрассудков человек и готов получить и выполнить вирос-шифровальщик хоть по почте.

Паскаль я уважаю, из системных языков он топовый. Самое лучшее отношение граблей к полезному результату. Там где на сишечке будешь охуевать от УБ при выделении памяти и ловить сегфолты работая со строками через указатели, в паскале все делается легко и непринужденно без подводных камней.
Аноним 25/11/22 Птн 19:18:17 #335 №2523217 
>>2523215
С таким же успехом можно го использовать
Аноним 25/11/22 Птн 19:25:04 #336 №2523220 
>>2523217
Нельзя же. Конпелятор go держит программиста за тупое быдло и постоянно его унижает. Чего стоит хотя бы форс стиля скобок, бесконечные ублюдочные проверки err там где надо и ненадо. Не нужно использовать языки которые умнее тебя в плохом смысле этого слова.
Аноним 25/11/22 Птн 19:34:53 #337 №2523229 
>>2523220
На Расте тогда можно
Аноним 25/11/22 Птн 19:36:13 #338 №2523231 
>>2523229
>я научю вас чисто срать

Спасибо, доктор!
Аноним 25/11/22 Птн 19:40:28 #339 №2523235 
>>2523231
Ладно, тогда на Паскале
Аноним 25/11/22 Птн 19:47:43 #340 №2523238 
>>2515951 (OP)
Можно ли использовать razor вне asp.net?
Допустим, считываю строки с файла и передаю их и модель/анонимный тип в соответствующий метод, который возвращает строку.
Аноним 25/11/22 Птн 20:04:10 #341 №2523243 
>>2523238
Да.
Аноним 25/11/22 Птн 22:23:23 #342 №2523337 
5lqJ81dbIY.jpg
Хочу расставить все точки над "и" по поводу словарей ресурсов. Я уже задавал вопрос, но его смыло и, в общем, обсуждение перетекло в другое русло. Платформа NET6.

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

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

У меня вопрос, это студией как-то фильтруется? Как-то она чистит вилкой? Потому что, если все оставить как есть, то это будет пугающе для производительности.
Аноним 25/11/22 Птн 22:30:32 #343 №2523349 
2022-11-2522-27-29.png
>>2523337
П.И.З.Д.Е.Ц.
Ну я подозревал, что мудоебство синтаксиса xaml не может быть адекватным и под капотом, но чтоб такое ...

Вы понимаете, что ваше байтоебство и попытки отловить миллисекунды, просто уничтожаются одной кнопкой на WPF?
Аноним 26/11/22 Суб 00:18:38 #344 №2523422 
>>2523349
хз о чем он пишет
если он про что то что в словаре - ну конечно создается, а как иначе (ну для решения этого вроде есть x:Shared). А "ссылается на словарь" - непонятно что это
Аноним 26/11/22 Суб 02:05:41 #345 №2523480 
1.JPG
2.JPG
>>2523107
нашел вот такую, статическая шина, не знаю пока буду ли делать обычной, но мне оче понравился т.к. я могу тупо интерфейсы свои унаследовать и они сразу заработают как надо:
https://github.com/velik97/EventBus
я допилил в него свое понимание lifetime(выделил на пиках)
enum из двух записей: once, repeating
внутри листа подписчиков(пик 1) сделал словарь подписчик - enum и метод возвращающий enum подписчика
при подписке по дефолту передаю repeating
в конце каждой инвокации(пик 2) проверяю, если enum once, то удаляю из листа подписчиков отписываю и удаляю kvp из словаря
единственное что на каждый лист подписчиков должен быть свой словарь и наверное надо будет еще и проверять что ключ такой вообще есть прежде чем возвращать через GetLifetime, хотя если подписчик есть в листе он должен быть и в словаре и наверное проверка просто избыточна...
Аноним 26/11/22 Суб 07:54:32 #346 №2523519 
>>2523199
Фактически использую питон с html фреймфорком и дельфи с sql. Крч фуллстак фокусник на зарплате
Аноним 26/11/22 Суб 07:58:14 #347 №2523520 
16666151525360.mp4
Научите программировать, пожалуста.
Аноним 26/11/22 Суб 08:15:20 #348 №2523521 
>>2523194
>>2523196
Остался огромный легаси проект по взаимодействию с БД Firebird, в котором храняся данные о товарах и клиентах кабанчиков. Это БД говно, которое нельзя дропнуть, но работает во всяких лазарусах из под коробки.

Для каждого отдела свой ГУИ, который вызывает окно, в котором окно, в котором еще окно. Собственно в каждом окне новая таблица из джойнов или селектов. Вложенность уровня на 3 минимум. Фич так дохуя, что проще доку на 50 страниц ебануть либо каждому пользователю тет-а-тек показывать как работает. Кабанчики охуевают и не могут рабобраться в меню программы лол. Сложно слишком

Проект просто тысячи тысяч строк ибо там штук 5 отделов. У каждого штук 7 таблиц, которые вместе составляются джойнами в другие таблицы (минимум 30 таблиц). Ну и постоянно идет добавление сранных полей. Кабанчики это любят пиздец. Я не работаю с этим, а мой коллега создавший этого огромного монстра. Там можно и документ создать, и в печать отправить, и картинки посмотреть, и чего только нет чем пользуются раз в 100 лет. Оверинжиниринг во все поля.

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

Думаю со временем мне поручат сделать более упрощенные аналоги с такими характеристиками:
- сделать много маленьких программ вместо одной большой на отдел для разных задач с максимум 2 уровенями вложенности вместо 3-4 чтобы даже секретутки могли без жопной боли пользоваться
- написать простенький мануал
- использовать свежие исходники (лазарус)
- использовать рукописный код (местами быстрее дефолтных компонентов) от текущего проекта
Аноним 26/11/22 Суб 08:37:08 #349 №2523532 
14912140016040.jpg
>>2523480
В резюме потом напиши ачивку "Архитектурный астронавт 3-го класса".
Аноним 26/11/22 Суб 10:03:21 #350 №2523560 
>>2523422
>ну для решения этого вроде есть x:Shared
Это что такое? Читал про SharedResourceDictionary, но это какие-то самопальные классы.
Аноним 26/11/22 Суб 10:47:21 #351 №2523588 
>>2523560
Ясно, это атрибут Shared в словаре ресурсов. По умолчанию true и значит элементы работают с одним и тем же экземпляром.

В общем, сложно понять было т.к. выдранный мною текст на скрине датируется чуть ли не десятилетием назад.
Аноним 26/11/22 Суб 11:36:47 #352 №2523644 
В чем суть xaml?
Почему форму предлагают набирать текстом вместо того чтобы ее удобно нарисовать в десингере?
Рыться в атрибутах хмла по памяти vs щелкать удобные кнопочки в инспекторе свойств - почему выбирают первое?
Аноним 26/11/22 Суб 11:56:44 #353 №2523681 
>>2523644
А ты попробуй. И когда надоест выискивать нужный контрол в тулзах и нужное свойство в свойствах, да надоест пытаться попасть в нужное место на дизайнере, да design-data впиливать чтобы визуал был, да постоянно править хамл за дизайнером, а стили так вообще дизайнером никак, то вот придешь и напишешь ответ челу что спрашивает "почему предлагают набирать текстом"
Аноним 26/11/22 Суб 12:03:11 #354 №2523692 
>>2523644
Пжди, в дизайнере тоже рисуется на xaml.
У меня даже стили как таковые основаны на UserControls, чтобы в риалтайме видеть превью, а сам стиль — чисто привязка данных к общей теме или комбинация вариаций UserControls.
Но таки да согласен, что синтаксис ксамл — мегауебанская вещь, но лучше, чем ничего.

>вместо того чтобы ее удобно нарисовать в десингере?
Как нарисовать с зависимостями и привязками? Это надо что-то уровня шаблонов CAD делать (впрочем, я не против), но наступит момент, который кроме как кодом не выразить никак — появится очередная сепарация, что запутает еще сильнее.

А так, я все сложное и так рисую в векторных редакторах, а потом экспортирую как SVG. В целом, получился такой многоступенчатый процесс от общего к частному и количество xaml-разметки сведено к минимуму — служит тупо для ввода параметров.
Аноним 26/11/22 Суб 12:25:33 #355 №2523711 
>>2523644
1. Окно свойств полноценно не доступно для стилей, а без них будет двойная работа.
2. У меня оно находится на втором мониторе, да и панель элементов свернута. Т.е. речь идет о скорости доступа.
И порой ме-е-е-е-дленное выдвижение панели элементов с анимацией настолько бесит, что легче начать писать <But и автозаполнение само все напишет быстрее, чем если бы ты вел курсор к панели элементов, искал в списке Button, а потом эта кнопка естественно помещается не в тот контейнер — ты снова лезешь в xaml и вырезаешь и вставляешь в нужное место, потом тебе нужно в эту кнопку что-то вставить, и тебе нужно менять укороченный вариант тэга на расширенный (в то время как при печати тебе достаточно напечатать "/" чтобы получить короткую версию и ">" чтобы получить расширенную)

А так кто как хочет, то так дрочит. Результат один и тот же. Сам использую и то и другое, особенно использую окно свойств, когда забываю как назывался параметр.
Аноним 26/11/22 Суб 12:26:02 #356 №2523712 
>>2523480
я не понимаю твое понимание lifetime и что ты вообще под этим понимаешь

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

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

допустим у меня MVVM. У меня есть окно/workspace и он держит у себя LifetimeDefinition (аналог CancellationTokenSource) и всем раздает токены lifetime. Когда окно закроется, то lifetime протухнет и всё зависящее схлопнется.
Моя вьюмодель зависит от времени жизни окна (она должна умереть с закрытием окна) и получает токен lifetime в конструктор. Теперь она может подписаться на смерть окна, а также передать этот токен дальше чтобы все кооперативно узнали, что компонент сдох и больше не живет.

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

и пишу метод расширение
static void Subscribe<T>(this Bus bus, Lifetime lifetime, ISubsciber<THanler> subscriber){
lifetime.Bracket(
()=>bus.Subscribe(subscriber),
()=>bus.Unubscribe(subscriber),
)
}

и использую во вьюмодели

bus.Subcribe(lifetime, this)

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


по факту расширение адаптирует любую стороннюю шину но неудобно ибо легко забыть взять перегрузку с lifetime
поэтому я обычно делаю форк шины где удаляю обычные методы подписки

также и с обычными событиями (гадость)

lifetime.Bracket(
()=>bus.SomeEvent+=Handler,
()=>bus.SomeEvent-=Handler,
)
Аноним 26/11/22 Суб 16:24:24 #357 №2523882 
Screenshot from 2022-11-26 17-19-15.png
Screenshot from 2022-11-26 17-19-49.png
Screenshot from 2022-11-26 17-23-32.png
сап, пришло время таки укатиться с js в какой нить другой язык,
выбрал сисярп
начал писать свою обертку над апи телеги
карочи
см пик 1
жсон результат запроса - ок выводится
см пик 2
хули
GetMeResponse? requestResponse = JsonSerializer.Deserialize<GetMeResponse>(result);
null возвращает?

алсо вопрос по пик2
см пик 3
мне тут райдер подсвечивает шо поля должны называться с заглавной буквы, хотя в апи телеги ключи в жсон с маленькой, как это обойти?
Аноним 26/11/22 Суб 16:29:51 #358 №2523896 
>>2523882
на пик2-3 подсвечивает потому, что твои поля нигде не используются.
Аноним 26/11/22 Суб 16:31:57 #359 №2523901 
>>2523896
а блин, рили, в глаза долбанулся и не прочел что пишет, слишком часто это сообщение видел о том что с заглавной поля должны быть
пиздос наркоманство кстати
Аноним 26/11/22 Суб 16:37:11 #360 №2523913 
>>2523901
Не знаю как в шарпах, но в бейсике с заглавной нужно писать публичные свойства, а не поля. А вот приватные поля в шарпе точно пишутся с малой буквы.
Насчет публичных полей — вопрос, вроде как не делают так.

Но опять же это просто замечание к общим стандартам форматирования, а не ошибка.
Аноним 26/11/22 Суб 16:52:56 #361 №2523927 
>>2523712
так я тоже не понимаю. я хз что такое CancellationToken
можно где-то посмотрет на то что делает lifetime.Bracket(sub, unsub) у тебя?
Аноним 26/11/22 Суб 16:57:00 #362 №2523934 
Unsaved Image 1.jpg
та какого!?!?
Аноним 26/11/22 Суб 17:05:19 #363 №2523944 
>>2523927

Bracket принимает 2 лямбды в первой подписывает если лайфтайм еще жив, вторая будет вызвана когда лайфтайм умрет

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

Но если ты не знаешь про CancellationToken то значит ты на знаешь основные элементы дотнета и тут уж увы
Аноним 26/11/22 Суб 17:07:04 #364 №2523946 
>>2523944
посмотрю конечно
я же юнитихолоп, ни разу не видел этих токенов
Аноним 26/11/22 Суб 17:13:15 #365 №2523950 
>>2523946
Тоже раньше не понимал про какие токены говорят.
Они юзаются, чтобы завершить всякую асинхронную порашу.
На самом деле там три строки всего.

Я так делал аналог модального окна на асинках. Пока флаг не поменяю, не будет возврата с асинхронной функции.
Аноним 26/11/22 Суб 17:13:55 #366 №2523953 
>>2523946
они появились в 4 дотнете

но вообще это очень простая вещь
CancellationTokenSource + CancellationToken
TaskCompletionSource + Task
LifetimeDefinition + Lifetime

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

Lifetime токен имеет implicit cast в CancellationToken

Если вдруг в юнити нет CancellationToken то как же вы отменяете операцию что перестала быть актуально?
Аноним 26/11/22 Суб 17:23:50 #367 №2523964 
>>2523950
>CancellationTokenSource + CancellationToken
>TaskCompletionSource + Task

Ах да, для своего псевдомодального окна >>2523950 я использовал TaskCompletionSource. Создаешь CancellationTokenSource в функции Show и функция уходит в ожидание, пока ты делаешь в окне свои дела, а потом в событии Close меняешь флаг CancellationToken и функция Show возвращает результат.
И все работает без всяких бесконечных циклов.

А CancellationTokenSource использовал в асинхронных функциях с бесконечными циклами, чтобы прервать их работу. Например когда пытаешься подключиться к серверу, а он долго не отвечает. Тогда ты меняешь флаг в токене и асихронная функция это детектит и прекращает свои попытки подключиться к серверу.
Аноним 26/11/22 Суб 17:24:42 #368 №2523965 
>>2523953
>>2523964
Аноним 26/11/22 Суб 17:27:08 #369 №2523966 
>>2523882
разборался, я не указал что ok и result имеют геттер/сеттер

схуя ли оно молча False и null подставило((
Аноним 26/11/22 Суб 17:30:39 #370 №2523968 
>>2523966
А что у вас в жабаскрипте по умолчанию true?

По поводу Null, не все приняли однозначно нововведение, это вроде можно отключить в настройках. У меня в бейсике булевые переменные по умолчанию false возвращают.
Аноним 26/11/22 Суб 17:33:06 #371 №2523973 
>>2523968
ну я ожидал что если сеттера нету, рантайм ошибку выстрелит
Аноним 26/11/22 Суб 17:33:31 #372 №2523974 
>>2523964
>А CancellationTokenSource использовал в асинхронных функциях с бесконечными циклами, чтобы прервать их работу.
ну вот лайфтайм то же самое, просто семантика "вы еще живы"
при отмене CancellationToken ты прекращаешь операцию, при терминации лайфтайма ты выполняешь отписку/очистку и те же отмены операций если что то выполняется (lifetime передается туда где принимается CancellationToken)

Ничего этакого в идее нет. суть в реализации - жетбраинсы поясняют проблему порядка терминации, многоступенчатой терминации, выполнение тасков (которые пока выполняются запрещают смерть лайфтайма чтобы гарантированно жил ресурс) и так далее.
Аноним 26/11/22 Суб 17:38:01 #373 №2523978 
>>2523973
>ну я ожидал что если сеттера нету, рантайм ошибку выстрелит
так у тебя же на скрине в свойствах есть и геттер и сеттер.
Аноним 26/11/22 Суб 17:40:22 #374 №2523981 
>>2523978
у GetMeResponse нету
Аноним 26/11/22 Суб 17:55:38 #375 №2524000 
>>2523981
Так GetMeResponse это класс, кек. При чем здесь геттер и сеттер?
У тебя там в поле щас пусто — Nothing (Null в этом вашем шарпе). Никто туда не поместил новых экземпляров, вот и пусто.
А если поместят, то вернет экземпляр этого класса (че ты там хотел выводить в консоль? Как ты это себе представляешь?)

bool ok — это ваще структура, а структуры имеют дефолтные значения. у int это 0, у bool это false. В новых версиях шарпа и структуры можно заставить возвращать Null, но это другая история.

Почитай про различия классов от структур.
Аноним 26/11/22 Суб 17:56:46 #376 №2524001 
>>2524000
>отличия классов от структур*
Аноним 26/11/22 Суб 18:01:43 #377 №2524009 
Screenshot from 2022-11-26 18-58-45.png
>>2524000
> да, и у него есть поля ok и result

у полей ok/result нету геттера и сеттера
соответственно
JsonSerializer.Deserialize<GetMeResult>(result);
просто не смог туда ничего сложить
насколько я понял
Аноним 26/11/22 Суб 18:07:47 #378 №2524022 
>>2524009
Смог но не захотел
Потому что они не свойства
А сериализатор ищет свойства
А поля.... В зависимости от сериализатора и настроек можно
Аноним 26/11/22 Суб 18:08:51 #379 №2524025 
>>2524009
Используй нормальные имена свойств
А не эту дичь
Это не жс
Аноним 26/11/22 Суб 18:12:50 #380 №2524031 
2022-11-2618-10-25.png
>>2524009
Ах вот ты про что. Ну про причуды шарпа я не знаком.
В бейсике есть укороченное свойство как у тебя написано без геттера и сеттера, а есть расширенная — с ними.

Поля вообще так не используют, они больше используются внутри классов. Для "внешнего мира" используют свойства.
Аноним 26/11/22 Суб 18:16:50 #381 №2524035 
>>2524022
>>2524031
понял, спасибо
>>2524025
потом порефачу™
Аноним 26/11/22 Суб 18:20:10 #382 №2524038 
>>2524031
да то же самое же. нет никаких отличий
есть поля, есть свойства. Все пишут get/set на автомате забыв различия

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

А имена дай нормальный и используй [JsonPropertyName9"aaa")]
Аноним 26/11/22 Суб 18:24:08 #383 №2524051 
>>2524038
>Все пишут get/set на автомате забыв различия
Я только сейчас задумался как вы вообще отличаете поля от свойств.

У нас это ключевое слово Property, а у вас это наличие get/set, видимо.
Аноним 26/11/22 Суб 22:00:37 #384 №2524278 
>>2524051
>Я только сейчас задумался как вы вообще отличаете поля от свойств.
Свойство - это по сути сахар над полями, позволяющий их инкапсулировать.
Конвенционально - в шарпе не принято делать публичные поля. Т.е. все что ты делаешь публичным должно иметь геттер и/или сеттер/инициализатор (развернутые или пустые - не важно)
private int _myVar; - поле
public int MyVar {get; init; } - свойство
public myvar; - говнокод
Это все, естественно, если ты кодишь в ООП стиле. Если что-то другое, то можешь не заморачиваться.
Аноним 26/11/22 Суб 22:01:42 #385 №2524279 
>>2524051
>а у вас это наличие get/set, видимо
Да.
Аноним 26/11/22 Суб 22:15:33 #386 №2524292 
А есть какой-то способ выгружать ресурсы у TreeView? А то чем больше открываю вкладок, тем больше оперативы жрет. При этом скрытие оперативу не снижает.

Выстраивал по MVVM паттерну. У меня же все сбиндено ко вьюмодели. Я же не могу просто удалять итемы — иначе удалятся ноды из базы.
Аноним 26/11/22 Суб 23:53:34 #387 №2524342 
Шарпач, покритикуй решение задачки.

В общем, вот мое https://pastebin.com/gMmfyPbi

Задачка - https://www.codewars.com/kata/52742f58faf5485cae000b9a
Аноним 26/11/22 Суб 23:55:00 #388 №2524343 
>>2524342
Блин. Скопипастил из редактора, там в конструкторе - > на >= надо заменить для минут.
Аноним 27/11/22 Вск 00:53:48 #389 №2524365 
Шарпач, подскажи. Есть пакет microsoft.extensions.dependencyinjection
Регистрируем сервис:
interface IService {}
class Service : IService
{
public Service() {}
}

services.AddTransient<IService, Service>();

А как зарегистрировать сервис c параметром в конструкторе?

class Service : IService
{
public Service(string yoba) {}
}
Аноним 27/11/22 Вск 01:13:42 #390 №2524376 
.png
>>2524365
Например как-то так?
Аноним 27/11/22 Вск 01:48:21 #391 №2524394 
>>2524292
Гугли виртуализация

А потом страдай.
Аноним 27/11/22 Вск 08:32:56 #392 №2524564 
>>2524342
23 кого-то посмотрели пасту, а в тредике никто не ответил(((
Вот что за дела?
Аноним 27/11/22 Вск 11:01:07 #393 №2524631 
>>2524564
Это заговор, чтобы заставить тебя страдать!!!
или нет
это просто показывает твою ничтожность, что никто не хочет уделять тебе внимания!!! - вот

или все гораздо проще - первой ссылкой открывается код, который ни о чем без задачи
А потом открывается сама задача и там "чет страшное на буржуйском, влом разбираться"
Аноним 27/11/22 Вск 11:04:49 #394 №2524634 
>>2524631
> чет страшное на буржуйском, влом разбираться
Кхм. Я думал все кодеры как минимум читать умеют на буржуйском(((
Аноним 27/11/22 Вск 11:58:52 #395 №2524650 
изображение.png
Как тут сделать цикл while?
Аноним 27/11/22 Вск 12:13:34 #396 №2524654 
>>2524650
int j=0;
while j<h {
. . .
j++;
}
Аноним 27/11/22 Вск 13:23:37 #397 №2524723 
image.png
>>2524342
>Шарпач, покритикуй решение задачки.

- Простыня из if-ов
- Магические цифры (имею в виду индексы массивов), через день ты заебешься вспоминать за какой период у тебя отвечает _data[2]
- Использование массивов в логике.
- Если придется добавлять какой-либо период (например недели), то это будет ебанина.
Аноним 27/11/22 Вск 13:43:16 #398 №2524737 
image.png
image.png
image.png
>>2524342
>>2524723
согласен с этим

смотри, тут принцип простой, когда встречаешь код как на пик1 можешь начинать думать над рефактором, сейчас ты копипастишь вайл циклы, завтра копипастишь функционал в 3х разных местах

пик2
та же трабла с копипастой
тебе точно в каждом ифе нужно проверять _timeItmes?

ну и _data[n] как анон сказал никуда не годится, хэшмапу штоли юзай или словарик я с доступом по ключу

и нейминг, да, что вообще за _data? Ты бы смог в моем коде, если бы встретил data[4] понять что получишь на выходе не смотря в место где происходит инициализация понять что вообще за _data и что я получу на выходе?

мимо жаваскриптер
Аноним 27/11/22 Вск 13:52:58 #399 №2524742 
>>2524723
>>2524737
Спасибо. Со всем согласен. Нужно наверное было после того как прошлись тесты - посмотреть свежим взглядом и избавиться от простыни ифов и циклов.

>>2524723
А вот к тебе еще и вопрос. Ты сразу сел и придумал такое решение? Просто как? Я вот не понимаю. Я - написал тестики по примеру задачки. Начал писать реализацию. Сделал. Тестики прошлись - залил на кодварс. А как придумать сразу чтобы красивенько было - хз...
Аноним 27/11/22 Вск 13:57:04 #400 №2524746 
Зачем для приватных полей добавляют префикс "_"? Он же только захламляет код и ухудшает читаемость.
Аноним 27/11/22 Вск 14:04:04 #401 №2524752 
>>2524746
так исторически сложилось
умные дяди в 60х на с++ так писали и ты пиши сука
Аноним 27/11/22 Вск 14:06:13 #402 №2524754 
>>2524746
Чтобы не писать this. Чтобы все приватные поля сразу были видны в подсказке, если в редакторе _ клацнул.
Аноним 27/11/22 Вск 14:30:06 #403 №2524777 
Кто нибудь встечался с такой штукой в WPF TreeView, когда выделяешь итем, скрол автоматически прокручивается. Как это говно убрать?

Событие ScrollChanged происходит уже после скроллинга.
Аноним 27/11/22 Вск 16:23:37 #404 №2524868 
>>2524746
>Он же только захламляет код и ухудшает читаемость.
Тогда у тебя будет куча this. что еще больше захламляет код и ухудшает читаемость.
Аноним 27/11/22 Вск 16:31:45 #405 №2524878 
>>2524868
this можно писать только при коллизиях, а ебучий андеркейс засоряет весь код как раковая опухель

плюнул в ебало дебилам которые протащили андеркейс в стайл гайд от майков
Аноним 27/11/22 Вск 16:35:11 #406 №2524883 
>>2524878
Двачую. С парой полей еще ничего, но от большого количества в коде начинает рябить в глазах.
Аноним 27/11/22 Вск 16:36:47 #407 №2524886 
>>2524868
>Тогда у тебя будет куча this
Можно просто юзать имя без подчеркивания, но с малой буквы.
Аноним 27/11/22 Вск 16:55:37 #408 №2524910 
image.png
>>2524742
>Ты сразу сел и придумал такое решение?
>Просто как?
Знания и опыт.
1) Изучай инструменты которыми пользуешься. Во первых специфические (напирмер сам C# и его библиотеки, фреймворки), во вторых общие (саму теорию программирования, математика, логика, комбинаторика и т.д.)
Вот тебе пример. Если посмотреть на пример из твоего же кода на пике. Ты берешь общее значение секунд и вычитаешь из него значение года в цикле, чтобы определить количество лет помещающихся в нем и остаток на другие периоды. Тогда как знай ты математику знал бы, что это решается всего двумя действиями. Первое результат целочисленного деления years = second / year и второе результат остатка от деления nextPeriod = second % year
Ты не используешь этого нигде. Почему? Потому что когда ты изучал базу, ты в раздел возможные операторы максимум один раз заглянул и перешел дальше. Ты не прорешал базу, например не разобрал как работают разные типы деления в языке. Это как в школе пытаться решать квадратные уравнения не изучив при этом таблицу умножения и вообще его принципы. Так же и в программировании.
2) Возьми себе за основу, что если ты пишешь код в котором есть повторяющиеся куски, то это плохой код. Если ты написал два одинаковых цикла, отличающиеся только парой переменных, то это нужно переписывать. Понятно, что из этого правила есть куча исключений, но в большинстве случаев это работает так. Увидел повторяющийся код, хотя бы попробуй переписать так чтобы его не было. Например в моем примере тоже есть место которое можно улучшить, цепочка одинаковых вызовов GetTimePart, которые можно было бы засунуть в цикл, если немного помудрить с константами и засунуть их в словарь.
3) Практика и задрачивание. Вот если ты набрал код с моего скрина >>2524723 , погонял его в отладчике, понял как он работает. Попытался его доработать и улучшить по своему, вот тогда тебе это пошло на пользу. Почитай еще что-нибудь по теме. Например если ты почитаешь инфу по типам TimeSpan, DateTime, а так же форматированию при их конвертации через ToString, то поймешь, что вообще в C# эту задачу можно в несколько строк решить.
Аноним 27/11/22 Вск 17:30:52 #409 №2524956 
изображение.png
Как писать такое, дайте ссылку в гугле забанили
Аноним 27/11/22 Вск 17:32:49 #410 №2524959 
>>2524365
Лучше так не делать. Всё-таки прелесть DI-конструкторов в соблюдение принципа DIP.


>>2524910
>1) Изучай инструменты которыми пользуешься. Во первых специфические (напирмер сам C# и его библиотеки, фреймворки), во вторых общие (саму теорию программирования, математика, логика, комбинаторика и т.д.)


Например изучить TimeSpan, который по умолчанию конвертирует секунды в минуты, часы и дни.
Аноним 27/11/22 Вск 17:33:42 #411 №2524963 
>>2524959
Не туда ответил >>2524910
Аноним 27/11/22 Вск 17:43:36 #412 №2524975 
>>2524959
>Например изучить TimeSpan, который по умолчанию конвертирует секунды в минуты, часы и дни.
В конце ответа про это есть.
Аноним 27/11/22 Вск 17:59:55 #413 №2524988 
собаку в каждый метод.JPG
>>2524868
а я вот так делаю
и никаких зысов и ебучих черточек дидовских не надо
Аноним 27/11/22 Вск 18:01:17 #414 №2524992 
>>2524376
Я не совсем точно описал. Чтобы можно было сделать вызов типа GetRequiredService<IService>("YobaValue");
Аноним 27/11/22 Вск 18:23:13 #415 №2525007 
>>2524988
Твое говно еще хуже.
Аноним 27/11/22 Вск 18:27:15 #416 №2525011 
>>2524988
Кек. Ты заставляешь страдать юзера, который будет пользоваться твоей функцией. В подсказках у него будет @example. За что ты так с ним? Ты бы еще такое имя дал: ADF4-367T-DE7R
Аноним 27/11/22 Вск 18:29:49 #417 №2525014 
>>2524992
Делаешь фабрику нужную тебе.
Регистрируешь ее как сервис.
Потом
var service = GetRequiredService<IServiceFactory>().Create("YobaValue");
Аноним 27/11/22 Вск 19:10:52 #418 №2525055 
>>2525007
>>2525011
ну замените собаку на что угодно например newX или _х если так не нравится собака, суть-то не поменяется, я предлагаю всю эту хуйню в аргументы вынести и оставить поля в покое
моя логика простая, чем меньше писать тем лучше
this.x = x надо писать больше собаки
_x = x и каждое поле так - надо писать больше собаки и смотрится уебищно, никакие аргументы меня не убедят, на дворе 2022, даже vscode умеет выделять приватные поля
Аноним 27/11/22 Вск 19:17:08 #419 №2525060 
>>2525055
И пусть выделяет. А kdiff выделит?
Аноним 27/11/22 Вск 19:27:40 #420 №2525068 
>>2525055
>ну замените собаку на что угодно
Ничего вообще не должно быть. Имена аргументов и публичных свойств должны быть максимально ясны — это первостепенное правило, а уж внутри класса ты изъебывайся как хочешь. Вне зависимости от яп.

Все равно что на кнопках твоей микроволновки будет вот такая вот ебатория $::Start:: вместо Start. Класс это такой же законченный продукт и он должен выглядеть прилично.
Аноним 27/11/22 Вск 19:53:32 #421 №2525080 
В дотнетике сошли с ума.
https://github.com/dotnet/runtime/issues/75933
Предлагают писать уродливый код вместо оптимизации во время компиляции.
https://steven-giesel.com/blogPost/34e0fd95-0b3f-40f2-ba2a-36d1d4eb5601
Добавляют ещё кучу "замороженных" коллекций.
https://www.youtube.com/watch?v=cwBrWn4m9y8
У комьюнити появилась какая-то нездоровая дрочь на низкоуровневые оптимизации.
Аноним 27/11/22 Вск 20:02:13 #422 №2525095 
>>2525080
>У комьюнити появилась какая-то нездоровая дрочь на низкоуровневые оптимизации.
Которые убьются xaml-стилями.
Аноним 27/11/22 Вск 20:02:56 #423 №2525097 
>>2525014
Спасибо
Аноним 27/11/22 Вск 20:48:31 #424 №2525150 
>>2525011
>В подсказках у него будет @example.
Самое смешное, что в подсказке у него не будет варианта с @, будет просто exapmle (по крайней мере в студии). Поэтому его говно и хуже.
Аноним 27/11/22 Вск 20:57:25 #425 №2525154 
image.png
image.png
Анончик, у меня такой вопрос. Есть ли в студии возможность шаблонизации для проекта? Встроенная или в виде расширения?

Поясню. Например у меня есть солюшен со структурой как на 1-м пике. Допустим я хочу добавить сущность Document и соответствующую обвязку к ней в виде репозиториев, сервисов, контроллера, интерфейсов и ДТО (как на пике 2)
Хочу чтобы студия по команде сама создавала мне нужную структуру во всех проектах (каталоги, файлы) с именами соответствующими сущности и с шаблонами кода для каждого файла.

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

Примечание 2: Сниппеты не подходят, т.к. это на уровне "вставить кусок кода в текущий файл", нужен более широкий функционал.
Аноним 27/11/22 Вск 21:04:53 #426 №2525162 
>>2525154
Тут речь о вставке шаблонов в уже готовый проект.
Ну так пиши расширения для студии, там больше возможностей, чем у чмоппетов.
Аноним 27/11/22 Вск 21:16:19 #427 №2525171 
>>2525162
>Тут речь о вставке шаблонов в уже готовый проект.
Да именно оно.
>Ну так пиши расширения для студии
Ну так я этого и хотел избежать, думал, что готовое уже что-то есть.
Аноним 28/11/22 Пнд 00:59:22 #428 №2525274 
>>2525162
>Ну так пиши расширения для студии, там больше возможностей, чем у чмоппетов.
Анонч, а какие способы кодогенерации есть в C#? Чтобы программно создать какой-либо класс из шаблона, сделать автозамену нужных параметров и закинуть его на диск? Почитал про Т4, но такое ощущение, что это не то.
Аноним 28/11/22 Пнд 01:47:20 #429 №2525295 
>>2525274
>Чтобы программно создать какой-либо класс из шаблона, сделать автозамену нужных параметров и закинуть его на диск?
Ну вот мне пришлось для подобных задач вкатиться в плагины. Там ничего сложного даже с моими, так сказать, способностями, даже при том, что я писал на бейсике, а плагины можно делать только на шарпе.
Единственное, что нужно время на написание всего — это очевидно.

По установке деталей не помню, там устанавливаешь нужные компоненты (из меню средства и компоненты) и дальше у тебя появляется шаблон для создания плагинов на C#. Есть видео основ
https://youtu.be/Pk7jdsvEhfc

У тебя там тесть триггеры которые запускают твои команды плагина (типа при старте программы, или при запуске решения и т.д. их там дохера), ну или добавляешь кнопку запуска в меню студии.
Далее есть функция, которая позволяет получить инфу из твоего решения. Самое примитивное — получить текст с текущего документа или выделенный фрагмент текста.
Насчет структуры решения — хз, там надо покопаться и определить что есть, а чего нет.

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

В остальном обычное решение с проектами, функциями, окнами — что хочешь, то и воротишь. Разница только в начальном шаблоне.

>Почитал про Т4
Хз что это. Просто гугли Visual Studio Extensions.
Аноним 28/11/22 Пнд 01:55:28 #430 №2525302 
>>2525295
>По установке деталей не помню, там устанавливаешь нужные компоненты
С этим уже разобрался.
>У тебя там тесть триггеры которые запускают твои команды плагина
С этим тоже.
>Например у меня были проблемы с выводом в окно интерпретации, потому что плагин работает отдельным потоком и для него твой экземпляр студии — пустое место.
С потоками тоже понятно.

>В остальном обычное решение с проектами, функциями, окнами — что хочешь, то и воротишь. Разница только в начальном шаблоне.
Ну это да. Но вот я смог получить инфу по солюшену и по проектам. Могу создать нужные каталоги и даже файлы с простой самодельной кодо-генерацией. Но вот как прокинуть их в сами проекты пока не разобрался.
Аноним 28/11/22 Пнд 01:59:17 #431 №2525304 
>>2525302
>Ну это да. Но вот я смог получить инфу по солюшену и по проектам. Могу создать нужные каталоги и даже файлы с простой самодельной кодо-генерацией. Но вот как прокинуть их в сами проекты пока не разобрался.
На крайняк создавать файлики в решении, а потом как-то их аттачить командой. Как аттачить — это надо искать.
Аноним 28/11/22 Пнд 12:08:23 #432 №2525473 
>>2525080
>вместо оптимизации во время компиляции.
ась? как компилятор узнает что нужно оптимизировать

А так да - аж через 20 лет они поняли что нужны фрозен коллекции. Это те, что в котлине и питоне изначально.
Аноним 28/11/22 Пнд 16:46:34 #433 №2525757 
Как при запросе на обновление сущности в asp net отличить запрос на обнуление от отсутствия изменений?
Аноним 28/11/22 Пнд 16:57:47 #434 №2525765 
>>2525757
Чиииииивоо?
Аноним 28/11/22 Пнд 17:06:20 #435 №2525774 
>>2525765
Что тебе не ясно? Вот есть класс
BookDto {
public string Name {get; set;}
public int PageCount {get;set;}
public string AuthorName {get;set;} }
Мне на контроллер приходит запрос на изменение, где Name="ZalupaKonya", PageCount = 666, а AuthorName = null, вопрос собственно в том, как понять, хотел сделавший запрос обнулить имя автора или же просто не хотел его менять.
Аноним 28/11/22 Пнд 17:09:08 #436 №2525781 
>>2525774
такое просто не пройдет валидацию же. а там как сделаешь - может вернешь анпроцессаблеентити или еще как.

а если нулл это штатно то как ты собираешься отличать? ты же не влезешь в мозг пользователя. ну можешь на клиенте переспросить и добавить бул поле, мол это ТАКОЕ
Аноним 28/11/22 Пнд 17:33:49 #437 №2525795 
>>2525781
>такое просто не пройдет валидацию же. а там как сделаешь - может вернешь анпроцессаблеентити или еще как.
Если свойство указано как nullable то всё спокойно пройдёт. Вообще я решил проблему заведя словарь. При обновлении свойства в нём соответствующему ключу присваивается true
Аноним 28/11/22 Пнд 17:45:41 #438 №2525804 
>>2525774
>как понять, хотел сделавший запрос обнулить имя автора или же просто не хотел его менять.
Валидатор прикручиваешь и натравливаешь его на Dto
Аноним 28/11/22 Пнд 17:47:18 #439 №2525808 
>>2525795
>Вообще я решил проблему заведя словарь. При обновлении свойства в нём соответствующему ключу присваивается true
Хуйню ты сделал.
Аноним 28/11/22 Пнд 17:51:27 #440 №2525815 
>>2525808
Почему?
>>2525804
>Валидатор прикручиваешь и натравливаешь его на Dto
И как это поможет?
Аноним 28/11/22 Пнд 18:58:54 #441 №2525878 
>>2525815
>И как это поможет?
Оно будет валидировать
Аноним 28/11/22 Пнд 19:46:25 #442 №2525910 
>>2525815
>И как это поможет?
Ты в валидаторе можешь прописать любые правила для любого поля/набора полей. Прописываешь, что данное поле не должно быть null и тип ошибки который должен выкинуться. А дальше уже строишь логику от этого, либо даешь отлуп, либо продолжаешь но по другой ветке алгоритма.
Аноним 28/11/22 Пнд 19:49:23 #443 №2525916 
>>2525815
>И как это поможет?
RuleFor(x => x.AuthorName ).NotNull().WithErrorDescription(DirectionErrors.AuthorNameIsNull);
Аноним 28/11/22 Пнд 21:18:41 #444 №2525987 
А существует ридонли, который доступен для перезаписи внутри класса, но снаружи возможно только чтение?
Аноним 28/11/22 Пнд 21:19:15 #445 №2525988 
>>2525987
{get; private set;}
Аноним 28/11/22 Пнд 21:22:10 #446 №2525991 
>>2525988
Ах, ну да. Спасибо.
Аноним 29/11/22 Втр 03:15:40 #447 №2526118 
>>2525910
Так в том то и дело, что я хочу, чтобы поле могло быть null
Аноним 29/11/22 Втр 07:13:33 #448 №2526155 
image.png
Может кто-нибудь поделиться книгой? Весь интернет перерыл, нигде не нашёл в свободном доступе.
Аноним 29/11/22 Втр 09:53:28 #449 №2526211 
В чём прикол удалять посты про книги по шарпу. Дехенераты.
Аноним 29/11/22 Втр 10:21:16 #450 №2526221 
>>2526211
Возможно шутка про жаву была лишней. У самого было чувство, что перегнул палку, так что, выражаю модерации свои глубочайшие извинения, и тем, чьи посты попали под удар.
Аноним 29/11/22 Втр 12:42:46 #451 №2526320 
image.png
Бля сеньеры помидоры помогите
Вот делаю я ебучию OAuth 2.0
В инструкции пишут
>code_challenge=<base64url(SHA-256(code verifier))>
>To create a code challenge your application will first need to create a one time use code verifier. A simple way to do this is to generate 32 random bytes and base64url encode them. Store this code verifier as you’ll need it in a later step. To create a corresponding code challenge, SHA-256 hash the code verifier, and then base64url encode the raw hash output. The base64url encoding is defined in RFC 4648 and should not contain padding. If you’d like to see an example of creating a code challenge in Python you can find that here. Feel free to contribute examples in other languages to this repository to help others.

Создаю массив рандомных байтов

Random rnd = new Random();
byte[] b = new byte[32];
rnd.NextBytes(b);
return b;

Далее делаю из него SHA-256 далее делаю из него бейс64 через https://github.com/neosmart/UrlBase64 что бы было url-safe генерирую ссылку и отправляю
На сайте авторизуюсь и получаю код на калбек.
Далее по инструкции
>Now that your application has the authorization code, it needs to send a POST request to https://login.eveonline.com/v2/oauth/token with a payload containing the returned authorization code, the client ID of your application, and the original URL safe Base 64 encoded 32 byte string that was randomly created for the code challenge in step 3.
Мне нужно отправить оригинальный код в бейс64 пост запросом что я и делаю в пикриле и получаю ответ что не верный код сука.
Я у себя сравниваю эти коды, тот который я отправил первый раз и тот который во второй, я его из бейс64 в массив байтов, потом в SHA-256 потом в бейс64 и получается такой же как и первый.

Я что то не то отправляю? Или там как то по другому они проверяют коды? Пздц блять нахуй
Аноним 29/11/22 Втр 13:14:57 #452 №2526341 
image.png
>>2526320
Так хуярь его в авторизацию, а не в боди.
Аноним 29/11/22 Втр 13:57:11 #453 №2526377 
>>2526211
Погоняло у тебя дегенерат. Почитай шапку, а именно открой вторую ссылку.
Аноним 29/11/22 Втр 16:35:04 #454 №2526584 
>>2526155
Вот она на английском: https://libgen.is/book/index.php?md5=20E870EB08B33873A7039EE837D422A2

И ничего никочает. Один торрент с нулем пиров, сбоку есть ссылка на 28гб добра, но пиров тоже негусто. Швабода файлообмена пиздец просто. Все через жопу у анальников!
Аноним 29/11/22 Втр 18:25:20 #455 №2526681 
chromeYwDwTF0ZeV.png
0000.jpg
>>2515951 (OP)
.net и .net framework отличаются только кроссплатформой?
asp.net внутри .net сильно отличается от asp.net в .net framework?
вопрос к вопросу выше, правильно ли я написал или название asp.net и asp.net core две абсолютно разные вещи?
nuget пакеты доступны внутри .net framework?
Зачем сделали asp.net mvc, если это просто паттерн или это тоже фреймворк внутри фреймворка?
Как разобраться в этой архитектуре?
Что-то сильно наворотили майки, еще переименовали .net core
просто .net
Аноним 29/11/22 Втр 18:32:14 #456 №2526692 
>>2526681
>.net и .net framework отличаются только кроссплатформой?
нет не только. они хотели сделать новое и чистое и с нуля
то есть "переписать нахрен выбросив легаси"
В итоге выбросили концепцию AppDomain, Thread.Abort, WCF, DataTable и не помню еще чего - из за чего даже тот же Slqite либа не могла переехать и они запилили свою
Потом из этого часть таки портировали для совместимости в коре 2.
Аноним 29/11/22 Втр 18:41:15 #457 №2526700 
>>2526692
.net framework можно получается не трогать, если не собираюсь в банках говно мамонта ковырять? Можно сразу идти в изучение .net (.net core), т.к это современная реализация включающая в себя asp.net или asp.net реализация в .net framework отличается от современного внутри .net (.net core)?
Аноним 29/11/22 Втр 18:43:58 #458 №2526701 
Шарпочане, вопрос по автосвойствам - обращение к свойству внутри типа компилятор поменяет на обращение к полю, которое им же и было создано или как даунич вставит вызов сгенерированного метода set_propertyName?
Аноним 29/11/22 Втр 18:47:43 #459 №2526703 
>>2526701
Ыыыы перформанс метод вызывать дорого аааа
Аноним 29/11/22 Втр 18:50:59 #460 №2526704 
>>2526700
>если не собираюсь в банках говно мамонта ковырять?
Чел, я сейчас в банке сижу и переписываю сервисы с Core2.1 на .NET6. Хуй ты сейчас найдешь где-нибудь .Net Framework, кроме заводов и совсем отсталых гос.контор.
>>2526700
>Можно сразу идти в изучение .net (.net core),
Да учи сразу .NET6, ну или на крайний случай .NET Core3.1 (не ниже)
Ну и еще .NET Standart 2.0 тоже нужен бывает.
Аноним 29/11/22 Втр 19:02:42 #461 №2526712 
>>2526703
Да дорого. Получается компилятор даунич и вставляет вызов?
Аноним 29/11/22 Втр 19:05:17 #462 №2526715 
>>2526712
Да какая разница, в рантайме всё jit оптимизирует
Аноним 29/11/22 Втр 19:07:18 #463 №2526716 
>>2526704
>Хуй ты сейчас найдешь где-нибудь .Net Framework
Зависит от задач. Мне например надо было декомпилирвоать в IL-код, редактировать и снова упаковывать в dll. А для Core у майков нет тулзы для этого — только для dll на нетфреймворке.

Ну и раз уж такая тема, то вопрошаю есть ли какие-то варианты как на этапе конпиляции студии как-то пошурудить IL-код?
Аноним 29/11/22 Втр 19:09:35 #464 №2526719 
>>2526716
Fody
Аноним 29/11/22 Втр 19:12:57 #465 №2526720 
>>2526681
>.net и .net framework отличаются только кроссплатформой?
Не знаю как asp.net, там какая-то осбенноая платформа и вечно жалуются, что пирмеры из книг к прошлым версиям не запускаются, но в WPF я даже не заморачиваясь просто копипащу из .net framework в .net

Ну разве что с нюгетами надо быть аккуратнее т.к. либы там бывают в двух версиях, но вроде как проект .net поддерживает обратную совместимость с либами на .net framework.
Аноним 29/11/22 Втр 19:37:14 #466 №2526744 
>>2526704
>Хуй ты сейчас найдешь где-нибудь .Net Framework
Santander, mBank (Commerzbank), XTB, Uniqa. Это клиенты с .net Framework за последние 2 года и только некоторые планируют переходить на .net core. И у всех из них большая часть ключевого функционала висит на framework.
Факт, что сейчас намного выгоднее работать с кором, на перспективу развития, да и интереснее, но из-за этого растут ставки на EF ещё потому что это наверняка легаси, а это никто не любит
Аноним 29/11/22 Втр 19:49:26 #467 №2526760 
>>2526744
Только вот не очень важно того что кто-то сидит на говне мамонта - если всё равно там не работать
Аноним 29/11/22 Втр 22:03:35 #468 №2526838 
А есть какой-нить годный курсик по многопоточке в шарпе? От ITVDN курс С# асинхронное программирование понравился (только по асинк авэйт посмотрел), но на торрентах нашел онли 5 серий, а их больше.
Аноним 29/11/22 Втр 22:43:09 #469 №2526860 
>>2526155
>>2526584
https://t.me/physics_lib
Здесь есть, поиском пройдись
Аноним 29/11/22 Втр 22:58:21 #470 №2526866 
>>2526838
А, нашел полный на рутрекере
Аноним 30/11/22 Срд 05:54:48 #471 №2526952 
>>2526860
Там тоже на английском.
Аноним 30/11/22 Срд 07:23:54 #472 №2526972 
16682730458880.gif
>>2515951 (OP)
Некроёб на связи. Как поставить .net 4 sdk на шинду 10? Сам пакет стоит по дефолту но вот sdk не ставится. В интернете нашел пока установщик для вин 7, но он вываливается с ошибкой. Алсо, у меня на работе есть пк с 10 виндой и этой sdk, её можно как-то оттуда перенести?
Аноним 30/11/22 Срд 07:25:23 #473 №2526973 
*.net framework 4.0 само собой.
>>2526972
Аноним 30/11/22 Срд 13:06:53 #474 №2527169 
Поясните за команды в WPF, зачем они нужны? Они могут принять только один аргумент, а в 98% случаев это шляпа даже по сравнению с EventArgs.

У меня ощущение, что я добровольно лезу в трясину, которая делает мне хуже.
Аноним 30/11/22 Срд 13:37:13 #475 №2527190 
>>2526704
>переписываю сервисы с Core2.1 на .NET6
Зачем? Чтобы что? Не понимаю логику таких переписоывателей. Потом будешь переписывать .NET6 на .NET8 чтобы вкатуны-сузихлебы не терялись от дидовского синтаксиса трехлетней давности? ИБД натуральное.
Аноним 30/11/22 Срд 13:40:21 #476 №2527192 
>>2527190
чтобы не поддерживать легаси.
это новая версия языка
это скорость рантайма
это больше разных фич которых не было.
а еще ему за это платят

>>2527169
это такая фича что позволяет вызвать метод вьюмодели с параметром
и при этом подключены через биндинг
Аноним 30/11/22 Срд 15:49:54 #477 №2527297 
Накидайте список годных книжек для вкатунов
Аноним 30/11/22 Срд 15:51:45 #478 №2527300 
>>2527297
Рихтер
Аноним 30/11/22 Срд 16:45:09 #479 №2527327 
как достичь согласованности с чужим кодом?
вот есть приложение, к нему подключается длл, подписывается на эвент передающий объект и проводит над ним операции.
к этому же приложению подключается мой длл, подписывается на этот же эвент и делает почти тоже самое но иначе.
первый длл сыпет эксепшонами после моих манипуляций если ему не дать отработать перед моим.
менять чужой код я не могу.
что делать посоны? как гарантировать порядок выполнения?
весь код синхронный.
Аноним 30/11/22 Срд 17:25:43 #480 №2527359 
>>2527327
Мьютексы (mutex).
Аноним 30/11/22 Срд 17:26:25 #481 №2527362 
>>2527359
Но должны быть в обоих DLL.
Аноним 30/11/22 Срд 17:27:56 #482 №2527364 
>>2527359
>>2527362
засада... я не могу чужой длл модифицировать
Аноним 30/11/22 Срд 17:36:06 #483 №2527367 
>>2527364
Пишите автору DLL, семидесятипятирублируйте.
Аноним 30/11/22 Срд 17:58:34 #484 №2527385 
>>2527327
так пусть отрабатывает перед твоим.
Аноним 30/11/22 Срд 18:02:12 #485 №2527388 
>>2527367
так я уже. он сказал ебись сам конем УМВР ничего не знаю лол кек.
>>2527385
как? мы подписываемся на старте приложения. я не знаю как гарантировать что его хуйня подпишется раньше моей.
Аноним 30/11/22 Срд 18:04:45 #486 №2527390 
>>2527388
твое приложение же - гарантируй очередность загрузки и инициализации плагинов. приоритеты или что то такое.
Аноним 30/11/22 Срд 18:08:38 #487 №2527393 
>>2527390
так приложение тоже не мое блядь.
Аноним 30/11/22 Срд 18:18:43 #488 №2527397 
>>2527393
делай так же
пусть юзеры жалуются автору длл что их длл крашится
Аноним 30/11/22 Срд 18:22:05 #489 №2527399 
>>2527397
так он скажет это из-за длл того мудака(меня), удоляйте.
короче какой-то клин.
приложение вообще никаких очередностей не поддерживает.
автор другого длл пидор и собака на сене.
я дебил и не могу придумать обходной путь.
Аноним 30/11/22 Срд 18:25:22 #490 №2527400 
>>2527399
а ты скажи что так то норма ожидать что объект придется не девственно чистый. Скажи что твой супер длл обрабатывает эту ситуацию, а его длл нихера проверок не делает и вообще он рукожоп

так что в споре ты прав. и в общем то так и должно решаться.
Аноним 30/11/22 Срд 18:26:31 #491 №2527401 
>>2527399
Sleep(10000);
Аноним 30/11/22 Срд 18:27:42 #492 №2527403 
>>2527401
это не решение. за это время уже могут начать лететь события.
Аноним 30/11/22 Срд 18:33:38 #493 №2527406 
Как наладить коммуникацию между двумя проектами?

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

И та и другая библиотека может обратиться дург к другу в любой момент. Я не могу в каждую добавить зависимости дург дурга — получается зацикленность.

Делать проект-мост и тупо ретранслировать команды? А если в одном преокте 50 команд, и в другом 50 команд, то мне придется делать лишнюю работу и создавать 100 команд. А если в одном проекте добавятся команды? Хуйня какая-то.

Как этот ваш принцип солида поддерживать?
Аноним 30/11/22 Срд 18:34:32 #494 №2527407 
а вот подумал
может сделать как-то:
1. если в ассембли есть его длл
2. каким-то образом подцепиться к ЕГО обработчику в рантайме через рефлексию и когда он закончит, жахнуть мой эвент
3. получится что-то типа гетто цепочки вызовов и все довольны
Аноним 30/11/22 Срд 18:38:35 #495 №2527409 
>>2527406
ну если не хочется сообщениями то просто делай отдельный(е) проекты с контрактами. В рантайме ты можешь гарантировать что будет их реализация. Вот на эти проекты и ссылайся

Посмотри на тот же DI от мелких - у них есть отдельная сборка .Abstractions где собственно сами интерфейсы, на которые все и ссылаются.
Аноним 30/11/22 Срд 18:41:14 #496 №2527410 
>>2527407
Короче, семеро гномов решили трахнуть Белоснежку.
Один гном в бегает к ней в спальню, другие стоят за дверью.
Первый гном кончил, второй гном кончил, третий гном кончил, четвёртый гном кончил, пятый гном кончил, шестой гном кончил, седьмой гном кончил, первый гном слез с Белоснежки.
Аноним 30/11/22 Срд 18:43:41 #497 №2527411 
>>2527410
а белоснежка-то что? эксепшонами сыпет или ей норм? взлетит?
Аноним 30/11/22 Срд 18:44:13 #498 №2527412 
>>2527407
не выйдет. просто не выйдет.
все упрется в "каким то образом"

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

влезать в самое начало на старте приложения, подменять метод как тут в одном из прошлых тредов говорилось - явный перебор.
Аноним 30/11/22 Срд 18:47:49 #499 №2527416 
>>2527412
Ну тогда ничего не остаётся кроме как в цикле сканировать глобальную переменную, чтобы убедиться, что первый гном кончил.
Аноним 30/11/22 Срд 18:50:48 #500 №2527417 
>>2527412
ну я думаю как-то ждать пока не подпишется?
может таску завести и пусть ждет пока не подпишется? а когда подпишется то я сразу его обработчик и подпишу
Аноним 30/11/22 Срд 19:10:08 #501 №2527426 
>>2527417
это все ненадежные костыли
ты можешь в цикле да
но при этом ты должен допускать что за время пока ты фигней страдаешь он уже подписался и пошло событие
Аноним 30/11/22 Срд 19:20:32 #502 №2527429 
>>2527426
так событие юзеринпут
о а кстати может его как раз и авайтить? первый инпут попер = тот чел уже 100% подписался, можно пристраивать гномью многоножку к белоснежке. мне не в падлу подождать если это будет гарантировать что его обработчик уже есть и работает, а юзер скорее всего заметит только маленькую задержку при первом инпуте а дальше все будет работать нормально
Аноним 01/12/22 Чтв 02:55:38 #503 №2527626 
>>2520146
Объясните ньюфагу, что здесь происходит в коде?
Аноним 01/12/22 Чтв 04:40:46 #504 №2527645 
>>2527626
просто построение LINQ и материализация спрятаны в метод с именем и параметрами.

Это то же самое что ты сделаешь метод GetItems где будешь собирать SQL (ну и выборку сделаешь) в зависимости от параметров.
Аноним 01/12/22 Чтв 14:33:14 #505 №2527903 
>>2527626
Линкопетушение происходит. Никогда так не пиши! Даже за деньги так не пиши! Даже за очень большие деньги!

Если по сути кода. Есть коллекция _items сначала ее прогоняют через фильтер filter(секция where), потом результат сортируют по возрастанию или убыванию с ключем который вернет функция orderBy, затем в конце получившемуся хрючеву вызывают ToList() т.е. превращают результат из итераторов на итераторы в обычный лист.

Все вышеназваное можно написать на обычном форе более понятно, но почему сейчас так не модно. Как хорошо что в геймдеве у серьезных проектов линк не в почете. Там до сих пор живут духом молодости и ультрахардкора, пока глупые вкатуны копипастят дурной код прямо из доки микрософта.
Аноним 01/12/22 Чтв 14:42:57 #506 №2527916 
>>2527903
Как ты на форах обращение к бд напишешь?
Аноним 01/12/22 Чтв 14:45:37 #507 №2527919 
>>2527916
АDO.net же. Делаешь сначала запрос со своим SQL, потом в цикле перебираешь DataTable с результатом, опционально делаешь с ним что-то осмысленное. Забытые технологии древних.
Аноним 01/12/22 Чтв 14:51:18 #508 №2527929 
>>2527919
С такими советами можешь говна поесть.
Аноним 01/12/22 Чтв 15:13:47 #509 №2527961 
>>2527903
>Линкопетушение происходит. Никогда так не пиши! Даже за деньги так не пиши! Даже за очень большие деньги!
аргументируешь?

>Все вышеназваное можно написать на обычном форе более понятно
мс: смотрите, чтобы не писать форы мы вам принесли новую технологию LINQ - то же самое, но декларативно - короче, читабельнее, понятнее
анон: на обычном форе более понятно
Аноним 01/12/22 Чтв 15:31:59 #510 №2527983 
Есть какая-то принципиальная разница в том, как gc обрабатывает жирный Array или List? Содержимое - рекорды. Такое ощущение, что с листом меньше памяти жрёт.
Аноним 01/12/22 Чтв 15:35:09 #511 №2527988 
>>2527983
List - обертка над Array, при этом размер пустого списка неизвестен и удваивается при заполнении
то есть array по дизайну меньше кушает

содержимое значения не имет - память будет занята на моменте образования пустого array (или его же внутри List)
Аноним 01/12/22 Чтв 15:40:49 #512 №2527997 
>>2527961
>анон: на обычном форе более понятно
Это факт.

У того нюфани который спросил ворос не возникло бы проблем с пониманием базового синтакса фора и пары вызовов в нем объектов переданых в качестве параметров. Просто знаешь базовый синтаксис => все понимаешь. Низкий порог входа означает, что код чистый и написан идиоматическим для языка способом.

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

Для меня загадка почему все так подсели на это дерьмо.
Аноним 01/12/22 Чтв 15:43:57 #513 №2528000 
>>2527997
> Это факт.
Нет, это чушь. Фор более понятен для тех, кто не знаком с линком, кто глянул его синтаксис никаких трудностей испытывать не будет.
> У того нюфани который спросил ворос не возникло бы проблем с пониманием базового синтакса фора и пары вызовов в нем объектов переданых в качестве параметров. Просто знаешь базовый синтаксис => все понимаешь. Низкий порог входа означает, что код чистый и написан идиоматическим для языка способом.
А ещё у нюфани не возникло бы проблем с обычным вызовом функций с передачей им аргументов, повод ли это отказывать от внедрения зависимостей?
Аноним 01/12/22 Чтв 15:51:40 #514 №2528006 
>>2527997
>Это факт.
хз для кого факт.
сам я не люблю LINQ из за оверхеда
но не могу отрицать что декларативный код читабельнее императивного кода

>с пониманием базового синтакса фор
а у него и так не возникло проблем с пониманием синтаксиса. Он спросил нормально ли такое мудрить.

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

>Для меня загадка почему все так подсели на это дерьмо.
вещь примитивная и базовая. и немного удобная.
а перфоманс нужен не везде.
лично я LINQ юзаю мало.
Аноним 01/12/22 Чтв 15:53:57 #515 №2528010 
>>2528000
>А ещё у нюфани не возникло бы проблем с обычным вызовом функций с передачей им аргументов, повод ли это отказывать от внедрения зависимостей?
Тут надо подумать логически. Если обычный вызов функций с параметрами может заменить контейнер с зависимостями, то почему нет? Делать как можно проще не скатываясь в копипасту - это добродетель.
Аноним 01/12/22 Чтв 17:29:22 #516 №2528147 
Юзаем linq в хайлоаде, мать жива.
Аноним 01/12/22 Чтв 17:31:11 #517 №2528149 
>>2527988
Про это я в курсе. Покопался в теме - linq.ToArray и linq.ToList имеют разные механизмы, и лист получается быстрее и меньше в итоге.
Аноним 01/12/22 Чтв 17:54:35 #518 №2528161 
>>2528149
тебе так кажется. если даже на основе IEnumerable то в обоих случаях используется одинаковая оптимизация.
Аноним 01/12/22 Чтв 18:38:25 #519 №2528244 
>>2528147
>мать жива.
Но это не точно. По данным статистики только 5% программистов пользутся программами своего авторства. Они не видят все их убогой глючности, тормознутости и встратости и наивно думают что с ними все Ок.
Аноним 02/12/22 Птн 07:35:41 #520 №2528596 
Кто тут пользуется райдером? Как вы живёте без автокомплита? Мне самому приходится каждый get set прописывать, и все поля при копировании объекта.
Аноним 02/12/22 Птн 08:59:42 #521 №2528621 
Я вчера общался с опытным дотнетчиком и он сказал, что не генерирует миграции в консольке, а пишет сам ручками.
Аноним 02/12/22 Птн 09:41:37 #522 №2528637 
>>2528621
Лол, а их что, можно генерировать?
Аноним 02/12/22 Птн 09:49:31 #523 №2528638 
>>2528637
Конечно
$dotnet ef migrations add Initial
Аноним 02/12/22 Птн 10:01:53 #524 №2528643 
>>2528621
>>2528637
>>2528638
Это тонкий троллинг?
Аноним 02/12/22 Птн 10:03:44 #525 №2528644 
>>2528643
Нет, просто не всем нравится использовать авто-сгенерированный код. Получается, что не ты сам пишешь программу. Лично меня это загоняет в депрессию.
Аноним 02/12/22 Птн 10:11:19 #526 №2528648 
>>2515951 (OP)
Спустя полдня ковыряния реестра и разных установщиков с ошибками я разобрался - просто смонтировал образ проводником и внутри в папке Setup поставил руками все установки (хотя там скорее всего нужно только .net framework sdk). Дефолтный autorun (setup) и SDKSetup вываливаются с ошибками.
Вот пост: https://stackoverflow.com/questions/35733040/how-to-install-net-4-framework-in-windows-10
Первый ответ, линк Microsoft windows sdk for Windows 7 and .NET framework 4.
Мб добавьте в шапку для будущих некроёбов.
>>2526972
>>2526973
Аноним 02/12/22 Птн 10:21:27 #527 №2528650 
>>2528648
А вот Java SDK можно поставить любую версию на любую ОС. Мало того и на новых версиях можно спокойно выполнять программы, написанные для Java 1.0.
Аноним 02/12/22 Птн 10:37:23 #528 №2528658 
>>2528650
Его раньше тоже можно было спокойно ставить, просто сейчас он считается устаревшим, но это последняя версия фреймворка которую поддерживает XP.
Политика мастдая, щито поделать, десу.
Аноним 02/12/22 Птн 12:11:21 #529 №2528746 
>>2528161
Тыскозал? Попробуй погуглить по теме, бенчмарки посмотреть/погонять
Аноним 02/12/22 Птн 12:12:18 #530 №2528749 
>>2528746
да. тупо посмотри исходники, а не бенчи гоняй
Аноним 02/12/22 Птн 14:22:00 #531 №2528831 
ToList и ToArray работают с абсолютно идентичной скоростью, если не верите - смотрите исходный код дотнета, source.dot.net. Однако, я не утверждаю, что это одинаково вообще всегда, возможно некоторые специфические коллекции в реализации ToList отличаются, но дефолтные Enumerable имеют одинаковую реализацию в виде new List(size), list.add(item). А для ToArray new array[size], array = item. И там и там одна хуйня. Однако, это мы говорим про скорость, а не про память.

мимо шарю за кишочки дотнета
Аноним 02/12/22 Птн 14:38:07 #532 №2528850 
Еще кстати иногда можно передавать в метод List, а не IEnumerable, т.к при енумерации IEnumerable будут вызываться boxing/unboxing, а при енумерации листа - нет, поскольку Enumerator у List является структурой, а у других классов енумератор является классом (в т.ч у массивов)
Аноним 02/12/22 Птн 15:37:24 #533 №2528897 
>>2528621
Мудак он, а не опытный. Это из той же оперы, что и "Нафиг мне ваш гит, я лучше папочки буду архивировать по датам".
Аноним 02/12/22 Птн 15:38:56 #534 №2528898 
>>2528644
>Нет, просто не всем нравится использовать авто-сгенерированный код. Получается, что не ты сам пишешь программу. Лично меня это загоняет в депрессию.
Долбоеб ты. Депрессию иди к психиатру лечи и не распространяй свои загоны на код.
Аноним 02/12/22 Птн 15:42:36 #535 №2528902 
>>2528898
не все используют EF
и не все юзают гит )
Аноним 02/12/22 Птн 15:52:25 #536 №2528907 
>>2528850
>при енумерации IEnumerable будут вызываться boxing/unboxing
Не будет, альтернатива List<T> - это IEnumerable<T>, а не IEnumerable.
Аноним 02/12/22 Птн 16:05:07 #537 №2528918 
Хотя да, посмотрел, будет boxing, но только ведь enumerator'a, так что это не сильно перфоманс затронет.

>>2528907
Аноним 02/12/22 Птн 16:09:22 #538 №2528925 
>>2528897
Я чётко знаю что и в какой папочке лежит, а с гитом постоянно какая-то дроч. Можно вообще всё сломать и лишится кода, а когда ковыряешь папочку, то всегда знаешь, что у тебя есть резервная.
Аноним 02/12/22 Птн 16:31:52 #539 №2528954 
>>2528925
>Можно вообще всё сломать и лишится кода
Как?
Аноним 02/12/22 Птн 16:32:39 #540 №2528955 
>>2528954
Гит же
Аноним 02/12/22 Птн 16:34:13 #541 №2528958 
>>2528955
Да падажи, как ты гитом там что себе сломаешь не пойму?
Аноним 02/12/22 Птн 16:46:49 #542 №2528971 
r2329045c5v7p.jpg
>>2528958
ну и вопросы у тебя
Аноним 02/12/22 Птн 17:55:14 #543 №2529040 
>>2528831
>мимо шарю за кишочки дотнета
а расскажи почему итерация коллекции через Span<T>.Length вместо обычных count/length выходит быстрее
Аноним 02/12/22 Птн 18:02:36 #544 №2529046 
>>2529040
ох уж ты экономист на спичках.
как минимум компилятор/jit может доказать, что Length этой реф структуры не изменится и оптимизировать сей момент

мимокрок
Аноним 02/12/22 Птн 19:54:55 #545 №2529122 
Как можно скопировать байтовый массив в структуру без unsafe?
Аноним 02/12/22 Птн 20:06:58 #546 №2529129 
>>2529122
Есть класс Unsafe. У него методы
Аноним 02/12/22 Птн 20:19:20 #547 №2529140 
>>2529122
ну или MemoryMarshal
Аноним 02/12/22 Птн 21:20:07 #548 №2529213 
Анонче, понимаю что вопрос немного мимо темы, но есть вот такой скрипт

https://pastebin.com/haXzXVRQ

и такое ТЗ:
скрипт должен находить все случаи логина пользователей в домене АD c 12:00 до 00:00 часов

Сам я в PS не але, шарящий анон подскажи - верен ли он и сможет ли найти ВСЕ случаи или только по последнему логону работает? НУ и если второе - то в какую сторону исправлять.
Аноним 02/12/22 Птн 23:02:24 #549 №2529278 
>>2529046
ээ ну ты без оскорблений плс я в основном форычей или линками гоняю где могу
просто мне ютуб подкинул видос где мужик распинался как распиздато этот Span обгоняет for и я тут такой ну нихуя себе я вообще не знал даже что так можно
Аноним 03/12/22 Суб 08:10:33 #550 №2529402 
Почему вы решили изучать сишарп, а не джаву?
Аноним 03/12/22 Суб 09:35:59 #551 №2529428 
В целом, в C# всё нормально, у него есть полная кросс-платформенность и быстрый деплой и компиляция. По моему мнение, в сравнении с С/С++/Ёж, это идеальный язык для кроссплатформенного написления приложений. Плюс он переходит под крыло OpenSource.
Аноним 03/12/22 Суб 09:36:28 #552 №2529429 
>>2529428
Ещё про С# - очень хорошая и быстрая реализация GC и очень хорошая реализация бинарных интерфейсов. Не так хорошо как, например, в фейдже, но тоже очень хорошо. У C# очень хороший и отлаженный драйвер С/С++. Весь его компилятор написан именно на С/С++.
Аноним 03/12/22 Суб 09:36:39 #553 №2529430 
С# это божий язык, который в вебе, в чатиках, в десктопе и в мобилке. Он не боится флепов и кроссплатформенности, он просто над ними нешучно ржал еще 10 лет назад!
Аноним 03/12/22 Суб 09:37:14 #554 №2529431 
>>2529402
Я учу сишарп для того, чтобы делать крутые приложения в экосистеме майков. Это даёт мне кайф - я не люблю разрабатывать на других платформах. Я не учу сишарп для того, чтобы устроится на работу, так как работа - это не для меня.
Аноним 03/12/22 Суб 09:37:52 #555 №2529432 
>>2529122
Создать структуру, заполнить её данными и отдать в метод Struct.Copy();
Аноним 03/12/22 Суб 09:38:16 #556 №2529433 
>>2529122
Я знаю только один вариант, а именно: инициализировать структуру-цель и после этого скопировать его в нее при помощи System.Buffer.BlockCopy. А так я не люблю не-уфсейновые варианты, потому что они не безопасны и очень медленные.
Аноним 03/12/22 Суб 09:39:49 #557 №2529435 
>>2528621
Я сам ручками пишу миграции. На этот счёт у меня есть своё мнение. Я считаю, что миграции надо писать ручками, потому что миграции от мейкера - это однозначно миграции, которые в любом случае надо будет дорабатывать. Проще просто по старинке писать миграции руками, чем дорабатывать мейкерские миграции, чтобы они были не тухлыми.
Аноним 03/12/22 Суб 09:46:37 #558 №2529437 
ПЕРЕКАТ >>2529436 (OP)
ПЕРЕКАТ >>2529436 (OP)
ПЕРЕКАТ >>2529436 (OP)
ПЕРЕКАТ >>2529436 (OP)
Аноним 03/12/22 Суб 11:53:29 #559 №2529528 
>>2529437
Не легитимный перекат! Остаёмся в этом треде
Аноним 03/12/22 Суб 14:12:19 #560 №2529695 
>>2529433
Потому и придумали
MemoryMarshal.TryRead()
который под капотом использует ref и класс Unsafe, который под капотом использует хз че там за реализация.
Аноним 03/12/22 Суб 15:42:42 #561 №2529767 
Оказывается операторы верхнего уровня добавили ещё в 9 шарпе, а в дотнет 6, который шёл вместе с 10 шарпом, только изменили стартовый шаблоны!
Аноним 03/12/22 Суб 15:45:11 #562 №2529773 
>>2529767
Смутно припоминаю, что ещё год назад были такие шаблоны.
Аноним 03/12/22 Суб 15:48:17 #563 №2529776 
>>2529773
Они настолько быстро всё меняют, что люди не успевают за этими изменениями. Книги отстали уже лет на 10. Тот же Шилдт и Рихтер так и не выпустили новых версий своих книг. А микрософты продолжают клепать новые версии с новым сахаром. Разве они не понимают, что язык засахарится и никто не будет понимать его? Лучше брать пример с джавы и сделать язык более стабильным.
Аноним 03/12/22 Суб 16:09:25 #564 №2529791 
>>2529776
Сахар учится легко, к тому же в MSDN всё описано понятным языком. Хуйня по сравнению с C++, где количество синтаксических фич делает язык сложнее всех популярных языков вместе взятых.
Аноним 03/12/22 Суб 16:18:01 #565 №2529802 
>>2529791
Мне удалось запомнить только стандартный синтаксис. Пишу примерно как на джаве. А все модные сахарные фичи не могу запомнить, а когда вижу в чужом коде, то не понимаю о чём там.
Аноним 03/12/22 Суб 17:15:45 #566 №2529835 
>>2516213
>Metanit лучше всяческих книг!
Нет.
Аноним 03/12/22 Суб 17:17:36 #567 №2529837 
>>2529791
>MSDN
Как там поживается в 2010-х?
Аноним 03/12/22 Суб 17:19:41 #568 №2529840 
>>2529837
О. Еще один школьник
Аноним 03/12/22 Суб 17:22:12 #569 №2529842 
>>2529837
Как сказать MSDN по-зумерски?
Аноним 03/12/22 Суб 17:22:38 #570 №2529843 
>>2529835
Пидора ответ.
Аноним 03/12/22 Суб 17:39:54 #571 №2529853 
>>2529840
>>2529842
MSDN-а не существует уже несколько лет.

>>2529843
Metanit не плох, но это справочник и книги не заменяет.
Аноним 03/12/22 Суб 17:42:23 #572 №2529855 
>>2529853
>MSDN-а не существует уже несколько лет.
А кого это (цензура)
для олдов что мсдн что мсдоки - те же яйца, только в профиль. Ну может заметил что домен изменился - и все.
мсдн это устойчивый термин для офдоки среди тех кто не зумер.
Аноним 03/12/22 Суб 17:45:41 #573 №2529856 
Т.е. MSDN по-зумерски - это мсдоки.
Аноним 03/12/22 Суб 19:28:32 #574 №2529926 
>>2529435
>это однозначно миграции, которые в любом случае надо будет дорабатывать.
Только если код на основе которого они генерятся говно, то тогда конечно надо будет дорабатывать.
Аноним 03/12/22 Суб 19:37:26 #575 №2529936 
>>2529776
>люди не успевают за этими изменениями.
Вкатыши ты хотел сказать. У нормальных людей с пониманием проблем нет.
Аноним 03/12/22 Суб 19:49:12 #576 №2529946 
Можно ли на C# сделать нативную библиотеку, функции которой можно будет вызывать из внешних программ или линковать к коду на нативных языках типа С/С++? Ну то есть надо, чтобы в dll-ке, написанной на шарпе, был стандартный виндовый ентрипоинт, и чтобы её функции можно было бы дергать через _stdcall?

Т.е. написать на шарпе либу, содержащую например, вот такую C++ функцию:
double _stdcall square(double &x) { return x * x; }
И чтобы это могло подключить к себе и скушать всё, что работает с аналогичными сишными либами? 1C, VBA, notepad++, всякие локальные самописные параши и т.п.

Для нет.фреймворка был нугет пакет DllExport, который судя по описанию, позволял это делать. Но для седьмого дотнета реализовать это не получилось, нихрена не работает. А вот на С++ всё работает прекрасно, только я его нихуя не знаю, я не учил его, т.к. верил, что дотнет всемогущ, и на нем можно написать всё что угодно, а оказалось, что нихуя подобного, меня обманули.
Аноним 03/12/22 Суб 20:46:55 #577 №2529998 
>>2529946
Сишарп работает на виртуальной машине, а не компилируется в машинный код, поэтому ограничен в своих возможностях. Серьёзных программ на нём не напишешь.
Аноним 03/12/22 Суб 21:05:30 #578 №2530009 
>>2529946
В пятом дотнете работало, наверное, не обновили пока.
Ещё можно изъёбнуться с декомпиляцией в MSIL и ручным добавлением атрибута экспорта: https://www.codeproject.com/Articles/37675/Simple-Method-of-DLL-Export-without-C-CLI
>>2529998
А ты можешь нахуй сходить вместе со своей шлюхой-мамашей.
Аноним 03/12/22 Суб 21:14:31 #579 №2530016 
>>2529998
>Сишарп работает на виртуальной машине, а не компилируется в машинный код
https://learn.microsoft.com/ru-ru/windows/uwp/dotnet-native/
Аноним 04/12/22 Вск 01:04:28 #580 №2530136 
Есть readonly struct.
Все её методы и свойства можно также пометить как readonly. А можно и не помечать. Что это дает?
Аноним 04/12/22 Вск 07:47:15 #581 №2530247 
>>2530009
Ты Рихтера читал вообще, тупень? Сишарп компилируется в IL-код, который затем выполняется на виртуальной машине CLR. Если на машине нет дотнета, то ты ни одну программу на сишарпе даже не запустишь.
Аноним 04/12/22 Вск 11:31:25 #582 №2530349 
>>2530247
>Если на машине нет дотнета, то ты ни одну программу на сишарпе даже не запустишь.
А вот и нет, тупень.

Приложения .NET можно публиковать в двух разных режимах. Режим влияет на то, как пользователь запускает приложение.

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


https://learn.microsoft.com/ru-ru/dotnet/core/deploying/

>>2529946
https://learn.microsoft.com/ru-ru/cpp/dotnet/native-and-dotnet-interoperability?view=msvc-170
Аноним 04/12/22 Вск 12:17:23 #583 №2530375 
>>2530349
>С++/CLI
Будучи голой дотнет макакой, без знания крестов, системщины, ОС, внутренней структуры бинарников, хер ты что-то сделаешь.
Аноним 04/12/22 Вск 12:17:25 #584 №2530376 
>>2530349
И сколько гигов такой монстр будет весить?
Аноним 04/12/22 Вск 12:25:04 #585 №2530383 
>>2530376
Консольное приложение без всяких GUI и EF будет весить 10-15 Мб.
Аноним 04/12/22 Вск 12:40:56 #586 №2530407 
>>2530375
Чиво блять?

>>2530376
Руки есть? Вот и проверь.
Аноним 04/12/22 Вск 12:50:36 #587 №2530427 
Вот уж чего чего, а этого я в книге о многопоточном программировании встретить не ожидал
> Прежде всего хочу выразить благодарность своему Господу и Спасителю Иисусу Христу. Принятие христианства стало самым важным решением в моей жизни! Если вам понадобится дополнительная информация по этой теме, вы можете связаться со мной на моем сайте http://stephencleary.com/.
Аноним 04/12/22 Вск 16:11:42 #588 №2530609 
>>2530427
Протестанты, сер. Единственные искренно верующие веруны остались.
Аноним 04/12/22 Вск 17:09:42 #589 №2530681 
Устал пилить унылые веб апи, хочу делать настоящие сайты. Посоветуйте годных книг по жсу, желательно где в примерах взаимодействуют с асп нет.
Аноним 05/12/22 Пнд 08:37:38 #590 №2531184 
>>2530247
>выполняется на виртуальной машине CLR
>виртуальная машина
Жабамакака, съеби в страхе из треда.
Аноним 05/12/22 Пнд 10:21:01 #591 №2531224 
>>2529946
Да, используй AOT компиляцию которую полностью доделали в 7 дотнете. Собираешь код в нативную dll без зависимостей от рантайма, ну а дальше дергаешь.
Аноним 05/12/22 Пнд 11:02:01 #592 №2531236 
>>2530136
Это и даёт. Что всё ридонли будет.
Аноним 05/12/22 Пнд 11:34:11 #593 №2531245 
>>2529946
> верил, что дотнет всемогущ, и на нем можно написать всё что угодно, а оказалось, что нихуя подобного, меня обманули
Хаха! Смейтесь над ним!
Аноним 05/12/22 Пнд 11:43:09 #594 №2531250 
>>2531184
>Исполняющая среда для байт-кода - это другое
Верим-верим!
Аноним 05/12/22 Пнд 12:06:22 #595 №2531283 
>>2531184
В дотнете есть виртуальная машина. Проблемы?
Аноним 05/12/22 Пнд 13:02:55 #596 №2531356 
2022-12-0512-57-23.png
2022-12-0512-57-51.png
2022-12-0513-01-34.png
2022-12-0513-01-25.png
Есть дженерик класс, наследуемый от сетки (пикрил 1).
Почему XAML отказывается видеть такой класс? (пикрил 2)
Если дженерик составляющую убрать, то норм (пикрилы 3, 4)

Как вообще люди используют x:TypeArguments, если класса даже не видно?
Аноним 05/12/22 Пнд 13:10:33 #597 №2531368 
В чем сакральный смысл использования var? Почему мы настолько доверяем машине, что позволяем ей самой определять какой тип у нас используется.
Аноним 05/12/22 Пнд 13:10:57 #598 №2531370 
>>2530136
>Все её методы и свойства можно также пометить как readonly. Что это дает?
<петросян>2х баф к защите от записи</петросян>

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

Если у тебя 100% ридонли, то проще структуру пометить. А если 1-9 из 10 ридонли, то помечаешь каждый компонент индивидуально.
Аноним 05/12/22 Пнд 13:18:26 #599 №2531384 
>>2531368
var допустимо использовать только если получаемый тип очевиден и служит только лишь для экономии сил, чтобы не писать вот эту срань
myVerySuperLongClass Value = new myVerySuperLongClass Value;
зачем дважды писать одно и тоже, когда правая часть совершенно конкретна? Тут нет никакого "доверия машине", тут всесовершенно четко и очевидно и не нарушает законы строгой типизации.

Другое дело, когда метод возвращает object и хер пойми что там на самом деле внутри. В этом случае присваивать результат var как минимум тупо.
Аноним 05/12/22 Пнд 13:44:12 #600 №2531413 
2022-12-0513-43-16.png
>>2531356
Ясненько ...
Дженерики напрямую нельзя пихать в XAML — нужно создать класс, который наследует дженерик-класс. Тогда совершенно не ясно предназначение пикриелйтед-хуеты.
Аноним 05/12/22 Пнд 13:50:26 #601 №2531424 
>>2531368
Так иде показывает итоговый тип. А самому его прописывать, когда он может быть весьма длинным, смысла никакого нет, особенно если речь идёт о linq
Аноним 05/12/22 Пнд 15:29:21 #602 №2531579 
>>2531384
>Другое дело, когда метод возвращает object и хер пойми что там на самом деле внутри. В этом случае присваивать результат var как минимум тупо.
Ну вот напишешь ты например PenisType вместо var или object, а у тебя в объекте прилетит VaginaType что делать будешь?
Аноним 05/12/22 Пнд 15:33:34 #603 №2531589 
>>2531368
Бывают ситуации когда похуй на тип в конкретном месте. Например из метода возвращается какой-нибудь IEnumerable и что в нем будет лежать тебе похуй. Тебе нужно будет его просто перебрать и отправить дальше.
Аноним 05/12/22 Пнд 15:38:13 #604 №2531595 
>>2531368
Если не нравится, то можешь делать наоборот.
Вместо:
var instance = new MyClass();
можно использовать:
MyClass instance = new();

Работает то ли с 9-го, то ли с 10-го шарпа.
Аноним 05/12/22 Пнд 15:40:35 #605 №2531596 
>>2531413
все потому что оно все заброшено
есть спека хамл 2009 но ее нельзя использовать в хамл что компилируется в Baml
а без этого x:TypeArguments имеет жесткие ограничения и неюзабелен

в общем старое оно все, увы.

>>2531384
>В этом случае присваивать результат var как минимум тупо.
Это верно для редких случаев вида foreach(var item in древняяколлекция) и тому подобных случаев.
И проблема станет видна сразу же ибо просто дальше код не будет работать

типоопасности никакой. просто проблема чтения - кому то это хорошо ибо сокращает буквы, а кто то не может запомнить или понять что там - что особенно видно если читаешь код на гитхабе и хз че реально на выходе у чего то этакого
Аноним 05/12/22 Пнд 15:44:41 #606 №2531599 
>>2531579
хз как у вас в шарпе, а у нас в бейсике TryCast для таких целей. Переменная в любом случае будет нужного типа, просто там будет Nothing(Null).

Короч юзать var или наш Dim в контексте необязательной типизации аля джава скрипт, на которую намекает анон — это надо постараться. Это надо быть отборным говноделом и обосраться на всех уровнях.
Аноним 05/12/22 Пнд 15:50:18 #607 №2531611 
>>2531599
да нет в шарпе никакой магии. var это "меньше буков" там где компилятор может вывести тип. А если это не древный код со всякими arraylist, то выводит всегда. (ну разве что в Regex еще эта древность есть)

А потому писать везде var - все живы никто не умирает. Ну да, проблема читать не в IDE, но не настолько серьезная - очень много читаю код в браузере и
а) проблема var не пойму что там - 0.1% (по факту у меня не было такого, но допускаю возможность)
б) проблема "блин а в каком неймспейсе этот тип чтобы пойти глянуть его исходник" и начинаешь тупо обыскивать файлы пытаясь по имени угадать - 120%

>быть отборным говноделом и обосраться на всех уровнях.
Если проблемы нет, то ее можно придумать
Аноним 05/12/22 Пнд 17:09:47 #608 №2531704 
Стикер
Как же я задолбался удалять .vs в проектах WPF Core

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

Я не помню, чтобы такое было на NetFramework. Либо студию косоебит от множества проектов в решении, чего я раньше не делал.
Аноним 05/12/22 Пнд 18:23:41 #609 №2531818 
изображение.png
Читаю ef core в действии. В примере к 4 главе, посвященной взаимодействию бизнес логики с бд он вместо одного простого сервиса и репозитория какого-нибудь нагородил кучу классов (пик) и я в итоге не могу во всём этом разобраться. Неужели в реальных проектах все так сложно?
Аноним 05/12/22 Пнд 18:44:49 #610 №2531858 
>>2531818
Если хочешь масштабируемости, то приходится городить даже в малых проектах.
Аноним 05/12/22 Пнд 19:35:44 #611 №2531942 
Почему не могут ломануть Rider? Там слишком крутая защита стоит?
Аноним 05/12/22 Пнд 19:40:23 #612 №2531951 
>>2531942
Всё давно взломано.
Аноним 05/12/22 Пнд 20:29:35 #613 №2532002 
>>2531951
Ничего там не взломано. Работает пару дней, а потом снова требует активацию. Ждёшь, когда новый кряк выкатят.
Аноним 05/12/22 Пнд 20:54:00 #614 №2532032 
>>2532002
использую визуал студию. она лучше
Аноним 05/12/22 Пнд 20:59:21 #615 №2532033 
>>2532032
Там надо самому файлы сохранять и ещё райдер красивше.
Аноним 06/12/22 Втр 02:47:34 #616 №2532376 
>>2532033
>Там надо самому файлы сохранять
так это фича
Аноним 06/12/22 Втр 04:03:59 #617 №2532395 
>>2532002
Ничего он не требует. Спокойно взломал и пользуюсь уже месяц.
Аноним 06/12/22 Втр 04:21:53 #618 №2532397 
>>2532395
в этом и суть. ты всё взломал и ему ничего не досталось.
Аноним 06/12/22 Втр 08:39:40 #619 №2532458 
>>2532395
Скорей всего у тебя старая версия, которая не поддерживает дотнет 7.
Аноним 06/12/22 Втр 09:05:12 #620 №2532467 
>>2532458
Я подожду 10 дотнета, обновлюсь сразу до него.
Аноним 06/12/22 Втр 09:24:36 #621 №2532476 
>>2532467
Дак замаешься учить нововведения. Различий будет столько, что считай как по новой придётся учить.
Аноним 06/12/22 Втр 10:16:46 #622 №2532499 
>>2532476
Братиш, я не зумер с клиповым мышлением. Мне не составит труда изучить новый фреймворк с нуля.
Аноним 06/12/22 Втр 10:22:41 #623 №2532501 
>>2532499
С возрастом тяжелее изучать новое. Я вот тоже раньше за пару дней осваивал новые языки, а сейчас сижу как тупка.
Аноним 06/12/22 Втр 10:44:09 #624 №2532507 
>>2532501
Ну так встань. Пробздись. В том числе ментально.
Аноним 06/12/22 Втр 17:27:54 #625 №2532906 
Что я ненавижу в .NET
https://youtu.be/UWMfDSDffi0

Мне кажется Фленов изобрёл Thymeleaf из Java
C# хэш сумма Аноним 06/12/22 Втр 17:31:10 #626 №2532912 
Здравствуйте, подскажите, пожалуйста как реализовать проверку, при нажатии на кнопку, хэш суммы SHA-1 у файла, заранее зная правильную сумму SHA-1 string hashsumfile = "12345" ?
Аноним 06/12/22 Втр 17:34:49 #627 №2532918 
Capture.JPG
шарпаны, допустимо ли использовать интерфейсы как в пикрелейтед чисто для разграничения доступа если за этими интерфейсами только один реальный класс стоит и других больше не будет?
Аноним 06/12/22 Втр 17:54:03 #628 №2532952 
>>2532906
Попробуй сделать SPA на Thymeleaf не получится и сравни с возможности Blazor.
Аноним 06/12/22 Втр 17:54:06 #629 №2532953 
>>2532918
буква I в SOLID
Аноним 06/12/22 Втр 18:27:30 #630 №2533005 
>>2532906
Нах нужны razor pages?
Аноним 06/12/22 Втр 18:57:05 #631 №2533043 
Что делает ключевое слово await?
Аноним 06/12/22 Втр 19:10:40 #632 №2533058 
>>2533043
Возвращает управление вызывающей функции до тех пор пока ожидаемая функция не завершит работу.
Аноним 06/12/22 Втр 19:11:51 #633 №2533062 
>>2533058
Ты путаешь с yield
Аноним 06/12/22 Втр 19:22:32 #634 №2533077 
>>2533062
Нет.
Аноним 06/12/22 Втр 19:24:50 #635 №2533079 
>>2533077
Да. Await творит другую магию
Аноним 06/12/22 Втр 19:33:40 #636 №2533094 
>>2532953
т.е. норм?
Аноним 06/12/22 Втр 19:46:14 #637 №2533110 
>>2533079
Какую?
Аноним 06/12/22 Втр 20:24:20 #638 №2533142 
>>2533110
является сахаром
указывает компилятору где разбивать метод на продолжения.
1
await
2
await
3
Логически эквивалентно цепочке тасков
1.ContinueWith(2).ContinueWith(3)
где, как известно, каждое продолжение планируется на выполнение после окончания предыдущего

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

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

Никакого "Возвращает управление вызывающей функции" не происходит, а происходит "планирование продолжения (обычно в тредпуле)" тем самым освобождая текущий поток и если вызывающему методу плевать на ожидание (у него нет await или GetAwaiter().GetResult()), то это воспринимается как "вернул управление"
Аноним 06/12/22 Втр 20:47:52 #639 №2533158 
>>2530427
А ты попробуй писать многопоток без веры
Чокнешься
Аноним 06/12/22 Втр 21:11:09 #640 №2533163 
>>2532918
Да.
sage[mailto:sage] Аноним 06/12/22 Втр 21:14:19 #641 №2533165 
>>2533158
Конечно чокнешься, писать на петушарпе.
Аноним 06/12/22 Втр 21:17:24 #642 №2533168 
Жабадебилы обезумели, сумеешь ли ты совладать с ними? >>2533165
sage[mailto:sage] Аноним 06/12/22 Втр 21:18:22 #643 №2533169 
>>2533168
Мгновенный подрыв жопы петушарпера.
Аноним 06/12/22 Втр 21:19:07 #644 №2533170 
>>2532906
Я уже давно, для себя (внутре), все то, что в .net относится к фронтовой части, не считаю частью .net-а. Вся вот эта хуета типа xaml-а в wpf-е, вьюхи в MVC и т.д. и прочее вот это все.
Благословен будь Core который позволил полностью отдать все эти головняки фронтендерам и забыть про них. Я уже давно не вылезал за пределы api и мне охуеть как комфортно. Чего и вам советую.
Аноним 06/12/22 Втр 21:20:00 #645 №2533171 
.png
>>2533169
sage[mailto:sage] Аноним 06/12/22 Втр 21:20:52 #646 №2533173 
>>2533171
Петушарпер совсем отупел и кидает хуйню вообще невпопад. К чему ты это высрал?
Аноним 06/12/22 Втр 21:55:39 #647 №2533202 
image
image
Выбираю книгу по asp.net core для новичка, на русском. Какую из этих двух посоветовали бы? Первая вроде более профессиональная, а вторая скорее для новичков.
Аноним 07/12/22 Срд 08:03:33 #648 №2533472 
>>2533202
Первой нет в свободном доступе, а так она получше будет.
Аноним 07/12/22 Срд 10:06:02 #649 №2533517 
>>2530427
Программирование подобно сотворению миров. Неудивительно, что после того, как ты создашь десяток таких, ты сложишь 2+2 и уверуешь в Аллаха.
Аноним 07/12/22 Срд 11:27:44 #650 №2533586 
2022-12-0711-26-04.png
Как сделать депенденси проперти для кастомного элемента так, чтобы он принимал множество элементов через XAML? К примеру как свойство Children у грида или стакпанели.

Пробовал поставить тип UIElementColelction, но депенденси проперти регистрирует уж точно не коллекцию.
Аноним 07/12/22 Срд 16:41:26 #651 №2533944 
я правильно понимаю что если попытаться сериализировать джсоном byte[] то это очень сильно увеличит размеры и ухудшит производительность?
Аноним 07/12/22 Срд 17:50:47 #652 №2534056 
>>2533944
текстовый формат всегда проигрывает бинарному хотя бы тем что требует быть текстовым, то есть ограничен диапазоном символов.
Аноним 07/12/22 Срд 18:56:27 #653 №2534204 
>>2533944
"сериализировать джсоном byte[]"
Двести.
Аноним 07/12/22 Срд 19:39:18 #654 №2534278 
Оказывается, микрософт предложили способ разработки под линукс в виде образа виртуальной машины с шин11 и вижлой на борту:
https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/
Аноним 07/12/22 Срд 19:47:09 #655 №2534290 
>>2534278
Какой костыль. А хуле им ещё делать, если у них 100500 гуёвых либ для крестов и шарпа, но ни одна из них не поддерживает линупс?
Аноним 07/12/22 Срд 21:53:17 #656 №2534437 
Подскажите пожалуйста, я хочу сделать небольшую программу для винды. Какую технологию для графического интерфейса взять?
Windows forms - устаревшее, не модное, не поддерживает крутые ускорения
Wpf - сложное, требует большого усилия для вката, обязательно нужны какие-то библиотеке mvvm хуеввм по губе
Браузер, электрон подобная хуйня - 100 мб в лучшем случае, пиздец

Что делать, как быть?
Аноним 07/12/22 Срд 21:59:59 #657 №2534442 
Мля как сложно, хуле так много всего? Как это вообще в башке удержать!?

мимо php
Аноним 07/12/22 Срд 22:06:11 #658 №2534447 
>>2534437
Если хочешь, чтобы это пригодилось тебе в будущем, то делай ап на .net core + простой фронт в том же ангуляре.
Если делаешь прост для себя лишь бы работало - хуярь в консоли.
Wpf и формсы это говно мамонта, не стоит на это тратить своё время.
Аноним 07/12/22 Срд 22:24:35 #659 №2534460 
>>2534447
>.net core + простой фронт в том же ангуляре.
На нем можно делать небо и аллаха? Или это будет работать онли через браузер?
Аноним 07/12/22 Срд 22:25:37 #660 №2534463 
>>2533586
Бамп вопросом
Аноним 07/12/22 Срд 23:02:32 #661 №2534490 
гп1.mp4
>>2515951 (OP)
Кто-нибудь пробовал разворачивать asp.net приложения в portainer ?
Есть ли у кого-то гайд развернуть хотя бы стандартное web api приложение в контейнере ? Я пробовал делать по гайду https://www.youtube.com/watch?v=tBl422FiEBY&t=882s&ab_channel=DevMentors, но у меня порты не пробрасывались и я не могу в локалхосту обратиться к своим методам.
Короч полная ерунда, есть ли нормальный гайд ?
Аноним 07/12/22 Срд 23:42:28 #662 №2534522 
>>2534437
Бери винформы. Фундаментальная технология, проверенная временем.
Аноним 08/12/22 Чтв 00:01:25 #663 №2534539 
>>2534522
Если нужно тупо вывести органы управления, то да. ВПФ будут только отвлекать, хотя если не юзать мввм всякие, то особо отличий нет.
Аноним 08/12/22 Чтв 00:12:18 #664 №2534544 
>>2534539
Самое то для "небольшой программы для винды", раз других требований нет.
Аноним 08/12/22 Чтв 00:13:21 #665 №2534547 
>>2534437
Формсам ускорения и не нужно. Оно и так быстрее.
Ты хотел сказал про DPI
Ну и в формсах тяжело делать "эээх ляпота"

Впф тяжелее в работе, не совсем нативно выглядит
Но твори что хочу
MVVM это не тяжесть, а спасение от винформсого подхода
Он не усложняет, а облегчает жизнь

Всякие WINUI еще тормознее и в общем то там сразу лучше к мауи

Или на завод
Аноним 08/12/22 Чтв 00:30:52 #666 №2534561 
>>2534544
Я десигнер и для меня винформы слишком пососные, но с другой стороны для меня код как для вас винформы — работает да и хрен с ним.

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

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


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

Иллюзия свободы.
Аноним 08/12/22 Чтв 00:31:14 #667 №2534563 
>>2534547
>>2534561
Аноним 08/12/22 Чтв 00:31:57 #668 №2534564 
LinForms
LPF
ULP
LinUI
MAUI
Аноним 08/12/22 Чтв 00:33:40 #669 №2534568 
>>2534564
Ты бы не перечислял названия, а называл преимущества. Чет мне подсказывает, что это просто набор стилей для UI.
Аноним 08/12/22 Чтв 00:37:10 #670 №2534570 
>>2534563
Ну сколько пишу на впф а ни разу не нужны были дженерики, обжектдаьапровойдеры, routedcommand и бог знает что еще
Аноним 08/12/22 Чтв 01:04:17 #671 №2534599 
>>2534570
Ну у меня есть подозрение, что в момент, когда у меня получается жопа, я делаю что-то не так.

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

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

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




Аноним 08/12/22 Чтв 01:24:00 #672 №2534630 
>>2534599
у меня такой проблемы не возникает потому что это нужно в code-behind, а там обычно пусто или же в атачед, что тоже редкость.

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

Свои контролы где даже DataContext не юзается тоже мимо.

Юзерконтролы общего назначения тоже не живут в вакууме. Тут возможна пара вариантов
1 принимает что то неведомое, то есть контрол типа PropertyGrid, и включает рефлексию вовсю
2 выдает интерфейс, который обязан реализовать поступающий объект DataContext/Item и тому подобное и делается банальный каст

А тотальный MVVM или его части просто лишают необходимости что то там типы объявлять в хамл.
Аноним 08/12/22 Чтв 02:38:35 #673 №2534649 
посоны, а во что заворачивали лист на старых дотнетах если нужно было вызывающему дать доступ по индексу но запретить всякую грязь вроде add clear removeat и т.д.?
Аноним 08/12/22 Чтв 02:42:31 #674 №2534652 
>>2534649
Можно тупо юзать Func<int, T>.
Аноним 08/12/22 Чтв 02:47:46 #675 №2534655 
>>2534652
так я и форычить по нему хочу еще... идея прикольная надо попробовать
Аноним 08/12/22 Чтв 02:52:20 #676 №2534657 
>>2534655
> так я и форычить по нему хочу еще...
Пили тогда новый интерфейс.
Аноним 08/12/22 Чтв 03:15:52 #677 №2534663 
>>2534657
не хотет
вот чего нашел
ReadOnlyCollection<T>
и возвращаю
list.AsReadonly();
Аноним 08/12/22 Чтв 03:24:48 #678 №2534666 
>>2534663
ну это все знают. мы думали ты хотел нечто этакое чтобы ууух
Аноним 08/12/22 Чтв 03:28:33 #679 №2534667 
>>2534666
так я не знал, а теперь знаю. я стал сильнее
Аноним 08/12/22 Чтв 03:33:07 #680 №2534668 
>>2534667
А толку. Чере рефлексию пробьются к твоему списку и нагадят.
Аноним 08/12/22 Чтв 03:48:21 #681 №2534671 
>>2534668
так я же сам себе запрещаю, а не какому-то челу левому.
Аноним 08/12/22 Чтв 06:04:44 #682 №2534695 
Зачем нужен automapper если можно просто написать расширение?
Аноним 08/12/22 Чтв 07:24:08 #683 №2534717 
>>2534447
> на .net core + простой фронт в том же ангуляре.
А как это работать и выглядеть будет, и сложно ли выучить? Просто как страница в браузере, не имеющая ничего общего с интерфейсом системы?
Аноним 08/12/22 Чтв 08:17:14 #684 №2534725 
>>2534695
Чтобы заебаться.
Аноним 08/12/22 Чтв 09:03:15 #685 №2534735 
>>2534717
> А как это работать и выглядеть будет,
Медленно и уродливо. Чтобы было медленно и красиво, надо очень долго ебаться.
> и сложно ли выучить?
Очень сложно. Примерно как с нуля учить шарп, дотнет и WPF.
> Просто как страница в браузере, не имеющая ничего общего с интерфейсом системы?
Да.
Аноним 08/12/22 Чтв 09:56:03 #686 №2534769 
win11dev.jpg
>>2534290
Поставилась! Только написано, что лицензия на 90 дней. А дальше что? Я должен купить винду?
Но тем не менее это самый лучший вариант для линупс-юзеров.
Аноним 08/12/22 Чтв 10:27:52 #687 №2534788 
>>2534769
> А дальше что?
Виртуалбокс с его офсайта. Винда с торрентов. И получаешь бесплатно и навсегда. Но я например вполне разрабатываю свои петы на вс-коде под линуксом. Единственное неудобство - никто до сих пор не сделал (бесплатно) визуальный редактор форм с предпросмотром. Приходится вслепую хуярить хамл, а результат смотреть после dotnet run
Аноним 08/12/22 Чтв 10:29:29 #688 №2534790 
>>2534788
Ах да, стек таков: вс-коде + авалония + плагин авалонии + плагины-автодополняторы хамла.
Аноним 08/12/22 Чтв 11:04:25 #689 №2534803 
>>2515954
>8. Что нужно знать, чтобы взяли работать?
Реально всё перечисленное освоить с нуля за полгода-год до уровня, когда будешь готов к работе джуном в десктоп-разработке?
Аноним 08/12/22 Чтв 11:12:51 #690 №2534813 
>>2534803
Через год надо будет учить новую версию сишарпа и дотнета.
Аноним 08/12/22 Чтв 11:14:03 #691 №2534817 
https://youtu.be/OCFn7f4mBxc

Получается надо было учить джаву, а не сишарп
Аноним 08/12/22 Чтв 11:17:11 #692 №2534820 
>>2534817
Мне нравится дотнет, но жабу учил тупо ради работы.
Аноним 08/12/22 Чтв 11:22:49 #693 №2534826 
>>2534820
А мне нравится джава, но учу сишарп тупо ради работы.
Аноним 08/12/22 Чтв 11:26:18 #694 №2534834 
>>2534813
Бля, ну его нахуй тогда... Пойду двигать кнопочки на JS.

>>2534817
Очевидно же, что зависит от направления, в котором собираешься работать.
Хочешь попердывать над древним кодом и писать тонны доков в каком-нибудь финтехе за огромную ЗП - учишь джаву. Хочешь делать то же самое, но с привкусом спермы и запахом свежести - учишь дотнет. Хочешь в десктоп - учишь дотнет. Хочешь в игры - учишь дотнет/плюсы. Хочешь мобилки - учишь джаву+котлин или свифт. Хочешь в бэк для стартапов - учишь питон или джс. Хочешь во фронт - учишь джс. Хочешь заработать геморрой и шизу к 30 годам - учишь с++/раст. Хочешь пердолиться в жопу - учишь голанг.
Аноним 08/12/22 Чтв 11:41:44 #695 №2534864 
Решил потрогать вашу авалонию, а она какая-то тормознутая. При растягивании окна контент не успевает за ним, и видно черную полосу. В впф такого нет.
Аноним 08/12/22 Чтв 11:46:59 #696 №2534875 
>>2534864
Ну так и линукса в впф нет.
Аноним 08/12/22 Чтв 11:56:40 #697 №2534890 
image.png
>>2534813
Там изменений немного никогда. Добавляются новые фичи в основном. Хватает почитать что нового learn.microsoft и почти наверняка не воспользоваться этим. Если совсем задрот, то можно покупать себе C# in a Nutshell каждый год.
Аноним 08/12/22 Чтв 14:53:10 #698 №2535144 
>>2534790
>авалония
Она кстати живая?
Аноним 08/12/22 Чтв 14:56:06 #699 №2535152 
>>2535144
Живее WTF и MAUI вместе взятых
Аноним 08/12/22 Чтв 15:04:47 #700 №2535168 
>>2535144
Жидбрейнсы на нее некоторые продукты перевели
Аноним 08/12/22 Чтв 15:37:53 #701 №2535213 
>>2535144
живая. и будь у нее нормальные шрифты (сглаживание) - уже перешел бы
Аноним 08/12/22 Чтв 17:51:29 #702 №2535345 
image.png
>>2515951 (OP)
Сапыч, столкнулся с ошибкой при миграции, почему-то ругается что в моем mssql сертификаты паленые, хотя в другом проекте все ок работает и мигрируется, на старом использовал версии EF 6.10 на новом EF 7.0 .Net6, в чем мой косяк
Начал гуглить вопрос, нашел, что фиксить можно только путем отключения шифрования Encrypt, может кто сталкивался с проблемой и есть другие варианты
Аноним 08/12/22 Чтв 21:00:08 #703 №2535641 
изображение.png
изображение.png
изображение.png
Сап, задали лабу. Надо посчитать y для заданного x и сумму прогрессии для n=3 и e=0.001 . Что можно сделать с double, чтобы цикл работал нормально?
Аноним 08/12/22 Чтв 22:14:29 #704 №2535715 
>>2535641
пик 1 - чет страшное
пик 2 - добавим страха в чтении используя однобуквенные названия переменных.
пик 3 - хз, наверное тоже страшна раз представлен

итого
>Что можно сделать с double, чтобы цикл работал нормально?
для начала бы понять что тебе не нравится.
вообще про точность чисел с плавающей точкой все знают, но раз тебе нужен именно double, то хоть бы в общих чертах понять о чем ты толкуешь.
Аноним 08/12/22 Чтв 22:20:19 #705 №2535718 
>>2535715
пременная x double в цикле for увеличивается на 0,07 с каждой итерацией от 0,1 до 0,8. из-за точности double на 3 итерации ломается цикл т.к. итоговое число будет >0.8. Как это обойти.
Аноним 08/12/22 Чтв 22:22:02 #706 №2535720 
>>2535718
увеличивать диапазон до 0,81 уже пробывал, работает. Но есть ли нормальное решение этой проблемы?
Аноним 08/12/22 Чтв 22:28:35 #707 №2535729 
>>2535718
Ну всегда можно округлить до нужной точности
А decimal никак нельзя?
Аноним 08/12/22 Чтв 22:35:36 #708 №2535742 
>>2535715
Спасибо. Буду округлять. Может, decimal попробую.
Аноним 08/12/22 Чтв 22:39:45 #709 №2535749 
image.png
>>2535718
for (double x = 0; x <= b; x = x + a <= b ? x + a : b)

Но вообще лучше такой инкремент выносить в отдельную функцию или экстеншен.
И называй переменные нормально, нехуй байтики экономить.
Аноним 08/12/22 Чтв 22:45:05 #710 №2535752 
>>2535749
У вас за лишнюю собку бьют что ли? Даже если она увеличивает читаемость
Аноним 08/12/22 Чтв 22:48:54 #711 №2535757 
изображение.png
>>2535749
Это оформление лабы пиздец, а говорили что вышка помогает програмистам
Аноним 08/12/22 Чтв 22:54:06 #712 №2535761 
>>2535757
....Помогает писать нечитаемый код
Аноним 09/12/22 Птн 01:00:40 #713 №2535857 
>>2535757
пиздос
Аноним 09/12/22 Птн 07:37:13 #714 №2535966 
изображение.png
Почему майки забили на wpf, про продолжают обновлять винформы?
Аноним 09/12/22 Птн 08:54:25 #715 №2536004 
>>2535966
Потому что поняли, что нормальные люди не хотят программировать на XML.
Аноним 09/12/22 Птн 09:39:27 #716 №2536019 
>>2535213
Они у неё есть. Просто правильно настрой стили для масштабирования. Я читал статью об этом у них в доках, но адрес сейчас могу не нейти.
Аноним 09/12/22 Птн 09:47:02 #717 №2536022 
>>2535213
Вот ишью из гугла, но это не то что я видел ранее, и возможно не так проблема с размазыванием шрифтов https://stackoverflow.com/questions/63448372/avalonia-ui-scaling-issues
Но почитай, вдруг оно.
И еще это решение похоже на костыль.
Аноним 09/12/22 Птн 09:49:15 #718 №2536025 
>>2536004
Юзай Eto.Forms!
Там можно закодить форму на шарпе, да декларативненько (через инициализаторы), да с кодбехайндом на шарпе же (через partial)!
Аноним 09/12/22 Птн 10:11:32 #719 №2536048 
>>2536025
Я сейчас так пишу пет-проекты на винформах с инициализаторами, дизайнером не пользуюсь. Eto.Forms тыкал, нормальная тема, но чуток не хватает документации.
Аноним 09/12/22 Птн 10:15:44 #720 №2536052 
>>2536048
> на винформах с инициализаторами, дизайнером не пользуюсь
И как там? Много костылей приходится преодолевать, чтобы сделать грамотно-адаптивный интерфейс? Или ты не паришься и блокируешь изменение размера окон? А если размер окон заблокирован и интерфейс статичный, то что за доёб к ресайзу авалонии выше?
Ах да, это ж разные аноны. Ну-ну.
Аноним 09/12/22 Птн 10:24:56 #721 №2536058 
>>2536052
> И как там? Много костылей приходится преодолевать, чтобы сделать грамотно-адаптивный интерфейс?
Не много, я один раз написал обёртки с нужными параметрами и везде их использую.
> Или ты не паришься и блокируешь изменение размера окон? А если размер окон заблокирован и интерфейс статичный, то что за доёб к ресайзу авалонии выше?
Хуй знает, что там в авалонии, никогда её не видел. Если там есть проблемы, видимо, есть на то какие-то причины типа кроссплатформенности.
Аноним 09/12/22 Птн 15:02:33 #722 №2536271 
image.png
База от Голованга
Аноним 09/12/22 Птн 15:22:06 #723 №2536293 
>>2536271
Значит, goвноеды надеятся, что шарписты умрут от кринжовых шуток.
Аноним 09/12/22 Птн 15:58:03 #724 №2536338 
>>2535966
Илита использует винФормсы на стероидах - Телерик. Быдло не знает.

Ссу на блейзор/wpf/xaml и другую петушню. За .NET разработчиков, замеченных в использовании данных инструментов, не считаю, это прокаженные.
Аноним 09/12/22 Птн 16:21:55 #725 №2536353 
Зашёл в тред и охуел. 2к22 на дворе, какие нахуй вебформсы, какой нахуй впф, что за пиздец?! Последний раз формсы видел в 2013 на учёбе и в 2015 был легаси проект на девекспресе, с того момента только вариации джавы на фронте, никаких окон, кроме окна браузера. Если вы только вкатываетесь в шарп, то не трожьте десктопные приложения - они мертвы, а если вы почему-то с ними работаете, то срочно уёбывайте оттуда.
Аноним 09/12/22 Птн 16:28:16 #726 №2536356 
>>2536353
Ну не сказал бы, некоторые бизнес-хуйни автоматизировать можно только через десктоп, обычно эта хуйня правда на заводе.
Аноним 09/12/22 Птн 16:28:59 #727 №2536358 
>>2536353
Будем и дальше писать фронт на винформах итт. И что ты сделаешь?
Аноним 09/12/22 Птн 16:29:15 #728 №2536359 
>>2536353
>никаких окон, кроме окна браузера.
Как ты заебал вонять. Тебе сколько раз хуем по голове стучали? Ебаный дегрод.

Ты кроме магазинчиков и порнсайтов поди ничего в жизни не видел. Мервы у него десктопные приложения, охуеть. Любой профессиональный софт на десктопе. ЛЮБОЙ.
Аноним 09/12/22 Птн 16:35:48 #729 №2536362 
>>2536353
>а если вы почему-то с ними работаете
У нас в конторе недавно обновление завезли - переехали все на 4.8 довольные.

Сейчас времена не те, период не тот, чтобы куда-то переходить. А у нас можно пересидеть тяжелые времена. Наш легаси-продукт нужно будет поддерживать и разрабатывать даже в случае ядерной войны. Если что, я не из бСССР.
Аноним 09/12/22 Птн 16:46:19 #730 №2536377 
>>2536338
Держи в курсе
Аноним 09/12/22 Птн 17:19:25 #731 №2536425 
Image 5.png
>>2536019
нет нету. они рисуют на скиашарпе и на выхлопе жопа. смотри пик - там последний это нативный размер текста без указания размера. он такой огромный и проблема видна меньше, но все равно видна.

А так - сравни с заголовком окна.

>>2536353
>десктопные приложения - они мертвы
ну вот и проходи мимо в свои ангулары и не мешай зарабатывать денежку.
Аноним 09/12/22 Птн 17:23:44 #732 №2536434 
>>2536362
>переехали все на 4.8 довольные.
что мешает переехать на 7?
у нас не переезжали на дотнет5 из за wpf некоторых тонкостей пдфных, но на 6 изи.
Аноним 09/12/22 Птн 17:50:37 #733 №2536455 
Почему в сишарпе выбрали такую уродскую конвенцию с PascalCase?
Аноним 09/12/22 Птн 17:53:53 #734 №2536460 
>>2536455
Посмотри историю появления шарпа и поймёшь. Это не просто совпадение.
Аноним 09/12/22 Птн 18:06:39 #735 №2536479 
>>2536455
Что в ней уродского? Наоборот красиво.
Аноним 09/12/22 Птн 18:09:59 #736 №2536483 
Вот типа недавно комит на тему фикса клиртайпа
https://github.com/AvaloniaUI/Avalonia/commit/5e128bc73149c7370640cf7831d227794a0710f9

ну будем посмотреть. ничего ж не компилится даже для посмотреть
но оперативность решения в виде ГОДЫ ЖДАТЬ не радует
Аноним 09/12/22 Птн 18:23:06 #737 №2536509 
1534900497175818404.jpg
1. Как заставить ссаную студию вставлять код в нужное место? Речь идет о случаях авто-реализации интерфейсов или подписок на события, когда студия пытается вставить часть кода в уже написанный код.
Заебала пидорасить код и вставлять не в том месте.

2. Как дать по щам студии, чтобы она не двигала мои вкладки? Дело даже не в том: слева или справа создавать новую вкладку. Речь идет о шурудении уже открытых вкладок. Кто давал ей право это делать? Прочему пятая по счету вкладка перемещается на позицию второй? Проделки домового?
Аноним 09/12/22 Птн 18:24:09 #738 №2536510 
>>2536479
Выглядит громоздко. Кроме того надо прожимать shift постоянно.
Аноним 09/12/22 Птн 18:39:12 #739 №2536527 
Ещё мне не нравится { get; set }. Их прямо везде пихают. Вот только начали писать что-то и сразу get-set. И ладно бы это как-то по уму было сделано, но оно максимально дебильно. Свойство, к которому приписано эти get-set, надо ещё писать приватную переменную, т.е. получается двойной расход памяти: одно на переменную, второй на свойство.
В джаве же всё сделано просто и со вкусом: объявил переменную прописал нужные тебе методы: getName(), setName(), где Name - имя переменной. Многие ИДЕ сами их генерируют, так что много кода писать не потребуется. Само собой и нет двойного расхода памяти, потому что методы его не тратят.
Аноним 09/12/22 Птн 18:45:39 #740 №2536535 
>>2536527
>Многие ИДЕ сами их генерируют, так что много кода писать не потребуется
но на выходе все равно получается много кода, а разница...
>объявил переменную прописал нужные тебе методы: getName(), setName(), где Name - имя переменной.
ровно ТАКОЕ ЖЕ сгенерит тебе компилятор вместо { get; set }
>т.е. получается двойной расход памяти: одно на переменную, второй на свойство.
нет не получается. тут с жавой 1 в 1 - разница лишь в том КТО генерит методы getName(), setName() - редактор или компилятор (на то он и сахар)
Аноним 09/12/22 Птн 18:46:09 #741 №2536537 
>>2536527
С автосвойствами дополнительные приватные переменные нахуй не нужны. Они нужны только пидорам, пишущих в свойствах логику
Аноним 09/12/22 Птн 18:48:32 #742 №2536542 
А модификаторы доступа? Если в джаве есть 4 простых модификатора, которые укладываются в простую табличку и ты всегда чётко понимаешь уровень доступа каждого поля или класса.
А что в сишарпе? Просто какой-то зоопарк модификаторов доступа. И такие и сякие. И голову можно сломать, чтобы понять где доступен этот класс, а где нет. И наверняка в будущем они ещё навалят модификаторов побольше, чтобы язык окончательно привратился в помойку. Уже даже опытные программисты, которые начинали с ранних версий, с ужасом смотрят на захламление синтаксиса.

Мне это почему-то напоминает права доступа к файлам в юниксах/линуксах и винде. Если у первых простой битовый массив, то в винде это какой-то ад: всякие изменить, но не удалить, изменить, но удалить, запустить, но не читать и прочий бред.
Аноним 09/12/22 Птн 18:49:11 #743 №2536543 
>>2536537
>Они нужны только пидорам, пишущих в свойствах логику
без логики в свойствах само понятие свойство нахер никому и не нужно было бы. Сам функционал "свойство" и рожден именно для написания логики

Ваш КЭП
Аноним 09/12/22 Птн 18:50:48 #744 №2536545 
>>2536542
>Если в джаве есть 4 простых модификатора
а в линуксе есть права доступа вида rwx, которые
>в простую табличку и ты всегда чётко понимаешь

беда только в том, что если бы их хватало, то не родились бы сверху всякие ACL и другие средства

И лучше иметь больше средств контроля доступа, чем меньше
Аноним 09/12/22 Птн 19:01:17 #745 №2536568 
Image 6.png
>>2536527
вот чтобы ты понял
Аноним 09/12/22 Птн 19:49:03 #746 №2536645 
doubleInt.jpg
>>2536568
А я говорю, что под класс Foo будет выделяться не 4 байта, а 8 байт памяти из-за свойства. Потому, что микрософты не предусмотрели возможность манипулирования скрытой переменной Bar и приходится заводить новую _bar.
Аноним 09/12/22 Птн 19:54:01 #747 №2536649 
>>2536645
А ты представь, что скрытой переменной нет.
Аноним 09/12/22 Птн 20:22:44 #748 №2536681 
Ещё мне не нравится, что они сделали ссылочные типы, не допускающие null. Теперь надо везде писать этот уродский ? рядом с каждым типом, чтобы можно было присваивать null. Вот с какой целью эта дичь была сделана?Сама идея ссылки и была в том, что у неё либо null, либо конкретное значение, полученное через new.
И ведь микрософтам ещё хватает наглости писать об этом с гордостью, что они сделали какой-то полезный вклад в развитие языка.
Рихтер наверно после этого, если и собирался писать новую книгу, то теперь точно не напишет, потому что шарп свернул не туда.
Да и вообще после 5 версии шарпа язык пошёл под откос. Его и дальше будут накачивать бредовыми изменениями. Скоро он превратится в Perl с его обилием сложночитаемых закорючек.
Аноним 09/12/22 Птн 21:07:00 #749 №2536728 
>>2536645
а я говорю что разницы между java с ее сеттерами на уровне кода и шарпом с его сеттерами на уровне скомпиленного кода - просто нет

и твой пик НИЧЕМ не отличается от моего ни по памяти ни по реализации. Это ОДНО И ТО ЖЕ.

>>2536681
выключи фичу и всего делов. это ж не котлин где это на уровне компилятора. тут это просто предупреждения
> потому что шарп свернул не туда.
шарп свернул как раз туда. разве что поздно это начал. гугли "Ошибка на миллиард долларов"
.
Аноним 09/12/22 Птн 21:12:49 #750 №2536737 
>>2536681
не туда он свернул во многом при рождении
- нулл безопасность
- нет замороженных типов нормальных
- нет val
- неудачная реализация событий
- похерили контрактное программирование
- жирный обосрамс с IReadOnlyList
- new new new
- имя конструктора должно иметь имя класса
- ConfigureAwait(true).
- нет инлайн методов
и другое "бррр аж трисет"
Аноним 09/12/22 Птн 21:38:06 #751 №2536783 
>>2536509
Бамп
Аноним 09/12/22 Птн 21:49:34 #752 №2536797 
>>2536783
Мы, решарписты, не знаем о чем твоя первая проблема
И вторая тоже хз о чем ты
Аноним 09/12/22 Птн 23:01:02 #753 №2536880 
>>2536356
>бизнес
>на заводе
Сам то понял, что сказал? Твоим главным бизнес-заказчиком на заводе будет тётя Срака, которой нужно вести учет чушек на складе.
Аноним 09/12/22 Птн 23:02:55 #754 №2536882 
>>2536359
>Любой профессиональный софт на десктопе
Для разработки профессионального софта нужно обладать нужными знаниями. Вкатунам туда вход закрыт.
Аноним 09/12/22 Птн 23:05:42 #755 №2536885 
>>2536510
>Кроме того надо прожимать shift постоянно.
Да ну, а в snake_case типа не надо?
Аноним 09/12/22 Птн 23:15:21 #756 №2536894 
image.png
>>2536509
1. А с каких хренов она должна знать в каком месте этот метод стоять должен. Да и не похуй ли по большому счету.

2. Вкладки можно фиксировать.
На пике.
Первая - зафиксирована, всегда будет открыта и находится по отношению к другим зафиксированным вкладкам там где она размещена.
Вторая открыта и не зафиксирована, всегда будет находится после зафиксированных вкладок и может менять позицию туда-сюда.
Третья временно открытая. Пока ты с ней работаешь, но студия закроет ее при первой возможности (например при добавлении новых вкладок)
Аноним 09/12/22 Птн 23:21:27 #757 №2536897 
image.png
>>2536542
>Просто какой-то зоопарк модификаторов доступа.
Ужас какой, целых 6 штук. И то базовых всего 4 (как в джаве, сюрприз), а остальные их комбинации. Это ж пиздец как сложно запомнить-то. Может программирование это не твое, если у тебя с памятью такие проблемы.
Вот тебе простая шпаргалка, может поможет.
Аноним 09/12/22 Птн 23:56:21 #758 №2536913 
>>2536894
>1. А с каких хренов она должна знать в каком месте этот метод стоять должен. Да и не похуй ли по большому счету.
Немного бесит. Вообще непонятен алгоритм вставки.

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

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

2. Вкладки можно фиксировать.
Это да, но задолбаешься их фиксировать и откреплять. Тут я тоже не понимаю логики зачем вкладки вообще перемещать нужно.
Аноним 09/12/22 Птн 23:59:34 #759 №2536915 
>>2536913
>Я прост любитель все разбивать на регионы, и у меня нет такого, что сначала идет список приватных свойств, потом публичных, потом методов, потом событий.
это не студия издевается над тобой, это ты издеваешсья над студией.
Аноним 10/12/22 Суб 08:40:58 #760 №2537044 
>>2536913
>Тут я тоже не понимаю логики зачем вкладки вообще перемещать нужно.
Иногда бывает когда над слишком говнокодистым проектом работаешь приходится открывать пучок вкладок и туда сюда их тасовать, чтобы хоть как-то это в голове уместить.
А вообще советую для студии экстеншен Workspace Manager, позволяет сохранять наборы вкладок и потом быстро их загружать. Очень спасает на работе, когда приходится переключаться между разными тасками туда-сюда.
Аноним 10/12/22 Суб 08:41:06 #761 №2537045 
>>2536885
Самый оптимальный стиль в джаве. Примитивные (значимые) типы с маленькой буквы, а все ссылочные - с большой. Методы с маленькой.
Аноним 10/12/22 Суб 08:45:33 #762 №2537046 
>>2536913
>Я прост любитель все разбивать на регионы
Я тоже раньше любил кучу регионов плодить. Сейчас отвык от этого. Наверное научился писать код так, чтобы он был сразу понятен. Максимум, что сейчас делаю, блок конструкторов (если их несколько) или приватных методов в регион оборачиваю.
Аноним 10/12/22 Суб 08:49:01 #763 №2537047 
>>2537045
Те же яйца только в профиль. Тот же CamelCase, только кое-где местами upper с lower поменяли.
А вот скобки в джаве по уебански расставляются.
Аноним 10/12/22 Суб 08:53:58 #764 №2537049 
>>2537047
Вот в джаве смотришь на тип String и сразу понимаешь, что это ссылочный тип. А какой тип string в сишарпе?
Аноним 10/12/22 Суб 09:31:32 #765 №2537071 
>>2537049
Ссылочный, но со своими особенностями.
Аноним 10/12/22 Суб 10:29:17 #766 №2537098 
>>2536897
А потом ещё надо выучить кучу модификаторов для аргументов методов. Всякие out, ref, in, params. Многие даже опытные сишарперы их не знают, потому что в каждой новой версии накидывают ещё. И ладно бы был от них какой-то прок, дак это просто сахар ради сахара. Они абсолютно бесполезны. К тому же, касательно in ещё и сами имена подобраны тупо. Гораздо логичнее было бы использовать const, что отражало бы смысл модификатора, но нет, будет in.
Аноним 10/12/22 Суб 11:05:37 #767 №2537124 
>>2537098
>out, ref, in,
Безопасная работа с памятью


> params.
Передача неопределенного количества аргументов без создания массива.
Аноним 10/12/22 Суб 11:22:17 #768 №2537132 
>>2537124
А вот в джаве вместо params используется более изящное решение - троеточие. Оно не занимает лишние ключевое слово и выглядит лучше в коде.

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

К тому же названия в шарпе выбираются крайне неудачно. Чего стоит Enumerator, который больше ассоциируется с перечислениями Enum, а не с итераторами.
Аноним 10/12/22 Суб 12:12:11 #769 №2537157 
Может я чего-то не понимаю, но какого хуя у меня gethashcode() выдаёт у файла и копии разный хэш, более того у ОДНОГО И ТОГО ЖЕ файла разный выдаёт. Я чего-то не понимаю? Для чего это хуйня нужна тогда?
Аноним 10/12/22 Суб 13:13:09 #770 №2537206 
>>2537157
Потому что gethashcode не имеет отношения к хэшу самого файла.
Аноним 10/12/22 Суб 13:14:47 #771 №2537207 
>>2537044
Хорошая тема, правда глючная слегка. Надо удалять .vs, чтобы завелось.

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

С другой стороны, можно отредактировать пресет не переключаясь на него — панель компактнее.
Аноним 10/12/22 Суб 13:31:27 #772 №2537226 
>>2537124
Ладно, ладно. Мы уже поняли, что для джавистов разобраться в четырех терминах непосильная задача.
Аноним 10/12/22 Суб 13:34:08 #773 №2537232 
>>2537226
Простота джавы - это преимущество, а не недостаток
Аноним 10/12/22 Суб 13:35:16 #774 №2537236 
>>2537207
>Хорошая тема, правда глючная слегка. Надо удалять .vs, чтобы завелось
Я х.з. у меня без этого работает. Там просто в каталоге с солюшеном создается файл в котором пресеты закладок хранятся и все. Его можно по желанию в .gitignore занести, на сам проект он никак не влияет.
Аноним 10/12/22 Суб 13:40:36 #775 №2537244 
>>2537045
>Самый оптимальный стиль в джаве.
Знаете почему вы будете спорить бесконечно над тем, что оптимальнее? Потому что ваша хуйня решает только 5% проблем.
Есть ворох сущностей, которые тоже надо бы как-то обозначить, но у вас есть только UpCase да нижний прочерк.

Раньше читал про правило, что массивы нужно обозначать с большой буквы, а все остальные с малой. Потом узнал, что надо все, что объявляется локально в методе, писать с малой, а все что снаружи — с большой. Потом узнал, что все что приватное в классе с малой, а все что публичное - с большой.

А щас наблюдаю еще один шизопостулат, который (будем объективны) не решает ничего — все равно что пердежом двигать Эверест. Эти обзначения играли роль во времена, когда твой редактор кода был скудным по функционалу. Тогда и функции ПИСАЛИ_КАПСОМ, чтобы хоть как-то отличить. Сейчас студия тебе и всё раскрасит, и подпишет, и даже иконку подставит. Не занимайтесь хуйней.

Единственное, что хуево в шарпе, это визуально одинаковая реализация интерфейса и наследование от класса. Даже конвертер с C# в VB косоебит на этом моменте. А вот наоборот конвертируется замечательно, потому что реализация интерфейсов помечаются как Implements, а наследование как Inherits.

Да и вообще C# очень хуев для автоматической конвертации (что примечательно). Например конвертер не может отличить подписку на событие от простого инкремента, в то время как в бейсике для событий есть ключевые слова AddHandler и RemoveHandler.
В C# одно сочетание символов может содержать миллион контекстов.
Аноним 10/12/22 Суб 13:41:34 #776 №2537245 
>>2536425
че по сотыгам на десктопе? Думаю, переходить ли в веб или не
Аноним 10/12/22 Суб 14:01:08 #777 №2537263 
>>2537236
Что как бы намекает, что микрописечка не такая уж и микро и за каким-то хером лезет в другие части проекта. Вот аналогичная проблема
https://developercommunity.visualstudio.com/t/workspace-is-not-saved-anymore/251422

Вот поэтому я не доверяю всем этим плагинам в свободном доступе.
Аноним 10/12/22 Суб 14:03:50 #778 №2537267 
>>2537263
Особенно проиграл, что это не посчитали проблемой, если пользователь ее устранил.
Аноним 10/12/22 Суб 14:10:22 #779 №2537272 
>>2537263
>>2537267
Видимо какая-то херня для синхронизации, чтобы не бекапить один и тот же файл многократно.
Аноним 10/12/22 Суб 14:18:29 #780 №2537276 
>>2537132
>программисты уже могли использовать их для написания программ в ранних версиях
И студия автоматически добавит к ним символ @, чтобы отличить их от ключевого слова.
Озвученной проблемы нет.
Аноним 10/12/22 Суб 14:22:31 #781 №2537279 
>>2531818
Я делаю примерно так же.
Сеньеры-помидоры - рофлят с меня, делают 1 класс 5к строк и идут смотреть ютуб, пока я как дебил - хуйней страдаю, еще и пишу тесты.

Вот с тестов - горит. Единственный хуй что пишу их((( Типа блядь. Повторяю умные слова про тесты, тестировщики говорят - вот, этот джун дело говорит, заебало нас ваши программулины отлаживать, тестирование всего кроме моего говна - длится по полгода в том числе из-за отсутствия тестов. Нет, сеньеры-помидоры говорят: идите нахуй, не будем тесты писать, а тестировщики за то деньги и получают, хули мы будем тесты писать, пусть они баги ищут.
Короче. Да. Из-за этого хреновая картина: Я по полгода сижу - и жду пока код сеньеров оттестируют, потому что тестов нет, нужно все проверить руками, даже мелочи. А я - хуйней страдаю. А я - кодить хочу, а не хуйней страдать(((
Аноним 10/12/22 Суб 14:26:10 #782 №2537288 
>>2537279
Надо просто на деньги сеньоров набрать еще тестировщиков, раз работа простаивает. Тебе надо применить паттерн Krysa
Аноним 10/12/22 Суб 14:37:53 #783 №2537300 
>>2537288
У нас тестировщики получают так же как сеньеры. Т.е. заменяем одного сеньера - тестировщиком.
Кто разрабатывать будет?

Надо тесты внедрять. Я реально ж вижу, что меньше проблем потом в ходе тестирования. По сути все сводится к тому, чтобы проверить, что то что реализовал - это действительно то что просили.
Аноним 10/12/22 Суб 15:19:11 #784 №2537334 
>>2537272
Вполне возможно. Я просто никогда не сохраняю .vs под контроль версий. Во вторых я никогда не юзаю контроль версий через студию, только непосредственно через сам git. Наверное поэтому и не сталкивался.
Аноним 10/12/22 Суб 15:54:22 #785 №2537365 
2022-12-1015-51-07.png
Глядите, я UserControl переименовал в Grid и у меня теперь доступен xaml дизайнер.

Это действительно класс Grid, или какая-то ересь? Как оно связывается с дизайнером и в каком месте?
Аноним 10/12/22 Суб 16:43:04 #786 №2537427 
>>2537232
и поэтому на мобилах (то есть где нет кровавого энтерпрайза) котлин (с его перегруженностью сложностью, что даже шарп на его фоне бледно выглядит) вовсю вытесняет жаву
Аноним 10/12/22 Суб 16:58:00 #787 №2537436 
>>2537427
Его гугл насильно внедряет, а где свободный выбор языка, там выбирают джаву.
Аноним 10/12/22 Суб 17:01:54 #788 №2537440 
>>2537436
насильно?
а в чем насильность то проявляется?
Аноним 10/12/22 Суб 17:31:21 #789 №2537469 
>>2537365
это наследник класса Grid
реальное имя класса в x:Class

и это xaml, а дизайнер умеет в xaml отображать.
Аноним 10/12/22 Суб 18:17:22 #790 №2537518 
>>2537440
На конференции для разработчиков I/O 2019 Google объявила, что язык программирования Kotlin теперь является предпочтительным языком для разработчиков приложений под Android — новые API и библиотеки Jetpack будут публиковаться сначала на Kotlin.

https://vc.ru/dev/66728-google-obyavila-kotlin-prioritetnym-yazykom-programmirovaniya-dlya-razrabotki-android-prilozheniy
Аноним 10/12/22 Суб 18:33:26 #791 №2537535 
>>2537469
А где происходит эта связка? В проекте тупо лежат два файла, единственная связь которых — одинаковое название класса. Что будет если удалить один из файлов?

Помню, что в винформс был какой-то связующий третий файл.
Аноним 10/12/22 Суб 19:05:34 #792 №2537572 
>>2537518
ок. принимается. упоротый жавист, который привык ковыряться в говне (по твоей ссылке там пример сравнения), может считать попытки остального мира свалить с говна как насилие на бедным жавистом.

>будут публиковаться сначала на Kotlin.
ну так то да. из котлина можно вызывать жава код, а вот из УБОГОЙ жавы вызывать котлин хз как.

Впрочем я все равно останусь при своем мнении что выбирающие котлин выбирают его за его фичи, а не потому что гугл решил. Потому как сам выбрал по причинам "жава говно убогое (особенно на андроид там вообще жопашный), а котлин ня"
Аноним 10/12/22 Суб 19:24:54 #793 №2537598 
Image 7.png
>>2537535
ну вот ты создаешь юзер контрол MyUserControl в студии
и у тебя 2 файла - MyUserControl.xaml и MyUserControl.xaml.cs

То, что они связываются в дереве файлов проекта - просто фича студии по конвенции (и даже какие то расширения есть)

Посмотри на сами файлы. По факту эти 2 файла описывают один partial класс разным языком. (смотри пик)

xaml не является чистым языком разметки как хтмл.
Он описывает код декларативно.
Он описывает тот же класс просто другими средствами
(правда это компилится не в шарп код(IL), а в baml не потому что не может, а по другим причинам)
Но если бы компилился в код, то было бы примерно то, что генерит винформс дизайнер.

Если ты в хамле UserControl поменяешь на Grid то получишь ошибку
Error (active)CS0263 Partial declarations of 'MyUserControl' must not specify different base classes

Если ты удалишь один из файлов, то будет тот же эффект что с обычным partial файлом - если в нем осталось что-то из удаленной части, то не скомпилит. Например если ты удалишь хамл файл, то в xaml.cs будет ругаться на недоступный InitializeComponent();, который был как раз в хамловой части описания класса.
Аноним 10/12/22 Суб 19:42:36 #794 №2537611 
>>2537598
>xaml не является чистым языком разметки как хтмл.
>Он описывает код декларативно.
Я понял.

>Если ты в хамле UserControl поменяешь на Grid то получишь ошибку
>Error (active)CS0263 Partial declarations of 'MyUserControl' must not specify different base classes
А, ну у меня бейсик, и у меня по дефолту не показывает partial и базовый класс. Это наверно из-за настроек, как автоскрытие неймспейсов. Соответственно, при смене класса автоматом видать меняется базовый класс во втором файле. У меня ошибки не возникает.
Аноним 10/12/22 Суб 20:33:14 #795 №2537635 
>>2537436
Я правильно понимаю, что гугл насильно заставил 63% разработчиков на котлине любить его? - https://survey.stackoverflow.co/2022/#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages
Джава там вообще внизу списка
Аноним 10/12/22 Суб 20:35:53 #796 №2537638 
>>2537635
В 2к22м все еще находятся долбоебы, верящие в тесты производительности и опросы.
Аноним 10/12/22 Суб 20:59:17 #797 №2537648 
>>2537638
А зачем SO подкручивать опросы?
Аноним 10/12/22 Суб 21:00:50 #798 №2537650 
>>2537638
хотя да. это co
Аноним 10/12/22 Суб 23:38:06 #799 №2537727 
>>2537436
>Его гугл насильно внедряет, а где свободный выбор языка, там выбирают джаву.
Вот сколько не видел джавистов, подавляющее большинство прямо высказывает, что выбрало бы котлин, но приходится жрать джаву, которая их достала.
Аноним 10/12/22 Суб 23:40:18 #800 №2537729 
>>2537598
>пик
Ох как же меня бесят неймспейсы в xaml, я наверное в основном из-за этой хуйни и бросил когда-то пытаться нормально его освоить.
Аноним 11/12/22 Вск 00:18:56 #801 №2537742 
>>2537729
Не знаю как раньше, а сейчас они дописываются автоматом, я даже сходу сам не импортирую ни одного неймспейса.
Намного хуже работа со стилями.
Аноним 11/12/22 Вск 01:17:04 #802 №2537761 
>>2537729
решарпер с этим делом помогает.
без него жить сложно
Аноним 11/12/22 Вск 10:17:55 #803 №2537883 
Как рисовать и выводить звук в сишарпе?
Аноним 11/12/22 Вск 10:38:10 #804 №2537891 
>>2537883
В каком смысле рисовать звук?
Если ты про графику, то она имеет несколько категорий: растровая и векторная. С векторной проще всего в WPF — проще, чем в винформсах и можно даже рисовать по прозрачному окну и без проблем применять трансформации масштабирования, поворота, смещения. Canvas для этого идеально подходит.

В винформсах была ебатория с тем, что если тебе надо изменить фигуру, то нужно сперва ее стереть, чтобы нарисовать новую. В WPF все на автомате.
Собсно сабж: https://metanit.com/sharp/wpf/17.3.php
Для общего ознакомления возможностей WPF https://learn.microsoft.com/en-us/dotnet/desktop/wpf/graphics-multimedia/?view=netframeworkdesktop-4.8

Если ты про растровую графику, то увы, попиксельно можно было рисовать только в старых библиотеках для винформс. Но спрайтами — это пожалуйста, накидываешь текстурку на какой нибудь Rectangle и трансформируешь как тебе хочется.

Выводить звук без запуска проигрывателя тоже можно из коробки, но нужен формат WAV, никаких mp3 и прочей ебулды. Мб с доп либами можно и что-то еще. Гугли System.Media.SoundPlayer
Аноним 11/12/22 Вск 10:43:08 #805 №2537897 
>>2537891
Ну в общем, есть книжка "Седжвик Р., Уэйн К. - Computer Science. Основы программирования на Java, ООП, алгоритмы и структуры данных (Классика computer science)", но там все примеры на джаве. Хотелось бы их применить на сишарпе, но там очень много задач на рисование и даже на вывод звука посредством колебаний с определенной частотой. Буквально читают wav-файлы и генерируют звук средствами джава.
Аноним 11/12/22 Вск 10:58:59 #806 №2537904 
>>2537897
Ну тогда, братишка, тебе нужно разбираться самому и гуглить конкретные шаги из книги. Ну есть там вские генерации меандра (ака Square Wave), типа пищалки, которые записываются в WAV, а потом воспроизводятся.
https://stackoverflow.com/questions/203890/creating-sine-or-square-wave-in-c-sharp

Хер знает что тебе нужно и что ты там задумал. Если какое нибудь MIDI, то это уже отдельный вопрос, но думаю тоже есть либы.
Аноним 11/12/22 Вск 11:15:55 #807 №2537910 
>>2537904
Получается даже здесь джава превосходит сишарп.
Аноним 11/12/22 Вск 11:35:06 #808 №2537919 
>>2537910
Получается, что мать твоя — шлюха. Я догадывался по размытой формулировке вопроса, что это тупой наброс.

Из-за таких мудаков, как ты, другие страдают, потому что вместо ответа на вопрос их сходу кроют хуями.
Аноним 11/12/22 Вск 12:23:42 #809 №2537940 
>>2537919
Сишарп не умеет рисовать и генерировать музыку, а виноват оказался почему-то я.
Аноним 11/12/22 Вск 12:35:41 #810 №2537943 
>>2537940
Ты виноват в том, что пытаешься набросить говно на вентилятор, а я виноват в том, что продолжаю кормить.
Аноним 11/12/22 Вск 12:43:26 #811 №2537949 
>>2537943
Когда я сталкиваюсь с тем, что джава снова оказывается лучше сишарпа, то испытываю тоже бурю эмоций. Сразу вспоминаю флешбеки тех моментов, когда решил начать изучение сишарпа. Иногда хочется вернуться в прошлое и сказать самому себе: постой, лучше учи джаву!
Не удивительно, что многие сталкиваются с теми же проблемами при изучении сишарпа и лишние напоминание об этом вызывает у них гнев в виде оскорбительных сообщений.
Аноним 11/12/22 Вск 13:07:51 #812 №2537966 
Стикер
>>2537949
>Когда я сталкиваюсь с тем, что джава снова оказывается лучше сишарпа
Я больше поверю в то, что ты прикидываешься глупым джавистом, чтобы дискредитировать Джаву. Просто я не могу поверить, что есть настолько глупые люди. Я даже не могу поверить в жирный троллинг от джависта, ибо данный подход подразумевает некий репутационный демадж Джавы как языка, пользователи которого используют фразу "рисовать музыку".

Даже человек, который ни разу не сталкивался с задачей генерации звуков, люто проиграет с тебя, ну и сделает соответствующие выводы о качестве поданной информации в книге Седжвика Р.

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

А пока что ты для меня кажешься каким-то некомпетентным клоуном-ретардом. Только вдумайся: ты отсутствие желания анона вывалить тебе готовый код, хочешь преподнести как отсутствие функционала в шарпе. И кто ты после этого?
Аноним 11/12/22 Вск 13:22:49 #813 №2537974 
Pony.webm
>>2537966
>И кто ты после этого?
Это тупо байт, чтобы ты в порыве чувств защиты чести и достоинства шарпа, метнулся искать необходимую информацию и выложил всё готовое. Понятно, что хуесос привыкший к готовой подборочке задач из книги неспособен на поиск необходимой информации. Я больше чем уверен, что и генерация звуков ему как таковая не нужна, а просто она была в книге.
Аноним 11/12/22 Вск 13:24:24 #814 №2537976 
javadraw.jpg
>>2537966
Ты видимо и читать не умеешь. Я писал: рисовать и выводить звук. Это два разных действия. Ты что ли не рисовал никогда в пеинте? Не пользовался музыкальными проигрывателями?

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

Как это в шарпе - не знаю. Скорей всего шарп так не умеет. Либо это какая-нибудь хитромудрая коyфигурация в xaml, что имеет мало общего с простотой рисования в джаве.
Аноним 11/12/22 Вск 13:28:00 #815 №2537979 
>>2537976
Я не вижу на твоем скрине рисования звука.

Я вижу нарисованный кружочек и полосочку, о чем было рассказано в этом посте >>2537891
Раз ты этот пост прочитал жопой и проигнорировал написанное, то не удивляся потом, что анон посчитал, что ты имеешь ввиду рисование музыки.
Аноним 11/12/22 Вск 13:35:19 #816 №2537983 
>>2537976
>Скорей всего шарп так не умеет.
Ты больной. Зачем ты с такими предубеждениями лезешь в шарп? Ты посчитал, что желаемое невозможно до того, как вообще поискал инфу.
Даже после того, как тебе дали ссылку на референсы, ты это проигнорировал и начал поливать говном.
Аноним 11/12/22 Вск 13:48:00 #817 №2537994 
2022-12-1113-42-52.png
>>2537976
А где на скрине задается закругление концов?
В WPF можно зать форму окончания контура. Типа CapStart и CapEnd, там можно выбрать закругление, прямой конец и прямой конец с прибавлением на толщину контура.

И второй вопрос, а это хуйня работает как отдельный объект? Или оно просто рисует пиксели? Можно точку и линию повернуть на 45 градусов и отмасштабировать в 0,5 раз относительно центра точки?
Аноним 11/12/22 Вск 14:17:17 #818 №2538028 
>>2537976
В джаве нихуя так не делается. В стандартной библиотеке нет класса StdDraw, ты его взял хуй пойим где и подключил к своему проекту. Напиши саои пару строчек без сторонних библиотек и попробуй тогда выебнуться.
Аноним 11/12/22 Вск 15:00:26 #819 №2538103 
>>2538028
Это библиотека для книги, но в основе у неё AWT и Swing. Её можно одинаково применять на любой ОС, потому что они полностью кроссплатформенны, в отличии от фейковой кроссплатформенности дотнет кора.
Аноним 11/12/22 Вск 15:04:26 #820 №2538114 
>>2538103
Прикладывай пример без этой библиотеки или слит.
Аноним 11/12/22 Вск 15:55:07 #821 №2538192 
javadrawawtswing.jpg
>>2538114
Всё работает. Можно даже сделать jar-ник и запустить в линуксе и макоси и всё будет работать без перекомпиляции.
Аноним 11/12/22 Вск 16:06:10 #822 №2538211 
>>2538192
Что, уже не пара строчек? А теперь напиши то же самое на винформах, получится примерно столько же. Вскукарек про кроссплатформенность хуй знает к чему тут вообще, в изначальной постановке вопроса про него ничего не было, так что не надо тут переобуваться. Кому нужна кроссплатформа - тот возьмёт eto.forms или авалонию.
Аноним 11/12/22 Вск 16:08:20 #823 №2538220 
>>2538211
Я не умею на винформах. По ним нет нормальной книги.
Аноним 11/12/22 Вск 17:22:08 #824 №2538316 
2022-12-1117-04-52.png
>>2538211
>А теперь напиши то же самое на винформах, получится примерно столько же.
Что на формсах, что на WPF получается ровно столько же (т.е. первый варинат анона с библиотекой). Ну может на формсах чуточку длиннее, но в WPF гарантирую ровно столько же кода.

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

>>2538220
>Я не умею на винформах
И не надо. Там графику рисовать тупо. Единственное, что там годное — это возможность нарисовать сглаженную кривую по точкам. Т.е. речь идет не о кривых безье, когда указывается 4 точки (это есть и там и там), а когда указывается только две и между ними идет усредненный переход. Так называемые Catmull-Rom кривые.
https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Catmull.E2.80.93Rom_spline
Возможно в WPF есть и такое, но я не нашел.
Аноним 11/12/22 Вск 17:30:29 #825 №2538321 
>>2537883
Для работы со звуком есть NAudio. https://github.com/naudio/NAudio

Как по мне, так это настоящая Silver bullet для работы со звуком. Позволяет не ебаться с различными API.
Аноним 11/12/22 Вск 17:30:37 #826 №2538322 
>>2537949
>Иногда хочется вернуться в прошлое и сказать самому себе: постой, лучше учи джаву!
Так, а что тебе мешает сейчас свичнуться на джаву и съебать нахуй из треда ?
Аноним 11/12/22 Вск 17:30:54 #827 №2538323 
>>2537949
>Иногда хочется вернуться в прошлое и сказать самому себе: постой, лучше учи джаву!
Так, а что тебе мешает сейчас свичнуться на джаву и съебать нахуй из треда ?
Аноним 11/12/22 Вск 17:38:47 #828 №2538331 
>>2538322
>>2538323
Джава учится дольше, чем сишарп. Само собой речь не про язык, а про фреймворки. А мне надо по-быстрому выучить что-то и вкатиться. Если заработаю себе на 2 года гэпчика, то смогу переучиться на джаву. А сейчас уже поздно, деньги почти закончились.
Аноним 11/12/22 Вск 18:08:40 #829 №2538370 
>>2537611
кстати вот пример для понимания. что хамл - язык описания кода в декларативном виде, а не описание разметки. Там и хамл и эквивалентный код.
https://learn.microsoft.com/en-us/dotnet/desktop/wpf/graphics-multimedia/how-to-create-a-composite-shape
Аноним 11/12/22 Вск 18:21:25 #830 №2538382 
>>2538370
Ну да, просто по первой как-то не осознаешь это, особенно когда переходишь с винформсов.
Аноним 11/12/22 Вск 19:20:42 #831 №2538440 
>>2538331
>Джава учится дольше, чем сишарп.
Воу-воу. Притормози. Ты тут всю дорогу внушаешь, что джава лучше и там все проще. Что не надо запоминать кучу модификаторов и т.д. И тут хуяк и все наоборот?
К чему тогда твои стенания на тему того какая джава пиздатая если ты ее даже осилить не можешь?

>Само собой речь не про язык, а про фреймворки.
Гнилой аргумент. Если ты нормально знаешь язык, то вопрос вката в любой фреймворк дело максимум месяца, а часто вообще неделя-две.
Аноним 11/12/22 Вск 19:24:20 #832 №2538447 
>>2538331
Но как же ты собрался выучить быстро сишарп если каждый год злые майкрософт меняют стек до неузнаваемости? У тебя же учебные примеры не скомпилируются!
Аноним 11/12/22 Вск 19:33:17 #833 №2538462 
>>2538440
Фреймворки в джаве отстойные. Там всякие xml-конфигурация, тонны аннотаций. В итоге пишешь не на джаве, а на всё сподряд. Есть даже специальный язык Спринга SpEL.

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

>>2538447
Я нашёл актуальный курс на торрентах по текущей версии. Надеюсь успеть до дотнета 8.
Аноним 11/12/22 Вск 22:15:38 #834 №2538623 
>>2538462
>Скорей наоборот, язык учишь за месяц,
До-о-о. Чел, ты даже модификаторы доступа запомнить не в состоянии. Какое тебе там "язык за месяц".
Аноним 12/12/22 Пнд 00:01:03 #835 №2538669 
в шарпе нельзя интерфейс для статик класса - НЕУДОБНААА
Аноним 12/12/22 Пнд 00:08:09 #836 №2538675 
>>2538669
Удивительно, если хоть в обном языке такое есть. Интерфейсы придумали для ООП, а статик классы - костыль для добавления процедурщины в язык, чтобы не добавлять глобальные функции. Видел интерфейсы в сишке? Вот то-то и оно, нет интерфейсов в процедурщине и быть не может.
Аноним 12/12/22 Пнд 00:20:07 #837 №2538681 
>>2538675
в котлине есть ибо там статик это синглтон объект приатаченный к классу и это реально удобно - можно и интерфейс и расширение сделать не только для инстансов, а еще действуют скоупы видимости этих расширений.

Всего этого в шарпе нельзя и приходится извращаться.
Нет - код то писать можно рабочий, но вот сделать нормально - увы
Аноним 12/12/22 Пнд 00:36:38 #838 №2538685 
>>2538681
Чел, ну как бы статик и синглтон это слегка разные вещи, каждая со своими целями. Ты пытаешься логику одного прицепить на логику другого, а когда не получается выдаешь "плохо сделано, тупо".
Аноним 12/12/22 Пнд 00:40:25 #839 №2538689 
>>2538681
> там статик это синглтон объект приатаченный к классу
То есть никакой это не статик, а тупо синглтон, обычный объект со всеми вытекающими. Под капотом для JVM создаётся обычный класс, и, понятное дело, можно реализовывать какие угодно интерфейсы. Там и функции есть, которые тоже сделаны через неявные классы. Кому-то не нравится, что в шарпе нет подобного сахара, а кому-то не нравится наличие такой возможности в петухотлине, в котором делали всё лишь бы не как в жабе.
Аноним 12/12/22 Пнд 00:44:18 #840 №2538691 
>>2538685
>>2538689
снаружи выглядит одинаково

MyClass.MyMethod()

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

И реально пофиг что там под капотом. Сахар для того и придуман чтобы выглядело просто, а под капотом хоть новую вселенную создавай.
Аноним 12/12/22 Пнд 01:29:01 #841 №2538700 
>>2538691
> и потому подобные вещи я называю "статические методы"
> И реально пофиг что там под капотом
Тебе с таким мышлением дорога в 1С и PHP. Хочешь возиться с котлином или шарпом - используй общепринятую терминологию, иначе хуй кто тебя поймёт.
Аноним 12/12/22 Пнд 01:39:03 #842 №2538704 
>>2538700
на статики шарпа я сказал статики.
А статики котлина - вот пусть котлинисты в меня тапками и кидают, но я в шарпотреде сижу.

>Тебе с таким мышлением дорога в 1С и PHP.
с чего вдруг мне прикасаться к этому дерьму. Тут нет логики.
Ведь сахар и DSL средствами языка и нужны для того чтобы скрыть реализацию или сложность заменив ее на удобство

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

это просто факт. это может не нравится шарпистам, но это факт.
Аноним 12/12/22 Пнд 01:44:06 #843 №2538705 
Шарпочане, хватит кормить залетного джавадебила.
Аноним 12/12/22 Пнд 01:53:29 #844 №2538707 
>>2538705
не каждый шарпохейтер суть жавист.
Я хейтю шарп, но не потому что я его плохо знаю, а как раз наоборот.
Аноним 12/12/22 Пнд 02:19:40 #845 №2538712 
>>2538705
А чё ещё делать, TreeView обсуждать?
Аноним 12/12/22 Пнд 05:53:26 #846 №2538744 
>>2538705
почему сюда вообще залетают джавакараси
что мы им сделали такого
Аноним 12/12/22 Пнд 06:08:50 #847 №2538749 
>>2538744
ну ну. я хейтю из за синтаксиса шарпа, хоть и пишу на нем с его рождения.
Все познается в сравнении. Я считал синтаксис шарпа богатым, но волею судеб изучив котлин понял что шарп очень жадный на выразительность.
И жалкие крохи выразительности вводятся со скрипом.
Аноним 12/12/22 Пнд 08:03:25 #848 №2538773 
>>2538744
>что мы им сделали такого
Загляни в джава-тред и поймёшь
Аноним 12/12/22 Пнд 08:16:03 #849 №2538776 
Предстоит собес. Подкиньте реальных вопросов на веб-девелопера с годом опыта.

Жутко стремаюсь из-за ощущения что самозванец, хотя в то же время такой же как и я челик с ютуба просто порешав литкодовские задачки в гугл устроился.
Что подучить? Что в гитхаб закинуть (инб4: его не чекают; литкод задачки) ? Может вам давали полайвкодить, что были за задачи?
Аноним 12/12/22 Пнд 08:19:48 #850 №2538778 
3513684312.jpeg
Ваше мнение?

Я, собственно, так в шарп и вкатился.
Аноним 12/12/22 Пнд 08:23:53 #851 №2538781 
>>2538623
В джаве это таблица 4 на 4 и легко учится. Это в сишарпе миллион модификаторов и каждый год новых насыпают. Джава учится за месяц, а сахар сишарпа не учится вообще за какой-либо вменяемый срок.
Понятно, что на собесе может попасться душнила, который завалит сахаром. Поэтому придётся искать вакансии без таких душнил, а с нормальными челиками.
Аноним 12/12/22 Пнд 08:41:18 #852 №2538790 
>>2538781
>сахар сишарпа не учится вообще за какой-либо вменяемый срок.
Вот и ответ почему жависты из ентерпрайза не переходят на котлин.
Мозг у жавистов мааааленький, в буфер все не помещается
Аноним 12/12/22 Пнд 09:20:58 #853 №2538801 
>>2538781
>В джаве это таблица 4 на 4 и легко учится.
А в шарпе это табличка 6 на 5, которая тоже легко учится. Выше в треде ее уже кидали.
Так и запишем, что это предел познаваемости джава-дебила.
>каждый год новых насыпают.
Ну пиздеть, то не надо. Набор этих модификаторов уже 5 лет не меняется. Единственный модификатор который добавили в C#11 - это file, но про него можно тупо забыть, т.к. он для кодогенераторов предназначен.
>а сахар сишарпа не учится вообще за какой-либо вменяемый срок.
Весь сахар си-шарпа спокойно умещается в книжке на 250 страниц карманного формата.
>Понятно, что на собесе может попасться душнила, который завалит сахаром.
Это вообще редкость. Спрашивают только за какой-нибудь фундаментальный сахар вроде using-ов или async/await.
Аноним 12/12/22 Пнд 09:42:31 #854 №2538819 
Если в языке много сахара, то он сладенький!
мимосладкоежка
Аноним 12/12/22 Пнд 10:00:36 #855 №2538837 
Называть сахаром хайлевельные абстракции языка, взятые из многолетних достижений задротов computer science, это признак животного ебанного лоускилльного, уровень джавистов и пхпшников.
Аноним 12/12/22 Пнд 10:11:44 #856 №2538843 
>>2538819
Есть программисты-диабетики
Аноним 12/12/22 Пнд 10:23:07 #857 №2538845 
>>2538843
Это их проблема, не остальных. Не можешь себе позволить сахар - не ной на остальных, что они сахаром пользуются.
Аноним 12/12/22 Пнд 13:38:18 #858 №2538967 
Я создаю отдельную бд для каждого юнит теста, с названием вида {DateTime.Now}.db, как мне просмотреть эту базу данных в райдере? В студии вот есть список всех баз данных, а тут я так понимаю нужно отдельно каждую бд подключать.
Аноним 12/12/22 Пнд 14:00:29 #859 №2538981 
>>2538776
Спрашиваю на собесе (всё по тайпскрипту):
1. Difference between let, const and var at TS
2. What is anonymous function
3. Ways to implement lazy loading
С вопросов выше можно понять знает ли кандидат основы (вопрос 1), а может шарит глубже (вопрос 2), можно понять как мыслит кандидат, вариантов имплементации lazy loading сотни, интересно какой выберет (почему именно этот, чем он лучше/хуже).
И к этому тестовое задание на 1-2 часа работы (72 часа чтобы его выслать), чтобы кандидат спокойно в своём темпе его сделал. Задание:
- есть готовый шаблон проекта, созданы пустые компоненты, написаны css
- есть готовое rest api (get, delete, put)
- get возвращает >10000 объектов, которые нужно поместить в таблицу, которую нужно фильтровать и сортировать на фронте (в get есть параметр paging, но я об этом не говорю, вся инфа в сваггере)
- нужен поиск по каждому полю объекта (id, name, amount, price)
- каждый из объектов можно удалить, таблица должна обновиться после удаления
- можно добавить новый объект, таблица должна обновиться после добавления

Это собес для 3+ года опыта работы, ставка 25$ + VAT
Аноним 12/12/22 Пнд 14:30:22 #860 №2539010 
>>2538967
>Я создаю отдельную бд для каждого юнит теста
Ахуеть... in-memory-database еще не проходили на курсах??
Аноним 12/12/22 Пнд 14:30:47 #861 №2539011 
Представляю как у тебя при CI/CD долго эти тесты выполняться будут, просто пиздец.
Аноним 12/12/22 Пнд 14:32:15 #862 №2539012 
>>2538981
Это точно на 3+ лет опыта? У меня 1.5 года опыта на дотнете, я и то могу эту парашу сделать, лол.
Аноним 12/12/22 Пнд 14:36:45 #863 №2539015 
>>2539012
К слову опыта с js нет почти, но это не отрицает факта того, что задача слишком простая.
Аноним 12/12/22 Пнд 14:40:36 #864 №2539020 
>>2539012
>>2539015
Да. Тут 3+, потому что примерно за это время работы в команде у человека образуются норм софт скилы. Бывают просто отличные программисты, с которыми нету никакой возможности работать (чсв, токсики, просто мутные типы), тогда я охотнее возьму менее опытного, но более предсказуемого кандидата.

Интересно, что только 1 из 5 делает тестовое задание адекватно, без странных конструкций, хардкода, знают что такое eslint. В этом задании не главное, чтобы работало идеально, а как оно сделано и тут уже встречаются пиздецы.
Аноним 12/12/22 Пнд 14:51:16 #865 №2539034 
>>2539010
Ms sql не поддерживает размещение дб в памяти, а в sqlite не поддерживается некоторые типы данных из ms sql
Аноним 12/12/22 Пнд 15:01:07 #866 №2539043 
>>2539015
>>2539020
Я ожидаю отдельного сервиса для get, delete, put. Хорошо сделаный paging (для этого нужно понимать сваггер). Отдельный environments. Использование pascalCase (или любой другой). Адекватное название методов (не find() или send()). В конце всё это должно быть запушенно с нормальным названием коммита. И ещё много вещей, на которые я обращаю внимания.
Обо всём выше я кандидату не говорю, он сам должен это знать. Я думаю, что ты бы смог решить поставленную задачу, но не сделал бы это на том уровне о котором я пишу. Знать язык программирования это в лучшем случае полдела, а умение им грамотно пользоваться это уже другой уровень.
Аноним 12/12/22 Пнд 15:04:55 #867 №2539047 
>>2538981
Зачем сортировать на фронте?
Аноним 12/12/22 Пнд 15:10:01 #868 №2539051 
>>2539047
Чтобы проверить как кандидат это сделает, каким путём пойдёт. При собеседовании на фуллстака сортировка и филтрование доллжны быть на бэке.
Аноним 12/12/22 Пнд 16:56:38 #869 №2539155 
>>2539043
>Использование pascalCase
А если всё сделать в джава-стиле?
Аноним 13/12/22 Втр 09:54:41 #870 №2539599 
Поговаривают, что в дотнет 8 снова кардинально переделают ASP.NET и он будет больше похож на Spring. Вместо папок с контроллерами, мы будем просто развешивать аннотации по коду, где нам надо что-то обработать.
Аноним 13/12/22 Втр 10:07:33 #871 №2539603 
>>2539599
Но ведь и сейчас так работает. Аннотации называются атрибутами, и усё.
Аноним 13/12/22 Втр 10:19:39 #872 №2539612 
>>2539599
Какой-то фейковый прогресс, если честно, судя по описанию. Я ещё в прошлом году это говорил, когда тут сороки-белобоки носились с 5 а потом 6 дотнетом.
Аноним 13/12/22 Втр 10:41:09 #873 №2539618 
>>2539612
Дак проблема, что они опять собираются всё переделать. Как потом это всё учить? Книги-то выходят редко и на написание и перевод требуется 2-3 года.
Аноним 13/12/22 Втр 10:43:45 #874 №2539620 
>>2539618
Просто возьми книги 20-30-ти летней давности и окажется, что их новое - это тщательно затёртое старое.
Аноним 13/12/22 Втр 11:30:06 #875 №2539642 
>>2539620
20-30 лет назад все писали классненькие десктопные приложения, а не всякие веб-сервисы. Микрософты даже первый фреймворк для веба сделали как аналог винформам.

А вообще в том же Спринге есть просто класс конфигураций, где создаются всякие контексты, бины и прочая шляпа. А всё остальное можно писать как хочется, только аннотации развешивай. Полная свобода творчества.
А вот в АСП.НЕТ всё прибито гвоздями к полу. Вот тебе одна папка и туда пихай все контроллеры. Пофиг, что тебе надо 100500 таких контроллеров написать, всё равно пихай в одну папку. Про вьюхи и модели я вообще молчу, там полная помойка получается.
Аноним 13/12/22 Втр 11:52:41 #876 №2539663 
>>2539642
> десктопные приложения, а не всякие веб-сервисы
Платформа не важна. Важны паттерны. Поняв паттерны, ты будешь их реализовывать на любой платформе в средах любой степени разнородности, ваще на изичах, не испытывая серьёзных проблем, а мелкие проблемы решая мимоходом. То есть, иначе говоря, зная, твёрдо зная, какими паттернами ты реализуешь свой проект, ты не испытывая неудобств, легко переведешь его с десктопа на веб, с веба на десктоп, с моносервера на кластер, и т.д. и т.п. и др.
Аноним 13/12/22 Втр 12:04:14 #877 №2539680 
>>2539663
Почему тогда Спринг легко учится, хоть там и всякая параша с кофигурацией бинов в xml, а такой весь модный современный ASP.NET Core вообще не учится. На тебя вываливают какую-то словесную мешанину: веббилдер, хостбилдер, кофигуре - не кофигуре, билд - не билд. Да откуда я должен знать, что они там имеют ввиду!?
В теории рассуждают про какое-то промежуточное ПО, а где в коде слова middleware? Их просто нет. У них даже в наименовании ничего не клеится.
Аноним 13/12/22 Втр 12:06:52 #878 №2539685 
image
image
>>2515951 (OP)
В ссылках упоминается пик-1 книга. Стоит ли начинать с неё? Смущает тот факт, что там очень старая версия шарпа. Или лучше сразу начать с пик-2?
Аноним 13/12/22 Втр 12:08:57 #879 №2539688 
>>2539685
Пик-2 тоже устарела. Сейчас уже C# 11 и .NET 7.
Аноним 13/12/22 Втр 12:52:52 #880 №2539739 
https://spb.hh.ru/vacancy/73736562
>Полный рабочий день на территории работодателя
>Офис недалеко от метро
>(17 минут)
>можно добраться на трамвае
>До нас 3 остановки
>35 000 руб. на руки

аххаха блядь
как сосется, шарпомухи?
Аноним 13/12/22 Втр 12:53:23 #881 №2539741 
>>2539618
Я за последние полтора года вообще ни одной книги не прочитал и как-то умудрился перейти с Core2.1 на .Net6
Аноним 13/12/22 Втр 12:54:53 #882 №2539743 
>>2539642
>Пофиг, что тебе надо 100500 таких контроллеров написать, всё равно пихай в одну папку
Что за хуйню ты несешь? Какую еще одну папку?
Аноним 13/12/22 Втр 13:01:09 #883 №2539745 
>>2539739
Это вкатунская вакансия. Можно считать это оплачиваемой стажировкой с которой через полгода спокойно можно на сотыгу свалить и дальше развиваться. Для вкатунцов самое то. На джаве на подобную вакансию человек 200 налетает в первые часы, а тут человек 15...20 наберется.
Аноним 13/12/22 Втр 13:15:41 #884 №2539759 
>>2539743
Controllers
Аноним 13/12/22 Втр 13:16:55 #885 №2539761 
>>2539741
А изначально учился по книжке Фримана?
Аноним 13/12/22 Втр 13:18:02 #886 №2539762 
>>2539745
>вкатунская вакансия.
>Можно считать это оплачиваемой стажировкой

Опыт программирования с использованием языка С# не менее 0,5 лет;
Аноним 13/12/22 Втр 13:26:22 #887 №2539765 
>>2539745
Если открыть хх, то увидишь, что резюме на шарп столько же, сколько и на джаву. А вот вакансий на шарп раза в 2 меньше.
Причём шарп лезут в основном всякие птушники, потому что там модно преподавать шарп, а на джаве как правило выпускники универов.
Аноним 13/12/22 Втр 15:18:30 #888 №2539858 
Как вы учили промежуточное ПО?
Аноним 13/12/22 Втр 15:35:40 #889 №2539868 
>>2539762
Так это от первой строчки кода отсчёт. Опыт проганья, а не ком. разработки, так что вкатунская вакуха, потерпеть можно. Особенно если каждый день ездить на трамвае чижик.
Аноним 13/12/22 Втр 15:35:43 #890 №2539869 
>>2539858
Зубрил по книжкам на 1000 страниц.
Аноним 13/12/22 Втр 15:40:10 #891 №2539873 
>>2539868
У меня тогда 20 лет опыта программирования
Аноним 13/12/22 Втр 16:37:24 #892 №2539902 
Я правильно понимаю, что в идеале апи контроллер должен состоять из одной строчки
return Ok(await _service.DoSomething(request)); ?
Аноним 13/12/22 Втр 16:54:54 #893 №2539917 
>>2539902
> апи контроллер должен
Метод апи контроллера, фикс
Аноним 13/12/22 Втр 16:56:04 #894 №2539920 
>>2539902
Да.
Аноним 13/12/22 Втр 22:56:30 #895 №2540205 
>>2539761
Нет. По справочнику Албахари и МСДН.
Аноним 13/12/22 Втр 22:57:34 #896 №2540206 
>>2539762
В нормальных вакансиях обычно указывают не "опыт программирования", а "опыт коммерческой разработки", а это дохуя разные вещи.
Аноним 13/12/22 Втр 23:04:44 #897 №2540209 
>>2539759
А я тебя еще раз спрошу - что за хуйню ты несешь?
Ты можешь спокойно создавать контроллеры где ты захочешь, хоть в корне проекта, хоть в каталоге Services. То что класс является контроллером определяется в первую очередь не тем где он лежит в проекте, а тем от чего он наследуется и какой у него внутри функционал.
Каталог Controllers, не более чем конвенция. Т.к. залезая в незнакомый проект, я ожидаю что контроллеры будут все-таки собраны в одном месте, а не размазаны по всему дереву проекта. Т.к. по факту это точка входа в него.
Хотя очень хорошей практикой все-таки будет хоть как-то группировать их по своим каталогам в пределах того же Controllers.
Аноним 13/12/22 Втр 23:27:20 #898 №2540219 
>>2539765
Не буду спорить, т.к. без реальных цифр это тупое дело. Но вроде в МВП треде был чел, который собирал помесячную статистику, там цифры были как раз наоборот.
Скажу только, что количество выходцев из училищ/универов величина более-менее постоянная. А вот за счет "выпускников" говнокурсов, java по количеству явно перевешивает, т.к. во первых всяких курсов по jave намного больше и они популярнее. Во вторых большинство курсов по шарпу ориентированы на геймдев, а их выпускники в принципе бесполезны где-нибудь за пределами разработки игр.

Если совсем грубо обобщить (прямо вот совсем грубо) на уровне вакансий не уровня выше мидл-минус.
Если на Java будет 100 и 200 резюме, то все эти кандидаты будут конкурировать друг с другом за все эти вакансии. В шарпе же в это время будет 50 вакансий и 100 резюме. Но из них будет вакансий 10 геймдева и на них будет 40 кандидатов, еще вакансий 20 легаси и на него будет еще 30 кандидатов зависнувших на .netFramework и на оставшиеся 20 вакансий энтерпрайза, останется 30 человек, что уже не настолько безнадежно как в Java.
Аноним 13/12/22 Втр 23:32:49 #899 №2540224 
>>2539902
>что в идеале апи
Скорее в норме.
>>2539902
>return Ok(await _service.DoSomething(request)); ?
Это если у тебя "always return 200", если же по классике, то что-нибудь вроде:
return CreateResponse(await _service.DoSomething(request));
где CreateResponse, простой базовый метод возвращающий Ок или Fail, в зависимости от бизнес логики.
Аноним 14/12/22 Срд 00:10:01 #900 №2540239 
>>2540219
мда. разучились люди сами учиться. курсы им подавай, книги им подавай

>в принципе бесполезны где-нибудь за пределами разработки игр.
специалисты по левой ноздре (с)
Аноним 14/12/22 Срд 04:42:33 #901 №2540275 
>>2540239
>специалисты по левой ноздре (с)
Ну, на самом деле, геймдев на любом языке будет сильно отличаться от другой деятельности.
Аноним 14/12/22 Срд 06:23:31 #902 №2540281 
>>2540224
>Это если у тебя "always return 200", если же по классике, то что-нибудь вроде:
>return CreateResponse(await _service.DoSomething(request));
>где CreateResponse, простой базовый метод возвращающий Ок или Fail, в зависимости от бизнес логики.
Так для этого же есть промежуточное по, которое будет перехватывать эксепшоны и формировать нужный ответ.
Аноним 14/12/22 Срд 08:09:18 #903 №2540307 
>>2540281
>Так для этого же есть промежуточное по, которое будет перехватывать эксепшоны и формировать нужный ответ.
Мидлварь предназначен для обработки технических или общих фейлов. Ты же не будешь для каждого бизнес процесса свой отдельный мидлварь писать.
Аноним 14/12/22 Срд 08:32:11 #904 №2540315 
>>2540239
Как ты сам выучишь без курсов и книг?
Некоторые, кто давно вкатился, ещё находятся при ошибочном мнении, что они сами всему научились, хотя раньше на работу брали по факту окончания универа или технаря, а там их уже натаскивали опытные коллеги.
У меня однокурсник именно так и вкатился в 2008, хотя языка даже не знал. Тогда было модно С++ учить, а на всякие джавы и сишарпы мы смотрели свысока.
Аноним 14/12/22 Срд 09:26:32 #905 №2540331 
>>2540315
Насчёт курсов не знаю, но книги точно нужны. Я благодаря книгам в сосничестве освоил C++. Потом опять же по книгам освоил C#, WPF, ASP.net
Аноним 14/12/22 Срд 09:52:08 #906 №2540340 
image.png
Анончик, у меня перфекционизм зашкаливает - как убрать эти предупреждения?

У меня ProgramData.UserConfig 100% валиден - там много выше это проверяется сто раз.
Аноним 14/12/22 Срд 09:53:16 #907 №2540341 
>>2540331
>но книги точно нужны
не нужны. metanit, а еще лучше документация от microsoft хорошо описаны. Ну это если про шарп
Аноним 14/12/22 Срд 10:09:56 #908 №2540352 
>>2540340
Удалить круглые скобки и добавить 101-ю проверку.
Аноним 14/12/22 Срд 10:16:45 #909 №2540355 
>>2540341
Метанит пишет один чел. У него нет даже напарника, который бы правил опечатки и косяки. А любая книга проходит рецензирование и этим занимаются как правило серьёзные челы уровня профессоров в области компьютерных наук. Касательно сишарпа, авторы книг как правило имеют сертификаты от микрософт, что они реально специалисты в этой области.
Кроме всего прочего, книга у тебя будет всегда на руках, а метанит может в любой момент закрыться и твой вкат накроется медным тазом.
Аноним 14/12/22 Срд 10:19:28 #910 №2540359 
>>2540224
> где CreateResponse, простой базовый метод возвращающий Ок или Fail, в зависимости от бизнес логики.
Можно поподробнее? У меня например бизнес логика просто кидает исключение при неверных вводных данных или ещё каких-либо проблемах. Как мне это исключение обрабатывать?
Аноним 14/12/22 Срд 11:09:27 #911 №2540382 
>>2540340

ProgramData.UserConfig!.UserRole == UserRole.admin
Аноним 14/12/22 Срд 11:11:52 #912 №2540385 
Анонимусы, есть ли в HttpClient какой-то вариант реализовать курловский --resolve? Очень надо...
Аноним 14/12/22 Срд 13:29:54 #913 №2540529 
А где в студии отключить компактный режим или как он там называется, когда прячутся неймспейсы?
Аноним 14/12/22 Срд 14:37:59 #914 №2540607 
>>2540359
>У меня например бизнес логика просто кидает исключение при неверных вводных данных или ещё каких-либо проблемах. Как мне это исключение обрабатывать?
Странный вопрос. Ты когда исключение выбрасываешь, ты же не в воздух это делаешь. Ты должен всегда подразумевать где оно у тебя отлавливается и обрабатывается. Либо там же где ты его выкинул, либо из того слоя который у тебя дергает бизнес логику. Ну либо через мидлварь, но это уже изврат.
Аноним 14/12/22 Срд 14:45:06 #915 №2540615 
А если у пользователя выскочила ошибка, то что она мне даст? У меня нет всей цепочки действий — нужно логирование, но я же не могу им засрать всю программу и постоянно собирать логи.

Какие для этого есть инструкции?
Аноним 14/12/22 Срд 14:48:40 #916 №2540617 
>>2540607
> Ты должен всегда подразумевать где оно у тебя отлавливается и обрабатывается.
Ну так я планировал его обрабатывать внутри контроллера, но это вроде как плохая практика, контроллер же должен быть пустым.
Аноним 14/12/22 Срд 15:13:16 #917 №2540639 
изображение.png
изображение.png
изображение.png
>>2540617
Вот к слову пример удаления. Нормально реализовано?
Аноним 14/12/22 Срд 15:16:41 #918 №2540643 
>>2540639
Как тебе удалось ломануть райдер?
Аноним 14/12/22 Срд 15:17:29 #919 №2540644 
>>2540643
Ну рутрекере в комментариях под раздачей есть инструкция.
Аноним 14/12/22 Срд 15:20:53 #920 №2540649 
>>2540644
Там на старую версию, которая не поддерживает дотнет 7
Аноним 14/12/22 Срд 16:51:08 #921 №2540789 
>>2540639
>Нормально реализовано?
Нет. Как минимум, потому ты пробрасываешь конретный эксепшен, а ловишь общий.
Алсо, всегда ставь скобки в If-ах, не будь мудаком.
Аноним 14/12/22 Срд 17:15:31 #922 №2540834 
изображение.png
>>2540789
> Нет. Как минимум, потому ты пробрасываешь конретный эксепшен, а ловишь общий.
Так лучше?
Аноним 14/12/22 Срд 19:20:15 #923 №2540943 
>>2540834
https://www.youtube.com/watch?v=a1ye9eGTB98
Аноним 15/12/22 Чтв 00:15:59 #924 №2541262 
>>2540834
Во первых - when используется не так. В том смысле, что тут он вообще не нужен и достаточно простого Catch(ArgumentOutOfrangeException ex). То что ты написал работать будет, но выглядит максимально по индусски.
Во вторых попробуй напиши в одном контроллере несколько похожих методов и ты сразу увидишь, что в каждом из них у тебя будет повторяющийся код из одинаковых цепочек catch-ей. И куда-то в одно место ты их не вынесешь, что сильно ломает DRY принцип.
Если бы ты возвращал стандартизированный ResultObject, тогда тебе всю его обработку и распил на IActionResult, можно было бы вынести в отдельный экстеншен единый для всех контроллеров. И тогда все методы в них действительно состояли бы из одной строки.
Аноним 15/12/22 Чтв 00:22:06 #925 №2541263 
>>2540834
400 выдаст валидатор входных данных и метод контроллера будет пуст от этого
500 выдаст мидлваря если до нее долетит какое то исключение - чего так то быть не должно.
как и 404 вообще роутинг выдаст
Аноним 15/12/22 Чтв 00:37:03 #926 №2541269 
>>2540943
Вот очень хорошее видео. Чел очень хорошо рассказывает, то что я пытался криво в своих ответах рассказать. Подробно объясняет как и почему не нужно кидать исключения и как от этого уйти. И даже небольшой бенчмарк показывает.

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

Вкатунцам на заметку, если сможете разобраться, реализовать подобное в сових петах, которые прикладываете к резюме и объяснить на собесах почему и зачем так сделали, то на место джуна влетите со свистом.
Аноним 15/12/22 Чтв 00:59:25 #927 №2541280 
>>2539739
>>35 000 руб. на руки
Ты долбоеб?
Там
>>•Оклад на постоянной основе 35.000-40.000 рублей
>>Оклад

Это значит что зп - 70к-80к.
Аноним 15/12/22 Чтв 01:03:47 #928 №2541283 
>>2541280
Зп = оклад. Остальное держится на честном слове и срезается до нуля при любых колебаниях экономики.
Аноним 15/12/22 Чтв 01:12:40 #929 №2541291 
>>2541283
двачую этого реалиста
либо срезают под поводами, либо "ну мы же тебе платим, значит больше можем требовать"
Аноним 15/12/22 Чтв 04:24:51 #930 №2541338 
>>2541283
> и срезается
Или не срезается. При колебаниях тебе и оклад могут порезать.

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

Плюс там может быть не только премия, а еще и надбавки к окладу - вот их уже не могут срезать. Например у меня в зп 30% от оклада - северные и стаж.
Аноним 15/12/22 Чтв 08:23:43 #931 №2541385 
>>2541338
>Да, сама схема оклад+премия бесящая (особенно когда ею оперируют в ростатах нарисовывая несуществующие средние зарплаты).
За один месяц выдали 100.000 рублей (50 премия + 50 оклад), во второй только оклад 50 тысяч, средняя зарплата за два месяца -75 тысяч. А по твоей логике должна быть 50?
Аноним 15/12/22 Чтв 13:07:02 #932 №2541648 
>>2540943
Если классические исключения настолько ресурснозатратны, то почему голованг ругают за их реализацию в сущности как в данном видео?
Аноним 15/12/22 Чтв 14:40:25 #933 №2541736 
>>2541648
Я х.з. гоферы вроде тащатся от реализации.
Сам я не го пробовал, но из того, что об этом читал могу назвать такие недостатки (конечно это исключительно мое личное мнение):
1) Выглядит несколько прибитым гвоздями. В шарпе ты можешь пользоваться исключениями, можешь не пользоваться, можешь смешать все вместе. Тут же создатели языка включили вахтеров и установили единый способ.
2) Такое ощущение, что там весь стектрейс и контекст к проебывается к херам по дефолту. Думаю лет через 5...10 те кто будет разгребать, то что нынешние говнокодеры наклепают, будут крайне опечалены и разозлены этим фактом.
Аноним 15/12/22 Чтв 16:55:16 #934 №2541894 
>>2541736
Просто голанг разрабатывали люди, которым нравится старый сишный стиль программирования. Тебе не надо изучать тонны фреймворков и библиотек, а ты сам выстраиваешь логику программы как хочешь.
Я бы вот лучше голанг пошёл изучать, чем долбиться в этот асп.нет. Но туда не берут вкатунов, а только опытных челов.
Аноним 16/12/22 Птн 00:42:54 #935 №2542407 
>>2541894
>Просто голанг разрабатывали люди, которым нравится старый сишный стиль программирования.
Ну т.е. любителями велосипедов.
>Тебе не надо изучать тонны фреймворков и библиотек, а ты сам выстраиваешь логику программы как хочешь.
Угу, тут будет старая шутка про то что каждый разраб на С начинает с придумывания своей библиотеки для работы со string-ами.

Ну и так, к сведению, C# тоже не хуем с горы создавался.

Андерс Хейлсберг (род. 2 декабря 1960) — датский инженер-программист, создатель Turbo Pascal, Delphi, C# и TypeScript.
Т.е. чел как бы шарящий за все эти вещи.

Ну и при желании ты на шарпе также можешь навелосипедить что угодно. От высочайших ООП абстракций, до адской БДСМ байтоебли. Его плюс как раз в оптимальном соотношении удобство/возможности

>>2541894
>Я бы вот лучше голанг пошёл изучать, чем долбиться в этот асп.нет. Но туда не берут вкатунов, а только опытных челов.
Вкатунов сейчас никуда не берут. Это сродни выйгрышу в лотерею. А год...два назад и в гоферы можно было спокойно с улицы залететь.
Аноним 16/12/22 Птн 01:36:35 #936 №2542439 
https://youtu.be/fbxbxTT50A8?t=167
Аноним 16/12/22 Птн 03:48:44 #937 №2542480 
Как скопировать один List<object> в другой чтобы это была именно копия, а не список ссылок на одно и тоже?
Аноним 16/12/22 Птн 06:29:48 #938 №2542493 
>>2542439
Вот такие смузихлебы-вкатунщики сейчас и визжат что айти умирае... И я очень рад что это айти-гнилье наконец-то начали гнать из фанга (а значит скоро мода дойдет и до остальных)

Видите-ли он не хочет работать со старым говном. А нахуя он тогда нужен?

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

Я например так работал - переделывал софт с vb на шарп - сначала накидал фронтэнд и связал код со старым кодом (были красивые вызовы vb кода из шарпа) - чтобы оно сразу все работало. Теперь постепенно убираю эти связи переписывая бэкэнд в критичных местах. При этом оно все работает прямо сейчас в промышленности. Начальнику не нужно ждать десять лет - когда там новый софт заработает, он уже видит новенький красивый гуи и его хотелки появляются сразу.
Понятно что если в этот момент понадобится новый программист - но будет требоваться знание и vb и шарпа. Но это на время переходного периода, в конце все связи с vb должны быть уничтожены.
Аноним 16/12/22 Птн 07:56:07 #939 №2542511 
>>2542480
Гугли ICloneable, Поверхностное копирование, Глубокое копирование. Реализуешь то, что подходит под твою ситуацию.
Перебираешь список, делаешь полный клон каждого объекта и помещаешь его в новый список.
Придется как минимум разобраться в вопросе копирования содержимого объекта в другой объект. Простого и готового способа тут нет.
Аноним 16/12/22 Птн 08:34:57 #940 №2542523 
>>2542407
>создатель Turbo Pascal, Delphi
Вот теперь и приходится использовать этот уродливый PascalCase, вместо няшного camelCase.
Аноним 16/12/22 Птн 08:57:44 #941 №2542568 
Как создать приложение на дотнет 5, если сейчас доступны только 3.1, 6 и 7?
Аноним 16/12/22 Птн 09:22:13 #942 №2542585 
>>2542523
Челик, ты же в курсе, что PascalCase, это и есть CamelCase, да? А то, на что ты так неистово дрочишь, это его разновидность - loweCamelCase.
И в шарпе, так же как в Java, Go и VB, используются они оба.
Аноним 16/12/22 Птн 09:31:06 #943 №2542590 
vs-export.gif
>>2542568
Вот так.
Аноним 16/12/22 Птн 09:33:09 #944 №2542593 
>>2540943
Только подобный подход очень неудобен при обмазывании linq.
Аноним 16/12/22 Птн 09:56:06 #945 №2542599 
Вчера читал про ссылочные типы не допускающие null и офигевал с того, какого говна навернули микрософты. Ладно бы они как-то решили проблему, но нет, они добавили тонны кала, но ссылочные типы не допускающие null по-прежнему могут содержать null и программа может вылететь с NullReferenceException.
Почему в Java спокойно используют ссылочные типы допускающие null, а вот микрософтам этот null чем-то мешает?
Аноним 16/12/22 Птн 09:58:13 #946 №2542600 
>>2542593
Почему? Тащем-та линк это просто про перебор коллекций с данными, какое отношение это имеет к прокидыванию результата между слоями?
Ну и даже если у тебя это как-то завязано, то linq это по большому счету расширения, на которые ты можешь накинуть свою обертку и точно так же их использовать, это будет даже еще удобнее.
Аноним 16/12/22 Птн 09:59:55 #947 №2542601 
>>2542600
> Почему? Тащем-та линк это просто про перебор коллекций с данными, какое отношение это имеет к прокидыванию результата между слоями?
Потому что внутри селекта нельзя просто написать return Result, нужно в любом случае перебрать все значения, затем ещё раз их перебрать чтобы проверить была ли ошибка, и только тогда вернуть result из метода.
Аноним 16/12/22 Птн 10:00:45 #948 №2542602 
>>2542601
Ну и да, исключение же можно спокойно кинуть хоть из десятка вложенных селектов, за что собственно и любимы.
Аноним 16/12/22 Птн 11:16:04 #949 №2542659 
>>2542601
Пример приведи. Чет я плохо понимаю, какие у тебя могут быть ошибки в селекте, который по факту просто проекция данных из одной модели в модель.
Аноним 16/12/22 Птн 11:33:33 #950 №2542685 
>>2542659
У меня массив id, в селекте я получаю соответствующие сущности из бд.
Аноним 16/12/22 Птн 11:54:39 #951 №2542723 
>>2542585
> loweCamelCase
Как будто у печатающего залипает шифт.
мимо
Аноним 16/12/22 Птн 11:57:24 #952 №2542731 
>>2542685
Еще раз. Select это проекция уже выбранных значений.
Аноним 16/12/22 Птн 13:52:19 #953 №2542939 
Петушарп гораздо хуже, чем жаба.
Аноним 16/12/22 Птн 14:02:42 #954 №2542949 
>>2542939
https://www.youtube.com/watch?v=CXArovLJ60A
Аноним 16/12/22 Птн 17:26:37 #955 №2543217 
посоны я тут короче немного пошуршал и рассортировал проект по папкам шоб аккуратно было и красиво, но неймспейсы старые остались и там чад кутежа во мгле ада
есть ли способ в студии быстро привести их в соответствие со структурой во всем проекте?
Аноним 16/12/22 Птн 19:55:33 #956 №2543411 
>>2542599
>Почему в Java спокойно используют ссылочные типы допускающие null
где спокойно? NRE на NRE и NRE погоняет. Забавно видеть в каком нибудь еклипс или пишарме иногда NRE в его тулзах.

>а вот микрософтам этот null чем-то мешает?
гугли "ошибка на миллиард долларов" - там пояснят

С нуллабле можно писать и без NRE конечно, просто это сложнее био нужно самому следить. вот для этого и делается "пусть компилятор где может сам следит". Так что языки где СРАЗУ есть четкое разделение на нулл типы и нет - просто больше защищают от ошибок вида "не уследил"

И не нужно говорить про "следи лучше".
Если код пишешь не ты один, то нужны жесткие контракты, а это выливается в итоге в использование всяких NullGuard и анализаторы, что по факту то же самое
Аноним 16/12/22 Птн 19:55:51 #957 №2543412 
>>2543217
есть
Аноним 16/12/22 Птн 20:05:00 #958 №2543426 
>>2542939
жава это кофе
шарп это кофе с сахаром

какой кофе лучше? ну ты понял.
Аноним 16/12/22 Птн 20:12:57 #959 №2543438 
>>2543412
как?
Аноним 16/12/22 Птн 20:21:35 #960 №2543450 
>>2543438
resharper - пкм на нужном пункте в дереве проекта и Refactor - Adjust Namespaces
студия 22 - пкм там же - Sync Namespaces

что там раньше не знаю. я всегда жил на решарпере.
Аноним 16/12/22 Птн 20:22:35 #961 №2543453 
.png
>>2543426
Лучше лавандовый раф с корицей на миндальном молоке.
Аноним 16/12/22 Птн 20:23:05 #962 №2543454 
>>2543426
А если я пью чаёк без сахара?
Аноним 16/12/22 Птн 20:24:44 #963 №2543456 
>>2543453
Ты про Nemerle? увы это для реальных ценителей и сложно найти

>>2543454
значит ты пьешь чаек без сахара. а значит к кофе тебя вообще допускать нельзя - ты его в глаз зальешь с такой внимательностью.
Аноним 16/12/22 Птн 20:25:41 #964 №2543457 
>>2543450
блин у меня 19 студия..
Аноним 16/12/22 Птн 20:26:59 #965 №2543459 
>>2543456
> Nemerle
Или Elixir.
Аноним 16/12/22 Птн 20:36:16 #966 №2543467 
>>2543456
Если бы на джаве была бесплатная полнофункциональная ИДЕ, то все бы учили только джаву. Сишарп держится только за счёт бесплатной вижлы.
Аноним 16/12/22 Птн 20:41:00 #967 №2543472 
>>2543467
На шарпе легко писать код хоть в блокноте, не надо запоминать громоздкие пакеты и всякие LocalContainerEntityManagerFactoryBean. Это в жабе без иде хуй что напишешь.
Аноним 16/12/22 Птн 20:41:43 #968 №2543474 
>>2543467
а куда IDE делись? я не жавист но помню там была eclipse, NetBeans, та же андроид студия фри, хоть писать на ней не под андроид геморнее.
Аноним 16/12/22 Птн 20:45:03 #969 №2543480 
>>2543474
Сейчас джавист - это IDEA-разработчик. Все курсы и книги пишут для идеи, если у тебя нет идеи, то ничему не научишься.
Аноним 16/12/22 Птн 20:46:47 #970 №2543486 
>>2543480
ох уж эти "специалисты по левой ноздре". (с)
если чел не может научиться без книг и особой IDE - он говно, а не программист.
Аноним 16/12/22 Птн 20:47:50 #971 №2543490 
>>2543486
Значит, все джависты - говно, а не программисты.
Аноним 16/12/22 Птн 20:54:14 #972 №2543502 
>>2543490
Но джава как язык лучше сишарпа
Аноним 16/12/22 Птн 20:58:29 #973 №2543506 
>>2543502
Как экосистема - лучше. Как язык - намного хуже.
Аноним 16/12/22 Птн 20:59:40 #974 №2543509 
>>2543506
Наоборот, язык - простой, легкий в обучении, а экосистема - сложная и неудобная.
Аноним 16/12/22 Птн 21:05:06 #975 №2543518 
>>2543509
> простой, легкий в обучении
синклер бейсик еще проще в обучении, но как то ценится удобство писать код, а не учить язык.

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

И тут у жавый полная жопень. Например, вместо удобной async/await, что ЛОЛ будет уже небось и в синклер бейские даже, но не в жаве - в жаве нужно городить огородище.
Аноним 16/12/22 Птн 21:05:21 #976 №2543519 
>>2543509
> простой, легкий в обучении
То есть примитивный. Понятное дело, что язык легко выучить, если в нём нихуя нет и всё делается через библиотечные костыли.
Аноним 16/12/22 Птн 21:09:39 #977 №2543523 
>>2543502
слух, жавист, если бы ты сюда с котлином пришел, то у тебя были бы аргументы
но с жавой....это болезнь.
Аноним 17/12/22 Суб 03:16:14 #978 №2543670 
>>2543519
>ряяяяяяяяяяяяяя!!!!
Аноним 17/12/22 Суб 03:17:15 #979 №2543672 
>>2543426
Жаба - коже, петушарп - кофе с говном.

Какой выберешь ты?
Аноним 17/12/22 Суб 04:23:21 #980 №2543676 
>>2543672
Я выберу послать жависта с его найтупейшим сравнением в его родной тред и там нести бред.
Аноним 17/12/22 Суб 08:09:34 #981 №2543703 
>>2543518
Но как раз в джаве удобно писать и ещё удобней читать код. Не нужно держать в голове тонны сахарных конструкций. Все прописано явно.
Синклер Бейсик же не был даже структурированным языком. Простой цикл типа while там надо было расписывать в виде IF-GOTO. Многочисленные переходы превращали всё в спагетти-код.
Помню как-то в журнале "Наука и жизнь" в конце 1980-х публиковали программы на Бейсике, но с ходу разобрать код было невозможно. Приходилось расписывать эти макаронины на отдельной бумажке в виде блок-схем.
В сишарпе тоже самое, приходится весь сахар выписывать на бумажку и смотреть во что разворачивается та или иная закорючка. И боюсь, что в ноябре микрософты ещё накинут нам сахарку, что все офигеют. Какую-нибудь конструкцию языка сломают так, что придётся по новой переучиваться.
Аноним 17/12/22 Суб 08:13:28 #982 №2543708 
>>2543519
Джава - это чистый ООП язык. Если ты соблюдаешь ООП-стиль, то проблем не возникает. Проблемы как раз в сишарпе, который пытается добавлять сахарок, чтобы продолжали писать в процедурном стиле. Сишарп позволяет много вольностей в плане размещения классов по файлам, самих файлов по папкам, и порой малоопытный программист клепает лютый говнокод. В джаве же изначально приняты стандарты, которые заставляют писать упорядоченный код.
Аноним 17/12/22 Суб 09:16:00 #983 №2543728 
>>2543703
>В сишарпе тоже самое, приходится весь сахар выписывать на бумажку и смотреть во что разворачивается та или иная закорючка.
Чувак мы поняли уже, что джависты тупые и без бумажки код разобрать не могут. Съеби уже.
Сарказм, если что. Не считаю джавистов тупыми, кроме конкретно вот этого.
Аноним 17/12/22 Суб 09:49:11 #984 №2543748 
>>2543728
Легкость и простота джавы не говорит о том, что на ней пишут тупые. Напротив умный человек будет стремиться к простым и элегантным решениям.
Разве можно назвать код на сишарпе таким? Нет, там в одной строчке может быть с десяток всяких знаком вопросов, восклицательных знаков и прочих закорючек. Такой код сложно читать и воспринимать. Код на джаве же порой читается также легко как текст на английском (для тех, кто понимает английский).
Аноним 17/12/22 Суб 11:00:56 #985 №2543792 
>>2543703
>Но как раз в джаве удобно писать и ещё удобней читать код
ага ага. правда вместо 2 строк получается текста на 3 страницы, но то такое.
>>2543748
>Код на джаве же порой читается также легко как текст на английском
только читать приходится много. И ничего хорошего в этом нет. Аж вообще ничего. А в случае с многопотоком еще и держать большой контекст в голове, ведь сложное выраженное убогими словами как бы добавляет сложности.
Аноним 17/12/22 Суб 12:18:00 #986 №2543820 
>>2543792
Ты как программист всё равно должен вникать во все тонкости. Разница лишь в том, что на джаве ты сам выстраиваешь логику приложения, а сишарпе вынужден подстраиваться под микрософт. Если они завтра выкатят какое-нибудь говнецо, то придётся им пользоваться, потому что выбора нет. При этом ещё и вникать в кишочки этого говнеца, полностью в нём вымазавшись.
Аноним 17/12/22 Суб 13:42:00 #987 №2543860 
>>2543820
Почему ты ещё не программируешь на ассемблере с такой логикой?
Аноним 17/12/22 Суб 13:45:59 #988 №2543862 
>>2543860
Программирую, но программисты на ассемблере не нужны.
Аноним 17/12/22 Суб 16:22:39 #989 №2543942 
Сейчас работаю на десктопе, через ~год (если айти до конца не здохнет) хочу перекатиться в веб. Как лучше сделать, чтобы увеличить шансы на вкат + чтобы было по-сытнее? Рассматриваю 2 пути - ASP.NET + js + react (не хотел бы связываться с динамикодрисней, можно ts учить без js? нужен ли хтмл и css? какой-то другой фрейм для фронта мб?) - фуллстак вариант, или же ASP.NET + Go - чисто бэкенд варик, с мб полностью переходом на го - платят вроде больше. Что посоветуйте, аноны?
Аноним 17/12/22 Суб 17:00:30 #990 №2543960 
>>2543942
Java + Spring
Аноним 17/12/22 Суб 17:15:14 #991 №2543971 
>>2543942
Лучше смотри в сторону .NET с модными молодежными микросервисами, без ГОвна только. Я сам декстоп винФормс + чистый бэкенд, но монолиты. Перекатиться с миддла почти 4 лвл на миддл/+ на чистого бэкендера с стейт-оф-арт стеком пока не получается.
Аноним 17/12/22 Суб 17:19:20 #992 №2543976 
>>2543960
Пошёл нахуй.
Аноним 17/12/22 Суб 17:33:20 #993 №2544002 
>>2543960
Фу, я учился на это. Не хочу обратно.
Аноним 17/12/22 Суб 17:38:19 #994 №2544008 
>>2543971
Ну в сторону модных молодежных сервисов и смотрю, только как в них с десктопа залететь - вопрос. В вебе я сделаю выпуки на уровне вкатунцов курсовых.
Аноним 17/12/22 Суб 18:13:48 #995 №2544029 
>>2543820
Какой забористый бред ты несешь. Жавист, уходи. Ну просто траллишь же, что допустимо, но хоть бы не делал это так уныло.

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

> то придётся им пользоваться
да прям таки. неудачные концепции отмирают. примитивная концепция new Thread()/BeginXXX в шарпе давно заменилась на удачную концепцию TPL/async+await и первое используют имхо только в школах школьники.
Аноним 18/12/22 Вск 16:43:18 #996 №2544826 
Если я хочу добавить для веб апи веб интерфейс, как лучше это сделать? Добавить страницу разор непосредственно в проект, или создать отдельный проект и вызывать апи из него?
Аноним 18/12/22 Вск 18:07:20 #997 №2544919 
image.png
Анон, почему Biba не реализует Abob'у?
Аноним 18/12/22 Вск 18:27:44 #998 №2544937 
>>2544919
Наведи мышкой и узнаешь.
Аноним 18/12/22 Вск 18:33:48 #999 №2544947 
>>2544937
Объясни мне, анон, без троллинга, почему Foo(IAboba aboba) не равно Foo(T aboba) если вместо T вызывающая сторона может поместить только IAboba?
Аноним 18/12/22 Вск 18:38:48 #1000 №2544953 
>>2544919
Потому что сишарп не поддерживает ковариантность и контравариантность
Аноним 18/12/22 Вск 19:47:10 #1001 №2545064 
>>2544947
Потому что интерфейс требует реализации конкретной функции, и ему похуй на твои ограничения.
Аноним 18/12/22 Вск 20:35:38 #1002 №2545139 
>>2545064
Ну так и скажите что пацаны не вывезли в таблице вызовов поэтому НИНУЖНО (ну или это я шиз и такого кейса никогда не было)

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

Если proposal на гитхабе накидать, индусы сделают или обоссут?
Аноним 18/12/22 Вск 20:35:57 #1003 №2545141 
14869921455072.jpg
Есть исходный лист, мне нужно запретить вмешиваться в него. Сто делает метод .AsReadOnly? Он делает дубликат коллекции или обходится малой кровью, выставляя какой нибудь флаг?

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

С одной стороны неизвестно кто и каким образом будет обращаться с твоим списком и логично делать копию на стадии формирования списка. С другой стороны метод обрабатывающий список как бы становится небезопасным т.к. шатает список, а пользователь может этого и не просил. Если будут двое копировать список, то дюже затратно.
Аноним 18/12/22 Вск 20:40:27 #1004 №2545150 
>>2545141
А, нашел. Это типа оболочка поверх существующего листа.
Аноним 19/12/22 Пнд 00:18:50 #1005 №2545348 
.png
А вы знали, что в щарпе уже 7 модификаторов доступа, а не 6?
Аноним 19/12/22 Пнд 01:33:40 #1006 №2545397 
>>2545139
ну ты создаешь open generic. Чтобы этой твой класс смог реализовывать интерфейс, компилятор должен сразу создать closed generic версию класса. И очевидно это не было сделано потому что "хз зачем это нужно"
Аноним 19/12/22 Пнд 01:36:01 #1007 №2545399 
>>2545348
пока не поддерживается решарпером - считай что такого нету
Аноним 19/12/22 Пнд 03:12:04 #1008 №2545441 
>>2545348
И? Опять заведешь шарманку, что "сложна - низапомнить"?
Аноним 19/12/22 Пнд 03:14:18 #1009 №2545442 
>>2545441
Ты меня с кем-то путаешь. Я не вижу ничего сложного в модификаторах доступа.
Аноним 19/12/22 Пнд 03:35:57 #1010 №2545448 
>>2545442
С модификаторами доступа есть проблема - их маловато
Аноним 19/12/22 Пнд 04:01:37 #1011 №2545455 
>>2545448
Как же хочется кастомные модификаторы доступа...
Аноним 19/12/22 Пнд 04:04:46 #1012 №2545457 
>>2545455
а еще методы без классов... и много другого
но увы шарп это жаваклон со всеми его детскими болячками.
Аноним 19/12/22 Пнд 04:09:06 #1013 №2545458 
>>2545442
Сорян, просто чуть выше был тип который жаловался на неимоверную сложность запоминания модификаторов в шарпе.
Аноним 19/12/22 Пнд 08:19:54 #1014 №2545523 
>>2545348
И нафига он нужен? Почему в джаве прекрасно живут в 4 модификаторами доступа, а в сишарпе их всегда мало?
Аноним 19/12/22 Пнд 08:49:26 #1015 №2545546 
>>2545523
некоторые и с одной ногой нормально живут.
Аноним 19/12/22 Пнд 08:53:40 #1016 №2545547 
>>2545546
А некоторые себе третью пришивают
Аноним 19/12/22 Пнд 09:47:23 #1017 №2545579 
>>2545547
Ну, не знаю, как насчет ноги, но от третьей руки я бы не отказался.
Аноним 19/12/22 Пнд 09:48:12 #1018 №2545580 
>>2545523
>И нафига он нужен?
В основном, для кодогенераторов.
Аноним 19/12/22 Пнд 12:04:54 #1019 №2545734 
>>2545523
В крестах вообще 3 и всем хватает!
Аноним 19/12/22 Пнд 12:07:15 #1020 №2545737 
>>2543676
Че так рвонкьнул то?
Аноним 19/12/22 Пнд 12:10:54 #1021 №2545748 
изображение.png
Почему тру?
Аноним 19/12/22 Пнд 12:14:36 #1022 №2545763 
>>2545748
Потому что петушарп.
Аноним 19/12/22 Пнд 12:25:25 #1023 №2545784 
>>2545748
Оптимизация компилятора
Аноним 19/12/22 Пнд 12:43:11 #1024 №2545816 
>>2545523
потому что интернирование строк
Аноним 19/12/22 Пнд 13:37:09 #1025 №2545889 
Почему говорят о модели в рамках MVC как об одной сущности? Но ведь по факту там их две: POJO-объекты, которые определяют тип модели, и репозиторий, который определяет где это всё хранится. Почему тогда не выделить в MVC четвертый компонент R, чтобы было понятно всем?
Аноним 19/12/22 Пнд 13:45:50 #1026 №2545905 
>>2545889
Репозиторий ты моделью не считаешь?
Аноним 19/12/22 Пнд 14:23:09 #1027 №2545938 
>>2545905
Нет, это хранилище
Аноним 19/12/22 Пнд 14:37:33 #1028 №2545951 
>>2545938
Хранилище это база данных. Репозиторий - это слой доступа к данным. Его в принципе может и не быть.
Аноним 19/12/22 Пнд 15:03:13 #1029 №2545968 
>>2545951
Вы как хотите, а я буду использовать паттерн MVCR
Аноним 19/12/22 Пнд 15:14:09 #1030 №2545979 
>>2545968
А чо ты только M развернул и то не полностью? Разворачивай V и C тоже, получишь аббревиатуру из 20 букв.
Аноним 19/12/22 Пнд 15:39:49 #1031 №2545998 
Итт есть блейзеро-зумеры? В каком же я ахуе какой я долбаёб и повелся на новомодные технологии какое майки выслали говно - на данный момент у меня полностью пизданулась отладка проекта. Суть: зашёл в свой блейзоро проект спустя несколько месяцев (допиливал на .net framework легаси говно) попутно обновляя студию. Сейчас у меня 17.4.3 студия - блейзоропроект при запуске висит в вечном лоад стейте (да, веб проект в дебаг среде просто перестал загружаться) и выдает какую-то одну из ебанутых ошибок в консоли браузера, сейчас например "WebSocket connection to 'wss://localhost:port/projectname/' failed. Error in connection establishment: net::ERR_CERT_DATE_INVALID. То есть сейчас у меня по сути только последний паблиш релиз живой.
У меня и раньше отапливался websocket со студией, но по крайней мере с ним отапливался только хот релоад и отладка на стороне клиента (что тоже конечно хуево), а сейчас совсем нихуя не запускается. Гугление навскидку пока нихуя не дало.
Аноним 19/12/22 Пнд 15:55:19 #1032 №2546025 
>>2545998
Потому что микрософты в каждой новой версии всё ломают. Я про это постоянно говорю, но мне никто не верит.
Аноним 19/12/22 Пнд 16:26:01 #1033 №2546050 
Завтра первый собес, стек .Net Core, EF, WCF, Azure, Docker.
Вообще не ебу какие вопросы будут и что подучить чтобы не полностью обосраться.
Аноним 19/12/22 Пнд 16:36:29 #1034 №2546058 
>>2546050
Выучить модификаторы доступа. Их любят спрашивать, потому что на них легко завалить.
Аноним 19/12/22 Пнд 16:42:22 #1035 №2546060 
>>2546050
На вскидку:
- отличие doble, int, decimal
- что возвращает метод async
- отличие абстрактного класса от интерфейса
- объясни модификаторы доступа в c#
- отличие unit тестирования от integration
Можешь посмотреть ещё c# design patterns, бывает, что спрашивают.
Аноним 19/12/22 Пнд 17:56:36 #1036 №2546205 
>>2546050
Могут ещё на знание сахарка пример подлый подсунуть, чтобы проверить не с джавы ли ты свичнулся.
string checkNull(string? maybeNull)
{
return maybeNull == null ? null : "";
}
Аноним 19/12/22 Пнд 18:39:56 #1037 №2546250 
>>2546205
и в чем прикол?
Аноним 19/12/22 Пнд 18:50:15 #1038 №2546263 
А возможно сделать дупликат экземпляра класса?
Аноним 19/12/22 Пнд 19:14:25 #1039 №2546290 
>>2546250
А то, что вся эта мишура с защитой ссылочных типов от null не работает.
Аноним 19/12/22 Пнд 19:23:19 #1040 №2546296 
>>2546290
А, типа возвращаемое значение string а не string? и все равно вернет null метод если тру?
Аноним 19/12/22 Пнд 19:25:10 #1041 №2546300 
>>2546263
Есть такой интерфейс ICloneable

И какой толк от него, если кго функция Clone требует возврата Object, а не нужного мне класса?
Аноним 19/12/22 Пнд 19:48:28 #1042 №2546323 
А какую книгу читать по Entity Framework?
Аноним 19/12/22 Пнд 21:46:37 #1043 №2546526 
А что это за чудо такое KeyStates? Оно, к примеру, есть в эвенте DragDrop.
Если нажать несколько клавиш и вывести KeyStates в консоль, то пишутся состояния через запятую, типа:
LeftMouseButton, ShiftKey

Перечисления ведь передаются в единственном числе.
Аноним 19/12/22 Пнд 21:49:47 #1044 №2546529 
>>2546526
Они складываются, а вывод в консоль это как-то детектит.
LeftMouseButton = 1
ShiftKey = 4
На выходе будет 5
Аноним 19/12/22 Пнд 23:29:12 #1045 №2546681 
>>2545889
хотят и говорят. это логическое деление
V - вид отображающий
M - вся логика которая что то делает
C - отвечает за связь остальных букв и интерактив

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

Ну кроме тех, которые "постойте постойте, кака така модель? я вот моделями называю классы, что репа с ними работает, а тут модель что то не то, вы что угораете?"
Аноним 20/12/22 Втр 05:11:03 #1046 №2546767 
>>2534803
Бамп вопросу.
Аноним 20/12/22 Втр 05:26:12 #1047 №2546771 
эвенты или теребоньканье интерфейсов?
Аноним 20/12/22 Втр 07:14:55 #1048 №2546789 
>>2546771
котики и велосипеды
Аноним 20/12/22 Втр 07:47:25 #1049 №2546791 
>>2546789
Да.
Аноним 20/12/22 Втр 08:06:03 #1050 №2546794 
>>2546767
С нуля не реально. Нужно знать какой-нибудь язык типа джавы, тогда за полгода-год реально осилить. Но имей ввиду, что за это время микрософты выпустят новые версии сишарпа и дотнета и придётся снова переучиваться. Следующая версия как раз LTS, а они любят под неё все переворачивать с ног на голову.
Аноним 20/12/22 Втр 09:44:02 #1051 №2546833 
>>2546794
То есть на шарп лучше свитчиться, а не входить с нуля?
Аноним 20/12/22 Втр 09:48:22 #1052 №2546836 
>>2546833
давно известно что первый язык (программирования или разговорный) выучить сложнее всего. Остальные идут намного легче. И чем больше базового познаешь - тем легче очередной язык.

так что нет понятия "лучше", есть "легче", но шарп тут не причем. Это касается вообще любого языка схожего по парадигме.
Аноним 20/12/22 Втр 10:15:57 #1053 №2546863 
>>2546833
Можешь выучиться старый сишарп, а потом свичнутся на новые версии
Аноним 20/12/22 Втр 10:40:32 #1054 №2546882 
>>2546833
Он троллит. Речь идет о нюансах, к которым новичку как до Китая раком. Никто основы основ не переворачивает.

Я как новичок, максимум с чем сталкивался — затупом найти нужный шаблон на старте.
Аноним 20/12/22 Втр 13:29:52 #1055 №2547138 
>>2546794
С жабы на шарп перешел за 2 недели тестового.
Аноним 20/12/22 Втр 13:34:20 #1056 №2547150 
>>2547138
А где взял книги по актуальной версии? Как учил модификатора доступа?
Аноним 20/12/22 Втр 17:11:41 #1057 №2547461 
>>2543703
Петушарп в принципе включает многое из жабы, на нём в теории можно писать понятный код. В теории. На практике майки себе в обезьянки заделали тех, кого легче всего заделать - самых тупых кодомакак. И теперь мы имеем, что имеем - живое представление того, как из двух почти идентичных языков можно сделать абсолютно разные экосистемы.
Аноним 20/12/22 Втр 19:42:22 #1058 №2547665 
>>2546050
И как?
Аноним 20/12/22 Втр 20:29:53 #1059 №2547699 
>>2547150
Не спрашивали всю эту хуйню. Дали тестовое - я его норм сделал не без огрехов и взяли. В процессу всю эту залупу можно выучить. И то, по необходимости.
Аноним 20/12/22 Втр 20:39:50 #1060 №2547712 
>>2547699
В чём преимущества и недостатки сишарпа по сравнению с джавой? Что выбрать новичку: джаву или сишарп?
Аноним 20/12/22 Втр 22:34:52 #1061 №2547824 
>>2547712
Те не похуй? Нормальные оба языка, мне сисярп больше нравится - приятно на нем писать.
Аноним 20/12/22 Втр 22:40:06 #1062 №2547828 
>>2547712
Если сомневаешься, то точно в джаву.
Аноним 20/12/22 Втр 22:41:17 #1063 №2547829 
>>2547712
По задачам.
Аноним 21/12/22 Срд 00:18:52 #1064 №2547894 
>>2547712
Петушарп позорно использовать. Если по существу - огромное количество говнокода, вечные попытки догнать жабу, уебищная экосистема.
Аноним 21/12/22 Срд 00:20:37 #1065 №2547896 
>>2547894
Как там в 2005?
Аноним 21/12/22 Срд 00:21:48 #1066 №2547898 
>>2547896
Отлично, петушарп-нахрюка ещё нет.
Аноним 21/12/22 Срд 00:24:30 #1067 №2547900 
>>2547898
Как там в 1999?
Аноним 21/12/22 Срд 00:27:19 #1068 №2547902 
>>2547900
Отлично, даже самого петушарпа ещё нет.
Аноним 21/12/22 Срд 00:33:36 #1069 №2547908 
>>2547902
Зато есть проприетарная жаба, оракл и WebSphere. Эх, были времена...
Аноним 21/12/22 Срд 07:47:20 #1070 №2548017 
Capture.JPG
хочу найти объект по словарю в иерархии снизу вверх
есть в такой рекурсии подводные камни?
Аноним 21/12/22 Срд 08:24:04 #1071 №2548024 
flenov.jpg
>>2547894
>Петушарп позорно использовать
Я такое уже неоднократно слышал, но не понимаю почему. Это из-за микрософта?

>уебищная экосистема
Тут ты не прав. Наоборот в дотнете всё доступно из коробки. А вот в джаве наоборот надо выискивать от сторонних разработчиков и применять разной кривости решения.
Сравнить тот же Thymeleaf и Razor. В первом нельзя делать даже вложенные шаблоны, а второй позволяет чуть ли не писать код вперемешку с разметкой, полная свобода.
Аноним 21/12/22 Срд 10:45:28 #1072 №2548112 
Как перейти с ASP.NET Core 5 на ASP.NET Core 6?
Аноним 21/12/22 Срд 11:26:12 #1073 №2548133 
>>2548112
https://learn.microsoft.com/en-us/aspnet/core/migration/50-to-60?view=aspnetcore-7.0&tabs=visual-studio
Аноним 21/12/22 Срд 16:27:30 #1074 №2548438 
>>2548024
>Это из-за микрософта?
Убогий клон жабы с кучей бесполезного говносахара, кучей говнокода в экосистеме от школьников, кучей школьников в комьюнити, кучей анальных палок всем системам, кроме шинды, куча пиздежа, в том числе про кроссплатформенность.
Аноним 21/12/22 Срд 17:01:38 #1075 №2548479 
>>2548438
Что ты предлагаешь? Учить джаву?
Аноним 21/12/22 Срд 17:30:42 #1076 №2548536 
>>2548479
Че там учить? Синтаксис осознаётся за сутки.
Аноним 21/12/22 Срд 17:41:41 #1077 №2548557 
>>2548536
А дальше? Спринг там, кафки всякие?
Аноним 21/12/22 Срд 17:46:01 #1078 №2548566 
>>2548557
Не нужно.
Аноним 21/12/22 Срд 18:41:38 #1079 №2548612 
>>2548438
>жабы с кучей бесполезного говносахара,
жабист не палится. совсем не палится. привык к МНОГОСЛОВНЫМ, монструозным, многостраничным описаниям ПРОСТЫХ вещей и считает что его говно не пахнет )
Аноним 21/12/22 Срд 20:07:38 #1080 №2548746 
>>2548612
>)
Чё так рвонькнул-то?

Пока жабисты ставят @AllArgsConstructor и @Getter, петушарперы пишут убогое {get, set}.
Аноним 21/12/22 Срд 20:51:41 #1081 №2548796 
>>2548746
А мне нравится явно писать геттеры-сеттеры. Код как-то красивее выглядит с ними. А сишарпные { get; set } к тому же не гибкие, к ним надо костылить дополнительное поле, которое жрёт ещё память.
Аноним 21/12/22 Срд 21:18:58 #1082 №2548821 
>>2548746
Магические атрибуты - убивают жаву, няша.
Это очень плохая хуйня. Негодная.
Чем больше магии, тем хуже. Банально, ты не можешь даже перейти к куску кода, который эту магию делает.
Вот майки - это поняли и потому - из фреймворка потихоньку выпиливаются атрибуты магические. И это - хорошо.
Аноним 21/12/22 Срд 21:40:22 #1083 №2548843 
>>2548796
Это такой троллинг тупостью? Шарповые геттеры и сеттеры это просто сахарок для методов huinya getHuinya() и void setHuinya(huinya value). Они настолько же гибкие, как и явные геттеры и сеттеры. Или ты каким-то чудесным образом придумал как хранить состояние объекта, не заводя под них поля внутри класса, которые в эти геттерах и сеттерах вертишь? С производительностью и потреблением памяти там все одинаково. Единственная разница, что со свойствами компилятор за тебя генерирует часть бойлерплейтного кода.

Вот, на покури, как это все в CIL выглядит:
https://sharplab.io/#v2:C4LglgNgPgAgTARgLAChUwMwAJ5YOID2AbgHYFYDeqWNO2YJwWAgpVgOYCmwA3FgM7c+AX1Si0KTDjhYAsgQDGACwCGlarQAOAJzBEVwTlgZMA+ip4aaVuscYssNio5S03HblgC8APnN8bN0EmXyxzbyx9CABXTgDXWnFxdGxcWRUIFQAzAE81KgSaHT0DIxMwixsbKXK8bmYACgBKFzdnQNoYAHYKy0KscTdq1IAWLABleobyqNiWp1b3GnCvSIzY+LckoA

Как можешь заметить, для свойств сгенерировались методы-геттеры (get_A) и методы-сеттеры (set_A). И тела у них такие же, как у написанных ручками.
Аноним 21/12/22 Срд 21:53:42 #1084 №2548854 
хватит кормить жабу уже...
Аноним 21/12/22 Срд 22:00:53 #1085 №2548863 
>>2548821
>ряяяяяяяяя!!!!
А по делу есть чё сказать? Например там пруфы что это магические атрибуты и что я должен ручками, как истинный петушарпер, делать конструкторы?
Аноним 21/12/22 Срд 22:02:28 #1086 №2548866 
КРИВОРУКОЕ ШКОЛОКОМЬЮНИТИ ПЕТУШАРПЕРОВ НЕ ЗАВЕЗЛО ЛОМБОК
@
РЯЯЯЯ НИНУЖНА!!! И ЭТА ВАЩЕ МАГИЯ!!!
@
С ЛИЦОМ АНАЛЬНИКА ДУБЛИРУЕШЬ ВСЕ ПОЛЯ В КОНСТРУКТОР
@
@
@
ДОБАВЛЯЕШЬ МАГИЧЕСКОЕ {get, set} К ПОЛЯМ
Аноним 21/12/22 Срд 22:04:54 #1087 №2548868 
>>2548863
Ну. Дык это буквально магические атрибуты.
Если ты взглянешь на них, без знания, что это за магия - ты не поймешь как они работают. Ты не можешь перейти и посмотреть что за код выполняется, как и где. Конструкторы - имеют 0 ссылок на вызов. Приватные поля - магическим образом получают геттер-сеттер.
Это магия в чистом виде.
А любая магия в программировании - плохо.
И да. В шарпе - такую же магию ты можешь запилить сам буквально за 10 минут. Просто тебя ссаными тряпками закидают, и именно потому что это магия, которая не решает никаких проблем, но усложняет понимание твоего кода.
Аноним 21/12/22 Срд 22:06:01 #1088 №2548869 
>>2548868
>ЯСКОЗАЛ ЭТО МАГИЯ А 100500 БЕСПОЛЕЗНЫХ КОНСТРУКЦИЙ ЯЗЫКА НЕ МАГИЯ ПОНЯЛИ ДА?
Аноним 21/12/22 Срд 22:07:40 #1089 №2548871 
>>2548868
>РЯЯЯЯЯЯЯЯЯ ЯСКОЗАЛ ЛУЧШЕ РУЧКАМИ КОНСТРУКТОРЫ ПИСАТЬ ПОТОМУ ЧТО КРИВОРУКОЕ ШКОЛОКОМЬЮНИТИ НЕ СМОГЛО В ЛОМБОК, ЯСКОЗАЛ НЕУДОБНО @ALLARGSCONTRUCTOR ПИСАТЬ, ПОТОМУ ЧТО РЯЯЯЯЯЯЯЯЯЯЯ
Аноним 21/12/22 Срд 22:44:26 #1090 №2548903 
РЯЯЯ АРЯЯЯЯ
Аноним 21/12/22 Срд 22:56:17 #1091 №2548914 
>>2548746
вы только посмотрите. мне тут ранее хвалились что IDE сама генерит getVar()/setVar() и это был повод для гордости.

это ж как издеваются над жавистами что заставляют их плодить бойлерплейт код, хотя компилятор мог бы генерить
Аноним 21/12/22 Срд 23:49:04 #1092 №2548950 
2022-12-2123-43-00.png
Что такое RoutedEvent и откуда его высрать?

Хотел создать событие SelectionChanged для собственного класса, и под это дело решил заюзать дефолтный SelectionChangedEventArgs. Но эта параша требует id класса RoutedEvent (первый параметр).

Простите за французский бейсик, но думаю все ясно.
Аноним 21/12/22 Срд 23:51:54 #1093 №2548954 
Бля, не был 3 дня, а тут какой-то срач с джавистом. Походу няша, который тут отвечал по делу, давно съебался.
Аноним 21/12/22 Срд 23:53:15 #1094 №2548956 
>>2548954
Я - отвечаю по делу, если ответ знаю и вопрос нормальный.
Аноним 22/12/22 Чтв 08:17:02 #1095 №2549081 
Есть две книжки Фримана по ASP.NET и Entity версии 2.1. Но как потом перейти на 7 версию? Сильно ли это сложно?
Аноним 22/12/22 Чтв 09:18:27 #1096 №2549107 
>>2549081
>Но как потом перейти на 7 версию?
Учишь по книжкам, делаешь проекты. Когда будешь готов, открываешь официальное руководство от майков по переходу с 2.1 на 7.0 и переводишь свои проекты. В процессе научишься.

>Сильно ли это сложно?
Если учишься по принципу: "скопировал пример из книжки, если собралось/запустилось - то значит я научился, идем дальше", то да. Если же вдумчиво перебираешь кишочки и понимаешь зачем и что нужно, то нет.
Аноним 22/12/22 Чтв 12:22:54 #1097 №2549228 
Почему в Visual Studio 2022 надо генерировать миграции через консоль, а не через кнопочки в самой среде? Почему они это не встроили?
Аноним 22/12/22 Чтв 12:37:03 #1098 №2549253 
>>2549228
Потому что так диды делали и ты будешь.
А если серьезно, потому что dotnet-ef не часть студии.
Если же тебе прямо совсем нужно, то там вроде были расширения для консолефобов, позволяющие мэнеджить миграции из студии.
Аноним 22/12/22 Чтв 12:42:21 #1099 №2549262 
>>2549253
Дак проще тогда всё делать в VS Code. Там и консоль удобнее и файлы сами сохраняются, да и выглядит модно-молодёжно.
Аноним 22/12/22 Чтв 14:01:03 #1100 №2549413 
Авторизация считается бизнес логикой? Или ее можно всю в контроллерах реализовывать?
Аноним 22/12/22 Чтв 14:02:26 #1101 №2549415 
>>2549228
Можно делать через диспетчер пакетов. Кнопочкой выбираешь нужный проект в решении, вводишь add-migration initial и наслаждаешься.
Аноним 22/12/22 Чтв 14:17:28 #1102 №2549435 
>>2549262
Делай, я разрешаю.
Аноним 22/12/22 Чтв 14:33:35 #1103 №2549456 
>>2549228
В райдере встроено
Аноним 22/12/22 Чтв 15:05:02 #1104 №2549478 
>>2549456
Если бы я был богатый, то купил бы платную идею и учил джаву.
Аноним 22/12/22 Чтв 15:10:01 #1105 №2549489 
>>2548950
> RoutedEvent
https://learn.microsoft.com/ru-ru/dotnet/desktop/wpf/events/how-to-create-a-custom-routed-event?view=netdesktop-6.0
Аноним 22/12/22 Чтв 16:18:46 #1106 №2549554 
23456971452687908.png
24253.png
Суп, подскажите, что сделать с этим?
Пик 1 - проблема
Пик 2 - то, что я установил
Пробовал и в VS 19, результат один
Раньше как-то получалось.
Сейчас: в дизайнере форма есть, но при сборке проекта ошибка
Да, на Шарпе это всё проще, но мне надо на крестах, но не собирается

Извиняюсь, что сру уже в третий тред этим, просто испытываю довольно жёсткий баттхёрт с этого. Помогите, пожалуйста...
Из треда плюсов послали к вам
Аноним 22/12/22 Чтв 16:41:19 #1107 №2549585 
В джаве есть восьмеричные литералы, а в сишарпе их нет
Аноним 22/12/22 Чтв 16:44:29 #1108 №2549592 
>>2549489
Спасибо, я видел эту простыню и она меня сукгнула. Хотя щас еще раз пересмотрел и по факту нужна только часть EventManager.RegisterRoutedEvent.
Аноним 22/12/22 Чтв 16:48:27 #1109 №2549596 
>>2549585
>а в сишарпе их нет
Пидора ответ, а еще в названии сишарпа нет слова java.
Не пиши сюда.
Аноним 22/12/22 Чтв 16:50:17 #1110 №2549599 
>>2549585
Ни разу не юзал восьмеричные литералы, даже не знал, что они есть.

мимо джавист
Аноним 22/12/22 Чтв 16:50:18 #1111 №2549600 
>>2549554
Я не понимаю о чем речь идет. Когда-то открывал исходники на C++ и тоже была муть с версиями VS. В 2015 открывается, а в 2019 и выше — нет.
Аноним 22/12/22 Чтв 16:55:48 #1112 №2549607 
>>2549600
>Я не понимаю о чем речь идет.
Мне винформу нужно создать, при запуске получается пикрил
Не понимаю, может, установил что-то ненужное и происходит конфликт?
Аноним 22/12/22 Чтв 16:56:36 #1113 №2549610 
>>2549607
Винформа на C++?
Аноним 22/12/22 Чтв 16:58:39 #1114 №2549614 
>>2549610
Да. CLR Empty Project (.NET) -> Project -> Add new item - > UI -> Windows Form
Аноним 22/12/22 Чтв 17:04:22 #1115 №2549628 
>>2549607
Ну я с тапким точно не имел дела. А ты пробовал искать по всему проекту конфликтующие строки?
Аноним 22/12/22 Чтв 17:18:30 #1116 №2549658 
>>2549554
У тебя там где-то затисались 2 версии одной библиотеки.
Разрули руками какую использовать. Чревато тем, что половина всего отвалится.
Аноним 23/12/22 Птн 09:03:07 #1117 №2550438 
>>2549596
>Не пиши сюда
А вы не будете скучать?
Аноним 23/12/22 Птн 12:21:30 #1118 №2550619 
Есть список условных кнопок Buttons
Есть переменная так называемой активной кнопки ActiveButton, где лежит ссылка на одну из кнопок списка Buttons.

Как мне сделать так, чтобы событие нажатия кнопки срабатывало только от ActiveButton?
Есть какое-то лаконичное решение без подписки на всю сотню кнопок списка Buttons? Может через какой-то биндинг.

Вот я видел, что в DataTemplate (xaml) можно привязать событие к каждому итему в списке. Он что, рили подписывается на каждый итем из списка?
Аноним 23/12/22 Птн 15:34:40 #1119 №2550832 
>>2550619
Через ling Where (x=>x.ActiveButton == true):
Аноним 23/12/22 Птн 16:26:03 #1120 №2550926 
Дак правда что ли, что в Entity надо генерировать миграции через консоль? Я ни как не могу принять этот факт.
Аноним 23/12/22 Птн 16:42:17 #1121 №2550947 
>>2550926
Да, а что такого? Удобный способ.
Аноним 23/12/22 Птн 16:56:27 #1122 №2550969 
>>2550947
Не знаю. Мне как-то не комфортно от этого.
Аноним 23/12/22 Птн 16:57:40 #1123 №2550974 
>>2550969
dotnet ef migrations add PizdaBilyat
dotnet ef database update
Что не так? Тряска? Неуверенность? Пройдет с опытом.
Аноним 23/12/22 Птн 18:03:34 #1124 №2551075 
Посоны, какой версии asp.net core сейчас стоит изучать? На метаните уже лежит 8 версия, но полно хороших гайдов под .net core 2.2, у того же kudvenkat 120 видосов по нему.
Аноним 23/12/22 Птн 18:05:28 #1125 №2551080 
>>2551075
Ниже 3.1 не имеет смысла.
Аноним 23/12/22 Птн 18:06:55 #1126 №2551082 
>>2551075
7 версия*
>>2551080
Окей, спасибо. Есть годный мануал с примерами, могу и ютуб и серию статей или метанита хватит?
Аноним 23/12/22 Птн 18:15:14 #1127 №2551103 
>>2551075
4.8
Аноним 23/12/22 Птн 18:17:44 #1128 №2551112 
>>2551080
А разве 3.1 уже не поддерживается? Или оно в основном сейчас всеми все еще юзается?
Аноним 23/12/22 Птн 18:36:35 #1129 №2551148 
>>2551112
После 3.1 не было существенных изменений.
Аноним 23/12/22 Птн 18:39:16 #1130 №2551153 
>>2551148
Как это не было? Они в 6 убрали Startup.cs и теперь не понятно куда писать код.
Аноним 23/12/22 Птн 19:31:50 #1131 №2551248 
>>2551112
На 3.1 успели написать достаточно много и монолитов и микросервисов (которые как раз стало удобно делать начиная с 3.1). Поэтому вероятность даже в следующем году попасть на проект с 3.1 где тебе предстоит что-то доделывать или писать новое - достаточно высока. Плюс никто не даст джуну писать, что-то новое сразу на .net6 или .net7, такие игрушки дяди сеньоры оставляют для себя. Ну а идти работать без опыта куда-то где есть что-то ниже чем 3.1 смысла нет.
Аноним 23/12/22 Птн 22:23:32 #1132 №2551442 
>>2551248
Спасибо, что пояснил. Посоветуешь хорошей литературы по этой версии? Кроме 3 часового видоса на ютубе и книжки на 130 страниц мало гуглится
Аноним 23/12/22 Птн 22:25:05 #1133 №2551445 
>>2551442
А, еще 10 часовой видос, но это по mvc, хз, юзают ли его до сих пор, мне чет кажется, что сейчас все на webapi + жаваскрипте, еще в некоторых вакансиях даже видел блейзор
Аноним 23/12/22 Птн 23:13:23 #1134 №2551513 
>>2551445
mvc от webapi отличается только чем ты пукаешь в ответ на запрос - технология то одна и та же. Бля... Мне видимо самоу придется учить жопаскрипт хэтэмээль и сисисэс... Не хотю...
Аноним 23/12/22 Птн 23:15:11 #1135 №2551518 
>>2551513
и как данные на фронт идут - формируются динамически и отправляются в случае разора и прочей обмазанной жабаскрипто дрисни, или же пукаешь жсончиком на развернутый в браузере фронт.
Аноним 24/12/22 Суб 00:16:13 #1136 №2551589 
ПЕРЕКОТ НАХОЙ!!!
>>2551587 (OP)
>>2551587 (OP)
>>2551587 (OP)
Аноним 24/12/22 Суб 00:32:18 #1137 №2551598 
>>2551442
>Посоветуешь хорошей литературы по этой версии?
Хуй знает, я за 5 лет в профессии ничего кроме Рихтера и краткого справочника Албахари не читал. Все остальное по офф. докам от майкрософта изучал, там инфа по всем версиям есть.
Аноним 24/12/22 Суб 00:56:36 #1138 №2551609 
>>2551513
Я тоже не хотю учить жаваскрипт и хэтэмээль, я только закончил 150 уроков по sql от kudvenkat, думал я до этого SQL знал, а оказывается нихуя и у того же метанита наверное всего 20% контента, которое он описывает.
>>2551598
Хуясе ты чад, я Рихтера тоже читал, но давно, хотя многое до сих пор помню.
Аноним 25/12/22 Вск 10:31:04 #1139 №2553013 
>>2551609
Хз у меня на работе десктоп, есть webapi небольшое. Поковыряю асп.нет, поковыряю всякие медиаторы cqrs немного тестов и прочую дрисню крутану еще годик попыта и влечу куда-нибудь надеюсь посытнее. План такой. Насчет фронтодрисни хз, если честно. Пока молодой все интересно, все хочется потыкать, но энивей времени есть где-нибудь полгода - нужно как-то концентрированно зазадротить. С жабаскриптохуйней вроде шансов повыше залететь, но платят фулстакам все равно меньше чем ГО-внерам, хотя хз.
Аноним 25/12/22 Вск 23:21:08 #1140 №2553798 
>>2553013
Хех, я только что отсмотрел 150 видосов от kudvenkat по sql, дальше у майкрософтов прочту про asp.net core 5, позадрачиваю некоторые задачки на литкоде, попробую парочку проектов на гитхаб аплоднуть, выучить git и docker, повторить энтити фреймворк и пойти уже собеседоваться.
Думаю за месяца 2 управлюсь, я до этого уже имел опыт и с asp.net core и энтити фреймворков и sql, но вот html, javascript и css у меня соснулые.
Аноним 26/12/22 Пнд 10:17:02 #1141 №2554034 
>>2550619
> событие нажатия кнопки срабатывало только от ActiveButton?
Чагоблять?
У тебя все кнопки видны? Их все можно нажать? Но одна из них будет работать? Ты сам то не чувствуешь проёб в дизайне своём?
Аноним 28/12/22 Срд 19:05:00 #1142 №2556579 
Что полезно изучить за сутки к собеседованию на позицию джуна c#? (а точнее даже стажера)
Перекатываюсь из 1с, тестовое задание сделал как-то по наитию
Аноним 29/12/22 Чтв 11:46:07 #1143 №2557100 
>>2556579
На ютубе есть полно курсов по шарпу, типа многочасовых видео.
Смотришь 10 часов шарпа, потом 4 часа EF, 4 часа форм, 6 часов ASP. Как раз укладываешься.
Помощь новичку в освоении Новенький 02/01/23 Пнд 16:04:58 #1144 №2560931 
Доброго времени суток всем работягам! Начинаю, в это нелегкое время, свой тернистый путь C# разработчика. Меня интересует преимущественно бэкенд. Хотелось бы в этом треде найти единомышленников или людей с опытом работы в этой индустрии. Изучаю шарп уже полгода, но всё равно чувствую, что во многих местах присутствуют пробелы в знаниях (как минимум на тестовых заданиях и интервью при трудоустройстве). Я понимаю, что есть огромное количество учебных материалов и ресурсов, но откровенно говоря, в них можно просто утонуть, затянув при этом свое обучение на долгие, долгие годы. Поэтому хотелось бы найти человека, который поможет сориентироваться на месте и подсказать несостоявшемуся джуну как оно всё устроено на самом деле. Надеюсь на Ваше понимание)
Аноним 02/01/23 Пнд 20:02:10 #1145 №2561151 
>>2560931
то есть ты хочешь бесплатно
получить себе наставника?
Аноним 03/01/23 Втр 14:28:12 #1146 №2561700 
>>2561151
Если отвечать прямо на этот вопрос, то да.
Меня больше интересуют идейные люди, чьи интересы не ограничиваются работой "от" и "до".
Это всё на добровольной основе и никак не регламентировано. Я буду благодарен любой помощи, даже если это будет 10 минутная переписка с наставлениями и рекомендациями.
comments powered by Disqus

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