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

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

Ответить в тред Ответить в тред
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 747 105 166
C# 9 Preview 6 дотнета тред #57 /csharp/ Аноним 11/07/24 Чтв 23:53:45 3218883 1
image.png 534Кб, 750x422
750x422
d74573e2-0aa3-4[...].jfif 205Кб, 1024x1024
1024x1024
image.png 50Кб, 1000x1000
1000x1000

Запоздалый перекот треда о лучшем языка на планете.

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

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

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

4. С# для игр
https://ru.stackoverflow.com/a/609901/422180

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

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

Шапка: https://pastebin.com/HT7Hi6FD
Прошлый тред: >>3218902 (OP)

Аноним 11/07/24 Чтв 23:57:11 3218885 2
Главное - не кормить залётных джавистов.
Аноним 07/10/24 Пнд 12:19:37 3291612 3
Подскажите хорошую книжку для новичка, хочу написать клиент-сервеное приложение, работа с файлами.
Аноним 11/10/24 Птн 06:54:44 3295052 4
978-5-8459-1555[...].jpg 74Кб, 341x501
341x501
clr.jpg 158Кб, 650x924
650x924
>>3291612
По сути, в дотнете две книжки, которые стоит прочитать. Там объясняется как вот это вот всё работает.

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

Если хочется кратко и быстро, читай https://professorweb.ru/ и https://metanit.com/
Аноним 11/10/24 Птн 07:15:31 3295056 5
Я в своём познании настолько преисполнился, что мне даже лень перечислять все дотнет-технологии, с которыми я работал.

Тут есть такие как я? Или тут только мальчики "решил написать первую программу на сишарп" и петушня из java-загона?
Аноним 11/10/24 Птн 08:33:14 3295082 6
>>3295056
У меня в резюме написано просто: C# MSSQL. Поэтому меня никто не берет на работу, ведь хрюшам надо типа работал с itextsharp 2.0, itextsharp 2.1, itextsharp 2.2, itext 5.5, itext 5.5.3, тогда сразу видно кокой опытный мущина.
Аноним 11/10/24 Птн 09:10:10 3295094 7
Еще вопрос, нахуя нам два треда?

Это как-то связано с тем, что дотнет фреймворков два, и везде нахваливают только дотнет кор, но про .net framework 4.5.2 НИ СЛОВА?

Анон, Binding Redirect помнишь? А что глазки отводишь? А как же кроссплатформенность под Windows и ад в Global Assembly Cache ?

А как ты свой ASPNET собираешься обновлять до дотнеткоровского?

Вот и два треда они как бы символизируют это.
Аноним 11/10/24 Птн 09:46:31 3295131 8
>>3295094
Дотнеткор - это из мира микропенисов, фулстека, крипто копро финтех аи стартапов и поиска работы раз в полгода. Негоже благородным господам нырять в этот чан с дерьмом. Продуктовые компании как сидели на классике, так и продолжают, максимум обновятся до 4.8, но это не точно. Если системе 15+ лет, никто не будет ее переписывать под очередную модную хуйню.
Аноним 11/10/24 Птн 16:22:59 3295477 9
>>3295131
Ну как бы да и как бы нет.

Если системе 15 лет, то она, наверное, хочет ещё 15 лет работать.

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

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

Но главное - делать.

Десктопные приложения, WPF - тут наверное тупик, пусть ебутся с о старьём
Аноним 11/10/24 Птн 17:13:06 3295528 10
>>3295477
Я видел систему, которая написана на дотнете 1.1 и собирается в студии 2003. До сих пор работает и приносит бабки, туда даже иногда дописывают новые фичи. Ценность новых фреймворков немного преувеличена.
Тут надо не переходить на очередной нет-стандарт-кор-ультимейт, а выкатываться из этого цирка. После ухода Гейтса микрософт покатился в пизду, в 2024 дотнет неиронично пытается конкурировать с нодежс в помойных стартапах, а ведь когда-то были планы подвинуть джаву в энтерпрайзе.
Аноним 11/10/24 Птн 17:43:19 3295552 11
>>3295528
>когда-то были планы подвинуть джаву в энтерпрайзе.

так говоришь, как будто не подвинули

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

эээ, ты еблан?
Аноним 11/10/24 Птн 18:16:14 3295618 12
>>3295552
Просто посмотри вакансии.
Аноним 14/10/24 Пнд 08:50:25 3297508 13
>>3295552
>> так говоришь, как будто не подвинули
А в чем подвинули? ржава даже подвинула Сишку на тиобе, в то время как шапр падает (хоть этот индекс и хуита собачья, но на безрыбье тоже можно смотреть)

Плюс политика мелкомягких насильно тащить всех в свой азур, начинает подбешивать
Аноним 14/10/24 Пнд 16:47:20 3298039 14
image.png 13Кб, 306x238
306x238
image.png 34Кб, 764x242
764x242
Вопрос по импортам в юнити, но мб я делаю что-то не так с сисярпом.

Хочу сгенерить сервис и месседжи из .proto файла, по гайду скачал зависимости, закинул куда надо (пик 1).

При этом в файл генерации не видит импорты (пик 2). Что я могу делать не так?
Аноним 14/10/24 Пнд 16:54:06 3298055 15
>>3298039
Отмена, я не импортировал Google.Protobuf
Аноним 14/10/24 Пнд 17:06:11 3298072 16
>>3218883 (OP)
Как вы храните изображения в бд? Asp.net mvc ef6
Я перевел base64 картинку в byte[] ImageData поле модели. Дальше хз как отобразить во view. У меня будет много изображений, поэтому 1 картинку во вьюбег не получится, тем более что мне надо вместе с определенным контентом картинки добавлять
Аноним 14/10/24 Пнд 17:29:02 3298100 17
>>3298072
Их не хранят в бд. Хранят ссылки на них. Ссылки, либо путь к файлу, хэш.
Аноним 14/10/24 Пнд 17:48:23 3298114 18
>>3298100
Так если изображение пользователь загружает.
Аноним 14/10/24 Пнд 20:33:32 3298273 19
>>3298100
>хэш

охуенный план, надёжный как швейцарские часы
Аноним 14/10/24 Пнд 20:35:34 3298275 20
>>3298114
Пусть пользователь загружает в любое другое хранилище, а ты в БД ссылки положи.
Аноним 14/10/24 Пнд 20:38:06 3298279 21
>>3298072
> Дальше хз как отобразить во view

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

[HttpGet]
[Route("files/uploads/{fileName}")]
public async Task<FileStreamResult> DownloadFile(string fileName)
{
Stream stream = await this._files.DownloadUploadedFile(fileName);
var response = File(stream, "image/jpeg");
return response;
}
Аноним 14/10/24 Пнд 20:42:27 3298284 22
>>3298273
А шо?

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

мимо
Аноним 14/10/24 Пнд 20:44:45 3298285 23
>>3298284
Или боишься колизий? Очень очень очень маловероятно если хороший хеш
Аноним 14/10/24 Пнд 21:44:05 3298307 24
>>3298279
Не понял, а как это во вью обработать. Я обычно ивент накладываю на какое-то действие чтобы пользователь вызвал аджаксом действие контроллера
Аноним 15/10/24 Втр 06:56:04 3298451 25
>>3298307

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

А всё остальное я бы делегировал коду, который в браузере запускается.
Аноним 15/10/24 Втр 07:11:44 3298457 26
image.png 891Кб, 777x582
777x582
>>3298284
>Зато дупликаты не нужно хранить.

Пожалуйста, скажи, что ты сначала проверяешь хеши на совпадение, и затем побайтово сравниваешь вероятные дубликаты? Напоминаю, что коллизии либо есть, либо их нет. Третьего не дано.
Аноним 15/10/24 Втр 07:28:17 3298464 27
image.png 592Кб, 570x528
570x528
Аноним 15/10/24 Втр 08:54:53 3298505 28
>>3298273
Всмысле хэш сумма файла для целостности, чтобы при загрузке файла проверять это, если требуется.
Аноним 15/10/24 Втр 10:08:57 3298546 29
Аноним 15/10/24 Втр 10:27:35 3298553 30
>>3298546
Боится, что произойдёт событие, вероятность которого 1/2^160.
Аноним 15/10/24 Втр 13:50:27 3298743 31
Аноним 15/10/24 Втр 18:38:10 3299030 32
17098949140830.png 256Кб, 558x561
558x561
>>3298743
Я так понял, ты как-то по тупому использовал хеши не по назначению, нихуя не работало и с порванным очком теперь всем рассказываешь, какие они говно без задач?
Аноним 16/10/24 Срд 07:02:24 3299353 33
>>3299030
Нет, неправильно понял
Аноним 16/10/24 Срд 20:13:23 3300084 34
.
16/10/24 Срд 21:03:56 3300111 35
,
Аноним 16/10/24 Срд 23:49:54 3300186 36
К сожалению шарпистов сейчас как дерьма за баней, анон, даже больше чем питонистов и джаваскриптеров, и гораздо меньше доступных вакансий. Если ты опытный бэкендер, то лучше вкатывайся в хайлоад NodeJS или PHP, с твоим опытом работы (да и без опыта на жс лучше найти работу, чем на сишарпе) тебя рекрутеры с руками оторвут. Плюс не нужно заучивать весь дотнет, Blazor там, прочую дичь, всякий легаси, достаточно выучить язык и актуальный набор технологий (Express/NestJS, Laravel/Symphony и тд), он не такой большой. А ну и мякотка, с ростом санкций против РФ, все меньше и меньше технологий будет доступно для Сишарпа. Если сам язык открытый, то мощные среды разработки, инструменты отладки, дебаггеры и документация будет постепенно блокироваться.

Я сам раньше мечтал писать системщину, но в России с плюсами никуда не брали особо, поработал немного в игровой студии стажёром плюсовиком, потом вкатился на C#, а там оказалось ещё хуже, пару лет поработал джун->миддл разрабом, теперь же довольный сижу на JS. Всем советую. Куча вакансий, работа вообще простая и приятная, современные технологии и отсутствие легаси.

Подумай, стоит ли оно того? Лучше вкатывайся в NodeJS, как я сделал. Вакансий гораздо больше, вкат очень лёгкий, work/life баланс лучше, а сложности меньше. И да, совет ньюфагам, не слушайте местных красноглазиков, упорно зазывающих в свою EnterprisePoopShittingDesignatedFactoryClass
Аноним 16/10/24 Срд 23:52:11 3300188 37
>>3300186
Че про голанг скажешь?
Аноним 16/10/24 Срд 23:52:41 3300189 38
>>3300188
Не работал с ним, мнения по нему нет.
Аноним 17/10/24 Чтв 00:15:19 3300203 39
Какие шансы мидлу найти работу на c# на западе?
Есть у кого успешный опыт релокации?
Что там более востребовано бекенд или десктоп?
Аноним 17/10/24 Чтв 08:30:08 3300291 40
>>3300203
Ноль. Дотнет умирает, это очевидно. Вакансии есть только в нищебродские стартапы, где ты одной рукой правишь разметку, другой настраиваешь пайплайны в ажуре ебаном, ебашишь как проклятый без процессов по системе "да тут на 5 минут переделать ну че ты", через полгода снова ищешь работу, конкуррируя со стадом паджитов. Есть еще немного вакансий в копролегаси на всяких winforms и jquery, но там требуют ворк пермит и знание местного языка, нет пути. Релокацию никто делать не будет. Дотнет - это новый делфи, никому нахуй не нужен.
Аноним 17/10/24 Чтв 09:50:20 3300335 41
>>3300186
>js
>достаточно выучить язык
Это тот самый язык, где всяких исключений и странного поведения больше чем операторов в самом языке? Нахуй, сам такое говно ешь.
Аноним 17/10/24 Чтв 11:05:42 3300401 42
>>3300291
Ещё у Сишарпа в российских фирмах есть странный red flag - какая-то часть проектов даже не использует git и SCRUM-Agile разработку. Тупо как в нулевые сайты ебошут. Но это уже в основном легаси или какая-нибудь попильная контора.
Аноним 17/10/24 Чтв 11:19:37 3300423 43
>>3300401
Такого на любом языке полно.
Аноним 17/10/24 Чтв 11:35:52 3300433 44
>>3300291
На какой язык тогда переходить, если в приоритете релокация?
Аноним 17/10/24 Чтв 11:44:49 3300441 45
>>3299353
Ну и что же я неправильно понял?
Мне кажется, всё я правильно понял.
Аноним 17/10/24 Чтв 11:52:59 3300455 46
>>3300433
На девопс. Мартышки высрали тисячи микросервисов, а теперь прод разваливается на части при малейшем движении.
Аноним 17/10/24 Чтв 12:43:44 3300527 47
>>3300401
>какая-то часть проектов даже не использует git
Ну это кстати не так уж и страшно. В основном такое осталось там где совсем легаси и сидят деды-пердеды, для которых проще в zip-папочки по датам все паковать. Если гита нет, то поломать их и внедрить его достаточно просто. Но лучше вообще не работать на таких проектах.
Меня гораздо больше напрягает ситуация, что сейчас везде пытаются пропихнуть "модный" Trunk-Based-Development ("ебашь все в мастер" по простому), причем в проектах совсем не предназначенных для такого.
Аноним 17/10/24 Чтв 13:23:57 3300573 48
>>3300527
Как будто что-то плохое. Сделал свою ветку от мастера, закончил таску, померджил обратно через реквест. Нет никакой путаницы со 100500 веток.
Аноним 17/10/24 Чтв 13:28:13 3300579 49
>>3300573
Так на мастер во всех нормальных проектах завязана автоматическая сборка проекта. Обновляется мастер - автоматически ребилдится проект. Смерджил ты такой таску прямо в мастер, без тестов, а там какой-то баг, который лишил компанию потенциальных заказчиков.
Аноним 17/10/24 Чтв 13:35:18 3300580 50
>>3300186
>Подумай, стоит ли оно того? Лучше вкатывайся в NodeJS, как я сделал.

Да, конечно стоит того. А ты пиши на ноде, пиши.
Аноним 17/10/24 Чтв 13:41:04 3300583 51
Кем надо быть, чтоб на С# в 2024 кодить?
Аноним 17/10/24 Чтв 13:44:55 3300584 52
>>3300583
Быть разработчиком на C#.
Аноним 17/10/24 Чтв 13:50:19 3300587 53
>>3300579
Это только в веб петушении, где комиты сами деплоятся на прод и где шизы соревнуются, у кого быстрее. Там своя ебанутая атмосфера с дежурствами по ночам. В продукте билд сначала долго и нудно тестируется вдоль и поперек, лишь потом попадает к кастомеру.
Аноним 17/10/24 Чтв 15:42:01 3300659 54
Аноним 17/10/24 Чтв 19:03:03 3300840 55
Аноним 18/10/24 Птн 19:03:31 3301769 56
image.png 48Кб, 526x454
526x454
>>3298285
А это хороший хеш или не очень?

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

Пиздец блядь, мне как будто детский мат поставили, сверху на доску насрали и скрылись в неизвестном направлении
Аноним 18/10/24 Птн 19:08:08 3301777 57
>>3301769
Чем их не устраивает автоинкремент id из базы данных?
Аноним 18/10/24 Птн 19:08:35 3301778 58
>>3301769
Для ин-мемори хеш-таблицы пойдёт. Для хранения картинок - нет.
Аноним 18/10/24 Птн 19:12:16 3301782 59
>>3301777
История умалчивает. Ну о чём бишь я: Просто помандеть
Аноним 21/10/24 Пнд 10:46:47 3304106 60
Кто знает как в Авалонии 11 с ItemGenerator правильно работать? . Если кто знает как, то нужна помощь в https://github.com/Wowhere/Avalonia.ExtendedToolkit

PS. Офф дока по Breaking Changes ущербная, хз как либу портировать
Аноним 23/10/24 Срд 16:48:26 3306526 61
Аноним 23/10/24 Срд 18:54:18 3306605 62
Кто-то пишет на vscode? Или после vs или rider это больно?
Аноним 23/10/24 Срд 18:57:25 3306610 63
>>3306526
Да эти микробенчмарки нахуй не сдались.

Судя по статье, дотнет действительно достаточно быстрый, чтобы вообще не париться о производительности при его выборе. Берёшь дотнет - у тебя всё хорошо.
Аноним 23/10/24 Срд 19:06:19 3306618 64
>>3306605
После райдера больновато, но привыкаешь быстро.

Да и последнее время райдер стал жрать память как бледина (8-14 гигабайт у меня) и прогревать помещение.

Jet brains гаденькая компания, не заботится об углеродном следе
Аноним 23/10/24 Срд 23:23:48 3306773 65
Почему мс не запретил скачивать вижлу с их сайта?
Аноним 23/10/24 Срд 23:42:08 3306781 66
>>3306773
У них хуй который они могут класть на санкционные требования толще чем у жидбрейнсов.
Аноним 24/10/24 Чтв 00:09:53 3306784 67
я тут ставил на пару дней КАМмунити версию студии и возник вопрос, а чего со шрифтами стало? какие-то они мыльно-толстые
Аноним 24/10/24 Чтв 00:32:33 3306789 68
image.png 191Кб, 1183x774
1183x774
>>3306784
Там целая страница в опциях для настройки шрифтов. Поставь какие нужно и работай. Хоть джетбрейновские.
Аноним 24/10/24 Чтв 00:33:02 3306790 69
image.png 172Кб, 1825x617
1825x617
>>3306610
>Судя по статье, дотнет действительно достаточно быстрый, чтобы вообще не париться о производительности при его выборе. Берёшь дотнет - у тебя всё хорошо.

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

Я, кстати, не понимаю почему так все печально. У шарпов вроде и валуе-типы есть со структурами и ансейв и по дефолту методы не виртуальные, а жаба берет просто еб..т

Еще тесты переехали на азур и неожиданно назание за накрутки обошли всех кроме тех шарп тестов. Они до сих пор с тем позорам висят там. И, кстати, та картинка с главной страницы, это картинка на те буллшит тесты, лол.
Аноним 24/10/24 Чтв 00:40:20 3306792 70
>>3306790
Чел, да кому не поебать? Тем более на синтетические тесты?
В реальности ты просто говоришь кабану докупить очередной сервак и ебашишь коды дальше.
Аноним 24/10/24 Чтв 00:46:20 3306795 71
>>3306789
не, я пробовал ставить тот, который в вскод, всё равно рендер шрифтов какой-то другой
да и каждый раз применять изменения и лезть в меню, чтобы посмотреть на шрифт не очень хочется, присмене в опциях он сам не меняется до нажатия "ок", а просто кнопки применить нету
Аноним 24/10/24 Чтв 00:51:36 3306798 72
>>3306792
Проблема в том, что мой кабан это я.
Аноним 24/10/24 Чтв 09:47:23 3306953 73
>>3306790
КРАСНЫЙ КОД
КРАСНЫЙ КОД
ОДНИ СИНТЕТИЧЕСКИЕ ТЕСТЫ ОПРОВЕРГАЮТ ДРУГИЕ
Аноним 24/10/24 Чтв 10:20:24 3306967 74
>>3306953
Зачем защищать барена, если он обосрался? В открытом мире опенсорса на тебя смотрят тысячи глаз, считать всех за дебилов уже не так легко. Пускай учиться, старается, мир кроссплатформы жесток и требователен, ничего научится.

Сами шарпы от этого хуже не стали, так что не треггерись.
Аноним 24/10/24 Чтв 13:36:32 3307092 75
>>3306798
Ну так еще проще. Берешь и сам себе дополнительный сервак покупаешь.
Аноним 24/10/24 Чтв 14:05:57 3307112 76
>>3300186
Ты бросил говно на вентилятор, но забыл его включить.

Есть стойкое мнение что будущее за wasi и по ощущением на передке технологии сейчас шарпы и расты. JS с отсутствием нормальной целочисленной математики и кучей подводных камней просто утонет, а вместе с ним потянет ts (или им придется ломать совместимость с js, что они и сделают).
Так что наслаждайся последними деньками круда на жс.
Аноним 24/10/24 Чтв 18:40:45 3307297 77
В шарпах есть прогрев как в джаве (компилит в jit на 10к итерациях функции)?
Аноним 24/10/24 Чтв 20:12:01 3307341 78
>>3307297
Ты про Tiered compilation?
https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#tiered-compilation

Я хз про джаву, т.к. там много jit'ов, но я что-то где-то слышал, что там вроде как интерпретатор, а потом jit'ится код. У .NET вроде только: минимальная оптимизация (Tier0) и полная оптимизация (Tier1) (+ там ещё PGO и т.д.), ну и у mono есть интерпретатор и jiterpreter. Кто лучше знает - поясните.

И ещё:
Why not ‘Interpreted’?
https://mattwarren.org/2017/12/15/How-does-.NET-JIT-a-method-and-Tiered-Compilation/
https://github.com/dotnet/coreclr/pull/10478#issuecomment-289412414
Аноним 24/10/24 Чтв 21:20:52 3307373 79
Аноним 24/10/24 Чтв 22:33:05 3307409 80
image.png 295Кб, 1061x935
1061x935
Мнение?
Аноним 24/10/24 Чтв 22:34:29 3307412 81
Аноним 24/10/24 Чтв 23:46:24 3307446 82
image.png 110Кб, 980x2321
980x2321
Аноним 25/10/24 Птн 15:19:45 3307800 83
>>3307409
Почему народ не радуется халяве? Или асп.нет там не реализуешь?
Аноним 25/10/24 Птн 15:58:31 3307838 84
>>3307297
>В шарпах есть прогрев как в джаве (компилит в jit на 10к итерациях функции)?

а можно как-то пропустить джит-конпеляцию? Можешь как-то удачнее свою мысль выразить?
Аноним 25/10/24 Птн 16:02:19 3307843 85
>>3307409
От них массовый отток пользователей идёт, так как богомерзкий джет-брейнс говнит. Идея и райдер очень медленное говно последнее время, жрёт под 7-9 гигабайт памяти на средних проектах.

Надеюсь, ждет-брейнс нахуй схлопнется
Аноним 25/10/24 Птн 16:05:33 3307848 86
>>3307409
VS давно по функциональности сравнялась, поэтому продавать райдер, когда есть бесплатная VS - это ну такое себе.

Только богомерзкий джет брейнс мог до такого догадаться?
Аноним 25/10/24 Птн 17:15:43 3307909 87
8b2f3a7b35c0387[...].jpg 99Кб, 1092x419
1092x419
Не нашел треда по С++, но тут синтаксис не особо отличается. Кто может объяснить, почему переход от левого кода к правому с if-ветвлениями ускоряет программу.

Прога тупо ищет конец массива char (символ '\0'). Хотел посмотреть, что будет если не итерировать указатель каждый цикл, а делать это с большим шагом.

Левая прога и правая с 1-им ifом = за 175к тактов.
Правая с 2-мя if-ами = 123к тактов.
с 4-мя = 85к
с 8-мю = 55к
далее скорость заметно не растет.
Аноним 25/10/24 Птн 18:42:16 3307984 88
>>3307838
Я из джавы, там по дефолту интерпретатор байткода, но если функция вызывалась ~10К раз срабатывает jit компилятор хотспот (если он есть в вашей опенждк). Этот процесс называют "прогрев джавы".
Я захотел узнать что в шарпах, есть ли прогрев (уже узнал).
Аноним 25/10/24 Птн 18:48:30 3307997 89
image.png 71Кб, 1854x337
1854x337
>>3307909
Смотри ассембленый выход, там на 03 может твориться неочевидные вещи.
https://godbolt.org/
Аноним 25/10/24 Птн 18:51:25 3308004 90
>>3307984
Так чё? Есть прогрев?
Аноним 25/10/24 Птн 18:52:05 3308006 91
image.png 28Кб, 240x222
240x222
Я заскочил к вам сказать - шарп офигенный
Аноним 25/10/24 Птн 19:08:20 3308020 92
>>3308004
Я не видел такого термина в доках, сам момент прогрева и горячего кода есть, но отличается от хотспота. Так что есть, но со сноской.
Аноним 25/10/24 Птн 19:12:06 3308021 93
Аноним 25/10/24 Птн 19:31:21 3308044 94
>>3308006
Жаль, что умирает
Причем быстрее и реальнее, чем пхп
Аноним 25/10/24 Птн 20:25:24 3308082 95
>>3307909
Ты бы ещё у JSников спросил.
Я не эксперт, точно не помню, давно читал и читал жопой. Кто может - поправьте.

Мне кажется что здесь замешаны большинство "трюков" связанных с тем как выполняется код на CPU: branch prediction, out of order execution, speculative execution, etc.
Первый вариант хоть и имеет 1 бранч, он будет always taken (почти всегда), т.е. всегда возвращение к предыдущим инструкциям. Во 2-ом варианте на одну итерацию 8 бранчей вперед, которые never taken (почти всегда) и 1 бранч назад который always taken. Эти always taken, never taken и т.д. относятся к предсказателю переходов, т.е. предсказатель видит что этот переход never taken, что позволяет ему предположить что и сейчас он будет never taken (т.е. не будет перехода), так что ЦП продолжит спекулятивное выполнение инструкций. Если оказалось ("реальное" выполнение кода дошло до бранча) что в этот раз предсказатель переходов ошибся, то конвейеру ЦП нужно откатить все изменения/расчёты связанные с неправильным выбором перехода, что может быть довольно дорого. К тому же вроде как переходы назад дороже чем переходы вперёд. Так же чем современнее процессор, тем менее дорогим становится отсутствие перехода который предсказатель переходов предсказал правильно.
Компилятор тоже может перетасовать код так, что наиболее вероятные бранчи будут идти последовательно и не потребуют переходов.
Компиляторы могут векторизировать циклы (но не в это случае), что тоже может давать прирост.
Есть ещё зависимости между инструкциями (и данными/результатами) которые мешают out of order execution (как пример "a = b + c; d = e + a;" - результат "d" зависит от результата "a", "a = b + c; d = e + f;" - "a" и "d" независимы и могут выполняться параллельно).

Вообще есть много статей/литературы на эти темы.
Аноним 25/10/24 Птн 20:49:30 3308088 96
>>3308021
А, ну если ты серьезно интересовался, то:
В джаве сначала компилится в байткод (интерпретатор), а в jit переводит при ~10.000 итераций функций.
В шарпах сразу в jit нулевого тира (облегченный вариант), а после 30 итераций (не тысяч) в более оптимизированный тир 1 с рантайм оптимизацией.

В шарпах это выглядит лучше, но хотспод тоже очень хорош. Непрогретая жаба (или без хотспота) - кусок говна.
Аноним 25/10/24 Птн 21:06:23 3308096 97
>>3308044
Язык развивается, мс потеет, шарпист доволен, имидж растет
Джава протухла, технологии раз в 15 лет, с мобильных выпинули, доживает на кобол-монолитах последние века.
Аноним 25/10/24 Птн 21:28:25 3308110 98
Так как жетбрейнс начал блочить лицензии, то:
1. Есть ли на современный решарпер взлом?
2. Если нет, то какими плагинами можно его заменить?
Аноним 25/10/24 Птн 22:10:09 3308129 99
>>3308110
Он бесплатный теперь. Весь ребус теперь только в том, чтобы суметь его скачать.
Аноним 25/10/24 Птн 22:10:53 3308131 100
>>3308110
А, сорян в глаза ебусь. Ты про решарпер, а не райдер. Тогда не знаю.
Аноним 25/10/24 Птн 23:17:09 3308173 101
Leonid.jpg 13Кб, 200x344
200x344
>>3308129
Я сейчас пользуюсь проплаченным райдером с оффлайн-лицензией и зайбанеными сервера жетбрейнса через хостс на время, но в новых реалиях будет дебилизмом проплачивать лицензию.
Теоретически можно использовать бесплатную комьюнити-версию, но за её использование в коммерческой разработке теоретически анальнику могут устроить пикрил, так как телеметрии там до жопы и стучит она обо всем и, вероятно, де-факто использует код для обучения жетбрейновских сеток.
Поэтому хочу прикрыть жопу и использовать VS2022 на работе, обмазанный плагинами, максимально приближенный по функционалу к райдеру. Ну или хотя бы спиздить решарпер, там всей этой телеметрии не будет так как это просто плагин для студии.

Вообще, мне кажется идея платных IDE умерла так как бесплатные и опенсорсные инструменты достигли паритета с жетбрейновским говном, и они теперь не знают где им приткнуться.
Аноним 26/10/24 Суб 00:11:05 3308187 102
>>3308173
>так как телеметрии там до жопы и стучит она обо всем
Как ты себе это представляешь? Ты думаешь однажды тебе придет письмо, что мол "наша IDE тут нам настучала, что вы работаете над коммерческим продуктом ООО Кабаныч-лимитед" - плотите. Так?
Конечно если ты где-нибудь в Европе (особенно в Германии), то может такое и может произойти. Они там ебанутые даже за торренты людей подтягивают. Но по моему в нынешнее время в там вообще нечего делать.

Алсо, есть вот такое мнение.
https://law.stackexchange.com/questions/1691/intellij-idea-community-edition-commercial-proprietary-software-developing

НУ и до кучи. Я работаю в санкционном банке. Там разрабам ставят лицензионную VS Enterprise Edition. Я х.з. как они ключи достают, но проблем у них с этим явно нет.
Аноним 26/10/24 Суб 07:08:08 3308233 103
>>3308187
>Я работаю в санкционном банке. Там разрабам ставят лицензионную VS Enterprise Edition
Банк это олигарх, а отдельный разработчик это народ. Разные вещи, не путай. Олигархи не могут идти против олигархов, не важно что американские олигархи устроили войну против русских олигархов, русские всё равно не могут идти против них, даже против своего врага, не могут разрешить пиратство. Если разрешить пиратить, народ будет пиратить не только вражеских олигархов, но и своих, то есть подрыв олигархической системы не выгоден никаким олигархам, независимо от их междоусобчиков, так что олегархи всегда друг за друга и будут соблюдать лицензионные правила в любых условиях.

Таким образом, олигархи между собой союзники, а враг у них - народ, простые люди, так что эти санкции бьют именно по простым людям, и соответственно тактика поведения простого человека должна отличаться от тактики олигарха - его врага. Там где олигархи соблюдают лицензии по любому ((где-то)) получая ключи, там простой человек должен всё пиратить напропалую, потому что играть по правилам своего врага это проигрыш по умолчанию.
Аноним 26/10/24 Суб 08:56:46 3308253 104
>>3308173
Ты уже нарушаешь закон, технически нет разницы что ты сделал затычку в host или же поставил китайскую затычку от сильного брата. Лицензии у тебя уже нет.
Аноним 26/10/24 Суб 09:53:01 3308276 105
>>3308253
Не, пока она есть (на сайте всё на месте), просто я иду под радарами жетбрейнса и они не могут её отобрать ввиду того что их система не отметила меня как хитреца. Т.е. де-факто EULA уже нарушен за нарушения экспортного контроля, но технически лицензия ещё есть. Притянуть за это в суд будет крайне сложно. Но проплачивать дальше, я конечно, не стану (лицензия у меня до осени 2025 года), так что буду потихоньку мигрировать на что-нибудь другое, начну с Вебшторма->VSCode и попробую снова студию (ушёл с неё в 2020 году потому что она была невыносимым лагающим говном с перегруженным интерфейсом).
Аноним 26/10/24 Суб 10:30:43 3308291 106
Радость еще шарпов в том что есть выбор, джависты сами себе подносрали и сделали жб монополистами, когда я еще писал на жабе, эклипс шел вровень и даже можно было в нетбинсе сидеть.

