.net core 9 уже релиз!
1. Ресурсы:
— https://dotnet.microsoft.com/learn
— https://ru.stackoverflow.com/a/416585/422180
— https://metanit.com
— https://professorweb.ru
2. С# для веб
— https://docs.microsoft.com/ru-ru/aspnet/core
3. C# для десктопа
— https://docs.microsoft.com/ru-ru/dotnet/desktop
4. С# для игр
— https://ru.stackoverflow.com/a/609901/422180
5. С# для мобильной разработки
— https://docs.microsoft.com/ru-ru/dotnet/maui
6. Годные ютуб-каналы
— https://www.youtube.com/c/CODEBLOG
— https://www.youtube.com/c/AndreyShyrokoriadov
— https://www.youtube.com/c/DevJungles
— https://www.youtube.com/user/Shmachilin
Шапка: https://pastebin.com/HT7Hi6FD
Прошлый тред: >>3218883 (OP)
да. ведь выбирающие его заслуживают страдать по определению.
360x360, 0:06
Да мужик (или тяночка), компоуз не виноват, что вышел из-под гугла. Тут проблема в том, что XML никуда не делся, а компоуз слишком быстро зашел на рынок как основной фреймворк. Это же не джаву на котлин менять (кстати, вроде Square написали Retrofit поверх okHttp, но на джаве, что достаточно интересно в плане "нахера?").
На выразительность тоже уже плевать, да и это более "тонкая" тема т.к. для меня джава всегда была более понятнее, чем котлин.
Глянул на C#, на его кол-во живых библиотек, на его качество кода (в плане читаемости) и прям кончил можно сказать. Мне постоянно ссали в уши менторы с ютуба, что котлин это будущее, джава скоро сдохнет. Ну я как идиот 3 года учил котлин и андройд, вместо спринга или того же asp + c#. МДАААААААААААААААААААААААААА
>Тут проблема в том, что XML никуда не делся
ну это проблема динозавров любящих (цензура) с этим подходом (привет списки)
>компоуз слишком быстро зашел на рынок как основной фреймворк
и это шикарно. шикарный фреймворк шикарный подход
>что вышел из-под гугла
енто да. они умеют все портит. вон навигацию испортили. M2 не доделали, но поддерживают. Какие то странные ребята
>для меня джава всегда была более понятнее, чем котлин.
выразительность это не про понятность. Это "мы городим огород (читай костыли) потому что иначе никак, а в другом языке это есть искаропки и работает само".
недостаток котлина это его жава рантайм (ну и сложные корутины). в остальном же на нем приятнее писать код. Зато в шарпе структуры и много чего под них заточено, а в котлине такого нет....но ведь это не котлин виноват.
Я надеюсь, что когда-нибудь напишут какой-нибудь рантайм чисто для котлина и будут ребята уровня xiph или типо того, чтобы писали код для компоста и всего, что с ним связано.
В данный момент для меня котлин это чисто андройд, который на уровне говна собаки (андройд, конечно же).
А я в бекенд хочу, а не искать проблемы с производительностью UI, навигацией и делать анимашки конченных даунов-дизайнеров через littie, а потом выслушивать .что я неправильно запихал их анимашку.
>который на уровне говна собаки (андройд, конечно же)
если честно хз. он там вполне норм. да и котлин актуальный последний. Просто меня не волнуют анимашки и "в этой версии андроида нужно делать так, а в этой анально огородили и вот тебе 3 стула и все с говном и на них нужно не сидеть, а проглотить".
я ссу кипятком с компоуза в плане удобства. Собственно из-за него котлин и выучил ибо этот хамл в замарине ...замарил
но на десктопе беру шарп и WPF, потому что гуи на порядок сложнее надо (про шрифты помолчу)
Ненависть к автомапперу - признак шизика. Видимо чел в него пытался кучу конвертаций запихивать которые чуть ли не бизнес логикой являются. Ну и при этом на все тесты хуй ложил, да.
Сейчас начал читать Pro .NET Memory Management, уже начинаю понимать как на практике работает GC и всякие умные указатели. Вместо тупых абстрактных концепций в голове которые на самом деле не дают нормального представления.
В своё время так же заебался с ответом про async методы - "ну это стейтмашины", который толком нихуя не объясняет, это просто элементарный паттерн лол, а топик асинхронности огромный.
Вот канал челика, который кстати рассказывает что-то интересное, а не просто тупорылые хэлло ворлды пишет
https://www.youtube.com/watch?v=okXbHqRQ6Mo
Если что-то похожее есть - кидайте.
>Ненависть к автомапперу - признак шизика
Ненависть к инструменту который добавляет неявность, ломает навигацию в ide, да еще не везде применим - так ли он нужен то
>Я надеюсь, что когда-нибудь напишут какой-нибудь рантайм чисто для котлина
Нечего там не напишут, набрали студентов, наговнокодили компилятор (у них даже внутренний доки не было), потом переписывали несколько лет это.
Эти ребята писали компилятор в байткод лет 5, о каком уровне вирт машины можно говорить. Писали много лет писаали фронт под llvm, потом что-то переписывали (я про нейтив), в общем ппц.
А анальный вендерлок на тулинг просто убивает возможность развитие котлина самостоятельно. Сначала они вроде пытались пилить плагины для других редакторов, но потом даже не набрав массы положили болт.
Гредл это отдельный ужас жаба мира. Тырпрайзный-индустриальные технологии очень плохо ложатся на модный и молодежный новый язык.
В котлине есть некоторые интересные синтаксические решения, которые они просто потаскали у груви (но есть тотальные безграмотное wtf) В общем, как говорил анон, технология без души, которая еще утопила скалу и сам груви (да и жаба без мобилок это уже кобол).
Кода с автомаппером получается больше, чем без него. Поэтому вывод очевиден: не нужен. ЗЫ: однако, кодомакаки именно за это его и любят: можно настрочить тонны конфигов маппинга, и вроде как не бездельничал.
Сейчас основная тенденция в дотнете - AOT. Посему AutoMappet, работающий на рефлексии, в пролёте.
Чел, это другой подход.
Сейчас набирает популярность Automapper.FullTuring, который позволяет вообще без классов писать, потому что это ненужный мусор.
Плюс, если подключить Automapper.Router, то можно выкинуть контроллеры и сделать всё автоматически.
Тут вопрос в другом. Нужно ли вообще дедовское ООП, если автомаппер+nosql делает всё автоматически.
>ну шарп не такой выразительный как котлин
Что за категория такая, "выразительность"?
Почему её используют только в контексте котлина? Это точно не слово из маркетингового буклетика, которое не означает ничего?
По-моему это слово обозначает (в контексте ЯП) понимание того, что ты пишешь и как ты пишешь буквально с первых секунд, а не в попытках понять синтаксис.
Условно
val myValue = intArrayOf(1,2,3,4,5)
Более понятно, чем в джаве
int[] myValue = new int[5] {1,2,3,4,5};
int[] myValue = new int[] {1,2,3,4,5};
Вот эта строка явно выразительнее. Котлин хуйня, короче
Думаю переползать на Котлин с дотнета. Котлин судя по всему очень выразительный язык.
Есть пара вопросов. В Котлине есть автомаппер?
Ебать, уродливая невыразительная хуйня, это ещё более тесный гроб, чем автомаппер.
Автомаппер хорош тем, что можно писать асинхронные маппинги. Если например, надо в БД сгонять, или HTTP запрос сделать во время маппинга.
Поздравьте меня!
>Что за категория такая, "выразительность"?
Да хуй его знает. Носятся с ней как с важной хуйней какой-то, а когда просишь конкртено пояснить, что это - обычное "пук-срень, ну вот в язык_нейм можно сделать вот так, а в шарпе нельзя" (и в 90% случаев окажется, что либо можно, либо нахуй не нужно). Часть под "выразительностью" имеет в виду просто какой-нибудь местечковый сахарок, который им нравится исключительно из-за синдрома утенка. И что, кстати, не мешает им поливать шарп за засилье сахара, хотя свой жрут ложками.
Ну да... Типа для меня - переменная это что-то важное, у чего аж имя есть которое я сидел, придумывал, чтобы не x,y, a,b,c было, и оно доступно во всем скопе где объявлена. Как-то пояснить, что оно нужно просто чтобы передать значение - в шарпе нельзя. Даже в ЖС сделали const-перменные, пусть они и всратые и можно уже внутреннее состояние изменить, но какая-то семантика все же есть.
А если их не использовать и заворачивать вызовы - это становится нечитаемо. Потому что будет:
Console.WriteLine(string.Join(" ", ("HelloWorld!".Split(" ").Reverse())));
Тут разобраться что там за чем вызывается - надо посидеть, подумать. А это простейший пример же.
>Условно
>val myValue = intArrayOf(1,2,3,4,5)
>Более понятно, чем в джаве
>int[] myValue = new int[5] {1,2,3,4,5};
Во, как я и говорил. Типичный пример "в язык_нейм хуй сахар вкуснее, чем в язык_нейм_2"
ее использую в контексте котлина Я потому что пишу и на шарпе и на котлине
И нет - это не просто слово. И нет это не НЕ читабельность. Это способность удобнЕЕ выразить мысль в коде
уже не раз приводил примеры, повторяться влом
повторю только малую часть
backing field. в котлине он просто есть. А в шарпе что? Что то там в дотнет 9...ну ну
примари конструкторы в шарпе притащили позже и они примитив по сравнению с котлиновскими (хотя лучше чем ничего)
енумы в шарпе...без мата нечего сказать
нельзя нормально расширить статический класс
нет инлайн методов настоящих
нет делегации свойств
нет топ левел функций
нет типа unit и поэтому есть Task и Task<T> вместо одного Task<T>/Task<Unit> (кто кодогенил оба варианта потому что просто необходимо их оба - тот поймет)
где бл... lateinit. вместо него null! что другое
ну и так далее...
>>32751
> виду просто какой-нибудь местечковый сахарок
этот "местечковый" сахарок делает, например, принципиально невозможным портировать подход jetpack compose потому что язык просто не может. Максимум что могут выдать это comet по типу swiftui combine, да и тот будет засран вездесущими new
щас будет "да и не надо", да ))))
>щас будет "да и не надо", да
Я не пишу под андроид/айфон, на котлин/джаве и в душе не ебу за всякие jetpack compos-ы и т.д. Поэтому да - не надо. =)
Ну и опять же. Когда говорят про "выразительность", то это идет в контексте базы языка, а не всяких его фреймворков и тулкитов. Т.к. их можно наворотить сколько угодно и какого угодно вида.
а я и не говорил про фреймворки и тулкиты. И андроид тут вообще не причем. Кстати на замарине под андроид те же проблемы у шарпа ибо...ну мы же про шарп говорим.
я говорил за сам язык
и НЕВОЗМОЖНОСТЬ сделать подобное на шарпе. Когда что-то получается кривокосо (последствия компромиссов) - значит у языка не хватает выразительности.
А значит на шарпе мне приходится жить с другими подходами БЕЗ ВАРИАНТОВ
потому что НЕТ - НЕЛЬЗЯ НАВОРОТИТЬ, ограниченность языка позволяет наворотить только то, что можно наворотить как бы это в итоге не получилось, а не РЕАЛЬНО УДОБНО.
Просто средний шарпист, как и...допустим, похапэшник - НЕ ВИДИТ проблем выразительности ибо он и не видел что можно как то по другому. Тот вариант, что предлагает язык, является для него единственным, а значит и верным. Как и похапэшник не видит проблем похапэ, пока не пощупает питон.
А эта хуетень сразу вызывается, или лениво?
Стектрейс выглядит как говно?
Как отлаживать? Никак?
Брейкпойнты не ставятся примерно никуда?
Внутри там уебанский обобщённый фреймворк?
Смотри пример, какое мутное говно есть у меня в коде. Это героически переизобретают каждые два года, а потом с ним одни мучения
Под выразительностью 10 лет назад преподносили в противовес джава коду, мол геттеров и сеттеров не писать и вообще дата классы, лямбда-хелл этот и прочее.
Нужно было продать жабистам зачем им второй язык за туже зарплату. То что до сих пор с этим носятся, это косяк дармоедов евангелистов или инфоцыган, которые продают курсы андроид.
Еще в те же времена стало ясно, что если апи не на дсл котлина, то пишешь ты на той же джаве, только с х2.5 компиляцией.
Прокси языки зло. Ты либо с нуля бери и дела, либо размазывай говно по полу.
>Прокси языки зло
это так
>Под выразительностью 10 лет назад преподносили в противовес джава коду, мол геттеров и сеттеров не писать и вообще дата классы, лямбда-хелл этот и прочее.
в шарпе типа не та же ситуация, ога. и всякие рекорды появились не поэтому, а потому что гладиолус?
>Еще в те же времена стало ясно, что если апи не на дсл котлина, то пишешь ты на той же джаве
а это можно просто не тащить легаси. ведь можно же
в шарпе же увы легаси вбит навечно. И никогда Ilist не станет наследоваться от IReadOnlyList, и даже Lock из 9го дотнета не заставит похудеть хидеры объектов. И много чего этакого что "никогда"
Так охуенно выглядит же. Чего ты?
Надо просто взять концепт и довести до ума. Ну и майков заебывать, чтобы наконец довели до ума дебагер. Вон, недавно наконец - при return стал показывать что там реутрнится. Думаю если сильно попросить и примеры что это и при дебаге линку будет полезно - они таки возьмут в работу.
Там Automapper.AI в пререлизе, как выпустят код писать вообще не придётся.
>чтобы наконец довели до ума дебагер
они это не умеют. у них лапки
взяли бы oz-code. да запихали в дебаггер, но нет - лапки кривые же
вот что было с теми же LINQ
https://www.youtube.com/watch?v=h4VgoWt91LM
а что в итоге - вы и так знаете
>Увы легаси вбит навечно. И никогда Ilist не станет наследоваться от IReadOnlyList,
Нахуя? Он же рид-онли, а лист не рид-онли.
>... и даже Lock из 9го дотнета не заставит похудеть хидеры объектов. И много чего этакого что "никогда"
В 12 дотнете запланирован полный переход.
>Он же рид-онли, а лист не рид-онли.
А типа List (не интерфейс) ридонли.Но между тем реализует IReadOnlyList, а еще и IEnumerable, которое риоднли по самые помидоры
Как можно передать Ilist в метод принимающий IEnumerable, так и тут та же логика, но
в шарпе нет Ilist : IReadOnlyList потому что изначально тупо спроектировали. А теперь уже поздно - ломается бинарная совместимость.
>В 12 дотнете запланирован полный переход.
брякоченджесы на уровне бинарной совместимости? ну ну.
>>33064
это кстати шикарная ебала. просто померла со студией 2019, а для 2022 выкатили недоделку и забросили.
Спрашивается - почему в студии такой убогий дебаггер в плане гуи. Просто говно говнистого говна. Ответ - потому что рукожопы.
И новый год ничего не изменит в их жопошных руках. Лол, даже ретурн валую они сделали хорошо в этом тысячелетии, прямо удивился
Нормальный шарпист знает о Nemerle - языке для .NET, который имеет гигиенические макросы, что позволяет вводить новые синтаксические конструкции. В нём легко можно ввести все те фичи, о которых ты говоришь.
К сожалению, Nemerle умер... Но Microsoft постепенно движется к реализации его возможностей в C#.
>К сожалению, Nemerle умер
тогда ЗАЧЕМ ты его вспоминаешь??????? риторический вопрос
однако
>В нём легко можно ввести все те фичи
может мне еще свой язык написать? а че нет?
с меня хватает и необходимости создавать и поддерживать либу в которой есть то, чего ожидаешь в дотнете, но будет там через 1000000 лет.
вообще я не один такой с такой либой. Даже вон есть dotnext проект
>IEnumerable, которое риоднли по самые помидоры
Перечисление только перечисляет, ему ничего не известно о словах, которые ты произносишь
>В нём легко можно ввести все те фичи, о которых ты говоришь.
В принципе нахуй не нужно, можно просто автомаппер использовать
>Перечисление только перечисляет
как и IReadOnlyList только читает и его ничуть не волнует ридонли ли список или нет. Он всего лишь говорит "я буду только читать"
>ему ничего не известно о словах, которые ты произносишь
tomatoes.Select(t=>t)
а теперь?
>бинарная совместимость
Я даже не будут спрашивать какую шизофрению ты в это понятие закладываешь.
Надо будет - прибьют гвоздями как Enumerator для foreach прибит. Просто это никому не нужно. Это не решает вообще никакую проблему.
>Надо будет - прибьют гвоздями
вообще то изначально было надо. но не вышло. даже статьи на эту тему писали почему НЕЛЬЗЯ это сделать - именно проблема бинарной совместимости. Так что никто никогда гвоздики не тронет
>Я даже не будут спрашивать какую шизофрению ты в это понятие закладываешь.
а я отвечу
они ввели Lock польза от которой какая? новый апи? никто не побежит переделывать текущие локи
возможность убрать секцию для лока из хидера объекта - тогда все старые либы которые просто "мы тут версию дотнета поменяли" просто выпадут в осадок.
Тогда что они планируют в дотнет 12? из за подобных проблем никто не стал делать IList : IReadOnlyList ни щас, ниКОГДА
>В Котлине есть автомаппер?
Чувак, автомаппер - это всего лишь библиотека! Их тысячи.
Если тебе нужен маппер, но нет подходящего с нужными фичами - напиши свой. Это делается на коленке.
критикую шарп, нельзя что ли? в шарпе хватает говна и ему радоваться или что?
>Да, нельзя.
я не говноед. я критикую и требуют навести порядок. жаль что меня не очень слушают, поэтому получаем фичи в недоделанном виде, а то и годами ждем.
>Нет, не хватает.
так ты не переживай. мелкие еще наделают. они в этом мастера. они найдут где сделать так что "ну семён семеныч"
свойства без backingfield, ConfigureAwait, рекорды, is var, полусырые примари конструторы (хотя как я понимаю это всё) и т.д. - что то доделывают через годы (когда уже поздновато), но в основном хер
Ну хоть расширения на доработку отправили, но они постараются и там сделать жопно
Всем ку мужики, скатываюсь в шарписты, подскажите где можно найти задачи/проекты которые будут похожи на реальные рабочие кейсы? Я имею ввиду не хуйню с литкода или кодварса, а что-то реальное и прикладное. Хочу потренироваться и занять себя.>>33088
>Ilist не станет наследоваться от IReadOnlyList
ФэПэшное фантазии умерли уже лет 10 назад. Программирование не может не иметь сайд эффектов. Лист по задумке это динамическая структура и иметь иммутабельную структуру данных в хипе, а не в стеке - это абсурд и результат того, что некомпетентные люди попадают в разработку языков.
>в шарпе типа не та же ситуация
Нет, даже 5 лет назад шарп был на голову выше жабы. Продать его шарпистам было сложно, ради пару модных сахаринок.
То что в шарп тянут модные свестелки и перделки - в чем проблема? Это больше гемморой для команды разработчиков, чем для потребителя. Нормальная практика взять проверенное другими фичу и засунуть себе (так же и джава делает, что там от котлина еще осталось?).
>а это можно просто не тащить легаси. ведь можно же
Нельзя, потому что у котлина не было ничего своего, перевкатуны даже об гредл разбивались. Представь тебе только что рассказали про модный и молодежный язык, чуть ли не правильный питон у тебя в руках и ты такой на радостях бежишь потыкать в него и тут тебя встречают сразу кровавый тырпрайз с его аномальными оверхед-решениями, которые непонятны даже местным (блин, даже гугля про веб на джаве в 2016 году ты попадал на страницы про EE). Фраза "котлин пахнет джавой", это фраза того времени, то что они полезли в котлин жс, котлин нейтив, а не стали пилить дефолт инструменты для jvm на их выразительном, это фатальная ошибка руководства тех лет. котлин js вообще смешно, они правда думали что смогут конкурировать с node.js и ts, написав кривую обертку над HTML DOM? Ты представь уровень некомпетентности в управление котлина в те года
Если вебдресня - то по традиции люди с двача пишут движок двача.
Я бы попробовал какую-нибудь низкополигональную (low poly) игрушку написать на юнити, не ради результата, а ради каких-то механик которые можно написать на шарпах (например, сложный расчет поведения врагов за счет динамически меняющегося окружения. Или процедурная генерация местности или мобов как в no man sky). В общем что-то, что визуально можно позапускать потыкать, это интереснее бэкенда с перекладыванием json'ов (хотя есть вот эти браузерные сетевые миниигрушки на вебассембли).
>критикую шарп, нельзя что ли? в шарпе хватает говна и ему радоваться или что?
Шарп мультикомбайн в прикладной разработке, как наверное и современный js. И там и там людями срать на какие-то огрехи языка которым овер 20 лет, все реально понимают почему так или иначе исторически сложилось, все внимание пользователей этих языков не в том с какой стороны тип записать или список объявить, там у людей уже фокус смешается на уровень - какой взять инструмент и какие технологии помогут в том или ином решении. в свое время я попал в шарпы не потому что нравился синтаксис, а потому что он был в моем решение - юнити, был бы там хоть js - мне было срать, я бы писал на js
Так что всем срать что твой юношеский максимализм фрустрирует с синдромом утенка и тебе что-то где-то не нравится. Хочешь уровень реальной разработки? Возьми и напиши свой "свифт/котлин/ts" для дотнета (и пойми потом почему это не нужно), а мериться тем как одно и тоже делается в разных языках, но чуточку по разному - это удел глупеньких.
Смотреть на котлин надо смотреть через призму андроида. А не потому что там глисты другие. Так что если нравится котлин? Напиши уже какую-то теху или флагман на нем, это ему больше поможет. Сейчас главное проблема котлина и то что его убивает - это вендерлок на IDE, так что спаси свой кокотлин, вытащи его хотя бы в vscode.
>tomatoes.Select(t=>t)
>а теперь?
И что "теперь"? Select это метод расширения статический, это не метод самого IEnumerable, так что он все так же ничего не знает.
>годами ждем.
Кто ждет? Зачем? Иди попиши на го, потом даже в джаву вернутся будет счастьем.
Недавно узнал что раст планировался изначально с гринтредами и гц как го, но в нормальном дизайне и тулингом не из 70х годов. Представьте какую ошибку допустили авторы, а где-то в параллельной вселенной сейчас существует язык, который полностью затмил все ваши жабы/шарпы - нормальный современный язык с нормальным тулингом и конкурентностью.
Так что спасибо что не го и не раст.
>Недавно узнал что раст планировался изначально с гринтредами и гц как го, но в нормальном дизайне и тулингом не из 70х годов
Отсутствие GC это единственное, что отличает раст от других технологий.
Технология будет включаться при наличии тензорных ядер, либо в облачных сервисах Microsoft, при наличии платной подписки Azure.AI.
>Технология будет включаться при наличии тензорных ядер, либо в облачных сервисах Microsoft, при наличии платной подписки Azure.AI.
лол
Отсутствие поддержки внутренний мутабельности объектов, практически навязывает использование Arc<Mutex<T>>
Что является счетчиком ссылок с проверкой владения во время исполнение. Это не так критично, но это уже не совсем системный уровень.
Отсутствие ГЦ нужно только паяльникам, в прикладной разработке банально нет столько ресурсов, чтобы еще с указателями трахаться. То есть, это настолько узкая и ниша, что старого с++ там было достаточно, на котором и так тонна либ, которые переписывать никто не собирается.
А вот наличие в бэкенде удобного конкурентного языка - это до сих пор явная потребность.
Все юродствуешь.
>Лист по задумке это динамическая структура
сам понял что сказал? лично я нет. причем тут вообще фп. причем тут вообще стек. есть КОНТРАКТ.
IList реализует IEnumerable, потому что IList имеет часть контракта "читать" и поэтому IList можно передавать БЕЗ ДОПОЛНИТЕЛЬНЫХ приседаний в методы, которые принимают IEnumerable
с IReadOnlyList та же история просто ЕГО ЗАБЫЛИ когда изначально дизайнили контракт списков (кстати жопой дизайнили). А когда люди наконец пояснили что "надо бы", то оказалось что уже поздно впихивать как надо.
>даже 5 лет назад шарп был на голову выше жабы.
причем тут жаба. в шарп тянут свистелки по той же причине - народу надо.
>взять проверенное другими фичу и засунуть себе (так же и джава делает
ога, через десятилетия. при этом все эти 10 лет утверждая "эта фича никому не нужна", а потом с бахвальством "смотрите мы сделяль". поэтому жава говнистое говно и всё лучше жавы, даже говно бомжа лучше жавы.
>потому что у котлина не было ничего своего
это просто динозавры привыкли. Я вот не изучал легаси и сразу жетпак и котлин и всрались мне всякие там ретрофиты. И никаких "эта хрень не работает с корутинами". Но да, то я - у меня не было старых проектов которые нужно было бы переводить.
>И там и там людями срать на какие-то огрехи языка которым овер 20 лет
это личное дело каждого говноеда.
не всем срать на огрехи что можно исправить
бэкингфилды тому пример, если всем срать то зачем их исправляют?
и так многие вещи просят. Просто не всех слушают.
>твой юношеский максимализм
я начал писать на шарпе с его рождения еще с версии 1 и это мой основной язык. Так что про синдром утенка он как бы более у тебя. У меня же здравая критика "не нужно бояться признавать ошибки, но и не нужно избегать их исправлять, просто можно не через десятилетия, а? мы ж не жава"
>Смотреть на котлин надо смотреть через призму андроида
мне на него смотреть не надо. Я шарпист и спотыкаясь о проблемы дизайна шарпа, иду и пишу мелким, что "тут херня, а другой херни вообще нет", а не хвалю котлин "вот там есть". С котлином мне просто ЗАМЕТНЕЕ разница. Но это не значит что я и без котлина не матерился каждый раз создавая бэкингфилд или кодируя ConfigureAwait(false) или кастуя к IReadOnlyList (ну там ладно я хоть понимаю что они исправить не могут) или не имея очевидных методов LINQ или того же словаря - котлин тут вообще не причем.
>>33190
>Select это метод расширения статический
зато возвращает IEnumerable помидорков. так что...
>>33192
>Кто ждет? Зачем?
внезапно шарписты. потому что нужно. смотри список proposal и прозревай. и это ведь про новые фичи.
>Иди попиши на го
иди поешь говна чтобы познать что тебе не так уж плохо или а в африке вообще негры голодают
это аргументы уровня /b
>я начал писать на шарпе с его рождения еще с версии 1 и это мой основной язык.
Тогда бы ты обплювался от котлина, который везде наговнил классическому дефолт джава-стилю (чтобы быть нетакусиком). Если для го это быть может норм, это новый яп и он может делать что хочет, то для приемника джавы, переворачивать базу семантики, это идиотизм.
Да и с опытом более 15 лет приходит осознание что все языки в какой-то степени говно, а когда начинаешь писать свои сложные архитектуры, то понимаешь что это нормально и по другому нельзя, поэтому придираться, что там где-то забыли что-то, это юношеский максимализм. Это тоже самое как жаловаться что в одном заводе, поставили автомат с печеньками, а на другом заводе нет.
>причем тут вообще фп.
А в том что листы по природе были созданы в противовес массивов как мутабельная динамическая структура данных. Представь ты создаешь машину которая должна ездить, а потом создаешь машину которая ездить не должна, ибо опасно когда она ездит, Ванюша может пораниться в коде.
>Тогда бы ты обплювался от котлина
у меня претензий к нему тоже хватает, но тут не котлин тред чтобы я им возмущался
>наговнил классическому дефолт джава-стилю
котлин не преемник жавы. это шарп преемник ибо начался как "мы сделаем свою жаву".
>и по другому нельзя, поэтому придираться, что там где-то забыли что-то, это юношеский максимализм
нельзя? кто сказал нельзя? что за дикий бред. вот щас делая фичу с бэкингфилдами оказывается можно. И даже возможные конфликты с написанным кодом не останавливают.
>как жаловаться что в одном заводе, поставили автомат с печеньками
ну так если в итоге автомат с печеньками поставят, то разумно жаловаться, а не продолжать облизываться на другой завод.
>А в том что листы по природе были созданы в противовес массивов
какое отношение это имеет к контрактам списочных структур? правильно - никакое. На уровне контрактов не разницы что там лист или вообще склад котиков мимикрирующий под список. Там есть просто контракт. И его просто не продумали, ведь так спешили сделать свою жаву, что много чего не продумали.
А если брать дизайн списков то сделано было ЧЕРЕЗ ЖОПУ
нужно было сразу разделить мутабельные, иммутабельные, ридонли на уровне языка. И назвать нормально
>нельзя? кто сказал нельзя? что за дикий бред
Реальность, без декомпозиции мозг не способен воспринимать сложные системы полностью, там физическое ограничение на 4-7 элементов. В остальном восприятие происходит через обобщение, но так что ты его даже не чувствуешь - поэтому и получается что ты как вкатун бегаешь с листами, а кто-то решает реальные проблемы реального софта. Вот мне думаешь важны какие там листы, когда я не могу локализовать плавающую ошибку в коде?
Так что учи шарп молча. Еще бы к шрифтам в вскоде докапался бы.
>там физическое ограничение на 4-7 элементов
ты какой то шизнутый. какое отношение имеет, например, НЕОБХОДИМОСТЬ писать бэкингфилд руками к ограничению твоего мозга?
и остальное тоже туда же.
похоже у тебя шизофазия какая то, раз ты вообще не понимаешь что я пишу
>бэкингфилдами
Чел, а ты можешь объяснить как тупому, зачем они нужны?
А то я вот почитал и чет не понимаю, что в них такого уникального, что нельзя было бы заменить обычными свойствами с модификаторами на get/set ?
А то ты так их расписываешь, будто это прям килер фича какая-то, вот и хотелось бы понять.
>Я не ограниченный биоробот, который мыслит субъективно, слышишь! Я высшие существо способное думать умно! Если я вижу что листы неправильные, значит так оно и есть! Это самая главная проблема сейчас в шарпах! Это очень сюрьезна, ты понял?!
Очередная околомагия, помню еще в кокотлине можно было как-то просрать контекст this как в js, лол.
ты просто не понимаешь что это такое
их нельзя заменить обычными свойствами ибо они и есть ЧАСТЬ свойств
вместо
private int _foo;
public int Foo {
get=>_foo;
set{
_foo=value;
...другой код
}
ты можешь не заводить private int _foo; которая может нахер никому не нужна, а заведена лишь потому что нечему присвоить =value
поэтому в норм языках если ты хочешь добавить код в сеттер, и тебе нахрен не нужно это приватное поле в классе, то ты можешь сделать так
get=>field
set{
field=value;
...другой код
}
где этот field за тебя скомпилирует компилятор. вот в дотнет9 это и собирались сделать...или сделали но там экспериментально...или сделали. вот перейду на дотнет 9 и посмотрю
это одна из проблем в шарпах. и ты можешь сколько угодно трололо, но это не изменит ущербности списков в шарпе
так что мимо, иду учись аргументировать нормально дитятко
В чем ущербность? в том что нет нормального искаропочного разграничения между мутабульными, иммутабельными, риоднли, фрозен и прочее. Ну и на уровне контрактов та же херня. Я не могу передать byte[] как ридонли и не потерять в перфомансе. Когда ввели IReadOnlyList, то он оказался неудобным и большинство так и продолжило передавать везде IList (какой такой там чистый код вы что) не замораиваясь с какими то там "контрактами" вида "если метод будет лишь читать список, то пусть прямо обозначает это в сигнатуре"
С-с-ука-а. Ну это же ебучий сахар. Ты весь тред сотрасаешься насколько важны - эти бэкингфилды, а по сути - нихуя особенного. Просто, блять, приватное поле под капот спрятал. Я понимаю, если бы это было, что-нибудь вроде init или with, которые в 9-м шарпе появились. Вот это да офигеть как избавляло от кучи ебли. А тут...
Алсо, я честно говоря вообще не вспомню, чтобы за последние 3 года хоть какую-то логику в get/set-ах писал.
только бездарям, которые себя погромистами называют
а нормальным программистам - нет.
>>33602
как и get/set тоже сахар. может его тоже не надо было делать, а как в жаве методами? ты ж вот не пишешь в свойствах ничего из логки. зачем тогда вообще свойства? или что ты хотел сказать?
это пример того что этот сахар со свойствами изначально не был нормально сделан. И такое в шарпе много где.
Я не сотрясаюсь о их важности. я сотрясаюсь о том что ФИЧИ ДЕЛАЮТ ЖОПОЙ и они получаются сырыми.
и это просто пример одной из фич, которая показательна тем, что через десятки лет они таки решили этот вопрос допилить (что прямо нереальная редкость). иди напиши им что "не надо этого делать, никому не нужно, а что там в proposal champions, так то жависты накручивают"
>чтобы за последние 3 года хоть какую-то логику в get/set-ах писал.
ну да, ты ж один у нас на свете шарпист )
>поэтому в норм языках если ты хочешь добавить код в сеттер, и тебе нахрен не нужно это приватное поле в классе, то ты можешь сделать так
Больше, больше сахара!
"Многие просили нас включить в ASP.NET Core решение для автоматического маппинга свойств в объектах. Поэтому вместе с Visual Studio 2024 будет поставляться совершенно новое решение на базе многолетнего изучения опыта разработчиков.
Мы разработали для нового пакета специальный, укороченный синтаксис. Благодаря ускоренной в dotnet 10 обработке деревьев выражений, а так же обновлённому API динамических прокси, System.Object.Autoassigner работает на 12% быстрее альтернативных библиотек." - Раджеш Папаржеканасра, главный архитектор Blazor
А нахуя тебе такие методы, которые все используют просто как публичные поля?
Никогда не понимал этой хуйни. Я бы вообще не парился и геттеры руками писал
>Так в чём ущербность-то?
я ж говорю. чужие методы без проблем принимают IList просто потому что "а что еще ж", и хрен поймешь меняют ли они твой массив внутри или нет. С выходом IReadOnlyList ...ничего не изменилось. Особенно забавно если у тебя уже IReadOnlyList и методу нахер не нужно писать в твой список, но он же принимает IList
фрозен коллекции появились ТОЛЬКО ВОТ. иммутабельные тоже не сразу.
ну а на уровне обычного массива вообще нет защиты компилятора на запись без каста к интерфейсу со всеми вытекающими.
>>33649
>Больше, больше сахара!
вообще то это не новый сахар, а он должен был быть таким с самого начала. просто как обычно сделали все руками из жопы
И да - этот сахар нужен. Не веришь - иди убеди что зря мелкие доделывают фичу
но лично ты после выхода фичи можешь не использовать. тебе ж не нужно.
дурачок что ли
это ОДИН ИЗ МНОЖЕСТВА примеров
просто нагляднее ибо его таки обещают притащить
интересно. а вы сахаром пользуетесь в шарпе или тупо лицемерите?
отвечать не надо. ответ знают все
>>33673
понятию "нормальный дизайн языка позволяющий писать чистый и стройный код без костылей и приседания, и лишних компромиссов"
но ВАМ такое понятие неведомо, поэтому можешь даже не пытаться понять.
>чистый и стройный код
За разговоры про чистый код в 2к24 в приличном обществе руки не подают, а через пару лет, так вообще пиздить начнут.
>За разговоры про чистый код в 2к24 в приличном обществе руки не подают, а через пару лет, так вообще пиздить начнут.
Есть что-то лучше? Чистый код классная книжка. Особенно классно там поводили хуем по губам любителям писать комментарии
таков мир дотнета
вон решарпер последний имеет баг где при переименовании студия просто виснет. фикс будет в следующем билде. а когда он? полмесяца прошло
они наконец додумались бэкингфилды
они наконец додумались до метода Index
они наконец додумались что hex строка нужно то в разном регистре.
они наконец додумались что если в LINQ проходит ICollection то можно не создавать итератор (это сколько то тредов назад сюда заходил жавишник и выиграл в перфомансе именно по этой причине)
они наконец додумались добавить еще методов в LINQ (но все равно мало)
они наконец додумались что таки нужен и дженерик вариант SortedDictionary
они наконец додумались сделать оптимизации для Task.WhenAll (в 8 версии тоже делали, но кто ж делает всё очевидное сразу то, ведь можно отложить на год....двадцать...вечность)
и другое...
возникает вопрос - а раньше никак нельзя было догадаться да?
>а раньше никак нельзя было догадаться да?
Догадаться то можно было, а ты пойди и сделай сразу. И можешь не утруждать себя фразами "а вот в язык_нейм сделали" - копнув поглубже в любом языке можно дофига другого говна найти из разряда "а чо сразу не сделали". Вон, куда ни ткни, все современные языкописатели сначала усираются чем-нибудь в духе "дженерики нинужны", а потом, когда им комьюнити панамку хуев напихают, начинают все это прикручивать на готовый костяк, пытаясь к херам все не сломать.
Ты вот к примеру если умный такой, чего битками в 2007-м не обзавелся? Ведь мог бы догадаться, а?
возникает вопрос - а раньше никак нельзя было догадаться да?
Зна́ние за́дним число́м — когнитивное искажение, склонность воспринимать события, которые уже произошли, или факты, которые уже были установлены, как очевидные и предсказуемые, несмотря на отсутствие достаточной первоначальной информации для их предсказания.
Умник ёбаный
Чтобы максимально заебать окружающих, нужно завалить код комментариями, составленными из цепочек слов в родительном падеже:
/// Форма отправки данных платежа клиента службы доставки
...
/// Метод отправки формы данных платежа клиента службы доставки
...
/// Сервис вызова метода отправки формы данных платежа клиента службы доставки
...
/// Конструктор сервиса вызова метода отправки формы данных платежа клиента службы доставки
...
/// Интерфейс сервиса вызова метода отправки формы данных платежа клиента службы доставки
...
/// Регистрация DI контейнера интерфейса сервиса вызова метода отправки формы данных платежа клиента службы доставки
...
>/// Форма отправки данных платежа клиента службы доставки
Это норм, потому, что вротебал разбираться в тысяче ДТО-шек по их названиям какая из них за что отвечает.
>>33799
>/// Метод отправки формы данных платежа клиента службы доставки
>/// Конструктор сервиса вызова метода отправки формы данных платежа клиента службы доставки
>/// Регистрация DI контейнера интерфейса сервиса вызова метода отправки формы данных платежа клиента службы доставки
>/// Сервис вызова метода отправки формы данных платежа клиента службы доставки
Это да, очевидная хуйня - засоряет.
>>33799
>/// Интерфейс сервиса вызова метода отправки формы данных платежа клиента службы доставки
То что, это интерфейс итак очевидно и не нежно, но подписать, что за контракт он реализует, тоже иногда бывает полезно, если это не какая-нибудь очевидная хуйня вроде репозитория или клиента.
Собственно, я не хочу делать общую сборку в которую вынесу события для эвентбаса. Я хочу чтобы каждый модуль мог сам определить события, и потом если имя И СИГНАТУРА объекта совпадает - какой-то модуль обрабатывал.
Тут и вопрос. Есть ли более хороший путь, кроме как заворачивать при публикации в жсон и динамически пробовать развернуть в объект уже из другой сборки?
Я как-то делал типа утиную реализацию, типа если все поля есть - то можем спапить. НО, это во первых был оч обскурный код, там надо было ебаться с генерацией типов в рантайме, да и вообще, не настолько я хорошо знаю шарпы. Больше так не хочу.
Чтобы было понятно:
public record UserAuthEvent(int Id, string Name, string Email) : IEvent // MyProj.ModuleA
public record UserAuthEvent(int Id, string Name, string Email) : IEvent // MyProj.ModuleB
Почему я так хочу? Потому что я не хочу пересобирать модули, которые не менялись. А если я буду менять какую-то базовую сборку с событиями - все модули что ее используют(считай все) будут должны пересобраться, а иногда это критично.
Это ирония была. Комментарии запрещены у нас, как и на всех нормальных проектах после того как один дебик вот такой хуйнёй начал заниматься.
сделай дискриминатор и по нему разбирай тип сообщения
>Почему я так хочу? Потому что я не хочу пересобирать модули, которые не менялись.
Ты дрочила просто, экономишь на хуйне
Если тебе приходится часто писать приватное поле под гет/сет - то ты неправильно используешь свойства.
Правильно, нахуй не нужна, лучше использовать автомаппер
>а ты пойди и сделай сразу
а я иду и делаю сразу. серьезно. в моей либе ака MiscUtils есть много чего и даже больше и уже десять лет минимум.
потому что нет ничего сложного сделать сразу.
>чего битками в 2007-м не обзавелся?
потому что я не оракул разбираться в чем то новом неизвестном
а SortedDictionary существует со времен динозавров и дженерики тоже. Что тут неизвестного то
А LINQ наверное инопланетные технологии будущего да?
ну а hex это ж...никто никогда не пользуется hex строками.
>>33789
>Зна́ние за́дним число́м — когнитивное искажение,
ты разраб дотнета?
взять тот же hex
они делают методы в классе Convert не помню в какой версии дотнета И делают метод для генерации хеша в нижнем регистре НО ДЕЛАЮ! ЕГО! ИНТЕРНАЛ!!!!!!
то есть они всё таки понимают нужность этого, потому что он был реализован сразу...просто ИНТЕРНАЛ
>>33890
>то ты неправильно используешь свойства.
вернее как раз правильно. геттеры и сеттеры как раз и придуманы чтобы можно было логику добавить, а не только степень видимости установить.
Другой вопрос КАКУЮ логику я там пишу - но этот вопрос за рамками.
да ничего
когда тебе в чай с сахаром не положат, собственно, чай - ну может ты поймешь в чем беда
хотя нет, не поймешь. Тебе в голову мозг не доложили )
Типо чем "throw отличается от throw ex". Хотя может джуны уже и это знают.
>они делают методы в классе Convert не помню в какой версии дотнета И делают метод для генерации хеша в нижнем регистре НО ДЕЛАЮ! ЕГО! ИНТЕРНАЛ!!!!!!
Напиши им в issue. Ну то есть это нормальная претензия, буквально создай им этот вопрос в гитхабе, я видел что они вполне себе выносили какие-то методы в паблик на основе реквестов, после обсуждения естественно.
Шо ты так гонишь на дотнетчиков, подумаешь обосрались в мелочи. В листе кстати есть AsReadOnly, которая даже аллокаций не делает, кроме аллокации себя естественно. Чем тебе это не нравится? Решили же твою проблему.
>Напиши им в issue. Ну то есть это нормальная претензия, буквально создай им этот вопрос в гитхабе,
ну я так и делаю же. Я ж не говноед, который "жричодали". Вот только толку мало - issue висят годами, вот в чем проблема.
>подумаешь обосрались в мелочи
практически в КАЖДОЙ мелочи.
>которая даже аллокаций не делает
но меняет объект на другой. Да и костыль это.
>Решили же твою проблему
нет не решили. Сам для себя я сразу написал метод типа дапперовоского AsList
но это никак не решает проблему что другие используют IList потому что "ну всегда использовали, а IReadOnlyList неудобна"
Я на такое сам не отвечу, это уже совсем обскурщина. Про отмену асинхронного метода через токен сорс ещё куда не шло.
ну тогда пусть расскажет про ExcutionContext, на который и завязано существование UnsafeRegister
и в таймерах та же беда.
>>333410
Как автомаппер оптимизирует запросы в БД?
Ты из епама?
Кто у твоей мамочки сладкий любимчик?
Почему Котлин такой выразительный?
>Почему Котлин такой выразительный?
потому что его не делали "они не приняли наш j# поэтому мы запилим СИшарп" - в итоге получился сиподобный язык с сахаром. что тоже хорошо, но все же сахар не был самоцелью
а сразу делали упор на DSL-способность языка.
рантайм конечно выбрали говно. ну и подход с корутиноскоупами хорош для своих задач, но мозг сломаешь
то ли дело простые и понятные тасочки (но это уже другая крайность)
Как автомаппер оптимизирует запросы в БД?
Вы из епама?
Кто у твоей мамочки сладкий любимчик?
Почему Котлин такой выразительный?
Почему List не наследуется от IReadOnlyCollection
Толсто.
ну так скорость работы и потребление памяти. там нет запаса на "нам расти надо" и вообще "нас могут менять" и потому можно оптимизировать чтение. Не нужны никакие локи и тому подобное.
редко создавать и часто читать - вот их место.
Я понимаю, но прирост для поиска не очень значительный, при больших затратах на саму оптимизацию. Выходит что имеет смысл использовать только для очень долго живущих сервисов? Сначала я вообще подумал это это просто readonly обёртка, типа заморозил коллекцию и будь уверен что никто не не поменяет, в то время как IReadOnly таких гарантий не даёт, ибо бог знает у кого под каким интерфейсом ещё лежит твоя коллекция. Оказалось совсем не про это.
но все же прирост есть. а если создается один раз то еще больше.
а там еще jit поработает
это как то работает. вот у меня WPF проект с таблицами и после дотнет 9 прямо заметно шустрее стал. Почему? хз видимо jit что то постарался.
IReadOnly не гарантии что тебя не будут менять. IReadOnly это заявление, что тебя собираются там только читать и поэтому ты можешь впихнуть хоть фрозен. Но это не запрещает тебе ничего менять.
С readonly - было бы удобно иметь условный immutable dictionary, но на хеш таблице. Как раз с целью хранить его и знать что даже если он пришел снаружи - никто поменять его не может. Поэтому первая мысль была - вот оно.
Самое смешное что инфа про это совсем не на поверхности. И уж точно когда ты видишь название ImmutableList ты не ожидаешь логарифмической сложности доступа.
а вот это ты зря. одной моей горящей жопы по этим поводам хватит на освещение всей солнечной системы.
так что ты присоединяйся к тем, кому норм.
https://jeremiahmorrill.wordpress.com/2011/02/14/a-critical-deep-dive-into-the-wpf-rendering-system/
> I’m currently working on a touch UI for an embedded medical device, and the requirement is basically to provide an iPad app-like UX. The machine has probably 2-3x the raw horsepower of an iPad, but no matter what, the UI just won’t feel as smooth or responsive as a slick iOS app.
> For another example, create an animated Expander with a large amount of content in it, or basically, slide anything with a large amount of content in it. This is a common iOS thing. It’s animation will be stuttery, even on a Core i7.
> Then I will see some cool HTML5 canvas example posted on Reddit, check the CPU loading it causes, and think there’s no way I could do that in WPF without 2x the loading. Even jquery widgets seem to behave more responsively than my WPF app.
> (это сколько то тредов назад сюда заходил жавишник и выиграл в перфомансе именно по этой причине)
Проиграл с этого демедж контрола. Петушарп сосёт БЕСПРОСВЕТНО у джавы в перформансе. Петушарп это говно уровня питухона, т.е. игрушечный язык для долбоёбов что ни разу в жизни не запустали бенчмарк, когда джава это язык отстающий на ~2%-~3% от максимально возможного перформанса в принципе (ассемблера и с++).
чушь говноеда.
я признаю что в том тесте шарп проиграл в 1.5 раза из за вот этого
1.5 раза в частном случае это не проигрыш
>джава это язык отстающий на ~2%-~3% от максимально возможного перформанса в принципе
ох уж эти ФАНТАЗЕРЫ
а уж жрет жава памяти как НИКТО ДРУГОЙ.
да срать на анимации. за них деньги не платят.
Зато возможность создать контрол не пердолясь в ручное рисование - это вещь
а хамл - не вещь, запарил уже. но альтернатив толковых нет.
сразу видно что ты дурачок
если ты сравниваешь с ассемблером то сравнивай в числодробилках, а не либы !!!!с разным функционалом.!!! (потому как даже в рамках одного языка та же жсон сериализация имеет кучу реализаций с разным перфомансом) - сравнение такого рода сразу выдает человека не совсем здорового.
с ассемблером ладно. давай с растом хотя бы (пик)
2-3% ога ))))
ну чего еще от дурачков ожидать.
Ага, понятно, жсоны сериализовать можно очень по разному, можно парсить, а можно читать, и на весь огромный петушарп не нашлось либы, что сериализует жсон таким же методом, чтобы также быстро как и на джаве получилось!
Позоришься, клоун)
каким методом, дурачок?
на твоем скрине ВЕБФРЕЙМВОРКИ сравниваются, а не чисто жсон сериализация даже. (то есть в принципе разный функционал у них)
Господи, ты когда жавистов создавал, вообще мозг им давал или отложил "выдам когда реализуют гет/сет на уровне языка"?
ты чего с зеркалом то разговариваешь, жавопсих. да еще так орешь, что всем тебе слышно.
ты (или не ты) ляпнул про 2-3%, а сейчас чего то замолчал по этому поводу
а сравнивать фреймворки или сериализаторы будет только имбецил. их воз и тележка в каждом языке, да и разные они между языками (банально в жаве нет структур, с дженериками жопа и так далее)
>>34940
ну плохо быть тобой. я хз что можно писать на WPF чтобы прямо требовали анимации.
То есть не будет? Слив, клоун. Иди дальше перформанс тюнить, а то 1к рпс сервер ложат.
конечно не будет. я не психиатр, справочку выписать не могу
могу только посоветовать к нему обратиться
но это я как бы сделал...правда не слишком явно
они тоже не психиатры, увы.
так что сходи в пнд сам. Там тебя со старта примут только заикнись что ты на жаве пишешь.
нам то какое дело до чужой копрофилии. иди собратьям это говори, а тут тред не засоряй.
отвечаю только из за трипла.
тупость говноеда жависта меня утомила. все всё увидели что не стоит на жаву смотреть, а то такими же дебилами станут
можешь уползать в свой сральник.
я больше учить тебя уму разуму не буду даже за триплы
— ррааззддааллссяя ппррооннзз[сборка мусора]ииттееллььнн[сборка мусора]ыыйй ввооззгглл[краш]
Java лучше чем C#. JVM производительные чем CLR.
Потому что ебись оно в сраку. Какой еблан придумал - константы положить в отдельную папочку. Модельки которые их используют - в другую. В третью - енамы. А потом тебе этот код из проекта в другой проект надо перенести - и ты как ебанат бегаешь и ищешь все говно.
Да даже если не переносить - ты подключаешь какую-то хуйню, и тебе хуяк - 100500 неймспейсов навалилось, и начинается....
Короче - структура должна быть такой:
- Папка1
--Модель1.цс
--Модель2.цс
--Константы.цс
--ЯСервис.цс
--Сервис.цс
--МодульТестыСервис.цс
--События.цс
Ну короче, вы поняли.
> Какой еблан придумал
Джависты. Придумывают 100500 пакетов на каждый пук. Потом не могут вспомнить, где что лежит, а автоимпортом импортируют нужное только с третьей попытки. Додумываются называть классы как можно уникальней, чтобы при импорте был только один вариант, и пох, что в имени класса теперь 50 символов, половина из которых совпадает с именем пакета. Хуй знает ваще, зачем это тащат в шарп.
именно так. feature based деление на папки рулит.
Открой для себя Vertical Slice Architecture
-тся!
>--МодульТестыСервис.цс
Ты еблан? Нахуя тесты пихать в сборку? Нахуя они будут присутствовать в скомпилированном коде, который поставляется клиенту или разворачивается на сервере? Ух, сука, как подгорает!
>Потому что ебись оно в сраку. Какой еблан придумал - константы положить в отдельную папочку. Модельки которые их используют - в другую. В третью - енамы.
Тоже никогда не понимал, зачем так делать. Я руководствуюсь следующим правилом из Библии:
Не клади руку в карман если у той меньше пяти пальцев. Это и не рука вовсе. Если пальцы кривые и выглядят как узелки на верёвочке, то, эта рука больна. Отрежь её. Но не жди, что на том месте вырастет другая, по виду здоровая и которую можно подать и бедному и богатому.
Я группирую по сервисам. В одном файле лежит сервис, интерфейс к нему, все используемые енумы и дтошки. Нахуя плодить 100500 файлов по 10 строк в каждом, а потом лазить по 100500 вкладкам - непонятно, это что-то из области психиатрии.
Охуенно наверное потом в двадцатером коммитить в один файл. Если про папки утверждение имело смысл, то тут - бред шизофреника.
На котлин что ли?
>В одном файле лежит сервис, интерфейс к нему, все используемые енумы и дтошки. Нахуя плодить 100500 файлов по 10 строк в каждом, а потом лазить по 100500 вкладкам
Конечно, лучше как ебанутый метаться по одному файлу туда-сюда без возможности посмотреть некоторые места одновременно.
Ну и хранение интерфейса вместе с реализацией, тоже классика. Нахуй он тебе тогда вообще нужен? Ты множественные реализации тоже в один файл с ним будешь засовывать?
В вашей шараге бардак вместо процессов. У нормальных людей таски разделяются между разработчиками и никто в один файл толпой не комитит. Ваш лид пидорас и хуесос.
А он на нахуй ненужон, диай ваш
Ебать ты долбаеб братишка
как помоч несчастным.jpg
>в шарпах не было varargs.
что значит не было? params много лет
просто он либо принимал массив, либо сам создавал - что приводило к лишним аллокациям только для вызова такого метода
А также __makeref, __reftype, __refvalue.
>params
Невероятно полезная фича уровня dynamic, перепишу теперь весь код нахуй. Паджиты совсем сдулись, уже не знают как выполнить план по нововведениям.
>Невероятно полезная фича уровня dynamic
фича как фича. использовал много раз
> план по нововведениям.
оптимзировать ее нужно было давно. с самого начала, а лучше за 100 лет до рождения c#
но раз уж дотнет9 упор на оптимизацию...
а вот фича с индексом с конца - хз кому она вообще нужна
Зачем оптимизировать то, что никому нахуй не надо? Эти params используются только в string.Format, форматирование давно все делают через доллар.
>Эти params используются только в string.Format,
мде. что ты пишешь? калькуляторы?
это используется там, где это удобно.
если ты не использовал нигде - ну это твой частный случай.
Откуда эта тряска чел? У тебя блять нет решарпера в конце 2к24? У меня приватное поле создаётся АВТОМАТИЧЕСКИ когда я требую создать тела для сеттера и геттера.
Пиздец ты шизофреник.
у меня есть решарпер
я тот чел что жалуется что текущий решарпер вешает студию и это известный баг который типа будет пофикшен после нового билда
но билда нет уже полмесяца
а теперь по твоей аргументации
>У меня приватное поле создаётся АВТОМАТИЧЕСКИ
и оно НЕ НУЖНО НИГДЕ!!!!!!!!!!!!!!!!! кроме этого свойства, то есть банальный семантический мусор
и ты после этого нормальный? значит не пользуйся филдами когда они выйдут окончательно. ты же нормальный типа )))))))))))
А если воспользуешься (пусть и решарпер тебе перепишет) значит ты пидорасом станешь
Vscode кривое тормозящее говно. У меня после какого-то из недавних апдейтов пропадают букмарки, в списке они есть, а в окне с кодом нет. Паджиты, хуле.
Хуитку из трех файлов вскоде еще потянет, но в продуктовом солюшене однозначно нет пути.
Нахуя ты на линукс перешёл?
Линукс это ОС для серверов чтобы экономить на лицензии и то при наличии денег лучше ставить винду.
Он просто напросто непригоден для работы, ты будешь больше ебаться с проблемами кривых пакетов и почему у тебя отвалилось "хуйня_нейм"
Хочу высказать моё почтение, разрабы .NET сделали реально заебись. В плане Keycloak достаточно просто добавить конфигурацию и прибиндить и оно работает, просто работает, сразу и без каких-то проблем. В целом с любым OAuth2 будет также.
Что не заебись это поведение при AllowAnonymous. В таком случае .NET все равно пытается проверить токен, но только при наличии схемы по умолчанию. Проблема заключается в том, что даже так дотНЕТ проверит только эту самую по умолчанию и дальше ничего не сделает. Политиками по умолчанию это не решается, надо указать именно схему.
В целом это не влияет никак на бизнес логику потому что ей, очевидно, не нужна информация о пользователе. Проблема в логах, там теперь нельзя понять кто же сделал анонимный запрос.
Postmat - отвратителен, он ебёт мозги письмами, отжирает полтора гигабайта памяти, ебёт мозги покупкой лицензии, в общем не вариант.
Insomnia - вариант, но он для меня просто неудобен. Там окружения очень неудобно переключать.
Пробовал Yaak - мне понравился, но его тут же сделали платным.
В идеешке запросы отсылать люблю, но не люблю, хотелось бы именно годную программу. Чтобы на линуксе тоже работало.
В итоге получается, что абсолютно одинаковых графических обёрток над курлом дохуя, но все они говнище
Порекомендуйте что-нибудь, на чём можно остановиться?
Посмотри Bruno.
>Нахуя ты на линукс перешёл?
Импортозамещение на гос галере. Ещё и астру-линукс ставят. Я пока подготавливаю рабочее место.
Может проще перейти на джаву+эклипс, чем ебстись с дотнетами на вскоде?
>Импортозамещение на гос галере.
А где вы сборку .Net берете? Качайте у Майков или есть импортозамещенные сборки .Net с саппортом и ГОСТ 28147-89?
>Может проще перейти на джаву+эклипс, чем ебстись с дотнетами на вскоде?
Проще писать коды на своем компе, а кабану скидывать уже готовое через дыру в его анальном огораживании. Тогда и не придется ни на что переходить.
VSCode + HTTP Client
>ГОСТ 28147-89
В .Net-е по моему никогда и не было гостовских алгоритмов. Их всегда приходилось колхозить через всякие криптопро, сигнатуры и т.д.
>В идеешке запросы отсылать люблю
Имеешь в виду .http files в VS? Да, удобно. Но тогда ты должен знать, что оно вдохновлено VS Code REST Client extension. А VS Code работает и на лялихе.
А пакеты с сертификацией ФСТЭК там тоже есть?
> что оно вдохновлено VS Code REST Client extension
не, оно ещё в саблайм тексте 10 лет назад было.
Ну не запускать же VS CODE, который отжирает гигабайт памяти только за факт своего запуска? Тем более Visual Studio.
Вообще обидно. HTTP протокол простой как палка, для него нужна программа простая буквально как блокнот. А мы имеем комбайны с ЭЙ АЙ КЛАУД ОППОРТУНИТИС чтобы курл дёрнуть.
> нужна программа простая буквально как блокнот
Раз она такая простая, тебе не составит труда написать её самому.
Простых программ дохуя, ими весь гитхаб завален, но они же все не на слуху, страшно использовать.
Да в том и вся проблема. Либо постман, который уёбищен во всех смыслах, либо кустарное говно, которое при первых признаках популярности начинает просить всего по пачке жевачки в месяц (10 долларов, разумеется, а где эти доллары брать, я хуй знает, в руках их держал 1 раз в жизни).
Какой-то заколдованный круг в итоге.
Для себя я уже начал накидывать прототип на авалонии. Думаю уложиться в 800-140 мегабайт оперативки. Но чтобы довести до вменяемого уровня, надо усилия прилагать, тратить время, вылизывать и делать внимание к деталям.
80 мегабайт. Вроде старт авалонии минимум 60 занимает.
Но лучше 80мб и минимальный функционал, чем 800 и облачный эйай у постмана.
Постман отвратителен, небогоугоден и неаыразителен
Х.з. даже, в ежегодных Performance Improvements in .NET X что-нибудь проскакивает.
Иногда в блоге что-то интересное - https://devblogs.microsoft.com/dotnet/
Deep .NET - https://www.youtube.com/playlist?list=PLdo4fOcmZ0oX8eqDkSw4hH9cSehrGgdr1
В доках рантайма, но зачастую при их чтении не хватает контекста и доп. пояснений/информации - https://github.com/dotnet/runtime/tree/main/docs
https://www.youtube.com/@MaoniStephens/videos
https://devblogs.microsoft.com/dotnet/author/maoni/
Редко/очень редко что-то интересное:
https://andrewlock.net/
.NET Conf - https://www.youtube.com/playlist?list=PLdo4fOcmZ0oXeSG8BgCVru3zQtw_K4ANY - но они все поверностные, хотя что-то интересное может попасться, как например: https://www.youtube.com/watch?v=1bsTnaLchi4&list=PLdo4fOcmZ0oXeSG8BgCVru3zQtw_K4ANY&index=94
https://www.youtube.com/@DotNextConf
https://www.youtube.com/@DotNetRu
Есть ещё не самые свежие, но я читал на досуге:
https://mattwarren.org/
https://devblogs.microsoft.com/premier-developer/managed-object-internals-part-1-layout/ - и другие части
https://yizhang82.dev/blog/dotnet
https://migeel.sk/
Это всё если либо более глубокая "инфа" по разным темам или просто внутренности рантайма и т.д. Но я думаю всё это есть в той книге, в той или иной степени (я просто х.з., всё руки не доходят до неё).
Я был бы не против если бы кто-нибудь ещё что-то подобное кинул.
Вот ещё чё вспомнил:
https://minidump.net/ <-- Kevin Gosse - один из авторов той книги
https://xoofx.github.io/blog/
https://lukasatkinson.de/2018/interface-dispatch/
https://habr.com/ru/articles/307088/
Понимаю, что вопрос про софт, но типа.
Вот допустим, начал я что-то писать. Допустим, обертку над ребитом. Определил там сразу Event, ну, типа шина, вся хуйня.
Прошел год. Все пользовались, но закралось подорзение, что не гуд, что каждая блядская либа из класса *.Domain - знает не только про события, но и зачем-то интерфейс шины.
Возникает охуенная идея - а вынесу я Event - в отдельный проект, в духе Company.Project.Primitives.
И все. Пизда пошла. Теперь я как еблан бегаю в 100 местах ставлю ссылку на новый проект, удаляю ссылку на проект с абстракциями для шины.
А как было бы удобненько, если бы вот как с неймспейсом, но для проекта было бы. Клацаешь: Перенести в проект. Оно в корень перелетело, ссылки проставились где надо. Да. Ссылка на абстракции шины осталась, но там можно было бы другую хуйню еще: Удалить ссылки на неиспользуемые зависимости. И хуяк - у всех проектов осталось только то что используется.
Вот что в этом такого пиздец сложного?
Не знаю что у тебя блять сложно перенести в другой проект, а потом сказать студии импортировать новые ссылки в нужные проекты.
То что это делается не автоматически.
При переносе класса в другой неймспейс - студия сама все импортирует.
Когда я переношу руками в другой проект, на который нет ссылки, начинается - 9000 ошибок, не знаю что за класс. И я как дебил полдня трачу, чтобы все импорты проставить.
Сколько у тебя там проектов в солюшене, что ты по пол дня тратишь на то, чтобы в них ссылки проставить? Просто если для тебя это постоянно боль, то вангую что с архитектурой что-то не то. Скорее всего десктопные приложения пилишь, да?
У меня, за все время работы на последнем месте, необходимость вынести что-то прям в отдельный проект появлялась раз 5 от силы, и то это обычно было в репозитории с платформенными либами, когда либу на Abstractions и Implementation пакеты разбивал, чтобы не тянуть лишние пакеты-зависимости туда, куда не следует.
В самих же (микро-)сервисах, при создании проекта у нас автоматом из шаблона создаются проекты под слои приложения (Domain, Application, Infrastructure, Hosting) и CrossCutting-проект для всяких хелперов и методов-расширений, которые могут в любых других проектах использоваться. И обычно достаточно просто перекинуть код между проектами (к примеру из Domain в Infrastracture, как в твоём примере с шиной), а потом просто попросить IDE автоматически выправить пространства имён и using'и по всему решению.
Приложения. Но в них я чаще говноархитектуру встречал.
В ASP.Net Core сама структура фреймворка и сопутствующих либ диктует, как приложения на слои разбить. Есть контроллеры, есть EF-Core для доступа к данным и т.д. Во всех местах, где работал, структура сервисов была +/- похожая. Везде на слои били.
А в десктопных обычно все лепят кто во что горазд. Плюс не одного устоявшегося стандартного фреймворка. Где-то Prism юзают, где-то что-то своё на основе MVVM Community toolkit пилят, а где-то реактивщиной с ReactiveUI упарываются. Ну и просто по объему кода десктопные приложения обычно заметно жирнее, так что там проблемы с архитектурой острее стоят.
>Во всех местах, где работал, структура сервисов была +/- похожая. Везде на слои били.
Я работал с долблёбами, которые повторяли в день слова clean architecture по 10 раз, кичились ДДД, у них была разбивка по 5-7 слоям, но в итоге всё сваливали в кучу в проект Core.Domain, к которому подключались все нугеты.
Вот тогда я понял, что лучше не понимать вот эту всю архитектурную хуйню, чем понимать, но неправильно.
А к чему это я. Правильно: тот проект был о разработке твоей мамки
>как приложения на слои разбить. Есть контроллеры,
а кто сказал что это хорошо. Поклонники feature-based деления скажут что вы шизанутые части одной фичи по 100500 мест размазывать
> ДДД
Для меня это уже редфлаг. Если мне на собесе скажут, что у них все по DDD, то я скорее всего дропну вакансию. Только один раз видел, когда его нормально реализовали. В остальных местах был просто какой-то лютый дроч без особого выхлопа.
У нас крч интерфейсы лежать в слое Domain их реализации и регистрации в Api и используют их в Application слое.
На мои логичные вопросы а почему бы вам не переложить реализации в Application, а ещё лучше в слое Domain пошли какие-то ебанутые рассказы про чистую архетуктуру. На это я прям на встрече сказал "ну окей давайте я сейчас добавлю новый слой PizdaApi или удалю Api. Ой блять приложение больше не запускается." Причём их даже это не убедило, что у них ебаный слой Api предоставляет Application реализации бизнес логики, а значит Application транзитивно от него зависит. Аргумент был заебись "ну ссылки до идут от Domain <- Application <- Api" ссылок на проект нет значит и зависимости нет.
> Сколько у тебя там проектов в солюшене
120 примерно. С ходу не вспомню.
> Просто если для тебя это постоянно боль, то вангую что с архитектурой что-то не то
Ну. Как. Обычная микросервисная. Штук 15 сервисов, каждому из них создай домен, инфраструктуру, DAL-уровень, какую-то либу для своих ютилити штук.
Плюс - десяток либ для внутреннего использования или вот как раз с теми примитивами, которые всем нужны. Ну или всякие общие мидлвары и все такое.
>>37266
Как раз и разбивали. И это еще большая боль в заднице. Вот у тебя домен. Домен должен по хорошему ничего о шине не знать, только объявить свои события. Вот у тебя приложение - оно уже про шину знает, но не знает с какой конкретно работать будет, ей нужны абстракции шины. Вот у тебя инфра - она уже знает, что с кафкой работать надо. Вот у тебя еще запускатор, который может быть с веб-апи, а может без, в зависимости от сервиса.
И вот тебе надо из проекта EventBus.Core - вынести Events в проект Primitives. Все. Пошла пизда. Всем доменам - добавь ссылку на это, удалить ссылку EventBus.Core. Теперь всем приложениям - уже надо добавить ссылку на EventBus.Core, ведь теперь они не могут из домена это получить. Ну и т.д.
Это самый простой пример.
А когда начинается хуйня с контрактами. Ебись оно в сраку если честно.
Одни пишут - харам общую сборку для контрактов, вы же завтра решите на питон переписать, так что сразу делайте что сервис сам контракты объявляет.
Другие - не страдайте хуйней, вынесите контракты в одну сборку и пусть все подключают.
Третьи - нет, разбейте по доменам, и общие доменные события в одну сборку, нехуй сервису знать про события, которые в других сборках.
Короче. Залупистика.
А вынести иногда надо. Потому что когда у тебя библиотека какая-то должна на сторону пойти - выглядит кринжово, что с ней рядом лежит dll в которой половина кишок валяется.
Ну а я это к чему пишу-то.
Вот типа когда я пишу два класса в одном файле - студия предлагает рефакторинг - о, можно вынести в отдельный файл.
Или когда я хочу - я навожусь на неймспейс - и она такая, а давай перенесем куда тебе надо, хоть новый создадим. И если кто-то использует класс - везде оно поменяет.
Вот нужна такая же фича для переноса между проектами. Было бы просто замечательно. Да.
Вот за это и не люблю монорепы (даже для одного приложения). Еще и студия/райдер тормозят от такого кол-ва проектов.
Как по мне, лучше уж каждый микросервис в отдельном репозитории держать, а какие-то общие штуки в nuget-пакеты выносить. Так меньше соблазна сослаться на то, на что вообщето не следует. И вообще более вдумчиво все начинают подходить к тому, какие штуки должны быть общими.
А проблему контрактов мы у себя с помощью protobuf-ов и GRPC решили. У нас просто есть консольная утилита, которая берет ссылки на протники из репозиториев других сервисов из yaml-файла, который в репозитории сервиса лежит, и подтягивает их в проект. При билде для них C# контракты генерируются. Общие для всех сервисов протники просто в отдельном репозитории лежат и так же подтягиваются из него утилитой. Плюс недавно джобу для билд-пайплайна запилили, которое проверяет, нет ли в мр-е tracking changes в протниках.
Про ГОСТ это была шутка, вопрос про сборку .Net. У Java есть Axiom JDK которая собирается российской компанией, находится в Реестре Российского ПО, сертифицирована ФСТЭК.
Соответвенно мой вопрос, есть ли что-то подобное для .Net?
Какой пиздец это оказался не троллинг. И сколько денег освоили эти парни из Axiom, какой олигарх или министр крышует? Я блеванул с главной страницы их сайта.
Сборки дотнета нет потому что дотнет лежит на гитхабе. Вообще сборки в программировании это какая-то специфика джава мира.
Не смешно. Мне надо по требованиям использовать нативную сёрд пати лайбрари, которая доступна в виде jar-ника. Во флаттере я могу захерачить активити и общаться с ней из нормального кроссплатформенного кода. Как мне в уно сделать что-то подобное?
>При билде для них C# контракты генерируются.
Не перемудрили? Мы такие раньше просто скриптами по необходимости дёргали
>пошли какие-то ебанутые рассказы про чистую архетуктуру.
Но по чистой архитектуре должен быть проект Infrastructure с реализациями, если они зависят от базы или третьих сервисов. Если это какие-то типо Domain сервисы - их реализация может быть и в Application.
В Api ничего быть не может, что не относится именно к api.
>слой Api предоставляет Application реализации бизнес логики, а значит Application транзитивно от него зависит
Смотря что за реализации, но так это и должно работать.
Не, удобно на самом деле. Это стандартный флоу для GRPC. Все эти контракты автоматом генерируются стандартным гуглувским пакетом (Grpc.Tools который). А вместе с контрактами сразу генерируется абстрактный класс для реализации объявленного GRPC-сервиса (там остаётся только заовверайдить методы и их реализовать) и реализация клиента для него.
>Смотря что за реализации, но так это и должно работать
В смысле смотря что. Там лежит реализация интерфейса из Domain при этом используется этот интерфейс в Application.
Это не должно так быть и так делать нельзя потому что ты связываешь два разных слоя причем. Ты не можешь отделить АПИ от твоей системы и наоборот заменить то что лежит ниже этого АПИ.
var result = responseData
.Select(item =>
{
try
{
var json = JsonConvert.DeserializeObject(item.ResponseBody);
return $"URL: {item.Url}\nResponse Body: {JsonConvert.SerializeObject(json, Formatting.Indented)}";
}
catch (Exception ex)
{
return $"URL: {item.Url}\nFailed to parse response body: {ex.Message}";
}
})
.ToList();
return string.Join("\n\n", result);
>Это не должно так быть и так делать нельзя потому что ты связываешь два разных слоя
Ты просто создаёшь в домене некие абстрактные интерфейсы которые реализуешь потом.
Если написано хорошо и удачно - ты сможешь заменить апи на десктоп, а SQL базу на NoSql буквально без единого изменения в домене. Потому что он зависит от интерфейса, а не от апи напрямую. Цель - сформировать самодостаточный уровень домена, который бы не зависел от реализации. Но в отрыве от базы данных и прочего не очень понятно что должен делать код уровня "SaveUser" или "SendMessage", поэтому эти вещи существуют в домене как интерфейс без реализации.
Да всё в те же, в каких и топ 10 других языков.
По моему сюда пишут только тогда, когда шарподебилы начинают активно у нас срать. А вообще общеизвестный факт, что священный вояка это безработный пидорас и ненавидим обеими сторонами.
>Если написано хорошо и удачно - ты сможешь заменить апи на десктоп, а SQL базу на NoSql буквально без единого изменения в домене.
Караван охуительных историй. Нет, не можешь.
> На мои логичные вопросы а почему бы вам не переложить реализации в Application...
АДИК - субъективная и неоднозначная архитектура, которую каждый волен трактовать по своему.
Более того, она в принципе не реализуема, потому что всегда есть входная точка приложения, при упоминании которой принято стыдливо отводить глаза в сторону и переводить тему.
>Вот нужна такая же фича для переноса между проектами. Было бы просто замечательно. Да.
Просто в два этапа делай, сначала неймспейс поменяй на целевой, а потом файл перекинь.
Вот буквально все. Даже написание мобильных приложений через ксамарин. Даже десктоп.
>Если написано хорошо и удачно - ты сможешь заменить апи на десктоп, а SQL базу на NoSql буквально без единого изменения в домене
При условии, что ты готовил проект к этому годами и надрачивал на мысль о том, что тебе надо перенести проект на no-sql.
Ну и при условии, что твоё приложение - Weather Forecast.
Ты просто не видел как это по-нормальному пишется.
И это нормально. Потому что хорошая чистая архитектура действительно почти нигде не нужна. Нужно какой-то рандомный шаблон чтобы раскидать всякие классы, для этого что угодно подойдёт как основа.
И я не видел. Наверное потому, что реляционную бд в принципе нахуй не надо менять на моего ебаное ввиду того что это списочек джейсонов?
Монга - это секта поехавших, с ними бесполезно говорить. Если в проекте упоминается монга - там дичайший кал говна, от которого охуеют даже паджиты.
>Что не так,
Это твоем хеловорду похуй на чём и как запускаться. А в крупных компаниях сидят на старых версиях и надо чтобы кто-то бэкпортил критичные багфиксы. Чтобы можно было засабмитить баг и его пофиксали. Вот для этого и нужен суппорт.
>>37389
>Иди билди дотнет и продавай кабанычам.
Куча компаний зарабатывает на том что билдит ядро линукса, посторесс и т.п. с гитхаба.
>Куча компаний зарабатывает на том что билдит ядро линукса, посторесс и т.п. с гитхаба.
Наверняка на компьютере
Троллинг тупостью вышел на новый уровень.
>А чего не лежит?
хз, сложилась ассоциация что это интструмент для вебсайтиков. Ну и он монструозный, мне надо компактный для лёгкого сервиса.
>Может, минимал-апис подойдёт?
Это?
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-9.0
Понял, спасибо. Пойду курить мануалы по асп кору.
ну памяти он ест приличнее чем тот же HttpListener голый с обработчиками запросов
- Как жить без указателей?
- Как жить без #define?
- Как жить без typedef?
- Как жить без человеческих enum'ов?
Хули тут всё так неудобно?
На энумы не будет. Они реально убогие. Еще и работают почему то медленнее
Писать свой движок, конечно, интересно и приятно, но нереалистично, если хочется писать игру, а не движок.
Юнити тот ещё кактус, но увы, это всё ещё лучший вариант для одиночки, если хочешь в приёмлимые сроки написать законченный продукт, а не разрабатывать тулзы до старости.
>>38944
Сомневаюсь. Неуютное чувство, что тебя держат в песочнице и смотрят как на идиота никуда не денется.
а зачем оно нужно?
даже 9 классов не нужны если ты умеешь писать код.
диплом разве что хреновая подставка под кружку в айти
>- Как жить без указателей?
Они там есть. Ну вернее в шарпе есть. В юнити я не знаю чем тебя барин кормит.
>Как жить без #define?
>Как жить без typedef?
Это всё есть.
>Как жить без человеческих enum'ов?
Лол.
> Сомневаюсь. Неуютное чувство, что тебя держат в песочнице и смотрят как на идиота никуда не денется.
Охуенное чувство однозначной, предсказуемой модели памяти, которая просто работает и не бухтит.
Это как созерцать Windows XP после ебли с Windows 11.
Это как созерцать Windows XP после ебли с Windows 98.
>>Как жить без человеческих enum'ов?
>Лол.
А я не понял, чего им там с энамами так хорошо живётся?
Я не понял проблемы енамов. Нужны конкретные примеры. Ну т что в шарпе они медленные - это верю. А ещё то что.
проблема в том, что этот франкеншейн просто этакий не пойми что вокруг типа и ничего более
ты не можешь хранить разные значения в нем (да ты можешь это делать с помощью классов, но зачем тогда енум)
также ты можешь присвоить значение которого нет в енаме и никто и слова против не скажет.
Получается по факту что это строковое обозначение каких то значений базового типа (например инт) причем не бесплатно в плане выполнения (банально медленнее чем тот же инт) и при этом позволяет присвоить чего угодно. Этакий враппер над базовым типом с недовозможностями.
У тебя целые числа тормозят?
потому что это скрин из учебника по расту.
>посмотри на котлин
Он такой выразительный!
>посмотри на rust (пик) - в языке в принципе нет полиморфизма
Раст, к сожалению, не закрепился
какая разница. я просто показал что это не "нельзя сделать такие енумы ибо полиморфизмы и другие умные слова мешают", а просто шарп сделал убогие енумы
>посмотри на котлин
В Котлине энам это по сути объект с виртуальной таблицей методов, который требует выделения в куче.
>нельзя сделать такие енумы
Ёбнись об стену. Энум это в шарпах число.
А в расте энум не число, а универсальная структура данных размером с максимально допустимый в ней объект + дискриминатор.
ты сравниваешь не относящиеся друг к другу категории, по ошибке названные одним словом
А речь шла про энамы из крестов вообще, там Антон выше на них надрачивал
вообще то это обертка над числом на уровне IL, поэтому работает коряво и медленнее.
Ну так то да, в остальном бумс. Но кому от моего бумс легче стало?
Попробуйте оспорить, что-ли
>вообще то это обертка над числом
Это и есть число, там никаких обёрток нет
>на уровне IL
Для красного словца что-ли решил приплести IL?
>поэтому работает коряво и медленнее.
Схуяли? Не улавливаю твой ход мысли. Примерно хоть объясни, откуда ты это взял?
Ты наговнокодил где-то, такого не может быть даже если ты 100 запросов параллельно пустишь.
>вообще то это обертка над числом на уровне IL, поэтому работает коряво и медленнее.
А, ты шизофреник просто. Так бы сразу и написал, а то выдумывал что у шарпа какие-то проблемы есть лол.
Ахаэахахахахахп
котлин - тупопёздный кал для ебаньков. Говно без задач.
Cорта говна, в обоих нет андроид тестов.
>>39685
>>39672
это не число (пик пруф)
коряво, потому что всякий десериализатор впихнет туда любое число и не поперхнется. Ну ладно это природа енума ради перфоманса....
но перфоманс их оставляет желать лучшего. О скорости методов енума легенды ходят.
ну ладно, там линейная сложность + рукожопство разрабов шарпа
так что возьму простое - я как то в микробенчах заменил енумы на числа и получил х4 в скорости. То есть это нихрена не zero cost
Просто ты долбоёб и даже микробенч не смог написать что бы не наглотаться погрешностей измерения времени.
По дизассемблеру, чего тебе дебило не нравится? Потерей никаких нет, все ровно целое число и занимает.
>рукожопство разрабов шарпа
Угу, липперт и хейлсберк сидели в мс за зарплатой 5 лямов в год потому что рукожопы, а какое-то анонимное ебанько вершина достижений которого срать на сосаке, нерукожоп. Я бы на твоем месте задумался над самооценкой.
Ебать дебил. Как из того факта что енум в IL имеет самостоятельный тип следует что в рантайме будут накладные расходы? Что тебя ждёт когда узнаешь что генерик в дот нете тоже имеет прямое представление в IL а не макрос времени компиляции как на плюсах?
>Угу, липперт и хейлсберк сидели в мс за зарплатой 5 лямов в год
так вот в чем причина, что очевидные оптимизации делаются через годы, а то и десятиления. Я тут выше писал про дотнет9 как пример.
Интересно, а почему эти супер кодеры не сделали Enum.GetValues (и другие методы) быстрым сразу, а потом? Почему в LINQ оптимизации "а вдруг у нас тут список, так зачем создавать итератор если можно пройти по индексу" завозят только к 9й версии дотнета? это все риторические вопросы
чтобы подольше зарплату получать видимо. Ясно понятно.
зато они забыли сделать IReadOnlyList на старте (хотя может не они) и спроектировали дебильную систему коллекций. (но это уже оффтоп)
>Я бы на твоем месте задумался над самооценкой.
у меня с ней все нормальн. это мс меня за дебила держит. поэтому и сделал ConfigureAwait(true) (боже, ну и синтаксис) по дефолту. Все в угоду формошлепам, чтобы им меньше этой пурги писать (а то дедлоки хуже чем "к контролу нельзя обращаться в другом потоке"...)
И когда остальные попросили "а можно нам на уровне сборки указать чтобы можно было чтобы он был (false)" - то результат все знают.
Нет никакого результата. Даже в асп.нет коре пишут что там нет контекста синхронизации, но оверхед не сильно высокий от ConfigureAwait(true) по дефолту. То есть на полном серьезе - оверхед, да есть, но он же небольшой, чего вы жалуетесь, мы тут по 5 лямов зарабатываем.
>>40046
С енумом напукал в лужу, теперь по таскам решил насрать, генератор ты шизофазии нахватвашийся баззвордов? Иди учебники читай а не сри в треде. Всё там правильно сделно, тебе дебилу на низкой должности не понять. Читай бложек Липперта, он там популярно объясняет как принимаются те или иные решения по языку, по каким критериям и что берётся в расчёт.
по таскам и по всему остальному я срал всегда.
а пояснения вместо функционала и скорости - лично мне они не нужны.
Он может пояснить почему методы в LINQ что добавили в дотнет 9 не были добавлены раньше?
не нужны были? тогда зачем добавили? нужны были? тогда почему только щас?
аргумент "потому что так в мануале написано" оставь говноедам.
Насчет енамов признаю только частично. Ведь от этого они не стали ничем более как именованными интами без защиты от записи чего угодно. И когда у тебя в енуме 3 значения 1,2,3, а тебе может в рантайме спокойно прийти 10 и твой метод ожидающий что может быть только 3 варианта...
>твой метод ожидающий что может быть только 3 варианта
Падает на строке default throw new NotImplementedException()
Точнее, это написано в бузинес логике на всякий случай. Так-то ты мальчик взрослый и конечно же проверил юзер инпут еще в контроллере ручки, хитрый юзер получит ошибка 500 или чето там.
ты проверяешь всю ту портянку что возвращает любой рест апи?
ну ты молодец, ну или ты этого просто не делаешь )
>Он может пояснить почему методы в LINQ что добавили в дотнет 9 не были добавлены раньше? не нужны были?
про какие методы ты говоришь? если я о них не знаю, может они и не сильно нужны?
Самый главный вопрос, почему List не реализует IReadOnlyCollection? Что за безобразие!
>зато они забыли сделать IReadOnlyList на старте (хотя может не они) и спроектировали дебильную систему коллекций.
Они пиздили её из другого языка, где тоже не было ридонли коллекций. Как и lock (object) спизжено.
inb4: сегодня то, уже очевидно, что надо было делать по другому. Но тогда всё было не так очевидно.
>а пояснения вместо функционала и скорости - лично мне они не нужны.
Так ты на пиздел про скорость.
>Он может пояснить почему методы в LINQ что добавили в дотнет 9 не были добавлены раньше?
Ответы дадены в моём сообщении, перечитывай до просветелния. А ещё задайся вопросом почему Сталин людям ХДТВ не давал смотреть.
>Ведь от этого они не стали ничем более как именованными интами без защиты от записи чего угодно
У тебя совсем что ли вместо мозга насрано? Это их киллер фича и повсеместно используется. Без неё они не нужны т.к. будут дублировать обычный классы с кастом логикой.
>Так ты на пиздел про скорость.
я это признал, дальше что? а ничего.
>Ответы дадены в моём сообщении, перечитывай до просветелния.
ответы вида "ну так в документации написано" это не аргументы
>Без неё они не нужны т.к. будут дублировать обычный классы с кастом логикой.
каво шта?
Я посмотрел, там какое-то неебически огромное количество методов расширения.
Тащить всю эту библиотеку не вижу смысла. Хотя и не противник такого
Был проект netfx вроде где можно было затащить отдельный метод
Но умер из-за ограничений студии
Да
>Их наличие в целом красный флаг.
У меня сейчас проект, где много бизнес-логики написано на хранимых процедурах. Это такая мучительная блевотина, что я засомневался соглашаться на новый офер, если получу его на наступающей неделе. Даже прямо за очень хорошую прибавку.
Красный флаг - это слово фулстек в вакансии. Вот от такого говна надо держаться максимально далеко.
Ты клюпый просто. Хранимки означают, что на проекте бд инженеры есть.
Я бы на твоём месте просто всю бизнес-логику свалил на них, а сам попивал бы фраппе в 11 утра и дёргал даппером вьюшки.
>Хранимки означают, что на проекте бд инженеры есть.
Нет это означает что тебе придётся заниматься адовой ракоеблей на проде в попытке отловить баги через RDP говна под тремя слоями анальной модерации, а любая правка бизнес логики будет требовать десятка часов чтения говнокода.
Я белый человек с зп 320к который работает в банке бэкендором онли. Мои знания БД и как там это сделано заканчивается на миграциях в EF. CI/CD пишет и поддерживает девопс, фронт пишет фронтендер, за базой следит тоже девопс. Моё дело переложить JSON с фронта в базу в с помощью автомаппера
>Я белый человек с зп 320к
>Мои знания БД и как там это сделано заканчивается на миграциях в EF.
За что тебе деньги платят?
Плюсую, по кайфу вообще
Я на пяти работах из семи работал фуллстеком, и это ничем не хуже тех двух мест, где я работал бэкендером. Даже лучше, не надо с фронтами договариваться о контрактах, а то у них вечно какие-то ебанутые просьбы, то вместо массива объект прислать, то ещё какая хуйня.
С собой гораздо проще договориться.
Или наоборот
Какая же хуета этот ваш питон. Вынужден был с ним связаться, и более уебищного языка я еще не видел (а я с бейсика пришел). Иногда нужно окунуться в говно, чтобы полюбить си шарп с еще большей силой.
Никто код не комментирует, везде каст к object или any, и вызывают методы из обджекта по наитию. Никаких подсказок intellisence, а если и есть, то что-то уровня пикрилейтед 1, где вываливают в кучу описание метода, описание параметров, и все без подсветки синтаксиса.
Все поля публичные, в итоге люди пытаются капсом или подчеркиваниями визуально отделить мочу от говна. Ну пиздец какой-то. Неудивительно, что в их тредах растет шиза уровня пикрил 2. Они выдумывают какие-то ритуалы, чтобы что-то там не перепутать, хотя в нормальном языке синтаксис в принципе не должен тебе позволить перепутать.
Хуже только джава скрипт.
>Никаких подсказок intellisence, а если и есть, то что-то уровня пикрилейтед 1
так ты прыгай обратно в машину времени и возвращается
а то забросило тебя далеко в прошлое.
Так я работал в последней вижуал студии с установленными средствами для питона. Что еще надо?
Использовать type hints
И pylance
Конечно есть имбецилы что против этого типа "не по питонски это", но причем тут язык
>type hints
Первым делом начал юзать, но что делать с чужим кодом? Ты посмотри на пикрилейтед. Функция принимает any параметры, нииии одного комментария. Как с этим работать вообще?
>pylance
Это вообще для вс кода.
>тайпхинтинг
Я вот как работаю с комментариями.
1. Не трогаю их вообще никогда.
2. Даже если удаляю код вокруг, то то комментарии, если они были, оставляю на месте.
3. Если надо добавить метод, в класс с комментариями - просто вписываю его под уже существующий комментарий, если он хоть примерно пару подходящих слов содержит.
>Да у вас и приватные поля и методы создают только долбоебы. Указание типов параметров и переменных — это тоже для долбоебов. Высрали нечитабельное говно и рады.
Зачем этой хуйнёй заниматься, если можно просто через автомаппер писать? Ему не важна видимость и типы, а в случае, если типы не сходятся, он сам всё выведет
в контексте питона тут другое.
в питоне 3 есть тайпхинтинг на уровне синтаксиса, а вот в питоне 2 только в докстринг можно что то указать. упоротые орали про "питонвей, питон это динамика". А нормальные делали, а с приходом тайпхинтинга нормальных стало сильно больше, но если либа старая, то с ней реально проблема. Вот есть либа pewee - ее автор долбоеб, который специально не делает хинты ибо упорот. Но я вот попробовал ее захинтить и это реально жопа делать постфактум, то есть ниасилил я покрыть всю ту магию, что она в динамике выдает, хинтами.
>>41652
шарпоблядь рвет жопу, а зачем?
я тоже шарпист, но если собрат шарпист несет хуйню, то я с радостью потыкаю его мордой в "иди изучи вопрос, а потом рот открывай".
>я тоже шарпист
Здравому человеку в голову не придет высрать пикрилейтед >>41616
Ты просто горишь из-за того, что питон оскорбили. Никто в здравом уме не будет на шарпе писать только публичные поля и методы, возвращать и принимать данные object типа, не документировать свойства, классы и методы.
Нет таких людей. Нет.
а тыкаю я мордой в говно тех, кто в вопросе не разбирается, но мнит себя дохера экспертом.
>Никто в здравом уме не будет на шарпе писать только публичные поля и методы, возвращать и принимать данные object типа, не документировать свойства, классы и методы.
ну так шарп и задуман как статически типизированный язык, а питон задуман ровно обратным. Природа у языка такая - быть динамическим где всё создается в РАНТАЙМЕ.
>Здравому человеку в голову не придет высрать пикрилейтед
еще как придет. причины есть
1 это порт или враппер аля QT. а значит есть офф дока по всем этим параметрам. зачем её еще раз писать
2 когда в языке нет поддержки хинтов, то писать как бы нечем. А в пи2 такого не было ибо динамическая природа языка. И очень много кода с тех времен, которые тупо перегнали конвертером под пи3. А многие до сих пор поддерживают обе версии зачем то. Да и сейчас чтобы писать с хинтами - это нужно писать игнорируя динамическую природу (основную силу питона), а будто на шарпе каком пишешь. Сначала выбираешь динамику, а потом пишешь как будто статика. Зачем тогда питон вообще выбрал?
Каждому языку своя задача. Иначе почему твой супер любимый красивый и мощный шарп не заместил питон. риторический вопрос.
>а тыкаю я мордой в говно тех, кто в вопросе не разбирается
А ты разбираешься? Каждый второй дурак умеет тыкать других мордой в говно — для этого много ума не надо. Самоуверенность — не признак правоты.
>Природа у языка такая - быть динамическим
Не надо оправдывать глупости. Все мои претензии спокойно реализуются либо уже реализованы, но игнорируются пользователями.
Что мешает динамическому языку иметь приватное поле? VBA чет не помешало их иметь.
>когда в языке нет поддержки хинтов, то писать как бы нечем.
Но их появление — разве не доказательство моей правоты?
>Иначе почему твой супер любимый красивый и мощный шарп не заместил питон. риторический вопрос.
Вопрос форса языка инфоцыганами среди долбоебов (которых подавляющее большинство). Во многих сферах я встречал абсолютно ублюдочное приложение, которое по видом "справится и дурак" захватывало огромную аудиторию. Это даже не новость.
Это один и тот же. Чем больше раз напишешь ебанутое утверждение, тем убедительнее оно кажется.
Ссать надо за их отсутствие. В нормальных проектах у каждого поля, свойства и метода есть комментарий.
>А ты разбираешься?
да. пишу на многих языках, но не лезу со своим уставом в чужой монастырь.
а раз я пишу, то я ЗНАЮ как что где устроено
Впрочем, это неважно
потому что только долбоеб высрет фразу "Да у вас и приватные поля и методы создают только долбоебы" - смысл которой понять может не только лишь каждый, а понять может только долбоеб.
>Что мешает динамическому языку иметь приватное поле?
ничего не мешает. просто это ДИНАМИЧЕСКИЙ язык где "всё есть словарь". И классы построены поверх этой концепции. как в том же раннем жс поверх прототипов было.
и сокрытие там есть - просто на уровне конвенции без лишних слов
одинарное подчеркивание - протектед
двойное - приватное и ни один нормальный редактор тебе его не подскажет снаружи, да и в рантайме чтобы добраться до этого приватного тебе нужно построить правильное имя. Ну так и в шарпе можно добраться до приватного поля - получается шарп не имеет средств для задания видимости?
>Но их появление — разве не доказательство моей правоты?
на момент появления кода их не было - раз.
они все равно не могут покрыть динамику - два.
Чтобы они работали - это нужно писать сразу с ними и забыть про магию. А это далеко не везде возможно.
да и они для редактора больше, а в рантайме их никто не проверяет.
>Вопрос форса языка инфоцыганами среди долбоебов
может тебе реально пописать на обоих языках чтобы понять что ты несешь херню?
риторический вопрос. у тебя синдром утенка.
я вот использую языки и знаю достоинства и недостатки. и поэтому прекрасно понимаю силу и слабость питона и шарп. и только утята пытаются запихать шарп везде, но реальность такова, что так не работает
>да. пишу на многих языках
Специалист во всем и ни в чем не мастер. И прям щас лезешь в чужой монастырь, предлагая ебанутые идеи, вроде не документировать и не комментировать в коде шарпа. На столько тебе горит, что написал это трижды.
>ничего не мешает
А хули тогда споришь, кретин?
>и сокрытие там есть - просто на уровне конвенции без лишних слов
Вот пока вы так делаете, все так и происходит. Потом часами спорите с какой стороны ставить коснтанту.
>может тебе реально пописать на обоих языках чтобы понять что ты несешь херню?
А может послать нахуй говноязык и не пачкать руки? Ты — печальный пример самовлюбленного хуесоса, который лезет во все щели и навязывает больные идеи.
И заметь, когда мне что-то не нравится, я просто в это не лезу. Ты начинаешь распространять вредные идеи и "тыкать мордой в говно" тех, кто посмел возмутиться.
>Сначала выбираешь динамику, а потом пишешь как будто статика.
Так-то помимо динамической/статической типизации есть еще сильная/слабая. И писать на пайтоне, как на каком-нибудь сраном js, такое себе.
>да. пишу на многих языках,
>а раз я пишу, то я ЗНАЮ как что где устроено
Ну или наоборот - нахватался по верхам и считаешь, что преисполнился.
>Ну так и в шарпе можно добраться до приватного поля - получается шарп не имеет средств для задания видимости?
Только в шарпе для этого недостаточно просто "построить правильное имя", а произвести некоторый комплекс действий, применение которого само по себе уже говорит "шатал я ваше ООП и области видимости в текущий момент"
>предлагая ебанутые идеи, вроде не документировать и не комментировать в коде шарпа
долбоеб? риторический вопрос. я лишь пояснил ньюфакам почему отсутствие хинтов не является дичью, как бы это не раздражало (в том числе и меня). остальное ты придумал сам.
>А хули тогда споришь, кретин?
кретин тот, кто заявляет что там нет приватных вещей. Угадай кто из нас это заявил.
>Вот пока вы так делаете, все так и происходит
никто не спорит. это как раз дао питона (ну изначальный) - "есть только один путь сделать это". Поэтому там и отступы для блоков.
Это как раз в других языках спор "а как именовать приватные, нужна ли буковка m" или "открывающую скобочку на этой строке или переносить".
>А может послать нахуй говноязык и не пачкать руки?
тебя кто то заставляет писать? не пиши, какая проблема.
Но идиотом ты выставляешь себя САМ
>>41736
я НЕ про динамическую типизацию. А про динамическую ПРИРОДУ. при которой, например, класс (да и вообще всё) создается В РАНТАЙМЕ. То есть итоговые поля, методы и прочее создаются в рантайме и никакими хинтами на уровне IDE ты их не опишешь. Декораторы могут породить что угодно ибо динамика.
>>41739
по себе судишь. ну учитывая твои аргументы - ты даже по верхам не смотрел. ты вообще не знаешь о чем говоришь, и просто позоришься.
>>41744
> а произвести некоторый комплекс действий
а в чем разница? а ни в чем. просто ты снова "слышал звон, да не знаешь где он"
>кретин тот, кто заявляет что там нет приватных вещей. Угадай кто из нас это заявил
Ну ты и клоун. Т.е. нет приватных модификаторов и ничего не мешает питону их заиметь, при этом их нет. Вместо этого дурачки закрывают глаза и представляют, что нет кучи говна в списке IntelliSence. При этом я в чем-то не прав, назвая это дебилизмом и вынужден читать ебанутый аргумент про то, что язык динамический, что не мешает языку заиметь приватные модификаторы, при этом их нет.
Чуешь чем пахнет? Получается замкнутый круг, когда хочешь добиться ответа от дурачка. Он приводтит аргументы, которые никоим образом не оправдывают то, что должны оправдывать. Зачем тогда он их приводит — не понятно.
>Т.е. нет приватных модификаторов
а должны быть средства управления областью видимости или именно какие то ключевые слова чтобы лишь бы были потому что гладиолус?
средство есть - двойное подчеркивание. Зачем требовать необходимость особого слова?
>что нет кучи говна в списке IntelliSence
ее нет. Нормальная IDE знает, что __foo это приватное и не покажет его. И даже _foo не покажет.
нет никакой разницы между тем как IDE воспринимает private.
У тебя синдром утенка что приватное что то обязательно должно иметь слово private?
private class в шарпе давно писал?
да чую. дураком пахнет. дураком у нас выставляешь себя ты.
Автомаппер сам их пишет.
>Нормальная IDE знает, что __foo это приватное и не покажет его. И даже _foo не покажет.
А причем тут ИДЕ? Почему питон выполняет скрипт где идёт обращение до приватного поля.
Вообще private делает чуть больше чем просто скрывает поле в ИДЕ, но откуда пеутонщику это знать.
>Почему питон выполняет скрипт где идёт обращение до приватного поля
а ты проверял или фантазируешь?
я написал тебе
"а и в рантайме чтобы добраться до этого приватного тебе нужно построить правильное имя"
что уже должно намекать на то, что если в классе есть поле __foo, то обращение print(obj.__foo) работать НЕ БУДЕТ для вызова извне класса. Чтобы до него добраться извне нужно обращаться как
_<classname>__<fieldname>, что как бы нельзя случайно обратиться, а нужно реально захотеть добраться до этого поля - это раз.
Ну а второе - зачем сверхсильно защищать приваты. даже в шарпе они защищены НЕ БОЛЕЕ - кому надо, тот доберется. А в питоне вообще то динамика НОРМА. Так что "нужно приседать дополнительно" вполне нормально. СЛУЧАЙНО ТАК НЕ ПРИСЯДЕШЬ.
Смекаешь? там НЕТ такого что "я задумал свойство приватным, а читатели снаружи этого не знают". ЗНАЮТ, ЕЩЕ КАК ЗНАЮТ - и вынуждены читать по особому ибо просто так не прочтешь.
но откуда фантазеру, который щупал предмет спора, это знать
фикс
>который щупал предмет спора
который НЕ щупал предмет спора
ибо чудик, который со мной спорит и аргументирует "а там так", даже не пробовал проверить не несет ли он херню.
> Нормальная IDE знает, что __foo это приватное и не покажет его
А если оно публичное? Может я кайфую называть публичные методы с двух плинтусов.
>Почему питон выполняет скрипт где идёт обращение до приватного поля.
Очевидно потому что надо было комментарий оставить., что это поле приватное.
>Может я кайфую называть публичные методы с двух плинтусов.
ну значит ты долбоеб, который пришел в чужой монастырь...
и питон защищается от таких долбоебов который "а я люблю вот так"
потому что "нужно код писать, а не выражаться затейливо"
>который пришел в чужой монастырь
Вот, в том то и проблема. У пейфона очень высокий порог вхождения и иллюзия простоты. В шарпах нет никиких монастыре, они просто однозначны
так и к питону ты их ПРИДУМЫВАЕШЬ
улавливаешь?
ты просто решил опозориться публично.
>>41877
>В шарпах нет никиких монастыре, они просто однозначны.
за сим можно закрывать спор. утенок шарпист, который ДАЖЕ НЕ ВИДЕЛ В ГЛАЗА ПИТОНА, пытается рассуждать о чем то и придумывает на ходу полную херню лишь бы что то ляпнуть.
я уже говорил - каждой задаче свой инструмент.
посмотри на количество всего написанного для питона и спроси "а че не для шарпа, ведь он же лучше".
ну и попробуй одно с другим и ты сильно удивишься.
для прототипов, для вещей для которых нужны всякие биндинги - там питон рулит и педалит.
насколько просто работать с OpenCV на питоне и как запаришься плясать с бубном в шарпах.
Такая же ситуация со многим.
питон универсален, если не против заплатить за его недостатки, а вот шарп хорош, но не для всего.
>для прототипов
Ни одного технического преимущества, одни мантры про то, как на нём ОХУЕННО писать прототипы.
На практике там немножко по другому получается, но если не сравнивать с нормальными технологиями, то дебилам заходит.
Я говнюкодю на Пиструне. Мне он нравится тем, что в нем я могу буквально всё. То есть, все костыли для работы уже давно придуманы красноглазиками, а я просто беру и пользуюсь. Очень универсальная штука, хотя он и жутко медленный, но jit обязательно доведут до ума.
Хочу в телеграм ботов, хочу в парсинг, бэк, невросети и так далее.
Что может предложить C# без костылей? Интересуюсь без негатива, мне действительно любопытно ваше мнение.
>я уже говорил - каждой задаче свой инструмент
Для любой задачи всегда находится более уместный инструмент, чем пейфон. Без обид, но пейфон не нужен
>>41930
на практике посмотри рейтинг языков
и УЧТИ, что питон не жс который "ну в вебе он дефолтный, а веб как бы везде", то есть его заслуга честная (в отличие от того же жс)
это на практике. А то, что ты несешь - это фантазии того, кто питона даже не знает даже поверхностно (это ты 1000000 раз уже доказал обосравшись)
питон лидер по универсальности (кроме системного программирования конечно, но это же узкая ниша - там вообще мало кто). жс взлетел потому что веб, но сам язык говнище.
остальное ниже питона по универсальности.
>>41929
шарп лучше в многопотоке, статическая типизация, довольно богатый синтаксис (но менее выразителен - когда появилась enumerate в питоне? а когда в шарпе Index? (ответ - в последнем 9м через пару десятилетий от момента когда это стало нужно)), но если тебе нужна динамика или всякие там биндинги, то у тебя может быть большая большая большая большая ЖОПА с ним.
я помню делал на шарпах проект для работы с видео, проект для работы с имаджами с экономией памяти (vip), ну и opencv
в первом случае пришлось самому кодить обвязыку, во втором у меня текла память под линуксами, в третьем вообще не завел под линуксами
в итоге плюнул и на питоне все это сделал и быстрее и оно просто работает.
>то есть его заслуга честная (в отличие от того же жс)
>
Скорее это заслука хайпа на нейросетях и "вкате в айти"
>Хочу в телеграм ботов, хочу в парсинг, бэк, невросети и так далее.
Увы, ничего из вышеперечисленного в дотнете нет. Искать не надо, пользуйся пейфоном
В альфа-выпуске языка программирования Python 3.13.0a6 включена экспериментальная реализация JIT-компилятора. Он компилирует код Python в машинный код «на лету», во время выполнения программы, что позволяет языку работать значительно быстрее.
>Зачем требовать необходимость особого слова?
Приватное на то и приватное, что его не видно снаружи. И не надо ебать мозги какими-то договоренностями, чет подчеркивать там.
>средство есть - двойное подчеркивание
Хуй там, это костыль, который не во всех случаях работает. Настолько не во всех, что его рекомендуют избегать.
Вишенка на торте, когда я пытался сделать статическое свойство, обращающееся к приватному полю. В этот момент питон жидко пернув обмяк.
> что его не видно снаружи.
так его и не видно. и не потому что кто то не смотрит, а потому что __ эквивалент кейворду private, что в IDE, что в рантайме.
>Настолько не во всех, что его рекомендуют избегать.
пруфы будут? а то придумывать ты мастер
>В этот момент питон жидко пернув обмяк.
скорее ты обмяк со своим уставом в монастыре. нужно понимать что ооп в питоне прикручен сбоку да, потому что это вам не класс, как ты его привык видеть, а динамическая структура - да, да, само определение класса собирается в рантайме и в этот процесс не только можно вмешаться, а он является базой. Там все в питоне так устроено - "всё есть словарь". В жс с их прототипами что то похожее, только менее удобно ибо нет спец средств для магии.
понимая базу можно спокойно делать статические поля и работать с ними. Ну да, статическое проперти не выйдет, будет только статический метод.
ключевое слово "ПОНИМАЯ". Смекаешь?
>так его и не видно. и не потому что кто то не смотрит, а потому что __ эквивалент кейворду private
Охуительные истории. На пикрилейтед класс Debug находится в другом пространстве имен (если это можно так называть). Почему я вижу зоопарк говна, которое я не должен видеть?
>пруфы будут?
https://youtu.be/0hrEaA3N3lk?t=703
>скорее ты обмяк со своим уставом в монастыре. нужно понимать что ооп в питоне прикручен сбоку да
Так а зачем ты тратил время на доказательство обратного? Я же изначально написал, что такой подход мне не нравится. Я сразу написал, что выглядит питон как говно, и работает как говно, но зато это ОСОБЕННОЕ говно, это говно со своей ФИЛОСОФИЕЙ. Мне поебать сколько человек его использует. Я считаю, что питон — говно. Какой толк от его особоенностей, если ты как слепой котенок буквально во всем? Какой-то садизм: то что надо не видно (any), а то что не надо — видно (приватные поля).
Даже указание типов в третьей версии намекает, что так живется проще. И джит прикрутить собираются. Даже в джава скрипте сначала нахуевертили ШВАБОДЫ, а потом поняли, что обосрались, и добавили let. Вы должны понять, что как бы языки не вертели жопой (простите за каламбур), но С-подобный принцип — это база, к которой придут все, потому что это удобно.
Блин, какое же говно.
Меня еще поражает, что если ты сделал, что-то не так, то ты даже ворнинга не получишь, ни в компайл тайме, ни в рантайме. Пока построчно отладкой не пройдешь, хуй ты узнаешь, что что-то где-то не срабатывает. Хуже наверное только в js, который в довесок еще какую-нибудь явную хуйню начинает воротить.
>Почему я вижу зоопарк говна, которое я не должен видеть?
потому что ты не отличаешь приватные методы от магических.
магические методы не являются приватными. Так что нормально что они подсказываются, но внизу списка.
какая то тупая хуета на видео
_foo - протектед (поле, метод)
__foo - приватный (поле, метод)
__foo__ - магический метод. это особая хреновина
Да, в IDE есть проблемы с подсказкой когда она вываливает лишнее или не в том порядке. Только это проблема самой IDE и обычно имеет issue на эту тему. То, что ее могут не чинить годами или ломать с новым билдом - ну что поделать, разрабы пишут на жава и они рукожопы (это я про пишарм)
>что такой подход мне не нравится
это лично твои проблемы. если ты НЕ ЗНАЕШЬ в чем сила динамики и не знаешь как ее применить - ну значит тебе оно и надо.
>Даже указание типов в третьей версии намекает, что так живется проще
опять ты про типы. я этого не отрицаю
Я вот вовсю использую тайпхинты чтобы не терять помощь редактора даже если пишу не либу, а просто рабочий код. Но если мне надо, то я просто ухожу в динамику, я думаю о задаче, а не о коде.
В шарпе же для такого мне приходится приседать и про код забывать не получается
Потому что динамика это не только типы. В шарпе в принципе нет таких вещей.
А если у тебя проблемы - значит ты не умеешь использовать силу языка, то есть плохо его знаешь. Что нормально, потому что писать в разных парадигмах это нужно сначала отформатировать мозг.
Везде своя парадигма. я вон под анрюшу на котлине пишу в реактив стиле, а в шарпе принципиально такое не перевариваю. Как то чужеродно.
>>42054
хз что ты там не узнаешь в рантайме.
>Почему я вижу зоопарк говна, которое я не должен видеть?
потому что ты не отличаешь приватные методы от магических.
магические методы не являются приватными. Так что нормально что они подсказываются, но внизу списка.
какая то тупая хуета на видео
_foo - протектед (поле, метод)
__foo - приватный (поле, метод)
__foo__ - магический метод. это особая хреновина
Да, в IDE есть проблемы с подсказкой когда она вываливает лишнее или не в том порядке. Только это проблема самой IDE и обычно имеет issue на эту тему. То, что ее могут не чинить годами или ломать с новым билдом - ну что поделать, разрабы пишут на жава и они рукожопы (это я про пишарм)
>что такой подход мне не нравится
это лично твои проблемы. если ты НЕ ЗНАЕШЬ в чем сила динамики и не знаешь как ее применить - ну значит тебе оно и надо.
>Даже указание типов в третьей версии намекает, что так живется проще
опять ты про типы. я этого не отрицаю
Я вот вовсю использую тайпхинты чтобы не терять помощь редактора даже если пишу не либу, а просто рабочий код. Но если мне надо, то я просто ухожу в динамику, я думаю о задаче, а не о коде.
В шарпе же для такого мне приходится приседать и про код забывать не получается
Потому что динамика это не только типы. В шарпе в принципе нет таких вещей.
А если у тебя проблемы - значит ты не умеешь использовать силу языка, то есть плохо его знаешь. Что нормально, потому что писать в разных парадигмах это нужно сначала отформатировать мозг.
Везде своя парадигма. я вон под анрюшу на котлине пишу в реактив стиле, а в шарпе принципиально такое не перевариваю. Как то чужеродно.
>>42054
хз что ты там не узнаешь в рантайме.
Охуеть, ахахахахахах
>это лично твои проблемы
А с чего ты взял, что это проблема? Я не считаю это проблемой.
Единственная проблема, это насильный форс питона — его запихнули буквально во все приложения в качестве языка скриптинга. А потом радостно показывают статистики популярности питона. Но так было и с VBA одно время.
>А если у тебя проблемы - значит ты не умеешь использовать силу языка, то есть плохо его знаешь. Что нормально, потому что писать в разных парадигмах это нужно сначала отформатировать мозг.
Ебать как ты себя любишь.
За пиздёж на сосаче.
>форс питона — его запихнули буквально во все приложения в качестве языка скриптинг
Согласен. Хуже в этом плане только ебучий yaml
Все приложения, написанные на питоне, которые я встречал, были жутко забагованными с возмутительными ошибками.
1. Cura - слайсер для 3д печати. При закрытии сохраняет все введенные параметры не спрашивая пользователя, наперекор всем стандартом. Но питонисты не любят проверенные пути, им обязательно надо сделать медвежью услугу, они думают, что облегчают жизнь пользователю не ебя мозги всплывающими окнами.
Однажды, в настройках, при установке размера стола печати принтера, я ввел "220,5" вместо "220.5" — написал на автомате, с учетом региона моего шиндовс. Знаете что произошло? ВСЕ текущие параметры печати нахуй слетели, а их там сотни. А теперь вспоминаем про сохранение параметров при закрытии приложения и охуеваем от нулевой безопасности этого говна. И это философия питона — медвежья услуга, вот эта вот нетребовательность, предлагаемая на старте, чтобы в ближе к финалу придти в тупик и не знать что делать дальше.
Мне пришлось запускать новый экземпляр приложения, а этот убивать — так я сохранил параметры, а ведь мог случайно закрыть приложение и потерять сотни параметров навсегда.
2. ComfyUI - оболочка для Stable Diffusion. Этому говну так же поебать на регион, поэтому с русской раскладкой Ctrl+V вставляет данные из буфера дважды. Косяк на косяке. Например, там есть возможность связку нод преобразовать в компонент, это аналог функции в Unreal Engine или ассета в Houdini. Сохраняешь компонент (сохраняется в джейсон) и это дерьмо берет и все константы внутри компонента нахуй сбрасывает. А там прикол в том, что условная нода math содержит словарь операторов, и если я установил деление, которое НЕ является первым в списке словаря, то оно сбрасывается на суммирование, которое является первым в списке, и вся логика компонента летит в пизду. Ты смотришь джейсон, там все параметры сохранены, все так, как должно быть, но при чтении они сбрасываются до дефолтных значений. Ну подумаешь баг, с кем не бывает? Но там, сука, каждый этап сохранения компонента сделан через жопу. Например, не может адекватно установить путь до компонента. Весь комфи забагованный и работает через жопу. Все нестабильно.
Кстати, код, который я показывал, он как раз оттуда. И когда мне пишут оправдания по поводу подобного, мол, это враппер или порт, то я не верю. Я не верю потому, что приложение, написанное в такой манере, прекрасно сочетается с говеным забагованным результатом. Когда ты работаешь с приложением, созданным на питоне, ты как будто ходишь по минному полю. И цена ошибки порой очень серьезная.
Все приложения, написанные на питоне, которые я встречал, были жутко забагованными с возмутительными ошибками.
1. Cura - слайсер для 3д печати. При закрытии сохраняет все введенные параметры не спрашивая пользователя, наперекор всем стандартом. Но питонисты не любят проверенные пути, им обязательно надо сделать медвежью услугу, они думают, что облегчают жизнь пользователю не ебя мозги всплывающими окнами.
Однажды, в настройках, при установке размера стола печати принтера, я ввел "220,5" вместо "220.5" — написал на автомате, с учетом региона моего шиндовс. Знаете что произошло? ВСЕ текущие параметры печати нахуй слетели, а их там сотни. А теперь вспоминаем про сохранение параметров при закрытии приложения и охуеваем от нулевой безопасности этого говна. И это философия питона — медвежья услуга, вот эта вот нетребовательность, предлагаемая на старте, чтобы в ближе к финалу придти в тупик и не знать что делать дальше.
Мне пришлось запускать новый экземпляр приложения, а этот убивать — так я сохранил параметры, а ведь мог случайно закрыть приложение и потерять сотни параметров навсегда.
2. ComfyUI - оболочка для Stable Diffusion. Этому говну так же поебать на регион, поэтому с русской раскладкой Ctrl+V вставляет данные из буфера дважды. Косяк на косяке. Например, там есть возможность связку нод преобразовать в компонент, это аналог функции в Unreal Engine или ассета в Houdini. Сохраняешь компонент (сохраняется в джейсон) и это дерьмо берет и все константы внутри компонента нахуй сбрасывает. А там прикол в том, что условная нода math содержит словарь операторов, и если я установил деление, которое НЕ является первым в списке словаря, то оно сбрасывается на суммирование, которое является первым в списке, и вся логика компонента летит в пизду. Ты смотришь джейсон, там все параметры сохранены, все так, как должно быть, но при чтении они сбрасываются до дефолтных значений. Ну подумаешь баг, с кем не бывает? Но там, сука, каждый этап сохранения компонента сделан через жопу. Например, не может адекватно установить путь до компонента. Весь комфи забагованный и работает через жопу. Все нестабильно.
Кстати, код, который я показывал, он как раз оттуда. И когда мне пишут оправдания по поводу подобного, мол, это враппер или порт, то я не верю. Я не верю потому, что приложение, написанное в такой манере, прекрасно сочетается с говеным забагованным результатом. Когда ты работаешь с приложением, созданным на питоне, ты как будто ходишь по минному полю. И цена ошибки порой очень серьезная.
Тем не менее на питоне есть эти приложения, а на шарпе нихуя полезного не пишут
>ответы вида "ну так в документации написано" это не аргументы
Так у тебя не техническая претензия, а почему не сделали или почему поздно. Один из главных критериев той или иной фичи экономический и востребованность. Руководство могло посчитать что на раннем этапе та или иная фича была мало кому нужна. Ну ида, какое нибудь частное решение может быть кривым в силу эксцесса исполнителя, большие дяди с зп в 5 лямов только контурно определяют решение, на низах там могут говнокодить тупые пёзды вроде широко обсуждаемой здесь в своё время ленки-хуесоски с какой-то хохляцкой галеры которая пересосав километры задротских хуев дорвалась до какой-то должности в команде по F#.
>каво шта?
Что бы сделать как ты писал нужно писать отдельный класс, поддержки со стороны языка не требуется, голый enum в С# по дизайну полный аналог сишного.
а хули там js делает? Это такое же говно как и пейфон
IsAllowedOrigin(o=>true)
З.А.Е.Б.И.С.Ь.
Когда в сишарп только добавили эти экспрешены, такого говна было много. Потом народ наигрался в мамкиных метапрограммистов и шиза прошла. Ты наблюдаешь копролит тех времен.
>во все приложения в качестве языка скриптинга.
потому что он для этого подходит. он по своей природе буквально "клей" между разными вещами.
>>42185
>Ебать как ты себя любишь.
нет. я себя знаю просто. я бестолочь, но некоторые парадигмы все же освоил. Не знать их, а думать на них.
>>42363
>которые я встречал, были жутко забагованными с возмутительными ошибками
так а питон тут причем? я так же насрать могу и на шарпе.
>а почему не сделали или почему поздно
именно так. некоторые вещи просто ОЧЕВИДНЫ и делаются легко
но делаются через жопу.
взять тот же Index метод у LINQ. Пипец дохера сложный да?
Или задание регистра в методах конвертации в hex, где они таки это сделали, но оно интернал
и тому подобное
Я понимаю их оптимизацию LINQ когда появилось allow ref struct
но блин другое то делается на 2 щелчка
Эту хуйню написали в 2020 и это не копролит тех времен, а отключение политик CORS на проекте в 0.
Никакой инфы, что за проект и для чего там политики CORS, конечно же, не будет. Может, эти политики там нахуй не всрались.
>Может, эти политики там нахуй не всрались.
Правильно нахуй нам проверять что запросы идут с доверенных доменов. Принимаем все от всех и без проверок.
Неважно какой у тебя проект. Если это не публичный АПИ то ты должен проверять кто прислал запросы, даже если это GET. Тем более если ты разработчик в банке.
Ты вообще писал что-то сложнее калькулятора?
Как вы выдерживаете это скучное занятие дрочите алгоритмы и задачки с литкода? Да вы же ебанутые.
Ни разу в жизни литкод не открывал. Лутать сотыги это не мешает.
Ты кто такой по жизни? А что не скучно, быть эскортницей как твоя мамаша?
P.S Пилю свою десктоп-приложуху которая со всеми оптимизациями сборки весит 40 Мб (при оригинальных 250 Мб без всяких NativeAOT и прочих) но эти оптимизации похерят любой reflection так что ищу варик без него
>> Сейчас основная тенденция в дотнете - AOT. Посему AutoMappet, работающий на рефлексии, в пролёте.
Как и DI? Откат на фабрики\СервисЛокаторы получается?)
https://github.com/amis92/csharp-source-generators
там штуки три контейнера годных, на сорс-генераторах написанных.
>СервисЛокаторы
А что если я тебе скажу что можно импортировать нужные сервисы напрямую.
Не используй эту хуйню никогда.
>Как и DI
При чем тут DI и рефлексия. Максимум у тебя отвалятся некоторые методы добавления в контейнер сервисов. Вроде AddFromAssembly или по якорям.
Есть ли готовые таблицы цветов, или эмпирические правила, чтобы красиво выглядело?
у каждого свое понятие красивости
как раз дефолтное и выглядит норм
а всякие типа https://github.com/Kinnara/ModernWpf https://wpfui.lepo.co/
выглядят бррр
Твоя ошибка в выборе впф, которому давно пора на свалку. Он кривой, тормозной, рендерить на нем что-то приличное из-за использования directx9 и airspace issue сложно. Лучше переходи на авалонию.
Ну и да, чтобы получилось красиво, нужно сначало отрисовать это красиво в фигме или хотя бы lunacy (написана на авалонии), чтобы можно было видеть как интерфейс выглядит в целом.
>Лучше переходи на авалонию
нет не лучше. единственное достоинство - кросс
а на винде выглядит ужасно
да вообще всё что на skia выглядит жопно.
что авалония, что та же проблема у котлин мультиплатформ
WPF же позволяет делать более менее.
авалония это безперспективный кал, щас из таких фреймворков уно рулит, который еще последние ФП фичи активно использует и развивает
>жопно
это уже зависит от того не поленился ли кто создать ассеты и стили, тоже касается и wpf
вот есть домашка по информатике, у меня с#
нам дали задание написать прогу которая выводит таблицу с бегунами у которых есть своё имя группа и время, нужно выделить лучших и тех кто прошёл норматив
Вопрос как задать этим бегунам имена и группы?
время я реализовал через функцию рандом, через форич смог отсортировать лучших и тех кто прошёл норматив. А как задать имя обьекту я не знаю.
Код могу скинуть если нужен
нет. просто жопно
десктоп он как бы не планшет чтобы в нем делать метроподобное флюент говно, да еще без мультиокон
Вот как раз уно кал, который на винде представляет собой абстракцию над winui3, со всем из этого вытекающим.
>>44025
> нет не лучше. единственное достоинство - кросс
У авалонии полно достоинств. Она гораздо производительнее wpf, имеет куда лучшую систему стилей, позволяет легко встраивать рендеринг directx/opengl/vulkan, активно разрабатывается и поддерживается, ну и плюс ко всему она кроссплатформенна, да.
Единственные плюсы впф это лучшая документация и наличие большого количества сторонних библиотек контролов. На этом всё.
> а на винде выглядит ужасно
Нормально выглядит.
UI\UX дизайн это отдельная профессия
>Есть ли готовые таблицы цветов
1. Есть цветовой круг, например https://colorscheme.ru/
Берешь базовый цвет, выбираешь схему, и тебе предлагают сочетающиеся цвета. Самая базовая схема, это триада.
2. Есть правило 60-30-10 (пикрил 3). Оно определяет в каких пропорциях цвета триады использовать на твоем макете. 60% цветовой гаммы твоего окна должно быть заполнено доминирующим цветом, 30% - второстепенным цветом и 10% - акцентным цветом. Что такое доминирующий, второстепенный и акцентный, можно узнать в гугле.
3. На основе этого создается цветовая система приложения (гугли color system). Сперва рисуется UI раскладка в какой нибудь векторной программе, типа иллюстратора или фигмы, делается таблица цветов с ключами уровня Control.Secondary.Background, ты видел подобное в стилях WPF, но без точек, но не суть — можно юзать и так и сяк. Это уже стандарт, посмотри туторы по фигме, там суть та же.
Вот, к примеру описание цветовой системы шиндовс 11
https://learn.microsoft.com/en-us/windows/apps/design/signature-experiences/color#color-principles
https://learn.microsoft.com/en-us/windows/apps/design/signature-experiences/color
У телерик есть тема винды 11 для WPF, устанавливать не надо (она вроде платная), но интересно посмотреть таблицу ключей и цветов. Типичная цветовая система:
https://docs.telerik.com/devtools/wpf/styling-and-appearance/themes-suite/windows11
Но это так, вершки. Можно просто гуглить цветовые системы, какие-то дизайны UI например на https://www.behance.net/ и пиздить оттуда. Обычно там представляется выкладка всех элементов интерфейса и их взаимное сочетание, типа как на пикрил 1 и 2.
Через пару лет глаз приучится и начнешь создавать самостоятельно. Либо продолжай пиздить, ничего зазорного в этом нет, если ты не дизайнер с пятилетним стажем. Все художники и дизайнеры начинали с пиздинга, по другому никак, твои нейроны должны обучаться на базе данных, и чем эта база больше, тем лучше результат.
Там нет мыла, просто отсутствует cleartype (как и во всех современных гуи фреймворках от майков начиная с uwp к слову)
>Там нет мыла
можешь назвать его гладиолусом, суть не изменится
>просто отсутствует cleartype
а вот хрен тебе. он там есть. просто результат все равно не такой какой можно получить в WPF
Просто пизди чужой дизайн и не заморачивайся. С кодом же у тебя такой проблемы нет.
Перепутал cleartype с фирменным хинтингом от майков, который пидорасит шрифты, но делает их четче, да. Но это не особо актуально на современных дисплеях. Ну и отсутствие жестокого хинтинга не делает шрифт мыльным.
Создай класс "бегун" у которого будут свойства "имя", "группа" и "время"
И создавая новый объект присваивай ему все его свойства
Так он возвращает Assembly из system.reflection если я верно понимаю что написано в https://learn.microsoft.com/ru-ru/dotnet/api/system.runtime.loader.assemblyloadcontext.loadfromstream?view=net-8.0.
Я хз как с этим без reflection работать
>Вот как раз уно кал, который на винде представляет собой абстракцию над winui3, со всем из этого вытекающим.
Во-первых это абстракция, а значит лазить внутрь в прикладном коде долбоебизм, во-вторых вин уи 3 это круто.
>имеет куда лучшую систему стилей
Ничем не лучше.
>ну и плюс ко всему она кроссплатформенна, да.
Ты понятия не имеешь о чем говоришь. Имплементации у неё разные под разные платформы, как и у уно.
>>44047
Жопно выглядят кривые стили из коробки, впф голый идет, за денюжку сторонние производители делают конфетку. Тоже самое касается всех фреймворков, обычно только простенькие контролы вылижут для рекламы, а что-то чуть нестандартное нужно делать с нуля, проблема только в этом. В целом все основанные на разметке фреймворки более менее одинаковые, удобство только в том насколько конкретный фреймворк облегчит тебе создание законченного приложения, с этом плане уно всех обскакал и быстро развивается, авалония уже свое отжила, оттуда народ разбегается, ничего нового не выпускают.
>Но это не особо актуально на современных дисплеях
субъективное мнение так то
"с каждой версией приложения по новому монитору...каждому".
зопесал
>жестокого хинтинга не делает шрифт мыльным
он МЕНЕЕ четкий чем весь остальной шрифт в системе.
И что ты хотел сказать своим пиком хз - ты посмотри на дефолтный размер шрифта что предлагает авалония и на размер шрифта в системе.
Конечно километровый шрифт проще сделать четким.
>>44151
>впф голый идет, за денюжку сторонние производители делают конфетку
голый да, но "конветку" - слишком спорно. слово "модерн" в модернуи не значит конфетка, а значит "модняво"
А что такое "модняво" можно посмотреть на любом показе моды.
> Во-первых это абстракция, а значит лазить внутрь в прикладном коде долбоебизм, во-вторых вин уи 3 это круто.
А лазить не надо, достаточно знать, что уно всего-лишь подмножество и без того крайне бедного функционально winui. При том, что винюай это кривая залупа, с кучей багов, недоработок, и в целом почти не развивающаяся. К тому же он медленный из-за того, что написан на плюсах, и много времени уходит на вызов плюсового кода из шарпов. Фиксится aot, но с ним не работают templatebinding (в голос с этого). Поэтому тот же винстор написан на uwp, и никто его не спешит переносит на winui. Ну и winui, как и uwp до этого имеет крайне кастрированный xaml. Мультибиндингов нет, findparent нет, onewaytosource нет, x:static нет и тд и тп.
> Ничем не лучше.
Ну это сектанство форменное. Стили в авалонии лучше во всем, куда более гибкие и удобные. В впф, чтобы банально поменять цвет одного элемента нужно переопределять весь шаблон, в авалонии достаточно выцепить нужный элемент селектором. Не говоря уже о том, что в авалонии можно комбинировать стили.
Понял, а как сделать тогда человеческие имена бегунам? Или они так и будут в виде рандомных символов?
>А лазить не надо, достаточно знать
Так ты не знаешь нихуя. Уно по фичам перекрывает твою древнюю авалонию которая была актуална только во времена первых версий замарина, только она не развивается и осталась там где стартанула.
Кросс платформа по дефолту медленнная, как и любой навороченный MVVM фреймворк где по определению на каждом углу оверхед из-за паттернов и кросс платформенности, так что это пук в лужу. Главное что производительности хватает для целевых приложух (ты же не собрался игры на нем писать).
> Поэтому тот же винстор написан на uwp
Это ты сочиняешь, просто сто лет назад написали во времена вин 8, так и остался пока, нет мотивации на переписывание.
На С++ наоборот быстрее работает чем на управляемом коде.
>но всего-лишь подмножество и без того крайне бедного функционально winui
Не пизди, всё там есть. Ты понятия не имеешь что представляет собой уно, или по какой-то древней версии судишь. Там если что мощный сдвиг в функциональщину, даже основной паттерн другой, не MVVM а MVUX.
я мимокрок
>Уно по фичам
да ну. серьезно? можно создать свой кастомный контрол без пердолинга?
>На С++ наоборот быстрее работает чем на управляемом коде.
но тут ты ошибаешься winui медленнее чем тот же впф из-за вызовов к сишному коду.
ну можешь для понта написать генератор
задать ему 3 списка - имена, фамилии, отчества аля "кто ты сегодня" и собирать комбинации убирая дубликаты.
> Так ты не знаешь нихуя. Уно по фичам перекрывает твою древнюю авалонию которая была актуална только во времена первых версий замарина, только она не развивается и осталась там где стартанула.
Какие фичи есть у уно, которых нет в авалонии? Ну, кроме x:Bind, который годнота, не отрицаю (хотя порой криво работает, к тому же плохо совмещается с чистым mvvm). Ну а говоря, что авалония не развивается, ты лишь доказываешь, что ничего о ней не знаешь. Если взять ту же 11 версию, то там обновили рендеринг, добавили Composition Api со всем функционалом вроде expressionanimation, какой был в UWP.
> Кросс платформа по дефолту медленнная, как и любой навороченный MVVM фреймворк где по определению на каждом углу оверхед из-за паттернов и кросс платформенности, так что это пук в лужу.
Ни на чем не основанное утверждение. Производительность кросс платформы зависит от реализации для каждой конкретной платформы, не более. Авалония в частности быстрее wpf, winui, а следовательно и uno. К чем твой пук о mvvm вообще не ясно, 99% функционала этих фреймворков сводится к реализации inpc, все остальное, если сравнивать со временем рендеринга, вообще почти ничего не потребляет.
> Это ты сочиняешь, просто сто лет назад написали во времена вин 8, так и остался пока, нет мотивации на переписывание.
Во времена win 8 uwp не было так то. А не переписывают именно потому, что winui кривой и тормозной.
> На С++ наоборот быстрее работает чем на управляемом коде.
Анон, я уже заметил, что ты туповат, но хоть бы подумал о том, что вызов неуправляемого кода из управляемого не бесплатен.
> Не пизди, всё там есть. Ты понятия не имеешь что представляет собой уно, или по какой-то древней версии судишь. Там если что мощный сдвиг в функциональщину, даже основной паттерн другой, не MVVM а MVUX.
При чем функциональщина и паттерны, к функциональности фреймворка они не имеют отношения. Не говоря о том, что mvux какая-то очередная игрушка, mvvm как рулил так и будет рулить.
Кроме авалонии, авалония годнота. А вообще десктоп мёртв, не будь я ленивым хуйлом уже давно перекатился бы в фулстэка, грузил джейсоны и дрочил реакт. А вместо этого дрочу авалонию и opengl за копейки по меркам даже самых обоссаных джунов на asp.net
язык, основанный на хамл, не может быть годнотой по определению
километровые портянки xml, куча файлов, исключительная декларативность
бррр, дрянь какая.
> язык, основанный на хамл, не может быть годнотой по определению
Ну а какие альтернативы? Так то да, от многословности горит жопа, когда у тебя условно такая конструкция:
xmlns:libNameControls=””
<libNameControl:AnotherUselessControl>
<libNameControl:AnotherUselessControl.CustomizeableProperty>
</libNameControl:AnotherUselessControl.CustomizeableProperty>
</libNameControl:AnotherUselessControl>
Но что поделать
на шарпе никаких. на других языках MVU подходы, которые в шарпе никто нормально не сделает никогда.
тот же Comet (https://github.com/dotnet/Comet)...ну да, он приносит типа MVU, но по факту "ну просто вместо хмл описывает кодом...но не более, чем мог бы описать тот же хмл...просто кодом" Описание кодом лучше чем хмл в плане компиляции, но это все равно так уныло - ну и это чисто концепт.
Зачем?
У структур почти нету оверхеда. А почему у тебя у метода 28 аргументов?
> У авалонии полно достоинств
Хотел было спросить наехать за нумерацию строк в гриде, но они всё-таки смогли:
https://github.com/AvaloniaUI/Avalonia/commit/7413434e8791b69ef71cd3605de07683c7810a9c
Два раза повторять не надо! Два раза повторять не надо!
Написал на net 8 gRPC клиент на http узел без шифрования, всё работает.
Тоже самое только в проекте на framework 4.8 при подключении опускает хттп 2 до 1.1: Bad gRPC response. Response protocol downgraded to HTTP/1.1
Как это исправить? Нагуглил только совет установить флажки:
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2Support", true);
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
но не помогло.
А как ты себе имаджинируешь это без рефлексии? Скажи спасибо что вообще чисто технически возможно подключить dll в рантайме.
ЁБ ТВОЮ МАААААААААААААТЬЬ!!!!!!!!!!!!!!!! НАУЧИТЕСЬ УЖЕ БЛЯДЬ СУКА В КОИ ТО ВЕКИ БЛЯДЬ ТРЮКАМ РАСШИРЕНИЯ ЦВЕТОВОГО ПРОСТРАНСТВА, ЭТО ЖЕ ПИЗДЕЦ, КАК ЖЕ Я НЕНАВИЖУ БЛЯДЬ ЭТИ БИТОВЫЕ ПОЛОСКИ БЛЯДЬ!!!!!
Приведение типа это красный флаг в любом коде. Я бы выкинул нахуй твой говнокод и послал тебя на пейфоне программировать.
Ты пишешь какое-то невнятное абстрактное говно. Какую проблему решает твоя "библиотека"?
Почему ты просто не взял автомаппер?
Да хуй знает, деталей мало. давай больше деталей, может быть в процессе сам найдёшь, в чём проблема
Х.з., ModuleInitializer? (сам никогда не пробовал)
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/module-initializers
Всю историю питон был на дне, в нулевые они стебались над классами пхп 4 когда во 2 питоне был вообще адок во всем. Пхп 5 все быстро пофиксиле и ООП потенциала и сахара там стало больше чем во всех языках вместе взятых (даже чем в шарпах, ну ибо это интерпретируемый язык). Но питухи продолжали стебаться сидя на своей 2 версии со всем говном. Это буквально было как слон и моська в те времена.
Потом эта говнина раскрутилась с новой техой (ИИ), хотя веб до сих пор в отсосе, но они просто на каком-то уже генетическом уровне продолжают противопоставлять себя над пхп.
кек от фантазий анона ))
пхп взлетел из за того что низкий порог входа и каждый школьник мог написать свой супер пупер скрипт, кинуть на шаред хостинг и оно работает (про то "как работает" я промолчу))))
и ТОЛЬКО ТАМ была сфера применения похапэ (да там и осталась)
именно эта уникальная способность "кинул скриптик в папочку и оно заработало" и сыграло на руку пхп
но это не значит что питон был где то на дне )))
ну а "ооп потанцевал" это вообще лол. банальная калька с жавы - да похапэ этого и не скрывает.
Ну одно дело, тебе на ютубе рассказали что было когда ты родился, а другое дело, когда я варился в этом в те года. До машинного обучения питон был экзотической помойкой с проблемой перехода между 2/3 версией и ужасной производительностью.
Самое смешное когда они на конференциях упоминали веб языки, цинично не упоминали пхп, хотя тот на то время занимал 90% рынка.
Причем тут выстрелил не выстрелил, пхп в свой рассвет конкурировал с перлом вообще
>До машинного обучения питон был экзотической помойкой
когда по твоему выстрелило это ML что ты такой вывод делаешь?
может ты про 2007 год когда по версии тиобе (да, да я знаю это попугайный индекс, но других нет) он стал лидером рейтинга (экзотическая помойка занимает первое место????)
>с проблемой перехода между 2/3 версией
....а питон3 появился только в 2008?
> и ужасной производительностью
она ужасная у всех интерпретируемых языков где не нашлось достаточно ресурсов все это безобразие ускорить. И похапэ тут не исключение
и да - с пхп я познакомился еще во времена пхп 3, так что прекрасно знаю как он рос по фичам и почему выстрелил. Слава богу, удалось свалить с этого "чудесного" языка на чудесный питон (3 конечно). Но не до конца еще (((
Потому что с шарпом работают нормальные гетеросексуальные мужики и бабы нам тут не нужны.
Нужен совет
Брать ли macbook для .net бэкенда?
Сейчас на проекте core, но в будущем могут на framework перекинуть
В основном работаю на своем пк, но иногда нужно по rdp заходить
Нормально ли работает rdp macos - windows server?
М какие подводные?
>Брать ли macbook
Очевидно нет. Зачем тебе это говнобук? Не надо только про 10/15/120ч мобильности.
1) он максимум часов 6 выдержит райдер
2) ты сам себе не ври ты работаешь из дома рядом с розеткой.
Упаси госпаде. Для разработки бека нужно минимум 32 гигабайта оперативки.
Цена на такой макбук будет 350 000+.
Альтернатива не от эппл будет стоить около 200 000.
Память на макбуках всегда распаянная и объединённая (минус 4 гигабайта на полупрозрачные окошки).
Плюс, это арм, как на него ставить линукс для работы - хуй знает.
Как на него ставить винду, если работаешь с фреймворком - хуй знает.
Докер на маке работает как говно.
> Хочется чтоб работал без лагов и экран хороший
Я весной купил huawei matebook x pro. Весит меньше килограмма, 32 гига памяти. Кайфую
>Брать ли macbook для .net бэкенда?
Если райдером пользуешься, тогда можешь попробовать.
>>46894
>Сейчас на проекте core, но в будущем могут на framework перекинуть
Тогда тебе не о маке надо думать, а как съебать с этой работы побыстрее.
>>46894
>Нормально ли работает rdp macos - windows server?
Это зависит не от платформы как таковой (т.к. стандартное подключение везде работает нормально), а от анальных заслонов которые работодатель накрутит поверх твоей удаленки. У тебя там может какой-нибудь хитровыебанная модификация цитрикса оказаться или еще что-нибудь и ты соснешь. Поэтому выясняй заранее у самого работодателя можно ли к нему подключаться с мака.
>>46894
>М какие подводные?
Ну только что геем станешь с маком.
На огрызке работают только петушары.