Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.Литература вторым постом1. Ресурсы:- http://stackoverflow.com/questions/tagged/c%23- http://www.tutorialspoint.com/csharp/- http://professorweb.ru- http://net-informations.com- http://habrahabr.ru/hub/csharp/2. Онлайн-компиляторы:- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.- http://ideone.com/- http://csharppad.com/- http://www.tutorialspoint.com/compile_csharp_online.php- http://rextester.com/l/csharp_online_compiler3. WinForms или WPF?Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.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 будет лучшим вариантом.6. С# для мобильной разработкиЕсли нужны инструменты для разработке под мобилы, ставь сразу VS2015 и при установке выбирай все нужные компоненты.Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspxИз актуальной литературы- Xamarin Mobile Application Development- Xamarin Essentials7. Дополнительные инструменты для разработки на C#LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данныхdnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студииdotPeek - бесплатный декомпилятор от JetBrainsscriptcs - для запуска C# кода как скриптов, возможность использовать как REPL8. Расширения для студииReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентовSupercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по нимIndent Guides - показывает вертикальные линии на каждом уровне отступов.Format document on Save - форматирует код каждый раз при сохранении документаCode alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечисленияхОбзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20OverviewНовые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕКод этой шапки: https://pastebin.com/YJFQKsNmПрошлый тред тонет здесь: >>1515204 (OP) (OP)
>>1528262 (OP)9. Что почитать?- The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода.- C# 6.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином- C# 6.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой- C# 6.0 and the .NET 4.6 Framework (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.- C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.10. Более хардкорный материал- C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.- Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.- CLR via C# (Jeffrey Richter) - это классика, это знать надо.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 и анализ дампов памяти в windbg15. Литература не по шарпу, но так или иначе связанная с языкомC# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под UnityIntroduction 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), SOLID18. Я не умею читать, что посмотреть?- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO- Коллекция видеоуроков, по всему дотнетовскому и смежным темам (250 часов, на русском) - https://nnm-club.me/forum/viewtopic.php?t=891636- Набор курсов по C# от O'Reilly Media (28 часов, на английском) - http://rutracker.org/forum/viewtopic.php?t=5082978
Аноны сейчас осиливаю С# по учебнику "Полное руководство C# 4.0".Идет тяжеловато и со скрипом, но дальше хуже. Что мне стоит изучать после киньте пожалуйста литературы и советы если есть какие полезные кроме ВЫЕБЫВАТЬ И УЧИТЬ
Вот так первые 4 открыл.Подскажите на что из этого лучше нацелится я так понимаю мыслить надо адекватно и смотреть на пик 1 джун, но что-то там ключевых наваков дохуя, а платят нихуя во-о-о-т. Еще и опыт JavaScript это что подъеб такой? Я в C# хочу вкатиться чтоб JavaScript поучить?Вообще посоветуйте на какой из пиков лучше нацелиться и еще раз хорошей литературы по теме. Да я тупой
>>1529138Что за вакансии на рузком языке, лул? Это аборигены, которые ищут дурачков без знания ангельского на легаси? Улыбнуло "есть рядом столовая". Что за чуханские вакансии? 4 пика это mid+, туда даже не смотри. 1 - это за хлеб работа, ищут пиздюков.По сабжу - что прет делать, то и учи. Сейчас веб - это 90% вакансий. А там решай сам.
>>1529148У меня в городе всего 16 ваканский C# из них лишь одна на ангельском и там надо столько, что я охуелЗа то 50+ на 1С не то я учу ой не то.У меня уже ручки трясуться и я готов все бросить не поеду же я в ДС за работой ладно пока буду продолжать учить может нормальные вакансии появятся
>>1529189я всегда удивляюсь логике вкатывальщикам на двоще. Если ты кодишь, чтобы работать, так бери стек, который больше всего востребован. Если ты кодишь по кайфу, то берешь самый привлекательный (лично для тебя) язык по синтаксису и возможностям.Тоже самое и за релокейт. Готов - смотришь вакансии в городах, куда можешь поехать. Не готов - свой регион.
>>1529194Но я слышал, что 1C это пиздец помойка для умственно отсталых, что-то вроде ассенизаторов в мире программистов и даже программистом называться права не имеешь ты червь пидор который ковыряется палкой в говне без возможности роста всю жизнь вынужденный тыкать в одно и тоже говно палкой
>>1529213Вот тебе реальность из взрослого мира.Знакомый челик кодит в 1с для нефтянки. В провинции. Выплатил ипотеку за двушку в хорошем районе, семья, дети, на отдых ездит регулярно. Не перерабатывает, не парится, после работы фреймворки не учит. Как ты думаешь, похоже на помойку?
>>15292131С это пиздец, а сисярп это язык больших корпораций и легаси десктопного говна, в твоей мухосрани нужны небось натягиватели верстки на вордпресс и фронтэндеры, бэкенд-языки вряд ли в принципе твой выбор, так как вакансий в самом деле будет 3 штуки на каждый из 10 бэкенд языков, зато во фронте один жс и фронт в принципе востребован. И бэкендеры тоже должны жс знать, правда хуже.
>>1529222Понятно говна я поел только время зря потерял. КАКОЙ ЖЕ Я ДОЛБОЕБ А-А-А СУКА Я и так не сильно умный, но так проебаться боже мой. >>1529220Я уже закрыл учебник у меня еще год полтора пойду в 1С знаю сложный он и что кого.
>>1529213>1C это пиздец помойкатак и есть. Все на рузком языке (тем, кто не осилил ангельский самое оно)ООП? с 8.3 какую то пародию делали, но это не точно (только со слов 1Сника слышал)>даже программистом называться права не имеешь ты червь пидор который ковыряется палкой в говне без возможности роста всю жизнь вынужденный тыкать в одно и тоже говно палкойУже вижу тебя на лесаси шарпов с .NET 2.0 где то, где просто ад. На собесе будут спрашивать то, что на твоем древнем, как говно мамонта проекте, в момент разработки еще не придумали. А переписывать - можно просто повеситься.Да кстати, разрушу миф вкатывальщиков, что с 0 проекты мало кто пишет, восновном сапортят/фиксят. И если в вакансии пишут - продуктовая, необходимо знание жизненного цикла продукта с 0 - посадят на проект, который галера сапортит уже N лет и будешь ковырять, как ты говоришь, не то что говно, а такой пиздец, что в страшном сне не придумать.
>>1529213>1C это пиздец помойка для умственно отсталыхзато работу на нем можешь найти в любом мухосранске. Практически все российские компании завязаны на 1С.
Почему если я пишу:{var foo = Task(bar);foo.Start();}оно выполняется вроде как асинхронноА если пишу:{var foo = bar;foo.Start();}async Tasl bar(){}Оно работает синхронно?
>>1529369async не делает метод асинхронным, это знают взрослые и детии это написало в любой книге/статье, ебаный рот, когда вы начнете читать
>>1529528Я это знаю, но почем, блин, первый вариант с той же функцией просто засунутой внутрь таска делает?
>>1529722Ну так а почему тогда второй пример не выполняется асинхронно? Да, там я опечатался, но можно догадаться что async Task bar() должно быть.
Может ли один юнит тест быть подвязан к другому? На сколько я знаю, каждый юнит тест должен отделять конкретный метод от всей системы. Но как протестировать, например метод Update? Сравнить массив до Update и после?
>>1525310твой пост не оставляет покоя в голове. Реализовую DbContext с 15+ сущностей DbSet, в каждом из которых пишу методы CRUD-a. Причины:1. Не могу брать базовый функционал от DbSet - т.к. нет проверки на null, если введут хуйню;2. Все CRUD методы DbSet идут без SaveChanges. Так что хоть так, хоть так нужно будет переписывать методы.
>>1529714>Я это знаюОчевидно нет. Тебя там даже компилятор должен варнинг кидать,что без авейта не будет асинхронности. А еще скидывай валидный код, потому что не понятно в чем у тебя там загвоздка ибо та хуйня даже не заработает ибо нельзя стартануть (.Start()) задачу, возвращаемую из асинхронного метода.
Блядь, я наверное совсем тупой, но вот попытка номер ТРИ!https://ideone.com/EmOlmjhttps://ideone.com/XETOkjhttps://ideone.com/OOtswdСуть, я вроде как проверил и оно даже вроде как работает, пока клиентов мало. Но вот я сделал 500 клиентов которые ломятся в мой сервер и в определенный момент ошибка что компуктер отклонил подключение, сессии, вроде как, отключаются, но новые подключатся не хотят и приходится перезапускать.
>>1531025А как на него отдельные файлики а не весь проект заливать? Не хочу чтобы все видели мои попытки реализовать HTTP-парсер
>>1531047Ну ладно, я вроде как разобрался как сделать чтобы не целеком проект кидать.https://github.com/BakaVaka/MySuperTcpServer/tree/master/src
АНОНЫ, помогите! тут такая фигня, мне нужно получить инпут в формате datetime но я не могу найти нигде как-то сделать?
>>1531442может нахуй сходишь, с такими вопросами? То блять со строками играют, то инпут даты нужен, что за кретины тут сидят? Где аноны, обсуждающие тонкости работы CLR и архитектурных принципов?давай, помогай таким. А потом сиди и скроль ленту с даунскими вопросами
Что-то я жёстко туплю. Вот у меня есть некий лист items. И мне нужны его properties. Тогда я делаю PropertyInfo [ ] Props = items.First().GetType().GetProperties()И я получаю ВСЕ свойства этого листа, но как мне получить не все, а только определенные?
Короче, никто таки не знает как >>1531063>>1530995 нужно сделать нормально? Тогда единственный оставшийся мне выход - делать на асинхронных сокетах, как мелкософт показывает. Эх.
Как повышать свой скилл, если на работе мне в основном приходится обмазываться wpf? Просто я боюсь, что в случае чего мне просто некуда будет податься с этим говном.
>>1531736>Не можешь в базовый протокол>Даже с помощью супер высокоуровневых перделок для домохозяекПервокурсники совсем дегроднули
>>1531818В какой еще базовый протокол? У меня свой с свистелками-перделками и несколькими уровнями, включая криптографический(я или в вашей ветке, или в нуботреде описывал его). Да и я таки смог, действую по примеру https://docs.microsoft.com/en-us/dotnet/framework/network-programming/asynchronous-server-socket-example просто я не понимаю, что изначально делал не так. Вроде же все нормально и оно даже работает, но потом решаешь "стресс-тест" устроить запустив 10к клиентов, и оно сначала вообще ломалось, потом я таки догадался и запихнул один кусок в try-catch и оно не ломалось, но после подключения кучи клиентов очень долго думало и один некоторые клиенты отваливались не дождавшись ответа, а потом я решил из браузера покидать пакеты и почему-то мой сервер после 3 подключений именно из браузера 90% мощностей процессора съедал и 20 гигов оперативки куда-то улетало, я хуй знает с чем это связано и просто переписал на по примеру(ну не совсем по нему, сессии-хуессии и все остальное таки перенес, а то как-то не представляю как их методом можно организовать нормальную работу и разные протоколы) и внезапно оперативу даже с кучей клиентов даже 100мб не жрет, процессор загружен всего на 1%, опять же, хуй знает чому так. Вот мне и интересно же, чому так, может анон умный и знает где я в первой реализации обосрался.
>>1531829>догадался и запихнул один кусок в try-catch и оно не ломалосьНу это вообще пушка. Ошибки не так исправляют, так ты просто проглотил исключение.>>1531829> 90% мощностей процессора съедал и 20 гигов А чего ты ждал, один метод Purge может все ресурсы выкачать.
>>1531829>Не может в хеллоу ворлд на сокетах>Высерает пласт текста на 2 абзацаОчень интересно, сейчас всё прочитаю
>>1531837А зачем что-то читать, когда можно писать? Деды-то ничего не читали, а сразу писали, а потом для бак записывали что написали в книжки. Чем я хуже дедов-то?>>1531840> Ошибки не так исправляют, так ты просто проглотил исключение.Так падало-то из-за отключения клиентов, как по другому-то делать? Ну, т.е. я же не знаю при обращении подключен ли этот хуй все еще или нет. А если каждый раз пинговать, чтобы проверить, по моему протоколу клиент посылает ответ что не знает что это такое ему пришло, вот я его получу и буду считать что он еще подключен, а он именно в этот момент отключится и я попробую считать и все опять упадет. Мне кажется что try-catch в данном случае очень даже неплохое решение.> А чего ты ждал, один метод Purge может все ресурсы выкачать. Ну, это я вроде понимал и потому каждый Purge после очистки тред усыплял же. Да и как я понимаю, если все потоки заняты, то таск с Purge хрен когда выполнится. Судя по отладке все съедал метод чтения у сессии, но я как не ебался так и не понял как его правильно сделать и, как уже сказал, все переписал на пример майкрософта и вроде как пока нормально работает.
>>1531853>Чем я хужеДеды-то с ассемблера начинали и могли в голове регистрами процессора жонглировать. А ты не можешь из готовых блоков на высокоуровневом языке своять простейшую прогу, пытаешься запихнуть круглую фигурку в треугольное отверстие. Так что иди и впитывай мудрость дедов, любезно оставленную ими в книгах.>>1531853>падало-то из-за отключения клиентовНу ок, вообще исключения надо обрабатывать, если это сделано грамотно , то без вопросов.>Ну, это я вроде понималНавряд ли. С использование тасков у тебя беда и 0 в понимании асинхронности. И выкинь финализатор ты им показываешь отсутствие знаний и напрягаешь лишний раз GC.>не покажешь как надо? Дай нормальное описание того, что тебе надо и я накидаю тебе на выходных пример.
>>1531865> 0 в понимании асинхронностиЯ знаю...> Дай нормальное описание того, что тебе надо и я накидаю тебе на выходных пример.Мне надо чатик с комнатками(т.е. не всем клиентам рассылается то что отправил кто-то а только тем кто в комнатке с этим клиентом, при этом может быть и общий чатик) и возможностью клиентов друг с другом общаться без лишних ушей, по кастомному бинарному протоколу с разными типами клиентов(кто-то админ и может забанить матершиника, кто-то просто может цветной текст делать, кто-то картинки отправлять, кто-то в муте и может только читать что в комнате), при этом чтобы сессия не завершалась если пользователь отвалился, а жила какое-то время на случай если человек переподключится и его клиент пришлет пакетик с нужной инфой.Да и я бы таки все же не примеров кода хотел(потому что то что я накатал сейчас, как мне кажется, за 10-20 минут не напишешь), а действительно книжек, но сколько я не просил что тут что в нуботреде, никто ничего годного не посоветовал, а то что советовали это очередное Один клиент-один сервер, почитай до <EOF> , отправь аперкейсом и закрой сессию.
Поясните такую вещь, вот у меня есть класс и в нем поле, я хочу сделать его приватным, но при этом я хочу чтобы некоторые объекты, не являющиеся наследниками, таки могли его изменять. Как это реализовать не выпячивая наружу всем метод для изменения этого поля?
>>1532245вообще странное требование, стоит подумать как сделать без этого гемороя.конкретно по твоей ситуации мне видится вариант использования 2 интерфейсов, которые твой класс реализует 1 - публичный без метода, 2 - для некоторых наследников с методом
>>1532364По критерию: Мне кажется что удобно было бы этим объектом иметь доступ к данным полям, но при этом другим объектам даже этого класса низя и а уж объектам другого класса - тем более.
>>1532627И как он поможет мне? Вот я сделал поле private, как мне теперь без рефлексии сделать так, чтобы объект класса B мог изменить поле класса A?>>1532641Нормальный же. Скажем, вот у меня есть класс Enemy, и я не хочу создавать новый класс, который просто будет отличаться тем что имеет интерфейс какой-то, но хочу чтобы некоторые Enemy, например красного цвета, понижали скорость передвижения объекта класса Hero, при этом я не хочу вводить новый класс Effect, которые будут такой вот затычкой для этого всего. Хочу просто чтобы крассные Enemy имели возможность понижать скорость Hero и всё.
>>1528262 (OP)Может шапку пора уже обновить? Какой VS 2015, какой C# 6.0? А уж про совет почитать Professional ASP.NET MVC 5 я вообще молчу, есть намного свежее издания, вы совсем говно мамонта советуете. Не все новички могут додуматься найти более свежие версии книг, пожалейте этих людей, обновите шапку!
>>1533528>Какой VS 2015, какой C# 6.0Ты че несешь? До сих пор миллионы проектов собираются в восьмой студи и/или под старые версии языка. Пятнадцатая до сих пор не может в стабильную работу, не говоря о новейших релизах. Хуяк-хуяк продакшн зумеры не нужны.
>>1533515Ну ты можешь, например, накладывать баффы/дебаффы на юнита (этим должен заниматься какой-нибудь менеждер, а не сами юниты) в зависимости от условий. А уже юнит считает свою скорость учитывая их. Можно еще посмотреть на паттерн visitor. А лучше поискать популярные решения в гейдеве, ты не первый, кто пишет игру, наверняка есть бест практисес.
Шарпаны, а еще такой вопрос, как лучше реализовывать свой бинарный протокол с несколькими уровнями? Я просто погуглил-погуглил и что-то не нашел примеров на шарпе, кроме плоских протоколов вида: [t,[payload]delim], где t- тип пакета, payload данные и delim - байтик конца пакета. Это как-то тривиально и я так не хочу, я хочу так: [0xff,[t[payload]userID,hash[salt],],0xff], при этом все что между ноликами зашифровано моим супер алгоритмом(с помощью xor'а), чтобы злыдни не прознали что на сервер приходит. Ну так вот, а как собственно сервер должен понимать, что с пакетом делать, если ключ для каждого клиента свой? Я вот что имею ввиду, вот смотрите, я получил пакет, благодаря 0xff я предполагаю, что это, вроде как, не мусор, но ведь я из-за того что userID зашифрован не могу просто так полезть в БД и посмотреть там его ключик, чтобы расшифровать пакет и понять что с ним делать дальше. А если вынести userID наружу, то получится что какой-нибудь злой злыдень будет знать id пользователя и, как минимум, поймет что вот тот человек что-то там писал в этот мой супер чатик, а я не хотел бы чтобы кто-то знал что за клиент в мой чатик писал.
>>1534100Я поставил статик лист, ошибка вроде пропала, но жопой чую что это неправильно. Как решить правильно?
>>1533835злыдень-шизоид, сейчас бы на интерпрайз языке писать протоколы, эх блять, где же мои кресты...>>1534083не нравиться, что ты читать не умеешь. Тебе компилятор все написал.
Почему нельзя сравнить типы данных? Мне надо проверить, есть ли хороший корень у числа, если число после нахождения корня - целое, значит у числа хороший корень. Но здесь какие-то странные ошибки выдаются
>>1534785Блин, я видимо с JS попутал, тут typeof чё-то другое. Ну а как тогда с этой же логикой можно сравнить типы данных?
>>1534785>не надо проверить, есть ли хороший корень у числа, если число после нахождения корня - целое, значит у числа хороший кореньСколько тебе лет? Ты в курсе, что есть как минимум два нормальных способа проверить целое ли число? Нахуя ты микроскопом забиваешь гвозди?
>>1534811Я уже понял как сделать грамотнее, сейчас в принципе интересует, есть ли как в js такое сравнение типов? Есть is as, но это только с ссылочными типами работает
Короче, можно ли как-то вашу интерпрайз парашу превратить в няшный? Просто кресты отвратительны, ваша параша поприятнее во многих моментах, но блядское ООП всюду, еще и это говно со сборкой мусора, IL, необходимостью тащить всякое говно чтобы просто консольное приложение запустилось и т.д. Поясню что я хочу:using System;bool IsOpHui => true;void main(){Console.WriteLine("Hello world");}И при сборке чтобы у меня был один исполняемый файл вменяемого размера, если я сам не захочу кучу dll и прочих ресурсов отдельно иметь.Вот как добиться подобного эффекта?
>>1535001Так мне и нужно для крупных приложений, только без такой жесткой привязки к ООП. Шарп во всем остальном меня устраивает, кроме того что для того чтобы 1 блядскую функцию захуячить нужно создавать отдельный класс, а если будешь в том же классе хуячить на тебя будут смотреть как на дебила, ведь ООП же, нужно для всего свой класс сделать, иначе не тру, и вообще логику отдельно представление отдельно, модель отдельно, и похуй что ты просто дублируешь данные и из-за этого у тебя просто какое-то говно вместо решения задачи, MVVM и MVC же, как ты можешь не запилить отдельный класс экшенов, а данные не забиндить, вместо того чтобы просто менять их по своему желанию в кнопочке, умные же дяди говорят что так надо делать, и плевать что это неудобно, делай как сказали и не выебывайся.
>>1535097Ну блин((( Шарпик таки очень удобный во всем что не касается ООП. А го я посмотрел и это какой-то джаваскрипт. Видимо придется с крестами ебаться.
>>1535100Я распиздяй, который уже получил вышку, постажировался, поработал кодером и понял что именно работать кодером - не мое(я не могу без творческой свободы что-то делать, не могу когда есть дедлайны, не могу в команде работать), но писать что-то свое все равно хочется.
>>1535115Не кодинг совсем, а именно работа кодером. Скажем, олимпиадки в вузе мне нравились, нравится свои штуки делать, нравится на кодворсах всякое решать. А вот работать, ну такое.
>>1535103> удобный во всем что не касается ООПА что в шарпе не ООП? inb4 linq>>1535103>c крестами ебаться. Так они тоже ООП. Хочется функциональщины иди в F#/Haskell или чистый C.
>>1535371> Так они тоже ООПЯ знаю. Но на нем можно и так и этак, а ООП применять там где оно нужно, а не везде под дулом компилятора, который просто на соберет твой проект, если ты все в классы не запихнул. Вот опять же, посмотри как в питоне: есть ооп, но ты сам решаешь, юзать его или нет, то же и в JS, лично мне такой подход больше нравится, на мой взгляд класс состоящий из одной-двух функций не нужен, а запихнуть их в другой класс не получается чисто из соображений семантики класса.> А что в шарпе не ООПСтруктуры, например. Да много вообще всяких фишек которые именно к ООП не привязаны. Опять же, мне просто не нравится что нужно для всего делать класс(а класс, в моем понимании должен быть чем-то семантически оформленным, и именно что объединяющим класс задач которые решает объект класса, например чтение строк, запись в файл, взаимодействие с сетью и т.д.), при этом еще и в неймспейс запихнуть. На кой? Вот почему просто нельзя ебануть функцию внутри неймспейса и жить себе счастливым, нет тебе для этого нужно сделать класс и получается что у тебя в коде появляются статические классы, со статическими функциями которые по сути выполняют роль неймспейсов и являются дурным тоном для всех ООПшников.
>>1535555Ты или шизик какой-то или вообще не понимаешь как шарп работает. Ну хуле, не нравится так ебашь все в Main()
Есть вопрос - как в шарпе можно наиболее удобно организовать глобальные переменные? А то как ни пытаюсь сделать, постоянно очущение, что делаю через жопу и можно проще. (Если что, я пишу на C в основном, шарпом приходится пользоваться в силу обстоятельств)Всех кукаретиков с ответами вида "не делай глобальные переменные", "у тебя неправильная архитектура", "глобальные переменные эта плоха, эта низзя" прошу заранее пройти нахуй.
>>1536048Если именно переменные, то public static MyVars{public static int a;public static int b;...}Это кстати еще одна хуйня из-за которой я бомблю с шарпа. Но меня уже назвали шизиком, потому не буду высираться, но просто, блядь, действительно был бы годный язык, если бы ООП было одной из, а не основной парадигмой. Столько удобных фитч из коробки, синтаксис не так перегружен как у крестов, огромная библиотека на все случаи жизни, если бы ООП сделали необязательным, цены бы не было.
>>1536499У тебя на группировку по смыслу аллергия? Тебе нужно обязательно чтобы стопицот хуиток общей кучей на нулевом уровне без разбора лежали?
>>1536673У меня аллергия на необходимость плодить сущности без необходимости. Зачем мне делать отдельный класс, если он не будет переиспользоваться и вообще не особо несет в себе смысла, кроме как выполнить 2,5 функции. Так бы я просто ебанул эти 2,5 функции и все, когда нужно вызвал, когда не нужно не думаешь о них.>>1536851> фшарпНе советовали. Мне только про Го говорили. Посмотрю этот твой эфшарп.
Есть проблемы с виузалкой, заместо русских символов выводятся вопросы, как это можно пофиксить? Нашёл эту статью, но где скачать на сайте майкрософт apploc.msi не нашёлhttps://support.microsoft.com/ru-ru/help/907291/question-marks-unexpectedly-appear-instead-of-localized-characters-wheСпасибо
>>1536936Зачем ты меня обзываешь? Ну не заметил или забыл уже из-за того что большую часть времени не советовали что-то а доказывали что ООП нужно.
>>1536906>Зачем мне делать отдельный класс, если он не будет переиспользоваться и вообще не особо несет в себе смысла, кроме как выполнить 2,5 функцииНу так, блядь, не делайУ тебя походу вообще 0 понимания проектирования и ООП, зато своим охуительным мнением который день в тред срешь.
Я сениор-хуениор С++ разработчик, хочу выучить шарп полноценным вторым языком, т.к. некоторые вещи в дотнете сделаны в гигатонны раз проще, чем дергать их через Winapi. Есть что-то в мире типа книг "C# для умеющих программировать"?
>>1536939> Ну так, блядь, не делайИ что прикажешь, прямо в классе какого-нибудь юнита каждому объекту явно указывать где лежат ресурсы с ним? Это же как раз не по ООПшному. При этом делать отдельный класс, который будет вызывать только 1 функцию: загрузи ресурсы из этого файла, это пиздец как тупо.> 0 понимания проектирования и ООПНу, моего понимания ООП достаточно, чтобы считать его в большинстве ситуаций перегруженым говном, а его адептов - каргокультистами, которым ООП нужно ради самого ООП. Ну а проектирование это вообще отдельная тема, я, в отличии от тебя, смотрел исходники того же net core и могу с уверенностью сказать, что все это же на каком-нибудь питоне можно было бы написать элегантнее.
>>1536946Так шёл бы в какой-нибудь тред без ООП: раст, хаскель, тред любого фп языка. Что ты здесь забыл?
>>1536945>Есть что-то в мире типа книг "C# для умеющих программировать"?зачем? если ты умеешь программировать, то просто берёшь и начинаешь писать решение своей задачи на шарпе. гуглишь лучшие инструменты для этого на шарпе. всё. если ты до этого хорошо на крестах писал, то на решетке будешь так же хорошо писать, просто беспокоиться нужно о меньшем количестве вещей.
>>1536964я сейчас так и делаю, но это достаточно ублюдочно получается без базы о всяких там IDIsposable, GC и прочей object model
>>1536984если ты в своих задачах зачем то обращаешься к GC, то не лучше бы тебе эту задачу на крестах это делать и в шарпе дёргать через pinvoke?
>>1537006Н-н-н-о я же просто школьник.>>1536959Мне нравится шарп во множестве аспектов, кроме ООП. Не думаю что я один такой на весь сосач. Вот и хотел узнать, может кто знает альтернативу близкую к шарпу, но при этом без ООП. Видимо такой нет, к сожалению.
>>1537010>Люблю хуярить собак палкой, но мне нравится, что они визжат, а ещё не нравится палкой махать — рука устаёт.>Я вот думаю, может есть что-то похожее, но без визжания и махания?Перекатывайся уже в хаскель, если хочешь ФП с GC, или в ржавчину, если хочешь отсутствие и ООП и GC.
>>1537037зачем тебе в базовых вещах к GC обращаться? с IDisposable тоже всё просто. оператор using автоматически за тебя его вызовет по выходу из скоупа. зачем тебе целые книги об этом читать? но ладно, так беседа может в срач скатиться. я просто никогда не видел практической пользы от книг. всего ты всё равно не запомнишь, а нужную информацию непосредственно при необходимости всегда можно поднять на stackoverflow, благо коммьюнити у шарпа на объяснения не скупится.
>>1537030ООП — порождение макакинга и ебанутости людей: "Одноклеточное -> простейшее многоклеточное -> земноводное -> макака -> человек". В итоге у человека есть аппендикс, копчик, иногда другие генетические проблемы. Код ДНК вырожденный — триплеты онли; никаких utf-4 кодировок, где часть можно закодить одной парой или двумя парами, онли триплеты, как я уже сказал. Программы с ООП страдают теми же проблемами.
>>1537044что? даже если проводить такую параллель, то тут проблема не самого ООП, а его неграмотного использования. если бы аппениксы и копчики были вынесены в интерфейсы, то проблем бы не было, если бы человек их не наследовал. Хотя тут конечно можно доебаться непосредственно к ООП шарпа, неподдерживающего множественное наследование, но всё равно играя интерфейсами и абстрактными классами не пришлось бы реализовывать тыщу раз интерфейсы аппендиксов и прочих рудиментов.
>>1537046Проблема в том, что ООП поощряет аппендиксы и копчики, а не в том, что от них можно избавиться при грамотном написании кода. Макакич не будет тебе делать абстрактный класс — он просто ебанёт наследование от макаки к человеку.
>>1537051всё равно не вижу в этом проблемы ООП. пока что всё, что ты говоришь, что ООП может привести к ебанутой архитектуре из за неграмотности программиста. это всё равно, что обвинять кухонные ножи в том, что ими алконафты иногда убивают людей. чё теперь, ложкой мясо резать? может быть, ты можешь предложить парадигму программирования получше для задач, предполагающих постоянное состояние приложения и работу с данными?
>>1537030То что оно не везде нужно и там где оно не нужно оно создает кучу лишнего кода из-за того что все нынешние реализации ООП лютое говно, которое построено на костылях и костылями погоняет. Ко всему выглядит неэстетично, порождает завышенные требования к аутистичности программиста, работает в большинстве случаев медленнее, если делать так как говорят гайдлайны и умные дядьки, ко всему оно просто неочевидно работает в большинстве случаев и из-за этого обосраться с ООП намного легче чем без него.
>>1537063>То что оно не везде нужно и там где оно не нужно оно создает кучу лишнего кода? так не используй там, где не нужно. в чём проблемы? тебя никто не заставляет хуярить фабрики на каждый интерфейс>все нынешние реализации ООП лютое говно, которое построено на костылях и костылями погоняетпочему?> Ко всему выглядит неэстетично, порождает завышенные требования к аутистичности программиставкусовщина> ко всему оно просто неочевидно работает в большинстве случаевчего? наверно от реализации конечно зависит, но по крайней мере в шарпе неочевидного ничего не помню. документация по языку в помощь.
>>1537061Нет наследования (или оно реализовано через раздраконивание ануса, а не одним знаком) — нет проблем. И для постоянной работы с состоянием и данными используют DOD, а не ООП, потому что ООП ускоряет только работу с кодом, а работу кода может разве что замедлить. Чтобы реализовать DOD в ООП языке, ты должен забыть всё, чему тебя научило наследование.
Итт школьники и стажёры поясняют почему проверенные десятилетиями продакшна решения не нужны, я правильно понял?Ну ладно, я сам таким в 17 был, когда для себя пистон открыл. А потом с первым проектом серьезнее мувисерчера пришло понимание необходимости ООП, ФП и прочих подходов к структурированию программ на уровне синтаксиса.
>>1537082> КТО-ТО ХОЧЕТ ИСПОЛЬЗОВАТЬ ОГРОМНЫЙ ФУНКЦИОНАЛ КОТОРЫЙ ПРЕДОСТАВЛЯЕТ .NET НЕ ДЛЯ ТОГО ЧТОБЫ ДЕЛАТЬ ОЧЕРЕДНУЮ КРУДОШЛЕПСКУЮ ХУЙНЮ НА ГАЛЕРЕ! ДА КАК ОНИ СМЕЮТ ПРОСТО ПОДУМАТЬ ОБ ЭТОМ! Я ВОТ ДЕЛАЮ ПО 10 КРУДОШЛЕПСКИХ ХУЕВИН В НЕДЕЛЮ И ВЫ ТАК ДЕЛАЙТЕ, ИНАЧЕ ВЫ НЕ ПРОГРАММИСТЫБлядь, а меня потом шизиком называют. Мне, блядь, нравится что шарп может из коробки, но при этом мои задачи как раз не предусматривают ЧЕГО-ТО БОЛЬШОГО. Вот вы же выпросили себе ML, хотя нахуй он сдался в вашем говнопрайзе?, а я хочу вся библиотека шарпа и его приятный синтаксис не были привязаны к ООП, что в этом такого странного-то? Т.к. ты макака, я для тебя большими буквами напишу: ЕСТЬ ЛЮДИ, КОТОРЫЕ НЕ РАБОТАЮТ НА ГАЛЕРАХ, ПРИ ЭТОМ ОНИ ХОТЯТ ИСПОЛЬЗОВАТЬ ШАРП ИЗ ЗА ОБИЛИЯ ПЛЮШЕК, ОДНАКО ВСЯ ЭТА ПОДЗАЛУПНАЯ СРАНЬ С ООП ИМ НЕ НУЖНА И В ИХ ПРОЕКТАХ ПРОСТО УВЕЛИЧИТ КОЛИЧЕСТВО СТРОК КОДА, А СЛЕДОВАТЕЛЬНО ВРЕМЯ НА РАЗРАБОТКУ. Может быть так дойдет.
Задача следующая: нужно расшифровать текст зашифрованный неизвестным ключом шифром Виженера.Как это сделать?
>>1537118Назови не-ооп плюшки шарпа, которых нет ни в одном другом языке, раз так дрочишь на них. Линк и тот всего лишь кастрированные списочные функции из любого ФП-языка, лол. Основная сила шарпа в ООП и платформе с кучей готовых либ, а не в синтаксическом сахаре, которого и в других языках навалом. Не нравится ООП - уебывай в тред ФП, там иногда фшарперы проскакивают. >В их проектахЛюбой проект сложнее тудулиста требует той или иной формы организации кода. Нет, разбить код на 5 файлов это не организация кода >Выпросили себе ML Что ты несёшь блядь господи.
>>1528262 (OP)Анон, есть один корпоративный git-репозиторий с парой сотен grpc'шек, каждая с несколькими протобафными dto'шками.Я хочу всё это запихнуть в отдельные nuget'ы, чтоб при каждом обновлении git-репозитория тимсити мне все это собирала и пушила во внутренний nuget-репозиторий.Как это грамотнее сделать?Пока придумал только такое:- для каждого grpc создавать папочку с проектом- копировать шаблоны .csproj, AssemblyInfo.cs и .nuspec в эту папочку, проставляя названия пакета, версию и зависимости- компилировать grpc и protobuf'ы в .cs'ы- вписывать вновь созданные проекты в .sln- билдить все проекты в сборки netstandard2.0, собирать .nuget'ы и пушить в репуКакие подводные?Можно ли сделать кучу сборок из единого .csproj проекта?Можно ли это упростить как-то?
Анон, есть два солюшена, запускаю через райдер. В одном два проекта - сама консольная программа на последний дотнет, в другом nunit тесты.Во втором солюшена все то же самое.Но - почему-то в первом случае тесты видят неймспейс программы (т.е можно через using достучаться), а во втором нихуя, не видит. В чем может проблема быть?
>>1537308Загляни в csproj с тестами, есть ли там ProjectReference на проект с программой?Еще могут TargetFramework не совпадать
Снова привет, шарпаны. Я тот анон что спрашивал про сервер. Короче, я таки сделал что память никуда не утекает и даже если куча сессий запущена процессор не жрет все ресурсы, и даже не на сокетах, а переписал на TcpClitnt(оказалось что я просто забыл закрыть сессию когда клиент отвалится и сессия пыталсь до последнего что-то прочитать из закрытого сокета, а т.к. все было в try-catch ошибка не вываливалась и я только поняв что резкий прирост потребления ресурсов появляется после отключения сессии догадался ее заканчивать, вот я бака). Даже чатик между клиентами реализовал по своему супер протоколу. Принес преподу, а он говорит, что это как-то не серьезно: второй курс и просто байтики прочитал-отправил, потому нужно, чтобы клиенты после регистрации и всех обязательных операций могли по своим кастомным протоколам общаться, типа они сами могут описать его у себя в файлике, отправить друг-другжке, а потом общаться этим протоколом, если захотят, а не моим.И я чет не понимаю как это-то сделать. Типа у меня завязано принятие клиентов на сервер по моему супер протоколу, все остальные пакеты я считаю мусором еще на моменте если первые два байтика не единички нолик и сессию что присылает мусор даже не создаю, а тут нужно как-то понять что вот это не мусор вовсе и я не совсем понимаю как. Конечно у меня появилась идея, типа добавить класс ClientInfo, в который вынести из обработчика сессии всю инфу о клиенте, и реализовать такую вот логику: Клиент сначала входит, отправляет все пакеты регистрации-авторизации и если все проходит нормально, то я в классе ClirntInfo ставлю флажок что: Это свой пацан, можно все подряд принимать, только вот я не понимаю, а как мне, если протокол может быть любой, понять кому сервер должен переправить пакет, потому что у меня то кому отправляются данные указывалось в пакете, а значит я не смогу узнать кому переправить данные, если во-первых не знаю структуру протокола, во-вторых, если таки знаю, в протоколе не указан получатель. К чему я это все написал? На самом деле просто изложив в письменной форме проблему мне самому легче ее проанализировать, потому можете не обращать внимания, конечно от книжек и советов мудрых я не откажусь.
>>1537710>можете не обращать внимание>от мудрых я не откажусьпиши в блокнот, что ты там надумал себе. Твои говно проекты из шараги никому не интересныTPC клиент на шарпах, что за долбоеб
>>1538009Да, но как в ООП стиле одновременно применять и классы, и рекорды? Одних классов достаточно.
>>1538020> одновременно применять и классы, и рекорды?А как можно применять не одновременно, если класс это и есть рекорд с плюшками.
>>1538226Но это как бы понятно, что в классах мы тупо ссылку присваиваем и обеими указываем на сейм обжект.
Аноны, я полный ноль в программировании не так давно вкатился в си шарпУ меня возник вопросНа чём создавать WPF приложения?Помимо визуал студиоЯ вот работаю в редакторе кода -- vs code и там, конечно, такое сделать не получится
>>1539021Серьёзно?Разве vs code на такое способен?Это же редактор кода, а не полноценная среда разработкиПоправь, если не прав
>>1539032Ну, ты хоть в блокноте можешь писать, если у тебя все либы фреймврока есть. Какая разница? Да, никакого драг-н-дропа, но кто тебе мешает справляться без него?
>>1539034В общем, я пока слишком нубасикНаверное, мне лучше пока забыть о примитивных приложениях и изучить базовый синтаксис
>>1539039Лучше всегда сначала изучить синтаксис. А приложения в студии действительно проще делать, хоть впф, хоть формы, хоть ксамарин. Я её тоже не люблю, но куда деваться
>>1539034А разве там компиляция не через жопу консоль будет с ручным пердолингом через baml? Или code умеет собирать сама впф поректы?
>>1539317Иди в тред компутер саенс, там тебе пояснят за литературу. А у нас обходятся википедией и мсдн.
>>1539317>На метаните вообще не понимаю что написанозабей тогда на CS. Если на метаните не понятно, то в других источниках точно ничего не поймешь
>>1539346Окей, но это мне ведь не помешает в изучении коллекций? Или лучше разобраться со структурами?
>>1540218Взять VSCode и кодить в нем. Вижак нужен только когда ты отлаживаешь программу, чтобы ловить утечки и смотреть как ресурсы распределяются.А вообще, я не понимаю, что такого в том, чтобы грузился он долго, ведь его один раз запустил и не закрываешь, пока работу не доделал.
>>1536499Си и так может всё, что может шарп, и ещё в десять раз больше. Что тебе ещё нужно-то, я не понял?
>>1540705>десять раз большевсмысле только в десять? C - язык богов, он может АБСОЛЮТНО все. Нам не нужны управляемые модули с MSILом, только расходование ресурсов. Там не нужны типобезопастные типы, С боги и так пишут все правильно. Да даже IDE нахуй не нужна - Notepad наш инструмент.>>1540559>>1540563>>1539893полностью поддерживаю. Потраченные годы на этот говноязык мелкософта>>1540218удалить
>>1528262 (OP)>>1540758>говноязык Что он тебе сделал, лол. Я рад что начал именно этот язык учить, работаю в энтерпрайзе, уютный офис, халявная еда, нормальная зп. Не понимаю претензии
>>1540353Когда уже починят anti-alising? Шарам итак пизда от монитора тут ещё и мыльное говнецо, вместо шрифтов.
Как вы безопасно элементы класса в лист записываете? Я чё-то с этими гетенумераторами совсем запутался.
>>1540894Вынеси в отдельную функцию, лол.Ты понимаешь же, что все наебывается из-за того что у тебя рекурсия, потому что ты в конструкторе всю эту хуйню делаешь? Просто поставь точку останова в конструкторе и посмотри как оно проиходит по шагам.
Няши, у меня тупой вопрос. Короче, смотрите, я сделал событие в базовом классе, сделал несколько наследников. Делаю 2 класса, которые подписывается на это событие у наследников, но блджад, почему-то один класс подписывается и делает что надо при срабатывании события, а другой - не подписывается. У обоих классов подпись происходит в конструкторе. Я долго ломал голову, почему так происходит, и пришел к выводу: Всему виной асинхронность(потому что других причин не нашел), сделал те классы что генерируют событие потокобезопасными синглтонами и все нормально стало происходить. Но блядь, мне кажется что это я какую-то хуйню сделал, потому что ну не дело же каждый раз делать синглтон хуячить на случай если тот класс на который нужно подписаться еще не создался. А как тогда правильно делать? Просто вот мне захотелось свое логирование сделать своему супер серверу, а не брать Serilog, и я хотел чтобы мой лог просто подписывался на события, типа: пришло сообщение, клиент отвалился, сервер закрыл сессию; но как я уже сказал, пока я "сервер" не запихнул в синглтон почему-то логер не хотел подписываться, хотя мой обработчик сессий ровно по тому же принципу работает что и должен был логгер, но он на эти же события нормально подписывался и обрабатывал.
>>1540946Ты троллишь тупостью?Короче, лень объснять, читай https://docs.microsoft.com/en-us/dotnet/api/system.collections.ienumerable?view=netframework-4.8
>>1540991>Предоставляет перечислитель, который поддерживает простой перебор элементов неуниверсальной коллекции.И как мне это поможет?Ну IEnumerable помогает использовать foreach для экземпляров класса, и шо
блять, поясните долбаебу как обратиться к уже созданному экземпляру класса? Я создаю экземпляр класса в одном классе, записываю данные в переменную, мне нужно вызвать этот экземпляр в другом классе. Уже два дня не могу решить эту проблему, пиздец.
Хм, а я тут подумал насчет вот этого >>1540996 вопроса и у меня возникла странная мысль: А как вызвать метод какого-то класса из другого класса, не создавая объект того класса? Скажем, вот у меня класс А, он имеет метод: печатать строку; вот у меня класс Б, он хочет напечатать строку методом из класса А, но при этом не хочет никак с классом А напрямую взаимодействовать и даже через интерфейсы и промежуточные классы. Разве нельзя просто как-нибудь из памяти достать указатель на функцию класса А и что-то сделать с ней в классе Б? Конечно, наверное это все какая-от хуйня, и вообще такие вещи рефлексией делаются, но, как я читал, использование той же рефлексии может к непредсказуемым последствиям привести, если ты в опциях компиляции решишь оптимизацию включить, да и раздувает размер сборки.
>>1541041А что там делать? Добавил просто объект синхронизации и местах где кто-то может ресурс затребовать и ебанул lock.
>>1541092Я хотел чтобы ты посмотрел как реализуют коллекции умные люди, потом посмотрел на свою и больше так не делал.
>>1541001Огромное спасибо! Я еще не до конца понял как это работает в твоем примере, но главное работает!
>>1541053Тебя ебет, козла ебаного? Хотим и задаем тут вопросы, пошел нахуй если чего - то не устраиват.
>>1541092Чтобы ты шел учебники читать >>1541115Так если я уйду, кто вам хуесосам тупорылым помогать будет?
Котаны, есть следующая проблема. Пишу виндоус формочки. У меня есть метод comboBoxSelectArrayType_SelectedIndexChanged(object sender, EventArgs e). Но если я пишу в другом методе строчку comboBoxSelectArrayType.SelectedIndex=2, то первый метод не вызывается. Как быть? Пробовал вызывать первый метод с аргументами this и EventArgs.Empty, нихуя не работает.
>>1540969найс ты с DefLessons урок с коллекциями копипастишь. Держи с полки пирожок.>>1541053в воскресенье доучивают уроки и начинают мозги ебать на право и налево. типо такого >>1541239>>1541073двачую
>>1541107>как реализуют коллекции умные людиВот так:List<int> numbers = new List<int>();Или так:int[] numbers = new int[] {0, 1, 2, 3, 4, 5};
>>1541258> DefLessons урок с коллекциями Что это вообще такое, лол? Я за всю жизнь ни одной книжки и ни одного курса не прошел, только то что в универе рассказывали помню.
Нужны ли вообще делегаты? Редко с ними встречался ( хотя не особо много когда видел в своей жизни), такое ощущение что выполняешь одни и теже действия по несколько раз.
Сап двач, захотел вкатиться в шарпы и поэтому решил написать простой код для решения квадратного уравнение, расписав переменную для ввода с клавиатуры, она у меня не выводиться... В чем трабл подскажите( пик 1, 2)! если уберу текст, то спокойно выводит (пик 4 и 5.)
Отвлекитесь от лаба2, есть серьеный вопрос.Как слить два Linq Expression в один? То есть есть model => model.Field и field => field.Nested, нужно сложить их в model => model.Field.Nested.Просто вызвать второй экспрешн от первого не канает, т.к. используемая библиотека для своей работы раскладывает переданный экспрешн, и единственный способ решить поставленную задачу - передать ей именно "model => model.Field.Nested". А у меня есть только model => model.Field и field => field.Nested.
>>1542050Ты запятую ставишь, не зная что делает параметр в врайт лайне, это тебе не паскальhttps://docs.microsoft.com/en-us/dotnet/api/system.console.writeline?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev16.query%3FappId%3DDev16IDEF1%26l%3DEN-US%26k%3Dk(System.Console.WriteLine);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.7.2);k(DevLang-csharp)%26rd%3Dtrue%26f%3D255%26MSPPError%3D-2147217396&view=netframework-4.8
Какой оптимальный способ проверки вхождения одной коллекции в другую. К примеру есть:List<int> listInt = new List<int>() { 1, 3 ,5 } - лист, который должен содержать другая коллекцияList<int> listIntTest1 = new List<int>() {1,3,4,6} - falseList<int> listIntTest2 = new List<int>() {1,3,5,7} - trueList<int> listIntTest3 = new List<int>() {1,2,4,8} - falseКак это можно реализовать без LINQ All?
>>1542058static public bool IsIntersects(IList<int> target, IList<int> second){return target.Intersect(second).Count() == target.Count;}
Как перечислить свойства всех экземпляров? Вот у меня допустим есть 2 экземпляра с разными номерами, надо вывести этот список.Писать %объект_name%.Number естественно невозможно будет, если клиентов 100. Вот написал код, но это форич только для 1 экземпляра.Спасибо
>>1542117foreach (var customer in customers ){Console.WriteLine(customer.number);}В общем, читай как работает foreach и не пиши хуйни.
>>1542095Метод имеет следующую сигнатуру:Expression<Func<TIn, TOut>> Merge(Expression<Func<TIn, TMiddle>> first, Expression<Func<TMiddle, TOut>> second)Принимая на вход m=>m.Field и f=>f.Nested, должен вернуть в точности m=>m.Field.Nested - любое эквивалентное ему по смыслу возвращаемое значение не подходит, нужна именно такая форма.Не могу допереть как реализовать.
>>1542148У тебя коллекция List в которой хранятся объекты типа Customer, при перечислении этой коллекции тебе будут возвращаться объекты этого типа, у каждого такого объекта есть свойство Number. Но судя по твоим постам у тебя полная каша в голове, к тому же ты долбоеб непробиваемый, поэтому могу посоветовать тебе нахуй пойти.
>>1542103Сначала подумал, что за метод Intersect, потом понял, что это метод расширения, о котором за более полу года использования LINQ только узнал. Спасибо.
>>1541021Насчёт напрямую - разве что рефлексией, но есть вариант - делегаты. Передаешь в класс делегат через метод/конструктор и делаешь с ним что захочешь.
Аноны, подскажите глупому человеку в чем проблема, как мне сделать так что бы при изменении выбранного элемента из списка что-то происходило,
>>1542712Тебе же русским языком пишут, что событие может находиться только в левой части операции += или -=Советую отталкиваться от слова событие и гуглить в эту сторону.
двачик что за херня с этим ебанным аспом, почему это такое говно? я хочу сделать красивую кнопочку для контрольки fileupload но вот беда fileupload не поддерживает стили, то есть он конечно формально поддерживает но поверх все равно пыхает вот эту ебанутюу херню на первом пикриле ну думаю бля костыльную херню надо исправлять костыльным кодом, написал что что типа fileUpload : display none и решил просто ссылаться на него через джаваскрипт который буду вызывать уже нормальной кнопкой, но вот херня, мне надо название файла, и если вы думаете что его мнжно взять просто через fileupload.filename то нет, потому что fileupload не задает page.postback и страница тупо файла не видит, думаю ну блять пиздец надо тогда вызвать page.postback через скрипт дописал и блять ЭТА ХУЙНЯ ВСЕЕ НЕ РАБОТАЕТ потому что скрипт и загрузка файла работают асинхронно и страница может все еще не видеть файла, пробовал уже тогда сделать просто input type = file эта хуреня тоже не подошла я уже пол часа пытаюсь как-то накостылять код на эту парашу, господи как же у меня горит от этой аспшной хуйникостыль на костыле блеять, и костылем погоняет.
>>1542712> Аноны, подскажите глупому человеку в чем проблема, как мне сделать так что бы при изменении выбранного элемента из списка что-то происходило, Тебе в событие надо лямбду хуйнуть.
>>1543481Потому что нахуй тебе это серверсайдное говно мамонта, пили уже норм отдельно бэк на рестапи и фронт.https://primefaces.org/primevue/#/
Блядь, объясните, как найти причину ObjectDisposedException? Я просто, блядь, не понимаю, был класс, в нем два сокета, один принимает сообщение и пересылает в другой, все было нормально, решил прикрутить БД, чтобы промежуточный объект контекста сохранял данные в БД, ничего там не диспозю, но, блядь, почему-то эндпоинт диспозится, я просто блядь не понимаю. Вот как и почему? Я даже, блядь, решил с точкой остановы посмотреть, выглядит так: Вот два сокета, как только первый биндится, у промежуточного объекта, который даже никак с ним не связан, просто диспозится сокет и все идет по пизде. Вот что это за хуйня? И еще эта ебаная студия, которая почему-то в проекте на 5к строк кода не может найти место где эксепшн возникает и просто валится с сообщением что он возник, заставляя меня как деда ебаного писать кучу хуйни вида Console.WriteLine("Зашли в метод Хуй класса Пизда"); Console.WriteLine("Вызвано событие Залупа класса Жопа"). Пиздец нахуй.
>>1543726Значит его диспозит GC. Попробуй использовать GC.SuppressFinalize на объекте который у тебя эксепшн вызывает, но это сомнительный костыль и проблема может быть в том, что у тебя этот объект объявляется не на глобальном уровне, а в каком-нибудь классе/методе который выходит из области видимости и поэтому диспозится GC.
>>1543738А можно как-то посмотреть что GC решил задиспозить? Вообще, наверное тупой вопрос, но может быть в студии есть какая-нибудь приблуда, которая бы отображала созданые мной объекты и их состояние в данный момент и в какой момент они задиспозились и все это вот?Да и горит у меня из-за того что ну вот, работало же, 100 раз проверил, а сейчас я просто хочу считаную инфу в базу записать, а оно теперь не работает в том месте где работало.
>>1528262 (OP)Везде в вакансиях на дотнетчика указано базовое знание JS - на каком уровне его нужно для вката?
Я ща мозг нахуй сломаю с этими событиями. Ебабоба, вот есть делегат, я могу его нахуй вызвать в любой нахуй момент ( если уже сохранил туда методы ) А нахуя собственно события?
>>1544278Ещё не понятно, то EventHandler когда ивент объявляешь, то ли название другого делегата ыаыаыаыаыаыаыаыаыа
>>1544277События созданы для того, чтобы не надо было создавать методы для добавления/удаления методов из списка вызова делегата. С событиями ты создаешь один делегат и несколько событий связанных с этим делегатом, а компилятор дописывает за тебя методы для добавления обработчиков этих событий.
>>1543815>>1543874>>1543878Т.е. по сути джун-дотнетчик - это уже готовый джун фронтендер? А сверху еще бэкэнд надо знать?
Можно ли как-то в конструкторе добавлять в List<Class> экземпляр класса ?То есть при создании экземпляра класса они добавлялись в List<Class>, а не в ручную каждый экземпляр добавлять в лист.
>>1544476Ну так передай в конструктор лист и добавь в конструкторе this в листВот только нахуя тебе такой дерьмокод?
>>1544488А, вообще забыл что такое this.А почему дерьмокод? Ну надо же хранить где-то пользователей, допустим, вот в листе удобно и сортировать, и форичить. Сказка же
>>1544491Потому что во первых не надо создавать зависимостей на ровном месте, во-вторых не надо раздувать функционал класса там где не надо. Это усложняет переиспользование кода А в третьих это нечитабельно нахуй.
>>1544499Как ты к этому листу в мейне обращаешься? Если через тип, то и не будет видеть, т.к. лист - член типа. Если через экземпляр - то должно видеть
Блядь, пиздос шарп странный. Короче, я вчера писал про ObjectDisposedException. Короче, нашел в чем была проблема. В классе который обрабатывал запрос при попытке записать пришедшие данные вылетал эксепшн, из-за того что я недоглядел и пытался сохранять строку в виде класса. Так вот, блядь, почему диспозится сокет, когда эксепшен вообще в другом классе и сокет никак не связан с тем что там происходит?Я даже картинку нарисовал чтобы было понятно как это выглядит со стороны. Вот и как такое предотвращать? Вообще, с какого хуя эксепшн в одном объекте, не связаным ничем, кроме передаваемых в него данных, вызывает диспоз у сокета, который просто передает хендлеру данные и дальше не при делах?
Хочу сделать игру, но не хочу шквариться об юнити. В идеале хочу свой движок с блекджеком написать. Так вот, у меня два стула: взять OpenGL или directx. Что лучше, учитывая что игра должна быть изометрической пиксельной РПГ?
>>1544448Да, различие лишь в том, что тебе не надо знать всех мелочей, т. е. спрос меньше, так как ты шарп знаешь. Твоя основная задача это бэкенд.
>>1544566Показывай место эксепшена и сокета который диспозится. Дело может быть и не в этом, может быть у тебя там используется многопоточность и из-за твоей криворукости убивается работающий поток который отвечает за сокет. Такое может происходить если ты используешь Thread.Abort() (поток завершил свою изначальную задачу и принялся выполнять другую, и в это время ты его завершил абортом).
>>1544575Таск это такой же поток, различие в том, что он может выполнятся в отдельном потоке или в уже существующем. Тогда как Thread это всегда отдельный поток.
>>1544577Хм, я почему-то думал, что таск это такая хреновина, которую засовывают в пул потоков и она там по потокам прыгает до завершения, если есть свободные ресурсы, а если умирает, то с потоком ничего не происходит. Именно потому таски и решил использовать, лол. Наверное глупой затеей было садиться писать асинхронный сервер, ни читая ни одной книги.
Анон, объясни неосилятору на примере говна и жопы на пальцах, что такое ивенты и зачем они нужны. По учебникам и гуглу понятно не становится.
>>1545639Это такая хуйня, которая позволяет тебе не ебаться с реализацией одного популярного паттерна. Оч удобно, что есть из коробки.Нужна, чтобы понизить связность сущностей, при этом добавив какую-то хитрую логику. На, банально, вот у тебя в формочке юзер изменяет постоянно что-то, а то что он там изменяет хорошо бы на лету обсчитывать, например сразу сказать: Слыш, пидрила, хули ты в поле год рождения буквы пишешь или год больше текущего, охуел чтоли, а ну давай нормально, или вообще не дать пидорасу это сделать. Вот ты и делаешь эвент: TextChanged, на него вешаешь подписчика, который смотрит что там пидрила ввел и решает принимать текст или подсветить красным и не дать кнопочке сохранения стать активной. Это самый популярный сценарий, но вообще ты можешь и без них жить, просто у тебя в коде где было бы TextChanged?.Invoke(this, new EventArgs()) будет куча методов вида: db.OnTextFieldChanged("Хуй залупа"), GUI.OnTextFieldChanged("Хуй залупа"), webServed.OnTextFieldChanged("Хуй залупа") и т.д. Короче, это сахарок такой вот, позволяет тебе делать штуки с меньшими движениями жопы. Всю пользу поймешь, когда решишь свой проект на 10к+ строк написать.
Бля, я>>1545644 конечно хуево описал. Просто нужно самому попробовать использовать и тогда поймешь. Попробуй более-менее нормальный тудулист сделать с возможностью задачи по группам создавать, синхронизацией с сервером, возможностью залогиниться из браузера, и с возможностью "начальнику" всем "подчиненным" добавить задачу, типа он добавляет задачу: "Выполнить пятилетку за три года", а все его "подчиненные" должны это сразу в списке своих дел увидеть.
>>1545639Для того чтобы не писать кучу бойлерплейт кода при работе с делегатами. По сути это обертка над делегатами чтобы было удобней с ними работать, можно всё на делегатах делать, отличие будет лишь в количестве кода которое тебе нужно написать.
>>1545655Будто делегаты это тоже не сахарок. Деды все это на сях указателями на функции делали и ничего, жили себе, писали высокопроизводительный софт, который жрал почти нихуя памяти, а сейчас хелловорлд шарповский пару мегобайт весит и сразу отжирает 6мб оперативки, чтобы ебучую строку текста в консоль вывести. Эх, было же время. Ух. И хуй-то стоял...
Нужен советесть функция (не моя, оптимизировать не получится) которая вызывается в foreachпроблема в том что каждый цикл выполняется тыщу лет (около секунды),меня посетила идея запихнуть каждый цикл foreach в отдельный поток и паралельно выполнить все (или N циклов)можно ли как то по простому это реализовать?
>>1545886там довольно большой объем операцийполный цикл foreach занимал на тестах около 5-6 секунд ( а на боевом сервере я хотел увеличить входящие данные в два раза минимум)потому не факт что это заняло бы больше времениasync предложенный выше полностью решил проблему с временем выполнения
>>1545659Что еще спизданешь? Пикрил - программа для переключение частоты обновления монитора в один клик, при этом в ней использована сторонняя библиотека, что явно больше чем хеллоу ворлд.
Можно ли создать объект класса на уровне класса, а не метода? Если да то как, если нет, то как получить доступ к объекту класса из другого метода?
>>1546120у тебя каша в голове>создать объект класса на уровне класса, а не метода?вообще ничего не понял. Ты сначала создаешь тип, потом создаешь его экземпляр. Обращаешься ты или к типу или к экземпляру в зависимости от того, какой тип ты создал.>как получить доступ к объекту класса из другого метода?создать ссылку на этот объект (тип) из пространства имен, в котором ты работаешь. Если поля (метод в твоем случае) этого типа не закрытые, то ты можешь к ним обращаться.
>>1545639Я, кстати, также не понимал, но мне пояснили вот как Если оставить делегаты как анонимные методы в стороне, то события и делегаты соотносятся как свойства и поля.1. Событие — это свойство с методами "add" и "remove".2. Вызов свойства доступен только изнутри класса.3. Событие может быть как обёрткой над полем-делегатом (аналог автосвойства), так и хранить ссылки на делегаты в какой-то другой форме и вообще содержать любую дополнительную логику.4. Событие может быть виртуальным и т.п.
Анончик, нужен совет. Нужно разработать апликуху под ШINDOWS - выбираю технологию. WPF - зарекался связываться с вонючим xaml, консоль не пойдет - нужен базовый клиенский UI, WinForms - говно мамонта, не хочу даже связываться. Я бы на Core написал, там html+razor - более интуитивно понятно, но мне для юзверов нужно, а он запускается в Kestrel/IIS - проблема. Посоветуйте на чем захуячить. Требование - чтобы у юзвера был только .NET framework и всо. Спасибо.
>>1546674но этой залупе жить от силы пол года. С выходом Core 3.0 все забудут за это убожество Xml-а под подливой WPF
>>1546543ИМХО, такое объяснение даже сложнее для понимания. Я бы, будь совсем нубом не понял нах оно надо. Да и делегаты тоже имеют методы add-remove.Тут нужно, ИМХО, именно область применения понимать и попробовать что-то с ними намутить. Например чтобы при приходе данных на сервер ты не мутил отдельный метод записи в БД, а просто подписался из контекста БД на событие и сразу добавлял что пришло.
>>1546543>>1546732у рихтера отличное объяснение с факсом, принтером, телефоном и почтовым сервером. Гугл рихтера, начало главы про делегаты-события
>>1546778долбоеб, зачем ты это высрал? https://docs.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-frameworkИли ты думаешь я буду клиентов мигрировать через апдейт на .net core? Тем более как писал выше>зарекался связываться с вонючим xamlтак что нахуй идет WPFКакие еще предложения, господа?
>>1546803Уебище тупорылое, у тебя нет приложения, зачем ты ссылаешься на статью для тех, кто писал своё приложение используя net framework? WPF приложения уже можно писать используя .Net Core, представь себе.
Шарпаны, поясните, а когда нужно использовать кортежи? Ну, т.е. вроде как понятно, что типа если у нас функция принимает кучу аргументов это неудобно и лучше запихнуть эту кучу в кортеж и тогда, скажем, будет 2 аргумента, но ведь это, на мой взгляд, какая-то залупа, которая просто те же переменные прячет под коврик, а на деле все то же самое. Ну или скажем приводят пример с тем что в одном месте программы приходят данные и тебе влом заводить отдельный класс для этого дела, потому делаешь кортеж и пихаешь в него, дальше что-то там с пришедшими данными делаешь и все, но такая же херня выглядит как какой-то говнокод, особенно с ростом мест, где ты будешь пользоваться кортежами. Может быть я не совсем понимаю, но разве действительно есть какая-то острая необходимость наличия кортежей в шарпе, кроме: "Везде есть, пущай и у нас будет!"?То же касается и новой фишки с дефолтной реализацией в интерфейсе. Вот нахуй оно надо-то? Мне несложно было для этого сделать абстрактный класс и проделывать все те же свистопляски в нем, а так получается что не понятно теперь, когда что использовать.
>>1547199Кортежи для возврата удобныУ нас в легаси проекте дохуища классов типа ValidationResult, ParsingResult, ConvertResult итд которые нужны исключительно чтобы вернуть 2-3 переменные из функции. А ещё дохуя функций, которые возвращают данные и успешность операции. Там вообще на out bool построено, что ебано.Были бы кортежи - стало бы в разы проще.Про реализацию в интерфейсе - напомни, сколько классов ты можешь наследовать за раз в одном сабклассе, а сколько интерфейсов реализовывать?
>>1528262 (OP)Как защитить свой код от реверс-инжиниринга? Я тут написал годную десктоп-программку на C#, уже был готов раздать коллегам на тестирование, в расчёте через какое-то время монетизировать и не присесть на бутылку как Сысоев. Но решил проверить, не спиздит ли кто-то годноту. И таки да - спиздить ничего не стоит. Dot peek позволяет просматривать все кишки моих dll и exe.Как сделать так, чтобы нихуя нельзя было понять по бинарникам?Пока есть только идея переписать ключевые моменты на C++, оставив в C# только IO.
>>1547241все, что ты перечислил можно сделать с передачей класса, в который входят эти поля. Я как то упустил из внимания эти кортежи и сам иногда задаюсь вопросом - нахуй они нужны.
>>1546756Прочитал. Ахуеть. То есть я правильно понимаю, что ивенты - это синтаксический сахар, чтобы вместо Fax1.DoSomething(); Pager1.DoSomething(); писать одну строку аля NewMail(), да?
>>1528262 (OP)Такая проблема: Вот у меня есть несколько переменных, которым я хочу присвоить значения в цикле do while, в который будет встроена обработка исключений таким образом, чтобы к концу этого цикла всем переменным были присвоены некоторые корректные значения. То есть по замыслу нет возможности покинуть цикл и далее использовать эти переменные в программе, если они не присвоены корректными для них значениями в некотором диапазоне.Но вот в чем дело: несмотря на все это я не могу просто объявить их в начале программы а уже потом присвоить им значения в цикле, в любом случае мне нужно присвоить хотя бы фиктивное значение. Как избавиться от него?P.S. Чувствую, что спросил максимально многословно и нелаконично, может даже и не понятно, прошу прощения за это. код - https://ideone.com/5JfbWs
>>1547406Не понял в чем проблема просто объявить переменные как-то так:bool? f;int? n;int? m;do{...}while(...)У них значение по-умолчанию будет null.Еще не понял, на кой черт ты while(f) используешь. Я вижу что ты так останавливаешь цикл, но нахуя, если можно break сделать? И нахуя тебе do-while? И вообще зачем там делать try-catch опять же?
>>1547429Хотя да, try-catch как защита от дурака можно использовать. Тогда код будет как-то так выглядеть.
>>1528262 (OP)Добрый день, уважаемые.Давненько не юзал уже asp.net, уже аж core 3.1 вышел.И вот понадобилось мне написать приложение для интеграции со всякими сервисами, с которыми моя компания работает.Я как привык - есть access_token, который как-то генерируется и который выдается тому, кто у меня его запросил.Вот я хочу при обращении к контроллеру/экшну проверять этот access_token, который передается, например, в хедере или юрлпараметром, дальше лезть в базу и смотреть, есть такой токен/нет. Если есть и не истек, то все ок, ппускаю его в контроллер/экшн.Я думал, это можно сделать, унаследовав атрибут Authorize. но в нем есть какие-то КлеймыПолитикиРоли, назначение конторых мне непонятно от слова совсем.Никаких методов в этом классе нет совсем. Роли - еще могу понять - reader/writer какой-нибудь.https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1Был тут, после чего совсем уже совсем тупым себя ощутил.Можете, пожалуйста, на пальцах объяснить, что значат все эти клеймы, политики и роли, как с ними работать на уровне МиддлВаре и на уровне моих контроллеров/экшнов применительно к моей задачке с access_token?
>>1547429>Не понял в чем проблема просто объявить переменные как-то так:>bool? f;>int? n;>int? m;Блять и правда. Спасибо, анон.>Еще не понял, на кой черт ты while(f) используешь. >Я вижу что ты так останавливаешь цикл, >но нахуя, если можно break сделать?Да, наверное ты прав. Так и правда логичнее. >И нахуя тебе do-while?Всмысле нахуя мне do-while? Мне цикл для чтения ввода нужен и он должен продолжаться до тех пор, пока не будет введено корректное значение. >И вообще зачем там делать try-catch опять же?Ну а вдруг я вместо числа введу строку? Или что-нибудь еще некорректное сделаю. Может быть я конечно и здесь проебался, но не вижу пока в чем.
>>1547397не правильно. У тебя есть 3 устройства, у каждого из которых может возникнуть событие (а может и нет) на получение сообщения. Когда создаешь экзепляр такого объкта, где из полей есть событие, которое принимает делегат, ты можешь сделать подписку на него, а можешь не делать (в зависимости от политики проектировки типа).Приведу другой пример - у тебя есть материнка, на ней куча сокетов. Один из сокетов для спикера. Ты можешь его подключить, чтобы он выдавал тебе сигналы, а можешь не подключать, но шаблон проектирования материнской платы всегда подразумевает возможность подключения спикера.Если и сейчас не понятно - почитай про паттерн publisher-subscriber
>>1547463> Всмысле нахуя мне do-while? Мне цикл для чтения ввода нужен и он должен продолжаться до тех пор, пока не будет введено корректное значение. Ну так вот>>1547436 Обычный while, будет продолжаться пока не введешь корректное значение, а do-while, на мой взгляд, это довольно мутная темка, которая снижает понятность кода, ведь ты, обычно, стараешься читать код сверху-вниз, а тут получается что ты сначала видишь do, спускаешься к концу блока, смотришь условие выхода из цикла, а потом что в самом цикле происходит, конечно это не то чтобы прямо страшная фигня, но зачем писать лишние строки, если их можно не писать?А насчет try-catch я таки сам понял зачем ты его используешь. Просто как-то уже отвык от ситуации когда корректность ввода так надо проверять.
>>1547345Долбоеб тупорылый, он и говорит, что у него это реализовано классами, а если бы были кортежи, то не нужно было плодить кучу классов для возврата нескольких значений.
>>1547512Класс удобнее, потому что его можно переиспользовать и ты всегда знаешь что это за сущность. В крайнем случае можно структуру ебануть. А кортеж он выглядит просто как данные в вакууме и хуй пойми зачем оно надо, потому что не все удосуживаются имена членам кортежа дать и у тебя получается что-то вида: (int, int, double, string), а при работе с этим кортежем ты вынужден чере a,b,c,d обращаться к значениям.
>>1547576>>1547512мамкин кодер из шараги решил свои 5 копеек вставить. В интерпрайзе выкатишь код со своими кортежами и попробуй не закоментить, что ты там возвращаешь - индус нашлет порчу. Или же сам увидешь свой код и будешь вспомнитать, что ты там высрал год назад.Для возвращения объекта создаются отдельные сервисы, которые читабельны (не нужно вспоминать, что делает код) и более понятны (есть ребята, которые фич с 7.0 в работе не видели)Весь ебучий синтаксический сахар на производительность не влияет, убирая лишние 3-4 строчки кода делает код не читабельным.
>>1547590Скорее мамкин нонконформист решил доказать всему миру, что кортежи не нужны. У членов есть имена, поэтому тебе не нужно запоминать, что они возвращают. Классы возвращать нужно там, где это полноценный класс, а не набор полей, которые ты потом в переменные преобразуешь, именно для этого и нужны кортежи.
>>1547678>любая фича должнакак один из пунктов. Но точно не вредить. С каждым апдейтом запиливают сахара все больше и больше. Возьми чувака с легаси .NET core >4.0 он вообще охуеет от синтаксиса>>1547595ты просто видимо кроме решеток не на чем не писал и не знаешь, что хороший язык тот, который:1. Выполняет задачу;2. Имеет friendly сигнатуру3. Вытекает из 2 - Легко читается, сапортитсяЕсть некоторые фичи, которые нахуй нужно выпилить из языка>>1547665все так же, мертвый язык. Почитай что выше пишут, одни вкатывальщики из шараги
>>1547703>1. Выполняет задачу;>2. Имеет friendly сигнатуруЭто и достигается при помощи лаконичных кортежей, а не тысячей классов вида ValidationResult, ParsingResult, ConvertResult ...При этом, если говорить о производительности, то твои классы будут сосать у ValueTuple, поэтому тебе придётся делать структуры, которых в твоей "нормальной" джаве нет, как и кортежей.
Сейчас пишу программу, в котором получилось очень много блоков switch. И заметил следующую хуйню: если в условном case 1 у меня есть int hui, то в case 2 я не могу объявить int hui, потому что ЭТА ПЕРЕМЕННАЯ УЖЕ ОБЪЯВЛЕНА.То есть что это такое, анончики? Я пишу переменную для case 1, но компилятор воспринимает ее как переменную всего блока switch? Это же пиздец какой-то, нет? Как в плане синтаксиса (потому что я в case 2 могу использовать переменную hui, которая объявлена в case 1. А если у меня между объявлением и применением переменной 300 строк кода?), так и в плане оптимизации (если мне массив нужно объявлять для case 2, то независимо от того, какой case в итоге выбран, у меня этот массив в памяти висеть будет, даже если он нахуй не нужен). Это я долбоеб или switch - это сомнительный синтаксический сахар, который при это убивает на корню всю эффективность решения? Я где-то читал, что компилятор воспринимает switch как if-elseif-else, но это же тогда полная хуита получается, потому что в if-elseif-else переменные остаются локальными. Рассудите, анончики.
>>1547724Бывший петухонщик, ты? Всё объявлять можно, достаточно в фигурные скобки заключить блок case.
>>1547703>ВредитьОна вредит только в твоём шизомирке. >Сахара все большеИ это хорошо, не любишь сахар - можешь пиздовать на сях писать сразу
>>1547707>в твоей "нормальной" джавешизик, сам додумываешь?остальное коментировать не вижу смысла, только время терять. >>1547724>очень много блоков switchговном завоняло с соседьнего треда. В решетках ООП, ты еще про Goto вспомнил бы>>1547744>>1529860хоть через что. Модульное тестирование - отрезать кусок от инфраструктуры и тестить. Подвязывать один тест на другой - зашквар, т.к. если упадет один, упадет и зависимые>>1531808так и есть, в Core уже запилили WPF, так что возможно не сгниет и xaml будет процветать (но это не точно)>>1547766>Она вредит только в твоём шизомирке.понаписывают такие дебичи, как ты () => () конструкцию на 10 этажей и сиди разбирай. Еще про Си вспомнил, что за долбоеб, земля тебе пухом
>>1547199Анон, поясни за перспективы Шарпа в датасаенс. Кто-то его юзает или проще забить хуй, удалять Rider и качать мануалы по питону и R?
>>1547840Расскажи, какие ты задачи в "Дата саенс" хочешь решать?еня вот позавчера один "дата саентист" очень слёзно просил ему в sql-server Включить поддержу питона, потому что тока на нем можно быстро работащий код написать для его дата-аналайзиса.Открываю, значит, его код на питоне, а там просто все данные из таблички в память засаываются, а потом циклами всякие медианы считаются. Было для меня небольшим откровением о том, что такое дата-сайнс.
>>1547842Ну вот к примеру обсчет данных секвенатора, чтобы из обрывков последовательность ДНК собиратьХотя я ж еще не практик, я просто мимовкатыш.
>>1547842>"дата саентист">поддержу питона99% этих бездарных уебищь только для этого питон и используют
>>1547847Тогда не уверен, что шарп тебе подходит.Мелкомягкие сделали ML.Net, однако он выглядт, как набор готовых решений: «бери и используй», а все, что выбивается за рамки регрессионного анализа, всяких там популярных подходов, вряд ли будет сделано хорошо.
.NET НЕ ГОВНО ПОВТОРЯЮ .NET НЕ ГОВНОМАЙКРОСОФТ ГИГАНТ С СЕРЬЕЗНЫМ ЭНТЕРПРАЙЗЕМВ БИНАРНИКАХ АНАЛЬНЫХ ЗОНДОВ НЕТ
>>1547802>ПонаписываютМаня, если ты даже с лямбдами обсираешься и сам не понимаешь что понавысрал через 5 минут, то не надо это проецировать на другихСинтаксический сахар упрощает читаемость и поддержку, для этого он и создан. А то что кто-то его не к месту юзает, обсирается и бежит ныть на двач - это не проблемы белых людей Бтв в одном я неправ, признаю. Тебе не в тред плюсовиков, слишком умно для тебя будет. Тебе к гошникам, которые даже дженерики осилить не могут и кричат НИНУЖНА. Вот там ты точно приживешься.
реквестирую код на шарпе, который будет менять бинд смены раскладки. то есть, с шифт-альта на ктрл-шифт. с меня как обычно нихуя
>>1528262 (OP)Хочу выучить байткод C# с целью реверсинга софтины, скомпиленной под .NET. Какую книгу подскажете?
>>1548407Не байткод, а MSIL он же CIL (Common Intermediate Language). У Троелсена есть глава в которой он рассматривает некоторые примеры.
сап пр, собсна дрочусь с файлами и делегатами. запихуваю в string[] делегат методы которые возвращают string[]. Пытаюсь записать их в файл, но пишет что я долбоеб и System.String[].да, я в курсе что делегаты - это ссылки на метод, а не контейнер хранящий методы.Однако, пик 1 - работает, а пик 2 - нет.На пик 3 - метод, который принимает string[] и ДОписывает в файл. Помогите, чому в файл записывается System.String[] вместо нормального текста. Я пытался создавать отдельный массив в который записывал примерно так: string[] newarr = new string[] {Convert.ToString(searchImageFiles(path)), Convert.ToString(searchVideoFiles(path))};Всё равно в файл дописывалось System.String[]В гугле не забанили, пытался гуглить - в итоге нихуя не понял. Ебусь второй день. Да, я долбоеб, говнокодер итд итп. Прошу помогите
Короче, два тупых вопроса.1. Смотрите, я подключил EF Core и заметил что если обращаться к контексту БД постоянно, производительность существенно падает. Как я понял, связано это с тем, что я сохраняю постоянно прямо в базу при каждом изменении полей классов, которые мне нужно держать в актуальном состоянии. Я ебанул костыль с тем что при запуске программы создается статичный класс с хэштаблицей, который все что мне нужно из базы один раз читает, я в таблицу пишу-апдейчу, при закрытие "синхронизирую" это говно с базой. И как-бы да, производительность сразу возросла в разы, только я чет думаю что я хуйню делаю. Как правильно-то? Я думал что может просто убрать сохранение изменений и вызывать его по таймеру, но не уверен что это правильный выход.2. Как правильно свой вебсервер реализовывать на базе HttpListner? Просто я как-бы сделал простенький, но получается, что в классе этого сервера куча методов которые просто идут в папочку и достают страничку. Скажем, я догадался парсить URL запроса и рефлексией методы вызывать, чтобы не делать огромный switch-case, но вот что как настроить маршрутизацию нормально? Типа тупо же делать кучу одинаковых методов которые нужны просто чтобы /Home /Index и просто / выдавали одну и ту же страничку, но по другому я пока не представляю как делать, типа думал может сделать файл с "маршрутами", в виде словарика, в котором кусок URL - ключ, а значением выступает метод, тогда получится, что я из URL могу получать название методов и даже может от рефлексии можно будет отказаться, но тоже хз.
>>1548503Какой тип имеет searchFiles?Почему на первом пике в case 2 ты сначала отнимаешь, а потом присваиваешь совершенно другое значение, затирая предыдущее? Тебе не кажется, что что-то тут лишнее?не факт что помогу, но интересно
>>1548558тип - string[]чтобы избавиться от ссылки на другое значение>>1548567search.Invoke это что бля такое ваще, а Where?
>>1548573Invoke я по привычки ебнул. Вообще правильно было бы написать: search?.Invoke(path), так делегат выполнится только если ему что-то присвоено -> внезапно твоя фиговина не упадет из-за NullReferenceException, при этом это короче чем if(search!=null) писать.> а WhereЭто хуйня из linq. Linq крайне приятная штука на самом деле при работе с любыми коллекциями, списками, массивами и т.д.
>>1548573Если это тип string, то почему ты передаешь ей аргумент (path)? Короче я хз что у тебя происходит. Я правильно понял, что вместо пути ф файл записывалась строка "System.String[]"?На втором пике в case 3 аргументы справа от знака присваивания твои собственные? Возможно, где-то в них что-то не так?
>>1548639В файл должен записываться путь, который возвращает метод. Проблема в том, что я не знаю как возвратить нормально массив со значениями, из-за этого в файл записываются не пути а system.string[]
>>1548650Массив в шарпе - это указатель, соответственно ты можешь передавать имя массива как аргумент или возвращаемое значение, и все должно быть ок.
>>1548650Твой проеб в этом месте из-за того что ты пытаешься массив конвертить в строку. Соответсвтенно вызывается метод ToString(), который и возвращает тебе System.String[]. Тебе нужно было просто объединить массивы. Мог, например, создать третий размером как эти два и в него закинуть все, либо просто ебануть список и в него впихнуть эти два.Еще 5 копеек.Зачем тебе считать в цикле, если ты можешь просто свойство Length у массива посмотреть? Т.е если тебе нужна была сумма, ты мог просто Console.WriteLine($"Amount: {TxtFiles.Length+DocxFiles.Length}");Ну и да, с Linq это короче было бы.
>>1548669>Зачем тебе считать в цикле, если ты можешь просто свойство Length у массива посмотреть?Точно, совсем об этом почему-то не подумал. Ты прав>Твой проеб в этом месте из-за того что ты пытаешься массив конвертить в строку.Понял, спасибо. Я пытался объединить массивы, но нихуя не получалось. Спасибо тебе большое
>>1548675Зачем ты из войда ретёрн делаешь после того как форич завершился? Я еще понимаю, типа чтобы "аварийно" выйти из метода, но тут-то зачем?
>>1548669Можешь объяснить хотяб чуть-чуть на счет того, как работает Where в твоем коде? Я погуглил, +- что-то понял, но всё как-то запутанно
>>1548709Проходит по всей коллекции и сравнивает значение коллекции с условием, которое я передал в лямбдой, возвращает элементы которые соответствуют этому условию. Можно было бы не лямбду использовать, а передать метод, как на скриншоте, просто лямбдами в данном случае проще.
>>1548736Понял, спасибо.Можешь скинуть код, у меня почему-то файл не создается. Отдельный класс не делал, так как пока что похуй на него
Вот бы написать конвертер .Net-байткода в Java-байткод…А то люблю шарп, но джава на большем кол-ве платформ есть…
>>1548748Это будет хуйня костыльная, которая будет работать в два раза медленнее. Лучше уж сразу компилятор в java байткод делать.
>>1548749Хз, у меня всё равно как бы я не дрочил твой код - не создаётся файл. Я пытался делать через File.AppendAllText, но там 2 аргумент это то, что записывать с типом string, в то время как методы возвращают string[]Пытался сделать файл в ручную - всё равно нихуя не записывается
Как передать в метод сеанс юзера? В апликухе, которая работает с БД есть сущности, которые юзер может гонять через CRUD. Вопрос: Как поместить в круд методы именного того юзера, который это делает?
Как оттачивать свои навыки кодинга, если у меня нет фантазии на не очень полезные тренировочные проекты, и при этом нет скиллов на полезные реальные проекты? Писать лабы 2 студентам?
>>1548829Все тренировочные уже за тебя придумали. Fundamentals-of-Computer-Programming-with-CSharp-Nakov-eBook-v2013Вот в этой книге годные примеры.
>>1548829Шутишь, наверное !Вполне можно рассматривать в качестве "проекта" даже написание одной единственной, но крайне полезной функции. А таких функций, которые ещё нужно написать, но они пока не написаны - буквально вагон !Потом из этих готовых функций уже проще собирать программы.К примеру, написать функцию, но это, пожалуй, даже и на библиотеку тянет. Хорошо, библиотеку, имеющую такую экспортируемую функцию, что в неё хендл растра изображения передаёшь в первом параметре, а во втором хендл окна в котором искать. А эта функция возвращает координаты найденного изображения в указанном окне, либо -1, если изображения этого в указанном окне нет. Вот мне как раз такая нужна.Или, скажем, такая функция : в неё передаёшь в первом параметре строку в которой искать, а во втором массив структур. Сама структура описывается двумя полями : первое поле - искомая подстройка, а второе поле - число. Число или 1 или 0 в зависимости от направления поиска в искомой строке(вперёд или реверс).Функция возвращает позицию последней в массиве экземпляров стркутур подстройки в искомой строке или -1, если подстройка эта не найдена.То есть, некий аналог функции поиска подстройки, только, во первых, реверсивный, а во вторых, ищет не одну подстройку, а сперва одну, затем от неё следующую в указанном направлении, от неё следующую в новом направлении и так далее.Иметь такую я бы тоже не отказался - полезная штука для разбора текстов.Или вот, недавно написал уже правда, в функцию передаёшь строку, она возвращает массив, представляющий собой бинарник файла изображения формата PNG, в растр которого "вшита" строка, переданная в параметре.И обратная функция - ей передаёшь в строке путь к файлу PNG, а она возвращает строку, "вшитую" в растр этого файла, если найдёт в файле маркер IMG-архива.Но мне надо усовершенствовать, чтобы в обратную функцию передавать не путь к файлу, а массив с бинарником файла.
Хосспаде, как же хочется кунчика -сисярп программиста. Приходить с работы, а он там в одном фартучке и анальной пробке ждёт тебя. Потом берёшь его за ушко, вытаскиваешь пробку из его попки и начинаешь сочно трахать, пока он тебе про свои коммиты на гитхабе рассказываешь.
Сижу, изучаю шарпы, вникаю в ООП, и охуеваю с количества инфы. ЭТО КАПЕЦ, А ВЕДЬ Я ЕЩЕ ДАЖЕ НЕ ИЗУЧАЛ НИКАКИХ ФРЕЙМВОРКОВ, ПРОСТО ОГРОМНАЯ ГОРА ИНФЫ. Я думал будет проще получать 300кк/сек
>>1549110Шарпы это сложный бэкенд язык со статической типизацией, для легких 300к надо ноду, но на нее нет джунов
>>1548827у меня ONION архитектура, вся бизнес логика спрятанна внутри, а в ней работа с БД. Через входящие параметры запуливать эти куки? Как это вообще работает? >>1548834действия юзера, описочкаМне нужно на каждого клиента вести историю изменения объектов, которые реализованны через методы
Зачем нужен WebApi на проекте? На глобальных, типо соц сетей и прочей дрысни, я это вижу как привлечение аудитории, которые могут/хотят запилить доп. фичи в проект (те же боты в телеге или инсте). Для чего в каких ни будь сайтиках он нужен?И еще, думаю косвенно заденет первый вопрос. Как JS макаки пилят код под backend? Через WebApi? Я не думаю, что проекты на ASP.NET высирают через View-Razor (разве что full-stack), думаю что как раз таки через webApi.Поправьте, если что не так, т.к. всегда писал серверную часть и с UI мало имел дела (за исключением пары высранных проектов в MVC5)
>>1549243>у меня архитектура>Вопрос про основы веба из учебника 8 класса информатики>Как это вообще работает?Главная проблема сярпомакак: дрочите платформу и какие-то паттерны, абсолютно без понимания происходящего
>>1549243>у меня ONION архитектураСука, как же я заорал на всю хату. Что ж у тебя не хексагональная-то, архитектура твоя?
>>1549331>>1549332Этот ресурс создали и поддерживают СКБ Контур. Видео староватые, то тексты и задания обновляются. Кстати недавно новый дизайн сайта запилили. Так что ты не прав.
>>1549243Реализуешь логин на свой говносайт, создаешь базу пользователей, каждому присваиваешь идентификатор, используя его в своих методах для определения отдельного пользователя. Что, блять, сложного в этом?
>>1549331Всё нужное есть у Троелсена, далее ты закрепляешь всё Альбаири, после чего можешь пройтись по классике вида Рихтера. Никакие видеоговнокурсы не нужны, только время потратишь, хуже будет только чтение метанита.
Блять, да как нахуй писать код ебучий. Я вообще не понимаю, мне нужны основные правила, что можно делать, что нельзя. Все обзываются, мне неприятно, как исправлять - непонятно. Я не могу сам догадаться, что так нельзя сука делать, потому что это некрасиво ( допустим огромный мейн)
>>1549462Двачую про Троелсена, купил его, отлично все расписано, читать все подярд не обязательно, некоторые вещи можно пропустить вначале, например манипуляции с родительскими классами типа System.Object,да и самые первые главы про работу компилятора тоже, если ты совсем ньюфаг. Есть кучу примеров, единственное я еще хотел бы упражнения для самостоятельной работы, но их нет, благо я придумал себе пет проджект, на нем и испытываю все новое, что изучаю
>>1549459мне пишут тут через куки это делать. К тому же получается в каждый метод, где нужна регистрация пользователя, нужно передавать POCO пользователя, я правильно понял?
>>1549491Читать лучше в оригинале. >например манипуляции с родительскими классами типа System.ObjectЭтого как раз пропускать нельзя, это основы которые должен знать каждый, как только ты их поймешь, так сразу легче будет понимать всё остальное.
>>1549540Нет, для вката она не совсем подойдёт, так как 2013 года и код в ней может быть местами устаревший. Начинать лучше с Троелсена, а её использовать для закрепления материала, потому что примеров там много и они все годные и интересные.
>>1549539Понятное дело лучше, но когда у тебя уровень А1 как у меня, смысла нет вообще, я буду через слово искать в словаре. Инглиш стараюсь в местах попроще подтянуть.
>>1549260Так Web-макака - как раз ты, раз не понимаешь, зачем web api нужен.Очень просто: 1. для команд, где фронт и бэк разделены, например, где фронт пилят на Angular. 2. Для интеграции с дургими системами, например, ваша CRM-система находится в облаке (bitrix-24), к тебе с сайта падает заявка в базу, как ты ее отправишь в CRM? через Web Api, который разработчики CRM-системы предусмотрительно для тебя сделали.
>>1549919>Web-макака - как раз ты, раз не понимаешь, зачем web api нужен.Я же не веб макака, чтобы мне такое знатьЭнивей, спасибо за ответ
>>1549243в этом могут помочь события твои методы могут публиковать события когда пользователь меняет сущностимодуль записи изменений слушает события и сохраняет ихразумеется, вместе с изменениями событие должно будет содержать объект или айдишку пользователяhttps://martinfowler.com/eaaDev/EventSourcing.htmlне совсем твоё но прочесть стоит
>>1550304Спасибо, кэп, но нет:>Любое эквивалентное ему не подходит>Лол, лаба3?Хуже используемая в проде либа генерит разметку, разбирая экспрешн три
>>1550301я суть понимаю, как это реализовать, но как правильно - нет. Поэтому и обратился к анону. По сути можно и входящим параметром передать POCO usera, где по полям записывать данные, но мне нужна была та практика, которая считается эталонной (правильной).Энивей, спасибо за совет
Может кто-то сталкивался. Есть WPF окно, в нём есть ComboBox, ItemsSource которого привязан к List<T>. При изменении этого листа, информация DropDown меню обновляется ровно до тех пор, пока его не открыть. При этом проблема только в визуальном обновлении, если закрыть окно и открыть его заново, то вся добавленная информация отображается как надо.
>>1550373В общем, решил сам. Надо было в классе делать не List<T> а BindingList<T>, но так как класс уже сохранён и если сделать данное изменение, то он не загрузится, то пришлось делать костыль вида: foreach (var win in App.Current.Windows) { if (win is WindowWithComboBox cbw) { cbw.CmboBox.Items.Refresh(); } }
Короче, поясните, 3к добавлений записей в минуту в EF core это нормально? Просто я думаю что это как-то ну слишком медленно, а если это не нормально и я обосрался, то как искать из-за чего так медленно?
Ребятушки, смотрите, я делал примерно так:while(client.Online){await ReadAsync(buffer);var response = await handler.ParseAndMakeResponse(buffer);await WriteAsinc(response.ToBytes());}Предупрежу что это псевдокод, а не настоящий код из моей хуйни.И, в общем, то, оно работает нормально, только вот срань в чем: Если клиентов много и все они онлайн, мой сервер, судя по отладчику, большую часть времени занимается тем, что переключается между тредами, на втором месте стоит как раз этот метод общения. Мне это чет не нравится. Как делают умные люди, если сервер не просто должен запрос-ответ делать, а сохранять открытым подключение с клиентами, которых может быть довольно много?
>>1550423в ненси например вроде рекомендуется что-то подобное, но хуй знает, чот говнявоя бы не велосипедил как сверху уже сказали
>>1550426А я бы и рад, только вот как я могу нормально готовым решением пользоваться, не понимая всего этого? Вот возьму я готовый TCP сервер, сделаю просто обработчик своего супер-протокола, а потом окажется что там какая-то фигня случается, а я не знаю почему и как починить. >>1550433Тут коммуникация заканчивается после приема сообщения. А у меня клиенты - тупой конечный автомат, эмулирующий работу одной железяки, которым нужно чтобы канал все время сессии был открыт.
>>1550445>не понимая всего этого?Для этого книги есть, с примерами. Уверен, что в примерах рассматривается такой вариант. Но нахуй нам книги читать, если можно долбится в стену как баран, используя то, о чём ты не имеешь представления, при этом надеяться, что это представление у тебя появится чудесным образом.
>>1550456Я читал книги, лол. Там в плане голого TCP/IP со своим протоколом как раз все время примеры примерно как у меня, а дальше идет про HTTP и фреймворки для работы с ним, а мне не нужен HTTP, с HTTP любой дурак может, я хочу свой супер-протокол, с блекджеком и шлюхами, без кучи ненужной инфы, при этом чтобы нужная инфа была в форме которую я хочу получить, а не здоровенного пакета с гипертекстом, жейсоном и прочим говном. А все книги по голому TCP/IP для ебучего Си написаны и я нихуя в них не понимаю.
>>1550474Ну вот ты и пришел к правильному логическому выводу - ты выбрал не тот инструмент. Учи Си и изобретай свои велосипеды, у шарпа совсем другое предназначение.
>>1550527Я таки базово знаю си. И с ним проблема в том, что если что-то наебнется, я через месяц об этом через 500 лет узнаю. А писать сразу так чтобы не наебнулось я не умею. Весь мой кодинг состоит из собирания всех возможных граблей и ломания того что работало в процессе починки того что не работало.
>>1550540Суть в том, что весь твой кодинг имеет смысл только в плане обучения, для решения задач уже есть готовые библиотеки и фреймворки.
>>1550445>а потом окажется что там какая-то фигня случается, а я не знаю почему и как починить.System.Net.Sockets - в ней фигня случится? Ты ебу дал? Тем более все баги фиксятся или на их проблему есть решение ты знаешь, где искать>я хочу свой супер-протоколтредом ошибся, додик>>1550540еще один шизоид. "Если сломается..." А если тебя завтра машина собьет, то что?
https://docs.microsoft.com/ru-ru/visualstudio/test/walkthrough-creating-and-running-unit-tests-for-managed-code?view=vs-2015#BKMK_Create_the_first_test_methodЕсли мы снимаем деньги, зачем прибавлять к балансу количество денег?
>>1550474Чего блять? Если у тебя есть реализация своего протокола, то бери TcpClient и гоняй байты через него.
>>1550868Я хочу чтобы было оопшно, чтобы не просто байтики гонять для одного протокола, а можно было, в теории, любой с минимумом телодвижений, чтобы расширяемо и масштабируемо и это вот всё.
Есть метотод, который принимает стоку, и если в ней есть перенос строки, то возвращает часть до переноса, если нет, то возвращает исходную строку. Как можно назвать такой метод? TakeSingleLine, TrimToLineBreaker?
https://github.com/BakaVaka/SuperTcpServer/tree/master/SuperTcpServer/src/SuperTcpServerЭто снова я. Типа решил переписать свой супер сервер. Посидел часика 2 и выдал это. Хуй знает лучше ли так чем было, потому реквестирую кодревью, если кому не лень.
>>1551429поменяй чтоб поддерживал несколько конкуррентных сессийпоменяй чтоб я мог инжектить собственные хендлеры без привязки к твоему Handlerи в продакшен (нет)
>>1551429https://github.com/BakaVaka/SuperTcpServer/blob/master/SuperTcpServer/src/SuperTcpServer/Request.csзапрос сам себя читает и возвращает запрос?у стрима есть метод CopyToAsync(), которым можно скопировать весь стрим сразу в MemoryStream. все эти манипуляции с буферами непонятно.Bytes не будет работать, если не вызван ReadAsync(). это называется temporal coupling и от этого нужно избавляться.вообще не понятен смысл этого класса. это бесполезная обертка, которая не делает ничего.https://github.com/BakaVaka/SuperTcpServer/blob/master/SuperTcpServer/src/SuperTcpServer/Host.csзачем то добавляешь сессии в словарь и они там остаются навсегдавообще много классов, которые не делают ничего. просто пустые обертки, которые просто отправляют все клиенту обратно. это можно заменить одной строчкой.var client = await _listener.AcceptTcpClientAsync();var stream = client.GetStream();await stream.CopyToAsync(stream);
>>1551429>реквестирую кодревью>переписать свой супер сервер>Посидел часика 2Ну и получился у тебя тцпшный хеллоуворлд, чего хотел-то?
>>1551429while((DateTime.Now-startTime).Minutes<10){;}Здравствуйте! Я представитель гугла, как можно с вами связаться? Я бы хотел вам предложить работу старшего ведущего главного программиста за 300МММ/нсек.
>>1551580КопиТу у нетворка не закончится до тех пор, пока стрим не будет закрыт каким либо способом (клоуз/диспоз/ексепшн из-за отвала клиента).
>>1551597https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/generics/generics-in-the-run-time
>>1551653Да тот код будет валится от любого чиха. Автора уже не раз тыкали носом и объясняли, что и почему. Но он продолжает писать херню и бредить про свой проктакол.
>>1551688Ну блин, няша, я понимаю про что ты говоришь, но только вот дело в том, что если писать как вы говорите не получится универсально. В этом проблема, одни протоколы передают заголовком длину, у других конец отмечается разделителем, третьи вообще не предполагают что есть какой-то конец пакета, и коммуникация завершается при разрыве соединения. Я хочу чтобы все это было можно впихнуть в мой супер сервер просто описав протокол(его уровни, какие там данные, каким алгоритмом шифровать и это вот всё) и просто дописывать новые протоколы, не меняя ничего в логики приема реквестов и формировании респонсов, если они нужны. Т.е., условно, чтобы если мне нужно было новый протокол реализовать, я бы мог просто его описать, создать хэндлер и впихнуть его в сессию, и больше ничего не трогать.Неужели ты думаешь, что я не понимаю о чем вы говорите? Блин, все я понимаю, только вот ваши советы подходят для конкретных реализаций, а моя цель - сделать мою хреновину универсальной.Я, конечно, пока не придумал, как это все сделать чтобы мне понравилось. Например, в текущей реализации конкретного протокола(моего супер протокола), я вообще циклов для чтения не делал, у меня там стейтмашина, в которую записываю что при очередной итерации комменикации пришло, у стейтмашины - евент детекции пакета, который слушает хендлер, хендлер при срабатывании - формирует ответ и добавляет в очередь отправки. Таким образом само общение выглядит примерно так:int readed = 0;byte[] buffer = 0;while(!session.Stoped){readed = await stream.ReadAsync(buffer, 0, buffer.Lengnh);sessionStateMachine.addAndParse(buffer,0,readed);while(sendingQueue.Length >0)await stream.WriteAsync(sendingQueue.Dequeue().ToBytes());}}В этой, более новой реализации, я от конкретики пытаюсь отойти. Плюс, меня смущает что сейчас у меня получается стейтмашина еще и сессией управляет(может закрыть ее, если пакет невалидный(слишком длинный, например), когда детектит пакет - отдает его хендлеру, который вообще на хую вертит сессию как свою шлюху, еще и в базу пишет, вообще стейтмашина и хендлер теми еще Ерохиными вышли и в них слишком много логики было и когда я попытался от них наследоваться чтобы другой протокол реализовать, слишком много нового кода пришлось присать, при том что отличие протоколов в наличии шифрования и отсутствии пары уровней).
Посмотрел исходники .net core и заметил что там почему-то using'и внутри неймспейсов вставляют. В чем профит? И почему, если в этом есть профит, студия их все равно засовывают в самый верх исходника?
>>15522052-3 года назад замарин требовал от тебя слишком много знаний специфики обоих платформ, при этом чтобы что-то красивенькое сделать, нужно было слишком много самому писать или ебашить с помощью браузера, лол, в то время как у нативной разработки куча всего было из коробки либо на расстоянии вытянутой руки, и выходило что написать два приложения по времени и затратам было проще чем ебаться с кросплатформенностью замарина. Ко всему, 2 года назад была куча багов внутри самого замарина, которые никто не спешил фиксить. Потом я съебался из той конторы и не знаю как сейчас с замарином дела, но т.к. от тех кто остался я слышал, что в фирме решили таки нанять таки IOS и андроид разрабов, вместо того чтобы ебать замарин, думаю не особо лучше.
>>1552198Такие универсальные штуки уже сделаны - TCP/UDP. А дальше поверх их реализуешь свою логику описав протокол(его уровни, какие там данные, каким алгоритмом шифровать и это вот всё) и просто дописывать новые протоколы, не меняя ничего в логики приема реквестов и формировании респонсов, если они нужны. Т.е., условно, чтобы если мне нужно было новый протокол реализовать, я бы мог просто его описать, создать хэндлер и впихнуть его в сессию, и больше ничего не трогать.
>>1552452Каждый раз заебисто писать как собирать байтики в объект чтобы работать с ними уже в твоем приложении, няша. Хочется чтобы просто описал то как данные должны выглядеть, какие типы пакетов есть и все это, и у тебя при получении таких вот данных рождались объекты нужного вида, с которыми ты уже можешь роботать и логику работы самого приложения строить.
>>1552503это сериализация. и никакие серверы для этого не нужны.вот например декларативная сериализация для любых протоколов https://github.com/jefffhaynes/BinarySerializerхотя я считаю что этого не стоит. гораздо проще наскриптовать решение под конкретную задачу, чем писать какую-то универсальную программируемую систему.новички особенно страданием созданием абстракций систем.
Поясните ньюфаг, а нахуя нужны все эти манипуляции с переопределением и использованием методов System.Object? Какой от этого профит разработчику?
>>1552769ToString - потому что многие стандартные методы используют его для отображения пользователю. Например, вывод в консоль или вывод в контрол WPF/WinForms.Equals для того чтобы стандартные методы и методы библиотек могли правильно сравнивать объекты твоих классов. GetHashCode для того чтобы объекты твоих классов можно было безопасно помещать в хэш таблицы и использовать в качестве ключей словаря.
>>1544228Проще, чем был для меня фронт потому что после ТСа большая часть вещей очевидны сходу. В делегатах и событиях за часок разобрался, хотя итт вон люди по нескольку раз спрашивают эту хуету. Сижу вечерами в качестве развлечения за изучением шарпа пока что.
Встал вопрос накатить бэкенд на что-то типа джавы, потыкал даже в скалу и котлин (и немного вляпался в го), но потом вспомнил что сделали кроссплатформенный ASP.NET Core и чет прям проникся я шарпом.В общем, я решил активно продолжать вкатываться в сей шедевр, но хотелось бы перед всем этим услышать все возможные подводные камни ASP.NET Core на линуксе (если таковые имеются). я программист пуганый, поэтому критику нормально воспринимаю.
.NET Framework 4.0 рулит! Вся хуйня, которая на фреймворках выше - она обратно-несовместима, неполноценна, и непортабельна.
>>1553570>подводные камни ASP.NET Core на линуксеСейчас самому впердолить практически нереально даже моно, приходиться ставить бинарники
>>1553588Ну все вытекающие проблемы из бинарников, бля Заблоаченые блобы со всем, что можно Танцы с бубном, если %либанейм% отсутсвует или тем более что-нибудь динамическое типа glibc неподходящей версииВозможные конфликты зависимостей поставленных одновременно рантайма и сдкОжидание, пока кто-то наконец родит пакет последней версии, победив весь депенденси хеллЭто просто пиздец, учитывая, что все давно опенсорснулось
>>1553596Звучит как-то странно для официальной поддержки, тем более что для МС это официальная кормушка для azure.Можешь реальный пример, а то выглядишь как зеленый.
>>1553643Выглядит как очередная попытка майков поднять обосранные штаны. WPF мёртв, WinForms мёртв, все приложения переделывают в SPAшки, переписывая на ангуляр. В качестве фреймворка для разработки предлагают ебанный Electron, которым пользуются JS макаки (производительность соответствующая). Сделали код опенсорсным когда он уже нахуй никому не нужен, сейчас выкатят какую-нибудь забагованную хуету, ебатся с которой никто не захочет, все будут использовать уже проверенные решения. Даже не знаю на что майки надеятся.
>>1553693Как бы тебе сказать то помягче, десктоп давно уже практически мертв. Что ты там ожидаешь нового? Это уже узкая ниша. В любом случае, залёт хотя-бы части шарп разработчиков на линух, сделает его хотя бы частично юзабельнее.>забагованную хуету, ебатся с которой никто не захочетЭто слияние всех проектов, дотнет становится полностью опенсорс и един.Надеюсь они захватят долю wasm, когда тот станет вменяемым и вопрос о выборе языка перестанет быть актуальным.
>>1553706Не мёртв, если речь идёт о программах, которые работают на маке, линуксе и винде одинаково. А не для десктопа у шарпа есть только бэкенд, в котором он далеко не лидер. > захватят долю wasmwasm это сорт оф мёртворожденная технология. Она очень узкоспециализированная. Почитай блог яндекса на хабре, они пытались переделать свои яндекс.карты на васм, в итоге оказалось, что этого того не стоит. .
>>1553714Да, да, мы все поняли, Шарп не нужен, Майкрософт обосрались, дотнет мертв. Съеби уже из треда, которую неделю срешь, клоун
>>1553714А как же TypeScript? Он сейчас в трендах.Тот же IoT и POS на Винде намного более вменяемый, чем лютый пердолинг с иксами на Линуксе.
>wasmЭто технология, которая позволит писать полноценный апплиухи без реактов и прочей тормозящей херотени. Если кучка программистов пытается сделать что-то с DOM, когда все взаимодействие происходит через js и тормозит как js. То конечно, это вызывает много вопросов.Мне почему-то кажется, что все не до конца понимают зачем это все делают.Кстати уже играются - Blazor.>в котором он далеко не лидер.Да не нужно быть в лидерах, когда ты рвешь всякие говно-спринги в плане производительности. Понимаешь, как получается, jvm - классная технология с устаревшим языком, которая местами обросла низкокачественными решениями.Дотнет достойная технология, с качественными решениями, в которую реально инвестируют немалые ресурсы. осталось только пара балбесов линуксоидов из нулевых, которые не выросли мозгами и вечно воют с маздаем.
>>1553748blazor это хуита, которая интерпретирует .net код и подгружает весь ебаный рантайм для своей работы. У этого нет будущего.Надо ждать когда в wasm завезут сборку мусора, может тогда получится хоть как-то транслировать net код.
Может кто не объяснить, что вообще событие делает? Допустим в данном случае. Нихуя ведь не вызывается, просто this и какой-то пустой EventArgs. Такое ощущение, что просто так написали эти строчки кода. Больше нигде событие и не используется
>>1553817>Может кто не объяснить, что вообще событие делает?вызывает по очереди все методы, ссылки на которые были добавлены к этому делегату.
>>1553916Двачую. Событие УЖЕ произошло. Как оно может что-то сделать, лол? Какие же тупые двачеры пошли.
>>1553919Нихуя не понял. Здесь какая-то хуита. Просто сделали какую-то хуйню чтобы просто так её вызвать
>>1553817Передает объект в метод, который подписан на событие. Ты же не можешь обработчик для каждого отдельного случая предугадать, поэтому у тебя есть event, который передает параметры и принимает методы, которые будут обрабатывать эти параметры в определенный момент времени - в данном случае во время начала/конца/прогресса копирования. Как они это будут делать - их дело, сколько их будет тоже неважно.Удобно это и тем, что обработчиков вообще может не быть, что их можно добавлять, а потом убирать. Вот была бы у тебя программа с прогресс баром, ты бы вставил в метод, где сейчас event, обычный обработчик, который отображает прогресс загрузки файла. В итоге для кастомизации (например, если ты не хочешь чтобы этот прогресс отображался), тебя нужно было делать отдельную переменную, которая проверялась бы каждый раз. Если бы ты хотел отображать загрузку каких-то определенных файлов, то и для этого нужно было делать отдельные переменные-флаги. С событием всё это делать не нужно. Ты просто добавляешь обработчик, когда он нужен и удаляешь его, когда не нужен. Для отдельных файлов тоже самое, при этом для перезаписи логики обработки тебе не нужно лезть в код основного метода в котором это событие вызывается.
>>1553808>когда в wasm завезут сборку мусораНу вот, ты уже и сам понимаешь что wasm не в конечной стадии сейчас.
>>1554293...и местами он будет даже не про html другой вопрос как на это согласился гугл и эпл, так как это будет прямой конкурент мобильным приложениям
>>1554311wasm это не замена, а дополнение. Смысла заменять им мобильные приложения нет, потому что по скорости будет проигрывать. wasm выигрывает только в тех местах, где нужны глубокие и долгие вычисления.
>>1554425Про замену ты сам сейчас написал.Полноценные сайты-приложения, убьют потребность в половине существующих мобильных круд-приложений.В общем, риа-сайты очень невыгодны мобильным вендорам, не зря же флеш и прочие плагины так убивали.
Немного не в тему, но Version controll thread is dead, soОбъясните на пальцах, как работать с Git-ом командой. Везде пишут, что задача проект дробится на задачи и над проектом в одно время работают N человек, которые создают N веток. У меня вопрос: Как мерджить в master, чтобы код добавлялся, но не выпиливал куски другого кода. Объясню еще проще: Если проект разбить условно по версиям:Path1 version = 1.0Path2 version = 1.0Path3 version = 1.0Над проектом работает 3 человека, каждый работает над своим куском. Когда начинаем мерджить в master, то что получается:Мерджит 1 человек свой Path1:Path1 version = 1.1 (условно)Path2 version = 1.0Path3 version = 1.0Мерджит 2 человек свой Path2:Path1 version = 1.0 (тут должен быть 1.1, но когда человек начинал разрабатывать проект, то версия его ветки была 1.0 и соответственно ее и замещает в master)Path2 version = 1.1Path3 version = 1.0Спасибо за ответ
ПЕРЕКАТ >>1555702 (OP) >>1555702 (OP) >>1555702 (OP)ПЕРЕКАТ>>1555702 (OP) >>1555702 (OP) >>1555702 (OP)ПЕРЕКАТ
Привет, ребят, как можно в асп в конфигах (xml которые) сослаться через configSource на файл, который лежит в директории, которая на уровень выше, чем та, где я храню свой конфиг?