Двач.hk не отвечает.
Вы видите копию треда, сохраненную 3 января в 21:08.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
image.png40 Кб, 601x374
2 2851505
>>851295 (OP)
Сижу в своё удовольствие почитываю и разбираюсь в книжечке Рихтера, и хочется прям наглядно, самому потыкаться, в каждом его всхрюке разобраться.

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

Мне просто интересно откуда он берет эти данные. Может кто из анончиков, такую фигню подскажет.
3 2851521
>>2851243 →

>using static System.Math;


>using static Extended.Math;



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

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

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

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

Еще и обоссаная студия сперва предлагает тебе оба варианта, а на третью попытку предлагает только один, потому что ебаному майкрософту надо вставить свой обоссаный ИИ, которому даже кофе заварить не доверишься. ИИ за тебя уже решил.
12456.jpg23 Кб, 382x84
4 2851659
шарпач, есть ли способ сделать пикрелейтед удобнее? целых три строчки тратится и выглядит уебищно...
5 2851664
>>851659
[Conditional("DEBUG")]
6 2851681
>>851664
охуенно, микрософт гении. спасибо
7 2851787
Слава богу аниме...
8 2852022
Шарпаны, что думаете от чистоте крови функции?
Пробовали? Как ощущение?
Просто со стороны - выглядит как вполне хорошая хуйня же. Типа легко написать тесты. Поведение - предсказуемое. И вообще. Потом из этих чистых функций - наебенил еще фунукций и все заебись погнали.
9 2852036
>>852022
Тебе this в каждый метод передается не для того чтобы ты хуйней с чистыми функциями страдал, чел.
slide-51.jpg106 Кб, 1024x767
10 2852204
>>852022
Это какая-то залупа для джава скриптизеров. В сишарпе есть статические методы для этих целей, а обычные на то и созданы, чтобы взаимодействовать с компонентами экземпляра класса. Примеры таких методов — свойства.
11 2852242
Джава стриптизеры...
12 2852340
>>852204
Как будто в жаве нет ствтических методов
13 2852490
>>851659
Нормальный логгер прикрути и выставь уровень логгирования.
14 2852492
>>851659
>>852490
И Environment нормально использовать не забудь.
15 2852494
>>852490
1 а нормальный это какой?
2 а выстави уровень это как?

в вопросах подвох
16 2852523
>>852494

> нормальный это какой


Очевидный серилог.

> выстави уровень это как


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

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

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

>>852573
что выбрать? подводную лодку или камаз? Мне рассаду выращивать.
Ну что за вопросы блин
Capture.JPG19 Кб, 1167x105
19 2852623
>>852490
>>852523
братишь у меня все в скомпилированном виде занимает 9,50KB
нахуй мне эта несомненно крутая монстра которая толще всего моего проекта на порядки, когда пикрелейтед выполняет свою задачу на сто процентов и на релизе даже не появляется?
20 2852665
Петушки, все конструкторы написали?
21 2852694
>>852665
Еще не все. Вопросы?
Screenshot from 2023-09-23 20-29-48.png118 Кб, 1158x937
22 2852697
пацаны помогите

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

в ноде есть __directory

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

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

можно было бы в /temp держать но чот хз, не уверен что ток на unix будет запускаться..
23 2852700
>>852697
а ладно похуй буду в /temp держать ебаная кринжатина хули оно путь до рута то нигде не хранит
24 2852769
Всем привет. Появилась идея сделать что-то типо сайта для просмотра видео. Проблема в том, что если файл весит много, скажем гигов 10, передавать его в сеть - это просто пиздец. Отсюда вопрос: что нужно посмотреть/почитать, чтобы понять как разделить видео на сегменты и передавать в браузер. Насколько я понял нужно код на Js наваять, который будет запрашивать видос с определённого места, а сервак должен будет выдавать сегмент видео, скажем в 4 мб.
25 2852776
>>852769
Стриминговые протоколы хуй знает когда придумали. Никакие файлы по 10 гигов там не передаются.
27 2852837
>>852833
пасиба
изображение.png88 Кб, 694x505
28 2852900
>>852769
Кароч я разобрался. Надо было всего лишь почитать про http побольше, а разбить видос на сегменты оказалось намного проще, чем я думал.
изображение.png16 Кб, 752x114
29 2852929
Хотел посмотреть, что из себя представляет класс HttpContentHeaders.А он пишет, что нет конструктора, который принимает 0 аргументов
30 2852931
>>852340
Ну я предположил, что это вылезло из мест, где пытаются залечить выстрел в ногу. А может что-то древнее, где нет OOП.
31 2852941
>>852581

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


Ее и не будет. У логгера можно выставить уровни.
Есть возможность глобально указать минимальный уровень.

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

>if(logger.IsEnabled(debug)) logger.WriteDebug


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

В любом случае это не так критично по сравнению с остальным. Это как наперстком черпать воду при WPF-шторме.
32 2852947
>>852623
Братишь, а че будешь делать, если тебе надо будет увеличить уровни логгирования, потому что на машине клиента не робит, а на твоей робит? Ты бы мог установить переключатель и получить от клиента более подробный лог.
33 2852966
>>852941
то есть ты сам стараешься не вызывать метод если левел не установлен, но всем говоришь что "вызывайте, серилог разберется"?

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

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

ну и в горячих местах это просто вызовы методов....которые не нужны.
34 2852977
>>852966

>то есть ты сам стараешься не вызывать метод если левел не установлен, но всем говоришь что "вызывайте, серилог разберется"?


Я такого не говорил. Операции с текстом лишние, а булевые ничего не стоят.

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


>ну и в горячих местах


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

А я тебе скажу в чем твой план — говно. Когда пользователь запустит твое приложение, оно не сможет записать логи буквально никак.
В разработке используется инструменты отладки, а логи записываются как раз на случаи отсутствия непосредственного доступа к программе.
35 2852978
>>852947
а клиенты - это кто? я для себя пишу.
36 2852979
>>852977

>Там твой логгер нахуй не нужон


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

>Ты бы еще в циклы логировал


а что не так. Если нужно, то логируется все.

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


ты про Debug.WriteLine? о да, его так весело читать. Там чего только нету. Там есть все...что тебе и не нужно.
37 2852980
>>852978
Для себя можно что угодно писать, это универсальное оправдание.
38 2852982
>>852979

>Это ты логгер притащил туда где его не требовалось.


Я не ванга. Вижу хуйню — делаю замечание.

>а что не так


Хуйня №2

>ты про Debug.WriteLine?


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

>Я про точки останова, таблицу переменных и панель стека вызовов, которые дают исчерпывающую информацию на любом этапе


эээх не ловил ты никогда гейзенбаги. ничего. может повезет.
1455858404580.png48 Кб, 1070x868
40 2852988
>>852980
ну вот я и пишу сообщения для себя, которых на релизе не будет и которые будут выглядеть красиво, спасибо двачу-помогачу.
а логгер будет от фреймворка, который подтянется автоматически и будет срать логами только тогда когда это надо, а если "клиент" зальет его в дискок сообщества, то бот его проанализирует и пинганет автора по гуиду. ты на основании трех строчек кода уже какую-то себе картину составил и начал советы непрошенные довить. не надо так
41 2853662
>>852623

>братишь у меня все в скомпилированном виде занимает 9,50KB


Ты за каких хером в шарпе байтоебствуешь на ровном месте?
42 2853695
Как в Markdown файлах вставлять локальные изображения. Хотел красивый ридми запилить, но видимо не судьба, это говно ни на чт оне способно.
Даже в вижуал студо коде можно, но не в вижуал студии.
43 2853703
>>853695
1 - visual studio code
2 - visual studio
44 2853785
>>852581

>что выбрать? подводную лодку или камаз? Мне рассаду выращивать.


Ну что за вопросы блин
Java Spring - это подводная лодка?
А C# .net - Камаз?

Это типа как UE и Unity - UE для больших проектов, а Unity - для казуалок?
2023-09-2419-43-10.png27 Кб, 1069x880
45 2853793
>>853703
Хотел вставить mermaid-диаграмки? Соси хуй. Это можно сделать только в visual studio code.
2023-09-2419-56-04.png13 Кб, 712x295
46 2853824
>>853695
>>853703
>>853793
Расширение MarkdownEditor v2.0 поддерживает и локальные картинки и русалку.
47 2853954
>>853785

>Java Spring - это подводная лодка?


или камаз

>А C# .net - Камаз?


или подводная лодка

>Это типа как UE и Unity - UE для больших проектов, а Unity - для казуалок?


то есть то что это 2 разных языка, и вряд ли ты знаешь их оба, тебя не смущает? ну ок

но все равно спрашивать в шарпотреде про жаваговно - ну такое себе.
48 2854304
>>853954
Я мимодил, увлекаюсь с младых ногтей языками, в своё время неплохо знал джаву, писал на ней пруверы и игры на LWJGL, но спринг не трогал никогда, вебом не интересовался, потом ушёл в шарп капитально, в шарпе уже и кишочки знаю. В принципе оба языка в отрыве от фреймворков представляю довольно хорошо, слежу за новыми фичами в языках и.т.п.
А вот чем реально спринг отличается от аспа? Я никогда не видел приложение на спринге даже изнутри.
49 2854306
>>854304
нам, ШАРПИСТАМ, откуда то это знать? и ЗАЧЕМ?
50 2854313
>>852947

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


Я обычно когда нужна трассировка подкидываю дебажные библиотеки клиенту с напердоленной специально под него трассировкой в местах где жду проблемы. Смысла делать одну трассировку на все косяки не вижу, слишком много мусора и логи тяжело анализировать, больше 50 мегабайт в Notepad++ лучше не вставлять, а на нагруженной опердени 50 мегабайт трассировки набивается за 10 минут.
>>854306
Я думаю людей которые знают и шарп и джаву не мало, меня на работе пытались на джавапроект посадить, но я задоджил. У нас в одном отделе шарп, в другом джава например.
51 2854446
>>854313

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


А как это сделать?
52 2854978
>>854313

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


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

>слишком много мусора и логи тяжело анализировать, больше 50 мегабайт в Notepad++ лучше не вставлять


Про ротацию логов слышал?

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


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

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


Просто знающих - много, т.к. языки родственные по многим параметрам, а вот тех кто нормально шарит в кишках и ньюансах фреймворков, так чтобы их профессионально применять уже очень немного. А то что тебя пытались просто с нихуя на другой стек посадить говорит либо об охуенном бардаке в твоей конторе, либо показывает твою низкую ценность как специалиста, что работодателю совершенно похуй где ты будешь работать и что и там и там выхлоп от тебя небольшой будет.
53 2855013
>>851295 (OP)
Совсем ньюфажный вкатывается в тред, в C# по видеоурокам SimpleCode только дошел до классов.

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

Пошел искать актуальные обучающие материалы - пока ничего, кроме двух книжек на пикрелах не нашёл. Подскажите, во что забуриться с головой и не охуеть от косноязычного слога/хуевого микрофона ментора.
54 2855105
>>855013
Троелсен 2 пик у тебя, Asp.Net в действии, Ef Core в действии. Затем

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

>а ты думал выучил шарпы и всё?


Да...

Хорошо, большое спасибо. Ушёл курить вопрос, текст сохранил.
56 2855140
>>854978
ты из тех для кого существует только один вид софта )))
много видел логов, например, в десктопном софте?
а ведь даже в браузере они есть. ты их видел? ах да, у тебя же не дебагбилд,
вот тупые разрабы браузеров -у них бардак )
57 2855142
открываю сбилденный студией dll в hex редакторе - вижу путь проекта, у меня дефолтный C:\Users\XXXXX\source\repos
сразу встал такой вопрос - а что еще пишется в бинарники, есть ли там какая-то еще более персональная инфа и как анонимизироваться, если да?
58 2855150
>>855142
от кого прячешься?
59 2855154
>>855150
юзернейм тупой, стыдно показывать всем желающим...
60 2855357
>>854446

> А как это сделать?


А какие проблемы? Кодовая база разбита на рой мелких библиотек, если надо одну подправить то просто беру и правлю, состояние на конкретный патч у меня в ветке, потом заменяю релизную библиотеку отладочной с логами, снимаю трассировку, опционально правлю что-то и подкладываю пока ошибка не пропадёт. Потом отключаю трассировку (обычно конфигом логгера). Потом правки (без трассировки) переношу из рабочей копии патча в мастер и оттуда они попадают в следующий патч.
>>854978

> Чет либо пиздеж, либо клиенты у тебя конкретные терпилы, либо у тебя в производстве ебаный бардак.


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

> Про ротацию логов слышал?


И чем она тут поможет? Зачем хранить архивы трассировок? Ты ССД продаёшь и надо чтобы они быстрее из строя выходили?

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


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

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


Почему? Ты просто слесарь фреймворка и тебе платят за знание кишочек аспа, ты на всех эту слесарную мудрость и распространяешь. Моя ценность как сотрудника не в понимании кишочек аспа, а в понимании бизнеса кабана и того как система крутит этот бизнес. Гораздо легче научить меня спрингу чем джавадебила тому как вся остальная система устроена и как должны проходить бизнес-процессы.
Пиздец у тебя привычка на ровном месте пытаться собеседника унизить, у тебя наверное нет друзей.
60 2855357
>>854446

> А как это сделать?


А какие проблемы? Кодовая база разбита на рой мелких библиотек, если надо одну подправить то просто беру и правлю, состояние на конкретный патч у меня в ветке, потом заменяю релизную библиотеку отладочной с логами, снимаю трассировку, опционально правлю что-то и подкладываю пока ошибка не пропадёт. Потом отключаю трассировку (обычно конфигом логгера). Потом правки (без трассировки) переношу из рабочей копии патча в мастер и оттуда они попадают в следующий патч.
>>854978

> Чет либо пиздеж, либо клиенты у тебя конкретные терпилы, либо у тебя в производстве ебаный бардак.


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

> Про ротацию логов слышал?


И чем она тут поможет? Зачем хранить архивы трассировок? Ты ССД продаёшь и надо чтобы они быстрее из строя выходили?

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


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

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


Почему? Ты просто слесарь фреймворка и тебе платят за знание кишочек аспа, ты на всех эту слесарную мудрость и распространяешь. Моя ценность как сотрудника не в понимании кишочек аспа, а в понимании бизнеса кабана и того как система крутит этот бизнес. Гораздо легче научить меня спрингу чем джавадебила тому как вся остальная система устроена и как должны проходить бизнес-процессы.
Пиздец у тебя привычка на ровном месте пытаться собеседника унизить, у тебя наверное нет друзей.
61 2855360
>>855142
Я не знаю, но путь к исходникам там реально есть. Обычно сборка релизных версий происходит не на машине разработчика, а на агенте тимсити и вся дрисня там заполнена тоже с агента.
Если тебе интересно посмотреть что ещё в DLLке то юзай ILDASM, я по приколу завтра тоже гляну что там есть.
62 2855406
>>855105
Какова вероятность со знанием asp.net core и react найти работу на удаленке?
Чтобы на работу не ходить, а дома сидеть?
мимо крокодил
63 2855533
>>855406

>Какова вероятность со знанием asp.net core и react найти работу на удаленке?


Просто со 'знанием' вряд ли. Вот с 'опытом' хотя бы от полугода, то вполне реально.
64 2855844
>>855357

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


Нахуя бы я еще на двач заходил?
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 нихуя про этот визитер не будут знать и не будут засраны этим говном. А логику при визите - все равно никто никогда не добавляет ИРЛ.

В общем. Че я не понимаю. Поясните.
.png84 Кб, 1246x514
66 2856548
>>856504
Ну типа срсли. Даже накидал пример.
Вот чем оно буде хуже, по сравнени с тем, что я в каждый бы тот класс пихал этот Visit?
67 2856623
>>856504
Ты случаем не из тех, кто сначала учит паттерны и потом думает, как их применять?
68 2856645
>>856623
Не.
Просто вот я на ночь глядя вспомнил про конкретно этот паттерн. Подумал-подумал. Еще раз подумал.
И за всю жизнь видел его только в коде Netty или Mina(не помню уже, давно смотрел) и это был пиздец какой-то(то что пиздец был - помню)
Пизжу. Еще кажется в сорсах .net'а видел пару раз. Но там оно тоже выглядело будто просто хуйнули, чтобы было, типа мы тоже как жависты знаем эти ваши паттерны.
Вот и думаю. Мож я чего-то не понимаю и на деле есть применение, где ну прям код становится лучше, удобнее и понятнее.
2023-09-2700-23-49.png13 Кб, 435x231
69 2856817
Почему когда я наследуюсь от Window и создаю свойство Owner, студия не говорит мне, что такое свойство уже есть в базовом классе?

В самом классе Window свойство выглядит так (из метаданных):
public Window Owner { get; set; }
70 2856827
>>856817
А не, есть предупреждение.
71 2856840
>>856548
>>856645
ну так ты сам себе ответил, не? визитор это паттерн матчинг у древних мамонтов, а у нас современный язык
72 2857039
>>856840
Визитор это паттерн двойной диспетчеризации и шарп не исключение
15937867776240.png1,3 Мб, 1242x1236
73 2857239
Только что узнал, что в шарпе невозможно такое:

/// передаем свойство 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?
74 2857246
>>857239
И вообще такой вопрос, а out создает аллокации?
zDUpZtd2thumb.png50 Кб, 200x166
75 2857268
>>857246
Короче между 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("Охуеть не встать ..."); }
76 2857342
>>857268
Теперь я буду доебывать алису своими тупыми и мелочными вопросами.
2023-09-2713-11-45.png12 Кб, 860x192
77 2857352
2023-09-2714-35-17.png41 Кб, 858x615
78 2857472
>>857352
С этой хуйней можно шизом стать.
79 2857741
>>857239

>если ты не можешь передать свойство


свойство это просто сахар для двух методов
80 2857805
>>857741
Ваш сахар несладкий.
В бейсике я могу передать свойство в параметр метода как ref и внутри перезаписать. Чтобы такое сделать в шарпе, я должен изъебнуться, и самое печальное, что подобное >>857342 не повышает ни производительности, ни компактности.
81 2857901
>>857239
Реф нужен для того чтобы передать ссылку на что-то.

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

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

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

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

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

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

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

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


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

Вот напиши мне метод 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;
}
83 2857986
>>857939

> 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);
}
}

И да. Это как раз не оверинжениринг.
84 2858003
>>857939
на деле шарп мог бы засахарить ref Property. Это вообще легко, но это ж мелкие. Они скажут - юзай ламбды (они то встраиваются в класс в отличие от методов хаха )

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

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

И происходит смена DataContext (там по таймеру она) и список конечно меняется и летит SelectedItem=null в старый!!! DataContext, который разумеется такого переварить не может (но не суть)
85 2858042
>>857986

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


>создает структуру


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

>>858003

>на деле шарп мог бы засахарить ref Property.


Мало того, они уже так сделали, но не для шарпа. Я понимаю, что некоторый бейсиковский сахарок вылезает со временем боком — это я понял с шарпом и понял почему в нем нет подобного, но здесь-то что может пойти не так? Не понимаю.
.png7 Кб, 500x102
86 2858050
>>858042

> но теперь вызов твоего класса нельзя запихнуть в If т.к. он возвращает не bool

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.
2023-09-2721-51-41.png24 Кб, 781x165
88 2858087
>>858003

>комбобокс биндится к этим свойствам у контрола


Нет, у тебя он биндится к свойствам вьюмодели, которая подхватывается из DataContext. А депенденси-свойства ItemsSource/SelectedItem в UserControl у тебя просто висят в воздухе.

Чтобы комбобокусу присосаться к ним, нужно обращаться к родительскому UserConrol по типу или по имени, и уже у него искать эти свойства.
89 2858150
>>858087
ты не заметил ElementName=Root
2023-09-2723-07-38.png7 Кб, 443x240
90 2858158
>>858150
Ах да. Что там не так? Выглядит так, как ожидается.
91 2858163
>>858158
не жми ничего. там по таймеру сменит вьюмодель
и увидишь такое
AAAAAAAAAAAA: DataViewModel (5560998) Start
AAAAAAAAAAAA: DataViewModel (5560998) SelectedItem 'one'
AAAAAAAAAAAA: DataViewModel (44407631) Start
AAAAAAAAAAAA: DataViewModel (5560998) SelectedItem ''

то есть при смене вьюмодели будет принят новый от этой новой вьюмодели список элементов, текущий элемент станет нулл и его получит старая вьюмодель
92 2858189
>>858163
Ну да, селектед итем сбрасывается, если вернуться на предыдущую модель. Может это из-за асинка. У меня вроде тоже были с этим проблемы, не помню как решил.

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

Но за пример спасибо, учту.
93 2858196
>>858189
асинк там не причем. Можно любым способом менять вьюмодель и эффект будет.

> в mvvm надо биндиться ко вьюмодели


ну это снаружи юзерконтрол биндится куда хочет, но при этом ИЗОЛИРОВАННЫЙ юзерконтрол создает в себе депенденсипроперты и внутренний xaml должен с ними как бы работать. И особо неважно как внутренний xaml найдет эти свойства - не отваливается внешний биндинг. А ClearBinding затирает вообще все наглухо.
94 2858207
>>858189
и причина то понятна
при смене вьюмодели идет обновление привязки сначала ItemsSource, а потом SelectedItem. И в первой привязке сбрасывается текущий пункт, который дергает биндинг селектед...который еще старый и шлет хрень в старую вьюмодель

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

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

ловить смену датаконтекста, сбрасывать все привязки и потом героически в коде писать биндинги и шаблоны...да как то читается как говно, ощущается как говно и вообще подход - говно.
95 2858236
>>858196

>ну это снаружи юзерконтрол биндится куда хочет, но при этом ИЗОЛИРОВАННЫЙ юзерконтрол создает в себе депенденсипроперты.



Блин, я впервые наблюдаю такую проблему. Хотя тыщу раз менял вьюмодель целиком. Вот это прокатило.
96 2858279
>>851295 (OP)
Вкодь уже чо-нить годного в наноборду, заебал.
97 2858411
>>858236

>Хотя тыщу раз менял вьюмодель целиком


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

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

хз как комбобокс это магует. может ловит полную смену датаконтекста и что то там обнуляет? так нет удобных средств обнуления биндинга.
Я гуглил и там жалуются на хз какую то проблему и биндинг в коде делают, хотя я разницы не вижу - после обнуления он снова слетит же. Да и как обнулять селектедбиндинг, а вдруг порядок правильный и тогда почем зря затрешь биндинг и неоткуда его взять.
98 2858769
как же хочется [CallerTypeName]... почему я должен StackFrame(1) гонять..
99 2859295
Аноны, а какой тулчейн используют для серверной разработки пол Линукс?
100 2859361
>>859295
Разрабатываем на винде в ВисуалСтудио.
Пушим в гит, там техногоблины уже настроили женкинсы-хуенкинсы, гоняют-собирают-теструют-разворачивают на тестовом сервере.

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

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

Чи ты про что?
101 2859370
Как ссделать так, чтобы в релизной сборке - не было полного пути до файлика если где-то эксепшн, но при этом все еще было имя файлика?

Типа просто всрато смотрится : С:\\users\XXX_ZZZ_NARUTO_FAN_1995_XXX_ZZZ\sources\repo\SuperApp\Core\Module\Parser.cs(256)
Хочу чтобы было только: SuperaApp\Core\Parser.cs(256)
А как так сделать - хз.
102 2859450
>>859361

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


У меня просто отдельный стенд с линуксом. Я к нему прокинул удаленную отладку и удаленный запуск юнит-тестов с виндовой машины. По итогу разработка на винде, отладка и тесты на линуксе.
103 2859453
>>859370
Не собирай релизы на своей машине.
104 2859618
>>859361

>Чи ты про что?


На Линукс что ставим? SDK Net или Mono?
105 2859643
>>859618
dotnet
106 2859678
Я опять про EF Core. Я опять ничего не понимаю.
Как выбрать 3й уровень навигации? Только третий? Ну скажем у Course есть Students, и у каждого Student есть Addresses. Как мне выбрать все Адреса всех Студентов Курса? Данные курса и тем более студентов не нужны.
107 2859801
>>859678
List<Course> courseList = data; //Initialise courseList
var addresses = courseList
.SelectMany(course => course.Students)
.SelectMany(student => student.Addresses)
.ToList();
108 2859880
>>859678
Include
ThenInclude
Select
screenshot-2ch.hk-2023.09.29-160641.png57 Кб, 1585x723
109 2859923
>>859801
Что я делаю не так? И что запрещённого я написал?
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.

111 2859964
>>859946

> самого актуального на тот момент гуи фреймворка для винды


А при чём тут винформы?
112 2859967
Всем привет. Есть возможность в компании перейти на шарпы, сам я фронтендер. Честно говоря есть желание перейти на бекенд, потому что хочется возиться с логикой. Но вот я метаюсь между пхп и шарпами, куда лучше, ваше мнение?
.png403 Кб, 888x752
113 2860027
>>859967
ПХП последних версий практически тот же шарп, но без возможности десктопа, зато со своими преколами.
Шарп - ну, типа майки, крупная контора, хуе-мое. Ну и шустрее чем ПХП. Хотя опять же - ПХП сильно бустанули в скорости.

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

НО, как сеньер-шарповод - я все равно буду говорить, что шарп - лучше. Потому что я, блядь, 10+ лет в нем ковыряюсь. Кишочки вдоль и поперек излазил и вообще. Могу ругать, но все равно буду говорить, что шарп пизже.
114 2860038
>>859967
Пыха (только 7 и 8 версии, т.к. 5-ая - такое себе) и Шарп одинаково приятные языки

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

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

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

> полный свитч в бекенд


> шарп


Хехе
117 2860057
>>860050
Ну значит полный фулкек (как в 85% вакансий на пыхе)
118 2860068
>>860042

>А нужно ли тебе оно - становиться фулкеком и работать за двоих? Или планируешь полный свитч в бекенд со временем?


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

>>860038

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


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

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


Да, знаю что это выход из пхп-мира.

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


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

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


А я планирую сразу в лару залететь, лол.

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

А теперь вопрос ко всем: как мне этот скачок совершить? Думаю пописывать на шарпах понемногу, в принципе несложно, много схожести с тайпскриптом (еще бы, и то и другое майки делали), набивать опыт в бекенде и паралельно пых учить? Это реально вообще?
119 2860076
>>859923
Разобрался с первым вопросом
group f by f.Id into u
select u.FirstOrDefault()
120 2860085
>>860068

> Как совершить?



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

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

> А я планирую сразу в лару залететь, лол.


Увы, бывает такое, что в тайтле ваки написано "PHP-разработчик (Laravel)". Переходишь по вкладке - а там еще в довесок требуют 1C-Битрикс:-)
121 2860167
>>860085

>Если метишь сразу в пыху, то скипай нахуй шарп


Не могу скипнуть, потому что работа + надо базы подтянуть, да и пыху в целом, немного окунуться так сказать.
122 2860207
>>859967
иди на пхп. ты должен ощутить страдания.
вкусить говна так сказать.
иначе какой ты программист без страданий.
123 2860210
>>860207
Почему же? Люди вверху говорят, что вполне приятный язык, начиная с версии 7
124 2860268
NUnit или Xunit? Кто чем пользуется?
Сам сижу на NUnit, но временами посматриваю в сторону второго.
Есть какие-то значительные преимущества?
125 2860306
>>859967

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


Если хочешь попасть потом в серьезный бизнес или финтех и крутить там микросервисы, то всяко шарп (ну или жабу).
126 2860309
>>860050

>Хехе


Почему нет?
Я когда заходил в шарп, чутка пофулстечил на реакте (и то там сводилось все к написанию мелких компонентов и доработок отдельных гридов), а потом ушел в чистый бэк. И уже года три фронта не касаюсь и дальше api с бэка не вылезаю.
127 2860314
>>860210

>Люди вверху говорят, что вполне приятный язык, начиная с версии 7


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

А в шарпе уже и на .net7 вакансии есть, а в начале следующего и на 8-й появятся. И в большинстве мест, даже с легаси, новых людей берут с прицелом перевода софта на новый стек. Плюс шарп и в предыдущих версиях вполне себе неплох был.
128 2860335
>>860268
Технически XUnit пизже. Т.к. по умолчанию лучше изолирует тесты, что более подходит для большинства обычных тестовых сценариев. Если же есть необходимость пошарить контекст между тестами, то это там делается довольно просто.
NUnit наоборот по умолчанию лепит общий контекст и чтобы добиться от него нормальной изоляции нужно поебаться (хотя я его давно не касался, а фреймворк развивается, так что может там это уже и не так неудобно).
изображение.png192 Кб, 1822x629
129 2860348
Всем привет. Написал код, который должен отправлять видео по кусочкам, но он не работает. Загружает небольшой кусок видео, а потом всё. При этом выдаёт ошибки как на скрине. Помогите, пожалуйста, понять что тут не так.
Код: https://pastebin.com/iFVSV3tr
130 2860359
>>860210
потому что новые фичи не перекроют детские болезни
ибо совместимость.
пхп это как уродец в семье жавистов
вроде похож на жаву но урод

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

представь язык где 500+ функций в глобальном пространстве,
где полный раздолбай что функция принимает (а некоторым нужно передавать по ссылке), что возвращает.
Исключение ни одна функция из этих тебе не кинет конечно - проверяй возврат функции и потом доставай код ошибки и сообщение вручную.
Сверху еще накинь автокаст в число,
отсуствие вменяемых структур (хочешь HashSet? а хер тебе. делай словарь с ключ тебе нужным и значением ну пусть bool (не дай бог не null ибо тогда получишь проблему с isset, которая какого то хера делает больше чем array_key_exists, но работает в 300 раз быстрее.
Ну можешь взять Db/Set. но это pecl, то есть у тебя в дистре должен быть нужная dll с этим и включено в php.ini....)
тайп хинтинг убогий до сих пор. на питон бы посмтрели.
131 2860380
>>860359

> Исключение ни одна функция из этих тебе не кинет конечно - проверяй возврат функции и потом доставай код ошибки и сообщение вручную


Гоферы недоумевают, глядя на это заявление.
132 2860392
шарпаны, хочу чтобы шаренный проект тащился в билд только в определенной конфигурации, это возможно вообще сделать?
133 2860395
>>860392
Возможно.
134 2860403
>>860348
Короче. Из твоего кода нихрена не понятно.
135 2860418
>>860403
>>860348
Аааа. Я понял. Ты типа Partial content хочешь имплементировать. Тупанул. Тупанул.
Так у тебя не по спекам

https://www.rfc-editor.org/rfc/rfc9110#name-range-requests
https://www.rfc-editor.org/rfc/rfc9110#status.206
136 2860432
>>860395
как это сделать?
137 2860471
>>860359
Мне на это всё похуй, потому что я пишу не на менее уёбищном джаваскрипте, понимаешь? Я просто хочу работать и получать удовольствие.
138 2860575
>>860380
ты сравниваешь несравнимое
в пхп у тебя функция может вернуть -1, false, null или вообще ничего
при этом у тебя в языке есть исключения и они используются, а значит ты будешь вручную доставать "что там за ошибка и превращать в исключения"

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

>>860471
в жс много WTF с типами, но вот таких все равно нет. В частности работа с ошибками там унифицирована
1696072698089.jpg36 Кб, 622x466
139 2860785
Здравствуйте. Скажите пожалуйста, есть смысл осваивать Шарп только ради геймдева? Если говорить как есть, то я сначала выбрал Яву, чтобы потом мобильные приложения делать. Однако сомнения появились насколько это мне это интересно будет в дальнейшем. И вот я посмотрел в чем разработка мобильных игр ведётся, что используется и решил у вас спросить. Даже если не получится с юнити, то где ещё сишарп можно использовать?

Вообще, если говорить про тяготы выбора и неуверенность, то у меня второго шанса не будет, в том плане что возраст уже не будет позволять заново переучиваться.
140 2860796
>>860785

>Скажите пожалуйста, есть смысл осваивать Шарп только ради геймдева?


Геймдев, это вообще в первую очередь не про язык.

>Даже если не получится с юнити, то где ещё сишарп можно использовать?


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

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


И сколько тебе лет? Просто интересно во сколько люди себя уже хоронят?
2023-09-3014-32-02.png19 Кб, 846x132
141 2860802
Почему при использовании dynamic студия меня заебывает сообщением:
Функция "Основные моменты документа" сейчас недоступна из-за внутренней ошибки. Показать трассировку стека
2023-09-3014-31-43.png2 Кб, 716x31
142 2860824
143 2860854
>>860802
зачем тебе вообще динамик. Ни разу не использовал в впф
да и в общем то где либо. Крайне редко когда без него не обойтись.
144 2860887
>>860418
Спасибо за ответы. То есть у меня проблема в http заголовках, я правильно понял? А вариант через asp core я уже готовый нашёл, но я хочу сам сделать через TcpListener
145 2860904
Я что-то не так делаю? Когда я пишу конфигурацию сущности в OnModelCreating, всё работает. Когда я переношу её в IEntityTypeConfiguration, ничего не работает.
Как можно проверить, применилась ли конфигурация? Метаданные у сущности какие-то получить?
146 2860907
>>860904

> Как можно проверить, применилась ли конфигурация?


Создать миграцию, не благодари.
147 2860918
А что мне миграция сделает? Как она мне отобразит HasMany?
148 2860927
>>860918
В миграции можно увидеть сгенерированный sql код
149 2860945
>>860904

>Я что-то не так делаю? Когда я пишу конфигурацию сущности в OnModelCreating, всё работает. Когда я переношу её в IEntityTypeConfiguration, ничего не работает.


Так а в OnModelCreating ты как её апплаишь? Сама по себе она же не добавиться и не примениться.
150 2860950
>>860945

>ться


Сорян, я безграмотное быдло.
151 2860954
Хм. Она применяется. Если я комментирую [EntityTypeConfiguration] или ApplyConfigurationsFromAssembly(), но оставляю остальной код в OnModelCreating, то всё работает. Если я ТОТ ЖЕ КОД, скопированный в IEntityTypeConfiguration, применяю как конфигурацию - запросы к базе превращаются в тыкву.
152 2860969
>>860954

>ApplyConfigurationsFromAssembly()


Ты можешь поставить точку останова после Apply и посмотреть в дебаггере, что попало в ModelBuilder при первом обращении к контексту и его построении.
Либо в самих классах IEntityTypeConfiguration в Configure поставить точку останова и там посмотреть заходит ли вообще код туда при построении контекста.
Ну и выше тебе правильно говорили - сгенерируй миграцию. Если конфигурация действительно не применяется ты увидишь в ней код, который дропает, то что ты вынес из OnModelCreating.
---
Ну и опять же покажи код, как было и как стало, чтобы увидеть.
153 2861006
>>860854

>зачем тебе вообще динамик.


В конвертере, собсно скрин >>860802 . Он умножает значение привязываемого свойства на значение ConverterParameter.

Но для разных типов (по подобию перегрузок) придется делать кучу конвертеров. А если учесть, что оператанд А и операнд Б могут иметь разные типы, то вообще ужас.
154 2861188
>>860335

Это ты про IClassFixture и ICollectionFixture?
В NUnit вроде такого нет.
155 2861237
>>860969
Хм. Дебаг чем-то помог. Я увидел странный FK с пометкой Shadow Required FK Index. То есть он мне создаёт теневое свойство, и создаёт его криво... но только если я не использую OnModelCreating.
156 2861270
О, я даже баг нашёл на эту тему - https://github.com/dotnet/efcore/issues/26814
157 2861337
А ещё я сосу хуи.
158 2861371
>>861337
Джавист, ты?
159 2861398
.png137 Кб, 1658x837
160 2861462
Анончик-анончик.
Пытаюсь накидать протокол для пет-проекта RPC-сервера.
Пока что вот это накидал.

Что не так? Что не учел?
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}}" />
162 2861649
Ситуация:
Есть NGINX как реверспрокси. Есть фронтенд на ангуляре, есть пяток микросервисов с web-api, среди которых - сервис авторизации.

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

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

Я просто чет не понимаю как связать Nginx с фронтендом с беком и апишкой в данном случае. Пока что я нафигачил говняк на MVC который поверх веб-апишного проекта исключительно для формы восстановления пароля. Но мне не нравится такое решение. Типа как-то оно чужеродно смотрится.
163 2862044
>>851659
Почему бы не использовать nlog?
164 2862057
>>862044
Потому что шиз-велосипедостроитель.
Хотя nlog - говнина, серилог пизже.
165 2862059
>>862057
Фломастеры.
Нлог сильно удобнее в настройке чем серилог
166 2863300
>>860335

Как в XUnit реализовать глобальный конфиг для всех тестов, например настройка культуры
167 2863568
>>862059

>Нлог сильно удобнее в настройке чем серилог


Двачую этого, серилог не юзабельное говно.
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;
}
169 2863739
>>863713
хз че за свитч. Просто сканишь сборку на аттрибуты, находишь что тебе нужно, разбираешь че как и создаешь caller- методы. и далее код который по нужной тебе строке найдет нужный caller и вызовет (возможно попутно сделав биндинг). И сделать такое ты можешь как и через рефлексию, так и новомодные соурс генераторы.
170 2863760
>>863739
Ты не понял.
То что ты предлагаешь - это и есть то что я назвал диспечеризацией через рефлексию.
Но мне надо чтобы после того как я уже вытащил из сборки нужные обработичики и понял куда там собираются обращаться - генерировался новый класс, который бы вместо рефлексии содержал свич, который по замерам работает раз в 150-500 быстрее чем последующий поиск обработчиков и их вызов из делегатов.
171 2863770
>>863760
это ты не понял.
скорость поиска обработчика в любом случае будет одинаковая (если у тебя не кривые руки) - ведь свитч можно заменить поиском по словарю, а вся метаинфа для твоего if(allow лежит рядом с обработчиком и заранее приготовлена, так что тоже быстрое
у тебя долгий вызов делегата - так сделай его быстрым

конечно ты можешь сделать и через кодогенерацию сгенерив любой класс по желанию. И в нем может быть гигантский свитч, но троллебус-буханка.жпг
172 2863793
>>863770

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


Ну не знаю. Вот что свичем нагенерировалось.

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)]
172 2863793
>>863770

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


Ну не знаю. Вот что свичем нагенерировалось.

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)]
173 2863804
Ты что пацак что ли? откуда такое желание экономить на кц?
У тебя в коде использований словарей и так 100500. Нашел где экономить.
174 2863808
>>863804
Сервер где моя приложуха стоит - не соответствует минимальным требованиям, и меня ебут, дескать я говно сделал.
Я говорю, блядь, у вас сервер 2004 года, какой неткор последний. Мне говорят - не ебет, делай чтобы летало, а то на мороз отправим.
(((

На мороз не хочу. Только родители перестали ебать мозги, что денег в дом не приношу. Так что надо на всем экономить...
175 2864152
>>863808

>Мне говорят - не ебет, делай чтобы летало, а то на мороз отправим.


1) На тоненького пытаются взять. Более мощный сервак будет всяко дешевле, чем все головняки связнные с твоим увольнением и наймом кого-нибудь другого.
2) Я бы в любом случае съебал из такой конторы и нашел другую работу.
176 2864154
>>863808
Алсо, если же все-таки за забор не вариант, то я бы на твоем месте просто хардкодил, забыв на время про удобство и забив хуй на поддерживаемость.
177 2864160
>>864152

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


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

>Я бы в любом случае съебал из такой конторы и нашел другую работу.


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

так что чуваку профилировщик в руки и пусть смотрит вначале на то что дрючит его GC и оптимизирует там... а так же изучает как оптимизировать работу так чтобы вообще память на стеке выделять чтобы GC вообще сервак не трогал, потому что по моему опыту большая часть работы это GC
178 2864911
илдайверы, тут?
NOP это же дебажный опкод?
179 2865162
>>864911
Почему это?
Ну. Т.е. я не знаю как у майков в CIL, но если брать обычные ассемблеры - то там NOP - используется как - ниче не делать.
Натянул.mp4712 Кб, mp4,
672x320, 0:16
180 2865226
181 2865240
>>865162
тогда я не понимаю почему он сует мне NOP в начале метода в дебаг сборке, а в релизной - нет нихуя
182 2865282
По твоей логике и string — это дебажный тип данных, потому что он используется в параметрах Debug.WriteLine()
183 2865283
184 2865318
>>865240
NOP-ы в debug сборке - это места куда дебаггер брекпоинты вставляет. Плюс еще для некоторых штук. Рихтера покури, у него есть об этом.
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к решает зарегаться.

Вот и мне интересно. А как какать мне что-то сделать с этой вот хуйней? Медленность этого дела - меня тревожит и раздражает. А как сделать чтобы быстро было и те вот требования с отсутствием дырок - так же остались выполнены.
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к решает зарегаться.

Вот и мне интересно. А как какать мне что-то сделать с этой вот хуйней? Медленность этого дела - меня тревожит и раздражает. А как сделать чтобы быстро было и те вот требования с отсутствием дырок - так же остались выполнены.
2023-10-0413-30-07.png1 Кб, 322x51
186 2865600
Каким образом вижуал студия биндит Margin отдельно по стороне в каждый текстбокс, если свойства Thickness не являются DP или INPC? Что за чудо такое?
187 2865655
>>865326

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


1) Может стоит сначала разобраться откуда эти дыры там берутся и заполнять их конкретно в те самые моменты, а не когда регается новый ползователь?
2) Как вариант батчить регистрацию пользователей. Т.е. закрывать дыры не при регистрации каждого пользователя, а сначала закрыть гэпы, а потом сразу пачкой регать всех кто пришел за определенный интервал времени.
3) Зачем вообще нужны такие ебанутые правила для идентификаторов?
188 2865732
>>865600
Всегда все можно сделать ручками. Не говоря уже про конверторы
189 2865740
>>865732

>Всегда все можно сделать ручками.


как?

>Не говоря уже про конверторы


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

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

В методе ConverterBack в параметр value приходит только значение Thickness.Top, а у нас нет данных Thickness.Left, Thickness.Right, Thickness.Bottom.
190 2865751
>>865732

>Всегда все можно сделать ручками.


Думаешь к каждому окну свойств привязан индус, который вручную заполняет окошки?
191 2865758
>>865740

>как?


ручками можно что угодно. Никто подход "работаем как в винформс" не отменял. Можно спокойно создать вьюху какую угодно, потом смотреть есть ли у объекта проперти нужного типа, и, если есть, то вывести эту вьюху. Далее вручную ловить изменения INPC (или еще как отслеживать) и обновлять вьюху как угодно, аналогично ловить изменения вьюхи и обновлять source как угодно.
Биндинги делают то же самое, просто они стандартный и весьма ограниченный путь.

>Предположим, что конвертер обрабатывает Thickness.Top.


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

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

>>865751
думаешь на винформсах есть система биндингов нормальная (ну щас то что то есть но не знаю что)? А пропертигриды были всегда
192 2865819
>>865758

>Также вьюха может выставить наружу одно депенденси свойство Thickness


В моем случае не может. Я должен это разрулить в DataTemplate, который находится в словаре ресурсов.
Грубо говоря, в таблицу DataGrid приходит итем типа Thickness, далее DataTemplateSelector подбирает нужный DataTemplate, в котором я должен забиндиться к свойствам Thickness.

>в конвертер может притопать и весь объект даже


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

>думаешь на винформсах есть система биндингов нормальная


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

Мне приходила в мысль создать UIElement в качестве посредника, но это костыль какой-то.
193 2865963
>>865819

>В моем случае не может


Надо меньше пачкаться. И вообще, некоторые языком умываются (c)
В твоем DataTemplate находится вьюха, которая царь во дворца - у нее свой code-behind, доступны атачедпроперти (это свои code behind-ы), то есть полная свобода и наличие/отсутствие DataTemplate вообще не причем.

>Непорочным зачатием он там появится


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

>Я не верю, что вижуал студия не решила этот момент цивилизованным путем


вьюха выставляющая наружу свойство и внутри себя уже пофиг как - вполне себе нормальный путь. И обычно все пропертигрид разруливаются в коде, а ему нет проблем решить проблему "что-то там не биндится"
194 2865974
>>865819
похоже у тебя болезнь "code-behind злющее зло и когда я использую code-behind, то бог убивает котенка"

Не нужно с таким упорством пытаться разрулить все декларативщиной. Она не всесильна. С ней бы я до сих по бы парился как забиндить SelectedItem.
К тому же атачепропы это чистый code-behind и норма же.
195 2865984
То ли дело Винформы.
196 2866059
>>865963

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



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

Пока не понял почему.
197 2866130
>>865655

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


Эти дыры могут взяться, если 1. Импортить пользователей. 2. Удалить пользователя руками.

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


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

> Зачем вообще нужны такие ебанутые правила для идентификаторов?


Требования интеграции со сторонним ПО + требования к самому ПО, чтобы уже родное ПО - могло просто в цикле от 0 до n пройтись и чет там с пользователями сделать. Т.е. просто - один запрос - дай мне данные этого пользователя - нету, все, закончили. Если тут дырки - нужно более сложный протокол придумывать, в духе: А дай мне спиосок всех пользователей, а дай мне айДи следующего и прочее, что нагрузка на сеть и вообще не оч хорошо.
198 2866166
Может кто нибудь объяснить, почему при каждом новом запуске приложения, порядок перебора ресурсов в ResourceDictionary все время разный?

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

Самое интересное, что если сделать копию словаря под другим именем, то порядок его элементов будет совпадать с копией. Даже при десериализации.
199 2866219
>>865984
База...
200 2866250
>>866166
Ссылка на тестовый проект
https://dropmefiles.com/hLJ8h
Пароль: 123
TestSortDataGrid.webm220 Кб, webm,
672x336, 0:08
201 2866352
А вот еще одна загадка.
Есть DataGrid и ItemsControl. Оба в качестве итемс соурс используют один источник данных. Когда нажимаю на хидер для сортировки столбца DataGrid, за каким-то фигом еще и сортируется список в ItemsControl.

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

https://dropmefiles.com/xvB0L
202 2866416
>>866352
ты знал куда шел

А вообще если CollectionViewsource.GetDefaultview примнить к источнику то он к нему и цепляется, а не проксирует. Видимо датагрид это делает внутри себя
203 2866969
Как нищук купил себе бумажный справочник c# 6.0 албахари с рук, сильно ли устарел или потом можно добрать знаний из современного? Изучаю для себя чтобы потом в юнити делать игорь.
204 2866972
>>866969

> нищук


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


Пиздец ты зажрался.
205 2866977
>>866972
За 600р запаную теперь, а то в монитор пялиться и так неск книг открыто.
206 2867393
>>866977
Я за 2к купил себе еще один монитор. Ты рили зажрался.
Ctrl + F не сравнится с перелистыванием страниц.
207 2867620
>>866969

>c# 6.0


Не чувак. Слишком старое. Базу ты может и выучишь, но прямо совсем такое себе. Найди хотя бы по 7-му.
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 вылетает эксепшен дескать контекст уже задиспожен и не существует. В принципе я даже знаю как это можно обойти создать переменную контекста внутри метода хэндл, но подозреваю что и переменную моворксервиса тоже нужно будет создавать внутри метода но хочу узнать какие ещё есть варианты и лучшие практики для такой задачи
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 вылетает эксепшен дескать контекст уже задиспожен и не существует. В принципе я даже знаю как это можно обойти создать переменную контекста внутри метода хэндл, но подозреваю что и переменную моворксервиса тоже нужно будет создавать внутри метода но хочу узнать какие ещё есть варианты и лучшие практики для такой задачи
209 2868162
>>868004
Ладно, кажется я тупой но это не точно Кажется можно сразу в контроллере делать вызов _handlerService.Handle(data) и не эвейтить его и будет норм но все равно хочу почитать как ещё решается такая задача
210 2868278
>>865963

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



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

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

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

ListView тоже тот еще кадр, пришлось попотеть с восстановлением полноценного стиля с поддержкой GridViewRowPresenter и ContentPresenter.
211 2868359
>>868278

>Удалось передать текст из текстбокса только в режиме UpdateSourceTrigger=PropertyChanged.


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

>Что делать с DataGrid так и не понял.


Ты всё правильно понял, эта параша состоит целиком из магии, пока не узнаешь - не узнаешь. Так что советую с такими проблемами обращаться к нейросетям, они как раз хорошо вытаскивают магическую инфу из помойки которую вручную не разгрести никогда.
213 2869247
Вводные: ef + mssql + вагон миграций
Задача: перенести все это говно на postresql

Кто-нибудь делал такое или может подскажет? Просто взять и дропнуть старые миграции и скриптом перетащить данные из базы в базу нельзя, нужно чтоб работали откаты.
214 2869266
Есть что-то для удобного и кроссплатформенного рисования и анимации 2D примитивов и текстур? SkiaSharp? Какие ещё варианты?
215 2869268
>>869266
Sixlabors imagesharp
216 2869271
>>869268
В разы проигрывает по скорости skiasharp
217 2869323
>>869247
а в чем проблема, ведь ef как раз и нужен чтобы базы менять
мне так постоянно внушали, мол, захотим - базу сменим за секунду.
dapper-кун
218 2869340
>>869323
Миграции специфичные для t-sql. Я хз можно ли их как-то подружить с провайдером postgre.

> захотим - базу сменим за секунду


Я тоже так думал и частично думаю, просто что-то не учел. Уверенный меняю провайдера, делаю первую миграцию на постгре, получаю шмат говна про несовместимость с mssql провайдером вперемешку с npe. Убрал mssql из нугетов, уже в файлах старых миграций ругается, что нет провайдера. Если дропнуть старые миграции, то все работает без танцев с бубном
219 2869682
>>868162

>Кажется можно сразу в контроллере делать вызов _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
.jpg265 Кб, 1538x2048
220 2869827
Если кому интересно про >>865326
Решил ебанутым методом. В фоне - в тихую - заполняю пул нужных мне данных. Потом при регистрации - достаю из пула - и сразу ставлю таску на добавить в пулл новое значение. Таким макаром - если интенсивно нагрузка резко возрастает - это начинает быть заметно только при оч больших нагрузках, а в большинстве случаев - работает быстро.
Костыль, но хз че еще придумать было.
image307 Кб, 1024x1024
221 2870120
222 2871303
У кого-нибудь было такое, что visual studio багается на копировании? Т.е невозможно скопировать ничего из кода. Замечал на крупных-средних проектах с кучей зависимостей. Наверное анализатор какой-нибудь дохнет и тянет за собой этот баг. Рестарт студии, удаление .vs не помогает. Помогает только убийство всех процессов связанных с ней. Есть какие-нибудь другие варианты это пофиксить? inb4: райдер
223 2871462
>>871303
У меня было что-то подобное, но чуть ли не на глобальном уровне — для всех приложений.
224 2871471
Аноны, правильно ли я понимаю, что если подписка произведена внутри класса на компоненты класса, то диспоз с отпиской не нужен?

Мне нужно внутри вьюмодели знать, что происходит изменение коллекции, но эта коллекция тупо ObservableCollection.
225 2871533
>>868004
Когда приходит запрос в контроллер он скидывает его в какую-нибудь очередь обработки, пуляет ОК и все.
А хендлер сервис у тебя крутится в качестве бэкграунд сервиса и мониторит эту очередь. Когда там что-то появляется, он это обрабатывает.
226 2871538
>>871303
Лол, у меня тоже такое иногда бывает, только не в студии, а, внимание, в идее.
227 2871545
>>869247
Я делал.
Старые миграции дропать однозначно. Перед этим предварительно нужно их все пересмотреть, если там есть ручные доработки, то перенести все это в код сервиса (параллельно переебав тому кто лезет своими грязными руками в генереный код) Если есть какие-нибудь встройки или типы, то переписывать.
БД у тебя разные, поэтому откаты у на те миграции которые были на mssql не будут работать. И в принципе, новая СУБД - новая БД, нехуй тащить за собой хвосты.
Если нужны данные из старой БД, то смотришь, что там за данные.
Если это справочники, то их вносишь в код+конфиги (json, csv) и в миграции через .HasData. Если какие-то регулярные рабочие данные, то переносишь скриптами через ODBC или экспорт-импорт.
228 2871552
>>869323

>ведь ef как раз и нужен чтобы базы менять


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


>dapper-кун


Да, но только если изначально нормально проектируешь приложение. Если нормально делаешь, не лезешь в миграции и БД руками. Тогда все работает просто, в три шага: меняешь провайдера, -> сносишь старые миграции -> генеришь новые. Все.
Если у тебя там кал говна, с кучей raw sql в миграциях и данными добавлеными в БД в обход ORM - тогда ебись.
229 2871582
>>871552

>на бумаге в теории работает просто, в три шага: раз, -> два -> три. Все.


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


Перевел на человеческий язык.
230 2871595
>>871582

>>если у тебя реальный рабочий проект - тогда ебись


Не, ну если ты мазохист и тебе охота в говне копаться, то пожалуйста. Но если делать нормально и бить по рукам пидарасов которые делают не нормально, то будет заебись.
231 2871614
>>871471
если только твой класс их сам создал и не получил их через конструктор. Тогда подписка удерживает связь компонент-ты, а ты удерживаешь связь ты-компонент. И никто внешний.
232 2871727
Шарпеи, кто какой библиотекой пользуется для общения с чат гпт по апи? Какая хорошая и безопасная?
233 2872300
>>871595
в реальности менять бд нужно 0.000001 раз. мы ж не убер
а вот время старта EF это кабздец просто. Что они там делают блин. почему результат этого нельзя закешировать. Для сервера ладно (хотя для разработки все равно ахтунг), но десктопы - дорого давать секунды на хрень
234 2872414
>>872300

>в реальности менять бд нужно 0.000001 раз. мы ж не убер


Мне за два года 5 раз пришлось уже с одной БД на другую переходить.

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


Там основное время на старте (вернее даже на первом запросе) уходит на построение контекста.
Есть несколько разных трюков как ускорить загрузку. Плюс современный EFCore сам по себе довольно хорошо оптимизирован по сравнению с предыдущими версиями. Так что сейчас "долгое время загрузки" не такое уж и долгое. Многие десктопные приложухи и без EF дохуя долго стартуют, лишние пару секунд погоды не сделают.
Ну и если ты делаешь, что-то легковесное что должно стартовать максимально быстро, то EF там собственно нахуй не нужен, достаточно даппера или еще какой-нибудь мелкой хуйни.
235 2872438
>>872414

>Мне за два года 5 раз пришлось уже с одной БД на другую переходить.


сходить бы тебе к психологу. издеваются над ты

>Есть несколько разных трюков как ускорить загрузку


например, взять не EF
собственно об этом ты и говоришь
236 2872722
>>872438

>сходить бы тебе к психологу. издеваются над ты


Ну что поделать если меня зовут как раз на проекты где нужно разгрести старое дерьмо, выкинуть все ненужное и перевести все на новые рельсы.
Проблема была только один раз на втором проекте когда нужно было переходить с MS на PG. Там было нагажено в миграциях руками и пришлось повозиться, чтобы привести все в порядок. Потом там же понадобилось вернуться обратно на MS, а потом еще раз обратно на PG (издержки выкатывания релизов и не было возможности просто откатить версию) - и это делалось простым переключением провайдера и перегенерированием миграций.
>>872438

>например, взять не EF


Можно, только на моей памяти прям вот, чтобы были проблемы со скоростью был только один раз и то там дело было не в EF, а в плохом проектировании БД и ебанутых интеграциях, когда приходилось попусту перекачивать данные из одной БД в другие туда-сюда без какого-либо результата. Во всех остальных случаях все спокойно укладывалось в SLA с многократным запасом и вопрос использования какой-либо другой ORM даже не поднимался.
237 2873010
Остро видящие, а что вообще такое application pool на иис? Зачем там разделение на пул и сайт? Почему на других серверах обходятся без этого? Где можно конкретнее почитать про пулы, если есть подозрение, что одно легаси приложение на нетфреймверке переодически падает в аутофиемори именно из-за пула
238 2873708
>>873010

>что вообще такое application pool на иис


По сути песочница.

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


Вряд ли. Для этого у тебя должен быть максимально дохлый сервер, либо что более вероятно - лютый говнокод.
Но, технически, там есть квоты на память, только я х.з. как их менеджить, т.к. никогда не возникало такой необходимости.
Попробуй ПКМ на нужный пул и выбери "Recycing..." там есть настройки памяти.
239 2874091
Мне с фронта приходит реквест что-то вроде StartNewTestDto, я присваиваю ему guid(один на тест) и шлю с ним что-то типа формы для вопроса из теста. Потом юзер проходит вопрос, я в другом методе получаю его ответ и в зависимости от него формирую следующий и так пока тест не закончится. Структура теста не линейная и это все без аутентификации. Нужно отличать пользователей и забывать их если тест пройден.
Вопрос. Как мне лучше всего запоминать юзеров, эти guid. Хранить какой-нибудь словарь прямо в контроллере? Может редисом кешировать guid? Или копать в сторону сессий? Без баз данных, наверное даже какой-нибудь ef inmemory тут лишний. С другой стороны юзер может хоть год открытым держать тест и все должно работать, то есть айди нельзя удалять со временем? А если пользователь закроет браузер, как понять что айди нужно удалить? Доступа к фронту у меня нет и не будет.
Я что то запутался как лучше сделать, не хочу по ебалу потом отхватить.
240 2874101
>>874091

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


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

> Без баз данных


Собственно тут хрестоматийный пример когда именно база данных и нужна.
Чистить скопившийся хлам можно без проблем по крону, на масштабах десятков-сотен тысяч записей канает даже махровый быдлокод, у нас в кроне например есть каждые несколько минут
DECLARE @MIN_DATE DATETIME
SET @MIN_DATE = DATEADD(DAY, -3, GETDATE())
DELETE FROM SOME_LOG(READPAST) WHERE LOG_DATE > @MINDATE
И за такое ничего не было, вполне норм работает. Если у тебя типа десяток запросов на тест в секунду или даже сотня то скорее всего никто не заметит, максимум будет ощущаться как небольшой пролаг.

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

> легаси приложение на нетфреймверке переодически падает в аутофиемори


Проверь код на предмет new Thread(), спам такой штукой вызывает неожиданные OOM даже если детектится расход памяти типа 150-200 мегабайт.
242 2874176
>>874101
Может лучше будет использовать сессии? Типа хранить в них guid'ы. Только я не помню, нужно ли там на фронте что-то с ними настроить или оно в любом случае уже работает.

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


Могу наверное заюзать sqlite, с очисткой по крону не должно возникнуть проблем. Но мне кажется, что конкретно под эту задачу оверхед.
243 2874326
>>874176

>Но мне кажется, что конкретно под эту задачу оверхед.


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

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


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

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

простой семафор решит проблему, но это же уже костыли.
245 2875085
>>874786

>только не стоит забывать про лок всей базы данных при записи, и особенность работы с этим в шарпе


Бля, у него там юзеры тестики проходят, прям пиздец какой high-load, чтобы о блокировках думать.
246 2875122
>>875085
Параллельные тесты на одной физ базе могут дать тот же эффект
Конечно лучше создавать базу в памяти на каждый тест, но это время
247 2875434
>>874326

> Почему?


Хз, тогда казалось, что можно тупо в сессии хранить. Щас думаю сделаю так: в сессии буду хранить guid пользователя, а стейт теста в базе с ключем этим guid. Фронт мне никакой информации о пользователе не шлёт, только данные по конкретному вопросу, т.е его ответ. Я думаю тут кроме сессий или куки никак не идентифицировать его, с бэка я могу только сессии чекать.
248 2875447
>>875122

>Параллельные тесты на одной физ базе могут дать тот же эффект


Там время на запись будет - доли секунды. Они у тебя даже не пересекутся ни разу.
А даже если у тебя там такие уникумы тесты проходят, что хуячат ответы сотнями одновременнно - ну обернешь в транзакции и все.
249 2875552
>>875447
не пересекутся да ибо таймаут долгкий
транзакции вообще не причем - если база стала в лок и пришла запись с другого потока, то она не станет в очередь типа ридврайтлок на файл, а "попробую через время".
250 2875576
>>874101
что будет если будут нужны логи более чем за 3 дня?
вернее вопрос в другом - у кого жопа будет болеть?)))))
image.png77 Кб, 716x628
251 2875968
Почему так?
252 2876145
Блин, учу значит сишарп и вижу что какая то новая фишка языка у меня не работает, смотрю версию а у меня 7.3 оказывается. Соответственно вопрос к вам, ставить последнюю и заниматься именно на ней?
253 2876186
Аноны, шо за хуйня?
Нашел значит я 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 создают кромешный ад.
254 2876193
>>876186
Аааа, надо StaticResource линковать как DynamicResource
255 2876194
>>876186
>>876193
Ух, как же хорошо когда хорошо. Праздник какой-то.
256 2876197
>>875968
Переименуй последнюю структуру как-то иначе.
2023-10-1214-55-28.png15 Кб, 474x529
257 2876200
>>876145
Ставь последнюю версию студии и создавай проекты на .NET 7.0
258 2876248
>>876200
Понял, сделал, спс.
259 2876256
Как именовать разные модели для одной и той же сущности? К примеру есть UserEntity и LessonEntity, находятся они в проекте с контекстом дб, связываются друг с другом посредством третьей таблицы и не содержат ничего кроме свойств, нужных для создания базы данных. Работать с такими классами неудобно, хочется иметь класс UserModel, который бы уже содержал необходимую логику, методы и тд. Как его обозвать?
260 2876282
>>875968
Отладчиком пошагово пройдись, потом почитай про особенности и различия конструкторов в классах и структурах.
261 2876305
>>876256
Ну у тебя должна быть общая модель, которая содержит коллекции UserEntities и LessonEntities (если я правильно понял), к примеру ClassRoomModel. Эта модель может быть внутри общей вьюмодели SchoolViewModel. Такая вот матрешка. ClassRoom может быть и вьюмоделью, кстати.

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

>Как его обозвать?


Это ты должен знать — зависит от контекста твоего приложения.
262 2877006
>>876256
Смотри. Есть два стула.

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

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

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

Можно пытаться сидеть и на каждой половинке стула, если ORM не мешает.
264 2877196
>>877006
Ток ты так и не пояснил, как во втором случае две сущности впихнуть в один дата контекст, о чем анон спрашивал.

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

>Минусы - был один класс, теперь их 3.


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

Сервисы это про организацию большого количества модулей, каждый из которых требует какой-то еще модуль.
265 2877442
vs 2024 в ноябре будет или нет? Првью не могу найти.
266 2877443
>>877006
Сервисы тут ни при чем, просто другая декомпозиция классов.
Стикер255 Кб, 512x512
267 2878224
>>876186
>>876193
Чеееерт. Нихрена не получается.
Оказывается, что 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}" />


Говно ебаное.
2023-10-1400-09-13.png28 Кб, 876x148
268 2878228
>>878224
макаба пердоле. Последний код - пикрилейтед.
.png56 Кб, 1920x972
269 2878371
Мне скучно. Потому я покажу, как можно сделать простой клиент-сервер на шарпе.
Начнем с пустого солюшина.
270 2878392
>>878371
Ну...
.png87 Кб, 1025x667
271 2878398
>>878392
Ну.
Пока что - сделал "соединение". Которое может использоваться как клиентом, так и сервером.
.png106 Кб, 1049x755
272 2878423
"Слушатель". Принимает входящие соединения и обабатывает их.
273 2878427
>>878371
>>878398
>>878398
все говно. переделывай
274 2878432
В общем. Проверка слушателя показала, что это даже работает.
.png96 Кб, 1023x716
275 2878437
Собственно - абстракция для самого сервера.
276 2878443
>>878437
Жозенько...
.png30 Кб, 803x295
277 2878444
Хм.
А вот тут - затык.
Почему-то слушающий сокет не реагирует на то что клацнули отмену и ждет пока кто-то таки подключится.
Мда. Может быть не надо было тредупл использовать. ХЗ короче.
278 2878446
>>878444
Не. Бред. В тредпул кидаю уже после подключения.
.png99 Кб, 1255x686
279 2878475
Так и не разобрался, фиг ли не отменяется.
Но сделал вот такую вот фиговину, чтобы уж как крутые челы быть и можно было фигачить миддлвары.
.png229 Кб, 464x750
280 2878486
Блин. Думал до часа справлюсь.
В общем. Да. Что мы получили.
Мы получили хрень какую-то. Которая неприменима ИРЛ.
Ну. Типа блин. Не варит голова. Фигня получается. Сорян.
Пойду плакать от своей бесполезности.
.png63 Кб, 869x498
281 2878508
Ладно. Пока рано успокаиваться.

Сделал вот такую вот хреноту для сообщений.
282 2878528
Короче.
Такая фигня. Да.
Всем спасибо за внимание.
.jpg376 Кб, 700x990
283 2878550
Да. Хотел бы услышать по поводу всего этого добра что выдал - комментарии с причинами, почему я не подхожу на позицию джуна.
284 2878623
>>874786

>database locked.


Это фишка sqlite что ли, что он всю базу лочит, лол? Какой-то кал, если честно.
>>877006

>Вариант который является типа современным.


Да я бы сказал наоборот сейчас форсят DDD с толстыми моделями.
285 2878671
>>878623
ну а как ты хотел, мед и ложкой? sqlite он встраиваемая бд и значит для одного пользователя. Как говорится, походи по базару - и ничего не найдешь встраиваемого легковесного.

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

Больше ты ничего не найдешь из реляционнок.
286 2878982
287 2879000
>>874786
А еще проблему без проблем решит фассад, которй получает очередь, и сам пишет в базу. Мне кажется я даже встречал нагет реализации. Минусы есть, но если ты нормально разделил записи и чтения, то прям проблем быть не должно.
288 2879049
>>879000

>которй получает очередь,


то есть семафор и дополнительные телодвижения
289 2879053
>>879049
Конкурентные очереди, стеки, каналы, миллионы других способов не париться и просто писать куда надо. Но ты выбираешь городить семафоры. Молодец! Так держать. Умеешь. Могешь.
290 2879063
>>879053
Да могу. И могу обосновать легко выбор того или иного инструмента. Вернее я обычно использую ридврайтлок конечно (раз уж либа работы с базой это сама не умеет - стандартная точно не умеет, а та что от мелких - не проверял), а не семафор. но могу обосновать что угодно.
291 2879309
>>879049
Или отдельный агент обрабатывающий очередь в один поток без семафоров. Решений конкурентой записи миллион, и однопоточность sqlite, или любого другого инструмента это просто небольшая сложность, а не "пиздец это говно нельзя испозовать всё пропало"
292 2879317
>>879309
Да хоьть дохулеард
Это всё ЗАВИСИТ
либо ты сразу все сделал с учетом склайт либо нет.(в надежде что это не нужно как в миллионе обычных приложений)
И когда во ВТОРОМ случае у тебя (через годы разработаи) вылезает датабаселокед то не так просто это разрулить
293 2879537
Напомните, как в петушарпе автоматически сделать конструктор, который будет присваивать значения переменным?
294 2879567
>>879537
Как только ты опишешь нахуя это нужно и приведешь кейс.
ScreenRecorderProject2.mp49,6 Мб, mp4,
1312x674, 1:58
296 2880212
Пробую ролики через яндекс переводить и так учить программирование, пока что не очень понятно.
297 2880394
>>880212
На русском же полно контента вката в язык...
298 2880401
>>875576

> что будет если будут нужны логи более чем за 3 дня?


Логов в опердени - вафлить не перевафлить. Во-первых есть текстовый лог в NLog, там огромный список логгеров на каждую нужду и у каждого есть свои сроки давности и свой порядок архивирования, по общему правилу туда пишется вообще любой чих и пердёж. Например открытие и закрытие окон, любое обращение во внешнюю интеграцию с ответом и любое исключение которое было поймано при операции и для которого нет специального продуманного обработчика. Это почти трассировка, там только всякие внутренние циклы не детализированы. При любом кипише логи сразу же снимаются и отправляются на анализ. Значимые с точки зрения бизнеса действия (которые означают какое-то принятое решение) срутся напрямую в логи в базе с обязательным анальным зондированием залоггированного пользователя. Их оттуда уже не выковырять в попытке скрыть подлог например удалением логов или порчей компьютера. Такие логи хранятся долго, пару лет где-то. А есть логи автоматики всякой внутри базы. Она в файлы-то писать не может. Например каждая хранимка которая есть в опердени ловит свои ошибки и срёт ими в специальный лог. Если время работы хранимки вышло за регламент то тоже появляется оповещение об этом в специальном логе. В логах хранятся например переназначения идентификаторов запроса во внешнюю систему или попытки восстановиться от ошибки которая могла быть вызвана дедлоком или сбоем Интернета - такое тоже пишется в логи автоматики. Вот эти логи автоматики и чистятся автоматически, какие-то по количеству записей, а какие-то по дате.

> вернее вопрос в другом - у кого жопа будет болеть?)))))


У системного аналитика. Мне лично вообще поебать, я винтик в огромной безжалостной корпоративной машине.
Натянул.mp4712 Кб, mp4,
672x320, 0:16
299 2880483
>>880212
Это либо старый перевод, либо араб максимально невнятно говорит. Обычно перевод более или менее.

А вообще IIElevenLabs переводит лучше — банально умеет распознавать аббревиатуры. Это же делается за пять сек, но в яндексе хуйней страдают.
300 2880484
>>875576

>что будет если будут нужны логи более чем за 3 дня?


Делаешь новый файл с датой. Новый день — новый файл. Проблемс? Есть даже ограничение по размеру файла.
301 2880511
>>880484
Какой файл лол. Посмотри ориг пост.
И вообще не злите меня
Я и так злой с этой капчей
302 2880522
>>879567

>нинужно


)
303 2880523
>>879626
А конструктор-то как создать, который будет присваивать значения переменным?
304 2880524
>>880523
Руки отрубили?
305 2880525
>>880524
Пынямаю, нинужно, лучше ручками писать всё. Бойлерплейт помогает отдыхать программисту во время написания бойлерплейта!
306 2880526
>>880525
Ide пусть помогает.
И да. Примари конструкторы норм в рекордах или в котлине где есть инит
А в шарпе это только вредный вред
307 2880527
>>880526

>А в шарпе это только вредный вред


Ещё одно доказательство того, что нинужно! А как аргументированно! Вжжжжж!
308 2880528
>>878508
Пиздец, какое же говно...
309 2880529
>>880526
Когда пишешь на многих языках то костыли заметнее.
310 2880530
>>880528
Вот именно! Какккооооое!! Вжжжжжжвжжужужжжжж
311 2880547
Пиздос, нахуя вы снова и снова кормите этого джавапетуха?
312 2880548
>>880527
Ну как нинужно
Вот я всегда рад когда годные вещи перенимают с других языков
Но в котлине я как шаопист к этому (рахмазано объявление переменных между конструкторм и телом класса) привыкал. И там же есть инит так чио ждешь такое

В шарпе выгоды от этого не вижу.
313 2880551
>>880548
Ты хоть сам понял, что высрал, обрыган?
314 2880555
>>880551
Прекрасно понял дебич
Но пояснить неучу не смогу
315 2880564
>>880528

Поч?
316 2880579
>>880564

>typeof()


>new[]


>Поч?

317 2880580
>>880564

>typeof()


>new[]


>методы с большой буквы


>убогий вид окна кода из 2006


>проперти начинающиеся с _


>as


>= default


>Поч?

318 2880793
>>880527

>Ещё одно доказательство того, что нинужно! А как аргументированно!


Ты сам то сначала приведи хоть один пример где это было бы нужно.
319 2880942
>>880580

>typeof()


ченетак?

>new[]


и тут че?

>методы с большой буквы


фломастеры

>убогий вид окна кода из 2006


пиз....брехня то есть.

>проперти начинающиеся с _


еще один явный пиз...

>as


тут то чего

>= default


и? я бы понял еще default!, но жавист не понимает разницу

>Поч?


что поч? поч ты жавист? пот говноед, вот поч
320 2881781
Аноны. Тема - 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 был бесполезен. Предполагаю, что здесь что-то подобное, но по отношению к встроенному скрол вьюверу листбокса. Как это фиксить — хрен знает.
320 2881781
Аноны. Тема - 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 был бесполезен. Предполагаю, что здесь что-то подобное, но по отношению к встроенному скрол вьюверу листбокса. Как это фиксить — хрен знает.
321 2881796
>>881781
Кроме
VirtualizingStackPanel.IsVirtualizing="True"

Нужно еще
VirtualizingPanel.IsVirtualizingWhenGrouping='True'
text-on-top(2).png1,1 Мб, 1000x1250
322 2881834
323 2881875
>>880942
Аргументированный ответ умного человека. Спасибо.
324 2881957
Есть смысол читать этого вашего Рихтера если не знаю англюсика? А то где то пишут что вроде как перевод вообще не ок.
325 2881963
>>881957
Не будешь читать Рихтера, будешь играть Вагнера.
326 2881970
>>881957
От "Питер" перевод норм. Только читать его стоит когда уже есть база и какой-то опыт. Причем база не только шарпа а Computer Science вообще. Если ты не шаришь нормально в типах данных, нет понимания работы памяти и т.д., то только зря потратишь время.
327 2882844
Вжжжжжжжжжжж
328 2882934
>>881957
Кокоса Управление памятью почитай. Забористее Рихтера в разы и перевод хороший.
16872047126210.jpg123 Кб, 671x672
329 2882935
.jpg125 Кб, 1070x1200
330 2882994
>>878550

Эх. Никто так и не ответил. Грустненько.
331 2883079
>>881963
>>881970
>>882934
Пасиба, прояснили.
332 2883174
Господи вот если серьезно. То как я заебался переопределять всю эту мутатень, чтобы использовать свои объекты как ключи словаря. Вот вы бы знали. Особенно бесит в случае когда какая-то коллекция - тоже должна быть значением.
И тута я узнал, что оказывается, шарп под капотом - автомато умеет анонимным типам всю эту муру делать.
Так вот. Вопрос-то вот в чем. Проблема анонимных типов в том, что наружу они хуево достаются. Будет object который какой-то там Anoymus_T228<>.
Но мне хотелось бы в таком случае, раз уже за меня все сделали - чтобы я потом мог использовать данные которые лежат в ключе.
Собственно. Какие варианты, кроме dynamic или своей обертки, которая анонимный тип обернет в интерфейс есть-то?
333 2883299
>>883174
Не еби себе мозги с анонимными типами, а просто юзай рекорды. Для них все автоматом генерируется.
https://sharplab.io/#v2:D4AQTAjAsAUCDMACATgUwMYHtkBNEGFEBvWRMxBRASwDsAXRAQWMQHNU6BuamqrxAL6lylHJgCuAIwA2qRACEW7frT7chMAUA===
334 2883332
>>883174

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


А зачем так вообще делать? Именно как ключи?
335 2883657
>>883299
Рекорды не всесильны. Попробуй в них свойство массив
>>883332
Странный вопрос.
336 2883785
>>851505
За весь тред и месяц никто мне не ответил. Я уже забил на эти метаданные и просто разбираюсь особенности шарпа, но бля что не так то я хуйню споросил или никто не шарит за это?
337 2883807
>>883785
Зачем в этом шарить?
338 2883827
Добрый вечер, аноны. Просветите, пожалуйста, насчёт бэка на шарпе. Можно ли сделать так: написать бэк на asp.net, разместить его на сервере (мб на нём же и базу, или на другом), и использовать его для мобильного приложения на андройде?
339 2883835
340 2883837
>>883827
нельзя. Если пользователь приложения узнает что бэк на шарпе, то бросит приложение, станет жавистом и напишет свой бэк. Тебе бы этого хотелось? то то же.
341 2883843
>>883835
Спасибо.
>>883837
Об этом я и не подумал...
342 2883885
>>883657

>Странный вопрос.


Не, серьезно. Приведи кейс. Я вот чет ни разу не пихал в словари в качестве ключей, объекты разных типов, да еще и вперемешку с коллекциями. И даже не могу придумать зачем это нужно.
2023-10-1821-05-05.png44 Кб, 953x301
343 2884089
Аноны, вопрос на миллион залуп на воротник.

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

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

Дженерал вопрос: почему?
2023-10-1821-20-46.png34 Кб, 904x238
344 2884095
>>884089
А вот это работать не будет, если перед статическим ресурсом нет ничего. Т.е. проект даже не соберется:

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



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

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

В чем тайна сего колдовства?
346 2884106
>>884089
>>884095
>>884098
Как же больно быть на десктопе. Просто ужас.
347 2884113
>>884089
>>884095
>>884098
Ссылка на проект https://dropmefiles.com/Uzm8T

>>884106
Бля и не говори.
348 2884116
>>884106
Больше всего бесит, что ответа порой нет вообще. Проект может просто не компилироваться, особенно если это какая нибудь библиотека. И никаких внешних признаков ни в окне ошибок, ни в окне интерпретации. Проект молча не собирается просто потому, что какой-то ресурс где-то не смог что-то там найти.
349 2884150
>>883332
Почему разных типов. У тебя может сложный объект использоваться как ключ для группировки и внутри себя содержать массивы и при этом не обладать ссылочным равенством.
350 2884404
>>851295 (OP)
Какую бесплатную либу сейчас принято юзать для работы с вордом/экселем. Ворд для генерации таблиц, эксель тоже + простые формулы между колонками.
351 2885618
>>884404
Epplus
352 2885924
А как тестировать приватные методы?

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

Пока что получается как с ТДД - на примере с калькулятором красиво, а ИРЛ неприменимо
353 2885931
>>885924
Очевидно, тестировать публичные методы, которые вызывают приватный.
354 2885945
>>885931
Это как? Публичному методу недоступен приватный. Не засирать же им класс, к тором находится приватный метод? В чем тогда смысл приватности метода?

Тут только делать приватный метод с доступом internal, но это не выглядит как хорошая затея.
355 2885955
>>885931
несколько похожих методов
{
достать_хуйню_из_базы_с_учетом_параметров
вызвать_йоба_метод
смапить_в_дто
}

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

Сам этот приватный метод используется только несколькими методами в классе (не всеми) и больше нигде в приложении не нужен.
356 2886054
>>885955
А ты не хоти
357 2886107
>>885924
Писать тесты в том же классе, в котором ты тестируешь.
Доставать рефлексией.
Как мужик - делать все публичным, прятать что-то это по бабски.
Сделать internal и указать что тестовая сборка может подглядывать.

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

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

Сверху. Если там реально какая-то СЛОЖНАЯ ЛОГИКА в этих приватных методах, то ты должен был выделить класс. Судя по другому комменту: DbSearcher, YobaHandler, Mapper. В них ессно - это будет публичным, а потому тестируй сколько хочешь и не придумывай ничего.
358 2886608
>>886107
Какой же еблан...
359 2886691
try catch не хочет ловить XamlParseException.

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

Почему?
360 2886747
Внимание, вопрос. Почему на джаве прочитать все байты из файла короче, чем на петушарпе?
361 2886757
>>886747
Иди нахуй.
362 2886760
А конструкторы почему на джаве ручками писать не надо, а на петушарпе надо?
363 2886770
А почему на петушарпе надо делать постоянно бесконечные проверки на нулл, а в джаве уже давно есть нулл сейфти из ломбока и скоро будет из коробки с нулл-рестриктед тайпс?
364 2886774
>>886691
Потому что петушарп.
365 2886817
>>886691
потому что ты не показал код перехвата, а XamlParseException там не один, может ты не тот ловишь.

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

>>886770
о. опять этот ДЕБИЛ с ломбоком, которые не является жавой
для ДЕБИЛА напомню - для желающих переписывать в компильтайм есть фоди. И уж там эти проверки на нулл вплетать код проверки с исключениями можно несколько лет. Другое дело - зачем. При правильно написанном коде эти проверки тупо будут отнимать процессорное время и не сработают и не смогут сработать НИКОГДА.
366 2886824
>>886817

>о. опять этот ДЕБИЛ с ломбоком, которые не является жавой


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


Пынямаю.
367 2886830
Как же я проигрываю с этого мелкобуквенного копротивленца за шарпоговно. Каждый раз ему ссут на ебальник, и каждый раз он продолжает высирать нинужно и копротивляться за свою кучку говна. Один в треде остался такой непробиваемый.
368 2886835
>>886824
я уже 1000раз говорил что ты долбоеб
ломбок - НЕ ЖАВА. Это сторонная тулза позволяющая что то там
в шарпе та же самая ситуация - с помощью сторонней тулзы можно вообще что угодно

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

Ну да, ему привычно, он же жавист.
369 2886838
>>886835

>с помощью сторонней тулзы можно вообще что угодно


Где поддержка каловроти в среде разработки?
370 2886840
>>886835

>ну ПРИЯТНО ЖАВИСТА говном накормить


А почему по итогу рот в говне у тебя всегда становится?
2023-10-2016-13-42.png30 Кб, 704x509
371 2886851
>>886817

>потому что ты не показал код перехвата


Я ловлю просто Exception, который является базой всех исключений.
372 2886861
>>886760
В бейсике давно такое, но знал бы ты сколько говна я хапанул из-за этого.
373 2886863
>>886861

>нинужно

2023-10-2016-19-47.png34 Кб, 685x504
374 2886864
>>886851

>XamlParseException там не один, может ты не тот ловишь


Вот конкретнее
375 2886880
>>886838
какая? дебил, какой поддержки ты ждешь.
Можно понять ГОВНОжаву где нет свойств и поэтому НУЖНО указать IDE что "вот такой синтаксис не ошибка".

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

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

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

>>886864
на твоих скринах ты ловишь throw. я конечно верю, что дальше оно идет типа мимо, но из скринов это не следует.
sage 376 2886896
>>886880
Найс рвонькнул, ну уж точно не потому что у шарпододика разрыв шаблона. Допустим поддержка нотнулла в среде и правда нинужна. Что скажешь насчёт популярности твоего поделия в сравнении с ломбоком? Ломбок есть на каждом проекте, у него 12к звёзд на гитхабе, а где есть каловроти с 600 звёздами?

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

Шарп и любой другой нормальный язык куда богаче, поэтому необходимость "нам не хватает сахара" намного ниже
и желающих маговать намного меньше, остальные не понимают "зачем"
поэтому под тот же котлин (который внезапно JVM) нет никакого ломбока и никогда не появится ибо даже если появится, то его поддержат 3.5 человека, а остальные скажут "и нахера оно"
sage 378 2886915
>>886909
Мне оправдания твои не нужны, как так получилось, что джава выебала петушарп. На вопрос отвечай.

>Что скажешь насчёт популярности твоего поделия в сравнении с ломбоком? Ломбок есть на каждом проекте, у него 12к звёзд на гитхабе, а где есть каловроти с 600 звёздами?

2023-10-2016-59-36.png17 Кб, 684x179
379 2886948
>>886880

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


Оно НЕ идет мимо. Оно остановилось в блоке try не дойдя до catch. Вот в чем проблема.

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

Короче, я не хочу, чтобы студия останавливала приложение и прыгало в точку вызова эксепшона в коде. Это некритичная ошибка, и у меня уже есть защита от этого, если бы эта залупа там не останавливалась за каким-то хером не смотря на try.
380 2886958
>>886909
>>886915
Спорим вы сидите в политаче? Есть душок от вас - любителей потратить время на бесконечные диалоги.
381 2886964
>>886958

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

2023-10-2017-14-08.png64 Кб, 995x987
382 2886968
>>886964
Чел, у тебя шиза. Пикрил не даст соврать. Мне вообще поебать на ваш шухер, у меня проблема >>886948 горит.
383 2886972
>>886968
Переходи на джаву, тут нет нескольких одинаковых XamlParseException.
384 2886991
>>886948

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


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

>>886958
ты проспорил. Лично я там не сижу. Впрочем, я и в жава тред не лезу.
Просто меня жависты достали своей тупостью в реальной жизни, а в ней сложнее кормить говном, а тут забегает говноед.
Но все равно наши срачи занимают малый процент треда, ведь жаводебил не может ответить аргументированно, а сразу начинает тупить и на этом заканчивается.
385 2886993
>>886991

> не может ответить аргументированно


Найс перефорс слившегося чушка, который на вопрос не ответил.
386 2887012
>>886993
ты долбоеб эпохальный.
тебе не просто ответили, даже раскрыли суть.

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

В шарпе 99% того, что дает ломбок, просто НЕ НУЖНО, поэтому и пользователей кому что-то подобное нужно, намного меньше.
Да и не все ставят звезды. Не для всех гитхаб "соцсеть где нужно лайкать репы".
387 2887019
>>887012
Маня называет меня долбоёбом, но сама в который раз высирает стену оправданий, почему джава выебала петушарп, хотя от него требовалось выдавить ответ на вопрос.
388 2887273
>>887019

>Маня называет меня долбоёбом


всегда зрю в корень. за сим все. ты слился в аргументах, а значит оставайся один со своим говном
389 2887342
>>887273
Маня называет меня слившимся, но сама так и не смогла ответить на простейший вопрос.
390 2887565
>>887342
Лахта, cпок.
391 2887567
>>887565
Слитое, спок.
392 2887619
>>887567
вы только посмотрите как жавист, как та собака, поевшая говна, на всех кидается )
У него даже не возникло вопросов почему его бы его собеседник назвал лахтой, если до этого всячески намекал на говноедство )))

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

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

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

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

иди в свой тред и там вместе кушайте свое говно (где у вас СТОРОННИЙ тулз десятилетиями чинит убожество языка), а к нам его не несите.
393 2887626
>>887619
Да ладно, что ты хочешь от убогих. В джаву только в этом году паттерн матчинг и интерполяцию строк завезли (и то в превью), так они уже ссутся от радости и объявили, что у них эти фичи самые лучшие.
394 2887637
>>886991

>не хочешь - выключи. зачем включил?


Я ничего не включал, у меня дефолтные настройки. Все исключения ловятся, кроме этого.
395 2887639
>>887619

>И что правильный путь - статический нуллчекинг (fail fast на этапе компиляции), который позволяет избежать этой расстановки везде везде проверок на null.



Поясни. Я везде расставляю проверки на null.
396 2887648
>>886972

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


Господи, это еще хуже. У вас че, нельзя называть одинаково классы в разных неймспейсах? Потому что я горю на этапе, когда надо придумать хороший нейминг, чтобы он не конфликтовал с уже существующими и не был длинным как сопля первоклашки.
397 2887677
>>887637
и никак не понять твою проблему
- исключение не ловится (то есть не вызывается catch)
- студия останавливается на исключении

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

>>887648

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


жавадебил. они потому и называются одинаково XamlParseException, потому что лежат в разных неймспейсах.
398 2888874
Нужен ваш совет по работе с несколькими пользователями в десктопной апе. Сейчас логика такова, что приложение хранит в текстовом файле айдишник текущего пользователя, и при запуске приложения подгружает его профиль из БД, который затем хранится в синглтон классе настроек. И тут возникает проблема с тем, что при переходе на страницу выбора пользователя происходит ещё одно обращение к базе данных, чтобы получить список всех пользователей. И тут то я ловлю краш связанный с тем, что ef core трекает два разных экземпляра одной сущности. Как быть?
399 2888939
>>888874
Не трекай запрос, лол. Делай детач после того как получил сущность.
А по хорошему - сделай дополнительный слой из ДТОшек, которые тебе нужны. И используй в своем синглтоне - эти дтошки, а не сырые модели которые ефом используются.

Вообще. Если быть честным - ЕФ та еще говнина. Слишком много с ней ебли, учитывая, что основное назначение для меня, как клиента - маппинг результата запроса в объектики. Ну и как потенциальное - возможность сменить провайдера для работы с БД. Но сколько же с этой говниной подводных камней. Я ебал. И я даже не говорю про скорость, которая тоже говном становится из-за вот этого всего. Нет. Просто блядь. То что я бы на голом SQL написал бы и забыл, ЕФом приводит к просто охуитительным историям, когда вот тут - нельзя, вот тут - допиши как мне это сделать, вот тут - пиши свой запрос, а то я не понимаю, вот там - мы не можем в несколько тредов. Вот тут - провайдер не умеет в то, что умеет сама СУБД, а потому - фишечки полезные - опять же запихни себе поглубже. Короче. Да. ЕФ - говнина. Не советую никому пользоваться, если вы на нее не сели в начале, и теперь уже слезть сложно. Для любых новых проектов - что угодно будет лучше чем EF.
400 2888947
>>888939

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


Тогда получится уже 3 класса на сущность, сейчас у меня и так на каждую сущность есть вью моделька, принимающая эту сущность в конструкторе.
401 2888957
>>888947
Почему не можешь сделать так:
var user = db.Users.AsNoTracking().FirstOrDefault(x=>x.Id = ConfigFile.UserId);
MyApplicationContext.Instance.CurrentUser = user;
402 2888976
>>888939
Люто двачаю. EF - говнина для индусов, куча ненужных фич, типа changes tracking, которые усложняют программы. Есть linq2db, dapper и другие, которые просто конвертеры между C#/SQL, без кучи говна под капотом. Если вижу EF в вакансии, понимаю, что эти люди с базой никогда серьезно не работали. Про такие вещи, как булк операции, мерджи и рекурсивные запросы они наверно даже не слышали, ведь у этого говно из коробки этого нет (могу ошибаться, и что-то могли уже завести).
403 2889024
>>888939

>То что я бы на голом SQL написал бы и забыл


Если ты в соло работаешь, ну так и делай. В команде же, ебал я в рот чужие sql-ные писульки разбирать. ОРМ как раз и нужна, чтобы можно было работать с объектами не касаясь неотлаживаемого эскуэльного говна.
>>888976

>Если вижу EF в вакансии, понимаю


Я наоборот дропаю вакансии, где используют raw-sql в коде и встройки в БД.
404 2889025
>>887619
Ебать обоссаный копротивленец за кучку говна бахнул. И ведь юмор в том, что я прочитал весь его бах, только ни йоты смысла не нашёл. Обтекай. Может быть, когда-нибудь, петушарп и дорастёт до рантаймовых проверок, когда в джаве уже 10 лет как будут компайл-тайм проверки.

>>887648
Можно, но это не отменяет, что у нас нет шизы с несколькими одинаковыми XamlParseException.
405 2889054
>>889025
и ведь ему не стыдно было писать этот пост ))))
Я бы после такого поста из профы на завод бы ушел от стыда, а он даже не замечает какую дичь несет )))
406 2889059
>>889024

>где используют raw-sql в коде и встройки в БД


как будто "если не EF то значит сырой SQL без вариантов"
Есть тот же LINQ2DB (и похожие на него). И даже в даппер можно пихать запрос сгенерив его с помощью LINQ.

Так что тут стоит вопрос - любитель ли вы всякого трекинга и абстрактности (от чего получаете некоторые плюшки и выгребаете тонны дерьма) или же вы предпочитаете работать на более низком уровне "достали/положили", где вам никто палки не вставляет (и не в колеса, а в другое место))), но всякие там кеши и прочее делаете сами.
407 2889102
>>889024

>raw-sql в коде


Так и я против такого. Отсутствие EF - не значит отсутствие C# to SQL, я дропаю оба типа вакансий: в одних сидят пориджи, которые с базой работать не умеют, в других деды 40+, которые не могут осилить LINQ, с базой работать умеют, а вот шарп не осилили, речь про большие проекты.
408 2889176
>>889024
Так проблема же в том, что сам EF как орм - то еще добро. Особенно, если работаешь не с MSSQL, а каким-нибудь MySql или Postgres, где разработчики провайдеров - тоже те еще чудаки на букву 'м'.

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

Конечно, если простые вещи делать, без всяких анализов там, расчетов, а просто достать из базы, чет поменять, положить обратно - EF нормально справляется.
409 2889230
>>889176
У ef ужасающий startup time
Он там майнит что ли
410 2889253
Посоветуйте книгу для перехода на продвинутый уровень
411 2889271
>>889253
Букварь

Он позводит читать разное и стать про
Без всяких книг
412 2889289
>>889176

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


Ну если по урокам с метанита приложения писать, то конечно там сплошная магия будет. А так-то, наверное, стоит доки нормально прочесть, чтобы понимать в каких случаях server, а в каких client evaluation делается?
>>889176

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


Можно подумать БД зачем-то еще нужны. Шучу конечно, но...
413 2889301
>>889289

>БД зачем-то еще нужн


Неужели кофе готовят?
414 2889337
>>889289
Ой. Не не надо тут начинать. Всякие запросы с Contains - EF в куче случаев - на клиенте хочет выполнять, хотя по документации - может и на сервере. А выбор того на сервере или на клиенте - зависит зачастую от хрен пойми чего. Особенно в контексте того, что в EF который на фреймворке был - оно нормально выполнялось, а в Core - до сих пор какая-то хрень происходит.
При этом - руками вполне изи пишится SQL-запрос, который СУБД поймет и сделает. Но если ты на EF - тебе приходится либо страдать хуйней и лезть под капот, шаманя с составителями запросов и всей этой хуйней с экспрешинами, либо забивать на всю эту ORM и писать тот же SQL запрос.
И опять же, я сверху уже писал, про то что писатели провайдеров - тоже те еще чудики. Решили они, что теперь не хотят DataTime в обычном виде использовать - иди как дебил и переписывай все DateTime.Now на DateTime.UtcNow, потому что - ну пиздец как надо было сломать, чтобы все думали не о том, как фичи делать, а ублажать шизу разработчиков провайдера.
Короче. Хрен знает чего ты пытаешься ЕФ защищать. Ну реально же - капризная как хуй пойми что хуйня, особенно в контексте того, что она якобы должна была упросить работу с БД и заставить разработчика думать не о БД, а о логике приложения. В результате - ты теперь и о БД думаешь, и о том чтобы ЕФ не выебывался, и о том, что там разработчики провайдеров думают о том как надо, а фичи пилить чтобы к сроку успеть - та не ебет, ты же выбрал этот инструмент, радуйся тому, как жизнь проще стала.
415 2889580
>>887677

>и никак не понять твою проблему


>- исключение не ловится (то есть не вызывается catch)


>- студия останавливается на исключении



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

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

Почему когда выскакивает исключение XamlParseException, программа останавливается на строке, где исключение возникло, как будто там нет блока try catch?
416 2889763
>>889054
Тише, не гори, if (var != null) throw new NullPointerException() не так уж и плох. В конце концов, так на джаве очень долго делали и никто не ныл.
2023-10-22 15 33 01.png7 Кб, 329x224
417 2889862
>>889580
Наличие блока catch вообще ни на что не влияет. Где студия остановится, а где нет - задается в настройках исключений, где есть какой то дефолт.
И если ты поставишь дефолт и откроешь список, то увидишь вот такую картиру (пик)

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

>>889763
А ему по прежнему не стыдно
Он даже не понимает какую дичайшую чушь он пишет.
Возможно (и даже очень вероятно) -он вообще не программист, а дворник что видел обложку книжки по шарпу, а у самого футболка с надписью жава
418 2890161
>>889337

>Особенно в контексте того, что в EF который на фреймворке был - оно нормально выполнялось, а в Core - до сих пор какая-то хрень происходит.


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

>>889337

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



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

>>889337

>Короче. Хрен знает чего ты пытаешься ЕФ защищать.


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

>руками вполне изи пишится SQL-запрос, который СУБД поймет и сделает.


Я лучше с экспрешенами "пострадаю".
419 2890343
>>890161

>потому что для меня это нормальный инструмент


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

>Я лучше с экспрешенами "пострадаю".


одно не заменяет другое. Пиши своим LINQ в linq2db или в repodb или в dapper том же. 100% LINQ, просто меньше магии и "а у нас вот так надо" (это я про те дбконтексты с их особенностями работы"). Про потребление памяти вообще помолчу
420 2890474
>>889862
Долго шарподебил будет плакать от отсутствия у него в языке нуллобезопасности?
421 2890480
>>890474
нисколько, ведь она присутствует. Это ж не говножава с ее "у нас лобок генерит рантайм проверки". В шарпе есть полноценный статический анализ в компильтайм. Ну разве что проблема если нужно поддерживать старые версии дотнета. А зачем это нужно? ВЕРНО, не нужно.

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

Но жавадебил этого не поймет. Он же дворник с футболкой и фантазиями "эээх когда нибудь такое (на деле НИКОГДА) будет и в жаве"
422 2890481
>>890480
Этот ебанат правда не различает статический анализ и нуллобезопасность? Не хотел бы я таким же тупоголовым быть.
423 2890483
>>890481
нулл безопасность это как раз про проверки в компильтайм, а не рантаймовые проверки. Учи матчасть, дворник )
424 2890484
Как же блядь ссут в ебальник косолобому копротивленцу, пиздец просто. И ведь раз за разом его обоссывают, а он продолжает визжать "рррря, врёти!" и "ррррря, нинужно!".
425 2890485
>>890483
Пиздец блядь даун... Ты как нахуй сосач-то открыть смог? Мамка помогала?
426 2890486
>>890485
твоя же. она у тебя молодец. во всем )
шарпа не знает, жавы не знает (как и ты), но вот помогает на двач зайти.
427 2890487
>>890486

>ррррря, твая мамка!


)
428 2890490
>>890487
не нравится правда? ну так не заходи в наш тред, жавист.
тем более с такими тупыми аргументами

у шарпа есть стат анализ на нулл, и есть возможность не просто варнинг, а запрещать компил. И приходит тут говноед и начинает вещать "ой как хорошо в жаве - там лобок генерит за нас рантайм проверки". На него смотрят как на дебила, поясняют, но он же дворник с фуболкой и не понимает.
429 2890491
>>890490
Этот микроцефал продолжает уверять меня, что статический анализ это ТО ЖИ САМАЕ, что и адекватная нуллобезопасность через типы.
430 2890494
>>890491
Это она самая и есть. Изучи матчасть что ли. Проверки на нулл этим не являются. Этим является различие в языке нулл типов и не-нулл типов и стат анализ этого самого.

Вали в свой тред, неуч
431 2890495
>>890494

>РРРРРРЯ ТОЖИСАМАЕ ТОЖИСАМАЕ!!!!!! ЯСКОЗАЛ!!!! СКОЗАААААЛ!!!!! МЯЯЯЯЯЯМ!!!!


)
432 2890497
>>890495
прими 2 факта
1 в шарпе есть стат анализ, который позволяет не писать проверки на нулл (ни самим, ни кодогеном, ни с божьей помощью)
2 в жаве этого нет. там есть лишь лобок, который позволяет написать эти проверки за IDE (хотя иде прекрасно их генерит) и получить РАНТАЙМ проверку

знаешь что такое РАНТАЙМ проверка? а это когда получаешь NRE и.... просто не знаешь что с ним делать ибо его быть не должно в принципе в нормальном языке
433 2890499
>>890497

>ТОООООООО ЖЖЖИИИИИИИИИИИ САААААААААМАААААААААЕЕЕЕЕЕЕ!!!!!!!


Долбоёб, повтори это ещё громче, и, наверное, это станет правдой.
434 2890508
>>890499
ты думаешь ты зашел в детсад где такие подходы работают? лол, ты на дваче. ты поел говна и твои попытки перефорса не работают.
Больше на твои аргументы в подобном стиле отвечать не буду (нехрен тупому жависту шарпортред засирать)

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

А не идиотов говном кормить (это приятно, но...надоедает тоже)
435 2890510
>>890508
Ясно, манюня опять получила говна за шиворот и в харчках убежала плакать. Каково тебе быть слитым по фактам и опущенным в целом в твоём собственном треде?
436 2890533
>>890510
говноед размечтался. обычное дело для жависта - мечтать
ха ха ха ха, ха
437 2890546
>>890533
Смотрю уже харчки отстирал. Ну держи ещё парочку, бегом снова стирать рубашку с брюками.
438 2890552
ну молодец жавист. отбил последнее желание у шарпистов изучать жаву. ой да молодец.
.png161 Кб, 1155x780
439 2890561
Хих
440 2890562
>>890552
Если уж и размышлять, какое влияние оказало моё нахождение в этом треде на шарпоблядей, то уж точно не отвергающее джаву. Шарпоскотина это в первую очередь социоблядь, выбор петушарпа у которой произошёл вследствии соответствия антуража петушарпа антуражу их личности (если перейти на конкретику, терпильная быдлосоя выбрала терпильный быдлосоевый язык). Моё явное обоссывание твоего ебала авторитета в глазах соевого быдла тебе не добавляет, а соответственно прибавляет твоему оппоненту, то есть мне, и джаве, которую я защищаю.
441 2890572
>>890562
Посмотрите на этого идиота с уровнем развития первоклашки
И радуйтесь что вы не жависты
442 2890573
>>890572
Опущенное, не ворочайся.
443 2890686
>>890562
Выбрал шарп, потому что лет в 12 попалась книжка по Net 3.5, в которой был диск со студией и примеры программ, которые можно было тыкать.
Хуй знает при чем тут соя. Просто на фоне того же паскаля - это было небо и земля. Никаких бесящих begin, end, никаких :=, требований хуячить переменные в начале функции, никаких тупых разбиений на процедуры и функциихотя вот тут, именно сейчас я бы на самом деле прям на уровень языка засунул такое разбиение, и запретил в функции мутировать стейт в принципе, но это мои фантазии, так что похуй. Просто бери и пиши. И при этом в отличии плюсов, про которые тоже позже узнал - у тебя ВСЕ ЕСТЬ для жизни прямо вот, тута. Хочешь сайт - пожалуйста, хочешь графики - да вот они формочки, хочешь на лоулевел - да никто не запрещает.
А потом еще и закрепилось тем, что в вузе был выбор, джава-плюсы-шарп, для того чтобы ООП осваивать, и ессно я выбрал шарп, пока долбоебы-однокурсники ебались с плюсами.
Короче. К чему. К тому что не понял, хули ты до шарпа доебался. Не нравится - ну, так зачем в тред заходишь? Нравится - так не токси, тред невозможно читать из-за того сколько добра ты и прочие джава-неняши высераете.
sage 444 2891031
>>889862

>Где студия остановится, а где нет - задается в настройках исключений, где есть какой то дефолт.


Ах вот оно что, спасибо!
445 2891129
как правильно провернуть dictionary?.TryGetValue(key, out var foo), посоны?
компилятор говорит не знаю что у тебя там за out такой, unassigned local variable, а инициализировать foo чуть выше хоть и прокатывает но как-то убого смотрится. сейчас у меня вот так:
if(bar?.Dictionary != null && bar.Dictionary.TryGetValue(key, out var foo))
image.png16 Кб, 727x432
446 2891228
А сейчас добрая феечка покажет вам, как при помощи .NET и щепотки магии - сделать CLI-утилиту.
447 2891254
>>889271
Гений, если читать про всё подряд то хуй что изучишь
Мне нужна книга которая позволит укрепить и систематизировать более продвинутые техники языка
image.png102 Кб, 930x768
448 2891270
Собственно - каркас приложения - готов.
image.png14 Кб, 475x253
449 2891300
Собственно. Вот так выглядит теперь точка входа.
450 2891320
А ещё я сосу хуи.
451 2891332
Теперь напишем наши обработчики, метод их вызова и проверим что все работает как задумано.

Собственно - все. Мы написали свой каркас для CLI приложения. Далее - надо более правильный парсер аргументов использовать, добавить DI, ну и написать нужные нам обработчики.
image.png3 Кб, 646x72
452 2891333
>>891332
Эх. Копипастер.
453 2891345
>>891333
Это нужно говорить с русским акцентом.
157cae58b5d3b809f9a69af3cfa6a6d9.png4 Кб, 512x512
454 2891347
>>891332
>>891300
>>891270
>>891228
Да. В очередной раз прошу ревью. Буду безмерно признателен.
455 2891349
>>891345
А это как? На русском же русский акцент - не слышно. Или я не понимаю чего-то?
456 2892244
Хочу ~2k$, есть чуть больше 2х лет работы, однако чувство будто нихуя не знаю
Или действительно нихуя не знаю, потому что на местах работы использовал шарп максимально примитивно (ибо не было необходимости выдрачивать что либо еще)
Вот например, как часто вы делегаты используете в работе?
Знакомые на го и жаваскрипте уже по 4-7к$ делают, хотя вроде и не дрочат литкоды ебаные, сидят по вечерам со мной в дискорде и играют в доту
457 2892272
>>892244

> 7к$


Сикока-сикока? Это где такие зарплаты?
458 2892288
>>892272
Голанг, в основном с криптой работал
На предыдущей 5500$ делал
459 2892373
Почему по тому же реакту куча туториалов на ютубе от модных молодежных зумеров, а по razor pages фиг чего годного найдешь, да и то половина материалов от индусов? Нашел Флёнова, он как, котируется? На офф сайте майкрософт какие-то макакинговые туториалы, тупо повторяй, ткни сюда, нажми здесь, в итоге сайт готов, а что, зачем, почему, ни хера не понятно. В шапке треда материалы не особо свежие. Какая сейчас самая модная молодежная литература для вката в asp и razor pages в частности?
460 2892381
>>892373
Razor pages мертвая технология, которую никто не использует.
461 2892396
>>892381
А что от MS учить вместо нее?
462 2892406
>>892396
Asp net и react
463 2892500
>>891228
ПОГОДИТЕ. В ПЕТУШАРПЕ ПРАВДА ЧТО ЛИ ЧТОБЫ СДЕЛАТЬ ПЕРДОЛЬНОЕ ПРИЛОЖЕНИЕ НУЖНО ВОТ ТАК ПЕРДОЛИТЬСЯ?
169815623667163089.jpg143 Кб, 950x713
464 2892508
Ещё раз убеждаюсь, что петушарп не просто убогий клон джавы, а это просто какой-то фарс на манер так любимых нашими чиновниками обвалившихся деревянных халуп, закрытыми полотнами с нарисованными нормальными домами.
465 2892585
>>892381
Петушарп в принципе мёртвая технология.
466 2892617
>>892244

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


Примерно постоянное, лол. Но это я, добрая феечка.
467 2892618
>>892500
Как "так"?
468 2892620
>>892244
а как можно не использовать делегаты. они ж везде. это нужно прикладывать усилия чтобы избегать их
469 2892631
>>892620
Ну. МБ он про хуевые примеры использования с:
Add, Remove, Combine и прочей ересью, которую везде на уровне соглашений запрещают.
470 2892657
>>892631
а что в них плохого
такие делегаты - обычные иммутабельные списки делегатов.
471 2892663
какое же ООП говнище, пойду f# лучше учить я ебал
472 2892676
>>892657
То что ты потом заебешься отлаживать код, в котором кто угодно - где угодно нахуевертил. Это как минимум.
Ну срсли.
Вот в коде где-то в дебрях

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

Как быстро ты найдешь это вот? Да нифига не быстро.
473 2892793
>>892396
Asp.Net Core + React
и/или
Asp.Net Core + Blazor Server
474 2892801
>>892663
Ты не осилишь. Просто смирись, что придётся тебе до пенсии вызывать методы у объектов.
475 2892867
Как избавиться от того, что мой код на 80% состояит из классов вида Handler, Context, Dispatcher, Evaluator?

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

Просто как-то мне кажется, что это нифига не правильно. Но с другой стороны - 90% моего кода - это не бизнес логика, а инфраструктурный код. Но все равно.
476 2892880
>>892867
Инфраструктурный код и должен иметь такие нейминги.
477 2892881
>>892244
ты выбрал мертвый стек, братан. Пока молодые шутливые гоферы на втором году выходят на 200к, клепая круды, у шарпера на эту же сумму будут спрашивать глубокие кишочки, знание реакта, знакомство с кубером и настройку CI/CD
478 2892926
>>892881
Уходи.
479 2893028
>>892881
Согласен с >>892926, иди нахуй. Джавоёбы в треде серут хотя-бы по делу, а говноблядь что предложить может?
cirnotouhoudrawnbytonbi095185f48319be1754b.jpg181 Кб, 630x840
480 2893077
Почему вы не хотите ревьюить мой код?
Он настолько всратый разве? Я вроде старался жи.
481 2893105
>>893077
Ты шарπомуха.
482 2893108
>>893105
Ты пидор.
483 2894590
>>893077

>Почему вы не хотите ревьюить мой код?


Чел, я даже на работе на код-ревью хуй кладу. Просто ставлю аппрув и все.
Так что можешь считать, что твой код - норм. Но да - я даже не смотрел его.
1.jpg69 Кб, 640x638
484 2894669
Нахуя и зачем везде дрочат на ПрИнЦиПы ООП, если еблухины не могут даже определиться с этими принципами? Да они даже не могут определиться с количеством этих принципов, то абстракцию считаем, то не считаем. Причем, какую бы статью или видос ты не открыл и что бы там не высрал автор (причем высирают, зачастую, диаметрально противоположные вещи), половина комментов обязательно будет состоять из вот такого:

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


Или других вспуков, в которых будет ясно даваться понять, что автор, вообще-то, долбоеб и сказал неправду, но как правильно - хуй его знает.
Такое ощущение, что эту ебалу высрали и спрашивают на каждой вакансии специально, чтобы каждый у себя в черепушке придумал личное определение, а потом с ебалом пикрил смотрел на тех, кто выдумал другое определение.
готовлюсь обосраться на собесах
485 2894680
>>894669
Чтобы траллить лалок на собесах. Если кандидат назовёт абстракцию, то говорим, что нихуя, а если не назовёт, тогда говорим, что он забыл её упомянуть.
486 2894869
>>894669
Вот этот базанул.
487 2895166
>>894669

>Да они даже не могут


А эти загадочные 'они' сейчас с тобой в одной комнате находятся? Ты их видишь?
488 2895219
>>895166
Не, это плоды моего воображения пишут статьи, в которых одни и те же примеры выступают то реализацией абстракции, то полиморфизма, то "лол, у вас че, абстракция это отдельный принцип?))0", то "хех, мда, у них сокрытие это инкапсуляция)))))0".
Я это выдумал, разумеется, а если ты откроешь любую статью или видимокролик, то там, конечно, будет все одинаково объяснено.
489 2895246
>>895219
А ну как парень поясни чем отличаются прокси, адаптер, фасад, стратегия?
когда в реализации они похожи друг на друга как братья.
490 2895255
Почему компилятор ругается

>""Binding" невозможно задать в свойстве "DataContext" типа "ObservableResourceTemplates". "Binding" можно задать только в параметре DependencyProperty объекта DependencyObject."



Хотя оба класса, свойства которых связываются, реализуют INotifyPropertyChanged. Почему требуется именно DependencyProperty?
491 2895269
>>895255
Ну вот такая вот дефолтная реализация. Она реализует паттерн "приспособленец" и как то вот так вот.
DependencyProperty очевидно используется как ключ, поэтому он и задается как статическое поле.

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

Почему нет для INPC? ну тогда там не получится использовать "приспособленец", а это будет уже другая реализация для таких случаев. И видимо решили не усложнять себе жизнь.
492 2895273
>>894669

> лично ваши определения, полученные после реального кодинга?


Лично по моим ощущениям ООП состоит из:
1. У нас есть объектные типы данных, далее просто типы.
2. Для типов существует процедура конструирования экземпляра типа.
3. У типов есть атрибуты ака члены, значения или контекст которых принадлежат сконструированному экземпляру.
Всё. Процедура деконструкции экземпляра уже не входит в этот список, потому что уже опциональна. Наследование уже не входит в этот список, потому что опционально и является не принципом, а паттерном.
Много лет я считаю эти 3 пункта самодостаточным определением ООП, а все остальные инкапсуляции с полиморфизмами - это наносное. Это можно делать не только с объектами, не только в ООП. Например, инкапсуляция (in-capsule) - код отдельного модуля программы самодостаточен и независим внутри модуля. Где тут ООП? или например сокрытие. Права доступа к переменным и функциям. Это могут быть атрибуты объекта, м аогут быть просто функции беООПного языка. Или полиморфизм. Его можно достичь через наследование классов в ООП, а можно через наследование текстовых модулей без ООП. Не вижу непреодолимых причин, чтобы так сделать, и в седые 80 так и делали при помощи инструкций компилятора. #IF FOO INCLUDE bar.inc ELSE INCLUDE baz.inc #ENDIF Чем не полиморфизм?
>>894680

> Если кандидат назовёт абстракцию


Ну и как абстракция может принадлежать ООП если абстракция существовала до ООП, прямо в тот момент, как с перфокарт на ассемблер пересели и появился первый слой абстракции.
493 2895288
>>895273
Вот я литературно об этом и говорю. Все носятся с каким-то "принципами" и считается, что это такое "общее знание", которое всем доступно и у всех одинаково (примерно как "что такое int"), а на деле каждый придумывает для себя собственную поебень, которая не имеет ничего общего с поебенью в голове другого человека. В итоге люди говорят об абсолютно разных сущностях, по какой-то нелепой причине называя их одинаково.
В чем смысл абстрактных "принципов", если общие у пользователей только названия этих принципов, а то, что под этими названиями понимается, индивидуально. Это как если бы у каждого в голове было свое кардинально иное понимание, что такое "хлеб", один бы говорил, что это пончики, другой говорил, что это батон, а третий был бы уверен, что его в кастрюле нужно отваривать и вилкой жрать. Вроде как что-то общее есть, но нахуя тогда понятие "хлеб" нужно - непонятно.
494 2895298
>>895288
ИМХО, реально знать и учить следует SOLID и паттерны. Вот они должны быть в наших головах абсолютно идентичны и соответствовать тому, что наизобретали в банде четырёх.
495 2895299
>>895298

>Вот они должны быть в наших головах абсолютно идентичны и соответствовать тому, что наизобретали в банде четырёх.


но это глупость.
1 паттерны изобретались для си. На других языках они могут быть выражены иначе или не нужны вовсе
2 паттерны НЕ НУЖНО реализовывать дословно. Нужно идти к паттерну и остановиться когда задача решена.
496 2895300
>>895288

> литературно


Буквально. Literally - это буквально, а не литературно. Литературно - это literaturic.
497 2895304
>>895299

> паттерны изобретались для си


На си, но не для си.

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


Ложь.

> паттерны НЕ НУЖНО реализовывать дословно


Паттерны это алгоритмы.

> Нужно идти к {алгоритму} и остановиться когда задача решена.


Ну как бы да, но из-за каши в голове ты пишешь чушь.
498 2895310
>>895304
>>895299
Так стапэ, погоди ругаться. Я тебе так скажу. До изобретения "паттернов" начинающим программистам рекомендовали учить типичные общие алгоритмы. Потом кто-то придумал "дизайн паттерны", а потом "SOLID", и эти понятия подменили алгоритмы как синоним. Суть осталась та же. Общие алгоритмы. Они не зависят от языка. Да, на разных языках они будут синтаксически реализовываться по разному, но вычисляться будет одинаковый результат, решаться будет одинаковая задача. Понимаешь?
499 2895311
>>895304

>не для си.


ДЛЯ си
посмотри реализации паттернов этих на других языках у увидишь что все иначе

>Ложь.


сколько языков изучал? ) ты темой точно не интересовался

>Паттерны это алгоритмы.


нет. это ОБЩИЕ РЕШЕНИЯ. какие то задачи люди решают и приходят к похожим решениям. Вот эти решения обобщили и выдают как паттерны, чтобы была унификация. Польза от паттернов это коммуникация, а не само решение. Само решение - оно и так приходит.

>но из-за каши в голове ты пишешь чушь.


это не моя мысль. эту мысль задвигает
Джошуа Кериевски: Рефакторинг с использованием шаблонов
и я с ним полностью согласен.
500 2895312
>>895311
Перечитай предыдущий пост.>>895310
501 2895314
>>895311

> эту мысль задвигает


> Джошуа Кериевски


Этот зумер не знает основ информатики, а ещё книги пишет. Да пошол он нахуй с моих двачей!
502 2895315
>>895310
паттерны и SOLID это разные принципы вообще.
первое это КОНКРЕТНЫЕ архитектурные решения, а второе - общие рекомендации на тему чистого кода.
И никогда они не были синонимами.
503 2895318
>>895315

> первое это КОНКРЕТНЫЕ архитектурные решения


Читаем >>895246 думоем.
К - конкретика.
504 2895323
>>895314
у нас тут знаток ))). не буду с ним спорить
505 2895324
>>895315

> общие рекомендации на тему


Алгоритм это и есть общая рекомендация на тему кода. Алгоритм не предписывает, каким словом следует описать например, цикл, алгоритм просто говорит "возьми вот эти данные и в цикле умножай каждый элемент на 2" и всё. А уже в языке сишник сделает так, а фортранщик сделает эдак.

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

Мнения зумеров с умными ебалами на этот счёт меня не интересуют.
506 2895326
>>895323
Молодец. Молчишь - умнее выглядишь.
507 2895380
>>895288

>Все носятся с каким-то "принципами"


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

Если ты из тех долбоебов, которые сперва учат паттерны, а потом находят для них причину, то тут можно выразить только сочувствие.
508 2895388
>>895380
Я из тех долбоебов, что хотят на РАБотку устроиться, а так уж получилось, что собесы не обходятся без принципов ооп
509 2895420
>>895388
Тогда тебе следует сперва сделать какой нибудь пет-проект, чтобы уткнуться носом в несостоятельность собственных убеждений. Иначе никак.

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

>Я из тех долбоебов, что хотят на РАБотку устроиться, а так уж получилось, что собесы не обходятся без принципов ооп


А ты задвигай на собесах еще побольше дичи вроде такой:

>3. Принципы SOLID - это алгоритмы.


>4. Дизайн паттерны - это алгоритмы.


Тогда ты еще долго не сможешь устроится.

Ты похож на долбоеба практиканта, который пришел на завод. Ему говорят "Подай вон те пассатижи", а он начинает выебываться на тему "Это не пассатижи, а плоскогубцы" и задвигает лекцию на полчаса в чем их отличие, вместо того, чтобы сделать то, о чем его просят. Естественно его закономерно считать душнилой и шлют нахуй.
511 2895436
>>895420
О какой "несостоятельности убеждений" речь? У меня нет никаких убеждений, я просто хочу прочитать про общепринятые понятия, а оказывается, что они нихуя не общепринятые и это какая-то шиза, которую каждый для себя выдумывает. Жопа у меня сгорела не от того, что в моем голове понятия другие, а от того, что гаврики не могут к какому-то консенсусу прийти, чтобы разные штуки одним и тем же словом не называть.
512 2895474
>>895435
Ты ведь понимаешь, что в этом треде пишут разные люди и, зачастую, в одной и той же ветке диалога?
513 2895492
>>895474
Похуй. Контекст и позиция одинаковы, значит это один собеседник. Даже если под капотом там действительно разные люди.
514 2895494
>>895326
Чего спорить со знатоком )
Его ж даже не смущает значение слова "паттерн"
И что солид называют набором принципов

У знатока же ....алгоритм)) золотого молотка
515 2895882
>>891347
Вбей в нюгете в поиск "CommandLine" и не изобретай велосипед.
516 2895900
>>895882
Так не интересно, няша.
Типа блин. Ну, я могу и взять тот же кестрел и использовать его как TCP-сервер, просто добавив туда коннекшон-хендлер. Но так же нефига не интересно. Плюс - в процессе учишься новому, узнаешь нюансы и все это вот.
Типа не знаю. Я все равно, считаю, что есть разница, между тем - ты представляешь в голове как это сделать, и ты на практике делал и все грабли собрал. Короче. Не знаю. Да. Вот. Да.
517 2895913
>>895900

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


а можешь?
518 2895917
Не можешь.
519 2895928
>>895913
>>895917

А что мешает-то, лул?
Другое дело, что кестрелл - заточен под этот ваш HTTP и там слишком много всего под него, а если будешь пытаться наворачивать какой-нибудь IRC или что-то в этом духе - просто залюбишься до смерти.
520 2895942
>>895928
Ну и да. Сверху - не факт, что вот это вот апи - оставят для публичного пользования. Хотя оно еще в 3.0 появилось и пока не убрали, но занаем же майков и что они иногда могут решить, что не нужно.
А бедрок, который на базе кестрелла делали - давно не подает признаков жизни что-то, как был экспериментальным, так и остался. Печаль-беда.
521 2895996
>>895928
А кестрел без этого вашего вебхост?
16383608863370.png239 Кб, 389x461
522 2896081
Привет всем.
Подскажите, пожалуйста, чем вы пользуетесь в своих asp проектах для авторизации?
Мне нужно уметь создавать пользователей, логины/пароли, и прописывать методам апи в контроллерах разделение по ролям.
Пользовался внутренней системой(был отдельный сервис общий для всех авторизаций и пакет нугета локальный, делающий это в 5 строк), но щас сказали пилить именно независимую от внутренней свою.
523 2896099
>>895996
Просто придется возиться с тем, чтобы прокинуть ему все его офигенные зависимости. Фактории слушателей, опции, сервисы, лимиты, фактории логгера, и вот это все вот остальное. Дальше - server.StartAsync(MyApplication, cancellationToken).
Веб-хост то что делает. Он всю эту хреноту вместе собирает, потом - берет и из мидлваров и прочего добра билдит IWebApplicatio, потом всем серверам в StartAsync прокидывает этот IWebApplication.
С кестрелом-то ничего не прячут, пока что - все апи, практически, public, и если хочется - можно поиграться.
Я это к чему? К тому что ну, можно без веб хоста, просто придется то же самое, что он делает - делать руками. Это не сложно, просто тогда бы листинг раздулся, хотя суть бы не поменялась.
524 2896100
>>896099
А, ну и да. Я тут вижу, что вроде как в последних версиях - поменяли вроде апи кестрела слегка. Раньше он вообще без IWebApplication вроде как нормально работал, по крайней мере я так помню, хотя это было давно, я могу уже путать.
Потому что опять - я на нем - делал в свое время свой чатик поверх TCP, но слишком много возни было из-за того что много лишнего для меня было, и решил уже переключиться как человек на сокеты.
525 2896181
Есть ли список действительно сложных вопросов на мидла и сеньора которые задают на собеседовании? Гуглинг постоянно высирает сотни одних и тех же вопросов для джунов
526 2896279
>>896181
Просто потому что сенек спрашивают ровно то же самое. Отличие лишь в том, что у джуна это будет растянуто почти на весь собес, а у сеньки это будет максимум половина. Вторую половину он будет пояснять про свой личный опыт и работу с конкретными технологиями. Ну и у сеньера еще есть читерская опция для ответов на вопросы по теории "я уже давно с этим не работал, не помню".
527 2896326
>>896279
Ну окей, а на мидла? Хочу уже апнуться до миддла, надо бы к собесам подготовиться
528 2896711
>>895436

>О какой "несостоятельности убеждений" речь?


вот от этой

>это какая-то шиза



>к какому-то консенсусу прийти


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

>разные штуки одним и тем же словом не называть


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

А так - никаких.
533 2896839
>>896838
Можешь объяснить из-за чего тут может возникнуть дедлок?
534 2896840
>>896839
Оборачиваемый метод может что-то запустить внутри себя
И если у тебя есть контекст синхронизации то дедлок
535 2896841
>>896840
Где почитать про контекст синхронизации?
536 2896951
>>896841
не нужно про него читать.
он сам тебя найдет
и ЗАДЕДЛОЧИТ ))
537 2897017
По ddd весь домен должен быть изолированным, то есть интерфейсы репозиториев и сервисов нельзя хранить в domain слое? Но как тогда внедрять репозитории, если это требуется инвариантом?
538 2897037
>>897017
По DDD - уровень домена - может пользоваться интерфейсами инфраструктуры, но не должен знать про детали реализации этой самой инфраструктуры. И соотвтетственно пользоваться этим.
Т.е. ты можешь слинковать сборку MyApplication.Domain с MyApplication.Infrastructure.Abstractions, где лежат интерфейсики сервисов, репозиториев и т.д.. Но уже на уровне приложения - ты пропишешь домену, какие конкретно реализации этих абстракций надо использовать.
539 2897040
>>897017
Про то, ложить ли интерфейсы рядом с доменом.
А зачем? Что тебе полезного это даст? Если тебе эти интерфейсы нужны где-то еще, хочешь, чтобы потребитель - имел доступ ко всем этим интерфейсам?
Ну, т.е. ты можешь так сделать, и прямо это DDD не нарушит, если у тебя микросервисная архитектура, и сервисы твои разбиты так, что не возникает пересечений - можешь в той же сборке хранить.
2023-10-2723-50-42.png15 Кб, 774x117
540 2897186
Можно как-то повлиять на порядок биндинга к DependencyProperties? Я не понимаю по какому принципу идет этот порядок.

К примеру пикрил (на названия свойств не обращайте внимание). Но как бы я не менял порядок, у меня первым делом идет привязка свойств Key, Value, MainViewModel.
541 2897221
>>896806
Пиздец проиграл с помойного петушарпа. В джаве эта задача выполняется созданием одного Future. Добавлю это в свой список попуска шарподаунов и буду им каждый раз при втрече в ебало тыкать тем, что у них в языке нет возможности подождать выполнение задачи из одного потока в другом. Как вы вообще живёте блядь?
542 2897222
>>897221
Смотрим и смеемся с тупого жаводебила

Чтт спросить то хотел?
543 2897223
>>897222
Почему в помойном петушарпе нет поддержки асинхронности?
544 2897224
Ёбаные пидорахи, им на еблище серут, а они слизывают и оправдывают своё обосраное ебало. Как называется эта болезнь?
545 2897263
>>852022

>Шарпаны, что думаете от чистоте крови функции?


Не слушай этих кретинов, которые тебе отвечали.
Во-первых, подели все свои классы на классы данных и сервисы.

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

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

Таким образом, методы получаются чистые, код становится значительно проще, пропадает всякая неведомая магия, ну и тесты становится писать очень легко.
546 2897265
>>897223
Ты, вероятно, совсем долбоёб.
Асинхронность в шарпе есть, и она значительнл лучше, чем в джаве. Вообще, в джаве есть только одна фишка, которой не хватает шарпу: анонимные реализации интерфейсов.
Все остальное в шарпе на голову выше.
А код, на который ты ссылаешься, это как раз пример того, как делать не надо.
547 2897267
хочу .net но знаю только js, че делать?
548 2897280
>>897263

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


А как же контекст бд?
549 2897282
почитал полтреда, половина вопросов про core. Нахуй это если есть js со всеми производными для вэба? вы тут совсем обезумели?
550 2897290
>>897265

>асинхронность есть и лучше яскозал!


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


)))))))))
551 2897291
>>897265

>в ответ на аргументы повторяет мантру


Чем ты болеешь?
552 2897292
>>897291
Пидорахизм, сэр. Терминальная стадия.
553 2897357
>>897290
Чел. Там анон на какой-то хуй решил этой хуйней пострадать.

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

И да, асинхронность в шарпе таки лучше джавовской.
554 2897381
>>897357

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


Я пишу, если нужно в конструкторе аснхронный метод вызвать
555 2897387
>>897381
Нахуя тебе в конструкторе, блядь, асинхронный метод вызывать?
Ну серьезно. Если чтобы проинициализировать объект вот такая хуйня нужна, то лучше факторию или билдер уже мутить, а в конструктор ложить результаты выполнения.
Потому что я так думаю, потому что единственный кейс где я вижу надобность асинхронного выполнения в конструкторе - это если тебе в базу зачем-то лезть надо, с диска читать, вот это вот, а если это надо, то ну рил, ты хуйню придумал, делай нормально, нормально будет.
556 2897420
>>897381
старайся так не писать.
конструктор должен быть легковесным только для распихивания данных, без логики
557 2897433
Блять, аноны, вакансий для джунов и стажеров в ДС вообще нахуй нет уже 3 недели, ни одной.
Это все? Пора бомжевать?
558 2897436
>>897433
Ходи на собесы, где ничего про грейд не сказано, а ищут некоего .net-программиста.
559 2897478
Блин. Пацаны.
Как же я хочу, чтобы конструктор в шарпах так и назывался: constructor.
Почему надо было делать конструктор с именем класса-то? В чем сакральный смысл такого мува-то?
560 2897480
>>897387

>это если тебе в базу зачем-то лезть надо


Какой дурак лезет в базу при создании нового экземпляра?
Это вредительство какое-то. Время, когда экземпляр создается, редко совпадает со временем, когда этот файл используется.

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

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

Вам в капче когда нибудь попадалась задачка с нулем? Например 45 + ... = 45
561 2897482
>>897478
Когда с бейсика переходил, тож сложно было въехать. Даже сейчас всегда подписываю ctor, иначе хрен найдешь. В бейсике в конструкторе стоит New вместо названия класса и это совпадает с New() при объявлении.

А еще бесило, что тип элемента идет впереди названия, хотя все ищут по имени, а тип — второстепенная информация. К тому же список полей и свойств всегда выглядит как ебаная лесенка из-за разной длины типов.
Но зато каргокультно и уважаемо, как и ";"
562 2897495
>>897482
Ну. Меня это бесит потому что когда у тебя разрастается количество классов в проекте - IntelliSence с ума сходит. А я по сути без него и не могу уже кодить.

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

Опять же - более редкие кейсы - я добавляю в базовый класс новый параметр конструктора. Теперь надо пройтись по всем дочерним и проставить его там, хотя у них у всех - одинаковая сигнатурка. Был-бы просто constructor - я бы мог в папке Find-Replace сделать и жить нормально. Но тут я уже наученный опытом этой хуйни - давно сразу базовому классу делаю класс BaseClassSettings и если в нем чет добавляю, потому и говорю, что более редкий сценарий.
563 2897512
Не палите быдлу снипет ctor + Tab Tab...
564 2897515
>>897512
Я сниппеты выпилил по той же причине. Ебанутость интелли-сенса, когда я хочу переменную назвать cw - а эта хуйня мне Console.WriteLine пишет. Да и неудобно нихуя.
565 2897518
>>897515
Но этот снипет работает только на пустой строке... Как ты собрался объявлять переменную не указав тип или не написав var перед названием...
image.png20 Кб, 592x107
566 2897522
А не, пизжу. Реально так работает...
567 2897527
Но я все равно считаю, что ты шизойд, чел...
568 2897532
>>897527
Я просто хочу чтобы студия не подставляла за меня ничего сама. Что такого в этом желании-то?
Типа мне нравится как было в notepad++ в те времена, когда я в нем кодил. Подсказаочки есть, но ты должен явно сделать действие, чтобы оно применялось. А в студии последних версий - подстановка ебанутой стала иногда. Я пишу слово - оно дописывает неправильно, приходится исправлять не себя, а то что оно предложило и зачем-то вставило.

А с конструкторами - ну, я постепенно из-за этих приколов студии - решил что надо искать другие инструменты, даже вим настроить умудрился. И вот с такими вот инструментами как вим, у которых LSP отваливается раз в полчаса - понимаешь, что было бы пиздец как удобно, если бы конструктор везде назывался constructor, сразу бы просто миллион проблем решилось.
569 2897536
>>897482
Шиз, пиши уже на своём бейсике.
570 2897553
>>897536
Его прекратили нормально поддерживать, шиз.
571 2897554
>>897532

>Я просто хочу чтобы студия не подставляла за меня ничего сама.


Так она и не подставляет, если ты сам не дашь на это согласие при нажатии Enter или Tab.
572 2897578
>>897554
На работе - почему-то подставляет. ХЗ. Наверное надо переустановить студию и почистить все настройки. Чи еще что-то. Дома сейчас попробовал - действительно все в принципе - нормально и как должно быть.
А на работе, я думаю это из-за какой-то хуютки безопасника, который следит, там еще периодически - Ctrl+C-Ctrl+V отваливается, нахуй, перевод на новую строку происходит, какие-то символы невидимые вставляются. ХЗ короче.
573 2897622
>>897512
или альт+инсерт если есть решарпер
574 2897682
>>897357

>яскозал!!!! скозаааааал!!! СККОООООЗААААААААЛ!


Повтори это ещё громче, и это станет правдой.
575 2897691
Не могу себе представить ебальник хуесоса, который сначала в петушарп-треде зашищает свою потешную асинхронность, а потом идёт на реальную галеру и 10 часов в день пишет бесконечные циклы с конструкторами.
image.png10 Кб, 375x126
576 2897706
>>897682
Че повторить?
В том коде чел какую-то фигню творит. В шарпе - нормальная асинхронность из коробки, никаких циклов и прочего - ждрать не надо.
И не нужно как в жавовских фучерсах всякие get вызывать, чтобы подождать результата, просто пишешь await, если результат подождать надо. Не надо - не пишешь.
577 2897760
>>897290

>>асинхронность есть и лучше яскозал!


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


>)))))))))


>>897291

>>в ответ на аргументы повторяет мантру


>Чем ты болеешь?


Семён, загугли async/await и больше не пиши сюда.
578 2897770
>>897436
так нет вакансий.
Насколько варик пиздеть про опыт? Насколько вообще парятся на вакансиях, где требуют от 1 года опыта
579 2897776
>>897706
да забей ты на этого жава имбецила. ему просто скучно
я тоже могу пойти в жава тред и заявить

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

просто я не имбецил и потому нечего мне в жава тредах делать
а вот этому жависту не зазорно показать свою примитивность мышления и отсутствие базовых знаний
580 2897795
>>897706

>await


>вызываемый в async функции


)))))))))))))))))))
581 2897806
>>897495

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


Надо просто не использовать наследование.
582 2897857
>>897795

>>await


>>вызываемый в async функции


>)))))))))))))))))))


Иди вызови await не в async функции, я на тебя посмотрю.
sage 583 2897897
>>897857
Ну а я о чём)))))))))))))))))))
584 2898001
>>897897
Кто о чем
А вшивый о бане
585 2898016
>>897770

>так нет вакансий.


>Насколько варик пиздеть про опыт? Насколько вообще парятся на вакансиях, где требуют от 1 года опыта


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

Спиздеть про опыт ты конечно сможешь, но это тебе максимум поможет пройти hr-фильтр. Дальше на тех. собесе тебя развалят и поставят в базе отметку "нохаир". Вариант так проскочить только куда-нибудь на завод где сдох старый сишарпер и нужен новый, чтобы поддерживать их говно мамонта. Там обычно уровень собеседующих настолько низок, что можно им в уши, что угодно ссать.
586 2898038
меня одного напрягает то что есть разный синтаксис который делает почти одно и то же (второй менее функционален)?
int[] arr1 = [1, 2, 3]
vs
int[] arr2 = { 1, 2, 3 }
587 2898043
>>898016

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


Добудь рог единорога, слезу русалки и чешуйку дракона
588 2898049
>>898038
Синтаксис с квадратными скобками - только появился. Даже в 7м нете его нет.
А нужен он буквально из-за другой новой фишки с объединением коллекций.
Типа
[..arr1, 1,2.3, ...arr2];

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

>чтобы было явно видно, что это только для коллекций хуйня


Поверил бы, если бы можно было написать
var data = { lol = "kek" }, но надо обязательно new добавить перед скобками
590 2898100
>>897857
вот именно ПОЭТОМУ!!!!! и сделали async
жавич )
591 2898154
>>898100
Вроде как не поэтому...
592 2898174
>>898043
Другие смогли, получится и у тебя.
593 2898179
>>898038
Это ты еще кресты не видел
594 2898186
>>898179
видел, но давно и не много, с читабельностью там проблемки конечно
595 2898192
Как в ValueConverter сообщить, что вводимые параметры имеют неверный формат?

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

Если я верну ArgumentException, то там можно написать сообщение с пояснением что не так, и в режиме дизайна это сообщение удобненько выводится. Но в рантайме это может вызвать критическую ошибку с завершением всего приложения. А я этого говна не хочу. Хотя меня чет напрягает XamlReader, который плюет критическими ошибками, не слишком ли это?
596 2898208
>>898192
Почему валидные с точки зрения юзера данные не должны сконвертироваться дальше, при этом приложение должно продолжить работу? Это как раз критическая ошибка, потому что у пользователя нет возможности исправить это, ведь это не зависит от его ввода.
2023-10-2821-00-24.png25 Кб, 1119x346
597 2898257
>>898192
Ладно, это было помутнение. Можно просто писать в лог или на крайняк печатать Debug.WriteLine.

>>898208

>Это как раз критическая ошибка


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

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

>критическая ошибка


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

Получается, так, что конвертер привязан как итему списка, и каждый итем списка по сути провоцирует исключения, вызывая шквал окон. Надо какую-то защиту поставить от подобной фигни, хотя я не видел примеров, как будто у других такой проблемы возникнуть не может.
598 2898270
>>898208

>при этом приложение должно продолжить работу?


Да. Конвертер просто не вносит изменения в свойство, и там остается последнее валидное значение.

>ведь это не зависит от его ввода


Ну я решил подобное писать в лог. А DependencyProperty.UnsetValue подсветит рамку красным, сигнализируя, что что-то не так.
599 2898304
>>898192
Опять ты
Вечно стреляешь себп по ногам. Ты себя ненавидишь?

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

Каждый делает свою часть работы.
600 2898341
>>898304
Ты пишешь не прочитав, что я написал? Я написал ровно тоже самое.

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

Но я тебе распишу пример. Есть мультиковневртер, у которого n биндингов. Какое именно количество — хуй знает. А еще один итем может быть коллекцией, а второй строкой. Как это прочекать когда ты импортнул конвертер спустя год — хуй знает. Именно об этом была речь, но я сам решил уже проблему.
601 2898347
>>898341
я прекрасно понял о чем ты.
и еще раз повторю

>Какое именно количество — хуй знает. А еще один итем может быть коллекцией, а второй строкой.


и что? дело конвертера - КОНВЕРТИТЬ (и выдавать дефолт если сконвертить не удалось) а не заниматься валидацией.
пусть контрол занимается валидацией левых значений
602 2898381
>>898347
У меня комбобокс должен отобразить итем списка по его ключу. Поэтому я запилил мультиконвертер, где параметр values[0] - это коллекция с итемами, а values[1] - это итем, в котором хранится ключ. Конвертер проходит по коллекции, ищет нужный итем и пуляет его комбобоксу, который устанавливает его как SelectedItem.

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

Вот я о чем. В случае эксепшена я могу подать сообщение, что ты, разработчик, вместо коллекции в values[0] засунул какую-то залупу. Но в конвертерах эксепшены использовать запрещено.
603 2898385
>>898381
увы впф не идеален
поэтому я так ссу кипиятком от жетпак композе, но приходится впф
он проглотит твое исключение если ты не позаботишься

и я понимаю что тебе хочется идеала, но этого не будет
потому прими факт
конвертеры - конвертят. если что - то в дефолтное значение (которое юзер конечно сразу увидит и поймет что он ввел что то не то)
604 2898394
>>898385
Да я уже решил кроме DependencyProperty.UnsetValue еще и печатать Debug.WriteLine или logger.Error, так что на этапе дебага я увижу сообщение о неверных данных.
605 2898399
>>898394
это не тру
в оутпут пишется много чего
и окно это убогое в студии
так что не тру

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

я не знаю что там мауи придумали но дизайн как код (а не хмл) это годнота, ведь иде просто проверяет что где сама
А без этого....вот решарпер через туеву хучу лет не может вывести тип списка чтобы не ругаться
зато я ругаюсь...
606 2898587
>>898001
Слив принят, чушок.
607 2898721
>>898587
Слив тупого жавадебича
Ну так то да
Любит он пожрать говнеца
608 2899043
>>898721
Не ворочайся, слитое.
609 2899098
>>898154
async был добавлен чтобы как раз не было await в не-асинк функции.

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

зы: как по мне эвристика бы справилась, но авторы языка посчитали что оно того не стоит и обошлись простым методом.
610 2899379
>>899098
Я тоже слышал эту байку...
612 2899653
Дежурная струя мочи в рот писателям бесконечных циклов.
613 2899684
>>898381
Проблемы шарподебилов.
614 2900460
>>899653
И как ты без бесконечного цикла хочешь что-то в духе:

void Main(){
while(true) {
try{
Application.Tick();
}catch(Exception e) { Console.Error.WriteLine(e); }
}
}
615 2900869
Посоветуйте современную книгу (хотя бы после 2019) по asp net core.
616 2900911
>>900869
Metanit лучше всяческих книг!
617 2900919
>>900869
В современном мире - лучше бери MSDN, открывай гитхаб и смотри кишочки дотнета. Книги - хуйня, пока они дойдут до тебя - там 100500 раз поменяется все.
618 2901358
Шарпаны, где вакансии ищете? На хх зарплаты маленькие, на линкедине вакансий мало
619 2901403
>>901358
Мы их не ищем. К нам приходят и говорят "Чувак есть один проект, го, я создал".
620 2901414
Что делать если ты работал на довольно примитивных проектах?
2.5 года опыта, но по сути это low-code платформа, мелкие сервисы на .NET и немного SQL
Начинать заново искать работу джуном как то не хочется, ибо успели поднять зарплату, а зп джуна уже не хватает
А сейчас везде требуют еще и брокеры сообщений, докеры всякие, CI/CD, еще и жаваскрипт
Я на всем этом работать бы и рад, но без коммерческого опыта на этих технологиях никто всерьез не возьмет, а самому учить-дрочить это... ну не знаю, теорию еще да, ну может мелкий пет-проект чтобы потыкать-посмотреть, но не более
621 2901525
>>901414

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


Конечно, чел. Ни в коем случае не нужно все это 'учить-дрочить', просто сиди на жопе ровно и однажды все эти знания и навыки сами чудесным образом появятся у тебя в голове.
622 2902629
>>898016
А если в вузе и в городе нету стажировок?
623 2902701
>>902629

>А если в вузе


Тогда это хуйня из под коня, а не ВУЗ. Узнавай в деканате, корешись с секретаршей или методистами и выясняй у них с какими конторами у ВУЗа есть договор или связи. Ищи по знакомым. Узнавай у других студентов, как они этот вопрос решают.
Если совсем тухло, пробуй опенсорс. Находи какие-нибудь общеизвестные репы по своему стеку и пробуй туда свои пулреквесты пропихнуть, ну или форк сделай. Собирай друзяшек и пишите какое-нибудь приложение, которое решает какую-нибудь конкретную проблему. Вот тебе и практика.
624 2902746
>>902701
То есть можно годик себе нарисовать, если ты программировал на опенсурсе?
625 2902951
>>902746
ты главное избавься от синдрома самозванца
и сможешь ногой двери открывать и херочек шокировать, они млеять будут.
image.png37 Кб, 1192x393
626 2902974
Хм.
У меня идея.
В общем. Я вот что придумал. Приложение, которое должно обеспечивать квази-стабильный канал связи между девайсами.
Суть в чем.
Есть прокси-сервер.
Есть клиент.
Клиент и этот прокси-сервер по своему протоколу общаются.
Есть устройство. Оно шлет свои пакеты через клиента. Клиент - запаковывает в специальный пакет и отдает серверу. Сервер, накапливает пакеты - отдает другим клиентам, которые ждут посылки. Клиент на той стороне - получив от сервера - если физически связь есть - отправляет внутреннюю часть устройству которое подключено к клиенту, если нет - сохраняет до следующего сеанса связи и потом отдает устройству, после того как связь будет установлена.

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

Ну. И у меня вопросы.
1. Насколько тупой идеей будет делать это на шарпе?
2. Насколько сама по себе идея тупая?
Просто ИРЛ - я могу представить, когда это надо, допустим какие-то датчики на солнечных батареях, они раз в сутки - могут выйти на связь, пару минут пожить и обратно отрубиться, но было бы хорошо, чтобы им дошло сообщение которое вчера еще отправили, и они данные - так же отправили куда надо, чтобы сервер с этих датчиков данные схоронил.
Но ебаться просто ради себя и проверки концепции - как-то не оч хочется.
627 2902991
>>902746

>То есть можно годик себе нарисовать, если ты программировал на опенсурсе?


Если ты сможешь пояснить, что ты там делал, какие задачи решал, с какими проблемами столкнулся и как их затащил. Тогда да. Возьми например какой-нибудь ASP.NET проект на .NetCore 2.1 c EF и переведи его на .Net6/7 - ты в процессе как раз сможешь и опыта набрать и на кучу подводных наткнуться, так что сможешь толково рассказать и пояснить.
Правда выдать это именно за "коммерческий" опыт ты вряд ли сможешь если у тебя его действительно не было, но можно на удаче съехать на то, что делал это в команде на каком-нибудь аутсорсе или по заказу. Главное про фриланс не упоминай, во многих конторах это как стоп-слово при рассмотрении резюме.
628 2902998
>>902974
А чем это отличается от любого брокера сообщений?
629 2903045
>>902998
Ну. Тему что для устройства это должно выглядеть, будто оно просто в свой сетевой интерфейс что-то отправило, что-то получило из него. Знать ни про какие брокеры-очереди не знает.
16447762371262.mp47,9 Мб, mp4,
1280x720, 0:14
630 2903192
>>902974
Слушай, ну, в принципе прикольно. Надеюсь, сделаешь.
С дивана дам совет небольшой. На случай, когда сообщение большое, то посылай его кусками. То есть реализуй потоковую загрузку от клиента серверу(когда ты 50 мбайт файл или сообщение режешь кусками по 1 кбайту). И будет как бы гуд найс, вэри найс.
631 2903194
>>902991
Разве пруфов не будут требовать? Название организации, должность, документы какие-нибудь? Раз организация существует, то также попробуют с ними связаться, там тебя попробуют поймать на вранье. А если не существует, то и пошлют тебя куда подальше. Звучит так, будто это такая же попытка пиздежа на софт-скиллычах нарисовать себе года, только с учётом участия на опенсурсе.
632 2903375
>>903194

>Разве пруфов не будут требовать?


Пруфов чего? Выполненной работы? Ну так покажешь им репозитории со своими наработками. Можешь где-нибудь прикупить дешевую vps-ку и развернуть свой сервис там в открытом доступе. Заодно деплою научишься.
>>903194

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


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

>Раз организация существует, то также попробуют с ними связаться, там тебя попробуют поймать на вранье.


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

Ну и опять же поинт был не в том, чтобы совсем напиздеть о не существующем опыте, а в том, чтобы заиметь реальный опыт хоть каким-то образом. Если у тебя нет возможности пройти практику во время учебы от ВУЗа, то находишь её сам. Один из способов я тебе показал, взять попенсорсный проект и улучшить/переделать его. Ты заимеешь тот самый опыт, у тебя будет результат который можно предъявить и ты можешь слегка приукрасить, что делал его не просто для себя, а с какой-то целью (возможно даже коммерческой). Может у тебя друган или девушка какой-то общественной нагрузкой занимается и попросила замутить портал с каким-нибудь функционалом вроде бронирования или электронной очереди, я х.з. сам придумай. Прояви фантазию короче.
632 2903375
>>903194

>Разве пруфов не будут требовать?


Пруфов чего? Выполненной работы? Ну так покажешь им репозитории со своими наработками. Можешь где-нибудь прикупить дешевую vps-ку и развернуть свой сервис там в открытом доступе. Заодно деплою научишься.
>>903194

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


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

>Раз организация существует, то также попробуют с ними связаться, там тебя попробуют поймать на вранье.


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

Ну и опять же поинт был не в том, чтобы совсем напиздеть о не существующем опыте, а в том, чтобы заиметь реальный опыт хоть каким-то образом. Если у тебя нет возможности пройти практику во время учебы от ВУЗа, то находишь её сам. Один из способов я тебе показал, взять попенсорсный проект и улучшить/переделать его. Ты заимеешь тот самый опыт, у тебя будет результат который можно предъявить и ты можешь слегка приукрасить, что делал его не просто для себя, а с какой-то целью (возможно даже коммерческой). Может у тебя друган или девушка какой-то общественной нагрузкой занимается и попросила замутить портал с каким-нибудь функционалом вроде бронирования или электронной очереди, я х.з. сам придумай. Прояви фантазию короче.
633 2903530
>>903375
Спасибо за информацию, но все равно кажется, что с учётом огромной конкуренции среди джунов их будут проверять на пиздеж. Хотя я конечно могу многие отговорки придумать, но у меня вариантов то других и нет.
634 2903630
Почему HttpListener так странно спроектирован, что нужно перебирать ожидания запросов вызовом BeginGetContext, а если придет другой запрос пока обрабатываешь первый?
Обычно же просто подписываешься на события и всё.
635 2903634
я так понимаю новичкам в тред лучше не соваться с вопросами?
636 2903638
>>903530

>их будут проверять на пиздеж


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

Да тебя будет в большинстве случаев проверять СБ, но их больше интересует насколько ты чист перед законом, свободен от долгов, у тебя нет крупных финансовых проебов и совсем уж явных публичных косяков на предыдущих местах работы (т.е. таких инфа о которых выходит за пределы конторы). Тебе больше стоит беспокоится о том, что тебя не возьмут из-за того, что у тебя паспорт или военник неправильно оформлены или кто-нибудь из близких родственников банкрот или лудоман.
637 2903640
>>903634
Да тут одни долбоёбы сидят, очень редко что либо путное ответят.
638 2903642
>>903634
Почему, если ты можешь нормально сформулировать вопрос и ответ на него не выскакивает на первой странице выдачи поисковика, то вполне можешь спрашивать.
639 2903845
>>903630
так он же древний как говно мамонта. Тогда не было всяких там асинков

>Обычно же просто подписываешься на события и всё.


а какая разница если по существу.
К тому же эти BeginХХХ имеют асинхронную семантику по природе, а события нет.
640 2903906
>>903845
А что из простого юзать? Мне надо (для тестов) просто сохранять все запросы http и ничего не пропустить, заморачиваться с мощными фреймворками вроде asp.net не охота.

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



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

Я дажне не события в смысле event в C# имел ввиду, а типа подписки но что бы гарантированно было оповещение при каждом запросе.
641 2903978
>>903906

>пока не вызовешь EndGetContext другие запросы не принимаются.


Ты че там за код пишешь
В этом и есть смысл асинхронности "принимать запросы пока первый обрабатывается"

Из простого листенера хватит
Просто всё руками разгребать же
642 2904018
>>903978
Я пока на примеры кода HttpListener смотрю, там надо самому прокачивать цикл приёма данных, т.е. пришел асинхронный запрос, ты его обрабатываешь, потом сам должен повторно вызвать ожидание следующего запроса. В этот промежуток пока ты разгребал если другой запрос придет ты его не увидишь как я понял.
Нормальная асинхронность это когда записываешь свой коллбэк и он уже вызывается на каждый запрос, пусть даже с наложениями.
643 2904071
>>904018
Везде нужно прокачивать. Где то явно, где то под капотом
Весь мир построен на очередях. (кроме драйвера sqlite в дотнет, ну они рукожопы).
Так что ничего ты не потеряешь. Просто не задерживай прокачку очереди.

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


Какой еще потом.
Получил завпрос, поставил его в обработку, получаешь следующий, а первый продолжает обрабатываться
644 2904312
>>904018

>кроме драйвера sqlite в дотнет, ну они рукожопы


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

>А что из простого юзать?


> просто сохранять все запросы 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();

}

}
645 2904639
>>903906

>А что из простого юзать?


> просто сохранять все запросы 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();

}

}
646 2904693
Псссс дебилам в рот.
647 2904816
>>903906

>заморачиваться с мощными фреймворками вроде asp.net не охота.


Зато сидеть велосипед городить решая кучу уже решенных проблем - охота. Пиздец как продуктивно.
648 2905081
>>904816
асп.нет так то жрет как....
для ценителей минимальности использования памяти это глазик такой дёрг
649 2905296
>>905081
Ну. Справедливости ради. Жрет оно дофига, если ты просто используешь дефолтную конфигурацию.
Если чуть посидеть, подзаебаться, оставить только нужное(дефолтный HTTP-хендлер и пару нужных для тестов мидлваров), то там будет все оч скромно.
650 2905342
>>905296
не будет. он наделает кешей на все случаи жизни, а они нафиг не нужны.
651 2905995
Смотрите.
У нас на проекте я протолкнул идею - использовать MD+Mkdocs для того чтобы вести дев-документацию, потому что бегать по свагерам и смотреть че там у кого с апишками - задолбало. Плюс, всякие сервисы вообще свагера не имеют, а через год - вспомнить, че они там делают и зачем нужны - бывает сложновато.
Все вроде были довольны.
Настолько довольны, что решили, что теперь мы и пользовательскую документацию так же вести будем. И в приложении появилось /help который то что Mkdocs генерировал отдавал. Круто. Удобно, легко поддерживать, легко развертывать, еще и гит для доков работает. Отлично корче.
И все было заебись. Пока внезапно кто-то из менеджеров не сказал, что надо PDF'ную версию делать, чтобы на странице с продуктом - можно было загрузить эту PDF'ку.

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

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

Да. У Mkdocs - есть плагин, чтобы выгрузить PDF, но он какой-то слишком замудреный и кривоватый, надо лезть в него и руками допиливать, чтобы как надо сделал и вообще.
169909353624620488.jpg210 Кб, 2445x1277
652 2906009
Почему так?
653 2906013
>>906009
Что это вообще?
Если это сравнение перформанса, то непонятно, каким фигом С - не в топе. С - буквально ассемблер для людей. А значит в принципе не может быть кейса, в котором хорошо написанный на С код будет медленнее чего угодно.
А тут - если судить, что меньше-лучше, выходит каким-то хуем жава впереди. Это в принципе невозможно ну никак. Так что отвечая на вопрос - потому что сравнение некорректно.
654 2906017
>>906009

>жава вторая


Чел...
655 2906042
>>906013
>>906017
Потоком копиупа удовлетворён!
656 2906045
Срочно ебальник отсосавших скриптопараше жопаскрипту к осмотру!
657 2906048
>>906042
Так реально.
Объясни, каким образом нативный код - может в принципе быть медленнее байткода, который жавамашина переводит в рантайме в машинный?
Понятно, что жит - может лишние проверки убрать, чет переставить, чтобы пооптимальнее было. Но это все еще будет байткод, который в рантайме в машинный переводится. Он в принципе не может быть быстрее ОПТИМАЛЬНОГО кода, написанного нативно.
658 2906053
>>906045
Жопаскрит - сейчас литерли фронтенд для плюсов. С хуя он должен-то быть медленнее шарпов?
659 2906055
>>906053
Ты это не у меня спрашивай, а у индусов из копрософта, как они умудрились отсосать жопаскрипту.
660 2906062
>>906048
Да, будет байткод. Очень сложный и запутанный байткод (чего стоит один только инвокдинамик), который своей сложностью ставит крест на реализацию точной копии этого на сишке (то, что решается на джаве в две строки придётся там расписывать по каждой инструкции на несколько страниц). Именно поэтому раст и обошёл джаву, потому что в нём также происходит раскрытие короткого высокоуровнего кода в пиздец, но быстрый пиздец, но не в рантайме, как у джавы, а в компайл-тайме.
661 2906138
>>906009
Ох уж эти сравнения теплого с мягким
662 2906148
Че за сравнения хоть... Дайте ссылку, бля...
663 2906183
>>906138

>врёти!

664 2906186
>>906183
для меня велосипед и электросамокат одинаково плавают )
но правда ли это сравнимые вещи....
665 2906191
>>906186

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


>ррррряя, низя сравнивать!!! и вообще 132 миллисекунды нормально, ваши 5 мс нинужны!

666 2906193
>>906186
Причём тут электросамокаты и велосипеды, ебанько? Тебя совсем от осознания того, что петушарп в 26 раз медленнен джавы переклинило?
667 2906203
>>906191
Чел, на каждую из задач, в которой дотнет сосет у джавы, найдется 10 задач, в которой джава сосет у дотнета...
668 2906204
>>906193
при том сравниваются разные вещи
я не ебу что это сравнение и даже гуглить не буду
Но знаю что при прочих равных жава сожрет больше памяти и я охуею от того как много она жрет
и да - мне придется сидеть и тюнить jvm и быть мастером в этом.

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

и да - ведь как бы скала и котлин тоже jvm - а чего ж они так, выходит жава рантайм говно что ли? Ну все понели, а кто не понел - ну пусть жрет говно.
669 2906209
>>906203

>Чел, на каждую из задач, в которой дотнет сосет у джавы, найдется 10 задач, в которой джава сосет у дотнета...


>яскозал!


)))))))))
670 2906216
>>906209
Одно конкретно сражение уже ничего не значит. Вы проиграли войну. Смирись, чел...
671 2906217
>>906204

>при том сравниваются разные вещи


>я не ебу что это сравнение и даже гуглить не буду


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


>и да - мне придется сидеть и тюнить jvm и быть мастером в этом.


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


>яскозал!


)

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


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

Только вот даже если бы не было адекватного объяснения медленности скалы и петухлина, то это бы не отменяло 5 мс в джаве и урину на ебальник обоссаного шарпопетуха с 132 мс. Это бы просто ставило интересный вопрос, как так удалось испортить производительность. Спорить с этим тестом это как если бы Ньютон после падения ему яблока на бошку заявил "а хули бог мою бошку не защитил? Должен был защитить! Значит яблоко не упало! Шах и мат, аметисты!".
672 2906218
>>906216

>Одно конкретно сражение уже ничего не значит. Вы проиграли войну. Смирись, чел...


>яскозал!


)
673 2906221
>>906218
Чел...
674 2906222
>>906221
Что-то по делу высрешь, или твой петушарп ещё не успел обработать попадание урины на твой ебальник?
675 2906224
>>906222
А говорят, что программисты умные люди...
676 2906225
>>906224
Слив принят, 132-мсный.
677 2906236
Что это обоссаный замолчал?
678 2906249
>>906217
ты несешь какой то неадекватный бред.
679 2906278
>>906249
Скулежом шарпопсины удовлетворён.
680 2906296
>>906278
просто тут у нас пациент из психбольницы сбежал
отличается особыми признаками
- труслив (поэтому притащил не ссылку, а картирнку, да такую что видео не нагуглишь), ведь иначе ему полон рот напихают
- жрет говно (не жаваговно, а просто говно, просто говноед)
- агрессивное
- тупое

ничего, его в конце концов поймают - и в дурку
681 2906307
>>906296
Вот видео, только не скули так.

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

Вы нахуя кормите это животное?
686 2906400
>>906348
Додик, всё там есть, описание открой и запускай сам, сколько влезет, пока на заебёт плакать от 132 мс.
687 2906403
>>906399
Коупингом обоссанного удовлетворён.
688 2906417
>>906400
Что запускать то ебанат? Где указаны входные данные? Где шарповый проект с BenchmarkDotNet, который замеряет реальную производительность, а не колд паф с компиляцией jitом

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

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

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

>>906426
ну так ПОКАЖИ ГОВНОЕД тестовый набор и как измерялся бенч.
691 2906431
>>906428
Писался код и засовывался в форму литкода.
692 2906433
>>906396
Ну. Ок. Если для тебя сложно - валидный аргумент.
Вот мне - было сложно вспомнить, как там у вас в жаве - словарь называется, чтобы мемоизацию делать.

Давай померяем и сравним код, который одну и ту же задачу решает, и удивимся, насколько же жава медленнее чем шарпы.
693 2906434
>>906431
шта?
694 2906435
>>906433
Сравнивай.
695 2906436
>>906434

>Ебать долбоёб дурачка включил.

696 2906439
>>906426
Я понимаю, что джавадебилу это тяжело осознать. Но производительность решений не замеряется циферками с сайта. Джавадебил, неужели у вас в джавапараше нет культуры бенчмаркинга? Ну это в целом объясняет ее тормознутость
697 2906441
>>906439
Пынямаю, литкод шарпоблядям в штаны насрал.
698 2906448
>>906435
На жаве реально настолько отбитые пишут, что даже не в состоянии по коду понять, что за пиздец со временем произойдет в случае с жавой?
699 2906450
>>906448
Так ты сравнишь или убежишь в харчках, будучи неспособным предоставить то, о чём сам заикнулся?
700 2906456
>>906436
я пройду мимо долбоеба который уверяет что поиск в массиве из нескольких элементов займет 117мс.
или 141мс на питоне

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

но мне влом разгребать это дерьмо, поэтому нафиг не нужно.
701 2906460
>>906441
Вытри рот от говна, джавадебил, и возвращайся с тестами, в которых указаны входные данные и предоставлены два проекта с бенчами на джаве и шарпе. Но лучше не надо, ведь мы оба знаем, что во всех кейсах жаба соснет. Как здесь https://github.com/jinyus/related_post_gen например. Джавадебил, а зачем ты в бессильной злобе срешь в тред? Просто переходи шарп и становись успешным и счастливым.
702 2906467
>>906456

>бох ни защитил, значит яблоко на бошку не падало!


То есть по делу ничего не высрешь? Это печально.
703 2906469
>>906460
А тут ещё и просто стопвочом замеряют, то есть если норм замерить оно на уровне плюсов будет.
704 2906481
>>906460
Да я понял уже, литкод, крупнейшая площадка для хуемерства наносекундами, насрал в штаны шарпоблядям. Ты штаны-то постирай, а то воняет.
705 2906486
>>906450
Какой-же ты тупой. Пиздец просто.
Первый скрин - время в милисекундах жавы
Второй - сярпа

Вывод шарп в 1808 быстрее жавы.
Можно закрывать дискуссию.
706 2906492
>>906486
Я тоже так умею.

Java
Hui(50) = 89999
Elapsed time: 4

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

Ты может хотя-бы код покажешь, или будешь дальше жаловаться на то, что тебе в штаны насрали?
707 2906496
>>906492
Чел. Код на скринах выше. Не тупи.
708 2906497
>>906496
Где? В твоих фантазиях?
709 2906502
Ок. Я понимаю, что по ссылка жава-гений посмотреть не в состоянии. Еще раз
710 2906510
>>906502
Ты че, даун? Нахуй ты сравнил рекурсивный подход с динамическим программированием?
711 2906515
>>906510

> На сях сложно писать нормально


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


> Давай


> Держи


> Нахуя ты так сделал


У жаводебилов стек такой маленький, что они не помнят что было буквально 20 минут назад?
712 2906519
>>906502
ну так то ты сравнил прямой подход с подходом с мемоизацией
что не очень честно

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

>>906519
Я просто показал, как хуево звучит тезис про то что чет там сложно делать, если мы хотим сравнить перформанс языков. Типа блин, на ассемблере - тоже можно написать крайне хуево, настолько, что нормальный код на питоне будет быстрее. Только это говорит не о языке, а о проблемах с навыками программиста, который этот код выдал.
715 2906544
>>906540

>ассемблер или шарп


Запизделся
Ассемблер или си
716 2906547
>>906307
Линк с 7 дотнета тоже умеет в векторизацию, как и жава. Так что цифры, при равных условиях, были бы сопоставимые. Ты обосрался, чел...
717 2906548
>>906540
Повтори это в четвёртый раз, и тогда, это, наверное, станет правдой, идиот.
718 2906552
>>906547

>бох бошку не защитил, значит яблоко не падало!


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

>сколько угодно теоретических пруфов


важнофикс
720 2906560
Ладно, потыкаем немного палочкой в джавадебила. Вот кейс https://leetcode.com/problems/maximum-count-of-positive-integer-and-negative-integer/ с которым эта дура прибежала.

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

Берем первый кейс и писаем на джавадебила. Вот такая вот вечерняя разминка шарпочане. Можно шлифануть SIMD'ом, хотя скорее всего жит это сам сделал на 8 дотнете.
721 2906562
>>906560
И сново шарподаун доказывает, что ему яблоко на бошку не падало. Необучаемая порода.
722 2906564
>>906552
Ты и сам видосом с ютуба перемогаешь вместо реальных тестов, чел.

Я свою гипотезу озвучил: в csproj сборки тестов с ютуба стоит максимум 6 дотнет. Переключи на 7 и получишь прирост производительности того же самого кода. Магия SIMD.
723 2906565
>>906540

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


Мне это пояснять не нужно
я всегда смотрю не скорость, а на баланс "удобство/скорость"
Тот же LINQ никогда скоростью не отличался (и это известный факт) ибо упор в нем на удобство и сильно напирает на абстракцию IEnumerable.

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

А я смотрю на него и думаю....да что я могу думать про дурачка который кроме жавы в глаза ничего не видел
724 2906566
>>906564
Ну так а хули ты не переключил? Код есть, задача есть (вот выше кинули). Боишься, что не сработает?
725 2906567
>>906565

>нинужно


)
726 2906571
>>906566
Только если ты мне за это бабок заплатишь, чел...
727 2906573
>>906571
Слив принят, 132-миллисекундный.
728 2906575
>>906573
Чел...
729 2906576
>>906575
Не ворочайся, слитое.
730 2906582
>>906567
смешно слышать это тот жависта
у которого в жаве лямбды и И ПОДОБИЕ linq ввели чере хуеву тучу лет, а до этого эти дебилы орали "нинужна,энтерпрайз"

долбоебы-с
731 2906583
>>906582
Пошли аргументы ад хоминум. Ещё бы "мамка твая)))" сказал. Пиздец школиё...
732 2906592
>>906583
просто это факт
у меня есть знакомые такие как долбоебы и вечно жава жава
а я спрашивал "а хули у вас нет этого и того"
знаешь что мне орали в ответ? "НИНУЖНА, энтерпрайз, обратная совместимость"

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

ты сколько языков то изучал неуч. мне просто интересно
понятно что не все такие как я, что могут похвастаться больше десятка, но хотя бы 3 можешь озвучить?
733 2906593
Сегодня вечер закидывания жависта говном. Забавно ))))
734 2906596
>>906592
Он похоже даже не понял, к чему претензия была. Шарподаун, что взять.
735 2906598
>>906593

>Сегодня вечер закидывания жависта говном. Забавно ))))


— раздался возглас после 132-миллисекундного ожидания.
736 2906599
>>906596
ясно. вместо ответа слился. ничего от обосратыша и не ожидалось.
ну пусть тред уходит в бамп лимит

а жавист погружается дальше в говно, откуда он и не вылезал
737 2906603
>>906599
Какой ответ ты ждёшь на ад хоминум высер? Ты еблан? Это тебе нужно ответить на >>906567 что-то посерьёзнее.
738 2906618
>>906603
последний раз говорю
без нормального кода бенчмаркинга и набора данных можешь идти жрать говно дальше
у меня код выпоняется за наносекунды
те кто нашел там 112 мс пусть просто идут изучать матчасть.

а ты ...иди жрать говно
739 2906625
>>906618
Опять литкод в штаны шарпоблядям насрал! Да что ж такое-то! Самое главное джавистам не насрал, педалистам не насрал, растоблядям не насрал, даже жопаскриптерам не насрал, а шарпоблядям насрал!
image.png51 Кб, 432x649
740 2906774
Насколько тупым выглядит решение - все в одну таблицу с разными типами полей под разные сущности засунуть?
Типа прикриплейда.

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

Конечно, можно сделать более изъебисто:
Node, NodeType, NodeTypeAttrubute, NodeAttribute и вот так вот того же добиться. И вроде как правильнее будет. Но надо ли?
741 2906779
>>906625
нет. это жавадебич без внятных пруфов говна поел
все посмотрели вокруг, посмеялись и разошлись )
742 2906782
>>906779

>нет. это жавадебич без внятных пруфов говна поел


>все посмотрели вокруг, посмеялись и разошлись )


— раздался возглас после 132-миллисекундного ожидания.
image.png35 Кб, 957x901
743 2906789
»2906625
Ебанат, ты программировал последний раз в дурке? Из которой ты нам и пишешь

Какие миллисекунды для массива из 6 элементов, джавадебил? Твой литкод несёт хуйню и срет тебе в штаны, маня. Бэк литкода, который эти тесты гоняет, писала такая же обезьяна как и ты.
744 2906792
>>906782
ожидания ЧЕГО дебил
ты так и не привел факты чего ожидания

у меня код выполняется ЗА НАНОСЕКУНДУ
image.png70 Кб, 413x643
745 2906833
Ладно. Раз джаву интереснее обсуждать. Решил таки изъебистым путем идти.
Но вот че мне не нравится. Индексы по такой таблице будут фиговые, потому что куча значений - Null будут.
746 2906860
>>906833
Уперделся с кучи get; set;. На божественной джаве это один @Data на весь класс.
747 2906863
>>906792
Выполнения кода, очевидно.
748 2906866
>>906789
Срёт литкод в штаны мне, а 132 миллисекунды имеет петушарп. Весело.
749 2906876
>>906860
Та я бы мог просто рекорд сделать. Было бы
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);

Просто не помню, еф уже научился с рекордами работать чи нет.
749 2906876
>>906860
Та я бы мог просто рекорд сделать. Было бы
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);

Просто не помню, еф уже научился с рекордами работать чи нет.
750 2906882
>>906876

>еф научился с рекордами работать или нет


Вся суть петушарпа. На джаве когда добавили рекорды сделали так, чтобы они превращались в обычные классы при конпеляции, и что угодно будет работать с рекордами.
751 2906886
>>906882
Они и так - и есть по сути обычный класс, просто с небольшыми фичами.
Просто ЕФ - идет как отдельный продукт, который своей жизнью живет.
752 2906901
>>906886
Если что-то его не поддерживает, значит нихуя не обычный класс. Разве что этот еф это альтернативный компилятор.
753 2906918
>>906863
у меня он на машине 16 (ей уже 7 лет епта) года проходит за НАНОсекунду

так что поешь говна, жавоед
754 2906920
>>906901
Просто ЕФ - хочет гарантировать, что у тебя только один объект на контекст с тем же ключом существует.
Рекорды - иммутабельны, потому, если ты используешь with - получаешь новый объект. В результате - ЕФу это не нравится по умолчанию.
Они конечно могут либо забить на один объект на контекст, но тогда непонятно, что трекать, если человек все еще хочет чтобы изменения трекались.
755 2906986
В чём вообще профит EF? Даппер плюс хранимки во всём лучше.
756 2906994
>>906986
В удобстве миграций.
В трекинге изменений.
В том, что у тебя не будет копий одного и того же объекта, если ты явно не захочешь этого.
В том что не нужно писать кучу СКУЛЯ для тривиальных вещей на каждый чих.
В том, что ты можешь тестировать код, без необходимости разворачивать под это дело реальную БД(тут с оговораками, но все равно)
Сверху - тулзы для отладки, вшитые в студию. Тулзы для тестов.

Короче. Много всяких приколюх.
757 2907005
>>906918
"Он"? И сейчас ты мне выложил пруфы, что ты запустил то же, что запускает литкод.
758 2907006
>>906986

>хранимки


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

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

image.png98 Кб, 664x768
760 2907043
А еще вопрос. А то вы так часто отвечаете мне, что аж приятно.
Почему вот так никто не делает? Ну, вернее я что-то не видел, чтобы вот так вот делали особо, а если кто-то так делает, то его на хабре ругают.
Какие подводные камни-то, если надо админук, под разные сущности намутить, тупо с отображением таблицы и базовыми круд-операциями?
761 2907063
>>906994
>>907006
Ну мне просто очень интересно. Вот у меня опердень. В опердени есть проводки - это такие жирнющие транзакции в несколько тысяч строк кода с вызовом кучи хранимок и вручную расставленными хинтами блокировок в каждой строке. Как вы это в EF делаете? Без хинтов блокировок будет ОЧЕ МЕДЛЕННО и миллиарды дедлоков. Или EF прямо хорошо хинты сам расставляет? Это была бы технология круче чатгопоты. А ещё в этих хранимках очень много временных таблиц, мне их разумеется нельзя в память приложения забирать, клиент 100% обосрётся. На этих таблицах временных индексы часто висят, в целом типичная проводка вначале строит 5-6 временных таблиц, а потом начинает писить и какоть направо-налево в персистентные таблицы джойня их с времянками. Как такое сделать? Грузить в память такое это прямо суицид. Кроме того хотелось бы как-то реюзать код, например у меня уже есть какой-то кусок кода, который у меня будет воспроизводиться в хуевой туче похожих хранимок. Насколько я понимаю если я его в шарпе напишу, то я же опять залечу в память клиента?
762 2907100
Жaбадeбилы смачно соснули с проглотом.
.png12 Кб, 472x134
763 2907135
>>907043
Хм. ХМ...
В общем. Все еще кажется, что норамльно же решение, для тривиальных операций.
Потом - просто наследуемся и радуемся.
764 2907231
>>907100

>Жaбадeбилы смачно соснули с проглотом.


— раздался возглас после 132-миллисекундного ожидания.
765 2907448
Каково это вам понимать, что все ваши вскукареки про скорость петушарпа были жалким пиздежом, а джава оказалась быстрейшим языком на планете, после раста?
766 2907491
>>907231
у нас все выполняется мгновенно, а руками из жопы если скорость измерять, то и не такое будет
767 2907506
>>907448
За шарп лучше платят.
768 2907543
>>907491
Почему литкод измерил "руками из жопы" именно петушарп?
769 2907544
>>907506
Тебе никто не платит, лул. Ты бесплатная псина.
770 2907589
в общем напихиваю говна в харю жависту от души
не поленился сделал бенчи (хотя я с жавой не работаю и как там бенчить пришлось гуглить)
причем код измеряемого метода взял из леткода
данные с потолка, но идентичны + некоторая защита от jit (который может вывести что массив не меняется и тупо захардкодить результат)

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

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

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

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

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

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

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

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

Как я уже говорил - сравнение теплого с мягким.
771 2907596
>>907589
ДЖАВА ВЫЕБАЛА ПЕТУШАРП НЕ НА ШИШКУ, А ВСЕГО НА ПОЛШИШЕЧКИ!!! ПЕРЕМОГА!!!!!!!
772 2907600
>>907589

>НЕ ОЧЕНЬ-ТО И ХОТЕЛИ!

773 2907601
>>907596
все проще. в жава используется очевидное читерство, а говноед радуется )
и даже с читерством никаких "в 20 раз"

А ты жри жри говно, не отвлекайся. Тебя обосрали с пруфами.
169919038810383365.jpg60 Кб, 900x900
774 2907602
>>907601

>НИЧЕСТНА!

775 2907608
Когда вак бан джаве?
776 2907610
Сука, я уже минут 10 ржу с этого ебаната, который на читы у джавы пожаловался.
777 2907659
>>907610
ну если ты долбоеб то ты и с пальца смеешься. С обосранного пальца, который ты сосешь.

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

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

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

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

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

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

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

Жава же наплодила разных IntStream, DoubleStream принимающих массивы, что тоже разумно создавать оптимизированные версии чего либо, но у них свой путь - в жаве нет структур и жопа с женериками, потому у них всякие IntStream вместо Stream<int>
778 2907665
>>907659
вернее это не жава читерит
это ребята с леткоде зачитерили выбрав что они там выбрали Arrays.stream

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

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

ну да, ребятам из мс нужно бы написать кучу узкозаточенных LINQ методов чтобы выбирался оптимизированный, а не IEnumerable. Может когда нибудь и напишу им иссуйку.
779 2907674
>>907659
Написал бы в императивном стиле, с обычным for, со статикой - оно бы еще быстрее было. А если бы еще развернул цикл... Ну да ладно.
780 2907693
>>907659

>LINQ Expressions


Опиши в чем фича. Я прост на шарпе пишу и все хуею с решений. То у них в nested классах this нету, то null можно пропихнуть, если знак восклицания поставить. Делегаты в пайплайны не сделать нормально. Похоже я вообще не выкупаю ваш яп.
781 2907694
>>907674
Я просто сделал честно
жава работает с int[]
и пусть шарп будет в тех же условиях (с оптимизациями пусть компилятор играется)

в этих равных условиях шарп победил. Мне этого достаточно и разрывом жопы жависта (хоть он этого не показывает) я вполне удовлетворен.
782 2907707
>>907659
В шарпе, в принципе, можно не делать специальной реализации под каждый тип. Благодаря нормальным дженерикам int Count<TItem>(this TItem[] arr, Func<TItem, bool>() будет работать так же быстро, как и версия, написанная под массив конкретного типа.

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

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

Ну а дальше ты с ним можешь что то делать - сгенерить SQL например, вытянуть нужные тебе метаданные
Если позволяет навык то менять и делать свои.
Да и просто создавать методы на лету работая с понятным API, а не пердолясь в IL (что сложно ибо там работает стековая модель выполнения и мозг там вообще поплывет).
784 2907713
>>907589

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


Нет, там есть оптимизация для классов, реализующих ICollection
785 2907717
>>907707
>>907713
и тем не менее, у меня 7 дотнет и, сам видишь, ничего оно само не нашло и не выбрало и не оптимизировало (хотя буду честным я не смотрел куда оно там шло под капотом, я смотрел на бенч и он хреновый - а судя по тому что цифры дефолтной реализации и моей с IEnumerable<int> примерно равны, то делаю вывод что так оно и работало.)

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

>оптимизация ... реализующих ICollection


небось это знание Count и не более.
786 2907719
>>907713
Есть. Но опять же, ICollection тоже абстракция. С ней все так же никак не избежать виртуальных вызовов, которые катастрофически медленнее, чем прямое обращение к элементу массива по индексу.
787 2907722
>>907659
А теперь перепиши и джаву на массивы и охуей от жизни.
788 2907724
>>907722

>на массивы


На for вместо стримов*
789 2907727
>>907717

>> небось это знание Count и не более.


Знание count + использование индексатора для получения элемента. Но это, опять же, все те же виртуальные вызовы.
790 2907731
Я правильно понял, что для того, чтобы получить сходную с джавой производительность надо велосипедить свой аналог комбинации filter + count (и так для комбинаций, например, map, filter, count, map, filter, findFirst и т.д.), а в джаве всё нормально работает без таких выебонов без коробки, и шарподебил называет это читерством? Я всё правильно понял?
791 2907733
Ежедневное обоссывание местного мелкобуквенного петушка.
792 2907736
>>907589

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


Сделай нормальные тесты. Че это за говно? Массив достаточно большой хуйни, с цифрами рандомными+-, цикл убери, чтобы тестрировалось именно один прогон, а не сотни. И нормально настрой шарповый тест, хули он один раз пробегает, а не сумму среднюю считает.
793 2907745
>>907722
жава уже проиграла, успокойся. Тебе нужно - ты и переписывай, я жаву трогать лишний раз не хочу.

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

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

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 |

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

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

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

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

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

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

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 |

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

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

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

мне некогда всей этой херней заниматься. я и так знаю что жава говно. Мой выбор - шарп и котлин
794 2907748
>>907745

>жава уже проиграла, успокойся.


— послышалось после 10 минутного ожидания написания шаблонного кода под нужную комбинацию операций над потоком данных
795 2907756
>>907745

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


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


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


>НИТ РАЗНИЦЫ В ПАДХОДЕ ЯСКОЗАЛ!



>и с рэндомом бенчи сами по себе идиотизм.


>Бенчи должны быть идентичными.


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

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


>яскозал!



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

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

796 2907757
>>907748
да никто этим не занимается
разница в несчастные 3 раза из за общего решения, в котором обычные виртуальные вызовы на частной задаче
Да в любом коде таких вызовов миллионы.
Ну родили для массивов в жаве конкретные реализации - ну молодцы. Где то сделали лучше и что? это никак не спасет от убожества жавы и ее рантайма.

Может и майки когда то сделают дефолтные такие для частных случаев. Ну заметит кто то что у него стало работать на пару наносекунд быстрее, а скорее всего не заметит вовсе.
797 2907759
>>907756
короче
иди нахуй жавадолбоеб.
с тобой в диалог больше вступать не буду
это как в говно вступать. нах надо.
798 2907762
>>907759
Слив принят, 132-миллисекундный. Иди дальше пиши замену всем операциям своего аналога стримов, а я буду в две строчки получать производительность в 20 раз выше.
799 2907823
>>907731
Да. Это плата за возможность лёгкого добавления новых типов последовательностей(стримов в джавовской терминологии) и операций над ними.
Достаточно просто сравнить кол-во методов, которые содержатся в джавовском интерфейсе 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 и нет ничего (кроме здравого смысла), что ограничивало бы добавление новых.
image.png28 Кб, 170x127
800 2907832
>>907762

>в две строчки получать производительность в 20 раз выше

image.png28 Кб, 170x127
801 2907834
>>907762

>в две строчки получать производительность в 20 раз выше

802 2907871
>>907823
Хуйни написал. Он быстрый над коллекциями не из-за стрима, а из-за https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html
Именно в него нахуярил в какой-то момент кучу методов. Про что говорить, в 21 все ещё добавляют. И совместимость никак не страдает.
803 2907940
>>907832
>>907834
Ебать его потрясывает.
804 2907948
>>907823
Додик, как же ты серешь. Альтернатива АйЕнумерабля в джаве это Iterable. И, внезапно, его можно легко перевести в поток данных, как твой АйГиперкомпенсируюЕнумерабля. Только в джаве, почему-то, никто не платит за это, при этом пользуясь всеми преимуществами абстракции, а в петушарпе почему-то это оправдание его тормознутости. Иди жопу мой.
805 2907956
>>907871
Ты считаешь, что если в интерфейс, который ты реализуешь, кто-то в новой версии добавит новый метод, то совместимость не пострадает? Или тебе таки придется этот метод реализовать, чтобы все на новой версии собралось? Я про это. Или в Java-мире не принято реализовывать стандартные интерфейсы, чтобы интегрировать свои классы с существующим библиотечным кодом?
А стрим-таки быстрее шарпового ienumerable за счёт того, что в его интерфейсе больше методов-операций над стримом, которые можно сделать более оптимизированными (да хоть тот же метод из Collection в них дернуть). В шарповом интерфейсе же тупо один метод, который должен возвращать итератор. Все. А в итераторе максимум, что можно оптимизировать, так это перебор элементов. Зато благодаря такой простоте интерфейса, его легче реализовывать. И операции легче добавлять. Причем, их легче добавлять не только авторам языка, но и разрабам-пользователям. Я могу спокойно написать метод-расширение, который будет работать с любой реализацией интерфейса, и легко и красиво использовать его в цепочке вызовов для стрима, улучшая читаемость кода.
806 2907958
>>907956

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


Доброе утро. В джаве так уже лет 20 делают. Дегенерат.
807 2907959
>>907823
на самом деле майкам просто влом.

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

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

>>907956
стрим быстрее только для массивов где жава знает что это массив и юзает напрямую, а шарп все равно работает через ICollection. Если же данные не массив,а последовательность то читерить не выйдет, но жавист об этом умалчивает ибо послан нахуй.
808 2907962
>>907959

>НИИИИИЕЕЕЕТ ТЫ НИ МОЖИШЬ АПТИМИЗИРОВАТЬ ПАТАМУШТО НА ПЕТУШАРПЕ ЭТА НИ АПТИМИЗИРОВАНО ЭТА ЧИТИРСТВА!!!!

809 2907964
Запоминаем.

Оптимизации, которые с лопаты скормили шарпочмоням — это оптимизации и мы с ними идём в джаватред срать.
Оптимизации, которых в нашем говне нету — это читерство и вообще а что так можно было что ли?
810 2907968
Запоминаем

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

зачем в шарпотреде вообще обсуждать говно продукт под названием жава
811 2907969
>>907968
Почему на петушарпе нельзя писать короткий и быстрый код?
812 2907974

>НИИИИИЕЕЕЕТ НЕЛЬЗЯ АБСТРАКЦИЯ ХРРЮЮЮУУУУУИИИИ НИВЕРЬЮ ВРРРЁТЕЕЕЕ!!!

813 2907976

>В СМЫСЛИ НА А ДЖАВЕ МОЖНА? ЧИТИРЫ! ПИДАРАСЫ! НИЧЕСНА ИГРАЕТЕ! МАМИ ПАЖАЛУЮСЬ!!

814 2907984
все увидели какого долбоеба к нам занесло?
А значит пусть орет в одиночку, незачем ему отвечать
815 2907990
>>907984

>далбаёп)


И это всё, на что ты способен?
.png319 Кб, 583x931
816 2908035
)))0))
817 2908082
>>908035
Мань, я на петушарпе не пишу, с петушарпом связан только через тред, на который и не жаловался. Картиночка не подходит.
818 2908091
>>908035
Боюсь спросить, что на данном изображении символизирует шарпистов...
819 2908103
>>908035
Там мухи вместо свиней должны быть
820 2908194
Ща ещё одну картинку нарисую.
821 2908208
А переката не будет? Я каждый раз по 5 минут ищу.
822 2908228
>>908208
Научить пользоваться избранным и тегами в навигаторе. Реально каждый раз скроллишь все треды что ли?
.png400 Кб, 750x550
823 2908238
824 2908311
>>908228
Но перекат всё равно нужен
Тяжеловат тред для мобильных девайсов

Скоро тем более выйдет дотнет 8
825 2908322
>>908311
Вот как выйдет - перекачу.
826 2908327
>>908228
Я с телефона через iChan, у меня навигатор как белая простыня выглядит.
827 2908543
У меня есть метод, который возвращает какой-то рандомный результат, но мне понадобилось обеспечить его воспроизводимость. Я решил эту проблему так - создал доп класс, который хранит необходимые данные для воспроизведения результата, и два метода, один принимает аргумент out с этим типом, и генерирует случайный результат, записывая в out объект нужную инфу, другой собственно принимает этот объект и на его основе выдает результат. Нормальная идея, или хуйня?
828 2908553
>>908543
Нормальная хуйня. Но я бы подумал над реализацией с участием делегатов и замыканий. Гораздо же прикольнее когда код за тебя компилятор генерит.
829 2908813
Почему на шарпе околосистемщину не пишут, те же базы данных например? На джеве Neo4j и Cassandra есть, шарп вроде как похож на джаву плюс сахарок всякий удобный есть, но ничего такого не видно
830 2908838
>>908813
Потому что 132 миллисекунды.
831 2908911
>>908813
Потому что пишут. Просто это все местячковая хуйня.
Ну и плюс - управляемый код - всегда медленнее аналогичного натива. Майки вот пытались полностью управляемую ОС нахуярить. В результате - решили, что нахуй надо.
832 2908922
Почему шарпобляди ноют на тяжёлую идею, когда у самих среда разработки весит, на минуточку, 60 гигабайт (при 600 мб у идеи)? Опять вторая теорема шарпана?
833 2908927
>>908911

>На джеве Neo4j и Cassandra есть


Джава теперь нативом стала, шарпопетух?
834 2908956
>>908927

> Neo4j и Cassandra


Медленная ненужная хуета. Че дальше?
835 2909002
>>908922

>среда разработки весит, на минуточку, 60 гигабайт


Ты ёбу дал, жабадебил?
VS Code 600MB
Android Studio 1.75GB
Это при том, что в первой можно для всего подряд код писать, а во второй только для андроида.
А теперь съеби в свой убогий тред.
836 2909026
>>908956

>нинужно


)
837 2909028
>>909026

>нужно


)
838 2909031
>>909002

>прокаченный блокнот


>по весу как полноценная IDE


)
839 2909032
>>909028
Да понял я что нинужно, шарпопсине нужно только то, что копрософт с лопаты скормил. Пынято-принято.
840 2909046
Только вот на вопрос не ответил. Почему на шарпохуите такого нет, а на джаве есть?
841 2909057
>>908956
Хуйню сказал
842 2909062
>>909057
Забей, у него всё что на джаве написано медленная и нинужная хуита, его даже разница в скорости джавы с петушарпом в 26 раз не пробила. Необучаемая порода, таких только пуля в лоб вылечит.
843 2909072
>>909046
Он же сказал, что есть. Просто это как с сусликом.
HAHAHA.mp4573 Кб, mp4,
1280x720, 0:03
844 2909073
>>907659

> джава - 67 мс, шарп - 63 мс


> джава обосралась



>>907757

> джава - 67 мс, шарп - 195 мс


> разница в несчастные 3 раза

845 2909082
>>909073

>переписал заново функцию из linq под свою конкретную задачу


>сравнил это с двумя строчками джавы, работающими из коробки


>ДЖАВА ОБОСРАЛАСЬ! А ЕЩЁ ДЖАВА ЧЕТИРИТ!


)

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



Я же говорю, его только пуля в лоб исправит.
846 2909102
Самое главное, что этот обделённый слился, когда его попросили тестировать не массив из 10 элементов, а из большего количества (как изначально было на литкоде), и что вы думаете, он слился. Потому что если протестировать не скорость invokevirtual, а скорость работы всех элементов обработчика потока данных, то полшишечки превратятся в 10 шишек.
847 2909115
>>909062

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


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

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

Я знаю, ты мне на это ответишь, что у меня бугурт, и что я порвался, потому что аргументов у тебя нет.
848 2909122
>>909046
Потому что все есть. Просто так же - нахуй никому не надо.
На шарпе, вон, был охуенный проект для работы с USB-стиками. Попенсорс, все дела. Ну, и чела просто заебало, что он пишет, китайцы - берут его код, тащат себе, закрывают, и только и делают, что срут ишью. А майкам - не уперся проект. Чела заебало за просто так делать - забил.
Была охуеннейшая Нэнси(не околосистемный уровень, но топовая хуйня), которую в эмбеддед даже некоторые тащили, за легкость и удобство. Нахуй никому не упала среди крупных игроков эта Ненси, оно и померло.
БД -так же делатся. Нахуй никому не нужны, по причинам - что это велосипед от хуй пойми кого.
Есть нанофреймворк - куда уж системнее-то? Нахуй никому не нужен, людям проще с ардуино разобраться и им пользоваться. Потому что там считай свой шарп, свой набор стандартных либ и вообще - отъедать половину памяти ПЗУ под рантайм - такое.
849 2909126
>>909115
Блинб, а я бы тебя обнял. Тяжело же вам с ним...
Он ведь завтра ещё какую хуйню найдёт и будет верещать ещё пол треда.
850 2909131
>>909115

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


Своё поведение проецируешь?

Вон выше шарпоблядун делал бенчмарки. На маленьких массивах, с разным временем прогона, неизвестно ещё, загружал ли он ПК дополнительно в момент тестирования джавы (например, сидением на сосаче), и вместе со всем этим... получил обоссывание джавой ебала петушарпа с разницей в 3 раза, и, ВНЕЗАПНО, объявил это великой перемогой, заявив, что джава слабо ебёт. Достичь уровня джавы удалось ему только через несколько часов пыженья и переписав заново (!) тестируемую функцию linq.
851 2909133
>>909031

>>прокаченный блокнот


>>по весу как полноценная IDE


>)


Десяток плагинов, и по функционалу vs code начинает превосходить ту же android studio, так что не надо тут про блокнот.
852 2909136
>>909133
Зачем же тогда нужна вс на 60-210 гигов?
853 2909138
>>909133
Ты андроид студией не пользовался нормально, потому так и говоришь, да?
854 2909139
>>909131
Ну вот видишь, уже не 26, а 3, и то, на синтетическом тесте.
855 2909143
>>909136
У меня ВС 2022 занимает 4.5 гига. 60 - это, наверное, если поставить вообще все пакеты для разработки на всех языках под все платформы.
856 2909144
>>909139
Я не понимаю, как шарподауны могут на полном серьёзе гордиться, что их выебали всего на полшишечки. Особенно когда эти полшишечки в наиудобнейших для них условиях, а требования провести нормальный тест, хотя бы на больших массивах, они игнорируют.
857 2909147
>>909143
Опять выебали всего на полшишечки! Да что ж такое-то! У джавы, наверное, импотенция, раз всю шишку вставить в нашу гордую жопу не может!
858 2909150
>>909144
Нормальный синтетический тест провести?
859 2909152
>>909150
Ну да.
860 2909155
>>909152
Ну так проведи.
861 2909157
>>909155
Слив принят.
862 2909159
>>909147
Ты какой-то странный. Когда vs code меньше весит, чем android studio, ты только выиграл, а когда vs больше, чем idea, ты опять только выиграл.
863 2909160
>>909122
Так ты может покажешь, где есть, вместо того чтобы рассказывать какие-то охуительные истории про usb и нанофреймворки?
864 2909165
>>909159
Я разве говорил что-то про перемогу андроид студии своим весом? Ты может свои фантазии при себе оставишь?
865 2909168
>>909157
А что ты от меня хочешь? Я не знаю, как производительность жабы замерять, я последний раз проект на жабе запускал под виндой 15 лет назад в универе.
866 2909170
>>909165
А это не ты был? >>909031
Сколько вас тут?
867 2909172
>>909168
Меня это не ебёт. Ты хочешь доказать, что увеличение массива ничивонидастяскозал, ты и проводи тесты, чтобы это доказать.
868 2909173
Тред не хочу читать, но вы запарили кормить обосранного и обоссаного много раз жавадебила с куском говна в руке, которое он облизывает не переставая

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

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

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

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

и хватит тред утяжелять.
869 2909178
Сори, а что такое джава? Вроде в древности эту технологию использовали для андроида, но с 2017 там котлин основной язык.
870 2909180
>>909173

>ибо тупо дали сожрать jit кусок кода


Тыскозал?
871 2909181
>>909170
Я был.

Ты читать учись. Тут претензия к функционалу блокнота, а сравение не с андроид студией, а с идеей.
872 2909182
>>909172
Это ты хочешь доказать, что там будет больше разница, вот ты и доказывай.
А я утверждаю, что это синтетическая хуйня, потому что в реальной жизни с массивами целых чисел, тем более с огромными, ни в джаве, нив шарпе работать не приходится.
873 2909185
>>909182
Я не говорю, что будет больше. Я говорю, что тест невалиден, так как в литкоде засовывались большие массивы (это прямо написано в constraits), а шарподебил тестировал на массиве в 10 элементов и даже так умудрился отсосать в 3 раза.
874 2909187
>>909181
Ну я и говорю, только выиграл. То, что у VS функционала куда больше, чем в IDEA, тебя же не смущает.
875 2909190
>>909187
И что такого в этом говне есть того, что нет в IDEA (кроме убогого дизайна из 2005, который вот-вот недавно только в бете поправили)?
876 2909207
>>909187

>VS функционала куда больше


Чел не надо. Ты совершаешь ошибку, не лезь блять на идею. Ни один обсосанный копилот и прочие поделки рядом даже не стояли с ее возможностями.
.png68 Кб, 599x659
877 2909215
>>909207
Какие нахуй возможности? Идея даже собрать проект под ант не в состоянии без пердолинга, даже если все для сборки установлено. Половину GoToDefinition не работают на древних проектах и вообще.
Для сравнения - студия, спокойно обновляет проект с 3,5 до последнего 4,8, тебе остается только то что деприкейтнуло было исправитьна более свежие аналоги.
878 2909223
>>909180
я ДОКАЗАЛ
даже такому далекому от программирования имбецилу как ты.
879 2909225
>>909215

>Идея даже собрать проект под ант не в состоянии без пердолинга, даже если все для сборки установлено.


Блядь, ты хоть сам-то понял, что высрал?

>Половину GoToDefinition не работают на древних проектах и вообще.


Всё прекрасно работает. Если у тебя что-то не работает то проблема в твоих клешнях, а не в идее.
880 2909227
>>909223
И как же ты это доказал? Сказав "яскозал!"?
881 2909229
>>909215

>Идея даже собрать проект под ант не в состоянии без пердолинга


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

>Половину GoToDefinition не работают


Ты бы хоть показал на каких не робят.

> с 3,5 до последнего 4,8,


Че?

>пик


О, наконец шарписты догадались этот сайт принести. Судя по нему, гц жабы ебет. Также как и строки.
882 2909234
>>909229

>Пользуйся мавеном, какой ант нахуй?


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

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

я понятно пояснил? вроде даже такой идиот, как ты, должен понять.
884 2909241
>>909240
Твои тесты доказали только то, что ты измерял не то же самое, что литкод. Высер про jit это твои маняфантазии. Претензии к качеству теста тоже были выше, будь добр поискать, хотя-бы в своей голове, потому что ты их уже видел, но ответил "ничивонипаминяитсяяскозал!".
885 2909244
>>909225

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


Я про свой реальный опыт использование идеи говорю.
Вот, древний проект. Начали его еще в 2003м году. В 2016м(или 18м уже не помню) ушел последний чел, что занимался. Последние версии - писались в нетбинсе. Система сборки - ant
Все что надо для сборки - есть на рабочей машине.
Возникла задача по этому проекту. Жавистов нет, но шарп же почти жава. Кто смелый - го.
Идея - просто не хочет собирать, еще и половину внешних зависимостей красным подчеркивает.
Нетбинс - хотя бы собрал.
Короче. Мой опыт - идея хрень, нетбинс - заебумба.

>>909229
Да, это я залетал. И у меня не было времени, чтобы учиться вашим мавеном пользоваться.

> Ты бы хоть показал на каких не робят


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

>>909234
Я-то знаю, что собирать можно через консольку. Только меня вот тута убеждали, что ставишь идею, и все само собой, нихуя делать не надо, все скачает и вообще - это прям пиздец какая крутая иде, житбрейнсы какие молодцы. А в результате? А в результате - хрень какая-то, еще и всратая.
886 2909249
>>909241
литкод вообще не показал что измерял
может он ковырялся пальцем в жопе и потом нюхал и оценивал степень вонючести
как знать.
887 2909254
>>909244
Для того, чтобы сказать, что виновата идея, ты должен

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

Если у тебя через консоль не собирается — виновата точно не идея (либо проект кривой, либо нетбинс как-то анально билдил так, что не понятно, как без него собрать). Если через консоль собирается, но в идею введено не всё из команды, которой собирал — виноваты твои клешни.
888 2909261
>>909249
Во-первых не отменяет ничего из сказанного мной. Во-вторых в поле constraints прямо сказано то, что ты должен был понюхать, но не понюхал.
889 2909265
>>909254
Почему я должен этой анальной эквилибристикой заниматься? Я похож на пердоликса? Я шарп-то выбрал в свое время, потому что можно из панельки инструментов было на форму кнопочки перетаскивать и получить графическое приложение с кнопочками, окошками, табличками...
890 2909270
>>909265

>Почему я должен этой анальной эквилибристикой заниматься?


Потому что ты хочешь доказать, что виновата идея. И это никакого отношения к джаве не имеет, это то, что нужно сделать для строгого доказательства.
891 2909273
Джавадебил, ты тут? Джавадебил, расскажи мне почему у твоего обоссанного литкода котлин отрабатывает за 228 миллисекунд, а у меня за 300 МИКРОСЕКУНД?

И это еще не нормальный замер через бенч либу с прогревом жита, а рабоче крестьянский. Но мне лень заморачиваться потому что система сборки и менеджмент либ в вашем джавадебильном мире это просто пиздец.
892 2909274
>>909273
Может потому что ты опять не то же самое измеряешь, что измерял литкод?
893 2909277
>>909270
Ну а кто тогда виноват, если эксперимент буквально:
Беру и вытягиваю проект из SVN в папочку. Открываю идеей, она говорит - заебумба, я все поняла, сейчас скачаю это-это-это, пожди. Жду. Чет качает. Потом - все красное и не собирается.
Беру и вытягиваю заново проект в другую папочку. Открываю нетбинсом. Он чет думает какое-то время. Потом - все работает.
По мне не надо плодить сущности.
894 2909284
>>909277
Нет, это не говорит, что виновата идея.

Один из вариантов, почему может быть так:

>либо нетбинс как-то анально билдил так, что не понятно, как без него собрать



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

Чтобы доказать, что эти варианты невозможны, ты должен провести тест с консолью и показать ввод всех настроек от туда в идею.
image.png7 Кб, 366x162
895 2909286
>>909274
Долбоебина, у меня в массиве 2000 упорядоченных чисел, с границами от -2000 до 2000. Это то что пихает в методы твой обоссаный литкод и твой обоссанный дурачок с ютуба с которым ты прибежал.

Я тебя, обезьяна, еще раз спрашиваю, какие могут быть МИЛЛИСЕКУНДЫ на таком объеме?
896 2909289
>>909284
Ааааа. Сложна. Мне проще думать, что идея - кривая, а нетбинс- заебумба.
897 2909293
>>909286
Подожди, и че типа в отсоритрованных числах нужно максимум найти?
898 2909295
>>909286
Значит что-то другое различается, мань. Например, массив там не один, а 1000 разных, и это запускается 1000 раз.
899 2909308
>>909293
Нет, там надо вернуть максимум из числа положительных или отрицательных

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

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

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

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

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

это пиздец, индустрии пиздец
900 2909319
Джавадебил, подожди не уходи. Смотри, джавадебил, наивный плюсовый код работает за 1.5 микросекунды.

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

Сук насколько же это смешная хуйня...
901 2909321
>>909308
>>909319

>Я уже второй день ору


>подожди не уходи


А вы точно сретесь? Больше на что-то другое похоже....
902 2909322
>>909319

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

903 2909324
>>909322
ну то есть леткоде не предоставил как он делает тесты
и может реально ковыряет пальцем в жопе и замеряет время.
904 2909327
>>909324

>Во-первых не отменяет ничего из сказанного мной.



Может. Ты должен доказать, что ковырялся пальцами в жопе он, а не ты, проведя нормальные тесты. Иначе это высер и яскозал. Почему твои тесты ненормальные уже было сказано, до сих пор не предоставил нормальные сравнения джавы и петушарпа, зато на котлине и плюсах всё сделал, ведь за победу плюсов над петухлином не так страшно, да?
905 2909328
>>909319
Как бороться с набуханием в штанах, когда я вижу плюсовый код?
Это же не нормально. У меня есть няшный шарпик. Иногда - задачки по JS. Но стоит подумать о плюсах, как в штанах набухает, сразу воспоминание о вузе, и о том, как плюсы - ебали меня жестко без смазки, а на попытки понять что не так - иди нахуй, дебил. Ух. Бля. Самые сильные эмоции от кодинга - это ебля с плюсами. Как же мне этого почему-то не хватает.
906 2909329
>>909322

>А может там вот так!


>А может там так!



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

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

Все, попущен с четкими и твердыми цифрами, свободен.
907 2909331
>>909329
еще один все понял.
908 2909332
909 2909340
>>909327
я доказал. я проверил LINQ и Stream со своими данными (дополнительно защита от jit) и увидел разницу лишь в 3 раза, а не в 20.
И я ни код ни данные ни результат не прятал как леткоде
На картинках все видно
Можешь изменить данные так чтобы разница стала в 20 (и не виноват был jit) - вперед. Иначе ты говноед без пруфоф который может только орать "ви все вретте, жава говно но вкусное"
910 2909343
>>909340
Ты сравнил массивы из 10 элементов, не соответствующие constraints.
911 2909346
>>909343
где они не соответствуют?
пруфы в студию?

впрочем даже если бы там был чистый рэндом - я говорю про ОТНОСИТЕЛЬНОЕ время
итоговое время было бы другое, но отношение сохранилось бы. и оно было не в 20 раз лол.
912 2909348
>>909340

>ви все вретте, жава говно но вкусное


Так это же буквально ты. Получил результат джавы в 3 раза быстрее, но оправдываешь это какой-то абстракцией (которая и на джаве есть и производительности не мешает, но это тактично проигнорим).
913 2909350
>>909346
Вот твой последний тест со сравнением джавы и петушарпа. Тут отчётливо виден один массив на 16 элементов.
914 2909353
>>909346

>и оно было не в 20 раз лол


Так надо было, чтобы джит пробежался и векторные инструкции вставил. Или вообще вырезал все циклы. Че ты как этот. Если в шарпе нет жита, это не повод говорить, аррррря читы
915 2909357
>>909350
А ещё тут видно, кстати, что я с первого раза не заметил, совершенное незнание шарподауном основ бенчмаркинга и принципа blackhole и лишний += умноженный на миллион. Без него результаты бы совсем неинтересные получились для шарподебила.
916 2909362
>>909348

>которая и на джаве есть


как понять что жавист пиздит? он открыл рот
НЕТ НЕТУ. в этом примере жава работает именно с int[], без асбтракций
когда я сделал то же самое для шарпа - заставил работать с int[] - жава пук пук

>>909357
откуда мне знать как в вашем говне делается бенч. я же сказал - я просто загуглил. но += ни на что не влияет дядя. он есть и там и там
а консуме просто не позволяет сожрать житу
измени код - я поменяю такое же на шарпе и ты снова обосрешься.
917 2909365
>>909362
Не надо подменять тезисы. Ты говорил про пользу этой абстракции для разработчиков. Разработчики легко могут пользоваться интерфейсом Iterable и им не мешает какая-то конкретная реализация Arrays.stream().
918 2909367
>>909365
кто сказал что я говорил? это двач
ты тут один обосранный жавист - а шарпистов в треде много
919 2909368
А в шарпе как всегда смешали мух с котлетами и от абстракции-аналога Iterable страдает перевод массивов в поток данных. Чувствуется невидимая рука индусов, вспоминается как на шинде отваливается авторизация при попытке удалить библиотеку отвечающую за всплывающее после alt+shift окошко.
920 2909369
>>909367
Тут в принципе только одно оправдание этого было, и оно было через абстракцию. Этого достаточно, но — примечательно — от человека со стилем письма крайне похожим на твой.
921 2909375
>>909369
мой стиль - там где я жависта поливаю говном (буквально) и там написано в скобочках что майки могли бы сделать оптимизацию для массивов

так если видишь жава - эт не я
если говнообосраннаяжава - эт я
922 2909377
>>909328
Это ты еще не познал как охуенно писать на шарпе плюсовый код и местами обгонять сами плюсы за счет жита

Вот например продложая обоссывать джавадебила, снова смотрим на решения для плюсов от дурачка из видео - 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 наносекунд и джавадебила

да, мне абсолютно нехуй делать на выходных, шарпаны
923 2909379
>>909375
Ну так высри своё оправдание, раз уж не согласен с тем, что твоё альтер-эго вчера высирало про читы и абсракцию. И будь добр не игнорь вот это >>909350.
image.png10 Кб, 848x133
924 2909380
>>909377
Забыл прикрепить плюсовое время
925 2909384
>>909379
я ответил на это говнодебил>>909362 (часть 2)
я жду от тебя кода на жаве с правильными блэкхолами. я сделаю такой же на шарпе и мы измерим
и ты пожрешь говна.
926 2909386
>>909384
Претензия к блекхолам это просто шутеечка над дауном. Суть в 16 элементах, что ты исправил везде, кроме двух сравниваемых языков.
927 2909388
>>909386
что тебе не нравится в 16 элементах говножуй?
я могу взять оригинальный массив с леткоде, но он слишком маленький поэтому я его нарастил в 2 раза.
928 2909390
Если есть большое желание исправить += и не быть дауном — то убери ещё blackhole.consume(result) из цикла и конзумь это только в конце.
929 2909391
>>909388
То, что constraints подразумевают массивы бОльших размеров.
image.png18 Кб, 580x37
930 2909392
>>909377
А у вас там реально относительные пути не завезли?
931 2909395
>>909390
изначально там его не было - и НИ НА ЧТО НЕ ВЛИЯЕТ
>>909391
я взял массив с леткоде и даже увеличил.
к ним все претензии. они пальцем в жопе ковыряют.
932 2909396
>>909392
Нет, джавадебил, мне просто легче было держать файлик с числами на рабочем столе. Расслабься, джавадебил, я все равно не смогу замерить джаву, после котлина мне уже больно от вашей уебищной системы сборки и менеджмента пакетов.
933 2909397
>>909395
Constraints прочитай и охуей.
934 2909402
>>909396
Ну раз не сможешь, то ладно. Не больно-то и хотелось.

Кстати, ебать это костыль получается. Чисто виндовый причем.
935 2909405
>>909396
Уёбищные только твои клешни. Система сборки на джаве лучшая среди всех других языков (если ты конечно решил собирать мавеном, а не дегенерадлом).
936 2909412
>>909397
меньше пустых слов
выдай массив
выдай код на жаве
я измерю и жаву и шарп на одной машине
и даже не буду в этот момент писать какой ты говножуй.
937 2909413
>>909405

> Пользуйся только моей любимой системой сборки, тогда все будет классно!



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

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

Но все равно иди отсюда нахуй.
938 2909424
>>909412
https://pastebin.com/f8WEth6U

И засунуть это в поле класса, чтобы аллокацию не измерять.
939 2909426
>>909413

>А в вашем чудесном джава мире


maven clean install.

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


Лечись, шиз. Я как-то попытался один раз установить среду разработки для шарпоговна (как раз чтобы написать бенчмарк, но это было не сейчас, а где-то месяц назад), так охуел с 60 гигабайт и больше не притрагивался к этому.
940 2909432
И что самое главное шарподебил не зря упомянул про "современный" дотнет проект. Наверняка там такие же проблемы с обратной совместимостью, что и в джаве с дегенерадлом, и нужно ебаться с конкретными версиями системы сборки и потом видеть build failed. С мавеном ты один раз скачиваешь 15 мегабайт и ВСЁ. На следующие 10-15 лет ты забываешь про проблемы сборки.
941 2909433
>>909424
и сколько раз в цикле это повторять? Без цикла оно будет мгновенным. ладно сделаю 1000
хотя я противник использования стат массивов как поле класса.
942 2909436
>>909426

>60 гигабайт



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

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

Короче, шизоид, ты можешь жрать древнюю как говно мамонта джавапарашу сколько тебе влезет, но зачем ты пытаешься убедить нас в том, что это вкусно?
943 2909437
>>909433
Один раз. JMH позволяет не пользоваться циклами и измерять хоть наносекунды. JMH сам будет это гонять в течении нескольких минут, чтобы имитировать реальную работу.
944 2909446
>>909436
Я установил вижлу — увидел хуй. Непонятно, как создать проект и куда что писать. На джаве есть жирная кнопка "СОЗДАТЬ ПРОЕКТ" и когда её нажимаешь, то создаётся проект с Hello World и можно поменять код и писать что-то своё. То же самое было когда я пробовал плюсы в плюсовой иде. А на вижле что нашёл это предложение ставить какие-то модули по 5 гигабайт. Я загуглил, сколько вообще надо такого качать и мне выдало 60 гигов в гугле. Ну я и закрыл нахуй это ебаторию.
945 2909449
А ещё самое главное что всё это произошло после двух часов ожидания установки этой самой вижлы. IDEA ставится за 2 минуты.
946 2909450
Напоминаю что большинство анончиков категорически против регулирования срачей в языковых тредах, поэтому шарпо/джаво/расто/джиэс/одинэс и.т.п. петухи, мухи, тараканы, дебилы, долобёбы и.т.п. никак не регулируются. Отстаивайте свою точку зрения в рамках общих правил и берегите нервы, они вам ещё понадобятся на дейлике.
947 2909460
Джавадебил, давай сразимся как мужчины, заливай проект с бенчмарком этой задачи на джавапараше куда-нибудь. Я записываю видос с прогонов бенча шарпа и джавы. С одинаковым кодом и одниаковыми идиомами?

Согласен, джавадебил?
948 2909464
>>909433
Держи https://pastebin.com/B3WbiDDW
Генерацию сам напиши тока.
949 2909467
>>909450

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


Ссылку на опрос можно?
950 2909468
>>909464
Нахуя ты конзюмспу добавил?
952 2909470
>>909468
Гранулярность мб есть. Хз.
953 2909472
>>909469
Спс.
954 2909475
>>909470
Ты таким макаром только петушарпу дал преимущество в 10 цпу циклов на измерение.
955 2909477
>>909472
Опрос несколько раз вбрасывался в МВП-тред и висел в шапках языковых тредов. Вроде в шапке МВП тоже висел. Всем поебать. Кому не поебать те против. Не нашлось ни одного человека за.
956 2909479
>>909464
Братишка, джавадебил, ты хоть напиши какая система сборки и чо куда пихнуть чтобы спейсы идеа увидела.

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

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

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

А мы то твое говно как запустить должны?
957 2909480
>>909460
Да пожалуйста. Только без кастомной реализации каунта и прочей хуйни.
958 2909481
>>909475
Ну как бы для этого есть первый тест. Типа вычесть. Тащемта мне интереснее тестбокс.
960 2909485
>>909480
Отлично, ты главное не сливайся, джавадебил. А то мне еще разобраться надо как эту хуйню запустить.
961 2909486
>>909477
Понятно, я там не сижу прост.
962 2909487
>>909482
21 джаву надо. Она побыстрее будет, чем 17 на процентов 5-10.
963 2909488
>>909437
когда массив не изменяется, да еще стат поле джит может доказать что массив не изменяется
и тогда вместо реального вычисления захардкодит результат.

в итоге просто битва джитов.
964 2909491
>>909487
Ну вообще исходя из моего опыта чем ниже тем быстрее. Да и вообще этот пом из какой-то хуйни взят.
965 2909494
Я с вас хуею. Развели какое-то говно на 300_ постов. И что одна сторона дегенераты, что другая.
Один не может принять очевидную, блять, всем истину, что LINQ медленное говно на итераторах, за использование которого в действительно критичных к производительности участках кода на код-ревью в нормальных командах просто обоссут.
Второй же пришёл в тред просто срать и набрасывать дерьмо на вентилятор. Если бы хотел что-то более-менее конструктивно обсудить, то принёс бы сразу ссылку на репозиторий с исходниками бенчей, чтобы достопочтенные аноны сами всё запустить и во всем убедиться.

P.S. Ещё более комичным этот срач делает то, что о производительности спорят адепты двух языков,
в которых большинство разрабов в своих энтерпрайзных болотцах с проблемой недостаточной производительности кода, скорее всего, никогда не столкнутся, так как их код большую часть времени тупо ждет ответа от БД/других сервисов. А если и столкнутся, то бизнес скажет забить и просто оплатит дополнительные ресурсы, так как новые фичи нужны были ещё вчера.
966 2909495
>>909482
Братишка, джавадебил, почему твоя крутая идеа и система сборки не может просто скачать зависимости как нюгет?

Чо делать, давай рассказывай
image.png170 Кб, 1920x1032
967 2909497
>>909495
забыл
968 2909498
>>909495
Добавь в зависимость jmh... Ты как до этого тестил вообще?
image.png1 Кб, 66x46
969 2909500
>>909497
Тыкни. Должно скачать.
970 2909501
>>909450
>>909467
>>909469
Опрос говно.
На самом деле все языкосрачи нужно вынести в отдельный закрепленный бесконечный тред (как в свое время сделали в gd с их "юнитидебилы vs все_остальные_дебилы" темой), а в остальных тредах банить за срачи. Причем в первую очередь тех, кто ведется и начинает отвечать на заведомо разжигающие посты.
971 2909502
Да ладно, весело же...
972 2909503
>>909488
А циклы-то как улучшат ситуацию? JMH, вроде, контроллирует JIT, чтобы ненужные оптимизации не производил, по крайней мере по моему опыту можно просто в @Setup написать генерацию и пользоваться этим.
973 2909504
>>909498
Котлин тестил по редмихе с гитхаба, энивей не вникал процесс, запустилось и хуй с ним.
>>909500
Кочает вроде, едем дальше
974 2909505
>>909494
дык все равно будет через неделю перекот.

и во втором ты ошибся. я как раз адепт хайперфа и лично меня от многих вещей в шарпе где забыли сделать нормально корежит.
975 2909506
>>909488
Как вариант сделать поле с массивом public volatile и в начале каждого теста присваивать его локальной переменной. Так jit хуй что докажет.
976 2909507
>>909504
Еще можешь плагин этот скачать. Чтобы тыркать из иде сразу.
977 2909510
Так братишка, джавадебил, все готово, теперь кинь мне код, который десериализует массив с числами из жусона

И узнай есть ли атрибут который помечает метод как подготовку, которую он выполнит перед бенчем, как наш шарповый GlobalSetap
978 2909511
>>909506
Или можно ещё сделать второй тест, в котором сразу будет возвращаться захардкоженное значение, чтобы удостовериться, что jit ничего не переоптимизировал.
979 2909513
>>909510
Не ну это джексон в зависмоти надо пихать. А нахуй там жсон вообще? Че csv уже усе?
980 2909516
>>909513
Ну окей, а чо мне прямо захуярить массив в код? Ну давай проверь лол

джава...
981 2909517
>>909510

>в @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())+"}");
982 2909519
а блядь у вас в джаве жусона в коробке нет? блядь...
983 2909522
>>909517
Да я таким же шарповым генерил, маня. Вопрос в том что он одинаковый должен быть для жавы и шарпа, поэтому читаем из файла. Ладно жди, почекаю как прочитать регуляркой
984 2909525
>>909505

>я как раз адепт хайперфа


Ну так и пиздовай в плюсы.
.png52 Кб, 1431x723
985 2909526
>>909446

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


Серьезно? Давайте тредом поможем найти кнопку создать проект.

> На джаве есть жирная кнопка "СОЗДАТЬ ПРОЕКТ"


Действительно, жалко что в студии такой нет. Какая беда...
986 2909528
>>909526
Ну вот нажми на эту кнопку и увидь какая хуйня там открывается.
987 2909533
>>909516

>захуярить массив в код?


Ну он 65кб не занимает, можешь и вставить.
988 2909539
>>909525
но я не адепт невнятных заклинаний

в дотнетбенч как настроить показание времени
вот us это что такое? наносекунды? уткосекунды? что это блин.
989 2909540
лол
2023-11-06 21-02-53.mkv5,7 Мб, mp4,
1280x720, 0:18
990 2909542
991 2909545
>>909542
У меня нихуя там не было.
992 2909546
>>909539
Микросекунды. Долбоёб, это официальное обозначение СИ (или не СИ, но не менее используемое).
993 2909547
Микросекунда - это единица измерения времени, равная 0,000001 (одной миллионной) доле секунды (10 - 6) или 0,001 (одной тысячной) миллисекунды. Сокращенное русское обозначение: мкс, международное: µs. Слово «микросекунда» состоит из двух смысловых частей: «микро» - в переводе с древнегреческого языка означает «маленький» и «секунда» (сокращение словосочетания «pars minuta secunda») - «часть мелкая вторая» (часа).
994 2909552
>>909542
Как же оно убого выглядит...
995 2909554
>>909545
Это дефолтная студия 2022, единственное я решарпер накатил. Я даже настройки не открывал, т.к. на этом компьютере 99% времени в 2012 студии сижу. Для 2022 студии у меня другой компьютер.
996 2909558
>>909546
ОК. как заставить этот дотнетбенч работать дольше, а не несколько секунд?
997 2909560
>>909552
>>909552
А для меня идея убого выглядит. Это вопрос привычки исключительно, я 2008 студию застал уже на работе, 2005 когда учился использовал. Мне все другие IDE кажутся до жути кривыми, тупыми и неудобными.
998 2909562
>>909554
Тем не менее у меня ничего не было. Судя по тому, что я из того окна как-то попал в окно загрузки модулей, мне предложило их там скачать.
999 2909567
>>909560

>неудобными


Вот максимум (для тех, кто всю жизнь в проприетарном notepad++ кодил). Но никак не некрасивыми.
1000 2909572
>>909560
Даже с этой парашей? https://www.jetbrains.com/help/idea/new-ui.html
1001 2909574
Ну и че там, скоро с бенчами челик разберется? Там минут пять делов-то.
1002 2909577
>>909558
Я чё, шарпоблядь и ебу, как там чё делать?
1003 2909580
>>909574
дотнет не хочет работать долго. он работает 13 секунд и все.
при этом жава долбит 5 минут с разогревами и прочим.

как по мни битва джитов
1004 2909583
>>909580
Там усреднение значения идет. Джит псевдорандомом убрать можно.
Давай дотнет настраивай, тут куча шарпистов.
1005 2909585
>>909580
У вас нет что ли возможности настроить прогревы и итерации?
1006 2909586
>>909580
У вас нет что ли возможности настроить прогревы и итерации?
image.png211 Кб, 1920x1033
1007 2909590
Братишка джавадебил, не уходи, я потихоньку продвигаюсь в вашем говне. Пиздец сколько ебли чтобы прочитать массив из файлика, какие же ущербы.
1008 2909591
>>909562
Ну если ты галочку "Разработка на C#" когда студию ставил, то сорямба, я олигофренопедагогикой бесплатно не занимаюсь, попробуй читать что в окнах написано.
>>909567
К сожалению все IDE после 2008 студии пиздец уродливые. Уже 2010 была блевотной, дальше было только хуже. Идея была рождена хуёвой. Я если что много какими IDE пользуюсь, т.к. халтуры гоняю и на жабе, и на плюсах, и в принципе на чём попросят, и датагрипом пользуюсь когда васянку приходится пилить. Идея просто меньшее из зол, у джавадебилов все IDE даунские. Подписка на все продукты жидбрейнс у меня очень древняя, с 2017 до окончания работы жидбрейнс в России им платил.
>>909572

> Даже с этой парашей?


А смысл? Косячен сам design language жидбрейнсов, там в общем лечить особо нечего, надо выкидывать и заново делать.
1009 2909599
>>909591

>с 2017 до окончания работы жидбрейнс в России им платил


А вообще пользуюсь очень давно, сколько пиратил уже не помню. В 2012 купил первую легальную на распродаже в честь конца света.
1010 2909600
>>909591

>Ну если ты галочку "Разработка на C#" когда студию ставил


Что галочку?
1011 2909602
>>909590
О, все таки джексон поставил. Изменить генерацию на пробелы, неее. Ну удачи
1012 2909604
>>909600
Не поставил. У меня слова из головы выпадают к сожалению. Последствия долгого веслания.
1013 2909606
>>909602
Так, как мне запустить прогон бенча? Идеа нихуя не видет это как тесты
1014 2909608
>>909591

>Косячен сам design language жидбрейнсов


Говорит пользователь блевотного WordCode.
1015 2909609
>>909604
Ставил. Помню что ставил.
image.png11 Кб, 281x97
1016 2909610
>>909606
Плагин >>909507
И у класса такая штучка с часиками появица. Нажимай на нее.
1017 2909613
>>909585
есть конечно. только мне некогда долго это гуглить
короче, я заебался разбираться в незнакомой мне теме.
как по мне идентичный код хоть и время выполнения в разы

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

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

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

ну и то что это битва джитов, ведь почему не встроился делегат как прямой вызов со временем? хз, может этого времени не хватило, ну сколько там было тех вызовов.
1018 2909619
>>909613
Загружай шарповый проект на гитхаб. Сам проведу тесты. Должна быть разница в 26 раз.
1019 2909620
>>909608
Я не знаю что это такое даже.
>>909609
Ну тогда скорее всего не догадался в поиск ввести название языка. В любом случае никаких проблем со студией нет, она и гораздо быстрее идеи, и гораздо удобнее. Говорю как человек который пердолится с обеими IDE уже больше десяти лет.
1020 2909622
>>909620

>Я не знаю что это такое даже.


А ты воображение включи. Что выглядит как Word 2010, но в чём можно писать код?
1021 2909626
>>909619
с какого перепугу она должна быть в 26 раз
это только в воспаленной фантазии леткодовца
1022 2909629
>>909626
Ты проект загружай, а там посмотрим.
1023 2909631
>>909613

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


Да вас уже во всём обоссали, осталось последнее "джава зато медленная!", и это обоссано было.
1024 2909632
>>909613
В среднем ультрасовременная джава лоб в лоб у меня на 30% быстрее ультрасовременного шарпа на корректных тестах при одинаковом коде (плюс-минус синтаксис). Хуй знает почему так. Толку от этого особого нет, стоит столкнуться со вводом-выводом как начинается джаваотсос и она делает изо всех сил вид что не тормозит, при этом шарп отлично переживает асинхронную параллельную грязь на шестидесятичетырёхпоточном процессоре.
>>909622
Не охота воображение включать. У меня вообще нет ни одной программы с риббонами кроме офиса. Офис кстати майковский охуенный, очень советую, куда лучше остальной дрисни.
1025 2909637
>>909632
Не ну ты подожди, щас же виртуальные треды завезли. С ними потести.
1026 2909638
>>909631

>Да вас уже во всём обоссали


Ты штаны забыл снять когда писил, джава это архаичная тупая дрисня, можно на си писать, тоже очень быстро будут даунские программы в виде laba1 работать. Или на голованге.
1027 2909647
>>909638
Ну обсуждали же пару месяцев назад не по перформансу, а по выразительности, что закончилось полным обоссыванием пятаков шарподебилов.
1028 2909650
>>909637
Он, вероятно, вообще не параллелил джава код, потому что асинк/авейт имеет огромный оверхед (в котлине вон там до x10 от обычного кода код с корутинами выполняется), и выигрывает только в сравнении с вообще нераспаралелленным кодом. Даже не на виртуальных потоках джава бы победила, если бы код был параллельным.
1029 2909651
>>909613
Странно. По мне так шарп быстрее должен быть. Там чуть ли не векторные инструкции и асм вставки можно хуярить.
1030 2909652
>>909631
язык это не только рантайм. это и синтаксис и потребляемая память. В жаве с первым жопа - решает сторонний проект лобок,
(да и не все решает. как он решает вопросы корутин (асинк/авайт))? а никак.
со вторым ПОЛНАЯ жопа в принципе. Продукты на жаве требуют дохуища памяти.

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

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

смекаешь?
почему в жаве до сих пор свойства пишут всякие лобки, а не родные средства жавы? разрабы жавы вас ненавидят? видимо да.
1031 2909657
>>909637
Я не пробовал виртуальные треды, но ожидаю что там при реализации "в лоб" будет просто комичный отсос потому что когда тасок больше сотни надо чётко очень им приоритет ставить. Если сделать 10000 тасок, каждой дать виртуальный тред и запустить их на выполнение то там просто пиздец будет. Жду в целом бенчей на реальных задачах. Переходить на джаву в производительных проектах не планирую.
>>909647
Обсуждали пару месяцев назад, предложили литкод изи решить на стрим апи. Джавадебилы не осилили. Какой-то хуесос всю ночь не мог успокоиться и визжал про ломбок, я аж устал его обоссывать. Потом он объявил что победил, никто с ним особо спорить не стал - он и так уже всех заебал. В целом спорить с джавадебилами невозможно даже если сам более или менее пишешь на джаве, т.к. мозг там напрочь атрофирован.
1032 2909659
>>909629
мне влом
держи пастебинку

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

https://pastebin.com/ch9kythf
1033 2909661
>>909652

>(да и не все решает. как он решает вопросы корутин (асинк/авайт))?


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

>потребляемая память


Память стоит дёшево и масштабируется легко. А процессор мощнее мощнейшего не купишь. Тратить процессорное время в угоду памяти это дебилизм.
1034 2909662
>>909657

>надо чётко очень им приоритет ставить.


Ебать проекции. В луме даже такого понятия как приоритет нет.
1035 2909664
>>909650

> асинк/авейт имеет огромный оверхед


Ты конечно же покажешь по этому поводу код который можно посмотреть, или просто опять кукареку?
1036 2909665
>>909657
А че в шарпе каждой таске можно приоритет назначить и шедулер там настолько ебейший, что все это учтет?
2023-11-0621-51-00.png465 Кб, 1236x538
1037 2909669
>>909664
Ну вот. Разница более чем в 12 раз.
1039 2909677
>>909662>>909665
В этом и проблема что нет никакого смысла делать поток (даже виртуальный) в котором описана вся логика. Нужно делать целую кучу маленьких тасочек-этапчиков, и у тебя должны тасочки-этапчики вылетать из очереди на выполнение и потом залетать обратно в очередь следующим этапчиком. В этом никак не помогут зелёные треды. Правда от асинк-эвейта тоже толку мало, он в другом месте нужен абсолтно и в моём понимании с зелёными тредами не конкурирует. С зелёными тредами конкурирует тредпул который есть во всех языках со времён палеозоя. И он сосёт.
image.png169 Кб, 1200x1035
1040 2909683
Так, братишка джавадебил, не теряйся, я почти все настроил. Кстати, чо такое Arrays.stream? Просто с массивом нельзя работать? Чо это хуйня делает? На стек засовывает?
1041 2909686
>>909657
Кого ты там обоссал? Ты даже не смог ответить, как на петушарпе конструктор по параметрам сделать и не писать этот ебучий бойлерплейт каждый раз для каждого класса. Или как например повесить {get; set} на весь класс.
1042 2909687
>>909683
Даёт обёртку для работы с массивом как со стримом. Выполняется за константное и очень быстрое время.
1043 2909691
>>909677

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


Пруфы будут или потому что тыскозал?
1044 2909692
>>909683
Ты нахера выкинул код боксинга? Он как бы пребразовывал массивы так, чтобы использовался Iterable. Чтобы вы не выли про читерство.
1045 2909695
>>909661

>Кому нахуй нужен загрязнитель языка и дублятор методов


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

>Асинк авейт это литералли компромисс за счёт синтаксиса


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

>Память стоит дёшево и масштабируется легко


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

>>909650
потому что асинк/авейт имеет огромный оверхед
имеет, но не огромный поскольку не равен TPL с его тасками, а другая структура
1046 2909699
>>909692
Это не читерство, а оптимизация.
1047 2909708
>>909695

>хз о чем ты. есть базовые вещи типа того же гет сет. эти вещи элементарно было сделать сахаром, но ХЕР


>А так - код должен писать компилятор, а не программист или сторонняя тулза


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

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


Проснись, ты серешь. ГЦ в джаве никто не тюнит, его тюнят разработчики самой джавы. Ты просто выбираешь, если у тебя куча меньше 16 гб, то стандартный, если больше, то generational shenandoah, который даже на кучах с 128 гб паузы меньше миллисекунды держит в в целом отъедает очень мало перформанса (конкретные цифры говорить не буду, так как не знаю их).
1048 2909709
>>909695

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


Что ты высрал? Тебе тесты оверхеда дали.
1049 2909714
>>909669
Я честно не вижу тут никакого асинк/эвейт. Дальше не вникал, мне вечером выходного дня лень. Неси тест асинк/эвейт про который ты говорил.
>>909686
Скорее всего тебя и обоссал. Я тебе довольно подробно описал почему нужно этот код писать (нажимая иногда Tab) и чем плоха неявная генерация, и почему ей никто в шарпе не пользуется. Мне сейчас лень с тобой сраться, я на x2 с тех пор ушёл, обустраиваю дунасинг на новых сотыгах и мне не до холиваров.
>>909691
Пруфов не будет, я наоборот заинтересован в том чтобы конкуренты писали дрисню на лум и делали сосамбу, мне платят за то чтобы были высокие конкретные интересные бизнесу метрики, а сравнивают эти метрики с конкурентами. Для моей задачи есть формальное математическое обоснование (которое я никому разумеется не показываю), если хочешь такое же то начни копать планировщики процессов в пакетных системах. Скорее всего чтобы удовлетворить любопытство тебе Таненбаума хватит, но я его читал невероятно давно и не помню там я про них впервые узнал или нет.
1050 2909716
>>909708

>решённой проблемой джавы с гетсетами? Умно, умно.


решенную проблему? а ну покажи мне в спеке жавы что там с гет сетами. Ничего. значит нахуй
СТОРОННИЕ вещи не предлагать.
стороннего может быть чего угодно. стороннего я могу вообще котлин взять и хуять рядом с жавой.

>>909708

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


да ты мне расскажи ага )))

>>909709
где дали кто дал? пост в студию.
1051 2909718
>>909709
Так ты тесты на котлин привёл. Конечно на JVM это хуёво работает, она не поддерживает потому что такое нативно. Если бы можно было сделать чтобы поддерживала нормально, то давно в жабе были бы асинх/эвэйт и это было бы сверхновой фичей и преимуществом жавы перед всем подряд.
1052 2909724
>>909714

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


Это петухлиновский асинк/авейт.

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


Да, ты рассказал, что сидеть в классах с говном очень хорошо. Только если ты муха. Других аргументов ты не предоставил, просто повторяя раз за разом "ниявная генерация! магия! ниизкаропки!", и ни разу о том, чем это плохо.

>Пруфов не будет


Слив принят. Дальнейшие оправдания, почему слился, не интересуют. Итог: джава выебала петушарп и в асинхронщине, а с виртуальными тредами разрыв стал ещё больше.
1053 2909727
>>909716

> значит нахуй


> СТОРОННИЕ вещи не предлагать.


Аргументы, чем это плохо будут, или "в питушарпе такова нет, значит плоха!"?

>да ты мне расскажи ага )))


Слив принят.

>где дали кто дал? пост в студию.


-> >>909669 >>909671
1054 2909730
>>909718
Расскажешь, какая именно нативная поддержка для этого нужна?
1055 2909747
Не забываем про

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


На который ответа не поступило.
1056 2909751
>>909727

>Аргументы, чем это плохо будут


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

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

опять видео. не. в этом раз не хочу
в жопоковырянии леткодовцев разобрались, мне работать нужно
1057 2909752
>>909751
Хорошо, жаба + ломбок ссыт на шарпохуйню с высокой колокольни.
1058 2909754
Даже не так. Жаба + её экосистема ссыт на шарпохуйню с высокой колокольни.
1059 2909762
Братэлло, утихомирься, тебя пиздец несёт уже. Давай, иди траву потрогай.
>>909724

> Слив принят


Да ради бога, я даже не пытаюсь с тобой спорить, ты по 10-15 раз в день свою победу в споре объявляешь а потом опять влетаешь и опять споришь, видимо победа была не особо убедительной.
>>909730
Если вкрации, то поддержка кооперативной многозадачности. Асинхронный шарп это химера, в нём многозадачность одновременно работает и кооперативная и вытесняющая. Джава работает за счёт вытесняющей многозадачности. Это пытаются пофиксить лумом. Но это далеко не во всех задачах поможет, если поможет вообще.
>>909747
Чтобы понять почему так, тебе нужно понять как работает внутри асинк/эвейт. Это не недостаток синтаксиса, это требование механизма который лежит под этим механизмом языка.
1060 2909768
>>909762

>Да ради бога, я даже не пытаюсь с тобой спорить


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

>ты по 10-15 раз в день свою победу в споре объявляешь а потом опять влетаешь и опять споришь, видимо победа была не особо убедительной.


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

>Если вкрации, то поддержка кооперативной многозадачности.


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

>требование механизма который лежит под этим механизмом языка.


Ну значит в петушарпе сделали не хуёвый асинк/авейт, а хуёвый механизм добавили, который вынудил добавить асинк/авейт. Лучше стало?
1061 2909776
>>909768

>>требование механизма который лежит под этим механизмом языка.


>Ну значит в петушарпе сделали не хуёвый асинк/авейт, а хуёвый механизм добавили, который вынудил добавить асинк/авейт. Лучше стало?


Раньше было всё на коллбеках как сейчас в жабе. Но потом майки поняли, что коллбеки -- это уёбищно и завернули в сахарок эвейта. А в жабе всё так и осталось на коллбеках.
1062 2909777
>>909776
Слово копрософта это божественное откровение или как это что-то доказывает?
1063 2909793
>>909777
Да какое откровение, код на коллбеках читать невозможно, спагетти длиннющие образуются. Особенно учитывая, что в большинстве случаев после асинхронной операции ничего не больше не делается, а весь дальнейший код уходит в коллбек.
И тут у тебя либо бойлерплейт с создаваемым объектом, реализующим интерфейс, и методом в нём (и отступом на несколько шагов вглубь), либо вообще продолжение вынесено в другое место, что ещё хуже.
К слову, в шарпе даже коллбеки, где ещё есть, делегатами делаются, а не объектами-обработчиками. Меньше кода, меньше отступов, проще читать.
1064 2909797
>>909793
А кто заставляет спагетти с колбеками писать?
1065 2909807
>>909752
лол. минимальный синтаксический сахар это говночмо уже выдает за "да это же киллерфича"
1066 2909822
>>909807
Причём здесь киллерфичность ломбока? Ты предъявлял к использованию ломбока в принципе, тебя обоссали по этому.
1067 2909840
>>909822
и предъявляю. это не заслуга жавы, а заслугал ее УБОГОСТИ что появилась необходимость рождения сторонней тулзы
и даже эта тулза просто добавляет НЕКОТОРЫЙ сахар
а не решает фундаментальные проблемы

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

так что обоссали тебя, дебича, который заслугу СТОРОННЕГО ПЛАГИНА (дающего некоторый сахар, не более) приписывает к фичам самого языка
1068 2909844
>>909797
Ну-ка, напиши мне веб запрос без коллбека.
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.
Всё идёт подряд, код легко читается и в целом понятен. А в жабе глазами туда-сюда прыгать приходится; а если какой-то умник сделал не анонимный объект обработчик, а целый класс в отдельном файле, то совсем пиздец.
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.
Всё идёт подряд, код легко читается и в целом понятен. А в жабе глазами туда-сюда прыгать приходится; а если какой-то умник сделал не анонимный объект обработчик, а целый класс в отдельном файле, то совсем пиздец.
1070 2909865
Вот, пососал хуйцов.
1071 2909872
>>909687
Ну что ты братишка джавадебил, как поживаешь? А то я чуть не умер разбираясь с вашим джаваговном. Что братишка, джавадебил, ты думал я не смогу залезть в доку и чекнуть зачем нужна черная дыра твоей мамаши?

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

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

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



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

Пиздец...

Джавадебил, мне видос записывать?
1072 2909876
>>909872
Ты че блять издеваешься? Консьюм цпу сжигает процессорное время. А все возвращаемое из теста и так попадет в блэкхол. Хуево чекнул.

>То есть джавапараша со специальной оберткой


У тебя бокс. Значит нет спец обертки. Короче вы друг друга стоите. Вам бы поебаться.
1073 2909877
>>909876
Сука, попросил тесты написать, взял и своими культями все испортил.
1074 2909879
Какую книгу по микросервисам порекомендуете?
ek1w6pyygmendtlfezucuvzecai.jpeg27 Кб, 248x351
1075 2909885
>>909879
От Ричардсона. Которая с гуталином на обложке
image.png181 Кб, 1227x1030
1076 2909895
>>909876
Ну извини, джавадебил, у меня от вашего говна уже моск потик, перепутал метод. Извини. Вот тебе новый честный прогон.

Разрушительная победа джаваговна правда с помощью в ручную написанного кода, еще небось и с векторизацией над линком, шарписты всем покинуть тред
1077 2909900
>>909895
Благодарочка тебе за то что взял эстафету обсирания жависта (а то мне некогда ведь работать нужно)
Но у меня linq отстал в перфомансе
1078 2909904
>>909900
У него тоже, ну как видишь. Хотя вам бы нормальные бенчи под шарп написать, а то че они несколько секунд-то работают.
1079 2909916
>>909885
Жаваговно
image.png24 Кб, 581x232
1080 2909922
>>909904
А, еще как варик это потестить. Так-то первая итерация, где не было бокса должна быть самой быстрой. С боксингом наиболее медленная, а это по середине, наверное. Но хз, как на самом деле, конечно.
1081 2909985
>>909885
Ты пидор.
1082 2910842
Перекатил короче, а то ОП умер походу >>2910820 (OP)

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

Перекатывайтесь или пусть тонет, хз
1083 2910893
>>910842
Моча поправила можно перекатываться
1084 2922779
ntcn
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 3 января в 21:08.

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

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