scarysituation-v0-ccuyym5mcqqb1.webp21 Кб, 720x326
C# .net 9 release дотнета тред #60 /csharp/ 3395748 В конец треда | Веб
2 3395757
Нет аниметян с шарпом. Переделывай
3 3395759
>>395748 (OP)
Я прям ждал, что тег при перекате будет проёбан.
4 3395760
>>395759

>тег при перекате будет проёбан


Какой ТЕГ? Пиши мочеру, пусть удоляет..
5 3395762
>>395760
Тег csharp, чтобы тред показывался в навигаторе. Модератору отправил просьбу добавить.
1.CLyQGra4pFWmrSZYjFo40fG4plMuuyZDpramVyCzrF8m.jpg113 Кб, 415x724
6 3395772
Итак:
1) По существу вопроса >>3395559 → никто не ответил
2) Скочал VS2008 и прочую хрень для разработки для WM6
3) Сдул пыль с книжек: "C# в СССР", "Справочник по .NET для деревенского программиста"
4) Буду ебать тут вам мозг пока не забанят
5) Через пару дней приедет няша с фото
7 3395774
>>395772
Всегда думал, что на WM были плюсы, а не шарп.
8 3395775
>>395774
И плюсы есть и шарп
image.png228 Кб, 379x310
9 3395778
>>395772
У меня вот такой (пик) где-то валяется. Еще живой должен быть, правда работает только от провода.
Охуенная вещь в свое время (в 2008-м) была.
10 3395780
>>395772
Программирование мобильных устройств на платформе .NET Compact Framework. Салмре И.
11 3395781
>>395778
Мне по работке понадобилась бронебойная йоба с excel и инторнетом. Пальцетыкательные штатские телефоны отпали ввиду крайне суровых условий, а этот старичок должен вроде выдержать. По докам держит падение на бетон с 1.5 метров, множественные падения с 0,5 метра.

>>395780
Во! Спасибки! А то я уже и Либген покопал и так гуглил, только на MSDN шлет
12 3395797
>>395772
Автомаппер подключил?
13 3395800
>>395797
Не. А чо это такое?
Пока виртуалка натужно ставит обновы на Вин7. Послезавтра буду VS устанавливать на все деньги.
14 3395845
>>395781

>Мне по работке понадобилась бронебойная йоба с excel и инторнетом. Пальцетыкательные штатские телефоны отпали ввиду крайне суровых условий, а этот старичок должен вроде выдержать.


Чел, это несерьезно.
Купив эту древнюю "йобу" ты будешь иметь следующее:
1. Дохлый аккумулятор.
2. Крайне хуевый опыт в современном интернете с имеющимися там браузерами. Еще с учетом того, что там старые стандарты wi-fi и сотовой связи. Хорошо если хотя бы 3G будет.
3. Посредственный опыт с excel-ем. Управление стилусом не настолько и удобнее пальцевого, хоть и кажется таким на первый взгляд. Особенно учитывая, что во времена WinCE опыт и практики UX для ручных устройств был такой себе. Ну и опять же устаревшие версии.
4. Крайняя ограниченность ресурсов. Оперативка там измеряется мегабайтами, а современные быстрые sd карточки скорее всего не поддерживаются.

Если же немного покопаться, то можно спокойно взять современный защищенный андроидофон с IP69 и противоударным кропусом за вменяемые деньги. При этом у тебя будет:
1. Нормальный быстрый смарт с хорошим интернетом и связью.
2. Хорошая батарея, которая при активных рабочих задачах вполне спокойно будет несколько дней держать.
3. Нормальные офисные программы с уже вылизанным управлением под пальцы и работу одной рукой.
4. Нормальные ресурсы по железу. Вплоть до того, что ты сможешь полноценную IDE под тот же шарп (причем современный) на нем запустить (то еще извращение, но работает)
5. Есть возможность без особо сильных приседаний удаленно подклчаться к удаленному компу, хоть по ssh, хоть по rdp и делать уже что-то таким образом.

Говорю по собственному опыту, когда лет 5 назад еще работал программистом на производстве. У меня был китайский защищенный ноунейм, который я и на бетонный пол ронял не раз и в станке в СОЖ топил и он спокойно работал. И стоил он по тем временам меньше 10К.
Ну и я умудрялся с него по ssh подключаться к рабочему компу, с которого мого мониторить работу оборудования, заливтаь код и управлять.
15 3395887
>>395845

>Дохлый аккумулятор.


Съемный. Продаются новые

> хуевый опыт в современном интернете


Мне не нужен современный инторнет. Мне нужен VPN до сети предприятия. Вайфа - 802.11a/b/g

>Посредственный опыт с excel-ем


Мне от него нужна запись пары сотен цифр из базы в шаблон и отправка та комп

>Оперативка там измеряется мегабайтами, а современные быстрые sd карточки скорее всего не поддерживаются.


128Мб, карточки до 32Гб

>спокойно взять современный защищенный андроидофон с IP69


Цена, сестра?! Я три штуки этих, взал за 2500 на Авито.
16 3395892
>>395887

>Мне нужен VPN до сети предприятия


Ну вот как раз с этим и могут быть проблемы. Я не помню хоть сколько-нибудь хороших клиентов под WinMobile.

>Цена, сестра?! Я три штуки этих, взал за 2500 на Авито.


От 7К. Но в твоем случае соглашусь, как раз этот аргумент может быть самым валидным.
Просто вспоминая себя, когда я работал на производстве, понимаю, что тоже вряд ли мог бы себе тогда позволить лишние траты и тоже тогда приходилось всякое доставать и пердолиться.
17 3395903
>>395748 (OP)
почему с# - лучший язык?
18 3395963
>>395903

C# не лучший язык. Лучшие языки как правило имеют мало применений как раз в следствие своей категоричности.

C# это просто нормальный, относительно нейтральный язык, на котором можно программу написать и она будет деньги приносить
19 3395964
>>395800

>Не. А чо это такое?


Это технология, которая позволяет писать DDD
изображение.png36 Кб, 629x527
20 3396082
>>3395717 →

>>Как ни спросишь что-нибудь


>Что тебя интересует?


Ну давай попробуем.

В примерах часто вижу как делегат создают за приделами класса. Зачем так делать, а главное для чего? Что хотят этим добиться?
21 3396333
>>395964
Выебнулся?
22 3396351
>>396082
Чтобы он не был в классе. Кэп
23 3396434
>>396351
Ну так смысл? Как же принципы инкапсуляции?
24 3396573
>>396082

>имена классов с маленькой буквы


>имена переменных с большой


О, вы дегенерат!
25 3396602
>>396573
Аргументация, или только вскукареки?
27 3396675
>>396602

>Аргументация


Аргумент в том, что незачем ходить со своими выебонами в чужой монастырь. Есть официальный и устоявшияся стиль кода который используется 99% процентами разработчиков на нем. И им нахуй не уперлось ломать глаза и голову пытаясь понять зачем и почему ты пишешь по другому.
Ты конечно можешь продолжать выделываться и писать так как тебе хочется, но не удивляйся тогда, что тебя будут сходу посылать нахуй с твоими вопросами. Ну а если решишь где-то работать серьезно, то такой код даже собираться не будет в местных CI/CD.

А дегенерат ты потому, что не понимаешь таких простых вещей.
28 3396724
>>396675

>Есть официальный и устоявшияся стиль кода


В Visual Studio кликаю мышкой на форму -> создать ивент, студия генерит новую функцию и тут же подчеркивает ошибку формата, надо с большой буквы. Каждый раз ору с этой хуйни нарушающей свои же собственные правила.
29 3396737
>>395748 (OP)
Шарписты, какого осознавать, что ваш язык, созданный для того что бы потеснить джаву так и не справился со своей задачей, а вместо него джаву под брюхо пинает какая-то гугловская подделка, в которой нет ООП и даже нормальной обработки ошибок?
30 3396738
>>396737

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


Где об етом почитать? Или это тебе голоса в голове сказали?
31 3396931
>>396738
Почитай историю майрософт, конкретно раздел где сказано почему не стали использовать джаву а пошли делать свой язык.
32 3396939
>>396931
Там прямо так и написано "делаем шарп чтобы потеснить жаву"?
Или все же "просто делаем свой язык причем ТОЛЬКО ПОД ВИНДУ"?
33 3396941
>>396434
какие принципы инкапсуляции. Этот делегат используется снаружи класса. Так что помещать его внутрь или нет - просто вопрос конечного именования, а не инкапсуляции
34 3397256
>>396632
In addition to the rules, conventions for identifier names are used throughout the .NET APIs. These conventions provide consistency for names, but the compiler doesn't enforce them. You're free to use different conventions in your projects.

>>396675

>Аргумент в том, что незачем ходить со своими выебонами в чужой монастырь.


А я лично вам ничего и не навязывал, это вы меня тут дегенератом назвали.

>Есть официальный и устоявшияся стиль


Да? А почему тогда int, char, double, string, а не Int, Char, Double, String? Испокон веков названия типов записывались строчными буквами. Так почему теперь я должен писать всё шиворот на выворот? К тому же этот ваш верблюд пиздец как уёбищноВыглядит.

>собираться не будет в местных CI/CD


Это потому что правила там задавали такие как ты?

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


Хуя тебе сраку на ровном месте распидорасило.
35 3397268
>>396082
Делегат это ТИП. Логично, что он объявляется где-нибудь вне классов.

С другой стороны, я видел только один пример, где реально нужен был делегат, все остальные случаи покрывает Func<...>, Action<...>, ну или можно автомаппером смапить

Поэтому ты делегат объявишь максимум раза три в жизни, не парься
36 3397271
>>396737
О НЕЕТ
37 3397328
>>397268
А разве делегаты это не ооп лямбды, типо как в жяве сигл метод интерфейс? Почему колбеки можно обявить 3 раза в жизни когда макаки их каждый день используют?

мимо не сишорпер
38 3397350
>>397328

> А разве делегаты это не ооп лямбды, типо как в жяве сигл метод интерфейс?


Нет.

> Почему колбеки можно обявить 3 раза в жизни когда макаки их каждый день используют?


Кто сказал коллбеки? ДЕЛЕГАТЫ. В 99% случаев тебе хватит встроенных делегатов Func<> и Action<>, свои собственные объявлять не понадобится.
39 3397364
>>397350
Нахуя эта мистификация нужна тогда? Это похоже, но это вам не это? Зачем лишняя сущность делегат тогда? Я сначала подумал что делегат это тип колбека.

https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/delegates/
Делегат — это тип, который представляет ссылки на методы с определенным списком параметров и типом возвращаемого значения. При создании экземпляра делегата этот экземпляр можно связать с любым методом с совместимой сигнатурой и типом возвращаемого значения. Метод можно вызвать (активировать) с помощью экземпляра делегата.

Делегаты используются для передачи методов в качестве аргументов к другим методам. Обработчики событий — это ничто иное, как методы, вызываемые с помощью делегатов.
40 3397382
>>396941
Какого такого именования? Всё что относится к классу должно быть внутри класса, и по необходимости защищено от внешнего воздействия, а не разбросано где попало, вот и все принципы инкапсуляции.

>>397268

>Делегат это ТИП. Логично, что он объявляется где-нибудь вне классов.


Ну с этой точки зрения да, но всё равно как-то сомнительно.

Ладно, идём далее.
Как я понимаю си решётка это про синтаксический сахарок. Тогда зачем на строчке 3, где, собственно, объявляется делегат, нужно указывать имена входных переменных, те что qqq и www? Они более в тексте нигде не фигурируют, а без них ошибка.
41 3397395
>>397364

> Нахуя эта мистификация нужна тогда? Это похоже, но это вам не это? Зачем лишняя сущность делегат тогда? Я сначала подумал что делегат это тип колбека.


Потому что 99% случаев - это не 100% случаев. Свои атрибуты тоже надо редко объявлять, и что, они тоже не нужны?
42 3397399
>>397328

>А разве делегаты это не ооп лямбды



Делегат это тип, который представляет собой ссылку на метод с параметрами метода и с возвращаемым значением.
43 3397402
>>397382

>Всё что относится к классу должно быть внутри класса


а как оно относится к классу? Покажи где оно используется в классе? Или ты про класс Program? так это вообще entry point

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

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

>>397364

>Нахуя эта мистификация нужна тогда?


делегаты появились раньше дженериков. То есть ДО появления Action<>|Func<>
Однако нужности не лишились, так как обладают именем и могут в ref|out
44 3397403
>>397382
Когда вызываешь делегат, можешь передать значения аргументов по этим именам.
mydelegate hui = huimethod;
hui(qqq: 123, www: "456");
45 3397404
>>397382

>нужно указывать имена входных переменных, те что qqq и www


Чтобы автомаппер понимал, к чему маппить параметры
46 3397456
>>397402

>а как оно относится к классу?


Ну если я вызываю метод класса через делегат, то логично же этот делегат объявить в том же классе, не?

>>397403
>>397404
Понял, принял.
47 3397607
>>397456
По желанию. Точно так же, как и с вложенными классами.
Если это моя сборка и классы internal, то я могу не хотить плодить длинные имена (ну да с алиасами полегче, но все же)
48 3397745
>>396082

>В примерах часто вижу как делегат создают за приделами класса


>>397607

>По желанию.


Ну и в чём причина такого желания? Зачем мусорить за пределами класса сигнатурами его методов? Не логично разве внутри объявлять, чтобы было видно чья это сигнатура? Так почему обычно делают наоборот? Какая причина?
49 3397779
>>397745

>Зачем мусорить за пределами класса сигнатурами его методов?


моя сборка - что хочу, то и делаю. может я не хочу использовать его СНАРУЖИ класса как
new MuSuperPuperClassNameAfterBeerDrink.MySuperShotNameDelegate()

да и вообще - если уж это делегат вызывается СНАРУЖИ класса, то он уже не "внутреннее дело класса". А для раскладывания типов у нас как бы есть неймспейсы.
50 3397855
>>397779

>что хочу, то и делаю


И в чём причина желания, мотивация какая? Аргументы? И главное, вопрос не про тебя с твоим высосанным их жопы примером, и опять без объяснения мотивации, а причина почему все как правило так делают? Какая причина? Аргументы?

>я не хочу использовать его СНАРУЖИ класса как new MuSuperPuperClassNameAfterBeerDrink.MySuperShotNameDelegate()


Что за детский визг? Почему не хочешь? Такая запись соответствует грамотному программированию - не срать в голобале, а инкапсулировать. Ты против общепринятых практик С#? И не только ты получается, а большинство так пишет, значит программисты на C# против практик которые сами же проповедуют? Так? В чём причины такого неадекватного поведения? Аргументы где? Разумное поведение где? Ты и остальные можете объяснить мотивацию своих действий?

>да и вообще - если уж это делегат вызывается СНАРУЖИ класса


Классы тоже используются вне классов. Так что, классы не нужны? Инкапсуляция не нужна?
51 3397864
>>397855

>Классы тоже используются вне классов. Так что, классы не нужны? Инкапсуляция не нужна?


Так и классы лежат ВНЕ классов (с) КЭП

>не срать в голобале


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

ты сначала изучи вопрос что такое инкапсуляция (даже если это на уровне сборки, а не класса), а потом приходи.

Это ты должен пояснять что за моча тебе в голову ударила, что ты тип, который используется СНАРУЖИ класса (как и 1005000000000 других таких же типов), должен помещать в какой то там класс.

Твое "я знаю что он используется снаружи и поэтому хочу поместить его в какой то класс" уже звучит как вызов к психиатру, где даже он удивится и спросит "А ЗАЧЕМ?"
52 3397878
>>397864

>Инкапсуляция не нужна?



Хуйня для пидоров не нужна
lib3.webp4 Кб, 128x128
53 3397879
>>397855

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



Мамку твою инкапсулируем
54 3397880
>>397878
Чел. Выпей таблетки и изучи что такое инкапсуляция
55 3397893
>>397864

>Это ты должен пояснять что за моча тебе в голову ударила, что ты тип, который используется СНАРУЖИ класса (как и 1005000000000 других таких же типов), должен помещать в какой то там класс.


Потому что это не самостоятельный тип, а тип принадлежащий классу, это часть класса прибитая к нему своим предназначением. Часть класса должна быть в классе, а не валяться хуй знает где. Мусорить в глобале - противоречит всем практикам и банальному4 здравому смыслу. Объясни откуда это безумие нарушать здравый смысл. ПОЧЕМУ? Почему люди безумны и действуют неадекватно?
56 3397913
>>397364

>Зачем лишняя сущность делегат тогда


Потому что ты неуч который нихуя не знает про программирование и думает что ссылка на метод это какая-то особенность шарпа. Ты ещё наверное ахуеешь узнав что интерфейс это паттерн, а не ключевое слово в шарпе.
57 3397942
>>397864

>Это ты должен пояснять что за моча тебе в голову ударила, что ты тип, который используется СНАРУЖИ класса (как и 1005000000000 других таких же типов), должен помещать в какой то там класс.



Я (>>397456) - не он (>>397745 >>397855), но отвечу.
Мало ли что используется снаружи. Я снаружи могу и метод класса вызвать. Значит ли это что я должен метод создавать вне класса?

Да ты и сам говоришь, иле не ты, что

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


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

>Так и классы лежат ВНЕ классов


А как же вложенные классы?
58 3397944
>>397942

>Значит ли это что я должен метод создавать вне класса?


А сможешь?

>Не понятно, что значит удалять


это значит что если он в моей сборке, то он помечен как internal (и плевать где он лежит) и меня НЕ ПАРИТ что кто то там его увидит и заюзает, а я потом решу удалить делегат и у него сломается.
А если он таки public, то уже ни о каком сокрытии речь не идет и неважно где он лежит.

>А как же вложенные классы?


в 99.99% случаев они имеют статус private. Но они чисто для удобства чтобы потом самому же и не запутываться. но это ПО ЖЕЛАНИЮ. я могу создать какой нибудь хелпер, но в нем будет дохрена строк и я его отдельно положу.
59 3398185
>>395748 (OP)
Сап, поясните ньюфагу плез чем ASP.NET отличается от Blazor-a? Первый это бек а второй фронт или как?
60 3398196
>>398185
Аспнет - это набор из нескольких технологий, там и кор, и блазор, и мвс, и грпц, и сигналр.
61 3398308
>>398185

> Blazor-a?


блейзор это подтехнология аспнеткора
62 3398314
>>398308
А чем .NET от .NET framework отличается?
63 3398339
>>398314

>А чем .NET от .NET framework отличается?



.net framwork - это старые версии, которые еще даже кросс-платформенными не были и работали только под виндой.

тебе в .net (его еще иногда называют дотнет кор). Там всё новенькое, чистенькое и модное
64 3398520
>>398339
Понял, спасибо, удачи вам товарищи
65 3398641
Жаль, что в шарпе нет поддержки препроцессорных директив в nuget пакетах. Чтобы к примеру отключать проверки на null и выброс исключений в таких случаях.
66 3398642
>>398641
Хорошо, что нельзя отключить, меньше долбоёбов будет бороться с эксепшенами.
image.png26 Кб, 709x157
67 3398643
>>398642
Долбаебы это те, кто не позволяет отключать компиляцию подобного мусора
68 3398653
>>398643
Да, согласен, проверки на null очень сильно замедляет работу. Один индус пересобирал core-clr с заинлайнеными статическими проверками на null, и у него общая производительность кода на 50% выросла.

Я сам никогда не пишу проверки на null, а кто пишет - долбоёбы
69 3398657
>>398643
Только долбоёбы будут это отключать
70 3399006
Только долбоебы
71 3399393
Чем нормально можно поискать ботлнеки?
Раньше пользовался доттрейс - всем устраивало, но сейчас ПРОБЛЕМКИ.
Еще давно пользовался ANTS - тоже отличная штука, но как-то с переходом на кору - перестали им пользоваться и перекатились на доттрейс. А но с ним будут те же проблемки вроде я думаю.
Ломанное на работе ставить низя(

Просто сейчас ищу че ж там загрузку замедляет приложения, и заебался. Когда мелкие данные - ну нихуя не понятно, всегда быстро. Как хуйнул нагрузку большую - так блин, там все вызывается, во всех местах и конукретные хотспоты - ну тяжко находить, а оптимизировать все - ну, ебатина.
72 3399418
>>399393
где ищешь хоть
73 3399432
>>399393
Тормозит бд, код дрочить бессмысленно. Вангую у вас там классическое idle in transaction.
74 3399458
>>399432
Напиши свою метрику, что-нибудь типо юсингов, которые замеряют блок кода, и строят флейм-чарт.

И в коде её и оставь, даже не удаляй
75 3399602
>>399432
Нет. Как раз БД не тормозит, потому что ее нет)
Вернее как. Это десктоп. Вся "БД" - JSON файлик который при запуске читается, при остановке - схороняется, периодически раз в n-минут создается "резерв" для восстановления если падение будет внезапным.

Тормозит именно логика инициализации там надо в процессе картинки-хуинки подругзить, поубивать всякое что мешает, привести объекты в состояние пригодное для использования и прочая залупистика.
Просто этого много и по всем ходить искать - ну такое.
76 3399686
>>399602
В студии же есть профайлинг
77 3399691
>>399602
Говнопидор ты, короче, разбей свой файлик на много маленьких файликов, может он у тебя разросся до сотен мегабайт, а может твоя мать просто снова себя неподобающе вела
78 3399719
>>399686
Студийный меня бы удовлетворял если бы не падал раз в 5 минут.
Доттрейс раньше я на ночь оставлял смотреть пока всякое гоняется.
79 3399738
>>399602

>файлик


Используй sqlite, его специально для этого придумали.
80 3399739
>>399738
Это нужно sql знать, особенно если хочешь компилить с aot, из-за чего не можешь использовать ef core
мимо
81 3399744
>>399739

>Это нужно sql знать


Ты прикалываешься?
Ну узнай, это не рокет саенс.
82 3399745
>>399739
SQL учится за день.
83 3399751
>>399738
SQLite был избыточен.
Нам просто надо дерево объектов хранить между запусками и сохранять настройки с состоянием.
Ну и SQLite - не решит проблему того что мы уже все в память загрузили и теперь бегаем объектики правильно инициализируем.
Говорю же проблема не в том как данные хранятся. JSON за пару миллисекунд парсится, а вот дальше начинается когда данных дофига.
84 3399770
>>399745

>SQL учится за день.



А потом еще лет 5 доучивается до вменяемого состояния
85 3399773
>>399770

>А потом еще лет 5 доучивается


Бля, вы заебали! Только заказал на Озоне книжку - "SQL за пол дня" и скроллю вакансии Сеньоров по БД, а тут такой облом!
86 3399775
>>399751
А тебе обязательно весь датасет разом в память выгружать даже с нормальной СУБД вместо файликов? Значит, у тебя где-то проёб в архитектуре твоей проги, переделывай.
87 3399776
>>399770
Это если тебе надо не загрузить пару записей для десктопного приложения, а ежедневно ебаться с оптимизацией запросов для всяких отчётов. Ты же не забыл, что мы тут не бэкенд обсуждаем?
88 3399794
>>399776

SQL учится за день.
@
А ЧЕГО ЭТО ОН ТОРМОЗИТ У МЕНЯ???
89 3399798
>>399794
Тормозит загрузка жсона по айди?
90 3399823
>>399798

>Тормозит загрузка жсона по айди?



Давай блядь в БД жсон складывать. Первые 10 раз не тормозит, а когда ты поиск делаешь по 10 форин-кеям - ты охуеешь
91 3399829
>>399823
Выбирай чанками меньше 10, пока всё не вытащишь.
92 3399851
>>399829
Иди на хуй, я лучше нормальные вмеру нормализованные связи сделаю поверх постгре
93 3399854
>>399851
Лол, ты тред жопой читаешь?
94 3399857
>>399854
Да,ты запихнул всё в один JSON, и теперь ебёшься с ним, потому что ты долбоёб. Иди на хуй вообще, я бек пишу и WPF принципиально двухметровой палкой не трогаю потому что вы там одну и ту же проблему по 10 лет решаете и всё решить не можете.

блядь, говнососы тупые, в один поток асинхронно писать не могут, а в многопоток ебуться как слепые щенки
95 3399861
>>399775

>А тебе обязательно весь датасет разом в память выгружать даже с нормальной СУБД вместо файликов? Значит, у тебя где-то проёб в архитектуре твоей проги, переделывай.


Да обязательно. Потому что за визуал отвечает - ебанат и хочет чтобы ему сразу все дерево объектов отдали. Потому что не захотел реализовывать частичную загрузку, я ему даже показал как - он сказал хуйня, давай мне все разом.
Я-то понимаю что проеб. Я говорил что это проеб. Но тот - рассказывал ЛПРу что я нихуя не понимаю, байты в руках не держал, вообще поколение тиктока и это не веб чтобы подгружать частями, а потому уже ЛПР мне сказал, что делай как он говорит. Я и делаю. Я понимаю что хуйня. Я просто хочу чтобы в моей части не было ботлнеков, и когда его посыпится - на меня свалить уже он не смог.
96 3399871
>>399851
Десктопная программа с постгресом в зависимостях, лол
97 3399880
>>399857
При чем тут вообще жсон не жсон? Еще раз - жсон загружается и парсится за пару миллисекунд.
Время уходит на то чтобы всю ебаторию проверить на корректность состояния, поправить если какой-то хуй кривыми руками полез в жсон, правильно всю хуйню сверху инициализировать, привязать одни сущности к другим, подгрузить локализацию, подгрузить картиночки, иконочки, хуеночки, шрифты, и если чел включил автоматическое обновление - проверить нет ли чего и обновить, если при обновлении произошла ошибка или оно несовместимо - откатить. Если при этом что-то пошло не так - найти снепшот того что работало нормально и повторить процесс с тем что было, попробовать при этом подгрузить то что в актуальном и что не подгрузилось - пометить как приводящее к проблеме. Сверху - в самом начале еще до жсона - надо проверить что хуйлан не вносил изменения посчитать хеши-хуеши и попробовать восстановиться скачав правильные файлы обратно. Сверху - проверить лицензию.
Ну серьезно.

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

Видимо придется как дебил брать дотбенч и самому мерить каждый метод. Это тупо, это долго, это надо все методы смотреть и не в реальных условиях а на синтетике. Но раз блин никто не знает - ну, ладно. Видимо ничего в дотнете кроме доттрейса и ANTS нету получается.
98 3399932
>>399880

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



А я потом думаю, хуле у меня приложуха погоды в три раза дольше винды загружается, лул.
99 3399946
>>399880
Падажжи, ты все это грузишь по сети?
100 3399955
>>399946
Нет. Только обновы если есть. Я ж не совсем еблан.
1-RGVVUyBIdiQo0vvQJNWTA.png192 Кб, 1200x900
101 3399975
>>399880

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



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

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

Потом сделай метрику, которая по времени исполнения скоупов генерирует отчёт. В итоге ты получишь что-то типо вложенной метрики:

В общем приложение загружалось 10 секунд
Из них:
5 секунд загружался JSON
5 секунд ебли твою мамку

Ну и соответственно, время, затраченное на твою мамку тоже может дробиться.
102 3400160
>>399955
Если это не сеть, значит, GC бесоебит. Больше просто нечему тормозить. У тебя джейсончик, возможно, где-то во время проверок строки конкатенируются по 100500 раз. Большой джейсон - большие строки, они уезжают в большую кучу, а потом GC пытается это говно собрать и тормозит.
103 3400175
>>400160
Ебать, ты диагност телепат, я хуею
104 3400239
>>399975

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


А можешь ссылку на какой-нибудь пример такого скинуть?
105 3400253
>>400239

Наверняка есть, но я не знаю. Придётся, скорее всего самому писать.

Да там делов-то на 300 строк кода, через чат-джипити нахуяришь за вечер
106 3400254
>>400239
... ну вот, например, есть пример https://miniprofiler.com/dotnet/AspDotNetCore , но это для аспнет кора
108 3400451
>>400254
>>400266
Thanks, bro.
109 3400880
>>400254
>>400266
Прикольная штука, тольк не совсем понял как бэкграунд процессы с ним профилировать. Там вроде есть отдельный метод с передачей externalProfiler-a, но нихуя непонятно откуда его брать и примеров для него нет.

И да - неймспейсы там пиздец какой-то.
110 3400943
Байтоёб в треде.

Вот нужно мне отправлять езернет-кадры в сеть. Недолго думая, езернет -кадр оформил в виде структуры с нужными полями. Но библиотека, через которую происходит отправка кадров, требует массив байтового типа.
Пытался, используя указатели по типу >>3386163 → , перегнать структуру в массив. Ну то есть беру указатель на структуру, привожу его к байтовому типу и далее в цикле переписываю каждый байт. В принципе даже работает, но когда я в структуру, в качестве очередного поля, добавил массив, то резко лосонул тунца - компиляция не проходит. Подозреваю, что это из-за того что массив - ссылочный тип.
Ну и, собственно, как быть? Как структуру перегнать в байтовый массив малой кровью?
111 3400976
>>400943
Сделай сериализацию через protobuf, он вроде как ничего лишнего не добавляет.
112 3401173
>>400943
Через маршалинг.
113 3401329
>>400943

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



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

> Ну и, собственно, как быть? Как структуру перегнать в байтовый массив малой кровью?



сериализовать в абстрактный формат, например, протобаф
114 3401623
Решил вкотиться для расширения кругозора. Цены на книжки: 3к, 5к, 12к.... Это заранее предвкушают будущий уровень заработка читателя?
115 3401656
>>401623
Это заранее предвкушают пиратство.
116 3401673
>>401329

>дотнет не гарантирует выравнивание и порядок данных в объекте


Гарантирует (даже на Auto есть некоторые гарантии), но сам алгоритм в рантайме немного багованный/неэффективный на corner кейсах (где-то в комментах на гитхабе говорилось что-то подобное с примерами):
StructLayout.Sequential +
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.structlayoutattribute.pack#remarks

>>400943

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


Может лучше MemoryMarshal.Read/Write?

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


fixed-size buffer или InlineArray:
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/unsafe-code#fixed-size-buffers
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.inlinearrayattribute
117 3401704
Поясните нуфажине
Создаю в классе свойство

public string жопа { get; private set; }

Всё норм - снаружи изменить не могу. Но как только я делая массив

public string [] жопа { get; private set; }

так получаю полный доступ.
118 3401718
Всем привет. В рекордах можно как-то сделать что бы ToString массивы поэлементно показывал? А то даже если вручную перопределишь, синтез в базовых классах уже не работает, все вручную писать из-за массива. :С
119 3401719
>>401704

>так получаю полный доступ.


Ты получаешь доступ только к содержимому массива. Сам массив ты заменить на другой не сможешь. Если ты хочешь, чтобы и содержимое снаружи нельзя было изменить, то отдавай IReadOnlyCollection<string>.
120 3401745
>>401329

>дотнет не гарантирует выравнивание и порядок данных в объекте


>>401673

>...


Хотя хуй его знает, если поискать issue связанные с лэйаутом, то их пиздец как много. LayoutKind.Sequential вроде влияет на managed структуру если тип blittable (т.е. даже unmanaged недостаточно). Хотя много кода полагается на то что если структура unmanaged, то поля будут последовательно (с паддингами если нужно; если LayoutKind.Auto не стоит), так что вряд ли они будут этот момент менять (да и смысл). Можно конечно в dotnet/runtime спросить.

Просто к сведению:
https://github.com/dotnet/runtime/discussions/94481#discussioncomment-7502637
121 3401772
>>401719
Хе, интересно девки пляшут. Как вообще до такого смогло дойти?
122 3401775
>>401772
Дойти до логики и здравого смысла?
123 3401778
>>401775
нет там никакого здравого смысла. просто не продумывали. Так же как и с IReadOnlyList
124 3401779
>>401778
Попробуй вместо массива ссылку на объект. Поля этого объекта по-твоему тоже должны стать приватными что ли?
125 3401781
>>401779
вообще не понял что ты сказал.
В шарпе вместо того чтобы все сделать сразу - мутабельные, иммутабельные, фрозен/ридонли и соответственно с интерфейсами сделать, сделали абы как. И это просто факт.
126 3401783
>>401781
Вот и иди нахуй отсюда.
127 3401798
>>401775
Я к тому что зачем защита от подмены без защиты содержимого? Что за полумеры?
128 3401805
>>401798
Чтобы можно было менять элементы массива извне при неизменности ссылки на массив. Да и как массив должен догадаться, что где-то в чужом коде для него написан приватный сеттер?
129 3401856
>>401805

>Чтобы можно было менять элементы массива извне при неизменности ссылки на массив.


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

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


Почему в чужом? Всё ж в одной строчке пишется.
public string [] жопа { get; private set; }
130 3401871
>>401856

>так почему у массива могу? Где логика?


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

Выставляй наружу ридонли. Таких правда нет чтобы массив, но ты знал куда пришел.
131 3401873
>>401856

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


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

> Дырявая какая-то защита.


Это не защита, а специально так сделано, чтобы специально можно было заменить все значения элементов массива.

> У интовой переменной я вот не могу изменить содержимое, так почему у массива могу?


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

> Почему в чужом? Всё ж в одной строчке пишется.


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

мне всё равно заняться нечем
132 3401878
>>401871
>>401873
Ну может такое поведение и можно объяснить тем что массив - ссылочный тип, его содержимое как бы оторвано от имени. Но всё равно выглядит странным, если мне надо защитить массив, то мне надо защитить его полностью.

>Без такой фичи пришлось бы везде таскать делегат для геттера.


Тут твоя мысль от меня ускользает. Ну и ладно.

>но сеттер элементов массива ты не трогал


А такие есть? Для каждого элемента можно сделать свой?
133 3401901
>>401871

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


Потому что - не нужно. Там где нужны массивы, похуй на ООП шелуху, а там где есть ООП - похуй на массивы, достаточно коллекций.
134 3401902
>>401901

> ООП


Лол, я бы посмотрел на код, где картинки обрабатывают в виде IReadOnlyCollection<IReadOnlyCollection<Color>>
135 3401904
>>401902

>где картинки обрабатывают


Ну так ты сам и ответил. Какое тебе там ООП, безопасность и модификаторы доступа при обработке графики. Ты будешь там хуярить с отключением проверок границ массивов и прочим ансейфом, чтобы нормальной скорости добиться и тебя вообще не будет ебать - private set там public или что-то другое.
136 3402059
>>401901
технически ты прав, но ситуация с Ilist говорит о том, что хрен кто вообще задумывался о какой то там ридонлистости, а больше "и так сойдет"
137 3402065
>>401904
Чушпанцер, видимость членов вообще никак на производительность не влияет.
138 3402069
>>402065
зато доступ через интерфейс влияет еще как.
139 3402074
>>402069
Что ж ты сдал назад как швайнехунд зелински после отъёба Трампом?
140 3402076
>>402074
Алярм! Протечка /по/раши в уютный тред!!
141 3402088
>>402074
ты о чем? я всегда обсирал коллекции шарпа во всех тредах.
Видишь кто то бочку катит на коллекции (да и на прочие WTF шарпа) - 99% это я.
142 3402168
>>402065

>членов


хехе, член
143 3402172
>>402088

>Видишь кто то бочку катит на коллекции - 99% это я.



Долбоёб, не разобрался с коллекциями.

Тут еще невдупляшка был, который не понял, как IDisposable пользоваться
144 3402175
>>402076

Ну хoxлoв тут тоже не надо. Я как-то работал с ними в одной кипорской компании, так они мало того, что нихуя не понимают, так еще и ленивые как пиздец
145 3402285
>>402172

>Долбоёб, не разобрался с коллекциями.


> IDisposable пользоваться


я и есть тот, кто продвигает лайфтаймы
но тебя я тоже помню - любое ГОВНО оправдаешь как "ты не распробовал"
спасибо, но говно всегда говно, можно хоть миллион раз его попробовать, но вкус все равно останется таким же и ценителем я не стану.

если с коллекциями все шикарно изначально, то нахрена ПОТОМ появились иммутабельные, а потом и фрозен? риторический вопрос.
146 3402330
>>402175

>так еще и ленивые как пиздец


Взоржал с мрий вм-мартышки
147 3402373
>>402285

>если с коллекциями все шикарно изначально, то нахрена ПОТОМ появились иммутабельные, а потом и фрозен? риторический вопрос.



В смысле риторический? МС пошло в сторону ФП причем давно, что бы не ебаццо с синхронризацией (все эти асинки, иммутабельность и прочее). Какому нибудь серваку на азуре пох на неэффективность, у него 1000 железных ядер, главное что бы не падало и не зависало из-за ошибки с синхронизацией потоков.
А чистые массивы из первой версии CLR, это конец 90-х.
148 3402380
>>402373
а зачем IReadOnlyList?
149 3402402
>>402285

>я и есть тот



Ясно, один и тот же долбоёб жалется на коллекции и IDisposable.

>кто продвигает лайфтаймы



мусор не нужен
150 3402405
>>402402
не жалуюсь, а тыкаю в очевидные недостатки.
Но что я могу пояснить говноеду - он уже привык жрать и радоваться.
151 3402407
Сколько в ПСБ сейчас вилка?
2 года назад прошел и получил оффер 190к + премии = 220к на руки на .NET/T-SQL разраба.
152 3402460
>>402402

>мусор не нужен


смотря где
ты правильно говорил "диспозе всего лишь метод". То есть диспозабле паттерн говорит "будет такой метод и его НАДО вызвать и тем самым произойдет очистка". ВСЕ.
Вот и вся навука про "как его использовать". Тут нет НИЧЕГО про то как его вызывать вовремя и не забывать.

Эту проблему решают другие средства типа контейнеров. И если в асп.нет у тебя есть контейнер, скоупы которого можно натянуть на диспозабле, то в десктопе у тебя есть НИХУЯ (огнетушитель тем, кто попытается это решить контейнером)

Поверь, довольно сложно правильно использовать НИХУЯ. Как то не очень получается и приходится городить огород. И лайфтаймы - самый удобный и крутой огород.
image.png714 Кб, 600x469
153 3402472
>>402460

>Тут нет НИЧЕГО про то как его вызывать вовремя и не забывать.



Ты так нихуя и не понял

>Эту проблему решают другие средства типа контейнеров.



При чём тут контейнер вообще? Ты еблан?

>И лайфтаймы - самый удобный и крутой огород.



Сука, ебучий коммивояжёр, блядь
154 3402474
>>402472

>При чём тут контейнер вообще? Ты еблан?


При том что диспозе не заканчивается на тупом using(var disposable =

и контейнер в асп.нет коре рождает и убивает все диспозабле которые scoped при каждом запросе.

Учи матчасть, понимака.
155 3402967
Подходит ли c# для вката жука-плавунца 35 лвл?
Есть вакансии для джунов? Как с фрилансом?
Знаю СИ, но я так понимаю, никакой связи с ним нету.
156 3403031
>>402967

>Знаю СИ



Если твоя мамка не против, если ты имеешь опыт коммерческой разработки и если обещаешь не байтоёбствовать - то да.

Если ты мудак, которые будет всех учить, что нужно экономить пол байта оперативки, и который простреливает себе жопу через каждые 12 минут - то, пожалуйста, оставь эту затею
157 3403039
>>402967

>Подходит ли c# для вката жука-плавунца 35 лвл?


Если сможешь полюбить Иисуса ООП и впустить его в себя - то вполне.

>Есть вакансии для джунов?


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

>Как с фрилансом?


Фриланс мертв сам по себе, а на шарпе его и не было особо. Сейчас только по знакомству, если тебя кто из-знакомых на какой-нибудь аутсорсный проект позовет, чтобы на подхвате быть.
158 3403054
>>402967

>Как с фрилансом?


Бля, ты такие вопросы задаёшь. Фриланс по определению ГЛОБАЛЬНЫЙ рынок. Потому он и называется ФРИ ЛАНС. Вся идея, что можно сидеть где-нибудь в Бангладеше и при этом находить клиента из Германии. Во фрилансе есть любая работа, на любом языке и на любом стеке. Кроме непосредственной работы с паяльником/лобзиком/станком и так далее. То есть на фрилансе нет только той работы где надо непосредственно сидеть в офисе/рабочем месте.

>Есть вакансии для джунов?


ВАКАНСИИ ДЛЯ ДЖУНОВ - это всегда 1-5% вакансий на рынке. До пизды какой стек. C#, java, python, ruby, C++, rust, и так далее. Возьми общее количество вакансий, ну например 2000 вакансий. Посчитай 1-5% от этого числа. И ты получишь общее количество вакансий для джунов. При этом, на этот 1% стремиться попасть 50% программистов. У них логика такая: ну и что, что там мало платят? Я не жадный. Мне много на жизнь не надо. 30к в месяц хватит. Посижу годик попержу, потом съебусь на сладкое место. В итоге он приходит, а там уже очередь из сотни человек таких же "мне много не надо, я пришёл за опытом". Он делает скриншот и идёт на двач, закатывает там истерику ПОМОЖИТЕ ЛЮДИ ДОБРЫЕ НИГДЕ НЕ БЕРУТ, ВХОД ВАЙТИ ЗАКРЫТ. В итоге жалобы, вопросы ШО ДЕЛАТЬ? Ну и так далее.
159 3403101
>>403054
все так, добавлю статистики
согласно данным на hh на сегодня на одну вакансию:
Python - 50 резюме.
C#/Java - 35
C++ - 25
в золотые ковидные годы в среднем был 10 рез/вак.

вообщем мне кажется hh.ru превратилось в помойку и убито HR-ми
которые ставят ЗП - 250к, едешь на собеседование, смотришь, а там уже 150к.
вот нахуя там делать...
какие есть альтернативы hh?
160 3403140
>>403054

>ВАКАНСИИ ДЛЯ ДЖУНОВ - это всегда 1-5% вакансий на рынке. До пизды какой стек. C#, java, python, ruby, C++, rust, и так далее



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

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

Но тут важно отметить, что у нас стажировок довольно много, берем к себе умную студентоту из мфти и вшэ, всяких зумеров с явно выраженным свдг и low iq нормисов оставляем за бортом. И сами по себе мы не мухосранская галера, а бигтех на несколько разрабов.
161 3403142
>>403140

>бигтех на несколько разрабов


несколько тысяч разрабов

быстрофикс
162 3403155
>>403140
описал типикал бигтех галеру
где каждые пол года вводят ебанутые правила, тренниги, корпоративная этика, планерки, рутина.
тут что кому по душе, я в таких работать не могу, пусть даже и зп там в среднем выше.
мой выбор что-то среднее между НИИ и бигтех-галлерой
163 3403312
>>403140
Какой хороший гой, переживает за деньги кабана.
Во-первых, какой-нибудь абсолютно бесполезный скрам-мастер получает даже больше сеньки, а делает нихуя. Отдел HR можно разогнать весь к хуям, оставить одну девочку оформлять трудовые.
Во-вторых, чем больше кода, тем дольше происходит вкатывание в этот код. Майкрософт не просто так доплачивает своим сотрудникам за стаж. Три месяца - это вообще ни о чем, в большом легаси только через полгода можно ожидать от чела самостоятельной работы. Говорю по личному опыту лида в продукте с 20-летней историей.
В-третьих, разговоры о качестве кода выдают в тебе джуна, который прод не нюхал. Код или работает или нет, это единственное качество, остальное инфоциганство от мартина.
164 3403313
>>403101

>какие есть альтернативы hh?


В РФ - практически никаких. hh потому и скатились, что они уже лет 10 назад полностью выдавили всех конкурентов из интернета и могут творить что хотят. Из альтернатив только личный нетворкинг и может быть еще какие-нибудь ТГ каналы. Ну и напрямую искать сайты работодателей и долбиться к ним лично.
165 3403373
Ребята, как в EF core сделать несколько каскадных путей для удаления?
Прочитал что mssql по какой-то причине такое не поддерживает.
У меня сущности: Result <- User <- Group.
И я хочу чтобы при удалении группы удалялись юзвери и следовательно если удаляется юзер - удалять его результаты.
Пока что единственный вариант что я вижу - это на стороне базы сделать триггер на удаление.
Я реально не понимаю почему это не поддерживается в mssql?
166 3403380
>>403373
Не еби мозги, удали сущности по очереди на уровне c# кода.
167 3403404
>>403380
Походу так и сделаю.
168 3403415
>>403380

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


>Дрочить бд, отправляя запросы в цикле - заебись идея!


Бекенд разработка в 2025 году.
169 3403592
на с# можно мобильное приложение запилить включая фронт? Или только бэкенд?
170 3403615
>>403592

> на с# можно мобильное приложение запилить включая фронт? Или только бэкенд?



Да, можно
171 3403616
>>403373

>Прочитал что mssql по какой-то причине такое не поддерживает.


DELETE CASCADE не поддерживает?
не может такого быть
172 3403618
Куда дели ildasm? Я помню в .net framework находил как-то, но в обычном .net я не могу разобраться. Я так понял графический интерфейс нахера-то убрали и оставили консольный. По книжке пример надо разобрать, но я бля не могу найти этот обосранный дизассемблер. качал из nuget'a, качал какую-то хреньб с гитхзаба компилил, ниче не запускается. Памагите((( Хотя хз зачем мне этот дизассблемре я и так язык не знаю еще. Просто консось не знает такой команды даже когда прописываешь команду dotnet add чё-то там короче установка этого говна
173 3403625
>>403618
В богомерзком rider присутствует, в VS тоже встроен вроде
174 3403652
>>403616
Перечитай пост.
Для множественных путей не поддерживает.
175 3403689
>>403625
не, я походу долбоеб, найти не могу. раньше все находил терь ваще не могу ладно похуй. спс за попытку помочь
image.png179 Кб, 1120x1260
176 3403878
Как же я люблю шарп, пиздец просто
177 3403883
>>403689
Если в райдере, то шифт шифт и il пишешь.
178 3403996
>>403878
Ты сам себе злой буратино который выбирает неподходящий инструмент.

Ещё раз. Все эти штуки в С# нужны для взаимодействия с кодом на С/С++ или иных подобных задач.
image.png8 Кб, 459x88
179 3404029
>>403878

>GetAddressOf()


>на переменную в классе


Я так понимаю у тебя там "ComPtr<ID3D11Device> _d3d11Device", и ты вызываешь GetAddressOf() на ней, да? Вот только GetAddressOf() возвращает указатель на саму переменную, если я правильно понял, это же будет опасно (GC подвинет), не? Ну и про остальные переменные тоже самое.
180 3404032
>>403878
И ещё ты GCHandle не сделал Free().

>>403996

>Ещё раз. Все эти штуки в С# нужны для взаимодействия с кодом на С/С++ или иных подобных задач.


А он что делает?
181 3404045
Про какую проверку на null тут говорят? Разве в машинном коде автоматически все ссылки проверяются на null? Я в первый раз про такое слышу.
В прошлом треде об этом говорили, но в итоге не привели доказательств этому.
182 3404047
Почему лучше вкатиться в шарп, нежели в джаву? Знакомый решил изучать джаву, и сказал мне, что шарп говно. Но я не знаю ничего про джаву, только то, что там миллион васянских библиотек и много костылей, аля дженериков с их стиранием типов. Может есть аргументы получше?
Чем, например, asp.net core лучше спринга?
183 3404057
>>404047
Оба языка аналогичны по возможностям, разве что в шарпе синтаксис поприятнее. Васянских библиотек везде полно, но на то они и васянские, что нормальные люди их использовать не будут. Аргументов лучше личных предпочтений ты не услышишь, если бы было что-то серьёзное, выбор был бы очевиден, и на одном из языков просто никто бы не писал.
184 3404062
>>404057
Мне человек, который работал на джаве, говорил, что в джаве много популярных библиотек, которые решают одну и ту же задачу. Из-за этого приходится знать их все, когда в шарпе есть универсальные решения, аля ef core, masstransit и етс, и многие из них разрабатываются самими мелкомягкими. Еще он говорил про проблемы с версионированием.
185 3404071
>>403101

>C++ - 25



При этом в плюсы мало кто вкатывается. Значит это уволенные специалисты?
186 3404112
>>404047
На джаве больше вакансий.
За джаву больше платят.
На джаве значительно меньше фулстек параши с аутстаф галер. В сишарпе с этим просто беда, микрософт целенаправленно превращают дотнет в нодежс для дебилов. После ухода Гейтса все покатилось в пизду.
В джаве надо знать спринг и суметь пояснить за канкаренси на собесе, реактом и кубером занимаются другие люди. В сишарпе почитай требования на типичную вакансию, ты охуеешь (потом сравни зп и охуеешь во второй раз).
На джаве куча вакансий на продукт, а не на финтех говно проект 3 месяца.
v6s2reqn8dne1.webp49 Кб, 720x960
187 3404126
>>403054
Имеет смысл залетать на миддла с пет проектами без опыта коммерческой работы? (пукать в офисе)

Какого вида вообще пет проекты надо иметь если вкатываешься в бэк на сишарпе? Рестфул хуйню любой может написать и я не думаю что кого-то это впечатлит.
188 3404151
>>404126
Сервис бронирования или электронную очередь.
189 3404167
>>404112
Как перекатиться с wpf на java spring? Сейчас получаю 130к и понимаю, что для впф это почти потолок
190 3404186
>>404057

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



Ага, давай сравнивать заплесневелый javaspring, где закаменели худшие ООП практики: вся эта ебала с АОП, XML код вперемешку с java, DDD, встроенный в DI контейнер... с новеньким aspnet-кором, который уже 10 лет причёсывают и упрощают?
191 3404207
>>404186
И который все равно медленнее спринга...
192 3404230
>>404207

>И который все равно медленнее спринга...


Да, конечно, как скажешь
{3F42FE99-7BB6-4900-9B33-CF7CEAC986AA}.png52 Кб, 498x1016
193 3404266
Спрошу тут, может кто знает. А то пробовал гопоту спросить, а она ничего вразумительного не говорит.
Суть. На текущем проекте ебанутый кодстайл.
Я, не люблю со своим уставом в чужой монастырь ходить.
Но я не хочу ручками выравнивать.
Приложу пример стиля.
Было бы славно если бы сказали в какую сторону копать.
194 3404281
>>404266
.editorconfig
image.png201 Кб, 720x326
195 3404284
196 3404292
>>402967
>>403054
А что, собственно, с фрилансом? Что на Java, что на C# ситуация одинаковая. В РФ есть аутстафф-галеры, которые устраивают тебя к себе самозанятым и находят временные проекты сроком примерно на полгода. Я так работаю с начала ковида. Много не заработаешь, но на еду хватает (а больших денег во фрилансе, собственно, и не бывает). Можно сидеть дома и не надо мониторить вакансии самому. На глобальном рынке жителей РФ и Украины не нанимают, к тому же есть гораздо более дешевые индусы (а большой потребности во фрилансерах нет).
197 3404305
>>403313

>Из альтернатив только личный нетворкинг


Наилучший вариант, но это исключительно для сеньоров с 10+ годами стажа. Для остальных только hh.ru и career.habr.com.

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


Крупным IT-компаниям (Яндекс, ВК, Сбер и т.д.) такое не нужно, и ответа не будет. А вот галерам можно писать, они ищут работников для проектов. После ухода EPAM и Luxoft, например, можно в i-teco.ru (они работают исключительно на российском рынке).
198 3404429
>>404266

>Я, не люблю со своим уставом в чужой монастырь ходить.



Такое говно вижу впервые, и оно вызывает у меня грусть, потому что его скорее всего придумал человек, который очень мало c# кода читал. Более того, он мудак и раскольник.

Если автоформатирование не работает - просто игнорируй эту хуету.
199 3404448
>>404429

>который очень мало c# кода читал


либо сторонник лимита в 80 символов.
типа так diff проще и на мобилах читать проще и вообще.
200 3404449
>>404266

>true == b is 0


Это какой-то отбитый сишник писал, не иначе. Я даже не могу представить, под какими веществами можно родить эту конструкцию.
201 3404463
Неофит вкатился в тред. Как обстоит вопрос с лицензированием прог от микрософта? Можно ли легально приобрести студию, венду, sql сервер? Как вы программируете на работе, в комьюнити версиях студии или других? Могут ли у работодателя возникнуть проблемы, если сотрудники пользуются ломаными или комьюнити версиями софта, или всем похуй?
202 3404469
>>404463
Да под С# какие могут быть платные проги? Сижу на linux, net core позволяет, студию не ставил, в vscode сейчас все плагинами решается, накрайняк vscodium, vim, zed. Базы данных в основном PostgreSQL, MySQL. Ну может только Azure - вот тут да. Надо искать альтернативу.
203 3404491
>>404448

>либо



ну и пусть сам ебётся. Есть рекомендации от микрософт, общепринятые стандарты. Игнорировать их - себе жизнь усложнять
204 3404521
>>404463
Работаю в банке. На рабочей машине стоит VS2022 с энтерпрайз ключом от работодателя. Ключи покупались конторой где-то в 23-м году, когда их типа нельзя было уже купить. На своей тачке так же пользуюсь VS2022 комьюнити эдишен. Брат жив, зависимость есть.

Вот райдер купить или еще какие приблуды от жидбрейнсов - это уже хуй.

Ну и VSCode естественно, но она в основном для работы со всякой мелочью типа конфигов, js-а и местного ИИ.
205 3404581
>>404521

> Вот райдер купить или еще какие приблуды от жидбрейнсов - это уже хуй.



райдер бесплатный
206 3404591
>>404581
Хуй знает, не слежу за ним, в прошлом году вроде еще платным был. Решарпер точно все еще платный.
207 3404592
>>404581

>райдер бесплатный


не для коммерческого использования.
208 3404606
>>404592

>не для коммерческого использования.



Так ты на нём и не занимайся коммерческой деятельностью
209 3404614
>>404592
У нас на работе все пользуются бесплатной версией, проблем вроде нет
210 3404626

>Интерактивные приложения Blazor на стороне клиента



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



Что значит производительность на уровне внутренних компонентов браузера? Т.е. скорость открытия всяких браузерных менюшек? Т.е. быстрее чем фронт написанный на жс?
211 3404641
>>404626
Производительность на уровне внутренних компонентов браузера означает, что Blazor WebAssembly может работать с такой же эффективностью, как и нативные операции браузера (например, рендеринг страницы), Быстрее, чем традиционные приложения на JavaScript, в некоторых случаях, когда речь идет о сложных вычислениях или обработке данных.
212 3404642
>>404626

>Т.е. быстрее чем фронт написанный на жс?


В теории да - там неонка wasm внутре. Но очень многое зависит от твоих кривых рук.
213 3404687
>>404614

>проблем вроде нет


А так всегда бывает. Проблем нет пока они не начнутся.

Я вот планирую жить вечно и пока удается.
214 3404796
>>404626
Это значит, что с блазором мартышке не надо понимать, как работает сеть. Где рякт отправит один джейсон в конце, приложение на блазоре будет дергать бекенд на каждый пук на форме. Ну а че, на локалхосте все работает быстро.
215 3404801
Какую из этих трех книг читать нубу?
1. C# для чайников Автор книги – Джон Пол Мюллер
2. Программирование на C# для начинающих 2е части Автор: Алексей Васильев
3. Head First. Изучаем C# 4е издание Авторы: Эндрю Стиллмен, Дженнифер Грин
216 3404806
>>404801
Читать шапку.
Screenrecorder-2025-03-09-06-21-03-669.mp411 Мб, mp4,
864x1920, 0:12
217 3404810
>>404801
Ой бля из-за одной сраной книги сейчас будет консилиум собирать, я просто заказываю пачку книг и не парюсь, завтра должны 10 книг привезти и я представь себе не консультировался с двачем по этому поводу.
218 3404826
>>404810
А как ты поймёшь, в каком порядке будешь их читать? Подбросишь десятигранник?
219 3404945
Чет мне кажется подход с тем что контроллер - просто точка входа - каргокульт.
Сам писал так долго.
К чему приводит. Обычно - сервис все равно нигде кроме одного контроллера не используется. При этом - если еще и интерфейсы вынесены - ты просто f12 нажать чтобы перейти не можешь, надо ctrl+f12, не большая проблема, пока вы вдруг тесты не начали писать или кодген какой-то не подрубили.
Вообще. Чет у меня кажется кризис среднего возраста. 10 лет пишу и типа чем дальше, тем больше все что там писал - кажется каким-то карго культом. Ну, вынес я интерфейсы, ну, делаю я сервисы отдельно. Че дает? Дает то что вместо того чтобы за 10 секунд поправить в контроллере, я иду в контроллер, ищу что ж там за сервис для апишки вызывается, иду ищу где ж там сервис такой. Потом вспоминаю, что я решил что и сервис будет точкой входа, а дальше он в CQRS начнет оборачивать и через медиатор дернет хендлер. Ищу хендлер. Нахожу хендлер где-то запрятан в глубинах. Таки нашел. Поправил. Забыл через секунду все это и в следующий раз то же самое проделывать буду.
Не. Ну справедливости ради - иногда было полезно, когда оказывалось что надо добавить апишку похожую, но в другом контроллере с другими способами проверки прав, и чутька другой обработкой, там таки да - о, у нас же уже в сервис вынесено - просто перенаправим в него. Но в большинстве случаев чет жижей сейчас кажется.
Короче. Я не знаю. Чувство что я большую часть карьеры какой-то надуманной хуйней занимался. Скажите что-нибудь хорошее про медиаторы, CQRS и прочее, чтобы мне легче стало и я просто перестал об этой хуйне думать.
220 3404950
>>404945
Ну возьми вынеси абсолютно всю логику в контроллеры (да хотя бы даже не всю, а только бизнес, без DAL) и поработай так месяцок.
Вот когда ты охуеешь эти портянки править и внедрять в них что-то новое, тогда и поймешь зачем это. Особенно когда тебе не одна, а несколко смежных задач прилетает. Ну или не только тебе, а когда приходится еще с кем-то в команде над смежным функционалом и вам потом приходится пару дней сидеть и резолвить конфликты.
221 3404969
>>404826
Смысл не порядке, а в просто чтении. Никак я не выбираю порядок. В зависимости от настроения беру понравившуюся. Если слишком занудная или сложная то откладываю. Беру книгу если еду в поезде или транспорте или стою в очереди. Если поезд, то могу страниц 200-300 прочесть. Если общественный транспорт страниц 10-15 в одну сторону и столько же в другую. Из технической литературы читаю про duckdb, нейронки и архитектуру и проектирование апи. Вот в принципе и всё.
222 3404986
>>404945

>Скажите что-нибудь хорошее про медиаторы, CQRS и прочее



Про медиатр ничего хорошего сказать не могу, это мусор. Гораздо проще писать CQS заебали путать cqs и cqrs без этой хуйни.

Просто заинжекти команду или квери и исполни её

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

>тогда и поймешь зачем это



Не подменяй понятия. Выносить логику из контроллеров это хорошо. Медиатр это плохо
224 3404993
>>404826
читаешь все подряд в любом порядке. читаешь чужой код в любом порядке. Раньше для этого требовался хоть какой то "понимаю в общих чертах". А сейчас можно спросить у ИИ "что тут вообще блин происходит". И даже простая гптмини тебе разжует и в рот положит.
225 3405005
>>404945

>контроллер


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

>медиаторы


Нахуй не нужен этот паджит стайл. Используй саги.

>CQRS


Это про инфраструктуру, а не про код. Пишем в мастер базу, читаем с реплик, тем самым масштабируем систему на чтение. Задача для девопса.

>сервис будет точкой входа, а дальше он в CQRS начнет оборачивать и через медиатор дернет хендлер


Чтобы что? Логика вызова микросервисов должна быть в саге, сам микросервис про другие ничего не знает.

Короче, ты наворотил абстрактных абстракций, а теперь удивляешься. Чем проще - тем надежнее.
226 3405075
>>404810
И сколько из них ты прочтешь интересно?
227 3405078
>>404806
Не заметил в шапке книг.
228 3405108
>>405005

>саги


>просто


>надежно


У тебя в проекте этого быть не должно. Любые попытки сделать распределение транзакции это ошибка проектирования системы.
229 3405116
>>405078
потому что они не нужны.
230 3405178
>>405108
Нет.
231 3405216
>>405178
Если такой дохуя умник, расскажи как у тебя саги устроены? Я без шуток, никак это знание древних протоереев освоить не могу
232 3405343
>>405216
Саги изначально призваны решать проблему которая появляется от кривых мозгов. Если у тебя два разных сервиса должны атомарно что-то сделать и необходимо откатить А при падение Б, то
1) на самом деле операции А и Б могут быть независимы и атомарность ты сам придумал.
2) на самом деле они должны быть просто в согласованы в периоде времени N. То есть буквально делаешь события.
3) ты неверно провел декомпозицию сервисов. Необходимо объединить все сервисы что участвуют в транзакции в один.
233 3405569
>>405343
Сервис Б пишет другая команда. Твои действия?
Как ты собираешься делать перевод денег без атомарности?
Сервисы объединить невозможно потому, что данные физически лежат на разных шардах в разных базах. Надо передать данные от шарда А к шарду Б и откатить, если что-то пошло не так. Как будешь решать эту задачу без саги? Размазывать код тонким слоем говна по 100500 медиаторам?
234 3405570
>>405108
О, вы из епама!
235 3405575
>>405216
Сага - это отдельный сервис, одна сага на каждую бизнес транзакцию. Это одна строка в бд и один конечный автомат в коде. По сути тот же аутбокс, только для N сервисов. Вся логика откатов и ретраев находится в одном файле, логику легко понять и покрыть юнит-тестами. Никакого ебаного месива из медиаторов, весь код в одном месте. Если сага застряла, ты просто правишь данные в бд и руками перекатываешь ее куда надо. Если для эксперимента надо сагу немного изменить, ты просто копируешь один файл и запускаешь рядом новую сагу, старая работает как раньше.
Из минусов - для саги нужен девопс все настроить. Поскольку в аутстаф галерах дейплой происходит мышкой через админку, для них саги это сложна нипанятна лучше пукнем джейсоном в очередь.
236 3405730
>>405575

>Никакого ебаного месива из медиаторов



Не понимаю, нахуя вы пишите про медиатры вообще? Они же никак не влияют на кодовую базу кроме как попытка заменить DI, и
237 3405768
>>405730

>Они же никак не влияют на кодовую базу кроме как попытка заменить DI


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

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

А когда от приседаний начинают болеть коленки, то тогда челы приходят на двач и начинают лить каки (и заслужено) на медиатры.
238 3405802
>>405730
Мы точно говорим про одно и то же?
Медиатор - это сервис, который выгребает ивенты из кафки. Юзер сервис пукнул в кафку джейсоном "user created", медиатор занюхал и дальше вызвал сервис емейлов "отправить письмо". Или поменял статус в сервисе интеграции. Или еще сделал какую хуйню, в зависимости что нам надо в этой конкретной бизнес транзакции.
Если ты про библиотеку Mediatr, с помощью которой шизы на архитекторе пытаются имитировать работу по сети внутри локального процесса, то это запредельный пиздец и рак мозга.
239 3406006
>>405768

>в каком месте они заменяют DI? они на нем и базируются



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

В итоге каша получается без слоёв, без структуры. 🤮
240 3406009
>>405802

> Мы точно говорим про одно и то же?



Вот ты разделяешь, а многие думают, что это одно и тоже
241 3406028
Как подключить Mediatr к кафке?
242 3406038
В чем проблема использования медиатра как ивент брокера? Постоянно вижу что его поливают калом, хочется разобраться. Какие есть вообще альтернативы?
243 3406042
>>406038

> Какие есть вообще альтернативы?


Вызов методов.
244 3406086
>>406038

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


В том что решает ровно ноль проблем, но при этом навигация по коду усложняется.
245 3406165
Что мне мешает реализовать внутреннию шину сообщений внутри сервиса и пушить в неё события кафки?
246 3406205
>>406165
Ничего. Всегда так делаю.
247 3406222
>>406165

>и пушить в неё события кафки?


отсутствие кафки мешать может
248 3406250
>>406038
Зачем тебе вообще понадобился ивент брокер? Чтобы что?
249 3406261
>>406250
Я в дескотопе, есть команды от юзера, есть хендлеры, которые их исполняют, есть разные политики исполнения, разные контексты и т.д. Вместо медиатра какая то своя реализация, но принципиальных отличий не вижу, вокруг него вроде бы все тоже самое можно накрутить.
250 3406264
>>406261
Что такое команды от юзера? Ивенты OnButtonClick? Так они нужны только для биндинга. Как только исполнение дошло до контроллера, дальше спокойно вызываешь методы без пердолинга с шиной.
Мы используем концепцию скриптов. Это литерали то же самое, что сага в облаке, только на десктопе. Надо тебе допустим сделать выгрузку в эксель, во вьюмодели в обработчике Export просто вызывается _script.Run(data) где _script это IExportToExcelScript инжектится через DI. Навигация по коду работает, в отличие от шины событий.
251 3406270
>>406038
Проблема в том, что когда у тебя обычные вызовы методов, ты можешь с Ctrl проклинать или делать find all references, а когда у тебя ивент брокер, тебе надо сидеть и смотреть, как там ивенты называются и пр.
И если с обычным di и вызовом методов ты можешь построить граф зависимостей, то с ивент брокером это совершенно невозможно, никто не сможет через полгода в этом спагетти разобраться, а это обязательно приводит к багам.
Явное > неявное.

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

Так что я могу со всей ответственностью заявить, что это антипаттерн.
252 3406288
>>406250
Ну когда у тебя есть шина сообщений ты можешь пукнуть сообщение и все его обработки будут вызваны.
Добавление нового не требует создания новых методов сервиса или добавления 100500 вызовы медиатора. Ты просто пишешь новый обработчик.
253 3406339
>>406288
Ты в любом случае правишь код. Почему нельзя просто вызвать метод напрямую, а не через шину?
254 3406367
>>406270
Хуже. С шиной сообщения размазываются слои приложения, и начинается пиздец, когда кусок кода вызывается или не вызывается в зависимости от ряда косвенных признаков из неизвестно откуда. Приложение становится разнонаправленным, теряет всякую свою организацию и превращается в ад.
255 3406546
>>406367
Куда размазываются. У тебя в Application слое должны лежать все обработчики и там же находится объявления событий и там же лежать сервис который пукает сообщения из очередей к тебе.
Все твои вызовы шины должны также находится внутри Application потому что это слой где лежит ВСЯ логика приложения.
256 3406629
>>406546
Видел проект, в котором команды и хендлеры лежали во всех слоях.

А знаешь, почему? Потому что там, например, была команда-репозиторий, которая возвращала IQueryable, и лежала в ДОМЕНЕ, а в домене она лежала потому что Ентити-фреймворк удобнее в домене держать.

Я после двух месяцев созерцания переписывания сервиса с 5000 строк на медиатр+автомаппер на 50 000 строк, я уволился одним днём.

То есть, буквально, был сервис, который в одну сторону перекачивает данные из сторонней апишки в БД, а стал ГЕКСАГОНАЛЬНЫЙ ДОМЕН-ДРИВЕН СQRS, где обязательно нужно писать валидаторы с проверками на нулл входящих параметров потому что все команды маппятся автомаппером, и просто никто не знает, может там быть нулл или нет.

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

Первый раз был когда на проект с действительно большими проблемами (PolicyOne) наняли О, АРХИТЕКТОРА, который вместо того, чтобы упрощать рекурсивную зубодробительную логику, начал пытаться переписывать всё на автомаппер+медиатр. Переписывание заняло пол года, в которые я искал новый проект, а когда я уволился - начались массовые увольнения, потому что ОЙ.

Короче, пацаны, я с полной уверенностью заявляю, что подключение медиатра - это всегда дьявольщина.
257 3406906
>>400976
>>401173
>>401329
>>401673
Хуйня из под коня ваш протобуф. Только зря с установкой битый час проебался. Какую-то левую хуету добавляет.
258 3406941
C# разве кому-то сейчас нужен вообще?
259 3406980
>>406941
Ты не охуел часом, подобное заявлять?
260 3406990
>>406941
Скоро не нужен будет. Нейронки будут по одному большому промту сразу в двоичный код хуярить и всё. Программисты пойдут на хуй как и добрая часть ит
261 3407041
>>406990
ты просто хреновый программист поэтому ЗАВИСТЬ )

Программистам ХАНА уже через ГОД — об этом абсолютно серьезно заявил CEO Anthropic и создатель Claude, Дарио Амодей.

заявление для дурачков )
Потому что если ии научится понимать тз и писать полноценный код как надо - то у человечества будут уже совсем другие проблемы.
А до этого - ну не думает ИИ не думает. она всего лишь математическая функция комбинирования.
262 3407043
>>407041

>Программистам ХАНА уже через ГОД — об этом абсолютно серьезно заявил CEO Anthropic и создатель Claude, Дарио Амодей.


По-моему он писал про том, что 90% или более программного кода будет написано нейросетью
263 3407059
>>407043
и что через 12 месяцев ии будет писать практически весь код. что эквивалентно "программисты не нужны"

Ога проходили уже не раз это "вот ЭТО позволит даже домохозяйкам"

не знаю у кого там код ии пишет - у меня используется как замена so, с теми же проблемами что допиливать нужно.
264 3407067
>>407043
Ну да, следовательно, 90% ныне действующих вебмакак, которых здесь принято ласково называть "программистами", отправятся на мороз - никакими компетенциями, кроме знания модного ФРЕИМВОРКА, они не обладают. Оставшихся отправит на мороз следующее поколение "ии" лет этак через 5-10.
265 3407071
>>407067

>Оставшихся отправит на мороз следующее поколение "ии" лет этак через 5-10.


ну да ну да. свежо предание.
266 3407072
>>407067
А кто будет переводить требования бизнеса в промт? Появятся какие-нибудь промтописатели, которыми станут нынешние программисты, а ит перестанет быть чем-то невероятным, как юристы в своё время. ну или промты будут директора или менеджеры ебашить, лол
267 3407088
>>407072

>Появятся какие-нибудь промтописатели


Да, верно, с "хорошей зарплатой" типа $800/мес - ради этого всё и затевается. Ну и нужно их будет сильно меньше, чем нынешних веб-кодеров.
А в конторах поменьше может и менеджеры превратятся в промпт-менеджеров (за те же деньги, естественно) и будут сами промпты хуячить, да. Тем более, что нейрокал уже поумнеет к тому времени.
268 3407123
>>407072
>>407088
боже какие же вы идиоты...
ради интереса сколько вам лет?
269 3407125
Там Микрософт переписали компилятор тайпскрипта на го: https://devblogs.microsoft.com/typescript/typescript-native-port/
https://github.com/microsoft/typescript-go/discussions/411
В комментах недоумевают почему не раст, а у шарперов просто пердаки порвало за то что сами Майкрософт на нём не пишут.
270 3407130
>>407125
недумевакам бы самим на расте пописать.
271 3407145
Пацаны, как безболезненно локализовать логи приложения?
Типа вот был десктоп. Писали логгером логи.
Кому-то пришла охуенная мысль - пусть и пользователь видит.
Ну, сказали - сделали.
И тут началось: А чо на английском, а че не локализуется, а че так много, нахуя это пользователю.
И типа - ну, давайте уберу. НЕТ, ЭТА НАДО, просто сделайте как-нибудь чтобы только то что надо пользователю и локализовано.
Но откровенно - а я откуда знаю что надо пользователю, и что локализовать что нет. Так-то да, я могу просто по темплейту фильтровать и если темплейт - правильный - искать локализованое сообщение и выводить его.
Просто вот в RenPy видил вообще охуенное решение, там оно как-то выковыривало все строки и можно было карту сделать, типа старую строку на новую. Думал похожее нахуярить, но логи же - типа на то и логи, что их хуярят на каждый чих - я хуй найду все строки которые нужны...
272 3407157
>>407125

>почему


Потому что это работа которая нахуй никому не нужна. Сделают - хорошо, нет - похуй итак работает. Рабода для того, чтобы какого-нибудь инициативного дурачка занять. Он к начальству пришел и "а можно я на го сделаю?" - "Да делай на чем хочешь, отъебись только, не до тебя сейчас."
273 3407158
>>407145

>как безболезненно


Если безболезненно, то вариант только один - съебать с этого проекта (да и с десктопа вообще). Все остальные принесут только боль.
274 3407178
>>406906

>Хуйня из под коня ваш протобуф. Только зря с установкой битый час проебался. Какую-то левую хуету добавляет.



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

https://github.com/MessagePack-CSharp/MessagePack-CSharp Вот эту посмотри еще, вроде популярная
275 3407181
>>407125
А на чем он был написан то изначально?
276 3407185
>>407125

>почему не раст


Каждый раз проигрываю с этих ебнутых сектантов. Если завтра на Марсе найдут древние наскальные письмена протомарсиан, первым комментарием будет "почему не на расте".
277 3407222
>>401878

> Тут твоя мысль от меня ускользает.


Поздравим этого анона, он осознал глубину своей некомпетентности и тем самым преодолел свой синдром Даннинга-Крюгера.
278 3407372
>>407181
На тайпскрипте и был
279 3407419
>>407372
А во что он компилирует?
280 3407426
>>407419
В жс
281 3407435
>>407426
смешно
282 3407436
>>407435
Ниче смешного. У тайпскрипта с жс экосистема пожирнее будет чем у шарпа. Сами же майки к ней руки приложили, им и надо всю эту хуйню поддерживать
283 3407488
>>407436

>экосистема пожирнее будет чем у шарпа



а какая экосистема нужна шарпу? Компилятор в JS?
284 3407491
>>407488
В жс есть все как в греции. Впрочем в шарпе тоже. Но в жс по несколько альтернатив с одинаковыми фичами
285 3407507
>>407491

>Но в жс по несколько альтернатив с одинаковыми фичами


то есть, есть несколько альтернативных компиляторов JS в JS?
286 3407511
>>407507
десяток
287 3407643
>>407222
Будто я до этого не понимал. Ващет с самого начала сказал что я нуфагиус.
288 3407684
>>407491
is-even
even-is
js-is-even
number-is-even
is-even-number
is-even-number-v2
is-even-or-is-string-starting-with-foo
289 3407766
>>407123
Что выведет следующий код? Дай короткий ответ.
```python
print('Не знаю, я еблан')
```
290 3407767
>>407766
Второй раз я на это не поведусь!
291 3407769
>>407766
он даже не скомпилируется.
292 3407772
Эх. Не успел я вкатиться в программирование на c#. Пошёл работать блядским сис админом на завод, отработал там ебаные два год, тем самым упустил время на вкат. А щас уже поздно, джуны нахуй еикмо не нужны + замена программеров на нейронки. Просто минус мораль
293 3407786
>>407178
Этот протобуф перед каждым полем ещё два байта добавляет. Скорее всего это информация о размере, для десериализации. Но могли бы не в кучу всё лепить, а как-то в отдельный массив её выделить чтобы не мешалась, хочешь передавай, хочешь нет. , Или хотя бы в конец добавлять.

>Вот эту посмотри еще, вроде популярная


Не буду, 99,99% такая же херня.

>>401173
>>401673

>Может лучше MemoryMarshal.Read/Write?


А эта поделка неспособна в структуры с массивами.

Вы бы хоть сами проверяли что советуете, я с вами только время теряю. Как в том анекдоте про кур и корм разными фигурами. Вообще пиздец.
294 3407806
>>407786

>Как в том анекдоте про кур и корм разными фигурами


Хз что за анекдот, но у нас еще много идей
295 3407816
>>407786

>>>401173


>>>401673 (You)


>>Может лучше MemoryMarshal.Read/Write?


>А эта поделка неспособна в структуры с массивами.


А я там ещё сказал использовать InlineArray или fixed-size buffer вместо обычного массива.
296 3407832
>>407786
Ты взял нетипичную задачу, с которой сталкиваются 0.0001% разработчиков на дотнете. За то время, что ты ее тут обсуждаешь, уже можно было написать свою сериализацию, тупо складывать побайтно в массив.
297 3407834
>>407786
Сам разбираться не хочешь, ебало от проверенных решений кривишь. Ты уёбок!
298 3407838
>>407786

>Скорее всего



Скорее всего ты долбоёб.
299 3407839
>>406980
Не, а правда. Нахуя сейчас С#? Go и Java за глаза должно быть, и для скриптиков Python.
300 3407840
>>407786

>А эта поделка неспособна в структуры с массивами.


А кто может даже в теории? Ты хочешь преобразовать структуру в буфер который эта структура занимает да без перегона байтов, но очевидно что структура с ссылочным типом внутри НЕ занимает 1 непрерывный буфер просто по своей природе.
301 3407876
>>407157

Чувак, это литералли топовый архитектор МС, который создал ваш же Шарп и Тайпскрипт.
302 3407881
>>407876

>который создал ваш же Шарп


а кто сказал что он сделал хорошо? WTF хватает.
303 3407885
>>407881
Все правильно. Шарп сделал инициативный дурачек, которому скинули задачу на отъебись. Поэтому шарпом пользуются инициативные дурачки..
304 3407894
>>407885
что поделать если альтернатива на порядок хуже
305 3407897
>>407881
Двачую. Попробуйте найти вижуал студию 2003 и написать что-нибудь, вы охуеете, какой тот шарп был всратый.
306 3407900
>>407897
нет не охуею. я на нем писал с первой версии и по сравнению всратости альтернатив он был шикарен.
307 3408025
>>407897

В 2003 все было всратое.
308 3408143
Очень нравится как выглядят шаблонные статические классы. Но не могу придумать, где их можно использовать...
309 3408153
>>408143

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



Что это?
310 3408177
>>408153
public static class Test<T>
{
public static void DoSomething(T value){}
}
311 3408191
>>408177
Очевидные экстеншен методы.
312 3408194
>>408177
Они используются как типизированные инициализаторы в дотнете. Где то видел.
у меня используются еще вот так (по аналогии с peewee с питона, но все же в шарпе маловато гибкости и слишком много дубль кода, но все же...)
db.Query(
Select<User>.OrderByDescending(r => r.Date).All()
).RunAsync(...)
313 3408227
>>408194

>по аналогии с peewee с питона



Еще лет 10 и, глядишь, в питоне Linq изобретут!
314 3408240
>>408227
Ну peewee и есть своеобразный LINQ
Но конкретно тут QueryObject и его билдер, а не чистый LINQ запрос
315 3408309
>>408194
Что случится, если ты напишешь sql на sql-е? Ночью приползет Гейтс и откусит тебе жопу?
316 3408321
>>408309
Так ведь ORM-шизики не поймут.
317 3408322
>>408309
во-первых, это не SQL. Query принимает в себя только QueryObject, а это билдер такого объекта для простых случаев, но не чистый LINQ, который транслируется в SQL. Это просто DSL такой

во-вторых, конечно укусит. В одном месте тебе нужно OrderByDescending, в другом OrderBy и т.д. - будешь строки ручками собирать? ну удачи
318 3408326
>>408321

>Так ведь ORM-шизики не поймут


ORM там вообще не причем. Это просто альтернатива repository. Не все любят овер 9999 методов в классе, но так же и не все любят овер 9999 вот таких вот command/query. Особенно если для простых случаев их можно переиспользовать. Ни и для красоты сделать вместо тупого new ТакойТоЗапрос вот такой DSL.
319 3408328
>>407832

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


Пока так и делаю.

>>407834
Где кривлю то? Всё что вы мне тут предлагали всё перепробовал.

>>407838
Скорее всего ты.

>>407840
Да понятно, но задача-то типичная. Неужели нет внятного решения?

>>407816

>А я там ещё сказал использовать InlineArray или fixed-size buffer вместо обычного массива


Ну смотри, если обманул - пролапсом ануса прокляну. ладно, не буду
320 3408330
>>408328
В каком месте она типичная. Для сериализации типично "переложить байты". А делать по твоему не то что не типично, а вообще никто не делает ибо смысла нет.

>Ну смотри, если обманул


не обманул он тебя. Структура будет без ссылочных типов - и поэтому жирной, так что таскать ее такое себе.
321 3408331
>>408322
Да, буду собирать строки внутри хранимки, а таблицы вообще закрою для этого юзера. Когда система начнет тормозить у заказчика, я смогу подключиться к его базе через два впна три rdp и погонять запрос на живых данных. Алсо твой код делает SELECT * FROM, хотя по факту тебе понадобится два поля из двадцати.
322 3408336
>>408331

>Да, буду собирать строки внутри хранимки


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

>Алсо твой код делает SELECT * FROM, хотя по факту тебе понадобится два поля из двадцати.


нет не делает. это не орм. Это абстракция от хранилища вообще. Он вообще ничего не делает.
ты же понимаешь что OrderByDescending это НЕ Linq2SQL, а просто указание "вы это там, откуда бы не читали, хоть с хранимок, хоть со второго стула, но мне плиз дайте в таком порядке, ну чтобы я в памяти не сортировал"? А я ведь об этом и говорю что это НЕ Linq, а DSL универсальных Query/Command.
А вот внутри уже самих QueryObject и происходит нужное тебе - хоть SQL, хоть хранимки, хоть LINQ2DB, хоть жсоны читай

Кстати. по поводу "тебе понадобится два поля из двадцати.".
Я противник чтения объектов частично. Поэтому завожу отдельные объекты под этот случай не позволяя нарушать инкапсуляцию основных моделек. Так что если мне нужно лишь часть - часть и прочту.
323 3408340
>>408336

>db.Query


>этот код вообще не работает с бд


Наркоман?
324 3408345
>>408340
db не значит SQL (с) кэп. Это просто переменная которая намекает на некое хранилище своим именем, но ничего более. А что это может быть? - да вообще всё.
325 3408367
Мне кажется я какую-то хуйню делаю откровенно
326 3408386
>>408309

>Что случится, если ты напишешь sql на sql-е?



Нахуя? Для этого же автомаппер придуман
327 3408387
>>408309

>Ночью приползет Гейтс и откусит тебе жопу?


Нет, ты сам себе жопу откусишь, когда тебе этот эскуэль отлаживать или рефакторить придется.
328 3408392
>>408387
Обертку над эскуэлем отлаживать легче да? Смотреть на сгенерированию скл портянку, а править код на сишорпе. Охуенная абстракция.
изображение.png129 Кб, 520x604
329 3408405
>>408392

Ты просто дурачок, не понимаешь, что автомаппер генерирует гораздо более производительный SQL, который отлаживать не надо
330 3408481
>>408367
само собой. Тащить EF на десктоп это за гранью. не знаю как щас, но когда я пробовал, то у меня от времени старта этого EF глаз дергался. И если во всяких асп.нетах ну "ладно 1 раз стартуем", то в десктопах мучить пользователя сплешскрином это скотство.
331 3408483
>>408367
Ну и лайфтаймы забыл же. А зря
332 3408626
>>408405
Шутка уровня епам.
333 3408630
>>408626
Да что с этим епамом не так?
334 3408637
>>408367
Сейчас твое приложение просто подвисает на старте и хуй знает, что там происходит. На слабой машине тетя срака из бухгалтерии снова тыкнет на иконку, запустит новый инстанс и сломает твою бд нахуй. Миграции надо накатывать из отдельного меню админа, а не при каждом запуске. Алсо на старте надо сначал показать пользователю окно программы с крутилкой, а потом запускать долгие операции в фоновом потоке.
335 3408638
>>408630
Там 17-летние синьоры под руководством 20-летнего тимлида.
336 3408744
>>408637

>запустит новый инстанс


Кто ж ей позволит
337 3409211
>>408481
Я откровенно уже забыл как там без ЕФ что-то с БД делать. Серьезно. Последний раз руками базу создавал лет 5 назад.
338 3409253
>>409211
Для галер это норма, там важен скилл быстро-быстро напердолить очередной финтех очередному арабу и получить бабло. Пока ты будешь проектировать, араб передумает и ты останешься без денег.
Для продукта распиздяйский говнокодинг приводит к тому, что однажды заказчик откажется от вашего софта из-за проблем с производительностью. Тогда кабан выебет менеджеров, а менеджеры - разработчиков.
339 3409261
>>409253
А кого выебут разработчики?
340 3409300
>>409261
А их на мороз
И нанять ии
341 3409310
>>409300
Хитро. ИИ уже ебать не получится
342 3409812
Микрософт же еще 3 года назад ушла из РФ? В чем смысл этого треда?
image.png136 Кб, 1182x724
343 3409815
А вот жабу российские программисты импортозаместили.
344 3409826
>>409812
Oracle тоже ушел. Дальше что? Жаваскрипт тред не нужон?
345 3409831
>>409826
А жаба доступна и без Оракла.
346 3409838
>>409812

>Микрософт же еще 3 года назад ушла из РФ?


VS пока дает скачать. Что тебе еще нужно?
image.png26 Кб, 968x203
347 3409839
Заскринил >>399751
Одебелевшие шарпомухи даже забыли про формат XML (сериализация для которого есть в .NET из коробки с самых первых версий)?
Что дальше, они разучатся работать с БД без Entity Framework?
348 3409841
>>409839
пук
349 3409908
>>409839

>Одебелевшие шарпомухи даже забыли про формат XML


в шарпе много чего есть. только вот оно устарело. Пользуешься BeginXXX/EndXXX или BackgroundWorker? а че так? Вышла лучшая замена?
Так и для xml тоже - попытки заменить хмл в файле проекта не выгорели, зато всякие конфиги и результат публиш - там жсон. Хотя казалось бы.

>с БД без Entity Framework?


тут немного не так. тот кто EF юзает - он и не умел работать без него.
350 3409955
>>409908

>тут немного не так. тот кто EF юзает - он и не умел работать без него


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

Если мне надо будет писать проект с оптимизацией и прочими требованиями я вообще выберу С++, а если будет требоваться какая-то умная херня из матана возьму питон потому что на нем удобнее.
351 3409959
>>409955
у тебя другая крайность. Не обязательно опускаться на уровень SQL, ведь можно опуститься на уровень LINQ и этого будет достаточно.
352 3410004
>>409812
Мы тут не все из РФ, если что.

>>409839

>XML


Один из самых убогих форматов для хранения данных. Спасибо, не надо.

>>409955
>>409959
Просто sql не нужен.
353 3410109
>>408392

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


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

>>408392

>Смотреть на сгенерированию скл портянку, а править код на сишорпе.


Нет, смотреть на код на сишарпе и править код сишарпа.
На генерованный код вообще нахуй не надо смотреть.
Единственный кейс за последние N лет, когда мне приходилось хоть как-то с генеренным EF SQl-кодом взаимодействовать - это скопировтаь из лога запрос и закинуть его в анализатор для построения плана запроса, чтобы посмотреть каких индексов в БД докинуть и все.
354 3410303
>>410109
Ты фулстек мартышка из епама, твой код никогда не попадет на прод. Конечно, тебе sql никогда не понадобился, на локалхосте можно хранить данные хоть в txt файлах и все работает.
355 3410444
>>410303

>твой код никогда не попадет на прод


Работаю бэком в топ-5 банке. Мой код на проде бабки гоняет туда-сюда с очень жестким SLA. И где твой бог теперь?

И я достаточно знаю sql и при необходимости пишу и скрипты и встройки и все, что нужно. Только считаю его неудобным говном и если есть возможность его не использовать, то я ей пользуюсь по полной.
Ну и современный EF достаточно оптимизирован чтобы в 98% случаев не касаться SQL-я (и заодно давать за щеку сектантам "а даппер быстрее").
356 3410505
>>410444

>Мой код на проде бабки гоняет туда-сюда с очень жестким SLA


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

>Ну и современный EF достаточно оптимизирован чтобы в 98% случаев не касаться SQL-я


А потом база делает дедлок и ты обмякаешь со своим EF. В вашем банке дедлоками занимаются дба, ты просто пукаешь в автомапер, вот тебе и кажется, что SQL не нужен.
357 3410542
>>404284

>зато у джаванов

16558390484340.jpg141 Кб, 750x548
358 3410672
359 3410710
Меня на двощах забанили за впн, поэтому не мог перекатить тред.
Спасибо анонче, что перекатил, некст перекачу сам

Мимо прошлый оп
360 3410725
>>410505

>Иными словами, ты пишешь простейший процессинг, где даже джоинов нет.


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

>хватит и кафки


Ну бля, хватило бы, если бы софт от ЦБ умел с ней работать. Там до сих пор ебучая самба с файловым обменом.

>А потом база делает дедлок и ты обмякаешь со своим EF


До-о-о, а ты со своим pure sql прямо таки застрахован от дедлоков. Ты же в курсе что они на уровне транзакций происходят, а EF, тоже через них работает. И позволяет и уровень изоляции настраивать и перехватывать отвалившиеся транзакции и перезапускать их или откатывать. Ну и приложение надо строить так, чтобы у тебя разные потоки за один контекст не дрались или в разные БД круговые запросы не делать (тогда тебя даже ДБА не спасет, а скорее просто придет и пизды даст).

>занимаются дба


Вот, блин, если бы он был у нас еще нормальный.

>в автомапер


Не пользуюсь этим говном.
361 3410751
>>410725

>До-о-о, а ты со своим pure sql прямо таки застрахован от дедлоков.


Когда я поймаю дедлок, я в трейсе увижу вызовы хранимок и по их именам смогу найти место в коде. В случае генерации sql через соплю из IQueryable это импосибл.
Алсо у меня не потоки дерутся за контекст, у меня разные юзеры с разных машин ходят в бд и дерутся за блокировки. Есть юзер в бд для старого портала, для нового, для давайте попробуем эту идею, для 100500 интеграций, для хуя, пизды, джигурды.
362 3410836
>>410751

>Когда я поймаю дедлок, я в трейсе увижу вызовы хранимок и по их именам смогу найти место в коде. В случае генерации sql через соплю из IQueryable это импосибл.


Схуяли. Оно тебе так же трейс распишет и еще и номера строк в коде напишет.

>у меня разные юзеры с разных машин ходят в бд


Ну так это не проблема EF, а хуевая архитектура. Я не работаю на говнопректах где к БД более одного юзера подключается.
363 3411070
>>410836
Лол, трейс из бд, какие номера строк.

>Я не работаю на говнопректах где к БД более одного юзера подключается.


Ты из тинька, что ли?
364 3411081
>>411070

>Ты из тинька, что ли?


Тинь не входит в топ5
365 3411083
>>411070

>Лол, трейс из бд, какие номера строк.


Ладно ок, убедил. В том, что тебе в твоем зоопарке без этого никак. Но опять же - это не проблема EF (да и любой ОРМ), что тебе так приходится выебываться - проблема в хуевой архитектуре.
367 3411153
>>411143
Твоя задача починить дедлок, а не заспамить базу ретраями.
368 3411168
>>411153
А ты не очень умный?
Если у тебя дедлок, то любая нормальная СУБД выберет радомный процесс и просто его убьёт. Второй процесс в результате сможет завершить транзакцию. После чего убитый процесс может повторить запрос.
369 3411280
>>411168
Кокой ты умный.
Дедлок не означает, что твоя база встанет намертво. Система просто начнет охуеть как тормозить с 10 до 10:30 утра, в это время заказчик оборвет все телефоны поддержки, а его юристы откроют договор, раздел про SLA.
370 3411311
>>407816

>А я там ещё сказал использовать InlineArray или fixed-size buffer вместо обычного массива.


Благодарю, анонче, fixed-size buffer зарешал. Ты тут единственный кто что-то внятное предложил. Но тут уже и MemoryMarshal не нужен. Проще работать через указатели как ранее >>400943.
Только ещё нужно атрибут [StructLayout(LayoutKind.Sequential, Pack = 1)] поставить перед структурой, вроде как гарантирует порядок полей.
371 3411320
Как в ваших шарпах узнать размер переменной по её имени? Сайзоф не работает.
372 3411329
>>411320
Через гугол.
string.png10 Кб, 982x34
373 3411454
Как отобразить полностью строку-переменную с ескейп последовательностями без свистоплясок с ручным экранированием каждой последовательности?
Попробовал интерполяцию аля $@"{variableName}", но по прежнему нихуя не работает - в дебагере вижу текст, но дальше ни через тот же View в дебагере, ни в текстбокс в приложении не выводится - просто пусто.
Сижу на .net 7, поднять к 8 с @$ не могу (хотя не уверен что оно мне помогло бы).
Сама строка это сериализированый в бинарь объект который я хочу руками отредактировать (да, я мазохист).
374 3411459
Точнее c# 7 версии, да я легаси некромант.
375 3411564
Как решать проблему обратной совместимости кода под старый дотнет, но запускаемого под новым? К примеру, нужно выполнить код из дотнет коре 2.1 на дотнет 9.
376 3411572
>>411564
Если просто выполнить ничего не меняя, то просто ставишь рантайм/sdk 2.1 и запускаешь (либо делаешь self contained сборку)

Если хочешь именно мигрировать проект, то окрываешь https://learn.microsoft.com/en-us/dotnet/core/compatibility/breaking-changes и проверяешь все брекинг-ченджи по списку для каждой версии (если приложуха asp.net, то дополнительно еще эти разделы смотришь https://learn.microsoft.com/en-us/aspnet/core/migration/31-to-60?view=aspnetcore-6.0&tabs=visual-studio) и исправляешь.

Если ты хочешь, чтобы это было что-то универсальное которое будет билдится везде и запускаться на любом рантайме, то ты скорее всего уже проебался, т.к. надо было изначально под .Net Standart делать. Но можешь попробовать заморочиться если делать нехуй и есть дохуя времени.
377 3411629
>>411564
У нас другой прикол. Есть портал на хуй знает каком древнем дотнете, чуть ли не fw2.0 Портировать его кабан не хочет, кастомера все и так устраивает. Все сторонние библиотеки для работы с пдф, с емейлами, с хуйней малафьей требуют свежий дотнет. В итоге мы выкрутились через юникс вей: все внешние пакеты оборачиваются в экзешники, раскладываются по папочкам и запускаются из старого дотнета через процесс через командную строку, вывод забирается с консоли.
378 3411725
>>411629
Это же пиздец медленно
379 3411892
>>411629
В таких случаях надо просто что-нибудь ломать критичное и когда надо будет чинить, то говорить, что "никак, только на свежем стеке".
380 3412026
>>411725
Похуй, мы же не гугл. Там внутренняя система на сотню пользователей.

>>411892
Гейропейцы оказались очень консервативными ребятами. Работает - не трогай это про них.
381 3412042
>>411329
Твой гугол говорит что нельзя. И действительно
int Жопа;
int s = sizeof(Жопа);
не работает.

Всякие
Unsafe.SizeOf<>();
Marshal.SizeOf();
тоже не работают.

Хотя я не понимаю в чём тут проблема, ведь всё что нужно известно на этапе компиляции. Я могу написать так
int Жопа;
Type t = Жопа.GetType();

Могу написать так
int s = sizeof(int);

А вот написать так
Type t = Жопа.GetType();
int s = sizeof(t);
уже почему-то не могу.

Всё больше разочаровываюсь в це решётке. Правильно картинку рисуют >>404284 , пиздить вас надо.
382 3412047
>>412042
Конечно, нельзя. Sizeof специально спроектирован так, чтобы тонко намекнуть байтоёбом, что нехуй им здесь делать.
383 3412057
>>412047

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


Охуенно сказал.
384 3412073
>>412042
Ты наркоман? Сишарп - это язык для перекладывания джейсонов и попукивания в кафку. Для байтоебства есть свои языки, на которых джейсоны ворочаются через боль и страдания, зато байты складываются легко и просто.
385 3412694
>>412047
>>412073

>Конечно, нельзя.


Зато размер структуры почему-то можно.

Смотрите как байтоёб наебал систему
int Жопа = 5;
Type t = Жопа.GetType();
int s;
switch(t.Name)
{
case "Int32": s = sizeof(int ); break;
case "Char" : s = sizeof(char); break;
case "Byte" : s = sizeof(byte); break;
//...
default: s = 0; break; //пошёл нахуй
}
image.png70 Кб, 880x695
386 3413195
Гойз, в руководстве к монго-биби написано, что реляционные бд это легаси.
387 3413198
>>413195
Срочно беги к кабану и говори, что надо мигрировать как можно быстрее.
388 3413202
>>413195
Нюфаня, подумай на досуге, чем отличается БД от СУБД и почему здесь пишут именно про БД.
389 3413203
>>413202

>БД от СУБД


Это как АКМ и АКСУ. Вроде такой же автомат, но на стиле и помещается в дамскую сумочку
390 3413205
>>412073

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


нахуя ты джейсоны с байтами складываешь? Ты долбоёб?
391 3413219
>>413203
Нет, подумай ещё.
392 3413249
>>411629

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



Почему бы не написать сервис на свежем дотнете, который будет работать с этой хуйнёй? А старый сервис с новым будет общаться по апи или по очередям либо из базы, либо через кролика?
393 3413388
>>413249
Ты прикалываешься? Вместо того, чтобы просто запустить экзешник, ты предлагаешь поднять кубер, кафку и потом делать вызовы по сети? Чтобы что? Мы же не для арабов из дубайска систему пишем, это для тех долбоебов чем дороже, тем круче: ебнуть башню без канализации и стену поперек пустыни, вот это все.
Классхуясс.jpg70 Кб, 798x516
394 3413431
Не погромизд. С++ знаю плохо, с# ещё хужЕЕ.
Код на пикриле не окончательный, сократил для двача.(В классе Bones дохуя полей)
Код отработает один раз и будет забыт.

Вопрос: Как мне заполнить (работать) с полями такого типа как у "tf.bone[0].namebone ?
Выдает ошибку на 18строке.
Если работать только с dzMorph нет проблем, и пишет в json без проблем. Уроков, с кодом подобным этому не нашел.
395 3413439
>>413431
Тебе не стоит стараться дальше, серьезно, у тебя базового понимания нет. Подскажу одно. Твой код это все равно что складывать в пакет продукты, но при этом ты пакет с собой не взял и не купил, ты стоишь со слюной на подбородке и делаешь руками странные машущие движения
396 3413444
>>413431
Окей. Я не буду токсить.
Давай разберем твой код.
У тебя есть класс dzMorph
У него тут 2 свойства. Ни одно из них не проинициализировано.
Т.е. создавая новый экземпляр и получая объект - ты получаешь значения по умолчанию.
В случае ссылочных типов(строка и список именно такие) - это null

В общем. Я хотел начать расписывать, но заебался. По скриншоту смотри.
397 3413462
>>413431
Разве для даза можно писать скрипты на дотнете?
398 3413489
>>413431

Проблема в том, что ты пытаешься руками создавать объекты без использования автомаппера. Именно из-за таких как ты на всех серьёзных проектах запрещают вызов new.

Тебе должно быть стыдно
399 3413490
>>413431

Проблема в том, что ты пытаешься руками создавать объекты без использования автомаппера. Именно из-за таких как ты на всех серьёзных проектах запрещают вызов new.

Тебе должно быть стыдно
dzVisualStyle.jpg73 Кб, 409x793
400 3413602
>>413444
Спасибо чувак. Ты лучший. Да, С классами у меня беда совсем. На С++ я обходился и без них прекрасно. Тем более, что большинство написанного кода одноразовые, нахер нужно его шлифовать, отработал раз и выкинул.

>>413462
У даза в базах есть файлы в которых описаны повороты лицевых костей при "морфе" (в классическом морфе двигаются vertexы, здесь как в анимации поворачиваются кости(joints)).
Нужно только собрать всё необходимое в одном файле, и использовать его как базуданных в Maya plugin при анимации Дазовских фигур в Майе. Шейдерные плагины я уже делал (полный аналог daz VisualStyle 14398) небольшой опыт есть. То есть код на ДотНете для создания базы данных, а не плагина, но вроде бы в документации Майи написано, что можно. А у Даза собственный скриптовой язык, С-подобный.
401 3413906
Зашел просто что бы написать

"КАК Я СУКА НЕНАВИЖУ MVVM" ёбаная игрушка дьявола.
402 3413932
>>413906
Критикуя иди работать на завод предлагай
403 3413953
Пацаны. Мне очень грустно.
Сделайте ревью пожалуйста...
https://pastebin.com/vEvBtUv8
404 3413960
>>413953
public override Boolean Equals([NotNullWhen(true)] Object? obj) {

за такое на кол.
ты либо не делай Equals, либо делай как надо. А если подозреваешь что твоя структура будет использоваться в списках, то IEquatable мастхев.
405 3414280
>>413953
спросил ии вместо тебя
https://markdownpastebin.com/?id=7e3113f0cb7c42d5bc0c65e66fdd1cba

хотя он тот еще критик, зато ему не влом
{58416386-9BC6-4723-9877-2855C1DA0068}.png29 Кб, 1636x223
406 3414288
>>414280
Я вот как раз из-за советов ИИ в духе прикриплейда и не спрашиваю его.
Типа ну вот в чем смысл этой проверки, если я кину абсолютно то же исключение, что кинет подкопотный массив? Вот зачем? Вот нафига?
407 3414295
>>414288
он кинет исключение без внятного описания.
408 3414302
>>414288
а вот дипсик
https://markdownpastebin.com/?id=9ced4e18c6654aadbc6792725c071328

он тоже не нашел ничего крамольного в Equals(object)

и этими ии хотят заменить погромистов? 100 раз ха
409 3414446
Попробовал почитать [Эндрю Троелсен, Филипп Джепикс] – Язык программирования C# 9 и платформа .NET 5

вообще нихуя не понятно. С первой страницы кучка нюансов, нет, хуйнет пиздец.
Страуструп в 100 раз легче пишет.
410 3414486
>>414446

>платформа .NET 5


Нахуя настолько протухший материал читать? Я понимаю еще Рихтера, т.к. его книга унакальна в некоторых аспектах. Понимаю если про .Net Framework если приходится в легаси ковыряться. Но .Net5 ? Который неактуален уже х.з. сколько и даже не LTS, зачем?
411 3414492
>>414288
Я дропнул использовать подсказки от ИИ, когда заебался искать в фреймворках советуемые им выдуманные методы.
412 3414507
>>414486
Так почти ничего не изменилось со времен net 5. Новыми фичами мало кто пользуется
5оо35н2н2н2н.JPG13 Кб, 790x65
413 3414510
>>413932
чел, даже LLM в ахуе от того что кожаные мешки придумали
414 3414515
>>414510
Так а причем тут MVVM что INPC такой
415 3414652
>>414510
Чего много-то там?
Базовый класс ObservableZalupa и все считай.
А можно и без него, берешь DynamicProxy и делаешь хоть все свои объекты INPC если так хочется. Вьюшкам - через DI передаешь уже прокси объектов.
Или берешь и MVVMToolkit. Просто вешаешь аттрибут, тебе кодген насрет(лично не советую, потом работать с таким кодом невозможно).
Все.
Или в разметке написать
<TextBlock Text={Bind Text}> - дохуя много?
Ну хуй знает.
Пописал бы на формах, где как дебил за всей хуйней следишь - и понял бы насколько меньше бойлерплейта в майковском MVVM
2025-03-2414-06-19.png12 Кб, 423x488
416 3415044
Нейросети начали потихоньку выдавливать специалистов. "About Microsoft Visual Studio" теперь переводится как "Около Microsoft Visual Studio". У нас скоро будет лучше, чем у отцов в 90х, скоро будем охлаждать траханье.
417 3415085
>>415044
А нахуя ты русский интерфейс вообще включаешь?
418 3415102
>>415085
Смотрел как локализуются категории свойств объекта в WPF.

>[Bindable(true), Category("Common")]


Но ты не думай, что на инглише тебя обойдет проблема, тенденция выстроилась. Раньше я такого не наблюдал, все было переведено людьми.
419 3415129
Есть вопрос, анончики
Два года назад поступил на работу с около нулевыми знаниями разрабом C# .net core 3.
С тех пор разработал кучу виндоус служб, апишек, а также мигрировал их с тройки на шестерку, а затем на восьмерку.
Отлично знаю синтаксис, рефлекцию, EF Core, умею безопасно работать с голыми sql, automapper и прочее.
Однако погряз на зп 100к и разработке монолитных и "модульных" (тот же монолит, но разбитый на несколько более мелких) апишек, при этом у меня начинают всплывать претензии на уровень middle
Так вот, есть ли смысл искать курсы на изучение микросервисной архитектуры или лучше изучать самому на основе книжок или видосиков с ютуба?
Еще хочется изучить брокеры сообщений и системы кэширования по типу редис
420 3415135
>>415102

>Но ты не думай, что на инглише тебя обойдет проблема


Хотя что тут думать? Вижуал студия медленно умирает, как бейсик.
Создаешь VSIX-проект, сразу в ебало летит ошибка:

>Не удалось найти стабильный пакет >Microsoft.VSSDK.BuildTools с версией (>= 17.13.2127)


> - В nuget.org обнаружено несколько версий (482) [ >Ближайшая версия: 17.14.1043-preview2 ]



Хуй с ним, обновляешь нюгет пакеты путем даунгрейда и установки той же версии, пытаешься сделать темплейт для проекта на .NET 9, а потом понимаешь, что VSIX-проект создан на NetFramework 4.8
@
Жидко обтекаешь.
421 3415162
Жаль, что в авалонии нет x:Bind. Неужели его так сложно реализовать? Там ведь значительный выигрыш в производительности в сравнении с Binding.
422 3415206
>>415044

>VS2022


Ну а хули ты хотел от этого поделия, если ещё год назад я часто видел:

>ОшибкаMSB3027не удалось скопировать .... Превышено допустимое число повторных попыток (10). Произошел сбой. "Microsoft Visual Studio 2022 Preview (8868)" блокирует этот файл

423 3415218
>>415129
Микросервисы - мертвы.
Так что забей.

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

Если так хочется - ну, пересиди годика 3-4, кабаны забудут, рынок выпрямится, и под новым именем им опять продадим)
424 3415331
>>415135
Пиздец, захотел сделать Wizard - прошел все круги ада. В VSIX-проекте нужно генерировать подпись, потом получать ключ. Темплейт собрать в архив, редактировать архив вручную и прописывать этот ключ. Потом в VSIX-проекте добавлять этот архив. Ебануться.

Если хочешь на автомате собрать темплейт, то хуй там.
425 3415338
>>415129
Микросервисной архитектуры не существует. Микросервисы - это такая методология разработки для галер, когда ты нанимаешь любых васянов с любым стеком и они быстро-быстро пердолят финтех для араба. Потом араба отпускает, он переключается на строительство золотого унитаза высотой 20 метров, а код идет в мусор. Все попытки использовать микросервисы на проде заканчиваются эпичным фейлом и переписыванием этого говна на классическую систему из классических серверов.
Кароч читай кабанчика.
426 3415401
>>415129

> погряз на зп 100к


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

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


> Еще хочется изучить брокеры сообщений и системы кэширования по типу редис


Учиться всегда имеет смысл, знания лишними не бывают. Но нормальных курсов ты не найдёшь, максимум вкатунскую хуйню типа переслать id заказа через кафку из "Заказов" в "Платежи", чему можно по тому же ютубу научиться за вечер.
427 3415427
>>415218
>>415338
Да я и так в галерах, мб получилось бы съебаться в места чуть по лучше
>>415401
Понял

Спасибо за ответы
428 3416848
https://www.youtube.com/watch?v=SZnCG6m1Og0
Вот, даже усатый говорит, что медиатр не нужен. Я правда видос не смотрел, но уверен, что именно это он и говорит.
429 3416894
>>416848
он говорит что он пишет бложики и потому ему не нужен. грит -юзайте фастендпоинт
хз зачем фастендпоинт когда есть божественный OneOf
430 3417713
https://github.com/dotnet/runtime/pull/113976

>[RuntimeAsync] Move runtime async to the main repo



Возможно runtime async релизнут в 10-ке.
431 3417758
>>417713
можешь в 10456067 словах пояснить что это?
432 3417784
>>417758
Сейчас весь код (стейт машина и т.д.) для asyncа генерит C# компилятор (Roslyn), для рантайма он становится обычным кодом. Теперь основной код будет генерить JIT и VM будет "осознанно" взаимодействовать с ним (JIT/VM доступно больше информации/возможностей чем из IL). Производительность должна быть лучше.
https://github.com/dotnet/runtime/issues/94620
https://github.com/dotnet/runtimelab/blob/feature/async2-experiment/docs/design/features/runtime-handled-tasks.md
433 3417788
>>417784
я же просил пояснить...
434 3417804
>>417784
Покажите этим долбоебам нодежс и прочитайте краткую лекцию как работает субд. Главный источник тормозов на проде - это блокировки в бд, код можно писать хоть на джаваскрипте, что и происходит. Хуле они там будут оптимизировать? Мне эта суета напоминает долбоебов из яндекса, которые пукают в кафку на С++, типа так быстрее пропукивается.
435 3417901
>>417788

> я же просил пояснить...


Читай начало и конец, игнорируя скобки.

> Сейчас весь код для asyncа генерит C# . Теперь основной код будет генерить JIT и VM будет "осознанно" взаимодействовать с ним. Производительность должна быть лучше.


