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

C# thread #51 /csharp/

 Аноним 22/09/23 Птн 12:10:37 #1 №2851295 
Untitled.jpg
1.jpg
2.jpg
index.jpg

Тред лучшего языка на планете!

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

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

3. C# для десктопа
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
Прошлый тред: >>2808819 (OP)

Аноним 22/09/23 Птн 16:00:11 #2 №2851505 
image.png
>>2851295 (OP)
Сижу в своё удовольствие почитываю и разбираюсь в книжечке Рихтера, и хочется прям наглядно, самому потыкаться, в каждом его всхрюке разобраться.

И вот у него часто проскакивает таблица метаданных манифеста. В которой он рассказывает о таких таблицах как: AssemblyDef, FileDef, ManifestResourseDef, ExportedTypesDef. И я чот затуп словил и не могу найти эти таблички в IlDasm или IlSpy.

Мне просто интересно откуда он берет эти данные. Может кто из анончиков, такую фигню подскажет.
Аноним 22/09/23 Птн 16:12:14 #3 №2851521 
>>2851243 →
>using static System.Math;
>using static Extended.Math;

Да это залупа ссаная. IntelliSence начинает корежить.

Я вот хочу узнать какие есть методы в System.Math, пишу Math, а студия начинает мне предлагать Extended.Math. В общем появляется куча неудобств.

Либо Надо.Писать.Весь.Сука.Путь что нихера не удобно.

Либо надо выдумывать мудреный неймспейс, который сто пудов начнет конфликтовать с какой нибудь еще либой. Вот пишешь Geometry, а хуй тебе там! Потому что такое имя есть System.Windows.Media.

Еще и обоссаная студия сперва предлагает тебе оба варианта, а на третью попытку предлагает только один, потому что ебаному майкрософту надо вставить свой обоссаный ИИ, которому даже кофе заварить не доверишься. ИИ за тебя уже решил.
Аноним 22/09/23 Птн 17:56:19 #4 №2851659 
12456.jpg
шарпач, есть ли способ сделать пикрелейтед удобнее? целых три строчки тратится и выглядит уебищно...
Аноним 22/09/23 Птн 17:59:20 #5 №2851664 
>>2851659
[Conditional("DEBUG")]
Аноним 22/09/23 Птн 18:21:13 #6 №2851681 
>>2851664
охуенно, микрософт гении. спасибо
Аноним 22/09/23 Птн 20:00:57 #7 №2851787 
Слава богу аниме...
Аноним 22/09/23 Птн 23:52:44 #8 №2852022 
Шарпаны, что думаете от чистоте крови функции?
Пробовали? Как ощущение?
Просто со стороны - выглядит как вполне хорошая хуйня же. Типа легко написать тесты. Поведение - предсказуемое. И вообще. Потом из этих чистых функций - наебенил еще фунукций и все заебись погнали.
Аноним 23/09/23 Суб 00:16:54 #9 №2852036 
>>2852022
Тебе this в каждый метод передается не для того чтобы ты хуйней с чистыми функциями страдал, чел.
Аноним 23/09/23 Суб 11:21:36 #10 №2852204 
slide-51.jpg
>>2852022
Это какая-то залупа для джава скриптизеров. В сишарпе есть статические методы для этих целей, а обычные на то и созданы, чтобы взаимодействовать с компонентами экземпляра класса. Примеры таких методов — свойства.
Аноним 23/09/23 Суб 12:15:01 #11 №2852242 
Джава стриптизеры...
Аноним 23/09/23 Суб 14:07:22 #12 №2852340 
>>2852204
Как будто в жаве нет ствтических методов
Аноним 23/09/23 Суб 16:17:49 #13 №2852490 
>>2851659
Нормальный логгер прикрути и выставь уровень логгирования.
Аноним 23/09/23 Суб 16:19:10 #14 №2852492 
>>2851659
>>2852490
И Environment нормально использовать не забудь.
Аноним 23/09/23 Суб 16:19:27 #15 №2852494 
>>2852490
1 а нормальный это какой?
2 а выстави уровень это как?

в вопросах подвох
Аноним 23/09/23 Суб 17:07:01 #16 №2852523 
>>2852494
> нормальный это какой
Очевидный серилог.
> выстави уровень это как
По докам почитай.
Аноним 23/09/23 Суб 17:41:49 #17 №2852573 
Какой фреймворк выбрать для создания собственной соцсети - Java Spring или #C .NET Core?
Правда что Spring медленнее, но стабильнее для больших систем?
Аноним 23/09/23 Суб 17:46:00 #18 №2852581 
>>2852523
ну смотри. если всякий там #if DEBUG используют, значит не хотят в релизной сборке дополнительной нагрузке
Мне стоит пояснять что вызов лог метода ДАЖЕ при выключенном логлевеле несет оверхед?
И обычно это решается (псевдокод)
if(logger.IsEnabled(debug)) logger.WriteDebug
и что серилог не исключение (пуф тебе офф вики https://github.com/serilog/serilog/wiki/Writing-Log-Events#level-detection)

то есть твое решение....собственно не сильно отличается от решения в самом вопросе.

Вот жетбраинсковое _logger.LogWithLevel()?.Log() действительно решает проблемы вызова метода когда не нужно, но даже оно дает некоторый оверхед по сравнению с "все вырезано. 0 оверхеда"

>>2852573
что выбрать? подводную лодку или камаз? Мне рассаду выращивать.
Ну что за вопросы блин
Аноним 23/09/23 Суб 18:12:51 #19 №2852623 
Capture.JPG
>>2852490
>>2852523
братишь у меня все в скомпилированном виде занимает 9,50KB
нахуй мне эта несомненно крутая монстра которая толще всего моего проекта на порядки, когда пикрелейтед выполняет свою задачу на сто процентов и на релизе даже не появляется?
Аноним 23/09/23 Суб 18:52:11 #20 №2852665 
Петушки, все конструкторы написали?
Аноним 23/09/23 Суб 19:30:54 #21 №2852694 
>>2852665
Еще не все. Вопросы?
Аноним 23/09/23 Суб 19:33:49 #22 №2852697 
Screenshot from 2023-09-23 20-29-48.png
пацаны помогите

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

в ноде есть __directory

нагуглил такое
https://stackoverflow.com/a/13762465
но эта хуета указывает на
/home/user/RiderProjects/EscrowReader/EscrowReader.Unit.Tests/bin/Debug/net7.0

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

можно было бы в /temp держать но чот хз, не уверен что ток на unix будет запускаться..
Аноним 23/09/23 Суб 19:38:18 #23 №2852700 
>>2852697
а ладно похуй буду в /temp держать ебаная кринжатина хули оно путь до рута то нигде не хранит
Аноним 23/09/23 Суб 20:55:07 #24 №2852769 
Всем привет. Появилась идея сделать что-то типо сайта для просмотра видео. Проблема в том, что если файл весит много, скажем гигов 10, передавать его в сеть - это просто пиздец. Отсюда вопрос: что нужно посмотреть/почитать, чтобы понять как разделить видео на сегменты и передавать в браузер. Насколько я понял нужно код на Js наваять, который будет запрашивать видос с определённого места, а сервак должен будет выдавать сегмент видео, скажем в 4 мб.
Аноним 23/09/23 Суб 21:03:51 #25 №2852776 
>>2852769
Стриминговые протоколы хуй знает когда придумали. Никакие файлы по 10 гигов там не передаются.
Аноним 23/09/23 Суб 21:59:22 #26 №2852833 
>>2852697
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callerfilepathattribute?view=net-7.0
Аноним 23/09/23 Суб 22:03:59 #27 №2852837 
>>2852833
пасиба
Аноним 23/09/23 Суб 23:28:36 #28 №2852900 
изображение.png
>>2852769
Кароч я разобрался. Надо было всего лишь почитать про http побольше, а разбить видос на сегменты оказалось намного проще, чем я думал.
Аноним 24/09/23 Вск 00:06:34 #29 №2852929 
изображение.png
Хотел посмотреть, что из себя представляет класс HttpContentHeaders.А он пишет, что нет конструктора, который принимает 0 аргументов
Аноним 24/09/23 Вск 00:09:39 #30 №2852931 
>>2852340
Ну я предположил, что это вылезло из мест, где пытаются залечить выстрел в ногу. А может что-то древнее, где нет OOП.
Аноним 24/09/23 Вск 00:22:55 #31 №2852941 
>>2852581
>значит не хотят в релизной сборке дополнительной нагрузке
Ее и не будет. У логгера можно выставить уровни.
Есть возможность глобально указать минимальный уровень.

А это занчит, что ты можешь на старте заюзать ровно один раз
#if DEBUG
и в блоке глобально указать минимальный уровень, а для релизной версии повысить до Error или Info.

>if(logger.IsEnabled(debug)) logger.WriteDebug
Я себе сделал метод немного короче, типа
logger.IsDebug()?.logger.WriteDebug()

В любом случае это не так критично по сравнению с остальным. Это как наперстком черпать воду при WPF-шторме.
Аноним 24/09/23 Вск 00:31:33 #32 №2852947 
>>2852623
Братишь, а че будешь делать, если тебе надо будет увеличить уровни логгирования, потому что на машине клиента не робит, а на твоей робит? Ты бы мог установить переключатель и получить от клиента более подробный лог.
Аноним 24/09/23 Вск 01:52:39 #33 №2852966 
>>2852941
то есть ты сам стараешься не вызывать метод если левел не установлен, но всем говоришь что "вызывайте, серилог разберется"?

К дохтору срочна

на деле всегда есть оверхед вызова метода и возможность боксинга. Для избежания боксинга используется набор методов с <T1,T2...
сколько их там в серилоге? 3 параметра? <T1,T2, T3> (ох пожадничали)
а потом params object[]

ну и в горячих местах это просто вызовы методов....которые не нужны.
Аноним 24/09/23 Вск 02:50:04 #34 №2852977 
>>2852966
>то есть ты сам стараешься не вызывать метод если левел не установлен, но всем говоришь что "вызывайте, серилог разберется"?
Я такого не говорил. Операции с текстом лишние, а булевые ничего не стоят.

>на деле всегда есть оверхед вызова метода и возможность боксинга.
>ну и в горячих местах
Это в каких? Там твой логгер нахуй не нужон. Пиздец. Ты бы еще в циклы логировал.

А я тебе скажу в чем твой план — говно. Когда пользователь запустит твое приложение, оно не сможет записать логи буквально никак.
В разработке используется инструменты отладки, а логи записываются как раз на случаи отсутствия непосредственного доступа к программе.
Аноним 24/09/23 Вск 02:53:24 #35 №2852978 
>>2852947
а клиенты - это кто? я для себя пишу.
Аноним 24/09/23 Вск 03:13:05 #36 №2852979 
>>2852977
>Там твой логгер нахуй не нужон
так с этого и начали. Это ты логгер притащил туда где его не требовалось. А теперь возмущаешься.

>Ты бы еще в циклы логировал
а что не так. Если нужно, то логируется все.

>В разработке используется инструменты отладки
ты про Debug.WriteLine? о да, его так весело читать. Там чего только нету. Там есть все...что тебе и не нужно.
Аноним 24/09/23 Вск 03:13:19 #37 №2852980 
>>2852978
Для себя можно что угодно писать, это универсальное оправдание.
Аноним 24/09/23 Вск 03:26:33 #38 №2852982 
>>2852979
>Это ты логгер притащил туда где его не требовалось.
Я не ванга. Вижу хуйню — делаю замечание.

>а что не так
Хуйня №2

>ты про Debug.WriteLine?
Я про точки останова, таблицу переменных и панель стека вызовов, которые дают исчерпывающую информацию на любом этапе. Логгирование подразумевает отображение общей информации и в большей части для релизной версии, когда нет доступа к вышеописанным инструментам.
Аноним 24/09/23 Вск 03:31:41 #39 №2852983 
>>2852982
>Я про точки останова, таблицу переменных и панель стека вызовов, которые дают исчерпывающую информацию на любом этапе
эээх не ловил ты никогда гейзенбаги. ничего. может повезет.
Аноним 24/09/23 Вск 04:34:31 #40 №2852988 
1455858404580.png
>>2852980
ну вот я и пишу сообщения для себя, которых на релизе не будет и которые будут выглядеть красиво, спасибо двачу-помогачу.
а логгер будет от фреймворка, который подтянется автоматически и будет срать логами только тогда когда это надо, а если "клиент" зальет его в дискок сообщества, то бот его проанализирует и пинганет автора по гуиду. ты на основании трех строчек кода уже какую-то себе картину составил и начал советы непрошенные довить. не надо так
Аноним 24/09/23 Вск 18:24:38 #41 №2853662 
>>2852623
>братишь у меня все в скомпилированном виде занимает 9,50KB
Ты за каких хером в шарпе байтоебствуешь на ровном месте?
Аноним 24/09/23 Вск 18:45:23 #42 №2853695 
Как в Markdown файлах вставлять локальные изображения. Хотел красивый ридми запилить, но видимо не судьба, это говно ни на чт оне способно.
Даже в вижуал студо коде можно, но не в вижуал студии.
Аноним 24/09/23 Вск 18:51:39 #43 №2853703 
2023-09-2418-50-06.png
2023-09-2418-50-40.png
>>2853695
1 - visual studio code
2 - visual studio
Аноним 24/09/23 Вск 19:40:46 #44 №2853785 
>>2852581
>что выбрать? подводную лодку или камаз? Мне рассаду выращивать.
Ну что за вопросы блин
Java Spring - это подводная лодка?
А C# .net - Камаз?

Это типа как UE и Unity - UE для больших проектов, а Unity - для казуалок?
Аноним 24/09/23 Вск 19:44:41 #45 №2853793 
2023-09-2419-43-10.png
>>2853703
Хотел вставить mermaid-диаграмки? Соси хуй. Это можно сделать только в visual studio code.
Аноним 24/09/23 Вск 19:57:52 #46 №2853824 
2023-09-2419-56-04.png
>>2853695
>>2853703
>>2853793
Расширение MarkdownEditor v2.0 поддерживает и локальные картинки и русалку.
Аноним 24/09/23 Вск 21:11:49 #47 №2853954 
>>2853785
>Java Spring - это подводная лодка?
или камаз
>А C# .net - Камаз?
или подводная лодка
>Это типа как UE и Unity - UE для больших проектов, а Unity - для казуалок?
то есть то что это 2 разных языка, и вряд ли ты знаешь их оба, тебя не смущает? ну ок

но все равно спрашивать в шарпотреде про жаваговно - ну такое себе.
Аноним 25/09/23 Пнд 08:05:21 #48 №2854304 
>>2853954
Я мимодил, увлекаюсь с младых ногтей языками, в своё время неплохо знал джаву, писал на ней пруверы и игры на LWJGL, но спринг не трогал никогда, вебом не интересовался, потом ушёл в шарп капитально, в шарпе уже и кишочки знаю. В принципе оба языка в отрыве от фреймворков представляю довольно хорошо, слежу за новыми фичами в языках и.т.п.
А вот чем реально спринг отличается от аспа? Я никогда не видел приложение на спринге даже изнутри.
Аноним 25/09/23 Пнд 08:06:36 #49 №2854306 
>>2854304
нам, ШАРПИСТАМ, откуда то это знать? и ЗАЧЕМ?
Аноним 25/09/23 Пнд 08:13:35 #50 №2854313 
>>2852947
> Братишь, а че будешь делать, если тебе надо будет увеличить уровни логгирования, потому что на машине клиента не робит, а на твоей робит? Ты бы мог установить переключатель и получить от клиента более подробный лог.
Я обычно когда нужна трассировка подкидываю дебажные библиотеки клиенту с напердоленной специально под него трассировкой в местах где жду проблемы. Смысла делать одну трассировку на все косяки не вижу, слишком много мусора и логи тяжело анализировать, больше 50 мегабайт в Notepad++ лучше не вставлять, а на нагруженной опердени 50 мегабайт трассировки набивается за 10 минут.
>>2854306
Я думаю людей которые знают и шарп и джаву не мало, меня на работе пытались на джавапроект посадить, но я задоджил. У нас в одном отделе шарп, в другом джава например.
Аноним 25/09/23 Пнд 10:12:48 #51 №2854446 
>>2854313
>Я обычно когда нужна трассировка подкидываю дебажные библиотеки клиенту с напердоленной специально под него трассировкой в местах где жду проблемы.
А как это сделать?
Аноним 25/09/23 Пнд 18:18:24 #52 №2854978 
>>2854313
>Я обычно когда нужна трассировка подкидываю дебажные библиотеки клиенту с напердоленной специально под него трассировкой в местах где жду проблемы.
Чет либо пиздеж, либо клиенты у тебя конкретные терпилы, либо у тебя в производстве ебаный бардак.
>слишком много мусора и логи тяжело анализировать, больше 50 мегабайт в Notepad++ лучше не вставлять
Про ротацию логов слышал?
>а на нагруженной опердени 50 мегабайт трассировки набивается за 10 минут.
Ну так если у тебя "опердни" - значит финансы. А там даже один проебаный платеж, это гораздо хуже чем гигабайты лишних логов.
>Я думаю людей которые знают и шарп и джаву не мало, меня на работе пытались на джавапроект посадить, но я задоджил. У нас в одном отделе шарп, в другом джава например.
Просто знающих - много, т.к. языки родственные по многим параметрам, а вот тех кто нормально шарит в кишках и ньюансах фреймворков, так чтобы их профессионально применять уже очень немного. А то что тебя пытались просто с нихуя на другой стек посадить говорит либо об охуенном бардаке в твоей конторе, либо показывает твою низкую ценность как специалиста, что работодателю совершенно похуй где ты будешь работать и что и там и там выхлоп от тебя небольшой будет.
Аноним 25/09/23 Пнд 18:40:27 #53 №2855013 
image.png
image.png
>>2851295 (OP)
Совсем ньюфажный вкатывается в тред, в C# по видеоурокам SimpleCode только дошел до классов.

Хочу освоить ASP.Net Core для дальнейшего трудоустр-ва на галеру. Времени много (безработный), желание есть.

Пошел искать актуальные обучающие материалы - пока ничего, кроме двух книжек на пикрелах не нашёл. Подскажите, во что забуриться с головой и не охуеть от косноязычного слога/хуевого микрофона ментора.
Аноним 25/09/23 Пнд 19:40:51 #54 №2855105 
>>2855013
Троелсен 2 пик у тебя, Asp.Net в действии, Ef Core в действии. Затем

https://www.freecodecamp.org/news/learn-html-beginners-course/ -Html + Css
https://learn.javascript.ru/ - js а ты думал выучил шарпы и всё? Хуй там плавал, шарп это в 90% случаев фуллстек
Потом учишь реакт, по итогу пилишь сайт + бэкенд в качестве пета и начинаешь искать работу. Двух месяцев должно хватить.
Аноним 25/09/23 Пнд 19:55:12 #55 №2855130 
>>2855105
>а ты думал выучил шарпы и всё?
Да...

Хорошо, большое спасибо. Ушёл курить вопрос, текст сохранил.
Аноним 25/09/23 Пнд 20:00:26 #56 №2855140 
>>2854978
ты из тех для кого существует только один вид софта )))
много видел логов, например, в десктопном софте?
а ведь даже в браузере они есть. ты их видел? ах да, у тебя же не дебагбилд,
вот тупые разрабы браузеров -у них бардак )
Аноним 25/09/23 Пнд 20:01:01 #57 №2855142 
открываю сбилденный студией dll в hex редакторе - вижу путь проекта, у меня дефолтный C:\Users\XXXXX\source\repos
сразу встал такой вопрос - а что еще пишется в бинарники, есть ли там какая-то еще более персональная инфа и как анонимизироваться, если да?
Аноним 25/09/23 Пнд 20:02:55 #58 №2855150 
>>2855142
от кого прячешься?
Аноним 25/09/23 Пнд 20:05:41 #59 №2855154 
>>2855150
юзернейм тупой, стыдно показывать всем желающим...
Аноним 25/09/23 Пнд 23:56:00 #60 №2855357 
>>2854446
> А как это сделать?
А какие проблемы? Кодовая база разбита на рой мелких библиотек, если надо одну подправить то просто беру и правлю, состояние на конкретный патч у меня в ветке, потом заменяю релизную библиотеку отладочной с логами, снимаю трассировку, опционально правлю что-то и подкладываю пока ошибка не пропадёт. Потом отключаю трассировку (обычно конфигом логгера). Потом правки (без трассировки) переношу из рабочей копии патча в мастер и оттуда они попадают в следующий патч.
>>2854978
> Чет либо пиздеж, либо клиенты у тебя конкретные терпилы, либо у тебя в производстве ебаный бардак.
Ситуация когда надо снимать трассировку означает что проблема эскалирована уже максимально высоко, такое не особо часто случается, но нашим софтом пользуется очень много кто и на фоне большого количества установок приходится периодически это делать. На тестовых контурах интеграций поймать баги перед релизом нереально, там слишком много что влияет, трассировки нужны под большой разнородной нагрузкой которая бывает только на проде.
> Про ротацию логов слышал?
И чем она тут поможет? Зачем хранить архивы трассировок? Ты ССД продаёшь и надо чтобы они быстрее из строя выходили?
> Ну так если у тебя "опердни" - значит финансы. А там даже один проебаный платеж, это гораздо хуже чем гигабайты лишних логов.
Проебать платёж очень сложно. Не то что бы нереально, но если что-то пойдёт не так хоть немного то транзакция просто не завершится и вернётся с ошибкой. Проёбанные платежи происходят только после очень крупных релизов и обычно их можно пересчитать по пальцам одной руки на всю страну за год. Обычно проблема не в том что платежи пропадают, а в том что они возвращаются с ошибкой хотя должны отработать нормально или отрабатывают медленно.
> А то что тебя пытались просто с нихуя на другой стек посадить говорит либо об охуенном бардаке в твоей конторе, либо показывает твою низкую ценность как специалиста, что работодателю совершенно похуй где ты будешь работать и что и там и там выхлоп от тебя небольшой будет.
Почему? Ты просто слесарь фреймворка и тебе платят за знание кишочек аспа, ты на всех эту слесарную мудрость и распространяешь. Моя ценность как сотрудника не в понимании кишочек аспа, а в понимании бизнеса кабана и того как система крутит этот бизнес. Гораздо легче научить меня спрингу чем джавадебила тому как вся остальная система устроена и как должны проходить бизнес-процессы.
Пиздец у тебя привычка на ровном месте пытаться собеседника унизить, у тебя наверное нет друзей.
Аноним 26/09/23 Втр 00:03:20 #61 №2855360 
>>2855142
Я не знаю, но путь к исходникам там реально есть. Обычно сборка релизных версий происходит не на машине разработчика, а на агенте тимсити и вся дрисня там заполнена тоже с агента.
Если тебе интересно посмотреть что ещё в DLLке то юзай ILDASM, я по приколу завтра тоже гляну что там есть.
Аноним 26/09/23 Втр 01:03:51 #62 №2855406 
>>2855105
Какова вероятность со знанием asp.net core и react найти работу на удаленке?
Чтобы на работу не ходить, а дома сидеть?
мимо крокодил
Аноним 26/09/23 Втр 09:29:13 #63 №2855533 
>>2855406
>Какова вероятность со знанием asp.net core и react найти работу на удаленке?
Просто со 'знанием' вряд ли. Вот с 'опытом' хотя бы от полугода, то вполне реально.
Аноним 26/09/23 Втр 13:58:54 #64 №2855844 
>>2855357
>Пиздец у тебя привычка на ровном месте пытаться собеседника унизить, у тебя наверное нет друзей.
Нахуя бы я еще на двач заходил?
Аноним 26/09/23 Втр 20:53:53 #65 №2856504 
Поясните за визитера.
На кой хуй оно надо?

Типа тем более в той схеме, которую обычно.

Типа
class A{ void Visit(IVisitor visitor{ visitor.VisitA(this); } }
class B{ void Visit(IVisitor visitor{ visitor.VisitB(this); } }

Типа чем объективно это лучше варианта с:

handler.Handle(a);
handler.Handle(b);


При этом классы A-B нихуя про этот визитер не будут знать и не будут засраны этим говном. А логику при визите - все равно никто никогда не добавляет ИРЛ.

В общем. Че я не понимаю. Поясните.
Аноним 26/09/23 Втр 21:17:44 #66 №2856548 
.png
>>2856504
Ну типа срсли. Даже накидал пример.
Вот чем оно буде хуже, по сравнени с тем, что я в каждый бы тот класс пихал этот Visit?
Аноним 26/09/23 Втр 21:46:32 #67 №2856623 
>>2856504
Ты случаем не из тех, кто сначала учит паттерны и потом думает, как их применять?
Аноним 26/09/23 Втр 21:56:09 #68 №2856645 
>>2856623
Не.
Просто вот я на ночь глядя вспомнил про конкретно этот паттерн. Подумал-подумал. Еще раз подумал.
И за всю жизнь видел его только в коде Netty или Mina(не помню уже, давно смотрел) и это был пиздец какой-то(то что пиздец был - помню)
Пизжу. Еще кажется в сорсах .net'а видел пару раз. Но там оно тоже выглядело будто просто хуйнули, чтобы было, типа мы тоже как жависты знаем эти ваши паттерны.
Вот и думаю. Мож я чего-то не понимаю и на деле есть применение, где ну прям код становится лучше, удобнее и понятнее.
Аноним 27/09/23 Срд 00:27:36 #69 №2856817 
2023-09-2700-23-49.png
Почему когда я наследуюсь от Window и создаю свойство Owner, студия не говорит мне, что такое свойство уже есть в базовом классе?

В самом классе Window свойство выглядит так (из метаданных):
public Window Owner { get; set; }
Аноним 27/09/23 Срд 00:35:18 #70 №2856827 
>>2856817
А не, есть предупреждение.
Аноним 27/09/23 Срд 00:42:56 #71 №2856840 
>>2856548
>>2856645
ну так ты сам себе ответил, не? визитор это паттерн матчинг у древних мамонтов, а у нас современный язык
Аноним 27/09/23 Срд 09:52:58 #72 №2857039 
>>2856840
Визитор это паттерн двойной диспетчеризации и шарп не исключение
Аноним 27/09/23 Срд 12:12:18 #73 №2857239 
15937867776240.png
Только что узнал, что в шарпе невозможно такое:

/// передаем свойство Point по ссылке
Point pos = new(300, 300);
if(Clamp(ref pos.X, 0, 100))
{}
/// где Clamp это ...
private static bool Clamp(ref double value, double min, double max) {}


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

Приходится срать таким образом, если нужно и получить измененное значение структуры и результат успешности операции:
private static bool Clamp(double inputValue, double min, double max, out double outputValue) {}
Ок, так нет аллокаций, но нахера в шарпе ref?
Аноним 27/09/23 Срд 12:18:13 #74 №2857246 
>>2857239
И вообще такой вопрос, а out создает аллокации?
Аноним 27/09/23 Срд 12:28:14 #75 №2857268 
zDUpZtd2thumb.png
>>2857246
Короче между out и ref нет никакой разницы в плане оптимизации — все будет передано по ссылке, что неизбежно приведет у аллокациям.

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

Бейсик:
if Clamp(pos.X, 0, 100) then MsgBox("И это всё?")

Шарп:
bool localClamp() {
. . . double argvalue = pos.X;
. . . var ret = Clamp(ref argvalue, 0d, max.Width);
. . . pos.X = argvalue;
. . . return ret;
}

if(localClamp()){ MessageBox.Show("Охуеть не встать ..."); }
Аноним 27/09/23 Срд 13:07:07 #76 №2857342 
2023-09-2713-02-53.png
2023-09-2713-05-27.png
>>2857268
Теперь я буду доебывать алису своими тупыми и мелочными вопросами.
Аноним 27/09/23 Срд 13:12:10 #77 №2857352 
2023-09-2713-11-45.png
>>2857342
Аноним 27/09/23 Срд 14:36:14 #78 №2857472 
2023-09-2714-35-17.png
>>2857352
С этой хуйней можно шизом стать.
Аноним 27/09/23 Срд 16:55:17 #79 №2857741 
>>2857239
>если ты не можешь передать свойство
свойство это просто сахар для двух методов
Аноним 27/09/23 Срд 17:35:58 #80 №2857805 
>>2857741
Ваш сахар несладкий.
В бейсике я могу передать свойство в параметр метода как ref и внутри перезаписать. Чтобы такое сделать в шарпе, я должен изъебнуться, и самое печальное, что подобное >>2857342 не повышает ни производительности, ни компактности.
Аноним 27/09/23 Срд 19:19:52 #81 №2857901 
>>2857239
Реф нужен для того чтобы передать ссылку на что-то.

Свойства - это пара методов.

Давай просто переведем твое свойство в то что ты там пытаешься делать:

if(Clamp(ref x.get_X(), 0, 100))

Че по твоему должно произойти-то?

Про передачу по ссылке каких-то простых сущностей типа инта. НАХУЯ? Вот серьезно. Чтобы что? Это не массив. Это не какая-то пиздец сложная структура, которая при копировании сожрет миллионы тон ресурсов. Это, мать его, простое значение, размером с эту самую ссылку, которая, блядь, так же будет создана, если ты передаешь по ссылке(блядь, представь себе, сук, ссылки - тоже занимают место в памяти и чтобы их передать - надо так же создать переменную, а обращение к тому что лежит по ссылке - дольше, сука, потому что надо сначала из ссылки достать адрес того что ищется, а потом уже считать из адреса значение).

Короче. Не беси меня. Вот серьезно. НЕ БЕСИ, блядь.

По ссылкам - передаем либо то когда в методе может измениться значение лежещее по адресу, либо если структура - пиздец здоровая и ее копирование - избыточно. Все.
Аноним 27/09/23 Срд 19:53:16 #82 №2857939 
>>2857901
>блядь, представь себе, сук, ссылки - тоже занимают место в памяти
Так у тебя в любом случае будет сылка, нахуй. У тебя просто НЕТ возможности это обойти. Никак.

Вот напиши мне метод TryClamp, который обрезал бы число по диапазону min и max, и возвращал:
2. результат обрезания
1. булевый результат факта обрезания. Если обрезал - true, если нет - false.
Давай, напиши мне такой метод без использования ссылок, кортежей и анонимных типов.

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

В итоге ты либо создаешь еще один параметр out в методе из котрого ты тоже не можешь присвоить значение отбратно

if(Clamp(pos.X, 0d, 100d, out double result);){
. . . pos.X = result;
}


либо городить лишние перменные типа

double posX = pos.X;
if(Clamp(ref posX, 0d, 100d);){
. . . pos.X = posX;
}
Аноним 27/09/23 Срд 20:44:34 #83 №2857986 
>>2857939
> 2. результат обрезания
> 1. булевый результат факта обрезания. Если обрезал - true, если нет - false.

public static class Clamper {
public readonly struct ClampResult {
public readonly bool Clamped;
public readonly double Value;
public ClampResult(bool clamped, double value) => (Clamped, Value) = (clamped, value);
}

public static ClampResult Clamp(double val, double min, double max) {
if( val < min ) return new(true, min);
if( val > max ) return new(true, max);
return new(false, val);
}
}


И да. Это как раз не оверинжениринг.
Аноним 27/09/23 Срд 21:08:47 #84 №2858003 
>>2857939
на деле шарп мог бы засахарить ref Property. Это вообще легко, но это ж мелкие. Они скажут - юзай ламбды (они то встраиваются в класс в отличие от методов хаха )

>>2856817 и дргуие WPF-сты
А хотите грабли?
https://dropmefiles.com/E8H0K

есть UserControl > ContentControl > Combobox
есть 2 свойства у UserControl ItemsSource/SelectedItem
комбобокс биндится к этим свойствам у контрола. Ну а клиент биндится снаружи. То есть обычный юзерконтрол

И происходит смена DataContext (там по таймеру она) и список конечно меняется и летит SelectedItem=null в старый!!! DataContext, который разумеется такого переварить не может (но не суть)
Аноним 27/09/23 Срд 21:33:28 #85 №2858042 
>>2857986
>без использования кортежей и анонимных типов
>создает структуру
Наебал, систему, так сказать, но теперь вызов твоего класса нельзя запихнуть в If т.к. он возвращает не bool.

>>2858003
>на деле шарп мог бы засахарить ref Property.
Мало того, они уже так сделали, но не для шарпа. Я понимаю, что некоторый бейсиковский сахарок вылезает со временем боком — это я понял с шарпом и понял почему в нем нет подобного, но здесь-то что может пойти не так? Не понимаю.
Аноним 27/09/23 Срд 21:37:53 #86 №2858050 
.png
>>2858042
> но теперь вызов твоего класса нельзя запихнуть в If т.к. он возвращает не bool
Аноним 27/09/23 Срд 21:46:44 #87 №2858067 
EF Core и many2many. Аннотации в join entity не работают?! Это вообще нормально?

[Table("student_course")]
public class StudentCourse {
[Column("uid")]
public int StudentID {get;set;}
[Column("cid")]
public int CourseID {get;set;}
public required Course Course { get; set; }
public required Student Student { get; set; }
}

И вот когда я его спрашиваю скажем context.StudentCourse.Single(sc => sc.CourseID = 1123).StudentID, я получаю ответ.
А когда я спрашиваю context.Courses.Include(c => s.Students).Select(c => c.Students).Single(c => c.CourseID=1123), я получаю запрос, в котором написаны StudentCourse, StudentiD и CourseID.
Аноним 27/09/23 Срд 22:06:39 #88 №2858087 
2023-09-2721-51-41.png
>>2858003
>комбобокс биндится к этим свойствам у контрола
Нет, у тебя он биндится к свойствам вьюмодели, которая подхватывается из DataContext. А депенденси-свойства ItemsSource/SelectedItem в UserControl у тебя просто висят в воздухе.

Чтобы комбобокусу присосаться к ним, нужно обращаться к родительскому UserConrol по типу или по имени, и уже у него искать эти свойства.
Аноним 27/09/23 Срд 23:01:08 #89 №2858150 
>>2858087
ты не заметил ElementName=Root
Аноним 27/09/23 Срд 23:09:27 #90 №2858158 
2023-09-2723-07-38.png
>>2858150
Ах да. Что там не так? Выглядит так, как ожидается.
Аноним 27/09/23 Срд 23:14:47 #91 №2858163 
>>2858158
не жми ничего. там по таймеру сменит вьюмодель
и увидишь такое
AAAAAAAAAAAA: DataViewModel (5560998) Start
AAAAAAAAAAAA: DataViewModel (5560998) SelectedItem 'one'
AAAAAAAAAAAA: DataViewModel (44407631) Start
AAAAAAAAAAAA: DataViewModel (5560998) SelectedItem ''

то есть при смене вьюмодели будет принят новый от этой новой вьюмодели список элементов, текущий элемент станет нулл и его получит старая вьюмодель
Аноним 27/09/23 Срд 23:40:38 #92 №2858189 
>>2858163
Ну да, селектед итем сбрасывается, если вернуться на предыдущую модель. Может это из-за асинка. У меня вроде тоже были с этим проблемы, не помню как решил.

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

Но за пример спасибо, учту.
Аноним 27/09/23 Срд 23:47:36 #93 №2858196 
>>2858189
асинк там не причем. Можно любым способом менять вьюмодель и эффект будет.

> в mvvm надо биндиться ко вьюмодели
ну это снаружи юзерконтрол биндится куда хочет, но при этом ИЗОЛИРОВАННЫЙ юзерконтрол создает в себе депенденсипроперты и внутренний xaml должен с ними как бы работать. И особо неважно как внутренний xaml найдет эти свойства - не отваливается внешний биндинг. А ClearBinding затирает вообще все наглухо.
Аноним 28/09/23 Чтв 00:08:41 #94 №2858207 
>>2858189
и причина то понятна
при смене вьюмодели идет обновление привязки сначала ItemsSource, а потом SelectedItem. И в первой привязке сбрасывается текущий пункт, который дергает биндинг селектед...который еще старый и шлет хрень в старую вьюмодель

Таким образом, если поменять местами и будет
<local:TestControl SelectedItem="{Binding SelectedItem, Mode=TwoWay}" ItemsSource="{Binding Items, Mode=OneWay}" />
то проблема исчезает

но это как бы не дело.

ловить смену датаконтекста, сбрасывать все привязки и потом героически в коде писать биндинги и шаблоны...да как то читается как говно, ощущается как говно и вообще подход - говно.
Аноним 28/09/23 Чтв 01:12:37 #95 №2858236 
>>2858196
>ну это снаружи юзерконтрол биндится куда хочет, но при этом ИЗОЛИРОВАННЫЙ юзерконтрол создает в себе депенденсипроперты.

Блин, я впервые наблюдаю такую проблему. Хотя тыщу раз менял вьюмодель целиком. Вот это прокатило.
Аноним 28/09/23 Чтв 07:12:40 #96 №2858279 
>>2851295 (OP)
Вкодь уже чо-нить годного в наноборду, заебал.
Аноним 28/09/23 Чтв 10:49:31 #97 №2858411 
>>2858236
>Хотя тыщу раз менял вьюмодель целиком
ну если биндиться как положено на датаконтекст, то проблемы вроде бы нет.

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

хз как комбобокс это магует. может ловит полную смену датаконтекста и что то там обнуляет? так нет удобных средств обнуления биндинга.
Я гуглил и там жалуются на хз какую то проблему и биндинг в коде делают, хотя я разницы не вижу - после обнуления он снова слетит же. Да и как обнулять селектедбиндинг, а вдруг порядок правильный и тогда почем зря затрешь биндинг и неоткуда его взять.
Аноним 28/09/23 Чтв 16:45:19 #98 №2858769 
как же хочется [CallerTypeName]... почему я должен StackFrame(1) гонять..
Аноним 29/09/23 Птн 01:26:48 #99 №2859295 
Аноны, а какой тулчейн используют для серверной разработки пол Линукс?
Аноним 29/09/23 Птн 07:09:56 #100 №2859361 
>>2859295
Разрабатываем на винде в ВисуалСтудио.
Пушим в гит, там техногоблины уже настроили женкинсы-хуенкинсы, гоняют-собирают-теструют-разворачивают на тестовом сервере.

Если надо что-то специфичное для линукса юзать в разработке - можно через WSL погонять.

Если мы ебанат и сидим на линуксе - Vim(ну, мы же уже решили, что мы ебанат), и вместо разработки хвастаемся, что 900 символов в минуту печатаем, а работу пусть вон тот джун делает.

Чи ты про что?
Аноним 29/09/23 Птн 07:22:30 #101 №2859370 
Как ссделать так, чтобы в релизной сборке - не было полного пути до файлика если где-то эксепшн, но при этом все еще было имя файлика?

Типа просто всрато смотрится : С:\\users\XXX_ZZZ_NARUTO_FAN_1995_XXX_ZZZ\sources\repo\SuperApp\Core\Module\Parser.cs(256)
Хочу чтобы было только: SuperaApp\Core\Parser.cs(256)
А как так сделать - хз.
Аноним 29/09/23 Птн 09:56:08 #102 №2859450 
>>2859361
>Если надо что-то специфичное для линукса юзать в разработке - можно через WSL погонять.
У меня просто отдельный стенд с линуксом. Я к нему прокинул удаленную отладку и удаленный запуск юнит-тестов с виндовой машины. По итогу разработка на винде, отладка и тесты на линуксе.
Аноним 29/09/23 Птн 09:57:47 #103 №2859453 
>>2859370
Не собирай релизы на своей машине.
Аноним 29/09/23 Птн 12:34:41 #104 №2859618 
>>2859361
>Чи ты про что?
На Линукс что ставим? SDK Net или Mono?
Аноним 29/09/23 Птн 12:54:07 #105 №2859643 
>>2859618
dotnet
Аноним 29/09/23 Птн 13:13:34 #106 №2859678 
Я опять про EF Core. Я опять ничего не понимаю.
Как выбрать 3й уровень навигации? Только третий? Ну скажем у Course есть Students, и у каждого Student есть Addresses. Как мне выбрать все Адреса всех Студентов Курса? Данные курса и тем более студентов не нужны.
Аноним 29/09/23 Птн 14:47:30 #107 №2859801 
>>2859678
List<Course> courseList = data; //Initialise courseList
var addresses = courseList
.SelectMany(course => course.Students)
.SelectMany(student => student.Addresses)
.ToList();
Аноним 29/09/23 Птн 15:20:38 #108 №2859880 
>>2859678
Include
ThenInclude
Select
Аноним 29/09/23 Птн 16:08:06 #109 №2859923 
screenshot-2ch.hk-2023.09.29-160641.png
>>2859801
Что я делаю не так? И что запрещённого я написал?
Аноним 29/09/23 Птн 16:30:17 #110 №2859946 
Чет проиграл с этой маленькой компании у которой не хватило ресурсов на обновление самого актуального на тот момент гуи фреймворка для винды
> After we replumbed WPF in .NET 4.0 to use System.Xaml, we weren't able to justify spending our smaller resources on migrating the WPF MarkupCompiler to use System.Xaml.
Аноним 29/09/23 Птн 16:51:10 #111 №2859964 
>>2859946
> самого актуального на тот момент гуи фреймворка для винды
А при чём тут винформы?
Аноним 29/09/23 Птн 16:56:50 #112 №2859967 
Всем привет. Есть возможность в компании перейти на шарпы, сам я фронтендер. Честно говоря есть желание перейти на бекенд, потому что хочется возиться с логикой. Но вот я метаюсь между пхп и шарпами, куда лучше, ваше мнение?
Аноним 29/09/23 Птн 18:16:41 #113 №2860027 
.png
>>2859967
ПХП последних версий практически тот же шарп, но без возможности десктопа, зато со своими преколами.
Шарп - ну, типа майки, крупная контора, хуе-мое. Ну и шустрее чем ПХП. Хотя опять же - ПХП сильно бустанули в скорости.

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

НО, как сеньер-шарповод - я все равно буду говорить, что шарп - лучше. Потому что я, блядь, 10+ лет в нем ковыряюсь. Кишочки вдоль и поперек излазил и вообще. Могу ругать, но все равно буду говорить, что шарп пизже.
Аноним 29/09/23 Птн 18:25:02 #114 №2860038 
>>2859967
Пыха (только 7 и 8 версии, т.к. 5-ая - такое себе) и Шарп одинаково приятные языки

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

Плюсы:
- Опять же ок язык, и с него есть огромнейший шанс срыгнуть в Golang, не потеряв в зряплате (галеры сами предлагают сделать это)

А на каком фронтенд-фрейме пишешь, если не секрет? Если это Вуе - выбирай пыху. Если ангуляр или рякт - шарп. Т.к. это оч популярные фулстек-связки
Аноним 29/09/23 Птн 18:30:48 #115 №2860042 
>>2859967
А нужно ли тебе оно - становиться фулкеком и работать за двоих? Или планируешь полный свитч в бекенд со временем?
Аноним 29/09/23 Птн 18:44:35 #116 №2860050 
>>2860042
> полный свитч в бекенд
> шарп
Хехе
Аноним 29/09/23 Птн 18:48:13 #117 №2860057 
>>2860050
Ну значит полный фулкек (как в 85% вакансий на пыхе)
Аноним 29/09/23 Птн 18:58:23 #118 №2860068 
>>2860042
>А нужно ли тебе оно - становиться фулкеком и работать за двоих? Или планируешь полный свитч в бекенд со временем?
Полный свич, заебали эти пиксели + не чувствуется инжиниринга какого-то. А с базами прикольно работать, как и с логикой в целом.

>>2860038

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

>Опять же ок язык, и с него есть огромнейший шанс срыгнуть в Golang, не потеряв в зряплате (галеры сами предлагают сделать это)
Да, знаю что это выход из пхп-мира.

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

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

>>2860027
Лол, спасибо за ответ, улыбнуло то что под спойлером и дальше.


А теперь вопрос ко всем: как мне этот скачок совершить? Думаю пописывать на шарпах понемногу, в принципе несложно, много схожести с тайпскриптом (еще бы, и то и другое майки делали), набивать опыт в бекенде и паралельно пых учить? Это реально вообще?
Аноним 29/09/23 Птн 19:02:16 #119 №2860076 
>>2859923
Разобрался с первым вопросом
group f by f.Id into u
select u.FirstOrDefault()
Аноним 29/09/23 Птн 19:10:45 #120 №2860085 
>>2860068
> Как совершить?

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

А на чистых бек ваках тебя попустят на собесе (извини)

> А я планирую сразу в лару залететь, лол.
Увы, бывает такое, что в тайтле ваки написано "PHP-разработчик (Laravel)". Переходишь по вкладке - а там еще в довесок требуют 1C-Битрикс:-)
Аноним 29/09/23 Птн 20:05:15 #121 №2860167 
>>2860085
>Если метишь сразу в пыху, то скипай нахуй шарп
Не могу скипнуть, потому что работа + надо базы подтянуть, да и пыху в целом, немного окунуться так сказать.
Аноним 29/09/23 Птн 20:46:15 #122 №2860207 
>>2859967
иди на пхп. ты должен ощутить страдания.
вкусить говна так сказать.
иначе какой ты программист без страданий.
Аноним 29/09/23 Птн 20:50:11 #123 №2860210 
>>2860207
Почему же? Люди вверху говорят, что вполне приятный язык, начиная с версии 7
Аноним 29/09/23 Птн 21:20:37 #124 №2860268 
NUnit или Xunit? Кто чем пользуется?
Сам сижу на NUnit, но временами посматриваю в сторону второго.
Есть какие-то значительные преимущества?
Аноним 29/09/23 Птн 21:45:12 #125 №2860306 
>>2859967
>Но вот я метаюсь между пхп и шарпами, куда лучше, ваше мнение?
Если хочешь попасть потом в серьезный бизнес или финтех и крутить там микросервисы, то всяко шарп (ну или жабу).
Аноним 29/09/23 Птн 21:48:35 #126 №2860309 
>>2860050
>Хехе
Почему нет?
Я когда заходил в шарп, чутка пофулстечил на реакте (и то там сводилось все к написанию мелких компонентов и доработок отдельных гридов), а потом ушел в чистый бэк. И уже года три фронта не касаюсь и дальше api с бэка не вылезаю.
Аноним 29/09/23 Птн 21:56:48 #127 №2860314 
>>2860210
>Люди вверху говорят, что вполне приятный язык, начиная с версии 7
Угу, про джаву тоже говорят, что она c 17-й версии пиздатая, только в большинстве случаев везде 8-ка до сих пор и так там и будет.
Так же и с пыхой.

А в шарпе уже и на .net7 вакансии есть, а в начале следующего и на 8-й появятся. И в большинстве мест, даже с легаси, новых людей берут с прицелом перевода софта на новый стек. Плюс шарп и в предыдущих версиях вполне себе неплох был.
Аноним 29/09/23 Птн 22:17:25 #128 №2860335 
>>2860268
Технически XUnit пизже. Т.к. по умолчанию лучше изолирует тесты, что более подходит для большинства обычных тестовых сценариев. Если же есть необходимость пошарить контекст между тестами, то это там делается довольно просто.
NUnit наоборот по умолчанию лепит общий контекст и чтобы добиться от него нормальной изоляции нужно поебаться (хотя я его давно не касался, а фреймворк развивается, так что может там это уже и не так неудобно).
Аноним 29/09/23 Птн 22:32:23 #129 №2860348 
изображение.png
Всем привет. Написал код, который должен отправлять видео по кусочкам, но он не работает. Загружает небольшой кусок видео, а потом всё. При этом выдаёт ошибки как на скрине. Помогите, пожалуйста, понять что тут не так.
Код: https://pastebin.com/iFVSV3tr
Аноним 29/09/23 Птн 22:50:24 #130 №2860359 
>>2860210
потому что новые фичи не перекроют детские болезни
ибо совместимость.
пхп это как уродец в семье жавистов
вроде похож на жаву но урод

фрактал плохого дизайна не устарел и не устареет.

представь язык где 500+ функций в глобальном пространстве,
где полный раздолбай что функция принимает (а некоторым нужно передавать по ссылке), что возвращает.
Исключение ни одна функция из этих тебе не кинет конечно - проверяй возврат функции и потом доставай код ошибки и сообщение вручную.
Сверху еще накинь автокаст в число,
отсуствие вменяемых структур (хочешь HashSet? а хер тебе. делай словарь с ключ тебе нужным и значением ну пусть bool (не дай бог не null ибо тогда получишь проблему с isset, которая какого то хера делает больше чем array_key_exists, но работает в 300 раз быстрее.
Ну можешь взять Db/Set. но это pecl, то есть у тебя в дистре должен быть нужная dll с этим и включено в php.ini....)
тайп хинтинг убогий до сих пор. на питон бы посмтрели.
Аноним 29/09/23 Птн 23:21:57 #131 №2860380 
>>2860359
> Исключение ни одна функция из этих тебе не кинет конечно - проверяй возврат функции и потом доставай код ошибки и сообщение вручную
Гоферы недоумевают, глядя на это заявление.
Аноним 29/09/23 Птн 23:40:58 #132 №2860392 
шарпаны, хочу чтобы шаренный проект тащился в билд только в определенной конфигурации, это возможно вообще сделать?
Аноним 29/09/23 Птн 23:48:14 #133 №2860395 
>>2860392
Возможно.
Аноним 30/09/23 Суб 00:01:20 #134 №2860403 
.png
.png
>>2860348
Короче. Из твоего кода нихрена не понятно.
Аноним 30/09/23 Суб 00:42:48 #135 №2860418 
>>2860403
>>2860348
Аааа. Я понял. Ты типа Partial content хочешь имплементировать. Тупанул. Тупанул.
Так у тебя не по спекам

https://www.rfc-editor.org/rfc/rfc9110#name-range-requests
https://www.rfc-editor.org/rfc/rfc9110#status.206
Аноним 30/09/23 Суб 01:21:34 #136 №2860432 
>>2860395
как это сделать?
Аноним 30/09/23 Суб 07:21:04 #137 №2860471 
>>2860359
Мне на это всё похуй, потому что я пишу не на менее уёбищном джаваскрипте, понимаешь? Я просто хочу работать и получать удовольствие.
Аноним 30/09/23 Суб 11:38:24 #138 №2860575 
>>2860380
ты сравниваешь несравнимое
в пхп у тебя функция может вернуть -1, false, null или вообще ничего
при этом у тебя в языке есть исключения и они используются, а значит ты будешь вручную доставать "что там за ошибка и превращать в исключения"

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

>>2860471
в жс много WTF с типами, но вот таких все равно нет. В частности работа с ошибками там унифицирована
Аноним 30/09/23 Суб 14:18:24 #139 №2860785 
1696072698089.jpg
Здравствуйте. Скажите пожалуйста, есть смысл осваивать Шарп только ради геймдева? Если говорить как есть, то я сначала выбрал Яву, чтобы потом мобильные приложения делать. Однако сомнения появились насколько это мне это интересно будет в дальнейшем. И вот я посмотрел в чем разработка мобильных игр ведётся, что используется и решил у вас спросить. Даже если не получится с юнити, то где ещё сишарп можно использовать?

Вообще, если говорить про тяготы выбора и неуверенность, то у меня второго шанса не будет, в том плане что возраст уже не будет позволять заново переучиваться.
Аноним 30/09/23 Суб 14:30:19 #140 №2860796 
>>2860785
>Скажите пожалуйста, есть смысл осваивать Шарп только ради геймдева?
Геймдев, это вообще в первую очередь не про язык.
>Даже если не получится с юнити, то где ещё сишарп можно использовать?
Еще есть Godot, есть XNA (или во что оно там сейчас мутировало), есть еще куча всякой полудохлой мелочи и отдельных библиотек позволяющих без движка геймдевить.
>в том плане что возраст уже не будет позволять заново переучиваться.
И сколько тебе лет? Просто интересно во сколько люди себя уже хоронят?
Аноним 30/09/23 Суб 14:34:13 #141 №2860802 
2023-09-3014-32-02.png
Почему при использовании dynamic студия меня заебывает сообщением:
Функция "Основные моменты документа" сейчас недоступна из-за внутренней ошибки. Показать трассировку стека
Аноним 30/09/23 Суб 14:52:05 #142 №2860824 
2023-09-3014-31-43.png
>>2860802
Аноним 30/09/23 Суб 15:23:11 #143 №2860854 
>>2860802
зачем тебе вообще динамик. Ни разу не использовал в впф
да и в общем то где либо. Крайне редко когда без него не обойтись.
Аноним 30/09/23 Суб 15:50:54 #144 №2860887 
>>2860418
Спасибо за ответы. То есть у меня проблема в http заголовках, я правильно понял? А вариант через asp core я уже готовый нашёл, но я хочу сам сделать через TcpListener
Аноним 30/09/23 Суб 16:00:59 #145 №2860904 
Я что-то не так делаю? Когда я пишу конфигурацию сущности в OnModelCreating, всё работает. Когда я переношу её в IEntityTypeConfiguration, ничего не работает.
Как можно проверить, применилась ли конфигурация? Метаданные у сущности какие-то получить?
Аноним 30/09/23 Суб 16:02:18 #146 №2860907 
>>2860904
> Как можно проверить, применилась ли конфигурация?
Создать миграцию, не благодари.
Аноним 30/09/23 Суб 16:13:27 #147 №2860918 
А что мне миграция сделает? Как она мне отобразит HasMany?
Аноним 30/09/23 Суб 16:19:48 #148 №2860927 
>>2860918
В миграции можно увидеть сгенерированный sql код
Аноним 30/09/23 Суб 16:36:21 #149 №2860945 
>>2860904
>Я что-то не так делаю? Когда я пишу конфигурацию сущности в OnModelCreating, всё работает. Когда я переношу её в IEntityTypeConfiguration, ничего не работает.
Так а в OnModelCreating ты как её апплаишь? Сама по себе она же не добавиться и не примениться.
Аноним 30/09/23 Суб 16:42:53 #150 №2860950 
>>2860945
>ться
Сорян, я безграмотное быдло.
Аноним 30/09/23 Суб 16:46:17 #151 №2860954 
Хм. Она применяется. Если я комментирую [EntityTypeConfiguration] или ApplyConfigurationsFromAssembly(), но оставляю остальной код в OnModelCreating, то всё работает. Если я ТОТ ЖЕ КОД, скопированный в IEntityTypeConfiguration, применяю как конфигурацию - запросы к базе превращаются в тыкву.
Аноним 30/09/23 Суб 16:59:44 #152 №2860969 
>>2860954
>ApplyConfigurationsFromAssembly()
Ты можешь поставить точку останова после Apply и посмотреть в дебаггере, что попало в ModelBuilder при первом обращении к контексту и его построении.
Либо в самих классах IEntityTypeConfiguration в Configure поставить точку останова и там посмотреть заходит ли вообще код туда при построении контекста.
Ну и выше тебе правильно говорили - сгенерируй миграцию. Если конфигурация действительно не применяется ты увидишь в ней код, который дропает, то что ты вынес из OnModelCreating.
---
Ну и опять же покажи код, как было и как стало, чтобы увидеть.
Аноним 30/09/23 Суб 17:28:51 #153 №2861006 
>>2860854
>зачем тебе вообще динамик.
В конвертере, собсно скрин >>2860802 . Он умножает значение привязываемого свойства на значение ConverterParameter.

Но для разных типов (по подобию перегрузок) придется делать кучу конвертеров. А если учесть, что оператанд А и операнд Б могут иметь разные типы, то вообще ужас.
Аноним 30/09/23 Суб 18:43:12 #154 №2861188 
>>2860335

Это ты про IClassFixture и ICollectionFixture?
В NUnit вроде такого нет.
Аноним 30/09/23 Суб 19:17:36 #155 №2861237 
>>2860969
Хм. Дебаг чем-то помог. Я увидел странный FK с пометкой Shadow Required FK Index. То есть он мне создаёт теневое свойство, и создаёт его криво... но только если я не использую OnModelCreating.
Аноним 30/09/23 Суб 19:34:29 #156 №2861270 
О, я даже баг нашёл на эту тему - https://github.com/dotnet/efcore/issues/26814
Аноним 30/09/23 Суб 20:06:20 #157 №2861337 
А ещё я сосу хуи.
Аноним 30/09/23 Суб 20:26:25 #158 №2861371 
>>2861337
Джавист, ты?
Аноним 30/09/23 Суб 20:40:44 #159 №2861398 
>>2861371
Я.
Аноним 30/09/23 Суб 21:19:46 #160 №2861462 
.png
Анончик-анончик.
Пытаюсь накидать протокол для пет-проекта RPC-сервера.
Пока что вот это накидал.

Что не так? Что не учел?
Аноним 30/09/23 Суб 23:18:58 #161 №2861625 
Зачем в ValueConverter есть ConverterParameter? Если:
1) в конвертере можно создать свойство нужного типа, а не object, который провоцирует аллокации.
2) оно не является Bindable, к нему ничего не привязать даже — нужно из тех же ресурсов тащить значение, которое нужно еще и создать.

Очевидно же, что вариант:

<UserControl.Resources>
. . . <vc:MyConverter x:Key="MyCnv" VerticalAlignment=Bottom />
</UserControl.Resources>

<TextBox Text="{Binding Value, Converter={StaticResource MyCnv}}" />


Куда чище, чем это:

<UserControl.Resources>
. . . <VerticalAlignment x:Key="AlignmentY">Bottom</VerticalAlignment>
. . . <vc:MyConverter x:Key="MyCnv" />
</UserControl.Resources>

<TextBox Text="{Binding Value,
. . . . . . . . . . . . Converter={StaticResource MyCnv},
. . . . . . . . . . . . ConverterParameter={StaticResource AlignmentY}}" />
Аноним 30/09/23 Суб 23:56:27 #162 №2861649 
Ситуация:
Есть NGINX как реверспрокси. Есть фронтенд на ангуляре, есть пяток микросервисов с web-api, среди которых - сервис авторизации.

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

Проблема. Как это правильно делать в ситуации выше?

Я просто чет не понимаю как связать Nginx с фронтендом с беком и апишкой в данном случае. Пока что я нафигачил говняк на MVC который поверх веб-апишного проекта исключительно для формы восстановления пароля. Но мне не нравится такое решение. Типа как-то оно чужеродно смотрится.
Аноним 01/10/23 Вск 14:09:43 #163 №2862044 
>>2851659
Почему бы не использовать nlog?
Аноним 01/10/23 Вск 14:23:37 #164 №2862057 
>>2862044
Потому что шиз-велосипедостроитель.
Хотя nlog - говнина, серилог пизже.
Аноним 01/10/23 Вск 14:26:21 #165 №2862059 
>>2862057
Фломастеры.
Нлог сильно удобнее в настройке чем серилог
Аноним 02/10/23 Пнд 13:30:06 #166 №2863300 
>>2860335

Как в XUnit реализовать глобальный конфиг для всех тестов, например настройка культуры
Аноним 02/10/23 Пнд 16:48:09 #167 №2863568 
>>2862059
>Нлог сильно удобнее в настройке чем серилог
Двачую этого, серилог не юзабельное говно.
Аноним 02/10/23 Пнд 18:42:25 #168 №2863713 
Вопрос.
Вот допустим, я запилил свой диспечер сообщений на рефлексии.
Проблема. Работает оно медленнее намного, чем если бы я просто свичом хуйнул.
Удобство добавлять новые обработчики - это хорошо. Но вот как-бы так сделать, чтобы после того как приложуха собралась запустилась и просканила сборки - заменить эту вот динамическую диспечеризацию на этот самый свич?
Кто-нибудь такое делал? Кто шарит?

Ну. Т.е. чтобы было понятно.

Вот у меня есть магический атрибут : Endpoint("Device/Ping", Auth.None);
Вуду магией я делаю так, чтобы сообщение попало в этот эндпоинт.

Но хочу я, чтобы после того как просканировал сборку, было так:

switch(MessageType){
case "Device/Ping" : context.SetHandler(new PingHandler(...)); break;
case "Device/Pong" : context.SetHandler(new PongHandler(...)); break;
case "Device/DestroyBase" :
if(context.Auth.Allow("DestroyBase")){
context.SatHandler(new DestryBaseHandler(...));
} else{
throw new AurhRequiredException();
}
break;
}
Аноним 02/10/23 Пнд 19:10:31 #169 №2863739 
>>2863713
хз че за свитч. Просто сканишь сборку на аттрибуты, находишь что тебе нужно, разбираешь че как и создаешь caller- методы. и далее код который по нужной тебе строке найдет нужный caller и вызовет (возможно попутно сделав биндинг). И сделать такое ты можешь как и через рефлексию, так и новомодные соурс генераторы.
Аноним 02/10/23 Пнд 19:24:57 #170 №2863760 
>>2863739
Ты не понял.
То что ты предлагаешь - это и есть то что я назвал диспечеризацией через рефлексию.
Но мне надо чтобы после того как я уже вытащил из сборки нужные обработичики и понял куда там собираются обращаться - генерировался новый класс, который бы вместо рефлексии содержал свич, который по замерам работает раз в 150-500 быстрее чем последующий поиск обработчиков и их вызов из делегатов.
Аноним 02/10/23 Пнд 19:33:09 #171 №2863770 
>>2863760
это ты не понял.
скорость поиска обработчика в любом случае будет одинаковая (если у тебя не кривые руки) - ведь свитч можно заменить поиском по словарю, а вся метаинфа для твоего if(allow лежит рядом с обработчиком и заранее приготовлена, так что тоже быстрое
у тебя долгий вызов делегата - так сделай его быстрым

конечно ты можешь сделать и через кодогенерацию сгенерив любой класс по желанию. И в нем может быть гигантский свитч, но троллебус-буханка.жпг
Аноним 02/10/23 Пнд 19:50:08 #172 №2863793 
>>2863770
> скорость поиска обработчика в любом случае будет одинаковая
Ну не знаю. Вот что свичем нагенерировалось.

Program:Main():
push rbp
mov rbp, rsp
call [System.Console:ReadLine():System.String]
test rax, rax
je G_M27646_IG15
mov edi, dword ptr [rax+08H]
cmp edi, 1
jne SHORT G_M27646_IG07
xor esi, esi
cmp word ptr [rax+0CH], 49
sete sil
test sil, sil
je SHORT G_M27646_IG07
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
pop rbp
tail.jmp [System.Console:WriteLine(System.String)]
G_M27646_IG07:
cmp edi, 1
jne SHORT G_M27646_IG11
xor esi, esi
cmp word ptr [rax+0CH], 50
sete sil
test sil, sil
je SHORT G_M27646_IG11
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
pop rbp
tail.jmp [System.Console:WriteLine(System.String)]
G_M27646_IG11:
cmp edi, 1
jne SHORT G_M27646_IG15
xor edi, edi
cmp word ptr [rax+0CH], 51
sete dil
test dil, dil
je SHORT G_M27646_IG15
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
pop rbp
tail.jmp [System.Console:WriteLine(System.String)]
G_M27646_IG15:
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
pop rbp
tail.jmp [System.Console:WriteLine(System.String)]

Program:Do1():
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
tail.jmp [System.Console:WriteLine(System.String)]

Program:Do2():
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
tail.jmp [System.Console:WriteLine(System.String)]

Program:Do3():
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
tail.jmp [System.Console:WriteLine(System.String)]

Program:DefaultHandler():
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
tail.jmp [System.Console:WriteLine(System.String)]


Против того что со словарем

Program:Main():
G_M27646_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+20H]
G_M27646_IG02:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2[System.String,System.Action]
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, gword ptr [rbx+18H]
call [System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String]]
test rax, rax
je SHORT G_M27646_IG04
G_M27646_IG03:
lea rdi, bword ptr [rbx+18H]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
G_M27646_IG04:
mov rdi, 0xD1FFAB1E ; data for <>O:<0>__Do1
mov rdx, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; string handle
mov r14, gword ptr [rdi]
test rdx, rdx
jne SHORT G_M27646_IG06
G_M27646_IG05:
mov rdi, 0xD1FFAB1E ; System.Action
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+08H]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; function address
mov qword ptr [r15+18H], rdi
mov rdi, 0xD1FFAB1E ; code for Program:Do1
mov qword ptr [r15+20H], rdi
mov rdi, 0xD1FFAB1E ; data for <>O:<0>__Do1
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdx, r15
G_M27646_IG06:
mov rdi, rbx
mov rsi, r14
mov ecx, 1
call [System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):bool:this]
mov rdi, 0xD1FFAB1E ; data for <>O:<1>__Do2
mov rdx, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; string handle
mov r14, gword ptr [rdi]
test rdx, rdx
jne SHORT G_M27646_IG08
G_M27646_IG07:
mov rdi, 0xD1FFAB1E ; System.Action
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+08H]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; function address
mov qword ptr [r15+18H], rdi
mov rdi, 0xD1FFAB1E ; code for Program:Do2
mov qword ptr [r15+20H], rdi
mov rdi, 0xD1FFAB1E ; data for <>O:<1>__Do2
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdx, r15
G_M27646_IG08:
mov rdi, rbx
mov rsi, r14
mov ecx, 1
call [System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):bool:this]
mov rdi, 0xD1FFAB1E ; data for <>O:<2>__Do3
mov rdx, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; string handle
mov r14, gword ptr [rdi]
test rdx, rdx
jne SHORT G_M27646_IG10
G_M27646_IG09:
mov rdi, 0xD1FFAB1E ; System.Action
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+08H]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; function address
mov qword ptr [r15+18H], rdi
mov rdi, 0xD1FFAB1E ; code for Program:Do3
mov qword ptr [r15+20H], rdi
mov rdi, 0xD1FFAB1E ; data for <>O:<2>__Do3
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdx, r15
G_M27646_IG10:
mov rdi, rbx
mov rsi, r14
mov ecx, 1
call [System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):bool:this]
call [System.Console:ReadLine():System.String]
mov rsi, rax
mov rdi, rbx
call [System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this]
test rax, rax
je SHORT G_M27646_IG15
G_M27646_IG11:
mov rax, gword ptr [rax]
mov edi, 1
G_M27646_IG12:
test edi, edi
je SHORT G_M27646_IG16
G_M27646_IG13:
mov rdi, gword ptr [rax+08H]
call [rax+18H]System.Action:Invoke():this
nop
G_M27646_IG14:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
G_M27646_IG15:
xor rax, rax
xor edi, edi
jmp SHORT G_M27646_IG12
G_M27646_IG16:
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
call [System.Console:WriteLine(System.String)]
nop
G_M27646_IG17:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret

Program:Do1():
G_M1167_IG01:
G_M1167_IG02:
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
G_M1167_IG03:
tail.jmp [System.Console:WriteLine(System.String)]

Program:Do2():
G_M2188_IG01:
G_M2188_IG02:
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
G_M2188_IG03:
tail.jmp [System.Console:WriteLine(System.String)]

Program:Do3():
G_M64525_IG01:
G_M64525_IG02:
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
G_M64525_IG03:
tail.jmp [System.Console:WriteLine(System.String)]

Program:DefaultHandler():
G_M58470_IG01:
G_M58470_IG02:
mov rdi, 0xD1FFAB1E ; string handle
mov rdi, gword ptr [rdi]
G_M58470_IG03:
tail.jmp [System.Console:WriteLine(System.String)]
Аноним 02/10/23 Пнд 19:56:42 #173 №2863804 
Ты что пацак что ли? откуда такое желание экономить на кц?
У тебя в коде использований словарей и так 100500. Нашел где экономить.
Аноним 02/10/23 Пнд 20:00:56 #174 №2863808 
>>2863804
Сервер где моя приложуха стоит - не соответствует минимальным требованиям, и меня ебут, дескать я говно сделал.
Я говорю, блядь, у вас сервер 2004 года, какой неткор последний. Мне говорят - не ебет, делай чтобы летало, а то на мороз отправим.
(((

На мороз не хочу. Только родители перестали ебать мозги, что денег в дом не приношу. Так что надо на всем экономить...
Аноним 03/10/23 Втр 01:59:30 #175 №2864152 
>>2863808
>Мне говорят - не ебет, делай чтобы летало, а то на мороз отправим.
1) На тоненького пытаются взять. Более мощный сервак будет всяко дешевле, чем все головняки связнные с твоим увольнением и наймом кого-нибудь другого.
2) Я бы в любом случае съебал из такой конторы и нашел другую работу.
Аноним 03/10/23 Втр 02:04:27 #176 №2864154 
>>2863808
Алсо, если же все-таки за забор не вариант, то я бы на твоем месте просто хардкодил, забыв на время про удобство и забив хуй на поддерживаемость.
Аноним 03/10/23 Втр 03:01:52 #177 №2864160 
>>2864152
>Более мощный сервак будет всяко дешевле, чем все головняки связнные с твоим увольнением и наймом кого-нибудь другого.
Ты явно не сталкивался с ру бизнесом где похер на деньги, это дело принципа, чел пойдет на мороз даже если проект пойдет по пи... особенно если ИТ это не основная деятельность компании
а все потому что по аналитике роста в РФ по ИТ нет и не будет, тупо нет рынка кому этот ИТ может быть нужен, а значит можно диктовать свои условия

>Я бы в любом случае съебал из такой конторы и нашел другую работу.
А есть варианты? Просто рынок максимально ужался для спецов за норм деньги, кредитно-ипотечные хомяки готовы за половину своей цены работать и радоваться что могут это делать
у меня вот резюме висит под минимальный мой прайс (30 баксов в час), так все меня хотят за 10-20, что смешно потому что я работал в компании где мне платили 80 баксов в час и радовались, потому что аутсорс решение моих задач им выходили в эти 80 - 150 бачей в час с более худшим результатом

так что чуваку профилировщик в руки и пусть смотрит вначале на то что дрючит его GC и оптимизирует там... а так же изучает как оптимизировать работу так чтобы вообще память на стеке выделять чтобы GC вообще сервак не трогал, потому что по моему опыту большая часть работы это GC
Аноним 03/10/23 Втр 17:45:50 #178 №2864911 
илдайверы, тут?
NOP это же дебажный опкод?
Аноним 03/10/23 Втр 21:50:10 #179 №2865162 
>>2864911
Почему это?
Ну. Т.е. я не знаю как у майков в CIL, но если брать обычные ассемблеры - то там NOP - используется как - ниче не делать.
Аноним 03/10/23 Втр 23:20:51 #180 №2865226 
Натянул.mp4
Аноним 03/10/23 Втр 23:50:05 #181 №2865240 
>>2865162
тогда я не понимаю почему он сует мне NOP в начале метода в дебаг сборке, а в релизной - нет нихуя
Аноним 04/10/23 Срд 01:29:15 #182 №2865282 
По твоей логике и string — это дебажный тип данных, потому что он используется в параметрах Debug.WriteLine()
Аноним 04/10/23 Срд 01:29:38 #183 №2865283 
>>2865240
>>2865282
Аноним 04/10/23 Срд 05:40:01 #184 №2865318 
>>2865240
NOP-ы в debug сборке - это места куда дебаггер брекпоинты вставляет. Плюс еще для некоторых штук. Рихтера покури, у него есть об этом.
Аноним 04/10/23 Срд 06:47:45 #185 №2865326 
Смотритет.
Есть код вида:

static object syncRoot = new();
void RegisterUser(ApplicationDbContext db, string userName, string userType, string userName, string email){

lock(syncRoot){

var type = db.GetOrCreateUserType(userType);

var userNumber1 = db.Users.GetNextUserNumber1();

var userNumber2 = db.Users.GetNextUserNumber2();

var userSlot = db.Users.GetFreeSlot();

db.Users.Add(new User{
Name = userName,
Email = email,
TypeId = type,
Num1 = userNumber1,
Num2 = userNumber2,
Slot = userSlot;
})
db.SaveChanges();

}

}

Суть в чем. В Таблице пользователей - есть 3 колонки.
Num1 - идентификатор используемый сторонней системой для вытаскивания инфы о юзерах, по соглашению - это должно быть число от 0 до 2^32-1, дырок быть не должно, система обращается ко мне и с 0 до первого -1 "читает".
Num2 - аналогично Num1 но для другой системы.
Slot - число от 0 до 2^64-1 - уже мой идентификатор для того чтобы сервер "общался" с юзерами. Тоже дырок быть не должно.

Собственно методы GetNextUserNumber1, GetNextUserNumber2 и GetFreeSlot - лезут в базу, ищут "дырки"(ака gap). Если находят - смещают номера пока дырок не останется. Потом - регистрируется пользователь.

И да. Вроде ебануто. Но все как-бы работало нормально. До недавнего времени. Недавно внезапно возрасла нагрузка и этих пользователей стало разом регистрироваться по 10к в день. А метод RegisterUser выполняется целую секунду. Думаю понимаете, какой пиздец наступает, если разом хотя бы 1к решает зарегаться.

Вот и мне интересно. А как какать мне что-то сделать с этой вот хуйней? Медленность этого дела - меня тревожит и раздражает. А как сделать чтобы быстро было и те вот требования с отсутствием дырок - так же остались выполнены.
Аноним 04/10/23 Срд 13:36:29 #186 №2865600 
2023-10-0413-30-07.png
Каким образом вижуал студия биндит Margin отдельно по стороне в каждый текстбокс, если свойства Thickness не являются DP или INPC? Что за чудо такое?
Аноним 04/10/23 Срд 14:18:45 #187 №2865655 
>>2865326
>А как сделать чтобы быстро было и те вот требования с отсутствием дырок - так же остались выполнены.
1) Может стоит сначала разобраться откуда эти дыры там берутся и заполнять их конкретно в те самые моменты, а не когда регается новый ползователь?
2) Как вариант батчить регистрацию пользователей. Т.е. закрывать дыры не при регистрации каждого пользователя, а сначала закрыть гэпы, а потом сразу пачкой регать всех кто пришел за определенный интервал времени.
3) Зачем вообще нужны такие ебанутые правила для идентификаторов?
Аноним 04/10/23 Срд 15:01:58 #188 №2865732 
>>2865600
Всегда все можно сделать ручками. Не говоря уже про конверторы
Аноним 04/10/23 Срд 15:09:52 #189 №2865740 
>>2865732
>Всегда все можно сделать ручками.
как?

>Не говоря уже про конверторы
как? у тебя ConverterBack не отработает.
Предположим, что конвертер обрабатывает Thickness.Top.

В методе Converter в параметр value приходит Thickness целиком. Мы можем возвратить необходимую нам часть:
return ((Thickness)value).Top;

В методе ConverterBack в параметр value приходит только значение Thickness.Top, а у нас нет данных Thickness.Left, Thickness.Right, Thickness.Bottom.
Аноним 04/10/23 Срд 15:18:50 #190 №2865751 
>>2865732
>Всегда все можно сделать ручками.
Думаешь к каждому окну свойств привязан индус, который вручную заполняет окошки?
Аноним 04/10/23 Срд 15:27:25 #191 №2865758 
>>2865740
>как?
ручками можно что угодно. Никто подход "работаем как в винформс" не отменял. Можно спокойно создать вьюху какую угодно, потом смотреть есть ли у объекта проперти нужного типа, и, если есть, то вывести эту вьюху. Далее вручную ловить изменения INPC (или еще как отслеживать) и обновлять вьюху как угодно, аналогично ловить изменения вьюхи и обновлять source как угодно.
Биндинги делают то же самое, просто они стандартный и весьма ограниченный путь.

>Предположим, что конвертер обрабатывает Thickness.Top.
в конвертер может притопать и весь объект даже, а там уже разрулить на месте кто кому (это легко, можно создать 4 конвертера или же 1 и в конвертерпараметер указать что там за значение ходит).
Также вьюха может выставить наружу одно депенденси свойство Thickness которое само будет разруливать все преобразования, а внутри контрола старые добрые события Text = и TextChanged

внутри кастомных изолированных контролов может быть до 100% code-behind и это нормально.

>>2865751
думаешь на винформсах есть система биндингов нормальная (ну щас то что то есть но не знаю что)? А пропертигриды были всегда
Аноним 04/10/23 Срд 16:14:28 #192 №2865819 
>>2865758
>Также вьюха может выставить наружу одно депенденси свойство Thickness
В моем случае не может. Я должен это разрулить в DataTemplate, который находится в словаре ресурсов.
Грубо говоря, в таблицу DataGrid приходит итем типа Thickness, далее DataTemplateSelector подбирает нужный DataTemplate, в котором я должен забиндиться к свойствам Thickness.

>в конвертер может притопать и весь объект даже
У тебя в ConverterBack приходят данные с условного тексбокса, где юзер ввел число 30. Схуев туда "может" придти весь объект? Непорочным зачатием он там появится? Всё, данные утеряны на этапе конвертации из вьюмодели в текст бокс.

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

Мне приходила в мысль создать UIElement в качестве посредника, но это костыль какой-то.
Аноним 04/10/23 Срд 17:40:00 #193 №2865963 
>>2865819
>В моем случае не может
Надо меньше пачкаться. И вообще, некоторые языком умываются (c)
В твоем DataTemplate находится вьюха, которая царь во дворца - у нее свой code-behind, доступны атачедпроперти (это свои code behind-ы), то есть полная свобода и наличие/отсутствие DataTemplate вообще не причем.

>Непорочным зачатием он там появится
подозреваю, это я тебе показывал как в конвертере использовать dp наследованием от фризабле. Ну как бы - вот. Передаешь в такой конвертер объект (хоть дата контекст) и конвертпараметром уточняешь что конкретно ты хочешь конвертить. Как маркупрасширение не выйдет, но обычным путем через "конвертер в ресурсах" все работает (только не в ресурсах дататемплате, а то биндинг там не виден, а уровнем чуть пониже)

>Я не верю, что вижуал студия не решила этот момент цивилизованным путем
вьюха выставляющая наружу свойство и внутри себя уже пофиг как - вполне себе нормальный путь. И обычно все пропертигрид разруливаются в коде, а ему нет проблем решить проблему "что-то там не биндится"
Аноним 04/10/23 Срд 17:43:29 #194 №2865974 
>>2865819
похоже у тебя болезнь "code-behind злющее зло и когда я использую code-behind, то бог убивает котенка"

Не нужно с таким упорством пытаться разрулить все декларативщиной. Она не всесильна. С ней бы я до сих по бы парился как забиндить SelectedItem.
К тому же атачепропы это чистый code-behind и норма же.
Аноним 04/10/23 Срд 17:51:24 #195 №2865984 
То ли дело Винформы.
Аноним 04/10/23 Срд 18:35:10 #196 №2866059 
>>2865963
>подозреваю, это я тебе показывал как в конвертере использовать dp наследованием от фризабле. Ну как бы - вот.

Я пытался такое провернуть. Если я начну биндиться из ресурсов, то у меня происходит странная хрень — изменения привносит только первый объект в списке похожих. Все остальные как будто бы не биндятся. Это при том, что ресурс я инициализировал локально в DataTemplate.

Пока не понял почему.
Аноним 04/10/23 Срд 19:35:01 #197 №2866130 
>>2865655
> 1) Может стоит сначала разобраться откуда эти дыры там берутся и заполнять их конкретно в те самые моменты, а не когда регается новый ползователь?
Эти дыры могут взяться, если 1. Импортить пользователей. 2. Удалить пользователя руками.

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

> Зачем вообще нужны такие ебанутые правила для идентификаторов?
Требования интеграции со сторонним ПО + требования к самому ПО, чтобы уже родное ПО - могло просто в цикле от 0 до n пройтись и чет там с пользователями сделать. Т.е. просто - один запрос - дай мне данные этого пользователя - нету, все, закончили. Если тут дырки - нужно более сложный протокол придумывать, в духе: А дай мне спиосок всех пользователей, а дай мне айДи следующего и прочее, что нагрузка на сеть и вообще не оч хорошо.
Аноним 04/10/23 Срд 20:07:26 #198 №2866166 
Может кто нибудь объяснить, почему при каждом новом запуске приложения, порядок перебора ресурсов в ResourceDictionary все время разный?

var n = new ResourceDictionary() { Source = new Uri("<путь к словарю>") };
foreach (DictionaryEntry entry in n) {
Debug.WriteLine(entry.Key);
}

Самое интересное, что если сделать копию словаря под другим именем, то порядок его элементов будет совпадать с копией. Даже при десериализации.
Аноним 04/10/23 Срд 20:32:06 #199 №2866219 
>>2865984
База...
Аноним 04/10/23 Срд 20:58:20 #200 №2866250 
>>2866166
Ссылка на тестовый проект
https://dropmefiles.com/hLJ8h
Пароль: 123
Аноним 04/10/23 Срд 22:16:21 #201 №2866352 
TestSortDataGrid.webm
А вот еще одна загадка.
Есть DataGrid и ItemsControl. Оба в качестве итемс соурс используют один источник данных. Когда нажимаю на хидер для сортировки столбца DataGrid, за каким-то фигом еще и сортируется список в ItemsControl.

Разве сортировка столбцов не должна осуществляться где-то внутри таблицы не затрагивая источник?

https://dropmefiles.com/xvB0L
Аноним 04/10/23 Срд 23:13:05 #202 №2866416 
>>2866352
ты знал куда шел

А вообще если CollectionViewsource.GetDefaultview примнить к источнику то он к нему и цепляется, а не проксирует. Видимо датагрид это делает внутри себя
Аноним 05/10/23 Чтв 13:14:30 #203 №2866969 
Как нищук купил себе бумажный справочник c# 6.0 албахари с рук, сильно ли устарел или потом можно добрать знаний из современного? Изучаю для себя чтобы потом в юнити делать игорь.
Аноним 05/10/23 Чтв 13:16:07 #204 №2866972 
>>2866969
> нищук
> купил себе бумажный справочник
Пиздец ты зажрался.
Аноним 05/10/23 Чтв 13:19:10 #205 №2866977 
>>2866972
За 600р запаную теперь, а то в монитор пялиться и так неск книг открыто.
Аноним 05/10/23 Чтв 17:01:15 #206 №2867393 
>>2866977
Я за 2к купил себе еще один монитор. Ты рили зажрался.
Ctrl + F не сравнится с перелистыванием страниц.
Аноним 05/10/23 Чтв 20:21:11 #207 №2867620 
>>2866969
>c# 6.0
Не чувак. Слишком старое. Базу ты может и выучишь, но прямо совсем такое себе. Найди хотя бы по 7-му.
Аноним 06/10/23 Птн 10:18:05 #208 №2868004 
Здаров, обшарпанные! Есть вопрос по асп. Нужно что бы контроллер получал в запросе данные, передавал их дальше в отработку и не дожидаясь окончания обработки отвечал Ok() понял принял получил занимаюсь. Сейчас у меня сделана как-то так:
public class Controller
{
HandlerService _handlerService;

public async Task<IActionResult> Post(Data data)
{
_handlerService.StartHandle(data);
return Ok();
}
}


public class HandlerService
{
DbContext _dbContext;
MoreWorkService _moreWorkService;

public void StartHandle(Data data)
{
Task.Run(() => Handle(data));
}

private async Task Handle(Data data)
{
DbData dbData = _dbContext.DbDatas.FirstOrDefault(x => x.Id == data.Id);
await _moreWorkService.SomeMoreWork(dbData);
}
}

Но в таком варианте при обращении к _dbContext в методе Handle вылетает эксепшен дескать контекст уже задиспожен и не существует. В принципе я даже знаю как это можно обойти создать переменную контекста внутри метода хэндл, но подозреваю что и переменную моворксервиса тоже нужно будет создавать внутри метода но хочу узнать какие ещё есть варианты и лучшие практики для такой задачи
Аноним 06/10/23 Птн 13:11:23 #209 №2868162 
>>2868004
Ладно, кажется я тупой но это не точно Кажется можно сразу в контроллере делать вызов _handlerService.Handle(data) и не эвейтить его и будет норм но все равно хочу почитать как ещё решается такая задача
Аноним 06/10/23 Птн 14:32:32 #210 №2868278 
>>2865963
>подозреваю, это я тебе показывал как в конвертере использовать dp наследованием от фризабле. Ну как бы - вот.

Короче я понял почему, точнее кто виноват - DataGrid.
Очень мутный контрол.

Для ListBox, ListView, ItemsControl отработал ValueConverter, причем без всяких там фризабле и привязок. Дело в том,что метод Convert отрабатывает при любом изменении свойства вьюмодели, соответственно я в этом методе сохраняю в локальное поле конвертера входящее значение value. А ConvertBack я это значение меняю и возращаю обратно свойству вьюмоедли. Никаких привязок не нужно.

Что делать с DataGrid так и не понял. Очень капризный. С ним не работают ни этот ValueConverter, ни DataTemplate. Удалось передать текст из текстбокса только в режиме UpdateSourceTrigger=PropertyChanged.
Сбрасывает DataTemplate при сортировке.

ListView тоже тот еще кадр, пришлось попотеть с восстановлением полноценного стиля с поддержкой GridViewRowPresenter и ContentPresenter.
Аноним 06/10/23 Птн 15:32:30 #211 №2868359 
>>2868278
>Удалось передать текст из текстбокса только в режиме UpdateSourceTrigger=PropertyChanged.
ну если у тебя режим редактирования (для которого конечно свой шаблон), то конечно шаблон исчезает ничего не передав. Не то чтобы это нормально, это просто вот
Аноним 07/10/23 Суб 05:50:03 #212 №2869211 
>>2868278
>Что делать с DataGrid так и не понял.
Ты всё правильно понял, эта параша состоит целиком из магии, пока не узнаешь - не узнаешь. Так что советую с такими проблемами обращаться к нейросетям, они как раз хорошо вытаскивают магическую инфу из помойки которую вручную не разгрести никогда.
Аноним 07/10/23 Суб 08:20:19 #213 №2869247 
Вводные: ef + mssql + вагон миграций
Задача: перенести все это говно на postresql

Кто-нибудь делал такое или может подскажет? Просто взять и дропнуть старые миграции и скриптом перетащить данные из базы в базу нельзя, нужно чтоб работали откаты.
Аноним 07/10/23 Суб 08:57:08 #214 №2869266 
Есть что-то для удобного и кроссплатформенного рисования и анимации 2D примитивов и текстур? SkiaSharp? Какие ещё варианты?
Аноним 07/10/23 Суб 09:01:06 #215 №2869268 
>>2869266
Sixlabors imagesharp
Аноним 07/10/23 Суб 09:20:13 #216 №2869271 
>>2869268
В разы проигрывает по скорости skiasharp
Аноним 07/10/23 Суб 11:50:20 #217 №2869323 
>>2869247
а в чем проблема, ведь ef как раз и нужен чтобы базы менять
мне так постоянно внушали, мол, захотим - базу сменим за секунду.
dapper-кун
Аноним 07/10/23 Суб 12:23:27 #218 №2869340 
>>2869323
Миграции специфичные для t-sql. Я хз можно ли их как-то подружить с провайдером postgre.
> захотим - базу сменим за секунду
Я тоже так думал и частично думаю, просто что-то не учел. Уверенный меняю провайдера, делаю первую миграцию на постгре, получаю шмат говна про несовместимость с mssql провайдером вперемешку с npe. Убрал mssql из нугетов, уже в файлах старых миграций ругается, что нет провайдера. Если дропнуть старые миграции, то все работает без танцев с бубном
Аноним 07/10/23 Суб 19:01:21 #219 №2869682 
>>2868162
>Кажется можно сразу в контроллере делать вызов _handlerService.Handle(data) и не эвейтить его и будет норм
Да.
>как ещё решается такая задача
Если речь идёт о какой-то важной функциональности - по-хорошему через фоновые задачи.
https://learn.microsoft.com/ru-ru/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-7.0&tabs=visual-studio#queued-background-tasks
Аноним 07/10/23 Суб 20:46:25 #220 №2869827 
.jpg
Если кому интересно про >>2865326
Решил ебанутым методом. В фоне - в тихую - заполняю пул нужных мне данных. Потом при регистрации - достаю из пула - и сразу ставлю таску на добавить в пулл новое значение. Таким макаром - если интенсивно нагрузка резко возрастает - это начинает быть заметно только при оч больших нагрузках, а в большинстве случаев - работает быстро.
Костыль, но хз че еще придумать было.
Аноним 08/10/23 Вск 05:49:28 #221 №2870120 
image
Аноним 09/10/23 Пнд 07:57:24 #222 №2871303 
У кого-нибудь было такое, что visual studio багается на копировании? Т.е невозможно скопировать ничего из кода. Замечал на крупных-средних проектах с кучей зависимостей. Наверное анализатор какой-нибудь дохнет и тянет за собой этот баг. Рестарт студии, удаление .vs не помогает. Помогает только убийство всех процессов связанных с ней. Есть какие-нибудь другие варианты это пофиксить? inb4: райдер
Аноним 09/10/23 Пнд 10:17:14 #223 №2871462 
>>2871303
У меня было что-то подобное, но чуть ли не на глобальном уровне — для всех приложений.
Аноним 09/10/23 Пнд 10:22:57 #224 №2871471 
Аноны, правильно ли я понимаю, что если подписка произведена внутри класса на компоненты класса, то диспоз с отпиской не нужен?

Мне нужно внутри вьюмодели знать, что происходит изменение коллекции, но эта коллекция тупо ObservableCollection.
Аноним 09/10/23 Пнд 11:37:10 #225 №2871533 
>>2868004
Когда приходит запрос в контроллер он скидывает его в какую-нибудь очередь обработки, пуляет ОК и все.
А хендлер сервис у тебя крутится в качестве бэкграунд сервиса и мониторит эту очередь. Когда там что-то появляется, он это обрабатывает.
Аноним 09/10/23 Пнд 11:45:22 #226 №2871538 
>>2871303
Лол, у меня тоже такое иногда бывает, только не в студии, а, внимание, в идее.
Аноним 09/10/23 Пнд 11:49:43 #227 №2871545 
>>2869247
Я делал.
Старые миграции дропать однозначно. Перед этим предварительно нужно их все пересмотреть, если там есть ручные доработки, то перенести все это в код сервиса (параллельно переебав тому кто лезет своими грязными руками в генереный код) Если есть какие-нибудь встройки или типы, то переписывать.
БД у тебя разные, поэтому откаты у на те миграции которые были на mssql не будут работать. И в принципе, новая СУБД - новая БД, нехуй тащить за собой хвосты.
Если нужны данные из старой БД, то смотришь, что там за данные.
Если это справочники, то их вносишь в код+конфиги (json, csv) и в миграции через .HasData. Если какие-то регулярные рабочие данные, то переносишь скриптами через ODBC или экспорт-импорт.
Аноним 09/10/23 Пнд 11:54:06 #228 №2871552 
>>2869323
>ведь ef как раз и нужен чтобы базы менять
>мне так постоянно внушали, мол, захотим - базу сменим за секунду.
>dapper-кун
Да, но только если изначально нормально проектируешь приложение. Если нормально делаешь, не лезешь в миграции и БД руками. Тогда все работает просто, в три шага: меняешь провайдера, -> сносишь старые миграции -> генеришь новые. Все.
Если у тебя там кал говна, с кучей raw sql в миграциях и данными добавлеными в БД в обход ORM - тогда ебись.
Аноним 09/10/23 Пнд 12:20:20 #229 №2871582 
>>2871552
>на бумаге в теории работает просто, в три шага: раз, -> два -> три. Все.
>если у тебя реальный рабочий проект - тогда ебись.
Перевел на человеческий язык.
Аноним 09/10/23 Пнд 12:29:03 #230 №2871595 
>>2871582
>>если у тебя реальный рабочий проект - тогда ебись
Не, ну если ты мазохист и тебе охота в говне копаться, то пожалуйста. Но если делать нормально и бить по рукам пидарасов которые делают не нормально, то будет заебись.
Аноним 09/10/23 Пнд 12:42:50 #231 №2871614 
>>2871471
если только твой класс их сам создал и не получил их через конструктор. Тогда подписка удерживает связь компонент-ты, а ты удерживаешь связь ты-компонент. И никто внешний.
Аноним 09/10/23 Пнд 14:46:43 #232 №2871727 
Шарпеи, кто какой библиотекой пользуется для общения с чат гпт по апи? Какая хорошая и безопасная?
Аноним 09/10/23 Пнд 21:31:53 #233 №2872300 
>>2871595
в реальности менять бд нужно 0.000001 раз. мы ж не убер
а вот время старта EF это кабздец просто. Что они там делают блин. почему результат этого нельзя закешировать. Для сервера ладно (хотя для разработки все равно ахтунг), но десктопы - дорого давать секунды на хрень
Аноним 09/10/23 Пнд 22:27:17 #234 №2872414 
>>2872300
>в реальности менять бд нужно 0.000001 раз. мы ж не убер
Мне за два года 5 раз пришлось уже с одной БД на другую переходить.
>а вот время старта EF это кабздец просто. Что они там делают блин. почему результат этого нельзя закешировать.
Там основное время на старте (вернее даже на первом запросе) уходит на построение контекста.
Есть несколько разных трюков как ускорить загрузку. Плюс современный EFCore сам по себе довольно хорошо оптимизирован по сравнению с предыдущими версиями. Так что сейчас "долгое время загрузки" не такое уж и долгое. Многие десктопные приложухи и без EF дохуя долго стартуют, лишние пару секунд погоды не сделают.
Ну и если ты делаешь, что-то легковесное что должно стартовать максимально быстро, то EF там собственно нахуй не нужен, достаточно даппера или еще какой-нибудь мелкой хуйни.
Аноним 09/10/23 Пнд 22:41:59 #235 №2872438 
>>2872414
>Мне за два года 5 раз пришлось уже с одной БД на другую переходить.
сходить бы тебе к психологу. издеваются над ты

>Есть несколько разных трюков как ускорить загрузку
например, взять не EF
собственно об этом ты и говоришь
Аноним 10/10/23 Втр 09:31:11 #236 №2872722 
>>2872438
>сходить бы тебе к психологу. издеваются над ты
Ну что поделать если меня зовут как раз на проекты где нужно разгрести старое дерьмо, выкинуть все ненужное и перевести все на новые рельсы.
Проблема была только один раз на втором проекте когда нужно было переходить с MS на PG. Там было нагажено в миграциях руками и пришлось повозиться, чтобы привести все в порядок. Потом там же понадобилось вернуться обратно на MS, а потом еще раз обратно на PG (издержки выкатывания релизов и не было возможности просто откатить версию) - и это делалось простым переключением провайдера и перегенерированием миграций.
>>2872438
>например, взять не EF
Можно, только на моей памяти прям вот, чтобы были проблемы со скоростью был только один раз и то там дело было не в EF, а в плохом проектировании БД и ебанутых интеграциях, когда приходилось попусту перекачивать данные из одной БД в другие туда-сюда без какого-либо результата. Во всех остальных случаях все спокойно укладывалось в SLA с многократным запасом и вопрос использования какой-либо другой ORM даже не поднимался.
Аноним 10/10/23 Втр 13:32:36 #237 №2873010 
Остро видящие, а что вообще такое application pool на иис? Зачем там разделение на пул и сайт? Почему на других серверах обходятся без этого? Где можно конкретнее почитать про пулы, если есть подозрение, что одно легаси приложение на нетфреймверке переодически падает в аутофиемори именно из-за пула
Аноним 10/10/23 Втр 20:08:42 #238 №2873708 
>>2873010
>что вообще такое application pool на иис
По сути песочница.
>есть подозрение, что одно легаси приложение на нетфреймверке переодически падает в аутофиемори именно из-за пула
Вряд ли. Для этого у тебя должен быть максимально дохлый сервер, либо что более вероятно - лютый говнокод.
Но, технически, там есть квоты на память, только я х.з. как их менеджить, т.к. никогда не возникало такой необходимости.
Попробуй ПКМ на нужный пул и выбери "Recycing..." там есть настройки памяти.
Аноним 11/10/23 Срд 01:38:46 #239 №2874091 
Мне с фронта приходит реквест что-то вроде StartNewTestDto, я присваиваю ему guid(один на тест) и шлю с ним что-то типа формы для вопроса из теста. Потом юзер проходит вопрос, я в другом методе получаю его ответ и в зависимости от него формирую следующий и так пока тест не закончится. Структура теста не линейная и это все без аутентификации. Нужно отличать пользователей и забывать их если тест пройден.
Вопрос. Как мне лучше всего запоминать юзеров, эти guid. Хранить какой-нибудь словарь прямо в контроллере? Может редисом кешировать guid? Или копать в сторону сессий? Без баз данных, наверное даже какой-нибудь ef inmemory тут лишний. С другой стороны юзер может хоть год открытым держать тест и все должно работать, то есть айди нельзя удалять со временем? А если пользователь закроет браузер, как понять что айди нужно удалить? Доступа к фронту у меня нет и не будет.
Я что то запутался как лучше сделать, не хочу по ебалу потом отхватить.
Аноним 11/10/23 Срд 02:04:42 #240 №2874101 
>>2874091
> Хранить какой-нибудь словарь прямо в контроллере?
Это точно хуйня идея, я не знаю как современный нормальный дотнет, но старый дотнет периодически отваливается нахуй с хрустом с ликвидацией всего что было в памяти. У нас короче он автоматом реанимируется (даже если ничего не делать специально то его будет реанимировать обвязка служб сервера), но при этом всё что было в памяти ку-ку. До того как я внутренности поправил валилось примерно каждые 2-3 часа теперь валится два раза в сутки, но шансы попасть на отвал неиллюзорные.
> Без баз данных
Собственно тут хрестоматийный пример когда именно база данных и нужна.
Чистить скопившийся хлам можно без проблем по крону, на масштабах десятков-сотен тысяч записей канает даже махровый быдлокод, у нас в кроне например есть каждые несколько минут
DECLARE @MIN_DATE DATETIME
SET @MIN_DATE = DATEADD(DAY, -3, GETDATE())
DELETE FROM SOME_LOG(READPAST) WHERE LOG_DATE > @MINDATE
И за такое ничего не было, вполне норм работает. Если у тебя типа десяток запросов на тест в секунду или даже сотня то скорее всего никто не заметит, максимум будет ощущаться как небольшой пролаг.

Редис наверное проканает, но я не вижу преимуществ перед васянкой, тем более она у тебя наверняка уже есть для других целей типа хранения вопросов и.т.п.
Закрытый браузер без фронта точно не отловить.
Аноним 11/10/23 Срд 02:09:39 #241 №2874103 
>>2873010
> легаси приложение на нетфреймверке переодически падает в аутофиемори
Проверь код на предмет new Thread(), спам такой штукой вызывает неожиданные OOM даже если детектится расход памяти типа 150-200 мегабайт.
Аноним 11/10/23 Срд 07:41:33 #242 №2874176 
>>2874101
Может лучше будет использовать сессии? Типа хранить в них guid'ы. Только я не помню, нужно ли там на фронте что-то с ними настроить или оно в любом случае уже работает.
> Собственно тут хрестоматийный пример когда именно база данных и нужна.
Могу наверное заюзать sqlite, с очисткой по крону не должно возникнуть проблем. Но мне кажется, что конкретно под эту задачу оверхед.
Аноним 11/10/23 Срд 11:23:49 #243 №2874326 
>>2874176
>Но мне кажется, что конкретно под эту задачу оверхед.
Почему? Скулайт как раз и создан для того, чтобы по быстрому и компактно хранить всякое говно для которого лень использовать нормальную СУБД. Собственно, почти вся мобильная разработка на ней держится. Вообще охуенная штука.
>Могу наверное заюзать sqlite, с очисткой по крону не должно возникнуть проблем.
Там можно даже тупо не заморачиваться и просто грохать сам файл БД когда данные уже не нужны и пересоздавать его заново.
Аноним 11/10/23 Срд 16:10:02 #244 №2874786 
>>2874326
только не стоит забывать про лок всей базы данных при записи, и особенность работы с этим в шарпе

Если у вас 10 потоков постоянно пишут в базу по 1 записи, то будет вам database locked. Первый поток локнет базу и начнет писать. Второй поток увидит, что база заблокирована и возьмет паузу. За это время первый поток освободит базу и отдаст 3-му потоку. 2ой поток проснется и увидит что база снова заблокирована. И так через получите таймаут database locked

простой семафор решит проблему, но это же уже костыли.
Аноним 11/10/23 Срд 18:31:43 #245 №2875085 
>>2874786
>только не стоит забывать про лок всей базы данных при записи, и особенность работы с этим в шарпе
Бля, у него там юзеры тестики проходят, прям пиздец какой high-load, чтобы о блокировках думать.
Аноним 11/10/23 Срд 18:48:20 #246 №2875122 
>>2875085
Параллельные тесты на одной физ базе могут дать тот же эффект
Конечно лучше создавать базу в памяти на каждый тест, но это время
Аноним 11/10/23 Срд 22:04:51 #247 №2875434 
>>2874326
> Почему?
Хз, тогда казалось, что можно тупо в сессии хранить. Щас думаю сделаю так: в сессии буду хранить guid пользователя, а стейт теста в базе с ключем этим guid. Фронт мне никакой информации о пользователе не шлёт, только данные по конкретному вопросу, т.е его ответ. Я думаю тут кроме сессий или куки никак не идентифицировать его, с бэка я могу только сессии чекать.
Аноним 11/10/23 Срд 22:30:48 #248 №2875447 
>>2875122
>Параллельные тесты на одной физ базе могут дать тот же эффект
Там время на запись будет - доли секунды. Они у тебя даже не пересекутся ни разу.
А даже если у тебя там такие уникумы тесты проходят, что хуячат ответы сотнями одновременнно - ну обернешь в транзакции и все.
Аноним 11/10/23 Срд 23:36:00 #249 №2875552 
>>2875447
не пересекутся да ибо таймаут долгкий
транзакции вообще не причем - если база стала в лок и пришла запись с другого потока, то она не станет в очередь типа ридврайтлок на файл, а "попробую через время".
Аноним 12/10/23 Чтв 00:15:45 #250 №2875576 
>>2874101
что будет если будут нужны логи более чем за 3 дня?
вернее вопрос в другом - у кого жопа будет болеть?)))))
Аноним 12/10/23 Чтв 12:30:24 #251 №2875968 
image.png
Почему так?
Аноним 12/10/23 Чтв 14:21:08 #252 №2876145 
Блин, учу значит сишарп и вижу что какая то новая фишка языка у меня не работает, смотрю версию а у меня 7.3 оказывается. Соответственно вопрос к вам, ставить последнюю и заниматься именно на ней?
Аноним 12/10/23 Чтв 14:41:56 #253 №2876186 
2023-10-1214-25-04.png
2023-10-1214-26-17.png
Аноны, шо за хуйня?
Нашел значит я xaml-стили вот тута https://github.com/microsoft/microsoft-ui-xaml/blob/main/dev/CommonStyles/Button_themeresources.xaml
К примеру дал ссыль на стиль кнопки. Чел создает StaticResource, который ссылается на SolidColorBrush (пикрил 1). А потом линкует этот ресурс к свойству в стилях (пикрил 2). Как у него так вышло? Что за магия? У меня так не получается.

Во-первых в WPF нет ThemeResource, из-за чего я решил попробовать так
<Setter Property="Background" Value="{StaticResource ButtonBackground}" />
Но выглядит словно какой-то бред. А как мне прилинковать статический ресурс? Мне понравилось, что автор его использует как некий аллокатор между базовой кистью и свойством контрола. Я тоже так хочу! Мои решения через StaticResourceExtension создают кромешный ад.
Аноним 12/10/23 Чтв 14:46:30 #254 №2876193 
>>2876186
Аааа, надо StaticResource линковать как DynamicResource
Аноним 12/10/23 Чтв 14:48:01 #255 №2876194 
>>2876186
>>2876193
Ух, как же хорошо когда хорошо. Праздник какой-то.
Аноним 12/10/23 Чтв 14:54:19 #256 №2876197 
>>2875968
Переименуй последнюю структуру как-то иначе.
Аноним 12/10/23 Чтв 14:58:10 #257 №2876200 
2023-10-1214-55-28.png
>>2876145
Ставь последнюю версию студии и создавай проекты на .NET 7.0
Аноним 12/10/23 Чтв 15:48:19 #258 №2876248 
>>2876200
Понял, сделал, спс.
Аноним 12/10/23 Чтв 15:51:55 #259 №2876256 
Как именовать разные модели для одной и той же сущности? К примеру есть UserEntity и LessonEntity, находятся они в проекте с контекстом дб, связываются друг с другом посредством третьей таблицы и не содержат ничего кроме свойств, нужных для создания базы данных. Работать с такими классами неудобно, хочется иметь класс UserModel, который бы уже содержал необходимую логику, методы и тд. Как его обозвать?
Аноним 12/10/23 Чтв 16:08:06 #260 №2876282 
>>2875968
Отладчиком пошагово пройдись, потом почитай про особенности и различия конструкторов в классах и структурах.
Аноним 12/10/23 Чтв 16:18:56 #261 №2876305 
>>2876256
Ну у тебя должна быть общая модель, которая содержит коллекции UserEntities и LessonEntities (если я правильно понял), к примеру ClassRoomModel. Эта модель может быть внутри общей вьюмодели SchoolViewModel. Такая вот матрешка. ClassRoom может быть и вьюмоделью, кстати.

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

>Как его обозвать?
Это ты должен знать — зависит от контекста твоего приложения.
Аноним 13/10/23 Птн 06:23:10 #262 №2877006 
>>2876256
Смотри. Есть два стула.

1. Как делали деды на заре ООП.
Вся твоя логика - лежит в том же классе который ты назвал сущностью.
Плюс такого подхода - логика не распидорашена между проектами, файлами, намного ниже вероятность, что ты просто забыл что ты уже что-то сделал, и повторно одно и то же написал 10 раз. Вообще, все джуны будут бояться твоего кода, деды - будут уважать.
Минус. Твой класс будет ОГРОМНЫМ. Не. Он будет просто ОГОРОМНЕЙШИМ. В определенный момент чтобы работать с ним, придется делать его partial.
Еще минус - в том, что такой класс скорее всего будет непереносим между проектами, потому что куча специфики, вся хуйня.

2. Делать сервисы для работы с твоей анемичной моделью.
Вариант который является типа современным. Ты выделяешь области и на их основе создаешь сервисы. В твоем варианте - вот у тебя есть пользователи. Для работы с ними - ты выделяешь 2 класса: UserRepository и UserService, первый - дает доступ к тому где оно лежит, второй - именно всякую логику выполняет.
Плюсы подхода - у тебя все "по полочкам".
Минусы - был один класс, теперь их 3.
Аноним 13/10/23 Птн 11:16:36 #263 №2877191 
>>2877006
глупости говоришь
есть просто рич модел и анемик модел. С рич модел типа "Данные вместе с методами что эти данные обрабатывают то есть типа тру", а анемик лишен проблемы "а если нужно посчитать вот этак вы что будете делать, а*, но часто вырождается в чистые гет/сет, но просто проще и практичнее в реальной разработке.
и заря ооп не причем

У каждого подхода свои плюсы и недостатки. Вернее одно и то же каждый считает либо достоинством, либо недостатком

Можно пытаться сидеть и на каждой половинке стула, если ORM не мешает.
Аноним 13/10/23 Птн 11:19:15 #264 №2877196 
>>2877006
Ток ты так и не пояснил, как во втором случае две сущности впихнуть в один дата контекст, о чем анон спрашивал.

Т.е. тебе в любом случае нужно делать общий контейнер для них.

>Минусы - был один класс, теперь их 3.
В первом случае тоже будет три. Отличие только в том, что сервис можно заменить на другой, а в первом классы будут жестко связаны (хотя можно через интерфейс впихнуть).

Сервисы это про организацию большого количества модулей, каждый из которых требует какой-то еще модуль.
Аноним 13/10/23 Птн 15:00:12 #265 №2877442 
vs 2024 в ноябре будет или нет? Првью не могу найти.
Аноним 13/10/23 Птн 15:03:27 #266 №2877443 
>>2877006
Сервисы тут ни при чем, просто другая декомпозиция классов.
Аноним 14/10/23 Суб 00:06:46 #267 №2878224 
Стикер
>>2876186
>>2876193
Чеееерт. Нихрена не получается.
Оказывается, что StaticResource это непредставимая хтонь. Она работает, когда рядом есть что-то, что на нее ссылается.

Но совершенно не работает как отдельный элемент в отдельном словаре ресурсов:
<ResourceDictionary>
. . . <StaticResource x:Key="ButtonBackground" ResourceKey="AccentColorBrush" />
</ResourceDictionary>


У меня даже собраться проект не может, сообщает, что
>MC1000 Неизвестная ошибка сборки, "Индекс за пределами диапазона.
>Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Т.е. Словарь абсолютно пуст. Все насмарку. Возвращаемся к адовым городам со StaticResourceExtension
чтобы редиректить ресурсы:
<Thickness x:Key="Button.Static.BorderThickness"
. . . . . . . . Left="{ui:StaticResourceThicknessSide Static.BorderThickness, Side=Left}"
. . . . . . . . Top="{ui:StaticResourceThicknessSide Static.BorderThickness, Side=Top}"
. . . . . . . . Right="{ui:StaticResourceThicknessSide Static.BorderThickness, Side=Right}"
. . . . . . . . Bottom="{ui:StaticResourceThicknessSide Static.BorderThickness, Side=Bottom}" />


Говно ебаное.
Аноним 14/10/23 Суб 00:09:55 #268 №2878228 
2023-10-1400-09-13.png
>>2878224
макаба пердоле. Последний код - пикрилейтед.
Аноним 14/10/23 Суб 10:16:36 #269 №2878371 
.png
Мне скучно. Потому я покажу, как можно сделать простой клиент-сервер на шарпе.
Начнем с пустого солюшина.
Аноним 14/10/23 Суб 10:48:14 #270 №2878392 
>>2878371
Ну...
Аноним 14/10/23 Суб 10:54:13 #271 №2878398 
.png
>>2878392
Ну.
Пока что - сделал "соединение". Которое может использоваться как клиентом, так и сервером.
Аноним 14/10/23 Суб 11:15:50 #272 №2878423 
.png
"Слушатель". Принимает входящие соединения и обабатывает их.
Аноним 14/10/23 Суб 11:21:57 #273 №2878427 
>>2878371
>>2878398
>>2878398
все говно. переделывай
Аноним 14/10/23 Суб 11:32:46 #274 №2878432 
.png
.png
В общем. Проверка слушателя показала, что это даже работает.
Аноним 14/10/23 Суб 11:45:35 #275 №2878437 
.png
Собственно - абстракция для самого сервера.
Аноним 14/10/23 Суб 11:58:16 #276 №2878443 
>>2878437
Жозенько...
Аноним 14/10/23 Суб 12:02:53 #277 №2878444 
.png
Хм.
А вот тут - затык.
Почему-то слушающий сокет не реагирует на то что клацнули отмену и ждет пока кто-то таки подключится.
Мда. Может быть не надо было тредупл использовать. ХЗ короче.
Аноним 14/10/23 Суб 12:04:03 #278 №2878446 
>>2878444
Не. Бред. В тредпул кидаю уже после подключения.
Аноним 14/10/23 Суб 12:51:01 #279 №2878475 
.png
Так и не разобрался, фиг ли не отменяется.
Но сделал вот такую вот фиговину, чтобы уж как крутые челы быть и можно было фигачить миддлвары.
Аноним 14/10/23 Суб 13:01:06 #280 №2878486 
.png
Блин. Думал до часа справлюсь.
В общем. Да. Что мы получили.
Мы получили хрень какую-то. Которая неприменима ИРЛ.
Ну. Типа блин. Не варит голова. Фигня получается. Сорян.
Пойду плакать от своей бесполезности.
Аноним 14/10/23 Суб 13:41:12 #281 №2878508 
.png
Ладно. Пока рано успокаиваться.

Сделал вот такую вот хреноту для сообщений.
Аноним 14/10/23 Суб 14:26:42 #282 №2878528 
.png
.png
.png
Короче.
Такая фигня. Да.
Всем спасибо за внимание.
Аноним 14/10/23 Суб 14:55:34 #283 №2878550 
.jpg
Да. Хотел бы услышать по поводу всего этого добра что выдал - комментарии с причинами, почему я не подхожу на позицию джуна.
Аноним 14/10/23 Суб 16:39:37 #284 №2878623 
>>2874786
>database locked.
Это фишка sqlite что ли, что он всю базу лочит, лол? Какой-то кал, если честно.
>>2877006
>Вариант который является типа современным.
Да я бы сказал наоборот сейчас форсят DDD с толстыми моделями.
Аноним 14/10/23 Суб 17:36:34 #285 №2878671 
>>2878623
ну а как ты хотел, мед и ложкой? sqlite он встраиваемая бд и значит для одного пользователя. Как говорится, походи по базару - и ничего не найдешь встраиваемого легковесного.

Альтернатива ему - firebird, который тоже умеет в встраиваемость. Но там уже размер файла пустой побольше и менее удобно админить левой пяткой. Также непонятно с процессорами. Но зато это уже полноценная версионная база данных. В sqlite иногда не хватает функций, но там обычно такой объем данных, что проще поднять в память и сделать че надо.

Больше ты ничего не найдешь из реляционнок.
Аноним 14/10/23 Суб 19:58:43 #286 №2878982 
>>2878528
>>2878508
>>2878475
>>2878444
>>2878437
>>2878432
>>2878423
>>2878398
>>2878371
А зачем все это?
Аноним 14/10/23 Суб 20:04:01 #287 №2879000 
>>2874786
А еще проблему без проблем решит фассад, которй получает очередь, и сам пишет в базу. Мне кажется я даже встречал нагет реализации. Минусы есть, но если ты нормально разделил записи и чтения, то прям проблем быть не должно.
Аноним 14/10/23 Суб 20:40:53 #288 №2879049 
>>2879000
>которй получает очередь,
то есть семафор и дополнительные телодвижения
Аноним 14/10/23 Суб 20:42:32 #289 №2879053 
>>2879049
Конкурентные очереди, стеки, каналы, миллионы других способов не париться и просто писать куда надо. Но ты выбираешь городить семафоры. Молодец! Так держать. Умеешь. Могешь.
Аноним 14/10/23 Суб 20:48:15 #290 №2879063 
>>2879053
Да могу. И могу обосновать легко выбор того или иного инструмента. Вернее я обычно использую ридврайтлок конечно (раз уж либа работы с базой это сама не умеет - стандартная точно не умеет, а та что от мелких - не проверял), а не семафор. но могу обосновать что угодно.
Аноним 15/10/23 Вск 00:51:41 #291 №2879309 
>>2879049
Или отдельный агент обрабатывающий очередь в один поток без семафоров. Решений конкурентой записи миллион, и однопоточность sqlite, или любого другого инструмента это просто небольшая сложность, а не "пиздец это говно нельзя испозовать всё пропало"
Аноним 15/10/23 Вск 01:06:29 #292 №2879317 
>>2879309
Да хоьть дохулеард
Это всё ЗАВИСИТ
либо ты сразу все сделал с учетом склайт либо нет.(в надежде что это не нужно как в миллионе обычных приложений)
И когда во ВТОРОМ случае у тебя (через годы разработаи) вылезает датабаселокед то не так просто это разрулить
Аноним 15/10/23 Вск 12:58:38 #293 №2879537 
Напомните, как в петушарпе автоматически сделать конструктор, который будет присваивать значения переменным?
Аноним 15/10/23 Вск 13:19:01 #294 №2879567 
>>2879537
Как только ты опишешь нахуя это нужно и приведешь кейс.
Аноним 15/10/23 Вск 13:44:56 #295 №2879626 
>>2879537
https://learn.microsoft.com/ru-ru/dotnet/csharp/whats-new/tutorials/primary-constructors
Аноним 15/10/23 Вск 20:00:05 #296 №2880212 
ScreenRecorderProject2.mp4
Пробую ролики через яндекс переводить и так учить программирование, пока что не очень понятно.
Аноним 15/10/23 Вск 21:40:00 #297 №2880394 
>>2880212
На русском же полно контента вката в язык...
Аноним 15/10/23 Вск 21:48:08 #298 №2880401 
>>2875576
> что будет если будут нужны логи более чем за 3 дня?
Логов в опердени - вафлить не перевафлить. Во-первых есть текстовый лог в NLog, там огромный список логгеров на каждую нужду и у каждого есть свои сроки давности и свой порядок архивирования, по общему правилу туда пишется вообще любой чих и пердёж. Например открытие и закрытие окон, любое обращение во внешнюю интеграцию с ответом и любое исключение которое было поймано при операции и для которого нет специального продуманного обработчика. Это почти трассировка, там только всякие внутренние циклы не детализированы. При любом кипише логи сразу же снимаются и отправляются на анализ. Значимые с точки зрения бизнеса действия (которые означают какое-то принятое решение) срутся напрямую в логи в базе с обязательным анальным зондированием залоггированного пользователя. Их оттуда уже не выковырять в попытке скрыть подлог например удалением логов или порчей компьютера. Такие логи хранятся долго, пару лет где-то. А есть логи автоматики всякой внутри базы. Она в файлы-то писать не может. Например каждая хранимка которая есть в опердени ловит свои ошибки и срёт ими в специальный лог. Если время работы хранимки вышло за регламент то тоже появляется оповещение об этом в специальном логе. В логах хранятся например переназначения идентификаторов запроса во внешнюю систему или попытки восстановиться от ошибки которая могла быть вызвана дедлоком или сбоем Интернета - такое тоже пишется в логи автоматики. Вот эти логи автоматики и чистятся автоматически, какие-то по количеству записей, а какие-то по дате.
> вернее вопрос в другом - у кого жопа будет болеть?)))))
У системного аналитика. Мне лично вообще поебать, я винтик в огромной безжалостной корпоративной машине.
Аноним 16/10/23 Пнд 00:14:40 #299 №2880483 
Натянул.mp4
>>2880212
Это либо старый перевод, либо араб максимально невнятно говорит. Обычно перевод более или менее.

А вообще IIElevenLabs переводит лучше — банально умеет распознавать аббревиатуры. Это же делается за пять сек, но в яндексе хуйней страдают.
Аноним 16/10/23 Пнд 00:16:44 #300 №2880484 
>>2875576
>что будет если будут нужны логи более чем за 3 дня?
Делаешь новый файл с датой. Новый день — новый файл. Проблемс? Есть даже ограничение по размеру файла.
Аноним 16/10/23 Пнд 01:05:04 #301 №2880511 
>>2880484
Какой файл лол. Посмотри ориг пост.
И вообще не злите меня
Я и так злой с этой капчей
Аноним 16/10/23 Пнд 01:50:33 #302 №2880522 
>>2879567
>нинужно
)
Аноним 16/10/23 Пнд 01:52:01 #303 №2880523 
>>2879626
А конструктор-то как создать, который будет присваивать значения переменным?
Аноним 16/10/23 Пнд 01:55:34 #304 №2880524 
>>2880523
Руки отрубили?
Аноним 16/10/23 Пнд 01:56:38 #305 №2880525 
>>2880524
Пынямаю, нинужно, лучше ручками писать всё. Бойлерплейт помогает отдыхать программисту во время написания бойлерплейта!
Аноним 16/10/23 Пнд 01:59:27 #306 №2880526 
>>2880525
Ide пусть помогает.
И да. Примари конструкторы норм в рекордах или в котлине где есть инит
А в шарпе это только вредный вред
Аноним 16/10/23 Пнд 02:00:35 #307 №2880527 
>>2880526
>А в шарпе это только вредный вред
Ещё одно доказательство того, что нинужно! А как аргументированно! Вжжжжж!
Аноним 16/10/23 Пнд 02:02:47 #308 №2880528 
>>2878508
Пиздец, какое же говно...
Аноним 16/10/23 Пнд 02:04:01 #309 №2880529 
>>2880526
Когда пишешь на многих языках то костыли заметнее.
Аноним 16/10/23 Пнд 02:04:18 #310 №2880530 
>>2880528
Вот именно! Какккооооое!! Вжжжжжжвжжужужжжжж
Аноним 16/10/23 Пнд 03:31:20 #311 №2880547 
Пиздос, нахуя вы снова и снова кормите этого джавапетуха?
Аноним 16/10/23 Пнд 03:35:34 #312 №2880548 
>>2880527
Ну как нинужно
Вот я всегда рад когда годные вещи перенимают с других языков
Но в котлине я как шаопист к этому (рахмазано объявление переменных между конструкторм и телом класса) привыкал. И там же есть инит так чио ждешь такое

В шарпе выгоды от этого не вижу.
Аноним 16/10/23 Пнд 04:14:17 #313 №2880551 
>>2880548
Ты хоть сам понял, что высрал, обрыган?
Аноним 16/10/23 Пнд 05:08:46 #314 №2880555 
>>2880551
Прекрасно понял дебич
Но пояснить неучу не смогу
Аноним 16/10/23 Пнд 06:31:28 #315 №2880564 
>>2880528

Поч?
Аноним 16/10/23 Пнд 07:30:13 #316 №2880579 
>>2880564
>typeof()
>new[]
>Поч?
Аноним 16/10/23 Пнд 07:32:25 #317 №2880580 
>>2880564
>typeof()
>new[]
>методы с большой буквы
>убогий вид окна кода из 2006
>проперти начинающиеся с _
>as
>= default
>Поч?
Аноним 16/10/23 Пнд 11:24:30 #318 №2880793 
>>2880527
>Ещё одно доказательство того, что нинужно! А как аргументированно!
Ты сам то сначала приведи хоть один пример где это было бы нужно.
Аноним 16/10/23 Пнд 13:02:50 #319 №2880942 
>>2880580
>typeof()
ченетак?
>new[]
и тут че?
>методы с большой буквы
фломастеры
>убогий вид окна кода из 2006
пиз....брехня то есть.
>проперти начинающиеся с _
еще один явный пиз...
>as
тут то чего
>= default
и? я бы понял еще default!, но жавист не понимает разницу
>Поч?
что поч? поч ты жавист? пот говноед, вот поч
Аноним 16/10/23 Пнд 23:51:54 #320 №2881781 
2023-10-1623-12-59.png
2023-10-1623-17-07.png
Аноны. Тема - WPF. При группировке лист бокса, виртуализация накрывается пиздой. Точнее при задании стиля для заголовка группы.

Рассмотрим визуальное дерево без стиля для заголовка (пикрилейтед 1). Создается VirtualizingStackPanel, внутри которого находятся итемы. Все нормас - 152 элемента.

Собсно xaml:
<ListBox.ItemsPanel>
. . . <ItemsPanelTemplate>
. . . . . . <VirtualizingStackPanel />
. . . </ItemsPanelTemplate>
</ListBox.ItemsPanel>


А теперь добавляем стиль заголовка для группы (пикрилейтед 2). И тут хуякс и тот же список выдает уже 1042 элемента. Мы видим, что VirtualizingStackPanel создается для каждой группы(Border - это сам заголовок). Во-первых, нет никакого контроля по количеству групп, их может быть 100500, а значит 100500 VirtualizingStackPanel. Во-вторых, каждая из этих панелей не очень-то виртуализирует — можно заметить одну панель, которая вмещает аж 547 элементов.

Стиль для заголовка группы:
<ListBox.GroupStyle>
. . . <GroupStyle>
. . . . . . <GroupStyle.HeaderTemplate>
. . . . . . . . . <DataTemplate>
. . . . . . . . . . . . <Border Background="LightGray" >
. . . . . . . . . . . . . . . <Label Content="{Binding}" />
. . . . . . . . . . . . </Border>
. . . . . . . . . </DataTemplate>
. . . . . . </GroupStyle.HeaderTemplate>
. . . </GroupStyle>
</ListBox.GroupStyle>


Шо не так?
У меня такое было, когда я решил впихнуть ListBox в ScrollViewer, из-за чего листбокс растягивался на максимум своего списка и VirtualizingStackPanel был бесполезен. Предполагаю, что здесь что-то подобное, но по отношению к встроенному скрол вьюверу листбокса. Как это фиксить — хрен знает.
Аноним 17/10/23 Втр 00:20:50 #321 №2881796 
>>2881781
Кроме
VirtualizingStackPanel.IsVirtualizing="True"

Нужно еще
VirtualizingPanel.IsVirtualizingWhenGrouping='True'
Аноним 17/10/23 Втр 01:24:37 #322 №2881834 
text-on-top(2).png
Аноним 17/10/23 Втр 04:50:58 #323 №2881875 
>>2880942
Аргументированный ответ умного человека. Спасибо.
Аноним 17/10/23 Втр 09:26:17 #324 №2881957 
Есть смысол читать этого вашего Рихтера если не знаю англюсика? А то где то пишут что вроде как перевод вообще не ок.
Аноним 17/10/23 Втр 09:33:07 #325 №2881963 
>>2881957
Не будешь читать Рихтера, будешь играть Вагнера.
Аноним 17/10/23 Втр 09:41:24 #326 №2881970 
>>2881957
От "Питер" перевод норм. Только читать его стоит когда уже есть база и какой-то опыт. Причем база не только шарпа а Computer Science вообще. Если ты не шаришь нормально в типах данных, нет понимания работы памяти и т.д., то только зря потратишь время.
Аноним 17/10/23 Втр 20:13:52 #327 №2882844 
Вжжжжжжжжжжж
Аноним 17/10/23 Втр 20:56:04 #328 №2882934 
>>2881957
Кокоса Управление памятью почитай. Забористее Рихтера в разы и перевод хороший.
Аноним 17/10/23 Втр 20:58:20 #329 №2882935 
16872047126210.jpg
Аноним 17/10/23 Втр 21:59:57 #330 №2882994 
.jpg
>>2878550

Эх. Никто так и не ответил. Грустненько.
Аноним 17/10/23 Втр 23:28:26 #331 №2883079 
>>2881963
>>2881970
>>2882934
Пасиба, прояснили.
Аноним 18/10/23 Срд 06:33:35 #332 №2883174 
Господи вот если серьезно. То как я заебался переопределять всю эту мутатень, чтобы использовать свои объекты как ключи словаря. Вот вы бы знали. Особенно бесит в случае когда какая-то коллекция - тоже должна быть значением.
И тута я узнал, что оказывается, шарп под капотом - автомато умеет анонимным типам всю эту муру делать.
Так вот. Вопрос-то вот в чем. Проблема анонимных типов в том, что наружу они хуево достаются. Будет object который какой-то там Anoymus_T228<>.
Но мне хотелось бы в таком случае, раз уже за меня все сделали - чтобы я потом мог использовать данные которые лежат в ключе.
Собственно. Какие варианты, кроме dynamic или своей обертки, которая анонимный тип обернет в интерфейс есть-то?
Аноним 18/10/23 Срд 10:13:55 #333 №2883299 
>>2883174
Не еби себе мозги с анонимными типами, а просто юзай рекорды. Для них все автоматом генерируется.
https://sharplab.io/#v2:D4AQTAjAsAUCDMACATgUwMYHtkBNEGFEBvWRMxBRASwDsAXRAQWMQHNU6BuamqrxAL6lylHJgCuAIwA2qRACEW7frT7chMAUA===
Аноним 18/10/23 Срд 10:54:33 #334 №2883332 
>>2883174
>использовать свои объекты как ключи словаря
А зачем так вообще делать? Именно как ключи?
Аноним 18/10/23 Срд 15:35:05 #335 №2883657 
>>2883299
Рекорды не всесильны. Попробуй в них свойство массив
>>2883332
Странный вопрос.
Аноним 18/10/23 Срд 17:00:48 #336 №2883785 
>>2851505
За весь тред и месяц никто мне не ответил. Я уже забил на эти метаданные и просто разбираюсь особенности шарпа, но бля что не так то я хуйню споросил или никто не шарит за это?
Аноним 18/10/23 Срд 17:16:10 #337 №2883807 
>>2883785
Зачем в этом шарить?
Аноним 18/10/23 Срд 17:33:21 #338 №2883827 
Добрый вечер, аноны. Просветите, пожалуйста, насчёт бэка на шарпе. Можно ли сделать так: написать бэк на asp.net, разместить его на сервере (мб на нём же и базу, или на другом), и использовать его для мобильного приложения на андройде?
Аноним 18/10/23 Срд 17:41:18 #339 №2883835 
>>2883827
Да.
Аноним 18/10/23 Срд 17:42:16 #340 №2883837 
>>2883827
нельзя. Если пользователь приложения узнает что бэк на шарпе, то бросит приложение, станет жавистом и напишет свой бэк. Тебе бы этого хотелось? то то же.
Аноним 18/10/23 Срд 17:47:54 #341 №2883843 
>>2883835
Спасибо.
>>2883837
Об этом я и не подумал...
Аноним 18/10/23 Срд 18:30:15 #342 №2883885 
>>2883657
>Странный вопрос.
Не, серьезно. Приведи кейс. Я вот чет ни разу не пихал в словари в качестве ключей, объекты разных типов, да еще и вперемешку с коллекциями. И даже не могу придумать зачем это нужно.
Аноним 18/10/23 Срд 21:09:26 #343 №2884089 
2023-10-1821-05-05.png
Аноны, вопрос на миллион залуп на воротник.

Внимательно вглядитесь в пикрилейтед. Что вы там видите?
Свойство "Background" стиля для кнопки обращается к статическому ресурсу "ButtonBackground", который в свою очередь обращается к кисти "RedColorBrush".

Вопрос: какого цвета будет кнопка, если ей назначить данный стиль?
Ответ: синяя - цвета "BlueColorBrush". Берется ближайший ресурс, а не тот, что указан в ResourceKey.

Дженерал вопрос: почему?
Аноним 18/10/23 Срд 21:22:39 #344 №2884095 
2023-10-1821-20-46.png
>>2884089
А вот это работать не будет, если перед статическим ресурсом нет ничего. Т.е. проект даже не соберется:
>ОшибкаMC1000 Неизвестная ошибка сборки, "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.

Вы можете сказать, что тут нет искомой для статического ресурса кисти. А вот хуй, дальше покажу, что проблема не в этом.
Аноним 18/10/23 Срд 21:31:24 #345 №2884098 
2023-10-1821-23-43.png
2023-10-1821-28-02.png
А вот если мы статический ресурс запихнем словарь внутри словаря, то статический ресурс подхватит кисть под искомым ключом (пикрил 1).

И главное, что если я удалю из объединяемого словаря все кисти, то проект все равно соберется (пикрил 2).

В чем тайна сего колдовства?
Аноним 18/10/23 Срд 21:40:49 #346 №2884106 
>>2884089
>>2884095
>>2884098
Как же больно быть на десктопе. Просто ужас.
Аноним 18/10/23 Срд 21:45:01 #347 №2884113 
>>2884089
>>2884095
>>2884098
Ссылка на проект https://dropmefiles.com/Uzm8T

>>2884106
Бля и не говори.
Аноним 18/10/23 Срд 21:48:55 #348 №2884116 
>>2884106
Больше всего бесит, что ответа порой нет вообще. Проект может просто не компилироваться, особенно если это какая нибудь библиотека. И никаких внешних признаков ни в окне ошибок, ни в окне интерпретации. Проект молча не собирается просто потому, что какой-то ресурс где-то не смог что-то там найти.
Аноним 18/10/23 Срд 22:30:09 #349 №2884150 
>>2883332
Почему разных типов. У тебя может сложный объект использоваться как ключ для группировки и внутри себя содержать массивы и при этом не обладать ссылочным равенством.
Аноним 19/10/23 Чтв 10:16:10 #350 №2884404 
>>2851295 (OP)
Какую бесплатную либу сейчас принято юзать для работы с вордом/экселем. Ворд для генерации таблиц, эксель тоже + простые формулы между колонками.
Аноним 19/10/23 Чтв 20:13:47 #351 №2885618 
>>2884404
Epplus
Аноним 19/10/23 Чтв 22:45:31 #352 №2885924 
А как тестировать приватные методы?

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

Пока что получается как с ТДД - на примере с калькулятором красиво, а ИРЛ неприменимо
Аноним 19/10/23 Чтв 22:53:17 #353 №2885931 
>>2885924
Очевидно, тестировать публичные методы, которые вызывают приватный.
Аноним 19/10/23 Чтв 23:01:33 #354 №2885945 
>>2885931
Это как? Публичному методу недоступен приватный. Не засирать же им класс, к тором находится приватный метод? В чем тогда смысл приватности метода?

Тут только делать приватный метод с доступом internal, но это не выглядит как хорошая затея.
Аноним 19/10/23 Чтв 23:13:18 #355 №2885955 
>>2885931
несколько похожих методов
{
достать_хуйню_из_базы_с_учетом_параметров
вызвать_йоба_метод
смапить_в_дто
}

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

Сам этот приватный метод используется только несколькими методами в классе (не всеми) и больше нигде в приложении не нужен.
Аноним 20/10/23 Птн 00:38:01 #356 №2886054 
>>2885955
А ты не хоти
Аноним 20/10/23 Птн 06:26:34 #357 №2886107 
>>2885924
Писать тесты в том же классе, в котором ты тестируешь.
Доставать рефлексией.
Как мужик - делать все публичным, прятать что-то это по бабски.
Сделать internal и указать что тестовая сборка может подглядывать.

Да куча способов.

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

Сверху. Если там реально какая-то СЛОЖНАЯ ЛОГИКА в этих приватных методах, то ты должен был выделить класс. Судя по другому комменту: DbSearcher, YobaHandler, Mapper. В них ессно - это будет публичным, а потому тестируй сколько хочешь и не придумывай ничего.
Аноним 20/10/23 Птн 14:20:11 #358 №2886608 
>>2886107
Какой же еблан...
Аноним 20/10/23 Птн 15:13:30 #359 №2886691 
try catch не хочет ловить XamlParseException.

В сatch-блоке у меня написано Debug.Writeline. По идее приложение должно вывести сообщение и работать дальше — со всеми остальными исключениями так и происходит. При XamlParseException студия прыгает в точку возникновения исключения.

Почему?
Аноним 20/10/23 Птн 15:33:23 #360 №2886747 
Внимание, вопрос. Почему на джаве прочитать все байты из файла короче, чем на петушарпе?
Аноним 20/10/23 Птн 15:36:25 #361 №2886757 
>>2886747
Иди нахуй.
Аноним 20/10/23 Птн 15:36:56 #362 №2886760 
А конструкторы почему на джаве ручками писать не надо, а на петушарпе надо?
Аноним 20/10/23 Птн 15:41:37 #363 №2886770 
А почему на петушарпе надо делать постоянно бесконечные проверки на нулл, а в джаве уже давно есть нулл сейфти из ломбока и скоро будет из коробки с нулл-рестриктед тайпс?
Аноним 20/10/23 Птн 15:43:34 #364 №2886774 
>>2886691
Потому что петушарп.
Аноним 20/10/23 Птн 16:01:16 #365 №2886817 
>>2886691
потому что ты не показал код перехвата, а XamlParseException там не один, может ты не тот ловишь.

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

>>2886770
о. опять этот ДЕБИЛ с ломбоком, которые не является жавой
для ДЕБИЛА напомню - для желающих переписывать в компильтайм есть фоди. И уж там эти проверки на нулл вплетать код проверки с исключениями можно несколько лет. Другое дело - зачем. При правильно написанном коде эти проверки тупо будут отнимать процессорное время и не сработают и не смогут сработать НИКОГДА.
Аноним 20/10/23 Птн 16:03:04 #366 №2886824 
>>2886817
>о. опять этот ДЕБИЛ с ломбоком, которые не является жавой
>ниииееет, ты ни можишь пользоваться фичами потому что на петушарпе нет адекватного аналога ломбока нииееет!!!!
Пынямаю.
Аноним 20/10/23 Птн 16:05:28 #367 №2886830 
Как же я проигрываю с этого мелкобуквенного копротивленца за шарпоговно. Каждый раз ему ссут на ебальник, и каждый раз он продолжает высирать нинужно и копротивляться за свою кучку говна. Один в треде остался такой непробиваемый.
Аноним 20/10/23 Птн 16:07:49 #368 №2886835 
>>2886824
я уже 1000раз говорил что ты долбоеб
ломбок - НЕ ЖАВА. Это сторонная тулза позволяющая что то там
в шарпе та же самая ситуация - с помощью сторонней тулзы можно вообще что угодно

>>2886830
ну ПРИЯТНО ЖАВИСТА говном накормить. все же видят что он высирает говно, которое потом ему же в рот запихивают.
Иногда у меня подходящее настроение запихать дерьма в его ротешник по полной. Потом утомляет. Потом опять скучно и приятно накормить.
Но по факту - жавист срет и жрет то что насрал. Странный жавист. Все на него смотрят, а он продолжает жрать говно.

Ну да, ему привычно, он же жавист.
Аноним 20/10/23 Птн 16:09:24 #369 №2886838 
>>2886835
>с помощью сторонней тулзы можно вообще что угодно
Где поддержка каловроти в среде разработки?
Аноним 20/10/23 Птн 16:10:09 #370 №2886840 
>>2886835
>ну ПРИЯТНО ЖАВИСТА говном накормить
А почему по итогу рот в говне у тебя всегда становится?
Аноним 20/10/23 Птн 16:14:49 #371 №2886851 
2023-10-2016-13-42.png
>>2886817
>потому что ты не показал код перехвата
Я ловлю просто Exception, который является базой всех исключений.
Аноним 20/10/23 Птн 16:20:22 #372 №2886861 
>>2886760
В бейсике давно такое, но знал бы ты сколько говна я хапанул из-за этого.
Аноним 20/10/23 Птн 16:21:31 #373 №2886863 
>>2886861
>нинужно
Аноним 20/10/23 Птн 16:22:18 #374 №2886864 
2023-10-2016-19-47.png
>>2886851
>XamlParseException там не один, может ты не тот ловишь
Вот конкретнее
Аноним 20/10/23 Птн 16:32:48 #375 №2886880 
>>2886838
какая? дебил, какой поддержки ты ждешь.
Можно понять ГОВНОжаву где нет свойств и поэтому НУЖНО указать IDE что "вот такой синтаксис не ошибка".

Просто нечего студии знать для того чтобы все работало. Но даже в этом случае тулза может самостоятельно
1 добавить анализаторы
2 добавить кодогенерацию чтобы студия знала о чем то новом что рождает эта тулза.
3 сделать автодополнение даже если нет никакого кода в 2 (после автодополнения он сгенерится)

взять ту же генерацию проверок на нулл. как по твоему мнению ЖАВАДЕБИЛА студия должна поддерживать эту фичу? Рисовать какие то картинки или что?
плагину указывается кодом где нужна генерация, где нет. аттрибуты или ?
а студии что нужно знать?
вот ты пишешь что нет поддержки в IDE. Так поясни мне ЧТО ДОЛЖНО БЫТЬ В СТУДИИ чтобы проверки на нулл вплетались более правильно что ли.Отдельная менюшка? значки? писк хрюшки как в каспере? или что?

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

>>2886864
на твоих скринах ты ловишь throw. я конечно верю, что дальше оно идет типа мимо, но из скринов это не следует.
sage[mailto:sage] Аноним 20/10/23 Птн 16:39:58 #376 №2886896 
>>2886880
Найс рвонькнул, ну уж точно не потому что у шарпододика разрыв шаблона. Допустим поддержка нотнулла в среде и правда нинужна. Что скажешь насчёт популярности твоего поделия в сравнении с ломбоком? Ломбок есть на каждом проекте, у него 12к звёзд на гитхабе, а где есть каловроти с 600 звёздами?

И ведь что иронично, про неподдерживаемость расширений языка визжали изначально шарпошлюхи, а как оно оказалось на самом деле ожидаемо.
Аноним 20/10/23 Птн 16:47:34 #377 №2886909 
>>2886896
я тебе уже сказал
ломбок в жаве - НЕОБХОДИМОСТЬ
в силу НЕВЕРОЯТНОЙ ВЫРАЗИТЕЛЬНОЙ УБОГОСТИ жавы и родился проект ломбок чтобы добавить сахара другими способами, раз уж жава такое говно
и поскольку жава ОТКРОВЕННОЕ ГОВНИЩЕ в выразительном плане, то нашлось и МНОГО желающих отведать сахара.
Поэтому проект вырос и получил столько одобрения (для тупых поясняю - если миллионы говорят "нам не хватает выразительности", значит сам язык ГОВНО), что это даже в IDE интегрировали.
То есть это следствие ЛЮТОЙ ГОВНИСТОСТИ языка, потому что язык говно (и жависты говноеды, раз жрут, хотя даже жависты признали что язык говно и им надоело его жрать и появился ломбок как сахар на это говно. вот только теперь ДЕБИЛЫ жависты приписывают достоинства СТОРОННЕЙ САХАРНИЦЫ самому языку. Ну ДЕБИЛЫ хуле.)

Шарп и любой другой нормальный язык куда богаче, поэтому необходимость "нам не хватает сахара" намного ниже
и желающих маговать намного меньше, остальные не понимают "зачем"
поэтому под тот же котлин (который внезапно JVM) нет никакого ломбока и никогда не появится ибо даже если появится, то его поддержат 3.5 человека, а остальные скажут "и нахера оно"
sage[mailto:sage] Аноним 20/10/23 Птн 16:51:47 #378 №2886915 
>>2886909
Мне оправдания твои не нужны, как так получилось, что джава выебала петушарп. На вопрос отвечай.

>Что скажешь насчёт популярности твоего поделия в сравнении с ломбоком? Ломбок есть на каждом проекте, у него 12к звёзд на гитхабе, а где есть каловроти с 600 звёздами?
Аноним 20/10/23 Птн 17:07:29 #379 №2886948 
2023-10-2016-59-36.png
>>2886880
>на твоих скринах ты ловишь throw. я конечно верю, что дальше оно идет типа мимо, но из скринов это не следует.
Оно НЕ идет мимо. Оно остановилось в блоке try не дойдя до catch. Вот в чем проблема.

Вот если я напишу перед вызовом метода
throw new Exception("бла бла бла");
вот тогда оно попадет ожидаемо в catch, выведет строку и пойдет дальше.

Короче, я не хочу, чтобы студия останавливала приложение и прыгало в точку вызова эксепшона в коде. Это некритичная ошибка, и у меня уже есть защита от этого, если бы эта залупа там не останавливалась за каким-то хером не смотря на try.
Аноним 20/10/23 Птн 17:09:46 #380 №2886958 
>>2886909
>>2886915
Спорим вы сидите в политаче? Есть душок от вас - любителей потратить время на бесконечные диалоги.
Аноним 20/10/23 Птн 17:11:46 #381 №2886964 
>>2886958
>мне нечего ответить, быстро перегруппировываемся от нападения на джаву до попытки представить дискуссию как обоюдное кидание говном в друг друга, чтобы не дай бог не подумали, что я обосрался
Аноним 20/10/23 Птн 17:16:02 #382 №2886968 
2023-10-2017-14-08.png
>>2886964
Чел, у тебя шиза. Пикрил не даст соврать. Мне вообще поебать на ваш шухер, у меня проблема >>2886948 горит.
Аноним 20/10/23 Птн 17:17:31 #383 №2886972 
>>2886968
Переходи на джаву, тут нет нескольких одинаковых XamlParseException.
Аноним 20/10/23 Птн 17:31:00 #384 №2886991 
>>2886948
>Короче, я не хочу, чтобы студия останавливала приложение и прыгало в точку вызова эксепшона в коде
так это совсем другая проблема.
не хочешь - выключи. зачем включил? в окошке исключений сбрось на дефолт и включай там "ловить все" по необходимости. Жаль там нет профилей, но студия увы кака.

>>2886958
ты проспорил. Лично я там не сижу. Впрочем, я и в жава тред не лезу.
Просто меня жависты достали своей тупостью в реальной жизни, а в ней сложнее кормить говном, а тут забегает говноед.
Но все равно наши срачи занимают малый процент треда, ведь жаводебил не может ответить аргументированно, а сразу начинает тупить и на этом заканчивается.
Аноним 20/10/23 Птн 17:31:46 #385 №2886993 
>>2886991
> не может ответить аргументированно
Найс перефорс слившегося чушка, который на вопрос не ответил.
Аноним 20/10/23 Птн 17:40:19 #386 №2887012 
>>2886993
ты долбоеб эпохальный.
тебе не просто ответили, даже раскрыли суть.

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

В шарпе 99% того, что дает ломбок, просто НЕ НУЖНО, поэтому и пользователей кому что-то подобное нужно, намного меньше.
Да и не все ставят звезды. Не для всех гитхаб "соцсеть где нужно лайкать репы".
Аноним 20/10/23 Птн 17:42:33 #387 №2887019 
>>2887012
Маня называет меня долбоёбом, но сама в который раз высирает стену оправданий, почему джава выебала петушарп, хотя от него требовалось выдавить ответ на вопрос.
Аноним 20/10/23 Птн 19:12:12 #388 №2887273 
>>2887019
>Маня называет меня долбоёбом
всегда зрю в корень. за сим все. ты слился в аргументах, а значит оставайся один со своим говном
Аноним 20/10/23 Птн 19:47:00 #389 №2887342 
>>2887273
Маня называет меня слившимся, но сама так и не смогла ответить на простейший вопрос.
Аноним 20/10/23 Птн 22:17:31 #390 №2887565 
>>2887342
Лахта, cпок.
Аноним 20/10/23 Птн 22:19:34 #391 №2887567 
>>2887565
Слитое, спок.
Аноним 20/10/23 Птн 23:13:02 #392 №2887619 
>>2887567
вы только посмотрите как жавист, как та собака, поевшая говна, на всех кидается )
У него даже не возникло вопросов почему его бы его собеседник назвал лахтой, если до этого всячески намекал на говноедство )))

А теперь по делу. Пришел тут жавадебич и начал толкать свое "смотрите ломбок может расставлять проверки на нулл". Как будто это нечто такое "прямо ух".

Он даже не понимает что такие проверки это прошлый век. Потому что они все равно происходят В РАНТАЙМЕ, то есть все равно выбросят NRE, только раньше. (этакий fail fast)
И что правильный путь - статический нуллчекинг (fail fast на этапе компиляции), который позволяет избежать этой расстановки везде везде проверок на null.

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

А что там в жава с нуллсафети? аннотации нуллабле и в IDEA, то есть на уровне конкретной IDE или же свои в фреймворках (тот же спринг имеет свои аннотации нуллабле))))? убожество.

иди в свой тред и там вместе кушайте свое говно (где у вас СТОРОННИЙ тулз десятилетиями чинит убожество языка), а к нам его не несите.
Аноним 20/10/23 Птн 23:22:38 #393 №2887626 
>>2887619
Да ладно, что ты хочешь от убогих. В джаву только в этом году паттерн матчинг и интерполяцию строк завезли (и то в превью), так они уже ссутся от радости и объявили, что у них эти фичи самые лучшие.
Аноним 20/10/23 Птн 23:41:33 #394 №2887637 
>>2886991
>не хочешь - выключи. зачем включил?
Я ничего не включал, у меня дефолтные настройки. Все исключения ловятся, кроме этого.
Аноним 20/10/23 Птн 23:43:32 #395 №2887639 
>>2887619
>И что правильный путь - статический нуллчекинг (fail fast на этапе компиляции), который позволяет избежать этой расстановки везде везде проверок на null.

Поясни. Я везде расставляю проверки на null.
Аноним 20/10/23 Птн 23:50:27 #396 №2887648 
>>2886972
>тут нет нескольких одинаковых XamlParseException.
Господи, это еще хуже. У вас че, нельзя называть одинаково классы в разных неймспейсах? Потому что я горю на этапе, когда надо придумать хороший нейминг, чтобы он не конфликтовал с уже существующими и не был длинным как сопля первоклашки.
Аноним 21/10/23 Суб 00:09:46 #397 №2887677 
>>2887637
и никак не понять твою проблему
- исключение не ловится (то есть не вызывается catch)
- студия останавливается на исключении

>>2887639
Расставляй если хочется. Код он разный. Да и легаси полно.
Если ты пишешь в нуллсафети парадигме, то откуда у тебя будет NRE в твоем коде. Даже если ты пишешь публичную библиотеку - ну на входе проверил и в нужных местах, а везде зачем. Конечно можно огородиться лишними проверками (если не доверяешь чужим либам, хотя они тестами обычно покрыты и нулл никогда не возвращали), но это будут в основном не проверки параметров, а проверки инвариантов.

>>2887648
>нельзя называть одинаково классы в разных неймспейсах?
жавадебил. они потому и называются одинаково XamlParseException, потому что лежат в разных неймспейсах.

Аноним 21/10/23 Суб 16:35:45 #398 №2888874 
Нужен ваш совет по работе с несколькими пользователями в десктопной апе. Сейчас логика такова, что приложение хранит в текстовом файле айдишник текущего пользователя, и при запуске приложения подгружает его профиль из БД, который затем хранится в синглтон классе настроек. И тут возникает проблема с тем, что при переходе на страницу выбора пользователя происходит ещё одно обращение к базе данных, чтобы получить список всех пользователей. И тут то я ловлю краш связанный с тем, что ef core трекает два разных экземпляра одной сущности. Как быть?
Аноним 21/10/23 Суб 17:24:01 #399 №2888939 
>>2888874
Не трекай запрос, лол. Делай детач после того как получил сущность.
А по хорошему - сделай дополнительный слой из ДТОшек, которые тебе нужны. И используй в своем синглтоне - эти дтошки, а не сырые модели которые ефом используются.


Вообще. Если быть честным - ЕФ та еще говнина. Слишком много с ней ебли, учитывая, что основное назначение для меня, как клиента - маппинг результата запроса в объектики. Ну и как потенциальное - возможность сменить провайдера для работы с БД. Но сколько же с этой говниной подводных камней. Я ебал. И я даже не говорю про скорость, которая тоже говном становится из-за вот этого всего. Нет. Просто блядь. То что я бы на голом SQL написал бы и забыл, ЕФом приводит к просто охуитительным историям, когда вот тут - нельзя, вот тут - допиши как мне это сделать, вот тут - пиши свой запрос, а то я не понимаю, вот там - мы не можем в несколько тредов. Вот тут - провайдер не умеет в то, что умеет сама СУБД, а потому - фишечки полезные - опять же запихни себе поглубже. Короче. Да. ЕФ - говнина. Не советую никому пользоваться, если вы на нее не сели в начале, и теперь уже слезть сложно. Для любых новых проектов - что угодно будет лучше чем EF.
Аноним 21/10/23 Суб 17:28:34 #400 №2888947 
>>2888939
> А по хорошему - сделай дополнительный слой из ДТОшек, которые тебе нужны. И используй в своем синглтоне - эти дтошки, а не сырые модели которые ефом используются.
Тогда получится уже 3 класса на сущность, сейчас у меня и так на каждую сущность есть вью моделька, принимающая эту сущность в конструкторе.
Аноним 21/10/23 Суб 17:37:26 #401 №2888957 
>>2888947
Почему не можешь сделать так:
var user = db.Users.AsNoTracking().FirstOrDefault(x=>x.Id = ConfigFile.UserId);
MyApplicationContext.Instance.CurrentUser = user;
Аноним 21/10/23 Суб 17:53:40 #402 №2888976 
>>2888939
Люто двачаю. EF - говнина для индусов, куча ненужных фич, типа changes tracking, которые усложняют программы. Есть linq2db, dapper и другие, которые просто конвертеры между C#/SQL, без кучи говна под капотом. Если вижу EF в вакансии, понимаю, что эти люди с базой никогда серьезно не работали. Про такие вещи, как булк операции, мерджи и рекурсивные запросы они наверно даже не слышали, ведь у этого говно из коробки этого нет (могу ошибаться, и что-то могли уже завести).
Аноним 21/10/23 Суб 18:27:16 #403 №2889024 
>>2888939
>То что я бы на голом SQL написал бы и забыл
Если ты в соло работаешь, ну так и делай. В команде же, ебал я в рот чужие sql-ные писульки разбирать. ОРМ как раз и нужна, чтобы можно было работать с объектами не касаясь неотлаживаемого эскуэльного говна.
>>2888976
>Если вижу EF в вакансии, понимаю
Я наоборот дропаю вакансии, где используют raw-sql в коде и встройки в БД.
Аноним 21/10/23 Суб 18:28:39 #404 №2889025 
>>2887619
Ебать обоссаный копротивленец за кучку говна бахнул. И ведь юмор в том, что я прочитал весь его бах, только ни йоты смысла не нашёл. Обтекай. Может быть, когда-нибудь, петушарп и дорастёт до рантаймовых проверок, когда в джаве уже 10 лет как будут компайл-тайм проверки.

>>2887648
Можно, но это не отменяет, что у нас нет шизы с несколькими одинаковыми XamlParseException.
Аноним 21/10/23 Суб 18:46:34 #405 №2889054 
>>2889025
и ведь ему не стыдно было писать этот пост ))))
Я бы после такого поста из профы на завод бы ушел от стыда, а он даже не замечает какую дичь несет )))
Аноним 21/10/23 Суб 18:53:22 #406 №2889059 
>>2889024
>где используют raw-sql в коде и встройки в БД
как будто "если не EF то значит сырой SQL без вариантов"
Есть тот же LINQ2DB (и похожие на него). И даже в даппер можно пихать запрос сгенерив его с помощью LINQ.

Так что тут стоит вопрос - любитель ли вы всякого трекинга и абстрактности (от чего получаете некоторые плюшки и выгребаете тонны дерьма) или же вы предпочитаете работать на более низком уровне "достали/положили", где вам никто палки не вставляет (и не в колеса, а в другое место))), но всякие там кеши и прочее делаете сами.
Аноним 21/10/23 Суб 19:31:44 #407 №2889102 
>>2889024
>raw-sql в коде
Так и я против такого. Отсутствие EF - не значит отсутствие C# to SQL, я дропаю оба типа вакансий: в одних сидят пориджи, которые с базой работать не умеют, в других деды 40+, которые не могут осилить LINQ, с базой работать умеют, а вот шарп не осилили, речь про большие проекты.
Аноним 21/10/23 Суб 20:25:16 #408 №2889176 
>>2889024
Так проблема же в том, что сам EF как орм - то еще добро. Особенно, если работаешь не с MSSQL, а каким-нибудь MySql или Postgres, где разработчики провайдеров - тоже те еще чудаки на букву 'м'.

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

Конечно, если простые вещи делать, без всяких анализов там, расчетов, а просто достать из базы, чет поменять, положить обратно - EF нормально справляется.
Аноним 21/10/23 Суб 20:58:12 #409 №2889230 
>>2889176
У ef ужасающий startup time
Он там майнит что ли
Аноним 21/10/23 Суб 21:24:46 #410 №2889253 
Посоветуйте книгу для перехода на продвинутый уровень
Аноним 21/10/23 Суб 21:40:41 #411 №2889271 
>>2889253
Букварь

Он позводит читать разное и стать про
Без всяких книг
Аноним 21/10/23 Суб 21:59:43 #412 №2889289 
>>2889176
>Ну и всякие его приколы, типа - это я зачем-то буду на клиенте выполнять
Ну если по урокам с метанита приложения писать, то конечно там сплошная магия будет. А так-то, наверное, стоит доки нормально прочесть, чтобы понимать в каких случаях server, а в каких client evaluation делается?
>>2889176
>а просто достать из базы, чет поменять, положить обратно
Можно подумать БД зачем-то еще нужны. Шучу конечно, но...
Аноним 21/10/23 Суб 22:05:33 #413 №2889301 
>>2889289
>БД зачем-то еще нужн
Неужели кофе готовят?
Аноним 21/10/23 Суб 22:48:55 #414 №2889337 
>>2889289
Ой. Не не надо тут начинать. Всякие запросы с Contains - EF в куче случаев - на клиенте хочет выполнять, хотя по документации - может и на сервере. А выбор того на сервере или на клиенте - зависит зачастую от хрен пойми чего. Особенно в контексте того, что в EF который на фреймворке был - оно нормально выполнялось, а в Core - до сих пор какая-то хрень происходит.
При этом - руками вполне изи пишится SQL-запрос, который СУБД поймет и сделает. Но если ты на EF - тебе приходится либо страдать хуйней и лезть под капот, шаманя с составителями запросов и всей этой хуйней с экспрешинами, либо забивать на всю эту ORM и писать тот же SQL запрос.
И опять же, я сверху уже писал, про то что писатели провайдеров - тоже те еще чудики. Решили они, что теперь не хотят DataTime в обычном виде использовать - иди как дебил и переписывай все DateTime.Now на DateTime.UtcNow, потому что - ну пиздец как надо было сломать, чтобы все думали не о том, как фичи делать, а ублажать шизу разработчиков провайдера.
Короче. Хрен знает чего ты пытаешься ЕФ защищать. Ну реально же - капризная как хуй пойми что хуйня, особенно в контексте того, что она якобы должна была упросить работу с БД и заставить разработчика думать не о БД, а о логике приложения. В результате - ты теперь и о БД думаешь, и о том чтобы ЕФ не выебывался, и о том, что там разработчики провайдеров думают о том как надо, а фичи пилить чтобы к сроку успеть - та не ебет, ты же выбрал этот инструмент, радуйся тому, как жизнь проще стала.
Аноним 22/10/23 Вск 11:46:19 #415 №2889580 
>>2887677
>и никак не понять твою проблему
>- исключение не ловится (то есть не вызывается catch)
>- студия останавливается на исключении

А как это блять назвать?
Возьмем этот пример :
try
{
. . . throw new Exception("бла бла бла");
}
catch(Exception ex)
{
. . . Debug.WriteLine($"Исключение: {ex}")
}

Что здесь произойдет? Студия НЕ ОСТАНОВИТСЯ на строке
throw new Exception("бла бла бла");
Я НЕ ПОЛУЧУ вот такого окна, как на пикрил >>2886864
Что здесь непонятного?

Почему когда выскакивает исключение XamlParseException, программа останавливается на строке, где исключение возникло, как будто там нет блока try catch?
Аноним 22/10/23 Вск 14:12:32 #416 №2889763 
>>2889054
Тише, не гори, if (var != null) throw new NullPointerException() не так уж и плох. В конце концов, так на джаве очень долго делали и никто не ныл.
Аноним 22/10/23 Вск 15:33:28 #417 №2889862 
2023-10-22 15 33 01.png
>>2889580
Наличие блока catch вообще ни на что не влияет. Где студия остановится, а где нет - задается в настройках исключений, где есть какой то дефолт.
И если ты поставишь дефолт и откроешь список, то увидишь вот такую картиру (пик)

Почему такой дефолт? а хз.
Такая же трабла была и с asp.net. Они подгружали ресурсы через try...catch, что вызывало постоянные стопы на старте отладки. И не видели в этом ничего плохого, пока волна говна в их сторону не достигла размера которая все таки пояснила им что мешает банально разработке в студии.

>>2889763
А ему по прежнему не стыдно
Он даже не понимает какую дичайшую чушь он пишет.
Возможно (и даже очень вероятно) -он вообще не программист, а дворник что видел обложку книжки по шарпу, а у самого футболка с надписью жава
Аноним 22/10/23 Вск 19:30:06 #418 №2890161 
>>2889337
>Особенно в контексте того, что в EF который на фреймворке был - оно нормально выполнялось, а в Core - до сих пор какая-то хрень происходит.
Потому что в большинестве случаев на фреймворке (да и на core тоже до 2.1 включительно) все это на клиенте выполнялось, но просто молча. А потом майки сказали "нахуй магию из шарпа" и начали кидать на это дело исключение, заставляя кодеров чуть больше думать мозгами.

>>2889337
>Решили они, что теперь не хотят DataTime в обычном виде использовать - иди как дебил и переписывай все DateTime.Now на DateTime.UtcNow,

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

>>2889337
>Короче. Хрен знает чего ты пытаешься ЕФ защищать.
Ну наверное, потому что для меня это нормальный инструмент, с которым я работаю далеко не первый год и мне норм. И мне нахуй не уперлось работать с кодом где будут вещи вроде:
>руками вполне изи пишится SQL-запрос, который СУБД поймет и сделает.
Я лучше с экспрешенами "пострадаю".
Аноним 22/10/23 Вск 21:28:21 #419 №2890343 
>>2890161
>потому что для меня это нормальный инструмент
поддержку твоего оппонента. Если для тебя польза от еф перевешивают необходимость уживаться в его парадигме, то тебе конечно нормально.

>Я лучше с экспрешенами "пострадаю".
одно не заменяет другое. Пиши своим LINQ в linq2db или в repodb или в dapper том же. 100% LINQ, просто меньше магии и "а у нас вот так надо" (это я про те дбконтексты с их особенностями работы"). Про потребление памяти вообще помолчу
Аноним 23/10/23 Пнд 00:02:32 #420 №2890474 
>>2889862
Долго шарподебил будет плакать от отсутствия у него в языке нуллобезопасности?
Аноним 23/10/23 Пнд 00:16:11 #421 №2890480 
>>2890474
нисколько, ведь она присутствует. Это ж не говножава с ее "у нас лобок генерит рантайм проверки". В шарпе есть полноценный статический анализ в компильтайм. Ну разве что проблема если нужно поддерживать старые версии дотнета. А зачем это нужно? ВЕРНО, не нужно.

А значит никакие проверки на if(...=null) попросту не нужны.

Но жавадебил этого не поймет. Он же дворник с футболкой и фантазиями "эээх когда нибудь такое (на деле НИКОГДА) будет и в жаве"
Аноним 23/10/23 Пнд 00:18:38 #422 №2890481 
>>2890480
Этот ебанат правда не различает статический анализ и нуллобезопасность? Не хотел бы я таким же тупоголовым быть.
Аноним 23/10/23 Пнд 00:20:57 #423 №2890483 
>>2890481
нулл безопасность это как раз про проверки в компильтайм, а не рантаймовые проверки. Учи матчасть, дворник )
Аноним 23/10/23 Пнд 00:20:57 #424 №2890484 
Как же блядь ссут в ебальник косолобому копротивленцу, пиздец просто. И ведь раз за разом его обоссывают, а он продолжает визжать "рррря, врёти!" и "ррррря, нинужно!".
Аноним 23/10/23 Пнд 00:21:50 #425 №2890485 
>>2890483
Пиздец блядь даун... Ты как нахуй сосач-то открыть смог? Мамка помогала?
Аноним 23/10/23 Пнд 00:22:42 #426 №2890486 
>>2890485
твоя же. она у тебя молодец. во всем )
шарпа не знает, жавы не знает (как и ты), но вот помогает на двач зайти.
Аноним 23/10/23 Пнд 00:23:18 #427 №2890487 
>>2890486
>ррррря, твая мамка!
)
Аноним 23/10/23 Пнд 00:25:47 #428 №2890490 
>>2890487
не нравится правда? ну так не заходи в наш тред, жавист.
тем более с такими тупыми аргументами

у шарпа есть стат анализ на нулл, и есть возможность не просто варнинг, а запрещать компил. И приходит тут говноед и начинает вещать "ой как хорошо в жаве - там лобок генерит за нас рантайм проверки". На него смотрят как на дебила, поясняют, но он же дворник с фуболкой и не понимает.
Аноним 23/10/23 Пнд 00:27:08 #429 №2890491 
>>2890490
Этот микроцефал продолжает уверять меня, что статический анализ это ТО ЖИ САМАЕ, что и адекватная нуллобезопасность через типы.
Аноним 23/10/23 Пнд 00:28:24 #430 №2890494 
>>2890491
Это она самая и есть. Изучи матчасть что ли. Проверки на нулл этим не являются. Этим является различие в языке нулл типов и не-нулл типов и стат анализ этого самого.

Вали в свой тред, неуч
Аноним 23/10/23 Пнд 00:29:10 #431 №2890495 
>>2890494
>РРРРРРЯ ТОЖИСАМАЕ ТОЖИСАМАЕ!!!!!! ЯСКОЗАЛ!!!! СКОЗАААААЛ!!!!! МЯЯЯЯЯЯМ!!!!
)
Аноним 23/10/23 Пнд 00:31:39 #432 №2890497 
>>2890495
прими 2 факта
1 в шарпе есть стат анализ, который позволяет не писать проверки на нулл (ни самим, ни кодогеном, ни с божьей помощью)
2 в жаве этого нет. там есть лишь лобок, который позволяет написать эти проверки за IDE (хотя иде прекрасно их генерит) и получить РАНТАЙМ проверку

знаешь что такое РАНТАЙМ проверка? а это когда получаешь NRE и.... просто не знаешь что с ним делать ибо его быть не должно в принципе в нормальном языке
Аноним 23/10/23 Пнд 00:33:37 #433 №2890499 
>>2890497
>ТОООООООО ЖЖЖИИИИИИИИИИИ САААААААААМАААААААААЕЕЕЕЕЕЕ!!!!!!!
Долбоёб, повтори это ещё громче, и, наверное, это станет правдой.
Аноним 23/10/23 Пнд 00:57:11 #434 №2890508 
>>2890499
ты думаешь ты зашел в детсад где такие подходы работают? лол, ты на дваче. ты поел говна и твои попытки перефорса не работают.
Больше на твои аргументы в подобном стиле отвечать не буду (нехрен тупому жависту шарпортред засирать)

Тут нужно писать то, что полезно шарпистам. например то, что ReadOnlySpan<byte> = new {} как поле класса не вызовет аллокаций ибо рослин сделает так.

А не идиотов говном кормить (это приятно, но...надоедает тоже)
Аноним 23/10/23 Пнд 00:58:40 #435 №2890510 
>>2890508
Ясно, манюня опять получила говна за шиворот и в харчках убежала плакать. Каково тебе быть слитым по фактам и опущенным в целом в твоём собственном треде?
Аноним 23/10/23 Пнд 02:15:15 #436 №2890533 
>>2890510
говноед размечтался. обычное дело для жависта - мечтать
ха ха ха ха, ха
Аноним 23/10/23 Пнд 02:48:25 #437 №2890546 
>>2890533
Смотрю уже харчки отстирал. Ну держи ещё парочку, бегом снова стирать рубашку с брюками.
Аноним 23/10/23 Пнд 03:01:08 #438 №2890552 
ну молодец жавист. отбил последнее желание у шарпистов изучать жаву. ой да молодец.
Аноним 23/10/23 Пнд 03:20:49 #439 №2890561 
.png
Хих
Аноним 23/10/23 Пнд 03:26:21 #440 №2890562 
>>2890552
Если уж и размышлять, какое влияние оказало моё нахождение в этом треде на шарпоблядей, то уж точно не отвергающее джаву. Шарпоскотина это в первую очередь социоблядь, выбор петушарпа у которой произошёл вследствии соответствия антуража петушарпа антуражу их личности (если перейти на конкретику, терпильная быдлосоя выбрала терпильный быдлосоевый язык). Моё явное обоссывание твоего ебала авторитета в глазах соевого быдла тебе не добавляет, а соответственно прибавляет твоему оппоненту, то есть мне, и джаве, которую я защищаю.
Аноним 23/10/23 Пнд 03:58:33 #441 №2890572 
>>2890562
Посмотрите на этого идиота с уровнем развития первоклашки
И радуйтесь что вы не жависты
Аноним 23/10/23 Пнд 03:59:22 #442 №2890573 
>>2890572
Опущенное, не ворочайся.
Аноним 23/10/23 Пнд 06:47:08 #443 №2890686 
>>2890562
Выбрал шарп, потому что лет в 12 попалась книжка по Net 3.5, в которой был диск со студией и примеры программ, которые можно было тыкать.
Хуй знает при чем тут соя. Просто на фоне того же паскаля - это было небо и земля. Никаких бесящих begin, end, никаких :=, требований хуячить переменные в начале функции, никаких тупых разбиений на процедуры и функциихотя вот тут, именно сейчас я бы на самом деле прям на уровень языка засунул такое разбиение, и запретил в функции мутировать стейт в принципе, но это мои фантазии, так что похуй. Просто бери и пиши. И при этом в отличии плюсов, про которые тоже позже узнал - у тебя ВСЕ ЕСТЬ для жизни прямо вот, тута. Хочешь сайт - пожалуйста, хочешь графики - да вот они формочки, хочешь на лоулевел - да никто не запрещает.
А потом еще и закрепилось тем, что в вузе был выбор, джава-плюсы-шарп, для того чтобы ООП осваивать, и ессно я выбрал шарп, пока долбоебы-однокурсники ебались с плюсами.
Короче. К чему. К тому что не понял, хули ты до шарпа доебался. Не нравится - ну, так зачем в тред заходишь? Нравится - так не токси, тред невозможно читать из-за того сколько добра ты и прочие джава-неняши высераете.
sage[mailto:sage] Аноним 23/10/23 Пнд 14:42:12 #444 №2891031 
>>2889862
>Где студия остановится, а где нет - задается в настройках исключений, где есть какой то дефолт.
Ах вот оно что, спасибо!
Аноним 23/10/23 Пнд 16:23:58 #445 №2891129 
как правильно провернуть dictionary?.TryGetValue(key, out var foo), посоны?
компилятор говорит не знаю что у тебя там за out такой, unassigned local variable, а инициализировать foo чуть выше хоть и прокатывает но как-то убого смотрится. сейчас у меня вот так:
if(bar?.Dictionary != null && bar.Dictionary.TryGetValue(key, out var foo))
Аноним 23/10/23 Пнд 18:02:42 #446 №2891228 
image.png
А сейчас добрая феечка покажет вам, как при помощи .NET и щепотки магии - сделать CLI-утилиту.
Аноним 23/10/23 Пнд 18:21:34 #447 №2891254 
>>2889271
Гений, если читать про всё подряд то хуй что изучишь
Мне нужна книга которая позволит укрепить и систематизировать более продвинутые техники языка
Аноним 23/10/23 Пнд 18:33:00 #448 №2891270 
image.png
Собственно - каркас приложения - готов.
Аноним 23/10/23 Пнд 18:53:03 #449 №2891300 
image.png
Собственно. Вот так выглядит теперь точка входа.
Аноним 23/10/23 Пнд 19:10:39 #450 №2891320 
А ещё я сосу хуи.
Аноним 23/10/23 Пнд 19:19:02 #451 №2891332 
image.png
image.png
image.png
07a12a822dbd8944e0913de8f5a16cd9.png
Теперь напишем наши обработчики, метод их вызова и проверим что все работает как задумано.

Собственно - все. Мы написали свой каркас для CLI приложения. Далее - надо более правильный парсер аргументов использовать, добавить DI, ну и написать нужные нам обработчики.
Аноним 23/10/23 Пнд 19:21:05 #452 №2891333 
image.png
>>2891332
Эх. Копипастер.
Аноним 23/10/23 Пнд 19:32:30 #453 №2891345 
>>2891333
Это нужно говорить с русским акцентом.
Аноним 23/10/23 Пнд 19:34:57 #454 №2891347 
157cae58b5d3b809f9a69af3cfa6a6d9.png
>>2891332
>>2891300
>>2891270
>>2891228
Да. В очередной раз прошу ревью. Буду безмерно признателен.
Аноним 23/10/23 Пнд 19:35:53 #455 №2891349 
>>2891345
А это как? На русском же русский акцент - не слышно. Или я не понимаю чего-то?
Аноним 24/10/23 Втр 14:03:24 #456 №2892244 
Хочу ~2k$, есть чуть больше 2х лет работы, однако чувство будто нихуя не знаю
Или действительно нихуя не знаю, потому что на местах работы использовал шарп максимально примитивно (ибо не было необходимости выдрачивать что либо еще)
Вот например, как часто вы делегаты используете в работе?
Знакомые на го и жаваскрипте уже по 4-7к$ делают, хотя вроде и не дрочат литкоды ебаные, сидят по вечерам со мной в дискорде и играют в доту
Аноним 24/10/23 Втр 14:34:58 #457 №2892272 
>>2892244
> 7к$
Сикока-сикока? Это где такие зарплаты?
Аноним 24/10/23 Втр 14:45:11 #458 №2892288 
>>2892272
Голанг, в основном с криптой работал
На предыдущей 5500$ делал
Аноним 24/10/23 Втр 15:48:17 #459 №2892373 
Почему по тому же реакту куча туториалов на ютубе от модных молодежных зумеров, а по razor pages фиг чего годного найдешь, да и то половина материалов от индусов? Нашел Флёнова, он как, котируется? На офф сайте майкрософт какие-то макакинговые туториалы, тупо повторяй, ткни сюда, нажми здесь, в итоге сайт готов, а что, зачем, почему, ни хера не понятно. В шапке треда материалы не особо свежие. Какая сейчас самая модная молодежная литература для вката в asp и razor pages в частности?
Аноним 24/10/23 Втр 15:51:46 #460 №2892381 
>>2892373
Razor pages мертвая технология, которую никто не использует.
Аноним 24/10/23 Втр 15:58:02 #461 №2892396 
>>2892381
А что от MS учить вместо нее?
Аноним 24/10/23 Втр 16:02:10 #462 №2892406 
>>2892396
Asp net и react
Аноним 24/10/23 Втр 17:07:19 #463 №2892500 
>>2891228
ПОГОДИТЕ. В ПЕТУШАРПЕ ПРАВДА ЧТО ЛИ ЧТОБЫ СДЕЛАТЬ ПЕРДОЛЬНОЕ ПРИЛОЖЕНИЕ НУЖНО ВОТ ТАК ПЕРДОЛИТЬСЯ?
Аноним 24/10/23 Втр 17:15:12 #464 №2892508 
169815623667163089.jpg
Ещё раз убеждаюсь, что петушарп не просто убогий клон джавы, а это просто какой-то фарс на манер так любимых нашими чиновниками обвалившихся деревянных халуп, закрытыми полотнами с нарисованными нормальными домами.
Аноним 24/10/23 Втр 17:56:06 #465 №2892585 
>>2892381
Петушарп в принципе мёртвая технология.
Аноним 24/10/23 Втр 18:13:56 #466 №2892617 
>>2892244
>Вот например, как часто вы делегаты используете в работе?
Примерно постоянное, лол. Но это я, добрая феечка.
Аноним 24/10/23 Втр 18:14:58 #467 №2892618 
>>2892500
Как "так"?
Аноним 24/10/23 Втр 18:16:51 #468 №2892620 
>>2892244
а как можно не использовать делегаты. они ж везде. это нужно прикладывать усилия чтобы избегать их
Аноним 24/10/23 Втр 18:21:34 #469 №2892631 
>>2892620
Ну. МБ он про хуевые примеры использования с:
Add, Remove, Combine и прочей ересью, которую везде на уровне соглашений запрещают.
Аноним 24/10/23 Втр 19:06:25 #470 №2892657 
>>2892631
а что в них плохого
такие делегаты - обычные иммутабельные списки делегатов.
Аноним 24/10/23 Втр 19:12:11 #471 №2892663 
какое же ООП говнище, пойду f# лучше учить я ебал
Аноним 24/10/23 Втр 19:21:42 #472 №2892676 
>>2892657
То что ты потом заебешься отлаживать код, в котором кто угодно - где угодно нахуевертил. Это как минимум.
Ну срсли.
Вот в коде где-то в дебрях

Task OnRequest(Func<Context, Task> handler){
handler -= handler;
handler += MyLogger;
return next(handler);
}

Как быстро ты найдешь это вот? Да нифига не быстро.
Аноним 24/10/23 Втр 20:23:17 #473 №2892793 
>>2892396
Asp.Net Core + React
и/или
Asp.Net Core + Blazor Server
Аноним 24/10/23 Втр 20:25:44 #474 №2892801 
>>2892663
Ты не осилишь. Просто смирись, что придётся тебе до пенсии вызывать методы у объектов.
Аноним 24/10/23 Втр 20:50:34 #475 №2892867 
Как избавиться от того, что мой код на 80% состояит из классов вида Handler, Context, Dispatcher, Evaluator?

А половина методов Invoke, On<T>, Start, Stop, Run?

Просто как-то мне кажется, что это нифига не правильно. Но с другой стороны - 90% моего кода - это не бизнес логика, а инфраструктурный код. Но все равно.
Аноним 24/10/23 Втр 20:55:59 #476 №2892880 
>>2892867
Инфраструктурный код и должен иметь такие нейминги.
Аноним 24/10/23 Втр 20:56:11 #477 №2892881 
>>2892244
ты выбрал мертвый стек, братан. Пока молодые шутливые гоферы на втором году выходят на 200к, клепая круды, у шарпера на эту же сумму будут спрашивать глубокие кишочки, знание реакта, знакомство с кубером и настройку CI/CD
Аноним 24/10/23 Втр 21:18:56 #478 №2892926 
>>2892881
Уходи.
Аноним 24/10/23 Втр 22:06:50 #479 №2893028 
>>2892881
Согласен с >>2892926, иди нахуй. Джавоёбы в треде серут хотя-бы по делу, а говноблядь что предложить может?
Аноним 24/10/23 Втр 22:29:06 #480 №2893077 
cirnotouhoudrawnbytonbi095185f48319be1754b.jpg
Почему вы не хотите ревьюить мой код?
Он настолько всратый разве? Я вроде старался жи.
Аноним 24/10/23 Втр 22:48:43 #481 №2893105 
>>2893077
Ты шарπомуха.
Аноним 24/10/23 Втр 22:51:27 #482 №2893108 
>>2893105
Ты пидор.
Аноним 25/10/23 Срд 22:54:04 #483 №2894590 
>>2893077
>Почему вы не хотите ревьюить мой код?
Чел, я даже на работе на код-ревью хуй кладу. Просто ставлю аппрув и все.
Так что можешь считать, что твой код - норм. Но да - я даже не смотрел его.
Аноним 26/10/23 Чтв 00:09:02 #484 №2894669 
1.jpg
Нахуя и зачем везде дрочат на ПрИнЦиПы ООП, если еблухины не могут даже определиться с этими принципами? Да они даже не могут определиться с количеством этих принципов, то абстракцию считаем, то не считаем. Причем, какую бы статью или видос ты не открыл и что бы там не высрал автор (причем высирают, зачастую, диаметрально противоположные вещи), половина комментов обязательно будет состоять из вот такого:
>Хорошо рассказываете, уверенно. Прошу указать ссылки на литературу, ведущие к определениям "инкапсуляции" и "чистого ооп", или это лично ваши определения, полученные после реального кодинга?
Или других вспуков, в которых будет ясно даваться понять, что автор, вообще-то, долбоеб и сказал неправду, но как правильно - хуй его знает.
Такое ощущение, что эту ебалу высрали и спрашивают на каждой вакансии специально, чтобы каждый у себя в черепушке придумал личное определение, а потом с ебалом пикрил смотрел на тех, кто выдумал другое определение.
готовлюсь обосраться на собесах
Аноним 26/10/23 Чтв 00:19:22 #485 №2894680 
>>2894669
Чтобы траллить лалок на собесах. Если кандидат назовёт абстракцию, то говорим, что нихуя, а если не назовёт, тогда говорим, что он забыл её упомянуть.
Аноним 26/10/23 Чтв 02:12:40 #486 №2894869 
>>2894669
Вот этот базанул.
Аноним 26/10/23 Чтв 11:37:43 #487 №2895166 
>>2894669
>Да они даже не могут
А эти загадочные 'они' сейчас с тобой в одной комнате находятся? Ты их видишь?
Аноним 26/10/23 Чтв 12:59:15 #488 №2895219 
>>2895166
Не, это плоды моего воображения пишут статьи, в которых одни и те же примеры выступают то реализацией абстракции, то полиморфизма, то "лол, у вас че, абстракция это отдельный принцип?))0", то "хех, мда, у них сокрытие это инкапсуляция)))))0".
Я это выдумал, разумеется, а если ты откроешь любую статью или видимокролик, то там, конечно, будет все одинаково объяснено.
Аноним 26/10/23 Чтв 13:16:01 #489 №2895246 
>>2895219
А ну как парень поясни чем отличаются прокси, адаптер, фасад, стратегия?
когда в реализации они похожи друг на друга как братья.
Аноним 26/10/23 Чтв 13:24:10 #490 №2895255 
Почему компилятор ругается
>""Binding" невозможно задать в свойстве "DataContext" типа "ObservableResourceTemplates". "Binding" можно задать только в параметре DependencyProperty объекта DependencyObject."

Хотя оба класса, свойства которых связываются, реализуют INotifyPropertyChanged. Почему требуется именно DependencyProperty?
Аноним 26/10/23 Чтв 13:38:22 #491 №2895269 
>>2895255
Ну вот такая вот дефолтная реализация. Она реализует паттерн "приспособленец" и как то вот так вот.
DependencyProperty очевидно используется как ключ, поэтому он и задается как статическое поле.

Вообще хз как она под капотом работает
Если ты свяжешь dp <-> dp <-> INPC (по логике 2 канала связи) то хрен ты можешь потом прервать связь между dp <-> INPC. У тебя есть только ClearBinding который разрушает вообще всё.

Почему нет для INPC? ну тогда там не получится использовать "приспособленец", а это будет уже другая реализация для таких случаев. И видимо решили не усложнять себе жизнь.
Аноним 26/10/23 Чтв 13:43:17 #492 №2895273 
>>2894669
> лично ваши определения, полученные после реального кодинга?
Лично по моим ощущениям ООП состоит из:
1. У нас есть объектные типы данных, далее просто типы.
2. Для типов существует процедура конструирования экземпляра типа.
3. У типов есть атрибуты ака члены, значения или контекст которых принадлежат сконструированному экземпляру.
Всё. Процедура деконструкции экземпляра уже не входит в этот список, потому что уже опциональна. Наследование уже не входит в этот список, потому что опционально и является не принципом, а паттерном.
Много лет я считаю эти 3 пункта самодостаточным определением ООП, а все остальные инкапсуляции с полиморфизмами - это наносное. Это можно делать не только с объектами, не только в ООП. Например, инкапсуляция (in-capsule) - код отдельного модуля программы самодостаточен и независим внутри модуля. Где тут ООП? или например сокрытие. Права доступа к переменным и функциям. Это могут быть атрибуты объекта, м аогут быть просто функции беООПного языка. Или полиморфизм. Его можно достичь через наследование классов в ООП, а можно через наследование текстовых модулей без ООП. Не вижу непреодолимых причин, чтобы так сделать, и в седые 80 так и делали при помощи инструкций компилятора. #IF FOO INCLUDE bar.inc ELSE INCLUDE baz.inc #ENDIF Чем не полиморфизм?
>>2894680
> Если кандидат назовёт абстракцию
Ну и как абстракция может принадлежать ООП если абстракция существовала до ООП, прямо в тот момент, как с перфокарт на ассемблер пересели и появился первый слой абстракции.
Аноним 26/10/23 Чтв 14:01:31 #493 №2895288 
>>2895273
Вот я литературно об этом и говорю. Все носятся с каким-то "принципами" и считается, что это такое "общее знание", которое всем доступно и у всех одинаково (примерно как "что такое int"), а на деле каждый придумывает для себя собственную поебень, которая не имеет ничего общего с поебенью в голове другого человека. В итоге люди говорят об абсолютно разных сущностях, по какой-то нелепой причине называя их одинаково.
В чем смысл абстрактных "принципов", если общие у пользователей только названия этих принципов, а то, что под этими названиями понимается, индивидуально. Это как если бы у каждого в голове было свое кардинально иное понимание, что такое "хлеб", один бы говорил, что это пончики, другой говорил, что это батон, а третий был бы уверен, что его в кастрюле нужно отваривать и вилкой жрать. Вроде как что-то общее есть, но нахуя тогда понятие "хлеб" нужно - непонятно.
Аноним 26/10/23 Чтв 14:11:37 #494 №2895298 
>>2895288
ИМХО, реально знать и учить следует SOLID и паттерны. Вот они должны быть в наших головах абсолютно идентичны и соответствовать тому, что наизобретали в банде четырёх.
Аноним 26/10/23 Чтв 14:13:48 #495 №2895299 
>>2895298
>Вот они должны быть в наших головах абсолютно идентичны и соответствовать тому, что наизобретали в банде четырёх.
но это глупость.
1 паттерны изобретались для си. На других языках они могут быть выражены иначе или не нужны вовсе
2 паттерны НЕ НУЖНО реализовывать дословно. Нужно идти к паттерну и остановиться когда задача решена.
Аноним 26/10/23 Чтв 14:13:57 #496 №2895300 
>>2895288
> литературно
Буквально. Literally - это буквально, а не литературно. Литературно - это literaturic.
Аноним 26/10/23 Чтв 14:16:32 #497 №2895304 
>>2895299
> паттерны изобретались для си
На си, но не для си.
> На других языках они могут быть выражены иначе или не нужны вовсе
Ложь.
> паттерны НЕ НУЖНО реализовывать дословно
Паттерны это алгоритмы.
> Нужно идти к {алгоритму} и остановиться когда задача решена.
Ну как бы да, но из-за каши в голове ты пишешь чушь.
Аноним 26/10/23 Чтв 14:20:51 #498 №2895310 
>>2895304
>>2895299
Так стапэ, погоди ругаться. Я тебе так скажу. До изобретения "паттернов" начинающим программистам рекомендовали учить типичные общие алгоритмы. Потом кто-то придумал "дизайн паттерны", а потом "SOLID", и эти понятия подменили алгоритмы как синоним. Суть осталась та же. Общие алгоритмы. Они не зависят от языка. Да, на разных языках они будут синтаксически реализовываться по разному, но вычисляться будет одинаковый результат, решаться будет одинаковая задача. Понимаешь?
Аноним 26/10/23 Чтв 14:20:51 #499 №2895311 
>>2895304
>не для си.
ДЛЯ си
посмотри реализации паттернов этих на других языках у увидишь что все иначе
>Ложь.
сколько языков изучал? ) ты темой точно не интересовался
>Паттерны это алгоритмы.
нет. это ОБЩИЕ РЕШЕНИЯ. какие то задачи люди решают и приходят к похожим решениям. Вот эти решения обобщили и выдают как паттерны, чтобы была унификация. Польза от паттернов это коммуникация, а не само решение. Само решение - оно и так приходит.
>но из-за каши в голове ты пишешь чушь.
это не моя мысль. эту мысль задвигает
Джошуа Кериевски: Рефакторинг с использованием шаблонов
и я с ним полностью согласен.
Аноним 26/10/23 Чтв 14:21:27 #500 №2895312 
>>2895311
Перечитай предыдущий пост.>>2895310
Аноним 26/10/23 Чтв 14:23:03 #501 №2895314 
>>2895311
> эту мысль задвигает
> Джошуа Кериевски
Этот зумер не знает основ информатики, а ещё книги пишет. Да пошол он нахуй с моих двачей!
Аноним 26/10/23 Чтв 14:23:18 #502 №2895315 
>>2895310
паттерны и SOLID это разные принципы вообще.
первое это КОНКРЕТНЫЕ архитектурные решения, а второе - общие рекомендации на тему чистого кода.
И никогда они не были синонимами.
Аноним 26/10/23 Чтв 14:24:24 #503 №2895318 
>>2895315
> первое это КОНКРЕТНЫЕ архитектурные решения
Читаем >>2895246 думоем.
К - конкретика.
Аноним 26/10/23 Чтв 14:27:42 #504 №2895323 
>>2895314
у нас тут знаток ))). не буду с ним спорить
Аноним 26/10/23 Чтв 14:28:41 #505 №2895324 
>>2895315
> общие рекомендации на тему
Алгоритм это и есть общая рекомендация на тему кода. Алгоритм не предписывает, каким словом следует описать например, цикл, алгоритм просто говорит "возьми вот эти данные и в цикле умножай каждый элемент на 2" и всё. А уже в языке сишник сделает так, а фортранщик сделает эдак.

Поэтому я остаюсь при своём.
1. В алгоритмах есть конкретика решения задачи.
2. В алгоритмах нет конкретики языковых инструкций.
3. Принципы SOLID - это алгоритмы.
4. Дизайн паттерны - это алгоритмы.

Мнения зумеров с умными ебалами на этот счёт меня не интересуют.
Аноним 26/10/23 Чтв 14:29:07 #506 №2895326 
>>2895323
Молодец. Молчишь - умнее выглядишь.
Аноним 26/10/23 Чтв 14:50:06 #507 №2895380 
>>2895288
>Все носятся с каким-то "принципами"
Может быть у тебя в голове носятся, либо насмотрелся роликов с ютуба. Сам миллион раз шел своим путем, пока не упирался в тупик. Возможно есть клоунские паттерны, а возможно ты еще не встретил ситуации, где эти паттерны тебе пригодились бы. И пока тебе это нахрен не нужно, ты смотришь на них как на абстрактное ненужное говно.

Если ты из тех долбоебов, которые сперва учат паттерны, а потом находят для них причину, то тут можно выразить только сочувствие.
Аноним 26/10/23 Чтв 14:52:38 #508 №2895388 
>>2895380
Я из тех долбоебов, что хотят на РАБотку устроиться, а так уж получилось, что собесы не обходятся без принципов ооп
Аноним 26/10/23 Чтв 15:02:40 #509 №2895420 
>>2895388
Тогда тебе следует сперва сделать какой нибудь пет-проект, чтобы уткнуться носом в несостоятельность собственных убеждений. Иначе никак.

Банально сделай какой нибудь свой проводник, чтобы у тебя на множестве окон синхронизировались данные, чтобы эти данные имели разное визуальное представление, чтобы эти окошки могли как угодно стакаться. Я посмотрю как ты обойдешься без единого паттерна.
Аноним 26/10/23 Чтв 15:09:19 #510 №2895435 
>>2895324
>Я из тех долбоебов, что хотят на РАБотку устроиться, а так уж получилось, что собесы не обходятся без принципов ооп
А ты задвигай на собесах еще побольше дичи вроде такой:
>3. Принципы SOLID - это алгоритмы.
>4. Дизайн паттерны - это алгоритмы.
Тогда ты еще долго не сможешь устроится.

Ты похож на долбоеба практиканта, который пришел на завод. Ему говорят "Подай вон те пассатижи", а он начинает выебываться на тему "Это не пассатижи, а плоскогубцы" и задвигает лекцию на полчаса в чем их отличие, вместо того, чтобы сделать то, о чем его просят. Естественно его закономерно считать душнилой и шлют нахуй.
Аноним 26/10/23 Чтв 15:09:24 #511 №2895436 
>>2895420
О какой "несостоятельности убеждений" речь? У меня нет никаких убеждений, я просто хочу прочитать про общепринятые понятия, а оказывается, что они нихуя не общепринятые и это какая-то шиза, которую каждый для себя выдумывает. Жопа у меня сгорела не от того, что в моем голове понятия другие, а от того, что гаврики не могут к какому-то консенсусу прийти, чтобы разные штуки одним и тем же словом не называть.
Аноним 26/10/23 Чтв 15:52:08 #512 №2895474 
>>2895435
Ты ведь понимаешь, что в этом треде пишут разные люди и, зачастую, в одной и той же ветке диалога?
Аноним 26/10/23 Чтв 16:00:47 #513 №2895492 
>>2895474
Похуй. Контекст и позиция одинаковы, значит это один собеседник. Даже если под капотом там действительно разные люди.
Аноним 26/10/23 Чтв 16:02:03 #514 №2895494 
>>2895326
Чего спорить со знатоком )
Его ж даже не смущает значение слова "паттерн"
И что солид называют набором принципов

У знатока же ....алгоритм)) золотого молотка
Аноним 26/10/23 Чтв 21:49:50 #515 №2895882 
>>2891347
Вбей в нюгете в поиск "CommandLine" и не изобретай велосипед.
Аноним 26/10/23 Чтв 22:14:33 #516 №2895900 
d44a6d07ae782223500f0c6e87af067e.png
image.png
>>2895882
Так не интересно, няша.
Типа блин. Ну, я могу и взять тот же кестрел и использовать его как TCP-сервер, просто добавив туда коннекшон-хендлер. Но так же нефига не интересно. Плюс - в процессе учишься новому, узнаешь нюансы и все это вот.
Типа не знаю. Я все равно, считаю, что есть разница, между тем - ты представляешь в голове как это сделать, и ты на практике делал и все грабли собрал. Короче. Не знаю. Да. Вот. Да.
Аноним 26/10/23 Чтв 22:33:47 #517 №2895913 
>>2895900
>Ну, я могу и взять тот же кестрел и использовать его как TCP-сервер, просто добавив туда коннекшон-хендлер
а можешь?
Аноним 26/10/23 Чтв 22:42:23 #518 №2895917 
Не можешь.
Аноним 26/10/23 Чтв 22:53:23 #519 №2895928 
image.png
image.png
image.png
>>2895913
>>2895917

А что мешает-то, лул?
Другое дело, что кестрелл - заточен под этот ваш HTTP и там слишком много всего под него, а если будешь пытаться наворачивать какой-нибудь IRC или что-то в этом духе - просто залюбишься до смерти.
Аноним 26/10/23 Чтв 22:58:48 #520 №2895942 
>>2895928
Ну и да. Сверху - не факт, что вот это вот апи - оставят для публичного пользования. Хотя оно еще в 3.0 появилось и пока не убрали, но занаем же майков и что они иногда могут решить, что не нужно.
А бедрок, который на базе кестрелла делали - давно не подает признаков жизни что-то, как был экспериментальным, так и остался. Печаль-беда.
Аноним 27/10/23 Птн 00:03:40 #521 №2895996 
>>2895928
А кестрел без этого вашего вебхост?
Аноним 27/10/23 Птн 05:09:40 #522 №2896081 
16383608863370.png
Привет всем.
Подскажите, пожалуйста, чем вы пользуетесь в своих asp проектах для авторизации?
Мне нужно уметь создавать пользователей, логины/пароли, и прописывать методам апи в контроллерах разделение по ролям.
Пользовался внутренней системой(был отдельный сервис общий для всех авторизаций и пакет нугета локальный, делающий это в 5 строк), но щас сказали пилить именно независимую от внутренней свою.
Аноним 27/10/23 Птн 07:06:40 #523 №2896099 
>>2895996
Просто придется возиться с тем, чтобы прокинуть ему все его офигенные зависимости. Фактории слушателей, опции, сервисы, лимиты, фактории логгера, и вот это все вот остальное. Дальше - server.StartAsync(MyApplication, cancellationToken).
Веб-хост то что делает. Он всю эту хреноту вместе собирает, потом - берет и из мидлваров и прочего добра билдит IWebApplicatio, потом всем серверам в StartAsync прокидывает этот IWebApplication.
С кестрелом-то ничего не прячут, пока что - все апи, практически, public, и если хочется - можно поиграться.
Я это к чему? К тому что ну, можно без веб хоста, просто придется то же самое, что он делает - делать руками. Это не сложно, просто тогда бы листинг раздулся, хотя суть бы не поменялась.
Аноним 27/10/23 Птн 07:10:45 #524 №2896100 
>>2896099
А, ну и да. Я тут вижу, что вроде как в последних версиях - поменяли вроде апи кестрела слегка. Раньше он вообще без IWebApplication вроде как нормально работал, по крайней мере я так помню, хотя это было давно, я могу уже путать.
Потому что опять - я на нем - делал в свое время свой чатик поверх TCP, но слишком много возни было из-за того что много лишнего для меня было, и решил уже переключиться как человек на сокеты.
Аноним 27/10/23 Птн 10:41:09 #525 №2896181 
Есть ли список действительно сложных вопросов на мидла и сеньора которые задают на собеседовании? Гуглинг постоянно высирает сотни одних и тех же вопросов для джунов
Аноним 27/10/23 Птн 12:39:40 #526 №2896279 
>>2896181
Просто потому что сенек спрашивают ровно то же самое. Отличие лишь в том, что у джуна это будет растянуто почти на весь собес, а у сеньки это будет максимум половина. Вторую половину он будет пояснять про свой личный опыт и работу с конкретными технологиями. Ну и у сеньера еще есть читерская опция для ответов на вопросы по теории "я уже давно с этим не работал, не помню".
Аноним 27/10/23 Птн 13:02:58 #527 №2896326 
>>2896279
Ну окей, а на мидла? Хочу уже апнуться до миддла, надо бы к собесам подготовиться
Аноним 27/10/23 Птн 16:33:46 #528 №2896711 
>>2895436
>О какой "несостоятельности убеждений" речь?
вот от этой
>это какая-то шиза

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

>разные штуки одним и тем же словом не называть
Еще раз, пока ты не столкнулся с проблемой, тебе все будет казаться одним и тем же, потому что твой моск не обращает внимание на нюансы. Хули тут пиздеть, бывало анон ИТТ употребит одно слово, которое меняет ВООБЩЕ ВСЁ, но пока ты не знаешь что это — для тебя это пустота и ничего не значит.
Аноним 27/10/23 Птн 17:38:59 #529 №2896793 
А потому еще загуглите когда нибудь "метафоры в программировании" и о новый дивный мир )))))))))))
Аноним 27/10/23 Птн 18:03:39 #530 №2896806 
Какие подводные в создании оберток для асинхронных методов такого типа:
public string ReadTextFile(string filename){
IAsyncOperation operation = File.ReadAsync(filename);
while(operation.State != complete){
Thread.Sleep(10);
}
return operation.Result;
}
Аноним 27/10/23 Птн 18:11:46 #531 №2896814 
>>2896806
Пиздец.
Аноним 27/10/23 Птн 18:53:32 #532 №2896838 
>>2896806
Дедлок, самое простое. При этом - ты его хуй отловишь.
Второе - неэффективное использование ресурсов процессора. Твой тред - проставивает хуй пойми для чего.
Третье - тима будет считать, что ты долбоеб, и на первом ревью - отправят на мороз.

А так - никаких.
Аноним 27/10/23 Птн 18:56:44 #533 №2896839 
>>2896838
Можешь объяснить из-за чего тут может возникнуть дедлок?
Аноним 27/10/23 Птн 18:58:58 #534 №2896840 
>>2896839
Оборачиваемый метод может что-то запустить внутри себя
И если у тебя есть контекст синхронизации то дедлок
Аноним 27/10/23 Птн 19:00:01 #535 №2896841 
>>2896840
Где почитать про контекст синхронизации?
Аноним 27/10/23 Птн 20:31:21 #536 №2896951 
>>2896841
не нужно про него читать.
он сам тебя найдет
и ЗАДЕДЛОЧИТ ))
Аноним 27/10/23 Птн 21:24:04 #537 №2897017 
По ddd весь домен должен быть изолированным, то есть интерфейсы репозиториев и сервисов нельзя хранить в domain слое? Но как тогда внедрять репозитории, если это требуется инвариантом?
Аноним 27/10/23 Птн 21:43:18 #538 №2897037 
>>2897017
По DDD - уровень домена - может пользоваться интерфейсами инфраструктуры, но не должен знать про детали реализации этой самой инфраструктуры. И соотвтетственно пользоваться этим.
Т.е. ты можешь слинковать сборку MyApplication.Domain с MyApplication.Infrastructure.Abstractions, где лежат интерфейсики сервисов, репозиториев и т.д.. Но уже на уровне приложения - ты пропишешь домену, какие конкретно реализации этих абстракций надо использовать.
Аноним 27/10/23 Птн 21:50:06 #539 №2897040 
>>2897017
Про то, ложить ли интерфейсы рядом с доменом.
А зачем? Что тебе полезного это даст? Если тебе эти интерфейсы нужны где-то еще, хочешь, чтобы потребитель - имел доступ ко всем этим интерфейсам?
Ну, т.е. ты можешь так сделать, и прямо это DDD не нарушит, если у тебя микросервисная архитектура, и сервисы твои разбиты так, что не возникает пересечений - можешь в той же сборке хранить.
Аноним 28/10/23 Суб 00:08:25 #540 №2897186 
2023-10-2723-50-42.png
Можно как-то повлиять на порядок биндинга к DependencyProperties? Я не понимаю по какому принципу идет этот порядок.

К примеру пикрил (на названия свойств не обращайте внимание). Но как бы я не менял порядок, у меня первым делом идет привязка свойств Key, Value, MainViewModel.
Аноним 28/10/23 Суб 01:34:38 #541 №2897221 
>>2896806
Пиздец проиграл с помойного петушарпа. В джаве эта задача выполняется созданием одного Future. Добавлю это в свой список попуска шарподаунов и буду им каждый раз при втрече в ебало тыкать тем, что у них в языке нет возможности подождать выполнение задачи из одного потока в другом. Как вы вообще живёте блядь?
Аноним 28/10/23 Суб 01:37:19 #542 №2897222 
>>2897221
Смотрим и смеемся с тупого жаводебила

Чтт спросить то хотел?
Аноним 28/10/23 Суб 01:40:41 #543 №2897223 
>>2897222
Почему в помойном петушарпе нет поддержки асинхронности?
Аноним 28/10/23 Суб 01:42:09 #544 №2897224 
Ёбаные пидорахи, им на еблище серут, а они слизывают и оправдывают своё обосраное ебало. Как называется эта болезнь?
Аноним 28/10/23 Суб 06:36:04 #545 №2897263 
>>2852022
>Шарпаны, что думаете от чистоте крови функции?
Не слушай этих кретинов, которые тебе отвечали.
Во-первых, подели все свои классы на классы данных и сервисы.

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

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

Таким образом, методы получаются чистые, код становится значительно проще, пропадает всякая неведомая магия, ну и тесты становится писать очень легко.
Аноним 28/10/23 Суб 06:39:44 #546 №2897265 
>>2897223
Ты, вероятно, совсем долбоёб.
Асинхронность в шарпе есть, и она значительнл лучше, чем в джаве. Вообще, в джаве есть только одна фишка, которой не хватает шарпу: анонимные реализации интерфейсов.
Все остальное в шарпе на голову выше.
А код, на который ты ссылаешься, это как раз пример того, как делать не надо.
Аноним 28/10/23 Суб 06:42:02 #547 №2897267 
хочу .net но знаю только js, че делать?
Аноним 28/10/23 Суб 07:41:52 #548 №2897280 
>>2897263
> Вторые должны не содержать никакого состояния. Они могут иметь другие сервисы в виде полей, или даже инжектированные неизменяющиеся данные (например, конфигурацию приложения), но не более того.
А как же контекст бд?
Аноним 28/10/23 Суб 07:55:11 #549 №2897282 
почитал полтреда, половина вопросов про core. Нахуй это если есть js со всеми производными для вэба? вы тут совсем обезумели?
Аноним 28/10/23 Суб 08:30:37 #550 №2897290 
>>2897265
>асинхронность есть и лучше яскозал!
>чтобы подождать выполнение задачи нужно вставать в бесконечный цикл
)))))))))
Аноним 28/10/23 Суб 08:33:36 #551 №2897291 
>>2897265
>в ответ на аргументы повторяет мантру
Чем ты болеешь?
Аноним 28/10/23 Суб 08:34:15 #552 №2897292 
>>2897291
Пидорахизм, сэр. Терминальная стадия.
Аноним 28/10/23 Суб 10:47:33 #553 №2897357 
>>2897290
Чел. Там анон на какой-то хуй решил этой хуйней пострадать.

В реальности так никто не пишет.

И да, асинхронность в шарпе таки лучше джавовской.
Аноним 28/10/23 Суб 11:23:53 #554 №2897381 
>>2897357
> В реальности так никто не пишет.
Я пишу, если нужно в конструкторе аснхронный метод вызвать
Аноним 28/10/23 Суб 11:30:05 #555 №2897387 
>>2897381
Нахуя тебе в конструкторе, блядь, асинхронный метод вызывать?
Ну серьезно. Если чтобы проинициализировать объект вот такая хуйня нужна, то лучше факторию или билдер уже мутить, а в конструктор ложить результаты выполнения.
Потому что я так думаю, потому что единственный кейс где я вижу надобность асинхронного выполнения в конструкторе - это если тебе в базу зачем-то лезть надо, с диска читать, вот это вот, а если это надо, то ну рил, ты хуйню придумал, делай нормально, нормально будет.
Аноним 28/10/23 Суб 11:57:40 #556 №2897420 
>>2897381
старайся так не писать.
конструктор должен быть легковесным только для распихивания данных, без логики
Аноним 28/10/23 Суб 12:04:27 #557 №2897433 
Блять, аноны, вакансий для джунов и стажеров в ДС вообще нахуй нет уже 3 недели, ни одной.
Это все? Пора бомжевать?
Аноним 28/10/23 Суб 12:06:19 #558 №2897436 
>>2897433
Ходи на собесы, где ничего про грейд не сказано, а ищут некоего .net-программиста.
Аноним 28/10/23 Суб 12:34:20 #559 №2897478 
Блин. Пацаны.
Как же я хочу, чтобы конструктор в шарпах так и назывался: constructor.
Почему надо было делать конструктор с именем класса-то? В чем сакральный смысл такого мува-то?
Аноним 28/10/23 Суб 12:35:13 #560 №2897480 
>>2897387
>это если тебе в базу зачем-то лезть надо
Какой дурак лезет в базу при создании нового экземпляра?
Это вредительство какое-то. Время, когда экземпляр создается, редко совпадает со временем, когда этот файл используется.

Вот, банальная ситуация у меня щас. Пилю темы для UI. Каждая тема — это класс с Uri на файл с ресурсами. Но чтение с диска идет ровно тогда, когда я эту тему собираюсь применить или отредактировать.
Потому что этих тем может быть 100500, но не все будут использованы.
Я просто не представляю, чтобы при заполнении коллекции этих 100500 тем, каждое из этих говен незамедлительно читало бы все содержимое файлов.

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

Вам в капче когда нибудь попадалась задачка с нулем? Например 45 + ... = 45
Аноним 28/10/23 Суб 12:40:44 #561 №2897482 
>>2897478
Когда с бейсика переходил, тож сложно было въехать. Даже сейчас всегда подписываю ctor, иначе хрен найдешь. В бейсике в конструкторе стоит New вместо названия класса и это совпадает с New() при объявлении.

А еще бесило, что тип элемента идет впереди названия, хотя все ищут по имени, а тип — второстепенная информация. К тому же список полей и свойств всегда выглядит как ебаная лесенка из-за разной длины типов.
Но зато каргокультно и уважаемо, как и ";"
Аноним 28/10/23 Суб 12:50:58 #562 №2897495 
>>2897482
Ну. Меня это бесит потому что когда у тебя разрастается количество классов в проекте - IntelliSence с ума сходит. А я по сути без него и не могу уже кодить.

Типа вот у меня есть уже есть класс CalculateMonthSalaryJob, а я добавляю новый CalculateMonthSalaryBonusJob. И автоподсказка - будет настойчиво мне пропихивать первый, а потом красным все выделять, что это же метод, значит надо возвращать значение. А ебанутая автоподстановка в последних версиях - вынуждает меня - после того как хуйню IntelliSence предложил - клацать Backspace и вводить правильно. А был бы просто constructor - такая хрень вообще никогда бы не возникла.

Опять же - более редкие кейсы - я добавляю в базовый класс новый параметр конструктора. Теперь надо пройтись по всем дочерним и проставить его там, хотя у них у всех - одинаковая сигнатурка. Был-бы просто constructor - я бы мог в папке Find-Replace сделать и жить нормально. Но тут я уже наученный опытом этой хуйни - давно сразу базовому классу делаю класс BaseClassSettings и если в нем чет добавляю, потому и говорю, что более редкий сценарий.
Аноним 28/10/23 Суб 13:11:22 #563 №2897512 
Не палите быдлу снипет ctor + Tab Tab...
Аноним 28/10/23 Суб 13:14:17 #564 №2897515 
>>2897512
Я сниппеты выпилил по той же причине. Ебанутость интелли-сенса, когда я хочу переменную назвать cw - а эта хуйня мне Console.WriteLine пишет. Да и неудобно нихуя.
Аноним 28/10/23 Суб 13:17:11 #565 №2897518 
>>2897515
Но этот снипет работает только на пустой строке... Как ты собрался объявлять переменную не указав тип или не написав var перед названием...
Аноним 28/10/23 Суб 13:19:57 #566 №2897522 
image.png
А не, пизжу. Реально так работает...
Аноним 28/10/23 Суб 13:23:54 #567 №2897527 
Но я все равно считаю, что ты шизойд, чел...
Аноним 28/10/23 Суб 13:31:11 #568 №2897532 
>>2897527
Я просто хочу чтобы студия не подставляла за меня ничего сама. Что такого в этом желании-то?
Типа мне нравится как было в notepad++ в те времена, когда я в нем кодил. Подсказаочки есть, но ты должен явно сделать действие, чтобы оно применялось. А в студии последних версий - подстановка ебанутой стала иногда. Я пишу слово - оно дописывает неправильно, приходится исправлять не себя, а то что оно предложило и зачем-то вставило.

А с конструкторами - ну, я постепенно из-за этих приколов студии - решил что надо искать другие инструменты, даже вим настроить умудрился. И вот с такими вот инструментами как вим, у которых LSP отваливается раз в полчаса - понимаешь, что было бы пиздец как удобно, если бы конструктор везде назывался constructor, сразу бы просто миллион проблем решилось.
Аноним 28/10/23 Суб 13:38:59 #569 №2897536 
>>2897482
Шиз, пиши уже на своём бейсике.
Аноним 28/10/23 Суб 13:54:23 #570 №2897553 
>>2897536
Его прекратили нормально поддерживать, шиз.
Аноним 28/10/23 Суб 13:55:43 #571 №2897554 
>>2897532
>Я просто хочу чтобы студия не подставляла за меня ничего сама.
Так она и не подставляет, если ты сам не дашь на это согласие при нажатии Enter или Tab.
Аноним 28/10/23 Суб 14:12:02 #572 №2897578 
>>2897554
На работе - почему-то подставляет. ХЗ. Наверное надо переустановить студию и почистить все настройки. Чи еще что-то. Дома сейчас попробовал - действительно все в принципе - нормально и как должно быть.
А на работе, я думаю это из-за какой-то хуютки безопасника, который следит, там еще периодически - Ctrl+C-Ctrl+V отваливается, нахуй, перевод на новую строку происходит, какие-то символы невидимые вставляются. ХЗ короче.
Аноним 28/10/23 Суб 14:39:23 #573 №2897622 
>>2897512
или альт+инсерт если есть решарпер
Аноним 28/10/23 Суб 15:23:26 #574 №2897682 
>>2897357
>яскозал!!!! скозаааааал!!! СККОООООЗААААААААЛ!
Повтори это ещё громче, и это станет правдой.
Аноним 28/10/23 Суб 15:25:27 #575 №2897691 
Не могу себе представить ебальник хуесоса, который сначала в петушарп-треде зашищает свою потешную асинхронность, а потом идёт на реальную галеру и 10 часов в день пишет бесконечные циклы с конструкторами.
Аноним 28/10/23 Суб 15:38:32 #576 №2897706 
image.png
>>2897682
Че повторить?
В том коде чел какую-то фигню творит. В шарпе - нормальная асинхронность из коробки, никаких циклов и прочего - ждрать не надо.
И не нужно как в жавовских фучерсах всякие get вызывать, чтобы подождать результата, просто пишешь await, если результат подождать надо. Не надо - не пишешь.
Аноним 28/10/23 Суб 16:17:38 #577 №2897760 
>>2897290
>>асинхронность есть и лучше яскозал!
>>чтобы подождать выполнение задачи нужно вставать в бесконечный цикл
>)))))))))
>>2897291
>>в ответ на аргументы повторяет мантру
>Чем ты болеешь?
Семён, загугли async/await и больше не пиши сюда.
Аноним 28/10/23 Суб 16:28:52 #578 №2897770 
>>2897436
так нет вакансий.
Насколько варик пиздеть про опыт? Насколько вообще парятся на вакансиях, где требуют от 1 года опыта
Аноним 28/10/23 Суб 16:37:22 #579 №2897776 
>>2897706
да забей ты на этого жава имбецила. ему просто скучно
я тоже могу пойти в жава тред и заявить

я написал на жаве
Thread.sleep(10000000000000000000)
и моя программа зависла
говно эта ваша тупая жава

просто я не имбецил и потому нечего мне в жава тредах делать
а вот этому жависту не зазорно показать свою примитивность мышления и отсутствие базовых знаний
Аноним 28/10/23 Суб 16:48:49 #580 №2897795 
>>2897706
>await
>вызываемый в async функции
)))))))))))))))))))
Аноним 28/10/23 Суб 17:03:02 #581 №2897806 
>>2897495
>Опять же - более редкие кейсы - я добавляю в базовый класс новый параметр конструктора. Теперь надо пройтись по всем дочерним и проставить его там, хотя у них у всех - одинаковая сигнатурка.
Надо просто не использовать наследование.
Аноним 28/10/23 Суб 17:37:04 #582 №2897857 
>>2897795
>>await
>>вызываемый в async функции
>)))))))))))))))))))
Иди вызови await не в async функции, я на тебя посмотрю.
sage[mailto:sage] Аноним 28/10/23 Суб 18:02:16 #583 №2897897 
>>2897857
Ну а я о чём)))))))))))))))))))
Аноним 28/10/23 Суб 18:49:06 #584 №2898001 
>>2897897
Кто о чем
А вшивый о бане
Аноним 28/10/23 Суб 18:54:21 #585 №2898016 
>>2897770
>так нет вакансий.
>Насколько варик пиздеть про опыт? Насколько вообще парятся на вакансиях, где требуют от 1 года опыта
Вакансии от 1 года - это и есть вакансии для джунов. В нормальном состоянии, в любой шараге за 3...4 года, если ты не еблан, то спокойно к концу обучения наберешь этот самый год опыта на практике или подработках (у преподов, знакомых или на фрилансе). И как раз будешь к этому моменту в стадии личинки-джуна.
Стажировки есть, но на них обычно сами ищут кандидатов и в открытый доступ не выкидывают. И там тоже отбор и н ужно тестовые делать.
Заведи себе близкое знакомство с какой-нибудь опытной херочкой из какого-нибудь аутсорса и тогда у тебя будет самая актуальная информация о вакансиях на рынке.

Спиздеть про опыт ты конечно сможешь, но это тебе максимум поможет пройти hr-фильтр. Дальше на тех. собесе тебя развалят и поставят в базе отметку "нохаир". Вариант так проскочить только куда-нибудь на завод где сдох старый сишарпер и нужен новый, чтобы поддерживать их говно мамонта. Там обычно уровень собеседующих настолько низок, что можно им в уши, что угодно ссать.
Аноним 28/10/23 Суб 19:06:42 #586 №2898038 
меня одного напрягает то что есть разный синтаксис который делает почти одно и то же (второй менее функционален)?
int[] arr1 = [1, 2, 3]
vs
int[] arr2 = { 1, 2, 3 }
Аноним 28/10/23 Суб 19:09:57 #587 №2898043 
>>2898016
>Заведи себе близкое знакомство с какой-нибудь опытной херочкой
Добудь рог единорога, слезу русалки и чешуйку дракона
Аноним 28/10/23 Суб 19:16:05 #588 №2898049 
>>2898038
Синтаксис с квадратными скобками - только появился. Даже в 7м нете его нет.
А нужен он буквально из-за другой новой фишки с объединением коллекций.
Типа
[..arr1, 1,2.3, ...arr2];

Вообще. По хорошему - я за единообразие, а потому предпочел бы, чтобы в фигурные впилили поддержку этого. Но видимо чтобы было явно видно, что это только для коллекций хуйня - решили так сделать.
Аноним 28/10/23 Суб 19:20:43 #589 №2898052 
>>2898049
>чтобы было явно видно, что это только для коллекций хуйня
Поверил бы, если бы можно было написать
var data = { lol = "kek" }, но надо обязательно new добавить перед скобками
Аноним 28/10/23 Суб 19:49:48 #590 №2898100 
>>2897857
вот именно ПОЭТОМУ!!!!! и сделали async
жавич )
Аноним 28/10/23 Суб 20:12:33 #591 №2898154 
>>2898100
Вроде как не поэтому...
Аноним 28/10/23 Суб 20:23:24 #592 №2898174 
>>2898043
Другие смогли, получится и у тебя.
Аноним 28/10/23 Суб 20:26:16 #593 №2898179 
>>2898038
Это ты еще кресты не видел
Аноним 28/10/23 Суб 20:30:13 #594 №2898186 
>>2898179
видел, но давно и не много, с читабельностью там проблемки конечно
Аноним 28/10/23 Суб 20:36:47 #595 №2898192 
Как в ValueConverter сообщить, что вводимые параметры имеют неверный формат?

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

Если я верну ArgumentException, то там можно написать сообщение с пояснением что не так, и в режиме дизайна это сообщение удобненько выводится. Но в рантайме это может вызвать критическую ошибку с завершением всего приложения. А я этого говна не хочу. Хотя меня чет напрягает XamlReader, который плюет критическими ошибками, не слишком ли это?
Аноним 28/10/23 Суб 20:56:03 #596 №2898208 
>>2898192
Почему валидные с точки зрения юзера данные не должны сконвертироваться дальше, при этом приложение должно продолжить работу? Это как раз критическая ошибка, потому что у пользователя нет возможности исправить это, ведь это не зависит от его ввода.
Аноним 28/10/23 Суб 21:18:58 #597 №2898257 
2023-10-2821-00-24.png
>>2898192
Ладно, это было помутнение. Можно просто писать в лог или на крайняк печатать Debug.WriteLine.

>>2898208
>Это как раз критическая ошибка
Неа. Запрещено для конвертера выдавать исключения. Возвращается либо DependencyProperty.UnsetValue, либо Binding.DoNothing. В определенных случаях допускается возврат null.

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

>критическая ошибка
Я про ту ошибку, когда выскакивает необработанное исключение. Причем странная штука. Я сделал отлов этих исключений в App (пикрил) по примеру из SO и в результате исключения, вместо одного месседжбокса выскакивает подряд куча, затем приложение фризится и вылетает.

Получается, так, что конвертер привязан как итему списка, и каждый итем списка по сути провоцирует исключения, вызывая шквал окон. Надо какую-то защиту поставить от подобной фигни, хотя я не видел примеров, как будто у других такой проблемы возникнуть не может.
Аноним 28/10/23 Суб 21:24:14 #598 №2898270 
>>2898208
>при этом приложение должно продолжить работу?
Да. Конвертер просто не вносит изменения в свойство, и там остается последнее валидное значение.

>ведь это не зависит от его ввода
Ну я решил подобное писать в лог. А DependencyProperty.UnsetValue подсветит рамку красным, сигнализируя, что что-то не так.
Аноним 28/10/23 Суб 21:48:49 #599 №2898304 
>>2898192
Опять ты
Вечно стреляешь себп по ногам. Ты себя ненавидишь?

Записывай
1 поле ввода не должно позволить вводить бред
2 конвертер просто конвертирует. И НЕ ЗНАЕТ о логике. А раз нельзя ввести бред то и конверт пройдет всегда
3 значение уходит в стейт (вьюмодель например) и вот он ЗНАЕТ что котики лучшие существа на свете валидное значение или нет. А дальше сообщает о своем невалидном состоянии

Каждый делает свою часть работы.
Аноним 28/10/23 Суб 22:34:41 #600 №2898341 
>>2898304
Ты пишешь не прочитав, что я написал? Я написал ровно тоже самое.

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

Но я тебе распишу пример. Есть мультиковневртер, у которого n биндингов. Какое именно количество — хуй знает. А еще один итем может быть коллекцией, а второй строкой. Как это прочекать когда ты импортнул конвертер спустя год — хуй знает. Именно об этом была речь, но я сам решил уже проблему.
Аноним 28/10/23 Суб 22:40:18 #601 №2898347 
>>2898341
я прекрасно понял о чем ты.
и еще раз повторю
>Какое именно количество — хуй знает. А еще один итем может быть коллекцией, а второй строкой.
и что? дело конвертера - КОНВЕРТИТЬ (и выдавать дефолт если сконвертить не удалось) а не заниматься валидацией.
пусть контрол занимается валидацией левых значений
Аноним 28/10/23 Суб 22:55:35 #602 №2898381 
>>2898347
У меня комбобокс должен отобразить итем списка по его ключу. Поэтому я запилил мультиконвертер, где параметр values[0] - это коллекция с итемами, а values[1] - это итем, в котором хранится ключ. Конвертер проходит по коллекции, ищет нужный итем и пуляет его комбобоксу, который устанавливает его как SelectedItem.

Ты пойми, что я хочу донести. Представь, что я этот конвертер отложил в дальний ящик и спустя долгое время хочу заюзать снова. Я не помню, что надо биндить в values[0], а что в values[1]. Но специфика конвертера такова, что порядок итемов, их количество и тип играют большую роль. И конвертер мне об этом не скажет, и комбобокс не скажет. В комбобокс придет DependencyProperty.UnsetValue, и мне придется лезть в исходник и смотреть как же там устроен этот конвертер.

Вот я о чем. В случае эксепшена я могу подать сообщение, что ты, разработчик, вместо коллекции в values[0] засунул какую-то залупу. Но в конвертерах эксепшены использовать запрещено.
Аноним 28/10/23 Суб 22:58:56 #603 №2898385 
>>2898381
увы впф не идеален
поэтому я так ссу кипиятком от жетпак композе, но приходится впф
он проглотит твое исключение если ты не позаботишься

и я понимаю что тебе хочется идеала, но этого не будет
потому прими факт
конвертеры - конвертят. если что - то в дефолтное значение (которое юзер конечно сразу увидит и поймет что он ввел что то не то)
Аноним 28/10/23 Суб 23:07:31 #604 №2898394 
>>2898385
Да я уже решил кроме DependencyProperty.UnsetValue еще и печатать Debug.WriteLine или logger.Error, так что на этапе дебага я увижу сообщение о неверных данных.
Аноним 28/10/23 Суб 23:12:26 #605 №2898399 
>>2898394
это не тру
в оутпут пишется много чего
и окно это убогое в студии
так что не тру

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

я не знаю что там мауи придумали но дизайн как код (а не хмл) это годнота, ведь иде просто проверяет что где сама
А без этого....вот решарпер через туеву хучу лет не может вывести тип списка чтобы не ругаться
зато я ругаюсь...
Аноним 29/10/23 Вск 01:42:49 #606 №2898587 
>>2898001
Слив принят, чушок.
Аноним 29/10/23 Вск 09:29:48 #607 №2898721 
>>2898587
Слив тупого жавадебича
Ну так то да
Любит он пожрать говнеца
Аноним 29/10/23 Вск 15:13:39 #608 №2899043 
>>2898721
Не ворочайся, слитое.
Аноним 29/10/23 Вск 16:02:29 #609 №2899098 
>>2898154
async был добавлен чтобы как раз не было await в не-асинк функции.

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

зы: как по мне эвристика бы справилась, но авторы языка посчитали что оно того не стоит и обошлись простым методом.
Аноним 29/10/23 Вск 21:08:19 #610 №2899379 
>>2899098
Я тоже слышал эту байку...
Аноним 29/10/23 Вск 21:50:30 #611 №2899424 
>>2899379
ну так есть летописи же
https://learn.microsoft.com/en-us/archive/blogs/ericlippert/asynchrony-in-c-5-part-six-whither-async
Аноним 30/10/23 Пнд 05:46:13 #612 №2899653 
Дежурная струя мочи в рот писателям бесконечных циклов.
Аноним 30/10/23 Пнд 08:03:13 #613 №2899684 
>>2898381
Проблемы шарподебилов.
Аноним 30/10/23 Пнд 18:27:00 #614 №2900460 
>>2899653
И как ты без бесконечного цикла хочешь что-то в духе:

void Main(){
while(true) {
try{
Application.Tick();
}catch(Exception e) { Console.Error.WriteLine(e); }
}
}
Аноним 30/10/23 Пнд 22:51:22 #615 №2900869 
Посоветуйте современную книгу (хотя бы после 2019) по asp net core.
Аноним 30/10/23 Пнд 23:20:30 #616 №2900911 
>>2900869
Metanit лучше всяческих книг!
Аноним 30/10/23 Пнд 23:29:15 #617 №2900919 
>>2900869
В современном мире - лучше бери MSDN, открывай гитхаб и смотри кишочки дотнета. Книги - хуйня, пока они дойдут до тебя - там 100500 раз поменяется все.
Аноним 31/10/23 Втр 11:58:07 #618 №2901358 
Шарпаны, где вакансии ищете? На хх зарплаты маленькие, на линкедине вакансий мало
Аноним 31/10/23 Втр 12:44:56 #619 №2901403 
>>2901358
Мы их не ищем. К нам приходят и говорят "Чувак есть один проект, го, я создал".
Аноним 31/10/23 Втр 12:54:59 #620 №2901414 
Что делать если ты работал на довольно примитивных проектах?
2.5 года опыта, но по сути это low-code платформа, мелкие сервисы на .NET и немного SQL
Начинать заново искать работу джуном как то не хочется, ибо успели поднять зарплату, а зп джуна уже не хватает
А сейчас везде требуют еще и брокеры сообщений, докеры всякие, CI/CD, еще и жаваскрипт
Я на всем этом работать бы и рад, но без коммерческого опыта на этих технологиях никто всерьез не возьмет, а самому учить-дрочить это... ну не знаю, теорию еще да, ну может мелкий пет-проект чтобы потыкать-посмотреть, но не более
Аноним 31/10/23 Втр 14:09:57 #621 №2901525 
>>2901414
>а самому учить-дрочить это... ну не знаю, теорию еще да, ну может мелкий пет-проект чтобы потыкать-посмотреть, но не более
Конечно, чел. Ни в коем случае не нужно все это 'учить-дрочить', просто сиди на жопе ровно и однажды все эти знания и навыки сами чудесным образом появятся у тебя в голове.
Аноним 01/11/23 Срд 14:13:10 #622 №2902629 
>>2898016
А если в вузе и в городе нету стажировок?
Аноним 01/11/23 Срд 14:47:19 #623 №2902701 
>>2902629
>А если в вузе
Тогда это хуйня из под коня, а не ВУЗ. Узнавай в деканате, корешись с секретаршей или методистами и выясняй у них с какими конторами у ВУЗа есть договор или связи. Ищи по знакомым. Узнавай у других студентов, как они этот вопрос решают.
Если совсем тухло, пробуй опенсорс. Находи какие-нибудь общеизвестные репы по своему стеку и пробуй туда свои пулреквесты пропихнуть, ну или форк сделай. Собирай друзяшек и пишите какое-нибудь приложение, которое решает какую-нибудь конкретную проблему. Вот тебе и практика.
Аноним 01/11/23 Срд 15:09:43 #624 №2902746 
>>2902701
То есть можно годик себе нарисовать, если ты программировал на опенсурсе?
Аноним 01/11/23 Срд 17:57:23 #625 №2902951 
>>2902746
ты главное избавься от синдрома самозванца
и сможешь ногой двери открывать и херочек шокировать, они млеять будут.
Аноним 01/11/23 Срд 18:33:03 #626 №2902974 
image.png
Хм.
У меня идея.
В общем. Я вот что придумал. Приложение, которое должно обеспечивать квази-стабильный канал связи между девайсами.
Суть в чем.
Есть прокси-сервер.
Есть клиент.
Клиент и этот прокси-сервер по своему протоколу общаются.
Есть устройство. Оно шлет свои пакеты через клиента. Клиент - запаковывает в специальный пакет и отдает серверу. Сервер, накапливает пакеты - отдает другим клиентам, которые ждут посылки. Клиент на той стороне - получив от сервера - если физически связь есть - отправляет внутреннюю часть устройству которое подключено к клиенту, если нет - сохраняет до следующего сеанса связи и потом отдает устройству, после того как связь будет установлена.

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

Ну. И у меня вопросы.
1. Насколько тупой идеей будет делать это на шарпе?
2. Насколько сама по себе идея тупая?
Просто ИРЛ - я могу представить, когда это надо, допустим какие-то датчики на солнечных батареях, они раз в сутки - могут выйти на связь, пару минут пожить и обратно отрубиться, но было бы хорошо, чтобы им дошло сообщение которое вчера еще отправили, и они данные - так же отправили куда надо, чтобы сервер с этих датчиков данные схоронил.
Но ебаться просто ради себя и проверки концепции - как-то не оч хочется.
Аноним 01/11/23 Срд 18:48:02 #627 №2902991 
>>2902746
>То есть можно годик себе нарисовать, если ты программировал на опенсурсе?
Если ты сможешь пояснить, что ты там делал, какие задачи решал, с какими проблемами столкнулся и как их затащил. Тогда да. Возьми например какой-нибудь ASP.NET проект на .NetCore 2.1 c EF и переведи его на .Net6/7 - ты в процессе как раз сможешь и опыта набрать и на кучу подводных наткнуться, так что сможешь толково рассказать и пояснить.
Правда выдать это именно за "коммерческий" опыт ты вряд ли сможешь если у тебя его действительно не было, но можно на удаче съехать на то, что делал это в команде на каком-нибудь аутсорсе или по заказу. Главное про фриланс не упоминай, во многих конторах это как стоп-слово при рассмотрении резюме.
Аноним 01/11/23 Срд 18:53:59 #628 №2902998 
>>2902974
А чем это отличается от любого брокера сообщений?
Аноним 01/11/23 Срд 19:23:29 #629 №2903045 
>>2902998
Ну. Тему что для устройства это должно выглядеть, будто оно просто в свой сетевой интерфейс что-то отправило, что-то получило из него. Знать ни про какие брокеры-очереди не знает.
Аноним 01/11/23 Срд 21:20:20 #630 №2903192 
16447762371262.mp4
>>2902974
Слушай, ну, в принципе прикольно. Надеюсь, сделаешь.
С дивана дам совет небольшой. На случай, когда сообщение большое, то посылай его кусками. То есть реализуй потоковую загрузку от клиента серверу(когда ты 50 мбайт файл или сообщение режешь кусками по 1 кбайту). И будет как бы гуд найс, вэри найс.
Аноним 01/11/23 Срд 21:24:40 #631 №2903194 
>>2902991
Разве пруфов не будут требовать? Название организации, должность, документы какие-нибудь? Раз организация существует, то также попробуют с ними связаться, там тебя попробуют поймать на вранье. А если не существует, то и пошлют тебя куда подальше. Звучит так, будто это такая же попытка пиздежа на софт-скиллычах нарисовать себе года, только с учётом участия на опенсурсе.
Аноним 02/11/23 Чтв 01:49:10 #632 №2903375 
>>2903194
>Разве пруфов не будут требовать?
Пруфов чего? Выполненной работы? Ну так покажешь им репозитории со своими наработками. Можешь где-нибудь прикупить дешевую vps-ку и развернуть свой сервис там в открытом доступе. Заодно деплою научишься.
>>2903194
>Название организации, должность, документы какие-нибудь?
Скажешь, что в душе не ебешь, т.к. работал по гпх на своего братюню, а он уже непосредственно с заказчиком общался и выдавал тебе задания. Или вообще на общественных началах или в серую.

>Раз организация существует, то также попробуют с ними связаться, там тебя попробуют поймать на вранье.
Там им скажут, что "не охуели ли вы ребята тут вопросы о наших проектах и сотрудниках задавать" и пошлют куда подальше.
Сейчас только совсем отбитые конторы звонят без спроса на предыдущие места работы. А те из нормальных кому это еще интересно, сначала разрешения спрашивают и контакты, где ты всегда можешь съехать, что не можешь выдавать им телефоны, т.к. не было такой договоренности. Я в банк устраивался, в анкете на вопросы, можно ли им позвонить текущему или бывшим работодателям за рекомендацией, написал "нет" и ничего взяли, даже слова не сказали. Сейчас гораздо проще проверить кандидата по разным hr базам в которых напротив твоей фамилии будет написано "пьет на работе и врет об умерших родственниках в оправдании прогула" (реальный случай, знакомая херочка при мне такого кандидата чекала).

Ну и опять же поинт был не в том, чтобы совсем напиздеть о не существующем опыте, а в том, чтобы заиметь реальный опыт хоть каким-то образом. Если у тебя нет возможности пройти практику во время учебы от ВУЗа, то находишь её сам. Один из способов я тебе показал, взять попенсорсный проект и улучшить/переделать его. Ты заимеешь тот самый опыт, у тебя будет результат который можно предъявить и ты можешь слегка приукрасить, что делал его не просто для себя, а с какой-то целью (возможно даже коммерческой). Может у тебя друган или девушка какой-то общественной нагрузкой занимается и попросила замутить портал с каким-нибудь функционалом вроде бронирования или электронной очереди, я х.з. сам придумай. Прояви фантазию короче.
Аноним 02/11/23 Чтв 09:26:42 #633 №2903530 
>>2903375
Спасибо за информацию, но все равно кажется, что с учётом огромной конкуренции среди джунов их будут проверять на пиздеж. Хотя я конечно могу многие отговорки придумать, но у меня вариантов то других и нет.
Аноним 02/11/23 Чтв 10:57:57 #634 №2903630 
Почему HttpListener так странно спроектирован, что нужно перебирать ожидания запросов вызовом BeginGetContext, а если придет другой запрос пока обрабатываешь первый?
Обычно же просто подписываешься на события и всё.
Аноним 02/11/23 Чтв 11:03:06 #635 №2903634 
я так понимаю новичкам в тред лучше не соваться с вопросами?
Аноним 02/11/23 Чтв 11:05:35 #636 №2903638 
>>2903530
>их будут проверять на пиздеж
Ты либо засыпешься и с тобой попрощаются. Либо разберешься в теме настолько, чтобы убедить собеседующего в правдивости своего пиздежа и пройдешь дальше.
Просто чтобы о некоторых вещах убедительно врать, нужно достаточно хорошо разбираться в теме, чего уже может быть достаточно для работы на уровне джуна.

Да тебя будет в большинстве случаев проверять СБ, но их больше интересует насколько ты чист перед законом, свободен от долгов, у тебя нет крупных финансовых проебов и совсем уж явных публичных косяков на предыдущих местах работы (т.е. таких инфа о которых выходит за пределы конторы). Тебе больше стоит беспокоится о том, что тебя не возьмут из-за того, что у тебя паспорт или военник неправильно оформлены или кто-нибудь из близких родственников банкрот или лудоман.
Аноним 02/11/23 Чтв 11:05:45 #637 №2903640 
>>2903634
Да тут одни долбоёбы сидят, очень редко что либо путное ответят.
Аноним 02/11/23 Чтв 11:06:50 #638 №2903642 
>>2903634
Почему, если ты можешь нормально сформулировать вопрос и ответ на него не выскакивает на первой странице выдачи поисковика, то вполне можешь спрашивать.
Аноним 02/11/23 Чтв 15:24:42 #639 №2903845 
>>2903630
так он же древний как говно мамонта. Тогда не было всяких там асинков

>Обычно же просто подписываешься на события и всё.
а какая разница если по существу.
К тому же эти BeginХХХ имеют асинхронную семантику по природе, а события нет.
Аноним 02/11/23 Чтв 16:05:49 #640 №2903906 
>>2903845
А что из простого юзать? Мне надо (для тестов) просто сохранять все запросы http и ничего не пропустить, заморачиваться с мощными фреймворками вроде asp.net не охота.

> какая разница если по существу.К тому же эти BeginХХХ имеют асинхронную семантику по природе, а события нет.

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

Я дажне не события в смысле event в C# имел ввиду, а типа подписки но что бы гарантированно было оповещение при каждом запросе.
Аноним 02/11/23 Чтв 16:49:09 #641 №2903978 
>>2903906
>пока не вызовешь EndGetContext другие запросы не принимаются.
Ты че там за код пишешь
В этом и есть смысл асинхронности "принимать запросы пока первый обрабатывается"

Из простого листенера хватит
Просто всё руками разгребать же
Аноним 02/11/23 Чтв 17:08:39 #642 №2904018 
>>2903978
Я пока на примеры кода HttpListener смотрю, там надо самому прокачивать цикл приёма данных, т.е. пришел асинхронный запрос, ты его обрабатываешь, потом сам должен повторно вызвать ожидание следующего запроса. В этот промежуток пока ты разгребал если другой запрос придет ты его не увидишь как я понял.
Нормальная асинхронность это когда записываешь свой коллбэк и он уже вызывается на каждый запрос, пусть даже с наложениями.
Аноним 02/11/23 Чтв 17:27:20 #643 №2904071 
>>2904018
Везде нужно прокачивать. Где то явно, где то под капотом
Весь мир построен на очередях. (кроме драйвера sqlite в дотнет, ну они рукожопы).
Так что ничего ты не потеряешь. Просто не задерживай прокачку очереди.

>потом сам должен повторно вызвать ожидание следующего запроса
Какой еще потом.
Получил завпрос, поставил его в обработку, получаешь следующий, а первый продолжает обрабатываться
Аноним 02/11/23 Чтв 19:49:23 #644 №2904312 
>>2904018
>кроме драйвера sqlite в дотнет, ну они рукожопы
ну ладно не рукожопы. так то если файл занят, то нужно стать в очередь на эксклюзивную блокировку, но.....это же уже на уровень системы опускаться и можно повиснуть там, а с отменами там хз как
Аноним 03/11/23 Птн 07:18:40 #645 №2904639 
>>2903906
>А что из простого юзать?
> просто сохранять все запросы http и ничего не пропустить

Task RunHTTP(int port){

var listener = new TcpListener(port);
listener.Start();
while(true){
var client= await listener.AcceptTcpClientAsync ();
_ = RunConnection(client);
}
}

Task RunConnection(TcpClient client){
try{
using var ns = connection.GetStream ();
using var sr = new StreamReader(ns);

var request = await ParseRequest(sr);
var headers = await ParesHeaders(sr);
Stream body = null;
if(headers.Contains("Content-Length")){
body = CreateBody(sr, headers.Get<int>("Content-Length"));
}

SaveAll(request, headers, body);
}catch{}
finaly{
client.Dispose();

}

}
Аноним 03/11/23 Птн 09:45:28 #646 №2904693 
Псссс дебилам в рот.
Аноним 03/11/23 Птн 11:26:19 #647 №2904816 
>>2903906
>заморачиваться с мощными фреймворками вроде asp.net не охота.
Зато сидеть велосипед городить решая кучу уже решенных проблем - охота. Пиздец как продуктивно.
Аноним 03/11/23 Птн 15:17:39 #648 №2905081 
>>2904816
асп.нет так то жрет как....
для ценителей минимальности использования памяти это глазик такой дёрг
Аноним 03/11/23 Птн 17:46:46 #649 №2905296 
>>2905081
Ну. Справедливости ради. Жрет оно дофига, если ты просто используешь дефолтную конфигурацию.
Если чуть посидеть, подзаебаться, оставить только нужное(дефолтный HTTP-хендлер и пару нужных для тестов мидлваров), то там будет все оч скромно.
Аноним 03/11/23 Птн 18:11:53 #650 №2905342 
>>2905296
не будет. он наделает кешей на все случаи жизни, а они нафиг не нужны.
Аноним 04/11/23 Суб 13:21:19 #651 №2905995 
Смотрите.
У нас на проекте я протолкнул идею - использовать MD+Mkdocs для того чтобы вести дев-документацию, потому что бегать по свагерам и смотреть че там у кого с апишками - задолбало. Плюс, всякие сервисы вообще свагера не имеют, а через год - вспомнить, че они там делают и зачем нужны - бывает сложновато.
Все вроде были довольны.
Настолько довольны, что решили, что теперь мы и пользовательскую документацию так же вести будем. И в приложении появилось /help который то что Mkdocs генерировал отдавал. Круто. Удобно, легко поддерживать, легко развертывать, еще и гит для доков работает. Отлично корче.
И все было заебись. Пока внезапно кто-то из менеджеров не сказал, что надо PDF'ную версию делать, чтобы на странице с продуктом - можно было загрузить эту PDF'ку.

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

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

Да. У Mkdocs - есть плагин, чтобы выгрузить PDF, но он какой-то слишком замудреный и кривоватый, надо лезть в него и руками допиливать, чтобы как надо сделал и вообще.
Аноним 04/11/23 Суб 13:30:56 #652 №2906009 
169909353624620488.jpg
Почему так?
Аноним 04/11/23 Суб 13:35:49 #653 №2906013 
>>2906009
Что это вообще?
Если это сравнение перформанса, то непонятно, каким фигом С - не в топе. С - буквально ассемблер для людей. А значит в принципе не может быть кейса, в котором хорошо написанный на С код будет медленнее чего угодно.
А тут - если судить, что меньше-лучше, выходит каким-то хуем жава впереди. Это в принципе невозможно ну никак. Так что отвечая на вопрос - потому что сравнение некорректно.
Аноним 04/11/23 Суб 13:44:18 #654 №2906017 
>>2906009
>жава вторая
Чел...
Аноним 04/11/23 Суб 14:09:37 #655 №2906042 
>>2906013
>>2906017
Потоком копиупа удовлетворён!
Аноним 04/11/23 Суб 14:11:24 #656 №2906045 
Срочно ебальник отсосавших скриптопараше жопаскрипту к осмотру!
Аноним 04/11/23 Суб 14:14:19 #657 №2906048 
>>2906042
Так реально.
Объясни, каким образом нативный код - может в принципе быть медленнее байткода, который жавамашина переводит в рантайме в машинный?
Понятно, что жит - может лишние проверки убрать, чет переставить, чтобы пооптимальнее было. Но это все еще будет байткод, который в рантайме в машинный переводится. Он в принципе не может быть быстрее ОПТИМАЛЬНОГО кода, написанного нативно.
Аноним 04/11/23 Суб 14:20:43 #658 №2906053 
>>2906045
Жопаскрит - сейчас литерли фронтенд для плюсов. С хуя он должен-то быть медленнее шарпов?
Аноним 04/11/23 Суб 14:22:50 #659 №2906055 
>>2906053
Ты это не у меня спрашивай, а у индусов из копрософта, как они умудрились отсосать жопаскрипту.
Аноним 04/11/23 Суб 14:28:47 #660 №2906062 
>>2906048
Да, будет байткод. Очень сложный и запутанный байткод (чего стоит один только инвокдинамик), который своей сложностью ставит крест на реализацию точной копии этого на сишке (то, что решается на джаве в две строки придётся там расписывать по каждой инструкции на несколько страниц). Именно поэтому раст и обошёл джаву, потому что в нём также происходит раскрытие короткого высокоуровнего кода в пиздец, но быстрый пиздец, но не в рантайме, как у джавы, а в компайл-тайме.
Аноним 04/11/23 Суб 15:20:40 #661 №2906138 
>>2906009
Ох уж эти сравнения теплого с мягким
Аноним 04/11/23 Суб 15:27:31 #662 №2906148 
Че за сравнения хоть... Дайте ссылку, бля...
Аноним 04/11/23 Суб 15:48:32 #663 №2906183 
>>2906138
>врёти!
Аноним 04/11/23 Суб 15:51:42 #664 №2906186 
>>2906183
для меня велосипед и электросамокат одинаково плавают )
но правда ли это сравнимые вещи....
Аноним 04/11/23 Суб 15:56:49 #665 №2906191 
>>2906186
>идентичный код на языках идентичного назначения идентичной структуры с идентичным принципом запуска (на виртуальной машине) с идентичной типизацией
>ррррряя, низя сравнивать!!! и вообще 132 миллисекунды нормально, ваши 5 мс нинужны!
Аноним 04/11/23 Суб 15:57:39 #666 №2906193 
>>2906186
Причём тут электросамокаты и велосипеды, ебанько? Тебя совсем от осознания того, что петушарп в 26 раз медленнен джавы переклинило?
Аноним 04/11/23 Суб 16:03:29 #667 №2906203 
>>2906191
Чел, на каждую из задач, в которой дотнет сосет у джавы, найдется 10 задач, в которой джава сосет у дотнета...
Аноним 04/11/23 Суб 16:03:36 #668 №2906204 
>>2906193
при том сравниваются разные вещи
я не ебу что это сравнение и даже гуглить не буду
Но знаю что при прочих равных жава сожрет больше памяти и я охуею от того как много она жрет
и да - мне придется сидеть и тюнить jvm и быть мастером в этом.

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

и да - ведь как бы скала и котлин тоже jvm - а чего ж они так, выходит жава рантайм говно что ли? Ну все понели, а кто не понел - ну пусть жрет говно.
Аноним 04/11/23 Суб 16:06:40 #669 №2906209 
>>2906203
>Чел, на каждую из задач, в которой дотнет сосет у джавы, найдется 10 задач, в которой джава сосет у дотнета...
>яскозал!
)))))))))
Аноним 04/11/23 Суб 16:12:13 #670 №2906216 
>>2906209
Одно конкретно сражение уже ничего не значит. Вы проиграли войну. Смирись, чел...
Аноним 04/11/23 Суб 16:12:31 #671 №2906217 
>>2906204
>при том сравниваются разные вещи
>я не ебу что это сравнение и даже гуглить не буду
>Но знаю что при прочих равных жава сожрет больше памяти и я охуею от того как много она жрет
>и да - мне придется сидеть и тюнить jvm и быть мастером в этом.
>Так что не все упирается в скорость...собственно даже не знаю чего, ибо не гуглил что конкретно этот график измеряет
>яскозал!
)

>и да - ведь как бы скала и котлин тоже jvm - а чего ж они так, выходит жава рантайм говно что ли? Ну все понели, а кто не понел - ну пусть жрет говно.
Петухлин не просто так по три года на каждую новую версию джавы поддержку пилит. Он анально вгрызается в работу jvm, ломая оптимизации + везде добавляет свои ухудшения производительности, как с корутинами, которые код в 10 раз замедляют. Скала просто тупо серет new Object() на каждый пук.

Только вот даже если бы не было адекватного объяснения медленности скалы и петухлина, то это бы не отменяло 5 мс в джаве и урину на ебальник обоссаного шарпопетуха с 132 мс. Это бы просто ставило интересный вопрос, как так удалось испортить производительность. Спорить с этим тестом это как если бы Ньютон после падения ему яблока на бошку заявил "а хули бог мою бошку не защитил? Должен был защитить! Значит яблоко не упало! Шах и мат, аметисты!".
Аноним 04/11/23 Суб 16:12:53 #672 №2906218 
>>2906216
>Одно конкретно сражение уже ничего не значит. Вы проиграли войну. Смирись, чел...
>яскозал!
)
Аноним 04/11/23 Суб 16:13:33 #673 №2906221 
>>2906218
Чел...
Аноним 04/11/23 Суб 16:14:11 #674 №2906222 
>>2906221
Что-то по делу высрешь, или твой петушарп ещё не успел обработать попадание урины на твой ебальник?
Аноним 04/11/23 Суб 16:15:37 #675 №2906224 
>>2906222
А говорят, что программисты умные люди...
Аноним 04/11/23 Суб 16:15:57 #676 №2906225 
>>2906224
Слив принят, 132-мсный.
Аноним 04/11/23 Суб 16:23:51 #677 №2906236 
Что это обоссаный замолчал?
Аноним 04/11/23 Суб 16:30:11 #678 №2906249 
>>2906217
ты несешь какой то неадекватный бред.
Аноним 04/11/23 Суб 17:06:55 #679 №2906278 
>>2906249
Скулежом шарпопсины удовлетворён.
Аноним 04/11/23 Суб 17:14:02 #680 №2906296 
>>2906278
просто тут у нас пациент из психбольницы сбежал
отличается особыми признаками
- труслив (поэтому притащил не ссылку, а картирнку, да такую что видео не нагуглишь), ведь иначе ему полон рот напихают
- жрет говно (не жаваговно, а просто говно, просто говноед)
- агрессивное
- тупое

ничего, его в конце концов поймают - и в дурку
Аноним 04/11/23 Суб 17:20:07 #681 №2906307 
>>2906296
Вот видео, только не скули так.

https://www.youtube.com/watch?v=U6I-Kwj-AvY
Аноним 04/11/23 Суб 17:53:19 #682 №2906348 
>>2906307
Перемешать результатами с видосика на Ютьюбе это сильно, конечно. Причем в котором нет инфы о том, какие где версии софта, с какими флагами собиралось/запускалось и т.д. Более объективные тесты показывают, что шарп, что java суть одна хуйня по скорости. В каких-то задачах Шарп быстрее, в каких-то жаба. Вот пример нормальных тестов. https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/csharp.html
Аноним 04/11/23 Суб 17:55:11 #683 №2906354 
>>2906062
Чел. Блядь. Не тупи. Если это в конечном итоге будет превращено в нативный исполняемый код. То код без прослойки из байтоговна - будет работать быстрее чем код с этой прослойкой, ну хоть ты усрись.
И да. Не существует такого кода, который бы нельзя было написать на сишке, потому что, блядь, еще раз - сишка это ассемблер для людей. Если сишка проигрывает хоть в одном сравнении по перформансу - значит тот кто писал код для теста - НЕ ЗНАЕТ СИ, вот и все. И не нужно тут хуйню придумывать, про хитрый байткод. Байткод - все равно будет интерпритирован в те же самые машинные инструкции.
Короче. Если твой код на си медленнее чем код на джаве - ты просто хуевый программист - иди вон из профессии.
Аноним 04/11/23 Суб 18:09:43 #684 №2906396 
>>2906354
Даун, ты вообще читал, что я написал? Перевести можно, но будет сложно.
Аноним 04/11/23 Суб 18:10:55 #685 №2906399 
Джавадебил перемогает замерами с литкода, это просто охуеть. Я конечно в курсе отсталости тулинга в джаве, но неужели это прямо влияет на интеллект?

Вы нахуя кормите это животное?
Аноним 04/11/23 Суб 18:11:31 #686 №2906400 
>>2906348
Додик, всё там есть, описание открой и запускай сам, сколько влезет, пока на заебёт плакать от 132 мс.
Аноним 04/11/23 Суб 18:12:11 #687 №2906403 
>>2906399
Коупингом обоссанного удовлетворён.
Аноним 04/11/23 Суб 18:16:11 #688 №2906417 
>>2906400
Что запускать то ебанат? Где указаны входные данные? Где шарповый проект с BenchmarkDotNet, который замеряет реальную производительность, а не колд паф с компиляцией jitом

Я понимаю что ты просто серишь, полоумный
Аноним 04/11/23 Суб 18:18:59 #689 №2906426 
>>2906417
Ебать долбоёб дурачка включил. Он щас будет требовать объяснения, что такое код и как его запускать?
Аноним 04/11/23 Суб 18:21:22 #690 №2906428 
>>2906417
именно
там вот сравниваются LINQ подобные реализации "найти максимум от"
причем от чего?
если поискать то там есть примеры типа
nums = [-2,-1,-1,1,2,3]
https://leetcode.com/problems/maximum-count-of-positive-integer-and-negative-integer/

они на любом языке проходят за наносекунду.

в репе дохера файлов но конкретно как что измерялось и на чем - НЕ НАХОЖУ

>>2906426
ну так ПОКАЖИ ГОВНОЕД тестовый набор и как измерялся бенч.
Аноним 04/11/23 Суб 18:23:25 #691 №2906431 
>>2906428
Писался код и засовывался в форму литкода.
Аноним 04/11/23 Суб 18:24:57 #692 №2906433 
image.png
image.png
>>2906396
Ну. Ок. Если для тебя сложно - валидный аргумент.
Вот мне - было сложно вспомнить, как там у вас в жаве - словарь называется, чтобы мемоизацию делать.

Давай померяем и сравним код, который одну и ту же задачу решает, и удивимся, насколько же жава медленнее чем шарпы.
Аноним 04/11/23 Суб 18:25:08 #693 №2906434 
>>2906431
шта?
Аноним 04/11/23 Суб 18:25:20 #694 №2906435 
>>2906433
Сравнивай.
Аноним 04/11/23 Суб 18:25:57 #695 №2906436 
>>2906434
>Ебать долбоёб дурачка включил.
Аноним 04/11/23 Суб 18:26:41 #696 №2906439 
>>2906426
Я понимаю, что джавадебилу это тяжело осознать. Но производительность решений не замеряется циферками с сайта. Джавадебил, неужели у вас в джавапараше нет культуры бенчмаркинга? Ну это в целом объясняет ее тормознутость
Аноним 04/11/23 Суб 18:27:24 #697 №2906441 
>>2906439
Пынямаю, литкод шарпоблядям в штаны насрал.
Аноним 04/11/23 Суб 18:31:03 #698 №2906448 
>>2906435
На жаве реально настолько отбитые пишут, что даже не в состоянии по коду понять, что за пиздец со временем произойдет в случае с жавой?
Аноним 04/11/23 Суб 18:32:01 #699 №2906450 
>>2906448
Так ты сравнишь или убежишь в харчках, будучи неспособным предоставить то, о чём сам заикнулся?
Аноним 04/11/23 Суб 18:33:38 #700 №2906456 
>>2906436
я пройду мимо долбоеба который уверяет что поиск в массиве из нескольких элементов займет 117мс.
или 141мс на питоне

хз что как сравнивалось. Небось миллион запусков (в неизвестном варианте) и взяли общее время
то есть самый дебильный подход.

но мне влом разгребать это дерьмо, поэтому нафиг не нужно.
Аноним 04/11/23 Суб 18:34:27 #701 №2906460 
>>2906441
Вытри рот от говна, джавадебил, и возвращайся с тестами, в которых указаны входные данные и предоставлены два проекта с бенчами на джаве и шарпе. Но лучше не надо, ведь мы оба знаем, что во всех кейсах жаба соснет. Как здесь https://github.com/jinyus/related_post_gen например. Джавадебил, а зачем ты в бессильной злобе срешь в тред? Просто переходи шарп и становись успешным и счастливым.
Аноним 04/11/23 Суб 18:36:25 #702 №2906467 
>>2906456
>бох ни защитил, значит яблоко на бошку не падало!
То есть по делу ничего не высрешь? Это печально.
Аноним 04/11/23 Суб 18:36:27 #703 №2906469 
>>2906460
А тут ещё и просто стопвочом замеряют, то есть если норм замерить оно на уровне плюсов будет.
Аноним 04/11/23 Суб 18:38:36 #704 №2906481 
>>2906460
Да я понял уже, литкод, крупнейшая площадка для хуемерства наносекундами, насрал в штаны шарпоблядям. Ты штаны-то постирай, а то воняет.
Аноним 04/11/23 Суб 18:40:04 #705 №2906486 
image.png
image.png
>>2906450
Какой-же ты тупой. Пиздец просто.
Первый скрин - время в милисекундах жавы
Второй - сярпа

Вывод шарп в 1808 быстрее жавы.
Можно закрывать дискуссию.
Аноним 04/11/23 Суб 18:42:26 #706 №2906492 
>>2906486
Я тоже так умею.

Java
Hui(50) = 89999
Elapsed time: 4

C#
Hui(50) = 89999
Elapsed time: 1488ryxnym8883E90

Ты может хотя-бы код покажешь, или будешь дальше жаловаться на то, что тебе в штаны насрали?
Аноним 04/11/23 Суб 18:43:14 #707 №2906496 
>>2906492
Чел. Код на скринах выше. Не тупи.
Аноним 04/11/23 Суб 18:43:48 #708 №2906497 
>>2906496
Где? В твоих фантазиях?
Аноним 04/11/23 Суб 18:44:52 #709 №2906502 
image.png
image.png
Ок. Я понимаю, что по ссылка жава-гений посмотреть не в состоянии. Еще раз
Аноним 04/11/23 Суб 18:47:03 #710 №2906510 
>>2906502
Ты че, даун? Нахуй ты сравнил рекурсивный подход с динамическим программированием?
Аноним 04/11/23 Суб 18:48:57 #711 №2906515 
>>2906510
> На сях сложно писать нормально
> Давай я напишу на шарпе нормально, на жаве - хуево, и это буду использовать как аргумент
> Давай
> Держи
> Нахуя ты так сделал
У жаводебилов стек такой маленький, что они не помнят что было буквально 20 минут назад?
Аноним 04/11/23 Суб 18:50:25 #712 №2906519 
>>2906502
ну так то ты сравнил прямой подход с подходом с мемоизацией
что не очень честно

но, как я уже говорил, жавист жрет говно и не нужно ему в этом мешать. пусть дрочит на свои фантазии, он ведь кроме жавы ничего и не знает.
Аноним 04/11/23 Суб 18:50:46 #713 №2906522 
>>2906515
Манюнь, отсутствие инвокдинамика и тысяч других оптимизаций, что придётся реализовывать заново на сишке и твой дебилизм и незнание структур данных в джаве это разные вещи. Мемоизация легко делается на джаве.
Аноним 04/11/23 Суб 18:56:59 #714 №2906540 
>>2906522
Я будто с чат-гпт говорю, ну серьезно.
Еще раз.
Нативный код - ВСЕГДА БУДЕТ БЫСТРЕЕ ЛЮБОГО КОДА С ПРОСЛОЙКАМИ.
Если твой нативный код медленнее жавы, шарпа, питона - это значит, что у тебя руки не из того места растут. Все. Если в тесте перформанса - ассемблер или шарп проигрывают чему-то, значит тот кто писал код на этом языке - хуевый программист и ему надо идти на завод гайки крутить.
Все. Блядь.
И свой динамик инвок можешь засовывать прямо до гланд.

>>2906519
Я просто показал, как хуево звучит тезис про то что чет там сложно делать, если мы хотим сравнить перформанс языков. Типа блин, на ассемблере - тоже можно написать крайне хуево, настолько, что нормальный код на питоне будет быстрее. Только это говорит не о языке, а о проблемах с навыками программиста, который этот код выдал.
Аноним 04/11/23 Суб 18:57:47 #715 №2906544 
>>2906540
>ассемблер или шарп
Запизделся
Ассемблер или си
Аноним 04/11/23 Суб 18:58:40 #716 №2906547 
>>2906307
Линк с 7 дотнета тоже умеет в векторизацию, как и жава. Так что цифры, при равных условиях, были бы сопоставимые. Ты обосрался, чел...
Аноним 04/11/23 Суб 18:58:53 #717 №2906548 
>>2906540
Повтори это в четвёртый раз, и тогда, это, наверное, станет правдой, идиот.
Аноним 04/11/23 Суб 19:00:32 #718 №2906552 
>>2906547
>бох бошку не защитил, значит яблоко не падало!
Ты можешь сколько угодно пруфов блейзингфастовости петушарпа приводить, только суть в том, что ты так только опровергать их будешь об реальный тест.
Аноним 04/11/23 Суб 19:01:57 #719 №2906555 
>>2906552
>сколько угодно теоретических пруфов
важнофикс
Аноним 04/11/23 Суб 19:04:23 #720 №2906560 
image.png
image.png
image.png
Ладно, потыкаем немного палочкой в джавадебила. Вот кейс https://leetcode.com/problems/maximum-count-of-positive-integer-and-negative-integer/ с которым эта дура прибежала.

Первое с чего стоит хрюкнуть, это с того, что джавдебил думает, что код на каком либо языке может работать МИЛЛИСЕКУНДЫ НАХУЙ над кейсом из 6 чисел. Джавадебил, ты....

Берем первый кейс и писаем на джавадебила. Вот такая вот вечерняя разминка шарпочане. Можно шлифануть SIMD'ом, хотя скорее всего жит это сам сделал на 8 дотнете.
Аноним 04/11/23 Суб 19:05:47 #721 №2906562 
>>2906560
И сново шарподаун доказывает, что ему яблоко на бошку не падало. Необучаемая порода.
Аноним 04/11/23 Суб 19:06:52 #722 №2906564 
>>2906552
Ты и сам видосом с ютуба перемогаешь вместо реальных тестов, чел.

Я свою гипотезу озвучил: в csproj сборки тестов с ютуба стоит максимум 6 дотнет. Переключи на 7 и получишь прирост производительности того же самого кода. Магия SIMD.
Аноним 04/11/23 Суб 19:08:00 #723 №2906565 
>>2906540
>Только это говорит не о языке, а о проблемах с навыками программиста, который этот код выдал.
Мне это пояснять не нужно
я всегда смотрю не скорость, а на баланс "удобство/скорость"
Тот же LINQ никогда скоростью не отличался (и это известный факт) ибо упор в нем на удобство и сильно напирает на абстракцию IEnumerable.

И тут приходит жавадебич и начинает мне показывать " увас LINQ медленнее чем жава стримс (что еще спорно ибо векторизацию сделали)"

А я смотрю на него и думаю....да что я могу думать про дурачка который кроме жавы в глаза ничего не видел
Аноним 04/11/23 Суб 19:08:13 #724 №2906566 
>>2906564
Ну так а хули ты не переключил? Код есть, задача есть (вот выше кинули). Боишься, что не сработает?
Аноним 04/11/23 Суб 19:08:41 #725 №2906567 
>>2906565
>нинужно
)
Аноним 04/11/23 Суб 19:10:58 #726 №2906571 
>>2906566
Только если ты мне за это бабок заплатишь, чел...
Аноним 04/11/23 Суб 19:11:34 #727 №2906573 
>>2906571
Слив принят, 132-миллисекундный.
Аноним 04/11/23 Суб 19:12:08 #728 №2906575 
>>2906573
Чел...
Аноним 04/11/23 Суб 19:12:24 #729 №2906576 
>>2906575
Не ворочайся, слитое.
Аноним 04/11/23 Суб 19:13:37 #730 №2906582 
>>2906567
смешно слышать это тот жависта
у которого в жаве лямбды и И ПОДОБИЕ linq ввели чере хуеву тучу лет, а до этого эти дебилы орали "нинужна,энтерпрайз"

долбоебы-с
Аноним 04/11/23 Суб 19:14:23 #731 №2906583 
>>2906582
Пошли аргументы ад хоминум. Ещё бы "мамка твая)))" сказал. Пиздец школиё...
Аноним 04/11/23 Суб 19:19:02 #732 №2906592 
>>2906583
просто это факт
у меня есть знакомые такие как долбоебы и вечно жава жава
а я спрашивал "а хули у вас нет этого и того"
знаешь что мне орали в ответ? "НИНУЖНА, энтерпрайз, обратная совместимость"

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

ты сколько языков то изучал неуч. мне просто интересно
понятно что не все такие как я, что могут похвастаться больше десятка, но хотя бы 3 можешь озвучить?
Аноним 04/11/23 Суб 19:19:36 #733 №2906593 
Сегодня вечер закидывания жависта говном. Забавно ))))
Аноним 04/11/23 Суб 19:20:50 #734 №2906596 
>>2906592
Он похоже даже не понял, к чему претензия была. Шарподаун, что взять.
Аноним 04/11/23 Суб 19:21:40 #735 №2906598 
>>2906593
>Сегодня вечер закидывания жависта говном. Забавно ))))
— раздался возглас после 132-миллисекундного ожидания.
Аноним 04/11/23 Суб 19:22:22 #736 №2906599 
>>2906596
ясно. вместо ответа слился. ничего от обосратыша и не ожидалось.
ну пусть тред уходит в бамп лимит

а жавист погружается дальше в говно, откуда он и не вылезал
Аноним 04/11/23 Суб 19:23:30 #737 №2906603 
>>2906599
Какой ответ ты ждёшь на ад хоминум высер? Ты еблан? Это тебе нужно ответить на >>2906567 что-то посерьёзнее.
Аноним 04/11/23 Суб 19:29:36 #738 №2906618 
>>2906603
последний раз говорю
без нормального кода бенчмаркинга и набора данных можешь идти жрать говно дальше
у меня код выпоняется за наносекунды
те кто нашел там 112 мс пусть просто идут изучать матчасть.

а ты ...иди жрать говно
Аноним 04/11/23 Суб 19:31:11 #739 №2906625 
>>2906618
Опять литкод в штаны шарпоблядям насрал! Да что ж такое-то! Самое главное джавистам не насрал, педалистам не насрал, растоблядям не насрал, даже жопаскриптерам не насрал, а шарпоблядям насрал!
Аноним 04/11/23 Суб 21:01:12 #740 №2906774 
image.png
Насколько тупым выглядит решение - все в одну таблицу с разными типами полей под разные сущности засунуть?
Типа прикриплейда.

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

Конечно, можно сделать более изъебисто:
Node, NodeType, NodeTypeAttrubute, NodeAttribute и вот так вот того же добиться. И вроде как правильнее будет. Но надо ли?
Аноним 04/11/23 Суб 21:02:18 #741 №2906779 
>>2906625
нет. это жавадебич без внятных пруфов говна поел
все посмотрели вокруг, посмеялись и разошлись )
Аноним 04/11/23 Суб 21:03:41 #742 №2906782 
>>2906779
>нет. это жавадебич без внятных пруфов говна поел
>все посмотрели вокруг, посмеялись и разошлись )
— раздался возглас после 132-миллисекундного ожидания.
Аноним 04/11/23 Суб 21:08:24 #743 №2906789 
image.png
»2906625
Ебанат, ты программировал последний раз в дурке? Из которой ты нам и пишешь

Какие миллисекунды для массива из 6 элементов, джавадебил? Твой литкод несёт хуйню и срет тебе в штаны, маня. Бэк литкода, который эти тесты гоняет, писала такая же обезьяна как и ты.
Аноним 04/11/23 Суб 21:09:15 #744 №2906792 
>>2906782
ожидания ЧЕГО дебил
ты так и не привел факты чего ожидания

у меня код выполняется ЗА НАНОСЕКУНДУ
Аноним 04/11/23 Суб 21:22:14 #745 №2906833 
image.png
Ладно. Раз джаву интереснее обсуждать. Решил таки изъебистым путем идти.
Но вот че мне не нравится. Индексы по такой таблице будут фиговые, потому что куча значений - Null будут.
Аноним 04/11/23 Суб 21:31:02 #746 №2906860 
>>2906833
Уперделся с кучи get; set;. На божественной джаве это один @Data на весь класс.
Аноним 04/11/23 Суб 21:31:28 #747 №2906863 
>>2906792
Выполнения кода, очевидно.
Аноним 04/11/23 Суб 21:32:22 #748 №2906866 
>>2906789
Срёт литкод в штаны мне, а 132 миллисекунды имеет петушарп. Весело.
Аноним 04/11/23 Суб 21:34:50 #749 №2906876 
>>2906860
Та я бы мог просто рекорд сделать. Было бы
public record NodeAttribute(int NodeId,
Node Node,
int AttributeId,
Attribute Attribute,
string StringValue,
Boolean BooleanValue,
sbyte SByteValue,
byte ByteValue,
DateTimeOffset DateTimeValue,
UInt16 UInt16Value,
UInt32 UInt32Value,
UInt64 UInt64Value,
Int16 Int16Value,
Int32 Int32Value,
Int64 Int64Value,
Decimal DecimalValue,
Double DoubleValue,
Single SingleValue,
string? JSONValue,
string? XMLValue,
string? PhoneValue,
string? EmailValue,
string? AddressValue,
string? URLValue,
byte[]? BlobValue,
int? LattitudeValue,
int? LongitudeValue,
int? AltitudeValue);

Просто не помню, еф уже научился с рекордами работать чи нет.
Аноним 04/11/23 Суб 21:36:37 #750 №2906882 
>>2906876
>еф научился с рекордами работать или нет
Вся суть петушарпа. На джаве когда добавили рекорды сделали так, чтобы они превращались в обычные классы при конпеляции, и что угодно будет работать с рекордами.
Аноним 04/11/23 Суб 21:37:53 #751 №2906886 
>>2906882
Они и так - и есть по сути обычный класс, просто с небольшыми фичами.
Просто ЕФ - идет как отдельный продукт, который своей жизнью живет.
Аноним 04/11/23 Суб 21:42:22 #752 №2906901 
>>2906886
Если что-то его не поддерживает, значит нихуя не обычный класс. Разве что этот еф это альтернативный компилятор.
Аноним 04/11/23 Суб 21:47:21 #753 №2906918 
>>2906863
у меня он на машине 16 (ей уже 7 лет епта) года проходит за НАНОсекунду

так что поешь говна, жавоед
Аноним 04/11/23 Суб 21:47:44 #754 №2906920 
>>2906901
Просто ЕФ - хочет гарантировать, что у тебя только один объект на контекст с тем же ключом существует.
Рекорды - иммутабельны, потому, если ты используешь with - получаешь новый объект. В результате - ЕФу это не нравится по умолчанию.
Они конечно могут либо забить на один объект на контекст, но тогда непонятно, что трекать, если человек все еще хочет чтобы изменения трекались.
Аноним 04/11/23 Суб 22:22:52 #755 №2906986 
В чём вообще профит EF? Даппер плюс хранимки во всём лучше.
Аноним 04/11/23 Суб 22:32:36 #756 №2906994 
>>2906986
В удобстве миграций.
В трекинге изменений.
В том, что у тебя не будет копий одного и того же объекта, если ты явно не захочешь этого.
В том что не нужно писать кучу СКУЛЯ для тривиальных вещей на каждый чих.
В том, что ты можешь тестировать код, без необходимости разворачивать под это дело реальную БД(тут с оговораками, но все равно)
Сверху - тулзы для отладки, вшитые в студию. Тулзы для тестов.

Короче. Много всяких приколюх.
Аноним 04/11/23 Суб 22:48:32 #757 №2907005 
>>2906918
"Он"? И сейчас ты мне выложил пруфы, что ты запустил то же, что запускает литкод.
Аноним 04/11/23 Суб 22:49:25 #758 №2907006 
>>2906986
>хранимки
Ой, просто убейся нахуй.
Аноним 04/11/23 Суб 23:06:59 #759 №2907021 
Чёт проиграл с того, как шарпопетух изъёбывается, лишь бы не посмотреть правде в глаза.

>Я запускаю код, он выполняется у меня за наносекунду, а на литкоде за 132 миллисекунды. Какой из этого вывод? Нет, не я запускаю не то же, что на литкоде запускается, это яблоко не падало и литкод рандомные цифры выдаёт (или к чему он хочет подвести?)!
Аноним 04/11/23 Суб 23:20:00 #760 №2907043 
image.png
А еще вопрос. А то вы так часто отвечаете мне, что аж приятно.
Почему вот так никто не делает? Ну, вернее я что-то не видел, чтобы вот так вот делали особо, а если кто-то так делает, то его на хабре ругают.
Какие подводные камни-то, если надо админук, под разные сущности намутить, тупо с отображением таблицы и базовыми круд-операциями?
Аноним 04/11/23 Суб 23:37:02 #761 №2907063 
>>2906994
>>2907006
Ну мне просто очень интересно. Вот у меня опердень. В опердени есть проводки - это такие жирнющие транзакции в несколько тысяч строк кода с вызовом кучи хранимок и вручную расставленными хинтами блокировок в каждой строке. Как вы это в EF делаете? Без хинтов блокировок будет ОЧЕ МЕДЛЕННО и миллиарды дедлоков. Или EF прямо хорошо хинты сам расставляет? Это была бы технология круче чатгопоты. А ещё в этих хранимках очень много временных таблиц, мне их разумеется нельзя в память приложения забирать, клиент 100% обосрётся. На этих таблицах временных индексы часто висят, в целом типичная проводка вначале строит 5-6 временных таблиц, а потом начинает писить и какоть направо-налево в персистентные таблицы джойня их с времянками. Как такое сделать? Грузить в память такое это прямо суицид. Кроме того хотелось бы как-то реюзать код, например у меня уже есть какой-то кусок кода, который у меня будет воспроизводиться в хуевой туче похожих хранимок. Насколько я понимаю если я его в шарпе напишу, то я же опять залечу в память клиента?
Аноним 04/11/23 Суб 23:59:03 #762 №2907100 
Жaбадeбилы смачно соснули с проглотом.
Аноним 05/11/23 Вск 00:38:20 #763 №2907135 
.png
>>2907043
Хм. ХМ...
В общем. Все еще кажется, что норамльно же решение, для тривиальных операций.
Потом - просто наследуемся и радуемся.
Аноним 05/11/23 Вск 10:06:43 #764 №2907231 
>>2907100
>Жaбадeбилы смачно соснули с проглотом.
— раздался возглас после 132-миллисекундного ожидания.
Аноним 05/11/23 Вск 14:09:33 #765 №2907448 
Каково это вам понимать, что все ваши вскукареки про скорость петушарпа были жалким пиздежом, а джава оказалась быстрейшим языком на планете, после раста?
Аноним 05/11/23 Вск 14:58:18 #766 №2907491 
>>2907231
у нас все выполняется мгновенно, а руками из жопы если скорость измерять, то и не такое будет
Аноним 05/11/23 Вск 15:04:32 #767 №2907506 
>>2907448
За шарп лучше платят.
Аноним 05/11/23 Вск 15:29:47 #768 №2907543 
>>2907491
Почему литкод измерил "руками из жопы" именно петушарп?
Аноним 05/11/23 Вск 15:30:14 #769 №2907544 
>>2907506
Тебе никто не платит, лул. Ты бесплатная псина.
Аноним 05/11/23 Вск 16:14:22 #770 №2907589 
2023-11-05 14 55 18.png
2.png
3.png
в общем напихиваю говна в харю жависту от души
не поленился сделал бенчи (хотя я с жавой не работаю и как там бенчить пришлось гуглить)
причем код измеряемого метода взял из леткода
данные с потолка, но идентичны + некоторая защита от jit (который может вывести что массив не меняется и тупо захардкодить результат)

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

В общем итог
c# - 195мс
говножава - 67 (если я верно понимаю выхлоп)

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

А теперь к самой конкретике

где же разница в 20 раз, а, говноед?

Почему шарп проиграл? ну LINQ никогда скоростью не отличался. Он расчитан на абстракцию IEnumerable, которая слишком широкая. Тот же Count под капотом честно обходит через foreach каждый элемент и вызывает для него предикат. То есть он не работает с ним как с массивом

В то же время в жава коде используется Arrays.stream(nums), который рождает IntStream и принимает как раз именно массив (а не абстрактный IEnumerable), а значит может применить под капотом кучу техник для оптимизации.

То есть по факту сравнение реализации для общей абстракции "что то перечислимое и у нас есть предикат (вызов которого не бесплатен" с конкретно заточенной реализацией "заранее известно что у нас а) массив б) массив интов в) фиксированного размера"

Как я уже говорил - сравнение теплого с мягким.
Аноним 05/11/23 Вск 16:17:05 #771 №2907596 
>>2907589
ДЖАВА ВЫЕБАЛА ПЕТУШАРП НЕ НА ШИШКУ, А ВСЕГО НА ПОЛШИШЕЧКИ!!! ПЕРЕМОГА!!!!!!!
Аноним 05/11/23 Вск 16:19:38 #772 №2907600 
>>2907589
>НЕ ОЧЕНЬ-ТО И ХОТЕЛИ!
Аноним 05/11/23 Вск 16:19:56 #773 №2907601 
>>2907596
все проще. в жава используется очевидное читерство, а говноед радуется )
и даже с читерством никаких "в 20 раз"

А ты жри жри говно, не отвлекайся. Тебя обосрали с пруфами.
Аноним 05/11/23 Вск 16:20:42 #774 №2907602 
169919038810383365.jpg
>>2907601
>НИЧЕСТНА!
Аноним 05/11/23 Вск 16:24:14 #775 №2907608 
Когда вак бан джаве?
Аноним 05/11/23 Вск 16:28:56 #776 №2907610 
Сука, я уже минут 10 ржу с этого ебаната, который на читы у джавы пожаловался.
Аноним 05/11/23 Вск 16:56:20 #777 №2907659 
изображение.png
изображение.png
>>2907610
ну если ты долбоеб то ты и с пальца смеешься. С обосранного пальца, который ты сосешь.

А теперь по делу, то есть НАПИХИВАЕМ ГОВНОЕДАМ ГОВНО В ИХ РОТЕШНИКИ

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

Тогда я написал свою реализацию Count (пик), то есть простую и банальную. И получил...63мс, то есть выходит ...жава обосралась со своими 67мс

Почему дефолтный Count так плохо работает?
ну когда я в своем Count заменил int[] -> IEnumerable<int> то все сразу стало плохо

Так что факт - жава ЧИТЕРИТ выбирая КОНКРЕТНУЮ ПОД ИНТОВЫЙ МАССИВ реализацию

И когда я в шарпе сделал то же самое (причем примитив - просто заменил IEnumerable на int[]) - то жава ожидаемо отсосала

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

Жава же наплодила разных IntStream, DoubleStream принимающих массивы, что тоже разумно создавать оптимизированные версии чего либо, но у них свой путь - в жаве нет структур и жопа с женериками, потому у них всякие IntStream вместо Stream<int>
Аноним 05/11/23 Вск 17:00:44 #778 №2907665 
>>2907659
вернее это не жава читерит
это ребята с леткоде зачитерили выбрав что они там выбрали Arrays.stream

(хотя может у них и выбора другого не было - я не знаю жавастримс вообще, я просто посмотрел реализацию их выбора)

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


ну да, ребятам из мс нужно бы написать кучу узкозаточенных LINQ методов чтобы выбирался оптимизированный, а не IEnumerable. Может когда нибудь и напишу им иссуйку.
Аноним 05/11/23 Вск 17:04:34 #779 №2907674 
>>2907659
Написал бы в императивном стиле, с обычным for, со статикой - оно бы еще быстрее было. А если бы еще развернул цикл... Ну да ладно.
Аноним 05/11/23 Вск 17:16:55 #780 №2907693 
>>2907659
>LINQ Expressions
Опиши в чем фича. Я прост на шарпе пишу и все хуею с решений. То у них в nested классах this нету, то null можно пропихнуть, если знак восклицания поставить. Делегаты в пайплайны не сделать нормально. Похоже я вообще не выкупаю ваш яп.
Аноним 05/11/23 Вск 17:17:00 #781 №2907694 
>>2907674
Я просто сделал честно
жава работает с int[]
и пусть шарп будет в тех же условиях (с оптимизациями пусть компилятор играется)

в этих равных условиях шарп победил. Мне этого достаточно и разрывом жопы жависта (хоть он этого не показывает) я вполне удовлетворен.
Аноним 05/11/23 Вск 17:26:00 #782 №2907707 
>>2907659
В шарпе, в принципе, можно не делать специальной реализации под каждый тип. Благодаря нормальным дженерикам int Count<TItem>(this TItem[] arr, Func<TItem, bool>() будет работать так же быстро, как и версия, написанная под массив конкретного типа.

А разницу в получающемся ASM-коде для методов с параметром массивом и IEnumerable, можно заценить вот тут https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEBDAzgWwB8ABAJgEYBYAKGIAYACY8lAbhvoYGUALbKAA4AZbMAB0AJQCuAOwwBLfDHbUOAZibkkTUgwDCDAN40GphibMBtAFLyMAcRgyYUeWAAUGAJ4CYEAGbu8nIAlCEAuhamxBrM2sEY+hCyGAA8ACoAkhgw+AB8njzyuAxZOfiW4Qz8UGhMAKwZ2bl1wBAQADZ5DAKwACZu2DkhUUajZgwAbvwMkCkMALwMdCoTE/7QMNhgPAzu01AMdrlHMtVQUCPUa2bG1zdr8v57vTADYEMwQeVh4w8TczkAGogasHgBfP7RADss2ScjBpkh91MoxsdkczlcHm8vgCQVCEVGMU08TkSRSTXKBQwRRKzDUVNy3VwMAAjnViI0yi0GG1Ot1Xu9PlcJnd/gc4fMlisoQwNrBtrt9jNjvhTgxWWzRQ9xf8zE8Xv1Bjlvrlfij9QD4RgQYi1sj/sRYYCMPbkeCgA===
Аноним 05/11/23 Вск 17:27:30 #783 №2907708 
>>2907693
что значит в чем фича.

Вместо компиляции функции в конректный исполняемый код происходит ее разбор и вшивание в IL дерева выражения.

Ну а дальше ты с ним можешь что то делать - сгенерить SQL например, вытянуть нужные тебе метаданные
Если позволяет навык то менять и делать свои.
Да и просто создавать методы на лету работая с понятным API, а не пердолясь в IL (что сложно ибо там работает стековая модель выполнения и мозг там вообще поплывет).
Аноним 05/11/23 Вск 17:31:00 #784 №2907713 
>>2907589
> Он расчитан на абстракцию IEnumerable, которая слишком широкая. Тот же Count под капотом честно обходит через foreach каждый элемент и вызывает для него предикат
Нет, там есть оптимизация для классов, реализующих ICollection
Аноним 05/11/23 Вск 17:35:33 #785 №2907717 
>>2907707
>>2907713
и тем не менее, у меня 7 дотнет и, сам видишь, ничего оно само не нашло и не выбрало и не оптимизировало (хотя буду честным я не смотрел куда оно там шло под капотом, я смотрел на бенч и он хреновый - а судя по тому что цифры дефолтной реализации и моей с IEnumerable<int> примерно равны, то делаю вывод что так оно и работало.)

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

>оптимизация ... реализующих ICollection
небось это знание Count и не более.
Аноним 05/11/23 Вск 17:36:34 #786 №2907719 
>>2907713
Есть. Но опять же, ICollection тоже абстракция. С ней все так же никак не избежать виртуальных вызовов, которые катастрофически медленнее, чем прямое обращение к элементу массива по индексу.
Аноним 05/11/23 Вск 17:38:23 #787 №2907722 
>>2907659
А теперь перепиши и джаву на массивы и охуей от жизни.
Аноним 05/11/23 Вск 17:39:02 #788 №2907724 
>>2907722
>на массивы
На for вместо стримов*
Аноним 05/11/23 Вск 17:41:03 #789 №2907727 
>>2907717
>> небось это знание Count и не более.
Знание count + использование индексатора для получения элемента. Но это, опять же, все те же виртуальные вызовы.
Аноним 05/11/23 Вск 17:46:07 #790 №2907731 
Я правильно понял, что для того, чтобы получить сходную с джавой производительность надо велосипедить свой аналог комбинации filter + count (и так для комбинаций, например, map, filter, count, map, filter, findFirst и т.д.), а в джаве всё нормально работает без таких выебонов без коробки, и шарподебил называет это читерством? Я всё правильно понял?
Аноним 05/11/23 Вск 17:48:30 #791 №2907733 
Ежедневное обоссывание местного мелкобуквенного петушка.
Аноним 05/11/23 Вск 17:51:10 #792 №2907736 
>>2907589
>при этом тест на шарпе проходит очень быстро(мне влом настраивать), а на говножаве несколько минут гоняет и дает потенциальную возможность житу поработать. но не суть.
Сделай нормальные тесты. Че это за говно? Массив достаточно большой хуйни, с цифрами рандомными+-, цикл убери, чтобы тестрировалось именно один прогон, а не сотни. И нормально настрой шарповый тест, хули он один раз пробегает, а не сумму среднюю считает.
Аноним 05/11/23 Вск 17:58:44 #793 №2907745 
>>2907722
жава уже проиграла, успокойся. Тебе нужно - ты и переписывай, я жаву трогать лишний раз не хочу.

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

>>2907727
ну чет не использует. А может и использует и проблема все равно именно в тех же виртуальных вызовах.
в общем вот

https://pastebin.com/MpAuKqEu

| Method | Mean | Error | StdDev |
|------------ |----------:|---------:|---------:|
| StupidTest | 192.31 ms | 0.640 ms | 0.534 ms |
| StupidTest2 | 64.92 ms | 0.272 ms | 0.227 ms |

>>2907731
Технически да. Если для тебя это окажется узким местом (что сильно вряд ли на фоне остального) и захочется оптимизировать то можно подключить конкретные реализации
а так да - имеем не самую оптимизированную реализацию LINQ

>>2907736
сам делай что хочешь. мне влом
Я и так сделал больше чем нужно - доказал что шарп побыстрее жавы будет в той же задаче если убрать разницу в подходе

и с рэндомом бенчи сами по себе идиотизм. Бенчи должны быть идентичными.
И нет причин делать массивы большими, это ничего не изменит.

мне некогда всей этой херней заниматься. я и так знаю что жава говно. Мой выбор - шарп и котлин
Аноним 05/11/23 Вск 18:02:24 #794 №2907748 
>>2907745
>жава уже проиграла, успокойся.
— послышалось после 10 минутного ожидания написания шаблонного кода под нужную комбинацию операций над потоком данных
Аноним 05/11/23 Вск 18:12:09 #795 №2907756 
>>2907745
>Я и так сделал больше чем нужно - доказал что шарп побыстрее жавы будет в той же задаче если убрать разницу в подходе
>написал огромный кусок кода, который подходит только для одной комбинации операций над одним типом данных
>сравнил это с двумя строчками на джаве
>НИТ РАЗНИЦЫ В ПАДХОДЕ ЯСКОЗАЛ!

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

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

прошло 10 минут и 132 миллисекунды

>мне некогда всей этой херней заниматься. я и так знаю что жава говно. Мой выбор - шарп и котлин
Аноним 05/11/23 Вск 18:12:14 #796 №2907757 
>>2907748
да никто этим не занимается
разница в несчастные 3 раза из за общего решения, в котором обычные виртуальные вызовы на частной задаче
Да в любом коде таких вызовов миллионы.
Ну родили для массивов в жаве конкретные реализации - ну молодцы. Где то сделали лучше и что? это никак не спасет от убожества жавы и ее рантайма.

Может и майки когда то сделают дефолтные такие для частных случаев. Ну заметит кто то что у него стало работать на пару наносекунд быстрее, а скорее всего не заметит вовсе.
Аноним 05/11/23 Вск 18:13:17 #797 №2907759 
>>2907756
короче
иди нахуй жавадолбоеб.
с тобой в диалог больше вступать не буду
это как в говно вступать. нах надо.
Аноним 05/11/23 Вск 18:14:33 #798 №2907762 
>>2907759
Слив принят, 132-миллисекундный. Иди дальше пиши замену всем операциям своего аналога стримов, а я буду в две строчки получать производительность в 20 раз выше.
Аноним 05/11/23 Вск 18:44:14 #799 №2907823 
>>2907731
Да. Это плата за возможность лёгкого добавления новых типов последовательностей(стримов в джавовской терминологии) и операций над ними.
Достаточно просто сравнить кол-во методов, которые содержатся в джавовском интерфейсе Stream (https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html их 30+), которые нужно реализовать, с одним методом в шарповом IEnumerable ( https://learn.microsoft.com/ru-ru/dotnet/api/system.collections.generic.ienumerable-1?view=net-7.0#methods )

Да, это работает медленнее, так как для каждого типа коллекции нет отдельной, оптимальной, реализации для каждого операции, но зато, при добавлении новой операции над стримом тебе не придется добавлять метод для нее в этот интерфейс, а следовательно а каждую его реализацию. Достаточно просто написать один метод-расширение для IEnumerable.
По итогу, джавовский подход быстрей, а шарповый сильно гибче. Джавистам теперь придется долго жить с этими 30 операциями над стримами, так как добавление новой в интерфейс будет ломать обратную совместимость. Шарпанам же уже из коробки доступно около 200 операций над IEnumerable и нет ничего (кроме здравого смысла), что ограничивало бы добавление новых.
Аноним 05/11/23 Вск 18:49:12 #800 №2907832 
image.png
>>2907762
>в две строчки получать производительность в 20 раз выше
Аноним 05/11/23 Вск 18:49:57 #801 №2907834 
image.png
>>2907762
>в две строчки получать производительность в 20 раз выше
Аноним 05/11/23 Вск 19:05:55 #802 №2907871 
>>2907823
Хуйни написал. Он быстрый над коллекциями не из-за стрима, а из-за https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html
Именно в него нахуярил в какой-то момент кучу методов. Про что говорить, в 21 все ещё добавляют. И совместимость никак не страдает.
Аноним 05/11/23 Вск 19:36:28 #803 №2907940 
>>2907832
>>2907834
Ебать его потрясывает.
Аноним 05/11/23 Вск 19:40:58 #804 №2907948 
>>2907823
Додик, как же ты серешь. Альтернатива АйЕнумерабля в джаве это Iterable. И, внезапно, его можно легко перевести в поток данных, как твой АйГиперкомпенсируюЕнумерабля. Только в джаве, почему-то, никто не платит за это, при этом пользуясь всеми преимуществами абстракции, а в петушарпе почему-то это оправдание его тормознутости. Иди жопу мой.
Аноним 05/11/23 Вск 19:47:33 #805 №2907956 
>>2907871
Ты считаешь, что если в интерфейс, который ты реализуешь, кто-то в новой версии добавит новый метод, то совместимость не пострадает? Или тебе таки придется этот метод реализовать, чтобы все на новой версии собралось? Я про это. Или в Java-мире не принято реализовывать стандартные интерфейсы, чтобы интегрировать свои классы с существующим библиотечным кодом?
А стрим-таки быстрее шарпового ienumerable за счёт того, что в его интерфейсе больше методов-операций над стримом, которые можно сделать более оптимизированными (да хоть тот же метод из Collection в них дернуть). В шарповом интерфейсе же тупо один метод, который должен возвращать итератор. Все. А в итераторе максимум, что можно оптимизировать, так это перебор элементов. Зато благодаря такой простоте интерфейса, его легче реализовывать. И операции легче добавлять. Причем, их легче добавлять не только авторам языка, но и разрабам-пользователям. Я могу спокойно написать метод-расширение, который будет работать с любой реализацией интерфейса, и легко и красиво использовать его в цепочке вызовов для стрима, улучшая читаемость кода.
Аноним 05/11/23 Вск 19:49:50 #806 №2907958 
>>2907956
>Ты считаешь, что если в интерфейс, который ты реализуешь, кто-то в новой версии добавит новый метод, то совместимость не пострадает?
Доброе утро. В джаве так уже лет 20 делают. Дегенерат.
Аноним 05/11/23 Вск 19:50:12 #807 №2907959 
>>2907823
на самом деле майкам просто влом.

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

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

>>2907956
стрим быстрее только для массивов где жава знает что это массив и юзает напрямую, а шарп все равно работает через ICollection. Если же данные не массив,а последовательность то читерить не выйдет, но жавист об этом умалчивает ибо послан нахуй.
Аноним 05/11/23 Вск 19:51:49 #808 №2907962 
>>2907959
>НИИИИИЕЕЕЕТ ТЫ НИ МОЖИШЬ АПТИМИЗИРОВАТЬ ПАТАМУШТО НА ПЕТУШАРПЕ ЭТА НИ АПТИМИЗИРОВАНО ЭТА ЧИТИРСТВА!!!!
Аноним 05/11/23 Вск 19:53:03 #809 №2907964 
Запоминаем.

Оптимизации, которые с лопаты скормили шарпочмоням — это оптимизации и мы с ними идём в джаватред срать.
Оптимизации, которых в нашем говне нету — это читерство и вообще а что так можно было что ли?
Аноним 05/11/23 Вск 19:55:10 #810 №2907968 
Запоминаем

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

зачем в шарпотреде вообще обсуждать говно продукт под названием жава
Аноним 05/11/23 Вск 19:55:43 #811 №2907969 
>>2907968
Почему на петушарпе нельзя писать короткий и быстрый код?
Аноним 05/11/23 Вск 19:57:31 #812 №2907974 
>НИИИИИЕЕЕЕТ НЕЛЬЗЯ АБСТРАКЦИЯ ХРРЮЮЮУУУУУИИИИ НИВЕРЬЮ ВРРРЁТЕЕЕЕ!!!
Аноним 05/11/23 Вск 19:58:57 #813 №2907976 
>В СМЫСЛИ НА А ДЖАВЕ МОЖНА? ЧИТИРЫ! ПИДАРАСЫ! НИЧЕСНА ИГРАЕТЕ! МАМИ ПАЖАЛУЮСЬ!!
Аноним 05/11/23 Вск 20:06:25 #814 №2907984 
все увидели какого долбоеба к нам занесло?
А значит пусть орет в одиночку, незачем ему отвечать
Аноним 05/11/23 Вск 20:08:05 #815 №2907990 
>>2907984
>далбаёп)
И это всё, на что ты способен?
Аноним 05/11/23 Вск 20:24:42 #816 №2908035 
.png
)))0))
Аноним 05/11/23 Вск 20:42:33 #817 №2908082 
>>2908035
Мань, я на петушарпе не пишу, с петушарпом связан только через тред, на который и не жаловался. Картиночка не подходит.
Аноним 05/11/23 Вск 20:45:57 #818 №2908091 
>>2908035
Боюсь спросить, что на данном изображении символизирует шарпистов...
Аноним 05/11/23 Вск 20:51:39 #819 №2908103 
>>2908035
Там мухи вместо свиней должны быть
Аноним 05/11/23 Вск 21:31:01 #820 №2908194 
Ща ещё одну картинку нарисую.
Аноним 05/11/23 Вск 21:38:15 #821 №2908208 
А переката не будет? Я каждый раз по 5 минут ищу.
Аноним 05/11/23 Вск 21:47:34 #822 №2908228 
>>2908208
Научить пользоваться избранным и тегами в навигаторе. Реально каждый раз скроллишь все треды что ли?
Аноним 05/11/23 Вск 21:51:56 #823 №2908238 
.png
Аноним 05/11/23 Вск 22:40:13 #824 №2908311 
>>2908228
Но перекат всё равно нужен
Тяжеловат тред для мобильных девайсов

Скоро тем более выйдет дотнет 8
Аноним 05/11/23 Вск 22:52:38 #825 №2908322 
>>2908311
Вот как выйдет - перекачу.
Аноним 05/11/23 Вск 22:57:54 #826 №2908327 
>>2908228
Я с телефона через iChan, у меня навигатор как белая простыня выглядит.
Аноним 06/11/23 Пнд 07:20:30 #827 №2908543 
У меня есть метод, который возвращает какой-то рандомный результат, но мне понадобилось обеспечить его воспроизводимость. Я решил эту проблему так - создал доп класс, который хранит необходимые данные для воспроизведения результата, и два метода, один принимает аргумент out с этим типом, и генерирует случайный результат, записывая в out объект нужную инфу, другой собственно принимает этот объект и на его основе выдает результат. Нормальная идея, или хуйня?
Аноним 06/11/23 Пнд 08:12:00 #828 №2908553 
>>2908543
Нормальная хуйня. Но я бы подумал над реализацией с участием делегатов и замыканий. Гораздо же прикольнее когда код за тебя компилятор генерит.
Аноним 06/11/23 Пнд 13:07:31 #829 №2908813 
Почему на шарпе околосистемщину не пишут, те же базы данных например? На джеве Neo4j и Cassandra есть, шарп вроде как похож на джаву плюс сахарок всякий удобный есть, но ничего такого не видно
Аноним 06/11/23 Пнд 13:18:15 #830 №2908838 
>>2908813
Потому что 132 миллисекунды.
Аноним 06/11/23 Пнд 14:09:58 #831 №2908911 
>>2908813
Потому что пишут. Просто это все местячковая хуйня.
Ну и плюс - управляемый код - всегда медленнее аналогичного натива. Майки вот пытались полностью управляемую ОС нахуярить. В результате - решили, что нахуй надо.
Аноним 06/11/23 Пнд 14:16:42 #832 №2908922 
Почему шарпобляди ноют на тяжёлую идею, когда у самих среда разработки весит, на минуточку, 60 гигабайт (при 600 мб у идеи)? Опять вторая теорема шарпана?
Аноним 06/11/23 Пнд 14:21:04 #833 №2908927 
>>2908911
>На джеве Neo4j и Cassandra есть
Джава теперь нативом стала, шарпопетух?
Аноним 06/11/23 Пнд 14:38:42 #834 №2908956 
>>2908927
> Neo4j и Cassandra
Медленная ненужная хуета. Че дальше?
Аноним 06/11/23 Пнд 14:52:18 #835 №2909002 
>>2908922
>среда разработки весит, на минуточку, 60 гигабайт
Ты ёбу дал, жабадебил?
VS Code 600MB
Android Studio 1.75GB
Это при том, что в первой можно для всего подряд код писать, а во второй только для андроида.
А теперь съеби в свой убогий тред.
Аноним 06/11/23 Пнд 15:04:55 #836 №2909026 
>>2908956
>нинужно
)
Аноним 06/11/23 Пнд 15:05:22 #837 №2909028 
>>2909026
>нужно
)
Аноним 06/11/23 Пнд 15:06:00 #838 №2909031 
>>2909002
>прокаченный блокнот
>по весу как полноценная IDE
)
Аноним 06/11/23 Пнд 15:06:38 #839 №2909032 
>>2909028
Да понял я что нинужно, шарпопсине нужно только то, что копрософт с лопаты скормил. Пынято-принято.
Аноним 06/11/23 Пнд 15:09:26 #840 №2909046 
Только вот на вопрос не ответил. Почему на шарпохуите такого нет, а на джаве есть?
Аноним 06/11/23 Пнд 15:11:34 #841 №2909057 
>>2908956
Хуйню сказал
Аноним 06/11/23 Пнд 15:13:39 #842 №2909062 
>>2909057
Забей, у него всё что на джаве написано медленная и нинужная хуита, его даже разница в скорости джавы с петушарпом в 26 раз не пробила. Необучаемая порода, таких только пуля в лоб вылечит.
Аноним 06/11/23 Пнд 15:18:06 #843 №2909072 
>>2909046
Он же сказал, что есть. Просто это как с сусликом.
Аноним 06/11/23 Пнд 15:18:23 #844 №2909073 
HAHAHA.mp4
>>2907659
> джава - 67 мс, шарп - 63 мс
> джава обосралась

>>2907757
> джава - 67 мс, шарп - 195 мс
> разница в несчастные 3 раза
Аноним 06/11/23 Пнд 15:21:49 #845 №2909082 
>>2909073
>переписал заново функцию из linq под свою конкретную задачу
>сравнил это с двумя строчками джавы, работающими из коробки
>ДЖАВА ОБОСРАЛАСЬ! А ЕЩЁ ДЖАВА ЧЕТИРИТ!
)

>ДЖАВА ВЫЕБАЛА ПЕТУШАРП НЕ НА ШИШКУ, А НА ПОЛШИШЕЧКИ! ПЕРЕМОГА!!!

Я же говорю, его только пуля в лоб исправит.
Аноним 06/11/23 Пнд 15:25:45 #846 №2909102 
Самое главное, что этот обделённый слился, когда его попросили тестировать не массив из 10 элементов, а из большего количества (как изначально было на литкоде), и что вы думаете, он слился. Потому что если протестировать не скорость invokevirtual, а скорость работы всех элементов обработчика потока данных, то полшишечки превратятся в 10 шишек.
Аноним 06/11/23 Пнд 15:32:03 #847 №2909115 
>>2909062
>Забей, у него всё что на джаве написано медленная и нинужная хуита, его даже разница в скорости джавы с петушарпом в 26 раз не пробила. Необучаемая порода, таких только пуля в лоб вылечит.
Да вы заебали, как попугаи повторяете хуйню про 26 раз.
Это не сравнение джавы и шарпа, а сравнение виртуалок литкода для джавы и для шарпа плюс методов измерения времени выполнения. Нам совершенно неизвестно, что там под капотом, поэтому делать какие-то выводы из этого вообще нельзя.

Бенчмарки должны выполняться в одинаковых условиях, причём не просто на одном железе, а ещё и желательно на одной ОС.

Я знаю, ты мне на это ответишь, что у меня бугурт, и что я порвался, потому что аргументов у тебя нет.
Аноним 06/11/23 Пнд 15:34:14 #848 №2909122 
>>2909046
Потому что все есть. Просто так же - нахуй никому не надо.
На шарпе, вон, был охуенный проект для работы с USB-стиками. Попенсорс, все дела. Ну, и чела просто заебало, что он пишет, китайцы - берут его код, тащат себе, закрывают, и только и делают, что срут ишью. А майкам - не уперся проект. Чела заебало за просто так делать - забил.
Была охуеннейшая Нэнси(не околосистемный уровень, но топовая хуйня), которую в эмбеддед даже некоторые тащили, за легкость и удобство. Нахуй никому не упала среди крупных игроков эта Ненси, оно и померло.
БД -так же делатся. Нахуй никому не нужны, по причинам - что это велосипед от хуй пойми кого.
Есть нанофреймворк - куда уж системнее-то? Нахуй никому не нужен, людям проще с ардуино разобраться и им пользоваться. Потому что там считай свой шарп, свой набор стандартных либ и вообще - отъедать половину памяти ПЗУ под рантайм - такое.
Аноним 06/11/23 Пнд 15:35:12 #849 №2909126 
>>2909115
Блинб, а я бы тебя обнял. Тяжело же вам с ним...
Он ведь завтра ещё какую хуйню найдёт и будет верещать ещё пол треда.
Аноним 06/11/23 Пнд 15:37:24 #850 №2909131 
>>2909115
>Я знаю, ты мне на это ответишь, что у меня бугурт, и что я порвался, потому что аргументов у тебя нет.
Своё поведение проецируешь?

Вон выше шарпоблядун делал бенчмарки. На маленьких массивах, с разным временем прогона, неизвестно ещё, загружал ли он ПК дополнительно в момент тестирования джавы (например, сидением на сосаче), и вместе со всем этим... получил обоссывание джавой ебала петушарпа с разницей в 3 раза, и, ВНЕЗАПНО, объявил это великой перемогой, заявив, что джава слабо ебёт. Достичь уровня джавы удалось ему только через несколько часов пыженья и переписав заново (!) тестируемую функцию linq.
Аноним 06/11/23 Пнд 15:38:11 #851 №2909133 
>>2909031
>>прокаченный блокнот
>>по весу как полноценная IDE
>)
Десяток плагинов, и по функционалу vs code начинает превосходить ту же android studio, так что не надо тут про блокнот.
Аноним 06/11/23 Пнд 15:39:26 #852 №2909136 
>>2909133
Зачем же тогда нужна вс на 60-210 гигов?
Аноним 06/11/23 Пнд 15:40:11 #853 №2909138 
>>2909133
Ты андроид студией не пользовался нормально, потому так и говоришь, да?
Аноним 06/11/23 Пнд 15:40:34 #854 №2909139 
>>2909131
Ну вот видишь, уже не 26, а 3, и то, на синтетическом тесте.
Аноним 06/11/23 Пнд 15:42:28 #855 №2909143 
>>2909136
У меня ВС 2022 занимает 4.5 гига. 60 - это, наверное, если поставить вообще все пакеты для разработки на всех языках под все платформы.
Аноним 06/11/23 Пнд 15:44:00 #856 №2909144 
>>2909139
Я не понимаю, как шарподауны могут на полном серьёзе гордиться, что их выебали всего на полшишечки. Особенно когда эти полшишечки в наиудобнейших для них условиях, а требования провести нормальный тест, хотя бы на больших массивах, они игнорируют.
Аноним 06/11/23 Пнд 15:44:43 #857 №2909147 
>>2909143
Опять выебали всего на полшишечки! Да что ж такое-то! У джавы, наверное, импотенция, раз всю шишку вставить в нашу гордую жопу не может!
Аноним 06/11/23 Пнд 15:46:48 #858 №2909150 
>>2909144
Нормальный синтетический тест провести?
Аноним 06/11/23 Пнд 15:48:02 #859 №2909152 
>>2909150
Ну да.
Аноним 06/11/23 Пнд 15:48:30 #860 №2909155 
>>2909152
Ну так проведи.
Аноним 06/11/23 Пнд 15:49:30 #861 №2909157 
>>2909155
Слив принят.
Аноним 06/11/23 Пнд 15:51:17 #862 №2909159 
>>2909147
Ты какой-то странный. Когда vs code меньше весит, чем android studio, ты только выиграл, а когда vs больше, чем idea, ты опять только выиграл.
Аноним 06/11/23 Пнд 15:51:18 #863 №2909160 
>>2909122
Так ты может покажешь, где есть, вместо того чтобы рассказывать какие-то охуительные истории про usb и нанофреймворки?
Аноним 06/11/23 Пнд 15:52:27 #864 №2909165 
>>2909159
Я разве говорил что-то про перемогу андроид студии своим весом? Ты может свои фантазии при себе оставишь?
Аноним 06/11/23 Пнд 15:54:07 #865 №2909168 
>>2909157
А что ты от меня хочешь? Я не знаю, как производительность жабы замерять, я последний раз проект на жабе запускал под виндой 15 лет назад в универе.
Аноним 06/11/23 Пнд 15:55:37 #866 №2909170 
>>2909165
А это не ты был? >>2909031
Сколько вас тут?
Аноним 06/11/23 Пнд 15:56:41 #867 №2909172 
>>2909168
Меня это не ебёт. Ты хочешь доказать, что увеличение массива ничивонидастяскозал, ты и проводи тесты, чтобы это доказать.
Аноним 06/11/23 Пнд 15:56:55 #868 №2909173 
Тред не хочу читать, но вы запарили кормить обосранного и обоссаного много раз жавадебила с куском говна в руке, которое он облизывает не переставая

Примите и успокойтесь
1 леткодовцы обосрались со своими тестами получив разницу в 20 раз ибо тупо дали сожрать jit кусок кода. Разница всего в 3 раза за счет работы с итератором, а не напрямую массивом
2 Да, майки не сделали оптимизацию под массив. Для него "все есть список" (хотя в принципе и могли ибо они столько выкатывают для хайперфа, а про старое забыли) поэтому разница 3 раза на массивах и есть.

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

в ГОНОВОБОСРАННОЙжаве ура ура сделали оптимизацию для массивов. ну молодцы че. А вот гет сет делается через сторонний проект лобок.
таков путь жавы как говна

Кому парит - запилите иссуйку на этот тред и спросите "доколе в стандартной имплементации не будет оптмизации под массивы" и может появится.

и хватит тред утяжелять.
Аноним 06/11/23 Пнд 15:58:39 #869 №2909178 
Сори, а что такое джава? Вроде в древности эту технологию использовали для андроида, но с 2017 там котлин основной язык.
Аноним 06/11/23 Пнд 15:59:59 #870 №2909180 
>>2909173
>ибо тупо дали сожрать jit кусок кода
Тыскозал?
Аноним 06/11/23 Пнд 16:01:04 #871 №2909181 
>>2909170
Я был.

Ты читать учись. Тут претензия к функционалу блокнота, а сравение не с андроид студией, а с идеей.
Аноним 06/11/23 Пнд 16:01:07 #872 №2909182 
>>2909172
Это ты хочешь доказать, что там будет больше разница, вот ты и доказывай.
А я утверждаю, что это синтетическая хуйня, потому что в реальной жизни с массивами целых чисел, тем более с огромными, ни в джаве, нив шарпе работать не приходится.
Аноним 06/11/23 Пнд 16:02:59 #873 №2909185 
>>2909182
Я не говорю, что будет больше. Я говорю, что тест невалиден, так как в литкоде засовывались большие массивы (это прямо написано в constraits), а шарподебил тестировал на массиве в 10 элементов и даже так умудрился отсосать в 3 раза.
Аноним 06/11/23 Пнд 16:03:56 #874 №2909187 
>>2909181
Ну я и говорю, только выиграл. То, что у VS функционала куда больше, чем в IDEA, тебя же не смущает.
Аноним 06/11/23 Пнд 16:05:04 #875 №2909190 
>>2909187
И что такого в этом говне есть того, что нет в IDEA (кроме убогого дизайна из 2005, который вот-вот недавно только в бете поправили)?
Аноним 06/11/23 Пнд 16:18:58 #876 №2909207 
>>2909187
>VS функционала куда больше
Чел не надо. Ты совершаешь ошибку, не лезь блять на идею. Ни один обсосанный копилот и прочие поделки рядом даже не стояли с ее возможностями.
Аноним 06/11/23 Пнд 16:24:31 #877 №2909215 
.png
>>2909207
Какие нахуй возможности? Идея даже собрать проект под ант не в состоянии без пердолинга, даже если все для сборки установлено. Половину GoToDefinition не работают на древних проектах и вообще.
Для сравнения - студия, спокойно обновляет проект с 3,5 до последнего 4,8, тебе остается только то что деприкейтнуло было исправитьна более свежие аналоги.
Аноним 06/11/23 Пнд 16:26:38 #878 №2909223 
>>2909180
я ДОКАЗАЛ
даже такому далекому от программирования имбецилу как ты.
Аноним 06/11/23 Пнд 16:27:01 #879 №2909225 
>>2909215
>Идея даже собрать проект под ант не в состоянии без пердолинга, даже если все для сборки установлено.
Блядь, ты хоть сам-то понял, что высрал?

>Половину GoToDefinition не работают на древних проектах и вообще.
Всё прекрасно работает. Если у тебя что-то не работает то проблема в твоих клешнях, а не в идее.
Аноним 06/11/23 Пнд 16:27:37 #880 №2909227 
>>2909223
И как же ты это доказал? Сказав "яскозал!"?
Аноним 06/11/23 Пнд 16:30:57 #881 №2909229 
image.png
image.png
>>2909215
>Идея даже собрать проект под ант не в состоянии без пердолинга
Это ты тот шиз, что в тред залетал? Пользуйся мавеном, какой ант нахуй? Ты еще скажи, что а чому кобол не робит.
>Половину GoToDefinition не работают
Ты бы хоть показал на каких не робят.
> с 3,5 до последнего 4,8,
Че?
>пик
О, наконец шарписты догадались этот сайт принести. Судя по нему, гц жабы ебет. Также как и строки.
Аноним 06/11/23 Пнд 16:33:44 #882 №2909234 
>>2909229
>Пользуйся мавеном, какой ант нахуй?
Тут даже дело не в том, что ант это легаси, а в том, что идея никакого отношения к сборке не имеет и не должна иметь, так как система сборки на то и система сборки, чтобы быть независимой от окружения и сред разработки. Дегенерат похоже даже не знает, что собирать можно и через консольку.
Аноним 06/11/23 Пнд 16:38:33 #883 №2909240 
>>2909227
скрины с тестами и их результатами и кодом до сих пор в треде
можешь, облизнув очередную порцию говна в руке, внимательно их изучить

Найдешь недочеты? выслушаю
нет - ты говноед ебучий, иди нахуй

я понятно пояснил? вроде даже такой идиот, как ты, должен понять.
Аноним 06/11/23 Пнд 16:40:30 #884 №2909241 
>>2909240
Твои тесты доказали только то, что ты измерял не то же самое, что литкод. Высер про jit это твои маняфантазии. Претензии к качеству теста тоже были выше, будь добр поискать, хотя-бы в своей голове, потому что ты их уже видел, но ответил "ничивонипаминяитсяяскозал!".
Аноним 06/11/23 Пнд 16:42:50 #885 №2909244 
>>2909225
> Кому парит - запилите иссуйку на этот тред и спросите "доколе в стандартной имплементации не будет оптмизации под массивы" и может появится.
Я про свой реальный опыт использование идеи говорю.
Вот, древний проект. Начали его еще в 2003м году. В 2016м(или 18м уже не помню) ушел последний чел, что занимался. Последние версии - писались в нетбинсе. Система сборки - ant
Все что надо для сборки - есть на рабочей машине.
Возникла задача по этому проекту. Жавистов нет, но шарп же почти жава. Кто смелый - го.
Идея - просто не хочет собирать, еще и половину внешних зависимостей красным подчеркивает.
Нетбинс - хотя бы собрал.
Короче. Мой опыт - идея хрень, нетбинс - заебумба.

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

>>2909234
Я-то знаю, что собирать можно через консольку. Только меня вот тута убеждали, что ставишь идею, и все само собой, нихуя делать не надо, все скачает и вообще - это прям пиздец какая крутая иде, житбрейнсы какие молодцы. А в результате? А в результате - хрень какая-то, еще и всратая.
Аноним 06/11/23 Пнд 16:45:50 #886 №2909249 
>>2909241
литкод вообще не показал что измерял
может он ковырялся пальцем в жопе и потом нюхал и оценивал степень вонючести
как знать.
Аноним 06/11/23 Пнд 16:49:07 #887 №2909254 
>>2909244
Для того, чтобы сказать, что виновата идея, ты должен

А) Успешно собрать через консоль
Б) Показать, что этот же загруженный проект в идее с её правильными настройками (т.е. те же данные, что введены были в консоли, должны быть введены и в идею).

Если у тебя через консоль не собирается — виновата точно не идея (либо проект кривой, либо нетбинс как-то анально билдил так, что не понятно, как без него собрать). Если через консоль собирается, но в идею введено не всё из команды, которой собирал — виноваты твои клешни.
Аноним 06/11/23 Пнд 16:50:25 #888 №2909261 
>>2909249
Во-первых не отменяет ничего из сказанного мной. Во-вторых в поле constraints прямо сказано то, что ты должен был понюхать, но не понюхал.
Аноним 06/11/23 Пнд 16:51:28 #889 №2909265 
>>2909254
Почему я должен этой анальной эквилибристикой заниматься? Я похож на пердоликса? Я шарп-то выбрал в свое время, потому что можно из панельки инструментов было на форму кнопочки перетаскивать и получить графическое приложение с кнопочками, окошками, табличками...
Аноним 06/11/23 Пнд 16:53:15 #890 №2909270 
>>2909265
>Почему я должен этой анальной эквилибристикой заниматься?
Потому что ты хочешь доказать, что виновата идея. И это никакого отношения к джаве не имеет, это то, что нужно сделать для строгого доказательства.
Аноним 06/11/23 Пнд 16:55:30 #891 №2909273 
image.png
image.png
Джавадебил, ты тут? Джавадебил, расскажи мне почему у твоего обоссанного литкода котлин отрабатывает за 228 миллисекунд, а у меня за 300 МИКРОСЕКУНД?

И это еще не нормальный замер через бенч либу с прогревом жита, а рабоче крестьянский. Но мне лень заморачиваться потому что система сборки и менеджмент либ в вашем джавадебильном мире это просто пиздец.
Аноним 06/11/23 Пнд 16:56:46 #892 №2909274 
>>2909273
Может потому что ты опять не то же самое измеряешь, что измерял литкод?
Аноним 06/11/23 Пнд 16:57:18 #893 №2909277 
>>2909270
Ну а кто тогда виноват, если эксперимент буквально:
Беру и вытягиваю проект из SVN в папочку. Открываю идеей, она говорит - заебумба, я все поняла, сейчас скачаю это-это-это, пожди. Жду. Чет качает. Потом - все красное и не собирается.
Беру и вытягиваю заново проект в другую папочку. Открываю нетбинсом. Он чет думает какое-то время. Потом - все работает.
По мне не надо плодить сущности.
Аноним 06/11/23 Пнд 17:00:25 #894 №2909284 
>>2909277
Нет, это не говорит, что виновата идея.

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

Ещё один вариант: в проекте лежит папка настроек нетбинса, и ты сравниваешь ненастроенную идею с настроенным нетбинсом.

Чтобы доказать, что эти варианты невозможны, ты должен провести тест с консолью и показать ввод всех настроек от туда в идею.
Аноним 06/11/23 Пнд 17:03:35 #895 №2909286 
image.png
>>2909274
Долбоебина, у меня в массиве 2000 упорядоченных чисел, с границами от -2000 до 2000. Это то что пихает в методы твой обоссаный литкод и твой обоссанный дурачок с ютуба с которым ты прибежал.

Я тебя, обезьяна, еще раз спрашиваю, какие могут быть МИЛЛИСЕКУНДЫ на таком объеме?
Аноним 06/11/23 Пнд 17:04:11 #896 №2909289 
>>2909284
Ааааа. Сложна. Мне проще думать, что идея - кривая, а нетбинс- заебумба.
Аноним 06/11/23 Пнд 17:05:25 #897 №2909293 
>>2909286
Подожди, и че типа в отсоритрованных числах нужно максимум найти?
Аноним 06/11/23 Пнд 17:06:19 #898 №2909295 
>>2909286
Значит что-то другое различается, мань. Например, массив там не один, а 1000 разных, и это запускается 1000 раз.
Аноним 06/11/23 Пнд 17:11:25 #899 №2909308 
>>2909293
Нет, там надо вернуть максимум из числа положительных или отрицательных

https://leetcode.com/problems/maximum-count-of-positive-integer-and-negative-integer/description/

То есть если негативных больше - возвращаешь число негативных

У долбаеба в видео, с которым прибежал джавадебил, график построен на основе высера литкода, лол.

Я уже второй день ору, что существуют такие макаки. Причем у него в профиле гитхаба https://github.com/codereport указано что он работает Research Scientist в НВИДИИ.

БЛЯДЬ ХАХХАХАХАХАХХАХАХАХАХАХХА

это пиздец, индустрии пиздец
Аноним 06/11/23 Пнд 17:17:21 #900 №2909319 
image.png
image.png
Джавадебил, подожди не уходи. Смотри, джавадебил, наивный плюсовый код работает за 1.5 микросекунды.

А твой долбаеб братишка из НВИДИА говорит - https://github.com/codereport/LeetCode/blob/master/Problem%20327P1/0327_Problem_1.cpp - что он выполняется 29 миллисекунд

Сук насколько же это смешная хуйня...
Аноним 06/11/23 Пнд 17:18:29 #901 №2909321 
>>2909308
>>2909319
>Я уже второй день ору
>подожди не уходи
А вы точно сретесь? Больше на что-то другое похоже....
Аноним 06/11/23 Пнд 17:18:55 #902 №2909322 
>>2909319
>Значит что-то другое различается, мань. Например, массив там не один, а 1000 разных, и это запускается 1000 раз.
Аноним 06/11/23 Пнд 17:19:38 #903 №2909324 
>>2909322
ну то есть леткоде не предоставил как он делает тесты
и может реально ковыряет пальцем в жопе и замеряет время.
Аноним 06/11/23 Пнд 17:22:40 #904 №2909327 
>>2909324
>Во-первых не отменяет ничего из сказанного мной.

Может. Ты должен доказать, что ковырялся пальцами в жопе он, а не ты, проведя нормальные тесты. Иначе это высер и яскозал. Почему твои тесты ненормальные уже было сказано, до сих пор не предоставил нормальные сравнения джавы и петушарпа, зато на котлине и плюсах всё сделал, ведь за победу плюсов над петухлином не так страшно, да?
Аноним 06/11/23 Пнд 17:22:46 #905 №2909328 
>>2909319
Как бороться с набуханием в штанах, когда я вижу плюсовый код?
Это же не нормально. У меня есть няшный шарпик. Иногда - задачки по JS. Но стоит подумать о плюсах, как в штанах набухает, сразу воспоминание о вузе, и о том, как плюсы - ебали меня жестко без смазки, а на попытки понять что не так - иди нахуй, дебил. Ух. Бля. Самые сильные эмоции от кодинга - это ебля с плюсами. Как же мне этого почему-то не хватает.
Аноним 06/11/23 Пнд 17:23:08 #906 №2909329 
>>2909322
>А может там вот так!
>А может там так!

А может пошел ты нахуй, дурачок со своей джавапарашей и со своим литкодом из треда?

Там всего три условия, обмудок. Если твой помойный литкод даже не может показать КАКИЕ данные он прогоняет и СКОЛЬКО РАЗ, то рожала его такая же тупорылая макака, как и тебя.

Все, попущен с четкими и твердыми цифрами, свободен.
Аноним 06/11/23 Пнд 17:23:50 #907 №2909331 
>>2909329
еще один все понял.
Аноним 06/11/23 Пнд 17:25:29 #908 №2909332 
>>2909329
-> >>2909327
Аноним 06/11/23 Пнд 17:28:20 #909 №2909340 
>>2909327
я доказал. я проверил LINQ и Stream со своими данными (дополнительно защита от jit) и увидел разницу лишь в 3 раза, а не в 20.
И я ни код ни данные ни результат не прятал как леткоде
На картинках все видно
Можешь изменить данные так чтобы разница стала в 20 (и не виноват был jit) - вперед. Иначе ты говноед без пруфоф который может только орать "ви все вретте, жава говно но вкусное"
Аноним 06/11/23 Пнд 17:29:25 #910 №2909343 
>>2909340
Ты сравнил массивы из 10 элементов, не соответствующие constraints.
Аноним 06/11/23 Пнд 17:31:48 #911 №2909346 
>>2909343
где они не соответствуют?
пруфы в студию?

впрочем даже если бы там был чистый рэндом - я говорю про ОТНОСИТЕЛЬНОЕ время
итоговое время было бы другое, но отношение сохранилось бы. и оно было не в 20 раз лол.
Аноним 06/11/23 Пнд 17:34:18 #912 №2909348 
>>2909340
>ви все вретте, жава говно но вкусное
Так это же буквально ты. Получил результат джавы в 3 раза быстрее, но оправдываешь это какой-то абстракцией (которая и на джаве есть и производительности не мешает, но это тактично проигнорим).
Аноним 06/11/23 Пнд 17:35:28 #913 №2909350 
16991900633762.png
16991900633761.png
>>2909346
Вот твой последний тест со сравнением джавы и петушарпа. Тут отчётливо виден один массив на 16 элементов.
Аноним 06/11/23 Пнд 17:37:24 #914 №2909353 
>>2909346
>и оно было не в 20 раз лол
Так надо было, чтобы джит пробежался и векторные инструкции вставил. Или вообще вырезал все циклы. Че ты как этот. Если в шарпе нет жита, это не повод говорить, аррррря читы
Аноним 06/11/23 Пнд 17:39:48 #915 №2909357 
>>2909350
А ещё тут видно, кстати, что я с первого раза не заметил, совершенное незнание шарподауном основ бенчмаркинга и принципа blackhole и лишний += умноженный на миллион. Без него результаты бы совсем неинтересные получились для шарподебила.
Аноним 06/11/23 Пнд 17:42:25 #916 №2909362 
>>2909348
>которая и на джаве есть
как понять что жавист пиздит? он открыл рот
НЕТ НЕТУ. в этом примере жава работает именно с int[], без асбтракций
когда я сделал то же самое для шарпа - заставил работать с int[] - жава пук пук

>>2909357
откуда мне знать как в вашем говне делается бенч. я же сказал - я просто загуглил. но += ни на что не влияет дядя. он есть и там и там
а консуме просто не позволяет сожрать житу
измени код - я поменяю такое же на шарпе и ты снова обосрешься.
Аноним 06/11/23 Пнд 17:44:14 #917 №2909365 
>>2909362
Не надо подменять тезисы. Ты говорил про пользу этой абстракции для разработчиков. Разработчики легко могут пользоваться интерфейсом Iterable и им не мешает какая-то конкретная реализация Arrays.stream().
Аноним 06/11/23 Пнд 17:46:32 #918 №2909367 
>>2909365
кто сказал что я говорил? это двач
ты тут один обосранный жавист - а шарпистов в треде много
Аноним 06/11/23 Пнд 17:47:09 #919 №2909368 
А в шарпе как всегда смешали мух с котлетами и от абстракции-аналога Iterable страдает перевод массивов в поток данных. Чувствуется невидимая рука индусов, вспоминается как на шинде отваливается авторизация при попытке удалить библиотеку отвечающую за всплывающее после alt+shift окошко.
Аноним 06/11/23 Пнд 17:48:03 #920 №2909369 
>>2909367
Тут в принципе только одно оправдание этого было, и оно было через абстракцию. Этого достаточно, но — примечательно — от человека со стилем письма крайне похожим на твой.
Аноним 06/11/23 Пнд 17:50:03 #921 №2909375 
>>2909369
мой стиль - там где я жависта поливаю говном (буквально) и там написано в скобочках что майки могли бы сделать оптимизацию для массивов

так если видишь жава - эт не я
если говнообосраннаяжава - эт я
Аноним 06/11/23 Пнд 17:51:07 #922 №2909377 
image.png
image.png
image.png
image.png
>>2909328
Это ты еще не познал как охуенно писать на шарпе плюсовый код и местами обгонять сами плюсы за счет жита

Вот например продложая обоссывать джавадебила, снова смотрим на решения для плюсов от дурачка из видео - https://github.com/codereport/LeetCode/blob/master/Problem%20327P1/0327_Problem_1.cpp

Это у него самое быстрое решение за 15 миллисекунд

int maximumCount(vector<int>& nums) {
auto [a, b] = std::equal_range(nums.begin(), nums.end(), 0);
return std::max(
std::distance(nums.begin(), a),
std::distance(b, nums.end()));
}

Все верно - действительно самое быстрое - только за 100 НАНОСЕКУНД, ебло тупое

Идем сюда - https://en.cppreference.com/w/cpp/algorithm/equal_range и смотрим, что же такое equal_range - ага, ясно тупа бинарка. Хз кстати почему микрософт не положил тоже самое в коробку

1. Пишем тоже самое на шарпе (для задачи можно на самом деле считерить и юзать на плюсах только lower_bound, о чем дурачок из НВИДИА видимо не знал, ну а хуле ему ученому)

2. Прогоняем бенч

3. Орем с 20 наносекунд и джавадебила

да, мне абсолютно нехуй делать на выходных, шарпаны
Аноним 06/11/23 Пнд 17:51:49 #923 №2909379 
>>2909375
Ну так высри своё оправдание, раз уж не согласен с тем, что твоё альтер-эго вчера высирало про читы и абсракцию. И будь добр не игнорь вот это >>2909350.
Аноним 06/11/23 Пнд 17:52:10 #924 №2909380 
image.png
>>2909377
Забыл прикрепить плюсовое время
Аноним 06/11/23 Пнд 17:54:11 #925 №2909384 
>>2909379
я ответил на это говнодебил>>2909362 (часть 2)
я жду от тебя кода на жаве с правильными блэкхолами. я сделаю такой же на шарпе и мы измерим
и ты пожрешь говна.
Аноним 06/11/23 Пнд 17:56:06 #926 №2909386 
>>2909384
Претензия к блекхолам это просто шутеечка над дауном. Суть в 16 элементах, что ты исправил везде, кроме двух сравниваемых языков.
Аноним 06/11/23 Пнд 17:57:03 #927 №2909388 
>>2909386
что тебе не нравится в 16 элементах говножуй?
я могу взять оригинальный массив с леткоде, но он слишком маленький поэтому я его нарастил в 2 раза.
Аноним 06/11/23 Пнд 17:57:38 #928 №2909390 
Если есть большое желание исправить += и не быть дауном — то убери ещё blackhole.consume(result) из цикла и конзумь это только в конце.
Аноним 06/11/23 Пнд 17:58:00 #929 №2909391 
>>2909388
То, что constraints подразумевают массивы бОльших размеров.
Аноним 06/11/23 Пнд 17:58:24 #930 №2909392 
image.png
>>2909377
А у вас там реально относительные пути не завезли?
Аноним 06/11/23 Пнд 17:59:16 #931 №2909395 
>>2909390
изначально там его не было - и НИ НА ЧТО НЕ ВЛИЯЕТ
>>2909391
я взял массив с леткоде и даже увеличил.
к ним все претензии. они пальцем в жопе ковыряют.
Аноним 06/11/23 Пнд 18:00:21 #932 №2909396 
>>2909392
Нет, джавадебил, мне просто легче было держать файлик с числами на рабочем столе. Расслабься, джавадебил, я все равно не смогу замерить джаву, после котлина мне уже больно от вашей уебищной системы сборки и менеджмента пакетов.
Аноним 06/11/23 Пнд 18:00:26 #933 №2909397 
>>2909395
Constraints прочитай и охуей.
Аноним 06/11/23 Пнд 18:01:25 #934 №2909402 
>>2909396
Ну раз не сможешь, то ладно. Не больно-то и хотелось.

Кстати, ебать это костыль получается. Чисто виндовый причем.
Аноним 06/11/23 Пнд 18:02:26 #935 №2909405 
>>2909396
Уёбищные только твои клешни. Система сборки на джаве лучшая среди всех других языков (если ты конечно решил собирать мавеном, а не дегенерадлом).
Аноним 06/11/23 Пнд 18:06:39 #936 №2909412 
>>2909397
меньше пустых слов
выдай массив
выдай код на жаве
я измерю и жаву и шарп на одной машине
и даже не буду в этот момент писать какой ты говножуй.
Аноним 06/11/23 Пнд 18:07:14 #937 №2909413 
>>2909405
> Пользуйся только моей любимой системой сборки, тогда все будет классно!

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

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

Но все равно иди отсюда нахуй.
Аноним 06/11/23 Пнд 18:16:25 #938 №2909424 
>>2909412
https://pastebin.com/f8WEth6U

И засунуть это в поле класса, чтобы аллокацию не измерять.
Аноним 06/11/23 Пнд 18:18:13 #939 №2909426 
>>2909413
>А в вашем чудесном джава мире
maven clean install.

>Здесь самое смешное, джавадебил, что ты уже сам срешь бенчмарками шарпа, разобравшись с ними за пару минут ладно за пару часов, ведь ты обезьяна - это очередное доказательство дружелюбности няшного шарпика и инфраструктуры.
Лечись, шиз. Я как-то попытался один раз установить среду разработки для шарпоговна (как раз чтобы написать бенчмарк, но это было не сейчас, а где-то месяц назад), так охуел с 60 гигабайт и больше не притрагивался к этому.
Аноним 06/11/23 Пнд 18:20:26 #940 №2909432 
И что самое главное шарподебил не зря упомянул про "современный" дотнет проект. Наверняка там такие же проблемы с обратной совместимостью, что и в джаве с дегенерадлом, и нужно ебаться с конкретными версиями системы сборки и потом видеть build failed. С мавеном ты один раз скачиваешь 15 мегабайт и ВСЁ. На следующие 10-15 лет ты забываешь про проблемы сборки.
Аноним 06/11/23 Пнд 18:20:52 #941 №2909433 
>>2909424
и сколько раз в цикле это повторять? Без цикла оно будет мгновенным. ладно сделаю 1000
хотя я противник использования стат массивов как поле класса.
Аноним 06/11/23 Пнд 18:21:16 #942 №2909436 
>>2909426
>60 гигабайт

Клевый пиздеж, джавадебил. Но ведь райдер весит всего пару гигов, а студия гигов 5-6, если ставить только дотнет.

Не говоря уже о том, что можно кодить прямо в VS Code ведь у шарпа есть нормальный LSP.

Короче, шизоид, ты можешь жрать древнюю как говно мамонта джавапарашу сколько тебе влезет, но зачем ты пытаешься убедить нас в том, что это вкусно?
Аноним 06/11/23 Пнд 18:22:43 #943 №2909437 
>>2909433
Один раз. JMH позволяет не пользоваться циклами и измерять хоть наносекунды. JMH сам будет это гонять в течении нескольких минут, чтобы имитировать реальную работу.
Аноним 06/11/23 Пнд 18:26:33 #944 №2909446 
>>2909436
Я установил вижлу — увидел хуй. Непонятно, как создать проект и куда что писать. На джаве есть жирная кнопка "СОЗДАТЬ ПРОЕКТ" и когда её нажимаешь, то создаётся проект с Hello World и можно поменять код и писать что-то своё. То же самое было когда я пробовал плюсы в плюсовой иде. А на вижле что нашёл это предложение ставить какие-то модули по 5 гигабайт. Я загуглил, сколько вообще надо такого качать и мне выдало 60 гигов в гугле. Ну я и закрыл нахуй это ебаторию.
Аноним 06/11/23 Пнд 18:28:17 #945 №2909449 
А ещё самое главное что всё это произошло после двух часов ожидания установки этой самой вижлы. IDEA ставится за 2 минуты.
Аноним 06/11/23 Пнд 18:28:23 #946 №2909450 
Напоминаю что большинство анончиков категорически против регулирования срачей в языковых тредах, поэтому шарпо/джаво/расто/джиэс/одинэс и.т.п. петухи, мухи, тараканы, дебилы, долобёбы и.т.п. никак не регулируются. Отстаивайте свою точку зрения в рамках общих правил и берегите нервы, они вам ещё понадобятся на дейлике.
Аноним 06/11/23 Пнд 18:31:34 #947 №2909460 
Джавадебил, давай сразимся как мужчины, заливай проект с бенчмарком этой задачи на джавапараше куда-нибудь. Я записываю видос с прогонов бенча шарпа и джавы. С одинаковым кодом и одниаковыми идиомами?

Согласен, джавадебил?
Аноним 06/11/23 Пнд 18:33:48 #948 №2909464 
>>2909433
Держи https://pastebin.com/B3WbiDDW
Генерацию сам напиши тока.
Аноним 06/11/23 Пнд 18:34:25 #949 №2909467 
>>2909450
> Напоминаю что большинство анончиков категорически против регулирования срачей в языковых тредах
Ссылку на опрос можно?
Аноним 06/11/23 Пнд 18:35:18 #950 №2909468 
>>2909464
Нахуя ты конзюмспу добавил?
Аноним 06/11/23 Пнд 18:35:34 #951 №2909469 
>>2909467
https://strawpoll.com/YVyPm8wj7nN/results
Аноним 06/11/23 Пнд 18:36:07 #952 №2909470 
>>2909468
Гранулярность мб есть. Хз.
Аноним 06/11/23 Пнд 18:37:46 #953 №2909472 
>>2909469
Спс.
Аноним 06/11/23 Пнд 18:39:14 #954 №2909475 
>>2909470
Ты таким макаром только петушарпу дал преимущество в 10 цпу циклов на измерение.
Аноним 06/11/23 Пнд 18:39:28 #955 №2909477 
>>2909472
Опрос несколько раз вбрасывался в МВП-тред и висел в шапках языковых тредов. Вроде в шапке МВП тоже висел. Всем поебать. Кому не поебать те против. Не нашлось ни одного человека за.
Аноним 06/11/23 Пнд 18:40:06 #956 №2909479 
>>2909464
Братишка, джавадебил, ты хоть напиши какая система сборки и чо куда пихнуть чтобы спейсы идеа увидела.

А то смешной такой, написал в шарповом проекте

<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.10" />
</ItemGroup>

насрал нам в тред и сидит довольный

А мы то твое говно как запустить должны?
Аноним 06/11/23 Пнд 18:40:11 #957 №2909480 
>>2909460
Да пожалуйста. Только без кастомной реализации каунта и прочей хуйни.
Аноним 06/11/23 Пнд 18:40:26 #958 №2909481 
>>2909475
Ну как бы для этого есть первый тест. Типа вычесть. Тащемта мне интереснее тестбокс.
Аноним 06/11/23 Пнд 18:41:07 #959 №2909482 
>>2909479
https://pastebin.com/DLjpWcJy
Аноним 06/11/23 Пнд 18:41:52 #960 №2909485 
>>2909480
Отлично, ты главное не сливайся, джавадебил. А то мне еще разобраться надо как эту хуйню запустить.
Аноним 06/11/23 Пнд 18:42:07 #961 №2909486 
>>2909477
Понятно, я там не сижу прост.
Аноним 06/11/23 Пнд 18:42:11 #962 №2909487 
>>2909482
21 джаву надо. Она побыстрее будет, чем 17 на процентов 5-10.
Аноним 06/11/23 Пнд 18:42:33 #963 №2909488 
>>2909437
когда массив не изменяется, да еще стат поле джит может доказать что массив не изменяется
и тогда вместо реального вычисления захардкодит результат.

в итоге просто битва джитов.
Аноним 06/11/23 Пнд 18:43:22 #964 №2909491 
>>2909487
Ну вообще исходя из моего опыта чем ниже тем быстрее. Да и вообще этот пом из какой-то хуйни взят.
Аноним 06/11/23 Пнд 18:44:25 #965 №2909494 
Я с вас хуею. Развели какое-то говно на 300_ постов. И что одна сторона дегенераты, что другая.
Один не может принять очевидную, блять, всем истину, что LINQ медленное говно на итераторах, за использование которого в действительно критичных к производительности участках кода на код-ревью в нормальных командах просто обоссут.
Второй же пришёл в тред просто срать и набрасывать дерьмо на вентилятор. Если бы хотел что-то более-менее конструктивно обсудить, то принёс бы сразу ссылку на репозиторий с исходниками бенчей, чтобы достопочтенные аноны сами всё запустить и во всем убедиться.

P.S. Ещё более комичным этот срач делает то, что о производительности спорят адепты двух языков,
в которых большинство разрабов в своих энтерпрайзных болотцах с проблемой недостаточной производительности кода, скорее всего, никогда не столкнутся, так как их код большую часть времени тупо ждет ответа от БД/других сервисов. А если и столкнутся, то бизнес скажет забить и просто оплатит дополнительные ресурсы, так как новые фичи нужны были ещё вчера.
Аноним 06/11/23 Пнд 18:44:38 #966 №2909495 
>>2909482
Братишка, джавадебил, почему твоя крутая идеа и система сборки не может просто скачать зависимости как нюгет?

Чо делать, давай рассказывай
Аноним 06/11/23 Пнд 18:45:31 #967 №2909497 
image.png
>>2909495
забыл
Аноним 06/11/23 Пнд 18:45:42 #968 №2909498 
>>2909495
Добавь в зависимость jmh... Ты как до этого тестил вообще?
Аноним 06/11/23 Пнд 18:46:14 #969 №2909500 
image.png
>>2909497
Тыкни. Должно скачать.
Аноним 06/11/23 Пнд 18:46:26 #970 №2909501 
>>2909450
>>2909467
>>2909469
Опрос говно.
На самом деле все языкосрачи нужно вынести в отдельный закрепленный бесконечный тред (как в свое время сделали в gd с их "юнитидебилы vs все_остальные_дебилы" темой), а в остальных тредах банить за срачи. Причем в первую очередь тех, кто ведется и начинает отвечать на заведомо разжигающие посты.
Аноним 06/11/23 Пнд 18:46:29 #971 №2909502 
Да ладно, весело же...
Аноним 06/11/23 Пнд 18:47:44 #972 №2909503 
>>2909488
А циклы-то как улучшат ситуацию? JMH, вроде, контроллирует JIT, чтобы ненужные оптимизации не производил, по крайней мере по моему опыту можно просто в @Setup написать генерацию и пользоваться этим.
Аноним 06/11/23 Пнд 18:47:52 #973 №2909504 
>>2909498
Котлин тестил по редмихе с гитхаба, энивей не вникал процесс, запустилось и хуй с ним.
>>2909500
Кочает вроде, едем дальше
Аноним 06/11/23 Пнд 18:48:09 #974 №2909505 
>>2909494
дык все равно будет через неделю перекот.

и во втором ты ошибся. я как раз адепт хайперфа и лично меня от многих вещей в шарпе где забыли сделать нормально корежит.
Аноним 06/11/23 Пнд 18:48:45 #975 №2909506 
>>2909488
Как вариант сделать поле с массивом public volatile и в начале каждого теста присваивать его локальной переменной. Так jit хуй что докажет.
Аноним 06/11/23 Пнд 18:48:50 #976 №2909507 
image.png
image.png
>>2909504
Еще можешь плагин этот скачать. Чтобы тыркать из иде сразу.
Аноним 06/11/23 Пнд 18:49:57 #977 №2909510 
Так братишка, джавадебил, все готово, теперь кинь мне код, который десериализует массив с числами из жусона

И узнай есть ли атрибут который помечает метод как подготовку, которую он выполнит перед бенчем, как наш шарповый GlobalSetap
Аноним 06/11/23 Пнд 18:50:18 #978 №2909511 
>>2909506
Или можно ещё сделать второй тест, в котором сразу будет возвращаться захардкоженное значение, чтобы удостовериться, что jit ничего не переоптимизировал.
Аноним 06/11/23 Пнд 18:50:59 #979 №2909513 
>>2909510
Не ну это джексон в зависмоти надо пихать. А нахуй там жсон вообще? Че csv уже усе?
Аноним 06/11/23 Пнд 18:52:11 #980 №2909516 
>>2909513
Ну окей, а чо мне прямо захуярить массив в код? Ну давай проверь лол

джава...
Аноним 06/11/23 Пнд 18:52:19 #981 №2909517 
>>2909510
>в @Setup написать генерацию и пользоваться этим.

А вот этим кодом я генерировал массив

Random random = new Random();
List<Integer> list = new ArrayList<>(2000);
int current = -2000;
for (int i = 0; i < 2000; i++) {
current = current + random.nextInt(0, 5);
if (current >= 2000) break;
list.add(current);
}
System.out.printf("new int[] {"+String.join(", ", list.stream().map(int_ -> Integer.toString(int_)).toList())+"}");
Аноним 06/11/23 Пнд 18:53:09 #982 №2909519 
а блядь у вас в джаве жусона в коробке нет? блядь...
Аноним 06/11/23 Пнд 18:54:15 #983 №2909522 
>>2909517
Да я таким же шарповым генерил, маня. Вопрос в том что он одинаковый должен быть для жавы и шарпа, поэтому читаем из файла. Ладно жди, почекаю как прочитать регуляркой
Аноним 06/11/23 Пнд 18:55:26 #984 №2909525 
>>2909505
>я как раз адепт хайперфа
Ну так и пиздовай в плюсы.
Аноним 06/11/23 Пнд 18:56:14 #985 №2909526 
.png
>>2909446
> Непонятно, как создать проект и куда что писать
Серьезно? Давайте тредом поможем найти кнопку создать проект.
> На джаве есть жирная кнопка "СОЗДАТЬ ПРОЕКТ"
Действительно, жалко что в студии такой нет. Какая беда...
Аноним 06/11/23 Пнд 18:57:15 #986 №2909528 
>>2909526
Ну вот нажми на эту кнопку и увидь какая хуйня там открывается.
Аноним 06/11/23 Пнд 19:00:52 #987 №2909533 
>>2909516
>захуярить массив в код?
Ну он 65кб не занимает, можешь и вставить.
Аноним 06/11/23 Пнд 19:03:45 #988 №2909539 
>>2909525
но я не адепт невнятных заклинаний


в дотнетбенч как настроить показание времени
вот us это что такое? наносекунды? уткосекунды? что это блин.
Аноним 06/11/23 Пнд 19:04:02 #989 №2909540 
лол
Аноним 06/11/23 Пнд 19:04:39 #990 №2909542 
2023-11-06 21-02-53.mkv
>>2909528
Аноним 06/11/23 Пнд 19:06:35 #991 №2909545 
>>2909542
У меня нихуя там не было.
Аноним 06/11/23 Пнд 19:08:28 #992 №2909546 
>>2909539
Микросекунды. Долбоёб, это официальное обозначение СИ (или не СИ, но не менее используемое).
Аноним 06/11/23 Пнд 19:09:05 #993 №2909547 
Микросекунда - это единица измерения времени, равная 0,000001 (одной миллионной) доле секунды (10 - 6) или 0,001 (одной тысячной) миллисекунды. Сокращенное русское обозначение: мкс, международное: µs. Слово «микросекунда» состоит из двух смысловых частей: «микро» - в переводе с древнегреческого языка означает «маленький» и «секунда» (сокращение словосочетания «pars minuta secunda») - «часть мелкая вторая» (часа).
Аноним 06/11/23 Пнд 19:10:40 #994 №2909552 
>>2909542
Как же оно убого выглядит...
Аноним 06/11/23 Пнд 19:11:37 #995 №2909554 
>>2909545
Это дефолтная студия 2022, единственное я решарпер накатил. Я даже настройки не открывал, т.к. на этом компьютере 99% времени в 2012 студии сижу. Для 2022 студии у меня другой компьютер.
Аноним 06/11/23 Пнд 19:13:05 #996 №2909558 
>>2909546
ОК. как заставить этот дотнетбенч работать дольше, а не несколько секунд?
Аноним 06/11/23 Пнд 19:13:18 #997 №2909560 
>>2909552
>>2909552
А для меня идея убого выглядит. Это вопрос привычки исключительно, я 2008 студию застал уже на работе, 2005 когда учился использовал. Мне все другие IDE кажутся до жути кривыми, тупыми и неудобными.
Аноним 06/11/23 Пнд 19:14:05 #998 №2909562 
>>2909554
Тем не менее у меня ничего не было. Судя по тому, что я из того окна как-то попал в окно загрузки модулей, мне предложило их там скачать.
Аноним 06/11/23 Пнд 19:15:42 #999 №2909567 
>>2909560
>неудобными
Вот максимум (для тех, кто всю жизнь в проприетарном notepad++ кодил). Но никак не некрасивыми.
Аноним 06/11/23 Пнд 19:17:58 #1000 №2909572 
>>2909560
Даже с этой парашей? https://www.jetbrains.com/help/idea/new-ui.html
Аноним 06/11/23 Пнд 19:18:21 #1001 №2909574 
Ну и че там, скоро с бенчами челик разберется? Там минут пять делов-то.
Аноним 06/11/23 Пнд 19:19:10 #1002 №2909577 
>>2909558
Я чё, шарпоблядь и ебу, как там чё делать?
Аноним 06/11/23 Пнд 19:20:18 #1003 №2909580 
>>2909574
дотнет не хочет работать долго. он работает 13 секунд и все.
при этом жава долбит 5 минут с разогревами и прочим.

как по мни битва джитов
Аноним 06/11/23 Пнд 19:22:29 #1004 №2909583 
>>2909580
Там усреднение значения идет. Джит псевдорандомом убрать можно.
Давай дотнет настраивай, тут куча шарпистов.
Аноним 06/11/23 Пнд 19:22:56 #1005 №2909585 
>>2909580
У вас нет что ли возможности настроить прогревы и итерации?
Аноним 06/11/23 Пнд 19:23:24 #1006 №2909586 
>>2909580
У вас нет что ли возможности настроить прогревы и итерации?
Аноним 06/11/23 Пнд 19:26:28 #1007 №2909590 
image.png
Братишка джавадебил, не уходи, я потихоньку продвигаюсь в вашем говне. Пиздец сколько ебли чтобы прочитать массив из файлика, какие же ущербы.
Аноним 06/11/23 Пнд 19:27:13 #1008 №2909591 
image.png
image.png
>>2909562
Ну если ты галочку "Разработка на C#" когда студию ставил, то сорямба, я олигофренопедагогикой бесплатно не занимаюсь, попробуй читать что в окнах написано.
>>2909567
К сожалению все IDE после 2008 студии пиздец уродливые. Уже 2010 была блевотной, дальше было только хуже. Идея была рождена хуёвой. Я если что много какими IDE пользуюсь, т.к. халтуры гоняю и на жабе, и на плюсах, и в принципе на чём попросят, и датагрипом пользуюсь когда васянку приходится пилить. Идея просто меньшее из зол, у джавадебилов все IDE даунские. Подписка на все продукты жидбрейнс у меня очень древняя, с 2017 до окончания работы жидбрейнс в России им платил.
>>2909572
> Даже с этой парашей?
А смысл? Косячен сам design language жидбрейнсов, там в общем лечить особо нечего, надо выкидывать и заново делать.
Аноним 06/11/23 Пнд 19:29:15 #1009 №2909599 
>>2909591
>с 2017 до окончания работы жидбрейнс в России им платил
А вообще пользуюсь очень давно, сколько пиратил уже не помню. В 2012 купил первую легальную на распродаже в честь конца света.
Аноним 06/11/23 Пнд 19:29:25 #1010 №2909600 
>>2909591
>Ну если ты галочку "Разработка на C#" когда студию ставил
Что галочку?
Аноним 06/11/23 Пнд 19:29:48 #1011 №2909602 
>>2909590
О, все таки джексон поставил. Изменить генерацию на пробелы, неее. Ну удачи
Аноним 06/11/23 Пнд 19:30:38 #1012 №2909604 
>>2909600
Не поставил. У меня слова из головы выпадают к сожалению. Последствия долгого веслания.
Аноним 06/11/23 Пнд 19:30:55 #1013 №2909606 
>>2909602
Так, как мне запустить прогон бенча? Идеа нихуя не видет это как тесты
Аноним 06/11/23 Пнд 19:31:18 #1014 №2909608 
>>2909591
>Косячен сам design language жидбрейнсов
Говорит пользователь блевотного WordCode.
Аноним 06/11/23 Пнд 19:31:43 #1015 №2909609 
>>2909604
Ставил. Помню что ставил.
Аноним 06/11/23 Пнд 19:31:59 #1016 №2909610 
image.png
>>2909606
Плагин >>2909507
И у класса такая штучка с часиками появица. Нажимай на нее.
Аноним 06/11/23 Пнд 19:32:16 #1017 №2909613 
>>2909585
есть конечно. только мне некогда долго это гуглить
короче, я заебался разбираться в незнакомой мне теме.
как по мне идентичный код хоть и время выполнения в разы

жава - 1,967 микросекунды после 5 минут страданий
шарп - 6,9 микросекунд после 13 секунд тестов.

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

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

ну и то что это битва джитов, ведь почему не встроился делегат как прямой вызов со временем? хз, может этого времени не хватило, ну сколько там было тех вызовов.
Аноним 06/11/23 Пнд 19:34:26 #1018 №2909619 
>>2909613
Загружай шарповый проект на гитхаб. Сам проведу тесты. Должна быть разница в 26 раз.
Аноним 06/11/23 Пнд 19:34:28 #1019 №2909620 
>>2909608
Я не знаю что это такое даже.
>>2909609
Ну тогда скорее всего не догадался в поиск ввести название языка. В любом случае никаких проблем со студией нет, она и гораздо быстрее идеи, и гораздо удобнее. Говорю как человек который пердолится с обеими IDE уже больше десяти лет.
Аноним 06/11/23 Пнд 19:35:19 #1020 №2909622 
>>2909620
>Я не знаю что это такое даже.
А ты воображение включи. Что выглядит как Word 2010, но в чём можно писать код?
Аноним 06/11/23 Пнд 19:38:19 #1021 №2909626 
>>2909619
с какого перепугу она должна быть в 26 раз
это только в воспаленной фантазии леткодовца
Аноним 06/11/23 Пнд 19:38:47 #1022 №2909629 
>>2909626
Ты проект загружай, а там посмотрим.
Аноним 06/11/23 Пнд 19:39:21 #1023 №2909631 
>>2909613
>однако мы помним что любим шарп не за скорость, а уж за что обсираем жаву - напоминать не нужно.
Да вас уже во всём обоссали, осталось последнее "джава зато медленная!", и это обоссано было.
Аноним 06/11/23 Пнд 19:39:47 #1024 №2909632 
>>2909613
В среднем ультрасовременная джава лоб в лоб у меня на 30% быстрее ультрасовременного шарпа на корректных тестах при одинаковом коде (плюс-минус синтаксис). Хуй знает почему так. Толку от этого особого нет, стоит столкнуться со вводом-выводом как начинается джаваотсос и она делает изо всех сил вид что не тормозит, при этом шарп отлично переживает асинхронную параллельную грязь на шестидесятичетырёхпоточном процессоре.
>>2909622
Не охота воображение включать. У меня вообще нет ни одной программы с риббонами кроме офиса. Офис кстати майковский охуенный, очень советую, куда лучше остальной дрисни.
Аноним 06/11/23 Пнд 19:41:02 #1025 №2909637 
>>2909632
Не ну ты подожди, щас же виртуальные треды завезли. С ними потести.
Аноним 06/11/23 Пнд 19:41:16 #1026 №2909638 
>>2909631
>Да вас уже во всём обоссали
Ты штаны забыл снять когда писил, джава это архаичная тупая дрисня, можно на си писать, тоже очень быстро будут даунские программы в виде laba1 работать. Или на голованге.
Аноним 06/11/23 Пнд 19:43:16 #1027 №2909647 
>>2909638
Ну обсуждали же пару месяцев назад не по перформансу, а по выразительности, что закончилось полным обоссыванием пятаков шарподебилов.
Аноним 06/11/23 Пнд 19:45:24 #1028 №2909650 
>>2909637
Он, вероятно, вообще не параллелил джава код, потому что асинк/авейт имеет огромный оверхед (в котлине вон там до x10 от обычного кода код с корутинами выполняется), и выигрывает только в сравнении с вообще нераспаралелленным кодом. Даже не на виртуальных потоках джава бы победила, если бы код был параллельным.
Аноним 06/11/23 Пнд 19:45:25 #1029 №2909651 
>>2909613
Странно. По мне так шарп быстрее должен быть. Там чуть ли не векторные инструкции и асм вставки можно хуярить.
Аноним 06/11/23 Пнд 19:45:34 #1030 №2909652 
>>2909631
язык это не только рантайм. это и синтаксис и потребляемая память. В жаве с первым жопа - решает сторонний проект лобок,
(да и не все решает. как он решает вопросы корутин (асинк/авайт))? а никак.
со вторым ПОЛНАЯ жопа в принципе. Продукты на жаве требуют дохуища памяти.

тот же котлин обладает в разы лучшим синтаксимом и работает на том же jvm кстати. И там лобки никакие не нужны и корутины из коробки.
на андроиде жаву задвинул в полную жопу. целую жаву. и никакие лобки не спасли

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

смекаешь?
почему в жаве до сих пор свойства пишут всякие лобки, а не родные средства жавы? разрабы жавы вас ненавидят? видимо да.
Аноним 06/11/23 Пнд 19:46:58 #1031 №2909657 
>>2909637
Я не пробовал виртуальные треды, но ожидаю что там при реализации "в лоб" будет просто комичный отсос потому что когда тасок больше сотни надо чётко очень им приоритет ставить. Если сделать 10000 тасок, каждой дать виртуальный тред и запустить их на выполнение то там просто пиздец будет. Жду в целом бенчей на реальных задачах. Переходить на джаву в производительных проектах не планирую.
>>2909647
Обсуждали пару месяцев назад, предложили литкод изи решить на стрим апи. Джавадебилы не осилили. Какой-то хуесос всю ночь не мог успокоиться и визжал про ломбок, я аж устал его обоссывать. Потом он объявил что победил, никто с ним особо спорить не стал - он и так уже всех заебал. В целом спорить с джавадебилами невозможно даже если сам более или менее пишешь на джаве, т.к. мозг там напрочь атрофирован.
Аноним 06/11/23 Пнд 19:48:16 #1032 №2909659 
>>2909629
мне влом
держи пастебинку

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

https://pastebin.com/ch9kythf
Аноним 06/11/23 Пнд 19:49:14 #1033 №2909661 
>>2909652
>(да и не все решает. как он решает вопросы корутин (асинк/авайт))?
Кому нахуй нужен загрязнитель языка и дублятор методов? Асинк авейт это литералли компромисс за счёт синтаксиса, который шарпобляди за неимением альтернатив возносят из зрады в перемогу.

>потребляемая память
Память стоит дёшево и масштабируется легко. А процессор мощнее мощнейшего не купишь. Тратить процессорное время в угоду памяти это дебилизм.
Аноним 06/11/23 Пнд 19:50:07 #1034 №2909662 
>>2909657
>надо чётко очень им приоритет ставить.
Ебать проекции. В луме даже такого понятия как приоритет нет.
Аноним 06/11/23 Пнд 19:50:09 #1035 №2909664 
>>2909650
> асинк/авейт имеет огромный оверхед
Ты конечно же покажешь по этому поводу код который можно посмотреть, или просто опять кукареку?
Аноним 06/11/23 Пнд 19:50:09 #1036 №2909665 
>>2909657
А че в шарпе каждой таске можно приоритет назначить и шедулер там настолько ебейший, что все это учтет?
Аноним 06/11/23 Пнд 19:52:40 #1037 №2909669 
2023-11-0621-51-00.png
>>2909664
Ну вот. Разница более чем в 12 раз.
Аноним 06/11/23 Пнд 19:53:04 #1038 №2909671 
>>2909669
Сурс https://youtu.be/kwS3OeoVCno?t=1572
Аноним 06/11/23 Пнд 19:53:44 #1039 №2909677 
>>2909662>>2909665
В этом и проблема что нет никакого смысла делать поток (даже виртуальный) в котором описана вся логика. Нужно делать целую кучу маленьких тасочек-этапчиков, и у тебя должны тасочки-этапчики вылетать из очереди на выполнение и потом залетать обратно в очередь следующим этапчиком. В этом никак не помогут зелёные треды. Правда от асинк-эвейта тоже толку мало, он в другом месте нужен абсолтно и в моём понимании с зелёными тредами не конкурирует. С зелёными тредами конкурирует тредпул который есть во всех языках со времён палеозоя. И он сосёт.
Аноним 06/11/23 Пнд 19:54:15 #1040 №2909683 
image.png
Так, братишка джавадебил, не теряйся, я почти все настроил. Кстати, чо такое Arrays.stream? Просто с массивом нельзя работать? Чо это хуйня делает? На стек засовывает?
Аноним 06/11/23 Пнд 19:54:43 #1041 №2909686 
>>2909657
Кого ты там обоссал? Ты даже не смог ответить, как на петушарпе конструктор по параметрам сделать и не писать этот ебучий бойлерплейт каждый раз для каждого класса. Или как например повесить {get; set} на весь класс.
Аноним 06/11/23 Пнд 19:55:22 #1042 №2909687 
>>2909683
Даёт обёртку для работы с массивом как со стримом. Выполняется за константное и очень быстрое время.
Аноним 06/11/23 Пнд 19:57:27 #1043 №2909691 
>>2909677
>В этом и проблема что нет никакого смысла делать поток (даже виртуальный) в котором описана вся логика. Нужно делать целую кучу маленьких тасочек-этапчиков, и у тебя должны тасочки-этапчики вылетать из очереди на выполнение и потом залетать обратно в очередь следующим этапчиком.
Пруфы будут или потому что тыскозал?
Аноним 06/11/23 Пнд 19:57:31 #1044 №2909692 
>>2909683
Ты нахера выкинул код боксинга? Он как бы пребразовывал массивы так, чтобы использовался Iterable. Чтобы вы не выли про читерство.
Аноним 06/11/23 Пнд 19:58:04 #1045 №2909695 
>>2909661
>Кому нахуй нужен загрязнитель языка и дублятор методов
хз о чем ты. есть базовые вещи типа того же гет сет. эти вещи элементарно было сделать сахаром, но ХЕР
А так - код должен писать компилятор, а не программист или сторонняя тулза

>Асинк авейт это литералли компромисс за счёт синтаксиса
так то то простая и удачная концепция которая ПОТОМ во многие языки перекочевала. И только жава в отстающих.

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

>>2909650
потому что асинк/авейт имеет огромный оверхед
имеет, но не огромный поскольку не равен TPL с его тасками, а другая структура
Аноним 06/11/23 Пнд 19:58:59 #1046 №2909699 
>>2909692
Это не читерство, а оптимизация.
Аноним 06/11/23 Пнд 20:02:05 #1047 №2909708 
>>2909695
>хз о чем ты. есть базовые вещи типа того же гет сет. эти вещи элементарно было сделать сахаром, но ХЕР
>А так - код должен писать компилятор, а не программист или сторонняя тулза
То есть ты на претензию к дебильности асинк/авейта отвечаешь уже давно решённой проблемой джавы с гетсетами? Умно, умно.

>ага. а потом сидишь и тюнишь жвм с ее GC чтобы все это ворочалось ибо нагрузка на гц пиздец. С переменным успехом.
Проснись, ты серешь. ГЦ в джаве никто не тюнит, его тюнят разработчики самой джавы. Ты просто выбираешь, если у тебя куча меньше 16 гб, то стандартный, если больше, то generational shenandoah, который даже на кучах с 128 гб паузы меньше миллисекунды держит в в целом отъедает очень мало перформанса (конкретные цифры говорить не буду, так как не знаю их).
Аноним 06/11/23 Пнд 20:02:34 #1048 №2909709 
>>2909695
>имеет, но не огромный поскольку не равен TPL с его тасками, а другая структура
Что ты высрал? Тебе тесты оверхеда дали.
Аноним 06/11/23 Пнд 20:03:40 #1049 №2909714 
>>2909669
Я честно не вижу тут никакого асинк/эвейт. Дальше не вникал, мне вечером выходного дня лень. Неси тест асинк/эвейт про который ты говорил.
>>2909686
Скорее всего тебя и обоссал. Я тебе довольно подробно описал почему нужно этот код писать (нажимая иногда Tab) и чем плоха неявная генерация, и почему ей никто в шарпе не пользуется. Мне сейчас лень с тобой сраться, я на x2 с тех пор ушёл, обустраиваю дунасинг на новых сотыгах и мне не до холиваров.
>>2909691
Пруфов не будет, я наоборот заинтересован в том чтобы конкуренты писали дрисню на лум и делали сосамбу, мне платят за то чтобы были высокие конкретные интересные бизнесу метрики, а сравнивают эти метрики с конкурентами. Для моей задачи есть формальное математическое обоснование (которое я никому разумеется не показываю), если хочешь такое же то начни копать планировщики процессов в пакетных системах. Скорее всего чтобы удовлетворить любопытство тебе Таненбаума хватит, но я его читал невероятно давно и не помню там я про них впервые узнал или нет.
Аноним 06/11/23 Пнд 20:05:10 #1050 №2909716 
>>2909708
>решённой проблемой джавы с гетсетами? Умно, умно.
решенную проблему? а ну покажи мне в спеке жавы что там с гет сетами. Ничего. значит нахуй
СТОРОННИЕ вещи не предлагать.
стороннего может быть чего угодно. стороннего я могу вообще котлин взять и хуять рядом с жавой.

>>2909708
>Проснись, ты серешь. ГЦ в джаве никто не тюнит, его тюнят разработчики самой джавы.
да ты мне расскажи ага )))

>>2909709
где дали кто дал? пост в студию.
Аноним 06/11/23 Пнд 20:05:21 #1051 №2909718 
>>2909709
Так ты тесты на котлин привёл. Конечно на JVM это хуёво работает, она не поддерживает потому что такое нативно. Если бы можно было сделать чтобы поддерживала нормально, то давно в жабе были бы асинх/эвэйт и это было бы сверхновой фичей и преимуществом жавы перед всем подряд.
Аноним 06/11/23 Пнд 20:08:33 #1052 №2909724 
>>2909714
> Я честно не вижу тут никакого асинк/эвейт. Дальше не вникал, мне вечером выходного дня лень. Неси тест асинк/эвейт про который ты говорил.
Это петухлиновский асинк/авейт.

>Скорее всего тебя и обоссал. Я тебе довольно подробно описал почему нужно этот код писать (нажимая иногда Tab) и чем плоха неявная генерация, и почему ей никто в шарпе не пользуется. Мне сейчас лень с тобой сраться, я на x2 с тех пор ушёл, обустраиваю дунасинг на новых сотыгах и мне не до холиваров.
Да, ты рассказал, что сидеть в классах с говном очень хорошо. Только если ты муха. Других аргументов ты не предоставил, просто повторяя раз за разом "ниявная генерация! магия! ниизкаропки!", и ни разу о том, чем это плохо.

>Пруфов не будет
Слив принят. Дальнейшие оправдания, почему слился, не интересуют. Итог: джава выебала петушарп и в асинхронщине, а с виртуальными тредами разрыв стал ещё больше.
Аноним 06/11/23 Пнд 20:09:45 #1053 №2909727 
>>2909716
> значит нахуй
> СТОРОННИЕ вещи не предлагать.
Аргументы, чем это плохо будут, или "в питушарпе такова нет, значит плоха!"?

>да ты мне расскажи ага )))
Слив принят.

>где дали кто дал? пост в студию.
-> >>2909669 >>2909671
Аноним 06/11/23 Пнд 20:10:40 #1054 №2909730 
>>2909718
Расскажешь, какая именно нативная поддержка для этого нужна?
Аноним 06/11/23 Пнд 20:20:31 #1055 №2909747 
Не забываем про
>Кому нахуй нужен загрязнитель языка и дублятор методов? Асинк авейт это литералли компромисс за счёт синтаксиса, который шарпобляди за неимением альтернатив возносят из зрады в перемогу.
На который ответа не поступило.
Аноним 06/11/23 Пнд 20:22:45 #1056 №2909751 
>>2909727
>Аргументы, чем это плохо будут
приписывать жаве заслугу не жавы это тупо идиотизм
я ж говорю - я могу так котлин приписать как заслугу жавы

типа видели котлин на андроиде - так это жава же охуенная)

опять видео. не. в этом раз не хочу
в жопоковырянии леткодовцев разобрались, мне работать нужно
Аноним 06/11/23 Пнд 20:23:32 #1057 №2909752 
>>2909751
Хорошо, жаба + ломбок ссыт на шарпохуйню с высокой колокольни.
Аноним 06/11/23 Пнд 20:24:10 #1058 №2909754 
Даже не так. Жаба + её экосистема ссыт на шарпохуйню с высокой колокольни.
Аноним 06/11/23 Пнд 20:30:05 #1059 №2909762 
Братэлло, утихомирься, тебя пиздец несёт уже. Давай, иди траву потрогай.
>>2909724
> Слив принят
Да ради бога, я даже не пытаюсь с тобой спорить, ты по 10-15 раз в день свою победу в споре объявляешь а потом опять влетаешь и опять споришь, видимо победа была не особо убедительной.
>>2909730
Если вкрации, то поддержка кооперативной многозадачности. Асинхронный шарп это химера, в нём многозадачность одновременно работает и кооперативная и вытесняющая. Джава работает за счёт вытесняющей многозадачности. Это пытаются пофиксить лумом. Но это далеко не во всех задачах поможет, если поможет вообще.
>>2909747
Чтобы понять почему так, тебе нужно понять как работает внутри асинк/эвейт. Это не недостаток синтаксиса, это требование механизма который лежит под этим механизмом языка.
Аноним 06/11/23 Пнд 20:38:16 #1060 №2909768 
>>2909762
>Да ради бога, я даже не пытаюсь с тобой спорить
Так зачем ты отвечаешь мне тогда? Просто нравится урину на ебальник принимать?

>ты по 10-15 раз в день свою победу в споре объявляешь а потом опять влетаешь и опять споришь, видимо победа была не особо убедительной.
Насколько я помню свои последние "слив принят", темы спора были разные. А если начинается повторение старой хуйни, как сейчас, я просто цитирую результаты предыдущих споров (по крайней мере, что запомнил от туда).

>Если вкрации, то поддержка кооперативной многозадачности.
И каким образом кооперативная многозадачность фиксит отключённый инлайнинг в раздробленной функции, из-за которого и происходит падение перформанса в 5 раз (ещё в 2 раза из-за непосредственного таскания объектов continuation, как раз которые можно оптимизировать за счёт нативов)? Хуйню не неси.

>требование механизма который лежит под этим механизмом языка.
Ну значит в петушарпе сделали не хуёвый асинк/авейт, а хуёвый механизм добавили, который вынудил добавить асинк/авейт. Лучше стало?
Аноним 06/11/23 Пнд 20:46:42 #1061 №2909776 
>>2909768
>>требование механизма который лежит под этим механизмом языка.
>Ну значит в петушарпе сделали не хуёвый асинк/авейт, а хуёвый механизм добавили, который вынудил добавить асинк/авейт. Лучше стало?
Раньше было всё на коллбеках как сейчас в жабе. Но потом майки поняли, что коллбеки -- это уёбищно и завернули в сахарок эвейта. А в жабе всё так и осталось на коллбеках.
Аноним 06/11/23 Пнд 20:47:43 #1062 №2909777 
>>2909776
Слово копрософта это божественное откровение или как это что-то доказывает?
Аноним 06/11/23 Пнд 20:56:08 #1063 №2909793 
>>2909777
Да какое откровение, код на коллбеках читать невозможно, спагетти длиннющие образуются. Особенно учитывая, что в большинстве случаев после асинхронной операции ничего не больше не делается, а весь дальнейший код уходит в коллбек.
И тут у тебя либо бойлерплейт с создаваемым объектом, реализующим интерфейс, и методом в нём (и отступом на несколько шагов вглубь), либо вообще продолжение вынесено в другое место, что ещё хуже.
К слову, в шарпе даже коллбеки, где ещё есть, делегатами делаются, а не объектами-обработчиками. Меньше кода, меньше отступов, проще читать.
Аноним 06/11/23 Пнд 20:58:46 #1064 №2909797 
>>2909793
А кто заставляет спагетти с колбеками писать?
Аноним 06/11/23 Пнд 21:03:20 #1065 №2909807 
>>2909752
лол. минимальный синтаксический сахар это говночмо уже выдает за "да это же киллерфича"
Аноним 06/11/23 Пнд 21:09:53 #1066 №2909822 
>>2909807
Причём здесь киллерфичность ломбока? Ты предъявлял к использованию ломбока в принципе, тебя обоссали по этому.
Аноним 06/11/23 Пнд 21:27:43 #1067 №2909840 
>>2909822
и предъявляю. это не заслуга жавы, а заслугал ее УБОГОСТИ что появилась необходимость рождения сторонней тулзы
и даже эта тулза просто добавляет НЕКОТОРЫЙ сахар
а не решает фундаментальные проблемы

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

так что обоссали тебя, дебича, который заслугу СТОРОННЕГО ПЛАГИНА (дающего некоторый сахар, не более) приписывает к фичам самого языка
Аноним 06/11/23 Пнд 21:31:44 #1068 №2909844 
>>2909797
Ну-ка, напиши мне веб запрос без коллбека.
Аноним 06/11/23 Пнд 21:56:43 #1069 №2909861 
Вот, нашёл в гугле:
request.execute(new AsyncHandler<Object>() {
@Override
public State onStatusReceived(HttpResponseStatus responseStatus)
throws Exception {
return null;
}

@Override
public State onHeadersReceived(HttpHeaders headers)
throws Exception {
return null;
}

@Override
public State onBodyPartReceived(HttpResponseBodyPart bodyPart)
throws Exception {
return null;
}

@Override
public void onThrowable(Throwable t) {

}

@Override
public Object onCompleted() throws Exception {
return null;
}
});

Это не коллбеки что ли?
В шарпе это будет просто var result = await request.Execute(), а потом вся дальнейшая обработка ответа.
Заворачиваем в try catch и ловим и обрабатываем ошибки в catch.
Всё идёт подряд, код легко читается и в целом понятен. А в жабе глазами туда-сюда прыгать приходится; а если какой-то умник сделал не анонимный объект обработчик, а целый класс в отдельном файле, то совсем пиздец.
Аноним 06/11/23 Пнд 21:59:57 #1070 №2909865 
Вот, пососал хуйцов.
Аноним 06/11/23 Пнд 22:04:21 #1071 №2909872 
image.png
image.png
image.png
image.png
>>2909687
Ну что ты братишка джавадебил, как поживаешь? А то я чуть не умер разбираясь с вашим джаваговном. Что братишка, джавадебил, ты думал я не смогу залезть в доку и чекнуть зачем нужна черная дыра твоей мамаши?

Кстати, хорошая либа, братишка. Первый вармап быстрее чем все остальные, хотя должен быть сильно медленнее, как и у шарпа, ведь дам компайл. Ну да ладно, не буду придираться, джавадебил. Либу ведь тоже писал джавадебил.

идеа дает срать в консоль пока в нее срет процесс, бля...

>Даёт обёртку для работы с массивом как со стримом. Выполняется за константное и очень быстрое время.

То есть джавапараша со специальной оберткой (читай спецом написанным кодом небось прямо в джите) работает СТОЛЬКО ЖЕ сколько линк который просто ездит по энумераторам?

Пиздец...

Джавадебил, мне видос записывать?
Аноним 06/11/23 Пнд 22:08:53 #1072 №2909876 
>>2909872
Ты че блять издеваешься? Консьюм цпу сжигает процессорное время. А все возвращаемое из теста и так попадет в блэкхол. Хуево чекнул.
>То есть джавапараша со специальной оберткой
У тебя бокс. Значит нет спец обертки. Короче вы друг друга стоите. Вам бы поебаться.
Аноним 06/11/23 Пнд 22:12:16 #1073 №2909877 
>>2909876
Сука, попросил тесты написать, взял и своими культями все испортил.
Аноним 06/11/23 Пнд 22:13:58 #1074 №2909879 
Какую книгу по микросервисам порекомендуете?
Аноним 06/11/23 Пнд 22:18:43 #1075 №2909885 
ek1w6pyygmendtlfezucuvzecai.jpeg
>>2909879
От Ричардсона. Которая с гуталином на обложке
Аноним 06/11/23 Пнд 22:30:39 #1076 №2909895 
image.png
>>2909876
Ну извини, джавадебил, у меня от вашего говна уже моск потик, перепутал метод. Извини. Вот тебе новый честный прогон.

Разрушительная победа джаваговна правда с помощью в ручную написанного кода, еще небось и с векторизацией над линком, шарписты всем покинуть тред
Аноним 06/11/23 Пнд 22:35:16 #1077 №2909900 
>>2909895
Благодарочка тебе за то что взял эстафету обсирания жависта (а то мне некогда ведь работать нужно)
Но у меня linq отстал в перфомансе
Аноним 06/11/23 Пнд 22:36:17 #1078 №2909904 
>>2909900
У него тоже, ну как видишь. Хотя вам бы нормальные бенчи под шарп написать, а то че они несколько секунд-то работают.
Аноним 06/11/23 Пнд 22:45:55 #1079 №2909916 
>>2909885
Жаваговно
Аноним 06/11/23 Пнд 22:48:12 #1080 №2909922 
image.png
>>2909904
А, еще как варик это потестить. Так-то первая итерация, где не было бокса должна быть самой быстрой. С боксингом наиболее медленная, а это по середине, наверное. Но хз, как на самом деле, конечно.
Аноним 07/11/23 Втр 00:15:07 #1081 №2909985 
>>2909885
Ты пидор.
Аноним 07/11/23 Втр 16:13:20 #1082 №2910842 
Перекатил короче, а то ОП умер походу >>2910820 (OP)

Ток с шапкой обосрался, а моча не реагирует на репорты

Перекатывайтесь или пусть тонет, хз
Аноним 07/11/23 Втр 16:47:17 #1083 №2910893 
>>2910842
Моча поправила можно перекатываться
Аноним 15/11/23 Срд 13:06:44 #1084 №2922779 
ntcn
comments powered by Disqus

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