Пусть юристы поясняют, с уходом из рынка они вообще могут тебе что-то предъявить? От чьего лица это тогда будет?
Аноним 26/10/24 Суб 11:58:11 3308330 107
>>3308291
В теории, если нет юрлица, то претензии в нашей юрисдикции подать некому. Но на пиратский софт вполне может залупнуться какая-нибудь проверка из силовичковых, и плевать им будет на здравый смысл - палки важней.
Аноним 26/10/24 Суб 12:27:02 3308344 108
>>3308291
>Пусть юристы поясняют, с уходом из рынка они вообще могут тебе что-то предъявить?
Как ты себе представляешь такую юридическую предъяву?
Ну т.е. в теории если твой комп попал под рейд отдела К и там нашли ломаные (именно ломаные) программы или средства их взлома, то ты можешь попасть. Даже без наличия юридически правообладателя в стране.

А вот за коммьюнити версию, что тебе могут предъявить?
Аноним 26/10/24 Суб 13:12:48 3308390 109
>>3308344
Да, ты прав. Ну тогда нафига вообще привыкать к этим IDE.
Ломает ровно так же когда вскод настроил и потом сел на что-то другое. Тоже везде что-то не то, что-то не там.
Аноним 26/10/24 Суб 20:36:39 3308606 110
>>3308390
>Ну тогда нафига вообще привыкать к этим IDE.
>Ломает ровно так же когда вскод настроил и потом сел на что-то другое. Тоже везде что-то не то, что-то не там.
Ну так это проблема не только IDE, а в принципе любого рабочего софта как такового. Причем не только при смене одного на другое, а часто просто при переходе на новую версию. Как минимум раз в 2...3 года приходится ебаться с настройками и крыть хуями разрабов/дизайнеров которые решили в очередной раз переделать UI.
Так что тут только смириться.
Аноним 26/10/24 Суб 21:28:01 3308612 111
Ребят, появилась возможность оценить Авалонию.

Она охуенная
Аноним 27/10/24 Вск 08:20:59 3308742 112
image.png 36Кб, 1145x194
1145x194
Бля, пиздец, как бесит, что в таком синтаксисе они нейминг поменяли.

Ну, блядь, это же поле, а в сишарпе все поля _плинтуются

Про то, что "настрой сам" хрюкать не надо. Я не настраиваю свой единственно правильньный код стайл чтобы не ебать мозги себе и окружающим, а если надо помандеть - хожу в двач
Аноним 27/10/24 Вск 12:54:16 3308880 113
>>3308742
Так это не поля, лол. Это аргументы конструктора.
А вообще, я отказался такого вот синтаксиса, т.к. на старый код ложится херово, плюс - нельзя нормальную валидацию в конструкторе провести.
Аноним 27/10/24 Вск 14:22:57 3308939 114
>>3308742
>Ну, блядь, это же поле
Это не поле, это свойство.
27/10/24 Вск 14:37:20 3308949 115
>>3308742
>Ну, блядь, это же поле, а в сишарпе все поля _плинтуются
И главное зачем, неужели нет подсветки свойств класса и локальных переменных?
Аноним 27/10/24 Вск 15:08:08 3308967 116
>>3308880
>Так это не поля, лол. Это аргументы конструктора.

Вот ты видишь их как аргументы конструктора. А я вижу вызов метода с полями класса. Противоречивое это дело. Поэтому и именование по пизде пошло
Аноним 27/10/24 Вск 15:09:58 3308968 117
image.png 71Кб, 279x180
279x180
>>3308939
>свойство

А хули оно с маленькой буквы тогда?
Аноним 27/10/24 Вск 15:33:39 3308971 118
>>3308968
Сорян, я тупой. Не понял сразу, что это класс с primary consructor. Я про record подумал, там это действительно свойства.
Аноним 27/10/24 Вск 15:59:10 3308980 119
>>3308949
> И главное зачем, неужели нет подсветки свойств класса и локальных переменных?

Просто, повелось так. Чтобы по не писать this, наверное
Аноним 27/10/24 Вск 16:09:10 3308995 120
>>3308980
А если поле protected?
_protected
__protected
#protected

Это все напоминает пережиток венгерской нотации си апи
m_pszMyString
pszMyString
Аноним 27/10/24 Вск 17:55:48 3309040 121
>>3308995
Не нужно, все поля должны быть приватными
Аноним 27/10/24 Вск 18:11:35 3309058 122
>>3309040
Кроме тех, которые должны быть доступны в дочерних классах.
Аноним 28/10/24 Пнд 09:03:23 3309262 123
Ребят, а как вы относитесь к ЭЛЕГАНТНОМУ коду?
Аноним 28/10/24 Пнд 15:22:38 3309557 124
Подскажите в какую сторону смотреть для реализации конкурентного доступа к некоему аппаратному ресурсу в многозадачных фреймворках типа MVVM, как правильно организовать доступ что бы не было одновременных обращений к ресурсу?
Аноним 28/10/24 Пнд 17:10:47 3309658 125
>>3309557
Попробуй по слову multiplexer поискать.

Вообще, есть ощущение, что на каждый подобный случай кастомное решение пишется в зависимости от требований
Аноним 28/10/24 Пнд 17:44:38 3309682 126
>>3309058
Нет, дочерних классов не должно быть, наследование запрещено.
Аноним 28/10/24 Пнд 17:46:15 3309684 127
>>3309682
Я разрешил наследование, так что не проблема.
Аноним 28/10/24 Пнд 18:08:36 3309714 128
Аноним 28/10/24 Пнд 18:43:25 3309749 129
>>3309682
Давай, поясняй, как ты до такого дошёл.

Послушаем крутого программиста хоть.
Аноним 29/10/24 Втр 06:09:18 3309964 130
Метод вида Foo(ISet<Yoba> yobas), ожидающий коллекцию уникальных элементов, можно ведь наебать имплементацией интерфейса, где дублирование таки будет?
Аноним 29/10/24 Втр 09:49:44 3310127 131
>>3309714
В очереди предопределённая логика, нужно что бы была возможность отказаться от запроса если уже кто-то занял устройство.

>>3309658
Мультиплексор вроде просто пакует все в один канал (по сути та же очередь), чего-то никаких программных паттернов не гуглится.
Аноним 29/10/24 Втр 11:22:49 3310211 132
>>3310127
Очередь - это очередь. Туда кладутся заявки, дальше какой-то один воркер выбирает заявки, делает что там надо и вызывает колбек или резолвит таску.
Аноним 29/10/24 Втр 12:51:35 3310294 133
Как супер простым языком объяснить зачем используется ключевое слово yield и когда без него не обойтись?
Аноним 29/10/24 Втр 14:13:04 3310425 134
>>3310294
Незачем. Это что-то типа async/await когда еще не было тасок. Я когда-то писал на yield свой BackgroundWorker для приложения на винформсах, сейчас бы в коде вместо yield return было бы await.
Аноним 29/10/24 Втр 18:54:13 3310773 135
>>3310294

Ну простым

Тебе надо обработать список и вернуть другой список.

Можешь писать
var list = new List<int>();
foreach(var i in list)
{
list.Add(i++);
}
return list;

А можешь чуть проще

foreach(var i in list)
{
yeild return i++;
}
Аноним 29/10/24 Втр 18:57:53 3310778 136
>>3310773
>var list = new List<int>();
Тут должно быть другое имя, что бы не вводит в заблуждения с foreach.
Аноним 29/10/24 Втр 19:43:14 3310828 137
>>3310773
Это не проще, это сложнее. Поэтому yield никто не использует, как не используют dynamic и прочую хуиту уровня свитч со стрелками.
Аноним 29/10/24 Втр 22:55:17 3310935 138
Снова въебал собес
Уже не помню какой по счету
Аноним 29/10/24 Втр 23:08:38 3310941 139
>>3310828
> Поэтому yield никто не использует,

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

> как не используют dynamic

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

> и прочую хуиту

можно сюда отнести БД-подобный, но вывернутый наизнанку синтаксис Linq?

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

Э, блядь, чем тебе паттерн мальчик не угодил?
Аноним 29/10/24 Втр 23:33:36 3310946 140
Объясните что такое cancellation token?
Что это вообще такое, как оно выглядит? Для чего оно?
Аноним 29/10/24 Втр 23:33:42 3310947 141
Аноним 29/10/24 Втр 23:49:45 3310956 142
>>3310946
Представь, что тебе надо отправить своего братюню сделать какую-то работу. Ты выдаешь ему пейджер (СancelationToken). Братюня отправляется делать дело. В какой-то момент ты решаешь что, надо завязывать и отсылаешь на пейджер сообщение "бросай все и сваливай" (token.Cancel();). Поскольку братюня у тебя ответственный, то он периодически чекает пейджер и как только видит, что приходит сигнал (token.IsCancellationRequested==true), бросает все и съебывает завершая задачу

Дополнительно можно нажатием специальной кнопки ( token.ThrowIfCancellationRequested() ) делать так чтобы пейджер взрывался ( выброс исключения ) и задача завершалась.
Аноним 30/10/24 Срд 00:11:10 3310969 143
>>3310947
Да хуль пилить, в итоге это по моей вине, надо было учить и зубрить
Дали заревьюить код, общие вопросы по дотнету, тут я хорошо, потом пошло SQL (который я знаю хуево, ну типа если я работаю условно в pgAdmin я могу там несложные join сделать, апдейтнуть че, селектнуть, но это бывает по работе ну ОЧЕНЬ редко, в основном все через EF, и то, ничего сложного, профильтровать через .Where или селекнуть через .Select
Поэтому EF тоже завалил, там практическое задание мол запили такой-то запрос через linq
Потом пара вопросов по ASP.NET, про middleware и фильтры, тоже не ебу, в работе не использовал никогда, про конвеер обработки запросов спросили
А, еще юнит тесты, на работе MSUnit когда весь мир на xUnit или nUnit, но не суть
Там был класс, наследуемый от интерфейса, и метод, который вызывает другой метод
Я на своей работе всегда мокал через интерфейс (потому что старшие коллеги так делали, а как и почему я спросить не удосужился, думал мол так принято наверное), а мне интервьюер говорит надо тестировать саму реализацию, в общем там тоже обсер
Просили опыта в Cloud, но тут совсем ноль, я даже не знаю с чего начать изучать это, так и сказал опыта в этом нет
Ну и про JS спросили, про промисы, тоже обосрамс, полтора года на писал на жабаскрипте (да даже когда и писал то проекты были максимально убогие и примитивные, и каких то особых знаний по промисам были не нужны, тупо хуяришь через await .then
Не знаю в общем, работу надо бы уже менять, но времени и главное сил учить новое абсолютно нет после целого дня работы
Аноним 30/10/24 Срд 00:13:15 3310970 144
>>3310956
Понял, спасибо, этими токенами и можно ответить если на собесе спросят типа "Как завершать Task принудительно?"?
А зачем token.ThrowIfCancellationRequested() если есть Cancel()?
Аноним 30/10/24 Срд 00:16:20 3310973 145
Аноним 30/10/24 Срд 00:39:38 3310985 146
>>3310969
Без обид, но звучит все как будто у тебя совсем жидкая база и работаешь ты просто как кодомакака, как тебе когда-то показали и просто хуяришь по шаблону. Без попыток разобраться глубже как собственно работает все то, чем ты пользуешься.
Вот например
>по ASP.NET, про middleware и фильтры, тоже не ебу, в работе не использовал никогда, про конвеер обработки запросов спросили
Ну это ж блин, совсем база асп-а.

>класс, наследуемый от интерфейса
Над тобой в открытую не ржали на собесе за такие формулировки?

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

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

>Не знаю в общем, работу надо бы уже менять, но времени и главное сил учить новое абсолютно нет после целого дня работы
С таким подходом ты еще долго будешь собесы въебывать.
Есть такое правило, если собираешься менять работу, то на текущую кладешь самый большой болт из возможных. Делаешь ровно столько, чтобы продержаться и не вылететь нужный период без сильных подозрений, а все остальное высвободившееся рабочее время тратишь на подготовку к новой. Все, что ты описал, можно пофиксить за пару недель, вдумчивым чтением хотя бы того же метанита, это не рокет саенс, чтобы на это дохуя времени тратить пришлось.
Аноним 30/10/24 Срд 00:54:13 3310999 147
>>3310969
Ебать пиздец, я дотнет трогал только в виде хэлоувордов, linq ковырял пару раз, пару лет назад и мне кажется что прошел бы собес лучше чем ты. Ты просто базовую базу не знаешь, тебя наверное за волчару приняли
Мимо не шарпист
Аноним 30/10/24 Срд 03:53:15 3311044 148
>>3310941
>чем тебе паттерн мальчик не угодил?
Нечитабельное говно. У обычных ифов четкая структура: заголовок с условием и тело с логикой. Легко читается на ревью. В свитче со стрелочками у тебя ебаное месиво из символов уезжает за экран. Надо напрягаться, чтобы распарсить этот мусор, особенно с дженериками. В свое время перл хуесосили за write-only код, но выросло поколение смузи и придумало новый перл.
Аноним 30/10/24 Срд 04:00:41 3311045 149
>>3310969
Не откликайся на фулстек вакансии, там говно и пидорасы. Подавайся конкретно на бэкенд.
Аноним 30/10/24 Срд 08:15:36 3311122 150
>>3311044
>Нечитабельное говно.

А ты случайно не из тех разаботчиков, с объективным и единственно правильным чувством прекрасного?
Аноним 30/10/24 Срд 08:20:14 3311124 151
>>3310969
>Я на своей работе всегда мокал через интерфейс (потому что старшие коллеги так делали, а как и почему я спросить не удосужился, думал мол так принято наверное), а мне интервьюер говорит надо тестировать саму реализацию, в общем там тоже обсер

Ты тестировал мок интерфейса то есть? НАХУЯ?
Аноним 30/10/24 Срд 08:30:34 3311129 152
Ребят, а как вы относитесь к ЭЛЕГАНТНОМУ коду?
Аноним 30/10/24 Срд 08:58:33 3311139 153
Не отвечайте этому, он хочет устроить очередной жабосрач.
>>3309262
>>3311129
Аноним 30/10/24 Срд 09:25:57 3311151 154
>>3310985
>>3310999
>>3311124
Я давно осознал что я лоуайкью, но уже поздно
Буду дальше пытаться вызубрить, потом все равно забуду потому что в работе не использую
Аноним 30/10/24 Срд 09:36:36 3311157 155
>>3304106
Другой вопрос, почему в авалонии окна не синглтоны блеать.
Аноним 30/10/24 Срд 09:38:41 3311158 156
>>3311124
Толсто. Он всё правильно сказал, мок через интерфейсы и только через них тестируется.
Аноним 30/10/24 Срд 09:43:16 3311163 157
>>3310828
У тебя вместо мозга насрано. Илды годная фича которая на асинках ещё дальше в космос улетела, ты её не используешь только потому что тебя как макаку не допускают до чего-то серьёзного, по факту ты конечно ими косвенно пользуешься через библиотеки даже не подозревая об этом.
Аноним 30/10/24 Срд 10:22:30 3311204 158
>>3311139
> устроить очередной жабосрач.

Зачем? Ну жаба и жаба. На ней вроде тоже можно писать ЭЛЕГАНТНЫЕ решения
Аноним 30/10/24 Срд 12:02:40 3311301 159
>>3311158
Сам понял, что написал? Либо я не понял
Аноним 30/10/24 Срд 12:06:20 3311307 160
>>3311301
Надо тестировать библиотеку, которая генерирует моки.
Аноним 30/10/24 Срд 13:46:23 3311414 161
tumblrmh1xgqpro[...].jpg 117Кб, 400x750
400x750
берешься за задачу которую откладывал из-за страха что она объемная и запутанная
@
начинаешь делать
@
на удивление обнаруживаешь что уже почти закончил, не такая уж и сложная



берешься за якобы "легкую" задачу
@
ебешься с ней неделю
Аноним 30/10/24 Срд 14:04:24 3311430 162
Ну вот как раз ситуация, где надо бы подумать (не то чтобы это изменит что либо, просто надо начать переставать быть макакой)

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

И вот поля из DTO

[SomeAttribute]
public string EstimatedVolume {get; set;}

В модели
public EstimatedVolume EstimatedVolume {get; set;}

Сам класс EstimatedVolume
public class EstimatedVolume
{
public int Id {get; set}
public string Name {get; set;}
}

Типа в будущем возможно появиться необходимость добавить возможные значения, поэтому это тоже сделали таблицей

И таких вот полей штук 15

Так теперь это все надо маппить с DTO на модель
И получается что в методе маппинга есть очень много таких вещей

EstimatedVolume = await _dbContext.EstimatedVolumes.FirstOrDefaultAsync(x => x.Name == someDTO.EstimatedVolume.ToUppper())
?? throw new MappingException(nameof(someDTO.EstimatedVolume), nameof(EstimatedVolume), someDTO.EstimatedVolume)

И вот таких вот штук 15

Скажите, это нормально? Есть ли способ сделать это лучше/более элегантно? Или так принято/правильно?
Аноним 30/10/24 Срд 14:32:11 3311458 163
>>3311430
>нормально

Да, нормально. У тебя возникнет соблазн использовать автомаппер. Но он сделает только хуже.
Аноним 30/10/24 Срд 14:33:22 3311459 164
>>3311430
Попробуй поиграйся required init свойствами, чтобы не конпелировалось если забыл
Аноним 30/10/24 Срд 14:34:10 3311460 165
>>3311307
Надо генерировать библиотеки, которые тестируют моки
Аноним 30/10/24 Срд 14:42:47 3311465 166
>>3311430
>[SomeAttribute]
>public string EstimatedVolume {get; set;}
>В модели
>public EstimatedVolume EstimatedVolume {get; set;}
Как минимум нейминг у тебя хуевый. Приходится прилагать дополнительные усилия, чтобы вникнуть в контекст, поскольку все одинаковое.
Сделай хотя бы так:
>public string EstimatedVolumeName {get; set;}

>public EstimatedVolumeModel EstimatedVolume {get; set;}
Аноним 30/10/24 Срд 14:46:35 3311468 167
>>3311458
>Но он сделает только хуже
Был соблазн до того как решили вынести некоторые поля в отдельные таблицы
Автомаппер тут недолюбливают? Сам почти никогда его не юзал, он чем то плох?
Аноним 30/10/24 Срд 15:22:28 3311511 168
>>3311468
>он чем то плох?
Самый медленный из всех мапперов.
Херово дебажить. Часть логики может быть неявной и скрытой.
Если делать так чтобы работало правильно, то там заебешься нормально все правила расписывать, так что проще руками обычный экстеншен написать.

Опять же пример, что ты вверху описал с EstimatedVolume по сути не маппинг, а обогащение модели. А это немного другое.
Аноним 30/10/24 Срд 16:42:11 3311631 169
Аноним 30/10/24 Срд 17:50:30 3311686 170
>>3311430
То есть для 15 полей ты делаешь 15 запросов для каждой модели? Твой сервис умрет нахуй на проде.
Аноним 30/10/24 Срд 18:21:44 3311709 171
>>3311631
Почему бы просто не использовать dapper? Быстрая легковесная штука без лишних наворотов.
Аноним 30/10/24 Срд 18:50:46 3311748 172
>>3309749
Наследование - это как goto. Усложняет код и отладку не давая особых плюсов. Вызывает проблемы с непонятным поведением, когда переопределяются методы, тем более в шарпе, где методы бывают виртуальные/не-виртуальные. Чтобы понять, что конкретно происходит, приходится долго копаться.

При этом наследование легко заменяется композицией.
Аноним 30/10/24 Срд 20:16:48 3311835 173
Аноним 30/10/24 Срд 20:20:34 3311839 174
>>3311157
>синглтоны
Глобальное состояние - зло.
Аноним 30/10/24 Срд 20:25:35 3311843 175
image.png 202Кб, 357x500
357x500
>>3311139
Этот глупенький еще не догадался, где на самом деле у него враг.
Аноним 30/10/24 Срд 20:46:12 3311862 176
memi-klev-club-[...].jpg 67Кб, 1920x1404
1920x1404
>>3311709
Даппер тут не при чём. Хороший, предсказуемый инструмент. Правда, авторы немного намудрили с генерацией IL кода на лету, но в целом норм библиотека.

Автомаппер же это совсем другое дело. Там можно ебашить в обе стороны, вдоль, поперёк и между слоями приложения. Можно маппить замапленное. Синтаксис автомаппера полон по тьюрингу, на нём можно в целом даже UI фреймворк написать.
Аноним 30/10/24 Срд 20:53:57 3311866 177
>>3311748
> Наследование
> Композиция

Под каждое место свой инструмент, разве нет?
Аноним 30/10/24 Срд 20:54:53 3311867 178
>>3311157
Нахуй им быть синглтонами?
Аноним 30/10/24 Срд 20:58:54 3311870 179
>>3311843
>где на самом деле у него враг

мой враг - это выразительный и ЭЛЕГАНТНЫЙ код
Аноним 30/10/24 Срд 21:06:49 3311884 180
>>3311870
Я честно не понимаю о чем ты, это какой-то твой локальным мем. Наверное нашел какую-то олдфажную херню и носится с ней, аки ребенок. Поверь, жаба - это не та платфома, где нужно начинать легаси войну
Аноним 30/10/24 Срд 21:16:46 3311896 181
>>3311866
Нет. Композиция - это серебряная пуля и золотой молоток.
Аноним 30/10/24 Срд 21:39:53 3311927 182
>>3311896
Для композиции нужен сахар, а вообще это тоже самое что двигать кровати в борделе. Проблема не решается никак, но добавляешь еще бойлерплейт.

Иногда наследование нужно, не всегда, но лучше когда оно есть, чем его нет (только что делал свою иерархию ошибок в либе, а теперь иди посмотри как трахаются гоферы, оборачивая хрень в мудень)
Аноним 30/10/24 Срд 23:32:45 3312013 183
>>3309682
>>3311748
>>3311896
Хуже нет когда вот такие шизы до позиций лидов дорастают и начинают транслировать свое "единственно верное мнение" на всю команду.
Аноним 31/10/24 Чтв 03:17:52 3312091 184
>>3312013
То ли дело, когда джуны насмотрятся инфоциган и тащат в проект самые новые модные технологии. Индусы из микрософта жидко пукнули новой фичей уровня linq - срочно добавляем в проект. Потом джун прыгает на новое место через полгода, а проект остается с кучей говна.
Аноним 31/10/24 Чтв 05:24:46 3312105 185
image.png 3841Кб, 1920x1080
1920x1080
Я пришел к вам чтобы напомнить, что сишарп офигенный!
Аноним 31/10/24 Чтв 19:23:17 3312871 186
Аноним 01/11/24 Птн 07:20:07 3313062 187
>>3312091
>Индусы из микрософта жидко пукнули новой фичей уровня linq

Что с линком не так? Он же настолько охуенен, что на него даже сверху забесплатно нашлёпнули sql-подобный синтаксис
Аноним 01/11/24 Птн 08:26:05 3313104 188
>>3313062
Говно без задач. Когда появляется задача обработать какой-то массив, это проще и понятнее сделать в цикле, а не сочинять длинную соплю из Select и Where.
Аноним 01/11/24 Птн 09:45:46 3313160 189
>>3312091
>жидко пукнули новой фичей уровня linq
>>3313104
>обработать какой-то массив, это проще и понятнее сделать в цикле

Джавист совсем не палится. И 15-летний LINQ у него свежая фича и циклы ему удобнее, ну-ну.
Аноним 01/11/24 Птн 10:35:21 3313201 190
image.png 59Кб, 221x228
221x228
>>3313104
В пару строк пожонглировать данными.
Не-е-е, будем писать простыню на две страницы. И хер бы это писать, так потом сидеть вдуплять полчаса что там происходит с этими данными.

Ладно гоферу некуда деваться, но у тебя же есть котлин с мап/редюс/фильтром
Аноним 01/11/24 Птн 17:14:59 3313637 191
>>3313104
>это проще и понятнее сделать в цикле

Мамка твоя говно без задач. Linq очень хороший и продуманный. Даже не могу придумать, чего там добавить или убрать.
Аноним 01/11/24 Птн 17:25:16 3313647 192
>>3312013
Не, хуже когда лид старый предпенс застрявший в кондовом совковом ООП начала нулевых и не выкупающий новые фичи сишарпа связанные ФП, начиная даже с асинков. Который ебёт тебе мозги кривыми архитектурами практиковавшимися во времена второго сишарпа а аргументы против просто игнорит.
Аноним 01/11/24 Птн 18:54:49 3313718 193
>>3313647

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

Вас обоих надо закрыть в номере без компа, чтобы вы сделали гей-секс и помирились.
Аноним 01/11/24 Птн 19:14:52 3313723 194
Подскажите мне, программирую уже дохуя, но так и не понял одного.

Нахуя всё это объект? Что за пидормен догадался вводить такое категоричные понятия в программирование?

А самое обидное, что эти мудаки, которые программирование придумывали, ходили друг перед другом гоголем и в ответ на дебильные "ВСЁ ЭТО" придумывали свои "ВСЁ ЭТО". ВСЁ ЭТО АСПЕКТ, например. И похуй, что это значит

Вот у меня есть хуевая туча типов, и только процента два из них нужно использовать как ключи в словаре. ToString переопределён на проекте только один раз и то по ошибке. Что, нельзя было вынести метот GetType в статику, и захуярить интерфейс IDictionaryKey?

До сих пор на собеседовании только половина разрабов отвечает правильно на все вопросы про базовые медоды объекта.

Я в противоположном состоянии от восторга!
Аноним 01/11/24 Птн 19:25:50 3313726 195
>>3313723
Вот ты говоришь два процента. А те, кто придумал концепции "ВСЁ ЕСТЬ X", не имели вообще никакой статистики, им оставалось только наугад реализовывать идеи и потом смотреть, что приживётся.
Аноним 01/11/24 Птн 19:31:47 3313730 196
>>3313726
Пизжу, наверное. не два, а 0,00002 процента. По сути кроме строк и энамов не припомню ключей нигде.

Логика просматривается следующая.

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

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

Но да, сишарп охуенен по сравнению с прочим говном.
Аноним 01/11/24 Птн 19:42:15 3313742 197
изображение.png 169Кб, 1175x408
1175x408
>>3313723
ну мне, для того чтобы динамически строить древовидную таблицу с кучей свойств и колонок с разными типами.
Структура и свойства задаются через БД, в итоге одну и ту же апишку можно переиспользовать в нескольких проектах, которые при этом могут кардинально отличаться.
Написано в спешке перед дедлайном, вот ща подумываю запилить свой орм для удобства
Было б ещё охуенно запилить ui для редактирования структуры таблицы
Аноним 01/11/24 Птн 22:36:00 3313827 198
image.png 2Кб, 147x57
147x57
>>3313742
Это что за хуйня? Сервис главных эскьюэлов?
Аноним 02/11/24 Суб 00:08:32 3313853 199
>>3313201
Пара строк, потом еще пара строк и еще хотфикс, снова и снова. Через полгода никто уже не понимает, что происходит в этом ебаном месиве. Брейкпоинты поставить нельзя, отладка силой мысли.
Всегда забавляют джуны, которые открывают для себе ФП и начинают совать его во все дыры.
Аноним 02/11/24 Суб 00:11:23 3313854 200
>>3313827
Он просто не знает слово repository.
Аноним 02/11/24 Суб 00:42:18 3313860 201
>>3313854
ISqlMainRepositoryDAOPersistenceService
Аноним 02/11/24 Суб 02:02:36 3313871 202
>>3313860
Ты намешал разные слои. Service - это нейминг из слоя бузинес логики, в DAL принято называть Repository. Суть везде одна - какой-то интерфейс что-то делает важное.
Аноним 02/11/24 Суб 02:35:13 3313878 203
>>3313853
Ты сейчас реально пытаешься сопоставить простыню кода с циклами, где обязательно кто-то сделает по другому или обосреться, с короткими калбэками вида
map { it * 2 }. filter { it > 0 }

Какого ты жабер пытаешься обмануть? И что с твоим отладчиком в синхроном коде?
Аноним 02/11/24 Суб 02:39:54 3313879 204
14904105723570.png 513Кб, 657x516
657x516
>>3313860
В джаве не было алиасинга импортов (а может до сих пор нет) и там было просто соревнование кто придумает длиннее имена.
Аноним 02/11/24 Суб 05:49:14 3313907 205
>>3313878
Джунишка, и сколько же раз будет выполняться реаллокация памяти в твоем коротком смузи коде?
Аноним 02/11/24 Суб 08:09:24 3313973 206
>>3313907
> Джунишка
> реаллокация

Я тут три недели назад выкинул кусок кода, который на пост запрос
писал в лог 8 мегабайт состояния приложения. И работало же как-то. Около двух лет работало, никто не жаловался.

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

Зато не стрельнет с выходом за пределы массива и вчитываться не надо. Если ты предпочитаешь писать производительный код - ебись с ним сам, не втягивай в это окружающих
Аноним 02/11/24 Суб 09:31:09 3314024 207
>>3313718
C точки зрения малолетнего долбоёба - безусловно.
Аноним 02/11/24 Суб 12:13:43 3314148 208
>>3313907
Столько же, сколько ты в циклах сделаешь руками.
Аноним 02/11/24 Суб 12:21:28 3314157 209
>>3313907
Хороший холоп, переживает за железку барена. Но чаще так бывает что такие алгоритмы имеют оптимизацию, а твоя дрочка руками, чаще, нет.

И опять же, мы говорим что важнее читабельность кода. Читать размазанную портянку бойлерплейта на пару экранов куда сложнее.
Аноним 02/11/24 Суб 13:09:42 3314204 210
>>3313907
>и сколько же раз будет выполняться реаллокация памяти в твоем коротком смузи коде?
Столько же сколько в твоей лапше на циклах.
Ну и для развития можешь почитать про последние оптимизации в 9-м дотнете, там много чего подтянули и по памяти и по производительности конкретно в linq-е
Аноним 03/11/24 Вск 03:22:45 3314658 211
>>3314148
>>3314157
>>3314204
Караван охуительных историй от вкатунов. Вы же литкод решаете, за о-большое шарите, должны понимать, как работает монада энумерабл и как выделяется память в листе. Походу, литкод - это про гоферов, в дотнете публика попроще.
Аноним 03/11/24 Вск 09:02:41 3314729 212
bg,f8f8f8-flat,[...].jpg 96Кб, 750x1000
750x1000
>>3314658
> за о-большое шарите, должны понимать, как работает монада энумерабл и как выделяется память в листе.

А так же понимаем, что на правку цикла, выскочившего за пределы массива может уйти месяц. Просто потому что процессы так настроены. За этот месяц твой менеджер настолько выебет мозги, что ты перестанешь думать категориями аллокаций
Аноним 03/11/24 Вск 10:47:06 3314775 213
>>3301777
Тем что использование int в качестве ИД это дурной тон.
1) жирная вероятность получить колизию
2) требования сильно резать яйца уровнем изоляция БД
3) принципиально невозможно генерировать ключ на стороне клиента
4) int когда кончится и в некоторых системах такого ключа хватит на пол года максимум.

Guid решает все эти проблемы потому что вероятность его совпадения около 0.
Аноним 03/11/24 Вск 10:53:33 3314782 214
>>3311748
>При этом наследование легко заменяется композицией
Нет. Это абсолютно разные вещи.

Наследование – А является В по своей сути
Композиция – А состоит из В, Д, С, М но не является ими.

Желание использовать композицию скрывает в себе желание сделать множественое наследование классов, что запрещено, а множественое наследование это хуево.
Аноним 03/11/24 Вск 11:11:43 3314798 215
Аноним 03/11/24 Вск 12:24:12 3314861 216
>>3314775
>Тем что использование int в качестве ИД это дурной тон.

Ты не отличаешь автоинкремент от хеша, а хеш от гуида?
Аноним 03/11/24 Вск 18:04:55 3315065 217
images.jpeg 7Кб, 226x223
226x223
Я пришел к вам чтобы напомнить, что сишарп офигенный!
Аноним 03/11/24 Вск 18:05:31 3315066 218
images.jpeg 7Кб, 226x223
226x223
Я пришел к вам чтобы напомнить, что сишарп офигенный!
Аноним 03/11/24 Вск 19:08:35 3315118 219
image.png 46Кб, 704x428
704x428
image.png 10Кб, 791x97
791x97
>>3314658
Ну и где твой бог теперь?
Аноним 03/11/24 Вск 23:28:31 3315190 220
>>3315118
Слушай. Зайдай спискам В в начале размер по длине А. Это должно улучшить работу Add. В основе List лежит массив и там есть этап копирования и аллокации нового если размер инициализации превышен.
По идее тогда все три будут работать одинаково потому что ВНЕЗАПНО генерируется примерно одинаковый IL
Аноним 03/11/24 Вск 23:30:26 3315192 221
>>3315118
>>3315190
Ещё укажи базовую линию и включи отображение rate чтобы тот пидор хуев соснул.
Аноним 03/11/24 Вск 23:38:37 3315197 222
IMG202411032330[...].jpg 46Кб, 673x299
673x299
Screenshot20241[...].jpg 229Кб, 1513x1182
1513x1182
Screenshot20241[...].jpg 408Кб, 1647x2277
1647x2277
Вот кстати. Sweep line это по идее n log n алгоритм, работает в три раза хуже лобового решения.
Аноним 04/11/24 Пнд 01:29:41 3315240 223
Есть ли смысл какой-то изучать первым и вкатываться в шарп, а не джаву?
Т.е. я вроде и слышал много хорошего и сахарного о шарпе, как тут все удобно, просто берут джаву и делают лучше, и язык развивается, и чуть ли там не в микросервисы пытается, соревнуясь по скорости c node.js и т.п.
Но на деле тред видно полуживой, вакансий меньше, чем на джаве, но есть, з/п тоже меньше в среднем, качество и количество обучающих источников (книги, гайды какие-то, комьюнити с видосами и ответами) наверняка хуже и меньше, еще и на шинде копошиться. Легаси кода чуть меньше и новых проектов наверное чуть больше, хоть небольшое преимущество то есть, или те же яйца?
Ну я джава в целом популярнее и везде, а тут якобы 90% работы - это фулстэк разработка, и всё, остальное какие-нибудь 2.5 страховые
Еще и обидно будут обзывать сисярпом
Ну на юнити хотел побаловаться игрушки попробовать поделать, но думаю при желании и с джавы выучить юнити не составить труда
И в целом слышал, что лучше учить джаву, а работать удобнее всего на шарпе.
В общем, буду рад ваше адекватное мнение и советы
Аноним 04/11/24 Пнд 01:37:59 3315244 224
>>3315118
Джун, ты не очень умный. Из-за таких, как ты, игры на юнити стали мемом.
При создании collectionB сразу указывай размер массива. Сейчас ты три раза написал одно и то же и что-то пытаешься доказать.
И это я молчу про inplace алгоритмы, с linq это в принципе невозможно.
Аноним 04/11/24 Пнд 01:43:59 3315247 225
>>3315240
Ты сам ответил на свой вопрос. По дотнету мало вакансий и там один сраный фулстек в нищебродских галерах. Гейдев на юнити - это вообще дно дна, будешь ебашить по 12 часов за зп меньше курьера.
Аноним 04/11/24 Пнд 03:22:09 3315261 226
image.png 9Кб, 775x96
775x96
>>3315244
>При создании collectionB сразу указывай размер массива.
Ну будет размер одинаковый во всех трех случаях. Это один хрен подтверждает вот эти тезисы: >>3314204 >>3314148
Аноним 04/11/24 Пнд 03:36:00 3315266 227
>>3315261
Теперь запусти бенчмарк для миллиона операций.
Алсо одинаковое Allocated говорит о том, что они добавили костыли и вместо честного IEnumerable через yield передают какую-то свою монаду, где сохраняют размер исходной коллекции, а потом в ToList чекают типы и выделяют память один раз. Или же индусы подпилили компилятор, чтобы он распознавал такие паттерны и в искусственных манятестах выдавал одинаковый результат, от них всего можно ожидать. В реальном коде результат будет немного другой.
Аноним 04/11/24 Пнд 09:11:22 3315340 228
>>3315247
>>3315240
Тебе пиздят. Джава мёртвый язык, на нем не пишут ничего нового. Дотнет же основой стек разработки ВСЕХ финтехов России, Азии и Запада, а финтех это куча денег.

Учи шарпы и иди работать в банк и будет тебе зп 300к в месяц и премии каждый год.
Аноним 04/11/24 Пнд 09:26:38 3315349 229
>>3315266
Нет чел блять не поэтому. Потому что нет там никаких блять монад, все эти методы развернутся в ОДИНАКОВЫЙ код при сборке. В данном случае весь linq это просто сахар.

Главная мощь linq это когда ты запросы в БД бесшовно переводишь в запросы в памяти, потом пишешь кучу фильтров и групировок и заменяешь огромные партаки, на оптимизированый код. Ещё скажи ты будешь yield return имитировать через goto или break.

Как ты кстати предлагаешь строить цепочки запросов без linq? Мне вот достаточно написать пачку методов расширения или через if накидать where на запрос и готово можно хоть 40 фильтров добавить на запросы к БД и это выглядит очень легко и приятно.

https://github.com/microsoft/referencesource/blob/master/System.Core/System/Linq/Enumerable.cs
https://github.com/microsoft/referencesource/blob/master/mscorlib/system/collections/generic/list.cs

На блять читай. Ахуеть неправда ли? Они просто копируют содержимое памяти одного массива в другой. Даже пизже чем твои приседания с new. Самое тут интересное что это значит что на миллионе операций работает linq ещё лучше
Аноним 04/11/24 Пнд 10:36:39 3315415 230
IMG202411041035[...].jpg 170Кб, 1267x570
1267x570
Аноним 04/11/24 Пнд 10:58:44 3315440 231
>>3315415
На ДЕСЯТИ МИЛЛИОНАХ разница между лупом и linq 18807,14 наносекуд это 0,01880714 миллисекунд. Восемнадцать тысячных тысячных секунды.
При этом есть огромное подозрение, исходя из предыдущих прогонов, что задержка связана с тем что в конце происходит копирование и мы просто не попадаем в кэши процессора или что-то такое.

В целом очевидно что linq пизже. Он при материализации оптимально использует память.
Аноним 04/11/24 Пнд 12:33:15 3315480 232
>>3315349
>Как ты кстати предлагаешь строить цепочки запросов без linq?
SQL пишут на SQL, долбоеб ты из епама. Как ты собираешься потом оптимизировать свою соплю на живой базе? Волшебный linq сам индексы пропишет и денормализацию сделает? Пиздец нахуй.
Аноним 04/11/24 Пнд 12:46:13 3315491 233
>>3315480
>Как ты собираешься потом оптимизировать свою соплю на живой базе?
А оно надо? У тебя есть достоверные данные что оптимизированый запрос ускорит выполнение?

>SQL пишут на SQL, долбоеб ты из епама
Так ты предлагаешь с помощью stringbulider строить строку запроса? А потом ещё скажи даппером или руками на объекты мапить?

Как в твоём манямире без ORM ты контролируешь свои 200 классов и их мапинги на таблицы и типы колонок и пропертей, связи между таблицами их отображение в классах.
У меня это делает EF, он просто тупо отвалится если не сможет сопоставить БД с иерархией классов.
Аноним 04/11/24 Пнд 12:51:38 3315499 234
>>3315491
>У тебя есть достоверные данные что оптимизированый запрос ускорит выполнение?
>с помощью stringbulider строить строку запроса
>свои 200 классов
Матерь божья! Скажи, что ты троллишь.
Аноним 04/11/24 Пнд 12:56:11 3315503 235
>>3315499
Давай кстати вернёмся обратно к теме.

Че там с linq и лупом? Вон оказывается linq быстрее работает.
Аноним 04/11/24 Пнд 16:19:23 3315710 236
>>3315480
>Волшебный linq сам индексы пропишет и денормализацию сделает?
Ты совсем ебобо? Ты у себя что там, для каждого запроса перекидываешь данные между таблицами и индексы создаешь?
Какими хреном ты вообще умудрился смешать область запросов к БД и область её проектирования?
Аноним 04/11/24 Пнд 16:24:51 3315714 237
Очередной нелюбитель наследования, оптимизатор на спичках, любитель развесистой лапши на циклах и просто долбоеб, считающего свое мнение единственно верным, попущен.
Ра-адостно.
Аноним 04/11/24 Пнд 16:31:41 3315723 238
>>3315714
Так чё решили в итоге? Надо всё делать через LINQ?
Аноним 04/11/24 Пнд 17:10:15 3315751 239
>>3315240
Джавая это обрезанные шарпы.
Зная шарпы с легкостью вкатишься в джаву, наоборот нет.
Аноним 04/11/24 Пнд 17:20:32 3315764 240
>>3315751
>Джавая это обрезанные шарпы.
Шурпуш спокуху оформи
Аноним 04/11/24 Пнд 17:27:18 3315772 241
>>3315340
Еще, говорят, дотнет популярен в госдепе США. Это может говорить о многом.

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

Меня как потребителя привлекает, что инструмент развивается, а не кусок говна, в который с годами добавляются базовые потребности типа пакетного менджера или дженериков. Джава тоже раз 15 лет техи завозят и в основном живет на капитале кода и сторонних потребителей.
Аноним 04/11/24 Пнд 17:43:20 3315784 242
>>3315723
Надо делать нормально вот че. Если нормально это циклы написать, то нужно циклы делать, если просто преобразовать набор данных то делай на linq.

Если посмотреть на бенчмарки окажется что нужно не убирать linq, а правильно использовать List делая инициализацию размера для уменьшения аллокации памяти.
Аноним 04/11/24 Пнд 17:43:26 3315786 243
>>3315480
Даже в жабе принято писать слой DAO.
Ты из сервиса получаешь готовые данные, а откуда они пришли (из бд, из файла, из сети, из памяти для мок-тестов) это не важно. И если надо будет оптимизировать и написать SQL руками - ты напишешь их через имплементацию этого сервиса. гребанные вкатуны даже базу не знают
Аноним 04/11/24 Пнд 17:47:31 3315788 244
>>3315503
Я обосрался, простите меня, я дурачок выращенный на ютуб вскриках, а там идеально все только в джаве, а все что в ней нет - ужасное, кривое зло, незаслуживающие джавы.

мимо 10 лет работал в джаве, там примерно такой манямир. Ну как еще, кроме манямира там ничего и нет.
Аноним 04/11/24 Пнд 17:52:55 3315795 245
>>3315786
Ну использовать DAO и любые репозиторий поверх EF это уже хуйня из под коня. Везде где видел это обычно превращается в написание адаптеров над ним и классов РепозиторийГовна на 200 методов под каждый пук.
Почему-то никому в голову не приходит что EF и linq то и так полностью скрывает от тебя откуда берутся данные. В случае тестов ты одним движением делаешь все из памяти, можно подключить любые провайдеры.

Ниразу не видел чтобы кто-то пользовался даже продвинутыми фишками самого EF, не то что реально начинал писать доступ к данным через другие штуки.
Аноним 04/11/24 Пнд 17:55:27 3315799 246
>>3315499
Че шучу клоун. Тебе с фронта пришло 5 фильтров и три сортировки. Ты это через сырой sql как будешь делать?

Или необходимо изменить типы и провести миграции.
Аноним 04/11/24 Пнд 18:12:29 3315814 247
>>3315795
Пишу на нескольких языках и на чистом SQL ибо затрах вникать в каждый велосипед, поэтому DAO даже вне кровавого энтерпрайза норм.
Да и банально когда клепаешь прототип, то DAO с объектами-затычками это просто удобно.

Понятно что это долго и муторно писать, но это потом окупается в отладке.
Аноним 04/11/24 Пнд 18:12:42 3315816 248
>>3315795
Дай угадаю: ты фулстек в финтех стартапе, который никогда не выйдет в релиз и там можно писать что угодно. EF сам по себе кал говна и годится только побырику нахуячить чето там, а потом выбросить при первых же проблемах с перфомансом. Ведь SQL это сложна нипанятна индексы нормализация ой все, некогда думать надо высрать 100 микросервисов до пятницы. Неудивительно, почему хайперфоманс пишется на голанге, а дотнет тонет в аутстаф галерах.
Аноним 04/11/24 Пнд 18:17:14 3315818 249
>>3315799
На твоей галере когда-нибудь слышали про хранимые процедуры?
Аноним 04/11/24 Пнд 18:27:32 3315825 250
Аноним 04/11/24 Пнд 19:08:43 3315842 251
>>3315818
Слышали. А еще слышали насколько больно будут пиздить тех кто попробует их протаскивать в проект.
Аноним 04/11/24 Пнд 19:11:30 3315846 252
>>3315816
>Ведь SQL это сложна нипанятна индексы нормализация ой все
Чувачок, я теба удивлю, но при использовании ORM тебе точно так же придется и индексы прописывать и БД проектировать с учетом нормализации/денормализации.
Аноним 04/11/24 Пнд 19:13:28 3315847 253
>>3315818
>2к24
>хранимки
За такие штуки в приличных местах ебучку ломают
Аноним 04/11/24 Пнд 21:30:31 3315907 254
А вы заметили что все эти клованы не отвечают на вопросы если поняли что по штанам жидкое течет?
Аноним 04/11/24 Пнд 22:25:58 3315945 255
>>3315907
Ну а как ещё сохранить лицо? Гордость не позволяет написать "Сорри, был не прав", вот и сливаются по-тихому.
Аноним 05/11/24 Втр 02:34:54 3316090 256
>>3315340
>Дотнет же основой стек разработки ВСЕХ финтехов России, Азии и Запада
Прохладная история. Пруфы на это будут?
Вакансий меньше, джава всегд на слуху, на нем написан финтех и никто его переписывать не будет. Из крупных контор у нас, я видел лишь озон, который использует шарп.
>>3315751
Тоже прохлада какая-то, в чем это заключается и аргументируется? Скорее, наоборот, засахаренная и допиленная джава
Аноним 05/11/24 Втр 03:25:04 3316113 257
>>3315846
Чувачок, если орм - это даппер, вопросов нет. Вопросы возникают, когда фулстек дебилы используют EF и тянут соплю из Queryable аж до самого контроллера. В джаве хибернейт считается моветоном, в гошке такой хуйни вообще нет, только в дотнете продолжают жрать говно из жопы индуса. Поэтому дотнет в хайлоаде и не используют.
Аноним 05/11/24 Втр 04:02:30 3316125 258
>>3316090
Читаешь тред:
>в новом дотнете будет новая фичанейм, в джаве такого нет
>смотри вот тест, работает на 10 наносекунд быстрее, чем в го
>100500 вакансий ты просто искать не умеешь
Открываешь вакансии:
>пук пук требуется фулстек на аутстаф в ип аванесян
>требования: знание вуе реакт ангуляр, опыт администрирования кластера кафки от 5 лет
>молодой динамично развивающийся коллектив
>испытательный срок 6 месяцев
>оплата ветками
Аноним 05/11/24 Втр 06:04:41 3316147 259
джаваГосподинВк[...].png 1831Кб, 1920x1280
1920x1280
>Вакансий меньше
Ты инженер или гуманитарий? Как ты воспринимаешь разницу между 5000 и 3000 вакансий? Ты реально думаешь что сможешь пройти 1000 собеседований? Или ты сможешь сменить 1000 рабочих мест за 10 лет? А сопоставимы ли вакансии джавы к шарпу 1 к 1? Одинаковый у них "вес" и качество? А хочешь ли ты писать на джаве и ее зоопарке легаси инфраструктуры? А сколько соискателей на место? Не забываем что джава это инфоцыганский язык как и питон.

Мой коэффициент и множитель шарп вакансий где-то, условно, 0.2 (3000 0.2 = 600), а так как я не хочу писать на допотопной кобол-джаве конкурируя со специалистами индии, мой множитель 0.0 (5000 0.0 = 0)

И что мы получаем, я могу рассмотреть нормально на шарпах примерно 600 вакансий, когда из джавы мне доступно 0!
Аноним 05/11/24 Втр 06:14:22 3316148 260
>>3316090
>Тоже прохлада какая-то, в чем это заключается и аргументируется? Скорее, наоборот, засахаренная и допиленная джава
Практика показывает что лучше когда сахар есть, чем его нет. Исключение только когда ты джун, то да, тебе учить много и это страшно. Но ты же не вкатун, да?

Простота языковых конструкций чаще приводит к бойлерплейту, тот же мап/редюс, я реально недавно видел простыню го кода, где на 2-3 страницы кода можно было сократить до нескольких десяток строк, попутно выкинув еще err != nil. То есть, человеку на простые действия пришлось писать портянка кода, попутно дергаясь на err != nil, а мне пришлось читать эту портянку кода, чтобы понять что по сути это манипулирование списками данных.
Аноним 05/11/24 Втр 06:14:51 3316149 261
>>3315842
>>3315847
Неудивительно, в епаме одни долбоебы. Другие там не задерживаются.
Аноним 05/11/24 Втр 06:16:35 3316150 262
>>3316147
Покажи эти 600 вакансий.
Аноним 05/11/24 Втр 06:16:36 3316151 263
>>3316113
>В джаве хибернейт считается моветоном
Кто считает, твой очередной протык с ютуба? А индустрия в курсе вашего выбора?
Аноним 05/11/24 Втр 06:27:08 3316152 264
>>3316113
>Поэтому дотнет в хайлоаде и не используют.
О это классическая мантра манямира джавы. На деле, мы же инженеры, да? Мы не верим этим фразам из конференций, насколько жаба быстра и пойдем тестировать, ведь да?
А потом выходит что быстрый срыг (как прям заявляют они) по производительности как питонодресня, ой.

В джава мире проще развести кабана на железку, чем нанимать спецов умеющих писать код, в итоге мы получаем инфраструктуру которая медленнее чем пхп. Представь мое лицо, когда из каждого носка мне утверждали о том, что джава быстра и вообще супер пупер, но на тестовой машине она отсасывала пхп эквиваленту и жрала аки слон? Тебя передернет, но переписывание с джавы на пхп, мы выиграли в свое время. (хотя ладно, джава-манямир устойчив, помню когда вышел го, на конференциях хуесосили GC го, мол насколько у нас в джаве лучше и тут же параллельно начали в попыхах пилить аналог, ну что за лицемерные мрази? Секта, не иначе.)
Аноним 05/11/24 Втр 06:32:03 3316153 265
>>3316147
Давай язык фактов, ты инженегр или гуманитарий? Пока что они рассуждения.
>джава это инфоцыганский язык как и питон
Охуительные истории, пруфов на это тоже не будет? Как бы да, всякие курсы по джаве есть, потому что финтех нуждается в джавистах, и что? Это скорее очередной камень в сторону шарпа, что он настолько нахуй никому не нужен, что даже курсов по нему не пиарят. По такой логике, надо учить какой-нибудь руби или хотя бы скалу, там вообще заебись.
>конкурируя со специалистами индии
Какими блять индусами, ты шиз что ли блять очередной? Ты жопой в Барнауле, но всем сердцем в Сан-Франциско и тебя душат аутсорсеры из стран 3 мира?
>>3316148
>Практика показывает что лучше когда сахар есть, чем его нет. Исключение только когда ты джун, то да, тебе учить много и это страшно. Но ты же не вкатун, да?
Так я вкатун, об этом и речь, я же сказал. Типо шарп весь такой прикольный, допиленный, сахарный по сравнению с джавой, только вот он нахуй никому не нужен в основном, кроме фулстэка, такого количества работы, ажиотажа и годной литры нет. Как язык в вакууме он то возможно и лучше, не мне судить.
Аноним 05/11/24 Втр 06:41:54 3316154 266
>>3316125
Не то что срыг 10 летней давности или самописный EE, и все это на модной молодёжной восьмой джаве, с дикой текучкой кадров, доходило до такого, что пытались засунуть бизнес логику в PL/SQL, потому что было невозможно сопровождать этот размазанный код. Именно в джаве в противовес спаггети-коду - появился термин блинный-код. Когда слой за слоем накладываются дырявые абстракции, аки блины. Но зумеры не знают этот тырпрайз ад, для них жаба это мобильная разработка, а не кровавый.

А вообще надо быть совсем тупым чтобы брать плохую вакансию на шарпах и сопоставлять с хорошей на джаве, это же не /b чтобы черрипикинг прокатил.
Аноним 05/11/24 Втр 06:42:52 3316155 267
>>3316150
Какая разница если в противовес релевантных вакансий на джаве 0.
Аноним 05/11/24 Втр 07:01:31 3316162 268
javaiscobol.png 421Кб, 900x900
900x900
javacs.png 48Кб, 1201x225
1201x225
>>3316153
>Почему твой коллега обосрался и замолчал, а ты бегаешь с обосранными штанами по всему треду? Никому твой кобол не нужен, никто за ним не стоит, кроме крупных игроков с легаси кодом. Сидящих на проклятом вендерлоке, которым приходится адаптироваться.

Котлин и джава сидят на одном локе IDE и знаешь почему котлин в бэкенде не выстрелил? Да потому что никто не начинает новых проектов на jvm уже более 10 лет. Почему в джаве мало фуллстека, да потому что у тебя зоопарк инфраструктуры, да еще легаси код. И так перегружена и текучка.

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

Когда с языком беда, начинают вылазить евангелисты.
Аноним 05/11/24 Втр 07:25:31 3316169 269
>>3316154
Покажи хорошую вакансию для бэкенда на шарпе. Ой, ее же нет, есть только фулстек на аутстафе.
Аноним 05/11/24 Втр 07:31:20 3316171 270
Посоветуйте хороший годный дизайнер форм, чтобы формошлёпить мышкой. Как заебало уже XML вручную набирать!
Аноним 05/11/24 Втр 08:01:54 3316181 271
>>3316169
Шарпы есть в бигтехе. Какие проблемы?

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

Ты общаешься с бывшим джавистом, я знаю всю вашу кухню и реальном могу тебя закрытыми глазами обоссать. Если ты сидишь на вкусном рабочем месте, отскребая легаси черкаши, то сиди и попукивай, на твой век жабы хватит. Но жабе стало плохеть еще 15 лет назад, а котлин на андроиде ее просто добил. Я тебе говорю, котлин нанес вреда больше чем шарпы. Не важно сколько написано кода, важно сколько кода пишут сейчас, шарпы скорее конкурируют с го за свежие умы, чем противопоставляют себя с протухшей жабой.
Аноним 05/11/24 Втр 08:07:21 3316183 272
>>3316181
Ах да, вы еще сами завендерлочились об IDE. Я вас с этим просто поздравляю.
Аноним 05/11/24 Втр 09:47:55 3316252 273
Так проход в linq не прошёл, он оказался ± 18 миллионых секунды медленнее. Мы ещё попутно узнали что создать 10 миллинов объектов из других 10 миллинов и вставить в другой список занимает на шарпе 580мс.

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

Теперь уже просто отрицание реальности через мифические говноваканси. Ну не работайте там, идите работать в банки и другой финтех.
Аноним 05/11/24 Втр 09:54:36 3316262 274
>>3316252
>писать сырой SQL и выгружать в память пол БД
Ты совсем дебил? Как раз на sql ты будешь доставать только то, что надо. Это EF радостно сделает тебе N+1. Руками мапить ничего не надо, есть даппер.
Аноним 05/11/24 Втр 10:07:56 3316283 275
>>3316262
>Это EF радостно сделает тебе N+1
Он не делает так уже давно. Он запоминает такие объекты по ИД в памяти и привязывает все другие к одной ссылке в куче.

Можно вообще явно разделеные запросы писать.
Аноним 05/11/24 Втр 10:22:57 3316301 276
>>3316283
Нет никаких объектов, эта хуйня осталась в 1995 году. Есть кортежи данных из бд. Если надо получить (id, username) из бд, эти данные придут из индекса, а что будет в твоей модели? Будешь загружать все поля?
Аноним 05/11/24 Втр 17:38:14 3316857 277
>>3316090
>Прохладная история. Пруфы на это будут?

Ну только я пруфануть могу своим анусом. Сам в финтехе работаю.
Ничего лучше дотнете для не го не придумали ещё
Аноним 05/11/24 Втр 17:59:01 3316880 278
>>3316857
Ну так ты назови, что за финтех и какой ВЕСЬ финтех сидит на дотнете?
Аноним 05/11/24 Втр 18:12:41 3316898 279
>>3315349
>Главная мощь linq это когда ты запросы в БД бесшовно переводишь в запросы в памяти

Не, я, конечно, люблю экстеншены к енумерейблу, но я знавался с одним ебанатом, который везде возвращал IEnumerale<T>. Всё свелось к тому, что я сидел и объяснял ему, что такое DBContext, IDisposable, и почему он постоянно получает ObjectDisposedException

Я это к чему. Бесшовность хороша только в теории. На практике же если швов нет, то их приходится руками делать.
Аноним 05/11/24 Втр 18:19:50 3316902 280
>>3315847
А что не так с хранимками?
Аноним 05/11/24 Втр 18:25:38 3316908 281
>>3316902
Исходную проблему они не решают, зато создают новые.
Аноним 05/11/24 Втр 18:26:36 3316909 282
>>3316113
>только в дотнете продолжают жрать говно из жопы индуса

в дотнете вообще все по разному пишут.

Это же тебе не обоссаная спринг-джава, где у разработчиков одни мозги на десятерых
Аноним 05/11/24 Втр 18:30:54 3316915 283
>>3316880
Райф, сбербанк, втб, тинькофф
Аноним 05/11/24 Втр 18:31:01 3316916 284
>>3316880
>ВЕСЬ
Банки в основном. Из того, в чём я работал - страхование и форекс. Там тоже на дотнете все. Российский финтех сидит на дотнете не потому что это хорошо, а потому что исторически так сложилось
Аноним 05/11/24 Втр 18:32:21 3316920 285
>>3316908
А какая исходная проблема?
Аноним 05/11/24 Втр 21:33:20 3317033 286
>>3316902
Перенос бизнес логики на уровень БД.
Аноним 06/11/24 Срд 00:59:27 3317098 287
Есть фреймворк linq2db, который берет linq выражение, транслирует в sql и делает запрос к БД. Надо писать юнит тесты. Для этого нужно мокать таблицы из базы. Сейчас подход такой: берем записи из задействованных таблиц, сохраняем в файлик, и в тестах берем данные из этих файлов вместо реальной бд.

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

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

Выглядят запросы примерно так:

var query = select user from GetTable<Users>()
from // дофига джойнов
where user.Name == "karasique" && // куча условий
select new MyDto
{
Name = user.Name
//...
};

var res = query.First();

Query содержит expression tree, на проде оно транслируется в sql.
Можно ли как-то понять, какие именно записи используются в запросе?
Аноним 06/11/24 Срд 03:50:12 3317113 288
>>3316902
Все с ними так, если разработчик не дурак. Почему-то вкатунцы думают, что в хранимках обязательно надо писать бизнес логику. Видимо, какой-то хуй на ютубе им рассказал. На самом деле, хранимка - это sql запрос, написанный в одном месте. Открыл, посмотрел, чекнул план, погонял на живой базе и все это в консоли без запуска приложения. Надо сделать чуть другой запрос - просто скопировал файл, старая хранимка работает по-прежнему, ничего не ломается и не надо дежурить по ночам. Когда ты тянешь соплю из Queryable, логика запроса размазывается по всему коду, потом хуй разберешься, что и как работает. В фулстеке это не проблема, там код пишется с нуля, через полгода выбрасывается нахуй, но продукт живет десятилетиями.
Кароч, суть та же, что и в вопросе оркестрация vs хореография: логика написана в одном месте или размазана тонким слоем говна по всей системе.
Аноним 06/11/24 Срд 04:01:23 3317116 289
>>3317098
Ты занимаешься хуйней. SQL надо писать на SQL, а не на сишарпе. Как ты потом собираешься оптимизировать свой запрос? Каждый раз перекомпилировать и запускать приложение?
Аноним 06/11/24 Срд 07:15:23 3317143 290
snimok-ekrana-2[...].jpg 540Кб, 1200x900
1200x900
>>3317033
> Перенос бизнес логики на уровень БД.

перенос джоинов в оперативную память.
Аноним 06/11/24 Срд 08:17:16 3317155 291
>>3317098
>Для этого нужно мокать таблицы из базы. Сейчас подход такой: берем записи из задействованных таблиц, сохраняем в файлик, и в тестах берем данные из этих файлов вместо реальной бд.
Для этого нужно замокать контексты и кормить EF объектами из памяти.
Аноним 06/11/24 Срд 09:00:23 3317182 292
>>3317155
>Для этого нужно замокать контексты и кормить EF объектами из памяти.

Мышление уровня "я ничего кроме EF не видел, значит все используют EF". Ты читал оригинальный пост?
Аноним 06/11/24 Срд 10:06:59 3317211 293
Аноним 06/11/24 Срд 11:39:49 3317293 294
>>3317155
У меня не EF
>>3317116
Занимаюсь потому что так уже решили до меня. Смысл в том, что мы будем переходить на другую бд, и это будет сделать проще с такой прослойкой. Есть еще причины, но не суть.

Еще раз вкратце: есть IQueriable, который я могу завернуть в прокси класс, есть Linq запрос, который берет из него данные. Вопрос: есть ли возможность понять, какие объекты из IQueriable попадут результат запроса?
Аноним 06/11/24 Срд 18:56:50 3317606 295
>>3317293
> Query содержит expression tree, на проде оно транслируется в sql.

На каком, блядь, проде, что за каша у тебя в голове

> Хочется это автоматизировать.

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

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

Пиздец тебе, удачи, ставлю лайк

> Вопрос: есть ли возможность понять, какие объекты из IQueriable попадут результат запроса?

Чел, не обижайся, но я с третьего раза распарсил, что ты пытался донести. Ты долбоёб, иди на хуй пиши на пейфоне, пожалуйста
Аноним 06/11/24 Срд 19:20:42 3317616 296
>>3317293
>Смысл в том, что мы будем переходить на другую бд, и это будет сделать проще с такой прослойкой
Проще чем скачать с нугета адаптер? Или вы не такие как все и это какая-то богом забытая хуйня?
Под EF кажется даже для документарных БД есть адаптеры.

