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

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 1010 150 203
C# thread #47 /csharp/ Аноним 23/03/23 Чтв 04:49:22 2649578 1
image 91Кб, 750x422
750x422
image 249Кб, 960x720
960x720
image 57Кб, 700x1114
700x1114
image 124Кб, 250x250
250x250
1. Ресурсы:
https://dotnet.microsoft.com/learn
https://ru.stackoverflow.com/a/416585/422180
https://metanit.com
https://professorweb.ru

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

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

4. С# для игр
https://ru.stackoverflow.com/a/609901/422180

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

6. Годные ютуб-каналы
https://www.youtube.com/c/CODEBLOG
https://www.youtube.com/c/AndreyShyrokoriadov
https://www.youtube.com/c/DevJungles
https://www.youtube.com/user/Shmachilin

Шапка: https://pastebin.com/HT7Hi6FD
Прошлый тред: >>2621949 (OP)
Аноним 23/03/23 Чтв 09:06:49 2649663 2
image.png 103Кб, 1870x674
1870x674
Вопрос скорее по visual studio, чем по шарпу: как заставить отладчик стопаться на точке останова на каждом n-ом проходе цикле, и логировать все значения переменной в студии для удобного просмотра в UI, а не логировать это в текстовый файл. Отлаживаю криптографию (на скрине) но не могу понять как это удобно сделать, жопа горит. Если кто знает из-за чего сама ошибка может быть, буду рад помощи, не могу понять почему массивы вдруг разными становятся, мб дело в Unicode который зашифрован в AES-GCM
Аноним 23/03/23 Чтв 10:33:28 2649695 3
>>2649663
У каждой точки останова есть условия, это что-то в виде очень простого макроса. Дальше гугли что надо прописывать.
Жалко, что нельзя эти условия как-то сохранять в список.
Аноним 23/03/23 Чтв 11:14:10 2649755 4
>>2649663
>и логировать все значения переменной в студии для удобного просмотра в UI
Если Serilog, то есть множество либ, типа
Sink.File, Sink.Debug, Sink.RichTextBox и т.д. У меня первые два, настроил для них разные уровни. Поэтому в окне интерпретации поверхностная информация, а более подробная в файле.

Для NLog наверно тоже самое.
Аноним 23/03/23 Чтв 13:28:12 2649924 5
2023-03-2313-20[...].png 7Кб, 1216x254
1216x254
2023-03-2313-24[...].png 18Кб, 696x616
696x616
Не хочет делать метрики. На мой взгляд, ничем этот проект не отличается от остальных.
Аноним 23/03/23 Чтв 21:50:00 2650588 6
cat.jpg 345Кб, 700x725
700x725
167422885873284[...].webm 1280Кб, 720x900, 00:00:13
720x900
16737869882320.mp4 1484Кб, 1106x1080, 00:00:03
1106x1080
>>2649755
>>2649695
Спасибо большое, попробую 2 варианта. По традиции двача пикчи в благодарность
Аноним 23/03/23 Чтв 22:28:29 2650615 7
Смотрите. Фронтенд использует devExtrem'овский датагрид.
Ну дык вот. Проблема в чем. Вот в чем: Тащить из базы миллион записей, чтобы их на клиенте отфильтровать, сгруппировать - бредово.
В GraphQL - девекстримовский датагрид - не умеет.
odata - не подходит, потому что не умеет в группировки(а они - надо).
Нужно велосипедить свое решение, чтобы поддерживало на стороне сервера группировки, сортиорвки и все это вот.
Ну, собственно - теперь у меня есть вопрос. А КАК?
Типа блин, я реально не понимаю, как мне динамически по имени поля - EF'ом отсортировать как надо, сгруппировать и отфильтровать. Типа мне прилетает запрос вида:
{
public bool RequireTotalCount { get; set; }
public bool RequireGroupCount { get; set; }
public bool IsCountQuery { get; set; }
public bool IsSummaryQuery { get; set; }
public int Skip { get; set; }
public int Take { get; set; }
public SortingInfo[] Sort { get; set; }
public GroupingInfo[] Group { get; set; }
public IList Filter { get; set; }
public SummaryInfo[] TotalSummary { get; set; }
public SummaryInfo[] GroupSummary { get; set; }
public string[] Select { get; set; }
public string[] PreSelect { get; set; }
public bool? RemoteSelect { get; set; }
public bool? RemoteGrouping { get; set; }
public bool? ExpandLinqSumType { get; set; }
public string[] PrimaryKey { get; set; }
public string DefaultSort { get; set; }
public bool? StringToLower { get; set; }
public bool? PaginateViaPrimaryKey { get; set; }
public bool? SortByPrimaryKey { get; set; }
}
Я должен отдать типа
{
data: [{
key: "Group 1",
items: [ ... ],
count: 3,
summary: [30, 20, 40]
},
...
],
totalCount: 200,
summary: [170, 20, 20, 1020],
groupCount: 35
}

И если паггинацию, сортировку, да хрен с ней, даже фильтрацию я как-то сделал с помощью DynamicLinq, то вот как мне группировки эти делать - я с душе не ебу, хоть убей.
Объяснить фронтендеру, что нафиг этот датагрид ебаный, тоже не получается, мне говорят что я рукожоп просто(((
Аноним 24/03/23 Птн 00:06:26 2650749 8
>>2650615
>odata - не подходит, потому что не умеет в группировки
С хуя ли она не умеет в группировки?
Аноним 24/03/23 Птн 01:16:13 2650815 9
>>2650615
>как мне динамически по имени поля - EF'ом отсортировать как надо
Я х.з. честно говоря, последний раз такое года два назад делал. Но насколько помню, пилишь пачку спецификаций которые будут собирать тебе нужные предикаты (либо базовых и конкретных, наследуемых от них, либо универсальных, но тогда понадобится резолвер для приведения имен столбцов в БД к именам свойств сущностей). А потом подсовываешь все эти предикаты в нужные места запроса.
Аноним 24/03/23 Птн 18:49:16 2651551 10
У меня есть проект с апи, сейчас нужно сделать телеграм бота, что дёргает это апи и позволяет юзерам юзать функционал приложения через этого бота.
До этого я с ботами не сталкивался, реализовал стейт, чтобы бот понимал последовательные запросы. Аутентификацию добавил, т.е пользователь сохраняется в основной базе даже в случае если он до этого не использовал приложение. Все работает, пока храню контекст в словаре (id, context). Получаю нового пользователя - добавляю в словарь, даю базовый стейт, когда он ливает, то убираю из словаря.
1) Теперь думаю, а где лучше стейт (мб даже сам контекст) хранить? В базе или может в json каком-нибудь? По логике не стоит вообще это пихать в основную бд(там где апи и прочие основные проекты), т.к это ж по-сути только к боту относится. Сделать новую бд? Json кажется костылем, но может быть так делают?
2) Также бот умеет в оповещения (Background jobs). Пользователи могут сам создавать джобы, задавать им время, периодичность. Т.е при выполнении задачи бот посылает пользователю сообщение. Где лучше их хранить, в смысле задачи? Могу сделать бд с таблицей вроде (тип задачи, время, периодичность), либо опять же json?
Наверное глупые вопросы, но мне пока непонятно, что стоит хранить в json помимо всяких конфигов, а что в бд.
Аноним 24/03/23 Птн 22:36:05 2651751 11
>>2651551
>>2651551
>Теперь думаю, а где лучше стейт (мб даже сам контекст) хранить? В базе или может в json каком-нибудь? По логике не стоит вообще это пихать в основную бд
SQLite. Маленькое, быстрое и не требует установки доп звисимостей в систему. БД может либо инмемори, либо в одном файле быть.
У меня пимерно такой же проект. Я все что нужно самому боту храню в sqlllite бд.
Аноним 24/03/23 Птн 22:38:13 2651752 12
>>2651551
На второй вопрос тот же ответ.
Аноним 25/03/23 Суб 04:19:31 2651905 13
>>2651551
в жсон конфиги. в бд данные
хранить состояние в теории можно в файлах, но зачем - у нас тут не сайтик на пхп

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

нафиг оно нужно. правда нужно не забывать что sqlite лочит всю базу на запись. И если вдруг ты из многих потоков будешь активно пытаться писать вида "открыл коннект - записал - закрыл", то можешь легко получить database is locked

Я не знаю как щас с мс оберткой там они ж пул коннектов прикрутили. Но вот с (какой там самый старый провайдер) я получал database is locked.
Оказалось что первый коннект пишет, пришел второй видит занято и ждет. Причем не в очередь становится, а просто через время еще раз пробует. А пока он ждал пришла еще запись. В итоге второй через кучу попыток так и не сможет вклиниться и выдаст ошибку. Пришлось разруливать семафорами, что неудобно
Аноним 25/03/23 Суб 11:36:29 2652126 14
>>2651751
Думал так сделать, спасибо. Уже в принципе сделал.
>>2651905
Про локи не думал и пока не сталкивался обычно использовал postgresql/mssql, у меня ещё была идея кэшировать все это, не сильно поможет, но все же. Спасибо за подробный ответ.
А как поступают с неизменяемыми строками, тоже лучше в бд? Я сейчас все ответы бота храню в json, потом через DI прокидываю конфиг в класс, что отправляет сообщения, там он в зависимости от языка пользователя берет из файла нужный ответ. С динамическими ответами сложнее, благо у них тоже структура есть, достаточно взять из конфига, подставить значения прилетевшие с бекенда.
Я это сделал, чтобы не хранить строки в коде и читал в факе о ботах, что желательно подстраивать ответы под язык пользователя.
Аноним 25/03/23 Суб 13:02:38 2652193 15
Вопрос по теме для диплома, хочу делать на asp .net core и нужна какая-то идея для задания, где .net покажет себя лучше всего. В дипломе всё таки нельзя сказать, что я взял c# потому что мне захотелось на нём, может есть мысли по поводу того что можно реализовать или вообще просто какие-то сферы/кейсы где .net core себя проявляет лучше в сравнении с другими. Спасибо.
Аноним 25/03/23 Суб 14:07:31 2652276 16
>>2652193
>Вопрос по теме для диплома, хочу делать на asp .net core и нужна какая-то идея для задания
Как-то по ебанутому у тебя диплом выглядит. Обычно всегда дается одна или несколько тем на выбор, а потом уже к ним ищется инструментарий для выполнения.
>>2652193
>какие-то сферы/кейсы где .net core себя проявляет лучше в сравнении с другими
Как бы мне ни нравился C#, но по факту - ни в каких. Есть джава, есть go. Шарп с джавой примерно от одного хуя яйца по возможностям и эффективности. Большинство различий - вкусовщина. Плюс джавы - она более распространена, но за шарпом стоят все бабки майкрософта и они нихуево так вкладываются сейчас в его развитие. За go правда все бабки гугла стоят, но там пока еще сырая архитектура, плюс это гугл, вариант того, что они завтра скажут "мы наигрались, закрываем проект" немаловероятна. Ну может еще в инди-геймдеве шарп кое-где роляет (но я так понимаю диплом ты на этом не построишь).

Сделай какой-нибудь сервис по консолидации грузоперевозок. В нынешних реалиях очень полезно (такие проекты есть и разрабатываются сейчас и за них платят неплохие деньги). А выбор шарпа мотивируй скоростью и удобством разработки, легкостью разворачивания готового сервиса. Если сделашь на .net7 (или даже на превьюшке 8-го), то можешь даже скоростью козырнуть.
Аноним 25/03/23 Суб 14:16:02 2652282 17
>>2652126
>А как поступают с неизменяемыми строками, тоже лучше в бд?
Я бы такой функционал, как ты описал хранил бы в БД наверное. Просто во время работы дергал бы из нее набор для нужного языка и использовал.
Плюс опять же, в случае использования sqlite, ты можешь целый пучок этих баз создать под разную функциональность. Один под хранение стейтов, один под работу с сообщениями на разных языках. Тогда и локов проще избежать будет и ебли с файлами не будет. Просто разные контексты настроишь и все. А файлы бд в случае sqlite вообще мизер будут занимать на диске.
Аноним 25/03/23 Суб 14:22:03 2652290 18
>>2652276
>Как-то по ебанутому у тебя диплом выглядит. Обычно всегда дается одна или несколько тем на выбор, а потом уже к ним ищется инструментарий для выполнения.

Это же чуть ли не клише "студенческая работа", когда человек подбирает задачу под инструмент, а не инструмент под задачу. Такие работы оторваны от жизни, а если хочется впихнуть невпихуемое, то маскируется под "исследование темы", типа "в этой работе я попытался исследовать возможность программирования микроконтроллеров на C#"
Аноним 25/03/23 Суб 14:30:35 2652300 19
если методу передать массив из 1000 строк, то передастся ссылка или значение? стоит ли так делать как повлияет на ситуацию, если аргумент просит IEnumerable?
Аноним 25/03/23 Суб 14:31:35 2652304 20
>>2652300
>стоит ли так делать? как ...
потерялся знак вопроса
Аноним 25/03/23 Суб 15:13:04 2652346 21
>>2652300
>если методу передать массив из 1000 строк, то передастся ссылка или значение?
Это ж насколько у тебя хлебушек в голове, если ты задаешь настолько ебанутые вопросы? Ты не думаешь, что тебе не стоит влезать в кодинг, если ты даже базу о ссылочных и значимых типах не можешь освоить?
Аноним 25/03/23 Суб 15:16:20 2652351 22
Аноним 25/03/23 Суб 15:18:28 2652354 23
Аноним 25/03/23 Суб 16:43:35 2652447 24
>>2652276
>Большинство различий - вкусовщина
ну да ну да - жрать черствый заплесневелый хлеб или сладкую мягкую булочку...ну да, просто разные вкусы ))
Аноним 25/03/23 Суб 16:46:30 2652456 25
>>2652452
видимо нужно написать дополнение к браузеру чтобы он скрывал этого спамера
Аноним 25/03/23 Суб 17:18:44 2652500 26
>>2652456
Есть же автоскрытие и спеллы для куклы.
Аноним 25/03/23 Суб 20:25:27 2652755 27
>>2652193
Автоматизация предприятий. Особенно что связано с промышленностью и всяким железом.
Написать микроскаду на шарпе под конкретное предприятие - это просто охуеть как приятно, удобно и просто.

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

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

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

Да. Из прикладных - еще можно намутить систему управления умным домом, хостить систему на какой-нибудь малинке. Тоже прикольно.

Обосновать шарп всегда можно тем что все есть и требует минимальное число телодвижений, по сравнению с остальным добром, за то и любим.
Аноним 25/03/23 Суб 21:55:58 2652824 28
.png 9Кб, 328x141
328x141
Почему буквально все коллеги на работе - против того чтобы вот такие атрибуты добавить и сделать свой класс расширения который будет из сборки сервисы доставать?
Вот буквально. Джуны - нам норм каждый раз в Startup/Program добавлять. Мидлы - нам норм. Сеньеры - та хуй знает, а вдруг другие на поймут, найхуй свой метод расширения тащить в проект...

Я как еблан, только в своих частях кода - вот такое делаю.
Просто заебывает именно то, что это у себя-то я делаю, но вынести в отдельный проектик в духе: Project.Common - не разрешают(((
Аноним 25/03/23 Суб 23:02:22 2652880 29
>>2652824
>нам норм каждый раз в Startup/Program добавлять
да. не джун.
потому что так все в одном месте и это место ясно где
а не размазано по проекту
Аноним 25/03/23 Суб 23:12:05 2652891 30
>>2652880
Я не знаю. Может быть я один такой болезненный и если 6 часов ебусь с какой-то сложной логикой - могу забыть зарегистрировать. ХЗ. Меня - напрягает. Особенно, когда сервис который ты писал - где-то в дебрях логики, и чтобы наткнуться на то что ты забыл зарегать что-то, приходится проделать кучу манипуляций, пока не поймаешь эксепшн.
А тесты-то не падают, ведь тестировать что ты все зарегал - муторно, потестировал что сервис работает как надо - залил, потом - прилетает тебе пиздюлей, что ты еблан такой.
Плюс, файлик startup - становится пиздецки огромным у меня. 100 сервисов сделать мне - это как пить дать, я люблю на любой чих - делать отдельный сервис.
Аноним 25/03/23 Суб 23:50:36 2652920 31
>>2652891
>Может быть я один такой болезненный
Я тоже подумывал над таким вариантом.
Но меня останавливает то, что при рефакторинге, можно задолбаться отыскивая какие сервисы у тебя подключены, а какие нет. Плюс если захочешь изменить лайфтайм какай-либо цепочки, то вместо того чтобы в одном месте все изменить, придется по всем сервисам пройтись и в каждом атрибут поменять.
Аноним 25/03/23 Суб 23:52:34 2652924 32
>>2652824
>вот такие атрибуты
А код аттрибута можешь показать?
Аноним 26/03/23 Вск 00:04:47 2652934 33
А как парсить сайты? В частности авито. Ну т.е. понятно что нужно будет разбирать аштээмэльку, но может есть подводные? Типа регулярно менять айпи или соблюдать определенные тайминги дабы не спалили что это машинные запросы и не забанили?
Аноним 26/03/23 Вск 00:41:14 2652954 34
>>2652934
Пиздуй к пэхэпешникам, шарпогоспода такой чушью не занимаются.
Аноним 26/03/23 Вск 00:46:49 2652957 35
>>2652954
Шарпопетухи занимаются ещё как
Недавно нюхал рыночек вакансий, в итоге решил пообщаться с букмекерами/онлайн казиношниками.

Искали мидла/сеньора для поддержки высоконагруженных сервисов с основным требованием "Уметь быстро и качественно парсить сайты", попросили написать пагинацию коллекции на LINQ без Take/Skip и перебора со счётчиком

Были посланы нахуй за трату моего времени.

А как бы вы реализовали эту пагинацию?
Аноним 26/03/23 Вск 00:57:32 2652960 36
.png 27Кб, 493x228
493x228
>>2652957
Ну. Допустим как-то так. Например.
Аноним 26/03/23 Вск 00:57:52 2652961 37
>>2652957
Только LINQ, дополнять говнокодом запрещается.
Аноним 26/03/23 Вск 01:02:36 2652965 38
>>2652960
Забыл дописать условие, оно здесь >>2652961

Вообще, я подумал что это какие-то ебанутые шизы, которые любят штатные оптимальные средства заменять своим говном и годами копаться в этом
Аноним 26/03/23 Вск 01:47:14 2652999 39
>>2652957
>попросили написать пагинацию коллекции на LINQ без Take/Skip и перебора со счётчиком
Кек. С одной стороны зввдачка на ехуй делать. С другой стороны мощнейший признак того, ясто собеседующий ебобо.
Аноним 26/03/23 Вск 02:21:00 2653013 40
>>2652999
Да я вот что-то придумать не могу, если запрещено писать свой метод.
Через TakeWhile и SkipWhile?
Аноним 26/03/23 Вск 02:39:18 2653022 41
>>2652957
collection.Chunk(size).ElementAt(pageIndex);
Аноним 26/03/23 Вск 02:49:42 2653025 42
Аноним 26/03/23 Вск 03:25:29 2653030 43
>>2652891
Ну так дроби
Смотри же как тот же асп.нет делает
Ты подключаешь либы и делаешь
services.AddFeature()

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

Не каждый проект в солюшене торчит кишками наружу, а вполне себе отделяется интрфейсами и ничем не отличаются от либы с нюгета
Аноним 26/03/23 Вск 09:13:17 2653105 44
>>2652954
Т.е. зарабатывать это к пэхэпешникам, шарпогоспода такой чушью не занимаются?
Аноним 26/03/23 Вск 09:26:29 2653110 45
>>2653105
У меня в качестве халтурной подработки три нормальных микросервиса на очереди стоят. При том что я не фрилансер даже и еще думаю соглашаться или нет. Нормальной работы кругом - жопой жуй. Нахрена еще с парашей вроде парсинга сайтов заниматься?
Аноним 26/03/23 Вск 10:37:56 2653135 46
>>2653110
Но моему микросервису нужен источник данных...
Аноним 26/03/23 Вск 10:47:51 2653137 47
>>2653135
Ну так он их и получает, либо через свое API, либо по шине.
Ну и опять же микросервисы разные бывают. Не всем в интернете нужно сидеть и мониторить цены на говносайтах.
Аноним 26/03/23 Вск 12:25:16 2653215 48
Есть вопрос по Entity Framework, нужно ли после создания контекста утилизировать экземпляры с помощью Dispose или using? Такое ощущение, что тут нет единого мнения. Одни говорят, это нужно делать обязательно, другие, что контекст сам управляет своим состоянием. Я запутался крч, хз как правильно.
Вот, например, у меня есть wpf приложение, где UserControlы использую как страницы, загружая в бордер. В каждом UserControlе создаю свой контекст ApplicationContext db = new ApplicationContext();, но нигде не закрываю.
и если можно и не закрывать, то я так понимаю нужно использовать try catch на каждое обращение к базе?
Аноним 26/03/23 Вск 12:52:29 2653234 49
>>2653215
От провайдера зависит, когда ты руками или через юзинг диспоузишь контекст, то он может быть реально не закрыт, а помещен в пул. Также и с открытием.
Тебе не нужно держать контекст долго, т.к в таком случае данные там могут быть несвежие. Юзинг в таком случае твой выбор.
Ещё подумай о том, почему вообще контролы знают о контексте? Мб оно им не надо и стоит сделать абстракцию над AppDbContext, например репозиторий какой-нибудь?
Аноним 27/03/23 Пнд 08:45:13 2653947 50
Аноним 27/03/23 Пнд 12:05:35 2654074 51
Если в полях структуры присутствуют классы, то структура бессмысленна? Бенчмарк показывает примерно одни и те же данные.
Аноним 27/03/23 Пнд 13:19:18 2654167 52
>>2654074
В структуре только ссылка хранится. Ссылки хранятся на стеке или в регистрах, в хипе если подразумевается долгое хранение.
Другие дело, что value types совсем необязательно будут на стеке. Можешь чекнуть статью the truth about value types или как-то так.
То, где будет храниться value type сильно зависит от того как ты его используешь. Но даже так за тебя это jit делает, какую он там стратегию выберет только ему известно
Аноним 27/03/23 Пнд 19:00:55 2654599 53
2023-03-2720-54[...].png 19Кб, 893x637
893x637
))))))))))))))
Аноним 27/03/23 Пнд 19:07:24 2654605 54
2023-03-2721-07[...].png 30Кб, 933x505
933x505
)))))))))))))))))))))))))))))))))))))))))))
Аноним 27/03/23 Пнд 19:09:16 2654606 55
Аноним 27/03/23 Пнд 19:10:56 2654608 56
2023-03-2721-10[...].png 15Кб, 938x793
938x793
Аноним 27/03/23 Пнд 19:13:16 2654611 57
>>2654608
ясно. весна, шиза. только зачем спамить....
Аноним 27/03/23 Пнд 19:17:33 2654617 58
2023-03-2721-17[...].png 8Кб, 946x329
946x329
Аноним 28/03/23 Втр 09:15:00 2654925 59
image 51Кб, 1942x697
1942x697
image 49Кб, 1942x697
1942x697
Аноны, нужна помощь мастеров над логикой и данными.

Мне нужно в JSON массиве хранить информацию о всех игровых предметах на сервере. Это ID предмета, тип предмета и тому подобное (скрин 1). Там же мне нужно хранить информацию о стоимости. И отдельными списками хранить офферы для каждого игрока, тоже в JSON массиве.

Более 95% предметов доступны к покупке только через офферы. То есть их нельзя купить напрямую, только если сервер предложил их тебе через оффер. Допустим, набор с 500 монетами можно купить напрямую и сколько угодно раз, а определённое Оружие можно купить только по офферу и только один раз. Я для доступных предметов решил добавить поле IsPublic, чтобы проверять его на сервере может ли игрок купить свободно этот предмет. Но чёт мне не нравится. Может это нужно перенести в GameItemPrice.

Получить предмет можно 3 способами:
- Бесплатно
- За реальные деньги (для этого нужно хранить ProductID товара из реального магазина)
- За виртуальные внутриигровые деньги. У таких денег есть код валюты (Gems или Coins) и может быть скидка. У одного предмета может быть стоимость в разных виртуальных валютах, со скидкой и без

Вопрос: как всё это хранить у игрового предмета и что хранить в офферах?

Набросал первый вариант на 1 скрине. Вроде удобно получается и даже близко к реляционной базе данных. Но возможно для моего случая это избыточно. Ещё набросал второй вариант чуть проще. Возможно он логичнее с той точки зрения, что Free задаётся в самом оффере (если ты выдаёшь предмет бесплатно, как подарок, то это только оффер как ни крути)
Аноним 28/03/23 Втр 12:11:35 2655050 60
>>2654925
Желаю теб чтоб ты срал дальше чем видел. Пока не поймешь, что из-за таких как-ты, современные игры стали полным дерьмом.
Надеюсь ты все осознаешь и станешь заниматься чем-нибудь более полезным.
Аноним 28/03/23 Втр 14:40:06 2655195 61
image 1747Кб, 1185x942
1185x942
>>2655050
Желаю тебе нахуй пойти, обиженное на жизнь чмо.
Аноним 29/03/23 Срд 00:25:27 2655732 62
>>2655195
Ебантяй уже продумал как продавать говно в своей игре, а игру не сделал
Хранение в json не осилил, игродел ёбаный

Уебывай в раздел для юнитидебилов
Аноним 29/03/23 Срд 00:55:22 2655744 63
Есть список файлов с локальным путем, уровня "Folder A/Folder B/My File", который я скармливаю тулзе (закрытая, не моя) которая обрабатывает файлы, при этом в полном имени файлов заменяет все косые черты и пробелы на нижние прочерки: "Folder_A_Folder_B_My_File".

Моя задача распознать сигнатуру и определить, что это "Folder_A_Folder_B_My_File" имеет отношение к этому "Folder A/Folder B/My File". Вернуть все обратно.

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

Условия:
1. Это не путь на диске, а локальный путь в документе приложения, поэтому никаких GetFullName().
2. Я не могу заменить косые черты. Они формируют правильное отображение файла и эти правила я не могу изменить.
Аноним 29/03/23 Срд 01:04:35 2655748 64
>>2655744
Я могу решить задачу в лоб, типа сравнивать две строки посимвольно и при конфликтном символе переходить к сравнению списка возможных символов (пробел или косая черта). Если ни то и не другое, то выдавать false.
Аноним 29/03/23 Срд 01:14:52 2655751 65
>>2655748
Ну скормил ты тулзе файл, а че дальше-то? Она ренеймит и кидает в какой-то каталог или что? И тебе нужно заменить исходных файл из жирно каталога?
Аноним 29/03/23 Срд 01:46:07 2655762 66
>>2655732
Поддвачну шарподебила.
Аноним 29/03/23 Срд 02:41:28 2655772 67
Вопрос по DI не в контексте asp.
В asp dbcontext обычно регают как scoped, дальше пайплайн сам создаст скоуп на каждый http реквест и все заебись.
Как быть не в asp? У меня также есть dbcontext, который прокидывается в хэндлеры медиатора. Я могу в теории сам создавать скоуп через фабрику в диспетчере, где вызывается медиатр, чтобы все команды и квери получали один инстанс на вызов. Но это выглядит как дрочево, т.е мне придется ещё и фабрику как зависимость прокинуть.
С другой стороны мб регать как transient, но тогда остается проблема, что хэндлеры получат каждый по контексту? Сейчас скоуп работает как синглтон.
Как бы вы регали dbcontext не в asp? Кроме как руками скоуп делать есть варианты?
Аноним 29/03/23 Срд 03:26:52 2655773 68
>>2655772
так ты и не регай. получай контекст по необходимости.
Аноним 29/03/23 Срд 10:44:04 2655917 69
>>2655772
всё зависит от твоей многопоточности
1909931
Аноним 29/03/23 Срд 11:37:35 2655999 70
Как на линуксе поставить старые дотнеты и чтобы они не конфликтовали с последней текущей версией?
Аноним 29/03/23 Срд 12:13:47 2656035 71
16618503265371.jpg 351Кб, 918x750
918x750
>>2649578 (OP)
Кто-нибудь, помогите!
На работе нужно сделать надстройку для excel, используют версию 2010 года.
Я начал сначала по гайдам с vba делать, но потом перешёл на c#, ибо насколько я понял это более гибкое решение.
Создал проект, начал реализовывать первый какой никакой функционал, и обнаружил, что как будто кроме меня этим никто толком и не занимался, в интернете вообще нет информации толковой, единственное что хоть как-то помогало это документация от майков, но там очень много непонятного (в том числе из-за того, что язык я почти не знаю, изучал только python.)
Быть может есть какие-нибудь ресурсы с этим? Ну форумы, статьи, видео, книги и т.д. на примете?
Желательно особенно про сводные таблицы информации.
С меня как обычно.
Аноним 29/03/23 Срд 12:20:35 2656046 72
>>2655751
>Она ренеймит и кидает в какой-то каталог или что?
Именно. Тулза конвертирует файл в другой формат, но ради универсальности с другими приложениями ренеймит полное имя файла. Сконвертированные файлы кидает в каталог.

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

Все что мне доступно — это стринговая информация. Я думал мб есть какие-то регулярные выражения для подобной ситуации.
Аноним 29/03/23 Срд 13:16:33 2656093 73
>>2656035
>сделать надстройку для excel,
Макрос или плагин? Каким образом ты взаимодействуешь с приложением?
Или ты типа создаешь свое приложение, которое запускает эксель и пердит в него?

>ибо насколько я понял это более гибкое решение.
Главное чтобы эта гибкость не порвала твою неподготовленную для гибкости жопу.

>как будто кроме меня этим никто толком и не занимался
Та же ситуация. Начинал писать на vba для CorelDraw, Rhinoceros.
Никому это не нужно, все пробуешь методом тыка. Потом перешел на написание плагинов на VB.NET. Но у меня для каждой проги был свой мертвый форум, а через маркет плейс вижуал студии скачивал шаблоны для создания плагинов програм нейм. Названия форумов не всегда очевидны. С экселем не работал.

Ну что могу сказать? Если ты не хочешь положить несколько лет на это дерьмо, а потом выбросить в помойку, то юзай vba. Перейти с бейсика на шарп — дело одной недели.
Аноним 29/03/23 Срд 13:32:43 2656110 74
exceladdin.PNG 80Кб, 1316x696
1316x696
>>2656093
> Макрос или плагин? Каким образом ты взаимодействуешь с приложением?
Делаю надстройку, а именно панель инструментов.
Сейчас проблема в том, что я не понимаю как можно работать с полем с датами (получать список выделенных или выделять нужные). Прикрепил скрин, должно стать гораздо понятнее.

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

> Никому это не нужно, все пробуешь методом тыка. Потом перешел на написание плагинов на VB.NET. Но у меня для каждой проги был свой мертвый форум, а через маркет плейс вижуал студии скачивал шаблоны для создания плагинов програм нейм. Названия форумов не всегда очевидны. С экселем не работал.
Все, что у меня работает тоже сделано методом тыка, понимаю. Возможно поступлю потом так же.
Аноним 29/03/23 Срд 14:16:25 2656126 75
>>2655744
Если я правильно понял твою задачу, то просто вырезаешь в обеих строках спорные символы и сравниваешь, что получилось. Если совпало, то значит это одно и то же. Можешь не вырезать, а заменять (точно так же в обеих строках) на какой-либо общий символ, который не может встречаться ни там, ни там (ну или эскейп последовательность).
Аноним 29/03/23 Срд 14:24:13 2656137 76
>>2656035
>На работе нужно сделать надстройку для excel, используют версию 2010 года.
Hello darkness my old friend...
Аноним 29/03/23 Срд 15:05:18 2656191 77
>>2655773
>>2655917
Отбой получается. Я нашел место где создавать скоуп. Получилось буквально 1 в 1 как в asp на каждый реквест
Аноним 29/03/23 Срд 15:21:03 2656209 78
Вам нужно просто понять, что мой успех он неизбежен. Вам стоит смириться и сдаться с этим. Моя дисциплина самая прочная на Земле, как сплав хрома, кобальта и никеля. Моя мотивация как у льва с утра - бежать быстрее антилопы, чтобы её съесть. Вам нужно ПРОСТО смириться и начать плыть по течению, пока я прорабатываю все кишочки и устанавливаю все кафки.
Аноним 29/03/23 Срд 15:31:37 2656218 79
>>2656126
Тоже годная идея, но нужно как минимум два прохода по символам + операции со стоками.
Аноним 29/03/23 Срд 15:45:02 2656239 80
Помогите пожалуйста.
Есть .NET Core WEB API проект (.NET 7), и я его опубликовал как Windows Sevice на определенной машине.
На самой машине до эндпоинтов достучаться можно, через localhost.
Теперь нужно достучаться до них с другой машины.
Админы говорят что порты открыли (443, 80, 5000) 5000 потому что localhost открывается на нем.
С другой машины доступа нет, скорее всего я чего-то не добавил в сам проект.
Что мне нужно сделать? Я пытался поставить URL самой машины через UseUrls, но это не перезаписало дефолтный URL, сервис все равно доступен только через localhost.
Я перерыл весь гугл но момента похожего на мой не нашел. Во многих примерах есть класс Startup которого нет у меня, нужен ли он для UseUrls? Не понимаю.
Аноним 29/03/23 Срд 15:45:26 2656241 81
>>2656110
>Делаю надстройку, а именно панель инструментов.
VSTO?

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

Я эксель вообще не знаю. В таких ситуациях все упирается в знания функционала api.

MDSN форум видел?
https://social.msdn.microsoft.com/Forums/office/en-US/home?forum=exceldev

Эксель форум
https://www.excelforum.com/excel-programming-vba-macros/
Аноним 29/03/23 Срд 16:31:10 2656322 82
image.png 99Кб, 982x542
982x542
>>2656218
>операции со стоками.
Ну ясен хуй 'операции со строками', если ты сравнивать их собрался.
>>2656218
>но нужно как минимум два прохода по символам
Какие проходы? Ты там в цикле символы что ли менять собираешься?

Вот на пике по быстрому накидал:
Аноним 29/03/23 Срд 16:32:39 2656325 83
>>2656046
Сделай конвертер имён сам, полученные имена пихаешь в словарь, он будет у тебя содержать оригинальное имя и то, которое сделает тебе тулза сторонняя
Потом берешь все файлы в папке вывода, ренеймишь, пихаешь обратно по пути из словаря

(Код примерный)
foreach var f in Directory.GetFiles(путь выхода тулзы сторонней){
var oldPath = dictionary[f.Name]
f.Name = Path.GetFileName(oldPath)
File.Move(f.Path,oldPath)
}
Аноним 29/03/23 Срд 16:32:45 2656326 84
>>2656218
>>2656322
И да, вариант с заменой лучше, чем с вырезанием.
Аноним 29/03/23 Срд 16:35:55 2656332 85
>>2656035
Добро пожаловать в мир COM Interop пердолинга

Гайдов почти нет, если будет установка через в виртуальные рабочие места через сись админа - заворачивай в exe через wix
Аноним 29/03/23 Срд 16:52:09 2656361 86
>>2656322
>Ты там в цикле символы что ли менять собираешься?
У тебя сначала
1. идет цикл замены символов одной строки
2. идет цикл замены символов второй строки
3. цикл сравнения двух строк
Три цикла

>Ну ясен хуй 'операции со строками'
Я имел ввиду, что рождается новый экземпляр строки.
Replace создаст еще одну строку.
Аноним 29/03/23 Срд 17:10:19 2656395 87
>>2656361
>1. идет цикл замены символов одной строки
>2. идет цикл замены символов второй строки
>3. цикл сравнения двух строк
Хуйней не страдай. Под капотом всегда где-нибудь да будет цикл. Либо на уровне шарпа, либо на IL, либо еще глубже. Тебе не похуй ли? Главное, что не ты сам руками перебираешь.
>>2656361
>Я имел ввиду, что рождается новый экземпляр строки.
А тебе не похуй ли, что там рождается?
Ну если ты байтоеб дохуя, замени на StringBuilder.
Аноним 29/03/23 Срд 19:03:29 2656534 88
>>2656191
несмотря на то что это типа контекст это все равно что работать с бд в обычном режиме. нужна база? - открыл, почитал/записал, закрыл. И тут DI не нужен. Просто в asp.net есть удобный scope куда можно это приатачить и тогда никто не забудет закрыть коннект или вернуть в пул.
в других приложениях ты сам открываешь когда тебе нужно и закрыаешь, когда не нужно. И никакого смысла цепляться за DI scope нет.
Аноним 29/03/23 Срд 19:26:09 2656573 89
Какие же все таки мс (цензура).

1 вот где у Dictionary метод GetOrAdd
2 Convert.ToHexString выдает HEX строку в верхнем регистре. И там внутри использует HexConverter которого можно попросить дать другой регистр сразу....но он internal
3 StringBuilderCache - интернал
4 ValueStringBuilder - интернал
5 unsafe timer, который не захватывает ExecutionContext (а вместе с ним AsyncLocal) - интернал
6 ListDictionary дженерик версия вообще где?
7 туда же HyvridDictionary
8 сколько лет просит народ сделать настройку для задания ConfigureAwait для сборки.
9 WPF за столько лет не обзавелся диалогом выбора папки
10 SortedList внезапно не "сортированный список".
11 StreamReader.ReadLineAsync возвращает таск.
12 Что там у "byte order" у BinaryReader
13 ну сделайте вы уже системный тип Unit. жалко что ли.
14 а можно мне офф MemoryStream основанный на чанках или пуле? Они то выдали, но блин такое неудобное - управления памятью закрыто. Нет чтобы просто дать возможность передать свой пул, а там хоть чанки, хоть тачанки, хоть шаредпул.
15 контракты похерили (в итоге каждый мудрит свой Guard/Requires), зато себе сделали либу для студии.
Аноним 29/03/23 Срд 20:18:25 2656632 90
>>2656573
Байтоеб, спок. Если твои хотелки так тебе нужны - реализуй.
Аноним 29/03/23 Срд 20:24:28 2656636 91
>>2656632
правильно. и зачем нужна стандартная библиотека. только велосипеды (как делает буквально каждая софтина на шарпе), только хардкор ))

ps: где ты увидел байтоебство в этом списке я вообще хз. но шарписты - люди с причудами, увидеть могут многое.
Аноним 29/03/23 Срд 21:05:16 2656660 92
>>2656534
Ты имеешь ввиду напрямую писать что-то вроде using (ctx = new AppCtx())?
1 А тестировать как?
2 В моем случае два варианта. Прямо в хэндлерах медиатора создавать, тогда на каждый реквест из другого приложения в моем будет создаваться n раз контекст. N раз потому что неизвестно как построится цепочка вызовов, для каждого реквеста она своя и может содержать несколько вызовов хэндлеров. Либо я открываю контекст где-нибудь, где происходит диспетчеризация вызовов и тащу это на каждый вызов команды, закрываю по возвращению к клиентскому коду.
Просто я подумал, что мне будет выгоднее настроить все похожим с асп образом т.к тулза тоже обрабатывает запросы, но не http
Аноним 29/03/23 Срд 21:08:40 2656664 93
>>2656636
>где ты увидел байтоебство в этом списке я вообще хз
Модель поведения 'схожая до степени смешения', если выражаться юридическим языком.
Аноним 29/03/23 Срд 21:27:56 2656677 94
>>2656660
>1 А тестировать как?
вопрос "как тестировать" сразу встает когда видишь ctx = new AppCtx())
и мс на это дело говорит - суй подставную бд типа sqlite или плоди огород в виде репозитариев (и тогда зачем нам вообще контекст и тяжелый EF)

в общем то я не использую EF ибо тяжело и неудобно.

2 Не ambient context никто не отменял. Другое дело что применение его - очень спорная штука и не всегда возможна.

>все похожим с асп образом т.к тулза тоже обрабатывает запросы
ну если ты можешь создать scope ну создай почему нет (и не забывай про ambient context). Но обычно весь скоуп это просто using
Аноним 29/03/23 Срд 21:30:10 2656679 95
>>2656664
мде. тяжелый ты случай

там только 6+7 частично можно сказать "экономим байтики в памяти", а остальное - банальный оптимизатор под перфоманс, причем оптимизации высокого уровня

просто если ты привык писать медленное и большое - ну что ж...
Аноним 29/03/23 Срд 23:05:29 2656742 96
image 33Кб, 514x473
514x473
image 38Кб, 604x403
604x403
>>2655732
Нахуй ты высираешься, если тебе нечего сказать по делу, животное обоссанное? Игры у меня уже есть готовые. И заработал я на них уже больше, чем всё твоё нищее семейство уродов вместе взятое за всю жизнь (на пике лишь малый процент). Давай ещё что-нибудь высри, посмеюсь с обезьяны убогой.
Аноним 29/03/23 Срд 23:13:32 2656750 97
>>2656742
>И заработал я на них уже
До-о-о. С такими-то доходами, конечно же, только на дваче советов спрашивать.
Аноним 29/03/23 Срд 23:35:36 2656771 98
>>2656742
>мульён долларов
Лол, хоть бы один разряд скинул для приличия и правдоподобности.
Люди с такими доходами нанимают кодо-макак, а не советы на двачах спрашивают.
Впрочем подозреваю что это возможно доходы галеры, на которую ты гребешь.
Аноним 30/03/23 Чтв 00:24:45 2656792 99
>>2656677
>ambient context
Никогда об этом не слышал, почитал, спасибо. Я так понял это некий синглтон, который шарит какой-то ресурс и доступен всем. Поправь, если не прав. Большинство инфы, что нашел утверждает, что это антипаттерн и обычно не применяется.
>обычно весь скоуп это просто using
Да, я просто прокидываю вызывающему коду фабрику, которая создаёт скоуп через юзинг на каждый запрос, получаю диспетчер и дальше через него продолжаю конвейер обработки запроса. Так на каждый запрос контекст создаётся один раз и используется сколько нужно. Немного напрягает, что через эту фабрику можно получить провайдер, но у меня она буквально в одном методе на 5 строк кода задействуется, так что может и ничего
Аноним 30/03/23 Чтв 02:31:49 2656856 100
>>2656792
>что это антипаттерн
антипаттерн он типа потому что делает свою работу неявно. А явное лучше неявного...пока это явное не вызывает свои проблемы.
так что тут выбор из двух равных зол
1 неявность есть неявность
2 передавать явно по всем уровням кучу параметров, причем которые не имеют отношения к логике.

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

Прямой пример такого: TransactionScope
ты можешь получить транзакцию внутри скоупа через Transaction.Current. и несмотря на то, что это статическое свойство - на деле оно выдаст тебе значение в рамках твоего exeсution flow
Аноним 30/03/23 Чтв 03:20:13 2656870 101
>>2656742
Даже если допустить что это правда, как это отменяет факт того что ты ебучая безрукая обезьяна, которой ссут в рот по любому поводу, а за неумение перекладывать жсоны насрали на ебало без задней мысли?

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

Уебывай отсюда и не возвращайся
Аноним 30/03/23 Чтв 03:26:15 2656871 102
sakutinmob.jpg 13Кб, 640x430
640x430
>>2656742
Помнишь меня? Я твой бывший проект менеджер. Я узнал тебя по твоим шизоидным словам и высерам. А помнишь, как мы всей галерой нассали тебе в кружку прошлой зимой, на корпоративе? Ты ещё выпила, облизнулась и попросила добавки. А потом тебя пришёл забирать твой ёбырь, тот самый дворник, который на Вернадского изнасиловал собаку и получил условный срок за то, что украл плавленный сырок в магазине. Он зашёл ресторан, все стали смеяться, а ты обосралася под себя от стыда, а потом сказала, что всю жизнь будешь ненавидеть изучать дотнет, но недавно, когда ты в очередной выставил доходы всей галеры за свои, чтобы их унизить, то они пустили тебя по кругу, после чего тебе наложили на анус восемь швов. Как поживаешь?
Аноним 30/03/23 Чтв 09:27:49 2656970 103
exceladdin.PNG 80Кб, 1316x696
1316x696
pivottablecode.PNG 39Кб, 1296x603
1296x603
Ранее уже писал на эту тему, но тут конкретизирую, ибо немного продвинулся.

Задача:
Пишу надстройку в excel (vsto c# excel interop), а именно ленту (панельку с кнопками полезными)
Проблема:
Не могу установить свойство Visible класса PivotItem, подробности на прикрепленных скринах.
1 пик - наглядно то, что я хочу делать видимым
2 пик - кусок кода кнопки, которая должна это сделать, там же исключение
Аноним 30/03/23 Чтв 12:20:43 2657074 104
>>2656970
Спустя N часов ручного перебора выявил, что все работает, если
Это:
pivotItem.Visible = true;
Заменить на это:
field.PivotItems().Item(pivotItem.Name).Visible = true;
Аноним 30/03/23 Чтв 13:39:27 2657152 105
>>2657074
Похоже pivotItem не является экземпляром списка, либо какой-то другой тип. Но это очень странно.
Сравни экземпляры неработающего и работающего pivotItem ради интереса


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

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

А еще не пиши вот так
"Min: " + DateMin.ToString() + ", Max"

А пиши хотя бы вот так
$"Min: {DateMin}, Max"

Т.е. перед строкой ставишь знак доллара, далее пишешь сообщение одной строкой
$"Min: , Max" без мудоебских конкатенаций, а потом в эту строку вставляешь в любом месте данные в фигурных скобках, для которых автоматом будет вызван метод .ToString(). Так удобнее.

Аноним 30/03/23 Чтв 13:40:51 2657154 106
Мне нужно преобразовывать html страницу в image и отдавать файлом на клиент. Нашел два варианта: с помощью чужого апи и с помощью программы wkhtmltoimage.
С помощью апи не хочу, там ключ передавать нужно, к тому же наверное лимиты есть + задержка.
Второй вариант работает хорошо, с нугета скачал врапер, быстро работает и устраивает.
Норм ли хранить на бекенде эту программу? Враппер только аргументы ей передает, а сама она на плюсах написана.
Может есть решение в прямо шарпах? Хотелось бы, чтобы css тоже поддерживался, но для меня главное просто чтобы он из таблицы html делал картинку
Аноним 30/03/23 Чтв 14:57:27 2657228 107
>>2657152
> Похоже pivotItem не является экземпляром списка, либо какой-то другой тип. Но это очень странно.
> Сравни экземпляры неработающего и работающего pivotItem ради интереса
У меня голова от этого шарпа уже кипит, может потом...

> Вместо месседжбоксов пиши инфу хотя бы в Debug.WriteLine("твое сообщение"), иначе заебешься отключать 10500 месседжбоксов при отладке, особенно когда в ход пойдут циклы. Пишется сообщение в окно интерпретации (если оно не открыто).
Спасибо, так и сделаю.

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

> А еще не пиши вот так
> "Min: " + DateMin.ToString() + ", Max"

> А пиши хотя бы вот так
> $"Min: {DateMin}, Max"
О, это как f-строки в питоне, прикольно.
Аноним 30/03/23 Чтв 18:27:07 2657446 108
>>2649578 (OP)
Проработал год и 3 месяца в мухосранской продуктовой конторе. Недавно сократили штаб. На проекте про SOLID и паттерны знал только я . Нет опыта работы с микросервисами ,докерами и брокерами сообщений. Уже месяц не могу найти работу. Что посоветуете делать ? Идти в кассиры? На собесы не зовут, я даже не знаю какой у меня уровень . Субд использовал Mysql, но как я понял,что он никому нахуй не нужен
Аноним 30/03/23 Чтв 18:48:40 2657471 109
А логгеры умеют автоматом выводить месседжбокс если возникла ошибка или критическая ошибка?
Приходится дублировать сообщение.
Аноним 30/03/23 Чтв 18:55:20 2657485 110
>>2657471
Это как? Вот запустил ты серверное приложение на линуксовой виртуалке, где нет монитора. Как там рисовать винформы?
Аноним 31/03/23 Птн 02:43:48 2657888 111
Все таки коллекции в шарпе это тупость.
Постоянно WTF при работе с ними

Накосячили с IReadOnly*, и вот спустя 2 десятка лет додумались что нужны фрозен коллекции.

Вот у меня допустим byte[] и как мне его сделать риоднли? А никак. AsReadOnly вернет ReadOnlyCollection что вообще не то же самое. Сразу идут лесом AsSpan и CollectionsMarshal ничего не знает ни про какие ReadOnlyCollection по понятным причинам.

использовать List? так мне спан нужен. Ну ладно есть CollectionsMarshal, вот только ему нужен List который не ридонли ни в каком месте.

вот будет шарп 8... а там точно будет FrozenArray? думаю нет. И все методы что принимают byte[] не будут знать как с таким работать, то есть ситуация так и останется - "а ты не меняй вот. ишь че захотел - ридонли ему подавай - просто не меняй ничего и будет тебе риондли. а если ты поменял то ссзб. И вообще, ты шарпист же - терпи. Контракты? Безопасность? все это для лошков. Шарпист не боится вернуть Ilist и верить что никто его не изменит, не боится также null и вообще он смелый и упорный (в плане обхождения граблей)."
Аноним 31/03/23 Птн 02:46:26 2657889 112
>>2657888
ну то есть я могу использовать и использую Memory, но это все же костыль.
Аноним 31/03/23 Птн 09:18:46 2657971 113
>>2657446
Можешь рассказать что вы делали на работе и какой стек использовали? Я пока ещё новичок, хотел бы узнать о том, что используют на реальной работе, чтоб понять на что делать упор.
Субд пока только mssql и sqlite использовал, разве в них есть различия с mysql, чтобы было сложно перейти? Они ведь все примерно один sql используют. И разве сейчас работают напрямую с базой не через orm помимо каких-то специфичных ситуаций? Спасибо если ответишь
Аноним 31/03/23 Птн 11:34:37 2658033 114
>>2657971
>Субд пока только mssql и sqlite использовал
Я не он, но поотвечаю.

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

>>2657971
>И разве сейчас работают напрямую с базой не через orm помимо каких-то специфичных ситуаций?
Даже если у тебя будет проект с философией ORM-онли, то ситуаций когда тебе по работе придется лезть в базу и писать разные запросы будет очень много. Для тестов, анализа, починки сломанного и т.д. Плюс опять же, чтобы нормально и продуктивно работать с ORM, нужно как минимум иметь представление, что она делает под капотом. Ну и на каком-то этапе тебе возможно придется даже разбирать построенные ей запросы, чтобы понимать какого хуя БД так тяжело ворочается.
Аноним 31/03/23 Птн 12:33:01 2658078 115
>>2657485
Я про случай для десктопного приложения.
Вообще у логгеров есть модули способа вывода, которые подключаются по необходимости. У меня так в файл и дебаг-окно выводится одно и то же сообщение, но конкретно расширения для вывода в месседжбокс я почему-то не увидел, хотя совершенно очевидно, что на десктопе при Error и Critical Error в 99% случаев требуется уведомление пользователя месседжбоксом.
Хотя есть шанс, что такой подход может обернуться пердежом тысячей диалоговых окон.

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

А еще мне непонятно как регистрируется код ошибки. Возьмем к примеру условную ошибку в вижуал студии "XLS0112". Кто дал название этой ошибке? Это все делается вручную или есть подход делать это автоматом? Или создается какая-то база данных всех ошибок? В какой последовательности регистрируются? Разработка идет непоследовательно и может получиться так, что сначала идет ошибка №112, а следующей строкой ошибка №330 — это норма?
Аноним 31/03/23 Птн 13:02:08 2658137 116
>>2658078
>в 99% случаев требуется уведомление пользователя месседжбоксом.
Уведомления пользователя - это не забота логгера.
Аноним 31/03/23 Птн 13:10:43 2658153 117
2023-03-3112-56[...].png 33Кб, 661x233
661x233
2023-03-3112-58[...].png 54Кб, 1388x278
1388x278
2023-03-3113-01[...].png 56Кб, 1565x264
1565x264
Есть стиль для радиокнопки со свойством выравнивания по левому краю (пикрил 1).
Есть 4 радиокнопки в окне, использующие данный стиль (пикрил 2). Одна кнопка сама по себе, а три остальные находятся в PopUp. Так вот, те, что в попапе, игнорируют состояние свойства, определенное стилем (смотрите окно свойств). А если я укажу явно способ выравнивания, то окно свойств вообще отказывается визуализировать (пикрил 3).

Первая радиокнопка не имеет подобных аномалий. Замечу, что это касается только окна свойств, по факту кнопка ведет себя соответствующе стилю. Я могу еще понять, почему не отображается актуальный размер кнопки, ведь попап скрыт, но выравнивание же не зависит от внешних факторов?
Аноним 31/03/23 Птн 13:20:34 2658172 118
>>2658137
Почему? Это просто вариант отчетности, к тому же у него уже есть вся информация. Почему я должен эту информацию нерационально дублировать?
Аноним 31/03/23 Птн 14:06:22 2658208 119
>>2658172
Потому что основная задача логгера сохранять историю событий (запросы, ошбики и т.д.) в логгируемой системе в каком-либо хранилище (окно консоли, файл, БД и т.д.). Причем делать он должен это максимально быстро и даже в случае падения основной системы.
Уведомление пользователей это другой слой абстракций и ты его либо реализуешь в основной системе отдельно, либо если тебе так нужно уже после логгера отдельным сервисом.
Аноним 31/03/23 Птн 14:19:14 2658223 120
>>2658153
А ты впиши IsOpen тру и узнаешь
Аноним 31/03/23 Птн 17:29:42 2658498 121
image 42Кб, 1864x608
1864x608
image 38Кб, 604x403
604x403
>>2656771
> Люди с такими доходами нанимают кодо-макак, а не советы на двачах спрашивают
Люди с такими доходами сами решают, что им делать. Мне нет смысла нанимать людей, открывать компанию, в разы увеличивать расходы и ответственность, и постоянно бегать кабанчиком. Когда я могу спокойно сидеть дома, получать пассивный заработок и потихоньку, в своё удовольствие, создавать новые игры.

>>2656870
>>2656871
Нормально работо-скот порвался. Да, кстати, вчера пришла выплата с рекламы. Сколько вам и вашим нищим, убогим семействам и всей родне придётся работать, чтобы столько заработать? А у меня это просто пассивный заработок. Один из нескольких, если быть точнее. Удачи поработать на дядю, клоуны. Можете не отвечать, мне более не интересно тявканье нищего говна.
Аноним 31/03/23 Птн 18:28:54 2658610 122
>>2658033
>все массово переходят на постгрес
Спасибо, буду его использовать
>придется лезть в базу и писать разные запросы
Это делается через ado net? Его я ещё не смотрел. Пока что только через mssql management studio писал запросы. Учился на базе northwind, т.к ее рекомендуют майкрософт и читал теорию баз данных про нормализации, индексирование и прочее, но пока не приходилось применять в проектах.

Значит джуну нужно с этим ado net разбираться?
Сейчас я изучил сам шарп, asp net razor pages, asp net web api, не изучал пока mvc, signalr, grpc. Смысла mvc не понял, то же самое ведь делает razor pages. Решил, что это пережиток прошлого и не очень нужно сегодня. Да и на веб апи можно сделать то же время, просто spa на клиенте использовать. Путаница какая-то, эти две технологии делают примерно одно и то же в контексте создания сайта.

Спасибо за ответы
Аноним 31/03/23 Птн 18:31:25 2658615 123
>>2658610
>сделать то же самое
Фикс
Аноним 31/03/23 Птн 19:35:19 2658672 124
>>2658498
>Можете не отвечать, мне более не интересно
А я отвечу, т.к. знаю, что ты все равно прочитаешь.

Все равно, как если бы наркобарыга пришел и начал задавать вопросы как ему лучше толкать наркоту, был бы справедливо обоссан и потом начал возмущаться в стиле "зато я бабки гребу лопатой, а вы нищеброды"
То что ты дохрена зарабатываешь, не отменяет того. что ты зарабатываешь на дерьме и место твое у параши.
Аноним 31/03/23 Птн 19:46:35 2658683 125
>>2658610
>Это делается через ado net?
Нет, я не это имел в виду.
Тебе придется периодически брать в руки инструмент вроде mssql management studio, или PgAdmin (постгресовский инструмент), подключаться через них к БД и смотреть, что там внутри твориться и правльно ли отрабатывает твое приложение. А для этого придется составлять запросы для выборки данных и помещения каких-нибудь тестовых наборов данных в БД.
И лучше всего используй DBeaver CE. Он бесплатен и позволяет подключаться практически к любому виду баз, составлять любые sql-запросы и намного удобнее и быстрее чем родные клиенты для разных БД.

Насчет ADO.Net - х.з. стоит ли его учить вообще, с вероятностью в 90% тебе придется работать либо с EF либо с Dapper-ом (которые кстати по сути надстройка над ADO). Я за последние несколько лет даже упоминаний об ADO в проектах не встречал.

Насчет razor pages и MVC не скажу, т.к. на шарпе работаю только до WebAPI, дальше уже обычно идет что-нибудь вроде реактового UI, либо ничего не идет. Razor наверное понадобится знать только если в Blazor пойдешь, т.к. он вроде как является их развитием. И SignalR тоже там где-то трется.

А вот grpc надо изучать, т.к. это по сути уже стандарт и в случае микросервисной архитектуры точно с ним столкнешься. А так же еще брокеры сообщений вроде RabbitMQ тоже понадобится знать.
Аноним 31/03/23 Птн 21:59:34 2658805 126
>>2658683
>лучше всего используй DBeaver CE
Спасибо, учту
>Насчет ADO.Net - х.з. стоит ли его учить вообще, с вероятностью в 90% тебе придется работать либо с EF либо с Dapper-ом
Я так и думал до этого.
>WebAPI, дальше уже обычно идет что-нибудь вроде реактового UI
Кстати сильно ли нужно знать эти js фреймворки? Слышал мнение, что новичка вряд ли возьмут не фулстек и нужно одновременно знать .net со всеми необходимыми технологиями и js/ts с его фреймворками. Я сначала использовал голый ajax, потом Vue.js, но никогда не изучал их как .net, просто использовал для написания клиентов к своим проектам.
>SignalR тоже там где-то трется
Хотел его изучить, т.к думал, что он также нужен как и grpc, но видимо это что-то специфичное как Blazor. Real time communication звучит как что-то полезное.
>grpc надо изучать, т.к. это по сути уже стандарт и в случае микросервисной архитектуры точно с ним столкнешься. А так же еще брокеры сообщений вроде RabbitMQ тоже понадобится знать.
Пока имею очень смутное представление о микросервисах. Кажется, что это набор проектов webapi, которые как-то между собой коммуницируют, возможно с помощью вот этого RabbitMQ или каких-то ещё технологий.
Я смогу изучить как работать с микросервисами дома на локальной машине, как со всем остальным до этого?
Везде в вакансиях где пишут про микросервисы есть что-то вроде "требуется опыт работы с микросервисами", то есть подразумевается, что человек уже на другой работе имел дело с ними?
Вот я и подумал, что их изучают уже на работе в реальных проектах.
Аноним 01/04/23 Суб 00:55:13 2658909 127
>>2658498
>>люди с такими доходами
187 баксов заработал
Старина, сьеби отсюда и дрочи свои копейки в другом месте
Аноним 01/04/23 Суб 01:43:23 2658930 128
>>2658909
У него тысячи там нарисованные конечно
Аноним 01/04/23 Суб 02:16:42 2658950 129
>>2658610
>Смысла mvc не понял, то же самое ведь делает razor pages
не не то же самое. MVC/MVP/MVVM - разные подходы логического разделения приложения. У каждого свои достоинства и недостатки. И не пережиток прошлого это. Как раз наоборот - razor pages для любителей "пережитка прошлого", кто привык там писать в стиле вебформс и "не нужным мне ваши MVC, и не заставите, я привык как в вебформс" (это как люди после винформс идут в WPF и все равно пишут так будто они в винформс)
Аноним 01/04/23 Суб 04:03:39 2658974 130
>>2658805
Дался тебе этот фуллстек
Зарплаты те же, а гемора больше
Аноним 01/04/23 Суб 07:20:37 2658995 131
>>2658805
>Кстати сильно ли нужно знать эти js фреймворки? Слышал мнение, что новичка вряд ли возьмут не фулстек и нужно одновременно знать .net со всеми необходимыми технологиями и js/ts с его фреймворками.
Новичков да, очень часто берут на позиции где минимум 30% будет работ по фронту. Потом уже когда появится опыт сможешь говорить на каком органе ты фронт вертел и почему не будешь им заниматься.
Но в любом случае знание js и какого-нибудь js-фреймворка типа react или angular будет очень большим подспорьем в работе. Как минимум придется разворачивать себе тестовые стенды с фронтом, дебажить его и т.д. Т.е. понимание как это работает может очень пригодиться.
>>2658805
>Я смогу изучить как работать с микросервисами дома на локальной машине, как со всем остальным до этого?
Теоретически да, но я бы посоветовал прикупить себе какую-нибудь дешманскую vps-ку и на ней экспериментриовать. Так во первых лучше изучишь различные сетевые технологии, поймешь как происходит деплой и не будешь убивать свою рабочую машину.
>>2658805
>то есть подразумевается, что человек уже на другой работе имел дело с ними?
Таки да. Т.к. даже если ты у себя дома сможешь развернуть какой-нибудь кластер с микросервисами, ты вряд ли сможешь обеспечить его нормальной нагрузкой и реальными задачами.

Собственно вся суть, почему везде требуют именно коммерческий опыт, потому что только на реальных проектах ты сможешь научиться решать реальные задачи нужные бизнесу. Т.е. не вылизанные учебные недопроекты в вакууме, где все расписано и все понятно. А стандартные "Распараллелить вот чё там под этой кнопкой на 2-3 потока, если получится" и "тут где-то проблема, надо найти и устранить".
Аноним 01/04/23 Суб 07:56:10 2659006 132
>>2658995
Понятно. Спасибо большое
Аноним 01/04/23 Суб 13:34:21 2659216 133
Даже моему протыку, Нику Чапсису, стало вконец очевидно, что джава лучше. Одумайтесь и вы шарписты!

https://www.youtube.com/watch?v=IrlBW2Oa_8Y
Аноним 01/04/23 Суб 13:42:57 2659221 134
Есть какая-нибудь возможность запретить contextmenu(который по умолчанию в текстбоксах) использовать мой стиль textblocka? Есть какой-то легкий способ или указание ключа для стиля будет самым легким? У меня просто много текстблоков и не хотелось бы юзать ключ
Аноним 01/04/23 Суб 14:28:17 2659255 135
Аноним 01/04/23 Суб 14:58:28 2659301 136
>>2659216
Джава дебил даже видео осилить не мог.

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

Во вторых. В шарпе если, что-то появляется и оно народу заходит, то этим начинают пользоваться. В джаве же ты будешь сидеть хорошо если на 14-й версии, а в большинстве случаев вообще на древней восьмой. И тебе ни тепло, ни холодно будет от этих новых фичей.
Аноним 01/04/23 Суб 15:11:50 2659321 137
>>2659216
С первым апреля от Ника!
А почему ты в выходной прибежал в шарпотред кстати? Так сильно горит, что шарп вытесняет джаву из бэкенда даже в российский банках?
Аноним 01/04/23 Суб 15:27:20 2659335 138
>>2659255
Это просто отключает contextmenu, меня устраивает то, которое по умолчанию. Ладно, просто ключи тогда раздам.
Аноним 01/04/23 Суб 16:36:09 2659410 139
>>2659321
>С первым апреля
Первого апреля не существует. Это миф.
Аноним 01/04/23 Суб 18:21:11 2659520 140
>RB Whitaker - The C# Player's Guide
Нормальная книга для начала?
Аноним 01/04/23 Суб 18:36:29 2659542 141
20230401.png 4Кб, 812x136
812x136
Сап.
Пытаюсь собрать ASP NET веб приложение на WebForms в VisualStudio 2019 на NetFramework 4.7.
Подскажи как поменять версию языка?
Интернеты говорят в корне проекта должен лежать файл prjName.csproj, в котором можно поправить свойство. Но файла нет. Есть только веб.конфиг.
Аноним 01/04/23 Суб 18:56:08 2659555 142
>>2659542
Создай в студии новый ASP.NET проект, скопируй оттуда .csproj файл в свой проект и отредактируй как тебе нужно.
Аноним 01/04/23 Суб 19:29:44 2659615 143
202304011.png 9Кб, 541x243
541x243
>>2659555
Оказалось что в VisualStudio есть две опции при создании нового проекта, пикрелейтед.
Новый проект веб приложения имеет *.csproj файл, а веб сайт нет.
Если подсунуть файл от веб приложения к веб сайту, он, ожидаемо, не используется.

Я пытаюсь унаследоваться от уже скомпилированного сайта/приложения, который нашел на IIS сервере.
По структуре каталога скомпиленного сайта он больше похоже на "веб сайт", поэтому его и использовал при создании нового проекта.
Возможно, для веб сайта есть другие опции по изменении версии языка?
Или, судя по "имеет ограниченную поддержку MSBuild" оно вообще не умеет в более высокие версии?
Хотя сама IDE предлагает обновить версию. Но не справляется и упирается в ошибку.
Аноним 01/04/23 Суб 20:21:32 2659718 144
Аноним 01/04/23 Суб 20:31:07 2659725 145
>>2659615
Пересобрал все как веб приложение.
Собирается. Версия шарпа меняется.
Похоже, буду пердолить этим путем.
Спасибо, анон, ты няша.

>>2659718
Были добавлены аналоги инкремента для деления и умножения.
i++ эквивалентно i = i + 1
i// эквивалентно i = i / 1
i эквивалентно i = i * 1
Аноним 01/04/23 Суб 21:09:09 2659762 146
>>2659718
>.NET 10 или как его теперь начнут называть .NET X
> Почему .NET 10 и где .NET 9?
> "У нас так принято." - Дословный перевод.
Бля, когда же человек отвечающий за нейминг версий продуктов в майкрософте сдохнет нахуй уже.
Что винда, что приставки, что фреймворки - сплошной ебанизм в версиях.
Аноним 01/04/23 Суб 21:14:37 2659773 147
>>2659762
Алсо я в курсе, что это первоапрельская статья, но это не отменяет того, что в майкрософте уебанский нейминг версий продуктов. Меня просто тригернуло.
Аноним 01/04/23 Суб 21:33:58 2659813 148
Аноним 01/04/23 Суб 23:37:45 2659942 149
>>2659773
А что такого? Windows X вроде бы не было.
Аноним 02/04/23 Вск 01:46:32 2660088 150
Аноны, а насколько реально сейчас найти работу в FAANG, если ты сеньор .NET?
Аноним 02/04/23 Вск 02:01:24 2660105 151
>>2660088
А там пишут на дотнете?
Аноним 02/04/23 Вск 03:20:33 2660157 152
Аноним 02/04/23 Вск 10:28:29 2660262 153
>>2660105
В амазоне и майкрософте (очевидно)
Аноним 02/04/23 Вск 10:53:39 2660278 154
А что делать, если вся твоя жизнь - это дотнет, а в FAANG хочется?
Аноним 02/04/23 Вск 11:10:20 2660289 155
>>2660278
Надо знать алгосы и сисдиз и архитектуру компьютеров, ты должен быть экспертом в этих вопросах. Надо просто уметь написать за выходные на с++ или расте что-нибудь системное типа systemd или прикладное типа транспилятора из питона в сишку, читать исходники опенсорсных системных библиотек и понимать, что в коде делется.
Где здеь ты видишь шарп?
Аноним 02/04/23 Вск 11:13:34 2660293 156
>>2660289
Ты работаешь в фаанге?
Аноним 02/04/23 Вск 11:27:12 2660297 157
>>2660293
Да и нах нужен это ваш фаанг. Просто заканчиваешь в МГУ по программе повышения квалификации на фин математике. Потом защищаешь к.т.н. и идешь устраиваться в финтех. Всяко лучше чем копаться во внутреннем легаси коде гугла.
Аноним 02/04/23 Вск 11:59:46 2660317 158
>>2660278
>а в FAANG хочется?
Зачем?
Аноним 02/04/23 Вск 12:18:10 2660334 159
Котаны, как переопределить метод не меняя название класса и метода родителя?
У меня есть длл-ка с кучей классов и методов.
Я хочу изменить код одного из этих методов.
Но так, чтобы приложенька до обращалась к нему по имени метода в длл, типа дллКлассНейм.дллМетодНейм() , но при этом фактически выполнялась моя функция.
Аноним 02/04/23 Вск 12:48:52 2660359 160
Как вообще относятся к тем, кто программирует на сишарпе в линуксе?
Аноним 02/04/23 Вск 12:53:05 2660366 161
Аноним 02/04/23 Вск 12:55:39 2660370 162
>>2660359
>Как вообще относятся к тем, кто программирует на сишарпе в линуксе?
Ну а ты сам как думаешь? Конечно же считают людьми второго сорта и при встрече в лицо плюют.
Аноним 02/04/23 Вск 12:56:11 2660372 163
>>2660359
>Как вообще относятся к тем, кто программирует на сишарпе в линуксе?
Ну а ты сам как думаешь? Конечно же считают людьми второго сорта и при встрече в лицо плюют.
Аноним 02/04/23 Вск 12:59:19 2660374 164
Аноним 02/04/23 Вск 13:05:26 2660381 165
Аноним 02/04/23 Вск 13:49:30 2660448 166
>>2660381
Ебать, 2 часа.
Я за это время как раз успею длл-ку в код ручками перекопировать.
Энивей, спасибо, анон :3
Аноним 02/04/23 Вск 14:35:03 2660515 167
>>2660448
Только час. Второй доклад до кучи идет про другое. В первом докладе несколько кейсов. Возможно один из них тебе подойдет.
Аноним 02/04/23 Вск 19:33:56 2660830 168
>>2658033
Стоит ли мне задрачивать постгри, если я знаю MySql. SQl он и в африке SQL, только со своими нюансами, или есть вариант свичнуться уже на рабочем месте?
Аноним 02/04/23 Вск 20:04:49 2660853 169
Вот не пойму. Допустим написал проект на текущем дотнете 7 версии, а через два года выйдет какой-нибудь 9 дотнет. Как работать с этой же версией через пару лет?
Аноним 02/04/23 Вск 20:26:08 2660859 170
>>2660853
1. Не обновлялся и сидеть на бочке с порхом в надежде, что ничего не сломается.
2. Потратить время на миграцию на новый дотнет.
Аноним 02/04/23 Вск 20:29:34 2660861 171
>>2660830
> только со своими нюансами
В том-то и дело, что нюансов куда больше, чем сам SQL. Начинаешь создавать таблицу и сразу вспотыкаешься: "ой, а где автоинкремент, что за SERIAL, сложна, нипанятна". Лучше заранее подготовится.
Аноним 02/04/23 Вск 20:49:40 2660877 172
Никто не будет [...].webm 1376Кб, 1920x1080, 00:00:03
1920x1080
>>2660859
Ты представляешь объём работы по переписыванию даже среднего по размеру проекта на новый дотнет?
Аноним 02/04/23 Вск 21:08:12 2660891 173
>>2660877
Ты так говоришь, будто речь о переписывании с нуля на другой язык.
Аноним 02/04/23 Вск 21:39:36 2660926 174
Аноним 03/04/23 Пнд 00:51:45 2661060 175
>>2660853
Поэтому под версией указывается в скобочках (долгосрочная поддержка) или не указывается. Можешь осесть на долгосрочной (LTS) и минимум 3 года не париться.

>Ты представляешь объём работы по переписыванию даже среднего по размеру проекта на новый дотнет?
Сколько? В конфигурационном файле одну строчку переписать?
Ты же не с дотнета на кор пересаживаешься.
Аноним 03/04/23 Пнд 09:20:55 2661247 176
>>2660877
>Ты представляешь объём работы по переписыванию даже среднего по размеру проекта на новый дотнет?
Зависит исключительно от архитектуры. Если изначально написано нормально, то у тебя максимум месяц уйдет даже на 10-к приложений. А если хреново, то ты и одно будешь полгода дрочить.
Аноним 03/04/23 Пнд 09:29:18 2661249 177
>>2661247
Откуда при проектировании архитектуры знать, что сломают в будущем дотнете?
Аноним 03/04/23 Пнд 09:32:23 2661251 178
>>2661247
>если исходные условия подогнать под мой неправильный ответ, то он станет правильным
Работаешь тоже так?
- Сделай нам проект
- Готово, держите
- Но твое говно не работает
- Оно работает, если ... если ... если ... если ...
Ебало представили?
Аноним 03/04/23 Пнд 09:39:07 2661258 179
>>2661249
Тебе за это деньги платят
Аноним 03/04/23 Пнд 10:15:56 2661279 180
Поцоны, у вас все нормально после перехода на .NET 7? Доложите обстановку.
У меня в аспе, перестали генериться дефолтные guid айдишники юзерам в UserManager<User> _userManager.Create();, просто пустые строки, даже не null. Кто-то знает как это фиксить? В интернете нихуя.
Аноним 03/04/23 Пнд 10:18:21 2661283 181
>>2661279
Надеюсь ты кабанчику перевел проект, а не свой пет...
Аноним 03/04/23 Пнд 10:29:07 2661293 182
>>2661279
>Кто-то знает как это фиксить?
Ну сделай там что-нибудь. Должно помочь.
Аноним 03/04/23 Пнд 10:34:33 2661296 183
>>2661283
Само собой в прод я еще не лил.
>>2661293
Спасибо большое, уже начинаю делать!
Аноним 03/04/23 Пнд 11:19:08 2661368 184
Мужики, здарова! Сразу скажу что я фронтенд-реакт-макака, поэтому сильно не бейте. Вообщем, мне нравится бекенд, потому что вся магия в основном происходит именно на нем, поэтому в перспективе хочу стать фулкеком с упором на бекенд. Начал свой путь в программировании именно с фронтенда, потому что тупо проще. Выбор у меня был между нодой, пыхой и сисярпом (джаву не, спасибо). Нода гамно из-за всратого npm, пых просто не нравится почему-то, а вот сисярп смотрится самым оптимальным. Кого не спрашивал, все его хвалят. Дак вот, хотел бы спросить, как мне, новичку, лучше всего начать и с чего?
Из вариантов я подобрал для себя:
1. Дока мелкософта
2. Метанит
3. Видосики на ютубе. Может быть кто-то знает годные курсы на ютубе?

И ещё вопрос, с какими сложностями я могу столкнуться и как мне их лучше всего избежать? Ну, например, подучив что-то.
Аноним 03/04/23 Пнд 11:29:09 2661383 185
>>2661368
сложность одна - как потом на этом зарабатывать.
с этим определись, а потом уже языки выбирай.
Аноним 03/04/23 Пнд 11:35:10 2661393 186
>>2661383
Ну с вакансиями плоховато, это да. Питон и жиесть лидируют, само собой.
Аноним 03/04/23 Пнд 11:41:35 2661407 187
>>2661383
То есть ты бы советовал придерживаться джаваскрипта?
Аноним 03/04/23 Пнд 12:37:08 2661476 188
>>2661368
На сишарп как раз нужны фуллстеки. Чистые бэкендеры мало востребованы.
Аноним 03/04/23 Пнд 12:40:10 2661482 189
>>2661368
Метанит и справочник Албахари.
Аноним 03/04/23 Пнд 12:41:04 2661485 190
>>2661476
Не верное суждение.
Аноним 03/04/23 Пнд 12:50:30 2661500 191
>>2661485
Двачую, помимо фронтенда на реакте дотнетчики еще должны уметь в кубер, докер и azure
Аноним 03/04/23 Пнд 13:06:18 2661526 192
>>2661500
Вот это уже ближе, кроме того, что azure сейчас уже никому не нужен.
Аноним 03/04/23 Пнд 13:52:29 2661618 193
12.png 23Кб, 926x618
926x618
ВОПРОС: как выводить списки? опрашивать для каждого вывода? а как посчитать общее количество, если система оффлайн и опросить ее невозможно?
Аноним 03/04/23 Пнд 14:50:15 2661697 194
>>2661618
>опрашивать для каждого вывода?
Да.
>а как посчитать общее количество, если система оффлайн и опросить ее невозможно?
Вообще в нормальных системах в выводе с пейджингом присутствует поле вроде Total, означающее общее количество элементов на всех страницах.
Аноним 03/04/23 Пнд 16:49:35 2661830 195
Аноним 03/04/23 Пнд 18:08:26 2661917 196
>>2661830
Да хоть с хуйдой.
Если у тебя в организации по регламенту винда - работаешь на винде, если линукс - на линкусе, если пидорство - на маке. Если требований нет - на чем хочешь. Я вот когда на толчке сижу размышляю, вообще на телефоне с андроидом програмки под .net пишу.
Главное чтобы твой конечный продукт запускался на системе целевой машины.
Аноним 03/04/23 Пнд 18:16:57 2661925 197
>>2661917
>Я вот когда на толчке сижу размышляю, вообще на телефоне с андроидом програмки под .net пишу.
Прям какая-то мечта советского фантаста...
Аноним 03/04/23 Пнд 18:17:37 2661926 198
>>2661917
Я раньше общался с одним челом, который писал на сишарпе, и он говорил, что когда станет богатым, то купит виндовс. Поэтому писал в линупсе в монодевелопе каком-то.
Аноним 03/04/23 Пнд 20:35:35 2662018 199
.png 14Кб, 683x707
683x707
Хм. Вопросик. А как сделать в одном потоке типа многозадачность?

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

Но как такое сделать - я чет не представляю.

Почему я такой тупой(((
Аноним 03/04/23 Пнд 21:22:28 2662069 200
.png 103Кб, 497x832
497x832
>>2662018
Хм. Хм. Только такое пока что придумал, пока ждал ответа...
Но это не то. Тут я явно должен сказать в методе - на, бери управление и делай че-то. А я бы хотел не так, хотел бы чтобы сам поток был умный и такой: Ля, чет долго я тут сежу-пержу, го посмотрим че другим задачкам надо.
Аноним 03/04/23 Пнд 23:18:37 2662135 201
image.png 30Кб, 443x443
443x443
Сап двач, помоги с тестовым заданием на работу в 100к наносек.
задача следующая
дан исходник на java с одним классом и одной функцией в нём и нужно с помощью antlr распарсить этот метод и узнать все возможные результаты её работы
Аноним 03/04/23 Пнд 23:38:54 2662148 202
.png 185Кб, 362x368
362x368
Аноним 03/04/23 Пнд 23:46:50 2662155 203
>>2662135
На кой хуй там нужон этот antlr?

Если не считать эксепшины, то 1, 4, 5, 6
Аноним 04/04/23 Втр 00:37:07 2662183 204
>>2662148
пояснение, на шарпе нужно написать анализатор данного кода, который перед этим распаршен с помощью antlr

собственно спасибо за грамматику.

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

ясен бобер что нужно будет использовать паттерн посетитель, но хотелось бы подробностей
Аноним 04/04/23 Втр 10:01:40 2662325 205
23041056933.png 19Кб, 1369x159
1369x159
Драститя, простите грешного что полез сюда нихуя не зная (банальных знаний C даже не имею, лол, не хватило усидчивости для изучения и пынямания как и что делать, ебучие самоучители это банально "вставь наш код - запусти - радуйся - ебись в рот").
Суть в чём: нужно скомпилить тулзы одного чувака написанные на шарпе, вчера с горем пополам один чувак-пендос помог мне собрать другие тулзы, а с этими в душе не ебу чё делать, ошибка на скрине.
Ссылки:
1. Что компилю https://github.com/gibbed/Gibbed.Avalanche
2. Либы к ней https://github.com/gibbed/Gibbed.ProjectData/
2.1. https://github.com/gibbed/NDesk.Options
2.2 https://github.com/gibbed/Gibbed.IO/tree/e8984c5c3fe8ca73631bcd3152118b768dd1a19a
Либы просто закинуть в папку Gibbed.Avalanche убрав с папок либ постфиксы типа "-main" или "-НАБОРЦИФРИБУКВ".
Помогите тупому, с меня нихуя по традиции.
Аноним 04/04/23 Втр 12:55:28 2662427 206
А если у меня стоит винда, но я создал виртуалку с линуксом и там программирую на сишарпе. Это нормально или на меня будут смотреть как на дурачка?
Аноним 04/04/23 Втр 13:03:27 2662431 207
>>2662427
Дрочит конечно каждый как хочет, но будут смотреть как на дурачка, всё-же шарпы это что-то под винду и UWP, логично будет заниматься языком там, для чего он предназначен.
Аноним 04/04/23 Втр 13:10:48 2662437 208
>>2662427
>А если у меня стоит винда, но я создал виртуалку с линуксом и там программирую на сишарпе. Это нормально или на меня будут смотреть как на дурачка?
Смотреть будут примерно так же как если бы ты поставил виртуалку с виндой на линукс и программировал в ней. Ну т.е. долбоебом тебя будут считать не от того на какой системе ты работаешь, а от того, что на виртуалке при наличии живого машины.
Аноним 04/04/23 Втр 14:11:10 2662485 209
>>2662431
>всё-же шарпы это что-то под винду и UWP, логично будет заниматься языком там, для чего он предназначен.
)))))))
Аноним 04/04/23 Втр 14:58:11 2662515 210
Фленоввсё.jpg 221Кб, 1280x720
1280x720
Аноним 04/04/23 Втр 15:39:41 2662542 211
>>2662515
пол лимона далларов уже выплатил или в ростов возвращается?
Аноним 04/04/23 Втр 15:51:06 2662554 212
>>2662018
>. И типа ход выполняю-выполняю, бац, чет долго выполняю, го следующую посмотрим, начал ее и так по всем "задачам" которые запуленны, потом - хобана - вернулись к месту где остановились, посмотрели, че да как и если надо - продолжили.

async/await

или APM с его BeginAction/EndAction
Аноним 04/04/23 Втр 15:51:09 2662555 213
В чём смысл перебора коллекции через foreach, если можно получить только копию значения? Во всех нормальных языках этот цикл должен давать две переменные: ключ и значение.
К примеру,
foreach(key, value in collections) { ... }
Аноним 04/04/23 Втр 15:53:49 2662559 214
Аноним 04/04/23 Втр 15:58:02 2662564 215
Аноним 04/04/23 Втр 16:02:51 2662569 216
>>2662564
Угу, а все нормальные браузеры - это Internet Explorer.
Аноним 04/04/23 Втр 16:02:54 2662570 217
>>2662564
Это тот язык который не делает различие между массивом и словарем
Это там одна сущность
Аноним 04/04/23 Втр 16:24:02 2662581 218
Почему микрософты напихали всякой бесполезной фигни в сам язык и дотнет, а для работы с джейсонами используют какую-то левую библиотеку. В чём проблема была добавить это в стандартную библиотеку?
Аноним 04/04/23 Втр 16:34:36 2662587 219
Аноним 04/04/23 Втр 16:46:04 2662595 220
>>2662587
Я про NewtonJson, которая качается из NuGet-репозитория, а не сразу доступна внутри dotnet
Аноним 04/04/23 Втр 16:48:43 2662599 221
>>2662595
Добавлять в базовую библиотеку то что пишется третьими лицами? Нуну
Аноним 04/04/23 Втр 16:57:28 2662610 222
>>2662599
Почему они сами не написали сразу?
Аноним 04/04/23 Втр 17:34:05 2662648 223
Аноним 04/04/23 Втр 17:40:35 2662651 224
>>2662555
>Во всех нормальных языках этот цикл должен
Во первых не должен. Во вторых в C# при необходимости такое можно сделать (хотя оно и будте не нужно в 99% случаев)
Аноним 04/04/23 Втр 17:44:52 2662657 225
video.webm 34305Кб, 1280x720, 00:00:50
1280x720
>>2661925
Сорян, на толчке снимать было неудобно, поэтому так.
Аноним 04/04/23 Втр 17:46:58 2662660 226
>>2662657
да мы уже поняли кто ты. не нужно было пруфать.
Аноним 04/04/23 Втр 17:57:24 2662676 227
Аноним 04/04/23 Втр 18:07:35 2662699 228
>>2662676
нищеброд который не может позволить себе ноут планшет
Аноним 04/04/23 Втр 18:11:29 2662706 229
А нужно изучать всякие докеры-кубернеты?
Аноним 04/04/23 Втр 18:17:27 2662719 230
>>2662699
Просто там откуда он капчует планшеты и ноуты запрещены. Телефоны собственно тоже, но их хотя бы можно протащить при определенной сноровке.
Аноним 04/04/23 Втр 20:39:39 2662856 231
>>2662554
Там же не гарантирован однопоток.
Мне-то надо это в контексте - попробовать на ARM одноядерном с 128MB оперативки - запустить приложение с полноценным дотнетом. А там-то не только оно будет, но и другие службы всякие, ну и линуксу тоже чет надо.
Просто тесты с классическим подходом - приводят к тому - что миллиард тредов создается и большую часть времени - контроллер тратит на то чтобы переключаться между ними. Даже 20 потоков - уже больно.
Аноним 04/04/23 Втр 20:43:01 2662859 232
>>2662719
Из тюрьмы? Или из психиатрической лечебницы?
Аноним 04/04/23 Втр 21:51:50 2662925 233
.png 95Кб, 768x780
768x780
Хочу кодревью.
Дайте кодревью!
Аноним 04/04/23 Втр 22:03:06 2662932 234
>>2662925
Цветовая схема у тебя - говно.
Аноним 05/04/23 Срд 00:04:27 2663012 235
Аноним 05/04/23 Срд 00:28:27 2663023 236
>>2663012
Какого ответа ты ждёшь от миддлов со 100к и госзаказами?
Аноним 05/04/23 Срд 04:36:24 2663103 237
>>2662925
вот потому eventы и плохая конструкция в шарпе. Берется слепок подписчиков, начинает обходить, а в этом время кто то отписался и ему не нужны никакие вызовы. Но event про это не знает.

В общем то это решение твоей первой проблемы (лок над списком) - не должно быть никакого лока. Должен быть иммутабельный список

Решение проблемы отписки во время вызова придумаешь сам. ты же умный.
Аноним 05/04/23 Срд 10:26:11 2663213 238
>>2663012
А хули там делать в твоем FAANG-е?
Вот серьезно?
Аноним 05/04/23 Срд 14:05:00 2663349 239
>Property 'Pages' does not support values of type 'PageContent'.
Пиздец, искал решение проблемы и челы 13 лет назад пишут, что это уже тогда известная проблема и предлагают использовать ебаные костыли. Серьезно? за 13 лет это говно не смогли пофиксить? И это уже не первый раз я встречаю подобое. wpf вообще хоть немного жив?
Аноним 05/04/23 Срд 14:58:20 2663389 240
image.png 453Кб, 893x867
893x867
>>2663349
А что сделал ТЫ для того, чтобы это исправили?
Хотя бы issue на гитхабе завел/обновил?
Аноним 05/04/23 Срд 19:58:36 2663626 241
Спрашивают ли на собесах весь сахар сишарпа? Типа чем is от as отличается или out от ref?
Аноним 05/04/23 Срд 20:06:17 2663634 242
Аноним 05/04/23 Срд 20:24:16 2663649 243
>>2663626
Я - да.
А еще сверху про рефлексию, кодген люблю поспрашивать.
А уж если чел мне понравился - еще могу про IL начать спрашивать.
Аноним 05/04/23 Срд 20:57:20 2663668 244
>>2663649
Прям дизассемблировать сишарп-код в IL заставляешь?
Аноним 05/04/23 Срд 21:00:13 2663670 245
>>2663668
Написать на бумажке IL для кручения деревьев.
Аноним 05/04/23 Срд 21:05:35 2663673 246
>>2663668
>>2663670
Та не. Даю кусок IL кода на бумажечке и прошу пояснить, че происходит и какой был код изначально. И как бы можно было изначальный код переписать чтобы было лучше.
Аноним 06/04/23 Чтв 03:36:25 2663865 247
>>2649578 (OP)
На вашем сисярпе работу то можно найти?
Для чего его вообще сейчас применяют если десктоп никто уже не пилит?
Аноним 06/04/23 Чтв 05:47:59 2663886 248
>>2663865
На заводах активно применяется, чтобы байтики туда-сюда гонять.
Для всяких автоматизаций - тоже активно.
Ну и если повезет - бекенд.
Если не повезет - фуллстек говнина с блазором.
Если сильно не повезет - вебформы.
Аноним 06/04/23 Чтв 07:39:36 2663892 249
>>2663865
>Для чего его вообще сейчас применяют если десктоп никто уже не пилит?
Половина (ладно, пусть будет треть) русского финтеха на шарпе работает и активно развивается.
Аноним 06/04/23 Чтв 07:41:29 2663893 250
>>2663673
>и какой был код изначально.
Это по принципу "Если человек пытается ответить на подобный вопрос, то он однозначно долбоеб и нам не подходит" ?
Аноним 06/04/23 Чтв 07:48:06 2663896 251
>>2663886
Я собираюсь писать проект бэк, а фронт на блазоре. Это норм?
Аноним 06/04/23 Чтв 08:14:13 2663900 252
>>2663896
что есть норма?
для себя можно что угодно
а если хочешь на этом заработать...
Аноним 06/04/23 Чтв 08:33:18 2663902 253
>>2663900
Это проект для портфолио, чтобы сказать: вот я, вот мой проект, берёте?
Аноним 06/04/23 Чтв 09:04:38 2663914 254
>>2663626
>is as out ref
>сахар

Тебе не стоит заниматься программированием.
Аноним 06/04/23 Чтв 09:17:44 2663918 255
>>2663914
Я уже 10 лет им занимаюсь. Теперь бросать что ли?
Аноним 06/04/23 Чтв 09:25:29 2663920 256
>>2663914
ну вообще технически это сахар

out заменяет собой "обьявление + ref". Чем не сахар?
is MyClass variable заменяет собой if(a is MyClass) { ... a as MyClass} - ну вот это самый настоящий сахар.
Аноним 06/04/23 Чтв 09:33:37 2663923 257
>>2663918
Тогда тем более не стоит, раз за 10 лет ты так ничего и не понял.
Аноним 06/04/23 Чтв 09:35:35 2663926 258
>>2663896
Если для себя - норм.
Если для поиска работы... Какой-нибудь js-фреймворк был бы более в кассу, но в принципе на blazor вакансии тоже попадаются и я бы не сказал, что на них есть особенная конкуренция. В принципе почему бы и нет. Я бы только советовал сразу разделять чтобы бэк был отдельным проектом, а UI на блазоре, тоже отдельным.
Аноним 06/04/23 Чтв 09:44:47 2663929 259
>>2663926
А если c Blazor не получится, а будет просто MVC, то это норм считаеся? Допустим два проекта, первый чистый бэк, а второй MVC, который дергает API первого проекта.
Аноним 06/04/23 Чтв 09:45:35 2663930 260
>>2663923
Я на РНР раньше писал и сишарп не изучал.
Аноним 06/04/23 Чтв 09:46:32 2663931 261
>>2663930
php не язык. он шаблонизатор
Аноним 06/04/23 Чтв 10:14:45 2663936 262
>>2663931
Ты похоже сам шаблонизатор - любишь шаблонные фразы.
Аноним 06/04/23 Чтв 10:34:31 2663940 263
>>2663936
Я могу быть хоть горшком (если тебе вдруг от этого легче) - это ничего не изменит в пхп.
пхп по рождению обладает откровенно паршивым дизайном языка.поэтому на нем было написано невообразимое количество говнокода.
и хоть он с того времени пытался стать похожим на жаву - его наследие навечно с ним. Думаю многие читали статью "фрактал плохого дизайна".

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

никому нельзя начинать изучать программирование с пхп.
Аноним 06/04/23 Чтв 10:34:59 2663941 264
>>2649578 (OP)
Что взять для вката в этот ваш сишарп? Какие книги нынче в тренде?
Аноним 06/04/23 Чтв 11:36:44 2663970 265
Аноним 06/04/23 Чтв 11:40:16 2663973 266
richter-1.jpg 49Кб, 688x392
688x392
Аноним 06/04/23 Чтв 12:09:20 2663996 267
>>2663929
Тут важно больше не то сколько у тебя проектов и какие-они, а их качество, плюс выполняется ли у них правило 3-х кликов.
Аноним 06/04/23 Чтв 13:03:12 2664059 268
image.png 26Кб, 586x420
586x420
Где я дурак?

Для полиморфизма - интерфейсы.
Чтобы реализовать интерфейсы с пика, у меня, грубо говоря, есть три варианта:

в 1-ом класс AB не получается унаследовать, и приходится копипастить код из классов A и B;

во 2-ом копипасты ещё больше;

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

Так?

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

Спасибо за внимание.
Аноним 06/04/23 Чтв 14:30:42 2664118 269
>>2664059
Нормальные поцоны наследование классов избегают, а когда надо достают из контейнера нужный класс с одним нужным методом
Аноним 06/04/23 Чтв 18:26:56 2664330 270
>>2664118
ЯННП.
Я "правильно" написал?
Аноним 06/04/23 Чтв 18:55:40 2664374 271
>>2664059
>Где я дурак?
Если мы говорим про наследование, то где-то в твоем ДНК. Спроси у родителей, может они тоже в молодости полиморфизмом без меры баловались.
А если серьезно, ты проебался где-то еще раньше, когда решил, что тебе нужна такая замороченная схема. Т.к. даже если ты сможешь это нормально сделать, оно будет неподдерживаемо и непонятно. Переделывай.
Аноним 06/04/23 Чтв 22:00:19 2664605 272
.png 54Кб, 443x444
443x444
Помогите разобраться.

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

Меня бьют палкой по башке, за то что запросы не доходят.

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

Че делать?

Ну. Т.е. какая хуйня. Есть чужое приложение, которое открывает активно порты и оно типа в дуалмоде но типа на IPv4. Есть мое, которое типа тоже активно открывает порты, и оно типа в IPv6 и типа тоже в дуалмоде.
Если лежит мое - все нормально до первого доходит, но к нему принципиально IPv6 почему-то не доходит.
Если лежит чужое - все нормально до меня доходит, как IPv4 так и IPv6.
Если оба работаем - до меня доходит исключительно в случае если порты не пересекаются.
При этом все нормально открывается, что и усложнило процесс поиска проблемы.
Аноним 06/04/23 Чтв 22:12:39 2664612 273
>>2664059
Нормально делать так:

interface IA{ void Foo(); }
interface IB{ void Bar(); }
interface IC{ void Buz(); }

class A : IA{ void Foo() {}; }
class B : IB{ void Bar() {};}
class C : IC{ void Buz(); }

class MySupperDupperMegaClassOneToRuleThemAll : IA, IB, IC
{
private readonly IA _a = new A();
private readonly IB _b = new B();
private readonly IC _c = new C();

public void Foo() => _a.Foo();
public void Bar() => _b.Bar();
public void Buz() => _c.Buz();

}
Аноним 07/04/23 Птн 16:11:23 2665133 274
Мужики, кто знает куда пропали нугет пакеты в МАУИ проектах? Захотел поиграться, создал проект, а менеджера нугет пакетов нигде нет. Загружаю какой нибудь старый на нет 4 или 5 все на месте.
Аноним 07/04/23 Птн 19:17:36 2665361 275
>>2664605
В общем. Раз ответов нет.
Решил что буду так делать: Ебаю чужое приложение, открываю сокет на IPv4 и IPv6 и пусть чужое ПО страдает.
Аноним 08/04/23 Суб 06:48:49 2665760 276
image.png 1Кб, 513x32
513x32
Что значит эта иконка слева и скобки справа в списке текущих объектов снапшота?
Аноним 08/04/23 Суб 12:14:35 2665866 277
image.png 40Кб, 657x471
657x471
Пусть определен такой метод. Возможно ли во время компиляции или выполнения проверить, что переданный тип T содержит определение для операции &? Подразумевается, что на место T в вызывающем коде будет передаваться только один из типов byte, ushort, uint, ulong. Делать перегрузку методов со строгой типизацией первого аргумента не хочется. Так же не хочется писать проверку вида if (a is byte aByte) { // выполнить сдвиг } и т.д., да и она скорее всего не поможет, так как выходной результат aByte >> b не получится привести к типу T, указанному как возвращаемый тип метода. Итак, есть ли здесь решение?
Аноним 08/04/23 Суб 13:36:49 2666057 278
Аноним 08/04/23 Суб 13:48:05 2666074 279
>>2665866
>не хочется. Так же не хочется
А кого это ебёт? Хочется, не хочется - иди и делай
Аноним 08/04/23 Суб 13:59:39 2666094 280
>>2665866
static T Shr<T>(T value, int shift) where T : IUnsignedNumber<T>, IShiftOperators<T, int, T>
{
return value >> shift;
}
Аноним 08/04/23 Суб 14:12:07 2666110 281
>>2666094
ошибся, правильно будет: return value >>> shift;
Аноним 08/04/23 Суб 17:04:16 2666257 282
.png 8Кб, 384x99
384x99
>>2665866
Можно. Только вот вопрос - нахуя?
Вот серьезно. Чем больше я кодю - тем больше кажутся все эти ограничения - костылями какими-то. Придумываешь сам себе, чтобы хуй пойми зачем. Тесты - все еще писать надо. Все еще надо проверять что у тебя там не запаковано чет. Так на кой хуй жизнь себе усложнять? Делаешь все dynamic и как мужик в 1 строчку проблему решаешь.
Аноним 08/04/23 Суб 17:09:45 2666263 283
>>2665866
А. Насчет можно. Можно в последних версиях шарпа. Да. С тех пор как завезли Generic math. Проблема что оно все еще говно и ты все еще будешь страдать больше, чем с dynamic.
А так - берешь кодген и делаешь просто нужные тебе методы генерацией, если так уж боишься dynamic.
Аноним 08/04/23 Суб 18:04:46 2666309 284
YIF2g8vPUko.jpg 48Кб, 507x507
507x507
Привет, уважаемые господа !
У меня есть программа, точнее плагин к программе, которая работает (и плагин и программа) на C#, но нет инструкций к этой программе и не понятно, как пользоваться одной из её функций. У неё открытый исходный код, который я смотрел, собственно в нём я и нашёл скрытую функцию, и понимаю, как он работает частями, понял, как его активировать (ну я думаю, что понял), но не могу понять, что мне делать дальше и как заставить его работать.
Что посоветуете ?
Аноним 08/04/23 Суб 18:09:33 2666313 285
Аноним 08/04/23 Суб 18:13:13 2666315 286
>>2666313
>>2666309
Точнее я понимаю, как он работает, это описано в файле SteamEmulators.cs
я не знаю, как заставить его работать.
Аноним 08/04/23 Суб 18:16:43 2666320 287
>>2666309
Построчную отладку пробовал?
Аноним 08/04/23 Суб 18:23:01 2666330 288
>>2666320
Я не знаю, что это такое, я вообще не программист.
Я просто открывал файлы и читал, что там написано.
Сейчас попробую это погуглить и посмотреть.
Ну гляньте кто-нибудь сами пж, я сам не факт, что разберусь.
Аноним 08/04/23 Суб 18:30:51 2666345 289
Аноним 08/04/23 Суб 19:15:42 2666414 290
>>2666309
> Что посоветуете ?
Научиться внятно формулировать что конкретно тебе нужно.
Допустим, я посмотрел код твоего этого SteamEmulators. Беглый взгляд дает понять, что оно - смотрит по дирректориям и собирает список статов и ачивок, вроде как просто читает текстовые файлики в нужном формате и парсит их.
Так вот. Без того чтобы понять - что тебе вообще надо - как-то лень разбираться.
Ну. Т.е. как я понял - есть некая программулина Playnite и плагин позволяет ачивки либо оттуда либо туда отобразить.
А дальше - нужно больше входных данных. Что тебе непонятно, что конкретно не работает, почему ты вопрос не задал на гитхабе.
Аноним 08/04/23 Суб 19:17:20 2666415 291
>>2666414
Спиздел про файл. Совсем бегло смотрел. Оно апишки дергает. В остальном - вроде не спиздел.
Аноним 08/04/23 Суб 19:43:32 2666455 292
>>2666345
>>2666415
>>2666414
Я хочу разобраться, как использовать эту скрытую функцию.
В файле SuccessStorySettings.cs есть параметр EnableLocal, при его включении уже в самом PlayNite появляется менюшка, в которой необходимо указать путь и id игры, я пытаюсь понять, какой именно путь и id мне надо указать. Вот в файле SteamEmulators.cs описано, как он просматривает папки, которые там указаны, или которую ты укажешь, и читает в этих папках ini файлы. Соответственно, я и указываю этот путь к ini файлу, который он должен прочитать, но ничего не происходит, либо, иногда, он пишет, что я не авторизирован в стиме, и ищет SteamKit2 будто бы работает по тому, что написано в SteamAchievements.cs.

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

На гитхабе чел отвечает редко, он сидит либо на редите либо на форуме, а на редите, там разработчик PlayNite банит за любые вопросы про эмуляторы, на форуме тоже.
Аноним 08/04/23 Суб 20:03:38 2666503 293
Снимок.JPG 18Кб, 622x86
622x86
>>2666455
>>2666415
>>2666345
Вот например, код, из базы данных плагина, который относится к игре, к которой я пытаюсь выкачать достижения.
Я менял RAgameid на id игры в стиме, я копировал id из этого файла для того, чтобы вставить его в менюшку в PlayNite, но ничего не получается.
Аноним 08/04/23 Суб 20:12:17 2666522 294
.png 39Кб, 829x891
829x891
>>2666455
Ну смотри. Вот буквально что делается при включении EnableLocal
Т.е. тебе нужон апи ключ и чтобы через веб оно работало. Как-то так.
Аноним 08/04/23 Суб 21:23:44 2666639 295
>>2663920
> out заменяет собой "обьявление + ref". Чем не сахар?

Out еще обязывает присвоить значение параметра внутри метода

> if(a is MyClass) { ... a as MyClass}

Ты можешь так написать
if(a is MyClass x)
Так оно тебе проверить и приведет к типу, если a is MyClass = true и не надо тогда во вложенном блоке ничего городить
Аноним 08/04/23 Суб 22:58:32 2666816 296
>>2666639
>и не надо тогда во вложенном блоке ничего городить
Ну так это буквально и есть сахар)
Аноним 08/04/23 Суб 23:32:14 2666834 297
>>2666522
>>2666522
Сяп сяп, я понял, как скачивать достижения благодаря API ключу, но не могу понять, как заставить его добавлять достижения из ini файла, созданного эмулятором в базу данных.

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

В общем теперь мне надо понять, как заставить его перенести данные из ini файла созданного эмулятором по пути AchievementsDirectories.Add("%PUBLIC%\\Documents\\Steam\\CODEX"); , в собственный файл базы данных.
Аноним 09/04/23 Вск 10:46:32 2666972 298
>>2666834
Чел, это опенсорс, а шарп хороший и простой язык для новичка. Чутка поднаторей, разберись. Тут дел то по сути на час времени - форкнуть этот репозиторий, запустить исходники у себя на пк в вижуал студии, посмотреть че там в отладке происходит и поменять код, как тебе нужно. Потом скомпилить, и будет у тебя своя собственная версия этого аддона с нужным тебе функционалом.
Аноним 09/04/23 Вск 13:34:38 2667026 299
Можно ли как-то сделать структуру-заглушку, которая будет использоваться в генериках в качестве TOptional и которая будет занимать 0 байт памяти?

Она нужна для того, чтобы без дублирования кода обрабатывать случаи, когда TOptional нужен и когда он не нужен.

Просто пустая структура (без полей и методов и свойств) занимает 1 байт. И по причинам выравнивая в качестве поля структуры она раздувается до 4 байт.
System.Void использовать нельзя в своём коде никак, но и он по информации Маршалла тоже занимает 1 байт, что наверное не правда.
Аноним 09/04/23 Вск 14:30:42 2667054 300
16422768664800.jpg 49Кб, 492x700
492x700
>>2666972
>>2666522
В общем я разобрался, надо было в базе данных плагина найти базу данных конкретной игры, для которой ты пытаешься заставить собирать достижения и отключить параметр "IsManual".

Всем сяп за помощь, господа.
Аноним 09/04/23 Вск 17:04:43 2667204 301
>>2667054
Вот бы все ползьаки вместо насилия над сапортом или разработчиком шли в исходники и разбирались во всем сами.
Аноним 09/04/23 Вск 18:26:43 2667333 302
>>2667204
Вопросы требующие копаться в исходниках должны быть описаны в документации. Иначе будь добр - отвечай, ведь ты писал этот код. Или не выкладывай программу в паблик, а пользуйся сам у себя дома, тогда и вопросов не будет. А то хочешь и рыбку сьесть и на хуй сесть, чтобы и чcв потешить, что твоим говном пользуются, и не брать за это ответственность нихуя не делая для этих пользователей. Наглая безответственная эгоистичная свинина.
Аноним 09/04/23 Вск 19:11:29 2667411 303
>>2666816
>Ну так это буквально и есть сахар)
Так то, если присмотреться, то 95 конструкций языка можно охарактеризовать как сахар. Даже обычный цикл, это по сути сахар над if - goto.
А если копнуть чуть глубже, то в принципе, абсолютно все конструкции, абсолютно любого языка - это сахар, над всего тремя базовыми функциями.
Аноним 09/04/23 Вск 19:17:21 2667421 304
>>2667411
Только не над тремя, а над одной - над штрихом шеффера.
Аноним 09/04/23 Вск 19:35:10 2667446 305
>>2667411
Ну цикл это все таки базовая конструкция
А вот автокаст при is уже нет. Потому и ввели через много лет после is как сахар для сокращения необходимости явного каста после is

А вот в котлине is делает смарт каст и это не сахар а базовая функциональность
Аноним 09/04/23 Вск 20:38:29 2667551 306
>>2667333
Мистер ответственный разработчик, уточните пожалуйста причину подрыва?
Аноним 09/04/23 Вск 21:02:26 2667588 307
Почему нет ICloneable<T>?
Аноним 09/04/23 Вск 21:21:06 2667606 308
Аноним 09/04/23 Вск 21:27:34 2667612 309
>>2667421
Я честно говоря не уверен. Я знаю, что для бинарной логики есть три базовых набора
- AND-OR-NOT
- NAND
- NOR
Каждый из них самодостаточен и позволяет получить все многобразие, но когда я это изучал, вроде как считалось, что штрих шеффера или стрелка пирса слишком заморочены на уровне электроники, чтобы на них все реализовывать и поэтому предпочтительнее первый набор. Как оно там в нынешнее время - я х.з.
Аноним 09/04/23 Вск 22:57:00 2667674 310
>>2667588
Ну тамошние ответы я видел, и они меня не устроили.

> And I implemented ICloneable<T>, then do I implement ICloneable<Foo>? ICloneable<Bar>?
1. Тут-то я согласен, что для такого случая и нужно, чтобы возвращался объект.
Но иногда клонируемый тип явный и конкретный и заявленной проблемы нет.
И например проблема наследования и специфичности типа легко решается, например написав ICloneable<T> where T : struct. Struct может содержать массивы внутри. Тот же например ImmutableArray. Поэтому иногда нужен именно глубокой клон.

> ICloneable is considered a bad API now, since it does not specify whether the result is a deep or a shallow copy.
2. То, что Clone не для всех понимается как глубокая копия, и не гарантирует создание подлинно глубокой копии (т.е. полностью независимого объекта) - так это проблемы реализации и криворукости отдельных людей, а также настройки статических анализаторов. Я например всего его так понимал, что он должен гарантировать создание


3. Да и в общем случае, я думаю у всех иногда возникает необходимость создания глубокой независимой копии объекта, и было бы хорошо, иметь для этого обобщённый интерфейс и какие-то гарантии глубокости.
Аноним 09/04/23 Вск 22:57:39 2667676 311
Аноним 09/04/23 Вск 23:53:37 2667702 312
>>2667612
> есть три базовых набора
Только не 3, а счётное число.
Аноним 10/04/23 Пнд 07:05:08 2667781 313
>>2667674
>1. Тут-то я согласен, что для такого случая и нужно, чтобы возвращался объект.
а я не согласен. что нужно клонировать то и делай ICloneable<Foo> и/или ICloneable<Bar> - а не нужно, то и не делай
Это уже код работающий с ICloneable<> либо сможет скастовать к нужному типу, либо нет, что как бы штатно. От чистого ICloneable тоже толку не особо, ведь он возвращает object и чтобы работать с клоном нужен каст...так какая разница? а никакой

2 тип копии должен быть "ну чтобы был клон по смыслу, а иначе зачем тогда клон"? Если же оно не может быть склонировано (например мы не можем склонировать Stream чтобы получить такого самостоятельного клона) - так оно и не может быть ICloneable.
Все просто и совсем не сердито. Поэтому свой ICloneable<> нормально работает, просто мс опять думает "шарписты дурачки, запутаются, не будем им давать".

А мне потом приходится писать списки вида "мелкософт, ну WTFFFFFFFF"
Аноним 10/04/23 Пнд 19:04:16 2668342 314
image.png 6Кб, 1068x635
1068x635
В 11 авалонии шрифты уже получше, хотя до сих не дотягивают до нативных.
Аноним 10/04/23 Пнд 20:19:39 2668403 315
>>2668342
они просто вернулись к состоянию до "сломали". и никогда лучше уже не станут.
Аноним 10/04/23 Пнд 20:52:20 2668440 316
>>2668342
Шрифтодроч - это что-то вроде лампового звука у аудиофилов. Большинство пользователей никакой разницы не почувствует.
Аноним 10/04/23 Пнд 23:22:25 2668525 317
Screenshot20230[...].png 9Кб, 282x99
282x99
Почему так?
Аноним 10/04/23 Пнд 23:26:43 2668534 318
>>2668525
1. Логическое И пишется с двумя символами &&. Одно & означает побитовое И, вряд ли оно тебе нужно.
2. 5 < a < 10 вычисляется как true < 10 или false < 10 в зависимости от значения a. Что по-твоему больше, true или 10? Вот и шарп не знает.
3. Где фигурные скобки?
Аноним 10/04/23 Пнд 23:32:10 2668542 319
>>2668534
1. Разве && от & (как и || от |) отличаются не лишь только тем, что двойные версии операторов & и | присваивают переменной результат проверяя не каждый операнд, а только необходимый?
Скажем, если x = false && true, то && сразу присвоит x false, ведь логическое и подразумевает, что оба операнда должны быть true.
2. Резонно.
3. А функция у них есть какая-нибудь, или так принято выделять?
Аноним 10/04/23 Пнд 23:45:22 2668549 320
>>2668542
1. Нет, && и || работают так, как ты говоришь, но & и | обходят оба операнда целиком, проверяя каждый бит и складывая всё в результат: 5 | 6 = 0b101 | 0b110 = 0b111 = 7.
3. Принято оборачивать в фигурные скобки любые блоки даже из одной инструкции, чтобы в случае потерянного отступа разраб всё равно прочитал код правильно.
Аноним 11/04/23 Втр 00:25:42 2668579 321
>>2668440
поверь. не всем нравится дизайн а-ля веб с крупными элементами и шрифтами. А меньше шрифты выглядят ужасно.
Аноним 11/04/23 Втр 08:36:28 2668681 322
Аноним 11/04/23 Втр 09:49:19 2668698 323
>>2668681
программ разумеется. Большие кнопки, большие надписи, все большое
на авалонии физически нельзя сделать "пусть выглядит как WPF"

капец капча на дваче стала
Аноним 11/04/23 Втр 09:51:29 2668699 324
>>2668549
>Принято оборачивать в фигурные скобки любые блоки даже из одной инструкции

Принято где? Среди вас, петухов?
Аноним 11/04/23 Втр 10:21:33 2668709 325
Аноним 11/04/23 Втр 10:28:33 2668716 326
>>2668709
Не кукарекай петушара любитель гребней {}
Аноним 11/04/23 Втр 10:59:28 2668733 327
>>2668698
Каких программ? Конкретно что ты пишешь?
Программы же разные и соответственно требования к интерфейсу. Вот ты говоришь "любят/не любят" но это бессмысленный пук без указания конкретного применения. Что тебе надо сделать? Если не можешь сказать, значит и не делаешь ничего, только треплешься впустую тупостью как дебил.
Аноним 11/04/23 Втр 11:22:25 2668746 328
изображение.png 555Кб, 1560x1170
1560x1170
>>2668733
Мне правда нужно доказывать что мир идет не туда в плане UX/UI?
Кнопка пуск, приложения метро, электрон..мало что ли?
Там не требования к интерфейсу рулят - там рулят "а мы хатим вот так сделать". А еще сверху может быть приправлено плоским дизайном и по юзабилити это все ЦЕНЗУРА

И конечно же такие же деятели считают что их поделия нравятся людям. Не потому что ситауция "жричодали", а именно нравятся. Потому что... а он так считает и этого ему хватает.

На той же авалонии проще делать именно новомодный дизайн (ох уж эта дебильная тенденация к новодмодному дизайну (пик))и невозможно сделать похожий на нативный.
Аноним 11/04/23 Втр 11:23:25 2668747 329
class Yoba
{
public bool? Read { get; }
public bool Write
}

Как забиндить CheckBox ВПФа?
Аноним 11/04/23 Втр 11:24:08 2668748 330
>>2668747
факс:

class Yoba
{
public bool? Read { get; }
public bool Write { set; }
}
Аноним 11/04/23 Втр 11:25:29 2668751 331
>>2668748
берешь и биндишь. какая проблема. только сеттеры не забудь если чекбокс не ридонли
Аноним 11/04/23 Втр 11:30:09 2668755 332
>>2668751
Можешь немного подробнее подсказать?
Я, может, хуёво ищу, но толком ничего подходящего не видел.
Аноним 11/04/23 Втр 11:39:34 2668761 333
>>2668733
да вот пример - стартую визуал студию, а там на старте окно с недавними проектами.
Тормозное (зависает в половине случаев, возможно решарпер виноват, я не знаю, я ведь его сразу ставлю и не знаю как без него, но....ммм почему????), убогое - имеем только сортировку по дате запуска (ну ок еще и фильтр по символам, который работает просто невообразимо медленно!!!).

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

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

Это правда такие требования к UI чтобы такое говно сделать?

мда. капча викторина просто капец
л?ша... что это за слово блин
Аноним 11/04/23 Втр 11:42:45 2668765 334
>>2668755
это базовое
твой йоба класс по смыслу это 2 чекбокса
<CheckBox IsChecked="{Binding Read, Mode=TwoWay}">
<CheckBox IsChecked="{Binding Write, Mode=TwoWay}">

если это один чекбокс где Read читается в чекбокс, а пишется во Write, то это дичь. Читают из геттеров, а пишут через сеттеры.
Аноним 11/04/23 Втр 11:55:23 2668772 335
>>2668765
А если мой класс йоба - это вью модель для элементов TreeView?
И тогда CheckBox.IsChecked может/должен быть null, но при этом есть свойства Read и Write как "защита от дурака", чтобы null не сунули.

Пусть будет дичь? Возможно или нет?
Аноним 11/04/23 Втр 11:58:37 2668773 336
>>2668772
Кто нулл не сунул? Как поьзователь кликом на чекбокс всунет нулл?
Аноним 11/04/23 Втр 12:03:46 2668774 337
>>2668773
>Как поьзователь кликом на чекбокс всунет нулл?
Если автор вью, увидев во вьюМодели свойство bool?, вдруг поставит IsThreeState=True.
Вообще это гипотетическая ситуация, но стало интересно возможно ли как-то забиндить чекбокс на чтение к одному свойству, а на запись - к другому.
Аноним 11/04/23 Втр 12:05:29 2668777 338
>>2668774
Через конвертер/обертку взоможно все
Аноним 11/04/23 Втр 15:29:16 2669061 339
Аноны зацените идею а то мне кажется что это гениально, но в реальности ничего не получается.

В общем хочу я сделать облако на блазоре (васм)

А Файлки распихивать по разным серверам (Микросервисы).

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

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

Есть возможно заставить васм сделать корс запрос только он сделает это через жопу (Без авторизационных хедеров )
И это тоже не вариант для меня.

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

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

Анончи подскажи, как же все таки изьебнутся и сделать заебись?
Аноним 11/04/23 Втр 18:20:23 2669261 340
Почему все ругают кресты за сложность работы с памятью, когда там достаточно написать delete object, и всё, объекта нет. В шарпе же приходится рвать жопу, и искать какая мразь ссылается на твою хуйню, и не дает ей спокойно умереть.
Аноним 11/04/23 Втр 18:44:11 2669283 341
>>2669261
юзай лайфтаймы, люк
Аноним 11/04/23 Втр 18:48:43 2669294 342
>>2669283
Это что-то из asp? Мне бы в wpf...
Аноним 11/04/23 Втр 19:20:31 2669334 343
>>2669294
это что-то из концепции лайфтаймов, где все живет в рамках какого то лайфтайма. И как раз отлично подходит для любого проекта, где нет явно выраженных скоупов как тот же WPF где время жизни чего либо разное и примитивное управление жизни от DI не подходит

А вот лайфтаймы это мощь. нет утечек, нет проблем с Dispose, нет проблем с отписками - лайфтайм схлопнулся и все автоматически почистилось. Концепт простой как сатиновые трусы (с) - у CancellationTokenSource + Token - та же семантика.

другое дело что WPF фреймворки основаны на концепции слабых ссылок и "GC придет - порядок наведет" и тут уже не так красиво их использовать, ведь та же вьюмодель будет владельцем лайфтайма, а значит нужно ей как то сообщать "ты уже все", а по хорошему вьюмодель сама должна жить в каком то лайфтайме и тогда не забудешь почистить. Когда все принимает лайфтайм, то забыть его невозможно, а значит и забыть очистить граф невозможно.
Аноним 11/04/23 Втр 20:07:26 2669420 344
>>2669294
в очередной раз запощу
https://www.youtube.com/watch?v=Sq_h5bVWJ0k

посмотри, проникнись годными идеями. Конечно понимать годноту идеи и использовать ее - две большие разницы, но лучше все же расти над собой.
Аноним 11/04/23 Втр 20:20:25 2669440 345
.png 49Кб, 1720x796
1720x796
>>2669061
Че ты там понаписал? Нихуя непонятно.
Куда блядь у тебя файл будет загружаться? В обычной микросервисной архиетектуре - у тебя просто клиент шлет запрос на гейтвей, тот проверяет авторизацию, даже не читая тела, если все ок - стримит файлик куда тебе там надо.
Какие нахуй корсы? У тебя в контексте микросервисов - все в одном домене крутится, запросы идут через гейтвей, сервисы уже внутри - либо по какому-нибудь rpc либо через шину общаются.
Короче. Я вообще не понимаю что ты там такое придумал. При чем там вообще васм и микросервисы.
Аноним 11/04/23 Втр 20:29:49 2669447 346
>>2669261
Двачаю. Было бы неплохо уметь убивать объекты явно. Но домохозяечность высокоуровневость языка исключает вероятность реализации этой фишки - объекта нет, а корни на него все еще будут присутствовать где-то в ран тайме сохраняя "безопасную" ссылку на мертвый объект. И че может случится если такую ссылку разыменовать хуй его знает. Кому-то придется перепроверять все ссылки. Производительность это точно не прибавит.
Аноним 11/04/23 Втр 20:40:36 2669458 347
>>2669261
> когда там достаточно написать delete object
Вот тебе конструктор. Расскажи как чистить будешь

class Car{
public:
User(World w, CarStrategy s, vector<Component>* c }
...
}
Аноним 11/04/23 Втр 21:04:50 2669476 348
>>2669458
Гц может почистить. Например, передаешь объект и говоришь, чтобы этот объект не пережил ближайшую уборку мусора. Соответственно вложенные объекты, которые в результате перестанут быть досягаемыми, тоже должны умереть. Граф объектов у ГЦ и так на карандаше - можно за одну уборку очистить память как от виновника торжества так и от всех связанных с ним объектов.

GC.Kill(car1);
GC.Collect();

Вот с корнями что делать не понятно. Представь, что ты спустя время, после массы аллокаций, разыменовываешь такой осиротевший корень. И попадаешь вообще хз куда. Что там за объект будет или произвольный кусок объекта. Безопасной и управляемой такую ситуацию не назовешь. Следовательно нужно вводить проверки и кидать эксепшен. Так будет безопасно, однако перспектива словить эксепшен на ровном месте это даже хуже, просто клоунада на ровном месте начнётся. Удаляешь парочку объектов и все, рантайм проклят, поэтому везде трай кетчи, которые ничего полезного не делают, а только страхуют на случай корней с небезопасными ссылками.
Аноним 11/04/23 Втр 21:38:31 2669509 349
image.png 48Кб, 630x740
630x740
Норм реализация очереди с последовательной обработкой элементов (асинхронность нужна, здесь просто тестовый пример с выводом чисел)
Аноним 11/04/23 Втр 22:09:47 2669536 350
.png 84Кб, 644x633
644x633
>>2669509
Ну. Я сам любитель велосипедить.
Но блин. Почему не Channel-то?
Вот серьезно. У меня создается впечатление, что про них только я да второй кун из соседнего отдела знаем.

Но если тебе принципиально велосипедить, то можно вот так замутить.
Аноним 11/04/23 Втр 22:29:54 2669555 351
>>2669536
ок, возьму на вооружение. Но если рассматривать мой код, это тоже рабочий вариант?
Аноним 11/04/23 Втр 22:31:44 2669557 352
>>2669509
Ничего нормального
Очередь не потокобезопасна как минимум
Нет защиты от ошибок
И вообще хз как оно должно работать
Аноним 11/04/23 Втр 22:39:37 2669560 353
>>2669557
один поток всегда кладёт в очередь. А ошибки, я так понимаю, потенциально в Enqueue, нужно TryEnqueue
Аноним 11/04/23 Втр 23:03:51 2669579 354
.png 34Кб, 577x183
577x183
>>2669555
Нужно вникать в конкретно что ты там делаешь.
Лучше не выдумывай и просто используй Channels. Можешь такую вот оберточку намутить.
Аноним 11/04/23 Втр 23:18:14 2669588 355
>>2669560
ошибка вообще использовать такую "синхронизацию"
ты вон даже специально задержку сделал чтобы "ну на всякий пожарный"
но это не сработает. представь
1 ты добавляешь в очередь 1й элемент и запускаешь хендлер для его обработки
2 хендлер живо проходит свой семафор и уходит на 200мс в ожидание
3 хендлер пытается извлечь элемент и в этот момент кто то еще раз вызывает добавление. В итоге у тебя происходит гонка и внутреннее состояние Queue идет лесом.

И вообще никогда не пиши в стиле "что то добавил и последней строкой запустил попутно обработку". Это в принципе будет работать, но лучше разделить добавление и обработку на независимые потоки выполнения.
Аноним 11/04/23 Втр 23:52:31 2669625 356
Screenshot20230[...].png 38Кб, 825x372
825x372
Методы, в которые переменные передаются по значению, изменяют значение переменных только для локального окружения.
Методы, в которые переменные передаются по ссылке (ref ...), изменяют значение переменных для локального и глобального окружения.
Функции, в которых заново определяется переменная из глобального окружения, изменяют значение только для локального окружения.
Во всём прав? Пик рилейтед.
Аноним 11/04/23 Втр 23:53:06 2669626 357
>>2669625
сука ОБСЕРИЛСЯ с пиком, в третьем *изменяет для локального
Аноним 12/04/23 Срд 09:26:52 2669808 358
>>2669625
>локального окружения
>глобального окружения
Ты о чем? На каком языке ты разговариваешь? Что ты такое?
Аноним 12/04/23 Срд 09:38:20 2669814 359
>>2669808
Local/global scope, очевидно.
Аноним 12/04/23 Срд 09:47:52 2669819 360
image.png 67Кб, 781x660
781x660
Аноним 12/04/23 Срд 10:44:15 2669855 361
>>2669819
1 не вижу где бы вообще запускался этот цикл выдирания из очереди. Чей там токен отмены. В каком контексте весь цикл работает.
2 в Enqueue лишний await не нужен
3 а где ConfigureAwait(false). надеешься что не будет контекста синхронизации?
4 (зависит от пункта 1) А когда токен бросит исключение отмены то что будет
5 Что насчет gracefull shutdown
есть разница между "все отменяем нахрен" и "больше элементов не будет, но нам важно дождаться обработки тех, что уже в очереди". То есть если как бы не совсем плевать, то делается какой то механизм чтобы кто-то, кому надо, мог дождаться окончания работы очереди - свойство Task Completion например или еще как.

зы: викторина от капчи убивает. вт?ить. это что такое? а свин?я? свинзя что ли ). муж?к внезапно не мужик. сш?ть???
Аноним 12/04/23 Срд 10:59:04 2669859 362
>>2669814
Какой еще нахуй Local/global scope в шарпе? Откуда ты эту хуйню притащил?
Аноним 12/04/23 Срд 15:15:21 2670142 363
Как лучше сделать в приложухе работаюей с разными внешники железками эмуляцию этих железок что бы можно было легко переключаться для отладки и не засирать код всякими #if макросами? Есть какие нибудь фреймворки для этого?
Аноним 12/04/23 Срд 15:37:59 2670190 364
>>2670142
Забивать все абстракциями и где-то в одном месте подключать нужные реализации в зависимости от железяки.
Аноним 12/04/23 Срд 16:00:36 2670222 365
>>2670190
На таком уровне и сам понимаю, хочу глянуть референс имплементации что бы не изобретать велосипед.
Например для обработки всякого рода случайных ошибок есть Polly которую все юзают, может и в моем случае что нибудь подобное есть?
Аноним 12/04/23 Срд 16:23:22 2670268 366
Всем привет. Перекатыаюсь к вам с джавы. Взяли на стажу писать бэкенд. Посоветуйте какие нибудь книжки с последовательным изучением. Знаний в джаве и спринге оч много , поэтому совсем с нуля учиться мне не надо.
Аноним 12/04/23 Срд 16:29:14 2670274 367
>>2670268
Бесполезных знаний
Забудь все, чему тебя учили
Аноним 12/04/23 Срд 16:51:10 2670297 368
Аноним 12/04/23 Срд 16:56:28 2670299 369
>>2670274
Ну поч. ОПП я знаю , SOLID знаю , про архитектуры тож знаю. Если ты про специфические знания о самом языке , то ясен хуй заного учиться буду.
Аноним 12/04/23 Срд 16:59:04 2670301 370
>>2670297
>Asp.net core in action
Перевод стоит читать , или как обычно залупа и надо оригинал ?
Аноним 12/04/23 Срд 17:15:22 2670330 371
Аноним 12/04/23 Срд 17:19:57 2670334 372
Аноним 12/04/23 Срд 17:38:35 2670358 373
>>2670334
Хуегаси. После 5.0 ничего ломающего не появилось, только сахар.
Аноним 12/04/23 Срд 17:45:31 2670377 374
>>2670301
Конкретно у этой книги есть хороший перевод, только я не помню у последнего издания или нет. Ищи перевод от DotNetRu.
Аноним 12/04/23 Срд 17:58:05 2670397 375
>>2670377
Его и нашел. Издание 21го года.
Аноним 12/04/23 Срд 20:02:55 2670585 376
Хм. Хм...
Смотрите. Хочу сделать типа доступ к апи по разрешениям.
Ну. Базово: Users.Edit, Users.Delete, вы поняли.
Собственно. Я чет смотрел, че там у майков и там какая-то непонятная фигня с политиками и прочим.
Решил делать велосипед.
Сделал. Работает.
Но тут я вспомнил, что вообще-то у меня микросервисы.
И вот тут - проблемка. Все, от джунов до сеньеров вокруг - считают обычный JWT - говном и вообще. Нужно чтобы был зашифрован.
Шарить ключи при этом никто не хочет.
Делать уродство в духе: при каждом запросе где нужно разрешение - стучаться к серверу авторизации, чтобы проверить разрешения - уже я не хочу.
Собственно. А как умные люди делают-то?

Просто когда я начинал, в голове было такое видение:

//Service A
[Permission("User.Add")]
public IActionResult AddUser(UserAddRequest r)

//Service B
[Permission("Items.Add")]
public IActionResult AddItem(ItemAddRequest r)

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

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

Короче. Умные люди. Посоветуйте чего-нибудь.
Аноним 12/04/23 Срд 21:30:41 2670671 377
А вообще. Че меня каждый раз смущает.
Я вот я беру. И хуячу в обход инфраструктуры всякое.
Типа вот есть всякие мидлвары аспнетовские, для всего почти. Там наделали провайдеров, хуяйдеров, фабрик, наследуйся, да расширяй.
Но хуй там. Я предпочитаю не разбираться во всей этой залупе - и хуячу сбоку свою хуйню.

Вот типа помню, была таска - типа делать прокси вида: api/proxy?to={route}. Ну и что бы вы думали? Стал я искать готовое решение? Может быть я посмотрел че там есть такое чтобы упросить себе жизнь?
Не. Я взял и сделал мидлварем вот это вот.
Типа проблему решил. А спать нормально не могу, потому что снится мне в кошмарах, что вдруг я там чет не предусмотрел. Но вроде за 2 года пользованием - никто не жаловался.
Аноним 13/04/23 Чтв 00:05:08 2670754 378
Screenshot20230[...].png 17Кб, 622x81
622x81
Только что делал задачку, для решения которой приходилось изменять лист, а в конце сверять.
Map - сам лист. (Я объявил и инициалировал его в самом начале функции, перед if'ами я его поставил для наглядности.)
Первый if - тот, в результате которого функция возвращает false (а должна true!), хотя ясно, что я присвоил этой переменной лист и сравниваю её с только что созданным листом.
Второй if - тот, который возвращает true.
Объясните пожалуйста почему эти if'ы по разному себя ведут.
Ссылка на if'ы (пикрил): https://pastebin.com/rbUsQfYm
Ссылка на всю функцию: https://pastebin.com/RfMWw4wy
Аноним 13/04/23 Чтв 00:07:24 2670756 379
>>2670754
Бля, наоборот, первый на скрине if - true, а второй - false.
Аноним 13/04/23 Чтв 01:24:30 2670790 380
>>2670756
>>2670754
В первом случае ты вручную сверяешь все элементы
Во втором сверяешь разные списки, а для них сверяется только равность ссылки но не содержимого.
Аноним 13/04/23 Чтв 02:08:51 2670799 381
Как обработать событие нажатия по заголовку конкретного столбца?
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{

}
А дальше как?
Аноним 13/04/23 Чтв 02:52:20 2670805 382
>>2649578 (OP)
Как пофиксить этого ебучего пира https://github.com/username1565/CSharpServers/tree/Peer

Хочу децентрализованно раздавать хэш-таблицу, и синхронить её, а оно нихуя не робит. Заебало уже тыкаться. Хочу сделать серверы, в виде модулей, и из модулей этих ебанных - собрать пира, короче. Но чё-то запутался, блядь. Наверное, из-за голого энтузиазма. Бывает.
Аноним 13/04/23 Чтв 10:34:39 2670913 383
>>2670799
Знаю только "сверять сам хидер текст"
Аноним 13/04/23 Чтв 10:46:54 2670932 384
Аноним 13/04/23 Чтв 11:37:28 2670969 385
>>2670932
ааа. утебя винформс. тогда не. Это древние технологии
Аноним 13/04/23 Чтв 18:46:06 2671406 386
Аноним 13/04/23 Чтв 18:59:25 2671414 387
>>2671406
даже WPF, который пришел ему на смену, и тот уже давно заброшен (хотя абсолютно зря). Я уже много лет как забыл как кодят на винфорсах.
Аноним 13/04/23 Чтв 19:02:52 2671417 388
>>2671414
Все забросили WTF и вернулись на няшные винформочки.
Аноним 13/04/23 Чтв 19:05:40 2671421 389
>>2671417
нет. они ушли в UWP, который забросили, потом в WINUI который тоже забрасывают и типа в MAUI, который забросят не успев туда даже перейти.

в любом случае по винформсу ничего сказать не могу. А в WPF для такой задачи я банально навесил attached property на нужные колонки и достаю их в хендлере и знаю по чем сортировать.
Аноним 13/04/23 Чтв 19:54:48 2671479 390
image.png 15Кб, 450x143
450x143
Если я в контроллерах юзаю внедрение зависимостей под копотом создается синглтон этого объекта ? Или каждый раз когда мне нужен этот объект , например в других классах , он создает еще один ?
Аноним 13/04/23 Чтв 19:56:29 2671484 391
>>2671479
Как настроено в DI так и будет
Аноним 13/04/23 Чтв 20:27:37 2671506 392
>>2671479
Ты сам время жизни объекта задаешь.
Аноним 14/04/23 Птн 10:00:21 2671831 393
image.png 19Кб, 674x49
674x49
>>2671506
>>2671484
Я понял что при внедрении своих сервисов их можно создать как синглтон. А как он создает контекст для базы данных через этот метод ?
Аноним 14/04/23 Птн 10:10:19 2671838 394
>>2671831
не использую EF, но судя по прочитанному - он создает контекст при каждом внедрении, то есть дефолтно это transient
Поэтому и есть вариант использования пула контекстов

builder.Services.AddDbContextPool

чтобы каждый раз контекст не создавать.

А вообще если видишь чужой Services.Add* то переходишь и смотришь исходник и там видно у кого какой лайфтайм, благо в DI от майков их 3 стандартных.
Аноним 14/04/23 Птн 10:22:20 2671841 395
>>2671838
Да , я тоже так подумал. Потому что создал не пустой контсруктор и он отрабатывал каждый раз при переходе по урл, судя по логам.
Почему EF не юзаешь ? Какие еще аналоги есть ?
Аноним 14/04/23 Птн 10:31:01 2671845 396
>>2671841
Потому что не хочу.
Супер тяжелый при старте, а также дополнитнльная прослойка которой нужно разбираться как пояснить чтобы он не нагенерил херь в sql

Альтернатив тонна на разный уровень безумия
Аноним 14/04/23 Птн 12:43:43 2671952 397
Сильно ли сложно переучиваться на другие версии ASP.NET?
Аноним 14/04/23 Птн 13:59:51 2672006 398
>>2671952
Если хорошо разбираешься в какой-то одной, то нет. Вопрос одного-двух дней. Если как чувак выше с вопросом про лайфтаймы, то очень сложно.
Аноним 14/04/23 Птн 14:22:32 2672023 399
>>2672006
>Вопрос одного-двух дней
Это из разряда: да что там учить, за вечер можно сишарп выучить?
Аноним 14/04/23 Птн 14:25:31 2672028 400
>>2672023
а что там учить? прочитать что нового, что изменилось и как мигрировать
Ну иногда могут быть фичи где нужно вникнуть
Аноним 14/04/23 Птн 15:27:22 2672091 401
>>2672028
А ты не боишься, что не сможешь понять дотнет 8? Вдруг там такого наворотят, что по новой надо будет учить?
Аноним 14/04/23 Птн 15:46:06 2672112 402
>>2672091
Я нет. Я полиглот. В первую очередь из-за того что не пытаюсь использовать один язык везде, а признаю что каждый язык силен в чем то и мне лучше знать его чем страдать золотым молотком.
Потому любые фичи что повышают выразительную мощь и позволяют сделать проще я всячески приветствую.
Аноним 14/04/23 Птн 15:46:12 2672113 403
>>2672091
>А ты не боишься
Нет. Я же не джавист какой-нибудь, для которого добавление одного модификатора доступа - это уже пиздец и breaking changes.

Я за 5 лет примерно вот такую цепочку прошел:
.NetFramework 3.5
.NetFramework 4.7
.Net Core 2.0
.Net Core 3.1
.Net Core 6.0
Это не считая всяких минорных версий, .Net Standart и версий разных библиотек.
И как-то норм, нет там таких изменений, чтобы занимало бы больше недели на изучение.
Аноним 14/04/23 Птн 16:06:03 2672135 404
>>2672113
Херово ты её прошел раз называешь NET 6 ".Net Core 6.0", перепроходи.
Аноним 14/04/23 Птн 16:08:34 2672137 405
>>2672135
но она же по факту является неткором.
Если не согласен, то попробуй с него с вордом поработай. Потом расскажешь )
Аноним 14/04/23 Птн 16:15:30 2672142 406
>>2672135
Та вообще похуй. С учетом того как сам майкрософт относится к неймингу версий своих продуктов, ебал я в рот правильно называть их версии.
Аноним 15/04/23 Суб 03:05:56 2672674 407
image.png 153Кб, 1021x1294
1021x1294
image.png 101Кб, 1153x1145
1153x1145
>>2670805
Знаешь почему никто даже не попытался ответить? Потому что почитай стайл гайды.

При одном только открытии репы хочется закрыть т.к. стена файлов и никакой структуры. Открываю рандомный файл а там такой же пиздец.
Стойкое ощущение что по тебе дурка плачет
Аноним 15/04/23 Суб 04:52:55 2672684 408
>>2672674
Так там же есть целая ебическая структура, из кучи разных серверов, и клиентов. Глянь бранчи, штоле, и как они переплетены. Я их хочу как модули сделать. Потому и куча файлов.

Там структура такая:
TcpServer - один сервер TCP
TcpServer -> TcpServers - много серверов на разных айпи и портах
TcpClient -> TcpClients - много клиентов
TcpServers + TcpClients -> TcpClientsServers - TCP серверы и клиенты - в одном приложении

UdpServer - один сервер UDP
UdpServer -> UdpServers - много их
UdpClient -> UdpClients - много клиентов
UdpServers + UdpClients -> UdpClientsServers - клиенты и серверы UDP в одном приложении

То же что и UDP, но с мультикастом, чтобы искать пиров в локальной сети, и коннектится к ним:
UdpMulticastServer
UdpMulticastServer -> UdpMulticastServers
UdpMulticastClient -> UdpMulticastClients
UdpMulticastServers + UdpMulticastClients -> UdpMulticastClientsServers - клиент-сервер (много их).

Та же хуйня, только тут UDP и TCP серверы - работают на общем порту, но отвечают по-разному на разные пакеты:
TcpServers + UdpMulticastServers -> TCPUDPMulticastServers
TcpClients + UdpMulticastClients -> TCPUDPMulticastClients
TCPUDPMulticastServers + TCPUDPMulticastClients -> TCPUDPMulticastClientsServers - это уже пир, как-бы.

Ну а дальше уже, шла разработка пира, только как-то кривовато, и он не пашет нихуя.
Аноним 15/04/23 Суб 05:08:34 2672687 409
>>2672684
Шиза. Уже за csc в скрипте запуска и mono в цивилизованном обществе даже руку не пожмут. А плодить ветки с абсолютно разным кодом это отедльный вид извращенства
Аноним 15/04/23 Суб 05:10:26 2672688 410
image.png 86Кб, 1045x1295
1045x1295
>>2672684
И ты так и не пояснил как должны простые смертные читать подобную жесть?
Аноним 15/04/23 Суб 08:13:16 2672714 411
>>2672687
>Шиза. Уже за csc в скрипте запуска и mono в цивилизованном обществе даже руку не пожмут.
А как это говно ещё запускать, если не с под командной строки?
Даблкликом по екзешнику, штоле?

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

>>2672688
>И ты так и не пояснил как должны простые смертные читать подобную жесть?
Надо стать бессмертным, как я - очевидно же.
Шо там непонятного-то?
Первый метод - возвращает строчку. Второй метод - байты. Это - ответ на запрос.
Ну а третий метод - возвращает TcpClient, тогда, когда подключение есть. Если его нет, то возвращает хуй, какбэ.
А уже имея TcpClient, подключенный к серверу, можно юзая его - слать запросы на этот вот сервер, слать их циклом, и не отключаясь.
Аноним 15/04/23 Суб 08:40:34 2672721 412
>>2672714
Скажи просто честно, ты хоть что то читал по сборке в дотнете?
А про оформление кода и нэйминг?

У тебя ни один стайл гайд не соблюдён. csc никто напрямую не дёргает, все идут прямым путём через мсбилд который и то вызывается через dotnet xxx и потом с готовыми собранными бинарями делают что хотят и где хотят. Моно это привет из 2010

Я честно хуй вообще что сказать, это всё выглядит на столько плохо и неудобно что вообще не понимаю как с этим работать.
Как ты это нечто в дебаг режим загоняешь?
Аноним 15/04/23 Суб 10:11:15 2672758 413
Что лучше: поставить виртуалку с линупсом и в нём гонять докер или подрубить WSL в самой винде и гонять докер через него?
Первый вариант мне нравится, что виртуалка сама по себе контейнер и можно настраивать там окружение: свой дотнет, свои инструменты, но минусы что вижлу на линукс не поставишь и надо работать с вс кодом.
Второй вариант удобен, что работаешь с вижлой, но сам WSL какой-то костыль, который перманентно отжирает у тебя ОЗУ. Если виртуалку можно выключить, то WSL можно только деинсталировать с потерей всех данных.
Аноним 15/04/23 Суб 10:15:20 2672762 414
>>2672758
первое в разы менее удобно
второе может доставить проблем. мало ли с чем тебе придется и как работать. А это все таки костыль.

WSL тоже можно выключить.

так что лучше начинать с WSL пока не упрешься в "да е...й WSL"
Аноним 15/04/23 Суб 10:26:51 2672776 415
>>2672758
> WSL какой-то костыль, который перманентно отжирает у тебя ОЗУ
Если всл1 то он ничего не отжирает, но раз ты про докер то всл2. И внезапно но всл2 просто виртуалка глубоко интегрированная в винду которую можно прибить
Аноним 15/04/23 Суб 10:29:30 2672779 416
>>2672758
первый wsl бесполезен для докера
Второй же ломает работу виртулбоксов разных
Аноним 15/04/23 Суб 10:31:30 2672782 417
>>2672779
Хз. У меня на рабочем пк и весло2 и виртуалки в вбоксе
Аноним 15/04/23 Суб 10:33:16 2672783 418
>>2672782
Это везение, что режим эмуляции не лагает, не больше
Аноним 15/04/23 Суб 12:28:29 2672836 419
>>2672721
>Скажи просто честно, ты хоть что то читал по сборке в дотнете?
>А про оформление кода и нэйминг?
Ниет. Я же не кодер-шарпист, мне за погромирование не плотят, я на голом энтузиазме пира костылю, чтобы в нанобороду прикрутить его.
Просто в гугле пишу "как сделать хуйнюнейм CSharp", вижу вылазит говнокод всякий, перевариваю эту хуету всю в мозгу, потом открываю NotePad++ в WindowsXP и короче пишу говнокод туда. Потом значит сохраняю его как cs-файл, ну и создаю .bat-файл чтобы откомпилить и протестить. Если что-то выёбывается там, приходится врубать фиксиков, смотреть как они фиксят и короче фиксить, всю эту еботу.
Ну а в линупсах шоб робило - так через mono, .sh файлом конпелирую, и там уже пердолюсь, какбэ.

>У тебя ни один стайл гайд не соблюдён.
А как их блюсти?

>csc никто напрямую не дёргает,
>все идут прямым путём через мсбилд который
>и то вызывается через dotnet xxx
>и потом с готовыми собранными бинарями делают что хотят и где хотят.
Ну вот, я так и думал, как-то, в бинари всё заделать, чтобы оно как модули было, а потом из модулей этих собрать пира и ебись оно конём. Но я до такого уровня, какбы - врядли дойду. Нутыпонел.

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

>Как ты это нечто в дебаг режим загоняешь?
Просто пишу Console.WriteLine где надо, чтоб в консоли лезла инфа, а когда не надо - закомментировал и нету его.

Ну, чё сказать.. Вроде как пофиксил уже этого ебучего пира. Поплыло говно по трубам: https://github.com/username1565/CSharpServers/network
Вот тут короче видно.
Вроде робит, но всё-равно надо фиксить всю хуйню, и тестить, а ещё позакомментить всякое, а то многабукафф лишних вылазит.
Аноним 15/04/23 Суб 13:14:04 2672871 420
16774494394570.webm 13936Кб, 1920x1080, 00:03:35
1920x1080
>>2672714
>Шо там непонятного-то?
>Первый метод - возвращает строчку. Второй метод - байты. Это - ответ на запрос.
>Ну а третий метод - возвращает TcpClient, тогда, когда подключение есть. Если его нет, то возвращает хуй, какбэ
Аноним 15/04/23 Суб 13:16:30 2672875 421
>>2672871
капец у тебя на строчки аллергия. будь твоя воля - ты бы писал все в одну большую строку.
Аноним 15/04/23 Суб 13:26:43 2672884 422
>>2672836
Чел, ты охуенен. Даже представить боюсь через что ты прошел, чтобы у тебя все это вот так получилось. Местные домохозяйки привыкли что за них все делает студия и компилятор, а тебе и так норм, вот они и бесятся, тимлиды хуевы. Скатили тред в перманентное интервью на собесе. Так что не слушай долбоебов, ты очень крут.
Аноним 15/04/23 Суб 13:33:35 2672888 423
>>2672884
суть в том что код должен быть читабелен. Если одному норм - то только одному этот код и нужен. И то только пока он его пишет ибо через год все забудется и он сам ахереет от этой неотформатированной лапши без структуры
Аноним 15/04/23 Суб 13:38:48 2672891 424
Аноним 15/04/23 Суб 13:59:13 2672900 425
>>2672884
Согласен. Послушал его мысли, посмотрел его работу и много нового для себя извлёк.
Как минимум буду теперь делить части проекта по веткам гита, а не директориям!
Аноним 15/04/23 Суб 14:52:24 2672937 426
>>2672884
Для энтузиастов есть питоны с жабаскриптами. Пишешь на языке профессионалов и просишь помощи - соблюдай стандарты
Аноним 15/04/23 Суб 16:35:41 2672984 427
linuxdontwork2.jpg 197Кб, 739x729
739x729
Что я делаю не так? Скачал свежий скрипт с сайта микрософт, вроде установился корректно, но команда dotnet всё равно не доступна.
Аноним 15/04/23 Суб 16:43:00 2672990 428
>>2672984
консольку перегрузи же
Аноним 15/04/23 Суб 17:01:55 2673006 429
>>2672990
Ничего не получается. И где это ваше хваленное: микрософт любит линукс? Я уже в самом начале споткнулся.
Аноним 15/04/23 Суб 17:03:44 2673009 430
>>2673006
да. но линукс не любит тебя.
Аноним 15/04/23 Суб 17:07:46 2673016 431
>>2673009
Голанг у меня сразу поставился без всяких плясок с бубном
Аноним 15/04/23 Суб 17:19:21 2673018 432
>>2673016
дотнет тоже поставился.
просто в PATH не прописался. это даже на скрине написано
Аноним 15/04/23 Суб 20:02:17 2673176 433
.png 59Кб, 1356x944
1356x944
>>2671479
Хм. Вот тебе картинка как примерно оно работает.

А про твой вопрос. Контекст БД, по умолчанию - Scoped. Т.е. на каждый скоуп создается один экземпляр, который шарится между теми кому эта зависимость нужна.
Аноним 15/04/23 Суб 20:33:32 2673224 434
>>2672984
Там короче надо в переменные где-то записать путь до папки из которой будет запускаться.
Так почему-то на некоторых дистрибутивах.
Вот конкретно с маджарой - сам ебался. Уже забыл че делал конкретно и куда прописывал.
Проверить что оно работает - можешь просто открыва ~/.dotnet и посмотрев что оно установилось, можешь еще и запустить сам dotnet и увидеть вывод с помощью.
Но чтобы оно глобально работало - надо где-то прописать путь до dotnet'а, а где - уже не помню.
Аноним 16/04/23 Вск 00:43:03 2673357 435
Анончики подскажите, а как мне изменить язык интерфейса в самом установщике Visual Studio Installer, а то у меня сама студия на английском, а эта хрень на русском, хочу чтобы менюшка, описание пакетов нагрузок то же были на английском.
Аноним 16/04/23 Вск 00:56:09 2673374 436
image.png 1Кб, 218x20
218x20
>>2673357
Запускаешь cmd
Переходишь в каталог: c:\Program Files (x86)\Microsoft Visual Studio\Installer\
(ну или туда где у тебя установлен инсталлер студии)
Вводишь команду: vs_installer.exe --locale en-US

После этого инсталлер запустится на английском. И при последующих запусках так же будет на английском.
Аноним 16/04/23 Вск 00:56:57 2673376 437
>>2673357
Переключи студию на русский, это решит все твои проблемы.
Аноним 16/04/23 Вск 00:59:34 2673378 438
>>2673374

От души Анонче, сработало
Аноним 16/04/23 Вск 02:20:09 2673415 439
>>2672884
Похвально. Теперь бы sqlite прихуярить туда как-то, чтобы база данных могла быть пиздатой. У меня есть репа с сиквелайтом тут https://github.com/username1565/KeyValue
И недопиленный бранч с сиквелайтом в наноборде - вот тут: https://github.com/username1565/nanoboard/tree/nanodb-sqlite
Короче, базу вообще переделать бы в виде хэш-таблицы, и тогда уже можно было бы её раздавать в пиринговой сети, децентрализованно. Даже в локальной сети, можно было бы просинхронить базу. К тому же, если использовать sqlite, то можно вообще убрать нафиг ограничение на аттачи, и blob'ами их заливать туда (с каптчёй, разумеется). Каптча встроенная, что заебато. Это всё пока лишь на уровне идеи, и очень много пердолинга. Но, пожалуй - закину всё это в todo, для потомков. А вам бобра, шарпаны.
Аноним 16/04/23 Вск 02:45:25 2673427 440
>>2672884
>привыкли что за них все делает студия и компилятор
Я до того как перекатился в .net, лет 15 писал на разных экзотических языках у которых не было ни нормальных сред разработки, ни инструментов, ни прочего. Точно так же приходилось писать код в текстовых редакторах, делать разные батники для запуска компиляции, отладку через печать в консоль, для некоторых даже самому трансляторы приходилось писать и прочие велосипеды изобретать.
Я это к чему. Ебал я в рот возвращаться ко всему этому пердолингу. После перехода на шарп я только и делаю, что кайфую от того что мне не нужно заниматься всей этой херней. Можно просто сосредоточиться на конкретной задаче и писать код на полном расслабоне.
Аноним 16/04/23 Вск 03:05:40 2673433 441
>>2673427
ого, чёт ты каким то мазохистом раньше был)
Аноним 16/04/23 Вск 08:38:11 2673477 442
ubuntudotnetsdks.jpg 36Кб, 735x483
735x483
>>2673018
>>2673224
Дропнул манжару и поставил убунту. Всё нормально установилось. Видимо, микрософты любят только убунту из линупсов.
Аноним 16/04/23 Вск 12:52:03 2673608 443
>>2673477
>манжару
У меня на ноуте в манжаре даже звук не завелся. Отлетел при первой загрузке и больше не работал.
А ты говоришь дотнет, лол.
Аноним 17/04/23 Пнд 09:42:20 2674393 444
>>2673477
Тут дело не в майках, а в линуксе как таковом. Я думаю им нахуй не уперлось поддерживать свои продукты на всем пингвинячьем зоопарке. Они базу сделали, а в остальном ебитесь сами, хотели опенсорс - берите сколько унесете.
Собственно как и со многими другими производителями софта.
Аноним 17/04/23 Пнд 09:53:23 2674404 445
Как вы изучали ASP.NET? Есть конечно книги всякие, метанит, курсы, но всё это теория. А как это закреплять на практике?
Аноним 17/04/23 Пнд 10:24:13 2674418 446
>>2674404
Пишешь пет проект, ковыряешь чужие репы. Ничем не отличается от любых других технологий
Аноним 17/04/23 Пнд 12:49:42 2674503 447
>>2674418
ну...если не задумываться о качестве этих чужих реп )
Аноним 17/04/23 Пнд 12:57:34 2674513 448
>>2674503
Репы с 1к+ звездочек за редким исключением говно
Аноним 17/04/23 Пнд 16:28:13 2674692 449
Анон, который посоветовал мне либу Jetbrains.Lifetimes, спасибо тебе огромное. Это просто лютейшая годнота, благодаря которой я избавился от утечек памяти и здорово облегчил себе жизнь.
Аноним 17/04/23 Пнд 16:28:45 2674694 450
>>2674692
Еще бы к ней документацию нормальную.
Аноним 17/04/23 Пнд 19:45:00 2674845 451
>>2674404
Пошел на работу, дали проект.
В процессе изучил.
Аноним 17/04/23 Пнд 20:17:53 2674870 452
>>2674845
А сейчас возьмут без знания ASP.NET?
Аноним 17/04/23 Пнд 20:26:26 2674882 453
>>2674692
вещь конечно годная, но если использовать ее на полную катушку. Я использую в основном в WPF - там у меня все на его основе построено, а сам он поверх DI от мелких.

Увы кроме исходников
https://github.com/JetBrains/rd/tree/master/rd-net/Lifetimes
и пары роликов на ютубе ничего и не нашел

Хотя мне в принципе хватает. Основное лайфтаймовое - там ведь немного. Остальное в длл всякое утилитное.
Аноним 17/04/23 Пнд 20:33:55 2674889 454
>>2674692
Каким хуем у вас память течёт в языке с гц?
Аноним 17/04/23 Пнд 20:39:08 2674893 455
>>2674889
А что GC
GC чистит только то что осталось без ссылок. Но занулить ссылки легко забыть или неудобно. А еще и не тот порядок диспоза.
Лайфтаймы все это решают
Аноним 17/04/23 Пнд 20:39:21 2674894 456
>>2674870
Я устраивался в 2020м
После меня еще чел приходил, тоже без каких-то знаний.
Другое дело, что это от места зависит и готовности за 40к работать на начальном этапе.
Аноним 17/04/23 Пнд 20:41:13 2674897 457
>>2674894
Я и за 20к готов работать, лишь бы взяли. Сейчас особо выбирать не приходится.
Аноним 17/04/23 Пнд 22:25:25 2674971 458
image.png 9Кб, 272x218
272x218
Это 1 апреля что ли? На чём мне написать нормальный кроссплатформенный гуй?
Аноним 17/04/23 Пнд 22:32:46 2674975 459
Есть очень много экземпляров класса, в которых находится относительно тяжелый метод. Я этот метод сделал статическим.

Но могу ли я для удобства сделать одноименный метод для экземпляра, который ретранслирует данные из статического метода? Хорошая ли это практика?
Аноним 17/04/23 Пнд 22:36:30 2674978 460
>>2674893
Если это не делегат или подписка, а просто ссылка ну другой класс?
Аноним 17/04/23 Пнд 22:38:13 2674980 461
Аноним 17/04/23 Пнд 22:48:23 2674987 462
>>2674975
>Но могу ли я
Можешь. Статические члены класса доступны для членов экземпляров класса. Обратно нет.

А вот насчет
>Хорошая ли это практика?
для начала нужно понять, что ты имеешь в виду под:
>относительно тяжелый метод
>ретранслирует данные из статического метода

Судя по формулировкам ты не до конца понимаешь, что такое статика в шарпе и зачем она нужна.
Аноним 17/04/23 Пнд 23:07:00 2674993 463
2023-04-1722-59[...].png 4Кб, 446x209
446x209
>>2674987
В моем понимании код обычного метода будет дублироваться при каждом новом экземпляре. И если будет 100 экземпляров, то будет 100 копий метода. Если внутри экземпляра еще и 100 методов, то это (в моем понимании) влияет на объем памяти, если я захочу составить большой список.

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


>относительно тяжелый метод
Тут я имел ввиду количество строк кода. Я понимаю, что при конвертации в IL-код строка строке рознь..
Аноним 17/04/23 Пнд 23:08:55 2674994 464
>>2674993
метод существует в таблице методов в размере одна штука
а при выполнении используется память из стека текущего потока
так что статический метод ничего не выигрывает в плане памяти.
Аноним 17/04/23 Пнд 23:23:19 2675004 465
>>2674994
Спасибо, я думал что методы дублируются.

>>2674980
Допустим я создал экземпляр класса Bike, и экземпляр класса Car. В их свойствах лежит один и тот же экземпляр класса Gas.

Вот я удаляю Bike, но экземпляр Gas определенно продолжает существовать в Car. Получается, что у Bike не будет почищен GC, ведь в его свойстве лежит ссылка на Gas. Так?
Аноним 17/04/23 Пнд 23:27:02 2675009 466
>>2675004
будет почищен, ведь никто не ссылается на байк (и он никому не нужен). А байк может хоть на тыщу всего ссылаться - никому до этого дела нет.
Аноним 17/04/23 Пнд 23:31:58 2675013 467
>>2675009
Ах вот оно что. У GC есть информация, кто ссылается на экземпляр. Спасибо.
Аноним 17/04/23 Пнд 23:39:10 2675014 468
>>2675013
Как бы в этом и суть работы GC - найти объекты которые уже никому не нужны и выбросить их из памяти
Аноним 18/04/23 Втр 00:04:55 2675033 469
Аноним 18/04/23 Втр 06:35:56 2675089 470
>>2674975
>>2674993
Ряяяяяяяяяяяя. У меня горит.
Ряяяяяяяяяяяя.
Вот чтобы такой хуйни не было - и надо с си начинать. А в идеале - с ассемблера.

А почему говрит? Потому что я такую хуйню уже от работающих слышал, когда они поясняли, зачему все хуячат статикой. Пиздец. Ряяяяяяяяяяяяя. Гороит.
Аноним 18/04/23 Втр 22:58:39 2675795 471
>>2675089
Есть список
List<Booba> women = new List<Booba>();
Тип Booba реализует интерфейс ITitties

Какова хуя я не могу привести список типа Booba к списку интерфейса ITitties?
Аноним 18/04/23 Втр 22:59:10 2675796 472
Аноним 18/04/23 Втр 23:07:15 2675802 473
>>2675089
А почему тогда DependencyProperty использует статический метод OnPropertyChanged? У него же есть экземпляр класса, почему бы не вызвать метод напрямую?
Аноним 18/04/23 Втр 23:37:54 2675828 474
>>2675802
DependencyProperty реализует паттерн "приспособленец" чтобы чего то там минимизировать.
Аноним 18/04/23 Втр 23:41:45 2675830 475
image.png 20Кб, 452x65
452x65
>>2675795
>Какова хуя я не могу привести список типа Booba к списку интерфейса ITitties?
Потому что дженерики, ковариантность и еще дохуя умных слов, которые ты все равно не поймешь.
Короче делай так как на пике и будет тебе счастье.
Аноним 19/04/23 Срд 08:03:39 2675929 476
А где старая шапка? Я-то хотел название книги взять из неё, тогда что почитать по EF?
Аноним 19/04/23 Срд 08:46:07 2675945 477
>>2675795
Получится у тебя лопустим List<ITitties> и что должен делать рантайм когда ты попытаешься туда сделать .Add(new FatRetard())?
Аноним 19/04/23 Срд 08:56:20 2675950 478
Аноним 19/04/23 Срд 10:06:44 2675987 479
>>2675945
Выглядит как бред. Я что, должен создавать НОВЫЙ экземпляр массива? Не слишком ли жирно? И в чем смысл интерфейсов?

А если у меня есть несколько списков разных типов, но я хочу сделать универсальный метод для них, внутри которого нужно просто получить индекс итема списка, то как быть тогда? Я же не могу сотни раз туда-сюда создавать новые списки?
Аноним 19/04/23 Срд 10:20:23 2675997 480
>>2675987
>Выглядит как бред
Как бред тут выглядишь только ты.
Тебе же сказали, что у тебя лист дженериковый. Ты по сути пытаешься на лету у него обобщеный параметр поменять. Так это не работает.
Ты можешь тип самого списка привести например к Inumerable<Booba> или Ilist<Booba>. Если же ты хочешь приведение для элементов сделать, то и делай его именно для элементов (по отдельности, перебором или через ToList<ITitties>)
>>2675987
>Я что, должен создавать НОВЫЙ экземпляр массива?
Либо так, либо сразу создавай список того типа который тебе нужен.
Аноним 19/04/23 Срд 10:23:19 2675999 481
image.png 20Кб, 637x107
637x107
>>2675987
Тебе же написали про ковариантность и контрвариантность
Аноним 19/04/23 Срд 15:19:45 2676256 482
>>2675945
Всё то же самое. Создается объект, указатель помещается в список.
Аноним 19/04/23 Срд 15:29:11 2676264 483
>>2676256
Очень интересно. Ты хотя бы понимаешь что в лист с Booba типом объектов ты впихнёшь элемент другого типа который вообще не приводим к Booba?

Я даже в теории не понимаю как это должен переваривать рантайм
Аноним 19/04/23 Срд 21:06:13 2676537 484
.png 24Кб, 339x272
339x272
>>2675795
Почему это не можешь?
Все ты можешь. Главное верить в себя!
Аноним 19/04/23 Срд 21:26:39 2676559 485
Аноним 19/04/23 Срд 21:27:33 2676562 486
>>2676264
Та банально.
1. Он может скастить все к обжект. Вообще 0 проблем.
2. Он может делать обертку виде {type; any} и таким образом мы бы могли делать что-то в духе list[index].As<T>();
3. Можно проиграть по памяти но так же хранить че угодно: 2 массива под капотом - один с оффсетом до элемента с индексом, второй - любой элемент. Доступ к элементу получается в 2 шага, но все еще оч быстро.

Это первое что приходит в голову за 2 минуты.
Другое дело, что List<T> - делался чтобы быть пиздец быстрым и экономным. Если надо что угодно пихать, есть ArrayList
Аноним 20/04/23 Чтв 00:37:57 2676703 487
>>2676562
>Он может
>Он может
>Можно проиграть
Он то может быть и может, только не хочет. А хочет он чтобы можно было как в каком-нибудь js - скормить языку любое дерьмо и чтобы он сам разбирал и угадывал, что там "разраб" подразумевал и хотел. Но пацанчик не в тот район забрел, у нас сильная типизация и таких тут не любят.
Аноним 20/04/23 Чтв 02:40:10 2676715 488
>>2676264
>Я даже в теории не понимаю как это должен переваривать рантайм
Элементарно. Как и всегда. Ты просто кретин и не понимаешь, что в списке хранятся не объекты, а указатели, которые все одинаковые, хоть на что указывай, похуй вообще. И даже если кроме указателей хранится еще мета-информация наподобие идентификатора типа, это тоже для всех объектов имеет одинаковый размер. В списке всегда хранится одинаковые стандартная информация, которую можно спокойно кастить во что угодно, во что захочешь, в то и касти. Если в реальности шарп не дает такую возможность, значит его писали говношлепы тупые кривожопые макаки. Технически нет никаких проблем кастить содержимое списка во что угодно, ибо он и так работает с одинаковыми данными.
Аноним 20/04/23 Чтв 03:49:01 2676728 489
>>2676715
А кто дает? Даже жава с его стираниями типов вольностей не позволяет и будет тебе ошибка. Котлин еще строже. А все потому что без этого нельзя гарантировать безопасность всех сценариев.

Шарп так бузит на список ибо у него чтение и запись T. А сидеть можно только на одном стуле (in T или out t). Потому Ilist вредничает, а вот IReadOnlyList только чтение и потому ковариантен

Конечно на уровне IL ты "царь во дворца" но это уже и не шарп
Аноним 20/04/23 Чтв 04:01:05 2676731 490
>>2676728
То был ответ на вопрос выделенный зеленой цитатой. Проблемы?
Аноним 20/04/23 Чтв 04:13:57 2676732 491
>>2676731
Дада. Я верно зашел

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

Помимо компилятора рантайм тоже должен давать некотрые гарантии безопасности (та же жава внезапно дает даже во время исполнения хотя как бы type erasure),
Аноним 20/04/23 Чтв 09:09:15 2676784 492
>>2675929
Во всех тредах поудаляли старые шапки с книгами и заменили их на тупые видосики, чтобы никто точно не вкатился.
Аноним 20/04/23 Чтв 14:33:04 2677050 493
Вот шарписты постоянно хвастаются async-await, а я вот смотрю на эту конструкцию и вообще не понимаю как она работает. Вот в голанге просто пишешь перед вызовом функции go и она запускается как горутина. Ни каких особых условий на саму функцию не накладывается. А тут прям какие-то монструозные, малопонятные конструкции и миллион ограничений.
Аноним 20/04/23 Чтв 14:41:53 2677055 494
>>2677050

async - позволяет использовать await внутри метода и создаёт стейт машину между await'ами внутри метода
await - проверяет, завершился ли метод, если да сразу возвращает результат и управление вызывающему коду, иначе меняет стейт и выполняется асинхронно и все такое
Аноним 20/04/23 Чтв 14:47:18 2677062 495
>>2676784
Похоже. А я как назло забыл закопипастить сюда старую шапку, будет время скину.
Аноним 20/04/23 Чтв 14:51:41 2677066 496
>>2677050
Ограничения в основном из-за выполнения таски потоком из пула.

Типа проблемности отлова исключения в async void, так как эксепшон заворачивается в Task. Из войда полетит в текущий контекст синхронизации и ловить их надо прям в этом методе.

Return в using, из-за возможности ГЦшки потереть нахуй все ещё до обращения к результату.

Отмена таски происходит эксепшоном(ну спасибо, нахуй, разрабы)

Остальное опционально или нахуй не нужно
Аноним 20/04/23 Чтв 15:32:46 2677125 497
>>2677066
>Отмена таски происходит эксепшоном(ну спасибо, нахуй, разрабы)
Шта
Аноним 20/04/23 Чтв 15:35:58 2677127 498
>>2677050
Потому что асинк-эвейт и раскраска функций - это антипаттерн. В сихэштеге естественно выбрали вариант сделать через жопу. В джаве поступили гораздо умнее и добавили интуитивно понятные виртуальные треды, которые прекрасно встраиваются в язык и ничего не ломают.
Аноним 20/04/23 Чтв 15:53:34 2677138 499
>>2677050
Задай себе вопрос - чем твой go отличается от того же await?
Аноним 20/04/23 Чтв 15:57:05 2677144 500
>>2677138
go не делит функции на красные и синие.
Аноним 20/04/23 Чтв 15:59:30 2677146 501
>>2677138
В go всё просто. Даже книжки по языку - это брошюрки от 100 до 400 страничек, а в сишарпе - талмуды на 1000 страниц, да ещё и двухтомные.
Аноним 20/04/23 Чтв 16:29:59 2677176 502
>>2677146
как раз в шарпе примитив - ввели абстракцию таски которую можно запустить и дождаться. В общем то эта та самая корутина.
В шарпе просто упор на абстракцию "запустить и получить объект ожидания", а "где выполняется, как выполняется, выполняется ли вообще" это уже детали реализации.

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

Таким образом ты получаешь простой и унифицированный подход - "тебе выдали (Future/Defered/Promise в других языках) и ты можешь либо соединить в цепочки вида ContinueWith (then) либо заюзать сахар await "

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

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

я го не знаю. но если я правильно понимаю ридми по go то в шарпе это экивалент Task.Run ("запусти и забудь"). ключевого слова для этого не делали (вообще мелкие очень очень очень скупые на ключевые слова (привет ConfigureAwai(false)), но суть та же.

получается не так красиво из за await но унифицировано!. Я могу работать со всем в одном стиле. Я могу обернуть в таски любые другие подходы и связать одно с другим. Например я могу спокойно превратить event в таску и связывать с другими тасками. Я могу добавить TaskCompletionSource куда то и работать с ним так же унифицировано как с таской. Все есть таска.
В других языках же мне придется явно "ага, тут нам нужен результат и значит нужен объект типа Defered и как то его дождаться же и вклинить его в мой код. И вот тут начинается "зона особых правил", которой в шарпе нет - там все работает единым подходом.
Аноним 20/04/23 Чтв 16:45:55 2677188 503
Примитивные абстракции. Абстрактные примитивы.
Аноним 20/04/23 Чтв 16:48:21 2677190 504
>>2677146
почитал по диагонали. горутины легковесные по своей природе. но по той же природе не могут возвращать результат. И если нужно его вернуть и чтобы было "по красоте", то приходится городить огород.

еще тут товарищ хвалит типа виртуальные треды в жаве. Не знаю про них (и знать не хочу ибо котлин) но...что тут сказать..."и 20 лет не прошло". Хотя ой - прошло. Когда там в шарпе await появился?!

У каждого подхода свои достоинства и недостатки. Шарп все же язык общего профиля, а го по рождению заточен под задачу - работает быстрее, но писать что то большое....ну нах.
Аноним 20/04/23 Чтв 18:06:01 2677262 505
>DevJungles
Этот чел что-то принимает перед съемкой видоса?
Аноним 20/04/23 Чтв 20:28:44 2677449 506
>>2677146
Так а что сложного в async-await в шарпе?
Реально же интересно, че там сложного. Типа промисы из JS - не сложно, а вот шарповские Task - сложно пиздец? Чи шо?
Или просто, это чтобы у тебя было в духе:
SomeMethod(callback => {
Console.WriteLine("Complete");
})
?
А рутину свою в фоне, как на тредпуле, так и без - изи можно самому сделать. Правда придется делать свой тип и там Wait метод, если надо дождаться результата, но никто не мешает. Деды так делали, пока TPL не завоевал шарповский мир.
Аноним 21/04/23 Птн 10:28:52 2677758 507
>>2677125
Он про канцелейшен токен, вероятно. Ну и многие асинхрннгые функции работаю с этим токеном, поэтому в большинстве случаев отмена авейта приведет к исключению.
И это засрет твой лог, хотя отмена в штатном режиме.
Аноним 21/04/23 Птн 12:31:42 2677825 508
2023-04-2112-11[...].png 6Кб, 332x392
332x392
Как сделать так, чтобы при обращении к классу Account напрямую, я получал свойства с типом Data, но если я обращаюсь через интерфейс IAccount, то получал свойства с типом IData? (пикрил 1)

Мне не дает реализовать интерфейс с конкретным типом Data.
Аноним 21/04/23 Птн 12:33:47 2677828 509
2023-04-2112-25[...].png 17Кб, 618x630
618x630
Аноним 21/04/23 Птн 14:13:59 2677893 510
>>2677758
А как иначе в языках основанных на исключениях?
Как еще прервать поток выполнения и гарантировать что никто выше не подумает что все завершилось штатно (на деле оно было отменено)?

Либо исключения, либо плоди Result<Error> (коды отмены). Третьего не дано. Выбор очевиден.
Исключение отмены вполне вписывается в парадигму "поток выполнения не пошел по задуманному и был прерван". И "отмена в штатном режиме" все равно означает "выполнение не пошло штатно"

Так что это из разряда спора "коды отмены против исключений".

не хочется исключения - забудь про await и работай с сырыми объектами тасок (Defered)

в шарпе, питоне, котлине и уверен в любом языке, где во главе угла стоят исключения - используется свой вариант CancelledException
Аноним 21/04/23 Птн 14:18:36 2677896 511
image.png 168Кб, 1049x753
1049x753
>>2649578 (OP)
Как же я рад, что не перевел проекты на шарп. Звоночек с кидком линуксовского гуя был тогда к месту. Смотрю вот 7 версию, а они уже выпилили поддержку win 7.

Жрите это сами
Аноним 21/04/23 Птн 14:40:47 2677908 512
>>2677896
ну так то не самая большая проблема (хоть и неприятно)
мало кому нужно делать продукт что должен работать на вин 7
Тем более что дотнет 4.8 никуда не делся и даже если бы он обновлялся, то не на вин 7
Аноним 21/04/23 Птн 14:50:43 2677912 513
Почему я не могу привести ObservableCollection<Zalupa> к
IList<IZalupa> или ICollection<IZalupa>, если Zalupa совершенно точно реализует интерфейс IZalupa?

При этом привести к IEnumerable<IZalupa> получается. И что вписывать в интерфейс, чтобы можно было редактировать итемы?
Аноним 21/04/23 Птн 14:59:33 2677920 514
>>2677912
>При этом привести к IEnumerable<IZalupa> получается
>>2676728
Аноним 21/04/23 Птн 15:03:51 2677924 515
>>2677908
>мало кому нужно делать продукт что должен работать на вин 7
Ну да, все первого января перешли на десятку же.
Не нужно с мировозрением вебмакаки что-то рассуждать.
Аноним 21/04/23 Птн 15:17:09 2677939 516
>>2677924
причем тут макака . ожидать что те кто перестали поддерживать вин 7 даже платно (исключая ембедед который тоже скоро все) продолжат его поддерживать в других продуктах...особенно если их основной посыл всех именно пересадить на новую версию винды....

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

кстати питон, который язык самого широкого профиля, тоже дропнул вин 7
Аноним 21/04/23 Птн 15:28:39 2677948 517
>>2677939
>сидишь на древнем, так забудь про новое.
Ща всем клиентам напишу это, а то хера они такие додики не бегут покупать десяточку, сейчас вот только они драва сами на десятку напишут.
Я тебе говорю, сиди в вебмакинге и не парся, к тебе с EEE позже придут.

>дотнет 4.8
А что пора слазить с кроссплатформы? Посидели и хватит?
Аноним 21/04/23 Птн 15:32:26 2677953 518
>>2677939
>кстати питон, который язык самого широкого профиля, тоже дропнул вин 7
Как раз скрипты как софт никто не распространяет, там вообще если углубиться в бинарную зависимость окажется все плохо на вин.
Аноним 21/04/23 Птн 15:34:49 2677955 519
python2.jpg 681Кб, 960x638
960x638
>>2677939
>кстати питон, который язык самого широкого профиля
Аноним 21/04/23 Птн 15:35:27 2677956 520
>>2677948
А че? Тебе нужна кроссплатформа или легаси ось и дрова и вообще кровавый энтерпрайз где никто никуда не переедет
Ты уж определись

>>2677953
Еще как распространяют. Просто ПОПУТНО могут притащить и свой питон и вынуждены писать под него не переходя на более новый
Но в общем то тут никакого отличия от твоей ситуации
Аноним 21/04/23 Птн 15:36:27 2677958 521
python2.jpg 681Кб, 960x638
960x638
>>2677939
>кстати питон, который язык самого широкого профиля
Аноним 21/04/23 Птн 15:40:59 2677964 522
>>2677956
Зумерок услышал слово легаси.
4 месяца - легаси!
И вообще вместе с софтом распростроняй установщик десятки. Хера нудишь.
Аноним 21/04/23 Птн 15:43:40 2677967 523
>>2677956
>Еще как распространяют. Просто ПОПУТНО могут притащить и свой питон
Установка однокласснику питона, чтобы твоя лаба запустилась, это не совсем коммерческое распространение софта.
Аноним 21/04/23 Птн 15:47:50 2677973 524
>>2677964
4 месяца статуса "вообще забыть нужно"
а легаси это "больше не рекомендуется использовать, вот вам новое".
И этому никак не 4 месяца.

>>2677967
Какая еще установка. Ну да, есть распространение через pypi, но обычно софт упаковывается в ехешник пиинсталлером или py2exe и прочим подобным. И там внутри помимо твоей проги и дистр питона.
Аноним 21/04/23 Птн 15:48:54 2677975 525
В бейсике, я под каждый реализуемый метод или свойство интерфейса,
должен явно пометить соответствующий заголовок. К примеру:
Property ZalupaKonya As Zalupa Implements IZalupy.ZalupaKonya

Поэтому название свойства может не совпадать с названием свойства интерфейса.
Property QWERTY As Zalupa Implements IZalupy.ZalupaKonya

А как с этим в шарпе? Как детектируется нужное свойство? По имени?
Аноним 21/04/23 Птн 15:52:53 2677980 526
image.png 102Кб, 300x300
300x300
>>2677973
>но обычно софт упаковывается в ехешник пиинсталлером или py2exe и прочим подобным
Стой, подожди, ты только сказал ставят свой питон. Ты реально сейчас загуглил и пытаешься показаться умнее?
Аноним 21/04/23 Птн 15:54:03 2677983 527
>>2677975
дичь какая то в бейсике тогда
конечно по имени
ведь интерфейс как бы и задает именование которое должно быть реализовано. Давать возможность менять имя - стрелять себе по ногам. Если же конфликт имен есть, то есть явная реализация интерфейса

string IZalupaKonya.ZalupaKonya { get; set; }
Аноним 21/04/23 Птн 15:54:53 2677984 528
>>2677980
>ты только сказал ставят свой питон
покажешь где я написал слово СТАВЯТ?
Аноним 21/04/23 Птн 16:04:51 2677995 529
image.png 31Кб, 220x165
220x165
>>2677984
>п-п-притащить свой питон это не с-с-ставить! Слышишь!?

Четырех месячное легаси у него, лол. Как ты с таким интеллектом капчу проходишь?
Аноним 21/04/23 Птн 16:10:24 2678000 530
>>2677995
>п-п-притащить свой питон это не с-с-ставить! Слышишь!?
да. притащить не значит ставить
даже дотнет позволяет упаковать свое приложение в один ехешник вместе с рантаймом дотнета и запускать его на системе без дотнета

<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>

или это ты тоже назовешь "установкой дотнета"?

>Четырех месячное легаси у него, лол
это не у меня 4 месяца легаси. не тупи, капчепроходец )
Аноним 21/04/23 Птн 16:22:19 2678010 531
>>2677983
В теории это мне позволило конкретизировать свойство, если я обращаюсь напрямую к классу, но при этом у меня есть обобщенность в виде интерфейса. Мне кажется это плюсом.
Аноним 21/04/23 Птн 16:37:40 2678022 532
>>2678010
ну ок.принимается. это сахар для экономии кода.
в шарпе решили не сахарить. шарп очень жадный на сахар. Это по сравнению разве что с жавой он сахарный.
Аноним 21/04/23 Птн 19:26:37 2678137 533
>>2677896
Так а какую альтернативу ты предложишь в случае заводов, допустим, где с самого начала либо C# либо C++ CLI, и за 20 лет столько кода написано, что просто ебнешься переводить на что-то открытое. Проще таки обновить винду и допилить софт под новый стандарт.
Аноним 21/04/23 Птн 19:41:38 2678152 534
2023-04-2118-58[...].png 34Кб, 674x444
674x444
2023-04-2118-48[...].png 18Кб, 636x432
636x432
>>2678022
А как в шарпе это разруливается?

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

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

Проблема передать вьюмодель в свойство. Допустим я делаю дженерик класс ViewModel<Document> и ViewModel<Page>

Если я захочу передать в свойство, которое выглядит так
public ViewModel<INode>? CurrentViewModel { get; set; }
То я получу ошибку. Я не могу менять тип.

Интерфейс я не смогу использовать, потому что нет подходящего интерфейса для ObservableCollection, позволяющего редактировать коллекцию.

И казалось бы, ситуация очевидная, а вот хрен.
Аноним 21/04/23 Птн 20:10:59 2678182 535
.png 69Кб, 549x777
549x777
.png 16Кб, 344x163
344x163
.png 2Кб, 319x60
319x60
>>2678152
Ну. Можно допустим так сделать...
Аноним 21/04/23 Птн 20:13:47 2678185 536
>>2678182
Блин. Я в последнее время гляжу на код, который генерирует моя башка и думаю, вот на кой хуй я сам-то на шарпе кодю, если постоянно пытаюсь его наебать? Пиздец меня это вымораживает. Все ебучий опыт ЖС с его гибкостью и удобством. Хочу бладь на ЖС писать бекенд.
Аноним 21/04/23 Птн 20:38:29 2678208 537
Как хранить последовательность действий? Вот есть паттерн команда, и я вижу джва варианта: отдельный класс, в котором будет храниться список команд в нужно последовательности, либо же каждая команда будет содержать в себе ссылку на предыдущую, образуя таким образом односвязный список. Что выбрать?
Аноним 21/04/23 Птн 20:42:30 2678212 538
Как угнаться за темпом выхода новых версий? Начинал с дотнета 5, а скоро уже 8 выходит, но я до сих пор старые не выучил, а надо уже новые учить.
Аноним 21/04/23 Птн 20:43:55 2678215 539
>>2678208
Через паттерн Pipeline
Аноним 21/04/23 Птн 20:46:01 2678217 540
>>2678208
Делай как завещали нормальные люди:
Каждое следующее состояние - это информация об изменении предыдущего.
Ну. Т.е. примерно так:

StateA - твое начальное состояние
StateB = StateA + Midificator1
StateC = StateB + Modificator2
Все просто. Всегда можно повторить. Можно двигаться в любом направлении, как вперед так и назад.
Аноним 21/04/23 Птн 20:52:16 2678220 541
>>2678182
Блин, идея указывать два дженерик типа мне тоже приходила в голову, но мне показалось это слишком грязным. Ну раз мысли сходятся, то придется юзать это. Спасибо, за уделенное время :3
Аноним 21/04/23 Птн 20:55:01 2678224 542
Почему SharpDeveloper больше не развивается? Последний апдейт в 2016 вышел. Насколько знаю, на маках именно его взяли за основу VS for mac
https://www.youtube.com/watch?v=xk4Y7z_8vbU
Аноним 21/04/23 Птн 21:00:32 2678227 543
>>2678224
Разрабы на него забили, вот и не развивается.
Аноним 21/04/23 Птн 21:07:14 2678237 544
>>2678227
А разве их микрософт не купила?
Аноним 21/04/23 Птн 21:12:16 2678241 545
>>2678208
>Как хранить последовательность действий?
Ты имеешь ввиду историю действий? Я хранил в стэке - списке, который при получении итема его автоматом удаляет. Собственно было два таких стека - один Undo, другой Redo. При команде Undo я извлекал последний итем списка Undo и помещал в список Redo. И наоборот.

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

К примеру мне нужно сгруппировать объекты — это по сути три мелких команды: создать папку, переименовать папку, переместить итемы в папку. Соответственно что бы я не отменял, у меня будут ровно те условия, которые мне нужны на текущем этапе. Не будет такого, что папка внезапно будет с другим именем или она отсутствует.
Аноним 21/04/23 Птн 21:15:23 2678242 546
>>2678152
я не люблю рефлексию потому использовал бы интерфйес IViewModelWithEditableItems и уже в нем методы которые бы дергала команда
Аноним 21/04/23 Птн 21:17:29 2678245 547
>>2678237
А майкрософт не может забить? Один баг для бейсика они не могут пофиксить пять лет.

Капча: ша.ка
Думаю "хм, наверно речь идет о шапке", оказывается имелась ввиду "шавка".
Аноним 21/04/23 Птн 21:28:57 2678253 548
>>2678242
Ты имеешь ввиду, что условные методы DeleteItems, RenameItems, MoveItems находились бы прям во вьюмодели? Чет слишком тяжело даже по меркам вьюмодели. Я щас раскидал по командам в отдельных классах и у меня все равно все засрано.
Аноним 21/04/23 Птн 21:34:26 2678259 549
>>2678253
Делагируй. сделай метод GetEditable() во вьюмодели
И вьюмодель полегчает
Аноним 21/04/23 Птн 22:00:38 2678278 550
.jpg 139Кб, 1000x1505
1000x1505
Помогите мне. Пожалуйста.
Вопрос не про шарп, а про моделирование объектиков.

В общем. Есть ряд устройств. Тысячи их.
Я хочу ПО, которое бы собирало со всех этих устройств нужное мне.
Мне, как пользователю - не интересно, что тут модбас-снмп-или MQTT, мне интересно, условно влажность воздуха, включена лампочка чи нет, ну и температура, допустим.

Ну так вот. Какие я вижу способы абстрагироваться от желеязки.
Я выделяю такие вот сущности:
Data - ДАННЫЕ, которые нужны пользователю.
DataChannel - абстракция, которая должна как-бы для приложения символизировать поток данных, который идет от устройства уже в виде который пользователю нужен
Channel - абстракция, которая содержит в себе уже более близкую информацию к устройству: тип данных, формула для приведения и т.д.
CommunicationLine - тута мя прчем уже специфичные для протокола данные: номера регистров, как мы их соотносим с данными
Device - абстракция над устройством, получает драйвер, устанавливает соединение, держит его, если надо, периодически дергает из CommunicationLine сущности, и отдает их ей, чтобы вверх пошло
Ну и где-то снизу - DataCollectorEngine, который читает конфигурацию, строит всю эту модель и начинает опрашивать устройства в зависимости от настроек.

Ну так вот. Это должно работать.

Но у меня возникает вот какая проблема. Смотрите. Есть большой список устройств, в которых протоколы задумывались дохуя эффективными, в духе: открыть соединение и серануть сразу большой запрос, чтобы большой ответ получить одним запросом. Ну дык в этом и проблема. Если мы делаем как я выше описал, наш движок - должен думать в контексте Data и посылать вниз запросы, которые распарсятся к конкретному протоколу из конфигурации и потом устройству улетят. Но это пиздец неэффективно для того же SNMP, где я могу разом считать дохуя всего одним Bulk-запросом.
С другой стороны - так проще и так добавление поддержки нового устройства будет заключаться просто в написании dll которая все что надо умеет. Пара DeviceImpl и DeviceDriverImpl и все, кайфуем.

В общем. Рассудите меня. Как быть? Что делать? Может быть какие-то лучшие решения или вообще, моя модель - хуйня и я вообще долбоеб?
Аноним 22/04/23 Суб 08:01:14 2678392 551
Хочу вкатиться на фулстак или на крайний на бэкенд сишарповский. Так вот вопрос, везде где сишарп используется ангулар на фронте? А то я учил реакт на фронте. С реактом пошлют нах? Стоит ли дрочить ангулар или потратить это время лучше на изучение сишарпа?
Аноним 22/04/23 Суб 08:38:07 2678396 552
>>2678392
> Хочу вкатиться на фулстак
Нахуя? Чтобы работать в 2 раза больше а получать столько же?

А по остальному посту. Коротко. Че конкретно где используется - зависит от того, че в свое время бизнесу продали те разрабы, что были там в тот момент.
Кто-то продал веб-формы и они столько лет работали, их не трогает никто.
Кто-то продал MVC - оно работает, потихоньку пилят.
Кто-то продал блазор.

Подытожив. Фуллстек - это неабка. Причем проигрывают все. Бизнес думает, что сэкономил - наняв как-бы 2 человек по цене одного, а получает хуйлушу, который ни там ни тут нормально не разбирается. Ты, чтобы все успевать - занимаешься скоростным копипастом, не имея возможности даже нормально разобраться. В итоге - задачи валятся, через 4 года ты только-только будешь подходить по знаниям к мидлу что с одной, что с другой стороны. Так что не страдай хуйней. Попробуй то, попробуй это. Че больше нравится - то и начинай качать. Иначе - проебешь время, силы, деньги. Оно тебе надо? Не надо.
Аноним 22/04/23 Суб 08:56:09 2678399 553
>>2678396
Я понял твою мысль и в общем-то согласен. Я немного сумбурно выразился, попробую поточнее. Я в целом готов пойти как на фронта так и на бэка. Фронт я более менее подучил. Бэк знаю слабо. Буду ближайшее время искать работу фронтом. Но уже заранее готовлюсь к тому что у меня это может не получиться учитывая популярность фронта и большую армию джунов и вкатышей. Поэтому хочу еще бэк подучить чтобы были еще варианты. Сишарп понравился. Посмотрел вакансии там берут джунов фулстеков в моем городе. Вот я и подумал что буду откликать по отдельности на бэк или фронт но если выбирать не приходится и предложат фулстаков или это как-то увеличит мои шансы на поиски работы фронта и бэка по отдельности то я бы хотел использовать эту возможность
Аноним 22/04/23 Суб 09:30:16 2678402 554
Почему сишарп не поддерживает восьмиричную систему счисления? В джаве и голанге она поддерживается, а в сишарпе почему-то нет.
Аноним 22/04/23 Суб 09:41:51 2678407 555
>>2678402
Я так понимаю ты про ввод? Всё просто - юзлесс сахар. Отсутствие префикса для них не накладывает никаких ограничений
Аноним 22/04/23 Суб 09:45:59 2678409 556
>>2678407
Я про литералы типа 0777 с ведущим нулём или хотя бы 0o777, чтобы удобно задавать права доступа к файлам.
Аноним 22/04/23 Суб 11:51:04 2678469 557
.jpg 47Кб, 266x624
266x624
Есть приложение, на шарпе. Оно - tcpшный сервер, не важно для каких целей.
Когда все начиналось - сразу было требование, к этому серверу сделать веб-морду в виде SPA-приложения.

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

И вот тут-то я чет кхм. Дааааа.
Просто из-за того что изначально это не задумывалось - для простоты - сразу в контроллере дергали че надо от сервера.
Теперь вот.

Вопрос вот в чем. Сколько приблизительно должен занять рефакторинг этого дела? Просто когда я думаю об этом - мне кажется, что не меньше года, тем более что в одно рыло же пилил. С другой стороны - я старался чтобы не так связно было. Код из контроллеров - можно в какой-то класс вынести, типа TcpServerFacade. Но с требованием с одной мордой сразу за несколькими серверами следить, кажется, что правильнее будет придумать свой протокол и сделать клиент для сервера, который будет уже дергать апишка.
Не знаю. Сложненько чет.
Аноним 22/04/23 Суб 12:13:31 2678484 558
>>2678137
Вы уже на игле, это я радуюсь за себя, что на воодушевление маркетингового буллшита, чуть не попал в тотальный вендерлок
Аноним 22/04/23 Суб 13:19:16 2678542 559
>>2678484
>не попал в тотальный вендерлок
98% разрабатываемых сегодня в мире GUI - это тотальный вендорлок на гугл, его хром или андроид.
Аноним 22/04/23 Суб 13:30:42 2678556 560
>>2678469
> Сколько приблизительно должен занять рефакторинг этого дела?
Отделить морду и добавить обнаружение даю план тайм до недели
Аноним 22/04/23 Суб 13:47:35 2678566 561
>>2678484
Ну тем кто на острие тем норм. Если бы еще мелкие делали полезные фичи, а не ерунду
Аноним 22/04/23 Суб 13:56:36 2678571 562
>>2678566
Из сомнительных фич только дефолтную реализацию в интерфейсах помню
Аноним 22/04/23 Суб 14:14:45 2678591 563
>>2678571
Они не делают нужные штуки распыляясь на ерунду
required сделали на версию позже
С !! что вообще?
ConfigureAwait годами висит issue
Вон будут фрозен коллекции (спустя столько лет то и потому костыль но хоть так) где фрозенлист???
Контракты похерили ибо делали жопой... Ну сделайте прямыми руками что ли.
Дайте возможность расширить статики
Где типизированные специальные коллекции? Что за дичь вообще с коллекциями в шарпе.

Про косяки что уже и не исправить я вообще молчу
Аноним 22/04/23 Суб 15:23:22 2678644 564
>>2678591
>распыляясь на ерунду
Они сделали обобщённую математику, и это действительно мощная фича.

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

>С !! что вообще?
Это странная фича, и она на мой взгляд будет не согласованной с nullable нотацией, когда если нет ?, то сущность почти гарантированно не нулл. Кроме того, при некорректном обращении к нулл, экспшн и так будет кинут.

>где фрозенлист?
ImmutableArray?
ReadOnlyMemory?

>Дайте возможность расширить статики
Экстеншены - это дурнопахнущий стиль. Код читать не возможно.
Кроме как для кастрированных по сравнению с джавой енумов, оно нигде не оправдано.
Аноним 22/04/23 Суб 15:43:48 2678657 565
>>2678644
>Они сделали обобщённую математику, и это действительно мощная фича.
а еще сделали main без programs...


>при некорректном обращении к нулл, экспшн и так будет кинут
ага. и будет поломан стейт.
А чтобы не поломать стейт...проверяйте аргументы. то есть if(is null) throw
то есть !!
А нулабле нотация вообще не причем - она не более чим хинт. Причем частенько тупящий на ровном месте. Аттрибуты из Diagnostics немного помогают, но именно что немного.

>ImmutableArray?
фрозен != иммутабле. Абсолютно разная реализация, потребление памяти и перфоманс.

> ReadOnlyMemory?
Имеет свой апи. Никак не соотносится с IReadOnlyList.

>Экстеншены - это дурнопахнущий стиль. Код читать не возможно.
ножом можно убить, запретим ножи - будем резать вилкой )
всему свое применение.
посмотри на банальный Dictionary. Там нет банального GetOrAdd(key, Func<T>). И куда ты будешь это добавлять? в хелпер что ли? экстеншены отлично решают такую тупость. И такого очень очень много

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

(оффтоп - в котлине экстеншены вообще юзаются на полную. и с помощью скоупов (в шарпе их нет) делегатов пропертей (опять же их нет в шарпе) и необязательности классов (в шарпе нет) создается очень читабельный и крутой DSL что шарп нервно курит в сторонке)
Аноним 22/04/23 Суб 16:06:45 2678685 566
>>2678644
>ImmutableArray
ну ладно я глянул его реализацию. оказалось что оно не на связанных списках, а тупо array с копированием, от чего я немного ШТААА

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

викторина от капчи просто убивает: Б?ТИ(Е). вот что это (цензура)
Аноним 22/04/23 Суб 16:24:12 2678700 567
>>2678685
> викторина от капчи просто убивает: Б?ТИ(Е). вот что это (цензура)
Бытие. Книжки вообще не читаешь?
Аноним 22/04/23 Суб 16:37:41 2678710 568
>>2678700
е было написано очень бледно-зеленое на зеленом.
Так что решал я изначально Б?ТИ
Я предположил что оно относится к слову только после того как капча сменилась. Потому и написал его в скобках и отправил пост.

Зачем подкручивать разность цветов до еле читабельного если ботам плевать на эту разницу, а человек страдает.
Аноним 22/04/23 Суб 16:40:58 2678711 569
show.png 14Кб, 270x120
270x120
>>2678700
>Книжки вообще не читаешь?
а эту реши
Аноним 22/04/23 Суб 16:50:42 2678719 570
Ебаное Поле чудес.
Аноним 22/04/23 Суб 20:43:37 2678842 571
20230422.png 61Кб, 797x650
797x650
Сап, двощ.
Есть один GridView с TextBox для ввода и кнопочка "Добавить".
На TextBox'ах висит Validator.
Подскажи как на клиентской стороне блокировать кнопку пока валидатор не скажет что все збс?
Правильно ли я полагаю что без жаваскрипта не обойтись?
Полоумный поисковик предлагает решения типа пикрелейтед, но при выполнении ругается на НуллПоинтерЭкспешин при обращении к кнопке из скрипта(возможно она еще не создана в момент вызова, я хуй знает про этот жизненный цикл страницы).
Аноним 22/04/23 Суб 20:46:36 2678844 572
>>2678842
Оно тебе точно нужно? Может ну его нахуй эти формы асповские?
Аноним 22/04/23 Суб 20:54:38 2678849 573
>>2678844
Подрядчик выкатил решение с интерфейсом в вебприложении на аспнете.
Аноним 23/04/23 Вск 16:25:37 2679299 574
8b0c6659c87ea99[...].jpg 86Кб, 500x383
500x383
глупый.png 11Кб, 275x119
275x119
>>2649578 (OP)
Двач, что значит вот эта ебола:

int i = float > float ? 1 : -1;

?

Типа если один из флоатов больше то инт равен -1 или 1?

При Сталине такой ухни не было!
Аноним 23/04/23 Вск 17:04:56 2679317 575
>>2679299
Это не скомпилится. Как ты собрался сравнивать типы данных? Раз на то пошло, float не может быть больше float, потому что он равен ему.
Аноним 23/04/23 Вск 17:10:56 2679328 576
олень.png 10Кб, 276x124
276x124
>>2679317
Подставь рандом флоат вместо слова "флоат"
Аноним 23/04/23 Вск 17:13:20 2679333 577
>>2679317
Вопрос про синтаксис "> ? :" был. Который, представь себе - не гуглится.
Аноним 23/04/23 Вск 17:17:15 2679338 578
>>2679333
Конечно могу представить, нахуя гуглить то, о чём в первой главе любой книги пишут. Называется тернарная условная операция.
Аноним 23/04/23 Вск 17:20:26 2679341 579
>>2679338
Книги для задротов.
Аноним 23/04/23 Вск 17:41:30 2679367 580
Есть класс, наследующий базовый класс:
public class TestCommand<T> : BaseCommand<IViewModel<T>>
{
}


этот базовый класс реализует интерфейс IBaseCommand
public class BaseCommand<T> : IBaseCommand<T>
{
}


Чому я не могу добавить экземпляр команды в список типа IBaseCommand
var myCommand = new TestCommand<Document>();
var commands = new List<IBaseCommand<DocumentViewModel>>();
commands.Add(myCommand);


Ошибка:
System.InvalidCastException: "Unable to cast object of type 'MyApp.TestCommand`1[MyApp.Document]' to type 'MyApp.IBaseCommand`1[MyApp.DocumentViewModel]'."

Но сработало бы, если бы я первое написал так
public class TestCommand<T, V> : BaseCommand<V> where V : IViewModel<T>
{
}



В чем магия?
Аноним 23/04/23 Вск 17:46:09 2679372 581
>>2679367
У тебя List<TestCommand> должен быть.
Аноним 23/04/23 Вск 17:54:02 2679387 582
>>2679367
Каждый день кто то влетает с жалобами на каст джинериков и каждый день ответ ковариантность и контрвариантность
Аноним 23/04/23 Вск 18:48:41 2679453 583
>>2679372
У меня будет куча команд разных типов. Мне надо как-то их все хранить в одном списке, поэтому я создал интерфейс IBaseCommand<T>. Ну, понятно, что мне не нужен Object, мне надо с этим дальше работать.

>>2679387
Я прочитал про ковариантность и контрвариантность, но я так и не понял почему вот это
public class TestCommand<T> : BaseCommand<IViewModel<T>>
{
}

Совершенно не то, что это
public class TestCommand<T, V> : BaseCommand<V> where V : IViewModel<T>
{}
Аноним 23/04/23 Вск 19:13:36 2679469 584
>>2679453
У меня есть подорзрение, что ковариантность тут не при чем, а дело в том, что в во втором варианте тип указан конкретный IViewModel<T>, в то время как V as IViewModel<T> обобщенный.
Аноним 23/04/23 Вск 22:05:49 2679614 585
image.png 9Кб, 270x120
270x120
>>2679387
И что характерно, подобные вопросы идут в основном от десктопщиков, пытающихся какими-то хитровыебаными способами прокинуть данные в UI или обратно.
По крайней мере вопросов от бэкендеров, вроде "я тут хотел гланды через, жопу удалить, но у меня A<B> не кастится к <D>", на порядок меньше.
Аноним 23/04/23 Вск 22:08:08 2679618 586
>>2679614
>десктопщиков
десктопщиков и фулстекеров
Аноним 24/04/23 Пнд 00:25:07 2679660 587
>>2679614
>Что характерно, вопросов проблеме о сохранения заряда аккумуляторов в теплых странах меньше, чем в холодных.
Очевидно потому, что на севере живут криворукие уебаны.
Аноним 24/04/23 Пнд 09:00:27 2679732 588
Этот ваш visual studio 12 гигов занимает. Стоит ли учиться на нем или хватит studio code?
Аноним 24/04/23 Пнд 09:09:16 2679738 589
>>2679732
Учебные хеллоуворлды можно хоть в виме писать.
Аноним 24/04/23 Пнд 10:11:43 2679759 590
>>2679732
В зависимости от того для чего ты учишься. Если планируешь потом где-то работать, то придется знать либо студию либо райдер. Так что, хоть что-то да придется устанавливать.
Ну и 12 гигов студии - это фигня с тем, что тебе может еще понадобится установить для разработки. У тебя одних докер контейнеров гигов на 20...30 может быть или БД всяки. Поэтому покупай себе максимально возможный дисковый объем иначе вместо нормальной разработки постоянно страдать будешь.
Аноним 24/04/23 Пнд 10:14:33 2679762 591
>>2679759
Да я планирую работу потом найти, вкатиться то бишь. Жестко конечно, придется сериалы и прочее говно удалить с ноута.
Аноним 24/04/23 Пнд 14:18:09 2679941 592
>>2679759
А если я попрошу рабочий пк с линукс то будут проблемы? Вообще у нас импортозамещение же, какая вижла, какой виндовс нах
Аноним 24/04/23 Пнд 14:24:43 2679951 593
У МЕНЯ ПРОСТО КРЫША УЖЕ ЕДЕТ НАХУУУУУУУУЙ
Вот код
int pageIndex1 = 0;
DocumentPage page;
// Выполняем цикл, вызывая GetPage() до тех пор, пока не вернется null
do
{
page = GetPage(pageIndex1);
pageIndex1++;
} while (page != null || pageIndex1 != 350);

Тут ПРОСТО надо выйти из цикла, когда page будет null ИЛИ когда pageIndex1 будет 350. НО ОНО НЕ ВЫХОДИТ, БЛЯТЬ. page становится null уже где-то на 100 индексе, но не выходит, пока pageIndex1 не будет 350. КАК?! Сука, там же ИЛИ, а не И! Просто пиздец, я над какой-то ебанистикой сижу уже час, нахуй
Аноним 24/04/23 Пнд 14:33:14 2679961 594
>>2679951
Ну вот у тебя и работает до момента "ИЛИ СТРАНИЦА НЕ 350" то есть похуй что у тебя налл потому что ИЛИ.
Твой цикл выйдет ТОЛЬКО когда страница 350 И пэйдж налл.
Аноним 24/04/23 Пнд 14:38:03 2679968 595
>>2679961
Ты разницу между И и ИЛИ понимаешь? При или нихуя не должно ждать до тех пор пока оба условия выполнится, а должно выходить, когда выполняется хотя бы одно. Этого не происходит. То что ты говоришь это И
Аноним 24/04/23 Пнд 14:58:08 2679999 596
>>2679968
Цикл продолжается покуда результат условия true. Твоё же условие true пока page != null ИЛИ pageIndex1 != 350

Видит бог я пытался. Последняя попытка. Если ты не понял и не троллина клятая то лучше почитай мат логику
Аноним 24/04/23 Пнд 15:19:03 2680019 597
>>2679999
Бля, всё, зря быканул, я не прав. Столько лет использовал условия эти и никогда не тупил так
Аноним 24/04/23 Пнд 17:20:24 2680119 598
>>2679941
Зависит от того где и на кого ты будешь работать.
Возможные варианты.
1) Работаешь со своим ноутом. Работаешь как хочешь и с чем хочешь. Единственное, что обычно нужно vpn настроить и рабочие месенджеры/почту.
2) Выдают рабочий ноут на котором можно работать как на своем. Просто если сломаешь - отдаешь работодателю бабки.
3) Выдают рабочий ноут, но он настроен как нужно и поставить туда, что-то не из списка - большой геморрой.
4) Удаленная машина. Комп стоит в офисе, либо в ферме, либо вообще виртуалка. Подключаешься удаленно и работаешь. Тут обычно как в 3-м пункте. Большая часть софта только из одобренного списка, что-то новое только по заявкам и/или через безопасников. Тут тоже могут выдать ноут, но слабенький исключительно для подключения к удаленке. На этом ноуте можно уже что угодно ставить, но смысла нет.

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

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

>>2679941
>Вообще у нас импортозамещение же, какая вижла, какой виндовс нах
Телевизор меньше смотри.
Аноним 24/04/23 Пнд 17:42:29 2680155 599
>>2679951
>pageIndex1 != 350
Херовая практика на граничные условия ставить != вместо >= или <=
Аноним 24/04/23 Пнд 17:47:19 2680161 600
>>2679941
По большому счету, абсолютно похуй на чем и чем ты кодишь. Главное чтобы твой конечный продукт заводился и работал на той/тех системах которые указаны в ТЗ.
Но если твоя рабочая тачка обязана находится в каком-либо контуре, то тут уже все зависит от того, что прописано в требованиях у безопасников. На чем они скажут, на том и будешь работать.
Аноним 24/04/23 Пнд 18:00:12 2680175 601
>>2680019
Условие "или" всегда с подвохом.
Аноним 24/04/23 Пнд 18:01:10 2680176 602
>>2679367
А List<IBaseDocument<IViewModel<Document>>> не прокатит разве?
Аноним 24/04/23 Пнд 18:15:22 2680198 603
Подскажите можно ли через dotnet-symbol загрузить pdb с SMB-шары? В доках msdn про это не написано, и я теперь хз как их вытягивать нормально в моем случае. Поверх http раздачу pdb в мойе галере еще не настроили
Аноним 24/04/23 Пнд 18:32:47 2680217 604
Аноним 24/04/23 Пнд 18:38:54 2680226 605
Аноним 24/04/23 Пнд 18:39:36 2680227 606
>>2680226
> смайнтить
смаунтить
Аноним 24/04/23 Пнд 21:10:13 2680379 607
>>2680176
Точняк, вот я остолоп.
Аноним 24/04/23 Пнд 21:18:58 2680386 608
>>2680176
>>2680379
Хотя не, я понял почему не юзал. Дело в том, что некоторые команды у меня выглядят так
public class TestCommandB : BaseCommand<DocumentViewModel>
{}

И тогда будет конфликт с этими командами. А вариант с двумя дженерик типами работает и так и эдак.
Аноним 24/04/23 Пнд 22:28:54 2680440 609
>>2680226
Спасибо. Попробую завтра такое сделать
Аноним 25/04/23 Втр 07:12:52 2680522 610
Бля, в вакансии требуют asp.net mvc 5, а я его оригинально и учил до .net core
Стоит соваться туда вообще, мне подтянуть знания по mvc 5 вроде как не большая проблема, но страшно, бля.
Аноним 25/04/23 Втр 11:34:18 2680669 611
>>2680522
Сначала спроси зачем они его знание требуют?
Если вариант взять старый софт и переделать на новый стек, то вполне можно попробовать.
Если же исключительно поддержка старого говна - то нахуй. Такая вакансия ни новичку, ни опытному ничего не даст.
Аноним 25/04/23 Втр 14:29:21 2680822 612
Надо ли хорошо знать фронт, чтобы устроится сишарп-программистом? И какой фреймворк учить: ангуляр или реакт?
Аноним 25/04/23 Втр 14:30:32 2680823 613
>>2680669
Это вакансия на джуна вообще, сегодня повторю model binding и validation и авторизацию и завтра с ними попытаюсь связаться, чисто на удачу, конечно.
Не получится, после 10 мая буду еще искать.
Аноним 25/04/23 Втр 14:58:29 2680848 614
Я чет вот что забыл.
Как там линку работает?

Вот допустим, у меня есть массив object'ов

Если я сделаю так: arr.Wher(x => x is User).Select(x => x as User), линку сначала отфильтрует а потом выберет, либо будет применять фильтр при селекте?

Ну. Т.е. как будет
Так :

IEnumerable<object> a(IEnumerable<object> arr)
foreach(var it in arr)
{
if(it is User) yield return i;
}
IEnumerable<User> b(IEnumerable<object> arr)
foreach(var it in arr)
{
yield return it as User
}

или :
IEnumerable<object> a(IEnumerable<object> arr)
foreach(var it in arr)
{
if(it is User) yield return it as User;
}
Аноним 25/04/23 Втр 15:05:55 2680866 615
>>2680822
Ну уровне - ты знаешь что такое HTML, можешь назвать 3 самых популярных браузера, знаешь где фронт и бек пересекаются.
Аноним 25/04/23 Втр 15:08:39 2680869 616
>>2680848
> линку сначала отфильтрует а потом выберет, либо будет применять фильтр при селекте?
Вся цепочка будет проходить для каждого элемента по мере запрашивания элементов. Гугли IEnumerable
Аноним 25/04/23 Втр 15:09:48 2680871 617
>>2680848
Не прикладывай код к посту один хуй его никто не будет читать в таком виде
Аноним 25/04/23 Втр 15:52:44 2680928 618
Сейчас смотрю старый курс Александра Шевчука и как же всё было лампово в 2012. Ставишь вижлу и можешь любую прогу спрограммировать. А сейчас напридумывали всякой параши вроде докеров, кубернетисов всяких, надо миллион прог всяких ставить.
Аноним 25/04/23 Втр 16:01:49 2680944 619
>>2680848
будет применять фильтр при селекте

вообще все работает для каждого элемента если в цепочке нет элементов где нужна полная материализация. Например GroupBy ты не можешь сделать без полной материализации.
Аноним 25/04/23 Втр 16:05:03 2680948 620
>>2680928
И сейчас можно писать что угодно. Докер/кубы это про распространение, но ты можешь поискать контору где каждый разраб ходит и руками по фтп раскатывает на виндовый сервак бинари под фреймворк 3,5.
Лично я бы не захотел туда идти
Аноним 25/04/23 Втр 16:39:47 2680993 621
>>2680948
>Лично я бы не захотел туда идти
Почему? Круто же и с дедами можно пообщаться.
Аноним 25/04/23 Втр 16:53:03 2681004 622
>>2680993
приходишь, а там такие же как ты...аааа
А где деды? А они свалили с такого проекта, не жависты же, вот и приходится нанимать хоть кого то на замену
Аноним 25/04/23 Втр 17:04:08 2681015 623
Почему в сишарпе используется UTF-16? Там же всё равно все символы не влазят, потому что уже есть символы по 4 байта, но в то же время чаще хватает 1 байта на символ. Следовательно UTF-16 избыточный и жрёт в 2 раза больше памяти.
Аноним 25/04/23 Втр 17:07:42 2681017 624
Аноним 25/04/23 Втр 17:11:44 2681023 625
>>2681015
Если ты экономишь каждый байт, ты явно выбрал не тот язык.
Аноним 25/04/23 Втр 17:20:27 2681032 626
>>2681015
так сложилось исторически.
из-за совместимости с VB который юзал тогда BSTR, который по факту UCS-2 с префиксом длины, который поддерживался в NT и таким образом работал с COM/OLE, потому что строки utf-8 трудно индексировать и вообще нужно работать особым образом. позже это все переросло в UTF-16 (после изобретения стандарта)

потом родился шарп и ему ему ж тоже нужно работать с COM/OLE/Automation и существующим кодом VB и потому выбора и не было.
Аноним 25/04/23 Втр 17:21:56 2681034 627
>>2681032
А я думал, что они тупо скопировали с джавы, в которой тоже UTF-16
Аноним 25/04/23 Втр 17:23:45 2681040 628
>>2681023
Я хотел программировать на голанге, но мне сказали учить прежде РНР или сишарп.
Аноним 25/04/23 Втр 17:24:25 2681041 629
Аноним 25/04/23 Втр 17:24:49 2681042 630
>>2681041
В голанг-треде сказали
Аноним 25/04/23 Втр 17:28:40 2681046 631
>>2681041
Я сказал

>>2681040
Ты и сюда протек, пидорасина ебаная
Аноним 25/04/23 Втр 17:31:06 2681049 632
>>2681040
А я тебе говорю, что перед шарпом сначала учи PHP.
Аноним 25/04/23 Втр 17:33:15 2681053 633
>>2681049
Чтобы быть как Михаил Флёнов, который в Канаде сначало программировал на РНР, а когда получил гражданство, то смог перекатиться в сишарп?
Аноним 25/04/23 Втр 17:39:10 2681065 634
>>2681053
Да. И затем, спустя какое-то время программирования на шарпе, можно вкатиться в го.
Аноним 25/04/23 Втр 17:42:20 2681070 635
>>2681065
Почему так несправедливо? Ведь я уже умею программировать на голанге, но должен изучать ещё кучу всяких языков?
Аноним 25/04/23 Втр 17:54:16 2681080 636
>>2681070
Это ты только сейчас думаешь, что умеешь.
Аноним 25/04/23 Втр 17:54:56 2681081 637
show.png 9Кб, 270x120
270x120
Куда лучше вкатиться, в раст или шарп, на вакансии пофиг?
Аноним 25/04/23 Втр 17:55:05 2681082 638
>>2681070
НИхуя ты не умеешь ебень. Если ты думаешь что изучить синтаксис = уметь програмировать то ты ошибаешься.
Аноним 25/04/23 Втр 17:55:47 2681084 639
Аноним 25/04/23 Втр 18:02:41 2681093 640
>>2681080
>>2681082
Я написал на голанге прогу, чтобы находить старые треды для архивача
Аноним 25/04/23 Втр 18:03:57 2681094 641
>>2681084
Основной язык программирования в хозяйстве, веб, утилитки, гуи, геймдев поиграться итд.
Аноним 25/04/23 Втр 18:05:18 2681096 642
Пацы, после изучения фронта реально более менее быстро вкатиться в сишарп для бэкенда?
Аноним 25/04/23 Втр 18:05:54 2681097 643
Аноним 25/04/23 Втр 18:06:48 2681099 644
Люди, советующие изучать пхп, за что ж вы так других людей ненавидите?
Аноним 25/04/23 Втр 18:10:43 2681101 645
>>2681099
Перед изучением ПХП надо выучить питон.
Аноним 25/04/23 Втр 18:11:28 2681102 646
>>2681099
Это схуяль? Пхп современный отличный язык и работы на нем много.
Аноним 25/04/23 Втр 18:19:23 2681107 647
>>2681102
пхп конечно пытается стать как жава, но...
с огромным количеством детских болезней, которые никуда не денутся никогда (читай https://habr.com/ru/articles/142140/). И если думаешь, что "так 10 лет после этой статьи прошло. все уже не так", то ты сильно ошибаешься.

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

Это из разряда "мы не ищем легких путей". так блин поищите.
когда потом переходишь на питон, то ссышь кипятком от того как там все стройно и понятно в своей основе. Никаких тебе неявных переводов в числа, нормальные коллекции, единый подход ко всему, нормальные исключения, все ведет себя предсказуемо.
Аноним 25/04/23 Втр 19:02:02 2681131 648
>>2681107
Это мелочи. Лучше иметь работу на несовершенном языке чем быть кукаретиков на питоне и сишарпе
Аноним 25/04/23 Втр 19:09:08 2681136 649
>>2681131
то есть ты хочешь сказать, что "на го работы нет"
а на пхп и шарпе есть и поэтому и шлют учить их?

ясно.
Аноним 25/04/23 Втр 19:39:26 2681173 650
>>2681136
Сейчас работы ни на чем нет кроме 1с. На пхп есть чуток.
Аноним 25/04/23 Втр 21:04:28 2681254 651
>>2681004
>приходишь, а там такие же как ты...аааа
>А где деды? А они свалили с такого проекта, не жависты же, вот и приходится нанимать хоть кого то на замену
Кстати неплохой вариант для новичка. Приходишь такой на проект о котором никто ничего не знает и спокойно с новоприобретенными братюнями вкатунами познаешь все тонкости профессии. И предъявить вам особо никто не сможет. На все доебки можно спокойно делать "у нас же лапки", "насяльника стараемся как можем", "ты не настолько дохуя нам платишь козел, чтобы выебываться" и потихоньку пилить код. Так можно как минимум полгода-год проковырятся. И либо стать охуенным гуру, либо спокойно свалить на более другое место с хоть каким-то реальным опытом в резюме.
Аноним 25/04/23 Втр 21:05:12 2681255 652
>>2681102
Жир капает через монитор
Аноним 25/04/23 Втр 21:42:51 2681273 653
>>2681255
так не ешь перед монитором
Аноним 25/04/23 Втр 23:00:22 2681325 654
Аноним 25/04/23 Втр 23:00:50 2681326 655
Аноним 25/04/23 Втр 23:03:50 2681329 656
Сцука, лаги
Аноним 25/04/23 Втр 23:08:43 2681332 657
Аноним 26/04/23 Срд 09:01:13 2681534 658
Нужно ли читать Рихтера перед собесами? Дело в том, что встречал сишарп-программистов, которые много лет работают в этой сфере, но даже не слышали про Рихтера. Так ли он нужен?
Аноним 26/04/23 Срд 09:13:46 2681543 659
>>2681534
Первые несколько глав можешь навернуть для общего развития. Чтобы хотя бы базу разбирать. CLR от CLS и CTS отличать, ну или зачем .NetStandart нужен, основы типов и т.д. Непонятные вещи можешь по диагонали прочитывать.
Сейчас найти человека который её хотя бы до конца второй части дочитал - редкость.

Но лучше советую перед собесом краткий справочник Албахари пару раз перечитать. Там всего 300 страниц и самая мякотка выбрана без лишней шелухи.
Только это если что, по самому C# и самой платформе .net
По фреймовркам типа ASP или EF так просто не отделаешься. Там уже опыт нужен.
Аноним 26/04/23 Срд 09:20:04 2681546 660
>>2681543
>.NetStandart
Откуда Рихтер про него мог знать в 2013 году?
Аноним 26/04/23 Срд 10:04:25 2681571 661
>>2681546
Точно - проебался. Он же только про .net Framework писал, позже он ничего не выпускал. Сорян.
Аноним 26/04/23 Срд 10:58:03 2681609 662
>>2681534
А на кого собеседуешься? Честно, как-то рихтер на джуна (включая опытного) даже не понадобился
Аноним 26/04/23 Срд 12:22:07 2681659 663
Помогите советом по именованию типов для WPF.
По конвенция вью модели должны заканчиваться на ...ViewModel, то есть как-то так: ViewModels > Memes > YobaViewModel.cs
Насколько хуёво будет опустить такой постфикс? ViewModels > Memes > Yoba.cs
Ведь то, что Some.cs это ViewModel, должно быть понятно из нэймспэйса, да и если опустить постфикс, то это даёт экономию в символах - можно сделать название типа длиньше.
Аноним 26/04/23 Срд 12:23:40 2681660 664
>>2681659
И почему вообще принято добавлять такой постфикс?
Аноним 26/04/23 Срд 12:24:59 2681661 665
Аноним 26/04/23 Срд 16:16:09 2681954 666
>>2681659
>Ведь то, что Some.cs это ViewModel, должно быть понятно из нэймспэйса
Кому понятно? Неймспейсы написаны где то там в юсингах и поди разбери к кому относится.
Аноним 26/04/23 Срд 19:41:46 2682069 667
Если произошло событие Unload, то это не гарантирует что объект уничтожен?
Аноним 26/04/23 Срд 20:12:05 2682089 668
>>2681660
В шарпе дроч на имена, там это очень важно. Важно приписывать Аsync, а реализация интерфейса ориентируется на имена свойств и методов. В какой-то степени на этом основана работа Visual Studio, ну и в принципе вот такой подход выбрали.

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

У всего есть свои плюсы и минусы. К примеру в шарпе достаточно через двоеточие приписать имя интерфейса и если имена совпадают, то на этом твои полномочия всё. В бейсике тебе придется реализовывать КАЖДЫЙ элемент интерфейса самостоятельно - ты должен найти соответствущее свойство и приписать Implements InterfaceName.PropertyName

Вот и решай какой стул приятнее.
Аноним 26/04/23 Срд 21:08:12 2682121 669
>>2682069
если WPF
1 событие вообще может не произойти
2 и если произошло то может быть виртуализация и это не значит что он уничтожен
Аноним 26/04/23 Срд 21:27:31 2682130 670
Прочитал этот ваш C# Player's Guide, что ещё можно прочитать для дальнейшего преисполнения? Интересуют всяческие глубинные Advanced вещички.
Аноним 26/04/23 Срд 21:39:03 2682135 671
>>2682121
У меня какая-то хрень с биндингами. Привязал список, а когда я извлекаю итем модели и вставляю его в другое место списка, то на стороне вью удаляется экземпляр и создается новый (что ожидаемо). Как только я меняю свойство модели, то свойство почему-то меняется сразу в двух итемах - в текущем и в якобы удаленном.

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

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

Нет никакой функции, как у GC, которая бы узнала какие кто ссылается на экземпляр? Пытался заюзать BindingOperations.ClearBinding но такое ощущение, что это не работает. И можно ли использовать Disposе, вроде как в MVVM это не очень правильно?

И еще маленький вопрос. Я связал три свойства A-B-C в двухстороннем режиме. И когда я меняю свойство C, то почему-то логи показывают, что порядок изменения свойств неожиданно идет в противоположном направлении т.е. начиная с A, затем B, затем C. Это нормально или логи не успевают регистрировать? Разницы между временем логгирования естественно нет.
Аноним 26/04/23 Срд 21:49:45 2682139 672
>>2682121
>>2682135
В догонку.
Собсно, а зачем нужна виртуализация, если я добавляю в список ровно тот же экземпляр модели, но вместо того, чтобы брать предыдущий итем, связанный с этой моделью ранее, создается совершенно новый итем?
Аноним 26/04/23 Срд 21:54:34 2682141 673
>>2682135
И как же ты видишь этот "якобы удален"?
Аноним 26/04/23 Срд 22:03:05 2682146 674
>>2682141
Ну он визуально исчез из вью-списка и произошло событие Unloaded для данного итема. Поэтому я и написал "якобы". Но при этом срабатывает метод OnPropertyChanged с уникальным UID "удаленного" итема - из чего я понял, что экземпляр не удален.

А по поводу очистки дата контекста, это я не так выразился. Просто перестают обновляться свойства, а уничтожен ли экземпляр — неизвестно.
Аноним 26/04/23 Срд 23:03:49 2682176 675
>>2682146
ты отдели мух от котлет
контрол выгружается (при этом он очистит свой датаконтекст) и OnPropertyChanged он не кидает, а ловит разве что
Аноним 27/04/23 Чтв 01:04:37 2682227 676
2023-04-2701-02[...].png 62Кб, 1408x334
1408x334
>>2682176
>OnPropertyChanged он не кидает, а ловит разве что
Я так и написал. Я его использую для ловли изменения свойства.
И несмотря на то, что визуально контрол исчезает из списка, OnPropertyChanged ловит изменение свойства этого контрола.

>при этом он очистит свой датаконтекст
А по факту, пока я вручную дата контексту не присвою null, OnPropertyChanged будет ловить изменения.

Пикрил - примерный лог.
Аноним 27/04/23 Чтв 01:44:11 2682239 677
>>2682227
без кода этот разговор ни о чем.
кто знает как ты там подписываешься на вьюмодель. Даже если забыть про сильную подписку или слабую (которая все равно будет работать пока не придет GC), то например из твоего лога никак не видно как у тебя вдруг на старых итемах стал титле "A"
Аноним 27/04/23 Чтв 06:21:04 2682262 678
image.png 53Кб, 524x705
524x705
>>2681954
>>2682089
То есть верхний вариант лучше, чем средний?
Или можно как на нижнем?
Аноним 27/04/23 Чтв 10:06:38 2682372 679
image.png 30Кб, 515x102
515x102
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Identity.RoleManager`1[Microsoft.AspNetCore.Identity.IdentityRole]'

Второй день уже ебус с этой ошибкой. Какого хуя он не инжекстится .
Аноним 27/04/23 Чтв 11:48:58 2682470 680
>>2682262
Вот относительно ViewModel хз. Мне кажется, это подписи нужны для новичков. Любой класс может быть вьюмоделью, если он INPC, какой смысл это приписывать? Но я не знаю дают ли имена в продакшене.

Что касается примеров пикрил, то первый наименее удачный вариант. Во-первых там какая-то тавтология из ViewersOverviewes. Второй и третий слишком абстракные, все что нам сообщается, что это детальная вьюмодель, но вьюмодель чего?
В первом я бы удалил одно из слов Viewers или Overview.
Аноним 27/04/23 Чтв 12:14:25 2682501 681
Ребят, посоветуйте плиз какой-нибудь краш курс по сишарпу. Прогал на тайпскрипте до этого.
Аноним 27/04/23 Чтв 12:34:58 2682524 682
>>2682501
Дак они все устаревшие. Сейчас дотнет 7, а через полгода уже будет 8. По ним ничего не вышло ещё и выйдет через 2-3 года только.
Аноним 27/04/23 Чтв 12:47:33 2682546 683
>>2682524
Ну синтаксис то подучить для начала хотя бы
Аноним 27/04/23 Чтв 12:52:17 2682548 684
>>2682546
Ну тогда курс Александра Шевчука за 2015 год
Аноним 27/04/23 Чтв 13:12:38 2682568 685
>>2682372
Разве роль не должна быть отдельным классом наследуемым от IdentityRole<T>?
Аноним 27/04/23 Чтв 15:12:09 2682652 686
>>2682262
Ну вообще делят так.
1 папка ViewModels/Views/Controllers то есть основное деление по типу (внутри могут быть сгруппированы по фиче) - позволяют расположить это в разных сборках. Когда пишешь на хамарин то у тебя вьюхи там отдельно и это жизненно необходимо.

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

>>2682470
>Мне кажется, это подписи нужны для новичков
Подписи нужны для удобства. Adapter, Proxy, *Service и так далее - дают прямую подсказку зачем нужен этот класс. вьюмодель ничем не отличается. А где он там лежит - вообще не имеет значения, потому что неймспейс обычно не виден при использовании имени класса. Да, бывают длинные имена, но тут выбор меньшего из двух зол - и выбор очевиден.

Не очевиден? Допустим ты читаешь чужой код на гитхабе, в диффе, или даже в IDE и видишь класс User. Удачи тебе выяснять что это на самом деле вьюмодель. Тебе придется читать блок using что мало поможет, в IDE ладно ты можешь навести мышь и узнать неймспейс...но и он тебе мало поможет если используется feature структурирование проекта.
Аноним 27/04/23 Чтв 15:46:24 2682676 687
>>2682501
Если прям краш, то метанит.
Аноним 27/04/23 Чтв 16:51:44 2682767 688
>>2682548
Он покрывает все нужные фичи которые сейчас есть? Обновлений после него особых не было?

>>2682676
Благодарю
Аноним 27/04/23 Чтв 16:56:26 2682771 689
Помогите неофиту с философской проблемой.
Есть один метод который работает с сетью и в котором на весь метод расположен try/catch. Сеть может отвалиться и тогда создастся эксепшн. Я хочу сделать перезапуск этого метода через n секунд. Если я вызову в этот метод в catch то насколько я знаю создастся еще один "экземпляр" этого метода в памяти и вообще получится аля рекурсия. Повешать try/catch выше на вызов этого метода тоже шляпа потому что я вызываю этот метод множество раз из разных участков кода.
Пока что единственное что я придумал это поставить метку в начале и в catch перемещатся через goto.
Существует ли какой-то более элегантный способ?
Аноним 27/04/23 Чтв 17:13:42 2682796 690
>>2682767
Я тебе выше написал, что каждую новую версию надо учить специально. Сишарп - это не джава, где 30 лет обратной совместимость. Тут каждый год всё меняют.
Аноним 27/04/23 Чтв 17:18:40 2682803 691
image.png 44Кб, 535x418
535x418
>>2682771
Я бы пикрил накидал.

> goto
Не жалуйся только потом что тебя отпиздят за углом галеры
Аноним 27/04/23 Чтв 17:20:55 2682805 692
>>2682796
Я может плохо тебя понимаю, ты о синтаксисе говоришь или экосистеме в целом?
Аноним 27/04/23 Чтв 17:23:56 2682815 693
>>2682805
Батарейки постоянно меняются, иногда с обратной совместимостью, но часто и нет с здоровыми мануалами по миграции
Синтаксис только дополняется, иногда фичами которые на столько фачсты что люди поднимают версию языка если не получается поднять версию кора

мимо
Аноним 27/04/23 Чтв 17:26:36 2682820 694
>>2682815
В сишарпе 8.0 ввели понятие ссылочных типов, не допускающих null, которые выглядят также как старые ссылочные типы, допускающие null. Так что это не дополнение, а замена.
Аноним 27/04/23 Чтв 17:26:40 2682821 695
>>2682803
>Не жалуйся только потом что тебя отпиздят за углом галеры
наоборот, будут считать гуру который знает как испольовать goto (ведь обычный программист знает всего 1-2 случая где полезен goto, а тут такой мастер)
Аноним 27/04/23 Чтв 17:29:21 2682824 696
>>2682820
Наллабал референс тайпс это же просто сахар на уровне языка, на итоговый ил не влияет
Аноним 27/04/23 Чтв 17:31:10 2682827 697
>>2682824
Но пишешь ты не на иле, а на сишарпе, а значит вынужден учитывать все эти изменения.
Аноним 27/04/23 Чтв 17:34:08 2682830 698
>>2682827
Они опциональны, это сахар. Дополнение для языка являющееся лишь подсказкой которую иногда ещё и осознано глушить приходится null!
Без доп настроек string a = null даже не ошибка и компилер только предупреждение кинет
Аноним 27/04/23 Чтв 17:50:16 2682841 699
>>2682771
А вообще для таких нужд есть Polly и подобные либы
Аноним 27/04/23 Чтв 17:53:27 2682843 700
Какой же TreeView обоссаный кусок кала. И не менее забавен цирк из туториалов. Банально гуглишь драг энд дроп и 99% всех туторов сводится к тому, что дропается Selected Item — это настолько далеко от реальности, что аж зубы сводит.

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

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

Пришлось наверитенить таких костылей, то теперь хрен разбершься от чего вот это >>2682227
Аноним 27/04/23 Чтв 17:59:31 2682849 701
>>2682843
Возможно я избрал раковую стратегию, но либо консольный софт, либо asp+spa, а на все эти десктопные гуи просто кладу болт
Аноним 27/04/23 Чтв 18:01:46 2682854 702
show.png 10Кб, 270x120
270x120
show1.png 10Кб, 270x120
270x120
>>2682843
Плевать вьюхам на MVVM. Их дело поддерживать систему биндингов, а то что тебе хочется там логику разделять - до этого им дела нет.
Аноним 27/04/23 Чтв 18:12:26 2682869 703
>>2682805
У тебя выбор: либо смотреть курс Александра Шевчука, сертифицированного специалиста Microsoft, либо читать метанит, который написан рандом челом из интернета, который даже свой сайт написал на РНР, но учит людей сишарпу.
Аноним 27/04/23 Чтв 18:20:35 2682883 704
>>2682869
какая разница на чем написан сайт. там и про ассембплер есть - писать сайт на ассемблере?!
Аноним 27/04/23 Чтв 18:23:16 2682886 705
Аноним 27/04/23 Чтв 20:07:13 2682998 706
Хотел написать на авалонии небольшую программку для просмотра бур, а они все забанены ркн.
Аноним 27/04/23 Чтв 21:10:43 2683030 707
>>2682771
>через goto.
Как же я рад, что разрабы шарпа оставили в языке этот оператор.
Аноним 27/04/23 Чтв 21:13:21 2683032 708
>>2682820
По итогу во всех проектах установлено nullable disable. И большинство не просто не знают как с ними правильно работать, а даже и не подозревают, что в шарпе подобное есть.
Аноним 27/04/23 Чтв 23:29:39 2683082 709
>>2682886
Спасибо, да я уже сделал, просто накопился бугурт. Тут понимаешь, нужно сделать с определенным визуальным стилем и функционалом, поэтому все готовое не всегда подходит.
Я сам сделать не против, если бы реализовали БАЗУ.
Аноним 27/04/23 Чтв 23:47:13 2683090 710
2023-04-2723-07[...].png 28Кб, 655x306
655x306
Почему на пикрил я вижу подписку на события, но не вижу отписки? Или в шарпе это норма?
Аноним 27/04/23 Чтв 23:54:59 2683093 711
>>2682227
Короче, в диспозе заюзал BindingOperations.ClearBinding для всех поптисок внутри контрла. Я немного не понял как это работает — я пытался изнутри контрола очистить биндинг снаружи, типа
BindingOperations.ClearBinding(this, myControl.DataContext)
а надо чистить биндинги на DataContext.

Проблему так и не установил, пока обошелся диспозом.
Аноним 27/04/23 Чтв 23:56:29 2683096 712
>>2683090

Подписка на самого себя не вызывает утечек памяти, если хендлер ничего постороннего не удерживает (а на пике не удерживает) - раз
Лямбду не отпишешь - два. Ну да получишь немного напряга GC из за циклической ссылки, но спичек что ли мало
Аноним 28/04/23 Птн 00:01:07 2683097 713
>>2683093
ну кто знает что там у тебя
у меня когда я прикручивал лайфтаймы к контролам, то особо отмечено что с виртуализацией "Recycling" все нужно делать вручную - там бредятина с событиями смены DataContext и Unloaded

TreeView не изучал - не было нужды
Аноним 28/04/23 Птн 00:11:32 2683098 714
2023-04-2800-03[...].png 35Кб, 1058x233
1058x233
>>2683097
Да я сам не знаю что у меня. Я уже как-то сомневаюсь, что вот эти три подписки (пикрил, нижние строчки) автоматом удаляются, а они у меня буквально для каждого итема. Я их как раз юзал, чтобы реализовать Preview Select.
Аноним 28/04/23 Птн 00:23:09 2683102 715
>>2683098
это подписка на самого себя же. Их нет нужды отписывать.
Аноним 28/04/23 Птн 04:08:52 2683152 716
image.png 15Кб, 853x169
853x169
Аноним 28/04/23 Птн 06:41:40 2683176 717
>>2682841
Вообще мимо, у меня работа с FTP.
>>2682803
Мне тогда уже while true использовать. И в чем проблема одной метки?
Аноним 28/04/23 Птн 10:08:27 2683288 718
Как я могу получить айди авторизированного пользователя в коде , без обращения к базе ?
Аноним 28/04/23 Птн 10:15:05 2683291 719
>>2682652
>>2682470
А почему ViewModel ставят суффиксом? Для коротких названий (DvacherViewModel) удобнее и как будто бы логичнее, но для длинных не лучше ли ставить префиксом типа ViewModelOf...?
Например OldSchoolEOTSpammerBitardViewModel и ViewModelOfOldSchoolEOTSpammerBitard.
Аноним 28/04/23 Птн 10:17:22 2683292 720
>>2683288
Смотря как он у тебя авторизуется. Если, например, через jwt, то Id можно прописывать в нем и брать его оттуда при авторизации.
Аноним 28/04/23 Птн 10:37:15 2683302 721
image.png 25Кб, 639x77
639x77
>>2683292
У меня jwt. При генерации токена я вкладываю в него айдишник. Каждый раз парсить его наполучение айдишника получается ? Методы со скрина возвращают всегда null почемуто.
Аноним 28/04/23 Птн 11:03:25 2683314 722
>>2683302
Почему ид ты из какого то левого менеджера берёшь а остальные нормально из клаймов.
В любом случае есть дебаг вью
Аноним 28/04/23 Птн 11:34:08 2683337 723
>>2683302

Все , я нашел ошибку. Если кто еще столкнется с этим, то при генерации токена надо прописывать claims: List<claims>. У меня было тупо claims.toString();
Аноним 28/04/23 Птн 11:37:45 2683341 724
>>2683291
1. у тебя добавилось еще две буквы к и так длинному тексту.

2. когда у тебя в папке будет храниться большой список из подобного
ViewModelOfOldSchoolEOTSpammerBitard.
ViewModelOfKfftgsdfg.
ViewModelOfSdddfgg.
ViewModelOfWfftgsdfdg.
... то сложно будет искать нужное — ибо глазу вычленить искомое из середины текста сложнее, чем из начала.

3 (ключевая причина). у тебя список в IntelliSense будет упорядочен не так как надо. Тут ты можешь возразить, мол, у тебя наоборот будет группировка, но IntelliSense прекрасно справляется с фильтрацией, если начать писать "ViewModel". НО, когда ты начнешь писать код, то автодополнение тебе ничем не поможет — оно будет дописывать совершенно не то, что ты хочешь и в один момент твой пердак порвется в колчья. Чем уникальнее начало названия, том меньше придется писать при работе с автодополнением (это мои наблюдения).
Аноним 28/04/23 Птн 12:41:35 2683382 725
Кто-нибудь писал grpc клиент на .net framework 4.7.2?
Я уже заебался конкретно, нихуя не работает, как офнуть tls в winhttphandler знает кто?
Аноним 28/04/23 Птн 13:26:41 2683409 726
>>2683382
Tls/ssl в фреймворке это вообще очко ебаное. Есть проект который в нагрузку к фреймворку ещё и на вин 7 должен работать и это ебучая анальная эквилибристика с сетью.
Если можешь то беги
Аноним 28/04/23 Птн 13:41:56 2683427 727
>>2683409
Да сука, мне нужно всю эту хуйню настроить чтобы как раз в будущем избавиться от ебаного легаси говна, а эта хуйня мне сука пишет
Bad gRPC response. Response protocol downgraded to HTTP/1.1.
Аноним 28/04/23 Птн 14:08:13 2683470 728
Что происходит при unload контрола? Допустим у меня внутри контрола есть еще один контрол, если я внутреннему контролу присвою null, то событие unloaded в нем уже не происходит. Разве в таком случае визуальный родитель не удаляется?
Аноним 28/04/23 Птн 15:26:35 2683558 729
>>2683291
про сортировку и подсказку тебе написали
но и вообще выглядит как дичь

зы: кто там капчу делает? че мелочишься? делай 1000 черных букв на черном фоне и выброси все слова, оставь только слова с потолка типа кувырк. Ну чтобы наверняка.
Аноним 28/04/23 Птн 15:47:17 2683580 730
>>2683470
почему визуальный родитель должен удаляться если ты обнуляешь дочерний?
котопер 28/04/23 Птн 18:08:54 2683684 731
Приложуха на вин 7 (больше нигде не воспроизводится) иногда валится с абортированием треда (какого не понятно).

Появляется диалог с ошибкой CLR20r3, System.Threading.Thread Abort.

Пытался трассировать всеми известными мне способами:

System.Windows.Forms.Application.ThreadException System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException

но ничего не получил, 0 инфы (лог просто обрывается, пытался выводить в диалог но он просто не отображается.)

Как еще можно попытаться локализовать проблему, узнать бы какое исключение валит и где.
Аноним 29/04/23 Суб 10:50:15 2684181 732
image 19Кб, 687x309
687x309
Мне нужно поменять порядок дженериков в классах.
Есть класс типа ClassVasyana<TDva, TOdin>.
Надо чтобы он стал ClassVasyana<TOdin, TDva>.
В стандартной студии такого рефакторинга нет.
Как это сделать? Может есть какое бесплатное расширение?
Платных расширений типа решурпер я себе позволить не могу.
Аноним 29/04/23 Суб 11:16:02 2684199 733
image 4305Кб, 2105x1635
2105x1635
>>2683291
>OldSchoolEOTSpammerBitardViewModel
>ViewModelOfOldSchoolEOTSpammerBitard
А кто-нибудь вообще из числа программистов догадывается, что такой нейминг, мягко говоря, не удобно читать?
Что мешает делать пробелы нижним подчеркиванием?
Вроде размеры мониторов позволяют, не?
Раньше, до 15 века, писари-монахи тоже не были знакомы с таким изобретением как пробел, а может быть бересту экономили. А может просто боялись перечить авторитету предшественников, боялись вякать, мол, тут так заведено, не я эти правила придумал, не мне их менять, я простой монах, маленький и никчемный, там лучше знают как удобнее.
Но вот уже как 500 лет человечеству знакомы пробелы.
Ну как, знакомо большинству. Но только не программистам. У них особый нейминг, не как у людей. Подчеркивающий, что они наверное лучше и умнее (нет).
Вот кто-нибудь реально может объяснить такой дегенеративный нейминг? Почему его до сих пор не искоренили волевым решением, хотя бы в рамках отдельных проектов?
Или же может у меня с глазами что-то не так, проблема во мне, а большинство людей нормально воспринимает вот это ViewModelOfOldSchoolEOTSpammerBitard своими могучими глазами?
Аноним 29/04/23 Суб 11:54:29 2684223 734
>>2684199
В шарпах для всего свой нэйминг и в именах классов камел кейс
Аноним 29/04/23 Суб 12:01:56 2684229 735
>>2684223
1. Нейминг был важен, когда кодили в блокноте. Сейчас IDE и даже сраный гитхаб все тебе подсветит.
2. Шарп отлично компилируется с любым неймингом. Лишь бы программисту было удобнее читать.
Аноним 29/04/23 Суб 12:06:14 2684232 736
>>2684229
Вот мне как программисту и удобно иметь один нэйминг которого все придерживаются. От майков до васянов
Аноним 29/04/23 Суб 12:16:54 2684238 737
>>2684232
>удобно
А ViewModelOfOldSchoolEOTSpammerBitard тоже удобно?
Аноним 29/04/23 Суб 12:28:00 2684245 738
>>2684238
ВьюМодел в конце и да, удобно т.к. их обычно не 1 и не 10
Аноним 29/04/23 Суб 12:56:12 2684266 739
>>2684223
Это не camelCase, а PascalCase, потому что автор языка паскалист
Аноним 29/04/23 Суб 13:09:07 2684284 740
>>2684199
Я думал "спрятать" сложность имени в нэймспэйсы (тысячи их), типа ...ViewModels.Bitard.OldSchool.EOTSpammer, но меня обосрали мне сказали, что я неправ.
Но я просто самоучка без опыта, так что, скорее всего, просто нихуя не понимаю и не пойму похоже. Хотя смысл дописывать ViewModel (Command, Service, Store) кажется понимаю, но у меня пока получаются только длинные имена и я хуею с них.
Аноним 29/04/23 Суб 13:14:30 2684291 741
>>2684284
>ViewModels.Bitard.OldSchool.EOTSpammer
Проблема тут в том, что неймспейсы обычно никто явно не пишет, их подключают через юзинги, и часто их много изается в пределах одного файла.
Соответственно, имена классов могут начать конфликтовать.
Использовать везде полные имена с включением неймспейса - многословно.
Использовать имена неймспейсов при указании имени класса избирательно - неконсистентно.
Поэтому в итоге используются просто длинные имена классов.
Аноним 29/04/23 Суб 13:19:27 2684295 742
>>2684284
>>2684291
Ещё такое дело что видя неймспейс всегда ожидаю что его можно наложить на структуру директорий и найти нужный мне файл с кодом не имея больше ничего

мимо
Аноним 29/04/23 Суб 14:52:56 2684382 743
Делаю приложение на новом модном, молодёжном и современном GUI Windows Forms. Необходимо хранить поля для подключения к БД в отдельном файле имя.cfg . Подскажите, пожалуйста, как правильно описать этот файл и достать из него значения?
У меня в проекте автоматически создался файл App.config и в интернете только о нём вся информация. А мне нужен другой файл и из него вытаскивать значения
Аноним 29/04/23 Суб 15:10:07 2684392 744
>>2684382
Ну сделай другой файл. С вин формами это никак не связано.
Чаще всего просто в жсоне хранят
Аноним 29/04/23 Суб 17:06:06 2684492 745
>>2684199
>догадывается, что такой нейминг, мягко говоря, не удобно читать?
подчеркивание тоже отстой. лучшее это camelCase

Но на самом деле это дело привычки в конкретном языке. пишу на языках с разными типами неймингов. Не смешиваю и проблем нет.
Попытки притащить чужой нейминг в любой из языков выглядят чужеродно.
Аноним 29/04/23 Суб 17:30:12 2684508 746
>>2684284
>Но я просто самоучка без опыта, так что, скорее всего, просто нихуя не понимаю
Угу. Просто когда ты в соло пилишь свой проект или даже в попенсорце на расслабоне, то все твои идеи кажутся такими охуенными и "почему остальные такие долбоебы и не делают так же". А вот когда попадаешь в реальный проект где всем на твои фантазии похуй и над проектом работает команда где у каждого свои задачи, и у всего есть сроки и цели, то начинаешь поинмать, что некоторые вещи то делаются не просто так и почти у всего есть свой смысл.
Аноним 29/04/23 Суб 17:35:01 2684514 747
>>2684492
>лучшее это camelCase
почемуЖеТогдаЗдесьТыНеПишешьТак?ВсеПрограммистыШарписты,ПоймутИОценятВедь.
Аноним 29/04/23 Суб 19:15:47 2684568 748
>>2684514
я ж вроде ясно написал, что не приемлю "тянуть свой любимый нейминг в чужой монастырь"

шарп - ПишуТак
питон - пишу_так
котлин - пишуТак
двач - пишу так ИБО ТУТ ТАК ПРИНЯТО
Аноним 29/04/23 Суб 21:58:39 2684651 749
>>2684181
Что мешает сделать класс обертку:

class B<TOdin, TDva> : A<TOdin, TDva>
?

Так в старых местах - ты ничего не поломаешь, а в новых - будешь нужный порядок женерик-аргументов соблюдать.
Аноним 29/04/23 Суб 22:07:25 2684656 750
У меня вопрос про абстракции.
Давайте представим, что я делаю игру.
И вот я - бака, который хочет абстрагироваться от апи для рисования графики.
Как это должно выглядеть?
Видится мне, что это должно выглядеть примерно как:
Папочка Graphic, в ней подпапочки directx, opengl, vulkan в папочке Graphic - я делаю класс Renderer и кучу примитивов: спрайт, полигон, текстура и т.д.
В своем приложении я использую эти вот абстракции.
Но вопрос какой. Я должен же как-то "движку" сказать, какой API использовать. И вот тут уже сложно становится.
Самое простое решение видится, это статический класс GraphicConfig, который при старте приложения - инициализирует все че там надо. И второй класс GL_PrimitivProvider, который будет провайдить нужные графические примитивы.
Но чет чем больше я об этом думаю, тем больше мне кажется, что как-то не туда я думаю.
Аноним 29/04/23 Суб 23:19:44 2684712 751
>>2684651
>Что мешает
Хочется, чтобы было красиво.
Это личный проект, не для кабана.
Аноним 29/04/23 Суб 23:23:10 2684715 752
>>2684656
>Я должен же как-то "движку" сказать
Нет, не должен.
Рисование графики - это библиотечный функционал.
Он должен работать с любым допустимым API.
Конкретный API выбирается на клиенте.
Оба предложенных тобою способа приемлемы.
В общем случае решается через DI.
Аноним 29/04/23 Суб 23:38:36 2684726 753
>>2684712
Значит выделяешь себе день. Затариваешься пивком, закусью. Включаешь любимое музло и ручками переделываешь. В итоге имеешь приятное ощущение опьянения, чувство от проделанной работы и того насколько твой пет-проект охуенен.
Аноним 29/04/23 Суб 23:46:22 2684730 754
.png 12Кб, 684x289
684x289
>>2684712
Ну. Просто я даже с трудом могу представить, как такой рефакторинг должен работать на самом деле.
Вот давай прикриплейд. Что должно произойти при применении такого рефакторинга который ты хочешь.
Аноним 30/04/23 Вск 00:14:10 2684741 755
>>2684730
Где-то в коде будут конверторы с конкретными типами.
Их порядок должен поменяться в объявлении.

Будут какие-то методы, которые будут принимать конверторы в качестве аргумента, в них тоже порядок должен поменяться.
Аноним 30/04/23 Вск 02:04:53 2684810 756
>>2684741
Имхо дохуя хочешь, но можешь попробовать регулярками основные сигнатуры поменять
Аноним 30/04/23 Вск 08:37:42 2684863 757
Как тестировать сишарп-приложения через VS Code? Дело в том, что проект для тестирования создаётся как новый проект в рамках того же решения, что и основной. Но VS Code не поддерживает систему решений, а только отдельные проекты. Получается через VS Code невозможно тестировать приложения?
Аноним 30/04/23 Вск 09:10:04 2684872 758
core21.jpg 79Кб, 783x290
783x290
Поставил .NET Core 2.1 на линупс, а проект создать не могу. Вот вам и хваленная поддержка микрософт!
Аноним 30/04/23 Вск 09:36:41 2684875 759
>>2684872
Это та по которой поддержка 2.1 закончилась почти 2 года назад?
Аноним 30/04/23 Вск 09:40:54 2684876 760
Никто не будет [...].webm 1376Кб, 1920x1080, 00:00:03
1920x1080
>>2684875
И что? Каждые два года всё переписывать на новый дотнет?
Аноним 30/04/23 Вск 09:43:22 2684878 761
>>2684876
Для начала выбирай LTS
И перестань сидеть на говне мамонта
На скрине небось не убунту 18
Аноним 30/04/23 Вск 09:47:02 2684879 762
>>2684878
У меня книжка по версии дотнета 2.1, а по новой молодежной 7.0 книжки ещё не вышли. Как я должен вообще учить сишарп, если они старые версии ломают, а по новым инфы ещё не вышло? Замкнутый цикл просто!
Аноним 30/04/23 Вск 09:49:52 2684880 763
>>2684879
Мде. Иди в грузчики. Там пояснят
Аноним 30/04/23 Вск 09:52:46 2684881 764
>>2684880
Почему на голанге я могу взять любой код 10 летней давности и он работает на новой версии голанга, а тут 2 года прошло и ничего не работает? В джаве вообще по 20 лет сидят на старых версиях и всё работает. Один сишарп особенный и ему надо вот прям последнюю версию.
Как в продакшене вообще работают? Каждый год переписывают всё на новые версии дотнета? Что-то сомневаюсь. Бизнес такой ерундистики не потерпит.
Аноним 30/04/23 Вск 10:00:25 2684882 765
>>2684881
На шарпе то же самое.
Разберись в мухах и котлетах
Аноним 30/04/23 Вск 10:34:11 2684888 766
>>2684881
При чём тут код? Ты до кода даже не дошёл. Твой голанг 10-летней давности будет ебать тебе мозг вендорингом и GOPATH.
Аноним 30/04/23 Вск 10:36:28 2684889 767
Аноним 30/04/23 Вск 10:52:55 2684896 768
В сишарп реально вкатиться за 3 месяца имея опыт во фронте?
Аноним 30/04/23 Вск 11:04:31 2684898 769
>>2684889
Ты сам ставил 2.1? Создавал проекты?
Аноним 30/04/23 Вск 11:10:40 2684899 770
>>2684888
Я пробовал и ничего такого не было. Всё работает. А всё потому, что голанг имеет полную обратную совместимость.
Аноним 30/04/23 Вск 11:21:08 2684903 771
.png 0Кб, 313x21
313x21
.png 12Кб, 866x268
866x268
.png 58Кб, 906x984
906x984
>>2684898
Т.е. ты читать таки не умеешь?
Аноним 30/04/23 Вск 11:36:51 2684907 772
Не. Ну конечно я не знаю. Может быть в коммунити голанга не принято читать доки. Там какой-то тутор есть, в котором 3 команды на все случаи жизни которые они выучили и всю жизнь пользуют. Но блин. Ссылка, в которой буквально написано что сделать надо, чтобы более старые версии проектов создавать.
Но зачем ее читать? Надо прийти в тред шарпа и начать вонять, как неудобно сделать одну команду.

Вот попробовал бы кто-нибудь собрать проект для плюсов написанный в 2003м сейчас. Уууу, там такое-то приключение каждый раз(потому что охуенно же пилить абсолютные пути до всего, да? потому что охуенно - нахуячить каких-то непонятных флагов, которые выпиливают в дальнейшем, охуенно тащить ноунейм либы, которые сдохли и даже бинарей не найдешь больше). Да или что-то из жавы, которая, охуеть как обратносовместима, но чтобы собрать - поебись разбираться, где там Gradle, где там Maven, где там Ant, кто в Netbeans собирал, о, а тут кто-то либу использовал от челов которые сдохли, ищи теперь бинари той либы и прокидывай. Но эт хуйня же все. Вот выполнить одну команду в cli - ПИЗДЕЦ, СЛОЖНО.
Аноним 30/04/23 Вск 11:48:45 2684908 773
>>2684899
Ну я использую в дотнет 7 код еще с дотнета 1.1
Все работает
А еще использую в дотнет 7 скомпилированнын либы с дотнет 4.8

Несмотря на тот что кор как бы не продолжение старого нета

А от асп такого не жду, потому что это отдельный фреймворк просто от вендора.
Аноним 30/04/23 Вск 12:00:53 2684911 774
>>2684903
Я ввёл точно такую же команду. Ты поди в Винде пишешь, а не в линупсе.
Аноним 30/04/23 Вск 12:04:14 2684912 775
>>2684911
ПРОЧИТАЙ, ЧТО НАПИСАНО:
>> to create a project that targets a framework earlier than the SDK that you're using, you might be able to do it by installing the NuGet package for the template. Common, web, and SPA project types use different packages per target framework moniker (TFM). For example, to create a console project that targets netcoreapp1.0, run dotnet new install on Microsoft.DotNet.Common.ProjectTemplates.1.x.
Аноним 30/04/23 Вск 12:04:44 2684913 776
>>2684908
Код из книжки Фримана не подходит для 7.0. Там даже изначально совсем другие шаблоны генерируются и концов не найдёшь куда что писать.
Аноним 30/04/23 Вск 12:07:43 2684916 777
>>2684912
О каких нугетах речь, если команда dotnet new list выдаёт ошибку. 2.1 не создаёт даже консольных приложений. Скорей всего там не SDK, а только runtime заложен.
Аноним 30/04/23 Вск 12:12:10 2684917 778
>>2684916
Ты троллишь чи как?
У тебя на первом скриншоте явно есть 2,1 как сдк.
Или ты не знаешь что нугеты это просто пакеты, среди которых могут быть и инструменты для разработки, вроде ef'овских, для создания миграций, тулзы для нанофреймворка чтобы прошивать девайсы и много чего еще?

Тебе буквально надо сделать команду:
dotnet new install нугет с темплейтами для netcore2.1
https://www.nuget.org/packages?q=Microsoft.DotNet.Web.ProjectTemplates
Аноним 30/04/23 Вск 13:14:23 2684941 779
0packages.jpg 98Кб, 964x666
964x666
Аноним 30/04/23 Вск 13:38:15 2684971 780
>>2684941
> Что я делаю не так?
Троллишь тупостью
Аноним 30/04/23 Вск 13:40:30 2684975 781
>>2684971
А ты троллишь бесполезными советами
Аноним 30/04/23 Вск 20:05:33 2685265 782
>>2684913
не читал фримана, потому и проблем не имею

вообще это дичь - брать древний дотнет только потому что книжка есть. Возьми другую книжку блин.
Аноним 30/04/23 Вск 20:12:34 2685269 783
>>2684913
>Код из книжки не подходит
>совсем другие шаблоны
>куда что писать.
Этот вкатун сломался даже не начав кодить, несите следующего.
Аноним 30/04/23 Вск 20:14:05 2685271 784
>>2685265
Другую в свободный доступ ещё не скинули, а покупать не готов, так как не работаю

>>2685269
А ты сразу знал куда и что писать?
Аноним 30/04/23 Вск 20:23:45 2685281 785
>>2684872
Маялся весь день с проблемой, но в целом разобрался.
1) Проблема в том, что на убунте 22.04 новые библиотеки для SSL, а дотнеты к ним привязаны и из-за этого отказываются работать.
2) Ради эксперимента поставил убунту 18.04, накатил дотнет 2.1 и всё завелось сразу без танцев с бубном, просто потому что там старые библиотеки для SSL.
Аноним 30/04/23 Вск 20:26:51 2685283 786
>>2685271
> А ты сразу знал куда и что писать?
Зачем тебе знать куда и что писать?

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

Какие еще нахуй книжки? Камон? Я за уже 10 лет работы кодером - ни одной не прочитал, если не считать K&R, SICP, совершенный код, идеальный программист, и "Введение в системы баз данных" от Дейта. И вот эти-то книги я прочитал в вузе, потому что их требовали.
Аноним 30/04/23 Вск 20:27:15 2685284 787
>>2685271
ясно. у тебя там все строго - пускают только на двач. другого интернета ( в котором ДОХРЕНА инфы обо всем на свете - бери да изучай) просто нет.

>А ты сразу знал куда и что писать?
когда только рождался этот асп.нет кор то там еще была проблема что копируешь код, а он не запускается потому что нужен какой то неймспейс который не пойми где лежит, что ставить с нюгета. Потом с этим устаканилось и появились метапакеты и все стало проще. Но ты не ищешь легких путей ясно.
Аноним 30/04/23 Вск 21:16:37 2685333 788
>>2685271
>А ты сразу знал куда и что писать?
Дело не в этом я в принципе не оперирую такими понятиям "куда писать код"
А дело тут в косности твоего мышления.
Вы, вкатыши, с какого-то фига решили, что существуют какие-то 'шаблоны', в которых поняв 'куда нужно писать' ваш говнокод, вы магически научитесь программировать/разрабатывать. А потом придя в реальный проект, начинаете охуевать, "а чего тут не как в книжке написано", "а-а-а, клятый микрософт опять все поменял".
Аноним 30/04/23 Вск 21:32:07 2685346 789
>>2685333
Лул. Прям с твоего описания - вспомнил чела который со мной вкатывался.
И вот че обидно. Сам дядька был типа прикольный. 38 лет, решил сменить работу таксистом на кодера. Прошел курсы. Общительный. Внешне - вроде старался.
Реальная задача: Пользователь на форме указывает файлик csv такой-то структуры, надо обработчик сделать, который должен достать данные, привести к нашей модели и сохранить в бд.
Три месяца. Три месяца чел не мог сделать. При этом - если спрашивал, то как-то странно, в духе: а как делегат пробросить туда, а надо ли делать интерфейсы и в таком духе.
Конечно, там сверху навалилось, что микросервисы, докеры и все это вот, видимо сложно сразу все переварить. Но ХЗ.
Вообще. Немного обидно за дядьку. Мне он нравился. Но как слышал, он попросился в тестеры. Там полгода посидел, прошел еще курсы и таки в сбер съебался. Надеюсь у него все ок в конечном итоге.
Аноним 01/05/23 Пнд 08:37:00 2685494 790
>>2685283
Даже Рихтера не читал?
Аноним 01/05/23 Пнд 08:44:54 2685496 791
image 260Кб, 873x748
873x748
>>2685346
>Рихтера не читал?
Всегда считал советы читать эту книгу новичками каким-то жирным троллингом, типа сначала выучите ассемблер, основы электротехнику и линейную алгебру, а только потом начинайте красить кнопки.
Для новичков она тяжела и ничем им не поможет решать возникающие у них проблемы.
Для опытных она бесполезна, т.к. во-первых давно устарела, во-вторых, в документации от МС и исходниках всё написано намного подробнее и современнее.
Аноним 01/05/23 Пнд 09:58:22 2685515 792
Аноним 01/05/23 Пнд 10:28:19 2685539 793
>>2685281
Вообще, какой вывод можно сделать? Получается линукс не подходит для сишарпа. Вся эта кроссплатформенность сделана только, чтобы заливать веб-приложения в докер-контейнер. А среда разработки по-прежнему остаётся только Винда.
На винде можно поставить все дотнеты: фреймворки, кор 2.1, 3.1 и новые 5-7. И всё работает и коробки. Просто в вижле ставишь нужную галочку.
Аноним 01/05/23 Пнд 13:34:56 2685669 794
>>2685515
Книга издана в 2017 году.
Видос 2021-го года.
Совет из видео протух уже в момент его создания.
Аноним 01/05/23 Пнд 13:40:53 2685671 795
>>2685539
>Получается линукс не подходит для сишарпа.
Как будто бы для любого другого языка тебе не придется ебстись с зависимостями, библиотеками и т.д.
Вся кроссплатформенность работает только в самых популярных и распространенных вариантах. Шаг в сторону, другая версия, другое ядров, другая сборка и ты уже сосешь хуйцы.
Линукс ни для чего не подходит. Эта ебань создана любителями пердолинга настроек для таких же ебнутых красноглазиков.
>>2685539
>А среда разработки по-прежнему остаётся только Винда.
Нет.
Аноним 01/05/23 Пнд 15:00:37 2685732 796
>>2685669
А как ты предлагаешь тогда учить ASP.NET?

>>2685671
Накатывать виртуалку с шин11 и там программировать?
Аноним 01/05/23 Пнд 15:12:56 2685740 797
>>2685732
>как учить ASP.NET?
Курсы!
Аноним 01/05/23 Пнд 15:17:45 2685741 798
В чужом коде меня больше всего сбивают с толку кастомные extension-методы.
Особенно бесит такое читать не в IDE, а где-нибудь в вебе, где явно не видно, что это экстеншн, и какая у него логика.
Удивляют в связи с этим настойчивые пропосалы сообщества шарпистов сделать в новых версиях дотнета экстеншн проперти, индексаторы и прочий ад, и чтобы всё это ещё могло интерфейсы реализовывать экстеншинами.

Насколько это вообще нормально, зрело, чисто и по-синьорски использовать экстеншены в коде?
Аноним 01/05/23 Пнд 15:19:56 2685743 799
>>2685732
> Накатывать виртуалку с шин11 и там программировать?
Ты заебал уже весь тред жиром заливать. Два мастадонта под шарпы это студия и джеты, есть софт попроще по типу монодева или эклипаса. Все из перечисленных кроме стадии есть нативно под прыщи

Если майки такие пидарасы то что ты тут делаешь? Продолжаешь жрать кактус?

> учить ASP.NET?
Тебе даны божественные мсдн и гитхаб а ты выёбывешься. И к слову асп.нет уже сто лет как сдох и закопан вместе с фреймворком
Аноним 01/05/23 Пнд 17:45:08 2685840 800
Аноним 01/05/23 Пнд 18:06:11 2685872 801
image.png 59Кб, 779x399
779x399
image.png 91Кб, 830x653
830x653
Смотрю туториал, где делают магазин на razor, но я чет не понимаю, нахуя мне вот этот вот класс и нахуя вот это вот использовать тут, если можно репозиторий напрямую инджектить
Аноним 01/05/23 Пнд 18:28:37 2685903 802
>>2685872
А, понял, в чем прикол.
Хотя тут все еще бесполезны такие методы я считаю, тупо лишний код.
Аноним 01/05/23 Пнд 19:11:41 2685932 803
>>2685903
Нигер такого не бывает, все методы нужные
Аноним 01/05/23 Пнд 19:35:24 2685955 804
Есть мой код который подгружает класс из длл, создает инстанс, приводит его к интерфейсу и дергает интерфейсный метод. Мой тред проваливается в пользовательский код из длл что-то там делает. Допустим, слишком долго поток не возвращается оттуда и я хочу все прекратить и продолжить со следующей длл.

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

На фреймворке абортом наверное можно попробовать, на коре аборт выпилен, а интерапт не спасает если поток на той стороне, например, в вайл тру хуярит. Токены вообще не работают, потому что пользовательский код может болт положить на проверку отмены. Какие еще варианты?
Аноним 01/05/23 Пнд 19:52:30 2685969 805
>>2685741
>Особенно бесит такое читать не в IDE
А нахуя ты читаешь код не в IDE ? Это такой вид мазохизма, типа "у меня есть шуруповерт, но я буду закручивать шурупы отверткой" ?

>Насколько это вообще нормально, зрело, чисто и по-синьорски использовать экстеншены в коде?
Нормально. Большинство кода в продакшене сейчас состоит из одних экстеншенов с кучей лямбд.
01/05/23 Пнд 20:02:39 2685981 806
>>2685955
Никак, если ты даже абортнешь тред с таской то можешь зацепить и другие таски на том же треде
Аноним 01/05/23 Пнд 20:17:33 2685995 807
>>2685955
Только через костыли ебаные.
Можно поебаться с подпроцессами. Написать маленький бинарник-загрузчик сборок и положить его рядом с основной программой, дальше запускать бинарник в отдельном процессе и вызывать Process.WaitForExit(таймаут) и Process.Kill().
Либо запускать новый тред и пользовательский код в нём, а после таймаута не останавливать его и запускать следующий в надежде, что предыдущий не будет жрать много ресурсов и когда-нибудь сдохнет.
Аноним 01/05/23 Пнд 20:46:34 2686022 808
>>2685981
Ну я стараюсь не пачкать тредпуловские потоки об эту таску.

>>2685995
>Либо запускать новый тред и пользовательский код в нём, а после таймаута не останавливать его и запускать следующий в надежде, что предыдущий не будет жрать много ресурсов и когда-нибудь сдохнет.
Сейчас так и работает.

Но хотелось бы чтобы чистилось все после каждой длл. AppDomainов нет, зато есть AssemblyLoadContext, который даже метод анлоад имеет на себе. Осталось придумать велосипед, чтобы поток вернуть.

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

Вроде еще есть вариант через кастомный SynchronizationContext что-то сообщить потоку.
Аноним 02/05/23 Втр 14:36:26 2686471 809
Всем привет. Я старый пердун, 10 лет пилю на винформах и плюсах всякие мутные поделки. Хочу стать упругим-зубастым и выучить современный стек. Может кто советов по профессиональному росту дать? Можно в тележке например.
Аноним 02/05/23 Втр 15:51:14 2686560 810
image.png 5Кб, 270x120
270x120
>>2686471
Если хочешь бабла, то:
На бэк: .Net6 (и выше), ASP.Net Core, EF Core (и/или Dapper)
На фронт: реакт или ангуляр. Можно потом еще блейзора сверху навернуть, но это уже больше для себя и если зайдет.

Если для души: то Unity (Я х.з. какая у них там сейчас версия шарпа/моно в ходу). Но там мало бабла и выгорание.

Но будет >пик
Аноним 02/05/23 Втр 19:16:15 2686718 811
Бля, шо делать, код генератор отказывается добавлять identity в 19 студии
пытался уже и efcore под 5.0.2 переустановить как советуют в интернете, удалить .vs и все bin и obj, перезапустить студию и попробовать снова, а хуй там.
Аноним 02/05/23 Втр 19:44:57 2686744 812
>>2686718
Во первых, прекрати страдать хуйней и поставь уже 22-ю студию, она гораздо пизже 19-й.
Во вторых команды которые вводишь и сообщения об ошибках показывай.
Аноним 02/05/23 Втр 19:48:37 2686746 813
>>2686744
Та какие комманды, просто пытаюсь идентити добавить через интерфейс и оно грит There Was An Error Running The Selected Code Generator
Тащемта разобрался, обновил ef до 5.0.17 и оно заработало
Аноним 02/05/23 Втр 19:51:00 2686748 814
>>2686744
Единственная гораздость в ней - 64 битность
В остальном куча годных расширений перестало работать
Аноним 03/05/23 Срд 11:40:46 2687100 815
>>2686560
А без фронта не возьмут? Меня от реакта подташнивает. Вчера 200 страниц фримана осилил, в принципе пока всё понятно
Аноним 03/05/23 Срд 13:21:48 2687223 816
>>2687100
А как ты установил дотнет 2.1?
Аноним 03/05/23 Срд 13:40:18 2687240 817
Почему в конструкторе класса параметры записываются в расширенное свойство, типа this.Name вместо того, чтобы записывать напрямую в private name? Разве это не двойная работа?

private string name;

public string Name
{
get{ return name; }
set{ name = value; }
}
Аноним 03/05/23 Срд 14:04:56 2687258 818
>>2687240
Тот кто писал захотел абстрагироваться от приватного поля и дать всё на откуп сеттеру который может что то сделать с значением по пути.
Конкретно тут вопрос больше зачем явно прописывать приватное поле если оно не нужно
Аноним 03/05/23 Срд 14:57:33 2687326 819
>>2687100
Новичком вряд ли. Даже у опытных очень часто требуют знание каких-нибудь фронтовых фреймворков. Чтобы разраб как минимум мог понимать, что там под капотом, залезть внутрь понять и отдебажить. При необходимости, что-нибудь подправить или какой-нибудь мелкий компонент написать.
Вакансий где 100% бэк относительно мало, а для новичков их практически нет.
Аноним 03/05/23 Срд 15:15:42 2687352 820
>>2687240
А вот на собесе тебе этот вопрос и зададут. И спросят, почему нужно делать именно так (установка приватного поля через публичный проперти в конструкторе) и каким буквам SOLID-а, это соответствует.
Аноним 03/05/23 Срд 16:14:20 2687418 821
image.png 138Кб, 1646x1302
1646x1302
Двач, допустим, у меня есть мак (ноута/ПК на винде нет в принципе) и желание выучить C#/.NET. С чего начать (кроме очевидного, пойти почитать пикрил). В чем сложность работы с C#/.NET на маке?
Сможет ли бывшая JS-макака освоить C#?
Аноним 03/05/23 Срд 16:24:16 2687420 822
>>2687418
> В чем сложность работы с C#/.NET на маке?
Райдёр есть? Да? Тогда сложностей нет
Аноним 03/05/23 Срд 16:28:12 2687424 823
>>2687418
Скачай виртуалку с виндой и вижлой с сайта микрософт как в этом видео: >>2685840
Аноним 03/05/23 Срд 16:58:25 2687448 824
>>2687420
Сложность в том что владелец огрызка это умственно отсталое ебанько, соответсвенно кодить с такой тупой башкой проблематично.
Аноним 03/05/23 Срд 17:07:18 2687455 825
А может быть так, что когда я меняю контекстные данные родительского контрола, дочерние элементы автоматом начинают всасывать их в свои контекстные данные.

Это легально вообще?
Аноним 03/05/23 Срд 18:56:34 2687568 826
>>2687455
В этоми есть основной смысл
Аноним 03/05/23 Срд 19:23:40 2687597 827
>>2687352
То то EF имеет функционал прямой записи в приватные бэкинфилды. Видать говнокодеры )
Аноним 03/05/23 Срд 19:56:00 2687621 828
А можно как-то логгером (Serilog) отловить WPF ошибки?
System.Windows.Data пишет только в окно интерпретации, если происходят какие-то ошибки привязки.
Аноним 03/05/23 Срд 20:03:07 2687628 829
>>2687621
лови чем угодно же
создаешь свой листенер и подписываешься
if DEBUG
PresentationTraceSources.DataBindingSource.Listeners.Add(new BindingErrorTraceListener());
PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Error;
#endif
Аноним 03/05/23 Срд 20:53:10 2687656 830
>>2687597
Ты путаешь возможность и необходимость. Так-то в шарпе и goto в наличии есть, но это не значит, что его нужно использовать хоть где-то.
Аноним 03/05/23 Срд 22:26:03 2687733 831
>>2687656
Помнится как-то на почившем Лурке была статья про goto.
Как по мне - признак говнокода, нежелание юзать методы нормального человека. Но норм примеров гото я не видел за 4 года учебы и 3 года стажа
Аноним 03/05/23 Срд 22:44:22 2687753 832
>>2687733
попробуй сделать break N
и еще один пример видел, но не записал
Аноним 04/05/23 Чтв 13:29:05 2688017 833
>>2687628
Как я понял, new BindingErrorTraceListener() я должен сделать кастомным,
там я методе WriteLine пользуюсь своим логгером и пишу в текст.

Но тут две проблемы.
1. WriteLine принимает стринговый месседж и я не знаю как отлавливать разные уровни сообщения.
Допустим внутри WriteLine у меня такое: Log.Error(message);
Соответственно, если я запишу:
PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Information;
То у меня все месседжи будут помечены как Error, даже если они таковыми не явялются.

2. Ошибка выводится дважды. В серилоге у меня настроено два места вывода - текстовый файл, и окно интерпретации. Соответственно один из дефолтных листенеров тоже пишет в окно интерпретации.

Внутри списка два листенера
Listener: DefaultTraceListener
Listener: LoggingTraceListener
Мне надо один из них удалить? А если там пишется что-то еще? Сечас я сделал костыль, типа логгер записывает на уровне дебага (т.к. в окно интерпертации попадает всё начиная с Error), но текст помечается как ошибка Log.Debug("[ERR System.Windows.Data] " + message);
Но чет хуйня какая-то.
Аноним 04/05/23 Чтв 13:53:01 2688040 834
>>2688017

две надуманные проблемы
1 а зачем ловить Information? Ты ж ошибки просил ловить. В общем то только ошибки и нужны.

2 outout что ли? ну туда сам бог велит писать. Как бы оно для этого и придумано. (тем более что у впф даже консоли нет куда можно было бы еще вывести). В конечном использовании продукта никакого output не будет же.
Но даже если туда срет дважды, то смотри пункт 1 - то есть пофиксил ошибку и все чисто красиво.
Аноним 04/05/23 Чтв 14:31:03 2688078 835
>>2688040
Первый пункт меня не особо напрягает. Решил просто просить.

>Но даже если туда срет дважды, то смотри пункт 1 - то есть пофиксил ошибку и все чисто красиво.
А как это может пофиксить? Смотри, серилог имеет два варианта вывода сообщения, у каждого свой левел
.WriteTo.Debug с LogEventLevel.Error - вывод в окно интерпертации
.WriteTo.File с LogEventLevel.Debug - вывод в текстовый файл

В итоге у меня в окне интерпретации сначала выскочит это
System.Windows.Data Error: 4 : Cannot find source for binding with reference ...
Затем это
[ERR 13:22:31:530 System.Windows.Data] "Cannot find source for binding with reference ...
В текстовом файле, соответственно, будет только последняя строка

Первую строку срет какой-то дефолтный листенер, а вторую — серилог из моего листенера.
Аноним 04/05/23 Чтв 15:06:12 2688108 836
>>2688078
никак ты это не пофиксишь. лично я не знаю как отменять дефолтный вывод. И сильно удивлюсь если это возможно ибо это противоречит самой идее отладки.

разве что попросишь серилог не какать туда сообщения от этого листенера.
Аноним 04/05/23 Чтв 20:40:38 2688490 837
>>2687568
>В этом и есть основной смысл
Ну да, это имеет смысл, когда дочерний контрол находится в том же XAML документе, что и родительский, тогда я могу использовать что-то вроде этого

<UserControl x:Name="Parent" d:DataContext="{d:DesignInstance Type=t:Main_ViewModel}">

. . . <Grid x:Name="Child" DataContext="{Binding Child_ViewModel}" >

. . . </Grid>

</UserControl>

Здесь Child учитывает контекст данных родителя и видит всю внутрянку Main_ViewModel.

А если я делаю еще один UserControl и вставляю его с грид? В дата контекст UserControl лезет неведомая залупа, которую он не ожидает видеть внутри. Он делался отдельно от всей этой параши, он не знает куда его всунут и что туда прилетит. Как мне установить защиту в таком случае?

Что я делал раньше? Внутри юзерконтрола создавал свой собственный проперти, который и названием и типом сообщал что он хочет получить в себя, и уже он перенаправлял инфу в контекст данных. В итоге получается так, что в контекст данных сначала прилетает какая-то залупа, вызывающая тонну ошибок привязки, а уже потом данные нужного типа.
Аноним 04/05/23 Чтв 21:29:46 2688541 838
>>2688490
А, я сам обосрался. Отмена.
Вот же долбоеб.

У меня когда проперти обновляется, то я из метода OnPropertyChanged кидаю данные в дата контекст, вместо того,чтобы дата контекст связать с проперти
DataContext="{Binding RelativeSource={RelativeSource Self}, Path=TestProperty}"

Тогда автоматический биндинг датаконтекста к родительскому датаконтексту разрывается.
Аноним 04/05/23 Чтв 23:27:05 2688641 839
Чет меня начала пугать эта автоматическая привязка дата контекста. А что если у меня 50 вложенных элементов по типу матрешки? Один элемент вложен в другой, а тот вложен в третий ... Будет цепочка из 50 привязок?

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

Сомнительная хуйня.
Аноним 05/05/23 Птн 00:50:07 2688693 840
>>2688490
>В дата контекст UserControl лезет неведомая залупа, которую он не ожидает видеть внутри
значит раз он не знает ничего, то ему и нечего быть там куда его запихивают

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

>>2688641
Лично я не знаю как себя ведет DataContext контрола если вставить его из кода в другой контрол, но ожидаю что он унаследует DataContext места куда вставлен (в момент вставки, то есть смены родителя) и привязки обновятся. Но я не проверял и не сталкивался - я не знаю зачем об этом вообще думать и что то делать в коде такого рода, а именно создание контролов и ручное распихивание.
Аноним 05/05/23 Птн 07:01:08 2688756 841
Сорре за тупой вопрос но только вкатываюсь в Visual Studio. Вот создал я консольное приложение. Как мне видеть результат выполнения моего Hello World в консоли? Использую 2022 версию
Аноним 05/05/23 Птн 08:46:20 2688774 842
>>2688756
запускать пробовал?
Аноним 05/05/23 Птн 10:28:05 2688812 843
>>2688774
А как? Что нажимать в VS?
Аноним 05/05/23 Птн 10:32:45 2688819 844
Аноним 05/05/23 Птн 10:45:24 2688827 845
>>2688819
Зашел в debug, и у меня почему-то не активны отладка и запуск без отладки. Не нажимаются. С чем связано?
Аноним 05/05/23 Птн 11:15:11 2688849 846
>>2688827
Да х.з. Структуру проекта покажи.
Аноним 05/05/23 Птн 11:35:32 2688869 847
>>2688849
Новое приложение создал чисто консольное на винде и заработало, спасибо
Аноним 05/05/23 Птн 16:52:17 2689167 848
image.png 87Кб, 343x433
343x433
Как в студии генерировать эти kubernetes файлы
Аноним 05/05/23 Птн 16:53:21 2689168 849
>>2689167
А то автор туториала хуярит в vscode, а я чет хочу продолжить в студии писать, но расширений таких же нету
Аноним 05/05/23 Птн 19:23:50 2689345 850
>>2689168
Норм пацаны в студии только непосредственно сам шарп код в студии хуярят. Ну может еще джейсончики по быстрому если поправить. Всю остальную xml, yaml и т.д. муть лучше отдельно в VSCode делать, так быстрее и удобнее.
Аноним 05/05/23 Птн 19:34:12 2689353 851
Интересует вкат в cloud разработчики. Пока изучил только синтаксис C#, алгоритмы и структуры данных. В какую сторону посоветуете двигаться?
Аноним 05/05/23 Птн 19:39:14 2689363 852
Аноним 05/05/23 Птн 19:49:17 2689380 853
>>2688693
>значит раз он не знает ничего, то ему и нечего быть там куда его запихивают
Он знает, но пользователь не знает. Все что он видит - DataContext типа object. Он либо должен лезть в мой код моего юзер контрола, либо я должен на лбу у него написать, какого рода хуйню ожидает мой контрол в качестве данных.

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

>Не его проблема знать что прилетит.
А кто знает? Пользователь не знает, контрол не знает. Зачем придумали строгую типизацию, интерфейсы? Почему бы не пихать все в Object?
Аноним 05/05/23 Птн 20:36:42 2689434 854
>>2689353
>cloud разработчики
Что такое "cloud разработчики"
Аноним 05/05/23 Птн 20:53:49 2689451 855
>>2689434
Те кто разрабатывают веб сервисы в облачных платформах
Аноним 05/05/23 Птн 21:36:17 2689476 856
Салют, дотнетогоспода.
Вопрос такой: как у C# с IoT? конкретно интересует взаимодействие с умными розетками и роботами-пылесосами, хочу с определенной периодичностью через крон-выражения их запускать, есть такая возможность?
Аноним 05/05/23 Птн 21:38:38 2689479 857
>>2689476
Иот это москитто. В дотнете есть либы под него
Аноним 05/05/23 Птн 21:48:39 2689492 858
>>2689479
ок, спасибо, теперь хотяб пойму куда копать
Аноним 05/05/23 Птн 21:53:14 2689500 859
image.png 91Кб, 1864x392
1864x392
image.png 35Кб, 528x818
528x818
И туториал походу оказался хуевым каким-то, либо я дегрод и чет не так сделал
Чому оно не создает юзера и просто говорит мне, что usernotfound
Аноним 05/05/23 Птн 22:15:10 2689516 860
Так, с дата контекстом я разобрался. Действительно, при перемещении из одного контрола в другой, автоматом происходит перебиндинг дата контекста. С этим проблем нет.

Но тут возникла другая проблема — ебаный попап.

В чем суть: в попапе есть Panel, которая выполняет функцию отображения списка в стиле плиток, эта панель биндится к нашему любимому дата контексту. Дело в том, что при сворачивании попапа (т.е. .IsOpen = false;) регистрируется диспоз итемов списка, но сами итемы не удаляются из панели. И если снова развернуть попап, то висят те же экземпляры.

НО, если я перед сворачиванием попапа перемещу Panel куда нибудь во временную переменную, то у меня в DataContext приходит null и итемы не только диспозятся, но и сама панель очищается. Соответственно, когда я помещаю панель обратно в попап, то присходит персвязывания с дата контекстом, который не пуст и итемы спавнятся заново как и должно быть.

Шо за хуйня? Что этот попап себе позволяет? Когда я делал тривью, то у меня при разворачивании ноды создавались суб-ноды, а при сворачивании - удалялись. Тут же какая-то хуйня на полшишечки. Связано ли это с тем, что у панели отсутствует виртуализация? И как с этим бороться?
Аноним 05/05/23 Птн 22:44:16 2689532 861
Сап dota2net
Есть вопрос касательно jwt аутентификации.
Вот есть авторизация через jwt и нужно, что бы она всегда вызывалась, но не кидала ошибку unauthorized. То есть может быть запрос с токеном и без токена, но если пришел токен мы его проверяем. Придумал общее решение указывать два атрибута [Authorize(моя_схема)] и [AllowAnonymous] и проверять по контексту его аутентификацию. Это работает для обычного контроллера, но если мы используем какой либо пакет который сам выставляет и конструирует ендпоинты то это уже не работает. Собственно можно ли без атрибутов такое сделать ?
Аноним 05/05/23 Птн 22:55:54 2689542 862
>>2689532
Если ты просто добавишь жвт но не поставишь его по умолчанию то читаться он будет всегда независимо от атрибутов
Аноним 05/05/23 Птн 23:20:49 2689560 863
>>2689451
А чем они от разрабов обычных веб-сервисов отличаются?
Аноним 06/05/23 Суб 00:57:15 2689611 864
>>2689542
Да, только не валидируется если не поставить атрибут, в этом и загвоздка
Аноним 06/05/23 Суб 01:19:20 2689630 865
image.png 30Кб, 660x397
660x397
image.png 26Кб, 674x347
674x347
image.png 12Кб, 769x177
769x177
>>2689611
Регни обработчики и поставь брэйки. Если залетит то ты накосячил с интерпретацией данных.

К примеру так ловил протухший жвт в эллоуанонимус методах (логика некоторых зависела от того аутентифицирован юзер или нет) что бы юзера заставить рефрешнуть токен
Аноним 06/05/23 Суб 04:16:53 2689679 866
>>2689380
>но пользователь не знает
>Пользователь не знает, контрол не знает
программист знает - ведь именно он знает что контролу надо в DataContext. Это видно после первого пробного запуска. А если он не знает, то пусть на завод идет.

>Почему бы не пихать все в Object
Потому в WPF активно пихается. Там очень много рефлексии и поэтому о проблемах типов узнаешь в рантайме.
Аноним 06/05/23 Суб 06:35:08 2689697 867
>>2689516
>Дело в том, что при сворачивании попапа (т.е. .IsOpen = false;) регистрируется диспоз итемов списка, но сами итемы не удаляются из панели. И если снова развернуть попап, то висят те же экземпляры.

да, есть такое
во-первых, он кривой. приходится использовать нагугленное вроде NonTopmostPopup
во-вторых, он при закрытии вызывает событие unloaded у содержимого, но само готовое содержимое просто прячется, то есть ведет себя как collapsed и при втором открытии никакого повторного связывания DataContext не происходит.

А значит минимум тебе нужно
а) у попапа при закрытии чистить DataContext=null
б) при открытии устанавливать DataContext иначе при втором открытии у тебя будет пусто.
Аноним 06/05/23 Суб 13:29:39 2689880 868
>>2689697
>при открытии устанавливать DataContext

Имеется ввиду ручной биндинг, типа "new Binding ... бла, бла, бла ... SetBinding"? А с ним нет проблем типка как с ручной подпиской, которую потом надо удалять при диспозе?
Аноним 06/05/23 Суб 13:44:41 2689892 869
>>2689697
>>2689880
В догонку, чем DataContext=null отличается ClearBinding?
Аноним 06/05/23 Суб 14:09:54 2689905 870
>>2689892
> DataContext=null отличается ClearBinding?
биндинг это одна привязка. DataContext - источник привязок и он каскадно обнулит все биндинги

искать нужный биндинг в Child попапа - дело неблагодарное.

то есть содержимое попапа при закрытии никуда не девается (считай collapsed) и смотрит на тот же вьюмодель со списком. И далее нет разницы - обнулишь ли ты датаконткст или вьюмодель со списком изменишь - это затронет биндинги.
Аноним 06/05/23 Суб 15:11:41 2689950 871
>>2689880
> с ним нет проблем типка как с ручной подпиской, которую потом надо удалять при диспозе?
Разве надо? Не надо
Аноним 06/05/23 Суб 15:54:16 2689981 872
1123.jpg 17Кб, 600x610
600x610
>>2689905
Предположим пикрил цепочку связей датаконеткстов.
Точка С в цепочке — это попап. Понятно, что D, E, F обновятся, при этом связь продолжит существовать, но что произойдет со связью B-C? Она разорвется?

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

>Разве надо? Не надо
Ну есть же сильная и слабая подписка. При слабой подписке типа то что делается в WPF <Button Click="Button_Click" /> все очистится само собой, а сильная подписка может мешать сборщику мусора.
Аноним 06/05/23 Суб 15:55:51 2689983 873
>>2689981
>Она разорвется?
Я имею ввиду ситуацию, когда бы присваиваем DataContext=null в попапе.
Аноним 06/05/23 Суб 15:55:57 2689984 874
Посоветуйте книжку, шобы про кишочки рассказывалось, шобы на грани с компьютерсайнсом, шобы в контексте шарпа.

Из хорошего, что понравилось Управление памятью Коксы и у Сидристого в DotNetBook парочка годнейших глав встретились. Ну Рихтер, разумеется. Еще какую-то пробовал начинать, но бросил, ни названия ни автора не запомнил, помню только, эта книга когда-то в шапке этого итт треда фигурировала.
Аноним 06/05/23 Суб 17:39:52 2690101 875
>>2689981
>Предположим пикрил цепочку связей датаконеткстов.
Нет цепочки датаконтекстов. Есть наследование
1 ничего не делаешь и неявно наследуешь контекст что у родителя
2 делаешь новый контекст из родительского путем DataContext="{Binding на что то в родительском

При смене DataContext все контролы которые не определили свой контекст получают этот новый контекст (наследование). Все биндинги становятся неактуальными (источника биндигов больше нет, пришел новый). Mode=OneTime не имеет значения, ведь меняется не свойство куда привязан биндинг, а вообще весь источнк и биндинг к несуществующему более источнику лишен смысла. А значит и биндинг который рождает новый датаконтекст для группы 2 тоже пересоздается заново на новом контексте, тем самым затрагивая и вторую группу

Даже такой биндинг
{Binding RelativeSource={RelativeSource AncestorType=ItemsControl}, Path=DataContext.<prop>
должен реагировать на смену DataContext
(хотя я и не проверял ни разу, а вдруг нет, я не очень понимаю как себя ведут такие вот биндинги с путем на уровень ниже. Возьми и проверь)

Биндинги, которые не завязаны на меняемый DataContext (с его наследованием) - им похер на его изменение.

>При слабой подписке типа то что делается в WPF <Button Click="Button_Click" /> все очистится само собой,
Это сильная подписка. Это эквивалент this.Click+=Button_Click в конструкторе. Просто такая подписка не приводит к утечке памяти.

Слабая подписка - она в биндингах, например. И так то выглядит страшно, потому WPF дает хелперы для таких подписок (которые работают через рефлексию в силу анальной сути event в шарпе - ну то есть через жопу все)
https://learn.microsoft.com/en-us/dotnet/desktop/wpf/events/weak-event-patterns
Аноним 06/05/23 Суб 18:04:00 2690131 876
>>2689560
Да собственно тем и отличаются. Обычные пилят всякие sql решения и всякие аналоги. Облачники ебутся с облачными сервисами и интегрируют их в предприятие (и поддерживают потом)
Аноним 06/05/23 Суб 19:58:29 2690250 877
>>2690131
Так это девопсы тогда. Разрабам самих сервисов, обычно похую где их поделия крутятся, на железе, в контейнере или облаке. Максимум они у себя конфиги настраивают под то, что скажет девопс и все.
Аноним 06/05/23 Суб 20:22:05 2690288 878
>>2690250
Девопсы вроде cloud инженеры.
Аноним 06/05/23 Суб 21:00:58 2690319 879
Пацаны, а че у вас используется чтобы вести дев-документацию?
Я вот просто у питонщиков подсмотрел MkDocs. Вроде норм. Но типа блин. Все равно немного инородно.
Может быть знаете что-то такое же удобное, но ближе к шарпу?
Аноним 06/05/23 Суб 23:43:49 2690414 880
16833776568720.jpg 28Кб, 600x610
600x610
>>2690101
А как мне эту наследственную связь восстановить, если я тому же дата контексту C присвою null? Я имею ввиду состояние, когдя я мог бы обнулить дата контекст B, и это бы обновило C, D, E, F.

Если я просто скопирую из B в С, то обновятся D, E, F. Но если я изменю B, то это никак не повлияет на дочерние элементы т.к. в С будет тупо ссылка на вьюмодель.

Остается только создание ручной привязки, так? Или есть какой-то еще вариант?
Аноним 06/05/23 Суб 23:47:40 2690415 881
>>2690319
>Пацаны, а че у вас используется чтобы вести дев-документацию?
Ее осуждают. Типа возможность вести питоновскую документацию снижает энтузиазм писать понятный код, внятно именовать параметры, делать предсказуемое поведение и прочее.
Аноним 06/05/23 Суб 23:58:28 2690422 882
>>2690319
>>2690415
Ну и есть XAML-документация — небольшое описание перед методом. Ну ты об этом знаешь.

Какую-то общую описательную информацию с диаграммами и таблицами храню в CherryTree. В продакшене по любому есть специальная макака, клепающая ПДФки.
Аноним 07/05/23 Вск 03:51:14 2690491 883
>>2690422
>XAML-документация
Не XAML, а просто XML.
Аноним 07/05/23 Вск 03:57:48 2690492 884
>>2690414
да тупо в code-behind popup.DataContext = ... перед открытием и после закрытия.
можешь попробовать сделать атачед проперти, который сохранит контекст и будет его восстанавливать.

>Если я просто скопирую из B в С, то обновятся D, E, F. Но если я изменю B, то это никак не повлияет на дочерние элементы т.к. в С будет тупо ссылка на вьюмодель.
ты лезешь в абстракции "яйца и бабушка". То есть вроде верно, но не нужно.
Я не знаю как там у тебя - обычно то проблемы нет. Есть вьюмодели, есть зависимый попап. При выборе допустим другого SelectedItem данные для попапа перестраиваются.
Ок, возможно у тебя это крайне тяжелые операции и они должны быть lazy до реального открытия и очищены после закрытия. Значит в code-behind на события открытия закрытия достаем вьюмодель из DataContext и просим ее подготовить (заполнить список плиток) и очистить потом данные (очистить список плиток). Вьюмодель просто будет менять свое состояние, а обо всем остальном позаботятся биндинги. Можно оформить как бехавиор или атачед если очень хочется. И в общем то так не меняется DataContext потому и "разрыва связи" не будет.
Аноним 07/05/23 Вск 11:43:11 2690584 885
>>2690492
>popup.DataContext = ...
Что именно?
popup.DataContext = popup_parent.DataContext?

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

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

А что если контент попапа тупо переместить во временную переменную и потом вернуть обратно? Изначально у меня так и было. Надо посмотреть про атачед проперти.
Аноним 07/05/23 Вск 12:34:25 2690620 886
>>2690584
ну вот и не мучай жопу, а при закрытии попапа попроси вьюмодель очистить данные (хоть банальное Items,Clear() и все вьюхи итемов отвалятся)
что то делать при открытии - это если тебе нужно.

атачет пропа - просто способо оформить "по красоте", а не является необходимостью.
Аноним 07/05/23 Вск 13:52:43 2690713 887
>>2690422
>>2690415
> Ее осуждают
И как тогда другим разработчикам передавать всякие договоренности?
Ну, типа решили мы что надо время в UTC хранить. Или там, что никаких Json.Net. Что енумы передаем и храним в базе как строки. И т.д. Каждому вновьприбывшиму - все это рассказывать? Так веть 100% чет забудешь, а обнаружишь только при PR'е или вообще в проде.
Аноним 07/05/23 Вск 14:16:55 2690740 888
Аноним 07/05/23 Вск 14:37:02 2690771 889
>>2690713
Если дохуя большой продукт то можно поднять wikijs с бидиректом в гит
Аноним 07/05/23 Вск 23:34:07 2691471 890
>>2690415
>Ее осуждают. Типа возможность вести питоновскую документацию снижает энтузиазм писать понятный код, внятно именовать параметры, делать предсказуемое поведение и прочее.
Вот питонисты, это последние ребята на которых я бы ориентировался. Эти долбоебы сделали одно из самых хуевых решений в дизайне ЯП, только из-за того, что им лень было пару скобок поставить. Ясен хуй, что им доки лень будет писать.
Аноним 07/05/23 Вск 23:50:10 2691488 891
>>2690319
Стандартом минимум является xml-документация. Хотя бы api в веб сервисах или публичные интерфейсы в библиотеках должны иметь xml описание. Т.е. то, что можно прокинуть в OpenApi.
Остальное на усмотрение мейтенеров и соглашений команды.

Если же иметь в виду полную документацию к сервису, то все зависит от владельца сервиса, что и как у кого настроено.
Стандартные варианты:
- jira + confluence
- redmine
- youtrack
- какие-нибудь кастомные вики сервисы
- тупо в гуглдоках
- вики в репе (гитлаб, гитхаб, битбакет)
- еще какая-нибудь хуйня.

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

Система docs-as-code (в том виде когда доки хранятся непосредственно в коде/репе проекта), обычно редко применяется. Т.к. в большинстве случаев доки должны шариться не только среди разработчиков, но и тех у кого нет или не должно быть доступа к коду. Поэтому их разделяют.

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

Алсо, для своих петов рекомендую использовать самый простой способ (помимо xml-доков) - обычный markdown. По факту это просто текстовые файлы, которые будут нормально отображаться в любом git сервисе (гитлаб, гитхаб и т.д.), их легко можно читать где-нибудь в браузере или VSCode, либо заюзать обсидиан.
Аноним 08/05/23 Пнд 07:22:12 2691614 892
>>2691471
>только из-за того, что им лень было пару скобок поставить
Нужно код писать, а не выражаться затейливо
Аноним 08/05/23 Пнд 08:44:57 2691650 893
Есть ли фриланс на впф?
Аноним 08/05/23 Пнд 14:23:13 2691925 894
>>2691614
Угу и именно по этому им пришлось придумывать свой Pepe8, потом сраться из-за него. Это не говоря о том, что часть питонистов мечтают вернуть скобочки взад.
Для заметки. Сам по себе язык неплох, я его пробовал. Но решение сделать элемент форматирования (причем такой неоднозначный), частью синтаксиса языка - одно из самых ублюдочных решений в истории дизайна языков программирования.
Аноним 08/05/23 Пнд 14:26:03 2691931 895
>>2691650
Есть. Но либо в виде аутсорса, либо по очень хорошему знакомству и рекомендациям. Стандартные говнопроекты, которые можно было бы спихнуть на биржу, на WPF практически никто не делает. А к серьезным левого человека с улицы подпустят.
Аноним 08/05/23 Пнд 15:15:46 2691991 896
>>2691925
>этому им пришлось придумывать свой Pepe8
Да. Потому что скобочки - далеко не все особенности кода где можно наделать говна. И автоформатерам нужно на что-то опираться. Но зато меньше возможности говна наделать в скоупах

>- одно из самых ублюдочных решений
Сколько людей столько и мнений.
Аноним 08/05/23 Пнд 20:18:52 2692317 897
.png 6Кб, 272x277
272x277
Почему студия упорно игнорит мой .editorconfig файлик, при этом vscode - нормально подхватил.
Больше всего-то триггерит именно что студия опять же упорно пытается сохранять не в UTF, а в кириличнской кодировке, а потому - на выходе получаю, что другими редакторами если открывать - вижу ромбики(((
Аноним 09/05/23 Втр 04:20:04 2692676 898
>>2692317
А куда ты его кладешь? Он должен лежать или вместе с солюшеном, или в каталоге проекта, тогда вижла его автоматом должна подтягивать при загрузке проекта. Если он там и лежит, то попробуй напрямую добавить его в солюшен. Solution > Add > Existing Item
Сам по себе файл у тебя вроде норм.
Аноним 09/05/23 Втр 15:32:24 2693049 899
>>2649578 (OP)
>>2649578 (OP)
Аноны, помогите разобраться с добавлением новой строки в dataGridView.
Есть таблица с определенными столбцами, хочу реализовать следующее: после заполнения текстовых полей и нажатия кнопки добавить, в таблицу будет добавляться новая строка и заполняться соответствующие ячейки новой строки.
Легко и просто реализовал это в Qt C++, а здесь нихуя не получается.
Надо что-то вроде аналога insertRow. А может как-то по-другому.
Аноним 09/05/23 Втр 16:02:34 2693090 900
>>2693049
Спасибо, не надо. Сам разобрался. Оказалось еще проще.
Аноним 09/05/23 Втр 19:23:25 2693265 901
.jpg 547Кб, 600x860
600x860
Где новый тред, баки?
Или мне перекатывать? Тогда будет аниме в шапке. Вы этого хотите?
Аноним 09/05/23 Втр 19:31:06 2693275 902
>>2693265
Перекат после 1000, но в шапке должно быть аниме.
Аноним 09/05/23 Втр 19:34:19 2693279 903
Аноним 10/05/23 Срд 16:47:07 2694295 904
Аноним 10/05/23 Срд 17:36:56 2694358 905
>>2694295
Чел, возьми да полистай историю коммитов, он же написал что фиксанул.
Костыль он конечно присрал, но хотя бы понятно в чём проблема
Аноним 10/05/23 Срд 17:37:23 2694359 906
>>2694295
Чел, там же все написано. Переводчиком что-ли пользоваться не умеешь?
Аноним 10/05/23 Срд 20:03:56 2694473 907
Нулевой далбоёб врывается ИТТ. Только начал щупать C#. Подскажите, есть ли способ в vscode сделать так, что бы при сохранении файла с кодом, у меня проект автоматом билдился и запускался?
Аноним 10/05/23 Срд 20:24:43 2694496 908
>>2694473
Отмена вопроса. сам разобрался. dotnet watch. Ахуенчик.
Аноним 11/05/23 Чтв 00:35:41 2694581 909
Аноним 11/05/23 Чтв 06:50:53 2694621 910
Перекатите тред
Аноним 11/05/23 Чтв 06:55:09 2694622 911
>>2694621
Пидор, 10 постов назад всё решили.
Аноним 11/05/23 Чтв 08:25:24 2694647 912
>>2694622
Кто решил? Почему слова какого то анона считается общим решением
Аноним 11/05/23 Чтв 11:02:28 2694769 913
>>2694647
Потому что иди нахуй. Вот почему.
Аноним 11/05/23 Чтв 11:28:48 2694802 914
>>2694769
уносите этого порватку...и перекатывайте тред.
Аноним 11/05/23 Чтв 18:27:01 2695265 915
>>2694358
> Костыль он конечно присрал, но хотя бы понятно в чём проблема
Я полистал, в том то и дело. Ничего похожего на решение так и не обнаружил.
Аноним 11/05/23 Чтв 18:31:43 2695267 916
Аноним 11/05/23 Чтв 18:33:31 2695270 917
Если у меня будет делегат на статический метод класса, то экземпляр класса все равно будет висеть неудаленным GC? Или все же статика в данном случае играет роль?
Аноним 11/05/23 Чтв 18:44:14 2695275 918
Аноним 11/05/23 Чтв 19:08:10 2695300 919
image.png 128Кб, 633x543
633x543
>>2695270
Не будет, если верить Рихтеру.
Аноним 11/05/23 Чтв 20:47:01 2695387 920
Правильно я понимаю, что без "using System.Linq;", c# ничего не может?
начал ковырять шарп кун
Аноним 11/05/23 Чтв 20:47:54 2695388 921
Аноним 11/05/23 Чтв 21:00:07 2695405 922
>>2695387
Неправильно. Линку - это просто сахарок, чтобы ты мог запросы единообразно составлять при работе с разными источниками данных и соответственно колекциями.
Ты можешь вообще его не использовать.
Допустим, ты пишешь библиотку, которая в памяти генерирует картинки. На кой хуй тебе там линку?
Аноним 11/05/23 Чтв 21:15:59 2695422 923
Посоветуйте плиз минимальный список технологий для вката. На данный момент знаю синтаксис шарпа только и фронт (тайпскрипт, реакт и прочее). Вкатываться буду либо в фулсталкинг либо в бэк
Аноним 11/05/23 Чтв 21:23:08 2695436 924
>>2695405
>>2695388
Я начал с задачек на кодворс, что бы привыкнуть к синтаксису и заодно апи языка пощупать, так любые манипуляции с данными, тебе в ебало ошибка, что нет такого метода без Linq. Ну и постоянная конвертация массивов в списки и т.д и наоборот - это норма?
Аноним 11/05/23 Чтв 21:34:20 2695445 925
>>2695436
Чел. Вот все что есть в линку
https://learn.microsoft.com/ru-ru/dotnet/api/system.linq?view=net-7.0
Ессно, что если ты чет отсюда тащишь - у тебя будут ошибки.
Сам по себе - линку это такая хуйня, для того чтобы единообразно писать запросы. Возникла во времена, когда все любили ЭссКуЭль, и не любили велосипедить под всякие XML, грабберы HTML и прочее придумывать.

Ну так вот. Майки в то время почесли голову: все любят ЭссКуЭль, давай запихнем в язык ЭссКуЭль подобную хуйню.
Собственно и ввели:
var razpolbanniePezdii =
from p in pezdii
wher p.State == "Раздолбана"
select p;

Чтобы с этим вот работать дальше - пришлось наворотить всякие методы расширения.

Никто тебе не мешает без линку сделать:

IEnumerable<Pizda> GetRazplobanniiePezdii(IEnumerable<Pizda> pezdii)
var enumerator = pezdii.GetEnumerator();
while(enumerator.GetNext()){
if(p.State == "Раздолбана" ) yield return p;
}
}
Аноним 11/05/23 Чтв 21:36:23 2695446 926
>>2695445
По моему никто linq в sql формате не юзает, всё что вижу на экстеншенах
Аноним 11/05/23 Чтв 21:45:29 2695449 927
>>2695446
Многие вещи таки именно в линку синтаксисе - выразительнее и проще делаются.
Типа вот если тебе объединить две коллекции разнотипные и потом - выдать результирующий объект. Экстеншинах - это такой уебищный синтаксис, что я ебал. А на линку - красивенько-удобно.
Единственный минус линку, в том, что нельзя сделать так:

IEnumerable<IPosibleOwner> dogs =
from x in dogTypes
from y in person
where y.Like == x.Name
select new {y.id, y.Name, Prefer = x }
Приходится городить класс еще или сейчас рекорд. А было бы удобно, чтобы был анонимный тип, но с интерфейсом. Пусть и с ограничениями.
Аноним 11/05/23 Чтв 21:51:33 2695454 928
>>2695422
C#
.Net Core 3.1
.Net 6
Asp.Net Core
EF Core
XUnit

SQL
Docker
Git
Аноним 11/05/23 Чтв 21:52:02 2695456 929
>>2695445
Просто я пока столкнулся с парой банальных задач с массивами цифр и, что бы их решить надо массив конвертнуть в IEnumerable (а это уже часть Linq, как я понял), потом сделать необходимые махинации (поиск/сортировка/ревёрс и т.д), а потом надо опять конвертнуть в массив и вернуть значение. И в связи с этим вопрос возник, такой флоу - это норма для шарпов.

езжать
я уже поехавший нахуй
Аноним 11/05/23 Чтв 21:59:39 2695466 930
>>2695456
> конвертнуть в IEnumerable
никакого конверта нет, все шарповые коллекции по дефолту реализуют интерфейс

> это уже часть Linq, как я понял
не правильно понял

> потом надо опять конвертнуть в массив и вернуть значение
почитай про материализацию результатов ienumerable и когда она может происходить
Аноним 11/05/23 Чтв 22:28:50 2695501 931
>>2695300
Ну я на всякий случай спросить. Спасибо!
Аноним 11/05/23 Чтв 22:34:55 2695505 932
>>2695454
>.Net Core 3.1
>.Net 6
>Asp.Net Core
Они не взаимозаменяемы?
За список спасибо, возьмусь пока за SQL
Аноним 11/05/23 Чтв 23:16:43 2695533 933
lyKfI9W9-1g.jpg 59Кб, 600x483
600x483
>>2695456
>IEnumerable
Это интерфейс. Если начнешь гуглить, то тебе так нассут в уши, шо долго будешь отходить.

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

К примеру есть массивы, есть списки, есть коллекции. Мы понимаем, что что-то в них всех есть одинаковое — что-то, что присуще им всем, например количество элементов внутри, или свойство получения итема по индексу. Но когда мы начнем делать условный метод сортировки, то мы не можем знать что в этот метод подадут: массив, или список, или что-то еще. Даже если знаем, то не всегда получается соблюдать один тип, и рано или поздно нам придется писать метод сортировки отдельно для массива и отдельно для списка. А если у тебя таких типов сразу 10 или 100? Для каждого писать отдельный метод? Ебануться можно.

Умные ребята придумали интерфейсы. Если рассмотреть это совсем просто, то это некий свод правил для класса. Интерфейс как бы говорит "я не знаю что за класс ты там собираешься делать, но у него должны быть методы Count, IndexOf, Max, Min и т.д.". Таким образом твой класс как бы унифицируется. Обычно говорят, что класс реализует интерфейс, т.е. реализует список требований интерфейса.

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

Понятно? Это не конвертация. Мы не создаем что-то новое.
Линкью требует IEnumerable просто из-за универсальности, чтобы ты мог применить это и к массивам, и к спискам, и к коллекциям один и тот же метод. Только и всего.
Аноним 11/05/23 Чтв 23:24:12 2695536 934
>>2695466
>>2695533

int[] zalupa = {1,2,3};
var enumarbleZalupa = zalupa .AsEnumerable(); // вот эта операция, какая по сложности?

Для меня просто это выглядит, как перебор массива zalupa и превращения его в другой тип данных.
Аноним 11/05/23 Чтв 23:34:24 2695548 935
>>2695536
Ты вот это дерьмо отбрось и для начала попробуй создать обычный метод который тупо циклом проходит по всем итемам и выводит его на экран.
Но есть одно условие: метод должен обрабатывать как для Array, так и для List.

В не лезь в залупу (простите за каламбур), тебе рано линкью. Столкнись с проблемой, а потом возвращайся, будем тушить твою жопу.
Аноним 11/05/23 Чтв 23:54:22 2695565 936
image.png 43Кб, 959x265
959x265
>>2695536
> вот эта операция, какая по сложности?
Чуть менее чем зиро нахуй
Аноним 11/05/23 Чтв 23:55:04 2695568 937
photo.jpg 376Кб, 1284x730
1284x730
>>2695536
Глядя на картинку складывается ощущение, что IEnemerable это другой тип, или это тот же самый Array, но абстрагированный?
Аноним 11/05/23 Чтв 23:56:03 2695569 938
>>2695568
Ты же не в блокноте пишешь дак вот и жми ctrl+b/f12 что бы тайное стало явным
Аноним 11/05/23 Чтв 23:58:48 2695572 939
>>2695569
Да хули тут обсуждать? Анон не знает что такое наследование, интерфейсы. Что это ему даст? Набор заклинаний.
Аноним 12/05/23 Птн 00:03:07 2695576 940
>>2695548
Ну вот навоял. С перва думал, что у Array и List у обоих свойство Length есть, а нихуя, у List есть Count, но с ним надо ещё 1 вычитать.
public static void Iter(IEnumerable<int> item)
{
var enumerator = item.GetEnumerator();


while (enumerator.MoveNext())
{
Console.WriteLine(enumerator.Current);
}
}
>>2695568
>>2695565
Ладно, ладно. Просто не привык к такому поведению метода. Мы, жаваскриптизёры, одноклеточные, имейте терпение.
Аноним 12/05/23 Птн 00:06:19 2695579 941
image.png 178Кб, 480x360
480x360
>>2695576
> у List есть Count, но с ним надо ещё 1 вычитать
Аноним 12/05/23 Птн 00:07:08 2695580 942
>>2695576
> у List есть Count, но с ним надо ещё 1 вычитать.
У всех надо вычитать т.к. индекс начинается с 0.
Аноним 12/05/23 Птн 00:10:35 2695581 943
>>2695579
>>2695580
А не, я перебирал i < list.Count() мне выкинуло ошибку, что i вне ренжи списка. Багануло, видимо.
Аноним 12/05/23 Птн 00:11:51 2695583 944
Стикер 319Кб, 512x512
512x512
>>2695576
А почему ты IEnumerable использовал?
Что-то пошло не так?
Аноним 12/05/23 Птн 00:13:35 2695586 945
>>2695576
А кто тебя этому научил?
Какие-то извороты на пустом месте. Почему while вместо foreach?
Аноним 12/05/23 Птн 00:16:50 2695590 946
>>2695583
А хули мне запрещено разные типы в функцию передавать? Тоталиторизм.
>>2695586
Теперь вижу, что можно через обычный фор. Count есть и у массива и у листа. Не замел сразу Count у массива.
Аноним 12/05/23 Птн 00:18:58 2695593 947
>>2695590
В функцию с одним аргументом, разные типы
быстрофикс
Аноним 12/05/23 Птн 00:20:02 2695594 948
>>2695581
>А не, я перебирал i < list.Count() мне выкинуло ошибку, что i вне ренжи списка. Багануло, видимо.

Это не баг.
Count и Length это не максимальный индекс, это подсчет количества итемов в списке. А так как индекс массивов и списков начинается с нуля, то здесь {0, 1, 2, 3, 4} Count и Length будет равно 5, а максимальный индекс равен 4, что на единицу меньше.
Аноним 12/05/23 Птн 00:26:36 2695597 949
>>2695586
Ок, как решать эту задачу без изворотов? Тайпскирпт научил меня одной мудрости если драка не избежна...,
void Iter<T extends (общий тип для Array и List)>(T item){
}

У вас так же можно определять тип аргумента, что бы можно было разные типы использовать или у вас другой способ, или у вас вообще нельзя, что бы один аргумент мог быть разных типов?
Аноним 12/05/23 Птн 00:30:37 2695599 950
>>2695590
>А хули мне запрещено разные типы в функцию передавать? Потому что они внезапно разные. Откуда методу знать, что класс типа HuiPizda такой же как класс типа VrotEbis?
Вот для этого и служат интерфейсы — они сообщают, что у обеих классов есть интересующий метод или свойство.

> Не замел сразу Count у массива.
Потому что твой метод смотрит на массив через призму IEnumerable, который ты указал в параметре
public static void Iter(IEnumerable<int> item)
Аноним 12/05/23 Птн 00:33:59 2695601 951
image.png 10Кб, 431x170
431x170
image.png 76Кб, 690x653
690x653
>>2695590
> Count есть и у массива и у листа
Опять мимо, это МЕТОДЫ не листа/массива а экстеншен к enumerable со всеми неприятными вытекающими (хотя есть некоторые оптимизации внутри)
Аноним 12/05/23 Птн 00:36:35 2695602 952
image.png 25Кб, 845x102
845x102
>>2695597
> один аргумент мог быть разных типов
Ты понимаешь куда пришёл и какие тут правила?
Аноним 12/05/23 Птн 00:38:51 2695604 953
>>2695597
Да, можно. Это дженерики. Ты написал практически так, как это есть в шарпе. Но это не работает для перечислений типа массива или списка. Для этого нужно юзать интерфейсы. Дженерики нужны немного для другого.

В твоем случае это выглядит так
void Iter<T>(IEnumerable<T> item){
}

Здесь дженерик позволяет сделать универсальным тип итемов массива. Если у тебя будет на входе массив не int, а что-то string к примеру.
Аноним 12/05/23 Птн 00:43:26 2695607 954
>>2695601
>со всеми неприятными вытекающими
Какими, например? Аллокации?
Аноним 12/05/23 Птн 00:45:38 2695608 955
Аноним 12/05/23 Птн 01:00:07 2695611 956
>>2695601
Ужас, какой пылесборник. Надо быть осторожным, когда реализуешь IEnumerable - все эти расширения могут просто не сработать.

>collectionoft
Повезло, что в шарпе можно объявить переменную прям в сравнении.
В бейсике нужно отдельной строкой объявлять.
Аноним 12/05/23 Птн 05:04:11 2695627 957
изображение.png 9Кб, 412x185
412x185
Почему эта ошибка возникает при попытке создать файл БД? Тут мне даже ГПТчат не может помочь, хуйню только советует, которая сыпет ошибками.
Сама реализация создания нового файла происходит в "создатьБДToolStripMenuItem_Click".
https://hastebin.com/share/ufatadiweb.php
Аноним 12/05/23 Птн 06:34:56 2695636 958
show.png 4Кб, 270x120
270x120
Привет Я тут мечусь между шарпом и пыхой. С одной стороны куча работы, а с другой крепкий многогранный яп. Есть некоторый опыт фронта. В общем чтобы легче определиться я делаю небольшой анализатор логов сервера. На пыхе сделал, впечатление получил. На очереди Шарп) Скажите, ссылок на Майков и их учебник достаточно, чтоб ознакомиться с азами и потом распарсить лог и вывести его в веб страничку? И получу ли я то самое представление о языке? И вообще их курсы толковые или чисто для галочки?
Аноним 12/05/23 Птн 06:49:44 2695642 959
>>2695636
будь многоязычником. это легко.
Аноним 12/05/23 Птн 06:51:58 2695643 960
>>2695636
> С одной стороны куча работы
Если исключить всякие битриксы и унылые проекты типа магазинов, останется не так уж и много.
Аноним 12/05/23 Птн 06:56:02 2695645 961
>>2695636
Бери Шарп. После него на пыху переключиться будет вопросом синтаксиса (учится за неделю) и фреймворка типа ларавеля (учится за 2 недели). Остальное все равно смежные области типа SQL, докеров и прочего говна. Все равно не узнаешь куда тебя кривая уведет. Я вообще с джавы начинал вкатываться, а вкатился тайпскриптером сишарпистом лол.
Аноним 12/05/23 Птн 07:02:24 2695649 962
>>2695643
Тоже блять верно.

>>2695642
Не смешно.

>>2695645
Красавчик, жму руку.

А что по поводу обучения. У майков учебник для галочки? Да и вообще с чего начинать? Блин пыха конечно не кисло обросла информацией, у Шарпа с этим попечальнее)
Аноним 12/05/23 Птн 07:07:30 2695653 963
>>2695649
не смешно. А что смешного?
Какая проблема знать шарп и любой другой (или 2+) языка?
а никакой. Тот же фулстек знает шарп и богомерзкий жс (а еще и тайпскрипт сверху) - и ничего, жив (только страдает ибо фронтенд говно)

так что знать шарп и хотя бы питон (пхп же ужас) - изи.
Аноним 12/05/23 Птн 07:13:26 2695656 964
Аноним 12/05/23 Птн 07:33:56 2695659 965
>>2695649
Начни с изучения синтаксиса. Советую этого индуса

https://www.youtube.com/playlist?list=PLAC325451207E3105

Туториал старый но после него новые фичи на лету схватывать будешь. После этого БД смотри. Реляционные, нереляционные и почитай про SOLID. Дальше уже разберешься
Аноним 12/05/23 Птн 07:36:11 2695662 966
>>2695649
Советую Metanit. Лучший учебник всех времён и народов.
Аноним 12/05/23 Птн 11:10:13 2695789 967
>>2695627
Бамп. Ну пиздец же ошибка, я даже хуй знает как её решить. Ничё не помогает. Ну помогите.
Аноним 12/05/23 Птн 11:28:36 2695807 968
Спасибо парни. Я любитель по реальным задачам изучать. Есть у вас на примере какие-то репы с чистым кодом реализации какого-то говна типа студентлист, телефонный справочник и прочее говно?
Аноним 12/05/23 Птн 11:36:25 2695815 969
>>2695807
Ну или взаимодействие с каким-то апи.
Аноним 12/05/23 Птн 11:43:30 2695821 970
Аноним 12/05/23 Птн 12:14:45 2695857 971
>>2695821
А может ты сам будешь делать практику с шараги? После прочтения того что ты скинул только вымыть руки и остаётся
Аноним 12/05/23 Птн 13:01:33 2695917 972
>>2695601
Почему используется If + return вместо switch/case.
Ну придется создать переменную count для возвращения, ну и что?
Аноним 12/05/23 Птн 13:21:42 2695938 973
Продолжаю решать кодворс, и ловлю жесточайшее дежавю с тем, когда я решил посмотреть питухон так же, решая кодворс. Решаю задачу, перебираю строки/массивы, ифы хуифы, а чуваки просто подключают библиотеку (пускай дефолтную из System) и всё.
namespace Solution
{
using System;
using System.Net;
class Kata
{
public static bool is_valid_IP(string IpAddress)
{
return IPAddress.TryParse(IpAddress, out var parsedIp)
&& IpAddress.Split('.').Length == 4;
}
}
}

Лол, кек, чебурек.
Аноним 12/05/23 Птн 13:31:43 2695946 974
>>2695938
Кто ж так решает. Ну разве что у тебя древний шарп
Аноним 12/05/23 Птн 13:32:14 2695950 975
>>2695938
Это пример чуваков с библиотекой?
Аноним 12/05/23 Птн 13:32:54 2695951 976
Аноним 12/05/23 Птн 13:33:02 2695952 977
>>2695938
Велосипеды только в плюсах любят.
Аноним 12/05/23 Птн 13:41:53 2695964 978
>>2695951
Ну это база, это знать надо. Но ведь это примитивщина, если в ход пойдет более сложный текст, то оно не спасет от кодинга задачи до пенсии.
Аноним 12/05/23 Птн 16:08:23 2696161 979
Можно ли как-то передать методу класс или тип класса, чтобы метод создал новый экземпляр это класса?

Так можно в дженериках делать
void Test<T>() where T: class
{
. . . var result = new T();
}

Но можно ли без дженериков обойтись или If-ов?
Аноним 12/05/23 Птн 16:14:34 2696170 980
>>2696161
Нашел

public object GetInstance(string strNamesapace)
{
. . . Type t = Type.GetType(strNamesapace);
. . . return Activator.CreateInstance(t);
}
Аноним 12/05/23 Птн 16:18:59 2696178 981
>>2696161
суть статической типизации - тип должен быть известен на этапе компиляции, а не вот это всё.
Рефлексия может всё, но на этапе компиляции тебе придется указать тип object и потом в рантайме с этим жить.
Еще там есть dynamic но все же тут вам не пхп
Аноним 12/05/23 Птн 17:43:51 2696301 982
>>2696178
>но на этапе компиляции тебе придется указать тип object
Сразу же после создания экземпляра, я сделаю каст к интерфейсу и дальше буду делать нужные мне делишки, ну или не буду делать, если каст неудачный.

Мне нужна команда (ICommand), поэтому не могу сделать дженерик метод Execute<T>, иначе будут траблы с WPF биндингами. Я буду вынужден сделать целиком дженерик класс, а это пизда, это говно хуй куда впихнешь и хуй откуда выпихнешь. Там столько геморроя, что ну его в пизду.
Аноним 12/05/23 Птн 18:15:51 2696364 983
>>2696301
ни у кого проблем нет, а у него есть. вечно с тобой так
Аноним 12/05/23 Птн 20:28:25 2696536 984
>>2695627
Что-то подсказывает мне, что база с таким именем уже есть. Или у тебя какого-то файлика не хватает.
Аноним 12/05/23 Птн 21:58:07 2696668 985
Аноним 12/05/23 Птн 22:55:54 2696731 986
>>2696536
>>2695627
23-й лвл имею, скоро экспа дотянет до 24-го, ни разу не юзал GPT. Хто я?
Аноним 12/05/23 Птн 23:07:31 2696747 987
>>2696731
Нам откуда знать? Паспорт прикладывай
Аноним 12/05/23 Птн 23:21:57 2696766 988
>>2696747
А потом деанон? Ага, збс идея, гыг
Аноним 12/05/23 Птн 23:23:03 2696769 989
>>2696747
Понимаю что это на уровне Покаяна Беспруфовича Неполживого, но мне впадлу пиздеть, это не /б/
Аноним 12/05/23 Птн 23:23:27 2696770 990
>>2696747
Понимаю что это на уровне Покаяна Беспруфовича Неполживого, но мне впадлу пиздеть, это не /б/
Аноним 12/05/23 Птн 23:23:56 2696771 991
Аноним 13/05/23 Суб 00:19:33 2696804 992
1683926372578.jpg 127Кб, 982x1200
982x1200
Аноним 13/05/23 Суб 09:56:27 2696970 993
Можно ли сделать так, чтобы компилятор сразу понимал, что тип, реализующий мой интерфейс совершенно точно имеет конструктор и не писать ограничение new() при каждом использовании данного интерфейса?

public class MyGenericClass<T> where T : IElement, new()

Я просто спросить
Аноним 13/05/23 Суб 10:02:23 2696974 994
>>2696766
>А потом деанон?
А что беззубый двач может сделать в 2023-м году? Особенно в тематических тредах, где все друг друга знают чуть ли не по имени и фамилии.
Аноним 13/05/23 Суб 15:42:33 2697248 995
>>2696970
Нельзя потому что интерфейс никак не связан с конструктором
Аноним 13/05/23 Суб 15:57:29 2697267 996
Неужели нет ни одного жука навозника, который перекатит тред?
Аноним 13/05/23 Суб 17:11:21 2697335 997
>>2696974
Я просто новенький здесь.
P.S. Перекат, пжлст
Аноним 13/05/23 Суб 17:12:51 2697339 998
>>2697267
Есть только анимешные навозники ждущие тыщу постов
Аноним 13/05/23 Суб 17:22:05 2697341 999
>>2697339
>998
ПОДНАЖМЁМ, так сказать.
Аноним 13/05/23 Суб 17:23:58 2697343 1000
Хуле вы такие нетерпеливые?

Ну, погнали!
Аноним 13/05/23 Суб 18:27:38 2697402 1001
Аноним 13/05/23 Суб 19:01:15 2697438 1002
image.png 2001Кб, 1920x1080
1920x1080
Аноним 13/05/23 Суб 19:50:13 2697465 1003
1.JPG 56Кб, 1257x755
1257x755
Аноним 13/05/23 Суб 20:14:08 2697477 1004
Да ХУЛЕ ТАК ДОЛГО ТО?
Аноним 13/05/23 Суб 20:28:30 2697484 1005
>>2697477
Хер его. Я бы создал, но по анимам я не шарю)))
Аноним 13/05/23 Суб 20:36:53 2697489 1006
Норм курс? Аноним 25/06/23 Вск 08:35:37 2743806 1007
392433-power-ch[...].jpg 1449Кб, 3840x2160
3840x2160
Сап ребятки я полный ноль в программировании, учу С# с целью в будущем делать мутки на юнити. Сейчас изучаю все с нуля чтобы впитать основы, подскажите это нормальный курс для ютуба? https://www.youtube.com/watch?v=3MireZUB3Hw&list=PLDyJYA6aTY1laYPs6iS-SrYl9DZLVCUKr&index=27&ab_channel=%D0%A8%D0%BA%D0%BE%D0%BB%D0%B0itProger%2F%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
Аноним 25/06/23 Вск 08:38:02 2743809 1008
>>2743806
И если можно подскажите какой-нибудь удобный текстовый вариант
Аноним 25/06/23 Вск 08:40:49 2743811 1009
>>2697489
Да просто на сайте майков все как-то непоследовательно
Аноним 27/06/23 Втр 09:52:49 2745726 1010
Привет, программач. Начал учить C#, пока дается относительно легко, т.к. в школе задрачивали питоном для огэ/егэ.
Начал читать "C# Для чайников", но столкнулся с тем, что около половины не понимаю/понимаю плохо, но да похуй, не в этом суть.

Вопрос вот в чем, шарпы используются в вебе, играх и приложениях. Душа у меня к вебу вообще не лежит, ближе к играм или приложениям(желательно играм), насколько сложно найти работу и сколько примерно займет изучение БАЗЫ для этогоу среднестатистического вкатуна?
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов