Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии. Также не забываем напоминать залетным Жаба-петухам о их месте возле параши, которая уже давно навечно забилась легаси-дерьмом и ждёт неминуемой смерти Жабы.
3. WinForms или WPF? Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее. Оба будут поддерживаться в .NET Core, поэтому не стоит беспокоиться о будущем, если шлёпаете формочки.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить? Неправда. C# довольно активно развивается, недавно вышла третья версия .NET Core фреймворка и восьмая версия языка. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать? Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ). Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ). Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx ) Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана. Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core. SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.
7. Дополнительные инструменты для разработки на C# LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним Indent Guides - показывает вертикальные линии на каждом уровне отступов. Format document on Save - форматирует код каждый раз при сохранении документа Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
9. Что почитать? - The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода. - C# 7.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином. Уже появилось издание для 8.0, однако в интернетах пока его нет. - C# 7.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой - Pro C# 7: With .NET and .NET Core (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха. - C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
10. Более хардкорный материал - 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 структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.
11. Хочу еще хардкорней - C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата. - Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода. - .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам
12. Литература по WPF Из более-менее актуального можно выделить пару книг: - Pro WPF 4.5 in C# (Matthew MacDonald) - Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
13. Литература по ASP.NET - Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson) - Pro ASP.NET MVC 5 Platform (Adam Freeman) - Beginning ASP.NET for Visual Studio 2015 (William Penberthy)
14. Литература по асинхронности, параллелизму и всему такому - Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции - Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная - Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg
15. Литература не по шарпу, но так или иначе связанная с языком C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов. Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
16. Но я не знаю английский, как я буду это все читать? На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"
17. Что еще нужно знать, чтобы взяли работать за еду? - SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper - Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick - Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун - Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках - Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы - Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST - Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID
>>1724425 (OP) >Также не забываем напоминать залетным Жаба-петухам о их месте возле параши, которая уже давно навечно забилась легаси-дерьмом и ждёт неминуемой смерти Жабы. Уберите из шапки.
>>1723695 → >>1724005 → Бампаю вопрос. Нихуя не понимаю, где рефлексия используется. Чес слово. На пальцах - у меня хоститься ASP.NET Core 3.0 бэкенд (назовем его Main) в виде Web Api для моей GUI на React свестелки-перделки. Задача бэка - оперировать данными полученных с фронта (обычный мать его КРУД). На кой хуй, вопрос - мне рефлексия. Предлоложим, что у меня должен быть 24/7 аптайм в моем Main (бэке) и у меня нет доступа к исходнику своей же бэк-side апликухи (окей), в этом случае исходя из поста >>1724005 → я создаю отдельный солюшен, рефлекшу свой Main, прикручиваю функционал, которого нет на Main и ... Что блять дальше? Хостить его на другом порте, чи шо? И как я буду манипулировать сотней Reference в мой "Костыль" из Main? И как Main вообще будет знать о таком "Костыле". Нипонимаю, нихуя. Реальный юзкейс для Reflection, который я нашел - это InteliSense и disassembler. Поясните, христа ради, кто в теме.
>>1724508 Ну если время проебать хочешь и создать видимость того, что ты какие-то навыки и знания приобретаешь, то оба ресурса справятся с этой задачей одинаково хорошо. Если хочешь навыков и знаний, то тут только книги из шапки. Рекомендую начинать с Троелсена.
>>1724494 >Вопрос - зочем? Ладно, если какой то крупный интерпрайз 24/7 крутиться в продакшене и к нему нет доступа При чем тут продакшн и доступ к нему? Возьми программу типа браузера, ты можешь написать к нему расширение. Чтобы это расширение работало, браузеру нужно использовать рефлексию и изучать код твоего расширения, встраивая его функционал в рантайме. Т. е. при помощи рефлексии ты делаешь свою программу расширяемой. >К примеру? Любой фреймворк, от WPF до ASP.NET, все они используют рефлексию, дописывая большую часть кода за тебя. Если используешь Атрибуты, значит тоже используешь рефлексию, например при создании типа в который у тебя будет парситься JSON, ты добавляешь свойству атрибут JsonConverter(typeof(DetailsBodyConverter)) и таким образом библиотека понимает, что ей нужно достать из метаданных этот JSON конвертер и использовать его при парсинге. >3. Почему не перекомпелировать? К какому пункту это относится? Если к последнему, то я написал, что возможности заново компилировать код может и не быть, например если ты проебал исходники на какой-нибудь старый модуль, который нужно изменить.
> На кой хуй, вопрос - мне рефлексия. Тебе уже всё в том посте описал. Ты какое-то дерьмо непонятное придумал и спрашиваешь зачем тебе рефлексия, так, будто её нужно применять везде, независимо от приложения и его назначения.
>>1724557 >браузеру нужно использовать рефлексию и изучать код твоего расширения хороший пример >Если используешь Атрибуты, значит тоже используешь рефлексию разве это не обычная библиотека? Спасибо за ответы, впринципе прояснил - это как на WebApi делать эндпоинты для модулей, расширяющих функционал приложения. Поэтому я и спрашивал за то, как основной модуль узнает о всех новых - аналог метода со входящими параметрами.
>>1724515 → Вы с нуля проекты пердолите? Если да, то я смотрел спичи (часовые) на релизах - там были чуваки, которые толкали за архитектуру. Были ли мне полезны эти знания - нет. Делал себе заметки, пересмотрел даже, в голове остались 1-2 фичи, остальное - как смысло в унитаз
>>1724815 >>1724822 не факт, скорее всего просто проекты прикрыли на решетках. Я уже писал в прошлом треде - у нас так отдел распустили. Так что или прыгнешь на другой стул или пойдешь по ветру
>>1724563 >разве это не обычная библиотека? Что "это"? Если ты попробуешь создать свой атрибут, то поймешь, что без рефлексии он будет бесполезен, потому что понять, что у класса есть какой-то атрибут, можно только при помощи рефлексии.
Почему? Потому что тебе лень мозгами шевелить и хочется верить в чудо вида "вот щяс прачитаю мутанита и стану сишарпирам даа... вооот...."? У сайтов вообще нет никакого практического применения. Если тебе нужно краткое изложение и освежить память, то для этого есть исчерпывающая документация. Научить они ничему не могут. Вот и выходит, что их применение это подкрепление маняфантазий лентяев вроде тебя.
А у меня вопрос немного касающийся шарпа сбоку. Смотрите, есть клиент на Angular, очивидно я хочу логинить/регистрировать пользователя. Так вот, как мне передавать данные от пользователя? Ну, т.е. я понимаю, что не в открытом виде. Но какой механизм обычно используется? Скажем, если я на стороне клиента зашифрую информацию о нем с помощью SHA256, то как мне расшифровать это на стороне сервера это дело? А потом же надо заново зашифровать чтобы в БД сохранить, что в данном случае используют умные дядьки в качестве соли? Как же плохо, когда на твоей специальности не было криптографии и вообще вам просто говорили: не еби мозг и бери готовое решение.
>>1725055 Бери ASP.NET и не еби мозги, тебе всё правильно говорили. В любом случае, если ты не придёшь к уже готовому решению, то сделаешь только хуже.
>>1725065 Ну тогда бери готовое решение и смотри как сделано в нём. Ты ведь не настолько тупой, чтобы думать, что тебе сейчас в одном посте распишут путь по которому ты придёшь к готовому решению, верно?
>>1725134 ЯПеречеслитель< для типа ТэРесалт> ДайПродуктыСоСтока <для типа ТэРесалт>(Функция< для типов Продукт, ТэРесалты> выборщик)
А если серьезно, это женерик, на вход функции подается делегат функции, результатом которого будет TResult.
Скажем для инта это будет значить IEnumerable<int> GetProductsWithStock<int>(Func<Product, int> selector); что ты хочешь получить перечислитель типа int, для этого ты передаешь ссылку на функцию, для типа Product результатом которой будет int.
ХЗ понятнее ли тебе стало. Чтобы понимать это проще, нужно про женерки почитать и, соответственно, делегаты.
>>1725134 Да, вот тебе простой пример. Так конечно делать неправильно, но может быть суть яснее станет.На деле женерики почти никогда не нужны и использовать их следует только если ты знаешь что именно сейчас оно и надо. Да, про интерфейсы ничего не сказал, но суть, интерфейс это как-бы контракт между программистам, который гарантирует, что у объекта который имплементирует интерфейм будет какой-то набор методов -> указывая что в функцию передадут объект "ЯДрочлио" ты можешь не париться и более-менее быть уверен что у объекта будет метод "Дрочить" с определенной сигнатурой и ты можешь его использовать, а если все обвалится это проблемы того кто имплементировал интерфейс, а не твои.
Посоны, кто на питоне пишет в Visual Studio, объясните, почему при открытие отдельного файла, вне проекта, окно Class View пустое, как заставить среду, чтобы она парсила файл в любом случае, хоть в отдельном файле, хоть в проекте?
>>1725806 Окей. Поясни. Давай, мне даже интересно. По твоему женерки нужно во все дырки пихать? А может быть интерфейс это не обычное указание того что ты хочешь обьек, который имеет функцию с такой сигнатурой?
Немного покодил на шарпе. Много сахарка, но все же родные кресты мне ближе. А еще со строками какая то херота, зачем было делать string и stringbuilder?
>>1726486 Потому что во многих языках дрочат на иммутабельность, и строки здесь неизменяемые. И принято, если нужно сконкатенировать несколько строк, юзать билдер.
Ребята, только начал изучать шарп, сделал задание по созданию класса X содержащего массив из элементов другого класса Y и несколько методов. Сейчас второе задание: Customize X class using various types of statements and parameters. Может кто кто конкретнее объяснить что нужно сделать(с примером небольшим?)
>>1726473 >Давай, мне даже интересно. хуй привстал даже? Долбоеб второкурсник, который не знает за боксинг/анбоксинг? Или не знает за систему контроля типов? И ковариантность наверное не нужна? Прийдешь на галерку (если прийдешь, в чем я сомневаюсь по предыдущему посту) тебе там пояснят как нужно типы создавать. И попробуй такое на собесе пиздануть, что дженерики не нужны, не успеешь перднуть, как полетишь пинком под зад >>1726486 >string и stringbuilder system.string - статическая system.text.stringbuilder - динамическая Дрочилам по быстродействию и расчету байтов - инструмент оптимизации. Кресты лучше, бросай эту хуйню >>1726494 >во многих языках дрочат на иммутабельность ФП петух в треде, я спокоен >>1726495 >книгу по SQL u gonna be kidding me >>1726536 >Customize X class using various types of statements and parameters. как ты тогда учишь, если после первого задания ты бежишь на борду спрашивать что и как? Если хочешь начать осваивать ЯП первый совет тебе - научись находить решения самостоятельно
Помните я спрашивал про поиск пустых и жаловался на то что память жрет. Вы еще тогда посоветовали что-то типа: var freeID = _db.Users.Select(x=>x.ID+1).Except(_db.Users.Select(x=>x.ID)).OrderBy(x).First(); Так вот, я два дня мучался с таким вот способом, но EF упорно кидает ошибку The binary operator is not defined. Вот блин, что не так-то я делаю? Почему если я делаю это же но предварительно в лист запихнув ID все работает нормально(но жрет кучу памяти). Вернее я понимаю, это какая-то срань с IQueryable(наверное), наверное надо Where использовать, но блин. Аааааа. Я горю от своей тупости. Нахуй я в эту залупу полез-то? Да и вообще, имхо было бы проще реально написать просто SQL запрос, но типа же это не тру вей для .net'чика, но блядь, 2 дня проебать пытаясь эту срань сделать, когда мог бы за минуту написать нативный запрос. Пиздос нахуй
>>1727560 Че за база? Я проверял на SQLite все работало. Подключи логгер и посмотри что за запросы улетают в базу. Мне, например, еф генерировал cross apply. хотя sqlite его не поддерживает. А еще IQueryable не могет (но это не точно) в Equals, надо через == писать.
>>1724425 (OP) Привет скажите пожалуйста куда нажать если я прям совсем дурачок клинический(0 опыта в программировании) но очень хочу научиться сишарпу, ну или на крайний случай направьте куда то еще, спасибо! ну не надо писать там про всякое на сонную артерию себе нажми или на кнопку выключения компьютера не надо я правда интересуюсь
Там же есть видосы для совсем новичков, кроме того на рутрекере видеокурсы лежат. Вникай, гугли, читай, не ленись писать код и все комментируй для себя, как понимаешь. В последствии все это может тебе пригодиться.
>>1728623 Понял, спасибо. А сишарп вообще нормальная отправная точка? Или это прыжок выше головы? Не нужно какой-нибудь питон учить сначала? Или опыт в одном языке мало помогает в другом?
>>1728628 Если ты хочешь именно c#, то стартуй с него. Захочешь - вьедешь в любой язык, до определенного предела, который зависит от твоего стремления учиться.
Если сам не знаешь чего хочешь, то сперва определись для себя сам. Поспрашивай по тредам конкретные вопросы. Погугли. Так-то все высокоуровневые языки для макак и домохозяек делаются. Ничего сложного именно в освоении нет.
private void test() { bool flag = true; while (true) { try { if (!flag) ; if (Content())
Пацаны, я в шарп не в зуб ногой, но нужно переписать шарп на питон. Что значит строчка: if (!flag) ; Если flag = false, то что мы делаем? Ничего? Вызывается exception?
>>1728662 Просто я нихуя не пойму. Шизик старательно в функции меняет значения flag с True на False и обратно, но единственная проверка на этот flag это вот: if (!flag) пробел_;
>>1728710 Деда, ты от жизни отстал. В школах давно перешли на JS и питон. Между делам рассказывают про древние технологии времен палеолита, типа ПХП и джавы, но это так, для общего развития.
В общем, я бы хотел чтобы пользователь с правами суперюзера мог изменять настройки для моего приложения на лету. Скажем, он решит что сегодня мы не регистрируем клиентов, жмакнул в менюшке и контроллер при попытке регистрации будет отдавать 400 ошибку всем решившим зарегаться. Или что надо ограничить число единовременных подключений. Вот это вот все. Ну, собственно, как это сделать динамически? Все настройки-то я вынес в appsetting.json, там можно все настроить и при перезапуске оно сменится. А как теперь сделать чтобы это же из админской менюшки на сайте делалось-бы?
>>1728788 Да ничего не навешано. Буквально тот же запрос. Я думаю, может быть это связано с тем, что поле типа UInt32, а PG там беззнаковые по своему хранит(как bigserial) и провайдер запросов не понимает как привести к этому самому UInt32. ХЗ короче.
>>1728855 Проверил на домашней копии проекта и действительно все работает. ХЗ почему на работе не работает. Хотя там рассинхрон кодовой базы имеется в 4 месяца работы, может быть я там в каком-то другом месте пролюбился и теперь такая вот штука происходит.
Шарпаны, такой вот вопрос. Вот я написал свою программулину. А как теперь мне ее другим людям доставить? Ну, скажем я сделал файловый менеджер но работает он через браузер. Как теперь сделать так, чтобы человек мог установить себе мой файловый менеджер и потом при включении ПК он бы тоже запускался, без всяких плясок с бубном со стороны пользователя? Ну, т.е. да, я могу скриптик для павершела написать, который создаст сервис который будет в автозапуске, но у многих же скрипты павершеловские будут блокироваться и не каждый пользователь будет хотеть их вообще запускать. Вот я и подумал насчет инсталятора, но не совсем понимаю чем их делают для .net core. Я гуглил про доставку ПО клиенту и там куча примеров с Эйжур, а вот обычные консольные приложения, которые работают локально, как-то не особо освещаются.
Я хочу приконнектиться в базе данных, написал в App.config блок connectionStrings, написал саму connectionString. А когда с самим кодом работаю - у меня System.Configuration.ConfigurationManager.ConnectionStrings[name].ConnectionString нихуя найти такую ConnectionString не может. В чем может быть проблема?
>>1729072 Алсо, даже через дебаг посмотрел - у меня ConfigurationManager.ConnectionStrings имеет один элемент. Только это нихуя не тот элемент, что я вручную добавляю. А элемента, что я добавляю, и вовсе нет.
>>1729093 «Явно» уебищно звучит. Я активно топлю за максимальное заливание в рус.яз англицизмов. Тем более в программировании, где английский - доминирующий. Русский вообще неудобный устаревший язык, единственное его спасение - форсированная модернизация, через займ слов и оборотов из актуальных языков.
>>1729089 >эксплицитно хуясе какие слова умные. Ты чей будешь, холоп? >>1729123 true >>1729350 >заливание в рус.яз англицизмов. просто ты долбоеб и перхоть подзалупная. Не выебывался, а написал бы уже explicit, раз ты так любишь ангельский. Странно, что ты задаешь вопросы на русскоязычной борде, а не на reddit/4chan/SOF. Тут твоими аглицизмами тебе по губам проведут и об щеку вытерут
>>1724425 (OP) There are, of course, benefits and drawbacks to this kind of a setup, which we’ll discuss in Chapter 40, but it turns out to be a good idea for everything except low level stuff, like an operating system or a device driver. C# is a bad choice for things like that. (Try C or C++ instead.) Тут говорится о том, что Сишка это хуёвый язык для операций относительно системы компутера или о том, что это хуёвый язык для новичка?
>>1729409 >except low level stuff, like an operating system or a device driver причем тут новичок? Автор правду написал, что низкоуровневые задачи типо драйверов или ковыряние в ОС не решается с помощью C#
>>1729438 > Once the AOT compiler was far enough developed, the team then started to code the kernel. This was met with long periods of inactivity and few active developers due to lack of interest in unsafe kernel programming. Ядро пришлось делать унсейф, так что шарповики обосрались и слились, высрав какой-то 0.0.1.
Сап, есть ли интернет уроки типа CodeAcademy, но где предложат пройти тест и выявить плохо выученные темы, а затем их выучить, вместо прохождения всего курса с полного нуля?
>>1730393 Идешь на кодворсы и решаешь задачки. В процессе поймешь, что на хорошо выучил, а что - хреново. Плюс задачки там прикольные на самом деле, забавно позалипать, после очередного дня крудошлепанья и поймать себя на мысли: А не все еще забыл-то.
>>1730818 Ну ок. Давай я поспрашиваю. 1. Ниже, какой результат выведется в static void swap<T>(T a, T b){ T temp = a; a = b; b = a; } static void Main(){ int a = 10; int b = 20; swap(a, b); Console.WriteLine(a); Console.WriteLine(b);}
2. Вот код класса. Какие в нем есть проблемы? Как их исправить? public class Class1 : IDisposable{ private CancellationTokenSource cts = new CancellationTokenSource(); ... public async Task LongRunTask(){ while(!cts.Token.IsCancellationRequested){ ... }} public void Dispose(){ cts = null; }}
3. Ниже код. Что выведется в конcоль: int i = -1; Console.WriteLine(string.Join(",", BitConverter.GetBytes(i)));
4. Ниже код. Что в try{ Console.WriteLine("A"); throw new InvalidOperationException(); } catch(InvalidOperationException ex){ Console.WriteLine("B"); } catch(Exception ex){ Console.WriteLine("C"); } finally{ Console.WriteLine("D"); }
5. Ниже код. Что в коносль?
public interface I { public void Foo(); } public abstract class A : I { public virtual void Foo() => Console.WriteLine("A"); } public class B : A{ public override void Foo() => Console.WriteLine("B"); } public class C : A{ public new void Foo() => Console.WriteLine("C"); } class Program{ public static void Main(){ A some1 = new B(); A some2 = new C(); List<I> lst = new List<I> { some1, some2 }; foreach (var i in lst) i.Foo(); }} Почему? Как исправить не меняя внутренности классов?
6. Ниже код чему будет равен y после выполненения. object x = new object(); int y = 100; while(x!=null && --y>10) { if(y==50) x = null; }
Ну, набросал то что было на первом курсе. Довольно примитивная хуйня. Правила простые. Дал ответ - проверил. Отетил правильно +1 балл, неправильно -2 балла. Полез сначала проверять перед ответом -5 баллов. Если сумма меньше 10 - читай CLR via C#. Если меньше нуля - иди на метанит.
>>1730915 >Если сумма меньше 10 - читай CLR via C# >Отетил правильно +1 балл >дает 6 вопросов Ебать студентота тупая пошла, земля пухом
P.S. Вопросы ака - задрочи на собесе. Я когда то вызубрил такую же залупу, но интервьер задал другие вопросы. Я конечно же обосрался на них и предложил - давай теперь я. В итоге обосрались мы оба. А я получил работу. Fin
>>1730933 > Ебать студентота тупая пошла Кто-то шуток не понимает. > Вопросы ака - задрочи на собесе Хуй знает, обычные вопросы на знание синтаксиса. Примерно такие были чтобы допуск к экзамену на первом курсе получить. Ну и да, я как-бы работаю уже 3 года, а ВУЗ 2 года как окончли. Не надо тут про студентоту рассказывать.
>>1730944 всегда проигрываю с такой хуйни на собесах типо string.Join(",", BitConverter.GetBytes(i))); или про алгоритмы сортировочки и поиска. Самое главное не зарофлить с каменного ебала интервьера
>>1731079 Следи за запущенными процессами. Я вот один раз не следил и у меня в фоновом режиме висело порядка 1к процессов хрома, которые жрали всю память и нагружали процессор до соточки.
>>1731079 SharpDevelop используй, летает на калькуляторах, не лезет каждый день обновляться, правда не поддерживает последние версии C#, но кто их использует?
>>1731079 Студия, мать твою, это дебагер. Никто в здравом уме в ней код писать не будет, блядь. Тебе дали нормальные редакторы, тебе дали ебучий VSCode, Райдер. Нет, блядь будем на этом перегруженном говне кодить. Оно годится только когда у тебя реально маленький проект, ну 3-4 строк и это чисто шарп, без всякой JS-хуйни. Иначе - соси бибу, оно будет поперживать и тормозить и хуй что сделаешь.
>>1731887 Проиграл с этого смузихлеба, который купил себе ноутбук вместо станционарного компьютера, а теперь сосёт хуй и вынужден кодить в обрубках, а не полноценной IDE.
>>1732079 Наверное 24гига и i7 5 летней давности это мало, чтобы, блядь, код писать и подсвечивать и иногда по ссылкам прыгать. Странно только что vs code с миллиардом, блядь, расширений работает без тормозов, на проектах в несколько раз больше тех, на которых студия уже начинает вызывать дискомфорт при работе. Даже не знаю с чем это может быть связано, уж точно не стем, что ебучая говностудия в 2020м все еще 32 битная, при том что она с ходу 2 гига на среднем по размеру проекте сжирает.
>>1732144 У меня на среднем ноуте со студией, в которой подгружено с сотню проектов и основным проектом в котором содержится совокупно под полторы тысячи строчек кода, 0 проблем с производительностью. Стартует за секунды, запускает дебаг почти мгновенно.
>>1732144 Конечно, конечно мы тебе верим, долбоеб, который хочет сказать, что говно запускаемое в браузере (Electron) и написанное на жопаскрипте, работает быстрее, чем программа написанная на C++
>>1732221 Так на С++ можно очень обосраться с памятью и перфомансом, если криворукий, а жс такого говна не позволит и оптимизирует все в виртуапльной машине.
Собираюсь вкатиться в си шарп. До этого не изучал ни один язык программирования. Знать математику для этого языка необходимо? Английский нужен для него, и на каком уровне, если нужен? Расскажите, какие подводные есть. С меня как всегда
>>1732234 Если ты для себя решил этим заняться, то похуй на матан и на инглиш. А вот логическое мышление и хорошая память тебе точно не помешают. Инглиш удобен, потому что на нем больше всего учебных пособий и видосов. С другой стороны до каких-то пор можно обходится русскоязычным контентом.
Смотри видосы, читай книжки, гугли, быдлокодь, когда начнешь хоть что-то понимать. В любом случае - это дистанция на годы, скорее всего сам все поймешь, успеешь только совершить несколько шагов.
>>1732231 >если криворукий Ну да, только таких в топ IT компанию и берут. >а жс такого говна не позволит Позволит и будет молча сжирать очередной гиг оперативки и десяток процента процессорного времени.
>>1732234 > Знать математику для этого языка необходимо? Нет ни одного ЯП, где знать математику необходимо. Другое дело, что для решение задач она часто полезной оказывается. > Английский нужен для него, и на каком уровне, если нужен? Нужен как и для любого другого языка. Минимальный уровень - свободно читаешь документацию и можешь пересказать что там было написано. > Расскажите, какие подводные есть. Работы мало, требования для вката не самые низкие. Очень много неочивидной хуйни. Большая часть примеров что ты найдешь в интернете предполагает, что ты либо жаву либо си знаешь и писал что-то комерческого уровня. Да, еще куча пидрил говорит что знать весь фреймворк не обязательно, дескать пользуйся тем что нужно, только блядь такой подход приводит к тому, что ты не всегда знаешь что же там есть, пилишь свой говновелосипед, а оказывается, что решение есть в фреймворке и оно охуенное, т.е. таки надо выучить фреймворк, помимо языка.
>>1732255 Что ты под "одной цельной команды" подразумеваешь? Если хочешь писать: Console.ReadLine()/Console.Read() Без Console., то напиши директиву using вот так: using static System.Console; И можно будет писать: ReadLine()/Read()
>>1732277 Я хочу, чтобы в любую переменную в шарпе можно было ввести данные одной командой без конвертации строки в нужный тип и разведения на хуй не упавших лишних строковых переменных для этой самой конвертации. Чтобы можно было делать так int a; a = Console.Readline(); а не вот такую вот хуйню городить string stroka int a = 0; a = Convert.ToInt32(str = Console.ReadLine());
И кстати, какого хуя шарп обязывает меня всегда и везде при объявлении нестроковой переменной задавать ей какое-то начальное значение, даже если она всё равно его получит во время компиляции? Может, я не хочу? Почему тогда строке можно не давать начального значения? А?!
Я вот учился в ВУЗе и мне говорили, что использовать статические классы в шарпе - зашквар. Вот я и не использовал. Ну так вот. Но вот я решил свой проектик делать, составил сам себе ТЗ. И я стал себя ловить не мысли, что часть некой логики же все равно было бы удобнее в статический класс запихнуть. Скажем, вот у меня есть настройки приложения, я хочу чтобы их было можно менять в произвольный момент времени и это отражалось на всю программу. У меня есть два пути - сделать сложную ООП хреновину с менеджерами настроек, контроллерами и прочим, могу сделать синглтон, который, по сути будет тем же статическим классом, а могу ебануть статический класс AppSettings, в котором добавлю событие изменения настроек на которое будут подписываться те кому надо и изменять свойства в зависимости от настроек. Где я проебался? Что я упускаю? Вроде же это как раз KISS и все такое.
>>1732297 Сделай варпер. Делов-то. public static class Halpers{ public static int ReadInt => int.Parse(Console.ReadLine()); public static string ReadString => Console.ReadLine(); }
Вынеси это в свою библиотеку и потом просто: int a = Halpers.ReadInt; string b = Halpers.ReadString;
>>1732319 В любом реальном продукте тебя считывать/записывать с консоли в 99.9% случаев не нужно будет. Плюс, твой cin - такой же варпер вокруг потока ввода, внутри которого лежит перегрузка оператора битового сдвига, в шарпе дизайнеры решили ограничить возможности перегрузки операторов и такой свободы как в плюсах тебе не дают, и ИМХО это правильно. Блядь, как же сука охуенно на первом курсе-то было, когда под видом си нам давали еще огрызки плюсов, и сука вот я читаю книгу про си, там написано >> - оператор битового сдвига вправа, ну, это понятно, но какого хуя если он перед этим самым cin стоит я записываю в переменную-то? И вообще, что блядь за cin такой сука. Хорошо хоть после первого курса нам нормального препода дали, который мало того что на шарпах учил, так и всю эту хуйню объяснил и когда на третьем снова начались плюсы, но уже у нормального препода, вся эта хуйня вопросов не вызывала.
>>1732323 Почему так в шарпе понятно - ReadLine() возвращает string. Поэтому для инта надо парсить полученную строку. Лень гуглить этот процесс для крестов. Хитрая перегрузка? Замуты с обжектом?
https://ideone.com/R9VWiP Вот допустим, я хочу сделать коносольную игрушку. Вот пример того как я это примерно представляю Ну и в чем суть, я не совсем понимаю, как без доступа к миру предполагается что некий эктор должен знать что делать, кроме как изменять свое состояние? А как должно контролироваться, что эктор не выйдит за границы мира? Ну, просто допустим, у в методе TickAction напишу логику, типа это яблоня, каждые 20 тиков оно может яблоко произвести, таким образом увеличивая число яблок на себе. Как мне сделать так, чтобы потом кто угодно мог подойти к яблоне и сорвать яблоко? Я не свовсем это понимаю.
>>1732591 Игровое поле - двумерный массив чаров, адресное пространство x и y. Существа - экземпляры класса с полями текущаяПозиция, новаяПозиция. Позиция моба - адрес в двумерном массиве. Прежде чем присвоить новую позицию мобу, проверяешь пару значений на соответствие адресному пространству массива.
Существо может "осматриваться" вокруг себя занося в одно из личных полей список всех адресов, рядом с которыми находится. Может проверять адреса вокруг на символы, занесенные в двумерный массив. А может проверять эти адреса на соответствие значению полей других мобов/объектов игрового мира текущаяПозиция. Если совпадает - там кто-то есть, надо убегать или взаимодействовать.
>>1730915 1. 10 20 ибо не ссылочный тип. Переебало бы, если бы через реф аргументы передавалось. 2. Три точки внутри класса? Ну cts станет нулом при диспозу и нуллрефернс будет. Еще что-то? 3. Хуй его знает. 4. A B D 5. B A ? Исправить? Вызывать С.Фу() без приведения. 6. 50
Почему нигде не получается нормального ответа найти на то как делать установщики для .net core приложений? Не запихивать же просто в архив то что опубликовал в папочку? Да и даже так, у пользователя может СУБД есть и там оно все настроено и нужно имя-пароль для того чтобы создать базу данных для приложения, не заставлять же его лезать в файлик конфигурации, чтобы он сам там настраивал все, было бы правильнее, чтобы при установке это дело настраивалось.
>>1733190 Потому что ты гуглить не умеешь. Я даже видео наше двухчасовое в котором пошагово показывают как делать инсталляторы. Придется тебе через WPF/WinForms делать собственный, это не так уж и сложно.
анон, подскажи. вот есть база данных в MS Access. Есть прога через WPF. подключаюсь к базе акксеса через OleDb
теперь собственно вопрос, для программирования нужно ли чтобы стоял сам офис? или оно спокойно будет работать с базой без офиса (ну там как просто с файлом)?
Просто как получилось - на работе есть лицензионный офис. Не успеваю со сроками, хочу на выходных дома поработать с кодом (удаленный стол - говно решение и не удобно). Но дома нет лицензионного офиса, взломанное говно также не хочу ставить (и вообще не хочу ставить)
Мне с базой не нужно работать - я просто пишу фронтенд над данными из нее. Структура таблиц у меня в отдельной доке, так что мне даже открывать базу не надо
>>1724425 (OP) сап, погромисты, мне нужно сделать кастомный генератор контекста подключения к БД, чтобы при генерации модели из БД контекст выглядел так, как я скозал, но пробема вот в чём: у entity framework DBContextGenerator доступен только для Pro версии VS, а на моей галере такого ещё не завезли, сидим на community, есть какие-то способы решения проблемы?
>>1733290 Неужели проще выкатить простыню текста на двач, чем сделать запрос в гугель? >you don't have to install ms office in the pc, all you have to do is installing Microsoft Access Database Engine. You can download it from : https://www.microsoft.com/en-us/download/details.aspx?id=13255
>>1733472 спс. Ну гугл упорно менял запросы на "как подключить access"... А читать все эти сотни статей в поисках одной строчки... Всеже проще на дваче спросить
Блин, я чет не догоняю. Смотрите, я поставил райдер и он мне говорит что половину моих методов хорошо бы в статичные переделать. Но ведь блин, как я понимаю в этом случае будет создан статичный объект, который так и будет все время висеть просто не имея доступа к остальным методам/свойствам класса. Или я что-то не так про статику понимаю? Поясните, если не сложно.
Наверное глупый вопрос. Но что считается более правильным подходом в плане разбиения по папочкам? Просто смотришь одни репозитарии, там разделяют как-бы по близости решаемой задачи; смотришь другие, там люди по паттернам, типа: Controllers, Views, Builders, etc. А кто-то вроде в проектикие с нормальным числом звездочек просто в одну папку все складывает. Вот и как решать как организовывать код проектика?
>>1733864 По логике разбиваешь и всё. Что тут сложного? Ты же для удобства это делаешь, как ты будешь в каше из классов определять что к чему принадлежит и что с чем связано логически? Все общие классы для приложения оставляешь в корневой папке, что-то более конкретное кидаешь по отдельным папкам.
Смотрите, я вниманиеблядь и мне скучно просто сидеть в своей конторе и делать программы, которые никто почти и не видит. Вот. Хочу замутить канал на ютубе с уроками по шарпу. Но я сам всего год опыта работы имею. Нормальная ли это идея? Кто-нибудь из местных такое делал? Может быть идей для первых видяшек подкините? А то не хочется скучные лекции уровня вуза с простым пересказом того что есть в книгах.
>>1734227 щас тут набегут моралисты и начнут доказывать что такие недоучки учителя не нужны.. но я вот что тебе скажу - делай.
Это тебе же будет полезно - есть такая поговорка "лучший способ изучить и понять тему, это попытаться объяснить эту тему кому-то другому". Когда начнешь этим заниматься на серьезном уровне, набьешь и себе опыта.
>>1734227 >Хочу замутить канал на ютубе с уроками по шарпу Очередной канал по шарпу, прошу заметить. >программы, которые никто почти и не видит Видео твои тоже почти никто не увидит. >идей для первых видяшек подкините? А то не хочется А сами виде за тебяя не сделать?
На ксамарине можно вызвать любую c++, либу? Или надо перекомпилировать под shared? Автор либы про какой-то специальный компилятор говорит.
Нужен детект nsfw контента, на дотнете нихуя нет, js не запустишь, питон тоже. Нашел какую-то китайскую библиотеку, но она на плюсах Обещают 80 мсек на изображение, что очень даже хорошо
>>1734227 Чому нет, делай. Буду твоим постоянным зрителем. Только техническую часть не зафейли. Я имею в виду звук, картинку, оформление.
Можешь начать с примитивщины. Хотя на самом деле и так на каждом втором тематическом канала на ютубчике лежит видос "Шо такое массив", "Шо такое переменные" и тд. Так что сомнительно это. С другой стороны аудитории нравится "старт с нуля" под руководством нового ментора, который уж точно приведет своих подопечных к новым вершинам мастерства в программировании.
Вкатываюсь 4 месяца и параллельно мониторю вакансии. Какого хуя они уменьшаются? Осенью же .нет5 будет. Как бы не пришлось на жабу уползать, еще и батя через 3 месяца выкидывает с хаты.
>>1734417 Где живешь? У нас в городе 1/2 вакансии висят как до короны, в апреле было тупо 0 До какого уровня дошел за такой срок? >>1734227 > Хочу замутить канал на ютубе с уроками по шарпу. А ты сам хоть в раз жизни пользовался видеоуроками? Это же медлен-н-но. Может, у тебя есть какая-то фишечка, которая выделит тебя среди толпы инфоцыган? > Но я сам всего год опыта работы имею. Я тоже. В свободное время изучаю фронт, cs и иностранный язык нихуя не продуктивно > Нормальная ли это идея? Анон, не то чтобы я тебя дизморалил. Хочешь – пробуй. Но выхлоп сомнительный, как по мне
>>1734428 >А ты сам хоть в раз жизни пользовался видеоуроками? Ну к примеру так перекатывался на шарп. Я раньше был сиплюсплюснутым, решил перекатиться, но читать мануалы по шарпу было так лень... Поэтому просто пошел в ютуб и стал смотреть что интересно
>>1734553 >>1734428 сейчас бы судить по источникам информации, эх. Какая хуй разница, хоть по шрифту Брайля учить, главное чтобы мог решать задачи бизнеса. Какие же двачеры убогие
>>1734553 Скучно смотреть как пчел что-то в иде пишет, не имея возможности скопировать, не имея автотестов под задачи. Ещё говорят все как один медленно, ставить надо 1,5 ускорение. У тебя был опыт в языке из семейства С, а значит, шарп нормально зайдет, можно просто смотреть. Уроки для нулевых – это другое Сам Троелсена прочитал процентов на 40, потом Рихтера моментами прочитал. Потом на ulearn сидел – там после каждого занятия задачи с автопроверкой – это норм. А дальше ходить по собесам, писать петпроекты, изучать асп, паттерны и все остальное >>1734588 Да ты можешь хоть на глиняных дощечках клинописью преподавать, только кому оно нахуй усралось
>>1734615 причем тут преподавать к изучать? Кому то лучше видосики смотреть, кому то книги читать. Главное, чтобы результат был. Найдутся задрочи, которым и то не так и так не так. Сразу вспоминаю долбней, которые переворачивали мышки и зазубривали хоткеи в IDE, чтобы "КАК ХАЦКЕР, С ОДНОЙ КЛАВОЙ"
Есть сайт инфу с которого я хочу спарсить, но вот проблема он ее подгружает как-то хитро через javascript/ajax (минимизированный скрипт на 1 млн символов), если тупо загрузить сайт через restsharp, webclient, httpclient, то будет страница без нужной мне инфы. Так же по мере скроллинга сайт подгружает инфу которую я хочу спарсить. Каким образом можно спарсить такую вещь? Если через отладку браузера смотреть, то видно что в ответ сайт присылает нужный мне json, но вот как получить ссылку на этот json через код я без понятия, ссылка на него состоит из каких-то хешей явно и длиной в 1000+ символов.
>>1734623 Ясно) >>1734669 Посмотри в браузере, какие xhr идут к сайту. Вообще, тема изъезжена, найди какой-нибудь мануал да скопипасти. Типа "парсинг spa c#" >>1734693 Удобно делать mvc, webapi
>>1734669 В глаза ебусь, не получается запросы повторить? В чем проблема длинной ссылки? Присоединяюсь к анону выше, показал бы ссылку на сайт, интересно
Я чет обходил стороной blazor, но вот создал ради интереса стандартный проектик и блин, прикольно же. Не дропнут ли майки технологию? Хочется попробовать уломать коллег попробовать, а то сишники в шарп с трудом въезжали и для них ЖС это пиздец как чуждо, а фронтендеров которые шарят за все это, для нашей команды нанять - дорого.
>>1734767 Либо wasm заставлять грузить клиента хуй кто пойдет, только если не дашборда для своих Либо держать с каждым клиентом канал и слать изменения по нему. Я не знаю, сколько соединений gRPC выдержит один типичный серв. Не подскажешь цифры?
>>1724425 (OP) приветствую рабочий класс! с октября изучаю шарп (видосики, практика). на карантине прочитал "Fundamentals of computer programming with C#" на английском. у меня одно желание- вкатиться наконец в IT в ДС2 в идеале с дальнейшей релокацией в северную украину (канаду). помимо шарпа знаком с SQL, делаю взаимодействие БД с клиентским приложением как пет-проект. что посоветуете освоить дабы вкатиться?
>>1734792 Чтобы вкатиться, надо, блядь, показать что ты задачи решать умеешь, причем быстро и без лишних усложнений. Если придумать не можешь, вот тебе идеи: 1. SMTP-сервер 2. Программа учета времени(усложненная версия туДу листа). При добавлении однотипных задач, ты высчитываешь коэффицент ошибки и выдаешь примерное время завершения задачи, на основе данных, которые получил до этого(для простоты можешь среднеквадратичным отклонением пользоваться), к этому прикручиваешь веб-интерфейс + api для сторонних приложух. 3. Библиотека UI-элементов для коносли. Очивидно, она должна быть работать с мышкой, уметь в drag'n'drop, быть кроссплатформенной. 4. IRC-сервер поддерживающий кроссерверную передачу сообщений. Т.е. клиент может быть подуключен к твоему серваку, но они сервера объединяюстя в сеть и если получатель есть на другом - ты передашь сообщение ему. 5. Игрушка. Простая мульиплеерная 4X стратежка, с ресурсами и глобальными событитиями, которые может генерировать сервер. 6. Асинхронный TCP-сервер с возможностью расширения под любой протокол без лишних телодвижений. Т.е. твой сервер - канал связи, а пользователь библиотеки может просто впихнуть туда свой протокол обзщения, он не должен знать как у тебя прием соединений ведтся, не должен думать о том, какой таймаут и прочее, не знает ничего про то как ты собираешь сообщения, не знает про буфферы и прочую срань, он просто имплементирует интерфейс IProtocol и все само сабой должно работать, хоть он туда HTML впихнет, хоть SMTP, хоть свой придумает. Если хотя бы что-то из этого будет у тебя на гитхабе, и ты сможешь продемонстрировать работу и код, то вкатиться не составит особого труда куда угодно. Причем сразу на должность мидла.{/SPOILER]
Приветствую Столкнулся с низкой производительностью OpenCV (в частности matchTemplate) Очень сильно грузит процессор, и скачет память во время работы У кого нибудь был опыт сравнения OpenCV с альтернативами в плане производительности? (Accord.NET например) или может быть кто то знает более производительные альтернативы?
Сап пр. Есть одна БД. Надо составить запрос который связывает таблицы "Болезни" и "Лекарства" по полю "Код лекарства", "Код лекарства 1", "Код лекарства 2" и "Код лекарства 3"). БД уже заполнил
С помощью LINQ2SQL я наговнокодил два класса которые связаны с БД. С помощью LINQ попытался связать две таблицы(пик1) и прихуярить к datagridview. Я знаю, что в коде я беру названия для препаратов из одной и той же хуйни, но я не знаю как по другому. Поэтому и пишу сюда
Вместо нужной хуйни у меня получается пик2. Вот(пик3, там значения разные как раз таки) правильные значения из таблицы.
По сути мне нужно вытащить med_id_first, med_id_second, med_id_third из таблицы и посмотреть названия препаратов с соответствующим med_id_порядковыйномер (к примеру med_id_first будет "Анальгин", а med_id_second будет "Но-шпа")
Или можно как-то реализовать запрос по другому? в курсе на счет правил наименования, это чуть позже переделаю
>>1735104 Няша, юзай EF и не парься. Срсли. Там настроишь многие-ко-многим и просто сможешь доставать что тебе надо прямо из класса модели без всех этих джоинов-хуеинов.
>>1735200 Да а как запрос-то написать сука? "Болезни (Связывает таблицы "Болезни" и "Лекарства" по полю "Код лекарства", "Код лекарства 1", "Код лекарства 2" и "Код лекарства 3")"
>>1735201 Сделай таблицу лекарства Сделай таблицу кодЛекарства, в которой будет поле лекарствоИд Потом свяжешь коды лекарства
Анон, очень сложно вникнуть в то, что ты написал. Даже не сложно, а лень, это какое-то дерьмо – я так понял, что ты захардкодил три кода лекарства. А если четвертый появится? Делай правильно
>>1735200 > Насколько помню, в еф который кор нет многие-ко-многим Нет в том виде в каком это было в обычном EF, но ничего не мешает тебе запилить самому модельек вида: IEnumberble<A> as IEnumberble<A> bs
и при конфигурации сущностей запилить эту связь раками. Все равно один раз это напишешь и можешь из любого места доставать то что тебе надо.
>>1735223 Говоришь преподу: Это какое-то говно. И делаешь нормально.
Вот тебе примерный код того как обычно люди делают https://ideone.com/CALmkx Посмотри и адаптируй под свою задачу. Да, кажется что это усложнение, на деле же так потом проще будет, базарю.
>>1735408 К сожалению меня пошлют нахуй ибо я уже один раз прислушался с своему сердцу и сделал так, как считаю нужным. В итоге сказали, что в первый раз не снизят оценку, но в следующие - будут. мне похуй на оценки, но в таком случае я буду получать хуй за щеку, а не деньги
>>1735418 Но ведь хуйню просят делать. Ты им скажи, что есть, блядь, нормальные формы, их не долбоебы придумали. Третья нормальная является, блин, стандартом хранения данных в реляционках. Банально ты избегаешь дублирования, в случае если болезнь лечат 2 колесами не нужно будет null вставлять, null в реляционках считается редкостной хуйней, которую лучше не использовать в самих таблицах, опять же, ты можешь поверх представление(вьюшку) сделать в том виде какой просят в задании, но при этом потом можешь, если надо, и 5 колес выводить, и 10, и 1, можешь все симптомы объединить в строку и выводить в одном столбце и т.д. СУБД же тоже не тупые, там есть куча способов работы с тем что в таблицах хранится. Опять же, в приложухе можешь уже вьюшку тянуть, причем тебе даже не нужно будет ничего объединять, ты на стороне СУБД это сделал и просто тянешь, если надо что-то добавить/отредактировать - тянешь из СУБД хранимку, которая в том виде, в котором надо добавит/обновит. Хотя бы для себя сделай нормально, а преподу показывай результирующие вьюшки в том виде, какой просят. Ну серьезно, потратишь чуть больше времени, зато со спокойной душой жить будешь. И вообще, ХЗ что за преподы такие. В моей шараге, например, если просили сделать сортировку пузырьком для лабы, а ты делал квиксорт, тебя только хвалили, если нужно было написать консольную приложуху, а ты делал на формах, тебя в попу целовали и говорили: "Смотрите, какой анон инициативный, берите с него пример!". Да и когда работать пошел, если какую-то полезную штуку реализовал, вне рамок ТЗ, но уложился в сроки и оно работает нормально, никак особо не влияя на остальные фитчи, ни разу не было такого, чтобы кто-то был недоволен.
>>1735426 Нет, офк. Сами ссылки значимые и в метод прилетают копии ссылок, все жонглирование происходит с локальными ссылками и никак не затрагивает ссылки из мэйна. Да и хз как ты вообще к 20 20 пришел.
>>1735543 Потому что в том примере a = b; //ссылка на число 10 заместилась ссылкой на число 20 b = a; //ссылка на число 20 заместилась ссылкой на... число 20
А ссылка, которая была в _а перешла в _temp, но так там и осталась.
Так что если везде, где надо дописать модификатор ref, то результат будет 20, 20. Потому что ссылка с числом 10 была проебана в методе.
Сосаны, поясните мне за Dependency Inversion Principle. Суть такова: у меня есть проект на винформочках, который в рантайме присасывается к БД и делает к ней запросы. Собсна я насоздавал интерфейсы для классов, создал класс, который эти самые классы создает. И все бы нормально, но: 1. Как реализовывать Dependency Inversion для винформочек? Создавать пустой интерфейс? Потому что извлечь его рефакторингом я не могу, да и извлекать нечего: все методы формочки приватные. 2. Как реализовывать Dependency Inversion для работы с БД? У меня есть класс, который работает с БД, и он по сути строки БД запихивает в классы-контейнеры. То есть у меня есть таблица People, я делаю запрос к БД и у меня формируется List<Person> уже в Шарпе. Для этого я использую Query<T>, но вот проблема: Query<Person> работает на ура, а Query<IPerson> ломается. Если Query<T> не жрет интерфейсы, то как реализовывать Dependency Inversion для запросов к БД? Или я чего-то не понимаю?
>>1736072 Не обязательно интерфейсы использовать, если нужно использовать какие-либо поля или методы, то используют абстрактные классы. Главное чтобы объявление этого абстрактного класса было на уровне выше, чем его реализация.
>>1736076 Разве интерфейсы - это не публичные абстрактные классы? В чем будет разница между созданием интерфейса и созданием абстрактного класса тогда?
>>1736079 Хуй знает. Дает ArgumentException. Насколько понимаю по стактрейсу - проблема в том, что System.Reflection.Emit.DynamicMethod.Init не работает с интерфейсами, якобы "недопустимый владелец типа". Но что это значит - я понимаю крайне слабо.
>>1736201 Охуеть, это такой троллинг? Очевидно, что создавать нужно не экземпляры абстрактных классов и интерфейсов, а классы которые реализуют интерфейсы/абстрактные классы. И принцип DI, как раз заключается в том, что определение интерфейса/абстрактного класса лежит на уровне выше и отдельно от его реализации, делая основной класс независимым от дополнительных классов.
>>1736283 Я понимаю. Но Query<IPerson> у меня нихуя не работает, Query<Person> не подходит для DI, а передать нужный тип через переменную в <> нельзя. Потому я и не понимаю, че мне делать.
>>1736072 Ты какую-то хуйню собрался делать. Серьезно. Классы моделей никто не выносит в интерфейсы. Просто потому что это уровень модели нахуй ломает.
А насчет инверсии зависимостей для работы с БД, обычно под этим подразумевается, что ты выносишь провайдера в интерфейс и у тебя обращение к БД идет через какой-нибудь IDataStore<T> в котором есть все нужные тебе методы для работы с этой самой БД, Add/Remove/Update/Get/GetRange/GetAll. И потом ты можешь заинжектить в нужный тебе класс и доставать своих персон. Пример этого есть тут https://github.com/dotnet-architecture/eShopOnWeb
В интерфейсы выносятся сервисы и классы которые какую-то работу совершают, например обработка оплаты заказа, сборка странички с данными по оплате, логгирование, системы оплаты и это вот все.
>>1736449 Спасибо, анонче. Было чувство, что модели в интерфейсы не выносятся, но я немного слишком увлекся. А что насчет винформочек? С ними надо что-то делать или оставить?
>>1736556 Блядь, почему я должен за тебя гуглить, если ответ на 1й ссылке? Патч для 64 битной поставил, сука? Или меняй разрядность приложения на 32 бита.
> Resharper Пиздец. Что в нём хорошего? Search everywhere умеет и студия, и VS Code по Ctrl + T. Какие там, блядь, рефакторинги? Отвратительно долгий rename class/interface/variable (в который имеет студия и вскод, опять же, и в разы быстрее) с уёбищным ненужным rename in comments?
> Третьим пунктом WinForms и WPF, шестым про Xamarin Десктоп умирает. WinForms актуален для студентов говновузов, WPF функционален, но с уёбищным XAML. Мобайл дева на шарпе катастрофичеки мало (12 вакансий «Xamarin» — СПб) На месте этого вопроса должно быть что-то по ASP.NET (ASP.NET — 104 вакансии СПб, WPF — 29 вакансий).
> Для мака и никсов самый юзабельный вариант - MonoDevelop Для мака и никсов самый юзабельный вариант — VS Code.
> Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны... Шапка 1999? Уже давно райдер выпустили.
> Охуенное расширение для студии Format document on Save В VS Code из коробки есть. В студии разве нет?
> Indent Guides - показывает вертикальные линии на каждом уровне отступов В студии из коробки есть.
> Литература Не увидел здесь: Pro .NET Performance: Optimize Your C# Applications Microsoft SQL Server 2012 T-SQL Fundamentals SQL Server Execution Plans
>>1737010 Как ты живёшь без решарперовского автоимпорта неймспейсов? Это же отвлекает, пиздец. Собственно, этой фичей они меня и купили Навигация по контролёров в аспе
Сдавал ли кто 70-486 сертификат? Сдал в начале года 483, и еще есть время до января сдать 486. Сложно учить как-то очень странние вещи по WCF, azure, mvc 4-4
>>1737010 > Resharper >Что в нём хорошего? Ренейм класса не работает через раз как в студии, при переносе в другой неймспейс, всё автоматически правится, а в студии тебе ручками неймспейс править нужно. В Студии нет подсчета ссылок на метод, класс, поля и т. д. Также встроенный конструктор ToString который автоматически перезаписывает его и добавляет вывод всего стейта в текст. >ненужным rename in comments? Ну если ты даун, который в комментах ничего не пишет, то это не значит, что все такие.
>>1737010 + про решарпер еще вспомнил, что он автоматически предлагает заменять старые конструкции на новые, например обычный switch на switch expression и вообще подсказывает если можно уменьшить количество кода.
>>1737152 > Студии нет подсчета ссылок на метод, класс, поля и т. д. А это что?
Другое дело что студия при том же поиске оч тормозит, особенно в проекте с ангуляром, который хоть раз собирался. Это пиздец какой-то начинатся. А ебучий Райдер нормально так работает без особых проблем.
>>1737220 >Часто ты кидаешь классы из папки в папку? Да, особенно на начальных стадиях, когда структура проекта постоянно меняется и дополняется. >Что писать-то? Всё что поможет тебе и другим понять работу кода без необходимости читать непосредственно сам код.
>>1737229 > Решарпер не нужен Ну, как минимум то что он по папочкам неймспейсы автоматом делает довольно полезная херня. > Комменты тоже Я тоже так думал, пока в универе учился. Вот я прихожу на работу, меня садят легаси поддерживать, последний разработчик которого съебался далеко и не выходит на связь, из работающих никто не знает как он работает, большинство даже точно не уверены что оно делает, только один дед припоминает, что году так в 2005 возникла маленькая задачка и решено было простенькое решение запилить, задачку он уже не помнит, правда, разрабатывали 15 лет, там сейчас больше 750к строк кода, при этом из комментариев только соревнование тех кто за ним сидел в остроумии(шутки-хуютки, анекдоты и какие-то замечания, что вот кто-то там мудак, этот кто-то тоже давно не работает тут) и тудушки из времен когда он только начинался в стиле: TODO Сделать нормально. Это был сущий ад разбираться в этом, при этом говоришь руководителю: Дайте неделю, чтобы разобраться и еще неделю на рефакторинг: Хуй тебе, код написан, он работает, а ты, раз программистом назвался, - правь баги, добавляй фитчи, эта хуйня ложится у клиентов в рандомные фазы луны, но вроде работает же, а клиенты хотят больше фтич.
Есть поток, внутренности которого завернуты в try catch. В потоке вызывается метод, внутренности которого так же завернуты в try catch. В методе происходит исключение(Abort) - я готов к этому, и catch метода его обрабатывает. Вот только после обработки, исключение передается выше, в catch основного потока и руинит все нахуй. Это норма вообще? Я же throw; в первом блоке catch не вызываю, с хуев ли оно выше передается? Как сделать так, чтобы не передавалось, и обработка исключения происходила только в первом же блоке catch?
>>1737287 Когда я только в универе учился, я думал, что комменты не нужны. Когда начала работать - стал думать, что нужны. После 10 лет стажа считаю, что комменты не нужны. Нужна high-level документация и тесты. Всё остальное - херня.
>>1737298 Так-то оно так, только кто эту документацию писать будет? Если кодер, то он в процессе нередко тупо забывает что и зачем делал и вся документация выглядит как: void DoSomething(object X) - принимает объект и делает что-то. С комментами, которые пишутся в процессе хотя бы ход мысли понять можно, можно понять что на момент написания метода/класса стояла за задача, проанализировать нормально ли она решена в этом контексте и принять решение надо ли это трогать, или можно оставить как есть, а не быть обезьяной, которая палкой тыкает и проверяет не ебанет ли, либо обкалывает фасадами и адаптерами.
>>1737315 >void DoSomething(object X) - принимает объект и делает что-то. Документация конкретных методов не нужна. Юнит тесты твоя документация методов. Документация нужна чтоб описать котракты для твоего API и взаимодействие модулей системыю
>>1737293 Если сам вызов метода обернуть в try catch, то при исключении он и туда зайдет, и потом все равно подымется выше и все заруинит(то есть зайдет в 3 блока catch: сначала в самом методе, потом catch-блок в который был завернут вызов метода, потом catch-блок в который завернут основной поток) Это норма что ли? Нахуя тогда нужен оператор "throw;" в блоке catch, если один хуй исключение и так выше передается?
>>1737380 Боже, огромное спасибо, нагеморроился тут с этим. И ведь читал, что у него есть Reset, но совершенно забыл.
>что ты вообще делаешь? Я только учусь. Изначально было множество раздельных потоков, каждый из которых трудился над своей задачей, так было проще реализовать для начала(иди от простого к сложному). Внутри множество методов(долгие недели работы и отладки), в каждом из которых что-то может пойти не так, и, если возникала ошибка, при которой не было смысла дальше продолжать - я просто выбирал прервать неудачный поток. Сейчас, для взаимодействия между задачами, все перевожу на один общий интерфейс и поток, и бывшие потоки теперь стали просто методом, который по очереди в цикле прогоняется для всех задач(данных). Но ошибки так же вылетают с предложением прервать поток, что, естественно, при общем потоке мне не нужно, а нужно лишь отменить выполнение конкретной задачи. Потому просто отлавливаю ThreadAbortException и возвращаю в основной поток false, чтобы там удалить и не выполнять задачу. Просто же повесить на кнопку прерывания "return false;" - я не могу, тк форма ошибки вызываются в основном в десятках внутренних методах и их подметодах.
>>1737426 >async/await Недавно посмотрел(тоже по совету тут) - использую в некоторых операциях. Но не могу прогонять основной метод асинхронно, тк это Selenium веб драйвер: в нем нужно строго контролировать и переключать вкладки, с которых собираются данные и производятся манипуляции(когда было много потоков - то для каждого был свой браузер, но это то и было неудобно), так что одновременно в одном браузере асинхронно прогонять все задачи невозможно - только по одной, строго выбирая нужную вкладку. Можно, конечно, прогонять асинхронно по одному и дожидаться выполнения, но разве в этом есть смысл, если исключения отлавливаются, а основному потоку все равно нужно дождаться завершения прогона? Что улучшать, чтобы в ногу себе не стрелять?
>>1737444 Мне, честно говоря, лень вникать в твою архитектуру, но список задач которые нужно уметь отменять, ждать их выполнения и т.д. выглядят отличным кандидатом для Task.Run() в который посылается CancellationToken. Посолить Task.WhenAll по вкусу, поперчить ContinueWith - и выйдет нормальное приложение.
А то, что ты описал, звучит как велосипед, кривой и страшный.
В очередной раз читая всякие статьи на тему того, что в шарпе вызывает аллокации в куче, а что не вызывает, подумал, что неплохо было бы иметь в языке такой атрибут, которым можно было бы пометить функцию, что она не должна выделять память в куче. И если там в ней будет какой-то неявный боксинг или енумераторы на куче, то будет выдан варниг или ошибка. Ну и, соответственно, из неё должны вызываться только функции с таким же атрибутом. Так вот, может что-то подобное для шарпа уже в каком-то виде изобретено? Геймдевелоперы ведь с руками оторвали бы.
еще нужна помощь... Вот у меня DataGrid, данные в него я биндю из DataTable. DataTable я заполняю из OleDb
Проблема вот в чем - данные грузятся из таблицы базы данных Access. В этой таблице dbo_tab допустим есть два поля: Status - int Name - char
Теперь я хочу сделать следующее - поле Status в базе данных может принимать значение 0,1,2,3... Я же хочу чтобы вместо этих цифр писало слова открыто/закрыто/etc. Ладно, пока что думаю тут просто сделать запросом (но возможно всеже есть более простой способ не трогая запросы?)
Но есть еще один вопрос, в DataGrid есть еще поле Id и Prop, которых нет в базе. Эти данные ну пусть берутся из какого-нибудь локального конфига и не хранятся в базе..
>>1724425 (OP) Привет /pr/. Не думал, что зайду сюда с такой проблемой. Крч начал изучать C# по Шилдту и заранее решил взять еще и Троелсена, но обосрался и взял не "Язык программирования C# 5.0 и платформа .NET 4.5", а "Язык программирования C# 7 и платформы .NET и .NET Core" Троелсена и Джепкинса, которая в свою очередь "для профессионалов". На сколько сильно после Шилдта у меня будет рваться жопа во время прочтения данного 1300 листового кирпича?
Так же на полке имеется CLR via C# Рихтера. Может стоит начать с нее?
>>1738187 Нашел пока вот это https://github.com/microsoft/RoslynClrHeapAllocationAnalyzer подсвечивает аллокации в коде как варнинги или как suggestions. Правда, есть вопросы к нему, например вот тут на картинке ничего не подчеркнул, хотя по идее должна быть аллокация на енумератор.
Вот у меня DataTable. я его заполняю руками table.Columns.Add("№", typeof(string)); table.Columns.Add("Статус", typeof(string)); table.Columns.Add("вкл/выкл", typeof(string)); table.Columns.Add("замен.", typeof(string)); schTable.NewRow(); schTable.Rows.Add(read["NUM"],read["STATUS"], read["VK"], read["ZAM"]);
и тут проблема, первые два столбуа заполняются, а вот два последних нет. в логе пишет: System.Windows.Data Error: 40 : BindingExpression path error: вкл выкл' property not found on 'object' ''DataRowView' (HashCode=64502903)'. BindingExpression:Path=вкл/выкл; DataItem='DataRowView' (HashCode=64502903); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String') System.Windows.Data Error: 40 : BindingExpression path error: замен' property not found on 'object' ''DataRowView' (HashCode=64502903)'. BindingExpression:Path=замен.; DataItem='DataRowView' (HashCode=64502903); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
То есть тут проблемно что используется / и точка.
Как быть? если про / я думал что его надо экранировать (не помогло), то ведь еще и из-за точки не работает
>>1737155 > предлагает заменять старые конструкции на новые Как там в 2007? >>1737075 >без решарперовского автоимпорта неймспейсов? Не знаю как там в решарпере, но вроде и в студии не сложно, еще и нугет подтянет.
А чем вообще на работе занимаются джуны-дотнетчики? Я только вот вкатываюсь я обязательно вкачусь, и не представляю как это айти работает. Им же не дают с нуля проект писать, а накидывают пилить тесты или обновлять старый код?
>>1738735 > Не знаю как там в решарпере, но вроде и в студии не сложно, еще и нугет подтянет. Например, есть класс LoudFartService В студии надо написать его полностью, и нажать Alt+Enter. С решарпером я пишу "lfs" по первым буквам, но можно и длинее и нажимаю Tab
>>1738744 Пишут документацию, покрывают код комментариями и тестами, приводят отдельные куски говнокода от гуру к корпоративным стандартам по кодстайлу, предварительно покрыв всё тестами, чистят гит и полируют джиру. Через годик подпускают уже к написанию самого кода в проектах.
Анон, как прикрутить пароль к моей БД? Уже третий день ебусь, нихуя разобраться не могу. Мне нужно сделать так, чтобы к БД можно было подключаться по паролю.
>>1738854 Так он у тебя в том же пространстве имен. А фишка в автоимпорте других пространств. Попробуй свой класс засунуть в папку или унести в другой проект, и все, пиши полностью без подсказок
На самом деле можно жить и без этой фичи. Я вообще в vscode старался около месяца писать. Непродуктивно – сидишь, пердишь, вспоминаешь. А с решарпером потыкал, потыкал и табнул А в vscode только микропроекты пишу, и то ради интереса
>>1738885 Храни в отдельном, зашифрованном файле, расшифровать который можно только при наличии файла-ключа, который в свою очередь хранится на флешке.
Как правильно завершать asp. net core приложение? Допустим, я сделал класс, который пишет в файлик что-то, наследовал его от бекграундворкера, впихунул в хост, ну вот он работает там. Потом я при работе сервера нажимаю ctrl+c и выскакивает ошибка о том, что операция отменена. И это как-бы ничего страшного, но очень сильно раздражает, да и как-то в нормальных программах от нормальных кодеров я такого не встречал. Т.е. скорее всего есть какой-то правильный способ все это дело завершить, но я не знаю как. И еще вот что заметил, если я решаю запустить приложение как сервис виндовый, то оно запускается и работает, но после завершения, почему-то снова не хочет запускаться, при этом среди процессов в диспетчере задач ничего нет, но вот во вкладке "подробности", приложение почему-то есть и отмечено что оно приостановлено и приходится там его завершать.
>>1738711 а как надо? написал вот такую функцию void TableAdd(string name, string caption) { var n_sch = schTable.Columns.Add(name, typeof(string)); n_sch.Caption = caption; }
нет, нифига, теперь все столбцы называются по name, а не caption
На собесе спрашивают за сортировку. Говорю, мол, .Sort() - смотрят, как на идиота и просят написать реализацию пузырька. Это я долбоеб или они? Нахуя мне свои велосипеды писать, когда все есть? Может им вообще мсдн не использовать тогда?
>>1740070 Возникнет задача написать алгоритм сортировки на подобии сортировки пузырьком, но с изменениями для конкретного проекта, тогда ты жидко насрёшь себе в штанишки, ведь ты даже стандартного алгоритма не знаешь, а тебе нужен модифицированный. Или, что более вероятно, у тебя даже идеи не возникнет о том, что нужный тебе алгоритм похож на сортировку пузырьком, поэтому ты начнёшь пилить свой велосипед, от которого твой тимлид упадёт в обморок. Именно поэтому нужно знать как реализован тот инструмент, которым ты пользуешься. Да, для твоих пет-проектов тебе может быть похуй, в крайнем случае спросишь на SO и будешь ждать ответа неделю. Но ты ведь на работу устраиваться пришел, вроде как хочешь чтобы тебе деньги еще за это платили, при том деньги не малые. Времени у тебя перед выпуском в прод будет очень мало, ждать пока ты нагуглишь и поймешь никто не будет, легче нанять студента третьекурсника, который не только эту сортировку знает, но и другие. Вот теперь можешь ответить на свой вопрос: >Это я долбоеб или они?
>>1740077 >Возникнет задача написать алгоритм сортировки на подобии сортировки пузырьком, но с изменениями для конкретного проекта Вот, блядь, как возникнет, открою и почитаю. Нах мне все это говно в голове держать? Ты же, блядь, весь мсдн в голове не держишь, понадобилось - открыл и поглядел.
У меня сначала зависимости не качались, хотя интернет был в порядке, и я проверял руками, они скачивались. Потом пишет, что localdb не поддерживается на этой платформе. В докере вообще не запускается, полчаса шел процесс настройки и тоже ошибка на ошибке. Запускал на Линуксе.
>>1740106 Пиздец вкатуны охуели. Я просто хуею. А потом они такие: "Бля, почему я год работу найти не могу. Это все сытая ашарочка виновата. Утутуту, пожалейте." Это, блядь, база, которую знать надо. Охуеть просто. А потом смотришь его код, а там одна копипаста со стековерфлоу. Охуеть, блядь.
>>1740121 >Это, блядь, база, которую знать надо. Нахуя? .sort чем не угодил? Может мне еще вместо .split для строк писать разбиение на подстроки? Чо за ебанизм?
>>1740128 >Требуют для того, чтобы увидеть твое алгоритмическое мышление Открыл и почитал, чо теперь, я пиздец алгоритмическим мышлением обладать начал? Ты ж тоже до пузыря не сам додумался, а прочитал где-то про него
>>1740130 >Может мне еще вместо .split для строк писать разбиение на подстроки? Да, представь себе, это входит в обучение. Если ты сам этого ничего не писал, значит ты обычный копипастер, и не способен писать алгоритмы.
>>1740136 >Представляю что будет когда тебе придется алгоритмы на графах релизовывать самому. И в чем проблема? Писал графы, это ж не значит, что я должен эти алгоритмы на зубок знать. Как раз маня, которая посмотрела до этого и запомнила нахуй не нужна, а вот чел, который почитал и написал - нужен. Кто разобраться сам может, а не увидел и запомнил. Потом чо, столкнется с тем, чего не видел и все, пук среньк будет. А чел, который разобраться может сядет и решит задачу. Никто ж не говорит, что надо со стака бежать списывать
>>1740141 Блядь, не неси хуйни. То что ты скопипастил решение, это не значит что ты разобрался, блядь. Когда ты, блядь, разобрался, ты не будешь гуглить или что-то нести. Ты же, блядь, не гуглишь каждый раз как ветвление делать или цикл. При этом ты знаешь как и где их использовать. Что, блядь, ты зазубирл это и когда тебе вместо одного условия, надо будет 2 ты обосрешься? Нет. А вот если ты еблан, который гуглит, как сделать обход по массиву, то ты нихуя не разобрался. Блядь. Пиздец, это сука объяснять надо. Вот тебе, сука аналогия, ты ж тупой и не поймешь. Допустим ты и другой чел решаете научиться рисовать. Ты обвел картинку и получил норм. Тот чел пошел дрочить кубы, анатомию, и прочее и тоже нарисовал картинку. Так вот, кто из вас научился рисовать? Кто из вас, блядь, сможет нарисовать то, чего еще не рисовали? Так, блядь, понятно?
>>1740151 >То что ты скопипастил решение, это не значит что ты разобрался, блядь. Но я не копипастил ничего, открыл этот пузырь и почитал, в пару строк цикла такое пишется, чего там писать, если знать условия? >Ты же, блядь, не гуглишь каждый раз как ветвление делать или цикл. Потому что это постоянно надо, а пузырек ты в каждой своей проге используешь? >ты еблан, который гуглит, как сделать обход по массиву А там только обход по массиву надо сделать или надо еще алгоритм применить при этом? >Вот тебе, сука аналогия Которая не является доказательством ничего, умник >Допустим ты и другой чел решаете научиться рисовать. Ты обвел картинку и получил норм. Вот ты и обосрался, я прочитал что именно надо нарисовать и нарисовал >Кто из вас, блядь, сможет нарисовать то, чего еще не рисовали? Никто, то что ты человека нарисовал не значит, что вазу с фруктами нарисуешь.
>>1740151 Ебать ты быдлан агрессивный. Ничего даже удивительного, что у тебя такая идиотская позиция, оправдывающая необходимость изобретения велосипедов на собеседованиях.
>>1740106 Я же тебе написал, дебил: >ждать пока ты нагуглишь и поймешь никто не будет И важнее не это, а вот это: >у тебя даже идеи не возникнет о том, что нужный тебе алгоритм похож на сортировку пузырьком, поэтому ты начнёшь пилить свой велосипед, от которого твой тимлид упадёт в обморок. Есть множество задач, алгоритмы решений которых похожи на алгоритмы сортировки, если ты долбоеб, который не может написать сортировку пузырьком/вставками/быструю сортировку, то и в голове у тебя никаких аналогий не возникнет, написав свой велосипед, ты даже не поймешь, что он похож на алгоритм сортировки пузырьком, ты с рожей дебила будешь смотреть в зеркало и думать "пиздец я умный, никто бы не догадался решить задачу таким путём!", при этом не осознавая, что если бы ты знал алгоритм сортировки, то выполнил бы задачу на много раз быстрее и эффективнее.
>>1740130 >вместо .split для строк писать разбиение на подстроки? Представь себе, и такое бывает. Понимаешь, дебил, методы стандартной библиотеки и вообще любой библиотеки, которая ориентирована на широкую публику, создаются при условии, что ими будут пользоваться создатели вообще любых программ, т. е. это всё отражается на коде метода. Он универсален, но в какой-либо конкретной ситуации можно придумать алгоритм, который отработает быстрее, но не будет настолько универсален. Допустим, тебе нужно разбить строку и ты знаешь, что результатом всегда будет массив как минимум из 6 элементов, при этом работать ты всегда будешь с массивом который состоит из 2 по 6 элемент. Если работать с этой строкой используя стандартный split, то он не будет останавливаться на 6 элементе, он будет сплитить тебе всю строку, также тебе самостоятельно придётся отбрасывать 1 элемент. При этом если использовать свой split, то эту остановку и пропуск первого элемента можно реализовать, значительно повысив производительность.
>>1740174 >алгоритмы решений которых похожи на алгоритмы сортировки, если ты долбоеб, который не может написать сортировку пузырьком/вставками/быструю сортировку, то и в голове у тебя никаких аналогий не возникнет Если мне понадобится эта задача, я напишу в гугл "сортирвки" и выберу нужный мне алгоритм. Ты реально не догоняешь этого что ли? Ты когда пишешь свою прогу в мсдн тоже не заглядываешь, потому что, а нахуя? Я ж там алгоритм пузыря знаю, ща накатаю, пока я просто .sort использую и все. >что если бы ты знал алгоритм сортировки, то выполнил бы задачу на много раз быстрее и эффективнее. .sort выполняет задачу быстрее и эффективнее, чем написание своего пузыря
>>1740196 >Если работать с этой строкой используя стандартный split, то он не будет останавливаться на 6 элементе, он будет сплитить тебе всю строку, также тебе самостоятельно придётся отбрасывать 1 элемент. В данном случае доработаю и сделаю свой сплит. Ща объясни мне, в чем твой велосипед с пузырем лучше, чем .sort()?
>>1740197 >Если мне понадобится эта задача, я напишу в гугл "сортирвки" и выберу нужный мне алгоритм. Не выберешь. Сейчас тебе если задать любую нестандартную сортировку, даже с небольшими отклонениями, и ты не найдешь ее, и сам не сразу напишешь. Потому что опыта написания самостоятельно нет.
>>1740197 >Если мне понадобится эта задача, я напишу в гугл "сортирвки" и выберу нужный мне алгоритм. Так зачем вообще тогда что-либо знать? Приходишь с гуглом и решаешь любую задачу. >когда пишешь свою прогу в мсдн тоже не заглядываешь, потому что, а нахуя? Я заглядываю туда на пару секунд, ты же сначала там сидишь час, потом еще уточняешь что-то, чего ты не понял, в гугле второй час и только потом пишешь какой-то код, который не работает, потому что ты не всё прочитанное запомнил. Понимаешь в чём разница, дурачок? Если ты встречал и работал с задачей ранее, то освежить знания будет быстрее, чем получить их. >.sort выполняет задачу быстрее и эффективнее, чем написание своего пузыря Ну это просто без комментариев. Прочитай про алгоритмы сортировок, про их отличия. Помимо пузыря существует еще не мало алгоритмов, про пузырь у тебя спросили в качестве примера, а не панацеи для всех задач сортировки. >>1740200 >В данном случае доработаю и сделаю свой сплит. Конечно сделаешь, особенно когда ты ни разу не видел устройства этого сплита из стандартной библиотеки. Будешь сидеть пару часов и пытаться разобраться как это у них делается, когда тот кто знает, меньше чем за час уже напишет свою реализацию. >в чем твой велосипед с пузырем лучше, чем .sort()? Тем, что скорость сортировки зависит от сортируемых данных, в зависимости от контекста, может быть выгоднее использовать пузырьковую сортировку, а может и быструю сортировку. И это только скорость, есть еще и такой фактор как память. Всего этого стандартный Sort не учитывает, он использует тот алгоритм, который наиболее эффективен в большинстве случаев, т. е. самый универсальный. Вот видишь, ты даже таких базовых вещей не знаешь, а всё еще спрашиваешь "зачем". Затем и спрашивают, чтобы понять, изучал ли человек сортировки или использовал стандартную библиотеку и копипастил чужой код.
>>1740220 >Так зачем вообще тогда что-либо знать? Приходишь с гуглом и решаешь любую задачу. Ну так давно уже можно было заменить программистов макаками работающими с электронным помошником, вот только никто его сделать не хочет нормально почему-то...
>>1740222 Так уже, электронный помощник это IDE, макака это человек который мнит себя программистом, но на деле срёт себе в штаны, когда его просят написать сортировку пузырьком.
>>1740225 Так что мешает и это в помошник запихать? По мне так уже давно программистов можно простенькими алгоритмами заменить практически полностью. Их сейчас ОЧЕНЬ МНОГО, относительно того сколько могло бы быть.
Изучая C#, пытаюсь переделать лабу на C++ на C#. Ошибка при задействовании методов в строках с 51 по 62. Пишет мол, ссылка на объект не указывает на экземпляр объекта. Но я же создал массив объектов, должно работать. На плюсах же работает. https://repl.it/repls/SnivelingStrongVisitors#main.cs
>>1740414 Ты специально старался максимально уебищно форматировать код, что б никто читать не стал? Скорее всего, ты создал массив, но объекты в нем не инициализировал, т.о. у тебя массив из наллов.
>>1740453 А что конкретно не так с моим кодом? И в плюсах так то при объявлении массива типа класса, все ячейки этого массива заполняются одинаковыми объектами этого класса. А в C# иначе?
>>1740458 Плюсы вызывают конструктор по умолчанию во время инициализации массива. Шарп при инициализации массива типа T вызывает default (T), что для классов является null, а для структуры - значение, возвращаемое конструктором по умолчанию
>>1739520 Прокидываешь CancellationToken, который передается в бекграунд воркер, дальше в свой код. При остановке приложения все инициализированные таски грейсфулли завершаются.
>>1740486 >при работе сервера нажимаю ctrl+c >таски грейсфулли завершаются Doubt.jpg >>1740474 Напиши метод для инициализации >>1740460 >В C++ тредах я уже показывал такой код Тут тебе не там. С# полностью юникод совместимый. В самом коде да, не стоит использовать ни киррилицу, не транслит ибо мешанину языков воспринимать тяжело, особенно если там еще и транслит-ребусы. Но при взаимодействии с пользователем можешь использовать любой язык. Ах да, у тебя и переменные транслитом, ну за такое обоссут в любом культурном обществе. >>1740458 > не так с моим кодом? Про транслит написал, плюс не ленись писать нормальные имена переменным - не в одну букву. Чому у тебя в класее триады пустые виртуальные методы? Если ответственность за их реализацию лежит на наследнике, то стоит подумать об абстрактном классе и методах. Перепиши методы Show (кста, тут тебе не ява пиши методы с большой буквы), максимум и прочие - не надо завязавть свои классы на конкретном окружении. Пусть они не в консоль пишут а возвращают значение, а уже вызывающий решает как и куда выводить. Пиши фигурные скобки с новой строки, чай не на бумаге пишишь - экономить не надо. Если метод простой используй запись Method() => action;
Курю туторы около недели-полторы, пока всё мало понимаю и весь код это чаще всего или копипаста из туторов или нагуглил на форумах. Я даун или так и должно быть? Или весь код это и есть заучить 10 базовых инструментов и гуглить всё остальное?
>>1740989 Это нормально, что ты сейчас нихуя не знаешь. Просто решай какие-то простейшие задачи, привыкнешь к синтаксису, поймешь как работает та или иная конструкция
>>1740989 Иди на кодварс и решай задачи, гугля уже после того как задачу сдал и она прошла проверики. По моим ощущениям это самый заебатый способ осваивать кодинг. Срсли.
>>1741015 Ну хуй знает. Я именно в такой форме учил шарп после плюсов. Очень весело же. А потом можно посмотреть как другие решали и подглядеть всякие прикольные штуки.
Подсел на CodeWars - прикольно, но времени жрет, это пиздец. Пока найдешь правильное решение. И еще в итоге в императивном стиле разложешь пирамиду, которая в итоге делается 1 строчкой. Меня волнует один вопрос - какой блять от этого толк? Типо найди алгоритм, чтобы инпут цифр был только integer с размером 4 или 6? И коню понятно, что такие задачи хуй когда на практике встретятся. Что скажешь, анон?
>>1741273 > И коню понятно, что такие задачи хуй когда на практике встретятся Встретятся Ну и на кодварсах уже с 4кю вполне себе задачи, которые в повседневной работе встречаются.
>>1741388 это какие например? Найти регуляркой и вычленить невалидные символы? Хоть пару примеров приведи >>1741413 да, уже разобрался. В целом - интересно, но имо бесполезная трата времени, т.к. задачи студентоты - поломать голову. 4fan пойдет
>>1741504 геймдев что ли? В интерпрайзе такой хуйни никогда не видел, максимум валидация. При парсинге еще может быть провалидировать ряд, это максимум
>>1741633 боже упаси. Помимо .NET сейчас куча работы на нормальных стэках. Не буду писать на каких, а то прибегут кукарекать, что и то им не так и то не так
>>1741635 Но шарп хорош. Однако кроме веба делать в нем что-то неудобно. WPF унылый, бойлерплейт бойлерплейтом погоняет. Ксамарин тормозной. Сделали бы блазор нормальный Фронт? Хуй. На MVC не построишь SPA, а Blazor говно, потому что либо пчел качает wasm на несколько мегабайт, либо с каждым клиентом будь добр держать gRPC соединение.
Вот бы сделали Blazor под все платформы, причем нормально сделали.
По итогу сейчас приходится учить js и фронтенд фреймворк в нагрузку. Сперва Vue изучил, но потом подумал и перекатился на React. Vue Native – говно говна, у них стандартный проект не работает
Хотя, почитаешь на хабре, людям нода вкатывает после шарпа, говорят, писать гораздо быстрее. Хуй его знает, я с js ощущаю себя как в гей-клубе. Как бы красиво, но чуть зазевался и хуй в жопе
>>1741643 все так и есть, зато есть у # webApi. Проблема вся в том, я уже писал как то в треде, что мелкософты - жадные. Нет, чтобы делать интеграции с последними технологиями, они пытаються высрать что то непотребное. Блейзор тому пример. Кому нахуй этот wasm нужен. Весь фронт на JS и пока нет лучшей альтернативы ему. В итоге из всего стэка остается только использовать .NET Core, как чистый бэк. Нода хороша только тем, у кого стэк близок к JS. Любой другой туда полезет и охуеет. Вообще языки с динамической типизацией - это ебаное зло. За что респект мелкософтам, так это за TS. Он уже нехуево взлетает и я надеюсь, что .NET вылезет из говна и будет стэк бэка на #+TS front. Все остальное - легаси или тухляк. Сейчас любой архитектор не будет брать # на свежий проект из за еботни с интеграциями, миграциями и прочим гемором. Насчет JS - сейчас это дефолт, потому что любой интерпрайз язык это 99% веба, а веб = JS (и верстка) Решетки хороший язык, спору нет и я думаю его будут сапортить и дальше, но стратегия от мелкософта была заведомо провальная. Та же кроссплатформенность и оперсоурс. Да что вам блять мешало интеграцию сделать после выхода первых версий в релиз, как это сделала Java? Или показать свои сорсы. А я скажу - жадность. Вот за нее и поплатились полувялым в жопе от обогнавших на гнедой кобыле конкурентов. Я много общаюсь с людьми из разных технологий и все, кто +- сталкивался с .NET говорят, что работать можно. Остальные - просто плюются на него.
>>1741652 Про веб я и говорил про WebApi. На бекенде шарп хорош У меня все обостряется тем, что я планирую перекат в другую страну, а там на шарпе работы с гулькин хуй. Учить жабу желания нет, так что взялся за реакт. Но когда представляешь, как бы все могло быть, грустно становится
>>1741668 я уже давно не работаю с решетками, но была возможность релокейтнутся в другую страну по прямому офферу. Если работаешь в бадишопе, где +- проект держится больше 2-3 месяцев - есть возможность получить прямой оффер, единственное условие - это очень тонкий подход. Если спизданешь что то типо "Давайте я у вас в офисе буду работать" с большой вероятностью вылетишь пинком под зад с места работы. У моего знакомого поголовно с php стэка выкатываются в Германию один за одним, им кастомеры сами предлогают. Один уже выкатился, другой в раздумиях. Бадишоп об этом знает, но ничего поделать не может, т.к. жадность давит горло - получать с гребца по $45/h, а платить по 20-25. Так и живем.
Такой вот вопрос. Стоит ли в арифметических операциях с числами использовать checked? Просто допустим я знаю какие числа мне приходят и я точно знаю что никогда не будет переполнения. Но блин, все равно меня терзает хрень про то, что а вдруг где-то что-то пойдет не так и таки возникнет ситуация, когда прилетит что-то что выйдет за границы.
SQL Server Express он же только на Windows? В инструкции к официальному докер образу MSSQL написано, что можно запустить Express. Но как, если образ на основе Ubuntu?
>Start a mssql-server instance running as the SQL Express edition >docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_PID=Express' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest-ubuntu
>>1741926 > я точно знаю что никогда не будет переполнения >возникнет ситуация, когда прилетит что-то что выйдет за границы ты уж определись... А вообще логика простая - если переполнение недопустимо, делай чекд, если допустимо - не делай. >>1741977 >SQL Server 2019 Express >Supported Operating Systems >Windows 10 TH1 1507 or greater, Windows Server 2016 or greater, Red Hat Enterprise Linux 7.3 or greater, SUSE Enterprise Linux Server v12 SP2, Ubuntu 16.04LTS, Docker Engine 1.8+ (on Windows, Mac, or Linux)
Почему в моей программе при изменении одной чейки массива меняются все остальные? Метод Save не виноват, без него то же самое происходит. На C++ такой хуйни не было. https://repl.it/repls/ImaginativeRapidLanservers
>>1724536 Начал с Троелсена. Сам не программер, но на уровне составления простых алгоритмов могу. Так вот, ебать как там в первой главе нагружают терминами и концепциями. Я понимаю, что потом всё разжуют, но такой подход может оттолкнуть. В пикриле - первое предложение вмещает столько понятий...
>>1742233 Таки в 9 завезут >>1742238 Ну вот открыл я твой метод Save, и как должен догадаться, что такое d, t, i, maxDat, как тебе в голову пришло такое: >actualSize; // Счётчик введённых дат Почему переменная с именем размер описана как счетчик?
>>1742325 Бро, код - говно, но проблема не в методе Save. Этож явно писал студент, который программирует от силы пару месяцев. Смотри на конструктор Memory, ошибка там.
>>1724425 (OP) Народ, кто-то пробовал поставить кор 3 параллельно с 2.2 ? Я не уверен будет ли компилиться 2.2 проект, оф. дока говрит, что при установке кор 3 не будет возможности выбрать версию ниже.
Продолжаю читать Троелсена. Я думал, что это всё-таки для не таких шарящих будет. Почему он постоянно бросается словами методы, классы, статический метод, область видимости метода и т. д. не объясняя по пути что это такое?
>>1742598 Потому, что нехуй слушать тех, кто советует со старта брать в руки книги, особо извращенные рекомендуют сразу брать Рихтера. Результат - полное непонимание того, чтотам пишется из-за незнания самых основ. А те основы, что там описываются, написаны достаточно сложным языком, предполагающим, что у человека уже есть некие поверхностные знания в области программирования и смежных вещей.
Браться за хорошие книги надо тогда, когда термины >> методы, классы, статический метод, область видимости не вызывают никаких вопросов вообще.
>>1742614 Я начинал с Шилдта, был нулевым и вроде каких-то серьезных затыков не было. Опять же гугл всегда под рукой и и если надо больше подробностей ищи статейки по конкретному вопросу.
Весь .NET по сути построен на атрибутах - Методы, валидация и т.д. А это означает - рефлексия. Внимание вопрос - почему рефлексией, а не обычной реализацией? Я так понимаю дело в компиляции - если делать атрибутами и реквесты приходят на контроллер, то сборка сама себя рефлектит и принимает/отправляет REST метод? Если что не так - поправьте
>>1742699 У тебя какая-то каша в голове. В том что ты описал можно увидеть рефлексию, которую используют для создания фреймворка, который пишет некоторый код за тебя, в зависимости от атрибутов. Непонятно при этом, что ты подразумеваешь под "обычная реализация". Но это не единственное её предназначение, более общим будет "анализ уже существующего кода и определенные действия в его отношении". >если делать атрибутами То при компиляции фреймворк анализирует твой код и дописывает всё нужное для его работы, от тебя требуется только следование документации этого фреймворка. Вся суть в том, что тебе приходится писать в разы меньше кода и большая часть реализации работы лежит за кулисами.
>>1742792 А надо как? У тебя метод который возвращает строку, если читать только сигнатуру, но если читать реализацию, то он ничего не возвращает, о чём тебе компилятор и говорит.
>>1742820 у каждого метода в сигнатуре есть входные и выходные параметры. Если ты ничего не возвращаешь - значит возвращаемый параметр - void >>1742830 я проебался не дописав, что имею ввиду ASP.NET. Я хочу разобраться с работой контроллера - ведь каждый входящий реквест по тому или инному REST методу - работает через рефлексию? Поэтому я и спрашиваю насчет атрибутов, ведь рефлексия через них и тянет метаданные сборки. Или я не прав? Хуево, когда вроде понимаешь, как этот механизм работает, но на практике никогда не понимал и из за излишней абстрации в мыслях пытаюсь найти эту реалиазацию
>>1742238 Бамп. Так почему же при изменении объекта в одной ячейки равным образом изменяются объекты во всех остальных ячейках? В сисярпе что, при присвоении объекта ячейке массива массив принимает не объект, а только его адрес? И как тогда создавать массив РАЗНЫХ объектов одного класса?
>>1742874 Потому что ты значениям массива присваиваешь одну и ту же ссылку на объект. Class это ссылочный тип, инициализируя инстанс класса ты получаешь ссылку на экземпляр этого класса. Лучше конечно снести твой говнокод к чертям и научить тебя хотя бы switch case конструкции перед тем как ты его переписывать будешь, но если тебе похуй, то просто вместо дерьма вида: var myClass = new MyClass(); for (int i = 0; i < myArray.Length; i ++) { myArray = myClass; } Тебе нужно писать: for (int i = 0; i < myArray.Length; i ++) { myArray = new myClass(); }
>>1742883 Это говно что, копирует адрес вместо самого объекта? И как я об этом должен был догадаться? Почему ту вас в сисярпе вообще это так устроено? Почему нельзя дать программисту выбор, массив чего он хочет сделать: указателей или нет?
В общем, я вместо вот так сделал вот так. Можно было переделать придерживаясь правил сисярпа, но мне лень переписывать лабу для С++ с нуля на другом языке. Всем спасибо за подсказки.
>>1742890 >Почему нельзя дать программисту выбор, массив чего он хочет сделать: указателей или нет? Можно. Объявляй свой тип не как класс, а как структуру, будет тебя массив значений а не указателей.
>>1742905 Как будто на них что-то такое рассказывается, до чего я сам не допру. Например, про указатели на один и тот же объект в ячейках массива я вчера перед сном подумал. Но также подумал, что я же явно создавал массив объектов, а не массив указателей, так что бред и лучше посплю и потом разберусь. Про такую бредовую реализацию классов в сисярпе я и подумать не мог. Зачем всё это делать таким? Неужели микрософт не устраивало то, как это было в крестах? Зачем это нужно?
>>1742918 Ну создал ты массив ссылочных типов, не известно когда ты им воспользуешься и может он тебе вообще не понадобится, поэтому смысла нет срать ими в память, вызывая базовый конструктор каждого. При этом у класса может и не быть конструктора без параметров, как тогда быть? Если тебе нужна инициализация базового конструктора, то для этого есть тип Struct, а не Class.
>>1742918 Лол, C# выполнил как раз то, что ты ему сказал. "Создай мне один объект и заполни им массив" - "Есть шеф" - сказал компилятор C# и сделал ровно то, что ты у него попросил.
Кресты на такой же запрос тебе сказали "А может ты имел ввиду создай один объект и вызови еще сверху 10 конструкторов копирования? Ну наверное да, я пожалуй, лучше это выполню". Спасибо, нен надо.
И реализации классов как в крестах не надо. А то еще завезёте наследование ромбиком. А потомки будут вас за это чёрным словом вспоминать.
>>1742963 >>1742967 Спасибо, я улыбнулся. Когда мне снова захочется ебаться со ссылками, указателями и rvalue референсами, ебошить placement new и заниматься всеми этими стрельбами себе в ногу - я выберу путь с++.
А пока мне хочется программы писать, а не с памятью сношаться.
>>1742918 На самом деле верчение ссылок удобно. Главное, не выстрелить себе в ногу, но в большинстве случаев потекшую подливку по штанине заметно сразу при первом тесте. Как сделать иначе я не представляю Сперва непонятно, конечно
сап, Как сделать опциональный параметр в методе? Т.е если при вызове он передается, то используем то что передается. Если нет, то дефолтный. Например: public static string myFunc( int num, optionalParam = new MyClass.Options(){Name = "X100", Feature = "Extended"}){ ... } Тут опциональный параметр optionalParam и дефолтные параметры это имя X100 и Feature = Extended.
>>1743101 Я пока сделал перезагрузку метода, то есть теперь 2 одинаковых метода, только в одном на один параметр больше. Скорей всего, это кривое решение.
Господа, поясните за таблицу виртуальных типов. Она в манифесте при компиляции в IL создается? И для чего она вообще нужна? Можно ссылку на сорс, если влень писать. Спасибо
>>1743130 Нормальное, если ты в методе, который имеет меньшее число параметров, вызываешь метод с большим числом параметров, передавая в них нужные объекты в качестве параметров по умолчанию. Например в твоём случае метод с меньшим количеством параметров будет выглядеть примерно так: public static string myFunc( int num,) { optionalParam = new MyClass.Options(){Name = "X100", Feature = "Extended"}; myFunc(num, optionalParam); }
>>1743132 Рихтера почитай, если интересно. Но на деле эта информация тебе особо не пригодится. Я вот прочитал, но всё что сейчас помню, это то, что при вызове виртуального метода, проводится проверка типа объекта, а при вызове обычного, проверка типа не нужна. Ну и то что указатель на тип объекта есть только у ссылочных типов, т. е. в случае когда нужна проверка типа, значимый тип должен приводиться к ссылочному, т. е. происходит боксинг.
>>1743215 спасибо. Я хз, что за собес может быть по телефону. Хотя бы конфу с демонстрацией бы. Судя по всему на джуна делают первый уровень на дебила, за которой последует второй уровень - уже со встречей
>>1743518 Я может крамольную вещь скажу, но для новичка книги для самого начала это слишком круто. Начни с курсов с рутрекера или видосов с ютуба, где шаг за шагом простейшие вещи объясняют. Запускай студию и повторяй. Когда освоишься в простейшем, тогда уже берись за книгу, но только не из числа крутых. Вон обложка книжки Троелсена висит. Самое лучшее чтиво для начала, когда уже делал что-то осмысленное в студии. Глава за главой будешь про знакомые вещи читать и с новой стороны про них узнавать.
>>1743529 Благодарю за наставление, анон. Я наоборот думал, что книгу полезнее будет освоить, чем видосы смотреть, однако от нее много нагрузки на мозг поступило.
>>1724425 (OP) Люблю систематизировать и каталогизировать разное дерьмо, хочу парсить различные интернет параши по запросам и сливать дату оттуда, выявлять закономерности. Может запилить потом на своем сайте свою базу данных на основе этой даты.
Опыт программирования - ноль. Насколько подходит сишарп для таких задач, или мне в другой тренд?
>>1743713 Лучше JS подойдет, так как для парсинга тебе всё равно ено знать нужно будет. А остальное компенсируешь многочисленными фреймворками на любой случай жизни. Шарп это тяжелая артиллерия, в данном случае его применение будет избыточным.
>>1743724 А в анализе изображений какой язык может помочь? Возьмем скажем абстрактный пример - есть 100 фотографий, нужно проанализировать их и скачать данные по фотографиям где человек пострижен коротко. Если не касаться нейронок конечно.
Когда собес по # проводит фронтендер, который вопросы и ответы читает с листа, но расспрашивает по JS - это знак свыше или текущая ситуация # на рынке?
>>1743971 На фреймворке билдит гораздо быстрее, чем на core, поэтому я бы ставил студию и не выёбывался. Писать в емакс и билдить через командную строку вообще аутизм от мозолеедов, вообще не шарп вей игнорировать статический анализ кода.
>>1744099 >мозолеед >билдить через командную строку вообще аутизм от мозолеедов, вообще не шарп вей игнорировать статический анализ кода Ебнутая вниманиеблять. Бегает по всему двачу и пишет тупую хуйню. Если что, компиляция из консоли или из студии ничем не отличается. Если бы ты знал предмет лучше, и не был таким ебанутым, то знал бы, что в обоих случаях вызывается компилятор csc, и выдает он абсолютно одинаковую инфу, что в студию что в консоль.
>>1744360 Ой, иди-ка ты нахуй со своим "если что". Сам не разобрался нихуя, а уже лезет ко взрослым. 1) dotnet run работает только с .net core. У core версии, при всей моей любви к ней, есть много недостатков в сравнении с фреймворком, в частности сборка идёт ощутимо дольше. Под фреймворки до сих пор разрабатывать комфортнее 2) Несмотря на то, что результат компиляции будет одинаковым, студия позволит использовать статический анализатор кода. Статический анализатор работает не через csc, а через API Roslyn'а, если что Если бы ты знал предмет лучше, а ещё лучше думал, прежде чем писать, то ты бы так не опозорился.
У меня Линукс и установлен VSCode. Она дает все тоже самое что и VS на Windows. Только работает быстрее раза в 3. Не весит 10-30Гб как виндовая VS. И платить за нее не надо. Для C# есть всевозможные расширения. Кроме C# поддерживает кучу языков.
>>1744233 Прошло - имо не очень. Интервьер опоздал на 2 часа, пришлось звонить HR/HH напоминать (она еще была не в сети 1.5 часа). Спрашивал много - #, LINQ, Collections, Reflection, ORM, SQL, JS, алгоритм даже один успел спросить. Затронули метаданные и кишочки, к которым я так упорно готовился, но 90% вопросов были из дефолтных вопросов к собесу. По # нормально ответил, помню, что не ответил - AS при неудачном апкасте выдает null, а IS - false. Перепутал инициализацию out/ref (сказал наоборот, что в out должна быть инициализация, а не в ref). Не сказал, что dictionary работает быстрее list-a (тоже дефолтный вопрос). Не сказал, что лямбда это анонимный метод (КАРЛ). Перепутал select и where, хотя как мне показалось, это скорее интервьер прошляпил - спросил про выборку, а не про фильтрацию - я ответил Select, он сказал Where. По SQL не ответил про foreign key. По ORM норм (хорошая практика с ними) По WEB - полный пиздец. Я хоть до этого и ковырял палкой React на пете, но все по средствам google, SOF. Поэтому на какие то банальные вещи типо - задать стиль всем селекторам, я думал через .div, оказалось просто div. Найти элемент в DOM через JS - тоже не ответил, хотя вопрос был плевый. Я ебашил пет, чтобы привести его до ума, к собесу толком не готовился (3-4 часа), по факту получилось, как получилось. И я готовился на вопросы "поинтересней" по Рихтеру, а задали по Quiz. Ответы давал развернутые, но судя по реакции и обратной связи - мне показалось, что интервьер ждал только шаблонный ответ на поставленный вопрос. К примеру с рефлекшен я зашел издалека и начал расказывать как работают атрибуты, как они в метаданный флагаются. Он ждал плоский ответ по рефлекшн - "Технология по обращению к метаданным". А ну да, по ASP.NET еще были вопросы - не ответил на атрибут Action. Вроде все.
>>1744696 > что не ответил - AS при неудачном апкасте выдает null, а IS - false. Перепутал инициализацию out/ref Странно, что после такого обсера тебя не проводили ласковым "мы вам перезвоним". Надеюсь ты себя не тешишь надеждами на оффер и уже приступил к поиску другой вакансии.
>>1744696 А сколько сам собес проходил и что по итогу сказали? Такой объём на всех собесах? Ты на мидла устраивался? Или это должен каждый ссаный джун знать?
>>1744708 И то и то часто используется. Если касты еще как-то можно оправдать, то ref/out используются часто. Ладно обосрался с as и is, но как можно было насрать себе в штаны c ref/out? Ты никогда не использовал int.TryParse(string s, out int result)?
>>1744713 собес по телефону, где то пол часа в быстром темпе (чтобы не гуглил и не искал в заметках). По итогу - ничего, парень спросил есть ли вопросы по тестовому заданию - я сказал нету, т.к. вопросы у меня по проекту, стэку и организации команды. Насчет всех, не всех - дело ситуативное, кто то начнет в залупу лезть с реализацией какого то механизма - например разложить IEnumerable до песчинок, кто то всколзь поспрашивает смотря в потолок. Как я писал выше - интервьюер представился frontend разработчиком, судя по всему фул стэк, не понятно только из # или из JS. Вакансия - джуна.
>>1744718 >int.TryParse(string s, out int result) да вот как то даже и не юзал, хотя без него - никуда. Остальные Parse и Convert дают exception, если при переборе будут не Number, а этот метод дает 0. По as и is приведи пример, где это используется, чтобы в голове отложилось.
>>1744731 as и is я запомнил потому что c is можно составить вопрос object type x is of object type y? на которой можно ответить yes/no, т. е. вернуть true/false, а as более утвердительный, т. е. ты явно говоришь, что объект типа x, хочешь привести к типу y, не ожидая сразу результат в виде конечного объекта, либо null в случае если приведение невозможно
>>1744731 >Остальные Parse и Convert дают exception Так ты не путай TryParse и Parse - первые исключений кидать не должны, иначе какой в них смысл?>>1744731 >as и is ХЗ почему ты говоришь про апкаст, они обычно использубтся при даункасте, тот же паттерн матчинг это сахар для as/is.
>>1744758 хорошая памятка насчет IS, но по логике приведение должно давать InvalidCastException, а не null. Так или иначе, запомнил, спасибо. >>1744760 какой то странный пример. 1 - метод Dump это фича какого то редактора, забыл название, которая в контекст (на консоль) передает значение без использования console. 2. Что ErrorMsg, что InfoMsg являются наследниками Msg - поэтому что то, что то даунастится, но без is/as. Я так понимаю эти два ключевых слова используются исключительно в контексте приведения, т.е. должны задаваться явно, а у тебя в примере - не явно. Если не так - поправь >>1744763 хороший пример, но имо нынче время дженериков и по идеи должны строго типизировать тип, чтобы не делать проверку приведения. GetNumber<T> Where T : I - типо такого. Спасибо, что отписали
Пока разбирался с AS/IS, REF/OUT - пришел еще один инвайт на тест (если будет успешный, то собес) с другой галеры. Так что позже отпишу еще, на чем обосрусь. Посмотрев на пример >>1744760 вспомнил, что switch-case, а там более goto вообще не юзаю и даже забыл синтаксис. Что скажете, какова популярность этих конструкций?
>>1744782 > Dump LinqPad >>1744782 >Что ErrorMsg, что InfoMsg являются наследниками Msg - поэтому что то, что то даунастится, но без is/as Ты не перепутал даункаст с апкастом опять? Тебе прилетает из вне Msg, но ты в зависимости от конкретного типа хочешь их обрабатывать по-разному, поэтому даункастишь до более конкретного типа. >в контексте приведения, т.е. должны задаваться явно, а у тебя в примере - не явно is - тупо проверить, as - проверить и если оно, то привесли, если нет - налл. Паттерн матчинг это сахар, который компилятор разворачивает в as/is. Раньше писали через as/is, теперь в большенстве случаев можно написать красивше. Еше так можно if(obj is string str) - по факту вызовется as и проверка на налл. >GetNumber<T> Ну так проверка и приведение будет в GetNumber. Ты не всегда можешь знать какой тип тебе прилетит, например, от удаленного клиента.
>>1744796 >Ты не всегда можешь знать какой тип тебе прилетит Хороший аргумент. Так что да, я изменил свое мнение насчет приведений. >Паттерн матчинг в обед погуглю, никогда не встречал. Знаю по GOF ~9-10 и то на практике никогда не применял. Да по ним и не спрашивали. >Ты не перепутал даункаст с апкастом опять? В твоем примере как раз даункаст идет - проверка от родителя к предку. Только они оба наследники Msg и конструкция case это проверяет. Т.е. если залетит какой то тип без наследования, то case банально не найдет его и пропустит. Пока писал нашел логическое объяснение твоему примеру. Спасибо. >LinqPad зачем он нужен, когда есть VS? На крайняк VS Code
>>1744696 > Затронули метаданные и кишочки > AS IS > out/ref > dictionary > лямбда > LINQ select и where Что ты подразумеваешь под кишочками? > По ORM норм (хорошая практика с ними) Например? Интересно, что тебя спрашивали
Я год работаю, но ничего сложного в твоих вопросах не увидел, кроме ебли с джаваскриптом, но его я и не изучал, так, в экстренных случаях правки вносил
>>1744807 >Что ты подразумеваешь под кишочками? Вот так читай >Затронули метаданные и кишочки, к которым я так упорно готовился, но 90% вопросов были из дефолтных вопросов к собесу. только 10% (даже меньше) затрагивали принципы работы, а не их задачи. По ORM - отличие EF от ADO.NET, какие еще есть ORM. Какую функцию выполняют. Db first-Code first. Какой то вопрос был про Lazy loading, но не могу вспомнить в каком контексте. Вспомнил - IQuerable - отличие от IEnumerable. >Я год работаю я работаю финансистом, все мои знания - это самоучение и пет проекты. Я бы давно пошел интерном за $300, если бы мне не было под сраку лет
>>1744801 >Знаю по GOF ~9-10 и то на практике никогда не применял А? При чем тут гофовские паттерны. Паттерн это шаблон, паттерн матчинг - сопоставление с шаблоном. >В твоем примере как раз даункаст идет Да, Msg даункастится к ErrorMsg, но ты ж писал >поэтому что то, что то даунастится, но без is/as но ведь Msg m = ...; ErrorMsg e = m;// без явного приведения фэйл а вот апкаст сработает без явного приведения. >зачем он нужен Прост. Маленькое удобное приложение длятестирования небольших кусков кода. Особенно крут этот всеядный Dump().
>>1744822 Спасибо за ответ, не знал, что могут спросить по ADO.NET, я думал, это уже свое отжило Lazy Loading имеет отношение только к IQueryable, потому что IEnumerable обычно означает, что коллекция уже у тебя на компе, только под капотом не какой-нибудь хитрый yield На какую зп идешь, ну так, примерно? У меня ~50к в сумме со всеми премиями
>>1744916 ADO.NET - легаси, но сложного впринципе ничего в нем нет имо. Обычный SQL запрос к базе через конструкцию Using с Dispose.
да и вспомнил еще на чем спотыкнулся - где выполнение идет сразу, а где отложенно - в IEnumerable сразу (как ты написал, она же на клиенте, а не на сервере) ЗП - я HH/HR назвал цифру - $400-500. Из за того, что свитчер - прийдется потерять 25% своей текущей ЗП (750-800 сейчас)
>>1744973 всмысле шифрует куки? Это уже твое дело - сохранять данные в куках клиента или нет. Я прятал в куках auth jwt token - проверка по header с полем Jwt beaver
>>1744997 >всмысле шифрует куки? Ну вот подключил я аутентификацию services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(); Потом добавил несколько Claim'ов и вызвал HttpContext.SignIn() с этими клаимами. Юзеру прилетают кука с длинной base64(или нет) строкой, там, как я понимаю и зашифрованы все его клаимы. Вот отсюда и вопросы: может ли юзер расшифровать и отредактировать свои права при такой аутентификации и как их распозноет сервер, я ведь не сохраняю ничего на сервере, а серв как-то расшифровывает после перезапуска - значит никакого секретного ключа нет.
>>1745028 ты передаешь зашифрованный ключ, в котором есть секции claims, useremail, флаги, все что запихнешь вообщем. Юзер этот кук использует при обращении к контроллеру, где должен быть атрибут [Authentificate] (или как то так). Т.е. при каждом обращении из кукисов в хедере идет хендшейк между твоим контроллером из бэка и клиентом
>>1744916 > только если под капотом не какой-нибудь хитрый yield фикс >>1744920 Сложного-то нет, просто видел использование адонета только в учебнике Троелсена, на работе все через ef или SqlRaw
>>1745049 >ты передаешь зашифрованный ключ Вот это мне и не понятно. У серва же нет никакой доп инфы кроме переданной через куки. Так если серв может расшивровать, значит и клиент может, нет?
я только начинаю курить асп не бейте ключом шифрования по голове
>>1745049 >>1745062 Поскреб по сусекам и вроде как ключ привязывается к машине на которой запущен серв. И если я запущу серв на другой машине он не распознает куки. Верно?
>>1745072 >>1745062 почитай по аутентификации в Asp.net - в ключ шифровка идет поля с secret, который выдает сервер и принимает с таким же ключем атрибутами аутентификации
>>1745129 > в ключ шифровка идет поля с secret, который выдает сервер и принимает с таким же ключем атрибутами аутентификации Ты мне мозг сломал несогласованностью падежей и яннп. Есть что нибудь конкретное почитать?
>>1745159 дополнение к >>1745178 сразу гугли, как должны компоненты добавляться в startup.cs. К примеру, если ты добавишь аутентификацию, авторизацию раньше создания контроллеров, то ничего не получишь. И вижла на это ругаться не будет
>>1745187 что конкретно внутри? То что при атрибуте контроллер энкриптит зашифрованный ключ и сверяет клеймсы, сикрет и инфу о юзере? MSDN в помощь, правда там будет все обо всем, ибо это вопрос секьюрити. Если ты делал создание юзеров через UserManager, то ты даже в своей же ДБ не увидишь пасса - он зашифрован к хеш
Смотрите. Длать на паре было нечего. От нефиг делать на память запили клеточный автомат(АКА игра жизнь). Вот. Ну, и чтобы как-то не писать ручками стартовое поле, решил использовать битмап, типа белый - пусто, черный - клеточка. Вооооот. Ну и схороняю каждое поколения в отдельный bmp файлик. Так вот, при разрешении мапы 800x800 это говно оч медленно работает. Неприлично медленно. При этом если отрубить запись то работает приемлемо, примерно 100 поколений за 2 секунды. Ну, и мне интересно, можно ли как-то оптимизировать этот момент с записью в файлик?
>>1745327 > 800x800 >>1745383 > SaveToBMP Показывай код SaveToBMP. Вангую, что ты в цикле по всему битмапу проходишь SetPixel, а это медленно и печально шопиздец.
>>1745202 >что конкретно внутри? Ну я уже не знаю как еще объяснить. Но попробую еще раз. >делал создание юзеров через UserManager нет >в своей же ДБ нет пока никакой бд и никаких паролей. > пасса - он зашифрован к хеш давай чтобы не было путаницы: шифрование это когда можно получить обратно данные, а хэширование - получение некого отпечатка данных.
Итак все что есть это подключенная аутентификаци через куки services.AddAuthentication(...).AddCookie() и клайм засунутый в Principal, который в свою очередь засунут HttpContext.SignIn() Никакой авторизации, никаких логинов/паролей и бд. Теперь эти клаимсы асп засовывает в куки. И вот вопрос данные в куках зашиврованы c помощью какого-то ключа (если да, то откуда берется этот ключ, он же нигде не сохраняется, но при перезапуске способен распознавать данные из кук) или просто закодированы чем-то вроде Base64? Пока у меня такое представление: >ключ привязывается к машине на которой запущен серв. И если я запущу серв на другой машине он не распознает куки. Верно?
>>1744916 > У меня ~50к в сумме со всеми премиями >>1744920 > я HH/HR назвал цифру - $400-50 > текущей ЗП (750-800 сейчас) Блин, чуваки, скажите, плиз, что вы джуны? Ну нельзя же столько получать будучи норм шарпистом, даже в провинции.
>>1744696 в субботу еще одно интервью, только заказчик пожирней - аутсорсинг. И будет оно скорее всего на ангельском. После отпишу вопросы, которые задает забугорный заказчик.
Еще не придумал, как буду отбрехиваться - в требованиях 2 года ком. опыта в ойти, а я только петы писал
>>1745647 > Блин, чуваки, скажите, плиз, что вы джуны? Ну нельзя же столько получать будучи норм шарпистом, даже в провинции. А сколько можно? Я джун с годовалым опытом в провинции
>>1745694 причин много на самом деле, если в кратции: 1. Работа не гибкая, знания не универсальные - уволюсь, прийду на новое место, начну опять с $300-400 2. Роста нет от слова совсем. Я уже уперся в потолок, дальше только менеджмент 3. Трактор не заведешь - бизнес по СНГ-шному и бугор - это разные миры Да и программирование, как хобби уже лет 5 точно, накатило просто и решил, что пора свитчиться
>>1746114 Котлин это очередной высер хипстеров-хайпожеров от жидбрейнсов. Один их решарпер, который требует ресурсов больше чем сама студия, чего только стоит. Похайпует твой котлин, а потом разрабы забьют на него и он сдохнет.
public void AddLog(string log) { Log+=$"{DateTime.Now}: {log}\n"; }
Этот "лог", нигде не чистится, класс, в котором он живет - синглтон. Метод AddLog вызывается каждый раз когда вызывается какой-нибудь метод внутри класса. Как уже было сказано, класс - синглтон, само приложение - сервер, т.е. жить должно долго. Так вот, может я чего-то про строки не знаю? Просто со стороны выглядит как хуйня, которая когда-нибудь всю память сожрет. Я джун, потому не кидайтесь тапками, если я какую-то хуйню спросил.
В том виде который ты описал, каждое добавление к логу будет создавать в памяти копию предыдущего значения. При этом если записывать лог из разных потоков одновременно, то часть логов вообще проебется.
>>1746609 Логер размером больше чем 99% программ в которых нужен логер? Попахивает физзбаззом энтерпрайз эдишн. У меня есть два своих класса, один логирует всё сначала в память, потом в файл. Другой выводит информацию в UI, который может быть как консолью, так и любым другим графическим интерфейсом, который принимает текстовые данные и выводит их на дисплей. Оба занимают около 100 строк кода, не вижу смысла ставить что-то тяжелее, еще и смотреть в дебри документации этого монстра.
>>1746613 1) насчет размера - согласен. просто у меня дикий мастодонт на юнити и там это не особо то и важно 2) реализация логгера вручную - нууу, хз. думаю там, что если можно использовать что-то готовое и проверенное, то НУЖНО использовать что-то готовое и проверенное. Самому оформлять уровни, верстки и тд не особо хочется. Тем не менее согласен, что в небольших проектах, где логирование просто ради удобства разрабов, можно и ручную хуйню прописать
Читаю про создание собственного механизма боксинга и у меня встал вопрос
class Box<T> where T : struct { private T t; public Box(T t) { this.t = t; } public static explicit operator T(Box<T> b) { return b.t; } } What the hell is this? Explicit operator - это типо перегрузка оператора? А b.t это что такое? Пишу 2 года, первый раз вижу такое
>>1747493 Explicit operator это явное приведение типа, есть еще implicit - неявное. >А b.t это что такое Возвращение типа к которому ты приводишь, т. е. типа T, а приводить ты должен тип Box<T>
>>1747493 b.t это обращение к тому, что объявлено как private T t; explicit conversion оператор - это оператор, который без явно написанного тобой каста не вызовется.
Всем привет Тема такая: долгое время разрабатываю на юнити в стартапе, но вся тема прогорает и нужно искать куда свинтить. Вышло так, что из-за работы с движком, получилось более менее подучить язык, пусть и с учетом специфики юнити. За это время шарп мне очень зашел - годная штука, но хочется делать серьезный софт, а не игры. Отсюда вопрос: на си шарп вообще ведется разработка ПО? или он только для бека/веба? Видел много вакансии по разработке ПО на крестах, но если есть вариант не переучиваться на другой язык, а углубляться в этот, то лучше рассмотреть ее. Спасибо
>>1747674 Зайди на сайт с вакансиями да проверь. Десктопа очень мало, да и тот что есть всё равно зачастую работает с вебом, если не с вебом, то с базой данных точно.
>>1747674 Бек/Веб тоже ПО, лол, кек. На десктопах ведется, но не нужна, т.к. десктоп дед. ХЗ что тебе не нравится в беке? Особенно сейчас, когда мода на микросервисы. Охуенно же.
>>1724425 (OP) Пацаны. Есть приложение на windows Forms, написанное на C#. Нужно сделать так, чтобы это приложение через определенный интервал времени стучалось в определенные места. Как это можно реализовать. Стучаться должно конечно в отдельном потоке. Я знаю решения только в таймером. Но может быть есть СОВРЕМЕННЫЕ решения данной проблемы?
>>1747785 Ну, тривиальное решение с асинхронщиной:
while(!stopToken.IsCancellationRequested) { await ТвояТаскаПоСтучанию(); //На случай если таска затянулась или еще что-то можно сделать вычисление задержки чтобы, скажем, у тебя каждую 10ю минуту таска по стучанию запускалась. var delay = ТвойМетодВычисленияИнтервалаВремениДляСледующегоПостукивания(); await Task.Delay(delay); }
>>1747785 Лучше таймера ничего не придумали, главное всегда делать его с period равным Timeout.Infinite (вызывая в конце выполнения метод Change) и использовать System.Threading.Timer, а не другие 3.
>>1747946 >использовать System.Threading.Timer, а не другие 3 Использовать нужно наиболее подходящий. >>1747951 >Зачем тебе js в бэкэнде? Наивный чукотский юноша.
>>1748013 >Использовать нужно наиболее подходящий. Я всё же буду придерживаться мнения авторов как Рихтер и разработчиков ядра .NET, а не супер-модераторов с непонятных пидорахофорумов.
Анон, а есть какая-нибудь статья про приведение типов, апкаст, даункаст и вот это вот всё. Можно в стиле "Для самых маленьких и тупых" и чтобы примеров побольше.
Сделал змейку. Вот. Это преальфа-версия, потому возможны некоторые баги. Но я хочу поделиться с тредом текущим состоянием. Да. https://www.dropbox.com/s/8u7n6wwc376lr9j/Snake.7z?dl=0 Буду благодарен за багрепорты и фидбек.
Аноны, знаю очень глупенький вопрос но как лучше всего обработать NULLreference exeption например в пикриле, если в базе нет запрашиваемого пользователя, что мы не можем передать нул, как дальше быть?
>>1749155 Меню не сразу всплывает, ждёт нажатия клавиши. Ты бы хоть Game Over нарисовал, а то вылетает с эксепшеном. Иногда есть баг, когда резко нажимаешь в 2 направления, оно зависает и мигает.
>>1749349 ну пока я накостылял что-то такое 1 пикрил страница где юзается метод 2 пикрил класс который обращается к дб обработчику 3 пикрил собственно обращение к дб
>>1749349 ну пока я накостылял что-то такое 1 пикрил страница где юзается метод 2 пикрил класс который обращается к дб обработчику 3 пикрил собственно обращение к дб
>>1749367 ладно, расскажу с предысторией, раньше я делал иначе, но пришли парни прогерры с второго етажа и повозили меня мордой по столу за мой код, они сказали что методы должны групироваться в хелпере что бы их потом можно было легко использовать и дебажить, и дали леща за "если я использую твой метод я должен получить значения а не ексепшин" а я нихрена не понимаю чего они хотят, типа если пользователь не найден, чего я им должен возвращать что бы у них не было ексепшинов?
>>1749373 Ты либо не понял парней со второго этажа, либо они идиоты скорее первое
Любой хороший код должен соблюдать принцип наименьшего удивления.
Метод, который называется GetSomethingById(Guid id) должен именно брать значение этого Something из источника информации. Если этой хуйни в источнике нет - пусть вернет default(Something), либо (предпочтительный вариант) кинет исключение.
Если тебе нужно попытаться найти Something в источнике информации - напиши метод bool TryGetSomethingById(Guid id, out Something result). Этод метод уже не должен ничего бросать.
Если тебе нужно взять что-то из источника информации, а если этой хуйни там нет - вернуть значение по умолчанию, нужно написать метод Something GetSomethingByIdOrDefault(Guid id, Something default)
Если тебе нужо взять что-то из источника информации по айди, а если оно там не нашлось то добавить - пиши метод GetOrAddSomethingById(...)
>>1749391 логично! >>1749388 это в общем-то слабо отличается от тех костылей которые я написал, более того если возвращать лист то исключения и так не будет так как лист это не нулл, а значит его можно и без дефолт пользователя возвращать, просто пустым.
>>1749406 Сервер никто не валит. Даже если ты его не обработаешь, сервер просто вернет тебе 500 и продолжит работать.
Исключение предпочтительно потому это позволит тебе сразу же заметить, что ты делаешь какую-то херню.
По поводу задачи на повестке: в первую очередь тебе нужно в голове уложить для себя, что твоя программа должна делать, в случаях а) когда пользователь существует б) когда пользователя нет
>>1749344 > метод который вызвал ожидал значение Если метод обязан запросить существующего юзера, то кидай эксепшон. Если можно запрашивать любой айди, то возвращай налл. На мой взгляд в таких случаях неплохой вариант это запилить метод bool TryGetUserById(int id, out User user). Вижу на скринах ниже ты что-то похожее пытаешься сделать, только как-то через жопу.
>>1749429 то-есть я понимаю что должен быть в таком случае TryGetUserById(int id, out User user) потому что источник айди это адрестная строка, и пользователь туда что угодно может вписать, и надо обработать так что бы ничего не упало что бы пользователь не вбил
>>1749432 >а почему через жопу? Есть общепринятый стиль написания таких методов (int.TryParse, dictionary.TryGetValue и т.д.), где индикатор успеха является возвращаемым значением метода, а сам результат через out параметр метода.Т.е. в твоем случае как-то так: bool TryGetUserById(int id, out User user) { .user = db.Users.Find(id); .return user != null; }
>>1749494 Ну хз, как-то переусложняешь, зачем юзер с индексом -1? И убери if(someBoll == true) этож пиздец. Сыграй вот в это https://cleancodegame.github.io/ полезная штука.
>>1749622 Так стаком проще сделать значение - разделитель - значение. Просто берёшь и в стак пихаешь и ставишь ориентацию. А в гриде надо инициализировать грид, сколько строк, к каждому лейблу ставить его ряд. Я грид использую в основном для верхних уровней, по типу основы макета.
>>1749662 Так ты сделай метод, который тянет данные из базы вида bool TryGet... Абстракции это хорошо, но по-моему у тебя там уже лишние слои накручены, хотя я, конечно, всего кода не вижу.
Челы, а почему в шарпе нет синтаксиса для добавление к массиву подобного +=, как это работает с обычными переменными? Или может что-то такое есть, а я просто не знаю? Типа взял число, да добавил в самый конец массива из чисел такой строчкой: массивЧисел += число; С листом же работает такой синтаксис: лист.Add(что-то); А с массивом обязательно нужно возиться с индексами, с счетчиком. Указывать по какому адресу примостить свой элемент. Хотя я наверно понимаю, что массивы это слишком низкоуровневая хуйня, чтобы так фривольно с ними себя вести. Но все равно, заебись была бы фишка.
Подсказывайте, что коротенько читануть чтобы быть в теме.
Ситуация, есть физический сервер с SQL базой. Раньше легаси софт компании работал напрямую с этой базой, чем постоянно клал всю локальную сеть нагрузками. Я сейчас все это привожу к норме (по моему мнению и опыту)
И у меня появилась идея - делать запрос к серверу только один раз при запуске, сохранив копию данных в временной базе данных на компьютере пользователя и дальше работать с этой копией без сети. В принципе результат не плох, так как обычно работа там только чтение данных. Изменение - очень редкая операция.
Но вот как быть когда все таки один пользователь изменил данные, они прописались на сервер - но как теперь сделать чтобы другие пользователи их получили автоматом? Какие есть методы такой синхронизации? (пока сделал ламерски - сделал кнопочку "обновить")
>>1749959 Правильный способ: клиент/сервер с паб/сабом. На стороне SQL Server подымаем сервер на .NET или .NET Core и прикручиваем какой-нибудь SignalR.
Если не хочется заморачиваться, то можно посмотреть в сторону Service Broker (хотя я не очень уверен, что он подойдет для твоего кейса, но лучше глянь сам), встроенного в SQL Server.
>>1749845 Потому что массив это такая вот структура данных, которая нихуя не знает ничего, кроме того насколько она большая, где в памяти находится и какой величины объект в себя помещает. Все. Массив как-бы нужен не чтобы в него удобно добавлять было, а чтобы выделить кусок памяти фиксированного размера иметь константное время доступа к элементу по индексу. Если тебе надо постоянно добавлять и ты не знаешь конечный размер, даже в теории - ты просто берешь и юзаешь лист/стек/очередь/что-то еще что больше подходит в твоем случае.
Подскажите правильный подход по работа с БД запросами от клиента. Обращение будет по Id или по Email? Очевидно, что должно быть по Id, но в кукисах я не храню его - только access key и email. Нужно ли еще в кукисы добавлять Id или обращения могут быть по Id? Каким образом делать мультизапросы, перегрузкой методов? Типо только с Id, с id и указанием заказа, с id, указанием заказа и указанием цены и т.д. - как это реализуется? Кучей перегруженных методов с вызовами через методы? Спасибо
Суть: создать метод, который выделяет память объекту (переданному в метод по ссылке) исходя из данных, переданных в конструктор (то есть конструктор бросает исключение, если данные невалид). Тип объектов, допустим, классы Handler1 и Handler2, унаследованные от интерфейса IHandler.
Реализация:
interface IHandler { ... } // в классах ниже реализованы конструкторы с параметром string class Handler1 : IHandler { ... } class Handler2 : IHandler { ... }
void CreateHandler<T>(ref T handler) where T: IHandler, new() { while (handler == null) { try { // ошибка: нельзя вызвать конструктор T с аргументами handler = new T("somethings"); } catch (Exception e) { Console.WriteLine($"Message: {e.Message}"); } } }
Есть идеи, как обойти ошибку или упростить мою идею? Сразу прошу прощения за возможно неправильное использование обобщений, потому что перешёл с крестов, на которых, кстати, мой пример легко заработал при использовании шаблонов
>>1750778 Что ты вообще сделать хочешь? >>1751470 1) Лучше так не делать и написать обычную фабрику 2) Кинь код, который должен вызывать этот метод. Вангую с ним всё плохо
>>1751539 >Что ты вообще сделать хочешь? У меня есть API-ха (типо CRM) - Делаю для нее функционал. Исходя из всевозможных хотелок потребителя я знаю, что должны быть всевозможные поиски, фильтрации, сортировки - поэтому хочу написать хороший интерфейс и его реализовать. Мне нужно понять - как такой расширяющийся функионал уместить в интерфейс. У меня сейчас 2 вопроса: 1. Что является ключом доступа к связанным сущностям - UserId или UserEmail. По логике должен быть UserId, но я его не храню в кукисах, только UserEmail. Стоит ли его хранить? Или может быть стоить все запросы делать через Email? 2. По поводу всевозможных фильтрафий, сортировок и т.д. - делаю метод, куда передаю одну сущность на вход и такую же на выход. К примеру метод по поиску юзера: public User GetUser(User user) - этот метод я буду оверлоадить под каждый другой метод. Правильный ли это подход?
>>1751571 1) В авторизационных хедерах ожидай всё, что нужно для авторизации. Например, jwt токен. Из токена можно вытащить всё клеймы, например userId. Доверять кукам UserEmail и UserID - это дыра в безопасности размером с Sagittarius A* 2) Сделай DTO, в котором будут вшиты все возможности по поиску и накалябай метод SearchUser(UserSearchOptions searchOptions).
>>1751589 > токена можно вытащить всё клеймы, например userId это хорошая идея >Сделай DTO уже сделал, просто почему то messed up with email/id fields. Спасибо
Пацантре, короче нужна помощь. Есть windows Forms приложение. В котором есть вкладки. Нужно по открытию вкладки создать объект, который будет жить всё время, пока вкладка не закроется. Как это сделать? Понятно что по ивенту открытия вкладки нужно создать объект, но после выполнения обработчика эвента этот объект уничтожиться. Понятно, что можно создать глобальный статический объект и его использовать, но может быть есть какие-то более удачные подходы. Вообще как решается эта проблема?
>>1751714 Тебе бы на wpf перейти, там точное есть решение данной проблемы. Я лишь знаю примерное решение на wpf. В либе Dragablz есть ивенты по созданию нового окна, да и в самой либе можно табы вытаскивать в новое окно. https://github.com/ButchersBoy/Dragablz Может тут найдешь решение проблемы
Для решения задачи нужно распарсить файл. Я решил действовать через создание абстрактного синтаксического дерева и накидал прототип на Сишке (пик). Там все понятно - структуры, указатели, деревья. Так вот, как это реализовать правильно на C#?
>>1751912 Первое, определять не надо, и так известно. Но там вложенность может быть поглубже, я все еще склоняюсь к созданию дерева, а с ним уже проще. >>1751916 Не, не луа, уже прогнал через интерпретатор.
>>1752220 о калмьюнити версии студии, разумеется >создаешь акк мразософта >кодишь нормально пару недель >ой ты чет падазрительный, мы тебя заблокировали, нук телефончик на стол ИДИТЕ НАХЕР
>>1752303 я его и не указывал, эти бляди просто заблокировали аккаунт под надуманным предлогом, дескать, подозрительные действия с вашего аккаунта - с хуев там быть чему-то подозрительному, если я эту хуйню только для студии использую? мразотные выблядки просто хотели телефончик получить.
Котаны проясните за replace. Нужно чтобы пойманное регуляркой выражение менялось не на одно и то же слово, а на элемент массива, (типо чтобы первое найденное слово менялось на "один", второе найденное менялось на "два" и т.д), но эта срань ни в какую работать не хочет. Оно буквально меняет весь текст на одно слово и посылает нахуй мои массивы
Анон, а есть какая-нибудь лайтовая обертка для работы с бд?
Я просто еще нуб, только учусь, но учится приходится на боевом задании, в реальном проекте
Просто надоело писать один и тот же код как на пикче, сейчас у меня там 90% кода из вот этого (потому что надо заполнять всякие комбобоксы и надписи строками из базы)
Это реально раздражает
А ведь это я сейчас работают с тестовой базой в Access. Мне потом еще и базу менять на другую (SQL server) - то есть придется менять эти OleDb на другое.
А есть самая простая обертка для примитивных задач по выборке (без хранимых процедур, транзаций и прочего - мне простых SELECT хватит.. но вообще есть еще и запросы на очистку таблиц и редактирование)
Только именно простое, желательно чей-то велосипед с гитхаба (а то конечно наверняка есть монстры под все случаи жизни, с 1к страничными мануалами настроек)
Сам я пока не могу это выделить в класс - еще мало опыта, получается говно
>>1752537 >Dapper так я же пишу что надо простое... хотя конечно гляну. Но просто нет времени вникать в тяжелые либы (да и задачи там очень простые, скорее монотонные, не требующие крутых либ)
Привет, подскажите каким образом можно сохранять, записывать или наоборот брать из бд данные отличные от базовых типов? Например мне нужно что-бы пользователь загружал картинку. Где ее хранить и каким способом? Ну или что гуглить?
>>1752577 >Ну или что гуглить? Ну пиздец, попробуй так и написать в гугель - store image in db - охуеешь какой гугл умный и распознал твой запрос. А вообще большинство бд умеют хранить байтовые массивы. Но лучше, если нет объективных причин хранить именно в бд, хранить в бд инфу о файле, а сам файл отдельно от бд.
>>1752575 Бери задания по sql, по типу: количество пользователей купивших > 1000, сколько товара на складе. Только не через sql, а linq. Самое прямое назначение
>>1752724 >>1752736 я уже так и понял, вопрос номер два - у кого есть бамп какой ни будь RANDOM_DB, чтобы запарсить и дрочить ее? Или же прямо на сервер посылать запросы
>>1738484 да, CSharpDbContextGenerator является частью ef tools, только его нельзя поставить на vs community, сам ef tools установлен, но при этом не могу добавить файл шаблона в проект, такой опции просто не появляется
Тут вопросы - во многих уроках я вижу что connect открывают во время запроса и потом сразу закрывают. Почему? Почему OleDbConnection нельзя создать при запуске приложения, а закрыть при его закрытии?
Просто что получилось - вот у меня запрос на пикче. Вроде примитивный. Заполнить ComboBox (WPF) списком улиц. Делаю такой запрос на выборку в базе - моментально получаю список. Делаю это же самое в форме access - тоже моментально.
Делаю это на шарпе - и список первый раз открывается с задержкой в 3-4 секунды. Там всего-то 200 улиц. База данных и сама программа вообще на рамдиске. (и на самом деле кажется количество не узкое место, попробовал выбрать 20 штук - таже беда с задержкой... вот и думаю, может из-за создания Connect? Но у меня одна база данных, я не конекчу разные базы. Вроде читал что оно должно уметь делать одно общее соединение.
Почему так медленно раскрывается? что я делаю не так? как правильно?
>>1753443 Потому что работа с коннекшенами не потокобезопасная. С учётом, что большинство нового кода пишется с использованием async/await твой единый глобальный коннекшен не взлетит.
Помимо этого коннекшены по умолчанию находятся в пуле (если ты сам это не выключил), и создание коннекшена в коде не приведет к физическому открытию подключения к базе. Т.е твой глобальный коннекшн опять не нужен.
В третьих, незакрытые коннекшены истощают этот самый пул. Кончится пул - ни один запрос больше не выполнится. Поэтому лучшей практикой считается открытие коннекшена ровно перед тем как ты его собрался использовать, а закрыть его - как только ты выполнил свой запрос.
Твой 4 секундный простой при открытии первого коннекшена связан с инициализацией пула. Выполни при старте Select 1, простоя не будет.
>>1753453 >Твой 4 секундный простой при открытии первого коннекшена связан с инициализацией пула. Выполни при старте Select 1, простоя не будет. не помогло. Сделал выполнение этого же запроса до того как создается окно. Все равно комбобокс при первом открытии открывается с задержкой
Ести мигранты в треде? Как вставить ручную SQL миграцию перед последней? Допусть можно пустую сгенерить через Add-Migration и потом вставить свой SQL код в Up и Down. А как ее впихнуть чтобы она перед последней автоматической выполнялась? Можно конечно файл переименовать чтобы таймстап изменить, но как-то криво.
>>1753720 Заинтересовал, анон, надо посмотреть. Хотя я обычно только снапшоты памяти смотрю, когда жор начинается. Ну либо самописный класс, который стопватчем время замеряет Сейчас в fody сделали атрибут Time, так что еще удобнее стало
Я с wpf ушел давно, заебали его тормоза. Возможно, у анона проблема в нем, потому что обычно открыть и сгрузить чуток данных из таблицы – дело миллисекунд Вот даже меню в пустом приложении создаешь, наводишь мышку, а оно первый раз пропердывается, и только на второй раз открывается бодро. Та же хуйня в студии. Попробуйте курсором по меню пройтись после рестарта
А если бы решал проблему того пчела, то просто сгрузил бы асинхронно или в другом потоке улицы заранее например, после открытия окна, и держал бы в листе, чтобы уже точно исключить висяки со стороны бд
Еще хамл этот ебаный. Кому-то нравится, но после веба и флаттера смотрю на него как на говно. Бленд не пытался осиливать, может, в этом дело Люблю просто красивые интерфейсы
Суп, котаны. Хочу нарисовать в вижл студии на форме кучу чекбоксов и адресовать их, как массив. Помню, десять лет назад в вижл бейсике у меня получалось просто назвать чекбоксы как checkbox[1] и т.д., но здесь и сейчас такой фокус не удаётся. Как это делается?
>>1753758 что нынче на .net десктопе помимо wpf? >>1753888 >Чё dou.ua / hh.com >не в говностудии? >VSCode ты не можешь essets открыть и посмотреть какие расширения у нее есть? Ты какой даун, лучше даже не начинай, оставайся в петухоне/js-е
>>1753888 >Возможно ли писать не в говностудии? Есть Rider, сам не пользовался но отзовы положительные. Есть вс код, но шарп в нем мне не зашел, а вот обмазаться плагинами и писать js/css часть самое то.
>>1753906 >ты не можешь essets открыть и посмотреть какие расширения у нее есть?
Я спрашиваю юзер экспириенс.
Есть много что. Есть плагин для написания игр на андроид на руби. Есть mvc фреймворк для веба для C++. Я спрашиваю про то как это вообще норм у людей заходит или калл. Какой юзер экспириенс?
Только начал изучать С# и нашел у них адский баг. По кнопке вызывается вот такой хендлер: private void OnLoadSettings(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == DialogResult.OK) { } radioButton1.Select(); edit1.Text = "eeeeeeeeeeeee"; } Он же в том же UI треде, правильно? Если кликнуть в диалоге выбрать файл а потом кликнуть Open, radioButton1 активизируется как и ожидается. А если на файл кликнуть два раза, то button.Select игнорируется. Причем edit1 обновляется нормально в обоих случаях. Что происходит?
>>1754018 Хм, убрал 99% остального кода, оставил только кнопку и радиокнопку и в таком виде работает нормально. И как эту хрень искать? Кто-то другой переключает кнопку по евенту когда все вместе работает? Ставил брейкпойнты, ничего подозрительного.
Пишу приложение на Xamarin. Есть метод, который из DateTime делает строку в нужном мне формате и который применяется в нескольких местах в программе. Куда логичнее запихнуть этот метод, в какой класс?
Антоны, наверное вопрос всплывает по три раза на тред:
Знаю сносно питон, работаю на нем. Хочу вкотиться в шарп для души. Есть ли какие-нибудь книги/курсы не для абсолютных новичков в прогаммировании, которые быстро втянут меня в шарп, шоб как рыба в масле нахуй?
В инторнетах ваших курсы либо для полных дебилов а-ля вот тут int кароче кастится в double, либо "как сделать пулю пиу пиу в юнити"
Анон, у меня тупой вопрос относительно отменты тасков. Смотрите, я хочу сделать запрос к api наскольких сайтов. Например я хочу подгрузить список новых релизов, тэги к аниме которое у меня в профиле есть, описание к ним и ссылки на постеры. Вот. Я делаю таск LoadData(). Вот. Но, допустим а процессе пользователь понял, что ему не хочется грузить новые релизы, но остальное хочется. Как я должен отменить конкретно таск с загрузкой релизов? Неужели надо делать 3 функции и для каждой делать свой CancellationTokenSource?
аноны, вопрос такой есть год опыта довольно специфичной разработки на c# и python. Сейчас решил сменить место работы. Мониторю рынок c# - там backend (логично). Но бля выглядит это так, будто ты всю жизнь на такой работе jsonчики туда сюда гоняешь. Понимаю, что каждая работа это по большей части рутина и все такое. Но блин, хочется чего-то более интелектуального , чем запросы в бд целый день писать. Вот скажи, анон, мб я, в силу своей некомпетентности в бекэнде ошибась насчет этой области? буду рад, если так. Тое не хуесостье плз
>>1754498 На уровне джуна-мидла это действительно 95% гоняние жсончиков туда-сюда и запросы делать. Особенно если это чисто веб. Если с девайсами еще работа, то помимо JSONчиков еще байтики будешь парсить, хотя современные девайсы стали жирные и некоторые тоже жсончики могут нормально так слать. Вот. На уровне повыше уже будешь думать насчет архитектуры вцелом и JSONчики отойдут на второй план, надо будет думать о масштабируемости, безопасности и этом всем. Да. Вот. Да.
>>1754516 Ну ХЗ что там на си плюс плюс. Я когда учился, практику проходил в одной конторе. Там были сишники, они писали драйвера для счетчиков потребления воды, и шарписты, к которым я и попал, писали прикладную часть, типа девайсы по проприетарному протоколу отправляли данные на наш сервер, на сервере мы их обрабатывали и схороняли, у сервера было api чтобы из веба можно было как счить данные которые уже есть на сервере, так и как-то с устройствами взаимодействавать, типа послать команду на чтение данных потребления за период или посмотреть версию прошивки. Воооооот. Лет 7 назад правда это было, я не знаю, занимаются ли сейчас таким на шарпе.
>>1754557 мне шарпы, как язык, дико заходят. Однако не вижу какие-то интересных областей с ним: все тебе fullstack и жисоны туды сюды. Кресты/питон - там компуктер вижн, разработка под железо. Мб я романтизирую разработку на крестах и наоборот деромантизирую на шарпе. Но мысли из разряда "нахуя я 6 лет матешу учил, чтобы к бд обращаться 5 дней в неделю" напрягают. Ты, вроде, адекватный анон. Расскажи про большую разработку на шарпах. Есть ли реально челенжевые задачи? Матанчик нужнен? Мозг не застаивается? Все вопросы рили серьезные - не хочется сейчас с работой проебаться и долгие месяцы сидеть в УГ говне, набирая нерелевантый опыт
Че почитать то грамотное по паттернам, солиду и проч шобле ебле уже уровня от мидла дотнетяика? У меня опыт в других языках есть просто, какие то представления о солиде, синтаксис дотнета интуитивен. Могу написать имиджборду. Но хочется знать что-то уже поглубже, т.е. паттерны для разных задач, как грамотно по солиду все писать итд
Аноны, помогите советом. Хочу найти подработку, без участия галеры-прослойки. Подскажите, на каких ресурсах смотреть? Интересует по возможности фул тайм работа с контрактом минимум на полгода.
>>1754945 >без участия галеры-прослойки Welcome to out source, my boy. Таких нет, только фриланс толкаясь, крехтя и пердя среды 1001 индуса >>1754728 Как ты лычку получил без паттернов? Прямо как в мемасике - знаний, как у джуна, взяли на сеньера :) Энивей - красава.
Оффтоп - почему макака ограничила доступ на вход с тора на "анонимную" борду? Что за лицимерие?
>>1754730 Хуй тебе в рыло, сраный урод. это не оскорбление, это текущие реалии относительно желания быть бэкенд разрабом на asp net технологии. Конечно, у меня маленький опыт, 4 года и 7 проектов, но на всех проектах, даже на позициях back only, у меня спрашивали "а ты слышал что-нибудь про фронт энд? Да? Ах ты сука, сидишь молчишь, на тебе такси по фронту." и вот, помимо баз (хорошо, если на проекте dba есть), помимо ci/cd(хорошо, если на проекте девопс есть) ты ещё и фронт делаешь (даже при наличии сраных фронтов). Хорошо, если либа или фрэймворка фронтовый на тайпскрипте. кароч, мой тебе совет: будут заказчики (именно заказчики, а не уебки с твоей галеры) спрашивать про опыт на фронте - говори что фронт никогда в жизни не видел.
>>1754573 >чтобы к бд обращаться 5 дней в неделю Меня так брали программистом на шарпе, теперь я из pl/sql developer вылажу только выполненные задачи отметить
Как возвращать пустую сущность, если она не найдена в БД и по сигнатуре выходной параметр именно эта сущность? Пример - есть БД, идет поиск по id/name/whatever - делаешь LINQ запрос - ее нет. Что возвращать? Null - это зашквар. Ваши предложения?
>>1755056 еще вопрос в дополнение: Есть сущность, пусть это будет - Car. У Car есть такие поля - EngineType, Name, Type, Id, Brand. У пользователя есть возможность фильтровать по одному из критериев. Я знаю, как сделать в императивном стиле через кучу блоков If каждого поля с перегрузкой метода на N полей, можно ли это сделать это более грациозно?
>>1755056 Бросай исключение. Обсуждалось выше в треде. >>1755101 Создай класс CarSearchOptions и ищи. В условии проверяй все поля через или. Если ну прям очень нужно чтоб фильтр был строго по одному параметру, перед поиском делаешь валидацию фильтра.
Есть одна функция. public static City[] ConstructOneDimCity(Country[] countries) { List<City> cities = new List<City>(); for(var i = 0; i < countries.Length; i++) { for (var j = countries.GetXl(); j <= countries.GetXh(); j++) { for (var k = countries. GetYl(); k <= countries.GetYh(); k++) { cities.Add(new City(j, k, i, countries.Length)) } } } return cities.ToArray(); } Чем заменить вложенный цикл for в этом случае, чтобы было благолепно и не нужно было бы писать еще пяток for в случае расширения функционала?
Допустим, есть метод, который возвращает массив, к примеру, строк. Как правильнее указать в сигнатуре возвращаемый тип - IList или IEnumberable? С одной стороны, IEnumberable более универсален и если захочется возвращать вместо массива какой-нибудь Stack, это можно будет легко сделать без правки сигнатуры. Но с другой стороны этот же IEnumberable не поддерживает Linq, в результате, если понадобится в вызывающем коде сделать выборку по данным, нужно будет делать уродское преобразование во всех местах, где она нужна. Есть ли универсальное решение для этого вопроса, или в каждом случае лучший вариант зависит от ситуации?
>>1755253 Тебе нужно вынести внутренних 2 цикла и сделать метод для получения городов в классе Country. Он там намного логичнее будет смотреться. В сам Country ввести какой-нибудь ID, который можно будет передать в конструктор City вместо индекса в массиве. И ещё, убрать из конструктора City число стран. Зачем оно нужно?
>>1755264 > Но с другой стороны этот же IEnumberable не поддерживает Linq, в результате Что? Возможно, появится повторный перебор, так как доступ через Next, а не как в массиве
>>1755253 Linq'ом можно сделать, что-то типа: var cities = from country in countries from x in country.GetXs() from y in country.GetYs() select new Citi(x, y, country.Id)
>>1755056 Илт возвращай не искомое значение, а отдельный класс, например DbSearchResult в котором буду перечисления вида ResultState.Found/ResultState.NotFound
>>1755282 Проебался немного - недавно наткнулся на проблему с IndexOf, который реализуется в IList. >>1755291 Как обобщения помогут в этой ситуации? Эти интерфейсы итак обобщённые.
>>1755056 Да блядь, какого хуя-то Null это зашквар? Вот объясните мне? Давай просто посмотрим варианты: 1. Ты возвращаешь null 2. Ты возвращаешь фейковый объект 3. Ты кидаешь исключение
Что мы имеем. В первом варианте, null это дефолтное значение для всех референс типов, его оч быстро проверить и пользователь просто пишет if(obj is null) и все, ему даже думать не нужно больше, он всегда понимает что там может быть null, потому что, блядь ЭТО ДЕФОЛТНОЕ ЗНАЧЕНИЕ ВСЕХ РЕФЕРЕНС ТИПОВ, БЛЯДЬ, СУКА, НАХУЙ, ПИЗДА, ЗАЛУПА, ХУЙ. Во втором, ты для каждой сущности делаешь статическую заглушку в виду MyObj.Empty. Ты добавляешь оверхед, а пользователь каждый раз должен такую же проверку на result.Equal(MyObject.Empty) делать, при этом там под капотом будет проверка на null и потом сравнение ссылок на объект. Опять же, ты создал просто так объект, который все время жизни приложения живет себе и нужен просто чтобы долбоеб проверил, а не хуйню ли я возвращаю. Третье, ты кидаешь эксепшн. В итоге у пользователя ненужный нахуй оверхед, он должен обрабатывать это исключение и вообще, говно, жопа, мать ебал, производительность проседает и вообще говно-залупа и не нужно, если мы не работаем с сетью/удаленными БД/процессами, которые могут завершаться без нашего ведома и прочей залупой, от нас не зависящей.
В итоге, вариант с заглушкой это залупа из под коня, которая мало того что медленная, так и ни чем не выигрывает перед простой проверкой на null. Остается два варианта Null и эксепшн. Эксепшн, как сказано ранее, заставляет пользователя писать постоянно try-catch, чтобы не дай бог хуйни не случилось. Или Null, божественный и удобный, который всем, сука понятен и все про него знают.
>>1755299 Оверхед. Но таки оправданный, если для тырпрайза по всем заветам солида делается. Наверное лучший вариант.
>>1755297 И что будет если в рамках конкретной таблицы это валидный ID? Ну вот был ебанутым чел что проектировал БД и в отрицательную сторону считать ключ, для каждой второй таблицы, просто потому что. Ну вот такой странный чел был, что поделать, а БД уже 15 лет работает и никто менять структуру не собирается, потому что ну вот так вот. Теперь я как пользователь класса должен что-то знать про устройство таблицы? И в случае если это вот конкретно эта таблица, то надо на положительные проверять, а если та - на отрицательные? А что если вообще в этой таблице нет суррогатных ключей и соответственно никаких ID? Допустим при проектировании решили, что Имя-Дата нормальный ключ для события, т.к. одно и то же событие в один день не может произойти, никаких ID. Что мне тут проверять? Если бы я просто проверил на Null, мне вообще не нужно было бы думать про то как там таблица устроена, какая там сущность и т.д.
В общем, мое мнение null - прекрасен, null удобен, null - это радость и процветание, если ты не чел, который забывает каждый раз что null это то чего нужно ждать.
>>1755311 Хули вы эксепшены ненавидите? Я вот брошу эксепшн, повешу на роут ExceptionFilter атрибут и верну 404 сделав одну проверку. А вы пишите свои проверки на null по всему коллстеку до посинения. И тесты на это говно пишите.
>>1755319 Чел же сказал, что не хочет писать пяток for в случае расширения функционала. Так он может любую реализацию получения городов вынести из страны и как угодно получать их. Может, в случае желания, для разных стран разные методы получения городов делать. Ну, по крайней мере я так понял то что он хочет.
>>1755297 фейк лучше не кидать, это не мок. Если юзер будет вводить хуйню и получать фейк - это проблема >>1755299 это изолированный поиск по сущностям, там нет перебора на найдены/не найдены >>1755311 null - зашквар, ибо nullreferenceexeption ложит апликуху. И как написал господин из >>1755315 - это проверки по всей цепочке алгоритма на Null, чтобы не дай бог нигде не проебаться. >>1755200 >Бросай исключение остановился на исключениях, ибо можно целую фабрику Exception сделать и через pattern martching проверять их >Создай класс CarSearchOptions У меня получились доп. экстеншены к сущностям по дереву наследования. Я боюсь, чтобы они не раздулись до склада костылей. Так или иначе - спасибо за совет
Есть %сайт_нейм%, который имеет собственный API. Хотелось бы в качестве практики написать библиотеку, в которой были бы реализованы все методы из этого API. Как пример - библиотеки VkNet / Telegram.Bot.
Какие технологии/архитектурные особенности используются для подобного и где об этом можно почитать?
>>1755311 Конечно, в манямирке большинства программистов, никто не забывает делать проверки на null, но в реальности их забывает делать каждый. Вот теперь подумай, лучше не сделать проверку на null и положить всё приложение или не сделать проверку на null и продолжить работу приложения с объектом-заглушкой, записав это в логи?
>>1755472 Если программист забывает проверку на null, он так же будет забывать и про проверку с заглушкой и логгирование. А с точки зрения работы, так вообще, лучше приложение сразу упадет и ты знаешь где и когда, с логами и всем на свете, чем потом будешь искать, где же там ебаная заглушка всю логику ломает.
>>1755474 Заглушка сама пишет в логи обращение к своим свойствам и методам, поэтому если кто то забыл, то это будет отражено в логах. Для этого даже аттрибуты сделали: callermembername, sourcefilepath и sourcelinenumber. Поэтому найти всё это будет легче, чем восстановиться после исключкния, а потом еще и искать его. При этом не найденый объект это не такая проблема из за которой нужно ложить всё приложение, а если ты его ложишь, то значит нужно во всех таких местах создавать механизмы сохранения состояний.
Кто-то может на пальцах объяснить как работает эта строчка?
return s.Split(' ').Min(x => x.Length);
Я понимаю, что мы берём строку, разбиваем её на массив слов через пробел, а дальше ищем минимальное длину каждой подстроки через Linq. А как работает вот это: x => x.Length Почему это выражение в скобках?
>>1755535 Min принимает в качестве аргумента делегата. Этот делегат может быть описан как обычная функция, так и с помощью лямбды. Этот самй : x => x.Length это как раз лямбда. Ты бы мог вместо этого функцию аналогичной сигнатуры пихать.
>>1755494 Это вполне элементарные правила ООП. Падать приложение должно только в исключительных случаях, а не когда у тебя в базе данных не нашлось совпадений на запрос.
>>1755600 1) Если у тебя веб приложение, оно неупадет. Ответит васяну 500 ошибкой если ты не удосужился поставить фальтров на свои API. 2) Если ты пишешь десктопную хрень - лови на том уровне, где ты с эттим исключением сможешь сделать что-то вменяемое. Например, вывалить сообщение о не найденных записях.
>>1755600 Так, блин, проверяешь на null и ничего не падает, при этом ты сразу можешь остановить выполнение дальнейшего алгоритма, потому что ничего не найдено. В чем проблема-то? Просто давай посмотрим. Допустим тебе нужно вернуть не чистую сущность а какую-то аггрегированнуию, например ты не просто пользователя возвращаешь, а в ответ пихаешь его список любимых книг. Ну и вот ты вернул фейкоюзера, он там логгируется, пробует получить свой список любимых книг, может быть еще получить любимых певцов, просто так тратит ресурсы, выполняет ненужную работу и т.д. при этом конечным ответом все равно будет пустой объект. Проверив на null ты мог сразу вернуть: UserNotFound и все. А если ты кидаешь эксепшн на каждого не найденного юзера, то в определенный момент, когда запросов море, а БД раздута, у тебя начинаются ненужные просадки производительности, твой клиент вынужден брать более дорогое железо из-за того что кодер с СДВ забывает проверять на null, когда ебучая IDE ему говорит о том, что надо проверить.
>>1755713 >проверяешь на null Выше уже писал, что делается это для ситуаций в которых забили написать проверку на null. Вот если брать такую ситуацию, то пока мой фейкоюзер будет отдавать пустые списки и значения, записывая все вызовы в лог, ты положишь своё приложение и, возможно, потеряешь ценную информацию, а также время на восстановление и гадание того, где же у тебя там нуллреференс эксепшн вылез.
>>1755638 >лови на том уровне Зачем, если можно возвращать пустой объект и обойтись меньшим количеством трай кетч блоков?
>Error hiding хуже крешей.
В том то и дело, что это не ошибка. Это стандартное значение, вот только если при стандартном для Int32 нулевом значении у тебя при манипуляциях с этим значением не вылетает эксепшн, то при манипуляциях с null значением этот эксепшн вылетает. Вот это и избегают объектом, который будет возвращаться вместо null и представлять стандартное, пустое значение.
>>1756273 >>1756275 >В том то и дело, что это не ошибка. Ок, забывчивый программист Вася пишет роут PUT /api/users/{id}/personal-data. Он пользует твой класс, который возвращает фейковый объект если юзер с таким ID не найден. Естественно он забыл проверить на фейкового юзера потому что на null он тоже забыл бы проверить, как ты пишешь Что теперь? Сохраняем хуету вместо персональных данных? Падаем? Просто логируем и продолжаем работать как ничего не бывало?
> гадание того, где же у тебя там нуллреференс эксепшн вылез. Бред сивой кобылы. Узнать источник нуллрефа гораздо проще, чем угадать откуда же у тебя в базе появился фейковы юзер с ID = -1. В стектрейсе даже строка, ёпта, написана.
На сколько актуально знание SQL у .NET разраба? ADO.NET - легаси, Dapper - никто не использует. EF - наше все. А где EF, там LINQ. Вопрос - зачем тогда нужен SQL?
>>1756546 Зтем же, зачем и нужны знания структур данных и алгоритмов - для умения писать высокопроизводительный код. Зная только линк ты можешь нахуячить говна, которое и 100 запросов не выдержит, а нужно выдерживать тысячи таких запросов, поэтому помимо линк, нужно знать и сикьюел. Иногда вообще выгоднее чистый sql запрос написать, потому что линк конструкция неоправданно тормозит. В общем, линк это не замена, а инструмент для тех кто уже знает sql.
>>1756546 Ну вот пример из жизни. Пишу я на своем уютном EF Core, пишу-пишу и тут хуяк и свиду обычный запрос валится. Потому что еф генерирут запрос с кросс аплай, для sqlite, которая не поддерживает кросс аплай а починить обещают только в Net5 - https://github.com/dotnet/efcore/issues/19178 и хуль делать? Либо разбивать запрос (а там получается по дополнительному запросу к бд на каждую полученную запись, что пиздец), либо ручками написать запрос и вызвать через FromSqlRaw.
>>1756546 > Вопрос - зачем тогда нужен SQL? Тоже так когда-то думал. По итогу удобнее педалить sql, чем пердолиться с классами в шарпе. Прототипирование ты как будешь делать? Вот есть у тебя тысяча таблиц, тебе данные нужно покрутить. Да ты ты устанешь каждый раз базу скаффолдить и отладчиком писюн дрочить А еще постгре нечувствителен к регистру. В результате названия классов распидорашивает, и мало ты что там поймешь
Иногда руками можно подтюнить запрос, чтобы работало быстрее. Но это редкость
>>1756805 >Прототипирование Db first создается же модель под БД То, что ты описал - это дрочка костылей. Если на проекте какой то Васян жидно пернув не сделал снепшот Бд и пошел крутить сущности, что по итогу привело к рассинхрону и не возможности сделать апдейт, тогда да. Через что ты запрос делаешь, через ADO?
Аноны помогите, очень нужно. Есть заказ на приложение на xamarin. Попалась сложная анимация: прокрутка списка со значениями. То есть есть carousel с label в котором значение. Нужно изменять прозрачность объекта, другой label, в зависимости от скролла carousel. Нашел библиотеку xamanimation. Но вот проблема как туда передать значения от 0 до 1, в значение progress. Очень срочно нужно, помогите пожалуйста.
Для чего нужно передавать запрос к БД через поисковую строку? Типо /api/shop/1 - нахуй нужен этот "1", если все передается через элементы формы? Чего то вообще не догоняю... Я понимаю, когда передаешь токен через строку, т.к. другого выбора нет, а тут я передаю все через Body. Я мысленно понимаю, что я не прав, т.к. на всех сервисах запросы передавались именно так. Поправьте меня.
>>1757215 https://en.wikipedia.org/wiki/Representational_state_transfer Почитай. В кратце: ты работаешь с ресурсом. Определятся этот ресурс должен по URI. Твои формочки пересылают данные черз Body запроса, поэтому твой ID не участвует в формировании URI -> нужно смотреть BODY запроса, что затратно как на уровне железа, так и на когнетивном уровне.
>>1757261 и что, это для всех REST запросов распостраняется? Типо при регистрации метод будет не [HttpPost] public ActionResult CreateUser(User user) {} а public ActionResult CreateUser(int id, string userName... etc) И строчка запроса получиться типо api/CreateUser/1?vasyan?admin Чи шо? На какое то обрыганное пхп похоже
>>1756878 > Через что ты запрос делаешь, через ADO? Когда работаю с постгре, через sqlraw по dbset. Потому что классы такие на выходе, что караул С mssql использую ef как полагается
Но я про другое. Надо тебе данные прикинуть, а база в наличии – проще запросами примерную структуру набросать
>>1724425 (OP) Аноны, у меня прога работает с JSON, и использует Newtonsoft.Json.dll при помощи >using Newtonsoft.Json;
Из этой dll-ки, вызываются только методы: >JsonConvert.DeserializeObject >JsonConvert.SerializeObject Всё остальное, в проге - не используется, и нахуй не нужно.
До сих пор, программулина использует пре-компилированный, хуй знает кем Newtonsoft.Json.dll Вдруг там вирьё заобфусцировано , или бекдоры, блядь? Хуй знает. Решил я, в общем, сделать софтину опенсорцной... Но как сходил сюда: https://github.com/JamesNK/Newtonsoft.Json/tree/master/Src - охуел от многабукафф.
Внимание, вопрос: Где нарыть Newtonsoft.Json.JsonConvert.cs без всяких лишних шняг, чтобы просто приинклюдить его и не ебать себе мозг? Пока нашёл только это: https://my.oschina.net/u/4329266/blog/3221402 Но там чё-то по-китайски написано, и вдруг там закладки софтварные, и коровавирас - хз...
>>1724425 (OP) Как правильно сделать >rsa.Decrypt(encryptedData, false) и сделать этот декрипт - приватным ключём (d, n), после того, как данные были зашифрованы, с использованием >rsa.Encrypt(sourceData, false), и зашифрованы публичным ключём (e, n), так вот, как сделать этот декрипт, используя BigInteger и его метод modPow, зная при этом значения (d, n) в виде hex'a или base64 (из того же xml-файла).
Чё-то оно вообще не декриптится при помощи modPow, только rsa.Decrypt(encryptedData, false) может раздекриптить всё это зашифрованное дело, а каким ключём - оно декриптит хрен поймёшь, и енкриптит ли вообще. Свиду, вроде, какой-то шифр и есть, а иди знай шифр ли это, или зазондированная херота от копирастов, которая брутится за час, слабенькой видяшкой васяна в гараже...
>>1757629 >Хардварные, в логических схемах, которые. Это ты так метаданные называешь, наркоман? Тебе JsonConvert нужен? Сделай миграцию до 3.0+, где есть тип System.Text.Json и не еби мозги
>>1757629 >софтина опенсорцнее не станет Куда уж попенсорснее MIT'a? >...free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software... >Это я ещё тут параноик Таки да. еще и сарказма не уловил хотя бэкдор в рантайме куда реальнее, чем в либах от коммунити >прекомпилированная Скомпилируй сам >Есть исходник для .NET Core 2.0? Тута есть все исходники, включая компилятор, рантайм, fcl и т.д. - https://github.com/dotnet
>>1757541 >какие еще нахуй закладки? >>1757629 >Хардварные, в логических схемах, которые. >Иди знай какие из них дёргает прекомпилированная чья-то dll-ка. >>1757636 >Это ты так метаданные называешь, наркоман? Да причём тут метаданные, речь о зондах со слежкой, от ссыклоидов всяких, коим напичано и железо и софт.
Кстати, по поводу хардварных закладок, в логических схемах. Не так давно, здесь: >>1755674 → Всплыл шифр Шамира: https://ru.wikipedia.org/wiki/Протокол_Шамира И по ссылке на статью о самом Шамире: https://ru.wikipedia.org/wiki/Шамир,_Ади Видно его цитату: >В 2007 году, по сообщениям rnd.cnews.ru, Ади Шамир заявил, >что для современных криптосистем серьёзная угроза таится в виде роста числа невыявленных ошибок, >вызванных постоянным усложнением микропроцессоров. >«Если спецслужбы обнаружат или скрытно внедрят в популярный микропроцессор >алгоритм неправильного вычисления произведения только лишь одной пары чисел A и B >(хотя бы в бите номер 0, то есть наименее значимом бите), >то любой ключ в любой RSA-программе на любом из миллионов ПК >с этим чипом может быть взломан с помощью единственного сообщения», — пишет Ади Шамир. >Взлом может быть применен к любой системе, где задействованы открытые ключи, >причем сейчас это не только ПК, но и телефоны и другие устройства.
Вот такие вот хардварные закладки. Так-то только с виду кажется, что обратной совместимости нет, потому что делается всё через жопу, по принципу "хуяк-хуяк, и в продакшн". На деле же, внутри новинок - куча зондов, жуков, бекдоров, вирасов, троянов и червей вроде WinWorms.
>>1757639 чего с чем? Алло, уже 3.1 по полной гуляет, ты еще на 2.0 сидишь >>1757644 >От того, что я просплюсь, софтина опенсорцнее не станет. >От того, что ты в наглую спиздишь код опенсорсом твоя софт на точно не станет. ты зеленый или долбоеб, я одного не пойму? Что за хуйню ты несешь? >Всплыл шифр Шамира шифр - это протокол. Ты свой JSON передаешь по TCP/Ip через http протокол, алгоритмы которого уже задекларированны и никакой 3ей стороны кроме ssl быть не может Высеры дальше тяжело укладываются в логическую смысловую конструкцию, поэтому завершу свой пост назвав тебя долбоебом и шизиком. Иди как ты лучше нахуй проспись, как тебе советовали выше
Аноны, как сделать что бы страница клиента обновлялась из сервера, вот как в фейсбуке например пользователь пишет тебе сообщение и оно появляется сразу у тебя на странице хотя ты странциу не обновлял?
есть ли смысл в .нет кор приложениях вызывать получения данных из нескольких репозиториев через await, или достаточно только первый запрос делать через await, а второй синхронным вызовом, чтобы лишний тред бэкграунд не плодить, тред из тред пула веб запросов всё равно уже освобождён после первого реквеста, разве этого не достаточно? я побаловался в консоли и заметил, что хоть и не всегда, но порой континюейшны после эвейтов могут выполняться в разных тредах.
я читал вот этот пост на so: https://stackoverflow.com/a/49109517/7162511, он вроде складно объясняет, но он говорит о важности выполнения долгих IO операций на бэкграунд тредах, чтобы не ебать основной тред пул веб сервера, но после первого await'а дело же уже происходит в бэкграунде.
>>1757286 При регистрации строчка запроса будет: >POST (или PUT) https://xui.com/api/users со всей нужной инфой в body запроса. Серьезно, почитай подробно про REST прежде чем спрашивать всякий бред.
>>1758564 Я конечно особо не шарю, но думаю такой эффект у тебя вышел из-за того что main асинхронный. Но я просто студент и высказал догадку. Попробуй это же с синхронным мейном проделать.
>>1758564 Чет у тебя каша в голове. Разница между background и foreground потоками, только в том что foreground поток будет "держать" процесс живым, а background потоки будут автоматически завершены, если в процессе не осталось foreground потоков. К асинхронности это отношения не имеет. Тяжелые CPU операции стоит делать асинхронными, что б вычисления не блокировали основной поток и программа оставалась отзывчивой. IO операции стоит делать асинхронными, потому что пока свою часть работы выполняет диск/сеть/и т.д. тред может выполнить что нибудь еще, а не просто ждать. Что касается await'a, то если очень просто, можешь рассматривать его как некое подобие return'a - поток выйдет из метода (хоть и не всегда) и будет исполнять ко дальше, но в отличии от обычного return'a часть после await'a будет выполнена потом, каким нибудь потоком из пула (хоть и не всегда). Для начала могу посоветовать пикрил.
>>1758710 как я тебе метод с вызовом await'ов без async сделаю? >>1758719 я может неправильный пример привёл с выводом IsBackground и IsThreadPool, меня на самом деле интересовало, может ли часть после второго await уйти в другой тред, а не остаться в треде 1 await'а. я читал статьи у майков про использование await, IO-bound и CPU-bound code и использую его постоянно, просто не до конца понимаю один момент. меня интересует конкретно случай с дата-репозиториями. вот они представляют с собой IO-bound code, т.к. содержат обращения к БД. я понимаю, зачем нужен 1 await с точки зрения asp.net core - освободить поток реквеста, чтобы больше запросов от клиентов могло одновременно обрабатываться. зачем нужен 2 await на втором обращении к дата-репозиторию, если этот вызов после первого await уже будет в потоке из тред пула? только потому что >поток выйдет из метода (хоть и не всегда) ... каким нибудь потоком из пула (хоть и не всегда) ?
>потому что пока свою часть работы выполняет диск/сеть/и т.д. тред может выполнить что нибудь еще, а не просто ждать. это как это, а без await такой оптимизации не происходит?
Блин, вы такие страшные слова говорите. Я вот таски и асине-эвейт всегда воспринимал как-то типа: Пусть этот метод где-то выполнится, потом я заберу его результат, в это время основная работа продолжится. Допустим как раз с обращением к БД, я делаю запрос, в это же время пользователь может нажимать кнопочки и не кода запрос завершится - я отрисую ему новые данные. А вы какие-то потоки, какие-то IO-bounded прочее. Неужели я должен тоже думать об этом? Ну просто допустим, я хочу сделать 10 независимых запросов к разным сайтам: картинки, инфу о пользователе, его список любимых песенок и т.д. Я всегда просто делал несколько тасков, пихал их в лист, внутри делал какой-то эвент, типа кусок данных, который нужно отрисовать - получен, ну и по эвенту - рисовал что-то. А у вас такие вот сложности с какими-то потоками. Хуй знает короче. Я почему-то не заметил проблем с разработкой, не задумываясь об этом.
>>1758748 >Я вот таски и асине-эвейт всегда воспринимал как-то типа всё верно. нюансы типа IO-bound и CPU-bound возникают для меня, по крайней мере, только в asp.net core в контексте best practices по многопоточности. в статьях майки и все остальные пишут, что например для чтения данных из БД Task.Run как враппер async over sync использовать не стоит, потому что чё то там отжирается поток из тред пула реквестов, потом возвращается, и типа планировщику это всё не нравится, а лучше использовать await, натравленный на асинхронные методы материализации IQueryable. >Неужели я должен тоже думать об этом? в декстопе на мой взгляд нет, хотя все обращения к сайтам - IO bound. CPU-bound это непосредственно обработка данных, выполняемая после получения данных. еще можно еще послушать товарища сверху с его утверждением, что тред может выполнять что нибудь еще, пока ждет IO-bound код, ожидаемый await'ом. просто в моём представлении за await никакой магии не стоит, и это просто синтаксический сахар, заворачивающий код под ним в континюейшн.
>А у вас такие вот сложности с какими-то потоками. да понятно, что и на Task.Run всё будет работать, но у меня какое то профессиональное любопытство, что ли
>>1758733 >может ли часть после второго await уйти в другой тред может >я понимаю, зачем нужен 1 и второй для того же самого - пока бд проперживается потокой пойдет и сделает что нибудь полезное, а не залочитс на ожидании этой бд. >вызов после первого await уже будет в потоке из тред пула? Так тред-пул не резиновый (хотя конечно в разумных пределах резиновый, но в любом случае создание потока тяжелая операция) >? Например, код может выполнится синхронно, если ожидаемая задача уже завершена к моменту ожидания (await). > а без await такой оптимизации не происходит await это сахар, асинхронный код можно писать и без него, но с ним проще и удобнее
>>1758763 >и второй для того же самого - пока бд проперживается потокой пойдет и сделает что нибудь полезное, а не залочитс на ожидании этой бд. кажись понял профит, но не понял, как это работает. типа при достижении IO-bound кода, тред уходит обратно в тред пул. а потом продолжение после IO-bound кода кто раскочегаривает в уже возможно новом потоке из тред пула? какой нибудь планировщик?
>>1758766 У тебя под капотом таски обернуты в сорт оф перечисления. По сути эвейтом ты yield делаешь, там стейтмашина проходится по таскам, которые были уже запущены, когда находится тот таск, что завершен - хвост функции после await помещается в какой-нибудь из тредов и продолжает выполнение. Ну, я так примерно это понял, когда читал. Да, я не тот умняша, а просто студентота что мимо проходила.
Есть win forms. И если поток, который обновляет UI c помощью beginInvoke. Вопрос заключается в том, насколько корректно так писать и почему это работает ///код отдельного потока double value = Something.getValue(); textBoxForValue.BeginInvoke = ( new Action(()=>{textBoxForValue.Text = value.toString();}) ); ///конец кода отдельного потока Вопрос в том, насколько корректно обращаться к переменной value, которая находится в контексте созданного потока при асинхронном выполнении делегата в потоке UI? Action же будет выполнять в потоке UI, в котором был вызван BeginInvoke будет уничтожен после завершения вызова. Или я чего-то не понимаю. Нахуя тогда в BeginInvoke 2 параметром object[], если в лямбдах доступны все переменные, которые в той же области видимости.
>>1759007 если в VS навести на => курсор, то там интеллисенс подскажет типа variables captured: и список. рискну предположить, что когда лямбда разворачивается при компиляции в код, переменные как то копируются и передаются параметрами в экшн. но вообще разве не лучше делать в хэндлере
double value = await Something.GetValueAsync(); textBoxForValue.Text = value.ToString(); ?
>>1759074 Не совсем понял тебя. Ты не можешь обновить GUI из другого потока, отличного от основного потока winForm, в котором были созданы контролы. Для этого и делаю beginInvoke, чтобы вызвать эти изменения в основном потоке.
>>1759139 await все сделает за тебя - так как в формах однопоточный контекст, то продолжение задачи после await'a будет быполнено в исходном потоке т.е. UI. Об этом надо помнить еще и для того что бы не словить deadlock, когда UI поток заблокирован ожиданием таски, а что бы выполнить таску нужен UI поток. Если UI поток не нежен, то следует вызвать .ConfigureAwailer(false);
Сап, ломаю голову уже вторые сутки. Мне нужна программа которая будет постоянно активна и реагировать на какие-то действия в винде. К примеру открывается гугл - программа это замечает. Бесконечный цикл который постоянно чекает процессы не подойдет вроде так как сожрёт всю оперативку со временем. Как реализовать? Погуглил на счет winapi но нифига не понятно
>>1759163 Зачем? Может будет проще это сделать администрированием, а не прогрраммированием. P.S. Если твоя программа забивает со временем память, значит ищи где у тебя утечка памяти. Ну или. если ты дурачек и хранишь все в оперативе, то время от времени сбрасывай данные на диск.
>>1759171 создаёшь в VS проект windows service, ему в OnStart пишешь запуск любого таймера, на обработкик Elapsed пишешь метод, который будет делать что тебе там надо. можешь поставить там таймер на 5 сек, в принципе, это не while(true), так что CPU сильно ебашить не будет. потом гуглишь, как его устанавливать, там надо через cmd какую то утилиту из .net натравить на .exe скомпиленного сервиса. или если хочешь заморочиться, то гуглишь, как сделать WiX-установщик, но имхо это лишнее, если ты не кому то это делаешь но это если тебе не надо прямо мгновенное реагирование на действия пользователя. если надо - то тогда только гуглить как хукать такие события у каждой конкретной программы, но тут я ничего не подскажу, не факт даже, что без ковыряния WinAPI такое получится.
>>1759163 Создай в вижаке обычный проект "Windows Forms App". Он тебе высрет что-то вроде пикрила. Файл с формой можно удалить, "new Form1()" тоже убери из Run, чтобы был просто вызов Application.Run() без аргумента. Собственно, это будет твоя программа, которая постоянно висит в памяти. Дальше перед строчкой Application.Run() создай Timer, и повесь ему событие с нужным интервалом (1000 мс., например), из которого шарься по процессам и делай что нужно.
Если не хочешь каждый раз закрывать свою прогу через диспетчер задач (или хочешь как-то ей управлять), то прикрути иконку с контекстным меню в трей (new NotifyIcon(), new ContextMenu(), и т.д.)
Помогите, пожалуйста. Писал метод для перевода десятичного числа с двоичную, на int все нормально, а на ulong вот такая хуйня - выводится число не в двоичной системе счисления.
>>1757597 Как я понял, rsa.Encrypt() шифрует только при помощи publicKey, импортированного в RSAParameters, либо же пабом из privateKey, импортированном опять же в RSAParameters.
rsa.Encrypt() же, дешифрует шифр только при помощи privateKey, который нужно импортировать в RSAParameters.
Однако, RSA может шифровать с помощью privKey, и дешифровать с помощью pubKey:
>(e, n) - pubKey >(d, n) - privKey
>m = message >c = m ^ e mod n; // encrypt by pub to cipher >m_ = c ^ d mod n; //decrypt by priv from cipher >(m == m_) //true
>c = m ^ d mod n; //encrypt by priv to cipher >m_ = c ^ e mod n; //decrypt by pub from cipher >(m == m_) //true
//signature >c = m ^ d mod n; //encrypt by priv to cipher >//(m, c) -> transfer cypher and message //Verify signature: >m_ = c ^ e mod n; //decrypt cipher by pub >(m == m_) // compare m with m_ to verify signature - true/false
И вот как зашифровать приватным ключём, а расшифровать публичным - хуй знает. Кроме метода modPow из BigInteger - я не вижу другого варианта, так как исходников самих этих методов rsa.Encrypt() и rsa.Decrypt() не найти, только описания методов.
Хм. А будет ли плюсом в качестве проекта партфолио - библиотечка для серилизации-десериализации HTML? Ну, типа я студент думаю наверное это уже миллион раз реализовали. Но я что-то не видел. А тут думаю, смотрите, ну базовый класс: HTMLDocument, в нем есть ноды с тегами, каждому тегу - можно стиль нахреначить, потом метод Save(string path), хобана - мы собрали html'ку, а можно ToString и отдавать в качестве ответа какого-то. Опять же, наверное это все давно реализовано, но будет ли полезно иметь свою реализацию на гитхабе? Или лучше что-то более прикладное зафигачить, типа автоматизация продажи дилдаков на микросервисной архитектуре?
>>1759654 Это практический туториал для людей которые уже знакомы с REST и хотят узнать как это делать в ASP.NET Core. Надо читать теорию, статьи, книги, видео которые объясняют саму идею, принципы, лучшие практики и т.д. а потом уже читать гайды на msdn.
>>1759764 Будет плюсом в том смысле, что люди согут посмотреть на твой code style. Если будет популярна как nuget, будет большим плюсом. Но это маловероятно.
Может кто помочь? Нужно реализовать для null-able типов, дополнительную возможность определения - является ссылка null или нет. Например для для переменной string name = null => name.IsNull() --> true Или направить что учить скажите
>>1759764 Я как-то отдавал HTML с C#, в качестве стартовой страницы загрузки одностраничного сайта. Там надо просто строчку (string), ескапнуть, символом @, а после него, в двойных кавычках, сунуть код html-страницы, где каждая двойная кавычка заменена на две двойные. Так можно и скрипты на JavaScript, в код на C# пихать, и потом, как файл их сохранять, или просто отдавать.
Но я, кажется, не совсем понял что ты хочешь. Ты хочешь своей десериализацией - именно распарсить теги, в какой-то объект, верно? Если же, ты хочешь стили к тегам прикрутить, в чём проблема сделать замену тега на тег с классом, а стиль прописать в блоке <style></style>, указав там класс и стиль?
>Опять же, наверное это все давно реализовано, но будет ли полезно иметь свою реализацию на гитхабе? Так ты сначала чётко сформулируй что именно ты хочешь, может это в один gist уложится, или вообще в пару строк, или в вызов стандартного метода из какой-нибудь либы.
>Или лучше что-то более прикладное зафигачить, типа автоматизация продажи дилдаков на микросервисной архитектуре? Лучше уж автоматизация их производства, на стандартной архитектуре микроядра, главное пиши на .NET Core 2.0, чтобы полная обратная совместимость была.
>>1760123 Я хочу следующего. Есть класс: HtmlDocumet, он как-бы в себе хранит описание все странички. У него есть методы: LoadDocument, SaveDocument и ToString, первый - позволяет получить строку и в случае если это валидный HTML - инициализировать свойства класса, второй - сохранить тот документ что есть куда-то, ToString - то что есть в классе вернуть в виде строки, которая явялется валидным HTML. Так же у документа есть свойства: HtmlNode, которые являются деревом тегов, корнем, естественно - <html>, затем <head> и <body>, дальше уже заполняем в зависимости от того что нам надо. Как-то так на базовом уровне. У ноды есть всякие свойства и, соответственно, значения. Зачем нужно. Например, чтобы я мог, взять страничку уже готовую, и уже программными методами добавить например элементов в список, при этом может быть ебануть каким-то элементам стили и это вот все и вернуть уже новую страничку, при этом не прописывая каждый раз ручками строки того что добавить нужно. Примерно как-то так: var html = new HtmlDocumet("index.html"); html.Body.AddLast(new MarkedList{ new ListItem(){value = "1"}, new ListItem(){value = "2", style = new Style(){color = "#faf"}}); html.SaveDocumet("index2.html");
Опять же, я думаю что такое давно есть, но мне было бы интересно самому попробовать намутить.
>>1760124 Блин, точно не могу сказать. Но я думаю что это связанно с классом Nullable. Но твой код мне кажется интересным, спасибо что отозвался и решил помочь, я думаю этого достаточно для меня
>>1760134 >мне было бы интересно самому попробовать намутить Если хочешь изобретать велосипед - вперёд. >Опять же, я думаю что такое давно есть Конечно есть. Гугли html-парсеры. Сходу нарыл это: https://ru.stackoverflow.com/a/420355 Как видишь, там можно парсить html в объект, и получать, а также изменять отдельные аттрибуты html-тегов, в частности, эти вот стили, в аттрибуте style="бла-бла", или просто можно добавить к тегу class="blah-blah", и в секции <style> расписать стиль к элементам этого класса.
>>1760196 >Если хочешь изобретать велосипед - вперёд. А вообще, я только за узкоспециализированные, коротенькие решения, в одном .cs-файле в виде gist'a на github'e, и c годным, лаконичным описанием.
Как, например, вот этот BigInteger.cs >https://github.com/bazzilic/BigInteger/tree/master/BigInteger Всего один файлик. Скопировал его приинклюдил, и юзаешь себе: > csc.exe -optimize -out:"test_RSA_CSharp.exe" "test_RSA_CSharp.cs" "BigInteger.cs"
>>1724425 (OP) сап, может кто нить написать функцию пробегающуюся по всем емуйлам в массиве и если email заканчивается на .gmail.com выводить строку "Part is a Google user" где Part это все что до @ в email в противном случае выводить просто email
Например для
[ "adam@gmail.com", "boob@yahoo.com", "test@gmail.com" ] должно вывестись ["adam is a Googler","boob@yahoo.com","test is a Googler"]
>>1760284 https://pastebin.com/3uXyU5aJ если что вот решение на хаскеле, просто 1) я дольше буду все что нужно ставить и гуглить как делается чем делать 2) не хочу об ваш скотоублюдский язык шквариться
>>1760292 Твоё решение говно, кстати. Потому что обосрется если в массиве будет строка вида "@gmail.com" или " @gmail.com" или любая другая строка, которая заканчивается на @gmail.com, но не является валидным email адресом.
>>1759956 слепил FilterExceptionAttribute, теперь встал вопрос - у меня DAL, если не находит элемент в Бд выстреливает Exception-ом. Но проблема в том, что этот эксепшен сразу ложит приложение, а не передает по стэку к контроллеру. Как такое фиксить?
>>1760974 Если исходить из того, что будут переданы всегда валидные email'ы, то нужно добавить else x.Add(y); Если не исходить, то нужно в самом начале регуляркой проверять валидный ли это email адрес, после чего всё тоже самое с добавленным else x.Add(y);
>>1761018 >>1760987 боже, проебался весь выходной над этой залупой, в итоге запустил не в дебаг режиме, а в релизе - все заработало. Ебись оно все колом
почему я не могу вызвать вебметод, я перепробовал уже какие угодно обращения, потом даже не входит в вебметод, к тому же я не знаю можно ли обратиться к вебметоду с консольки браузера
Какая правильная реализация Put метода? На вход получаем Сущность (обновленную), через Id новой сущности ищем в БД уже существующую. Не нашли - чекай Id. Найшли - нужно сделать перенос полей. Вот в этом основной вопрос. К примеру у меня есть сущность с 10+ полей. По каждому нужно делать проход на if(oldEntity.name != newEntity.name) { oldEntity.name = newEntity.Name } Чи шо? Я думаю маппер какой ни будь заюзать, чтобы такой хуйней не заниматься. Что скажите?
>>1761723 скажу, что ты усложняешь. в случае EF есть мизерный оверхед от обновления свойств хотя с выключенным трекингом он наверно к нулю сводится. если нет никакой бизнес логики за обновлением сущности, то просто переприсваивай свойства и не ебай мозга преждевременной оптимизацией.
Мой лид говорит сделать конфигурацию приложения черз БД БД. Причем полноценной(я предлагал SQLite использовать). Мне чет это кажется какой-то хуетой. Типа блин, посмотреть цвет кнопки - делать запрос к БД, шрифт - в бд, положение и т.д.. Я бы еще понял один запрос при старте приложения, а потом просто при изменении и сохранении настроек, но он кинул свой пример и там при каждой инициализации в конструкторе каждого класса к БД запрос делается. Это я чет не понимаю, или лид хуйню делать заставляет?
>>1761777 Предложи ему заливать код проекта в бд, сделать другой проект, который будет долбить бд по таймеру а лучше в бесконечном цикле, так система отзывчивее будет, собирать и деплоить его на прод. Сразу поймет, что ты тип шаровой где ты работаешь, что у вас такие ебанутые решения?
>>1761786 В мухосранске же. Думал после шараги типа опыта наберусь и попробую перекатиться хотя бы в миллионник, но с каждым днем мне кажется, что этот опыт будет скорее вредным, потому что тут какой-то культ велосипедов и костылей, а git под запретом, потому что сложный и непонятный и лучше будет общая папочка и рядом скриптик, жмакаешь скриптик перед тем как в папочку положить - он содержимое в архивчик и в другую папочку кладет, потом можешь новый код туда добавить, такая вот систему управления версиями, кек. Зато люди на самом деле довольно милые, добрые и не заебывают этими вашими спринтами и всей остальной штукой, сколько времени надо - столько и кодь.
>>1761784 >Делать перебором свойств на == ? если ты один объект обновляешь, то забей. ты тратишь время раздумья и собсна оптимизацию того, что оптимизировать нет смысла. >И как нахуй Update в EF работает? остановись в дебаге где нибудь, где есть твой DbContext и попрыгай по его свойствам. там у него где то внутри зарыты изменения, которые применяются при вызове .SaveChanges().
>>1761723 Не делай никаких сравнений, просто присваивай и сохраняй. EF сам сравнит новые значения со старыми при детектировании изменений при сохранении и, если надо, сохранит тебе твои новые значения.
>>1761807 >что оптимизировать нет смысла. дело больше в том, чтобы инкапсулировать маппинг в 1 месте и не париться, даже не смотря на то, что ебаный маппер весит 30 МАТЬ ЕГО мегабайт. У меня 10 сущностей, это 10 проверок (практически одинаковых), а будет больше - уже венигред. И да, по S(O)LID это не правильно
>>1761841 >>1761807 https://pastebin.com/zELEufPq или я дэбил или я чего то не понимаю. wh - текущая сущность. WareHouse - [FromBody] controller. Остальные проверки в контроллере. Если использую метод Update - выстреливает на:
"The instance of entity type 'WareHouse' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.""
У меня тупой вопрос. Вот смотрите. Мне нужно было сделать импорт данных из одного места у другое. Вот. Я сделал стратегию для импорта. Использую ее, все нормально, в случае чего можно будет другую стратегию использовать, ничего вне не меняя. Тут мне приходит начальник и говорит: Все хорошо, но хотелось бы чтобы работало по расписанию. Я: "Не вопрос", делаю класс, который принимает эту стратегию и добавляю логику работы по расписанию, при старте смотрю, надо ли оно, если надо - запускаю по расписанию, если не надо - просто ждем команды начать импорт из веба. Начальник доволен, все работает. Потом он говорит: Все замечательно, но теперь просят чтобы по расписанию можно было много импортеров сделать, из разных мест. Ну и блин, я придумал сделать сервис, внутри него список запущенных задач импорта, есть обработчик работы по расписанию, он смотрит, нужно ли запустить работу по расписанию и если нужно и пришло время - запускает это дело. Но блин программка которая в 300 строк умещалась сейчас уже за 5к перевалила со всей этой хуйней. А это, так-то должен был быть микросервис. Такая шляпа только у меня случается, или это норма работы кодером?
>>1762469 это не норм, т.к. ты нахуй послал все принципы SOLID. Изначально нужно было учесть все ньюансы при согласовании задачи. Будет тебе опыт. И кто сказал, что для микросервиса 5к строк это много?
>>1762469 Такое полотно высрал, а сути ноль. Ты понимаешь, что под твоими "импорт, стратегия, расписание, много импортов" можно вообще всё что угодно надумать? То что задачи меняются постоянно, это обычное дело, именно для этого придумали такие понятия как паттерны проектирования, рринципы солид и тест драйвен девелопмент, которые помогт расширять и поддерживать код.
Решаю энтрилвл задачки на codewars (тратя по часу на каждую офк) и так забавно как то, для чего я написал 10 строчек, в правильных ответах делают за одну.
>>1762604 Какая разница сколько строчек? Главное задачу решить. А ванлайнеры потом будешь сам писать, когда с синтаксисом и стандартной библиотекой разберешься.
>>1762637 Ну, там задачки полезные в плане общего развития. Опять же, когда новый язык учишь - полезно, потому что сначала делаешь как умеешь, потом смотришь как делают те кто в языке чуть больше шарят, получаешь таким образом представление о стили который принят в этом комьюнити, подмечаешь полезные фишки языка и т.д. Я вот так учил шарп после плюсов. Это конечно не пиздец как скилл прокачает, но просто благодаря разнообразию на ранних этапах учишься разными способами применять программирование для решание задач. Если цель не в этом, а побыстрее вкатиться, то наверное не лучший вариант, потому что на работе от тебя в 95% случаев будут круды заставлять делать, а для всей остальной деятельности где хоть капля мозгов нужна будет - будет стандартное решение из библиотеки.
>>1762637 Единственная практическая польза - подготовиться к собесу на котором что-то из этих задач будет. В остальных случаях только во вред пойдёт, начнёшь воротить говнокод, заниматься не нужными оптимизациями, пилить велосипеды. Помимо учебной литературы, пользу принесут только 3 вещи: 1. Изучение паттернов проектирования, принципов СОЛИД. 2. Чтение грамотно написанного кода, больше всего подходит код стандартных библиотек и популярных фреймворков, которые поддерживаются профессионалами. 3. Написание собственного кода, который ты или другие будут применять в жизни.
>>1762722 >самый надежный источник >VB на уровне решеток В ГОЛОСЯНДРУ ЗАОРАЛ По сабжу да - как бы не кукарекали со своим .NET Core - решеточники соснули и мелкософты сейчас плавают в говне. Проекты открываются на нодах/рельсах, старое легаси сапортиться на джубе. Единственные, что сейчас можно делать - это микросервисы/web api на решетках и ссаный геймдев. Все остальное - мертво.
>>1762454 я не понимаю о чем ты, я конечно добавил над классом страницы [WebService], эта херня все ранво не работает, и это очень странно потому что раньше я часто использовал веб методы я просто не могу понять какого хера сейчас оно не работает
аноны, ну правда, какого хрена, я уже хрен знает какой день не могу вызвать блядский веб метод который раньше юзал постоянно и я просто не понимаю какого хрена сейчас он не работает, я правда не понимаю
у меня нет никаких ошибок, джс успешно заходит в функцию и все, дальше что происходит я не понимаю, он просто игнорирует код дальше, никаких ошибок, никаких ответов, в веб-методникакой поток не заходит, понимает я блять не ебу чего он хочет, если бы я видел какуйю-то ошибку, там сериализация херализация, я бы хоть понимал что происходит, а он делает хер знает что, я не понимаю что происходит
изменена только название страницы, все остальное точная копия, но веб метод не работает, тоесть он просто не реагирует, нет ни ошибок, ни сообщений, ничего, КАК ЭТО ВОЗМОЖНО!?
>>1724425 (OP) Посоветуйте плиз книги/статьи по архитектуре софта. Кодить научился, но код кажется говном, как в плане поддержки, так и в плане просто читаемости. Никаких паттернов не изучал ещё, стоит?
Я чет попробовал превью 9 шарпа. И чет я не так немного представлял себе рекорды. Ну, т.е. да, наверное это недопонимание и вообще я неправильно ими пользуюсь, но я почему-то думал что при: User x = new User{Name = "Vasy"}; User y = x; y = "Petya"; будет изменение только у "y", даже если Name было обычным свойством. Наверное оно и правильно с какой-то стороны, но блин, мне хочется классов, которые при этом ведут себя как структуры.
Работаю в геймдеве, что бы дальше расти мне необходимо знать C# для работы в юнити. Проблема в том что я вообще понятия не имею что такое програмирование, как писать код и так далее. С чего мне начать? C книги c# 4.0 the complete reference будет нормально?
Кто шарит за компилятор дотнета? Допустим, у нас есть цикл foreach(var item in items) { var x = 5 }
Для переменной x каждую итерацию выделяется новая область памяти или компилятор будет использовать указатель на предыдущую область и будет перезаписывать ее в новой итерации?
Доброго дня, программисты! Я только вкатился в разработку. Я хочу создать веб-приложение и приложение на замарин. Соотвественно, вопрос: как реализовать доступ к базе данных? Я могу сделать одно веб-приложение с моделями и в нем реализовать логику рест-сервиса? Или мне нужно отдельно реализовать проект с моделью, а потом в проекте веб-сервиса и веб-приложения ее подключить? Не понимаю, как сделать, подскажите, пожалуйста!
>>1764489 Что непонятного-то? Делаешь библиотеку, называешь ее core, в ней описываешь свои сущности, которые будут между приложениями использоваться: модели, интерфейсы и это вот все. Делаешь еще одну библиотеку, в которой у тебя бизнес логика работы с базой реализована, в ней описываешь свои репоизтории, что во что собирается. Потом делаешь 3 проекта: webapi, твое веб-приложение и xamarin, в вебапи реализуешь rest, в двух других клиентская часть. Ну, по крайней мере я бы так делал, мне кажется такой подход довольно удобным.
>>1764531 В общем, я хотел накидать рофельный пример, но это довольно долго. Короче, вот ссылка. https://github.com/dotnet-architecture/eShopOnWeb Там все довольно удобно и как я описал. Тебе, по сути, можно так же, только впихнуть еще Xamarin'овский проект в это дело.
Что почитать про LINQ, чтобы для даунов? Чтобы много примеров самых разных и разжевано все. Потому что пока у меня впечатление, что если хорошо понимать LINQ, то можно все делать в 10 раз быстрее.
Смотря что под быстротой подразумевать. Если написание кода, то да, если работу написанного кода, то нет. LINQ улучшает читаемость кода, но иногда это идёт в ущерб его быстродействию. Например, можно сделать вот так:
А можно так: for (var i = 0; i < anotherList.Count; i ++) { if (anotherList〚i〛.Id > 30) someList.Add(anotherList〚i〛); } И второй вариант будет гораздо быстрее, хоть и займёт 4 строки кода вместо 1;
>>1764594 Что там читать-то? Там из названия методов все и так понятно. Ну серьезно FirstOrDefault , как думаешь, что оно вернет? Или ToArray, что оно сделает? Или какой-нибудь Join? Даже не представляю. Ну или я такой странный и мне вот LINQ показался самой простой частью шарпов. Вот въехать в события было сложно, банально потому что ты сначала ими начинаешь пользоваться и думаешь что это какая-то магия, потом понимаешь что не магия и продолжаешь пользоваться, потом у тебя утечки из-за того что забыл отписаться и потом ты понимаешь, что нахуй эти события не всрались. Ну или как работает EF(core), тоже довольно мутная хуйня, которая то возвращает объекты, которые еще и тречатся, а тебе этот трекинг не всрался
>>1764541 Я все-равно не понял про то, как будет происходить взимодействие моделей из КОРЕ и в остальных приложениях. В книжках нихуя не написано сложных структур таких. Можешь алгоритм действий описать и как это все связать вместе? Типа, сначала я создаю пустой проект, прописываю в нем классы интерфейсов модели. Потом наследую от этих интерфейсов классы с моделями, где реализую методы CRUD и другие необходимые, вроде какиех-нибудь выборок. Что потом? Я добавляю новый проект мвс. Как мне из этого проекта обращаться к модели из другого? Если я в нем обращаюсь к интерфейсам, то мне опять переписывать логику создания моделей или как? Не понимаю.
>>1764784 создаёшь 4 проекта 1. Модели EF + миграции 2. Дата-репозитории для CRUD. Делаешь базовый IRepository и Repositry, остальным по необходимости 3. класс с сервисами 4. веб приложение
>>1764813 >2. ? ЕФ, хоть сам и является репозиторием, но обычно накручивают еще один слой абстракции, что б у тебя был более специализированный интерфейс и на случай, если когда еф перестанет удовлетворять, можо было заменить часть например на даппер и прочее незаметно для потребителя. Т.е. что-то типа ISuperRepo .Shit GetShitById(int id); .Shit[] GetLastShits(int count) // и т д мимо
>>1764828 1. да 2. ну вон тебе ниже верно сказали, что абстракция над crud'ами. Это не столько для перехода на другой ORM в будущем что я думаю случается в 0.000001 случаев, а для враппинга рядовых крудовых операций. Там же не только dbContext.GetShit() бывает, а всякие context.Shits.Where(x => x.Code.Equals(shitCode)).AsNoTracking().UseCache(). SQL запросы для сложного говна тоже в репозитории идут
>>1765215 Потому что первым аргументом должна идти строка. "" является строкой (пустой), а " - нет. Если тебе нужна строка с кавычкой, то она пишется так: "\"".
После этого, производится импорт этих параметров, в переменную rsa, с типом RSACryptoServiceProvider: >rsa.ImportParameters(pa_Priv); //import rsa from pa_Priv with modified values и сразу же Exception - плохие данные.
Значение вида: >BigInteger bi_e = new BigInteger(65537); Программулина хавает норм.
Чё за хуйня, блядь? Я хочу копростые числа, а не захардкоженную эксопненту! Они пижже, потому что связаны с копро. ПАМАГИТИ !!11
Почему в первом случае необходимо ставить круглые скобки, а в случае создания массива - нет? 1)GameObject a = new GameObject(); 2)GameObject[,] b = new GameObject[9, 9];
>>1766954 в шарагах и в дно галерах он живее всех живых. Иногда в вакансиях проскакивает XAML, WPF и MVVM. Как ты парадоксально это не звучало, но к такому стэку все равно нужно знать JS :)
>>1762933 Тогда логичней было бы выделять все технологии входящие в ЯПы, а то получается там все ЯПы и как белая ворона HTML/CSS. График будто вася с 5б составлял.
>>1767362 > XAML, WPF и MVVM XAML и MVVM - неотъемлимые части WPF, если не говнокодить, зачем их выделять? >к такому стэку все равно нужно знать JS а вот этот тут зачем нужен?
>>1767700 Как гуй делаешь? В бленде или руками верстаешь? Я просто не осилил хамл. Утилитарную хуйню сделать – всегда пожалуйста, но я не могу сделать красивый интерфейс, чтобы самому приятно было. В комментариях на хабре пишут, что XAML это очень мощный инструмент, но.. камон, я столько бойлерплейта в жизни не видел
Открываешь какой-нибудь легаси на вебформах, вот такое же ощущение. Только вебформы эволюционировали в разор, а хамл так и остался
В итоге плюнул, осилил жс на полфедора и пишу на кайфовом vue, благо была возможность выбирать инструмент
>>1768034 >vue Проблема с таблицами больших данных, вплоть до зависания страницы при пагинации скроллом. Ты ее решил как-нибудь или у тебя такого не было?
>>1768003 >неотъемлимые WPF можно писать без MVVM, нельзя без XAML. Это они намекают, что придерживаются канонов >а вот этот тут зачем нужен? это намек на то, что будь ты даже десктопным девом, все равно нужно пердолить что нибудь для веба
КАК ОПУБЛИКОВАТЬ БЛЯДСКОЕ ПРИЛОЖЕНИЕ АСП НЕТ МВС!!???? я целый ебаный день сижу, и нихуя не работает!! Зарегался сначала на каком-то бесплатном сервисе - нихуя не вышло. Потом пробовал через АЗУРЕ, КАК БАЗУ ДАННЫХ ТАМ ИМПОРТИРОВАТЬ!??? приложение запустилось без базы! Купил на рег.ру себе хостинг. Оказалось, что это не рдп, а какое-то говно с папочками, а инструкции нет! Как ОПУБЛИКОВАТЬ ЕБУЧИЙ САЙТ С БАЗОЙ ДАННЫХ!!!??? я БЛЯДЬ ЩАС ВОЛОСЫ РВАТЬ УЖЕ БУДУ!
>>1768041 > Ты ее решил как-нибудь или у тебя такого не было? У меня максимум тысяча строк было, с оптимизацией не парился Но если бы столкнулся, то делал бы пагинацию на стороне сервера. А перед этим попробовал бы таблицы с виртуализацией строк. Что у тебя там за данные такие?
>>1768335 Как я делал. Купил VPS с KVM-виртуализацией, там установил дотнет хостинг бандл и nginx. Приложение, естественно, netcore 1. Открыл нужный порт в системе 2. Прописал в конфиге nginx'a порт, на котором будет работать мое приложение, и порт, который открыл наружу. 3. Запустил свое приложение ... Профит!
Вместо запуска приложения можно написать демона, который будет сам поднимать его при перезагрузке. Так же можно обойтись без nginx'a, заявлено, что kestrel на котором работает asp готов к работе без проксирования
Гугли, я сам по шагам делал из руководства то ли на Хабре, то ли Медиуме, уже не вспомню
>>1768399 Отчёты. Виртуализация - это когда дом не рендерит элементы вне экрана? Не покатит, поиск должен работать. Ну тысяча строк это такое. У меня типичное количество +- 3к с 13ю колонками, две колонки из которых должны быть динамические(но судя по бенчмарку, динамика не особо влияет, т.к. без нее тоже зависает. Если он зависает, то на событиях сборки мусора, когда данных на экране много и подгружаются новые) Думаю на серверсайд рендеринг перейтиили нахуй на рейзор пейджс
Где смотреть хороший код на шарпе? Просто книги не мое, а вот смотреть чужок код - заебись. Как-то легче понять что и зачем. Вот. Потому накидайте примеров хорошего кода на шарпе, если не сложно.
Как сделать пустышку неизменяемой, при этом не вынося ее в отдельный класс? Допустим, вот у меня есть класс Book. Если я делаю что-то типа: class Book { private static Book _nullItem = new Book(); public static Book Enpty => _nullItem; } То в любом месте кода можно изменить значение открытых для записи свойств пустышки. Я конечно могу проверять объект book.Equals(Book.Empty), но мне не нравится так почему-то.
>>1768462 Crtl-f работать не будет, а кастомный поиск на странице можно сделать. Он же не в доме будет искать, а в твоих жс объекта Как тебе разор поможет?
>>1768601 Ой, и не говори, анон. В моей мухосрани самая жирная вакансия их всего две это шарп + ангуляр. Бомбит – пиздец. Ангуляр такая параша. На нем нельзя просто сесть и начать писать, а синтаксис отбивает всякое желание изучать эту NG-мешанину С другой стороны, конкуренции там меньше должно быть
>>1768679 Сейчас есть кастомный фильтр. Хотя кастомный поиск, вызывающийся по клацу на ctrl+f это идея.
Разор поможет с тем, что у него вообще нет проблем с большими списками данных. Прошлый проект на нем был, клиентская часть даже не чешется от нагрузки, можно какую угодно таблицу выводить
Сап. Посоветуйте, куда можно перекатиться с .NET, чтобы можно было работать (желательно не за хлеб). Уже посматриваю в сторону Kotlin/Java, судя по вакансиям с HH хоть пыху начинай дрочить (дада, в 2к20). Фронтщит не рассматриваю. Дискасс
>>1768773 Легче всего будет на пыху перекатиться, чуть посложнее жаба. При этом в обоих случаях придётся столкнуться с менее удобным синтаксисом и конструкциями.
>>1768791 да похуй на синтаксис, главное чтобы работа была. Как бы парадаксально это не звучало, но изначально начал вкатываться на пыху, потом почитал всякие паблики-хуяблики ВК с ноющими (Ряяя, пыха умирает, говно/костыльный/НедоООП язык), который по факту по сей день живее всех живых
Имеется библиотека .net standard 2.0, хочу использовать стороннюю библиотеку, через add reference и browse указываю путь к dll-ке, ставлю галочку. В итоге ничего не работает, пишет couldn't load file or assembly. Какого черта?
Хочу, чтобы моя прога при отсутствии базы данных заполняла ее необходимыми мне значениями. Типа создать учетку администратора, например, и т.п. Я так понял, что для этого используются инициализаторы бд. Но не понял, какой мне нужно использовать: DropCreateDatabaseAlways - база дропается при каждом запуске приложения? DropCreateDatabaseIfModelChanged - как тогда работает?
>>1769205 Сижу с телефона В общем, Database.EsureCreated проверит, есть ли бд И в методе OnModelCreated или как-то так, в параметрах есть modelBuilder, в котором можно каждую сущность-таблицу проверить на .HasData и в случае чего заполнить
Только если ты делаешь миграцию в пустую базу данных, то отключи EnsureCreated, а то ошибка будет – сперва Ensure создаст таблицы, а потом будет выполняться миграция и еще раз попытается, и свалится с ошибкой. Ничего страшного, просто так, к сведению Все названия примерные, но легко загуглишь
>>1769355 Будет работать и так, только желательно при этом переменную list сделать readonly, для гарантии того, что lock берётся на один и тот же объект.
Смотрите, делаю приложение на asp.net core. Суть, есть определенные задачи, которые могут выполняться довольно долго. Таких задач можнет быть много. Должна быть возможность запуска задач по расписанию, причем расписания для разных типов задач хранятся в БД. Должна присутствовать возможность определенную задачу запустить через контроллер. Так же должна быть возможность остановить задачу из контроллера.
Ну так вот. Что я наговнокодил. У меня есть имплементация IHostedService. В ней есть список задач которые в данный момент крутятся. В методе StartAsync я прверяю в БД расписания и добавляю в список задачи, переодически проверяю, пришло ли время их исполнить и если пришло - запускаю. Так же у меня есть api котроллер, в нем вся логика для стороннего пользователя, тут он может сконфигурировать задачу, может запустить ее выполнение и проверить статус задачи. В этот контроллер я пробрасываю эту самую имплементацию IHostedService и еще контекст для БД и использую методы оттуда.
Ну так вот. В чем проблема. Приходится тупо прокидывать логику в этот IHostedService через контроллер. Этот сервис разбухает от этого. Плюс, т.к. это синглтон, обращения к базе приходится делать через постоянные: using var scope = serviceScopeFactory.CreateScope(), что не очень удобно. Опять же, приходится для каждого запуска задачи создавать новый CancellationTokenSource, чтобы задачи были независимы, потом чтобы через api отменить задачу, приходится смотреть есть ли такая задача в списке задач, если есть - проверить - запущена ли она, и если запущена - вызвать Cancell() у токена. Как-то это все получается громоздко и тупо. Может быть есть примеры как подобное проделывается?
Ситуация: у меня есть Юзеры, каждый из которых принадлежит компании. У компании есть коллекция Юзеров, но есть еще директор. Как правильно прописать ссылку на директора в таблицах? Или оставить просто свойство Id? Таблица User: public string FullName { get; set; } public int CompanyId { get; set; } public Company Company { get; set; }
Таблица Company: public int Id { get; set; } public int DirectorId { get; set; } public User Director { get; set; } public ICollection<User>Users { get; set; }
Зацените, короче, мой проект базы данных. Задача: реализовать голосовалку для пользователей. Пользователи могут участвовать в разных голосованиях, варианты ответов по голосованию тоже могут быть разные.
>>1769656 Писать проект нужно с головы, а не жопы или туловища. Сначала описывай всю логику, а уже под неё создавай сущности, иначе у тебя хуйня получится.
Что спрашивают на собесах на бекендера-ждуна? Я просто смотрю одни вопросы в интернете, там совсем элементарщина, типа от чего все наследуется, что такое интерфейс и чем от абстрактного класса отличается, чуть по самому asp, чуть по гиту, немного про работы с БД. Смотрю другие, там про кишочки спрашивают и просят чуть ли не самому свой asp спроектировать плюс зачем-то ангуляр/реакт просят. На что из этого ориентироваться? Просто я вот ходил по собесам и меня вообще ничего кроме синтаксиса не просили, но я сам отказывался из-за того что ссался, но сейчас вот мамка гонит из дома, нужно искать работу и соглашаться на ЗП которой мне не хватит для оплаты квартиры не хочется.
Да что-ж поддержка слабых ссылок такая рудиментарная в языке? Дали один WeakReference, и ебись с ним как хочешь. А где Set, где Dictionary со слабыми ключами или значениями, где weak-делегаты? Вот делать мне нечего, как руками отписывать события.
>>1770389 Ориентируйся на что-то среднее. Без знаний JS работу вряд ли найдёшь. Где-то к этому JS еще требуется реакт и ангуляр, но это уже фуллстек на .Net, поэтому хватит обычного JS. Что-то кроме синтаксиса не просили - это из разряда шаражек с зарплатой в 15к или рассказы времён начала 2010-х.
>>1770389 Проходил недавно пару собесов (из 20 компаний) - писал выше опыт. Могут спросить что угодно - от слова совсем. В тоже время пытаются залезть в залупу - спросить по ASP.NET (у меня даже по рейзору ссаному спрашивали) и зацепить тему алгоритмов, деревьев. Так как я кидал на Full back CV - в основном дрочили по нему. Касты, рефлекшн, асинхронность/многопоточность (мьютексы и локеры даже спрашивали, хуй знает зачем), LINQ много спрашивали, делегаты/события. Дохуя короче. По Субд - маст хев. И даже несмотря на то, что Full back - начали ебать мозги ссаным CSS, JS. Я раскинул CV в 20 галер (без комерческого опыта в разработке, но с опытом работы в бизнесе) - 90% отморозились. У меня в городе (миллионнике) куча галер с конвеерами джунов, поэтому работу - хуй найдешь
Как используя .NET Framework подключиться к smtp-серверу от yandex или mail? Использую .NET классы из под powershell, но постоянно выскакивает "The operation has timed out." и если верить Wireshark, то это происходит еще до непосредственной авторизации. Дело в SSL\TLS или в чем-то другом? Прикладываю код powershell. Использовал 465 порт.
>>1770389 в какомто видосе слышал что овер_вопросы на собесе это мастхев чтоб нащупать дно джуна. типо у мидла и сеньора помидора дефолт знание технологий, а важен именно ОПЫТ и УСПЕХ и там смотрят по прошлым работам и проектам. а у джуна нет опыта, нет успеха вот его и спрашивают.
и это норма что ты обсеришься на какомто вопросике, но если ты весь из себя милаха_улыбака и ни разу не токсик то тебя захотят, но если ты умнее контролеров и будешь сидеть и подъебывать их на этом то тебя посылают скорее всего в йух.
Хм, почему мой тимлид так яростно сопротивляется против того чтобы сделать в вебапи один контроллер, который бы отдавал странички? Типа блин, наш единственный фронтендщик завален по самые помидоры, а какой-то фронтенд для этого апи нужен и я бы мог быстренько накидать на том же разоре простенькие странички для настройки сервиса, которые стилизавать позже мог бы фронтендчик, либо не стилизовать, потому что мой сервис подразумевает один раз настроить и потом просто работать по расписанию. Но нет - либо, раз я хочу помочь - на вью хренач, либо жди пока фронт освободится. Что за фигня-то?
Я вот кое чего не понимаю с DI и вообще с ООП. Объясните пожалуйста. Вот допустим у меня есть следущая структура. АпиКонтроллер. В нем методы StartTask(id), StopTask(id), Info(id). Этот контроллер нужен для того чтобы из вне можно было запустить некую задачу на сервере, ID - для того чтобы знать что это за задача и запускать ее. Для того чтобы задачу можно было отменить я делаю класс TasksOwnerService. Этот класс - синглтон. В нем есть коллекция токенов отмены, есть список запущенных задач. Когда Апи получает какой-то запрос, этот сервис логику запуска, отмены выполняет. Ну и сам класс задачи, который просто имеет в себе метод DoAction(CancellationToken)
Воооот. Я понимаю что уже хуйня вырисовывается, но я не знаю как лучше сделать.
Так что я говорю. Для разных задач у меня в БД есть набор параметров, собственно для этого в контроллере и нужен ID. Я, изначально хотел как делать: в класс задачи я передаю репозиторий с общими настройками действительными для всех задач, чтобы если эти настройки в процессе изменялись бы, я бы просто мог из этого класса получать актуальные. Но в чем проблемма, когда синглтон создает новую задачу, после того как задача была создана, и занесена в справочник поставленных на выполнение, контекст подключения к БД диспозится. Я это конечно обошел поправив класс задач и сделав настройки свойством, которое необходимо установить после инициализации, но мне кажется, что как-то неправильно и хотелось бы чтобы класс задач сам мог достать эти настройки. Но что я не пытался сделать - контекст диспозится, а как сделать по другому я не представляю.
>>1770760 >>1770887 Дело оказалось в том что .NET Framework не умеет в implicit TLS. Но теперь у меня появилась другая проблема: говнокод работает на 7-ке с powershell 2.0 но не работает на 8-ке с powersell 4.0 и .NET Framework 4.6. Я так понял дело в сломанной совместимости между версиями .NET Framework т.к. в классе Net.Mail.SmtpClient появились новые свойства вроде кодировки темы, заголовков и тела сообщения а командлет Send-MailMessage не позволяет их менять в оф документации что-то не нашел.
>>1771786 нахуй ты эту простыню сюда притащил? Кому интересны твои костыли к TLS? Уже все написанно - подключай либу и отправляй себе запросы. Нахуй ты себе и к тому же другим мозги ебешь?
>>1771786 Могу только удвоить вот этого >>1771928 адеквата. Если ты хочешь пилить свои костыли, то тебе нужно не .NET использовать, а брать какой-нибудь хобби-язык вроде Раста или Хачкеля, к которым хуй да нихуя библиотек, а их пользователи больше похожи на фанатиков-костылеписцев, чем на программистов.
>>1772510 Сейчас выяснил что дело было в сегменте сети где производилась попытка запустить скрипт на более новых версиях винды. Так-то есть в планах при прописать в скрипте скачивание нужной либы для тех вещей где чистым .NET не обойтись
У меня есть компьютер, на нем стоит база данных Microsoft SQL Server. Тут понятно как мою С# прогу подключать и указывать логин-пароль
Но я хочу сделать прослойку между моей программой и базой данных. В качестве прослойки служит база данных Microsoft Access В этой базе данных есть нужные мне запросы, плюс хранятся локальные данные пользователя программы, а также кеши выборок чтобы основную базу не дергать (коорче, оказалось удобно так делать)
База данных access должна содержать связанные таблицы из Microsoft SQL Server (сейчас она содержит полные копии каждой таблицы, пока я тестово работаю)
Но я не знаю как указывать в данном случае логин и пароль базы Microsoft SQL Server
>>1724425 (OP) >WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML А зечем? Я понимаю если ASP и прочий веб стек, там без MVC MVVM сложно. Но MVVM в стандалон проге для тырпрайза? Серьёзноблядь? Какой дегенерат будет это городить в десктопах то? И главное ради чего? Обычно это делается чтобы разделить разработку на дизайн, программирование и БД. Но тут и без MVVM эта задача решена сразу из коробки. Короче, обьясните мне профиты. Кучу раз на конференциях слышал что этот паттерн кто-то использует и кучу раз выступающего поливали ушатами из говна. Потому-что герома много, а профита нет.
>>1773912 > > Какой дегенерат будет это городить в десктопах то? Смотря что ты пишешь. Если маленький проект, то вопросов нет, можно закостылить и так. Правда, поддерживать другим будет больно, я уже наткнулся на эти грабли. А если что-то массивное, то mvvm тут будет на руку > И главное ради чего? Даже если проект небольшой, то mvvm это стандарт. Ты открываешь чужой проект, и тебе не надо думать, ты просто читаешь > ушатами из говна Везде есть спорные моменты. Можно спросить, как сделать модальное окно, и все, абстракция потекла
Я не использовал mvvmlight, prisma, потому что у них довольно высокий порог входа. Может, с ними удобнее. Но я просто забросил это впф нахуй и доволен как слон Надо что-то небольшое – на винформе пишу, драг анд дроп. И никакого xmlns, Grid.RowDefinition, DickDuckValueConverter и прочего нечитаемого бойлерплейта. Надо что-то большое – вот вам сайт на mvc или vue
>>1774320 >Правда, поддерживать другим будет больно, я уже наткнулся на эти грабли. А если что-то массивное, то mvvm тут будет на руку Что именно не так? Сейчас поддерживаю прогу в компании. Довольно большая Пользуются её 2к человек. Кода оче много. Без MVVM. За неделю примерно разобрался, за месяц написал первый модуль к ней, начал фиксить. >Даже если проект небольшой, то mvvm это стандарт. Ты открываешь чужой проект, и тебе не надо думать, ты просто читаешь Я и так читаю, никаких проблем с этим не видел. Если у меня скила не хватает, то хоть какой паттерн применяй, будет сложно. А если хватает, то опять же причём тут паттерн? >Везде есть спорные моменты. Можно спросить, как сделать модальное окно, и все, абстракция потекла Без MVVM? Берёшь и делаешь. Я не понял где проблема?
>>1774333 > Сейчас поддерживаю прогу в компании. Довольно большая Пользуются её 2к человек. Кода оче много. Без MVVM. Мне достался проект, где классы форм были в тысячи строк. Возможно, у вас изначально задумывались над архитектурой, а не допиливали утилиту до состояния монстра > Без MVVM? Берёшь и делаешь. Я не понял где проблема? С mvvm
У тебя сложный "бек", или сам интерфейс с тоже выворотами? Сколько примерно элементов на экране отображается одновременно?
>>1774414 >У тебя сложный "бек", или сам интерфейс с тоже выворотами? Интерфейс без особых выворотов. В основном бэк сложный. >Сколько примерно элементов на экране отображается одновременно? Примерно 20, в особых случаях до 80. Прям оче редко 90.
з вебметодом вообще странная штука, я уже писал в этом >>1774480 посте что я пытался заставить работать хотя бы пример их мсдн и он все равно не работал по фиг знает какой причине, он просто не реагирует и все, я так и не понял в чем прикол и смирился, теперь обхожу веб метод стороной
>>1774501 ??? Скажи честно, ты сидишь в тюрьме и изучаешь сишарп по древним книгам нулевых годов еще до asp.net mvc и выходишь в интернет по WAP через sony ericcson k750i, протащенный в жопе залётного питониста и трафика хватает только на этот тред с отключенным JS и CSS?
>>1774505 Ну ты посмотри кого ты блять слушаешь. Муддасар Кхан в 2013 году. Это блять индус блять. И ты читаешь записки индуса из 2013 года в 2020 году.
>>1774514 > WebMethod Братан, ну ты в натуре через вап сидишь В чем проблема открыть вкладку сеть, и посмотреть, куда твой xnr летит? Атрибуты на методе висят какие-нибудь? Мидлвары нестандартные?
>>1732253 >Ну да, только таких в топ IT компанию и берут. Там дикое легаси, в котором черт ногу сломит, работает и ладно. Сказки про топ компании, сука.
>>1775091 потому что современнее. потому что работая с mvc проектом ты можешь запросто перелезть на разработку rest api, потому что принцип один и тот же. потому что в коре ходовой стек - это именно mvc, а развивается именно коре, а не древние веб формы. развивается как в плане внутренних оптимизации, так и различных фич и синтаксического сахара вроде встроенного DI
Нужна помощь шарписов. Облазал пол интернета и нихуя не нашел.
Крч мне нужно написать парсер, который будет искать на сайте символы и выводить эту строчку в консоль/тхт/таблицу. У меня нихуя не работало и я решил взять пример из интернетов.. и он блять тоже нихуя не работает. Использовал библиотеку AngleSharp.
>>1775465 Где ты так научился код писать? Тоже так хочу. >Чому не отменяется-то загрузка если я долблю esc? Прям вообще не отменяется или отменяется с задержкой? Видимых причин для первого нет. >Ну и в остальном, прошу как обычно кодревью. Да. Зачем ты используешь в HttpService.DownloadAndSave инстанс WebClient'a, кода у тебя в HttpService есть инстанс HttpClient'a? Метод GrabAsync слишком перегружен, я бы вынес парсинг страницы и сбор всех uri в отдельный приватный метод. В этом методе нужно заменить все EndsWith на регулярное выражение из словаря, ключом к которому будет одно из значений перечисления FileType {Image, Video}, в итоге у тебя появится быстрая возможность добавлять сохранение файлов определенного типа и код станет более читаемым.
В остальном мне всё понравилось, организованно на отлично.
Почему в grid (DataGrid в WPF) показывает что у меня 0 Column, тогда как в dogTable (DataTable ) показывает что их было 12?
Я из-за этой херни не могу переименовать в grid название столбцов, потому что у меня вылетает исключение про неправильный индекс (даже по 0).
При всем этом если переименование закоментировать, то все нормально работает и данные выводятся в таблицу (а еще подобный же код в другом месте с другим DataGrid работает)
>>1775719 зачем? что бы по телефону с сервером созваниваться как этот анон?>>1775182
неа спасибо, я все еще не увидел никаких преимуществ мвс над вебформами, вебформы простые легкие, можно низкоуровневый код писать к страницам, а у мвс из приемуществ какие-то непонятные абривиатуры которые в реальных проектах нестабильны и юслес
Че делать с этим говном? Я уже задолбался постоянно копипастить это говно. Просто на каждый запрос приходится копипастить этот кусок кода. Как можно по нормальному обернуть в функцию? Или чего-нибудь готовое, но не сложное?
>>1775939 > зачем? что бы по телефону с сервером созваниваться как этот анон?>>1775182 Мой знакомый тоже о вебформсах хорошо отзывался > неа спасибо, я все еще не увидел никаких преимуществ мвс над вебформами Гоняешь по сети кучу трафика, ебешь процессор нагрузкой больше, чем на mvc > вебформы простые легкие > <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestAspNet45.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> ... Ну хз, мне это напоминает wpf с его бойлерплейтом > можно низкоуровневый код писать к страницам На mvc тоже можно. А вообще проще фронт на JavaScript и не ебаться с костылями > а у мвс из приемуществ какие-то непонятные абривиатуры которые в реальных проектах нестабильны и юслес Говоришь о технологии, с которой незнаком. Тревожный звонок, анон
>>1776034 Где async?? Все IO/Network операции надо через async/await вызывать.
Reader нужен только для оптимизации или для каких-то простых приложух. Во всех остальных случай EF Core. Ну или хотя бы Dapper, если не хочешь заморачиваться с настройкой контекстов, запуском in-memory для тестов и миграциями https://github.com/StackExchange/Dapper
>>1776270 про низкоуровневый код я имел введу о code behind страницы, и я не понял что ты написал про javascript и к чему это, и к тому же я не уверен что в мвс так можно, мне кажется что нет, насчет трафика в вебформах есть такая крутая штука как update panel заворачиваешь туда то что надо обновлять а все остальное берется из клиентского кеша, так можно оптимизировать очень хорошо трафик + для мелких задач можно юзать веб метод и не исполнять лишний код на сервере, а трафик будет зависит чисто от того как ты json сообразишь, насчет новых технологий в мвс честно скажу не знаю знаком с мвс посредственно но за мвс почему-то топят в ру сегменте, я живу и работаю в европе и тут наоборот мвс что-то не такой популярный, может быть из за индусов не знаю, но вот в тех случаях когда я просил четко оформить плюсы мне говорили вот те вещи что анон сверху задвигал, "ну там в будущем, там что-то обещают, а там технология многообещающая, да и оттуда перекатиться туда будет в будущем легко, на раст, хераст, педераст" а зачем мне куда-то перекатываться и что мне это дает здесь и сейчас "молчание"
>>1776349 Не чувак, веб формы в прошлом и уже давно. И они в десятки (а где то и тыщи) раз медленнее и более прожорливее MVC/Razor Pages/Rest API. А с выходом WASM и Blazor и HTTP/2 вообще небо и земля. Тебе, как привыкшему к вебформс можно перебраться на Razor Pages https://docs.microsoft.com/en-us/aspnet/core/razor-pages Меньше разрыва шаблонов будет.
Короче - докладываю, в vs'e кнопочки ретаргета на солюшине нету (наверное потому что это последняя версия). Пробовал тупо менять значения версии в файле .sln - vs2010 нихуя не схавала (unable to open solution). >>1776420
>>1776349 да ты бля даже веб метод у себя через ajax раскочегарить не можешь, какой тебе низкоуровневый код, какой кодбехайнд блять. ссынок блядь. куда ты лезешь? >а зачем мне куда-то перекатываться и что мне это дает здесь и сейчас затем что mvc и asp.net core mvc в частности с его dependency injection из под коробки удобнее и интуитивнее в разы. при двузначном iq код на коре будет удобно разбит по контроллерам, сервисам, миддлвейрам, а то же самое на вебформах превратиться в ёбаный спагетти-код, видал я такую хуйню. ты там блядь пойди еще и собственный html-generator написал на шарпе и хуяришь им в респонс боди, потому что блядь низкоуровнево блядь пиздец погоромист блядь. динаху отсюда
>>1776112 >>1776296 Может я недоглядел, но я не понимаю как работать когда мне нужно данные полученные с запросов еще и обрабатывать. Ну то есть я делаю сложный SQL запрос, затем делаю замену некоторых данных - например сменить формат даты - мне не нужна дата вплоть до микросекунды которая хранится в базе. И вот как такие операции делать - когда я получил с базы данные, но они еще не пригодны для программы? (А то во всех учебниках элементарно - делают класс подобный структуре таблицы и на этом всё)
>Где async?? Это тоже не понял - зачем делать эту операцию асинхронной, если ее результат ждет программа? пока результата нет - она и не должна работать (да, интерфейс должен быть заблокирован чтобы пользователь не нажимал кнопочки пока не прогрузилось - я часто с такой херней в некоторых других прогах сталкивался - когда тыкнешь не туда во время загрузки и пиздец все ломается)
>>1776296 >Где async?? Все IO/Network операции надо через async/await вот серьезно - какой смысл, если основной поток все равно без этих данных не сможет корректно работать и по сути должен уходить в ожидание?
>>1776745 Мне страшно становится от мысли, что куча так называемых "программистов" работает над настоящими проектами вот с такими вот знаниями и подходом к делу.
Сильно (очень) упрощённая версия. Кол-во потоков (и вообще ресурсов) в любой системе ограничено. Если этой не школьный или просто для души проект, то разбрасываться ресурсами нельзя! Await возвращает поток назад в использование для всех остальных (а не только тебя любимого). IO/Network операции выполняются в другом процессе, а чаще всего вообще на другом железе. Нет смысла отжирать ресурсы впустую, пока ты ждёшь ответ от внешней системы.
Но самый страх начинается, когда ты начнёшь отлавливать дедлоки на пустом месте. Нельзя, ВООБЩЕ НИКОГДА НЕЛЬЗЯ, делать async over sync или sync over async. Это прям НЕТ и точка.
>>1776743 С такими знаниями тут тебе ни один ответ не поможет, кроме готовых примеров конкретно для твоего приложения что врят ли кто-то за тебя писать будет.
Вообще надо делать отдельные классы (Entity) для представления того, что у тебя в БД. И отдельные классы для бизнес логики. И потом делать репозитории/сервисы/мапперы/обзывай как хочешь, от архитектуры зависит, в которых ты будешь из Entity делать Domain объект и наоборот.
>>1776783 Ты о чем? Я не понимаю что ты хочешь мне сказать
Я знаю что количество потоков ограничено. Я как раз и спрашивал - нахера делать получение данных асинхронным, если без этих данных программа не сможет работать и будет их ждать, так как любые операции без данных - это ошибка логики и к ничему хорошему не приведут. А еще у меня в коде дохера кеширования и многие запросы делаются один раз, дальше оно хранится в памяти (прога занимает 260мб оперативы)
>>1776783 > IO/Network операции выполняются в другом процессе, а чаще всего вообще на другом железе какое еще другое железо? откуда оно возьмется? При чем тут вообще Network?
>>1776349 > насчет новых технологий в мвс честно скажу не знаю знаком с мвс Я мало работал с вебформс, всего один раз баг пофиксил. Получается разговор людей, которые работают с разными технологиями
Проперделся с педерастов, но, анон, я вот что скажу. Вебформы на неткор не портировали, это теперь легаси и количество работы будет сокращаться
Я сейчас завожу трактор, поэтому мне нужно иметь актуальный стек. Туда, куда я хочу, не то что мвц, туда шарп особо не нужен. Думал на яву перекатываться, но пока фронт изучаю. Ты в Европе, тебе и так хорошо
И как уже заметили, вебформс уже легаси и будет поддерживаться только в старом фреймворке. Новых фич и быстродействия уже не получит. Мир с каждым днём всё больше в облака уходит. С вебформс там делать нечего. Разве что только с пет проектами.
>>1776785 Я тебе так скажу - учись. Читай новые статьи, обсуждения, книги, сам экспериментируй. Вот эту шпаргалку всем без исключения дотнетчикам на самом деле многое отсюда к любой технологии/языку/платформе относится надо держать всегда под рукой https://docs.microsoft.com/en-us/aspnet/core/performance/performance-best-practices >Do call all data access APIs asynchronously. >Call data access, I/O, and long-running operations APIs asynchronously if an asynchronous API is available.
В твоём случае asynchronous API как раз available.
>нахера делать получение данных асинхронным чтобы - не отхватить deadlock; - не отжирать ресурсы, пока программа ничего не делает, потому что твой поток не уходит спать, а возвращается в пул потоков и может быть использован чем-то другим в системе (кстати, на счёт спящих потоков: Thread.Sleep() должен уйти на покой, а вместо него надо использовать await Task.Delay()); - для многопользовательских приложений увеличить проходимость (если блочить каждый UI thread, то на новоприбывших пользователей потоков может в какой-то момент не остаться и они будут сидеть и ждать очереди).
Чтобы юзеры не могли нажать кнопочки, когда их нажимать не положено, существуют 1001 техника без блокировки основного потока: disable UI elements, waiting screen/spinner, проверка в коде на повтор того же самого запроса и т.д..
>>1777436 А если подумать, вебформы хороши или нет? В отрыве от вопросов производительности? Просто увидел там драг-н-дроп, подумал, что это интересная фича
>>1777561 ИМХО ничё в них хорошего не осталось. Drug-n-drop разработка - такой себе анонизм. Это как если сравнить какой-нибудь https://gamesalad.com с нормальным игровым движком. Да, у тебя получится сделать продукт, но он будет похож на школьный проект или на местечковую автоматизацию какой-нить конторы/администрации.
Я с вебформс дружил с 2008 года. Каждый раз когда проект разрастался до десятков тысяч строк, начинались танцы с бубном. Особенно если вместо одного сервака тебе внезапно нужна была небольшая ферма. Те ещё пляски чтобы управлять одним приложением на нескольких машинах разом (scaling называется).
.Net Core упростил веб разработку в разы. У нас есть приложухи монолиты с миллионом строк кода и есть системы из кучи микросервисов. Нормально всё поддерживается и работает. Мы бы наверное то же самое на вебформсах 10+ лет пилили и потом без остановки баги разгребали.
>>1777744 >MVC Razor или WebAPI+JS? Что за таски обычно, легаси или с 0? Микросервисы?
И где тут хоть слово про опыт, долбоебина? Хотя можешь не отвечать, ты уже подтвердил свою умственную отсталость, поэтому диалог с тобой продолжать не вижу смысла.
>>1777752 токсичная хуйня кидает линк с апворка и хуй пойми какой ждет реакции. Спрашиваю про опыт фрилансеров, он мне выкатывает простыню про идентификацию по посту. Не пиши больше, чмоха
Сап анончики, я еще даже не близок к званию джуна, но уже могу +- что-нибудь накостылить. Решился делать свой текстовик по типу виндовского блокнота, но не знаю куда сохранять все данные в программе. Не могу подобрать БД, да и нужно ли оно тут?
>>1778547 Нет. Корона + малый спрос на .Net решили этот вопрос не в пользу джунов. А вот мидлам и сеньерам наоборот хорошо, так как многие компании сокращают джунов и пытаются заменить их меньшим количеством мидлов и сеньоров. >>1778574 >Не могу подобрать БД, да и нужно ли оно тут? Это шутка такая? Где ты текстовый редактор видел, который данные сохраняет в базу данных? Сохраняй в файл, очевидно.
Пишу ASP Core MVC, есть такой r.MapControllerRoute( ..name: "someroute", ..pattern: "{govno:alpha}/{mocha:int}", ..defaults: new { controller = "Con", action = "Act" }); Как мне теперь создать ссылку с помощью tag-helper'ов а-ля mysite.gov/kaka/13?
>>1778702 Короч, если кому надо <a asp-route-govno ="kaka" asp-route-mocha="13" asp-controller="Con" asp-action="Act"> Оно будет автоматически искать подходящий маршрут, параметры автоматически будут сопаставлены с частями пути, остальные прилепятся как параметры гета.
Поясните за необходимость математики и знания различных алгоритмов для разработчика. Как часто на работе всплывает необходимость в подобных знаниях? Или это всё только на собеседованиях роляет?
>>1778924 Полностью зависит от того, чем будешь заниматься. В вебе тебе навряд ли понадобиться что-то сложнее логарифма. В гейдеве, думаю, понимание векторов, матриц и соответственно операций над ними покроет 90% твоих потребностей (геймдев на шарпе это юнити, довольно высокоуровневый движок, единственное не знаю как там шейдеры пишут, наверно качают ассерт из стора, так что тоже особой математики не надо). В машинном обучении, наверно да, но у них там скорее всего своя специфика, а ты будешь пользоваться готовыми либами. Ну а в кровавом ынтырпрайзе, опять же зависит от того что это за приложение. Могут быть хардкорные вычисления а может быть школьная арифметика.
>>1778924 >за необходимость математики и знания различных алгоритмов для разработчика если очко жмет спросить применение этих алгоритмов на практике, то нужно учить. Советую выдрочить один экзотический алгоритм, который применял только дед Ануфрий при войне с перлом и при вопросе: "Какие алгоритмы знаешь?" - Отчечаешь этим алгоритмом. В 99.9% интервьюер ничего про него не знает, можно поставить шах и мат фразой "Ааа, вы его не знаете... Ну понятно". Если спизданет "Да знаю" или промолчит - попросите описать/реализовать. Изи типсы для собеса.
>>1778944 — Блядь, всё-таки не знаешь, ой мудель, блядь!.. Твою мать, изучай это говно нахуй, блядь! Сейчас будешь всё это дебажить, блядь! — Я тебе принес вопросов-то! — Чё ты мне вопросов принёс, чё ты, мудак, что ль, бля?! Хули ты спросил… хули ты сортировкой-то вымазался, мудак, блядь?! — Я уж погулил, я тебе… — Пидорас, блядь! Сука, блядь! — Соискатель, ты что! — Убери это говно отсюда, блядь! — Я спросил уже!.. — Ёб твою мать, блядь, и весь вайтборд засрал, блядь! — Хотел тебя спросить-то!.. — Мудак, блядь, ну ты мудак, блядь, я тебя сейчас убью, нахуй! Я тебя, блядь, сейчас убью нахуй, блядь! — Я тебе принес задач-то!.. — (Тихим голосом.) Блядь, ну ты пидорас, блядь… — Задач-то… — Бля, ну ты сумасшедший, ёб твою мать, а… — Задач-то… — Бля, с кем вы меня посадили, охуеть, ёбаный в рот!.. — Я не HR, я те честно говорю! Я тебе… я просто хотел тебе сделать доброе дело… — Чё? — Я не кодил вообще сегодня!.. — Чё, нахуй, мне — добро?
>>1777467 >- не отхватить deadlock; какие дедлоки в однопоточном приложении?
>>1777467 >не отжирать ресурсы, пока программа ничего не делает она и так не отжирает ресурсы, когда ничего не делает - событийно-ориентированая архитектура же. 0% загрузки проца и 80 мб оперативы в простое.
>>1777467 >потому что твой поток не уходит спать, а возвращается в пул потоков и может быть использован чем-то другим в системе винда сама все разрулит намного эффективней,так как приложение находится в состоянии простоя
>>1777467 >- для многопользовательских приложений увеличить проходимость (если блочить каждый UI thread, то на новоприбывших пользователей потоков может в какой-то момент не остаться и они будут сидеть и ждать очереди). У каждого пользователя свое приложение. Они никак друг друга не блочат.
Чел, все то что пишешь - это либо слишком сложные системы, которые в одиночку никто в здравом уме не разрабатывает, либо веб, так как там нынче все должно быть "модно-молодежно".
Я же пишу обычное десктоп приложение, управляющее делопроизводством компании из около 40 человек. При этом активно работающие с базой всего два рабочих места. Остальные работают с копиями.
Анон, как сделать следующее: - есть база в сети на SQL Server. при этом для доступа используется учетная запись SQL Server - есть локальная база в MS Access - локальная база содержит связь на таблицу из базы SQL Server
как мне работать с этой связью? На пикче называется dbo_Улицы
Если я открываю ее в Access - то в первый раз она требует пароль SQL Server
Но как теперь этот пароль указать в коде?
вот это не работает: string connectionBDCoreStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};JET OLEDB:Database Password=1234", mdbFile); using (var connect = new OleDbConnection(connectionBDCoreStr))
пишет "ODBC - ошибка подключения к 'база в сети'
Мне это для чего надо - в MS Access я храню запросы, и код должен работать с ними
>>1779119 Сам спросил, сам отвечу. Все оказалось капец как просто (при этом убил 3 часа, нифига не нашел в гугле, и тупо на угад получилось - вечно так)
Короче, в самой ms access когда создаешь связанную таблицу, там есть окно в котором надо выбрать таблицы - в этом окне снизу притаилась кнопка "сохранить пароль". Вот это оно и есть - сохранить пароль и дальше в самом коде не надо никаких паролей указывать - работает со связанными таблицами как с обычными (ну или чтобы не вломали хацкеры - поставить пароль уже на саму базу ms access)
>>1779124 То есть ты делаешь Update, а старые значения заносишь в Access?
Я брал Serilog и просто сущности в Json сериализовывал и сохранял. Можно только diff сохранять, но при моей нагрузке и хуевой туче памяти это не нужно. В итоге полное версионирование
Что насчёт двух контекстов? В SQL Server можно ссылаться на другие базы но вот можно ли ссылаться на базы других программ?, кажется, в объектах сервера было. Посмотри, может, в access есть что-то похожее. Я так понимаю, тебе надо сперва подключиться к access, а потом уже тянуть данные с MS SQL Поверх двух контекстов можно нагородить провайдер, который будет разруливать твои действия. Можешь глянуть DDD и bounded context, но это охуеть головомойка
Вообще, мутная эта схема. Не хотел бы я, чтобы такой проект попал на поддержку. Данные либо нужны, либо нет. Твой access тоже где-то надо хранить, бекапить, держать в памяти. Почему бы не сделать все на одной платформе?
>>1779131 >Вообще, мутная эта схема. Почему мутная?
Общая база данных хранится на сервере SQL Server. А локальная база MS Access хранится вместе с программой и у каждого будет своя (в ней можно и индивидуальные конфиги хранить)
Запросы очень удобно делать в MS Access (в нем самый простой, но мощный редактор). В SQL Server Management Studio это как-то черезжопно. В коде это тоже выглядит страшно.
При этом результат выборки запроса можно сохранить в MS Access и тогда не дергать основную базу, а брать уже сохраненные результаты из MS Access, просто при первом запросе делать копию редкоизменяемых таблиц - такое кеширование сильно разгружает локальную сеть (у нас раньше была такая проблема).
А самое главное - разработка. Я ведь иногда прихожу домой и хочу дальше кодить, но доступа к серверу у меня нет (и я не хочу ставить себе дома всякое говно). В случае MS Access это легко решается: - есть MS Access в котором устанавливаю связи с SQL Server - это рабочая локальная база - есть база в которой я храню полные копии таблиц из SQL Server с теми же именами что в рабочей у связей.
И мне в результате надо всего лишь одну строчку в коде изменить чтобы оно брало локальную копию. А не городить огромные условия и шаблоны, где выбирать нужную базу и нужный биндинг - ведь с access работать через OleDbConnection, а с SQl Server через SQLConnection. Сейчас я во всем коде могу работать через OleDb, и подключаться к локальной базе. А уж в самой базе менять связи как мне надо
>>1724425 (OP) Аноны умоляю. Есть у кого-нибудь полный набор элементов для xamarin от synfuction? Или хотя бы ключик. Очень хочется исходники посмотреть
>>1779137 Для таких вещей есть Sqlite, к которому и коннектится проще и конфигурить. Сам файл БД можно зашифровать и расшифровывать при старте твоей проги. Для ручного доступа к БД можно самой студией пользоваться без всяких SSMS и MS Access.
>>1779679 По итогу получается, что на страницу все равно надо прилепить кусок js-ного кода только если у тебя там не статичный контент, а то и целый фреймворк, потому что разор – это генератор html, и на этом его полномочия заканчиваются. А блазор – хуйня из под коня. Либо васм, который никто качать не будет, либо соединение с каждым клиентом, что не подходит для нагруженного приложениям
Таким образом, помимо js и html надо знать еще и тег-хелперы разора. Раз уж js надо изучать, почему бы уже не взять какой-нибудь вью или реакт, и писать фронт отдельно? Еще и spa получится, охуенно же
Признаю, с разором можно много чего написать – я поддерживаю пару жырных проектов на mvc, но удовольствия от ковыряния этого псевдо-html я не испытываю. Один жирнючий плюс – удобная отладка из коробки. Что закинул в модель, то и получаешь в ходе генерации. Для входа в веб проще не придумаешь
>>1779726 >почему бы уже не взять какой-нибудь вью или реакт, и писать фронт отдельно? Мы как раз так и делаем уже года 4. Razor если и используется, то редко и только для инициализации исходного состояния приложения (через тот же React или Angular). Через него безопаснее читать конфиги, настраивать всякие политики и прочая безопасность. Плюс появляется возможность создавать true source of knowledge объекты. Те же enum. Вместо того чтобы создавать одно и то же два раза (на бэке и фронте), делаешь один раз на бэке и генеришь год для фронта. По хорошему тот же самый объект и для DB mapping должен использоваться. Для больших проектов сильно помогает сократить время на разработку и отладку. И вообще magic knowledge is evil.
Having said that я терпеть не могу жаваскрипт и перепрыгну на WASM (Blazor в нашем случае) при первой же возможности. Плюсов уже сейчас куда больше чем минусов. А после нормального релиза и глобальной поддержки WASM и HTTP/2 будет вообще огонь. ЖС должен сдохнуть и желательно ещё вчера.
Анонче, может кто-нибудь помочь написать TCP клиент и сервер?
Мне нужно написать сервер, который будет работать 24/7 и по требованию писать блоки данных всем клиентам.
У меня какое-то недопонимание.Я сделал сервер, сделал клиент.
У клиента создаю TcpClient, потом ему делаю Connect(). И потом using (NetworkStream stream = socketConnection.GetStream()){ if (stream.CanRead){ var dataString = MakeStringFromServerData(stream); Debug.Log(dataString); } }
При первом прочтении всё ок. При повторном дропает ошибку. Я что-то не выкупаю, вот эта мразь дропает что ли соединение или в чем дело >using (NetworkStream stream = socketConnection.GetStream()) т.е. после каждого прочтения надо рвать соединение и по новой? или как?
>>1779781 Забыл добавить, >может кто-нибудь помочь написать TCP клиент и сервер? готов заплатить умеренную кукую-то сумму, если поможешь разобраться с этим.
>>1779793 Мне нужно, чтобы просто сервер работал вечно, и был у него публичный метод аля Send(byte[] data), и клиент, который бы вечно работал и принимал эти ёбоманые байты. Буду безмерно благодарен, если поможешь.
>>1779798 >>1779799 Щас попробую с нуля эти примеры. Если будут ошибки, отпишусь. Спасибо.
у меня сервер на .Net Core 3.0, а клиент unity IL2CPP. я до этого использовал SignalR, но на устройствах apple вечно эта мразь рвет соединение хер пойми из-за чего. поэтому я решил пилить на чем-то низкоуровневом.
Как в net core контролить фпс на собственном движке игры? Проблема заключается в том что Thread.Sleep на core ждет для значения 1 минимум 12-15 мс, на фреймворке 4.8 нормально все работало, а теперь либо жрать ресурсы пользователя, либо просто так пожирать целое ядро на компе. А я хочу дать возможность пользователя залочить игру на нужном ему фпс и при этом не жрать впустую его ресурсы.
>>1779994 В итоге он забудет и обосрется, потому что без Thread не сможет сохранить данные в случае необработанного исключения, так как все таски убиваются не дожидаясь их завершения.
>>1780001 Вообще пох, хоть VueJS. Какой больше нравится, тот и используй. Серьёзно, абсолютно пофиг какой из них брать и даже абсолютно пофиг на то, какие пакеты выберешь для работы с CSS, UI components, testing, etc.. Скорость работы, производительность, функционал приложухи будет зависеть от твоих рук и на сколько ты подружишься со своими инструментами.
>>1780015 Делать фронт на Ангуляре или Реакте через VS шаблоны - это пистец. Для собственных проектов как раз пойдёт. Для реальных проектов надо настраивать 2 отдельных приложения - для бэка и для фронта, и настраивать таски через какой-нибудь Webpack для генерации и отдачи файлов браузеру.
>>1780048 Типичныйэксперт с двача, лол. Показывай мне код который в делегате ивента AppDomain.UnhandledException будет запускать таск записывающий информацию об исключении в файл и успевать это делать, пока clr не убьет его.
>>1780051 А нахрена ты non-thread pool threads используешь? Иначе зачем тебе UnhandledException сдался (да и вообще ручные ивенты и делегаты? как там в 2010, кстати?).
>>1780078 Речь идёт об UnhandledException те исключении которое никак не обработано, из за чего приложение прекращает работу. При чем здесь нон тред пул тредс и твои ссылки?
>>1780113 Дебил, я еще раз повторяю, речь про эксепшн котопый ложит твое приложение и сохранение данных до того как процесс завершит работу. Если делать это используя класс task, то ничего не сохранится, в отличии от класса thread
>>1779992 Ничего не мешает, я могу так делать и сейчас так делаю, но это тупо жрет одно ядро на 100% так как цикл бесконечный и большую часть времени он выполняется сотни тысяч раз проверяя можно ли делать физику и рендер. Но я не хочу греть зря проц и выполнять бесполезную работу. Потому что на мощных машинах основной поток рендера может быть загружен на 20-30%, а остальные 70% получается бесполезная работа без thread sleep.
>>1779994 В фреймворке это было еще медленнее чем thread.sleep и сейчас в core работает так же как thread sleep давай минимум задержку в 14-16 мс, что не приемлемо так как физика у меня по умолчанию идет в 100 фпс. И я не хочу использовать task потому что это ухудшает дебаг, так как каждый раз таска идет на новый поток и затем если я хочу собирать данные о перформансе или чем-то еще, то не могу сгруппировать их по потокам так как у меня будет сотни потоков в профайлере. Для меня thread является идеальным решением, я же не временно беру поток, а на долгое время (пока не завершится программа) и всегда выполняю в нем работу
Godot иммет вшитую поддержку C#, но они используют Mono. С выходом .NET 5 моно и кор станут едины и тогда можно будет сказать что Godot использует самый последний dotnet.
>>1779752 WASM-то сделают, но рантайм загружать все равно придется. Не думаю, что в браузеры запилят рантаймы под каждую платформу, это слишком много места Как вариант – сделают AOT и можно будет работать с wasmовскими инструкциями, тогда оверхед будет минимальный. В любом другом случае – ну кто в своем уме будет делать сайт, который для первоначального рендеринга требует скачать 3-4 мегабайта?
>>1780015 Вью добавляется с полпинка Нужно поменять скрипт запуска в дотнете, а во вью в конфиге добавить сообщение о запуске, как у реакта. А то он не стартует Был гайд где-то, ищи Но вообще идея странная, удобнее два отдельных приложения сделать. Я сам только недавно начал, сделал сперва как ты хочешь, потом разделил на два и кайфую. Только корс надо настроить Вообще, мутная там безопасность, что пиздец, с ходу не поймешь, надо будет пару деньков посидеть
>>1780624 Да, каждый браузер по умолчанию будет только C/C++/Rust вшивать. Но браузер может кэшить отдельные сборки, поэтому после одного такого сайта другие будут грузиться сразу. WASM как Docker - скачал image и запустил в отдельном контейнере. Images можно локально хранить и менеджить между разными приложениями.
Для игр, редакторов, всяких тяжёлых клиентов, типа Outlook, вполне будут качать и 3 и 10 мб.
И вообще если тебе понадобилось целый фреймворк тащить, чтобы написать веб приложение, то у тебя там явно не страничка с текстом и картинками, иначе можно было бы голый html + css + чуть-чуть js использовать.
PWA тоже вполне пойдёт. Можно даже во всякие апсторы выпускать.
ЕОС, есть одна строка. Я хочу ее использовать как seed в рандомной генерации, но у дефолтного Random из-под коробки seed имеет тип int. Как мне можно конвертнуть напрямую стрингу в инту (в строке не цифры!) или как-то выйти из положения иначе?
Сделал пока вот такую хуиту byte[] bytes = Encoding.ASCII.GetBytes(stringText); int i = BitConverter.ToInt16(bytes, 0); i.ToString(); Но для него стринга "11" и "11111111" это тоже самое. Если поставить конвертить в большую инту - выдает ексепшн что слишком малый байт массив (стринга), а мне нужна поддержка хотя бы двух символов в строке. Пока держу вкурсе. >>1780813
>>1780517 Начал исследовать проблему и нашел странное поведение. То ли это новая винда 2004 теперь так тупит, то ли net core, но теперь thread.sleep(1) работает ступенькой с разницей в 300-1500 мс в шаг начиная с 15-16 мс и доходя до 1 мс как и должно быть. Вот это график за 10 секунд.
>>1780879 Это не так. GetHashCode не стабилен для стандартной строки и если ты хочешь иметь стабильный хэш тогда используй собственную реализацию строки.
>>1780887 Чому нестабилен? Я только что палкой потыкал - вроде нормально. Одно и тоже значение на строку выдает - заебись, все, мне больше не нужно, а в случае повтора хешей можно просто юзеру отправить что такой юзернейм занят и пошел он нахуй. Какие еще подводные?
>>1780900 Я хочу сгенерить уникальный "рандомный" ключ шифрования на юзверя, взяв его логин+пароль(строку) как начальный сид для генерации, вместо того чтобы заебывать самого юзера явным рандомным ключем помимо логина/пароля. Не спрашивайте нахуя, мне именно вот так нужно.
Короче я все сделал. Спиздил вот эту либу для строк https://github.com/StefH/RandomDataGenerator Написал вот так var randomizerText = RandomizerFactory.GetRandomizer(new FieldOptionsText { Min = 32, Max = 32, Seed = textBox5.Text.GetHashCode() }); key = randomizerText.Generate();
>>1780868 В голове у тебя странное поведение. Thread.Sleep(1) отдает своё процессорное время другим потокам и когда оно вернётся к нему обратно зависит от многих факторов, начиная от количества потоков в системе, их приоритетах и заканчивая непосредственно типом процессора.
>>1780918 Все студенты и шаражки. В большом проде разбивают всё на разные приложения и над каждым из них своя тима работает. Шаблоны были введены по такому же сценарию как и VB.NET - есть куча калек, которых надо как-то продолжать эволюционировать.
>>1780923 Очевидно же что я делаю проверку на полностью свободной системе и уже судя по всему начал докапываться до сути, проблема в самой винде, а точнее в какой-то обнове. У меня такая фигня только с нет кором, на 4.8 все нормально. Сделал тестовые версии для своих пользователей и узнал что у половины людей на винде 2004 проблемы, поведение точно такое же как у меня, ступеньками. На 1809 же ноуте та же самая программа дает для sleep(1) от 1 до 2 мс, график не идет таким вот бредом.
>>1780898 У хэша строк большая коллизия. А нестабилен он от запуска к запуску, т.е на 100 запусков может быть как 100 одинаковых так и 100 разных хэшей, об этом на том же msdn написано. Именно поэтому если ты используешь строки в качестве ключей в какой-нибудь хэш коллекции, то можешь не слабо так обосраться и даже не понять почему.
>>1780954 >Именно поэтому если ты используешь строки в качестве ключей в какой-нибудь хэш коллекции, то можешь не слабо так обосраться и даже не понять почему.
Каким образом обосраться? Можно хоть все элементы коллекции под ключами с одинаковым хэшем хранить, это повлияет только на производительность.
>>1780954 >>1780921 >У хэша строк большая коллизия Мне похуй, один хуй коллизия ведь будет всегда, а большая или маленькая - какая разница если все равно нужно запилить костыли чтобы ее проверять и обрабатывать. >на 100 запусков может быть как 100 одинаковых так и 100 разных хэшей А вот это уже хуево.
https://docs.microsoft.com/en-us/windows/win32/api/timeapi/nf-timeapi-timebeginperiod В новых версиях винды они что-то намутили с таймерами и поэтому везде где они используются надо вручную вызывать это. Большинство игрушек которые написано давно не имеют подобного и поэтому на новой винде как бы "плывут". Плюс куча тестового софта которые используют твой thread.sleep для тестов и рассчитывают на менее чем 15-30 мс (на многих системах не твои 15-16 мс выдает, а 30-35 мс) проваливаются и вводят разработчиков в недоумение. Есть грязный хак сделать таймер в 1 мс для всей системы, это своего рода фикс для таких приложений без их переписывания.
>>1780962 Предположим ты хочешь хранить состояние программы между запусками и вот такая коллекция с хэшами от строк сломает тебе все приложение и повезет если сразу сломает. Вполне может произойти такая ситуация что лишь 1 хэш на 1000 изменится и ты не будешь понимать что за чертовщина твориться и откуда вылезают баги. Не говоря уже о том что это поведение изначально крайне нестабильно и не зависит от тебя, в minor версиях может меняться алгоритм и в результате в тебя в один момент времени коллизии на 100_000, через пару дней после обновления станет 30_000. И никак на это повлиять ты не можешь.
В консольном проекте WebClient.DownloadString() работал нормально, но когда перенес этот же код в библиотеку, вместо русских букв начали отображаться заменяющие символы. Пробовал загружать массив байт вместо строки, менять кодировки, использовать HttpClient - не помогло. В чем проблема?
>>1781258 В одном случае нужна винда, в другом нет. В первом случае фреймворк старый, во втором - пилится каждый день и планы еще на несколько лет вперёд.
>>1781404 > вот такая коллекция с хэшами от строк сломает тебе все приложение и повезет если сразу сломает.
Так я тебе и говорю, что ничего не сломает. Одинаковые хэши только замедлят выбор нужного элемента из коллекции, потому что все они будут в одной корзине, т. е. нужно будет перебрать все ключи и сравнить их с запрошенным ключом. Именно поэтому сравнение строк идёт не по ссылке, а по значению.
дорогие аноны! вопрос про карьеру ( тупой , но не ссыте на меня пжлс ). Короче я поработал поработал, и понял что си шарп топ язык ваще. А еще мне нравится криптография и вообще все, что связанно с защитой. ВОПРОС Есть ли предметные области, которые скрещивают эти вещи? Или вообще любой разраб должен знать методы защиты и применять их? А может блокчейн является этой панацеей? Короче не игнорьте плз, буду очень благодарен за ответ нубу (опыт работы если что есть, 3 года, просто два из них это Си а год юнити)
>>1782388 >два из них это Си >год юнити >нравится криптография >и понял что си шарп топ язык ваще чухня подзалупная, проиграл с подливой с мамкиного разработчика
Вот есть функция загрузки private void SelectStreets_Loaded(object sender, RoutedEventArgs e) { SelectStreets.ItemsSource = nameStreet; SelectStreets.SelectedIndex = 0; }
nameStreet - это просто член базового класса типа List: List<string> nameStreet = new List<string>(); nameStreet заполняется при запуске, в конструкторе окна перед вызовом InitializeComponent();
ВОПРОС - почему когда я первый раз щелкаю по этому выпадающегому списку - он на 2-3 секунды зависает? Второй и дальше клики уже нормально. Именно на первом. Как будто он список загружает в момент первого клика. Но опять же - там не больше 200 записей, что там тормозит?
Команда ищет на удалёнку бэкенд-куна с знанием .NET Framework, .NET Core, ASP.NET Core, OpenAPI. Ещё немного навыков: SignalR, postgresql, git, gitlab, понимание Docker(как запустить). Какие-то другие навыки и опыт тоже приветствуются. Писать в телегу @RandomZTN ЗП 300-900 р/ч(уже на руки после вычета налогов) в зависимости от уровня. Желательно фултайм.
>>1783853 да ты проскроль вверх, что в постах - WPF/WF, TCP клиенты. Я когда то был на собесе - собеседовали 2 дева (как я понял тим лид и сеньер). Так вот я пизданул, что когда то был опыт разработки на WPF (хотя приходил на Core) - делал парсер тредов двача, так один из них улыбнулся ехидно типо "Ооо, двач" и шепнул что то второму на ухо (наверное что то типо "О бля, прон видать качает там"). Так вот я прошел собес на 10/10 - ответил на все развернуто, поулыбался (софт скилы типо), опыт был хороший. И знаешь что? Мне никто не перезвонил. Так что еще раз повторюсь - лучше бомжей с вокзала поспрашивай, там ты скорее бриллиант найдешь, чем тут
Сап, Двач. Когда рациональнее использовать ссылочные типы, а когда типы по значению? Начал разбираться с памятью, "понял" то что в стек будет храниться ссылка на кучу, если разговор про ссылочные типы. Что быстрее?
>>1784032 это $4-12 - дно какого ни будь Upwork или freelancer.com. Только там ангельский знать нужно, а тут походу русиш_компани_и_ко. Поэтому по оплате мне кажется все справедливо
>>1784073 Что быстрее зависит от размера объекта, если объект не большой, то выгоднее делать его значимым типом, если большой то выгоднее делать структурой. Также важно так как ты его используешь, если часто передаешь в разные методы, то выгоднее делать ссылочным типом, так как в случае с значимым типом каждый раз будет создаваться копия объекта, а в случае с ссылочным только копия ссылки. Можно конечно передавать значение по ссылке, но это наклаыдывает определенные ограничения, например асинхронные методы не принимают ref параметров. Остальное здесь прочитать можно: >>1784198
как сделать вызов клика по кнопке когда ты пишешь в форме? ну вот как вконтакте ты пишешь, нажимаешь ентер и сообщение отправляется, как такое реализовать в asp net
Может кто помочь? Ото я новичок и не очень понимаю как все реализовать. Создание бинарного дерева поиска по структуре, как то реализовать выборочную сортировку по выбранному элементу из структуры. Код структуры и добавления в дерево по ссылке https://pastebin.com/5W6cH6HV
Запрос в гугле вывел меня на мейл. >У меня два вопроса: есть ли другие способы вернуться к началу и можно ли использовать goto в switch-case ? >пикрелейтед
Есть EF со своими сущностями, есть репозиторий поверх еф. Я так понимаю репозиторий не должен выствлять во вне энтити от еф? Т.е. мне следует сделать дто для ентитей, правильно?
>>1785147 Ты видел использование репозитория в крупных проектах? Пишешь репозиторий, пишешь сущности для него, если надо работать с двумя репозиториями одновременно, начинаешь дрочить вприсядку, попутно въебывая тонны кода в свой проект, а логику еще даже не начинал писать. При том, что еф уже представляет хороший уровень абстракции
Очень приятно прописывать все эти сущности, тут я согласен. Как бы занят делом, а по факту бойлерплейт ручками прописываешь и думаешь – о, ебать, вот это я прогрессивный программист, не хуйней, а важным делом занят
>>1785147 Щас бы видосики смотреть по пол часа, чтоб узнать то, что можно было бы прочитать текстом за пять минут. >>1785283 Я тут проспался и решил использовать интерфейсы для сущностей. Т.е. из репы будут торчать IAnimal, а возвращаться AnimalEntity : IAnimal, который используется в дбконтексте. Просто меня напрягает то, что репа может вернуть объект с непрогруженными навигационными свойствами.
Нужно запускать код который я не могу контролировать и который не должен работать больше чем X мс. Как это организовать? Просто пользователь может сделать while(true) или thread.sleep(100000) и мне нужно чтобы этот код умирал через указанное мной время.
>>1785283 >Ты видел использование репозитория в крупных проектах? У нас используется в проектах с несколькими миллионами запросов в день и более 1кк строк кода в каждом из проектов.
Антох, как сделать так, чтобы итерации в цикле проходили с задержкой в 10 секунд? Thread.Sleep не помогает, виснет всё приложение к хуям на эти 10 секунд. В петухоне это делается просто time.sleep(x). В Шарпе что-то не понимаю.
У меня есть класс public class ForDataGridView { public string Колонка1{ get; set; } public string Колонка2{ get; set; } public string Колонка3{ get; set; } public string Колонка4{ get; set; } } Есть массив. List<ForDataGridView> data = new List<ForDataGridView>(); И когда я наполняю его данными и делаю так. dataGridView1.DataSource = data; То всё пиздато, кроме 1 - я не могу сортировать столбцы по нажатию на хедер. Как включить сортировку?
protected internal: совмещает функционал двух модификаторов. Классы и члены класса с таким модификатором доступны из текущей сборки и из производных классов. что значит текущая сборка?
>Use of async void in Core applications is ALWAYS bad. Avoid it, never do it. Typically, it's used when developers are trying to implement fire and forget patterns triggered by a controller action. Async void methods will crash the process if an exception is thrown.
>>1786595 Прикол интернета в том, что тут очень легко обобщать. Я на работе коллегам говорю: нельзя просто так брать и лепить что-либо найденное в интернете в проект as-is. Надо всегда проверять и подгонять под конкретное решение. Однако анон в интренете заявляет что я прям "любой текст" и прям "как священное писание" воспринимаю.
Относительно async void. Спорить не только можно, но и нужно о многих вещах. В споре, говорят, истина рождается. Но есть вещи, о которых спорить вредно. Например, "полезно ли прыгать с крыши 9го этажа?" или "хорошо ли это приставлять заряженный, рабочий пистолет к чьей-либо голове?". Можно сколько угодно философствовать и словоблудить, особенно на кухне и с банкой пива. Но в рабочее время ты только зря будешь отнимать время у людей.
async void не должен быть использован в проде. Вместо него надо использовать async Task.
Имеется Asp.net core приложение, в одном из методов контроллера возвращается Redirect на внешний Url. Суть в том, что до этого редиректа имеются ещё строки кода и они, блин, выполняются только один раз, потом сразу редиректит, игнорируя эти строки. Через некоторое время опять этот код до редиректа может выполниться. Подозревал, что это из-за кэширования, погуглил, гугл подсказал атрибут [ResponseCache(NoStore =true, Location =ResponseCacheLocation.None)], но это не помогло. Поэтому ищу помощи тут.
Асинхронные обработчики всегда создаются с возвращаемым типом void; Зачем мне возвращать таск, если я нигде не ловлю эксепшн и запускаю метод, который будет работать на протяжении жизни всего приложения, либо когда определенное условие не выполнится? Т. е. если в этом методе есть исключение, то я ожидаю, что приложение закончит свою работу, потому что иначе в работе приложения нет смысла; Зачем мне подавлять предупреждения о том, что CS4014( call is not awaited), если я хочу void метод, но делают Task только потому что долбоеб с двача прочитал статью в интернете и воспринял её как догму вида ответа на вопрос "полезно ли прыгать с крыши 9го этажа?"? Можно только посочувствовать проду в котором ты участвуешь/будешь участвовать, потому что в проде люди как раз должны отдавать себе отчет в том, почему у async void именно такое поведение, и где можно использовать async void, а где лучше использовать async Task. Умозаключение "никогда не использовать async void" полезно только если ты начинающий программист, который пока не знает всех тонкостей работы.
>>1787888 Анон, тут вопросец. Обычно такие вакансии подразумевают что я должен быть безработным (иначе не трудоустроить по нормальному)
А как быть, если я фултайм работаю в офисе, и вообщем меня устраивает. Но захотелось чего-нибудь нового, так как достиг потолка (6 лет тут сижу). Но боюсь остаться у разбитого корыта и уволиться с текущей, и при этом не пройти собесы (я практик, я умных книжек не читал), или пройти, но попасть на галеру с задержками низкой зарплаты и переработками. Я еще живу в мухосрани - тут не получится каждый день ходить по офисам и искать идеал. Что есть - там и работать.
Но я дохуя молодой - после работы на которой не особо и устаю я еще спокойно свои проекты в стол кодю по 6-8 часов. Так есть такие варианты, в которых все официально, но по договору там или сдельно. И как их искать?
Но не фриланс, где надо дохуя времени просижывать на биржах в поисках удачи. А именно работать на одну фирму.
(я как-то спрашивал у одной hr - написала что нельзя, только увольяешься и идешь к ним на собес. по другому никак)
Я просто хочу хотя бы 2-3 месяца поработать, чтобы уж точно было понятно что я подхожу и никто не выпнет, и можно увольняться с текущей и переходить на новую...
Хотя увольнение - тоже проблема, я должен найти сменщика и обучить его (и не собираюсь никого кидать), то есть увольнение займет еще год - я должен иметь гарантию что через год я не окажусь на улице из-за того что "не тяну или не программист"
>>1788409 >>1788414 >Как не пролететь Быть хорошим специалистом, очевидно. >(да, я пессимист) Ты еще даже проходить не начал собес, а уже говоришь о том, что будешь работать несколько месяцев и не подойдешь. Пессимизмом тут и не пахнет. > я должен найти сменщика и обучить его В своей шаражке может и должен, в нормальных компаниях ты просто предупреждаешь заранее и уходишь через 2 недели.
В общем, если ты сомневаешься, значит тебе недостаточно профессиональных навыков. Прокачивай их и проблем с устройством на работу не будет. А для того чтобы быть готовым к собесу, достаточно решать 1-2 задачи с литкода уровня медиум каждый день.
>>1788272 Я ещё ни в одной конторе больше 1.5 лет не отработал за 15 лет карьеры. За прошлый год 3 работы сменил и каждый раз с повышением зп. Правда я не в мухосрани живу. Но сейчас проще, чем когда-либо, найти работу удалённо. Связываешься с работодателем, созваниваетесь, болтаете 30-60 минут вне твоего рабочего времени. Если всё устраивает - тест или онлайн или сразу в офис. С работы можно отпроситься по личным делам на пол дня. Тест онлайн можно и вечером сделать. Если получил офер и он тебя устраивает, то на прошлой даёшь 2-4 недели окно, в течении которого обещаешь помочь задокументировать и переложить задачи на коллег и вперёд к новым свершениям!
>>1788456 >Прокачивай их и проблем И как их прокачивать не работая над реальными задачами в реальных конторах? Я могу решить почти любую задачу, но за мое решение меня наверняка сразу же погонят (эх, вот были времена в девяностые и нулевые, когда можно было хуяк-хуяк и при этом рубить большие деньги. Без всего этого новомодного бреда.. (иногда посматриваю исходники древнего софта выкинутые в опенсурс - да сейчас за такой код даже на джуна не возьмут))
>>1788920 Я забыл сказать, что у меня +10 часовой пояс, то есть в любом случае с московским регионом я могу работать только к вечеру и ночью. Поэтому и спрашиваю про возможность работать и на текущей (утром) и на новой удаленно
>>1789354 Возможно и проще, но потом работать с этим кодом уже будет намного сложнее, чем просто можно было написать нормально. Главное потом не полениться, и переписать это говно, а то семья того чела, который это прочитал может подать в суд за доведения человека до роскомнадзора.
>>1789251 >И как их прокачивать не работая над реальными задачами в реальных конторах?
Никто не мешает работать над своими проектами и писать в них хороший код. Постоянно освежаешь знания по теории, следишь за нововведениями, также открываешь исходники готовых проектов от хороших разработчиков, изучаешь структуру кода и пытаешься её повторить в своих проектах. Самое сложное это заставить себя работать, поборов лень.
>>1790038 Ну вообще он говорил что работает над своими проектами по 8 часов после работы. Так что явно не ленивый. Проблема самоучек в том, что не знаешь как фильтровать инфу, которой в инете много. А еще дофига "лже пророков" развелось. Насмотришься костылей и пойдешь повторять то же самое в своих проектах, думая что прозрел.
В случае с дотнетом МС за последние 3 года проделали классную работу по структуризации инфы и созданию гайдов того как надо и не надо делать + куча примеров на гитхабе - https://dotnet.microsoft.com/learn Поэтому прежде чем верить какому-нибудь джамшуту на просторах сети надо сначала официальные гайды пройти.
https://leetcode.com - тут надо проводить по несколько часов в неделю любому уважающему себя программисту. А то развелось кретинов, которые утверждают что знание базовых алгоритмов, структур данных и как считать big O нужны только байтоёбам. И про DFS/BFS только в универе краем уха слышали. Зато потом получаем приложения, которые обычные запросы отрабатывают вместо 2 мс за 10-30 секунд и думают что это норма.
>>1790144 >Ну вообще он говорил что работает над своими проектами по 8 часов после работы. >он
Не у всех есть модерка, которая позволяет различать посты одного человека.
>Насмотришься костылей и пойдешь повторять то же самое в своих проектах, думая что прозрел.
Поэтому и нужно смотреть не пророков, а реальные проекты. Мне например помогли понять ООП организацию кода .net исходники.
>тут надо проводить по несколько часов в неделю
Достаточно решать 1-2 задачи уровня медиум в день. Часы проводить на этом сайте смысла особого нет, потому что для олимпиадного программирования есть другие сайты, а для работы эти задачи полезны только в плане прохождения собеседования. Иногда это даже вредно, потому что многие новички начинают экономить на спичках и заниматься преждевременной оптимизацией, в то время как от них требуется написание кода, который поймут другие, а не подсчет наносекунд его выполнения.
>>1790191 У тех, кто алгоритмов в принципе не знает, будут уходить часы на easy задачки. 1-2 medium задачи в день будут выходить в 40 часов в неделю. Поэтому "несколько часов в неделю" для начала очень даже по божески.
>>1790202 Так речь шла уже о работающем аноне, а не новичке-вкатуне. У новичка может и день на медиум задачу уйти, потому что он думает, что подсматривать в ответ нельзя.
>>1790191 Да, решать задачки спортивно, не особо думая о том, для чего ты это делаешь - вредно. Основной бонус зависания на литкоде - это изучение основ: Data structures HashMap (Dictionary), HashSet (и вообще понимание того что такое hash и нафига он нужен), arrays, stack, queue, linkedlist (наименее напрямую используемая структура, однако она под капотом каждодневно используемых системных и не очень классов), tree. Algorithms (операции над структурами данных) Traverse, find, add, insert, delete.
Особенно полезно всяким жавасриптерам, которые абьюзят свой дофига "магический" array.
Прохождение собеседований - это полезный бонус. Если компания пытается мимикрировать под какой-нибудь гугл, и делает это отвратительно - это не значит что такой подход к собеседованию - гамно, и не имеет практической цели.
Но когда ты сам себе судья, то скорее всего быстренько нагуглишь пару решений, подгонишь под себя и будешь гордиться тем, что решил задачу за час. Знаний, правда, не прибавится.
>>1790237 И да, вот это: >Но когда ты сам себе судья, то скорее всего быстренько нагуглишь пару решений, подгонишь под себя и будешь гордиться тем, что решил задачу за час. Знаний, правда, не прибавится.
Типичное заблуждение вкатывальщиков или просто глупых людей. Нет смысла сидеть над задачей если у тебя в решении нет никакого прогресса. И решение не нужно гуглить, оно есть к большинству задач и его можно посмотреть сразу, в них также есть пояснения и описание использованного алгоритма. Вот когда ты поймешь решение, а не перепишешь его, тогда ты и получишь пользу. После чего через несколько дней можно вернуться к задаче и решить её самостоятельно.
>>1727560 Ты просто жопу мучаешь, пытаясь сделать эту хуйню через EF. Хуйни процедуру и не еби мозги. Вызовешь процедуру, получишь результат. Изи. Ошибка у тебя в том, что LINQ to Entities не может в Select=>Except(Select). Типо ты мешаешь линк классический с линком, который преобразуется в iqueryable. Есть варианты сделать так, чтобы это говно работало, но оно того не стоит.
>>1790440 Смысл был в том что ваш сеньор перепишет, не поняв решение, и не получит пользу. И даже на переписку этот самый сеньор может целый день затратить, а потом в итоге забить, сказав что он в детские игры не играет. Я многим сеньорам за несколько лет оттуда простые задачки подкидывал. Решение было сделано либо через несколько дней, либо никогда.
>>1734669 > то видно что в ответ сайт присылает нужный мне json Кидай через любой REST-клиент такой же запрос как и сайт, получай свой json и работай уже с ним.
>>1737220 > Публичный класс <see cref="MyClass />, реализующий интерфейсы <see cref="ICommentable"/> и <see cref="IUnnecessary"/> > public сlass MyClass : ICommentable, IUnnecessary Капитан очевидность? Сюда надо писать зачем нужен твой MyClass и что он делает.
>>1740196 > Если работать с этой строкой используя стандартный split, то он не будет останавливаться на 6 элементе, он будет сплитить тебе всю строку Похуй.
>>1749286 У тебя класс не правильно называется, убери s. Бтв. public User GetById(int userId) { using var context = new Zalupa(); return context.Users.FirstOrDefault(x => x.Id == userId); }
>>1789623 >но потом работать с этим кодом уже будет намного сложнее, А потом рефакторинг. Я могу себе его позволить, и постоянно делаю - сначала быстро наговнокодить (при этом быстро, это не обязательно как>>1789913, а как руки набили). А потом все это почистить
нужно - выгружать данные в excel (при этом обязательно в 2010) Сначала нагуглил Interop.Excel - но он не работает с .net core 3.1 (пишет предупреждение что надо net framework, плюс вылетает ошибка что не найдено приложение. пробовал все версии)
Сейчас заюзал EPPlus, либа понравилась, но мне не нравится платная лицензия. Старая версия с GPL также не подходит - я не могу выкладывать в опенсурс. При этом софтина для коммерческих задач.
Писать свой парсер тоже не вариант, не до велосипеда, да и требования там сложные, нужна готовая либа.
Ну и второй вопрос - что там можно заюзать чтобы строить красивые графики в WPF? (а да, либа по работе с Excel тоже должна уметь строить графики по данным)
>>1727560 Хуйнёй ты начал заниматься в тот момент когда начал вводить переменную freeId, если тебе нужен порядок в следовании, то вводи новое поле/свойство всех объектов в бд и веди внутренний счетчик, который будет увеличиваться/уменьшаться по мере добавления записей в базу данных.
мум. Даже не знаю как к этому относится. Кто не понял и все проспал - это полностью рабочий код в С# 9. Не кусок кода, а весь код. Да, без классов, неймспейсов, и даже без Main.
Ну как во всяких там питонах (а еще вернете как было в старом добром бейсике) - просто садишься и ебашишь инструкции без всякого ооп
>>1724425 (OP) Cап, можно ли просто взять и поменять Target framework проекта c 2.0 на версию 4? Проблема в том что в текущей версии нет нужных мне refernces, а в 4 они есть.
>>1790507 Ты на каких-то сказочных проектах работаешь. В нормальном проде бизнесу всегда нужно всё вчера и много времени на Tech Debt выделять никто не станет. Если ты сейчас накостыляешь, а потом ещё немного, а потом дедлайн и ещё костылей и говна для заплаток надо принести. И вот через пару лет проект проще выкинуть и начать заново, чем в этом месиве жить. Вообще когда пишешь код, надо помнить о Теории разбитых окон https://ru.wikipedia.org/wiki/Теория_разбитых_окон
Если у тебя в коде бардак, то очень легко добавить ещё немного мусора, потому что "ну тут же и так уже грязно, подумаешь ещё один фантик брошу". А потом приходит свеженанятый разраб и такой "это надо всё на помойку и начинать писать с нуля".
>>1791180 Так поэтому и делают говнокод, потому что бизнесу всё вчера нужно, ты всё правильно написал. Пока ты там продумыввешь архитектуру, ушлый программист-кабанчик выпускает говнокод в прод, получает повышение и становится тимлидом в другом месте, а тебя называют халтурщиком, который вместо работы тянет время, неся бред про проектирование, поддерживаемость и TDD.
>>1790432 1. Подписался хуй его знает когда (еще в начале лета) 2. Upwork/HH/Freelacer.com, почитай посты студентоты, посмотри тенденции роста и актуальность на рынке 3. Смотри ответ на 2 вопрос, исключи текущий тред
>>1791232 Рост создаёт кто? Мы! Если ты пойдёшь в жавапидоры, то работодателю ничего не останется, как менять ориентацию и начинать долбиться в жопу и пить смузи.
>>1791232 ну вот простой пример, друг в мск учиться, перешел на 2 курс, работает на полставки в какой-то компании имеет 40к, работа есть, язык не вымрет однозначно, тем более когда готовиться выход .net 5.0
Работаю миддлом, поставлен на проект по интеграции энтерпайзной системы с различным географическими платформами. Де-факто, я работаю один, проект разбросан на несколько языков C++/C#/Python; ядро написано на шарпе.
Собственно, у меня полный контроль над проектом; те, кто работал над этим проектом передо мной либо сломали свои копья и поспешили убраться, либо уже умерли. C#/Python части полностью написаны мной, и даже Аллах не знает, как оно работает кроме меня конечно.
В общем, я сам заднеприводный ОКамлщик по зову сердца, и тут пришла идея в голову, что зачем мне вся эта грязь, весь этот бойлерплейт, вот эти все игрушки дела, когда у Microsoft есть F#, что есть тот же ML и хватит мне как чернь в болоте копаться.
Ядро системы абстрактно и де-факто изолировано от всего быдла энтерпрайзного, кроме того, что часть идёт в COM Component Object Model, но в целом ядро состоит исключительно из логики и различных манипуляций с данными, соответсвенно функциональщина тут в самый раз.
Допустим тимлида я наебал уговорил на осуществление мною перехода на F#, какие подводные о которых надо знать в 2к20 о переписывании с C# на F#?
>>1791575 F# не развивается так быстро как C#, и более ограничен. А самый большой камень это добавление 4го языка. Но понятно что тебе просто заняться нечем и похуй на судьбу проекта.
Ребятки я чет туплю. Смотрите, есть один протокол. Упрощенную версию я накидал тут https://ideone.com/miGWUf Вот. В нем есть классы объектов. У объектов есть атрибуты. У атрибутов есть значения и тип атрибута. Типы довольно примитивные: число, бинарная строка, строка, массив, структура, время. Вот. Я взял библиотеку которая этот протокол реализует. Ну и в ней значение атрибута хранится в виде строки. При этом сложные типы(массивы, структуры) хранятся в виде xml. Так вот, я хочу для своего решения сделать конвертацию к типам .net'а, и я реально что-то туплю как сделать конвертацию не зная какой тип я ожидаю. Хочется следующего: Добавить метод расширения для ProtocolObject в виде GetAttributeValue(this ProtocolObject @object, int index), и получать оттуда уже нормальное значение(время, массив или что-то еще), но как это сделать не совсем понимаю. Типа если я сделаю этот метод дженериком - я должен буду знать какой тип хочу получить, что неприкольно, если я буду возвращать object - опять же будет необходимо приводить это к .net типам из вне. А как тогда нормально-то сделать?
>>1791770 Возвращаешь объект в зависимости от аргумента. А там где его нужно использовать узнаешь его тип через GetType().Name и кастишь уже к нужному типу.
>17. Что еще нужно знать, чтобы взяли работать за еду? - SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper
Где лучше всего по быстрому изучить SQL? Какие-то может быть курсы от msft есть? Закончил магистратуру и нужно срочно искать работу прогером c#, а про эту шляпу впервые слышу.
>>1792843 Сестра прошла недельный курс на java и сразу устроилась за 60к. Образование у нее вообще гуманитарное. Сейчас 100к получает. А я семь лет в универе по технической специальности с многолетним опытом писания на c# пока ни дня не работал.
>>1792910 Нуууу, если про прям мейнстрим или всякие стартапы - не нужно. Но вот я работаю на заводе который делает умные девайсы и тут начали кору пихать в эти самые девайсы, и охуенно оно там живет, разработка упростилась в разы, тестирование и прочее тоже. В общем, есть те кому эта кроссаплатформенность оч сильно зашла, потому что конкуренты тоже пихают сейчас кору в свои девайсы. Вот.
>>1792910 Он подтянется в Unity, Godot, CryEngine. И его пропихивают через Azure, у которого сейчас дела сильно в гору идут. Amazon себя за хвост от зависти кусает. В винде дотнет будет по умолчанию, т.е. не надо будет никаких других веб серваков и языков устанавливать - бери и делай. Powershell (каждый второй сисадмин и многие девопсы его используют) теперь на дотнет коре работает.
Как сделать чтобы в дебаге выводило консоль, а в релизе нет?
В с++ это делается легко - в настройках дебага ставлю систему console. в релизе - windows
В С# такого не нашел. В свойствах проекта можно выбрать Console Application, но оно будет и для дебага и для релиза. А постоянно руками переводить уныло
Можно же через код?.. Через System.Console? а то ничего не нашел
>>1791503 >друг >на полставки в какой-то компании имеет 40к >готовиться выход .net 5.0 а потом ты проснулся и вспомнил, что все откомпилированно в MSIL и обращенно все в говно, рыбы, водоросли, медузы, все из говна, даже небо, даже Аллах!.
>>1794271 На любого программиста надо года два сидеть учиться и проектики делать, чтобы понять что к чему. Главное вообще понять что такое код. А дальше хоть шарп, хоть жава, хоть какая-то надстройка, типа фреймворка - всё будет легче даваться, потому что принцип везде один.
Спрошу еще раз, как сделать чтобы вот это черное окно консоли выводилось только в дебаге - при этом автоматически. В настройках проекта я не могу его включить только для дебага. А постоянно переключать надоело.
>>1794339 задрот GOT в треде, срочно прячьте своих дочерей
По сабжу - какие либы в MVC (Razor) можно прикрутить типо Material Ui или Ant? И да, зачем в 2к20 при дефолтном создании проекта комплектуется Bootstrap и jQuery? Это шутка от мелкософта?
Я создаю .NET Standard 2.0 библотеку к ней подключаю nuget пакет Например, Mailkit https://www.nuget.org/packages/MailKit/ Я собираю и не вижу библиотек Mailkit в папке с собранной библиотекой Нагуглил что если просписать в проекте <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
Первое убирает создание папки netstandard2.0 Второе таки копирует библиотеки которые попали из нюгета, но вместе с этим в папку попадает пачка системных библиотек В итоге получаю такую картину(пикрелейтед)
Почему так происходит? И нужны ли эти библиотеки если они и так вроде как в нет фреймворк входят который установлен на машине
>>1794495 >Bootstrap и jQuery Это старый темплейт, который кочует из версии в версию. Фронт должен быть отдельно (имеется ввиду static files - js + css). Html можно и через Razor Pages запилить. Material Ui и Ant - это фронт, соответственно бери свои js + css и пили как хочешь.
>>1794883 >Фронт должен быть отдельно Я не про WebApi, а про этот сраный болейрплейт от мелкософтов под одним копотом, ака MVC. Если все нужные мне либы закинуть в wwwroot эта каша скомпилируется потом? И как тогда проброс делать из контроллера, если это будет не Razor page?
У МС есть несколько темплейтов для создания веб проекта. Есть древние и один из них до сих пор используется для создания MVC проекта. Никто тебя не заставляет создавать своё приложение через этот темплейт. Можешь вообще все до единого файла в блокноте написать. Там кода строк 50 чтобы новый полностью рабочий веб проект запустить.
Visual Studio только делает вид, что твой бэк и фронт живут вместе. На самом деле они живут в своих собственных мирах на 100% изолированно друг от друга. Ты свои статичные файлы (js/css/img/font) браузеру миллионом разных способов отдавать можешь. И общаться c сервером можешь хоть через аякс, хоть через пост бэки, хоть через gRPC, хоть через SignalR (WebSocket). И привязывать на фронте можешь хоть Material Ui, хоть Ant.
Ты, скорее всего, ещё плохо понимаешь как веб приложение в принципе работает. Тогда тебе тем более вредно вшитые project templates использовать. Пытайся делать полностью пустые проекты и подключать элементы один за одним по мере необходимости.
Берёшь CDN ссылку на нужный js или css файл, закидываешь руками на нужную страницу (скорее всего *.cshtml). Потом выбираешь как хочешь данные между бэком и фронтом передавать. В твоём случае у тебя 2 пути: backend rendering via Razor или front-end rendering via Ajax. В случае с рендерингом на бэке тебе надо будет возвращать готовый хтмл из твоего контроллера через View("ViewName", someData). Для Ajax надо будет возвращать или просто текст или JSON.
Всё очень просто и прозрачно. К сожалению для "облегчения" вкатыльщиков MS решили накидать сложного бойлерплейта, чтобы было всё и сразу.
>>1793379 >>1794340 В режиме дебага внутри студии есть такое вот окно. Там будут все доступные real-time логи. Чтобы добавить деталей используй Trace или какой-нибудь логгер. Serilog имеет дефлотный sink для консоли и умеет красиво форматировать вывод.
>>1795011 >В твоём случае у тебя 2 пути: backend rendering via Razor или front-end rendering via Ajax. У меня уже есть опыт с WebApi + ReactJs. До этого хотел делать под одним капотом, но для рендеринга там какие то ChakraCore V8, еще какая то хуета нужна была. Короче плюнул и сделал полностью разделенный функционал, из за чего ловил батхерд с деплоем, т.к. реакт проект закинуть на фришный хостинг - нехуй делать, а вот с говном под названием ASP.NET Core - целая мантра (Azure не в счет). Так или иначе, backend rendering via Razor, как ты назвал - у меня есть представление, как делать - прокидывать модель или viewbag через контроллер в View и назад. А вот что насчет via Ajax? Как страница будет рендериться в этом случае? На реакт проекте, который хостится на ноде реактивно все рендерится, а тут что будет? Кинь ссылку на пример, нипанимаю
>>1795065 ChakraCore V8 вообще не про то, о чём ты думаешь. Тут уже обсуждалось как-то. TLDR - он тебе нафиг не нужен.
Лень примеры писать или искать. React/Angular/Vue как раз через Ajax с серваком и общаются. Кидают туда-сюда JSON объекты.
fetch("https://api.example.com/items") .then(res => / собирай свой объект и потом используй его в своём html для отрисовки /);
Это абсолютно то же самое что мы на jquery делали: $.ajax({ url: "https://api.example.com/items" }).done(res => / собирай свой объект и потом используй его в своём html для отрисовки /);
>а вот с говном под названием ASP.NET Core - целая мантра (Azure не в счет) Приколист. Если у тебя есть доступ к VM, то ставишь dotnet и запускаешь на нём своё приложение. В зависимости от соединения и удобства инструментов от 1 часа до 1 дня работы. Azure/GCP/AWS уже имеют настроенные веб серваки и предоставляют к ним доступ через App Service. Если есть возможность запускаться через Docker, то добавляешь Dockerfile в свой проект, билдишь образ и деплоишь. За пару часов можно разобраться. https://docs.docker.com/engine/examples/dotnetcore/
Если у тебя хостинг через какой-нибудь GoDaddy, то тут борода конечно - новых технологий давно не завозили.
>>1795094 получается я прокидываю ajax запросы на тот же домен, где и фронт и бэк, только по разным раутам? И я все еще не понял, что будет рендерить фронт, если будут статик файлы в виде библиотек JS-a? Я уже выпилил все из папки wwwroot, через Razor pages я уже пилил когда то, сейчас хочу попробовать все под один капот засунуть, только картина до сих пор не ясна
>>1795143 >картина до сих пор не ясна Она сейчас и не будет ясна с такими то знаниями. Задрачивай это с пол годика каждый день и всё придёт. Только надо при этом официальные доки читать. Тут прикол не в дотнете или реакте или каком-либо другом языке/фреймворке. Тут прикол в том, что у тебя базовые знания о том как веб в принципе работает отсутствуют. Когда всё на свои места встанет, сможешь и на жаве и на питоне и на чём угодно, что умеет обрабатывать запросы от веб сервака, один и тот же сайт запилить.
>Razor pages пилил когда то Razor Pages - это новый фреймворк. Не путый со стандартным Razor script, которому уже больше 10 лет. Так что если ты на нём и пилил, то совсем недавно.
Анон, когда тред перекатите, у меня вопрос. Он скорее по кодестайлу и архитектуре.
Вот разрабатываю программу, в которой будет дохрена всяких окон и у них в свою очередь будет дохрена подокон (окон которые из них вызываются). Сначала начал от балды в одно пространство создавать - сразу же запутался где какое окно кому принадлежит - надо поправить шрифт или надпись, а хрен вспомнишь где код именно этого окна.
Попытался организовать как на пикче. Все равно сложно искать
Наверняка же есть методология как правильно все это организовать и разложить по простраству имен и папочкам.
>>1795155 > с такими то знаниями >Задрачивай это с пол годика >надо при этом официальные доки читать >знания о том как веб в принципе работает Зачем ты проецируешь свой опыт? В чем конкретно мои знания тебя так огорчили, что я не знаю, как обрабатываются статик файлы в контроллере и обратно? Я уже писал - есть не плохой опыт на WebApi - там все ясно, как божий день - прокидываешь http/s запросы по REST и все заебись. Тут же - хуй пойми что и как
>>1795236 >Наверняка же есть методология как правильно все это организовать и разложить по простраству имен и папочкам. Да, называется MVVM. Создаешь папки Models, Views, ViewModels. В папке Models размещаешь все сущности с которыми будешь работать, в папке Views все xaml и xaml.cs файл, т. е. окна, в папке ViewModels все классы которые будут добавляться к Views в xaml.cs и скоторыми ты будешь работать через xaml окон.
>>1795297 Я не он, но вот интересно. Как у тебя выглядят ViewModel и Model Потому что у меня ViewModel зачастую получаются банальными обвертками вкоруг Model. Чего добавляется это только ньюансы с непосредственным выводом на экран, валидация и нотификации интерфейса об изменениях в полях. И получается все вызовы к методам модели тоже просто оборачиваются методами вьюмодели. Из-за этого код разбухает на ровном месте.
>>1795305 Ну да. Велком ту разрабьётка. А есть еще и DTO, которые еще одна практически копия вью модели. И того на одну сущность три почти одинаковых класса. А вьюмодели необходимы, когда у тебя есть связанные данные, которые в json'e будут циклироваться. Типа у тебя класс Bomj содержит класс Bomjiha, которая содержит класс Bomj, который...
>>1795305 В ViewModel у меня набор команд и моделей которые я использую в относящемся к нему View, т. е. это объединение View и Model. Нотификация достигается за счет реализации интерфейса INotifyPropertyChanged у классов в Model, валидация происходит в методе CanExecute команд.
>>1795297 >Да, называется MVVM нет. Это вообще не то.
Ну будет у меня 100500 xaml в папке View - как это мне поможет находить среди них нужное?. Как это мне поможет понять что вот это окно связано вон с тем окном?
>>1795320 "Вот это вот с тем" у тебя уже есть на пикриле из твоего поста, создаешь Views, в ней папки с видами, в них папки с подвидами. Чего ты ожидал, волшебной пилюли которая за тебя всё сортировать будет? Для того чтобы не бегать по коду каждого окна и изменять в нём шрифт, существуют наборы стилей, если у тебя нет общего стиля и в каждом окне свои тип шрифта, размера, жирности и т. д. то на каждый View можешь создавать еще и набор стилей, подключил один раз в xaml, а изменения вносишь уже непосредственно в сам файл со стилями.
>Для того чтобы не бегать по коду каждого окна и изменять в нём шрифт, существуют наборы стилей Опять не то. Смотри. Я запускаю свою программу, тестирую - и где-то ебенях интерфейса через 100500 прошедших окон я вижу косяк - например мне не нравится текст надписи, или возможно размер элемента не вмещает всю строку считаную из бд или еще чего..
Теперь мне надо найти xaml этого окна в папке VIew, где находятся еще 10500 других окон. И в итоге я начинаю каждое открывать, смотреть, пытаться вспомнить - это окно или не это.
То есть весь вопрос - как организовать удобную иерархию папок чтобы сразу находить xaml нужного окна
здарова, аноны короче такая тема: есть json файл, который содержит название поля класса - его значение Есть ли какие-то готовые решения, чтобы я мог инициализировать класс из этого жисона? Свои велосипеды написать не сложно, но хочется что-то типа Class class = JsonUtility.Deikpukserk(json) спасибо
У меня есть окно которое выполняет функцию n, я вижу что-то, что я хотел бы в нём изменить, в поиске по решению я вбиваю окновыполняющеефункциюn и нахожу его. Твой пример можно понять только если у тебя названия окон не отражают их предназначения. И каким хуем у тебя 100500 окон в проекте? Может ты при изменении названия кнопки создаешь отдельное окно, вместо того чтобы изменить название кнопки в уже существующем?
Аноны, как в visual studio билдить unsafe проект? Мне выдает ошибку что unsafe code may only appear if compiling with /unsafe Я делаю билд просто щелкая правой кнопкой по проекту и дальше build solution.
>>1795482 Анон, распиши как ты это открыл. Может мы про разные вещи говорим. Я делаю следующее: щелкаю в Solution Explorer по myProject и дальше выбираю Properties.
>>1795274 Потому что у тебя вопросы как у наших джунов. И они точно также агрятся, когда им указываешь на отсутствие каких-то знаний. И я такой же лет 12 назад был. У сеньора (даже если он с дотнетом только вчера познакомился) таких проблем обычно не возникает.
>>1795743 Я зашарил опыт, дальше у тебя пошли какие-то странные вопросы. >что будет рендерить фронт, если будут статик файлы в виде библиотек JS-a? JS будет рендерить. Притащит данные через аякс и через какой-нибудь MVVM (knockout, react, vue) забиндит модель с данными с заранее написанным темплейтом. Либо ручками нагенерит html элементы.
>>1795320 У нас значение по умолчанию для переменной-ссылки - null, поэтому нужно писать var someClass = new someClass(); >указатель на тип класса Для того чтобы указывать на тип нужно чтобы этот тип был с модификатором static.
С каких пор в шарпе стали именовать приватные методы с маленькой буквы? Никогда такого не было. Недавно решарпер стал подсказывать, а сейчас Смотрю чужую репу на гитхабе – там то же самое в проекте от 2013 года! Нет, блядь, нет, я точно помню, что методы всегда с большой буквы писались
>>1795923 Похоже, приснилось мне это все. А ведь как вживую помню - открываю репу, там методы с маленькой буквы. Скроллю вверх, а там подписано, что последний коммит в 2013 году был. Еще решарпер этот. Охуеть. Не ложитесь поздно спать, пацаны
Почему то выходит ошибка An object reference is required for the nonstatic field, method, or property. Есть файл Program.cs с классом Program. В нём есть static void Main и private void getInformation(). getInformation вызывается в Main и он же дает ошибку. Как это пофиксить?
>>1796513 Main.GetInformation() Вот что ты пытаешься сделать, грубо говоря. Нельзя использовать нестатические штуки из статических, потому что статику можно юзать всегда, она тупо есть. А нестатику – сперва надо создать что-то у созданного объекта уже вызывать var x = new Main(); x.GetInformation():
Ты, кстати, хули с маленькой буквы названия метода написал?
>>1796574 System.Text.Json - уже вшит в базовый фреймворк; - судя по бенчмаркам работает быстрее на хайлоаде с большими json объектами; - кастомизировать сложнее.
Newtonsoft.Json - надо nuget пакет тащить; - древний и откалиброванный под мелкие задачи; - куча классов хелперов, из-за которых твой код выглядит симпатичнее.
Для новых проектов на новом донете лучше системный использовать - его постоянно пилят и улучшают и он по умолчанию поддерживается в aspnetcore. Newtonsoft надо будет руками прописывать в сетапе.
>>1795338 >у тебя названия окон не отражают их предназначения. this. Даже не знаю как именовать, чтобы потом находило.
>>1795338 >И каким хуем у тебя 100500 окон в проекте? Прога будет большой, много всяких настроек, отчетов, просмотров. А тулить все в одно окно - слишком сложная структура, либо придется отказаться от визуального редактора