Двач.hk не отвечает.
Вы видите копию треда, сохраненную 10 ноября в 01:34.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C# 9 Preview 6 дотнета тред #57 /csharp/ 3218883 В конец треда | Веб
Запоздалый перекот треда о лучшем языка на планете.

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) (М)
2 3218885
Главное - не кормить залётных джавистов.
3 3291612
Подскажите хорошую книжку для новичка, хочу написать клиент-сервеное приложение, работа с файлами.
4 3295052
>>291612
По сути, в дотнете две книжки, которые стоит прочитать. Там объясняется как вот это вот всё работает.

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

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

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

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

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

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

Вот и два треда они как бы символизируют это.
8 3295131
>>295094
Дотнеткор - это из мира микропенисов, фулстека, крипто копро финтех аи стартапов и поиска работы раз в полгода. Негоже благородным господам нырять в этот чан с дерьмом. Продуктовые компании как сидели на классике, так и продолжают, максимум обновятся до 4.8, но это не точно. Если системе 15+ лет, никто не будет ее переписывать под очередную модную хуйню.
9 3295477
>>295131
Ну как бы да и как бы нет.

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

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

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

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

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

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



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

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



эээ, ты еблан?
12 3295618
>>295552
Просто посмотри вакансии.
13 3297508
>>295552

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


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

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

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

При этом в файл генерации не видит импорты (пик 2). Что я могу делать не так?
15 3298055
>>298039
Отмена, я не импортировал Google.Protobuf
16 3298072
>>218883 (OP)
Как вы храните изображения в бд? Asp.net mvc ef6
Я перевел base64 картинку в byte[] ImageData поле модели. Дальше хз как отобразить во view. У меня будет много изображений, поэтому 1 картинку во вьюбег не получится, тем более что мне надо вместе с определенным контентом картинки добавлять
17 3298100
>>298072
Их не хранят в бд. Хранят ссылки на них. Ссылки, либо путь к файлу, хэш.
18 3298114
>>298100
Так если изображение пользователь загружает.
19 3298273
>>298100

>хэш



охуенный план, надёжный как швейцарские часы
20 3298275
>>298114
Пусть пользователь загружает в любое другое хранилище, а ты в БД ссылки положи.
21 3298279
>>298072

> Дальше хз как отобразить во 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;
}
22 3298284
>>298273
А шо?

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

мимо
23 3298285
>>298284
Или боишься колизий? Очень очень очень маловероятно если хороший хеш
24 3298307
>>298279
Не понял, а как это во вью обработать. Я обычно ивент накладываю на какое-то действие чтобы пользователь вызвал аджаксом действие контроллера
25 3298451
>>298307

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

А всё остальное я бы делегировал коду, который в браузере запускается.
image.png891 Кб, 777x582
26 3298457
>>298284

>Зато дупликаты не нужно хранить.



Пожалуйста, скажи, что ты сначала проверяешь хеши на совпадение, и затем побайтово сравниваешь вероятные дубликаты? Напоминаю, что коллизии либо есть, либо их нет. Третьего не дано.
image.png592 Кб, 570x528
27 3298464
28 3298505
>>298273
Всмысле хэш сумма файла для целостности, чтобы при загрузке файла проверять это, если требуется.
29 3298546
>>298457
>>298464
Нихуя не понял, а в чем доеб?
мимо
30 3298553
>>298546
Боится, что произойдёт событие, вероятность которого 1/2^160.
31 3298743
>>298553
>>298505
>>298546

Идите на хуй, короче, учитесь на своём опыте
17098949140830.png256 Кб, 558x561
32 3299030
>>298743
Я так понял, ты как-то по тупому использовал хеши не по назначению, нихуя не работало и с порванным очком теперь всем рассказываешь, какие они говно без задач?
33 3299353
>>299030
Нет, неправильно понял
34 3300084
.
sage 35 3300111
,
36 3300186
К сожалению шарпистов сейчас как дерьма за баней, анон, даже больше чем питонистов и джаваскриптеров, и гораздо меньше доступных вакансий. Если ты опытный бэкендер, то лучше вкатывайся в хайлоад NodeJS или PHP, с твоим опытом работы (да и без опыта на жс лучше найти работу, чем на сишарпе) тебя рекрутеры с руками оторвут. Плюс не нужно заучивать весь дотнет, Blazor там, прочую дичь, всякий легаси, достаточно выучить язык и актуальный набор технологий (Express/NestJS, Laravel/Symphony и тд), он не такой большой. А ну и мякотка, с ростом санкций против РФ, все меньше и меньше технологий будет доступно для Сишарпа. Если сам язык открытый, то мощные среды разработки, инструменты отладки, дебаггеры и документация будет постепенно блокироваться.

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

Подумай, стоит ли оно того? Лучше вкатывайся в NodeJS, как я сделал. Вакансий гораздо больше, вкат очень лёгкий, work/life баланс лучше, а сложности меньше. И да, совет ньюфагам, не слушайте местных красноглазиков, упорно зазывающих в свою EnterprisePoopShittingDesignatedFactoryClass
37 3300188
>>300186
Че про голанг скажешь?
38 3300189
>>300188
Не работал с ним, мнения по нему нет.
39 3300203
Какие шансы мидлу найти работу на c# на западе?
Есть у кого успешный опыт релокации?
Что там более востребовано бекенд или десктоп?
40 3300291
>>300203
Ноль. Дотнет умирает, это очевидно. Вакансии есть только в нищебродские стартапы, где ты одной рукой правишь разметку, другой настраиваешь пайплайны в ажуре ебаном, ебашишь как проклятый без процессов по системе "да тут на 5 минут переделать ну че ты", через полгода снова ищешь работу, конкуррируя со стадом паджитов. Есть еще немного вакансий в копролегаси на всяких winforms и jquery, но там требуют ворк пермит и знание местного языка, нет пути. Релокацию никто делать не будет. Дотнет - это новый делфи, никому нахуй не нужен.
41 3300335
>>300186

>js


>достаточно выучить язык


Это тот самый язык, где всяких исключений и странного поведения больше чем операторов в самом языке? Нахуй, сам такое говно ешь.
42 3300401
>>300291
Ещё у Сишарпа в российских фирмах есть странный red flag - какая-то часть проектов даже не использует git и SCRUM-Agile разработку. Тупо как в нулевые сайты ебошут. Но это уже в основном легаси или какая-нибудь попильная контора.
43 3300423
>>300401
Такого на любом языке полно.
44 3300433
>>300291
На какой язык тогда переходить, если в приоритете релокация?
45 3300441
>>299353
Ну и что же я неправильно понял?
Мне кажется, всё я правильно понял.
46 3300455
>>300433
На девопс. Мартышки высрали тисячи микросервисов, а теперь прод разваливается на части при малейшем движении.
47 3300527
>>300401

>какая-то часть проектов даже не использует git


Ну это кстати не так уж и страшно. В основном такое осталось там где совсем легаси и сидят деды-пердеды, для которых проще в zip-папочки по датам все паковать. Если гита нет, то поломать их и внедрить его достаточно просто. Но лучше вообще не работать на таких проектах.
Меня гораздо больше напрягает ситуация, что сейчас везде пытаются пропихнуть "модный" Trunk-Based-Development ("ебашь все в мастер" по простому), причем в проектах совсем не предназначенных для такого.
48 3300573
>>300527
Как будто что-то плохое. Сделал свою ветку от мастера, закончил таску, померджил обратно через реквест. Нет никакой путаницы со 100500 веток.
49 3300579
>>300573
Так на мастер во всех нормальных проектах завязана автоматическая сборка проекта. Обновляется мастер - автоматически ребилдится проект. Смерджил ты такой таску прямо в мастер, без тестов, а там какой-то баг, который лишил компанию потенциальных заказчиков.
50 3300580
>>300186

>Подумай, стоит ли оно того? Лучше вкатывайся в NodeJS, как я сделал.



Да, конечно стоит того. А ты пиши на ноде, пиши.
51 3300583
Кем надо быть, чтоб на С# в 2024 кодить?
52 3300584
>>300583
Быть разработчиком на C#.
53 3300587
>>300579
Это только в веб петушении, где комиты сами деплоятся на прод и где шизы соревнуются, у кого быстрее. Там своя ебанутая атмосфера с дежурствами по ночам. В продукте билд сначала долго и нудно тестируется вдоль и поперек, лишь потом попадает к кастомеру.
54 3300659
>>300583
White European male
55 3300840
>>300583

Машиной
image.png48 Кб, 526x454
56 3301769
>>298285
А это хороший хеш или не очень?

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

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

PS. Офф дока по Breaking Changes ущербная, хз как либу портировать
61 3306526
Зачем дотнетчики так наепывают?
https://dusted.codes/how-fast-is-really-aspnet-core
62 3306605
Кто-то пишет на vscode? Или после vs или rider это больно?
63 3306610
>>306526
Да эти микробенчмарки нахуй не сдались.

Судя по статье, дотнет действительно достаточно быстрый, чтобы вообще не париться о производительности при его выборе. Берёшь дотнет - у тебя всё хорошо.
64 3306618
>>306605
После райдера больновато, но привыкаешь быстро.

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

Jet brains гаденькая компания, не заботится об углеродном следе
65 3306773
Почему мс не запретил скачивать вижлу с их сайта?
66 3306781
>>306773
У них хуй который они могут класть на санкционные требования толще чем у жидбрейнсов.
67 3306784
я тут ставил на пару дней КАМмунити версию студии и возник вопрос, а чего со шрифтами стало? какие-то они мыльно-толстые
image.png191 Кб, 1183x774
68 3306789
>>306784
Там целая страница в опциях для настройки шрифтов. Поставь какие нужно и работай. Хоть джетбрейновские.
image.png172 Кб, 1825x617
69 3306790
>>306610

>Судя по статье, дотнет действительно достаточно быстрый, чтобы вообще не париться о производительности при его выборе. Берёшь дотнет - у тебя всё хорошо.



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

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

Еще тесты переехали на азур и неожиданно назание за накрутки обошли всех кроме тех шарп тестов. Они до сих пор с тем позорам висят там. И, кстати, та картинка с главной страницы, это картинка на те буллшит тесты, лол.
70 3306792
>>306790
Чел, да кому не поебать? Тем более на синтетические тесты?
В реальности ты просто говоришь кабану докупить очередной сервак и ебашишь коды дальше.
71 3306795
>>306789
не, я пробовал ставить тот, который в вскод, всё равно рендер шрифтов какой-то другой
да и каждый раз применять изменения и лезть в меню, чтобы посмотреть на шрифт не очень хочется, присмене в опциях он сам не меняется до нажатия "ок", а просто кнопки применить нету
72 3306798
>>306792
Проблема в том, что мой кабан это я.
73 3306953
>>306790
КРАСНЫЙ КОД
КРАСНЫЙ КОД
ОДНИ СИНТЕТИЧЕСКИЕ ТЕСТЫ ОПРОВЕРГАЮТ ДРУГИЕ
74 3306967
>>306953
Зачем защищать барена, если он обосрался? В открытом мире опенсорса на тебя смотрят тысячи глаз, считать всех за дебилов уже не так легко. Пускай учиться, старается, мир кроссплатформы жесток и требователен, ничего научится.

Сами шарпы от этого хуже не стали, так что не треггерись.
75 3307092
>>306798
Ну так еще проще. Берешь и сам себе дополнительный сервак покупаешь.
76 3307112
>>300186
Ты бросил говно на вентилятор, но забыл его включить.

Есть стойкое мнение что будущее за wasi и по ощущением на передке технологии сейчас шарпы и расты. JS с отсутствием нормальной целочисленной математики и кучей подводных камней просто утонет, а вместе с ним потянет ts (или им придется ломать совместимость с js, что они и сделают).
Так что наслаждайся последними деньками круда на жс.
77 3307297
В шарпах есть прогрев как в джаве (компилит в jit на 10к итерациях функции)?
78 3307341
>>307297
Ты про 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
79 3307373
Может кому будет интересно:

https://github.com/dotnet/runtime/tree/main/docs/design/security

>Security design doc for Dictionary<TKey, TValue> and HashSet<T>


>Security design doc for System.HashCode


>Security design doc for System.StringComparer

image.png295 Кб, 1061x935
80 3307409
Мнение?
81 3307412
>>307341
Понял, спб
image.png110 Кб, 980x2321
82 3307446
>>307412
Вот тут ещё есть красивая диаграмма с TC и PGO:
https://github.com/dotnet/runtime/blob/main/docs/design/features/DynamicPgo-InstrumentedTiers.md

>Dynamic PGO: Instrumented Tiers

83 3307800
>>307409
Почему народ не радуется халяве? Или асп.нет там не реализуешь?
84 3307838
>>307297

>В шарпах есть прогрев как в джаве (компилит в jit на 10к итерациях функции)?



а можно как-то пропустить джит-конпеляцию? Можешь как-то удачнее свою мысль выразить?
85 3307843
>>307409
От них массовый отток пользователей идёт, так как богомерзкий джет-брейнс говнит. Идея и райдер очень медленное говно последнее время, жрёт под 7-9 гигабайт памяти на средних проектах.

Надеюсь, ждет-брейнс нахуй схлопнется
86 3307848
>>307409
VS давно по функциональности сравнялась, поэтому продавать райдер, когда есть бесплатная VS - это ну такое себе.

Только богомерзкий джет брейнс мог до такого догадаться?
8b2f3a7b35c038757660d86e6352321ci-84.jpg99 Кб, 1092x419
87 3307909
Не нашел треда по С++, но тут синтаксис не особо отличается. Кто может объяснить, почему переход от левого кода к правому с if-ветвлениями ускоряет программу.

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

Левая прога и правая с 1-им ifом = за 175к тактов.
Правая с 2-мя if-ами = 123к тактов.
с 4-мя = 85к
с 8-мю = 55к
далее скорость заметно не растет.
88 3307984
>>307838
Я из джавы, там по дефолту интерпретатор байткода, но если функция вызывалась ~10К раз срабатывает jit компилятор хотспот (если он есть в вашей опенждк). Этот процесс называют "прогрев джавы".
Я захотел узнать что в шарпах, есть ли прогрев (уже узнал).
image.png71 Кб, 1854x337
89 3307997
>>307909
Смотри ассембленый выход, там на 03 может твориться неочевидные вещи.
https://godbolt.org/
90 3308004
>>307984
Так чё? Есть прогрев?
image.png28 Кб, 240x222
91 3308006
Я заскочил к вам сказать - шарп офигенный
92 3308020
>>308004
Я не видел такого термина в доках, сам момент прогрева и горячего кода есть, но отличается от хотспота. Так что есть, но со сноской.
93 3308021
>>308020
Понял, спс.
94 3308044
>>308006
Жаль, что умирает
Причем быстрее и реальнее, чем пхп
95 3308082
>>307909
Ты бы ещё у 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" независимы и могут выполняться параллельно).

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

В шарпах это выглядит лучше, но хотспод тоже очень хорош. Непрогретая жаба (или без хотспота) - кусок говна.
97 3308096
>>308044
Язык развивается, мс потеет, шарпист доволен, имидж растет
Джава протухла, технологии раз в 15 лет, с мобильных выпинули, доживает на кобол-монолитах последние века.
98 3308110
Так как жетбрейнс начал блочить лицензии, то:
1. Есть ли на современный решарпер взлом?
2. Если нет, то какими плагинами можно его заменить?
99 3308129
>>308110
Он бесплатный теперь. Весь ребус теперь только в том, чтобы суметь его скачать.
100 3308131
>>308110
А, сорян в глаза ебусь. Ты про решарпер, а не райдер. Тогда не знаю.
Leonid.jpg13 Кб, 200x344
101 3308173
>>308129
Я сейчас пользуюсь проплаченным райдером с оффлайн-лицензией и зайбанеными сервера жетбрейнса через хостс на время, но в новых реалиях будет дебилизмом проплачивать лицензию.
Теоретически можно использовать бесплатную комьюнити-версию, но за её использование в коммерческой разработке теоретически анальнику могут устроить пикрил, так как телеметрии там до жопы и стучит она обо всем и, вероятно, де-факто использует код для обучения жетбрейновских сеток.
Поэтому хочу прикрыть жопу и использовать VS2022 на работе, обмазанный плагинами, максимально приближенный по функционалу к райдеру. Ну или хотя бы спиздить решарпер, там всей этой телеметрии не будет так как это просто плагин для студии.

Вообще, мне кажется идея платных IDE умерла так как бесплатные и опенсорсные инструменты достигли паритета с жетбрейновским говном, и они теперь не знают где им приткнуться.
102 3308187
>>308173

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


Как ты себе это представляешь? Ты думаешь однажды тебе придет письмо, что мол "наша IDE тут нам настучала, что вы работаете над коммерческим продуктом ООО Кабаныч-лимитед" - плотите. Так?
Конечно если ты где-нибудь в Европе (особенно в Германии), то может такое и может произойти. Они там ебанутые даже за торренты людей подтягивают. Но по моему в нынешнее время в там вообще нечего делать.

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

НУ и до кучи. Я работаю в санкционном банке. Там разрабам ставят лицензионную VS Enterprise Edition. Я х.з. как они ключи достают, но проблем у них с этим явно нет.
103 3308233
>>308187

>Я работаю в санкционном банке. Там разрабам ставят лицензионную VS Enterprise Edition


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

Таким образом, олигархи между собой союзники, а враг у них - народ, простые люди, так что эти санкции бьют именно по простым людям, и соответственно тактика поведения простого человека должна отличаться от тактики олигарха - его врага. Там где олигархи соблюдают лицензии по любому ((где-то)) получая ключи, там простой человек должен всё пиратить напропалую, потому что играть по правилам своего врага это проигрыш по умолчанию.
104 3308253
>>308173
Ты уже нарушаешь закон, технически нет разницы что ты сделал затычку в host или же поставил китайскую затычку от сильного брата. Лицензии у тебя уже нет.
105 3308276
>>308253
Не, пока она есть (на сайте всё на месте), просто я иду под радарами жетбрейнса и они не могут её отобрать ввиду того что их система не отметила меня как хитреца. Т.е. де-факто EULA уже нарушен за нарушения экспортного контроля, но технически лицензия ещё есть. Притянуть за это в суд будет крайне сложно. Но проплачивать дальше, я конечно, не стану (лицензия у меня до осени 2025 года), так что буду потихоньку мигрировать на что-нибудь другое, начну с Вебшторма->VSCode и попробую снова студию (ушёл с неё в 2020 году потому что она была невыносимым лагающим говном с перегруженным интерфейсом).
106 3308291
Радость еще шарпов в том что есть выбор, джависты сами себе подносрали и сделали жб монополистами, когда я еще писал на жабе, эклипс шел вровень и даже можно было в нетбинсе сидеть.

Пусть юристы поясняют, с уходом из рынка они вообще могут тебе что-то предъявить? От чьего лица это тогда будет?
107 3308330
>>308291
В теории, если нет юрлица, то претензии в нашей юрисдикции подать некому. Но на пиратский софт вполне может залупнуться какая-нибудь проверка из силовичковых, и плевать им будет на здравый смысл - палки важней.
108 3308344
>>308291

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


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

А вот за коммьюнити версию, что тебе могут предъявить?
109 3308390
>>308344
Да, ты прав. Ну тогда нафига вообще привыкать к этим IDE.
Ломает ровно так же когда вскод настроил и потом сел на что-то другое. Тоже везде что-то не то, что-то не там.
110 3308606
>>308390

>Ну тогда нафига вообще привыкать к этим IDE.


>Ломает ровно так же когда вскод настроил и потом сел на что-то другое. Тоже везде что-то не то, что-то не там.


Ну так это проблема не только IDE, а в принципе любого рабочего софта как такового. Причем не только при смене одного на другое, а часто просто при переходе на новую версию. Как минимум раз в 2...3 года приходится ебаться с настройками и крыть хуями разрабов/дизайнеров которые решили в очередной раз переделать UI.
Так что тут только смириться.
111 3308612
Ребят, появилась возможность оценить Авалонию.

Она охуенная
image.png36 Кб, 1145x194
112 3308742
Бля, пиздец, как бесит, что в таком синтаксисе они нейминг поменяли.

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

Про то, что "настрой сам" хрюкать не надо. Я не настраиваю свой единственно правильньный код стайл чтобы не ебать мозги себе и окружающим, а если надо помандеть - хожу в двач
113 3308880
>>308742
Так это не поля, лол. Это аргументы конструктора.
А вообще, я отказался такого вот синтаксиса, т.к. на старый код ложится херово, плюс - нельзя нормальную валидацию в конструкторе провести.
114 3308939
>>308742

>Ну, блядь, это же поле


Это не поле, это свойство.
sage 115 3308949
>>308742

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


И главное зачем, неужели нет подсветки свойств класса и локальных переменных?
116 3308967
>>308880

>Так это не поля, лол. Это аргументы конструктора.



Вот ты видишь их как аргументы конструктора. А я вижу вызов метода с полями класса. Противоречивое это дело. Поэтому и именование по пизде пошло
image.png71 Кб, 279x180
117 3308968
>>308939

>свойство



А хули оно с маленькой буквы тогда?
118 3308971
>>308968
Сорян, я тупой. Не понял сразу, что это класс с primary consructor. Я про record подумал, там это действительно свойства.
119 3308980
>>308949

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



Просто, повелось так. Чтобы по не писать this, наверное
120 3308995
>>308980
А если поле protected?
_protected
__protected
#protected

Это все напоминает пережиток венгерской нотации си апи
m_pszMyString
pszMyString
121 3309040
>>308995
Не нужно, все поля должны быть приватными
122 3309058
>>309040
Кроме тех, которые должны быть доступны в дочерних классах.
123 3309262
Ребят, а как вы относитесь к ЭЛЕГАНТНОМУ коду?
124 3309557
Подскажите в какую сторону смотреть для реализации конкурентного доступа к некоему аппаратному ресурсу в многозадачных фреймворках типа MVVM, как правильно организовать доступ что бы не было одновременных обращений к ресурсу?
125 3309658
>>309557
Попробуй по слову multiplexer поискать.

Вообще, есть ощущение, что на каждый подобный случай кастомное решение пишется в зависимости от требований
126 3309682
>>309058
Нет, дочерних классов не должно быть, наследование запрещено.
127 3309684
>>309682
Я разрешил наследование, так что не проблема.
128 3309714
>>309557
Очереди
129 3309749
>>309682
Давай, поясняй, как ты до такого дошёл.

Послушаем крутого программиста хоть.
130 3309964
Метод вида Foo(ISet<Yoba> yobas), ожидающий коллекцию уникальных элементов, можно ведь наебать имплементацией интерфейса, где дублирование таки будет?
131 3310127
>>309714
В очереди предопределённая логика, нужно что бы была возможность отказаться от запроса если уже кто-то занял устройство.

>>309658
Мультиплексор вроде просто пакует все в один канал (по сути та же очередь), чего-то никаких программных паттернов не гуглится.
132 3310211
>>310127
Очередь - это очередь. Туда кладутся заявки, дальше какой-то один воркер выбирает заявки, делает что там надо и вызывает колбек или резолвит таску.
133 3310294
Как супер простым языком объяснить зачем используется ключевое слово yield и когда без него не обойтись?
134 3310425
>>310294
Незачем. Это что-то типа async/await когда еще не было тасок. Я когда-то писал на yield свой BackgroundWorker для приложения на винформсах, сейчас бы в коде вместо yield return было бы await.
135 3310773
>>310294

Ну простым

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

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

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

foreach(var i in list)
{
yeild return i++;
}
136 3310778
>>310773

>var list = new List<int>();


Тут должно быть другое имя, что бы не вводит в заблуждения с foreach.
137 3310828
>>310773
Это не проще, это сложнее. Поэтому yield никто не использует, как не используют dynamic и прочую хуиту уровня свитч со стрелками.
138 3310935
Снова въебал собес
Уже не помню какой по счету
139 3310941
>>310828

> Поэтому yield никто не использует,



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

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



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

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



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

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



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

Дополнительно можно нажатием специальной кнопки ( token.ThrowIfCancellationRequested() ) делать так чтобы пейджер взрывался ( выброс исключения ) и задача завершалась.
143 3310969
>>310947
Да хуль пилить, в итоге это по моей вине, надо было учить и зубрить
Дали заревьюить код, общие вопросы по дотнету, тут я хорошо, потом пошло SQL (который я знаю хуево, ну типа если я работаю условно в pgAdmin я могу там несложные join сделать, апдейтнуть че, селектнуть, но это бывает по работе ну ОЧЕНЬ редко, в основном все через EF, и то, ничего сложного, профильтровать через .Where или селекнуть через .Select
Поэтому EF тоже завалил, там практическое задание мол запили такой-то запрос через linq
Потом пара вопросов по ASP.NET, про middleware и фильтры, тоже не ебу, в работе не использовал никогда, про конвеер обработки запросов спросили
А, еще юнит тесты, на работе MSUnit когда весь мир на xUnit или nUnit, но не суть
Там был класс, наследуемый от интерфейса, и метод, который вызывает другой метод
Я на своей работе всегда мокал через интерфейс (потому что старшие коллеги так делали, а как и почему я спросить не удосужился, думал мол так принято наверное), а мне интервьюер говорит надо тестировать саму реализацию, в общем там тоже обсер
Просили опыта в Cloud, но тут совсем ноль, я даже не знаю с чего начать изучать это, так и сказал опыта в этом нет
Ну и про JS спросили, про промисы, тоже обосрамс, полтора года на писал на жабаскрипте (да даже когда и писал то проекты были максимально убогие и примитивные, и каких то особых знаний по промисам были не нужны, тупо хуяришь через await .then
Не знаю в общем, работу надо бы уже менять, но времени и главное сил учить новое абсолютно нет после целого дня работы
144 3310970
>>310956
Понял, спасибо, этими токенами и можно ответить если на собесе спросят типа "Как завершать Task принудительно?"?
А зачем token.ThrowIfCancellationRequested() если есть Cancel()?
145 3310973
>>310970

>А зачем


Лень расписывать, вот тут понятно и просто
https://metanit.com/sharp/tutorial/12.5.php
146 3310985
>>310969
Без обид, но звучит все как будто у тебя совсем жидкая база и работаешь ты просто как кодомакака, как тебе когда-то показали и просто хуяришь по шаблону. Без попыток разобраться глубже как собственно работает все то, чем ты пользуешься.
Вот например

>по ASP.NET, про middleware и фильтры, тоже не ебу, в работе не использовал никогда, про конвеер обработки запросов спросили


Ну это ж блин, совсем база асп-а.

>класс, наследуемый от интерфейса


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

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


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

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

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


С таким подходом ты еще долго будешь собесы въебывать.
Есть такое правило, если собираешься менять работу, то на текущую кладешь самый большой болт из возможных. Делаешь ровно столько, чтобы продержаться и не вылететь нужный период без сильных подозрений, а все остальное высвободившееся рабочее время тратишь на подготовку к новой. Все, что ты описал, можно пофиксить за пару недель, вдумчивым чтением хотя бы того же метанита, это не рокет саенс, чтобы на это дохуя времени тратить пришлось.
147 3310999
>>310969
Ебать пиздец, я дотнет трогал только в виде хэлоувордов, linq ковырял пару раз, пару лет назад и мне кажется что прошел бы собес лучше чем ты. Ты просто базовую базу не знаешь, тебя наверное за волчару приняли
Мимо не шарпист
148 3311044
>>310941

>чем тебе паттерн мальчик не угодил?


Нечитабельное говно. У обычных ифов четкая структура: заголовок с условием и тело с логикой. Легко читается на ревью. В свитче со стрелочками у тебя ебаное месиво из символов уезжает за экран. Надо напрягаться, чтобы распарсить этот мусор, особенно с дженериками. В свое время перл хуесосили за write-only код, но выросло поколение смузи и придумало новый перл.
149 3311045
>>310969
Не откликайся на фулстек вакансии, там говно и пидорасы. Подавайся конкретно на бэкенд.
150 3311122
>>311044

>Нечитабельное говно.



А ты случайно не из тех разаботчиков, с объективным и единственно правильным чувством прекрасного?
151 3311124
>>310969

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



Ты тестировал мок интерфейса то есть? НАХУЯ?
152 3311129
Ребят, а как вы относитесь к ЭЛЕГАНТНОМУ коду?
153 3311139
Не отвечайте этому, он хочет устроить очередной жабосрач.
>>309262
>>311129
154 3311151
>>310985
>>310999
>>311124
Я давно осознал что я лоуайкью, но уже поздно
Буду дальше пытаться вызубрить, потом все равно забуду потому что в работе не использую
155 3311157
>>304106
Другой вопрос, почему в авалонии окна не синглтоны блеать.
156 3311158
>>311124
Толсто. Он всё правильно сказал, мок через интерфейсы и только через них тестируется.
157 3311163
>>310828
У тебя вместо мозга насрано. Илды годная фича которая на асинках ещё дальше в космос улетела, ты её не используешь только потому что тебя как макаку не допускают до чего-то серьёзного, по факту ты конечно ими косвенно пользуешься через библиотеки даже не подозревая об этом.
158 3311204
>>311139

> устроить очередной жабосрач.



Зачем? Ну жаба и жаба. На ней вроде тоже можно писать ЭЛЕГАНТНЫЕ решения
159 3311301
>>311158
Сам понял, что написал? Либо я не понял
160 3311307
>>311301
Надо тестировать библиотеку, которая генерирует моки.
tumblrmh1xgqproo1rjnysso1500.jpg117 Кб, 400x750
161 3311414
берешься за задачу которую откладывал из-за страха что она объемная и запутанная
@
начинаешь делать
@
на удивление обнаруживаешь что уже почти закончил, не такая уж и сложная

берешься за якобы "легкую" задачу
@
ебешься с ней неделю
162 3311430
Ну вот как раз ситуация, где надо бы подумать (не то чтобы это изменит что либо, просто надо начать переставать быть макакой)

Есть сервис
Есть 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

Скажите, это нормально? Есть ли способ сделать это лучше/более элегантно? Или так принято/правильно?
162 3311430
Ну вот как раз ситуация, где надо бы подумать (не то чтобы это изменит что либо, просто надо начать переставать быть макакой)

Есть сервис
Есть 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

Скажите, это нормально? Есть ли способ сделать это лучше/более элегантно? Или так принято/правильно?
163 3311458
>>311430

>нормально



Да, нормально. У тебя возникнет соблазн использовать автомаппер. Но он сделает только хуже.
164 3311459
>>311430
Попробуй поиграйся required init свойствами, чтобы не конпелировалось если забыл
165 3311460
>>311307
Надо генерировать библиотеки, которые тестируют моки
166 3311465
>>311430

>[SomeAttribute]


>public string EstimatedVolume {get; set;}


>В модели


>public EstimatedVolume EstimatedVolume {get; set;}


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

>public string EstimatedVolumeName {get; set;}



>public EstimatedVolumeModel EstimatedVolume {get; set;}

167 3311468
>>311458

>Но он сделает только хуже


Был соблазн до того как решили вынести некоторые поля в отдельные таблицы
Автомаппер тут недолюбливают? Сам почти никогда его не юзал, он чем то плох?
168 3311511
>>311468

>он чем то плох?


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

Опять же пример, что ты вверху описал с EstimatedVolume по сути не маппинг, а обогащение модели. А это немного другое.
169 3311631
>>311468

>Автомаппер тут недолюбливают? Сам почти никогда его не юзал, он чем то плох?



Если коротко, Automapper добавляют, в проект, он первые 2 недели работает, а потом с ним гей-секс ежедневный.

https://www.reddit.com/r/dotnet/comments/13fb1q3/is_automapper_the_most_hated_library/
170 3311686
>>311430
То есть для 15 полей ты делаешь 15 запросов для каждой модели? Твой сервис умрет нахуй на проде.
171 3311709
>>311631
Почему бы просто не использовать dapper? Быстрая легковесная штука без лишних наворотов.
172 3311748
>>309749
Наследование - это как goto. Усложняет код и отладку не давая особых плюсов. Вызывает проблемы с непонятным поведением, когда переопределяются методы, тем более в шарпе, где методы бывают виртуальные/не-виртуальные. Чтобы понять, что конкретно происходит, приходится долго копаться.

При этом наследование легко заменяется композицией.
173 3311835
>>311686
А как тогда...
174 3311839
>>311157

>синглтоны


Глобальное состояние - зло.
image.png202 Кб, 357x500
175 3311843
>>311139
Этот глупенький еще не догадался, где на самом деле у него враг.
memi-klev-club-65nq-p-memi-muzhik-gladit-litso-2-min.jpg67 Кб, 1920x1404
176 3311862
>>311709
Даппер тут не при чём. Хороший, предсказуемый инструмент. Правда, авторы немного намудрили с генерацией IL кода на лету, но в целом норм библиотека.

Автомаппер же это совсем другое дело. Там можно ебашить в обе стороны, вдоль, поперёк и между слоями приложения. Можно маппить замапленное. Синтаксис автомаппера полон по тьюрингу, на нём можно в целом даже UI фреймворк написать.
177 3311866
>>311748

> Наследование


> Композиция



Под каждое место свой инструмент, разве нет?
178 3311867
>>311157
Нахуй им быть синглтонами?
179 3311870
>>311843

>где на самом деле у него враг



мой враг - это выразительный и ЭЛЕГАНТНЫЙ код
180 3311884
>>311870
Я честно не понимаю о чем ты, это какой-то твой локальным мем. Наверное нашел какую-то олдфажную херню и носится с ней, аки ребенок. Поверь, жаба - это не та платфома, где нужно начинать легаси войну
181 3311896
>>311866
Нет. Композиция - это серебряная пуля и золотой молоток.
182 3311927
>>311896
Для композиции нужен сахар, а вообще это тоже самое что двигать кровати в борделе. Проблема не решается никак, но добавляешь еще бойлерплейт.

Иногда наследование нужно, не всегда, но лучше когда оно есть, чем его нет (только что делал свою иерархию ошибок в либе, а теперь иди посмотри как трахаются гоферы, оборачивая хрень в мудень)
183 3312013
>>309682
>>311748
>>311896
Хуже нет когда вот такие шизы до позиций лидов дорастают и начинают транслировать свое "единственно верное мнение" на всю команду.
184 3312091
>>312013
То ли дело, когда джуны насмотрятся инфоциган и тащат в проект самые новые модные технологии. Индусы из микрософта жидко пукнули новой фичей уровня linq - срочно добавляем в проект. Потом джун прыгает на новое место через полгода, а проект остается с кучей говна.
image.png3,8 Мб, 1920x1080
185 3312105
Я пришел к вам чтобы напомнить, что сишарп офигенный!
186 3312871
>>312105
Все по фактам.
187 3313062
>>312091

>Индусы из микрософта жидко пукнули новой фичей уровня linq



Что с линком не так? Он же настолько охуенен, что на него даже сверху забесплатно нашлёпнули sql-подобный синтаксис
188 3313104
>>313062
Говно без задач. Когда появляется задача обработать какой-то массив, это проще и понятнее сделать в цикле, а не сочинять длинную соплю из Select и Where.
189 3313160
>>312091

>жидко пукнули новой фичей уровня linq


>>313104

>обработать какой-то массив, это проще и понятнее сделать в цикле



Джавист совсем не палится. И 15-летний LINQ у него свежая фича и циклы ему удобнее, ну-ну.
image.png59 Кб, 221x228
190 3313201
>>313104
В пару строк пожонглировать данными.
Не-е-е, будем писать простыню на две страницы. И хер бы это писать, так потом сидеть вдуплять полчаса что там происходит с этими данными.

Ладно гоферу некуда деваться, но у тебя же есть котлин с мап/редюс/фильтром
191 3313637
>>313104

>это проще и понятнее сделать в цикле



Мамка твоя говно без задач. Linq очень хороший и продуманный. Даже не могу придумать, чего там добавить или убрать.
192 3313647
>>312013
Не, хуже когда лид старый предпенс застрявший в кондовом совковом ООП начала нулевых и не выкупающий новые фичи сишарпа связанные ФП, начиная даже с асинков. Который ебёт тебе мозги кривыми архитектурами практиковавшимися во времена второго сишарпа а аргументы против просто игнорит.
193 3313718
>>313647

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

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

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

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

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

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

Я в противоположном состоянии от восторга!
195 3313726
>>313723
Вот ты говоришь два процента. А те, кто придумал концепции "ВСЁ ЕСТЬ X", не имели вообще никакой статистики, им оставалось только наугад реализовывать идеи и потом смотреть, что приживётся.
196 3313730
>>313726
Пизжу, наверное. не два, а 0,00002 процента. По сути кроме строк и энамов не припомню ключей нигде.

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

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

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

Но да, сишарп охуенен по сравнению с прочим говном.
изображение.png169 Кб, 1175x408
197 3313742
>>313723
ну мне, для того чтобы динамически строить древовидную таблицу с кучей свойств и колонок с разными типами.
Структура и свойства задаются через БД, в итоге одну и ту же апишку можно переиспользовать в нескольких проектах, которые при этом могут кардинально отличаться.
Написано в спешке перед дедлайном, вот ща подумываю запилить свой орм для удобства
Было б ещё охуенно запилить ui для редактирования структуры таблицы
image.png2 Кб, 147x57
198 3313827
>>313742
Это что за хуйня? Сервис главных эскьюэлов?
199 3313853
>>313201
Пара строк, потом еще пара строк и еще хотфикс, снова и снова. Через полгода никто уже не понимает, что происходит в этом ебаном месиве. Брейкпоинты поставить нельзя, отладка силой мысли.
Всегда забавляют джуны, которые открывают для себе ФП и начинают совать его во все дыры.
200 3313854
>>313827
Он просто не знает слово repository.
201 3313860
>>313854
ISqlMainRepositoryDAOPersistenceService
202 3313871
>>313860
Ты намешал разные слои. Service - это нейминг из слоя бузинес логики, в DAL принято называть Repository. Суть везде одна - какой-то интерфейс что-то делает важное.
203 3313878
>>313853
Ты сейчас реально пытаешься сопоставить простыню кода с циклами, где обязательно кто-то сделает по другому или обосреться, с короткими калбэками вида
map { it * 2 }. filter { it > 0 }

Какого ты жабер пытаешься обмануть? И что с твоим отладчиком в синхроном коде?
14904105723570.png513 Кб, 657x516
204 3313879
>>313860
В джаве не было алиасинга импортов (а может до сих пор нет) и там было просто соревнование кто придумает длиннее имена.
205 3313907
>>313878
Джунишка, и сколько же раз будет выполняться реаллокация памяти в твоем коротком смузи коде?
206 3313973
>>313907

> Джунишка


> реаллокация



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

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

Зато не стрельнет с выходом за пределы массива и вчитываться не надо. Если ты предпочитаешь писать производительный код - ебись с ним сам, не втягивай в это окружающих
207 3314024
>>313718
C точки зрения малолетнего долбоёба - безусловно.
208 3314148
>>313907
Столько же, сколько ты в циклах сделаешь руками.
209 3314157
>>313907
Хороший холоп, переживает за железку барена. Но чаще так бывает что такие алгоритмы имеют оптимизацию, а твоя дрочка руками, чаще, нет.

И опять же, мы говорим что важнее читабельность кода. Читать размазанную портянку бойлерплейта на пару экранов куда сложнее.
210 3314204
>>313907

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


Столько же сколько в твоей лапше на циклах.
Ну и для развития можешь почитать про последние оптимизации в 9-м дотнете, там много чего подтянули и по памяти и по производительности конкретно в linq-е
211 3314658
>>314148
>>314157
>>314204
Караван охуительных историй от вкатунов. Вы же литкод решаете, за о-большое шарите, должны понимать, как работает монада энумерабл и как выделяется память в листе. Походу, литкод - это про гоферов, в дотнете публика попроще.
bg,f8f8f8-flat,750x,075,f-pad,750x1000,f8f8f8.jpg96 Кб, 750x1000
212 3314729
>>314658

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



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

Guid решает все эти проблемы потому что вероятность его совпадения около 0.
214 3314782
>>311748

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


Нет. Это абсолютно разные вещи.

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

Желание использовать композицию скрывает в себе желание сделать множественое наследование классов, что запрещено, а множественое наследование это хуево.
215 3314798
>>314775
Ты ебанутый.
216 3314861
>>314775

>Тем что использование int в качестве ИД это дурной тон.



Ты не отличаешь автоинкремент от хеша, а хеш от гуида?
images.jpeg7 Кб, 226x223
217 3315065
Я пришел к вам чтобы напомнить, что сишарп офигенный!
images.jpeg7 Кб, 226x223
218 3315066
Я пришел к вам чтобы напомнить, что сишарп офигенный!
219 3315118
>>314658
Ну и где твой бог теперь?
220 3315190
>>315118
Слушай. Зайдай спискам В в начале размер по длине А. Это должно улучшить работу Add. В основе List лежит массив и там есть этап копирования и аллокации нового если размер инициализации превышен.
По идее тогда все три будут работать одинаково потому что ВНЕЗАПНО генерируется примерно одинаковый IL
221 3315192
>>315118
>>315190
Ещё укажи базовую линию и включи отображение rate чтобы тот пидор хуев соснул.
222 3315197
Вот кстати. Sweep line это по идее n log n алгоритм, работает в три раза хуже лобового решения.
223 3315240
Есть ли смысл какой-то изучать первым и вкатываться в шарп, а не джаву?
Т.е. я вроде и слышал много хорошего и сахарного о шарпе, как тут все удобно, просто берут джаву и делают лучше, и язык развивается, и чуть ли там не в микросервисы пытается, соревнуясь по скорости c node.js и т.п.
Но на деле тред видно полуживой, вакансий меньше, чем на джаве, но есть, з/п тоже меньше в среднем, качество и количество обучающих источников (книги, гайды какие-то, комьюнити с видосами и ответами) наверняка хуже и меньше, еще и на шинде копошиться. Легаси кода чуть меньше и новых проектов наверное чуть больше, хоть небольшое преимущество то есть, или те же яйца?
Ну я джава в целом популярнее и везде, а тут якобы 90% работы - это фулстэк разработка, и всё, остальное какие-нибудь 2.5 страховые
Еще и обидно будут обзывать сисярпом
Ну на юнити хотел побаловаться игрушки попробовать поделать, но думаю при желании и с джавы выучить юнити не составить труда
И в целом слышал, что лучше учить джаву, а работать удобнее всего на шарпе.
В общем, буду рад ваше адекватное мнение и советы
224 3315244
>>315118
Джун, ты не очень умный. Из-за таких, как ты, игры на юнити стали мемом.
При создании collectionB сразу указывай размер массива. Сейчас ты три раза написал одно и то же и что-то пытаешься доказать.
И это я молчу про inplace алгоритмы, с linq это в принципе невозможно.
225 3315247
>>315240
Ты сам ответил на свой вопрос. По дотнету мало вакансий и там один сраный фулстек в нищебродских галерах. Гейдев на юнити - это вообще дно дна, будешь ебашить по 12 часов за зп меньше курьера.
image.png9 Кб, 775x96
226 3315261
>>315244

>При создании collectionB сразу указывай размер массива.


Ну будет размер одинаковый во всех трех случаях. Это один хрен подтверждает вот эти тезисы: >>314204 >>314148
227 3315266
>>315261
Теперь запусти бенчмарк для миллиона операций.
Алсо одинаковое Allocated говорит о том, что они добавили костыли и вместо честного IEnumerable через yield передают какую-то свою монаду, где сохраняют размер исходной коллекции, а потом в ToList чекают типы и выделяют память один раз. Или же индусы подпилили компилятор, чтобы он распознавал такие паттерны и в искусственных манятестах выдавал одинаковый результат, от них всего можно ожидать. В реальном коде результат будет немного другой.
228 3315340
>>315247
>>315240
Тебе пиздят. Джава мёртвый язык, на нем не пишут ничего нового. Дотнет же основой стек разработки ВСЕХ финтехов России, Азии и Запада, а финтех это куча денег.

Учи шарпы и иди работать в банк и будет тебе зп 300к в месяц и премии каждый год.
229 3315349
>>315266
Нет чел блять не поэтому. Потому что нет там никаких блять монад, все эти методы развернутся в ОДИНАКОВЫЙ код при сборке. В данном случае весь 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 ещё лучше
IMG20241104103528113.jpg170 Кб, 1267x570
230 3315415
231 3315440
>>315415
На ДЕСЯТИ МИЛЛИОНАХ разница между лупом и linq 18807,14 наносекуд это 0,01880714 миллисекунд. Восемнадцать тысячных тысячных секунды.
При этом есть огромное подозрение, исходя из предыдущих прогонов, что задержка связана с тем что в конце происходит копирование и мы просто не попадаем в кэши процессора или что-то такое.

В целом очевидно что linq пизже. Он при материализации оптимально использует память.
232 3315480
>>315349

>Как ты кстати предлагаешь строить цепочки запросов без linq?


SQL пишут на SQL, долбоеб ты из епама. Как ты собираешься потом оптимизировать свою соплю на живой базе? Волшебный linq сам индексы пропишет и денормализацию сделает? Пиздец нахуй.
233 3315491
>>315480

>Как ты собираешься потом оптимизировать свою соплю на живой базе?


А оно надо? У тебя есть достоверные данные что оптимизированый запрос ускорит выполнение?

>SQL пишут на SQL, долбоеб ты из епама


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

Как в твоём манямире без ORM ты контролируешь свои 200 классов и их мапинги на таблицы и типы колонок и пропертей, связи между таблицами их отображение в классах.
У меня это делает EF, он просто тупо отвалится если не сможет сопоставить БД с иерархией классов.
234 3315499
>>315491

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


>с помощью stringbulider строить строку запроса


>свои 200 классов


Матерь божья! Скажи, что ты троллишь.
235 3315503
>>315499
Давай кстати вернёмся обратно к теме.

Че там с linq и лупом? Вон оказывается linq быстрее работает.
236 3315710
>>315480

>Волшебный linq сам индексы пропишет и денормализацию сделает?


Ты совсем ебобо? Ты у себя что там, для каждого запроса перекидываешь данные между таблицами и индексы создаешь?
Какими хреном ты вообще умудрился смешать область запросов к БД и область её проектирования?
237 3315714
Очередной нелюбитель наследования, оптимизатор на спичках, любитель развесистой лапши на циклах и просто долбоеб, считающего свое мнение единственно верным, попущен.
Ра-адостно.
238 3315723
>>315714
Так чё решили в итоге? Надо всё делать через LINQ?
239 3315751
>>315240
Джавая это обрезанные шарпы.
Зная шарпы с легкостью вкатишься в джаву, наоборот нет.
240 3315764
>>315751

>Джавая это обрезанные шарпы.


Шурпуш спокуху оформи
241 3315772
>>315340
Еще, говорят, дотнет популярен в госдепе США. Это может говорить о многом.

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

Меня как потребителя привлекает, что инструмент развивается, а не кусок говна, в который с годами добавляются базовые потребности типа пакетного менджера или дженериков. Джава тоже раз 15 лет техи завозят и в основном живет на капитале кода и сторонних потребителей.
242 3315784
>>315723
Надо делать нормально вот че. Если нормально это циклы написать, то нужно циклы делать, если просто преобразовать набор данных то делай на linq.

Если посмотреть на бенчмарки окажется что нужно не убирать linq, а правильно использовать List делая инициализацию размера для уменьшения аллокации памяти.
243 3315786
>>315480
Даже в жабе принято писать слой DAO.
Ты из сервиса получаешь готовые данные, а откуда они пришли (из бд, из файла, из сети, из памяти для мок-тестов) это не важно. И если надо будет оптимизировать и написать SQL руками - ты напишешь их через имплементацию этого сервиса. гребанные вкатуны даже базу не знают
244 3315788
>>315503
Я обосрался, простите меня, я дурачок выращенный на ютуб вскриках, а там идеально все только в джаве, а все что в ней нет - ужасное, кривое зло, незаслуживающие джавы.

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

Ниразу не видел чтобы кто-то пользовался даже продвинутыми фишками самого EF, не то что реально начинал писать доступ к данным через другие штуки.
246 3315799
>>315499
Че шучу клоун. Тебе с фронта пришло 5 фильтров и три сортировки. Ты это через сырой sql как будешь делать?

Или необходимо изменить типы и провести миграции.
247 3315814
>>315795
Пишу на нескольких языках и на чистом SQL ибо затрах вникать в каждый велосипед, поэтому DAO даже вне кровавого энтерпрайза норм.
Да и банально когда клепаешь прототип, то DAO с объектами-затычками это просто удобно.

Понятно что это долго и муторно писать, но это потом окупается в отладке.
248 3315816
>>315795
Дай угадаю: ты фулстек в финтех стартапе, который никогда не выйдет в релиз и там можно писать что угодно. EF сам по себе кал говна и годится только побырику нахуячить чето там, а потом выбросить при первых же проблемах с перфомансом. Ведь SQL это сложна нипанятна индексы нормализация ой все, некогда думать надо высрать 100 микросервисов до пятницы. Неудивительно, почему хайперфоманс пишется на голанге, а дотнет тонет в аутстаф галерах.
249 3315818
>>315799
На твоей галере когда-нибудь слышали про хранимые процедуры?
250 3315825
>>218883 (OP)
Коллеги, подскажите плз вопрос по камере HikVision iDS-TCM203-A. Не могу разобраться, как с неё вытянуть номер автомобиля

https://stackoverflow.com/questions/79141957/how-to-capture-car-license-plate-by-using-hikvision-isapi-ids-tcm203-a-camera
251 3315842
>>315818
Слышали. А еще слышали насколько больно будут пиздить тех кто попробует их протаскивать в проект.
252 3315846
>>315816

>Ведь SQL это сложна нипанятна индексы нормализация ой все


Чувачок, я теба удивлю, но при использовании ORM тебе точно так же придется и индексы прописывать и БД проектировать с учетом нормализации/денормализации.
253 3315847
>>315818

>2к24


>хранимки


За такие штуки в приличных местах ебучку ломают
254 3315907
А вы заметили что все эти клованы не отвечают на вопросы если поняли что по штанам жидкое течет?
255 3315945
>>315907
Ну а как ещё сохранить лицо? Гордость не позволяет написать "Сорри, был не прав", вот и сливаются по-тихому.
256 3316090
>>315340

>Дотнет же основой стек разработки ВСЕХ финтехов России, Азии и Запада


Прохладная история. Пруфы на это будут?
Вакансий меньше, джава всегд на слуху, на нем написан финтех и никто его переписывать не будет. Из крупных контор у нас, я видел лишь озон, который использует шарп.
>>315751
Тоже прохлада какая-то, в чем это заключается и аргументируется? Скорее, наоборот, засахаренная и допиленная джава
257 3316113
>>315846
Чувачок, если орм - это даппер, вопросов нет. Вопросы возникают, когда фулстек дебилы используют EF и тянут соплю из Queryable аж до самого контроллера. В джаве хибернейт считается моветоном, в гошке такой хуйни вообще нет, только в дотнете продолжают жрать говно из жопы индуса. Поэтому дотнет в хайлоаде и не используют.
258 3316125
>>316090
Читаешь тред:

>в новом дотнете будет новая фичанейм, в джаве такого нет


>смотри вот тест, работает на 10 наносекунд быстрее, чем в го


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


Открываешь вакансии:

>пук пук требуется фулстек на аутстаф в ип аванесян


>требования: знание вуе реакт ангуляр, опыт администрирования кластера кафки от 5 лет


>молодой динамично развивающийся коллектив


>испытательный срок 6 месяцев


>оплата ветками

джаваГосподинВкатилсяВТред.png1,8 Мб, 1920x1280
259 3316147

>Вакансий меньше


Ты инженер или гуманитарий? Как ты воспринимаешь разницу между 5000 и 3000 вакансий? Ты реально думаешь что сможешь пройти 1000 собеседований? Или ты сможешь сменить 1000 рабочих мест за 10 лет? А сопоставимы ли вакансии джавы к шарпу 1 к 1? Одинаковый у них "вес" и качество? А хочешь ли ты писать на джаве и ее зоопарке легаси инфраструктуры? А сколько соискателей на место? Не забываем что джава это инфоцыганский язык как и питон.

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

И что мы получаем, я могу рассмотреть нормально на шарпах примерно 600 вакансий, когда из джавы мне доступно 0!
260 3316148
>>316090

>Тоже прохлада какая-то, в чем это заключается и аргументируется? Скорее, наоборот, засахаренная и допиленная джава


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

Простота языковых конструкций чаще приводит к бойлерплейту, тот же мап/редюс, я реально недавно видел простыню го кода, где на 2-3 страницы кода можно было сократить до нескольких десяток строк, попутно выкинув еще err != nil. То есть, человеку на простые действия пришлось писать портянка кода, попутно дергаясь на err != nil, а мне пришлось читать эту портянку кода, чтобы понять что по сути это манипулирование списками данных.
261 3316149
>>315842
>>315847
Неудивительно, в епаме одни долбоебы. Другие там не задерживаются.
262 3316150
>>316147
Покажи эти 600 вакансий.
263 3316151
>>316113

>В джаве хибернейт считается моветоном


Кто считает, твой очередной протык с ютуба? А индустрия в курсе вашего выбора?
264 3316152
>>316113

>Поэтому дотнет в хайлоаде и не используют.


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

В джава мире проще развести кабана на железку, чем нанимать спецов умеющих писать код, в итоге мы получаем инфраструктуру которая медленнее чем пхп. Представь мое лицо, когда из каждого носка мне утверждали о том, что джава быстра и вообще супер пупер, но на тестовой машине она отсасывала пхп эквиваленту и жрала аки слон? Тебя передернет, но переписывание с джавы на пхп, мы выиграли в свое время. (хотя ладно, джава-манямир устойчив, помню когда вышел го, на конференциях хуесосили GC го, мол насколько у нас в джаве лучше и тут же параллельно начали в попыхах пилить аналог, ну что за лицемерные мрази? Секта, не иначе.)
265 3316153
>>316147
Давай язык фактов, ты инженегр или гуманитарий? Пока что они рассуждения.

>джава это инфоцыганский язык как и питон


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

>конкурируя со специалистами индии


Какими блять индусами, ты шиз что ли блять очередной? Ты жопой в Барнауле, но всем сердцем в Сан-Франциско и тебя душат аутсорсеры из стран 3 мира?
>>316148

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


Так я вкатун, об этом и речь, я же сказал. Типо шарп весь такой прикольный, допиленный, сахарный по сравнению с джавой, только вот он нахуй никому не нужен в основном, кроме фулстэка, такого количества работы, ажиотажа и годной литры нет. Как язык в вакууме он то возможно и лучше, не мне судить.
266 3316154
>>316125
Не то что срыг 10 летней давности или самописный EE, и все это на модной молодёжной восьмой джаве, с дикой текучкой кадров, доходило до такого, что пытались засунуть бизнес логику в PL/SQL, потому что было невозможно сопровождать этот размазанный код. Именно в джаве в противовес спаггети-коду - появился термин блинный-код. Когда слой за слоем накладываются дырявые абстракции, аки блины. Но зумеры не знают этот тырпрайз ад, для них жаба это мобильная разработка, а не кровавый.

А вообще надо быть совсем тупым чтобы брать плохую вакансию на шарпах и сопоставлять с хорошей на джаве, это же не /b чтобы черрипикинг прокатил.
267 3316155
>>316150
Какая разница если в противовес релевантных вакансий на джаве 0.
268 3316162
>>316153

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



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

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

Когда с языком беда, начинают вылазить евангелисты.
269 3316169
>>316154
Покажи хорошую вакансию для бэкенда на шарпе. Ой, ее же нет, есть только фулстек на аутстафе.
270 3316171
Посоветуйте хороший годный дизайнер форм, чтобы формошлёпить мышкой. Как заебало уже XML вручную набирать!
271 3316181
>>316169
Шарпы есть в бигтехе. Какие проблемы?

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

Ты общаешься с бывшим джавистом, я знаю всю вашу кухню и реальном могу тебя закрытыми глазами обоссать. Если ты сидишь на вкусном рабочем месте, отскребая легаси черкаши, то сиди и попукивай, на твой век жабы хватит. Но жабе стало плохеть еще 15 лет назад, а котлин на андроиде ее просто добил. Я тебе говорю, котлин нанес вреда больше чем шарпы. Не важно сколько написано кода, важно сколько кода пишут сейчас, шарпы скорее конкурируют с го за свежие умы, чем противопоставляют себя с протухшей жабой.
272 3316183
>>316181
Ах да, вы еще сами завендерлочились об IDE. Я вас с этим просто поздравляю.
273 3316252
Так проход в linq не прошёл, он оказался ± 18 миллионых секунды медленнее. Мы ещё попутно узнали что создать 10 миллинов объектов из других 10 миллинов и вставить в другой список занимает на шарпе 580мс.

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

Теперь уже просто отрицание реальности через мифические говноваканси. Ну не работайте там, идите работать в банки и другой финтех.
274 3316262
>>316252

>писать сырой SQL и выгружать в память пол БД


Ты совсем дебил? Как раз на sql ты будешь доставать только то, что надо. Это EF радостно сделает тебе N+1. Руками мапить ничего не надо, есть даппер.
275 3316283
>>316262

>Это EF радостно сделает тебе N+1


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

Можно вообще явно разделеные запросы писать.
276 3316301
>>316283
Нет никаких объектов, эта хуйня осталась в 1995 году. Есть кортежи данных из бд. Если надо получить (id, username) из бд, эти данные придут из индекса, а что будет в твоей модели? Будешь загружать все поля?
277 3316857
>>316090

>Прохладная история. Пруфы на это будут?



Ну только я пруфануть могу своим анусом. Сам в финтехе работаю.
Ничего лучше дотнете для не го не придумали ещё
278 3316880
>>316857
Ну так ты назови, что за финтех и какой ВЕСЬ финтех сидит на дотнете?
279 3316898
>>315349

>Главная мощь linq это когда ты запросы в БД бесшовно переводишь в запросы в памяти



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

Я это к чему. Бесшовность хороша только в теории. На практике же если швов нет, то их приходится руками делать.
280 3316902
>>315847
А что не так с хранимками?
281 3316908
>>316902
Исходную проблему они не решают, зато создают новые.
282 3316909
>>316113

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



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

Это же тебе не обоссаная спринг-джава, где у разработчиков одни мозги на десятерых
283 3316915
>>316880
Райф, сбербанк, втб, тинькофф
284 3316916
>>316880

>ВЕСЬ


Банки в основном. Из того, в чём я работал - страхование и форекс. Там тоже на дотнете все. Российский финтех сидит на дотнете не потому что это хорошо, а потому что исторически так сложилось
285 3316920
>>316908
А какая исходная проблема?
286 3317033
>>316902
Перенос бизнес логики на уровень БД.
287 3317098
Есть фреймворк 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.
Можно ли как-то понять, какие именно записи используются в запросе?
288 3317113
>>316902
Все с ними так, если разработчик не дурак. Почему-то вкатунцы думают, что в хранимках обязательно надо писать бизнес логику. Видимо, какой-то хуй на ютубе им рассказал. На самом деле, хранимка - это sql запрос, написанный в одном месте. Открыл, посмотрел, чекнул план, погонял на живой базе и все это в консоли без запуска приложения. Надо сделать чуть другой запрос - просто скопировал файл, старая хранимка работает по-прежнему, ничего не ломается и не надо дежурить по ночам. Когда ты тянешь соплю из Queryable, логика запроса размазывается по всему коду, потом хуй разберешься, что и как работает. В фулстеке это не проблема, там код пишется с нуля, через полгода выбрасывается нахуй, но продукт живет десятилетиями.
Кароч, суть та же, что и в вопросе оркестрация vs хореография: логика написана в одном месте или размазана тонким слоем говна по всей системе.
289 3317116
>>317098
Ты занимаешься хуйней. SQL надо писать на SQL, а не на сишарпе. Как ты потом собираешься оптимизировать свой запрос? Каждый раз перекомпилировать и запускать приложение?
snimok-ekrana-2023-08-15-v-11.14.07.jpg540 Кб, 1200x900
290 3317143
>>317033

> Перенос бизнес логики на уровень БД.



перенос джоинов в оперативную память.
291 3317155
>>317098

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


Для этого нужно замокать контексты и кормить EF объектами из памяти.
292 3317182
>>317155

>Для этого нужно замокать контексты и кормить EF объектами из памяти.



Мышление уровня "я ничего кроме EF не видел, значит все используют EF". Ты читал оригинальный пост?
293 3317211
>>317116
>>317143
>>317182
Да иди ка ты нахуй
294 3317293
>>317155
У меня не EF
>>317116
Занимаюсь потому что так уже решили до меня. Смысл в том, что мы будем переходить на другую бд, и это будет сделать проще с такой прослойкой. Есть еще причины, но не суть.

Еще раз вкратце: есть IQueriable, который я могу завернуть в прокси класс, есть Linq запрос, который берет из него данные. Вопрос: есть ли возможность понять, какие объекты из IQueriable попадут результат запроса?
295 3317606
>>317293

> Query содержит expression tree, на проде оно транслируется в sql.



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

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



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

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



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

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



Чел, не обижайся, но я с третьего раза распарсил, что ты пытался донести. Ты долбоёб, иди на хуй пиши на пейфоне, пожалуйста
296 3317616
>>317293

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


Проще чем скачать с нугета адаптер? Или вы не такие как все и это какая-то богом забытая хуйня?
Под EF кажется даже для документарных БД есть адаптеры.

>>317293

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


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

Смысл всей этой штуки чтобы тебя не волновало что там вернётся и откуда эти данные вообще берутся. Причём EF и linq позволяют использовать доступ к данным на любом слое приложения сохраняя изоляцию от уровня хранения.
297 3317617
>>317606

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


А что кстати?
298 3317624
>>317617
Пытаешься закрывать тестами уже существующий, сложный код, который намертво приколочен гвоздями к конкретной БД.

С какой БД переползать то хоть решили на какую? Дай догадаюсь, с оракла или sql-server на постгре?
299 3317643
>>317616

>Проще чем скачать с нугета адаптер? Или вы не такие как все и это какая-то богом забытая хуйня?


>Под EF кажется даже для документарных БД есть адаптеры.


Как-то переползал с MSSQL на постгрес на EF. Вообще лепота.
- Заменил адаптер
- Снес миграции
- Перегенерил миграции.
Из трудностей легких неудобств, была только правка конфигурации одного сиквенса и все.
300 3317689
>>317624
Я другой чел. И вообще я прочел три раза ветку, но не понял что он хочет и как с такой кашей в голове он пишет коды.
301 3317761
>>317606

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


Я работать дом, говорить люди мало, уга-буга.

>Раньше надо было думать


Раньше я с другим проектом работал.

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


Я хочу странного, это сложно объяснить
>>317616
У меня вот это вместо 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) выдал то же самое.
Сохранять для тестов всю таблицу слишком неэффективно, там сотни тысяч записей, и тесты тогда будут несколько дней выполняться.

>>317624

>sql-server на постгре


Угадал
301 3317761
>>317606

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


Я работать дом, говорить люди мало, уга-буга.

>Раньше надо было думать


Раньше я с другим проектом работал.

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


Я хочу странного, это сложно объяснить
>>317616
У меня вот это вместо 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) выдал то же самое.
Сохранять для тестов всю таблицу слишком неэффективно, там сотни тысяч записей, и тесты тогда будут несколько дней выполняться.

>>317624

>sql-server на постгре


Угадал
302 3317772
>>307409
Не рекомендую. Последние версии (24-го года) стали тормозным говнищем. Через 30 минут активной работы выскакивает увеломляшка что ему не хватает оперативки и он начинает дико тормозить. Приходится его перезапускать.
Специально для теста ставил версию 22-го года. На ней такого дерьма с непомерным жором памяти нет. Но, т.к. в ней нет поддержки 8-го дотнета, то пришлось-таки перейти на VS. Она сейчас заметно бодрее работает, даже с решарпером.
303 3317880
>>317761

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


Уволься.

Серьёзно тебе говорю. Ты описываешь контору профнепригодных долбачей которые делают хуйню.
304 3317889
>>317880
Такие запросы скорее исключение, большинство выполняются за разумное время. Такие монстры появляются из-за того, что весь проект - это миграция с делфи, где бизнес логика лежала в хранимках в sql
305 3317912
>>317889
Дело не в запросах. Просто ты тратишь время на бесполезные скилы в говнопроекте. Это как работать в Яндекс, потратил время, но все твои навыки бесполезные.
306 3317930
>>317912
Скилл разгребать легаси не бесполезный. И это не говнопроект, а здоровенная система, связанная с государством и финансами. И весь проект этим легаси не ограничивается, тут еще много всего более современного
307 3317971
>>317930

>Скилл разгребать легаси не бесполезный.


Если ты из одного кала в другой перегоняешь, то да - бесполезный.
Вот если бы ты к хуям снес хранимки, оптимизировал структуру БД и перенес всю бизнеслогику на уровень приложения, еще и без потери производительности ну или хотя бы с добавлением возможности горизонтального масштабирования - вот это были бы хорошие строчки в резюме. А "Я все время писал юнит-тесты для хранимок старого легаси сервиса" - такое себе.
308 3317978
>>317971
Так я как раз и переношу хранимки из бд в приложение
309 3318039
>>317912

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



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

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

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

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

И так далее, я могу ещё долго продолжать, но иди на хуй
310 3318061
5 дней до приказа.
311 3318170
>>318039
Так не старый код разгребает, а просто говно из тележки в тележку кидает.

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

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

ИТ катиться в какой-то Пиздец из-за отмирания разделения труда. Один разработчик пишет бэк, фронт, БД, верстает разметку, пишет деплой и админит сервера и ещё до кучи бегает на совещания к заказчикам и рабочим группам.
312 3318175
>>318170

>Один разработчик пишет бэк, фронт, БД, верстает разметку, пишет деплой и админит сервера и ещё до кучи бегает на совещания к заказчикам и рабочим группам.


Ты забыл еще сам пишет ТЗ и сам тестирует ("А чо вы не можете проверить то, что сами написали")
313 3318207
>>317971

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


>хотя бы


Проиграл в голос с этого мамкиного архитекта. Масштабирования для бд не существует. Есть шардирование, но для этого надо переколбасить всю систему нахуй.
314 3318211
>>318170
Это только на аутстаф галерах так. В норм конторах фронт, бэк, девопс и сре - это 4 разных человека, а не один задроченый фулстек.
315 3318217
>>318207
Причём тут БД пчел. Он про работу бэка, горизонтально это и есть шардировать БД и развернуть 10 инстансов бека.
316 3318222
>>318217
10 инстансов бэка разворачивать бессмысленно, если они все ходят в одну бд. Тормозит всегда база, а не код. Чтобы запилить шардирование в легаси и починить все баги, надо потратить безумное количество человекочасов.
317 3318457
>>317971

> Вот если бы ты к хуям снес хранимки, оптимизировал структуру БД и перенес всю бизнеслогику на уровень приложения



То что? Научился бы делать то, чего не просили? Ебать, ты, конечно, лупень
318 3318459
>>318170

> Если бы его работа была в том чтобы...



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

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



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

> убрать linq2db,



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

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



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

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



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

Наверное, сами разберутся, да? Или ты умнее?
319 3318474
>>318457
>>318459
Ну не просили - пусть не делает. Навыки переноса говна из одной БД в другоу очень ценятся на рынке труда (нет).
{0C97726C-BD12-4F47-B586-3F6C40711066}.png92 Кб, 1179x450
320 3318482
Допустим вы видите подобный код.
Ваши действия?
1731007164919.jpg80 Кб, 500x333
321 3318483
>>318482

> Ваши действия?


Пойду посру.
322 3318486
>>318483
Ну... Я просто думал, вызывает ли это негатив с первого взгляда или нет.
Короче - беру в работу и переписываю легаси на такой вот подход.
323 3318487
>>318486
Ты че ебнутый? Это же говнокод ебаный под названием сервис локатор. Большей помойки нельзя придумать.
324 3318489
>>318487
Я знаю. Потому и не хотел делать. Особенно не хотел, потому что если забуду обработчик, а определю что сущность это может - я только в рантайме это поймаю.
Но тут такое дело. Что мой главный - хочет чтобы со своей стороны - он пользовался одним интерфейсом.
Придумал класс с офигенным названием MainClass.
И через этот MainClass - 99% операций это круд-операции.
А меня посадил этот класс поддерживать.
И типа было ок, пока было 2 сущности. Но сейчас их дофига. И методы в духе CreateUser, CreateGroup, CreateJopa, CreateZalupa лично меня уже триггерят.
И если бы логики доменной за ними не было - я бы просто сделал обобщенный метод и радовался. Но там же нет. Создается юзер - надо создать ему какие-то там штуки по умолчанию, создать еще дофига всего. Создается еще что-то надо событие куда-то кинуть и т.д.

Я хотел MainClass превратить в просто диспечеризатор к обработчикам. Оставив этот CRUD-интерфейс и тот 1% методов которые не CRUD.
Потому что ну тяжело. Класс уже 60к строчек. Даже partial не спасает. Потому что в голове тупо это не держится все.
325 3318529
>>318482
Это самописный DI и что? Очевидно, код был написан до того, как в дотнете появился стандартный DI.
326 3318532
>>318489

>Я хотел MainClass превратить в просто диспечеризатор к обработчикам.


Чтобы что? Сейчас весь код написан в одном месте. Ты его распидорасишь на 9000 файлов, потом сам охуеешь в этом разбираться.
Джун, запомни два фундаментальных правила в разработке:
1. Чем проще - тем надежнее.
2. Работает - не трогай.
Ты пытаешься нарушить оба просто потому что.
327 3318555
>>318532

> Чтобы что?


> Потому что ну тяжело. Класс уже 60к строчек


Не тупи, чел.

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

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

Жабун, мне нужно твое лицо в треде.
329 3318581
>>318555
У тебя пека для учебы и студия зависает на таком большом файле, что ли? Ок, разнесешь ты разные методы по разным файлам, и что? Проебешь кучу времени, сломаешь кучу тестов, по факту ничего не изменится, ты просто две недели будешь сидеть и страдать хуйней. Новую апишку разноси по разным файлам, старую не трогай.
330 3318648
>>318474

>очень ценятся на рынке труда


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

Честно, после твоих слов, тебя бы отфильтровали как неадеквата
331 3318671
>>318482

Как используется? Выглядит как будто кто-то не понимает назначение DI. Само отвалится через пол года, если будешь по нормальному писать
d0654324dca9884b4d336621abacd77d.jpg53 Кб, 735x587
332 3318682
>>318489