>>3317293
>Еще раз вкратце: есть IQueriable, который я могу завернуть в прокси класс, есть Linq запрос, который берет из него данные. Вопрос: есть ли возможность понять, какие объекты из IQueriable попадут результат запроса?
Те что пройдут фильтры или вообще все в случае вызова без них. Единственный если укажут First или Single. Возможно количество элементов если будет вызван такой метод, возможно флаг наличия элементов в коллекции по предекату.

Смысл всей этой штуки чтобы тебя не волновало что там вернётся и откуда эти данные вообще берутся. Причём EF и linq позволяют использовать доступ к данным на любом слое приложения сохраняя изоляцию от уровня хранения.
Аноним 06/11/24 Срд 19:24:01 3317617 297
>>3317606
>Чел, не обижайся, но я с третьего раза распарсил, что ты пытался донести
А что кстати?
Аноним 06/11/24 Срд 19:35:10 3317624 298
>>3317617
Пытаешься закрывать тестами уже существующий, сложный код, который намертво приколочен гвоздями к конкретной БД.

С какой БД переползать то хоть решили на какую? Дай догадаюсь, с оракла или sql-server на постгре?
Аноним 06/11/24 Срд 20:10:16 3317643 299
>>3317616
>Проще чем скачать с нугета адаптер? Или вы не такие как все и это какая-то богом забытая хуйня?
>Под EF кажется даже для документарных БД есть адаптеры.
Как-то переползал с MSSQL на постгрес на EF. Вообще лепота.
- Заменил адаптер
- Снес миграции
- Перегенерил миграции.
Из трудностей легких неудобств, была только правка конфигурации одного сиквенса и все.
Аноним 06/11/24 Срд 21:47:25 3317689 300
>>3317624
Я другой чел. И вообще я прочел три раза ветку, но не понял что он хочет и как с такой кашей в голове он пишет коды.
Аноним 07/11/24 Чтв 01:08:48 3317761 301
>>3317606
>На каком, блядь, проде, что за каша у тебя в голове
Я работать дом, говорить люди мало, уга-буга.
>Раньше надо было думать
Раньше я с другим проектом работал.
>Чел, не обижайся, но я с третьего раза распарсил, что ты пытался донести
Я хочу странного, это сложно объяснить
>>3317616
У меня вот это вместо EF.
https://github.com/linq2db/linq2db
По сути то же самое. Архитектурные решения я не принимал, я просто винтик в корпоративной машине.

>Те что пройдут фильтры или вообще все в случае вызова без них
Запрос выглядит вот так

public static Product GetProduct(int id)
{
var query = from p in db.Product
where p.ProductID == id
orderby p.Name descending
select p;
return query.ToList();
}

Тут условие простое, по нему можно руками взять записи из бд, и сохранить для тестов. Проблема в том, что запросы сложные, вплоть до сотен строк, а бд большая, запросы могут по нескольку минут выполняться.
Хочется сделать так: вызвать GetProduct(25), и чтобы одна запись из Products сохранилась в файл, чтобы потом замокать им бд, и чтобы в тесте GetProduct(25) выдал то же самое.
Сохранять для тестов всю таблицу слишком неэффективно, там сотни тысяч записей, и тесты тогда будут несколько дней выполняться.



>>3317624
>sql-server на постгре
Угадал
Аноним 07/11/24 Чтв 02:05:07 3317772 302
>>3307409
Не рекомендую. Последние версии (24-го года) стали тормозным говнищем. Через 30 минут активной работы выскакивает увеломляшка что ему не хватает оперативки и он начинает дико тормозить. Приходится его перезапускать.
Специально для теста ставил версию 22-го года. На ней такого дерьма с непомерным жором памяти нет. Но, т.к. в ней нет поддержки 8-го дотнета, то пришлось-таки перейти на VS. Она сейчас заметно бодрее работает, даже с решарпером.
Аноним 07/11/24 Чтв 08:37:40 3317880 303
>>3317761
>Проблема в том, что запросы сложные, вплоть до сотен строк, а бд большая, запросы могут по нескольку минут выполняться.
Уволься.

Серьёзно тебе говорю. Ты описываешь контору профнепригодных долбачей которые делают хуйню.
Аноним 07/11/24 Чтв 08:52:33 3317889 304
>>3317880
Такие запросы скорее исключение, большинство выполняются за разумное время. Такие монстры появляются из-за того, что весь проект - это миграция с делфи, где бизнес логика лежала в хранимках в sql
Аноним 07/11/24 Чтв 09:32:29 3317912 305
>>3317889
Дело не в запросах. Просто ты тратишь время на бесполезные скилы в говнопроекте. Это как работать в Яндекс, потратил время, но все твои навыки бесполезные.
Аноним 07/11/24 Чтв 10:03:25 3317930 306
>>3317912
Скилл разгребать легаси не бесполезный. И это не говнопроект, а здоровенная система, связанная с государством и финансами. И весь проект этим легаси не ограничивается, тут еще много всего более современного
Аноним 07/11/24 Чтв 10:56:28 3317971 307
>>3317930
>Скилл разгребать легаси не бесполезный.
Если ты из одного кала в другой перегоняешь, то да - бесполезный.
Вот если бы ты к хуям снес хранимки, оптимизировал структуру БД и перенес всю бизнеслогику на уровень приложения, еще и без потери производительности ну или хотя бы с добавлением возможности горизонтального масштабирования - вот это были бы хорошие строчки в резюме. А "Я все время писал юнит-тесты для хранимок старого легаси сервиса" - такое себе.
Аноним 07/11/24 Чтв 11:06:07 3317978 308
>>3317971
Так я как раз и переношу хранимки из бд в приложение
Аноним 07/11/24 Чтв 11:44:17 3318039 309
>>3317912
>Просто ты тратишь время на бесполезные скилы в говнопроекте

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

Учишься на чужих ошибках.

Пропускаешь этап всевластия мнимого СЕНЬЁРА, когда у тебя что-то по твоему мнению стало получаться, но на самом деле ты обдристался во сне и через пол года твой говнокод будут обводить мелком как место преступления.

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

И так далее, я могу ещё долго продолжать, но иди на хуй
Аноним 07/11/24 Чтв 11:55:00 3318061 310
5 дней до приказа.
Аноним 07/11/24 Чтв 14:08:21 3318170 311
>>3318039
Так не старый код разгребает, а просто говно из тележки в тележку кидает.

Этот правильно развернул >>3317971 Какие навыки он получит? Как переводить хранимки из mssql в постгрю? Очень полезные навыки нет
Если бы его работа была в том чтобы перенести всю логику из хранимок в код, убрать linq2db, нормально распедалить все по слоям и привести в божеский вид это да полезно, в процессе можно узнать тонкости какие-то или неочевидные штуки. А так его работа это поесть говна и заниматься переносом sql кода на другой диалект.

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

ИТ катиться в какой-то Пиздец из-за отмирания разделения труда. Один разработчик пишет бэк, фронт, БД, верстает разметку, пишет деплой и админит сервера и ещё до кучи бегает на совещания к заказчикам и рабочим группам.
Аноним 07/11/24 Чтв 14:13:35 3318175 312
>>3318170
>Один разработчик пишет бэк, фронт, БД, верстает разметку, пишет деплой и админит сервера и ещё до кучи бегает на совещания к заказчикам и рабочим группам.
Ты забыл еще сам пишет ТЗ и сам тестирует ("А чо вы не можете проверить то, что сами написали")
Аноним 07/11/24 Чтв 15:10:29 3318207 313
>>3317971
>хотя бы с добавлением возможности горизонтального масштабирования
>хотя бы
Проиграл в голос с этого мамкиного архитекта. Масштабирования для бд не существует. Есть шардирование, но для этого надо переколбасить всю систему нахуй.
Аноним 07/11/24 Чтв 15:13:28 3318211 314
>>3318170
Это только на аутстаф галерах так. В норм конторах фронт, бэк, девопс и сре - это 4 разных человека, а не один задроченый фулстек.
Аноним 07/11/24 Чтв 15:23:12 3318217 315
>>3318207
Причём тут БД пчел. Он про работу бэка, горизонтально это и есть шардировать БД и развернуть 10 инстансов бека.
Аноним 07/11/24 Чтв 15:32:07 3318222 316
>>3318217
10 инстансов бэка разворачивать бессмысленно, если они все ходят в одну бд. Тормозит всегда база, а не код. Чтобы запилить шардирование в легаси и починить все баги, надо потратить безумное количество человекочасов.
Аноним 07/11/24 Чтв 20:35:19 3318457 317
>>3317971
> Вот если бы ты к хуям снес хранимки, оптимизировал структуру БД и перенес всю бизнеслогику на уровень приложения

То что? Научился бы делать то, чего не просили? Ебать, ты, конечно, лупень
Аноним 07/11/24 Чтв 20:40:30 3318459 318
>>3318170
> Если бы его работа была в том чтобы...

Вроде, он написал, что от него требуется?

> перенести всю логику из хранимок в код,

Кто-то просил это делать? Кто-то просил давать ценные советы?

> убрать linq2db,

Кто-то просил это делать?

> нормально распедалить все по слоям

Кто-то просил это делать?

> и привести в божеский вид

Кто-то просил это делать?

Наверное, сами разберутся, да? Или ты умнее?
Аноним 07/11/24 Чтв 21:41:45 3318474 319
>>3318457
>>3318459
Ну не просили - пусть не делает. Навыки переноса говна из одной БД в другоу очень ценятся на рынке труда (нет).
Аноним 07/11/24 Чтв 22:15:43 3318482 320
{0C97726C-BD12-[...].png 92Кб, 1179x450
1179x450
Допустим вы видите подобный код.
Ваши действия?
Аноним 07/11/24 Чтв 22:20:14 3318483 321
1731007164919.jpg 80Кб, 500x333
500x333
>>3318482
> Ваши действия?
Пойду посру.
Аноним 07/11/24 Чтв 22:35:31 3318486 322
>>3318483
Ну... Я просто думал, вызывает ли это негатив с первого взгляда или нет.
Короче - беру в работу и переписываю легаси на такой вот подход.
Аноним 07/11/24 Чтв 22:41:22 3318487 323
>>3318486
Ты че ебнутый? Это же говнокод ебаный под названием сервис локатор. Большей помойки нельзя придумать.
Аноним 07/11/24 Чтв 22:51:16 3318489 324
>>3318487
Я знаю. Потому и не хотел делать. Особенно не хотел, потому что если забуду обработчик, а определю что сущность это может - я только в рантайме это поймаю.
Но тут такое дело. Что мой главный - хочет чтобы со своей стороны - он пользовался одним интерфейсом.
Придумал класс с офигенным названием MainClass.
И через этот MainClass - 99% операций это круд-операции.
А меня посадил этот класс поддерживать.
И типа было ок, пока было 2 сущности. Но сейчас их дофига. И методы в духе CreateUser, CreateGroup, CreateJopa, CreateZalupa лично меня уже триггерят.
И если бы логики доменной за ними не было - я бы просто сделал обобщенный метод и радовался. Но там же нет. Создается юзер - надо создать ему какие-то там штуки по умолчанию, создать еще дофига всего. Создается еще что-то надо событие куда-то кинуть и т.д.

Я хотел MainClass превратить в просто диспечеризатор к обработчикам. Оставив этот CRUD-интерфейс и тот 1% методов которые не CRUD.
Потому что ну тяжело. Класс уже 60к строчек. Даже partial не спасает. Потому что в голове тупо это не держится все.
Аноним 08/11/24 Птн 02:53:46 3318529 325
>>3318482
Это самописный DI и что? Очевидно, код был написан до того, как в дотнете появился стандартный DI.
Аноним 08/11/24 Птн 02:58:20 3318532 326
>>3318489
>Я хотел MainClass превратить в просто диспечеризатор к обработчикам.
Чтобы что? Сейчас весь код написан в одном месте. Ты его распидорасишь на 9000 файлов, потом сам охуеешь в этом разбираться.
Джун, запомни два фундаментальных правила в разработке:
1. Чем проще - тем надежнее.
2. Работает - не трогай.
Ты пытаешься нарушить оба просто потому что.
Аноним 08/11/24 Птн 07:06:12 3318555 327
>>3318532
> Чтобы что?
> Потому что ну тяжело. Класс уже 60к строчек
Не тупи, чел.

Я не думаю, что ты все свои апишки через один контроллер делаешь. А ЧОМУ? БЫЛО БЫ УДОБНО, ОДИН КОНТРОЛЛЕР, ВСЕ В ОДНОМ МЕСТЕ. Чет 100% кода что я видел - таки контроллеры зачем-то разбивают по назначению - этот авторизация, тот запрос всякой хуйни, этот для админа чтобы базу мог чистить по кнопке. Вот же дураки, наверное, не могли понять, что чем проще - тем надежнее.
Аноним 08/11/24 Птн 07:21:15 3318562 328
image.png 213Кб, 1590x1862
1590x1862
Там кто-то промониторил все вакансии в мире, и получилось, что за 8 лет попенсорса шарпы почти нагнали жабу.

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

Жабун, мне нужно твое лицо в треде.
Аноним 08/11/24 Птн 08:08:37 3318581 329
>>3318555
У тебя пека для учебы и студия зависает на таком большом файле, что ли? Ок, разнесешь ты разные методы по разным файлам, и что? Проебешь кучу времени, сломаешь кучу тестов, по факту ничего не изменится, ты просто две недели будешь сидеть и страдать хуйней. Новую апишку разноси по разным файлам, старую не трогай.
Аноним 08/11/24 Птн 11:01:43 3318648 330
>>3318474
>очень ценятся на рынке труда
На рынке труда ценится то, что человек понимает, что от него хотят. На остальное похуй. Неадекватов, которые переписывают критические куски кода на новую архитектуру без необходимости чекают на собеседованиях специальными вопросами.

Честно, после твоих слов, тебя бы отфильтровали как неадеквата
Аноним 08/11/24 Птн 11:13:40 3318671 331
>>3318482

Как используется? Выглядит как будто кто-то не понимает назначение DI. Само отвалится через пол года, если будешь по нормальному писать
Аноним 08/11/24 Птн 11:19:04 3318682 332
d0654324dca9884[...].jpg 53Кб, 735x587
735x587
>>3318489
> Класс уже 60к строчек.

60 тысяч строк? Может 6000? Если честно, 600 - уже очень много на мой взгляд. Давай больше подробностей, обожаю читать про говнокод
Аноним 08/11/24 Птн 11:22:31 3318684 333
>>3318532
>Джун, запомни...

Чел правильно говорит, а ты долбоёб знатный. Ещё и джуном его тыкаешь. Стыдно должно быть
Аноним 08/11/24 Птн 11:23:04 3318686 334
>>3318532
>Джун, запомни...

Чел правильно говорит, а ты долбоёб знатный. Ещё и джуном его тыкаешь. Стыдно должно быть
Аноним 08/11/24 Птн 11:24:25 3318687 335
>>3318489
>хочет чтобы со своей стороны - он пользовался одним интерфейсом.

Чтобы что? Вы нищие, на интерфейсах экономите?
Аноним 08/11/24 Птн 11:35:45 3318695 336
>>3318581
Чел, складывать код в один файл нельзя. Не советуй говна
Аноним 08/11/24 Птн 12:47:21 3318766 337
>>3318489
>хочет чтобы со своей стороны - он пользовался одним интерфейсом
Чтобы что? Все эти медиаторы и вызовы всего через 1 интерфейс это говно блядское которое скрывает рельные зависимости класса и усложняет навигацию по коду.

Вот открыл я класс, а там 1 зависимость, а на самом деле их 15 просто с помощью твоего чудо говна теперь нихуя не понятно. Также нет аннотации от интелсенс и нормальных ссылок по коду об использовании методов разных сервисов.
Аноним 08/11/24 Птн 13:28:21 3318816 338
>>3318482
Скривлю ебало. Как по мне, внедрение IServiceProvider приемлимо только в инфраструкторном коде.
У нас оно есть только в одном месте - в своей обёртке над Confluent.Kafka. Там для каждого прочитанного из Кафки сообщения помощью сервис-провайдера создаётся свой Scope, а затем из него выдергивается хендлер для этого сообщения и вызывается.
Аноним 08/11/24 Птн 14:24:36 3318866 339
>>3318816
> в своей обёртке над Confluent.Kafka. Там для каждого прочитанного из Кафки сообщения помощью сервис-провайдера создаётся свой Scope, а затем из него выдергивается хендлер для этого сообщения и вызывается.
Кек, такая же фигня. Ты случайно не с моего проекта?
Аноним 08/11/24 Птн 14:29:38 3318870 340
>>3318866
Стандартная практика, я у себя рэббит так же обрабатываю
Аноним 08/11/24 Птн 14:55:32 3318890 341
>>3318870
Это стандартная практика вообще везде. Аспнет похожим образом поднимает контроллеры.
Аноним 08/11/24 Птн 18:36:55 3319035 342
>>3318682
> Давай больше подробностей
Мой главный главарь - сишник бывший.
И в его практике так сложилось, что ему было удобно один .c файл иметь, в котором все что ему надо было. Писал много под МК, всякие роутеры, вайфай-модули, вот это вот все. По сути - становление, как я понял - происходило, когда у тебя считай вся программа в одном-двух файлах.
Мы пилили код. Я сразу предложил, давай я короче накидаю... Он сразу в отказную, дескать все эти пидорасы-пиндосы-жопотрахи, кто пишут ваши книжки - в руках байты не держали, вот короче, будет интерфейс, я его дергаю из своей части. По необходимости - расширяем.
Вокруг этого интерфейса - он свой статичный класс еще навертел, потому что он крайне не любит DI, и создает экземпляр в Main и хуярит в этот статичный класс. Половина его обертки выглядит как:

public static User GetUser(int id){
if(MainClass is not null){
return MainClass.GetUser(int id);
}
return null;
}

Ну так вот. Я первое время вроде ок, пусть будет. В своей части этот класс таки через DI и сервисы делал.
Вот.
Потом я пошел в отпуск. Вернулся, а этот главарь решил что надо УЛУЧШИТЬ КОД. Мои сервисы поудалял, запихнул в этот класс все. Потому что ему так удобнее.
Я тогда типа забил. Решил - ну, хули там. Пилил дальше.
Так прошел год.
Прошел два.
Этот класс разрастался и разрастался.
Так вот и вышло что в нем - все сущности сразу обрабатываются. Управлять этим делом крайне сложно. Оно до сих пор не наебнулось только потому что я еблан и нахуевертил еще тестов. Тесты это отдельная хуйня, чел их не признает, считает что нужно чтобы тестировщики руками тыкали, и если баг не заметили - то это и не баг. Пока тестеров с моей подачи не заставили автоматизировать тестирование - он все время ржал над тем какие криворукие фронтеднеры, ведь их баги сразу видно, а как начали уже его апишку дергать - приуныл, и начал рассказывать, что никто в реальности так бы не дернул, ведь фронтенд не отправляет такого.
Плюсов для себя того что В ОДНОМ МЕСТЕ - я так и не нашел.

>>3318687
Ну, дядьке просто как я понял хочется типа чтобы Application.DoStuf(); И не думать об интерфейсах. Я на самом деле не понимаю че ему так вот нравится.
Просто хочу чтобы наконец прекратилось расширение интерфейса, Он жирный что пиздец, при этом смысла от этого - никакого.

>>3318766
Ты не понял. Там жирный интерфейс:
interface IMain
{
User CreateUser(...);
User UpdateUser(...);
User DeleteUser(...);
List<User> ListUser(...);

Group CreateGroup(...);
Group UpdateGroup(...);
Group DeleteGroup(...);
List<Group> ListGroup(...);

Note CreateNote(...);
Note UpdateNote(...);
Note DeleteNote(...);
List<Group> ListGroup(...);
...
}

И как-бы ноль зависимостей неявных. Только вот как-бы удобнее от этого навигация не становится. С таким же успехом можно все в Program захуйнуть и радоваться. Все в одном файле. Ток как-бы ну хз. По мне - хуйня какая-то. Лучше будет отдельный понятный класс/нтерфейс. Который можно просто создать, и отдельно еще и протестить.
Аноним 08/11/24 Птн 18:56:52 3319054 343
>>3319035
Ты так и не ответил, чем это плохо. Ты хочешь, чтобы было 100500 интерфейсов по 5 методов в каждом. Он хочет один интерфейс со 100500 методов. Почему прав ты, а не он? Что значит лучше/хуже навигация?
Аноним 08/11/24 Птн 19:18:38 3319064 344
>>3319035
>Мой главный главарь - сишник бывший.
>И в его практике так сложилось, что ему было удобно один .c файл иметь
Что-то у тебя там прямо совсем закостенелый долбоеб. Даже в сях спокойно можно программу на несколько файлов пилить и нормально работать.
>>3319035
>все эти пидорасы-пиндосы-жопотрахи, кто пишут ваши книжки - в руках байты не держали
М-да. Хуже нет, чем лид байтоеб на языках с управляемой памятью. Хотя уверен, что если такому любителю дать поработать с ансейфом и подергать какую-нибудь специфическую апиш-ку где указатели нужны, то он жидко обосрется.
Аноним 08/11/24 Птн 19:19:48 3319066 345
>>3319054
>Ты так и не ответил, чем это плохо.
А смысл, если это как дауну объяснять почему не надо есть суп ножом?
Аноним 08/11/24 Птн 19:25:05 3319070 346
>>3319054
>Что значит лучше/хуже навигация?
А ты случайно не vim-ом пользуешься?
Аноним 08/11/24 Птн 19:48:59 3319084 347
>>3319054
>Почему прав ты, а не он? Что значит лучше/хуже навигация?
Он хочет чтобы один интерфейс неявным образом вызывал 100500 методов.
Аноним 09/11/24 Суб 04:03:34 3319247 348
>>3319070
Я пользуюсь студией. В студии прекрасная навигация по коду. В самом сишарпе можно использовать регионы и сворачивать-разворачивать блоки как тебе захочется. Логику того скуфа я понять могу: зачем обмазывать код абстрактными фабриками, если все работает без них. Он выбросил код анона и ничего не сломалось, следовательно, он прав. У анона же какой-то карго-культ на грани окр: нельзя делать большие файлы потому что потому. Везде должен быть DI, зачем сам не знаю. Будто вернулся в джаву начала нулевых, лол.
Аноним 09/11/24 Суб 04:12:16 3319249 349
>>3319066
Миллиард китайцев едят суп палочками. Объясни им, в чем они не правы.
Ты же мартышка с галеры, тебя научили нажимать кнопки в правильном порядке, ты исполняешь ритуал. Зачем, почему так - некогда думать, надо ебашить микросервисы.
Аноним 09/11/24 Суб 08:11:33 3319270 350
>>3319035
Ну смотри, главное, чтобы у тебя от этого пчелика профессиональной травмы не было.

Типо как у меня, когда я после 3 лет МЕДИАТОР-АВТОМАППЕР-АДА начал писать в категоричном ФП стиле и ругался с коллегами даже за намёк о включении автомаппера или медиатора.

Ну, и наверное, твоего "главного", который порвался в своё время и теперь по инерции творит какую-то дичь
Аноним 09/11/24 Суб 08:22:03 3319272 351
>>3319035
>{
>User CreateUser(...);
>User UpdateUser(...);
>User DeleteUser(...);
>List<User> ListUser(...);
>
>Group CreateGroup(...);
>Group UpdateGroup(...);
>Group DeleteGroup(...);
>List<Group> ListGroup(...);
>
>Note CreateNote(...);
>Note UpdateNote(...);
>Note DeleteNote(...);
>List<Group> ListGroup(...);
>...
>}


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

> И как-бы ноль зависимостей неявных.

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

Не воспринимай серьёзно его, он задрот скорее всего. Смотри по внешним признакам. Обувь, взгляд, и так далее. Если он задрот, то скорее всего будет до конца биться за своё объективное и единственно правильное мнение. Оценивай, смотри, что с ним делать, заходи издалека
Аноним 09/11/24 Суб 08:23:26 3319273 352
>>3318562
>Жабун, мне нужно твое лицо в треде.

Ты бы ещё мамку тут свою поискал
Аноним 09/11/24 Суб 08:37:15 3319275 353
>>3319054
>Почему прав ты, а не он?

Не "прав", а тут по другому стоит смотреть.

Один пчелик явно рассматривает код в какой-то предсказуемой парадигме, вероятно, ООП. Тут всё понятно, с этим можно договориться.

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

И, очевидно, надо искать не того, кто прав, а смотреть, на что оба ссылаются. На книжки? на опыт? Или на какие-то привидения в своей тупой башке. Надо искать общий язык а не ссать друг другу на лица
Аноним 09/11/24 Суб 09:10:29 3319284 354
>>3319270
>автомаппера
Везде его врубаю. Забись штука, у меня ещё есть свои мидлвари для полной автоматизации всей валидации выходных данных.

Гораздо хуже когда в проекте тысячи срок помойных MapAtoB()
Аноним 09/11/24 Суб 09:11:55 3319285 355
Аноним 09/11/24 Суб 09:18:44 3319287 356
>>3319275
>Один пчелик явно рассматривает код в какой-то предсказуемой парадигме, вероятно, ООП. Тут всё понятно, с этим можно договориться.
Мы вроде в С# треде. Странно обсуждать какие-то другие парадигмы кроме ООП в языке который в базовом уровне построен на ООП. Даже значимые типы это наследники класса object, а DI буквально встроен в язык.

Я когда вижу попытки в процедурку или ФП у меня вопрос нахуя ты выбрал С# иди бери С++ или хаскель и пиши.

У меня вопрос к вменяемости людей которые отрицают наследование, внедрение зависимостей и развесестые интерфейсы потому что "не хочу ООП". Нахуя ты тогда выбрал для мейн языка С# если тебе не нравится подход и философия которая в нем заложена.
Аноним 09/11/24 Суб 09:58:14 3319290 357
>>3319287
Сишарп поддерживает разные парадигмы, наследование от object придумали 20 лет назад и с тех пор многое поменялось. Те же замыкания использовать проще, чем нахуячить 9000 классов в стиле джава 2007.
Аноним 09/11/24 Суб 10:34:05 3319298 358
>>3319287
> Странно обсуждать какие-то другие парадигмы кроме ООП
Чего странного?

>DI буквально встроен в язык.
ебанько?

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

> у меня вопрос нахуя ты выбрал С# иди бери С++ или хаскель и пиши.
У меня половина проектов на f#
Аноним 09/11/24 Суб 10:40:54 3319302 359
>>3319273
Я уже начал переживать что с тобой что-то случилось.
Аноним 09/11/24 Суб 11:00:15 3319313 360
>>3319284
>Везде его врубаю.

Ключевое слово ВЕЗДЕ. https://www.reddit.com/r/dotnet/comments/13fb1q3/is_automapper_the_most_hated_library/?rdt=34456

> Гораздо хуже когда в проекте тысячи срок помойных MapAtoB()

Чем хуже?

> мидлвари для полной автоматизации всей валидации входных данных.

Дай догадаюсь, ты пишешь по флуент валидатору на хендлер, где проверяешь параметры на NULL?
Аноним 09/11/24 Суб 14:17:03 3319373 361
photo2024-11-07[...].jpg 233Кб, 960x1280
960x1280
Я пришёл напомнить, что c# охуенный
Аноним 09/11/24 Суб 16:12:38 3319424 362
image.png 42Кб, 740x512
740x512
Аноним 09/11/24 Суб 16:14:55 3319425 363
Студия заебала вылетать. Каждый день стабильно 2-3 раза падает.
Аноним 09/11/24 Суб 19:50:19 3319549 364
>>3319425
Чтотза проект у тебя такой??
Аноним 09/11/24 Суб 20:07:48 3319558 365
В чем космический смысл разрабатывать библиотеку и не писать документацию?
https://github.com/dotnet/Silk.NET
Аноним 09/11/24 Суб 20:59:11 3319579 366
В чем смысл protected конструктора? Какие ест кейсы для его использования?
Аноним 09/11/24 Суб 21:10:23 3319582 367
Аноним 09/11/24 Суб 21:12:59 3319584 368
>>3319579
Когда ты хочешь сам управлять созданием объектов класса. Создаётся статик метод который создаёт новые объекты и private/protected конструктор.
Аноним 09/11/24 Суб 21:17:54 3319586 369
>>3319579
Кейсы те же, что у наследования: никакие.
Аноним 09/11/24 Суб 21:20:46 3319588 370
>>3319586
Нахуй ты пишешь на С# если тебе не нравится ООП?
Аноним 09/11/24 Суб 21:23:45 3319589 371
>>3319588
Ничего против ООП не имею. Но только нормального ООП, в котором вместо наследования композиция.
Аноним 09/11/24 Суб 21:57:56 3319600 372
>>3319582
А в чем смысл именно защищенного конструктора?
>>3319584
То есть ответственность за создание дочерних классов будет лежать на дочерних классах? Разве это правильный подход? Почему просто не использовать фабричных класс?
Аноним 09/11/24 Суб 22:02:56 3319601 373
>>3319586
ох уж эти свидетели делегирования. заставить их написать через делегирование на чистом шарпе свой ГУИ фреймворк и поржать над их потугами сделать это поделие хоть немного удобным.
Аноним 10/11/24 Вск 00:29:18 3319645 374
>>3319600
>А в чем смысл именно защищенного конструктора?
Запретить создавать объект через публичный конструктор. А зачем это нужно - это уже вопрос архитектуры.
Аноним 10/11/24 Вск 06:58:36 3319695 375
>>3319579
>В чем смысл protected конструктора?

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

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

В этом плане противоположностью будет обоссаный котлин, в котором сначала придумали сценарии использования, из которых собрали песочницу, посадив туда разработчика, потеряв по дороге всю выразительность.
Аноним 10/11/24 Вск 08:09:37 3319713 376
>>3319695
> укороченных лямбда-экспрешшенов
Уточни плиз, о чём речь?
мимоджун
Аноним 10/11/24 Вск 08:44:35 3319717 377
>>3319579
До появления DI - запретить создание объекта через new, чтобы его можно было создать только через статик метод или через фабрику или через синглон.
После появления DI - ненужен.
Аноним 10/11/24 Вск 09:37:26 3319726 378
>>3319717
> До появления DI
С# разработали лет через 20 после появления концепции DI

> запретить создание объекта через new
Это про private. protetcted тебе никак не мешает создавать дочерние классы

> чтобы его можно было создать только через... через фабрику
Чего?

> После появления DI - ненужен.
Я надеюсь, ты не из церкви изгонятелей конструктора? А то у нас был тип, который говорил, что конструкторами пользоваться НЕЛЬЗЯ потому что это ПЛОХАЯ ПРАКТИКА, и пытался регистрировать DTO и DBO в контейнерах
Аноним 10/11/24 Вск 11:23:30 3319766 379
>>3319726
Понимание, как работать с DI, появилось в айти лет десять назад, вместе с клаудами. Когда придумывали протектед конструкторы, все угарали по абстрактным фабрикам и обмазывались паттернами, как в последний раз. В 2024 году никто не пишет развесистые иерархии классов, сервисы создаются через DI, концепция протектед конструктора больше не нужна.
Аноним 10/11/24 Вск 11:33:44 3319770 380
>>3319579
Смысл в том что тебе бывает нужно иметь конструктор у какого-то базового класса, который не доступен извне, но доступен потомкам. Все вот так просто.

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

Дальше можно не читать, это пространное говорение с самим собой больше.

Допустим, Ты такой же еблан как и я и решил свою библиотеку для работы с сетевой хуйней сделать. Меня где-то на 3м сервере который работает с TCP - откровенно заебало писать очередную обработку принятия соединений, слежения что там простаивает, одинаковую обработку отвала сокетов, буфферы, пулы потоков чтобы не ебать основной пулл .NET и прочее.
Ну так вот. Ты такой же еблан. Но ты в определенный момент - хочешь передать библиотеку наружу. Чтобы те кто будут ей пользоваться - не лезли в кишки, а просто что им там надо сверху нареализовывали и радовались.
1. Часть людей в рот ебали не то что майковский DI а вообще любой. Им хочется просто MyServer : BaseServer. Реализовать и погнали.
2. Часть не ебали, но у них там свои нинжекты, хуйжекты или вообще самописный DI и под все ты не подстроишься, а форсить их то что ты используешь - ну, говняк откровенно. Потому - если ты сам используешь - оно должно быть зарыто от них, а они должны иметь возможность к себе твое без лишней мороки вклинить.
3. Все без исключения - ебали разбираться что ты там за гений архитектуры, что у тебя там за классы такие хитрые, они хотят server.Start вжух-вжух понеслась.

Так вот. Без протектед конструктора - ты такой пиздец должен будешь навертеть чтобы предоставить удобный интерфейс, что мать его ебал. Конечно, в теплой-уютной команде, где вы там для себя только пишете, можно и подзабить, можно вообще все делать через паблик, никаких инвариантов и прочего, кишки наружу, если надо - спросят. Но даже так. Вот ты объяснишь одному, как этим пользоваться. Другому. Третьему. И вот - уже оказывается, что ты не код пишешь, а 80% времени всем объясняешь как твоим пользоваться - это звоночек, что дизайн хуета, надо переделывать.
Аноним 10/11/24 Вск 11:41:12 3319773 381
>>3319766
Ну напиши мне скаду, без развесистой иерархии классов и протектед конструкторов. Я посмотрю.
То что ты, чел, не умеешь или не пользуешься, не значит что оно не надо. Мне вот на работе не надо докер. Давай я побегу рассказывать, что он не нужен вообще.

Если посмотришь на код майков - они чет в нем активно и в новом коде protected используют, потому что это, блядь, удобно. И DI ты свой сраный в каждую бочку не засунешь. А если будешь пробовать - получишь говняк.
Аноним 10/11/24 Вск 11:46:02 3319775 382
>>3319770
А всего-то достаточно вынести все кишки в приватный класс Impl и просто дергать его внутри публичного класса. Называется паттерн фасад, еще диды так писали на плюсах. Нет, не хотим, хотим наследование инкапсуляцию полиморфизм.
Аноним 10/11/24 Вск 11:50:26 3319778 383
>>3319773
>в нашем некро копро легаси на винформс используются протектед конструкторы
>DI мы не используем
>юнит тесты придумали трусы и слабаки
Я тебя услышал.
Аноним 10/11/24 Вск 12:00:18 3319781 384
>>3319775
Только что это дает-то?
Если тем более, что фассад, если базовому дохуя специфики надо передать - будет таким же всратым.
Вот допустим.
BaseServer(int port, string host, IContextFactory contextFactory, ICodec codec, IBufferFactory bufferFactory, IScheduler scheduler)
Теперь я хочу сделать ModbusServer - который только хост и порт должен принимать в конструкторе.
Каким хреном тут фасад спасет-то? Да никаким.

>>3319778
Чел, ты услышал ровно то что ты хотел услышать.
Если хочешь доказать что я не прав - покажи, как ты будешь реализовывать кейс со скадой без использования протектед-конструкторов. Когда у тебя миллион разных датчиков, миллион разных переменных, драйверов, каналов связи, протоколов, конверторов величин, мнемосхем, тревог, отчетов и прочего, и это еще сверху будет НЕ ПРОГРАММИСТ мышкой на тягать и ручками вбивать какие ему там значения нужны, какую форму отрисовать и прочее-прочее.
Аноним 10/11/24 Вск 12:15:42 3319789 385
>>3319781
Если надо показать наружу BaseServer, но нельзя создавать инстансы ну прям вообще никак - сделай его абстрактным. При чем тут протектед конструктор?

>кейс со скадой без использования протектед-конструкторов
Какое отношение протектед конструкторы имеют к гуи?
Аноним 10/11/24 Вск 12:51:30 3319797 386
>>3319789
> Если надо показать наружу BaseServer, но нельзя создавать инстансы ну прям вообще никак - сделай его абстрактным. При чем тут протектед конструктор?
Так может быть нужно чтобы где-то под капотом и можно было создавать.
Опять - уже из реального опыта - в internal-контексте нужно было иметь возможность создавать объекты базового класса. Потому что там это было удобно и уместно. Делать наследника, просто для internal-штук не хочется, потому что ты плодишь сущности которые нужны только в этом самом internal-контексте.

> Какое отношение протектед конструкторы имеют к гуи?
А при чем тут гуй? Я привожу пример семейства ПО, в котором - у тебя с одной стороны - нужно дать пользователю(как программисту так и не) простой интерфейс взаимодействия. С другой - там дохуя всего под капотом происходит и ты бы хотел в одном месте это один раз написать.
Аноним 10/11/24 Вск 13:07:41 3319805 387
>>3319797
Окей, ты меня убедил. Ваша запутанная система была написана через протектед конструкторы и без них не скомпилируется.
Алсо по поводу скады. Если у вас реально миллионы датчиков и вам надо их обрабатывать в разумное время, про ооп вообще придется забыть и вернутся к процедурному стилю. Загрузили все датчики одного типа в массив структур, залили на ядро, обработали. Датчики другого типа в другой массив, снова обработали. Такой подход используется в геймдеве.
Аноним 10/11/24 Вск 14:24:16 3319837 388
>>3319789
>ну прям вообще никак - сделай его абстрактным
не никак, а снаружи. protected internal иногда бывает весьма полезен

а вообще система видимости в шарпе убогая, как и в тех языках, с которых она это слизала.
Аноним 10/11/24 Вск 14:30:44 3319841 389
>>3319789
>сделай его абстрактным
А если можно, но не всем, а только тебе внутри твоего кода, но при этом необходимо делать класс публичным чтобы пользователь мог кастить к нему.
Аноним 10/11/24 Вск 14:39:23 3319844 390
>>3319558
Да, местами их некоторые кастомные решения иногда непонятны. Или про что ты?
Аноним 10/11/24 Вск 15:12:30 3319852 391
>>3319558
>В чем космический смысл разрабатывать библиотеку и не писать документацию?
Сам напиши! И отправь pr. Ктоооооо яяяяяяяя!?
Аноним 10/11/24 Вск 15:41:44 3319862 392
>>3319841
Сделай интерфейс и кастуй к нему.
Аноним 10/11/24 Вск 16:14:39 3319872 393
>>3319862
а еще постой на голове, попрыгай на одной ноге и потяни себя за ухо

есть функционал и тупо советовать избегать его только потому что лишь бы избегать.
Аноним 10/11/24 Вск 17:01:41 3319902 394
>>3319862
Зачем если мне необходима иерархии классов и наследование структуры?
Интерфейс предназначен для наследования поведения.
Аноним 10/11/24 Вск 17:42:08 3319913 395
>>3319579
Приват делают для синглтона, протектет можно если ожидается иерархия таких классов.
Аноним 10/11/24 Вск 18:11:11 3319919 396
>>3319766

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

> В 2024 году никто не пишет развесистые иерархии классов
Все пишут по разному. На WPF и Xamarin очень часто применяют глубокие иерархии наследования. Там так принято.

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

> сервисы создаются через DI, концепция протектед конструктора больше не нужна.
Может пример приведёшь, как ты связал протектед конструкторы и DI ? Ты сам что-то выдумал и отменил тут же с умным ебальником.
Аноним 10/11/24 Вск 18:12:54 3319921 397
right.jpg 283Кб, 960x1280
960x1280
>>3319770
>Смысл в том что тебе бывает нужно иметь конструктор у какого-то базового класса, который не доступен извне, но доступен потомкам. Все вот так просто.

Два чаю этому господину
Аноним 10/11/24 Вск 18:16:10 3319922 398
Все в треде вкурсе кстати что классов без конструктора быть не может, ну буквально он будет создан даже если его не описать.
Аноним 10/11/24 Вск 18:27:39 3319925 399
Аноним 11/11/24 Пнд 06:27:30 3320089 400
Как научится писать код который не хочется сразу же переписать?
Аноним 11/11/24 Пнд 06:39:14 3320096 401
>>3320089
Устроиться на работу.
Когда тебе пару раз пиздов за переписывание вломят, либо когда проебешь сроки из-за того что переписывал то что работало, либо когда ты что-то сломаешь работавшее из-за переписывания - желание переписывать - пропадет.
Аноним 11/11/24 Пнд 06:45:44 3320098 402
>>3320096
>Когда тебе пару раз пиздов за переписывание вломят, либо когда проебешь сроки из-за того что переписывал то что работало, либо когда ты что-то сломаешь работавшее из-за переписывания
Fearless refactoring.
Аноним 11/11/24 Пнд 06:49:24 3320100 403
>>3320089
Вкатываться только ради денег. Если для тебя программирование больше, чем просто способ заработать, у тебя всегда будет этот зуд от неидеального кода, его ничем не унять, хоть проработай 10 лет на проектах с вечно горящими сроками. Можно только смириться и научиться находить баланс между временем и качеством.
Аноним 11/11/24 Пнд 06:50:34 3320101 404
>>3320096
>>3320098
Ну я для себя пишу, и на заказ тоже пишу троху.
И вот смотрю и понимаю что хуйня же полная получается. Оно то работает да, и задачу выполняет, но вот я смотрю код на гитхабе чей то там так все красиво, а у меня какаето поебень.
Аноним 11/11/24 Пнд 06:53:22 3320102 405
>>3320098
Чтобы рефакторить без страха - нужны тесты, няш.
Желательно много. Желательно и негативные. Черный-белый ящик. Вся хуйня.
Интеграционные тоже нужны.
Сверху, нужно писать доки на измененные интерфейсы.
Оформлять ПР и ждать ревью.
Вот и нахуй оно тебе надо, няша? Вот зачем тебе этот головняк? Чтобы что? Почему, просто не сделать свою часть работы, попить чаек и не пойти скроллить двачи?
Аноним 11/11/24 Пнд 07:01:12 3320103 406
>>3320101
Смотри. Если оно работает и задачу выполняет - ты берешь и не трогаешь, до того момента, пока снова к этому коду не надо будет прикасаться.
Если никогда не возникает задач которые связаны с модификацией этого кода - просто забей.
Если возникает, и прям мешается то что "поебень", тогда и что-то потихоньку переписываешь. ПЕРЕД ЭТИМ ПОКРЫВ ТЕСТАМИ то что переписываешь.
Все.

А в общем случае. Просто запомни, что тебе не нравилось - и в новом коде не повторяй говняка. Со временем в среднем код будет пизже.
Аноним 11/11/24 Пнд 07:58:12 3320124 407
>>3319919
>Может пример приведёшь, как ты связал протектед конструкторы и DI ?
Когда ты используешь DI, ты не пишешь инициализацию в конструкторах. Конструктор нужен, чтобы просто присвоить ссылки, а вся хитровыебаная логика инициализации находится в билдере. Это называется SOLID, дада, тот самый, про который все спрашивают на собесах и который никто не умеет.

>есть базовый контроллер с protected конструктором
Сделай его паблик и ничего не изменится.
Аноним 11/11/24 Пнд 08:08:29 3320125 408
>>3319921
Он нужен, чтобы написать
class BaseClass { protected BaseClass(hui, pizda, jigurda) ... }
class MyClass : BaseClass { public MyClass(hui, pizda) : base(hui, pizda, Singleton.Instance.GetJigurda()) ... }
В 1995 году это было нормально, в 2024 за такое определяют на парашу.
Аноним 11/11/24 Пнд 08:14:22 3320126 409
>>3320124
Я не пишу на C#, но dependency inversion из SOLID и dependency injection - это, хоть и связанные, но всё-таки разные вещи, если что.
Первая - про программирование на интерфейсах и то, что потребители интерфейса не завязаны на реализацию.
Вторая - что зависимости "вставляются" самим приложением без использования конструктора явно.
Аноним 11/11/24 Пнд 08:33:19 3320144 410
>>3320126
SOLID сформулировали 20 лет назад, тогда еще не было DI. Сейчас бы его назвали SOLIDDI белиссимо пер фаворе нахуй.
Аноним 11/11/24 Пнд 08:37:40 3320148 411
>>3320144
Спорная штука.
В индустрии в целом чувствуется сопротивление инфоцыганским потугам апологетов "чистого кода", который не решают никаких реальных проблем и только приносят дополнительную сложность.
Честно говоря, я до сих пор не понимаю, почему плохо просто явно вызывать конструктор. Нет, лучше затащим кучу волшебных библиотек с кодгенерацией, которые позволят нам не писать слово new.
Опятяь же, я не знаю C#, может у вас там свой reasoning весомый.
Аноним 11/11/24 Пнд 08:51:39 3320160 412
>>3320144
>сформулировали 20 лет назад, тогда еще не было DI.
Жопу ставишь? Эта хуйня старше чем СОЛИД и паттерны.

У тебя наверное инфаркт жопы будет если тебе рассказать как на С писать ООП и как вообще придумали эту парадигму во время анализа памяти приложений.
Аноним 11/11/24 Пнд 08:51:59 3320161 413
>>3320124
>Когда ты используешь DI, ты не пишешь инициализацию в конструкторах. Конструктор нужен, чтобы просто присвоить ссылки, а вся хитровыебаная логика инициализации находится в билдере.
Надеюсь, ты понимаешь, что DI контейнер никак не связан с логикой приложения? У контейнера одна ответственность - связать сервисы согласно их скоупам. Никакой инициализации в контейнере нет и не может быть. В билдере DI нет ничего кроме объявления регистраций сервисов. Тем более никакой "хитровыебанной логики"!
Откуда ты это вообще взял?
Я до сих пор не понимаю, каким образом ты умудрился связать protected конструктор с DI, но чем больше я читаю твоих сообщений, тем больше убеждаюсь, что ты долбоёб.

>Это называется SOLID, дада, тот самый, про который все спрашивают на собесах и который никто не умеет.
Каким хуем ты ещё и солид сюда приплёл? Чел, у тебя в голове каша.
Хочу посмотреть на ебальники тех людей, которые спрашивают тебя про СОЛИД, а ты им рассказываешь про вот эту вот всю хуету, что ты пишешь
Аноним 11/11/24 Пнд 08:55:17 3320166 414
>>3320144
>Сейчас бы его назвали SOLIDDI белиссимо пер фаворе нахуй.
Схуяли? Это абстракции разного уровня.
Аноним 11/11/24 Пнд 09:02:59 3320174 415
>>3320148
>Честно говоря, я до сих пор не понимаю, почему плохо просто явно вызывать конструктор.
Не плохо это. Просто нужно отличать сервисы из контейнера от объектов, которые по месту создаются. Ты же не будешь резолвить из контейнера ДТО, ДБО, агрегат, сущность, список или ещё какую мелочь?
Аноним 11/11/24 Пнд 09:04:58 3320175 416
>>3320124
>Конструктор нужен, чтобы просто присвоить ссылки
Чиво блять? Конструктор нужен для аллокации памяти под объект, инициализации каких-то штук типо сетевых соединений или загрузки ресурсов.

Если нормально знать как работает все что ты делаешь у тебя не будет тупых вопросов. Защищённые и приватные конструкторы нужны когда у тебя есть необходимость чтобы пользователи создавали объекты через методы типо Create().
Например майкрософт сейчас переводит работу с алгоритмами шифрования на такой подход, публичные Конструкторы помечены устаревшими и необходимо перейти на создание объектов через методы этого же класса.
Аноним 11/11/24 Пнд 09:06:14 3320177 417
>>3320125
>В 1995 году это было нормально, в 2024 за такое определяют на парашу.
А чем это плохо? Ну, кроме того, что ты синглтон впихнул зачем-то? Нахуя ты в кучу смешиваешь одно с другим, наебать кого-то решил?
Аноним 11/11/24 Пнд 09:28:08 3320189 418
>>3320174
Зачем поручать создание сервисов контейнеру?
Аноним 11/11/24 Пнд 10:03:31 3320217 419
>>3320175
>>3320177
В вашей шараге юнит тесты не пишут, все понятно. Вопросов нет.
Аноним 11/11/24 Пнд 10:12:58 3320224 420
>>3320161
Поридж, ты тупой. Ты даже не способен понять мою мысль. Ну, бывает, когда всю жизнь копошишься в легаси и наружу не выглядываешь.

>каким образом ты умудрился связать protected конструктор с DI
Когда ты используешь DI, протектед конструктор не нужен. Потому, что ты не создаешь сервисы через new, дебил ты мамин, тебе не надо вызывать конструкторы из базового класса. У тебя вообще нет никаких сраных иерархий наследования, только интерфейсы. Так понятно?
Аноним 11/11/24 Пнд 10:55:48 3320254 421
>>3320217
Ты в своём обоссаном примере приводишь две вещи:
- вызов базового конструктора дочерним классом. Это ни разу не проблема,
- использование синглтона в конструкторе. Это проблема для тестов

Не смешивай в кучу, твоей мамке не нравится такое
Аноним 11/11/24 Пнд 11:08:59 3320273 422
>>3320254
Откуда вы лезете, блять? Где-то открылся портал в 1998 год?
Зачем скрывать конструктор базового класса - чтобы в наследнике убрать часть параметров, как в примере у >>3319781
Откуда берутся эти пираметры - из синглтона, других вариантов нет.
Как замокать синглтон - никак.
Так понятно?
Аноним 11/11/24 Пнд 11:33:27 3320294 423
>>3320273
>Зачем скрывать конструктор базового класса - чтобы в наследнике убрать часть параметров
Сокрытие конструктора никак не связано блять с наследованием.
Аноним 11/11/24 Пнд 11:46:01 3320300 424
76fd634db5bac77[...].png 224Кб, 700x700
700x700
>>3320096
>Когда тебе пару раз пиздов за переписывание вломят, либо когда проебешь сроки из-за того что переписывал то что работало, либо когда ты что-то сломаешь работавшее из-за переписывания - желание переписывать - пропадет.
Аноним 11/11/24 Пнд 12:29:37 3320327 425
Как сейчас модно организовывать CI/CD в шарпе? Можете рассказать? Хочу научиться пердолиться, до этого везде тимсити был или ещё что похуже
Аноним 11/11/24 Пнд 12:36:40 3320330 426
>>3320327
Не твоя работа. Есть девопсы и адамины. Твоя работа закончилась когда был влит МР.
Аноним 11/11/24 Пнд 13:15:57 3320349 427
>>3320330
Это в голанге не твоя работа, а в фулстеке на сишарпе все твоя работа. Ты скажешь нахуй фулстек, но других вакансий в дотнет не завезли.
Аноним 11/11/24 Пнд 13:25:46 3320359 428
>>3320349
>других вакансий в дотнет не завезли
это к вам не завезли. нужно жить на улице где камазы ездят.
Аноним 11/11/24 Пнд 13:41:24 3320376 429
>>3320349
>Ты скажешь нахуй фулстек, но других вакансий в дотнет не завезли.
Я фуллстек. Не моя работа, я вообще не знаю как правильно делать релизы и как работает СИ/СД. Я просто жму кнопки в гитлабе и оно само.
Аноним 11/11/24 Пнд 14:06:12 3320399 430
>>3320327
голый сервис -> docker -> jenkins -> kuber
В зависимост от того, на что у кабана денег хватит (чем правее, тем дороже)
Аноним 11/11/24 Пнд 14:10:01 3320404 431
>>3320399
Как Дженкинс заменяет Докер? Твоя схема не до конца понятна.
Аноним 11/11/24 Пнд 15:47:33 3320495 432
>>3320404
>Как Дженкинс заменяет Докер?
Никак. Одно идет за другим и дополняет. Можно и в таком порядке.
jenkins -> docker -> kuber
Аноним 11/11/24 Пнд 16:41:07 3320543 433
171735444018687[...].jpg 143Кб, 700x515
700x515
Аноним 11/11/24 Пнд 18:43:48 3320633 434
>>3320543
Пфф, петух.

Правишь руками connection стринги в Web.config
Коммитишь в ветку master.
Компилируешь бинарники в Visual Studio.
Запаковываешь в архив в тотал коммандере
Закидываешь себе на электронную почту.
Подключаешься по RDP к Windows Server 2016
Загружаешь бинарники по электронной почте.
Распаковываешь в тотал коммандере
Перекладываешь в IIS
Перезапускаешь аппул
Аноним 11/11/24 Пнд 19:01:59 3320650 435
image.png 610Кб, 1358x900
1358x900
>>3320633
>Перезапускаешь аппул
HTTP Error 500.60 - CORS Module Error
Аноним 11/11/24 Пнд 21:35:20 3320753 436
>>3320633
Литералли я, неиронично все из списка делаю и в ус не дую
Аноним 12/11/24 Втр 04:39:31 3320850 437
>>3320633
Литерали наша коробочная система. Только дрочкой с IIS занимаются челики на стороне клиента, наша работа заканчивается на создании zip архива.
Аноним 12/11/24 Втр 07:10:42 3320867 438
>>3320327
Не знаю как модно.

У нас так: Репка под сервис. Приватная репка под разворачивание для прода. Женкинс.

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

Куберов не используем, для нас не нужно, у нас просто докеризированые сервисы, не особо под все это облачное подходят(в плане просто так взять и 10 реплик одного сервиса - не получится, некоторые - да, но многие - не, это надо будет когда-нибудь переделывать, но хуй пойми когда). Да и клиентов которым нужно не было, обычно им надо свой няшный инстанс и все.
Единственное что горит. Это железо на котором сборка происходит - старое. Сборка одного сервиса может минут 5 занимать... Это прям расстраивает и заставляет ужиматься, чтобы весь день сборки не ждать. Типа - вроде 5 минут не много, но если сервисов там скажем 100 был бы, это уже 500 минут. Тут был план хитрый - сделать общий слой, который прям все в разом как монолит бы собрал, а остальные имежы - уже свое себе порастягивают. Но пока отказались от этого, хотя по тестам - так прям в разы быстрее на большом кол-ве сервисов.
Аноним 12/11/24 Втр 07:17:05 3320868 439
>>3320867
Да. Всякие графаны, прометеусы, оповещение в телегу/на почту и прочую срань - я опустил. Думаю оно у всех +- одинаково.
Аноним 12/11/24 Втр 07:35:23 3320870 440
image.png 503Кб, 713x990
713x990
image.png 4Кб, 130x127
130x127
Аноним 12/11/24 Втр 08:24:27 3320878 441
>>3320870
Нахуя? Вся инфа на английском. На стековерфлоу ответы на английском. Статьи написаны на английском. Нет, не хотим, хотим переводить технические термины и сидеть, как сычи.
Аноним 12/11/24 Втр 08:46:04 3320885 442
>>3320878
Читать большой объем информации на родном языке проще.
Читать большой объем информации на англ без оверхеда для мозгов могут единицы. Такие чаще сидят в фулл англ комьюнити. Переводы популяризируют технологии, укрепляют и объединяют сообщества, от джуна до сеньки. Поддерживать родные языки - хорошо, даже если релокант (учить детей русской или другой твоей культуры это хорошо).

То что ты смог в анг, а другие пока в процессе или не очень, не говорит что это ненужно, в общем, не выеживайся, ты просто тот мусор который потребляет и ничего не отдает взамен.
Аноним 12/11/24 Втр 08:47:15 3320886 443
>>3320330
Хлеб уже и в галантерею завезли! Весной по собесам ходил, все мягко намекают что сеньор теперь и полы моет, и немного девопс, и отсосать ПМу в курилке.
>>3320399
Ну короче если я хочу для своего пета сделать пайплайн, то мне на jenkins ориентироваться? У нас на работе две других системы одна из них гитлаб, вторая тфс, но я в них тупо кнопки нажимаю, работает хуёво. Нихуя не понятно где копать толком.
Аноним 12/11/24 Втр 08:47:19 3320887 444
>>3320878
Чтобы прочитать за два дня а не за два месяца.

Чел, учитывая, насколько мощно работает ИИ в переводах, про английский можно забыть в ближайшие 10 лет как про страшный сон. Разработка на родном языке идёт в 4 раза быстрее, английский это только стопор и помеха.

Это я тебе говорю как человек, проработавший в англоговорящих командах с 2018 года, где араб не понимает грека и оба делают хуйню ввиду языковых ограничений
Аноним 12/11/24 Втр 09:48:19 3320899 445
>>3320886
>Ну короче если я хочу для своего пета сделать пайплайн, то мне на jenkins ориентироваться?
Если у тебя есть где его развернуть, то почему бы и нет.
На последних трех работах где, я работал, дженкинс был стандартом, независимо от того, что там было дальше, кубер или просто архивы сборок на прод отдавались.
Опять же можешь просто на VPS-ке развернуть свой гитлаб, дженкинс. Подружить их друг с другом, сделать проверку покрытия тестами и все-такое. Будет полезно, а слова "у меня есть свой гитлаб с настроеным пайплайном" и последующая демонстрация, очень хорошее впечатление производят на собесах.
Понятно, что большинству разрабов все это знать необязательно, но ситуации бывают разные и чем больше ты разбираешься, тем лучше. У нас например был случай, когда новый девопс пришел, сломал к хуям весь пайплайн и свалил, а чинить пришлось нам восстанавливая все скрипты.

>У нас на работе две других системы одна из них гитлаб, вторая тфс, но я в них тупо кнопки нажимаю
Ну начни с гитлаба - https://docs.gitlab.com/ee/ci/
Потом уже ищи такое же про дженкинс.
Потом как их подружить и т.д.
Аноним 12/11/24 Втр 09:58:08 3320903 446
>>3320870
>Большое внимание уделено минимальным API
>Именно поэтому Эндрю Лок в первой и второй частях книги детально рассматривает минимальные API
Угу, а потом удивляешься откуда столько дятлов берется которые этот минимал api (который по сути инструмент прототипирования) тащат в прод. А когда их тыкаешь носом, чтобы сделали нормально, не знают как, потому, что дальше этих первых двух частей не читают.
>Из третьей части вы узнаете о Razor Pages
Я думал оно уже мертво давно.
Аноним 12/11/24 Втр 10:19:25 3320914 447
>>3320903
>Я думал оно уже мертво давно.
А чего мертво-то? Небольшие корпоративные проекты накидать на шаблонизаторе - богоугодное дело.

Вот, если бы Razor каким-то хорошим способом выделили бы в нугет-пакет - вообще кайф был бы
Аноним 12/11/24 Втр 10:51:33 3320924 448
>>3320887
>араб не понимает грека
>ряяя нахуя мне ваш инглиш у нас арабов великая тысячелетняя культура аллах бабах
>ряяя нахуя мне ваш инглиш у нас греков великая тысячелетняя культура эвклид парфенон
>на митинге: пук среньк
Аноним 12/11/24 Втр 15:01:46 3321153 449
>>3298279
Ты тут вьебал подход CRUD со старта, не?

Get->Post(накройняк Put но транзитивность)

Не смешивать контроллер и его логику. Выноси в отдельный класс.

Вы этого дебила сейчас научите хранить в SQL базах то что там храниться не должно.

>>3298072
Юзай MongoDb и не еби себе мозг
Аноним 12/11/24 Втр 15:03:53 3321159 450
>>3321153
>Юзай MongoDb
О, вы из епама!
покушать принес Аноним 12/11/24 Втр 16:14:06 3321249 451
image.png 19Кб, 1022x140
1022x140
Аноним 12/11/24 Втр 16:56:07 3321282 452
>>3321249
Ну блин. Использование Шарпа попил-мартином это так то антиреклама
Аноним 12/11/24 Втр 18:41:23 3321346 453
>>3321249
Ууу, сишорп это вражеское по, запретить на всякий случай.
Аноним 12/11/24 Втр 19:50:39 3321389 454
>>3321153
>Юзай MongoDb и не еби себе мозг

Монго ужасен во всех смыслах.
Аноним 12/11/24 Втр 20:42:30 3321408 455
>>3321389
Что, картинки в GridFS хранить ещё хуже, чем в блобах в постгресе?
Аноним 12/11/24 Втр 20:54:33 3321414 456
>>3295052
Я бы еще добавил сюда "C# 10 и NET 6 Современная кроссплатформенная разработка" Марка Прайса, когда учился писать на шарпах книга мне зашла, многое разжевала. Для новичков часто советуют еще Head First, ее все так нахваливают, но что то мне подсказывает, что у них рот в джава скрипте.
Аноним 12/11/24 Втр 22:19:48 3321449 457
>>3321414
Нет ничего лучше Албахари. Натурально лучше Рихтера.
Аноним 12/11/24 Втр 23:02:36 3321460 458
image.png 35Кб, 1484x152
1484x152
>>3321414
На маркетплейсе рутрекер, говорят ровно обратное.
Аноним 12/11/24 Втр 23:39:15 3321468 459
>>3321460
У человека 7 сообщений за 14 лет, вы представляете как там должно бомбануть, чтобы из редонли вылезти?
Аноним 13/11/24 Срд 00:01:14 3321472 460
Аноним 13/11/24 Срд 04:53:17 3321505 461
Аноним 13/11/24 Срд 06:50:29 3321514 462
Аноним 13/11/24 Срд 09:52:19 3321559 463
>>3321505
Книга по С# в 10 раз пизже Рихтера и без словоблудия.
Аноним 13/11/24 Срд 12:02:22 3321599 464
image.png 10Кб, 965x68
965x68
Платиновый ef вопрос:
Дебаг консоль выдает пикрил.
Я достаю "постранично" в круде данные с таблицы в которой первичный Id это guid. Вся сортировка которая у меня есть это по сути записи которые были добавлены в их текущем хронологическом порядке, у меня нету поля даты добавления или чего-то подобного для сортировки ордером.
То есть я просто хочу достать первые 20 записей, затем вторые 20 записей и т.д., и пока все работает нормально.
Вопрос - почему ef мне пишет про unpredictable results?
Мне ложить хуй или что-то нужно дополнительно сделать?
Аноним 13/11/24 Срд 12:21:43 3321616 465
>>3321599
Потому что без сортировки каждый раз можно получить разные результаты. БД не обязана выдавать тебе кортежи постоянным порядком.
Аноним 13/11/24 Срд 12:32:07 3321627 466
>>3321599
>первичный Id это guid
Нахуя? Вам на курсах не рассказывали про кластерные индексы?
Аноним 13/11/24 Срд 15:31:23 3321748 467
>>3321616
Почему не обязана?
У меня на каждый один и тот же простой select идет одинаковый порядок в котором записи были добавлены хронологически.
>>3321627
Нет, у меня с бд пробелы тащемто, планирую пройти полностью отдельный курс.
Аноним 13/11/24 Срд 15:53:48 3321770 468
image.png 163Кб, 1321x890
1321x890
image.png 67Кб, 990x499
990x499
почему в тесте показывает что не прошло первое с верными данными. а с неверными - прошли?
Аноним 13/11/24 Срд 17:33:15 3321847 469
>>3321770
Закоментируй месседжбокс в логинформе и посмотри на результат.
Аноним 13/11/24 Срд 17:37:49 3321850 470
>>3321748
>Почему не обязана?
Потому что БД так устроена. Если ты не указываешь порядок, то выдается то, что проще достать.
Данные могут закешироваться. Или между запросами страниц у тебя индекс перестроится.
В любом учебнике по SQL первым делом говорится, что если хочешь однозначные данные, то в запросе должен быть ORDER BY
Аноним 13/11/24 Срд 18:10:52 3321869 471
image.png 44Кб, 1179x214
1179x214
Аноним 13/11/24 Срд 19:53:08 3321927 472
>>3300186
>хайлоад NodeJS или PHP
лол блядь
мимо пхп макак
Аноним 13/11/24 Срд 19:58:59 3321930 473
>>3321927
Что тебе мешает реализовывать хайлоад на ноде или пыхе?
Аноним 13/11/24 Срд 20:06:35 3321934 474
Хайлоад на 1С.
Аноним 13/11/24 Срд 20:16:16 3321940 475
>>3321869
Так, падажжи. Засунь в assert DialogResult.Cancel вместо None.
Аноним 13/11/24 Срд 20:50:02 3321947 476
>>3321930
за ноуд жи ес ничего сказать не могу, а за пыху - отсутствие необходимости. В новые проекты пых не настолько часто тащат, а в старых и так работает и большинство проблем решается всякими кэфками и рэбитами точеными с редисами дроченными. Впрочем, если под хайлоадом ты подразумеваешь набабахать нод с твоим кодом на пыхе, то так с любым языком получится.
Аноним 13/11/24 Срд 21:17:43 3321961 477
>>3321947
>так с любым языком получится
Внезапно, да
Аноним 13/11/24 Срд 21:56:33 3321977 478
Capture.JPG 88Кб, 1034x954
1034x954
Шарпаны, у меня вызовов RegisterClass<T> с разными классами и полями очень много получилось.
Хочу атрибут сделать, чтобы понавесить на все нужные поля и сократить простыню, но не пони как Action<T, float> и Func<T, float> туда засунуть.
Как быть?
Аноним 13/11/24 Срд 22:11:03 3321990 479
{728AEE68-04A5-[...].png 75Кб, 812x1166
812x1166
Хм. Нашел свой код из школки.
Знаете, иногда полезно вспомнить как ты писал когда-то...
Аноним 13/11/24 Срд 22:45:41 3322006 480
>>3321930
На пыхе много накладных расходов при реквесте nginx дергает php-fpm тот запускает процесс, работает работу, отдает респонс и героически помирает. При каждом реквесте происходит подключение к БД, редису, раббиту и тд, чтение всех файлов, вся остальная поебень, если это симфони или битрикс то там еще всякого говна от фреймворка все это для того чтобы через несколько миллисекунд умереть. Для проектов где высокая нагрузка такой себе выбор, а вот для всяких е-комерс проектов, мухосранских новостей, порталов ЖКХ, сайтов заборостроительных комбинатов с формой "мы вам перезвоним" и картой ебеней промзоны пыха самый раз.
Если из этих двух что-то выбирать, то лучше ноду там все асинхронное и процесс всегда запущен, можно десяток-другой контейнеров поднять и дело в шляпе
Аноним 13/11/24 Срд 23:30:24 3322020 481
>>3321977
хрустальный шар говорит, что хз о чем ты.
Аноним 13/11/24 Срд 23:36:40 3322025 482
>>3322006
не совсем так
php-fpm как раз и служит лечением "героически помирает" ибо представляет собой пул процессов. Со "чтением всех файлов" там кешируется байт код.

в остальном да - сам принцип пыхи "стартануть и выполнить весь код"
зато плюс пыхи в том, что ты можешь наделать 100тыщмиллионов разных сайтов и их один пул php-fpm обработает.
Аноним 14/11/24 Чтв 05:48:03 3322060 483
image.png 65Кб, 1223x213
1223x213
image.png 67Кб, 1005x510
1005x510
>>3321940
а почему у первого с верным логином неверно показывает?
Аноним 14/11/24 Чтв 07:48:01 3322081 484
>>3322060
Накидай простенькое диалоговое окно, которое результ в консоль выкидывает и позакрывай его разными способами. И ты сам всё увидишь. Главный вопрос: Чему равен результ при создании окна? И вопрос вдогонку. В юнит тестах ты проверяешь конкретно что? "Одно значение равно одному значению" или "несколько значений неравны одному значению"?
Аноним 14/11/24 Чтв 09:28:26 3322139 485
>>3321748
Обычно при обновлении записей там хронологический порядок добавленич ломается, поэтому обязательно нужен столбец по которому ты ордербай будешь совершать. Вроде есть ещё версия гуида которая сортируется по ордербаю нормально
Аноним 14/11/24 Чтв 11:33:18 3322194 486
>>3322139
Есть, называется автоинкремент.
Где вы вообще понабрались этой хуиты про первичный ключ гуид? Чтобы что?
Аноним 14/11/24 Чтв 11:51:26 3322209 487
>>3322194
Сдаётся мне, это вебмакаки с MongoDB ввели такую моду.
Аноним 14/11/24 Чтв 12:57:17 3322243 488
>>3322194
>Чтобы что?
Чтобы не словить переполнение счетчика. Я понимаю тебе сложно понять что автоинкримент НЕЛЬЗЯ использовать в системах с хуевой тучей записей или в конкурентных системах.

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

Гуид может обеспечить уникальные значения даже если ты создал его на 1000 разных машинах в разных частях света и потом все 1000 объектов необходимо сохранить в локальные БД и потом реплецировать в какие-то другие.
Аноним 14/11/24 Чтв 13:11:58 3322251 489
>>3322243
> Я понимаю тебе сложно понять что автоинкримент НЕЛЬЗЯ

Используем в транзакциях денег. Если твоя мамка шмара, то это не значит, что у остальных так же
Аноним 14/11/24 Чтв 13:13:30 3322256 490
>>3322209
>Сдаётся мне, это вебмакаки с MongoDB ввели такую моду.

Ты бы видел их ебало, когда им объясняешь джоины
Аноним 14/11/24 Чтв 13:36:21 3322280 491
>>3322243
чел. забей на убогих. они бложики пишут и не поймут.
Аноним 14/11/24 Чтв 13:44:35 3322285 492
>>3322243
>автоинкримент НЕЛЬЗЯ использовать в системах с хуевой тучей записей или в конкурентных системах
Вы там в епаме окончательно ебанулись. Ты бы хоть кабанчика почитал, не позорился.

>Вставка записи с заранее созданым ИД может происходить без блокировки таблицы
Ебать! Ты вообще понимаешь, как работает субд?

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

>Гуид может обеспечить уникальные значения
Да неужели? Пропиши это в контракте с неустойкой, камон.
Аноним 14/11/24 Чтв 16:48:06 3322387 493
>>3322243
>Чтобы не словить переполнение счетчика.
Если ты возьмешь lopng для primary key и будешь хуярить по миллиону записей в секунду, то тебе понадобится чуть больше 290 лет, чтобы его переполнить. Ты оптимист если думаешь, что хоть одна твоя программа проживет так долго.

>Вставка записи с заранее созданым ИД
А зачем их генерить заранее, когда для этого в БД есть сиквенсы?
Аноним 14/11/24 Чтв 16:49:03 3322388 494
>>3322387
>возьмешь lopng
возьмешь long
Аноним 14/11/24 Чтв 16:58:00 3322396 495
>>3322387
Как их получить эти id при bulk выставке
Аноним 14/11/24 Чтв 17:17:12 3322416 496
>>3319558
Она простая, а по апи уже от khronos документы читай
Аноним 14/11/24 Чтв 17:18:18 3322419 497
Какой интерфейс коллекции лучше всего возвращать из метода?
Аноним 14/11/24 Чтв 18:30:38 3322498 498
>>3322396
А в чем проблема?
Еще раз - Id генерируются самой БД при вставке в таблицу, неважно сколько ты ей записей передаешь.
Если же ты имеешь в виду "получить Id объектов после вставки", то тоже не вижу проблемы. Для этого в постгрес есть returning, в mssql output.
Ну т.е. это вообще не проблема, тут даже за рамки чистого sql или базовых возможностей orm выходить не надо.
Аноним 14/11/24 Чтв 18:43:41 3322507 499
Сеньер в треде. Спрашивайте свои ответы.
Аноним 14/11/24 Чтв 18:51:03 3322508 500
>>3322507
Как оцениваешь рынок дотнета после 2022? Хотел бы уйти в джаву, голанг?
Аноним 14/11/24 Чтв 18:52:09 3322511 501
>>3322498
>тут даже за рамки чистого sql или базовых возможностей orm выходить не надо.
чистый sql идет лесом. минимально работа с ADO.NET где ест быстрая вставка, но вот получение айди для каждого пункта....

про базовые возможности орм....тот же ef core разве умеет
Аноним 14/11/24 Чтв 19:06:15 3322531 502
>>3322508
Не хотел бы. Там я буду меньше иметь. Все же экспертизу я именно тут получал. Плюс - у них тоже не все заебись.
В плане вакансий - +- так же, плюс добавились АНАЛОГОВНЕТНЫЕ конторы, которые раньше не отсвечивали.
В плане проектов - все похуже стало. Я бы сказал - откат в массовом плане по уровню. Но опять же - дофига повылезало АНАЛОГОВНЕТ.
Я бы не советовал шквариться об аналоговнетные если что. Есть мнение, что потом - будет сложнее с таким вот портфолио.
Аноним 14/11/24 Чтв 20:22:10 3322561 503
image.png 16Кб, 896x66
896x66
>>3321977
Если бы это были свойства, то можно было бы как на пике, а так - хз.
С полями наверное только кодеген (Reflection.Emit/Dynamic method, Expressions, Source generators, и т.д.).
Мимо не эксперт
Аноним 14/11/24 Чтв 21:25:06 3322579 504
>>3322419
Если порождаешь коллекцию чтобы отдать - исходный тип. Если даёшь посмотреть - IReadOnly, а по возможности - инкапсулировать доступ к ней через метод.
Аноним 14/11/24 Чтв 21:27:17 3322582 505
{811B149C-3C0B-[...].png 354Кб, 1210x1114
1210x1114
>>3321977
Можно так. Ток нахуя - я хуй знает.
Аноним 14/11/24 Чтв 21:37:13 3322588 506
Аноним 14/11/24 Чтв 21:46:28 3322600 507
изображение.png 206Кб, 1475x522
1475x522
Подскажите, пожалуйста, почему не ставятся куки в _httpContextAccessor.HttpContext.Response.Cookie. На скрине видно, что ставится как минимум одна (а почему не две?), но в браузере нет ни одной. В этом классе я удаляю токены из ответа, чтобы запихнуть их в куки. Токены удаляются, но вот в куки нихуя не ставиться. Полный код на pastebin: https://pastebin.com/ie16QiXf
Аноним 14/11/24 Чтв 22:23:36 3322625 508
Аноним 14/11/24 Чтв 22:26:34 3322631 509
Аноним 14/11/24 Чтв 23:45:54 3322654 510
>>3322588
про даппер шутники
взяли "пусть даппер делает миллион инсертов" и ха ха ха

даппер это либа читалка. и в CUD не умеет являясь не более чем Sql враппером и маппером результата.

Зато по времени запуска и потреблению памяти EF настолько плох, что не везде и подходит.
Аноним 15/11/24 Птн 05:43:23 3322703 511
>>3322243
>Также можно легко сделать шардирование.

Можно сделать шардирование, а ещё можешь пойти нахуй, если тебя никто не просил делать шардирование.

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

Что-то на уровне "ты должен везде использовать автомаппер потому что ОН ОПТИМИЗИРУЕТ ЗАПРОСЫ В БД".

Пиздец, я ебу, надо поговорить с твоей мамкой. Как она такое кресло тупое вырастила?
Аноним 15/11/24 Птн 05:45:58 3322704 512
>>3322507

Как ты относишься к элегантныму коду?
Аноним 15/11/24 Птн 05:58:56 3322708 513
photo2024-11-07[...].jpg 233Кб, 960x1280
960x1280
>>3322419

На мой взгляд лучше воздержаться от возвращения IEnumerable<T>:

- Rider будет тебя задалбывать предупреждением "possible multible enumeration"
- Если качество кода низкое и разрабы плохо понимают время жизни объектов, можно напороться на неожиданные ObjectDisposedException. Часто бывает, кстати
- Потребители будут через каждую строчку делать .ToList()
Аноним 15/11/24 Птн 07:56:26 3322740 514
>>3322708
Естественно стоит воздержаться если это не метод расширения. В 99% случаев есть понимание что на выходе должен быть IReadOnly
Аноним 15/11/24 Птн 07:59:54 3322741 515
image.png 144Кб, 673x221
673x221
>>3322703
>Что-то на уровне "ты должен везде использовать автомаппер потому что ОН ОПТИМИЗИРУЕТ ЗАПРОСЫ В БД".
Лол, с учетом того, что это один из самых медленных и прожорливых мапперов, то я хер знает в чем там смысл этой оптимизации.
Аноним 15/11/24 Птн 08:20:30 3322747 516
>>3322741
Да похуй на оптимизации. Я просто хочу свалить все маппинги в одном месте и забыть об этой хуйне как о страшном сне.
Нет ничего хуже чем бегать по всему коду и искать все эти методы MapZalupaToGovno. В случае автоммапера это хоть все валяется в одном месте рядышком и можно быстро найти все маппинги.
Аноним 15/11/24 Птн 11:07:56 3322843 517
>>3322747
>В случае автоммапера это хоть все валяется в одном месте рядышком и можно быстро найти все маппинги.

Дед писал в одном файле, вот и я пишу!
Аноним 15/11/24 Птн 12:31:26 3322892 518
>>3322747
>Нет ничего хуже чем бегать по всему коду и искать все эти методы MapZalupaToGovno
Нормальные IDE использовать не пробовал?

>В случае автоммапера это хоть все валяется в одном месте рядышком и можно быстро найти все маппинги.
1 - "быстро найти" - все про то же, нахуя их искать? Вот у тебя метод, ткнул в него F12 или мышей и все видишь. В чем сложности-то?
2 - "в одном месте" они у тебя будут только если ты сам их туда запихнешь. Они вполне себе могут быть так же раскиданы по разным файлам и лежать каждый рядом со своими моделями. Плюс с самописными мапингами тоже можно извратиться и запихнуть их все в один файл.

>>3322747
>MapZalupaToGovno
Ну так используй экстеншены с дженериками и у тебя все методы так же и будут называться Map как и у автомаппера.
Аноним 15/11/24 Птн 13:28:10 3322959 519
использую explicit operator для маппинга
и пох кто что думает.
Аноним 15/11/24 Птн 14:55:34 3323064 520
2024-11-1514-47[...].jpg 34Кб, 754x455
754x455
2024-11-1514-48[...].jpg 1Кб, 165x46
165x46
В WPF переопределяю стиль по умолчанию для TextBlock.
Теперь я хочу, чтобы текст в ToggleButton был другого цвета. Я уже привык, что просто задание Foreground ничего не даст — цвет в ToggleButton по прежнему будет красным.

Затем я в ContentPresenter меняю TextElement.Foreground, и теперь это тоже не работает. Почему?
Аноним 15/11/24 Птн 15:33:56 3323102 521
image.png 686Кб, 1280x703
1280x703
Аноним 15/11/24 Птн 15:37:01 3323103 522
>>3322747
>Нет ничего хуже чем бегать по всему коду и искать все эти методы MapZalupaToGovno

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

Ебать, конечно, с автомаппером можно ад сотврить, потом в строну отскочить и смотреть как олег с ним ебётся
Аноним 15/11/24 Птн 16:16:58 3323125 523
>>3323064
стили не могут переопределить то, что задано явно.
Аноним 15/11/24 Птн 16:32:04 3323139 524
>>3323064
Чтобы переопределить стиль текстблока, стиль кнопки тоже должен переопределять дефолтный стиль, т.е.:
> x:Key="{x:Type ToggleButton}"

Почему стиль со строковым ключом не переопределяет дефолтный - хз, но нам точно известно, что такой стиль - это новый экземпляр.
Аноним 15/11/24 Птн 16:35:56 3323141 525
>>3323125
И где же у меня задано явно?
Аноним 15/11/24 Птн 16:39:01 3323145 526
>>3323141
в ContentPresenter же. когда ты пишешь PropertyName="" это значит явное задание
Аноним 15/11/24 Птн 17:22:37 3323168 527
2024-11-1517-17[...].jpg 8Кб, 984x85
984x85
>>3323145
Я чату гпт задал этот вопрос и он тоже меня понял наоборот. Я НЕ хочу переопределить то, что задано в ContentPresenter явно. Я хочу при помощи ContentPresenter изменить базовый стиль TextBlock.

Если ты посмотришь на этот >>3323064 стиль, то я хочу видеть внутри кнопки текст цвета фуксии, но у меня почему-то он остается красным.

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

Но если я абсолютно ту же строку добавлю куда нибудь в отдельный словарь ресурсов, то у меня нахуй все контролы игнорируют собственные значения Foreground.
Аноним 15/11/24 Птн 19:22:22 3323263 528
>>3323168
я вижу у тебя x:Key для стиля текстблока
он не должен автоматом применяться к текстблокам
но я не вижу где бы ты его использовал явно.
Аноним 15/11/24 Птн 20:09:19 3323282 529
>>3323263
>я вижу у тебя x:Key для стиля текстблока
>он не должен автоматом применяться к текстблокам

Если у тебя ключ строковый, типа
> x:Key="TextBlockStyle"
то создается новый экземпляр стиля. В дальнейшем тебе придется явно его применять
> Style="{StaticResource TextBlockStyle}"

Если ты в ключе стиля указываешь тип целевого контрола
> x:Key="{x:Type TextBlock}"
то НЕ создается новый экземпляр стиля, а переопределяется дефолтный стиль. В дальнейшем, где бы не создавался текстблок, он автоматом будет использовать этот стиль.

Но проблема в том, что это влияет вообще на все остальные стили. К примеру, ты переопределил цвет текстблока на красный. А в своей кнопке указал Foreground="Yellow", так вот текст все равно будет красным.

Как с этим бороться - хз, кроме пары костылей.
Аноним 15/11/24 Птн 20:44:38 3323291 530
изображение.png 36Кб, 628x578
628x578
изображение.png 37Кб, 662x582
662x582
>>3323282
>то НЕ создается новый экземпляр стиля, а переопределяется дефолтный стиль
я эту магию не знаю. этот x:Key не нужен, ну может там экземпляр где то экономится. все равно решарпер дропнет это указание потом

я не понял зачем ты переопределяешь шаблон toggleкнопки только для цвета
вообще там сам черт ногу сломит в этих стилях, но вот тебе 2 варианта (в зависимости от того что там за контент)
Аноним 15/11/24 Птн 21:33:28 3323307 531
>>3323291
>этот x:Key не нужен
Я думал без ключа нельзя добавлять в словарь. Раньше постоянно выдавало ошибку.

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

> но вот тебе 2 варианта
Про это я знаю, но как будто бы это костыль.
Аноним 15/11/24 Птн 21:42:25 3323312 532
>>3323307
да вся система стилей WPF это костыль
Аноним 16/11/24 Суб 02:23:05 3323378 533
>>3316183
Поэтому пишу на Rider, чтобы не вендерлочиться. Тут все по-человечески, и IDE не пытается делать абстракции над своим функционалом, прямо чувствуешь, как развиваешься в познании устройства экосистемы .NET. Кстати, на днях Rider стал бесплатным для некоммерческого использования
Аноним 16/11/24 Суб 07:08:13 3323418 534
Аноним 16/11/24 Суб 07:36:07 3323423 535
>>3323282
> Но проблема в том, что это влияет вообще на все остальные стили. К примеру, ты переопределил цвет текстблока на красный. А в своей кнопке указал Foreground="Yellow", так вот текст все равно будет красным.
Так не должно быть. Наследование свойств родительского элемента имеет более высокий приоритет, чем свойства в стиле. По крайней мере во всех современных xaml фреймворках именно так.
Аноним 16/11/24 Суб 07:37:27 3323424 536
>>3323378
Когда в райдер завезут нормальную многооконность с возможностью группировать вкладки в пределах одного окна?
Аноним 16/11/24 Суб 11:28:46 3323503 537
>>3323423
>Наследование свойств родительского элемента имеет более высокий приоритет, чем свойства в стиле.
Контент контрола это не совсем дочерний элемент, иначе бы бэкграунд условного грида влиял на бэкграунд элементов внутри этого грида.

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

Или, вот, к примеру, я создал кнопки стиль с дефолтным бэкграундом, добавил триггер перекраски бэкграунда при наведении курсора. Потом создаю кнопку, применяю этот стиль, а затем беру и меняю бэкграунд. У меня просто перестает отрабатывать смена цвета при наведении курсора.

Да и TextElement.Foreground в контент презентере вроде как должен был переопределить дефолтный цвет контента.

То ли я давно не работал с ВПФ и у меня искаженны представления о работе с ним, то ли раньше такого не было.
Аноним 16/11/24 Суб 12:38:31 3323547 538
>>3323378
Я надеюсь ты за деньги за барина потеешь. А то он на херу тебя вертит, запрещает тебе все, кидает на купленные лицензии, а ты забесплатно ему ножки целуешь.
Аноним 16/11/24 Суб 12:41:31 3323550 539
javacs.png 48Кб, 1201x225
1201x225
Аноним 16/11/24 Суб 12:42:06 3323551 540
2024-11-1612-24[...].jpg 37Кб, 779x375
779x375
2024-11-1612-24[...].jpg 1Кб, 179x84
179x84
>>3323503
Вот пикрил 1 — абсолютно два одинаковых ItemsControl, биндятся к двум разным экземплярам одного класса. Стиль TextBlock переопределен на светло-серый. Само свойство Name итема имеет тип string.

На пикрил 2 — как эти два списка выглядят. Дефолтный стиль подхватился только для второго ItemsControl, а первый отображает не переопределенный стиль TextBlock.
Аноним 16/11/24 Суб 12:47:24 3323555 541
>>3323418
У красноглазых все еще триггер на мягких, хотя когда мс говнил в 90е половина в то время еще не родилась. Вторая половина до сих пор в криокамере думая, что дотнет это только про винду.
Аноним 16/11/24 Суб 12:59:58 3323564 542
>>3323291
1. Как ты привяжешь форгарунд стиля к форгарунду темплейта? У тебя темплейт биндинг в этом случае не работает.

2. Если данные о цвете находятся в другом словаре (вряд ли ты будешь хардкорить цвет), то придется юзать DynamicResource, а его запрещено юзать конкретно в этом месте.
Аноним 16/11/24 Суб 13:06:52 3323571 543
>>3323564
>Как ты привяжешь форгарунд стиля к форгарунду темплейта?
через TargetName
Аноним 16/11/24 Суб 14:10:36 3323607 544
>>3323551
Возможно дело в том, что в первом случае у тебя две кнопки в одной группе, и триггерры переопределяют цвет.
Аноним 16/11/24 Суб 15:02:11 3323629 545
Почему тырпрайза бояться\стесняются\стремаются писать микросервисы на STS версиях .NET. В чем проблема?
Аноним 16/11/24 Суб 15:09:43 3323639 546
>>3323629
Зачем рисковать ради того, чтобы пара анальников порадовалась сахарку?
Аноним 16/11/24 Суб 15:36:01 3323650 547
>>3323629
Мы у себя пишем под астру. Там официально тольео .Net6.
Если случается какая-нибудь хуета, то мы идем и ебем поддержку астры и они её решают.
Нам ничто не мешает накатить 7-й и выше, но в случае каких-либо проблем ебать будут уже нас.
Аноним 16/11/24 Суб 16:10:44 3323673 548
>>3323629
>Почему тырпрайза бояться\стесняются\стремаются писать микросервисы на STS версиях .NET. В чем проблема?

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

Но его проёбывают все, а потом накопительный эффект срабатывает.

Плюс, у дотнетчиков есть блядская привычка игнорировать преимущества платформы и тащить в код гордиев узел из нугет зависимостей, когда автофак, abp.volo, mongodb и динамические прокси castle сплетаются в бешеном танце таким образом, что разбор этого говна занимает 5-24 месяцев.

тут естесственно никакой дотнет не обновишь. На моей прошлой работе сидели на Framework 4.5.2 + windows server потому что вовремя не обновились, а потом уже поздно было.

Такая хуйня решается двумя способами, либо рубить этот узел нахуй, либо последовательно, выверяя каждый шаг решать через техдолг.
Аноним 16/11/24 Суб 16:27:21 3323679 549
>>3323673
У нас все тормозит внутренний фреймворк блять. Почему-то каждый банк считает себя самым умным и начинает писать свои велосипеды.
Fluentvalidation? Нахуй надо сделаем свою реализацию и пахую что им пользуются 800кк проектов, есть гигатонны документации и решены и добавлены все возможные хотелки.
Маппер? Да не мы не будем использовать библиотеки и напишем свой.
Я даже видел попытки написать свою ORM, свои системы конфигурации поверх, а то и вместо .NET. Видел как люди писали ебучий редис, точнее копипастили блять его исходники, но немного меняя под свои шизобредни.

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

Особо видел ебанутую хуйню. Поцоны не использовали свойства, точнее использовали, но писали им геттер и сеттер, отдельными методами. Это тип для правильной архетуктуры и ограничений доступа и вот это вот все. Я задал вопрос знают ли они что такое свойства в С#, как они работают что означают надписи get set в их объявление, во что они компилируются и почему их возможно объявить в интерфейсе. Ответ был что-то в стиле "мням пук".
И это делали не какие-то джуны, сениоры и техлиды крупного банка, завсегдатые докладчики разных конференций, люди которые у меня на собеседование спрашивали какие книги я читаю по профессии.
Аноним 16/11/24 Суб 16:28:31 3323680 550
>>3323629
Мы на новые версии в течении двух-трёх месяцев переходим, как только команда платформы под нее свои пакеты выпустит. Мы любим свеженький сахарок от M$.
Мимо-из-озона
Аноним 16/11/24 Суб 16:31:16 3323681 551
Пора на работу шоле устроится, но так то хз как.
Как поднять себя в глазах работодателя если до этогу писал всякую хуйню типо регеров, парсеров, брутеров, чекеров, тг ботов, игровых ботов с пиксель хантом. Не буду же я ему рассказывать как админки wp сканил, да и все остальное как то не солидно, чисто 1 функцию софт выполнял без особых наворотов.
Мб надо какой то проект написать что бы показать, только вот хуй знает какой, todo кажется какой то хренью.
Аноним 16/11/24 Суб 16:34:51 3323683 552
>>3323681
Или как я на мобилах автоматизировал хомяка лол
Аноним 16/11/24 Суб 16:35:22 3323684 553
>>3323679
>Маппер? Да не мы не будем использовать библиотеки и напишем свой.
Ну, вы долбоёбы, автомаппер вообще не надо использовать на чём-то большем чем пет проект, а вы сами в это говно лезете и ещё и хуже делаете. Фу, блядь, автомапер говно ебаное
Аноним 16/11/24 Суб 16:55:19 3323691 554
sdfsdfsdf.png 1687Кб, 3796x8894
3796x8894
Выделил то к чему прикасался, к чему то больше к чему то меньше, но знаю как минимум примерно как юзать и как гуглить вопросы.
Вот только тесты обошёл стороной.
Но всю эту хуергу учить это я еще 2 года буду
Аноним 16/11/24 Суб 16:56:02 3323692 555
Аноним 16/11/24 Суб 16:57:19 3323693 556
image.png 28Кб, 723x310
723x310
Аноним 16/11/24 Суб 17:24:55 3323704 557
>>3323684
Всегда его пользую. Какие альтернативы ты предлагаешь? По 50 методов MapGovnoToMocha? Ну вот иди нахуй с такими предложениями, искать концы таких маппингов потом отдельный квест, особенно когда мудак забывает прописать новые свойства в них.
Автомаппер можно настроить так что он будет требовать явный маппинг всех свойств поэтому забыть что-то или не прописать будет невозможно на уровне построения схем.

Ну и у нас же эра микрозалуп, там всегда не больше 10-20 маппингов. Но тут можно и не использовать либы и писать руками, а вот когда их штук 300 то тут только централизованые схемы онли потому что по другому ебанешься всем этим управлять
Аноним 16/11/24 Суб 17:53:01 3323717 558
>>3323704
>Ну вот иди нахуй с такими предложениями, искать концы таких маппингов потом отдельный квест.

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

> Какие альтернативы ты предлагаешь?

хотя бы мапперли. Но не уебанский автомаппер, который уже лет 10 ненавидят и каждый год выходит по 3-5 статей, где у людей жопу порвало от того, как НЕ НАДО использовать АМ.

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

Init-only свойства делаешь и в хуй не дуешь. Компайл тайм сейфети
Аноним 16/11/24 Суб 18:21:16 3323738 559
>>3323717
>Init-only свойства делаешь и в хуй не дуешь. Компайл тайм сейфети
двачую адвоката. сразу найдешь все места где нужно добавить. fail-fast рулит.
Аноним 16/11/24 Суб 18:46:47 3323757 560
>>3323717
> Init-only свойства делаешь и в хуй не дуешь. Компайл тайм сейфети
Как это поможет избежать ошибок маппинга?
Аноним 16/11/24 Суб 19:14:54 3323784 561
>>3323547
Не понимаю о чем ты, использую взломанную версию. Обновления скачиваю через vрn. С барином не пересекаюсь. Какая барину разница, что я использую его ide или нет? IDE - это просто инструмент.

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

Microsoft с его VS - это тоже западный барин, и тоже исполняет санкции
Аноним 16/11/24 Суб 19:26:18 3323796 562
>>3323547
Даже, наверно, не так.

Вы поссорились с мастером, но тебе нравятся инструменты, которые он делает. Идешь на базар и ищешь, продает ли кто-то из людей (но не этот мастер) молоток, который сделал этот мастер. Покупаешь и используешь
Аноним 16/11/24 Суб 19:41:35 3323813 563
изображение.png 10Кб, 659x76
659x76
изображение.png 240Кб, 1502x676
1502x676
изображение.png 308Кб, 1530x956
1530x956
>>3323424
Группы типо, как в Chromium браузерах? Такого не нашел.
Или ты про такую группировку (пик 2)? Она имеется (пик 3)
Аноним 16/11/24 Суб 20:15:27 3323827 564
image.png 39Кб, 740x512
740x512
>>3323704
Даже создатель автомаппера не советует пользоваться автомаппером, если кроме случаев перегонки простых моделей в такие же простые без логики. В крайнем случае сложного в простое.
Но в большинстве случаев все начинают туда пихать и валидацию и бизнеслогики, в итоге чего получается неповоротливое неподдерживаемое нечто на тысячи строк в одном файле.
Аноним 16/11/24 Суб 20:21:02 3323829 565
>>3323378
>Поэтому пишу на Rider, чтобы не вендерлочиться.
По моему райдер и решарпер в довесок к нему, как раз и есть дичайший вендорлок. Кучу раз встречал достаточно опытных разрабов которые в тех случаях когда приходится работать без него становятся беспомощными. В то же время слезть с того же VS и переключися на VSCode или тот же райдер ни у кого не вызывает проблем (ну кроме у совсем нубасов)
Аноним 16/11/24 Суб 20:32:12 3323835 566
>>3323784
>Microsoft с его VS - это тоже западный барин, и тоже исполняет санкции
Между Microsoft и Джетбрейнсом есть небольшая разница.
1. IDE и софт не приоритетные направления для MS и они могут вполне забивать хуй в них на регуляторов в этом направлении, пока выполняют их в более приоритетных и масштабных (те же облака или корпоративка). Плюс майки сами по себе достаточно крупные, чтобы при необходимости прогибать решения в свою сторону. Для джетбрейнсов же это основная область деятельности, поэтому они и трясутся так, что выполняют все требования, плюс они по сути никто на большом рынке.
2. Макрософт базируется в США где во многих областях применим русский принцип про компенсацию строгости законов необязательностью их исполнения. Джетбрейнсы же находятся в европе, где вся эта регуляторка сильно ебанутая и там власти с упорством фашиков будут следить за исполнением всех этих санкций и законов, даже если это наносит явный вред им же.
3. Майкрософт прекрасно умеет в захват рынка и они прекрасно понимают, что вся эта хуета когда-нибудь кончится и когда они вернутся, то здесь будет куча новых и старых разрабов, которые намного лояльнее будут отностися к их IDE и к ним самим, чем к райдеру. А это важнее чем сиюминутные (в рамках их бизнеса) выгоды/потери от запретов.

Но да, никто не отменяет того варианта, что майки тоже могут в любой момент ебануться и перекрыть доступы к их продуктам.
Аноним 16/11/24 Суб 20:34:57 3323836 567
>>3323784
>Microsoft с его VS - это тоже западный барин, и тоже исполняет санкции
Еще забыл добавить пункт, что джетбрайнс судя по высказываниям их представителей в публичном пространстве - идейные, а майкрософт интересуют только деньги. Что в данной случае добавляет им очков.
Аноним 16/11/24 Суб 21:08:39 3323863 568
Аноним 16/11/24 Суб 21:22:21 3323870 569
>>3323757
>Как это поможет избежать ошибок маппинга?

А откуда возьмутся ошибки маппинга, если ты не используешь Automapper?

Не надо героически бороться с проблемой, которую ты сам себе не создавал
Аноним 16/11/24 Суб 22:18:43 3323905 570
>>3323870
Ты не прописал маппинг новых свойств. Теперь у тебя сыпытся ошибки из БД из-за null. Все это на проде. Твои действия?
Аноним 16/11/24 Суб 22:40:59 3323922 571
>>3323905
если при добавления свойства что должно быть в бд не проверить хоть раз реально ли туда попадают данные - ну это нужно уметь.

А маппинг между всякими дтошками - ну просто не скомпилится код пока маппинг не пропишешь.
Аноним 17/11/24 Вск 06:01:02 3323999 572
#3323905
> Ты не прописал маппинг новых свойств. Теперь у тебя сыпытся ошибки из БД из-за null. Все это на проде. Твои действия?

А ты мастер перекладывать с больной головы на здоровую.
Аноним 17/11/24 Вск 06:03:04 3324000 573
>>3323922
> если при добавления свойства что должно быть в бд не проверить хоть раз реально ли туда попадают данные - ну это нужно уметь.
Я же не тестер, чтобы что-то там проверять
Аноним 17/11/24 Вск 08:20:34 3324016 574
>>3323905
> Ты не прописал маппинг новых свойств

Выкидываю автомаппер нахуй
Аноним 17/11/24 Вск 09:19:12 3324034 575
>>3323922
> если при добавления свойства что должно быть в бд не проверить хоть раз реально ли туда попадают данные - ну это нужно уметь
Так а зачем если automapper просто обрушит приложение в момент запуска или попытки мапинга, что словят тесты.

Я не понимаю почему ты упорно хочешь писать маппинги руками и несёшь какую-то хуйню про выдуманые тобой же проблемы. Хочешь тратить по 2ч на тестирование кода и маппингов вместо автоматизации флаг тебе в жопу.
Аноним 17/11/24 Вск 09:39:06 3324043 576
>>3323905
> Твои действия?

Собрать митинг, объяснять на пальцах КОНВЕНЦИИ, как правильно писать под автомаппер
Аноним 17/11/24 Вск 09:43:00 3324044 577
>>3324034

> ты упорно хочешь писать маппинги руками

Ты так говоришь, как будто автомаппер эту проблему как-то решает.
Аноним 17/11/24 Вск 09:50:28 3324045 578
Аноним 17/11/24 Вск 10:29:33 3324062 579
Аноним 17/11/24 Вск 10:49:53 3324069 580
>>3323681
Знакомишься с тяночкой-мидлом/синькой. Все что ей там нужно где надо сладенько делаешь. Намекаешь, что хочешь в АйТи но не знаешь как. Она тебе все устроит.
Базарю. Сам так вкатился и половина друзей. Пока всякие задроты чет там по собесам ходили, чет там учили, какие-то стеки-хуеки. Я уже был сеньером с 5 годами опыта, 4 тяночка сказала приписать в резюме, а то несолидно будет.
Надо понимать, короче, что АйТи это же в первую очередь ЛЮДИ. Вот. Начни с тяночки айтишницы.
Единственное, если вдруг окажется мужик начальником - придется тяжело двигаться по карьерной лестнице, если ты, ну ты понял. Так что наводи справки о конторе куда пристраивать будут и если ты не готов - лучше искать другую тяночку и другую контору, где тяночка будет в руководителях. Но если, как говориться, у тебя бекенд рабочий и вообще ты не против погонять gRPC через свой шлюз - то все вполне может сложиться и в конторе где мужик руководитель.
Аноним 17/11/24 Вск 11:32:10 3324090 581
>>3323691
>Но всю эту хуергу учить это я еще 2 года буду

Если опыта нет, то выучи самое главное:
дотнет - не сишарп, а именно дотнет, как эта технология изнутри устроена (Рихтер)
алгоритмы, сложность, О-нотации, хеш-таблицы, красно-чёрные деревья и всё такое
SOLID, Паттерны проектирования, DDD, паттерны проектирования микросервисной архитектуры (оутбоксы и прочее)
многопоточное и асинхронное программирование. Примитивы синхронизации потоков
SQL - транзакции, уровни изоляции, планирование схемы бд, нормализация-денормализация
Аноним 17/11/24 Вск 11:45:12 3324099 582
Аноним 17/11/24 Вск 11:54:37 3324105 583
>>3324099
Почему? Ты предоставил дерево знаний сеньёра. Тут похуй вообще, знаешь ли ты раббит, редис, фреймворки тестирования, сигналр, хенгфаер, кубер и прочее, от тебя как от джуна этого не требуется. То, что я написал - это база: дотнет, алгоритмы, паттерны, многопоточка и SQL, всё остальное - наживное
Аноним 17/11/24 Вск 13:22:49 3324168 584
Аноним 17/11/24 Вск 13:27:27 3324170 585
Аноним 17/11/24 Вск 13:37:08 3324181 586
image.png 17Кб, 313x216
313x216
>>3324168
Как всегда школьный роадмап.
Сделаем асп.нет снова не масштабируемым.

Про Постгресс и SQL Server понравилось, SMM отдел одобряет.
Аноним 17/11/24 Вск 15:48:45 3324242 587
image 386Кб, 2048x1430
2048x1430
Посоветуйте книжку по C# на русском + с примерами и задачами.
Аноним 17/11/24 Вск 17:39:06 3324296 588
>>3324000
да, ты крутой разраб.
задача: нам нужно выводить возраст пользователя
ты - добавил поле, ни разу не запускал, никуда не смотрел и сразу на прод
Но мы как нибудь по старинке - ХОТЬ РАЗ ЗАПУСТИМ ПРОВЕРИТЬ что добавленный код делает что надо.

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

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

>выдуманые тобой же проблемы
неявность маппинга - не выдуманная проблема.

>обрушит приложение в момент запуска или попытки мапинга, что словят тесты
>Хочешь тратить по 2ч на тестирование кода и маппингов
с required init код даже не скомпилится. и никакие тесты не словят ибо НЕ НАДО. И подправить маппинги явно не сильно хуже чем "оно как то само".
Аноним 17/11/24 Вск 17:39:50 3324298 589
Microsoft отказывается от C# — ключевой компонент Microsoft 365 перепишут на Rust

Microsoft активно переписывает отдельные части своих программных продуктов на Rust — более производительной и безопасной альтернативе С#. Портал MSPowerUser заметил на сайте компании вакансию для главного архитектора ПО Microsoft 365: он возглавит новую команду специалистов, которые перепишут с C# на Rust серверный код облачной платформы.

Даже мелкософт отказались от своего поделия лол.
Аноним 17/11/24 Вск 17:40:46 3324300 590
>>3324298
о жавист забежал с протухшим говном.
уже давно напихали в ротешник им, но видимо наелись не все.
Аноним 17/11/24 Вск 18:38:53 3324335 591
>>3324296
>ХОТЬ РАЗ ЗАПУСТИМ ПРОВЕРИТЬ
Ты ведь знаешь что есть проекты которые нельзя проверить руками или там слишком сложная логика чтобы её повторить.
Ты пишешь обычно юниты и на них орентируешься.

Ещё раз. Зачем тебе ебаться если можно поставить автомаппер и не иметь проблем?
Аноним 17/11/24 Вск 19:01:15 3324354 592
>>3324296
>неявность маппинга - не выдуманная проблема.

Вообще считаю автомаперщиков какой-то отдельной кастой цыган, которые в бедных районах заводятся и начинают героином торговать. Все вокруг их ненавидят, но сделать ничего не могут.
Аноним 17/11/24 Вск 19:06:39 3324361 593
>>3324335
>Ты пишешь обычно юниты и на них орентируешься.
ты уж определись проверяешь ли ты работоспособность нового кода или сразу в прод. А то ты прыгаешь со стула на стул.

>и не иметь проблем?
и иметь проблемы с автомаппером )))

