3. WinForms или WPF? Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае с WinForms делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить? Неправда. C# активно развивается, недавно вышел .NET 5 и С# 9.0. Дотнет стал полностью опенсорсным и кроссплатформенным. В том же энтерпрайзе он очень даже востребован.
5. Какую IDE выбрать? Для Windows самым очевидным вариантом будет Visual Studio ( https://visualstudio.microsoft.com/ru/downloads/ ). Бесплатной Community-версии более, чем достаточно для большинства задач. Также есть версия для macOS. Кроссплатформенный полуредактор/полуIDE VS Code ( https://code.visualstudio.com/ ). Кроссплатформенный IDE Rider ( https://www.jetbrains.com/rider/ ). Также существуют C#-плагины для Atom и Sublime Text, но функциональность там достаточно сильно урезана.
7. Что почитать? — The C# Player's Guide, третье издание (RB Whitaker) — отличная книга для ньюфагов, всё расписывается довольно подробно, очень много примеров кода. — C# 9 and .NET 5 – Modern Cross-Platform Development (Mark Price) — подойдёт для ознакомления с платформой. Затрагивает все технологии, имеющиеся в .NET (веб, мобильная разработка, машинное обучение), ни во что не углубляясь. — C# 8.0 in a Nutshell (Joseph Albahari и Eric Johannsen) — огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином. — C# 8.0 Pocket Reference (Joseph Albahari и Ben Albahari) — просто выжимка из книги сверху, можно всегда держать рукой. — Pro C# 8 with .NET Core 3 (Andrew Troelsen) — 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
8. Более хардкорный материал — CLR via C# (Jeffrey Richter) — это классика, это знать надо. — C# in Depth (Jon Skeet) — написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются. — Writing High Performance .NET Code (Ben Watson) — отличная книга. Фокусируется на методах оптимизации приложений, профилировании. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче всё, что нужно, чтобы вам перезвонили.
9. Литература по WPF — Pro WPF 4.5 in C# (Matthew MacDonald) — Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
10. Литература по ASP.NET — Pro ASP.NET Core 3 (Adam Freeman) — Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)
11. Литература по асинхронности и параллелизму — Concurrency in C# Cookbook (Stephen Cleary) — книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции. — Multithreading with C# Cookbook (Eugene Agafonov) — в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная. — Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) — опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg.
12. Литература по мобильной разработке — Creating Mobile Apps with Xamarin.Forms (Charles Petzold) — Xamarin.Forms Projects (Johan Karlsson, Daniel Hindrikes) — Mastering Xamarin.Forms (Ed Snider)
13. Литература по машинному обучению — Introduction to Neural Networks for C# (Jeff Heaton) — изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов. — Machine Learning Using C# Succinctly (James D. McCaffrey) — довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
14. Разработка игр Unity-тред в /gd/
15. Но я не знаю английский, как я буду это все читать? На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако зачастую эти переводы неактуальны и/или содержат неточности. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в программировании без знания английского делать нечего. Если очень хочется, то гуглить по запросам: "C# 7.0. Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#".
16. Что еще нужно знать, чтобы взяли работать за еду? — Базы данных — подойдет любая книга по MSSQL/MySQL/PostgreSQL. DDL, DML. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper. — Системы контроля версий — обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote, diff, разрешение конфликтов. — GitHub — issues, пулл-реквесты, теги, релизы, Actions. — Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках. — Структуры данных — связанные списки, деревья (бинарные, красно-чёрные, b-деревья), хеш-таблицы, графы. — Если идти в веб — HTML, CSS, JavaScript, веб-сокеты, REST, JS-фреймворки (Angular, React, Vue). — Паттерны проектирования, стиль кода, архитектура приложения, внедрение зависимостей, MVVM (если хочется в WPF), SOLID.
>>2167148 Зачем тебе вообще понадобился EF, когда есть ADO.NET, Dapper и linq2db? EF - это было в 2к10 прикольно, модно и молодёжно, сегодня - это убогая ПАРАША.
>>2167204 >ADO.NET Ты сам параша. >Dapper Ну хуй знает, ЕФ на минималках. Кококо перфоманс сравним с качественно приготовленным ЕФ. >linq2db И в чем профит? хотя кокрастоке мерж там есть
Сейчас модно гнать на ЕФ, но обычно это делают дурачки, которые обосрались с ним по неопытности, так же само обосрались бы и с другим.
Есть тут кто, кто пилит свое опенсурс поделие на гитхаюе/лабе? Что бы можно было пулреквестики поотсылать fix typo, а то к серьезным ребятам подходить страшно, а вот какой нибудь телеграм-бот погоды или двач-ридер в самый раз.
Так уж случилось, что и я вступил и измазался в EF. И у меня от этого встал... вопрос. Если я делаю так: using var trans = context.Database.BeginTransaction(); //что-то, что вызовет SaveChanges // еще что-то, что вызовет SaveChanges try{ ...trans.Commit() } catch(FooException ex) {} catch(BarException ex) {} catch(FooBarException ex) {}
>>2165540 (OP) Ребят ,я студент ,закончил внешние курсы в епаме на внутренних курсах послали нахуй абсолютно всех студентов , не проводя собеседования. Хочу вкатиться джуном за еду,но везде требуют "Знание основ ASP.CORE" . Сама кора достаточная обширная, часто слышал ,что новичку будет трудно с ней разобраться . Какие области коры чаще всего запрашивают работодатели с джуна ? Всем спасибо
>>2167855 >Сама кора достаточная обширная Никто не спрашивает какую-то конкретную хрень из кора. Максимум поебут мозги вопросом IEnumerable vs IQueryable.
>что новичку будет трудно с ней разобраться Нет.
>Знание основ ASP.CORE Core и ASP.NET Core - разные вещи.
>>2168411 Хз, пару лет. Мне кажется, достаточно запилить пет проект за пару месяцев, где используется вся та фигня, чтобы иметь хотя б общее представление.
>>2167801 >что и я вступил и измазался в EF Ну не вступай, не обмазывайся, умник. Делай все тоже самое с дапером/адо или ебись в жопу с хранимками, где ты вообще к ошибкам С# кода доступа не имеешь.
Вообще, если ты хочешь только ДБ ексепшены обрабатывать - выноси свое говно в юнит оф ворк и там это обрабатывай. Если ошибки бизнесслогики - ну тогда уже ебись по месту.
>>2168140 Что такое эта наноборда? Типа аппа, которая в кортинки на других бордах свою инфу добаляет и потом считывает и строит вам свою юорду? Это вообще работает? Как она определяет с каких постов данные брать?
>>2168443 РНР-блядь, учись мягким скилам. Понятно, что ты на РНР себе только хомпйджи делал и то криво в одно рыло, но шарфикогоспода работают в команде и обоссут тебя. Начальный пись ты уже получил. Так что тебе надо еще-то?
>>2168448 Хорош косплеить цыганку. Ты вообще пальцем в небо. Не знаешь ровным счетом ничего про мой бэкграунд, а уже с напыщенным видом с ЧСВ до небес кудахчешь: ТЫ НИ МОЖЕШЬ ТО, ТЫ НИМОЖИШЬ СЁ. Ты какой-то ебанутый. Либо озлобленный вкатыш, либо анальник, сидящий на зарплате среднего класса в 17к, потому что другого объяснения я не вижу. Все мои успешные коллеги себя так не ведут, наоборот все довольно доброжелательны и пояснят что угодно из мира кодинга просто и понятно, без выебонов.
>>2168544 Использованияе токсичных напыщенных словечек "средний класс", "вкатывальщик" как будто что-то плохое. Галюцинации и слова в голове, которых никто не говорил: "ни можишь" и т.д.. Стресс тест завален. Вам перзвонят с психушки Второй пись на прощание- вам.
>>2167855 Меня по asp.net спрашивали про dependency injection. Правда конкретно к asp.net это отношение не очень имеет и я собеседовался на мидла, но тем не менее
Бля посоны дапамажите. Чета туплю пздц. Вот у меня есть List классов в котором есть List классов в котором есть поля. Вот мне надо взять List второго уровня. Вот первый главный класс
public class Root { public List<Line> lines { get; set; }
} Вот второй
public class Line {
// // public string name { get; set; } // //
}
Все все это дело лежит в List<Root> AllItems = new List<Root>();
Как мне взять Line по имени фирсОфДефаульт? Это LINQ но я чета туплю Помогите плэззз.
>>2167855 Новичку нужно просто знать что был фреймворк и сейчас он как-бы для легаси, а все новые проекты - на коре. Этого достаточно. Лично я бы джуна погонял по докеру и линуксам, по архитектуре(ну, банально: спроектируй фейсбук или промышленную систему отслеживания аварий на производстве в близком к реальному времени), по алгоритмам, ну, это естественно если он нормально на базовые вещи ответил бы про ООП, солид, DI, многопоточку, асинхронщину, SQL, n+1; очереди, планировщики; да, про фронтенд еще неплохо бы спросить, ну, хотя бы что-то из большой тройки плюс ванила(на уровне понимает ли джун что там фреймворк за него делает или считает это магией), умение пользоваться вебпаком, препроцессоры, да, еще про тестирование: как, чем, зачем, TDD, ну и естественно системы контроля версий, как будет с конфилктами бороться, умеет ли ветки сливать нормально и т.д. Но это все если у тебя рост меньше 190см и тело не подкачанное, в этом случае - просто спросил бы: нравится офис?
Мне надо использовать кое-какие классы в другой класс лайбрари. Добавлять как референс не могу. Это нормально будет кк-то скопипастить их через Include или типа того? Допустим, я более-менее уверен, что эти классы не получат внешних зависимостей и в месте копипаста не отвалятся.
>>2168625 По АСП еще спрашиват пайплайны, екшнфилтры, отличие и т.д. "Пользователь нажал ссылку в броузере, што праизойдет?". Могут еще моделбайндеры спросить. "Как оптимизировать сайт )))" РЕСТ, опенАпи (свагеры), вебсокеты.
Ну и куда ж без диспоз/финалайз, заебали, я уже выучил эту хуйню. Иногда даже интерфес вс абстрактный класс проскальтзывает, с новый шарфиком стало сложнее отвечать лол.
>>2168702 Да не троллю я. > архитектура Таки вопросы просто показывают насколько человеку это ваше программирование интересно само по себе. Отвечать на них как на экзамене - нет необходимости. Просто показать как бы ты решал задачу, показать способность анализировать, предлагать решения и УТОЧНЯТЬ ВХОДНЫЕ ДАННЫЕ, а не сесть как аутист и сидеть пытаться что-то высрать из пустой башки.
> докер и линукс не для дотнета Алло, блядь, деда. Ауууу. В чем ты-то собрался запускать? В азуре? Ну охуеть, может еще интерпрайз MS SQL - использовать предложишь?
>>2168688 Ну не с людьми торговать. А в лиге новой покупать у мудака предметы, валюта карты, осколки. Там выхи и зеркало может прокнуть. А торговый бот это ну в пизду, это в память игры нужно лезть за сообщениями а я хуй знает ваще как это сделать.
>>2168761 > Да. В чем проблема-то? Даже не знаю. Может быть в том что любой бизнес тебя с такими ценами на новом, еще не приносящем прибыль проекте, пошлет нахуй?
>>2168762 Ну она не новая) Просто я только сейчас соизволил его сделать. экспедиция же. Ну эмуляция нажатия кнопок, контрл+ц считываю что продает, чекаю выгодная ли цена, потом вбиваю цену, пытаюсь купить, смотрю по цвету пикселя купил или нет, если не купил то прибавляю больше. Также по цвету пикселя определяю за какую валюту я покупаю.
Вот мне в моей программе нужно хранить файлы сканов документов клиентов и операции с ними: - добавлять/удалять файлы - переименовывать и возможно добавлять примечания Все это ясен пень внутри самой программы, а не лазить по папкам (пользователи вообще не должны иметь такой возможности - об этом ниже)
Конечно самый простой способ - тупо хранить их вот так как есть на сервере, и работать с файлами напрямую. Но это хуита - это как бы конфиденциальные данные и класть их так открыто где-то на сервере, чтобы кто-нибудь из увольняющихся сотрудников их слил в даркнеты...
В легаси наследстве от предыдущих поколений программистов файлы запаковывались в запароленные архивы, но: - с ними было капец как неудобно работать (добавлять, удалять файлы - под это была своя прога, но она постоянно на пустом месте роняется, операторам не нравится) - архивы можно взломать - в интернете полно прог снимающих пароли с архивов
Но в 1С я видел что оно режет файлы на какие-то куски - то есть как я понимаю берется файл, и распидораживается на кучу кусков. А вот сама прога знает как это все собрать и этим всем управлять.
Так вот - есть что нагуглить по такой теме? наверняка же есть какие-то готовые решения. Просто такое велосипедить я не осилю. А работаю я один (у меня задача - старое ныне не работающее легаси переписать с нуля)
>>2168838 Да банально берешь какой-то sha1 от файла и используешь в качестве имени, поверху хуяришь какой-то AES. В плане контейнера - ну зип без компрессии.
Памагити. Нужно написать функцию, которая из строки вытаскивает числа, регулярки при этом использовать нельзя. Сам пока додумался только до вот этого https://pastebin.com/Yf0cr22z
>>2168986 Ты нагуглил какую-то дичь aaa123bb4b -> 1234 В моем понимание должно быть aaa123bb4b -> [123, 4] Ну и если ему регулярки запрещено использовать, то и линк не положен.
>>2169005 Твой тоже. И ты про вские Е и т.д. забыл. Если похую на перфоманс и нужен 100% результат со всякими изьебствами - бегай по строке и IsNumeric /Double.TryParse ебай
Но твой пердун преподаватель просто ожидает от тебя решение как ты и написал, только нахуя ты там какие-то старт-енд юзаешь, сабстринги? ПРОСТО, если чар подходит к условию - ложи его в массив и потом парсь. Можешь IsNumeric/TryParse вместо своего ренжа еще юзать
>>2169083 Нахрена гуглить, если написать быстрее. >Твой тоже. Моего кода тут нет. >пук А хер знает что ты там сказать пытаешься. Но твой код говно даже не делает что должен.
Вопрос. Смотрите. Допустим я делаю видеоплеер. Допустим я такой умный и решил выделить ЯДРО, ядро инициализирует основные финкции приложения, такие как гуй, обработка нажатий, имеет ряд событий и т.д. Так вот, все остальное я решил делать через отдельные сборки и назвал их ПЛАГИНАМИ. Каждый плагин реализует интерфейс: IPlugin у котрого есть метод void Plug(Core core), void Start(), void Stop(). При запуске приложения я подгружаю из папочки Plugins дллки и достаю все классы имплементирующий IPlugin, вызываю метод plug. Так вот. Теперь я хочу чтобы можно было закинуть новую длл в папочку во время исполнения приложения и он бы подтянулся. Как мне это сделать?
>>2169792 >На С# как быть? Реализовать плюс/минус похожее. Нет никакого общего решения, зависит от конкретного случая. В ASP.NET MVC это например ModelState.
>Лучше уж ексепшн пиздануть, не? Твои исключения - говнокод. Замерь производительность аллокации объекта против бросания исключения. Дык, ты еще ляпнул, что у тебя бл исключениями пронизана. Если тебе надо показать две и больше ошибок валидации, ты два исключения бросаешь? Или что ты наговнокодил?
>>2169805 Ну какой еще моделстейт. Я за бизнесс логику говорю. Тоесть таки типа резалт обжекта? Что-то я нигде такого не видел в либах, все кидают ексепшн и не парятся. На производительность похуй, хватит эту мантру повторять. "Две и больше" - агрегейт ексепшн.
>>2169822 >Что-то я нигде такого не видел в либах Мой пример - не пример, ага.
>все кидают ексепшн и не парятся >На производительность похуй, хватит эту мантру повторять. У такого кода не только проблема с производительностью. Мне изначально поебать, что у тебя в коде происходит, не еби потом мозг другим своими вопросами тогда про красоту. Еще разберись, что такое бизнес логика и какое отношение она имеет к валидации.
>>2169651 >Невалидные данные по бизнесс требованиям это исключительная ситуация? А можно пример? А то напрашивается очевидный ответ - если метод может обработать данные, то это не исключительная ситуация, если не может, то исключительная, и по принципу самурая чем раньше выкинет эксепшн тем лучше. Приход плохих данных от пользователя/из вне это не исключительная ситуация, это обычное дело и программа должна это обрабатывать в обычном режиме (валидировать данные перед прокидыванием их в БЛ).
Ну вот пришел тебе запрос достать юзера. Не важно как с фронта вообще или по велению нибирианца. Ты в либе точно видишь - данные хреновые. Ид кривая или вообще нулл, не важно. Что делать? Вот чел выше, если я его правильно понял, советует вместо Юзера возвращать что-то типа Result<User>, где будет стейт операции. Может оно и правильно, но мне теперь во всех методах выше нужно будет проверять этот стейт, допустим метод вызывается не напрямую, а через кешировалку или мапилку. Когда же с ексепшеном - пизданул и забыл "выше, кому интересно, разберутся, кому нет - не законсюмят дальше".
>>2170014 Какой нахуй модел стейт, не слушайте того долбаеба из 2015-го.
Но, то, что он сказал, что лучше стараться не выкидывать исключения везде - правильно.
Где можно в API - из контроллера сразу возвращаться, через NotFound, BadRequest или через кастомный wrapper для респонсов.
Если валидация происходит в специальных стандартизированных методах типо Validate(), например у моделей методы прописаны через интерфейс, то можно оттуда возвращать опять же wrapped validation result и контроллер затем его обрабатывает и возвращает ответ.
В случае же когда валидация происходит под тремя слоями энтерпрайзной логики, которая проверяется уже хуй знает где - то да, там будут исключения и их ловить через общий try/catch, а не локальный в методе.
>>2170014 >возвращать что-то типа Result<User> Если not found - то возвращаешь NotFound("User not found"), а никакой не Result<User> и не ебешь себе мозг, фронт проверяет пусть статус кода и отображает свою свистоперделку.
>>2170027 >Какой нахуй модел стейт, не слушайте того долбаеба из 2015-го. То был пример. Меня любое решение не устраивает. Начиная от out параметров и заканчивая возвращением Result/bool.
>Если валидация происходит в специальных стандартизированных методах типо Validate(), например у моделей методы прописаны через интерфейс Это решение тоже хуевое, поскольку нарушает принцип единственной ответственности.
>>2170027 >В случае же когда валидация происходит под тремя слоями энтерпрайзной логики, которая проверяется уже хуй знает где - то да, там будут исключения и их ловить через общий try/catch, а не локальный в методе. Ну вот, допустим, такой сценарий, только мы создаем это с нуля.
Опять же, забудем о слоях выше, да-да, должно на презентейшене валидироваться и т.д а можно глобальный екшен фильтр на кастомные ексепшн и похуй где он высран. Но ведь и на БЛ должно же, так? Вот этот случай расматриваем. БЛ нихуя не знает что там выше и не должен.
Так финальный ответ? Метод в библиотетеке, допyстим UserManager.GetUser(UserId id) при невалидном UserId что должен возвращать/делать? Метод в библиотетеке, допyстим UserManager.CreateUser(User id) при невалидном User что должен возвращать/делать?
>>2170032 Да десять раз уже повторил, что мы не говрим о презентейшн/консюмер слоях. Мы либу нахуй пишем. Уровень бизнесс логики, которому похуя откуда вызываться.
>>2170037 Например, луковая архитектура. Переворачиваешь свой код наизнанку таким образом, чтобы у нее не было зависимостей типа коннекшена к базе данных. На доменном уровне только бизнес логика, инфраструктура сбоку.
>>2170040 К чему ты это высрал? Да, у БЛ не будет доступа к конекшенам, только к репам. И что? Как это твечает на вопрос, бросать ексепшены или Result<User>/out param? И на вопрос, нужна ли валидацтия в БЛ слое?
>>2170033 >Это решение тоже хуевое, поскольку нарушает принцип единственной ответственности. Хуевый только ты, речь про исключения, возврат ошибок и их обработку, а ты доебуешься ко всякой мелочи.
Замени Validate() у моделей на отдельный слой валидирования или другое - суть одна и та же, что сказать-то хотел?
>>2170041 Это отвечает на вопрос, что ты долбоеб, который пихает валидацию в бизнес слой. Если ты пишешь либу, то ты кидаешь исключение и возвращаешь результат операции.
>>2170014 >Ну вот пришел тебе запрос достать юзера. >Что делать? Зависит. Если логика доспукает, что можно запросить несуществующего юзера, то возваращать или null или Result.NotFound. По хорошему вышестоящий слой должен сначала проверить есть ли юзер а потом совершать операции над ним. Но из-за того, что запросы в бд дорогие, то сие действо часто объеденяют в одну операцию. >во всех методах выше нужно будет проверять этот стейт >Когда же с ексепшеном - пизданул и забыл Не-не-не. Тебе в любом случае проверять или тип эксепшена или тип резалта. Главное запомни - эксепшн это когда что-то пошло по пизде. Строить нормальный поток выполнения приложения на эксепшенах это трэш.
>>2170035 Метод в библиотетеке, допyстим UserManager.GetUser(UserId id) при невалидном UserId что должен возвращать/делать? Смотря как он спроектирован. Скорее всего исключение, но если Get там подразумевает поиск, а не просто доставание, то исключений быть не должно. >CreateUser(User id) при невалидном User что должен возвращать/делать? Опять же зависит. Если с точки зрения логики это нормально, что юзер может не создаться (например имя занято), то никаких эксепшенов, если отвалилась база - то эксепшн.
>>2170057 >Я очень смутно себе представляю как ты переиспользуешь БЛ. Метод UserManager.GetUser(UserId id) дергается и с веб апы одной, и с другой, и с воркера, и с аллаха. Доверять им нельзя. >Не мешать все в кучу. Так у тебя, судя по всему, кокрастоке намешано. Это ответсвенность БЛ запрашивать сохранение данных. Через репы.
>>2170062 Но проверять в одном месте (на презентейшене, например), а не во всей цепочке.
>>2170063 >что юзер может не создаться (например имя занято), то никаких эксепшенов Да. Вот тут вопрос. Если не ексепшн, то что тогда? Result<User>/out param? А почему (перфоманс опускаем)?
>>2170075 >Result<User>/out param? out для tryXXX паттерна, но учитывай, что результат будет да/нет и аут не работает в асинхронщине. Result для асинхронного или если вариантов завершения несколько. >Но проверять в одном месте (на презентейшене, например), а не во всей цепочке. Если ты проверяешь по всей цепочке, то ты где-то свернул не туда. Данные слишком далеко от места, где они нужны. Получай их там где известно что делать с результатом.
>>2170075 >Метод UserManager.GetUser(UserId id) дергается и с веб апы одной, и с другой, и с воркера, и с аллаха. Доверять им нельзя. Если что-то не так, кидаешь исключение. UserManager - god object, про это говорит твой суффикс Manager.
>Это ответсвенность БЛ запрашивать сохранение данных. Потом у тебя тесты на инфраструктуру, вместо тестов на БЛ. БЛ срать как данные хранятся.
>я начал гуглить ваши эти онион архетектуры (оказался обычный мультилейер (3)) У онион внизу домен, у трехзвенки - дал. Схема неправильная: в домене тоже могут быть сервисы, сервисы - это уровень приложения, репозитории могут быть на всех слоях одновременно, инфраструктура отдельно от представления. У тебя по ссылке нет валидации в сервисах.
Допустим. Я вот хочу сделать веб-приложение. Суть. Есть пользователи. Они могут создать каталог. Внутри каталога они могут создать подкаталог произвольной вложенности, в каждом каталоге могут храниться файлики произвольных типов. Так вот. Я решил это реализовать(в плане базы) примерно вот таким вот макаром как на прикриплейде. Покритикуйте и дайте предложений как можно лучше было бы сделать.
>>2170271 Так не интересно же. >>2170273 А шо подробнее? При статре фронтенда получаешь локаль пользователя - сохраняешь ее в локалстор. При этом делаешь себе json/js файлики где у тебя просто словарь со строками вида: const strings = { en:{ greet: "Hello"}, ru:{ greet: "Привет"}, de:{ greet: "Sieg Heil "}, }
>>2170278 > Чем три от нод отличается? Тем что как сущность это должен быть корень. Примерно как / в линуксе. Так вот, как мне кажется - вполне логично вынести эти корни в отдельную сущность, чтобы в случае если нужно показать список доступных пользователю "корней" не нужно было искать среди нод все у которых нет родителя. > Зачем тебе различать нод и файл? Ну, типа вот пользователь удалил на высоком уровне, в это время другой пользователь копировал себе какой-то файл, в случае если разделены эти сущности - файлик просто добавит ID куда надо и все, не нужно думать как разруливать транзакцию. А сами файлы из базы можно удалять с какой-то переодичностью, если они больше ни в одной ноде не присутствуют и никто не пытался их куда-то вернуть.
> Зачем тебе юзер ноды? А, про это забыл написать. Ну, типа пока владелец не удалит весь каталог - пользователи могут там мутить свои мутки: удалять что-то, сварачивать-разворачивать, переименовывать, но эти изменения будут только им видны, плюс вносить изменения, которые чтобы попали в основную ноду - должны будут быть подтверждены владельцем, плюс владелец каталога решает какую часть всего дерева показывать кому. Как-то так.
>>2170291 У всех классов общее Id, Name, Description, Nodes, только в случае с File почему-то перекочевало в FileType часть свойств. То есть 2 варианта: - как у тебя, но тогда надо было Node назвать подкаталогом, а Tree каталогом - тоже самое, но через наследование от Node и дополнительным свойством NodeType или дискриминант
Разбираюсь в чужом коде, столкнулся с непонятным местом: В описании класса MControl, после его объявления идет описание полей и методов и не совсем понимаю что декларируется в строчках типа private [имя] [имя] (например private TreeList treeList1). Для описания поля должен указываться тип данных, значит это не поле и не метод (нет описания переменных), тогда что это описывает?
using ASTRALib; using DevExpress.XtraEditors; using DevExpress.XtraTreeList; using DevExpress.XtraTreeList.Columns; using DevExpress.XtraTreeList.Nodes; using Microsoft.Win32; using Rastr.Core; using Rastr.SimpleMAPI; using Rastr.UI.Properties; using System; using System.ComponentModel; using System.Drawing; using System.Globalization; using System.IO; using System.Net; using System.Runtime.InteropServices; using System.Windows.Forms;
>>2170487 так тип поля это же string int boolean, обозначает что можно ввести в этом поле, а что дает тип TreeList? получается это отсылка к какому-то классу?
>>2170493 Чел... про типы рассказывается в любой книге в одной из первых глав. Классы/структуры это и есть типы. string - класс, TreeList - класс, int/bool/mystruct666 - структуры. Жесть
Как узнать какие методы контроллера используются во вью? Посмотрел cshtml файл, js который в него инжектится и собсна сам контроллер, но так и не нашел ничего такого. Сори за нубский вопрос, я понимаю что ответ скорее всего найдется в гайдах-туторах по веб-разработке, но я просто в вашем программировании не силен.
Посоны, вопрос насчет ексепшенов и резалтов. Например, у меня такая нищая структура в проекте - контроллер - датаменеджер - репозиторий - дбконтекст. Я хочу всё обмазать Result'ами, типа поступил запрос на обновление записи в базе - если нет айди из датаменеджера (проверяю в датаменджере) возвращаю NotFoundResult и т.д. Теперь вопрос: есть определенный метод, в котором надо сделать транзакцию. Я её делаю через using transaction, дальше try catch , в catch'е rollback. И после роллбека возвращаю UnexpectedResult, который в контроллере переделываю в 500 ProblemDetails. Конечно еще проблема что приходится ради транзакции тащить Dbcontext в датаменеджер, ну ладно не в этом суть.. Вопрос в том, что мне таким образом в try catch получается надо теперь все запросы к базе обмазать? Или как вообще происходит обработка эксепшонов снаружи контроллеров. Хочу чтобы в случае когда я UnexpectedResult возвращаю и когда просто кидается какой-то рандомный экспешон из-за проблем с базой возвращалось одно и тоже. Или это хуйня и можно забить?
>>2170660 >хочу всё обмазать Result'ами Не надо все обмазывать резалтами.
>если нет айди из датаменеджера Кидай исключение. С точки зрения UI, пользователь не может обновить несуществующую запись.
>Вопрос в том, что мне таким образом в try catch получается надо теперь все запросы к базе обмазать? Да. В новом асп есть мидлвари, так что транзакцию можешь туда засунуть.
>Или как вообще происходит обработка эксепшонов снаружи контроллеров. Обычно вешают фильтр, который отлавливает все исключения и кастит их той или иной ошибке. Пользователю не в коем случае нельзя показывать исключение.
>Или это хуйня и можно забить? Чем тупее написан код, чем меньше он вызывает вопросов, тем лучше.
>>2170660 Все хуйня, забей и выкинь нахрен. Особенно протаскивание контекста в датаменеджер. Выкидывай тогда репозиторий, если датаменеджер знает про дб. >все запросы к базе обмазать? Не все, а те, которые ты можешь обработать и продолжить выполнение, если сервер с базой ебнуло молнией такое не надо ловить. >обработка эксепшонов снаружи контроллеров В asp net есть специальный мидлварь, который обрабатывает ексепшоны и в случае если никто его (эксепшн) не перехватил отвравит ответ 500 - Servery Pizda.
>>2170673 >Кидай исключение. С точки зрения UI, пользователь не может обновить несуществующую запись. Не соглашусь. Если айди приходит от пользователя, то это нормальная ситуация, что пользователь проебался. В терминах хттп BadRequest а не ServerError. Но если это произошло в процессе обработки провалидированных данных, то да, ошибка в приложении и это эксепшн.
>>2170660 >Конечно еще проблема что приходится ради транзакции тащить Dbcontext в датаменеджер UnitOfWork создай, который будет все персистить, отправлять реальные запросы на апдейт. В нем же инкапсулируй создание транзакции, если надо. Если работаешь чисто с ЕФ-ом, то все просто и красиво строится. Dbcontext ни в коем случае в явном виде не тащи вне дата/инфрастракчар слоя.
Вот я выше спрашивал за кастомные ексепшены, а тут они кокрастоке могут помочь, на уровне презентейшена ты можешь чекнуть, кастомный ли он, какой тип (и подтип - я предлагал енумкой) и вернуть бедреквест нужного типа или 500. Но чет меня начали обсерать с таким подходом.
>>2170673 >Чем тупее написан код, чем меньше он вызывает вопросов, тем лучше. Хм. Смелое утверждение. А как же орхитектура? Как же ентерпайз физбазз? Наследие предков не чтишь сука? Улыбаются ли тебе твои предки, когда ты в 3 строчки в одном месте пол спринта закрываешь?
>>2170694 >А как же орхитектура? Как же ентерпайз физбазз? Когда тебе будут заводить тикеты хуе-мое-нехуя-не-работает и ты будешь такое фиксить дохуя времени, чтобы исправить ровно одну строчку, начнешь проклинать предков.
>>2170699 Да, но надо больше абстракций. >>2170701 Холивар хуйня, "надо больше абстракций", если, конечно ты только не чувствуешь в себе силы написать новый ДбПровайдер или патчить текущий в случае изменений. >>2170700 Будет аргумент "поппередники наговнячили", внутри души скажу "спасибо" им. Деды знали толк. Кто понял жизнь - тот не спешит.
Раз пошла такая ебка, то и я про эксепшоны спрошу. Нужно ли оборачивать эксепшоны персистенс слоя в свои? Поясню. Есть интерфейс IStore и его реализации DbStore и JsonStore. Один наебнется с DbExcption другой c FileNotFound, но клиент-то не должен знать с чем он работает Store есть Store. Т.е. Store должен сделать так catch(Exception ex) { throw new StoreException(ex) }? Или не должен? Минута пошла.
>>2170708 У тебя есть репо. Репо консьюмит репо сервис.
Вася запросил детали о пользователе по гуиду. Сервис обработки запросов дернул репо сервис. Репо сервис дернул репо, в ней пользователя не оказалось.
Репо сервис бросает дочернее к BaseRepoServiceException исключение. Исключение ловит глобальный обработчик исключений и формирует красивую джесонину Васе о том, что нет данных, а заодно логирует событие.
>>2170737 Какой проблемы? Самые общие случаи в бейс репо. Остальные - пили сам в нон дженерик репах. Нипанимаю.
>апдейт и делит по критерию ЕФ+. Но да в этом случае надо заморочится с юнитОфворком и в каждом методе репы конектится к транзакции. Я обычно игнорю это лол.
>>2170744 В каком месте абстракции потекли? Разве что, что некоторые операции будут вне транзакции (но это можно реализовать легко требуя открытия в месте, где ты вызываешь такие методы транзакции вручную. типа using IUnitOfWork.CreateTransaction() либо заморочится и в репах это сделать). Где тут протечка?
>>2170753 >В каком месте абстракции потекли? Смотри, абстракции нужны, чтобы уйти от деталей реализации, иначе польза от тех абстракций? Т.е., чтобы заменить MSSQL на MongoDB, или наоборот, достаточно изменить репозиторий.
Я натягиваю сову на глобус, перечисляя то, что не умеет EF. А ты из MongoDB делаешь реляционную базу данныхMSSQL.
Чтобы сделать то, что не умеет EF, мне надо IMongoDbRepository сделать? Тогда мне надо еще его вызывающий код исправлять - потекли абстракции.
>>2170733 Мое скромное мнение - да, надо оборачивать в свой ексепшн, в инер - оригинальное, в методе документировать все возможные ексепшены, который он может выбросить. Но мне лень обычно лол.
>>2170759 Все не так. Это все еще будет UserRepo. Но вот трахаться тебе прийдется внутри него и юнитоф ворка. Я имел ввиду, что ради удобства я не создаю транзакции в ручную в сервисах и ожидаю, что ЮнитОфВОрк.Сейв() сделает все сам. И это супер просто, когда под капотом ЕФ и его нативные операции, но да есть операции, которые выпадают с ЕФ-ного контекста и тут уже решать, или не гарантировать транзакционность вообще, илиюзать явную через ручной using IUnitOfWork.CreateTransaction(), или заморочится и сохранить "юнит оф ворк сделает все сам и транзакцию создаст и кофе, и отсосет" и поебстись в репах
>>2170717 Ребята, ну уже не 12-й год, уже давно все поняли, что EF, Linq2Sql, etc - это и есть репозитори и самому это писать нужно только для ADO.NET/Dapper или другой лоу-левелной DAL, ну обновите уже методички свои и признайте что все знатно обосрались, проталкивая этот паттерн как дефолт.
С другой стороны, работы меньше станет на галерах, да и фактори себя не напишут.
>>2170775 Мда да даб да. Да ты не тренде. Давно уже твои братки перешли на лоукод. Все давно поняли, что надо один ендпоинт на бек, который будет принимать запрос к CosmosNoSqlNoBrainDB и все. Некст левел - встроить это в клиента и синкать по пирам. Но серверсолюшн.
>>2170775 >EF Не использую, потому что нужен перформанс (не хочу и долго профилировать функции) и часто надо писать какую-то хрень, которая не ложится на IQueryable. Еще и тесты ведут себя по разному, нужна дб в памяти, некоторые linq запросы без такой дб кидают исключения.
>>2170791 Так обосраться легко. Достаточно поставить платного носорога и увидеть обосрамс. На одном проекте даж пилят ЭФ++, огромное расширение для экспрешин три с блек джеком и шлюхами.
Больше всего веселья с триггерами, когда надо запилить распределенный аудит или делать валидацию пермишином перед любым действием.
>При чем тут Еф или датаслой вообще? Надо запретить делать действие в мультитенант системе, если нет к нему доступа. У нас не через триггер, это просто один из вариантов решения.
>>2170804 EF - это как Windows/Mac, да, можно одним кликом всё сделать, но когда нужно выйти за рамки стандартных сценариев - начинается трэш и понимание, насколько over dependent всё на жирных слоях этой либы/фреймфорка.
Вообще, любая жирная зависимость - это головная боль в долгосроке, и нужно старатьcя избегать этого по максимуму.
И это не только в .NET, это в целом так должно быть:
>>2170843 На двух из трех моих пикчей я ограничил количество точек до 3. Голубой - первый мач, синий - второй мач. Если ты хочешь, чтобы вся строка состояла только из трех символов и был только один мач, то тебе надо еще добавить символы начала и конца $ и ^
Хм. Я тут столкнулся с проблемой на относительно древовидных структур в EF. Ну, допустим, на нативном SQL - я могу сделать хитрый рекурсивный запрос и получить сразу родителя всего дерева, да там будут циклы и все такое, но оно все равно будет довольно быстро(проверял по крайней мере на дереве с 10к нодами и 150 уровнем вложенности). А вот в EF ничего кроме как:
var item = node; while(item.Parent is not null){item = item.Parent;} return item;
придумать не могу. Как понимаю, таким макаром - еф будет каждый раз подгружать родителей, что значит запросы к базе лишние что не оч удобно.
Пока что придумал еще костыль типа добавить каждому листу ссылку на корень чтобы сразу можно было его достать, но это костыль-костыль какой-то.
Поцоны. Сделал я бота для пое, он гемблит. На скриншотах, чекает пиксели и по ним проверяет. Вот у меня вопрос. Как в C# работать я памятью ? Хотелось бы еще торгового бота сделать но он на пикселях не получится так как надо сообщения с чата принимать. Как вообще такое делают? Есть гайды что бы на простых примерах показывали? Пока я думаю что есть ячейка памяти в которую помещаются сообщения из чата. Вот их надо как то найти только я хуй знает как. И лезть в память игры это сильно палевно?
>>2171046 И да, лезть в память палевно. В пое есть защита от этого. Поехуд когда-то умел редактировать память, чтобы например вырубить дождь для обладателей картофельного пк.
>>2171052 >>2171051 Бля а как тогда другие торгуют? Я сначала хотел на нейронках бота делать но понял что хуета. Не получится на 100% правильно распознать текст
>>2171059 Я тебе уже объяснил, что многих ботов написали на основе поехуда. У него есть функционал для торговли. Но, чтобы ты знал, то, как он там сделан, у пое тоже есть защита. Если ты сам такое начнешь писать, получишь бан через какое-то время.
>>2171064 >2 года не обновлялась Она живет и процветает, только под другим названием. На него должна быть ссылка. Там местный абдула разбил каждый модуль на плагины, но я забыл название.
>>2171066 Я сейчас с мобилы, не могу нормально код смотреть. Нашел этот репозиторий. https://github.com/Qvin0000/ExileApi Вроде этот На сколько вообще сложно такова бота сделать? Вроде функци мало, принимай сообщение, парси, приглашай, меняйся и проверяй что бы не наебали.
>>2165540 (OP) Добрейшего вечерочка, шарпаны. Как вообще неврождённому приложению обзавестись бд на сервере (с MS SQLServer)? Ну т.е. вот есть вроде такая концепция - кодфёрст, все дела, когда бд мы создаем в коде и запиливаем ее потом через миграции (включая инишал для создания самой бд). Как этот подход совместить с реальной ситуацией? Какого пользователя для этого создавать в бд для указания в строке подключения? (Юзера или логин? Бд ведь еще не существует до первой миграции.) С ролью dbcreator? А не слишком жирно и небезопасно? Но если создать менее привилегированного сервер же пошлет приложения нахер при попытке совершить первую миграцию (создание самой бд)? Как вообще инициировать эти самые миграции на реальных серверах? Есть какие-нибудь гайды/общепринятые подходы? В 99% обучающих материалов учат создавать бд в локалбд с трастед конекшн и инициировать миграции аосредством апдейт-датабейз с консоли в студии блджат
>>2171079 Лол, чела зовут Queuete, а Qvin - это другой говнокодер. У этого проекта было контрибьютеров больше, чем членов у портовой шлюхи.
>На сколько вообще сложно такова бота сделать? Через траффик вообще забей. У тебя не получится остановить отправку сообщений, чтобы увидеть магическое слово и не быть спаленным. Зато это самый лучший бот будет. Сорцы не найдешь, только описание алгоритма.
Память сделана через поиск шаблона. Ты если далек от умения находить шаблон каждый апдейт, твой бот сломается на следующее обновление. Идея предельно простая: читаешь ивент слушая найденную функцию https://en.wikipedia.org/wiki/Entity_component_system и эмулируешь нажатие кнопок. Как эмулировать кнопки и не спалиться, найдешь у авто фласок, если трейд выпилили.
>>2171084 В пизду такое счастье. Я думал как в артмани, найти ячеку памяти и подменить) А отправка сообщения? Это типо слушаем трафик который идет в игру через прокси сервер? Ну в принципе мне хватило бы просто прочитать сообщения от юзера а потом я и пикселями могу сделать.
>>2171083 Делаешь простой инсталлятор, где на одном из этапов будет выбор провайдера и ввод строки подключения. Если БД на сервере нет - в установщик ее тоже засовываешь.
Можно ли в шарпе удалить или переопределить переменную другим типом? Вот есть у меня СтрингБилдер, и я хочу конвертнуть его в стринг но не хочу создавать еще одну переменную. Так можно?
>>2171112 >Простейший инсталятор Вменяемый еще стоит что-то около 5к бачей.
>Разве что там софту пиздец сколько настроек нужно. Наивно думать, что все закончится на создании какого-то там dbcreator. Слишком идеальный мир получится.
>>2171103 сап, аноны, обьясните сокральный смысл services.AddScope(className), services.AddTransient(className), понятно что в случае AddSinglton, мы дергаем один и тот же обьект в контроллер или разные контроллеры, и у него свое состояние например или рекомендуется использовать когда обращаемся к чему нибудь внешнему( кэш, конфигурация например). Что же в случае services.AddScope(className),services.AddTransient(className) все сложнее. Можно подсказать наглядный пример по смыслу. Когда нам надо это использовать и без этого не обойтись.
>>2171178 Объясню на примере вонючего EF. - Если сделать Singleton, контекст довольно быстро из-за кеша начнет пиздец тормозить. - Если сделать Transient, потеряешь все плюшки кеша. - PerRequest можно сделать только в ASP.NET. - В какой-нибудь вундервафле придется использовать кастомный Scope вместо PerRequest.
В общем, я анализирую файл. Там есть два типа строк: одна содержит "=", а вторая ";". Задача - извлечь эти строки и раскидать их по ячейкам таблицы
В чем цимес ситуации: второй тип строк идет под первым (например, первый_тип_строки '\n' второй_тип строки). Однако может быть такое, что второго типа строки просто нет.
И я блять не понимаю, как мне настроить логику программы таким образом, чтобы если есть второй тип строки, то функция обрабатывала и первый тип и второй тип и запихнула в одну строку таблицы. Если же нет, то работала только с первым типом строки.
У меня получается все так, что он либо работает со всеми типами отдельно, либо только с первым, либо только с теми участками файла, где есть и первый и второй типы строк (см выше)
Может вы мне подскажете? Надеюсь понятно все объяснил...
>>2171338 Ты сказал, что у тебя первая и вторая строка различаются символами. Значит их можно различать. Читаешь по одной строчке, чекаешь тип строчки и вызываешь функцию для парса первой строчки или второй.
>>2171103 Ебобо? У тебя там переменные называются a, b, c, huj? Иначе как может придти в голову идея переменной предназначенной для 'x' присвоить значение 'y'. Но вообще C# строго типизированный язык, и без ебли с dynamic/object такого не сделать. >>2171181 Выглядит как какая-то ненормализованная хуита. Неплохо бы вынести назначения работ юзерам в отдельную таблицу.
>>2171404 Ты не понял. У сильной и слабой типизации нет прям такого четкого определения. И если брать строгое определение строгой типизации, то у шарпа слабая типизация, а если слабое определения, то у шарпа строгая типизация. Этож каламбур был... Я же кек написал... грустно. Но вот сравнение с С це перебор. Даже при неявном касте в решетке ты получаешь строго типизированный объект.
Серьезная тема. Вот есть асп кор приложение с ролями для юзеров. Есть сервис IFooService { Foo[] GetFoos()//реализация тащит данные из бд } У Foo есть свойство Foo.IsPrivate и нужно обычным юзерам выдать страницу со списком foo, где IsPrivate = false, а юзерам с ролью "Рептилоид" все foo. Вопрос: кто где и как должен решить что показывать. Распишите плиз подробно от прихода запроса, до выдачи ответа. Пока у меня такие варианты: 1. Контролер проверяет роль и вызывает метод GetFoos, который принимает желаемое значение IsPrivate: fooService.GetFoos(isPrivate: false). Недостаток видится в том, если вызов будет из нескольких контроллеров, придется дублировать проверку ролей. 2. IFooService требует IAuthService, в котором можно получить роль и возвращает только достимые foo. Недостаток - IFooService делает слишком много и имеет несколько причин для изменеий. 3. Контроллер вытаскивает все foo и сам фильтрует. Недостаток - тянутся лишние данные с бд.
>>2171494 А как раздробить сервис? Т.е. в нем будет такое if(!auth.UserInRole('Reptiloid')) ...query = query.Where(f => !f.IsPrivate) И что куда дробить? Родилась такая идея IFooAccessFilter { IQueryable<Foo> Fileter(IQueryable<Foo> foods)} В IFooAccessFilter инжектить IAuthService, а сам IFooAccessFilter инжектить в IFooService. И тогда получится IAuth предоставляет данные о юзеер, IFooAccessFilter решает что можно а что ни-ни, а IFooService исползуя фильтр тянет только нужные данные. И это вроде неплохо масштабируется и на IBarService, IGovnoService.
>>2171510 Надо смотреть на конкретную картину в целом. Может ты себе сам внушил, что сервис делает слишком много. Чтобы не получилось, что тебе по приколу захотелось заниматься оверинженирингом.
>>2171500 Да, C# мультипарадигменный по всем параметрам. И рыбку съесть и на пенек присесть. Ну или ни рыба ни мясо, кому как нравится. >>2171506 Смотри. Рефлексия всего лишь смотрит в метеданные, которые во время выполнения уже существуют. А в случае динамика в рантайме запускается некоторое подобие компилятора на минималках, который сначала обрабатывает его.
Пытаюсь в Q-обучение на небольшой игре с двумерным полем, для чего потребовалось иметь словарь, в котором игровое состояние и действие как единый ключ согласовывались бы с q-значением. По факту получился словарь, в котором ключ - кортеж из двумерного массива и кортежа действия, содержащего координаты клетки поля, в которую делается ход; Значение - double для q-значения. В чём проблема: при обновлении q-значений вместо их перезаписи происходит вставка идентичной по ключу записи, что кажется максимально странной хернёй для словаря. Пикрелейтед как это выглядит при отладке.
>>2171787 >ошибка то до безобразия простая Меня всегда забавляли такие экспертные мнения. Проблема в потере третьего параметра. Ctrl + K, D чтоль еще нажми. https://dotnetfiddle.net/vTgQIa
>>2171793 На самом деле мерзотненькая хуйня. Вроде и удобно, и сам таких ошибок не совершаешь, но если тупо смотришь на код чужой - это оч непросто заметить с первого раза.
А у меня вот такой вот тупой вопрос. Какого хуя, блядские инструменты EF - не хотят мне генерировать миграцию, если я переношу метод Main из класса Program? Ну, допустим, я - ебланстер, и мне не нравится что метод Main в классе Program, ну вот такой я ебанутый, хочу чтобы такое охуенное слово для других целей использовать. Выношу в класс EntryPoint в котором метод Main делает: new Program(string[]args).Run(); И ебучие инструменты миграции - тупо не хотят работать, дескать мы метод такие-то методы не нашли в классе Program. Ну охуеть, блядь. Разве нельзя было, блядь, не тупо сдыхать, а так и написать и попросить указать место куда стучаться, раз вы такое вот говно сделали?
>>2171805 Смотри IDesignTimeDbContextFactory и аргументы команды. И успокой свое траханье. Вообще не понимаю при чем там метож мейн. Нихуя загуглить не могут, а потом "ЕФ гавно пайду лучше в АДО((("
Ребяты почему иногда не срабатывает SendKeys.SendWait("^(c)") ? Вот в визуал студии я отлаживаю и запускаю программу. Иногда ее закрываю. И вот она начинает ебать голову потом. Перестает копировать, я перезвпускаю студию, иногда помогает сразу а иногда нужно ждать только хуй знает чего ждать то.
>>2165540 (OP) Аноны, помогите придумать реализацию. Вот у меня есть объект, а в нем 20 полей int, надо вызывать один метод при присваивании значений этим полям. Возможно ли сделать что-то типа сеттеров у этих полей без дублирования сеттеров в каждом? С INotifyPropertyChanged в любом случае надо в каждое свойство копипастить один и тот же код. Можно сделать классы с кастомным implicit кастом, но тогда читаемость по пизде пойдёт, когда я буду инты присваивать классу. Разве что сделать дженерик и в скобках инт оставлять, чтоб понятнее выглядело откуда он взялся. Но это всё равно звучит как нечитаемая хуйня. Рефлексией магию сотворить? Но это тоже звучит как костыль. Или не ебать мозг и просто вызывать Set(...)? Но меня ОКР долбит. Проверять поля на изменение в цикле? Вообще пиздец. И если делать вместо интов классы, то в любом случае надо в конструкторе писать лапшу с вызовом конструкторов каждого класса, чтоб передать в него что это за поле вообще. Что тоже не нравится мне.
>>2172001 Рестарт пк помогает в любом случае. Сейчас вот скомпилироаал программу и запускаю ее в релизе без студии и она нихея не работает. Не происходит копирование(
>>2172019 >>2172033 Я ведь хотел чтоб просто писать zalupa.a = 5; и вызывался нужный метод. А так можно и через TypeBuilder весь класс слепить и обращаться через интерфейс. Но я думал может есть менее извращённый способ.
>>2172170 А почему лучше фоди-то? На самом деле гуд фича. И фоди это таки риск (сам автор писал, что когда он уходил - никто нахуй либу не поддерживал), но все же.
Позадавайте мне вопросов которые обычно задают вкатывальщикам. Позязя. А то я на заводе работаю и завод немного(сильно на самом деле), заебал, но вкат на звавод происходил так: -Привет, шарп знаешь? - Знаю. - Ок, вот тебе пека, иди работать. И судя по всему в других местах немного не так.
>>2172464 Стандарт. ООП. Наследование. Модификаторы доступа. Боксинг анбоксинг. Структуры данных. Паттерны проектирования.вкатывальшику нужно просто знать что такие есть. Ну и общие воросы, что такое clr, что такое нет, нет кор, нет фраемворк, в чем разница. Корочи зайди на метанит и там посмотри вопросы. А ну еще sql. Так же желательно представлять что такое EF core. Ну если прл еф кор спросят то там и linq. Так же асинк авейт. Ну еще сериализация и структура json, но это легко, там пару строк кода. Эт вопросы только по языку. А ведь есть еще впф, асп нет кор. Впф я хуй знает, а в асп коре там я ебу вопросов, выебут в хвост и гриву. Модели, представления, контролеры, фильтрация, зависимости, модели представлений, частичные представления, апи, куки, маршрутизация, авторизация. А еще сигналР и Блейзор там тоже еще можно пачку вопросов придумать. Но ты не пугайся, это все изи, главное практика. Корочи теория это хорошо, но вот даже если ты наизусть весь метанит выучиш и слово в слово сможешь его пересказать тебе это не поможет. Я сам вкатывальщик и уже давно понял что без практики ты нихуя не изучишь. Придумай себе проект и делай его. Только не придумывай очередную соц сеть или телеграм бота Нужно что то что бы было интересно тебе. Что бы ты горел и хотел это делать. Вот мб в игру какую играешь, сделай чит или бота для игры. Или у друзей спроси какой бы сайт им был бы нужнн и сделай им его.
>>2172514 s1 это конструктор с передачей ReadOnlySpan<Char> на самом деле и его не существовало до .net core 2. В классе String объявлены разные перегрузки конструкторов, например перегрузка с созданием строки из масива символов. s2 существовала всегда s3 - более поздняя и удобная версия s2(но её нельзя использовать для объявления поля внутри класса). s4 это последнее добавление в язык и упрощённый вариант для s1, чтобы не писать второй раз имя класса, на любителя впрочем.
>>2172506 >ООП Ну, тут наверное чек. Как минимум за наследование-полиморфизм-инкапсуляцию могу пояснить + солид. >Боксинг анбоксинг чек > Структуры данных Хм. Вот тут у меня сомнения. Потому что многое на практике не применял, только знаю когда что надо в теории, но на практике только пригодились деревья, да стек, очередь, списки, массивчики. > Паттерны проектирования Если те что у банды четырех - чек. Если MVC-MVVM - тоже чек. Другие - хз. > clr Чек, хотя если будут спрашивать по кишкам - только общее знаю. > что такое нет, нет кор, нет фраемворк, в чем разница Чек > sql У sql много чего. Если просто про запросики и n+1 - чек, если какая-то специфичная фигня типа как какие индексы строятся - наверное не чек. Ну и специфичная для конкретных СУБД фигня, типа вот в этой можно это, а в той то. > еф кор Ну, опять же тут получается зависит. На текущей работе я его просто как хранилище использовал. > асинк авейт Чек > Впф Не интересно и не собирался на декстопы > представления, контролеры, фильтрация, зависимости, модели представлений, частичные представления, апи, куки, маршрутизация, авторизация Это все чек, если подразумевается веб. Просто потому что на текущей работе именно это использовал частенько. > сигналР Чек > Блейзор Знаю что есть, руками не трогал, только создавал проектик посмотреть. На текущей работе Webapi+angular+nginx+docker
Ребята вы бы поверили если бы я вам сказал что игровые действия в игре наебнули бота который до этого работал? Наебнули всмысле сломали его правильную работу. Я вот сам не верю в такое. Вот история. Сделал я бота корочи, который кликает в ПОЕ. В лиге он покупает предметы. Ну все хорошо все работает без проблем вообще. Скинул я его корешу. Он пробует и говорит что не работает. Я думаю как так то нахуй, скорее всего он персонажа не так поставил и пиксили не сходятся по которым нужно кликать. Он высказывает предположение что из за размера персонажей клики не попадают. Ну ок, у меня вичка у него глад. Я захожу на глада, и точно не работает. Только вот я потом захожу на вичку и у меня ТОЖЕ БЛЯТЬ НЕ РАДБОТАЕТ. Проблема в том что с какова то хуя данный метод перестал отжимать контрл в игре
} Он должен кляцнуть на вкладку а потом на продавца. Но он цепляет вкладку и начинает ее пидорасить. Это просто пиздец какой то. Я кеш почистил уже и нихуя. Просто если бы мне кто то сказал что вот я в игре сделал действие и перестало что то работать притом что это что то не зависит от игры, оно просто нажимает кнопки и может нажимать эти кнопки и без игры.
Блять как так то нахуй Комп перезагружал уже. Я просто не могу в это поверить. Это как если бы человек увидел инопланетянина и мне рассказывал бы то я ему вызвал бы дурку. Но я рили вам не пижу, так все и было. Программа одна и та же. Причем я ее утром допилил и с утра она фармила, я заходил и выходил из игры все ок, а тут 1 раз сменил перса потом взял основного и такой пиздец.
В конце большинства тредов вылазит какой-то петуч и перекатывается в джаву/го (шило на мыло). В чем смысол? Работы нет - пиздеж. По вебу сейчас голод. За неделю на джинни приглосов 20 приходит. Из них в 10 будет красивый стек: кор, ангулар, опционально микросервисы.
>>2172843 Сам подумай почему для вызова процедур нужен стек. Как еще хранить параметры вызова и состояние регистров хранить, чтобы востановиться после возрата из подпроцедуры?
ASP.NET MVC, .NET 5. У меня есть страница Razor, называется app.cshtml - на неё легко зайти, невозможно забыть, и легко потерять, она работает. Я хочу, чтобы запросы на сайт вроде сайт/сычёв и сайт/срака вели на аналогичную страницу как сайт/app?id=сычёв, но при этом выглядели как сайт/сычёв. Разве я много прошу?
Я сделал раутинг, он выглядит так: endpoints.MapRazorPages(); endpoints.MapControllerRoute(name: "Apps", pattern: "{controller=Home}/{(звёздочка)pageID}", defaults: new { action = "ShowInfoPage" });
- и эта хуйня работает, я получаю выход в нужную функцию. Но потом из этой функции мне нужно подставить нужную страницу app.cshtml, и параметр. И ёптваюмать, это не работает. return View("~/Pages/app.cshtml"); - вот эта срака переводит на нужную страницу, но теряется ViewData.
Меня заебло тупить. Как в этом ёбаном MVC подменять страницу без изменения пути в адресной строке?
>>2172898 А ты знаешь что в одном солюшене может быть несколько проектов? >>2173035 Чего блять? МВЦ и РазорПагес разные вещи. Их, конечно, можно вместе использовать, но надо нормально маршруты настроить. Ну и возвращать из контроллера страницу нельзя. Либо редирект, либо темплейты по-человечески сделать, которые и пага и вью будет использовать.
Неофит на связи, можете по хардкору объяснить как там переносятся библиотеки с .net framework на .net core / .NET? Я что-то слышал про компабилити пак. Есть один System.Windows.Threading в WindowsBase.dll, у меня сейчас ругается на Threading.
Нихуя не понимаю бля. Вот есть этот класс https://docs.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatchertimer.start?view=net-5.0 >Applies to .net 5.0 Компитабилити пак поставил, пытаюсь гуглить в нугете - он есть только в каком-то левом пакете, который не ставиться. Непосредственно в reference assemblies на харде в .нете WindowsBase нету, только во фреймворке, но он очевидно нихуя не подключается. Как его поставить?
>>2173427 И что у тебя кор делает в папке фреймворка? Core по умолчанию идет в C:\Program Files\dotnet. Либы для десктопного сдк C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\5.0.0.
>>2173345 >Компитабилити пак поставил, пытаюсь гуглить в нугете - он есть только в каком-то левом пакете, который не ставиться. Начиная с VS2017 изменился формат csproj. Теперь он намного чище и без всякого мусора.
Чтобы получить WindowsBase.dll и еще ворох всякого говна, необходимо у csproj указать sdk Microsoft.NET.Sdk.WindowsDesktop и/или TargetFramework net5.0-windows.
Да это же программист-анальник. Открыл 17 главу в надежде увидеть стандартные паттерны через дабл чек, фри лок и тому подобные базовые вещи. Но увидел по 2-3 абзаца на каждый базворд без нормальный объяснений нахуя и говнокод с ошибками в примерах.
>>2173145 >А ты знаешь что в одном солюшене может быть несколько проектов? Конечно знаю. Только вот дело в том, что тимлиду не нравится, когда ты какие-то там библиотеки классов делаешь, которые нужны только тебе и прочее-прочее.
>>2173872 Он долюбоеб что-ли? Разделение по класс лайбрари, даже если они будут юзаться только в 1 солюшене - ок, ибо четче границы, меньше связанность, легче отслеживать зависимости и всякие там кроссреференсы. Пруф ми вронг
>>2173911 Представь, что тебе надо пилить фичи по фича флагам. Например, есть надо запилить фичу, которая будет фиксить другую фичу. В какой контроллер ты ее засунешь? Как ты решаешь проблему с роутом?
Раз уж подняли такую животрепещащую тему, то и я спрошу. Есть аккаунт-контроллер (логин/регистрация) и есть админ контроллер (админка сайта). Вот хочу я запилить функцию ролей на сайте, роли может менять Одмин в админке. Куда класть экнш ChangeUserRole в AdminControll или AccountController?
Есть словарь, в котором ключ это (int[,], (int, int)). Написал под него класс, реализующий IEqualityComparer, всё ок, дубликаты таки не записываются, но при этом не работает TryGetValue. Наверное ошибка где-то в высчитывании хэша, но в чём она может быть? Пикрелейтед реализация интерфейса.
>>2174381 >аргументы функции с большой буквы >таплы в паблик интерфейсе >назвать кортеж с параметрами ширина-высота ДЕЙСТВИЕМ >if(true) return true; else return false; Ну ты и еблан, чел. Говнокодовое клише просто, ну и мерзость.
>>2174381 >else if(x.Satate != y.State) Нахуя ты это делаешь? Ты сначала проверил содержимое массивов, а потом являются ли два массива одним инстансом... Если они один и тот же массив, то содержаимое у них будет одинаковое, если тебе важно содержимое, а не инстансы, зачем ты проверяешь ссылки?
>>2174414 Могут быть ключи, у которых State null, но при этом одинаковый кортеж Action. Если останется просто else, они ж разными признаются.
>>2174408 Последний пункт поправил, действительно хуету сделал. В остальном немного мимо, аргументы с маленькой, действие т.к. из состояния совершается действие и оно в словаре получает оценку. Хз как это можно реализовать не через словарь.
Аноны! Вопрос по ажурке (azure) не нашел тред про облака
Такая проблема: 1 Вот у меня есть дома на холодильнике сервер 2 На ажурке есть статический сайт, который делает запрос напрямую на мой белый IP проблема: клиент из европы не может получить ко мне доступ (вот не знаю почему) 3 Кто-нибудь знает как я могу использовать какой-нибудь ExpressRoute или PrivateLink чтобы клиент обращался не к моему IP, а к ажуровскому, а ажурка "под капотом" делала редирект на мой айпишник? у ажурки есть ко мне доступ
Не хочу платить несколько тысяч в месяц ради клента
>>2174382 Посмотрел доку. Десятая винда начинается с 10.0, начиная с висты они для какой-то обратной совместимости использовали 6.х. Так как эта хрень записана в реестре и была возможность обновиться с восьмерки на десятку, реестр мог не обновиться и некоторые легаси программы могут читать 6.3 или даже 6.2 вместо 10.0.
>>2174425 >ключи, у которых State null, но при этом одинаковый кортеж Action При чем тут вообще action у тебя какая логика сравнения State? И кстати, загугли что такое отладчик и как им пользоваться.
Появилось задание - разработать аддон к VS чтобы можно было автоматизировать добавление комментариев
Сам такой хуйней никогда в жизни не занимался. Интересует вопрос, а какой собсна тип проекта выбрать? Extensions development то я скачал и VSSDK тоже (если это не одно и то же конечно), а дальше? Мне выбрать плагин, аддон или что вообще?
>>2174522 Доку2 открывал хоть, или еще одна жертва обучения через ютуб? > make sure you have installed the Visual Studio extension development workload, which includes the VSIX template >... >Step 1. From the File menu, select New > Project. Search for "vsix" and select the Visual C# VSIX Project and then Next.
Антоны, каким образом base в наследуемых классах работает, я знаю, что оно делает. Но как это выглядит со стороны таблицы методов и объектов типов? Указывает ли вообще указатель на объект-тип насдедуемого класса на базовый класс?
>>2174744 С фшарпиком это не совсем верный способ. Эта хуйня мультипарадигмальна - раз. Два - .net там есть -> ты можешь просто те же формы достать и хуячить. Другое дело, что когда ты начинаешь там более-менее сложные штуки делать, а в довесок которые требуют таки перформанса, вся эта изящность и красивость идет нахуй. Достаточно загуглить обычный такой realWorldExample, где включается бизнас-логика, валидации и проч-проч, как фшарп начинает казаться тем еще говном.
>>2169599 Потому что функцональщина для тупых. Это самая легкая в понимании парадигма, которая требует от тебя ровно одну извилину. Даже no-code сложнее в освоении, чем функциональщина.
>>2174827 1. Таск != тред 2. Нет никакой гарантии, что таск будет запущен в другом потоке, повлиять можно только через TaskCreationOptions.LongRunning и создать таску через фабрику 3. Можно указать тип таски и запустить ее асинхронно
Чуваки Я изучаю, осматриваю с#, и вот такой вопрос возник у меня: можно ли сделать десктопное приложение с кастомным интерфейсом, как, например, у spotify? Если да, то подскажите какой тулзой
>>2174858 Чем хочешь. Дизайн к туллингу не привязан. Или для тебя небывалые открытия, что например кнопка - это набор картинок? Анимация - быстрая смена картинок.
>>2174856 Я немного посмотрел WinForms, вижу, например, можно сделать кнопку, но скруглить края, например, нельзя. Кастомный интерфейс для меня, это интерфейс, где ты можешь сотворить хоть круглую кнопку, хоть квадратную, прихуячить анимации и т. д. и т. п. Типа возможности css, но только в десктопном приложении
>>2174815 Сделай просто свой планировщик который будет твои таски запускать в отдельных тредах. Что, блядь, сложного-то? Другое дело, что если тебе прям нужен отдельный тред, то нахуя тебе таски - я не понимаю. Просто делай себе отдельный тред, а асинхронность получай с помощью коллбеков.
Можно ли на C# из консольного приложения открыть браузер, скормить ему страницу с простым html, которая будет сгенерирована программой в string'е, и которая ни на каком сервере не сохраняется, и на диске желательно тоже чтобы не сохранялась. Ну смысл задачи такой, чтобы отчёт о расчётах не в консоле писать, а чтобы было чуть больше возможностей для оформления текста. Нужно какое-то простое решение.
>>2174921 Потому что у тебя что не пост, так какая-то новая хуйня. Во-первых, прими таблетки. Во-вторых, падает у тебя проверка от рукожопа, написанная таким же рукожопом.
ret <= (ssize_t)len
На кой хуй нужна эта проверка и что за хуйню она проверяет? Откуда мне знать?
>>2174930 Ну, чисто концептуально - прикриплейд, если я тебя правильно понял. Ну, т.е. тут я ручками сделал статичный ответ. Можешь делать так же, но генерировать на основе каких-то данных.
>>2174932 А это реально за полдня накостылять, или придётся книги/мануалы/docs.microsoft.com... по этой штуке пару недель читать? Я всё что касается веба игнорировал всегда, не думал, что макакопомойка может и мне понадобится. А тут вот оно как повернулось...
>>2174941 >по этой штуке пару недель читать? Как-то в шутку начали соревноваться в написании минимального кода для хелоу ворлда, что разработчики .net в следующей версии запилили апи для написания сайтов еще короче, чем на ноде и оф коз у того анона выше на скрине. Для этого надо было немного изменить лямбды. Начиная с .net 6, запилить сайт это три строчки кода. ASP.NET и раньше был консольным приложением.
>>2174942 Это на самом деле такой себе пример. Я просто за час на коленке побаловался. На самом деле если тебе действительно нужно что-то типа генерации отчетов или подобного, то ASP.Net - будет близок к оптимальному. >>2174945 Мой код это просто развлечение же. Для реальных задач он малопригоден.
Насколько плохо пропускать некоторые главы когда еще только учишься? Не могу читать главу про Nullable Reference Types, голова пухнет, да и вещь это вроде не прям необходимая для изучения
>>2174597 А я не шарю. Мы в Microsoft AX пишем. Я лично с этой системой не знаком (лол она ж в visual studio уже) а "мэтры-наставники" чет найти не могут таких утилит, вот мне и сказали писать ее. Хотя я в шарпе чуть лучше чем профан. Могу гит скинуть, поржешь с моего кода
>>2175373 - проекты принято делить не таким образом, можешь у джавистов посмотреть как желательно - как открывать твой проект, если он состоит из двух файлов? Вьюхи и беханда для вьюхи? Даже csproj нема - код написан курицой-лапой, банально форматировать весь файл через иде не можешь - напрочь отсутствует архитектура, все насрано в одном файле - в репозитории ключи не хранят - скомпиленный проект тоже не хранят, для этого есть релизы на гитхабе и гит игнор - код не поддается для расширений, все прибито гвоздями - много аллокаций памяти бездумно - не последний C# - Newtonsoft.Json вместо System.Text.Json - назвать переменную как l - это худшее, что могло прийти в голову - результат http запроса необходимо проверять на возвращаемый статус код через метод EnsureSuccessStatusCode - UI смешал с двумя языками - такую обработку ошибок можно запихнуть в глобальный обработчик ошибок, а не дублировать одно и тоже через метод - мусорные комментарии Я бы тебя и на позицию трейни не взял.
>>2175373 > попытался сделать покрасивее А получилась полная хуйня. Открыл, а там сразу пиздец. Во-первых, викинь нахуй Builded, для этого есть страница с релизами. Во-вторых, что за херня в исходниках? Зачем ты такую еблю придумал, почему весь проект не выложил? >Создайте WPF-приложение с названием "Label Translator", в настройках целевой платформы выставите ".NET 5.0"; >Скачайте файлы из директории "For Dev" и замените ими соответствующие файлы в решении; Ну это же пиздец. У тебя в локальном репозитории тоже половины кода нет, зато огромные блобы трекаются? Пусть тебе Yoskutik расскажет что такое гит и гитхаб. Код даже открывать страшно.
>>2175417 Обычно готовые билды заливаются куда-то в отдельное хранилище на которое потом ссылаешься в зависимости от версии/платформы/компилятра/проц.архитектуры.
>>2175425 >У меня этого хранилища нет Есть. Тебе уже писали - вклада релизов на гитхабе. >>2175426 >Работает прога и норм Так ты наверно один работаешь над своей прогой.>>2175417 >В теории круто (как по мне) Нет. Круто это когда я написал git clone foobar и могу сразу работать над проектом, без диких танцев.
Помогите мне! Пишу расширение для VS. Нужно автоматизировать создание комментариев к коду. Установил СДК, создал проект, а дальше что? В гайдах создают toolwindow но я понимаю, что он мне не нужен. Какой extensible element взять из пикрилов? Туплю уже какой час... Спасибо если поможете!
Антоны, что вы можете посоветовать почитать неводянистого по этому вашему новомодному неткору и мультиплатформе? Я вот в душе не ебу, как работают треды на линуксе и каким образом thread scheduler в мультиплатформенных приложениях устроен...
>>2175373 Ну там особо и оценивать нечего. По 1 файлу к просмотру в репе. Ну старешься - молодец. Но правда, начинать вкат с декстопа да и еще какой-то ЕРП - ну такое себе.
>>2175718 Что там блядь поддерживать? Давай, примеры.
А с System.Text.Json вот тебе пример: там нихуя не реализовано изкаробки, на каждые пол шага врпаво-влево (да и даже для банальностей, типа как с нулами) - пиши свое расширение нахуй. И вот где "это дерьмо сложно поддерживать"
>>2175723 Даю пример: >там нихуя не реализовано изкаробки, на каждые пол шага врпаво-влево + проблемы с биндингами + хуевый перформанс + нет поддержки сорс генератора + иди нахуй
>>2175717 Да я сам и не хотел. Я админом хотел быть с уклоном в иб по профилю. Но не взяли никуда кроме как сюда. Говорю слава богу не ебут пока, и до учебы не доебываются
>>2175721 Я параллельно учусь. Если щас ебать начнут то это очень плохо
>>2175727 Проблемы у тебя с башкой. Сорс генратор? Так это к пункту о перфомансе. Тоесть аргвмент один: перфоманс. И то тут спорно, если реализовать все фичи нютонсофта, то и перфоманс просядет.
В общем, с тобой все ясно- хуесос, прочитавший рекламный буклет мафкрософта.
Почему для веба есть только ASP.NET и ни каких альтернатив? Почему его вообще используют? Мне кажется он не очень удобный, потому что надо соблюдать всякие глупые ограничения. Создавать "магические" типы файлов, которые он подхватывает и обрабатывает особым образом. К примеру, в том же РНР нет ни какой магии. Всё файлы равнозначны и лишь программист с помощью кода определяет что и как будет исполняться. Кроме того изучать ASP.NET очень долго. До окончания обучения невозможно написать даже простой сайт, потому что просто не понимаешь как этот монстр работает.
>>2175821 Что ты блядь несешь? Из альтернатив - та же ненси плюс куча других уровнем пониже. Хочешь все сам делать - бери HTTPListener и делай, буквально будет как PHP. В HTTPListener'е тоже много магии? Бери сокеты и делай. Может быть в сокетах тебе магии много? Бери и хуячь драйвер и прямо из сетевухи перехватывай трафик, собирай из него tcp-фреймы, шли в ответ ACK и потом передавай уже приложению собранный пакет.
>>2175828 Там есть особые файлы, которые считаются основными шаблонами, а есть контейнерами. И разница между ними в тонкости написания имени файла. Я так до конца и не понял, потому что в книге про это мало написано. И вообще, я не чувствую творчества, меня просто тыкают носом и говорят делай так-то, без альтернатив. И в чём тогда тут программирование? Они тогда бы уж и писали полноценную CMS вроде WordPress, а "программист" бы просто оформлением занимался.
>>2175821 >Почему для веба есть только ASP.NET и ни каких альтернатив? Из современного, есть три вида ASP: веб апи, мвс, разор. Из альтернатив есть например gRPC, но ты вебмакак не заставишь его использовать, им только GraphQL подавай с REST.
>Кроме того изучать ASP.NET очень долго. Пару раз нажал кнопку "далее" - сайт готов.
>До окончания обучения невозможно написать даже простой сайт, потому что просто не понимаешь как этот монстр работает. Что ты такое изучаешь в асп, что до создания простого сайта уходит много времени?
>>2175836 >я не чувствую творчества Ну так возьми сокеты и делай как тебе хочется. В чем проблема-то? Либа для вебсервера в духе go делается за 4 часа.
>>2175836 Творчество в чем ебать? В создании шаблонных контролеров и в прописывании ручками "что-куда" есть творчество? Творчество должно быть в реализации ТВОЕЙ бизнесс логики, а не изобретении Н-го способа создать екшн. Тут скорее интересно наоборот изучать как они это сделали, как там всякие нейминг конвеншены работают и т.д. Для интереса их можно даже самому переопределить, но такой код - сразу на помойку.
>>2175847 Ну, допустим лично мне было в свое время свою библиотечку для работы с сетью писать, со всеми этими контекстами, диспечерезацией сообщений и проч-проч. Да и сейчас - посмотрел на гошечку и хочется чего-то в таком стиле но на шарпе сделать, типа чтобы: http.Use(auth); http.Bind(route, action); хотя похожее уже в шестом дотнете сделали.
>>2175913 Чел, блядь, ты тупой или где? Я тебе, сука ты тупая, прямо сказал чего я хотел бы намутить в свободное, блядь, дебила кусок, время(net/http из го, потому что он красивый и удобный для наколеночных решений, и даже minimal api это не то). Ты серьезно думаешь, что я работая 5+ лет не знаю про то что уже есть во фреймворке? Серьезно, блядь? Корона не жмет? Все ж вокруг дегенераты, которые нихуя без тебя нагуглить не могут и только и делают, что массивы перебирают, да в жопе ковыряются. Охуеть, блядь. Пиздец. Хтьфу в ебало. Хптьфу.
>>2175966 Хуя бомбаж. Ну по твоим размышлениям о "вордпрессах", ПХП и "творчестве" было очень похоже на вкатуна, который метаинт не осилил и орет о "сложна дайте как в ПХП(((". Да и посмотри тред, тут каждый второй вопрос гуглится в минуту. Прастити, извинити, что обидел почетного деда.
>>2175903 И зачем тогда они городили эти огороды с виртуальными машинами, если по факту ни какой кроссплатформенности нет? Я вот хотел писать десктопные приложения, чтобы они работали на всех ОС.
>>2176526 >с виртуальными машинами, если по факту ни какой кроссплатформенности нет? Как будто виртуальные машины только для кроссплатформенности делают. >по факту ни какой кроссплатформенности нет? Её не было в фреймворке, в коре она по факту есть. Почему не делали сразу - вопрос к майкам. Если ты начнешь дергать винапи в своей программе кроссплатформенность изчезнет вне зависимости от используемого стека. >десктопные приложения, чтобы они работали на всех ОС. Ну так и пиши Xamarian.Forms/MAUI, Uno, Avalonia плюс в предыдущик тредах еще какие-то откапывали, пошукай если интересно.
Почему раньше, программируя на 8-разрядных ЭВМ, можно было, используя небольшие базовые знания об архитектуре этой ЭВМ, писать программы любой сложности. Теперь же, чтобы просто вывести пиксель на экран надо изучать монструозные библиотеки и фреймворки с документацией на тысячи страниц. Самое смешное, что даже в этих тысячи страниц авторы могут не упомянуть о способе вывода пикселей на экран. Если раньше все программы были едины в своей концепции исполнения, то теперь есть разделение на консольные, декстопные и веб приложения. Если я создал консольное, то лишаюсь возможности графики и веба. Если графическое - то должен вывернуть логику программы наизнанку, подстроив под событийный механизм. Извините, а если мне нужно вычислять непрерывный процесс и параллельно визуализировать его результаты, то получается я не могу этого сделать? Ведь мне надо постоянно возвращать управление. Если идёшь в веб, то там вообще не понятно как это всё выполнять вне IDE и где дают полноценный хостинг под такого монстра.
Анон, я работаю с блазором с клиент вебасембли и беком который хоститься на в сервере. у меня проблема подключить к этому сигналР, насколько я понимаю они все так же коммуницируются через сигнал р как и обычний блазор, только вот он у меня не работает с коробки, я понял как с вебасембли отправить сигнал на сервер но мне нужно еще с сервера тригернуть вебасембли, кто работал с такой архитектурой, можете подсказать куда рыть?
>>2176690 >с документацией на тысячи страниц Это не ты недавно заявился с книгой программиста-анальника, который описывал несколько классов из коробки парой абзацев?
1. Разработка не делится на консоль, декстоп и веб. 2. Консоль позволяет работать с графикой и вебом.
>>2176696 >можете подсказать куда рыть? Почитать про сокеты, так как у тебя нулевое понимание о них. Если ты получил соединение с клиентом, то у тебя как минимум есть ссылка на это соединение. Так сложно у класса вызвать метод SendAsync?
>>2178797 Ты пустой ок возвращаешь. В данном методе ты не должен 404 возвращать. Возвращаей пустой массив c 200-той. Ну или 204 на крайняк, если хочешь. Роут не долже н быть "олл", просто ГЕТ юзерс/
>>2186815 так дядя, Task<ActionResult<T>> это для асинхронности что бы сделать запрос асинхронные и отдать какой то статус код обратно, а у тебя IActionResult просто void без получения со статусом кодом
>>2173145 > МВЦ и РазорПагес разные вещи Это одно и то же, чувак. И построены они по модели MVC. И всё, что тебе надо, чтобы они заработали - прописать одну команду в startup.cs.