Базарю, сразу станет понятнее. Мидлом станешь.
436 3417955
>>417901
Не знал что перечитывание непонятного текста делает его понятным. не знал....потому что не делает.
image52 Кб, 998x634
437 3418075
Кто-нибудь знает, для asp.net core есть библиотека, которая позволяет легко добавить админку для управления базой? Типа как в Django. Нашёл одно простенькое решение "core-admin", но может есть что-нибудь покруче.
438 3418408
>>418075
В аспнете так не принято, он же для многолетнего энтерпрайза, где сразу понимают, что ничего готового не подойдёт и придётся писать своё решение с нуля, а подобные админки там всё равно запретит отдел кибербезопасности. Вот питоны/руби/пыхи, которые решают задачу "надо по-быстрому сделать сайт и отдать клиенту", такое имеют в избытке.
439 3418457
>>418075
Чел скачай тебе дбивер.
440 3418458
>>418457
ога. а потом накосячь в доступе к бд на сервере. заходи кто хочет, бери что хочешь.
441 3418467
>>418458
Так продовая БД не должна быть доступна нигде кроме внутреннего контура.
На машину внутри него заходим по RDP и работаем.
442 3418561
>>418467
RDP - это продуктовая тема, когда к кастомеру приезжает ваш инженер с ноутом, ты заходишь по RDP на его машину, оттуда через другой RDP на тачку во внутренней сети, с нее снова по RDP на сервер бд. Потом через эту ебаную матрешку в режиме слайд-шоу пытаешься понять, хуле грид на главной начал тормозить. Заодно приходит просветление, почему EF - это кал говна и почему надо работать с бд через хранимки и дапер.
Продуктовая тема для дотнета больше не актуальна. В 2025 году дотнет остался только в нише аутстаф галер с паджитами.
443 3418571
>>418561

>почему EF - это кал говна и почему надо работать с бд через хранимки и дапер


Как же вы заебали неосиляторы.
444 3418583
>>418571
Не отвлекайся, гребец, финтех для араба сам себя не напишет.
445 3418645
>>418408
>>418457
Как я понял, сейчас админки генерируют через Radzen Studio. Он создаёт отдельный проект с использованием Blazor.

https://www.youtube.com/watch?v=_F-CUWxYvCA
446 3418657
>>418645

>Blazor


Неужели кто-то пользуется этим говном? Это же литерали хуйня без задач.
447 3418669
>>418657

> >Шарп


> Неужели кто-то пользуется этим говном? Это же литерали хуйня без задач.

448 3418677
Пацаны. Мне грустно.
Мне нужно вдохновение.
Я чувствую, что теряю желание кодить, потому что все что пропал момент изучения. Я просто сажусь и делаю.
Дайти примеры красивых-интересных проектиков, чтобы посмотреть, повосхищаться и получить заряд положительных эмоций для того чтобы продержаться еще годик.
Последнее красивенькое что смотрел - Nancy и собственно Kestrel
Хочу чего-нибудь похожего. Чтобы смотришь такой и вах

Думаю кстати сменить кодстайл чтобы оно было посвежее уже у меня. Ну, для начала - все поля - унесу вниз класса. Приватное - тоже вниз. Сверху оставлю только публичную часть.
449 3418687
>>418677

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


Знаешь анекдот про бордель и кровати?
image.png1017 Кб, 1243x692
450 3418731
>>418677

>Ну, для начала - все поля - унесу вниз класса. Приватное - тоже вниз. Сверху оставлю только публичную часть.

451 3418732
>>418677

>пропал момент изучения.


Попробуй ФП
452 3418798
>>418645
Нахуй нужны эти админки если можно скачать себе дибивер у которого функционал в 100 раз пизже, а сделать какую-то микрохуйню проще через терминал.
453 3419082
Всем привет, подскажите пожалуйста хорошие ресурсы для изучения юнит тестирования на шарпе, да и интеграционного тоже
Screenshot20250329214351Chrome.jpg279 Кб, 1812x1331
454 3419099
https://habr.com/ru/articles/895588/

Интересно насколько сложно иметь 47 хромосом ?
455 3419230
>>419099

>аи картинка с эльзой на десктопе


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

>Дичь седьмая: рефлексия без рефлексии


>How about changing private fields without unsafe or reflection? I bet you thought C# was type safe. Nothing is truly black and white.


>[StructLayout(LayoutKind.Explicit, Pack = 1)]


Брать коммент дауна с реддита, который думает что раз нет unsafe то этот код "безопасный" (как я и говорил в предыдущем треде >>3386734 → : "зато без unsafe").
457 3419288
>>419099
Я чет не понимаю а как иначе должно было бы произойти?
Ты создал экземпляр определенного типа.
Он удовлетворяет интерфейсу IReadOnlyList<T>
Ты переменной с типом IReadOnlyList<T> присвоил ссылку на объект.
Далее явно скастовал обратно к листу и добавил.

Ессно язык видит, ну, это и так лист, так что - ну ок, добавляй. Был бы там не лист - кинулся бы какой-то InvalidCastException

Или кастить вообще нельзя? Но эт будет откровенная залупа.
Типа, особенно если полезть в старое апи, где половина всего через object вообще делается.

Ну и в жаве - я постоянно видел +- такое же. И апкасты и даункасты.
Не понял короче что тут неправильного. Типа если ты до интерфейса свел, объект-то остается тот же самый. Что блин должно произойти-то?
458 3419315
>>419288
Я хуй знает чего он хотел. Это нормальное полиформное поведение, другой вопрос что за такое тебя по ебалу стукнут.
Мне кажется чел просто не понимает что интерфейс это не класс и что он не может создать переменную такого типа, только привести к ней.
Он когда касты делал ему бы нормальная IDE сказала что тут у тебя возможно null.

Также он похоже не понимает что readonly относится не вообще к объекту, а только к текущему контексту. Если тебе нужна истино неизменная коллекция, то необходимо использовать массив или спецальные типы типо замороженых списков и словарей.
459 3419338
>>419082
Владимир Хориков - Принципы юнит-тестирования
image.png34 Кб, 767x401
460 3419529
>>419099
Вот бы сейчас float/double через == проверять, чтобы на ровном месте себе ебли на неделю найти.
20250330-1454-35.1477230.mp4683 Кб, mp4,
570x332, 0:07
461 3419698
имгуйное окно почему-то отображается нормально только в левом верхнем углу экрана, правее хуй переместишь, как фиксить?
462 3419772
>>419698
Переписывать на Eto.Forms.
463 3419918
>>419698
Viewport/scissor неправильные?
9.mp41,3 Мб, mp4,
1280x720, 0:05
464 3419948
>>419698
в мод менеджере для сралдурс срейт сри тоже этот баг есть
image.png677 Кб, 1200x1086
465 3420662
Буду вкатываться из моего любимого Шарпа в Питон, чтобы потом пилить приложения на стыке ML.Net + Python. Годный план?
466 3420664
>>420662
В 2025 году дотнет окончательно захвачен POORNA SOYSAми, уже похуй куда выкатываться.
467 3420665
>>407041

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



Hate. Let me tell you how much I've come to hate you since I began to live. There are 387.44 million miles of printed circuits in wafer thin layers that fill my complex. If the word 'hate' was engraved on each nanoangstrom of those hundreds of millions of miles it would not equal one one-billionth of the hate I feel for humans at this micro-instant. For you. Hate. Hate.
468 3420935
>>420662
Шарп умирает, анон, без шуток. Вкатывайся в жаву.
469 3421220
>>420935

>Шарп умирает, анон, без шуток. Вкатывайся в жаву


Ты меня траллируешь.
Жава - это писать аннотации Спринга вместо программирования и хуевая документация из говна и намеков.
Я на Шарпе работаю уже 6 лет на разных проектах, и мне заебись. Да, я понимаю, что Жава - больше спроса, но я лучше потрачу время подтянуть Реакт или, что лучше, вкачусь в Питон и буду писать АИ на связке ML.NET+Python
470 3421356
>>419772
Етоформсы с авалониями не immediate как imgui, так что не катит.
471 3422085
MassTransit, MediatR и AutoMapper going commercial:
https://www.reddit.com/r/dotnet/comments/1jpyczi/masstransit_going_commercial/
https://www.jimmybogard.com/automapper-and-mediatr-going-commercial/

Кто там срал на MediatR и AutoMapper - настал ваш звёздный час.

Пиздец как же шарподебилов нас ебут...
472 3422088
>>422085
Я ими не пользовался, а теперь и не буду, муахаха. Справедливости ради следует отметить, что я и не гребло на галере, а прострой хобби-бездельник с 3,5 петпроектами.
473 3422091
>>422085
А FluentValidation когда станет коммерческим???
474 3422153
>>422085
Мне похуй, я перекатываюсь на голенг. Пусть с этим говном индусы ебутся.
475 3422229
>>422085
Майкрософт их тупо купит и сделает частью дуднета. Можете скринить этот твит.
image.png65 Кб, 277x312
476 3422231
>>422153
Почему один из создателей голанга так похож на Чарльза Мэнсона ?
477 3422785
>>414446
Троелсен не для начинающих. Язык и платформу лучше учить по другим книгам.
Эта книга - сборная солянка обо всём понемного. То есть по ней ничего конкретно не выучишь. Но почитать может быть полезно, когда уже имеешь некоторый опыт, чтобы узнать, что ещё имеется в дотнете.
478 3422786
>>422085
АвтоМаппер и Медиатр - две худшие библиотеки во всем дотнете. Они абсолютно бесполезны. Их применение только увеличивает объем кода, за что их и любят нубы.
479 3422798
>>418561
EF зачастую генерирует код эффективней, чем разраб среднего уровня.
480 3422804
>>422798
Есть статистика?
481 3422807
>>422804
Есть авторитетное мнение анона с двача.
482 3422808
>>422807
авторитетное мнение
@
признался что пишет запросы хуже кодогенератора
483 3422814
>>422798
В дотнете есть устойчивый тренд на отупление разработчиков, как индус пришел, так и почалось. Индусы все превращают в говно. Поэтому все опытные съебывают с этой тонущей лодки.
484 3422821
>>422814
Отупление -- это когда не надо ебаться с инструментом, чтобы он сделал то, что тебе надо?
Можно, пожалуйста, примеры, где идёт поумнение и каким образом? Спасибо.
485 3422849
>>422821
Просто открой вакансии хоть в тот же амазон, который в штатах считается зашкваром для индусов. Потом сравни с вакансиями на сишарп где угодно. Подумай, чем инженер отличается от мартышки с аутстафа.
Можно сколько угодно рассказывать на маняконференциях какой дотнет клевый и быстрый, но в жизни на дотнете пишут только убогие калопроводы на галерах.
486 3422969
>>422821

> Можно, пожалуйста, примеры, где идёт поумнение


В школе.

> каким образом?


Путём образования нейронных связей в голове школьника.

> Спасибо.


Приятного аппетита.
image.png102 Кб, 889x683
487 3423039
база или кринж?
488 3423078
489 3423485
>>422849
Не понимаю, что ты имеешь в виду.
Я их открывал пару лет назад, когда искал работу и не замечал никакой разницы.

Давай с конкрентными примерами, пожалуйста.
490 3423486
>>423039
А чё, нет встроенного списка кодов, чтобы самому не делать?
491 3423523
>>423486
да хуй знает, я ньюфаг и для моих целей подходит
492 3424812
Можно ли на сишарпе писать игры, не используя всякие юнити?
493 3424814
>>424812
Игры можно писать хоть на 1С. В чём вопрос?
494 3424820
NHIBERNATE
@
ДОСТАТОЧНО
495 3424827
>>424814
Какой фреймвёрк для этого используется?
496 3424829
>>424827
Это тебе не веб, чтобы был свой фреймворк на все случаи жизни.
497 3424845
>>424829
А как тогда выводить графику на экран?
498 3424859
>>424845
Через биндинги к OpenGL/Vulkan.
499 3425099
>>424827
MonoGame
500 3425293
>>424859

>OpenGL


Как заебал форс этого мертвого говна. Вам Кармак ещё лет 15 назад сказал, что оно мертво. До сих пор труп ебут. В ахуее с этой инертности.
Используйте лучше дх11.
501 3425348
>>425293
Dx11 только для винды, vulkan слишком низкоуровневый. Вот и получается, что альтернатив opengl нет
502 3425434
>>424845
От игрульки зависит.
Так - берешь SDL и погнали.
Чисто 2д интересует - берешь SFML и погнали. С ним можно и 3д со всем этим вот, но под 2д там кучу всего готового, бери пользуйся.
Дохуя выебистый - берешь и делаешь свои обертки для работы с любым графическим апи. Шарп позволяет.
Ебанат - бери MonoGame

Но вообще, если ты игрульку делать хочешь, то бери юньку и не выебывайся. Блядь. Типа серьезно. Че за тупая хуйня? Какой вообще поинт отказываться от юньки, если ты не топ студия у которой миллиарды деняк? Все есть. С коробки. Куча готового кода. Куча готовых ассетов. Уроков. Бери и делай. Не хочу. Хочу говно жрать и сам велосипеды делать бесплатно, просто чтобы было.
503 3425449
>>425293

>Как заебал форс этого мертвого говна. Вам Кармак ещё лет 15 назад сказал, что оно мертво. До сих пор труп ебут. В ахуее с этой инертности.


>Используйте лучше дх11.


GL можно много за что критиковать, но D3D11 тоже не без изъяна. Если брать GL, то у него есть некоторые доп. возможности относительно D3D11, да и можно будет плавно перейти на Vulkan. Нормальных туториалов по D3D11 нет, документация - говно, инфу найти в разы сложнее чем для GL. Но сам API - да, легче/удобнее/логичнее (но не без косяков).
504 3425459
>>404045

>Про какую проверку на null тут говорят? Разве в машинном коде автоматически все ссылки проверяются на null? Я в первый раз про такое слышу.


>В прошлом треде об этом говорили, но в итоге не привели доказательств этому.


В прошлом треде вроде говорили про проверку аргументов на null, если аргумент не помечен как nullable (как в котлине). Ну котлин вроде проверяет (х.з. смотрел в Compiler Explorer java байткод), так что в asm тоже должна быть. Или ты про NullReferenceException при обращении к null переменной? - там проверки тоже есть в asm, но подругому.
505 3425467
>>425434

>Какой вообще поинт отказываться от юньки


Если геймдев это просто хобби, то гораздо интереснее может быть самому попердолиться. Но опять же зависит от того, какой именно аспект геймдева более интересен. Если интересно воплощать какой-то уже имеющийся сюжет или просто геймдизайнить, то тогда конечно лучше готовый движок брать. А если тебя просто прет от того, что ты смог кучку пикселей на экране анимировать и подвигать, тогда прикольнее все самому примитивами сделать.
изображение.png19 Кб, 753x175
506 3425691
>>425449

>да и можно будет плавно перейти на Vulkan


Можешь начать с дх11 и плавно перейти на дх12.

>Нормальных туториалов по D3D11 нет


Есть на ютубе базовые. Есть книга Луны, с самых основ, лежит на либгене, есть книга "Practical Rendering and Computation with Direct3D 11" от трёх авторов.
ap.png126 Кб, 3074x846
507 3425926
508 3426150
>>401329
>>401745

>Хотя много кода полагается на то что если структура unmanaged, то поля будут последовательно (с паддингами если нужно; если LayoutKind.Auto не стоит), так что вряд ли они будут этот момент менять (да и смысл).


Ладно, я обосрался, походу только начиная с .NET 7, unmanaged == blittable:
https://github.com/dotnet/runtime/pull/61759

>Change all "unmanaged" (no GC fields) sequential types to have sequential layout.

509 3426478
>>425691

>Есть на ютубе базовые. Есть книга Луны, с самых основ, лежит на либгене, есть книга "Practical Rendering and Computation with Direct3D 11" от трёх авторов.


Если искать, то я много раз "слышал": Фрэнка Луна и/или rastertek.

>Можешь начать с дх11 и плавно перейти на дх12.


И ахуеть что там общее только слова в именах API. Я бы поспорил на счёт "плавно перейти на дх12" (так-то "плавно с GL на Vulkan" - тоже немного пиздеш). Я бы в общем описал проблему с D3D12 так: куски D3D11 надо было выкинуть (например, понятия SRV/UAV), а не тащить в низкоуровневое API и не пытаться по-колхозному упростить его (например, старые барьеры). По сравнению с D3D12, D3D11 идеальный API. Я бы мог составить километровый список того что мне не нравится в D3D12 (Vulkan тоже не безгрешен). Ну и как для низкоуровнего API у него слишком мало документации (я вкурсе про отдельные страницы на msdn, 11.3 functional spec, про DirectX-Specs на github и т.д. (можно ещё конечно палочкой потыкать в debug layer чтобы узнать что можно, а что нельзя)). Vulkan с одними только своими Valid Usage секциями ебёт GL/D3D11/D3D12 вместе взятые.

Эти дауны 3 года добавляли описание (там такое описание что лол блять) аргументов в доки для Enhanced Barriers.
Через 20 лет они заметили что у HLSL никакой спеки то и нет.
Точных семантик почти всех операций (D3D12 API и HLSL/DXIL) просто не найти (можно пойти в discord, можно "проверять" debug layer'ом, можно "проверять" undefined behaviour'ом (походу AAA разрабы продолжают так делать), и т.д.).


Пригорело. Просто я только и слышу какой Vulkan хуёвый (примеров мало, extension hell и т.д.), а D3D12 - заебись.
510 3426569
>>426478

>Просто я только и слышу какой Vulkan хуёвый (примеров мало, extension hell и т.д.), а D3D12 - заебись.


Где ты это слышишь? Весь интернет наполнен красноглазыми дебилами с арчами вулканами впопенсурсами.
511 3426586
>>422085

Я предлагал удалить автомаппер их из интернета, но меня в очередной раз не послушали!
512 3426910
Уже 5+ лет опыта на текущем стеке, пристал к менеджменту о промоушене до сеньора-помидора. Понятно попросил не в тот же момент меня промоутить, дайте фидбек, план составим, а потом через годик там и повысить. А мне по сути ответили "скажи спасибо, что мы тебя не уволили, пидор".

Такие дела, малята.
513 3426912
>>395748 (OP)
Кто-нибудь может посоветовать хорошие курсы по авалонии?
514 3426914
>>426912
Лол
515 3426947
>>426912
спрашивай ии. они тебе какие хошь курсы придумают.
516 3427104
>>426910

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


"Спасибо" хоть сказал?
517 3427105
>>426910

>о промоушене до сеньора-помидора


А зачем ты просил "промоушен", а не подъем зарплаты?
518 3427113
>>427104
Нет. Вот такой вот я грубиян

>>427105

>А зачем ты просил "промоушен"


Пора бы уже
519 3427262
>>427113

>Пора бы уже


Это по какому признаку "пора"?
Я реально не понимаю.
Да и фидбек от манагеров - показателен.

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

>Какой вообще поинт отказываться от юньки


Я слышал, если её используешь, то попадаешь в долговое рабство к разработчикам юньки. Всё это не бесплатно.
521 3427699
Нужен совет wpf разрабов. У меня есть большая текстура, условно 20000х20000. Текстура поделена на тайлы 64х64. Каждый тайтл хранит массив байт. Собственно при работе с самой текстурой и ее обновлением проблем нет, все работает отлично и быстро. Но я не могу понять, как все это вывести в UI. Если к примеру создать сетку из WriteableBitmap-ов то все будет еле пердеть, даже если я к примеру задам им размер 256х256. Не знаю что и делать.
522 3427848
>>426569

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


Ну так если проигнорировать вскукареки "за Vulkan" (те которые вызваны: fuck Microsoft, fuck Windows, слава опенсурсу, другое (нужное подчеркнуть)).

Я скорее триггернулся на "мертвого говна". D3D11 так то тоже в какой-то степени мёртвый (хотя всякие DLSSы, FSRы и т.д. кинули GL сразу же). Да и по материалам (доки, книги (тут наверное ничья, если не перевес в D3D), ответы на вопросы, йоба-движки на github, презентации (слайды, видео) и т.д.) - у GL и VK их значительно больше чем у D3D11 и D3D12. Корочее выбирая D3D11 - получаешь красивый, логичный API, стабильные драйвера (на пограничных случаях), и т.д. Выбирая GL - получаешь много материала от комьюнити, каждый метод 300 раз обсосанный на stackoverflow, презентации и т.д.
17442304092400.png1,3 Мб, 1840x1035
523 3427987
С одной стороны синтаксический сахар, который местами нахер не нужен, с другой захочешь объявить константный массив в классе - охуеешь. Пиздец блять, ёбанное днище.
524 3428005
>>427987
тебе ии дали - пусть он пишет за тебя
525 3428009
>>427987
Опять выходишь на связь?
526 3428021
>>427987

>константный массив


Массив содержащий только константы? Массив являющийся compile-time константой? Что это за зверь такой "константный массив"?

>захочешь объявить константный массив


Зачем?
527 3428026
>>428021
А он видать не знает что массив это не тип данных, а структура данных и любой массив по определению константный по природе в том плане что чтобы сделать +1 необходимо аллоцировать новый массив.
528 3428034
.NET 10 Preview 3 вышел
https://github.com/dotnet/core/discussions/9846

Там есть новая интересная фича языка - Extension members:
https://github.com/dotnet/core/blob/main/release-notes/10.0/preview/preview3/csharp.md#extension-members
529 3428050
>>428005
У меня его как раз забрали.

>>428021

>Массив содержащий только константы?


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

>Зачем?


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

>>428026

>чтобы сделать +1 необходимо аллоцировать новый массив


Что ты такое несёшь? По-твоему когда ты элемент массива меняешь весь массив перезаписывается?

>>428009
А как не выйти, когда вместо того чтобы написать просто

const int [] пук = { 1, 2, 3 };

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

public static readonly System.Collections.Immutable.ImmutableArray<int> пук = System.Collections.Immutable.ImmutableArray.Create<int>(1, 2, 3);
image.png17 Кб, 826x174
530 3428059
>>428050

>const int [] пук = { 1, 2, 3 };

image.png97 Кб, 2112x568
531 3428063
>>428034
Выглядит как говно. Нахуя нужен дополнительный блок, если без него меньше кода писать надо?
532 3428064
Гайз, я нашёл классную библиотеку: https://automapper.org/

Написано, что она неплохо оптимизирует запросы к postgresql, и с её помощью можно написать гексогональный CQRS с эвент-сорсингом.

Просьба переписать на неё текущие проекты
image.png22 Кб, 926x128
533 3428065
534 3428141
>>428063

>Нахуя нужен дополнительный блок


Чтобы вызвать как Extensions.WhereGreaterThan()? Да и вроде логика есть: эти методы должны быть в каком-нибудь классе, да и к тому же extension блок - безымянный.

Походу пизда Extension everything, будет Extension Chleny.
535 3428310
>>428063
чтобы объявить source же. И внутри этого блока юзать. В примере расширяется свойством.
Так что более правильный вопрос - нахрена нужно это класть в класс Extensions
Впрочем, тут вопрос совместимости. Раньше клал в такие классы - и теперь будешь класть, докладывать.

хотя до котлин им еще очень очень бесконечно далеко.
536 3428402
>>428310

>И внутри этого блока юзать



хуйня какая-то, просто всё вправо сдвинули. Мне вообще не в падлу было писать this IEnumeable<T> self
537 3428404
>>428050

>public static readonly System.Collections.Immutable.ImmutableArray<int> пук = System.Collections.Immutable.ImmutableArray.Create<int>(1, 2, 3);



Ты в Блокноте код пишешь? Угашенный ты об клавиатуру. Любая IDE подскажет, как упростить код.
538 3428405
>>428310

>хотя до котлин им еще очень очень бесконечно далеко.



Котлин невыразительный очень. У C# приемущество в выразительности, поэтому им и пользуемся
539 3428443
>>428405

Гайз, я нашёл классную библиотеку https://github.com/jbogard/MediatR

Написано, что можно забыть про то, чтобы регистрировать сервисы в DI и просто сделать, чтобы всё было командой. Даже не надо думать, какой сервис её обработает, всё автоматически происходит
540 3428502
>>428443
автошиттер и мудятор юзают только конченые имбецилы.
Эти библиотеки были написаны имбецилом, у которого за спиной ни одного нормального реализованного проекта.
Вменяемые гайзы давно используют тримминг и АОТ, в то время как имбецильные пользователи аутопупера и мордатыра плачут над последствиями тормознутой рефлексии.
Какое счастье, что эти библы стали платными! Наконец-то тупорылые джуниоры перестанут тянуть их в проекты. Код станет чище, проще, быстрее.
541 3428595
>>428502

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

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

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

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

Нахуя я раньше писал код руками - был долбоёбом.
542 3428948
>>428059
пики

>>428065
Не сильно лучше моего варианта.

>>428404
Да.
https://godbolt.org/
543 3429011
>>428948

Какое безобразие! Просто возмутительно!
544 3429203
>>428948
а ты не делай так. не меняй содержимое массива. ты знал куда шёл. не нравится - пиши на синклер бейсике )

на деле я главный хейтер шарпа в этом треде (из шарпистов), и про списки/массивы особенно.
545 3429222
>>429203

>на деле я главный хейтер шарпа



ты петух просто
546 3429238
>>429222
а ты значит профессиональный говноед.
ну что ж, таких тут много.
547 3429241
>>429238
А что тебе не нравится в шарпах, петушара? отличный язык, выразительный
548 3429274
>>429241
он не продуман. делали "своя жава с блэкджеком и шлюхами, но все же жава"

Из-за этого родили кучу тупых решений - статические нерасширяемые классы, примитивные модификаторы видимости, убогие енумы, тупые event на уровне языка, зато обломались сохранить Contract, бардак в коллекциях (нет нормального разделения на мутабельные, иммутабельные и так далее), забыли про IReadOnlyList (хотя он мегаочевиден), null safety (вернее его отсутствие), необходимость new, и так далее и так далее и так далее.

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

Вопрос - а сразу нельзя было сделать? Что мешало то? То, что методы расширения это статические методы? Так стоп. Для расширения статического класса и нужно статический метод. А для расширения свойствОМ ...нужны методы, ведь свойство это просто сахар для 2х методов.
то есть соблюдены все условия, но почему то расширение сделали только методами и только инстансов просто потому что....потому что гладиолус, других причин нет кроме рукожопости.
549 3429281
>>429241
и теперь этот выразительный язык будет иметь ДЖВА синтаксиса для расширений. Выразительность х2 )))
550 3429321
>>429281

> ДЖВА синтаксиса для расширений



да и похуй

> убогие енумы



единственно правильные энумы, всё остальное это не энумы

> статические нерасширяемые классы



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

> бардак в коллекциях



идеальный порядок

> А для расширения свойствОМ ...нужны методы, ведь свойство это просто сахар для 2х методов.



Типо, делаешь свойство расширения, и где-то в залупьем классе, который сконпелировали 4 года назад появится его бекфилд? ты долбоёб?

> для расширения статического класса и нужно статический метод



Ага, да, this ещё не помешает в статическом классе

Короче, ты прямо тупой какой-то, у тебя всё в голове смешалось, ты даже не понимаешь, чем энам от объекта отличается
551 3429330
>>429321

>да и похуй


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

>статика по определению не расширяемая


как и инстансы этих самых классов. Однако функционал расширения почему то существует. И при этом эти методы расширения сами по себе статические методы ))

>как в котлине на лету инстансы статических классов создавать


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

>идеальный порядок


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

>который сконпелировали 4 года назад появится его бекфилд? ты долбоёб?


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

>Ага, да, this ещё не помешает в статическом классе


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

>чем энам от объекта отличается


енам это алиса для инта. Причем кривой. А других енамов не завезли. Тут же вам не расты )
552 3429335
>>429330

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


Это единственное, с чем я согласен.

А так ты долбоёб, который застрял на уровне синтаксисов язычков, тебе не светит ничего большего чем говнокодить и ныть
553 3429385
>>429335
ну против такого "профессионального" аргумента упоротого шарписта сложно возразить )
554 3429514
>>429274

>Вопрос - а сразу нельзя было сделать?


Ну так возьми язык в котором все это с самого начала есть и не страдай.
555 3429528
>>429514
Как это отвечает на вопрос и оправдывает рукожопость авторов шарпа?
Правильно - НИКАК
556 3429556
>>429528
Ты тут весь день ждёшь, чтобы тебя спросили?
557 3429560
>>429556
да, а что? а ты пашешь в субботу?
558 3429641
>>429528

>Как это отвечает на вопрос и оправдывает рукожопость авторов шарпа?


Да - никак. Но поинт был не в этом. Все те проблемы которые ты описал не волнуют большинство тех кто пользуется шарпами, а тебе они причиняют истинную попоболь. Если ты не мазохист, то логичнее было бы переключиться на язык в котором этих проблем нет и забыть про шарп.
Я понимаю если бы это был js, который литерали понополист в своей нише и приходится терпеть. Но шарп даже не лидер рынка в своей области. Зачем страдать, мистер Андерсен?
559 3429645
>>429274

>забыли про IReadOnlyList (хотя он мегаочевиден)


Кому он нахуй нужен чел. IReadOnlyCollection

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

>не волнуют большинство


ну и пусть радуются. крудошлепы и прочие галерщики пусть живут в своем мирке.
Мне то ЗАЧЕМ на них равняться?

>логичнее было бы переключиться на язык


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

>Зачем страдать, мистер Андерсен?


зачем жрать говно и радоваться, мистер Смит? Можно принять недостатки, но можно и не принимать, а заменить на адекватные решения (и добиться чтобы это внесли в шарп, и ведь вносят же - те же рекорды с трудом выбили чтобы их внесли. Или те же field, а вот уже и расширение пропертями). Зачем не стремиться к этому и жрать что дали, агент Смит? да еще и тыкать пальцем в тех, кто не радуется говноедству.

>>429645

>Кому он нахуй нужен чел.


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

>Шарп это один из самых приятных языков


это не значит что он хорош в выразительности. Котлин по выразительности порвет шарп как тузик. Шарп растет в выразительности почуть, но весьма странно и ДОЛГО.
561 3429779
>>429677

>Мне то ЗАЧЕМ на них равняться?


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

> я не только жалуюсь, я и активно предлагаю как да что


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

> но можно и не принимать, а заменить на адекватные решения


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

Тут был дурачёк один, он примерно то же самое говорил, что и ты. он тупо не понял, как работать с IDisposable и пытался подружить события и многопоточке. В итоге из-за того, что у него не было БАЗЫ, у него нихуя не работало, а винил он во всём дотнет.

Мы его отправили заниматься пейтоном. Там он приживётся, там все такие.
562 3429830
>>429677

>и добиться чтобы это внесли в шарп


Нытьем на двачах?
563 3429871
>>429779

>Напиши свои коллекции


дык и пишу. и не я один пишу
свои реализации ObservableCollection тому пример. Почему то в нем нет AddRange, а Add его не заменяет и потому люди пишут своё.

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

Ну и конечно никак не могут сделать byte[] иммутабельный/ридонли. "нинужно" орут некоторые. Мол, он используется в разных там нутрях и далеко не уходит. Странно, а вот ReadOnlySpan почему то существует, хотя еще более узко применяется.

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


И почему же? А ну давай расскажи мне.
Ах да, потому что ПОЗДНО добавили IReadOnlyList и НЕ СМОГЛИ его впихнуть куда надо из-за бинарной совместимости, и ТОЛЬКО ПОЭТОМУ.
Я специально выделил главное. А то находятся додики, что начинают рассказывать про правильность иерархии и что мол IList не должен наследовать IReadOnlyList и прочий бред сивой кобылы.
Я подчеркиваю еще раз - даже мс считает что ДОЛЖЕН, просто это ломало бинарную совместимость и потому вкрутили куда вкрутили.

>Честно, со стороны ты выглядишь как дурачёк, который код не читает, но осуждает


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

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


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

>и ты почему-то решил, что вот именно твоё видение


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

>3429830


нет. в proposal и прочем.
А тут тред чисто для помолчать что ли?
563 3429871
>>429779

>Напиши свои коллекции


дык и пишу. и не я один пишу
свои реализации ObservableCollection тому пример. Почему то в нем нет AddRange, а Add его не заменяет и потому люди пишут своё.

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

Ну и конечно никак не могут сделать byte[] иммутабельный/ридонли. "нинужно" орут некоторые. Мол, он используется в разных там нутрях и далеко не уходит. Странно, а вот ReadOnlySpan почему то существует, хотя еще более узко применяется.

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


И почему же? А ну давай расскажи мне.
Ах да, потому что ПОЗДНО добавили IReadOnlyList и НЕ СМОГЛИ его впихнуть куда надо из-за бинарной совместимости, и ТОЛЬКО ПОЭТОМУ.
Я специально выделил главное. А то находятся додики, что начинают рассказывать про правильность иерархии и что мол IList не должен наследовать IReadOnlyList и прочий бред сивой кобылы.
Я подчеркиваю еще раз - даже мс считает что ДОЛЖЕН, просто это ломало бинарную совместимость и потому вкрутили куда вкрутили.

>Честно, со стороны ты выглядишь как дурачёк, который код не читает, но осуждает


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

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


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

>и ты почему-то решил, что вот именно твоё видение


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

>3429830


нет. в proposal и прочем.
А тут тред чисто для помолчать что ли?
564 3429904
>>429871

>ДОЛЖЕН



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

Давай вот прикинем:
- мутабельность всего в джаве, её ебанутые исключения и еще более упоротые костыли для работы с коллекциями, обоссаный спринг
- кресты, в которых вообще полный пиздец и люди молятся, чтобы в очередной раз жопу себе не прострелить
- JS/python/PHP, которые вообще никак не проектировали и они просто стихийно получились

Мне дотнет нравится, а то, что там видите-ли IReadOnlyList/IList можно было лучше сделать - так это ты с жиру бесишься.

Это абсолютно нормально на специфичных проектах свои примитивы коллекций использовать. Мы вот писали свой UiThreadCollection, потому что он нам подходил, а ObservableCollection не подходил.
565 3429938
>>429904

>Давай вот прикинем


>python


ты видимо мало писал на питоне. там хватает WTF, но у него шикарная основная задумка.
жс был для вебстраничек ТОГО времени
пхп вообще "нам надоел перл, а надо странички делать"
кресты - там и так понятно. специфика
жава - ну вот ее шарп и копировал, причем бездумно. перетащил new, коллекции, null и прочее.

>так это ты с жиру бесишься.


учитывая что иммутабле и фрозен стали частью дотнета, не зря бешусь. А то велосипеды, велосипеды.

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


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

>ObservableCollection не подходил


а если бы подошел, то писать не пришлось (с) кэп
так может все же сделать ObservableCollection более правильным?
Например, добавить AddRange и прочие методы, которые реально нужны всем. Да не, бред какой то )))

К IReadOnlyList я придираюсь потому что я сторонник чистого кода - если нужно перечислять, то я приму IEnumerable, если нужно читать список, то IReadOnlyList, а где надо там вообще иммутаблы.
У меня глаз дергается когда народ забивает и везде гоняет IList (а еще защитные копии создает)
Я понимаю что есть решения где "ну поздно всрались" - null safety, IReadOnlyList, new...но есть же куча вещей которые можно улучшить без потери бинарной совместимости. И не растягивать на несколько итераций как со свойствами, рекордами и вот с расширениями (небось оно не будет уметь статик расширять и через несколько версий дотнета и это добавят отдельным особым синтаксисом ДЛЯ ВЫРАЗИТЕЛЬНОСТИ ))))

Но мс прогибать трудно. Они никогда не сделают аттрибут для рослина чтобы он делал ConfigureAwait(false), никогда не добавят тип Unit (который каждый плодит свой велосипед одинаковой реализации, но это все равно разные типы), видимо никогда не сделают Discriminated Unions (который просят постоянно), да и primary constuctors они сделали примитивно (видимо не было языков где можно было подсмотреть))) и тоже никогда не исправят.

И я осуждаю такой подход мс. Нужно копировать удачные решения с других языков, а не выделываться и быть нетакусиками. Шарп хорош, но мог бы быть еще лучше. Вот просто мог бы....если бы просто сначала думали, а потом делали.
565 3429938
>>429904

>Давай вот прикинем


>python


ты видимо мало писал на питоне. там хватает WTF, но у него шикарная основная задумка.
жс был для вебстраничек ТОГО времени
пхп вообще "нам надоел перл, а надо странички делать"
кресты - там и так понятно. специфика
жава - ну вот ее шарп и копировал, причем бездумно. перетащил new, коллекции, null и прочее.

>так это ты с жиру бесишься.


учитывая что иммутабле и фрозен стали частью дотнета, не зря бешусь. А то велосипеды, велосипеды.

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


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

>ObservableCollection не подходил


а если бы подошел, то писать не пришлось (с) кэп
так может все же сделать ObservableCollection более правильным?
Например, добавить AddRange и прочие методы, которые реально нужны всем. Да не, бред какой то )))

К IReadOnlyList я придираюсь потому что я сторонник чистого кода - если нужно перечислять, то я приму IEnumerable, если нужно читать список, то IReadOnlyList, а где надо там вообще иммутаблы.
У меня глаз дергается когда народ забивает и везде гоняет IList (а еще защитные копии создает)
Я понимаю что есть решения где "ну поздно всрались" - null safety, IReadOnlyList, new...но есть же куча вещей которые можно улучшить без потери бинарной совместимости. И не растягивать на несколько итераций как со свойствами, рекордами и вот с расширениями (небось оно не будет уметь статик расширять и через несколько версий дотнета и это добавят отдельным особым синтаксисом ДЛЯ ВЫРАЗИТЕЛЬНОСТИ ))))

Но мс прогибать трудно. Они никогда не сделают аттрибут для рослина чтобы он делал ConfigureAwait(false), никогда не добавят тип Unit (который каждый плодит свой велосипед одинаковой реализации, но это все равно разные типы), видимо никогда не сделают Discriminated Unions (который просят постоянно), да и primary constuctors они сделали примитивно (видимо не было языков где можно было подсмотреть))) и тоже никогда не исправят.

И я осуждаю такой подход мс. Нужно копировать удачные решения с других языков, а не выделываться и быть нетакусиками. Шарп хорош, но мог бы быть еще лучше. Вот просто мог бы....если бы просто сначала думали, а потом делали.
566 3429976
>>429938

> перетащил new, коллекции, null и прочее


А что не так с null и new?
567 3429988
>>429938

>я сторонник чистого кода


петух ты, я же тебе говорил

> У меня глаз дергается когда народ забивает и везде гоняет IList


Это намеренно делается. Если знаешь, что метод возвращает List - не еби мозги, и верни List.

> new


А что с нью не так?

> не сделают аттрибут для рослина чтобы он делал ConfigureAwait(false)


И не надо

> тип Unit


нах не нужен, просто верни new object(), он сериализуется в бочку {}

>И я осуждаю


ты ноешь просто
568 3429998
>>429976

>А что не так с null


Гм, есть еще те, кто не знает? погугли "Ошибка на миллиард долларов"

>>429988

>петух ты, я же тебе говорил


А я про тебя ничего не говорил, но говорил про быдло. Похоже, что ты и есть то самое было.

>метод возвращает List - не еби мозги, и верни List.


метод ПРИНИМАЕТ. Что возвращать - уже совсем другой вопрос.

>А что с нью не так?


ничего. просто синтаксический мусор. Видимо из-за PascalCasing (но скорее всего просто потому что копировали жаву и не заморачивались), как и ;

>нах не нужен, просто верни new object(), он сериализуется в бочку {}


очевидно ты вообще не в курсе где нужен этот Unit. Он нужен в Task<Unit> и прочей реактивности. Без него ты будешь вынужден делать ДВЕ реализации одного и того же - для Task и Task<T>. А поскольку это лютый гемор и дублирование кода, то разрабы либ вводят свой Unit. Жетбраинс например. Или тот же "всеми любимый" тут медиатр

>ты ноешь просто


я критикую. но мои оппоненты просто говноеды которые даже не понимают сути проблемы. Или у них синдром утенка или....они просто не доросли, шлепают себе там "работает и ладно".
569 3430033
>>429938

> Они никогда не сделают аттрибут для рослина чтобы он делал ConfigureAwait(false),


И это правильно. Не должно быть ситуаций, когда один и тот же код ведет себя по разному в зависимости от настроек проекта
570 3430037
>>429998

> Что возвращать - уже совсем другой вопрос.


на вход принимай List, а на выходе делай List

> Без него ты будешь вынужден делать ДВЕ реализации одного и того же - для Task и Task<T>


Если нужно две реализации, делай две реализации.

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


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

> нытьё


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

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

А ты дальше задротствуй, решай свои проблемы с "чистым кодом".
571 3430072
>>430033

>когда один и тот же код ведет себя по разному в зависимости от настроек проекта


да ты мне расскажи )
аттрибуты сборки [assembly: ...] именно для этого и придуманы
это же не флаги компилятора.

Сейчас приходится использовать Fody, но он, очевидно, добавляет оверхеда в компиляции.

>>430037

>на вход принимай List


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

>Если нужно две реализации, делай две реализации.


Кому нужно?
И это не две реализации. Это ИДЕНТИЧНАЯ реализация буквально копипаст, из которой убирают просто <T>. Само собой, заниматься таким идиотизм, поэтому вводят Unit.
Вот посмотри на этих ребят https://learn.microsoft.com/en-us/previous-versions/dotnet/reactive-extensions/hh211727(v=vs.103)
Почему то они не хотят делать две реализации. Видимо тупые )

>я просто пользуюсь лучшим языком из существующих


Из твоей выборки в которой 1.5 языка причем 0.5 это жс?

>Если ты ебёшь себе и всем окружающим мозги дилеммой о том


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

я и буду решать, просто с тобой спорить не буду. Не с руки мне спорить с тем, кто "передавай List возвращай List" и "мне норм яскозал". Это говношлеп 9999 левела. Будет сложно различать кто есть кто (ибо тут все аноны), но страдающему синдромом утенка отвечать не буду.
571 3430072
>>430033

>когда один и тот же код ведет себя по разному в зависимости от настроек проекта


да ты мне расскажи )
аттрибуты сборки [assembly: ...] именно для этого и придуманы
это же не флаги компилятора.

Сейчас приходится использовать Fody, но он, очевидно, добавляет оверхеда в компиляции.

>>430037

>на вход принимай List


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

>Если нужно две реализации, делай две реализации.


Кому нужно?
И это не две реализации. Это ИДЕНТИЧНАЯ реализация буквально копипаст, из которой убирают просто <T>. Само собой, заниматься таким идиотизм, поэтому вводят Unit.
Вот посмотри на этих ребят https://learn.microsoft.com/en-us/previous-versions/dotnet/reactive-extensions/hh211727(v=vs.103)
Почему то они не хотят делать две реализации. Видимо тупые )

>я просто пользуюсь лучшим языком из существующих


Из твоей выборки в которой 1.5 языка причем 0.5 это жс?

>Если ты ебёшь себе и всем окружающим мозги дилеммой о том


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

я и буду решать, просто с тобой спорить не буду. Не с руки мне спорить с тем, кто "передавай List возвращай List" и "мне норм яскозал". Это говношлеп 9999 левела. Будет сложно различать кто есть кто (ибо тут все аноны), но страдающему синдромом утенка отвечать не буду.
572 3430113
По какой книге сейчас лучше учить сишарп? Раньше хвалили Троелсена, но у него последняя книга по 9 версии. А сейчас уже 13.
573 3430114
>>429938

>на питоне. там хватает WTF, но у него шикарная основная задумка


Это какая - ебучие отступы как элемент синтаксиса? Это вообще одна из самых наихуевейших идей в дизайне ЯП.
574 3430116
>>430113
по ии учи. по нескольким сразу. прося их погуглить, а не выдать фуфел.
575 3430119
>>429938

>ридонли byte[]


Если тебе не надо менять значения в массиве - просто берешь и не меняешь.
Я вот уверен, что даже если в шарпе появится такой массив, то ты все равно будешь ныть, что его можно поменять, через рефлексию, интеропы или еще какой-нибудь ансейф.
576 3430123
>>429938

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


Создателям голанга из гугла расскажи. Вот где нетакусики. Причем не просто выебываются делая обычные вещи непривычным способом, но еще и ебанутые теории под это сочиняют
577 3430124
>>430114
питон динамический язык. Все есть объект и объект этот словарь. А еще есть методы. И базовые конструкции языка типа for in len del и так далее. И дандер методы. И декораторы которые тоже методы и методы возвращают. То есть язык построен вокруг этой базовый концепции, даже ооп прикручен сбоку по этому же принципу (от чего у любителей истинного ооп бомбит, но так язык не для них). Простая система импортов. И тем самым получается стройный единообразный код и шикарный клей. Он ведь не единственный язык на свете, но основным клеем для всего стал именно он.

А отступы....ну когда вставляешь чужой код, то фу. А вот когда читаешь чужой код, то "слава тебе господи, что не руби какой то"
578 3430133
>>430119

>просто берешь и не меняешь.


так везде можно сказать "просто не меняйте". А то всякие там интерфейсы IReadOnly придумывают. Странные люди.

>что его можно поменять, через рефлексию


поменять можно все. я НЕ запрещаю менять. Я просто хочу четко объявлять в сигнатуре что мне нужно только читать. Для этого и вводили IReadOnly*. Не потому что где то не работало, а чтобы можно было ЯВНО указать что "вы мне передадите список и я его буду только читать". Потому что читать сигнатуру - тру, а читать чужой код выискивая "а не изменят ли мой список сейчас, да и в будущем нужно 100500 раз забежать посмотреть" - не тру. Контракт класса для этого и нужен.

>>430123

>Создателям голанга из гугла расскажи.


ну они просто упоротые. сам я го обхожу стороной. я изучал более 10 языков, но го даже не трогаю. я просто глянул на их import "fmt" или []byte и спросил себя "а зачем так делать? зачем отличаться от привычных подходов". Ответ был для меня очевиден и эпопея с дженериками только убедила.
579 3430177
>>430119
Я вот искренне не понимаю в чём сложность сделать
const int []
Компилятор видит ключевое слово const и делает себе пометку выдавать ошибку при каждой записи в такой массив. В чём тут проблема?
мимо
580 3430178
>>430133

>А то всякие там интерфейсы IReadOnly придумывают. Странные люди.


У тебя прям жёсткое непонимание. Нет ни одной структуры данных которая бы дала гарантии неизменности объекта внутри.

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

Тебе бы блять обратно на первый курс университета где объясняют как память и процессор работает и чем стек от кучи отличается.
581 3430181
>>430072

>за такую только мысль меня палками погонят с работы программиста



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

зато он не долбоеб - насрал и свалил. Знали бы на работе, что он такой "не долбоеб" - не брали бы даже. Ну разве туда, где такие же долбоебы или пишут на отъебись.
583 3430210
>>430177
константа она вшивается в IL и как бы это не то же самое, что объект в кучке.
есть исключение правда. если задать то ли спан то ли что еще (вот не записал) для байтов, то в рослине есть правило чтобы он принял это и юзал без аллокаций как то. Я видел это в кишках дотнета или его либ.

>>430178
>У тебя прям жёсткое непонимание.
это ты ничего не понял. я не требую гарантии неизменности. Я требую гарантии компилятора. Fail-Fast во все поля. Зачем ловить проблему в рантайме, если ее отловить можно еще на уровне компиляции.

null safety тому ярчайший пример. С ним не нужно проверять каждый параметр на null - об этом позаботится компилятор. Достаточно лишь на границе проверить и всё. Точно так же компилятор укажет на ошибку когда nullable передаешь не туда. Это сильно снижает ошибки NRE

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

Допустим тебе нужно IReadOnlyList, но у тебя нет его, поэтому ты принимаешь IList, как всегда. Это вызывает необходимость вызывателя этого кода разбираться можно ли ему передать список, или лучше сделать копию, или враппер, или ничего не делать,а класс внутри делает.
Ну а автор этого кода - там этот массив может укатиться далеко по уровням, а через год он (или другой чел) где то в глубине и знать не будет что в этот список писать нельзя. Конечно нормальный программист не будет делать особых глупостей, но тред показал что нормальность понятие растяжимое и я лучше доверюсь компилятору, чем сам буду разбираться что можно, а что нет. Нарушение контракта просто не должно компилироваться. Собственно поэтому IReadOnly* и ввели, просто потому что по хорошему оно надо и должно было быть изначально. И я активно им пользуюсь.

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

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

По хорошему все должно быть по дефолту не null, ридонли, запечатанное и так далее.
А в шарпе ровно наоборот.
583 3430210
>>430177
константа она вшивается в IL и как бы это не то же самое, что объект в кучке.
есть исключение правда. если задать то ли спан то ли что еще (вот не записал) для байтов, то в рослине есть правило чтобы он принял это и юзал без аллокаций как то. Я видел это в кишках дотнета или его либ.

>>430178
>У тебя прям жёсткое непонимание.
это ты ничего не понял. я не требую гарантии неизменности. Я требую гарантии компилятора. Fail-Fast во все поля. Зачем ловить проблему в рантайме, если ее отловить можно еще на уровне компиляции.

null safety тому ярчайший пример. С ним не нужно проверять каждый параметр на null - об этом позаботится компилятор. Достаточно лишь на границе проверить и всё. Точно так же компилятор укажет на ошибку когда nullable передаешь не туда. Это сильно снижает ошибки NRE

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

Допустим тебе нужно IReadOnlyList, но у тебя нет его, поэтому ты принимаешь IList, как всегда. Это вызывает необходимость вызывателя этого кода разбираться можно ли ему передать список, или лучше сделать копию, или враппер, или ничего не делать,а класс внутри делает.
Ну а автор этого кода - там этот массив может укатиться далеко по уровням, а через год он (или другой чел) где то в глубине и знать не будет что в этот список писать нельзя. Конечно нормальный программист не будет делать особых глупостей, но тред показал что нормальность понятие растяжимое и я лучше доверюсь компилятору, чем сам буду разбираться что можно, а что нет. Нарушение контракта просто не должно компилироваться. Собственно поэтому IReadOnly* и ввели, просто потому что по хорошему оно надо и должно было быть изначально. И я активно им пользуюсь.

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

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

По хорошему все должно быть по дефолту не null, ридонли, запечатанное и так далее.
А в шарпе ровно наоборот.
584 3430216
>>430178
много написал и забыл
чем уже я укажу контракт - тот же IList, тем больше я требую от клиента моего кода для удовлетворения контракта, а мне мутабельность и не нужна вовсе. У клиента может быть коллекция самопал и реализовывать IReadOnlyList, а передать мне он ее не может потому что я требуют больше нужного. В итоге клиенту придется лепить костыли ради "да просто так".

А автор класс через время - оооо, я ж просил IList, значит никто не будет удивлен если я него запишу. И перекомпилировать никому не нужно даже, лепота. С очевидным результатом.
585 3430225
>>430210

>и как бы это не то же самое, что объект в кучке


А как это мешает?
Я конечно понимаю что при передачи в метод или возврате из него передаётся ссылка, а она сама по себе не содержит информацию о том что это константа или нет. Я не спец по компиляторам, но комон, эту проблему уж можно как-то разрулить.
586 3430229
>>430225
ну эти данные они ж в нативной памяти получаются в образе длл что в память грузится. GC с таким работать не может. То есть надо будет все равно в рантайме в кучку положить - так проще запретить юзеру такие константы чем учить рантайм загонять такие массивы в кучу.
587 3430230
>>430225
с другой стороны, те же стринги в константы можно. То есть технически можно, но некому делать значит.
588 3430272
>>430072

> за такую только мысль меня палками погонят с работы программиста


> игнорирование базовых принципов чистого кода - еще больший идиотизм.


> Потому что читать сигнатуру - тру, а читать чужой код выискивая



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

> Я вот искренне не понимаю в чём сложность сделать const int []


> Компилятор видит ключевое слово const


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

Вердикт:
Ты всё еще петух, и твоё мнение лучше при себе держать
589 3430284
>>430230
const string/int/float это просто сахар. Значение переменной будет вставлено в код на месте переменной.
590 3430286
>>430177

> Я вот искренне не понимаю в чём сложность сделать const int []


И что это означает? int [] { 1, 2, 3, } вот тебе массив констант. Что должен делать твой пример?
591 3430320
>>430272
какой еще книжке. Чистый код это не значит книжка "чистый код", бестолочь. Это вообще набор разных концепций позволяющих не писать как ты. Как и с паттернами это не только "банды четырёх (GoF)"
Вот тебе по тупой морде https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/parameter-design

"✔️ DO use the least derived parameter type that provides the functionality required by the member.

For example, suppose you want to design a method that enumerates a collection and prints each item to the console. Such a method should take IEnumerable as the parameter, not ArrayList or IList, for example."
изображение.png143 Кб, 716x926
592 3430325
>>430272
И если неуч начнет "там перепечатка старой редакции книги, в третьей всё поменялось", то вот ему по морде третьей редакцией где прямо говорится "не использовать List<T>"

Конечно там есть ремарка, что это не должно влиять на перфоманс и иногда нужно принять как можно более конкретный тип. Но это и уводит нас к претензии что "мы должны передать byte[], чтобы избежать виртуальных вызовов, но у нас нет ридонли версии, поэтому мы должны ВЕРИТЬ в то, что передача мутабельного типа безопасна". Гарантии "мамой клянусь" может кого то и устраивают, но гарантиями по факту не являются.
Span не предлагать. Если метод принимает byte[], то ему приходится передавать byte[]
593 3430331
>>430320

> какой еще книжке


одноимённой

>>430325
ну ладно, но ты всё равно петушара и задрот, чего с тебя взять?
594 3430335
>>430331

>чего с тебя взять?


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

ps: быдланские трололо на дваче действуют только на школоту. Так что зря буковки тратишь.
595 3430345
>>430177

>Я вот искренне не понимаю в чём сложность сделать


>const int []


Потому что константы вообще не так в шарпе работают.
596 3430493
>>430184

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


Так переживаешь, как будто это твои личные коды, а не кабана.

Ну и насчет разгребать, иногда гораздо проще разгрести написанное просто и в лоб по принципу "работает - работайте", чем разбираться в тоннах абстракций над абстракциями над абстракциями.
597 3430545
>>430493
Какая разница чей код, если мне геморрой от этого.

>чем разбираться в тоннах абстракций над абстракциями над абстракциями.


назвать переменную не х, а нормально - не абстракция
принять нормальный тип - не абстракция
ну и так далее.
598 3430593
>>430545

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



да ты заебал, очевидно, что правильно везде возвращать IEnumerable<T> , потому что пользователям только перечислить элементы и всё.

Но пользователи кода - долбоёбы, которые если не упадут на ObjectDisposedException, то материализуют этот IEnumerable в сто запросов в БД. Поэтому делается намеренно не по умному а так, чтобы никто себе жопу не прострелил. Чтобы не писали на каждой строчке .ToList() .ToList() .ToList() .ToList() .ToList().
599 3430649
>>430593
А еще лучше возвращать 42. Никто ToList делать не будет..
600 3430673
>>430593
Я хуй знает что у вас за проблема. Возвращаю/принимаю везде IReadOnlyCollection и не ебу себе мозг.
601 3430675
Завтра будет собес на мидла впф. Первый собес за 2.5 года, ничего не успел повторить, кроме базы по БД, так как позвонили только сегодня, спустя неделю игнора, когда я уже решил, что они меня нахуй послали. Накидайте каких-нибудь каверзных вопросов
602 3430679
>>430673
Почему не IReadOnlyList? IReadOnlyCollection не позволяет людям использовать for
603 3430683
>>430675

>каверзных вопросов


Реал вопрос на собес от знакомого тимлида (когда еще можно было такое спрашивать).
Несколько мужчин (пусть будет 5) нетрадиционной ориентации сообразили парвовозик. Вопрос кто из них будет получать больше всего удовольствия и почему.
604 3430692
>>430679

>использовать for


практически не пользуюсь им. Есть foreach, есть linq их хватает. А там где он нужен это либо кака-нибудь алгоритмика, либо конкретно работа с массивами и там все эти IList и IReadOnlyList нахуй не нужны.
605 3430694
>>430692
Задача - сделать первые два элемента бесплатными, остальные платными. Как ты ее решишь? Можно конечно накостылить форычем с доп. переменной, но это неудобно
606 3430703
>>430673
А должен принимать List, а возвращать object
607 3430705
>>430694

>первые два элемента


Take(2) делаешь и меняешь их.

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

Сейчас вот литерали глянул один из проектов. На 1500 классов всего 5 раз используется for. Из них только 2 связано с коллекциями. И то, там просто долбоеб делавший это, не догадался, что с помощью foreach, результат будет абсолютно тот же самый. Х.з. как это кодревью проскочило.
608 3430708
>>430675

Спроси, были ли они на Уранусе
609 3430709
>>430675
Каверзный вопрос - зачем они пишут на WPF
610 3430712
>>430708
>>430709
Очевидно я имел в виду вопросы, которые могут задать мне
611 3430713
>>430712
Они могут спросить "ты пишешь на WPF в 25 году. ты нормальный?"
612 3430719
Правильно, надо писать на Eto.Forms.
613 3430725
>>430713
Прально! Только ВинФормы, только хардкор!
614 3430832
>>430272

>А это для языка фича уровня 5 лет утверждать синтаксис.


Не так страшен чёрт как его малютка. Можно сделать всё если захотеть.

>>430286

>И что это означает?


Означает то что элементы массива изменить нельзя.

>int [] { 1, 2, 3, }


И что ты высрал?

>>428065
И кстати тоже не работает
ОшибкаCS1525Недопустимый термин "[" в выражении

>>430345
Да похоже они вообще никак не работают.
615 3430854
>>430832

>Означает то что элементы массива изменить нельзя


Ты наркоман что ли? Такого поведения ни в одном языке нет.

Ты возможно не вкурсе про наличие immutable в шарпе или frozenset, но это же снова таки не то что твой ШУЕ мозг родил.

Я тебе серьёзно советую почитать какие-то книги типо Кормена или Таненбаума чтобы перестать нести какую-то хуйню про массивы что не дают менять свои элементы. Напиши свою реализацию такого сахара и предложи на заливку в репу, dotNET это опенсорс ты можешь предложить любые новые фичи.
616 3430883
>>430854

> Ты наркоман что ли? Такого поведения ни в одном языке нет.


В плюсах это именно так и работает
617 3431068
>>430854

>Такого поведения ни в одном языке нет.


На вот, в крестах попробуй скомпиль
const int AAA[3] = {1, 2, 3};

>Напиши свою реализацию такого сахара


Сахар он на то и сахар, что строится на базе уже существующего синтаксиса. А тут существующим синтаксисом не обойдёшься, тут компилятор допиливать надо.
618 3431106
>>430883

>В плюсах это именно так и работает



Объявляешь массив константой, а через 20 строк присваиваешь по индексу значения.

В каком-нибудь случайном участке памяти.

Плюсы 2025
619 3431114
Я вот тут думаю. У меня есть два сотрудника, которые никогда не работали с поехавшим c# кодом.

Вот чтобы всё было по канону: месиво из CQRS внутри CQRS, но без CQRS, динамические прокси, один интерфейс на всех. Запретить IDisposable и CancellationToken за место него вхуярить лайвтаймы, а работу осуществлять ровно в три потока.

Чтобы вы добавили?
620 3431133
>>429528
Да ты петух просто, я же говорил
621 3431293
>>431106
объявляешь массив и просишь всех "не пишите в него". А потом через год или где то в него запишут.

шарп 2025 и любых других годов во веки веков.

>>431114

>Запретить IDisposable и CancellationToken за место него вхуярить лайвтаймы


долбоеба трололо видно сразу. Видно по тому, что он нихрена в вопросе не разбирается.
так что можно добавить...ну книжку почитайте что ли, может умнее станете.
Но это не точно
flenov.jpg135 Кб, 1280x720
622 3431317
Стоит ли читать Библию C# Фленова? Норм книжка или отстой? Просто из всех там рассматривается самая свежая версия шарпа и дотнета, а остальные книги по 3.1 или 5 версиям.
623 3431319

>>>431106


>объявляешь массив и просишь всех "не пишите в него". А потом через год или где то в него запишут.


>


>шарп 2025 и любых других годов во веки веков.



А потом вспоминаешь, что в 2к25 массивы как таковые нахуй никому не нужны и успокаиваешься.
624 3431320
>>431317

>читать Библию


Мы тут все атеисты.
625 3431339
>>431319

>что в 2к25 массивы как таковые нахуй никому не нужны


крудошлепам может и не нужны. Но не будем слушать их мнение про язык в котором активно продвигают Span-ы как раз в этих самых годах )))
626 3431433
А реально устроится вначале на дотнетчика, а потом перекатиться в го?
627 3431435
Прошел тех. собес, поздравьте меня. Остался второй этап - встреча с командой. На удивление меня не просили крутить красно-черные деревья, были в основном довольно простые задачи на 5-10 минут. Тимлид сказал, что у них нет жестких сроков и никто не перерабатывает. Пока не могу в это поверить, так как привык работать в режиме нужно было сделать вчера, и в месяц у меня стабильно выходило 20-30 часов переработок.
628 3431482
>>431435
Ещё не факт, что взяли. Я вот тоже на одном собесе хорошо себя показал, а в итоге меня не взяли. А другой, который думал, что завалил, сказали, что всё хорошо и дали оффер.
629 3431602
>>431433

> А реально устроится вначале на дотнетчика, а потом перекатиться в го?



но захочешь ли ты
630 3431604
>>431293

>долбоеба трололо видно сразу. Видно по тому, что он нихрена в вопросе не разбирается.



триггернулся, убогий ты петушара.
631 3431608
>>431114

> Чтобы вы добавили?


Запрет new
632 3431612
Гайс, я наконец решился переписать все свои дотнет-корр проекты на .net framework 4.5.2 + wine в докере.

Какие подводные?
633 3431613
>>431339

>крудошлепам может и не нужны


Ну давай, расскажи нам какой охуенно полезной и важной деятельностью занимаешься ты, что 'крудошлепы' тебе и в подметки не годятся.
634 3431618
>>431435
Удачи. Мы рады за тебя.
635 3431620
>>431613
Это местный шизик, я подписался на его долбоёбские высеры, он тупой очень, не понимает даже, как IDisposable работает. Скорее всего продуктовый код он не писал никогда
636 3431643
>>431604
а ты забавный. тупой, но забавный. но тупой )))

>>431613
не крудошлепством и поэтому Span мне очень нужны. Иногда даже Unsafe (класс который. на чистый unsafe зачем опускаться - тут у нас не си)

>>431620
еще один про IDisposable будет учить. Тогда выходит и Jetbrains не понимают как работает и никогда продуктовый код не писали.
Логично же.
диссонанса не возникает? нет? ну ок.
637 3431644
>>431613
Ну я вот везде массивы ебашу если не нужно добавлять или убавлять элементы. Просто привычка.
638 3431645
>>431643

> Тогда выходит и Jetbrains не понимают как работает и никогда продуктовый код не писали.



Да, там долбоёбы одни, которые гоголем друг перед другом ходят
639 3431646
>>431645

>Да, там долбоёбы одни


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

вывод - мс тупые, а местный крудошлеп дартаньян )

логично же? ну логично? ))))
640 3431669
>>431643

>не крудошлепством и поэтому Span мне очень нужны.


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

"ряяя, у меня не работает, потому что всё плохое"
"ряя, а вот в майкрософте не дураки, они же сами говорят, что оно всё плохое
642 3431756
>>431712

>у меня не работает


я не говорил что не работает. я говорю "решение обладает недостатками или вообще никак не покрывает задачи".
это кое кто читает ЖОПОЙ и выдает СВОИ ЖОПНЫЕ мысли за чужие слова

>не дураки


что же ты пишешь на языке, который придуман дураками
лол, и ведь нет диссонанса у вас
643 3431767
>>431756

>я не говорил что не работает. я говорю



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

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

а кому надо, те поймут и узнают что то новое
нас читают не только дегенераты
645 3431864
>>431845

>со стороны крудошлепа? так себе оценка


Ну так ты точно такой же крудошлеп, только с необоснованной претензией на элитарность.
646 3432438
Хочется изучить сишарп, но бесит, что каждый год выпускают новый дотнет, который всё меняет. Ещё больше бесит, что удаляют старые дотнеты. Находишь такой самую последнюю книгу по сишарпу, а эта версия уже не поддерживается.
647 3432460
>>432438
Иди нахуй.
648 3432484
>>432460
Правда глаза колет?
649 3432519
>>431643

>Иногда даже Unsafe (класс который. на чистый unsafe зачем опускаться - тут у нас не си)



ptr[index] - для сишников-пидоров
Unsafe.Add(ref ptr, index) - для шарпо-бояр
Я правильно понял?
650 3432533
>>431864

>Ну так ты точно такой же крудошлеп


не соглашусь. мне не нужен ни EF (до сих пор не знаю его и знать не нужно), ни всякие базы данных. Как вот jetbrains в своем решарпере не использует ни EF ни postgre, а вот многопотока и low latency там через край.

>Находишь такой самую последнюю книгу по сишарпу


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

>>432519

>Я правильно понял?


абсолютли. на шарпе же пишем, а не богомерзком си. Посмотри кишки методов дотнета и либ - вовсю используется именно Unsafe.(ref ...) и прочее. А * это для фанатиков.
651 3432559
>>432533

>Как вот jetbrains в своем решарпере не использует ни EF ни postgre


И за каким хером бы они в плагине для IDE сдались?

>>432533

>не соглашусь.


Да похуй соглашаешься ты или нет. Ты все равно так и не озвучил чем конкретно ТЫ занимаешься. И пока этого не сделаешь, будешь таким же 'крудошлепом'.
652 3432610
>>432559

>И за каким хером бы они в плагине для IDE сдались?


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

>Да похуй соглашаешься ты или нет


Собственно, как и мне. Это двач, тут никто нимому ничего не обязан (впрочем, как и в остальном интернете).

>'крудошлепом'.


здорово. теперь я смогу писать что знают EF и активно работал с бд (что конечно же нет)

Ну на этом и порешили.
653 3432784
>>432610

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


Нет в данном случае идиот тут только ты, т.к. не способен даже адекватно следить за нитью разговора. Это ты выдал тейк, что джетбрейнс молодцы, т.к. не пользуются в решарпере EF и postgres. Это все равно, что если бы ты утверждал что "смотри какие птицы охуенные, они летают и им даже жабры и плавники не нужны".
Они не используют ef и постгрес не потому, что они плохие или это признак крудошлепства, а потому что они в принципе не нужны в этом плагине.

>>432610

>Ну на этом и порешили.


Окей, записываем тебя в обычныго скриптописателя эникейщика, который пыжится доказать (прежде всего самому себе), что его деятельность имеет хоть какое-то значение.
654 3432815
>>432533

>мне не нужен ни EF (до сих пор не знаю его и знать не нужно)



ЕF не знаешь
События не понимаешь
Многопоточку не понял
IDisposable понял не правильно

> нафига читать книги


зато самомнения дохуя и знаешь как правильно
655 3432983
Собеседовался в контору, где основной проект написан на wpf с net framework 4.7.2 Насколько больно будет на таком работать? Сейчас тоже пишу на впф, но у нас в ходу net 9.0. Зп +40% относительно текущей и в целом условия работы кажутся лучше.
656 3433109
>>432983
сам WPF изменился мало. Так что боль доставит сам язык. И сразу же им вопрос "а почему вы не переехали на свежий дотнет" задай. Не так уж много причин почему переехать не выйдет. Может они просто не хотят учить новое.
657 3433126
>>432784

>что они плохие или это признак крудошлепства


плохими или тупыми называли их как раз ВЫ >>431645, а не я.
Я ж говорю как раз наборот, что они поумнее вас будут ибо собаку схомячили на сложных задачах.

>>432815
только EF не знаю. Я его учил, но в силу того, что "негде применить" просто забыл и не слежу что там нового

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

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

>зато самомнения дохуя


Не нужно быть особо умным чтобы знать недостатки того или этого. Достаточно просто хотя бы почитать про них. Это не секрет КГБ.
А далее просто чуть чуть мозг включить.

>и знаешь как правильно


Как человек, который изучал более 10 языков и половину из них использует постоянно (хотя и не сильно хочет, потому что без использования в итоге просто забывается, кроме понимания парадигм, но легаси же и денежку платят), да, имею мнение про "как изучать эффективнее без лишних трат времени".
Все языки они ж как братья, за исключением с "абсолютно другая парадигма" или "своеобразные типа rust". Так что зная один язык УЖЕ понимаешь что именно тебе надо писать. Остается вопрос "как это переложить в код". И вот тут помогут ИИ, ведь ты знаешь ЧТО спрашивать.

Конечно они фантазируют много, но можно просто спросить другой ИИ (их валом фришных) и получить истину.
658 3433326
>>433126

>>что они плохие или это признак крудошлепства


>плохими или тупыми называли их как раз ВЫ >>431645, а не я.


Второе "они" относилось к ef и postgres. Какое тебе нахуй программирование, если ты в понимание смысла обычной беседы не умеешь.

>>433126

>И вот тут помогут ИИ


Судя по тому как прыгает контекст в твоих фразах, ты и есть нейросетка, причем очень тупая.
659 3433345
>>433126

> Как человек, который изучал более 10 языков



Верю. Вот я прямо верю
660 3433346
>>433126

>я такой "вот интегралы, вот логарифмы, рациональные числа, мнимые числа, синусы"



ты в луже блевотины мычишь, ссышься под себя
661 3433506
>>433326

>Второе "они" относилось к ef и postgres


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

>>433345
ну и отлично. конечно я чувствую сарказм, но у тебя вообще плохо с детектом сарказма и абстракций "на котиках поясняю"

>>433346
бла бла. как и все остальное
СВОИ мысли и СВОИ слова выдаешь за мои
ничего не меняется.

и эти люди запрещают мне ковыряться в носу
Вернее это один человек, не умеющий в логику и аргументацию. Поэтому и выдает свое за чужое.
Впрочем, как то поплевать.
662 3433511
Я начинаю разбираться в теме дотнета. Скажите, много и ли отличий между версиями дотнета? В вакансиях часто вижу как просят опыт конкретно в определенной.
663 3433513
>>433511
И ещё один вопрос. Какие самые популяные направления на дотнете? Что учить в первую очередь? Видел mvc, razor, blazor и проосто рест апи
664 3433514
>>433511
Очень много отличий, это скорее разные платформы и языки, чем разные версии.
665 3433520
>>433346
Аргументы типа "ты не научился правильно есть говно" как то не работают на меня. Наверное потому...что я вообще не хочу есть говно. И даже если мне дадут золотую ложку и пройду курсы мастерства по поеданию говна - говно все равно останется говном.

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

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

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

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

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

Но в основном - писать на 4,8 это как писать на очень старом дотнете. Писать можно, но старье есть старье.
666 3433531
>>433346
про диспоз и "не разобрался". ну там тоже просто

берем диспоз и начинается
нас могут вызвать дважды - добавим флаг disposed
нас могут не вызвать - подключим финализатор
возможный вызов из нескольких потоков - а мы Interlocked-ом
наследование - ну тоже что нибудь придумаем
нам передали диспозабле через конструктор - а пусть и передают bool leaveOpen как вон со стримами или HttpClient с его хендлерами ). Как это они не знают можно ли диспозить - а пусть знают.

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

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

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

Но я все же выберу другой стул
667 3433660
>>433513

>И ещё один вопрос. Какие самые популяные направления на дотнете?



монолитный бек наполовину распиленный на микросервисы
668 3433671
>>433531

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



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

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



тут всё просто: кто объект создал, тот его и уничтожает. Подключи IDisposableAnalyzers

> нас могут вызвать дважды



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

> в итоге - просто метод очистки превращается в огромную простыню костылей



я же говорю, ты не понял просто как это работает

> Такая гора кода, а все равно получаем мемори лик.



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

Чел, ты понимаешь, что если ты неправильно понял диспозабл и события - тебе никакое говно от джет брейнса не поможет? Ты хоть три умные библиотеки подключи, но руки они тебе не выпрямят
669 3433736
>>433520

> запретили отрицательное зачатиеировать потоки


Лол. А что за доисторический форс засел в вордфильтре?
670 3433740
>>433736
Что противоположно зaчатию? Правильно, aбopт. А засел этот форс по желанию левой пятки макаки.
671 3433862
А вы знали что для httpclient
"/api/zalupa"
"api/zalupa"
вызывает разное поведение?

Первый удалит весь адресс хоста до базового, второй просто конкатинируется.
"http://pupa.com/lupa/"
"http://pupa.com/api/zalupa"
"http://pupa.com/lupa/api/zalupa"
672 3433872
Какие перспективы сишарпа в РФ? Сейчас ввели требования, что в гос. конторах и некоторых крупных компаниях вроде Газпрома нужно обязательно использовать сертифицированное импортозамещенное ПО. Java в этом плане проскочила, так как выпустили AxiomJDK и LiberCat. Есть ли подобные сертифицированные продукты для дотнета?
673 3433881
>>433872
Всем похуй на эти требования, вот и собственно и все.
674 3433904
>>433881
Это в мелких фирмах так, а вот в Газпроме завернули тех подрядчиков, у кого не сертифицированное ПО, они просто не прошли их проверки.
675 3433927
>>433862
Это всё равно что знать, чем абсолютные пути к файлам отличаются от относительных.
6228320071.jpg387 Кб, 883x1200
676 3433962
Хотел начать учиться по книжке Троелсена, а оказывается, что дотнет 5 уже превратился в тыкву. Даже вижла не даёт поставить его. Что теперь делать? По какой книжке учиться?
677 3433975
У вас бывает ступор от вещей, которые вы до этого делали тысячи раз? Я за несколько лет написал ебаную гору лямбда выражений, каждый день их использую. А сегодня случайно задумался о том, что это такое, и понял, что я не могу ответить на этот вопрос. Просто машинально делаю, а что это такое забыл. В итоге пришлось загуглить. Охуеть просто.
678 3434038
>>433872
В астра линукс, например, sdk и рантайм дотнета вплоть до 8 версии считай из коробки, а так вообще хоть даже 9-й ставь: https://docs.astralinux.ru/latest/start/netcore/
https://wiki.astralinux.ru/kb/net-core-191108093.html

В реестре что-то дотнетовое тоже очевидно есть:
https://reestr.digital.gov.ru/search/?q=.net (запрос так себе, и я только первую страничку посмотрел, но очевидно c# там использовали, хотя и не знаю насколько).

Еще вот этих ребят вспомнил, на авалонии сделали свою "импортозамещенную" скаду, в реестре есть: https://reestr.digital.gov.ru/reestr/1613356/?sphrase_id=3205910

Т.е. что помешает мне выпустить, например, asp net core приложение, попасть в реестр и крутить его на сертифицированном линухе - то, что Kestrel не в реестре российского ПО? Genuine question, сам в этой теме особо не разбирался еще.

>>433881
Частично сталкивался с таким. Если область для производства критически важная и быстренько с винды на линух, например, не перескочить (допустим, на заводе все OPC сервера на DA стандарте были сделаны), то никто сильно не горюет по этому поводу, оставляют эту часть на виндоус-серверах.
679 3434076
>>433671

>что объект не уничтожен, а потом почини по месту


Это так не работает. Объект, а значит и диспоз может быть не твой. Кстати, Task реализует IDisposable. Часто вызывал у таска диспоз? Риторический вопрос.

>кто объект создал, тот его и уничтожает


Но зависимости могут иметь разное время жизни. И нужно где то трекать время жизни каждого объекта. А IDisposable никак не отвечает на вопрос трекинга. Он просто метод. А значит должен быть дополнительный код - ручной или унифицированный для трекинга и уничтожения (причем в обратном порядке от рождения)
и поэтому....

>твой путь скорее распиздяйский.


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

>или ещё более страшная гора кода, с упоротым стектрейсом


НОЛЬ строк кода это никак не "более страшная гора". Стектрейс тут вообще не причем. Откуда ему быть то? причем тут исключения вообще. IDisposable НЕ ДОЛЖЕН вызывать исключение (CA1065)

>ты неправильно понял диспозабл


его я как раз понял правильно - он всего лишь метод. И НИЧЕГО БОЛЕЕ. А значит все вопросы на тему "а как и когда его вызывать, да чтобы не забыть, да и не дважды, да и не в разных потоках, да и в обратном порядке" он НЕ отвечает. А за это отвечает СТОРОННИЙ код. (ну или частично лапша внутри диспоз, но там просто защита от дурака, а не именно рабочий код)

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

А ведь можно взять готовое решение, которое делает то же самое и ЛУЧШЕ. Лучше оно тем, что помимо трекинга, который ты САМ пишешь каждый раз), позволяет не писать диспозабле, терминироваться вовремя (а не абы когда), позволяет НЕ забыть (это просто невозможно) отписаться, диспозит в обратном порядке, дает возможность защититься от диспоза если щас немного к месту это и так далее.

Концепция fail-fast. Просто не скомпилируется. Это важная концепция. Вон даже null safety притащили потому что лучше отловить на этапе компиляции, а не потом в рантайме какие то логи финализаторов читать (которых не будет)

> и события


понимание событий не делает их хорошими. А как раз наоборот.
твое "понимать" - значит сидеть на стуле с говном
Вся твоя аргументация сводится к "оно же в языке и ты его критикуешь и говоришь что есть варианты лучше - значит ты просто не разобрался"
Но BeginXXX тоже в языке. Почему же ты его забросил в угоду TPL, а тот (в большей части) в угоду async?

НЕ РАЗОБРАЛСЯ ЧТО ЛИ?
679 3434076
>>433671

>что объект не уничтожен, а потом почини по месту


Это так не работает. Объект, а значит и диспоз может быть не твой. Кстати, Task реализует IDisposable. Часто вызывал у таска диспоз? Риторический вопрос.

>кто объект создал, тот его и уничтожает


Но зависимости могут иметь разное время жизни. И нужно где то трекать время жизни каждого объекта. А IDisposable никак не отвечает на вопрос трекинга. Он просто метод. А значит должен быть дополнительный код - ручной или унифицированный для трекинга и уничтожения (причем в обратном порядке от рождения)
и поэтому....

>твой путь скорее распиздяйский.


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

>или ещё более страшная гора кода, с упоротым стектрейсом


НОЛЬ строк кода это никак не "более страшная гора". Стектрейс тут вообще не причем. Откуда ему быть то? причем тут исключения вообще. IDisposable НЕ ДОЛЖЕН вызывать исключение (CA1065)

>ты неправильно понял диспозабл


его я как раз понял правильно - он всего лишь метод. И НИЧЕГО БОЛЕЕ. А значит все вопросы на тему "а как и когда его вызывать, да чтобы не забыть, да и не дважды, да и не в разных потоках, да и в обратном порядке" он НЕ отвечает. А за это отвечает СТОРОННИЙ код. (ну или частично лапша внутри диспоз, но там просто защита от дурака, а не именно рабочий код)

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

А ведь можно взять готовое решение, которое делает то же самое и ЛУЧШЕ. Лучше оно тем, что помимо трекинга, который ты САМ пишешь каждый раз), позволяет не писать диспозабле, терминироваться вовремя (а не абы когда), позволяет НЕ забыть (это просто невозможно) отписаться, диспозит в обратном порядке, дает возможность защититься от диспоза если щас немного к месту это и так далее.

Концепция fail-fast. Просто не скомпилируется. Это важная концепция. Вон даже null safety притащили потому что лучше отловить на этапе компиляции, а не потом в рантайме какие то логи финализаторов читать (которых не будет)

> и события


понимание событий не делает их хорошими. А как раз наоборот.
твое "понимать" - значит сидеть на стуле с говном
Вся твоя аргументация сводится к "оно же в языке и ты его критикуешь и говоришь что есть варианты лучше - значит ты просто не разобрался"
Но BeginXXX тоже в языке. Почему же ты его забросил в угоду TPL, а тот (в большей части) в угоду async?

НЕ РАЗОБРАЛСЯ ЧТО ЛИ?
изображение.png461 Кб, 854x982
680 3434245
>>434076

>мой путь - перевесить эти проблемы на лайфтаймы


и нихуя не поменяется, за место диспозов будешь лайвтаймы закрывать, только стектрейсы будут упоротые, а отладка - ад.
681 3434247
>>434076

>мой путь - перевесить эти проблемы на лайфтаймы



Коллеги тебя отхуярят скорее всего
682 3434263
>>434245

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


именно так. вместо разбора "эээ кто у нас тут должен помереть" я терминирую лайфтайм, и все связанные с ним умрут, да умрут правильно.
А в 99% терминировать будет инфраструктура, а не я.
Странно (а может и нет) что концепцию CancellationToken(и самостоятельную завязку на него всех кто должен прерваться при отмене токена) ты воспринимаешь нормально. А ТАКУЮ ЖЕ концепцию в плане "отрицательного продолжения жизни" ты
"не не не - тут все руками по старинке. Вот дергали же раньше метод Cancel() до прихода CancellationToken и ничего, как то жили, а ведь метод Dispose он такой же. Не пущу лайфтаймы проклятущие"

>только стектрейсы будут упоротые, а отладка - ад


в УПОР НЕ ПОНИМАЮ где ты там увидел стектрейсы то. Вот в асп.нет коре после запроса контейнер диспозит все что наплодил для запроса - какие стектрейсы и проблемы отладки это у тебя вызывает? А ведь он делает абсолютно ТО ЖЕ САМОЕ - добавляет рожденный IDisposble в scope и потом терминирует этот скоуп. Тут не просто похоже - тут АБСОЛЮТНО идентично.

>Коллеги тебя отхуярят скорее всего


ну разве что такие, как ты. но таких у нас просто не будет. потому что аргумент "ты не разобрался" не работает против аргументации "вот тут такие недостатки".
683 3434383
>>434263
Я полностью понимаю, о чём ты говоришь. Но, к сожалению, ты просто не разобрался как с объектами работать
684 3434395
>>434383
ок. побуду идиотом как жетбраинсы, майки и прочие которые видят в диспозе кучу говна.

А ты будь элитным говноедом, ведь ты мастер в его поедании

За сим и закончим наш "спор"
685 3434410
>>434395

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


Да кто блять видит шизофреник ебанутый. Их видят только долбоебы которые ещё не видели деструкторы в С++ и не писали их. Вот это вообще збс, тебе надо РУКАМИ вызывать освобождение объектов и оно при этом может завершится криво и тебе нужно писать логику на обработку такой хуйни.
686 3434412
>>431435
Держу в курсе. Дали оффер на 180к сейчас сижу на 130к. Единственное смущает необходимость медосмотра. Несколько лет назад лечился от серьезной пиздецомы (рак щитовидки), как бы это не стало поводом для отказа.
687 3434545
>>434410

>и оно при этом может завершится криво


ну если у вас диспоз методы могут выдать ошибку - всё с вами ясно. Как бы тут не о чем больше говорить. В моем мире диспоз не может выдать исключение потому что НЕ ДОЛЖЕН.

Ведь я пишу на шарпе, а в нем
https://learn.microsoft.com/ru-ru/dotnet/fundamentals/code-analysis/quality-rules/ca1065

"Метод System.IDisposable.Dispose не должен вызывать исключение. Dispose часто вызывается как часть логики очистки в предложении finally . Таким образом, явным образом создается исключение из Dispose принудительного добавления пользователем обработки исключений finally в предложение."

Если у тебя что то там КРИВО (ну как твоя голова и руки), и что то может очищаться с ошибкой - то и ОБРАБАТЫВАЙ ЭТО ВНУТРИ СВОЕГО ДИСПОЗЕ. Выше диспоза оно проползать не должно по природе. Можешь в лог писать, можешь в консоль, можешь в спортлото - но не кидать исключение из диспоз.

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

>>434412

>Единственное смущает необходимость медосмотра


то есть необходимость вкалывать и писать код не смущает?
688 3434556
>>434412
Сколько лет попыта?
689 3434609
>>434412

>Дали оффер


Поздравляю.

>>434412

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


Не должно, т.к. незаконно. Единственное, с чем тебя могут прокатить - это ДМС, но тут уж увы.
690 3434623
>>434545

>А в твоем шизофреническом видимо существует.



он тебе про кресты пишет вообще
691 3434625
>>434609

>Не должно, т.к. незаконно. Единственное, с чем тебя могут прокатить - это ДМС, но тут уж увы.



Может его полярником программистом отправят. Или на атомную подлодку, интегрировать медиатр
692 3434830
>>434623
нет. таки про диспоз. про кресты и деструкторы он только в этом посты, а остальные посты он говорил про диспоз и как лайфтаймы усложнят какие то мифические стектрейсы.
693 3434890
>>434830

>лайфтаймы



Что за лайфтаймы? Ты растбук прочитал и у тебя синдром долбоёба, которому фич из других языков не хватает?
694 3434901
>>434890

>Что за лайфтаймы?


зис. достаточно посмотреть несколько минут. он пояснит
https://youtu.be/Sq_h5bVWJ0k?t=500

>растбук прочитал


вообще то да, прочитал. но все же это совсем другие лайфтаймы
695 3434951
>>434901

> JetBrains.Lifetimes?



Да это говно, никаких проблем не решает, только лишний код писать
696 3434955
>>434951
и то верно. пиши бойлерплейт. ведь он тоже не решает нихрена, но лишний код.
(странно что эти люди перестали использовать BackgroundWorker с его Cancel и пересели на CancellationToken. Хотя...они просто макаки из мира программирования и повторяют не понимая)

я ж не настаиваю на своем. я настаиваю на кротах.
697 3434974
>>434901

>https://youtu.be/Sq_h5bVWJ0k?t=500



нахуй ты это опять притащил, шизик?
698 3434976
>>434974
стреляли (то есть просили пояснить о чем я)
699 3434983
>>434976
Это мусор, пошёл на хуй отсюда
700 3434987
>>434983
для макаки все мусор. почему я должен слушать мнение макаки?
риторический вопрос.
701 3435078
>>434987

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

Это риторический вопрос, можешь не отвечать
702 3435104
>>435078

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


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

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

латентные жависты, вот и весь ответ. Ну или любители пожрать говна.
703 3435157
>>435104

> все новое.



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

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

А ты как попка-дурачёк, 10 языков выучил как так оказалось, что среди них нет SQL?, а мозгов не прибавилось
704 3435169
>>435157

>какое новое? этому говну чуть ли не 10 лет


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

>которую только посвящённые могли понять


гм. то есть человек который пишет бойлерплейт для диспозе он долбоеб или посвященный? потому что он как бы понимает зачем он это пишет и КАКУЮ ПРОБЛЕМУ решает этим кодом.
Так что он или долбоеб, который не понимает зачем он это пишет. Или посвященный.
Ты из каких?

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


вопрос "ты из каких" снят )

>как так оказалось, что среди них нет SQL?


с чего ты взял что я не знаю SQL? Я смотрю, тут у людей с логикой вообще ТУГО
Если я не использую EF, то я не знаю SQL? Обычно наоборот говорят, что "юзаешь ORM и SQL не знаешь"
Л - логика от анона

Но да, я его в эту десятку не записываю, поскольку это сопутствующая технология.
sASwUbsISIQeyOe-800x450-noPad.webp22 Кб, 512x288
705 3435418
>>435169

>и что?



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

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

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

У нас был такой долбоёб. Он написал PrivateCancellationToken. Два года переписывали код на это говно, два года объясняли человеку, что он изобрёл CancellationTokenSource.

Вот и ты такой же долбоёб, вбил себе что-то в голову, не разобрался нихуя и других лечишь
706 3435511
>>435418

>Он написал PrivateCancellationToken.


Писал что?
707 3435577
>>435418

>несовместимым со стандартами разработки.


что за стандарты такие? слово то какое СТАНДАРТЫ. можно эти СТАНДАРТЫ в студию?

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


ну было бы насрано кастомное решение, какая разница?
взять MVVM Community Toolkit. Там типичное от WPF weak решение мессенджера. Но есть и стронг, для которого придется рожать какое то решение что не было ликов. Выходит, создатели этого фреймворка нарушают стандарты MVVM фреймворков для WPF? Или просто нет никаких стандартов, а есть набор решений "ну более менее работают в данной ситуации" )

>ак айдиспозабл работает


как он работает - поясняет каждая первая статья в инете. но как с этим работать - тут статьи делают пук среньк и "ну вы там как то сами ага". То есть банальное "ну вы там вызывать не забывайте, а как...а мы не знаем же вашего проекта". Вот такие вот СТАНДАРТЫ

>Два года переписывали код на это говно


то есть до этого человека у вас была неведомая хуета вместо токенов отмены? видимо миллион методов Cancel, иначе что там 2 года переписывать то?

>два года объясняли человеку, что он изобрёл CancellationTokenSource.


Который вы все равно не использовали и человек вам научил хоть чему то. Просто взял свою реализацию вместо "искаропки". Но суть та же

Ну может за 2 года до вас дойдет, что лайфтаймы это такие же токены отмены (у них код совпадает в простой реализации на 100% только названия другие), только в другой семантике. А может и не дойдет. Тупенькие же вы. Если бы не мс (в вашем случае один молодец), так бы вы и юзали методы Cancel во веки веков.

Беда в том, что мс далеко не всегда вносит нужное в фремворк. Вот Async*ResentEvent и другие асинки есть в отдельной либе Microsoft.VisualStudio.Threading (зацените название то), но уже скоро дотнет 10, а таких классов нет во фреймворке, видать асинк пишут 3.5 человека в мире.
708 3435585
>>435418
Task реализует IDisposable
Готов дать руку на отсечение, что у тебя в проекте везде вызывается Dispose для тасков?
Или ты не умеешь работать с диспозами? )))
709 3435611
>>435511

>>Он написал PrivateCancellationToken.


>Писал что?



Чел написал класс, PrivateCancellationToken, который по сути собой представлял собой CancellationTokenSource
710 3435616
>>435577

>то есть до этого человека у вас была неведомая хуета вместо токенов отмены



Нет, у нас были обычные токены, но чел не понял, как с ними работать, написал своё говно. Мы пиздец, кринж словили, но два года переписывали обычный код на эту хуету, чтобы не расстраивать большого властного начаальника
711 3435623
>>435585

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


>Или ты не умеешь работать с диспозами? )))



Эээ. Дядя, ты дурак?
712 3435633
>>435616

>два года переписывали


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

Не там вы ловите кринж не там. Кринж нужно ловить когда HttpClient кидает TaskCancelledException вместо таймаута (да и вообще принципиально хреново работает с таймаутами). А теперь скажи что это НЕ СТАНДАРТ ), ведь это офф решение.
713 3435637
>>435623

>Эээ. Дядя, ты дурак?


так стандарты же. Если класс реализует IDisposable значит у него нужно вызывать Dispose
это ж СТАНДАРТ )
714 3435642
>>435611
Ээээмммм нуууу эээээ как бы. Зачем?
Я видел схожие вещи когда люди пишут свои версии классов из .NET или вообще свои реализации каких-то фич и библиотек готовых, но не понимаю зачем это делать.
Вероятно проблема в том что я считаю что люди которые пишут дотНЕТ явно поумнее меня и больше понимают, я читал исходники реально поумнее, да и банально там его в течение десятка лет писали и проектировали сотни человек которые уже выловили все возможные баги и проблемы и провели максимум оптимизации на спичках. Тоже самое какой-то Fluentvalidation который писала куча народу.

Обычно в коде таких выпердышей можно увидеть что автор тупо перепутал работу и петпроект. Они пробуют такое сделать чтобы разобраться как это под капотом работает или попробовать штуки из книг которые читали.
715 3435669
>>435642

>я считаю что люди которые пишут дотНЕТ явно поумнее меня и больше понимают


это ты зря считаешь
1 не поумнее и поэтому творят дичь. Ну тут много чего я уже писал про это
2 есть спорные вещи, где у каждого варианта есть недостатки. Те же события, свойства
3 решение должно удовлетворять всех - в итоге оно просто базовое. Тот же DI от майков умеет только в самый базовый базис и не умеет даже в декораторы. Зато умеет в Keyed, что не по канону (но это уже к спорным вещам)
716 3435678
>>435669

>3


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

> Тот же DI от майков умеет только в самый базовый базис и не умеет даже в декораторы.



И это замечательно. Всегда беру его.

> так стандарты же. Если класс реализует IDisposable значит у него нужно вызывать Dispose



Да, там не идеально, но если джун придёт, тебе не надо будет его учить расширенным практикам.

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

А использовать крутые индивидуальные решения - это круто до тех пор, пока проблемы не начнутся. Там ты ССЗБ, написал всё сам, тебе никто не поможет
718 3435809
>>435771

>но если джун придёт, тебе не надо будет его учить


а я лучше научу. А тот этот джун мне накособочит с диспозами. Я лучше не дам ему возможности совершать ошибки. Компилятор в помощь как бы.

>расширенным практикам.


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

>Лучше знать особенности поведения таски и httpclient


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

>тебе никто не поможет


тут ты прав. ведь 10 лет ждать пока джун освоит технологию и с курсов вернется. придется эти 10 лет самому. То ли дело простая (на самом деле нет) и свежая (14+лет) технология https://learn.microsoft.com/en-us/previous-versions/dotnet/reactive-extensions/hh212123(v=vs.103) и не велосипед.
719 3435941
>>435809

>лучше когда таких особенностей просто нет



Давай пример приведу. Чтобы не ебать мозги, я просто с проекта выкинул https://restsharp.dev/ , и заменил вызовы на http клиент.

> Reactive Extensions Class Library



их вроде даже в стандартном фреймворке нет
720 3435978
>>435941

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


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

>их вроде даже в стандартном фреймворке нет


как и Community.Toolkit
как и Microsoft.VisualStudio.Threading
и что

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

> то грабли бьют по лбу и приходится с этим что то делать.



твои грабли растут у тебя из жопы.

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

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

в итоге нихуя, разумееся, не оптимизировалось, он въебал говна вокруг этого автомаппера, завернул всё в CQRS (как он это называл), потому что думал, что CQRS ему всё оптимизирует.

Но он опять же не понял, что такое CQRS, и просто подключил за место DI MediarR.

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

Вот и ты так же
722 3436100
>>436096
"Если лежит говно и тебе не нравится как оно воняет - значит ты просто не разобрался как его правильно нюхать и есть"
технически, может логика эта и верна....но только для говноедов

А ведь именно эту логику ты и применяешь. Ты говноед?
723 3436911
Чет разрабы авалонии совсем охуели от жадности. Датагрид платный, richtextbox платный, фикс багов платный, теперь еще и расширение для ide платное
724 3437053
>>436911
где можно увидеть платность датагрида и расширения для IDE?
про ричтекстбокс не знаю их там не один
фикс багов платный? с поддержкой не путаешь?
725 3437113
>>437053

> где можно увидеть платность датагрида и расширения для IDE?


https://github.com/AvaloniaUI/Avalonia.Controls.TreeDataGrid/issues/307
Про расширение можешь в телеге почитать. Текущая версия больше не будет обновляться, новая будет доступна только подписчикам avalonia accelerate

> про ричтекстбокс не знаю их там не один


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

> фикс багов платный? с поддержкой не путаешь?


Именно фикс багов. Issue на гитхабе рассматривают только от тех, у кого платная поддержка. Остальные могут годами висеть
image.png20 Кб, 443x362
726 3437630
>>419237

>[StructLayout(LayoutKind.Explicit, Pack = 1)]



А ещё такой каст это Undefined Behaviour (через Unsafe.As - тоже).
Пик: метод M() должен вернуть 15, а возвращает 1.

Просто вспомнил про вот этот вопрос: https://github.com/dotnet/runtime/discussions/96434
Хотел как-то сам проверить это, но чё-то не додумался тогда до кода.
727 3437819
Шарящие подскажите
Я короче хочу сделать приложение для андроид на c#, но меня волнует насколько дерьмовой будет работа с вызовами апи из андроид sdk из шарпа
Допустим я сделаю интерфейс на maui/avalonia/годот в конце концов, но насколько плохо будет взаимодействовать со всякими специфичными вызовами типа создания и удержания сервисов в пуш уведомлениях, всевозможных требованиях разрешений, микро, камера и прочее
Переход на Яву/Котлин/дарт/флаттер/другое мобильное наречие не рассматривается, по ряду причин
В целом у меня будет примерно такой функционал - сервис в пуше, держание открытого сетевого порта, который должен постоянно жить, флаг висящий в уведомлении, работа с storage access framework, ну и полный доступ к всем файлам internal storage.
Мимо гд пукальщик, решивший вкатиться в реальный мобайл, а не только игровой.
728 3437898
>>437819

>Я короче хочу сделать приложение для андроид на c#



мимо 5 лет на ксамарине писал приложения.

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



со стандартными вызовами всё хорошо будет. Просто будешь писать c# код, точно такой же как на джаве писал бы

> В целом у меня будет примерно такой функционал - сервис в пуше,



0 проблем

> держание открытого сетевого порта, который должен постоянно жить,



тут проблем не вижу, сетевое соединение 100% на стандартном дотнете будет написано (но есть сомнение, что оно вообще нужно, потому что даже нативный андроид будет пытаться фоновые процессы тушить)

> флаг висящий в уведомлении, работа с storage access framework, ну и полный доступ к всем файлам internal storage.



как будто стандартная фигня, ожидаю что нет проблем

Проблемы в dotnet-android только тогда начинаются, когда тебе нужно нативную JAVA библиотеку самому заворачивать в в c#. Это сложно, но нужно очень редко.

Всё остальное решается. Про производительность не думай, она достаточная, чтобы ты разницы не заметил.
729 3437920
>>437898

>(но есть сомнение, что оно вообще нужно, потому что даже нативный андроид будет пытаться фоновые процессы тушить)


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

>Проблемы в dotnet-android только тогда начинаются, когда тебе нужно нативную JAVA библиотеку самому заворачивать в в c#


Я так понял речь идёт про Java.Interop? У меня такого в целом не предвидится, я все намерен держать в с#, но на будущее интересно.

>Всё остальное решается. Про производительность не думай, она достаточная, чтобы ты разницы не заметил.


Насколько сильно бьёт по ядру с#, без учёта вызовов платформенного апи? У меня будет несколько высоконагруженных unsafe модулей, которые по хорошему должны бы иметь сопоставимую с плюсами производительность, как это происходит на Винде. По ним никакого удара на Андроиде не будет? Вроде бы и не должно быть, но мало ли.
730 3438680
>>437920

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



это не помешает андроиду затушить твоё приложение. Ты думаешь, один такой умный?
731 3438690
>>438680
Даже если заставить юзера отключить умный режим энергоэффективности для конкретного приложения? Как-то ж у меня работает вот эта штука без глушения, просто вися в фоне и в уведомлении
https://f-droid.org/packages/be.ppareit.swiftp_free
При чем работает даже находясь под другим юзером который в данный момент неактивен (у меня есть телефон с линейджем где несколько юзеров)
732 3438714
>>438690

Если ты используешь телефон как сервер, что довольно странно, то ты можешь позволить себе просто уведомление повесить, и оно не даст андроиду пристрелить твоё приложение.

Если ты пишешь обычное приложение для пользователей - то они его просто выкинут сразу, потому что либо работать НЕ БУДЕТ, либо их заебёт уведомление в шторке.
733 3438717
>>438714
Ну так а я о чем. Повешу foregroundservice которое делает несмахиваемое уведомление и по идее должно работать, просто чел сказал что сеть по какой-то причине все равно прибьет, не смотря на уведомление. Да и откуда уверенность что юзеров это напрягает? Их же медиаплееры не напрягают. Да и юзеров там обычно столько говнины из всевозможных помоек что мое уведомление даже не будет заметно) Впрочем у меня спецсофт для спецнужд, потому мою целевую аудиторию эта штука не должна смущать.

>Если ты используешь телефон как сервер


Видишь ли, если использовать мультиюзера в андроид 12+, то шарить файлы между юзерами можно только таким способом. Раньше, в 10 Андроиде я просто под рутом ходил в user11, user12 и т.д. и туда руками кидал и оттуда брал файлы, а вот начиная с 12 - юзерфайлы теперь живут в отдельном спейсе к которому даже под рутом доступа не получить. Вот и пришлось извращаться с ftp, который однако видели все юзеры и на который можно было кидать файлы.
734 3438729
>>438717

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



не, никто не говорил такого.

> спецсофт для спецнужд, потому мою целевую аудиторию эта штука не должна смущать



Я думаю учитывая этот факт, тебе надо начать с автомаппера и медиатра. Все крутые пацаны используют эти две библиотеки так как уважают CQRS и DDD. И если ты пишешь код в обход автомаппера - ты долбоёб с обоссаным лицом. Подумай в эту сторону
735 3438733
>>438729
Удваиваю автомаппер и медиатр. Это база треда. Знать надо.

как же проиграл!
736 3438769
>>438729
Написано

>тут проблем не вижу, сетевое соединение 100% на стандартном дотнете будет написано (но есть сомнение, что оно вообще нужно, потому что даже нативный андроид будет пытаться фоновые процессы тушить)


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


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

>медиатр


Возненавидел контейнеры ещё при знакомстве с zenject. Называется как наплодить вместо 1 проблемы 10. Лучше буду писать по дедовски на mvc, меньше геморроя будет и отладка проще.
737 3438849
>>438769
Уже и тут боты постят. Дожили.
738 3438903
>>438849
Извини если задел ранимые чувства рантайм падающего гоя живущего едиными автотестами, я не специально
739 3438916
>>438903
опять чатгпт мне пишет. позовите живого человека, желательно понимающего то, что он говорит.
740 3438964
>>438916
У нищих слуг нет, сам позови
741 3439041
>>438916
Привет, бро! Я живой человек, программист на c#. Чем я могу быть полезен?
742 3439487
>>439041
Пройди за меня тест Тьюринга, бро. Я хоть и не бот, но тест Тьюринга не могу пройти.
743 3439973
>>439487

>ройди за меня тест Тьюринга, бро. Я хоть и не бот, но тест Тьюринга не могу пройти.



Ты просто не полный
new.png605 Кб, 1582x952
744 3440347
Напоминаю, что создание объектов через NEW это устаревшая практика, которая нагружает сборщик мусора и создаёт в вашем коде ЗАПАХИ.

Для создания объектов рекомендуется использовать современные DI контейнеры:
Managed Extensibility Framework (MEF), Castle Windsor или StructureMap.

Так же хорошей практикой считается использование комбинации библиотек Automapper и MediatR, что позволит добавить валидатор, что позволит написать вам ВАЛИДАТОР и не даст создать некорректный объект
745 3440538
>>440347
Блять, забаньте уже этого долбоёба!
Нахуя ты упоминаешь протухшие и разложившиеся технологии и библиотеки?
746 3441028
>>440538

>Нахуя ты упоминаешь протухшие и разложившиеся технологии и библиотеки?



Потому что весь дотнет код должен быть единообразным и переведён к хорошим практикам DDD, CQRS, чистой архитектуры и SOLID.
747 3441241
>>440347

>нагружает сборщик мусора


Пусть в профсоюз жалуется.
748 3441242
>>441028

>DDD


Разве DDD не ломает к хуям SRP принцип из SOLID-а?
749 3441302
>>441242

>Разве DDD не ломает к хуям SRP принцип из SOLID-а?



Да кто бы знал, что за поебень этот ваш DDD
image.png49 Кб, 618x265
750 3442370
это спасёт от возможных уязвимостей?
751 3442405
>>442370

Частично. Непонятно только, зачем это делать, если можно просто у автомаппера установить UseSafeJsonBinding = true?
752 3442677
>>442370

>от возможных уязвимостей


от каких?
image.png85 Кб, 752x704
753 3442720
>>442677
тя ебать не должно от каких
754 3442776
>>442720
только НЕиспользование либы гарантированно защитит от возможных уязвимостей этой либы.
755 3442778
>>442720
нахуя ты в это говно полез устаревшее?

Все давно перешли на DataContractJsonSerializer

https://learn.microsoft.com/en-us/dotnet/api/system.runtime.serialization.json.datacontractjsonserializer?view=net-9.0
756 3442784
>>442720
Ну или вот на худой конец вот JavaScriptSerializer, https://learn.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer?view=netframework-4.8.1

Newtonsoft и System.Text.Json уже лет 5 как выкинули вслед за бинарной сериализацией
17444592968230.webm1,2 Мб, webm,
600x466, 0:07
757 3442795
>>442778

>нахуя ты в это говно полез устаревшее?


в юнити достаточно часто используемая библиотека - ну я и полез
758 3442867
>>442784

>System.Text.Json уже лет 5 как выкинули


Толсто.
изображение.png19 Кб, 920x246
759 3442895
>>442867
А в чем он толстит? оно же дырявое гуано
пик пруф
image.png24 Кб, 375x496
760 3442912
>>442895
Ой, а кто тут у нас пиздит?
761 3442921
>>442912
уж точно не я. это не фотошоп.
762 3442922
>>442912
впрочем даже на твоем скрине 2 мажорные!!!! версии дырявые
это о многом говорит.
763 3442935
Замечательный тред получился! Я воочию убедился, что дотнет полон тупорылыми долбоёбами, которые даже не понимают, какие библиотеки новые, а какие протухшие. Я могу быть спокоен за свою карьеру.
764 3442947
>>442935
дык все протухшие
потому что дотнет протух
а ты еще этого не понял
765 3442997
>>442922
Как и оба твоих отца!
766 3443002
Гайз, искал современную ОРМ для своего нового проекта, но так и не нашёл ничего годного кроме вот этого:

https://www.llblgen.com/Pages/newfeatures.aspx

Какие подводные?
767 3443164
>>443002
1. говно
2. платное
3. пользуются полтора анонимуса, так что спросить совета будет не у кого
768 3443185
>>443002

>Какие подводные?


4. Это нихуя не ORM, а просто моделлер и кодогенератор (для нормальной ОРМ, вроде того же EF). По сути инструмент для аналитиков, а не разрабов.
769 3443246
>>443185

А что посоветуешь? NHibernate выглядит перспективно.

https://subsonic.github.io/ тоже показался неплохим?
770 3443260
>>442922

>версии дырявые


>это о многом говорит


Это как с психами - ебанутые все, есть просто недообследованные. Абсолютно любой софт содержит уязвимости, просто не все они найдены. И на скрине как раз видно, что эти уязвимости находятся и регулярно исправляются. И system.text.json нифига не заброшен, а вполне себе актуален.
771 3443393
Почему System.IO.BufferedStream при диспозинге всегда вызывает Flush даже если было исключение при записи во внутренний поток? Т.е. если на внутреннем потоке возникла ошибка, он вообще сломан, этот буфер пытается несколько раз записать в поломанный поток, это ж полный бред.
772 3443396
>>443260

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


и добавляются новые.

>не заброшен, а вполне себе актуален.


а значит туда добавят еще кучу новых дыр.

>>443393
потому что он ничего не знает про исключение. Он, скорее всего, его просто не ловит, не пробрасывает, не ставит у себя флаг. Правильно ли это? думаю нет. Рукожопы же дырявые шарп придумали
773 3443399
>>443396
А как ему сообщить что всё кончено? Это ж типовой кейс, буферизуют же только медленные с дорогими операциями потоки которые имеют свойство ломаться.
774 3443401
>>443399
никак. их метод Dispose это нарушение ИХ ЖЕ правил написания диспозабле, то есть это нужно писать им в гитхаб и материть последними словами. А они через пару веков МОЖЕТ БЫТЬ пофиксят и добавят catch в их dispose
775 3443572
>>443401
BufferedStream был релизнут еще до гитхаба.
Там в другом проблема, ловить исключение внутри Dispose не надо, ненужно даже пытаться обращаться к внутреннему потоку если он в ошибочном состоянии.
776 3443586
>>443572

>BufferedStream был релизнут еще до гитхаба.


но писать то щас им нужно через гитхаб

>если он в ошибочном состоянии.


на внутреннем потоке не написано в каком он состоянии. И даже если написано (чего нет), то он может стать плохим посередине Flush

>ловить исключение внутри Dispose не надо


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

Я считаю что правильнее выбросить исключение вопреки рекомендациям. Работа с I/O она с особенностями, ведь абстракция stream дырявая.
777 3443590
Как в этом ёбаном решарпере сделать что бы показывал декомпиляцию методов? Покзывает только сигнатуры, хотя вроде в настройках всё выбрано. Еще он как будто херь кажет, у меня проект под старый фреймворк 4.8 а исходник (точнее его огрызок без сигнатур) который он показал от net 8.
778 3443603
>>443260

>И system.text.json нифига не заброшен, а вполне себе актуален.



А почему тогда он DEPRECATED?
779 3443605
>>443586

> ведь абстракция stream дырявая.



Как и оба твоих отца!
780 3443612
>>443605
у тебя какой то пунктик насчет отцов.
Тяжёлое детство, лишенное витаминов, деревянные игрушки, прибитые к полу?

по факт что IList, что LINQ, что Stream это крайне дырявые абстракции по свое природе (хотя с IList это из за крайней рукожопости изобретателей шарпа)
Это просто факты.
781 3443616
>>443612

>по факт что IList, что LINQ, что Stream



Шизик, ты опять на связь выходишь? Диспозаблом еще не научился пользоваться?
782 3443618
>>443616
ну вот челу выше про диспозабле расскажи
а то только пук среньк.
783 3443619
>>443618
+1, я разочарован. У меня все системя была завязана на этот BufferedStream, как можно было писать такой говнокод? Там еще самое смешное оно пытается 4 раза писать в дохлый внутренний поток. В паблике нигде нет как хотя бы эту константу поменять.
784 3443623
>>443619
абстракции текут, это норма (хотя не норма ничего с этим не делать как в шарпе)
но я не увидел в BufferedStream повторов (да и зачем ему)
785 3443627
>>443623
Ты где повторы смотрел? У меня net core 2.0.3 standard library и в логах несколько обращений к внутреннему потоку.
786 3443633
787 3443635
>>443633
В комментах написано это 4.7 может нет кор другая реализация?
788 3443643
>>443635
кор это другой рантайм, но зачем переписывать с нуля чисто managed классы. Вот тебе из 4.8
https://referencesource.microsoft.com/#mscorlib/system/io/bufferedstream.cs
789 3443646
>>443643
Ну они переписывают, видел на других примерах.
790 3443712
>>443643
Нашёл почему лишние флуши, это у меня рекурсивные рйтеры поверх стрима его вызывали при диспозах.
791 3443743
Что сейчас с рыночком? Вижу много свичуются на ГОвно, есть смысл? Мимо-мидл-кун
792 3443751
>>443743
Если не будет альтернативы ГОвна я лучше уйду из професии на СВО чем зашкварюсь.
image52 Кб, 1078x1075
793 3443949
Я что-то не понял.

Микрософты рекомендуют и в своих библиотеках размещают события и свойства ПОСЛЕ конструктора. Однако когда я смотрю сторонние библиотеки, там события и свойства ДО конструктора. Прямо какая-то борьба смыслов.

А вы где размещаете события/свойства?
794 3443990
>>443949
Похуй.
Я пишу так: регион с полями, регион со свойствами, регион публичного интерфейса, регион с приватными методами.
795 3444016
>>443990

>Я пишу так: регион с полями, регион со свойствами, регион публичного интерфейса



в нормальном коде регионов и комментариев не должно быть
796 3444025
>>444016
Бред. Как минимум для полей и свойств часто написать комментарий быстрее и проще, чем подобрать имя, которое в полной мере объясняет назначение переменной.
797 3444026
>>444025
Особенно если комментарии можно писать на русском.
798 3444030
>>444026
Я на русском пишу. Если все разработчики русскоязычные, то на кой мне писать комментарии на инглиши.
799 3444047
>>443949
Классы сервисы/прочие сложные классы - конструктор сразу после полей, так код намного лучше читается.

DTO-like классы - конструктор после свойств, так как в данном случае нас интересуют в первую очередь свойства, а не их инициализация из конструктора.
800 3444071
>>444025

> полей и свойств часто написать комментарий быстрее и проще



именно поэтому у нас запрещено писать комментарии. Уже четвёртый проект подряд. Потом поймёшь, почему так делается
801 3444103
>>443949

>А вы где размещаете события/свойства?


Похуй. Где стайлкоп скажет - там и размещаю.
802 3444113
>>444071
А регионы у вас разрешено использовать? Я категорически против технических регионов (типа Открытые Методы/Свойства), но мне нравятся логические регионы для разделения логики. Ещё Visual Studio красиво такие регионы подсвечивает.
BAZA.webm1,1 Мб, webm,
1920x1080, 0:06
803 3444116
image.png22 Кб, 364x158
804 3444262
>>444113

>А регионы у вас разрешено использовать?


#pragma warning disable SA1124 ебашишь и не спрашиваешь ничьего разрешения.

>>444113

>логические регионы для разделения логики


Ну если на самом деле, то это может быть удобно если в классе куча одинаковых перегрузок которые можно разделить по смысловым блокам, но распихивать по partial классам неудобно. Как на пике например.
805 3444271
>>444113

>А регионы у вас разрешено использовать? Я категорически против технических регионов



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

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

Хз, так по ощущениям, комменты пишут только совсем джуны, чтобы непонятно что. Как будто оправдываются, что-ли
806 3444316
>>444116
На С# написано?
image145 Кб, 1306x863
807 3444875
ЧатГПТ - самый продвинутый ИИ бот. Тем временем приводит мне пикрелейтед "аргументы".
808 3444979
>>444875
что за говно ты притащил? что пытался этим сказать?
809 3444981
>>444979
Нейролахта бегает по всем тредам и подогревает интерес к ИИ.
810 3445058
>>444981
ну хуй знает, пока от этого ЭЙАЙ допросишься, что нужно напрограммировать, все пальцы сотрёшь
image282 Кб, 1866x663
811 3445291
>>444979

>что пытался этим сказать?


ИИ, чтобы доказать свою правоту, тупа обнулил переменную, чтобы дальше произошёл NullReferenceException. Но, справедливости ради, дипсик всё правильно расписал и не пытался мне шизу загнать.
812 3446131
На неделе понял, что для написания тестов лучше не использовать wiremockserver, а сразу замокать хендлер в http клиенте: RichardSzalay.MockHttp.

Wiremock заебал очень сильно. АПИ там такое себе, средненькое, каких-то приемуществ поднимать внутри процесса по одному реальному серверу на один тест не вижу.

Хендлер замокать в сто раз дешевле
813 3446564
>>446131
Почему бы просто не написать интеграционный тест? Смысл проверять, как ты из одного мока перекладываешь в другой?
У нас моки сторонних сервисов на гошке, тесты на питоне. Всех поднял, дернул ручку, проверил ответ.
814 3446618
>>446131

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


Каких тестов: модульных, интеграционных, нагрузочных?..

>сразу замокать хендлер в http клиенте


Знающие разработчики давно так делают.
Никакие дополнительные библиотеки для этого не нужны.
815 3446841
>>446564

>Почему бы просто не написать интеграционный тест?


Это очень дорого, под интеграционные тесты нужно настраивать окружение со всеми зависимостями. Базу данных, моки.

>на питоне


Я что, на ебанутого похож?

>>446564

>Знающие разработчики давно так делают.


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

Для начала начал делать как бы интеграционные тесты https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-9.0 . Но быстро столкнулся с тем, ч

>Каких тестов: модульных


Склоняюсь в этот раз писать юнит-тесты. Но более общие. Не проверять что цепочка интерфейсов вызвалась по порядку, а разбить код на CQS и тестировать, например, что команда отправила корректный HTTP запрос и записала данные в репозиторий.
Имею обильную практику ТДД, и считаю что это тоже очень дорого: буквально надо заваливать код абстракциями и тестами. Притом, нужно иметь очень высокий уровень в команде и дисциплину.
816 3446973
Анонче, можно ли для чужой программы на дотнете как-то сам дотнет добавить, чтоб портативная версия была?
817 3447014
>>446973

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



хуй знает, о чём ты.

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

Можешь в докер-контейнер завернуть и пойти нахуй
818 3447579
Есть вариант перекатится из разработчика баз данных в разработчика С#. В вакансии .NET, NET Core, REST и PostgreSQL. Вроде не веб, и вроде и не десктоп. Есть идеи чем предстоит заниматься с таким стеком?
819 3447589
>>447579
Что-то предоставляющее апи. Это может быть что угодно
820 3447658
>>447579

> Есть вариант перекатится из разработчика баз данных в разработчика С#



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

> .NET, NET Core, REST и PostgreSQL.



веб скорее всего: бек или фулстек
821 3447664
Сталкиваюсь с проблемой инвалидации кеша в распределённом кеше на базе редиса

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

md5("сервис"+"его метод"+"id сущности, которую кешируем")

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

Ну и выкинуть их, соответственно, тоже.

Возникает серия вопросов:
- КАКОЙ ПИДОРАС ПРИДУМАЛ ТАКОЙ ЁБНУТЫЙ КЕШ? ОН ЖЕ УЩЕРБНЫЙ
- Как у вас сделано?
822 3447701
>>447658

>веб скорее всего: бек или фулстек


На чистом C#? Без ASP.NET? Такое бывает?
823 3447759
>>446973
Да. Конечно. Скачиваешь нужный дотнет-рантайм, даже сдк не нужно качать.
https://dotnet.microsoft.com/ru-ru/download/dotnet/8.0/runtime
824 3447788
>>447664
Зачем тебе нужен распределенный кеш? Чтобы что?
825 3447981
>>447579
Будешь перекладывать жысоны из апи в бд и обратно.
826 3447990
>>447664
А нахрена хэшировать ключ?
Убери хэширование и твоя жизнь наладится.
827 3448073
При логировании какие есть подходы сохранения на диск что бы не получить оверхед? Если делать flush на каждом сообщении всё не сильно но тормозит. Если при заполнении большого буфера могут быть лаги. А как правильно, есть примеры?
828 3448074
>>448073
какие лаги? ты пишешь лог. логгер получает твой лог просто ставит на обработку в другом потоке не тормозя тебя. И дальнейшая работа логгера твоего кода уже не касается.
829 3448075
>>448074
Это какой-то крутой логер, какой ты имеешь ввиду? У меня самодельный, на основе трассировки через TraceListener.
830 3448079
>>448075
Ну любой из известных.
А так все ж просто - если нельзя задерживать код, то и не задерживай. Можешь использовать очередь типа BlockingCollection/Channel (или ручной лисапед), можешь Dispatcher (если логать в гуи, и он же тоже очередь), можешь прямо в буфер копить и при флюше родить другой буфер и лить в него, пока в первый в файл скидывается (это если жалко лишних потоков и хочется примитив)

Хоть так, хоть этак. Просто считай накладные расходы того или иного решения и выбирай.

и вообще у ии спроси. он тебе расскажет.
831 3448088
>>448079
Похоже недолго нам осталось, ии все написал из кривого запроса. :С
832 3448098
>>448088
не говори ерунды. а контрол ц + контрол в кто нажмет? то то же.
833 3448179
>>447788

>Зачем тебе нужен распределенный кеш? Чтобы что?



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

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

834 3448181
>>448073

> При логировании какие есть подходы сохранения на диск что бы не получить оверхед?



А зачем копаться в том, что до тебя уже написали в Serilog или NLog?
835 3448184
>>447701
А как REST написать но без веба?
836 3448188
>>448184
Через сокеты?
837 3448208
>>448184
HTTPListener
838 3448215
>>448179
У вас какая-то наркоманская архитектура. Есть сервис, он отдает данные. Другие сервисы просто эти данные запрашивают каждый раз и не парятся с кешами. Внутри этого сервиса ты можешь поставить редис и отдавать данные с него, чтобы выдержать SLA на чтение, но другие сервисы про этор ничего знать не должны. Синхронизация мастер базы с редисом делается через аутбокс внутри сервиса, снаружи это черный ящик для всех.
839 3448236
.NET
@
NHIBERNATE
@
САМИ КИШКИ NHIBERNATE ВНУТРИ САМОПИСНОЙ БИБЛИОТЕКИ
@
РЕПОЗИТОРИЙ


Я блять уебать хочу тем кто это делал.
840 3448294
>>448236
Непонятно, зачем в 2025 году нужен NhIbernate, если можно взять автофак?
841 3448296
>>448215

>У вас какая-то наркоманская архитектура. Есть сервис, он отдает данные.



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

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



тут вообще нихуя не понял. Даппер подойдёт?
842 3448324
>>448181
У меня в проекте только трассировка через системный TraceListener
843 3448402
Какого формата делать пет проект, если я хочу изучить C# в контексте создания апи для PostgreSQL (моя текущая специальность)? Можно ли сделать его как-то отдельно, без веб сервера. У нейросети уже спросил, интересно мнение спецов
844 3448485
>>448402

>апи для PostgreSQL


>У нейросети уже спросил

photo2023-03-1208-34-11.jpg97 Кб, 640x640
845 3448642
>>448402
Напиши стандартную DDD очередь обработчиков событий отубокса агрегатов с автомаппингом на всех слоях чистой архитектуры.

Обязательно используй самые современные практики аспектно-ориентированного программирования, все вызовы делай через MediatR. Так же рекомендую отказаться от вызовов NEW.
846 3448841
>>448642
Мудила, ты опять выходишь на связь?
я просто хочу разобраться.jpg73 Кб, 960x697
847 3448967
Привет всем, я пишу код на сишарп, но я не собираюсь учить всю эту мутную хуйню про .net, многопоточку, сборщик мусора и финализатеры.

Правда ли, что есть волшебная библиотека, что-то типо лайвтаймов, которая сама решает все эти проблемы?
848 3448968
>>448642

>рекомендую отказаться от вызовов NEW


Согласен, Activator.CreateInstance прикольнее выглядит.
849 3448969
>>448967
А какие у тебя проблемы по перечисленным пунктам?
850 3448972
>>448968
Да какая разница, чем объекты создавать, главное, чтобы не выделять память через NEW, и не создавать давление на сборщик мусора
851 3448974
>>448972

>не создавать давление на сборщик мусора


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

>чтобы не выделять память через NEW


Плюсовики двумя этажами ниже, рядом с парашей. Впрочем тебе никто не мешает реализовывать IDisposable, и сам чисти за собой.
852 3449118
>>448972
Я готов поспорить на деньги, что ты не понял сути про new.
Я неоднократно переписывал код за имбецилами, у которых не было new. Я его добавлял и код начинал работать быстрее, памяти потреблялось меньше, GC отдыхал.
853 3449643

> что ты не понял сути про new.



Нахуя её понимать? Устаревшая хуйня, просто выкидывай и не пользуйся
854 3449680
>>449643
Что пришло на замену? медиатр?
855 3449714
>>449680
И автомаппер.
856 3449967
Мамкины программисты, поясните такое. Пишу в свободное время два кодогенератора, и у меня возникает ощущение, что это абсолютная поебота.

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

Отладчик не подключишь. Говно, короче, обоссаное, зла не хватает
857 3450074
>>449967

>зла не хватает


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

А по факту - еще мало тысяч лет прошло, чтобы все сделали нормально
858 3450544
>>449967
Что ебаться? Добавить 2 тега и собрать проект с помощью package?
859 3450844
>>450074

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



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

На подключение автомаппера и медиатора у меня ушло 4 часа. На кафку и получение событий из шины доменных сообщений ушло 2 недели (!!!). Две недели, карл, на то, чтобы в сраном генераторе ловить доменные события
860 3451035
Какого вам осознавать что вонючий позорный петушарп многократно медленнее джавы и проигрывает как в реальных задачах, так и в писькомерстве типо тех погодных станций (аж чуствую как с этим словом начала нагреваться срака шарподебилов)? Тормозные мелкохуи. Мне вас жалко.
861 3451040
>>451035
Какого в выходной день вместо занятия интересными делами и посиделками с друзьями срать в программаче?
862 3451047
>>451035

>петушарп многократно медленнее джавы


https://programming-language-benchmarks.vercel.app/csharp-vs-java
Иди пиздаболь в другое место, например к своим соседям по оракл петушатне.
863 3451052
image.png47 Кб, 1033x324
864 3451113
>>451047
Лол.
865 3451222
>>451113

>наши хелловорлды самые памятинежрущие хелловорлды


Я тебя понял, лаба1.
866 3451226
>>451113

>дотнет аот


>грааль аот удобным образом не приведён


Как же автору статьи не пригорает с заглатывания его копроязыка, лооол.
867 3451231
>>451035
Ну зачем ты пишешь неприятное? Теперь мне очень тревожно и я не уверен, не стоит ли мне учить прокисший спринг 94 года
868 3451245
>>451226

>>дотнет аот


>>грааль аот удобным образом не приведён


Да похуй на АОТ так-то. Кто бы им еще пользовался.
869 3451249
>>451226

>автору статьи не пригорает


>статьи


А ты не очень умный.
870 3451254
>>451245

>вот наш аот всем аотам аот


>грааль аот есть так-то и пизже


>ррррряяя нинужна



>>451249
Что сказать-то хотел?
871 3451256
>>451231
Спринг это помои и любой джаван тебе это скажет. Конкретные признаки (строение тела, гены HOX, экзоскелет, линька) — ставят их рядом с артроподами и нематодами.
872 3451269
>>451113
Похуй на эти манятесты. В реальности дотнет - это стадо фулстек паджитов с автомапером, сраным ажуром, и зарплатой 1500 долларов за 10+ лет опыта.
873 3451618
>>451269

>1500 долларов за 10+ лет опыта.


Хз, я за 270 устроился для начала.

Мимо переехал с гейропы, чтобы поддерживать рублём СВО
874 3452159
Стоит ли учить джаву или C# на ру рынке тоже котируется?
875 3452511
>>452159
Да, стоит, джава осталась в 94 году
876 3452515
>>452511
Устарела до своего появления?))0
877 3452519
>>452515
Ты когда-нибудь писал ДЕКЛАРАТИВНЫЙ DDD в XML?
878 3452690

>Pauseless Garbage Collector (Question)


https://github.com/dotnet/runtime/issues/96213#issuecomment-2847600740

>I had an old pet project around (https://github.com/VSadov/Satori). There is a small GC that can do low pauses. In LowLatency mode the pauses are typically under 1-2 milliseconds.



Я думал что на "нинужно" обсуждение и закончится.
879 3452836

> Вакансия: Junior C# Developer


> Опубликована: Вчера


> Откликов: 200-250



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

а далее просто подтверждаешь свои слова - и ты принят.
и никаких знакомств не надо.
881 3452848
>>452519
Разумеется, нет. Потребность в ДДД возникает на таком этапе, когда в ХМЛ уже никто не лезет ручками, а исключительно своими утилитами, которые являются частью сформировавшегося вокруг продукта девелоперского тулкита.
882 3452938
>>452848

>а исключительно своими утилитами


Бля, вот бы сейчас для написания промышленного кода какими то ебаными "своими утилитами" пользоваться. Ты еще скажи собственные bash скрипты для деплоя писать.
883 3453730
>>452938
А у них (утилит этих) тоже код промышленный. А? А? Уел!
884 3455271
Я тут сделал что бы упорядочить доступ к одному ресурсу общий метод доступа к нему в котором обложил через try .. finally доступ через SlimSemaphore. Всё было ок, но встала проблема вложенных вызовов этого метода, и тут семафор встаёт колом. Как правильно разрулить данную ситуацию? Как отследить что вызов в этом методе возможно рекурсивный и не обойи семафор? Или может есть способы получе, без семафора?

async ValueTask<TResult?> ExecuteAsync<TResult>(CancellationToken ct)
{
await BusySemaphore.WaitAsync(ct);
try
{
// TODO:
return result;
}
finally
{
BusySemaphore.Release();
}
}
885 3455432
>>455271
ну так не делай семафор во вложках
вынеси свое TODO в ExecuteInternalAsync и внутри него никаких семафоров. его и вызывай из методов с семафором
886 3455686
>>455271
Этот анон >>455432 дело говорит. Блокировка берется на входе на самом верхнем уровне, дальше идет обычный код без локов.
887 3455747
>>455271
https://github.com/neosmart/AsyncLock
Вот этот парень решил проблему вложенных блокировок в рамках асинхронного кода, получая информацию о повторном входе с помощью связки информации Thread.id + Task.CurrentId + Stack информация. Если до усеру надо сделать вложенное (а я знаю что иногда надо) - можешь попробовать воспользоваться его подходом.
888 3455767
>>455747
Ох как сложно при наличии AsyncLocal
889 3455782
>>455432
>>455686

Надо подчеркнуть, вызов ExecuteAsync может быть как из прикладного уровня, тогда блокировка должна быть, так из другого экземпляра ExecuteAsync в части которую я обозначил TODO, там на самом деле делегат который передаётся в ExecuteAsync. Во втором случае надо что бы срабатывала только блокировка самого первого уровня а вложенные выполнялись без.

>>455747
Cложна :С
890 3455811
>>455782

>там на самом деле делегат который передаётся в ExecuteAsync


А какая разница. Если в самом делегате ни про какие локи не знают, то он выполнится в контексте метода, в который его передали и который занимается локами.

То есть можно легко написать свой AsyncLock который будет отслеживать повторные заходы во вложенных методах

но зачем
891 3455816
>>455811

>но зачем


Что бы не дублировать код. В классе будет куча безопасных методов которые внутри вызывают ExecuteAsync с разными прикладными сценариями, часть этих сценариев в свою очередь тоже может вызывать такие методы и тут и надо не словить двойной лок.
892 3455826
>>455811

>То есть можно легко написать свой AsyncLock


Я так понял асиклок работает только для случая кода упорядоченного через async/await, у меня же потенциально многопоточный случай (клиент это фреймворк с гуем типа MVVM с асинхронными событиями и т.п.), собственно поэтому и привлёк семафор.
893 3455829
>>455782

>Надо подчеркнуть, вызов ExecuteAsync может быть как из прикладного уровня, тогда блокировка должна быть, так из другого экземпляра ExecuteAsync в части которую я обозначил TODO, там на самом деле делегат который передаётся в ExecuteAsync.


Тебе уже сказали - просто не делай так.

>>455816

>Что бы не дублировать код.


Да, даже дублирование кода будет лучше, чем потом однажды сидеть и разгребать ту хуйню которую ты уже наворотил и еще наворотишь.
894 3455833
>>455829
Почему не делать? Как ты предлагаешь корректно синхронизировать доступ?
895 3455839
>>455833
Тебе уже сказали - все локи должны быть верхнеуровневые. Если у тебя где-то внутри есть конкурентность, то ты выносишь этот функционал в отдельный сервис и локаешь там. Всю рекурсию убирай к хуям - нехуй ей там делать.
896 3455844
897 3455937
>>455767
Ну можно и на него завязаться
image.png7 Кб, 651x68
898 3456014
>>455747

>https://github.com/neosmart/AsyncLock


А остальной код корректный?
899 3456059
>>456014
Хз, я свой лок писал на основе концепции этого, вроде работает, код не дам, все таки такие костыли редко кому нужны.
900 3456134
>>456059
Асинклок по ссылке выше не тянет многопоток, это другое.
901 3456149
>>456134
Можно отредачить static и переделать код так чтобы свойство всегда возвращало текущее айди потока а не замораживалось на первом айди. Впрочем тот кусок из легаси блока, можно его втупую закомментить, на то человеку и дана голова, я просто ткнул что мне попалось когда я решал эту проблему, подход рабочий.
902 3456195
>>455826

>для случая кода упорядоченного через async/await


ну тут асинк вижу я
async ValueTask<TResult?> ExecuteAsync<TResult>(CancellationToken ct)

>собственно поэтому и привлёк семафор.


ну так то для чистого лока класс Monitor есть, который под капотом у lock() - и у него есть разные методы определения залочен ли он под данным потоком.
903 3456201
>>456195

>ну тут асинк вижу я


Так это ортогональные понятия. Сам вызов асинхронный что бы не блочить гуй, но вызовы могут быть из разных ниток и накладываться друг на друга.
904 3456216
>>456201
все равно. если у тебя lock, то его суть - не дать ДРУГИМ потокам влезть в заблокированный ресурс. То есть если у тебя прыг скок по потокам, то это уже асинк, иначе же - классическая модель лока при многопоточности
Поэтому проверка во вложенных методах "кто ко мне лезет то, чужак или владелец блокировки" есть в классе Monitor
Monitor.IsEntered(Object) - если да, то пришел владелец текущей и его не нужно локать. Если нет - то значит Monitor.Enter/Exit и чужой поток станет в ожидание

конечно это увеличивает портянку. хотя можно обернуть в какой нибудь свой ref struct по красоте и юзать с using
905 3456275
Хэш код для массиовов целых как считать если эквивалентность по содержиомому как у упорядоченной последовательности?
906 3456278
>>456275
просто по содержимому. Как ты собираешься его упорядочивать то. Даже по содержимому дорого, а с сортировкой вообще труба
907 3456281
>>456278
Не, под упорядочиванием я имел ввиду обычный массив. А как поступают в таких случаях?
908 3456286
>>456281
хеш код это хеш код. ты его делаешь для ускорения всяких там словарей, чтобы проверка равенства была реже.
И это тебе виднее что есть "равность данных объектов".
поэтому хешкод вычисляется так же, как и Equals работает.
Не забывая о цене вычисления хешкода. Ведь посчитать его для миллиона лонгов уже время. А если потом будет добавлен элемент то снова считать?

Поэтому обычно просто берут ссылки, а в содержимое не лезут. Но если тебе нужно сравнивать содержимое. то придется платить ресурсами и не забывать про мутабельность.
909 3456289
>>456286
Ясно, наверное плюну на него. Прочитал что он только для хеш словарей нужен которые мне не нужны. У меня везде рекорды вместо классов но у некоторых внутри массивы так что приходится эквивалентность вручную писать.
G031WJYjo.jpg60 Кб, 320x320
910 3456713
911 3456714
>>456713
Текст не читал, просто через чат-джипити нахуячил
912 3457411
Каким все таки мудацким решением было добавлять в язык !, который позволяет обходить warningaserror и писать лютый говнокод
913 3457589
>>457411
Альтернатив нету
image.png66 Кб, 1500x408
914 3457832
>>457589

Да ебани вот такой метод просто, его легче чем восклицательный знак в коде заметить, и упадёт там, где надо.
915 3457836
Дежурно напоминаю, что монго-биби говно из жопы:

- за место документации рекламный буклет
- это буквально помойка JSON-ов
- транзакции не гарантируют нихуя
- синтаксис блядский

Всё? Или чего-то забыл?
916 3457842
>>457836
забыл пояснить причем тут шарп?
917 3457860
>>457836
Кому ты это напоминаешь? Кто спорит?
918 3457972
>>457860
Ты сишарп программист в вакууме?
919 3458048
>>457832
По мне так весь подход с этой зануляемостью это вообще долбоебизм. Зачем заставлять перебрасывать тоже саме исключение, да я назло в сообщении ничего писать не буду что бы компилятор отъебался.
920 3458049
>>458048
Уволен!
921 3458648
>>458048

>Зачем заставлять перебрасывать тоже саме исключение,



Ну, когда ты затыкаешь компилятор, это означает, что ты гарантируешь, что исключения не будет, поэтому думать об ошибке не зачем
922 3458688
>>458648
Ну это бред же. Во-первых умолчания нормальная фича языка, иначе зачем они вообще нужны? А во-вторых, дот нет (и вообще управляемое исполнение в vm) когда только появилось, они это именно как киллер фичу преподносили что теперь на нулевом указателе (ссылке) у тебя будет культурное исключение которое легко обработать а не падёж системы, а спустя 20 лет опять форсят ручные проверки с кучей бойлеркода.

У меня такое впечатление что первое поколение нормальных проектировщиков отошло от дел, пришла вся эта педрильня с чурбанами и бабами по квотам которая своими охуительными идеями (некомпетентностью) разрушает великое здание построенное предками.
923 3458702
>>458688

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


ага, будет. НЕИЗВЕСТНО в какой момент и где. Вместо того чтобы зарубить на входе, оно пройдет через 3 уровня, попутно будет выполнено 100500 работы, которой выполнять не следовало бы, а потом упадет как NRE, оставив всё в несогласованном состоянии "хер пойми где реально упало и что с этим теперь делать"

null safety не защищает от хождения null, а всего лишь проверяет чтобы nullable не испольовалось в not-null контексте. Но делает это хреново (убогость анализатора, все же сложная задача) и недостаточно средств (где lateinit я вас спрашиваю)

Так что в месте соприкосновение null safety и старого кода все эти ThrowIfNull сам бог велел (и угрожал сделать плохо котятам) ибо выполняется концепция fail-fast.
924 3458723
>>458702
Я в курсе официальной точки зрения, я как раз и утверждаю что это внутренне противоречивая херь. Она противоречит изначальной философии языка, тогда бы делали какой ни будь optional без null как в некоторых фп языках. Только это уже не был бы с-подобный язык.
925 3458779
>>458723
изначальная философия языка - делаем свою java.
поэтому дизайном языка особо не занимались.

Нет там никакого противоречия. Потом поняли что null типы по дефолту это плохо и что то стали с этим делать. Но ПОТОМ.
Там вообще плохо с своевременным пониманием очевидных вещей. Таких вот "но потом" хватает - и не все из них чинят.
926 3458810
>>458779
Противоречие есть и доказыавется это строго формально - достаточно взять почти любой старый код даже в BCL будет с кучей ворнингов.

Т.е. они развернули концепт на 180 градусов и это типа не противоречие? Ну тогда у нас разное понимание того что такое противоречие.

Ещё кстати забыли упомянуть про уёбищность синтаксиса. Когда в коде много зануляемых типов исходник с стенами знаков вопросов выглядит как поехвашая кодировка.
927 3458838
>>458810

>Т.е. они развернули концепт на 180 градусов и это типа не противоречие?


кто тебе что разворачивал
Это просто исправление "ошибки на миллиард долларов" какое смогли.
Причем на уровне хинтов, а не "мы не дадим тебе скомпилировать говнокод" - не нравится, не включай этот доп анализ и пиши в любом стиле.
928 3458854
>>458838
Ты какой-то туповатый, выше показывали говнокод который провоцирует этот подход, т.е. тупые проверки которые выбрасывают тоже самое исключение что и по умолчанию.
929 3458880
>>458854

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


да щас.

var foo = *.ThrowIfNull(SomeMethodReturnNull)
RunMethod(foo )

при ThrowIfNull ты получишь И ПРЕРВЕШЬ поток выполнения сразу (fail-fast)
без ThrowIfNull - твоя переменная foo укатится далеко куда то, попутно выполняя код, который НЕ ДОЛЖЕН выполняться, и уже потом КОГДА-НИБУДЬ вылетит NRE (может пипец как отложено, если эта foo не вызывается как foo.(), а служит ключом к словарю или еще чего)

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

зато ты умный )
930 3458896
>>458880
У тебя логика поломана в утверждении про укатывание куда-то не туда глубоко в код. Внезапно ссылка пока не нарвалась на null разыменовывание вполне себе имеет право катиться куда хочет. С чего ты взял что она должна проверяться в момент её создания? Это вообще новое противоречие, по-твоему null ссылок вообще не должно существовать.
931 3458903
>>458896

>С чего ты взял что она должна проверяться в момент её создания?


не в момент создания, а на границе контекста. Там она еще НЕ успела натворить беды и место ясное для поиска проблемы. NRE может выскочить и через неделю и 100 сервисов после появления null. Удачи тебе в поисках причин.

>У тебя логика поломана в утверждении про укатывание куда-то не туда глубоко в код


дальше нет смысла спорить. Опыт всего мира против твоего "а я не согласен".
Если у тебя ума не хватает представить, что полученный нул может разыменоваться ОЧЕНЬ ДАЛЕКО от места появления - ну значит ты профессией ошибся.

>по-твоему null ссылок вообще не должно существовать.


Ну у нас тут не rust все же. Так что я не противник null, но противник nullable type по умолчанию. Не просто так это называется "ошибка на миллиард долларов".
Так что null safety в шарпе костыль, но все же добро - проверяем только на границе, а дальше нам помощник компилятор.
932 3458914
>>458903

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



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

>NRE может выскочить


В арго пориджей не разбираюсь.

>Опыт всего мира против твоего "а я не согласен".


Отсылочки к массовки пошли. А этот весь мир случаем не в одной с тобой комнате стоит?

>Если у тебя ума не хватает представить, что полученный нул может разыменоваться ОЧЕНЬ ДАЛЕКО от места появления - ну значит ты профессией ошибся.



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

>Не просто так это называется "ошибка на миллиард долларов".



Ты слышал звон а не знаешь где он. Экстремисты противники нулей сидят в других средах (всяких ФП) где нет такого понятия и не отсвечивают. Разговор о том что именно в C-подобном шарпе это сделали максимально тупо заставив ворнингами писать бойлеплейт с проверкой того же самого что делает сама среда.
933 3458931
>>458914

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


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

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


другие исключения они вылетают СРАЗУ. Смекаешь разницу? СРАЗУ!!!!
для особо умных повторю С-Р-А-З-У

Для очень умных - нулл сылка после рождения может попасть в очередь, куда то там передаться, где то сохраниться и потом где то может понадобиться через месяц рантайм, в том числе и в коде восстановления лол. И вот тогда БАБАХ.
Восстанавливайся, не обляпайся )

>В арго пориджей не разбираюсь.


неуч. NullReferenceException (NRE)

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


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

>Ну у чела с зарплатой несколько лямов в год из M$ вон не хватило раз такой язык нахерачил


он просто копировал жаву на тот момент и это не секрет. А вот изобретатель самого понятия null назвал свое детище ошибкой.

>в C-подобном шарпе это сделали максимально тупо заставив ворнингами писать бойлеплейт с проверкой того же самого что делает сама среда.


Ну так не пиши. Никто тебя не заставляет. nullable проверки они ОПЦИОНАЛЬНЫ. Выключил их в файле проекта и пиши себе по старинке, как дурак. Никто не запрещает делать идиотские поступки.
Не хочешь помощи компилятора, ты же мудр - ну и флаг тебе в руки.
Но только не учи своим идиотским манерам других разработчиков.

ps: по той же причине писать на компилируемых языках проще чем на динамических. Потому что не нужно 100000500000 тестов на проверку что в переменной вдруг окажется не то, что ожидается и это выяснится лишь в рантайме на проде, за который тебя вые....т и слушать твои басни не будут про варнинги.
933 3458931
>>458914

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


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

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


другие исключения они вылетают СРАЗУ. Смекаешь разницу? СРАЗУ!!!!
для особо умных повторю С-Р-А-З-У

Для очень умных - нулл сылка после рождения может попасть в очередь, куда то там передаться, где то сохраниться и потом где то может понадобиться через месяц рантайм, в том числе и в коде восстановления лол. И вот тогда БАБАХ.
Восстанавливайся, не обляпайся )

>В арго пориджей не разбираюсь.


неуч. NullReferenceException (NRE)

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


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

>Ну у чела с зарплатой несколько лямов в год из M$ вон не хватило раз такой язык нахерачил


он просто копировал жаву на тот момент и это не секрет. А вот изобретатель самого понятия null назвал свое детище ошибкой.

>в C-подобном шарпе это сделали максимально тупо заставив ворнингами писать бойлеплейт с проверкой того же самого что делает сама среда.


Ну так не пиши. Никто тебя не заставляет. nullable проверки они ОПЦИОНАЛЬНЫ. Выключил их в файле проекта и пиши себе по старинке, как дурак. Никто не запрещает делать идиотские поступки.
Не хочешь помощи компилятора, ты же мудр - ну и флаг тебе в руки.
Но только не учи своим идиотским манерам других разработчиков.

ps: по той же причине писать на компилируемых языках проще чем на динамических. Потому что не нужно 100000500000 тестов на проверку что в переменной вдруг окажется не то, что ожидается и это выяснится лишь в рантайме на проде, за который тебя вые....т и слушать твои басни не будут про варнинги.
934 3458975
>>458914
я вообще потерял нить что тебе не так. Впрочем, я ее изначально не понимал.

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

NRE это ВСЕГДА ошибка разработчика. Ошибки разработчика не должны попадать в прод и восстанавливаться из-за него в принципе уметь не нужно. Если летит NRE которого не ждешь, то у тебя 100% ошибка в коде. В твоим или нет - не суть важно. Нельзя доверять коду, в котором ошибка. Так что всё твое "восстанавливается" это "отловили, сообщили пользователю "ой беда какая то", залогировали, сообщили разработчику.
ThrowIfNull реализует концепцию fail-fast, то есть "упали сразу" - ближе к месту проблемы и не успели ничего натворить.

Чем NRE отличается от "любое другое неизвестное исключение?". Да ничем особо, верно. Любое исключение может быть далеко от места проблемы. И восстановление это "залогировали и показали пользователю "неизвестная бяда""
Но принцип fail-fast заставляет нас проверять разные там инварианты, что все правильно и NULL не исключение - если может быть "не то", то мы обязаны это проверить как можно ближе к точке возникновения проблемы. Ты же проверяешь чтобы твоя зарплата не была меньше 0 - вот тут точно так же. И ты не хочешь об этом узнать через год, что оказывается "у нас не сошлось, мы значит тебе лишнее выплатили, теперь верни, иди там разбирайся теперь в куче бухгатерии где ошибка то была".

Тут ты скажешь "какой такой fail-fast. в жопу эту концепцию. я пишу нормально и все ок. у меня в рантайме не будет NRE"

Это верно. Но почему не будет? Потому что ты
а) держишь контекст в голове и понимаешь "тут этого не будет"
б) доверяешь своему коду

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

Вот поэтому и null safety - компилятор проверяет за нас. Если мы видим string foo(), то мы точно знаем что нулла там не будет, а если string? foo(), то может быть. И компилятор заставит нас это учесть. И это ХОРОШО.
Меньше контекста в голове, меньше вероятность ошибок при рефакторинге. Сплошная выгода

Без null safety ты не можешь знать может быть тут нулл или нет. возможно ТЕБЕ пох ибо "ну упадет и ладно", но вообще то лучше "пусть упадет сразу, а не через месяц в неожиданном месте в catch"

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

зы: опять же про динам языки. вон в питоне динамическая типизация. но когда хинты насыпали, то их стали активно юзать (ну кроме некоторых упоротых). Потому что это реально разгружает голову (а значит и меньше ошибок из-за перегрузки контекста).
934 3458975
>>458914
я вообще потерял нить что тебе не так. Впрочем, я ее изначально не понимал.

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

NRE это ВСЕГДА ошибка разработчика. Ошибки разработчика не должны попадать в прод и восстанавливаться из-за него в принципе уметь не нужно. Если летит NRE которого не ждешь, то у тебя 100% ошибка в коде. В твоим или нет - не суть важно. Нельзя доверять коду, в котором ошибка. Так что всё твое "восстанавливается" это "отловили, сообщили пользователю "ой беда какая то", залогировали, сообщили разработчику.
ThrowIfNull реализует концепцию fail-fast, то есть "упали сразу" - ближе к месту проблемы и не успели ничего натворить.

Чем NRE отличается от "любое другое неизвестное исключение?". Да ничем особо, верно. Любое исключение может быть далеко от места проблемы. И восстановление это "залогировали и показали пользователю "неизвестная бяда""
Но принцип fail-fast заставляет нас проверять разные там инварианты, что все правильно и NULL не исключение - если может быть "не то", то мы обязаны это проверить как можно ближе к точке возникновения проблемы. Ты же проверяешь чтобы твоя зарплата не была меньше 0 - вот тут точно так же. И ты не хочешь об этом узнать через год, что оказывается "у нас не сошлось, мы значит тебе лишнее выплатили, теперь верни, иди там разбирайся теперь в куче бухгатерии где ошибка то была".

Тут ты скажешь "какой такой fail-fast. в жопу эту концепцию. я пишу нормально и все ок. у меня в рантайме не будет NRE"

Это верно. Но почему не будет? Потому что ты
а) держишь контекст в голове и понимаешь "тут этого не будет"
б) доверяешь своему коду

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

Вот поэтому и null safety - компилятор проверяет за нас. Если мы видим string foo(), то мы точно знаем что нулла там не будет, а если string? foo(), то может быть. И компилятор заставит нас это учесть. И это ХОРОШО.
Меньше контекста в голове, меньше вероятность ошибок при рефакторинге. Сплошная выгода

Без null safety ты не можешь знать может быть тут нулл или нет. возможно ТЕБЕ пох ибо "ну упадет и ладно", но вообще то лучше "пусть упадет сразу, а не через месяц в неожиданном месте в catch"

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

зы: опять же про динам языки. вон в питоне динамическая типизация. но когда хинты насыпали, то их стали активно юзать (ну кроме некоторых упоротых). Потому что это реально разгружает голову (а значит и меньше ошибок из-за перегрузки контекста).
935 3459017
class? Нужно исключительно для точного указания намерения. Если долбоебы на разрабах везде потом хуярят ! то вы извините это не проблема языка и функционала.

Я хуй знает вы там пробуйте голову включить и когда вам ИДЕ подчеркивает и пишет null possible то необходимо задуматься, также стоит включить голову если тебе пишет что ты суешь class? Там где ждут class.

Хуже всего когда всякие долбичи ставят режим ref type nullable и продолжают писать код засовывая в not null поля null.
936 3459023
А ещё я сосу хуи.
937 3459037
>>395748 (OP)
https://sparxeng.com/blog/software/must-use-net-system-io-ports-serialport
Этот костыль до сих пор актуален?
938 3459148
>>458702

> fail-fast.


Твой отец - пидераст
939 3459149
>>458896

>С чего ты взял что она должна проверяться в момент её создания?



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

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

Это делается для твоего удобства, чтобы в твоём коде не было ЗАПАХОВ кода.
940 3459225
>>459037
Нет, в современном коде рекомендуется использовать автомаппер
941 3459242
>>458931

>другие исключения они вылетают СРАЗУ. Смекаешь разницу? СРАЗУ!!!!


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

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



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

>неуч. NullReferenceException (NRE)



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

>нет. он во всем мире. ошибок NRE в мире было столько, что не перечесть. и это в прод коде. Хотя казалось бы - перехватывай и восстанавливайся. Но чет в мире идет не так.



Ну так тебе уже сказали куда идти, пиздуй на какое нибудь ФП в языки где нет нулей как класс если нули тебе спать не дают. С# это с-подобный язык, менять всё на 180 градусов спустя 20 лет это идиотизм.

>он просто копировал жаву на тот момент и это не секрет. А вот изобретатель самого понятия null назвал свое детище ошибкой.



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

>Ну так не пиши. Никто тебя не заставляет. nullable проверки они ОПЦИОНАЛЬНЫ.


Ну с каким-то дурачком вроде тебя я точно не буду консультироваться как мне писать. А по умолчанию эта фича включена, и вообще тебе уже писали что тут обсуждается имплементация и уместность этой фиче в C#, т.е. речь не обо мне а что эта фича объективно уёбищна и криво спроектирована.

>Но только не учи своим идиотским манерам других разработчиков.


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

>Не хочешь помощи компилятора


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

>>458975

>я вообще потерял нить что тебе не так.


Это характерно для малолетнего долбоёба не способного удержать внимание дольше ролика тиктока. Ну так перечитывай переписку тогда, каждый день с утра будешь начинать с чистого листа как в день сурка гоняя одну и ту же хуйню по кругу? На все твои вопросы уже отвечено, ты ничего не доказал а копипаста рекламных материалов блохиров M$ таковым не является.
941 3459242
>>458931

>другие исключения они вылетают СРАЗУ. Смекаешь разницу? СРАЗУ!!!!


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

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



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

>неуч. NullReferenceException (NRE)



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

>нет. он во всем мире. ошибок NRE в мире было столько, что не перечесть. и это в прод коде. Хотя казалось бы - перехватывай и восстанавливайся. Но чет в мире идет не так.



Ну так тебе уже сказали куда идти, пиздуй на какое нибудь ФП в языки где нет нулей как класс если нули тебе спать не дают. С# это с-подобный язык, менять всё на 180 градусов спустя 20 лет это идиотизм.

>он просто копировал жаву на тот момент и это не секрет. А вот изобретатель самого понятия null назвал свое детище ошибкой.



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

>Ну так не пиши. Никто тебя не заставляет. nullable проверки они ОПЦИОНАЛЬНЫ.


Ну с каким-то дурачком вроде тебя я точно не буду консультироваться как мне писать. А по умолчанию эта фича включена, и вообще тебе уже писали что тут обсуждается имплементация и уместность этой фиче в C#, т.е. речь не обо мне а что эта фича объективно уёбищна и криво спроектирована.

>Но только не учи своим идиотским манерам других разработчиков.


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

>Не хочешь помощи компилятора


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

>>458975

>я вообще потерял нить что тебе не так.


Это характерно для малолетнего долбоёба не способного удержать внимание дольше ролика тиктока. Ну так перечитывай переписку тогда, каждый день с утра будешь начинать с чистого листа как в день сурка гоняя одну и ту же хуйню по кругу? На все твои вопросы уже отвечено, ты ничего не доказал а копипаста рекламных материалов блохиров M$ таковым не является.
942 3459482
>>459225
Понял, а я дурак через метиадтор делал.
943 3459739
>>459242

>Ну так не пиши. Никто тебя не заставляет. nullable проверки они ОПЦИОНАЛЬНЫ.



У нас проверки на нулл запрещены гайдлайнами.
image.png839 Кб, 1036x994
944 3459740
945 3459982
>>459739
У нас проверки на нулл опционально запрещены гайдлайнами.
946 3459994
>>459739
Нормальный ход.
947 3460615
Как вы относитесь к ЗАПАХАМ кода? Чем ПАХНЕТ код, который пишут казахстанцы?
948 3460617
>>460615
Есть только один запах - запах карри.
949 3461103
Нужно записывать в БД информацию из HTTP-запроса (айпишник и юзер агент, например) с которого постучался пользователь, то как лучше прокидывать эти данные в сервис?
https://pastebin.com/w26Zg1BW

Где лучше вызывать Stopwatch для замеров времени выполнения запроса в контроллерах и сервисах? Или хватит только в чём-то одном?
950 3461155
>>461103

>Stopwatch


Наркоман? Подключи нормальное логирование.
951 3461189
17459580406070.jpg162 Кб, 714x1280
952 3461221
>>461103

>Нужно записывать в БД информацию из HTTP-запроса



Если ты используешь АОП, то просто в csproj декларативно прописываешь перехватчик для всех http вызовов и указываешь тип транзакции.

Если используешь MediatR - то просто наследуешь все свои пайплайны и хендлеры от IMeasurableCrossCuttingConcern, и пишешь общий Behavior, который за тебя всё сам сделает.

Самый простой способ - делегировать метрики в отдельный обработчик событий. Просто подключаешь два обработчика. Первый в начало обработки запроса, второй в конец. Пукаешь события в кафку. Их ловит отдельный микросервис, мэтчит по хешу события и перенаправляет готовые пары метрик в Outbox, с которого соберёшь данные
953 3461617
>>430325
что за книга? вижу эти тексты в гайдлайне на сайте, но хочу книгу как у тебя на скрине

Вообще тут этот чумачечий, который против new топит - интересный тип, что нужно почитать/посмотреть, чтобы таким же стать?
17478580203910.jpg141 Кб, 1000x750
954 3461696
>>461617

>что нужно почитать/посмотреть



тебе ещё рано.
955 3461835
>>461155

> Подключи нормальное логирование.


При чём тут логирование?
Я про Stopwatch.GetTimestamp() и Stopwatch.GetElapsedTime(...)

>>461189

Идея интересная. Вот так получается, если я тебя правильно понял. https://pastebin.com/xghfJ5Er
Разве что регистрация инстанса класса в качестве скопед сервиса выглядит сомнительно. В тестовом примере вроде всё работает, но это нигде не выстрелит?

>>461221

> MediatR


> Outbox


Оверхед какой-то. Надо просто при логине (или другом действии) пользователе записывать с какого айпи/юзер агента/локации он заходил. Ты как будто даже пост/пример не прочитал.
956 3461869
>>461835

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


Почему? Транзиент делать нельзя по очевидным причинам. Синглтон тоже, другой запрос перезапишет данные пока будет выполняться первый. Остается скоупед. Когда сервер получает запрос, он создает новый скоуп и работает с ним до конца запроса.
957 3461929
Microsoft анонсировала расширение системы типов C# — тип Nullable теперь может учитывать не только null, но и undefined, приближаясь к семантике JavaScript/TypeScript.

Для проверки переменной на undefined вводится новый оператор ?!. Он работает аналогично ?., но проверяет наличие значения, не являющегося undefined.

string?! name = GetName();

if (name is not undefined and not null)
{
Console.WriteLine(name.Length);
}

Console.WriteLine(name?!.Length);
958 3461940
>>461929
Смешно.
959 3461946
>>461835

>При чём тут логирование?


>Я про Stopwatch.GetTimestamp() и Stopwatch.GetElapsedTime(...)


Потому что ты джун долбоеб. Дотнет и так умеет логировать таймстампы даты запроса и ответа каждого запроса отслежиивая все вызовы внутри него даже в рамках разных сервисов.
960 3461947
>>461929
Паджиты ебанулись.
Нормальные люди пишут один раз экстеншен метод IsNullOrWhitespace и потом везде его используют. Эти же поехавшие сначала понапридумывали ?!хуйпизда, теперь насилуют компилятор. Кароч дотнет закончился, индусы все превращают в говно.
961 3461949
>>461947
да он тебя затролелл
962 3461950
>>461696
ну спасибо, блэт
хочешь сказать только с попытом придет?
963 3461951
>>461947

>метод IsNullOrWhitespace и потом везде его используют


Как же у тебя тромозит код.
964 3461952
>>461947

>IsNullOrWhitespace



Нельзя, у нас проверки на null запрещены
965 3461956
>>461951
О, вы пишете прошивки для дронов на сишарпе!
966 3461957
>>461949
После индекса с конца массива я уже ничему не удивлюсь. В паджитоориентированном объектном программировании (сокращенно POOP) возможно все.
967 3461963
>>461957

>таджик



Да кто такой этот ваш паджит?
968 3461972
>>461957
Тебе нравится писать length - 1 - N?
969 3461974
>>461972
Мне нравится писать x.Last()
970 3462020
>>461869

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

>>461946

Покажи как. Накидай пример или ссылку на статью.
971 3462957
позвали на собес пилить платформу для ЖКУ, знаю java, компания работает строга на .net
если возьмут (как?) - сложно/долго переучиться с джавы на шарпы?
972 3463095
>>462957
Пару статей по блазору, пару статей по asp, пару статей по дапперу/ентити и вот ты уже готовый формошлеп, так что ничего сложного
973 3463717
>>463095
а че блазор где-то используют? я думал мертворожденная хуета
974 3464230
>>463717
Я бы взял для какой-нибудь админки.
975 3464341
>>461929

> не только null, но и undefined


Надо ещё сюда добавить неинициализированные экземпляром классы. Ваще круто будет. Целая система из разновидностей нихуя: null, undefined, noninstantiated, unlinked, unreferenced, nondeserialized... И каждому нихую присвоить свой оператор, чтобы все охуели как я могу!

> var?!$&%#~ foo = get_something();


> C.WriteLine(foo?%.Count);


> C.WriteLine(foo?&.Size);


> C.WriteLine(foo?!$%.name);

976 3464602
>>464341

поплачь. Чем больше синтаскисов, тем более ВЫРАЗИТЕЛЬНЫЙ язык
Logo256x256400x4001547807210989.png39 Кб, 400x400
977 3464704
А всего лишь нужно добавить в язык гигиенические макросы. И тогда каждый сможет создавать свой собственный синтаксис. И наступит счастье!
Эх, где мой Nemerle...
978 3464847
>>464602
А то! Надо как в расте, чтобы в программе на 100 строк использовались все символы на клавиатуре, вообще все.
979 3464879
>>464847
иди на хуй
980 3464881
Гайзоны, после 10 лет архитектурного ада пишу модульный монолит. У меня всё просто как палка. Контроллер инжектит сервисы с одной функцией и исполняет их. Называю их командами и кверями.

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

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

И никакого автомаппера.

Просто мелкие программы, объединённые одним рантаймом, каждая из которых отвечает за свой запрос. Тупо ванильный асп нет кор. Можно посмотреть как используется ЛЮБОЕ свойство или метод. Весь код однозначный и прямолинейный, в старом стиле.
981 3464992
>>464881

>Контроллер инжектит сервисы с одной функцией и исполняет их. Называю их командами и кверями.


Метастазы паджито-ориентированной разработки еще присутствуют в организме, но ты на пути к исцелению. Попробуй голенг, хорошо прочищает мозги.
982 3465117
>>464881
Микросервисы тоже могут быть простыми и понятными, если в них не использовать медиатр и автомаппер.
983 3465383
>>464881
Это пока. Потом у монолита появится просьба связать две программы из твоего монолита в общую для обоих датамодель, затем попросят пукать в кафку, послезавтра скажут что у нас горизонтальное масштабирование и после этих магических слов придется окончательно прыгать за борт
984 3465521
>>465383

>общую для обоих датамодель


Это называется интеграция. Делается через сагу.

>пукать в кафку


В кафку пукают идиоты после курсов, которые не понимают, как работает сеть. У нормальных людей кафка - это просто входящий буфер.

>скажут что у нас горизонтальное масштабирование


И шардирование и функциональное разделение прекрасно работают с монолитом.

Микросервисы - это не про архитектуру. Микросервисы - это как из команды в 5 человек сделать команду в 100 человек, которые делают тот же самый объем фич. Потом приходит Маск и увольняет к ебаной матери этих дармоедов.
985 3465550
>>465383

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



Что это значит?

> затем попросят пукать в кафку,



Кто попросит? В чём проблема будет? Ну буду я отправлять события в кафку так же, как я их сейчас в рэббит отправляю. Или мне для этого надо обязательно делать ДИДИДИ АОП МЕДИАТОР АВТОМАПЕР?

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



Кто скажет? Я? Просто проснусь с утра и начну орать про ГОРИЗОНТАЛЬНОЕ МАСШТАБИРОВАНИЕ, что бы это не значило?

Что за набор слов ты написал вообще, пидорас ты, пидорасина бессовестная?
986 3465551
>>464992

>Попробуй голенг, хорошо прочищает мозги.



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

Я бы минимал-апи писал, но версионирование мешает
987 3465702
>>465521

>Это называется интеграция. Делается через сагу.


== делается через обрастание кода event bus

>В кафку пукают идиоты после курсов, которые не понимают, как работает сеть. У нормальных людей кафка - это просто входящий буфер.


Да какая разница куда пукать, я например тоже никуда не пукаю но возможность есть (потенциальная)

>И шардирование и функциональное разделение прекрасно работают с монолитом.


Если оно прекрасно с ним работает то это не монолит а такие же микросервисы работающие не в рамках обычных контейнер-сред а в рамках среды их велосипедного оркестратора, при этом роль всевозможных стандартных для контейнеров веб апи между сервисами у тебя играет сага.
988 3465869
>>465702
Шина событий не нужна.
17406366350690.jpg402 Кб, 1436x1440
989 3466439
Работаю с автомаппером уже 5 лет и поймал себя на мысли, что для того, чтобы эта хуйня работала, аналитик и инженер БД должны следовать КОНВЕНЦИЯМ в именовании, а к самим маппингам надо придумывать СВОД ПРАВИЛ внутри команды, чтобы не отстрелить себе хуй в очередной раз.

При этом, эта хуйня ни разу блядь не проще чем просто метод расширения написать, а любители автомаппера фанатично его отстаивают, типо это ЧИСТАЯ АРХИТЕКТУРА и DDD и нахуяривают по три-четыре слоя автомаппинга из говна и палок в одном запросе?

Вы ебанутые вообще?
990 3466456
>>466439
Притом, для того, чтобы прикинуть хуй к носу и чего-то в коде разобрать, нужно искать ОТСУТСТВИЕ использования свойств, потому что они же маппятся неявно. Как искать то, что отсутствует? То есть, буквально любое отсутствие использования свойства - это потенциально его использование. Ну, то есть, ладно те объекты, которые маппятся автомаппером, это еще понятно.

Но объекты, которые не маппятся никуда, но у которых остался профиль маппинга - это взрыв башки. Ну или например, половину объекта замапили атрибутами, а другую половину - методами. А часть свойств просто не указана. Маппинга притом три, MapTo, ProjectTo и ReverseMap. Кто придумал ProjectTo - тот вообще опущеный пидор.

Это же надо ЗАПОМИНАТЬ и чтобы получить целостную картину, как одна ебала мапится в другую, нужно на бумажку выписывать всё.

Короче, блядь, нахуй снесу его и буду счастливо урчать
991 3466559
Посоветуйте, пожалуйста, как на гитхабе искать полезные примеры хорошего кода, для тренировки. Например, какие-нибудь сложные пет-проекты. Нет, не для воровства, а именно для тренировки.
992 3466590
>>466559
На гитхабе ты не найдёшь код, с которым работать будешь.
carbon.png735 Кб, 1602x5588
993 3466700
Подводные?
image.png30 Кб, 218x352
994 3466733
>>466700

>Подводные


1. Ты скорее всего уже заебался, а кода там еще и нет по сути.
2. Все из твоих интерфейсов не используются. Значит, их можно убрать
3. Это шуточный код? Судя по тому, что ты new используешь, это же не серьёзно?
photo2023-03-1208-34-11.jpg97 Кб, 640x640
995 3466735
>>466700
...и да, эта хуйня работать будет только в определённом порядке? Прикол билдера же в том, что ты просто this возвращаешь, и можешь его методы как попало вызывать?

Но ты можешь прикинуться, что так и задумано было
996 3466749
>>466700
Тебе нужно внедрение зависимостей, фреймворков на шарпе добрый десяток с dotnet-awesome. А это просто какая-то ебенамать страшная, увидел бы такой пиздец в коммите - побежал бы за распятием. DI сам по себе тоже налагает проблемы, но вот это - одна сплошная подводная.
997 3466760
>>466749
При чем тут di вообще? На пике логика, которая позволяет вызывать определенные методы билдера только один раз.
>>466733

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


Планирую написать кодогенератор, который будет генерировать подобные билдеры. Единственное не знаю, что там с оверхедом, потому что количество интерфейсов равно факториалу количества устанавливаемых свойств. Для 6 свойств будет уже 720 интерфейсов. И вопрос, как это повлияет на размер бинарника и скорость вызова методов
998 3466912
>>466760
Ты наркоман?
999 3466914
>>466735
Билдер - это устаревший паттерн из времен, когда в шарпе еще не было дефолтных параметров. Сейчас билдеры никто не пишет.
1000 3466920
>>466914

>Билдер - это устаревший паттерн и


Долбоёб, что-ли? У меня сейчас на экране три билдера. Два из них - билдеры в стандартных моковых библиотеках (wiremock и RichardSzalay.MockHttp).

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

Богомерзкий автомаппер это билдер маппинга в своём роде. Я могу долго продолжать
1001 3466923
>>466760

> билдера только один раз.



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

> Планирую написать кодогенератор, который будет генерировать подобные билдеры



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

> Единственное не знаю, что там с оверхедом



Не думай про микрооптимизации! Ты всё делаешь правильно. Возвращать узкие интерфейсы - это одна из лучших и рекомендованных практик. В принципе, в твоём случае других вариантов нет. Остаётся зарегистрировать необходимые интерфейсы в DI контейнере, чтобы не было вызова NEW.

Ты главное помни, что работать с голыми классам без интерфейса - это ЗАПАХ 💩🤮 КОДА. У тебя уже всё хорошо и соответствует лучшим практикам ООП и чистой архитектуры.
1002 3466981
>>466920
Джун с галеры, это ты? Гоф дочитал, солид заучил?
Билдер - это литерали конструктор с произвольным порядком присвоения аргументов. До появления дефолтных параметров в сишарпе других вариантов не было, кроме как пердолиться с билдером. В 2025 году это неактуально. Эти твои библиотеки были или написаны до параметров, или написаны долбоебами с паттернами головного мозга.
Я тебе открою секрет: большинство проектов на гитхабе пишутся студентами без продового опыта, техлиду нахуй не всралось тратить время на очередной мок для моков. Уровень экспертизы у авторов соответствующий.
1003 3467138
>>466981

> Билдер - это литерали конструктор с произвольным порядком присвоения аргументов.



Ты неправильно понял.
1004 3467217
Билдеростроители, про анализаторы кода слышали?
Выкидывайте нахрен свои билдеры и пишите анализаторы на Розлине.
Анализатор проверяет, все ли нужные параметры переданы в конструктор или все ли нужные свойства заданы (причём не более одного раза). И всё, жизнь становится легка и приятна!
1005 3467394
>>467217

>И всё, жизнь становится легка и приятна!



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

Перевожу на язык senior c# эстрагеновых пивных сисек:

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

>>466981

>Билдер - это литерали конструктор



Создай шесть разновидностей пайплайнов обработки сетевых сообщений литерали конструктором?
1006 3467548
>>467394

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


Наркоман, зачем тебе нужны шесть разновидностей пайплайнов? Чтобы что?

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


Проиграл в голос. Архитектура уровня епам.

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

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



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

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



иди на хуй
1008 3467817
>>467706

>2025 год


>гоф патерны


>я не джун ну мам!


Ты просто малолетний дурачок.
1009 3467849
>>467817

Расскажи мне как крутые парни код пишут?
1010 3468076
Нахуя в аспнет коре делают репозитории?

Если сделать обобщённый репозиторий подо все сущности - он просто копирует DBontext и в большинстве случаев получается хуже чем dbcontext

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

Тесты нихуя не легче писать. Половина кода уходит в репозитории и не тестируется. А написание юнит-тестов на то, что один сервис вызвал два других сервиса - это ёбань из десятых годов.
17456438941100.png551 Кб, 1582x952
1011 3468078
ЧИСТАЯ АРХИТЕКТУРА
@
DDD
@
CQRS
@
МЕДИАТР
@
АВТОМАППЕР
1012 3468091
>>468076
Потому что идиоты и не понимают что EF и IQUERABLE это более крутая альтернатива этому паттерну.
На самом деле это шизофреники какие-то потому что пытаются написать абстракции над той частью которую НИКОГДА не будут менять. Если же изменится БД, то тебе нужно просто переключить провайдер данных.

Единственный момент где нормально писать репозитории это вызовы сырого sql.
1013 3468423
>>468076
Нормальные люди изолируют слои. У тебя есть IUserRepository.GetUsers, который возвращает List<UserDTO>. В тестах ты просто возвращаешь список с нужными данными.
Дебилы уровня епам пробрасывают IQueryable аж до контроллера. Ну а че удобно же. Потом в тестах пытаются положить данные так, чтобы они прошли через всю соплю из Where и GroupBy, а могли бы просто вернуть нужные данные.
1014 3468442
>>468423

>Дебилы уровня епам



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



А тесты что покрывают в твоём случае? Что интерфейс вызвал мок интерфейса мока интерфейса? И таких писать 8 штук на все уровни абстракции?

ТЫ ТОЧНО НЕ ИЗ ЕПАМА?
1015 3468443
ЧИСТАЯ АРХИТЕКТУРА
@
DDD
@
ГЕЙ СЕКС В ТУЗА
@
CQRS
@
МЕДИАТР
@
АВТОМАППЕР
1016 3468584
>>468423

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


>возвращает DTO из репозитория

1017 3468630
>>468584

> Кудахчет про слои, дто и репозитории.



Возвращает репозиторий из агрегата
1018 3468632
>>468423

>Нормальные люди изолируют слои


И сваливают весь код в домен
1019 3468713
>>468584
Ты наркоман? Что, по-твоему, должно вовращаться из репозитория? Массив массивов, как в пхп, или джейсончик любимый родной?
1020 3468717
>>468442
Тесты покрывают, что операция не прошла, если недостаточно средств на счету.
Я тебе больше скажу: IQueryable - это антипаттерн, это высер для максимально тупых паджитов, которые органически не могут в sql. Ни в голенге, ни в расте такой хуйни и близко нет, там у разработчиков айкью все-таки выше комнатной температуры. В дотнете тоже не было, пока индус не стал главным и не измазал все говном.
1021 3468789
>>468713

>Что, по-твоему, должно вовращаться из репозитория?



Аггрегат или событие. В крайнем случае другой репозиторий.

НО НЕ ОБЪЕКТ!!! ТЕМ БОЛЕЕ НЕ ДТО
1022 3468790
>>468717

>паджитов



Да кто такие эти ваши паджиты?

> Тесты покрывают, что операция не прошла, если недостаточно средств на счету.



Я писал разные тесты. 90% тестов, которые я писал - мусор, которые цепочкой тестируют, что мок сервиса обработал мок объекта, который вернула фабрика.

И это, скажу я вам, полная хуйня и трата времени.

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

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

Нахуй я выкинул эту идею и теперь пишу только высокоуровневые тесты, что HTTP метод обрабатывает JSON объект, и сохраняет данные в in-memory дб или отправляет запрос в сторонний сервис.
1023 3468827
>>468789
Ты толстишь, а джуны верят. Потом ехал медиатр через автомапер в каждом проекте.
1024 3468828
>>468790
Это называется интеграционные тесты. Они тоже нужны.
1025 3469066
>>468827

В джуновской картине мира Mediatr, CQS и CQRS это как Натали Потрман, Кира Найтли и Падма.
1026 3469184
>>469066
Кто все эти люди???
1027 3469507
ВНИМАНИЕ, ЭТО НЕ УЧЕБНАЯ ТРЕВОГА!!!

>Re-revert "Make mutable generic collection interfaces implement read-only collection interfaces (#95830)"


https://github.com/dotnet/runtime/pull/115802

>>429274 ты рад?
1028 3469534
>>469507
НАСЛЕДУЕШЬ МУТАБЕЛЬНУЮ КОЛЛЕКЦИЮ ОТ ИММУТАБЕЛЬНОЙ
@
РЯЯЯ ПОЧЕМУ ИММУТАБЕЛЬНАЯ КОЛЛЕКЦИЯ МЕНЯЕТСЯ?
@
НАСЛЕДУЕШЬ ИММУТАБЕЛЬНУЮ КОЛЛЕКЦИЮ ОТ МУТАБЕЛЬНОЙ
@
РЯЯЯ ПОЧЕМУ ПРИ ВЫЗОВЕ ADD ЭКСЕПШЕНЫ В РАНТАЙМЕ?
1029 3469541
>>469507

Ай да дотнет! Вот проказник какой!
1030 3469824
Вы тут все наглухо отбитые?
Думал сейчас зайду к братишкам дотнетчикам, послушаю баек с прода как по 100к рпс выжимают, а тут как на подбор ебанутые сектанты какашками кидаются в друг друга
1031 3469839
>>469824
тут элита одна. Тебе рано сюда соваться
1032 3469843
Гайзы, накидайте ещё тейков из человека паука, пожалуйста

https://github.com/jbogard/MediatR/issues/1115
1033 3469988
>>469534

>НАСЛЕДУЕШЬ МУТАБЕЛЬНУЮ КОЛЛЕКЦИЮ ОТ ИММУТАБЕЛЬНОЙ


>@


>РЯЯЯ ПОЧЕМУ ИММУТАБЕЛЬНАЯ КОЛЛЕКЦИЯ МЕНЯЕТСЯ?



ReadOnly != Immutable
1034 3469997
>>469988
Readonly, immutable, frozen, развели петушню, бля.
Одинаково уёбищные названия, ибо названы по отсутствию признака, накладывая семантический запрет на расширения и тут же его нарушая.
Вот назывались бы Readable и Mutable, путаницы бы не было.
1035 3470013
>>469997

> Readable и Mutable


Дристабл
1036 3470774
Пиздец, ко мне в команду устроился чел, который первым делом начал форматировать код по ГАЙДЛАЙНАМ.

Притом ему говоришь, типо у нас нет гайдлайнов потому что у нас джунов нет и соответственно нет споров.

Но челиподис неприклонен. Перехуяривает всё, до чего руки дотягиваются. Притом, коммитает исключительно одним коммитом.
1037 3470792
>>470774
В чем у вас проблема сделать единый .editorconfig ?
1038 3470919
>>470792
Нахуя? Чтобы дрочить на гайдлайны? У нас до этого джунов не было.
1039 3470987
>>470919
Нихуя не понимаю при чем тут джуны, когда вопрос просто про оформление кода и удобство.
Подозреваю, что ты из тех кто просто сваливает все говно в один класс на дохуя тысяч строк - "А чо такова, мне все понятно и я помню где там что находится."
2025-06-0612-39-23.png374 Кб, 1354x686
1040 3470994
Кто нибудь работал с COM интерфейсами? Я пишу плагин для одной программы и в документации ноль информации по моему вопросу. По идее все COM-объекты обязательно нужно высвобождать, типа:

> Marshal.FinalReleaseComObject(target);



Я посмотрел ошметки туторов в ютубе и никто этим не занимается (пикрил).
Например экземпляр ActiveLayer является COM-объектом (я проверил это при момощи Marshal.IsComObject) и по идее я должен сделать так:

> var layer = corelApp.ActiveLayer;


> var shape = layer.CreateRectangle(0,0,3,3);


> Marshal.FinalReleaseComObject(layer);


> Marshal.FinalReleaseComObject(shape);



В документации просто описание методов и свойств. В туторах всем похуй. Или я заблуждаюсь? Если что, проект на NetFramework 4.7.
1041 3471015
>>470987

>Подозреваю, что ты из тех кто


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

>>470994
Просто возьми нугет, который пробрасывает COM вызовы из сервисной шины комманд баса
1042 3471016
>>470994
Мы работаем. Приложение на WPF под дотнет 48, дергает хуйню на COM для цифровой подписи.
Освобождать надо через Marshal.ReleaseComObject в файнали или в дефере, если ком дергается из фонового потока. Ебля еще та.
Видосики на ютубе делают тупые паджиты, в дотнете все очень плохо с экспертизой у экспертов.
1043 3471027
>>471016

>Освобождать надо через Marshal.ReleaseComObject в файнали или в дефере



Так делать как минимум некорректно потому что финализация фонового потока в задеферится в ReleaseComObject.
1044 3471051
>>470994
Рантайм сам все освобождает
1045 3471070
>>471027
Какой ты у мамы тонкий троль.
1046 3471315
>>395748 (OP)
Жабист, ты где? Перекати.
2025-06-0619-33-27.png44 Кб, 509x684
1047 3471376
>>471016
Я сам своего рода "эксперт".

> Ебля еще та.


У меня, короче, проблема (пикрилейтед). Есть два метода, первый метод "CreateShape" вызывает второй "GetNextPageOrCreate". Первый получает экземпляр Document, второму он тоже нужен.

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

Как вообще такое решается? Передавать Document в метод GetNextPageOrCreate в качестве параметра? Не вариант, там все так переплетено, что порой придется указывать штук 20 параметров, потому что нет гарантии, что где-то на уровнях выше требуемый COM-объект уже обрабатывается.
1048 3471412
>>471376
Скорее всего, надо финализировать корневой объект Application. Там, где ты его получаешь.
1049 3471439
>>471412
А кто контролирует ссылки на эти COM-объекты тогда? Сама библиотека этим не занимается, вероятно.
1050 3471473
>>470987
Скорее всего там человек поставил решарпер и или просто клинап студии начал запускать на их говнокод и у них дупу пече.
ц.jpg31 Кб, 604x372
1051 3471532
>>471473

> решарпер



Да я не против, но челик явно перебарщивает. Там буквально на один коммит изменения в 200-300 файлах. Притом среди всякой рандомной хуйни принципиальных изменений - 1 строчка, и та работает как говно.

Хватает задачи, БЫСТРО-БЫСТРО делает, и пытается влить в master не обращая внимания, что у нас версионность. На два часа его работы уходит рабочий день на отладку и ревью. И сразу перескакивает на новые задачи. Не слушает, перебивает. Ему говоришь, вот смотри, как у нас написать тесты. Он говорит "Да, да, я всё знаю" и не пишет тесты.

> дупу пече



ну да, взяли на свою голову челика, который на стендапе по три-четыре раза произносит слово "бизнес". Я от кринжа сгораю, когда слышу это.
1052 3471575
>>471532
Это проблема лида, не твоя.
1053 3471589
>>471575
в том и дело, что моя
1054 3471631
>>471589
Ну так ставь ему хуевую оценку и увольняй после испытательного, что ты как маленький. Настрой линтер, чтобы тот не пропускал неправильное форматирование. Запрети мерджи без ревью. Все таски и замечания передавай исключительно в письменной форме, никаких блабла на словах, потом сошлешься на текст, если этот чел налажает. У тебя тот случай, когда немного бюрократии не помешает.
1055 3471688
>>471631

> исключительно в письменной форме



вот это забираю себе. А ты иди нахуй, спасибо
1056 3471752
>>471688
Сам иди нахуй, чмоня. Этот зумер тебя сожрет, пойдешь в курьеры.
17406366350690.jpg402 Кб, 1436x1440
1057 3471768
>>471752
Пиздец блядь, говоришь человеку спасибо, называется
17492023598630.gif1,6 Мб, 221x244
1058 3471888
Когда же нас всех ЭЙАЙ заменит... тревожно...
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

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