и ты так и не пояснил каких таких проблем. (ну кроме того что ручками писать маппинги надо - ну так это не всем минус. ЯВНОСТЬ оно как бы плюс, required не даст тебе ничего упустить)
Аноним 17/11/24 Вск 19:31:16 3324397 594
>>3324335
> если можно поставить автомаппер и не иметь проблем?

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

А мне не нравится сомневаться в коде

Поэтому, обычно не поддерживаю автомаппинг, и местами переписываю на более простой подход.

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

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

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

И судя по моему опыту он далеко не на всех проектах применим.
Аноним 17/11/24 Вск 19:38:53 3324404 595
>>3324242
Посоветуйте нейросеть, которой скормить эту пикчу без СМС и регистрации, чтобы перерисовала в стиле?
Аноним 17/11/24 Вск 19:42:11 3324406 596
>>3324397
Да и вообще, нахожу идею автомаппинга противоречивой.

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

А если необходимо маппить разные классы, то достоинства автомаппера пропадают
Аноним 17/11/24 Вск 19:51:09 3324410 597
>>3324406
Чаще всего необходимо преобразовать входное ДТО в объект или наоборот объект в одну из 10 разных ДТО под разные цели.

Также этот баран упорно игнорирует что я отключаю неявный маппинг и включаю требование чтобы все поля бы указаны явно.
Аноним 17/11/24 Вск 20:05:40 3324420 598
>>3324406
Маппить приходится, когда у тебя DDD. В большинстве DDD у тебя есть какая-нибудь сущность которая ну вот центральная, у нее 100500 свойств. Иногда вообще доходит до того, что эта сущность не влезает в ограничения СУБД на число колонок.
Так вот. С точки зрения домена - эта сущность должна оставаться такой. Но с точки зрения этого же домена - прилетают какие-то промежуточные хуйни.

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

Это я не к автомапперу, если что. А к тому что ну вот так вот случается, что часто в системе появляется такая сущность, которая дохуя всего имеет и ее хуй ты разобьешь, потому что никому это нахуй не надо в первую очередь, а во-вторую, что разбивая ты получишь связи 1 к 1, а это хуево и нахуй не всралось.
Аноним 17/11/24 Вск 21:43:40 3324449 599
image.png 200Кб, 1728x1067
1728x1067
Аноним 17/11/24 Вск 21:54:30 3324454 600
rust-be-like-v0[...].webp 45Кб, 500x707
500x707
>>3324298
Это та статья где евангелисты раста обосрались. В общем, наверное в том году маркетологи увидели вакансии в 365 о расте, купили на левом сайте статью и начали носиться по всему инету, пока представитель того 365 сказал (топ коммент на редите) что они не являются мягкими и что там просто вакансии каких-то перделок.

Все что нужно знать про маркетинг раста, самого любимого языка (сколько там его любят? Лет 6 уже наверно)

жалко что джава превратилась в кобол.
Аноним 17/11/24 Вск 23:18:54 3324477 601
Такой вопрос
Есть Blazor WA стандартное приложение в ней тестовая страница Counter
Код
@code {
private int currentCount = 0;

private void IncrementCount()
{
currentCount++;
}
}

Значение меняется после каждого нажатия, и вот вопрос, по выходу из метода не явно вызывается метод StateHasChanged() ? Или как Блазор узнаёт что пора обновить данные на странице?
Аноним 17/11/24 Вск 23:30:59 3324480 602
>>3324477
Также как реакт. У него в памяти хранится полное дерево страницы и он её постоянно сравнивает с новым.
Аноним 17/11/24 Вск 23:36:19 3324482 603
>>3324480
Ну да жпт чат рассказал. И сказал что StateHasChanged() вызывается не явно. Правильно?
А обновление страницы может случится пока метод еще до конца выполнен? К примеру запущен другой метод в цикле и он меняет страницу.
Либо проверка изменений идет всегда даже когда в приложении ничего не происходит?
Вот с этим совсем не понятно.
Аноним 18/11/24 Пнд 05:45:40 3324562 604
>>3324410
> я отключаю неявный маппинг и включаю требование чтобы все поля бы указаны явно.

На мой взгляд, это обнуляет всю идею.

Либо АМ по нормальному использовать (требование на одинаковые имена и типы свойств на всех слоях, никаких .AfterMap, все свойства маппятся неявно, КОНВЕНЦИИ), либо отказываться от автомаппинга.
Аноним 18/11/24 Пнд 05:51:14 3324563 605
>>3324420
>Маппить приходится, когда у тебя DDD. В большинстве DDD у тебя есть какая-нибудь сущность которая ну вот центральная, у нее 100500 свойств.

>Ну, давай я для примера что-то просоте. Допустим что-то по автоматизации завода. Вот есть устройство. У него есть серийный номер. Номер на складе. Есть статус.

Надо в БД положить модель ЗАВОД и написать на него микросервис. А автомаппер будет всё автоматически делать
Аноним 18/11/24 Пнд 12:48:32 3324793 606
2024-11-1812-45[...].jpg 5Кб, 571x95
571x95
Насколько зашкварен подобный тип данных, когда дженерик коллекция находится внутри дженерик коллекции?
Аноним 18/11/24 Пнд 13:00:11 3324802 607
>>3324793
В теории нет, но ObservableCollection не реагирует на изменение данных внутри другойколлекции, поэтому лучше использовать CollectionViewSource с группировкой данных по нужным полям.
Аноним 18/11/24 Пнд 16:10:13 3324928 608
>>3324793
чем тип, от которого НЕ ожидается необходимости следить за изменениями отличается от числа 42?
Аноним 19/11/24 Втр 16:23:22 3325656 609
планирую перекотываться к вам из пыха, вотувидите, через год я вкочусь к вам!
Аноним 19/11/24 Втр 16:57:16 3325687 610
>>3325656
Через год?
Я шарп за две недели выучил. Правда это в ковидный год было, когда кругом шиза прогрессировала, все сидели по домам и делать было решительно нехуй.
Аноним 20/11/24 Срд 06:27:37 3325902 611
image.png 57Кб, 496x362
496x362
4 месяца я приводил проект в порядок, сначала выкинул ABP.Volo, который зависел от хитросплетения нугет зависимостей, которые в свою очередь не давали обновить дотнет до актуального.

От ABP.Volo на проекте требовался только базовый класс для DDD репозиториев МонгоДб. (забегая вперёд, в конце остался базовый класс на 300 строчек и экстеншены на 100 строк, чтобы его зарегистрировать в DI)

Чтобы инжектить этот базовый репозиторий, на проекте требовались динамические прокси, автофак, около 40 нугетов от самого ABP.Volo, и около 20 пакетов не связанных библиотек наподобие RestSharp, каких-то кешей и сериализаций всякой хуйни.

То есть, ты хочешь просто использовать класс, но в отрыве от фреймворка он не работает по двум причинам:
- фреймворк динамически перехватывает все вызовы собственных классов (sic!) и пытается вызывать их в контексте UnitOfWork, от которого напрямую зависит.
- Зависимости класса установить крайне трудно, потому что они ЛЕНИВО инжектятся в свойства (а может и не инжектятся)

Ну ладно. Плохое, тяжёлое, переусложнённое, но в целом работало довольно долго.

Так зачем я это делал? Потому ABP.Volo нельзя было обновлять ввиду ломающих изменений. Как следствие из-за него невозможно было обновить версию дотнета с 3.1. Так же заметил вторую неприятную особенность воло - разработчики часто решают, что они знают КАК ЛУЧШЕ и подменяют функциональность стандартного фреймворка. А ещё часть кода Volo написана в стандартных неймспейсах дотнета. Например, используешь метод из System.Collections.Generic, но на практике оказывается, что он не из стандартной библиотеки, а это кастомный код, написанный на рефлексии.

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

В итоге, остался очень доволен. Я получил контролируемый и предсказуемый ванильный asp.net core на базовом di контейнере. Любопытным бонусом было то, что наше приложение стало расходовать ровно на 100 мегабайт меньше оперативки. Ещё приятным бонусом стало то, что из автодополнения в редакторе IDE пропали случайные неймспейсы

В следующей версии буду обновлять сам дотнет до восьмого. Так же понял, что сама идея использования фреймворков всея руси мне чужда.
Аноним 20/11/24 Срд 16:28:08 3326216 612
>>3325902
>разработчики часто решают, что они знают КАК ЛУЧШЕ и подменяют функциональность стандартного фреймворка.
Я бы за такое убивал. Попытки переписать .NET всегда выглядят как пиздец и робатают через жопу.

>3.1
Ебать тут проект проще с 0 написать.
Аноним 21/11/24 Чтв 03:09:07 3326454 613
vm.jpg 71Кб, 640x580
640x580
Как вы относитесь к автофаку?
Аноним 21/11/24 Чтв 07:25:27 3326475 614
>>3326454
Не нужен. Стандартный майковский DI давно уже умеет почти все, что нужно. Случаи когда было бы оправдано применение какого-либор стороннего контейнера исчезающе малы.

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

Вон сейчас на хабре нашел свежую статью за прошлый месяц, где чувак на полном серьезе пишет вот такое:
>Одна из самых крутых фич в Autofac – это управление жизненным циклом объектов.
и показывает использования автофака на примере ASP.NET шаблона для .NetCore3.1.
Это, блять, в 2024-м году-то когда уже 9-й вышел, ну не пиздец ли.
Аноним 21/11/24 Чтв 09:36:44 3326520 615
>>3326475
>. Стандартный майковский DI давно уже умеет почти все, что нужно
юморист. майковский умеет только самый базовый базис начального уровня.
Некоторым этого хватает, например мне, но отрицать что он не умеет почти нихрена просто тупо. Ну то есть вообще нихрена. Ок, завезли keyed....ну и всё. Хрен с ними, с inject свойствами, но декораторы сколько еще будут делаться через костыли? А это ведь самые базовые вещи.

>на примере ASP.NET шаблона для .NetCore3.1
так а автофак тут причем? не вина автофака и других DI, что майки влепили свой DI в асп, тем самым вынудив лепить другие DI костыльным способом, что мало кому хочется. От этого автофак не стал хуже и майкоDI не стал лучше. ДЕФОЛТНЫЙ НЕ ЗНАЧИТ ЛУЧШИЙ - а значит ДЕФОЛТНЫЙ.
Аноним 21/11/24 Чтв 10:19:21 3326539 616
>>3326520
>ДЕФОЛТНЫЙ
И это заебись. Значит его поддержка будет вечной, а интеграция в сам фреймворк на уровне который невозможно повторить.
Аноним 21/11/24 Чтв 10:33:35 3326542 617
>>3326539
какая поддержка? он практически ничего не умеет и не развивается.

>на уровне который невозможно повторить
до асп.нет коре не было никакой возможности "повторять"
просто эти решения обладали "фатальным недостатком"
Аноним 21/11/24 Чтв 13:18:46 3326702 618
>>3326520
>но декораторы сколько еще будут делаться через костыли?
Ну хуй знает, что там сложного. Один раз написал экстеншен с использованием ActivatorUtilities.CreateFactory и потом используешь везде стандартные
services.AddScoped<IService, Service>();
services.Decorate<IService, ServiceDecorator>();
Аноним 21/11/24 Чтв 13:20:14 3326703 619
image.png 39Кб, 1225x431
1225x431
Как взять коллекцию пар из словаря и добавить пары вида <key, null>, чтобы не было предупреждений? Или предупреждения нормально и забить на них / написать pragma warning disable?
Аноним 21/11/24 Чтв 13:28:28 3326712 620
>>3326703
Для начала объясни зачем это. А то выглядит как классическая XY problem.
Аноним 21/11/24 Чтв 13:31:19 3326717 621
>>3326712
>А то выглядит как классическая XY problem
Наверно оно и есть.
Но я так пытаюсь освоить всю эту хуйню - пробуя писать другую хуйню.
Аноним 21/11/24 Чтв 13:36:40 3326725 622
>>3326703
В объявлении класса добавь where TKey : notnull. А словарь должен быть типа Dictionary<TKey, TValue?>, чтобы можно было default как значение пихнуть
Аноним 21/11/24 Чтв 14:47:36 3326766 623
image.png 45Кб, 1557x351
1557x351
>>3326725
Переписол. Лучше, но не совсем.
>А словарь должен быть типа Dictionary<TKey, TValue?>, чтобы можно было default как значение пихнуть
Так я не пихаю в словарь.
Аноним 21/11/24 Чтв 14:57:21 3326771 624
>>3326766
KeyValuePair<TKey, TValue?> везде юзай. У тебя для ссылочного типа default==null. Значит KeyValuePair должно позволять nullable значения содержать, значит тип значения должен быть TValue?
Аноним 21/11/24 Чтв 14:57:45 3326772 625
image.png 33Кб, 1017x345
1017x345
алсо
Аноним 21/11/24 Чтв 14:59:52 3326773 626
Аноним 21/11/24 Чтв 15:02:06 3326775 627
image.png 34Кб, 1013x355
1013x355
Остаётся только подавить предупреждение?
Аноним 21/11/24 Чтв 15:35:51 3326796 628
Надо выключить все предупреждения!
Аноним 21/11/24 Чтв 15:44:56 3326803 629
Аноним 21/11/24 Чтв 16:04:24 3326810 630
>>3326702
>умеет всё что нужно
>написал экстеншен
ну ты понял.
Я конечно бы взял scrutor, но и это костыли.
и это только одна функциональность из расширенных.
Аноним 21/11/24 Чтв 16:05:13 3326812 631
>>3326775
Попробуй where TKey : default
Аноним 21/11/24 Чтв 16:08:38 3326817 632
>>3326810
фикс
"одна функциональность из расширенных." - из базовых вернее. ибо у скрутора 3.7к звезд и 239 форков.Ну не хотят люди чет экстеншены писать на "никому не нужную и не базовую фичу"
Аноним 21/11/24 Чтв 16:21:24 3326825 633
>>3326810
>и это только одна функциональность из расширенных.

Да заебала уже эта расширенная функциональность в DI контейнерах.

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

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

По сути, от контейнера нужна потокобезопасность, скоупы и три вида лайвтаймов
Аноним 21/11/24 Чтв 16:27:37 3326827 634
>>3326825
От контейнера надо чтобы он в класс прокинул объект нужного типа. Больше нихуя не нужно никаких там функций и фич. Просто блять взять и просто прокинуть.
Аноним 21/11/24 Чтв 16:39:14 3326832 635
>>3326825
> автофака на более производительное решение
ну так переподзай на те решения что используют кодогенерацию. Они такие же - мало что умеют. Чего ты стесняешься.

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

>>3326827
прокидывание прокидывание рознь. одному классу принимающему ILogger хочу подкинуть свой логгер? как? конечно ручным пердолингом. Не сложно, но ручное.
Аноним 21/11/24 Чтв 16:42:46 3326834 636
>>3326827

Ты пэйфон-девелопер, что-ли? Я вообще тотальный минимум не назвал, без которого просто это не работает.

Мимо сеньёр, который 4 месяца жизни въебал на это
Аноним 21/11/24 Чтв 16:44:26 3326835 637
image.png 40Кб, 1049x401
1049x401
Так норм?
Аноним 21/11/24 Чтв 22:45:24 3326988 638
Я чет тупой. Объясните.

Вот я делал какую-то базовую библиотеку. Ну, допустим MyApp.Application. Там определены базовые интерфейсы-типы и вся фигня.
Вот какая-то другая библиотека(Допустим MyApp.Infrastructure) использовала оттуда что-то.
Вот я решил что надо какой-то тип расширить. Добавил пару свойств-методов. Пересобрал базовую. Ту что использовала - не менял ника.
Надо ли мне пересобирать библиотеку которая использовала старую версию типа? Или если я только расширяю - все будет оки?
Просто вроде по логике - если только расширял - все должно быть ок. Но я помню как игрался с AssemblyLoadContext - и там вообще одни и те же типы между контекстами воспринимались как разные.
Че по этому поводу читать-курить?
Аноним 21/11/24 Чтв 23:01:18 3326991 639
>>3326988
Создай тестовый проект и проверь сам. Заодно нам расскажешь.
Аноним 21/11/24 Чтв 23:43:36 3327010 640
>>3326988
>Надо ли мне пересобирать библиотеку которая использовала старую версию типа
Надо. Иначе заебешься потом при сборке ловить "Package downgrade detected..." в неожиданных местах.
Аноним 22/11/24 Птн 05:56:10 3327050 641
>>3326988
>Надо ли мне пересобирать библиотеку которая использовала старую версию типа?

Вообще, в идеале, надо просто пользоваться инфраструктурой msbuild, которая сама разрешает зависимости.

Судя по твоим словам, у тебя какой-то особенный случай. Рассказывай со всеми подробностями свою проблему с самого начала.
Аноним 22/11/24 Птн 15:44:19 3327388 642
Как запустить NUnit тесты на андроид под VS2002? Написал для винды, а для андроида даже проекта соответствующего нет.
Аноним 22/11/24 Птн 16:11:01 3327405 643
>>3327388
Кто тебе такую задачу дал? Они хотят от тебя избавиться.
Аноним 22/11/24 Птн 16:33:34 3327428 644
Аноним 22/11/24 Птн 19:12:41 3327519 645
>>3327050
Ну. Собственно, че рассказывать? Я хочу плагины. Плагины, ессно - не будут я каждый раз пересобирать. Они на то и плагины, их подгрузили и погнали. Если каждый раз надо полностью пересобирать - то я просто могу напрямую их рефами подкинуть и тогда нахуй оно и не нужно вовсе.
Но плагины же должны как-то с основной фигней работать? Должны. Вот им интерфейс, пусть встраиваются.
Но через какое-то время же интерфейс я расширю. И если плагин кто-то сделал, я не хочу чтобы этот чел ебал себе мозги, что типа бля, интерфейс пидорас поменял, мне теперь надо пересобрать всю хуйню, куда-то залить и все такое. Когда чел решит что ему надо что-то допилить в плагине - пусть тогда и пересобирает под новый интерфейс. А в остальном - было бы заебись, если его плагин бы работал как раньше, даже если я расширил интерфейс.
Аноним 22/11/24 Птн 19:28:11 3327524 646
>>3327519
Нихуя непонятно че ты имеешь ввиду и что за шизобред несешь. Ну так впиши новые методы с реализацией по умолчанию и все.
Аноним 22/11/24 Птн 19:38:54 3327531 647
>>3327524
Если есть реализация по умолчанию, то зачем мне интерфейс тогда? Тогда можно сделать класс какой-то уже нормальный.

А так - что непонятно?

Есть IPlugin, Есть IHostApplication. П
лагин - простой.
Хост - будет расширяться, и берется плагином, чтобы иметь доступ к остальному приложению и, собственно - встраивться или дергать какие-то ну совсем общие функции, типа дай мне окно выбора файла, или еще чет, что всем может быть нужно.

Ну. А плагины, как уже сказал - на то и плагины. Я написал его и забил. Один раз собрал, проверил, положил куда-то и если надо - докидываю к основному приложении. В идеале - он должен работать пока базовый интерфейс не поменяется настолько что уже несовместим. Но тут-то он совместим получается, просто новые методы добавились, старые ни сигнатуру ничего не изменили.
Аноним 22/11/24 Птн 22:10:32 3327599 648
Как выглядит инициализация данного конструктора с листом в подобном классе? Это если что просто вывод циферок лучшего счета. С обычными классами даже вопросов не возникало но при выводе листа я что-то прям на ровном месте затуп словил.

