Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 1042 171 197
C# вот-вот 8 дотнета тред #53 /csharp/ Аноним # OP 14/11/23 Втр 00:12:51 2920885 1
image.png 534Кб, 750x422
750x422
image.png 2307Кб, 2400x1256
2400x1256
image.png 105Кб, 250x250
250x250
Предновогодний тред лучшего языка на планете.

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

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

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

4. С# для игор
https://dotnet.microsoft.com/en-us/apps/games/engines

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

Шапка: https://pastebin.com/HT7Hi6FD
Предыдущий: >>2910820 (OP) (OP)

ВНИМАНИЕ, в тред повадился срать джавадебил. Шарпочане, игнорируйте, а лучше репортите. Главное - не кормите.
Аноним 14/11/23 Втр 00:24:01 2920899 2
В чем прек интерцепторов, которые добавят? Какие кейсы?
Аноним 14/11/23 Втр 00:25:35 2920900 3
>в тред повадился срать джавадебил.
Мне кажется, что у админов это такая стратегия, чтобы поддержать тред на плаву. Не в первом разделе наблюдаю такой эффект, когда тред начинает затихать, и в него врывается свой местный шиз и начинает байтить на споры. Схема везде идентичная.
Аноним 14/11/23 Втр 00:29:07 2920902 4
>>2920899
Может для доступа к методам, к котоырм просто так не добраться. С другой стороны зачем все обмазали интернал методами, чтобы потом городить интерцепторы?
Аноним 14/11/23 Втр 00:29:14 2920903 5
Репортите пожалуйста этого гандона как только он высовывает рыло. Спасибо.
Аноним 14/11/23 Втр 00:31:35 2920904 6
>>2920903
Ну так ты не отвечай. А если отвечает кто-то другой, значит ему нравится.
Аноним 14/11/23 Втр 00:43:54 2920911 7
2023-11-1400-43[...].png 45Кб, 698x878
698x878
>>2920899
не для кожаных мешков
Аноним 14/11/23 Втр 00:43:54 2920912 8
Аноним 14/11/23 Втр 00:49:36 2920915 9
Screenshot2023-[...].jpg 388Кб, 1080x1705
1080x1705
>>2920900
Я айчаном пользуюсь, а в нем потёртые сообщения остаются. И судя по нему, модер таки потер испражнения, которыми жавадебил новый тредик испачкать пытался.
Давайте скажем спасибо дяде-модеру
Аноним 14/11/23 Втр 00:55:39 2920916 10
>>2920885 (OP)
>вот-вот 8 дотнета тред
Все ближе к почившему бейсику. Аж на душе тепло.
Скоро мы все будем путаться в том, что поленились создать ручками.

Но вот от точки запятой я бы без иронии отказался. Жду C# 13.
Аноним 14/11/23 Втр 01:04:32 2920919 11
https://habr.com/ru/articles/773444/
Что-то, как по мне, не в ту сторону они идут. Мне возможность обрезать ASP .NET Core приложения не сильно, честно говоря, упёрлась. Я ещё не сталкивался с тем, чтобы размер получающихся приложений был проблемой, чтобы так запариваться.
Аноним 14/11/23 Втр 11:54:48 2921141 12
>>2920919
Это нужно дядям в майкрософте из Azure, чел. Го уж больно сильно дышит в спину шарпу (и джаве).
Аноним 14/11/23 Втр 11:59:59 2921151 13
>>2921141
>Го уж больно сильно дышит в спину шарпу (и джаве).
кто сказал? С каких пор на го стало нормально писать что то не мелкое?
Аноним 14/11/23 Втр 12:30:28 2921230 14
У ObservableCollection в событии CollectionChanged, свойство NewItems имеет тип IList.

Собсно вопрос: а какого хрена, если я не могу в ObservableCollection изменить больше одного итема? Там даже нет метода AddRange, или EditRange. В чем смысл?
Аноним 14/11/23 Втр 12:43:30 2921253 15
Аноним 14/11/23 Втр 12:45:58 2921260 16
>>2921230
Вернее там обсуждение и даже пуллреквест и он даже типа мержед уже несколько лет
Но хз где все это теряется по пути к выпуску фреймворка
Аноним 14/11/23 Втр 14:44:34 2921526 17
>>2921253
>>2921260
Ясно, теперь понятно почему мой кастомная ObservableCollection не поддерживала AddRange, даже если я сам шатал событие CollectionChanged — xaml привязки просто не реагировали на это.
Аноним 14/11/23 Втр 15:36:31 2921624 18
>>2920885 (OP)
Прошу прощения, что прерываю ваши срачи. Но мне нужен совет знающих людей. Я слышал от вас, что все самые крутые программисты пишут на шарпах. Ну вот подскажите пожалуйста.
Есть предприятие. В нём десятки разных рассылок. Большинство из них отбирают получателей всяким хитроумным образом по неким данным о случившихся событиях. Всё это захардкожено в разных местах. Периодически захардкоживается сам получатель или даже только его мейл или номер телефона, куда слать смс.
В итоге есть куча получателей, которые уже давно уволились и куча потенциальных получателей, которые даже не знают, какие рассылки специально для их должности уже сделаны, и служба поддержки, которая затрудняется всё это перенастраивать. Плюс компания на одних только смсках теряет кучу бабла, тогда как у всех сотрудников есть емейлы, есть приложения от нашей же компании, но мы всё равно шлём смс "для надёжности".
А как это у вас сделано и организовано?
Аноним 14/11/23 Втр 17:16:46 2921869 19
>>2921624
Ты че, собрался все это переделывать с нуля или обуздать?

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

А вообще на ютубе полно туторов по созданию каталогов условных магазинов товаров, где у товаров есть различные категории. Суть одна и та же. Так же ознакомься с паттернами проектирования.
Аноним 14/11/23 Втр 18:14:27 2921956 20
>>2921624
Ваша компания называется "6-Б класс"? Выглядит так, как будто создатель это системы делал все по наитию, зная только синтаксис шарпа.
Аноним 14/11/23 Втр 19:16:57 2922052 21
.png 64Кб, 718x739
718x739
Ну всё, релизнулось, можно качать.
Аноним 14/11/23 Втр 19:31:59 2922064 22
Аноним 14/11/23 Втр 19:40:34 2922067 23
Аноним 14/11/23 Втр 20:06:44 2922085 24
>>2922052
без поддержки студии (да решарпера) бесполезная шняга
так что еще ждать и ждать
Аноним 14/11/23 Втр 20:19:04 2922094 25
>>2922085
Студия уже, додик, а чо там у жыдбрейнсов ниебет
Аноним 14/11/23 Втр 20:23:33 2922096 26
>>2922094
лол. посмотрите на этого поборника голой студии
прямо спартанец.
Аноним 14/11/23 Втр 20:41:10 2922107 27
Я вот ещё только разбираюсь в шарпах поэтому прошу помощи. Вот у меня есть только 1 моделька и небольшой набор CRUD операций к ней. Стоит ли вообще добавлять в проект Mapper или на меня как на дурачка посмотрят?
Аноним 14/11/23 Втр 20:52:10 2922110 28
>>2922107
вопрос использования мапперов это вопрос религии.
Аноним 14/11/23 Втр 20:55:47 2922112 29
>>2922110
Так есть ли шанс что эти старания хоть кто то оценит? Или сразу в касту пониже за подобные приколы определят
Аноним 14/11/23 Втр 21:01:14 2922116 30
>>2922112
достоинства для одного являются недостатками для другого.
лично я противник мапперов за их неявность, то есть предпочитаю маппить явно

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

вот за это на костре сожгут
Аноним 14/11/23 Втр 21:44:35 2922173 31
2023-11-1421-23[...].png 23Кб, 794x712
794x712
2023-11-1421-39[...].png 46Кб, 1353x819
1353x819
Аноны, подскажите че делать.

Есть условный базовый класс-контрол (пикрил 1), у которого есть слайдер и ползунок этого слайдера (UI-Thumb). На входе есть свойство OffsetValue. Если это свойство изменить, то вызовется событие, которое изменит положение ползунка. А если тянуть ползунок, то изменится значение OffsetValue.

А теперь я наследую этот класс (пикрил 2), который на вход принимает GradientStopValue состоящее из двух параметров: Color и Offset. При изменении свойства, Offset идет на OffsetValue базового класса, а Color идет на второй контрол UI-Color для отображения цвета.

Собсно затык в том, что делать, если будет изменен ползунок слайдера UI-Thumb. Как мне изменить свойство Offset значения GradientStopValue?

У меня получается зацикленность. Если я буду отслеживать изменение свойства OffsetValue, а потом измению GradietnStopValue.Offset, то это вызовет событие OnGradietnStopValuePropertyChanged, которое изменит OffsetValue которое ... ну вы поняли.
Аноним 14/11/23 Втр 21:53:12 2922193 32
>>2922173
Одно из решений проблемы — это создавать флаг подавления в хенделере события OnGradientStopValuePropertyChanged, но оно мне кажется каким-то кондовым и грязным. Может есть какой-то иной подход? Конструкция этих двух классов может меняться как угодно, но должно быть два класса.

Интересует решение зацикленности, когда свойство может меняться с двух сторон.
Аноним 14/11/23 Втр 23:46:23 2922321 33
>>2921869
В планах и обуздывать, и частично переделывать.
Про какие именно паттерны идёт речь? Их много.
Категории - понятно. Кто будет эти категории проставлять? Как? По каким правилам? Как заставить работников включить уведомления для нужных рассылок, чтобы они потом не жаловались, что они ничего не знали и ни в чём не виноваты? Они же привыкли к смскам, а работников тысяч
и. Как назначить используя класс работника рассылку "дежурному заместителю старшего монтёра вышестоящего подразделения"?
>>2921956
У меня такое же впечатление, если честно. Делали разные люди, в том числе и знакомые с паттернами. А получилось всё равно дико сложно, запутанно, дорого, неуниверсально и неудобно.
Потому я пришёл спросить, как это сделали умные люди.
Аноним 14/11/23 Втр 23:49:18 2922323 34
2023-11-1423-42[...].png 73Кб, 1476x886
1476x886
>>2922173
Короче такой вариант.
Добавил флаг IsThimbsDragging в базовом классе, который активируется при начале перетягивания ползунка и деактивируется при завершении.

Дальше класс-наследник подписывается на событие перетягивания ползунка ThumbChangedEvent.

Хендлер OnGradientStopValuePropertyChanged проверяет флаг IsThimbsDragging и не делает ничего, если флаг == true.

Но все выглядит как какая-то переусложненная залупа.
Аноним 15/11/23 Срд 01:10:57 2922351 35
>>2922321
>Про какие именно паттерны идёт речь? Их много.
Я не могу подсказать точно. На мой взгляд тут громадный объем работы, если делать с нуля.
По идее у тебя определенно должны быть сервисы, чтобы если что, то можно было бы что-то еще добавить без боли, или чтобы в будущем замена одного не мешала другому. От этого и копай.

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

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

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

Я месяц потратил чисто на АНАЛИЗ своего приложения. Собирал данные и структурировал всё, смотрел как сделано у других. Мне никто в общем-то не подсказывал ничего глобального ИТТ. Тут один анон подсказывал какие-то локальные вещи, был достаточно компетентный, но он по ходу съебался. Он мне рассказал про MVVM паттерн, потому что до этого я считай вручную забивал данные в текстбоксы и была целая каша, когда одни и те же данные должны были отображаться в разных окнах, к примеру. Потом мне понадобилось логирование, а в туторах оно разъяснялось через Dependency Injection — так я познакомился с сервисами. А с этими вещами все достаточно легко масштабируется.
Аноним 15/11/23 Срд 12:34:27 2922729 36
>>2922112
>Так есть ли шанс что эти старания хоть кто то оценит?
Ты неправильно ставишь вопрос. Это не должно быть "стараниями". Ты должен достаточно хорошо разбираться в технологии так, чтобы вопрос "прикручивать или не прикручивать" был из области вкусовщины, а не того сколько ты времени затратишь на это дело.
Аноним 15/11/23 Срд 15:33:44 2922990 37
читаю что нового в шарпе 12
все мутнее и мутнее

новый синтаксис массивов....всего то 20 лет прошло.

ref readonly - че сразу его не сделали

[System.Runtime.CompilerServices.InlineArray(10)]
public struct Buffer
а чем этот буфер отличается от stackalloc?

параметры для лямбд по умолчанию....кому то они были нужны?

примари конструкторы - тут же вам не котлин блин. Хотя и там они тоже спорное решение
(хотя как решение "а давайте принудим людей делать легковесные конструкторы, а логику не пихать в конструкторы" - норм, но в котлине поэтому есть init, а в шарпе что?)
Аноним 15/11/23 Срд 16:38:54 2923113 38
>>2922990
В котлине местами ощущается, что делали неопытные люди. Ну типа этот инит выглядит как быстро фикс кривизны примари конструктора, когда у них есть обычные конструкторы.
Аноним 15/11/23 Срд 16:42:18 2923121 39
>>2923113
Или же они позже добавили обычные конструкторы, но не выкинули инит. Хз, как можно было проигнорить момент, что бывает больше чем один конструктор, это ппц.

Помню они еще убеждали, что приватные сеттеры нам не нужны.
Аноним 15/11/23 Срд 16:45:12 2923126 40
>>2923113
это не фикс кривизны, а разделение присвоения данных и логики
ну а вторичные конструкторы вынужденная мера, ведь иногда нужно больше 1го конструктора


зато в WPF сделали наконец диалог выбора папки. Не ждали? а они взяли и сделали, чтобы шарписты страдали.
Аноним 15/11/23 Срд 16:51:09 2923138 41
>>2923126
>это не фикс кривизны, а разделение присвоения данных и логики
Там можно без инит присвоить полям, инит родили как раз чтобы логику впихнуть от первичного.
Просто если у тебя больше чем присвоить данные поля - вхерачь уже конструктор, какой нахер еще инит.

В общем, сначала идея, потом костыль. lateinit в туже степь
Аноним 15/11/23 Срд 16:58:53 2923166 42
>>2923138
> у тебя больше чем присвоить данные поля
ну котлин вообще пошел по пути "меньше символов"

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

так что латеинит не хватает в шарпе. А ! как раз костыль
Аноним 15/11/23 Срд 17:40:12 2923266 43
>>2923166
Нефига ты анализаторы одухотворяешь. Может там сделано как раз наоборот? Разработчик компилятора даже говорил, что у них нет внутренней доки, ты представляешь какой там бардак?

Просто проблема шарпа в том что на него натягивают, а котлин такой уже родился, но даже тут можно было не использовать 100500 ключевых слов, а сделать что-то типа:
val vr: Type = ?
Или вообще по дефолту следить за всеми не нулл полями без инициализации (самим помечать как lateinit)
Аноним 15/11/23 Срд 17:49:30 2923285 44
>>2923266
>Нефига ты анализаторы одухотворяешь
потому что это ревью кода на стадии разработки этого кода. Иногда могут ошибаться, но обычно точно указывают либо на ошибку, либо на неоднозначность.

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

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

И да - в том же шарпе наделали туеву хучу аттрибутов на эту тему типа MayBeNullWhen (и чет их не парит использование 100500 слов), а вот латеинит нет.
Аноним 15/11/23 Срд 18:03:08 2923318 45
>>2923285
Кто вообще тебе сказал что я разделял компилятор на фронтенд и бэкенд. Я сказал компилятор в целом и да, бардак.
Не удивляюсь почему котлин так медленно развивается.

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

Сейчас бы вообще сидеть и сравнивать прокси язык с полноценной платформой. Хочешь, иди сделай пару сахарков и изобрети какой-нибудь F#
Аноним 15/11/23 Срд 18:11:56 2923331 46
>>2923285
>и чет их не парит использование 100500 слов
Школота даже не понимает разницу между атрибутами и вреде ключевых слов, особенно уже живущего языка.

Написал бы это предложение раньше, я бы отвечать даже не стал.
Аноним 15/11/23 Срд 18:30:15 2923352 47
image.png 341Кб, 547x410
547x410
Сука проклинаю тот день когда выбрал ебучий шарп.

Платят копейки, везде ебучее легаси и конкуренция с индусами за миску супа.
Аноним 15/11/23 Срд 18:34:48 2923358 48
>>2923352
Индусы пишут на всем, что скажет западный барин. Просто последние годы связка .NET Fullstack + Azure стала востребованной у аутсорсеров и в Индии пооткрывали сертифицированных центров от майков.
Аноним 15/11/23 Срд 18:39:49 2923360 49
>>2923358
>.NET Fullstack + Azure
Литерали ми блядь
Аноним 15/11/23 Срд 18:51:32 2923364 50
>>2923318
а я не знаю почему ты связываешь анализаторы и компилятор.
Компилятор это конечно базовый анализатор правил чтобы код компилировался
Но в общем неважно - мне без разницы кто ВМЕСТО МЕНЯ проверяет код на нулсафети, лишь бы делал это правильно и мне сообщал об этом.

И я бы не сказал что котлин развивается медленно. Даже по сравнению с шарпом он развивается сверхбыстро.

>и могли обойтись без lateinit
критикуешь предлагай. В андроиде в силу его особенностей вообще норма поздняя инициализация. И если не lateinit то что? (как в шарпе не предлагать - это еще хуже)
"Не использовать" не предлагать. Ты против - ну не используй, кто заставляет. А в андроид просто иначе никак нельзя.

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

>>2923331
>разницу между атрибутами и вреде ключевых слов, особенно уже живущего языка.
ну значит иди нах раз такой умник выискался
для справки - в шарпе предлагался АТТРИБУТ lateinit. Я вообще не ебу че ты завел речь про компиляторы, ключевые слова и прочее. Я говорил лишь про нуллсафети и способы с ней жить. Шарп высрал тонну разных аттрибутов на эту тему, но в итоге просто ставишь ! чем сможешь подобрать "как бля пояснить анализатору что тут не будет нулл потом и пусть заткнется"
Аноним 15/11/23 Срд 19:11:18 2923374 51
Шарпаны, привет из джавы
Попробовал я ваш дотнет и сказать, что я охуел - ничего не сказать. Написал меньше, чем на джаве, а прочитать это проще. Буквально по-английски читаю без доки и понимаю, что здесь будет происходить.
Вообщем покопаю поглубже, поизучаю. Говорят, что я от entity framework и linq должен охуеть и невыхуеть обратно. На что еще обратить внимание?
Аноним 15/11/23 Срд 19:59:55 2923413 52
>>2923374
На unsafe джавадебил, ты решил тактику сменить?
Аноним 15/11/23 Срд 20:05:37 2923419 53
Аноним 15/11/23 Срд 20:08:46 2923420 54
>>2923374
Шарп последние годы тяготеет к ФП. Не прям полностью, но заметно.
Из интересностей - генераторы кода потыкать.

А если так. MediatR, Foddy, Automapper, Dapper и в бой. EF - лично мне за годы работы с ним - больше боли принес.
Аноним 15/11/23 Срд 20:17:04 2923424 55
>>2923420
а мне медиатр и автомаппер
потому что явное для меня лучше неявного.
Аноним 15/11/23 Срд 21:18:04 2923507 56
Аноним 15/11/23 Срд 21:24:09 2923520 57
Медиатор - это типа event bus? Это же пиздец антипаттерн, неявные зависимости, в которых потом ни за что не разберёшься. Это уровня goto, который может по любым файлам прыгать.
Аноним 15/11/23 Срд 21:54:22 2923558 58
>>2923520
Медитр - это типа диспечера запросов. Просто немного по уебищному обзывают свои методы.

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

Ну а про то что может по любым файлам прыгать. Тебя контроллеры не смущают? Вот ты добавил новый контроллер - вот, теперь хуй пойми как, но ты после запросика по нужному роуту оказываешься в своем контроллере. Сылок на этот контроллер - 0 штук. Магия. Нахуй. Чет не смущает.
Аноним 15/11/23 Срд 22:07:10 2923567 59
>>2923558
>Магия. Нахуй.
А вот в....
Аноним 15/11/23 Срд 22:12:29 2923571 60
>>2923558
>вот, теперь хуй пойми как,
нет не хуй пойми как, а по вполне понятным заданным правилам
и да - это вынужденная мера поскольку мы ВЫНУЖДЕНЫ роутить по строковым правилам

С медиатром же не так. Он позволяет определить хендлер который "где-то" и вся система становится слабо связанной. И ты в рантайме даже не знаешь получил ли кто посылку или же из за каких то изменений теперь не получает. Да и вообще - где эти все. Конечно можно ходить по коду, но вся логика размазывается по вот таким хендлерам с неявной связью.
Это крайность, которая нравится не всем.
Аноним 15/11/23 Срд 22:23:52 2923581 61
>>2923571

Че за "где-то"?

+features
|--feature_a
|----controller
|----request
|----response
|----handler
|--feature_b
|----controller
|----request
|----response
|----handler
Аноним 15/11/23 Срд 22:28:25 2923584 62
+features
|--feature_a_controller
|--feature_a_request
|--feature_a_response
|--feature_a_handler
|--feature_b_controller
|--feature_b_request
|--feature_b_response
|--feature_b_handler
...
|--feature_y_controller
|--feature_y_request
|--feature_y_response
|--feature_y_handler
|--feature_z_controller
|--feature_z_request
|--feature_z_response
|--feature_z_handler
Аноним 15/11/23 Срд 22:40:17 2923590 63
>>2923584
У нас обычно фичи осмысленно как-то называются.
Типа: DeviceRead, DeviceControl, DeviceReload, DeviceFirmwareUpdate, etc если все в одной папке будет - будет неудобно.
Аноним 15/11/23 Срд 22:42:09 2923592 64
>>2923581
ну то есть ты пруфанул что у тебя логика размазана по всяким там хендлерам и вообще везде. Вместо явной зависимости которую вызываем (пусть и через интерфейс) мы посылаем "на деревню дедушке", а где этот дедушка - хз вообще то. А как этот дедушка дружит с транзами если мы что то делаем с ними - опять хз

Дедушки лежат по всему проекту и все общаются сообщениями.
мало отличий от классического евентбаса со всеми ему присущими недостатками.
Аноним 15/11/23 Срд 22:50:52 2923594 65
>>2923592
Потому что плюсов - больше чем недостатков, няша.
Ну серьезно.
Начинать можем от того, что мы ХОТИМ снизить связность.
Заканчивать, что в случае рефакторинга, у тебя не меняются те части кода, которые к непосредственному рефакторингу не относятся, и на ревью не прилетает 100500 измененных файлов, через которые ревьюер не будет прбираться и просто завернет такой ПР.
Аноним 15/11/23 Срд 23:06:56 2923606 66
>>2923594
>Потому что плюсов - больше чем недостатков, няша.
все это ОЧЕНЬ СУБЪЕКТИВНО
у тебя оно решает какие то проблемы, другие создает. Просто зло для тебя является допустимым, но так считают далеко не все.
Что для одного достоинство - недостаток для другого.
что рождает статьи подобные "Вероятно вам не нужен MediatR"

та же херня и с автомпперами. и с орм, и евентбасами и вообще всем на свете.
Аноним 15/11/23 Срд 23:24:40 2923619 67
Если вы ещё обожаете MediatR, значит вы просто не сталкивались с упоротыми его ценителями. Я вот сталкивался.

Пришёл на проект. Там 20+ микросервисов. Во всех используется медиатр, причём весьма специфичным образом. В каждый сервис из общей либы подключаются behaviour-ы, которые извлекают и проставляют в реквесты мета-инфу (UserLogin, CorrelationId и т.д.) и логгируют в кафку все действия в системе (требование безопасников такое было). Все реквесты, кстати, наследовали общий базовый класс из этой либы, чтобы были поля, куда эту мета-инфу пихать.

Но самая мякотка была в взаимодействии между сервисами. Для всех HTTP и GRPC клиентов кодогенерацией генерировались хэндлеры, которые хавали запросы из медитора и отправляли их в сооветсвующие методы клиента. То есть, чтобы сходить во соседний сервис, нужно было посылать сообщение в IMediator. Также и с кафкой. Все прочитанные из топика сообщения по одному отправлялись в медиатр. Ну и для записи в топик, конечно, тоже нужно было засылать сообщения в mediatr, где их перехватытвал специальный generic-handler и пересылал в kafka-топик. Ну и приправлено всё это было автомапером, конечно. Ведь при таком подходе кол-во используемых DTO-х возрастало раза в два.

Вся это было сделано для того, чтобы универсальным способом логировать все действия в системе для аудита от безопасников.
Аноним 15/11/23 Срд 23:30:24 2923623 68
учуся в быдлоунике, изучаем сишааарп, этот язык кому-то нужен ваще ? я хз
Аноним 15/11/23 Срд 23:30:58 2923624 69
Аноним 16/11/23 Чтв 01:24:18 2923668 70
>>2923594
Я сейчас могу по всему коду приложения гулять через ctrl, find usages и find implementation. У меня явный и логичный граф зависимостей, в коллстеке всегда явно просматриваются слои абстракции.
Мне кажется, что медиатор используют там, где изначально дизайн кода говно, явным образом прокидывать зависимости стыдно, dependency injection будет порождать циклы, вот и маскируют этот ад пересылкой сообщений.
Аноним 16/11/23 Чтв 01:29:03 2923669 71
>>2923668
нет
медиатор используют там, где хотят уменьшить связность
и в итоге впадают в другую крайность - слишком слабо связано, все через сообщения через медиатор.
Кто то считает, что "если код нормально разложить, то все там понятно и структурно, да и вообще можно вклиниться".
Другие же считают, что логика слишком размазана по проекту и никакая структуризация тут не поможет.
Аноним 16/11/23 Чтв 09:09:26 2923737 72
>>2923623
Нет, сейчас все пишут на MERN стеке и питончике броу... Скажи своим преподам что они скуфы!
Аноним 16/11/23 Чтв 13:27:37 2923977 73
>>2923623
открой hh и посмотрим, кому нужен
Бонусом получишь список того, что именно из него нужно
Аноним 16/11/23 Чтв 13:48:05 2924019 74
>>2923623
Жаба протухла, нужна новая джава, вот и учи язык будущего.
Аноним 16/11/23 Чтв 15:03:33 2924136 75
>>2923977
>открой hh и посмотрим, кому нужен
и получишь список того, где программисты не задерживаются
Почему? хороший вопрос.
Аноним 16/11/23 Чтв 15:20:23 2924149 76
>>2924136
Ага ага, все топовые вакансии только в секретном клубе чатике!
Аноним 16/11/23 Чтв 15:25:54 2924154 77
>>2924149
ваще то да. я именно так себе и нашел. сам не искал, это меня нашли и еще упрашивали. холят и лелеют, чуть какашки за мной не убирают.
Аноним 16/11/23 Чтв 15:46:06 2924183 78
>>2924136
Человек спросил, кому нужен сишарп, я ему ответил, где смотреть. Мне похуй, задерживаются там или нет, пусть хоть на один день нанимают. Если ищут сишарп разработчика - значит в компании используют или собираются использовать сишарп
Аноним 16/11/23 Чтв 16:34:06 2924267 79
>>2922351
>Он мне рассказал про MVVM паттерн, потому что до этого я считай вручную забивал данные в текстбоксы и была целая каша, когда одни и те же данные должны были отображаться в разных окнах, к примеру.
Ну, у нас эта задача решена на уровне ERP. Там контрол на форме привязывается к полю таблицы БД, и они сами общаются между собой через data source и его data object-ы. Правда, чем отличается контроллер, модель представления и вот этот вот data source я что-то до сих пор никак не пойму.
А вопрос о рассылках был скорее в сторону "как сделать нечто универсальное, подходящее для самых разных задач". Пожар - уведомить соответствующие категории получателей. Датчики дают показания, требующие внимания - уведомить какого-нибудь дежурного специалиста в таком-то подразделении. Кому-то завтра на смену выходить - уведомить его и его начальника, например. Ну и так далее.
Часто нужно уведомить какую-то категорию получателей, отобранную по должности в каком-то подразделении. Проблема в том, что структура предприятия, или, скорее, предприятий, очень запутанная. Структур как бы несколько параллельных. При этом многие ветви одной из структур похожи, но не идентичны. А в другой вообще чёрт ногу сломит. Это просто дерево подчинённых подразделений, да ещё и с неограниченной вложенностью. И всё это можно ещё условно разделить по категориям: склады, производственные подразделения, офисы... И список должностей это целый зоопарк, где каких-нибудь сварщиков может быть четыре вида, хотя все они делают одну и ту же работу. Есть особый справочник, в котором перечисляются ответственные по подразделениям и т.д.
И вот приходят к нам и говорят, например: У нас проблема, к нам каждый день приходит технадзор и штрафует нас, вручая нам акты. А мы должны своевременно устранить косяки, а для этого мы должны автоматически генерировать уведомления начальникам участка и их руководству. И так по каждому участку. Но определить крайнего зачастую не так-то просто. То должность ему не ту поставили, то в график не внесли, то ещё чего-нибудь. То он уволился и вместо него с такого-то числа назначен другой. При чём иногда должность одна, а работу человек выполняет другую.
И ещё одна проблема - мы не можем предсказать, что от нас захотят завтра. Вот такой опыт может быть у кого-то есть?
Аноним 16/11/23 Чтв 17:01:16 2924299 80
Спрашиваю не холивара ради. А зачем вообще C# нужен? Микросервисы - java/go, десктоп - qt/gkt, мобилки - java/kotlin. Какая область применения C#? Я даже представить не могу себе, что веб-сервис на C# будет на линуксе крутиться, безумие какое-то.
Аноним 16/11/23 Чтв 17:03:30 2924301 81
>>2924299
>Микросервисы - java/go
жава...микросервисы...ооокай
го язык на любителя.
>десктоп - qt/gkt
это вообще не языки программирования если че
> мобилки - java/kotlin

и вот тебе нужно знать целый зоопарк технологий вместо чего то одного.
Аноним 16/11/23 Чтв 17:04:30 2924303 82
>>2924301
>это вообще не языки программирования если че
И чего? Используется там в основном C++/C.
>жава...микросервисы...ооокай
Что не так? Спрашивал в другом треде, сказали на Java Spring пишут спокойно
Аноним 16/11/23 Чтв 17:06:55 2924307 83
>>2924303
>там в основном C++/C.
которые тоже внезапно нужно знать. и языки это так себе
и да - кутю можно использовать даже из шарпа, просто "а зачем"
>сказали на Java Spring пишут спокойно
у жавистов свое понятие минимализма. софт жрет 100000 гигов оперативы - ну нормально, докупи еще, память дешевая (с)
Аноним 16/11/23 Чтв 17:09:18 2924309 84
>>2924307
Хорошо. А по поводу того того, на каких серверах исполняется? На линуксе он хорошо себя чувствует? Слышал .net core якобы поддержку имеет.
Аноним 16/11/23 Чтв 17:15:24 2924313 85
>>2924309
я ж тебе не гугл на детские вопросы отвечать
отлично он чувствовал себя на линуксе уже несколько лет назад.
Аноним 16/11/23 Чтв 17:20:54 2924316 86
>>2924309
На линуксах уже нормально работает лет так 5. Сейчас MS вообще активно затачивает рантайм на работу в Linux-контейнерах. Есть даже офф. docker-образы https://hub.docker.com/_/microsoft-dotnet-runtime/ на базе различных дистрибутивов. Пользуемся имя для деплоя своих микросервисов в K8s. Зависимость есть. Брат жив.
Аноним 16/11/23 Чтв 17:23:49 2924318 87
>>2924316
ну у меня брат умер когда нужно было использовать netvips (биндинги для потоковой обработки имаджей) и на линуксах стабильно утекала память (а на винде нет)
Понятно что это проблемы линуксов и с сишными либами ниже, но все же это доставило много много проблем, которые не решились.
Аноним 16/11/23 Чтв 18:15:40 2924364 88
>>2924299
Помимо перманентной долбежки в бэкенд на всех языках, у шарпа есть просто неоспоримое преимущество - геймдев.

Ты знал, что игра раст написана не на расте, а на юнити? А то что геншин на юнити?

еще и вменяемый десктоп из всего зоопарка альтернатив, если не учитывать полпроцента десктоп-линуксоидов
Аноним 16/11/23 Чтв 18:24:40 2924377 89
16996660636320.png 40Кб, 1443x247
1443x247
Аноним 16/11/23 Чтв 18:29:20 2924385 90
image.png 29Кб, 783x509
783x509
>>2924299
С учетом того что шарп второй язык интернета, можно было ротешник не открывать.
Аноним 16/11/23 Чтв 18:31:31 2924393 91
Аноним 16/11/23 Чтв 18:37:02 2924412 92
Снимок экрана 2[...].png 190Кб, 885x769
885x769
Снимок экрана 2[...].png 183Кб, 889x779
889x779
Снимок экрана 2[...].png 194Кб, 910x788
910x788
Аноним 16/11/23 Чтв 18:38:45 2924419 93
16633360650392.png 56Кб, 826x738
826x738
>>2924393
Если смотреть по миллионикам, то там пхп уже сосули
Аноним 16/11/23 Чтв 18:41:32 2924428 94
>>2924412
Опять обиженный прибежал показывать как сокетные квази-веб-сервера всех побеждают.
Аноним 16/11/23 Чтв 18:42:15 2924429 95
>>2924428
По делу что нибудь скажешь?
Аноним 16/11/23 Чтв 18:44:51 2924433 96
image.png 241Кб, 1807x627
1807x627
>>2924412
>>2924428
А тем временем, асп.нет это топ 3 всех серверов.

Это еще не учитывая 8 дотнет, где они на 25% подтянули json и фортуну.
Аноним 16/11/23 Чтв 18:45:35 2924435 97
>>2924364
Они написаны на C# просто потому что M$ проплатили юнити. Там необязательно мог быть юнити. Более того, я часто видел как юнити ругают именно за это, за то, что там C#.
Аноним 16/11/23 Чтв 18:47:48 2924437 98
>>2924433
>наши великие 99,9%
>обоссаные 99,9% у джавы
Аноним 16/11/23 Чтв 18:51:07 2924449 99
>>2924433
Обосрался со скрина. Буквально погрешность
Аноним 16/11/23 Чтв 18:51:55 2924451 100
javacs.png 48Кб, 1201x225
1201x225
>>2924435
Можно плакать и рыдать, но юнити это шарп, кроме шарпа там костылено, даже годот прикрутил как основной из поддерживаемых - шарп.

Шарп это уже игровая индустрия. А джава это кобол.
Аноним 16/11/23 Чтв 18:55:13 2924458 101
16996660636320.png 40Кб, 1443x247
1443x247
>>2924437
Ну одно дело фулл вебфреймворк, другое сокетная перделка без поддержки фулл http, которые никто в проде не юзает.

Я уже кидал сравнение флагманов, срыг спринг победил джангу, чем не радость
Аноним 16/11/23 Чтв 18:58:56 2924468 102
>>2924458
> сокетная перделка без поддержки фулл http
И щас ты выложил пруфы.
Аноним 16/11/23 Чтв 19:07:39 2924480 103
>>2924468
История про рапидоид, который зависал при 404 ошибке, в цикле обработки запроса.
Два года эта залупа была в топе жабьих тестов.
Причем автор на ишью ответил спустя только 1-2 месяца, настолько это было демонстративным костылем сам ищи в гитхламе эту ишью, у меня кончилась моча вас поливать
Аноним 16/11/23 Чтв 19:10:16 2924483 104
Аноним 16/11/23 Чтв 19:13:37 2924485 105
>>2924480
Какой ещё рапидоид? Причём он тут?
Аноним 16/11/23 Чтв 19:16:13 2924491 106
>>2924485
>Два года эта залупа была в топе жабьих тестов.
Аноним 16/11/23 Чтв 19:17:09 2924493 107
Аноним 16/11/23 Чтв 19:18:25 2924496 108
Аноним 16/11/23 Чтв 19:19:15 2924497 109
Аноним 16/11/23 Чтв 19:20:09 2924498 110
Аноним 16/11/23 Чтв 19:22:07 2924499 111
Аноним 16/11/23 Чтв 19:22:45 2924500 112
>>2924497
Мокрый, но непоколебимый.
Аноним 16/11/23 Чтв 20:23:59 2924586 113
Опять жавистов обсыкаете? прекращайте. лучше обсуждайте дотнет 8
Аноним 16/11/23 Чтв 20:35:49 2924601 114
>>2924299
> Микросервисы - java/go
Просто нет.
Если микросервисы, то это либо питон, когда надо быстро наговнякать, либо раст, когда хотим перформанса, либо шарп, когда у нас штат шарпистов.
> десктоп - qt/gkt
Это кто что-то сложное на этом пишет-то, лол? Буквально весь сложный десктоп завязан на шарпе + какой-нибудь Devexpress я конечно преувеличиваю, некоторые штуки всякие немцы на Qt пишут и там сложное, но это пишут штатом из 200 С++ кодеров, нахуй, в то время как на шарпе сложный десктоп делает тетя Маша, которая умеет перетягивать из конструктора контроллы и настраивать в визуальном редакторе, как оно должно себя вести, именно потому - так больно переходить было на кор и потому - фреймворк классический до сих пор поддерживают и парралельно в него впиливают всякое. Потому что считай ВЕСЬ, мать его, десктоп на этом держится.

> мобилки - java/kotlin
Тут спорить не буду, потому что это действительно так. Замарин и его переименование - кал говна.

> Какая область применения C#?
Именно что любая. Мать его, я видел как на заводах GSM-модули управляются шарпом в устройствах, потому что все буквально есть на все случаи жизни С КАРОБКИ. Хуяк-хуяк и погнали, 2 недели - MVP выпустили.
Аноним 16/11/23 Чтв 20:41:18 2924608 115
>>2924586
Было бы что обсуждать... Хотя блейзер сервер научили автоматически отсылать клиентам компоненты завернутые в васм. Теперь хоть какой-то фронт появился. Толстый клиент, хуе-мое. Надо будет попробовать, как оно на вкус...
Аноним 16/11/23 Чтв 20:43:50 2924611 116
Кстати, там это, в привью студии рефреш UI вышел...
Аноним 16/11/23 Чтв 20:46:15 2924613 117
>>2924601
Гуй на C# будет работать только на винде.
Аноним 16/11/23 Чтв 20:52:18 2924620 118
>>2924613
Ну. Т.е.на абсолютном большинстве десктопов мира.
Аноним 16/11/23 Чтв 20:59:10 2924627 119
>>2924620
Плевать что там у "абсолютного большинства". Есть эталон для гуя и это Qt. Если пишешь программу не на Qt, то она просто не нужна. Особенно если эта программа будет платной и бесполезной.
Аноним 16/11/23 Чтв 21:05:38 2924631 120
>>2924613
Есть Авалония и Уно, долбаеб
Аноним 16/11/23 Чтв 21:07:25 2924633 121
>>2924627
Именно потому, те кому таки нужен таки кроссплатформенный гуй - пишут его на всяких флаттерах, реакт-нейтивах, електронах и прочем, но не на Qt.

Ну срсли. Ну чел. Qt - нормально, если ты попенсорс для линукса делаешь. Или ты сименс, нокла, но в остальных случаях - Qt - нахуй не упал, тем более в 2023
Аноним 16/11/23 Чтв 21:14:13 2924643 122
>>2924627
>Есть эталон для гуя и это Qt.
Есть эталон говноеда и это ты.
Аноним 16/11/23 Чтв 21:21:20 2924656 123
>>2924633
если ты питонист то кутя твой выбор ибо любое другое хуже.
но если ты шарпист, то ты уже не жавист, что великолепно
Аноним 16/11/23 Чтв 21:23:07 2924659 124
>>2924643
>пук
Правду про вас, шарпомушек, молвили "злые" языки, чуть что сразу рвонькаетесь и оскорбляете анона, нехуй с вами дел иметь, вечно догоняющими.
Аноним 16/11/23 Чтв 21:29:14 2924675 125
>>2924631
Это ты долбаеб, мать твою ебал. Авалония и Уно это дерьмище основанное на WPF/UWP, худших высерах M$.
Аноним 16/11/23 Чтв 21:29:32 2924676 126
>>2924659
Аррря, ты че они уже обогнали. Пока в джаве давным давно существуют нормальные прокси классы, шарпушкам барен разрешил использовать их и без интерфейса. Вот это да, ух как по жабе ударили! Победно. Так глядишь и гуй на линукс переедет, а то у них там брат живой, но без гуя.
Аноним 16/11/23 Чтв 21:36:29 2924688 127
2023-11-1621-18[...].png 4Кб, 340x181
340x181
>>2924267
>Ну, у нас эта задача решена на уровне ERP Там контрол на форме привязывается к полю таблицы БД, и они сами общаются между собой через data source и его data object-ы.
А говоришь данные захардкожены. А если у тебя данные о сотруднике находятся за пределами, то это плохая база данных.

Или речь идет о хардкодинге свойств условной модели? Данные могут быть как ключ\значение в словаре, а дальше через дата-темплейты подбирается вывод данных в нужный контрол или страницу. Вот как это сделано к примеру в окне Properties вижуал студии (пикрил). Там ведь данные выводятся автоматически в зависимости от DataTemplate. Для значений типа HorizontalAlignment свой контрол, для Thickness другой, для Brush третий.
Мне к примеру приходилось выводить словарь ресурсов, где может быть все что угодно, и я не создавал какую-то специальную модель для этого, где вбиты заранее заготовленные свойства.

Я не понимаю с чем именно у тебя проблемы.

>А вопрос о рассылках был скорее в сторону "как сделать нечто универсальное, подходящее для самых разных задач".
Каких? Программа должна принимать решения, когда на предприятии непонятно кто заступил на смену, а кто уволился? Даже если ты разошлешь сообщение потенциальным исполнителям, то зная Петровичей, они будут скидывать ответственность друг на друга.
Аноним 16/11/23 Чтв 21:41:35 2924696 128
>>2924676
пришел жавист и пукнул. обычное дело. я даже не буду просить его показать где в его говножаве прокси без интерфейса создается. так что отвечать мне не нужно

>>2924659
злые языки это говножависты. что приперлись в тред, в который их не звали
Аноним 16/11/23 Чтв 21:51:05 2924711 129
Аноним 16/11/23 Чтв 21:59:14 2924715 130
>>2924711
а цену этому не подскажешь? ах да - стирание типов. ну такая мелочь ага. Говна поели и радуются

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

и тут возникает вопрос - что нужнее. типы или прокси без интерфейса

подумай об этом на досуге, говноед.
Аноним 16/11/23 Чтв 22:20:51 2924734 131
>>2924715
>но поскольку типы не стираются то сложнее сделать как в жаве
Почему сложнее?

мимо питонист
Аноним 16/11/23 Чтв 22:24:14 2924736 132
>>2924715
>а цену этому не подскажешь? ах да - стирание типов. ну такая мелочь ага. Говна поели и радуются

Что-то тебя конкретно понесло. Причем тут стирание типов? Как будто мартышка что-то однажды услышала и начинает повторять где не попадя.
Аноним 16/11/23 Чтв 22:25:56 2924740 133
>>2924734
потому что типы не стерты. а значит IL точно знает что вызывает метод класса А.Foo() а не какой то Foo() непонятно чей. На уровне CLR такая информация есть. И динамически в рантайме ты ее не подменишь. Fody это уже не про рантайм.

>>2924736
ответил
Аноним 16/11/23 Чтв 22:30:02 2924747 134
>>2924740
>На уровне CLR такая информация есть. И динамически в рантайме ты ее не подменишь

Как это мешает написать аналог bytebuddy? Ну есть информация о типах и есть, дальше что?
Аноним 16/11/23 Чтв 22:35:41 2924756 135
>>2924747
если метод Foo(Bar b) принимает этот Bar, то если ты туда что то передашь не этот типа у тебя рантайм рухнет. То есть если ты буквально влезешь в IL после генерации и подменишь - у тебя все упадет с ошибкой CLR
то есть рантайм защищается от всякой неведомой херни
Если опускаться до уровня unsafe то там все сложно. Я лично писал иссуйку на гитхаб когда вот так все падало с критической CLR ошибкой (не исключение, а тотальное падение) ибо "так низзя" (они пофиксили это дело)

то есть рантайм CLR старается быть безопасным по возможности
поэтому и LinqExpressions сгенеренный метод работает медленней чем через IL ибо всякие там проверки безопасности. Но даже в чистом IL с типами лучше не играться. Все нестабильно. Я игрался - в моих методах я опустил il инструкции и просто молюсь ктулху что все будет ок (ибо если бы это была не моя личная либа - меня бы сожгли, а потом....снова сожгли, но сначала сожгли)
Аноним 16/11/23 Чтв 22:37:44 2924757 136
>>2924747
то есть IL от дотнета более безопасный от вмешательств, чем такое же для жавы
вот сколько ковырял и менял smali - так там куда более лояльно относится ко всяким хакам, чем в MSIL
Аноним 16/11/23 Чтв 22:47:49 2924766 137
>>2924756
>>2924757
А плюсы от этой безопасности вообще есть? Я пока вижу, это как какой-то маразм, из-за которого либ крутых нет.
Аноним 16/11/23 Чтв 22:53:26 2924770 138
>>2924766
от небезопасности smali тоже ничего хорошего. все работает после вмешательств - а везде ли? а вот хз

а в шарпе кодогенерация в рантайме обычное дело, так что там проверки наверное больше нужны.
даже тот же Span чем знаменит? не только унификацией работы с буферами, а и безопасностью работы с ними (работает в паре с GC)
вот тут я не могу утверждать, но я думаю не столько в проверках дело, сколько в рантайме, то есть рантайм знает про тип владельца метода, а не просто "кто-то вызывает метод" чтобы искать метод по своим таблицам или хз. Я так глубоко не лез. Я в smali и в MSIL лез лишь когда было нужно,а это редко
ведь я шарпист (вот тут не каждый поймет)
Аноним 16/11/23 Чтв 22:58:29 2924773 139
>>2924756
Ну. Я не знаю про что тут говорится.
Но я делал на работе хуйню, которая делала примерно следующее:
Если класс - удовлетворяет интерфейсу, но не реализует его - генерируем в рантайме класс обертку, которая этот интерфейс таки реализует и просто передаем эту обертку туда где нужен интерфейс.

Никаких ансейфов, обычная генерация типов в рантайме.
Но я делал это правда явно. Надо было сделать duck.As<IBird>(); Потому что - тут я все же считал, что явное - лучше неявного. НО думаю, что если закопаться вглубь - можно и неявно как-нибудь делать.
Аноним 16/11/23 Чтв 23:00:55 2924777 140
>>2924773
сгенерить класс адаптер/прокси легко. Просто если у класса нет интерфейса/базового класса/или он сам закрыт для переопределения
то мы не можем передать наш объект прокси куда то, где ждут сам оригинал
поэтому если не интерфейс, то всякие там либы требуют делать методы virtual чтобы можно было их переопределить.
Аноним 16/11/23 Чтв 23:08:26 2924783 141
Да, как капчу пройти-то?
Аноним 16/11/23 Чтв 23:11:08 2924784 142
2023-11-16234240.jpg 32Кб, 799x530
799x530
Хардбасс, уважаемые!
Памахите советом и своим важным мнением.
С# или Java? А может сразу Go?

Вкатился в это ваше айти пару лет назад тестировщиком. Без релевантного образования и без опыта ваще. Было тогда 35+
Душа просила и просит стать девелоппером, а душный склад ума с уклоном в научпоп, вроде позволит это сделать.

В тестировании не нравятся три вещи:
-быть замыкающим звеном. Это когда уже все, блять, аналитики, лиды, разрабы разобрались, обсосали требования и уже деплоится, а тебе говорят, ну чё там всё просто на 0,5sp, смотреть нехуя, за обед управишься авотхуй, минимум 3 мажора + правки требований Т.е. я всегда в прошлом.
-тыкать приложение как черный ящик. Хочется понимания, как там под капотом логика работает. А времени разбираться нету надо за обед успеть
-постоянные переключения контекста. То это посмотри, то вот там смоук сделай, то саппорту помоги если баг - заведи, то в джире порядок наведи передвинь статусы за разработчиков и лейблы расставь нужные, а то им некогда и вообще забыли, а у ПМ метрики хуйово собираются когда джира непричесанная И это все, блядь, фоном помимо основной фичи, в которую надо погрузиться и протестировать

Смотрю в сторону C# или JAVA. Ну т.е. что выбрать, чтобы попердолить полгодика, чтобы устроиться девелопером?
Java пробовал немного до устройства тестером. охуевал расшифровывать Cat cat = new Cat();
C# - текущий стек на проекте, но учить меня никто не будет и джунов не берут.

Далее мой пузырь стереотипов.
Плюсы окунуться в Java вижу такие:
-самый главный для меня - подкинули курс dmDev https://www.youtube.com/@dmdev/playlists где за ручку всё последовательно с примерами и домашками прокачает меня до возможности трудоустройства
-нет синтаксического сахара, все концепции через руки дойдут
-не привязана к вендору, нельзя будет russkim запретить использовать что-то, не останешься без работы
-почти не изменяется от выпуска к выпуску. Выучив однажды, знания практически не устареют
-со временем можно "устроиться в банк и пердеть от корпоратива до корпоратива"
-вакансий на hh.ru >6000шт.
Минусы:
-говорят, что 99% у тебя будут тонны легаси, где ты на три шага в любую сторону уже не будешь понимать что происходит. И никто никогда не понимал.
-очень много велосипедов от разных производителей, бардак с документацией
-линуксы ни разу не настраивал

Плюсы за C#:
-живой, развивающийся проект на работе но она и так настоебывает за день, что ничего уже не хочется смотреть
-коллеги, конечно няши, где надо пояснят, если что. Но за ручку никто водить не будет. У всех нет времени.
-всё в одном месте и от одного производителя, IDE, сервер IIS, документация/справочная, туториалы, CLR, база данных, гитхаб
-синтаксический сахар везде, типа проще жить будет
-пробовал писать автотесты, кликалки UI, но оч мало
-винду 3.11 ещё с дискет устанавливал уверенный пользователь, скажем так, но админить не умею
Минусы:
-главный для меня - нет пошагового пути как в случае с джавой. Даже не очень шарю чем .NET отличается от ASP.NET. Какие-то там Azure и прочие ништяки, которые то ли надо, то ли не надо знать? Смотрел ulearn.me, но там показалось, чёт перегружено лишним академическим, отдалённым от обычного ремесла. Рассчитайте координаты узлов механического манипулятора, блять. А я ХОЧУ, чтобы на первую работу по короткой проверенной дороге провели, без воды.
-всё от одного производителя из недружественной страны, который завтра выключит русский язык в хэлпах, послезавтра запретит использовать IIS, MSSQL, потом студию и гитхаб...
-вакансий меньше ~3000, лол
-синТОКСИЧЕСКИЙ сахар, который скрывает от тебя базовые концепции
-существенно меняется от версии к версии. Что работало на .NET3 не скомпилируется в .NET6
-легаси 10+ лет, а не 15+

А может сразу Go?.. если уж как бэ лунапарк с нуля
Аноним 16/11/23 Чтв 23:12:07 2924785 143
>>2924783
пойти в школу и выучить базовые арифметические операции
(ну или как я тыкать капчу пока не будет простое выражение ибо влом считать в уме)
Аноним 16/11/23 Чтв 23:16:55 2924787 144
>>2924785
я думал ей надо как обычно, всё что видишь вводить, а не примеры решать
давно не заходил
Аноним 16/11/23 Чтв 23:23:38 2924795 145
>>2924787
все просто. поступаешь в 1 класс и там за 11 классов тебя научат считать
а потом идешь куда то и учишь шарп

действуй
Аноним 16/11/23 Чтв 23:23:43 2924796 146
>>2924783
Купи пасскод. На что-то же ты должен тратить миллионы, заработанные программированием на шарпе.
Аноним 16/11/23 Чтв 23:27:46 2924803 147
>>2924796
на шлюх конечно он должен тратить
ну что за вопросы. какой еще пасскод. ты что
Аноним 17/11/23 Птн 00:11:18 2924828 148
>>2924747
Неправильно ссышь на шарподебилов. Не "как это подложило вам говна в штаны", а "мне похуй на причины вашего говна в штанах".
Аноним 17/11/23 Птн 00:14:09 2924834 149
>>2924828
жаваговнсит копротивляется
забавно
у стирания типов как есть плюсы
так и минусы

но шарпговножую этого не понять.
Аноним 17/11/23 Птн 00:14:52 2924836 150
>>2924828
блин
жавоговножую. ну ты понел
Аноним 17/11/23 Птн 00:15:40 2924838 151
йоба.jpg 176Кб, 500x500
500x500
Аноним 17/11/23 Птн 00:16:51 2924842 152
>>2924838
у меня продолжается тяница. шарпист может себе это позволить ))))
Аноним 17/11/23 Птн 00:18:52 2924844 153
>>2924688
>А говоришь данные захардкожены.
Некоторые захардкожены. Прямо почтовые ящики в исходном коде указывают. А иногда по коду сотрудника вычисляют, но код сотрудника также может быть зашит в исходный текст какого-нибудь метода, и потом поди его найди, чтобы поменять.
>>2924688
>Или речь идет о хардкодинге свойств условной модели?
Речь о том, что получателей иногда прямо в коде указывают. Кроме того, даже если они прямо и не указаны, то отбор событий для уведомления всё равно зачастую построен на жёстких правилах, которые нельзя настроить, не влезая в код. А требования к рассылке уведомлений периодически меняются. Типа "давайте по такой-то фигне уведомлять будем не сегодняшнего дежурного, а того, кто завтра дежурит". А у нас написан метод, которому на вход вообще дата не подаётся. Или "а давайте по таким-то поломкам уведомления будем слать не начальникам подразделений, а замам начальников". А у нас написан метод, который умеет одного сотрудника возвращать, но не список сотрудников, а замов много. И не всегда возможно настройками из какой-либо формы перенастроить логику отбора сотрудников и событий для оповещений.
Аноним 17/11/23 Птн 00:35:02 2924863 154
>>2924842
>продолжается тяница
Няш, мне вообще не нравица, то что ты столько бухаешь. Это типа такая профилактика после пользования шарпа? Прекращай как бы, а то оскуфеешь и кто ж тебя в мужья-то возьмет?
Аноним 17/11/23 Птн 00:37:20 2924865 155
>>2924863
это значит что у меня достаточно бабла для этого
шарп тут не причем. шарп лишь дает денежку
ну да нужно прекратить, но блин легче сказать
а в деньгах проблемы нет
Аноним 17/11/23 Птн 00:40:27 2924867 156
>>2924784
> С# или Java?
Джава конечно.

+асинхронность без загрязнения кода через async/await
+скорость выше в 3-26 раз
+огромное количество либ, выбирай не хочу
+много разных GC
+обратная совместимость и как следствие возможность всегда использовать самую последнюю версию джавы
+кроссплатформенность (настоящая, в том числе для либ для гуёв и сред разработки и вообще для всей экосистемы)
+подход к разработке, когда буквально каждая фича, которая присутствует, сделана лучше, чем у пародий на джаву (как пример интерполяция строк, но это не единственный пример, практически каждый класс в стдлибе джавы является примером)
+поддержка композиции без перепечатывания методов (@Delegate)
+поддержка изменения неизменяемых объектов через копирование через @With и @WithBy
+улучшенная генерация геттеров — не надо хуярить на каждое поле {get;}, можно просто повесить на весь класс @Getter, а также можно сделать их в fluent-style без убого префикса Get через @Accessors(fluent = true)
+мавен (лучшая система сборки ever)
+не пидорашье комьюнити, которое, в отличии от петушарпа, занимается написанием кода, а не запрещениями, наказаниями и тасканиями за уши
+-стирание типов (кто-то считает стирание очень хорошим, кто-то очень плохим, по факту это небольшая проблема, которая мешает создавать два метода с одинаковой сигнатурой после стирания, и всё)

Шарподебилы тут же щас начнут копротивляться и пытаться что-то контрвспукнуть, но обрати внимание, ничего они даже пытаться опровергать не будут, только скажут "нинужно" и "ничестно", либо вообще начнёт какую-то несвязную ересь нести, еле-еле касающуюся темы.
Аноним 17/11/23 Птн 00:43:26 2924872 157
>>2924865
Да-да, денег много, я понял. Вложи это в свое здоровье лучше, а не вот это вот все. Консультации там, обследования можно провести, зубки проверить, лазерную эпиляцию бахнуть, а может пластику небольшую совсем провести. Столько возможностей, ех.
Аноним 17/11/23 Птн 07:47:57 2924951 158
>>2924784
Очевидно у тебя уже шарп на работе и есть шанс. Ибо сомневаюсь что где-то имеет вес джун 35+. Так что без вариантов.

Пошаговых курсов полно, на тех же инетах есть качественный курсы (в том числе слитые) где за ручку водят как дебила. Но ценности это не имеет, так как профессия заставляет уметь собирать инфу самому, то что ты за 3 месяца просмотра узнаешь, что мог бы узнать за неделю на каком-нибудь metanit или доках мс, делает все эти видео разводом для лохов (как местный жабёнок).
Аноним 17/11/23 Птн 08:04:28 2924954 159
16996660636320.png 40Кб, 1443x247
1443x247
>>2924867
>+скорость выше в 3-26 раз
Да. чем у питона.
>+асинхронность без загрязнения кода через async/await
Зеленые треды хороши только когда у тебя фулл язык на них как го, в остальном это такие костыли что ппц. Асинки это наилучшие решение если язык изначально был "синхронным".
К сожалению после убийства жабы в андройде, жаба стала больше никому не нужна, кроме кабанчика с накопившимся кобол-кодом, поэтому 21 жабы ты на проде никогда уже не увидишь.
>+обратная совместимость
Такая что половина еще на 8 сидит, лол.

Дальше мне стало чет лень кормить жабёнка, развлекай лучше ты нас.и да, мы со злости не пойдем бамбать тонуший жабий тред
Аноним 17/11/23 Птн 08:48:20 2924961 160
Кто шарит за MaterialDesignInXaml в WPF

Как сделать чтобы оно применялось не на весь проект, а только на конкретное окно?

А то понравилось как оформляет - но по инструкции с документации оно это делает глобально на весь проект.

А если мне надо чтобы только одно окно было оформленно этой либой? Писать везде Style=none тот еще долбоебизм
Аноним 17/11/23 Птн 09:28:13 2924993 161
>Зеленые треды хороши только когда у тебя фулл язык на них как го, в остальном это такие костыли что ппц. Асинки это наилучшие решение если язык изначально был "синхронным".
Вот это шарпушиный копиум, конечно. Индусы из майкрософта не осилили и сделали дешевый костыль с асинками, значит не нужно. В то время как белые люди из оракла посидели, подумали и не спеша выкатили абсолютно бесшовно работающее решение. Ей богу, у вас секта, а не язык.
Аноним 17/11/23 Птн 09:52:35 2925016 162
Как по нормальному конвертировать string в double с учетом всей этой региональной еботни?

Например
string s = "10.54";
double d = Convert.ToDouble(s);
Крашнится, потому что надо "10,54"

Можно конечно добавить IFormatProvider provider = new CultureInfo("ru-RU");
Но откуда я знаю откуда текст и какой там регион? Текст может с базы данных, а может с таблички из интернета

Есть нормальная функция которая правильно работает?
Аноним 17/11/23 Птн 10:02:53 2925022 163
>>2925016
Нет ни единой в мире либы которая нормально работает с конвертацией из строки в дабл.
Аноним 17/11/23 Птн 10:04:02 2925024 164
>>2924951

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

Метанит пробовал грызть по С#, да сухо и по делу. Дошел до делегатов/событий и чёт приуныл https://metanit.com/sharp/tutorial/3.28.php Изучать подобное в отрыве от реального применения демотивирует.

Может, ты, опытный - ткнёшь пальцем в годный курс по С# на Youtube/Udemy ? Пускай даже и не слитый, платный После которого на работе ждут.

Вчера покрасноглазил, от безысходности вот это пока выбрал https://www.youtube.com/watch?v=E3rCQDXwOpA&list=PLEtg-LdqEKXbpq4RtUp1hxZ6ByGjnvQs4&index=3

> сомневаюсь что где-то имеет вес джун 35+.
вот здесь немного больно стало
Аноним 17/11/23 Птн 10:11:31 2925031 165
>>2924954
> Да. чем у питона.
Не надоело урину на ебальник принимать? -> >>2924412

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

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

> Такая что половина еще на 8 сидит, лол.
Один хуй её больше, чем в шарпоговне, в котором вместо "добрый день" — "апинейм удалено".
Аноним 17/11/23 Птн 10:16:03 2925034 166
>>2924951
Да, и какой план у шарповиков, если MS запретит использование своих продуктов в рфии?
Понятно, что вряд ли кто-то с двача вообще хоть раз покупал лицензионную винду. Если только не с ноутом впридачу.

Однако пиратство и офицальный запрет всё же немного разное. Скорей всего разработка на C# будет скукоживаться.
Аноним 17/11/23 Птн 10:57:02 2925095 167
>>2925034
>если MS запретит использование своих продуктов в рфии
Как запретит? Скажет "не пишите на C#" и ножкой громко топать будет?
Аноним 17/11/23 Птн 11:33:43 2925137 168
>>2925095
ну я хз, как именно можно запрещать и ножкой топать и как поведет себя работодатель. и я не знаю девелоперских зависимостей от продуктов MS

У меня есть пример из QA. В прошлом году пришлось отказаться от slack и testrail с многолетней историей, тысячами сущностей, перекрестных ссылок между ними и техдолгом!
Были возможности и обходные пути, как остаться на них, но компания решила, что мы переезжаем. Это было очень больно и до сих пор аффектит.
Аноним 17/11/23 Птн 11:39:15 2925141 169
>>2925137
Весь дотнет уже давно опенсурсный (компилятор, рантайм, оф. либо). Так что я хз, как MS сможет это запретить. Максимум могут перестать лицензии на студию отпускать. Но и это не проблема. К примеру, те же жидбрейнс уже полтора года как ушли из России, а у нас в компании лицензии на их продукты до сих пор как-то продлятся/покупаются.
Аноним 17/11/23 Птн 11:39:27 2925142 170
>>2925137
>ну я хз, как именно можно запрещать
во первых сама платформа оно опенсурс.
во-вторых есть клоны как языка, так и платформы, в том числе от линуксоидов, надо будет, опять откопают
в-третьих C# это просто стандарт. надо будет, напишут свой компилятор
Аноним 17/11/23 Птн 12:34:18 2925242 171
javacs.png 48Кб, 1201x225
1201x225
>>2925034
Да, но пока ровно наоборот.
Аноним 17/11/23 Птн 12:39:55 2925253 172
>>2925024
>Может, ты, опытный - ткнёшь пальцем в годный курс по С#
Я вкатился уже давно, но люди хвалят ITVDN на торрентах как отдельно, так и 300гиговая раздача была, но я не помню точно, меня просвещали джуны
Аноним 17/11/23 Птн 12:41:12 2925257 173
>>2925242
Есть openjdk. Или опять не то?
Аноним 17/11/23 Птн 12:42:15 2925259 174
>>2925031
Жабёнок, обоссы себя сам, не интересно одно и тоже, старайся лучше, приелся уже.
Аноним 17/11/23 Птн 12:44:27 2925265 175
javafree.png 48Кб, 925x177
925x177
>>2925257
Кустарное подделие с тормозами и тонной подводных неточностей, но для хеллоуворда норм.
Аноним 17/11/23 Птн 13:18:31 2925336 176
image.png 21Кб, 440x74
440x74
>>2925253
Найс. Спасибо.

Нашел раздачу на 301гиг

Може(те) сказать вкратце, чем отличаются эти три вида разрабов с пикрила? Чтобы для себя понять и примерно сопоставить, кем являются наши разрабы, например.
Аноним 17/11/23 Птн 13:23:15 2925348 177
>>2925336
был дотнет фрейворк и кор, последний опенсорсный, позже в 5 версии дотнета их объединили, убрав пропретарную версию
Аноним 17/11/23 Птн 13:25:28 2925353 178
Есть ли способ как из РФ подключаться к GPT без геморроя и чтобы не слетало? Желательно без vpn.

Пробовал регаться с зарубежных сервисов по отправке СМС. Зарегался, но подключение потом к самому чату нестабильно. Периодически отваливается.
Аноним 17/11/23 Птн 13:25:40 2925354 179
>>2925336
был дотнет фрейворк (старый) и кор (опенсорсный), позже в 5 версии дотнета их объединили, кор стал основным.
Там тебе в курсах объяснят
Аноним 17/11/23 Птн 13:25:48 2925355 180
>>>>2924961
ну если оно делает путем подключения словаря ресурсов то просто подключай его только в нужном окне

>>2925016
дык s.Replace(",", ".") и потом парси
ну или разберись в намберформат вроде. забыл

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

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

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

>>2925348
не объединили, а кор стал 5 версией, а старый дотнет умирает.
Аноним 17/11/23 Птн 13:27:27 2925359 181
>>2925348
правильно ли я тебя понял, что сейчас, после релиза NET6, 7, 8

ASP.NET Core + ASP.NET = C#.NET разработчик ?
Аноним 17/11/23 Птн 13:32:11 2925366 182
>>2925359
По годам надо смотреть, сейчас core просто убрали.
Аноним 17/11/23 Птн 13:33:30 2925372 183
Аноним 17/11/23 Птн 14:11:44 2925411 184
>>2925359
Нет. Ты можешь быть .net разрабом и никогда в жизни не притронуться к ASP.NET-у. Например в десктопе или геймдеве.
ASP.NET(Core) это отдельный фреймворк для разработки сервисов и веб-приложений.
Аноним 17/11/23 Птн 14:19:59 2925415 185
dbc41d63b8ed112[...].jpg 63Кб, 341x500
341x500
Насколько кал? Не хочу читать западные переведёнки т.к. понимаю насколько разрушительно хуёвым может быть перевод, но и моего B2 не хватит чтоб понимать ангельский. Если это кал посоветуйте других русских ну и желательно не времена мамонта, боюсь что выучив 5 нет нихуя не пойму в будущем.
Аноним 17/11/23 Птн 14:44:57 2925465 186
>>2925137
>как поведет себя работодатель.
>У меня есть пример из QA.
То что ты привел как пример, это всего лишь замена одного набора инструментов на другой. Да это может быть больно и неудобно, но в основном для рядовых исполнителей. Т.к. по факту персонал остается тот же, его нужно просто переучить и дать привыкнуть. Все. Даже зарплаты поднимать не нужно. Я такие перемены переживал не раз. Замена с редмайна на джиру+конфлюенс. Переход с битбакета на гитлаб, и т.д. Одних мессенджеров корпоративных уже 3 штуки только за этот год поменялось. И т.д.

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

>>2925137
>девелоперских зависимостей от продуктов MS
Да сейчас вообще похуй. Хочешь винда, хочешь линукс. Половина вообще на маках на шарпе разрабатывает и в хуй не дует.
Запускается на чем угодно, базы любые используешь и т.д.
Ну может какие-нибудь azure сервисы недоступны, но я хуй знает - никогда ими не пользовался.

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

Так что расслабь булки.
Аноним 17/11/23 Птн 14:58:58 2925481 187
>>2925415
>Насколько кал?
Чел 2018-й год... Там про .net framework рассказывается и приводятся скрины из 2015-й студии. Сам то как думаешь?
Оно на момент выпуска может и норм было, но уже 5 лет прошло, тут тебе не джава, у нас все что старше двух...трех лет, уже устарело (ну может кроме Рихтера, это чтиво на все времена, но не для всех и к обучению оно не имеет отношения)
>>2925415
>кал посоветуйте других русских
Русских нет. А вот в переводе можешь вот это взять:
"C# 10 и NET 6 Современная кроссплатформенная разработка [2023] Марк Прайс". Судя по тому, что переводила та же команда, которая до этого переводила Эндрю Лока с "Aps.Net в действии", перевод должен быть нормальным.
Аноним 17/11/23 Птн 15:00:35 2925483 188
Аноним 17/11/23 Птн 15:02:22 2925489 189
image.png 446Кб, 1000x1000
1000x1000
>>2925415
Ппц какие вы привередливые, вы не вкатитесь в айти с такими запросами. Жри Троелсона, новое нагуглишь
Аноним 17/11/23 Птн 15:14:11 2925511 190
Аноним 17/11/23 Птн 15:43:13 2925581 191
>>2924844
>Прямо почтовые ящики в исходном коде указывают.
Такого быть не должно. Такие данные должны быть за пределом кода. Либо в какой-то доп базе данных, если редактирование основной недоступна. Но все проблемы таких систем в поддержании актуальности данных. Именно поэтому ERP это не дешевая шутка.

> А у нас написан метод, который умеет одного сотрудника возвращать
Что мешает добавить метод, возвращающий несколько сотрудников? Я когда пишу свое, даже миллипусечное приложение, то знаю, что так оно по итогу и будет, что придется иметь дело со списком. Даже INotifyCollectionChanged возвращает массив, даже если изменен всего один итем.

>давайте по такой-то фигне уведомлять будем не сегодняшнего дежурного, а того, кто завтра дежурит
Что мешает написать фильтр? Ты же в курсе про ICollectionView? Там можно писать фильтры, сортировщики и все это не руинит основной список. Делай хоть сколько фильтров. Сначала список фильтруешь по дежурным, потом по дате дежурства, а потом по длине их члена.

Или делайте нодами, лол, если уж там совсем специфические сценарии. Вон в Houdini или в Unreal Blueprints можно без проблем цвет привязать к дате, например. Там просто модули, отвечающие за определенный параметр, либо обрабатыващие данные определенным образом. Поэтому там можно из цвета RGB достать канал R, который по сути число и связать со свойством Data.Day, который тоже является числом, а между ними вставить ноду Clamp или ноду какого нибудь множителя и получить изменение цвета по дате. И такой сценарий никак не предусмотрен изначально.

Я шучу, а может и нет. Но мне кажется, что большая часть проблем решается обычными методами, типа дописывания еще одной функции, если приложение остаточно модульное, либо фильтрации данных. Некоторые проблемы решается с опытом.
Аноним 17/11/23 Птн 18:10:55 2925831 192
Аноним 17/11/23 Птн 19:34:16 2925925 193
>>2924756
>если метод Foo(Bar b) принимает этот Bar, то если ты туда что то передашь не этот типа у тебя рантайм рухнет

Ну ок, допустим в джаве есть метод foo(Object b), где в этом методе вызывается какое-нибудь свойство типа b.getBarProperty(). И точно так же все рухнет, только на несколько этапов позже.

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

питонист
Аноним 17/11/23 Птн 19:51:18 2925951 194
>>2925925
Изменение байткода, это как педерастия, порядочные джависты такое в проекты не тащят кроме тестов, которые в проде будут выкинуты.

Понятно, что местный ребенок никогда не работал в тырпрайзе и просто радуется очередной магической динамикодрисне, но не стоит опускаться до таких уровней.
Аноним 17/11/23 Птн 19:59:18 2925959 195
>>2925353
бамп вопросу
сегодня не только лишь все в этом треде голосуют за путина сидят на chat GPT, разве не?

вариант без шизофазии: ну вы же все используете GPT. Расскажите, как это делать стабильным образом?

Про CoPilot тоже интересно - как? Но в первую очередь про GPT.
Аноним 17/11/23 Птн 20:00:39 2925965 196
>>2925951
Оно в спринге есть.
Аноним 17/11/23 Птн 20:10:53 2925975 197
беседа-сприг-го[...].png 422Кб, 566x800
566x800
>>2925965
Так кто говорил, что срыг не эталонное магическое говно?
Хуже был только проект play или как там его, которые вдохновлялись рельсами от рубей. Где-то был доклад, как стильные и молодежные дебажили это магическое чудо.
Аноним 17/11/23 Птн 23:37:53 2926198 198
>>2925959
Будешь общаться с нейросетью — дурачком станешь.
Аноним 17/11/23 Птн 23:39:15 2926202 199
2023-11-1723-39[...].png 6Кб, 916x177
916x177
Аноним 17/11/23 Птн 23:55:07 2926220 200
2023-11-1723-51[...].png 35Кб, 969x234
969x234
>>2925959
Копилот устанавливается из расширений. Заходишь в управление расширениями, ищешь в поиске GitHub Copilot и устанавливаешь. После перезагрузки вводишь код привязки устройства, который либо автоматом копируется в буфер обмена, либо указан в окне вывода вижуал студии. Соглашаешься на сбор данных и юзаешь свое копро. Можешь заодно на рейтинг посмотреть.
Аноним 18/11/23 Суб 02:06:51 2926346 201
Лол, зашёл вчера на udemy найти какой-нить курс по вкату в C# насколько я понимаю теперь мне нужен курс по ASP.NET Core и там горящая распродажа.
Было 5990 --> стало 1500. Спешите! Такая цена только 12 часов!
Пока я был в нерешительности, пробовал такое же на ютубе или сливах поискать, чекнул ещё раз сегодня, а цена уже 650р!
Видимо, это сам архангел Гавриил хочет, чтобы я закончил уже ныть и, таки навернул C#
справедливости ради, надо сказать, на все остальные Java, Golang и т.д. тоже 650р
Аноним 18/11/23 Суб 02:42:34 2926353 202
>>2926346
Жалоба успешно отправлена. Ошибок нет.
Аноним 18/11/23 Суб 03:20:33 2926360 203
>>2926346
Ну кто на этой хуйне курсы ищет, я вот знаю где 5990 0 и к оплате приниматся карты виза, мастеркард, пиковые тузы, пятёрочка выручает
https://rutracker.org/forum/tracker.php?nm=udemy%20C%23
Буквально нет ни одной причины что-то покупать у любых инфоцыган
Аноним 18/11/23 Суб 04:34:29 2926369 204
>>2926360
Смотрел рутреккер тоже. И там всё старое. По твоей ссылке буквально пара раздач НЕ по юнити. К тому же, всё на английском. Я не против английского как такового, читать там комменты в коде или гитхаб. Но слушать новый технический материал на неродном языке, вот просто не готов ещё этим переусложнять себе жизнь.

А 650р, ну это буквально цена двух бокс-мастеров теперь без хашбраунов внутри

Впрочем, спасибо.
Аноним 18/11/23 Суб 06:04:40 2926381 205
>>2925265
>кустарное поделие
>openjdk
Помолчал бы, умнее выглядел, дегенерат.
Аноним 18/11/23 Суб 06:05:50 2926382 206
Аноним 18/11/23 Суб 06:07:57 2926383 207
>>2925355
>что-то непонятное меряют
Ты совсем еблан? Это буквально тот же тест, на который я отвечал, только не обрезанный по удобному для шарподебилов, а полный.
Аноним 18/11/23 Суб 06:53:54 2926392 208
>>2926382
Это хорошо что ты свои сливы осознаешь и принимаешь.
Аноним 18/11/23 Суб 07:02:41 2926394 209
>>2926369
Тебе же сказал для вката в сторону ITVDN смотреть. Нет начинают дальше зарываться в канализацию.

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

Реально сложные вещи там никто не разбирает, так как, видимо, боятся вкатунов спугнуть.
Аноним 18/11/23 Суб 08:01:31 2926412 210
Аноним 18/11/23 Суб 08:37:12 2926421 211
>>2925137
> В прошлом году пришлось отказаться от slack и testrail с многолетней историей, тысячами сущностей, перекрестных ссылок между ними и техдолгом!
Куда по итогу перекатились?
Аноним 18/11/23 Суб 12:01:08 2926543 212
>>2926394
>ITVDN
Да, качнул пару вводных видосов, чтобы сориентироваться в этих Automation Script Pages

А с udemy что-то я обосрался. В качестве пробы купил за два боксмастера какой-то "охуенно-хороший" курс, по паттернам проектирования до которого наверное миримум год на коммерческой разработке надо расти, блять и все цены вернулись на 5990р
Чистил куки, перезагружал, заходил инкогнито, с другого компа, аккаунта, всё равно. Во всех случаях нету больше цены 650р.
Как они это делают? Можно как-то обойти?
Мне уже не купить, а просто интересно понять, как они меня детектят и ставят другую цену?

>>2926421
Вместо слака - ебучая отечественная "Пачка". У которой регулярно проёбываются уведомления пользователям при меншинах. Т.е. по сути, главная функция корпоративного мессенджера - тегнуть кого-то, чтобы он пришёл или внимание обратил - проёбывается.
Вместо ебучего тестрейла, который нам постоянно md- разметку ломал, пересели на гуглдоки
Что-то с джирой пытаются намутить, может зефир там или что-то другте будет.
Аноним 18/11/23 Суб 12:28:47 2926578 213
>>2926383
>Ты совсем еблан?
я 1000^5000 раз говорил что скорость без учета фич можете засунуть себе в жопу
в скорости если захотеть может порвать всех даже синклербейсик
а толку
Аноним 18/11/23 Суб 12:34:24 2926583 214
>>2926543
>Вместо ебучего тестрейла, который нам постоянно md- разметку ломал, пересели на гуглдоки
Ебать, импортозаместились.
Аноним 18/11/23 Суб 12:45:58 2926590 215
Какие же майкрософт - пидорасы.
Взяли и на похуй - поменяли 80 порт на 8080 по дефолту.
Мне теперь как еблану - лезть nginx. Допиливать композ ебучий.
Вот просто реально. Как жа это бесит. Неделя до сдачи на прод, тимлид - особенный: давайте накатим .NET8. Теперь вместо того чтобы чуть больше потестить и чет причесвать - бегай порты меняй, проверяй, что ниче там не сломалось в плане доступности.
11/10 короче. Обожай мелкомягких.
Аноним 18/11/23 Суб 12:58:54 2926599 216
>>2926590
Причем здесь Майкрософт? Твой тимлид не особенный, а просто долбоеб, который за неделю до дедлайна решил вкатить новую версию
даже студенты в вузах так не делают
Аноним 18/11/23 Суб 13:10:35 2926615 217
>>2926599
Ну. Не могу же я ему вот так и сказать. Типа токсичненько слегка.
Аноним 18/11/23 Суб 13:23:32 2926624 218
>>2926590
Продакшн
@
Без тестирования накатили обнову перед выходными
@
Не сконфигурирован явно порт в приложении
@
Доярка пролила молоко на сервер
Аноним 18/11/23 Суб 13:47:39 2926644 219
>>2926578
Перечитай ещё раз моё сообщение и перечитывай до тех пор, пока не дойдёт.
Аноним 18/11/23 Суб 13:48:56 2926645 220
>>2926590
Лол, а говорили копрософт не ломает обратную совместимость с 4 петушарпа! Опять напиздели что-ли? И самое главное это даже задокументировано не было в графе breaking changes, пиздец, ахаха!
Аноним 18/11/23 Суб 13:49:23 2926646 221
image.png 33Кб, 975x348
975x348
Петуханы, подскажите где я мог проебаться? Скажу сразу, что я хуепутало самоучка и быдлокодинг моё хобби.
Сейчас пилю проект на шарпе, десктопное приложение, планирую его монетизировать путем продажи ключей доступа с повременной оплатой. Для проверки лицензии планирую подключаться к собственному серверу авторизации по TCP, с некоторой периодичностью буду посылать hearbeat пакет где буду проверять не наебывает ли юзер мой клиент разреверсив алгоритм проверки авторизации и подняв свой сервер, помимо этого через TCP буду гонять туда сюда разные данные. Понятное дело, что приложение будет обфусцировано и всё сделано по максимуму, для того, чтобы взлом был нецелесообразен по временным затратам.

Как работает авторизация:
При подключении к серверу клиент посылает login пакет с определенным пейлоадом (публичный ключ, версия клиента и т.д.) и после чего ждет ответа от сервера. Сервер через делает запрос к БД, проверяет есть ли такой ключ в базе и сколько рабочего времени осталось у ключа, далее, соответственно, отвечает успешна ли авторизация или нет, в случае успешной авторизации создает отдельную сессию, помещает её в БД (время создания сессии, версия клиента, время последнего успешного heartbeat пакета и т.д.)

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

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

Общее количество concurrent юзеров будет в районе 500, максимум 1000. Всё будет работать на одном VPS сервере.

Есть какие-либо замечания?
Аноним 18/11/23 Суб 13:50:32 2926647 222
>>2926646
>петуханы
Чёт проиграл. Какой тред, такое и обращение.
Аноним 18/11/23 Суб 13:53:31 2926651 223
>>2926645
Это не ломающее изменение, просто пидорасы - решили что теперь в контейнерах по дефолту прописана переменная окружения с портом не 80 а 8080. Дескать УЛУЧШАЕМ ЭКСПИРИЕНС ТЕХ КТО НЕ ПОД РУТОМ, ну охуеть, блядь, а те кто под рутом - пусть страдают получается. Пиздец нахуй.
Но из-за этого теперь - надо допиливать docker-compose, надо nginx перенастраивать, интеграционные тесты - заново прогонять, чтобы проверить - что все доступно. Это такой гемор, когда по плану было на след неделе уже на прод выкатить.
Аноним 18/11/23 Суб 13:57:56 2926653 224
>>2926651
Подучи определение брекинг ченджа, хули.
Аноним 18/11/23 Суб 14:03:11 2926659 225
Аноним 18/11/23 Суб 14:06:31 2926662 226
>>2926659
Ох ты ж пиздец сколько там поломок... Когда я в первый раз смотрел, там буквально одна поломка была написана, какой-то апи выпилили.
Аноним 18/11/23 Суб 14:08:43 2926666 227
170030480029275[...].jpg 28Кб, 968x274
968x274
>ррррря кроссплатформенность кококо!
>ой а почему мой код работающий на шинде не работает на юниксе
Аноним 18/11/23 Суб 14:14:35 2926677 228
>>2926653
Всегда считал, что ломающими можно считать только когда ломается либо синтаксис, либо поведение либ. А окружение. Ну, на самом деле - мы бы могли свои контейнеры делать и сами прописать нужный нам порт, просто мы - ленивые для этого + не хотим тратиться на поддержку этого дела. Короче, не знаю, реально ли считать это ломающим измененеием или нет, даже если майки так считают.

>>2926659
Та можно и повыебываться. Просто не называть же его просто долбоебом. Это неконструктивно.
А назвать майков пидорасами - сам бог велел. Типа ну срсли. У меня с этим обновлением еще и HTTP клиент сломался, если пытаюсь с 65000+ портами соединяться(всегда их ставил для тестов, но теперь - почему-то кидает исключение, дескать закрыто, хотя сервер на который обращаюсь, даже не получил соединение, и тем же постаманом - все еще нормально можно кидать запросики, короче, шляпа).
Аноним 18/11/23 Суб 14:17:54 2926680 229
>>2926666
Хуже то, что такие точечные поломки на линуксе будут ещё лет 10. Был бы язык кроссплатформенным с самого начала - не пришлось бы это переделывать.
Аноним 18/11/23 Суб 14:18:29 2926682 230
>>2926677
Ты может перестанешь копротивляться? Даже твой барин сам признал, что это брейкинг чендж.
Аноним 18/11/23 Суб 14:34:48 2926721 231
Аноны, почему выражение:
new PriorityQueue<MyObject, double>(Comparer<double>.Create((a, b) => a - b))
вызывает ошибку компилятора о том, что он не может double в int преобразовать? Вроде конструктор принимает компаратор на дженерике, не выкупаю почему ожидается int
Аноним 18/11/23 Суб 15:25:14 2926801 232
>>2926651
>интеграционные тесты - заново прогонять, чтобы проверить - что все доступно.
Т.е., обычно при обновлении сред вы этого не делаете? Ну охуенно, успехов вам тогда.
Аноним 18/11/23 Суб 15:32:27 2926809 233
>>2926680
>Был бы язык кроссплатформенным с самого начала - не пришлось бы это переделывать.
Там дело не в языке, а в том, что майки тупо хуй забили на написание нормальной кроссплатформенной IO библиотеки. Типа вот есть базовый функционал, он работает, что-то больше - ебитесь сами. Или mono.posix юзайте или свое делайте.
Честно говоря, поработав с файлами в линухе, я их поинмаю. Линукс то еще говнище в этом плане.
Аноним 18/11/23 Суб 15:34:07 2926813 234
>>2926644
перечитал. до меня дошло что ты жавист. а жависты они долбоебы по определению
Аноним 18/11/23 Суб 15:38:02 2926819 235
>>2926809
Почему когда двачеры выпердывают в интернет мнение по какой-то технологии, то они забылвают добавить пример в качестве пруфа.
Аноним 18/11/23 Суб 15:57:28 2926850 236
>>2926819
Каких тебе пруфов нужно чудила?
Попробуй просто через стандартный System.IO хотя бы линуксовые пермишены на файл прочитать/раздать, а когда не получится погугли и увидишь, что из нормальных вариантов только моно.юникс, который хрен знает уже сколько в пререлизной версии находится (но справедливости ради, работает вроде бы четко)
Аноним 18/11/23 Суб 16:12:50 2926874 237
>>2926809
>Честно говоря, поработав с файлами в линухе, я их поинмаю. Линукс то еще говнище в этом плане.
В UNIX идеальная концепция файлов и иерархии.
Аноним 18/11/23 Суб 16:37:28 2926930 238
Тред кухарок
Аноним 18/11/23 Суб 17:44:43 2927057 239
16870873892190.png 211Кб, 680x709
680x709
Аноним 18/11/23 Суб 18:02:30 2927072 240
Заметил, что sealed используют только чсв ебанаты
Аноним 18/11/23 Суб 18:09:43 2927077 241
>>2927072
Рихтера начитались.
Аноним 18/11/23 Суб 18:13:42 2927078 242
>>2927072
И правильно делают, я не для макак свои классы пишу, которые думают, что что-то могу там исправить. Если че-то не устраивает - можно всегда своё написать с нуля.
Аноним 18/11/23 Суб 20:52:47 2927247 243
Хм.
Что смотрите.
У меня в приложениях - чет дохуя словарей статичных которые нужны просто чтобы читать какие-то штуки по имени.

И вот че я подумал.
А что если заменить их всех - массивами-то?

Типа чем это:

var dic = new Dictionarty<string, something>()
{
["a"] = new Somthing(1),
["b"] = new Somthing(2),
}

Но ведь все мы знаем, что словари - это медленно.
И вот че меня заинтересовало. А может ли шарп - такую оптимизацию проводить: смотрит, что словарь - неизменяемый - и заменяет его массивом?
По мне - была бы отличная хуйня, если словарь используется чисто как хранилище.
Аноним 18/11/23 Суб 21:26:03 2927300 244
image.png 45Кб, 590x352
590x352
Аноним 18/11/23 Суб 23:39:08 2927398 245
>>2926543

> Вместо слака - ебучая отечественная "Пачка". У которой регулярно проёбываются уведомления пользователям при меншинах. Т.е. по сути, главная функция корпоративного мессенджера - тегнуть кого-то, чтобы он пришёл или внимание обратил - проёбывается.
Печально. Еще и платный. А есть свободный зулип.
> Вместо ебучего тестрейла, который нам постоянно md- разметку ломал, пересели на гуглдоки
Для доков - аскидок, но там синтаксис чуть отличается от md
Аноним 18/11/23 Суб 23:57:49 2927418 246
>>2927247
А искать ты в этом массиве как собрался? А если тебе не нужен поиск, тогда нахуя тебе вообще словари?
Аноним 19/11/23 Вск 00:18:08 2927443 247
>>2927247
Зачем такая оптимизация в языке, если самому сделать с массивами легко? Заводишь константы с индексами, инициализируешь массив, дальше в коде везде обращаешься с использованием констант. И что это у тебя за немыслимо тяжёлые вычисления, где "словари слишком медленные"?
Аноним 19/11/23 Вск 00:21:23 2927449 248
Такое дело.
Есть бд в ней модель собранной html страницы, и есть просто папка с этими хтмл страницами.
Дак вот, получение страницы через Where(n = n.Name ="zalupka").FirstOrDefault()
Гораздо дольше че получение страницы из файла по его имени File.ReadAllLines("zalupka.html")
Вангую потому что поиск идет а файл я беру сразу.
Стоит ли мне еще протестировать модель в которой праймери кей будет string и иметь то самое название как у файла а именно zalupka ?
Можете примерно почувствовать будет ли скорость выше чем если бы я брал данные из файла?
Аноним 19/11/23 Вск 00:26:54 2927459 249
>>2927449
upd
файлов и следовательно записей в бд 300к
Аноним 19/11/23 Вск 00:28:05 2927461 250
>>2927449
Индексы в твоей БД хоть есть?
Аноним 19/11/23 Вск 00:34:19 2927467 251
>>2927461
Я хуй знает.
Sqlite Code First что студия мне там создала в душе не ебу.
Аноним 19/11/23 Вск 00:37:32 2927471 252
>>2927467
Значит, индексов нет, и каждая запись ищется полным перебором.
Аноним 19/11/23 Вск 00:42:16 2927481 253
image.png 31Кб, 342x51
342x51
>>2927471
Понял принял спасибо, добавлю индексы.
Приближусь ли я к такой же скорости как и с файлами?
Пикрил выборка 1к записей по 1 шт за раз.
Аноним 19/11/23 Вск 00:54:45 2927491 254
>>2927481
Может, даже быстрее файликов будет. От многого зависит.
Аноним 19/11/23 Вск 01:05:57 2927499 255
>>2920885 (OP)
пришел с /b треда, может тут подробнее ситуацию смогут объяснить. (мне сейчас некогда за Б смотреть, спать надо)

30 лет. неудавшийся проектант по ТеплоГазВода. затошнило от специальности, плюс везде надо общаться или по блату.
подумал что то другое, чтобы вылезти с Мухосрани.
матан был норм. но все забыл, так как нигде не пригодилось. буквально.
из прогерства БЕЙСИК был в школе, да эксель в универе/работах в офисах. мда. насчет этого не заморачивался и нужные формулы тупо искал в нете, разбирался и делал. а потом забывал. потому что зачем запоминать такое?

>C#
пал выбор на РЕШЕТКУ
мечтал всегда игори делать. или около того.
здесь сгодится, чтобы потом забугор свалить?
согласен просто програмули делать пока.

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

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


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

>Подавать заявки на СТАЖИРОВКИ
смотрел до этого стажировки в своем районном городе
их 0.
рядом миллионник не смотрел.
а вот МИДЛОВ дохуя хотят. в магазы в основном.

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

но я хз какой проект придумать, чтобы и в будущей игре сгодилось и никто не заподозрил, что это будет ФУРРИ игра. я чувствую себя человеком, но люблю заверотянок очень, типа акул, оборотней, волчиц. такие дела.
вкратце: от 1 лица, за человека-неудачника в сайфай вселенной короче, где он полетит на планету отрабатывать долги, иначе его пихнут в биореактор, а биомусор с плохими генными данными как он, не в почете на Земле. но лучше в 2д наверн вначале будет оптимально.
или какую то прогу просто лучше сваять потихоньку для диплома?
Аноним 19/11/23 Вск 01:18:45 2927506 256
>>2927491
Я понимаю что можно ускорится с помощью Dappera или напрямую писать SQL запросы но через EF удобнее, да и есть еще места где можно оптимизировать.
Но вот если у меня все файлы будут лежать в БД то записей будет реально дохуя, и выборка будет уже по 2м полям так как надо будет определить какому сайту принадлежит страница. Я так понимаю что можно будет сделать составные индексы.
Сейчас файлы у меня лежат так
/site1.com/.html
/site2.com/
.html
/site3.com/*.html

Если это всё в бд хранить то будет примерно так:
Основная БД в которой хранится контент 300к, приоритет чтения этого контента, скорость добавления нового контента не критичная так как будет происходить редко, на ночь поставил и забыл.
А вот если все сайты добавлять в 1 буду то она просто будет ебаническая, считай 1 сайт это копия главной бд просто с перемешанным контентом.
Конечно в бд можно хранить только порядковый номер контента(предложений) типо [1] [3] [2] [4] [5] Ну тогда каждый раз придется после получения порядка вывода контента лезть в главную бд брать контент полностью и каждый раз собирать его. Место на диске занимать будет меньше, но страницу собирать дольше.

Вообще можно на на лету в рабочей программе создавать новую бд и dbcontext?
Например в панельке админа я добавил новый сайт, бд то я создам, а как потом использовать тот контекст который мне нужен?
Аноним 19/11/23 Вск 01:44:34 2927516 257
>>2927499
ты хоть пробовал игры то делать? Не советую геймдев. Если хочешь вкатиться туда, где ещё есть места, советую бэкенд, на шарпе можно в бэк. Только там надо ещё базы данных знать и скорее всего докеры хуекеры всякие. Учи язык, учи проектирование на языке, асинхронное программирование, дрочи задачи алгоритмические, чтоб собес на джуна/стажера пройти. Курсы хорошие есть от Окуловского на ulearn, бесплатно, основы программирование 1,2 и проектирование на c#
Аноним 19/11/23 Вск 08:49:29 2927627 258
Аноним 19/11/23 Вск 12:46:06 2927893 259
>>2925951
> Изменение байткода
Иногда необходимо (манки патчинг). Ясен хуй к срыгу это не относится, так как там с самого начала всё построено на волшебстве.
Аноним 19/11/23 Вск 12:47:34 2927896 260
>>2925925
Всё правильно ты не понимаешь, он хуйню несёт.
Аноним 19/11/23 Вск 13:24:44 2927989 261
>>2927896
верно. несу хуйню. я на IL не пишу, я всего лишь иногда правил IL по простому и smali по сложному.
я лишь смотрю что всякие там фейки,молы,субституты могут обернуть класс (без интерфейса - раз, причем публичный - два) в проксю, но запроксирует только виртуальные методы.
Почему? хз.
Аноним 19/11/23 Вск 13:49:49 2928040 262
Мужики, а че учить после того как овладел базовым синтаксисом?
Аноним 19/11/23 Вск 14:10:35 2928076 263
>>2928040
Все. Кроме того, фреймворки, которые делают то, чем ты хочешь заниматься.
Аноним 19/11/23 Вск 14:14:59 2928087 264
Ребят, это прикол какой то? Набираю в поиске c# вакансии без уточнений, выдает 2-3 вакансии всего. Это шутка или от платформы в рф полностью отказались?
Аноним 19/11/23 Вск 14:23:16 2928102 265
>>2928087
Звучит, как происки джавистов...
Аноним 19/11/23 Вск 14:43:21 2928139 266
>>2928087
Х/з. Может особо перестали на всякие хх вакансии выкладывать. Мне в телегу хрюни с предложениями регулярно долбятся, хотя я уже полтора года резюме не открывал. Причем частенько хрюни из достаточно крупных компаний (Озон, Яндекс, Тинькофф и т.д.) или кипрские галеры. Так что работа на .net есть. Другое дело, что июни сейчас особо никому не нужны.
Аноним 19/11/23 Вск 14:47:20 2928144 267
Как жить, если ты впф разработчик? На асп возьмут только джуном, падение доходов минимум вдвое, да и для этого нужно будет рвать жопу и учить жс с реактом после работы и по выходным.
Аноним 19/11/23 Вск 14:49:17 2928147 268
>>2928144
Мммм. Продолжать писать десктоп на впф?
Аноним 19/11/23 Вск 14:50:52 2928149 269
>>2928147
Хочу сытые сотыгы, они только в асп
Аноним 19/11/23 Вск 15:36:57 2928245 270
>>2928144
Ну, у тебя два варианта.
Либо ты дальше сидишь-пердишь на WPF на прежнем месте ещё лет 5, и в случае увольнения охуеваешь, что вакансий на WPF особо и нет, а те что есть - кудлатое легаси за копейки. По итогу, так как иначе, придёшь к мысли, что надо учить ASP .Net и выкатываться на бэк.
Либо берешь яйца в руки и начинаешь учить ASP .Net прямо сейчас. Причем жсопарашу можно и не учить. Есть вакансии на ASP .Net, где ты будешь чистым бэкенд разрабом. (Я к примеру сейчас даже к HTTP почти не прикасаюсь. У нас все взаимодействие между сервисами через GRPC и кафку. HTTP только на apigw, чтобы с фронтом общаться).
В принципе, если подучишь ASP Net, SQL и архитектуру, то сможешь попытаться и на Мидлла скатиться, особенно если с софтами все хорошо. Я в свое время вообще с UWP-ждуна перекатится на ASP-мидла. (Правда у меня был опыт в веб-разработке, но не на C#).
Аноним 19/11/23 Вск 15:49:18 2928278 271
>>2928102
Опять жависты насрали в мои портки...
Аноним 19/11/23 Вск 15:54:37 2928290 272
>>2928278
Хедхантер же на джаве, вот они и скручивают лайки вакансии на шарфик.
Аноним 19/11/23 Вск 15:58:19 2928305 273
>>2928290
Ну вот хх на жабе, а какие реальные проекты на сишорпе?
Аноним 19/11/23 Вск 16:02:24 2928315 274
>>2928305
Только самые хорошие...
Аноним 19/11/23 Вск 16:15:14 2928361 275
>>2928305
Из прям известных - Stackoverflow и его побратимы (Server Fault, Super User)
Аноним 19/11/23 Вск 16:20:35 2928370 276
Аноним 19/11/23 Вск 16:26:37 2928377 277
>>2928361
Посмотрел кстати, у них html-ка на сервере рендерится. И кто после такого говорит, что SSR плох? На сайте-то не 2 человека сидят.
Аноним 19/11/23 Вск 16:30:19 2928387 278
>>2928377
Ты прикинь какой ебичкой мощности сервера нужны, чтобы это работало. А обычным кабанам нужно чтобы девшего и сердито было...
Аноним 19/11/23 Вск 16:31:36 2928391 279
>>2928387
>А обычным кабанам нужно чтобы девшего и сердито было...
И C# сюда не подходит сразу же, удивительно да? Легче ведь пыховода нанять, чтобы он наговнял быстренько.
Аноним 19/11/23 Вск 16:35:05 2928397 280
>>2928391
Наговнякать не трудно и на шарпах, чел...
Аноним 19/11/23 Вск 17:24:36 2928474 281
>>2928397
Кринж же, чел...........
Аноним 19/11/23 Вск 17:32:24 2928482 282
Аноним 19/11/23 Вск 18:59:23 2928604 283
>>2927516
а путь от Михаила Флёнова норм?
Аноним 19/11/23 Вск 19:00:15 2928606 284
>>2927516
нет... не пробовал.
но знаю как это трудно. ведь уметь надо все. либо на аутсорсе собирать по фрагментам, платя кому то денежку.
Аноним 19/11/23 Вск 19:10:57 2928629 285
.png 30Кб, 804x844
804x844
>>2927499
> мечтал всегда игори делать
А чо не дела-то? Хотя бы ту же змейку.
> я хз какой проект придумать, чтобы и в будущей игре сгодилось и никто не заподозрил, что это будет ФУРРИ игра
Делай свою систему для менеджмента проектами с историей версий, изменениями, правами доступа и т.д.
Такая-то джира+гит для ассетов и доков в одном флаконе. Это реально полезная хуйня в геймдеве была бы, потому что те же модельки-текстурки художник проебал, и хуй как восстановишь, а если в гит лить - то в контексте не кода - нихуя не понятно, а что изменили, как найти ту версию, что нужна и прочее. Вот если бы кто-то сделал аналог гитовских инструментов для вот этой всей хуйни - это был бы реально полезный проект, а вся хуйня с менеджментом - до кучи, чтобы все с каробки.
Аноним 19/11/23 Вск 19:50:29 2928709 286
image.png 48Кб, 594x773
594x773
>>2928087
>Это шутка или
Нет это ты или зеленый или дурачок.
Аноним 19/11/23 Вск 19:56:55 2928727 287
>>2928629
интересно. записал в блокнот.
Аноним 19/11/23 Вск 20:33:30 2928784 288
Вопрос работягам, вы пытаетесь в перфоманс на работе? Ну типо написали вы какой то код. Работает. Будите его оптимизировать или похуй, если попросят только тогда оптимизировать?
Аноним 19/11/23 Вск 20:42:02 2928798 289
>>2928784
На реальных задач редко есть пространство для перформанса.
Это только на мелком пет проекте или там, где ты хотя бы половину всего кода контроллируешь, возможно.
Аноним 19/11/23 Вск 20:47:48 2928809 290
>>2928784
В основном стараюсь делать упор на удобство будущей поддержки кода.
В перформанс очень редко. Только если с НТ приходит весть, что возможны выходы за SLA, тогда разбираюсь с ними где узкие места и там правлю.
Аноним 19/11/23 Вск 21:01:59 2928841 291
>>2928784
Обычно я пытаюсь в перформанс, который дёшево стоит и не сильно влияет на читаемость кода. Типа использования правильных типов коллекций, минимизация походов в базу/внешние сервисы и т.д. Ну и на планы SQL-запросов просматриваю, когда код, работающий с базой пишу.
Специально улучшением производительности кода редко заниматься приходится. Да и опять же, обычно все в оптимизацию запросов к базе упирается. Но иногда все же приходится, особенно если инфраструктурные штуки пилишь. У нас есть парочка таких (своя обёртка над Confluent Kafka и люто оптимизированный по памяти парсер экселей).
Аноним 19/11/23 Вск 21:19:36 2928871 292
>>2928784
Мой алгоритм такой:
Сделать фичу
Потестировать труками
Покрыть тестами сверху
Если были ошибки - исправить
Отрефакторить чтобы менее говняно смотрелось
Отправить на ревью

Перформансом я буду заниматься, только если придет фидбек, что что-то там медленно.


Почему я так делаю? Потому что на самом деле - оказывается вот так, что 95% кода - перформанса с тупым решением в лоб достататочно. И если я буду тратить время, чтобы оптимизировать все и вся - я фичи, которые нужны заказчику - сделать не успею, либо хуево потещу, либо я хуево напишу, что через год - не пойму, что эта хуйня вообще делает. В результате - на выигрышь в перформансе - всем буквально будет насрать. В результате - мне будут ебать мозги, лишат премии, и прочая хуйня. Вот и на кой оно мне надо?
Аноним 19/11/23 Вск 22:39:57 2929022 293
БАМП НАХУЙ, НАНОСЕКИ ЕБАНЫЕ ХОТЬ ОДИН ОТВЕТ БУДЕТ? >>2926646
Аноним 19/11/23 Вск 22:52:15 2929048 294
>>2929022
Саааааси хуууй, сааааси. Соси соси соси. Ты тупой тупой, долбоееееб.
Аноним 20/11/23 Пнд 00:03:26 2929116 295
image.png 43Кб, 947x340
947x340
>>2927491
>>2927449
С индексами быстрее но не быстрее чем с файлами(
Аноним 20/11/23 Пнд 00:17:36 2929124 296
x.jpg 121Кб, 1024x1280
1024x1280
Всем привет! Сегодня я понял, что мне нужно изучить C#.
Ну как изучить, хотя бы понять на любительском уровне.
Посоветуйте книжку/pdf/сайт, чтобы примерно понять основы.
До этого в основном верстал-дристал фронтенд.
Аноним 20/11/23 Пнд 00:20:45 2929127 297
image.png 20Кб, 845x144
845x144
Hello Ana!
Как-то не так вначале прочиталось...

Metanit - норм сайт? Вроде висит в шапке.
Аноним 20/11/23 Пнд 00:22:10 2929131 298
>>2929124
>>2929124
Метанит или MSDN
Или какой нибудь ебантяй с ютуба, если вода нравится конечно.
Аноним 20/11/23 Пнд 00:24:03 2929133 299
>>2929131
Рихтера имеет смысл читать?
Аноним 20/11/23 Пнд 00:28:21 2929134 300
>>2929133
Может быть потом.
С начала просто выучи синтаксис, Рихрет тот пиздец нудный.
Но ты начни читать и посмотри как пойдет. Главное научится учится.
Аноним 20/11/23 Пнд 00:29:26 2929137 301
>>2929134
Я мимо, надо было дописать. У меня есть опыт на сях и других языках эзотерических, так что с синтаксисом проблем не будет, кишочки интересны.
Аноним 20/11/23 Пнд 00:32:09 2929138 302
>>2929133
Я пробовал. 100-200 стр прочитал кажись. Вроде оно понятно, о чем пишет, последовательно. Потом какая-то useless материя началась. Запоминать это бесполезно, без того, чтобы применять. А применять ты не можешь, т.к. не можешь даже одну минуту писать код без подглядывания в туториал или ютуб-курс.

В итоге, щитаю, что Рихтера стоит читать после года практики. В лучшем случае 6 мес.

мимо вкатывальщик
Аноним 20/11/23 Пнд 00:35:01 2929142 303
>>2929131
Окей, спасибо. Да уж лучше читать, чем смотреть.
Аноним 20/11/23 Пнд 01:34:07 2929163 304
image.png 16Кб, 977x140
977x140
Согласны?
Если у меня на сайте нет страницы и моё asp net core выдает 404 ошибку то это хуево? Должна быть страница 404 а код от Nginx ОК?
Аноним 20/11/23 Пнд 01:56:32 2929167 305
.png 49Кб, 1563x205
1563x205
>>2929163
Согласен, только шарп тут при чём?
Аноним 20/11/23 Пнд 04:00:58 2929179 306
>>2928377
Он просто древний, тогда SPA ещё не вошли в моду.
Аноним 20/11/23 Пнд 04:17:34 2929180 307
Аноним 20/11/23 Пнд 08:41:34 2929207 308
Тред тупых хуесосов.
Аноним 20/11/23 Пнд 16:19:33 2929709 309
>>2929163
ДВУХСОТКА-ДОДИК ЗАКАЗАЛ СЕБЕ ДОДОПИЦЦУ
@
ПИЦЦУ ПРИНЕСЛИ, НА КОРОБКЕ ФИРМЕННАЯ НАКЛЕЙКА "Я ПРОВЕРИЛ, ВСЁ ХОРОШО"
@
ДВУХСОТКАДОДИК ОТКРЫЛ КОРОБКУ, А ТАМ ГОВНО
@
В ГОВНЕ ТОРЧИТ ЗАПИСОЧКА "409 MESYA4NII BALANS NE SWEDEN"
@
ОХУЕВШИЙ ЗВОНИТ В ПОДДЕРЖКУ
@
НУ ВЫ ЖЕ ПОНИМАЕТЕ, ЧТО НАКЛЕЙКА ОТНОСИТСЯ ТОЛЬКО К ВНЕШНЕМУ ВИДУ КОРОБКИ
@
МЫ ЖЕ НЕ МОЖЕМ СМЕШИВАТЬ КУЛИНАРНЫЙ, УПАКОВОЧНЫЙ И ДОСТАВОЧНЫЙ ПРОТОКОЛЫ
@
ГОВНО В КОРОБКЕ ЗАКЕШИРОВАЛОСЬ
@
ТЕПЕРЬ ДАЖЕ ПРИ ОТДАЧЕ ПИЦЦЫ В ПИЦЦЕРИИ ДВУХСОТКА-ДОДИКУ БУДЕТ ПРИЕЗЖАТЬ ГОВНО В КОРОБКЕ БЛИЖАЙШИЕ 4 ЧАСА
Аноним 20/11/23 Пнд 16:27:46 2929731 310
Стоит ли юзать blazor?
Аноним 20/11/23 Пнд 16:33:20 2929753 311
>>2928377
> у них html-ка на сервере рендерится. И кто после такого говорит, что SSR плох?
Забавно это слышать на форуме со статичным рендером html-ек.
Аноним 20/11/23 Пнд 16:45:29 2929780 312
>>2929753
Эм нет, тут JSON'ы гоняются. По крайней мере 1 раз да, ответ от сервера с готовой страничкой, потом - нет.
Аноним 20/11/23 Пнд 16:54:10 2929795 313
>>2929780
Почему тогда лайки в ньюсаче обновляются только после появления новых постов на странице?
Аноним 20/11/23 Пнд 17:07:03 2929824 314
>>2929709
поэтому при ошибке не нужно слать 200 (вроде бы ты как бы хттп протокол за это и ратует - не просто так там есть огромный пул ошибок)
но это не значит что нужно героически все коды натягивать на хттп
послал не 200 - а внутри суть. И никакого кеширования не будет
и где теперь твоя пицца с говном?

а 404 это "нет пиццы" или "пиццерии нет нахуй"? как отличишь?
Аноним 20/11/23 Пнд 17:15:15 2929837 315
image.png 2Кб, 197x78
197x78
>>2929795
Не ебу. Ты можешь зайти сам в запросы и понажимать на кнопку обновить, увидишь JSON'чики с постами.
Аноним 20/11/23 Пнд 18:03:28 2929919 316
Приветствую. Возникла необходимость под Desktop организовать приложение с возможностью DockManager'а -- перетаскивать окна, как по типу Visual Studio. Есть ли какие-то альтернативы платных, чтобы +\- поддержка была (обновление не позднее трех лет)? Я наткнулся на AvalonDock -- пока есть сомнения в возможностях работы, под netcore3.0 не билдится даже (знаком с WPF от силы месяца 2, возможно руки из задницы). Есть мысли?
Аноним 20/11/23 Пнд 18:05:33 2929923 317
>>2929919
Вдовесок. Вообще странное впечатление возникло, что под шиндовс нет нормального докменеджера, открытого, как в вижле. Задача в проде (так что тут смотрят на лицензию).
Аноним 20/11/23 Пнд 18:08:21 2929931 318
>>2929923
Задача сама по себе всратая -- нужны панели эти для графиков. Количество графиков -- ограничено памятью пк. Из возможных приглянулся ScottPlot с поддержкой ускорения. Эмпирически выбрал его по результатам.
Аноним 20/11/23 Пнд 18:47:17 2929992 319
>>2929837
Ну значит просто обезьяна тупорылая сделала хуйню. В любом случае такая проблема тем более была бы и на статических хтмлках, в этом случае даже и без тупости обезьяны.
Аноним 20/11/23 Пнд 18:51:53 2930003 320
>>2929992
Ну тем не менее благодаря этой "хуйне" существуют кастомные клиенты двача. Отдавалась бы статика - хуй пососали бы.
Аноним 20/11/23 Пнд 19:12:15 2930050 321
>>2929824
>"пиццерии нет нахуй"?
Это уже на 500 (ну или 503) тянет.
А вообще нехуй угадайкой заниматься в стиле "у нас тут свой REST. А у нас свой". Нужно спеки на апи нормальные составлять, со всеми вариантами ответов и разрешением неоднозначностей, тогда и похуй будет, что там 'классика' или 'always 200'.
Аноним 20/11/23 Пнд 19:14:04 2930057 322
>>2930003
вот только эти жсоны - такая же статика. Никакой там динамики нет.
что полный хтмл, что полный жсон - перегенеривается при посте. А дальше уже сам сервер отдает статику всем желающим с экономией на трафике путем хидеров хттп на тему If-Modified-Since

>>2930050
каких 500
500 это если пиццерия жива и у нее проблемы. Пиццерия сгорела, запрос никуда не сроутился и отдал 404
А клиент думает что это пиццерия ответила.
Аноним 20/11/23 Пнд 19:25:49 2930076 323
>>2930057
>>2929824
>>2930050
Да какая нахуй пиццерия? Вы совсем со своими аналогиями ебанулись.
В РЕСТЕ 90% запросов это дай мне сущность по id. Тут вообще никаких нет разночтений, 404 — это нет искомой сущности.
Аноним 20/11/23 Пнд 19:29:23 2930085 324
>>2930076
А я вот посчитал, что id низя отдавать клиентам, мол это сделает его натуральным ключом... И ввел в кортежах столбец name/number. Насколько я еблан?
Аноним 20/11/23 Пнд 19:30:31 2930087 325
>>2930076
>404 — это нет искомой сущности.
ты мне тут лекции не читай, а на вопрос отвечай
нет искомой сущности - 404
что то временно случилось (косячный апдейт или жавист код писал) и запрос вообще не нашел адресата - 404

давай отличай одно отдругого
Аноним 20/11/23 Пнд 19:41:18 2930097 326
>>2930076
500 - нет искомой сущности
Аноним 20/11/23 Пнд 19:44:05 2930102 327
>>2930097
Вообще вот вам база
200 – запрос выполнен вот данные или ничего
500 – пизда иди нахуй вот тебе текст ошибки или "ошибка на стороне сервера пишите в ТП"
Все остальное пришлётся само тебе не надо.
Аноним 20/11/23 Пнд 19:58:30 2930125 328
>>2930085
на 79.3456%
тяжело было посчитать, но я справился.
Аноним 20/11/23 Пнд 20:00:35 2930131 329
>>2930003
Долбоёб, "хуйня" здесь не попытка в адекватный принцип работы сайта здорового человека, а обкуренное раковое обновление лайков при изменении содержания страницы.
Аноним 20/11/23 Пнд 20:02:58 2930139 330
>>2930087
А кто сказал, что различие должно быть именно в коде ответа?
Аноним 20/11/23 Пнд 20:04:56 2930142 331
Переписываю своё приложение Снова
Как мне переопределить папку wwwroot для каждого сайта.
Поясню.
Моё asp net core приложение обслуживаетили как правильно сказать? N сайтов.
Логику сильно расписывать не буду в вкратце вот так:
Nginx пересылает абсолютно все запросы server_name _; на proxy_pass http://localhost:5000;
В зависимости на какой домен пришел запрос приложение уже рулит.
А именно берет страничку немного её модифицирует и отдает.
Дело в том что сайты висят каждый на своём html шаблоне. Шаблоны и сайты могут добавлятся.
И сейчас все статичные файлы лежат просто в wwwroot. Проблема в том что на шаблонах есть файлы с одинаковыми именами. Например style.css, можно переименовать файлы, можно создавать папку на каждый сайт типо
wwwroot/site1/ и брать файлы от туда. Но тогда в исходном коде страницы будет видно что файлы берутся не из корня типо вот так <link href="/static/css/default.css?cache=7" title="makaba" type="text/css" rel="stylesheet">
а Как то так
<link href="/nameSite/static/css/default.css?cache=7" title="makaba" type="text/css" rel="stylesheet">
Хотелось бы этого избежать.
В какую сторону попать?
Вот пока писал мб в Nginx сделать еще один роут который бы все статичные файлы отдавал с
/var/www/coreapp/wwwroot/$host/
Но тоже хз
Подсабите плэз
ps это не mvc так как там html шаблон вшит и я не могу его на лету менять и редактировать.
Аноним 20/11/23 Пнд 20:04:59 2930144 332
>>2930139
ты ответил вопросом на вопрос
ясно все с тобой.
Аноним 20/11/23 Пнд 20:11:31 2930157 333
>>2930125
А можно теперь расписать причины этого заключения?
Аноним 20/11/23 Пнд 20:18:20 2930167 334
>>2930157
ну я глянул на чела который имеет уже счетчик уникальных номеров (и при этом у него ж вряд ли firebird, где его нужно отдельно заводить), а он сам считает, небось и сам за уникальностью следит

и вроде бы у него не как на ютубе - то есть псевдослучайные айди которые мешают парсинг перебором

и не нужны ему глобальные айди типа гуидников.

и думаю...нууу чел просто пиздец

а дальше все просто
пи - это 3.14 * взял числа от букв 'з' 'д' 'е' 'ц', далее бухнул и там сложная формула не помню уже, главное что результат успел записать
и тебе сообщил.
Аноним 20/11/23 Пнд 20:22:44 2930172 335
>>2930167
Так, только бить не начинай, для уникальности я завел по табличке и sequential для каждого id там. Таким образом генерация будет на стороне бд и связь one-to-one с столбцом name/number.
Аноним 20/11/23 Пнд 20:24:12 2930173 336
>>2930142
вот что бывает когда мультисайт делаешь не на пхп, который хоть и говно, но все же для мультисайтов уровня "на коленке" подходит лучше

ну а что ты сделаешь
ну разве что рерайт на уровне nginx чтобы он знал какой файл ему нужен. Может по рефереру (ненадежно), а может по ключу что ты после ? пишешь.
Аноним 20/11/23 Пнд 20:25:32 2930174 337
>>2930172
ну еще монгодб нужно прицепить и эластик. - туда эти намберы слать писать.
Аноним 20/11/23 Пнд 20:26:24 2930175 338
>>2930174
Блин, ну почему вы такие вредные... Тебя блинб прицеплю.
Аноним 20/11/23 Пнд 20:27:36 2930177 339
>>2930175
ему советы дают (и даже не посылают), а он недоволен
смотри так жавистом станешь и не заметишь. Берегись
Аноним 20/11/23 Пнд 20:30:45 2930179 340
>>2930177
>смотри так жавистом станешь
Ты не поверишь...
>и даже не посылают
Я же няша, за что меня посылать?
Аноним 20/11/23 Пнд 20:33:03 2930182 341
>>2930173
>Может по рефереру (ненадежно), а может по ключу что ты после ? пишешь.
Это как? По какому ключу?
Вобще с файлами не проблема, просто не удобство.
Аноним 20/11/23 Пнд 20:36:54 2930187 342
Аноним 20/11/23 Пнд 20:49:10 2930198 343
>>2930087
> что то временно случилось (косячный апдейт или жавист код писал) и запрос вообще не нашел адресата - 404
Я на любую схему api могу придумать баг, который будет выглядеть как какой-то ожидаемый ответ, а означать совсем другое, так что твой аргумент инвалид.

Кстати, в том же ASP.NET, если у тебя несуществующий url, то тебе не веб-сервер 404 возвращает, а фреймворк. Это кошерно или уже нет? Ладно, в IIS можно настроить хендлер, который эти 404 в 200 преобразует и напишет route not found в боди. А если это Kestrel?

>>2930102
> Все остальное пришлётся само тебе не надо.
Not authorized мне тоже веб-сервер пришлёт? Там это в лучшем случае на статику можно настроить.
А если у меня SSR, и надо редирект после пост-запроса делать, мне тоже это надо на ajax переписывать и руками редиректить?
Вообще существующие веб-серверы хорошо если треть имеющихся кодов умеют присылать. А остальные коды, что, не нужны?
Аноним 20/11/23 Пнд 20:52:02 2930201 344
Пацаны. В общем. Вдохновился я статьей, про то что надо переосмыслить подход к структуре проекта.
Сделал в общем так:

org.Project.csproj
Program.cs
Module1
--Modile1Installer.cs
--Endpoints
----Endpoint1.cs
----Endpoint2.cs
--Models
----Model1.cs
----Model2.cs
--...
Module1

Ну. Собственно. Выглядело на бумаге - ок.

Но оказывается - MinimalApi - не умеет в XML. Вот просто охуеть. И вся эта охуитительная структура - теперь идет нахуй.
Как так-то? Почему так?
Коуда писать?
Кому звонить?
Не хочу в эндпоитны HTTP-совать и XML'ки доставать из тела руками.
Аноним 20/11/23 Пнд 21:10:36 2930243 345
>>2930198
>Not authorized мне тоже веб-сервер пришлёт? Там это в лучшем случае на статику можно настроить
Пришлет дотНЕТ и без твоего участия. В продуктовой сборке он ещё и любые исключения вернет как 500.
Я про то что руками прям обычно 200 и 500 кидают, все остальное в дотНЕТ за тебя вышлет сам фреймворк, что кошэрно и удобно и шлёт он довольно точные коды.

Мне вообще нравится писать бэк на С# только из-за фреймворка который позволяет не ебаться и просто довериться ему сосредочив свои мысли не на кодах ответа, а на написании бизнес кода.
Аноним 20/11/23 Пнд 21:16:06 2930249 346
>>2930182
Ну ты ж добавил ?cache=7
Что мешает добавить туда любой флаг для нгинх
Аноним 20/11/23 Пнд 21:19:28 2930260 347
>>2930249
Это код с двача для примера
У меня просто ссылка на css
Аноним 20/11/23 Пнд 21:21:10 2930264 348
>>2930260
Ну так добавь подобный флаг
А вообще КОМУ НЕ НАСРАТЬ на путь к css
Находишь проблему на ровном месте
Аноним 20/11/23 Пнд 21:23:20 2930273 349
>>2930243
Но ведь фреймворк не веб-сервер, он не должен коды возвращать.

Ну и ты ещё половину моего поста проигнорировал.
Аноним 20/11/23 Пнд 21:24:06 2930275 350
>>2930264
Мб гугл боту не насрать и он просечет что все мои сайты на одном приложении крутятся. Ну он по любому рано или поздно просечет, но я старюсь их делать максимально не похожими.

Ну и если флаг добавлять то я тогда ваще хуй знает как сделать, как назвать файл что бы по флагу его взяло)
Аноним 20/11/23 Пнд 21:26:15 2930282 351
>>2930273
Если тебе нужен редирект верни в ответ Redirect()

Ты никогда на С# не писал или че за тупые вопросы как писать банальные вещи?
Аноним 20/11/23 Пнд 21:35:43 2930300 352
>>2930282
Я знаю как всё писать, спасибо. Я и NoFound() могу вернуть, только вот NotFound по-твоему почему-то нельзя, а Redirect можно, и [Authorize] можно, и даже свой фильтр прикрутить можно, хотя во всех этих случаях код ответа будет возвращать не веб сервер, что по твоей идеологии является табу.
Аноним 20/11/23 Пнд 21:50:46 2930319 353
>>2930275
делать ему больше нехер. его больше волнует что они на одном айпи и похожи по сути.
Аноним 20/11/23 Пнд 21:53:10 2930323 354
>>2930319
Ну ип прячется за cloudflare а шаблоны нужны что бы они хоть как то отличались)
Аноним 20/11/23 Пнд 22:08:32 2930339 355
>>2930323
тогда похапэ тебе поможет
а на деле просто заведи флаги хоть рэндомный набор букв. какая разница
Аноним 20/11/23 Пнд 22:30:50 2930361 356
>>2930142
Ваша задача - настроить ASP.NET Core приложение так, чтобы оно обслуживало несколько сайтов, каждый из которых имеет свою папку `wwwroot`. Для решения этой задачи есть несколько подходов:

### 1. Использование Middleware для Переопределения `wwwroot`

Вы можете использовать middleware в ASP.NET Core для динамического определения папки `wwwroot` в зависимости от запрашиваемого домена. Примерно так:

1. Создайте middleware, который анализирует запрашиваемый домен и на основе этого устанавливает нужный путь к статическим файлам.
2. В middleware используйте `IWebHostEnvironment` для установки нового пути к `wwwroot`.
3. Убедитесь, что этот middleware добавлен в начале конвейера обработки запросов, чтобы он выполнялся перед обработкой статических файлов.

### 2. Настройка Nginx

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

1. Настройте блок сервера в Nginx для каждого домена.
2. В каждом блоке укажите разные корневые папки для статических файлов.
3. Убедитесь, что запросы на статические файлы не перенаправляются на ваше ASP.NET Core приложение.

### 3. Использование Поддоменов

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

### 4. Использование Virtual File Providers

ASP.NET Core поддерживает Virtual File Providers, которые позволяют вам определять виртуальные пути к файлам. Вы можете настроить отдельные виртуальные пути для каждого сайта и использовать их для обслуживания статических файлов.

### Важные Моменты:

- Производительность: Если вы решите обрабатывать статические файлы через ваше ASP.NET Core приложение, это может повлиять на производительность. Обычно лучше, чтобы Nginx обрабатывал статические файлы.
- Безопасность: Убедитесь, что ваше решение не создает уязвимостей в безопасности, особенно если оно включает динамическое формирование путей к файлам.
- Тестирование: Тщательно протестируйте вашу конфигурацию в разных сценариях, чтобы убедиться, что все работает корректно.

Выбор метода зависит от вашего конкретного случая, ваших требований к производительности, безопасности и легкости поддержки.
Аноним 20/11/23 Пнд 22:37:12 2930367 357
>>2930361
>
>
Спасибо на чат жпт не может в задачи сложнее чем hello world.
Ответ типо ну сделай хорошо и будет хорошо.
Аноним 20/11/23 Пнд 22:38:12 2930371 358
>>2930367
Но он прав насчет пункта 2
И вопрос будет решеш
Аноним 20/11/23 Пнд 22:40:55 2930374 359
>>2930371
У меня доменов несколько сотен и каждый день какие то удаляются а какие то прибавляются.
Аноним 20/11/23 Пнд 22:50:44 2930376 360
>>2930374
И что. Заведи кота.

Или найди способ не ребутать асп, питон, руби....
Или возьми похапэ где такой проблемы нет и страдай
Аноним 20/11/23 Пнд 22:55:45 2930378 361
>>2930367
ну а что ты хотел. Сам все нагадил и у нас ответы просишь
я на тебя целый вопрос потратил, а у гпт лимит 50 на 3 часа
Аноним 20/11/23 Пнд 22:56:38 2930380 362
>>2930378
зачем тратить время гпт, когда тебя и так тут могут послать куда хочешь?
Аноним 20/11/23 Пнд 23:16:26 2930396 363
>>2930380
когда тебя и так тут могут послать куда хочешь?
Гпт не пошлет, а максимально будет пытаться помочь. Покат лимит не закончится
Аноним 20/11/23 Пнд 23:25:14 2930401 364
>>2930396
Мы пошлем. Без регистрации и смс. И даже куда не хочешь

А вообще это деградация. Молодежь не умеет гуглить,ей нужен чат
Аноним 20/11/23 Пнд 23:29:18 2930404 365
>>2930401
жпт норм когда нужно накидать что то мелкое.
А для сложного кода нужно его пиздец как четко описать. Но если я его четко опишу то я сам по такому описанию смогу написать и нахуй тот жпт.

Пример.
Даем жпт код и просим написать подробное описание кода, описать каждую строку все подробно.
Он пишет портянку.
Эту портянку вставляем в новый чат и просим написать код по этому описанию
Он пишет практический такой же код
Кажется нихуя себе какой умный. Но бля по такому описанию я сам смогу написать код. А что бы составить такое описание нужен сам код.
Аноним 21/11/23 Втр 09:03:14 2930486 366
Аноним 21/11/23 Втр 09:03:42 2930487 367
Аноним 21/11/23 Втр 09:58:12 2930524 368
>>2930404
>Он пишет практический такой же код
>практический такой же
Вот в этом "почти" и кроется, кстати, основная анальная жопа взаимодействия с ИИ. Сначала это чуть-чуть "практически" то же самое, потом какие-то вариации, а потом на похуях что-нибудь вроде "define true = false" (утрирую) и еще и будет уверен в правильности своего решения. И хуй ты разберешь его галлюцинации среди тысяч строк кода.
Аноним 21/11/23 Втр 10:19:38 2930538 369
Как fauxpilot подключить к Visual Studio 2022? Ну и ли вообще к любой студии, а не к VSCode
Аноним 21/11/23 Втр 12:30:11 2930720 370
>>2930486
да. ТВОЙ слив.
принимаю.
Аноним 21/11/23 Втр 12:31:51 2930723 371
Аноним 21/11/23 Втр 14:51:39 2930999 372
Вопрос про .NET Framework: насколько сильно включенная трассировка (я про Trace.axd на IIS) влияет на производительность? Я ньюфаг, не бейте
Аноним 21/11/23 Втр 14:59:02 2931018 373
>>2930487
Слил тебе защеку, учись мысли выражать, "хуйня".
Аноним 21/11/23 Втр 15:11:23 2931057 374
>>2931018
Не ворочайся, слитое.
Аноним 21/11/23 Втр 15:25:01 2931085 375
>>2927499
>что это будет ФУРРИ игра. я чувствую себя человеком, но люблю заверотянок очень, типа акул,
Так, убирайся обратно в b или оставайся
Аноним 21/11/23 Втр 15:35:33 2931105 376
>>2925024
Ты на хуй, мудозвон, ссылки в спойлер прячешь? Чтобы я, кликая по ним, выкатился из треда?
Аноним 21/11/23 Втр 15:37:31 2931109 377
Аноним 21/11/23 Втр 16:08:35 2931179 378
Опять жавист в треде обтекает. Его обсыкают, а он обтекает. Странное у него хобби.

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

Вообще даже голубя можно научить писать скрипты и формочки лепить.

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

Аноним 21/11/23 Втр 18:32:44 2931415 379
Аноним 21/11/23 Втр 19:48:52 2931499 380
.jpg 181Кб, 630x840
630x840
Хм.
Хм.
Все же.
Не знаете че надо сделать, чтобы MinimalApi научить работать с XML в контексте получения в теле запроса документа определенного формата?
Типа чтобы контроллеры так умели - просто делаю: AddXmlSerializerFormatters(). А вот че делать в MinimalApi - не знаю.
Аноним 21/11/23 Втр 20:13:47 2931537 381
Просто напомню, что если у вас есть публичные свойства и методы, которые не представлены в интерфейсе, то вы пишите говнокод.
Аноним 21/11/23 Втр 20:31:04 2931579 382
>>2931537
ДТО и энтити вышли из чата.
Аноним 21/11/23 Втр 20:44:42 2931602 383
>>2931537
Просто напомню, что интерфейсы - не нужны в нормальных языках, и это просто костыль.
Аноним 21/11/23 Втр 21:01:52 2931621 384
>>2931602
Ну хочешь писать классы из одних методов пиши.
Ты какие альтернативы видишь разделения наследования поведения и реализации? Множественное наследование классов?
Аноним 21/11/23 Втр 21:08:20 2931627 385
Профессионалы, а что думаете о последнем видосе Бороды?
Где он на панике рассказывает, что у программирования осталось в лучшем случае 3-5 лет.

Предположения и рассуждения имхо вполне логичны. Выглядит так, что вкатываться поздно. Верней, вкатываться не получится в принципе.
Просто ИИ отрегулирует рынок так, что количество программеров уже близко к насыщению и дальше программистами будут становиться только самые талантливые и трудолюбивые люди. Т.е. условно 2% от всех вкатунов. Просто потому, что они с помощью ИИ смогут выполнять весь объем работ, на который нужны были все эти 98%.

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

https://www.youtube.com/watch?v=p9wBNOJH59Q&ab_channel=%D0%90%D0%B9%D0%A2%D0%B8%D0%91%D0%BE%D1%80%D0%BE%D0%B4%D0%B0

или обсуждали уже?
Аноним 21/11/23 Втр 21:12:30 2931636 386
>>2931627
Да. На жопоголизме тоже можно заработать.
Аноним 21/11/23 Втр 21:13:40 2931642 387
>>2931627
> ИИ
Дальше не читал.
Аноним 21/11/23 Втр 21:25:03 2931662 388
>>2931537
Чушь собачья. Чел вообще не разбирается в вопросе
Аноним 21/11/23 Втр 21:25:19 2931664 389
image 175Кб, 1492x1102
1492x1102
>>2931627
А почему бухгалтеров до сих пор не заменил ни excel, ни 1С?
Аноним 21/11/23 Втр 21:26:20 2931668 390
>>2931621
Да это фпшник. У них нет внедрения зависимостей, поэтому в каждую функцию приходится в виде параметров передавать либо другие функции на вызов, либо результат их вычисления.
Но так как в фп мокать функции сложно, поэтому функции передавать нельзя, значит их надо вызывать на уровень выше. А так как уровнем выше такая же функция, то всё приходится пропихивать до самого верхнего уровня.
В итоге никаких слоёв абстракций нет, а функция-точка входа, видимо, выглядит как портянка из вызова всего подряд.
Зато нет костылей-интерфейсов.
Аноним 21/11/23 Втр 21:29:22 2931676 391
>>2931085
ну мне делать там нехуй.
буду сюда иногда заходить.
Аноним 21/11/23 Втр 21:30:24 2931679 392
>>2931664
заебешься автоматизировать
но вполне возможно.
Аноним 21/11/23 Втр 21:31:26 2931684 393
Аноним 21/11/23 Втр 21:37:23 2931707 394
>>2931627
Я даже смотреть не хочу, это просто полная хуйня.
Я, когда код пишу, у меня подавляющая часть времени уходит на проектирование структуры классов, методов ит.д. Писать работающий код - это минимальная необходимая квалификация для джуна, и даже с этим ИИ не справляется. А ведь код ещё должен быть читаемый, поддерживаемый и тестируемый.
Я пару раз пытался попросить написать ИИ маленький участок, чтобы не тратить время на поиск нужных функций и их сигнатур в доках, и то он написал не то, что мне нужно. Мне проще загуглить, попасть на стековерфлоу, посмотреть несколько решений, комменты к ним, и выбрать наиболее оптимальное.

С написанием текстов у ИИ тоже плохо: попроси ИИ написать рассказ, он тебе выдаст текст без вменяемого последовательного сюжета. Не умеет ещё пока ИИ в нужный уровень абстракции.
Аноним 21/11/23 Втр 21:41:35 2931720 395
.png 57Кб, 738x450
738x450
>>2931621
Альтернативой вижу - то как сделано в TS. Опитсывается тип, во время компилятции - проверяется, что переданная хуйня - удовлетворят типу. Все.
На кой хуй нужно какой-то там интерфейс имелементировать, какую-то хуйню городить, потом сверху адептеры делать, адаптеры для адаптеров, потом - поняв что выглядит как говно - шлифануть фассадом.
Короче. Нахуй костыли.
Аноним 21/11/23 Втр 21:51:14 2931738 396
>>2931707
>на поиск нужных функций и их сигнатур в доках
Бедняжки, а ведь нормальные иде это делают по дефолту...
Аноним 21/11/23 Втр 21:52:58 2931743 397
>>2931668
Ты ведь никогда в фп не прогал?
Аноним 21/11/23 Втр 21:55:28 2931748 398
>>2931720
Причём тут вообще ООП? Тип ахуеть не встать, я на С++ тоже могу такое написать и мне даже не нужен для этого отдельный тип я в качестве параметра укажу указатель на функцию.
Аноним 21/11/23 Втр 22:06:56 2931768 399
>>2931748
Тоже не понимаю, при чем тут ООП.
Я просто напомнил, что интерфейсы - ненужный костыль.
Аноним 21/11/23 Втр 22:11:18 2931774 400
image.png 50Кб, 941x297
941x297
Аноним 21/11/23 Втр 22:13:20 2931776 401
>>2931768
Этот чел них не понимает
Аноним 21/11/23 Втр 22:14:22 2931778 402
image.png 61Кб, 1220x286
1220x286
Аноним 21/11/23 Втр 22:15:29 2931782 403
>>2931768
>Я просто напомнил, что интерфейсы - ненужный костыль
поэтому скинул фп код? ну заебись че молодец, как это относится к ООП и системам классов?
Аноним 21/11/23 Втр 22:17:47 2931786 404
image.png 78Кб, 192x330
192x330
>>2931707
>Я даже смотреть не хочу, это просто полная хуйня.

Дык время тичот. Я помню в 2005-07 в компьютерном классе в говно-шараге стояли говнокомпы. Пентиум 3, 667MHz. И это когда уже третий дум вышел и сталкер. Даж не помню для чего они там были, какой предмет по ним изучали. Наверное просто стояли на балансе, лол
От нехуй делать, кто-то притащил "Искуственный интеллект" на дискете! Оно даже со встроенным обучением было. Типа сам даешь ответ "оло-ло-ло" на вопрос "сколько ног у осьминога?" и он этот ответ потом подсовывает. Можно было даже вменяемый минидиалог получить на четыре-пять вопрос-ответов. Но в общем, это просто полная хуйня.
Прошло время, да целых 17 лет. Но производительность растет экспоненциально. И вот сейчас же никто особо не угарает над общением с чатом GPT, его всерьёз опасаются, с его помощью даже учатся (тем самым ставя себя в младшую роль) или зарабатывают реальные деньги.
И я тут соглашусь, что через 3-5 лет такого интенсива, GPT или что на их основе вырастет, это уже будет реально конкуренты. И в том числе на выдумывание абстракций, структур и т.д.
5 лет это очень мало. На хату возможно успеешь заработать, если на барбершопах экономить. А вот выйти программистом на пенсию уже не получится скорей всего.
Аноним 21/11/23 Втр 22:18:47 2931787 405
>>2931774
>>2931778
Динамик - не проверит тип того что я туда не единичку просто передал, няша.
А в командной разработке, к сожалению - часто нужно чтобы проверил, ведь если я - бог программирования, то вокруг меня много всяких странных челов, которые хотят попортить мое божественное творение, пихая всякую мерзость. Так что типы таки нужны. Но вот интерфейсы - нихуя.

>>2931782
Каким местом ты там ФП код увидел-то?
Чистейшее ООП, лул. Просто без всяких уродств с интерфейсами.
Аноним 21/11/23 Втр 22:19:13 2931789 406
>>2931720
Так ты на JS тоже самое мог написать. Причём класс Printer тут вообще лишний и без него будет все работать.
Аноним 21/11/23 Втр 22:20:20 2931791 407
>>2931789
Нужна проверка того что переданный объект имеет нужный метод с корректной сигнатурой. Потому и ТС.
JS - проглотит если я туда что угодно пихну.
Аноним 21/11/23 Втр 22:23:15 2931793 408
>>2931787
>Динамик - не проверит тип того что я туда не единичку просто передал, няша
Так в твоём коде тоже не будет проверок. TS проверяет это чисто линтером, можно убрать это поведение и будет как в обычном JS передавай че хочешь.

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

Ты блять принёс функциональный код я принёс его же. Ты мне принеси пожалуйста ООП код.
Аноним 21/11/23 Втр 22:43:53 2931841 409
>>2931793
он тебя не поймет.
он думает что если сигнатура подходит то все ок

и ему не пояснить что не ок - метод может быть переопределен, могут быть 2 интерфейса с одним именем метода и что в общем то нужно иметь возможность описать контракт чтобы классы знали чего от них ожидают - а это и есть собственно интерфейсы
Аноним 21/11/23 Втр 22:54:07 2931872 410
.png 68Кб, 422x615
422x615
>>2931793
> Ты блять принёс функциональный код я принёс его же
Надеюсь так ты доволен.

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

> И почему вообще работает переопределение методов в ООП, ну чисто на уровне памяти компьютера?
Я не понимаю к чему ты это спрашиваешь? В контексте того, что интерфейсы - просто костыль. Ну, допустим - знаю. И чо?

>>2931841
Ну. А теперь ты приведи мне реальный кейс, когда у тебя класс - должен реализовывать 2-3 одинаковых интерфейса, иметь разное поведение, и при этом это должен быть один и тот же класс.
Типа чел. Ну срсли.
Давай разберем. Вот код

class MySupperMegaDupperOneToRuleThemAllPrinter : IConsolePrinter, IFilePrinter, ILogPrinter {

public virtual void Print(string text){...}
public virtual void IConsolePrinter.Print(string text){...}
public virtual void IFilePrinter.Print(string text){...}
public virtual void ILogPrinter.Print(string text){...}
}

Приведи хоть один реальный кейс, где это не говнокод и вообще хорошо.

Все эти истории про контракты это конечно на бумаге - весело и прикрасно. Но тогда давай, объясняй мне, на кой хуй при том что интерфейсы - не костыль, в любом коде через пару итераций - появляется адаптер, адаптер адаптера, прокси, хуекси и прочая залупа. Ведь КОНТРАКТ. Че эт такое-то? КЛАСС ЕМУ НЕ УДОВЛЕТВОРЯЕТ. И потому - мы делаем поверх одного костыля - еще несколько, чтобы как-то оно ехало. Отличная идея. Просто 11/10. Чтобы не нужно было обфускатор гонять, а просто в коде из-за кучи ненужного говна - никто и так не разобрался.
Аноним 21/11/23 Втр 22:58:21 2931890 411
>>2931872
>2-3 одинаковых интерфейса
не одинаковых. интерфейсы разные. но у них может совпасть один метод.
и такое не редкость.
но придумывать примеры с потолка не хочу.

>где это не говнокод и вообще хорошо
ты сам придумал говно и хочешь чтобы я оправдал почему не говно. Впрочем ФАСАДНЫЙ класс может быть вполне и таким и не быть говном ибо он фасад.

>Ведь КОНТРАКТ. Че эт такое-то? КЛАСС ЕМУ НЕ УДОВЛЕТВОРЯЕТ
ну так удовлетвори. тебе ДАЛИ КОНТРАКТ и это твои проблемы кто его удовлетворит. Тебя никто не ограничивает в выборе кто же реализует контракт.
Аноним 21/11/23 Втр 23:10:12 2931935 412
>>2931499
>А вот че делать в MinimalApi - не знаю.
Ничего. Минимал-апи - это хуйня для быстрого прототипирования, чтобы, когда нужно, по фасту накидать говнокода, проверить концепцию и пойти делать нормально.
Аноним 21/11/23 Втр 23:14:51 2931954 413
.png 70Кб, 519x608
519x608
>>2931890
> но у них может совпасть один метод.
В типах TS - нужно чтобы не только один метод совпадал. Если у тебя совпадает только один метод - а в остальном типы разные, то это разные типы и TS - пошлет нахуй. А если твой объект - полностью подходит под этот тип - то с фига он контракту-то не соответствует?

> Впрочем ФАСАДНЫЙ класс может быть вполне и таким и не быть говном ибо он фасад
Фассад, который каким-то интерфейсам удовлетворяет - это 99% говнокод.
Фассад - нужен только в случаях, если мы хотим скрыть сложность. Если ты делаешь фассад под интерфейсы - это говно какое-то.


> ну так удовлетвори. тебе ДАЛИ КОНТРАКТ и это твои проблемы кто его удовлетворит. Тебя никто не ограничивает в выборе кто же реализует контракт.

Так и в чем тогда смысл-то, лол?
Ну вот:

// лежит в чужой библиотеке
class A { public void print(string str) { Console.WriteLine(str); }}

// лежит в нашей библиотеке
Interface B { public void print(string str); }
class MyClass { void DoSome(string str, B b) { b.print(b); }

// теперь я просто с какого-то хуя должен делдать вот эту залупу
// хотя она нахуй не нужна, но я буду это делать, потому что - ну, надо
// проигрывая в скорости, проигрывая в памяти, зато интерфейс реализовал
public class AtoB : B {
private A _a;
public(A a) => _a = a;
public void print(string str) { _a.print(str); }
}


В тс - такой проблемы в принципе не возникнет никогда.

Ну да ладно. Видимо магический интерфейс - это что-то, что вам прям душу греет. Чувствуете себя в безопасности. Если для вас - костыли - это заебись. Ну, хули. Мне спорить не оч хочется.
Аноним 21/11/23 Втр 23:24:44 2931968 414
>>2931954
Зачем тебе в этом примере вообще TS? Потому что он обеспечивает чисто проверку типов аля синтаксис кода?
Перепиши это на JS и у тебя не будет ошибок.

TS не имеет никакой системы типов, это просто синтаксисический сахар
Аноним 21/11/23 Втр 23:25:03 2931969 415
>>2931954
причем тут блин типы
у 2х интерфейсов может быть один совпадающий по сигнатуре метод. и в классе он конечно имеет 2 реализации, но ОДИНАКОВЫЕ по сигнатуре
какой из них будет выбирать твой тс блин
и вообще что ты пришел с тс - это транслятор в жс, где совсем другая жизнь

>Фассад, который каким-то интерфейсам удовлетворяет - это 99% говнокод.
ничего подобного. ибо это ФАСАД. в этом его суть чтобы спрятать распределенную сложность иерархии за чем то одним простым, пусть даже с нарушением SRP ибо это ФАСАД
И КОНЕЧНО ЖЕ все интерфейсы которые были размазаны по каким то классам ПЕРЕЕЗЖАЮТ в фасад.

>Так и в чем тогда смысл-то, лол?
в том что интерфейс это контракт, который описывает ИСКЛЮЧИТЕЛЬНО нужный функционал

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

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

Мне эти лишние знания не нужны. Я выставил МИНИМАЛЬНЫЕ УСЛОВИЯ - и входящий тип меня вообще не волнует. Ну да, я получу виртуальный вызов - но в этом и есть суть, что я не буду знать кого вызываю ибо мне это НЕ НУЖНО ЗНАТЬ
Аноним 21/11/23 Втр 23:31:23 2931976 416
>>2931954
>Ну да ладно. Видимо магический интерфейс - это что-то, что вам прям душу греет. Чувствуете себя в безопасности. Если для вас - костыли - это заебись. Ну, хули. Мне спорить не оч хочется
Ты понимаешь что в С#, С++, Java типы данных реально существуют во время выполнения? Каждый класс это реально отдельная вещь. В С++ вообще на этапе компиляции даже шаблоны создаются как отдельные типы данных по одному на каждый типизированый шаблон.

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

В ЖС И ТС нет никаких классов вообще. Это просто утиная типизация и хуйня аля можно вызвать что угодно у чего угодно. Твой Printer это и есть интерфейс по сути.
Аноним 21/11/23 Втр 23:37:14 2931979 417
>>2931976
да. интерфейс позволяет описать НЕОБХОДИМЫЙ МИНИМУМ который требуется, и не требовать знания типов

Даже есть принцип разделения интерфейсов. Это когда один общий интерфейс, допустим IЖена, дробится на "варитборщ", "прибирается", "сосет" и так далее.

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

так что да- интерфейсы это сила, главное не делать их перегруженными иначе смысл теряется.
Аноним 21/11/23 Втр 23:49:36 2931988 418
Нахуя тут даун за ТС усирается? Он не понимает что там нет никаких типов данных и даже нормального ООП? Только эрзац пародия и имитация на уровне линтера.

Приперся в тред про С# и пишет а вот в ТС работа с классами лучше. Ну естественно наверное потому что там вообще нет классов
Аноним 21/11/23 Втр 23:58:39 2931994 419
>>2931969
> у 2х интерфейсов может быть один совпадающий по сигнатуре метод. и в классе он конечно имеет 2 реализации, но ОДИНАКОВЫЕ по сигнатуре
Зачем твоему классу реализовывать два интерфейса?

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

> Я выставил МИНИМАЛЬНЫЕ УСЛОВИЯ
Ты создал целый интерфейс и засталвяешь строить монструозную хуйню вокруг этого. Хотя тебе, как ты сказал - нужен только борщ.

Так почему не сделать так:

foo(borschProvider: { doBorsch(): void, setBorschColor(color: "green"| "red" )} )

Зачем ты меня заставляешь сверху нахуевертить всякого говна с адаптерами, хуяптерами и прочим? Чтобы что? Чтобы где? Чтобы вместо того чтобы 1 строчку кода написать - я написал 100500?

> Я выставил МИНИМАЛЬНЫЕ УСЛОВИЯ - и входящий тип меня вообще не волнует
Ну и чем в таком случае тебе тип из TS и его утиная типизация не подходит? Интерфейсы шарпа - тяжелее, они вынуждают как раз всю муру тащить с наследованием, вынуждают делать всякую срань с адаптерами и раздувать кодовую базу мусором всяким, который не относится к решаемой задаче.

>>2931976
> Ты понимаешь что в С#, С++, Java типы данных реально существуют во время выполнения?
> C++
Можешь не продолжать. В вопросе ты не разбираешься от слова совсем.

>>2931968
> Зачем тебе в этом примере вообще TS? Потому что он обеспечивает чисто проверку типов аля синтаксис кода?
Именно потому.

> Перепиши это на JS и у тебя не будет ошибок.
Ну. Перепиши свой код на ассемблер - у тебя тоже никаких проблем с интерфейсами и типами не будет, потому что процессору - до пизды че там придумали мясные мешки, говорят остановить выполнение - остановим, не говорят - погнали дальше. Дальше что? Че дальше-то, блядь?
Аноним 22/11/23 Срд 00:08:34 2932006 420
>>2931994
>говорят остановить выполнение - остановим
Процессоры так не умеют же. Будут nop жечь. Или я не прав?
Аноним 22/11/23 Срд 00:22:21 2932011 421
>>2931994
>Зачем твоему классу реализовывать два интерфейса?
да хоть 10 или даже 100 и это норма. я показал тебе что интерфейс жена можно раздробить и класс жена будет все это реализовывать

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

>Ты создал целый интерфейс
да. я описал НУЖНЫЙ МНЕ контракт "сваритьборщ"

>засталвяешь строить монструозную хуйню
ничего тебя я не заставляю. я прошу предоставить КОГО УГОДНО кто сваритборщ и мне НЕ ХОЧЕТСЯ знать остальные детали кто это и откуда ты его взял.

> меня заставляешь сверху нахуевертить всякого
не заставляю ничего хуевертить. я прошу дать мне того кто выполнит МОЙ контракт (то есть сварит мне мой борщ)
а как там у тебя устроено - это твои личные проблемы. У меня вот адаптер крайне крайне редкий гость.

> случае тебе тип из TS и его утиная типизация не подходит?
1 это медленная херь
2 это не проверить толком на этапе компиляции. нужный класс может быть доступен далеко потом в рантайме из хуй знает какой сборки и точно так же получен через 10 слоев через которые проходит варщикборща
3 я уже говорил что может быть совпадение сигнатуры. И вместо того чтобы просто реализовать конкретный интерфейс - ты заставляешь меня писать адаптер из за 1 совпадающего метода.

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

даже вот в питоне придумали протоколы (тот же интерфейс, но не нужно реализовывать), а ты со своим убогим тс все возишься
Аноним 22/11/23 Срд 00:26:05 2932012 422
>>2932006
Да не умеют. Процессор всегда работает и гонит конвееер. Причём если процесс нормально не уведомит что он остановился то процессор никогда не переключится на другой процесс ведь ожидает когда процесс закончит дела. На одноядерном камне это буквально приводит к ступору всей системы наглухо, если смочь можно и на 2 ядерном также сделать.
Помнишь раньше зависание означало не что какая-то программа не отвечает, а что у тебя буквально компьютер перестал работать.
Аноним 22/11/23 Срд 00:30:22 2932014 423
>>2932011
Ну на фронте реально непонятно зачем нужны все эти интерфейсы. Я посмотрю как он будет в игровом движке вызывать метод Update() у всех объектов сцены без интерфейса IGameObject
Аноним 22/11/23 Срд 00:32:41 2932015 424
>>2932014
если ты пишешь на динам языке то тебе да -непонятно
но ты и пишешь там по другому
и платишь за это "рефакторинг жопный"

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

тут 2 стула. лично я выбрал второй. и даже в питоне по максимуму записываю тайпхинты
а на жс я не пишу - я ж не говноед.
Аноним 22/11/23 Срд 00:39:32 2932018 425
>>2932015
А теперь хочешь пушку? В Typescript вообще-то есть interface и он служит ровно тому что должен.
1) заставляет тебя реализовать его.
2) можно указать как параметр или поле где-то чтобы обозначить что вот тут требуется такое вот.
По сути тебе даётся гарантия что объект который ты получишь через параметр с типом интерфейса содержит поля и методы из него.

На этапе транспиляции в js все упоминания интерфейса будут удалены это чистый сахар.
Аноним 22/11/23 Срд 00:46:09 2932020 426
>>2932018
и в чем пушка то
у тебя это опциональный инструмент для тех кто любит строгость (лично я ушел с руби (с его то выразительной мощью) на питон сменив лагерь на лагерь "строгие типы рулят" и помощь IDE лучше динамики)

в шарпе и прочих стат языках это БАЗА, а не костыль как ты там высказал. Они абсолютно необходимы чтобы все можно было доказать на этапе компиляции ( ну и рефакторинг видит все)
Аноним 22/11/23 Срд 01:09:35 2932031 427
>>2932012
У нас начиная с 95 винды вытесняющая многозадачность.
Комп не виснет, когда виснет программа. Комп виснет, когда сдох супервайзор, который процессы переключает.
Аноним 22/11/23 Срд 01:17:46 2932033 428
Типизация тайпскрипта вообще убогая. Ну, на самом деле, это виноват жабаскрипт, который, как php, фрактал плохого дизайна. Однако тайпсрипт это просто попытка соплями заклеить трещины, которые идут вниз до бесконечности.
Премия за самое уродство отдаётся перегрузке методов, которые на самом деле один и тот же метод, а разработчик имеет анальный зоопарк аргументов непонятных типов и содержаний.
Аноним 22/11/23 Срд 04:18:00 2932065 429
чому if-else можно без скобок, а try-catch нельзя?
Аноним 22/11/23 Срд 08:30:28 2932109 430
>>2932031
А процесс ОС у тебя наверное выполняется на каком-то другом месте, да? Не будет работать супервизор если все ядра процессора будут залочены зависшими процессами.
Аноним 22/11/23 Срд 08:46:01 2932122 431
>>2932033
>Типизация тайпскрипта вообще убогая
Там её вообще нет. Просто статическая проверка, можно даже банально подавить эти ошибки и все.
Аноним 22/11/23 Срд 09:21:54 2932144 432
>>2932065
if-else тоже нельзя. За пропущенные скобки будут пиздить палками
Аноним 22/11/23 Срд 12:23:00 2932312 433
image.png 52Кб, 599x878
599x878
Любимые шарпушки, а можете объяснить, почему это завершается вообще? Разве изменения переменной bool visible для всех тредов? Я думал это как в жабе, может захардкодится значение и усе, вечный цикл.
Аноним 22/11/23 Срд 12:34:17 2932319 434
image.png 53Кб, 838x751
838x751
>>2932312
Просто для примера в жебе - это вечный цикл.
Аноним 22/11/23 Срд 13:32:51 2932375 435
Аноним 22/11/23 Срд 13:34:41 2932376 436
>>2932375
А в чем проблема тогда? Житу времени мало?
Аноним 22/11/23 Срд 13:35:36 2932377 437
Аноним 22/11/23 Срд 13:36:44 2932378 438
>>2932377
Мило. А можешь тогда ты написать? Ну или помочь
Аноним 22/11/23 Срд 13:38:53 2932381 439
>>2932378
зачем тебе помогать. ты жавист. тут жавистов не любят
Аноним 22/11/23 Срд 13:41:03 2932385 440
>>2932381
Так я по поводу шарпа как бы спрашиваю. Тем более ты на котлине сам пишешь. Хули ебало корчишь?
Аноним 22/11/23 Срд 13:44:05 2932389 441
>>2932385
так на котлине же. уже не жавист. смекаешь?
котлинисты в треде тут не срали
а вот жависты набегали и показывали свой "уровень развития"

откуда мне знать зачем ты спрашиваешь
можешь ты один из набегавших и просто ищешь очередной идиотский повод (ну у тех поводы были идиотскими)
Аноним 22/11/23 Срд 13:46:47 2932400 442
>>2932389
>уже не жавист
Вот если б там была не жава виртуальная машина, я б еще понял. А так, по моему ты коупишь.
>откуда мне знать зачем ты спрашиваешь
Хочу понять в чем разница семантик.
>ищешь очередной идиотский повод
Не ищу.. Обещаю.
Аноним 22/11/23 Срд 14:08:10 2932417 443
>>2925016
public class Rectangle {
static String x="10.54";
static double y = Double.parseDouble(x);

public static void main(String[] args) {

System.out.println(y);
}
}

//Мимо 45 летний дебил изучающий джаву.
Аноним 22/11/23 Срд 14:12:52 2932425 444
2023-11-22 14 1[...].png 13Кб, 349x556
349x556
>>2932400
>не жава виртуальная машина
жвм конечно говно, но речь шла про сахар. жавист со своим волосатым лобком всех достал.

>Хочу понять в чем разница семантик.
да кто ж ее знает тонкости рантаймов. тем более они меняются.
твой пример не зависнет.
вот тебе другой пример из инета
в 4.8 зависнет
в 8.0 не зависнет
Аноним 22/11/23 Срд 14:41:38 2932472 445
>>2932425
Пасиба, значет я прав был, что гарантий на видимость нет.
Аноним 22/11/23 Срд 14:43:54 2932475 446
>>2932425
>жвм конечно говно
эта боль анального раба майкрософта
Аноним 22/11/23 Срд 14:49:58 2932479 447
image.png 139Кб, 1198x845
1198x845
>>2932312
>Разве изменения переменной bool visible для всех тредов
У тебя статическая переменная общая для всех объектов данного типа. Она глобальна в отношение всех потоков и объектов.
Аноним 22/11/23 Срд 14:56:34 2932484 448
>>2932479
У вас по спеке все static еще и volatile?
Аноним 22/11/23 Срд 15:01:05 2932488 449
image.png 194Кб, 1660x1055
1660x1055
>>2932425
>в 4.8 зависнет
но это же пиздешь
Аноним 22/11/23 Срд 15:04:08 2932492 450
>>2932484
>volatile
это абсолютно логичное поведение. Статик поля общие для всего объявления типа с чего бы треды имели разные варианты типов? в С++ точно также, еще скажи "вау глобальные переменные доступны из любого места"
Аноним 22/11/23 Срд 15:11:27 2932506 451
image.png 6Кб, 919x55
919x55
>>2932492
Нифига не логичное. Вот гарантии volatile из спеки жабы. По ней есть глобальная очередь синхронизации. Это как бы накладно по перфомансу, зачем просто бай дефолт это делать? И можно ссылочку на вашу спеку с гарантиями на static?
Аноним 22/11/23 Срд 15:16:19 2932514 452
image.png 32Кб, 670x421
670x421
>>2932506
>>2932492
Еще из вашей нашел. Сразу скажу, что в cpp volatile значит другое. Зачем приплетать неясно.
Аноним 22/11/23 Срд 15:21:29 2932527 453
2023-11-22 15 1[...].png 9Кб, 389x342
389x342
2023-11-22 15 1[...].png 4Кб, 347x194
347x194
>>2932475
о жавист лобковый нарисовался
сколько уже сказано про стирание типов и отстуствие структур, а он все строит из себя....да долбоеба он строит.

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

что мы имеем в шарпе? смотрим пик 1. удобно обходим буфер и без копирования получаем удобную работу с пикселями

что мы имеем в жаве. Структур нет и мы не можем получить пиксель и работать с ним типа pixel.A
а как нам быть? а по старинке? как деды в плюсах делали - достаем инт и распаковываем вручную чтобы получить 3 цвета (пик 2). И потом таскаемся с этими переменными отдельно ибо мы НЕ МОЖЕМ запихать их в 1 объект - он даст аллокацию.

и это самый простой пример

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

>>2932514
там написана не совсем правда. компилятор поставит барьеры и будет стараться чтобы не кешировалось. Но гарантии не будет. (так уж устроены процессоры)
Аноним 22/11/23 Срд 15:31:24 2932551 454
2023-11-22 15 2[...].png 63Кб, 1466x876
1466x876
2023-11-22 15 2[...].png 78Кб, 1477x1012
1477x1012
>>2932488
я тоже умею такие картинки рисовать
Аноним 22/11/23 Срд 15:36:17 2932571 455
>>2932527
>>2932425
>в 4.8 зависнет
>в 8.0 не зависнет
Потому что так не пишут это искусственный пример. Добавь в while любое действие и не будет висеть даже в 4.8.

Сперва пишут какую-то хуйню высасоную из пальца, потом ОООО смотрите
Аноним 22/11/23 Срд 15:38:25 2932577 456
Котоны, запилил микросервис. Нужно добавить аутентификацию. Мне развернутая система аутентификации вроде JWT особо не нужна - сервис будет работать за ВПН и принимать запросы из CRMки.
Я даже не особо хочу пилить базу данных для этого микросервиса (он просто служит как интегратор с парой разных внешних эндпоинтов и под капотом делает немного логики).

Есть варианты простой проверки токена, или пилить JWT? Можно ли запилить JWT без SQL, с какой-нибудь нереляционной легкой БД?
Аноним 22/11/23 Срд 15:39:33 2932581 457
image.png 54Кб, 757x633
757x633
>>2932571
Ну вот тебе поведение. Если хуйнуть туда sync, то появяца барьеры. Жеба их так просто не убирает конечно, но теоретически и х снести может легко. По идее шарп делает ровно тоже самое. В каком месте это хуйня не совсем ясно, это база как бы.
Аноним 22/11/23 Срд 15:39:53 2932582 458
>>2932551
Что рисовать ебанутый? Ты реально думаешь я сидел в фотошопе редактировал чтобы на двач залить?
Ей богу проще хуйню придумать чем поверить что в интернете пишут хуету?
Аноним 22/11/23 Срд 15:41:08 2932584 459
>>2932581
Ей богу иди нахуй со своей джавой уже совершенно другое обсуждают
Аноним 22/11/23 Срд 15:41:36 2932585 460
Аноним 22/11/23 Срд 15:42:32 2932586 461
>>2932585
Ты приперся в с# тред и начал затирать "а вот в джаве" на что ты рассчитывал?
Аноним 22/11/23 Срд 15:43:34 2932587 462
image.png 13Кб, 966x118
966x118
>>2932586
У меня разрешение как бы есть.
Аноним 22/11/23 Срд 15:47:45 2932589 463
Аноним 22/11/23 Срд 15:47:46 2932590 464
>>2932571
>это искусственный пример
да. простой искусственный пример для того чтобы показать эффект.
искусственность кода никак не отрицает наличие показываемого эффекта
Эффект показан? дело сделано.

так что твой довод смыт в унитаз.

>>2932582
ты человек без юмора вижу. все, больше с тобой не говорю. Я потратил на тебя время, а у тебя жавизм в крови
Аноним 22/11/23 Срд 15:49:42 2932592 465
>>2932590
>Эффект показан? дело сделано.
Какой эффект? Что если писать говнокод с пустыми циклами тебя может не понять компилятор?
Аноним 22/11/23 Срд 15:54:00 2932595 466
>>2932592
что именно он там не поймет? выбросит цикл? нет не выбросит
эффект того что изменение переменной в другом потоке МОЖЕТ БЫТЬ проигнорировано
этот код показывает это? да

унитаз там
Аноним 22/11/23 Срд 16:07:03 2932604 467
>>2932577
Мы ебём что ли какой тебе уровень конфигурируемости аутентификации нужен?
Самый простой способ: пропиши ключ в web.config и заставь клиента слать его на каждый запрос в виде параметра в url. Типа /somemethod?param1=val1&key=yoba_secret_key
Аноним 22/11/23 Срд 16:12:28 2932612 468
>>2932604
Чет орнул как ключ доступа передаётся в открытом виде прям сука в урле
Аноним 22/11/23 Срд 16:13:22 2932614 469
2023-11-22 15 2[...].png 57Кб, 1351x895
1351x895
>>2932571
ну и пока был открыт редактор

>Добавь в while любое действие и не будет висеть даже в 4.8.
добавил. и даже сделал его не локальным чтобы никакой оптимизатор не смог его выбросить

висит аж бегом
Аноним 22/11/23 Срд 16:15:08 2932616 470
>>2932614
Console.Write(); напиши и все.
Аноним 22/11/23 Срд 16:18:48 2932621 471
>>2932616
зачем? я ж не имбецил
у класса есть четкая задача - посчитать количество итераций что он пройдет и сообщить мне
добавив вывод в консоль - я нахер сломаю саму сущность класса.
Аноним 22/11/23 Срд 16:20:17 2932625 472
>>2932616
Там же в реализации лока... Мне почему-то кажеца, что ты тролль
Аноним 22/11/23 Срд 16:21:37 2932628 473
На с# вообще есть жизнь? Уже несколько лет пишу на работе wpf приложения за скромную зп, но понимаю, что они нахуй не нужны и в случае чего ещё одну работу я просто не найду. Думал о бэке, но все вакансии на бэк шарп это портал в ад. Требования: 20 десятка технологий (даже не преувеличение), знание петухона, пыха, среакт, уверенное знание древнегреческого. ЗП: 80к
Аноним 22/11/23 Срд 16:22:15 2932630 474
unity02.jpg 24Кб, 480x360
480x360
Как часто ASP.NET Core девелоперы в своей рабочей биографии пересечены с разработкой игр?
Допустим я устроюсь на работу дотнет девелопером, и при этом упомяну что игры разрабатываю в свободное время - меня ссаными тряпками не забросают?
Аноним 22/11/23 Срд 16:24:11 2932632 475
>>2932630
Что за тупые вопросы
Аноним 22/11/23 Срд 16:26:27 2932636 476
>>2932628
>ЗП: 80к
ну само знание это одно, а вот что делать нужно - другое
у меня такая зарплата на подработке, но там я работаю 3 часа в неделю.
Аноним 22/11/23 Срд 16:41:59 2932670 477
>>2932614
https://sharplab.io/#v2:EYLgHgbALANALiAhgZwLYB8ACBmABJgJlwGEBYAKAG8LdbcAHAJwEsA3ROAU12AHteANrgD6AMwGIA5gG4adJmw7dmAOzgiAxrwCuazo1nk6uObQXsu+KLgCyACgCUp3NSPG6AdwAWzAdzsAhGISkk5u7i7OEbTCWrpcjADUiYbRuAC+zpnk2UA=
Разный кодеген на разных .NET:
x64 (.NET 7) - считывает _flag только перед циклом, цикл - бесконечный
FW x86 (4.8) - считывает _flag каждый раз
FW x64 (4.8) - считывает _flag только перед циклом, и в цикле каждый раз проверяет считанное (т.е. неизменённое) значение, т.е. цикл всё равно бесконечный
Вообще код должен считать и проверить _flag только перед циклом и больше его не проверять (т.е. сделать бесконечный цикл), т.к. "побочных эффектов" внутри цикла нет.

https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEBDAzgWwB8ABABgAJiBGAOgCUBXAOwwEt8YaBhCfAB1YAbGFADKIgG6swMXAG4AsAChlxAMyUATOS7KA3svJHyfKKwnYMMcsAgRB5APoAzQdgDmipcfKHjp80trYhRyAFkqAAoASj8jA28fYwB3AAsha0iAQhc3d1jEpPIEoqMAXzjyCsLfGoCLK0pQsM0YypLSgBMIBmBhcmxyAF5yUi9S8jSM8mzcjwKJjomjQYBqEeoaMMtUmlFWJkjsaPHS6p9z40r6oKbwtTaapaTu3v7BkbHKnyn+2dd5t9jM8JmsRgA5CB8I4nIHlSqXIyVADaYRgGFSEE6AEl+IJImiMVjcXxBAB5PhsCBMXA0SHYpiCA4HfIAXWuZga1lefWskOhPPeC2BcMoAHZRqd4UpqkA==
Но почему здесь (в M1()) он загружает _flag каждый раз - я хз. Может, код такой, потому что у него размер меньше. Ну и JIT, даже в .NET 8, неидеален.

А вообще, не поставил volatile или не используешь барьеры - сам себе злобный буратино.
Аноним 22/11/23 Срд 16:46:53 2932676 478
>>2932630
>
>Как часто ASP.NET Core девелоперы в своей рабочей биографии пересечены с разработкой игр?
>Допустим я устроюсь на работу дотнет девелопером, и при этом упомяну что игры разрабатываю в свободное время - меня ссаными тряпками не забросают?

Я никогда не позволю в моей команде работать моральному уроду, который писал что-то на Unity3d. Это для меня красный флаг.
Аноним 22/11/23 Срд 16:49:08 2932678 479
>>2932670
смотря что писал. может он писал шедевры вроде "русы против ящеров"
Аноним 22/11/23 Срд 16:50:27 2932679 480
image.png 205Кб, 1606x1303
1606x1303
image.png 207Кб, 1642x1354
1642x1354
image.png 244Кб, 1723x1361
1723x1361
пик 1 .NET 4.8
пик 2 .NET 4.8 но в while есть Console.WriteLine();
пик 3 .NET 6 просто while

Мне лень, можете изучать
Аноним 22/11/23 Срд 17:07:31 2932697 481
>>2932636
>у меня такая зарплата на подработке, но там я работаю 3 часа в неделю
5/2 в офисе
Аноним 22/11/23 Срд 17:12:47 2932711 482
image.png 140Кб, 1529x1271
1529x1271
image.png 5Кб, 316x83
316x83
>>2932679
.NET 8 имеет другой IL код вот и все. Банально в ранних версиях нет защиты от говно кода типо пик2
Аноним 22/11/23 Срд 17:15:06 2932721 483
>>2932697
сделаю предположение, что там требуется знания технологий да, но на уровне джуна конечно
а ты и де факто и будешь на старте изучения.
Аноним 22/11/23 Срд 17:16:33 2932723 484
>>2932612
Конечно это нихера не секьюрно, но если у тебя сервис и клиент глубоко внутри анально огороженной зоны, то этого вполне достаточно.
Аноним 22/11/23 Срд 17:20:52 2932734 485
>>2932628
>Думал о бэке, но все вакансии на бэк шарп это портал в ад. Требования: 20 десятка технологий (даже не преувеличение), знание петухона, пыха, среакт, уверенное знание древнегреческого. ЗП: 80к
Всю жизнь работаю бэк/фуллстек asp.net
Ни разу не требовали других бэк языков.
Никуда перекатываться не собираюсь.
Аноним 22/11/23 Срд 17:25:02 2932740 486
Вопрос, у меня есть AddSingleton<IT,T> мне же не надо беспокоится что GC удалит объект который используется в рабочем приложении?
Объект может не использоваться какое то время но он критический важен.
Аноним 22/11/23 Срд 17:25:08 2932741 487
>>2932734
ну он утрировал конечно

но факт есть факт - лучше быть бэком чем фуллстеком. Еб...сь сами со своим фронтендом.
Аноним 22/11/23 Срд 17:25:51 2932742 488
>>2932734
>Всю жизнь работаю бэк/фуллстек asp.net
А что ещё знать нужно, кроме asp.net? Попробую поковырять что ли месяцок, может зайдёт
>>2932721
>сделаю предположение, что там требуется знания технологий да, но на уровне джуна конечно
Не, это всё на мидла типа. Я не знаю, может в ДС вакансии на бэк адекватные, но в провинции это вот такой пиздец.
Аноним 22/11/23 Срд 17:26:11 2932743 489
>>2932740
его будет удерживать контейнер, а контейнер тоже будет удерживаться кем то.
так что не удалит.
Аноним 22/11/23 Срд 17:31:31 2932752 490
>>2932628
Не знаю какие вакансии ты смотришь, но платят даже джунам по 120-140к
Аноним 22/11/23 Срд 17:34:43 2932754 491
>>2932752
Ну это совсем мало. Я после чтения справки на сайте майкрософта пошел на собес, там обосрал джаву и сразу предложили 350к с авансом. Вопросов по си хэштегу даже не задавали.
Аноним 22/11/23 Срд 17:36:42 2932757 492
show.png 6Кб, 270x120
270x120
>>2932754
но работаешь ты в итоге....на заводе? )

зы: зачем двач капчует сложные примеры если все равно влом считать в уме и кликаешь до простого
Аноним 22/11/23 Срд 17:38:39 2932759 493
>>2932752
А в губы целуют? Породниться предлагают?
Аноним 22/11/23 Срд 17:39:45 2932761 494
>>2932759
Я не знаю о чем вы. Я 3 года назад на 100к после уника пришел.
Аноним 22/11/23 Срд 18:02:18 2932787 495
>>2932761
так то времена были другие. ковиды всякие, удаленки.
мне работа не нужна, но зашел в гугл глянул вакансии - и печально как то если ты не москва или спб

ну да, можно из дома щас у некоторых, но сложно оценить сколько получит именно джун.
Аноним 22/11/23 Срд 18:46:23 2932841 496
>>2932711
Не очень понятно, почему она вообще должна быть. Это оптимизация и она работает.
Аноним 22/11/23 Срд 19:28:36 2932906 497
>>2932577
>>2932723

Я, короче, вижу два варианта.

Basic Authentication (креды передаются в хедерах запроса, можно зашифровать, но я всё равно оставил только https).
Как здесь: https://dotnettutorials.net/lesson/web-api-basic-authentication/

JWT, как здесь https://www.youtube.com/watch?app=desktop&v=mgeuh8k3I4g&ab_channel=NickChapsas

Для моей задачи за глаза хватит Basic Authentication, но JWT написать будет поинтереснее лично для себя.
Аноним 22/11/23 Срд 20:53:04 2933055 498
Где должны лежать контроллеры, если структура проекта:

MyApp.Application
MyApp.Bootstrap
MyApp.Domain
MyApp.Infrastructure

Типа кроме Bootstrap - все библиотеки. Bootstrap - WebApi - проект.

Типа я думаю - в Infrastructure. Ведь это же инфраструктурная логика, приложению же вроде как должно быть пофиг - через HTTP запрос получили, чи через шину или GRPC.
Но.
1. Чтобы контроллеры нормально работали - приходится явно загружать сборку через Assembly.Load
2. Сваггер - настраивается сложнее(потому что сваггер - таки в Bootstrap)
3. Если сваггер и всю эту настройку перенасить в Infrastructure - смысл вроде теряется совсем.
Аноним 22/11/23 Срд 21:26:11 2933084 499
>>2933055
>Bootstrap - WebApi - проект.
Тут и должны
Аноним 22/11/23 Срд 21:30:34 2933090 500
>>2933084
А почему?
Лично мне вот не оч нравится, что WebApi - собирает все необходимое. И приходится - всю инфраструктуру делать public. Сразу возникает мысль - а нафига я тогда это все делаю, если могу напрямую из Application дергать нужное мне и не придумывать какие-то там абстракции и прочее.
Ну да ладно.
Аноним 22/11/23 Срд 21:34:51 2933097 501
>>2933055
Интерфейс - это слой сам по себе. Ты не можешь переиспользовать контроллеры в другом виде интерфейса: консольке, десктоп гуе, очереди сообщений и даже в сервер-сайд рендеринг веб-сайте, значит они являются интегральной частью твоего веб апи интерфейса, а значит им место в веб апи проекте.
Аноним 22/11/23 Срд 22:32:18 2933144 502
>>2933090
Потому что контроллер это ВЕБ АПИ не АПИ а именно прям конкретно веб. Это конечная точка, там даже базовые классы из дотНЕТ реализуют HTTP протокол и все что надо.

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

По идее у тебя должен быть слой абстракции тогда в виде интерфейсов через которые ты запускаешь бизнес логику. Просто инжектим где надо и пользуемся.
Аноним 22/11/23 Срд 23:16:40 2933224 503
>>2932630
>Как часто ASP.NET Core девелоперы в своей рабочей биографии пересечены с разработкой игр?
Практически никогда.
Аноним 22/11/23 Срд 23:50:32 2933260 504
Аноним 23/11/23 Чтв 02:59:45 2933312 505
>>2933260
У майкрософта в коде зоопарк на самом деле.
Аноним 23/11/23 Чтв 11:45:28 2933481 506
image.png 214Кб, 480x360
480x360
Кстати, смех смехом, а стоит ли поучиться разработке на Unity для души, или Unity бесперспективно умер после скандала, и лучше сразу идти в UE?
Аноним 23/11/23 Чтв 12:49:06 2933563 507
>>2928144
Ты это буквально я. Как давно в впф, брат?
Аноним 23/11/23 Чтв 13:50:56 2933660 508
>>2933481
Учи конечно
Сделаешь игру "русы против жавистов"
Аноним 23/11/23 Чтв 13:52:03 2933666 509
Аноним 23/11/23 Чтв 14:33:24 2933706 510
1674596908718.png 47Кб, 1052x433
1052x433
Как вы именуете роуты?
Используете множественное число или единственное?
Добавляете ли глаголы или действие определяете исключительно из типа запроса?

Пример на пике.
Какой вариант предпочтительнее?
Аноним 23/11/23 Чтв 15:40:17 2933787 511
Аноним 23/11/23 Чтв 15:46:35 2933807 512
>>2933787
>>2933706
Решил сказать почему.
В v1 Get, Delete и Patch имеют одинаковые сигнатуры, ну то есть если ты на клиенте случайно забыл сменить метод то можешь очень весело сосать.
Прикинь ахуено было бы вместо get(userId) был бы вызван delete(userId) прям на проде. Прям для абсолютно всех пользователей исходя из логики работы любой системы.

АПИ должно быть таким чтобы нельзя было случайно проебаться и получить 200 код в ответ.
Аноним 23/11/23 Чтв 18:06:00 2934059 513
>>2933706
V2 но имена сущностей во множественном числе.
Аноним 23/11/23 Чтв 18:06:52 2934061 514
>>2933481
>>2933481
Для души лучше годот или какой-нибудь еще немейнстримный движок или самому что-нибудь навелосипедить.
В геймдеве интересно только в трех случаях:
1) когда разбираешься в реализации каких-либо механик
2) когда разбираешься в каких-либо инструментах (тот же движок или как он устроен)
3) когда делаешь первые 30% какой-либо игры

Все остальное скучнейшая залупа. Для первых двух пунктов - юнити и UE слишком унылы, а для третьего вообще похуй на чем.
Аноним 23/11/23 Чтв 18:52:50 2934096 515
>>2933706
Делаю так:
[POST] /api/{serviceName}

{
// тело запроса
}


Брат жив. Зависимость есть.
Аноним 23/11/23 Чтв 19:10:14 2934127 516
Никогда не работал с микросервисами, есть какие ресурсы для изучения? Опыта вот вообще ноль, в общих чертах понимаю, но саму реализацию не совсем
Аноним 23/11/23 Чтв 19:41:19 2934189 517
>>2934127
И не надо. Эти абсолютно всегда антипаттерн. Я никогда не видел реальные микросервисы. Зато много раз видел как есть 20+ микрозалуп которые имеют бешеную связанность между собой и по сути это монолит, в 100% случаев есть сервис оркестрации который для внешних пользователей и будет АПИ.

Плюс я лучше нормально напишу хороший монолит чем буду через HTTP или какие-то сервисы очередей передавать данные между частями системы.
Аноним 23/11/23 Чтв 20:08:20 2934243 518
>>2934127
Ну.
Смотри. Примерно так это выглядит. https://github.com/dotnet/eShop
Из почитать - куча книг есть. Можешь майковские статьи почитать.
На деле - проблема в том, что крутанские крутаны - не особо делятся внутренностями, в результате - у каждого свой зоопарк. А мелочь всякую на это подсаживают, чтобы продавать ажуру и AWS.

>>2934189
И как ты будешь монолит масштабировать, няша?
Вот у вас затык в одном конкретном месте. Допустим - из-за возросшего количества вообщений - воркер не успевает нормально обрабатывать очередь.
Что ты делаешь в микросервесной архитектуре - ты запускаешь второго, третьего, десятого воркера, разносишь из географически и живешь нормально.
Что ты делаешь в монолите - ты либо лезешь в залупу, либо бибу сосешь и страдаешь с тем, что тебе надо ВЕСЬ МОНОЛИТ разворачивать, либо - ищешь магов каких-то, которые тебе оптимизацию прям нихуевую сделают(а потом - все равно сосешь бибу, либо режешь на микросервисы).
А если упадет что-то. Че у тебя будет в микросервисном случае? Да ничего особого, все остальные куски приложения работают, после того как хелсчек не получишь - перезапустишь, если не перезапустится через какое-то время - отправим девопсу страшное письмо, пусть разбирается. Но все остальные части системы - продолжают работать.
С монолитом - у тебя упал монолит - у тебя все приложение нахуй недоступно, беги, нахуй, пондимать резервные сервера, беги трубить тревогу, все пропало, спасайся кто может. Ну и куча сложностей вокруг резервных серверов, которые надо всегда держать про запас.

Не. Я конечно понимаю, что если просто хуячить микросервисы, потому что модно-молодежно, не стоит. Если у вас - 100 пользователей, и в среднем система обрабатывает 200 запросов в сутки - то нахуй вам эти микросервисы не всрались. Просто как-бы. У кого-то так, а у кого-то час простоя - стоит довольно охуительных денег и
Аноним 23/11/23 Чтв 22:47:22 2934505 519
Аноним 23/11/23 Чтв 22:50:49 2934511 520
>>2931720
ну и зачем ты интерфейс написал?
Аноним 23/11/23 Чтв 23:15:25 2934544 521
>>2933807
>Решил сказать почему.
>В v1 Get, Delete и Patch имеют одинаковые сигнатуры, ну то есть если ты на клиенте случайно забыл сменить метод то можешь очень весело сосать.
>Прикинь ахуено было бы вместо get(userId) был бы вызван delete(userId) прям на проде. Прям для абсолютно всех пользователей исходя из логики работы любой системы.

>АПИ должно быть таким чтобы нельзя было случайно проебаться и получить 200 код в ответ.
Ну что это за цирк ёбаный, метод забыл сменить? Так можно и url забыть сменить.
И что за хуйня про продакшен? Такие баги ловятся при тестировании. Ты без тестирования релизить собираешься?
Плюс, если ссышься, напиши тесты.
Аноним 23/11/23 Чтв 23:23:36 2934558 522
>>2934544
>Ну что это за цирк ёбаный, метод забыл сменить? Так можно и url забыть сменить.
>И что за хуйня про продакшен?
Берешь копипаст делаешь и забываешь отредачить, особенно когда раз 40 это делаешь.
Часто пишешь тесты на вызов АПИ? Как данные мокаешь для этого?

Если ты забыл сменить урл то у тебя происходит ошибка потому что DELETE /item/id не существует 404.

Да спокойно на прод че угодно даже с тестами уходит, никто не запускает полный набор тестов перед каждым релизом, у нас их может по 2 в день быть если задачи быстро делаются. Полный регресс раз в месяц происходит.
Лучше на уровне архитектуры устранять возможность что-то неправильно сделать чем с умным ебалом рассуждать что вот надо было лучше ревью провести или тесты полные прогнать. Закон Мерфи нахуй, если у тебя одинаковые урлы для GET и DELETE то обязательно будет космический проеб и упаси тебя бог чтобы ваши админы делали бэкапы базы или у вас было мягкое удаление.
Аноним 23/11/23 Чтв 23:24:05 2934560 523
.png 92Кб, 675x653
675x653
>>2931627
Ну. Пока я постил всякую хуйню которая легко гуглится и не требует RFC читать - я тоже немного припустил.
А потом - прикриплейд.
Аноним 23/11/23 Чтв 23:27:06 2934568 524
>>2934560
Да эта хуйня тупо тебе выжимку из интернета делает причём первых трех ссылок гугла.
Я пытался найти редкие запросы не осилив гугл и копилот маек мне выдал буквально цитаты из того что я читал и пояснения к ним.

Спасибо нахуй я наверное уже заебался гулить если решил спросить сетку.
Аноним 23/11/23 Чтв 23:33:12 2934574 525
public static int Get()
{
int i = 0;
i++;
return i;
}
Всегда ли будет возвращено 1 если метод используют много потоков? Не будет ли такова что один поток сделает +1 а другой поток в это время сделает var i = 0; и первый поток вернет 0?
Аноним 23/11/23 Чтв 23:48:04 2934614 526
>>2934574
Ну. Давай думать.

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

Поток - выходит

В какой момент - может измениться значение i из другого потока?
Аноним 23/11/23 Чтв 23:48:27 2934615 527
>>2934560
А можно пояснить для маслят неопытных? Можно без особых подробностей.
На пикрилейтед - полная хуита? Или что?
Аноним 23/11/23 Чтв 23:52:13 2934624 528
>>2934615
На прикриплейд - буквально что-то в духе
я спросил бы анона: "Как познакомиться с девочкой", а он мне: "Просто берешь и без задней мысли - знакомишься"

Типа. Ну охуеть. Ответил. Спасибо. Пойду с этими знаниями пикапмастером становиться.

Алиса - лучше ответила кста. Но тоже хуевато.
Аноним 23/11/23 Чтв 23:54:46 2934628 529
>>2934624
>я спросил бы анона: "Как познакомиться с девочкой"
"Чтобы познакомиться с девочкой нужно говорить" вот так примерно.

Он дал абсолютно верный ответ как кодируется имя метода, но абсолютно бесполезный.
Аноним 23/11/23 Чтв 23:57:10 2934635 530
>>2934574
Запусти приложение пару раз с 3 потокам которые выводят результаты в консоли. Все на этом как бы эксперимент завершен.
Вообще в статик методах которые можно использовать в многопотоке принято делать синхронизацию потоков.

Снова принесли говнокод с вопросами.
Аноним 24/11/23 Птн 00:00:14 2934638 531
>>2934635
> Вообще в статик методах которые можно использовать в многопотоке принято делать синхронизацию потоков.
Но тут она не нужна.
Если бы он обращался к разделяемым ресурсам - да. А тут - нахуя?
Аноним 24/11/23 Птн 00:06:13 2934646 532
>>2934638
А бля она локальная, спать хочу уже надо идти.

В любом случае я собеседование прерываю обычно на таких вопросах. Давайте обсудим какие-то реальные вещи, а не залупу конскую. Может у вас есть какие-то примеры из работы? Ах бля у вас вообще нет работы с потоками акромя вызывать чтения файла? Так зачем вы мне мозги ебете.
Аноним 24/11/23 Птн 00:43:09 2934665 533
>>2934574
Как у тебя вообще возник этот вопрос..?
Аноним 24/11/23 Птн 00:46:06 2934666 534
>>2934665
Ну это скорее не вопрос а проверка моих знаний. Часто задаю вопросы на которые уже знаю ответ но что бы подтвердить его нужно другое мнение.
Аноним 24/11/23 Птн 00:54:35 2934668 535
image.png 31Кб, 548x441
548x441
>>2934666
И как именно ты бы объяснил почему же результат гарантировано будет 1?
вообще можно что-то интереснее придумать. Вот на пике гарантировано будет усе ок. Почему?
Аноним 24/11/23 Птн 00:57:17 2934671 536
image.png 28Кб, 474x507
474x507
>>2934668
Ладно, проебался. Сделал 2 чтения.
Аноним 24/11/23 Птн 01:02:02 2934673 537
>>2934671
Ну здесь же не статик метод, в конструкторе передаем 1 и всегда в многопотоке будет 1
Аноним 24/11/23 Птн 01:04:22 2934674 538
>>2934673
В чем проблема экземпляр разнести по нескольким потокам. Че вы так к этому стейтик прицепились? Буквально практически нихуя не значит для многопоточки.
Аноним 24/11/23 Птн 01:06:16 2934676 539
>>2934674
В душе не ебу что такое стейтик.
Я пишу код по наитию.
Наитие мне подсказывает что на 1 экземпляре запустить 10000 раз метод в многопотоке результат будет один и тот же.
Аноним 24/11/23 Птн 07:42:50 2934722 540
image.png 9Кб, 674x86
674x86
image.png 63Кб, 735x552
735x552
Нахуя придумали Random.GetItems ?
Или я его неправильно использую?
Вообще есть список этой всей сладкой ебалы которая медленнее простыхне простых решений ? Я бы прочитал и никогда их не использовал.
Аноним 24/11/23 Птн 08:50:56 2934732 541
>>2934722

> Или я его неправильно использую?
Это.
Аллоцируй массив в setup, а не в теле бенчмарка.
Аноним 24/11/23 Птн 09:08:27 2934736 542
>>2934732
>>2934732
В чем профит ? И там и там создаётся лист
Аноним 24/11/23 Птн 09:13:22 2934738 543
>>2934736

Сейчас ты тестируешь не рандом, а создание массива
Аноним 24/11/23 Птн 09:35:41 2934755 544
image.png 365Кб, 500x500
500x500
Аноним 24/11/23 Птн 10:46:03 2934815 545
>>2934722
Вообще общпя реализация рэндом гетитемс должна выдавать элементы без повторений. Вот реализуй такой "олд стиль" в нативе и сравнивай.
Аноним 24/11/23 Птн 11:05:37 2934835 546
>>2934615
>На пикрилейтед - полная хуита? Или что?
Все эти нейросети-помощники тренируются на ПРИМЕРАХ, и чем их больше, тем точнее ответ.

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

Но если тебя интересует какой-то редкий случай и не хочется перелопачивать весь интернет ради одной статьи, то тебе не по адресу т.к. нейросеть в таких случаях будет нести хуйню, либо что-то обобщенное.
Аноним 24/11/23 Птн 11:11:44 2934843 547
>>2934676
>В душе не ебу что такое стейтик.
>Я пишу код по наитию.
Бля эти люди среди нас.
Аноним 24/11/23 Птн 11:39:38 2934884 548
>>2934574
всегда
локальные переменные всегда локальные для потока
так что хоть триллион потоков - результат будет один
Аноним 24/11/23 Птн 12:46:03 2934925 549
Как в студии автоматом закомментить вот так

/
многострочный
коммент
/

вместо
//многострочный
//коммент

Зачем студия ведет себя, словно c# это бейсик, не поддерживающий комментирование блоком?
Аноним 24/11/23 Птн 12:47:41 2934927 550
2023-11-2412-47[...].png 1Кб, 150x92
150x92
>>2934925
Звездочки проебались
Аноним 24/11/23 Птн 12:57:59 2934935 551
>>2934925
потому что комментированние блоком фуфло
хочешь - делай вручную
Аноним 24/11/23 Птн 15:35:45 2935148 552
Аноним 25/11/23 Суб 08:18:43 2936087 553
Когда посетителям этого треда завезут многопоточность без оверхеда на вызов системных потоков, чтобы они перестали брызгать желчью от злости и забегать в бессильной злобе в джаватред?
Аноним 25/11/23 Суб 09:22:28 2936115 554
>>2936087
Нахуй не нужо. Джава мертвый язык, я не знаю проектов где кто-то начал его с 0 на ней, кроме двух говно компаний где после ебли заказчик пришёл к нам с просьбой переписать проект.
Аноним 25/11/23 Суб 09:44:27 2936130 555
>>2936115
Да мы все и так давно знали что шарпомухам подходы к разработке белых людей нинужны. Ты на вопрос ответь.
Аноним 25/11/23 Суб 10:23:01 2936154 556
>>2936115
Нафиг ты ему отвечаешь
У жавадебила обострение и галлюцинации что кто к нему в тред забегает
Ни одного шарписта в мире не волнует оверхед асинка
Аноним 25/11/23 Суб 22:24:25 2937226 557
.png 20Кб, 297x609
297x609
Чет мне вот эта структура проекта не нравится.
Начинал полгода назад. Казалось - так и надо.
Сейчас решил вернуться, ведь скоро отпуск - надо чего-нибудь намутить. И смотрю и кажется говном каким-то.
Аноним 26/11/23 Вск 04:12:38 2937496 558
>>2937226
Хранить имплементации в одной куче с интерфейсами как-то по гейски. Ну а пихать туда же контракты, вообще по пидорски.
Аноним 26/11/23 Вск 13:24:36 2937734 559
>>2937226
ну все. очередная стадия. спасет только завод.
Аноним 27/11/23 Пнд 08:05:40 2938755 560
image.png 30Кб, 298x779
298x779
>>2937226
А как вам моя структура?
Делал по наитию, пытался максимально все по файлам разбить, но как обычно, в конце понял что есть вещи которые можно было сделать лучше.
3 раз переписывать не буду.
Аноним 27/11/23 Пнд 18:55:28 2939842 561
>>2938755
Нууууу.
Я вот со своей расстроился потому что у меня возникла какая фигня в голове: А зачем я собственно разбиваю по: Сервис, модель вот это вот. Почему не разбивать по фичам? Типа: Уаправление пользователями - все что с ними связано - там. Авторизация - все эти JWT и прочее - там. Ну и в таком духе. Чтобы если надо - можно было выдрать кусок и копипастой сразу фичу впихнуть куда надо. Проблема только с "общими" штуками, которые не специфичны для фичи, но фича за них цепляется. Единственное что вижу - делать для фичи "порты", в которые сверху кто-то эти обще вещи будет пробрасывать, а фича на основе вот этой внешней логики - типа расширяться.
Ну а у тебя на вид - классическая структура с разделением по слоям. Только контексты - непонятно чому в модели лежат, их бы в DAL положить.
Аноним 27/11/23 Пнд 21:57:44 2940114 562
На работе заставили пересесть со стека: MS SQL Server, .NET, Angular, gRPC. На PGSql, .NET, Vue3, RabbitMQ, Docker.
Я теряю в своей стоимости на рынке или не?
Просто ангуляр - мне нравился больше чем Vue. MSSQL - тоже больше чем PGSql нравился. Вот реббит - да, прикольная фигня, но я до этого и с gRPC нормально обходился, да и удобнее было с ним, ведь клиент и сервер генерировались по протобафу, а тут приходится как додик - свой велосипед использовать, чтобы контракты сообщений соблюдались.
В общем. Поясните - надо ли мне рыпаться и пытаться в свободное время утраченные знания восстанавливать, или то что сейчас использую - тоже оплачивается нормально на рынку?
Аноним 27/11/23 Пнд 22:13:57 2940143 563
image.png 36Кб, 1040x535
1040x535
>>2940114
>Я теряю в своей стоимости на рынке или не?
На каком рынке?
>Просто ангуляр - мне нравился больше чем Vue.
Что то, что это хуйня. Вот если бы ты на реакт перешел, то тогда чуть-чуть бы выйграл. А так, ты уже проиграл в том, что тебе приходится фулстеком быть.
>MSSQL - тоже больше чем PGSql нравился.
см пик. Плюс знание двух СУБД всегда лучше чем одной.
>Поясните - надо ли мне рыпаться и пытаться в свободное время утраченные знания восстанавливать, или то что сейчас использую - тоже оплачивается нормально на рынку?
Нормально, оплачивается. А еще больше оплачивается опыт по переводу сервисов с одного стека на другой.
В РФ, например, сейчас кейсы пересадки "Win -> Linux+Docker", "MSSQL -> PGSql", "Файлы -> Очереди" один из самых распространенных на дотнете.
Аноним 27/11/23 Пнд 22:26:00 2940178 564
>>2940114
Вот только я не понял, какого хуя у вас RabbitMq и GRPC противопоставляются. Они как бы для разных вещей. Rabbit - для асинхронного взаимодействия между сервисами, GRPC для синхронного, и они вполне могут в одном сервисе уживаться.
Аноним 28/11/23 Втр 08:45:12 2940414 565
>>2938755
В проекте не видно экстеншенов для IServiceCollection, соответственно у тебя все сервисы собираются в Program.cs, соответственнно там срач. Нехорошо.
Аноним 28/11/23 Втр 13:10:20 2940680 566
>>2940414
Ну делал как в гайде
builder.Services.AddSingleton<IMyDependency, MyDependency>();
Аноним 28/11/23 Втр 15:28:17 2940900 567
>>2940680
>как в гайде
В "гайдах" обычно показывают сам принцип того как это работает, но не обясняют как сделать хорошо.
Вот эти вот все AddSinglton, AddScoped и всю прочую дребедень с помощью которой ты добавляешь сервисы в контейнер и конфигурируешь приложение, принято выносить в отдельные расширения. Чтобы стартовый класс не был засран, плюс чтобы можно было все это разнести по слоям и/или подпроектам.
Аноним 28/11/23 Втр 15:38:19 2940918 568
Продолжаю писать программу для рисования, и столкнулся с очередной проблемой. У меня есть интерфейс IGraphicObject, который представляет контракт для всех объектов обычные линии, кривые безье, сплайны, геометрические фигуры и тд, рисуемых на холсте, а именно свойства Bounds, Brush, и метод Draw. И встал вопрос как эти объекты грамотно создавать, сейчас у меня километровые методы с кучей свичей тот еще говнокод конечно. Просто передать массив точек и отрисовать его не выйдет, так как при рисовании длинных линий при добавлении точки каждый раз все перерисовывать заново это пиздец полный пробовал уже. То есть объект должен хранить промежуточное состояние на своем внутреннем холсте и при добавлении точки просто его дорисовывать. При это после рисования оно должно (опционально) сбрасываться, чтобы в памяти не хранился миллион битмапов.
Как это красиво сделать? Пока думаю добавить в интерфейс IGraphicObject метод, который будет возвращаться IGraphicObjectFactory, где и будет происходить промежуточная отрисовка. Но это как по мне будет лишнее переусложнение.
Аноним 28/11/23 Втр 22:57:06 2941638 569
Аноним 28/11/23 Втр 23:28:52 2941670 570
.png 154Кб, 827x700
827x700
>>2940918
ХЗ чего тебе надо, но я бы сделал так. Лол.
Аноним 28/11/23 Втр 23:35:43 2941674 571
>>2941670
Ебать, это прям god object.
>>2940918
Помню на жабе подобное делал https://pastebin.com/deGpeBtY
Думаю сможешь на шарп перевести... А мне лееень. Но тут проблемы есть какие-то, но какие тоже не помню, давно делал
Аноним 29/11/23 Срд 00:25:21 2941708 572
>>2941670
ему нужно завести кота
конечно его задаче это не поможет
но котик - святое
Аноним 29/11/23 Срд 14:51:58 2942256 573
>>2941670
Впервые вижу такую инициализацию словаря
Аноним 29/11/23 Срд 20:59:13 2943043 574
изображение.png 15Кб, 397x330
397x330
изображение.png 21Кб, 432x279
432x279
Да блять, как с этими ебаными енамами работать то? Есть бд postgres, через scaffold-db сгенерировал сущности для enityframework (database first), но enum'ы делал сам, тк scaffold их игнорирует.
В постгре значения енамов записаны с нижним регистром, но в asp.net указаны по-обычному.

Сопоставление указал, написал контроллеры, вроде всё ок.

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

Я и с атрибутами игрался, EnumMember указывал, разные сопоставления пробовал (и даже без него лол), но сука нихуя не работает.

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

Но блять, должно же быть решение, что бы по-человечески связывать енамы из entity framework со значениями из бд. Как это сделать? В чём я проебался?
Аноним 29/11/23 Срд 21:10:09 2943052 575
>>2943043
> В чём я проебался?
В том что решил хранить в БД енамы

Делай как человек:

class MyDictionray
{
public int Id { get; set; }
public string text { get; set; }
}

Заполняй - из своего enum'а,
Почему так лучше? Потому что так ты снизишь вероятность рассинхрона базы и своего enum'а. ЕФ - ну никак не будет следить за тем, что ты решил пару элементов в енуме поменять, передвинуть местами, добавить, удалить. В результате - ты такой спокойно себе в приложении чет добавил, а потом - не вдупляешь, что за залупа тебе из базы лезет.

Если не хочется на каждый енум создавать таблицу - можешь поэкономить и сделать всего 2 таблицы: тип и собственно запись.
Аноним 29/11/23 Срд 22:37:33 2943147 576
>>2934558
Да ты ебанулся. Это какой-то феерический манки кодинг, когда ты не запускаешь код, который поменял, и манки тестинг, когда никто не тестирует даже в общем виде создание/изменение/удаление сущности нового/изменённого функционала.
Я сменил 6-7 рабочих мест, и нигде такой пиздец не допускался.
Удивительно, что у вас вообще хоть что-то работает с таким подходом.
Аноним 29/11/23 Срд 22:47:15 2943161 577
>>2943043
Храни в виде строки. Я не знаю, как там в ЕФ маппинг настраивается, но это может проще работать.
Или вообще лучше проходи на mongodb.

>>2943052
Все, кто хранят значения enum в виде чисел, должны гореть в аду.
Аноним 29/11/23 Срд 23:36:47 2943249 578
>>2943161
>Все, кто хранят значения enum в виде чисел, должны гореть в аду.
все кто хранят енум как строки, должны гореть в аду
переименуешь енум и все сломается
Аноним 29/11/23 Срд 23:43:08 2943260 579
>>2943161
> Все, кто хранят значения enum в виде чисел, должны гореть в аду.
Это вообще тут при чем?
enum обычно используется там, где в домене определен какой-то набор константных значений.
Ну так вот. Хряня хоть в числе, хоть в строке - ты получаешь ситуацию, что у тебя рассинхрон БД и приложения. Начиная от того что ты опечатку сделал, заканчивая тем, что что-то добавилось в домен, что-то убавилось.
И что ты получишь, даже если ты в строке хранил? Ты получишь ситуацию, когда у тебя в таблице значения, которые теперь приложение обработать не в состоянии, потому что - ты поменял на уровне приложения что-то, миграцию забыл сделать, все, пиздарики, страдай.

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

Короче. Нормальный подход - то что должно быть енумом - должно быть отдельной таблицей. Если жмемся на отдельную таблицу для каждого енума - делаем одну супер-таблицу, в которой все значения енумов лежат(тогда правда ебатория с тем, чтобы таблицы, которые пользуют эти значения - не отражали доменную область, потому что из-за такого вот жмотства - ты вынужден городить либо триггеры, либо на уровне приложения следить постоянно, а это будет проблематично, если базой пользуются разные приложения)
Аноним 30/11/23 Чтв 06:54:31 2943402 580
>>2943260
Во-первых, у тебя такой же рассинхрон может быть по любому чиху. Добавил поле, убрал поле, сменил тип с дабла на инт.
Если ты каждый раз при апгрейде засидливаешь все енамы в бд заново, то можешь легко точно так же получить семантический рассинхрон. Меняешь местами два названия енамов, и всё, у тебя данные в БД некорректны.
Только это ещё хуже будет: если я в коде значение енама переименовал, то при попытке получения несуществующих данных будет ошибка, то есть есть шанс поймать это на этапе тестирования, а в твоём случае ты перестановку никак не поймаешь.

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

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

>>2943249
>переименуешь енум и все сломается
А ты переставишь два значения местами и кирдык, см. выше сценарий.
Аноним 30/11/23 Чтв 07:23:43 2943407 581
>>2943402
> А претензия к числовым значениям в БД у меня в том, что когда ты хочешь посмотреть, что у тебя за данные хранятся, надо либо смотреть в шпаргалку, либо каждый раз писать джойны.
Ты из какого года капчуешь? Даже хейдискуль - умеет отображать что там за внешним ключем лежит, не говоря уже про всякие навикаты и прочие просмотрщики содержимого.
Чи ты как дед - ручками пишешь: Select Zalupa ftom Hui?
Аноним 30/11/23 Чтв 09:14:09 2943430 582
изображение.png 56Кб, 486x399
486x399
изображение.png 29Кб, 660x144
660x144
изображение.png 57Кб, 878x252
878x252
изображение.png 58Кб, 981x224
981x224
>>2943043
Если кому-то не было похуй на енумы, то я вроде их решил.
HasPostgresEnum не поддерживает передачу массива поэтому пришлось использовать атрибут PgName в коде свойств самого енама, что бы явно сопоставить значения из ef со значениями из бд. В коде Program.cs сопоставление через NpgsqlDataSource.
Выводится всё теперь корректно, а от всякого конвертирования вовсе удалось избавиться.

Непонятно правда, какого хулео в документации вообще про все эти нюансы не указано https://www.npgsql.org/efcore/mapping/enum.html?tabs=with-datasource

Пик1 - Енам в EF
Пик2 - Указываю его в контексте данных
Пик3 - У модели с енамом не использую никакого конвертирования, только указываю свойства
Пик4 - Маппинг в Program.cs
Аноним 30/11/23 Чтв 14:18:00 2943779 583
Аноны, хочу внутри контрола добавить команду, как это сделано например в слайдере для всяких передвижений ползунков по хоткею.

В классе TestControl, наследуемом от UserControl, я создаю RoutedCommand и привязываю ее к методу OnExecuteMyCommand:

MyCommand = new RoutedCommand(
. . . . . . . . "MyCommand",
. . . . . . . . typeof(TestControl),
. . . . . . . . new InputGestureCollection() { new KeyGesture(Key.F, ModifierKeys.Control) });

CommandBindings.Add(new CommandBinding(MyCommand, OnExecuteMyCommand));


Но хоткей Ctrl + F не запускает команду. Если я наследую какой нибудь Button, то все срабатывает. Сначала я думал что дело в отсутствии реализации интерфейса ICommandSource, но дело как будто бы в отсутствии фокуса. Если я опять же буду наследоваться от UserControl, но кнопку добавлю в качестве контента этого контрола, то хоткей срабатывает. Пытался поставить свойство Focused = true, но не помогло.

В чем дело?
Аноним 30/11/23 Чтв 14:28:08 2943788 584
>>2943779
вообще то фокус и фокус клавиатуры - разные вещи
Аноним 30/11/23 Чтв 14:56:55 2943804 585
2023-11-3014-56[...].png 11Кб, 740x141
740x141
Аноним 30/11/23 Чтв 16:33:48 2943915 586
image.png 129Кб, 1373x822
1373x822
>>2940918
Короче захуярил такую архитектуру. Рейт
Аноним 30/11/23 Чтв 17:34:38 2944050 587
>>2940918
Не понял сути проблемы. У тебя объект уже хранит в себе данные о точках. Что мешает добавить методы AddPoints? RemovePoints, InsertPoints, UpdatePoints как это делается во всех остальных рисовальщиках?

Я делал именно так.
Аноним 30/11/23 Чтв 17:51:18 2944096 588
>>2944050
Суть в том, анон, что если хранить только точки, то линию нужно будет перерисовывать при каждом их добавлении. Поэтому объект во время рисования должен хранить внутри себя битмап, на котором будет дорисовывать линию по мере появления точек. И уже этот битмап будет отрисовываться на холсте, видимом пользователям. А после окончания рисования и отрисовки финальной версии на постоянном холсте, он должен этот внутренний битмап очистить, чтобы память не занимал.
Аноним 30/11/23 Чтв 18:39:24 2944266 589
>>2944096
>то линию нужно будет перерисовывать при каждом их добавлении
Нет, ты ДОрисовываешь линию от предыдущего сегмента.

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

А второе — то, что при масштабировании и скроллинге холста тебе полюбасу все видимое добро перерисовывать. В этом собсно вся и загвоздка всех этих редакторов, которые при 30 слоях формата 30 000 пикселей начинают лагать.
Аноним 30/11/23 Чтв 18:49:17 2944299 590
1701359356899.png 12Кб, 1440x381
1440x381
1701359356901.png 12Кб, 1422x386
1422x386
>>2944266
> Нет, ты ДОрисовываешь линию от предыдущего сегмента.
Нет, анон, если делать так, то линия будет с острыми углами, я рисую используя сплайн, для получения гладкой кривой. С ним я сначала дорисовываю линию, потом как появится новая точка стираю ее и перерисовываю с интерполированной.
Аноним 30/11/23 Чтв 18:52:56 2944310 591
>>2944299
Но это все не суть важно, главное тут то, что в процессе рисования холст будет постоянно изменяться, например если я рисую прямую линию или квадрат, то при каждом движении мыши нужно будет очищать холст и заново отрисовывать фигуру. И чтобы это не прописывать в коде я и хочу всю логику инкапсулировать в IGraphicObjectBuilder
Аноним 30/11/23 Чтв 19:04:24 2944330 592
2023-11-3018-57[...].png 31Кб, 1091x298
1091x298
>>2944299
> то линия будет с острыми углами, я рисую используя сплайн
Чел ... ну я подзабыл, что перерисовываются соседние сплайны, но у тебя никогда не будет перерисовываться что-то дальше соседних. Даже в режиме редактирования одной ноды, по факту должно активироваться указанная нода + две соседние.
Аноним 30/11/23 Чтв 19:14:07 2944347 593
>>2944310
А ты смотрел как устроен Canvas в WPF?
Аноним 30/11/23 Чтв 19:14:21 2944349 594
>>2944330
> Чел ... ну я подзабыл, что перерисовываются соседние сплайны, но у тебя никогда не будет перерисовываться что-то дальше соседних
Как я уже сказал, рисование линиями не ограничивается. Сплайны к слову тоже есть разные, для кубического нужно перерисовывать всю линию.
Аноним 30/11/23 Чтв 19:21:14 2944358 595
>>2944349
>для кубического нужно перерисовывать всю линию
Все что изменяется должно перерисовываться.

>всю логику инкапсулировать в IGraphicObjectBuilder
А что если один графический элемент идет поверх другого? Как твой IGraphicObjectBuilder будет знать о других объектах?
Я возможно ошибаюсь, но холст занимается отрисовкой, а не контент холста.
Аноним 30/11/23 Чтв 19:34:27 2944371 596
>>2944358
>Я возможно ошибаюсь, но холст занимается отрисовкой, а не контент холста.

Хотя я тут поразмыслил. Допустим холст отвечает за перерисовку. При добавлении контента в холст, он подписывается на изменение геометрии добавляемого контента (к примеру это будет VectorFigure).

В этом VectorFigure есть метод AddPoint. Далее этот метод вызывает событие изменения OnGeometryChanged, на которое реагирует холст.

Тут возникает вопрос, "а шо, холст должен хранить в себе все возможные методы отрисовки различных элементов?". Хороший вопрос.

Возможно ты прав. Надо смотреть как устроен Canvas в WPF.
Аноним 30/11/23 Чтв 19:37:10 2944374 597
>>2944371
Я только не понимаю, почему в WPF несколько контролов не могут одновременно держать один и тот же экземпляр графического элемента.
Аноним 30/11/23 Чтв 19:49:39 2944391 598
>>2944358
А зачем ему об этом знать? Объектами управляет сам холст, и он отрисовывает IGraphicObjectBuilder поверх предыдущего рисунка. Единственное, если нужно будет реализовать размытие или пиксилизацию или штамп, или ещё что-то, пиздец, то да, что-то нужно будет придумывать. Но это, имхо, уже больше к кистям относится, нежели к графическим объектам. Можно при начале рисования передавать контекст холста кистям, но если кисти он не нужен, то получается избыточность, да и откровенно сложно будет управляться с таким количеством перекрестных ссылок
Аноним 01/12/23 Птн 13:49:21 2945020 599
image.png 371Кб, 640x393
640x393
помогите ньюкеку
как работает порядок исполнения кода в сишарпе? если я сначала опишу функцию, а только потом её инициализирую, компилер пошлёт меня нахуй, отделается варнингом или скажет малаца?
Аноним 01/12/23 Птн 15:27:34 2945167 600
>>2920885 (OP)
Привет, анончики.
Кто-нибудь использует мак для программирования на дотнете? Поделитесь опытом
Аноним 01/12/23 Птн 20:24:47 2945754 601
>>2945020
Объясни толком, что конкретно ты хочешь сделать. В шарпе нельзя ни объявить функцию, ни инициализировать. Да и функций в привычном понимании в шарпе нет.
Аноним 01/12/23 Птн 20:25:40 2945756 602
>>2945020
"Ты пытаешься втереть мне какую-то дичь"
Аноним 01/12/23 Птн 20:30:46 2945767 603
>>2945754
>Да и функций в привычном понимании в шарпе нет
Тащем-та есть. Локальные.
Но инициализации и у них нет.
Аноним 01/12/23 Птн 20:32:14 2945772 604
>>2945167
Знакомые используют. Кто-то райдер ставит, кто-то VSCode.
Аноним 01/12/23 Птн 21:22:46 2945890 605
>>2945772
а они знают что в рф лгбт запретили?
Аноним 01/12/23 Птн 21:37:32 2945910 606
>>2945890
Запретили токо пропаганду. А они тихо-мирно, в своем узком кругу наяривают.
Аноним 01/12/23 Птн 21:51:17 2945937 607
>>2945910
пропаганду запретили давно уже. а теперь и движение
а значит его членам не стоит говорить о том, что они члены этого движения

а разработка шарпа на маке - именно такое.
Аноним 02/12/23 Суб 01:03:51 2946220 608
>>2945767
В локальные методы тоже this передается, чел...
Аноним 02/12/23 Суб 01:08:31 2946221 609
>>2946220
Ну ты конечно пчел.
Аноним 02/12/23 Суб 17:34:20 2946863 610
Аноним 02/12/23 Суб 17:58:47 2946900 611
>>2946863
Ты уже третий итт, кто пишет свой сервер с клиентом. Это на каких-то курсах нынче изучают?
Аноним 02/12/23 Суб 18:03:20 2946912 612
>>2946900
Всмысле третий? Это все был я скорее всего. Мне почему-то прям нравится эта фигня с тем что приходят байтики, они парсятся, потом еще диспечеризацию какую-нибудь динамическую на основе аттрибутов навесить.

Единственное. Я не могу вот что придумать. Как эффективно сделать хуйню которую я в свое время видел в мине. Типа что на одном порту - несколько протоколов могут висеть, и типа логика такая, что ты можешь с одной стороны - миддлварь и по нему гонять байтики для парсинга, а потом - добавить отдельный обработчик - и к нему приходит копия того что натекло с сокета, и он уже может по своему пайплайну погонять.
Типа да. Можно просто копировать перед тем как отправить в какой-то пайплайн и каждому пайплайну копию. Но в моей голове - это какая-то фигня получается неэффективная. Вот.
Аноним 02/12/23 Суб 18:11:14 2946928 613
>>2941670
Шарпоговнокод момент. Зато за геттеромакакинг покопротивляться успели, видите ли, то, что копрософт им с лопаты не скормил это всё нинужно и только код портит. Лол.
Аноним 02/12/23 Суб 18:25:05 2946938 614
>>2946863
Ты реально это говно 50-строчное сюда притащил? У тебя проблемы с самооценкой? Почему ты просишь это оценивать? Я бы понял ты бы какой-нибудь мессенджер написал, или ещё что-то клиент-серверное, но это даже кидать стыдно.
Аноним 02/12/23 Суб 18:35:59 2946944 615
>>2946912
>Я не могу вот что придумать.
А не проще тебе в исходники Asp.Net посмотреть?
Аноним 02/12/23 Суб 18:59:41 2946975 616
>>2946944
У них там контекст контекстом погоняет и фичи туда-сюда сует. Сложно для восприятия.
Аноним 02/12/23 Суб 19:47:57 2947054 617
>>2946938
Потому что по моему опыту реальных ревью, никто даже 1000 строк кода не будет смотреть. А если что-то среднее, тысяч на 60 строк кода, так вообще - будет два вопроса: 1) Где тесты? 2) Оно работает?
А я ревьюшечку хотел. Потому что меня уже задолбало, что на работе - никто мой код не ревьюит, всегда пишут: LGTM... А ревью хочу!
Аноним 02/12/23 Суб 20:09:29 2947112 618
>>2947054
>Потому что по моему опыту реальных ревью, никто даже 1000 строк кода не будет смотреть.
Потому код-ревью в виде "проверять и искать ошбики в коде" - это хуйня из под коня и придумана инфоцыганами для вкатышей с курсов. Чтобы у них было ложное ощущение, что их никто не бросит и всегда будет им попку подтирать. Никто на реальной работе (кроме самых упоротых) этим не занимается. Аппрув на код-ревью в большинстве случаев означает, что ты не хуй с горы и мерджишь свой код легитимно, согласно какой-то запланированной задаче, а не по желанию левой пятки.
Т.к. подразумевается, что все профессионалы и умеют рабоать свою работу (это не считая всяких анализаторов в IDE, стайлкопов и т.д.)
Аноним 02/12/23 Суб 20:26:29 2947140 619
>>2947112
Ну. Блин.
Я вот когда ревью провожу - как минимум пытаюсь вникнуть, что код должен был делать в контексте задачи. И доебываюсь, если вижу что-то в духе:

void Cancel(bool flag) => _canceled = flag;

Или когда код совсем какой-то непонятный - прошу либо комментарии написать, либо порефакторить, чтобы было понятно без необходимости лезть в таску или идти к разработчику, чтобы узнать, что это вообще такое и зачем оно так сделано.
Аноним 03/12/23 Вск 00:29:04 2947554 620
>>2946938
Какие же шарподебилы токсики, пиздец просто.
Аноним 03/12/23 Вск 06:50:03 2947692 621
Аноним 03/12/23 Вск 06:55:18 2947693 622
Аноним 03/12/23 Вск 07:12:23 2947697 623
>>2946863
https://github.com/BakaVaka/SampleClientServer/blob/master/src/Server/Listener.cs
> var temp = new Socket(_listenerEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
Имя переменной должно описывать, что в ней содержится.
> // do nothing, this is server call stop
> catch( OperationCanceledException ) {}
Это какая-то хуйня. Корректное поведение не должно вызывать исключения. Попробуй остановку не через CancellationToken делать. Сделай просто метод Stop().
> // если нам нужен "рестарт" и мы хотим переиспользовать объект слушаетля
Не надо переиспользовать объект listener для других хэндлеров, это не какой-то карьерный самосвал. Просто делай новый. Засунь хэндлер запросов конструктор. Можно сделать Listener<T>, где T будет хэндлер запросов и инжектить его через DI.
Алсо, преждевременная генерализация это примерно так же плохо, как преждевременная оптимизация. Обычно, если у тебя есть сервер, обрабатывающий запросы, он одним и тем же способом их обрабатывает до посинения.
Аноним 03/12/23 Вск 10:16:53 2947774 624
image.png 33Кб, 683x709
683x709
Жабёнок ты тут? Когда на работе попробуем потоки?
Аноним 03/12/23 Вск 10:56:49 2947797 625
RUr8Mp61l4g.jpg 207Кб, 1280x1058
1280x1058
>>2947774
Это вот на таких картинках основано убеждение шарподебилов в том, что макакить гетсеты не так уж и плохо? По теме — больше года назад попробую, когда вышла 19 джава.
Аноним 03/12/23 Вск 12:58:01 2947912 626
>>2947697
> Это какая-то хуйня. Корректное поведение не должно вызывать исключения. Попробуй остановку не через CancellationToken делать. Сделай просто метод Stop().
Я с этим полностью согласен, но майки это считают единственно верным способом остановки чего-нибудь в контексте асинхронщины.
>>2947692
Если я задиспозю сокет через юзинг в этом методе, то коннекшн при попытке что-то делать с ним - будет кидать ObjectDisposedException каждый раз, когда чет пытаюсь читать-писать в сокет. Потому сокет диспозится только если не удалось соединиться с удаленным хостом.
Аноним 03/12/23 Вск 18:03:48 2948282 627
>>2947697
Метод стоп, который вызовет свой внутренний CancellationToken
То есть код цикла не изменится
Изменится лишь семантика остановки

Хотя в данном случае семантика стоп получше будет
Аноним 05/12/23 Втр 17:06:43 2951193 628
Я залетный джавадибил перекатчик из другой технологии, который рассматривает для себя варианты куда собственно перекатиться.
Я правильно понимаю, что изучив C# я могу писать и бэкенд, и под андроид, и под айос, и даже игры? И всё это тут хорошо работает и за это даже можно получать кровавые доллары?
Аноним 05/12/23 Втр 17:55:43 2951262 629
>>2951193
В целом - да.
Но как всегда с оговорками.
MAUI - для андроида и иос - говнина.
Бекенд - отлично.
Десктоп - для винды - отлично, кроссплатформенный - с оговорками.
Игры - если про юнити, я бы после всей хуйни- не стал. Плюс - везде где шарп для игр используется, там оч много отличается на самом деле и знание большого шарпа не совсем кладутся туда и наоборот.
Аноним 06/12/23 Срд 14:39:26 2952309 630
>>2951193
Нет, здесь ты будешь ебаться с убогим сборщиком и шлёпать гетсеты.
Аноним 06/12/23 Срд 15:02:52 2952340 631
>>2952309
Ну хотя бы доки можно без впна увидеть.
Аноним 06/12/23 Срд 15:23:35 2952412 632
>>2952309
>шлёпать гетсеты
ты так говоришь, как будто что-то плохое
Аноним 06/12/23 Срд 15:28:46 2952437 633
>>2952412
Я бы по попе шлепал лучше...
Аноним 06/12/23 Срд 15:44:57 2952484 634
>>2952340
Доки по спидгетсетингу?
Аноним 06/12/23 Срд 15:46:16 2952488 635
>>2952412
За исключением бойлерплейта ничего.
Аноним 06/12/23 Срд 15:48:16 2952493 636
Аноним 06/12/23 Срд 16:09:24 2952540 637
>>2952493
Так если это не доки по спидгетсетингу и не гайд по пвп со сборщиком, какое это отношение к теме имеет?
Аноним 06/12/23 Срд 16:11:11 2952549 638
>>2952540
Откуда я знаю? Сам какую-то поеботу выдумал, сам же возмутился. Мелкомягкие-то свои доки не блочили, все еще можно свободно взять и посмотреть, хотя из рф они якобы ушли. Думаем.
Аноним 06/12/23 Срд 16:13:08 2952558 639
>>2952549
Я? Это же ты доки какие-то вкинул.
Аноним 06/12/23 Срд 18:17:42 2952848 640
image.png 12Кб, 591x89
591x89
image.png 168Кб, 1014x803
1014x803
image.png 27Кб, 658x255
658x255
image.png 97Кб, 294x171
294x171
Работяги, почему в VS в дебаг режиме приложение работает нормально и потребление памяти на растёт, держится в районе 400мб но когда я делаю релиз и в релизе начинаются качели. Сразу в 2гига памяти занимает приложение, потом начинаются качели то 2.5-1г, а потом через часа 3 вообще закрывается приложение без ошибок.
У меня в приложении есть 2 List<string> в которых может быть в общем 200к url адресов. Но бля это же не 2 гига же?
Собственно метод который я запускаю на скрине и то как я его запускаю семафор на 140 потоков.
Аноним 06/12/23 Срд 18:21:43 2952861 641
>>2952848
Хотя в дебаге тоже есть утечка памяти но происходит она медленнее релиза
Аноним 06/12/23 Срд 18:44:37 2952928 642
image.png 81Кб, 1076x646
1076x646
image.png 45Кб, 1076x359
1076x359
>>2952848
Вот думаю что это всё объекты HtmlAgilityPack, почему они не удаляются? Метод отработал, экземпляр класса уже нигде не используется же.
Аноним 06/12/23 Срд 19:02:40 2952969 643
>>2952848
А тебе прям обязательно эти 200к строк держать в памяти разом? Что мешает выгрузить их в файл/бд, а потом по необходимости доставать?
Плюс. Про свой агилити-пак. Посмотри, мож там что-то диспосабл, а ты не диспозишь.
Про утечку. В классическом смысле она в шарпе - сложно реализуема. Ищи объекты, которые долго живут и при этом держат ссылки на что-то.
Аноним 06/12/23 Срд 19:09:07 2952978 644
>>2952848
Да. Нахрен убери тредпул.
Делай как человек:

var tasks = Enumerable.Range(0, conceurrentWorkersAmount)
.Select( async x=> {
while(!cancellation.IsCancellationRequested){
await MyTask();
}
})
Аноним 06/12/23 Срд 19:10:35 2952983 645
>>2952969
В памяти их держу для проверки ходил ли я по этой ссылке или нет.
Захожу на страницу, добавляю её в список пройденных ссылок, паршу все ссылки которые есть на странице, далее проверяю их в списке ходил ли я по ними или нет, если не ходил то в очередь на парсинг их добавляю. Если держать ссылки в бд то будет очень долго проверку делать. Ведь на странице может быть 20 ссылок, 140 потоков это дохуя запросов к бд.
У HtmlDocument нет Dispose.
Если я правильно понимаю то в памяти хранятся всё что спарсил HtmlAgilityPack и не удаляются.
Аноним 06/12/23 Срд 19:11:27 2952986 646
>>2952848
Хм. ХММММ.
Смотрю И вижу что зеленым подчеркнуто в методе что ты в тредпуле вызываешь.
Предполагаю - это асинхронный метод.
Ты его не ждешь и сразу отжимаешь семафор.
Вангую, что падает из-за этого.
Аноним 06/12/23 Срд 19:16:17 2952992 647
>>2952978
> Делай как человек:
> linq
Аноним 06/12/23 Срд 19:23:55 2953007 648
image.png 30Кб, 641x277
641x277
>>2952986
Вот так надо было?
Я просто думал что после await год не пойдет дальше и будет запуск по 1 задаче.
Аноним 06/12/23 Срд 19:25:46 2953011 649
>>2953007
Вообще все эти авейт асинки магия для меня, пишу по наитию.
Аноним 06/12/23 Срд 19:28:09 2953016 650
>>2953007
Надо было либо как в примере с линку.
Либо, если так уж хочется тредпула -

ThreadPool.QueueUserWorkItem( async (_) => {
var crawl = new Crawl();
await crawl.GoAsync();
semaphore.Release();

})
Аноним 06/12/23 Срд 19:34:01 2953033 651
>>2953016
Я просто хочу в бесконечном цикле что бы запускались
var crawl = new Crawl();
await crawl.GoAsync();
И одновременно работало 140 копий, по завершению работы какой либо копии что бы подгружалась еще одна но максимум 140)
А трейд пул это жпт чат мне посоветывал)
Аноним 06/12/23 Срд 19:38:01 2953048 652
>>2953033

Ну и что тебе мешает сделать так, если линку не хочется:

List<Task> tasks = new();

for(int i = 0; i < maxTasks; i++){

var t = Task.Run( async () => {

while(true){
try{

var crawl = new Crawl();
await crawl.GoAsync();

catch(Exception){}

}
});
tasks.Add(t);

}

await Task.WhenAll(tasks)
Аноним 06/12/23 Срд 19:39:09 2953050 653
>>2953048
Это будет работать как раз через тредпул. И парралельно сколько надо твоих задач запускать.
Аноним 06/12/23 Срд 19:50:27 2953078 654
>>2953048
Спасибо, так вроде работает
Аноним 06/12/23 Срд 19:51:44 2953082 655
>>2952488
дурачку пояснили уже что свойства в шарпе ОТДЕЛЬНАЯ ОСОБАЯ ШТУКА, а не тупо указание компилятору "сгенерь за меня геттеры и сеттеры"
но дурачок не понимает
Аноним 06/12/23 Срд 20:07:00 2953108 656
>>2953078
>>2953048
Но всё равно куда то память утекает.
900мб, а начиналось все с 140, 70к урлов не могут же занимать 750мб
Аноним 06/12/23 Срд 20:14:34 2953114 657
>>2953108
Если ты по профиллировщику смотришь - то он не реальный размер памяти показывает.
Смотри в диспечере задач.
Аноним 06/12/23 Срд 20:23:35 2953119 658
>>2953114
Ну да там и смотрю.
уже 1.6гб(

Может быть когда делается
while(true){
try{

var crawl = new Crawl();
await crawl.GoAsync();

catch(Exception){}

}
После выполнения объект crawl и всё что с ним связанно остается в памяти?
Аноним 06/12/23 Срд 20:24:48 2953120 659
>>2953119
остается пока не будет скушано сборкой мусора.
Аноним 07/12/23 Чтв 07:12:33 2953407 660
>>2953082
И чё? Это как-то оправдывает гетсетошлёпанье?
Аноним 07/12/23 Чтв 07:40:39 2953413 661
>>2953407
Очередное напоминание, что в джаве нет свойств, и надо писать ажно по методу на каждый гет и сет, да ещё и поле заводить. Это куда больше бойлерплейта, чем в свойствах шарпа.
И да, есть ломбок, который может это сгенерировать, но
а) при добавлении логики придётся писать всё ручками
б) в джаве это было насколько убого, что аж пришлось делать целый тул кодогенерации

Для шарпа тоже мог бы существовать такой тул, который сам гет-сеты везде пропишет, но его никто не сделал. Знаешь почему? Потому что написать {get; set;} гораздо проще, чем
string m_fuckingField;
string getFuckingField(){return m_fuckingField;}
void setFuckingField(string value){m_fuckingField = value;},
и это никого не напрягает.
Аноним 07/12/23 Чтв 07:46:31 2953415 662
>>2953413
Я тут мимо пробегал.
По мне - свойства было лишним. Решил на днях на плюсах пописать ради восстановления знаний. И в принципе не возникло ситуации, в которой я по свойствам скучал особо.
Как и события и делегаты в том виде в котором их сделали(когда кто угодно откуда угодно может добавить свой обработчик, а ты ебись потом ищи, еще и по какой-то причине ссылку студия где добавляют обработчик не показывает, такой-то треш)
А вот рекорды - оч поздно завезли. Их надо было чуть ли не с самого начала вводить.
Аноним 07/12/23 Чтв 20:54:14 2954489 663
rtti.JPG 35Кб, 480x834
480x834
шарпач, есть ли способ объединить в свиче case A и case B, не трогая сами классы?
Аноним 07/12/23 Чтв 21:17:20 2954511 664
>>2920885 (OP)
Где-то видел инфу, что в дотнете запилили что-то вроде контейнеров, как я понял заменяющих докер. Сразу не прочитал, а теперь не могу найти. Кто-нибудь в курсе?
Аноним 07/12/23 Чтв 21:20:26 2954517 665
Аноним 07/12/23 Чтв 22:52:38 2954652 666
.png 32Кб, 390x353
390x353
.png 32Кб, 390x347
390x347
>>2954489
Выбирай что больше нравится
Аноним 07/12/23 Чтв 23:17:02 2954682 667
Я тут задался вопросом. А как в памяти-то объекты хранятся?

Ну. Типа. Вот структуры в классических компилируемых языках имеют вид в духе:

struict {
int a;
int b;
char c[4];
};


И в памяти это будет выглядеть примерно так(упрощенно, ессно, про выравнивания и прочее не думаем):
[00,00,00,00,00,00,00,00,00,00,00,00] - пустая
[00,00,00,01,00,00,00,01,00,00,00,00] - с 1 первых двух полях структуры

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

В общем. Кто тут шаристый. Поделитесь знаниями.
Аноним 08/12/23 Птн 00:10:01 2954718 668
Аноним 08/12/23 Птн 01:33:52 2954765 669
Аноним 08/12/23 Птн 11:31:03 2955061 670
image.png 110Кб, 916x638
916x638
image.png 57Кб, 802x474
802x474
Аноны помогите пожалуйста. Сутки сижу не могу замапить эту хуйню. Есть вот такие 2 сущности конфиги на скринах. При попытке их добавить вместе вылетает ошибка

>System.InvalidOperationException: The value of 'EntrepreneurInfo.Id' is unknown when attempting to save changes. This is because the property is also part of a foreign key for which the principal entity in the relationship is not known
Аноним 08/12/23 Птн 22:25:33 2956118 671
>>2954652
спасибо я совсем забыл про dynamic
Аноним 09/12/23 Суб 10:54:05 2956431 672
>>2955061
Зачем у тебя связи один к одному на этапе прототипа?
Типа если у тебя что-то привязано к какой-то там таблице, один к одному, то нихай и будет частью этой таблицы.
Аноним 09/12/23 Суб 13:31:51 2956514 673
Приветы!
Я только начинаю. Пробую решать задачки (например на LeetCode). Завёл себе отдельный проект в Visual Studio для задачек. Посоветуйте, как правильно его организовать, чтобы каждая задачка была обособлена (в папке там или в файле). И когда наживаешь F5 - то запускается именно та задача, над которой сейчас работаю.

Плаваю в понятиях "решение", "пакет", "неймспейс". Пока не очень понимаю, как они друг сдругом соотносятся.


Чат GPT посоветовал сделать такую структуру

LeetCodeSolutions

├── Task001
│ └── Task001.cs
├── Task002
│ └── Task002.cs
└── ...

у меня в каждом файле TaskXXX.cs содержится метод Main(), поэтому не запускается.

Наверняка такой велосипед уже сто раз изобретали. Помогите плес
Аноним 09/12/23 Суб 13:38:40 2956520 674
>>2956514
Пкм по решению, добавить проект, консольное приложение. Пкм по проекту, назначить запускаемым или как-то так. Новая задачка - новый проект.
Аноним 09/12/23 Суб 13:46:56 2956528 675
image.png 24Кб, 543x187
543x187
>>2956514
Нахуй этим заниматься, если литкод все задачки сохраняет?

Кстати, шарпаны, а ваша студия умеет историю файлов сохранять? Вот пик. Или нинужна ибо гит?
Аноним 09/12/23 Суб 15:57:55 2956767 676
На шарпе не принято использовать абстрактные классы? Везде вижу только интерфейсы, хотя, казалось бы, описываются сущности (взгляните, например, на библиотеку Discord.NET - там интерфейсы IMessage, IDiscordClient)
Аноним 09/12/23 Суб 16:57:47 2956821 677
>>2956767
при отсутствии множественного наследования (и слава богу) использование абстрактного класса должно иметь обоснование.
Аноним 09/12/23 Суб 17:34:54 2956914 678
>>2956821
> при отсутствии множественного наследования
> (и слава богу)
Стокгольмский синдром как он есть
Аноним 09/12/23 Суб 17:39:28 2956922 679
>>2956914
И нахуя нужно вводить проблему ромба? Какие плюсы-то?
Аноним 09/12/23 Суб 17:51:14 2956942 680
>>2956922
Плюс в возможности унаследоваться от двух классов, очевидно. Например от базовой вью модели и модели какой-либо сущности.
Аноним 09/12/23 Суб 18:14:55 2956990 681
>>2956767
>На шарпе не принято использовать абстрактные классы?
Принято. Постоянно используются.
Аноним 09/12/23 Суб 18:15:41 2956992 682
>>2956821
>>2956942
Тогда где применять абстрактные классы вместо интерфейсов?
Аноним 09/12/23 Суб 18:17:17 2956996 683
>>2956942
>Например от базовой вью модели и модели какой-либо сущности.
Какое же говно. Пиздец, надеюсь никогда в жизни не столкнусь с подобным кодом.
Аноним 09/12/23 Суб 18:28:35 2957021 684
>>2956996
Почему же? Мне вот сейчас приходится передавать модель в конструктор вью модели которая унаследована в свою очередь от абстрактной вью модели с параметром - UserViewMode: AbstractEntityViewModel<User>, где абстрактная модель в качестве аргумента конструктора принимает модель заданного типа. При множественном наследовании я бы просто создавал сразу вьюшки и использовал в том числе как модели
Аноним 09/12/23 Суб 18:53:10 2957049 685
>>2956767
Абстракный класс используется, если есть логика которую надо наследникам дать.
Если нужен только контракт - используется интерфейс.
Сущность это, хующность или еще что-то не важно.
Аноним 09/12/23 Суб 19:01:25 2957060 686
>>2956992
когда в этом классе полно собственной логики что делает невыгодным имплементировать ее в каждом классе.

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

>>2957021
проблемы весомее пользы, поэтому такого наследования много где нет.
любители наху...ить пусть идут в языки со множественным наследованием и там отрываются от души. чего они в шарп то пришли.
Аноним 10/12/23 Вск 04:34:06 2957419 687
шарпаны, а насколько уже заматерел блазор? хочу PWA себе сделать
Аноним 10/12/23 Вск 09:28:51 2957480 688
>>2957419
Вакансий на нём мало, но всё же они уже есть, значит, достаточно заматерел.
> себе сделать
В проектах для себя можно юзать хоть ноунейм васянские поделки.
Аноним 10/12/23 Вск 09:59:32 2957487 689
>>2957419
Блазор заебись сделали. При серверной модели хостинга он теперь умеет комбинировать подходы к отрисовке страничек. Хочешь полный интерактив, хочешь mvc вьюху отравляй, хочешь сборочку с васм клиентом.
Аноним 10/12/23 Вск 18:55:33 2958160 690
Господа, я сидел в криокамере последние 7 лет и помню, что winforms больше не модно и всех заставляют писать на wpf. Какие тренды в 2к23? Wpf всё ещё №1 или есть еще другие шаблоны?
Аноним 10/12/23 Вск 19:01:28 2958167 691
>>2958160
WTF успел выйти из моды, всех пытались заставить писать на UWP. Он мало кому понравился, все остались на WTF, а UWP типа легаси. Потом взяли Xamarin, выкинули оттуда поддержку линукса, назвали это MAUI и теперь заставляют писать на нём. Ещё есть сторонние Avalonia, Uno platform и Eto.Forms, они хотя бы поддерживают линупс. Как будто всё это говнище может сравниться с божественными винформами.
Веб
Аноним 10/12/23 Вск 19:03:16 2958171 692
>>2958160
А вообще, MS такого высокого мнения о своих либах для гуя, что Visual Studio Code написали на электроне.
Аноним 10/12/23 Вск 19:10:40 2958178 693
>>2958160
Впф сдох, а формочки на коне. А вообще встраиваешь в окно, которое тебе нравиться, webview2 и верстаешь на разоре.
Аноним 10/12/23 Вск 19:36:27 2958193 694
>>2956520
Спасибо! То, что надо!

>>2956528
если литкод все задачки сохраняет?

Ну для себя же. Чтобы когда-нибудь вернуться к решению, может отрефакторить его.

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

Можете пояснить, что это значит? Как у вас поворачивались мозги? Что лучше делать для этого?

Вот смотрю туторы всякие, пошагово переписываю их в IDE, вроде бы всё понятно и не суперсложно. Но как самому такое написать, сидишь тупишь, как обезьяна в мозгу Гомера.
Аноним 10/12/23 Вск 19:51:19 2958202 695
Аноним 10/12/23 Вск 19:52:47 2958205 696
>>2958193
Писать код в блокнотах и онлайн редакторах удел челов без нормальной ide, у которой есть нативная поддержка твоего ЯП.
Аноним 10/12/23 Вск 20:07:26 2958219 697
>>2958193
>Что лучше делать для этого?
Впусти в себя Иисуса.
Аноним 10/12/23 Вск 20:17:14 2958243 698
Меня оч сильно задолбало, что после сборки - в папке с собранным проектом - каша.

Допустим. Я бы хотел чтобы после сборки было что-то в духе

-app.exe
-appsettings.json
--packages
----Newtonsoft.Json.dll
----Npgsql.dll

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

Вот как мне такое сделать?
Аноним 10/12/23 Вск 21:25:58 2958384 699
>>2958243
Делаешь post build event в котором перемещаешь, все dll-ки в нужный тебе каталог. Добавляешь в app.config приложения путь где оно должно их искать. Вроде как-то так. Раньше это работало, но не знаю будет ли работать в современном .Net-е
Только я бы не советовал так делать, т.к. можно поиметь кучу непредвиденных сайдэффектов.
Просто привыкни, что тебе должно быть насрать, что там в выходном каталоге находится. Учись работать с CI/CD механизмами.
Аноним 10/12/23 Вск 21:35:56 2958405 700
>>2958384
Ну. Я немного приврал, что это меня бесит. Мне-то как раз пофиг всегда было.
А вот люди, которым доставляешь сборку - негодуют постоянно.
Типа они хотят типа чтобы было вот так:

app.exe
uninstall.exe
--doc
-----README
-----PatchNote
-----Instruction.pdf
----libs
-------lib1.dll
-------lib2.dll
--scripts
-----create.service.bat
-----start.service.bat
-----stop.service.bat
-----clean.bat

Я им говорю, что нахуй оно надо-то? Типа это же серверное приложение. Запустили, оно работает. Нех лазить в папки.
Мне говорят, что А ВДРУГ НАДО БУДЕТ, А НИХУЯ НЕПОНЯТНО.
Аноним 10/12/23 Вск 22:18:50 2958460 701
>>2958405
Тогда просто засовываешь все что билдится в один из подкаталогов сборки, и прокидываешь ярлыки. Типа вот так:
app.lnk <- ярлык на основной экзешник
uninstall.lnk
--doc
-----README
-----PatchNote
-----Instruction.pdf
--bin <- вот тут будет вся сборка проекта
--scripts
-----create.service.bat
-----start.service.bat
-----stop.service.bat
-----clean.bat

>>2958405
>Мне говорят, что А ВДРУГ НАДО БУДЕТ, А НИХУЯ НЕПОНЯТНО.
А ты им скажи, что нехуй лазить туда тем кому НЕПОНЯТНО, пусть квалифицированные люди это делают.
Аноним 11/12/23 Пнд 21:33:48 2959784 702
2.png 28Кб, 741x418
741x418
1.png 29Кб, 607x528
607x528
Есть тестовое задание написать сервис по конвертированию html в pdf
В описании задания файлы эти нужно хранить в памяти, но потом там же есть условие что сервис должен быть стабильным, т.е. если после того как клиент отправил файл на конвертацию на сервер и сервер был перезагружен, то он должен иметь возможность вернуть сконвертированный файл обратно клиенту, но как это сделать если все хранится в памяти? Нихуя не понятно

Другой вопрос, в условии сказано что html файлы могут быть большими и конвертация одного файла может занять 3-4 минуты, но так как все методы асинхронные то оптимизировать больше нечего?
Ну то есть вот контроллер, вот асинхронный метод в репозитории, а вот и сам асинхронный метод библиотеки которая и конвертирует, насколько я понял добавить/улучшить больше нечего?
Я думал может при вызове библиотечного метода конвертации отправлять его выполняться в другой поток через await Task.Run, но потом нашел вот что:
>Async and await on ASP.NET are all about I/O. They really excel at reading and writing files, database records, and REST APIs. However, they’re not good for CPU-bound tasks. You can kick off some background work by awaiting Task.Run, but there’s no point in doing so. In fact, that will actually hurt your scalability by interfering with the ASP.NET thread pool heuristics. If you have CPU-bound work to do on ASP.NET, your best bet is to just execute it directly on the request thread. As a general rule, don’t queue work to the thread pool on ASP.NET.
Хотя вот в других туториалах вполне себе пихают CPU-bound таски в await Task.Run, но мне кажется слушать белого человека с 15+ годами опыта в асинхронности лучше чем блогпост Раджеша из Индии, но все же

И еще вопрос, есть ли необходимость использовать Concurrent коллекцию? Ведь может случиться так что два разных файла сконвертируются одновременно и возможно появится проблема с добавлением их в обычную коллекцию
Аноним 12/12/23 Втр 00:28:03 2960012 703
>>2959784
Цитата говорит что не нужно планировать работу в потоке пула из запроса ведь ты и так находишься в потоке пула и можно работу просто выполнить.

А конвертить у тебя должен фоновый сервис который будет делать это в потоках вне пула (а то и в отдельных процессах)

Про хранение в памяти бред. Там должно быть про устойчивую к ребуту очередь конвертации.
Аноним 12/12/23 Втр 04:25:51 2960043 704
>>2959784
>Есть тестовое задание написать сервис по конвертированию html в pdf
Это на какой грейд? И сколько времени дается?
Аноним 12/12/23 Втр 07:08:12 2960062 705
>>2959784
> если после того как клиент отправил файл на конвертацию на сервер и сервер был перезагружен, то он должен иметь возможность вернуть сконвертированный файл обратно клиенту
Если прям так и написано, значит ты должен результат хранить где-то еще. Либо в базе, либо на диске, либо в редисе, либо еще где-то.

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

Асинхронность - это не про оптимизацию, а про эффективное использование ресурсов железяки.

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

> И еще вопрос, есть ли необходимость использовать Concurrent коллекцию? Ведь может случиться так что два разных файла сконвертируются одновременно и возможно появится проблема с добавлением их в обычную коллекцию
В базу пиши. Не выебывайся.
Аноним 12/12/23 Втр 07:21:07 2960071 706
>>2959784
Теперь про код.
Я бы уже завернул сразу.
1. В контроллере у тебя ниче быть не должно связанное с логикой приложения. Получай через DI сервис, отдавай ему стрим, результат - заворачивай в свой JSON/XML/HTML что еще тебе там надо. А вот эти вот размазывания логики между контроллером и остальной логикой приложения - не нужны.
2. Никаких Console.WriteLine - используй логгер нормальный.
3. using - убери скобки, отвратительно смотрится.
4. Убери уродство с Request.Form.Files, по взгляду на сигнатуру контроллера - нихуя не понятно, чего апи ждет, сваггером не подергаешь и вообще хуйня какая-то
5. Для контроллеров - надо XML доки писать, чтобы в сваггере - было понятно что за хуйня и зачем.
6. IActionResult - сразу нахуй.
7. BadRequest на все эксепшины - сразу нахуй, это не ошибка клиента, если у тебя место закончилось
8. Не вижу тестов.
9. Если уж и хранишь результат в какой-то коллекции в памяти - храни в словаре, чтобы по ключу делать TryRemove(resultId, out var pdf).
10. Зачем тебе копировать стрим? Достал из запроса - передал этот же стрим дальше.
Аноним 12/12/23 Втр 16:28:26 2960577 707
>>2960071
>3. using - убери скобки, отвратительно смотрится.
ФЛОМАСТЕРЫ.
не каждый сахар шарпа удобен
и вот это одно из них.
Аноним 12/12/23 Втр 17:10:15 2960626 708
>>2960071
> Зачем тебе копировать стрим? Достал из запроса - передал этот же стрим дальше.
Копирование стрима это база базовая, ведь никогда не знаешь, что с этим стримом может сделаться, пока ты его сношаешь.поэтому бывает один и тот же стрим копируется чуть ли не десяток раз, хотя в действительности не изменяется
Аноним 12/12/23 Втр 17:23:51 2960651 709
>>2960626
но ты ЗНАЕШЬ
ты знаешь что стрим тебе не нужен, а значит можешь его дальше передать. И если там кому то нужно сто раз его читать - то это его уже забота.
Аноним 12/12/23 Втр 17:41:02 2960680 710
>>2960071
>4. Убери уродство с Request.Form.Files, по взгляду на сигнатуру контроллера - нихуя не понятно, чего апи ждет, сваггером не подергаешь и вообще хуйня какая-то
Разве можно получать сразу стрим с клиента? Или ты иммешь ввиду получить файл через скажем List<IFormFile> files и уже в репозитории его в стрим?
>>2960071
>6. IActionResult - сразу нахуй.
Почему? И какая альтернатива?
Аноним 12/12/23 Втр 18:30:05 2960756 711
>>2960680
> Или ты иммешь ввиду получить файл через скажем List<IFormFile> files и уже в репозитории его в стрим?
Можно и просто через IFormFile. Без листа. Но да.
Почему? Потому что тогда сваггер - тебе красивенько нарисует кнопку с выбором файла и ты сможешь проверить свое апи без лишних телодвижений.
А сверху - тебе ASP провалидирует это дело и до обработчика даже дело не дойдет, если пришла какая-то лажа.

> Почему? И какая альтернатива?
Потому что непонятно что в результате вернется в случае успеха. Допустим, если у тебя какая-то легкая операция, которая ничего не мутирует - ты нормально можешь дернуть это апи, чтобы проверить. А если это вот такая тажелая фигня, или что-то мутирующее(например удаление/изменение), это просто неудобно(взял, нафиг, и удалил всю тестовую базу, теперь иди и заново засеивай ее)
Альтернатива:
ActionResult<Что ты там возвращаешь>
Или просто Что ты там возвращаешь.

Исключения, когда это что-то прям низкоуровневое что приходится прямо в Response писать. Но это редкость и не этот случай.
Аноним 12/12/23 Втр 18:56:14 2960777 712
>>2960756
>>2960756
>Без листа
А что если юзеру лень будет по одному файлики на форме клиента заливать? Мне то лично не сложно, но работодатель думаю вполне может и спросить про этот момент
Аноним 12/12/23 Втр 19:00:46 2960780 713
>>2960777
В коде что изначально был - только один файл берется. Предполагал, что это обговорено в описании задачи.
А так - да. Согласен, что в реальном использовании - лучше коллекцию использовать.
Аноним 13/12/23 Срд 05:21:11 2961348 714
изображение.png 29Кб, 624x167
624x167
Ребят, чота решил сделать бота для fc 24, но столкнулся с такой проблемой, что на сайте игры, чтобы нажать кнопку, нужно выполнить event mousedown на кнопку, а не обычный click.
Пользуюсь cefsharp, голову уже сломал, но отправить этот mousedown на кнопку я не знаю.

Никто не подскажет ?
Аноним 13/12/23 Срд 07:42:22 2961366 715
>>2961348
Вроде как додумался, брать относительные позиции xy и посылать евент туда
Аноним 13/12/23 Срд 09:43:01 2961407 716
Насколько хорошая идея вкатываться в юнити в 20234? Есть опыт написания говна на шарпе почти 5 лет.
Аноним 13/12/23 Срд 09:54:05 2961423 717
>>2961407
Не знаю насчет конкретно юнити, но вкатывание в геймдев в принципе такое себе.
Аноним 13/12/23 Срд 22:44:17 2962521 718
Я сделал страшное. Класс на 1800 строк.
Как мне с этим жить?
А главное, как мне его рефакторить?
Суть класса-то операция импорта данных из файла в приложение. Разбить на более-мелкие - можно, но это же бред, сам класс нужен ровно для одной фичи, и вот эти микроклассы которые получатся - будут просто фигней, которая расфосована по файликам, но нужна все для той же одной фичи.

Пожалейте меня. Пожалуйста.
Аноним 13/12/23 Срд 23:26:18 2962557 719
>>2962521
Нам тебя жаль
Ты ж бестолочь
Аноним 14/12/23 Чтв 11:44:03 2962823 720
>>2962521
>Разбить на более-мелкие - можно, но это же бред, сам класс нужен ровно для одной фичи, и вот эти микроклассы которые получатся - будут просто фигней, которая расфосована по файликам, но нужна все для той же одной фичи.
Можешь не разбивать, а оставить как есть. Подождать месяца 2 и потом вернуться к классу с целью что-нибудь там изменить/исправить/добавить.
Вот тогда ты себя уже не жалеть будешь, а материть и проклинать.
>>2962521
>А главное, как мне его рефакторить?
Начни сначала с выноса всякой повторяющейся мелочи в экстеншены и обертки/дто
Аноним 14/12/23 Чтв 16:25:47 2963227 721
varvar.JPG 27Кб, 543x582
543x582
допустимо ли так делать и если нет, то есть ли лучше способы?
Аноним 14/12/23 Чтв 16:50:34 2963261 722
я хотел бы визуализировать типовой Excel файл в WinForms, может кто подсказать хорошую альтернативу DataGridView что бы она поддерживала слияние ячеек из коробки?
Аноним 14/12/23 Чтв 18:09:09 2963381 723
>>2963227
>ли так делать
Так - это как? Что сделать то хотел?
Аноним 14/12/23 Чтв 20:29:45 2963598 724
>>2962521
Операция импорта из файла обычно делится на несколько этапов, которые достаточно независимы. Ну типа, парсинг файла, валидация спаршенных сущностей, мапинги, сохранение загруженных данных куда бы то ни было и т.д. Всё это можно в отдельные классы выделить. Смысл - меньше когнитивная нагрузка на читающего.
Аноним 15/12/23 Птн 12:03:34 2964101 725
>>2920885 (OP)
Шарпаны, какие неймспейсы предпочитаете: block_scoped или file_scoped ?
Аноним 15/12/23 Птн 14:49:38 2964358 726
Почему на шарпах так мало вакансий в крупные рф компании?
Везде го жаба и так далее, я понимаю что нг скоро и найма мало но все таки

Уже впечатление что надо в го перекат делать

мимо 2 года шарпов
Аноним 15/12/23 Птн 14:50:15 2964360 727
>>2964101

Если у тебя один неймспейс на файл, то file scoped топ.
Аноним 15/12/23 Птн 14:52:33 2964365 728
>>2964358
или шарпы в рф нужны чтобы получить опыт и пиздовать горбатиться на западного барина?
Аноним 15/12/23 Птн 15:06:51 2964388 729
>>2964358
> в го перекат
После шарпа - боль и унижение на каждом шагу.
Аноним 16/12/23 Суб 08:16:54 2965871 730
>>2964101
Те что без скобочек.

Моя коричневая мечта - что и для классов сделают как для неймспейсов, учитывая, что 99% времени у тебя один файл - один класс. Так на кой хуй тратить место под эти отсутпы?
Аноним 16/12/23 Суб 14:22:17 2966103 731
>>2964358
Почитал про go в очередной раз. Минусы, которые вынес для себя:
ждуну будут платить 50-80k (не больше, чем на любом другом языке)
вакансий столько же, сколько на C#
не получится устроиться чистым go-разрабом. Даже у Яндекс.Практикума на курсах в дополнение идёт второй "неочаровательный" язык (питон, php, js)
вывод - в 90% случаев будешь не гофером, а переводчиком с php на go
ещё один знакомый (ждун на go) моего знакомого поделился болью, что вынужден писать на Go монолит, вместо божественных микросервисов. Он привёл аналогию - это как на феррари ездить по московским 9-ти балльным пробкам.

энивэй, я всего лишь вкатывальщик на C#
Аноним 16/12/23 Суб 15:14:29 2966155 732
>>2966103
> не получится устроиться чистым go-разрабом. Даже у Яндекс.Практикума на курсах в дополнение идёт второй "неочаровательный" язык (питон, php, js)
То же самое относится к шарпу
Аноним 16/12/23 Суб 18:31:09 2966466 733
>>2966155
>То же самое относится к шарпу
Да нихуя. С приходом б-жественного .Core/.Net, как раз таки намного легче получается быть чистым бекендером. Я уже полтора года как никакого фронта не касался и реакт уже забывать начал.
Аноним 17/12/23 Вск 19:25:28 2967690 734
Что происходит когда я создаю структуру Span<T> | Memory<T> в одном методе и посылаю его другому методу? Что происходит в стэке и со структурой?
Получается что стэк метода-обработчика структуры как бы внутри стэка метода-создателя и поэтому ничего не копируется и оба могут адресовать структуру пока исполнение не вышло за пределы метода-создателя?
Я правильно понял?
Аноним 17/12/23 Вск 19:32:54 2967695 735
image.png 157Кб, 616x354
616x354
>>2967690
*само-апд
Вот пикча. за джс извени
Получается что пока с методом one() не распрощались, то его локальные переменные всё ещё висят в стэке?
(И теоретически доступны для two() и three(), ну и объясните если локальные переменные в one() изолируются two() и three() то примерно каким образом?)
Аноним 17/12/23 Вск 20:23:40 2967755 736
>>2967695
Все так. С хвостовыми вызовами не совсем так. Параметры передаются в метод, их значения копируются ниже по стеку. Это могут быть значения, а могут быть ссылки-знаения. Например если ты вызовешь несколько методов, один из другого, углубляя стек, и будет передавать одно и тоже int значение (структуру) (например 5), то это значение скопируется в стеке столько же раз.
Аноним 18/12/23 Пнд 13:59:11 2968199 737
>>2958160
>Как будто всё это говнище может сравниться с божественными винформами.
Твое отношение поменяется, когда задача будет чуть сложнее создания кнопочки и текстбоксика. А если смотреть с позиции "оно и нафиг нам нинужно", то можно сидеть на vba 7.

Но перечисленные новиночки и в правду говно. Возможно только у авалонии есть шанс.
Аноним 18/12/23 Пнд 15:58:24 2968305 738
Всем привет! Начал изучать C# для интереса, давно хотел попробовать. Скачал книжку для изучения, и все бы ничего, но нет возможности установить Visual Studio (под рукой только запароленный ноутбук рабочий, на который без админки ничего не поставить). Подскажите, пожалуйста, есть ли какой-нибудь онлайн компилятор или можно что-то в этом случае придумать? Заранее большое спасибо
Аноним 18/12/23 Пнд 16:02:46 2968308 739
Как обновить ObservableCollection из другого потока? Я просто ебал в рот, что только я не перепробовал уже. Уже тысячу раз делал переключение потоков и всё работало всегда адекватно, но ObservableCollection это пиздец. Вроде в итоге сделал что-то типа такого
Application.Current.Dispatcher.Invoke(new Action(() => AddToColletion(item);
и оно работает, НО ТОЛЬКО НЕСКОЛЬКО РАЗ. Несколько раз отрабатывает и падает с
>Данный тип CollectionView не поддерживает изменения в своем SourceCollection из потока, отличного от потока Dispatcher
Как-будто поток просто перестаёт переключаться на главный
Аноним 18/12/23 Пнд 16:14:02 2968326 740
>>2968308
Пофиксил. Рефрешил коллекцию вручную вот таким способом раньше и забыл убрать, когда уже не нужно стало.
CollectionViewSource.GetDefaultView(MainCollection).Refresh();
Когда убрал, то почему-то начало работать нормально. Почему - хуй знает.
Аноним 18/12/23 Пнд 16:23:14 2968335 741
>>2968308
Так ты задачу-то не решил. Обновление все равно идет из диспатчера. Давай думай дальше.
Аноним 18/12/23 Пнд 16:26:17 2968340 742
>>2968335
>Обновление все равно идет из диспатчера
И что?
Аноним 18/12/23 Пнд 17:01:17 2968377 743
>>2968305
>есть ли какой-нибудь онлайн компилятор
Дохуя их по запросу "C# online"
>или можно что-то в этом случае придумать
Скачай portable версию Visual Studio Code.
Аноним 18/12/23 Пнд 19:58:24 2968576 744
>>2967755
Это только к хвостовым относится?
И где ещё прочитать про работу замыканий в C# на низком уровне?

>>2968377
>Скачай portable версию Visual Studio Code.
И что ему с ним делать? По дефолту с виндой идут только .Net Framework (и те скорее просто рантаймы без SDK, ну или SDK максимум четвёртой версии).
https://learn.microsoft.com/en-us/archive/blogs/astebner/mailbag-what-version-of-the-net-framework-is-included-in-what-version-of-the-os
Аноним 18/12/23 Пнд 20:29:23 2968607 745
F0SgRrIXgBk7q6g.jpg 39Кб, 547x680
547x680
>>2959784
Kjk, это же самое тестовое только вчера закончил делать и отправил, а сегодня зашел в тред и тут такое
Аноним 18/12/23 Пнд 21:04:58 2968640 746
>>2968377
А какой конкретно компилятор посоветуешь? Может есть список годноты
>>2968576
Я даже портабл скачать не могу. Ноутбук прям сильно огорожен паролем
Аноним 18/12/23 Пнд 21:42:24 2968673 747
>>2968576
Нет, там речь шла про обычные вызовы, при которых стек углубляется. При неосторожной рекурсии можно получить переполнение стека.

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

Почитай Сидиристого dotnet book.

Про лямбды вот есть пост >>2729162
Аноним 18/12/23 Пнд 21:43:37 2968675 748
Аноним 18/12/23 Пнд 22:46:29 2968704 749
>>2964358
Крупные это яндекс-мыло-банки-озон-авито?
Чем тебе тот же додо не угодил? 2гис? Да много на самом деле вакансий.
А если взять то же производство - то на крупных просто дохуища вакансий(другое дело, что там опыт специфичный).
Просто многие крупные компании, которые шарпы используют - не айтишные, а это накладывает некоторые особенности. Это да.
Аноним 18/12/23 Пнд 23:33:18 2968730 750
изображение.png 183Кб, 1263x822
1263x822
изображение.png 199Кб, 1147x873
1147x873
Здравствуйте. Можно ли оставить логику авторизации и регистрации в контроллере? Или лучше вынести их в отдельные сервисы?
Аноним 18/12/23 Пнд 23:48:44 2968735 751
>>2968730
Можно хоть в Program.cs все приложение сейчас писать.

А про лучше. Ну, вот тебе понадобится эта логика еще в каком-нибудь месте. Простой пример - в твоем приложении нужен будет шлюз чтобы через JSONRPC авторизоваться. Так сто лучше - вынести. Не понадобится, ну, и хорошо. А понадобится - потом может не быть время на рефакторинг.
Аноним 19/12/23 Втр 00:24:07 2968757 752
>>2968730
Регистрация обычно делается через контроллеры, слишком уж она специфичная. Но аутентификация/авторизация предполагает некую миддлварь, которая пишется отдельно от контроллеров и срабатывает до передачи им управления.
Аноним 19/12/23 Втр 00:27:37 2968759 753
>>2968735
>>2968757
Это я пытаюсь аналог Identity server сделать. Тут всего две задачи: авторизации и регистрация. Приложение, которое будет выполнять круды - отдельное там, собственно, мидлваре и т.д. Спачибо за ответы. Оставлю пока так.
Аноним 19/12/23 Втр 00:29:20 2968761 754
>>2968759
Ну и клиент будет только веб.
Аноним 19/12/23 Втр 00:32:56 2968764 755
>>2968757
Щито там специфичного, что в контроллерх делать надо и нельзя сделать какой-нибудь IIdentityService?
>>2968759
Ну. Как хочешь.
Просто кейс, когда надо будет потом делать какую-нибудь точку входя для OAuth, или наоборот для регистрации OpenID или еще чего-нибудь, не гори, что придется кучу копипасты хреначить и страдать.
Аноним 19/12/23 Втр 00:36:42 2968766 756
>>2968704
Мы как раз уже месяц C#-backend-мидло-петушка ищем в команду. Только вот беда, что одни нихуя не знающие вкатунцы на собесы приходят. На столько вкатунцы, что я аж выхуеть не могу (типо девочки-тимлида, которая как aaync-await работает не знает, не говоря же об архитектуре). Хз чем анон ноет, если действительно шарит.
Мимо-озоноблядь
Аноним 19/12/23 Втр 00:43:15 2968773 757
>>2968764
Ну это вряд ли придётся делать. Задача просто наваять сайт, куда наша компания будет загружать запрос на логистику и на него другие компании будут отвечать. Можно вообще не заморачиваться и ебануть два поля в бд: email, password и всё, но я хочу чтобы было хоть как-то по правильному. Вот решил asp.net Identity использовать и jwt токены, чтобы в react прокидывать
Аноним 19/12/23 Втр 00:47:30 2968776 758
>>2968773
А почему не хочу в сервис выделять - лень + проект разрастётся. Щас у меня компакный проект, где минимум папок и т.д. Папка с сервисами всю малину попортит.
Аноним 19/12/23 Втр 00:48:49 2968777 759
>>2968766
Хрюшу меняйте на мужика, желательно не пидора.
У нас такая же шляпа началась, как кун ХР съебал. Как только пизду выкинули на мороз и снова куна поставили - сразу нашли несколько нормальных человек.
Аноним 19/12/23 Втр 00:58:16 2968786 760
>>2968766
Какая ставка? Интересно.
Аноним 19/12/23 Втр 01:03:04 2968789 761
>>2968786
Если честно, то хз. Я обычный разраб, мне такая инфа не доступна. У нас инфу по вилке только лид и вышестоящее начальство видят.
Аноним 19/12/23 Втр 08:12:45 2968880 762
>>2968730
Че это за говно? OAuth2 делай, епт.
Аноним 19/12/23 Втр 11:34:36 2969010 763
>>2968880
Почитал я про OAuth2, но так и не понял зачем мне он нужен. Мне же нужна простенькая авторизация по email/password. К тому же я уже использую jwt токены. Мб я что-то не понял, опыта то в этом вообще нуль
Аноним 19/12/23 Втр 11:36:04 2969013 764
изображение.png 119Кб, 1243x471
1243x471
изображение.png 88Кб, 1149x332
1149x332
Аноним 19/12/23 Втр 14:17:16 2969138 765
Пацаны.
В общем.
Какая ситуевина.
Работал я над программулиной. На шарпе. Программулина - сервер.
Собственно. Разработал.
Все вроде как заебись.
НО. Возникла проблема.
1. Клиенты не хотят докер ставить(типа сервера на которые ставится моя хрень - не подключены к внешнему интернету, так что просто стянуть контейнер не получится)
2. Есть клиенты и с линуксом и с виндой.

При этом - качать сами по инструкции зависимости - тоже не хотят.
Говорят - хотим инсталлятор, чтобы далее-далее-далее-ок и все само.
Ну. Для винды - я взял и запихнул все с помощью InnoSetup. Вроде для винды решение ок.
Но для линукса - все еще остается проблема. Приходится писать шелл-инсталляторы, а там - такой, блядь, зоопрак. У кого-то деба, у кого-то редхат, кто-то на убунте, там учти что надо добавить PPA репки нужные, тут - скачай что-то.
При этом клиентам - весь этот юникс вей - до пизды на самом деле, им хочется чтобы поставил и работало.

В общем. Я, наверное тупой. Но разве нет какого-то инструмента, чтобы просто наклацал: дотнет, постгрес, нгинкс и вот этот вот архивчик поставь, из архивчика переложи в ~/server/www то что лежит в папке www, остальное - переложи в папку ~/server/back, создай демонов для постгреса и нгинкса.

Да. Проблема же еще в том, что программулина доступна на сайте, ее по идее кто хош должен иметь возможность скачать и поставить. Опять же с виндой - все ок. А как делать правильно в линуксе, чтобы не ебаться с зоопарком этих всех дистрибутивов - я так и не понял.
Аноним 19/12/23 Втр 17:48:34 2969382 766
Аноним 19/12/23 Втр 18:01:50 2969399 767
>>2969382
Докер сам никто ставить не хочет, няш.
maui + syncfusion Аноним 19/12/23 Втр 23:45:09 2969705 768
Всем здрасте, пишу курсач частью которого является мобильное приложение, выбор пал на maui, до этого пробовал работать с android studio – не понравилось. Так вот: начал использовать syncfusion listview, чтобы кайфово работать с фильтрацией данных(поиск и еще всякие параметры), т.к. не нашел в интернетах как можно сделать те же функции с использованием стандартного listview. Накидал логику с дизайном, запустил и... узнал что syncfusion, оказывается, платный, конечно есть бесплатный пробный период, но ныне доступ к сайту забугорных чуваков закрыт для российского пользователя, так что не знаю есть ли смысл его получать. Так вот, можно ли как-нибудь кинуть sf на подписку и дать проекту поработать чуть дольше, чем две минуты? Либо же есть способ реализовать необходимые мне функции через стандартный инструмент?
Аноним 20/12/23 Срд 02:48:00 2969819 769
>>2969705
Ну. Хм.
Вот давай подумаем. Можно ли это сделать с помощью стандартных инструментов.
Представим, что мы - синфьюжн и у нас еще нет этого навороченного листвью. Учитывая, что мы знаем, что в будущем сделаем - наверное способы есть.
Допустим, тебе нужна фильтрация. Ее нет из коробки.
Что бы мы могли сделать, имея некоторый опыт работы с интерфейсом других программ?
Ну. Например - сделать кнопку: фильтр, при клике на которую - будет попап, в котором бы можно было настроить фильтры. Настраиваем фильтры, жмакаем применить, фильтр применяется на вью-модельевскую коллекцию.
Далее - мы хотим еще поиск какой-то. Как это можно реализовать? Берем инпут в который можно вводить текст. Делаем кнопку с лупой. Если нажали кнопку с лупой и текст инпута не пустой - применяем какое-нибудь contains на коллекцию вью модели.
Для курсача - этого более чем достаточно.
Аноним 20/12/23 Срд 11:03:00 2970124 770
Фарпаны, а есть кто учился с ментором?
Бывает ли такое, что за условные 5тыр в месяц человек доводит тебя с нуля (ну или с хеллоуворлдщика) до скиллов, позволяющих начать искать работу?
Имею ввиду, конечно, реальные скиллы программирования, а не как жёстко наябывать в резюме

Гугл выдает сайты getmentor, solvery и т.д. Интересует, есть ли итт люди, которые этим пользовались и пришли к успеху? Или успешные ASP.NET господа, практикующие менторство?
Аноним 20/12/23 Срд 11:43:58 2970164 771
>>2970124
Не учился и не верю что кто-то с нормальными скиллами будет тратить свое время, чтобы реальные скиллы дать, если это не вуз.

По своему опыту - теория + много практики дают самый ощутимый буст.

Могу краткий гайд для фуллстека дать.

Теория
- Основы(системы счисления, структуры данных, алгоритмы, терминология, сети, и т.д.)
- SQL на уровне - создать БД с таблицами, базовые операции чтения-записи-удаления-изменения, разные виды JOIN'ов, нормальные формы(хотя бы до 3й), базовое администрирование(создать пользователя, настроить ему разрешения для ограниченного списка операций)
- Сам шарп + .NET(понимать, что это вообще за зверь, что такое CLR, общие вещи для .NET'а типа модулей, сборок и вот этого всего)
- ASP.NET Core - что такое, зачем
- Любой фреймворк для фронта из тройки(Angular, React, Vue), на уровне того, что ты можешь туду лист сделать и отправить запросики на сервер, получить жсончики в ответ и отрисовать этот самый ТуДу лист
- Докер
- Линукс на уровне - можешь подключиться по SSH, посмотреть логи grep'ом, посмотреть сколько там места на сервере, поправить конфиги через vim, создать сервис, положить куда надо сертификаты, обновить пакеты, настроить сеть
- Архитектура и паттерны(базово, можешь MVC назвать, MVVM, месседж бас)
Очереди(на уровне - можешь в докере подрубить ребит и 2 сервиса через очередь заставить общаться)

Практика - берешь и выбираешь любой проект который тебе интересно, если ниче не интересно - CMS/Интернет магазин/Автоматизация какой-нибудь библиотеки/IOT хуйня для умного дома.
Собственно, делаешь проект. Пока не сделаешь на том уровне, что сам бы пользовался хотя бы иногда. В процессе - набиваешь шишки, понимаешь, нахуя вся хуйня вообще нужна.
Аноним 20/12/23 Срд 12:20:09 2970220 772
>>2970124
>что за условные 5тыр в месяц
За 50К в месяц я был бы готов уделить тебе максимум по 4 часа в неделю (разово или разбитыми на 2 части). Сам подумай сколько нихуя ты получишь за 5К.

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

Мимо, успешный ASP.NET господин.
Аноним 20/12/23 Срд 12:32:21 2970241 773
>>2970220
Чёт слишком дохуя ты свое время оцениваешь. Тебя на работе меньше ценят, уёба. 3к в час блять. Соси хуй и отвечай бесплатно в треде, инцел.
Аноним 20/12/23 Срд 12:39:51 2970250 774
>>2970241
Я не он, но оценка более-менее справедливая. Нормальный разраб с опытом получает около 250к в месяц. Это, при 23 рабочих днях в месяц и 8 часовом рабочем дне даёт где-то 1.35к в час. Учитывая, что менторить вкатунца придется после работы, то это должно идти по сверхурочной ставке, тобишь x2. Вот и выходит 2.7к ч в час.
Но будем честны, вкатунец даже косарь в час скорее всего не потянет.
Аноним 20/12/23 Срд 12:49:58 2970257 775
>>2970241
Чел. Время после работы - это личное время, и задешево его проебывать - никто, имеющий нормальные скиллы - не будет.
Тем более, что для нормального менторинга надо:
Оценить уровень
Составить программу в зависимости от уровня долбоеба
Составить задания
Следить за выполнением
Выяснять че долбоебу не понятно
Подсказывать
Разбираться в его говнокоде

Плюс - это требует от того кто менторит - желание именно учить.
Лично я бы дешевле чем 100к в месяц, по 5 часов в неделю(по часу в день, либо 2.5 в выходные вечером). И то, только если бы увидел, что чел реально мотивированный и будет то что я ему даю - делать по 6-8 часов в день сам, а я - только проверять и корректировать, отвечать на вопросы.

Ну а если бы я просто хотел заработать - мне проще связаться со знакомыми и взять на выходные халтурку. Там не нужно объяснять, готовить что-то, просто взял, сел и сделал, получил денежки и пошел по делам.
Аноним 20/12/23 Срд 12:57:17 2970260 776
>>2970257
>Там не нужно объяснять, готовить что-то, просто взял, сел и сделал, получил денежки и пошел по делам.
У меня проще взять дежурство на выходной во время накатки релиза. Из обязанностей только быть на связи (я на удаленке) и отвечать ребятам с прода на вопросы по установке сервисов. Иногда подкинуть им пару конфигов или скриптов для базы если они забыли. Все остальное время сидишь и занимаешься своими делами, хоть в игры играй, хоть сериалы смотри. Можно вообще куда-нибудь из дома свалить, главное ноут с собой взять.
8 часов практически нихуя не деланья = +20К
Аноним 20/12/23 Срд 12:57:28 2970261 777
>>2970257
>>2970250
Да мне похуй, когда он там будет жопу свою поднимать. Че блять если вы на подработку устраивайтесь в такую же позу встаете, хуе мое, личное время, давай х2. Нахуй вас пошлют.
Тут тоже работа, пошел бы он нахуй с такими расценками, проще стажером пойти, и вообще нихуя не платить, а этот уеба будет забесплатно слушать мое нытье и терпеть.
Аноним 20/12/23 Срд 13:05:49 2970273 778
>>2970261
> если вы на подработку устраивайтесь в такую же позу встаете, хуе мое, личное время, давай х2
Ну как бы да. Обычно, когда всякие халтурки беру, то делаю по более высокой ставке, чем если бы просто работал. В большинстве случаев люди это понимают и относятся нормально.

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

Если хочется дешевле, то welcom на всякие курсы от всяких скиллбоксов и гикбрейнсов. Там тебя поменторят.
Аноним 20/12/23 Срд 13:08:46 2970281 779
>>2970261
>Да мне похуй, когда он там будет жопу свою поднимать.
Тебе похуй, ему тоже похуй. Все при своих остаются.
>Че блять если вы на подработку устраивайтесь в такую же позу встаете, хуе мое, личное время, давай х2.
Так а смысл брать вторую работу за такие же или меньшие бабки, если их можно и на основной работе получить, просто за переработки или доп. задачи? Подработку как раз и берут, когда нужно срубить денег побольше и побыстрее.
>проще стажером пойти
В 2023-м? Ну удачи, чо. Расскажешь потом.
Аноним 20/12/23 Срд 13:13:14 2970287 780
>>2970273
>если он самых базовых вещей не умеет
Ну это-то можно и без ментора поправить, имхо.
>>2970281
>Так а смысл брать вторую работу
Семью там создать. Это жи тет а тет. Что ты понимаешь!
>В 2023-м? Ну удачи, чо.
А зачем тогда ментор?
>Расскажешь потом
Ну мне стажерство предложили, хотя я жабист...
Аноним 20/12/23 Срд 17:19:34 2970667 781
>>2970164
О, спасибо, няш!

А что из этого можно опустить или наоборот, минимум, который нужно оставить, если только на БЭКА учиться?
Аноним 20/12/23 Срд 17:24:10 2970678 782
>>2970667
>если только на БЭКА учиться?
Лол, это по сути и есть минимальны стек на бэкендера. Из того, что я вижу можно выкинуть разве что MVVM, ну и из js фреймворков оставить только один, реакт например.
Аноним 20/12/23 Срд 23:10:12 2971025 783
Ребят, а вот у ITVDN в курсах
.NET Developer
ASP.NET MVC Developer,
ASP.NET Core Developer
чем они, блять, отличаются? Особенно последние два

встречается ADO.NET. Это что-то устаревшее?
Аноним 21/12/23 Чтв 00:47:34 2971070 784
>>2971025
>встречается ADO.NET. Это что-то устаревшее?
Это база на которой по сути работают и EF и даппер и прочие ормки.
Знать хотя бы поверхностно её лишним не будет, просто хотя бы для понимания, что там под капотом происходит. Но если тебя на собесе будут на полном серьезе про то как она работает спрашивать, с прицелом на то, что "у нас все на чистом ADO.NET работает", то съебывай оттуда нахуй, без оглядки.
Аноним 21/12/23 Чтв 09:40:59 2971222 785
Это снова я >>2968305. Попытался на блокноте писать. Но из-за отсутствия библиотек (поправьте если ошибаюсь) условные диалоговые окна по другому пишутся как в книге указано. Да и каждый раз в командной строке писать немного душно. Поэтому ещё раз прошу посоветовать выход из указанной в посте ситуации. Большое спасибо и с наступающим новым годом.
Аноним 21/12/23 Чтв 09:53:40 2971228 786
изображение.png 49Кб, 643x524
643x524
Здравствуйте. Это схема из спецификации OAth2.0. Вопрос такой: где мне реализовывать регистрацию, восстановление пароля, смену почты? Насколько я понял, то Authorization Server нужен для того, чтобы выдавать access токены, а это значит, что делать контроллеры и сервисы для регистрации на нём нельзя? Где тогда всё это располагать? На ресур сервере? - вряд ли. Решил использовать OpenIddict библиотеку. У них там есть примеры с кодом, но нигде нет примера с регистрациеймб я плохо искал, у них пользователи тупо зашиты в коде. Помогите, пожалуйста. https://github.com/openiddict/openiddict-core - сыллка на OpenIddict
Аноним 21/12/23 Чтв 10:01:49 2971233 787
>>2971228
Почему нельзя? В кейклок условно это все делается установкой пары галочек. Кстати, а нахуя вы сами велосипедите сервера авторизации?
Аноним 21/12/23 Чтв 10:05:13 2971234 788
>>2971233
А есть готовые? Я просто хз, впервые делаю проект коммерческий, поэтому не хочется проблем с оплатой лицензий и т.д. Знаю, что есть IdentityServer4, но по-моему он больше не поддерживается, а последующие версии платные.
Аноним 21/12/23 Чтв 10:06:52 2971235 789
Аноним 21/12/23 Чтв 10:11:44 2971238 790
>>2971235
Э. А я хочу на шарпе всё. Тем более я уже сделал регистрацию/авторизацию/смену пароля/аллаха на Identity ASP.NET Core. Просто хочу прикрутить OAuth2. Там мне выше кто-то написал, что это всё (Identity ASP.NET Core) хуйня и надо OAuth заделать. Вот сижу и думаю, как это правильно сделать
Аноним 21/12/23 Чтв 10:12:49 2971239 791
Аноним 21/12/23 Чтв 10:16:02 2971241 792
Тем более, когда буду с завода увольняться я сис админ, скажу что сам реализовывал аутентификацию. Думаю, что это будет плюсом для меня
Аноним 21/12/23 Чтв 11:25:32 2971292 793
image.png 191Кб, 809x585
809x585
>>2971241
>скажу что сам реализовывал аутентификацию
Ты не понимаешь ddd.
Аноним 21/12/23 Чтв 11:51:22 2971318 794
>>2971292
Но я хочу сам сделать. Я уже в курсе, что есть готовое решение в виде кейклока
Аноним 21/12/23 Чтв 12:53:22 2971392 795
image.png 4Кб, 259x116
259x116
Допустим, у меня есть прикриплейд.
Собственно. Проект с Api - нужен чтобы внешнему консьюмеру давать данные. Проект QueueWorker - нужен чтобы отделить запись и чтобы если сервис не лег если много кто-то и часто писать будет.
Стоит ли делать третий проект для внутренних апишек, типа это могут быть и запись и чтение, но в специальном формате, который не идет наружу, а нужен для какой-то специальной логики внутренним сервисам?
Или это все я хуйней страдаю и переусложняю, а достаточно было один проект сделать и в нем все хуярить?
Аноним 21/12/23 Чтв 13:56:51 2971486 796
>>2971222
Чел, ну ёмана. Из тех кто здесь сидит (да и вообще тех кого я знаю) онлайн компиляторы нужны примерно никому, поэтому для того чтобы дать тебе совет, это нужно лезть в интернет, пробовать каждый, изучать и т.д. Кому это нахрен нужно.
Ты сам давно уже мог ввести в поиске "C# online compiler" и пробовать их изучать и работать.

Со своей стороны могу посоветовать, если есть планшет на андроиде, то можешь попробовать вот это:
https://4pda.to/forum/index.php?showtopic=1009215
Там нормальная IDE с автодополнением. Можно ставить нюгеты, поддерживает даже ASP.NET и можно там же компилить и собирать, есть куча примеров и уроков.
Аноним 21/12/23 Чтв 13:58:52 2971487 797
image.png 237Кб, 400x400
400x400
>>2971233
>кейклок
Говнина ебаная.
Аноним 21/12/23 Чтв 15:09:36 2971614 798
почему в таком прекрасном языке нет горутин и виртуальных тредов? В го и джаве есть, а в божественном шарпе нет.
Аноним 21/12/23 Чтв 15:46:20 2971662 799
>>2971614
Сможешь внятно объяснить, чем эти горутины/виртуальные треды лучше TPL?
Аноним 21/12/23 Чтв 15:55:44 2971669 800
Аноним 21/12/23 Чтв 17:58:36 2971763 801
>>2971486
Извините, я только учусь и очень туго соображаю. Я вот прочитал и вроде как можно сделать портабл вариант Visual Studio (флешку к ноуту подрубить можно). Это рабочий вариант?
Аноним 22/12/23 Птн 00:11:55 2972090 802
Ребят, я сейчас с ума сойду. Почему коды выводит True?..

using System;

public class A
{
public int t;
}
public class B : A
{
}

class Program
{
static void Main()
{
A a = new A()
{
t = 3
};

B b = a as B;
Console.WriteLine(b == null);
}
}
Аноним 22/12/23 Птн 00:22:41 2972095 803
>>2972090
Потому что a ссылается на объект типа A, а не B, и as не может привести тип к B, поэтому возвращает null.
Привести что угодно к какому угодно типу нельзя, здесь не джаваскрипт и не питон. Можно привести к реальному типу объекта или его предку, но не к потомку, и не важно, что в потомке нет новых полей.
Аноним 22/12/23 Птн 00:23:17 2972097 804
>>2972090
>B b = a as B;

Рискну предположить, что b == null, т.к. ты создал переменную b, но не проинициализировал её. Т.е. наверн надо написать B b = new a as B
Аноним 22/12/23 Птн 00:33:40 2972100 805
>>2972090
Потому что нельзя родительский тип привести к наследуемому типу.

Теперь давай думать, а почему.

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

А можно не метафору а попробовать подумать, как это примерно должно работать для компуктера в упрощенном виде(это не совсем то как оно работает в реале, но для наглядности).

Вот допустим, у тебя есть некая структура данных в памяти вида:

struct A{
int t;
void⋆ ctor1;
void⋆ destructor;
void⋆ methodsTable;
void⋆ virtualMethodsTable;
}

struct B{
A⋆ parentGuts;
void⋆ parentCtor1;
void⋆ ctor1;
void⋆ destructor;
void⋆ parentMethodsTable;
void⋆ methodsTable;
void⋆ virtualMethodsTable;
}

Ну так вот. Как видишь, структура B - знает что она наследник A. А что это значит? А это значит, что в принципе - никакой сложности с тем, чтобы использовать B как A - не возникает и мы легко приводим тип к родительскому.
Но вот структура A - ничего о наследниках своих не знает. Даже если они пустые и нихуя в них нет. Как компуктер догадается, где что должно лежать для струткуры A если мы хотим представить ее как B? Никак не догадается в обычном случае, если мы хитрые колдунства совершать не будем.
Аноним 22/12/23 Птн 02:56:55 2972156 806
>>2972090
Ты должен понимать, что А : B это не какой-то единый организм. А может существовать как отдельный независимый класс и у него может быть очень много наследников. Но вот у B наследник конкретный.

Когда ты инициализируешь B, то он инициализирует сперва родителя A, потом сам себя. В итоге ты можешь обращаться как к B, так и А. Ты можешь сам это проверить, добавив вывод в консоль в обеих конструкторах A и B какой-то текст, затем посмотреть что происходит.
public class A
{
public A()
{
Console.WriteLine("Constructor A");
}
}

public class B : A
{
public B()
{
Console.WriteLine("Constructor B");
}
}

Если ты создашь новый экземпляр A, то в консоли будет это
Console.WriteLine("Constructor A");

Если ты создашь новый экземпляр B, то в консоли будет это
Console.WriteLine("Constructor A");
Console.WriteLine("Constructor B");


А если сделать наоборот? Ну предположим, что при инициализации A, инициализируется наследник B. Почему бы так не сделать? Теоретически все норм, но что если у тебя сотни наследников разных типов: C, D, R, F, J и т.д. ? Какой из них инициализировать? Все сразу? Ерунда какая-то.

Или представь, что ты создаешь еще один класс-наследник, работа которого зависит от параметров в его конструкторе.
public class Zalupa : A
{
public Zalupa(string lastName, string firstName){. . .}
}

Мы видим, что невозможно создать новый экземпляр Zalupa без ввода параметров lastName и firstName. Но ты берешь и инициализируешь класс A, а потом пытаешься при помощи него добраться до класса Zalupa, у которой нет информации о lastName и firstName.
A a = new A()
Zalupa z = a as Zalupa;
Тут как минимум нужна машина времени или хз что.
Аноним 22/12/23 Птн 09:28:23 2972327 807
>>2971392
Э. Стой. сервак авторизации, который я пытаюсь запилить - это вообще отдельное приложение, которое запускается отдельно. Основное приложение, где планируются круды по слоистой архитектуре сделано и на него будет переадресация после авторизации на сервере авторизации. А вообще всё можно в одном проекте захуярить, меня никто не контролирует в этом плане да и некому, я тут единственный (на работе), кто может хоть что-то написать, помимо 1C программистов
Аноним 22/12/23 Птн 09:30:22 2972329 808
>>2972327
Вернее переадресация будет на фронт, который планирую на реакте написать. А вот уже с фронта круд запросы будут на бекенд поступать
Аноним 22/12/23 Птн 10:26:57 2972367 809
Помогите плиз с програмой - написал консольное приложение C# обработки PDF файлов (конвертация в PNG файлы с использованием Ghostscript.NET.Processor). Как в нее добавить многопоточность/асинхрон обработки данных, чтобы обработка данных была быстрее?
Аноним 22/12/23 Птн 10:32:32 2972374 810
>>2972367
async/await бахни. Авось заработает.
Аноним 22/12/23 Птн 11:22:30 2972426 811
>>2972374
> async/await бахни. Авось заработает.
> конец 2к23
> программач.итоги
Аноним 22/12/23 Птн 11:42:49 2972445 812
>>2972374
>>2972426
Бахнул async/await по канонам - не заработало)
Аноним 22/12/23 Птн 11:57:07 2972472 813
image.png 676Кб, 1561x641
1561x641
Продолжаю начинать смотреть купленные на торрентах видосы от ITVDN.
Курс называется "ASP.NET Базовый".
И, что-то чувствую, подвох. Скажите, пожалуйста, вот эти все aspx на скрине - это тоже всё устаревшее?
Аноним 22/12/23 Птн 12:13:17 2972504 814
>>2972445
Ясен хуй не заработает, если методы библиотеки не являются асинхронными. Да и в целом асинхронность существует для того, чтобы не стопорить параллельные задачи, типа работы UI.

Нужна многопоточность, но я ни разу не работал с Ghostscript.NET.Processor, так что не помогу.
Аноним 22/12/23 Птн 12:24:05 2972517 815
>>2972504
>Ясен хуй не заработает, если методы библиотеки не являются асинхронными
Как же хороша многопоточка в сишорпе. Не то что в джаве. Виртуальные треды не нужны, кстати) Асинк/эвейты - интуитивно понятное решение)
Аноним 22/12/23 Птн 12:34:44 2972538 816
>>2972472
Судя по виду это скорее всего ASP.NET WebForms, которое только на .NetFramework и это древнее говно мамонта. Бросай нахуй смело, если только не рассчитываешь работать с какой-нибудь совсем легаси парашей.
Аноним 22/12/23 Птн 12:36:58 2972543 817
>>2972517
Не, ну ты можешь создать таску и выполнить асинхронно неасинхронный метод, но в целом данное решение не всегда может дать положительный эффект.
Аноним 22/12/23 Птн 13:14:55 2972603 818
>>2972543
Если ты имеешь ввиду просто сделать

Task DoAsync(){
DoSync();
return Task.CompletedTask;
}

То этот код выполнится синхронно.

Если

await Task.Run(DoSync);

То это тоже выполнится синхронно, но в тредпуле.

Если хочется параллельности без лишних изъебств, то надо использовать ParallelQuery. Ну или через тредпул как деды, а тасками или прямо дергать тредпул - уже самому решать.
Аноним 22/12/23 Птн 14:09:26 2972731 819
image.png 26Кб, 856x522
856x522
>>2972327
Я не знаю зачем ты мне ответил. Но раз никто не ответил, давай я к тебе долюблюсь, потому что ты либо странно выражаешься, либо что-то не так делаешь. А мне - скучно.

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

Это максимально простой и понятный флоу, который подходит для маленьких и средних проектов.

Для гейтвея - можешь использовать что удобно. Можешь еще один Nginx настроить, можешь - взять Traefik, можешь - Ocelot. Самописное - лучше не брать, потому что заебешься, хотя иногда - и это норм.

Теперь. На всякий случай уточняем. Данные пользователя - ты не хранишь в открытом виде. Никакие. Потому что если это РФ, твое ПО завернут на ФЗ о персональных данных, и тогда придется плясать вокруг пидорасов, которые 100500 денег за услуги по безопасности вокруг требуют. Оно тебе надо? Не надо. Все шифруем-хешируем. Пароли - солим и тоже хешируем.
Далее. Через пару месяцев после ввода в эксплуатацию, тебе скажут: У нас есть корпоративные учетки/гугловские учетки/учетки госуслуг, потому - сразу надо продумать механизм авторизации-регистрации через других поставщиков. Как минимум - на бумаге и в модели заложить, чтобы было куда потом расти.
Далее. С вероятностью 99% двухфакторная аутентификация потребуется. Сейчас в принципе уже почти везде ее требуют, если себя уважают. Потому - хотя бы СМС придется уметь отправлять.
Далее. РФ, а значит ЭЦП. Вход по ЭЦП наше все. Особенно если это завод, как ты сказал, ведь через полгодика-год, вашу приблуду захотят сертифицировать в ФСБ, а там без ЭЦП - тебя сразу нахуй пошлют.
То что забывают чаще всего при первой версии ПО для авторизации-аутентификации. Восстановление пароля. Даже если одмен руками пользователей заводит - механизм сброса пароля /восстановления доступа должен присутствовать.

В общем. Вроде ниче не забыл.

Как же пиздец мне скучно. Вы бы знали. Еще и прямо в отпуске - компуктер сдох с игрульками, которые собирался пройти. Жду, когда привезут новый. Обидно - пиздец.
Аноним 22/12/23 Птн 14:33:09 2972798 820
>>2972731
Ничёсе ты выдал. Спасибо большое. Восстановление пароля уже есть, двухфакторку щас делаю, но пока только по email'у. Данные само собой в открытом виде не хранятся. А вот авторизация через другие учётки - это как раз OAuth 2, который я пытаюсь реализовать. А вот про гетвей вообще не знал, буду делать
Аноним 22/12/23 Птн 14:42:17 2972808 821
>>2972731
А ещё такой вопрос. Во у меня есть таблицы от Identity ASP.NET Core с ролями, пользователями и т.д. Как мне связывать, допустим, написанные пользователем новости в бд? Правильно понимаю, что нужно сделать две бд: identity и news. А связывать это всё, допустим, Guid айдишником пользователя. Или можно вообще всё в одну бд спихнуть и сделать связи от identity user -> news
Аноним 22/12/23 Птн 15:06:37 2972838 822
>>2972808
Все от архитектуры зависит.
Если разные приложения с отдельными базами, то ты в приложении где news - делаешь таблицу
Условно.
Subscribers(TopicId, UserId).
Для реализации фичи - этого обычно достаточно.

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

Конечно - удобнее было бы это все в одной БД держать. Но тогда при росте приложения - начинается боль. Чем больше база, тем сложнее ее поддерживать, тем больше соблазна - переложить часть логики в нее и вообще. А если логика а БД - это значит тесты уже не такие дешевые. Да.

Короче. Ответ на вопрос - зависит.

Я бы делал во втором приложении явную таблицу ПользователиПриложения(условно), в которой столбец - IdentityUserId. Вот на основе этой таблицы бы уже вся хурма с подписками и прочим в этом приложении. Чтобы не придумывать всякое разное, когда окажется, что надо всякие настройки хранить помимо подписок. Типа реально же - потом надо будет по регионам разбить твои новости, языкам, заблоченым/пользователям. Все это в Identity - не хочется пихать все. Опять же - это дает возможность, если надо, войти, попользоваться приложением в каком-то ознакомительном режиме, потом сохраниться и привязать IdentityUserId и не потерять что ты там настроил.
Аноним 22/12/23 Птн 15:24:05 2972882 823
Аноним 22/12/23 Птн 21:21:12 2973221 824
Аноны, где посмотреть исходники дефолтных классов?
Если нажать по F12, то мне выдает поверхностную информацию "из метаданных", в гугле выдает какой-то бред.

К примеру, мне нужен класс
System.Windows.Media.TranslateTransform
Вот "типа" исходники
https://github.com/microsoft/CodeContracts/blob/master/Microsoft.Research/Contracts/PresentationCore/Sources/System.Windows.Media.RotateTransform.cs

Но если посмотреть, там метод public RotateTransform(double angle) абсолютно пуст.
Аноним 22/12/23 Птн 21:27:37 2973236 825
image.png 100Кб, 805x388
805x388
>>2972538
Чел, чел, спасибо!

А вот это актуалочка?
MVC - на слуху. Entity Framework - тоже.
Смущает Web API. Razor-страницы
Темы курса такие:
Урок 1: Вступление. Установка. Ознакомление
Урок 2: Структура базового проекта. Что такое Middleware
Урок 3: Конфигурация. Основы конфигурации.
Урок 4: Понятие маршрутизации
Урок 5: MVC. Основные значения
Урок 6: Модели
Урок 7: Представления
Урок 8: Контроллеры
Урок 9: Web API. Razor-страницы
Урок 10: Entity Framework Core
Урок 11: Публикация приложения. Доступные сервера
Аноним 22/12/23 Птн 22:11:54 2973270 826
>>2973236
>Смущает Web API. Razor-страницы
Web API норм. Насчет razor pages я х.з. вроде старый, но говорят, что зная их, можно легко въехать в тот же Blazor.

Я бы тебе советовал вот это для начала прочесть:
https://metanit.com/sharp/aspnet6/
Разобрать каждую тему, тогда уже хоть какое-то понимание появится.
А потом уже лезть во всякие MVC и т.д.
Аноним 22/12/23 Птн 23:09:27 2973302 827
>>2973221
Студия криво работает с некоторыми библиотеками и вместо декомпиляции показывает метаданные.
Исходники можно почекать на https://source.dot.net/

Конкретно для RotateTransform класс состоит из двух частей
1.
https://source.dot.net/#PresentationCore/System/Windows/Media/Generated/RotateTransform.cs
2.
https://source.dot.net/#PresentationCore/System/Windows/Media/RotateTransform.cs


Можно установить расширение
https://marketplace.visualstudio.com/items?itemName=EfreyKong.Ref12-VS2022
Оно по сути, по нажатию F12 будет запускать в браузере ссылку на тот же https://source.dot.net/
Аноним 22/12/23 Птн 23:58:38 2973335 828
насколько бредово пилить экстеншен на сеттер интерфейса?
что-то типа:
public int Hueta
{
get => hueta;
set => hueta = this.SetHueta(value);
}
Аноним 23/12/23 Суб 14:21:36 2973690 829
KDT7-i8-gyDuHxd[...].jpg 113Кб, 960x793
960x793
>>2973335
Интерфейса? Он же абстрактный, там нет сеттеров.
И зачем тебе пилить дополнительный статический класс, чтобы работать с другим экземпляром?

Какова конечная цель?
Аноним 23/12/23 Суб 14:46:13 2973706 830
Как комбинировать partial static классы?

Допустим в одной библиотеке у меня есть класс partial static MyLibrary.Math
И в другой библиотеке partial static MyLibrary.Math

Вторая библиотека импортирует первую и я ожидаю, что в классе Math мне будут доступны методы из первой библиотеки. Но я получаю конфликт имен. Разве partial не для этого создан?
Аноним 23/12/23 Суб 16:00:13 2973743 831
Встретился с такой вот таким поведением.

В общем. Смотрите. Есть у меня класс билдер приложения. Делал по принципу миддлваров.
Т.e. Use(Func<Context, CancellationToken, Task> handler, Func<Context, CancellationToken, Task> next, CancellationToken ct);

Собственно.
У меня есть миддлварь вида:

(ctx, ct) => {
try{
if(next!=null) await next(ctx, ct);
}
catch(Exception e){
_logger.LogError(e);
}
}

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

И вот какая фигня. Ниже - идет загрузка dll, та dll загружает уже другую dll и там где-то кидается исключение, которое вот этот вот обработчик не ловит, и никто тоже не ловит; но при этом - ASP'шный обработчик ошибок как-то таки это все ловит, лул.

Чего делать - я не знаю. И что происходит - тоже не понимаю. Типа я ожидаю что исключение обработается. Оно не обрабатывается. Ну ок. Не обрабатывается, я ожидаю что тогда программа упадет. Но она тоже не падает.
Как искать-то причину и что вообще происходит - я хз.
Какие-нибудь зацепки?
Аноним 23/12/23 Суб 16:19:00 2973761 832
Аноним 23/12/23 Суб 16:22:53 2973766 833
>>2973690
у меня иерархия наследования вышла такой ебанутой и базовый класс вышел настолько толстым, что я решил лучше все переписать. пытаюсь обобщить и убрать из базового класса как можно больше функционала, но понял уже что так насиловать интерфейсы нельзя
Аноним 23/12/23 Суб 16:43:52 2973788 834
>>2973335
В reactive ui так сделано
Аноним 23/12/23 Суб 18:40:04 2973886 835
Блядь, открыл первую главу учебника, и охуел с того, как тут много рассказывается про фреймворки .NET, .NET Core, ASP.NET Core и т д.

Есть у кого-то инфографика того, что придется изучать?

Правильно ли я понимаю, что есть несколько языков - C#, F#, VB. Всем им доступна среда исполнения .NET Core, которая упаковывает и запускает программы, конфигурирует библиотеки? Слово Core вроде бы убрали? Все верно?
Аноним 23/12/23 Суб 18:44:09 2973893 836
>>2973886
Достаточно ли для понимания того, что как и у Java, у сисярпа есть виртуальная машина, которая исходный код на нем превращает в CIL (или IL), и потом исполняет, + кроссплатформенно?
Аноним 23/12/23 Суб 18:57:08 2973910 837
>>2973886
>>2973893
В принципе понимание верное, только
>Всем им доступна среда исполнения .NET Core,
сама среда называется CLR (Common Language Runtime).
Аноним 23/12/23 Суб 18:59:36 2973914 838
Аноним 23/12/23 Суб 19:03:58 2973921 839
>>2973886
.NET и .NET Core это сейм щит.
.NET Core был, когда .NetFramework, но последнее говно мамонта иссохло, и .NET Core стал просто .NET

>Правильно ли я понимаю, что есть несколько языков - C#, F#, VB. Всем им доступна среда исполнения .NET Core, которая упаковывает и запускает программы, конфигурирует библиотеки? Слово Core вроде бы убрали?
.Net - это семейство программных продуктов, включающих в себя языки программирования, библиотеки, инструменты и другие компоненты, необходимые для создания приложений.

Код C#, F# и VB переводится в промежуточный язык CIL.
Ты даже можешь создать один проект на VB, а другой на C# и оба проекта будут прекрасно взаимодействовать (за исключением пары нюансов).
Аноним 23/12/23 Суб 19:11:17 2973930 840
>>2973706
Так как ты хочешь - никак.

Partial - это сахар, который позволяет разделить исходный код по разным файлам в пределах одного проекта.
Под капотом, после компиляции, это все равно будет один класс в пределах одной сборки.
Аноним 23/12/23 Суб 19:18:25 2973946 841
>>2973921
>Ты даже можешь создать один проект на VB, а другой на C# и оба проекта будут прекрасно взаимодействовать (за исключением пары нюансов).
Для любителей извращенного, при желании можно даже код на Java выполнять в среде .Net.
Для особых ценителей, обратное (С# на JVM), вроде как, тоже возможно.
Аноним 23/12/23 Суб 22:19:40 2974262 842
>>2973946
>Для любителей извращенного
Ну мне эта возможность очень помогла с переходом с VB на C#. Я не стал доделывать программу до конца на VB, а просто добавил новый проект на C# и продолжил писать программу. До сих пор использую либы на бейсике.
Аноним 24/12/23 Вск 00:26:38 2974512 843
Еще такой вопрос. Я с плюсов потихоньку перекатываюсь, знаю что такое абстрактный класс. В C# все тоже самое?

И еще, интерфейс это штука, которая по сути может объединить несколько классов ,которые реализуют этот интерфейс? Типо говорю функция void sheet(inter a, inter b), где а и б - разные классы, реализующие один интерфейс?

Плюс еще вопрос, нахуй нужны свойства? Понимаю про методы и поля, а свойства где используются и зачем?
Аноним 24/12/23 Вск 01:31:07 2974620 844
>>2974512
>интерфейс это штука, которая по сути может объединить несколько классов
Интерфейс не может объединять классы. А вот класс может реализовать несколько интерфейсов.

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

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

Ну это один из вариантов применения интерфейса.

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

А вот где применять абстрактный класс - надо еще понять. Интерфейс на мой взгляд более универсален, к тому же в современных версиях шарпа он может так же иметь внутри себя какую-то логику, а не просто шаблоны, чем обесценивает все качества абстрактного класса. Хотя пихать логику в интерфейсы на мой взгляд - пиздец. Это развращает.
Аноним 24/12/23 Вск 02:07:59 2974649 845
Аноним 24/12/23 Вск 02:09:43 2974650 846
>>2974512
>Плюс еще вопрос, нахуй нужны свойства? Понимаю про методы и поля, а свойства где используются и зачем?

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

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

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

Единственная рекомендация - не использовать по возможности тяжелую логику в свойствах. Для этого все же нужно использовать обычные методы. Ну и самому быть начеку при работе с неизвестными тебе классами и не дрочить одно свойство несколько раз в пределах одного метода. А то бывает в цикле обращаешься к свойству Width, а оно на самом деле запускает тяжелые расчеты в геттере. Ну я имею ввиду, что на будущее (пока это тебе наверно не надо) неплохо бы чекать исходники и понимать как это свойство там работает. Мне вот лично с этой неопределенности пригорает и похоже эта проблема мало кого волнует.
Аноним 24/12/23 Вск 04:01:04 2974698 847
>>2974650
Мил человек, спасибо большое за развернутые ответы.

В плюсах возможно тоже есть, но просто энивей можно обойтись обычными методами же. Поэтому и я задал этот вопрос.
Аноним 24/12/23 Вск 04:28:17 2974705 848
помогитее пж, почему он в выводе выводит от 1.20 до 1.42
мне нужно только до 1.40

double q, y, y1, x;
int n;
n = 1;
y = 1.2;
Console.WriteLine("║y |x |");

while (y < 1.41)
while (n <= 12)
{
if (n > 5)
{
q = Math.Cos(n);
y1 = y y y;
x = (y / 2 n - 1) + q;
n += 1;
y1
= y;
}
else
{
y1 = y y y;
q = 1;
x = (y / 2 n - 1) + q;
n += 1;
y1
= y;
}
Console.WriteLine($"║{y,5:f2}║{x,5:f2}║");
y += 0.02;
}
Аноним 24/12/23 Вск 04:30:18 2974707 849
>>2974705
там строчка y1 = y y y
и y1 *= y
Аноним 24/12/23 Вск 04:30:54 2974708 850
>>2974707
умножить в общем y на y на y, почему то не отображается
Аноним 24/12/23 Вск 11:54:48 2974864 851
>>2974698
>В плюсах возможно тоже есть, но просто энивей можно обойтись обычными методами же.
Ну в шарпе ты тоже можешь обойтись обычными методами. Ты можешь даже поле сделать публичным. Но вопрос не в том, что ты можешь, а в том чтобы дать понять другим, что ты имеешь ввиду. Нужен определенный стандарт. Даже ItelliSence зная, что у тебя есть свойство, выдаст немного больше информации.

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

К тому же есть куча автоматических взаимодействий кода со свойствами. К примеру привязки. Если ты будешь изучать MVVM-паттерн, то познакомишься с тем, как условный GUI-текстбокс привязывается к свойству и автоматически обновляется или обновляет данные этого свойства. Это возможно благодаря стандартизации таких вещей, как геттер и сеттер.
Аноним 24/12/23 Вск 12:03:09 2974878 852
>>2974708
Ньюфаг штоле? Разметка макабы пидорасит. Звездочка это аналог открывающего тэга <i/>, который делает текст наклонным.

Поэтому код либо кидай скриншотом, если он короткий, либо оформляй через pastebin, а сюда кидай ссылку. Подсветку синтаксиса не забудь врубить.
Аноним 24/12/23 Вск 12:04:16 2974879 853
2023-12-2412-04[...].png 3Кб, 451x241
451x241
>>2974878
хуй пизда джигурда
Аноним 24/12/23 Вск 12:08:56 2974888 854
>>2974878
> открывающего тэга <i>
фикс
Аноним 24/12/23 Вск 12:31:53 2974944 855
>>2974705
> почему он в выводе выводит от 1.20 до 1.42
Может быть потому, что проверка while происходит в начале блока, соответственно блок выполняется до конца, значение y инкрементируется до 1.42 (а что ему мешает?), затем начинается новая итерация, вайл видит, что значение y не удовлетворяет условию и выходит из цикла.

Или ты думал, что вайл будет отслеживать состояние y на протяжении всего блока? Нет, проверка производится в начале каждой итерации цикла.

Т.е. тебе надо сделать бесконечный цикл, что-то вроде while (true)
А саму проверку (y < 1.41) делать в конце блока до того как начнется изменение y
И если условие не удовлетворяет, то делать break; из цикла
Аноним 24/12/23 Вск 13:13:44 2974990 856
>>2974944
>Т.е. тебе надо сделать бесконечный цикл, что-то вроде while (true)
В шарпе есть do...while цикл для этих целей.
Аноним 24/12/23 Вск 15:05:40 2975158 857
>>2974990
Один хрен у него переменная y уже присвоит значение.
Это не поможет.

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

Ну или присваивать значение y в начале блока.
Аноним 24/12/23 Вск 15:15:37 2975167 858
image.png 30Кб, 642x214
642x214
Аноним 24/12/23 Вск 18:53:25 2975618 859
Всем привет. Я так понимаю компилятор никак нельзя поставить на условную флешку? VS Code на флешку ставится и работает. Но вот в дебаг режим не заходит. В интернете говорят из-за того что .NET нельзя поставить на флешку. Так ли это и можно ли как-то сделать полноценный портативный вариант? Спасибо
Аноним 24/12/23 Вск 22:04:01 2976023 860
Аноним 24/12/23 Вск 23:46:13 2976214 861
Аноним 26/12/23 Втр 01:11:52 2977764 862
Здрасьте!

Я, как лютый нуб пишу всякое такое, типа:

`DateTime currentDate = new DateTime.Now;`

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

Видел где-то, что можно из даты вытащить текущий год, типа такого
`someDate.ToString("yyyy");`

Вот как посмотреть методы, которые можно у даты вызвать?
Или синтаксис и параметры ToString();

https://learn.microsoft.com/ru-ru/dotnet/api/system.datetime.tostring?view=net-8.0#system-datetime-tostring
Аноним 26/12/23 Втр 01:19:05 2977766 863
Аноним 26/12/23 Втр 01:50:54 2977780 864
image.png 62Кб, 1300x270
1300x270
>>2977764
>Вот как посмотреть методы, которые можно у даты вызвать?
Для этого и существуют нормальные IDE и IntelliSence
Аноним 26/12/23 Втр 10:42:50 2977986 865
>>2977780
Как ты это сделал, шайтан?
Аноним 26/12/23 Втр 10:45:04 2977991 866
>>2977986
Щас скажет что это решарпер. В 99% случаев, когда происходит какая-то магия, то это решарпер.
Аноним 26/12/23 Втр 10:52:41 2978004 867
Аноним 26/12/23 Втр 13:30:12 2978220 868
2023-12-2613-20[...].png 21Кб, 837x249
837x249
2023-12-2613-20[...].png 1Кб, 329x93
329x93
Пикрил 1.
Почему значения типа байт, хранящиеся в переменных типа object выдают false при сравнении?

Смотрите. Есть свойство ICollection ParentCollection, в него помещается коллекция
Collection<byte> MyBytes { get; set; } = new() { 15, 3, 100, 148, 96 };

Есть параметр object value, через него передается переменная byte MyByte = 148;
Явно в коллекции MyBytes есть значение равное 148, но результат сравнения выдает False (пикрил 2 - вывод каждой итерации из цикла)
Аноним 26/12/23 Втр 13:40:51 2978236 869
Аноним 26/12/23 Втр 13:54:46 2978265 870
>>2978220
хз че ты там мутишь, но не забываем про боксинг, где для равных по значению значимых типов создаются обертки с разными ссылками
byte a = 1;
byte b = 1;
Console.WriteLine(a==b);
Console.WriteLine((object)a==(object)b);

True
False
Аноним 26/12/23 Втр 14:12:47 2978315 871
>>2978265
Разве при сравнении на втором пике не должен использоваться оператор, определенный в bool? Переопределение же
Аноним 26/12/23 Втр 14:23:16 2978365 872
Аноним 26/12/23 Втр 14:32:18 2978394 873
>>2978236
Какие ссылки? Это ж структуры, я ожидал передачу значения.

>>2978265
>не забываем про боксинг, где для равных по значению значимых типов создаются обертки с разными ссылками
Ах вот оно что

>хз че ты там мутишь
Вообще, изначально была проблема в том, что мне надо в лист боксе отобразить итемы, у которых нет свойства Name или ID.
Поэтому создал конвертер, который выводит тип объекта и его индекс в списке. А так как хочу сделать универсальный конвертер, то сравниваю обджекты. В общем, использую "object.Equals(a, b)" вместо "a == b".
Аноним 26/12/23 Втр 14:40:48 2978414 874
>>2977986
>>2977991
>>2978004
Вы, бПоздравилПоздравилПоздравил, Поздравилб пПоздравилПоздравиль удаПоздравилПоздравилПоздравилПоздравилыПоздравил чтПоздравил ПоздравилПоздравил? СтаПоздравилдаПоздравилтПоздравилая Visual Studio 2022. Community Edition.
Аноним 26/12/23 Втр 14:47:29 2978439 875
Аноним 26/12/23 Втр 14:48:39 2978445 876
Аноним 26/12/23 Втр 14:50:00 2978450 877
>>2978445
Угу. Там даже ни одного мата не было. Х.з. чего доска так возбудилась.
Аноним 26/12/23 Втр 16:09:30 2978722 878
2023-12-2616-08[...].png 10Кб, 885x161
885x161
>>2978439
Хм, действительно. Значит это локальная залупа спецом для дата тайм.
Не интересно.
Аноним 26/12/23 Втр 18:44:04 2978957 879
>>2978722
нет. это StringSyntaxAttribute, который позволяет сделать подсказки по формату для визуал студии. То есть он подсказывает студии что тут строка, но не просто строка, а формат даты или регулярка (вот все допустимые значения https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.codeanalysis.stringsyntaxattribute)

вот бы найти еще нормальный мануал как самому создавать. но как обычно все интернал.
Аноним 26/12/23 Втр 18:44:34 2978958 880
Аноним 27/12/23 Срд 22:42:55 2980506 881
почему компилятор разворачивает опциональные параметры методов типа public void DoThing(Bar bar, Foo foo = null) в какую-то херню?
если прописываю как положено:
DoThing(bar, null)
...то все нормально выглядит
а если как по идее для чего опциональные параметры и нужны:
DoThing(bar)
...то начинается какая-то хуита.

вот я поставил два метода рядочком:
DoThing(bar);
DoThing(bar);

так компилятор по мнению ILSpy два раза сука объявляет это Foo как null и передает отдельно в каждый метод, а еще и блядь такая bar копирует:
Foo foo = null;
DoThing(bar, foo);
Foo foo2 = null;
Bar bar2 = this.bar;
DoThing(bar2, foo2);

это хуйню как вообще понимать, 🥗ач?
Аноним 27/12/23 Срд 23:15:03 2980532 882
>>2980506
Видимо ILSpy хреново IL назад в 🥗овый код переводит. В IL лишних локальных переменных нет, null сразу на Новогодний Репертуар грузится. Если в релизной конфигурации собрать, то вообще даже локальная переменная под bar заводится не будет, все операции чисто на Новогодний Репертуаре будут.

https://sharplab.io/#v2:C4LglgNgPgAgTARgLAChXwMyoN6oAQF7xz6G4qGV4BuAhgE54BGDeAvHgHYCmA7ngCEGACgQAGMQEoA3KSp45VACIB7ACoALMJwDmwlvRnyCiyqs3a9BmYoC+ixQAd6YOsG5EEANiIAWPOZausJCjAYANHgAYioqeABmsexcAK4QEJKK5MaeAJz6DDYUxjAI+YkqRZT2KDXoGHj03ADGKvQAJtGxwtrAeABqtBAp3EUwDU2tHYIivQNDIzJAA===
Аноним 27/12/23 Срд 23:20:40 2980542 883
Аноним 27/12/23 Срд 23:20:55 2980544 884
Новогодний Репертуар?
Аноним 28/12/23 Чтв 01:43:09 2980732 885
image.png 101Кб, 914x716
914x716
>>2920885 (OP)
Мне нравится, как в библиотеке Bukkit для 🍊 работает система событий. Для прослушивания событий есть интерфейс Listener, с которым можно создать метод, который будет вызываться при инициализации события. Тип события указывается в параметрах метода.
Как такое можно реализовать в 🥗? Мне совсем не нравится, что события здесь функционально-ориентированные.
Аноним 28/12/23 Чтв 02:03:47 2980737 886
🥗?
Аноним 28/12/23 Чтв 02:05:00 2980738 887
Новогодний Репертуар 🥗
Аноним 28/12/23 Чтв 06:03:09 2980793 888
>>2980732
Да просто реализуй. Какая проблема то
Чем класс листенер отличается от любого другого класса с методами кроме семантики (ну и она же в названии)?
Ничем не отличается

Никто не заставляет юзать нативные события.
Если у тебя в хендлере нужно 2+ метода - ну и делай листенеры
Просто они по семантике будут не универсальные подптсчики, а "конекретно тутовые хендлеры"
Но все это метафоры. Реализация то одинаковая
Аноним 28/12/23 Чтв 10:40:25 2980917 889
>>2980732
Если не хочется использовать стандартные event-ы, то стоит посмотреть в сторону реализации интерфейса IObservable.
https://learn.microsoft.com/en-us/dotnet/api/system.iobservable-1?view=net-8.0
https://learn.microsoft.com/ru-ru/dotnet/standard/events/observer-design-pattern

А там, если захочется, то и реактивщиной обмазаться можно будет https://github.com/dotnet/reactive
Аноним 28/12/23 Чтв 17:18:08 2981416 890
Сап, а кто какой api gateway использует и почему?
Аноним 28/12/23 Чтв 17:49:38 2981461 891
>>2981416
Nginx
> почему
По умолчанию.
Аноним 29/12/23 Птн 18:21:13 2982764 892
2023-12-2918-13[...].png 16Кб, 534x578
534x578
Слушайте, а что выводится по умолчанию в качестве разделителя вещественного числа: точка или запятая?

Я создаю новое WPF-приложение, Net7.0, пытаюсь забиндить double в текстбокс, и в качестве разделителя у меня стоит точка. При этом у меня нет никаких кастомных конвертеров и валидаторов. Смотрю в настройках винды формат числа — там стоит запятая (пикрил).

У меня переклин. Я недавно переустанавливал винду и мне кажется, что должна по дефолту быть запятая. А если нет, то почему Застолье игнорирует настройки винды?
Аноним 29/12/23 Птн 18:40:17 2982800 893
Аноним 29/12/23 Птн 19:14:59 2982833 894
2023-12-2919-13[...].png 87Кб, 1757x537
1757x537
2023-12-2919-13[...].png 29Кб, 917x398
917x398
2023-12-2919-13[...].png 16Кб, 574x297
574x297
>>2982764
При этом если через конвертер тупо конвертировать занчение в стринг, то выводится запятая. Че за нах?
Аноним 29/12/23 Птн 19:30:49 2982842 895
2023-12-2919-24[...].png 28Кб, 871x262
871x262
2023-12-2919-29[...].png 156Кб, 971x676
971x676
>>2982833
Попробовал в конвертере проверить, что приходит в параметр culture и почему-то там указано "en-US". Почему? В настройках российский регион.
Аноним 29/12/23 Птн 19:37:50 2982851 896
>>2982842
Ну типа при инициализации App могу написать
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));


Но вопрос, какого хуя я этого никогда не делал раньше? Может есть где-то глобальная настройка в Застолье? Может какой-то плагин поменял?
Аноним 29/12/23 Птн 22:33:21 2983126 897
Вопрос по Avalonia: есть ли виджеты таблицы с переключением режима edit/read-only, с возможностью выделить отдельную ячейку в строке и возможностью сделать контекстное меню?

Дефолтный DataGrid и не дефолтный TreeDataGrid не умеют в выделение отдельной ячейки по дефолту. Неужели надо самому SelectionModel писать? Или есть готовые решения которые я не нашел? Так влом самому писать просто
Аноним 30/12/23 Суб 00:00:21 2983238 898
>>2983126
Я могу судить по впф. Для этих целей пришлось бы перелопачивать весь стиль.

Дата грид это такая залупень, шо я ебал ее в рот. Я все делал через ListView из которого можно при помощи стилей сделать что угодно. Окно свойств вижуал cтудии — это все ListView на самом деле.
Аноним 30/12/23 Суб 01:04:12 2983359 899
Застолье?
Аноним 30/12/23 Суб 01:04:31 2983361 900
Новогодний Репертуар 🥗 Застолье
Аноним 30/12/23 Суб 05:28:04 2983428 901
>>2982851
Это делается так - CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCultute("ru-Ru");
CultureInfo.CurrentUICulture = CultureInfo.CreateSpecificCultute("ru-Ru");
Аноним 30/12/23 Суб 11:51:43 2983494 902
>>2983428
1. Где делается?
2. А жесткое указание ру-региона вместо той, что задана в операционной системе
3. Почему я не делал так раньше и все работало
Аноним 30/12/23 Суб 11:55:10 2983495 903
>>2983494
>А почему там жесткое
фикс
Аноним 30/12/23 Суб 18:35:18 2983932 904
image.png 64Кб, 887x639
887x639
Только что заметил лютый пиздец но он работает.
Поток заходит в Первый лов в ToCheck(string ip) а потом срабатывает метод Update() а там тоже лок с тем же объектом. Вот смотрю на код и как бы по смыслу он не должен работать, даже в 1 поток, но он отрабатывает нормально.
Почему так?
Смысл зайти и проверить дату редактирования файла, если файл младше то перезагрузить его, лок нужен что бы в файл не вцепились сразу 2 потока.
Аноним 30/12/23 Суб 19:00:27 2983999 905
>>2983932
>Почему так?
Так совпало. Можешь 100 проверок локов сделать да еще с каким нибудь таймером ожидания и тогда шансы будут еще выше. Но рано или поздно два потока под таким таймингом зайдут, что не спасет.

Вроде же есть всякие очереди, которые и решают эту проблему. Разве не?
https://metanit.com/sharp/tutorial/4.7.🎄
Поток создает запрос в очередь и этот запрос будет обработан только после того как будут обработаны запросы от других потоков. Тогда у тебя будет гарантия, что несколько потоков не сядут жопой на один сральник.
Аноним 30/12/23 Суб 19:02:24 2984003 906
>>2983999
>>🎄
Рака яиц тому, что для программача настроил Новогоднее Настроение.
Гугли "Очередь Queue".
Аноним 30/12/23 Суб 19:13:54 2984031 907
image.png 543Кб, 1587x730
1587x730
>>2984003
блять я испугался
А зачем мне очередь?
Я просто сделаю 2 lockObject и когда поток зайдет ToCheck(string ip) он залочит первый лок и другие уже не войдут в него, а потом залочит в Update().
Хотя я сейчас непонимаю я нахуя я делал lock в Update() так как в него по идее не может ни кто попасть так как вызов этого метода есть только в ToCheck(string ip) и он под локом.
Наверное ночью писал и не понимал что пишу, бывает такая хуйня что находит вдохновение и 15 часов могу писать код, только вот последние часы не помню что и нахуя писал.
Аноним 30/12/23 Суб 19:27:50 2984066 908
А вот еще вопрос, я запускаю сайт на ubuntu как службу, а можно еще через докер.
Какие профиты я получу используя докер? Ну или какие не получу?
Аноним 30/12/23 Суб 19:47:33 2984109 909
>>2984066
через докер ты получишь "оно просто работает но докер"
без него тебе ВОЗМОЖНО придется ставить рантайм и прочее чтобы у тебя это работало, а это не так просто

у меня были траблы opencv + ffmpeg + vip для имаджей
не Прочиталось никак. вошло в конфликт на реальной системе
впрочем не Прочиталось из за випа что стала память утекать
Аноним 30/12/23 Суб 19:48:43 2984111 910
Аноним 30/12/23 Суб 19:49:32 2984113 911
>>2984031
>блять я испугался
Я бы тоже, потому предупредил.

>А зачем мне очередь?
При многопоточности, обращения потоков к свойству не происходят последовательно. Один поток меняет статус lock на true, а второй в это время его уже проверил и думает что там false и лезет читать файл. Они могут полезть одновременно.
С булевыми переменными это уловить сложно, но вот с другими более сложными типами переменных получить конфликт легко.
Аноним 30/12/23 Суб 19:54:30 2984125 912
>>2984113
Но я не совсем понимаю есть ли у меня многопоточность)
Метод контролера public IActionResult Index() работает ли он сразу в многопотоке? Пока 1 выполнение идет, а второй юзер зашёл на страницу его в очередь поставит или будет создал второй HomeController и в нем сработает метод?*
Аноним 30/12/23 Суб 19:56:07 2984130 913
>>2984125
займет поток из пула, а значит пул исчерпается и остальные буду ждать.
Аноним 31/12/23 Вск 00:43:23 2984400 914
На сколько адекватна идея хранить данные о подключении к бд в другой бд?
К примеру мне нужно много бд, каждая бд для своего сайта.
Я делаю как то так
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=db.Where(d => d.Domain ==Request.Host.Host).First()"); //ну типо по какому домены пришёл запрос ту бд и берем
}
Не будет ли конфликтов каких кто?
Идея в том что сайты разные и контент совершенно разный. Выиграю ли я в скорости запросов?
Аноним 31/12/23 Вск 02:27:25 2984450 915
>>2984066
С докером ты получишь удобство разворачивания, обновления всего этого дела.
Без докера, тебе надо обновить свой сайт - ты ручками по ССШ заливаешь новую версию. Ты обновил .NET - ручками иди обновляй на хосте зависимости. Да, удаляешь - иди руками чисть что там насрал.
Если что-то упадет - ты можешь в докере изи настроить автоподнятие.
Сверху - нахуевертить всяких писек, чтобы если что-то идет странно(память резко потреблять больше стало, место скоро кончится и т.д) - тебе прилетели уведомления, метрики куда надо.
Короче. Минимально - удобство.

Дальше, если у тебя какая-то микросервисная шляпа начнется - ты просто берешь и делаешь нужное кол-во инстансов, сколько хост потянет - и все, так тебе придется искать как твою службу размножить, настраивать это все и т.д.
Аноним 31/12/23 Вск 02:29:36 2984451 916
>>2984400
В таком виде - хуевая.
А вцелом - норм. Что такого?
Аноним 31/12/23 Вск 13:37:01 2984592 917
Когда я в цикле запрашивается длина коллекции, она запрашивается при каждой итерации, или только один раз? Особенно этот вопрос касается IEnumerable и его метода Count()

for (int i = 0; i < MyCollection.Count(); i++)
{ }
Аноним 31/12/23 Вск 17:53:58 2984774 918
>>2983238
Отвечу с опозданием: выяснил что TreeDataGrid все таки позволяет одиночное выделение ячейки, но документации к нему по многим другим моментам не хватает.

Норм аналогов для WPF-ного ListView в Avalonia нет(

Теперь мучаюсь с тем как сделать переключение режимов в контроле TreeDataGrid между "только чтение" и "изменение", тупо документации не хватает. Придется смотреть код
Аноним 31/12/23 Вск 19:05:16 2984833 919
Аноним 01/01/24 Пнд 20:19:55 2985523 920
>>2984592
Так нельзя делать. У тебя каждый раз IEnumerable будет перевычисляться. В лучшем случае это потеря производительности, в худшем это может всё распидорасить, если у тебя хтонь в конструкции.
Аноним 01/01/24 Пнд 20:53:24 2985553 921
>>2985523
И ElementAt нельзя использовать в цикле For? Нужно foreach?
Где-то я видел, что ElementAt это что-то вроде foreach который обходит коллекцию до нужного индекса.

А как тогда к примеру сравнивать итемы двух IEnumerable? С For все просто:
for (int i = 0; i < 100; i++)
{
If (MyCollectionA.ElementAt(i) == MyCollectionB.ElementAt(i)){ }
}
Аноним 01/01/24 Пнд 20:57:07 2985556 922
>>2985553
> Где-то я видел, что ElementAt это что-то вроде foreach который обходит коллекцию до нужного индекса.
Как хуево, что сорсы либ закрыты, и нельзя самому посмотреть, как оно реализовано...
Аноним 01/01/24 Пнд 21:13:02 2985574 923
2024-01-0121-08[...].png 20Кб, 799x549
799x549
2024-01-0121-07[...].png 12Кб, 1218x457
1218x457
>>2985553
Сначала идет попытка проверить что за зверь, и если он не IList, то тогда действительно будет в цикле перебираться.
Аноним 01/01/24 Пнд 21:20:49 2985590 924
>>2985553
>>2985574
Так что лучше запрашивать IList вместо IEnumerable, если это возможно, но IList можно редактировать, а IEnumerable запрещает вносить изменения в список.
Аноним 01/01/24 Пнд 21:23:54 2985591 925
2024-01-0121-22[...].png 9Кб, 705x173
705x173
>>2985590
А зачем тогда нужен IEnumerable? На пикрил пишут, что он подходит для перебора итемов, но он не очень-то хорош в этом.
Аноним 01/01/24 Пнд 21:47:28 2985617 926
Аноним 01/01/24 Пнд 22:41:57 2985644 927
>>2985591
как он может не быть хорошо в том для чего он исключительно и предназначен....
Аноним 01/01/24 Пнд 23:06:07 2985657 928
>>2985644
>как он может не быть хорошо в том для чего он исключительно и предназначен....

Ну потому что вот это пример >>2985553 не очень эффективен по сравнению с аналогичной реализацией над IList.
Аноним 01/01/24 Пнд 23:08:25 2985662 929
>>2985617
А что такое перечисления? foreach?
Аноним 01/01/24 Пнд 23:36:17 2985679 930
>>2985591
Для перебора. А не для определения размера.
Аноним 02/01/24 Втр 00:07:42 2985728 931
>>2985590
>Так что лучше запрашивать IList вместо IEnumerable, если это возможно,
Зачем. Если тебе под IEnumerable придет List (или даже Array) то они вполне себе определятся как IList и все отработает как надо.
Аноним 02/01/24 Втр 00:09:30 2985732 932
>>2985657
>Ну потому что вот это пример >>2985553 не очень эффективен по сравнению с аналогичной реализацией над IList.
Ну так ты тут нихрена не перебором занимаешься, а элементы по индексу достаешь, что как бы выходит за область применения IEnumerable
Аноним 02/01/24 Втр 01:01:19 2985806 933
>>2985662
Все, что вызывает энумератор для перечисления. Например, foreach, да.
Аноним 02/01/24 Втр 01:59:42 2985851 934
>>2985591
Ну вот тебе синтетический пример:
IEnumerable<int> GetSquares(){ return Enumerable.Range(1, 100).Select(x=>x*x); }
...
Console.WriteLine(string.Join(", ", GetSquares().Take(5)));

Так в итоге посчитаются только пять квадратов.
Если возврат метода заменить на List или [], то посчитается сто, хотя выведется только пять.

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

Ещё есть IQueryable который вообще по возможности превращается в запрос к БД. Тоже нахерачиваешь проекций, фильтров и группировок, а запрос выполняется только когда ты начинаешь данные реально использовать.

Ну и да, если тебе надо данные из IEnumerable использовать несколько раз, то надо сделать ToList() или ToArray(), и читать уже из них, иначе оно будет пересчитываться несколько раз (ещё и разные результаты могут получиться, если у тебя исходные данные изменятся, например).
Аноним 02/01/24 Втр 02:40:25 2985872 935
Где перекат? Срачей не будет больше, тред не улетит в лимит.
Аноним 02/01/24 Втр 02:44:09 2985874 936
>>2985872
Перeкат будет через 65 поcтов.
Аноним 02/01/24 Втр 12:33:43 2985988 937
>>2985872
Срач устроить легко
ЖАВА ГОВНО

щас прибегать жавист и начнет обсираться
Аноним # OP 03/01/24 Срд 21:49:14 2988001 938
>>2985872
Джавадебил, тебе невтерпеж?
Аноним 04/01/24 Чтв 18:31:12 2988872 939
Пришел сюда из Python, решил попробовать C# и особенно ASP.NET. Читаю пока тут: https://learn.microsoft.com/en-us/aspnet/core/data/ef-rp/intro?view=aspnetcore-8.0
Бля, да это же охуительный язык! Аноны, а есть что-нибудь на подобии A Byte Of Python, где кратко описан синтаксис и основные плюшки C#?
Аноним 04/01/24 Чтв 18:38:56 2988881 940
>>2988872
Блазор покури. Там верстать еще приятнее. Особенно если использовать интерактив сервер, с кодбихайнд блоком.
Аноним 04/01/24 Чтв 18:48:04 2988902 941
>>2988872
metanit.com
Раздел про шарп.
Аноним 04/01/24 Чтв 18:55:01 2988922 942
Аноним 04/01/24 Чтв 19:43:21 2988995 943
>>2920885 (OP)
Парни, там это, Никлаус Вирт умер 1-го января.
Почтим память.
Без него (хоть и опосредованно), вряд ли бы наш любимый C# был бы таким крутым и замечательным.
Press F5 to respect.
Аноним 04/01/24 Чтв 19:55:59 2989027 944
Аноним 05/01/24 Птн 00:39:49 2989355 945
Таак, блять. Есть слой Domain, мне там надо сделать сущность Request. Этот реквест может быть двух типов RequestFOB и RequestFCA. Отличие буквально в трёх полях. Мне в домене лучше сделать сущность BaseRequest и потом просто её наследовать этими RequestFOB и RequestFCA? Или всё запихнуть в один класс Request и там уже null фигачить, если запрос FOB или FCA. Или как лучше сделать? Подскажите, пожалуйста.
Аноним 05/01/24 Птн 01:29:31 2989411 946
>>2989355
Ты правильно придумал
Аноним 05/01/24 Птн 01:30:59 2989412 947
>>2989411
Я в итоге всё в интерфейс засунул
Аноним 05/01/24 Птн 01:31:32 2989414 948
>>2989412
А должен был перекатить тред
Аноним 05/01/24 Птн 01:33:42 2989419 949
>>2989414
Я скорее его на хуй перекачу ибо не умею
Аноним 05/01/24 Птн 01:39:27 2989425 950
>>2989355
>Или как лучше сделать?
Любой вариант, который подходит под твои требования и бизнес-логику.
Плюс можешь еще сделать Request как свойство каждой из отдельных сучностей, тогда проще нормализовать будет.
Аноним 05/01/24 Птн 01:43:24 2989427 951
>>2989425
У меня опыта разработки 0. Поэтому и спрашиваю. Сейчас я запихнул всё в интерфейс.
>Плюс можешь еще сделать Request как свойство каждой из отдельных сучностей
Наверное так лучше...Я щас на гитхабе посидел, там челы также делают
Аноним 05/01/24 Птн 02:06:29 2989437 952
>>2989355
>RequestFOB и RequestFCA.
В соответствии с гайдланами стоит использовать только очень известные сокращения типа URL, HTTP, TCP. Всё остальное стоит писать полностью.
Плюс к этому даже сокращения надо писать паскаль/кэмел кейсом: RequestFob, RequestFca.
Аноним 05/01/24 Птн 02:16:28 2989439 953
>>2989437
Я сам не знаю что такое FOB и FCA это в отделе логистики какие-то термины. В понедельник на работу пойду спрошу. А про соглашение как писать сокращение спасибо
Аноним 05/01/24 Птн 02:22:37 2989442 954
>>2989414
Нет, жабадебил, не будет переката до 1000постов.
Аноним 05/01/24 Птн 08:25:01 2989558 955
Аноним 05/01/24 Птн 08:26:53 2989559 956
Глупый вопрос. Но ответ нужен.
Сколько при запуске занимает памяти нет.кор фреймворк?
Аноним 05/01/24 Птн 08:53:12 2989571 957
>>2989442
Сам ты жавадебил. Или без жава.
На мобильном девайсе тяжко грузить столько прстов
Аноним 05/01/24 Птн 08:55:34 2989573 958
>>2989558
Что быстрее? Кот или кит?
Аноним 05/01/24 Птн 09:31:38 2989586 959
>>2989573
Что логичнее, объяснить содержание или скатиться в неясные вопросы?
Аноним 05/01/24 Птн 09:33:02 2989587 960
>>2989571
>тяжко грузить столько прстов
У тебя ондроед второй? Или ты из подвала? У меня все нормально грузит.

мимо джавабоярин
Аноним 05/01/24 Птн 09:53:57 2989592 961
>>2989586
А ты попробуй ответь и все поймешь

>>2989587
Ну и иди нах. Сиди один в этом треде. А я зайду через месяц
Аноним 05/01/24 Птн 11:19:13 2989615 962
Аноним 05/01/24 Птн 15:41:31 2989953 963
>>2989558
Ты на дату статьи посмотри, год назад это уже все обсосали иди в архивач и там ищи.
Аноним 05/01/24 Птн 20:37:09 2990438 964
>>2989953
Новые данные подкатили? Есть ссылки?
Аноним 05/01/24 Птн 22:49:43 2990574 965
>>2990438
Сравнимать несравнимое
Ну-ну
Аноним 07/01/24 Вск 17:39:59 2992268 966
изображение.png 29Кб, 1037x342
1037x342
изображение.png 11Кб, 893x145
893x145
изображение.png 517Кб, 1807x933
1807x933
изображение.png 199Кб, 1368x1050
1368x1050
Блять, я не понимаю. Посмотрел гайд как сделать глобальную обработку исключений. Решил прикрутить в свой проект, начал тестить ии... Почему-то он отлавливает не все ошибки. Ошибки валидации некоторые отлавливает, а некоторые нет (я использую FluentValidation). Например, если устроить переполнение переменной он выдаст свой "дефолтный" ексепшн (рис.1), а если надо проверить, чтобы значение было не ноль, то он выдаст то, что надо(рис.2). Код флюент валидации(рис.3) и код глобал-хуёбал ексепшен хендлера(рис.4). Объясните, пожалуйста, чему так.
Аноним 07/01/24 Вск 17:44:26 2992273 967
изображение.png 271Кб, 1847x977
1847x977
>>2992268
Хуйню написал про переполнение. Переполнение - это "общий" ексепшн, который обрабатывает, по идее, на рис.1. Fluent Validation его никак не должна обрабатывать
Аноним 07/01/24 Вск 17:47:03 2992279 968
17046384003840.png 22Кб, 1037x342
1037x342
А проблема вся в том, что я хочу изменить сообщение вывода вот этого (рис.1), но т.к это не попадает в глобальную обработку исключений, то я не знаю где это править
Аноним 07/01/24 Вск 18:03:20 2992303 969
изображение.png 129Кб, 1602x298
1602x298
Щас залез в коменты к гайду, а там вот такое написали. Это так? Тогда как надо организовывать обработку исключений...
Аноним 07/01/24 Вск 20:24:53 2992572 970
>>2992303
Это шизик.
Но по хорошему:

try{
...
}catch(SocketException sex){
Log(sex)
FreeSocketAndCompleteConnection(connection);
}
catch(DbUpdateException due){
Log(db);
RetryAfterDelay(1000);
}
Аноним 07/01/24 Вск 22:27:06 2992756 971
17046384003840.png 22Кб, 1037x342
1037x342
>>2992572
То есть от более частного исключения к более общему, я правильно понял? Это хорошо, а вот как согнать все исключения в один обработчик я не понимаю. Вот например: я делаю запрос через postman и специально не задаю одному полю значения. Я ожидаю, что исключение попадёт в мой глобальный обработчик и я смогу там подкорректировать вывод ошибки, чтобы не было в какой строке ошибка произошла и т.д. Но получается так, что это исключения даже не доходит до глобального обработчика, оно ещё раньше где-то обрабатывается...Или я чего-то не понимаю
Аноним 08/01/24 Пнд 19:15:55 2993657 972
Вопрос к математикам. Кто знаком с матрицами трансформаций?

Такая проблема. Допустим в WPF у меня есть группа трансформаций, состоящая всего из одной трансформации — вращения на 90° вокруг центральной точки в относительном пространстве:
<TransformGroup>
<RotateTransform Angle="90" CenterX="0.5" CenterY="0.5"/>
</TransformGroup>


Я могу при помощи свойства Value из этой группы получить матрицу:
[0 1 -1 0 1 0]

И вопрос: а как получить центр вращения? Те самые
>CenterX="0.5" CenterY="0.5"
Я могу сделать декомпозицию матрицы и получить
Angle: 90;
OffsetX: 1;
OffsetY: 0;

Но это не даст мне никакой информации о центре вращения.
Аноним 08/01/24 Пнд 20:04:41 2993737 973
Аноним 08/01/24 Пнд 20:42:58 2993790 974
2024-01-0820-21[...].png 2Кб, 111x112
111x112
>>2993737
Все оказалось банальным. Можно же применять трансформации к точке. Главное знать изначальные габариты трансформируемого объекта.
Аноним 08/01/24 Пнд 20:45:43 2993793 975
>>2993790
Если в TransformGroup будет куча трансформаций, то уже никак не узнать.
Аноним 08/01/24 Пнд 21:01:26 2993809 976
Как работает явное приведение?
Почему
byte b = 1 + 1;
работает, а
int a = 1;
byte b = a + 1;

нет?
Типа компилятор видит угрозу в математическом выражении, результат которого может не поместиться в byte?
Аноним 08/01/24 Пнд 21:15:40 2993823 977
>>2993809
Ты присваиваешь не константу в виде единицы, а переменную, в которой может в теории содержаться число выше 255 или ниже 0, потому что эта переменная типа int.

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

Если ты уверен, что в "a" никогда не будет нежелательных чисел, то ты приводишь явно к байту, либо изначально объявляешь переменную как байт. Если ты не уверен, то либо проверяй значение, либо сразу обрезай: byte.Clamp(a, 0, 255);
Аноним 08/01/24 Пнд 21:21:28 2993825 978
>>2993823
>byte.Clamp(a, 0, 255);
byte b = (byte)int.Clamp(a + 1, 0, 255);
Аноним 08/01/24 Пнд 21:21:44 2993826 979
>>2993823
>получишь StackOverflowException
Уверен?
Аноним 08/01/24 Пнд 21:30:02 2993832 980
>>2993826
Казалось, что выдавал исключение. На деле просто возвращается к началу и прибавляет остаток
int a = 257;
byte b = (byte)a;

Выдаст результат b: 1
Аноним 08/01/24 Пнд 21:40:37 2993845 981
>>2993832
Он просто урезает биты. И да, стековерфлоу это другое, про переполнение стека вызовов функций.
Аноним 08/01/24 Пнд 21:41:31 2993850 982
>>2993809
Потому что засунуть byte в int это как если бы осел выебал дракониху. Странно, но никому не повредит.
А вот попытка запихнуть int в byte - это уже как дракону выебать ослицу. Компилятор это видит и предупреждает тебя, что что-то тут не так. Поэтому в твоем случае ты должен явно приводить переменную: byte(a) + 1, как бы говоря компилятору: "Да, да я полностью уверен, пусть бедную ослицу разорвет нахрен."
Как бы не относится к экстримцоде, но это объяснение у них годно получилось.
Аноним 08/01/24 Пнд 21:43:46 2993859 983
>>2993850
>byte(a)
Не скомпилится.
Аноним 08/01/24 Пнд 21:46:45 2993867 984
>>2993859
Да похуй, я просто пъяный. (byte)a + 1 естественно.
Но мысль ясна.
Аноним 08/01/24 Пнд 21:49:59 2993873 985
>>2993867
>(byte)a + 1
Тоже не скомпилится, алкаш
Аноним 08/01/24 Пнд 23:24:38 2994040 986
Аноним 09/01/24 Втр 00:03:09 2994084 987
>>2993867
> (byte)a + 1 естественно.
(byte)(a + 1)
09/01/24 Втр 00:22:16 2994114 988
(byte)((byte)(a))((byte)(+))((byte)(1))
Аноним 09/01/24 Втр 00:23:39 2994118 989
Аноним 09/01/24 Втр 02:16:36 2994247 990
>>2994114
Учиться тебе еще и учиться
(byte) 0x01
Аноним 09/01/24 Втр 20:00:29 2995114 991
Решеточники, такой вопрос. Есть условный класс A и B. В классе A создается множество экземпляров класса B. Они помещаются в List. После этого каждого экземпляра класса B вызывается Task X, этот Task у каждого экземпляра выполняется с разной скоростью. После того, как последний экземпляр класса В завершит выполнение Таска X, нужно вызвать функцию Y в классе A. Есть какое-то изящное решение этой задачи?

Были мысли насчет какого-то флага в классе B, который становится true после выполнения функции, а потом вызов TrueForAll с предикатом. Может есть что-то получше?
Аноним 10/01/24 Срд 00:13:52 2995478 992
>>2995114
А Task.WhenAll чем тебя не устраивает?
Аноним 10/01/24 Срд 02:13:46 2995537 993
Это пиздец, сколько синтаксического сахара в шарпе. Реально вообще это все запомнить?
Аноним 10/01/24 Срд 03:14:42 2995553 994
Аноним 10/01/24 Срд 03:41:23 2995577 995
Аноним 10/01/24 Срд 07:04:44 2995627 996
>>2995537
Чего бы и нет. Просто берешь и используешь.
В какой-то момент ты сам себе начнешь его создавать в виде всяких экстеншенов, перегрузок и т.д.
Аноним 10/01/24 Срд 10:00:39 2995695 997
>>2995478
Устраивает, но хотелось именно через события. В задании есть требование, чтобы я где-то события впихнул.
Аноним 10/01/24 Срд 15:54:58 2996069 998
Аноним 10/01/24 Срд 17:25:11 2996213 999
Аноним 10/01/24 Срд 17:28:38 2996221 1000
Аноним 10/01/24 Срд 17:30:40 2996227 1001
Аноним 10/01/24 Срд 17:47:59 2996255 1002
>>2996227
Но головушка слабовата

Впрочем, если оформишь перекат - проклятие спадет
Аноним 10/01/24 Срд 18:01:53 2996274 1003
>>2995695
ну впихни после Task.WhenAll событие ЧтоТоТамКомплетед.
Аноним 10/01/24 Срд 23:34:15 2996913 1004
изображение.png 303Кб, 1756x975
1756x975
изображение.png 271Кб, 1722x1071
1722x1071
Всем ку. Кто-нибудь шарит за AutoMapper? Пытаюсь смапить модель из домена с ViewModel, но нихуя не получается. Во ViewModel отсутствуют два поля: UserId и Responses. Если вручную переделать доменную модель во ViewModel, то всё работает, но по идее AutoMapper сам должен с этой хуйнёй справится. Пробовал Ignore(), но не сработало.
Аноним 11/01/24 Чтв 00:31:58 2996938 1005
>>2996913
Автомаппер - наебка для гоев. Из коробки он только с простейшими круд-моделями работает. А в большинстве случаев там явно все правила прописывать нужно и по хорошему еще и тестами посильно этот мапинг покрывать.
Аноним 11/01/24 Чтв 16:27:33 2997709 1006
В пизду этот автомаппер. Нихуя так и не заработал. Удалил его нахуй и поставиил мапстер. Все заработало. Плюс вычитал в инете, что он почти во всём лучше, чем автомаппер
Аноним 11/01/24 Чтв 17:38:15 2997823 1007
>>2997709
> Удалил его нахуй и поставиил мапстер.
Ну ты и додстер)
Аноним 11/01/24 Чтв 18:17:21 2997913 1008
Аноны, есть что-то вроде ссылки на свойство? Я знаю что звучит тупо, но меня интересует средство, которое сможет побороть проблему.

Предположим у меня есть список разношерстных элементов, у которых нужно отредактировать свойство цвета, но имена этих свойств не являются едиными. К примеру:
- Path.Fill
- Button.Background
или
- Path.Stroke
- Button.BorderBrush

У элементов нет общего предка:
Shape -> Path
Control -> ... -> Button
Panel -> Grid

Я не могу использовать рефлексию, обращаясь грубо говоря по имени, да и затратно это.
Предположим, что я создам какой-то метод, который пройдется по списку элементов и извлечет из нужного свойства кисть, а потом составит новый список IList<Brush>.
Но на этапе редактирования может случиться например то, что какие-то кисти имеют статус Frozen == true, и такие кисти редактировать нельзя, их нужно клонировать в новый экземпляр. Но что я смогу сделать с этим экземпляром? Заменив итем IList<Brush> новым экземпляром, я не отредактирую свойство элемента, который содержит экземпляр старой кисти.

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

Или может есть хитрые биндинги по шаблону?
Аноним 11/01/24 Чтв 18:53:10 2997972 1009
изображение.png 159Кб, 922x472
922x472
Аноним 11/01/24 Чтв 19:54:24 2998085 1010
>>2997913
Ъ-путь это не изобретать велосипедов, а реализовать интерфейс с методом SetColor.
Если это не совсем твои классы, ты можешь нахерачить им extention methods, то есть добавить каждому SetColor как расширение.
А то, что ты хочешь - это чистое и незамутнённое зло, не надо этого хотеть.
Это по первой части.
По второй - я вообще не понял, чего ты хочешь и как она связана с первой. Ты хочешь изменить цвет кисти, если она заблокирована? Зачем? В чём смысл этого действия?
Аноним 11/01/24 Чтв 20:42:25 2998152 1011
>>2998085
Давай поясню. Я хочу сделать редактор кистей, подобный тому, что есть в окне свойств вижуал студии. Универсальный. Но у майкрософт целый зоопарк элементов, опять же:
Shape -> Path
Control -> ... -> Button
Panel -> Grid

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

Сейчас я склоняюсь к ObservableCollection<Brush> с подпиской на изменение итемов. Просто я этот вариант оставил как запасной.

>реализовать интерфейс с методом SetColor
Во-первых, классы не мои, а некоторые запечатаны.
Во-вторых, какое именно свойство будет менять SetColor? Потому что часто есть несколько свойств, которые в какой-то момент нужно задействовать, а какой именно — зависит от внешних факторов о которых редактор кистей знать не обязан. Менять ли фон или контур, редактору цвета должно быть наплевать.

>SetColor как расширение
Та же проблема. Расширение не должно решать что делать.

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

>Ты хочешь изменить цвет кисти, если она заблокирована? Зачем?
Согласен, спорно. Но если тебя смущает такой пример, вот еще один: в свойстве может быть SolidColorBrush, а пользователь в окне редактора кистей выберет RadialGradientBrush. Это так же потребует создания нового экземпляра.
Аноним 11/01/24 Чтв 21:53:35 2998372 1012
>>2998152
Как же хорошо, что я не занимаюсь десктопом или фронтом и мне не приходится решать проблемы вроде "как надевать штаны через голову"
Аноним 11/01/24 Чтв 22:36:54 2998448 1013
>>2998152
> какое именно свойство будет менять SetColor?
Вот у каждого элемента будет свой сетколор, и он будет знать, что делать. И ты всегда будешь знать, что ты делаешь - ты устанавливаешь цвет. Твой код не вызывает Ктулху, не превращает тебя в гибрид Синдзи и Харухи, а устанавливает цвет у элементов.
Ты пишешь каждому классу extension method, который знает, что делать в конкретном классе. Если там нет чёрной магии, и всё что надо сделать, доступно публично. Запечатан он, не запечатан - тебя не волнует.

А про новые экземпляры я всё равно не понял. Ты пытаешься сделать что-то, чего сделать нельзя? А зачем ты пытаешься это сделать, если этого нельзя?
Аноним 11/01/24 Чтв 22:42:37 2998455 1014
>>2998152
Алсо, я в графике ничего не понимаю, не мог бы ты объяснить свою задачу простыми словами? Ну там панели, кнопки, это понятно. Это такие визуальные элементы на форме, я когда-то очень давно писал на дельфях Button1Click(), я что-то помню. Так. А зачем их одновременно красить? А кисти тут при чём? Кисть, как я помню, это способ нанесения рисунка на канву. Какое отношение они имеют к элементам формы?

Потому что сегодня ты захотел поменять цвет у десятка несвязанных друг с другом элементов (и что такое "поменять цвет" у них ты придумал сам). А завтра ты захочешь поменять у них запах, текстуру, вкус, гендер - и на каждый чих тебе придётся писать набор расширений. Ты делаешь что-то странное, кмк.
Аноним 12/01/24 Птн 00:49:53 2998609 1015
>>2998448
>Вот у каждого элемента будет свой сетколор, и он будет знать, что делать.
Это как? В одном случае пользователь хочет поменять цвет фона — это одно свойство, а в другом случае он меняет цвет контура — это другое свойство. Вот запустил я метод SetColor и че? Куда он полезет? В первое или второе?
Экстеншен не поможет, либо у него будет слишком много полномочий, либо дальнейшая поддержка подобной системы будет деструктивной, потому что вариаций откуда брать данные — масса.

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

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

Вот тебе кнопочка со сплошным однородным цветом
MyButton.Background = new SolidColorBrush();

А вот кнопочка с градиентом
MyButton.Background = new LinearGradientBrush();

Вот так и создается новый экземпляр, совершенно легально.
А если ты по поводу freezable-классов, так frozen state активируется в случаях, когда кисть инициализируется в xaml, и такой подход нужен, чтобы биндиться прямо из ресурсов (к примеру). В моем случае это не нужно, поэтому мне нужна возможность перезаписать кисть. Вот и всё.
Аноним 12/01/24 Птн 01:28:40 2998629 1016
2024-01-1200-59[...].png 188Кб, 697x407
697x407
2024-01-1201-23[...].png 3Кб, 516x132
516x132
>>2998455
>Это такие визуальные элементы на форме
Аааа, ясно. Это WPF, не знаю насколько он похож на подход в делфи. Но от винформсов отличается достаточно сильно.

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

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

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

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

Я как раз занимаюсь универсальной системой скинов и тем для своих приложений. Она есть дефолтная, но это говнище куцее.
Аноним 12/01/24 Птн 02:10:07 2998654 1017
bandicam 2024-0[...].mp4 898Кб, 368x120, 00:00:49
368x120
bandicam 2024-0[...].mp4 745Кб, 368x252, 00:00:34
368x252
>>2998455
>Кисть, как я помню, это способ нанесения рисунка на канву. Какое отношение они имеют к элементам формы?
В WPF суть контрола в том, что это конструктор.

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

Вот к примеру на видеорил мой собственный контрол, который редактирует свойства радиальной кисти, а на втором показан контрол для изменения линейного градиента. Это такие же UI-элементы как кнопка или комбобокс. В дальнейшем им можно изменить стили, и например сделать стиль аля windows 11 или mac, чтобы ползунки были другой формы или цвета. При этом внутрь контрла лезть уже не надо.
Аноним 12/01/24 Птн 02:11:50 2998655 1018
>>2998654
Алсо, на видосах эффект двойного курсора — это проблемы с записью. Видимо фэпасов мало поставил.
Аноним 12/01/24 Птн 03:15:28 2998672 1019
image.png 45Кб, 580x333
580x333
Что этой хуите нужно?

как тут может быть разыменование если есть проверка на null?
Аноним 12/01/24 Птн 04:57:45 2998686 1020
>>2998672
мамой поклянись что ToString() не вернет null
Аноним 12/01/24 Птн 05:36:56 2998693 1021
.png 43Кб, 651x729
651x729
>>2997913
Что мешает как-то так сделать?
Аноним 12/01/24 Птн 11:10:26 2998854 1022
>>2998693
Интересная идея. Тоже была мысль через экшоны попытаться сделать.
Аноним 12/01/24 Птн 17:26:15 2999410 1023
>>2998654
Анон, это ты что такое пилишь? Для себя или работа? Выглядит интересно.
Аноним 12/01/24 Птн 17:37:21 2999427 1024
>>2998654
> 1 вебм
Сам придумал или подсмотрел где идею? Выглядит здорово, я бы до такого не додумался.
Аноним 12/01/24 Птн 20:57:00 2999709 1025
>>2999427
Просто представил, что это обычная фигура в графическом редакторе, к тому же система трансформаций такая же. Я в свое время задрался настраивать градиенты что в иллюстраторе, что в кореле.
Аноним 13/01/24 Суб 00:44:16 2999969 1026
Шарпаны, я ньюфаг и хочу начать писать сетевой код на шарпе. Для начала простенький чат ну и так далее.
Только я начал гуглить и выдает какието уебищные видосы на ютубе с нерабочим кодом и какието странные книги за 2014й год.
Наверное я чтото не то ищу.
Подскажите что курить и куда двигаться? хочу научиться писать сетевые предложения.
Аноним 13/01/24 Суб 06:14:59 3000112 1027
Аноним 13/01/24 Суб 06:21:57 3000113 1028
А так же вопрос по SignalR
Как мне в нём в Хабе перехватить параметр http://example.com/?userId=123
А именно в телеге хочу сделать небольшое web apps с передачей параметра в виде User ID и так определять какой ТГ юзер зашёл в приложение. Да не безопасно, но это потом, я так демку делаю.
ГПТ сказал типо так
var userId = Context.GetHttpContext().Request.Query["userId"];
Но там пусто.
Как сделать так как мне надо?
Аноним 13/01/24 Суб 06:33:08 3000115 1029
>>3000113
Даже получить 1 раз это значение пока в хабе открыто соединение
Аноним 13/01/24 Суб 06:33:43 3000116 1030
Обещали перекат. Где?
Аноним 13/01/24 Суб 12:02:31 3000306 1031
>>2999969
>хочу начать писать сетевой код на шарп
Цель?

>чат ну и так далее
Blazor - лучший выбор. Ну или Bolero (Blazor под капотом), если хочешь писать на F#.
Аноним 13/01/24 Суб 13:17:32 3000385 1032
Аноним 13/01/24 Суб 14:55:42 3000456 1033
.png 73Кб, 806x943
806x943
>>2999969
Начни с чего-то такого,
Гуглится - ТЭЦЭПЭ СЕРВЕР СИ ШАРП
Аноним 13/01/24 Суб 15:40:49 3000513 1034
Аноним 13/01/24 Суб 19:46:40 3001004 1035
изображение.png 46Кб, 672x480
672x480
изображение.png 137Кб, 1206x405
1206x405
Всем привет. Кто-нибудь в курсе как настроить путь в csproj, чтобы папка создавалась не в корне, а,например, в папке Common. На скрине отметил, где создаётся папка Mappers, создаётся она командами из <Target Name="Mapster">.
Аноним 13/01/24 Суб 21:07:43 3001157 1036
>>3001004
Не совсем понимаю, что тебе нужно. Но скорее всего и не пойму, т.к. если какая-то библиотека требует какого-то хитрого пердолинга в csproj, то очень вряд ли стоит ей пользоваться.
Аноним 13/01/24 Суб 21:28:31 3001187 1037
>>3001157
Это mapster для маппинга моделей. А нужно изменить место создания папки Mappers. Я предполагаю, что создаётся она командами, что заключены в <Target Name="Mapster">. А вот что там менять надо - я не очень понимаю.
Аноним 13/01/24 Суб 23:26:00 3001355 1038
image.png 27Кб, 601x325
601x325
Аноним 14/01/24 Вск 00:56:51 3001596 1039
MAUI норм тема чтоб для андроида на сисярпе писать? Не хочу учить ебучий котлин и реакт тоже блевотный нахуй.
Аноним 14/01/24 Вск 02:24:52 3001731 1040
>>3001596
>норм тема
Там XAML, если от него не тошнит, то норм.
Аноним # OP 14/01/24 Вск 16:43:07 3002295 1041
Аноним 12/02/24 Пнд 14:31:39 3045140 1042
Посоветуйте книжек или уроков С# через разработку игорей
Ответить в тред Ответить в тред

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов