Этого треда уже нет.
Это копия, сохраненная 29 июня 2023 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
image.png103 Кб, 1870x674
2 2649663
Вопрос скорее по visual studio, чем по шарпу: как заставить отладчик стопаться на точке останова на каждом n-ом проходе цикле, и логировать все значения переменной в студии для удобного просмотра в UI, а не логировать это в текстовый файл. Отлаживаю криптографию (на скрине) но не могу понять как это удобно сделать, жопа горит. Если кто знает из-за чего сама ошибка может быть, буду рад помощи, не могу понять почему массивы вдруг разными становятся, мб дело в Unicode который зашифрован в AES-GCM
3 2649695
>>649663
У каждой точки останова есть условия, это что-то в виде очень простого макроса. Дальше гугли что надо прописывать.
Жалко, что нельзя эти условия как-то сохранять в список.
4 2649755
>>649663

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


Если Serilog, то есть множество либ, типа
Sink.File, Sink.Debug, Sink.RichTextBox и т.д. У меня первые два, настроил для них разные уровни. Поэтому в окне интерпретации поверхностная информация, а более подробная в файле.

Для NLog наверно тоже самое.
5 2649924
Не хочет делать метрики. На мой взгляд, ничем этот проект не отличается от остальных.
6 2650588
>>649755
>>649695
Спасибо большое, попробую 2 варианта. По традиции двача пикчи в благодарность
7 2650615
Смотрите. Фронтенд использует 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, то вот как мне группировки эти делать - я с душе не ебу, хоть убей.
Объяснить фронтендеру, что нафиг этот датагрид ебаный, тоже не получается, мне говорят что я рукожоп просто(((
7 2650615
Смотрите. Фронтенд использует 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, то вот как мне группировки эти делать - я с душе не ебу, хоть убей.
Объяснить фронтендеру, что нафиг этот датагрид ебаный, тоже не получается, мне говорят что я рукожоп просто(((
8 2650749
>>650615

>odata - не подходит, потому что не умеет в группировки


С хуя ли она не умеет в группировки?
9 2650815
>>650615

>как мне динамически по имени поля - EF'ом отсортировать как надо


Я х.з. честно говоря, последний раз такое года два назад делал. Но насколько помню, пилишь пачку спецификаций которые будут собирать тебе нужные предикаты (либо базовых и конкретных, наследуемых от них, либо универсальных, но тогда понадобится резолвер для приведения имен столбцов в БД к именам свойств сущностей). А потом подсовываешь все эти предикаты в нужные места запроса.
10 2651551
У меня есть проект с апи, сейчас нужно сделать телеграм бота, что дёргает это апи и позволяет юзерам юзать функционал приложения через этого бота.
До этого я с ботами не сталкивался, реализовал стейт, чтобы бот понимал последовательные запросы. Аутентификацию добавил, т.е пользователь сохраняется в основной базе даже в случае если он до этого не использовал приложение. Все работает, пока храню контекст в словаре (id, context). Получаю нового пользователя - добавляю в словарь, даю базовый стейт, когда он ливает, то убираю из словаря.
1) Теперь думаю, а где лучше стейт (мб даже сам контекст) хранить? В базе или может в json каком-нибудь? По логике не стоит вообще это пихать в основную бд(там где апи и прочие основные проекты), т.к это ж по-сути только к боту относится. Сделать новую бд? Json кажется костылем, но может быть так делают?
2) Также бот умеет в оповещения (Background jobs). Пользователи могут сам создавать джобы, задавать им время, периодичность. Т.е при выполнении задачи бот посылает пользователю сообщение. Где лучше их хранить, в смысле задачи? Могу сделать бд с таблицей вроде (тип задачи, время, периодичность), либо опять же json?
Наверное глупые вопросы, но мне пока непонятно, что стоит хранить в json помимо всяких конфигов, а что в бд.
11 2651751
>>651551
>>651551

>Теперь думаю, а где лучше стейт (мб даже сам контекст) хранить? В базе или может в json каком-нибудь? По логике не стоит вообще это пихать в основную бд


SQLite. Маленькое, быстрое и не требует установки доп звисимостей в систему. БД может либо инмемори, либо в одном файле быть.
У меня пимерно такой же проект. Я все что нужно самому боту храню в sqlllite бд.
12 2651752
>>651551
На второй вопрос тот же ответ.
13 2651905
>>651551
в жсон конфиги. в бд данные
хранить состояние в теории можно в файлах, но зачем - у нас тут не сайтик на пхп

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

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

Я не знаю как щас с мс оберткой там они ж пул коннектов прикрутили. Но вот с (какой там самый старый провайдер) я получал database is locked.
Оказалось что первый коннект пишет, пришел второй видит занято и ждет. Причем не в очередь становится, а просто через время еще раз пробует. А пока он ждал пришла еще запись. В итоге второй через кучу попыток так и не сможет вклиниться и выдаст ошибку. Пришлось разруливать семафорами, что неудобно
14 2652126
>>651751
Думал так сделать, спасибо. Уже в принципе сделал.
>>651905
Про локи не думал и пока не сталкивался обычно использовал postgresql/mssql, у меня ещё была идея кэшировать все это, не сильно поможет, но все же. Спасибо за подробный ответ.
А как поступают с неизменяемыми строками, тоже лучше в бд? Я сейчас все ответы бота храню в json, потом через DI прокидываю конфиг в класс, что отправляет сообщения, там он в зависимости от языка пользователя берет из файла нужный ответ. С динамическими ответами сложнее, благо у них тоже структура есть, достаточно взять из конфига, подставить значения прилетевшие с бекенда.
Я это сделал, чтобы не хранить строки в коде и читал в факе о ботах, что желательно подстраивать ответы под язык пользователя.
15 2652193
Вопрос по теме для диплома, хочу делать на asp .net core и нужна какая-то идея для задания, где .net покажет себя лучше всего. В дипломе всё таки нельзя сказать, что я взял c# потому что мне захотелось на нём, может есть мысли по поводу того что можно реализовать или вообще просто какие-то сферы/кейсы где .net core себя проявляет лучше в сравнении с другими. Спасибо.
16 2652276
>>652193

>Вопрос по теме для диплома, хочу делать на asp .net core и нужна какая-то идея для задания


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

>какие-то сферы/кейсы где .net core себя проявляет лучше в сравнении с другими


Как бы мне ни нравился C#, но по факту - ни в каких. Есть джава, есть go. Шарп с джавой примерно от одного хуя яйца по возможностям и эффективности. Большинство различий - вкусовщина. Плюс джавы - она более распространена, но за шарпом стоят все бабки майкрософта и они нихуево так вкладываются сейчас в его развитие. За go правда все бабки гугла стоят, но там пока еще сырая архитектура, плюс это гугл, вариант того, что они завтра скажут "мы наигрались, закрываем проект" немаловероятна. Ну может еще в инди-геймдеве шарп кое-где роляет (но я так понимаю диплом ты на этом не построишь).

Сделай какой-нибудь сервис по консолидации грузоперевозок. В нынешних реалиях очень полезно (такие проекты есть и разрабатываются сейчас и за них платят неплохие деньги). А выбор шарпа мотивируй скоростью и удобством разработки, легкостью разворачивания готового сервиса. Если сделашь на .net7 (или даже на превьюшке 8-го), то можешь даже скоростью козырнуть.
17 2652282
>>652126

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


Я бы такой функционал, как ты описал хранил бы в БД наверное. Просто во время работы дергал бы из нее набор для нужного языка и использовал.
Плюс опять же, в случае использования sqlite, ты можешь целый пучок этих баз создать под разную функциональность. Один под хранение стейтов, один под работу с сообщениями на разных языках. Тогда и локов проще избежать будет и ебли с файлами не будет. Просто разные контексты настроишь и все. А файлы бд в случае sqlite вообще мизер будут занимать на диске.
18 2652290
>>652276

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



Это же чуть ли не клише "студенческая работа", когда человек подбирает задачу под инструмент, а не инструмент под задачу. Такие работы оторваны от жизни, а если хочется впихнуть невпихуемое, то маскируется под "исследование темы", типа "в этой работе я попытался исследовать возможность программирования микроконтроллеров на C#"
19 2652300
если методу передать массив из 1000 строк, то передастся ссылка или значение? стоит ли так делать как повлияет на ситуацию, если аргумент просит IEnumerable?
20 2652304
>>652300

>стоит ли так делать? как ...


потерялся знак вопроса
21 2652346
>>652300

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


Это ж насколько у тебя хлебушек в голове, если ты задаешь настолько ебанутые вопросы? Ты не думаешь, что тебе не стоит влезать в кодинг, если ты даже базу о ссылочных и значимых типах не можешь освоить?
22 2652351
>>652300
https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/arrays/passing-arrays-as-arguments?source=recommendations

Никак не повлияет. Если апишка просит широкий перечисляемый тип, значит код внутри метода сам обо всем позаботится.
23 2652354
>>652300
Ссылка.
24 2652447
>>652276

>Большинство различий - вкусовщина


ну да ну да - жрать черствый заплесневелый хлеб или сладкую мягкую булочку...ну да, просто разные вкусы ))
25 2652456
>>652452 (Del)
видимо нужно написать дополнение к браузеру чтобы он скрывал этого спамера
26 2652500
>>652456
Есть же автоскрытие и спеллы для куклы.
27 2652755
>>652193
Автоматизация предприятий. Особенно что связано с промышленностью и всяким железом.
Написать микроскаду на шарпе под конкретное предприятие - это просто охуеть как приятно, удобно и просто.

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

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

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

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

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

Я как еблан, только в своих частях кода - вот такое делаю.
Просто заебывает именно то, что это у себя-то я делаю, но вынести в отдельный проектик в духе: Project.Common - не разрешают(((
29 2652880
>>652824

>нам норм каждый раз в Startup/Program добавлять


да. не джун.
потому что так все в одном месте и это место ясно где
а не размазано по проекту
30 2652891
>>652880
Я не знаю. Может быть я один такой болезненный и если 6 часов ебусь с какой-то сложной логикой - могу забыть зарегистрировать. ХЗ. Меня - напрягает. Особенно, когда сервис который ты писал - где-то в дебрях логики, и чтобы наткнуться на то что ты забыл зарегать что-то, приходится проделать кучу манипуляций, пока не поймаешь эксепшн.
А тесты-то не падают, ведь тестировать что ты все зарегал - муторно, потестировал что сервис работает как надо - залил, потом - прилетает тебе пиздюлей, что ты еблан такой.
Плюс, файлик startup - становится пиздецки огромным у меня. 100 сервисов сделать мне - это как пить дать, я люблю на любой чих - делать отдельный сервис.
31 2652920
>>652891

>Может быть я один такой болезненный


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

>вот такие атрибуты


А код аттрибута можешь показать?
33 2652934
А как парсить сайты? В частности авито. Ну т.е. понятно что нужно будет разбирать аштээмэльку, но может есть подводные? Типа регулярно менять айпи или соблюдать определенные тайминги дабы не спалили что это машинные запросы и не забанили?
34 2652954
>>652934
Пиздуй к пэхэпешникам, шарпогоспода такой чушью не занимаются.
35 2652957
>>652954
Шарпопетухи занимаются ещё как
Недавно нюхал рыночек вакансий, в итоге решил пообщаться с букмекерами/онлайн казиношниками.

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

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

А как бы вы реализовали эту пагинацию?
.png27 Кб, 493x228
36 2652960
>>652957
Ну. Допустим как-то так. Например.
37 2652961
>>652957
Только LINQ, дополнять говнокодом запрещается.
38 2652965
>>652960
Забыл дописать условие, оно здесь >>652961

Вообще, я подумал что это какие-то ебанутые шизы, которые любят штатные оптимальные средства заменять своим говном и годами копаться в этом
39 2652999
>>652957

>попросили написать пагинацию коллекции на LINQ без Take/Skip и перебора со счётчиком


Кек. С одной стороны зввдачка на ехуй делать. С другой стороны мощнейший признак того, ясто собеседующий ебобо.
40 2653013
>>652999
Да я вот что-то придумать не могу, если запрещено писать свой метод.
Через TakeWhile и SkipWhile?
41 2653022
>>652957
collection.Chunk(size).ElementAt(pageIndex);
42 2653025
>>652957
nuget MoreLINQ Batch
43 2653030
>>652891
Ну так дроби
Смотри же как тот же асп.нет делает
Ты подключаешь либы и делаешь
services.AddFeature()

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

Не каждый проект в солюшене торчит кишками наружу, а вполне себе отделяется интрфейсами и ничем не отличаются от либы с нюгета
44 2653105
>>652954
Т.е. зарабатывать это к пэхэпешникам, шарпогоспода такой чушью не занимаются?
45 2653110
>>653105
У меня в качестве халтурной подработки три нормальных микросервиса на очереди стоят. При том что я не фрилансер даже и еще думаю соглашаться или нет. Нормальной работы кругом - жопой жуй. Нахрена еще с парашей вроде парсинга сайтов заниматься?
46 2653135
>>653110
Но моему микросервису нужен источник данных...
47 2653137
>>653135
Ну так он их и получает, либо через свое API, либо по шине.
Ну и опять же микросервисы разные бывают. Не всем в интернете нужно сидеть и мониторить цены на говносайтах.
48 2653215
Есть вопрос по Entity Framework, нужно ли после создания контекста утилизировать экземпляры с помощью Dispose или using? Такое ощущение, что тут нет единого мнения. Одни говорят, это нужно делать обязательно, другие, что контекст сам управляет своим состоянием. Я запутался крч, хз как правильно.
Вот, например, у меня есть wpf приложение, где UserControlы использую как страницы, загружая в бордер. В каждом UserControlе создаю свой контекст ApplicationContext db = new ApplicationContext();, но нигде не закрываю.
и если можно и не закрывать, то я так понимаю нужно использовать try catch на каждое обращение к базе?
49 2653234
>>653215
От провайдера зависит, когда ты руками или через юзинг диспоузишь контекст, то он может быть реально не закрыт, а помещен в пул. Также и с открытием.
Тебе не нужно держать контекст долго, т.к в таком случае данные там могут быть несвежие. Юзинг в таком случае твой выбор.
Ещё подумай о том, почему вообще контролы знают о контексте? Мб оно им не надо и стоит сделать абстракцию над AppDbContext, например репозиторий какой-нибудь?
50 2653947
>>653234
Спасибо
51 2654074
Если в полях структуры присутствуют классы, то структура бессмысленна? Бенчмарк показывает примерно одни и те же данные.
52 2654167
>>654074
В структуре только ссылка хранится. Ссылки хранятся на стеке или в регистрах, в хипе если подразумевается долгое хранение.
Другие дело, что value types совсем необязательно будут на стеке. Можешь чекнуть статью the truth about value types или как-то так.
То, где будет храниться value type сильно зависит от того как ты его используешь. Но даже так за тебя это jit делает, какую он там стратегию выберет только ему известно
2023-03-2720-54-54.png19 Кб, 893x637
53 2654599
))))))))))))))
2023-03-2721-07-13.png30 Кб, 933x505
54 2654605
)))))))))))))))))))))))))))))))))))))))))))
55 2654606
>>654599
>>654605
у тебя обострение?
2023-03-2721-10-38.png15 Кб, 938x793
56 2654608
>>654606
))))))
57 2654611
>>654608
ясно. весна, шиза. только зачем спамить....
2023-03-2721-17-18.png8 Кб, 946x329
58 2654617
>>654611
))))))))))
59 2654925
Аноны, нужна помощь мастеров над логикой и данными.

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

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

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

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

Набросал первый вариант на 1 скрине. Вроде удобно получается и даже близко к реляционной базе данных. Но возможно для моего случая это избыточно. Ещё набросал второй вариант чуть проще. Возможно он логичнее с той точки зрения, что Free задаётся в самом оффере (если ты выдаёшь предмет бесплатно, как подарок, то это только оффер как ни крути)
60 2655050
>>654925
Желаю теб чтоб ты срал дальше чем видел. Пока не поймешь, что из-за таких как-ты, современные игры стали полным дерьмом.
Надеюсь ты все осознаешь и станешь заниматься чем-нибудь более полезным.
image1,7 Мб, 1185x942
61 2655195
>>655050
Желаю тебе нахуй пойти, обиженное на жизнь чмо.
62 2655732
>>655195
Ебантяй уже продумал как продавать говно в своей игре, а игру не сделал
Хранение в json не осилил, игродел ёбаный

Уебывай в раздел для юнитидебилов
63 2655744
Есть список файлов с локальным путем, уровня "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. Я не могу заменить косые черты. Они формируют правильное отображение файла и эти правила я не могу изменить.
64 2655748
>>655744
Я могу решить задачу в лоб, типа сравнивать две строки посимвольно и при конфликтном символе переходить к сравнению списка возможных символов (пробел или косая черта). Если ни то и не другое, то выдавать false.
65 2655751
>>655748
Ну скормил ты тулзе файл, а че дальше-то? Она ренеймит и кидает в какой-то каталог или что? И тебе нужно заменить исходных файл из жирно каталога?
66 2655762
>>655732
Поддвачну шарподебила.
67 2655772
Вопрос по DI не в контексте asp.
В asp dbcontext обычно регают как scoped, дальше пайплайн сам создаст скоуп на каждый http реквест и все заебись.
Как быть не в asp? У меня также есть dbcontext, который прокидывается в хэндлеры медиатора. Я могу в теории сам создавать скоуп через фабрику в диспетчере, где вызывается медиатр, чтобы все команды и квери получали один инстанс на вызов. Но это выглядит как дрочево, т.е мне придется ещё и фабрику как зависимость прокинуть.
С другой стороны мб регать как transient, но тогда остается проблема, что хэндлеры получат каждый по контексту? Сейчас скоуп работает как синглтон.
Как бы вы регали dbcontext не в asp? Кроме как руками скоуп делать есть варианты?
68 2655773
>>655772
так ты и не регай. получай контекст по необходимости.
69 2655917
>>655772
всё зависит от твоей многопоточности
1909931
70 2655999
Как на линуксе поставить старые дотнеты и чтобы они не конфликтовали с последней текущей версией?
16618503265371.jpg351 Кб, 918x750
71 2656035
>>649578 (OP)
Кто-нибудь, помогите!
На работе нужно сделать надстройку для excel, используют версию 2010 года.
Я начал сначала по гайдам с vba делать, но потом перешёл на c#, ибо насколько я понял это более гибкое решение.
Создал проект, начал реализовывать первый какой никакой функционал, и обнаружил, что как будто кроме меня этим никто толком и не занимался, в интернете вообще нет информации толковой, единственное что хоть как-то помогало это документация от майков, но там очень много непонятного (в том числе из-за того, что язык я почти не знаю, изучал только python.)
Быть может есть какие-нибудь ресурсы с этим? Ну форумы, статьи, видео, книги и т.д. на примете?
Желательно особенно про сводные таблицы информации.
С меня как обычно.
72 2656046
>>655751

>Она ренеймит и кидает в какой-то каталог или что?


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

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

Все что мне доступно — это стринговая информация. Я думал мб есть какие-то регулярные выражения для подобной ситуации.
73 2656093
>>656035

>сделать надстройку для excel,


Макрос или плагин? Каким образом ты взаимодействуешь с приложением?
Или ты типа создаешь свое приложение, которое запускает эксель и пердит в него?

>ибо насколько я понял это более гибкое решение.


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

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


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

Ну что могу сказать? Если ты не хочешь положить несколько лет на это дерьмо, а потом выбросить в помойку, то юзай vba. Перейти с бейсика на шарп — дело одной недели.
exceladdin.PNG80 Кб, 1316x696
74 2656110
>>656093

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


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

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


Тут ты прав, но я постараюсь

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


Все, что у меня работает тоже сделано методом тыка, понимаю. Возможно поступлю потом так же.
75 2656126
>>655744
Если я правильно понял твою задачу, то просто вырезаешь в обеих строках спорные символы и сравниваешь, что получилось. Если совпало, то значит это одно и то же. Можешь не вырезать, а заменять (точно так же в обеих строках) на какой-либо общий символ, который не может встречаться ни там, ни там (ну или эскейп последовательность).
76 2656137
>>656035

>На работе нужно сделать надстройку для excel, используют версию 2010 года.


Hello darkness my old friend...
77 2656191
>>655773
>>655917
Отбой получается. Я нашел место где создавать скоуп. Получилось буквально 1 в 1 как в asp на каждый реквест
78 2656209
Вам нужно просто понять, что мой успех он неизбежен. Вам стоит смириться и сдаться с этим. Моя дисциплина самая прочная на Земле, как сплав хрома, кобальта и никеля. Моя мотивация как у льва с утра - бежать быстрее антилопы, чтобы её съесть. Вам нужно ПРОСТО смириться и начать плыть по течению, пока я прорабатываю все кишочки и устанавливаю все кафки.
79 2656218
>>656126
Тоже годная идея, но нужно как минимум два прохода по символам + операции со стоками.
80 2656239
Помогите пожалуйста.
Есть .NET Core WEB API проект (.NET 7), и я его опубликовал как Windows Sevice на определенной машине.
На самой машине до эндпоинтов достучаться можно, через localhost.
Теперь нужно достучаться до них с другой машины.
Админы говорят что порты открыли (443, 80, 5000) 5000 потому что localhost открывается на нем.
С другой машины доступа нет, скорее всего я чего-то не добавил в сам проект.
Что мне нужно сделать? Я пытался поставить URL самой машины через UseUrls, но это не перезаписало дефолтный URL, сервис все равно доступен только через localhost.
Я перерыл весь гугл но момента похожего на мой не нашел. Во многих примерах есть класс Startup которого нет у меня, нужен ли он для UseUrls? Не понимаю.
81 2656241
>>656110

>Делаю надстройку, а именно панель инструментов.


VSTO?

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


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

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

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

Эксель форум
https://www.excelforum.com/excel-programming-vba-macros/
image.png99 Кб, 982x542
82 2656322
>>656218

>операции со стоками.


Ну ясен хуй 'операции со строками', если ты сравнивать их собрался.
>>656218

>но нужно как минимум два прохода по символам


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

Вот на пике по быстрому накидал:
83 2656325
>>656046
Сделай конвертер имён сам, полученные имена пихаешь в словарь, он будет у тебя содержать оригинальное имя и то, которое сделает тебе тулза сторонняя
Потом берешь все файлы в папке вывода, ренеймишь, пихаешь обратно по пути из словаря

(Код примерный)
foreach var f in Directory.GetFiles(путь выхода тулзы сторонней){
var oldPath = dictionary[f.Name]
f.Name = Path.GetFileName(oldPath)
File.Move(f.Path,oldPath)
}
84 2656326
>>656218
>>656322
И да, вариант с заменой лучше, чем с вырезанием.
85 2656332
>>656035
Добро пожаловать в мир COM Interop пердолинга

Гайдов почти нет, если будет установка через в виртуальные рабочие места через сись админа - заворачивай в exe через wix
86 2656361
>>656322

>Ты там в цикле символы что ли менять собираешься?


У тебя сначала
1. идет цикл замены символов одной строки
2. идет цикл замены символов второй строки
3. цикл сравнения двух строк
Три цикла

>Ну ясен хуй 'операции со строками'


Я имел ввиду, что рождается новый экземпляр строки.
Replace создаст еще одну строку.
87 2656395
>>656361

>1. идет цикл замены символов одной строки


>2. идет цикл замены символов второй строки


>3. цикл сравнения двух строк


Хуйней не страдай. Под капотом всегда где-нибудь да будет цикл. Либо на уровне шарпа, либо на IL, либо еще глубже. Тебе не похуй ли? Главное, что не ты сам руками перебираешь.
>>656361

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


А тебе не похуй ли, что там рождается?
Ну если ты байтоеб дохуя, замени на StringBuilder.
88 2656534
>>656191
несмотря на то что это типа контекст это все равно что работать с бд в обычном режиме. нужна база? - открыл, почитал/записал, закрыл. И тут DI не нужен. Просто в asp.net есть удобный scope куда можно это приатачить и тогда никто не забудет закрыть коннект или вернуть в пул.
в других приложениях ты сам открываешь когда тебе нужно и закрыаешь, когда не нужно. И никакого смысла цепляться за DI scope нет.
89 2656573
Какие же все таки мс (цензура).

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), зато себе сделали либу для студии.
90 2656632
>>656573
Байтоеб, спок. Если твои хотелки так тебе нужны - реализуй.
91 2656636
>>656632
правильно. и зачем нужна стандартная библиотека. только велосипеды (как делает буквально каждая софтина на шарпе), только хардкор ))

ps: где ты увидел байтоебство в этом списке я вообще хз. но шарписты - люди с причудами, увидеть могут многое.
92 2656660
>>656534
Ты имеешь ввиду напрямую писать что-то вроде using (ctx = new AppCtx())?
1 А тестировать как?
2 В моем случае два варианта. Прямо в хэндлерах медиатора создавать, тогда на каждый реквест из другого приложения в моем будет создаваться n раз контекст. N раз потому что неизвестно как построится цепочка вызовов, для каждого реквеста она своя и может содержать несколько вызовов хэндлеров. Либо я открываю контекст где-нибудь, где происходит диспетчеризация вызовов и тащу это на каждый вызов команды, закрываю по возвращению к клиентскому коду.
Просто я подумал, что мне будет выгоднее настроить все похожим с асп образом т.к тулза тоже обрабатывает запросы, но не http
93 2656664
>>656636

>где ты увидел байтоебство в этом списке я вообще хз


Модель поведения 'схожая до степени смешения', если выражаться юридическим языком.
94 2656677
>>656660

>1 А тестировать как?


вопрос "как тестировать" сразу встает когда видишь ctx = new AppCtx())
и мс на это дело говорит - суй подставную бд типа sqlite или плоди огород в виде репозитариев (и тогда зачем нам вообще контекст и тяжелый EF)

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

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

>все похожим с асп образом т.к тулза тоже обрабатывает запросы


ну если ты можешь создать scope ну создай почему нет (и не забывай про ambient context). Но обычно весь скоуп это просто using
95 2656679
>>656664
мде. тяжелый ты случай

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

просто если ты привык писать медленное и большое - ну что ж...
96 2656742
>>655732
Нахуй ты высираешься, если тебе нечего сказать по делу, животное обоссанное? Игры у меня уже есть готовые. И заработал я на них уже больше, чем всё твоё нищее семейство уродов вместе взятое за всю жизнь (на пике лишь малый процент). Давай ещё что-нибудь высри, посмеюсь с обезьяны убогой.
97 2656750
>>656742

>И заработал я на них уже


До-о-о. С такими-то доходами, конечно же, только на дваче советов спрашивать.
98 2656771
>>656742

>мульён долларов


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

>ambient context


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

>обычно весь скоуп это просто using


Да, я просто прокидываю вызывающему коду фабрику, которая создаёт скоуп через юзинг на каждый запрос, получаю диспетчер и дальше через него продолжаю конвейер обработки запроса. Так на каждый запрос контекст создаётся один раз и используется сколько нужно. Немного напрягает, что через эту фабрику можно получить провайдер, но у меня она буквально в одном методе на 5 строк кода задействуется, так что может и ничего
100 2656856
>>656792

>что это антипаттерн


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

>это некий синглтон, который шарит какой-то ресурс и доступен всем


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

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

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

Уебывай отсюда и не возвращайся
sakutinmob.jpg13 Кб, 640x430
102 2656871
>>656742
Помнишь меня? Я твой бывший проект менеджер. Я узнал тебя по твоим шизоидным словам и высерам. А помнишь, как мы всей галерой нассали тебе в кружку прошлой зимой, на корпоративе? Ты ещё выпила, облизнулась и попросила добавки. А потом тебя пришёл забирать твой ёбырь, тот самый дворник, который на Вернадского изнасиловал собаку и получил условный срок за то, что украл плавленный сырок в магазине. Он зашёл ресторан, все стали смеяться, а ты обосралася под себя от стыда, а потом сказала, что всю жизнь будешь ненавидеть изучать дотнет, но недавно, когда ты в очередной выставил доходы всей галеры за свои, чтобы их унизить, то они пустили тебя по кругу, после чего тебе наложили на анус восемь швов. Как поживаешь?
103 2656970
Ранее уже писал на эту тему, но тут конкретизирую, ибо немного продвинулся.

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

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

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

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

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

Т.е. перед строкой ставишь знак доллара, далее пишешь сообщение одной строкой
$"Min: , Max" без мудоебских конкатенаций, а потом в эту строку вставляешь в любом месте данные в фигурных скобках, для которых автоматом будет вызван метод .ToString(). Так удобнее.
106 2657154
Мне нужно преобразовывать html страницу в image и отдавать файлом на клиент. Нашел два варианта: с помощью чужого апи и с помощью программы wkhtmltoimage.
С помощью апи не хочу, там ключ передавать нужно, к тому же наверное лимиты есть + задержка.
Второй вариант работает хорошо, с нугета скачал врапер, быстро работает и устраивает.
Норм ли хранить на бекенде эту программу? Враппер только аргументы ей передает, а сама она на плюсах написана.
Может есть решение в прямо шарпах? Хотелось бы, чтобы css тоже поддерживался, но для меня главное просто чтобы он из таблицы html делал картинку
107 2657228
>>657152

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


> Сравни экземпляры неработающего и работающего pivotItem ради интереса


У меня голова от этого шарпа уже кипит, может потом...

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


Спасибо, так и сделаю.

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



> А еще не пиши вот так


> "Min: " + DateMin.ToString() + ", Max"



> А пиши хотя бы вот так


> $"Min: {DateMin}, Max"


О, это как f-строки в питоне, прикольно.
108 2657446
>>649578 (OP)
Проработал год и 3 месяца в мухосранской продуктовой конторе. Недавно сократили штаб. На проекте про SOLID и паттерны знал только я . Нет опыта работы с микросервисами ,докерами и брокерами сообщений. Уже месяц не могу найти работу. Что посоветуете делать ? Идти в кассиры? На собесы не зовут, я даже не знаю какой у меня уровень . Субд использовал Mysql, но как я понял,что он никому нахуй не нужен
109 2657471
А логгеры умеют автоматом выводить месседжбокс если возникла ошибка или критическая ошибка?
Приходится дублировать сообщение.
110 2657485
>>657471
Это как? Вот запустил ты серверное приложение на линуксовой виртуалке, где нет монитора. Как там рисовать винформы?
111 2657888
Все таки коллекции в шарпе это тупость.
Постоянно WTF при работе с ними

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

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

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

вот будет шарп 8... а там точно будет FrozenArray? думаю нет. И все методы что принимают byte[] не будут знать как с таким работать, то есть ситуация так и останется - "а ты не меняй вот. ишь че захотел - ридонли ему подавай - просто не меняй ничего и будет тебе риондли. а если ты поменял то ссзб. И вообще, ты шарпист же - терпи. Контракты? Безопасность? все это для лошков. Шарпист не боится вернуть Ilist и верить что никто его не изменит, не боится также null и вообще он смелый и упорный (в плане обхождения граблей)."
112 2657889
>>657888
ну то есть я могу использовать и использую Memory, но это все же костыль.
113 2657971
>>657446
Можешь рассказать что вы делали на работе и какой стек использовали? Я пока ещё новичок, хотел бы узнать о том, что используют на реальной работе, чтоб понять на что делать упор.
Субд пока только mssql и sqlite использовал, разве в них есть различия с mysql, чтобы было сложно перейти? Они ведь все примерно один sql используют. И разве сейчас работают напрямую с базой не через orm помимо каких-то специфичных ситуаций? Спасибо если ответишь
114 2658033
>>657971

>Субд пока только mssql и sqlite использовал


Я не он, но поотвечаю.

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

>>657971

>И разве сейчас работают напрямую с базой не через orm помимо каких-то специфичных ситуаций?


Даже если у тебя будет проект с философией ORM-онли, то ситуаций когда тебе по работе придется лезть в базу и писать разные запросы будет очень много. Для тестов, анализа, починки сломанного и т.д. Плюс опять же, чтобы нормально и продуктивно работать с ORM, нужно как минимум иметь представление, что она делает под капотом. Ну и на каком-то этапе тебе возможно придется даже разбирать построенные ей запросы, чтобы понимать какого хуя БД так тяжело ворочается.
115 2658078
>>657485
Я про случай для десктопного приложения.
Вообще у логгеров есть модули способа вывода, которые подключаются по необходимости. У меня так в файл и дебаг-окно выводится одно и то же сообщение, но конкретно расширения для вывода в месседжбокс я почему-то не увидел, хотя совершенно очевидно, что на десктопе при Error и Critical Error в 99% случаев требуется уведомление пользователя месседжбоксом.
Хотя есть шанс, что такой подход может обернуться пердежом тысячей диалоговых окон.

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

А еще мне непонятно как регистрируется код ошибки. Возьмем к примеру условную ошибку в вижуал студии "XLS0112". Кто дал название этой ошибке? Это все делается вручную или есть подход делать это автоматом? Или создается какая-то база данных всех ошибок? В какой последовательности регистрируются? Разработка идет непоследовательно и может получиться так, что сначала идет ошибка №112, а следующей строкой ошибка №330 — это норма?
116 2658137
>>658078

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


Уведомления пользователя - это не забота логгера.
117 2658153
Есть стиль для радиокнопки со свойством выравнивания по левому краю (пикрил 1).
Есть 4 радиокнопки в окне, использующие данный стиль (пикрил 2). Одна кнопка сама по себе, а три остальные находятся в PopUp. Так вот, те, что в попапе, игнорируют состояние свойства, определенное стилем (смотрите окно свойств). А если я укажу явно способ выравнивания, то окно свойств вообще отказывается визуализировать (пикрил 3).

Первая радиокнопка не имеет подобных аномалий. Замечу, что это касается только окна свойств, по факту кнопка ведет себя соответствующе стилю. Я могу еще понять, почему не отображается актуальный размер кнопки, ведь попап скрыт, но выравнивание же не зависит от внешних факторов?
118 2658172
>>658137
Почему? Это просто вариант отчетности, к тому же у него уже есть вся информация. Почему я должен эту информацию нерационально дублировать?
119 2658208
>>658172
Потому что основная задача логгера сохранять историю событий (запросы, ошбики и т.д.) в логгируемой системе в каком-либо хранилище (окно консоли, файл, БД и т.д.). Причем делать он должен это максимально быстро и даже в случае падения основной системы.
Уведомление пользователей это другой слой абстракций и ты его либо реализуешь в основной системе отдельно, либо если тебе так нужно уже после логгера отдельным сервисом.
120 2658223
>>658153
А ты впиши IsOpen тру и узнаешь
121 2658498
>>656771

> Люди с такими доходами нанимают кодо-макак, а не советы на двачах спрашивают


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

>>656870
>>656871
Нормально работо-скот порвался. Да, кстати, вчера пришла выплата с рекламы. Сколько вам и вашим нищим, убогим семействам и всей родне придётся работать, чтобы столько заработать? А у меня это просто пассивный заработок. Один из нескольких, если быть точнее. Удачи поработать на дядю, клоуны. Можете не отвечать, мне более не интересно тявканье нищего говна.
122 2658610
>>658033

>все массово переходят на постгрес


Спасибо, буду его использовать

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


Это делается через ado net? Его я ещё не смотрел. Пока что только через mssql management studio писал запросы. Учился на базе northwind, т.к ее рекомендуют майкрософт и читал теорию баз данных про нормализации, индексирование и прочее, но пока не приходилось применять в проектах.

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

Спасибо за ответы
123 2658615
>>658610

>сделать то же самое


Фикс
124 2658672
>>658498

>Можете не отвечать, мне более не интересно


А я отвечу, т.к. знаю, что ты все равно прочитаешь.

Все равно, как если бы наркобарыга пришел и начал задавать вопросы как ему лучше толкать наркоту, был бы справедливо обоссан и потом начал возмущаться в стиле "зато я бабки гребу лопатой, а вы нищеброды"
То что ты дохрена зарабатываешь, не отменяет того. что ты зарабатываешь на дерьме и место твое у параши.
125 2658683
>>658610

>Это делается через 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 тоже понадобится знать.
126 2658805
>>658683

>лучше всего используй 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 или каких-то ещё технологий.
Я смогу изучить как работать с микросервисами дома на локальной машине, как со всем остальным до этого?
Везде в вакансиях где пишут про микросервисы есть что-то вроде "требуется опыт работы с микросервисами", то есть подразумевается, что человек уже на другой работе имел дело с ними?
Вот я и подумал, что их изучают уже на работе в реальных проектах.
127 2658909
>>658498

>>люди с такими доходами


187 баксов заработал
Старина, сьеби отсюда и дрочи свои копейки в другом месте
128 2658930
>>658909
У него тысячи там нарисованные конечно
129 2658950
>>658610

>Смысла mvc не понял, то же самое ведь делает razor pages


не не то же самое. MVC/MVP/MVVM - разные подходы логического разделения приложения. У каждого свои достоинства и недостатки. И не пережиток прошлого это. Как раз наоборот - razor pages для любителей "пережитка прошлого", кто привык там писать в стиле вебформс и "не нужным мне ваши MVC, и не заставите, я привык как в вебформс" (это как люди после винформс идут в WPF и все равно пишут так будто они в винформс)
130 2658974
>>658805
Дался тебе этот фуллстек
Зарплаты те же, а гемора больше
131 2658995
>>658805

>Кстати сильно ли нужно знать эти js фреймворки? Слышал мнение, что новичка вряд ли возьмут не фулстек и нужно одновременно знать .net со всеми необходимыми технологиями и js/ts с его фреймворками.


Новичков да, очень часто берут на позиции где минимум 30% будет работ по фронту. Потом уже когда появится опыт сможешь говорить на каком органе ты фронт вертел и почему не будешь им заниматься.
Но в любом случае знание js и какого-нибудь js-фреймворка типа react или angular будет очень большим подспорьем в работе. Как минимум придется разворачивать себе тестовые стенды с фронтом, дебажить его и т.д. Т.е. понимание как это работает может очень пригодиться.
>>658805

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


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

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


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

Собственно вся суть, почему везде требуют именно коммерческий опыт, потому что только на реальных проектах ты сможешь научиться решать реальные задачи нужные бизнесу. Т.е. не вылизанные учебные недопроекты в вакууме, где все расписано и все понятно. А стандартные "Распараллелить вот чё там под этой кнопкой на 2-3 потока, если получится" и "тут где-то проблема, надо найти и устранить".
132 2659006
>>658995
Понятно. Спасибо большое
133 2659216
Даже моему протыку, Нику Чапсису, стало вконец очевидно, что джава лучше. Одумайтесь и вы шарписты!

https://www.youtube.com/watch?v=IrlBW2Oa_8Y
134 2659221
Есть какая-нибудь возможность запретить contextmenu(который по умолчанию в текстбоксах) использовать мой стиль textblocka? Есть какой-то легкий способ или указание ключа для стиля будет самым легким? У меня просто много текстблоков и не хотелось бы юзать ключ
135 2659255
>>659221
ContextMenu="{x:Null}"
136 2659301
>>659216
Джава дебил даже видео осилить не мог.

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

Во вторых. В шарпе если, что-то появляется и оно народу заходит, то этим начинают пользоваться. В джаве же ты будешь сидеть хорошо если на 14-й версии, а в большинстве случаев вообще на древней восьмой. И тебе ни тепло, ни холодно будет от этих новых фичей.
137 2659321
>>659216
С первым апреля от Ника!
А почему ты в выходной прибежал в шарпотред кстати? Так сильно горит, что шарп вытесняет джаву из бэкенда даже в российский банках?
138 2659335
>>659255
Это просто отключает contextmenu, меня устраивает то, которое по умолчанию. Ладно, просто ключи тогда раздам.
139 2659410
>>659321

>С первым апреля


Первого апреля не существует. Это миф.
140 2659520

>RB Whitaker - The C# Player's Guide


Нормальная книга для начала?
20230401.png4 Кб, 812x136
141 2659542
Сап.
Пытаюсь собрать ASP NET веб приложение на WebForms в VisualStudio 2019 на NetFramework 4.7.
Подскажи как поменять версию языка?
Интернеты говорят в корне проекта должен лежать файл prjName.csproj, в котором можно поправить свойство. Но файла нет. Есть только веб.конфиг.
142 2659555
>>659542
Создай в студии новый ASP.NET проект, скопируй оттуда .csproj файл в свой проект и отредактируй как тебе нужно.
202304011.png9 Кб, 541x243
143 2659615
>>659555
Оказалось что в VisualStudio есть две опции при создании нового проекта, пикрелейтед.
Новый проект веб приложения имеет *.csproj файл, а веб сайт нет.
Если подсунуть файл от веб приложения к веб сайту, он, ожидаемо, не используется.

Я пытаюсь унаследоваться от уже скомпилированного сайта/приложения, который нашел на IIS сервере.
По структуре каталога скомпиленного сайта он больше похоже на "веб сайт", поэтому его и использовал при создании нового проекта.
Возможно, для веб сайта есть другие опции по изменении версии языка?
Или, судя по "имеет ограниченную поддержку MSBuild" оно вообще не умеет в более высокие версии?
Хотя сама IDE предлагает обновить версию. Но не справляется и упирается в ошибку.
144 2659718
Новая версия .NET 10 и C#13.

https://habr.com/ru/post/726356/comments/
145 2659725
>>659615
Пересобрал все как веб приложение.
Собирается. Версия шарпа меняется.
Похоже, буду пердолить этим путем.
Спасибо, анон, ты няша.

>>659718
Были добавлены аналоги инкремента для деления и умножения.
i++ эквивалентно i = i + 1
i// эквивалентно i = i / 1
i эквивалентно i = i * 1
146 2659762
>>659718

>.NET 10 или как его теперь начнут называть .NET X


> Почему .NET 10 и где .NET 9?


> "У нас так принято." - Дословный перевод.


Бля, когда же человек отвечающий за нейминг версий продуктов в майкрософте сдохнет нахуй уже.
Что винда, что приставки, что фреймворки - сплошной ебанизм в версиях.
147 2659773
>>659762
Алсо я в курсе, что это первоапрельская статья, но это не отменяет того, что в майкрософте уебанский нейминг версий продуктов. Меня просто тригернуло.
148 2659813
>>659718
Ненавижу 1 апреля.
149 2659942
>>659773
А что такого? Windows X вроде бы не было.
150 2660088
Аноны, а насколько реально сейчас найти работу в FAANG, если ты сеньор .NET?
151 2660105
>>660088
А там пишут на дотнете?
152 2660157
>>660105
Нет.
153 2660262
>>660105
В амазоне и майкрософте (очевидно)
154 2660278
А что делать, если вся твоя жизнь - это дотнет, а в FAANG хочется?
155 2660289
>>660278
Надо знать алгосы и сисдиз и архитектуру компьютеров, ты должен быть экспертом в этих вопросах. Надо просто уметь написать за выходные на с++ или расте что-нибудь системное типа systemd или прикладное типа транспилятора из питона в сишку, читать исходники опенсорсных системных библиотек и понимать, что в коде делется.
Где здеь ты видишь шарп?
156 2660293
>>660289
Ты работаешь в фаанге?
157 2660297
>>660293
Да и нах нужен это ваш фаанг. Просто заканчиваешь в МГУ по программе повышения квалификации на фин математике. Потом защищаешь к.т.н. и идешь устраиваться в финтех. Всяко лучше чем копаться во внутреннем легаси коде гугла.
158 2660317
>>660278

>а в FAANG хочется?


Зачем?
159 2660334
Котаны, как переопределить метод не меняя название класса и метода родителя?
У меня есть длл-ка с кучей классов и методов.
Я хочу изменить код одного из этих методов.
Но так, чтобы приложенька до обращалась к нему по имени метода в длл, типа дллКлассНейм.дллМетодНейм() , но при этом фактически выполнялась моя функция.
160 2660359
Как вообще относятся к тем, кто программирует на сишарпе в линуксе?
161 2660366
>>660334
Никак.
162 2660370
>>660359

>Как вообще относятся к тем, кто программирует на сишарпе в линуксе?


Ну а ты сам как думаешь? Конечно же считают людьми второго сорта и при встрече в лицо плюют.
163 2660372
>>660359

>Как вообще относятся к тем, кто программирует на сишарпе в линуксе?


Ну а ты сам как думаешь? Конечно же считают людьми второго сорта и при встрече в лицо плюют.
164 2660374
166 2660448
>>660381
Ебать, 2 часа.
Я за это время как раз успею длл-ку в код ручками перекопировать.
Энивей, спасибо, анон :3
167 2660515
>>660448
Только час. Второй доклад до кучи идет про другое. В первом докладе несколько кейсов. Возможно один из них тебе подойдет.
168 2660830
>>658033
Стоит ли мне задрачивать постгри, если я знаю MySql. SQl он и в африке SQL, только со своими нюансами, или есть вариант свичнуться уже на рабочем месте?
169 2660853
Вот не пойму. Допустим написал проект на текущем дотнете 7 версии, а через два года выйдет какой-нибудь 9 дотнет. Как работать с этой же версией через пару лет?
170 2660859
>>660853
1. Не обновлялся и сидеть на бочке с порхом в надежде, что ничего не сломается.
2. Потратить время на миграцию на новый дотнет.
171 2660861
>>660830

> только со своими нюансами


В том-то и дело, что нюансов куда больше, чем сам SQL. Начинаешь создавать таблицу и сразу вспотыкаешься: "ой, а где автоинкремент, что за SERIAL, сложна, нипанятна". Лучше заранее подготовится.
Никто не будет переписывать.webm1,3 Мб, webm,
1920x1080, 0:03
172 2660877
>>660859
Ты представляешь объём работы по переписыванию даже среднего по размеру проекта на новый дотнет?
173 2660891
>>660877
Ты так говоришь, будто речь о переписывании с нуля на другой язык.
174 2660926
>>660891
Чел, ты...
175 2661060
>>660853
Поэтому под версией указывается в скобочках (долгосрочная поддержка) или не указывается. Можешь осесть на долгосрочной (LTS) и минимум 3 года не париться.

>Ты представляешь объём работы по переписыванию даже среднего по размеру проекта на новый дотнет?


Сколько? В конфигурационном файле одну строчку переписать?
Ты же не с дотнета на кор пересаживаешься.
176 2661247
>>660877

>Ты представляешь объём работы по переписыванию даже среднего по размеру проекта на новый дотнет?


Зависит исключительно от архитектуры. Если изначально написано нормально, то у тебя максимум месяц уйдет даже на 10-к приложений. А если хреново, то ты и одно будешь полгода дрочить.
177 2661249
>>661247
Откуда при проектировании архитектуры знать, что сломают в будущем дотнете?
178 2661251
>>661247

>если исходные условия подогнать под мой неправильный ответ, то он станет правильным


Работаешь тоже так?
- Сделай нам проект
- Готово, держите
- Но твое говно не работает
- Оно работает, если ... если ... если ... если ...
Ебало представили?
179 2661258
>>661249
Тебе за это деньги платят
180 2661279
Поцоны, у вас все нормально после перехода на .NET 7? Доложите обстановку.
У меня в аспе, перестали генериться дефолтные guid айдишники юзерам в UserManager<User> _userManager.Create();, просто пустые строки, даже не null. Кто-то знает как это фиксить? В интернете нихуя.
181 2661283
>>661279
Надеюсь ты кабанчику перевел проект, а не свой пет...
182 2661293
>>661279

>Кто-то знает как это фиксить?


Ну сделай там что-нибудь. Должно помочь.
183 2661296
>>661283
Само собой в прод я еще не лил.
>>661293
Спасибо большое, уже начинаю делать!
184 2661368
Мужики, здарова! Сразу скажу что я фронтенд-реакт-макака, поэтому сильно не бейте. Вообщем, мне нравится бекенд, потому что вся магия в основном происходит именно на нем, поэтому в перспективе хочу стать фулкеком с упором на бекенд. Начал свой путь в программировании именно с фронтенда, потому что тупо проще. Выбор у меня был между нодой, пыхой и сисярпом (джаву не, спасибо). Нода гамно из-за всратого npm, пых просто не нравится почему-то, а вот сисярп смотрится самым оптимальным. Кого не спрашивал, все его хвалят. Дак вот, хотел бы спросить, как мне, новичку, лучше всего начать и с чего?
Из вариантов я подобрал для себя:
1. Дока мелкософта
2. Метанит
3. Видосики на ютубе. Может быть кто-то знает годные курсы на ютубе?

И ещё вопрос, с какими сложностями я могу столкнуться и как мне их лучше всего избежать? Ну, например, подучив что-то.
185 2661383
>>661368
сложность одна - как потом на этом зарабатывать.
с этим определись, а потом уже языки выбирай.
186 2661393
>>661383
Ну с вакансиями плоховато, это да. Питон и жиесть лидируют, само собой.
187 2661407
>>661383
То есть ты бы советовал придерживаться джаваскрипта?
188 2661476
>>661368
На сишарп как раз нужны фуллстеки. Чистые бэкендеры мало востребованы.
189 2661482
>>661368
Метанит и справочник Албахари.
190 2661485
>>661476
Не верное суждение.
191 2661500
>>661485
Двачую, помимо фронтенда на реакте дотнетчики еще должны уметь в кубер, докер и azure
192 2661526
>>661500
Вот это уже ближе, кроме того, что azure сейчас уже никому не нужен.
12.png23 Кб, 926x618
193 2661618
ВОПРОС: как выводить списки? опрашивать для каждого вывода? а как посчитать общее количество, если система оффлайн и опросить ее невозможно?
194 2661697
>>661618

>опрашивать для каждого вывода?


Да.

>а как посчитать общее количество, если система оффлайн и опросить ее невозможно?


Вообще в нормальных системах в выводе с пейджингом присутствует поле вроде Total, означающее общее количество элементов на всех страницах.
195 2661830
>>660370
>>660372
Ставить виртуалку с виндой что ли?
196 2661917
>>661830
Да хоть с хуйдой.
Если у тебя в организации по регламенту винда - работаешь на винде, если линукс - на линкусе, если пидорство - на маке. Если требований нет - на чем хочешь. Я вот когда на толчке сижу размышляю, вообще на телефоне с андроидом програмки под .net пишу.
Главное чтобы твой конечный продукт запускался на системе целевой машины.
197 2661925
>>661917

>Я вот когда на толчке сижу размышляю, вообще на телефоне с андроидом програмки под .net пишу.


Прям какая-то мечта советского фантаста...
198 2661926
>>661917
Я раньше общался с одним челом, который писал на сишарпе, и он говорил, что когда станет богатым, то купит виндовс. Поэтому писал в линупсе в монодевелопе каком-то.
.png14 Кб, 683x707
199 2662018
Хм. Вопросик. А как сделать в одном потоке типа многозадачность?

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

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

Почему я такой тупой(((
.png103 Кб, 497x832
200 2662069
>>662018
Хм. Хм. Только такое пока что придумал, пока ждал ответа...
Но это не то. Тут я явно должен сказать в методе - на, бери управление и делай че-то. А я бы хотел не так, хотел бы чтобы сам поток был умный и такой: Ля, чет долго я тут сежу-пержу, го посмотрим че другим задачкам надо.
image.png30 Кб, 443x443
201 2662135
Сап двач, помоги с тестовым заданием на работу в 100к наносек.
задача следующая
дан исходник на java с одним классом и одной функцией в нём и нужно с помощью antlr распарсить этот метод и узнать все возможные результаты её работы
.png185 Кб, 362x368
202 2662148
>>662135
А чо не на шарпе?

Берёшь грамматику здесь: https://github.com/antlr/grammars-v4/tree/master/java/java
Грузишь в Antlr, скармливаешь ей исходник, обходишь дерево.
203 2662155
>>662135
На кой хуй там нужон этот antlr?

Если не считать эксепшины, то 1, 4, 5, 6
204 2662183
>>662148
пояснение, на шарпе нужно написать анализатор данного кода, который перед этим распаршен с помощью antlr

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

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

ясен бобер что нужно будет использовать паттерн посетитель, но хотелось бы подробностей
23041056933.png19 Кб, 1369x159
205 2662325
Драститя, простите грешного что полез сюда нихуя не зная (банальных знаний 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" или "-НАБОРЦИФРИБУКВ".
Помогите тупому, с меня нихуя по традиции.
206 2662427
А если у меня стоит винда, но я создал виртуалку с линуксом и там программирую на сишарпе. Это нормально или на меня будут смотреть как на дурачка?
207 2662431
>>662427
Дрочит конечно каждый как хочет, но будут смотреть как на дурачка, всё-же шарпы это что-то под винду и UWP, логично будет заниматься языком там, для чего он предназначен.
208 2662437
>>662427

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


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

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


)))))))
Фленоввсё.jpg221 Кб, 1280x720
210 2662515
Флёнов всё! Закрывает канал!
https://youtu.be/jIoJ5IJh78s

Учите джаву, пока не поздно
211 2662542
>>662515
пол лимона далларов уже выплатил или в ростов возвращается?
212 2662554
>>662018

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



async/await

или APM с его BeginAction/EndAction
213 2662555
В чём смысл перебора коллекции через foreach, если можно получить только копию значения? Во всех нормальных языках этот цикл должен давать две переменные: ключ и значение.
К примеру,
foreach(key, value in collections) { ... }
214 2662559
>>662555
Это в каких языках
215 2662564
>>662559
РНР
216 2662569
>>662564
Угу, а все нормальные браузеры - это Internet Explorer.
217 2662570
>>662564
Это тот язык который не делает различие между массивом и словарем
Это там одна сущность
218 2662581
Почему микрософты напихали всякой бесполезной фигни в сам язык и дотнет, а для работы с джейсонами используют какую-то левую библиотеку. В чём проблема была добавить это в стандартную библиотеку?
219 2662587
>>662581
Ну так добавили
220 2662595
>>662587
Я про NewtonJson, которая качается из NuGet-репозитория, а не сразу доступна внутри dotnet
221 2662599
>>662595
Добавлять в базовую библиотеку то что пишется третьими лицами? Нуну
222 2662610
>>662599
Почему они сами не написали сразу?
223 2662648
>>662610
Написали
224 2662651
>>662555

>Во всех нормальных языках этот цикл должен


Во первых не должен. Во вторых в C# при необходимости такое можно сделать (хотя оно и будте не нужно в 99% случаев)
video.webm33,5 Мб, webm,
1280x720, 0:50
225 2662657
>>661925
Сорян, на толчке снимать было неудобно, поэтому так.
226 2662660
>>662657
да мы уже поняли кто ты. не нужно было пруфать.
227 2662676
>>662660
Кто это?
228 2662699
>>662676
нищеброд который не может позволить себе ноут планшет
229 2662706
А нужно изучать всякие докеры-кубернеты?
230 2662719
>>662699
Просто там откуда он капчует планшеты и ноуты запрещены. Телефоны собственно тоже, но их хотя бы можно протащить при определенной сноровке.
231 2662856
>>662554
Там же не гарантирован однопоток.
Мне-то надо это в контексте - попробовать на ARM одноядерном с 128MB оперативки - запустить приложение с полноценным дотнетом. А там-то не только оно будет, но и другие службы всякие, ну и линуксу тоже чет надо.
Просто тесты с классическим подходом - приводят к тому - что миллиард тредов создается и большую часть времени - контроллер тратит на то чтобы переключаться между ними. Даже 20 потоков - уже больно.
232 2662859
>>662719
Из тюрьмы? Или из психиатрической лечебницы?
.png95 Кб, 768x780
233 2662925
Хочу кодревью.
Дайте кодревью!
234 2662932
>>662925
Цветовая схема у тебя - говно.
235 2663012
>>660088
Бамп.
236 2663023
>>663012
Какого ответа ты ждёшь от миддлов со 100к и госзаказами?
237 2663103
>>662925
вот потому eventы и плохая конструкция в шарпе. Берется слепок подписчиков, начинает обходить, а в этом время кто то отписался и ему не нужны никакие вызовы. Но event про это не знает.

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

Решение проблемы отписки во время вызова придумаешь сам. ты же умный.
238 2663213
>>663012
А хули там делать в твоем FAANG-е?
Вот серьезно?
239 2663349

>Property 'Pages' does not support values of type 'PageContent'.


Пиздец, искал решение проблемы и челы 13 лет назад пишут, что это уже тогда известная проблема и предлагают использовать ебаные костыли. Серьезно? за 13 лет это говно не смогли пофиксить? И это уже не первый раз я встречаю подобое. wpf вообще хоть немного жив?
image.png453 Кб, 893x867
240 2663389
>>663349
А что сделал ТЫ для того, чтобы это исправили?
Хотя бы issue на гитхабе завел/обновил?
241 2663626
Спрашивают ли на собесах весь сахар сишарпа? Типа чем is от as отличается или out от ref?
242 2663634
>>663626
Нет.
243 2663649
>>663626
Я - да.
А еще сверху про рефлексию, кодген люблю поспрашивать.
А уж если чел мне понравился - еще могу про IL начать спрашивать.
244 2663668
>>663649
Прям дизассемблировать сишарп-код в IL заставляешь?
245 2663670
>>663668
Написать на бумажке IL для кручения деревьев.
246 2663673
>>663668
>>663670
Та не. Даю кусок IL кода на бумажечке и прошу пояснить, че происходит и какой был код изначально. И как бы можно было изначальный код переписать чтобы было лучше.
247 2663865
>>649578 (OP)
На вашем сисярпе работу то можно найти?
Для чего его вообще сейчас применяют если десктоп никто уже не пилит?
248 2663886
>>663865
На заводах активно применяется, чтобы байтики туда-сюда гонять.
Для всяких автоматизаций - тоже активно.
Ну и если повезет - бекенд.
Если не повезет - фуллстек говнина с блазором.
Если сильно не повезет - вебформы.
249 2663892
>>663865

>Для чего его вообще сейчас применяют если десктоп никто уже не пилит?


Половина (ладно, пусть будет треть) русского финтеха на шарпе работает и активно развивается.
250 2663893
>>663673

>и какой был код изначально.


Это по принципу "Если человек пытается ответить на подобный вопрос, то он однозначно долбоеб и нам не подходит" ?
251 2663896
>>663886
Я собираюсь писать проект бэк, а фронт на блазоре. Это норм?
252 2663900
>>663896
что есть норма?
для себя можно что угодно
а если хочешь на этом заработать...
253 2663902
>>663900
Это проект для портфолио, чтобы сказать: вот я, вот мой проект, берёте?
254 2663914
>>663626

>is as out ref


>сахар



Тебе не стоит заниматься программированием.
255 2663918
>>663914
Я уже 10 лет им занимаюсь. Теперь бросать что ли?
256 2663920
>>663914
ну вообще технически это сахар

out заменяет собой "обьявление + ref". Чем не сахар?
is MyClass variable заменяет собой if(a is MyClass) { ... a as MyClass} - ну вот это самый настоящий сахар.
257 2663923
>>663918
Тогда тем более не стоит, раз за 10 лет ты так ничего и не понял.
258 2663926
>>663896
Если для себя - норм.
Если для поиска работы... Какой-нибудь js-фреймворк был бы более в кассу, но в принципе на blazor вакансии тоже попадаются и я бы не сказал, что на них есть особенная конкуренция. В принципе почему бы и нет. Я бы только советовал сразу разделять чтобы бэк был отдельным проектом, а UI на блазоре, тоже отдельным.
259 2663929
>>663926
А если c Blazor не получится, а будет просто MVC, то это норм считаеся? Допустим два проекта, первый чистый бэк, а второй MVC, который дергает API первого проекта.
260 2663930
>>663923
Я на РНР раньше писал и сишарп не изучал.
261 2663931
>>663930
php не язык. он шаблонизатор
262 2663936
>>663931
Ты похоже сам шаблонизатор - любишь шаблонные фразы.
263 2663940
>>663936
Я могу быть хоть горшком (если тебе вдруг от этого легче) - это ничего не изменит в пхп.
пхп по рождению обладает откровенно паршивым дизайном языка.поэтому на нем было написано невообразимое количество говнокода.
и хоть он с того времени пытался стать похожим на жаву - его наследие навечно с ним. Думаю многие читали статью "фрактал плохого дизайна".

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

никому нельзя начинать изучать программирование с пхп.
264 2663941
>>649578 (OP)
Что взять для вката в этот ваш сишарп? Какие книги нынче в тренде?
265 2663970
>>663941
Рихтер
richter-1.jpg49 Кб, 688x392
266 2663973
>>663970

>Рихтер

267 2663996
>>663929
Тут важно больше не то сколько у тебя проектов и какие-они, а их качество, плюс выполняется ли у них правило 3-х кликов.
image.png26 Кб, 586x420
268 2664059
Где я дурак?

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

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

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

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

Так?

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

Спасибо за внимание.
269 2664118
>>664059
Нормальные поцоны наследование классов избегают, а когда надо достают из контейнера нужный класс с одним нужным методом
270 2664330
>>664118
ЯННП.
Я "правильно" написал?
271 2664374
>>664059

>Где я дурак?


Если мы говорим про наследование, то где-то в твоем ДНК. Спроси у родителей, может они тоже в молодости полиморфизмом без меры баловались.
А если серьезно, ты проебался где-то еще раньше, когда решил, что тебе нужна такая замороченная схема. Т.к. даже если ты сможешь это нормально сделать, оно будет неподдерживаемо и непонятно. Переделывай.
.png54 Кб, 443x444
272 2664605
Помогите разобраться.

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

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

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

Че делать?

Ну. Т.е. какая хуйня. Есть чужое приложение, которое открывает активно порты и оно типа в дуалмоде но типа на IPv4. Есть мое, которое типа тоже активно открывает порты, и оно типа в IPv6 и типа тоже в дуалмоде.
Если лежит мое - все нормально до первого доходит, но к нему принципиально IPv6 почему-то не доходит.
Если лежит чужое - все нормально до меня доходит, как IPv4 так и IPv6.
Если оба работаем - до меня доходит исключительно в случае если порты не пересекаются.
При этом все нормально открывается, что и усложнило процесс поиска проблемы.
273 2664612
>>664059
Нормально делать так:

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

}
274 2665133
Мужики, кто знает куда пропали нугет пакеты в МАУИ проектах? Захотел поиграться, создал проект, а менеджера нугет пакетов нигде нет. Загружаю какой нибудь старый на нет 4 или 5 все на месте.
275 2665361
>>664605
В общем. Раз ответов нет.
Решил что буду так делать: Ебаю чужое приложение, открываю сокет на IPv4 и IPv6 и пусть чужое ПО страдает.
image.png1 Кб, 513x32
276 2665760
Что значит эта иконка слева и скобки справа в списке текущих объектов снапшота?
image.png40 Кб, 657x471
277 2665866
Пусть определен такой метод. Возможно ли во время компиляции или выполнения проверить, что переданный тип T содержит определение для операции &? Подразумевается, что на место T в вызывающем коде будет передаваться только один из типов byte, ushort, uint, ulong. Делать перегрузку методов со строгой типизацией первого аргумента не хочется. Так же не хочется писать проверку вида if (a is byte aByte) { // выполнить сдвиг } и т.д., да и она скорее всего не поможет, так как выходной результат aByte >> b не получится привести к типу T, указанному как возвращаемый тип метода. Итак, есть ли здесь решение?
278 2666057
>>665866
byte b) where T:unmanaged
279 2666074
>>665866

>не хочется. Так же не хочется


А кого это ебёт? Хочется, не хочется - иди и делай
280 2666094
>>665866
static T Shr<T>(T value, int shift) where T : IUnsignedNumber<T>, IShiftOperators<T, int, T>
{
return value >> shift;
}
281 2666110
>>666094
ошибся, правильно будет: return value >>> shift;
.png8 Кб, 384x99
282 2666257
>>665866
Можно. Только вот вопрос - нахуя?
Вот серьезно. Чем больше я кодю - тем больше кажутся все эти ограничения - костылями какими-то. Придумываешь сам себе, чтобы хуй пойми зачем. Тесты - все еще писать надо. Все еще надо проверять что у тебя там не запаковано чет. Так на кой хуй жизнь себе усложнять? Делаешь все dynamic и как мужик в 1 строчку проблему решаешь.
283 2666263
>>665866
А. Насчет можно. Можно в последних версиях шарпа. Да. С тех пор как завезли Generic math. Проблема что оно все еще говно и ты все еще будешь страдать больше, чем с dynamic.
А так - берешь кодген и делаешь просто нужные тебе методы генерацией, если так уж боишься dynamic.
YIF2g8vPUko.jpg48 Кб, 507x507
284 2666309
Привет, уважаемые господа !
У меня есть программа, точнее плагин к программе, которая работает (и плагин и программа) на C#, но нет инструкций к этой программе и не понятно, как пользоваться одной из её функций. У неё открытый исходный код, который я смотрел, собственно в нём я и нашёл скрытую функцию, и понимаю, как он работает частями, понял, как его активировать (ну я думаю, что понял), но не могу понять, что мне делать дальше и как заставить его работать.
Что посоветуете ?
285 2666313
>>666309
https://github.com/Lacro59/playnite-successstory-plugin

Вот собственно программа, я не могу понять, как работает SteamЭмулятор встроенный.
286 2666315
>>666313
>>666309
Точнее я понимаю, как он работает, это описано в файле SteamEmulators.cs
я не знаю, как заставить его работать.
287 2666320
>>666309
Построчную отладку пробовал?
288 2666330
>>666320
Я не знаю, что это такое, я вообще не программист.
Я просто открывал файлы и читал, что там написано.
Сейчас попробую это погуглить и посмотреть.
Ну гляньте кто-нибудь сами пж, я сам не факт, что разберусь.
289 2666345
>>666330
Напиши конкретнее, в чем ты хочешь разобраться. Хотя бы имя метода поведение которого ты хочешь понять.

https://github.com/Lacro59/playnite-successstory-plugin/blob/42d9964da6290eeda246b88d1f54f9cceb8194b1/source/Clients/SteamEmulators.cs
290 2666414
>>666309

> Что посоветуете ?


Научиться внятно формулировать что конкретно тебе нужно.
Допустим, я посмотрел код твоего этого SteamEmulators. Беглый взгляд дает понять, что оно - смотрит по дирректориям и собирает список статов и ачивок, вроде как просто читает текстовые файлики в нужном формате и парсит их.
Так вот. Без того чтобы понять - что тебе вообще надо - как-то лень разбираться.
Ну. Т.е. как я понял - есть некая программулина Playnite и плагин позволяет ачивки либо оттуда либо туда отобразить.
А дальше - нужно больше входных данных. Что тебе непонятно, что конкретно не работает, почему ты вопрос не задал на гитхабе.
291 2666415
>>666414
Спиздел про файл. Совсем бегло смотрел. Оно апишки дергает. В остальном - вроде не спиздел.
292 2666455
>>666345
>>666415
>>666414
Я хочу разобраться, как использовать эту скрытую функцию.
В файле SuccessStorySettings.cs есть параметр EnableLocal, при его включении уже в самом PlayNite появляется менюшка, в которой необходимо указать путь и id игры, я пытаюсь понять, какой именно путь и id мне надо указать. Вот в файле SteamEmulators.cs описано, как он просматривает папки, которые там указаны, или которую ты укажешь, и читает в этих папках ini файлы. Соответственно, я и указываю этот путь к ini файлу, который он должен прочитать, но ничего не происходит, либо, иногда, он пишет, что я не авторизирован в стиме, и ищет SteamKit2 будто бы работает по тому, что написано в SteamAchievements.cs.

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

На гитхабе чел отвечает редко, он сидит либо на редите либо на форуме, а на редите, там разработчик PlayNite банит за любые вопросы про эмуляторы, на форуме тоже.
Снимок.JPG18 Кб, 622x86
293 2666503
>>666455
>>666415
>>666345
Вот например, код, из базы данных плагина, который относится к игре, к которой я пытаюсь выкачать достижения.
Я менял RAgameid на id игры в стиме, я копировал id из этого файла для того, чтобы вставить его в менюшку в PlayNite, но ничего не получается.
.png39 Кб, 829x891
294 2666522
>>666455
Ну смотри. Вот буквально что делается при включении EnableLocal
Т.е. тебе нужон апи ключ и чтобы через веб оно работало. Как-то так.
295 2666639
>>663920

> out заменяет собой "обьявление + ref". Чем не сахар?



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

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



Ты можешь так написать
if(a is MyClass x)
Так оно тебе проверить и приведет к типу, если a is MyClass = true и не надо тогда во вложенном блоке ничего городить
296 2666816
>>666639

>и не надо тогда во вложенном блоке ничего городить


Ну так это буквально и есть сахар)
297 2666834
>>666522
>>666522
Сяп сяп, я понял, как скачивать достижения благодаря API ключу, но не могу понять, как заставить его добавлять достижения из ini файла, созданного эмулятором в базу данных.

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

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

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

Просто пустая структура (без полей и методов и свойств) занимает 1 байт. И по причинам выравнивая в качестве поля структуры она раздувается до 4 байт.
System.Void использовать нельзя в своём коде никак, но и он по информации Маршалла тоже занимает 1 байт, что наверное не правда.
16422768664800.jpg49 Кб, 492x700
300 2667054
>>666972
>>666522
В общем я разобрался, надо было в базе данных плагина найти базу данных конкретной игры, для которой ты пытаешься заставить собирать достижения и отключить параметр "IsManual".

Всем сяп за помощь, господа.
301 2667204
>>667054
Вот бы все ползьаки вместо насилия над сапортом или разработчиком шли в исходники и разбирались во всем сами.
302 2667333
>>667204
Вопросы требующие копаться в исходниках должны быть описаны в документации. Иначе будь добр - отвечай, ведь ты писал этот код. Или не выкладывай программу в паблик, а пользуйся сам у себя дома, тогда и вопросов не будет. А то хочешь и рыбку сьесть и на хуй сесть, чтобы и чcв потешить, что твоим говном пользуются, и не брать за это ответственность нихуя не делая для этих пользователей. Наглая безответственная эгоистичная свинина.
303 2667411
>>666816

>Ну так это буквально и есть сахар)


Так то, если присмотреться, то 95 конструкций языка можно охарактеризовать как сахар. Даже обычный цикл, это по сути сахар над if - goto.
А если копнуть чуть глубже, то в принципе, абсолютно все конструкции, абсолютно любого языка - это сахар, над всего тремя базовыми функциями.
304 2667421
>>667411
Только не над тремя, а над одной - над штрихом шеффера.
305 2667446
>>667411
Ну цикл это все таки базовая конструкция
А вот автокаст при is уже нет. Потому и ввели через много лет после is как сахар для сокращения необходимости явного каста после is

А вот в котлине is делает смарт каст и это не сахар а базовая функциональность
306 2667551
>>667333
Мистер ответственный разработчик, уточните пожалуйста причину подрыва?
307 2667588
Почему нет ICloneable<T>?
308 2667606
>>667588
https://stackoverflow.com/questions/536349/why-no-icloneablet

Какой вопрос ни задай, кто-нибудь уже задавал его раньше.
309 2667612
>>667421
Я честно говоря не уверен. Я знаю, что для бинарной логики есть три базовых набора
- AND-OR-NOT
- NAND
- NOR
Каждый из них самодостаточен и позволяет получить все многобразие, но когда я это изучал, вроде как считалось, что штрих шеффера или стрелка пирса слишком заморочены на уровне электроники, чтобы на них все реализовывать и поэтому предпочтительнее первый набор. Как оно там в нынешнее время - я х.з.
310 2667674
>>667588
Ну тамошние ответы я видел, и они меня не устроили.

> 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. Да и в общем случае, я думаю у всех иногда возникает необходимость создания глубокой независимой копии объекта, и было бы хорошо, иметь для этого обобщённый интерфейс и какие-то гарантии глубокости.
311 2667676
Это >>667674 было в ответ на это >>667606
312 2667702
>>667612

> есть три базовых набора


Только не 3, а счётное число.
313 2667781
>>667674

>1. Тут-то я согласен, что для такого случая и нужно, чтобы возвращался объект.


а я не согласен. что нужно клонировать то и делай ICloneable<Foo> и/или ICloneable<Bar> - а не нужно, то и не делай
Это уже код работающий с ICloneable<> либо сможет скастовать к нужному типу, либо нет, что как бы штатно. От чистого ICloneable тоже толку не особо, ведь он возвращает object и чтобы работать с клоном нужен каст...так какая разница? а никакой

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

А мне потом приходится писать списки вида "мелкософт, ну WTFFFFFFFF"
image.png6 Кб, 1068x635
314 2668342
В 11 авалонии шрифты уже получше, хотя до сих не дотягивают до нативных.
315 2668403
>>668342
они просто вернулись к состоянию до "сломали". и никогда лучше уже не станут.
316 2668440
>>668342
Шрифтодроч - это что-то вроде лампового звука у аудиофилов. Большинство пользователей никакой разницы не почувствует.
Screenshot20230411012137.png9 Кб, 282x99
317 2668525
Почему так?
318 2668534
>>668525
1. Логическое И пишется с двумя символами &&. Одно & означает побитовое И, вряд ли оно тебе нужно.
2. 5 < a < 10 вычисляется как true < 10 или false < 10 в зависимости от значения a. Что по-твоему больше, true или 10? Вот и шарп не знает.
3. Где фигурные скобки?
319 2668542
>>668534
1. Разве && от & (как и || от |) отличаются не лишь только тем, что двойные версии операторов & и | присваивают переменной результат проверяя не каждый операнд, а только необходимый?
Скажем, если x = false && true, то && сразу присвоит x false, ведь логическое и подразумевает, что оба операнда должны быть true.
2. Резонно.
3. А функция у них есть какая-нибудь, или так принято выделять?
320 2668549
>>668542
1. Нет, && и || работают так, как ты говоришь, но & и | обходят оба операнда целиком, проверяя каждый бит и складывая всё в результат: 5 | 6 = 0b101 | 0b110 = 0b111 = 7.
3. Принято оборачивать в фигурные скобки любые блоки даже из одной инструкции, чтобы в случае потерянного отступа разраб всё равно прочитал код правильно.
321 2668579
>>668440
поверь. не всем нравится дизайн а-ля веб с крупными элементами и шрифтами. А меньше шрифты выглядят ужасно.
322 2668681
>>668579
Интерфейс чего?
323 2668698
>>668681
программ разумеется. Большие кнопки, большие надписи, все большое
на авалонии физически нельзя сделать "пусть выглядит как WPF"

капец капча на дваче стала
324 2668699
>>668549

>Принято оборачивать в фигурные скобки любые блоки даже из одной инструкции



Принято где? Среди вас, петухов?
325 2668709
>>668699
Петух, спок.
326 2668716
>>668709
Не кукарекай петушара любитель гребней {}
327 2668733
>>668698
Каких программ? Конкретно что ты пишешь?
Программы же разные и соответственно требования к интерфейсу. Вот ты говоришь "любят/не любят" но это бессмысленный пук без указания конкретного применения. Что тебе надо сделать? Если не можешь сказать, значит и не делаешь ничего, только треплешься впустую тупостью как дебил.
изображение.png555 Кб, 1560x1170
328 2668746
>>668733
Мне правда нужно доказывать что мир идет не туда в плане UX/UI?
Кнопка пуск, приложения метро, электрон..мало что ли?
Там не требования к интерфейсу рулят - там рулят "а мы хатим вот так сделать". А еще сверху может быть приправлено плоским дизайном и по юзабилити это все ЦЕНЗУРА

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

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

Как забиндить CheckBox ВПФа?
330 2668748
>>668747
факс:

class Yoba
{
public bool? Read { get; }
public bool Write { set; }
}
331 2668751
>>668748
берешь и биндишь. какая проблема. только сеттеры не забудь если чекбокс не ридонли
332 2668755
>>668751
Можешь немного подробнее подсказать?
Я, может, хуёво ищу, но толком ничего подходящего не видел.
333 2668761
>>668733
да вот пример - стартую визуал студию, а там на старте окно с недавними проектами.
Тормозное (зависает в половине случаев, возможно решарпер виноват, я не знаю, я ведь его сразу ставлю и не знаю как без него, но....ммм почему????), убогое - имеем только сортировку по дате запуска (ну ок еще и фильтр по символам, который работает просто невообразимо медленно!!!).

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

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

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

мда. капча викторина просто капец
л?ша... что это за слово блин
334 2668765
>>668755
это базовое
твой йоба класс по смыслу это 2 чекбокса
<CheckBox IsChecked="{Binding Read, Mode=TwoWay}">
<CheckBox IsChecked="{Binding Write, Mode=TwoWay}">

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

Пусть будет дичь? Возможно или нет?
336 2668773
>>668772
Кто нулл не сунул? Как поьзователь кликом на чекбокс всунет нулл?
337 2668774
>>668773

>Как поьзователь кликом на чекбокс всунет нулл?


Если автор вью, увидев во вьюМодели свойство bool?, вдруг поставит IsThreeState=True.
Вообще это гипотетическая ситуация, но стало интересно возможно ли как-то забиндить чекбокс на чтение к одному свойству, а на запись - к другому.
338 2668777
>>668774
Через конвертер/обертку взоможно все
339 2669061
Аноны зацените идею а то мне кажется что это гениально, но в реальности ничего не получается.

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

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

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

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

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

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

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

Анончи подскажи, как же все таки изьебнутся и сделать заебись?
340 2669261
Почему все ругают кресты за сложность работы с памятью, когда там достаточно написать delete object, и всё, объекта нет. В шарпе же приходится рвать жопу, и искать какая мразь ссылается на твою хуйню, и не дает ей спокойно умереть.
341 2669283
>>669261
юзай лайфтаймы, люк
342 2669294
>>669283
Это что-то из asp? Мне бы в wpf...
343 2669334
>>669294
это что-то из концепции лайфтаймов, где все живет в рамках какого то лайфтайма. И как раз отлично подходит для любого проекта, где нет явно выраженных скоупов как тот же WPF где время жизни чего либо разное и примитивное управление жизни от DI не подходит

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

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

посмотри, проникнись годными идеями. Конечно понимать годноту идеи и использовать ее - две большие разницы, но лучше все же расти над собой.
.png49 Кб, 1720x796
345 2669440
>>669061
Че ты там понаписал? Нихуя непонятно.
Куда блядь у тебя файл будет загружаться? В обычной микросервисной архиетектуре - у тебя просто клиент шлет запрос на гейтвей, тот проверяет авторизацию, даже не читая тела, если все ок - стримит файлик куда тебе там надо.
Какие нахуй корсы? У тебя в контексте микросервисов - все в одном домене крутится, запросы идут через гейтвей, сервисы уже внутри - либо по какому-нибудь rpc либо через шину общаются.
Короче. Я вообще не понимаю что ты там такое придумал. При чем там вообще васм и микросервисы.
346 2669447
>>669261
Двачаю. Было бы неплохо уметь убивать объекты явно. Но домохозяечность высокоуровневость языка исключает вероятность реализации этой фишки - объекта нет, а корни на него все еще будут присутствовать где-то в ран тайме сохраняя "безопасную" ссылку на мертвый объект. И че может случится если такую ссылку разыменовать хуй его знает. Кому-то придется перепроверять все ссылки. Производительность это точно не прибавит.
347 2669458
>>669261

> когда там достаточно написать delete object


Вот тебе конструктор. Расскажи как чистить будешь

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

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

Вот с корнями что делать не понятно. Представь, что ты спустя время, после массы аллокаций, разыменовываешь такой осиротевший корень. И попадаешь вообще хз куда. Что там за объект будет или произвольный кусок объекта. Безопасной и управляемой такую ситуацию не назовешь. Следовательно нужно вводить проверки и кидать эксепшен. Так будет безопасно, однако перспектива словить эксепшен на ровном месте это даже хуже, просто клоунада на ровном месте начнётся. Удаляешь парочку объектов и все, рантайм проклят, поэтому везде трай кетчи, которые ничего полезного не делают, а только страхуют на случай корней с небезопасными ссылками.
image.png48 Кб, 630x740
349 2669509
Норм реализация очереди с последовательной обработкой элементов (асинхронность нужна, здесь просто тестовый пример с выводом чисел)
.png84 Кб, 644x633
350 2669536
>>669509
Ну. Я сам любитель велосипедить.
Но блин. Почему не Channel-то?
Вот серьезно. У меня создается впечатление, что про них только я да второй кун из соседнего отдела знаем.

Но если тебе принципиально велосипедить, то можно вот так замутить.
351 2669555
>>669536
ок, возьму на вооружение. Но если рассматривать мой код, это тоже рабочий вариант?
352 2669557
>>669509
Ничего нормального
Очередь не потокобезопасна как минимум
Нет защиты от ошибок
И вообще хз как оно должно работать
353 2669560
>>669557
один поток всегда кладёт в очередь. А ошибки, я так понимаю, потенциально в Enqueue, нужно TryEnqueue
.png34 Кб, 577x183
354 2669579
>>669555
Нужно вникать в конкретно что ты там делаешь.
Лучше не выдумывай и просто используй Channels. Можешь такую вот оберточку намутить.
355 2669588
>>669560
ошибка вообще использовать такую "синхронизацию"
ты вон даже специально задержку сделал чтобы "ну на всякий пожарный"
но это не сработает. представь
1 ты добавляешь в очередь 1й элемент и запускаешь хендлер для его обработки
2 хендлер живо проходит свой семафор и уходит на 200мс в ожидание
3 хендлер пытается извлечь элемент и в этот момент кто то еще раз вызывает добавление. В итоге у тебя происходит гонка и внутреннее состояние Queue идет лесом.

И вообще никогда не пиши в стиле "что то добавил и последней строкой запустил попутно обработку". Это в принципе будет работать, но лучше разделить добавление и обработку на независимые потоки выполнения.
Screenshot20230412014746.png38 Кб, 825x372
356 2669625
Методы, в которые переменные передаются по значению, изменяют значение переменных только для локального окружения.
Методы, в которые переменные передаются по ссылке (ref ...), изменяют значение переменных для локального и глобального окружения.
Функции, в которых заново определяется переменная из глобального окружения, изменяют значение только для локального окружения.
Во всём прав? Пик рилейтед.
357 2669626
>>669625
сука ОБСЕРИЛСЯ с пиком, в третьем *изменяет для локального
358 2669808
>>669625

>локального окружения


>глобального окружения


Ты о чем? На каком языке ты разговариваешь? Что ты такое?
359 2669814
>>669808
Local/global scope, очевидно.
image.png67 Кб, 781x660
360 2669819
>>669588
>>669579
>>669536

думаю тогда примерно так
361 2669855
>>669819
1 не вижу где бы вообще запускался этот цикл выдирания из очереди. Чей там токен отмены. В каком контексте весь цикл работает.
2 в Enqueue лишний await не нужен
3 а где ConfigureAwait(false). надеешься что не будет контекста синхронизации?
4 (зависит от пункта 1) А когда токен бросит исключение отмены то что будет
5 Что насчет gracefull shutdown
есть разница между "все отменяем нахрен" и "больше элементов не будет, но нам важно дождаться обработки тех, что уже в очереди". То есть если как бы не совсем плевать, то делается какой то механизм чтобы кто-то, кому надо, мог дождаться окончания работы очереди - свойство Task Completion например или еще как.

зы: викторина от капчи убивает. вт?ить. это что такое? а свин?я? свинзя что ли ). муж?к внезапно не мужик. сш?ть???
362 2669859
>>669814
Какой еще нахуй Local/global scope в шарпе? Откуда ты эту хуйню притащил?
363 2670142
Как лучше сделать в приложухе работаюей с разными внешники железками эмуляцию этих железок что бы можно было легко переключаться для отладки и не засирать код всякими #if макросами? Есть какие нибудь фреймворки для этого?
364 2670190
>>670142
Забивать все абстракциями и где-то в одном месте подключать нужные реализации в зависимости от железяки.
365 2670222
>>670190
На таком уровне и сам понимаю, хочу глянуть референс имплементации что бы не изобретать велосипед.
Например для обработки всякого рода случайных ошибок есть Polly которую все юзают, может и в моем случае что нибудь подобное есть?
366 2670268
Всем привет. Перекатыаюсь к вам с джавы. Взяли на стажу писать бэкенд. Посоветуйте какие нибудь книжки с последовательным изучением. Знаний в джаве и спринге оч много , поэтому совсем с нуля учиться мне не надо.
367 2670274
>>670268
Бесполезных знаний
Забудь все, чему тебя учили
368 2670297
>>670268
Asp.net core in action
369 2670299
>>670274
Ну поч. ОПП я знаю , SOLID знаю , про архитектуры тож знаю. Если ты про специфические знания о самом языке , то ясен хуй заного учиться буду.
370 2670301
>>670297

>Asp.net core in action


Перевод стоит читать , или как обычно залупа и надо оригинал ?
371 2670330
>>670268
bart de smet c# unleashed
372 2670334
>>670330
Это уже легаси
373 2670358
>>670334
Хуегаси. После 5.0 ничего ломающего не появилось, только сахар.
374 2670377
>>670301
Конкретно у этой книги есть хороший перевод, только я не помню у последнего издания или нет. Ищи перевод от DotNetRu.
375 2670397
>>670377
Его и нашел. Издание 21го года.
376 2670585
Хм. Хм...
Смотрите. Хочу сделать типа доступ к апи по разрешениям.
Ну. Базово: 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)

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

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

Короче. Умные люди. Посоветуйте чего-нибудь.
376 2670585
Хм. Хм...
Смотрите. Хочу сделать типа доступ к апи по разрешениям.
Ну. Базово: 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)

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

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

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

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

}
А дальше как?
382 2670805
>>649578 (OP)
Как пофиксить этого ебучего пира https://github.com/username1565/CSharpServers/tree/Peer

Хочу децентрализованно раздавать хэш-таблицу, и синхронить её, а оно нихуя не робит. Заебало уже тыкаться. Хочу сделать серверы, в виде модулей, и из модулей этих ебанных - собрать пира, короче. Но чё-то запутался, блядь. Наверное, из-за голого энтузиазма. Бывает.
383 2670913
>>670799
Знаю только "сверять сам хидер текст"
384 2670932
>>670913
Что?
385 2670969
>>670932
ааа. утебя винформс. тогда не. Это древние технологии
386 2671406
>>670969
Почему древние?
387 2671414
>>671406
даже WPF, который пришел ему на смену, и тот уже давно заброшен (хотя абсолютно зря). Я уже много лет как забыл как кодят на винфорсах.
388 2671417
>>671414
Все забросили WTF и вернулись на няшные винформочки.
389 2671421
>>671417
нет. они ушли в UWP, который забросили, потом в WINUI который тоже забрасывают и типа в MAUI, который забросят не успев туда даже перейти.

в любом случае по винформсу ничего сказать не могу. А в WPF для такой задачи я банально навесил attached property на нужные колонки и достаю их в хендлере и знаю по чем сортировать.
image.png15 Кб, 450x143
390 2671479
Если я в контроллерах юзаю внедрение зависимостей под копотом создается синглтон этого объекта ? Или каждый раз когда мне нужен этот объект , например в других классах , он создает еще один ?
391 2671484
>>671479
Как настроено в DI так и будет
392 2671506
>>671479
Ты сам время жизни объекта задаешь.
image.png19 Кб, 674x49
393 2671831
>>671506
>>671484
Я понял что при внедрении своих сервисов их можно создать как синглтон. А как он создает контекст для базы данных через этот метод ?
394 2671838
>>671831
не использую EF, но судя по прочитанному - он создает контекст при каждом внедрении, то есть дефолтно это transient
Поэтому и есть вариант использования пула контекстов

builder.Services.AddDbContextPool

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

А вообще если видишь чужой Services.Add* то переходишь и смотришь исходник и там видно у кого какой лайфтайм, благо в DI от майков их 3 стандартных.
395 2671841
>>671838
Да , я тоже так подумал. Потому что создал не пустой контсруктор и он отрабатывал каждый раз при переходе по урл, судя по логам.
Почему EF не юзаешь ? Какие еще аналоги есть ?
396 2671845
>>671841
Потому что не хочу.
Супер тяжелый при старте, а также дополнитнльная прослойка которой нужно разбираться как пояснить чтобы он не нагенерил херь в sql

Альтернатив тонна на разный уровень безумия
397 2671952
Сильно ли сложно переучиваться на другие версии ASP.NET?
398 2672006
>>671952
Если хорошо разбираешься в какой-то одной, то нет. Вопрос одного-двух дней. Если как чувак выше с вопросом про лайфтаймы, то очень сложно.
399 2672023
>>672006

>Вопрос одного-двух дней


Это из разряда: да что там учить, за вечер можно сишарп выучить?
400 2672028
>>672023
а что там учить? прочитать что нового, что изменилось и как мигрировать
Ну иногда могут быть фичи где нужно вникнуть
401 2672091
>>672028
А ты не боишься, что не сможешь понять дотнет 8? Вдруг там такого наворотят, что по новой надо будет учить?
402 2672112
>>672091
Я нет. Я полиглот. В первую очередь из-за того что не пытаюсь использовать один язык везде, а признаю что каждый язык силен в чем то и мне лучше знать его чем страдать золотым молотком.
Потому любые фичи что повышают выразительную мощь и позволяют сделать проще я всячески приветствую.
403 2672113
>>672091

>А ты не боишься


Нет. Я же не джавист какой-нибудь, для которого добавление одного модификатора доступа - это уже пиздец и breaking changes.

Я за 5 лет примерно вот такую цепочку прошел:
.NetFramework 3.5
.NetFramework 4.7
.Net Core 2.0
.Net Core 3.1
.Net Core 6.0
Это не считая всяких минорных версий, .Net Standart и версий разных библиотек.
И как-то норм, нет там таких изменений, чтобы занимало бы больше недели на изучение.
404 2672135
>>672113
Херово ты её прошел раз называешь NET 6 ".Net Core 6.0", перепроходи.
405 2672137
>>672135
но она же по факту является неткором.
Если не согласен, то попробуй с него с вордом поработай. Потом расскажешь )
406 2672142
>>672135
Та вообще похуй. С учетом того как сам майкрософт относится к неймингу версий своих продуктов, ебал я в рот правильно называть их версии.
407 2672674
>>670805
Знаешь почему никто даже не попытался ответить? Потому что почитай стайл гайды.

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

Там структура такая:
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 - это уже пир, как-бы.

Ну а дальше уже, шла разработка пира, только как-то кривовато, и он не пашет нихуя.
409 2672687
>>672684
Шиза. Уже за csc в скрипте запуска и mono в цивилизованном обществе даже руку не пожмут. А плодить ветки с абсолютно разным кодом это отедльный вид извращенства
image.png86 Кб, 1045x1295
410 2672688
>>672684
И ты так и не пояснил как должны простые смертные читать подобную жесть?
411 2672714
>>672687

>Шиза. Уже за csc в скрипте запуска и mono в цивилизованном обществе даже руку не пожмут.


А как это говно ещё запускать, если не с под командной строки?
Даблкликом по екзешнику, штоле?

>А плодить ветки с абсолютно разным кодом это отдельный вид извращенства


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

>>672688

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


Надо стать бессмертным, как я - очевидно же.
Шо там непонятного-то?
Первый метод - возвращает строчку. Второй метод - байты. Это - ответ на запрос.
Ну а третий метод - возвращает TcpClient, тогда, когда подключение есть. Если его нет, то возвращает хуй, какбэ.
А уже имея TcpClient, подключенный к серверу, можно юзая его - слать запросы на этот вот сервер, слать их циклом, и не отключаясь.
412 2672721
>>672714
Скажи просто честно, ты хоть что то читал по сборке в дотнете?
А про оформление кода и нэйминг?

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

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

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

так что лучше начинать с WSL пока не упрешься в "да е...й WSL"
415 2672776
>>672758

> WSL какой-то костыль, который перманентно отжирает у тебя ОЗУ


Если всл1 то он ничего не отжирает, но раз ты про докер то всл2. И внезапно но всл2 просто виртуалка глубоко интегрированная в винду которую можно прибить
416 2672779
>>672758
первый wsl бесполезен для докера
Второй же ломает работу виртулбоксов разных
417 2672782
>>672779
Хз. У меня на рабочем пк и весло2 и виртуалки в вбоксе
418 2672783
>>672782
Это везение, что режим эмуляции не лагает, не больше
419 2672836
>>672721

>Скажи просто честно, ты хоть что то читал по сборке в дотнете?


>А про оформление кода и нэйминг?


Ниет. Я же не кодер-шарпист, мне за погромирование не плотят, я на голом энтузиазме пира костылю, чтобы в нанобороду прикрутить его.
Просто в гугле пишу "как сделать хуйнюнейм CSharp", вижу вылазит говнокод всякий, перевариваю эту хуету всю в мозгу, потом открываю NotePad++ в WindowsXP и короче пишу говнокод туда. Потом значит сохраняю его как cs-файл, ну и создаю .bat-файл чтобы откомпилить и протестить. Если что-то выёбывается там, приходится врубать фиксиков, смотреть как они фиксят и короче фиксить, всю эту еботу.
Ну а в линупсах шоб робило - так через mono, .sh файлом конпелирую, и там уже пердолюсь, какбэ.

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


А как их блюсти?

>csc никто напрямую не дёргает,


>все идут прямым путём через мсбилд который


>и то вызывается через dotnet xxx


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


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

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


А зачем работать? Надо написать заебато, чтобы уже не трогать это говно, и чтобы оно работало, а не над ним чтоб работать.

>Как ты это нечто в дебаг режим загоняешь?


Просто пишу Console.WriteLine где надо, чтоб в консоли лезла инфа, а когда не надо - закомментировал и нету его.

Ну, чё сказать.. Вроде как пофиксил уже этого ебучего пира. Поплыло говно по трубам: https://github.com/username1565/CSharpServers/network
Вот тут короче видно.
Вроде робит, но всё-равно надо фиксить всю хуйню, и тестить, а ещё позакомментить всякое, а то многабукафф лишних вылазит.
16774494394570.webm13,6 Мб, webm,
1920x1080, 3:35
420 2672871
>>672714

>Шо там непонятного-то?


>Первый метод - возвращает строчку. Второй метод - байты. Это - ответ на запрос.


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

421 2672875
>>672871
капец у тебя на строчки аллергия. будь твоя воля - ты бы писал все в одну большую строку.
422 2672884
>>672836
Чел, ты охуенен. Даже представить боюсь через что ты прошел, чтобы у тебя все это вот так получилось. Местные домохозяйки привыкли что за них все делает студия и компилятор, а тебе и так норм, вот они и бесятся, тимлиды хуевы. Скатили тред в перманентное интервью на собесе. Так что не слушай долбоебов, ты очень крут.
423 2672888
>>672884
суть в том что код должен быть читабелен. Если одному норм - то только одному этот код и нужен. И то только пока он его пишет ибо через год все забудется и он сам ахереет от этой неотформатированной лапши без структуры
424 2672891
>>672871
Это С++, а не C#
425 2672900
>>672884
Согласен. Послушал его мысли, посмотрел его работу и много нового для себя извлёк.
Как минимум буду теперь делить части проекта по веткам гита, а не директориям!
426 2672937
>>672884
Для энтузиастов есть питоны с жабаскриптами. Пишешь на языке профессионалов и просишь помощи - соблюдай стандарты
linuxdontwork2.jpg197 Кб, 739x729
427 2672984
Что я делаю не так? Скачал свежий скрипт с сайта микрософт, вроде установился корректно, но команда dotnet всё равно не доступна.
428 2672990
>>672984
консольку перегрузи же
429 2673006
>>672990
Ничего не получается. И где это ваше хваленное: микрософт любит линукс? Я уже в самом начале споткнулся.
430 2673009
>>673006
да. но линукс не любит тебя.
431 2673016
>>673009
Голанг у меня сразу поставился без всяких плясок с бубном
432 2673018
>>673016
дотнет тоже поставился.
просто в PATH не прописался. это даже на скрине написано
.png59 Кб, 1356x944
433 2673176
>>671479
Хм. Вот тебе картинка как примерно оно работает.

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

После этого инсталлер запустится на английском. И при последующих запусках так же будет на английском.
437 2673376
>>673357
Переключи студию на русский, это решит все твои проблемы.
438 2673378
>>673374

От души Анонче, сработало
439 2673415
>>672884
Похвально. Теперь бы sqlite прихуярить туда как-то, чтобы база данных могла быть пиздатой. У меня есть репа с сиквелайтом тут https://github.com/username1565/KeyValue
И недопиленный бранч с сиквелайтом в наноборде - вот тут: https://github.com/username1565/nanoboard/tree/nanodb-sqlite
Короче, базу вообще переделать бы в виде хэш-таблицы, и тогда уже можно было бы её раздавать в пиринговой сети, децентрализованно. Даже в локальной сети, можно было бы просинхронить базу. К тому же, если использовать sqlite, то можно вообще убрать нафиг ограничение на аттачи, и blob'ами их заливать туда (с каптчёй, разумеется). Каптча встроенная, что заебато. Это всё пока лишь на уровне идеи, и очень много пердолинга. Но, пожалуй - закину всё это в todo, для потомков. А вам бобра, шарпаны.
440 2673427
>>672884

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


Я до того как перекатился в .net, лет 15 писал на разных экзотических языках у которых не было ни нормальных сред разработки, ни инструментов, ни прочего. Точно так же приходилось писать код в текстовых редакторах, делать разные батники для запуска компиляции, отладку через печать в консоль, для некоторых даже самому трансляторы приходилось писать и прочие велосипеды изобретать.
Я это к чему. Ебал я в рот возвращаться ко всему этому пердолингу. После перехода на шарп я только и делаю, что кайфую от того что мне не нужно заниматься всей этой херней. Можно просто сосредоточиться на конкретной задаче и писать код на полном расслабоне.
441 2673433
>>673427
ого, чёт ты каким то мазохистом раньше был)
ubuntudotnetsdks.jpg36 Кб, 735x483
442 2673477
>>673018
>>673224
Дропнул манжару и поставил убунту. Всё нормально установилось. Видимо, микрософты любят только убунту из линупсов.
443 2673608
>>673477

>манжару


У меня на ноуте в манжаре даже звук не завелся. Отлетел при первой загрузке и больше не работал.
А ты говоришь дотнет, лол.
444 2674393
>>673477
Тут дело не в майках, а в линуксе как таковом. Я думаю им нахуй не уперлось поддерживать свои продукты на всем пингвинячьем зоопарке. Они базу сделали, а в остальном ебитесь сами, хотели опенсорс - берите сколько унесете.
Собственно как и со многими другими производителями софта.
445 2674404
Как вы изучали ASP.NET? Есть конечно книги всякие, метанит, курсы, но всё это теория. А как это закреплять на практике?
446 2674418
>>674404
Пишешь пет проект, ковыряешь чужие репы. Ничем не отличается от любых других технологий
447 2674503
>>674418
ну...если не задумываться о качестве этих чужих реп )
448 2674513
>>674503
Репы с 1к+ звездочек за редким исключением говно
449 2674692
Анон, который посоветовал мне либу Jetbrains.Lifetimes, спасибо тебе огромное. Это просто лютейшая годнота, благодаря которой я избавился от утечек памяти и здорово облегчил себе жизнь.
450 2674694
>>674692
Еще бы к ней документацию нормальную.
451 2674845
>>674404
Пошел на работу, дали проект.
В процессе изучил.
452 2674870
>>674845
А сейчас возьмут без знания ASP.NET?
453 2674882
>>674692
вещь конечно годная, но если использовать ее на полную катушку. Я использую в основном в WPF - там у меня все на его основе построено, а сам он поверх DI от мелких.

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

Хотя мне в принципе хватает. Основное лайфтаймовое - там ведь немного. Остальное в длл всякое утилитное.
454 2674889
>>674692
Каким хуем у вас память течёт в языке с гц?
455 2674893
>>674889
А что GC
GC чистит только то что осталось без ссылок. Но занулить ссылки легко забыть или неудобно. А еще и не тот порядок диспоза.
Лайфтаймы все это решают
456 2674894
>>674870
Я устраивался в 2020м
После меня еще чел приходил, тоже без каких-то знаний.
Другое дело, что это от места зависит и готовности за 40к работать на начальном этапе.
457 2674897
>>674894
Я и за 20к готов работать, лишь бы взяли. Сейчас особо выбирать не приходится.
image.png9 Кб, 272x218
458 2674971
Это 1 апреля что ли? На чём мне написать нормальный кроссплатформенный гуй?
459 2674975
Есть очень много экземпляров класса, в которых находится относительно тяжелый метод. Я этот метод сделал статическим.

Но могу ли я для удобства сделать одноименный метод для экземпляра, который ретранслирует данные из статического метода? Хорошая ли это практика?
460 2674978
>>674893
Если это не делегат или подписка, а просто ссылка ну другой класс?
461 2674980
>>674978
Не понял вопроса
462 2674987
>>674975

>Но могу ли я


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

А вот насчет

>Хорошая ли это практика?


для начала нужно понять, что ты имеешь в виду под:

>относительно тяжелый метод


>ретранслирует данные из статического метода



Судя по формулировкам ты не до конца понимаешь, что такое статика в шарпе и зачем она нужна.
2023-04-1722-59-47.png4 Кб, 446x209
463 2674993
>>674987
В моем понимании код обычного метода будет дублироваться при каждом новом экземпляре. И если будет 100 экземпляров, то будет 100 копий метода. Если внутри экземпляра еще и 100 методов, то это (в моем понимании) влияет на объем памяти, если я захочу составить большой список.

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

>относительно тяжелый метод


Тут я имел ввиду количество строк кода. Я понимаю, что при конвертации в IL-код строка строке рознь..
464 2674994
>>674993
метод существует в таблице методов в размере одна штука
а при выполнении используется память из стека текущего потока
так что статический метод ничего не выигрывает в плане памяти.
465 2675004
>>674994
Спасибо, я думал что методы дублируются.

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

Вот я удаляю Bike, но экземпляр Gas определенно продолжает существовать в Car. Получается, что у Bike не будет почищен GC, ведь в его свойстве лежит ссылка на Gas. Так?
466 2675009
>>675004
будет почищен, ведь никто не ссылается на байк (и он никому не нужен). А байк может хоть на тыщу всего ссылаться - никому до этого дела нет.
467 2675013
>>675009
Ах вот оно что. У GC есть информация, кто ссылается на экземпляр. Спасибо.
468 2675014
>>675013
Как бы в этом и суть работы GC - найти объекты которые уже никому не нужны и выбросить их из памяти
469 2675033
>>674971
ETO.FORMS
@
AVALONIA
470 2675089
>>674975
>>674993
Ряяяяяяяяяяяя. У меня горит.
Ряяяяяяяяяяяя.
Вот чтобы такой хуйни не было - и надо с си начинать. А в идеале - с ассемблера.

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

Какова хуя я не могу привести список типа Booba к списку интерфейса ITitties?
472 2675796
>>675089
>>675795
Сори, не хотел адресовать.
473 2675802
>>675089
А почему тогда DependencyProperty использует статический метод OnPropertyChanged? У него же есть экземпляр класса, почему бы не вызвать метод напрямую?
474 2675828
>>675802
DependencyProperty реализует паттерн "приспособленец" чтобы чего то там минимизировать.
image.png20 Кб, 452x65
475 2675830
>>675795

>Какова хуя я не могу привести список типа Booba к списку интерфейса ITitties?


Потому что дженерики, ковариантность и еще дохуя умных слов, которые ты все равно не поймешь.
Короче делай так как на пике и будет тебе счастье.
476 2675929
А где старая шапка? Я-то хотел название книги взять из неё, тогда что почитать по EF?
477 2675945
>>675795
Получится у тебя лопустим List<ITitties> и что должен делать рантайм когда ты попытаешься туда сделать .Add(new FatRetard())?
478 2675950
>>675929
В архиве.
479 2675987
>>675945
Выглядит как бред. Я что, должен создавать НОВЫЙ экземпляр массива? Не слишком ли жирно? И в чем смысл интерфейсов?

А если у меня есть несколько списков разных типов, но я хочу сделать универсальный метод для них, внутри которого нужно просто получить индекс итема списка, то как быть тогда? Я же не могу сотни раз туда-сюда создавать новые списки?
480 2675997
>>675987

>Выглядит как бред


Как бред тут выглядишь только ты.
Тебе же сказали, что у тебя лист дженериковый. Ты по сути пытаешься на лету у него обобщеный параметр поменять. Так это не работает.
Ты можешь тип самого списка привести например к Inumerable<Booba> или Ilist<Booba>. Если же ты хочешь приведение для элементов сделать, то и делай его именно для элементов (по отдельности, перебором или через ToList<ITitties>)
>>675987

>Я что, должен создавать НОВЫЙ экземпляр массива?


Либо так, либо сразу создавай список того типа который тебе нужен.
image.png20 Кб, 637x107
481 2675999
>>675987
Тебе же написали про ковариантность и контрвариантность
482 2676256
>>675945
Всё то же самое. Создается объект, указатель помещается в список.
483 2676264
>>676256
Очень интересно. Ты хотя бы понимаешь что в лист с Booba типом объектов ты впихнёшь элемент другого типа который вообще не приводим к Booba?

Я даже в теории не понимаю как это должен переваривать рантайм
.png24 Кб, 339x272
484 2676537
>>675795
Почему это не можешь?
Все ты можешь. Главное верить в себя!
485 2676559
>>676537
только это не каст
486 2676562
>>676264
Та банально.
1. Он может скастить все к обжект. Вообще 0 проблем.
2. Он может делать обертку виде {type; any} и таким образом мы бы могли делать что-то в духе list[index].As<T>();
3. Можно проиграть по памяти но так же хранить че угодно: 2 массива под капотом - один с оффсетом до элемента с индексом, второй - любой элемент. Доступ к элементу получается в 2 шага, но все еще оч быстро.

Это первое что приходит в голову за 2 минуты.
Другое дело, что List<T> - делался чтобы быть пиздец быстрым и экономным. Если надо что угодно пихать, есть ArrayList
487 2676703
>>676562

>Он может


>Он может


>Можно проиграть


Он то может быть и может, только не хочет. А хочет он чтобы можно было как в каком-нибудь js - скормить языку любое дерьмо и чтобы он сам разбирал и угадывал, что там "разраб" подразумевал и хотел. Но пацанчик не в тот район забрел, у нас сильная типизация и таких тут не любят.
488 2676715
>>676264

>Я даже в теории не понимаю как это должен переваривать рантайм


Элементарно. Как и всегда. Ты просто кретин и не понимаешь, что в списке хранятся не объекты, а указатели, которые все одинаковые, хоть на что указывай, похуй вообще. И даже если кроме указателей хранится еще мета-информация наподобие идентификатора типа, это тоже для всех объектов имеет одинаковый размер. В списке всегда хранится одинаковые стандартная информация, которую можно спокойно кастить во что угодно, во что захочешь, в то и касти. Если в реальности шарп не дает такую возможность, значит его писали говношлепы тупые кривожопые макаки. Технически нет никаких проблем кастить содержимое списка во что угодно, ибо он и так работает с одинаковыми данными.
489 2676728
>>676715
А кто дает? Даже жава с его стираниями типов вольностей не позволяет и будет тебе ошибка. Котлин еще строже. А все потому что без этого нельзя гарантировать безопасность всех сценариев.

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

Конечно на уровне IL ты "царь во дворца" но это уже и не шарп
490 2676731
>>676728
То был ответ на вопрос выделенный зеленой цитатой. Проблемы?
491 2676732
>>676731
Дада. Я верно зашел

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

Помимо компилятора рантайм тоже должен давать некотрые гарантии безопасности (та же жава внезапно дает даже во время исполнения хотя как бы type erasure),
492 2676784
>>675929
Во всех тредах поудаляли старые шапки с книгами и заменили их на тупые видосики, чтобы никто точно не вкатился.
493 2677050
Вот шарписты постоянно хвастаются async-await, а я вот смотрю на эту конструкцию и вообще не понимаю как она работает. Вот в голанге просто пишешь перед вызовом функции go и она запускается как горутина. Ни каких особых условий на саму функцию не накладывается. А тут прям какие-то монструозные, малопонятные конструкции и миллион ограничений.
494 2677055
>>677050

async - позволяет использовать await внутри метода и создаёт стейт машину между await'ами внутри метода
await - проверяет, завершился ли метод, если да сразу возвращает результат и управление вызывающему коду, иначе меняет стейт и выполняется асинхронно и все такое
495 2677062
>>676784
Похоже. А я как назло забыл закопипастить сюда старую шапку, будет время скину.
496 2677066
>>677050
Ограничения в основном из-за выполнения таски потоком из пула.

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

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

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

Остальное опционально или нахуй не нужно
497 2677125
>>677066

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


Шта
498 2677127
>>677050
Потому что асинк-эвейт и раскраска функций - это антипаттерн. В сихэштеге естественно выбрали вариант сделать через жопу. В джаве поступили гораздо умнее и добавили интуитивно понятные виртуальные треды, которые прекрасно встраиваются в язык и ничего не ломают.
499 2677138
>>677050
Задай себе вопрос - чем твой go отличается от того же await?
500 2677144
>>677138
go не делит функции на красные и синие.
501 2677146
>>677138
В go всё просто. Даже книжки по языку - это брошюрки от 100 до 400 страничек, а в сишарпе - талмуды на 1000 страниц, да ещё и двухтомные.
502 2677176
>>677146
как раз в шарпе примитив - ввели абстракцию таски которую можно запустить и дождаться. В общем то эта та самая корутина.
В шарпе просто упор на абстракцию "запустить и получить объект ожидания", а "где выполняется, как выполняется, выполняется ли вообще" это уже детали реализации.

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

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

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

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

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

получается не так красиво из за await но унифицировано!. Я могу работать со всем в одном стиле. Я могу обернуть в таски любые другие подходы и связать одно с другим. Например я могу спокойно превратить event в таску и связывать с другими тасками. Я могу добавить TaskCompletionSource куда то и работать с ним так же унифицировано как с таской. Все есть таска.
В других языках же мне придется явно "ага, тут нам нужен результат и значит нужен объект типа Defered и как то его дождаться же и вклинить его в мой код. И вот тут начинается "зона особых правил", которой в шарпе нет - там все работает единым подходом.
503 2677188
Примитивные абстракции. Абстрактные примитивы.
504 2677190
>>677146
почитал по диагонали. горутины легковесные по своей природе. но по той же природе не могут возвращать результат. И если нужно его вернуть и чтобы было "по красоте", то приходится городить огород.

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

У каждого подхода свои достоинства и недостатки. Шарп все же язык общего профиля, а го по рождению заточен под задачу - работает быстрее, но писать что то большое....ну нах.
505 2677262

>DevJungles


Этот чел что-то принимает перед съемкой видоса?
506 2677449
>>677146
Так а что сложного в async-await в шарпе?
Реально же интересно, че там сложного. Типа промисы из JS - не сложно, а вот шарповские Task - сложно пиздец? Чи шо?
Или просто, это чтобы у тебя было в духе:
SomeMethod(callback => {
Console.WriteLine("Complete");
})
?
А рутину свою в фоне, как на тредпуле, так и без - изи можно самому сделать. Правда придется делать свой тип и там Wait метод, если надо дождаться результата, но никто не мешает. Деды так делали, пока TPL не завоевал шарповский мир.
507 2677758
>>677125
Он про канцелейшен токен, вероятно. Ну и многие асинхрннгые функции работаю с этим токеном, поэтому в большинстве случаев отмена авейта приведет к исключению.
И это засрет твой лог, хотя отмена в штатном режиме.
2023-04-2112-11-11.png6 Кб, 332x392
508 2677825
Как сделать так, чтобы при обращении к классу Account напрямую, я получал свойства с типом Data, но если я обращаюсь через интерфейс IAccount, то получал свойства с типом IData? (пикрил 1)

Мне не дает реализовать интерфейс с конкретным типом Data.
2023-04-2112-25-24.png17 Кб, 618x630
509 2677828
>>677825
Не тот пикрил.
510 2677893
>>677758
А как иначе в языках основанных на исключениях?
Как еще прервать поток выполнения и гарантировать что никто выше не подумает что все завершилось штатно (на деле оно было отменено)?

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

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

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

в шарпе, питоне, котлине и уверен в любом языке, где во главе угла стоят исключения - используется свой вариант CancelledException
image.png168 Кб, 1049x753
511 2677896
>>649578 (OP)
Как же я рад, что не перевел проекты на шарп. Звоночек с кидком линуксовского гуя был тогда к месту. Смотрю вот 7 версию, а они уже выпилили поддержку win 7.

Жрите это сами
512 2677908
>>677896
ну так то не самая большая проблема (хоть и неприятно)
мало кому нужно делать продукт что должен работать на вин 7
Тем более что дотнет 4.8 никуда не делся и даже если бы он обновлялся, то не на вин 7
513 2677912
Почему я не могу привести ObservableCollection<Zalupa> к
IList<IZalupa> или ICollection<IZalupa>, если Zalupa совершенно точно реализует интерфейс IZalupa?

При этом привести к IEnumerable<IZalupa> получается. И что вписывать в интерфейс, чтобы можно было редактировать итемы?
514 2677920
>>677912

>При этом привести к IEnumerable<IZalupa> получается


>>676728
515 2677924
>>677908

>мало кому нужно делать продукт что должен работать на вин 7


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

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

кстати питон, который язык самого широкого профиля, тоже дропнул вин 7
517 2677948
>>677939

>сидишь на древнем, так забудь про новое.


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

>дотнет 4.8


А что пора слазить с кроссплатформы? Посидели и хватит?
518 2677953
>>677939

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


Как раз скрипты как софт никто не распространяет, там вообще если углубиться в бинарную зависимость окажется все плохо на вин.
python2.jpg681 Кб, 960x638
519 2677955
>>677939

>кстати питон, который язык самого широкого профиля

520 2677956
>>677948
А че? Тебе нужна кроссплатформа или легаси ось и дрова и вообще кровавый энтерпрайз где никто никуда не переедет
Ты уж определись

>>677953
Еще как распространяют. Просто ПОПУТНО могут притащить и свой питон и вынуждены писать под него не переходя на более новый
Но в общем то тут никакого отличия от твоей ситуации
python2.jpg681 Кб, 960x638
521 2677958
>>677939

>кстати питон, который язык самого широкого профиля

522 2677964
>>677956
Зумерок услышал слово легаси.
4 месяца - легаси!
И вообще вместе с софтом распростроняй установщик десятки. Хера нудишь.
523 2677967
>>677956

>Еще как распространяют. Просто ПОПУТНО могут притащить и свой питон


Установка однокласснику питона, чтобы твоя лаба запустилась, это не совсем коммерческое распространение софта.
524 2677973
>>677964
4 месяца статуса "вообще забыть нужно"
а легаси это "больше не рекомендуется использовать, вот вам новое".
И этому никак не 4 месяца.

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

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

А как с этим в шарпе? Как детектируется нужное свойство? По имени?
image.png102 Кб, 300x300
526 2677980
>>677973

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


Стой, подожди, ты только сказал ставят свой питон. Ты реально сейчас загуглил и пытаешься показаться умнее?
527 2677983
>>677975
дичь какая то в бейсике тогда
конечно по имени
ведь интерфейс как бы и задает именование которое должно быть реализовано. Давать возможность менять имя - стрелять себе по ногам. Если же конфликт имен есть, то есть явная реализация интерфейса

string IZalupaKonya.ZalupaKonya { get; set; }
528 2677984
>>677980

>ты только сказал ставят свой питон


покажешь где я написал слово СТАВЯТ?
image.png31 Кб, 220x165
529 2677995
>>677984

>п-п-притащить свой питон это не с-с-ставить! Слышишь!?



Четырех месячное легаси у него, лол. Как ты с таким интеллектом капчу проходишь?
530 2678000
>>677995

>п-п-притащить свой питон это не с-с-ставить! Слышишь!?


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

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

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

>Четырех месячное легаси у него, лол


это не у меня 4 месяца легаси. не тупи, капчепроходец )
531 2678010
>>677983
В теории это мне позволило конкретизировать свойство, если я обращаюсь напрямую к классу, но при этом у меня есть обобщенность в виде интерфейса. Мне кажется это плюсом.
532 2678022
>>678010
ну ок.принимается. это сахар для экономии кода.
в шарпе решили не сахарить. шарп очень жадный на сахар. Это по сравнению разве что с жавой он сахарный.
533 2678137
>>677896
Так а какую альтернативу ты предложишь в случае заводов, допустим, где с самого начала либо C# либо C++ CLI, и за 20 лет столько кода написано, что просто ебнешься переводить на что-то открытое. Проще таки обновить винду и допилить софт под новый стандарт.
534 2678152
>>678022
А как в шарпе это разруливается?

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

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

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

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

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

И казалось бы, ситуация очевидная, а вот хрен.
535 2678182
>>678152
Ну. Можно допустим так сделать...
536 2678185
>>678182
Блин. Я в последнее время гляжу на код, который генерирует моя башка и думаю, вот на кой хуй я сам-то на шарпе кодю, если постоянно пытаюсь его наебать? Пиздец меня это вымораживает. Все ебучий опыт ЖС с его гибкостью и удобством. Хочу бладь на ЖС писать бекенд.
537 2678208
Как хранить последовательность действий? Вот есть паттерн команда, и я вижу джва варианта: отдельный класс, в котором будет храниться список команд в нужно последовательности, либо же каждая команда будет содержать в себе ссылку на предыдущую, образуя таким образом односвязный список. Что выбрать?
538 2678212
Как угнаться за темпом выхода новых версий? Начинал с дотнета 5, а скоро уже 8 выходит, но я до сих пор старые не выучил, а надо уже новые учить.
539 2678215
>>678208
Через паттерн Pipeline
540 2678217
>>678208
Делай как завещали нормальные люди:
Каждое следующее состояние - это информация об изменении предыдущего.
Ну. Т.е. примерно так:

StateA - твое начальное состояние
StateB = StateA + Midificator1
StateC = StateB + Modificator2
Все просто. Всегда можно повторить. Можно двигаться в любом направлении, как вперед так и назад.
541 2678220
>>678182
Блин, идея указывать два дженерик типа мне тоже приходила в голову, но мне показалось это слишком грязным. Ну раз мысли сходятся, то придется юзать это. Спасибо, за уделенное время :3
542 2678224
Почему SharpDeveloper больше не развивается? Последний апдейт в 2016 вышел. Насколько знаю, на маках именно его взяли за основу VS for mac
https://www.youtube.com/watch?v=xk4Y7z_8vbU
543 2678227
>>678224
Разрабы на него забили, вот и не развивается.
544 2678237
>>678227
А разве их микрософт не купила?
545 2678241
>>678208

>Как хранить последовательность действий?


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

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

К примеру мне нужно сгруппировать объекты — это по сути три мелких команды: создать папку, переименовать папку, переместить итемы в папку. Соответственно что бы я не отменял, у меня будут ровно те условия, которые мне нужны на текущем этапе. Не будет такого, что папка внезапно будет с другим именем или она отсутствует.
546 2678242
>>678152
я не люблю рефлексию потому использовал бы интерфйес IViewModelWithEditableItems и уже в нем методы которые бы дергала команда
547 2678245
>>678237
А майкрософт не может забить? Один баг для бейсика они не могут пофиксить пять лет.

Капча: ша.ка
Думаю "хм, наверно речь идет о шапке", оказывается имелась ввиду "шавка".
548 2678253
>>678242
Ты имеешь ввиду, что условные методы DeleteItems, RenameItems, MoveItems находились бы прям во вьюмодели? Чет слишком тяжело даже по меркам вьюмодели. Я щас раскидал по командам в отдельных классах и у меня все равно все засрано.
549 2678259
>>678253
Делагируй. сделай метод GetEditable() во вьюмодели
И вьюмодель полегчает
.jpg139 Кб, 1000x1505
550 2678278
Помогите мне. Пожалуйста.
Вопрос не про шарп, а про моделирование объектиков.

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

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

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

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

В общем. Рассудите меня. Как быть? Что делать? Может быть какие-то лучшие решения или вообще, моя модель - хуйня и я вообще долбоеб?
.jpg139 Кб, 1000x1505
550 2678278
Помогите мне. Пожалуйста.
Вопрос не про шарп, а про моделирование объектиков.

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

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

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

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

В общем. Рассудите меня. Как быть? Что делать? Может быть какие-то лучшие решения или вообще, моя модель - хуйня и я вообще долбоеб?
551 2678392
Хочу вкатиться на фулстак или на крайний на бэкенд сишарповский. Так вот вопрос, везде где сишарп используется ангулар на фронте? А то я учил реакт на фронте. С реактом пошлют нах? Стоит ли дрочить ангулар или потратить это время лучше на изучение сишарпа?
552 2678396
>>678392

> Хочу вкатиться на фулстак


Нахуя? Чтобы работать в 2 раза больше а получать столько же?

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

Подытожив. Фуллстек - это неабка. Причем проигрывают все. Бизнес думает, что сэкономил - наняв как-бы 2 человек по цене одного, а получает хуйлушу, который ни там ни тут нормально не разбирается. Ты, чтобы все успевать - занимаешься скоростным копипастом, не имея возможности даже нормально разобраться. В итоге - задачи валятся, через 4 года ты только-только будешь подходить по знаниям к мидлу что с одной, что с другой стороны. Так что не страдай хуйней. Попробуй то, попробуй это. Че больше нравится - то и начинай качать. Иначе - проебешь время, силы, деньги. Оно тебе надо? Не надо.
553 2678399
>>678396
Я понял твою мысль и в общем-то согласен. Я немного сумбурно выразился, попробую поточнее. Я в целом готов пойти как на фронта так и на бэка. Фронт я более менее подучил. Бэк знаю слабо. Буду ближайшее время искать работу фронтом. Но уже заранее готовлюсь к тому что у меня это может не получиться учитывая популярность фронта и большую армию джунов и вкатышей. Поэтому хочу еще бэк подучить чтобы были еще варианты. Сишарп понравился. Посмотрел вакансии там берут джунов фулстеков в моем городе. Вот я и подумал что буду откликать по отдельности на бэк или фронт но если выбирать не приходится и предложат фулстаков или это как-то увеличит мои шансы на поиски работы фронта и бэка по отдельности то я бы хотел использовать эту возможность
554 2678402
Почему сишарп не поддерживает восьмиричную систему счисления? В джаве и голанге она поддерживается, а в сишарпе почему-то нет.
555 2678407
>>678402
Я так понимаю ты про ввод? Всё просто - юзлесс сахар. Отсутствие префикса для них не накладывает никаких ограничений
556 2678409
>>678407
Я про литералы типа 0777 с ведущим нулём или хотя бы 0o777, чтобы удобно задавать права доступа к файлам.
.jpg47 Кб, 266x624
557 2678469
Есть приложение, на шарпе. Оно - tcpшный сервер, не важно для каких целей.
Когда все начиналось - сразу было требование, к этому серверу сделать веб-морду в виде SPA-приложения.

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

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

Вопрос вот в чем. Сколько приблизительно должен занять рефакторинг этого дела? Просто когда я думаю об этом - мне кажется, что не меньше года, тем более что в одно рыло же пилил. С другой стороны - я старался чтобы не так связно было. Код из контроллеров - можно в какой-то класс вынести, типа TcpServerFacade. Но с требованием с одной мордой сразу за несколькими серверами следить, кажется, что правильнее будет придумать свой протокол и сделать клиент для сервера, который будет уже дергать апишка.
Не знаю. Сложненько чет.
558 2678484
>>678137
Вы уже на игле, это я радуюсь за себя, что на воодушевление маркетингового буллшита, чуть не попал в тотальный вендерлок
559 2678542
>>678484

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


98% разрабатываемых сегодня в мире GUI - это тотальный вендорлок на гугл, его хром или андроид.
560 2678556
>>678469

> Сколько приблизительно должен занять рефакторинг этого дела?


Отделить морду и добавить обнаружение даю план тайм до недели
561 2678566
>>678484
Ну тем кто на острие тем норм. Если бы еще мелкие делали полезные фичи, а не ерунду
562 2678571
>>678566
Из сомнительных фич только дефолтную реализацию в интерфейсах помню
563 2678591
>>678571
Они не делают нужные штуки распыляясь на ерунду
required сделали на версию позже
С !! что вообще?
ConfigureAwait годами висит issue
Вон будут фрозен коллекции (спустя столько лет то и потому костыль но хоть так) где фрозенлист???
Контракты похерили ибо делали жопой... Ну сделайте прямыми руками что ли.
Дайте возможность расширить статики
Где типизированные специальные коллекции? Что за дичь вообще с коллекциями в шарпе.

Про косяки что уже и не исправить я вообще молчу
564 2678644
>>678591

>распыляясь на ерунду


Они сделали обобщённую математику, и это действительно мощная фича.

>required сделали на версию позже


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

>С !! что вообще?


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

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


ImmutableArray?
ReadOnlyMemory?

>Дайте возможность расширить статики


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

>Они сделали обобщённую математику, и это действительно мощная фича.


а еще сделали main без programs...

>при некорректном обращении к нулл, экспшн и так будет кинут


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

>ImmutableArray?


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

> ReadOnlyMemory?


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

>Экстеншены - это дурнопахнущий стиль. Код читать не возможно.


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

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

(оффтоп - в котлине экстеншены вообще юзаются на полную. и с помощью скоупов (в шарпе их нет) делегатов пропертей (опять же их нет в шарпе) и необязательности классов (в шарпе нет) создается очень читабельный и крутой DSL что шарп нервно курит в сторонке)
566 2678685
>>678644

>ImmutableArray


ну ладно я глянул его реализацию. оказалось что оно не на связанных списках, а тупо array с копированием, от чего я немного ШТААА

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

викторина от капчи просто убивает: Б?ТИ(Е). вот что это (цензура)
567 2678700
>>678685

> викторина от капчи просто убивает: Б?ТИ(Е). вот что это (цензура)


Бытие. Книжки вообще не читаешь?
568 2678710
>>678700
е было написано очень бледно-зеленое на зеленом.
Так что решал я изначально Б?ТИ
Я предположил что оно относится к слову только после того как капча сменилась. Потому и написал его в скобках и отправил пост.

Зачем подкручивать разность цветов до еле читабельного если ботам плевать на эту разницу, а человек страдает.
show.png14 Кб, 270x120
569 2678711
>>678700

>Книжки вообще не читаешь?


а эту реши
570 2678719
Ебаное Поле чудес.
20230422.png61 Кб, 797x650
571 2678842
Сап, двощ.
Есть один GridView с TextBox для ввода и кнопочка "Добавить".
На TextBox'ах висит Validator.
Подскажи как на клиентской стороне блокировать кнопку пока валидатор не скажет что все збс?
Правильно ли я полагаю что без жаваскрипта не обойтись?
Полоумный поисковик предлагает решения типа пикрелейтед, но при выполнении ругается на НуллПоинтерЭкспешин при обращении к кнопке из скрипта(возможно она еще не создана в момент вызова, я хуй знает про этот жизненный цикл страницы).
572 2678844
>>678842
Оно тебе точно нужно? Может ну его нахуй эти формы асповские?
573 2678849
>>678844
Подрядчик выкатил решение с интерфейсом в вебприложении на аспнете.
574 2679299
>>649578 (OP)
Двач, что значит вот эта ебола:

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

?

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

При Сталине такой ухни не было!
575 2679317
>>679299
Это не скомпилится. Как ты собрался сравнивать типы данных? Раз на то пошло, float не может быть больше float, потому что он равен ему.
олень.png10 Кб, 276x124
576 2679328
>>679317
Подставь рандом флоат вместо слова "флоат"
577 2679333
>>679317
Вопрос про синтаксис "> ? :" был. Который, представь себе - не гуглится.
578 2679338
>>679333
Конечно могу представить, нахуя гуглить то, о чём в первой главе любой книги пишут. Называется тернарная условная операция.
579 2679341
>>679338
Книги для задротов.
580 2679367
Есть класс, наследующий базовый класс:
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>
{
}


В чем магия?
581 2679372
>>679367
У тебя List<TestCommand> должен быть.
582 2679387
>>679367
Каждый день кто то влетает с жалобами на каст джинериков и каждый день ответ ковариантность и контрвариантность
583 2679453
>>679372
У меня будет куча команд разных типов. Мне надо как-то их все хранить в одном списке, поэтому я создал интерфейс IBaseCommand<T>. Ну, понятно, что мне не нужен Object, мне надо с этим дальше работать.

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

Совершенно не то, что это
public class TestCommand<T, V> : BaseCommand<V> where V : IViewModel<T>
{}
584 2679469
>>679453
У меня есть подорзрение, что ковариантность тут не при чем, а дело в том, что в во втором варианте тип указан конкретный IViewModel<T>, в то время как V as IViewModel<T> обобщенный.
image.png9 Кб, 270x120
585 2679614
>>679387
И что характерно, подобные вопросы идут в основном от десктопщиков, пытающихся какими-то хитровыебаными способами прокинуть данные в UI или обратно.
По крайней мере вопросов от бэкендеров, вроде "я тут хотел гланды через, жопу удалить, но у меня A<B> не кастится к <D>", на порядок меньше.
586 2679618
>>679614

>десктопщиков


десктопщиков и фулстекеров
587 2679660
>>679614

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


Очевидно потому, что на севере живут криворукие уебаны.
588 2679732
Этот ваш visual studio 12 гигов занимает. Стоит ли учиться на нем или хватит studio code?
589 2679738
>>679732
Учебные хеллоуворлды можно хоть в виме писать.
590 2679759
>>679732
В зависимости от того для чего ты учишься. Если планируешь потом где-то работать, то придется знать либо студию либо райдер. Так что, хоть что-то да придется устанавливать.
Ну и 12 гигов студии - это фигня с тем, что тебе может еще понадобится установить для разработки. У тебя одних докер контейнеров гигов на 20...30 может быть или БД всяки. Поэтому покупай себе максимально возможный дисковый объем иначе вместо нормальной разработки постоянно страдать будешь.
591 2679762
>>679759
Да я планирую работу потом найти, вкатиться то бишь. Жестко конечно, придется сериалы и прочее говно удалить с ноута.
592 2679941
>>679759
А если я попрошу рабочий пк с линукс то будут проблемы? Вообще у нас импортозамещение же, какая вижла, какой виндовс нах
593 2679951
У МЕНЯ ПРОСТО КРЫША УЖЕ ЕДЕТ НАХУУУУУУУУЙ
Вот код
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. КАК?! Сука, там же ИЛИ, а не И! Просто пиздец, я над какой-то ебанистикой сижу уже час, нахуй
594 2679961
>>679951
Ну вот у тебя и работает до момента "ИЛИ СТРАНИЦА НЕ 350" то есть похуй что у тебя налл потому что ИЛИ.
Твой цикл выйдет ТОЛЬКО когда страница 350 И пэйдж налл.
595 2679968
>>679961
Ты разницу между И и ИЛИ понимаешь? При или нихуя не должно ждать до тех пор пока оба условия выполнится, а должно выходить, когда выполняется хотя бы одно. Этого не происходит. То что ты говоришь это И
596 2679999
>>679968
Цикл продолжается покуда результат условия true. Твоё же условие true пока page != null ИЛИ pageIndex1 != 350

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

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

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

>>679941

>Вообще у нас импортозамещение же, какая вижла, какой виндовс нах


Телевизор меньше смотри.
598 2680119
>>679941
Зависит от того где и на кого ты будешь работать.
Возможные варианты.
1) Работаешь со своим ноутом. Работаешь как хочешь и с чем хочешь. Единственное, что обычно нужно vpn настроить и рабочие месенджеры/почту.
2) Выдают рабочий ноут на котором можно работать как на своем. Просто если сломаешь - отдаешь работодателю бабки.
3) Выдают рабочий ноут, но он настроен как нужно и поставить туда, что-то не из списка - большой геморрой.
4) Удаленная машина. Комп стоит в офисе, либо в ферме, либо вообще виртуалка. Подключаешься удаленно и работаешь. Тут обычно как в 3-м пункте. Большая часть софта только из одобренного списка, что-то новое только по заявкам и/или через безопасников. Тут тоже могут выдать ноут, но слабенький исключительно для подключения к удаленке. На этом ноуте можно уже что угодно ставить, но смысла нет.

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

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

>>679941

>Вообще у нас импортозамещение же, какая вижла, какой виндовс нах


Телевизор меньше смотри.
599 2680155
>>679951

>pageIndex1 != 350


Херовая практика на граничные условия ставить != вместо >= или <=
600 2680161
>>679941
По большому счету, абсолютно похуй на чем и чем ты кодишь. Главное чтобы твой конечный продукт заводился и работал на той/тех системах которые указаны в ТЗ.
Но если твоя рабочая тачка обязана находится в каком-либо контуре, то тут уже все зависит от того, что прописано в требованиях у безопасников. На чем они скажут, на том и будешь работать.
601 2680175
>>680019
Условие "или" всегда с подвохом.
602 2680176
>>679367
А List<IBaseDocument<IViewModel<Document>>> не прокатит разве?
603 2680198
Подскажите можно ли через dotnet-symbol загрузить pdb с SMB-шары? В доках msdn про это не написано, и я теперь хз как их вытягивать нормально в моем случае. Поверх http раздачу pdb в мойе галере еще не настроили
604 2680217
>>680155
Да это для теста
605 2680226
>>680198
Не работал с ним но судя по сорсам нельзя https://github.com/dotnet/symstore/tree/main/src/Microsoft.SymbolStore/SymbolStores
из костылей могу предложить смайнтить самбу на машине и как локальную директорию добавлять
606 2680227
>>680226

> смайнтить


смаунтить
607 2680379
>>680176
Точняк, вот я остолоп.
608 2680386
>>680176
>>680379
Хотя не, я понял почему не юзал. Дело в том, что некоторые команды у меня выглядят так
public class TestCommandB : BaseCommand<DocumentViewModel>
{}

И тогда будет конфликт с этими командами. А вариант с двумя дженерик типами работает и так и эдак.
609 2680440
>>680226
Спасибо. Попробую завтра такое сделать
610 2680522
Бля, в вакансии требуют asp.net mvc 5, а я его оригинально и учил до .net core
Стоит соваться туда вообще, мне подтянуть знания по mvc 5 вроде как не большая проблема, но страшно, бля.
611 2680669
>>680522
Сначала спроси зачем они его знание требуют?
Если вариант взять старый софт и переделать на новый стек, то вполне можно попробовать.
Если же исключительно поддержка старого говна - то нахуй. Такая вакансия ни новичку, ни опытному ничего не даст.
612 2680822
Надо ли хорошо знать фронт, чтобы устроится сишарп-программистом? И какой фреймворк учить: ангуляр или реакт?
613 2680823
>>680669
Это вакансия на джуна вообще, сегодня повторю model binding и validation и авторизацию и завтра с ними попытаюсь связаться, чисто на удачу, конечно.
Не получится, после 10 мая буду еще искать.
614 2680848
Я чет вот что забыл.
Как там линку работает?

Вот допустим, у меня есть массив 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;
}
614 2680848
Я чет вот что забыл.
Как там линку работает?

Вот допустим, у меня есть массив 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;
}
615 2680866
>>680822
Ну уровне - ты знаешь что такое HTML, можешь назвать 3 самых популярных браузера, знаешь где фронт и бек пересекаются.
616 2680869
>>680848

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


Вся цепочка будет проходить для каждого элемента по мере запрашивания элементов. Гугли IEnumerable
617 2680871
>>680848
Не прикладывай код к посту один хуй его никто не будет читать в таком виде
618 2680928
Сейчас смотрю старый курс Александра Шевчука и как же всё было лампово в 2012. Ставишь вижлу и можешь любую прогу спрограммировать. А сейчас напридумывали всякой параши вроде докеров, кубернетисов всяких, надо миллион прог всяких ставить.
619 2680944
>>680848
будет применять фильтр при селекте

вообще все работает для каждого элемента если в цепочке нет элементов где нужна полная материализация. Например GroupBy ты не можешь сделать без полной материализации.
620 2680948
>>680928
И сейчас можно писать что угодно. Докер/кубы это про распространение, но ты можешь поискать контору где каждый разраб ходит и руками по фтп раскатывает на виндовый сервак бинари под фреймворк 3,5.
Лично я бы не захотел туда идти
621 2680993
>>680948

>Лично я бы не захотел туда идти


Почему? Круто же и с дедами можно пообщаться.
622 2681004
>>680993
приходишь, а там такие же как ты...аааа
А где деды? А они свалили с такого проекта, не жависты же, вот и приходится нанимать хоть кого то на замену
623 2681015
Почему в сишарпе используется UTF-16? Там же всё равно все символы не влазят, потому что уже есть символы по 4 байта, но в то же время чаще хватает 1 байта на символ. Следовательно UTF-16 избыточный и жрёт в 2 раза больше памяти.
624 2681017
>>681004
Этот шарит
625 2681023
>>681015
Если ты экономишь каждый байт, ты явно выбрал не тот язык.
626 2681032
>>681015
так сложилось исторически.
из-за совместимости с VB который юзал тогда BSTR, который по факту UCS-2 с префиксом длины, который поддерживался в NT и таким образом работал с COM/OLE, потому что строки utf-8 трудно индексировать и вообще нужно работать особым образом. позже это все переросло в UTF-16 (после изобретения стандарта)

потом родился шарп и ему ему ж тоже нужно работать с COM/OLE/Automation и существующим кодом VB и потому выбора и не было.
627 2681034
>>681032
А я думал, что они тупо скопировали с джавы, в которой тоже UTF-16
628 2681040
>>681023
Я хотел программировать на голанге, но мне сказали учить прежде РНР или сишарп.
629 2681041
>>681040
Кто сказал?
630 2681042
>>681041
В голанг-треде сказали
631 2681046
>>681041
Я сказал

>>681040
Ты и сюда протек, пидорасина ебаная
632 2681049
>>681040
А я тебе говорю, что перед шарпом сначала учи PHP.
633 2681053
>>681049
Чтобы быть как Михаил Флёнов, который в Канаде сначало программировал на РНР, а когда получил гражданство, то смог перекатиться в сишарп?
634 2681065
>>681053
Да. И затем, спустя какое-то время программирования на шарпе, можно вкатиться в го.
635 2681070
>>681065
Почему так несправедливо? Ведь я уже умею программировать на голанге, но должен изучать ещё кучу всяких языков?
636 2681080
>>681070
Это ты только сейчас думаешь, что умеешь.
show.png9 Кб, 270x120
637 2681081
Куда лучше вкатиться, в раст или шарп, на вакансии пофиг?
638 2681082
>>681070
НИхуя ты не умеешь ебень. Если ты думаешь что изучить синтаксис = уметь програмировать то ты ошибаешься.
639 2681084
>>681081
По задачам.
640 2681093
>>681080
>>681082
Я написал на голанге прогу, чтобы находить старые треды для архивача
641 2681094
>>681084
Основной язык программирования в хозяйстве, веб, утилитки, гуи, геймдев поиграться итд.
642 2681096
Пацы, после изучения фронта реально более менее быстро вкатиться в сишарп для бэкенда?
643 2681097
>>681094
Шарп.
644 2681099
Люди, советующие изучать пхп, за что ж вы так других людей ненавидите?
645 2681101
>>681099
Перед изучением ПХП надо выучить питон.
646 2681102
>>681099
Это схуяль? Пхп современный отличный язык и работы на нем много.
647 2681107
>>681102
пхп конечно пытается стать как жава, но...
с огромным количеством детских болезней, которые никуда не денутся никогда (читай https://habr.com/ru/articles/142140/). И если думаешь, что "так 10 лет после этой статьи прошло. все уже не так", то ты сильно ошибаешься.

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

Это из разряда "мы не ищем легких путей". так блин поищите.
когда потом переходишь на питон, то ссышь кипятком от того как там все стройно и понятно в своей основе. Никаких тебе неявных переводов в числа, нормальные коллекции, единый подход ко всему, нормальные исключения, все ведет себя предсказуемо.
648 2681131
>>681107
Это мелочи. Лучше иметь работу на несовершенном языке чем быть кукаретиков на питоне и сишарпе
649 2681136
>>681131
то есть ты хочешь сказать, что "на го работы нет"
а на пхп и шарпе есть и поэтому и шлют учить их?

ясно.
650 2681173
>>681136
Сейчас работы ни на чем нет кроме 1с. На пхп есть чуток.
651 2681254
>>681004

>приходишь, а там такие же как ты...аааа


>А где деды? А они свалили с такого проекта, не жависты же, вот и приходится нанимать хоть кого то на замену


Кстати неплохой вариант для новичка. Приходишь такой на проект о котором никто ничего не знает и спокойно с новоприобретенными братюнями вкатунами познаешь все тонкости профессии. И предъявить вам особо никто не сможет. На все доебки можно спокойно делать "у нас же лапки", "насяльника стараемся как можем", "ты не настолько дохуя нам платишь козел, чтобы выебываться" и потихоньку пилить код. Так можно как минимум полгода-год проковырятся. И либо стать охуенным гуру, либо спокойно свалить на более другое место с хоть каким-то реальным опытом в резюме.
652 2681255
>>681102
Жир капает через монитор
653 2681273
>>681255
так не ешь перед монитором
654 2681325
>>681273
Ыыы)))
655 2681326
>>681273
Ыыы)))
656 2681329
Сцука, лаги
657 2681332
658 2681534
Нужно ли читать Рихтера перед собесами? Дело в том, что встречал сишарп-программистов, которые много лет работают в этой сфере, но даже не слышали про Рихтера. Так ли он нужен?
659 2681543
>>681534
Первые несколько глав можешь навернуть для общего развития. Чтобы хотя бы базу разбирать. CLR от CLS и CTS отличать, ну или зачем .NetStandart нужен, основы типов и т.д. Непонятные вещи можешь по диагонали прочитывать.
Сейчас найти человека который её хотя бы до конца второй части дочитал - редкость.

Но лучше советую перед собесом краткий справочник Албахари пару раз перечитать. Там всего 300 страниц и самая мякотка выбрана без лишней шелухи.
Только это если что, по самому C# и самой платформе .net
По фреймовркам типа ASP или EF так просто не отделаешься. Там уже опыт нужен.
660 2681546
>>681543

>.NetStandart


Откуда Рихтер про него мог знать в 2013 году?
661 2681571
>>681546
Точно - проебался. Он же только про .net Framework писал, позже он ничего не выпускал. Сорян.
662 2681609
>>681534
А на кого собеседуешься? Честно, как-то рихтер на джуна (включая опытного) даже не понадобился
663 2681659
Помогите советом по именованию типов для WPF.
По конвенция вью модели должны заканчиваться на ...ViewModel, то есть как-то так: ViewModels > Memes > YobaViewModel.cs
Насколько хуёво будет опустить такой постфикс? ViewModels > Memes > Yoba.cs
Ведь то, что Some.cs это ViewModel, должно быть понятно из нэймспэйса, да и если опустить постфикс, то это даёт экономию в символах - можно сделать название типа длиньше.
664 2681660
>>681659
И почему вообще принято добавлять такой постфикс?
665 2681661
>>681660
>>681659
суффиксы то есть
Сорян.
666 2681954
>>681659

>Ведь то, что Some.cs это ViewModel, должно быть понятно из нэймспэйса


Кому понятно? Неймспейсы написаны где то там в юсингах и поди разбери к кому относится.
667 2682069
Если произошло событие Unload, то это не гарантирует что объект уничтожен?
668 2682089
>>681660
В шарпе дроч на имена, там это очень важно. Важно приписывать Аsync, а реализация интерфейса ориентируется на имена свойств и методов. В какой-то степени на этом основана работа Visual Studio, ну и в принципе вот такой подход выбрали.

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

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

Вот и решай какой стул приятнее.
669 2682121
>>682069
если WPF
1 событие вообще может не произойти
2 и если произошло то может быть виртуализация и это не значит что он уничтожен
670 2682130
Прочитал этот ваш C# Player's Guide, что ещё можно прочитать для дальнейшего преисполнения? Интересуют всяческие глубинные Advanced вещички.
671 2682135
>>682121
У меня какая-то хрень с биндингами. Привязал список, а когда я извлекаю итем модели и вставляю его в другое место списка, то на стороне вью удаляется экземпляр и создается новый (что ожидаемо). Как только я меняю свойство модели, то свойство почему-то меняется сразу в двух итемах - в текущем и в якобы удаленном.

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

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

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

И еще маленький вопрос. Я связал три свойства A-B-C в двухстороннем режиме. И когда я меняю свойство C, то почему-то логи показывают, что порядок изменения свойств неожиданно идет в противоположном направлении т.е. начиная с A, затем B, затем C. Это нормально или логи не успевают регистрировать? Разницы между временем логгирования естественно нет.
672 2682139
>>682121
>>682135
В догонку.
Собсно, а зачем нужна виртуализация, если я добавляю в список ровно тот же экземпляр модели, но вместо того, чтобы брать предыдущий итем, связанный с этой моделью ранее, создается совершенно новый итем?
673 2682141
>>682135
И как же ты видишь этот "якобы удален"?
674 2682146
>>682141
Ну он визуально исчез из вью-списка и произошло событие Unloaded для данного итема. Поэтому я и написал "якобы". Но при этом срабатывает метод OnPropertyChanged с уникальным UID "удаленного" итема - из чего я понял, что экземпляр не удален.

А по поводу очистки дата контекста, это я не так выразился. Просто перестают обновляться свойства, а уничтожен ли экземпляр — неизвестно.
675 2682176
>>682146
ты отдели мух от котлет
контрол выгружается (при этом он очистит свой датаконтекст) и OnPropertyChanged он не кидает, а ловит разве что
2023-04-2701-02-54.png62 Кб, 1408x334
676 2682227
>>682176

>OnPropertyChanged он не кидает, а ловит разве что


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

>при этом он очистит свой датаконтекст


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

Пикрил - примерный лог.
677 2682239
>>682227
без кода этот разговор ни о чем.
кто знает как ты там подписываешься на вьюмодель. Даже если забыть про сильную подписку или слабую (которая все равно будет работать пока не придет GC), то например из твоего лога никак не видно как у тебя вдруг на старых итемах стал титле "A"
image.png53 Кб, 524x705
678 2682262
>>681954
>>682089
То есть верхний вариант лучше, чем средний?
Или можно как на нижнем?
image.png30 Кб, 515x102
679 2682372
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Identity.RoleManager`1[Microsoft.AspNetCore.Identity.IdentityRole]'

Второй день уже ебус с этой ошибкой. Какого хуя он не инжекстится .
680 2682470
>>682262
Вот относительно ViewModel хз. Мне кажется, это подписи нужны для новичков. Любой класс может быть вьюмоделью, если он INPC, какой смысл это приписывать? Но я не знаю дают ли имена в продакшене.

Что касается примеров пикрил, то первый наименее удачный вариант. Во-первых там какая-то тавтология из ViewersOverviewes. Второй и третий слишком абстракные, все что нам сообщается, что это детальная вьюмодель, но вьюмодель чего?
В первом я бы удалил одно из слов Viewers или Overview.
681 2682501
Ребят, посоветуйте плиз какой-нибудь краш курс по сишарпу. Прогал на тайпскрипте до этого.
682 2682524
>>682501
Дак они все устаревшие. Сейчас дотнет 7, а через полгода уже будет 8. По ним ничего не вышло ещё и выйдет через 2-3 года только.
683 2682546
>>682524
Ну синтаксис то подучить для начала хотя бы
684 2682548
>>682546
Ну тогда курс Александра Шевчука за 2015 год
685 2682568
>>682372
Разве роль не должна быть отдельным классом наследуемым от IdentityRole<T>?
686 2682652
>>682262
Ну вообще делят так.
1 папка ViewModels/Views/Controllers то есть основное деление по типу (внутри могут быть сгруппированы по фиче) - позволяют расположить это в разных сборках. Когда пишешь на хамарин то у тебя вьюхи там отдельно и это жизненно необходимо.

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

>>682470

>Мне кажется, это подписи нужны для новичков


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

Не очевиден? Допустим ты читаешь чужой код на гитхабе, в диффе, или даже в IDE и видишь класс User. Удачи тебе выяснять что это на самом деле вьюмодель. Тебе придется читать блок using что мало поможет, в IDE ладно ты можешь навести мышь и узнать неймспейс...но и он тебе мало поможет если используется feature структурирование проекта.
687 2682676
>>682501
Если прям краш, то метанит.
688 2682767
>>682548
Он покрывает все нужные фичи которые сейчас есть? Обновлений после него особых не было?

>>682676
Благодарю
689 2682771
Помогите неофиту с философской проблемой.
Есть один метод который работает с сетью и в котором на весь метод расположен try/catch. Сеть может отвалиться и тогда создастся эксепшн. Я хочу сделать перезапуск этого метода через n секунд. Если я вызову в этот метод в catch то насколько я знаю создастся еще один "экземпляр" этого метода в памяти и вообще получится аля рекурсия. Повешать try/catch выше на вызов этого метода тоже шляпа потому что я вызываю этот метод множество раз из разных участков кода.
Пока что единственное что я придумал это поставить метку в начале и в catch перемещатся через goto.
Существует ли какой-то более элегантный способ?
690 2682796
>>682767
Я тебе выше написал, что каждую новую версию надо учить специально. Сишарп - это не джава, где 30 лет обратной совместимость. Тут каждый год всё меняют.
image.png44 Кб, 535x418
691 2682803
>>682771
Я бы пикрил накидал.

> goto


Не жалуйся только потом что тебя отпиздят за углом галеры
692 2682805
>>682796
Я может плохо тебя понимаю, ты о синтаксисе говоришь или экосистеме в целом?
693 2682815
>>682805
Батарейки постоянно меняются, иногда с обратной совместимостью, но часто и нет с здоровыми мануалами по миграции
Синтаксис только дополняется, иногда фичами которые на столько фачсты что люди поднимают версию языка если не получается поднять версию кора

мимо
694 2682820
>>682815
В сишарпе 8.0 ввели понятие ссылочных типов, не допускающих null, которые выглядят также как старые ссылочные типы, допускающие null. Так что это не дополнение, а замена.
695 2682821
>>682803

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


наоборот, будут считать гуру который знает как испольовать goto (ведь обычный программист знает всего 1-2 случая где полезен goto, а тут такой мастер)
696 2682824
>>682820
Наллабал референс тайпс это же просто сахар на уровне языка, на итоговый ил не влияет
697 2682827
>>682824
Но пишешь ты не на иле, а на сишарпе, а значит вынужден учитывать все эти изменения.
698 2682830
>>682827
Они опциональны, это сахар. Дополнение для языка являющееся лишь подсказкой которую иногда ещё и осознано глушить приходится null!
Без доп настроек string a = null даже не ошибка и компилер только предупреждение кинет
699 2682841
>>682771
А вообще для таких нужд есть Polly и подобные либы
700 2682843
Какой же TreeView обоссаный кусок кала. И не менее забавен цирк из туториалов. Банально гуглишь драг энд дроп и 99% всех туторов сводится к тому, что дропается Selected Item — это настолько далеко от реальности, что аж зубы сводит.

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

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

Пришлось наверитенить таких костылей, то теперь хрен разбершься от чего вот это >>682227
701 2682849
>>682843
Возможно я избрал раковую стратегию, но либо консольный софт, либо asp+spa, а на все эти десктопные гуи просто кладу болт
702 2682854
>>682843
Плевать вьюхам на MVVM. Их дело поддерживать систему биндингов, а то что тебе хочется там логику разделять - до этого им дела нет.
703 2682869
>>682805
У тебя выбор: либо смотреть курс Александра Шевчука, сертифицированного специалиста Microsoft, либо читать метанит, который написан рандом челом из интернета, который даже свой сайт написал на РНР, но учит людей сишарпу.
704 2682883
>>682869
какая разница на чем написан сайт. там и про ассембплер есть - писать сайт на ассемблере?!
705 2682886
>>682843
ты должен был начать с этого
https://github.com/punker76/gong-wpf-dragdrop
а не с нуля писать.
706 2682998
Хотел написать на авалонии небольшую программку для просмотра бур, а они все забанены ркн.
707 2683030
>>682771

>через goto.


Как же я рад, что разрабы шарпа оставили в языке этот оператор.
708 2683032
>>682820
По итогу во всех проектах установлено nullable disable. И большинство не просто не знают как с ними правильно работать, а даже и не подозревают, что в шарпе подобное есть.
709 2683082
>>682886
Спасибо, да я уже сделал, просто накопился бугурт. Тут понимаешь, нужно сделать с определенным визуальным стилем и функционалом, поэтому все готовое не всегда подходит.
Я сам сделать не против, если бы реализовали БАЗУ.
2023-04-2723-07-54.png28 Кб, 655x306
710 2683090
Почему на пикрил я вижу подписку на события, но не вижу отписки? Или в шарпе это норма?
711 2683093
>>682227
Короче, в диспозе заюзал BindingOperations.ClearBinding для всех поптисок внутри контрла. Я немного не понял как это работает — я пытался изнутри контрола очистить биндинг снаружи, типа
BindingOperations.ClearBinding(this, myControl.DataContext)
а надо чистить биндинги на DataContext.

Проблему так и не установил, пока обошелся диспозом.
712 2683096
>>683090

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

TreeView не изучал - не было нужды
2023-04-2800-03-37.png35 Кб, 1058x233
714 2683098
>>683097
Да я сам не знаю что у меня. Я уже как-то сомневаюсь, что вот эти три подписки (пикрил, нижние строчки) автоматом удаляются, а они у меня буквально для каждого итема. Я их как раз юзал, чтобы реализовать Preview Select.
715 2683102
>>683098
это подписка на самого себя же. Их нет нужды отписывать.
image.png15 Кб, 853x169
716 2683152
717 2683176
>>682841
Вообще мимо, у меня работа с FTP.
>>682803
Мне тогда уже while true использовать. И в чем проблема одной метки?
718 2683288
Как я могу получить айди авторизированного пользователя в коде , без обращения к базе ?
719 2683291
>>682652
>>682470
А почему ViewModel ставят суффиксом? Для коротких названий (DvacherViewModel) удобнее и как будто бы логичнее, но для длинных не лучше ли ставить префиксом типа ViewModelOf...?
Например OldSchoolEOTSpammerBitardViewModel и ViewModelOfOldSchoolEOTSpammerBitard.
720 2683292
>>683288
Смотря как он у тебя авторизуется. Если, например, через jwt, то Id можно прописывать в нем и брать его оттуда при авторизации.
image.png25 Кб, 639x77
721 2683302
>>683292
У меня jwt. При генерации токена я вкладываю в него айдишник. Каждый раз парсить его наполучение айдишника получается ? Методы со скрина возвращают всегда null почемуто.
722 2683314
>>683302
Почему ид ты из какого то левого менеджера берёшь а остальные нормально из клаймов.
В любом случае есть дебаг вью
723 2683337
>>683302

Все , я нашел ошибку. Если кто еще столкнется с этим, то при генерации токена надо прописывать claims: List<claims>. У меня было тупо claims.toString();
724 2683341
>>683291
1. у тебя добавилось еще две буквы к и так длинному тексту.

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

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

зы: кто там капчу делает? че мелочишься? делай 1000 черных букв на черном фоне и выброси все слова, оставь только слова с потолка типа кувырк. Ну чтобы наверняка.
730 2683580
>>683470
почему визуальный родитель должен удаляться если ты обнуляешь дочерний?
котопер 731 2683684
Приложуха на вин 7 (больше нигде не воспроизводится) иногда валится с абортированием треда (какого не понятно).

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

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

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

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

Как еще можно попытаться локализовать проблему, узнать бы какое исключение валит и где.
image19 Кб, 687x309
732 2684181
Мне нужно поменять порядок дженериков в классах.
Есть класс типа ClassVasyana<TDva, TOdin>.
Надо чтобы он стал ClassVasyana<TOdin, TDva>.
В стандартной студии такого рефакторинга нет.
Как это сделать? Может есть какое бесплатное расширение?
Платных расширений типа решурпер я себе позволить не могу.
image4,2 Мб, 2105x1635
733 2684199
>>683291

>OldSchoolEOTSpammerBitardViewModel


>ViewModelOfOldSchoolEOTSpammerBitard


А кто-нибудь вообще из числа программистов догадывается, что такой нейминг, мягко говоря, не удобно читать?
Что мешает делать пробелы нижним подчеркиванием?
Вроде размеры мониторов позволяют, не?
Раньше, до 15 века, писари-монахи тоже не были знакомы с таким изобретением как пробел, а может быть бересту экономили. А может просто боялись перечить авторитету предшественников, боялись вякать, мол, тут так заведено, не я эти правила придумал, не мне их менять, я простой монах, маленький и никчемный, там лучше знают как удобнее.
Но вот уже как 500 лет человечеству знакомы пробелы.
Ну как, знакомо большинству. Но только не программистам. У них особый нейминг, не как у людей. Подчеркивающий, что они наверное лучше и умнее (нет).
Вот кто-нибудь реально может объяснить такой дегенеративный нейминг? Почему его до сих пор не искоренили волевым решением, хотя бы в рамках отдельных проектов?
Или же может у меня с глазами что-то не так, проблема во мне, а большинство людей нормально воспринимает вот это ViewModelOfOldSchoolEOTSpammerBitard своими могучими глазами?
734 2684223
>>684199
В шарпах для всего свой нэйминг и в именах классов камел кейс
735 2684229
>>684223
1. Нейминг был важен, когда кодили в блокноте. Сейчас IDE и даже сраный гитхаб все тебе подсветит.
2. Шарп отлично компилируется с любым неймингом. Лишь бы программисту было удобнее читать.
736 2684232
>>684229
Вот мне как программисту и удобно иметь один нэйминг которого все придерживаются. От майков до васянов
737 2684238
>>684232

>удобно


А ViewModelOfOldSchoolEOTSpammerBitard тоже удобно?
738 2684245
>>684238
ВьюМодел в конце и да, удобно т.к. их обычно не 1 и не 10
739 2684266
>>684223
Это не camelCase, а PascalCase, потому что автор языка паскалист
740 2684284
>>684199
Я думал "спрятать" сложность имени в нэймспэйсы (тысячи их), типа ...ViewModels.Bitard.OldSchool.EOTSpammer, но меня обосрали мне сказали, что я неправ.
Но я просто самоучка без опыта, так что, скорее всего, просто нихуя не понимаю и не пойму похоже. Хотя смысл дописывать ViewModel (Command, Service, Store) кажется понимаю, но у меня пока получаются только длинные имена и я хуею с них.
741 2684291
>>684284

>ViewModels.Bitard.OldSchool.EOTSpammer


Проблема тут в том, что неймспейсы обычно никто явно не пишет, их подключают через юзинги, и часто их много изается в пределах одного файла.
Соответственно, имена классов могут начать конфликтовать.
Использовать везде полные имена с включением неймспейса - многословно.
Использовать имена неймспейсов при указании имени класса избирательно - неконсистентно.
Поэтому в итоге используются просто длинные имена классов.
742 2684295
>>684284
>>684291
Ещё такое дело что видя неймспейс всегда ожидаю что его можно наложить на структуру директорий и найти нужный мне файл с кодом не имея больше ничего

мимо
743 2684382
Делаю приложение на новом модном, молодёжном и современном GUI Windows Forms. Необходимо хранить поля для подключения к БД в отдельном файле имя.cfg . Подскажите, пожалуйста, как правильно описать этот файл и достать из него значения?
У меня в проекте автоматически создался файл App.config и в интернете только о нём вся информация. А мне нужен другой файл и из него вытаскивать значения
744 2684392
>>684382
Ну сделай другой файл. С вин формами это никак не связано.
Чаще всего просто в жсоне хранят
745 2684492
>>684199

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


подчеркивание тоже отстой. лучшее это camelCase

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

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


Угу. Просто когда ты в соло пилишь свой проект или даже в попенсорце на расслабоне, то все твои идеи кажутся такими охуенными и "почему остальные такие долбоебы и не делают так же". А вот когда попадаешь в реальный проект где всем на твои фантазии похуй и над проектом работает команда где у каждого свои задачи, и у всего есть сроки и цели, то начинаешь поинмать, что некоторые вещи то делаются не просто так и почти у всего есть свой смысл.
747 2684514
>>684492

>лучшее это camelCase


почемуЖеТогдаЗдесьТыНеПишешьТак?ВсеПрограммистыШарписты,ПоймутИОценятВедь.
748 2684568
>>684514
я ж вроде ясно написал, что не приемлю "тянуть свой любимый нейминг в чужой монастырь"

шарп - ПишуТак
питон - пишу_так
котлин - пишуТак
двач - пишу так ИБО ТУТ ТАК ПРИНЯТО
749 2684651
>>684181
Что мешает сделать класс обертку:

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

Так в старых местах - ты ничего не поломаешь, а в новых - будешь нужный порядок женерик-аргументов соблюдать.
750 2684656
У меня вопрос про абстракции.
Давайте представим, что я делаю игру.
И вот я - бака, который хочет абстрагироваться от апи для рисования графики.
Как это должно выглядеть?
Видится мне, что это должно выглядеть примерно как:
Папочка Graphic, в ней подпапочки directx, opengl, vulkan в папочке Graphic - я делаю класс Renderer и кучу примитивов: спрайт, полигон, текстура и т.д.
В своем приложении я использую эти вот абстракции.
Но вопрос какой. Я должен же как-то "движку" сказать, какой API использовать. И вот тут уже сложно становится.
Самое простое решение видится, это статический класс GraphicConfig, который при старте приложения - инициализирует все че там надо. И второй класс GL_PrimitivProvider, который будет провайдить нужные графические примитивы.
Но чет чем больше я об этом думаю, тем больше мне кажется, что как-то не туда я думаю.
751 2684712
>>684651

>Что мешает


Хочется, чтобы было красиво.
Это личный проект, не для кабана.
752 2684715
>>684656

>Я должен же как-то "движку" сказать


Нет, не должен.
Рисование графики - это библиотечный функционал.
Он должен работать с любым допустимым API.
Конкретный API выбирается на клиенте.
Оба предложенных тобою способа приемлемы.
В общем случае решается через DI.
753 2684726
>>684712
Значит выделяешь себе день. Затариваешься пивком, закусью. Включаешь любимое музло и ручками переделываешь. В итоге имеешь приятное ощущение опьянения, чувство от проделанной работы и того насколько твой пет-проект охуенен.
.png12 Кб, 684x289
754 2684730
>>684712
Ну. Просто я даже с трудом могу представить, как такой рефакторинг должен работать на самом деле.
Вот давай прикриплейд. Что должно произойти при применении такого рефакторинга который ты хочешь.
755 2684741
>>684730
Где-то в коде будут конверторы с конкретными типами.
Их порядок должен поменяться в объявлении.

Будут какие-то методы, которые будут принимать конверторы в качестве аргумента, в них тоже порядок должен поменяться.
756 2684810
>>684741
Имхо дохуя хочешь, но можешь попробовать регулярками основные сигнатуры поменять
757 2684863
Как тестировать сишарп-приложения через VS Code? Дело в том, что проект для тестирования создаётся как новый проект в рамках того же решения, что и основной. Но VS Code не поддерживает систему решений, а только отдельные проекты. Получается через VS Code невозможно тестировать приложения?
core21.jpg79 Кб, 783x290
758 2684872
Поставил .NET Core 2.1 на линупс, а проект создать не могу. Вот вам и хваленная поддержка микрософт!
759 2684875
>>684872
Это та по которой поддержка 2.1 закончилась почти 2 года назад?
Никто не будет переписывать.webm1,3 Мб, webm,
1920x1080, 0:03
760 2684876
>>684875
И что? Каждые два года всё переписывать на новый дотнет?
761 2684878
>>684876
Для начала выбирай LTS
И перестань сидеть на говне мамонта
На скрине небось не убунту 18
762 2684879
>>684878
У меня книжка по версии дотнета 2.1, а по новой молодежной 7.0 книжки ещё не вышли. Как я должен вообще учить сишарп, если они старые версии ломают, а по новым инфы ещё не вышло? Замкнутый цикл просто!
763 2684880
>>684879
Мде. Иди в грузчики. Там пояснят
764 2684881
>>684880
Почему на голанге я могу взять любой код 10 летней давности и он работает на новой версии голанга, а тут 2 года прошло и ничего не работает? В джаве вообще по 20 лет сидят на старых версиях и всё работает. Один сишарп особенный и ему надо вот прям последнюю версию.
Как в продакшене вообще работают? Каждый год переписывают всё на новые версии дотнета? Что-то сомневаюсь. Бизнес такой ерундистики не потерпит.
765 2684882
>>684881
На шарпе то же самое.
Разберись в мухах и котлетах
766 2684888
>>684881
При чём тут код? Ты до кода даже не дошёл. Твой голанг 10-летней давности будет ебать тебе мозг вендорингом и GOPATH.
767 2684889
>>684881
>>684872
Ты троллишь, или не в состоянии открыть и прочитать?
https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-new-sdk-templates#web-options
768 2684896
В сишарп реально вкатиться за 3 месяца имея опыт во фронте?
769 2684898
>>684889
Ты сам ставил 2.1? Создавал проекты?
770 2684899
>>684888
Я пробовал и ничего такого не было. Всё работает. А всё потому, что голанг имеет полную обратную совместимость.
771 2684903
>>684898
Т.е. ты читать таки не умеешь?
772 2684907
Не. Ну конечно я не знаю. Может быть в коммунити голанга не принято читать доки. Там какой-то тутор есть, в котором 3 команды на все случаи жизни которые они выучили и всю жизнь пользуют. Но блин. Ссылка, в которой буквально написано что сделать надо, чтобы более старые версии проектов создавать.
Но зачем ее читать? Надо прийти в тред шарпа и начать вонять, как неудобно сделать одну команду.

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

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

А от асп такого не жду, потому что это отдельный фреймворк просто от вендора.
774 2684911
>>684903
Я ввёл точно такую же команду. Ты поди в Винде пишешь, а не в линупсе.
775 2684912
>>684911
ПРОЧИТАЙ, ЧТО НАПИСАНО:

>> 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.

776 2684913
>>684908
Код из книжки Фримана не подходит для 7.0. Там даже изначально совсем другие шаблоны генерируются и концов не найдёшь куда что писать.
777 2684916
>>684912
О каких нугетах речь, если команда dotnet new list выдаёт ошибку. 2.1 не создаёт даже консольных приложений. Скорей всего там не SDK, а только runtime заложен.
778 2684917
>>684916
Ты троллишь чи как?
У тебя на первом скриншоте явно есть 2,1 как сдк.
Или ты не знаешь что нугеты это просто пакеты, среди которых могут быть и инструменты для разработки, вроде ef'овских, для создания миграций, тулзы для нанофреймворка чтобы прошивать девайсы и много чего еще?

Тебе буквально надо сделать команду:
dotnet new install нугет с темплейтами для netcore2.1
https://www.nuget.org/packages?q=Microsoft.DotNet.Web.ProjectTemplates
0packages.jpg98 Кб, 964x666
779 2684941
>>684917
Что я делаю не так?
780 2684971
>>684941

> Что я делаю не так?


Троллишь тупостью
781 2684975
>>684971
А ты троллишь бесполезными советами
782 2685265
>>684913
не читал фримана, потому и проблем не имею

вообще это дичь - брать древний дотнет только потому что книжка есть. Возьми другую книжку блин.
783 2685269
>>684913

>Код из книжки не подходит


>совсем другие шаблоны


>куда что писать.


Этот вкатун сломался даже не начав кодить, несите следующего.
784 2685271
>>685265
Другую в свободный доступ ещё не скинули, а покупать не готов, так как не работаю

>>685269
А ты сразу знал куда и что писать?
785 2685281
>>684872
Маялся весь день с проблемой, но в целом разобрался.
1) Проблема в том, что на убунте 22.04 новые библиотеки для SSL, а дотнеты к ним привязаны и из-за этого отказываются работать.
2) Ради эксперимента поставил убунту 18.04, накатил дотнет 2.1 и всё завелось сразу без танцев с бубном, просто потому что там старые библиотеки для SSL.
786 2685283
>>685271

> А ты сразу знал куда и что писать?


Зачем тебе знать куда и что писать?

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

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

>А ты сразу знал куда и что писать?


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

>А ты сразу знал куда и что писать?


Дело не в этом я в принципе не оперирую такими понятиям "куда писать код"
А дело тут в косности твоего мышления.
Вы, вкатыши, с какого-то фига решили, что существуют какие-то 'шаблоны', в которых поняв 'куда нужно писать' ваш говнокод, вы магически научитесь программировать/разрабатывать. А потом придя в реальный проект, начинаете охуевать, "а чего тут не как в книжке написано", "а-а-а, клятый микрософт опять все поменял".
789 2685346
>>685333
Лул. Прям с твоего описания - вспомнил чела который со мной вкатывался.
И вот че обидно. Сам дядька был типа прикольный. 38 лет, решил сменить работу таксистом на кодера. Прошел курсы. Общительный. Внешне - вроде старался.
Реальная задача: Пользователь на форме указывает файлик csv такой-то структуры, надо обработчик сделать, который должен достать данные, привести к нашей модели и сохранить в бд.
Три месяца. Три месяца чел не мог сделать. При этом - если спрашивал, то как-то странно, в духе: а как делегат пробросить туда, а надо ли делать интерфейсы и в таком духе.
Конечно, там сверху навалилось, что микросервисы, докеры и все это вот, видимо сложно сразу все переварить. Но ХЗ.
Вообще. Немного обидно за дядьку. Мне он нравился. Но как слышал, он попросился в тестеры. Там полгода посидел, прошел еще курсы и таки в сбер съебался. Надеюсь у него все ок в конечном итоге.
790 2685494
>>685283
Даже Рихтера не читал?
image260 Кб, 873x748
791 2685496
>>685346

>Рихтера не читал?


Всегда считал советы читать эту книгу новичками каким-то жирным троллингом, типа сначала выучите ассемблер, основы электротехнику и линейную алгебру, а только потом начинайте красить кнопки.
Для новичков она тяжела и ничем им не поможет решать возникающие у них проблемы.
Для опытных она бесполезна, т.к. во-первых давно устарела, во-вторых, в документации от МС и исходниках всё написано намного подробнее и современнее.
792 2685515
>>685265
Степан Береговой сказал, что эта книга лучший вариант для старта
https://www.youtube.com/watch?v=BG4nnMR7uTs
793 2685539
>>685281
Вообще, какой вывод можно сделать? Получается линукс не подходит для сишарпа. Вся эта кроссплатформенность сделана только, чтобы заливать веб-приложения в докер-контейнер. А среда разработки по-прежнему остаётся только Винда.
На винде можно поставить все дотнеты: фреймворки, кор 2.1, 3.1 и новые 5-7. И всё работает и коробки. Просто в вижле ставишь нужную галочку.
794 2685669
>>685515
Книга издана в 2017 году.
Видос 2021-го года.
Совет из видео протух уже в момент его создания.
795 2685671
>>685539

>Получается линукс не подходит для сишарпа.


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

>А среда разработки по-прежнему остаётся только Винда.


Нет.
796 2685732
>>685669
А как ты предлагаешь тогда учить ASP.NET?

>>685671
Накатывать виртуалку с шин11 и там программировать?
797 2685740
>>685732

>как учить ASP.NET?


Курсы!
798 2685741
В чужом коде меня больше всего сбивают с толку кастомные extension-методы.
Особенно бесит такое читать не в IDE, а где-нибудь в вебе, где явно не видно, что это экстеншн, и какая у него логика.
Удивляют в связи с этим настойчивые пропосалы сообщества шарпистов сделать в новых версиях дотнета экстеншн проперти, индексаторы и прочий ад, и чтобы всё это ещё могло интерфейсы реализовывать экстеншинами.

Насколько это вообще нормально, зрело, чисто и по-синьорски использовать экстеншены в коде?
799 2685743
>>685732

> Накатывать виртуалку с шин11 и там программировать?


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

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

> учить ASP.NET?


Тебе даны божественные мсдн и гитхаб а ты выёбывешься. И к слову асп.нет уже сто лет как сдох и закопан вместе с фреймворком
800 2685840
>>685743
Это не жир. Сами микрософты предлагают ставить виртуалки с виндой и вижлой на линукс:
https://www.youtube.com/watch?v=7ylEKe3F6po
801 2685872
Смотрю туториал, где делают магазин на razor, но я чет не понимаю, нахуя мне вот этот вот класс и нахуя вот это вот использовать тут, если можно репозиторий напрямую инджектить
802 2685903
>>685872
А, понял, в чем прикол.
Хотя тут все еще бесполезны такие методы я считаю, тупо лишний код.
803 2685932
>>685903
Нигер такого не бывает, все методы нужные
804 2685955
Есть мой код который подгружает класс из длл, создает инстанс, приводит его к интерфейсу и дергает интерфейсный метод. Мой тред проваливается в пользовательский код из длл что-то там делает. Допустим, слишком долго поток не возвращается оттуда и я хочу все прекратить и продолжить со следующей длл.

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

На фреймворке абортом наверное можно попробовать, на коре аборт выпилен, а интерапт не спасает если поток на той стороне, например, в вайл тру хуярит. Токены вообще не работают, потому что пользовательский код может болт положить на проверку отмены. Какие еще варианты?
805 2685969
>>685741

>Особенно бесит такое читать не в IDE


А нахуя ты читаешь код не в IDE ? Это такой вид мазохизма, типа "у меня есть шуруповерт, но я буду закручивать шурупы отверткой" ?

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


Нормально. Большинство кода в продакшене сейчас состоит из одних экстеншенов с кучей лямбд.
sage 806 2685981
>>685955
Никак, если ты даже абортнешь тред с таской то можешь зацепить и другие таски на том же треде
807 2685995
>>685955
Только через костыли ебаные.
Можно поебаться с подпроцессами. Написать маленький бинарник-загрузчик сборок и положить его рядом с основной программой, дальше запускать бинарник в отдельном процессе и вызывать Process.WaitForExit(таймаут) и Process.Kill().
Либо запускать новый тред и пользовательский код в нём, а после таймаута не останавливать его и запускать следующий в надежде, что предыдущий не будет жрать много ресурсов и когда-нибудь сдохнет.
808 2686022
>>685981
Ну я стараюсь не пачкать тредпуловские потоки об эту таску.

>>685995

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


Сейчас так и работает.

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

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

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

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

Но будет >пик
811 2686718
Бля, шо делать, код генератор отказывается добавлять identity в 19 студии
пытался уже и efcore под 5.0.2 переустановить как советуют в интернете, удалить .vs и все bin и obj, перезапустить студию и попробовать снова, а хуй там.
812 2686744
>>686718
Во первых, прекрати страдать хуйней и поставь уже 22-ю студию, она гораздо пизже 19-й.
Во вторых команды которые вводишь и сообщения об ошибках показывай.
813 2686746
>>686744
Та какие комманды, просто пытаюсь идентити добавить через интерфейс и оно грит There Was An Error Running The Selected Code Generator
Тащемта разобрался, обновил ef до 5.0.17 и оно заработало
814 2686748
>>686744
Единственная гораздость в ней - 64 битность
В остальном куча годных расширений перестало работать
815 2687100
>>686560
А без фронта не возьмут? Меня от реакта подташнивает. Вчера 200 страниц фримана осилил, в принципе пока всё понятно
816 2687223
>>687100
А как ты установил дотнет 2.1?
817 2687240
Почему в конструкторе класса параметры записываются в расширенное свойство, типа this.Name вместо того, чтобы записывать напрямую в private name? Разве это не двойная работа?

private string name;

public string Name
{
get{ return name; }
set{ name = value; }
}
818 2687258
>>687240
Тот кто писал захотел абстрагироваться от приватного поля и дать всё на откуп сеттеру который может что то сделать с значением по пути.
Конкретно тут вопрос больше зачем явно прописывать приватное поле если оно не нужно
819 2687326
>>687100
Новичком вряд ли. Даже у опытных очень часто требуют знание каких-нибудь фронтовых фреймворков. Чтобы разраб как минимум мог понимать, что там под капотом, залезть внутрь понять и отдебажить. При необходимости, что-нибудь подправить или какой-нибудь мелкий компонент написать.
Вакансий где 100% бэк относительно мало, а для новичков их практически нет.
820 2687352
>>687240
А вот на собесе тебе этот вопрос и зададут. И спросят, почему нужно делать именно так (установка приватного поля через публичный проперти в конструкторе) и каким буквам SOLID-а, это соответствует.
image.png138 Кб, 1646x1302
821 2687418
Двач, допустим, у меня есть мак (ноута/ПК на винде нет в принципе) и желание выучить C#/.NET. С чего начать (кроме очевидного, пойти почитать пикрил). В чем сложность работы с C#/.NET на маке?
Сможет ли бывшая JS-макака освоить C#?
822 2687420
>>687418

> В чем сложность работы с C#/.NET на маке?


Райдёр есть? Да? Тогда сложностей нет
823 2687424
>>687418
Скачай виртуалку с виндой и вижлой с сайта микрософт как в этом видео: >>685840
824 2687448
>>687420
Сложность в том что владелец огрызка это умственно отсталое ебанько, соответсвенно кодить с такой тупой башкой проблематично.
825 2687455
А может быть так, что когда я меняю контекстные данные родительского контрола, дочерние элементы автоматом начинают всасывать их в свои контекстные данные.

Это легально вообще?
826 2687568
>>687455
В этоми есть основной смысл
827 2687597
>>687352
То то EF имеет функционал прямой записи в приватные бэкинфилды. Видать говнокодеры )
828 2687621
А можно как-то логгером (Serilog) отловить WPF ошибки?
System.Windows.Data пишет только в окно интерпретации, если происходят какие-то ошибки привязки.
829 2687628
>>687621
лови чем угодно же
создаешь свой листенер и подписываешься
if DEBUG
PresentationTraceSources.DataBindingSource.Listeners.Add(new BindingErrorTraceListener());
PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Error;
#endif
830 2687656
>>687597
Ты путаешь возможность и необходимость. Так-то в шарпе и goto в наличии есть, но это не значит, что его нужно использовать хоть где-то.
831 2687733
>>687656
Помнится как-то на почившем Лурке была статья про goto.
Как по мне - признак говнокода, нежелание юзать методы нормального человека. Но норм примеров гото я не видел за 4 года учебы и 3 года стажа
832 2687753
>>687733
попробуй сделать break N
и еще один пример видел, но не записал
833 2688017
>>687628
Как я понял, 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);
Но чет хуйня какая-то.
834 2688040
>>688017

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

2 outout что ли? ну туда сам бог велит писать. Как бы оно для этого и придумано. (тем более что у впф даже консоли нет куда можно было бы еще вывести). В конечном использовании продукта никакого output не будет же.
Но даже если туда срет дважды, то смотри пункт 1 - то есть пофиксил ошибку и все чисто красиво.
835 2688078
>>688040
Первый пункт меня не особо напрягает. Решил просто просить.

>Но даже если туда срет дважды, то смотри пункт 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 ...
В текстовом файле, соответственно, будет только последняя строка

Первую строку срет какой-то дефолтный листенер, а вторую — серилог из моего листенера.
836 2688108
>>688078
никак ты это не пофиксишь. лично я не знаю как отменять дефолтный вывод. И сильно удивлюсь если это возможно ибо это противоречит самой идее отладки.

разве что попросишь серилог не какать туда сообщения от этого листенера.
837 2688490
>>687568

>В этом и есть основной смысл


Ну да, это имеет смысл, когда дочерний контрол находится в том же 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 лезет неведомая залупа, которую он не ожидает видеть внутри. Он делался отдельно от всей этой параши, он не знает куда его всунут и что туда прилетит. Как мне установить защиту в таком случае?

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

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

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

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

Сомнительная хуйня.
840 2688693
>>688490

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


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

>Он делался отдельно от всей этой параши, он не знает куда его всунут и что туда прилетит


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

>>688641
Лично я не знаю как себя ведет DataContext контрола если вставить его из кода в другой контрол, но ожидаю что он унаследует DataContext места куда вставлен (в момент вставки, то есть смены родителя) и привязки обновятся. Но я не проверял и не сталкивался - я не знаю зачем об этом вообще думать и что то делать в коде такого рода, а именно создание контролов и ручное распихивание.
841 2688756
Сорре за тупой вопрос но только вкатываюсь в Visual Studio. Вот создал я консольное приложение. Как мне видеть результат выполнения моего Hello World в консоли? Использую 2022 версию
842 2688774
>>688756
запускать пробовал?
843 2688812
>>688774
А как? Что нажимать в VS?
844 2688819
>>688812
Debug -> Start Debugging
или F5
845 2688827
>>688819
Зашел в debug, и у меня почему-то не активны отладка и запуск без отладки. Не нажимаются. С чем связано?
846 2688849
>>688827
Да х.з. Структуру проекта покажи.
847 2688869
>>688849
Новое приложение создал чисто консольное на винде и заработало, спасибо
image.png87 Кб, 343x433
848 2689167
Как в студии генерировать эти kubernetes файлы
849 2689168
>>689167
А то автор туториала хуярит в vscode, а я чет хочу продолжить в студии писать, но расширений таких же нету
850 2689345
>>689168
Норм пацаны в студии только непосредственно сам шарп код в студии хуярят. Ну может еще джейсончики по быстрому если поправить. Всю остальную xml, yaml и т.д. муть лучше отдельно в VSCode делать, так быстрее и удобнее.
851 2689353
Интересует вкат в cloud разработчики. Пока изучил только синтаксис C#, алгоритмы и структуры данных. В какую сторону посоветуете двигаться?
852 2689363
>>689345
Понял, спасибо
853 2689380
>>688693

>значит раз он не знает ничего, то ему и нечего быть там куда его запихивают


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

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

>Не его проблема знать что прилетит.


А кто знает? Пользователь не знает, контрол не знает. Зачем придумали строгую типизацию, интерфейсы? Почему бы не пихать все в Object?
854 2689434
>>689353

>cloud разработчики


Что такое "cloud разработчики"
855 2689451
>>689434
Те кто разрабатывают веб сервисы в облачных платформах
856 2689476
Салют, дотнетогоспода.
Вопрос такой: как у C# с IoT? конкретно интересует взаимодействие с умными розетками и роботами-пылесосами, хочу с определенной периодичностью через крон-выражения их запускать, есть такая возможность?
857 2689479
>>689476
Иот это москитто. В дотнете есть либы под него
858 2689492
>>689479
ок, спасибо, теперь хотяб пойму куда копать
859 2689500
И туториал походу оказался хуевым каким-то, либо я дегрод и чет не так сделал
Чому оно не создает юзера и просто говорит мне, что usernotfound
860 2689516
Так, с дата контекстом я разобрался. Действительно, при перемещении из одного контрола в другой, автоматом происходит перебиндинг дата контекста. С этим проблем нет.

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

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

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

Шо за хуйня? Что этот попап себе позволяет? Когда я делал тривью, то у меня при разворачивании ноды создавались суб-ноды, а при сворачивании - удалялись. Тут же какая-то хуйня на полшишечки. Связано ли это с тем, что у панели отсутствует виртуализация? И как с этим бороться?
861 2689532
Сап dota2net
Есть вопрос касательно jwt аутентификации.
Вот есть авторизация через jwt и нужно, что бы она всегда вызывалась, но не кидала ошибку unauthorized. То есть может быть запрос с токеном и без токена, но если пришел токен мы его проверяем. Придумал общее решение указывать два атрибута [Authorize(моя_схема)] и [AllowAnonymous] и проверять по контексту его аутентификацию. Это работает для обычного контроллера, но если мы используем какой либо пакет который сам выставляет и конструирует ендпоинты то это уже не работает. Собственно можно ли без атрибутов такое сделать ?
862 2689542
>>689532
Если ты просто добавишь жвт но не поставишь его по умолчанию то читаться он будет всегда независимо от атрибутов
863 2689560
>>689451
А чем они от разрабов обычных веб-сервисов отличаются?
864 2689611
>>689542
Да, только не валидируется если не поставить атрибут, в этом и загвоздка
865 2689630
>>689611
Регни обработчики и поставь брэйки. Если залетит то ты накосячил с интерпретацией данных.

К примеру так ловил протухший жвт в эллоуанонимус методах (логика некоторых зависела от того аутентифицирован юзер или нет) что бы юзера заставить рефрешнуть токен
866 2689679
>>689380

>но пользователь не знает


>Пользователь не знает, контрол не знает


программист знает - ведь именно он знает что контролу надо в DataContext. Это видно после первого пробного запуска. А если он не знает, то пусть на завод идет.

>Почему бы не пихать все в Object


Потому в WPF активно пихается. Там очень много рефлексии и поэтому о проблемах типов узнаешь в рантайме.
867 2689697
>>689516

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



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

А значит минимум тебе нужно
а) у попапа при закрытии чистить DataContext=null
б) при открытии устанавливать DataContext иначе при втором открытии у тебя будет пусто.
868 2689880
>>689697

>при открытии устанавливать DataContext



Имеется ввиду ручной биндинг, типа "new Binding ... бла, бла, бла ... SetBinding"? А с ним нет проблем типка как с ручной подпиской, которую потом надо удалять при диспозе?
869 2689892
>>689697
>>689880
В догонку, чем DataContext=null отличается ClearBinding?
870 2689905
>>689892

> DataContext=null отличается ClearBinding?


биндинг это одна привязка. DataContext - источник привязок и он каскадно обнулит все биндинги

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

то есть содержимое попапа при закрытии никуда не девается (считай collapsed) и смотрит на тот же вьюмодель со списком. И далее нет разницы - обнулишь ли ты датаконткст или вьюмодель со списком изменишь - это затронет биндинги.
871 2689950
>>689880

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


Разве надо? Не надо
1123.jpg17 Кб, 600x610
872 2689981
>>689905
Предположим пикрил цепочку связей датаконеткстов.
Точка С в цепочке — это попап. Понятно, что D, E, F обновятся, при этом связь продолжит существовать, но что произойдет со связью B-C? Она разорвется?

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

>Разве надо? Не надо


Ну есть же сильная и слабая подписка. При слабой подписке типа то что делается в WPF <Button Click="Button_Click" /> все очистится само собой, а сильная подписка может мешать сборщику мусора.
873 2689983
>>689981

>Она разорвется?


Я имею ввиду ситуацию, когда бы присваиваем DataContext=null в попапе.
874 2689984
Посоветуйте книжку, шобы про кишочки рассказывалось, шобы на грани с компьютерсайнсом, шобы в контексте шарпа.

Из хорошего, что понравилось Управление памятью Коксы и у Сидристого в DotNetBook парочка годнейших глав встретились. Ну Рихтер, разумеется. Еще какую-то пробовал начинать, но бросил, ни названия ни автора не запомнил, помню только, эта книга когда-то в шапке этого итт треда фигурировала.
875 2690101
>>689981

>Предположим пикрил цепочку связей датаконеткстов.


Нет цепочки датаконтекстов. Есть наследование
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
876 2690131
>>689560
Да собственно тем и отличаются. Обычные пилят всякие sql решения и всякие аналоги. Облачники ебутся с облачными сервисами и интегрируют их в предприятие (и поддерживают потом)
877 2690250
>>690131
Так это девопсы тогда. Разрабам самих сервисов, обычно похую где их поделия крутятся, на железе, в контейнере или облаке. Максимум они у себя конфиги настраивают под то, что скажет девопс и все.
878 2690288
>>690250
Девопсы вроде cloud инженеры.
879 2690319
Пацаны, а че у вас используется чтобы вести дев-документацию?
Я вот просто у питонщиков подсмотрел MkDocs. Вроде норм. Но типа блин. Все равно немного инородно.
Может быть знаете что-то такое же удобное, но ближе к шарпу?
16833776568720.jpg28 Кб, 600x610
880 2690414
>>690101
А как мне эту наследственную связь восстановить, если я тому же дата контексту C присвою null? Я имею ввиду состояние, когдя я мог бы обнулить дата контекст B, и это бы обновило C, D, E, F.

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

Остается только создание ручной привязки, так? Или есть какой-то еще вариант?
881 2690415
>>690319

>Пацаны, а че у вас используется чтобы вести дев-документацию?


Ее осуждают. Типа возможность вести питоновскую документацию снижает энтузиазм писать понятный код, внятно именовать параметры, делать предсказуемое поведение и прочее.
882 2690422
>>690319
>>690415
Ну и есть XAML-документация — небольшое описание перед методом. Ну ты об этом знаешь.

Какую-то общую описательную информацию с диаграммами и таблицами храню в CherryTree. В продакшене по любому есть специальная макака, клепающая ПДФки.
883 2690491
>>690422

>XAML-документация


Не XAML, а просто XML.
884 2690492
>>690414
да тупо в code-behind popup.DataContext = ... перед открытием и после закрытия.
можешь попробовать сделать атачед проперти, который сохранит контекст и будет его восстанавливать.

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


ты лезешь в абстракции "яйца и бабушка". То есть вроде верно, но не нужно.
Я не знаю как там у тебя - обычно то проблемы нет. Есть вьюмодели, есть зависимый попап. При выборе допустим другого SelectedItem данные для попапа перестраиваются.
Ок, возможно у тебя это крайне тяжелые операции и они должны быть lazy до реального открытия и очищены после закрытия. Значит в code-behind на события открытия закрытия достаем вьюмодель из DataContext и просим ее подготовить (заполнить список плиток) и очистить потом данные (очистить список плиток). Вьюмодель просто будет менять свое состояние, а обо всем остальном позаботятся биндинги. Можно оформить как бехавиор или атачед если очень хочется. И в общем то так не меняется DataContext потому и "разрыва связи" не будет.
885 2690584
>>690492

>popup.DataContext = ...


Что именно?
popup.DataContext = popup_parent.DataContext?

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

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

А что если контент попапа тупо переместить во временную переменную и потом вернуть обратно? Изначально у меня так и было. Надо посмотреть про атачед проперти.
886 2690620
>>690584
ну вот и не мучай жопу, а при закрытии попапа попроси вьюмодель очистить данные (хоть банальное Items,Clear() и все вьюхи итемов отвалятся)
что то делать при открытии - это если тебе нужно.

атачет пропа - просто способо оформить "по красоте", а не является необходимостью.
887 2690713
>>690422
>>690415

> Ее осуждают


И как тогда другим разработчикам передавать всякие договоренности?
Ну, типа решили мы что надо время в UTC хранить. Или там, что никаких Json.Net. Что енумы передаем и храним в базе как строки. И т.д. Каждому вновьприбывшиму - все это рассказывать? Так веть 100% чет забудешь, а обнаружишь только при PR'е или вообще в проде.
888 2690740
>>690713
В readme пишешь.
889 2690771
>>690713
Если дохуя большой продукт то можно поднять wikijs с бидиректом в гит
890 2691471
>>690415

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


Вот питонисты, это последние ребята на которых я бы ориентировался. Эти долбоебы сделали одно из самых хуевых решений в дизайне ЯП, только из-за того, что им лень было пару скобок поставить. Ясен хуй, что им доки лень будет писать.
891 2691488
>>690319
Стандартом минимум является xml-документация. Хотя бы api в веб сервисах или публичные интерфейсы в библиотеках должны иметь xml описание. Т.е. то, что можно прокинуть в OpenApi.
Остальное на усмотрение мейтенеров и соглашений команды.

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

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

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

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

Алсо, для своих петов рекомендую использовать самый простой способ (помимо xml-доков) - обычный markdown. По факту это просто текстовые файлы, которые будут нормально отображаться в любом git сервисе (гитлаб, гитхаб и т.д.), их легко можно читать где-нибудь в браузере или VSCode, либо заюзать обсидиан.
892 2691614
>>691471

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


Нужно код писать, а не выражаться затейливо
893 2691650
Есть ли фриланс на впф?
894 2691925
>>691614
Угу и именно по этому им пришлось придумывать свой Pepe8, потом сраться из-за него. Это не говоря о том, что часть питонистов мечтают вернуть скобочки взад.
Для заметки. Сам по себе язык неплох, я его пробовал. Но решение сделать элемент форматирования (причем такой неоднозначный), частью синтаксиса языка - одно из самых ублюдочных решений в истории дизайна языков программирования.
895 2691931
>>691650
Есть. Но либо в виде аутсорса, либо по очень хорошему знакомству и рекомендациям. Стандартные говнопроекты, которые можно было бы спихнуть на биржу, на WPF практически никто не делает. А к серьезным левого человека с улицы подпустят.
896 2691991
>>691925

>этому им пришлось придумывать свой Pepe8


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

>- одно из самых ублюдочных решений


Сколько людей столько и мнений.
.png6 Кб, 272x277
897 2692317
Почему студия упорно игнорит мой .editorconfig файлик, при этом vscode - нормально подхватил.
Больше всего-то триггерит именно что студия опять же упорно пытается сохранять не в UTF, а в кириличнской кодировке, а потому - на выходе получаю, что другими редакторами если открывать - вижу ромбики(((
898 2692676
>>692317
А куда ты его кладешь? Он должен лежать или вместе с солюшеном, или в каталоге проекта, тогда вижла его автоматом должна подтягивать при загрузке проекта. Если он там и лежит, то попробуй напрямую добавить его в солюшен. Solution > Add > Existing Item
Сам по себе файл у тебя вроде норм.
899 2693049
>>649578 (OP)
>>649578 (OP)
Аноны, помогите разобраться с добавлением новой строки в dataGridView.
Есть таблица с определенными столбцами, хочу реализовать следующее: после заполнения текстовых полей и нажатия кнопки добавить, в таблицу будет добавляться новая строка и заполняться соответствующие ячейки новой строки.
Легко и просто реализовал это в Qt C++, а здесь нихуя не получается.
Надо что-то вроде аналога insertRow. А может как-то по-другому.
900 2693090
>>693049
Спасибо, не надо. Сам разобрался. Оказалось еще проще.
.jpg547 Кб, 600x860
901 2693265
Где новый тред, баки?
Или мне перекатывать? Тогда будет аниме в шапке. Вы этого хотите?
902 2693275
>>693265
Перекат после 1000, но в шапке должно быть аниме.
903 2693279
>>693275
Ну ладно. Ждем.
904 2694295
Столкнулся в своей апе с похожим крашем, не знаете, в чем может быть ошибка?
https://github.com/zhuxb711/RX-Explorer/issues/198
905 2694358
>>694295
Чел, возьми да полистай историю коммитов, он же написал что фиксанул.
Костыль он конечно присрал, но хотя бы понятно в чём проблема
906 2694359
>>694295
Чел, там же все написано. Переводчиком что-ли пользоваться не умеешь?
907 2694473
Нулевой далбоёб врывается ИТТ. Только начал щупать C#. Подскажите, есть ли способ в vscode сделать так, что бы при сохранении файла с кодом, у меня проект автоматом билдился и запускался?
908 2694496
>>694473
Отмена вопроса. сам разобрался. dotnet watch. Ахуенчик.
909 2694581
>>689984
бiмп
910 2694621
Перекатите тред
911 2694622
>>694621
Пидор, 10 постов назад всё решили.
912 2694647
>>694622
Кто решил? Почему слова какого то анона считается общим решением
913 2694769
>>694647
Потому что иди нахуй. Вот почему.
914 2694802
>>694769
уносите этого порватку...и перекатывайте тред.
915 2695265
>>694358

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


Я полистал, в том то и дело. Ничего похожего на решение так и не обнаружил.
916 2695267
>>695265
https://github.com/zhuxb711/RX-Explorer/commit/c39c14411313ff4fca445c80d19aeca742672911

Судя по списку изменений именно в этом коммите должно быть исправление, но я не вижу строки, которые фиксят ошибку.
917 2695270
Если у меня будет делегат на статический метод класса, то экземпляр класса все равно будет висеть неудаленным GC? Или все же статика в данном случае играет роль?
918 2695275
image.png128 Кб, 633x543
919 2695300
>>695270
Не будет, если верить Рихтеру.
920 2695387
Правильно я понимаю, что без "using System.Linq;", c# ничего не может?
начал ковырять шарп кун
921 2695388
>>695387
Нет.
922 2695405
>>695387
Неправильно. Линку - это просто сахарок, чтобы ты мог запросы единообразно составлять при работе с разными источниками данных и соответственно колекциями.
Ты можешь вообще его не использовать.
Допустим, ты пишешь библиотку, которая в памяти генерирует картинки. На кой хуй тебе там линку?
923 2695422
Посоветуйте плиз минимальный список технологий для вката. На данный момент знаю синтаксис шарпа только и фронт (тайпскрипт, реакт и прочее). Вкатываться буду либо в фулсталкинг либо в бэк
924 2695436
>>695405
>>695388
Я начал с задачек на кодворс, что бы привыкнуть к синтаксису и заодно апи языка пощупать, так любые манипуляции с данными, тебе в ебало ошибка, что нет такого метода без Linq. Ну и постоянная конвертация массивов в списки и т.д и наоборот - это норма?
925 2695445
>>695436
Чел. Вот все что есть в линку
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;
}
}
926 2695446
>>695445
По моему никто linq в sql формате не юзает, всё что вижу на экстеншенах
927 2695449
>>695446
Многие вещи таки именно в линку синтаксисе - выразительнее и проще делаются.
Типа вот если тебе объединить две коллекции разнотипные и потом - выдать результирующий объект. Экстеншинах - это такой уебищный синтаксис, что я ебал. А на линку - красивенько-удобно.
Единственный минус линку, в том, что нельзя сделать так:

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

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

езжать
я уже поехавший нахуй
930 2695466
>>695456

> конвертнуть в IEnumerable


никакого конверта нет, все шарповые коллекции по дефолту реализуют интерфейс

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


не правильно понял

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


почитай про материализацию результатов ienumerable и когда она может происходить
931 2695501
>>695300
Ну я на всякий случай спросить. Спасибо!
932 2695505
>>695454

>.Net Core 3.1


>.Net 6


>Asp.Net Core


Они не взаимозаменяемы?
За список спасибо, возьмусь пока за SQL
lyKfI9W9-1g.jpg59 Кб, 600x483
933 2695533
>>695456

>IEnumerable


Это интерфейс. Если начнешь гуглить, то тебе так нассут в уши, шо долго будешь отходить.

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

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

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

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

Понятно? Это не конвертация. Мы не создаем что-то новое.
Линкью требует IEnumerable просто из-за универсальности, чтобы ты мог применить это и к массивам, и к спискам, и к коллекциям один и тот же метод. Только и всего.
934 2695536
>>695466
>>695533

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

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

В не лезь в залупу (простите за каламбур), тебе рано линкью. Столкнись с проблемой, а потом возвращайся, будем тушить твою жопу.
image.png43 Кб, 959x265
936 2695565
>>695536

> вот эта операция, какая по сложности?


Чуть менее чем зиро нахуй
photo.jpg376 Кб, 1284x730
937 2695568
>>695536
Глядя на картинку складывается ощущение, что IEnemerable это другой тип, или это тот же самый Array, но абстрагированный?
938 2695569
>>695568
Ты же не в блокноте пишешь дак вот и жми ctrl+b/f12 что бы тайное стало явным
939 2695572
>>695569
Да хули тут обсуждать? Анон не знает что такое наследование, интерфейсы. Что это ему даст? Набор заклинаний.
940 2695576
>>695548
Ну вот навоял. С перва думал, что у Array и List у обоих свойство Length есть, а нихуя, у List есть Count, но с ним надо ещё 1 вычитать.
public static void Iter(IEnumerable<int> item)
{
var enumerator = item.GetEnumerator();

while (enumerator.MoveNext())
{
Console.WriteLine(enumerator.Current);
}
}
>>695568
>>695565
Ладно, ладно. Просто не привык к такому поведению метода. Мы, жаваскриптизёры, одноклеточные, имейте терпение.
image.png178 Кб, 480x360
941 2695579
>>695576

> у List есть Count, но с ним надо ещё 1 вычитать

942 2695580
>>695576

> у List есть Count, но с ним надо ещё 1 вычитать.


У всех надо вычитать т.к. индекс начинается с 0.
943 2695581
>>695579
>>695580
А не, я перебирал i < list.Count() мне выкинуло ошибку, что i вне ренжи списка. Багануло, видимо.
Стикер319 Кб, 512x512
944 2695583
>>695576
А почему ты IEnumerable использовал?
Что-то пошло не так?
945 2695586
>>695576
А кто тебя этому научил?
Какие-то извороты на пустом месте. Почему while вместо foreach?
946 2695590
>>695583
А хули мне запрещено разные типы в функцию передавать? Тоталиторизм.
>>695586
Теперь вижу, что можно через обычный фор. Count есть и у массива и у листа. Не замел сразу Count у массива.
947 2695593
>>695590
В функцию с одним аргументом, разные типы
быстрофикс
948 2695594
>>695581

>А не, я перебирал i < list.Count() мне выкинуло ошибку, что i вне ренжи списка. Багануло, видимо.



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

У вас так же можно определять тип аргумента, что бы можно было разные типы использовать или у вас другой способ, или у вас вообще нельзя, что бы один аргумент мог быть разных типов?
950 2695599
>>695590

>А хули мне запрещено разные типы в функцию передавать? Потому что они внезапно разные. Откуда методу знать, что класс типа HuiPizda такой же как класс типа VrotEbis?


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

> Не замел сразу Count у массива.


Потому что твой метод смотрит на массив через призму IEnumerable, который ты указал в параметре
public static void Iter(IEnumerable<int> item)
951 2695601
>>695590

> Count есть и у массива и у листа


Опять мимо, это МЕТОДЫ не листа/массива а экстеншен к enumerable со всеми неприятными вытекающими (хотя есть некоторые оптимизации внутри)
image.png25 Кб, 845x102
952 2695602
>>695597

> один аргумент мог быть разных типов


Ты понимаешь куда пришёл и какие тут правила?
953 2695604
>>695597
Да, можно. Это дженерики. Ты написал практически так, как это есть в шарпе. Но это не работает для перечислений типа массива или списка. Для этого нужно юзать интерфейсы. Дженерики нужны немного для другого.

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

Здесь дженерик позволяет сделать универсальным тип итемов массива. Если у тебя будет на входе массив не int, а что-то string к примеру.
954 2695607
>>695601

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


Какими, например? Аллокации?
955 2695608
>>695601
>>695607
А, скрин. Увидел.
956 2695611
>>695601
Ужас, какой пылесборник. Надо быть осторожным, когда реализуешь IEnumerable - все эти расширения могут просто не сработать.

>collectionoft


Повезло, что в шарпе можно объявить переменную прям в сравнении.
В бейсике нужно отдельной строкой объявлять.
изображение.png9 Кб, 412x185
957 2695627
Почему эта ошибка возникает при попытке создать файл БД? Тут мне даже ГПТчат не может помочь, хуйню только советует, которая сыпет ошибками.
Сама реализация создания нового файла происходит в "создатьБДToolStripMenuItem_Click".
https://hastebin.com/share/ufatadiweb.php
show.png4 Кб, 270x120
958 2695636
Привет Я тут мечусь между шарпом и пыхой. С одной стороны куча работы, а с другой крепкий многогранный яп. Есть некоторый опыт фронта. В общем чтобы легче определиться я делаю небольшой анализатор логов сервера. На пыхе сделал, впечатление получил. На очереди Шарп) Скажите, ссылок на Майков и их учебник достаточно, чтоб ознакомиться с азами и потом распарсить лог и вывести его в веб страничку? И получу ли я то самое представление о языке? И вообще их курсы толковые или чисто для галочки?
959 2695642
>>695636
будь многоязычником. это легко.
960 2695643
>>695636

> С одной стороны куча работы


Если исключить всякие битриксы и унылые проекты типа магазинов, останется не так уж и много.
961 2695645
>>695636
Бери Шарп. После него на пыху переключиться будет вопросом синтаксиса (учится за неделю) и фреймворка типа ларавеля (учится за 2 недели). Остальное все равно смежные области типа SQL, докеров и прочего говна. Все равно не узнаешь куда тебя кривая уведет. Я вообще с джавы начинал вкатываться, а вкатился тайпскриптером сишарпистом лол.
962 2695649
>>695643
Тоже блять верно.

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

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

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

так что знать шарп и хотя бы питон (пхп же ужас) - изи.
964 2695656
>>695627
Бамп.
965 2695659
>>695649
Начни с изучения синтаксиса. Советую этого индуса

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

Туториал старый но после него новые фичи на лету схватывать будешь. После этого БД смотри. Реляционные, нереляционные и почитай про SOLID. Дальше уже разберешься
966 2695662
>>695649
Советую Metanit. Лучший учебник всех времён и народов.
967 2695789
>>695627
Бамп. Ну пиздец же ошибка, я даже хуй знает как её решить. Ничё не помогает. Ну помогите.
968 2695807
Спасибо парни. Я любитель по реальным задачам изучать. Есть у вас на примере какие-то репы с чистым кодом реализации какого-то говна типа студентлист, телефонный справочник и прочее говно?
969 2695815
>>695807
Ну или взаимодействие с каким-то апи.
970 2695821
>>695807
>>695627
Вот эту задачу решить сможешь?
971 2695857
>>695821
А может ты сам будешь делать практику с шараги? После прочтения того что ты скинул только вымыть руки и остаётся
972 2695917
>>695601
Почему используется If + return вместо switch/case.
Ну придется создать переменную count для возвращения, ну и что?
973 2695938
Продолжаю решать кодворс, и ловлю жесточайшее дежавю с тем, когда я решил посмотреть питухон так же, решая кодворс. Решаю задачу, перебираю строки/массивы, ифы хуифы, а чуваки просто подключают библиотеку (пускай дефолтную из 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;
}
}
}

Лол, кек, чебурек.
974 2695946
>>695938
Кто ж так решает. Ну разве что у тебя древний шарп
975 2695950
>>695938
Это пример чуваков с библиотекой?
976 2695951
977 2695952
>>695938
Велосипеды только в плюсах любят.
978 2695964
>>695951
Ну это база, это знать надо. Но ведь это примитивщина, если в ход пойдет более сложный текст, то оно не спасет от кодинга задачи до пенсии.
979 2696161
Можно ли как-то передать методу класс или тип класса, чтобы метод создал новый экземпляр это класса?

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

Но можно ли без дженериков обойтись или If-ов?
980 2696170
>>696161
Нашел

public object GetInstance(string strNamesapace)
{
. . . Type t = Type.GetType(strNamesapace);
. . . return Activator.CreateInstance(t);
}
981 2696178
>>696161
суть статической типизации - тип должен быть известен на этапе компиляции, а не вот это всё.
Рефлексия может всё, но на этапе компиляции тебе придется указать тип object и потом в рантайме с этим жить.
Еще там есть dynamic но все же тут вам не пхп
982 2696301
>>696178

>но на этапе компиляции тебе придется указать тип object


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

Мне нужна команда (ICommand), поэтому не могу сделать дженерик метод Execute<T>, иначе будут траблы с WPF биндингами. Я буду вынужден сделать целиком дженерик класс, а это пизда, это говно хуй куда впихнешь и хуй откуда выпихнешь. Там столько геморроя, что ну его в пизду.
983 2696364
>>696301
ни у кого проблем нет, а у него есть. вечно с тобой так
984 2696536
>>695627
Что-то подсказывает мне, что база с таким именем уже есть. Или у тебя какого-то файлика не хватает.
985 2696668
>>695917
Читабельнее.
986 2696731
>>696536
>>695627
23-й лвл имею, скоро экспа дотянет до 24-го, ни разу не юзал GPT. Хто я?
987 2696747
>>696731
Нам откуда знать? Паспорт прикладывай
988 2696766
>>696747
А потом деанон? Ага, збс идея, гыг
989 2696769
>>696747
Понимаю что это на уровне Покаяна Беспруфовича Неполживого, но мне впадлу пиздеть, это не /б/
990 2696770
>>696747
Понимаю что это на уровне Покаяна Беспруфовича Неполживого, но мне впадлу пиздеть, это не /б/
991 2696771
>>696770
АБУ!!!
Тебя к капче!
1683926372578.jpg127 Кб, 982x1200
992 2696804
993 2696970
Можно ли сделать так, чтобы компилятор сразу понимал, что тип, реализующий мой интерфейс совершенно точно имеет конструктор и не писать ограничение new() при каждом использовании данного интерфейса?

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

Я просто спросить
994 2696974
>>696766

>А потом деанон?


А что беззубый двач может сделать в 2023-м году? Особенно в тематических тредах, где все друг друга знают чуть ли не по имени и фамилии.
995 2697248
>>696970
Нельзя потому что интерфейс никак не связан с конструктором
996 2697267
Неужели нет ни одного жука навозника, который перекатит тред?
997 2697335
>>696974
Я просто новенький здесь.
P.S. Перекат, пжлст
998 2697339
>>697267
Есть только анимешные навозники ждущие тыщу постов
999 2697341
>>697339

>998


ПОДНАЖМЁМ, так сказать.
1000 2697343
Хуле вы такие нетерпеливые?

Ну, погнали!
1001 2697402
>>697343
Мы уже приехали?
image.png2 Мб, 1920x1080
1002 2697438
1.JPG56 Кб, 1257x755
1003 2697465
1004 2697477
Да ХУЛЕ ТАК ДОЛГО ТО?
1005 2697484
>>697477
Хер его. Я бы создал, но по анимам я не шарю)))
1006 2697489
Держите. Как смог...
>>2697488 (OP)
>>2697488 (OP)
>>2697488 (OP)
392433-power-chainsaw-man-anime-4k-pc-wallpaper.jpg1,4 Мб, 3840x2160
Норм курс? 1007 2743806
Сап ребятки я полный ноль в программировании, учу С# с целью в будущем делать мутки на юнити. Сейчас изучаю все с нуля чтобы впитать основы, подскажите это нормальный курс для ютуба? 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
1008 2743809
>>743806
И если можно подскажите какой-нибудь удобный текстовый вариант
1009 2743811
>>697489
Да просто на сайте майков все как-то непоследовательно
1010 2745726
Привет, программач. Начал учить C#, пока дается относительно легко, т.к. в школе задрачивали питоном для огэ/егэ.
Начал читать "C# Для чайников", но столкнулся с тем, что около половины не понимаю/понимаю плохо, но да похуй, не в этом суть.

Вопрос вот в чем, шарпы используются в вебе, играх и приложениях. Душа у меня к вебу вообще не лежит, ближе к играм или приложениям(желательно играм), насколько сложно найти работу и сколько примерно займет изучение БАЗЫ для этогоу среднестатистического вкатуна?
Тред утонул или удален.
Это копия, сохраненная 29 июня 2023 года.

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

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