> Класс уже 60к строчек.



60 тысяч строк? Может 6000? Если честно, 600 - уже очень много на мой взгляд. Давай больше подробностей, обожаю читать про говнокод
333 3318684
>>318532

>Джун, запомни...



Чел правильно говорит, а ты долбоёб знатный. Ещё и джуном его тыкаешь. Стыдно должно быть
334 3318686
>>318532

>Джун, запомни...



Чел правильно говорит, а ты долбоёб знатный. Ещё и джуном его тыкаешь. Стыдно должно быть
335 3318687
>>318489

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



Чтобы что? Вы нищие, на интерфейсах экономите?
336 3318695
>>318581
Чел, складывать код в один файл нельзя. Не советуй говна
337 3318766
>>318489

>хочет чтобы со своей стороны - он пользовался одним интерфейсом


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

Вот открыл я класс, а там 1 зависимость, а на самом деле их 15 просто с помощью твоего чудо говна теперь нихуя не понятно. Также нет аннотации от интелсенс и нормальных ссылок по коду об использовании методов разных сервисов.
338 3318816
>>318482
Скривлю ебало. Как по мне, внедрение IServiceProvider приемлимо только в инфраструкторном коде.
У нас оно есть только в одном месте - в своей обёртке над Confluent.Kafka. Там для каждого прочитанного из Кафки сообщения помощью сервис-провайдера создаётся свой Scope, а затем из него выдергивается хендлер для этого сообщения и вызывается.
339 3318866
>>318816

> в своей обёртке над Confluent.Kafka. Там для каждого прочитанного из Кафки сообщения помощью сервис-провайдера создаётся свой Scope, а затем из него выдергивается хендлер для этого сообщения и вызывается.


Кек, такая же фигня. Ты случайно не с моего проекта?
340 3318870
>>318866
Стандартная практика, я у себя рэббит так же обрабатываю
341 3318890
>>318870
Это стандартная практика вообще везде. Аспнет похожим образом поднимает контроллеры.
342 3319035
>>318682

> Давай больше подробностей


Мой главный главарь - сишник бывший.
И в его практике так сложилось, что ему было удобно один .c файл иметь, в котором все что ему надо было. Писал много под МК, всякие роутеры, вайфай-модули, вот это вот все. По сути - становление, как я понял - происходило, когда у тебя считай вся программа в одном-двух файлах.
Мы пилили код. Я сразу предложил, давай я короче накидаю... Он сразу в отказную, дескать все эти пидорасы-пиндосы-жопотрахи, кто пишут ваши книжки - в руках байты не держали, вот короче, будет интерфейс, я его дергаю из своей части. По необходимости - расширяем.
Вокруг этого интерфейса - он свой статичный класс еще навертел, потому что он крайне не любит DI, и создает экземпляр в Main и хуярит в этот статичный класс. Половина его обертки выглядит как:

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

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

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

>>318766
Ты не понял. Там жирный интерфейс:
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 захуйнуть и радоваться. Все в одном файле. Ток как-бы ну хз. По мне - хуйня какая-то. Лучше будет отдельный понятный класс/нтерфейс. Который можно просто создать, и отдельно еще и протестить.
342 3319035
>>318682

> Давай больше подробностей


Мой главный главарь - сишник бывший.
И в его практике так сложилось, что ему было удобно один .c файл иметь, в котором все что ему надо было. Писал много под МК, всякие роутеры, вайфай-модули, вот это вот все. По сути - становление, как я понял - происходило, когда у тебя считай вся программа в одном-двух файлах.
Мы пилили код. Я сразу предложил, давай я короче накидаю... Он сразу в отказную, дескать все эти пидорасы-пиндосы-жопотрахи, кто пишут ваши книжки - в руках байты не держали, вот короче, будет интерфейс, я его дергаю из своей части. По необходимости - расширяем.
Вокруг этого интерфейса - он свой статичный класс еще навертел, потому что он крайне не любит DI, и создает экземпляр в Main и хуярит в этот статичный класс. Половина его обертки выглядит как:

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

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

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

>>318766
Ты не понял. Там жирный интерфейс:
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 захуйнуть и радоваться. Все в одном файле. Ток как-бы ну хз. По мне - хуйня какая-то. Лучше будет отдельный понятный класс/нтерфейс. Который можно просто создать, и отдельно еще и протестить.
343 3319054
>>319035
Ты так и не ответил, чем это плохо. Ты хочешь, чтобы было 100500 интерфейсов по 5 методов в каждом. Он хочет один интерфейс со 100500 методов. Почему прав ты, а не он? Что значит лучше/хуже навигация?
344 3319064
>>319035

>Мой главный главарь - сишник бывший.


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


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

>все эти пидорасы-пиндосы-жопотрахи, кто пишут ваши книжки - в руках байты не держали


М-да. Хуже нет, чем лид байтоеб на языках с управляемой памятью. Хотя уверен, что если такому любителю дать поработать с ансейфом и подергать какую-нибудь специфическую апиш-ку где указатели нужны, то он жидко обосрется.
345 3319066
>>319054

>Ты так и не ответил, чем это плохо.


А смысл, если это как дауну объяснять почему не надо есть суп ножом?
346 3319070
>>319054

>Что значит лучше/хуже навигация?


А ты случайно не vim-ом пользуешься?
347 3319084
>>319054

>Почему прав ты, а не он? Что значит лучше/хуже навигация?


Он хочет чтобы один интерфейс неявным образом вызывал 100500 методов.
348 3319247
>>319070
Я пользуюсь студией. В студии прекрасная навигация по коду. В самом сишарпе можно использовать регионы и сворачивать-разворачивать блоки как тебе захочется. Логику того скуфа я понять могу: зачем обмазывать код абстрактными фабриками, если все работает без них. Он выбросил код анона и ничего не сломалось, следовательно, он прав. У анона же какой-то карго-культ на грани окр: нельзя делать большие файлы потому что потому. Везде должен быть DI, зачем сам не знаю. Будто вернулся в джаву начала нулевых, лол.
349 3319249
>>319066
Миллиард китайцев едят суп палочками. Объясни им, в чем они не правы.
Ты же мартышка с галеры, тебя научили нажимать кнопки в правильном порядке, ты исполняешь ритуал. Зачем, почему так - некогда думать, надо ебашить микросервисы.
350 3319270
>>319035
Ну смотри, главное, чтобы у тебя от этого пчелика профессиональной травмы не было.

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

Ну, и наверное, твоего "главного", который порвался в своё время и теперь по инерции творит какую-то дичь
351 3319272
>>319035

>{


>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(...);


>...


>}



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

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



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

Не воспринимай серьёзно его, он задрот скорее всего. Смотри по внешним признакам. Обувь, взгляд, и так далее. Если он задрот, то скорее всего будет до конца биться за своё объективное и единственно правильное мнение. Оценивай, смотри, что с ним делать, заходи издалека
352 3319273
>>318562

>Жабун, мне нужно твое лицо в треде.



Ты бы ещё мамку тут свою поискал
353 3319275
>>319054

>Почему прав ты, а не он?



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

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

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

И, очевидно, надо искать не того, кто прав, а смотреть, на что оба ссылаются. На книжки? на опыт? Или на какие-то привидения в своей тупой башке. Надо искать общий язык а не ссать друг другу на лица
354 3319284
>>319270

>автомаппера


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

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

>выходных


*входных.
356 3319287
>>319275

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


Мы вроде в С# треде. Странно обсуждать какие-то другие парадигмы кроме ООП в языке который в базовом уровне построен на ООП. Даже значимые типы это наследники класса object, а DI буквально встроен в язык.

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

У меня вопрос к вменяемости людей которые отрицают наследование, внедрение зависимостей и развесестые интерфейсы потому что "не хочу ООП". Нахуя ты тогда выбрал для мейн языка С# если тебе не нравится подход и философия которая в нем заложена.
357 3319290
>>319287
Сишарп поддерживает разные парадигмы, наследование от object придумали 20 лет назад и с тех пор многое поменялось. Те же замыкания использовать проще, чем нахуячить 9000 классов в стиле джава 2007.
358 3319298
>>319287

> Странно обсуждать какие-то другие парадигмы кроме ООП


Чего странного?

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


ебанько?

> Я когда вижу попытки в процедурку или ФП


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

> у меня вопрос нахуя ты выбрал С# иди бери С++ или хаскель и пиши.


У меня половина проектов на f#
359 3319302
>>319273
Я уже начал переживать что с тобой что-то случилось.
360 3319313
>>319284

>Везде его врубаю.



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

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



Чем хуже?

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



Дай догадаюсь, ты пишешь по флуент валидатору на хендлер, где проверяешь параметры на NULL?
photo2024-11-0718-49-17.jpg233 Кб, 960x1280
361 3319373
Я пришёл напомнить, что c# охуенный
image.png42 Кб, 740x512
362 3319424
363 3319425
Студия заебала вылетать. Каждый день стабильно 2-3 раза падает.
364 3319549
>>319425
Чтотза проект у тебя такой??
365 3319558
В чем космический смысл разрабатывать библиотеку и не писать документацию?
https://github.com/dotnet/Silk.NET
366 3319579
В чем смысл protected конструктора? Какие ест кейсы для его использования?
368 3319584
>>319579
Когда ты хочешь сам управлять созданием объектов класса. Создаётся статик метод который создаёт новые объекты и private/protected конструктор.
369 3319586
>>319579
Кейсы те же, что у наследования: никакие.
370 3319588
>>319586
Нахуй ты пишешь на С# если тебе не нравится ООП?
371 3319589
>>319588
Ничего против ООП не имею. Но только нормального ООП, в котором вместо наследования композиция.
372 3319600
>>319582
А в чем смысл именно защищенного конструктора?
>>319584
То есть ответственность за создание дочерних классов будет лежать на дочерних классах? Разве это правильный подход? Почему просто не использовать фабричных класс?
373 3319601
>>319586
ох уж эти свидетели делегирования. заставить их написать через делегирование на чистом шарпе свой ГУИ фреймворк и поржать над их потугами сделать это поделие хоть немного удобным.
374 3319645
>>319600

>А в чем смысл именно защищенного конструктора?


Запретить создавать объект через публичный конструктор. А зачем это нужно - это уже вопрос архитектуры.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 10 ноября в 01:34.

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

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