Это копия, сохраненная 27 октября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
1. Ресурсы:
— https://dotnet.microsoft.com/learn
— https://ru.stackoverflow.com/a/416585/422180
— https://metanit.com
— https://professorweb.ru
2. С# для веб
— https://docs.microsoft.com/ru-ru/aspnet/core
3. C# для десктопа
— WPF ( https://docs.microsoft.com/ru-ru/dotnet/desktop/wpf )
— WinForms ( https://docs.microsoft.com/ru-ru/dotnet/desktop )
4. С# для игр
— Unity-тред в /gd/, а так же учебники: https://ru.stackoverflow.com/a/609901/422180
5. С# для мобильной разработки
— https://docs.microsoft.com/ru-ru/dotnet/maui
Шапка: https://pastebin.com/HT7Hi6FD
Прошлый тред: >>2423030 (OP)
Для Windows — Visual Studio ( https://visualstudio.microsoft.com/ru/downloads ). Также есть версия для macOS.
Кроссплатформенный IDE Rider ( https://www.jetbrains.com/rider ).
Если в C# хочется, но пк уж слишком хуёвый: https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio-code
7. Что нужно знать, чтобы взяли работать?
— Общие навыки — TPL, Linq, DI, интеграционные тесты. Преимущество перед такими же вкатунами даст парочка интересных пет-проектов где вы делаете всё максимально правильно и точно следуя архитектуре.
— Архитектура — DDD, микросервисная архитектура. Так же необходимо ознакомиться с паттернами проектирования. Обязательны к изучению: MVVM, MVC.
— Базы данных — PostgreSQL + Mongo. Из ORM: EFCore обычно достаточно, но есть более быстрый, но менее удобный Dapper. Тратить время на ADO.NET не стоит.
— Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
— Структуры данных — связанные списки, деревья (бинарные, красно-чёрные), хеш-таблицы, графы.
— Системы контроля версий — обычно гита достаточно.
Заметил, что за последние несколько дней появился петрсоян.
Скажи как пофиксить, а я пофикшу.
Данные беру их XML, для обычного Dictionary<string, string> всё легко, а тут хз что делать. Нужно получить словарь, как на первом пике. На втором пике код, который работает на обычном словаре ключ => значение.
залупа какая-то получается...
Можно подробнее?
Вот есть тип String. Как мне выразить тип через число? Естественно, суть данной затеи в экономии передаваемых байт.
В мою функцию приходит какие-то данные в формате Object. Я не знаю что за данные.
public int GetTypeIndex(object value)
{
//вот тут я из value должен получить тип в виде числа
}
Нахуй и в пизду, короч. Сам нашел.
public int GetTypeIndex(object value)
{
TypeCode valueTypeCode = value.GetType.Attributes.GetTypeCode
}
Если речь про record, то нет
Это просто метки для компилятора "сгенерируй тело сам" и, как следствие, поддержка конструкции with
Под классы выделяется память в куче, а структуры и туплы валяются на стеке.
No allocations => fast
Ну если речь про Tuple, то да - они структуры. я подумал речь про record
>No allocations => fast
Ну разве что только создание.
> >No allocations => fast
> Ну разве что только создание.
Условно если у тебя сервис с 300кк RPS/нс, то разница между туплами и классами я думаю нихуевая такая
Тебе в БД тред.
смотря какие
если использовать Tuple.Create(420, 69) - то это инстанс класса.
если использовать (int, int) t = (420, 96) aka ValueTuple - это структура;
Кстати, до того как я написал "where(val == key)" у меня во второй словарь тупо вписывались все имена и все курсы.
XML ты читаешь как строку в любом случае. Но вот как интерпретировать эту строку в число зависит так же от формата данных, которые хранятся в CultureInfo. Вот например Culture Info ru-RU.
А понял, типо заместо точки поставить запятую.
>>34233
Не делай так. Парси в зависимости от локализации.
var InvariantCulture = System.Globalization.CultureInfo.InvariantCulture;
var MinValue = double.Parse(Value, InvariantCulture);
Само определит запятую, точку или какой другой разделитель. Потому что если ты будешь тупо реплейсить знак, а твоя прога запустится на какой нибудь другой шиндовс, с другой локализацией, то у тебя снова выскочит ошибка. Тебе нужно, чтобы локализация шиндовс совпадала с искомым знаком. И чтобы с этим не морочиться, собсно, код выше. Оно само сделает.
Мне казалось, что такие вопросы задают подставные зрители на стримах инфоцыган, типа:
— А можно устроиться успешным 3д-моделлером без умения рисовать?
А инфоцыган такой:
— Ну конечно же можно! И даже получать 300к в секунду!
— А вот ... если я посмотрел 10% ваших видеоуроков, а остальное лень, то я могу устроиться в Близзард?
— Ну конечно же можно! На рынке не хватает специалистов, просто пукните на линкедине и вас оторвут с руками!
Я просто хотел бекендом заниматься. Ну штош, придётся фронт осваивать глубже.
Используй Convert.ToString(number, CultureInfo.GetCultureInfo("en-US")), так будет с точкой.
Но не забывай, что разные культуры используют разные разделители, например в СНГ - это запятая, на западе - точка, у каких-то арабов похожая на запятую, но не является ею (муммайз): "٫", так что в регулярках в некоторых случаях нужно
Реально офк, но зарабатывать ты будешь меньше поскольку чисто бекендеры не выгодны бизнесу. Знания фронта дадут плюс офк, но учить это тебе или нет - твоё дело, я например не собираюсь учить и планирую перекат на десктоп, а то с веба блевать хочется.
В /mobi/ в треде про дашчан постили патч.
Пишешь вначале файла #nullable disable;
Если хочешь только какую-то часть кода пометить с выкл/вкл нуллейбл то делаешь вот так:
Чтобы выключить:
#nullable disable;
часть кода (метод, класс, пара строк внутри метода)
#nullable enable;
Чтобы включить
#nullable enable;
часть кода (метод, класс, пара строк внутри метода)
#nullable disable;
Бля, без точки с запятой.
Кстати, вот он жалуется на null в этом огромном запросе. Как это всё обработать? Просто в try...catch засунуть? Потому что через if я тут хуй что проверю, код сразу раза в два увеличится.
Что? Я новенький в C#, так что не очень понимаю о чём Вы
А, и ещё, вот у меня получился этот огромный запрос - это норм? Или лучше там поделить на части и тд. Я прост щас тг бота пишу для резюме да и довольно интересное занятие, так что хочется правильно писать код. Да и к тому же хочется знать как правильно делать.
Забей хуй. Кидай ArgumentNullException в самом начале если входной параметр пустой или null
Конечно. У меня тут полтреда на шее висит по собственной воле
Yap kok
> Fluent interfaces в Linq
А разница? До Fluent interfaces я ещё не дошёл и даже не представляю, что это
>А разница?
Технически никакой, но выглядит в миллион раз лучше. Сразу приучайся к нормальному синтаксису иначе потом не переучишься или это будет трудным
Он захотел точку - я ему показал как получить точку. Это хуита, да.
>У меня ещё тут возник вопрос по поводу архитектуры
Когда вижу подобное - глаз радуется.
Есть много подходов к архитектуре, например DDD, так же есть CHO. Можешь погуглить про это, например ddd очень хорошо объясняется вот тут: https://docs.abp.io/en/abp/latest/Domain-Driven-Design, это вообще сайт фреймворка для .NET, но по сути весь этот фреймворк - это уже готовая реализация DDD и модулей для .NET, AggregateRoot'ы всякие, сервисы и апп-сервисов. Можешь почитать, но не углубляйся в сам фреймворк. Почти всё, что написано там - относится напрямую к DDD.
thanks, пойду смотреть
Да понятно что в сублим тексте, нотпаде++ и вс-коде есть. Меня интересует вижуал студия.
Я вот хочу просто файлик информации сделать к проекту — для заметок.
И самое главное загуглить невозможно, т.к. идет перекрытие VS Code.
Пусть лялех сначала допилят и потом занимаются всякой хуйнёй.
да, есть такое, ща там должны еще новых фич подвести, нормальную поддержку кроссплатформ и начнется захват рынка к концу года
сравнение мауи и впф неверно, поскольку это совершенно разные платформы по своей сути
Платформы разные, но каждый раз заявляется, что это самая лучшая гуёвая библиотека всех времён и народов, которая убьёт все предыдущие.
Ты ваще сам код-то покажи. Большие свич-кейс это не плохо, это норма в нашем мире. При той же ебли с IL кодом нужно будет делать огромные свич-кейс т.к есть 8, 16, 32, 64 битные инструкции которые надо группировать в свич-кейсы большие под разрядность. Там кстати и используется BitConverter, ты случайно не с IL дрочишься?
>ты случайно не с IL дрочишься?
Нет, с именованными каналами.
Они передаются через массив байт. Есть через стринги, но не суть.
Сервер конвертирует интеджеры, булеаны, стринги в массив байт и передает клиенту, а чтобы клиент понял какого типа даные, у меня передается TypeCode:
https://docs.microsoft.com/en-us/dotnet/api/system.typecode?view=net-6.0
И если с конвертацией в байты мне удалось хотя бы самому не писать свичи, то вот как обратно все это вернуть — непонятно.
Грубо говоря, приходит пакет данных, где первый байт — это тип данных, два следующих — длина в байтах, а все остальное — сами данные.
Как это сделать по уму, я не знаю. Я думаю юзать лямбда-функции т.к. там доступны все локальные переменные и тогда не надо их возвращать через обджект.
Так у меня на выходе из функции тип Object, а не соответствующий сконвертированным данным.
но конкретный тип дженерика я должен объявить при вызове функции, а как я это сделаю, если я до ее вызова не знаю какой тип.
private T ReadByTypeCode<T>(typeCode TypeCode, byte[] bufferData, ref ushort offset, ushort length) where T: class, struct
Если нужно будет передавать какой-то инициализирующийся объект, то можно указать where T: new()
Ну так а ты коммиты делал? В коммиты все файлы проекта добавлял? На прошлых коммитах работает?
Покажи-ка что там по истории коммитов в обоих ветках.
Кстати, правильно что закрасил имя пользователя, а то мы бы тебя сдеанонили и заказали тебе много приколов из секс шопа на домашний адрес, было бы неловко.
>Тогда, надо поднимать redis-сервер, а значит надо инклюдить его код, а он на Си.
инклюдить его не нужно. Просто это как и база данных - отдельный процесс, а значит дополнительная возня с тем чтобы этот процесс работал, да учесть его перезапуск, учитывать как в нем хранить и т.д.
>Не хочется терять 5 часов работы.
Ты еще легко отделался. Считай это налогом на глупость.
Теперь сядь и нормально изучи git и то как с ним нужно работать, а потом уже скачи по веткам туда-сюда.
>Ты еще легко отделался. Считай это налогом на глупость
Глупость - использовать тулз, работа с которым сродни хождению по минному полю с миноискателем, который рэндомно взрывается прямо в руках. Но выбирать не приходится (не всем слава богу)
>проблемы в архитектуре
Хуй знает, эта проблема в архитектуре, или в я говнокода налепил. Мне б хотя бы проектик какой увидеть с моим кейсом.
Суть проекта такова: есть бот (пока что только в телеграме, но будет ещё и в вк) который берёт расписание пар с бд, в которую, в свою очередь, оно доставляется через говносервис ИРТЕХа "сетевой город" и класс этого бота разжирел до ~1000 строк и это ещё не конец. Показал код знающему человеку - тот завыл, сказав, что так не пишут и нужно распиливать код. Я не ебу как его распилить, т.к. первый проект, все дела. Есть мысли забить хуй на архитектуру и говнокод, и пилить так, как есть, ведь, опять же, первый проект, будет простительно.
Перехожу на второй, а что?
>первый проект, будет простительно.
Не будет. Пиши нормально. Почитай про ООП для начала https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/tutorials/oop
Чувак, понимаешь, если ты молотком себе по пальцам хуяришь, то дело не в молотке, а в том, что ты криворукая обезьяна.
И если ты не удосужился потратить день-два на нормальное освоение гита и не научился правильно и безопасно им пользоваться, то это твоя проблема.
я другой чувак - счастливый обладатель возможности использовать меркуриал, а не убеждать себя "жрать что дают есть хорошо, а если оно не слишком вкусно, то это во мне проблема - нужно говорить "сладко""
Чувак с проблемой такой возможности не имеет - сочувствую ему
>>35611
Распиливай по ответственностям (Принцип единственной ответственности). То есть поищи где в твоем классе смешивается "делает и то и это" и выноси по разным классам связанные вещи. А позже у тебя выработается навык сразу это делать.
можно. в stash засунь,да.
почему ты вообще думаешь что твои проблемы уникальны?
все давно описано в Книге "Pro GIT"
про гит конечно. нормальная система не должна отвлекать внимание на "как бы не выстрелить себе в ногу" и рождать проблемы "ой бл...забыл это сделать и пи...".
>>35700
ну это так везде. не дело терять изменения по глупости. поэтому требование где-то их зафиксировать или куда то сложить - нормальное.
>я другой чувак - счастливый обладатель возможности использовать меркуриал
Меркуриал конечно пизже гита, но изначальный поинт был в том, что чел в принципе через жопу VCS использует и жалуется на то, что инструмент плохой, а не у него руки кривые.
> про гит конечно. нормальная система не должна отвлекать внимание на "как бы не выстрелить себе в ногу" и рождать проблемы "ой бл...забыл это сделать и пи...".
Да какой выстрел в ногу? Сделал дело, закоммитил - ВСЁ, твой код никуда не денется.
>твой код никуда не денется.
я не спец в гит. он мне по работе не требуется, а пушить в гитхаб - гит не нужен. Но если мне не изменяет склероз...
Чтобы код никуда не делся - на комит должны быть указатели. Иначе твои комиты для гита мусор, который он со временем просто дропнет. И хорошо если ты не профукал эту ситуацию (тебя не отвлекли и ты не забыл все разрулить).
Я понимаю, что гит так спроектирован, но по факту он нагружает голову лишним контекстом и требует внимания помнить где-ты и что происходит.
> Чтобы код никуда не делся - на комит должны быть указатели. Иначе твои комиты для гита мусор,
Каво? У тебя в локальной ветке все коммиты будут.
С хуя ли? Array реализует IEnumerable
Почитай как работает интерфейс IEnumerable и энумераторы
Значит попробую. Спасибо, анон!
>Каво? У тебя в локальной ветке все коммиты будут.
"Detached HEAD", гитовское изобретение. - возникает по глупости и не только. Грозит от необходимости помнить про это и разгребать до полной потери комита, если забыл и пришло время сборки мусора.
Это и есть система, где нужно прилагать дополнительное внимание и усилия, чтобы не потерять код. Они могут быть небольшие, а могут быть на уровне "удали репу и склонируй заново" (одно из известных решений проблем гита )))
"Не в гит" ты просто работаешь с кодом. Экспериментируешь с кодом - не проблема. просто комитаешь, прыгаешь по истории и снова комитаешь цепочки. В итоге рождается гроздь вариантов. И нет никаких Detached HEAD state и необходимости что-то делать. Ты думаешь о коде, а не о том "ага сохраняем так, ага вот у нас потерялся комит, щас восстановлю нужно только поискать его и подумать куда приткнуть".
я не говорю, что нельзя жить с этим. Можно знать правила и обходить подводные камни, и возможностей отката истории в общем то хватает для жизни. Но лично я привык когда CVS не заставляет держать в голове еще и ее контекст
>>36118
Как хочешь. Это просто один из подходов. Основной плюс медиатра является его же основным минусом. И поэтому выбор прост
рефлексией же.
И вроде там для массива свой подход нежели для дженерик листа
но вообще зачем передавать object и не знать его тип возможный. А если знаешь, то просто скасти через is
У меня массив смешанных типов. Я не знаю как еще передать.
Кортежи не позволяют обратиться по индексу.
значит у тебя массив обжектов, а не массив какого то типа который скастили до обжекта
тип массива тут получать бесполезно
тип элемента - ну по каждому спрашивать
Я пытался, но у меня любой внутренний итем массива возвращал тип Object.
Потом я попытался через дженерики, но там GetType к условному int возвращает "System.Int32", в то время как обычный int возвращает просто "Int32", из-за этого не работает функция GetTypeCode. У меня не то что Object не работает, у меня вообще ничего не работает.
Тако ощущение, что GetTypeCode определяет по стринговому GetType.Name. Я думал там как-то более элегантно по какому-то ID. Сравнение по стрингу как-то затратно.
Сука.
GetType(value) возвращает Double
value.GetType() возвращает Double[]
GetType(value).Attributes.GetTypeCode возвращает int32
Convert.GetTypeCode(GetType(value)) возвращает Object
Что это вообще?
>а почему это TypeCode для double[] должен показывать Double[]?
да опять шалит. Выдает просто double и для него в Enum есть вариант.
Вот берешь value.GetType() — выдает double
Вот берешь GetType(value) — выдает double[]
На шарплабе наоборот.
Вообще неадекватно работает. До этого вообще выдавало System.double, я не зафиксировал это.
>Вот берешь GetType(T) — выдает double
фикс, но сработало. Чет магия какая-то. Изначально так и делал.
ну если у тебя есть T, то тебе доступен дешевый typeof(T)
Понял своб ошибку.
Изначально использовал Convert.GetTypeCode вместо Type.GetTypeCode
Раньше работало, а с дженериками — нет.
>тебе доступен дешевый typeof(T)
Мой маленький секретик в том, что я пишу на Basic, а typeof используется исключительно в контексте сравнения TypeOf(value) is Double, к примеру.
Вы только подумайте какое чудовищное у бейсикоблядка мышление
>Раньше работало
Не важно какой контекст.
самокритики пост
Сидит программист глубоко в отладке. Подходит сынишка:
- Папа, почему солнышко каждый день встаёт на востоке, а садиться на западе?
- Ты это проверял?
- Проверял.
- Хорошо проверял?
- Хорошо.
- Работает?
- Работает.
- Каждый день работает?
- Да, каждый день.
- Тогда ради бога, сынок, ничего не трогай и не меняй.
Так вообще со всеми языками, западные конторы ушли, которые в основном и нанимали прогеров.
Я вот смотрю видосы Шмачилина по МВВМ, и делаю у себя что-то похожее, но столкнулся с такой проблемой. У меня собсна, линукс, и многих штук, которые он там показывает, нет в линуксе.
Ну собсна говоря, там нет ВПФ, ололо. Но вопрос не в этом.
Я дошёл до реализации команд, и там интерфейс ICommand и там он создаёт базовый класс, наследуясь от интерфейса, а потом создаёт лямбдакоманду, от которой уже создаются реально работающие команды. Ну и короче говоря, у меня тут тулкит, в котором есть опенсорсная реализация команд, в которых нет CanExecute, но есть свойство Enabled. И я решил сделоть такую реализацию, что в моей лямбдакоманде в конструкторе будет передаваться не ссылка на функцию CanExecute, а ссылка на функцию-геттер для Enabled.
Вопрос: Это вообще законно? Сколько кодерских кодексов я нарушил?
> Мой маленький секретик в том, что я пишу на Basic
Если у тебя на работе куча легаси, которое нужно тащить, то вопросов нет. Но если ты пишешь какие-то велосипеды для себя, то просто возьми и перейди на шарп. Будь мужиком, блять.
В StimulSoft Designer.
Только где его взять я х.з. У меня на прошлой работе был дистр лицензионный, но я после увольнения снес все.
mrt файл - да это шаблон отчета, он по факту содержит в себе структуру документа, ссылки на источнике данных, sql запросы и логику по которой данные из запросов в отчете формируются.
Внутри это либо xml-ка, либо json. В зависимости от того, что у тебя их формирует на конечной точке (честно говоря х.з., т.к. я эту часть не трогал никогда и только с json-ом работал). Редактировать при необходимости их можно и руками (например запрос подправить и т.д.). Но с нуля создавать вряд ли - заебешься, хотя нет ничего невозможного если тебе время девать некуда.
>CanExecute
Есть небось. В классе Command, потому что интерфейс нужно реализовать (если мы про шарповский ICommand говорим)
Принимать в конструктор EventHandler тоже дичь. Если хочется подписаться, то вангую что этот Executed сам по себе публичный event и к нему и подписывайся если нужно
А в конструктор передают метод обычно
Да, выходит дичь какая-то, оно наследуется от ICommand, но CanExecute в какой-то момент упрятывается от потомков.
Я всё таки переделал на вариант более близкий к лекционному материалу. Но насчёт дичи хотелось бы пояснений. Дело в том, что авторы тулкита не стесняются передавать ивентхандлеры в конструкторы.
> оно наследуется от ICommand, но CanExecute в какой-то момент упрятывается от потомков
Вот тут я свои сомнения более подробно распишу. В каноническом ВПФ, как обесняет лектор, активность прибинденных к команде контролов задаётся через CanExecute если true - то активен, если false - то выключен. В местном же тулките, у команд сверху накинуто свойство bool Enabled, которое потом, видимо в потрохах тулкита, биндится к графическим контролам напрямую. Либо я всё неправильно понимаю. Либо одно из двух.
Выходит так, что CanExecute мне юзать нежелательно, лучше переименовать, чтобы не получить потом проблем с конечным приложением.
И вообще, судя по конечной реализации команд в используемом мной тулките (Command : IBindable, ICommand) , предполагается, что их Enabled я тоже должен биндить к вьюмодели, а не прокидывать туда лямбда-функции-условия, как предлагает лектор в лекции, и уже во вьюмодели я должен манипулировать логикой доступности команд.
Реализовывай самостоятельно ICommand, вообще на этапе изучения всё сам реализовывай. Потом уже заюзаешь Community.Toolkit.Wpf, ахуенная либа 10/10 для впф.
> Реализовывай самостоятельно ICommand
В линуксе нет вот этого из лекции:
> CommandManager.RequerySuggested
Отсутствует ссылка на сборку. Все юзинги прописан, ОФК.
То есть уже на этом этапе реализация 1-в-1 не возможна. Но ценный опыт понимания как всё работает, всё равно получен.
Количество элементов списка подсчитывается при помощи метода Count
Если ли какое-то объяснение смены имени?
Ты ещё Size забыл.
> Количество элементов массива подсчитывается при помощи метода Length
Ну у тебя там сразу выделена память на столько элементов
> Количество элементов списка подсчитывается при помощи метода Count
А тут можно заранее зарезервировать память
А метод подсчета одинаковый? Т.е. проходит по всему списку элементов и складывает?
Вот я.
Создал класс MainWindowViewModel, подключил его в XAML как источник данных и подключаю его члены биндами к элементам интерфейса.
Когда этот класс создаётся-то?
Получается, в шаблоне MVVM не нужен код-бихайнд? У меня там пустой класс висит, единственное назначение которого это загрузить в себя XAML.
Нет ли в этом некоторого нашего недопонимания гениальной мысли создателей WPF? Может быть вью - это хамл, а вью-модель - это мыслился код-бихайнд класс? А мы его весь дропаем и лепим ещё один класс?
В момент Initialize Window вроде, на крайняк Loading Window.
В XAML ты должен ему дат ьимя, чтобы потом обращаться к экземпляру как к кнопке.
Я спрашиваю, потому что приверженцы МВВМ говорят:
> Типа вот приходит в твою галеру новый чел, и хочет вообще весь вью заново переписать. Поэтому твоя вью-модель ничего не должна знать обо вью.
Но ведь с кодбихайндом всё так и есть. Если там какие-то свои поля, он их знает и с ними работает. Ни о каком XAML этот класс не знает. Но XAML наоборот знает о своём код-бихайндовом классе, может цепляться к его полям через x:Name и всё у него заебись.
Пришёл новый чел, нарисовал новую разметку в XAML, подцепился к нужным полям во вью-модели (которая есть искаробочный код-бихайнд класс).
Что я понимаю неправильно?
>но CanExecute в какой-то момент упрятывается от потомков
потому что в этом и суть существования базового класса - сделать в нем как можно больше, чтобы в наследнике делать как можно меньше.
>>36797
> если true - то активен, если false - то выключен.
хз. может быть. а может и другое. я вот в своем лисапеде выключал CommandManager.RequerySuggested чтобы минимизировать бесполезные вызовы CanExecute
>>37054
>Когда этот класс создаётся-то?
при создании MainWindow. По хорошему снаружи и присваивается MainWindow как DataContext
>>37063
>в шаблоне MVVM не нужен код-бихайнд?
верно. он нужен только виду для реализации того что неудобно хамлить. То есть он в идеале пуст, а на деле не всегда
>>37077
>подцепился к нужным полям во вью-модели (которая есть искаробочный код-бихайнд класс).
ты мух от коней то отдели. вьюмодель содержит одну логику, а код-бихайнд совершенно другую.
Если код что должен быть во вьюмодели находится в коде-бихайнд, то это уже не MVVM
Допустим, мне нужно добавить колонку в уже существующий в одной из наших систем отчет. Я пока очень смутно представляю, как это делается. Нужно подредактировать мрт файл отчета? Т.е. алгоритм действий примерно такой:
- Скачать софт от стимулсофта
- Создать бизнес-объект на основе предыдущего с добавлением туда нового поля (этой самой новой колонкой)
- На основе нового бизнес-объекта создать шаблон отчета (пока не очень пойму как на основе бизнес-объектов создавать шаблоны отчетов. (МРТ файлы) Как-то в софте от стимулсофта?)
- Заменить в приложении мрт на новый
- И передавать туда инстансы нового бизнес объекта с новой филдой?
Я себе примерно так этот процесс представляю. Анончик, я примерно прав?
Обычно делается так:
ElementInfo<String>(value);
А хочу так:
var valueType = value.GetType;
ElementInfo<valueType>(value);
ближе всего рефлексия MethodInfo.Invoke
Чуть дальше Delegate.DynamicInvoke
это медленные вызовы
А вот если нужно быстрее, то привет кодогенерация (или можно слепить абстрактный класс)
Спасибо за ответы. Яснее не стало, но ощущается поддержка анонская.
Молодец
1. биндинги, триггеры, стили
2. мввм, мвс, ооп и паттерны (тут явно больше требований будет чем к джуну на асп)
3. DI в WPF
4. Открытие/закрытие окон и привязка VM, где и как
5. Код внутри окон (когда можно и нужно)
6. Почему биндинг указывать внутри окна - хуёвая затея
7. EFCore, ms sql, postgresql, sql-синтаксис и запросы (джоин, селекты всякие инсерты итд)
Это так, навскидку. Еще, если бы проект был связан с тем, что нужно тчо-то очень быстро считать/обрабатывать - спросил бы про маршаллинг из C++ в C#, тут есть ньюансы в строках (в мсдн даже написано). Если компания разрабатывает продукт какой-то, а не аутсорс, то почти гарантировано будут вопросы по байтоёбству и алгоритмам, так что какие-нибудь основные основы этого стоит подучить.
Да
походу в 2 раза меньше, вакансий
Нет.
Спасибо за такой подробный ответ.
>5. Код внутри окон (когда можно и нужно)
>6. Почему биндинг указывать внутри окна - хуёвая затея
Вот на эти два вопроса я бы не ответил. Остальное то есть и в литературе, и в справочной информации по дотнету, а ответы на эти вопросы видимо с опытом приходят.
Задай вопросы на ru stackoverflow, там даже регаться не обязательно, ответят быстро. Там любят концептуальные вопросы. Я сегодня уже не в состоянии ответить адекватно
>бизнес-объектов
Я хуй знает, что в твоей вселенной бизнес-объект.
Короче, как работал с ними я.
Создаешь новый отчет.
Назначаешь источник данных (конкретно я тянул все из постгреса, поэтому просто прописывал коннекшен стринг до нужной БД.
Строишь нужные запросы к этой БД из которой тянешь по ним информацию.
Создаешь переменные и биндишь их к своим запросам (часть как параметры запроса, а часть будут хранить результаты запросов.
Потом строишь сам шаблон. Принцип очень похож на вордовские темплейты (docx), т.е. пишешь текст, рисуешь таблицы и т.д. и где нужно в них прописываешь свои переменные в фигурных скобках {} плюс логику по необходимости.
Дополнительно можно назначить фильтры, привязать их к переменным запросов, чтобы пользователь мог контролировать выборку данных (например диапазон дат, сортировку и т.д.)
Там же в дизайнере можешь ткнуть кнопку и оно подтянет данные и покажет тебе итоговый результат.
Потом сохраняешь mrt, запихиваешь ее в свою приложуху и библиотекой стимулсофта дергаешь этот шаблон и на его основе строишь отчет.
Как его на фронт выводить и давать пользователю возможность играться с фильтрами, я х.з., т.к. с этой частью не работал.
Если нужно отредактировать отчет, то просто берешь mrt файл, грузишь его в дизайнер и исправляешь.
Редактируешь запрос, добавляешь переменные и запихиваешь их в нужные места отчета.
С хуев ли в моей? Это термин из оф. документации стимула. И у меня похоже именно на них все и сделано. Но инструкция тоже пригодится, сяп :3
* но твоя инструкция
>Это термин из оф. документации стимула
Честно, вообще нихуя инструкций не читал.
Меня просто перекинули на проект, где уволился единственный человек который умел в эти отчеты.
Меня перекинули скинули пачку шаблонов и что в них нужно поправить. И буквально пол дня на разбор с чем это едят. Скинули какой-то видосик на полчаса, как фильтры добавлять и переменные биндить в запросы и все, остальное сам разбирал.
Там была срочная сдача объекта и нужно было их срочно исправлять. Правил практически в прямом эфире, когда шел показ заказчику. Я в это время правил и заливал отчеты на прод, пока его отвлекали. И так всю неделю.
>5. Код внутри окон (когда можно и нужно)
вопрос абстрактный. Держать код-бихайнд чистым это рекомендация и хамл далеко не всесилен. И даже не нужно своего контрола писать чтобы испытывать необходимость писать что то в код-бихайнд
>6. Почему биндинг указывать внутри окна - хуёвая затея
Какой биндинг? о чем это? Прямая работа с контролаями типа TextBox.Text=""?
>Какой биндинг? о чем это? Прямая работа с контролаями типа TextBox.Text=""?
Нет, в плане в WPF в XAML можно напрямую биндинг указать к конкретному ViewModel. Хоть это и плохая практика т.к это просто хардкодинг, однако имеет некоторое преимущество перед биндингом т.к можно напрямую смотреть как меняется View в зависимости от изменения ViewModel еще на стадии написания кода (C# подтягивает данные из ViewModel и привязывает их в xaml еще до запуска проекта)
Шмачилин, которого тут советовали, как раз прямо так и делает, например DataGrid привязывает к ICollectionView. А как собственно по другому?
Пока что так делай, сейчас наглядность важнее чем правильность. Концепцию надо всю уловить, а дальше уже улучшать на более правильный вариант
>можно напрямую смотреть как меняется View в зависимости от изменения ViewModel еще на стадии написания кода
ну так смотри через d:DataContext. Он, собственно, для этого и придуман (хотя поддержка в IDE хромает, но равна вот этому костылю на твоем скрине)
>>37965
по другому это просто прямо. не всегда нужна сортировка, фильтрация и тому подобное. К тому же CollectionViewSource довольно магическая штукенция - ее можно сбоку прикрутить, а не только посередке (хз как и почему это работает)
Очевидно, потому что школьник наткнулся на статейку о том, что любой паттерн - это антипаттерн.
>интеграционные тесты
>Архитектура — DDD, микросервисная архитектура
>Алгоритмы
>Структуры данных
Так бы сразу и писал: "Чтобы взяли работать сеньором (хуевым)". Микросервисы нужны далеко не везде и перед ними надо разобраться с монолитной архитектурой. DDD на шарпе - это лес из костылей.
у меня проект на нем, буду по гайдам на android studio делать
Дебс, нахуя нужен джун в 2022 который знает только синтаксис? От джуна не требуется уметь использовать правильно архитектуры и паттерны, но требуется быть в курсе о существовании, хотя бы просто ЗНАТЬ что это. Это как взять на стажировку еблана который только начал учить синтаксис, нахуй такой нужен? Алгоритмы и структуры данных.. блять, да это база которую спрашивают у джунов НА КАЖДОМ собеседовании просто потому что у джунов больше нечего спрашивать ибо они и так нихуя не знают. Элементарно знать реализацию квик-сорта, дерева и еще парочки каких-нибудь линейных поисков, этого уже достаточно будет +-.
Нужно чтобы реагировать на какое-то событие. Например событие - загрузка приложения, тут ты подписываешься на условное "OnApplicationLoad" которое вызывается где-то там. Хороший пример - https://stackoverflow.com/questions/1472498/wpf-global-exception-handler. Так же можно подписываться на условное добавление в бд и после того как бд изменилось - изменить какую-нибудь табличку в окошке, ну или в консоль что-то вывести. В общем события это буквально события.
> Алгоритмы и структуры данных.. блять, да это база которую спрашивают у джунов НА КАЖДОМ собеседовании
Нужно наизусть знать пик?
Почти никто эту хуету не знает и тем более не использует. Исключения - узкие места в огромных сервисах, к которым даже мидлов никто не подпустит.
Это суть, ее я понял. Я не понял, где объявляется сам эвент, где происходит инвок и где происходит подписка-отписка. То есть вот есть три класса, в методе первого происходит событие, после которого мне надо запустить по методу из второго и третьего класса. Куда что писать?
евент обьявляется там где событие и происходит. а где же еще.
инвок там же присходит (а из другого места и не даст сделать)
а подписываются там где нужна подписка, хоть даже в том же классе где и событие.
с цепочками событий разве что можешь раскрыть сахар до ручного add/remove чтобы чуть меньше было говнокода
Да, всё так и есть. В реальности эту хуйню никто не юзает, однако спрашивают на собесах. Для этого и нужно эту хуйню изучать, если бы у тебя как у лида был выбор: взять двух идентичных долбоёбов на мидл позицию, но один знает алгоритмы. Очевидно лучше взять дебила который знает алгоритмы.
Ох если бы у лида был такой выбор. На деле приходит десять мидлов, восемь из них сразу нахуй, оставшиеся два тоже долбоебы, но каждый по-своему, - надо выбрать какой-то один вариант долбоебства, с которым будет меньше мучений. Про алгоритмы что-то слышал один из восьми выгнанных на мороз, но его эйчар даже на тех не пустил из-за провала по софтам. Примерно такие выборы у лидов.
Промазал тредом, извиняюсь
Ты главное дверью не промахнись, а то тебя на синьора будут собесить во все дыры. А ждать от них следует много ненужных алгоритмических задач и дохуя одинаковых этапов
>его эйчар даже на тех не пустил из-за провала по софтам
Больше всего этого боюсь. Я заика, и это явно будет влиять на решение о принятии меня на работу. Чтобы компенсировать сей факт мне нужно показать значительно лучшие знания, чем у остальных кандидатом, и то не факт, что не пошлют.
Какой шанс, что меня такую хуйню спросят, едва помню сортировку пузырьком
> Ну и короче говоря, у меня тут тулкит, в котором есть опенсорсная реализация команд, в которых нет CanExecute,
Держу в курсе. Я покурил документацию, и там таки нашлись стандартные RelayCommand<> работающие идентично лекционному материалу. И всё там работает аналогично. ЗБС.
Возникла другая проблема. Мощной обвязки для управления ресурсами из ВПФ там похоже тоже нет. Ну знаете, все эти статик-ресурс-дикшионари и т.п. Курб мануалы дальше. А то окажется что я опять ССЗБ.
{"usd", new List<(string, bool)>{(("Pizda", false))}},
{"rub", new List<(string, bool)>{(("Pizda", false))}},
Ключ из другого словаря я перекинуть могу, а как лист заполнить? Помогите, пожалуйста, я щас сдохну. И подскажите, пожалуйста, как надо ко всему этому дело обращаться.
>Я заика, и это явно будет влиять на решение о принятии меня на работу.
На самом деле нет. Я работал с людьми с разными дефектами речи, в том числе и с заиками. Сейчас только конченые мудаки по такому параметру отсеивают.
Просто заранее, первом общении с HR, предупредишь ее, что имеешь такую особенность и все, она уже уведомит основного интервьюера.
В софтскилах главное чтобы ты мог формулировать мысль, нормально рассуждать без пустых выебонов и не быть душнилой.
PS. Понятно, что если у тебя такая степень заикания, что ты вообще не можешь из себя ни слова выдавить, но тогда тебе к врачу нужно в первую очередь, а не работу искать.
Оно тебе надо, анон? Чего ты хочешь добиться, занимаясь ковырянием васянского порта впф? Это какой-то особый вид красноглазого мазохизма?
Ну так ты посоветуй в котором есть. Мне нда чтоб был хамл, мввм, и как можно больше фич из ВПФ. Ну например, принцип констрцирования интерфейса из примитивов, чтобы был. Чтобы это значит, например, кнопка была такая, что я бы в любой момент, как в ВПФ мог на неё навесить две пикчи по бокам и два лейбла с текстом в середине. И чтобы во вкладку таб контрола мог пихануть такой же набор примитивов вместо стандартного набора иконка+текст.
И чтобы это всё кроссплатформенно и опенсорсно.
И чтобы с минимумом левых либ в выходном каталоге.
И... И... Вспомню, ещё допишу.
Авалонию не предлагать. Я её пробовал, говно какое-то.
> Чего ты хочешь добиться
Хочу кроссплатформенное окошко настроек моего софта, чтобы не переписывать три раза для трёх целевых платформ. Ван райт - ван ран.
dotnet restore .......
dotnet test --no-restore SolutionName/TestProjectName
Пишет сколько тестов нашлось, выводит пару упавших тестов и висит без вывода.
Думаю, что проблема в линупсе, но хз
>Я её пробовал, говно какое-то
значит плохо пробовал. там просто подход чуть другой и по другому называются свойства
и иногда приходится сильно гуглить "а как тут бл.. сделано это"
ненужная поддержка реактивности изкаропки
со стилями дело обстоит лучше. Стили в WPF лютое днище.
А больше ты ничего не найдешь. Всякие этоформсы и мауи это обертки над родными какими то там контролами, то есть ты ограничен в "хочу в кнопку впихнуть прогрессбар, в котором комбобоксы, в которых картинки котиков, в которых..."
Есть хоть одна причина для докера не собирать Self contained приложение и не хуячить образ на базе alpine без .net'а?
Ну, типа блин. Разница в размере конечного образа - довольно существенна. Когда у вас в приложении сервисов под 100 - вес в 250MB становится - довольно болезненным. А тут раза в 3 - меньше финальный образ.
Может быть я за что-то не шарю?
>Как выпилить?
просто не используй. там есть реактивный MVVM который означает, что контролы умеют его понимать нативно
но так же нативно понимают и обычные биндинги. Я свой петофреймворк переводил под авалонию. пострадало
1 некоторые xaml расширения мои
2 window.ShowDialog не блокирующий, то есть привет Taskи
3 Нет CommandManager, пришлось свой написать, хотя я все равно не использую, а предпочитаю чтобы команды знали от кого они зависят.
4 шрифт под винду все таки мылит (и это для меня фатально ибо мне кросс нахер не нужно). но у меня в системе мылит и электрон и говнохром.
5 Пришлось знатно погуглить чем заменяется CollectionViewSource и я нашел замену (щас уже забыл)
6 были проблемы при определении свойств не понимал где там калбэк навесить, но помнится что вроде можно и то просто я не знал.
7 нельзя узнать размер экрана
А еще датагрид. поставил - не отображается. а оказывается нужно докинуть дефолтные стили для датагрид и он появится.
Сразу повысят.
Кстати, а подобное исполнение годится? А то я мог и через foreach всё заебенить без проблем
зачем включать отображение пробелов?
А так...сразу стрингбилдер создавать - совсем память не экономишь
Этот код - на 80% потребляет меньше памяти, чем среднее решение на литкоде, лол. Но да, я не экономил. Я пробовал это ваше модное TDD, на первой итерации, когда стало зелененькое, как настоящий сеньер я решил, что задача выполнена и пошел по своим делам.
Спалил. Я ведущий программист всего лишь(((
Мне дома нет причин иметь английскую студию. А русскоязычная - по дефолту ж ставится.
но это плохой код
он рождает стрингбилдеры с дефолтным капасити и (даже не один)
минимально хотя бы задавать капасити чтобы избежать расширения стрингбилдера
а то и вообще юзать стрингбилдеркеш (который падла интернал)
ну или скомуниздить ValueStringBuilder, который тоже интернал но это уже не так страшно
Пездец мужик че ты нахуевертил-то ёптабля? В чем суть задачи, что хочешь сделать?
Нужно вывести инлайн клавиатуру с валютами в телеграм боте. При этом, если я на неё нажимаю, то false меняется на true, а потом я возвращаю обновлённый словарь, но заместо серого квадрата вывожу галочку. Как на скрине ниже
то есть заместо "suka ebanaya" я потом поставлю серый квадрат
умею, но хочу так
>Почему они подключают датаконтекст в кодбихайнде?
Ну ты даешь. Это класс App
в WPF ты тоже будешь в нем подключать как на скрине потому что это самый верхний уровень приложения
>>38713
О, я вспомнил, почему я дропнул авалония в прошлый раз. Паблиш хеллоуворлда мне высыпал 100 Мб файлоты. Когда Eto.Forms высыпал всего 7 Мб под линуксом. А щас я под виндой и паблиш выдал 4,5!
Понятное дело, считать мегабайты в 2022 это... кхм... кхе... Но тем не менее, хотелось бы в пределах 20-ти мегов.
Я не хочу платить за возможность кроссплатформенно запилить кнопачьку с двумя иконками сотней мегов пустого проекта!
Во-первых, класс App это не окно. Это класс инициализации и то, что у него есть хамл - не делает его окном (просто хамл это же выражение кода в виде хлм, а не чисто язык разметки)
Во-вторых харам это this.DataContext = выраженное в коде или в хамл. Я выделил жирным основную часть. На скрине контекст назначается окну, что для этого окна является "снаружи"
>>38724
авалония рисует сама, а значит у тебя нет ограниченй
ето.формса использует нативные движки что есть в системе и без нее.
так что тут 2 стула.
>Будут чимырить на работе, если проходя увидят на мониторе вот такое вот?
Да будут. Ставь на скрины гачи-мучи, только тогда зауважают.
Алсо.
Нахуй ты скобки фигурные в case'ах ставишь?
Имхо любой адекватный лид при виде такого просто сожжет нахуй всю твою кодовую базу не читая и выпишет билет в бесконечный отпуск. Даже в крестах такой пиздец не пишут.
>Нахуй ты скобки фигурные в case'ах ставишь?
Я не тот чел, но я тоже ставлю фигурные скобки. Потому что иначе эта хуйня не фолдится, плюс без скобок выглядит хуёво, как будто пролапс кода случается
> Потому что иначе эта хуйня не фолдится
Кстати двачую. Я сиподобные языки только джва года как плотно изучаю и уже подметил, что скобки можно ставить просто так, для удобства. Плюс, у скобок есть преимущество, скобки это область (scope), то есть с их помощью можно оперировать одинаковыми локальными переменными внутри них. Насколько это нужно я ХЗ, но изъебнуться можно.
>Насколько это нужно я ХЗ, но изъебнуться можно
Я так иногда делаю, чтобы переменные потом в коде не мешались, если они только на разок нужны. Насчёт эффективности хз, насколько негативно сказывается
Означает ли это, что в скором времени .NET платформу использовать в России будет невозможно/никто не будет, и, соответственно, джуну найти работу с этим стэком будет нереально?
Если проще сформулировать, то повлияет ли полный уход Microsoft на C#/.NET разработчиков в России?
Как я понимаю, C#/.NET сейчас open-source и ограничения Microsoft могут повлиять разве что на недоступность Visual Studio, но хотелось бы почитать мнение шарящих людей.
Отличный ответ, а по развернутей можно?
Вот и винда с офисом останутся, а на шарпе писать запретят.
То-то дохуя капиталистов съебалось из этой страны, очень уж им похуй.
> кто-то может мыслить другими категориями, что кто-то может пожертвовать собственной прибылью ради поддержки другого.
Только с целью извлечь ещё больше прибыли или хотя бы не проебать то, что есть. Даже если прикрываются высокими идеями для общественности, которая им эту прибыли и приносит.
А что тогда ? Направь меня на путь истинный.
Ну или текстовый инишник, который можно загрузить в переменные...
Разве он умеет сохранять ?
>шарящих людей.
Сейчас даже в банках РФ из первой пятерки новые проекты на .net ебашат (и старье на .net6 активно переводят). Я думаю при их финансах и осведомленности, если бы действительно на горизонте маячил реальный вендекапец, то все бы срочно переводилось на другие рельсы. Чего даже близко не происходит. Так что не ссы и учись дальше.
Дядь, мне бы для консольного приложения?
проще на коленке слепить за 15 минут
Но мне нужно их заменить только внутри кавычек. Я конечно могу извлечь подстроку, заменить там, но как потом вставить эту подстроку в строку на место старой?
string replacement = ","; //тут можешь поставить на нужную тебе замену
Regex.Replace("pizdec',' hu','i, 2ch,,,", @"(',')", replacement);
Если регекс нужно будет юзать часто, и ты можешь его создать заранее, то добавь флаг компайлед. Иначе можешь кинуть его нахуй.
var regex = new Regex(@"""[^""]*?""", RegexOptions.Compiled);
...
var result = regex.Replace(text, m => '"' + m.Value.Replace(",", "") + '"');
Если тебе запятую нужно реально на пробел заменять, то можешь в реплейсе скобочки на одинарные поменять.
Если кто шарит, как можно было сделать норм регекс тут, был бы рад почитать. Моя хуйня запятую онли не ловила, только вместе с ебалой, а игнорирование групп не работает на сам регекс, так что только запятую выделить не получается.
При попытке выловить группы вокруг запятых, всё ломалось, если между кавычками несколько запятых.
блять, пока дрочился в редакторе, забыл хуйню удалить
Там такая строка
var result = regex.Replace(text, m => m.Value.Replace(",", ""));
Я смотрю тебе по традиции так и не ответили на вопрос. Давай по порядку. Венда уходит и скорее всего уйдет. Ее уже не скачать без впна и очень проблемно купить лицензию. Госы переходят на отечественные дистры линуха, соответственно на него будут переходить вообще все для облегчения взаимодействия. По этой причине я думаю нет смысла учить тот же WPF, он действительно в перспективе может умереть итт. Это же касается всех более древних дотнетовских десктоп-фреймворков, которые работают только на венде.
А вот в вебе ситуация совсем другая. Асп не зависит от оси, все сервера у адекватных людей на линухе, сам язык и фреймворк полностью попенсорсные и их в принципе невозможно заблочить где-либо. На аспе уже крутится много бизнесов, в том числе крупных, а так как язык и фреймворк годные и спецы есть, на этом всем запускают и новые проекты. Так что в обозримой перспективе по крайней мере с аспом ничего не произойдет, а может он еще и вырастет, пушта все легаси говно на дотнет фреймворке под вендой придется переписывать на современный кроссплатформенный дотнет уже под сервера на линухе.
Так что учи и не парься, но только если идешь в сторону веба. По идеешкам: если студия станет недоступна, то всегда есть райдер и сброс триала, либо вскод с напильником, но проще юзать впн, без которого в нынешние времена все равно никуда.
Rider ведь тоже не поюзаешь вроде как, за него платить надо. А жбрейнс съебали. Надо пилить отечесвтенную айдее под .нет
Пилить отечественную нерентабельно. А райдер прекрасно работает со сбросом триала. Делаешь новый ящик - заводишь новый аккаунт - включаешь новый триал - профит. Пять минут в месяц занимает.
На первом пике свойство привязанное к TextBox, на втором сам фильтр, на третьем свойство привязанное к ListBox
Подскажите, мастера сего языка, ставить всё на красное изучения шарпа? С будущей возможностью вкатиться в европу, там сейчас вроде тоже жаба популярнее, не считая швеции какой-нибудь
Лол, конечно .NET выбирать надо. Смотри в чем прекол. Майки крупнее оракла, они могут себе позволить тестировать что-то новое и даже если обосруться и не выстрелит - ничего плохого не случится в мире .NET, а в джаве же всё наоборот. Каждый апдейт оракл трясётся и надеятся чтобы выстрелило, ведь если нет - это огромные убытки для компании. C# и вся платформа активно развивается, майки вливают дохуя денег в платформу и она будет с каждым полугодием всё лучше и лучше. Джаву сейчас держит только легаси написанное в течении 20 лет, но сам язык развивается очень медленно и активно пиздится из как раз таки сишарпа, т.е выбрав джаву ты будешь писать на обрезанном C#.
>И вроде работает, но почему так медленно?
Потому что ты несколько тысяч элементов в оперативную память суёшь, а затем их еще и отрендерить надо. Юзай пагинацию.
>Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток
Ебал рот этой многопоточности ебаной. Что я делаю не так?
FlowDocument result = null;
Thread thread = new System.Threading.Thread(() =>
{
result = parser.Document;
});
thread.TrySetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
Document = result;
Что здесь не так? Я создал переменную в главном поток, запустил другой поток, из него вернул результат в эту переменную, затем хочу записать результат в другую переменную, которая ждала завершения потока, и получаю эту ебаную ошибку. Почему, нахуй? Неужели нет способа просто получить данные из потока нормально? async await использовать не могу, потому что мне нужно ApartmentState.STA, без него нихуя работать не будет у меня.
Хочу засунуть parser.Document в поток и получить на выходе данные, поток должен быть с ApartmentState.STA. Что в парсере особо не важно. Точнее, без ApartmentState.STA он будет отъёбывать, потому что некоторые части его хотят работать с главным потоком, ибо являются элементами UI. Вроде как.
Этого сегодня так пишут, покрывая пяти слоями DI/FluentAPI/govnoUnit и запихивая всё в монгу?
Понятно, почему на меня на собесах смотрят как на скуфа старого.
Раньше нельзя было имлементацию методов запихнуть в интерфейс, а в абстракный класс можно было.
На шарпе можно попасть в ПРОСАК.
Одно дело, это ковырять винФормсы джуном или мидлом, а есть проекты где используют WPF/UWP/MAUI/Xamarin или очередной фреймфорк от корпорации.
Друга половина новых вакансий - это микросервисы, но там многие .NET проекты скоро сдохнут, не выдержав конкуренции с Голангом/Джавой.
В итоге остается полтооры вакансии, где можно пилить нормально citadel сидя на линуксе, без легаси и зумерского говна. Ноудискас. Хейтеры лесом.
Помогите, пожалуйста. Пытаюсь десериализовать xml, который приходит с сайта, приходит текстом, а я потом сохраняю в формат xml. Почему не получается десериализовать? Если использовать xRoot, то мне просто выдаётся пустой members. На скринах xml, код и тд. Заааа чтоооооо
Пиздос, я слепой. Ладно <ValCur есть. Но если использовать рут-хуют кидает тот же эксепшен
А, точно, это ж для имплементации методов. В интерфейсах это делать до сих пор считается моветоном.
>>39779
Ну так понятное дело что >>39771 не запустилось, у меня ж там жсон. Нахуй ты ебешься с хмл рыготным если есть вликолепный жсон? https://www.cbr-xml-daily.ru/daily_json.js и юзай тот код что я приложил
Хотел сам сделать бота. Типо пет проект в итоге завяз в этой хуйне. А вообще, бот уже имеет рабочий функционал, но код, что я навоял - просто ад ебейший. Так что решил переделать
Ты завяз на хуйне потому что пытаешься здесь и сейчас, а нужно сесть и продумать ООП и всю хуйню. То, что ты высераешь в треде - я в шоке, поверь, я если бы увидел такой пет-проект, я бы тебе даже отвечать наверное не стал на звонки после собеса.
Верно, я спонтанно решил сделать бота, при этом нихуя не продумав. Ошибка, конечно, но я не представляю даже с чего начать.
Чет обосрался с микросервисной джавы которая должна составить конкуренцию ASP NET CORE
Так жаба вне конкуренции. Аспнет - лучший выбор для монолитов, а аспнеткор - лучший выбор для опенсорсных монолитов.
Это просто-понятный императивный код, няша, который писался для литкода, чтобы потроллить вкатунцов из /b/.
Что ты от меня хочешь? Чтобы я по солиду разложил все это дело, когда мне нужно было сраться с вкатунцами? Это раз.
Два. Любой нормальный лид - в первую очередь думает о вэлью проекта, и уже во вторую очередь о красивом-понятном-поддерживаемом (нужное подчеркнуть) коде. Если тебе чтобы фичу запилить - нужно неделю, а Васе-говнокодеру достаточно 3 часа - то лид даст задачу Васе, и проталкивать по ЗП менеджеры и тимлид будет Васю, а не тебя. И все истории, про то как через 100 лет никто это поддержать не сможет - попросит засунуть поглубже, потому что через 100 лет ты мертвый будешь, а деньги ты не получишь уже сейчас, если охуительная фича не появится уже завтра.
Я даже мысль разверну.
Большая часть ваших проектов - это не гугл и амазон, нахуй. Даже не ворд. Это в 90% случаев - решение задачи конкретного клиента, в конкретный срок. Так вот. Тимлид уже насрался с клиентами, которым вдалбиваешь, что вот они завтра Амазоном станут, а у них секйлабилити не заложено, а клиент ему устал у виска крутить, говоря: "Какой блядь, амазон, я цветами торгую через интернет, сука, ты больной чтоли?"
Если бы ты свой хороший код делал забесплатно, причем за то же время, что Васа-говнокодер - плохой - вопросов бы не возникало. Только зачастую - это нихуя не так. Раз. Два - твой охуительный код - охуетилен только в твоей голове или пока ты им пользуешься, а когда его берет другой программист - он охуевает от того, сколько мыслительных усилий нужно приложить, чтобы понять полет твоей фантазии.
Так вот. В кодинге - первое что тебе нужно уяснить - ты решаешь не свои проблемы, не удовлетворяешь чувство прекрасного, не доказываешь какой ты у мамы умный и прочее - ты решаешь проблему конкретного клиента. И не за спиной в тихую принял решение, а нахуячу я ему 100слойную архитектуру, с микросервисами-хеурвисами, и похуй как он потом это будет поддерживать без тебя; а прямо подходишь и говоришь: Ребята, вы готовы потратить в 10 раз больше времени и в 25 раз больше деняк, чтобы возможно в будущем у вас не было проблем с допиливанием функционала, расширением, поддержкой и прочей залупой. И когда ты увидишь клиента, который скажет: "Да, берите все мои деньги, делайте сколько будет нужно, лишь бы было хорошо", вот тогда ты и начинаешь лезть в залупу. До того как твой клиент не дал согласие - ты делаешь ровно то что он просит, максимально быстро, максимально дешево.
>"Какой блядь, амазон, я цветами торгую через интернет, сука, ты больной чтоли?"
Ты описываешь ситуацию, где и клиент и исполнитель - шизоиды. Для такой хуйни надо нанять фрилансера на петухоне/петухапе, а не дотнет галеру. Дотнет берут как раз для случаев, когда:
>готовы потратить в 10 раз больше времени и в 25 раз больше деняк, чтобы в будущем не было проблем с допиливанием функционала, расширением, поддержкой и прочей залупой
Дотнет - это платформа для жирного энтерпрайза, которую надо поддерживать десятки лет и постоянно допиливать функционал. И как раз для этого там статическая типизация и ооп, чтобы код был максимально легко расширяем и максимально багоустойчив.
> Дотнет - это платформа для жирного энтерпрайза
Да нет. Дотнет берут, в том числе, потому что: "Ну, мы виндовс пользуемся"; "Ну, нам 5 лет назад студент написал на .net, столько лет пользовались - все заебись - пишите на шарпе", "Я сам - на висуал бейсике писал...", "читал где-то что это как с++ только с++++"
Это раз.
Два. При чем тут шарп вообще? Язык - значения никакого не имеет. Это общие вещи, которые нужно понимать. Если ты работал, например, в ДоДо - то видел код который в наследство остался. Охуенный, блядь кодище. И писался - очевидно с расчетом на то - что они - амазоном станут. Угу. Но теперь, в том числе благодаря этому коду - у них есть деньги, чтобы его переписать. Если бы они - вместо того чтобы развивать бизнес - тратили бы на вот таких вот умников миллионы денег - так бы и сдохли. И таких историй, как конторы загибались в попытках переделать - куча: с другой стороны - есть Фейсбук, который написали на ПХП, причем качество кода там такое же сомнительное было; есть гугл, который такой же сомнительный в плане кода на момент когда он только начинался; есть, блядь, сам дотнет, посмотрев исходники которого до того как они стали опенсорсом - ты охуеешь, потому что там тотальный пиздец уровня: упоровшийся силюб - обдолбался и хуй его остановишь, ансейф хендлер погоняет нативным вызовом, ебаша прямо в пасять хуй пойми что, а потом это обернули в какой-нибудь SafeHandler и заебись, четенько сделали.
Так вот. Ответь. С хуя я - в контексте написания кода в ответ на тупой вопрос джуна из /b/ - должен бы писать охуеннейший код? Давай. Мне интересно.
Двачую кстати, все относительно современные успешные продуктовые проекты выросли из какого-то говна, написанного, внезапно на пхп.
ВК - пхп.
Озон - пхп.
Авито - пхп.
Фейсбук - пхп.
Яндекс - пхп и perl.
Гугл - джава и питухон (на тот момент cutting edge технологический стек)
Аноны, помогите советом.В институте проходили С#, но потом год забрала работа одна и я выкатился из всего, сейчас хочу взяться по крупному за программирование, и вот думаю будет проще взять вспомнить С#, но как это применить потом? За что мне лучше взяться и на какую работу я смогу рассчитывать?
Очевидно же.
Мои вопросы:
1)Как мне это запустить на 22 студии?
2)Там нахуй ни одного .cs файла нет, только вьюхи cshtml и папка с ангуляр/жс скриптами. Я так понимаю, там всё-таки чего-то не хватает?..
Как понять куда двигаться, вопрос в этом ведь.Что изучать в первую очередь, если я освежил уже синтаксис языка, вспомнил об основных типах данных, операторах, классах и методах?
Бтв, папка в которой это все лежало - называется www
Спасибо за предложение, я тоже задумался по поводу ревью моего говнокода. И я придумал вот что: буду пилить проект, потом выкладывать на гитхаб, а потом заливать на переполнение стека, чтобы там оценили. Сюда тоже ссылку кидать буду.
а пока я пилю трёхслойную архитектуру для бота, попутно изучая основы архитектуры ПО)
А что я нарушаю? Инваринтность, скорее всего нет, т.к все условия сохранены. Или, скорее всего, я нарушаю Postconditions, но там, где я читаю говорится только про ослабление postconditions.
То есть, по сути, усиление/ослабление postconditions, а также усиление/ослабление preconditions - это одна хуйня и так делать нельзя?
> пытаешься здесь и сейчас, а нужно сесть и продумать ООП и всю хуйню
Никогда нихуя не продумывал. Садился и делал всегда просто. Проблем никогда не возникало особых
ЧЯДНТ?
о, тоже подписан на этого чела
Я тоже так делаю, а потом просто привожу всё к цивильному виду. Но всё-таки довольно неудобно, хочется иметь хоть какой-нибудь набросок. Я когда диплом в шараге писал, начал делать фронт для сайта, в итоге не имея общего представления просто бегал по понравившимся сайтам и по кусочкам пиздил оттуда дизайн. Времени проебал много, а можно было просто взять из фигмы какой-нибудь дизайн и по нему делать. в итоге мне дизайн подрихтовал дипломник, чтобы он был однородным
Чисто ООПшный вопрос без привязки к языку. Допустим есть базовый класс Animal и я хочу от него отнаследоваться. Все наследники будут как-то расширять базовый класс, добавлять новые методы и поля. Например дочерний класс AnimalWithSuperpower будет иметь метод ShootLaserBeamsFromEyes, уникальный только для этого класса. С таким подходом появляется проблема, что если я храню в одной коллекции множество дочерних классов и пытаюсь с ними потом как-то работать, то мне нужно постоянно делать сужение типа (проверять что метод присутствует в объекте).
Как это можно отрефакторить? Первое что приходит на ум, это запихнуть все методы всех наследников в базовый класс, а реализацию запиливать уже непосредственно в наследниках. Но что-то мне подсказывает что это еще больший говнокод чем делать проверки инстансов.
Как вообще люди делают в таких ситуациях?
Ифалогия - плохо. Понял + принял
Не понял, к чему это. Я вроде написал, что понял
Возьми банальную идею сайта (магазин/соцсеть/имиджборд) и делай минимальный рабочий вариант, по ходу читая документацию и разбираясь, а как заработает - наращивай жир и фичи.
Потом учи всякие паттерны и архитектурные подходы и перепиши нормально.
Понял, благодарю. От проверок походу никак не уйти
> если я храню в одной коллекции множество дочерних классов
У тебя неверное понимание наследования, от которого у тебя неправильная архитектура.
Коллекции обобщённого типа существуют для того, чтобы использовать из элементов только методы, имеющиеся в обобщённом типе. Если ты постоянно делаешь проверки на сужение типа - то ты что-то делаешь не так. Где-то ты свернул не туда.
Мой совет, завести коллекцию типа AnimalWithSuperpower и кидать в неё всех таких.
Оп треда по ссылке работает на МАКе.
Вообще, по идее можешь. Если ты усиливаешь постусловие, то по идее, ты всего лишь сокращаешь множество состояний на конец вызова до какого-то подмножества (внутреннее состояние объекта, возвращаемое значение и т.д.). Так как ты именно усиливает постусловие, то значит выбираешь это подмножество из множества уже допустимых состояний. А значит, не сломаешь код, который это использует. Вот ослаблять да, нельзя.
С BatchCommands вообще непонятно, когда создаешь новый NpgsqlBatch он дает в таком стиле команды пихнуть, а отдельно свою хуйню NpgsqlBatchCommandCollection не дает создать, и не дает скастить другие коллекции к ней. Вот например, если сделаю один static батч и буду в него новые соединения пихать и менять параметры достойно будет?
Это если я солид соблюдаю. А если нет - похуй
Почему же. Если использующий твой класс код написан правильно, то он уже готов к тому, что после вызова будет принято одно из допустимых состояний. То что твой класс сужает это множество ничего для вызывающего кода не меняет, так как какое состояние бы не было на момент окончания вызова принято, оно все ещё остаются допустимыми. Если же вызывающий код от этого ломается, то он скорее всего почему-то знал что-то о деталях реализации базового класса, чего бы ему не следовало.
Ой, блять, сорян. Я перепутал с ослаблением пост условия.
Даппер и юзал, но я как я понял в нем батчинга. Гуглятся только bulk insert/update/...
Ну, в прошлый раз мне сказали, что уволить за мой код нужно. Я вот засомневался в своих силах и теперь хочу понять, что я делаю не так...
>>41204 (Del)
Где я троллил кого-нибудь?
> Я вот засомневался в своих силах
Ну и какой ты сеньор тогда? Ты должен был разъебать по фактам своих оппонентов.
>Мой совет, завести коллекцию типа AnimalWithSuperpower и кидать в неё всех таких.
Совет годный, скорее всего так и сделаю. Мой практический кейс такой: есть класс таблицы (Grid) и в ней могут находиться колонки разных видов, унаследованные от GridColumn. Я все колонки сейчас храню в одной коллекции ибо это на первый взгляд логично. Но это привносит кучу мусорных сужений. Наверное реально будет проще разделить по видам и потом склеивать при маппинге в UI слой.
Но разве в этом кейсе не напрашивается наследование? У меня около 5 видов колонок (и будет еще больше), у которых общая кор логика, типа валидации, фильтров, но также есть различия в поведении и разные поля.
Не покажет он ничего. Это местный шиз, который постит везде "Не уходи из треда! Сейчас подробно всё распишу".
Ты композицию собираешься заюзать? Я хз как еще можно
У тебя 10 минут. Время пошло.
Хз как спросить правильно, типа насколько ML.NET полноценен в этом плане или это просто маркетинговая заглушка, мол, у нас есть типа машинное обучение.
Посмотри ещё в сторону паттерна Visitor. Возможно сможешь натянуть его на свой кейс. Он как раз позволяет избавиться от необходимости явной проверки типов и даункастов.
17 это которая?
Да и там же беленьким - радиус на котором я перестаю рассчитывать взаимодействие. Типа я так считаю скорость:
if(Radius + other.Radius < distance)
{
var F = G (Mass other.Mass);
var fx = F dx / distance;
var fy = F dy / distance;
float dX = fx / Mass;
float dY = fy / Mass;
Velocity += new Vector2f(dX, dY);
}
>>41251
Я вот эту вот щтуку поставил.
https://marketplace.visualstudio.com/items?itemName=unthrottled.dokithemevisualstudio
Хуюнити.
Охлол! Серьёзно?
лет 5 назад в /б/ я баловался подобным тралингом, а тут спустя 5 лет меня подловили на таком же
Пока не было кодревью - я нашел ошибку в формуле рассчета скорости.
Ну и сделал красивые ЛГБТ хвостики.
И на выходе скомпилированный хеллоуворлд весит сто мегов. Сто, Карл! Сто, Хесус!
А нахуя мерять хеллоу вордами? Он весит 100мб, готовая программа со сложной бизнес-логикой 120мб.
Ах да, хоть ВПФ и не кроссплатформа, а мы тут как бы кроссплатформу обсуждаем, но хеллоуворлд на ВПФ вообще = 450 Кб. Кило! Не Мега!
>Eto.Forms, Хеллоуворлд = 4,5 Мб.
а если прибавить к нему формсы, гтк и что там еще что на маке
сколько получим?
Щас ещё ради интереса перегружусь в линукс и пособираю там, и сравню размеры.
Почему код типа как на пикриле компилировался и работал безошибочно много лет, а свежайшее обновление студии вдруг начало ругаться и выдавать ошибку CS8347?
https://pastebin.com/uZAVDDRa
Обе почти идентичные структуры, MySpanWrapper1 и MySpanWrapper2, содержат поле типа Span с именем content.
У обоих структур есть конструктор, который принимает Span и присваивает его этому полю content.
У обоих структур есть только один метод Copy, который берет Span из поля content и создаёт новый MySpanWrapper через конструктор.
Единственная разница между двумя реализациями в том, что в MySpanWrapper1 мы получаем в конструкторе аргумент типа Span с префиксом in. И именно наличие этого префикса приводит к появлению ошибки этапа компиляции. Но почему так происходит? Ведь когда мы присваиваем этот переданный по константной ссылке аргумент полю структуры, у нас ведь не ссылка присваивается, а создаётся просто копия всех полей аргумента. in - это только про способ передачи аргумента, про его неизменность, но не про его время жизни.
Почему префикс in приводит к этой ошибке, а если его нет, то всё норм?
те, кто измеряет размер приложения без учета рантайма и фреймворка - просто кривят душой
а то так мне жависты тыкали мол чего этот ваш дотнет на линуксах нужно ставить чтобы приложения были небольшими "ха ха, вот жау не надо. жава везде"
но жава так везде что в винде аж НЕТУ. да и всякие там идеа редакторы чет с собой таскают
измерять нужно
(рантайм + фреймворк + приложение) / (функционал + удобство разработки)
Я нахожусь в одной среде. Оба шаблона создаю одной платформозависимой командой.
Хорошо, щас автономный паблиш сделою. Посмотрим.
В идеале хотелось бы увидеть пример, где префикс in (передача аргумента по ссылка и его неизменяемость) всё ломает. А без in - всё будет ок.
Посмотрел. Селфконтейнед релиз:
Авалония - 97 Мб.
Ето.формс - 154 Мб.
Ачо? Авмсысле?
Я ни разу не видел селфконтейнед дотнетного софта, какой установщик не скачиваешь, он всегда предлагает скачать самому или установить требуемый фреймворк. Поэтому, этот аргумент расцениваю слабым, но всё равно интересно, как так получается, что Авалония тянет меньше сборок дотнета? Потому что у неё больше сторонних сборок? Которые и занимают эти 100 Мб в простом (не селфконтейновом) билде?
Всё, разобрался с вопросом. Авалония в один билд засовывает отдельной папочкой все рантаймы всех поддерживаемых систем. Если, к примеру, находясь под виндой, удалить оттуда все лишние рантаймы, то размер билда становится 23 Мб, это хоть и больше 4,5, но уже в приемлемых рамках.
Тебе додику сказали, что авалония рисует сама и сама все тащит, а твои рисовашки окон 4,5мб дергают уже установленные движками либы, отсюда и разница.
Зачем я кормлю тупых? Лучше ты был бы троллем
Хз как спросить правильно, типа насколько ML.NET полноценен в этом плане или это просто маркетинговая заглушка, мол, у нас есть типа машинное обучение.
ML не про программирование вовсе. Актуальнее всего туда вкатываться через математику, особенно статистику и вычмат. Там поебешься с бумажками и экселем, и потом при изучении хоть мл.нет, хоть питона поймёшь, что они там в роли скриптов для предобработки и конфига для запуска готового движка (а раз так, не имеет значения, на чём их писать), и будешь ты ими пользоваться меньше половины рабочего времени.
Ну вот, теперь 17 норм летит.
Благодарю.
Тензорфлоу самый известный, но есть ещё несколько, иногда пишут и свои.
Решарпер для говноедов. Либо сидишь на райдере либо на чистой вс. Тормозные плагины нинужны.
Уроки сделал?
Сделал твой рот. VS с решарпером начинает лагать шо пздц. Если нужен решарпер, своруй rider или "купи" лицензию за 150р/месяц. Если нет, то тебе и VS хватит.
Жидбрейнсы делают тормознутый плагин, чтобы ты купил райдер? Хм, а это выглядит как бизнес.
Тормознутый плагин, чтобы покупали ещё более тормознутый райдер.
Я - другой анон, но у меня на не слабом таком компе (Ryzen 5700x, NVMe SSD и 32 Gb 4000 MHz DDR4) решарпер все равно заметно подтормаживает, особенно при открытии проекта. Райдер работает лучше. А чистая студия, особенно 22-ая вообще летает
>Подскажите плиз, что такое этот ваш OWIN?
это веб интерфейс для связи сервера с веб приложениям.
в руби такое rack, в питоне wsgi наверное, как то так
>сервер не в иисе, а где угодно?
не сервер, а приложение. в связке сервер+приложение ты можешь заменить сервер на что угодно свое - например на консоль.
>Это тоже что-то мертвое?
узкая применимость. ведь есть кестрел для self-hosted и плодить свое уже не нужно.
ну может разве что для тестирования.
> авалония рисует сама
skia.sharp там всё рисует, а авалония тащит в зависимости. А в ето.формсах тащатся зависимости нативных графических либ каждой платформы, из-за чего ето.приложение выглядит нативно в каждой платформе, а приложение Авалонии выглядит везде одинаково, как веб-приложение на электроне с дефолтной темкой с цсс-файлопомоек. Кстати о зависимостях. Что делает сборка jetbrains.annotations.dll в выходной выдаче скомпилированного хеллоуворлда? Если я, к примеру, начну продавать своё приложение на Авалонии, то не доебётся ли до меня jetbrains типа я у них лицензию не покупал?
>skia.sharp там всё рисует
и еще бы умела рисовать нормально шрифты (((
>Что делает сборка jetbrains.annotations.dll в выходной выдаче скомпилированного хеллоуворлда?
ну ей не сделали PrivateAssets="All" чтобы она в выхлоп не лезла где она и не нужна (не факт, может что то в рантайме на нее опирается, в ней куча разных аттрибутов)
>то не доебётся ли до меня jetbrains типа я у них лицензию не покупал?
да кому ты нужен у нее MIT лицензия
почему это не работает
public func<T>(){
var r = new T();
}
А, для класса с ограничением работает?
Что?
> Че сказать-то хотел?
Сорян, думал ты - это он. А ты, видимо тоже подумал, что я - это он? Но я мимокрок.
Задай на SO вопрос бля, тебе никто тут уже не ответит. Я не знаю как решить данную проблему.
Посмотри видос Хача про многопоточность (Xpuct на Youtube). Базарю, сразу всё поймёшь, ещё захочеш.
>>
Всем привет! Я тут продолжаю изучать МВВМ и по совету рандомного ютубера из туториалов подключил к своему тестпроекту пакет Fody.PropertyChanged чтобы автоматизировать обновление свойств. Карочи, он там какую-то чорную магию делает на уровне МСИЛ что не надо утруждаться с сеттерами. И вроде всё работает, но только, когда окно получает сообщения (когда я мышкой вожу).
ЧЯДНТ?
Всё из-за того, что ошибки переводятся на русек. На инглише их легко гуглить.
> The calling thread cannot access this object because a different thread owns it
> И вроде всё работает, но только, когда окно получает сообщения (когда я мышкой вожу).
> ЧЯДНТ?
Отбой, это баги ГТК.
ебучая прошивка для роутера так и не может в десктоп в 2z22
> он там какую-то чорную магию делает на уровне МСИЛ что не надо утруждаться с сеттерами.
ничего там черного нет. Просто пишет гет сет по INPC за тебя везде где видит INPC. Можешь даже декомпил посмотреть. Никакого отношения к мышке не имеет.
в винформс это Control.Invoke
в WPF это Dispatcher у него методы выполняющие код в УИ потоке
обычно же SyncronizationContext - а он есть ибо только гуи придирается к потока, а раз он есть то смотри выше.
Антуаны, потыкайте-ка тестерами - воот этого пира https://github.com/username1565/CSharpServers/tree/Peer
а то он меня уже вкрай заебал.
Ну блядь, там код, вон же написано оно всё.
Это короче недопиленный пир, шобы в локалке искать других пиров и по сети - синхрить между пирами базу наноборды (хэш-таблицу): https://github.com/username1565/nanoboard/issues/21#issuecomment-1200283392
Пчёл, расфасуй по папочкам, хуё-моё туда-сюда, скажи что не работает и как хотелось бы чтобы работало. Если ищешь тестировщиков - тут их ты не найдешь
Ты напрямую к контролу что ли обращаешься в впф? Я пытаюсь обновить переменную к нему привязанную и получаю кучу дерьма в лицо
>Пчёл, расфасуй по папочкам, хуё-моё туда-сюда
Папочки вон, они, все, в разных бранчах залил. Пир чтоб собрать - просто батник тыкни, или Peer.sh запусти в mono, и там короче вся хуйня эта.
>скажи что не работает и как хотелось бы чтобы работало.
А хуй его знает, работает оно или нет. В локалке, вроде работает, на 192.168.0.4 подключается, и даже хэш-таблицу синхрит, а дальше уже, за NAT'ом - хуй знает как тестить, чтобы по инету оно пиздовало, весь этот мультикаст, и прочая поебня.
Я с одного компа не могу протестить, надо короче сетевиков призвать, походу, чтобы они там потыкали этого пира.
>как хотелось бы чтобы работало
Как в беткоене. Поднял пира - получил базу нанобороды, скроллишь, постишь. Профит. Анонимно, без регистрации и без СМС.
>Если ищешь тестировщиков - тут их ты не найдешь
Ну, тогда, наверное, надо бы их прямо туда нагнать, в Issues, какбє.
1) Меня приняли работать за еду
2) Я смог написать условный двачик
Если есть какие-то планы, будьте добры, скиньте
Хуёвая, неконсистентная разметка.
Я уже не говорю что не используется tabular formatting - за это сразу бью в ебало и мне сразу понятно что за персонаж передо мной.
Чё там за проект в душе не ебу, пиры, хуиры какие-то, чо академики ёпта? На понт взять меня не получится.
Это надо чтобы координировать народ СССР, децентрализованнейшим образом, в локальных сетях.
Щас самое время, потому что хуйло не просто предало народ СССР, но ещё и спиздело ЯО СССР.
Но Горбачёв, дал нам гласность, поэтому можно спокойно координироваться децентрализировано, на принципиально немодерируемой, неубиваемой, вечной и бесконечной нанобордочке, заебатой, которую сукаблять допилить надо нормально, а то я уже вкрай заебался с нею, без моих косарей, что спиздили гнилые и усосочные нищие крысы.
ну мы же не знаем КАК ты используешь диспетчер так что ок
>поэтому можно спокойно координироваться децентрализировано, на принципиально немодерируемой, неубиваемой
>The Treasury Department sanctioned the crypto mixer Tornado Cash as well as several crypto wallet addresses associated with the service. That means the protocol and its associated smart contracts are now blacklisted, making them illegal for Americans to use.
>Dutch financial crimes agency FIOD arrested a 29-year-old Tornado Cash developer in Amsterdam over their suspected involvement in facilitating money laundering via the platform.
>Key blockchain infrastructure services Infura and Alchemy are blocking users from accessing Tornado Cash.
Удачи.
Причём тут, к наноборде - пендосы, которые спиздили бабло и забанили в сети - какую-то криптоговнину?
Нанабороду если в локалках синхрить, через пиры, то хуй её забанишь. Она вообще без инета может работать, через пару роутеров. Что весьма очень кстати, в том же Мариуполе, Харькове, Северодонецке, где пидорашки сначала связь отрубают нахуй, затем хуярят танками, ракетами и советскими солнцепёками - по домам людям, а затем по GSM-триангуляции мины закидывают, чтобы не пиздели через тилибоны профы военных преступлений хуйла.
На мелком уровне или на уровне обхода пидорашек - да, такое возможно и даже полезно.
Но при разрастании проекта, рано или поздно, мощный регулятор всё равно наёбнет, если захочет. Ведь не криптографией государство будет заниматься, чтобы сломать наноборду, а бутылкой в жопу и вилкой в глаз.
>Нанабороду если в локалках синхрить, через пиры, то хуй её забанишь
Это кстати самое больше заблуждение разработчиков подобных систем - они думают что государство будет в лоб идти и играть на техническом поле.
>Чья форма лежит в детском саду
Рашистская, потому что они её и подкинули, для картинки на камеру - разве это не очевидно?
>, говно?
Я не твоя батя-членодевка.
>>42891
>На мелком уровне или на уровне обхода пидорашек - да, такое возможно и даже полезно.
Ну смотри, допустим задача состоит в том чтобы защищать микрорайон. Оружие, скажем есть, и его предостаточно.
Но микрорайон без интернета, связь глушится. Есть компы, ноуты, телефоны, планшеты, роутеры и маршрутизаторы.
Самый лучший вариант - соединить их в локалку.
В локалке, уже может работать TOX, который не требует регистрации и может искать пиров мультикастом, и коннектиться к ним.
Но если задача состоит в реализации анонимного общения, и обмена оперативными разведданными, то наноборда в локалке была бы очень кстати. Только есть одно но. Если сделать её не децентрализованной, а централизованной, то через traceroute можно шустро вычислить адрес сервера, устроить атаку на него - физическую, и наебнуть нахуй всю сеть, потому что она имеет центры. А если сделать её децентрализированной, с пирами, блекджеком и шлюхами - то хуй пососут, эти черви всякие, и можно будет няшиться под пледиком глядя на собственный двощ, выгружая инфу даже через телефонный модем, по тщательно закопанному в траншею проводу, сигнал по которому - хуй заглушит какая-то рашистская мразь.
>Но при разрастании проекта, рано или поздно, мощный регулятор всё равно наёбнет, если захочет. Ведь не криптографией государство будет заниматься, чтобы сломать наноборду, а бутылкой в жопу и вилкой в глаз.
Не называй подхуйловских предателей народа СССР - государством. Мы на них срали с высокой колокольни, на всех этих пиздоглазых бурятов и дыровцев. Государство не будет заниматься такой хуетой, если это не террористическое государство. Да и нахуй её ломать? И как её поломать? Разве её можно поломать? Поломать можно попытатся какую-то сеть, или даже подсеть, базу данных ещё, а не саму наноборду.
>Нанабороду если в локалках синхрить, через пиры, то хуй её забанишь
>Это кстати самое больше заблуждение разработчиков подобных систем - они думают что государство будет в лоб идти и играть на техническом поле.
Мне кажется ты слишком переоцениваешь "государство". Оно не всесильно.
Если уж сверхдержава по пизде пошла, то что уж говорить о "государстве"?
ВДПЧ на порядок пижже законов государства будет, потому что это основополагающие принципе международного права, а ООН - наднациональная структура, международная.
В частности статья 19 ВДПЧ - право каждого человека на информацию.
И что против этого сделают подхуйловские дыровцы наёмные, из чужого, блядь, государства?
Провода обрежут нахуй? Или вайфай будут глушить?
А если я StarLink тарелку себе возьму, и буду там нанобордиться, в бункере?
Или через телефонный модем буду в нет выходить? Или тупо морзянкой настукивать двоичный код. Гы. Нихуя они не сделают, потому что стоит вычислить их в два клика, а дальше - один сигнал и пиздарики им.
>Чья форма лежит в детском саду
Рашистская, потому что они её и подкинули, для картинки на камеру - разве это не очевидно?
>, говно?
Я не твоя батя-членодевка.
>>42891
>На мелком уровне или на уровне обхода пидорашек - да, такое возможно и даже полезно.
Ну смотри, допустим задача состоит в том чтобы защищать микрорайон. Оружие, скажем есть, и его предостаточно.
Но микрорайон без интернета, связь глушится. Есть компы, ноуты, телефоны, планшеты, роутеры и маршрутизаторы.
Самый лучший вариант - соединить их в локалку.
В локалке, уже может работать TOX, который не требует регистрации и может искать пиров мультикастом, и коннектиться к ним.
Но если задача состоит в реализации анонимного общения, и обмена оперативными разведданными, то наноборда в локалке была бы очень кстати. Только есть одно но. Если сделать её не децентрализованной, а централизованной, то через traceroute можно шустро вычислить адрес сервера, устроить атаку на него - физическую, и наебнуть нахуй всю сеть, потому что она имеет центры. А если сделать её децентрализированной, с пирами, блекджеком и шлюхами - то хуй пососут, эти черви всякие, и можно будет няшиться под пледиком глядя на собственный двощ, выгружая инфу даже через телефонный модем, по тщательно закопанному в траншею проводу, сигнал по которому - хуй заглушит какая-то рашистская мразь.
>Но при разрастании проекта, рано или поздно, мощный регулятор всё равно наёбнет, если захочет. Ведь не криптографией государство будет заниматься, чтобы сломать наноборду, а бутылкой в жопу и вилкой в глаз.
Не называй подхуйловских предателей народа СССР - государством. Мы на них срали с высокой колокольни, на всех этих пиздоглазых бурятов и дыровцев. Государство не будет заниматься такой хуетой, если это не террористическое государство. Да и нахуй её ломать? И как её поломать? Разве её можно поломать? Поломать можно попытатся какую-то сеть, или даже подсеть, базу данных ещё, а не саму наноборду.
>Нанабороду если в локалках синхрить, через пиры, то хуй её забанишь
>Это кстати самое больше заблуждение разработчиков подобных систем - они думают что государство будет в лоб идти и играть на техническом поле.
Мне кажется ты слишком переоцениваешь "государство". Оно не всесильно.
Если уж сверхдержава по пизде пошла, то что уж говорить о "государстве"?
ВДПЧ на порядок пижже законов государства будет, потому что это основополагающие принципе международного права, а ООН - наднациональная структура, международная.
В частности статья 19 ВДПЧ - право каждого человека на информацию.
И что против этого сделают подхуйловские дыровцы наёмные, из чужого, блядь, государства?
Провода обрежут нахуй? Или вайфай будут глушить?
А если я StarLink тарелку себе возьму, и буду там нанобордиться, в бункере?
Или через телефонный модем буду в нет выходить? Или тупо морзянкой настукивать двоичный код. Гы. Нихуя они не сделают, потому что стоит вычислить их в два клика, а дальше - один сигнал и пиздарики им.
Благодарю, анон. Я знал про visitor, но чето думал что он применяется только для обхода всяких деревьев, про такое применение не додумался сам.
Всегда пожалуйста
{
ServicesCollection.AddScoped<T>(cotr => new T1(foo));
}
Привет красоточки.
Почему это не будет работать.
public static IServiceCollection ServicesCollection = ... new();
Потому что сишярп не ебёт че ты от него хочешь. Тип T1 является дженериком и для него не определен конструктор по очевидным причинам который бы принимал int какой-то.
Есть другие способы создания объектов которые поддерживают передачу аргументов при инициализации консруктора: Activator.CreateInstance() и Expression, так же можешь напрямую руками вызывать из ConstructorInfo.Invoke(object[])
А,это почему работает
public static void func<T>(int hui) where T: new() {
var t = new T(hui);
}
Да. Но если нужны параметры, то никак без Expression/Activator/ConstructorInfo не обойтись
Или, например, создают конструктор, в нем меняют значение поля на нужное. Не легче ли сразу при создании поля его инициализировать? Для чего это? Я вообще нихуя не понял.
Чтобы когда твой класс зависил очень сильно от каких-то внешних условий их можно было привязать так, что по-другому попросту не получится создать объект и пользователь класса будет вынужден внести нужные тебе данные для корректной работы класса
Конструкторы нужны, чтобы инстанции классов создавались в готовом и правильном для их работы состоянии. А потом классов будет много и например тебе нужно из одного что-то передать в другой. Где ты это будешь делать? В конструкторе и будешь.
>подскажи как мне решить задачу?
Никак. Ты пытаешься в опциях создания объекта T пытаешься инстанцировать и вернуть объект T1
Я уже понял вроде бы, что в первом случае у нас приходит запрос на контроллер, который обрабатывается и идет дальше получать данные из базы данных тем или иным образом, а затем приходит на эндпоинт и отдается клиенту. В случае с MVC же добавляется view, который позволяет представить данные графически (я пока нихуя про это не понял). Так вот по идее я же могу взять данные с эндпоинтов API и потом их отрисовать с помощью условного Ангуляра. У меня при этом получится MVC? Зачем тогда нужен темплейт API, если можно сразу делать MVC и почему они вообще такие разные? Я запутался вообще нахуй.
Можно так
private void func<T>(Func<T> factory)
{
var t = factory();
}
var hui = 1;
func<Zalupa>(() => new Zalupa(hui));
Через захват переменной.
Или так
private void func<T>(int hui, Func<int, T> factory)
{
var t = factory(hui);
}
var hui = 1;
func<Zalupa>(hui, x => new Zalupa(x));
Красавчик,могеш,то что мне нужно.
Спасибо,что помогли,а то тут тян выше пишет конструкторы не нужны,шароеб не человек
>Ты, красавчик.подскажи как мне решить задачу?
если это мелкософтовское DI то у них есть фабрика на этот случай. где то.
Хорошо, а нахуя нужны все эти манипуляции?
>Запихивают в качестве аргумента одно из полей, создают переменную и присваивают ей значение аргумента и больше ее не используют. Зачем использовать поле в качестве аргумента, если оно и так в поле видимости?
Учить оба. API - это апи, MVC - подход к построению сайта и его апи
Затем, что когда у тебя 15 объектов в методе писать new Pizda(150) проще, чем new Pizda(); pizda.Depth = 150
Нужно начать с самого начала, няша.
Не буду слишком углубляться, так что начну с того что знать-понимать надо.
Смотри. Есть стек TCP/IP.
Что он делает. Он гарантирует, что если маршрут удасться найти за некоторое время - данные будут доставлены получателю без потерь и в том же порядке, в котором были отправлены. Это один из самых главных столпов на котором все стоит и потому он реализован практически везде. Т.о. ты, разрабатывая сетевое приложение с использованием данного стека протоколов - можешь не думать о том, как тебе пакетики пропихнуть в сетевуху и по проводам доставить до получателя, и получателю - не нужно думать о том, как ему собрать из каши байтиков что пришли - что-то полезное.
Так вот. Поверх этого стека - есть протокол HTTP. Это - протокол прикладного уровня. Он был придуман специально для пересылки гипертекста и работы веб-серверов. Данный протокол - позволяет довольно просто, хоть и не совсем оптимально - слать туды-сюды html, css, js и прочие картинки с членодевками, которые уже браузер распарсит и нарисует в виде какого-то элемента.
Так вот. Когда все это начиналось - быстро стало понятно, что делать миллионы страничек одинаковых - не вариант. Вот представь, у тебя тредик этот. Кто-то что-то запостил - нужно в создать копию документа и впендерить туды кусок текста который добавился, чтобы остальные люди, обновив страничку - увидели.
Так вот. Как ты понимаешь - начали люди репу чесать и придумывать, а как бы нам сделать так, чтобы не нужно было вот это вот делать. И появилось несколько решений. Решением от майков был такой вот монстр, как ASP(Active Server Pages). Это довольно мутная хрень была изначально. Да и то же самое удобнее - было делать на PHP, обмазовшись шаблонизаторами или даже не обмазываясь. А JS - в то время - был ну ооооооооооооооооооооооооооооооооооооооооооооооооооооооооч говно. Просто пиздец какое. Молод потому что. Но это не отменяет факта, что тогда он был говно.
Так вот. Годы шли, майки видели, что ASP - чет тоже говно. А вокруг - была тема с MVC штуками, все это себе тащили. Ну, майки тоже натянули на свой ASP - MVC, придумали там OWIN и прочую залупистику, нахуячили, значится слоев абстракции. Получилось опять говно, не не такое хуевое как изначальный ASP.
Но тут - умирает флеш и из-за этого - все ринулись прокчивать JS. И JS - взял, да и перестал быть говном. А тут - еще и мода на мобилки же - соответственно - нужно чтобы сайты на моиблках работали, ну, и собственно - прокачка JS стала еще более жесткой. Появились миллиарды фрейморков, котторые почти сразу дохли.
Но не в этом дело.
Дело в том. Что та инфраструктура которую придумали для того чтобы свои MVC'шные штуки рисовать майки - оказалась довольно крутой. Тут тебе и фильтры запросов, и атрибуты для авторизации и охуенный роутинг и все-все-все. Проблема только в том, что изначально оно пилилось для MVC, а потому - приходилось делать уродливую хуйню, если тебе-то по сути - как раз нужно в ангуляр json'ы гонять.
Молили люди, просили, умоляли. И майки таки почесали репу - сделали еще одну абстракцию - выпилив необходимость делать уродливую хуйню, чтобы жсоны гонять. Назвали это ASP.Net API. По сути - это просто было сегрегирование от всей хуйни связанной с Vew в отдельный тип контроллеров.
Собственно - я тебе дал краткую историю. Теперь - ты не запутаешься.
Нужно начать с самого начала, няша.
Не буду слишком углубляться, так что начну с того что знать-понимать надо.
Смотри. Есть стек TCP/IP.
Что он делает. Он гарантирует, что если маршрут удасться найти за некоторое время - данные будут доставлены получателю без потерь и в том же порядке, в котором были отправлены. Это один из самых главных столпов на котором все стоит и потому он реализован практически везде. Т.о. ты, разрабатывая сетевое приложение с использованием данного стека протоколов - можешь не думать о том, как тебе пакетики пропихнуть в сетевуху и по проводам доставить до получателя, и получателю - не нужно думать о том, как ему собрать из каши байтиков что пришли - что-то полезное.
Так вот. Поверх этого стека - есть протокол HTTP. Это - протокол прикладного уровня. Он был придуман специально для пересылки гипертекста и работы веб-серверов. Данный протокол - позволяет довольно просто, хоть и не совсем оптимально - слать туды-сюды html, css, js и прочие картинки с членодевками, которые уже браузер распарсит и нарисует в виде какого-то элемента.
Так вот. Когда все это начиналось - быстро стало понятно, что делать миллионы страничек одинаковых - не вариант. Вот представь, у тебя тредик этот. Кто-то что-то запостил - нужно в создать копию документа и впендерить туды кусок текста который добавился, чтобы остальные люди, обновив страничку - увидели.
Так вот. Как ты понимаешь - начали люди репу чесать и придумывать, а как бы нам сделать так, чтобы не нужно было вот это вот делать. И появилось несколько решений. Решением от майков был такой вот монстр, как ASP(Active Server Pages). Это довольно мутная хрень была изначально. Да и то же самое удобнее - было делать на PHP, обмазовшись шаблонизаторами или даже не обмазываясь. А JS - в то время - был ну ооооооооооооооооооооооооооооооооооооооооооооооооооооооооч говно. Просто пиздец какое. Молод потому что. Но это не отменяет факта, что тогда он был говно.
Так вот. Годы шли, майки видели, что ASP - чет тоже говно. А вокруг - была тема с MVC штуками, все это себе тащили. Ну, майки тоже натянули на свой ASP - MVC, придумали там OWIN и прочую залупистику, нахуячили, значится слоев абстракции. Получилось опять говно, не не такое хуевое как изначальный ASP.
Но тут - умирает флеш и из-за этого - все ринулись прокчивать JS. И JS - взял, да и перестал быть говном. А тут - еще и мода на мобилки же - соответственно - нужно чтобы сайты на моиблках работали, ну, и собственно - прокачка JS стала еще более жесткой. Появились миллиарды фрейморков, котторые почти сразу дохли.
Но не в этом дело.
Дело в том. Что та инфраструктура которую придумали для того чтобы свои MVC'шные штуки рисовать майки - оказалась довольно крутой. Тут тебе и фильтры запросов, и атрибуты для авторизации и охуенный роутинг и все-все-все. Проблема только в том, что изначально оно пилилось для MVC, а потому - приходилось делать уродливую хуйню, если тебе-то по сути - как раз нужно в ангуляр json'ы гонять.
Молили люди, просили, умоляли. И майки таки почесали репу - сделали еще одну абстракцию - выпилив необходимость делать уродливую хуйню, чтобы жсоны гонять. Назвали это ASP.Net API. По сути - это просто было сегрегирование от всей хуйни связанной с Vew в отдельный тип контроллеров.
Собственно - я тебе дал краткую историю. Теперь - ты не запутаешься.
https://docs.microsoft.com/ru-ru/dotnet/api/microsoft.extensions.dependencyinjection.activatorutilities.createfactory
как же тяжко быть мультиязычным и вечно забывать что где у кого
GDI под прыщами не работает. Microsoft официально предлагает три стула https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only#recommended-action :
- https://github.com/dotnet/Microsoft.Maui.Graphics
- https://github.com/SixLabors/ImageSharp
- https://github.com/mono/SkiaSharp
Приложение будет написано с нуля и заковано в docker-контейнер, поэтому версия .Net абсолютно не важна. Какой из трёх стульев выбрать?
Сам склоняюсь в Мауи, как к официальному решению от самого Майкрософт. Нужен ли Мауи доступ к видеокарте (её не будет в доккер-контейнере, тем более на прыще-сервере без физической видухи) для обозначенных действий? Что с остальными двумя?
Мауи не работает под линукс. Возьми что-то другое
Почему ты не можешь как человек использовать ImageMagick?
Зачем тебе апи от майков?
Если нужно чтобы была веб-ручка - на go/питоне скрип один написал и дергай сколько хочешь.
Все это в докер.
> Почему ты не можешь как человек использовать ImageMagick?
Потому что в нём обнаружен критический недостаток.
> как человек использовать ImageMagick
Этот вариант также рассматривался. Однако странно писать код на Шарпе, а для работы с графикой дёргать отдельную приложуху
>Однако странно писать код на Шарпе, а для работы с графикой дёргать отдельную приложуху
Что тут странного?
Ну. Давай возьмем для примера ZABBIX. Они берут и без задней мысли SNMP.Net - дергают, веб-сервер на пыхе, опросник на сях, их собственный клиент - тоже на сях. Ничего. Как-то живут. Никто странным забикс не считает.
раз уж ты знаешь как устроен Заббикс, подскажи, как там работает JS-виртмашина для пост-обработчика данных вида JavaScript?
Когда я им интересовался настолько, что лез в исходники - меня больше интересовала их модель данных. Так что извини, тут не могу помочь.
ну объективно же кривота:
пишешь на языке с тысячей ассамблер
@
для работы с картинкой используешь отдельную приложуху
Пять секунд в нугете. В чём я неправ?
Благодарю, анон. А что там в этом view в mvc? Там какой-то аналог жса и его фреймворков, чтобы рисовать страницы? Или туда точно так же впендюривается жс фреймворк? Если второе, то в чем разница с API, куда точно так же впендюрен жс фреймворк?
У MS свой движок(сейчас их несколько), которые генерят странички.
Странички в конечном итоге - да, будут с JS, CSS, даже jQuery и прочее можешь туда напихать, но писать ты их будешь на как-бы шарпе, внутри инфраструктуры.
Типа в теории - тем кто хочет онли студией пользоваться - наверное и норм. Но я в свое время - попользовался, чет не возбудило.
Раньше связка .net+angular - форсилсяь. Мне нравилось. Сейчас - я стал старый и ленивый и мне больше нравится связка .net+vue.
1) Меня приняли работать за еду
2) Я смог написать условный двачик
Если есть какие-то планы, будьте добры, скиньте
Если ты действительно смог написать "двачик", с поддержкой вебем, админками, созданием досок, настройками и прочим - то тебя уже возьмут за еду. Чтобы пруфать - разверни на дешманском хостинге - и крепи ссылку к резюме.
Правильно я понимаю, что сейчас в основном юзают в большинстве случаев именно API? По вакансиям смотрю - MVC редко встречается, очень часто вижу какую-то REST архитектуру, а это вроде тоже API. В новомодных курсах (2021-2022 от Нила Каннингса) API используется и так далее.
Ты видать неправильно понял моё сообщение. Я поинтересовался, что мне нужно знать для условного двача
В новых и относительно недавних проектах, по моему опыту - да.
Для внтутренних нужд - могут вообще - вебформы вспомнить. Так что минимальное понимание того, как все это работает - в любом случае нужно.
>>43307
Я слышал, что вебформы — это лютый устаревший пиздец какой-то. Зачем страдать, если можно не? Есть же всякие Блейзоры например, тот же MVC.
> 2) Я смог написать условный двачик
Ну ты загнул. В первую очередь тебе надо знать архитектуру. И принципы кеширования
>они её и подкинули
Они на момент съёмки туда даже не входили, а снимал украинец.
>Я не твоя батя-членодевка.
Разумеется мой батя не говно и не членодевка, а вот ты - несомненно.
В нашем продукте, например, есть простенький интерфейс для админов на MVC, остальные общаются по апишке
Разве? Да и если честно не особо понимаю, как это реализовать в коде. На пике же стиль.
>Разве?
да. в мввм вм не должен знать про вид. он и не знает.
Вот если бы вьюмодель хранила бы высоту у себя или вообще знало про грид - было бы нарушение
а код-бихайнд это вид и там он может творить что угодно с собой.
По этой мапе нихуя толком не выучишь и не поймешь. Отдельные куски не имеют смысла без понимания, как оно все вместе работает и зачем.
640x360, 0:03
Мы вам перезвоним.
Что будет с райдером?
Кто юзал?
Дискасс.
Будет как и всегда
Купить подписку было невозможно еще после ухода визы и мк, так что все эти официальные уходы ничего не меняют. Можно сбрасывать триал с помощью новых ящиков, можно купить трехмесячный триал на все продукты, можно попросить купить работодателя.
Ты сам в скрипте настраиваешь ветку. Можно вообще не указывать, тогда скрипт будет для всех выполняться.
Двачаю этому.
trunk
>Они на момент съёмки туда даже не входили, а снимал украинец.
Пруф шо это украинец, а не подхуйловские буряты и дыровцы.
Или тебе хуйло по телеку в зацензоренной рашке так сказало, и ты сюда это сразу принёс, из своей грязной казармы, где ты сосёшь хуй дряблому мойору, за дозу бутирата?
>Разумеется мой батя не говно и не членодевка, а вот ты - несомненно.
Нет, ты.
Лучше не пизди а мультикаст ебучий мне давай, фикси. Мультикаст сам себя не зафиксит, его надо фиксить.
На, смотри про паттерны вот тут. https://www.youtube.com/watch?v=92k-3UItBoU&ab_channel=AndreyShyrokoriadov
Не будь так уверен.
>говорили, что после ее полного прочтения можно смело идти в джуны
Пиздят. Я недавно полностью ее прошел и до джуна еще как до пекина. Надо учить фреймворк (в моем случае асп), базы данных, паттерны, алгоритмы и структуры данных, подтягивать множество отдельных пробелов и недопонятых вещей. На русском аналогов не видел и их скорее всего нет. Но вроде как четвертое издание есть переведенное, попробуй поискать. Книжка в целом хорошая, задания прикольные, но местами объяснения хромают. Я например нихуя не понял про делегаты, эвенты и асинхронку, хотя перечитывал эти темы несколько раз.
Красноглазище...
> Он же винда-онли
Ты уверен в этом?
> К тому же, майки отсюда валят.
Оракл ещё раньше свалил и забрал лучшую СУБД всех времён и народов. Остался только постгрес и всякие ноунеймы типа nosql.
>Ты уверен в этом?
Так написано на сайте майков и в гугле. Так прямым текстом и написано: "Windows-only".
>Остался только постгрес
Он вроде как годный и довольно шустрый. И точно дает хоть какую-то безопасность.
Такая себе гитарка, своеобразная, мне не очень заходит. А к SQL Server это как относится?
> гитарка
Хуярка.
Пять секунд в нугете https://www.nuget.org/packages/EntityFramework.Firebird
Дальше сам.
Идиотина патлатая, блять.
> Странно, что есть поддержка бубунты, но нет очевидного дебиана
Можно и на дебиан. Да кому это всё нужно, если есть поддержка докера, который хоть на Gentoo ставь.
внезапно хорошая база, просто в рекламу не умеют
не усложняй.
если не остается внешних ссылок (и оно не в исполнении) - то кандидат на сбор. Циклические ссылки значения не имеют.
Там какая-то хуйня с LocalPeerDiscovery:
https://github.com/username1565/CSharpServers/blob/1663b16e9d8dc3292fb427df94f59db66b1e843f/Peer.cs#L142-L149
Тут: https://github.com/username1565/CSharpServers/commit/1663b16e9d8dc3292fb427df94f59db66b1e843f#commitcomment-81891501
я написал, что что-то с мультикастом.
Короче,
думал сделать TCP-UDP-Multicast сервер и всё на одном IP-порту,
но когда биндишь мультикаст-receiver на 0.0.0.0 (IPAddress.Any)
он начинает прослушивать все айпишники на всех сетевых интерфейсах.
Получается, когда приходит мультикаст-запрос, с каждого IP, пиздуют ответы, и их много, и их надо обработать все.
поэтому, хуй знает, как лучше сделать.
Походу TCP/UDP сервер - на одном порту,
а Multicast-server (receiver) - на другом порту,
и отдельным методом мультикаст-запросы отправлять на него.
Но это не точно.
>Я например нихуя не понял про делегаты, эвенты и асинхронку, хотя перечитывал эти темы несколько раз
Двачую, я сам жабист, решил ради интереса механизм async-await в шарпе изучить по этой книге, но кишочков не обнаружил, увы. Все как-то поверхностно.
>>43832
>можно смело идти в джуны
Нет, вот этот все верно говорит >>43997
А еще шарписты как правило фуллстеки, так что и js возможно придется учить.
>это просто маркетинговая заглушка, мол, у нас есть типа машинное обучение
this
Весь машоб/анализ данных это всегда Python, иногда R, и С++ для какого-нибудь компьютерного зрения.
Сишарп, джава, го, раст для этих целей никак не используются.
Я верно понимаю, что докер - это такая микро-виртуалка с установленной осью и всеми нужными зависимостями, которая может крутиться хоть в любой оси, хоть на хую?
Не совсем виртуалка, но смысл такой.
они никогда не будут меняться, но я буду потом их использовать на других коллекциях через что-то вроде .Except(200string).
как лучше поступить?
все string в один массив?
можно ли как-то хешировать это?
> всегда ставите { }
да
> для циклов?
Тоже да. Без вариантов. Нотация без скобок вообще должна быть запрещена
Доккер это система виртуальных контейнеров, где контейнер запускается из коллекции изображений, настаканных друг на друга как блины. Каждое изображение является расширением какого-то другого (кроме самого базового). В изображении хранятся файлы, скопированные в него единожды при сборке изображения. А также настройки какую программу и как стартовать в контейнере.
Ты можешь взять любое изображение и расширить его, добавляя новый блин поверх этого. Вот как выглядит типовой скрипт сборки (Dockerfile) от Майкрософт
https://docs.microsoft.com/en-us/dotnet/core/docker/build-container?tabs=windows#create-the-dockerfile
HashSet<string> если уникальные значения, они хэшируются и дохера методов для сравнения по значению и с другими коллекциями.
Хз, впрочем, на экспертизу не претендую - сам вкатываюсь из джавы.
я бы лучше как ICollection<string> обозначил. У тебя уже готовая коллекция в памяти, а не просто поток из айтемов
Юзай static класс с const. Это нормальная практика когда у тебя супер дохуя стринговых констант в приложении.
Что за профиль пользователя? Олсо, какой програм файлес, если я на линуксе? Я просто хотел понять, вот открою я свой проект на другом компе - мне надо будет снова ставить все нюгеты для него?
>Олсо, какой програм файлес, если я на линуксе?
у меня тот же вопрос - нахера делать эту вторую папку если есть уже в профиле.
ну а так - придется конечно. А вот ты клонишь проекты с гитхаба, там же никаких либ нет, только код, а студия сама все ставит.
Так и тут будет
У меня в бейсике нижний прочерк иногда игнорируется, типа
MySpanWrapper и _MySpanWrapper может посчитать одним и тем же, хотя нет никаких правил, чтобы так считать.
А в шарпе распознает Async. В общем, студия читает все твои названия, и чем выше версия, тем больше студия сует туда нос. Особенно я это заметил как раз в шарпе.
ЖС можно не знать.
А вот ЦСС И ХТМЛ тебе конечно надо знать. Чтобы делать сайты на любом языке тебе нужны ХТМЛ и ЦСС
Вот в жабе есть никому не нужные Vaadin и GWT, там аебхуйня пишется полностью на жабе, потом из этого генерируются HTML/CSS/JS (хотя на них тоже можно писать в дополнение к жабе). Разве блазор не умеет так?
Поясните за DateTime и DateTimeOffset (и NodaTime) в контексте Npgsql 6 и постгресовских timestamp и timestampz.
Как сделать чтобы заебись было и писалось/забиралось то время которое пришло?
При автоматическом билде всегда производится рестор - дотнет скачивает все пакеты и находит локальные зависимости.
Можно при желании делать рестор ручками - dotnet restore
Ну в VBA нижнее подчеркивание перед переменными, классами, функциями нельзя писать.
А ещё он не различает большие и маленькие буквы.
Чо гугл доки, шиз? Если надо часто заменять в указанной таблице в документе 50 фраз на 50 других фраз, в гугл доках ты будешь это проделывать вручную, а в офисе можешь за полчаса высрать макрос и забыть. Любая Зина из бухгалтерии тебя нахуй пошлёт за попытку впарить ей ущербнве гугл доки, к которым даже нет доступа из внутренней корпоративной сети, где нет интернета.
У них вообще разные назначения. Конструктор вызывается при создании объекта. Свойства нужны для чтения или записи значения поля. При этом, в свойствах можно разместить дополнительную логику.
Это философия ООП, гугли "инкапсуляция".
Впрочем, я уже почти 2 года как вкатываюсь и до сих пор до конца не понимаю нахуя она нужна.
Дотнет - это сам себе фреймворк. И от тебя хотят либо знание древнего проприетарного дотнета 4.8, либо современного дотнет кора или 5/6.
> Это философия ООП, гугли "инкапсуляция".
Вообще мимо
> для чего нужны гетеры и сетеры?
Несколько назначений:
1. Для пре- и пост-обработки данных, которые ты втыкаешь в филды
2. Для создания виртуальных полей с авто-калькулируемыми данными. Например, у тебя есть сущность пользак, у него есть реальный филд "дата рождения", а в своём филде public int Age {get;} ты можешь калькулировать автоматом его возраст. Это реально удобно
only setter properties кстати не нужны, пишите методы.
90% современного шарпа есть синтаксический сахар. Начиная от switch и заканчивая async
А меня интересует как должны выглядеть именно хорошо написанные тесты круд операций, к примеру что метод Create должен создать только 1 запись в бд и не затронуть другие и тд. Помогите, дайте каких-нибудь ссылок.
Польза геттеров сеттеров очевиднее чем 2*2=4
Не знаю как в шарпе, но скорее всего это реализовано примерно так же как в джаве.
В джаве в памяти есть стринг пул, и если в переменных хранится одинаковая не сильно длинная строка, то он указатели обоих переменных на нее выставляет.
потому что у строки перегружен оператор == который сравнивает по значению
а видео бредовое. == не сравнивает по ссылке. это у object реализация такая сравнения.
а в конкретном типе он может быть перегружен как душе угодно
интересно как автор видео пояснит это
internal class Foo
{
public static bool operator ==(Foo a, Foo b) => false;
public static bool operator !=(Foo a, Foo b) => false;
}
var foo = new Foo();
Console.WriteLine($"{foo==foo}");
>false
Я чёт совсем забыл, что модно переопределять операторы сложения/вычитания/сравнения
Допустим, будем придумывать облачную систему менеджмента ресурсов.
Под ресурсами понимаем - любую хуйню, которую можно как-то измерить.
Так вот. Допустим мы не знаем какую хуйню мы можем измерить. Но мы уже знаем, что нужно будет графики красивые строить, нужно оповещения о том что что-то привысило лимит, либо подходит к нему, нужно чтобы некоторые действия происходили при определенных условиях.
Ну, допустим кейс: мы измеряем количество топлива в самолете, и если количество топлива приближается к границе - отправляется уведомление диспетчеру, чтобы тот 1. Предупредил пилота, 2. Уже готовил команду для дозаправки.
Или другой кейс - при приближении к нижнему порогу количества чернил в принтере - уже состовляется заявка на замену картриджа, и в момент исчерпания реусрса картриджа - уже бежит эникей заменять.
Так вот. Какие сущности вижу я:
1. Нам нужна некая система именно что измерений. Тип измерения - абстрактный, содержит в себе только имя, и опционально - описывает метод проверки на нуль и сравнения значений. Сами измерения представляют из себя сущность вида: Метка времени, тип измерения, значение.
2. Нам нужна некая система профилей измерений для разных сущностей. Некое описание объекта, через его измерения.
3. Нам нужен канал получения данных. Это может быть некий протокол сетевой, может быть ручной ввод, может быть рассчитанное значение. Все это должны быть каналы получения данных. Данные отсюда - не знают что они такое.
4. Именно поэтому нам нужен некий интерпритатор/форматтер, который полученные данные из канала - преобразует к измерению.
5. Дальше - нам нужна некая система триггеров и пороговых значений. Ну, тут все просто. Имеем профиль, а дальше дело техники.
6. Нужна некая система действий. Простейший вид - действия определены заранее(отправить сообщение, воспроизвести звуковой сигнал). Чуть более сложный - действия можно комбинировать. Совсем сложный - пользователь может сам создавать действия на основе некоего графического языка программирования.
Вот так я это вижу.
А как бы вы такое спроектировали, шарпаны?
Допустим, будем придумывать облачную систему менеджмента ресурсов.
Под ресурсами понимаем - любую хуйню, которую можно как-то измерить.
Так вот. Допустим мы не знаем какую хуйню мы можем измерить. Но мы уже знаем, что нужно будет графики красивые строить, нужно оповещения о том что что-то привысило лимит, либо подходит к нему, нужно чтобы некоторые действия происходили при определенных условиях.
Ну, допустим кейс: мы измеряем количество топлива в самолете, и если количество топлива приближается к границе - отправляется уведомление диспетчеру, чтобы тот 1. Предупредил пилота, 2. Уже готовил команду для дозаправки.
Или другой кейс - при приближении к нижнему порогу количества чернил в принтере - уже состовляется заявка на замену картриджа, и в момент исчерпания реусрса картриджа - уже бежит эникей заменять.
Так вот. Какие сущности вижу я:
1. Нам нужна некая система именно что измерений. Тип измерения - абстрактный, содержит в себе только имя, и опционально - описывает метод проверки на нуль и сравнения значений. Сами измерения представляют из себя сущность вида: Метка времени, тип измерения, значение.
2. Нам нужна некая система профилей измерений для разных сущностей. Некое описание объекта, через его измерения.
3. Нам нужен канал получения данных. Это может быть некий протокол сетевой, может быть ручной ввод, может быть рассчитанное значение. Все это должны быть каналы получения данных. Данные отсюда - не знают что они такое.
4. Именно поэтому нам нужен некий интерпритатор/форматтер, который полученные данные из канала - преобразует к измерению.
5. Дальше - нам нужна некая система триггеров и пороговых значений. Ну, тут все просто. Имеем профиль, а дальше дело техники.
6. Нужна некая система действий. Простейший вид - действия определены заранее(отправить сообщение, воспроизвести звуковой сигнал). Чуть более сложный - действия можно комбинировать. Совсем сложный - пользователь может сам создавать действия на основе некоего графического языка программирования.
Вот так я это вижу.
А как бы вы такое спроектировали, шарпаны?
А тут случаем никто не знает, как на Дебиан поставить? Я попробовал по инструкции с сайта майков на Убунту, но оно пишет, что нету у них пакетов для дебиана. Докер пока не, мне бы просто экспресс пока поставить для тренировок sql и ef, с докером тут наверное сложности возникнут.
Где-то были инструкции от индусов, как ставить именно на дебиан.
ПЕРЕКАТ >>2443253 (OP) (OP)
ПЕРЕКАТ >>2443253 (OP) (OP)
ПЕРЕКАТ >>2443253 (OP) (OP)
Ебаная моча, ты хули тред не закрепишь?
Репорт.
ну разве что слепошарому. скобки раздувают код, что меньше влазит на экран.
Плохо читается if () ... на одной строке если это не проверка предусловий, а в остальном если это один уровень вложенности и нет кучи условий, то скобки нахер не нужны.
>кмк
Кабельные металлические конструкции
Казанский медицинский колледж
Крымский многопрофильный колледж
тупое зумерье детектед
Слово не становится сленгом, если его стали использовать 1,5 зумера.
Это копия, сохраненная 27 октября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.