Этого треда уже нет.
Это копия, сохраненная 31 октября 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C# Тред #37 2423030 В конец треда | Веб
Тред лучшего языка на планете.

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)
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 не стоит.
Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
Структуры данных — связанные списки, деревья (бинарные, красно-чёрные), хеш-таблицы, графы.
Системы контроля версий — обычно гита достаточно.
3 2423033
>>23031
Блять, обосрался со вторым постом. Похуй, учту при перекате.
4 2423039
>>23030 (OP)
Наконец-то аниме в шапке.
5 2423052
Плюсы лучше шарпа
6 2423055
>>23052
Чем?
7 2423057
>>23055
Всем
8 2423058
>>23057
C# лучше C++
9 2423059
>>23058
Да не плачь ты
.png18 Кб, 443x272
10 2423061
>>23052
Месть уровня /pr/
11 2423063
>>23061
Пиздец, видимо он настолько затаил обиду, что аж месяц только и думал что бы такого написать в шарпотред в итоге сдался и написал тоже что и какой-то анончик в их треде.
12 2423064
>>23061
Я тут не при чём, я мимо проходил
13 2423065
>>23064
Да не плачь ты
14 2423068
>>23065
Сильно же тебя это задело
15 2423069
>>23068
Честно говоря очень
16 2423072
>>23069
Ну же вижу что ты разрыдаться готов. Не огорчайся так, ещё вкатишься в нормальный яп
17 2423075
>>23063
Справедливости ради, ждал он не месяц, а только пять дней.
image.png28 Кб, 1116x403
18 2423080
>>23072
Вот так могёш?
19 2423081
>>23080
Пойти вслед за кораблём в компайлтайме? Да нехуй делать.
20 2423086
>>23080
Даже в крестах это антипаттерн. Фичу ввели в те времена, когда всем было похуй, и теперь не будут выпиливать, потому что много говнокода сломается.
21 2423113
>>23057
Когда завезут нормальные женерики, а не то недоразумение с темплейтами; нормально реализуют модули; и сделают хотя бы одну адекватную систему сборки, а не вот это вот ебантяйство с Make и ручной линковкой всего и вся; нормальное апи для работы со строками и сетью; реализуют нормальную работу с асинхронщиной и многопотоком - тогда и приходи.
Но ебантяи из комитета по стандартизации - лучше будут всякое ненужное говно пихать в стандарт, чем хотя бы что-то из этого сделают; а ебантяи из C++ коммунити - будут руками до последнего линковать, рассказывая, как это охуенно и что это один раз сделал и навсегда(угу, только потом попробуй собрать чужое говно сам и посмотри как это охуенно и один раз и навсегда).
22 2423116
>>23086
Я бы и обычное наследование только по паспорту сделал.
А то понаделают цепочек, заебывает потом их распутывать при дебаге.
23 2423176
>>23086
Так можешь или нет не пойму? Твёрдо и четко, да или нет?
24 2423324
>>23080
Шарп не для индусов создавался, чтобы там сложные родственные связи выстраивать
25 2423359
У джавистов есть Котлин. У обжектив-сипистов есть Свифт. А какое будущее у шарпистов?
26 2423388
>>23359
В шарп не боятся добавлять новые фичи, да и даже в древнем C# 5, который на любой винде из коробки, больше фич, чем в самой новой жабе. Шарп сам по себе охуеннн, если забыть про легаси для винды.
27 2423392
>>23359

>А какое будущее у шарпистов?


туманное. даже у плюсовиков появился карбон
28 2423394
>>23392
И сразу же умер.
29 2423423
Шарпист в треде
Короче как развиваться в плане языка я понял, а вот как поступить с общими знаниями разработчика? Меня если спросят чет связанное с процессом, но не напрямую с кодом, типа шо такое rsa и gpg, сертификаты какие-то, что-то из сисадминского типа джамп хоста или какого-то ебучего протокола, который подразумевается, что ты знаешь, я жидко хрюкну и пойду гуглить отдельные вещи. Как фиксить? Или единственный путь - слышать что-то незнакомое и гуглить? Хотелось бы все же заранее в более общем виде усвоить тему и не обсираться, только не в абстрактном университетском стиле, иначе ниче не запомню.
sage 30 2423432
>>23423

>Или единственный путь - слышать что-то незнакомое и гуглить?


Да, всё так. Но есть еще один способ: начни вкатываться в незнакомые тебе темы, например подрочи неделю c++/c/ассемблер, ты толком-то нихуя понимать в нем не будешь, но апнешься в понимании железа и как работает память, к примеру. Или попробуй развернуть свой сервак, купи домен хуё-моё и на дебиан каком-нибудь по гайду из интернета начинай развертывать. Там прикрутишь ci и какой-нибудь контейнеризатор, хуё-моё и через месяц таких вот потуг уже парочку команд в терминале будешь знать, будешь знать как там что настроить примерно. Никто от тебя как от разработчика не будет требовать глубокие знания до момента пока ты не станешь сеньёром/лидом, но там уже всё само собой будет, твоя задача просто быть в курсе и в случае чего метнуться в гугл и не тупить полчаса над тем как бы сформировать запрос на поиск какой-то проблемы.

Разные вопросы относятся к разным областям IT и тут главное поиграться с этой областью недельку-две
31 2423560
>>23388

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


Проблема в том, что из него старые фичи боятся удалять. И еще в том, что работы на нем нет. И в том, что асинхронность имплицитно по имплицитному пулу потоков размазывается. И в том, что его майкрософт пилит, и СПЕЦИАЛЬНО делает исользование селф-хост решений невыносимым. Типа, пили бойлерплейт монолит в 21-м веке, или страдай. Что, сука, не хочешь монолит, а хочешь микросервисы и горизонтальное масштабирование? На, сука, держи микросервисы размером в джва гигабайта одного лишь шаблона. И еще чтобы развернуть - пиши 20 килобайт конфигураций. И 10 классов бойлерплейтов, чтобы оно нормально коммуницировало. И все граничные случаи не забудь, мы это во фреймворк не добавляли. А ты что, сука, думал в попенсорс попал? В одну строчку все разворачивать собрался? Ты что, не мужик, ты что, ноджс-бомж? Наш попенсорс для состоятельных джентельменов, деньги мне заплатил за ажур быстро нахуй, там можно все в одну строчку, как вы, сраные хиппи, любите, только денег заплати. И хули вы рожу скорчили? Нате, подавитесь своим хотрелоадом, уебки немытые, фанаты столмана недоделанные.
32 2423621
>>23560

>Проблема в том, что из него старые фичи боятся удалять


А что? где то удаляют? Вон в питоне решили все переделать и уже 14 год пошел как "переходят с 2 на 3"

>И в том, что асинхронность имплицитно по имплицитному пулу потоков размазывается


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

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


шта?

ну и про осталььное ШТА?
33 2423629
>>23621
2 энд оф лайф уже, на 3-м всё есть
34 2423640
>>23560
Работа на шарпах даже в моей мухосрани есть, а насчёт микро сервисов вообще не выкупил, сейчас студия за тебя и докер файл сделает и оркестрацию только кнопочки потыкай
35 2423644
Когда юзаю MemoryMappedFile, и создаю MemoryMappedViewAccessor с размером выше 4096, выдает ошибку с отказом в доступе. Что это? Писали, что чуть ли не гигабайты там можно хранить.
36 2423645
>>23629
да да. после 14 лет то.
1 многие либы поддерживают обе версии. в итоге "(цензура) тебе, а не type hints". "Пиши код в IDE как в блокноте". Романтика
2 "все есть" это слишком абстрактное понятие. Для тебя может все есть, а для другого чего то нет.
3 поддержка 2х версий то еще занятие. И почему то по прошествии стольких лет не наблюдается чтобы все выбросили поддержку. А из этого пункт 1

А вообще примерно что то такое и сделали когда нет кор делали. Кучу всего зарубили и создали кучу проблем при переходе. Уже сколько лет ему и почему еще куча народу сидит на 4.8 если ерунда переходить
37 2423648
>>23645
Всё шарпогалеры в моей мухосрани на нет коре 6 сидят, хотя продуктам их по десятку лет
38 2423656
>>23648
но это не значит что все в мире перешли и 4.8 закопали

>>23644
ну в примере на мсдн используется окно в 512 метров
значит можно
39 2423659
>>23656
Ну не переходят по причинам:
А - никому это не упало
Б - руководство не выделяет на это бабки
40 2423664
>>23659
а я разве спорю
просто вырезая старые фичи несомненно получишь ситуацию где работают на старье ибо тупо перейти не могут / дорого стоит / долго.

И потому желать бринкинг ченжи что не приносят нового, а тупо удаляют старое,...ну вы поняли.
41 2423669
>>23432
Ооот спасибо!
42 2423907
Чем Type отличается от object?
43 2423918
>>23907
Туре описывает характеристики класса, а оЬjест - экземпляра.
44 2423922
>>23918
Жерстко конечно, но спасибо.
sage 45 2423930
>>23907
Type это вся возможная информация о каком-то типе данных: структура, класс, рекорд, делегат, событие итд, а объект - это экземпляр конкретного класса, структуры или рекорда.
46 2424082
C# unity разработка вообще сейчас на
нормальное направление? Слышал, что юнити подыхает
47 2424089
>>24082

>Слышал, что юнити подыхает


Пиздаболы ебаные. Сейчас наоборот дефицит в геймдеве лютый т.к никто не хочет им заниматься
48 2424095
>>24089
Как же, дефицит, заходишь на условный хедхантер а больше нет ничего и видишь там всего 100 вакансий, и везде надо быть сеньором.
Заниматься хочет много кто, дохуя народу начинает изучать программирование именно с мечтой писать игры, но как увидят, что в вебе тысячи джунских вакансий, а в геймдеве нихуя, желание пропадает моментально.
49 2424102
>>24082
Юнити не подыхает. Подыхает сам геймдев.
50 2424104
>>24095

>а в геймдеве нихуя


Просто программисты в геймдеве не особо и нужны сейчас. Сейчас гораздо больше ценятся геймдизайнеры, сценаристы, художники.
51 2424114
>>24095

>и везде надо быть сеньором.


У меня год назад не было опыта, позвонили из Кефир + написали на почту с просьбой пройти собес, лол. У меня даже опыта в геймдеве не было вообще (в резюме только десктоп был)
52 2424132
Где можно поподробнее изучить Linq?
53 2424134
>>24132
Чтобы те, кто его поподробнее не изучал, не могли читать твой говнокод?
54 2424135
>>24132
Что именно тебя интересует? Как он внутри работает или как пользоваться?
55 2424137
>>24135
Первое. Хочу узнать, что там под капотом.
56 2424146
>>24137
source.dot.net - исходники
sharplab.io - декомпилятор в IL, ASM и так же то, что делает компилятор С# под капотом

гугли еще что такое IEnumerable и IEnumerator.
57 2424162
List или []?
58 2424163
>>24162
А тебе для чего?
59 2424165
>>24163
Мне в общем
60 2424166
>>24162
По задачам.
61 2424167
>>24166
То есть Task<List<T>> или Task<T[]>? Ты можешь нормально объяснить?
62 2424169
>>24167
Да.
63 2424171
>>24169
Что да?
64 2424173
>>24171
Пизда. Синее или красное?
65 2424176
>>24173
14 красное
66 2424177
>>24171
Раст
67 2424178
>>24176
В таком случае Task<T[]>
68 2424179
>>24177
ишка?
>>24178
Как это связано?
69 2424182
>>24177
Ты бы ещё карбон посоветовал, толстяк.
70 2424186
>>24182
Каброн
image.png7 Кб, 353x265
71 2424201
>>23030 (OP)
Выручайте. как сделать форматирование строки прально?

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

Очистка профиля стоит при сохранение файла.
72 2424275
>>24186
Леброн
я бы перешол
73 2424309
Как HTTPClient'ом читать Content (то есть все эти String/FileResultContent)?
74 2424354
>>23030 (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
Можете потестить.

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

>хотел реализовать хранение хэш-таблицы (key-value)


Ты че ебанутый? Хранить несколько гигов говна в памяти? Юзай бля Redis и не еби мозги
76 2424587
Аноны, у моих сервисов есть различные методы с коллбеками, которые нельзя вызывать до тех пор, пока они не выполнят работу. Допустим, метод Authenticate:

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

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

Правильно ли называть такой статус Pending? Или это скорее AlreadyInProgress?
77 2424599
>>24186
Нет блять, капрон
78 2424600
>>24370

>Хранить несколько гигов говна в памяти? Юзай бля Redis


А редис где гранит?
79 2424603
>>24309

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

response.Content.ReadAsMultipartAsync()

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

client.GetFromJsonAsync(...
80 2424604
>>24201
очистка чем? чем чистишь то. у решарпера свой механизм, у студии свой.
81 2424628
>>24600
Сука ты меня уже доебал
82 2424652
>>24600
Просто используй редис, чел. Это топовое решение.
83 2424661
>>24652
золотой молоток (с)
image.png13 Кб, 369x300
84 2424662
Как вы относитесь к #region в коде? Используете? Если используете, то можете показать пример вашего кода?
85 2424664
>>24662

>Как вы относитесь к #region в коде


Негативно.

>Используете?


Крайне редко
86 2424665
>>24662

>Как вы относитесь к #region в коде?


положительно.

>Используете?


когда тяжелые классы с кучей методов.
87 2424674
>>24146
Спасибо
88 2424678
>>24662
Если это какой-нибудь запрос к БД или какой бойлерплейт, то да
89 2424680
>>23030 (OP)
https://hh.ru/vacancy/68273729

>Вакансия опубликована 3 августа 2022 в Новосибирске


>Откликнулся уже 1081 человек



Вкатуны, ебало ваше можно?
image.png54 Кб, 270x173
90 2424686
>>24680
Они ещё и далеко от центра, в самой жопе.
91 2424706
>>24662
Негативно Обычно если тебе хочется по какой-то причине завести region в теле класса, то скорее всего твой класс просится, чтобы его нужно разбили на несколько.
Плюс у меня первый тимлид очень сильно загонялся по тому, что все члены класса должны быть разбиты по регионам по их типу и модификаторы доступа (public constructors, public properties, protected properties, public methods и т.д.) На ревью МР-ов всегда доебывался. Читаемости это файлам не добавляло, зато бесило знатно. Благо я быстро допер , что можно поставить и настроить CodeMaid и прожимать его автоформатирование перед комитетом.
image.png63 Кб, 701x1234
92 2424709
>>24706

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


Ну это уже совсем шиза. Хотя это можно встретить даже в коде .NET Runtime, типа пикрелейтед.
93 2424710
>>24686
Общался с ними года два назад, когда был переиюнем-недомидлом и искал работу. Предложили тестовое на 16-24 часа ещё до собеседования, из-за чего вежливо были посланы куда подальше.
94 2424727
>>24662

>Как вы относитесь


Нормально

>Используете


Да, но редко.
95 2424735
>>24162
Знаешь точно сколько данных тебе чего нужно - массив. Не знаешь - List
Все просто.
List - по факту в шарпе - обертка над массивом, которая буквально все что делает - хранит положение "курсора", при вставке происходит проверка вида:
if(Length + 1 > Capacity)
{
var temp = new T[Capacity * 2];
Array.Copy(_array, temp);
_array = temp;
}
... остальная логика вставки

Чтобы ты этой хуйней не занимался - сделали List
96 2424832
>>24706
Тимлида случайно не Денис звали? У меня был такой, требовал выделять region-ами каждую группу вроде properties, events, fields, methods, а в каждой группе еще и отдельные регионы по модификаторам доступа
Все это если в классе есть хотя бы два экземпляра чего угодно
1659633229775.jpg29 Кб, 465x285
97 2424855
>>24832
Его звали Роберт Полсон.
98 2424890
>>24662
1 раз по рофлу сделал
99 2424909
>>24162
Нахуя вообще нужны массивы когда есть списки? Единственное где я их встречал, это собес в Яндекс да, там был C#
Мимо 3 годика
100 2424924
>>24909
А как же массивы byte?
101 2424925
>>24909
Для того чтобы реализовывать свои списки и другие структуры данных, вестимо.
Плюс для случаев, когда приходится применять ArrayPool, чтобы не шатать GC.
102 2425507
>>24652
>>24354
Юзай Ignite чел!
Базарю еще захочешь
2022-08-0523-36-13.png24 Кб, 604x130
103 2425884
А можно как-то в WPF контролировать размеры иконок и где они вообще хранятся? Через свойства проекта чет пизданулось и иконка теперь не хочет обновляться.

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

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

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

В сети хуета какая-то с предложением загрузить через свойства проекта.
104 2425889
>>24735
Я думал в куче создается еще один итем, а в предыдущем вставляют указатель на него. А у тебя не список а динамический массив какой-то.
105 2425899
>>24662
Положительно отношусь. Для меня это как логическе группы и порой лучше, чем создавать Partial Class.
К тому же автоколлапс удобно все складывает.

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

#region "-- My method --------------------------"
#endregion "-- My method --------------------------"
106 2425916
>>24706

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



У меня постоянно возникает дилемма с неймингом partail классов:
1) ты называешь файл так же, как класс и тогда у тебя куча:
MyClass, MyClass, MyClass, MyClass в которых хуй проссыш что где.
2) ты называешь в соответствии с логикой блока, но тогда получаешь вермишель из названия MyClassEhalGrekaCherezReku, при этом:
2.1) Название вкладки отжирает полэкрана и вообще нечитабельно
2.2) Нарушается синхронизация между фактическим названием класса и названием файла.
107 2425962
>>25916
Нахуя тебе нужны partial классы? Для чего ты их используешь?
sage 108 2426030
Петушарп ин э натшелл.
ДЖАВИСТЫ ПРИДУМЫВАЮТ SPRING
@
ПЕТУШАРПЕРЫ КОПИРУЮТ И ДЕЛАЮТ SPRING NET
@
ДЖАВИСТЫ ПРИДУМЫВАЮТ HIBERNATE
@
ПЕТУШАРПЕРЫ ДЕЛАЮТ РЕВОЛЮЦИЮ В ООП ПОД НАЗВАНИЕМ NHIBERNATE
@
В ЖАБУ ДОБАВЛЯЮТ ЛУМ
@
ЧЕЛЯДЬ, НОВШЕСТВО! ЗЕЛЁНЫЕ ТРЕДЫ! ЖРИТЕ!
@
ДЖАВИСТЫ НАЧИНАЮТ ПЕРЕКАТЫВАТЬ ТРЕД КАЖДЫЕ 500 ПОСТОВ
@
ПЕТУШАРПЕРЫ НАЧИНАЮТ ПЕРЕКАТЫВАТЬ ТРЕД КАЖДЫЕ 500 ПОСТОВ
@
В ДЖАВА ТРЕДЕ В ШАПКЕ СНОВА АНИМЕ
@
В ПЕТУШАРП ТРЕДЕ В ШАПКЕ СНОВА АНИМЕ
109 2426048
>>26030

>SPRING NET


>NHIBERNATE


Эту хуйню никто не использовал и никогда не станут юзать, залетный дебил
110 2426051
Мда чел
111 2426064
>>25889
Ну так стандартный List<T> и есть по сути динамический массив. Хочешь трушный связный список - юзай LinkedList<T>
112 2426067
>>25962
Ну когда есть методы, которые можно логически обособить, но которые не нужны за пределами использования одного конкретного класса. Когда есть общие поля.

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

Что еще? Использовать наследование по моему мнению нужно, когда вариаций наследников больше одного. А когда у тебя ровно один наследник, то это ничто иное как partial class.
113 2426077
>>25884
Разобрался. Оказывается в .ico можно хранить стак изображений разной величины, а шиндовс потом автоматом оттуда берет нужный объект. И все это можно тонко настроить в стандартном редакторе студии, если нужно, чтобы под кажыдй размер была своя уникальная картинка, а не просто скейлинг.

А "не обновлялось" у меня раньше потому, что конвертер за каким-то хуем сделал в формате 32бита, несмотря на исходник, а студия переваривает цветовую градацию максимум в 24 бита. даже в редакторе студии 32 бита недоступны, изображение просто лочится.
sage 114 2426095
Насколько нужно быть наглухо отбитым долбоебом, чтобы переносить на новую строку {, но не переносить (? Алсо, какое же говноедство писать методы с большой буквы, мне страшно представить ваши ёбла, уроды
115 2426132
>>26095
Есть три типа клинических уебанов, которые перекладывают свои проблемы с ОКР на плечи окружающих:
графические дизайнеры, гопники и программисты.

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

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


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

И то, что ты тут горишь — исключительно последствия особенностей твоего языка и класть болт на читабельность ради удобства, это высшая мера уебанства.
116 2426153
>>26095
Не рассказывайте додстеру про линтеры и форматтеры
117 2426312
Без вышки есть смысл скуфу вкатываться в С# ? или путь один в php / js / ruby ?
118 2426458
>>26312
Вышка это как цвет кожи.
Вот если ты белый, то вопросов к тебе минимум. Если же имеешь оттенок, то сразу будут вопросы, а не пушишь ли ты наркоту, не роббишь ли дома и т.д. И похуй, что будучи белым, ты можешь оказаться тем еще маньячилой насилующим котят, главное, что при первой встрече к тебе меньше вопросов будет.
Точно так же и с вышкой. Есть диплом - проходи, дальше разберемся. Нет, ну тогда готовь анус - сейчас будем проверять тебя за всю хуйню.

>>26312

>Без вышки есть смысл скуфу вкатываться в С#


Да есть, но ты должен быть достаточно энергичным, чтобы успевать за тенденциями. В шарпе сейчас много. чего меняется и надо быть на волне.
119 2426521
>>26458

> В шарпе сейчас много. чего меняется и надо быть на волне.


Зочем майки ето делают? Вот в goвне наоборот топят за минимум фич, и он сейчас очень в вебе популярен стал
120 2426634
>>26030
Майки еще в нулевые создали шарп для того чтобы он был заточен под асп.нет - джава дебилы делают спринг спустя 10 лет который позволяет делать то же, что и шарп.
Майки придумали linq еще в нулевые - джава через 15 лет спиздила и назвала хибернейт.
121 2426733
>>26634
Да да. Так и было
Ну всякие мелочи что хибернейт вышел наполгода раньше чем появился шарп, но то наговаривают
122 2426790
>>26634
Пфф. LINQ. 900 строк кода на Scheme - и готов твой LINQ.
123 2426801
>>26790
Ну так то LINQ разный бывает
image.png381 Кб, 600x400
124 2426811
>>26030
ОН МОЯ КОНКУРЕНТ. ORACLE JAVA. БОЛЬ В МОЯ ДЫРКА ЗАДНИЦА. Я ДЕЛАЙ LINQ, ОН ДЕЛАЙ STREAM. Я ДЕЛАЙ ДЖЕНЕРИК, ОН ДЕЛАЙ ДЖЕНЕРИК. Я ДЕЛАЙ ASYNC/AWAIT. ОН НЕ СМОГ. РАДОСТНО!
125 2426821
>>26811

>Я ДЕЛАЙ LINQ, ОН ДЕЛАЙ STREAM.


Я делай LINQ Expression, он делай ?????

>Я ДЕЛАЙ ДЖЕНЕРИК, ОН ДЕЛАЙ ДЖЕНЕРИК


Говорят, дженерик то НЕ НАСТОЯЩИЙ

>Я ДЕЛАЙ ASYNC/AWAIT. ОН НЕ СМОГ. РАДОСТНО


Кстати да. Возможность писать асинхронный код как синхронный это не мелочь по карманам тырить. Киллер фича
126 2426900
>>26521

>Зочем майки ето делают?


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

>>26634

>создали шарп для того чтобы он был заточен под асп.нет


>придумали linq еще в нулевые - джава через 15 лет спиздила и назвала хибернейт


Толсто.
127 2426978
Если создать экземпляр окна в одном потоке, а запустить в другом, это сработает как работа окна в другом потоке?
128 2427006
>>26978
Понял, нельзя
16549441690230.mp4781 Кб, mp4,
512x512, 0:02
129 2427039
>>26030
Как же джавистам "похуй". Они даже в каждом ОП-посте обязательно указывают C# в уничижительном ключе.
130 2427043
>>27039
Двачую, уже не выдерживают у них нервы, не знают что бы такого написать. А ведь всё началось с того, что я один раз написал в их треде, сейчас они уже в трёх-четырёх перекаченных тредах пытаются что-то там высрать про шарп
131 2427271
>>24832

>Денис


Кажется я тоже знаю одного Дениса с такими наклонностями
132 2427280
Есть какая-то литература по слоеной архитектуре? С примерами на шарпе? Все спасибо
133 2427377
>>26030

>SPRING


Ненужное говно. Срсли. ASP - пижзе.

> HIBERNATE


Туда же. EF - пизже

> ЛУМ


В чем профиты, кроме того что внешне это выглядит как поток, а не как Task - я так и не понял. Может быть тупой.

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

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

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

Как же я бы хотел, чтобы деды на работе так не хейтили F#. Так удобно многие штуки на нем делать. Но не. Дедам не нравится ЕЩЕ ОДИН ЯЗЫК!!! И я как-бы понимаю. Но фишек там прикольных слишком много.
sage 135 2427408
>>27399

>Когда в шарп завезут мультипарадигмальность?


Никогда, надеюсь. Для этого есть F#. Я вообще думаю через лет 5 перекатываться в F# и функциональщину, а то меня эта ебатория с ООП, паттернами, правильными правилами просто настоебенила. Скукота...
136 2427411
>>24114
А ты и сейчас десктоп? Я молодой джунишка-вкатунишка, сейчас тоже сижу на десктопе. Как грамотно подойти к самообразованию, чтобы потом в веб перекат сделать? P.S. Изначально вкатывался на жабу со спрингом, но в последний момент подвернулся варик с норм работкой на шарпе.
137 2427424
>>27411

>А ты и сейчас десктоп?


Я начал с десктопа, но потом насильно перекатился в веб поскольку в моем провинциальном городке тяжко с работой. Планирую в ближайшие 2-3 года съебаться в ДС2 и уже заниматься формошлепстов на WPF.

>Я молодой джунишка-вкатунишка


Да я тоже, всего лишь год опыта коммерческого.

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


Нужны скорее более общие знания, чем непосредственно глубокие в ASP.NET Core, тебя скорее всего в вебе заставят клепать веб-апишки первое время, прям как меня. Если обобщить, то знания архитектуры приложений DDD/CHO и DI даст тебе больше, чем углубленные знания в самом ASP.NET Core. Это конечно не означает, что надо совсем забить хуй на платформу и идти дрочить сетевые протоколы
138 2427436
>>27424
Че по зэпке? Мне про сотыгу через год говорят, но 2 друга жабиста по 160к с годом попыта в вебе имеют, хочется примерно также присосаться
139 2427437
>>27408
А я вот надеюсь, что таки завезут.

И я вот за время работы с TS и JS парралельно - полюбил кучу фишек оттуда. Мне больше нравится как в ES6 сделаны импорты чем как оно в шарпе. Мне кажется удобным как сделаны экспорты. Мне хотелось бы чтобы я так же мог спокойно определить пару служебных функций не создавая статический класс с ними. Вообще - JS, если бы не был так сильно привязан к вебу - был бы топовым языком как по мне. Очень удобный. Очень гибкий. И штуки которые внедряются - действительно хорошие. При этом он не ушел в ту шизофрению, куда пошли плюсы, и не остается на месте как Си.
140 2427440
>>27436
50к выход после налогов, ну это еще норм т.к я примерно 4 месяца на текущей работе, до этого пинал хуи на заводе программистом где пытался самобучаться, так что можно сказать, что коммерческого опыта - год, а нормального - 4 месяца.
141 2427441
>>27437

>А я вот надеюсь, что таки завезут.


Я бы хотел чтобы завезли АОП полноценное
142 2427473
Как писать последний аргумент функции, с отступом и скобочкой на следующей строке, или без отступа и скобочкой в той же строке? А может с отступом и скобочкой в той же строке?
143 2427477
>>27473
Считаю не стоит переносить, как на 3.
144 2427523
>>26458

>ты должен быть достаточно энергичным


Я начал с фронтенда про быстроту наслышан, заметил что на шарпе много фуллстек вакансий с фронтом, в основном на ангуляре, поэтому заинтересовался, на джаве к примеру таких вакансий не замечал особо.
Получается можно в соло что то пилить на шарпе ? Или просто экономят на фронтендерах.
145 2427537
>>27473
Если (открывающая скобка на новой строке)
{
тогда закрывающая тоже на новой;
неважно, какая это скобка(
фигурная,
круглая,
квадратная,
угловая);
}
146 2427574
>>27523

>Или просто экономят на фронтендерах.


А зачвем много фронтов? Быстро делать дизайн по фигме любой даун сможет
147 2427609
>>27574
И всё же на это надо тратить время. ещё и переключаться между двумя проектами, в одном бэк, в другом фронт. Когда можно сосредоточиться на бэке, как белый человек, а всю чёрную работу отдать вебмакакам.
148 2427628
>>27609

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


Ну тащемта всё так и есть. Даже у меня на аутсорс галере есть блядина и еще пара долбоёбов которые верстают дрисню, а я и еще пара бравых ебашут бэк.
149 2427654
>>27440
А зачем дс2. Удаленно же можно найти. Ну через годик.
150 2427658
>>27574

>любой даун сможет


Анон я же не просто так написал про ангуляр и нест, у вас какие то понятия о фронте из 2000-х где с сервака шаблон отдаешь с формочкой. Посмотри проект на несте тс, там по типу спринга архитектура, это же не бутстрап.
image.png269 Кб, 640x640
151 2427705
>>27658
Да похуй мне чем там во фронте. Я перекладываю жсоны и мне норм.
152 2427777
>>27523

>Или просто экономят на фронтендерах.


This.
Да один из видов экономи, причем достаточно тупой.
153 2427849
Здрасьте, давно не пользовался этим вашим дотнетом. С какой версии можно юзать всякие Console, LinkedList и тд без using?
154 2427854
>>27849
Если тебе надо всё делать в одном файле - то .NET 6, если тебе надо юзать сабжи в разных файлах - то ни в какой. Алсо если ты в VS то можешь нажать комбинацию клавишу "Ctrl + .", откроется окошко и можно будет выбрать подключение юзинга, если требуется.
155 2427859
>>27854
Я просто не понял какого хуя я залетел щас в вижлу и могу спокойно юзать Linked list и Console без подключения пространств имён
156 2427862
>>27859
Хочешь юзать нервничая?
157 2427864
>>27862
Я разобрался, это implicit юзинги
158 2427865
>>27862
Аж трисёт при написании using.
159 2427866
>>27859
Ну это новый синтаксис класса Program, Ты можешь опять сделать структуру Program { Main() {}}, такой синтаксис сейчас вообще во всех проектах на .NET 6+
160 2427872
>>27864
Только почему из вижлы нельзя посмотреть какие глобальные юзинги используется в проекте?
161 2427900
Почему когда я использую
MemoryMappedFile sharedMemory = MemoryMappedFile.CreateOrOpen("MemoryFile", size * 2 + 4);

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

На ютубах почему-то вообще ничего по теме нету, только античные видосы 8-10-летней давности, остальная выдача вся про async/await. Может новый способ теперь какой-то более модный есть?
163 2427980
Нуб в треде.

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

у меня что-то типа
if (card== 'A')
...
else if (card=="K")
...
else if(card=="10")
....
sage 164 2427983
>>26634
>>26811
ДЖАВИСТЫ ЗАЯВЛЯЮТ О ТОМ, ЧТО ПЕТУШАРПЕРЫ КОПИРУЮТ ВСЁ С ДЖАВЫ
@
ПЕТУШАРПЕРЫ ЗАЯВЛЯЮТ О ТОМ, ЧТО ДЖАВИСТЫ КОПИРУЮТ ВСЁ С ДЖАВЫ

Ору блять.
sage 165 2427985
>>27974
ExecutorService
166 2427986
>>27983
@
И ТЕ И ЭТИ КОПИРУЮТ COMMON LISP
167 2427987
>>27985
Уйди блять.
168 2427990
>>27980

>В зависимости от типа карты он отрисовывает её


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

>Так вот, как избавиться от кучи if-else(я слышал что это плохой код)


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

Сделай массив карт и отрисуй их в самом начале, а потом уже используй только те, которые на столе. Я не шарю в карточных играх, но если у тебя есть определенные "типы" карт, то ты можешь сделать класс который будет содержать нужный тебе тип карты, в таком случае количество условий уменьшится.
sage 169 2427991
>>27980
На петушарпе никак.
170 2427992
>>27974
Никто треды не юзает потому что они нахуй не нужны. С ними слишком много ебатории, всякие дедлоки хуёки и прочее, легче юзать await Huita() и всё норм.
171 2427993
>>27983
Один хуй все новые фичи сначала появляются в хачкелях окамлах смоллтолках и прочих экспериментальных языках, а только потом уже в унылый энтерпрайз их запихивают.

>>27974
Треды мало кто использует сейчас. В основном тредпулы, которые скрыты под несколькими слоями абсракций.
172 2427994
>>27991
Да не трясись)
sage 173 2427995
>>27992
Да, а потом глубинные баги отлавливать.
sage 174 2427996
>>27994
>)
@
ДА НЕ ТРЯСИСЬ
175 2427998
>>27995
>>27996
Хуя у джавадебила пригорело, ты чего так взорвался? Ну есть у нас асинхронность, есть нормальный LINQ, скоро и у вас появится.
sage 176 2428000
>>27998
БАХ
@
ТЫ ЧЕГО ТАК ВЗОРВАЛСЯ?
177 2428002
>>27998
Лол не появятся
178 2428004
>>28002
Оракл не осилил в синтаксический сахар?
sage 179 2428008
>>27849
На петушарпе импорты вручную пишут?
180 2428011
>>27998
Асинхронность и сейчас в жабе есть, правда на уровне CompletableFuture, но тем не менее.
А так, зачем нужны async и await, когда есть виртуальные треды и любой блокирующийся код можно превращать в неблокирующийся?
sage 181 2428019
>>28011

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


РЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ!!!!! НУ ТЫ НАПИШИ АСИНК, НАПИШИ))) НЕ МОЖЕШЬ)))))) ААХАХАХАХАХАХАХАХААХАХАХА))) ТУПАЯ РУСНДЖАВА))))))))))))) ЧТО ЗНАЧИТ ЗАЧЕМ???? ЛОЛ ВАТНИК)))) А Я МОГУ ПИСАТЬ ГОВНО))) ЭЭЭ БЛЯ ОТКУДА ДЕДЛОКИ(((((((((((((((((((((((((((((((((
182 2428022
>>28008

>На петушарпе импорты вручную пишут?


Ты о чем? В любом языке пишут в одном или нескольких языках строки вида "import govnoname".
>>28019
Мань, причем тут async/await и дедлоки? Ах да..в джаве же нет удобной абстракции в виде Task, откуда тебе знать их разницу?
sage 183 2428023
>>28022
АХАХХААХААХ ТУПАЯ ДЖАВА))) НУ УТЕБЯ НЕТУ ГОВНА! ТОЛЬКО В ПЕТУШАРПЕ ЕСТЬ КАКАШЕЧКИ! ПЕТУШАРП - ТОП ПО КАКАШЕЧКАМ! КОПРОБРО, ПОДТВЕРДИ!
sage 184 2428026
>>28023
ПОДТВЕРЖДАЮ, КОПРОБРО!
185 2428029
>>28023
>>28026

А ты бы разве не хотел чтобы было как в C#? Нет мыслей "эх, наверное в шарпике это полегче было бы.."
186 2428030
>>28022

>причем тут async/await и дедлоки


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

Вообще в чем прикол async/await? В том, что мы просто пишем await Govno() и говно неблокирующе где-то запускается под капотом на особом тредпуле?
sage 187 2428033
>>28029
Один раз было. Когда из-за стирания типов пришлось методы с разными дженериками по разному называть.
188 2428036
>>28033
Джава даже в дженерики не осилила? Пиздец...
sage 189 2428037
>>28036
Петушарп даже в документацию не осилил?
sage 190 2428040
>>28036
Петушарп даже в обратную совместимость не смог?
191 2428041
>>28037
Какую документацию? Уже в какой раз вижу этот аргумент, но никак не пойму. У нас огромная книга msdn, что не так? На каждый чих-пук есть пример, который с недавнего времени можно еще и на самом мсдн запустить
192 2428042
Вообще, вот есть интересная задача. Есть N тредов, которые должны ждать сообщения от особого треда X. При этом все эти N тредов должны реально ждать, просто висеть и нихуя не делать. Как только они получают сообщение от Х каждому из них нужно вывести сообщение "STOP" и прекратить работу.

Как реализовать отправку сообщения от треда X таким образом, чтобы все N тредов не в бесконечном цикле крутились и жрали ресурсы ЦПУ, а просто были приостановлены планировщиком до тех пор, пока к ним сообщение не прилетит.
Так стоит учесть, что тред X может отправлять любые сообщения, но вывод стоп и прекращение работы нужно делать только в том случае, когда в тред прилетит конкретное сообщение, на которое были изначально подписаны N тредов.
193 2428043
>>28040

>Петушарп даже в обратную совместимость не смог?


Смог вроде, при переносе с .net 5 на .net 6 нихуя не сломалось кроме 1 строки которая пофиксилась примерно за 15 секунд.
sage 194 2428046
>>28041
А ты можешь просто писать код и просто по итогам написания кода тыкнуть на кнопку генерации доков в идее и просто открыть сайт уровня https://docs.oracle.com/javase/8/docs/api/java/lang/String.html ?

>>28043
АХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХАХАХАХАХАХААХАХАХАХА БЛЯТЬ ПЕТУШАРПЕР ГОРДИТСЯ ТЕМ, ЧТО У НЕГО ПРИ ПЕРЕЕЗДЕ НА НОВУЮ ВЕРСИЮ ВСЕГО ОДНА СТРОКА СЛОМАЛАСЬ???????????????????????????????????????????????????????
195 2428052
>>28046
почему джависты всегда срут на дотнетчиков а дотнетчики просто пишут код?
196 2428054
>>27992
>>27974

>легче юзать await


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

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

2. Невозможность использовать async, если ты пишешь либу для стороннего приложения.
sage 197 2428055
>>28043

>Смог вроде, при переносе с .net 5 на .net 6 нихуя не сломалось кроме 1 строки которая пофиксилась примерно за 15 секунд.


А теперь представь, что ты делаешь что-то больше калькулятора и у тебя есть куча скомпилированных .jar (или что у вас там, .cs?) файлов, каждый из которых от разных разрабов, и доступа к исходникам для фикса этой одной строки у тебя нет к половине этих .jar. Что будет делать? Будешь ждать, пока все 300 разработчиков выкатят перекомпил? Или скажешь "нинужна" и обойдёшься без половины жарок? Или останешься на старой версии дотнета, и будешь терять новые багфиксы и фиксы уязвимостей?
198 2428056
>>27900
Какая же это ебанина, эти ваши MemoryMappedFile.
На пустом месте может пропасть файл.
sage 199 2428057
>>28054

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


Что? В петушарпе есть проблемы при использовании внешних библиотек? Они работают не как твой собственный код?
200 2428060
>>28054

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



Разве await не стартует задачу где-то в отдельном потоке на внутреннем тредпуле?
201 2428070
>>27980
Для этого и существуют интерфейсы.

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

А если наоборот нужно узнать в какой карте произошло что либо, то делаются события.
202 2428071
>>28042
Смотря как у тебя реализованы эти потоки.
Можно сделать TaskCompletionSource, дать N потокам его Task, чтобы они его await, потоку X дать сам сурс. Когда надо, в сурсе юзаешь SetResult, и евейт закончится. Но это одноразовая тема.
Можно поискать разные классы синхронизации. Я знаю Monitor и SemaphoreSlim, но они вроде не подходят. Семафор сработает, если ты знаешь, сколько у тебя поток N. Но их дохуя разных, если зайдёшь на msdn в описание одного из этих, рядом будут ещё другие. Или ещё как поищи, хз.
203 2428076
>>28057
У меня был (есть) случай, когда нет контроля над сторонним приложением. Есть встроенный скриптовый язык, который может вызвать функцию нейм из условной библиотеки. Я не могу там установить await, поэтому приходилось работать через потоки, например для вызова окна, чтобы оно не фризило скрипт.
204 2428077
>>28070
У меня есть класс Gambler(От него наследуются крупье и игрок) И у этого гэмблера есть свойство Hand которое является массивом карт.
И у меня есть класс-отрисовщик, который отрисовывает кол-во фишек, например, или вот руку(карты) чела. Не думаю, что мне нужен интерфейс ICard, у меня класс Card. Или я просто тебя не понял)
205 2428111
>>28071

>чтобы они его await


Как эта штука под капотом работает? Там какой-то аналог wait/notify будет или бесконечные циклы aka spinlock?
2022-08-0814-55-50.png48 Кб, 1060x561
206 2428113
>>28077
В сообщении присутствует слово из спам листа.
207 2428114
Аноны, объясните плс одну вещь. Я попробовал посмотреть гайды на ютубе, но это только сильнее запутало. Есть стек, есть куча. В одном храняться значимые типы, во-втором ссылочные. Во-первых, нахуя это разделение нужно и на что это влияет при работе?
Так же не понял этого дроча со значимыми и ссылочными типами: допустим, есть у меня две переменные инт со значением 10. Получается, у меня в памяти существуют два независимых числа 10?
Если тип ссылочный, например, два стринга со значением "Hello". Это значит, что "Hello" существует только в одном экземпляре? А если я этот стринг решу запихнуть в метод аргументом и изменить его там? Я получу на выходе совершенно другую переменную? Или что?
208 2428119
>>28042
Barrier?
209 2428128
>>28113
Ну выглядит не очень что в классе Suits есть информация о том как его отрисовывать
210 2428138
>>28114

>Во-первых, нахуя это разделение нужно и на что это влияет при работе


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

>допустим, есть у меня две переменные инт со значением 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

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


Смотря как передашь. С этим можешь сам потыкаться, там много моментов которые описывать лень
211 2428152
>>28114
Тебе голову ломает ситуация со стрингами, а все потому что они, как это сейчас говорят, третьего гендера.

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

>А если я этот стринг решу запихнуть в метод аргументом и изменить его там?


В качестве аргумента передается ссылка (ты уже понял почему)

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

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

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

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

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

Алсо, я не понял этого объяснения с труханами. Разве если бы стринг был значимым типом и лежал бы в стеке, он как-то влиял бы на инты?
213 2428169
>>28128
Слушай, а как по твоему устроен Image? В нем и хранится информация.
В нем есть информация о своих габаритах, о локальной позиции, и главное там есть массив пикселей в виде Bitmap.

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

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

a = new Int
a.Number ....
215 2428198
>>28152
По объяснению показалось, что это жабатред
216 2428222
>>28155

>Если я правильно понял


Да, правильно

>Алсо, я не понял этого объяснения с труханами. Разве если бы стринг был значимым типом и лежал бы в стеке, он как-то влиял бы на инты?


Стринг не может лежать в стеке, в стеке лежат только 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
217 2428224
>>28195
вот этим
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" это всегда ссылка на твою "обертку".
218 2428227
>>28195
Переопредели explicit и implicit операторы
219 2428232
>>28227
Напиши пример, это как?
Т.е. анон может использовать
a = new Int
b = a

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


Так что ли? Не верю.
220 2428235
>>28227
>>28232
Забыл добавить почему это работает. Вообще операторы 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
220 2428235
>>28227
>>28232
Забыл добавить почему это работает. Вообще операторы 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
221 2428239
>>28232

>Так что ли? Не верю.


Ага, я когда это нашел - просто ахуел. Прикол в том, что это ведь даже на 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

image.png81 Кб, 733x604
222 2428241
изображение.png30 Кб, 652x114
223 2428245
Что я делаю не так?
224 2428246
>>28227
спасибо, анончик!
изображение.png35 Кб, 653x167
225 2428248
226 2428250
>>28248
У тебя _images = null, не объявил где-то.
227 2428251
>>28245
После слов вызвано исключение, для тебя пустой неинформативный газ? Понимаю.
image.png388 Кб, 750x957
228 2428291
Аноны, читаю пикрил, очень нравиться. Но к сожалению, инглиша не хватает. Хочу узнать - есть ли она на русском? Стоит ли вообще искать?
229 2428303
Анончики... Как вы программируете на этих ваших Жабах и сишарпах? Я охуеваю когда надо продумать ООП архитектуру для приложения и получается кал говна. Как? Как?
230 2428309
>>28303
Так а нахуя чето придумывать если уже всё придумано? Джун должен знать о паттернах и архитектурах. Миддл должен уметь их применять. Сеньёр должен знать, когда их применять, а когда нет.
231 2428312
>>28309
Ну вот хочу я консольную игру сделать, например. Начинаю продумывать сущности и тд. а выходит хуйня какая-то говно тупа куча классов кала, интерфейсы хуйни и ещё всё куча зависимостей
232 2428325
>>28312
Сейм щит. Все начинается логично и структурировано, пока не превращается с помойку, которая заставляет применять все больше помойных решений.

Ну видимо шутки про бесконечное переписывание кода взялись не с потолка. Недавно смотрел видео, где менеджер жалуется, что программист вместо написания условного калькулятора начинает придумывать новую механику перетягивания окон.
233 2428339
>>28325
Так получается что даже самые сеньеристые сеньеры рано или поздно в помойку кодовую скатываются что же это за хуйня такая
234 2428352
>>28339
Ну видимо поэтому и придумали солид принципы. Боль неизбежна, но зато с ней можно как-то справиться.
235 2428383
>>28325

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


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

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

Ну и как второе фиксить? Я для этого и собсна их и использую, что я не знаю че там и когда второе приложение мне отправило. В ЭТОМ СУТЬ! Я пытался использовать булевый флаг как идентификатор для чтения записи, но это только снижает вероятность, а не устраняет проблему.
237 2428428
>>28426

> Есть нормальный способ обмена данными между приложениями?


СОКЕТЫ
238 2428431
>>28426

>Есть нормальный способ обмена данными между приложениями?


Каналы
Сокеты
239 2428434
>>28428
>>28431
Соекты это разве не веб? Еще нехватало сервер поднимать или что-то вроде этого.
240 2428436
>>28434
Ну у тебя будет очень простой TCP сервер на локалхосте, который будет принимать и отправлять нужные данные.
241 2428437
>>28434
Нет не веб
242 2428440
>>28436
>>28437
Лан, пошел гуглить. Говорят, что все API на этом основаны.
1.png42 Кб, 1500x840
243 2428520
>>28440
>>28437
>>28436
Посмотрел вот это
https://www.youtube.com/watch?v=QohqDyTjclw&t=222s

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

Именно из-за множества ограничений я принял решение, чтобы моя библиотека запускала еще одно приложение (уже мое), в котором можно использовать все что угодно (пикрил схема).
244 2428529
>>27974
смысла нет использовать такой неудобный синтаксис. Есть унифицированный подход TPL и то, что бОльшей части задач хватает пула. А если даже и нужен выделенный поток, то даже там есть LongRunning
Так что такой старый подход нужен если хочется к ядрам поприбивать или Abort(но его вырезали, так что причин поубавилось)
245 2428537
>>28520
хуй знает, вопрос не изучал, но когда делал свою модульную хуйню, мой длл подсасывал херню возле себя из своей папки.
246 2428540
>>28537
Может exe, который запускал твой длл, находился в той же папке? В большинстве случаев так и происходит.

Или ты тоже плагины делал?
image164 Кб, 900x890
247 2428541
>>28312

> игру сделать


Для игр идеально подходит Entity Component System (ECS). Игровой движок Unity3D как раз сейчас переходит на эту систему. Тот же Overwatch написан на ECS:
https://www.youtube.com/watch?v=zrIY0eIyqmI
248 2428543
>>28520

>а ублюдочный .NET ищет импортируемые либы по месту запуска exe, а не по месту запуска dl


Для старого дотнета там вроде событие было нужно определить. Для нового AssemblyLoadContext
249 2428544
>>28540
Я же написал, что из своей папки. Да, свои плагины делал.
250 2428547
Пишу простенький веб сервак. Хочу сделать возможность подтягивать к нему шарповый бэк. Вопрос - как это реализовать? Сейчас идея прокидывать ассембли бэка и уже из сервака его запускать но пока выходит какая-то хуйня. Норм вообще идея или посоветуйте что-нибудь получше?
251 2428550
>>28543
не ну динамическая загрузка это не тот функционал какой есть через imports, когда тебе доступны все методы и посдказки и intellesence. Это больше похоже на импорт нативных библиотек.
Это поможет для критичных ситуаций, но это не то тэффект, когда ты просто в конфиге указываешь папку для подхвата библиотек.
252 2428554
>>28550
не знаю о чем ты.
объявляешь контракты (интерфейсы) и пишешь себе со всеми подсказками и проектами.
А в рантайме будет загружена нужная реализация.
Именно так плагины и пишут (и по другому никак, ведь тут вам не питон чтобы можно было компилить код не зная типов, а динамик не для этих случаев)
253 2428557
>>28554
Можно подробнее? Вот я загружаю либу
Assembly asm = Assembly.LoadFrom("Plugins/MyApp.dll");

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

Вот оно так и работает. Какие интерфейсы?
254 2428559
>>28557
Да, так и работает. Дальше square.Invoke()
255 2428560
>>28303
Ебош казуально dependency injection и катайся еблом по клаве
Стикер255 Кб, 512x512
256 2428561
>>28559
Ну эта жи ниудобна. Проще dll юзать как мост, а всю логику выполнять в рядом лежащем exe (так, кстати, многие плагины для той приложухи и сделаны).
Мне только осталось найти годный метод обмена информацией.
257 2428563
>>28561
Та ты заибал. Просто подключи свою хуйню к проекту как dll, References -> Add reference и не еби мозгу. Если проект на C++ - используй маршаллинг.
258 2428565
>>28557

>И дальше я должен получить конкретный метод


А какова причина ей работать именно так?
У тебя либо полная динамика (то есть ты не можешь знать в рантайме типов, а значит и IDE нечего подсказывать - он тоже не может знать), либо ты типы знаешь, а значит никаких MethodInfo просто нет - работает обычный cast и все плюшки

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

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

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

можно наплодить сколько угодно интерфейсов вида IFeature
можно сделать IPlugin.Run(context)
Свобода же. И при этом типизация.
259 2428569
>>28557
то есть никто вот такие MethodInfo не плодит
объявляются контракты, а дальше какой то механизм типа MEF/IoC/велосипед находит нужные реаизации и затыкает эти контракты в рантайме.

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

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

context.Features.Get<IHttpRequestFeature>()

где Features просто коллекция, которую при тестах можно заполнить заглушками, а в рантайме ее заполняет механизм работы с плагинами. (и даже там можно не рефлексировать, а что то типа IPatform.GetFeatures)
260 2428578
>>28563
Ты думаешь я не пробовал так? Только ищет он эту либу по пути exe основного приложения.
Все стандартные либы нормально импортируются, а вот все что требует референса — пишет, что файл не найден.

>А какова причина ей работать именно так?


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

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


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

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

И да, эта библиотека мимикрирует под нативную, с экспортом функций.
261 2428583
>>28578

> нативную библиотеку


Ну если речь идет о нативных библиотеках, то можешь забыть все что я написал
Там да, есть проблема вида "не могу найти загрузить нативную часть", что бывает с некоторыми нюгет пакетами врапперами над нативом и я хз как это решается.
262 2428599
>>28583
У меня только функции экспортированы.
Обычно же, когда ты используешь управляемую библиотеку, то ты должен сначала обратиться к неймспейсу, классу, а потом к методу. А мне нужно было, чтобы функции уже были точками входа — как это работает при [DllImport("")]

Я не думаю, что это делает код в моей библиотеке неуправляемым, ну по крайней мере я наблюдал работу сборщика мусора.
Но проблемы есть с асинхронностью, с референсами библиотек.
263 2428602
>>28599

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


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

с нативными библиотеками можно использовать для загрузки длл
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.nativelibrary
но я его не пробовал
264 2428640
>>28599
вообще тебе нужно

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

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

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

Как, блядь, быть? При учете, что сишника нормального - хуй найдешь, а шарповода - хуй научишь писать нормальный код на си.
266 2428689
Аноны, в далеком 2013 году пару месяцев кодил в консольке, написал игру, рулетку и пару мелких хуевин, но формы не изучал, базы данных не затрагивал. Как думаете, имеет ли смысл в 33 года пробовать дальше изучать чтобы вкатиться? Сколько понадобиться времени если заниматься по 4-5 часов в день? Жалею что не вкатился тогда, но были причины, то проблемы со здоровьем, то смерть близких и прочее дерьмо
267 2428690
>>28689

>Сколько понадобиться времени если заниматься по 4-5 часов в день


Конечно смысл есть. Вкатишься за полгода.
268 2428697
>>28689

>Сколько понадобиться времени если заниматься по 4-5 часов в день?


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

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

Это примерный путь бэкэндера, на данный момент с таким стеком реально с нуля устроиться в офис или на удаленку на з.п. 40...60К и где-то через полгода-год удвоить эту сумму. Через год-два это все так же будет актуально (с примечанием только, что нужно будет хорошо шарить в .Net6)
Все остальные пути в шарпе - хуета и потеря времени.
269 2428703
>>28680
Это такая жирнота, чтобы пнуть c#?
270 2428704
>>28703
Всё не придёшь в себя после вчерашнего набега жабоблядей/шарпоблядей в треды друг друга? Хорошо, что репорты работают, и шизиков потёрли.
271 2428718
Почему булеан весит 4 байта — это даже выше, чем чар.
Есть что-то легче байта? Мне нужно вписать нолик и единичку.
272 2428720
>>28718
Это тебе кто такое сказал? bool весит 1 бит. Можешь загуглить или сам в консоли написать Console.WriteLine(sizeof(bool))
273 2428721
>>28718
Какая разница, всё равно alignment сожрёт сэкономленные байты.
274 2428722
>>28720

> 1 бит


Чёт дохуя.
275 2428725
>>28722
Согласен.
2022-08-0910-49-59.png7 Кб, 1649x39
276 2428728
>>28720
Да? В бейсике сайзе оф выдает 4.
А пикрил по c#
278 2428730
>>28718
Легче байта для единичного значения не выйдет. У тебя цп адресует память побайтово. Если нужно хранить несколько булевых значений - гугли битовые векторы
279 2428734
>>28729

>киберфорум


Нашел блять кому верить. Оператор sizeof возвращает число байт, выделяемых средой CLR в управляемой памяти. В управляемой памяти будет 1 байт, а в не управляемой - 1 бит.

Когда у тебя появляется вопрос по кишкам CLR - иди на MSDN, а не на какие-либо другие форумы. Но на двач можешь, не зря же я разбирался в этом говне, надо хоть где-то знания применять эти
280 2428735
>>28697

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


Исчх, WinForms до сих пор топ для Windows-only десктопа. В конторе юзаем паралелльно с вебом. Да и петы набросать можно. Недавно видел вакансию на 6к$, а зумеры всё никак не могут похоронить деда.
281 2428736
>>28734

>В управляемой памяти будет 1 байт, а в не управляемой - 1 бит.


sizeof возвращет для управляемой, Marshal.SizeOf для неуправляемой.
282 2428737
>>28703
Нет. Просто, внезапно, местные вузы выпускают людей, которые относительно нормально знают шарп-жаву-питон и совсем не знают плюсы/си. На заводе нужны программисты. Руководство не готово держать людей, пока они освоят плюсы на уровне нормально - нужно чтобы они что-то полезное делали. Плюс трубы горят - нужно много чего для железа писать.
Писать на шарпе - было бы очень удобно. Но пока что все изученные сценарии показывают, что чтобы оно нормально работало - нужно минимум гиг оперативки иметь и процессор помощнее. Но это ведет к удоражанию железа. А никто не будет покупать сами устройства, если они будут даже на 30% дороже, а тут оно будет раза в 2 дороже.

Вот я и хотел узнать. Может быть кто с подобным сталкивался и знает как можно было бы на вот таком, относительно слабеньком железе заставить если уж не летать, то хотя бы приемлемо стартовать программулины, чтобы пока с такой платформой живем - хотя бы какие-то мелкие программулины служебные можно было на шарпе писать, ну, допустим какую-то программку, которая бы опрашивала бы состояние датчиков устройства и отдавала в стандартный вывод и ее раз в 100ms бы уже программа на плюсах дергала. Или программулина бы которая бы сидела и в последовательный порт отдавала бы что-то полезное, чтобы можно было по rs232 почитать.
А пока выходит - что ну совсем-совсем на шарпе под что-то кроме серверов дорогущих, да десктопов - ничего и не попишешь.
283 2428739
>>28737

>А никто не будет покупать сами устройства, если они будут даже на 30% дороже, а тут оно будет раза в 2 дороже.


Пентиум дуал кор 2 гига 2 ядра - 3000 рублей в худшем случае, 2 гб ОЗУ - 1000 рублей.
284 2428744
>>28737
Чел, вот давай без инсинуаций про слабые компьютеры. Если ты хочешь шарп на микроконтроллерах использовать, то ты ебанутый. Если у вас компьютер на заводе на ARM Cortex-A7, то вы ебанутые.

Да и то, речь идет про стартовый запуск, а не про скорость работы в целом. Ебать привереды у вас там, подождать 30 секунд в падлу.
285 2428762
>>28739
Все устройство целиком стоит 2к рублей, няша. Это уже произведенное.

>>28744
Не на микроконтроллерах. Это вполне себе сейчас компьютер. С линуксом, пусть и кастомным. По производительности - что-то в районе малинок первых поколений.
Про первый запуск идет речь, потому что в контексте long-running - шарповские приложения - нещадно жрут оперативу и хрен как с этим бороться. Изначально как раз идея была в том, чтобы core-приложение переписать на шарпы, но в таком случае - оно через пару дней работы при активной загрузке - просто уходило на флешку, а это уже пиздец как больно.
Соответственно, если для постоянной работы оно так себе - было решено посмотреть со стороны unix-вея, пусть быстро что-то делает полезное. Но тут - как раз внезапно долгий старт даже мелких приложений.
286 2428817
Кто-нибудь работал с Azure Functions? Насколько кривая или нормальная вещь? Мне нужно для написания серверной логики игры (загрузка профиля, выдача наград и тому подобное).
287 2429067
Подкиньте идей для пета. По языку в целом и кору в частности.
288 2429098
>>29067
Делай интересный проект какой-нибудь. Я уже заебался смотреть все эти интернет-магазины, канеш тема не должна меня ебать, должен ебать только лишь код, но это не отменяет, что смотреть интересный проект - интереснее.

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

Еще можешь сделать просто рофельный проект. Алсо советую купить домен какой-нибудь eblan-anon.dev и арендовать сервак, 3к в год будет выходить где-то, и развертывать туда свою парашу, покажешь еще и скиллуху по CI/CD, ваще цены тебе не будет тогда.
289 2429111
Почему у меня анимации в wpf идут рывками при перетаскивании окна?
290 2429131
>>29098

>sharplab.io



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

Какая же дрисня под капотом у этого асинк-эвэйта...
Есть доклады где подробно разбирают кишочки state machine, которую компилятор высирает?
sdfsdf.mp41,9 Мб, mp4,
1136x584, 0:05
291 2429144
>>29111
Включи какой нибудь проигрыватель видео, запусти короткое видео, чтобы указатель на таймлайне двигался быстро, и попробуй в режиме воспроизведления видео пошевелить окном. Там таймлайн тоже зафризится или будет идти рывками.
Графика это вещь дорогая, и если не хватает мощны, то луше окно будет двигаттся стабильно, но внутри все тормозить, чем и то и другое. Это результат оптимизаций.
Еще любят всякие анимации и передвижения вешать на таймеры, которые сами по себе выдают нестабильную частоту.

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

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

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

Вот шутки >>28325 про

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


как говорится, имеют долю правды.

Первым делом скажу, что обычный цикл в асинхронной функции работает куда быстрее и ровнее таймеров.
Ну или забей (но частично), потому что так везде и даже большие компании, как из моего видоса, собсно кладут болт.
292 2429146
>>29111
>>29144
Хуёво быть вами, парни. А вот у нас на qt не так...
293 2429154
>>29144
все немного не так.

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

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

Но если ты откроешь второе такое окно в другом UI потоке, то сразу заметишь что в первом окне начались фризы.
Даже на слабом компе типа core i9 + 1080ti
294 2429157
>>29146
В qml контент даже растягиваться не успевает вслед за окном, видно черную полосу, что уж про полноценные анимации говорить.
295 2429161
>>29157
Так qml та ещё хуета, все нормальные люди на виджетах пишут.
296 2429165
>>29161
Так а зачем сравнивать виджеты с впф? Виджеты аналог winforms, это говно не пригодно для современных приложений.
297 2429170
>>29165
Ты сказал?
298 2429172
>>29165
Современные приложения - это веб. И нет разницы, юзать qml, wtf или борланд, всё равно надо копаться в легаси.
299 2429175
>>29172
Плюсую, гуи мёртв. Веб - это быстро, красиво и главное мультиплатформенно.
300 2429180
>>29172
>>29175
Сколь либо сложные приложения в вебе не сделать.
301 2429181
>>29180
Сколь либо сложные приложения в гуе не сделать.
302 2429182
>>29181
Любитель пердолиться с терминалом, ты?
303 2429183
>>29131

>Какая же дрисня под капотом у этого асинк-эвэйта


Двачую, можешь еще глянуть в че превращается yield и dynamic
304 2429184
>>29182
Нахуя, если есть удобный браузер?
305 2429185
>>29182
А разве есть что-то что работало бы быстрее терминала?
306 2429188
>>29185
Пока в терминале введёшь команду, в гуе уже десять кнопок нажмёшь.
307 2429190
>>29188
Долбоёб, я чуть со стула не упал. У тебя амп равняется 10 что ли?
308 2429193
>>29190
Гуй быстрее терминала.
309 2429195
>>29193
Ты сказал?
310 2429197
>>29195
Гуй сказал.
311 2429199
Почему в треде традиционно виндового языка, столько пердолек?
312 2429202
>>29199
Больше нечем гордиться.
313 2429205
>>29199
Иронично что традиционно виндовый язык имеет тулсет в винде хуже чем на линуксе
314 2429210
>>29205
На винде есть студия, винформы, а на линуксе нихуя.
315 2429216
>>29210
Я так и сказал - юзерам "традиционной" платформы кроме как говном на лице похвастать и нечем.
316 2429220
>>29205
Двачую, разработка под виндой это какой-то кромешный пиздец.
Если с WSL, то еще куда ни шло для мелких хуевин, а вот если без него, то это поминки...
После консоли в убунте виндовая кажется совсем уж убогим поделием.
317 2429221
>>29216
Ясно, прыщебляди неприятно.
318 2429222
>>29221
Да не плачь ты
319 2429223
>>29222
Не плачь.
320 2429225
>>29223
Не плакай
321 2429275
>>28440
У майков есть какая-то своя реализация именованных каналов посмотри в них, может поможет.
322 2429340
>>29275
Да, вот прям щас это смотрю.
Сначала нашел анонимные каналы, потом перешел на именованные.
В целом, это как мемори маппинг, только без гемора.

Только там какая-то магия на этапе чтения, непонятная для меня.
Все работает, просто я это не могу осознать шо там происходит.
Что-то, что запускается из середины кода без эвейтов и событий, как будто GoTo какое-то.
Завтра разберусь и напишу.
323 2429418
Кто там хотел видеть ImlicitUsings
вот и завезли.
324 2429574
Я правильно понимаю, что для создания приложения, вписывающегося в дизайн современной винды, мне придётся использовать левые либы, сами майки не предоставили нужные шаблоны?
https://github.com/Kinnara/ModernWpf
325 2429578
>>29574
Майки рассчитывают, что для новых версий винды ты будешь использовать UWP MAUI
Стикер447 Кб, 230x150
326 2429720
>>29340
Короче НИХУЯ непонятно че там происходит.

Ну допустим я установил соединение с сервера с клиентом.
Вот я посылаю клиенту 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" и так будет расширяться до конца страницы, потом далее и далее пожирая оперативу? Эти данные не очищаются?
327 2429725
>>29720
Так вот. Если я не хочу, чтобы это говно разросталось, я просто прекращаю существование экземпляра BinaryWriter. Например окутываю его в Using.

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

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

недоступны.
328 2429727
>>29720
с чего вдруг каналам вести себя не так же, как ведут себя обычные сетевые соединения. Точно так же ведут.
329 2429729
>>29727
Я с сетью никогда не связывался. Я не знаю как с этим поступать.
330 2429770
>>29729
ну там много тумана, но образно - есть входные и выходные буферы. Запись заполняет, чтение очищает.

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

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

хотя я хз как помещаются очень большие данные тогда.
331 2429773
Какой же уебищный язык этот си шарп, ява в дохуилиард раз лучше, пиздуйте писать игрушки на своем юнити, хули вы в интерпрайзе забыли?
332 2429774
>>29773
Конкретно что ты не осилил сказать можешь?
333 2429785
>>29729

>Я с сетью никогда не связывался


Ты делаешь запрос на сервер. Сервер должен послать тебе данные в сокет. Он может буферизировать данные перед отправкой.

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

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

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

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

там в Remarks про буферы пишут. Хотя опять же - все по верхам.
335 2430279
>>29790
Ну вот про буферы непонятно. Буфер заполняется при каждом write? Или сообщение не отправится, пока я не заполню буфер врайтами?
image.png35 Кб, 609x225
336 2430289
Джуны ебаные, быстро все сюда. Что выведится в последней строке?
337 2430292
>>30289
Запусти блять.
338 2430301
>>30292
Джун, отвечай, что выведется?
339 2430309
>>30289
Вопрос с подъебом. Зависит от архитектуры на которой ты это будешь запускать.
340 2430314
>>30309
Значит, шарп как кресты, а не как жаба?
341 2430316
>>30309
Но ведь дотнет рекламировался как архитектурно-абстрактная управляемая платформа. Как же так-то?
342 2430330
>>30289
Очевидный false
343 2430347
>>30314
>>30316
Дебилы, спок. На чем бы вы не писали процессор интерпретирует отрицательные числа иначе нежели положительные. Если просто запустить -0 == 0, то будет true, вне зависимости от архитектуры, я не углублялся как это реализовано в .NET, но вероятно CLR руками интерпретирует -0 как 0.
344 2430360
>>30347

> я не углублялся как это реализовано в .NET


Оно и видно.
345 2430366
>>30347
Для инта что -0 что +0 в битах одинаковы, для дабла уже нет.
346 2430373
>>30360
Разработчик платформы, ты?

>>30366
Да, это знаю. Высрал хуйню какую-то.
347 2430456
>>30316
Если оставаться в пределах абстракций, то да. Если начинать лезть в биты-байтики и ансейф, то уже не очень.
Все по канону: «C# was built to give the developer a gun but leave the safety turned on».
348 2430460
Че за даппер, че за ефкор? А где божественные хибернейт и спринг? Вы че рил на кале пишете?
349 2430482
>>30453 (Del)
>>30460
Да не трясись ты, говно.

>Че за даппер, че за ефкор


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

>хибернейт и спринг


EFCore, спринг был спизжен с ASP.NET.
350 2430484
Как отменить функцию, например Sleep, если она выполняется дольше положенного времени?
351 2430488
>>30484

>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
352 2430499
>>30484
Ещё есть CancellationToken. Если твоя функция принимает такой, можешь сделать свой сурс токена, и отменить его через время. Только учти, что сурс нужно диспоузить.
353 2430507
>>30488

>недавно в .NET 6


А в netFramework?

>Sleep


>Не используй.


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

При чем на стороне клиента есть асихронная функция, а на стороне сервера нет. Я понимаю, что к серверу вообще могут не подключиться и это норм, но я все же ожидаю, что клиент подключится в течение N времени, иначе у него проблемы.
354 2430510
>>30507

>А в netFramework?


Обосрался. Ну тогда реализовывай руками через cancellationToken.
355 2430527
>>30510

> Обосрался.


Большинство серьезных контор в эрефии на фреймворке сидит.
356 2430531
>>30510
Ну вот, не робит
https://pastebin.com/v1w86eTJ

>Обосрался.


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

>>30546
Про bitwise операторы будут, unsafe и dynamic могут спросить просто по приколу, знаешь ты что-нибудь или нет, но там не так много изучать, можешь глянуть вообще что делает dynamic в sharblab.io, а еще через unsafe ты можешь изменить readonly/const
362 2430594
>>30554

>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 инструкции подряд которые дадут такой же результат, как и та одна инструкция. Пример - гугли что быстрее / или * там затронута тема будет >> для степени двойки.
363 2430602
>>30594

>https://source.dot.net/#System.Private.CoreLib/StringBuilder.cs,3afde4d6a6a867f9,references


Ссылка правильная, прям так и скопируй, джвачь не сожрал её правильно.
364 2430665
>>30279
Имхо сообщение отправляется сразу же, а буферизация используется для помещения сообщения в буфер перед отправкой, чтобы сразу вернуть тебе управление

То есть получится ситуация,что ты просто положил в буфер и думаешь оно уже отправлено, а это не так (если на той стороне малый буфер)
365 2430674
Продолжение истории про NamedPipes.

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

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

Пришлось ридер выносить в отдельный поток, но теперь если я закрою приложение и не закрою перед этим поток, то это говно заставляет мой кулер в компе вращаться со скоростью света.
366 2430676
>>30482

>вторая позволяет красиво


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

имхо правильнее Dapper + Linq для генерации SQL для этого даппера чтобы стринги не конкатенировать
367 2430681
>>30674
ну и зачем тогда ты так накодил?
368 2430688
>>30681
Как так? Я вообще ничего и не делал особо.
369 2430692
>>30688
так, чтобы что то заставляло кулер вращаться
учитывая что чтение (а уж тем более ожидание) пайпа это I/O операция, то есть даже проц не занимает
370 2430695
>>30545

>Вообще, у тебя сурс доступен в Sleep



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

Вот есть функция WaitForConnection, которая ожидает коннекта клиента. Она запустилась и заморозила поток, но клиент так и не подключился. Как мне эту хуйню теперь отменить? Это не моя функция.
371 2430696
>>30695
Если у тебя невнятная функция, которую ты не можешь изменить, и она сама не подразумевает отменяемость (через тот же токен), то тебе пизда.
372 2430697
>>30695
у тебя же старый фреймворк
можешь абортнуть поток
373 2430711
>>30696
В смысле, но люди же эту хуйню придумали? Как с ней работать?

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

Поток убить не могу, я могу туда просто послать команду отмены. А дальше что? Внутри поток меня залочен ожиданием ответа от сервера.
374 2430713
>>30594
И вот это вот все надо знать джуну? Я думаю его даже близко не подпустят ко всем этим вещам, там на каждом шагу можно обосраться.
375 2430719
>>30711

>Поток убить не могу


но можешь.
376 2430728
>>30711

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


А дальше делаешь Join потоку
377 2430733
>>30728

>А дальше делаешь Join потоку


>Блокирует вызывающий поток


И как это поможет?
378 2430743
Пиздос, только заметил, что перекат был. В итоге писал в прошлый тред...
379 2430747
>>30733
Поставил Join(100) и вроде теперь не виснет в диспетчере задач, но я так и непонял что это. Уже поша какая-то магия.
image.png72 Кб, 587x646
380 2430749
Всем привет. У меня имеется интерфейс, который имеет в себе protected метод Move(). Я этот метод реализую в классе Car, после я наследую класс Car. Как мне вызвать protected метод IMove.Move() в классе наследнике? Можно ли вообще так делать? Пожалуйста, объясните.
image.png21 Кб, 442x255
381 2430751
И ещё один вопрос, почему я могу реализовать метод, который в интерфейсе protected через модификатор public?
382 2430758
>>30747
какая магия?
ты запустил в потоке свой WaitForConnection и он повис
ну делаешь ты Join к этому потоку из основного потока, Join блокирует и основной поток но выходит по таймауту и основной поток оживает, а WaitForConnection так и остается жить в своем мире

никакой магии. смысла только нет
383 2430763
>>30758

>а WaitForConnection так и остается жить в своем мире


В смысле поток не убивается?

Статус потока AbortRequested, клиент сообщает, что канал связи нарушен.
384 2430767
>>30713

>И вот это вот все надо знать джуну


Нет, всё что тебе нужно знать: dynamic для совместимости, unsafe, bitwise для оптимизации. Но знания которые я привел выше удивят лида с которым ты будешь проходить собес, что какой-то гой без опыта знает такие детали.
385 2430770
>>30749

>Можно ли так делать


Можно. Только чтобы вызвать этот метод тебе нужно будет сделать следующее:
IMove movable = new Car()
movable.Move()

Если хочешь иначе - пиши public void Move(), или оставь две реализации.
386 2430772
>>30763
Join это метод синхронизации. Он ничего не делает с потоком к которому Join. Ну разве что сообщает о результате "закончился ли поток или таймаут вышел"
387 2430783
>>30749
Ебать ты накодил.
Во первых, интерфейсы созданы для того, чтобы... определять интерфейс классов, то есть то, как с ними взаимодействуют. Поля и методы интерфейса и должны быть паблик. Если ты хочешь сделать протектед метод, то тебе скорее нужен абстрактный класс с абстрактным методом.

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

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

В четвёртых. ебать, что у тебя с проперти CarName происходит.
388 2430785
>>30770
да, так и думал, но до конца надеялся, что обойдётся без экземпляра класса. Странна штука, вроде в интерфейсе метод protected, а в классе он уже private....
389 2430789
>>30783
я эту залупу чисто для примера высрал. Насчёт private...если я явно реализую интерфейс, то по дефолту, в классе, ставится модификатор private и его нельзя изменить...
image.png17 Кб, 576x194
390 2430791
>>30783
отклеилось
391 2430794
>>30791
А бля у тя интерфейс протектед, да и поху. Нахуя тебе сейчас вообще протектед методы и интерфейсах? Ты их предназначение понимаешь?
392 2430795
>>30783
Про переопределение в курсе. Ещё раз, это чисто для примера. Я щас на интерфейсах сижу, вот и захотел понять, что тут за херь такая. Про абстрактный класс, да, буду иметь ввиду.
393 2430797
>>30794
Нет, не понимаю.
394 2430798
>>30797
Ну вот и не используй.
395 2430800
>>30798
а если хочеца?
397 2430805
>>30783

>В четвёртых. ебать, что у тебя с проперти CarName происходит.


А что тут не так?
398 2430806
>>30783

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


Описал, шо хуй поймешь.

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

Это я к чему, интерфейс дает предварительной пизды Пете и Коле и говорит, шо ваши классы не будут работать пока вы не сделаете <вот эти вот> функции из списка, которые должны быть обязательно на выходе.
399 2430810
>>30806
Это да, это понятно. Кстати, а часто используется реализация метода прямо в интерфейсе? Так сказать по дефолту
401 2430817
>>30810
В интерфейсе ничего не реализуется. Ты пишешь, что понял, но ничего не понял.

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

Это в абстрактных классах можно.
402 2430818
>>30817

>В интерфейсе ничего не реализуется


Да не трясись ты. Уже как 3 года можно
image.png37 Кб, 894x486
403 2430821
404 2430823
>>30813
пизда, у меня картинки с кодом не грузит...
405 2430826
>>30823
А воображение тебе на что?
зы: тоже не грузит
406 2430827
>>30823
У меня тоже. Там в именах файлах ссылочку оставляют, тыкай и перекинет на гитхаб пасиб дядьпыня
407 2430830
>>30827
о, пасиб
408 2430835
>>30818
>>30821
Мда ...
409 2430838
>>30835
Блять, да сказали же тебе - не трясись, хули ты устраиваешь? Да, шарп поддерживает, но кто так делает - дебилебаныбля
410 2430839
>>30835
Це плохо или что? Я просто слышал, что это неоднозначная фича гавно короче, и что её лучше не использовать. Иначе появляется возможность множественного наследования как в цпп
411 2430842
>>30839
Тащемта данный сабж завезли только лишь как подготовку к generic math ящитаю, ты можешь вот тут source.dot.net посмотреть кишочки интерфейсов INumber, IAddable и прочих, увидишь почему добавили static в интерфейсах. В реальности же данные фичи вообще нигде не используются как по мне. Даже привести пример не могу.
412 2430844
>>30795

> Я щас на интерфейсах сижу, вот и захотел понять, что тут за херь такая.


Интерфейс - это контракт, по которому класс, реализующий интерфейс обещает иметь нужные методы.
413 2430847
>>30842
Я хоть и зеленый, но когда щупал дженерики не понял одной штуки - как, блять, сделать мат операцию между двумя параметрами типа Т. Я сначала срр учил не доучил, там чисто в шаблонах можно с кайфом все складывать умножать и тд. А тут, насколько я понял, даже ещё окончательно не завезли данный сабж
414 2430848
>>30847

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


Да, но можно подрубить .net 7 preview и там можно будет это юзать
415 2430859
>>30847
Через рефлексию?
416 2430862
>>30859
Не, я до этого ещё не дожил, я только на интерфейсах
417 2430865
>>30859
Нихуя, ну-ка покажи как. Я чет даже представить не могу.
418 2430866
>>30862

>Не, я до этого ещё не дожил


Анончик, а ты бы хотел в реале взять свою какашечку и начать её разгребать палочками там всякими, лопатками чтобы посмотреть что внутри?
419 2430869
>>30866>>30866

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


Типичный двач нет, не хочу, вонять будет
420 2430871
Что из себя представляет IList? Судя по названию это интерфейс, но интерфейс же не может хранить поля, а IList может. Ещё и наблюдаемая коллекция может в него преобразовываться а в обычный лист нет.
421 2430872
>>30865
Что-то типа такого

if (T is int)
(return (int)a + (int)b)
422 2430873
>>30869

>нет, не хочу, вонять будет


А если бы не воняло?
423 2430874
>>30872
Это не рефлексия, это приведение типов. Гавно кароче наху.
424 2430875
>>30871
Интерфейс для реализации возможностей стандартных коллекций: добавить, удалить, обратиться по индексу.
image.png6 Кб, 247x90
425 2430876
>>30871
Статические поля может хранить.
426 2430877
>>30874
Дебил ебаный, это что по твоему, если не рефлексия?

>T is int


Мамку твою на спене твоего бати ебал кароч
427 2430879
>>30877

>рефлексия


Сучка крашеная, значение знаешь? Рефлексия никакого отношения к Generic types не имеет
428 2430880
>>30873
не, не хотел бы. Пускай этим занимаются спецы, там лаборатории всякие по анализу испражнений, двачеры и тд
429 2430881
>>30876
Только с восьмой версии. Но IList и до этого есть
изображение.png5 Кб, 752x64
430 2430882
431 2430883
>>30880
Ну оно и хорошо, не будешь голову заморачивать сильно рефлексией.
432 2430885
>>30883
что-то страшное?
image.png21 Кб, 759x247
433 2430886
>>30871

>Ещё и наблюдаемая коллекция может в него преобразовываться а в обычный лист нет.

434 2430887
>>30885
Нет, просто в 99% юзелес хуйня без которой можно обойтись, но с помощью рефлексии можно сделать почти всё, что душе угодно. Доступ к private членам, получение byte[] кода тела метода, например
435 2430891
>>30887
звучит так, что если я её буду использовать, то я обязательно где-то проебусь/что-то сломаю
436 2430892
Рефлексия нужна только для удобной работы с базами данных.
437 2430893
Кстати, а метанит нормальный вариант для изучения? Я прост по нему учусь, вроде всё норм.
438 2430896
>>30891

>то я обязательно где-то проебусь/что-то сломаю


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

>>30892
Вот этого двачую. Еще рефлексия ахуенна для создания библиотек, например создание модульной архитектуры, а так же генерация методов js которые вызывают ajax запрос к методу api контроллера.
439 2430897
>>30893
Сойдет для того чтобы ознакомиться с синтаксисом языка, но про глава про паттерны и архитектуры - полная хуйня. Тут лучше гугли и задавай вопросы на ruSO, мы тебе с пацанами ответим если на чем-то застрянешь
440 2430898
>>30881
>>30871
Бамп вопросу
441 2430900
>>30897
Спасибо, про паттерны я отдельную книженцию приготовил. Паттерны проектирования для C# и платформы .NET Core[2021] Джеффри
442 2430903
>>30898
Я же тебе блять ответил, сука.
>>30875
>>30886

Олсо можешь чекнуть сам интерфейс на source.dot.net. Я обычно IList передаю в метод когда мне нужно обращаться по индексу + модифицировать коллекцию добавлять/удалять
443 2430949
Чуваки, подскажите плиз, как триал версию ридера резетнуть?
444 2430951
>>30949
да крякни купи ты его
445 2430971
>>30949
plati ru продают jetbrains all product pack за 600 рублей примерно, подписка на 3 месяца
446 2430973
>>30971
Где наёб?
447 2430976
>>30973
Ну лично я наеба не вижу, лучше искать продавцов с большим количеством отзывов и продаж

https://plati.market/search/jetbrains

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

Других адекватных способов покупки лицензии для продуктов джетов не нашел, официально в РФ они больше не продают свои поделия
448 2430979
>>30976
Очень подозрительно, слишком дёшево чёт.
449 2430981
>>30979
мож это сами жб продают типа "все равно ведь не купят норм подписку, так продадим дешевле, лишь бы не кряки юзали"
451 2431011
>>30997
жуть
так то можно и на 3.jetbra.in забежать
но лицензия это лицензия...наверное
452 2431016
>>31011
Чем не пользовался - нигде через сервак не работало. А так раз в месяц на временную почту акк зарегал и радуешься жизни.
453 2431018
>>31016
не знаю о чем ты. не знаю про какой сервак вообще речь.
это не сервер активации.
454 2431021
>>31018
А что? hosts?
455 2431026
>>31021
это урл, просто https:// скушалось. а там ткни на любую рабочую ссылку
456 2431031
>>31026
Ну хз, халявные ключи у меня тоже быстро отваливались.
457 2431032
>>31031
ну так то эти ключи тоже в блэклисте, что не мешает им работать.
458 2431035
>>31032
Ну вот, каждый день с этими ключами ебаться ещё.
459 2431039
>>31035
раз в год вообще то и то можно просто не сразу накатывать мажорное обновление (и жить на текущей мажорке хоть вечность), а подождать чуток
но тебе да - лучше каждый месяц мыло регать
460 2431042
всем привет, кто-то сталкивался в проде с cmsками на основе .net.framework
461 2431044
>>31039
Потому что работает как часы уже несколько лет. А серваки и ключи вечно отваливаются.
462 2431045
че там с MAUI кста? уже откусило это чудесное творение львиную долю рынка?
463 2431049
>>31044
согласен
лучше регать каждый месяц мыло, чистить профили - романтика
чем "разобрался как устроено и один раз настроил" - что уныло, фу такое
464 2431060
>>31045
WPF/UWP не смогли убить винформы, а мауи так вообще никому не всрался.
Ага, чудесное творение, из которого намеренно выкинули поддержку линукса прошивки для роутеров.
465 2431144
>>23030 (OP)
бамп
466 2431209
Emgu CV может распознать движения на видео?
Мне нужно в 50 часах видео найти движение одного обьекта.
467 2431256
>>31045
Очередной недо-высер майков. Он его уже все кто могут поносят
468 2431273
>>31060

> WPF/UWP не смогли убить винформы


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

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

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

Щас набигут миллионы мух и начнут убеждать меня, как я не понимаю профита слабого связывания.
469 2431284
>>31273
Но ты ведь реально не понимаешь. Такой подход упрощает разработку и разделение обязанностей. Все современные фреймворки основаны на данном подходе.
470 2431286
>>31273

>Что характерно, эти тулкиты копируют подход веб-дизайна


натягивание совы на глобус.

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


этот самый "веб подход" стал распространенным в вебе после выхода WPF, так что он никак не мог копировать

ну а то что паттерн MVVM вообще к вебу отношения не имеет...ну в общем ты понял.
471 2431289
>>31284>>31286
Я пилю программы для себя сам, в соло, на галерах не гребу, в коллективе работать не умею и не желаю уметь. Поэтому мне данный подход нахуй не всрался. Однако, мне усиленно его пихает в литсо каждый второй туториал.
472 2431293
>>31289
а тебя кто то заставляет?

никто не запрещает писать в манере "спаггети-код мое все, я пилю программы для себя сам, в соло, на галерах не гребу, в коллективе работать не умею и не желаю уметь". Это можно ВЕЗДЕ и даже в WPF
473 2431303
>>31293

> Это можно ВЕЗДЕ и даже в WPF


Покажи. А я тебя обоссу по пунктам.
474 2431306
>>31293
Ебашить обработчики событий и внутри их хардкодить говно. Не использовать биндинги а напрямую привязывать к элементу указывая ему x:Name, ну всё как в винформах вобщем.

мимо
475 2431308
>>31303
что показать? что можно писать жопой?

или что можно без MVVM?
так это очевидно. в WPF можно писать как будто в винфорсмах пишешь. Биндинги там сверху добавлены - не хочешь, не юзай ни биндинги, ни шаблоны, нихера
476 2431309
477 2431316
>>31306

> Ебашить обработчики событий и внутри их хардкодить говно.


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

> что можно писать жопой?


Выше жопа уже показала. Даже в пост трясущимися лапками не попало.

> или что можно без MVVM?


Да, и чтобы мне не пришлось лесть в хамл-файл-разметки и какие-то х-нэйм там вручную прописывать. Хочу мышкой формошлёпить.
478 2431318
>>31316

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


Да не трясись ты бля. Если анонче по кайфу говнокодить ради своих проектов - его дело, всем похуй. Всё равно это говно никогда не выйдет в свет. Или у тебя травма детская на почве отказа из ООО Рога и Копыта из-за отсутствия знаний паттернов?
479 2431319
>>31318

> Или у тебя травма детская на почве отказа из ООО Рога и Копыта из-за отсутствия знаний паттернов?


Зыс.
Ладно, пойду поплачу в подушку. Всем пака!
480 2431320
>>31316

>Да, и чтобы мне не пришлось лесть в хамл-файл-разметки и какие-то х-нэйм там вручную прописывать. Хочу мышкой формошлёпить


Во-первых разметка и дизайнер в IDE это разные вещи.
А во-вторых (хоть это никакого отношения к в WPF не имеет) - формошлепство мышью было доступно в визуал студии с самого рождения WPF
481 2431328
Поясните мне, зачем нужен пул DbContext в EF?
Ну из того, что это пул, понятно что он позволяет не создавать новые инстансы контекста, а переиспользовать.
Вот только при помещении в пул контекст закрывает коннект, то есть без пула коннектов все равно жить не может.
483 2431413
>>24104
Все уже написано, просто натягивай на старый код новые карты и героев и на каждом шагу предлагай купить за донаты золотые монеты, на которые можно купить йоба мечь который всех порешает
484 2431484
Я нашёл в интернете нужный мне код, как из него сделать программу? Правильный ли код, мне нужно чтобы при запуске программы ей выдавался фокус, в данном случае это notepad, будет ли всё работать?
https://pastebin.com/sQ8asCCn
485 2431491
>>31484

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


Без задней мысли

>Правильный ли код


Хуй его знает, протести.
486 2431492
>>31491
Как?
487 2431539
488 2431793
>>31395
в итоге польза от пула только если неявная инициализация из всяких конфигов или в самом контексте и поэтому дорого типа каждый раз делать.
А если опции в контекст передаешь снаружи, то инициализация контекста куда дешевле и польза пула не видна (о чем я и спросил)
489 2431845
>>31793
Я устал после работы, отвечу потом (хз когда), можешь вопрос на ruSO задать.
490 2431859
>>31845
На со куча вопросов на эту тему, мол зачем нужен пул
Оттуда же и узнал что контекст при возвращении в пул делает ресет который заодно и коннект закрывает. То есть нужен еще пул коннектов.
А если пул коннектов все равно нужен, то целесообразность пула контекстов перестает быть очевидной
491 2431954
>>31859
А в чем твой вопрос-то заключается нихуя не пойму
492 2431990
>>31954
В чем профит использования пула контекстов, если коннект он все равно не сохраняет, а инициализация контекста может быть вынесена из контекста, чтобы не делалась каждый раз в самом контексте - тем самым сделав создание контекста дешевым

собственно services.AddDbContext<> это и делает позволяя задать конфиг который будет передаваться готовый в конструктор этих контекстов лишая смысла постоянно выполнять OnConfiguring
493 2432075
>>31990

>а инициализация контекста может быть вынесена из контекста


Что?
изображение.png16 Кб, 533x114
494 2432077
Помогите понять что здесь происходит. Что такое add, remove?
495 2432088
>>32077
Гугли чем отличается событие от делегата. А по поводу CommandManager.RequerySuggested - https://ask-dev.ru/info/174019/what-is-the-actual-task-of-canexecutechanged-and-commandmanagerrequerysuggested
496 2432091
>>32075
OnConfiguring можно не выполнять при каждом сосздании DbContext, а может быть выполнено единожды
497 2432094
>>32077
добавление и удаление делегата подписчика
аналогично как и в свойствах get и set
498 2432103
>>32094

>аналогично как и в свойствах get и set


Ну не совсем аналогично, скорее синтаксис одинаковый. А так да, просто добавляет/удаляет элементы в "коллекцию" вызовов

https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEUCuA7AHwAEAmARgFgAoIgZgAJT6Bhe6gb2vu/oAcoAlgDcAhhhiMySejCEw8GSSXoBBMBgDcXHqWXbunKj2Or19ANQBeegAoAlPUsA+SQE4bZO1qMnuaxVa2Ds5uNiRe+ib+Ftb2ji5EZO60ET6+kcaiUPQCeEIQANZiAhB4ADICAM6K1v4AdADiMBgAknkQYMWlFdX23r7cGTwAZtAwImAAFjZZOeIAtjl4S/lFGCXlVRh2Q76J7gILqQNsaVHqdW2rMH2RAL7Ud0A
499 2432111
>>32091
Всё бля за вас гуглить... https://stackoverflow.com/a/48444206/17025310
500 2432116
По крестам есть хорошие книги, по шарпу нет. Почему так?
501 2432117
>>32116
Одноклассники тебе твои сказали?
502 2432121
>>32117
Я провел сравнительный анализ взяв за референс книги из шапок тредов посвященных этим языкам.
503 2432123
>>32121
А ты читал книги из шапки?
504 2432126
>>32111
читал
именно там написано в коментах с 14 лайками что коннект закрывается при возвращении в пул

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

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

Я вот вижу выполнение OnConfiguring при каждом создании экземпляра DbContext (дока так пишет). Но этот OnConfiguring можно выполнить единожды на все экземпляры, так что незачет.
При создании контекста инициализируются новосозданные разные там словарики, списки, но разве это такое тяжелое что ему пул нужен?
505 2432158
>>32126
Самое тяжкое в объяснении это то, что вы бля ищете скрытый смысл там, где его нет.
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

Читай две статьи следующим образом: прочитал абзац - пошел полчаса думать над ним, как понял - приступаешь к следующему.
506 2432170
>>32158
спасибо анон, что не поленился спросить за меня на SO
хотя по факту все уперлось в RTFM )
507 2432264
>>23030 (OP)
Актуальна ли на данный момент книга CLR VIA C# ? Почитываю Албахари , он достаточно глубоко описывает синтаксис на современном стандарте , или Рихтер неизменная классика ?
508 2432298
>>32170
Ну вот и отлично
509 2432344
Посоветуйте статей о mvvm на русском. Прочел троелсена и понял дай бог половину. Мозги закипают от всех этих команд, биндингов, соурсов.
511 2432409
Здравствуйте. Хочу через GETзапрос, чтобы получить XML с курсом валют с сайта ЦБ РФ. Есть два кода стула. В одном из вариантов у меня заместо русских слов высвечивается "??????", так же VS пишет, что вся эта залупа устаревшая. И есть второй код, который не возвращает контент со страницы, то есть Null. Кодировка на сайте windows-1251, судя по GET запросу. Посоветуйте, что-нибудь почитать по запросам, пожалуйста.
Сам сайт: www.cbr.ru/scripts/XML_daily.asp
512 2432540
Как Sbyte конвертировать в Byte, а потом обратно в Sbyte?
513 2432551
>>32540
Вот так:
514 2432558
>>32409

>Кодировка на сайте windows-1251


Кто тебе сказал? Алсо ты передать кодировку можешь следующим образом:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) //регаешь провайдер который содержит дохуя кодировок
var encoding = Encoding.GetEncoding(1251); //"windows-1251"
и этот encoding можно в Stream передавать. Возможн будет работать. Ну или попробуй UTF8 передать, что вероятно как раз будет работать.
515 2432681
>>32396

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


На этой ноте Шмачилин пошёл нахуй.
516 2432694
>>32551
Шутник.
517 2432724
>>32681
Да не трясись ты.
518 2432734
Обновил студию, теперь тычут в меня maui. Как оно вообще, годнота?
519 2432739
>>32734
Потребление памяти моё почтение, настоящее унижение нищих бомжей без хотя бы 16 гигов оперативки.
520 2432764
Зачем нужны абстрактные классы когда есть интерфейсы?
521 2432832
>>32764
Когда тебе нужно, чтобы классы-наследники могли наследовать поведение родительского класса и переопределять поведение, где нужно. Самый явный пример - иерархия UI-компонентов в WPF. Если делать ее чисто на интерфейсах, то придется либо поддерживать гору копипасты, либо городить переусложненную архитектуру.
522 2432844
Есть сторонняя функция с кучей перегрузок, типа
BitConverter.GetBytes(int)
BitConverter.GetBytes(double)
BitConverter.GetBytes(boolean)
и так далее

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

Что еще есть?
523 2432852
>>32844
Можно. Подключаешь .NET Preview хуй знает какую и пишешь следующее:

public static SmthGovno GetBytes(INumber number)
{

}
524 2432853
>>32764
После того, как в интерфесы можно запихивать код, я даже не знаю зачем.
525 2432870
>>32852
Так?
public static SmthGovno GetBytes(INumber number)
{
BitConverter.GetBytes(number)
}
526 2433184
>>32724
Давай трястись вместе?
527 2433198
>>32870
Нельзя. Посмотри в исходниках шарпа почему source.dot.net
528 2433203
>>32558
this

>Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)


Если кому надо, вот решение ещё exception для наглядности:
529 2433206
>>33203
Ещё сайт прикольный откопал, там всякие микро гайды на C#
zetcode.com/all/#csharp
530 2433207
>>33203
Ещё сайт прикольный откопал, там всякие микро гайды на C#
zetcode.com/all/#csharp
531 2433208
Пздц...Моча...Написала же, что отправка отменена...
532 2433210
>>33203
Вечно забываю про этот идиотизм пока багреквест не прилетит
533 2433224
>>33203
Простите за глупый вопрос, а что это за консоль отладки? У меня выводит через окно интерпретации.
image.png37 Кб, 1134x598
534 2433230
>>33224
Обычная дебаг консоль. Окно интерпретации - это что-то типо питоновской херни, где можно числа складвать там и тд
535 2433246
>>33230
Я ее всегда использовал как окно вывода данных. Как еще во всяких WPF выводить данные?

А где находится консоль отладки?
536 2433265
>>33246
Странно, она вообще по дефолту для консольных приложений стоит, типо нажимаешь на Debug(или F5) и она автоматом вызывается, так что хз.
537 2433270
538 2433277
>>33265
А, ну консоль выводится, но обычная.
У тебя наверно стиль виндовс синюшный, выглядит как часть интерфейса студии.
539 2435449
>>24370

>Ты че ебанутый? Хранить несколько гигов говна в памяти?


Там по коду только такой https://github.com/username1565/KeyValue/blob/SQLite3Storage/KeyValue.cs#L72
огрызок в памяти хранится.
Остальное - на диске.

>>24600

>А редис где гранит?


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

>>24628

>Сука ты меня уже доебал


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

>>24370

>Юзай бля Redis и не еби мозги


>>24652

>Просто используй редис, чел. Это топовое решение.


>>24661

>золотой молоток (с)


Тогда, надо поднимать redis-сервер, а значит надо инклюдить его код, а он на Си.

>>25507

>Юзай Ignite чел!


Ну хуй знает, код на Java, и ещё и сервер там...

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

Ещё варианты?
539 2435449
>>24370

>Ты че ебанутый? Хранить несколько гигов говна в памяти?


Там по коду только такой https://github.com/username1565/KeyValue/blob/SQLite3Storage/KeyValue.cs#L72
огрызок в памяти хранится.
Остальное - на диске.

>>24600

>А редис где гранит?


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

>>24628

>Сука ты меня уже доебал


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

>>24370

>Юзай бля Redis и не еби мозги


>>24652

>Просто используй редис, чел. Это топовое решение.


>>24661

>золотой молоток (с)


Тогда, надо поднимать redis-сервер, а значит надо инклюдить его код, а он на Си.

>>25507

>Юзай Ignite чел!


Ну хуй знает, код на Java, и ещё и сервер там...

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

Ещё варианты?
540 2435453
>>35449
только тред давно переехал, так что тут никого
Повлияет ли уход Microsoft на C#.NET? 541 2439122
Не смог нагуглить, обращаюсь сюда. Начал изучать C#/.NET пару недель назад, сегодня увидел новость о том, что "Microsoft постепенно сокращает свой бизнес в России до тех пор, пока там почти ничего не останется" и стало как-то тревожно.
Означает ли это, что в скором времени .NET платформу использовать в России будет невозможно/никто не будет, и, соответственно, джуну найти работу с этим стэком будет нереально?
Если проще сформулировать, то повлияет ли полный уход Microsoft на C#/.NET разработчиков в России?
Как я понимаю, C#/.NET сейчас open-source и ограничения Microsoft могут повлиять разве что на недоступность Visual Studio, но хотелось бы почитать мнение шарящих людей.
542 2440556
>>28138

>string str1 = "Hello";


>string str2 = "Hello";


>object.ReferenceEquals(str1, str2) //false


Тут true будет интендация жи.
Тред утонул или удален.
Это копия, сохраненная 31 октября 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски