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

C# Тред #37

 Аноним 02/08/22 Втр 23:22:04 #1 №2423030 
image.png
image.png
Тред лучшего языка на планете.

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

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

3. C# для десктопа
— WPF ( https://docs.microsoft.com/ru-ru/dotnet/desktop/wpf )
— WinForms ( https://docs.microsoft.com/ru-ru/dotnet/desktop )

4. С# для игр
— Unity-тред в /gd/, а так же учебники: https://ru.stackoverflow.com/a/609901/422180

5. С# для мобильной разработки
https://docs.microsoft.com/ru-ru/dotnet/maui

Шапка: https://pastebin.com/HT7Hi6FD
Прошлый тред: >>2399284 (OP)
Аноним 02/08/22 Втр 23:22:58 #2 №2423031 
6. Какую IDE выбрать?
Для Windows — Visual Studio ( https://visualstudio.microsoft.com/ru/downloads ). Также есть версия для macOS.
Кроссплатформенный IDE Rider ( https://www.jetbrains.com/rider ).
Если в C# хочется, но пк уж слишком хуёвый: https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio-code

7. Что нужно знать, чтобы взяли работать?
— TPL, Linq, DI, интеграционные тесты. Преимущество перед такими же вкатунами даст парочка интересных пет-проектов где вы делаете всё максимально правильно и точно следуя архитектуре.
— [Архитектура] — DDD, микросервисная архитектура. Так же необходимо ознакомиться с паттернами проектирования. Обязательны к изучению: MVVM, MVC.
Базы данных — PostgreSQL + Mongo. Из ORM: EFCore обычно достаточно, но есть более быстрый, но менее удобный Dapper. Тратить время на ADO.NET не стоит.
Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
Структуры данных — связанные списки, деревья (бинарные, красно-чёрные), хеш-таблицы, графы.
Системы контроля версий — обычно гита достаточно.
Аноним 02/08/22 Втр 23:26:58 #3 №2423033 
>>2423031
Блять, обосрался со вторым постом. Похуй, учту при перекате.
Аноним 02/08/22 Втр 23:36:25 #4 №2423039 
>>2423030 (OP)
Наконец-то аниме в шапке.
Аноним 03/08/22 Срд 00:06:13 #5 №2423052 
Плюсы лучше шарпа
Аноним 03/08/22 Срд 00:09:18 #6 №2423055 
>>2423052
Чем?
Аноним 03/08/22 Срд 00:13:13 #7 №2423057 
>>2423055
Всем
Аноним 03/08/22 Срд 00:14:10 #8 №2423058 
>>2423057
C# лучше C++
Аноним 03/08/22 Срд 00:15:17 #9 №2423059 
>>2423058
Да не плачь ты
Аноним 03/08/22 Срд 00:16:14 #10 №2423061 
.png
>>2423052
Месть уровня /pr/
Аноним 03/08/22 Срд 00:17:18 #11 №2423063 
>>2423061
Пиздец, видимо он настолько затаил обиду, что аж месяц только и думал что бы такого написать в шарпотред в итоге сдался и написал тоже что и какой-то анончик в их треде.
Аноним 03/08/22 Срд 00:17:19 #12 №2423064 
>>2423061
Я тут не при чём, я мимо проходил
Аноним 03/08/22 Срд 00:18:43 #13 №2423065 
>>2423064
Да не плачь ты
Аноним 03/08/22 Срд 00:20:19 #14 №2423068 
>>2423065
Сильно же тебя это задело
Аноним 03/08/22 Срд 00:21:39 #15 №2423069 
>>2423068
Честно говоря очень
Аноним 03/08/22 Срд 00:25:28 #16 №2423072 
>>2423069
Ну же вижу что ты разрыдаться готов. Не огорчайся так, ещё вкатишься в нормальный яп
Аноним 03/08/22 Срд 00:27:19 #17 №2423075 
>>2423063
Справедливости ради, ждал он не месяц, а только пять дней.
Аноним 03/08/22 Срд 00:40:09 #18 №2423080 
image.png
>>2423072
Вот так могёш?
Аноним 03/08/22 Срд 00:42:45 #19 №2423081 
>>2423080
Пойти вслед за кораблём в компайлтайме? Да нехуй делать.
Аноним 03/08/22 Срд 00:48:11 #20 №2423086 
>>2423080
Даже в крестах это антипаттерн. Фичу ввели в те времена, когда всем было похуй, и теперь не будут выпиливать, потому что много говнокода сломается.
Аноним 03/08/22 Срд 03:07:53 #21 №2423113 
>>2423057
Когда завезут нормальные женерики, а не то недоразумение с темплейтами; нормально реализуют модули; и сделают хотя бы одну адекватную систему сборки, а не вот это вот ебантяйство с Make и ручной линковкой всего и вся; нормальное апи для работы со строками и сетью; реализуют нормальную работу с асинхронщиной и многопотоком - тогда и приходи.
Но ебантяи из комитета по стандартизации - лучше будут всякое ненужное говно пихать в стандарт, чем хотя бы что-то из этого сделают; а ебантяи из C++ коммунити - будут руками до последнего линковать, рассказывая, как это охуенно и что это один раз сделал и навсегда(угу, только потом попробуй собрать чужое говно сам и посмотри как это охуенно и один раз и навсегда).
Аноним 03/08/22 Срд 04:02:54 #22 №2423116 
>>2423086
Я бы и обычное наследование только по паспорту сделал.
А то понаделают цепочек, заебывает потом их распутывать при дебаге.
Аноним 03/08/22 Срд 08:56:36 #23 №2423176 
>>2423086
Так можешь или нет не пойму? Твёрдо и четко, да или нет?
Аноним 03/08/22 Срд 12:45:45 #24 №2423324 
>>2423080
Шарп не для индусов создавался, чтобы там сложные родственные связи выстраивать
Аноним 03/08/22 Срд 13:22:20 #25 №2423359 
У джавистов есть Котлин. У обжектив-сипистов есть Свифт. А какое будущее у шарпистов?
Аноним 03/08/22 Срд 13:38:12 #26 №2423388 
>>2423359
В шарп не боятся добавлять новые фичи, да и даже в древнем C# 5, который на любой винде из коробки, больше фич, чем в самой новой жабе. Шарп сам по себе охуеннн, если забыть про легаси для винды.
Аноним 03/08/22 Срд 13:39:36 #27 №2423392 
>>2423359
>А какое будущее у шарпистов?
туманное. даже у плюсовиков появился карбон
Аноним 03/08/22 Срд 13:43:07 #28 №2423394 
>>2423392
И сразу же умер.
Аноним 03/08/22 Срд 14:27:24 #29 №2423423 
Шарпист в треде
Короче как развиваться в плане языка я понял, а вот как поступить с общими знаниями разработчика? Меня если спросят чет связанное с процессом, но не напрямую с кодом, типа шо такое rsa и gpg, сертификаты какие-то, что-то из сисадминского типа джамп хоста или какого-то ебучего протокола, который подразумевается, что ты знаешь, я жидко хрюкну и пойду гуглить отдельные вещи. Как фиксить? Или единственный путь - слышать что-то незнакомое и гуглить? Хотелось бы все же заранее в более общем виде усвоить тему и не обсираться, только не в абстрактном университетском стиле, иначе ниче не запомню.
sage[mailto:sage] Аноним 03/08/22 Срд 14:37:41 #30 №2423432 
>>2423423
>Или единственный путь - слышать что-то незнакомое и гуглить?
Да, всё так. Но есть еще один способ: начни вкатываться в незнакомые тебе темы, например подрочи неделю c++/c/ассемблер, ты толком-то нихуя понимать в нем не будешь, но апнешься в понимании железа и как работает память, к примеру. Или попробуй развернуть свой сервак, купи домен хуё-моё и на дебиан каком-нибудь по гайду из интернета начинай развертывать. Там прикрутишь ci и какой-нибудь контейнеризатор, хуё-моё и через месяц таких вот потуг уже парочку команд в терминале будешь знать, будешь знать как там что настроить примерно. Никто от тебя как от разработчика не будет требовать глубокие знания до момента пока ты не станешь сеньёром/лидом, но там уже всё само собой будет, твоя задача просто быть в курсе и в случае чего метнуться в гугл и не тупить полчаса над тем как бы сформировать запрос на поиск какой-то проблемы.

Разные вопросы относятся к разным областям IT и тут главное поиграться с этой областью недельку-две
Аноним 03/08/22 Срд 15:51:15 #31 №2423560 
>>2423388
>В шарп не боятся добавлять новые фичи
Проблема в том, что из него старые фичи боятся удалять. И еще в том, что работы на нем нет. И в том, что асинхронность имплицитно по имплицитному пулу потоков размазывается. И в том, что его майкрософт пилит, и СПЕЦИАЛЬНО делает исользование селф-хост решений невыносимым. Типа, пили бойлерплейт монолит в 21-м веке, или страдай. Что, сука, не хочешь монолит, а хочешь микросервисы и горизонтальное масштабирование? На, сука, держи микросервисы размером в джва гигабайта одного лишь шаблона. И еще чтобы развернуть - пиши 20 килобайт конфигураций. И 10 классов бойлерплейтов, чтобы оно нормально коммуницировало. И все граничные случаи не забудь, мы это во фреймворк не добавляли. А ты что, сука, думал в попенсорс попал? В одну строчку все разворачивать собрался? Ты что, не мужик, ты что, ноджс-бомж? Наш попенсорс для состоятельных джентельменов, деньги мне заплатил за ажур быстро нахуй, там можно все в одну строчку, как вы, сраные хиппи, любите, только денег заплати. И хули вы рожу скорчили? Нате, подавитесь своим хотрелоадом, уебки немытые, фанаты столмана недоделанные.
Аноним 03/08/22 Срд 16:24:59 #32 №2423621 
>>2423560
>Проблема в том, что из него старые фичи боятся удалять
А что? где то удаляют? Вон в питоне решили все переделать и уже 14 год пошел как "переходят с 2 на 3"

>И в том, что асинхронность имплицитно по имплицитному пулу потоков размазывается
Тут то в чем недостаток? Почему вдруг ДЕФОЛТНАЯ реализация контекста должна быть явная?

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

ну и про осталььное ШТА?
Аноним 03/08/22 Срд 16:34:21 #33 №2423629 
>>2423621
2 энд оф лайф уже, на 3-м всё есть
Аноним 03/08/22 Срд 16:43:24 #34 №2423640 
>>2423560
Работа на шарпах даже в моей мухосрани есть, а насчёт микро сервисов вообще не выкупил, сейчас студия за тебя и докер файл сделает и оркестрацию только кнопочки потыкай
Аноним 03/08/22 Срд 16:48:21 #35 №2423644 
Когда юзаю MemoryMappedFile, и создаю MemoryMappedViewAccessor с размером выше 4096, выдает ошибку с отказом в доступе. Что это? Писали, что чуть ли не гигабайты там можно хранить.
Аноним 03/08/22 Срд 16:48:59 #36 №2423645 
>>2423629
да да. после 14 лет то.
1 многие либы поддерживают обе версии. в итоге "(цензура) тебе, а не type hints". "Пиши код в IDE как в блокноте". Романтика
2 "все есть" это слишком абстрактное понятие. Для тебя может все есть, а для другого чего то нет.
3 поддержка 2х версий то еще занятие. И почему то по прошествии стольких лет не наблюдается чтобы все выбросили поддержку. А из этого пункт 1

А вообще примерно что то такое и сделали когда нет кор делали. Кучу всего зарубили и создали кучу проблем при переходе. Уже сколько лет ему и почему еще куча народу сидит на 4.8 если ерунда переходить
Аноним 03/08/22 Срд 16:51:23 #37 №2423648 
>>2423645
Всё шарпогалеры в моей мухосрани на нет коре 6 сидят, хотя продуктам их по десятку лет
Аноним 03/08/22 Срд 16:54:36 #38 №2423656 
>>2423648
но это не значит что все в мире перешли и 4.8 закопали

>>2423644
ну в примере на мсдн используется окно в 512 метров
значит можно
Аноним 03/08/22 Срд 16:56:57 #39 №2423659 
>>2423656
Ну не переходят по причинам:
А - никому это не упало
Б - руководство не выделяет на это бабки
Аноним 03/08/22 Срд 17:00:09 #40 №2423664 
>>2423659
а я разве спорю
просто вырезая старые фичи несомненно получишь ситуацию где работают на старье ибо тупо перейти не могут / дорого стоит / долго.

И потому желать бринкинг ченжи что не приносят нового, а тупо удаляют старое,...ну вы поняли.
Аноним 03/08/22 Срд 17:03:37 #41 №2423669 
>>2423432
Ооот спасибо!
Аноним 03/08/22 Срд 20:23:45 #42 №2423907 
Чем Type отличается от object?
Аноним 03/08/22 Срд 20:30:03 #43 №2423918 
>>2423907
Туре описывает характеристики класса, а оЬjест - экземпляра.
Аноним 03/08/22 Срд 20:31:36 #44 №2423922 
>>2423918
Жерстко конечно, но спасибо.
sage[mailto:sage] Аноним 03/08/22 Срд 20:34:43 #45 №2423930 
>>2423907
Type это вся возможная информация о каком-то типе данных: структура, класс, рекорд, делегат, событие итд, а объект - это экземпляр конкретного класса, структуры или рекорда.
Аноним 03/08/22 Срд 22:33:28 #46 №2424082 
C# unity разработка вообще сейчас на
нормальное направление? Слышал, что юнити подыхает
Аноним 03/08/22 Срд 22:40:16 #47 №2424089 
>>2424082
>Слышал, что юнити подыхает
Пиздаболы ебаные. Сейчас наоборот дефицит в геймдеве лютый т.к никто не хочет им заниматься
Аноним 03/08/22 Срд 22:48:29 #48 №2424095 
>>2424089
Как же, дефицит, заходишь на условный хедхантер а больше нет ничего и видишь там всего 100 вакансий, и везде надо быть сеньором.
Заниматься хочет много кто, дохуя народу начинает изучать программирование именно с мечтой писать игры, но как увидят, что в вебе тысячи джунских вакансий, а в геймдеве нихуя, желание пропадает моментально.
Аноним 03/08/22 Срд 23:02:29 #49 №2424102 
>>2424082
Юнити не подыхает. Подыхает сам геймдев.
Аноним 03/08/22 Срд 23:04:27 #50 №2424104 
>>2424095
>а в геймдеве нихуя
Просто программисты в геймдеве не особо и нужны сейчас. Сейчас гораздо больше ценятся геймдизайнеры, сценаристы, художники.
Аноним 03/08/22 Срд 23:11:11 #51 №2424114 
>>2424095
>и везде надо быть сеньором.
У меня год назад не было опыта, позвонили из Кефир + написали на почту с просьбой пройти собес, лол. У меня даже опыта в геймдеве не было вообще (в резюме только десктоп был)
Аноним 03/08/22 Срд 23:27:45 #52 №2424132 
Где можно поподробнее изучить Linq?
Аноним 03/08/22 Срд 23:30:47 #53 №2424134 
>>2424132
Чтобы те, кто его поподробнее не изучал, не могли читать твой говнокод?
Аноним 03/08/22 Срд 23:34:04 #54 №2424135 
>>2424132
Что именно тебя интересует? Как он внутри работает или как пользоваться?
Аноним 03/08/22 Срд 23:36:02 #55 №2424137 
>>2424135
Первое. Хочу узнать, что там под капотом.
Аноним 03/08/22 Срд 23:52:23 #56 №2424146 
>>2424137
source.dot.net - исходники
sharplab.io - декомпилятор в IL, ASM и так же то, что делает компилятор С# под капотом

гугли еще что такое IEnumerable и IEnumerator.
Аноним 04/08/22 Чтв 00:23:37 #57 №2424162 
List или []?
Аноним 04/08/22 Чтв 00:26:00 #58 №2424163 
>>2424162
А тебе для чего?
Аноним 04/08/22 Чтв 00:27:30 #59 №2424165 
>>2424163
Мне в общем
Аноним 04/08/22 Чтв 00:27:41 #60 №2424166 
>>2424162
По задачам.
Аноним 04/08/22 Чтв 00:29:44 #61 №2424167 
>>2424166
То есть Task<List<T>> или Task<T[]>? Ты можешь нормально объяснить?
Аноним 04/08/22 Чтв 00:32:41 #62 №2424169 
>>2424167
Да.
Аноним 04/08/22 Чтв 00:36:34 #63 №2424171 
>>2424169
Что да?
Аноним 04/08/22 Чтв 00:39:13 #64 №2424173 
>>2424171
Пизда. Синее или красное?
Аноним 04/08/22 Чтв 00:41:14 #65 №2424176 
>>2424173
14 красное
Аноним 04/08/22 Чтв 00:43:16 #66 №2424177 
>>2424171
Раст
Аноним 04/08/22 Чтв 00:43:50 #67 №2424178 
>>2424176
В таком случае Task<T[]>
Аноним 04/08/22 Чтв 00:44:45 #68 №2424179 
>>2424177
ишка?
>>2424178
Как это связано?
Аноним 04/08/22 Чтв 00:55:13 #69 №2424182 
>>2424177
Ты бы ещё карбон посоветовал, толстяк.
Аноним 04/08/22 Чтв 01:16:06 #70 №2424186 
>>2424182
Каброн
Аноним 04/08/22 Чтв 02:09:22 #71 №2424201 
image.png
>>2423030 (OP)
Выручайте. как сделать форматирование строки прально?

Стоит visual studio 2022 с Resharper. В Visual studio 2019 такой проблемы не было, я там пересмотрел все настройки по шарпу, но чет вообще не нашел.

Очистка профиля стоит при сохранение файла.
Аноним 04/08/22 Чтв 09:29:01 #72 №2424275 
>>2424186
Леброн
я бы перешол
Аноним 04/08/22 Чтв 10:10:16 #73 №2424309 
Как HTTPClient'ом читать Content (то есть все эти String/FileResultContent)?
Аноним 04/08/22 Чтв 11:13:30 #74 №2424354 
>>2423030 (OP)
В предыдущем треде, хотел реализовать хранение хэш-таблицы (key-value) так, чтобы она могла вместить BigData.
Запилил вот эту еботу: https://github.com/username1565/KeyValue/tree/SimpleTXTStorage
но чёт она серанула с биг-датой, потому что string.Length там гигабайт где-то, а файлы читаются в строчки.

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

Но один анон написал это:
>даже в sqlite даже можно загрузить 281 ТБ (а еще можно сделать attach таких же 125 баз)
Короче, блядь, расчехлил свою PISDA.cs и заебенил это https://github.com/username1565/KeyValue/tree/SQLite3Storage
Можете потестить.

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

Аноним 04/08/22 Чтв 11:28:45 #75 №2424370 
>>2424354
>хотел реализовать хранение хэш-таблицы (key-value)
Ты че ебанутый? Хранить несколько гигов говна в памяти? Юзай бля Redis и не еби мозги
Аноним 04/08/22 Чтв 13:39:30 #76 №2424587 
Аноны, у моих сервисов есть различные методы с коллбеками, которые нельзя вызывать до тех пор, пока они не выполнят работу. Допустим, метод Authenticate:

- public void Authenticate(Action<SignInStatus> callback)
- public enum SignInStatus { Failure, Success, Pending, AccountBanned }

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

Правильно ли называть такой статус Pending? Или это скорее AlreadyInProgress?
Аноним 04/08/22 Чтв 13:57:33 #77 №2424599 
>>2424186
Нет блять, капрон
Аноним 04/08/22 Чтв 13:59:23 #78 №2424600 
>>2424370
>Хранить несколько гигов говна в памяти? Юзай бля Redis
А редис где гранит?
Аноним 04/08/22 Чтв 14:04:08 #79 №2424603 
>>2424309

многочисленные response.Content.ReadAs*, в том числе и расширения, например

response.Content.ReadAsMultipartAsync()

или расширения более высокого уровня вида

client.GetFromJsonAsync(...
Аноним 04/08/22 Чтв 14:05:08 #80 №2424604 
>>2424201
очистка чем? чем чистишь то. у решарпера свой механизм, у студии свой.
Аноним 04/08/22 Чтв 14:39:20 #81 №2424628 
>>2424600
Сука ты меня уже доебал
Аноним 04/08/22 Чтв 15:14:35 #82 №2424652 
>>2424600
Просто используй редис, чел. Это топовое решение.
Аноним 04/08/22 Чтв 15:32:47 #83 №2424661 
>>2424652
золотой молоток (с)
Аноним 04/08/22 Чтв 15:33:30 #84 №2424662 
image.png
Как вы относитесь к #region в коде? Используете? Если используете, то можете показать пример вашего кода?
Аноним 04/08/22 Чтв 15:35:11 #85 №2424664 
>>2424662
>Как вы относитесь к #region в коде
Негативно.
>Используете?
Крайне редко
Аноним 04/08/22 Чтв 15:38:44 #86 №2424665 
>>2424662
>Как вы относитесь к #region в коде?
положительно.
>Используете?
когда тяжелые классы с кучей методов.
Аноним 04/08/22 Чтв 15:51:20 #87 №2424674 
>>2424146
Спасибо
Аноним 04/08/22 Чтв 15:57:31 #88 №2424678 
>>2424662
Если это какой-нибудь запрос к БД или какой бойлерплейт, то да
Аноним 04/08/22 Чтв 15:58:45 #89 №2424680 
>>2423030 (OP)
https://hh.ru/vacancy/68273729
>Вакансия опубликована 3 августа 2022 в Новосибирске
>Откликнулся уже 1081 человек

Вкатуны, ебало ваше можно?
Аноним 04/08/22 Чтв 16:05:34 #90 №2424686 
image.png
>>2424680
Они ещё и далеко от центра, в самой жопе.
Аноним 04/08/22 Чтв 16:34:40 #91 №2424706 
>>2424662
Негативно Обычно если тебе хочется по какой-то причине завести region в теле класса, то скорее всего твой класс просится, чтобы его нужно разбили на несколько.
Плюс у меня первый тимлид очень сильно загонялся по тому, что все члены класса должны быть разбиты по регионам по их типу и модификаторы доступа (public constructors, public properties, protected properties, public methods и т.д.) На ревью МР-ов всегда доебывался. Читаемости это файлам не добавляло, зато бесило знатно. Благо я быстро допер , что можно поставить и настроить CodeMaid и прожимать его автоформатирование перед комитетом.
Аноним 04/08/22 Чтв 16:38:20 #92 №2424709 
image.png
>>2424706
> все члены класса должны быть разбиты по регионам по их типу и модификаторы доступа
Ну это уже совсем шиза. Хотя это можно встретить даже в коде .NET Runtime, типа пикрелейтед.
Аноним 04/08/22 Чтв 16:38:30 #93 №2424710 
>>2424686
Общался с ними года два назад, когда был переиюнем-недомидлом и искал работу. Предложили тестовое на 16-24 часа ещё до собеседования, из-за чего вежливо были посланы куда подальше.
Аноним 04/08/22 Чтв 17:10:27 #94 №2424727 
>>2424662
>Как вы относитесь
Нормально
>Используете
Да, но редко.
Аноним 04/08/22 Чтв 17:23:01 #95 №2424735 
>>2424162
Знаешь точно сколько данных тебе чего нужно - массив. Не знаешь - List
Все просто.
List - по факту в шарпе - обертка над массивом, которая буквально все что делает - хранит положение "курсора", при вставке происходит проверка вида:
if(Length + 1 > Capacity)
{
var temp = new T[Capacity * 2];
Array.Copy(_array, temp);
_array = temp;
}
... остальная логика вставки

Чтобы ты этой хуйней не занимался - сделали List
Аноним 04/08/22 Чтв 19:29:07 #96 №2424832 
>>2424706
Тимлида случайно не Денис звали? У меня был такой, требовал выделять region-ами каждую группу вроде properties, events, fields, methods, а в каждой группе еще и отдельные регионы по модификаторам доступа
Все это если в классе есть хотя бы два экземпляра чего угодно
Аноним 04/08/22 Чтв 20:13:50 #97 №2424855 
1659633229775.jpg
>>2424832
Его звали Роберт Полсон.
Аноним 04/08/22 Чтв 20:49:16 #98 №2424890 
>>2424662
1 раз по рофлу сделал
Аноним 04/08/22 Чтв 21:20:25 #99 №2424909 
>>2424162
Нахуя вообще нужны массивы когда есть списки? Единственное где я их встречал, это собес в Яндекс да, там был C#
Мимо 3 годика
Аноним 04/08/22 Чтв 21:43:10 #100 №2424924 
>>2424909
А как же массивы byte?
Аноним 04/08/22 Чтв 21:43:20 #101 №2424925 
>>2424909
Для того чтобы реализовывать свои списки и другие структуры данных, вестимо.
Плюс для случаев, когда приходится применять ArrayPool, чтобы не шатать GC.
Аноним 05/08/22 Птн 17:11:42 #102 №2425507 
>>2424652
>>2424354
Юзай Ignite чел!
Базарю еще захочешь
Аноним 05/08/22 Птн 23:42:54 #103 №2425884 
2022-08-0523-36-13.png
А можно как-то в WPF контролировать размеры иконок и где они вообще хранятся? Через свойства проекта чет пизданулось и иконка теперь не хочет обновляться.

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

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

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

В сети хуета какая-то с предложением загрузить через свойства проекта.
Аноним 05/08/22 Птн 23:51:55 #104 №2425889 
>>2424735
Я думал в куче создается еще один итем, а в предыдущем вставляют указатель на него. А у тебя не список а динамический массив какой-то.
Аноним 05/08/22 Птн 23:57:44 #105 №2425899 
>>2424662
Положительно отношусь. Для меня это как логическе группы и порой лучше, чем создавать Partial Class.
К тому же автоколлапс удобно все складывает.

Правда я веще люблю дописывать прочерки, типа

#region "-- My method --------------------------"
#endregion "-- My method --------------------------"
Аноним 06/08/22 Суб 00:12:35 #106 №2425916 
>>2424706
>то скорее всего твой класс просится, чтобы его нужно разбили на несколько.

У меня постоянно возникает дилемма с неймингом partail классов:
1) ты называешь файл так же, как класс и тогда у тебя куча:
MyClass, MyClass, MyClass, MyClass в которых хуй проссыш что где.
2) ты называешь в соответствии с логикой блока, но тогда получаешь вермишель из названия MyClassEhalGrekaCherezReku, при этом:
2.1) Название вкладки отжирает полэкрана и вообще нечитабельно
2.2) Нарушается синхронизация между фактическим названием класса и названием файла.
Аноним 06/08/22 Суб 01:17:00 #107 №2425962 
>>2425916
Нахуя тебе нужны partial классы? Для чего ты их используешь?
sage[mailto:sage] Аноним 06/08/22 Суб 07:01:19 #108 №2426030 
Петушарп ин э натшелл.
ДЖАВИСТЫ ПРИДУМЫВАЮТ SPRING
@
ПЕТУШАРПЕРЫ КОПИРУЮТ И ДЕЛАЮТ SPRING NET
@
ДЖАВИСТЫ ПРИДУМЫВАЮТ HIBERNATE
@
ПЕТУШАРПЕРЫ ДЕЛАЮТ РЕВОЛЮЦИЮ В ООП ПОД НАЗВАНИЕМ NHIBERNATE
@
В ЖАБУ ДОБАВЛЯЮТ ЛУМ
@
ЧЕЛЯДЬ, НОВШЕСТВО! ЗЕЛЁНЫЕ ТРЕДЫ! ЖРИТЕ!
@
ДЖАВИСТЫ НАЧИНАЮТ ПЕРЕКАТЫВАТЬ ТРЕД КАЖДЫЕ 500 ПОСТОВ
@
ПЕТУШАРПЕРЫ НАЧИНАЮТ ПЕРЕКАТЫВАТЬ ТРЕД КАЖДЫЕ 500 ПОСТОВ
@
В ДЖАВА ТРЕДЕ В ШАПКЕ СНОВА АНИМЕ
@
В ПЕТУШАРП ТРЕДЕ В ШАПКЕ СНОВА АНИМЕ
Аноним 06/08/22 Суб 08:30:19 #109 №2426048 
>>2426030
>SPRING NET
>NHIBERNATE
Эту хуйню никто не использовал и никогда не станут юзать, залетный дебил
Аноним 06/08/22 Суб 08:53:25 #110 №2426051 
Мда чел
Аноним 06/08/22 Суб 09:45:12 #111 №2426064 
>>2425889
Ну так стандартный List<T> и есть по сути динамический массив. Хочешь трушный связный список - юзай LinkedList<T>
Аноним 06/08/22 Суб 09:57:25 #112 №2426067 
>>2425962
Ну когда есть методы, которые можно логически обособить, но которые не нужны за пределами использования одного конкретного класса. Когда есть общие поля.

Просто класс? Ну допустим я хочу вынести все подписки на UI-элементы в отдельный блок. Это превратится в дополнительный гемор. И мне все равно нужно как-то указать, что этот класс принадлежит к конкретному классу окна и он не применим к другим. И в итоге получим Partial Class через жопу и для которого еще надо создавать экземпляр, и как-то передать 20 полей. Нахуй надо.

Что еще? Использовать наследование по моему мнению нужно, когда вариаций наследников больше одного. А когда у тебя ровно один наследник, то это ничто иное как partial class.
Аноним 06/08/22 Суб 10:42:32 #113 №2426077 
>>2425884
Разобрался. Оказывается в .ico можно хранить стак изображений разной величины, а шиндовс потом автоматом оттуда берет нужный объект. И все это можно тонко настроить в стандартном редакторе студии, если нужно, чтобы под кажыдй размер была своя уникальная картинка, а не просто скейлинг.

А "не обновлялось" у меня раньше потому, что конвертер за каким-то хуем сделал в формате 32бита, несмотря на исходник, а студия переваривает цветовую градацию максимум в 24 бита. даже в редакторе студии 32 бита недоступны, изображение просто лочится.
sage[mailto:sage] Аноним 06/08/22 Суб 11:20:47 #114 №2426095 
Насколько нужно быть наглухо отбитым долбоебом, чтобы переносить на новую строку {, но не переносить (? Алсо, какое же говноедство писать методы с большой буквы, мне страшно представить ваши ёбла, уроды
Аноним 06/08/22 Суб 12:02:35 #115 №2426132 
>>2426095
Есть три типа клинических уебанов, которые перекладывают свои проблемы с ОКР на плечи окружающих:
графические дизайнеры, гопники и программисты.

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

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

И то, что ты тут горишь — исключительно последствия особенностей твоего языка и класть болт на читабельность ради удобства, это высшая мера уебанства.
Аноним 06/08/22 Суб 12:20:11 #116 №2426153 
>>2426095
Не рассказывайте додстеру про линтеры и форматтеры
Аноним 06/08/22 Суб 16:25:30 #117 №2426312 
Без вышки есть смысл скуфу вкатываться в С# ? или путь один в php / js / ruby ?
Аноним 06/08/22 Суб 20:02:38 #118 №2426458 
>>2426312
Вышка это как цвет кожи.
Вот если ты белый, то вопросов к тебе минимум. Если же имеешь оттенок, то сразу будут вопросы, а не пушишь ли ты наркоту, не роббишь ли дома и т.д. И похуй, что будучи белым, ты можешь оказаться тем еще маньячилой насилующим котят, главное, что при первой встрече к тебе меньше вопросов будет.
Точно так же и с вышкой. Есть диплом - проходи, дальше разберемся. Нет, ну тогда готовь анус - сейчас будем проверять тебя за всю хуйню.

>>2426312
>Без вышки есть смысл скуфу вкатываться в С#
Да есть, но ты должен быть достаточно энергичным, чтобы успевать за тенденциями. В шарпе сейчас много. чего меняется и надо быть на волне.
Аноним 06/08/22 Суб 20:45:59 #119 №2426521 
>>2426458
> В шарпе сейчас много. чего меняется и надо быть на волне.
Зочем майки ето делают? Вот в goвне наоборот топят за минимум фич, и он сейчас очень в вебе популярен стал
Аноним 06/08/22 Суб 22:32:38 #120 №2426634 
>>2426030
Майки еще в нулевые создали шарп для того чтобы он был заточен под асп.нет - джава дебилы делают спринг спустя 10 лет который позволяет делать то же, что и шарп.
Майки придумали linq еще в нулевые - джава через 15 лет спиздила и назвала хибернейт.
Аноним 07/08/22 Вск 00:40:05 #121 №2426733 
>>2426634
Да да. Так и было
Ну всякие мелочи что хибернейт вышел наполгода раньше чем появился шарп, но то наговаривают
Аноним 07/08/22 Вск 02:53:06 #122 №2426790 
>>2426634
Пфф. LINQ. 900 строк кода на Scheme - и готов твой LINQ.
Аноним 07/08/22 Вск 04:07:21 #123 №2426801 
>>2426790
Ну так то LINQ разный бывает
Аноним 07/08/22 Вск 05:56:08 #124 №2426811 
image.png
>>2426030
ОН МОЯ КОНКУРЕНТ. ORACLE JAVA. БОЛЬ В МОЯ ДЫРКА ЗАДНИЦА. Я ДЕЛАЙ LINQ, ОН ДЕЛАЙ STREAM. Я ДЕЛАЙ ДЖЕНЕРИК, ОН ДЕЛАЙ ДЖЕНЕРИК. Я ДЕЛАЙ ASYNC/AWAIT. ОН НЕ СМОГ. РАДОСТНО!
Аноним 07/08/22 Вск 06:22:46 #125 №2426821 
>>2426811
>Я ДЕЛАЙ LINQ, ОН ДЕЛАЙ STREAM.
Я делай LINQ Expression, он делай ?????

>Я ДЕЛАЙ ДЖЕНЕРИК, ОН ДЕЛАЙ ДЖЕНЕРИК
Говорят, дженерик то НЕ НАСТОЯЩИЙ

>Я ДЕЛАЙ ASYNC/AWAIT. ОН НЕ СМОГ. РАДОСТНО
Кстати да. Возможность писать асинхронный код как синхронный это не мелочь по карманам тырить. Киллер фича
Аноним 07/08/22 Вск 10:53:12 #126 №2426900 
>>2426521
>Зочем майки ето делают?
Так исторически сложилось. Чтобы обогнать жабу по популярности им пришлось впиливать новые фичи тоннами. И что самое смешное, обогнать жабу так и не смогли, увы, потому что поздно пришли в линукс.
Но зато у шарпа есть какой-то процент рынка, что уже неплохо.

>>2426634
>создали шарп для того чтобы он был заточен под асп.нет
>придумали linq еще в нулевые - джава через 15 лет спиздила и назвала хибернейт
Толсто.
Аноним 07/08/22 Вск 13:06:49 #127 №2426978 
Если создать экземпляр окна в одном потоке, а запустить в другом, это сработает как работа окна в другом потоке?
Аноним 07/08/22 Вск 13:41:53 #128 №2427006 
>>2426978
Понял, нельзя
Аноним 07/08/22 Вск 14:34:02 #129 №2427039 
16549441690230.mp4
>>2426030
Как же джавистам "похуй". Они даже в каждом ОП-посте обязательно указывают C# в уничижительном ключе.
Аноним 07/08/22 Вск 14:47:24 #130 №2427043 
>>2427039
Двачую, уже не выдерживают у них нервы, не знают что бы такого написать. А ведь всё началось с того, что я один раз написал в их треде, сейчас они уже в трёх-четырёх перекаченных тредах пытаются что-то там высрать про шарп
Аноним 07/08/22 Вск 17:13:53 #131 №2427271 
>>2424832
>Денис
Кажется я тоже знаю одного Дениса с такими наклонностями
Аноним 07/08/22 Вск 17:17:19 #132 №2427280 
Есть какая-то литература по слоеной архитектуре? С примерами на шарпе? Все спасибо
Аноним 07/08/22 Вск 18:03:49 #133 №2427377 
>>2426030
>SPRING
Ненужное говно. Срсли. ASP - пижзе.
> HIBERNATE
Туда же. EF - пизже
> ЛУМ
В чем профиты, кроме того что внешне это выглядит как поток, а не как Task - я так и не понял. Может быть тупой.

А в остальном. Я не понимаю, хули жавистам так печет. Типа заебало сидеть на легаси, а для новых проектов таки берут либо котлин либо шарп? Ну, звиняйте. Никто не хочет ваше добро на новые жаватехнологии переписывать, а старая жава - пиздец ужасна. Еще и наворотили зоопарк систем сборок такой, что старый проект хуй соберешь без мастера некроманта. Так что да.
Аноним 07/08/22 Вск 18:20:41 #134 №2427399 
Когда в шарп завезут мультипарадигмальность?
Я хочу чтобы ООП - был вариантом, а не намертво приколоченной хуйней.

Ну серьезно, я надеялся, что с введением Top level statements - оно пойдет в том направлении. Но что-то я не вижу больше сподвижек.

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

Как же я бы хотел, чтобы деды на работе так не хейтили F#. Так удобно многие штуки на нем делать. Но не. Дедам не нравится ЕЩЕ ОДИН ЯЗЫК!!! И я как-бы понимаю. Но фишек там прикольных слишком много.
sage[mailto:sage] Аноним 07/08/22 Вск 18:30:07 #135 №2427408 
>>2427399
>Когда в шарп завезут мультипарадигмальность?
Никогда, надеюсь. Для этого есть F#. Я вообще думаю через лет 5 перекатываться в F# и функциональщину, а то меня эта ебатория с ООП, паттернами, правильными правилами просто настоебенила. Скукота...
Аноним 07/08/22 Вск 18:33:17 #136 №2427411 
>>2424114
А ты и сейчас десктоп? Я молодой джунишка-вкатунишка, сейчас тоже сижу на десктопе. Как грамотно подойти к самообразованию, чтобы потом в веб перекат сделать? P.S. Изначально вкатывался на жабу со спрингом, но в последний момент подвернулся варик с норм работкой на шарпе.
Аноним 07/08/22 Вск 18:43:02 #137 №2427424 
>>2427411
>А ты и сейчас десктоп?
Я начал с десктопа, но потом насильно перекатился в веб поскольку в моем провинциальном городке тяжко с работой. Планирую в ближайшие 2-3 года съебаться в ДС2 и уже заниматься формошлепстов на WPF.
>Я молодой джунишка-вкатунишка
Да я тоже, всего лишь год опыта коммерческого.
>Как грамотно подойти к самообразованию, чтобы потом в веб перекат сделать?
Нужны скорее более общие знания, чем непосредственно глубокие в ASP.NET Core, тебя скорее всего в вебе заставят клепать веб-апишки первое время, прям как меня. Если обобщить, то знания архитектуры приложений DDD/CHO и DI даст тебе больше, чем углубленные знания в самом ASP.NET Core. Это конечно не означает, что надо совсем забить хуй на платформу и идти дрочить сетевые протоколы
Аноним 07/08/22 Вск 18:50:38 #138 №2427436 
>>2427424
Че по зэпке? Мне про сотыгу через год говорят, но 2 друга жабиста по 160к с годом попыта в вебе имеют, хочется примерно также присосаться
Аноним 07/08/22 Вск 18:50:59 #139 №2427437 
>>2427408
А я вот надеюсь, что таки завезут.

И я вот за время работы с TS и JS парралельно - полюбил кучу фишек оттуда. Мне больше нравится как в ES6 сделаны импорты чем как оно в шарпе. Мне кажется удобным как сделаны экспорты. Мне хотелось бы чтобы я так же мог спокойно определить пару служебных функций не создавая статический класс с ними. Вообще - JS, если бы не был так сильно привязан к вебу - был бы топовым языком как по мне. Очень удобный. Очень гибкий. И штуки которые внедряются - действительно хорошие. При этом он не ушел в ту шизофрению, куда пошли плюсы, и не остается на месте как Си.
Аноним 07/08/22 Вск 18:54:49 #140 №2427440 
>>2427436
50к выход после налогов, ну это еще норм т.к я примерно 4 месяца на текущей работе, до этого пинал хуи на заводе программистом где пытался самобучаться, так что можно сказать, что коммерческого опыта - год, а нормального - 4 месяца.
Аноним 07/08/22 Вск 18:55:31 #141 №2427441 
>>2427437
>А я вот надеюсь, что таки завезут.
Я бы хотел чтобы завезли АОП полноценное
Аноним 07/08/22 Вск 19:50:16 #142 №2427473 
изображение.png
изображение.png
изображение.png
Как писать последний аргумент функции, с отступом и скобочкой на следующей строке, или без отступа и скобочкой в той же строке? А может с отступом и скобочкой в той же строке?
Аноним 07/08/22 Вск 19:55:31 #143 №2427477 
>>2427473
Считаю не стоит переносить, как на 3.
Аноним 07/08/22 Вск 20:31:19 #144 №2427523 
>>2426458
>ты должен быть достаточно энергичным
Я начал с фронтенда про быстроту наслышан, заметил что на шарпе много фуллстек вакансий с фронтом, в основном на ангуляре, поэтому заинтересовался, на джаве к примеру таких вакансий не замечал особо.
Получается можно в соло что то пилить на шарпе ? Или просто экономят на фронтендерах.
Аноним 07/08/22 Вск 20:41:05 #145 №2427537 
>>2427473
Если (открывающая скобка на новой строке)
{
тогда закрывающая тоже на новой;
неважно, какая это скобка(
фигурная,
круглая,
квадратная,
угловая);
}
Аноним 07/08/22 Вск 20:59:58 #146 №2427574 
>>2427523
>Или просто экономят на фронтендерах.
А зачвем много фронтов? Быстро делать дизайн по фигме любой даун сможет
Аноним 07/08/22 Вск 21:21:26 #147 №2427609 
>>2427574
И всё же на это надо тратить время. ещё и переключаться между двумя проектами, в одном бэк, в другом фронт. Когда можно сосредоточиться на бэке, как белый человек, а всю чёрную работу отдать вебмакакам.
Аноним 07/08/22 Вск 21:32:51 #148 №2427628 
>>2427609
>Когда можно сосредоточиться на бэке, как белый человек, а всю чёрную работу отдать вебмакакам.
Ну тащемта всё так и есть. Даже у меня на аутсорс галере есть блядина и еще пара долбоёбов которые верстают дрисню, а я и еще пара бравых ебашут бэк.
Аноним 07/08/22 Вск 21:54:49 #149 №2427654 
>>2427440
А зачем дс2. Удаленно же можно найти. Ну через годик.
Аноним 07/08/22 Вск 21:56:15 #150 №2427658 
>>2427574
>любой даун сможет
Анон я же не просто так написал про ангуляр и нест, у вас какие то понятия о фронте из 2000-х где с сервака шаблон отдаешь с формочкой. Посмотри проект на несте тс, там по типу спринга архитектура, это же не бутстрап.
Аноним 07/08/22 Вск 22:35:45 #151 №2427705 
image.png
>>2427658
Да похуй мне чем там во фронте. Я перекладываю жсоны и мне норм.
Аноним 08/08/22 Пнд 01:49:00 #152 №2427777 
>>2427523
>Или просто экономят на фронтендерах.
This.
Да один из видов экономи, причем достаточно тупой.
Аноним 08/08/22 Пнд 09:17:14 #153 №2427849 
Здрасьте, давно не пользовался этим вашим дотнетом. С какой версии можно юзать всякие Console, LinkedList и тд без using?
Аноним 08/08/22 Пнд 09:21:07 #154 №2427854 
>>2427849
Если тебе надо всё делать в одном файле - то .NET 6, если тебе надо юзать сабжи в разных файлах - то ни в какой. Алсо если ты в VS то можешь нажать комбинацию клавишу "Ctrl + .", откроется окошко и можно будет выбрать подключение юзинга, если требуется.
Аноним 08/08/22 Пнд 09:24:14 #155 №2427859 
>>2427854
Я просто не понял какого хуя я залетел щас в вижлу и могу спокойно юзать Linked list и Console без подключения пространств имён
Аноним 08/08/22 Пнд 09:27:28 #156 №2427862 
>>2427859
Хочешь юзать нервничая?
Аноним 08/08/22 Пнд 09:28:45 #157 №2427864 
>>2427862
Я разобрался, это implicit юзинги
Аноним 08/08/22 Пнд 09:28:48 #158 №2427865 
>>2427862
Аж трисёт при написании using.
Аноним 08/08/22 Пнд 09:29:17 #159 №2427866 
>>2427859
Ну это новый синтаксис класса Program, Ты можешь опять сделать структуру Program { Main() {}}, такой синтаксис сейчас вообще во всех проектах на .NET 6+
Аноним 08/08/22 Пнд 09:42:39 #160 №2427872 
>>2427864
Только почему из вижлы нельзя посмотреть какие глобальные юзинги используется в проекте?
Аноним 08/08/22 Пнд 11:02:34 #161 №2427900 
Почему когда я использую
MemoryMappedFile sharedMemory = MemoryMappedFile.CreateOrOpen("MemoryFile", size * 2 + 4);

то все работает норм, но если я это оберну в using, то при попытке чтения пишет, что не удалось найти указанный файл.
Аноним 08/08/22 Пнд 12:40:06 #162 №2427974 
Анон, а кто-то сейчас юзает треды? Я имею ввиду классическое использование:
Thread thread = new Thread(delatHuetu);,
когда мы руками раскидываем методы по разным тредам.

На ютубах почему-то вообще ничего по теме нету, только античные видосы 8-10-летней давности, остальная выдача вся про async/await. Может новый способ теперь какой-то более модный есть?
Аноним 08/08/22 Пнд 13:02:58 #163 №2427980 
Нуб в треде.

Делаю консольный блекджек на C#, и у меня есть класс-рисовальщик карт.
В зависимости от типа карты он отрисовывает её.. Так вот, как избавиться от кучи if-else(я слышал что это плохой код)

у меня что-то типа
if (card== 'A')
...
else if (card=="K")
...
else if(card=="10")
....
sage[mailto:sage] Аноним 08/08/22 Пнд 13:12:21 #164 №2427983 
>>2426634
>>2426811
ДЖАВИСТЫ ЗАЯВЛЯЮТ О ТОМ, ЧТО ПЕТУШАРПЕРЫ КОПИРУЮТ ВСЁ С ДЖАВЫ
@
ПЕТУШАРПЕРЫ ЗАЯВЛЯЮТ О ТОМ, ЧТО ДЖАВИСТЫ КОПИРУЮТ ВСЁ С ДЖАВЫ

Ору блять.
sage[mailto:sage] Аноним 08/08/22 Пнд 13:15:06 #165 №2427985 
>>2427974
ExecutorService
Аноним 08/08/22 Пнд 13:15:12 #166 №2427986 
>>2427983
@
И ТЕ И ЭТИ КОПИРУЮТ COMMON LISP
Аноним 08/08/22 Пнд 13:15:38 #167 №2427987 
>>2427985
Уйди блять.
Аноним 08/08/22 Пнд 13:17:41 #168 №2427990 
>>2427980
>В зависимости от типа карты он отрисовывает её
Плохой подход, у тебя 30 карт (или скока там хз) и ты под каждую рисуешь отдельную хуйню, так нельзя.

>Так вот, как избавиться от кучи if-else(я слышал что это плохой код)
Всё так, это пиздец а не код. Во-первых не используй строковые константы для сравнения чего-либо, для этого есть enum, во-вторых используй switch-case если у тебя действительно дохуя условий. В-третьих если у тебя выходит так, что код строится на дохуя условиях - он спроектирован неправильно бывают исключения, например MSIL инструкции, они обрабатываются по разному и для них switch-case уместен.

Сделай массив карт и отрисуй их в самом начале, а потом уже используй только те, которые на столе. Я не шарю в карточных играх, но если у тебя есть определенные "типы" карт, то ты можешь сделать класс который будет содержать нужный тебе тип карты, в таком случае количество условий уменьшится.
sage[mailto:sage] Аноним 08/08/22 Пнд 13:18:13 #169 №2427991 
>>2427980
На петушарпе никак.
Аноним 08/08/22 Пнд 13:18:34 #170 №2427992 
>>2427974
Никто треды не юзает потому что они нахуй не нужны. С ними слишком много ебатории, всякие дедлоки хуёки и прочее, легче юзать await Huita() и всё норм.
Аноним 08/08/22 Пнд 13:19:06 #171 №2427993 
>>2427983
Один хуй все новые фичи сначала появляются в хачкелях окамлах смоллтолках и прочих экспериментальных языках, а только потом уже в унылый энтерпрайз их запихивают.

>>2427974
Треды мало кто использует сейчас. В основном тредпулы, которые скрыты под несколькими слоями абсракций.
Аноним 08/08/22 Пнд 13:19:11 #172 №2427994 
>>2427991
Да не трясись)
sage[mailto:sage] Аноним 08/08/22 Пнд 13:19:18 #173 №2427995 
>>2427992
Да, а потом глубинные баги отлавливать.
sage[mailto:sage] Аноним 08/08/22 Пнд 13:20:13 #174 №2427996 
>>2427994
>)
@
ДА НЕ ТРЯСИСЬ
Аноним 08/08/22 Пнд 13:22:21 #175 №2427998 
>>2427995
>>2427996
Хуя у джавадебила пригорело, ты чего так взорвался? Ну есть у нас асинхронность, есть нормальный LINQ, скоро и у вас появится.
sage[mailto:sage] Аноним 08/08/22 Пнд 13:23:43 #176 №2428000 
>>2427998
БАХ
@
ТЫ ЧЕГО ТАК ВЗОРВАЛСЯ?
Аноним 08/08/22 Пнд 13:26:02 #177 №2428002 
>>2427998
Лол не появятся
Аноним 08/08/22 Пнд 13:26:54 #178 №2428004 
>>2428002
Оракл не осилил в синтаксический сахар?
sage[mailto:sage] Аноним 08/08/22 Пнд 13:30:19 #179 №2428008 
>>2427849
На петушарпе импорты вручную пишут?
Аноним 08/08/22 Пнд 13:31:48 #180 №2428011 
>>2427998
Асинхронность и сейчас в жабе есть, правда на уровне CompletableFuture, но тем не менее.
А так, зачем нужны async и await, когда есть виртуальные треды и любой блокирующийся код можно превращать в неблокирующийся?
sage[mailto:sage] Аноним 08/08/22 Пнд 13:33:51 #181 №2428019 
>>2428011
>А так, зачем нужны async и await, когда есть виртуальные треды и любой блокирующийся код можно превращать в неблокирующийся?
РЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ!!!!! НУ ТЫ НАПИШИ АСИНК, НАПИШИ))) НЕ МОЖЕШЬ)))))) ААХАХАХАХАХАХАХАХААХАХАХА))) ТУПАЯ РУСНДЖАВА))))))))))))) ЧТО ЗНАЧИТ ЗАЧЕМ???? ЛОЛ ВАТНИК)))) А Я МОГУ ПИСАТЬ ГОВНО))) ЭЭЭ БЛЯ ОТКУДА ДЕДЛОКИ(((((((((((((((((((((((((((((((((
Аноним 08/08/22 Пнд 13:35:55 #182 №2428022 
>>2428008
>На петушарпе импорты вручную пишут?
Ты о чем? В любом языке пишут в одном или нескольких языках строки вида "import govnoname".
>>2428019
Мань, причем тут async/await и дедлоки? Ах да..в джаве же нет удобной абстракции в виде Task, откуда тебе знать их разницу?
sage[mailto:sage] Аноним 08/08/22 Пнд 13:38:22 #183 №2428023 
>>2428022
АХАХХААХААХ ТУПАЯ ДЖАВА))) НУ УТЕБЯ НЕТУ ГОВНА! ТОЛЬКО В ПЕТУШАРПЕ ЕСТЬ КАКАШЕЧКИ! ПЕТУШАРП - ТОП ПО КАКАШЕЧКАМ! КОПРОБРО, ПОДТВЕРДИ!
sage[mailto:sage] Аноним 08/08/22 Пнд 13:39:05 #184 №2428026 
>>2428023
ПОДТВЕРЖДАЮ, КОПРОБРО!
Аноним 08/08/22 Пнд 13:41:49 #185 №2428029 
>>2428023
>>2428026

А ты бы разве не хотел чтобы было как в C#? Нет мыслей "эх, наверное в шарпике это полегче было бы.."
Аноним 08/08/22 Пнд 13:42:22 #186 №2428030 
>>2428022
>причем тут async/await и дедлоки
Дедлоки вряд ли просто так возникнут, а вот data race уже более вероятна, и тут уже нужно синхронизироваться грамотно, иначе хуев за шиворот легко получить.

Вообще в чем прикол async/await? В том, что мы просто пишем await Govno() и говно неблокирующе где-то запускается под капотом на особом тредпуле?
sage[mailto:sage] Аноним 08/08/22 Пнд 13:43:13 #187 №2428033 
>>2428029
Один раз было. Когда из-за стирания типов пришлось методы с разными дженериками по разному называть.
Аноним 08/08/22 Пнд 13:44:04 #188 №2428036 
>>2428033
Джава даже в дженерики не осилила? Пиздец...
sage[mailto:sage] Аноним 08/08/22 Пнд 13:44:26 #189 №2428037 
>>2428036
Петушарп даже в документацию не осилил?
sage[mailto:sage] Аноним 08/08/22 Пнд 13:46:04 #190 №2428040 
>>2428036
Петушарп даже в обратную совместимость не смог?
Аноним 08/08/22 Пнд 13:46:21 #191 №2428041 
>>2428037
Какую документацию? Уже в какой раз вижу этот аргумент, но никак не пойму. У нас огромная книга msdn, что не так? На каждый чих-пук есть пример, который с недавнего времени можно еще и на самом мсдн запустить
Аноним 08/08/22 Пнд 13:46:39 #192 №2428042 
Вообще, вот есть интересная задача. Есть N тредов, которые должны ждать сообщения от особого треда X. При этом все эти N тредов должны реально ждать, просто висеть и нихуя не делать. Как только они получают сообщение от Х каждому из них нужно вывести сообщение "STOP" и прекратить работу.

Как реализовать отправку сообщения от треда X таким образом, чтобы все N тредов не в бесконечном цикле крутились и жрали ресурсы ЦПУ, а просто были приостановлены планировщиком до тех пор, пока к ним сообщение не прилетит.
Так стоит учесть, что тред X может отправлять любые сообщения, но вывод стоп и прекращение работы нужно делать только в том случае, когда в тред прилетит конкретное сообщение, на которое были изначально подписаны N тредов.
Аноним 08/08/22 Пнд 13:47:08 #193 №2428043 
>>2428040
>Петушарп даже в обратную совместимость не смог?
Смог вроде, при переносе с .net 5 на .net 6 нихуя не сломалось кроме 1 строки которая пофиксилась примерно за 15 секунд.
sage[mailto:sage] Аноним 08/08/22 Пнд 13:50:21 #194 №2428046 
>>2428041
А ты можешь просто писать код и просто по итогам написания кода тыкнуть на кнопку генерации доков в идее и просто открыть сайт уровня https://docs.oracle.com/javase/8/docs/api/java/lang/String.html ?

>>2428043
АХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХАХАХАХАХАХААХАХАХАХА БЛЯТЬ ПЕТУШАРПЕР ГОРДИТСЯ ТЕМ, ЧТО У НЕГО ПРИ ПЕРЕЕЗДЕ НА НОВУЮ ВЕРСИЮ ВСЕГО ОДНА СТРОКА СЛОМАЛАСЬ???????????????????????????????????????????????????????
Аноним 08/08/22 Пнд 13:54:11 #195 №2428052 
>>2428046
почему джависты всегда срут на дотнетчиков а дотнетчики просто пишут код?
Аноним 08/08/22 Пнд 13:54:59 #196 №2428054 
>>2427992
>>2427974

>легче юзать await
Ты разницу между асихронностью и новым потоком осознаешь?

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

2. Невозможность использовать async, если ты пишешь либу для стороннего приложения.
sage[mailto:sage] Аноним 08/08/22 Пнд 13:55:09 #197 №2428055 
>>2428043
>Смог вроде, при переносе с .net 5 на .net 6 нихуя не сломалось кроме 1 строки которая пофиксилась примерно за 15 секунд.
А теперь представь, что ты делаешь что-то больше калькулятора и у тебя есть куча скомпилированных .jar (или что у вас там, .cs?) файлов, каждый из которых от разных разрабов, и доступа к исходникам для фикса этой одной строки у тебя нет к половине этих .jar. Что будет делать? Будешь ждать, пока все 300 разработчиков выкатят перекомпил? Или скажешь "нинужна" и обойдёшься без половины жарок? Или останешься на старой версии дотнета, и будешь терять новые багфиксы и фиксы уязвимостей?
Аноним 08/08/22 Пнд 13:55:45 #198 №2428056 
>>2427900
Какая же это ебанина, эти ваши MemoryMappedFile.
На пустом месте может пропасть файл.
sage[mailto:sage] Аноним 08/08/22 Пнд 13:56:02 #199 №2428057 
>>2428054
>2. Невозможность использовать async, если ты пишешь либу для стороннего приложения.
Что? В петушарпе есть проблемы при использовании внешних библиотек? Они работают не как твой собственный код?
Аноним 08/08/22 Пнд 13:57:42 #200 №2428060 
>>2428054
>Если у тебя не хватает мощны, то ты хоть усрись с асихронностью, но у тебя будут лаги, потому что это все еще один поток.

Разве await не стартует задачу где-то в отдельном потоке на внутреннем тредпуле?
Аноним 08/08/22 Пнд 14:03:01 #201 №2428070 
>>2427980
Для этого и существуют интерфейсы.

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

А если наоборот нужно узнать в какой карте произошло что либо, то делаются события.
Аноним 08/08/22 Пнд 14:04:10 #202 №2428071 
>>2428042
Смотря как у тебя реализованы эти потоки.
Можно сделать TaskCompletionSource, дать N потокам его Task, чтобы они его await, потоку X дать сам сурс. Когда надо, в сурсе юзаешь SetResult, и евейт закончится. Но это одноразовая тема.
Можно поискать разные классы синхронизации. Я знаю Monitor и SemaphoreSlim, но они вроде не подходят. Семафор сработает, если ты знаешь, сколько у тебя поток N. Но их дохуя разных, если зайдёшь на msdn в описание одного из этих, рядом будут ещё другие. Или ещё как поищи, хз.
Аноним 08/08/22 Пнд 14:06:37 #203 №2428076 
>>2428057
У меня был (есть) случай, когда нет контроля над сторонним приложением. Есть встроенный скриптовый язык, который может вызвать функцию нейм из условной библиотеки. Я не могу там установить await, поэтому приходилось работать через потоки, например для вызова окна, чтобы оно не фризило скрипт.
Аноним 08/08/22 Пнд 14:07:53 #204 №2428077 
>>2428070
У меня есть класс Gambler(От него наследуются крупье и игрок) И у этого гэмблера есть свойство Hand которое является массивом карт.
И у меня есть класс-отрисовщик, который отрисовывает кол-во фишек, например, или вот руку(карты) чела. Не думаю, что мне нужен интерфейс ICard, у меня класс Card. Или я просто тебя не понял)
Аноним 08/08/22 Пнд 14:55:13 #205 №2428111 
>>2428071
>чтобы они его await
Как эта штука под капотом работает? Там какой-то аналог wait/notify будет или бесконечные циклы aka spinlock?
Аноним 08/08/22 Пнд 14:56:35 #206 №2428113 
2022-08-0814-55-50.png
>>2428077
В сообщении присутствует слово из спам листа.
Аноним 08/08/22 Пнд 14:57:06 #207 №2428114 
Аноны, объясните плс одну вещь. Я попробовал посмотреть гайды на ютубе, но это только сильнее запутало. Есть стек, есть куча. В одном храняться значимые типы, во-втором ссылочные. Во-первых, нахуя это разделение нужно и на что это влияет при работе?
Так же не понял этого дроча со значимыми и ссылочными типами: допустим, есть у меня две переменные инт со значением 10. Получается, у меня в памяти существуют два независимых числа 10?
Если тип ссылочный, например, два стринга со значением "Hello". Это значит, что "Hello" существует только в одном экземпляре? А если я этот стринг решу запихнуть в метод аргументом и изменить его там? Я получу на выходе совершенно другую переменную? Или что?
Аноним 08/08/22 Пнд 15:03:47 #208 №2428119 
>>2428042
Barrier?
Аноним 08/08/22 Пнд 15:10:23 #209 №2428128 
>>2428113
Ну выглядит не очень что в классе Suits есть информация о том как его отрисовывать
Аноним 08/08/22 Пнд 15:18:50 #210 №2428138 
>>2428114
>Во-первых, нахуя это разделение нужно и на что это влияет при работе
Ну смари, у тебя - недержание кала, твои обосранные труханы маман кидает в специальный стек где лежат только лишь твои обосранные трусы, потому что стирать всё, что лежит в куче, например носки сестры, штаны бати, с твоим говном - не рационально, ибо всё будет вонять. Однако, это не отменяет того факта, что обосранные трусы бати можно закинуть в твой стек.

>допустим, есть у меня две переменные инт со значением 10. Получается, у меня в памяти существуют два независимых числа 10
Да

>Если тип ссылочный, например, два стринга со значением "Hello". Это значит, что "Hello" существует только в одном экземпляре
Не обязательно.
string str1 = "Hello";
string str2 = "Hello";
object.ReferenceEquals(str1, str2) //false

Однако,
string str1 = "Hello";
string str2 = str1;
object.ReferenceEquals(str1, str2) //true

>А если я этот стринг решу запихнуть в метод аргументом и изменить его там
Смотря как передашь. С этим можешь сам потыкаться, там много моментов которые описывать лень
Аноним 08/08/22 Пнд 15:33:33 #211 №2428152 
>>2428114
Тебе голову ломает ситуация со стрингами, а все потому что они, как это сейчас говорят, третьего гендера.

Стриг это по сути класс (ссылочный), который ведет себя как структура (значимый).
А все для твоего удобства, чтобы к примеру когда ты сравнивал две текстовых переменных, то сравнивались их значения, а не ссылки.
Иначе вот эти вот шутки никогда бы не были равны
string MyValue1 = "Hello"
string MyValue2 = "Hello"
Конечно же, все остальные классы сравниваются по ссылке, а не по своему содеражанию.

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

Стринг это полный набор исключений из всего обыденного.
Любая манипуляция со стрингами рождает новый экземпляр стринга.
Почему, да потому что стринг это массив определенной длины. А у тебя новые данные с бОльшим или меньшим размером.
Че делать тогда?
Вот есть у тебя стринг (A) и ты решил в него вписать конкатенацию двух слов "Hello"(B) + "World"(C), так вот будет создано две новых переменных, которые (B) и (C), плюс еще одна (D) как результат соединения первых двух.
Далее ссылка на твой оригинальный стринг (A) будет заменена на ссылку третьей переменной (D).
А что же будет с (A), (B) и (C)? Ну они будут тупо валяться, пока сборщик мусора их не удалит.

Поэтому не стоит в каких нибудь циклах с большими объемами данных вот так просто манипулировать стрингами. Застрет оперативу знатно.

НО тут у тебя возникнет вопросик. Если манипуляции рождают новый экземпляр стринга, то изменив стринг, переданный как аргумент в функции, снаружи этой функции не изменится. Ну вообще-то изменится, как будто менялось само содержание стринга.
Но это опять вот такой вот стринг. Если ты попытаешься переданный из нативной библиотеки стринг изменить, то ХУЙ она увидит изменения, перейдя по тому же адресу. Это только в C# у тебя будет некая иллюзия.
Аноним 08/08/22 Пнд 15:34:25 #212 №2428155 
>>2428138
Если я правильно понял, то:
string str1 = "Hello";
string str2 = "Hello";
object.ReferenceEquals(str1, str2) //false

Мы создаем две ссылки и два значения, а третья строка проверяет, одинаковые ли ссылки и выдает фолс.
string str1 = "Hello";
string str2 = str1;
object.ReferenceEquals(str1, str2) //true

Здесь мы создаем одно значение и одну ссылку и str2 присваиваем ссылку str1, и поэтому третья строка выдает тру. Правильно же?

Алсо, я не понял этого объяснения с труханами. Разве если бы стринг был значимым типом и лежал бы в стеке, он как-то влиял бы на инты?
Аноним 08/08/22 Пнд 15:43:44 #213 №2428169 
>>2428128
Слушай, а как по твоему устроен Image? В нем и хранится информация.
В нем есть информация о своих габаритах, о локальной позиции, и главное там есть массив пикселей в виде Bitmap.

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

0000000
0001000
0010100
0111110
0100010
0000000
Аноним 08/08/22 Пнд 16:04:33 #214 №2428195 
Господа, вот есть у меня например класс Int, и в нём есть поле или свойство Number. Как сделать так, чтобы при вызове объекта типа Int возвращался Number, ведь Int это же обёртка, просто сейчас приходится делать:

a = new Int
a.Number ....
Аноним 08/08/22 Пнд 16:07:07 #215 №2428198 
>>2428152
По объяснению показалось, что это жабатред
Аноним 08/08/22 Пнд 16:33:00 #216 №2428222 
>>2428155
>Если я правильно понял
Да, правильно

>Алсо, я не понял этого объяснения с труханами. Разве если бы стринг был значимым типом и лежал бы в стеке, он как-то влиял бы на инты?
Стринг не может лежать в стеке, в стеке лежат только value-types. Смари, в C# есть value-types и reference-types. value-types могут храниться как в стеке, так и в куче, а reference-types могут храниться ТОЛЬКО в куче. Операцией boxing мы можем value type -> reference type, операцией unboxing мы можем reference type -> value type.

Если непонятно откуда взялся боксинг/анбоксинг, то объясняю. C# код компилируется в CIL (иногда называют MSIL или просто IL). Нужен чтобы любой язык в платформе .NET запустился в другом языке. Например VBA можно запустить в C# и наоборот поскольку они оба компилируются в CIL. Так вот как раз таки в этом CIL есть две инструкции: boxing и unboxing о которых я и рассказал.

Небольшой пример когда value-types лежат в куче - это массив чисел, например int[]

Пример boxing:
int a = 10;
object boxed = a;
int unboxed = (int)boxed;

В CIL это будет выглядеть вот так:

IL_0000: ldc.i4.s 10 //a = 10
IL_0002: box [System.Runtime]System.Int32 //boxed = a
IL_0007: unbox.any [System.Runtime]System.Int32 //unboxed = (int)boxed
Аноним 08/08/22 Пнд 16:34:23 #217 №2428224 
>>2428195
вот этим
a = new Int
Ты не вызываешь, а создаешь новый экземпляр.

Если ты хочешь вносить какие-то стартовые значения при создании экземпляра, например свойству Number, то ищи что такое конcтруктор класса или структуры.
В итоге у тебя будет так: a = new Int(150)

Можно одно из свойств класса установить дефолтным, например так сделано в классе List, когда ты можешь писать так:
a = new Int()
a(20) = 150
вместо того, чтобы:
a = new Int()
a.Number(20) = 150
но нельзя реализовать это: a = 150, потому что "a" это всегда ссылка на твою "обертку".
Аноним 08/08/22 Пнд 16:35:28 #218 №2428227 
>>2428195
Переопредели explicit и implicit операторы
Аноним 08/08/22 Пнд 16:39:44 #219 №2428232 
>>2428227
Напиши пример, это как?
Т.е. анон может использовать
a = new Int
b = a

как если бы это было
a = new Int
b = a.Number


Так что ли? Не верю.
Аноним 08/08/22 Пнд 16:41:26 #220 №2428235 
>>2428227
>>2428232
Забыл добавить почему это работает. Вообще операторы explicit и implicit - это просто приведение типов, но при перегрузке этих операторов неявно переопределяется assignment operator, который явно нельзя переопределить. Именно поэтому возможно сделать так:

public readonly struct MyNumber
{
private readonly int _number;

public MyNumber(int number) => _number = number;

public static implicit operator int(MyNumber number)
{
return number._number;
}
public static implicit operator MyNumber(int number)
{
return new MyNumber(number);
}
}

Ну и теперь создадим небольшую хуиту:

public MyNumber Pizdec(int a, int b) //ТУТ ВОЗВРАЩАЕМ MyNumber
{
return a + b;
}

int myNumberResult = Pizdec(5, 5); //А ТУТ Int32
Аноним 08/08/22 Пнд 16:45:32 #221 №2428239 
>>2428232
>Так что ли? Не верю.
Ага, я когда это нашел - просто ахуел. Прикол в том, что это ведь даже на msdn написано: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/assignment-operator#operator-overloadability

>user-defined type can define an implicit conversion to another type
Аноним 08/08/22 Пнд 16:46:46 #222 №2428241 
image.png
>>2428235
Аноним 08/08/22 Пнд 16:51:43 #223 №2428245 
изображение.png
Что я делаю не так?
Аноним 08/08/22 Пнд 16:51:48 #224 №2428246 
>>2428227
спасибо, анончик!
Аноним 08/08/22 Пнд 16:52:32 #225 №2428248 
изображение.png
>>2428245
>>2428245
Аноним 08/08/22 Пнд 16:53:14 #226 №2428250 
>>2428248
У тебя _images = null, не объявил где-то.
Аноним 08/08/22 Пнд 16:53:19 #227 №2428251 
>>2428245
После слов вызвано исключение, для тебя пустой неинформативный газ? Понимаю.
Аноним 08/08/22 Пнд 17:39:38 #228 №2428291 
image.png
Аноны, читаю пикрил, очень нравиться. Но к сожалению, инглиша не хватает. Хочу узнать - есть ли она на русском? Стоит ли вообще искать?
Аноним 08/08/22 Пнд 17:50:06 #229 №2428303 
Анончики... Как вы программируете на этих ваших Жабах и сишарпах? Я охуеваю когда надо продумать ООП архитектуру для приложения и получается кал говна. Как? Как?
Аноним 08/08/22 Пнд 17:55:40 #230 №2428309 
>>2428303
Так а нахуя чето придумывать если уже всё придумано? Джун должен знать о паттернах и архитектурах. Миддл должен уметь их применять. Сеньёр должен знать, когда их применять, а когда нет.
Аноним 08/08/22 Пнд 17:58:15 #231 №2428312 
>>2428309
Ну вот хочу я консольную игру сделать, например. Начинаю продумывать сущности и тд. а выходит хуйня какая-то говно тупа куча классов кала, интерфейсы хуйни и ещё всё куча зависимостей
Аноним 08/08/22 Пнд 18:12:31 #232 №2428325 
>>2428312
Сейм щит. Все начинается логично и структурировано, пока не превращается с помойку, которая заставляет применять все больше помойных решений.

Ну видимо шутки про бесконечное переписывание кода взялись не с потолка. Недавно смотрел видео, где менеджер жалуется, что программист вместо написания условного калькулятора начинает придумывать новую механику перетягивания окон.
Аноним 08/08/22 Пнд 18:23:27 #233 №2428339 
>>2428325
Так получается что даже самые сеньеристые сеньеры рано или поздно в помойку кодовую скатываются что же это за хуйня такая
Аноним 08/08/22 Пнд 18:36:48 #234 №2428352 
>>2428339
Ну видимо поэтому и придумали солид принципы. Боль неизбежна, но зато с ней можно как-то справиться.
Аноним 08/08/22 Пнд 19:05:54 #235 №2428383 
>>2428325
>что программист вместо написания условного калькулятора начинает придумывать новую механику перетягивания окон.
Обосрался
Аноним 08/08/22 Пнд 20:17:18 #236 №2428426 
Есть нормальный способ обмена данными между приложениями? Все выглядит как ракетостроение с кучей говна или с требованием особых разрешений, сервисов, еще какой хуеты.

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

Ну и как второе фиксить? Я для этого и собсна их и использую, что я не знаю че там и когда второе приложение мне отправило. В ЭТОМ СУТЬ! Я пытался использовать булевый флаг как идентификатор для чтения записи, но это только снижает вероятность, а не устраняет проблему.
Аноним 08/08/22 Пнд 20:19:46 #237 №2428428 
>>2428426
> Есть нормальный способ обмена данными между приложениями?
СОКЕТЫ
Аноним 08/08/22 Пнд 20:20:33 #238 №2428431 
>>2428426
>Есть нормальный способ обмена данными между приложениями?
Каналы
Сокеты
Аноним 08/08/22 Пнд 20:24:41 #239 №2428434 
>>2428428
>>2428431
Соекты это разве не веб? Еще нехватало сервер поднимать или что-то вроде этого.
Аноним 08/08/22 Пнд 20:26:25 #240 №2428436 
>>2428434
Ну у тебя будет очень простой TCP сервер на локалхосте, который будет принимать и отправлять нужные данные.
Аноним 08/08/22 Пнд 20:26:31 #241 №2428437 
>>2428434
Нет не веб
Аноним 08/08/22 Пнд 20:31:07 #242 №2428440 
>>2428436
>>2428437
Лан, пошел гуглить. Говорят, что все API на этом основаны.
Аноним 08/08/22 Пнд 22:25:43 #243 №2428520 
1.png
>>2428440
>>2428437
>>2428436
Посмотрел вот это
https://www.youtube.com/watch?v=QohqDyTjclw&t=222s

Короче причины по которым точно не Сокеты:
1. Нужно запускать хост от имени администратора (пользователь нахуй пошлет)
2. Импорт библиотек. Тоже нет. Дело в том, что мой проект — это плагин в виде библиотеки для стороннего приложения, а ублюдочный .NET ищет импортируемые либы по месту запуска exe, а не по месту запуска dll. Я не имею права скидывать что либо за пределы своего загона для плагинов. Решения этого вопроса я пока не нашел.

Именно из-за множества ограничений я принял решение, чтобы моя библиотека запускала еще одно приложение (уже мое), в котором можно использовать все что угодно (пикрил схема).
Аноним 08/08/22 Пнд 22:53:38 #244 №2428529 
>>2427974
смысла нет использовать такой неудобный синтаксис. Есть унифицированный подход TPL и то, что бОльшей части задач хватает пула. А если даже и нужен выделенный поток, то даже там есть LongRunning
Так что такой старый подход нужен если хочется к ядрам поприбивать или Abort(но его вырезали, так что причин поубавилось)
Аноним 08/08/22 Пнд 23:09:35 #245 №2428537 
>>2428520
хуй знает, вопрос не изучал, но когда делал свою модульную хуйню, мой длл подсасывал херню возле себя из своей папки.
Аноним 08/08/22 Пнд 23:13:21 #246 №2428540 
>>2428537
Может exe, который запускал твой длл, находился в той же папке? В большинстве случаев так и происходит.

Или ты тоже плагины делал?
Аноним 08/08/22 Пнд 23:14:10 #247 №2428541 
image
>>2428312
> игру сделать
Для игр идеально подходит Entity Component System (ECS). Игровой движок Unity3D как раз сейчас переходит на эту систему. Тот же Overwatch написан на ECS:
https://www.youtube.com/watch?v=zrIY0eIyqmI
Аноним 08/08/22 Пнд 23:16:34 #248 №2428543 
>>2428520
>а ублюдочный .NET ищет импортируемые либы по месту запуска exe, а не по месту запуска dl
Для старого дотнета там вроде событие было нужно определить. Для нового AssemblyLoadContext
Аноним 08/08/22 Пнд 23:19:08 #249 №2428544 
>>2428540
Я же написал, что из своей папки. Да, свои плагины делал.
Аноним 08/08/22 Пнд 23:22:02 #250 №2428547 
Пишу простенький веб сервак. Хочу сделать возможность подтягивать к нему шарповый бэк. Вопрос - как это реализовать? Сейчас идея прокидывать ассембли бэка и уже из сервака его запускать но пока выходит какая-то хуйня. Норм вообще идея или посоветуйте что-нибудь получше?
Аноним 08/08/22 Пнд 23:25:13 #251 №2428550 
>>2428543
не ну динамическая загрузка это не тот функционал какой есть через imports, когда тебе доступны все методы и посдказки и intellesence. Это больше похоже на импорт нативных библиотек.
Это поможет для критичных ситуаций, но это не то тэффект, когда ты просто в конфиге указываешь папку для подхвата библиотек.
Аноним 08/08/22 Пнд 23:29:29 #252 №2428554 
>>2428550
не знаю о чем ты.
объявляешь контракты (интерфейсы) и пишешь себе со всеми подсказками и проектами.
А в рантайме будет загружена нужная реализация.
Именно так плагины и пишут (и по другому никак, ведь тут вам не питон чтобы можно было компилить код не зная типов, а динамик не для этих случаев)
Аноним 08/08/22 Пнд 23:37:56 #253 №2428557 
>>2428554
Можно подробнее? Вот я загружаю либу
Assembly asm = Assembly.LoadFrom("Plugins/MyApp.dll");

И дальше я должен получить конкретный метод
MethodInfo? square = t.GetMethod("Square", BindingFlags.NonPublic | BindingFlags.Static);

Вот оно так и работает. Какие интерфейсы?
Аноним 08/08/22 Пнд 23:44:47 #254 №2428559 
>>2428557
Да, так и работает. Дальше square.Invoke()
Аноним 08/08/22 Пнд 23:46:02 #255 №2428560 
>>2428303
Ебош казуально dependency injection и катайся еблом по клаве
Аноним 08/08/22 Пнд 23:48:50 #256 №2428561 
Стикер
>>2428559
Ну эта жи ниудобна. Проще dll юзать как мост, а всю логику выполнять в рядом лежащем exe (так, кстати, многие плагины для той приложухи и сделаны).
Мне только осталось найти годный метод обмена информацией.
Аноним 08/08/22 Пнд 23:54:15 #257 №2428563 
>>2428561
Та ты заибал. Просто подключи свою хуйню к проекту как dll, References -> Add reference и не еби мозгу. Если проект на C++ - используй маршаллинг.
Аноним 08/08/22 Пнд 23:59:17 #258 №2428565 
>>2428557
>И дальше я должен получить конкретный метод
А какова причина ей работать именно так?
У тебя либо полная динамика (то есть ты не можешь знать в рантайме типов, а значит и IDE нечего подсказывать - он тоже не может знать), либо ты типы знаешь, а значит никаких MethodInfo просто нет - работает обычный cast и все плюшки

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

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

Лютый примитив примерно так
1 делаю интерфейс IPlugin
2 Реализую его в длл
3 гружу длл
4 ищу класс реализующий IPlugin
5 инстанцирую
6 вызываю его методы.

можно наплодить сколько угодно интерфейсов вида IFeature
можно сделать IPlugin.Run(context)
Свобода же. И при этом типизация.
Аноним 09/08/22 Втр 00:10:49 #259 №2428569 
>>2428557
то есть никто вот такие MethodInfo не плодит
объявляются контракты, а дальше какой то механизм типа MEF/IoC/велосипед находит нужные реаизации и затыкает эти контракты в рантайме.

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

Вот, например, аспнеткор - там всякие OWIN
так он просто объявляет кучу фич, которые могут быть реализованы, а могут и нет
IFeatureCollection,
IHttpRequestFeature,
IHttpResponseFeature
IHttpRequestBodyDetectionFeature
...
их там много, то есть буквально каждый чих
и потом в нужном месте получать реализации через такой код

context.Features.Get<IHttpRequestFeature>()

где Features просто коллекция, которую при тестах можно заполнить заглушками, а в рантайме ее заполняет механизм работы с плагинами. (и даже там можно не рефлексировать, а что то типа IPatform.GetFeatures)
Аноним 09/08/22 Втр 00:23:49 #260 №2428578 
>>2428563
Ты думаешь я не пробовал так? Только ищет он эту либу по пути exe основного приложения.
Все стандартные либы нормально импортируются, а вот все что требует референса — пишет, что файл не найден.

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

>Делаешь интерфейсы с которыми и работаешь в IDE а в рантайме связываешь. Так все делают даже если плагины не пишут.
Начиная с этого момента я совсем не понимаю о чем речь. Вероятно ты ожидаешь немного другое от того, что я называю плагином.
На самом деле есть некое приложение, у которого есть свой скриптовый язык
и там есть функция, способная вызвать метод из библиотеки, выглядит это так
[Function_Name, Library_Path, argument1_string, argument2_float, argument3_memoryMap]
Собсно и все возможности коммуникации с моим "плагином". Даже типы аругментов строго обозначены.

Далее в своей библиотеке у меня есть метод
public static float MyFuncton(string argument1, double argument2, intPtr argument3)
{
return 0
}

И да, эта библиотека мимикрирует под нативную, с экспортом функций.
Аноним 09/08/22 Втр 00:29:55 #261 №2428583 
>>2428578
> нативную библиотеку
Ну если речь идет о нативных библиотеках, то можешь забыть все что я написал
Там да, есть проблема вида "не могу найти загрузить нативную часть", что бывает с некоторыми нюгет пакетами врапперами над нативом и я хз как это решается.
Аноним 09/08/22 Втр 00:44:36 #262 №2428599 
>>2428583
У меня только функции экспортированы.
Обычно же, когда ты используешь управляемую библиотеку, то ты должен сначала обратиться к неймспейсу, классу, а потом к методу. А мне нужно было, чтобы функции уже были точками входа — как это работает при [DllImport("")]

Я не думаю, что это делает код в моей библиотеке неуправляемым, ну по крайней мере я наблюдал работу сборщика мусора.
Но проблемы есть с асинхронностью, с референсами библиотек.
Аноним 09/08/22 Втр 00:52:02 #263 №2428602 
>>2428599
>когда ты используешь управляемую библиотеку
с управляемой библиотекой я могу загрузить ее явно откуда угодно. Или переопределить механизм резолва через AssemblyLoadContext

с нативными библиотеками можно использовать для загрузки длл
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.nativelibrary
но я его не пробовал
Аноним 09/08/22 Втр 02:12:48 #264 №2428640 
>>2428599
вообще тебе нужно

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);

если платформа позволяет
Аноним 09/08/22 Втр 08:10:55 #265 №2428680 
В общем. Такая проблема. Почему на ARM Cortex-A7 с флеш-памятью 512МБ и 256МБ оперативки - так долго стартуют даже маленькие программулины?

Просто думали о том, чтобы использовать этот ваш кор для написания служебного приложения. Рулило бы там очередями задач, логи работы вело, собирало какие-то данные и писало бы в SQLite. Но так оно жрало все ресурсы. Решили - ну, хули, будем только небольшие программулины в духе юникса: запустили - оно в stdout результат дало мы его дальше на сях используем. И тут - проблема в том, что оно тупо долго стартует. Пока оно стартанет - такая же хуйня на си - уже завершит выполнение.

Как, блядь, быть? При учете, что сишника нормального - хуй найдешь, а шарповода - хуй научишь писать нормальный код на си.
Аноним 09/08/22 Втр 08:45:56 #266 №2428689 
Аноны, в далеком 2013 году пару месяцев кодил в консольке, написал игру, рулетку и пару мелких хуевин, но формы не изучал, базы данных не затрагивал. Как думаете, имеет ли смысл в 33 года пробовать дальше изучать чтобы вкатиться? Сколько понадобиться времени если заниматься по 4-5 часов в день? Жалею что не вкатился тогда, но были причины, то проблемы со здоровьем, то смерть близких и прочее дерьмо
Аноним 09/08/22 Втр 08:50:10 #267 №2428690 
>>2428689
>Сколько понадобиться времени если заниматься по 4-5 часов в день
Конечно смысл есть. Вкатишься за полгода.
Аноним 09/08/22 Втр 09:07:11 #268 №2428697 
>>2428689
>Сколько понадобиться времени если заниматься по 4-5 часов в день?
Если самостоятельно, то от полутора до двух лет. Если с чьей-то помощью, то можно за год уложиться. Если мозги варят и ты дышишь темой, то можно за полгода все выучить, но это скорее всего не твой вариант.
Винформы, впф, мауи и прочий десктопный шлак сразу забудь - пустая трата времени. В геймдев, если раньше с ним дела не имел, тоже не суйся.

Изучай сам шарп (начиная с Core 3.1, ниже нет смысла).
Параллельно ООП с паттернами (на это сильно можно не налегать, главное понять, а остальное с опытом придет), структуры данных.
Далее учишь ASP.Net Core WebApi (только WenApi, всякие MVC и прочее нахуй) и остальное связанное с вебом (HTPP, REST и т.д.).
Далее (вернее параллельно с предыдущим пунктом) базы данных и ORM (Entity Framework Core, Dapper)
После этого учишь Html, CSS, чистый JS и какой-нибудь фреймворк на нем. Либо ангуляр, либо реакт (я бы посоветовал второе, но не настаиваю). Учишь на уровне, чтобы понимать особенности самого языка и чтобы если пришлось залезть во фронт просто понимать, что и как там крутится, чтобы можно было увязать с бэком. Ну или так, чтобы хотя бы мог простенький компонент накидать.

Это примерный путь бэкэндера, на данный момент с таким стеком реально с нуля устроиться в офис или на удаленку на з.п. 40...60К и где-то через полгода-год удвоить эту сумму. Через год-два это все так же будет актуально (с примечанием только, что нужно будет хорошо шарить в .Net6)
Все остальные пути в шарпе - хуета и потеря времени.
Аноним 09/08/22 Втр 09:33:24 #269 №2428703 
>>2428680
Это такая жирнота, чтобы пнуть c#?
Аноним 09/08/22 Втр 09:36:00 #270 №2428704 
>>2428703
Всё не придёшь в себя после вчерашнего набега жабоблядей/шарпоблядей в треды друг друга? Хорошо, что репорты работают, и шизиков потёрли.
Аноним 09/08/22 Втр 10:34:11 #271 №2428718 
Почему булеан весит 4 байта — это даже выше, чем чар.
Есть что-то легче байта? Мне нужно вписать нолик и единичку.
Аноним 09/08/22 Втр 10:39:55 #272 №2428720 
>>2428718
Это тебе кто такое сказал? bool весит 1 бит. Можешь загуглить или сам в консоли написать Console.WriteLine(sizeof(bool))
Аноним 09/08/22 Втр 10:40:05 #273 №2428721 
>>2428718
Какая разница, всё равно alignment сожрёт сэкономленные байты.
Аноним 09/08/22 Втр 10:40:52 #274 №2428722 
>>2428720
> 1 бит
Чёт дохуя.
Аноним 09/08/22 Втр 10:43:40 #275 №2428725 
>>2428722
Согласен.
Аноним 09/08/22 Втр 10:50:35 #276 №2428728 
2022-08-0910-49-59.png
>>2428720
Да? В бейсике сайзе оф выдает 4.
А пикрил по c#
Аноним 09/08/22 Втр 10:51:30 #277 №2428729 
>>2428728
короче вот
https://www.cyberforum.ru/csharp-net/thread341534.html
Аноним 09/08/22 Втр 10:51:34 #278 №2428730 
>>2428718
Легче байта для единичного значения не выйдет. У тебя цп адресует память побайтово. Если нужно хранить несколько булевых значений - гугли битовые векторы
Аноним 09/08/22 Втр 10:56:56 #279 №2428734 
>>2428729
>киберфорум
Нашел блять кому верить. Оператор sizeof возвращает число байт, выделяемых средой CLR в управляемой памяти. В управляемой памяти будет 1 байт, а в не управляемой - 1 бит.

Когда у тебя появляется вопрос по кишкам CLR - иди на MSDN, а не на какие-либо другие форумы. Но на двач можешь, не зря же я разбирался в этом говне, надо хоть где-то знания применять эти
Аноним 09/08/22 Втр 10:57:32 #280 №2428735 
>>2428697
>Винформы, впф, мауи и прочий десктопный шлак сразу забудь - пустая трата времени.
Исчх, WinForms до сих пор топ для Windows-only десктопа. В конторе юзаем паралелльно с вебом. Да и петы набросать можно. Недавно видел вакансию на 6к$, а зумеры всё никак не могут похоронить деда.
Аноним 09/08/22 Втр 10:58:05 #281 №2428736 
>>2428734
>В управляемой памяти будет 1 байт, а в не управляемой - 1 бит.
sizeof возвращет для управляемой, Marshal.SizeOf для неуправляемой.
Аноним 09/08/22 Втр 10:59:36 #282 №2428737 
>>2428703
Нет. Просто, внезапно, местные вузы выпускают людей, которые относительно нормально знают шарп-жаву-питон и совсем не знают плюсы/си. На заводе нужны программисты. Руководство не готово держать людей, пока они освоят плюсы на уровне нормально - нужно чтобы они что-то полезное делали. Плюс трубы горят - нужно много чего для железа писать.
Писать на шарпе - было бы очень удобно. Но пока что все изученные сценарии показывают, что чтобы оно нормально работало - нужно минимум гиг оперативки иметь и процессор помощнее. Но это ведет к удоражанию железа. А никто не будет покупать сами устройства, если они будут даже на 30% дороже, а тут оно будет раза в 2 дороже.

Вот я и хотел узнать. Может быть кто с подобным сталкивался и знает как можно было бы на вот таком, относительно слабеньком железе заставить если уж не летать, то хотя бы приемлемо стартовать программулины, чтобы пока с такой платформой живем - хотя бы какие-то мелкие программулины служебные можно было на шарпе писать, ну, допустим какую-то программку, которая бы опрашивала бы состояние датчиков устройства и отдавала в стандартный вывод и ее раз в 100ms бы уже программа на плюсах дергала. Или программулина бы которая бы сидела и в последовательный порт отдавала бы что-то полезное, чтобы можно было по rs232 почитать.
А пока выходит - что ну совсем-совсем на шарпе под что-то кроме серверов дорогущих, да десктопов - ничего и не попишешь.
Аноним 09/08/22 Втр 11:02:14 #283 №2428739 
>>2428737
>А никто не будет покупать сами устройства, если они будут даже на 30% дороже, а тут оно будет раза в 2 дороже.
Пентиум дуал кор 2 гига 2 ядра - 3000 рублей в худшем случае, 2 гб ОЗУ - 1000 рублей.
Аноним 09/08/22 Втр 11:16:10 #284 №2428744 
>>2428737
Чел, вот давай без инсинуаций про слабые компьютеры. Если ты хочешь шарп на микроконтроллерах использовать, то ты ебанутый. Если у вас компьютер на заводе на ARM Cortex-A7, то вы ебанутые.

Да и то, речь идет про стартовый запуск, а не про скорость работы в целом. Ебать привереды у вас там, подождать 30 секунд в падлу.
Аноним 09/08/22 Втр 11:46:09 #285 №2428762 
>>2428739
Все устройство целиком стоит 2к рублей, няша. Это уже произведенное.

>>2428744
Не на микроконтроллерах. Это вполне себе сейчас компьютер. С линуксом, пусть и кастомным. По производительности - что-то в районе малинок первых поколений.
Про первый запуск идет речь, потому что в контексте long-running - шарповские приложения - нещадно жрут оперативу и хрен как с этим бороться. Изначально как раз идея была в том, чтобы core-приложение переписать на шарпы, но в таком случае - оно через пару дней работы при активной загрузке - просто уходило на флешку, а это уже пиздец как больно.
Соответственно, если для постоянной работы оно так себе - было решено посмотреть со стороны unix-вея, пусть быстро что-то делает полезное. Но тут - как раз внезапно долгий старт даже мелких приложений.
Аноним 09/08/22 Втр 13:51:17 #286 №2428817 
Кто-нибудь работал с Azure Functions? Насколько кривая или нормальная вещь? Мне нужно для написания серверной логики игры (загрузка профиля, выдача наград и тому подобное).
Аноним 09/08/22 Втр 17:10:43 #287 №2429067 
Подкиньте идей для пета. По языку в целом и кору в частности.
Аноним 09/08/22 Втр 17:52:06 #288 №2429098 
>>2429067
Делай интересный проект какой-нибудь. Я уже заебался смотреть все эти интернет-магазины, канеш тема не должна меня ебать, должен ебать только лишь код, но это не отменяет, что смотреть интересный проект - интереснее.

Пример - сделай мини-аналог sharplab.io, юзай Mono.Reflection для получения IL кода. Наебаш там ООП всякого поверх кода который будет идти из услового TextBoxну или <area>, не имеет значения

Еще можешь сделать просто рофельный проект. Алсо советую купить домен какой-нибудь eblan-anon.dev и арендовать сервак, 3к в год будет выходить где-то, и развертывать туда свою парашу, покажешь еще и скиллуху по CI/CD, ваще цены тебе не будет тогда.
Аноним 09/08/22 Втр 18:06:11 #289 №2429111 
Почему у меня анимации в wpf идут рывками при перетаскивании окна?
Аноним 09/08/22 Втр 18:44:08 #290 №2429131 
>>2429098
>sharplab.io

https://sharplab.io/#v2:CYLg1APgAgDABFAjAVgNwFgBQUBMitZQCcCAbAHQBKArgHYAU9AlHALwB8CiR9ARAC4BTAM79eTJhkxA\

Какая же дрисня под капотом у этого асинк-эвэйта...
Есть доклады где подробно разбирают кишочки state machine, которую компилятор высирает?
Аноним 09/08/22 Втр 19:04:18 #291 №2429144 
sdfsdf.mp4
>>2429111
Включи какой нибудь проигрыватель видео, запусти короткое видео, чтобы указатель на таймлайне двигался быстро, и попробуй в режиме воспроизведления видео пошевелить окном. Там таймлайн тоже зафризится или будет идти рывками.
Графика это вещь дорогая, и если не хватает мощны, то луше окно будет двигаттся стабильно, но внутри все тормозить, чем и то и другое. Это результат оптимизаций.
Еще любят всякие анимации и передвижения вешать на таймеры, которые сами по себе выдают нестабильную частоту.

Недавно тоже боролся с реалиями GUI. Видеорил, там два колорпикера и тут интересно смотреть за передвижением цветопробы за куросором. Вариант слева — это из программы CorelDraw, реализовано достаточно очевидно т.е. прямоугольничек движется за куросором при событии MouseDown, но шо мы видим? А у него фпс с гулькин хуй (еще и намеренно залочили).

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

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

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

Первым делом скажу, что обычный цикл в асинхронной функции работает куда быстрее и ровнее таймеров.
Ну или забей (но частично), потому что так везде и даже большие компании, как из моего видоса, собсно кладут болт.
Аноним 09/08/22 Втр 19:06:23 #292 №2429146 
>>2429111
>>2429144
Хуёво быть вами, парни. А вот у нас на qt не так...
Аноним 09/08/22 Втр 19:09:08 #293 №2429154 
>>2429144
все немного не так.

Дело тут совсем не в мощности компа.

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

Но если ты откроешь второе такое окно в другом UI потоке, то сразу заметишь что в первом окне начались фризы.
Даже на слабом компе типа core i9 + 1080ti
Аноним 09/08/22 Втр 19:16:02 #294 №2429157 
>>2429146
В qml контент даже растягиваться не успевает вслед за окном, видно черную полосу, что уж про полноценные анимации говорить.
Аноним 09/08/22 Втр 19:19:09 #295 №2429161 
>>2429157
Так qml та ещё хуета, все нормальные люди на виджетах пишут.
Аноним 09/08/22 Втр 19:23:16 #296 №2429165 
>>2429161
Так а зачем сравнивать виджеты с впф? Виджеты аналог winforms, это говно не пригодно для современных приложений.
Аноним 09/08/22 Втр 19:26:51 #297 №2429170 
>>2429165
Ты сказал?
Аноним 09/08/22 Втр 19:29:52 #298 №2429172 
>>2429165
Современные приложения - это веб. И нет разницы, юзать qml, wtf или борланд, всё равно надо копаться в легаси.
Аноним 09/08/22 Втр 19:31:17 #299 №2429175 
>>2429172
Плюсую, гуи мёртв. Веб - это быстро, красиво и главное мультиплатформенно.
Аноним 09/08/22 Втр 19:39:03 #300 №2429180 
>>2429172
>>2429175
Сколь либо сложные приложения в вебе не сделать.
Аноним 09/08/22 Втр 19:41:14 #301 №2429181 
>>2429180
Сколь либо сложные приложения в гуе не сделать.
Аноним 09/08/22 Втр 19:42:34 #302 №2429182 
>>2429181
Любитель пердолиться с терминалом, ты?
Аноним 09/08/22 Втр 19:43:16 #303 №2429183 
>>2429131
>Какая же дрисня под капотом у этого асинк-эвэйта
Двачую, можешь еще глянуть в че превращается yield и dynamic
Аноним 09/08/22 Втр 19:43:34 #304 №2429184 
>>2429182
Нахуя, если есть удобный браузер?
Аноним 09/08/22 Втр 19:43:59 #305 №2429185 
>>2429182
А разве есть что-то что работало бы быстрее терминала?
Аноним 09/08/22 Втр 19:46:13 #306 №2429188 
>>2429185
Пока в терминале введёшь команду, в гуе уже десять кнопок нажмёшь.
Аноним 09/08/22 Втр 19:50:04 #307 №2429190 
>>2429188
Долбоёб, я чуть со стула не упал. У тебя амп равняется 10 что ли?
Аноним 09/08/22 Втр 19:51:57 #308 №2429193 
>>2429190
Гуй быстрее терминала.
Аноним 09/08/22 Втр 19:54:28 #309 №2429195 
>>2429193
Ты сказал?
Аноним 09/08/22 Втр 19:55:22 #310 №2429197 
>>2429195
Гуй сказал.
Аноним 09/08/22 Втр 19:57:06 #311 №2429199 
Почему в треде традиционно виндового языка, столько пердолек?
Аноним 09/08/22 Втр 20:00:33 #312 №2429202 
>>2429199
Больше нечем гордиться.
Аноним 09/08/22 Втр 20:01:49 #313 №2429205 
>>2429199
Иронично что традиционно виндовый язык имеет тулсет в винде хуже чем на линуксе
Аноним 09/08/22 Втр 20:07:34 #314 №2429210 
>>2429205
На винде есть студия, винформы, а на линуксе нихуя.
Аноним 09/08/22 Втр 20:12:30 #315 №2429216 
>>2429210
Я так и сказал - юзерам "традиционной" платформы кроме как говном на лице похвастать и нечем.
Аноним 09/08/22 Втр 20:14:16 #316 №2429220 
>>2429205
Двачую, разработка под виндой это какой-то кромешный пиздец.
Если с WSL, то еще куда ни шло для мелких хуевин, а вот если без него, то это поминки...
После консоли в убунте виндовая кажется совсем уж убогим поделием.
Аноним 09/08/22 Втр 20:14:29 #317 №2429221 
>>2429216
Ясно, прыщебляди неприятно.
Аноним 09/08/22 Втр 20:17:07 #318 №2429222 
>>2429221
Да не плачь ты
Аноним 09/08/22 Втр 20:18:51 #319 №2429223 
>>2429222
Не плачь.
Аноним 09/08/22 Втр 20:24:13 #320 №2429225 
>>2429223
Не плакай
Аноним 09/08/22 Втр 21:35:00 #321 №2429275 
>>2428440
У майков есть какая-то своя реализация именованных каналов посмотри в них, может поможет.
Аноним 09/08/22 Втр 23:34:04 #322 №2429340 
>>2429275
Да, вот прям щас это смотрю.
Сначала нашел анонимные каналы, потом перешел на именованные.
В целом, это как мемори маппинг, только без гемора.

Только там какая-то магия на этапе чтения, непонятная для меня.
Все работает, просто я это не могу осознать шо там происходит.
Что-то, что запускается из середины кода без эвейтов и событий, как будто GoTo какое-то.
Завтра разберусь и напишу.
Аноним 10/08/22 Срд 03:50:49 #323 №2429418 
Кто там хотел видеть ImlicitUsings
вот и завезли.
Аноним 10/08/22 Срд 11:55:04 #324 №2429574 
Я правильно понимаю, что для создания приложения, вписывающегося в дизайн современной винды, мне придётся использовать левые либы, сами майки не предоставили нужные шаблоны?
https://github.com/Kinnara/ModernWpf
Аноним 10/08/22 Срд 12:03:24 #325 №2429578 
>>2429574
Майки рассчитывают, что для новых версий винды ты будешь использовать UWP MAUI
Аноним 10/08/22 Срд 15:27:07 #326 №2429720 
Стикер
>>2429340
Короче НИХУЯ непонятно че там происходит.

Ну допустим я установил соединение с сервера с клиентом.
Вот я посылаю клиенту 3 сообщения
BinaryWriter bw = new BinaryWriter(pipeServer);
bw.Write("Иванов");
bw.Write("Иван");
bw.Write("30");


Далее клиент пытается считать данные
BinaryReader br = new BinaryReader(pipeClient);
temp = br.ReadString();
temp = br.ReadString();
temp = br.ReadString();


Что происходит? На самом деле данные записываются в массив в примерно таком порядке: "ИвановИван30", а ридер передвигается по байтам, зная размер символа и длину сообщения.
При каждом ReadString() "каретка" сдвигается, пока не упрется в конец и не возникнет исключение о конце потока.

Так вот у меня ВОПРОС. Правильно я понимаю, что если я снова впишу
bw.Write("Петров");
bw.Write("Петр");
bw.Write("25");
То у меня будет уже "ИвановИван30ПетровПетр25" и так будет расширяться до конца страницы, потом далее и далее пожирая оперативу? Эти данные не очищаются?
Аноним 10/08/22 Срд 15:37:44 #327 №2429725 
>>2429720
Так вот. Если я не хочу, чтобы это говно разросталось, я просто прекращаю существование экземпляра BinaryWriter. Например окутываю его в Using.

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

Я не могу сдвинуть каретку, я не могу узнать длин, потому что
BinaryWriter.BaseStream.Position
BinaryWriter.BaseStream.Length

недоступны.
Аноним 10/08/22 Срд 15:42:11 #328 №2429727 
>>2429720
с чего вдруг каналам вести себя не так же, как ведут себя обычные сетевые соединения. Точно так же ведут.
Аноним 10/08/22 Срд 15:47:37 #329 №2429729 
>>2429727
Я с сетью никогда не связывался. Я не знаю как с этим поступать.
Аноним 10/08/22 Срд 16:29:23 #330 №2429770 
>>2429729
ну там много тумана, но образно - есть входные и выходные буферы. Запись заполняет, чтение очищает.

Вопрос в том, что будет если пишем и пишем, но не читаем. Тут система попробует расширить буферы (и заблокирует Write на это время). Ну а если исчерпается пул буферов - видимо Write просто замрет.

Я не очень понял использует ли он просто буфер для всего или для каждого запроса берет из пула (а-ля ArrayPool.Shared.Rent) но исходя из рекомендации, что размер буфера должен быть достаточно малым чтобы не исчерпывать пул буферов, но достаточно большим чтобы поместился запрос - видимо второе

хотя я хз как помещаются очень большие данные тогда.
Аноним 10/08/22 Срд 16:33:21 #331 №2429773 
Какой же уебищный язык этот си шарп, ява в дохуилиард раз лучше, пиздуйте писать игрушки на своем юнити, хули вы в интерпрайзе забыли?
Аноним 10/08/22 Срд 16:34:26 #332 №2429774 
>>2429773
Конкретно что ты не осилил сказать можешь?
Аноним 10/08/22 Срд 16:52:07 #333 №2429785 
>>2429729
>Я с сетью никогда не связывался
Ты делаешь запрос на сервер. Сервер должен послать тебе данные в сокет. Он может буферизировать данные перед отправкой.

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

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

Так работают все - Stream, Pipelines, Channel, сеть, пайпы.
Разница есть в подходах работы с памятью - запись может быть заблокирована при заполнении буфера (Stream), а может быть попытка увеличения буфера (MemoryStream), а может смело жрать всю память (Channel.CreateUnbounded) или же иметь лимит (Channel.CreateBounded), который заблокирует запись (back pressure) до освобождения места.

Да и вместо расширяемого через удвоение буфера (который может расширить до безумного размера один большой кусок данных, а потом он зря такой и будет висеть) могут использоваться мелкие буферы, с которыми работа идет как с "одним большим куском" (Pipelines)
Аноним 10/08/22 Срд 16:56:57 #334 №2429790 
>>2429725
то есть пайпы это не файлы. Stream же не значит FileStream и никакого сдвига каретки попросту нет.
Конкретно по пайпам можешь почитать тут https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createnamedpipea

там в Remarks про буферы пишут. Хотя опять же - все по верхам.
Аноним 11/08/22 Чтв 09:48:53 #335 №2430279 
>>2429790
Ну вот про буферы непонятно. Буфер заполняется при каждом write? Или сообщение не отправится, пока я не заполню буфер врайтами?
Аноним 11/08/22 Чтв 10:10:29 #336 №2430289 
image.png
Джуны ебаные, быстро все сюда. Что выведится в последней строке?
Аноним 11/08/22 Чтв 10:18:26 #337 №2430292 
>>2430289
Запусти блять.
Аноним 11/08/22 Чтв 10:37:42 #338 №2430301 
>>2430292
Джун, отвечай, что выведется?
Аноним 11/08/22 Чтв 10:49:04 #339 №2430309 
>>2430289
Вопрос с подъебом. Зависит от архитектуры на которой ты это будешь запускать.
Аноним 11/08/22 Чтв 11:04:48 #340 №2430314 
>>2430309
Значит, шарп как кресты, а не как жаба?
Аноним 11/08/22 Чтв 11:05:42 #341 №2430316 
>>2430309
Но ведь дотнет рекламировался как архитектурно-абстрактная управляемая платформа. Как же так-то?
Аноним 11/08/22 Чтв 11:23:02 #342 №2430330 
>>2430289
Очевидный false
Аноним 11/08/22 Чтв 11:59:53 #343 №2430347 
>>2430314
>>2430316
Дебилы, спок. На чем бы вы не писали процессор интерпретирует отрицательные числа иначе нежели положительные. Если просто запустить -0 == 0, то будет true, вне зависимости от архитектуры, я не углублялся как это реализовано в .NET, но вероятно CLR руками интерпретирует -0 как 0.
Аноним 11/08/22 Чтв 12:10:22 #344 №2430360 
>>2430347
> я не углублялся как это реализовано в .NET
Оно и видно.
Аноним 11/08/22 Чтв 12:15:02 #345 №2430366 
>>2430347
Для инта что -0 что +0 в битах одинаковы, для дабла уже нет.
Аноним 11/08/22 Чтв 12:19:21 #346 №2430373 
>>2430360
Разработчик платформы, ты?

>>2430366
Да, это знаю. Высрал хуйню какую-то.
Аноним 11/08/22 Чтв 13:41:09 #347 №2430456 
>>2430316
Если оставаться в пределах абстракций, то да. Если начинать лезть в биты-байтики и ансейф, то уже не очень.
Все по канону: «C# was built to give the developer a gun but leave the safety turned on».
Аноним 11/08/22 Чтв 13:45:58 #348 №2430460 
Че за даппер, че за ефкор? А где божественные хибернейт и спринг? Вы че рил на кале пишете?
Аноним 11/08/22 Чтв 14:09:40 #349 №2430482 
>>2430453
>>2430460
Да не трясись ты, говно.

>Че за даппер, че за ефкор
Ну первая позволяет быстро + некрасиво SQL синтаксис обращаться к БД, вторая позволяет красиво + не так быстро LINQ, IQueryable, но всё равно достаточно быстро.

>хибернейт и спринг
EFCore, спринг был спизжен с ASP.NET.
Аноним 11/08/22 Чтв 14:10:37 #350 №2430484 
Как отменить функцию, например Sleep, если она выполняется дольше положенного времени?
Аноним 11/08/22 Чтв 14:15:25 #351 №2430488 
>>2430484
>Sleep
Не используй. Есть асинхронный Wait(). Как отменить? Просто. Буквально недавно в .NET 6 добавили метод для Task-ов, называется WaitAsync(), где мы можем передать время, через которое выполнение задачи нас не интересует. Через заданный промежуток времени, ожидание результата выполнения задачи будет прекращено, а также будет сгенерировано исключение TimeoutException

Wait и WaitAsync - разные по назначению, хоть и схожи по названию. https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.waitasync?view=net-6.0
Аноним 11/08/22 Чтв 14:28:27 #352 №2430499 
>>2430484
Ещё есть CancellationToken. Если твоя функция принимает такой, можешь сделать свой сурс токена, и отменить его через время. Только учти, что сурс нужно диспоузить.
Аноним 11/08/22 Чтв 14:34:20 #353 №2430507 
>>2430488
>недавно в .NET 6
А в netFramework?

>Sleep
>Не используй.
Дело не конкретно в этой функции. Есть другая, например у сервера WaitForConnection. А что если подключения никогда не случится?

При чем на стороне клиента есть асихронная функция, а на стороне сервера нет. Я понимаю, что к серверу вообще могут не подключиться и это норм, но я все же ожидаю, что клиент подключится в течение N времени, иначе у него проблемы.
Аноним 11/08/22 Чтв 14:35:57 #354 №2430510 
>>2430507
>А в netFramework?
Обосрался. Ну тогда реализовывай руками через cancellationToken.
Аноним 11/08/22 Чтв 14:49:09 #355 №2430527 
>>2430510
> Обосрался.
Большинство серьезных контор в эрефии на фреймворке сидит.
Аноним 11/08/22 Чтв 14:55:49 #356 №2430531 
>>2430510
Ну вот, не робит
https://pastebin.com/v1w86eTJ

>Обосрался.
По техническим причинам не могу, ILDASM и ILASM не работают с core. Или распаковать в IL можно, но нельзя упаковать, не помню.
Аноним 11/08/22 Чтв 15:09:27 #357 №2430545 
>>2430531
Тэк. А где ты токен из сурса токена юзаешь то? Ыхых. Ну отменил ты сурс, токен то где проверяется? Если ты юзаешь функцию, которая его (токен) принимает, она этот токен в ходе своей работы проверяет. И ес чо выкидывает как раз таки ошибку. Ты никуда токен не положил. Так что ты сам и должен проверять. Вообще, у тебя сурс доступен в Sleep, но было бы логично, чтобы Sleep принимал Токен (не сам сурс), и в цикле после Thread.Sleep его проверял. Ну или перед.
Аноним 11/08/22 Чтв 15:11:23 #358 №2430546 
Анон, подскажи, будут ли у джуна спрашивать про dynamic, unsafe или про гоняния битов туда-сюда (всякие операторы <<, >>, bitwise операторы и так далее)? По моему имху это крылья, приваренные хуями к корове, потому что для таких извращений есть специальные языки, но рыночек может думать иначе.
Аноним 11/08/22 Чтв 15:13:59 #359 №2430549 
>>2430546
Там же учить не так много. Думаешь, джун не осилит?
Аноним 11/08/22 Чтв 15:18:48 #360 №2430554 
>>2430549
Ну вот я как будущий джун вообще нихуя в этих темах не понял. И еще больше не понял, нахуя они нужны. Автор учебника тоже не понял и честно об этом написал.
Аноним 11/08/22 Чтв 15:21:39 #361 №2430556 
>>2430531
Ты не можешь запустить асинхронный метод в новом потоке, первый же await остановит поток. Потоки - они для синхронных задач, для асинхронных - Task. Выбирай либо async/await и отмена через токен, либо Thread'ы которые не поддерживают отмену, но есть вот это https://docs.microsoft.com/ru-ru/dotnet/standard/threading/canceling-threads-cooperatively

>>2430546
Про bitwise операторы будут, unsafe и dynamic могут спросить просто по приколу, знаешь ты что-нибудь или нет, но там не так много изучать, можешь глянуть вообще что делает dynamic в sharblab.io, а еще через unsafe ты можешь изменить readonly/const
Аноним 11/08/22 Чтв 16:18:50 #362 №2430594 
>>2430554
>dynamic
Нужен когда ты работаешь с COM объектами, например ебучем экселем или когда ты подключаешь условную либу 1997 года написанную на Visual Basic 3.0

>unsafe
Ну тут ваще всё просто. Например StringBuilder, он внутри имеет просто char[] который во время Append "удлиняет" в памяти. Вот тут посмотри внимательно на неизвестные тебе методы и погугли что они делают. https://source.dot.net/#System.Private.CoreLib/StringBuilder.cs,3afde4d6a6a867f9,references

>bitwise operators
Тут тоже просто, они используются в алгоритмах зачастую и при оптимизации и так уже десять раз оптимизированного кода. Почему? Да потому что большинство процессоров для bitwise operator имеют свои инструкции которые выполняются на 0.000000001 наносек быстрее, чем условные 3 инструкции подряд которые дадут такой же результат, как и та одна инструкция. Пример - гугли что быстрее / или * там затронута тема будет >> для степени двойки.
Аноним 11/08/22 Чтв 16:22:45 #363 №2430602 
>>2430594
>https://source.dot.net/#System.Private.CoreLib/StringBuilder.cs,3afde4d6a6a867f9,references
Ссылка правильная, прям так и скопируй, джвачь не сожрал её правильно.
Аноним 11/08/22 Чтв 17:22:48 #364 №2430665 
>>2430279
Имхо сообщение отправляется сразу же, а буферизация используется для помещения сообщения в буфер перед отправкой, чтобы сразу вернуть тебе управление

То есть получится ситуация,что ты просто положил в буфер и думаешь оно уже отправлено, а это не так (если на той стороне малый буфер)
Аноним 11/08/22 Чтв 17:28:44 #365 №2430674 
Продолжение истории про NamedPipes.

Пока тестировал на консольном приложении, не заметил, что если ридер выходит в конец потока, то он ждет, пока сервер не отправит новые данные.

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

Пришлось ридер выносить в отдельный поток, но теперь если я закрою приложение и не закрою перед этим поток, то это говно заставляет мой кулер в компе вращаться со скоростью света.
Аноним 11/08/22 Чтв 17:30:02 #366 №2430676 
>>2430482
>вторая позволяет красиво
ага, если работает. а если что то не так то приходится чесать тыковку чтобы понять что не так и как сделать так.

имхо правильнее Dapper + Linq для генерации SQL для этого даппера чтобы стринги не конкатенировать
Аноним 11/08/22 Чтв 17:33:18 #367 №2430681 
>>2430674
ну и зачем тогда ты так накодил?
Аноним 11/08/22 Чтв 17:39:26 #368 №2430688 
>>2430681
Как так? Я вообще ничего и не делал особо.
Аноним 11/08/22 Чтв 17:41:01 #369 №2430692 
>>2430688
так, чтобы что то заставляло кулер вращаться
учитывая что чтение (а уж тем более ожидание) пайпа это I/O операция, то есть даже проц не занимает
Аноним 11/08/22 Чтв 17:43:56 #370 №2430695 
>>2430545
>Вообще, у тебя сурс доступен в Sleep

Бля, да я для примера Слип показал. На самом деле этот слип не мой, я не могу туда влезть, понимаешь?
Я блять показываю стандартынй слип, мне пишут "Не используй слип", да как вам показать АБСТРАКТНО?

Вот есть функция WaitForConnection, которая ожидает коннекта клиента. Она запустилась и заморозила поток, но клиент так и не подключился. Как мне эту хуйню теперь отменить? Это не моя функция.
Аноним 11/08/22 Чтв 17:45:39 #371 №2430696 
>>2430695
Если у тебя невнятная функция, которую ты не можешь изменить, и она сама не подразумевает отменяемость (через тот же токен), то тебе пизда.
Аноним 11/08/22 Чтв 17:45:59 #372 №2430697 
>>2430695
у тебя же старый фреймворк
можешь абортнуть поток
Аноним 11/08/22 Чтв 17:53:07 #373 №2430711 
>>2430696
В смысле, но люди же эту хуйню придумали? Как с ней работать?

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

Поток убить не могу, я могу туда просто послать команду отмены. А дальше что? Внутри поток меня залочен ожиданием ответа от сервера.
Аноним 11/08/22 Чтв 17:53:34 #374 №2430713 
>>2430594
И вот это вот все надо знать джуну? Я думаю его даже близко не подпустят ко всем этим вещам, там на каждом шагу можно обосраться.
Аноним 11/08/22 Чтв 17:59:21 #375 №2430719 
>>2430711
>Поток убить не могу
но можешь.
Аноним 11/08/22 Чтв 18:05:07 #376 №2430728 
>>2430711
>Поток убить не могу, я могу туда просто послать команду отмены. А дальше что? Внутри поток меня залочен ожиданием ответа от сервера.
А дальше делаешь Join потоку
Аноним 11/08/22 Чтв 18:09:29 #377 №2430733 
>>2430728
>А дальше делаешь Join потоку
>Блокирует вызывающий поток
И как это поможет?
Аноним 11/08/22 Чтв 18:13:26 #378 №2430743 
Пиздос, только заметил, что перекат был. В итоге писал в прошлый тред...
Аноним 11/08/22 Чтв 18:16:21 #379 №2430747 
>>2430733
Поставил Join(100) и вроде теперь не виснет в диспетчере задач, но я так и непонял что это. Уже поша какая-то магия.
Аноним 11/08/22 Чтв 18:16:51 #380 №2430749 
image.png
Всем привет. У меня имеется интерфейс, который имеет в себе protected метод Move(). Я этот метод реализую в классе Car, после я наследую класс Car. Как мне вызвать protected метод IMove.Move() в классе наследнике? Можно ли вообще так делать? Пожалуйста, объясните.
Аноним 11/08/22 Чтв 18:17:13 #381 №2430751 
image.png
И ещё один вопрос, почему я могу реализовать метод, который в интерфейсе protected через модификатор public?
Аноним 11/08/22 Чтв 18:24:58 #382 №2430758 
>>2430747
какая магия?
ты запустил в потоке свой WaitForConnection и он повис
ну делаешь ты Join к этому потоку из основного потока, Join блокирует и основной поток но выходит по таймауту и основной поток оживает, а WaitForConnection так и остается жить в своем мире

никакой магии. смысла только нет
Аноним 11/08/22 Чтв 18:35:16 #383 №2430763 
>>2430758
>а WaitForConnection так и остается жить в своем мире
В смысле поток не убивается?

Статус потока AbortRequested, клиент сообщает, что канал связи нарушен.
Аноним 11/08/22 Чтв 18:37:31 #384 №2430767 
>>2430713
>И вот это вот все надо знать джуну
Нет, всё что тебе нужно знать: dynamic для совместимости, unsafe, bitwise для оптимизации. Но знания которые я привел выше удивят лида с которым ты будешь проходить собес, что какой-то гой без опыта знает такие детали.
Аноним 11/08/22 Чтв 18:40:55 #385 №2430770 
>>2430749
>Можно ли так делать
Можно. Только чтобы вызвать этот метод тебе нужно будет сделать следующее:
IMove movable = new Car()
movable.Move()

Если хочешь иначе - пиши public void Move(), или оставь две реализации.
Аноним 11/08/22 Чтв 18:41:28 #386 №2430772 
>>2430763
Join это метод синхронизации. Он ничего не делает с потоком к которому Join. Ну разве что сообщает о результате "закончился ли поток или таймаут вышел"
Аноним 11/08/22 Чтв 18:45:10 #387 №2430783 
>>2430749
Ебать ты накодил.
Во первых, интерфейсы созданы для того, чтобы... определять интерфейс классов, то есть то, как с ними взаимодействуют. Поля и методы интерфейса и должны быть паблик. Если ты хочешь сделать протектед метод, то тебе скорее нужен абстрактный класс с абстрактным методом.

Во вторых. Ты в своём классе Car объявил метод void IMove.Move без модификатора доступа, а дефолтный модификатор доступа в шарпе private. Ты не можешь получить к нему доступ из наследников.

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

В четвёртых. ебать, что у тебя с проперти CarName происходит.
Аноним 11/08/22 Чтв 18:47:23 #388 №2430785 
>>2430770
да, так и думал, но до конца надеялся, что обойдётся без экземпляра класса. Странна штука, вроде в интерфейсе метод protected, а в классе он уже private....
Аноним 11/08/22 Чтв 18:50:49 #389 №2430789 
>>2430783
я эту залупу чисто для примера высрал. Насчёт private...если я явно реализую интерфейс, то по дефолту, в классе, ставится модификатор private и его нельзя изменить...
Аноним 11/08/22 Чтв 18:51:18 #390 №2430791 
image.png
>>2430783
отклеилось
Аноним 11/08/22 Чтв 18:52:37 #391 №2430794 
>>2430791
А бля у тя интерфейс протектед, да и поху. Нахуя тебе сейчас вообще протектед методы и интерфейсах? Ты их предназначение понимаешь?
Аноним 11/08/22 Чтв 18:53:49 #392 №2430795 
>>2430783
Про переопределение в курсе. Ещё раз, это чисто для примера. Я щас на интерфейсах сижу, вот и захотел понять, что тут за херь такая. Про абстрактный класс, да, буду иметь ввиду.
Аноним 11/08/22 Чтв 18:54:26 #393 №2430797 
>>2430794
Нет, не понимаю.
Аноним 11/08/22 Чтв 18:54:49 #394 №2430798 
>>2430797
Ну вот и не используй.
Аноним 11/08/22 Чтв 18:55:08 #395 №2430800 
>>2430798
а если хочеца?
Аноним 11/08/22 Чтв 18:56:56 #396 №2430802 
>>2430800
Тогда узнай зачем. https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/proposals/csharp-8.0/default-interface-methods
Аноним 11/08/22 Чтв 18:58:14 #397 №2430805 
>>2430783
>В четвёртых. ебать, что у тебя с проперти CarName происходит.
А что тут не так?
Аноним 11/08/22 Чтв 18:58:16 #398 №2430806 
>>2430783
>Во первых, интерфейсы созданы для того, чтобы... определять интерфейс классов, то есть то, как с ними взаимодействуют.
Описал, шо хуй поймешь.

Представь, что Петя делает машину БМВ, а Коля делает машину Жигули. Потом Дима должен прикрутить ручки к дверям БМВ и Жигулям. Но вот беда, Петя сделал дверь в днище автомобиля, а Коля вообще посчитал, что двери не нужны.
И что делать Диме теперь? Он мог бы все машины запихнуть в массив и обращаться к функции Door, не взирая на марку автомобиля.

Это я к чему, интерфейс дает предварительной пизды Пете и Коле и говорит, шо ваши классы не будут работать пока вы не сделаете <вот эти вот> функции из списка, которые должны быть обязательно на выходе.
Аноним 11/08/22 Чтв 19:00:56 #399 №2430810 
>>2430806
Это да, это понятно. Кстати, а часто используется реализация метода прямо в интерфейсе? Так сказать по дефолту
Аноним 11/08/22 Чтв 19:03:14 #400 №2430813 
>>2430800
Вот тут еще почитай
https://jeremybytes.blogspot.com/2019/11/c-8-interfaces-public-private-and.html
Аноним 11/08/22 Чтв 19:06:49 #401 №2430817 
>>2430810
В интерфейсе ничего не реализуется. Ты пишешь, что понял, но ничего не понял.

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

Это в абстрактных классах можно.
Аноним 11/08/22 Чтв 19:07:25 #402 №2430818 
>>2430817
>В интерфейсе ничего не реализуется
Да не трясись ты. Уже как 3 года можно
Аноним 11/08/22 Чтв 19:11:22 #403 №2430821 
image.png
>>2430817
Аноним 11/08/22 Чтв 19:12:16 #404 №2430823 
>>2430813
пизда, у меня картинки с кодом не грузит...
Аноним 11/08/22 Чтв 19:13:37 #405 №2430826 
>>2430823
А воображение тебе на что?
зы: тоже не грузит
Аноним 11/08/22 Чтв 19:13:38 #406 №2430827 
>>2430823
У меня тоже. Там в именах файлах ссылочку оставляют, тыкай и перекинет на гитхаб пасиб дядьпыня
Аноним 11/08/22 Чтв 19:15:40 #407 №2430830 
>>2430827
о, пасиб
Аноним 11/08/22 Чтв 19:20:29 #408 №2430835 
>>2430818
>>2430821
Мда ...
Аноним 11/08/22 Чтв 19:21:35 #409 №2430838 
>>2430835
Блять, да сказали же тебе - не трясись, хули ты устраиваешь? Да, шарп поддерживает, но кто так делает - дебилебаныбля
Аноним 11/08/22 Чтв 19:22:03 #410 №2430839 
>>2430835
Це плохо или что? Я просто слышал, что это неоднозначная фича гавно короче, и что её лучше не использовать. Иначе появляется возможность множественного наследования как в цпп
Аноним 11/08/22 Чтв 19:24:00 #411 №2430842 
>>2430839
Тащемта данный сабж завезли только лишь как подготовку к generic math ящитаю, ты можешь вот тут source.dot.net посмотреть кишочки интерфейсов INumber, IAddable и прочих, увидишь почему добавили static в интерфейсах. В реальности же данные фичи вообще нигде не используются как по мне. Даже привести пример не могу.
Аноним 11/08/22 Чтв 19:25:05 #412 №2430844 
>>2430795
> Я щас на интерфейсах сижу, вот и захотел понять, что тут за херь такая.
Интерфейс - это контракт, по которому класс, реализующий интерфейс обещает иметь нужные методы.
Аноним 11/08/22 Чтв 19:26:52 #413 №2430847 
>>2430842
Я хоть и зеленый, но когда щупал дженерики не понял одной штуки - как, блять, сделать мат операцию между двумя параметрами типа Т. Я сначала срр учил не доучил, там чисто в шаблонах можно с кайфом все складывать умножать и тд. А тут, насколько я понял, даже ещё окончательно не завезли данный сабж
Аноним 11/08/22 Чтв 19:27:32 #414 №2430848 
>>2430847
>А тут, насколько я понял, даже ещё окончательно не завезли данный сабж
Да, но можно подрубить .net 7 preview и там можно будет это юзать
Аноним 11/08/22 Чтв 19:33:45 #415 №2430859 
>>2430847
Через рефлексию?
Аноним 11/08/22 Чтв 19:35:53 #416 №2430862 
>>2430859
Не, я до этого ещё не дожил, я только на интерфейсах
Аноним 11/08/22 Чтв 19:36:23 #417 №2430865 
>>2430859
Нихуя, ну-ка покажи как. Я чет даже представить не могу.
Аноним 11/08/22 Чтв 19:37:24 #418 №2430866 
>>2430862
>Не, я до этого ещё не дожил
Анончик, а ты бы хотел в реале взять свою какашечку и начать её разгребать палочками там всякими, лопатками чтобы посмотреть что внутри?
Аноним 11/08/22 Чтв 19:38:58 #419 №2430869 
>>2430866>>2430866
>Анончик, а ты бы хотел в реале взять свою какашечку и начать её разгребать палочками там всякими, лопатками чтобы посмотреть что внутри?
Типичный двач нет, не хочу, вонять будет
Аноним 11/08/22 Чтв 19:39:23 #420 №2430871 
Что из себя представляет IList? Судя по названию это интерфейс, но интерфейс же не может хранить поля, а IList может. Ещё и наблюдаемая коллекция может в него преобразовываться а в обычный лист нет.
Аноним 11/08/22 Чтв 19:39:54 #421 №2430872 
>>2430865
Что-то типа такого

if (T is int)
(return (int)a + (int)b)
Аноним 11/08/22 Чтв 19:41:11 #422 №2430873 
>>2430869
>нет, не хочу, вонять будет
А если бы не воняло?
Аноним 11/08/22 Чтв 19:41:42 #423 №2430874 
>>2430872
Это не рефлексия, это приведение типов. Гавно кароче наху.
Аноним 11/08/22 Чтв 19:42:16 #424 №2430875 
>>2430871
Интерфейс для реализации возможностей стандартных коллекций: добавить, удалить, обратиться по индексу.
Аноним 11/08/22 Чтв 19:42:21 #425 №2430876 
image.png
>>2430871
Статические поля может хранить.
Аноним 11/08/22 Чтв 19:42:25 #426 №2430877 
>>2430874
Дебил ебаный, это что по твоему, если не рефлексия?
>T is int
Мамку твою на спене твоего бати ебал кароч
Аноним 11/08/22 Чтв 19:43:16 #427 №2430879 
>>2430877
>рефлексия
Сучка крашеная, значение знаешь? Рефлексия никакого отношения к Generic types не имеет
Аноним 11/08/22 Чтв 19:43:50 #428 №2430880 
>>2430873
не, не хотел бы. Пускай этим занимаются спецы, там лаборатории всякие по анализу испражнений, двачеры и тд
Аноним 11/08/22 Чтв 19:44:19 #429 №2430881 
>>2430876
Только с восьмой версии. Но IList и до этого есть
Аноним 11/08/22 Чтв 19:44:54 #430 №2430882 
изображение.png
>>2430881
Аноним 11/08/22 Чтв 19:45:27 #431 №2430883 
>>2430880
Ну оно и хорошо, не будешь голову заморачивать сильно рефлексией.
Аноним 11/08/22 Чтв 19:47:07 #432 №2430885 
>>2430883
что-то страшное?
Аноним 11/08/22 Чтв 19:47:40 #433 №2430886 
image.png
>>2430871
>Ещё и наблюдаемая коллекция может в него преобразовываться а в обычный лист нет.
Аноним 11/08/22 Чтв 19:49:08 #434 №2430887 
>>2430885
Нет, просто в 99% юзелес хуйня без которой можно обойтись, но с помощью рефлексии можно сделать почти всё, что душе угодно. Доступ к private членам, получение byte[] кода тела метода, например
Аноним 11/08/22 Чтв 19:50:36 #435 №2430891 
>>2430887
звучит так, что если я её буду использовать, то я обязательно где-то проебусь/что-то сломаю
Аноним 11/08/22 Чтв 19:51:45 #436 №2430892 
Рефлексия нужна только для удобной работы с базами данных.
Аноним 11/08/22 Чтв 19:51:52 #437 №2430893 
Кстати, а метанит нормальный вариант для изучения? Я прост по нему учусь, вроде всё норм.
Аноним 11/08/22 Чтв 19:53:21 #438 №2430896 
>>2430891
>то я обязательно где-то проебусь/что-то сломаю
Да, почти. В основном главный проеб - это в целом использование рефлексии, так же зачастую это нарушение инкапсуляции итд итп. Но если интересно будет начать копаться в этом кале - будешь пытаться её засунуть куда только можно.

>>2430892
Вот этого двачую. Еще рефлексия ахуенна для создания библиотек, например создание модульной архитектуры, а так же генерация методов js которые вызывают ajax запрос к методу api контроллера.
Аноним 11/08/22 Чтв 19:54:26 #439 №2430897 
>>2430893
Сойдет для того чтобы ознакомиться с синтаксисом языка, но про глава про паттерны и архитектуры - полная хуйня. Тут лучше гугли и задавай вопросы на ruSO, мы тебе с пацанами ответим если на чем-то застрянешь
Аноним 11/08/22 Чтв 19:56:54 #440 №2430898 
>>2430881
>>2430871
Бамп вопросу
Аноним 11/08/22 Чтв 19:58:37 #441 №2430900 
>>2430897
Спасибо, про паттерны я отдельную книженцию приготовил. Паттерны проектирования для C# и платформы .NET Core[2021] Джеффри
Аноним 11/08/22 Чтв 20:04:29 #442 №2430903 
>>2430898
Я же тебе блять ответил, сука.
>>2430875
>>2430886

Олсо можешь чекнуть сам интерфейс на source.dot.net. Я обычно IList передаю в метод когда мне нужно обращаться по индексу + модифицировать коллекцию добавлять/удалять
Аноним 11/08/22 Чтв 21:26:27 #443 №2430949 
Чуваки, подскажите плиз, как триал версию ридера резетнуть?
Аноним 11/08/22 Чтв 21:28:21 #444 №2430951 
>>2430949
да крякни купи ты его
Аноним 11/08/22 Чтв 21:51:02 #445 №2430971 
>>2430949
plati ru продают jetbrains all product pack за 600 рублей примерно, подписка на 3 месяца
Аноним 11/08/22 Чтв 21:52:52 #446 №2430973 
>>2430971
Где наёб?
Аноним 11/08/22 Чтв 21:56:32 #447 №2430976 
>>2430973
Ну лично я наеба не вижу, лучше искать продавцов с большим количеством отзывов и продаж

https://plati.market/search/jetbrains

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

Других адекватных способов покупки лицензии для продуктов джетов не нашел, официально в РФ они больше не продают свои поделия
Аноним 11/08/22 Чтв 21:58:57 #448 №2430979 
>>2430976
Очень подозрительно, слишком дёшево чёт.
Аноним 11/08/22 Чтв 22:03:09 #449 №2430981 
>>2430979
мож это сами жб продают типа "все равно ведь не купят норм подписку, так продадим дешевле, лишь бы не кряки юзали"
Аноним 11/08/22 Чтв 22:25:14 #450 №2430997 
>>2430949
https://yeahexp.com/jetbrains-reset-factory-reset-for-trial-version-up-to-30-days/
Аноним 11/08/22 Чтв 22:44:30 #451 №2431011 
>>2430997
жуть
так то можно и на 3.jetbra.in забежать
но лицензия это лицензия...наверное
Аноним 11/08/22 Чтв 22:47:33 #452 №2431016 
>>2431011
Чем не пользовался - нигде через сервак не работало. А так раз в месяц на временную почту акк зарегал и радуешься жизни.
Аноним 11/08/22 Чтв 22:48:31 #453 №2431018 
>>2431016
не знаю о чем ты. не знаю про какой сервак вообще речь.
это не сервер активации.
Аноним 11/08/22 Чтв 22:50:05 #454 №2431021 
>>2431018
А что? hosts?
Аноним 11/08/22 Чтв 22:51:16 #455 №2431026 
>>2431021
это урл, просто https:// скушалось. а там ткни на любую рабочую ссылку
Аноним 11/08/22 Чтв 22:52:58 #456 №2431031 
>>2431026
Ну хз, халявные ключи у меня тоже быстро отваливались.
Аноним 11/08/22 Чтв 22:54:03 #457 №2431032 
>>2431031
ну так то эти ключи тоже в блэклисте, что не мешает им работать.
Аноним 11/08/22 Чтв 22:56:30 #458 №2431035 
>>2431032
Ну вот, каждый день с этими ключами ебаться ещё.
Аноним 11/08/22 Чтв 22:59:06 #459 №2431039 
>>2431035
раз в год вообще то и то можно просто не сразу накатывать мажорное обновление (и жить на текущей мажорке хоть вечность), а подождать чуток
но тебе да - лучше каждый месяц мыло регать
Аноним 11/08/22 Чтв 23:02:55 #460 №2431042 
всем привет, кто-то сталкивался в проде с cmsками на основе .net.framework
Аноним 11/08/22 Чтв 23:05:14 #461 №2431044 
>>2431039
Потому что работает как часы уже несколько лет. А серваки и ключи вечно отваливаются.
Аноним 11/08/22 Чтв 23:05:45 #462 №2431045 
че там с MAUI кста? уже откусило это чудесное творение львиную долю рынка?
Аноним 11/08/22 Чтв 23:08:23 #463 №2431049 
>>2431044
согласен
лучше регать каждый месяц мыло, чистить профили - романтика
чем "разобрался как устроено и один раз настроил" - что уныло, фу такое
Аноним 11/08/22 Чтв 23:21:04 #464 №2431060 
>>2431045
WPF/UWP не смогли убить винформы, а мауи так вообще никому не всрался.
Ага, чудесное творение, из которого намеренно выкинули поддержку линукса прошивки для роутеров.
Аноним 12/08/22 Птн 00:55:01 #465 №2431144 
>>2423030 (OP)
бамп
Аноним 12/08/22 Птн 02:39:14 #466 №2431209 
Emgu CV может распознать движения на видео?
Мне нужно в 50 часах видео найти движение одного обьекта.
Аноним 12/08/22 Птн 08:28:22 #467 №2431256 
>>2431045
Очередной недо-высер майков. Он его уже все кто могут поносят
Аноним 12/08/22 Птн 08:46:40 #468 №2431273 
>>2431060
> WPF/UWP не смогли убить винформы
Что характерно, эти тулкиты копируют подход веб-дизайна, когда интерфейс слабо связан с кодом, который бихайнд. В вебе это логично, потому что интерфейс - это браузер, один из нескольких конкурирующих, и код веб-страницы физически не может быть связан сильно.

Что ещё забавнее, конкурирующие оверлейные кроссплатформенные тулкиты (такие как Eto.Forms или Avalonia) тянут тот же самый веб подход, со слабым связыванием через бинды.

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

Щас набигут миллионы мух и начнут убеждать меня, как я не понимаю профита слабого связывания.
Аноним 12/08/22 Птн 09:06:19 #469 №2431284 
>>2431273
Но ты ведь реально не понимаешь. Такой подход упрощает разработку и разделение обязанностей. Все современные фреймворки основаны на данном подходе.
Аноним 12/08/22 Птн 09:10:07 #470 №2431286 
>>2431273
>Что характерно, эти тулкиты копируют подход веб-дизайна
натягивание совы на глобус.
>тянут тот же самый веб подход, со слабым связыванием через бинды.
этот самый "веб подход" стал распространенным в вебе после выхода WPF, так что он никак не мог копировать

ну а то что паттерн MVVM вообще к вебу отношения не имеет...ну в общем ты понял.
Аноним 12/08/22 Птн 09:10:59 #471 №2431289 
>>2431284>>2431286
Я пилю программы для себя сам, в соло, на галерах не гребу, в коллективе работать не умею и не желаю уметь. Поэтому мне данный подход нахуй не всрался. Однако, мне усиленно его пихает в литсо каждый второй туториал.
Аноним 12/08/22 Птн 09:15:29 #472 №2431293 
>>2431289
а тебя кто то заставляет?

никто не запрещает писать в манере "спаггети-код мое все, я пилю программы для себя сам, в соло, на галерах не гребу, в коллективе работать не умею и не желаю уметь". Это можно ВЕЗДЕ и даже в WPF
Аноним 12/08/22 Птн 09:29:08 #473 №2431303 
>>2431293
> Это можно ВЕЗДЕ и даже в WPF
Покажи. А я тебя обоссу по пунктам.
Аноним 12/08/22 Птн 09:31:33 #474 №2431306 
>>2431293
Ебашить обработчики событий и внутри их хардкодить говно. Не использовать биндинги а напрямую привязывать к элементу указывая ему x:Name, ну всё как в винформах вобщем.

мимо
Аноним 12/08/22 Птн 09:32:02 #475 №2431308 
>>2431303
что показать? что можно писать жопой?

или что можно без MVVM?
так это очевидно. в WPF можно писать как будто в винфорсмах пишешь. Биндинги там сверху добавлены - не хочешь, не юзай ни биндинги, ни шаблоны, нихера
Аноним 12/08/22 Птн 09:33:13 #476 №2431309 
>>2431303
>>2431306
Аноним 12/08/22 Птн 09:40:38 #477 №2431316 
>>2431306
> Ебашить обработчики событий и внутри их хардкодить говно.
Ну это ты кроме хардкода говна ничего не умеешь, за себя и пиши.
>>2431308
> что можно писать жопой?
Выше жопа уже показала. Даже в пост трясущимися лапками не попало.
> или что можно без MVVM?
Да, и чтобы мне не пришлось лесть в хамл-файл-разметки и какие-то х-нэйм там вручную прописывать. Хочу мышкой формошлёпить.
Аноним 12/08/22 Птн 09:43:11 #478 №2431318 
>>2431316
>Ну это ты кроме хардкода говна ничего не умеешь, за себя и пиши.
Да не трясись ты бля. Если анонче по кайфу говнокодить ради своих проектов - его дело, всем похуй. Всё равно это говно никогда не выйдет в свет. Или у тебя травма детская на почве отказа из ООО Рога и Копыта из-за отсутствия знаний паттернов?
Аноним 12/08/22 Птн 09:44:50 #479 №2431319 
>>2431318
> Или у тебя травма детская на почве отказа из ООО Рога и Копыта из-за отсутствия знаний паттернов?
Зыс.
Ладно, пойду поплачу в подушку. Всем пака!
Аноним 12/08/22 Птн 09:45:18 #480 №2431320 
>>2431316
>Да, и чтобы мне не пришлось лесть в хамл-файл-разметки и какие-то х-нэйм там вручную прописывать. Хочу мышкой формошлёпить
Во-первых разметка и дизайнер в IDE это разные вещи.
А во-вторых (хоть это никакого отношения к в WPF не имеет) - формошлепство мышью было доступно в визуал студии с самого рождения WPF
Аноним 12/08/22 Птн 09:57:41 #481 №2431328 
Поясните мне, зачем нужен пул DbContext в EF?
Ну из того, что это пул, понятно что он позволяет не создавать новые инстансы контекста, а переиспользовать.
Вот только при помещении в пул контекст закрывает коннект, то есть без пула коннектов все равно жить не может.
Аноним 12/08/22 Птн 11:39:41 #482 №2431395 
>>2431328
Читай.
https://docs.microsoft.com/ru-ru/dotnet/api/system.data.entity.dbcontext?view=entity-framework-6.2.0
Аноним 12/08/22 Птн 12:04:33 #483 №2431413 
>>2424104
Все уже написано, просто натягивай на старый код новые карты и героев и на каждом шагу предлагай купить за донаты золотые монеты, на которые можно купить йоба мечь который всех порешает
Аноним 12/08/22 Птн 13:43:49 #484 №2431484 
Я нашёл в интернете нужный мне код, как из него сделать программу? Правильный ли код, мне нужно чтобы при запуске программы ей выдавался фокус, в данном случае это notepad, будет ли всё работать?
https://pastebin.com/sQ8asCCn
Аноним 12/08/22 Птн 13:53:25 #485 №2431491 
>>2431484
>Я нашёл в интернете нужный мне код, как из него сделать программу
Без задней мысли

>Правильный ли код
Хуй его знает, протести.
Аноним 12/08/22 Птн 13:54:11 #486 №2431492 
>>2431491
Как?
Аноним 12/08/22 Птн 14:37:37 #487 №2431539 
>>2431492
F5
Аноним 12/08/22 Птн 17:28:32 #488 №2431793 
>>2431395
в итоге польза от пула только если неявная инициализация из всяких конфигов или в самом контексте и поэтому дорого типа каждый раз делать.
А если опции в контекст передаешь снаружи, то инициализация контекста куда дешевле и польза пула не видна (о чем я и спросил)
Аноним 12/08/22 Птн 18:00:30 #489 №2431845 
>>2431793
Я устал после работы, отвечу потом (хз когда), можешь вопрос на ruSO задать.
Аноним 12/08/22 Птн 18:11:11 #490 №2431859 
>>2431845
На со куча вопросов на эту тему, мол зачем нужен пул
Оттуда же и узнал что контекст при возвращении в пул делает ресет который заодно и коннект закрывает. То есть нужен еще пул коннектов.
А если пул коннектов все равно нужен, то целесообразность пула контекстов перестает быть очевидной
Аноним 12/08/22 Птн 19:08:15 #491 №2431954 
>>2431859
А в чем твой вопрос-то заключается нихуя не пойму
Аноним 12/08/22 Птн 19:46:12 #492 №2431990 
>>2431954
В чем профит использования пула контекстов, если коннект он все равно не сохраняет, а инициализация контекста может быть вынесена из контекста, чтобы не делалась каждый раз в самом контексте - тем самым сделав создание контекста дешевым

собственно services.AddDbContext<> это и делает позволяя задать конфиг который будет передаваться готовый в конструктор этих контекстов лишая смысла постоянно выполнять OnConfiguring
Аноним 12/08/22 Птн 20:57:55 #493 №2432075 
>>2431990
>а инициализация контекста может быть вынесена из контекста
Что?
Аноним 12/08/22 Птн 21:03:11 #494 №2432077 
изображение.png
Помогите понять что здесь происходит. Что такое add, remove?
Аноним 12/08/22 Птн 21:09:35 #495 №2432088 
>>2432077
Гугли чем отличается событие от делегата. А по поводу CommandManager.RequerySuggested - https://ask-dev.ru/info/174019/what-is-the-actual-task-of-canexecutechanged-and-commandmanagerrequerysuggested
Аноним 12/08/22 Птн 21:11:34 #496 №2432091 
>>2432075
OnConfiguring можно не выполнять при каждом сосздании DbContext, а может быть выполнено единожды
Аноним 12/08/22 Птн 21:13:12 #497 №2432094 
>>2432077
добавление и удаление делегата подписчика
аналогично как и в свойствах get и set
Аноним 12/08/22 Птн 21:22:38 #498 №2432103 
>>2432094
>аналогично как и в свойствах get и set
Ну не совсем аналогично, скорее синтаксис одинаковый. А так да, просто добавляет/удаляет элементы в "коллекцию" вызовов

https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEUCuA7AHwAEAmARgFgAoIgZgAJT6Bhe6gb2vu/oAcoAlgDcAhhhiMySejCEw8GSSXoBBMBgDcXHqWXbunKj2Or19ANQBeegAoAlPUsA+SQE4bZO1qMnuaxVa2Ds5uNiRe+ib+Ftb2ji5EZO60ET6+kcaiUPQCeEIQANZiAhB4ADICAM6K1v4AdADiMBgAknkQYMWlFdX23r7cGTwAZtAwImAAFjZZOeIAtjl4S/lFGCXlVRh2Q76J7gILqQNsaVHqdW2rMH2RAL7Ud0A
Аноним 12/08/22 Птн 21:32:17 #499 №2432111 
>>2432091
Всё бля за вас гуглить... https://stackoverflow.com/a/48444206/17025310
Аноним 12/08/22 Птн 21:36:06 #500 №2432116 
По крестам есть хорошие книги, по шарпу нет. Почему так?
Аноним 12/08/22 Птн 21:37:07 #501 №2432117 
>>2432116
Одноклассники тебе твои сказали?
Аноним 12/08/22 Птн 21:40:08 #502 №2432121 
>>2432117
Я провел сравнительный анализ взяв за референс книги из шапок тредов посвященных этим языкам.
Аноним 12/08/22 Птн 21:40:54 #503 №2432123 
>>2432121
А ты читал книги из шапки?
Аноним 12/08/22 Птн 21:41:45 #504 №2432126 
>>2432111
читал
именно там написано в коментах с 14 лайками что коннект закрывается при возвращении в пул

мультредовость это не аргумент для использования пула

а " Pooling has some performance gains. " являются абстрактной фразой, которую я и спрашиваю А МОЖНО КОНКРЕТНЕЕ???
В каком месте создание DbContext является тяжелой операцией, что "только пул может помочь"?

Я вот вижу выполнение OnConfiguring при каждом создании экземпляра DbContext (дока так пишет). Но этот OnConfiguring можно выполнить единожды на все экземпляры, так что незачет.
При создании контекста инициализируются новосозданные разные там словарики, списки, но разве это такое тяжелое что ему пул нужен?
Аноним 12/08/22 Птн 22:26:40 #505 №2432158 
>>2432126
Самое тяжкое в объяснении это то, что вы бля ищете скрытый смысл там, где его нет.
https://docs.microsoft.com/ru-ru/ef/core/performance/advanced-performance-topics?tabs=with-di%2Cwith-constant#dbcontext-pooling

https://docs.microsoft.com/ru-ru/ef/core/performance/advanced-performance-topics?tabs=with-di%2Cwith-constant#managing-state-in-pooled-contexts

Читай две статьи следующим образом: прочитал абзац - пошел полчаса думать над ним, как понял - приступаешь к следующему.
Аноним 12/08/22 Птн 22:44:59 #506 №2432170 
>>2432158
спасибо анон, что не поленился спросить за меня на SO
хотя по факту все уперлось в RTFM )
Аноним 13/08/22 Суб 01:41:30 #507 №2432264 
>>2423030 (OP)
Актуальна ли на данный момент книга CLR VIA C# ? Почитываю Албахари , он достаточно глубоко описывает синтаксис на современном стандарте , или Рихтер неизменная классика ?
Аноним 13/08/22 Суб 07:32:07 #508 №2432298 
>>2432170
Ну вот и отлично
Аноним 13/08/22 Суб 10:43:15 #509 №2432344 
Посоветуйте статей о mvvm на русском. Прочел троелсена и понял дай бог половину. Мозги закипают от всех этих команд, биндингов, соурсов.
Аноним 13/08/22 Суб 11:43:29 #510 №2432396 
>>2432344
https://www.youtube.com/user/Shmachilin
Аноним 13/08/22 Суб 12:08:45 #511 №2432409 
image.png
image.png
Здравствуйте. Хочу через GETзапрос, чтобы получить XML с курсом валют с сайта ЦБ РФ. Есть два кода стула. В одном из вариантов у меня заместо русских слов высвечивается "??????", так же VS пишет, что вся эта залупа устаревшая. И есть второй код, который не возвращает контент со страницы, то есть Null. Кодировка на сайте windows-1251, судя по GET запросу. Посоветуйте, что-нибудь почитать по запросам, пожалуйста.
Сам сайт: www.cbr.ru/scripts/XML_daily.asp
Аноним 13/08/22 Суб 14:05:02 #512 №2432540 
Как Sbyte конвертировать в Byte, а потом обратно в Sbyte?
Аноним 13/08/22 Суб 14:09:28 #513 №2432551 
>>2432540
Вот так:
Аноним 13/08/22 Суб 14:12:04 #514 №2432558 
>>2432409
>Кодировка на сайте windows-1251
Кто тебе сказал? Алсо ты передать кодировку можешь следующим образом:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) //регаешь провайдер который содержит дохуя кодировок
var encoding = Encoding.GetEncoding(1251); //"windows-1251"
и этот encoding можно в Stream передавать. Возможн будет работать. Ну или попробуй UTF8 передать, что вероятно как раз будет работать.
Аноним 13/08/22 Суб 16:24:33 #515 №2432681 
>>2432396
> мы подключаем, подключаем и... ну в общем посмотрите
На этой ноте Шмачилин пошёл нахуй.
Аноним 13/08/22 Суб 16:38:55 #516 №2432694 
>>2432551
Шутник.
Аноним 13/08/22 Суб 17:15:53 #517 №2432724 
>>2432681
Да не трясись ты.
Аноним 13/08/22 Суб 17:35:40 #518 №2432734 
Обновил студию, теперь тычут в меня maui. Как оно вообще, годнота?
Аноним 13/08/22 Суб 17:39:38 #519 №2432739 
>>2432734
Потребление памяти моё почтение, настоящее унижение нищих бомжей без хотя бы 16 гигов оперативки.
Аноним 13/08/22 Суб 18:18:00 #520 №2432764 
Зачем нужны абстрактные классы когда есть интерфейсы?
Аноним 13/08/22 Суб 19:05:58 #521 №2432832 
>>2432764
Когда тебе нужно, чтобы классы-наследники могли наследовать поведение родительского класса и переопределять поведение, где нужно. Самый явный пример - иерархия UI-компонентов в WPF. Если делать ее чисто на интерфейсах, то придется либо поддерживать гору копипасты, либо городить переусложненную архитектуру.
Аноним 13/08/22 Суб 19:09:37 #522 №2432844 
Есть сторонняя функция с кучей перегрузок, типа
BitConverter.GetBytes(int)
BitConverter.GetBytes(double)
BitConverter.GetBytes(boolean)
и так далее

Можно как-то мне обойтись кучей перегрузок и сделать что-то универсальное?
1. Серез Object, это привет упаковка\распаковка
2. Дженерики не знаю как запихнуть
3. If Else это вообще бред

Что еще есть?
Аноним 13/08/22 Суб 19:11:19 #523 №2432852 
>>2432844
Можно. Подключаешь .NET Preview хуй знает какую и пишешь следующее:

public static SmthGovno GetBytes(INumber number)
{

}
Аноним 13/08/22 Суб 19:11:24 #524 №2432853 
>>2432764
После того, как в интерфесы можно запихивать код, я даже не знаю зачем.
Аноним 13/08/22 Суб 19:18:39 #525 №2432870 
>>2432852
Так?
public static SmthGovno GetBytes(INumber number)
{
BitConverter.GetBytes(number)
}
Аноним 14/08/22 Вск 08:22:11 #526 №2433184 
>>2432724
Давай трястись вместе?
Аноним 14/08/22 Вск 08:59:08 #527 №2433198 
>>2432870
Нельзя. Посмотри в исходниках шарпа почему source.dot.net
Аноним 14/08/22 Вск 09:20:03 #528 №2433203 
image.png
image.png
>>2432558
this
>Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
Если кому надо, вот решение ещё exception для наглядности:
Аноним 14/08/22 Вск 09:21:28 #529 №2433206 
>>2433203
Ещё сайт прикольный откопал, там всякие микро гайды на C#
zetcode.com/all/#csharp
Аноним 14/08/22 Вск 09:21:58 #530 №2433207 
>>2433203
Ещё сайт прикольный откопал, там всякие микро гайды на C#
zetcode.com/all/#csharp
Аноним 14/08/22 Вск 09:22:45 #531 №2433208 
Пздц...Моча...Написала же, что отправка отменена...
Аноним 14/08/22 Вск 09:24:39 #532 №2433210 
>>2433203
Вечно забываю про этот идиотизм пока багреквест не прилетит
Аноним 14/08/22 Вск 09:45:19 #533 №2433224 
>>2433203
Простите за глупый вопрос, а что это за консоль отладки? У меня выводит через окно интерпретации.
Аноним 14/08/22 Вск 09:55:10 #534 №2433230 
image.png
>>2433224
Обычная дебаг консоль. Окно интерпретации - это что-то типо питоновской херни, где можно числа складвать там и тд
Аноним 14/08/22 Вск 10:12:28 #535 №2433246 
>>2433230
Я ее всегда использовал как окно вывода данных. Как еще во всяких WPF выводить данные?

А где находится консоль отладки?
Аноним 14/08/22 Вск 10:24:53 #536 №2433265 
>>2433246
Странно, она вообще по дефолту для консольных приложений стоит, типо нажимаешь на Debug(или F5) и она автоматом вызывается, так что хз.
Аноним 14/08/22 Вск 10:27:17 #537 №2433270 
ПЕРЕКАТ
>>2433268 (OP)
>>2433268 (OP)
>>2433268 (OP)
Аноним 14/08/22 Вск 10:34:55 #538 №2433277 
>>2433265
А, ну консоль выводится, но обычная.
У тебя наверно стиль виндовс синюшный, выглядит как часть интерфейса студии.
Аноним 16/08/22 Втр 05:48:19 #539 №2435449 
>>2424370
>Ты че ебанутый? Хранить несколько гигов говна в памяти?
Там по коду только такой https://github.com/username1565/KeyValue/blob/SQLite3Storage/KeyValue.cs#L72
огрызок в памяти хранится.
Остальное - на диске.

>>2424600
>А редис где гранит?
Двачую этого. Тоже интересно, каков лимит у редиса.

>>2424628
>Сука ты меня уже доебал
То залётный, так что он тебя ещё доебать не успел.
А если ты ко мне, то я тебя не то что ещё не доебал, я тебя ещё даже голым не видел.

>>2424370
>Юзай бля Redis и не еби мозги
>>2424652
>Просто используй редис, чел. Это топовое решение.
>>2424661
>золотой молоток (с)
Тогда, надо поднимать redis-сервер, а значит надо инклюдить его код, а он на Си.

>>2425507
>Юзай Ignite чел!
Ну хуй знает, код на Java, и ещё и сервер там...

Пока смотрю вот здесь: https://nugetmusthaves.com/Tag/key-value
нарыл LMDB
но оно чё-то не конпелируется, падлюка.

Ещё варианты?
Аноним 16/08/22 Втр 06:12:54 #540 №2435453 
>>2435449
только тред давно переехал, так что тут никого
Повлияет ли уход Microsoft на C#.NET? Аноним 19/08/22 Птн 08:21:44 #541 №2439122 
Не смог нагуглить, обращаюсь сюда. Начал изучать C#/.NET пару недель назад, сегодня увидел новость о том, что "Microsoft постепенно сокращает свой бизнес в России до тех пор, пока там почти ничего не останется" и стало как-то тревожно.
Означает ли это, что в скором времени .NET платформу использовать в России будет невозможно/никто не будет, и, соответственно, джуну найти работу с этим стэком будет нереально?
Если проще сформулировать, то повлияет ли полный уход Microsoft на C#/.NET разработчиков в России?
Как я понимаю, C#/.NET сейчас open-source и ограничения Microsoft могут повлиять разве что на недоступность Visual Studio, но хотелось бы почитать мнение шарящих людей.
Аноним 20/08/22 Суб 14:07:54 #542 №2440556 
>>2428138
>string str1 = "Hello";
>string str2 = "Hello";
>object.ReferenceEquals(str1, str2) //false
Тут true будет интендация жи.
comments powered by Disqus

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