class HightScoreList
{
private List<int> ScoreList;
public HightScoreList ( List<int> scoreList)
{
this.ScoreList = scoreList;
}
public List<int> Scores() => ScoreList;
public int Latest() => ScoreList.Last();
public int TopScore() => ScoreList.Max();
public List<int> TopThree() => ScoreList.OrderByDescending(score => score).Take(3).ToList();
Аноним 22/11/24 Птн 22:29:53 3327608 649
а всё, не надо уже, сам перебором подобрал лол. Я почему-то сложнее вывод писал чем нужно было.
Аноним 22/11/24 Птн 23:23:16 3327628 650
>>3327531
Честно говоря х.з. почему ты вообще такие вопросы задаешь, если все это проверяется экспериментально.
Аноним 22/11/24 Птн 23:24:21 3327629 651
>>3327599
>private List<int> ScoreList;
>this.ScoreList = scoreList;
Ты по устаревшим книжкам учишься. Так уже давно никто не пишет.
Аноним 22/11/24 Птн 23:29:58 3327630 652
>>3327628
Потому что по одним моим экспериментам - ок. А по другим - не ок. И понять, это я делаю что-то не так в других случаях, или поведение не гарантированно просто экспериментом я не в состоянии. Тут нужно спеки читать, как там CLR со всей этой хуйней работает, как работают эти ебаные домены-хуймены, лоад-контексты короче, дофига всего.
А я просто хочу плагины и беспокоюсь...
Аноним 22/11/24 Птн 23:37:58 3327632 653
>>3327630
>А я просто хочу плагины
Ну сорян, чел. Тебе уже сказали, что плагины - это нихуя не просто, поэтому по любому придется
>"спеки читать, как там CLR со всей этой хуйней работает, как работают эти ебаные домены-хуймены, лоад-контексты короче, дофига всего"

PS. Я как-то работал на проекте с плагинами. Причем там можно было подключать не только шарповые, но js плагины. Но с тех пор уже три года прошло и я благополучно всё это нахрен позабывал, да и касался я того функционала краешком только.
Аноним 23/11/24 Суб 15:46:52 3327781 654
{439A5114-CE46-[...].png 42Кб, 787x260
787x260
{EA437B70-B058-[...].png 29Кб, 746x229
746x229
Хм. С точки зрения анона, как лучше
Аноним 23/11/24 Суб 15:52:56 3327784 655
>>3327781
Никак, для каждой вьюшки стоит создавать своё поле.
Аноним 23/11/24 Суб 15:53:50 3327785 656
>>3327781
И вообще, что за пиздец? Почему у тебя в сервисах модель?
Аноним 23/11/24 Суб 16:01:39 3327789 657
>>3327785
Потому что в моем понимании - модель это какой-нибудь сервис... Еще со времен WPF.

UserListViewModel, моделью принимает UserService. Не одного же пользователя мне в целую вью-модель запихивать.

Я просто не хочу каждую вью-модель руками в DI пихать, и тем-более руками создавать. Затрахаешься потом следить за всей этой хурмой.
Аноним 23/11/24 Суб 16:46:59 3327817 658
carbon (2).png 423Кб, 2402x2262
2402x2262
>>3327789
>UserListViewModel, моделью принимает UserService. Не одного же пользователя мне в целую вью-модель запихивать.
Если планируешь менять свойства пользователя, то именно что для каждого пользователя свою вьюшку. Иначе просто в модели представления страницы получаешь сервис пользователей и из него этих пользователей запрашиваешь. Но это будет именно сервис, а не модель
Я вот например делаю так (пик)
Аноним 23/11/24 Суб 16:49:02 3327818 659
carbon (3).png 469Кб, 2402x2486
2402x2486
>>3327817
Часть кода проебалась
Аноним 23/11/24 Суб 17:21:01 3327842 660
>>3327817
>>3327818
Я бы согласился на самом деле, если бы рядом со мной не сидел сеньер-помидор, который считает что этот ваш DI придумали пидорасы и гомосеки, и все надо через статические классы делать... А через них дохуя чет выходит делать если еще и лоулевельные сущности надо в вью-модели и им еще и модели доставлять...
Аноним 23/11/24 Суб 17:47:32 3327864 661
>>3327789
>Потому что в моем понимании - модель это какой-нибудь сервис
Твоё понимание хуйня. Модель это модель, класс без логики для хранения данных. Есть ViewModel это модель твеого View там пишут логику кнопочек и прочей залупы, туда же прокидывают сервисы.

Смотри что у тебя должно быть в голове.
>я неявно куда-то инжекчу типы
>я написал хуйню
>я удалил хуйню
Аноним 23/11/24 Суб 17:53:23 3327867 662
>>3327864
> Твоё понимание хуйня. Модель это модель, класс без логики для хранения данных.
Модель вполне может содержать логику, как бы не спорили с этим любители вынести всё что можно в сервисы.
Аноним 23/11/24 Суб 18:04:12 3327875 663
>>3327864
> Модель это модель, класс без логики для хранения данных
И каким фигом тогда ты обновишь значение в БД этой модели? Из вью-модели в БД полезешь? Совсем тю-тю? Или у тебя приложение уровня - открыли, закрыли, потеряли все состояние?

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

Варианты с магическими евент-басами, которые мне сообщение во вью-модель пришлют что что-то там обновилось и надо обновить вью-модель - идут нахуй, потому что флоу в крупном приложении превращается в неуправляемое фиг пойми что.
Аноним 23/11/24 Суб 18:09:18 3327883 664
>>3327875
> И каким фигом тогда ты обновишь значение в БД этой модели?
При помощи сервиса конечно.
Обновил свойства в вм -> смапил вм а модель -> в сервисе обновил данные БД.
Аноним 23/11/24 Суб 18:45:44 3327912 665
>>3327781
Первый вариант - вообще не вариант а обоссаное говно. Вью-модель гвоздями прибита к модели и сервис-провайдеру. Работать просто не будет потому что модели магическим образом не появляются из контейнера. Модели появляются из сервисов, репозиториев, но не из DI. Так же, куски контейнера во вью-моделях редко бывают оправданными

Второй ещё более менее реалистично выглядит, но он умалчивает все детали
Аноним 24/11/24 Вск 17:32:25 3328408 666
Наконец-то вкатился в ойти. Завтра первый рабочий день в этой компании. До этого стажировался, а потом уходил из-за учебы. Но сейчас нацелен полностью на работу.
Собес вообще странный был, проходил всего лишь 30 минут. Спросили про join'ы и индексы, stringbuilder, list<T>, hashcode и ооп. Ни асихронщины, ни треды, ни ef core, ни asp.net core, ни паттерны. Хотя вакансия была на мидла, думал будут гонять по всем темам.
Но боюсь, что не справлюсь с изучением кода, ведь там большой 8-летний проект. Сложно ли происходит онбординг?
Аноним 24/11/24 Вск 17:33:24 3328410 667
Есть ли способ создать ReadOnly лист без аллокации нового массива?
Аноним 24/11/24 Вск 18:08:20 3328437 668
Аноним 24/11/24 Вск 18:09:55 3328439 669
>>3328437
Создать из существующего листа. Например, обернуть существующий private лист в readonly для пользователя.
Аноним 24/11/24 Вск 19:48:15 3328460 670
>>3328439
Вернуть интерфейс IReadOnlyCollection
Аноним 24/11/24 Вск 20:18:41 3328473 671
>>3328439
Через AsReadOnly(). В отличии от IReadOnly интерфейса, нельзя будет задаункастить обратно к листу. В прочем, кому не похуй.
Аноним 24/11/24 Вск 20:37:11 3328482 672
>>3328473
Этот метод аллоцирует новый массива под список и копирует его.
Аноним 24/11/24 Вск 21:34:49 3328512 673
>>3328473
>В прочем, кому не похуй.
Я когда проходил тестовое задание, написал геттер, который возвращал ReadOnly словарь через конструктор ReadOnlyDictionary. Мне сделали замечание, мол данный способ аллоцирует лишнюю память. Ну вот мне стало интересно, есть ли способ это сделать без тупого приведения к интерфейсу. Использовать Span'ы?
Аноним 24/11/24 Вск 21:59:53 3328532 674
>>3328512
>Ну вот мне стало интересно, есть ли способ это сделать без тупого приведения к интерфейсу
Приведение единственный способ сделать это без аллокации памяти ну и да. В ответ на такие вопросы надо спрашивать нахуя они пишут на С# если им нужно память экономить, пусть тогда на С++ конструкторы переноса пишут и прочую залупу.

Экономисты сука которые пишут ебаную лапшу чтобы выиграть 1Мб памяти. Помню джун начал выебываться что я написал двойной цикл а это же N² можно было nlogn. Пришлось ему популярно объяснить что моё решение занимает 6 строк кода 2 из которых объявления циклов, а его решение это написать 30 строк кода и все это ради экономии времени на массиве в максимум 100 элементов в красный день.
Потом кстати написал бенчмарки и выяснилось что из-за предварительной сортировки данных NlogN в 4 раза медленнее N² на целевых размерах.

Люди забывают иногда что O нотации имеют ввиду бесконечные наборы данных, а в реальности на мелких наборах иногда даже N³ быстрее хитрых еба алгоритмов. Тут тоже самое, возможно и есть какие-то варианты без приведения к интрфейсу, но в реальности нахуй это никому не надо и является скорее эзотерической фичей которую никто не делал специально.
Аноним 24/11/24 Вск 22:58:15 3328556 675
>>3328408
Расскажешь потом как прошёл первый день.
Аноним 24/11/24 Вск 23:01:39 3328558 676
аноны я правильно понимаю что шарп топ 1 язык (на данный момент) по созданию десктоп приложений? и ещё вопрос вкатунам легко найти работу в рф?
Аноним 24/11/24 Вск 23:09:11 3328566 677
>>3328558
>топ 1 язык (на данный момент) по созданию десктоп приложений?
Да. Правда сами десктоп приложения практически мертвы и мало кому нужны.
>>3328558
>вкатунам легко найти работу в рф?
Нет, сложно.
Аноним 24/11/24 Вск 23:17:54 3328567 678
>>3328408
>Сложно ли происходит онбординг?
Зависит от конторы. Где-то тебе будут попку вытирать все три месяца объясняя каждый пук, а где-то просто бросят в воду без всякого онбординга и прикажут грести фичи на прод, срочно-срочно.
Из советов. Первым делом изучай базу знаний. Получай доступ в конфлюенс, редмайн, джиру, репы и т.д., любую хуйню в которой хранится информация и изучай то, что там есть. У меня были случаи когда я приходил на проект и меня все уверяли, что доков нет и понять как работает система можно только ковыряясь в коде. И через пару часов копания в кофлю, я находил полноценную документацию в которой были описаны все ньюансы и детали. При этом это даже не легаси, проекту было всего года 3, на относительно свежем стеке. Просто постепенно успела вся команда обновиться, а новенькие полагались исключительно на слова тех, кто был до них и им лень было поднять зад и поискать инфу.
Аноним 25/11/24 Пнд 08:55:33 3328655 679
>>3328408
>Наконец-то вкатился в ойти.

Давай пердолиться?
Аноним 25/11/24 Пнд 16:46:42 3329095 680
1619882045558.png 9Кб, 726x346
726x346
Аноним 25/11/24 Пнд 19:29:34 3329228 681
>>3329095
Ну и похуй. В любом случае лучше вернуть интерфейс.
Аноним 25/11/24 Пнд 19:41:37 3329241 682
Аноним 25/11/24 Пнд 19:45:30 3329242 683
>>3329241
Чем аллоцировать новый массив.
Аноним 25/11/24 Пнд 21:38:21 3329301 684
>>3329242
Он тебе только что ткнул, что нихуя там не аллоцируется
Аноним 25/11/24 Пнд 22:30:00 3329336 685
>>3329095
он себя аллоцирует
Аноним 26/11/24 Втр 06:33:09 3329422 686
Аноним 26/11/24 Втр 11:08:31 3329545 687
>>3329422
значит уже не "ничего"
а так несколько миллионов миллионов "ничего" и уже "чего"
Аноним 26/11/24 Втр 12:15:20 3329590 688
Подскажите тупому инженегру стоит ли? В планах работать с api конструкторских программ, типа NXopen и SolidWorks api, по идее у них есть решения для VB, но думаю с# будет поинтереснее?
Аноним 26/11/24 Втр 12:43:21 3329625 689
Аноним 26/11/24 Втр 13:46:04 3329663 690
>>3329590
Я начал изучать VBA еще с CorelDraw и Rhinoceros. Потом перешел на VB, а потом на C#. В какой-то момент я смотрел доки и получал советы на C#, при этом сам писал на VB. Там отличия незначительные, в основном касающиеся синтаксического сахара. Ты даже можешь один проект или либу сделать на VB, и подцепить ее в другой проект на C#.

Интересного в шарпе ничего нет, просто он популярнее.
Аноним 26/11/24 Втр 13:53:35 3329674 691
>>3329663
>VB, а потом на C#
Ну как бы выбор для тебя очевиден. Просто как думаю знания c# будет как то по солиднее выглядеть в резюме
Аноним 26/11/24 Втр 14:36:02 3329712 692
>>3329674
Если ты захочешь устроиться в шарашкину контору, то можешь выпендриваться знаниями солидного языка. В остальных случаях от тебя ожидают результат, а не способ. Мне ИТТ мозги проели насмешками над бейсиком, но какой толк от шарпа, если мне негде его применить в своей области? Это уже потом рино и корел начали поддерживать шарп, а так бы я продолжил сидеть на бейсике.

Ты должен идти по наименьшему сопротивлению. Если ты вообще нулевой, а твое твое приложение больше дружит с VB и есть куча примеров, на которых можно учиться, то лучше учить VB. Зная VB, перейти на C# — дело одной недели. Синтаксис это не самое страшное, он тебе не поможет. Для каждого приложения придется учить свой api. Зная как писать для одного приложения, ты обосрешься в другом. C# в Unity это не обычный шарп, там своя атмосфера. Тоже самое с C++, в связке с UnrealEngine он вообще другой.

Поэтому не парься, учи базу на любом языке, потом постепенно сам поймешь куда двигаться.
Аноним 26/11/24 Втр 15:35:05 3329772 693
>>3329712
>куда двигаться.

К коммунизму, разумеется
Аноним 26/11/24 Втр 17:24:04 3329866 694
Не могу понять, как работает мульти таргетинг на NET 8? Допустим я создают библиотеку NET 8, потом делаю разные варианты класса с одним именем и развожу их макросами ANDROID, WINDOWS и т.д., в результирующей сборке будут все варианты и пользователь библиотеки будет линковать только один этот файл?
Аноним 26/11/24 Втр 18:16:38 3329902 695
>>3329772
Скоро нюки полетят, и двигаться придётся к ближайшим складкам местности.
Аноним 26/11/24 Втр 19:53:46 3329978 696
>>3329866
Чего?

А не проще один интерфейс реализовать для разных платформ?
Аноним 26/11/24 Втр 20:28:59 3330002 697
Скоро 5.5 лет как успешно работаю в IT. 4k евро чистыми доход. Считаю, что мало. Хотя удалось поработать на именитого заказчика, сейчас застрял с CRMкой. Заебал монолит, но мои микросервисы никому не нужны. Не уверен точно, как развиваться. Буду искать заказчиков тысяч на 6.
Аноним 27/11/24 Срд 02:11:44 3330137 698
Аноним 27/11/24 Срд 02:20:44 3330139 699
>>3330002
Как найдёшь мне свистни, тоже охота.
Аноним 27/11/24 Срд 06:13:37 3330171 700
>>3330002
Таких зарплат больше не будет. Пакистанец берёт 2000 и не ебёт мозги микросервисами.

Я поэтому из европы свалил, они там оптимизировались знатно
Аноним 27/11/24 Срд 09:22:14 3330238 701
>>3330002
Таблетки шиз, или сразу нахуй в /b где таким ебанькам самое место.
Аноним 27/11/24 Срд 09:54:35 3330251 702
>>3330137
В проекте можно выбирать какие платформы поддерживает сборка, в зависимости от них по макросам будет разруливаться что откуда брать.
Аноним 27/11/24 Срд 12:05:29 3330355 703
>>3330171
>Я поэтому из европы свалил
+15
Аноним 27/11/24 Срд 23:52:36 3330835 704
>>3330171
>Таких зарплат больше не будет.
Уже нахожу варианты на +-5.
У меня маленький налог, своя недвига, я не в дорогой/налоговой Германии/Франции/Англии. Так что меня не передемпингуешь.

Но серьёзно, в каком направлении развиваться? Мышинное обучение?
Аноним 28/11/24 Чтв 00:49:05 3330858 705
Ну что же я почитал трэд, скачал несколько книг и теперь я буду конкурентом на рынке труда. Вы этого хотели сами, даже подсунули мне книги, так что дело за самым малым. Я если честно, то меня смердит от себя, потому что мне нечем заняться и я теперь буду читать в своем законном отпуске все то, что сейчас скачал. Так то я обычный служащий, который в свое конторе размещает информацию на корпоративном сайте, поскольку другого человека на эту должность при такой низкой зарплате найти крайне сложно, но меня обрыгана все устраивает. С вам было весело, особенно мне ценны разговоры про какую-то DI, видимо штука серьезная. Не поминайте лихом, братцы кролики.
Аноним 28/11/24 Чтв 03:19:58 3330869 706
Котята, я человек немолодой и прошу меня послушать. Я имею высшее техническое образование в информационной сфере, но по специальности мне работать не пришлось, потому что после университета я отправился в государственную контору работать сам не знаю кем в информационный отдел, где мы по большей части пили горькую водку и устанавливали операционные системы, сопровождали программный комплекс, в котором ведется учет обратившихся граждан. Если кратко, то теперь я бросил пить, и внезапно появилось уйма свободного времени. Я решил изучать языки программирования, а поскольку в университете изучали кресты, то взгляд мой упал на шарпы. Теперь к делу. Я написал консольное приложение, которое поместил в планировщик задач и приложение теперь выполняется каждый день, что значительно упростило жизнь одного сотрудника. Приложение скачивает файл формата JSON с сервера, потом разбирает его в объект Net, после необходимые значения записывает в файл форма Excel, формируется шапка в таблице и оформляется красивое отображение таблицы, потом получившийся файл отправляется на FTP организации в нужный каталог, далее отправляется сообщение в телеграмм в группу о том, что файл успешно сформирован. Можно грабить караваны. Еще создана возможность менять настройки приложения и отключать некоторые функции, такие как отправка сообщения в телеграмм или отправка файла на FTP. Реализована такая возможность путем внесения правок в XML файл. А это все к чему написал? С такими навыками можно рассчитывать на какую-либо позицию в отрасли? Можно ли мне бежать на собеседования? Если нет, то, в каком направлении мне двигаться дальше? Прошу ответов на мои вопросы, тебя анон. Я все сказал.
Аноним 28/11/24 Чтв 06:43:40 3330880 707
С#мем2.jpg 193Кб, 820x781
820x781
>>3218883 (OP)
Сап шарписты.

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

Начал изучать с 2019 года, прошёл несколько курсов и прочитал много книг, создал около десятка маленьких игр, одну выпустил в стор.

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

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

Думаю освоить java или python. Работаю не в айти сфере, программирую, для хобби.
Аноним 28/11/24 Чтв 07:04:13 3330884 708
>>3330880
>Вопрос такой, как определить, что я уже владею языком и можно переходить к изучения следующего?

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

>Никогда не работал на дядю, коммерческие приложения не создавал.

и не надо тебе этого, проходи мимо.

> python. Работаю не в айти сфере, программирую, для хобби.

Вот этой пластмассовой хуйнёй и займись, в дотнет не лезь. Чувствуй себя настоящим программистом на пейфоне.
Аноним 28/11/24 Чтв 07:14:22 3330887 709
>>3330869

Ну, по сути прикольный у тебя проект, если такое написал и нравится - учи базу, обязательно работу найдёшь, но не сразу
Аноним 28/11/24 Чтв 09:48:53 3330933 710
>>3330884
>Пожалуйста, проходи мимо, изучай что-нибудь для дебилов
>и не надо тебе этого, проходи мимо.
Наверное я сам решу проходить мне или нет.

>типо пейфона
Это что-то на эльфийском?

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

Что я ожидал.

>Да, достаточно, но можно освоить то-то и то...

>Нет, этого недостаточно, потому что...

А вот фразы
>Вот этой пластмассовой хуйнёй...

Никак не способствуют в понимании ответа на поставленный мною вопрос.
Аноним 28/11/24 Чтв 20:24:37 3331422 711
>>3330933
>Наверное я сам решу проходить мне или нет.
Нет, за тебя будут решать такие люди как я, которые будут тебя собеседовать. Тебе дотнет не нужен, ты очень тупой
Аноним 28/11/24 Чтв 21:33:49 3331455 712
>>3330880
> Вопрос такой, как определить, что я уже владею языком и можно переходить к изучения следующего?
Ок. Вот тебе список вопросов.
Без гугла и GPT ответь на них.

1. В чем отличия Task от Thread?
2. Как сделать возможным использование await для собственного класса?
3. Чем будет отличаться вызов Foo(ref someObject) от Foo(someObject)?
4. В чем отличие сборки мусора для объекта реализующего финализатор явно от объекта не реализующего его?
5. В чем отличие:
```
var a = [1,2,3,4,5].Where(x=>x>3);
```
от
```
var a = Array.FindAll([1,2,3,4,5], (x) => x > 3);
```

6. Можно ли делать вот так:
```
Dictionary<string, object> myMap = new()
{
["Key1"] = 1,
["Key2"] = 2,
};

foreach(var it in myMap.Keys)
{
myMap[it.ToString()] = myMap[it];
}

```
7. Как выделить объект на стеке?

8. Что произойдет:
```
Action action = () => {};
for(int i = 0; i < 10; i++){
action += () => Console.WriteLine(i);
}
action();
```
9. Дан код:
```
public static Foo(){

Console.WriteLine("Hello from Foo");

}
```
Как не модифицируя метод Foo сделать так, чтобы при его вызове вывелось "Hello from Bar"?

10. Чему будет равно: byte a = 254 + 255 + 256 + 257 >> 10 | 64; При условии, что в проекте отключена проверка на переполнение?
Аноним 28/11/24 Чтв 22:55:20 3331487 713
>>3331455
2 зачем знать это без гугла? это не каждодневное. большинству это нужно 0 раз в жизни
7 можно с помощью магии сконструировать объект класса на стеке. какой вопрос - такой и ответ.
9 на какой версии дотнета?
10 битовая магия. сишник что ле?
Аноним 28/11/24 Чтв 23:46:48 3331500 714
Да у меня ещё проще есть вопрос. 9/10 сениоров и прочих нанотехлидов валятся.

Чем дженерик отличается от шаблона класса и почему эта разница важна?
Аноним 28/11/24 Чтв 23:55:20 3331508 715
>>3331455
1. Thread - ресурс операционной системы, который позволяет выполнять код параллельно. Task - высокоуровневая абстракция над thread, которая работает с пулом потоков, который создает CLR.
2. Указать в сигнатуре метода ключевое слово async ??
3. В первом случае передастся сама ссылка в метод, во втором - скопируется в метод.
4. При явном объявлении деконструктора можно явно указать, какие объекты нужно уничтожить. Например, из неуправляемой кучи при работе с файловой системой, драйверами и соединениями.
5. Первое - ленивая обработка, вторая делает это сразу при вызове метода.
6. Не, словарь выкинет ошибку, что ты суешь одинаковый объект.
7. stackalloc, но требует включение возможности небезопасного выполнения кода. Или можно использовать span, если работаем с коллекцией.
8. Выведет 9 или 10 раз цифру 10. Привет, замыкание.
9. Наследование?
10. Ну это уже нюхание пердежа. Такое я считать не буду.
Аноним 28/11/24 Чтв 23:57:59 3331509 716
>>3331500
Что такое шаблон класса, лол? Сам выдумал этот термин? Ну немудрено, что все валятся.
Аноним 29/11/24 Птн 02:54:36 3331536 717
>>3331508
>Ну это уже нюхание пердежа. Такое я считать не буду.
Там 80% поста это нюхание пердежа.
Аноним 29/11/24 Птн 05:02:28 3331540 718
>>3331508
я не автор теста, поэтому только часть ибо вычислять код в голове влом
1 Таска НЕ абстракция над thread. Это просто абстракция.
2 реализовать GetAwaiter + INotifyCompletion
4 что делать внутри финализатора это уже дело второе. А первое - что объекты с финализатором не будут скушаны сразу же, а позволят выполнится финализаторам (причем в другом потоке)
7 думаю тут вообще про структуры
9 наследовать статический метод? шарп вам не это. а жаль
Аноним 29/11/24 Птн 06:00:33 3331543 719
>>3331455
Зачем ты челику загадки загадываешь? Он же очевидно ВЫУЧИЛ дотнет не написав на нём ровно нихуя, а теперь хочет ВЫУЧИТЬ что-то следующее?

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

Ебать, неуважение. Сука, блядь, ппоридж вонючий, настроение мне испортил. Пойду в котлин-тред спрошу, что у них с ебалом
Аноним 29/11/24 Птн 07:03:45 3331563 720
Аноним 29/11/24 Птн 07:07:13 3331565 721
>>3331563
даже веганы лучше вас
Аноним 29/11/24 Птн 09:44:29 3331636 722
Дотнет и шарп это кринж, это тупо кринж, подсасывать жадной мегакорпорации, когда есть ебучий опенсорс, я в ахуе
Аноним 29/11/24 Птн 09:57:45 3331649 723
>>3331636
Да, есть ебучий опенсорсный дотнет.
Аноним 29/11/24 Птн 10:12:31 3331661 724
>>3331636
Так без точки и есть опенсорс. Можешь хоть сейчас пойти предложить свои коммиты в репу. Есть даже челы которые так попали к ним на работу.
Но знаешь в чем проблема? Ты слишком тупорылый чтобы выдать туда что-то дельное.
Аноним 29/11/24 Птн 10:22:54 3331670 725
>>3331500
Ну и какой же ответ?

Ты у шарписта спрашиваешь про C++ные темплейты? Очередной интервьюер-долбоёб?

Почитав соседние посты - пиздец тут у местных "невкатунов" чсв.
Аноним 29/11/24 Птн 10:55:34 3331699 726
>>3331670
Нет, он из тех долбоёбов, которые утверждают, что все настоящие программисты обязаны знать C++.
Аноним 29/11/24 Птн 12:45:13 3331810 727
>>3331540
>наследовать статический метод? шарп вам не это. а жаль
Точно. Совсем забыл. Тогда использовать паттерн декоратор тоже не получится?
>2 реализовать GetAwaiter + INotifyCompletion
Ну тут я совсем вопроса не понял. Что это значит?

Алсо хотел уточнить по поводу сборщика мусора. Dispose стоит применять только при работе с idisposable управляемыми данными. Но разработчик может и забыть использовать его. Почему бы не сделать финализатор, где будем вызывать этот dispose, или вовсе переместим всю функцию в финализатор?
Аноним 29/11/24 Птн 13:20:21 3331841 728
>>3331810
>Алсо хотел уточнить по поводу сборщика мусора. Dispose стоит применять только при работе с idisposable управляемыми данными. Но разработчик может и забыть использовать его. Почему бы не сделать финализатор, где будем вызывать этот dispose, или вовсе переместим всю функцию в финализатор?

Потому что разные задачи.

Dispose нужен для "ручного" освобождения ресурсов - хоть x.Dispose(), хоть через using. Логика простая - ты вызываешь Dispose() в основном классе, а дальше он сам освобождает ресурсы, включая неуправляемый или вызов других IDisposable. Финализатор же нужен для освобождения ресурсов во время сборки мусора. А сборщик мусора не гарантирует что объект удалится сразу.
Аноним 29/11/24 Птн 13:43:47 3331851 729
>>3331810
>Почему бы не сделать финализатор, где будем вызывать этот dispose
Тащем-та так и рекомендуется делать. У нас на проекте код даже не сбилдится если ты реализуешь IDisposable не по комбинированному шаблону.
Аноним 29/11/24 Птн 14:26:12 3331883 730
>>3323836
Нет больших русофобов, чем российские эмигранты. Ведь надо же оправдывать в своих глазах эмиграцию
Аноним 29/11/24 Птн 15:41:13 3331936 731
>>3331810
>Тогда использовать паттерн декоратор тоже не получится?
ну вообще в шарпе сделали кое какие интерфейсы для статиков, а также всякие там сорсгенераторы с AOP, но что хочет автор вопроса - хз

>Ну тут я совсем вопроса не понял. Что это значит?
это значит что можно сделать awaitable не только разные там Task/ValueTask
https://devblogs.microsoft.com/pfxteam/await-anything/

сложно сказать зачем это нужно. У меня сделано 2 класса хелпера где оно нужно - потерять контекст синхронизации и найти его
и чтобы продолжение после этого await исполнялось либо без контекста синхронизации, либо с ним.
короче образно
...UI поток
await DetachFromSyncContext()
...тут уже работает пул
await RedirectToUIThread()
...и снова UI поток

>Почему бы не сделать финализатор, где будем вызывать этот dispose
и это будет костыль. потому что весь idisposable паттерн хрень ибо не решает сам по себе проблему "забыл". А вот нечего забывать. поэтому "да здравствуют лайфтаймы"
Аноним 29/11/24 Птн 17:24:47 3332004 732
>>3331936
>сложно сказать зачем это нужно.
Незачем.
>У меня сделано 2 класса хелпера где оно нужно - потерять контекст синхронизации и найти его
На какой хуйне ты пишешь что тебе приходится свои костыли под синхронизацию писать. Не, серьёзно, это зачем?
Аноним 29/11/24 Птн 17:42:01 3332013 733
>>3332004
>На какой хуйне ты пишешь что тебе приходится свои костыли
десктоп же.
и это не костыли для синхронизации. Это альтернативный сахар вместо всяких там DispatcherHelper
Аноним 30/11/24 Суб 00:03:18 3332240 734
>>3325656
Имея бэкграунд разработки на другом языке, тем более ООП, в шарпы ты вкатишься быстро.
Аноним 30/11/24 Суб 08:13:32 3332278 735
>>3331841
>Финализатор же нужен для освобождения ресурсов во время сборки мусора

А можно пример таких ресурсов? Какие ресурсы может потребоваться освобождать когда-то в каком-то потоке?
Аноним 30/11/24 Суб 08:59:15 3332285 736
>>3332278
Извините, я тупой вопрос задал. Отличный пример таких ресурсов - хохлы
Аноним 30/11/24 Суб 09:00:24 3332286 737
Аноним 30/11/24 Суб 09:39:41 3332297 738
>>3332286
Круто, чо. Только когда еще на 9-м поработать можно будет. Тут хоть на 8-й бы пересесть.
Аноним 30/11/24 Суб 11:59:23 3332337 739
>>3332297
не особо нужно. пихают всякую дрянь, а банальные AsyncReaderWriterLock за охулиард лет не дождемся
Аноним 30/11/24 Суб 15:47:30 3332407 740
>>3332278
Да любые. Закрыть файл или компорт
Заебало Аноним 30/11/24 Суб 17:09:43 3332437 741
Устал писать билды для гредла, пытаться исправлять корутины на котлине и бороться с новыми версиями всякой херни для андройда (привет компоуз).
Перекатываюсь в C#, иду на джуновскую вакансию через пол года и в хуй не дую (т.е. нихера не делаю, кроме как фиксить опечатки в коде).

Мнение?
ПЕРЕКАТ Аноним 30/11/24 Суб 17:22:57 3332447 742
Аноним 30/11/24 Суб 19:02:05 3332498 743
>>3332437
сам ты херня. компоуз няшка
с корутинами ты прав - таски на 10 порядков проще хоть и требуют async/await, да и плагина под андроид студи как под идеа нету чтобы стектрейс правильно видеть
с гредлом в точку. ломается на ровном месте и хрен пойми

>Мнение?
ну шарп не такой выразительный как котлин. так что если ты не ремесленник будет тебе немного жопаболь
Аноним 01/12/24 Вск 07:00:52 3332673 744
>>3332498
>ну шарп не такой выразительный как котлин

Что за категория такая, "выразительность"?

Почему её используют только в контексте котлина? Это точно не слово из маркетингового буклетика, которое не означает ничего?
Аноним 20/12/24 Птн 01:27:16 3345309 745
изображение.png 126Кб, 1004x440
1004x440
В Dotnet реально запустить динамически dll без ебаного reflection? AppDomain сдохли в дотнете, выходит альтернатив не осталось? AssemblyLoadContext возвращает Assembly с которым возможна работа только с System.Reflection. Неужели нет альтернатив? ( publish trimming и ебучий reflection плохо совмещаются, не хочу гигабинари плодить)
Аноним 22/12/24 Вск 15:28:00 3347257 746
photo2024-09-17[...].jpg 57Кб, 735x729
735x729
хай двач хелп плиз пользуюсь vs code и захотел попробовать накидать простенький интерфейс с помощью WinForms и столкнулся с проблемой - отсутствие конструктора форм, есть ли какая нибудь альтернатива или возможность прикрутить ее к моей среде разработки?
Аноним 26/01/25 Вск 14:52:39 3372834 747
А.Н.Васильев норм вообще книги для новичков пишет или так себе?
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов