Это копия, сохраненная 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Литература вторым постом
1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c#
- 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_compiler
3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# довольно активно развивается, недавно вышел новый компилятор, шестая версия шарпа, и уже активно разработывается седьмая. Весь дотнет понемногу становится опенсорсным, а 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 Essentials
7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C#-6
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код этой шапки: http://pastebin.com/cKKXYArs
Прошлый тред тонет здесь: https://2ch.hk/pr/res/1482351.html#1498035 (М)
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 и анализ дампов памяти в windbg
15. Литература не по шарпу, но так или иначе связанная с языком
C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity
Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
16. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"
17. Что еще нужно знать, чтобы взяли работать за еду?
- SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper
- Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick
- Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун
- Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках
- Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы
- Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST
- Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID
18. Я не умею читать, что посмотреть?
- 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
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 и анализ дампов памяти в windbg
15. Литература не по шарпу, но так или иначе связанная с языком
C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity
Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
16. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"
17. Что еще нужно знать, чтобы взяли работать за еду?
- SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper
- Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick
- Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун
- Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках
- Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы
- Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST
- Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID
18. Я не умею читать, что посмотреть?
- 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
Сообщение от ОПа.
Привет мой дорогой, няшный анончик. В конце 2018 года я вкатился в этот тред в надежде получить знания об этом языке программирования и с огромной страстью накинулся на все ресурсы что были в шапке. Тогда я ещё не знал что это изменит мою жизнь. Так, что я до сих пор нахожусь в эйфории. Я устроился на новую очень хорошо оплачиваемую работу. Мои проекты помогают компании, людям и в целом лично для меня приносят радость уже тем, что я делаю что-то нужное и важное.
Всё это благодаря тебе анончик! Ты сделал мою жизнь счастливой. :3
Зачем здесь аниме и кошкодевочки? Это скорее про всякие Линуксы и прочий фри софтвер, а Майкрософт для серьёзных уверенных в себе мужчин.
>кошкодевочки
>девочки
Но ведь на фото серьёзный и уверенный в себе мужчина, рыцарь ордена и второй человек в государстве!
А я нихуя не вкатился, это энтерпрайз говно, на которое сложно попасть студенту, лучше бы во фронтенд вкатывался, уже бы рубил 3000k/нс
>студенту
>энтерпрайз
А ты чего ожидал? Ясен пень никто не хочет платить 300к в наносекунду работнику, который пол дня проёбывается на парах и берёт кучу отпусков на экзамены.
Что такое StateFull класс? Спросили на собеседовании, я аж подохуел.
Stateful может хранить какое-либо состояние между запросами, соответственно контейнер имеет пул таких бинов и для каждой сессии выделяет отдельный экземпляр.
Ты понимаешь что только что сам себе придумал вопрос, сам на него ответил, сам загорелся и теперь у тебя претензии почему-то ко мне. Ты Ебанутый?
Он тёлка, это прям шаблон бабское мышление. Самой придумать проблему и обьдеться.
>программист обязан сидеть в офисе 24/7
>ты не прав
>иди дворы подметать
>я не ретард я просто троллю /pr/
Ты в курсе что рабочий день 8 часов, иногда и меньше? С чего ты взял 24 часа? И да, если тебе СЛОЖНА сидеть в офисе 8 часов за 300к - пиздуй дворы подметать.
Это ты у нас спец по ответам самому себе.
>ну не 24 а 8 мам ну скажи
Пидорашка у которой работа в количестве измеряется, ты?
В тырпрайзе на поддержке что ты собрался 8 часов подряд безвылазно ебашить?
Начальник или манагер уже выдрессировал, что если он не видит тебя на рабочем месте, то это сразу атятятя к зарплате?
>тырпрайзе на поддержке
А, ты видать бордой ошибся, тут программач, тут Программы делают, а не поддерживают.
Всё правильно, с утра двор подмёл потом бояры наебнул, 8 часов работать не надо.
>Что делать 8 часов на работе
Работать, блядь. Таски сами себя не делают.
Скажи нахуя нанимать чмошника который будет ныть что его работать заставляют, если есть люди которые и приходят на работу работать?
>>1499476
>Как скомпарю все эти изменения + ещё свои некие - выложу кот.
Готово, наконец!
Посему, я просто оставлю здесь это:
https://github.com/username1565/nanoboard/commit/0710cea17d73eb7aadad7c2326897fa52e3c459c
И да, я так и не дождался критики самой идеи НАНОБОРДЫ - от анона: >>1498897
Изливай своё уже, обоссым.
Значит у вас манагеры/лиды проебываются, что человек на работе есть, а задач для него нет. Кайфуй пока не просекли, хули.
На самом деле есть разные методы.
Например Cont improove - подразумевает что у тебя всегда забито всё.
DevOps - подразумевает что ты чинишь только сломанное,
Developer - я тебе дал ТЗ, сделай прогу.
В данном случае человек вообще не вдуплает в энтэрпрайз. Ибо это экосистема. Ты обновил одну прогу, которую юзает финансовый отдел, а там сидел хуй который в 2015 уволился, но он написал скрипт на Excel который импортил из твоей проги, так что ебись. Но таких хуёв 10, а отделов 20! При этом прога завяззана на 10 других прог, пожтому твоё обновление накрыло пиздой международую корпорацию. ЭНТЭРПРАЙЗ СУКА! Тот тролящий пидорас который думает что 8 часов - много, нихуя не работал в энтерпрайзе, он работал в рога и копыта на 15-50 человеки вообще не вдупляет за что синьора называют так и а что дают 300к! Вот блядь за это!
При работе диалога имя файлов записываются как надо, а после выхода из цикла null.
Что я делаю не так?
Не цикл, а условие, конечно же.
Если ты хочешь в static переменную, которая у тебя торчит вне метода что-то записать, то нахуя ты создаешь локальную переменную с тем же именем внутри самого метода?
Что ты вообще пытаешься сделать?
У тебя какая-то фиксация на подметании, хочешь об этом поговорить?
>Почему после вхыода из цикла IF, переменная arrAllFiels зануляется?
Потому что она объявлена внутри цикла.
Не цикла, а условия, конечно же.
Подскажите что не так с кодом работает на половину.
Ввожу данные массива с клавиатуры есть отдельный метод
и потом вот такой код и задание.Работает корректно только если в массиве нет повторения минимального элемента и только одно отрицательное значение.
//Найти номер первого минимального элемента.
public static void FindIndexFirstMinElement(int[] array)
{
int minelement = array[0];
int minindex=-0;
for (int i = 0; i < array.Length; i++)
{
if (array <= minelement)
{
minelement = array;
minindex = i;
Console.WriteLine("min element");
Console.WriteLine(minelement);
Console.WriteLine("index min element");
Console.WriteLine(minindex);
}
}
Как понять первого минимального элемента массива? А есть второй, третий минимальный? А максимальных сколько?
Ну вот массив в нем {0,1,2,1,0,0}
И нужно найти индекс первого минимального элемента.
Хотя в массива минимальных элементов несколько.
Листвы ты лишишься при выполнении первого таска на реальной работе. Пока ты только мастурбируешь и кончаешь.
ты не представляешь, какое количество проектов написанно на джаве, которые так же будут саппортиться десятками лет. К тому же джава не стоит на месте и никто не знает, что будет в следующем релизе
//Найти номер первого минимального элемента.
public static void FindIndexFirstMinElement(int[] array)
{
int minelement = array[0];
int minindex=0;
for (int i = 0; i < array.Length; i++)
{
if (array < minelement)
{
minelement = array;
minindex = i;
}
}
Console.WriteLine("min element");
Console.WriteLine(minelement);
Console.WriteLine("index min element");
Console.WriteLine(minindex);
}
Или нет, array[переменная i] у тебя там есть и это просто макаба сожрала?
Лей на пасту или ideone как нормальные люди
Сожрала
Саня, ты?
Ты даже историю собственного языка не знаешь? Хотя зачем вам, у вас каждые 3 года проект уже переписывать с нуля надо.
Вот весь говнокод значения ввожу с клавиатуры.
Сначала научись нормально изъясняться. Вот тебе метод проверки, все ли элеметы массива одинаковые.
В общем у меня задание вывести на консоль индекс первого минимального элемента массива. Этоя сделал. Но мне еще нужно обработать одно исключение когда в массиве все числа.одинаковые.
Вот как это проверить я хз.
А, так исключение не в смысле exception. Ну так и пиши If(AreTheySame)
{
//показать сообщение
return;
}
Что то не понял.
Добрый день, анон.
Есть проблема - сижу и пишу код в небольшой компании, базовый синтаксис вроде знаю, кое-что понимаю об алгоритмах, но чувствую постоянно какую-то нехватку знаний и компетенции на тезх же собеседованиях. Подскажи пути роста с джуна до уверенного мидла, м.б. книги, курсы, программы. Предвижу - да, читать, конечно, но с чего начать и на что обращать внимание? Заранее спасибо.
>базовый синтаксис вроде знаю, кое-что понимаю об алгоритмах
Этого сейчас достаточно для джуна, что ли?
Так да но вывод получается на каждое значение массива и все равно находит первый элемент как минимальный
Рихтер. SQL дрочи, DI, вырой книги не для начинающих и ебашь-ебашь, leetcode/codewars/codingame в помощь
мимо предыдущий охуевший си-шарп джун
Есть сервер и клиент на C# https://metanit.com/sharp/net/3.2.php
Этот код немного модифицирован так, чтобы принимать много байт в одном сокете, а не создавать кучу других.
Вопрос: Как можно эту хуету использовать в браузере?
Ну, чтобы одно соединение открыть, и приёмо-передавать данные туда, а не открывать кучу соединений ёбанных,
по принципу запрос-ответ.
Слышал что можно как-то Keep-Alive соединение открыть, по HTTP 1.0, только блядь как это кодить сервер этот грёбанный, и как к нему с браузера коннектится - хуй знает... Поясните!
Как ты себе это представляешь?
У каждого треда свой стек по мегабайту.
Есть еще куча где хранится все подряд.
Дальше сам нагуглишь.
Спасибо.
Вот, смотрите что нарыл: https://stackoverflow.com/questions/10200910/creating-a-hello-world-websocket-example
У этого чела какой-то заголовок в консоли выводится, а потом соединение закрывается. Работает, проверял.
Дальше всё по-английски и непонятно нихуя, это всё ещё и допиливать надо.
Есть у кого-нить примеры сервера на C# и клиента на JavaScript?
Ну, чтобы через websockets лишь одно соединение установить, и уже туда, в это соединение - писать и получать инфу...
>историю собственного языка
Это не мой язык, я его не писал. Я на нём писал впервые в 2015 году.
socket и websocket не одно и тоже. А тебе советую взять SignalR и не ебать мозг.
Не знаю, может быть в C# это и не нужно. А в Джаве тогда почему не сделают шаблоны/нормальные дженерики? Там же хуета с преобразованием типов в рантайме, выходит накладно.
Дженериков изначально не было в первой версии жавы, и так как они были введены в язык позже, для сохранения обратной совместимости действуют только на уровне исходного кода, в байт-коде их нет.
Можно.
Но тогда придется переписывать триллиарды библиотек, которыми все пользуются, но в которой этой новой фичи нет.
Ну молодец
>socket и websocket не одно и тоже. А тебе советую взять SignalR и не ебать мозг.
SignalR на Windows XP не ставится, и под .NET 4.0 не билдится, даже версия 1.1.3. Просит какой-то nuget package, отсутствующий.
Поэтому, поставил пока WebSocket Server в виде Fleck2. https://github.com/peters/Fleck2
Сбилидлось нормас, и вроде как даже работает demo.
Как теперь этот WebSocket-сервер в наноборду встроить - ума не приложу.
https://github.com/username1565/nanoboard/issues/5#issuecomment-544768616
>111
Не совсем понял тебя.
Но SignalR версии 1.1.1 - тоже чё-то не билдится. Опять же, по той же причине. Сначала запускается nuget, открывается какое-то соединение, и после этого, соединение разрывается...
Я пока Fleck2 чутое подправил, вроде работает и компилируется.
Вижу при работе demo - одно открытое соединение в фаерволе, и байты передаются по нему одному.
И много соединений не открывается.
>Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core.
Блядь, ну это то можно и исправить уже в шапке. Rider чуть более чем полноценная замена мерзкой студии.
Да.
В книге как-то высрано непонятно, плюс бывают ошибки, которые пока фиксишь теряешь нить нахуя это вообще делается. Отразить че вообще делается на скрине.
Сервисы - это инстансы в DI контейнере приложения. Есть встроенные типа DbContext, но ты можешь туда засунуть любой класс.
По сути мне просто нужно сделать:
1. Либо сервер логинит пользователя и держит его сессию со всеми данными для авторизации. Это реализуемо, если у нас wcf построен на сервисной модели и вызовы между сервисами как бы не связаны
2. Либо север с клиентом договариваются как генерировать секьюрити токен и им сопровождаются все авторизуемые сообщения. Но я пока не смог придумать как это реализовать грамотно.
>1. Либо сервер логинит пользователя и держит его сессию со всеми данными для авторизации. Это реализуемо, если у нас wcf построен на сервисной модели и вызовы между сервисами как бы не связаны?
фикс
1) Как работает эта поебень на первых двух пиках? Я не пишу new Either<>..., а просто пишу через равно сразу или string, или int. При этом даже с варом шарп все понимает. Как бля? Что это за черная магия? мне кажется, она со struct связана
2) Почему на третьем пике оно не приводится, если в конце не дописать toList() или не сделать так:
>return EitherStrict.Right<Response, IEnumerable<Response>>(nextPossible.Right.Where(t => t.Suitable(m, a))
.Select(t => t.Execute(m, c, a, nextPossible)));
?
Упс, первая пикча отклеилась
1. Читай про implicit и explicit операторы, они позволяют производить неявное/явное преобразование типов.
>даже с варом шарп все понимает
не верю. Вар это указание компилятору самому вывести тип переменной, исходя из правой части выражения. Т.е. в е бе\удет стринг. А вот при передаче строки в solve будет произведено неявное (implicit) преобразование.
>она со struct связана
мимо
2. Компилятор говорит, что запрос возвращает коллекцию респонсов, а возвращать метод должен вернуть EitherStrict<Rsponse, IEnumerable<Response>>. Мне не видно от сюда что у тебя там за классы, так что подробности смотри сам.
>$response = json_decode(file_get_contents("https://2ch.hk/VKids.json (М)"), true);
>echo $response[250]["LastName"];
И таким образом имею доступ ко всем данным. И я никак не могу нагуглить работающую альтернативу этому простому и понятному способу на C#. Реквестирую аналог.
И сразу бамп, помогите плиз очень нужно сегодня пиздос....
Ну вот препод мол сказал. Перегрузи мне операторы ">" и "<", чтобы я по списку летал туда сюда. Сам охуел от такого расклада, но сказано сделать.
Так с чего ты решил что тебе нужно сделать унарный оператор? Не вижу этого в постановке задачи
Ну допустим у меня первым параметром будет экземпляр списка, а второй какой будет ? Не могу же я в шарпах передать поток ввода/вывода ?
Бамп вопросу
Делегат?
Тогда, очевидно, твой выбор TcpClient/TcpListener.
Благодарю
> implicit и explicit операторы
спасибо анон, теперь узнал что это такое.
>не верю.
Ты прав, происходит неявное преобразование через implict. Правда я не понимаю, почему оно не приводит неявно тип, если юзать ienumerable, а не list, array и тд.
Число в массив ввожу с клавиатуры
1.Верно ли я нашел минимальный и максимальный элемент массива
2.Почему суммы не считается как надо
Тебе точно нужна сумма всех элементов кроме minElement и maxElement, или все-таки сумма элементов с индексами между minIndex и maxIndex?
Например могут доебаться до того, что я при запиле программы не сделал кучку функционала отдельной библиотекой, чтобы потом можно было её юзать в других проектах. Или например какая-то прога написанная непойми кем вдруг потребоавала изменений буквально неделю назад. Изменения уровня "Поставь один if если переменная будет превышать размер в 70 символов." Сделал@отдал. Претензия "А чего ты не переписал всё под MVVM? А чего ты класы не использовал? А потом ведь поддерживать дубет хреново." Да вы с 2012 её нихуя и так не поддерживали. Задачу я решил? Решил, чё блядь вам ещё от меня надо? Откуда вообще такое вот лезет то? Зачем каждый более менее опытный программист пытается свою парадигму на меня применить? Главное ведь решение задачи, а уже потом чтобы всё было внутренне красиво.
1. неверно
2. даже не стал смотреть
ты начинаешь кодить до того, как поймешь, что и как у тебя будет работать
а потом начинается: я наговнокодил, посмотрите, что там у меня происходит
Да иди ты на хуй!
1) Нет. Сравнивай с минамксэлементом а не с первым в массиве, да и иинициализируй их минмаксинтом.
2) Потомушо ты сравниваешь со значеим минмаксэлемента, а не индексы. Да и вынеси рэндж в фор.
Бля, опять эта хуйня. Когда трапа с оппика выкинете?
Короче, я не совсем понял, нужно ли не считать сумму если массив состоит из одного элемента. Так же не понял, нужно ли считать сумму если maxidx<minidx, просто потому что у тебя в коде алгоритм завершается а в комменте сверху просто: Выведите сообщение. Ну и когда говорится про "между", подразумевается что крайние элементы не нужно считать или нужно, я подумал что нужно. Вооот.
Короче, вот тебе вариант, заваязанный на том как я понял задание. Если я там что-то не так понял, исправишь за 1 секунду.
https://ideone.com/fDAIB3
Потому что ты, еблан, когда-нибудь да уйдешь, а потом придут новые ебланы и им может понадобиться этот говнокод развивать и поддерживать.
Да даже не так. Тебе самому через пару лет потребуется допилить что-то в этот говнокод, отличающиеся от добавления одного 'if', скажем переносить это на какую-нибудь новый модный-молодежный фреймворк. Как думаешь, захочется ли тебе потом переписывать все чуть ли не с нуля, еще и разбираясь, как это говно вообще работает?
>Например могут доебаться до того, что я при запиле программы не сделал кучку функционала отдельной библиотекой, чтобы потом можно было её юзать в других проектах.
Из макаки хотят сделать нормального человека, а она копротивляется. Как мило.
Выносить какие-то общие алгоритмы, части проекта в отдельные файлы/библиотеки - стандарт. Потом и тебе самому, и другим будет проще работать чем по 10 раз один и тот же велосипед писать.
>Изменения уровня "Поставь один if если переменная будет превышать размер в 70 символов." Сделал@отдал. Претензия "А чего ты не переписал всё под MVVM?"
Чего? У тебя задача добавить условие в иф, а к тебе доебываются почему ты архитектуру не переделал? Ты или не договариваешь, или путаешься сам. Или, как вариант, тебя просто вытравить хотят, что неудивительно судя по той хуйне что ты ляпнул в предыдущем предложении.
хуле ты array сравниваешь с array[0], а не с array[minIndex]?
Сколько тредов ты эту задачу пердолишь? Может пора учебник открыть?
Сделай в дочерней метод, который возвращает нужные данные и дергай его из главной.
Так вот, я только недавно узнал что там есть возможность целые конструкции генерировать сокращениями, типа prop, cw и т.д. при том, что еще с 2009 студии начинал. Распробовал эту фишку и она мне понравилась, только вот встроены таких штук маловато оказалось. Можно ли как-то расширить список таких вот штук?
Можно. Гугли сниппеты, описываются xml'ом. Пикрелейтед сниппет для теста.
Спасибо, няша. Когда будет время запилю себе этих снипетов на большую часть штук, которые систематически приходится писать.
Уже какое-то время использую кастомные таргеты и до сих пор не могу выявить как работает, например, robocopy в постбилде взятый с MSDNовского гайда. На одном солюшне всё как часы, на другом потребовалось по-другому оформить пути к директориям, в третьем ебля на ровном месте в ходе чего пришлось другой код ошибки вставлять, и ещё много всякого разного.
И это один только несчастный перенос файлов. Как охватить умом всю систему, чтобы оно не казалось таким рандомом? MSDN тут не сильно помогает, увы.
От всяких там мурриканских профи уловил месседж, что Студия скрывает в себя много подводных на этот счёт, но реально критично это должно быть когда компилится враз порядка 7 и выше проектов (т.к. оптимизация билда может аукаться альтернативным проходом тех же таргетов). Но это явно не случай одного несчастного приложения в котором нужно некоторые косметические вещи сделать, правильно ресурсов притащить дополнительных, обфускацию, итд.
Типичный двач, мажутся говном уже в первой лабе по шарпам
По алгоритму тут уже всё сказали, по кодстайлу вот:
1. В консоль без дела не срать: убери весь вывод в консоли из циклов
2. Вместо даблслэш используй / somecode / для комментов в несколько строк или summary, если это описание работы метода.
А вообще всё это говно с сортировкой превращается в пару строк с помощью Array.Sort(Array)
Лучше, чем у автора
Предусмотрены некоторые исключения, что хорошо. Но слишком много ифов, с набега не въехал в логику работы
Плюс не очень понял, зачем отдавать методам data через ref , но я в чужие дела не лезу. Прописал, значит есть зачем.
Мой вариант таски примерно такой: https://ideone.com/L1Frzn
Приоритет отдал коду в ущерб быстродействию
>>505038
1. Замени возврат значения через out параметры на нормальный возврат через return. Это явно не тот случай, где следует применять out параметры.
2. Передавать массив через ref не имеет смысла, массив - это ссылочный тип, он и так по ссылке передается.
3.
if (left > right)
{
right = left + right;
left -= right;
right -= left;
}
Не нужно менять значения двух переменных подобным образом, с точки зрения производительности выхлопа здесь никакого не будет, а вот читаемость страдает. Кроме того, возможно переполнение right, если right + left будет больше макс. значения инта.
4. Возможно, у тебя какая-то своя схема именования методов, но в C# стандартом является именование всех методов через PascalCase, даже если они приватные.
>>505821
1. Почему метод называется Sort, если никакой сортировки не происходит и метод делает совершенно другие вещи?
2.
>massive
Транслит в коде - нехорошо.
3.
>int sum = new int()
Не вижу смысла явно вызывать конструктор инта, запись int sum = 0 и короче и понятнее.
3. И наконец, самая большая проблема - код работает неправильно.
В строчке
>sum = massive.Where(p => !(p > minElementId && p < maxElementId)).Sum();
целых 2 проблемы. Во-первых, метод Where работает со значениями элементов, не с индексами, а у тебя идет сравнение с индексами. Во-вторых, твой предикат суммирует те элементы, которые наоборот находятся за минимальным и максимальным элементами, а не между ними.
>>505038
1. Замени возврат значения через out параметры на нормальный возврат через return. Это явно не тот случай, где следует применять out параметры.
2. Передавать массив через ref не имеет смысла, массив - это ссылочный тип, он и так по ссылке передается.
3.
if (left > right)
{
right = left + right;
left -= right;
right -= left;
}
Не нужно менять значения двух переменных подобным образом, с точки зрения производительности выхлопа здесь никакого не будет, а вот читаемость страдает. Кроме того, возможно переполнение right, если right + left будет больше макс. значения инта.
4. Возможно, у тебя какая-то своя схема именования методов, но в C# стандартом является именование всех методов через PascalCase, даже если они приватные.
>>505821
1. Почему метод называется Sort, если никакой сортировки не происходит и метод делает совершенно другие вещи?
2.
>massive
Транслит в коде - нехорошо.
3.
>int sum = new int()
Не вижу смысла явно вызывать конструктор инта, запись int sum = 0 и короче и понятнее.
3. И наконец, самая большая проблема - код работает неправильно.
В строчке
>sum = massive.Where(p => !(p > minElementId && p < maxElementId)).Sum();
целых 2 проблемы. Во-первых, метод Where работает со значениями элементов, не с индексами, а у тебя идет сравнение с индексами. Во-вторых, твой предикат суммирует те элементы, которые наоборот находятся за минимальным и максимальным элементами, а не между ними.
Да, действительно, в Where на ночь глядя ерунду написал. Хотел прописать суммирование через одну строку без явного цикла - поспешил
> Приоритет отдал коду в ущерб быстродействию
Зачем лапша из for вместо нормального foreach и бесполезные переменные с крайними элементами?
С for можно узнать текущий индекс элемента без костылей (для возможности вывода в консоли "A[i} = ").
Можно обойтись без переменных, я их прописал, чтобы код легче было читать
>Ссылочный тип не имеет смысла передавать через реф
Мы вам перезвоним
на самом деле в этой ситуации может не имеет, но в целом имеет, не путай ньюфага
> текущий индекс элемента без костылей
Используй List и
foreach (var (item, index) in list.WithIndex())
Эх, так и знал что кто-то доебется до этого.
>Из макаки хотят сделать нормального человека, а она копротивляется. Как мило.
Типичный проект в конторе - переделать XML в текст. Вся прога строк 320 занимает. Щас бы неделю тратить на всякие либы, потом через пол года в них разбираться вместо того, чтобы просто написать прогу за пол дня и пойти обедать. Я не против когда проект огромный и реально есть что делать отдельно. Но ЭТО НЕ ВСЕГДА ТАК РАБОТАЕТ АНОН!
>У тебя задача добавить условие в иф, а к тебе доебываются почему ты архитектуру не переделал? Ты или не договариваешь, или путаешься сам.
Ну да, консольная прога, запустил, нажал кнопку, рад. ПОследний реквест был реально добавить 2 условия уровня if.
Нет просят переписать под UI, чтобы на WPF и чтобы обязательно MVVM. Учитывая что вся прога заняла примерно 5 дней написания и пользоваться будут её исключительно 3 человека из конторы, весьма сомнительно тратить на неё месяц переписывая всё под WPF MVVM. Тем более что работы и так много.
Какой-то непонятный аргумент. Ну как понадобится - так пусть и переписывают? Я тут каким боком? В данный момент понадобилось добавить 1 if и я добавил.
А всякие "'скажем 'потом ядро операционки из этого кода надо будет написать " - вообще шиза последней стадии. Что вообще значит "скажем"? Задача есть или нет? Переписывать какой-то код хуй пойми почему - ну так я вообще тогда могу просто днями сидеть и переписывать всё. Смысле только ноль.
>Как думаешь, захочется ли тебе потом переписывать все чуть ли не с нуля, еще и разбираясь, как это говно вообще работает?
Опять какой-то странный вопрос. Что вообще значит "захочется ли тебе"? Это моя работа, мне за неё деньги платят. Конечно мне захочется, иначе бы я не работал на этой должности.
>потом придут новые ебланы и им может понадобиться этот говнокод развивать и поддерживать.
Такова их работа. Не смогут разобраться - их проблемы. И вообще у тебя аргумент типа "Ух бля в 300 строках разбираться надо!!111"
>Типичный проект
Так блядь тем более сука. Если у вас куча однотипных задач, то выносить обобщенную логику в библиотеки сам господь сука велел. Иди нахуй короче, хуле перед мартыхой расписаться, надеюсь тебя уволят к хуям
>Непонятный аргумент
Блядь ты тупой или троллишь? Ты работать работу пришел, на дядю. Не на себя. А потом КОКОКО А МНЕ КАКОЕ ДЕЛО ДО ТРЕБОВАНИЙ КУДАХ, да такое что тебе за это деньги блядь платят. Хочешь писать как тебе нравится - пиши петпрожект или мути стартап.
Мартыхан пиздец, "я свою часть высрал а остальные ебитесь как хотите с тем что я высрал"
Распиши свою стори. Какие вводные? Как вкатывался? Сколько готовился? Как учился? Что самое сложное было? Сколько времени посвящал? Что на собесе спрашивали?
Моя любимая пикча на эту тему
>выносить обобщенную логику в библиотеки сам господь сука велел.
Сел на стул - написал библиотеку для усаживания на стул.
Пёрнул - написал либу для пердежа.
Пчесал яйцо -написал либу. Вдруг кому пригодится.
Смотришь на коллег у которых по 100 либ на всякую хуйню, кто из них использует свои же либы? Никто. Вот и поговорили.
> Ты работать работу пришел, на дядю. Не на себя.
Вот дядя мне и ставит задачу которую я решаю за пару часов. А всякие двачеры говорят потратить пару недель на написание либ, вместо решения задачи.
Вот, двачую этого адеквата! Самое хорошее решение в данном контексте.
Думал всем этим блядским листам тип entityobject сделать, но нихуя не вышло.
>Какие вводные?
Кун, 25 лет. До этого баловался художествами. Умел в PHP немного в JS на уровне копипасты и сделал пару сайтов на WP.
>Как вкатывался? Сколько готовился? Как учился?
Вкатился примерно в это время (октябрь ноябрь 2018) год назад к вам в тред. Знакомый сказал что примерно через пол года будут искать джуна на должность со знанием C#. Но его захантили в другую контору и в итоге по знакомству устроится не смог. Собственно от него помощи никакой небыло.
Сидел здесь месяца три вылавливая всё что только можно. Прочитал большинство книг шапки. Прорешал всё что было в задачах. Покликал сайты с шапки. Посмотрел некоторые курсы на ютюбе. Внезапно они оказались безсмысленной тратой времени.
Примерно к марту 2019 у меня было несколько проектов уровня чуть больше чем лаба.
>Что самое сложное было?
MVVM самое сложное, вообще не понимаю его профитов относительно маленьких тим. Ещё SOLID - если по отдельности ещё кое как могу притянуть за уши к проектам, то всё вместе пока небыло опыта применить. Наверное поэтому не понимаю.
>Сколько времени посвящал?
Примерно часов 8-10 в день. Благо работа была ненапряжной, админил конторку.
>Что на собесе спрашивали?
MVC, ASP, SQL, очень много про базы данных, вложенные запросы, тригеры, отношения, оптимизации запросов, что вообще-то меня удивило поскольку для меня это казалось что-то уровня "Ты выпускника MIT спрашиваешь про букварь". Админимтрирование немного. C# как ни странно почти не задели. Ну и так, кем работал, какие проекты были, что из проектов было самым сложным и почему. Про PHP спросили потравили анекдотов и баек про него.
ProcessList<T>(List<T> list)
И у таблиц соответственно типы разные, с ними нихуя сделать нельзя, даже join ёбаный.
Всегда используй async/await, в 2019 использовать что-то другое будут только пердолики. Thread вообще говно мамонта - очень медленно, надо следить за потокобозопасностью, за количеством потоков, пердолить то что с асинхронностью работает без лишнего кода. А ещё автоматом лишаешь себя всех асинхронных нововведений, которых в каждом апдейте Core/языка завозят гору.
Ты проблему сформулировать нормально можешь блядь? Что за листы, откуда берутся, что конкретно с ними делается? "Доктор помогите у меня болезнь, ну такая, болезнь организма"
хуй его знает, как называется, тест какой-то по знаниям вышеуказанного.
0. https://github.com/42ama/HeadhunterRuStats - пока учился питону сделал парсер хх чтобы вакансии помониторить. Прилагаю как пример ведения гита, потому что в остальных проектах я хуй на него забивал.
1. https://github.com/42ama/UrlShortener - одностраничник сократитель ссылок, с разрешение коллизий.
2. https://github.com/42ama/Little-Blog-Engine - небольшой блоговый движ, с аутенфикацией и авторизацией, постами и поиском.
3. https://github.com/42ama/Boorger-Shop - онлайн-магазин бургеров с товарами, категориями, корзиной и проработанной админкой для управления всем этим.
Проекты в хронологическом порядке. Скидывал резюме с ними на 4 вакансии, позвали на 2 собеса, после личного собеседования говорили что я неплохо все знаю, дали тестовые - сделал, в итоге на обе вакансии взяли челов с большим опытом.
Так вот вопрос, как думаете, мне сейчас дальше с этим портфолио искать себе место чтобы побыстрее получить опыт корпоративной разработки или сделать ещё один проект, ещё лучше, но потратить на это время и силы? Просто от безделья и сидения на мамкиной шее я потихоньку в мини-депрессию скатываюсь.
Уже пытался зафейкать корпоративную трехзвенку, на двух новых для себя фреймворках wpf+wcf в итоге понял что слишком большую задачу взял, думаю на asp.net'е опять её сделать, параллельно про wpf почитать.
Пиздец треш. Ты сам можешь в этом говнокоде ориентироваться?
> 1. https://github.com/42ama/UrlShortener - одностраничник сократитель ссылок, с разрешение коллизий.
Зачем из рандомного туториала скопипастил в гитхаб?
> 2. https://github.com/42ama/Little-Blog-Engine - небольшой блоговый движ, с аутенфикацией и авторизацией, постами и поиском.
Опять копипаст? Сам не можешь ничего сделать?
> 3. https://github.com/42ama/Boorger-Shop - онлайн-магазин бургеров с товарами, категориями, корзиной и проработанной админкой для управления всем этим.
Выглядит как говно, слепленое студентом за вечер.
> Так вот вопрос, как думаете, мне сейчас дальше с этим портфолио искать себе место чтобы побыстрее получить опыт корпоративной разработки или сделать ещё один проект, ещё лучше, но потратить на это время и силы?
Не думаю что тебя с таким куда-то возьмут, это даже на джуна за еду не тянет.
Говорю как есть. Лучше больше не позорься. Я вообще админ и мне нахуй не надо кодить, но я вижу что ты совсем не понимаешь ничего, когда пишешь
> корпоративной разработки
Естественно тебя могут взять только в такую дыру, где кроме тебя никто не придет на собес. Пилить низкокачественное говно, например, будешь. Опыта тебе не дадут. Ты пытаешься за всё ухватится, но знаний хоть по одной теме ноль.
> от безделья в депрессию скатываюсь
Ты хоть попробовал бы что-то поизучать? Не? Безделье лучше? С начала лета почти пол года прошло. А у тебя в гитхабе кода как за неделю максимум. Знаю я таких работников. Нихуя не знают, нихуя не делают, никуда не стремятся, а потом кто-то виноват им, когда руководство в очко ебет.
Поддерживаю
>>507833
Что поизучать? Спрашивай что хочешь с любых вопрос для джунов, без гугла отвечу. Я в программирование с 0я вкатился, вкатился в теоретические данные по проектированию, вкатился в пару фреймворков на сисярпе, что ещё поизучать?
В 1ом говно код согласен, вчера залез пофиксить баг какой-то сам еле-еле разобрадся.
2, 3, 4 с нуля с идеи сам делал.
На 4ый убил примерно где-то неделю, у тебя какой-том мир слишком идеальный где джуны вкатываются с личной бордой и 5ью рабочими банковскими системами.
Покажи мне хорошие джуновские проекты я посмотрю, получу опыт, постараюсь что-то такое же по качеству сделать. А у меня А - закончились идеи, Б - кончились силы самому себе выдумывать никому не нужную хуйню, а потом её делать.
>думаю на asp.net'е опять её сделать, параллельно про wpf почитать.
Зачем тебе одновременно wpf и asp.net изучать? Выбери что-то одно (asp.net) и забей хуй на второе.
Соглашусь, просто понравилось построение по принципу мввм, хотел поглубже проникнуть
Не удивительно не теперь, почему эта ненужная хуета для даунов, появилась в божественном шарпе. Майки сжалились над умственно отсталыми и добавили.
Для упрощения поддержки и расширения кода, для упрощения написания тестов. Как и любой из паттернов м-в серии, просто я не видел новых фреймоврков на мвц и мвп. В мвп больше писанины по сравнению с мввм, так как больше ручками приходится описывать, а с мвц я только в асп.нете сталкивался и либо он как-то не совсем стандартно там применен, либо(что скорее) я не правильно его в контексте понял.
Можешь ещё за мьютексы и прочую поебень для синхронизации потоков пояснить? на собеседовании спрашивали
> Можешь ещё за мьютексы и прочую поебень для синхронизации потоков пояснить?
Зачем? Под Windows 98 писать код собираешься? Хотя если будет задача сделать простейшую задачу максимальным количеством строк кода и выстрелить себе в ногу во время синхронизации потоков, то Mutex идеально подойдёт.
> на собеседовании спрашивали
Скажи что с 2003 года уже много времени прошло, этим говном зашкварно пользоваться в 2k20.
Я на ASP.NET WEB Api собеседовался, а вопросы были про мьютексы, сложность алгоритмов и степени изоляции транзакций.
Разве не логичнее использовать одну переменную byte, представленную в двоичном виде, вместо того, чтобы использовать восемь переменных bool? Все равно по памяти что байт, что буль занимают 1 байт.
Так и делают, например, когда нужно хранить информацию о возможностях пользователя, например, берёшь 0000 и разбиваешь его на 0 - возможность постить 0 - возможность создавать новые темы, 0 - возможность удалять чужие посты 0 - доступ к закрытым разделам и т. п.
Но в случае C# наверно лучше использовать перечисления. А считать байты это вообще полный долбоебизм, если ты хочешь писать настолько низкоуровневые программы, то тебе не С# нужен, а С++ или С
Поздравляю, ты придумал bitmask
Так делают, но это медленнее.
Иногда ради производительность наоборот хранят булеаны в 32байтных переменных.
В 2k20 в тренде асинхронное программирование. Нет таких задач, когда выгоднее использовать Thread.
А при чем тут Thread? Речь же шла про примитивы синхронизаии. Использование тасков с async/await не отменяет необходимости программисту обеспечивать потокобезопасный доступ к общим ресурсам.
Про контекст синхронизации и потокобезопасные типы слышал? Какая ещё ручная синхронизация в 2k20? Такой ебенью уже нет необходимости заниматься. Недавно ещё и асинхронные стримы завезли, можно из другого потока в основной данные высерать без лишних телодвижений.
> Угу, заставить все выполняться в родительском потоке?
Кто тебе мешает передавать данные в основной поток? Контекст синхронизации вернёт данные куда укажешь.
> Что там есть из потокобезопасных типов для работы с БД?
Зачем? У тебя ввод/вывод асинхронный, пиши/читай из БД откуда хочешь, хоть из основного потока, он же не блокируется.
И если говорить про таски, то там нечего синхронизировать. А ещё таск не обязательно будет в другом потоке выполняться, хуй знает что ты там будешь пытаться синхронизировать. Только ресурсы просрешь изобретая велосипед там, где он не нужен.
>Кто тебе мешает передавать данные в основной поток?
Вот есть у меня серв, на нем висит ~150-200 клиентов, все работают асинхронно на тасках, кто в каком потоке выполняется разруливает среда. Ты предлагаешь всем выполнятся с однопоточным контекстом? Это же ебань.
>У тебя ввод/вывод асинхронный, пиши/читай из БД откуда хочешь, хоть из основного потока, он же не блокируется.
Возвращаясь к серву. Ну вот два клиента сделали дело и данные должны улутеть в БД, и произошло это одновременно. Упс, все идет по пизде без синхронизации.
>там нечего синхронизировать
>таск не обязательно будет в другом потоке
Эм, не находишь противоречий?
> Ты предлагаешь всем выполнятся с однопоточным контекстом? Это же ебань.
Так ты должен долгие задачи выполнять асинхронно, а остальное в основном потоке. Плодить потоки без нужды - вот это настоящая ебань, ещё и производительность по пизде пойдет.
> Упс, все идет по пизде без синхронизации.
Лол, нет. С чего ты это взял?
>Так ты должен долгие задачи выполнять асинхронно, а остальное в основном потоке.
И путь три ядра простаивают, пока одно захлебывется от мелких задач? Нет, спасибо.
> Плодить потоки без нужды - вот это настоящая ебань
Таски берут потоки из пула, он их не плодит без надобности.
>Лол, нет. С чего ты это взял?
С того и взял. Например, если использовать EF, то есть вероятность создать две записи с одним ключем, очевидно при сохранении база будет такому не рада. Ты хоть раз писал программу, которя выполняется нелинейно и поряд дейсвий тебе неподконтролен?
Вот еще классический пример. Попробуй закомменть лок на 25ой строке.
https://dotnetfiddle.net/OH9Jgf
> И путь три ядра простаивают
Если ты не понимаешь как работает await, то сходи почитай.
> Например, если использовать EF, то есть вероятность создать две записи с одним ключем
Это проблемы говнокода, а не асинхронности. Опять же, читай как работает контекст синхронизации и await, чтобы не стрелять себе в ногу.
> которя выполняется нелинейно
> поряд дейсвий тебе неподконтролен
Как из первого следует второе?
Потому что говнокод без нормального использования асинхронности. Кто вообще так таски запускает? Естественно оно через жопу работает, ты пытаешься явно непотокобезопасно вызывать метод из другого потока.
>Это проблемы говнокода
Ну так правильно, в нормальном коде будет синхронизация.
>Как из первого следует второе?
Никак, это два разных свойства, на что намекает союз "и". Если б я подразумевал следствие, так бы и написал.
Вобщем пердоль все через один поток, когда понадобятся сам пойдешь изучать синхронизацию но будет поздно.
Напиши потокобезопасно с нормальной асинхронностью. По коду будет все видно.
Напрямую в основной поток писать - ебень какая-то, ты же его блокируешь. Лучше просто возвращай результат, вроде такого
https://dotnetfiddle.net/7NhmEb
Это и быстрее в разы и основной поток не блокируешь. Нормальные люди вычисления делают асинхронно, а результат получают синхронно и пишут его куда надо, т.к. профита от блокировки другого потока нет никакого. Опять же, можно возвращать промежуточные результаты, если надо. Стримить данные можно через yield, если надо сразу в другой поток передавать.
Но и если уж припекло, то хотя бы Interlocked.Increment(ref counter) пиши, чтоб не вешать всё локом.
У тебя все таски выполняются синхронно и последовательно друг за другом. Представь, что ты зашел на двач и что бы отправить пост ты ждешь в очереди, пока другие двачеры закончат работу с бордой. Не очень хорошо. Получается правильная асинхронность - её отсутствие?
>>508396
>Но и если уж припекло, то хотя бы Interlocked.Increment(ref counter) пиши, чтоб не вешать всё локом.
Таки да. И в итоге знать семофоры/локи/мониторы все равно надо и без них можно обосраться.
> У тебя все таски выполняются синхронно и последовательно друг за другом.
Так должна быть цепочка тасков. Суть асинхронности в том, что код выполняется параллельно, но ты контролируешь порядок выполнения. Внезапно await для этого и нужен, а не просто всё подряд через Task.Run() запускать и ебаться с синхронизацией.
> Представь, что ты зашел на двач и что бы отправить пост ты ждешь в очереди, пока другие двачеры закончат работу с бордой.
Так и есть в однопоточных веб-серверах. Все запросы обрабатываются поочерёдно. Для тебя это новость?
> Получается правильная асинхронность - её отсутствие?
Ну то что ты понимаешь под асинхронностью отсутствует, да.
>Суть асинхронности в том, что код выполняется параллельно, но ты контролируешь порядок выполнения. Внезапно await для этого и нужен, а не просто всё подряд через Task.Run() запускать и ебаться с синхронизацией.
Мда.. Суть асинхронности в том, что б не блокировать вызывающий поток (а ты .Result пишешь!). Await нужен, что бы освободить поток (а ты его не вызываешь, тебе даже иде пишет что без него все отработает синхронно) и не ебеаться с коллбэками (компилятор раскрутит async/await в машину состояний и при каждом ивенте завершения таски будет эту машину дергать). В твоем коде, если выкинуть таски ничего не изменется, все равно там нет асинхронности. Даже чуть быстрее все будет.>>508418
>Так и есть в однопоточных веб-серверах. Все запросы обрабатываются поочерёдно. Для тебя это новость?
Так работают синхронные серверы.
>>508418
>Ну то что ты понимаешь под асинхронностью отсутствует, да.
Там её нет ни в одном из пониманий.
> Мда.. Суть асинхронности в том, что б не блокировать вызывающий поток (а ты .Result пишешь!).
А что lock делает?
> Await нужен, что бы освободить поток
У тебя как с английским? await нужен для остановки выполнения текущего метода и ожидания результата таска, .Result делает тоже самое, но глобально, т.к. Main синхронный. Ты точно так же можешь вместо await написать .Start() и не ждать результата, а получить его потом через .Result, когда надо.
> (а ты его не вызываешь, тебе даже иде пишет что без него все отработает синхронно)
Блять. Ты читать не умеешь? Там пишется что метод помечен как асинхронный, но в нем не вызывается ни одной асинхронной операции, т.е. всё в нем выполняется по порядку. Это не значит что сам метод выполняется в том же потоке.
> Даже чуть быстрее все будет.
А тебя не смутило, что вариант с lock аж в 5 раз медленнее моего?
>А что lock делает?
Пускает только один поток в критическую секцию кода.
>await нужен для остановки выполнения текущего метода
Вот именно метода, а не потока, поток освобождается
>Result делает тоже самое
блокирует поток до завершения таски
>Там пишется что метод помечен как асинхронный, но в нем не вызывается ни одной асинхронной операции
Во-первых нет, там написано именно синхронное выполнение, у тебя самого с английским видимо не очень. Во-вторых слово async не дает асинхронности, оно лишь позволяет использовать await. И тогда уже компилятор создаст стэй машину и скорее всего (но не обязательно) код после await выполнится асинхронно.
>А тебя не смутило, что вариант с lock аж в 5 раз медленнее моего?
Конечно, нет. Он другое показывал.
Бывает. Попробуй завтра и потоньше.
> скорее всего (но не обязательно) код после await выполнится асинхронно
Вообще-то обязательно. Он может выполняться синхронно только до момента пока не потребуешь результат.
Если к моменту await'а таска уже завершена, то выполнение продолжится синхронно.
>может выполняться синхронно только до момента пока не потребуешь результат.
Ты опять все напутал.
У тебя логика сломана? Это таск выполняется асинхронно, код после await в любом случае синхронно выполнится.
такой вопрос: учу уже несколько дней С#, решил начать с первой книги в списке - руководство игрока от вайтейкера, читаю на английском, прошёл больше четверти книги, но книга эта мне совершенно не нравится, т.к. автор объясняет будто бы для умственно отсталых, я намного больше времени трачу на перевод его длинных объяснений простейших вещей, чем на само обучение.
Можете, пожалуйста, посоветовать другой учебник, где так же будут описаны все основы сишарпа, который подойдёт для изучения с нуля, но, при этом, не будет вызывать ощущение, что автор - мама-птичка, которая срыгивает мне, как птенцу, переваренную информацию в клюв.
>В книге как-то высрано непонятно, плюс бывают ошибки, которые пока фиксишь теряешь нить нахуя это вообще делается.
Спасибо, я из поста выше, такая же ситуация, полчаса фиксил код, в котором автор даже не удосужился объяснить новые термины. Буду знать, что читать не надо
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/
А протухше книги не читай. Все уже на C# 8 и Core 3.0 сидят.
Потому что это устаревшая хуета для дегенератов, которые хотят получить иллюзорное чувство того, что они изучили C#, при этом на деле не получив никакой полезной информации.
Зачем читать двойной пересказ документации? Если ты хлебушек и не можешь прочитать документацию, то так и напиши. Попробуем отговорить дальше вкатываться, это явно не твоё.
Читай в комментах к его главам. Но большая проблема не в устаревшей информации, а в многочисленных опечатках и кривости изложения. Мутанит словно комнатный сыч, который прочитал троелсена, хуево его понял и теперь пытается пересказать тебе, заикаясь и делая ошибки, при этом не желая эти ошибки исправлять.
Вот, один из примеров (https://metanit.com/sharp/tutorial/11.3.php):
>После создания потока мы передаем метод myThread.Start(number); переменную, значение которой хотим передать в поток.
Что мы, блять, передаём? Метод? Может "методу"? Тогда какого хуя ты пишешь "myThread.Start(number);" - это не передача методу, это вызов метода myThread.Start с параметром number. И мы не хотим "передать значение переменной в поток", мы передаем переменную делегату ParameterizedThreadStart, которую он принимает в качестве параметра, и делаем это через метод myThread.Start
И таких опечаток/кривых изложений у него воз и маленькая тележка, при том, что всё пересказано максимально сжато, без пояснений. При этом само повествование не последовательно, почему-то о рефлексии у него речь заходит в 18 главе, а о доменах приложения только в 22.
В итоге даже машинный перевод статей msdn лучше в сравнении с высером мутанита.
От Троелсена там только примеры. И у Троелсена 1300+ страниц, а у мутанита едва 100 наберётся. Это даже на краткое содержание не тянет.
Сперва Рихтер пишет
> Оператор await не может использоваться в блоке catch, finally или unsafe.
Но потом я вижу вот это
А, бля, все норм, это я в глаза долблюсь, про блок try ничего не написано.
Потому что ты читаешь говнокниги на русском.
говно без задач.
в офф документацию давно завезли интерактивные учебники.
https://docs.microsoft.com/ru-ru/dotnet/csharp/tutorials/
Господа, почему так, подскажите? Почему такое определение не вызывает ошибку на этапе написания, ведь вызов метода подходит к обоим определениям?
Потому что если бы он читал на английском, то это было бы не устаревшее говно в виде рихтера, а какой-нибудь Троелсен, тогда бы твой чувак узнал, что асинхронные операции можно выполнять в блоках catch и finally с момента выпуска С# 6.0
>Parameter lists for each of thecandidatefunction members areconstructed in thefollowing way:
>Theexpanded form is used if thefunction member was applicable only in theexpanded form.
>Optional parameters with no corresponding arguments areremoved from the parameter list
>The parameters arereordered so that they occur at thesame position as thecorresponding argument in the
argument list.
Думаю в этом дело
И как твой "гораздо более меньший уровень" понимать? Слишком подробный разбор и всё на низком уровне происходит или не достаточно деталей и мало углублений? Если нужны подробности и внутренние детали, то читать нужно Альбахири. Если для тебя Троелсен слишком низко уровневый, то тебе не программирование надо изучать, а возле зеркала тренироваться, повторяя "Добрый день, что будете заказывать?"
>или не достаточно деталей и мало углублений
this
>Если нужны подробности и внутренние детали, то читать нужно Альбахири.
Прочту, спасибо за наводку.
а толку ему от английского варианта Рихтера, если последнее издание базируется на C#5.0 и .NET Framework 4.5
А еще в спеке во такое есть
>Otherwise, if Mp is applicablein its normal form and Mq has a params array and is applicable only in its expanded form, then Mp is better than Mq .
Слишком сложно для меня. дальше сам спеки читай.
Потому что выбираться будет метод, который более всего подходит под вызов. В данном случае "a1" будет только в том случае, если явно передавать массив из строк в качестве второго аргумента.
>>509020
> >Otherwise, if Mp is applicablein its normal form and Mq has a params array and is applicable only in its expanded form, then Mp is better than Mq .
Понятно, если вызов подходит только при раскрытии params, такой вариант автоматически имеет меньший вес. Спасибо за пояснения, аноны, я всё понял. Однако лучше бы в таком случае хотя бы предупреждение вылезало, что имеется несколько подходящих методов, но будет вызван только один конкретный.
Может тебе еще предупреждения давать когда ты используешь логические операторы, в зависимости от их приоритета? Ситуация элементарная - если есть какое-то более конкретное определение метода, то будет вызываться оно.
Кста, у тебя же там в обоих методах param, поэтому скорее твой случай
>Otherwise, if Mp has more declared parameters than Mq , then Mp is better than Mq .This can occur if both methods have params arrays and areapplicable only in their expanded forms.
Хотя, как он дойдет до этой проверки, если он отбракует метод на предыдущей. Хм.. надо еще понять что такое expanded и normal form
Потому что компилятор пишет, что метод будет выполнятся в синхронном режиме из-за отсутствия в нём await. Если добавить await, тогда предупреждений не будет, но и теряется смысл. Если всё написано так как должно, то зачем тогда добавлять модификатор async при объявлении функции?
В данной реализации помечать метод async смысла нет.
>но и теряется смысл
Смысл чего? Await тут по сути ничего не изменит (если предположить что эксепшенов не будет).
Await сделает весь метод асинхронным, а суть в том чтобы начало метода выполнялось синхронно для того чтобы не было ситуаций когда проверка выполняется после начала задачи, а не до.
Мы и не бульон обсуждаем, а техническую литературу. У тебя прям идеальный склад ума для работника мака - всё с едой сравнивать.
Пилю на unity игру на основе сетки, и пытаюсь сделать алгоритм для перемещения персонажей.
На данный момент есть алгоритм который находит ближайшую точку по отношению к точки финиша.
Есть видео с метанита, где все это делается, оно подойдёт?
Паласиос, программирование искусственного интеллекта на юнити.
ну типа .net платформа от оконников, да и иде нормального я что-то не могу найти, слышал что для .net надо юзать только визуал
Если писать под .NET Framework то да, придется на винде сидеть.
Есть .NET Core.Качаешь .NET Core SDK. Ставишь VS Code с расширением для C#.
Минус в том что под Линуксом доступны лишь Console и ASP.NET Core проекты.
Как альтернатива, есть еще Rider от JetBrains, но стоит он не малых денег.
Сорян, обосрамс, под мак завезли думал и под линь тоже. Студии нет, но ридер есть.
Похоже у меня двойной обсер. То что они называют VS for Mac это бывший MonoDevelop. Санта-барбара бля.
>Await сделает весь метод асинхронным
лол нет. часть до await выполниться синхронно, await там может помочь поймать исключение. если что я про await перед actualImplementation, которого в коде нет.
Тогда бы не нужно было делать обертку в виде локальной функции, а просто написать проверку перед await Task.Run() в коде выше. Скорее всего Троелсен забыл убрать модификатор async у новой функции внтури которой лежит локальная функция, выполняющаяся асинхронно.
>Тогда бы не нужно было делать обертку в виде локальной функции, а просто написать проверку перед await Task.Run() в коде выше.
Локальна функция не причем, и да можно сделать проверку перед Task.Run(), результат тотже.
>Скорее всего Троелсен забыл убрать модификатор async
Ему было лень писать return, и он отдал это на откуп компилятору.
>и да можно сделать проверку перед Task.Run(), результат тотже.
Ты английского не знаешь и пытаешься предугадать слова автора по коду?
>You can (and should) add checks to the beginning of the method, but since the entire method is asynchronous, there’s no guarantee when the checks will be executed.
Это комментарий к коду с Task.Run()
Перевод: "Вы можете (и должны) добавить проверки в начало метода, но из-за того что весь метод асинхронный, нет гарантии того "когда" эти проверки будут исполняться"
>Ему было лень писать return, и он отдал это на откуп компилятору.
Какой откуп, лол, какой return? Перед actualImplementation? Если его там написать, то компилятор выдаст ошибку.
>Это комментарий к коду
Это комментарий к методу MethodWithProblems. У тебя как с восприятием письменности?
>Какой откуп, лол, какой return? Перед actualImplementation? Если его там написать, то компилятор выдаст ошибку.
Ты тупой или притворяешься? Если написать ретурн, то надо убрать асинк.
>Это комментарий к методу MethodWithProblems. У тебя как с восприятием письменности?
Это и есть метод с Task.Run(), долбоеб. Теперь прочитай свой высер
>и да можно сделать проверку перед Task.Run(), результат тотже.
>Ты тупой или притворяешься? Если написать ретурн, то надо убрать асинк.
Если убрать async то компилятор выдаст ошибку из-за того что return стоит в проверке.
В общем, ты что-то высераешь, то сразу пиши, что долбоеб-вкатывальщик, чтобы люди на тебя времени не тратили.
Короче, как я уже говорил, делаю сервер. Типа решил разбить на две сущности: сам слушатель и сессия, слушатель просто ждет соединения, когда получает соединение создает новую сессию - добавляет ее в словарь(id-сессия) и запускает в новом потоке метод из сессии, где идет общение, когда у сессии соединение окончено(долго ничего не просит(т.к. пока не с реальными девайсами общаюсь, а эмулирую девайсы, просто ставлю счетчик и если в цикле общения n раз пришел пакет только 0й длины, обрываю сессию) либо просто прислало пакет о том, что закончило общение), поток закрывается(ставлю флаг sessionClosed = true), на событие закрытия сессии сервер удаляет из словаря эту самую сессию, у сессии в свою очередь реализован IDisposable в котором метод Dispose вызывается при закрытии сессии.
Так вот, к чему я все это. Я запустил на локальном ПК сервер и он даже без подключенных сессий жрет 9МБ оперативки. А если я эмулирую 1000 сессий(просто в отдельном проекте создаю кучу клиентов которые стучат в порт) он уже аж 130МБ съедает. Я конечно не эксперт, но разве это не много? Или для шарпа это норма?
И еще, судя по статистике работы процессора, большую часть времени процессор не особо жрет ресурсы, по сути скачок происходит когда я разом 100+ сессий добавляю или решаю все сессии разом остановить, во время самого общения даже 1% не потребляется, но при этом в консоли(пока интерфейс сервера делаю в консольке) при вводе команд во время какой-то операции заметна задержка, в связи с этим у меня возникла мысль, что я, наверное что-то делаю не так. Думал что для каждой сессии делать отдельный поток - неправильно, но пробежавшись по нескольким книжкам, увидел, что там примерно так и делают.
Короче, жду советов мудрых и может быть книжек, где будет на нормальном примере показано как нормальный сервер пишется, а не очередное: Ну, бесконечный цикл где при подключении мы получаем сообщение, делаем его большими буквами, отсылаем обратно, закрываем соединение и ждем нового подключения.
Короче, как я уже говорил, делаю сервер. Типа решил разбить на две сущности: сам слушатель и сессия, слушатель просто ждет соединения, когда получает соединение создает новую сессию - добавляет ее в словарь(id-сессия) и запускает в новом потоке метод из сессии, где идет общение, когда у сессии соединение окончено(долго ничего не просит(т.к. пока не с реальными девайсами общаюсь, а эмулирую девайсы, просто ставлю счетчик и если в цикле общения n раз пришел пакет только 0й длины, обрываю сессию) либо просто прислало пакет о том, что закончило общение), поток закрывается(ставлю флаг sessionClosed = true), на событие закрытия сессии сервер удаляет из словаря эту самую сессию, у сессии в свою очередь реализован IDisposable в котором метод Dispose вызывается при закрытии сессии.
Так вот, к чему я все это. Я запустил на локальном ПК сервер и он даже без подключенных сессий жрет 9МБ оперативки. А если я эмулирую 1000 сессий(просто в отдельном проекте создаю кучу клиентов которые стучат в порт) он уже аж 130МБ съедает. Я конечно не эксперт, но разве это не много? Или для шарпа это норма?
И еще, судя по статистике работы процессора, большую часть времени процессор не особо жрет ресурсы, по сути скачок происходит когда я разом 100+ сессий добавляю или решаю все сессии разом остановить, во время самого общения даже 1% не потребляется, но при этом в консоли(пока интерфейс сервера делаю в консольке) при вводе команд во время какой-то операции заметна задержка, в связи с этим у меня возникла мысль, что я, наверное что-то делаю не так. Думал что для каждой сессии делать отдельный поток - неправильно, но пробежавшись по нескольким книжкам, увидел, что там примерно так и делают.
Короче, жду советов мудрых и может быть книжек, где будет на нормальном примере показано как нормальный сервер пишется, а не очередное: Ну, бесконечный цикл где при подключении мы получаем сообщение, делаем его большими буквами, отсылаем обратно, закрываем соединение и ждем нового подключения.
sho
>жрет 9МБ оперативки. А если я эмулирую 1000 сессий(просто в отдельном проекте создаю кучу клиентов которые стучат в порт) он уже аж 130МБ съедает.
> Я конечно не эксперт, но разве это не много?
Ты из какой мухосрани вещаешь, что для тебя 9 и 130 мб это много?
И зачем ты это высрал, дебилоид? Можно полностью метод переписать, вот только сути написанного в книге это не изменит.
Из глубокой. 100к населения.
Но не в этом же суть. Просто мне кажется, что ну не должно быть так, что всего 1000 клиентов, которые отправляют пакеты по 10КБ, их сервер обрабатывает и шлет ответ уже жрут 100+МБ оперативки, а в будущем эта хрень должна минимум 100к клиентов на одном сервере поддерживать, даже если увеличение потребления памяти будет линейным, это все равно буде 10+гигов.
Мне кажется, что я где-то наговнокодил, а ведь по сути еще ни СУБД не присобачил, ни логирования какого-то не сделал, ни интерфейс не запилил, ни всего остального не сделал. Так вот продолжу и будет эта хреновина кучу памяти жрать и тормозить.
> даже если увеличение потребления памяти будет линейным
Так ты посмотри, линейное оно или нет. Скорее всего нет, потому что мусоросборщик начнет просыпаться чаще.
10 гигов на 100к человек это дохуя по твоему? Ну тогда пиздуй из треда в тред байтоебов на плюсах писать
Я не спрашивал зачем там async, я спрашивал есть ли опечатка в книге и если есть, то в каком месте.
>В наших тестах один экземпляр Standard_D1_v2 в Azure (1 vCPU, 3,5 ГБ памяти) мог обрабатывать более 5000 одновременно работающих пользователей без снижения задержки.
>Экземпляр Standard_D3_V2 (4 vCPU, 14 ГБ памяти) обрабатывал более 20 000 одновременно работающих клиентов.
Устроился на работу .NET разрабом. Работаю уже 2 неделю. Собеседовали на C# + ASP.NET + SQL Паттерцы-хуятерны, солид, кишочки шарпа. В итоге, насколько я понял, мне придется поддерживать код на VB.NET + ASP.NET Legacy + работа с SVN и Jira. На шарпе там только новые проекты, и я понимаю что быстро меня туда не пустят.
Я понимаю что обосрамс, и надо перекатыватся. Но даже если отработать там пол года - год кушац хочеца, я могу претендовать на зп не как у человека с 0 опытом шарпа? Чисто за счет прокачанных софт скилов и вообще опыта коммерческой разработки? За условия что я буду пилить свои проекты на шарпах.
Чего ты ожидал?
За бугром сложные схемы отлова кадров на которые влияют еще сотрудничества института по контрактам с мс
Ты выучил это говно находясь в рамках мертвого .net рынка с аутсорсящими белонегроидными шарашкими конторами
Наслаждайся своей энтерпрайзной коммерческой разработкой, вряд ли найдешь лучше
>я могу претендовать на зп не как у человека с 0 опытом шарпа
Что ты как маленький, на новой работе будешь рассказывать, как архитектором работал на этой.
Аааа, это Micro soft, понял.
И зачем ты из контекста вырываешь, шизик? При этом ты его убрал и переписал тело метода добавив хуеты, очевидно, что автор книги бы это заметил и опечатки там либо нет, либо она в чём то другом.
У Кора упор на кросплатформенность и веб-приложения, а .Net это вообще всё что связано с .Net, те и core и framework
Это называется соглашением об именовании. Всё кроме локальных переменных, имён полей и аргументов метода пишется с прописной буквы в ПаскальКейсе, эти три пишутся в камелКейсе со строчной.
Как думаете, знаний из современного учебника javascript хватит, чтобы пройти собеседование?
Ты ничего о соглашениях не писал, будто это майкрософтская прихоть придерживаться подобных соглашений. Большинство внутри майкрософт посчитало, что так удобней и читается лучше, также как и в других случаях с подобными соглашениями.
Именно поэтому все linq запросы выполняются отложенно. Каждый раз перечисляя какое-либо перечислимое, которое состоит из linq запроса, ты получаешь обновленные данные.
+ если хочешь зафиксировать результат, то нужно вызывать преобразовательные методы вида .ToList()/.ToArray()
Вообще не знаю такой проблемы, приведи пример кода.
При этом опу никто не советует что-либо заменить. Но как обосрать - сбегается толпа экспертов мирового уровня.
ОП смешал говно с годнотой, он мутанита то только недавно убрал, не смотря на то, что только редкостный говноед не высказывался о его хуевости. Я и сам стал жертвой мутанита, начав с него, но ничего, плохой опыт тоже опыт, теперь хотя бы есть с чем сравнить.
Посоветовали и убрал. В остальном все сидят с кривым еблетом и морщатся, при этом ничего дельного предложить не в состоянии. Вы вообще опа не теребите лишний раз, уже забыли как пару лет шапка была из ШАРП ТРЕД и рандомной пикчи? Авось уйдёт от вас, будете потом эту платину (сап что прочесть ньюфагу) каждый день читать с горящей жопой.
Алсо не понимаю гона на ментанит, никто же не заставлял его читать. Просто было написано вот есть такой сайт, посмотри.
>Посоветовали и убрал.
Советовали 100 раз, убрал только на 101, все поняли, что советовать смысла нет. Не малую роль играет то, что тут этих "всех" 1.5 анона.
>Алсо не понимаю гона на ментанит, никто же не заставлял его читать. Просто было написано вот есть такой сайт, посмотри.
Так сразу ссылку на гугл вставляй с запросом "C# books, tutorials", почему нет? Советы на то и советы чтобы отсеивать говно, а "вот есть такой сайт, посмотри" ничего о материале не говорит, особенно для новичка, который ничего до этого не читал.
> Вы вообще опа не теребите лишний раз, уже забыли как пару лет шапка была из ШАРП ТРЕД и рандомной пикчи?
Другого от анимешника ожидать и не приходится. После подставы с мутанитом мне вообще похуй на шапку, я просто захожу на https://libgen.is/, ищу материал по теме и самостоятельно выбираю.
Все нормальные посоны уже давно знают про учебники и годные ресурсы.
ОПу и его ЧСВ, а также вкатывальщикам, которые верят, что на дваче могут посоветовать что-то полезное.
У Троелсона из книги в книгу копируется одно и тоже говно, есть разбор CLI, сам мутанит больше похож на книжку того Шилдта. В том же Троелсоне разобрано вообще не все, про отражение сказано мало, так что читайте Рихтера.
Ну шизик. Нет там опечатки, читай по буквам, если тяжело воспринять сразу. Async там нужен только для того, чтоб не писать ретурны. Как сделать тоже самое, но без асинка, а с явными ретурнами я тебе показал, раз для тебя это оказалось слишком тяжело.
Из треда в тред пишут почему мутанит говно, даже в этом треде написано почему он говно, но долбоебы (а скорее долбоеб) продолжает спрашивать "ЧЕМ МЕТАНИТ ПЛОХ!?!?!?!".
>У Троелсона из книги в книгу копируется одно и тоже
И добавляется новое. Чем это плохо? Он объясняет всё хорошо и без лишних подробностей, именно поэтому с него и нужно начинать, после него у тебя в голове останется хороший пакет знаний, благодаря которым можно переходить на более детальное изучение и начинать делать свои проекты.
>В том же Троелсоне разобрано вообще не все, про отражение сказано мало
То ли дело мутанит, да? С его "изучаем с# за 5 минут, все области". Чего там тебе мало? Обрисовано что это, показаны примеры использования. При этом он чуть ли не в каждой главе пишет, что можно и нужно заглядывать в офф. документацию майкрософтов, если ты хочешь узнать что-то более подробно.
>читайте Рихтера.
Сейчас бы в быстроразвивающемся мире IT советовать говно мамонта шестилетней давности. Не удивительно почему у тебя метанит подозрений не вызывает.
>И добавляется новое. Чем это плохо? Он объясняет всё хорошо и без лишних подробностей, именно поэтому с него и нужно начинать, после него у тебя в голове останется хороший пакет знаний, благодаря которым можно переходить на более детальное изучение и начинать делать свои проекты.
Читал еще год назад какую-то версию Троелсона, по сравнению с Рихтером он очень поверхностен, не вижу какой-то особой разницы с метанитом, кроме разбора CLI.
>Чего там тебе мало?
Я давно уже разбирался в этом дерьме, сейчас уже не вспомню, про что там Троелсон не написал. Но если хочешь, чтобы я полез в залупу, то сейчас могу пройти по тредам и отписать.
>Сейчас бы в быстроразвивающемся мире IT советовать говно мамонта шестилетней давности.
Зато оно сделано подробно, да и в языке не произошло чего-то особого, что делает Рихтера неактуальным, разве что выход .Net Core, но мне норм, ибо я к нему не прикасался и не собираюсь, пока разработка ведется не на нем.
Да и не только отражение, Троелсен не рассматривает, как работают делегаты изнутри, у него мало про уборку мусора написано, про строки, про асинхронку и многопоточку.
Этого даже для джуна не хватит по факту.
>не вижу какой-то особой разницы с метанитом
Разница в детальном объяснении, последовательности, отсутствии перепрыгивания с темы на тему, а также отсутствии желания рассказать всё на 5 страницах текста.
>Зато оно сделано подробно
Для подробного есть Альбахири, как раз его и нужно читать после Троелсена.
>да и в языке не произошло чего-то особого
Произошло C# 6.0, C# 7.0, а это кортежи, оператор is, switch по типам и с условиями when, локальные методы и еще куча годноты о которой твой Рихтер и не знал.
>ибо я к нему не прикасался и не собираюсь, пока разработка ведется не на нем.
Вот и приходим к действительному предназначению Рихтера - книга для будущих ковырялщиков легаси кода, который этот код улучшать не собираются.
>как работают делегаты изнутри
И правильно делает, зачем новичку эта информация, особенно когда есть события и лямбда-выражения о которых будет полезнее знать, чем о том как внутри работают делегаты. При этом у него есть рассмотрение самого IL и упоминание ildasm, которые дадут почву для изучения всех внутренностей, если ты этого так хочешь.
>в языке не произошло чего-то особого, что делает Рихтера неактуальным, разве что выход .Net Core, но мне норм, ибо я к нему не прикасался и не собираюсь, пока разработка ведется не на нем
Overдохуя вакансий на .NET Core 2.0+, рыночек перевернулся на Core, все перепиливают актуальные проекты под Core. И только анону на дваче это нахуй не надо, ибо его контора пишет на монолитном фреймворке. А когда легаси сгорит и его попрут из конторы - тогда и познакомится с Core.
Наес
>Произошло C# 6.0, C# 7.0, а это кортежи, оператор is, switch по типам и с условиями when, локальные методы и еще куча годноты
Учится за день с одной рукой в трусах.
>Вот и приходим к действительному предназначению Рихтера - книга для будущих ковырялщиков легаси кода, который этот код улучшать не собираются
Просто ни с чего сделал вывод, ведь главное говном мазнуть.
>И правильно делает, зачем новичку эта информация, особенно когда есть события и лямбда-выражения
Это и у Рихтера разбирается.
И новичку, видимо, не нужно знать про SynchronizationContext, встретит он ConfigureAwait(false) и все, иди кривую статью на MSDN ковыряй.
>При этом у него есть рассмотрение самого IL и упоминание ildasm, которые дадут почву для изучения всех внутренностей, если ты этого так хочешь.
Да, охуенно, что-то уровня указания на msdn
Ага, охуенно, переквалифицировался, куда деваться, ток вакансий на сам C# раза в 3 больше.
Какие ретурны, долбоеб? Если убрать async и добавить return Task.CompletedTask и return actualImplementation(), функция будет возвращать Task от actualImplementation, в случае если всё оставить так как есть в книге, будет возвращаться Task функции MethodWithProblemsFixed, никто за тебя "ретурны" дописывать не будет.
Зачем ты вообще продолжаешь срать себе в штаны, если написал, что MethodWithProblems и MethodWithProblemsFixed ничем не отличаются?
Ух какой у нас бомбящий шизик в треде завёлся. Не иначе как тебя ментанит в жопу выебал в детстве. Иначе и не обьяснить этого хейта.
>Советовали 100 раз, убрал только на 101, все поняли, что советовать смысла нет.
Советовали РОВНО 1 раз в 4 треде, в 6 уже ссылки небыло. До этого были единичные посты "Ой чот мне лично ментанит не нравится". Хотя тут таких постов сотни про любой ресурс. Возьми хоть дебила который Visual Studio хейтил потому-что на мак не мог ссылку найти. Оп таких дятлов не слушает, я тоже и тебе советую.
Шизикам не похуй. Каждый тред тут человек 5 пытаются говорить с пастой 2016 года.
>Просто ни с чего сделал вывод, ведь главное говном мазнуть.
Вывод сделан с того, что на момент написания рихтера был только C# 5
>Учится за день с одной рукой в трусах.
Сразу видно юного падавана мутанита. У того весь C# за один день с рукой в трусах учиться.
>И новичку, видимо, не нужно знать про SynchronizationContext, встретит он ConfigureAwait(false)
Для этого и есть книги за авторством Альбахири, от которых не воняет стариками типа рихтера. И новичку это действительно не нужно, новичку такая информация только помешает, потому что он на ней зависнет.
>иди кривую статью на MSDN ковыряй.
Проблемы быдла, который в 2к19 не знает английского, никого не волнуют, это правда.
>Да, охуенно, что-то уровня указания на msdn
Это уровень последовательного и уместного повествования. Сначала читаешь Троелсена, потом читаешь Альбахири или про какие-то конкретные области, которые тебя интересуют.
>Не иначе как тебя ментанит в жопу выебал в детстве.
Может это он тебя выебал и сейчас у тебя Стокгольмский синдром из-за которого ты из треда в тред его защищаешь?
>Советовали РОВНО 1 раз в 4 треде, в 6 уже ссылки небыло.
Его тут каждый тред засерали, либо упоминали его в ироничном контексте, но у тебя то конечно всё учтено, прям до раза. Наверно и номера постов записаны, лол. Я даже лично расписывал по полочкам, тыкал носом в дерьмо метанита, но после этого он продолжал висеть в шапке.
Хотя понятно, ведь любой совет можно списывать на "Ой чот мне лично ментанит не нравится", а потом еще и в пример какие-то случае с макоглиномесами приводить.
>ты из треда в тред его защищаешь?
Лул, я вообще впервые в треде про него пишу. Как впрочем и вообще впервые за 4 треде тут что-то пощу. Но видать тебе говна в жопу капитально залили, раз такая реакция. И видать каждый тебя спрашивает чё ты так бомбишь от него. А ты и перестать не можешь бомбить, видать от того что необучамый.
>Его тут каждый тред засерали, либо упоминали его в ироничном контексте,
Пруфы ты конечно не сможешь првести, ай как жаль...
>но у тебя то конечно всё учтено, прям до раза.
Ахуеть расчёты досчитать до одного! Рокет саенс, не иначе.
>лично расписывал по полочкам, тыкал носом в дерьмо метанита, но после этого он продолжал висеть в шапке.
Если ты это не писал ответом в оп пост - какие претензии? Ну бомбит кто-то про то что сайт не нравится. Бомби дальше, может тебе бомбить нравится, я не осуждаю.
А вообще я не понимаю к чему ты этот срачь устроил снова. Метанита в шапке нет уже несколько тредов, а жопа у тебя по прежнему горит. Может быть дело всё-таки в тебе?
>Сразу видно юного падавана мутанита.
Ох лул, я в разработке уже 2 года и таки нововведения учил за день.
>У того весь C# за один день с рукой в трусах учиться.
Чувак, после этого тебя только нахуй послать можно, зачем ты кривляешься и пытаешься переврать мои слова? Тебя мама не учила правилу вежливой дискуссии или ты тут типа траллишь?
>Для этого и есть книги за авторством Альбахири, от которых не воняет стариками типа рихтера.
Бля, ну это уже вышка, Рихтер старик, а значит хуевый.
Вот это аргументация.
>Проблемы быдла, который в 2к19 не знает английского, никого не волнуют, это правда.
>БЫДЛА НЕ ЗНАЕТ АНГЛИЙСКИЙ, АРЯЯЯ
Не, дите, ты меня уже смешишь, под кривой статьей на MSDN я подразумевал хуевую статью, внезапно, никаких указаний на то, что она хуевая, потому что написана на английском нет.
>Сначала читаешь Троелсена
Точно с такой же эффективностью сначала можно читать метанит, пиздецовой разницы нет.
Говорю как человек, что читал и Троелсона и метанит и Рихтера и даже Албахари, которого ты считаешь очень подробным, хотя по факту это не так.
>спрашивает про мутанита
>продолжает рассуждать о нём
>А вообще я не понимаю к чему ты этот срачь устроил снова
Ты сам с собой разговариваешь что ли?
>ОП смешал говно с годнотой, он мутанита то только недавно убрал, не смотря на то, что только редкостный говноед не высказывался о его хуевости.
>Ну ты же сам спросил про мутанит!
Тебе только галоперидол. Остальное уже не поможет.
Мутанит это единственное, что ОП убрал, поэтому я его и упомянул, при этом это самый яркий пример говна о котором говорили много, но долго не убирали. Но ты конечно можешь выдумывать шизиков у себя в голове и приписывать это им.
И вообще смешно, когда человек общается на уровне 13-летней залетухи из /b, но зато он АНГЛИЙСКИЙ выучил, а все, кто его не знают, они БЫДЛО, вот он особенный, ибо смог кое-как выучить один из легчайших языков.
Козырял бы ты китайским или японским, то я бы еще это понял, но для изучения английского вообще никаких усилий прикладывать не надо.
Пошли манявры. Ещё раз тебе шизику говорю, что ты сперва САМ его начал в треде форсить, потом сам же бомбанул от него, а потом ещё и попытался на меня стрелку перевести, мол это я его упомянул. Хуя ты шизик!
>Мутанит это единственное, что ОП убрал, поэтому я его и упомянул
Ещё раз тебе вопрос повторю, его убрали. Какие у тебя ещё блядские претензии ебобо?
>при этом это самый яркий пример говна о котором говорили много, но долго не убирали.
Что-то я захожу в прошлый тред и не вижу чтобы что-то просили убрать ещё. Видать это всё в твоём манямирке было. Говорят такое бывает когда ты шизойд.
>Но ты конечно можешь выдумывать шизиков у себя в голове и приписывать это им.
Ясно.
Выгоните вообще этого шизика из нашего уютного тредика, не нравится шапка - пусть пишет свою. Хотя, блджад, кого она вообще ебет, можно и без нее, но пусть будет, если кому-то удобно
>>510598
Он тут в качестве анона который генерирует срачеконтент вокруг которого держится общение. Так как мы на дваче, такое поведение привлекает посетителей в тред. Адекватные аноны пьют чай и общаются друг с другом вежливо. А кому скучно может подразнить шизика и получить интересные посты в ответ. Ну разьве не милота?
>Ну разьве не милота?
Ну свое собственное цирковое животное - это может и хорошо, но поскольку я к вам не так часто заглядываю, ибо вопросов у меня обычно нет, то смотрите сами.
Всех благ.
Заглядывай почаще. Тут иногда такие тёплые беседы ведутся, что даже и просто почитать бывает интересно.
>Пруф? Или опять шиза играет?
>Локальна функция не причем, и да можно сделать проверку перед Task.Run(), результат тотже.
И вот еще относительный высер
>Await сделает весь метод асинхронным //из моего поста
>лол нет. //твой высер
Троелсен пишет, что оборачивать в локальную функцию нужно для того чтобы разбить метод на синхронную и асинхронную часть, но долбоебу с двача, конечно, виднее.
>Вот тут >>510204 я тебе не просто так второй пик прикрепил.
Может ты наконец перепишешь пример из книги и перестанешь выставлять свою тупость на показ? Ты написал return перед внутренним таском, который оборачивается в примере в локальный метод, говоря о том, что если оставить async, то этот return допишет за тебя компилятор. На деле при async он допишет его не перед локальным методом, а в конце метода MtethodWithProblemsFixed. Поэтому твой высер про "лень было прописывать ретурны" выглядит более чем нелепо.
Ясно. Шизик любой пост с упоминанием метанита воспринимает как крясную тряпку и теряет его суть. Я мутанита как пример привёл, но у шизика почему-то пример превратился в претензию, лол. Еще и форсы какие-то придумал. Как я уже писал, мне похуй на шапку, можешь вернуть туда своих мутанитов и одноклассников, это не отменит того факта, что твой мутанит редкостное дерьмо.
>Что-то я захожу в прошлый тред
А, ну раз в прошлом треде нет, значит никогда не было. 10 из 10 логика, долбоеб.
>Как я уже писал, мне похуй на шапку
>Нет, тя не понял мне похуй
>Посмотри вот на этот и ещё 24 поста о том как мне похуй
>Гринтекст не имеет смысла
>Я не шизик, это ты шизик
>А ещё ты семён
>А ещё я скажу про картиночки чтобы было типа я олд
>Я не шизик
>Ну мааааааааам скажи им
>Вы можете (и должны) добавить в начало метода проверки, но поскольку весь метод является асинхронным, нет никаких
гарантий, что такие проверки выполнятся
Если я впишу код проверки перед await Task.Run без этого вашего локального метода, то по идее все выполнится, так как стейт машина следит за последовательностью выполнения.
Я, если честно, не понимаю проблемы.
По идее и в самом таске можно впихнуть проверку данных и отменить операцию.
Ты снова обосрался. Ищи быстрей свой галоперидол.
>Await сделает весь метод асинхронным <-твое
>лол нет. <-мое
>разбить метод на синхронную и асинхронную часть <-троелсен
Видишь ли весь метод асинхронный (твое) и разбить метод на 2 части (троелсен), это разные вещи, потому я и написал нет (мое). Так, что это ты прешь против троелсена.
>MethodWithProblems и MethodWithProblemsFixed ничем не отличаются <- ты приписал это мне
>Локальна функция не причем, и да можно сделать проверку перед Task.Run(), результат тотже <- то, что я писал
Как ты перешел от одного к другому не понятно. MethodWithProblems не делает проверок и валится в асинхронной части, метод MethodWithProblemsFixed делает проверку перед аинхронной части и он не валится. Этого можно добиться по-разному. Это и написан в приводимой тобой цитате.
>>510660
>На деле при async он допишет его не перед локальным методом, а в конце метода MtethodWithProblemsFixed.
Ты все еще еще не понимаешь чем разговор и во что компилятор разворачивает async/await. Да я и не писал куда компилятор вставит ретурн (это было на скрине), я показывал куда вставлять ретурны, если писать без async. Не путай меня со своими голосами в башке.
>>510706
>>510731
Да по-разному можно проверить. Тем более тот пример не из главы про асинхронность, а про локальные методы. Плюс если делать метод с авэйтом, то еще и нормальный проброс ексепшона получишь. Но как я написал, там пример не про это.
>>510740
нет неявного преобразования из дабл в инт. Либо приводи явно, либо пусть метод дабл возвращает.
Разобрался. Число было вставлено из калькулятора (стандартный Windows 10), и он вставил в результат непечатаемые символы. Пришлось перепечатать всю строку, чтобы заработало.
>>510745
> нет неявного преобразования из дабл в инт.
Нет, он остановился на проблеме с отсутствующим ;. До преобразования даже не дошел.
Спасибо, глюк оказался чуднее, чем я думал. Никогда такого ещё не встречал, но поимею в виду.
>Но как я написал, там пример не про это.
В любом случае, то, что он написал, что из-за того, что метод асинхронный проверка может не выполниться - это пиздеж.
>Тем более тот пример не из главы про асинхронность, а про локальные методы.
Это глава как раз про многопоточку и асинхронность и находится оно как раз в части с асинхронкой.
>Плюс если делать метод с авэйтом, то еще и нормальный проброс ексепшона получишь.
Где автор это сам указал? У него конкретно написано, что юзать локальный метод нужно из-за того, что проверка может не выполниться в силу асинхронности метода.
Это неправда.
Вот и читай вашего Троелсена после такого.
выполнится*
Вот что значит отсутствие пояснения про StateMachine.
Этот делегат в Task.Run никоим образом не может выполниться раньше проверки, никакой экзепшен тут не будет выбрасываться, поскольку выход из метода произойдёт прямо во время проверки.
Вообще, эти локальные методы сомнительная штука.
>а суть в том чтобы начало метода выполнялось синхронно для того чтобы не было ситуаций когда проверка выполняется после начала задачи, а не до.
Этого вообще никак не может произойти.
StreamReader и ПотоковыйЧтец. Вот сразу же понятно что оно делает.
Надеюсь в будущем кто-нибудь сделает русскоязычную обертку для всего .Net, чтобы человек не тужился вспоминать: "Что это за Dictionary такой?", а сразу понимал: "Ага, словарь, сейчас в него запишу что-нибудь".
Ну, знаешь ли, когда ты оказываешься в команде, где куча бывших джавистов, сишников и пару человек с асмом и все вы вместе пилите на шарпе, получается такая вот фигня, что джавист привык Map писать и к каждому словарю дописывает Map, UserMap, ClientMap, ListnerMap, а тебе нужно каждый раз из-за этого наводить мышкой чтобы понять что это Dictionary<>, сишник думает что писать что-то в духе "ctr1()"- круто, даже в шарпе и т.д. Писали бы по русски, не приходилось бы даже задумываться о том что это значит. Ну или хотя бы писали одинаково нет, каждый хуй хочет частичку себя, блядь, оставить и чтобы все потом охуели пытаясь понять, что за говно он там понаписал и как, а главное почему, оно вообще работает.
>Видишь ли весь метод асинхронный (твое) и разбить метод на 2 части (троелсен), это разные вещи, потому я и написал нет (мое). Так, что это ты прешь против троелсена.
Троелсен тоже пишет, что так как весь метод асинхронный, то нет гарантии того, в какое время будет выполнена проверка, поэтому мы делаем асинхронный метод внутри синхронного.
> MethodWithProblems не делает проверок и валится в асинхронной части,
Долбоебина тупорылая, троелсен пишет, что можно добавить проверку и в первый метод, но раз он весь асинхронный, то ... идёт то о чём я написал выше. Именно это там и написано.
>Да я и не писал куда компилятор вставит ретурн (это было на скрине), я показывал куда вставлять ретурны, если писать без async. Не путай меня со своими голосами в башке.
Ну да, на скрине одно, а писал ты совсем про другой. В голосину, тебе самому не смешно от своих нелепых оправданий?
Троелсен называет такие ситуации одной из причин, по которой ввели локальные методы. Но вот не задача, Троелсену с его 20-ти летним опытом, про стейтмашин не пояснили оказывается. Не перестаю проигрывать со всезнающего анона.
Троелсену это скажи. Он два примера разных приводит, но оказывается этого никак произойти не может.
>Троелсен называет такие ситуации одной из причин, по которой ввели локальные методы. Но вот не задача, Троелсену с его 20-ти летним опытом, про стейтмашин не пояснили оказывается.
Начнем с того, что ты тупо отсылаешь к авторитету Троелсена, что демагогия и вообще не аргумент.
А теперь тебе вопрос, знаешь, чем отличается await Task.Run от обычного Task.Run?
Окей, скажите мне, как с ним связаться.
Вот вам, блядь, пример.
Если я напишу await Task.Run, то такой случай невозможен.
А знаете почему? Потому что стейтмашина сохраняет порядок вызова кода.
У них тоже проеб по всем фронтам, просто надо читать нормальную литературу, а не Троелсена.
https://stackoverflow.com/questions/37360905/what-is-the-difference-between-task-run-and-await-task-run
>The difference between them, is that in the first example, when Task.Run returns the code which immediately follows that line gets executed immediately(provided no thread switch happened). And in the second example the lines which follow await get executed only when LongOperation completed on some thread provided by the thread pool(DoWork immediately returns when it encounters await).
Да и вообще, что это за аргумент ссаный, ты либо нормально Анону ответь по факту, либо не выебывайся.
Да, чувак, мне есть охуенный смысл лезть в фотошоп, чтобы убедить шизика в треде, что я не Семен.
По факту давай приводи пруфы, что Троелсен не обосрался.
>речь про локальные функции и проверки в асинхронных функциях
>долбоеб тащит стэковерфлоу с Task.Run и await Task.Run
>ПАЧИМУМНЕНАРМАЛЬНА НИАТВИЧАЮТ МАААМ СКАЖИ ИМ!! ТРОИЛСИН ЛОХ!!!
В голосину. Почему ты перескочил с асинхронной функции и локальных функции на await, хотя про него никто и не говорил и не спрашивал? Был скрин из книги авторитетного автора, был конкретный вопрос. Зачем ты сюда лезешь со своей обосранной сракой и своим "вы нихуя не понимаете, троелсен говно, верьте моему шизобреду"? Ты либо опровержение делай, подкрепляя авторитетными источниками, либо нахуй иди и не засоряй тред.
> Был скрин из книги авторитетного автора, был конкретный вопрос
Авторитет автора хуйня, нужно все по факту проверять.
>Почему ты перескочил с асинхронной функции и локальных функции на await, хотя про него никто и не говорил и не спрашивал?
Вообще-то про await говорилось в самой книге Троелсена, у него вызывается делегат через await и сказано, что проверка может выполниться после.
Я же привел пример со стаковерфлоу, где еще два человека, кроме меня, поясняется, что функция вызванная через await выполняется в том порядке, в котором она написана, что как бы подразумевает, что выполниться до какого-либо синхронного кода она не может.
Но тебе, великому чтецу Троелсена, такая логика вообще непостижима видимо.
И я могу закинуть пруфов, просто прочитайте то, как работает конечный автомат и сразу все станет ясно.
>через await и сказано, что проверка может выполниться после.
Да, потому что await делает эту функцию асинхронной, долбоебина ты тупорылая, если ты не используешь await в функции, то она не будет асинхронной. У него и говорилось про то, что в асинхронной функции тебе не известно когда произойдет проверка, поэтому нужно оборачивать ту часть, в которой нет проверки, в локальный метод, а проверки делать в оставшейся части, которая выполняется асинхронно.
В том, что ты привел говорится о том, что выполнение кода не будет происходит дальше await до выполнения задачи которая следует после этого оператора, что вообще никакого отношения к написанному в книге не имеет.
>>510876
Ты так сразу и скажи, что ничего не понял из того что на твоих скриншотах. Еще и в русике всё, а пытаешься на английском что-то читать. Оно и понятно откуда такие пробелы.
>если ты не используешь await в функции, то она не будет асинхронной
Верно.
>У него и говорилось про то, что в асинхронной функции тебе не известно когда произойдет проверка, поэтому нужно оборачивать ту часть, в которой нет проверки, в локальный метод, а проверки делать в оставшейся части, которая выполняется асинхронно
Ты сам себе противоречишь, в асинхронной функции неизвестно, когда произойдет проверка Хотя непонятно, с чего Троелсен это взял, но проверки надо делать в асинхронной части функции и после нее вызывать синхронно функцию из которой вызывается асинхронно делегат.
>В том, что ты привел говорится о том, что выполнение кода не будет происходит дальше await до выполнения задачи которая следует после этого оператора, что вообще никакого отношения к написанному в книге не имеет.
Нет, имеет, поскольку показывает свойство statemachine.
>Еще и в русике всё, а пытаешься на английском что-то читать. Оно и понятно откуда такие пробелы.
Ох лул, доказывай, что русский перевод хуев в этой части или получай мою струю урины.
И как это решает перечисленные тобой проблемы? Джавист будет писать КлиентКарта, шарпист будет наводить мышкой чтобы понять что это Словарь<>. Сишник будет думать что хуй1() – это круто.
Я просто надеюсь на то, что на русском они будут таки руководствоваться здравым смыслом при именовании, а не привычкой. В кодинге же такое дело: тривиальные задачи, коих 95% от работы, люди пишут на автомате, как привыкли. Если заставить всех резко писать на русском, они вынуждены будут хотя бы на секунду задуматься о том, как нужно обозвать переменную и, возможно, таки разум возьмет верх и человек напишет: СловарьПользователи. А потом это войдет в привычку, но уже будет более-менее понятно, что какой кусок кода делает.
>вопрос был по книге и почему Троелсен так написал
Троелсен хуйню написал про то, что асинхронный метод может вызваться до проверки, я даже уже код скомпилировал, чтобы показать, что такого быть не может.
Либо я как-то неверно понимаю случай, когда порядок может измениться и проверка может выполниться после метода, тогда дайте пример такого кода.
Можешь засунуть один метод в Task и из другого вызвать отмену операции.
Создаешь CancellationTokenSource, передаешь из него .Token в метод который нужно остановить, добавляешь в цикл метода либо проверку .Token.IsCancellationRequested, либо .Token.ThrowIfCancellationRequested() , в останавливающем методе при необходимости вызываешь .Cancel у объекта CancellationTokenSource.
https://www.introprogramming.info/wp-content/uploads/2013/07/Books/CSharpEn/Fundamentals-of-Computer-Programming-with-CSharp-Nakov-eBook-v2013.pdf
совсем новичку в программировании или материал слишком устарел?
Стоит, вполне хороший материал по основам. Устаревать там особо и нечему, потому что затрагиваются основы. Прочитай это, а потом можешь переходить на Троелсена или Рихтера.
Да, только я бы посоветовал читать самые основы, потом про многопоточку уже у Троелсона можешь прочитать, ток будь осторожен и все проверяй, Троелсон и напиздеть может.
Ну или у Шилдта.
Про многопоточку нужно у альбахири читать.
Привет шарпики. Кто-нибудь работал с FluentFtp? Срочно нужна помощь.
Краткое описание проекта : WPF на "чистом" MVVM + FluentFtp. Проект типа простого Ftp клиента
Проблема заключается в том что ответ от сервера приходит с разным интервалом от 300 мс до 2 секунд. Ответ в плане получения списка файлов и папок на удаленном сервере.
Я просто оставлю здесь long polling. Погугли.
> я в душе не ебу и нагуглить что-то вразумительное с примерами не могу
Если коротко - загугли ASP .NET Web API.
Да, через ajax можно кидать форму (данные, пикчи и говно) по конкретному пути и получать ответ. Таким образом не только устанавливается связь View-Controller, но и появляется возможность бескостыльно использовать контроллеры как API для любых клиентов, гонять данные и юзать контроллеры без апдейтов страниц и прочее. Годная вещь, рекомендую к изучению.
К слову, если полезешь в Core пробовать - очень советую сразу загуглить, как изменить дефолтный парсер JSON на Ньютонсофтовскую говнину. Дефолтный в Core не умеет в большие данные и крашится к хуям при передаче формы в 8 полей.
>ASP
dependency injection оно же частный случай dependency invercion, пайплайн, cicd, транспорт данных типа rabbitmq, мб кеш redis, тесты обязательно, желательно по bdd, причем не только юниты, можно сквозные писать (тестируют api) и ui тесты на селениуме
di контейнер, ну и пайплайн мидлварей (middleware)
самое лучше упрощение написания тестов - с них начинать
а запрос, 2 кнопки, ну и установленных линукс, ты бы блять его сначала установил, а потом бы вопросы задавал, долбаеб
лол у меня три тачки, на всех райдер и на всех я взломал, но камон 350 баксов в год, работающий дотнетер может себе позволить на лучшую иде в мире
лол перекатывайся пол часа назад просто дотнет каменный век, на коре блазор работает
Очередной долбоеб, который не знает языка, ничего учить не хочет и винит во всём IDE, лол.
Как вообще мое недовольство дефолтным поведении студии при выборе неймспейса связано со знанием языка, лол? Или то что мне не нравится что студия упорно не хочет создавать папки в проекте, а кидает исходники в одну папку, если ты вручную не переключишь режим на работу с папкой, но тогда у тебя пропадает возможность использовать шаблончики, которые таки очень удобны.
Тут дело в неумении пользоваться студией, говорящее о том, что ты ни одной книги нормальной по шарпу не прочитал, следовательно его не знаешь. Начитаются своих метанитов, а потом оказывается, что студия виновата.
class Fraction
{
public int num;
public int denom;
public Fraction() { }
public Fraction(int N, int D)
{
num = N;
denom = D;
}
public int Numerator
{
get { return num; }
set { num = value; }
}
public int Denominator
{
get { return denom; }
set { denom = value; }
}
public static Fraction Plus(Fraction fract1, Fraction fract2)
{
Fraction result = new Fraction();
if (fract1.Denominator != fract2.Denominator)
{
result.Numerator = fract1.Numerator fract2.Denominator + fract2.Numerator fract1.Denominator;
result.Denominator = fract1.Denominator * fract2.Denominator;
}
else
{
result.Numerator = fract1.Numerator + fract2.Numerator;
result.Denominator = fract1.Denominator;
}
return result;
}
public static Fraction Simple(Fraction result)
{
Fraction simpleResult = new Fraction();
int nod = NOD(simpleResult.num, simpleResult.denom);
if (nod != 0)
{
simpleResult.num /= nod;
simpleResult.denom /= nod;
}
return simpleResult;
}
public static int NOD(int a, int b)
{
while (b != 0)
{
int temp = b;
b = a % b;
a = temp;
}
return a;
}
public override string ToString()
{
return num + "/" + denom;
}
}
class Program
{
static void Main(string[] args)
{
Fraction fract1 = new Fraction();
Console.WriteLine("Введите числитель первой дроби: ");
fract1.num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите знаменатель первой дроби: ");
fract1.denom = Convert.ToInt32(Console.ReadLine());
Fraction fract2 = new Fraction();
Console.WriteLine("Введите числитель второй дроби: ");
fract2.num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите знаменатель второй дроби: ");
fract2.denom = Convert.ToInt32(Console.ReadLine());
Fraction result = Fraction.Plus(fract1, fract2);
result = Fraction.Simple(result);
Console.Write("Результат сложения: ");
Console.WriteLine($"{fract1.num}/{fract1.denom} + {fract2.num}/{fract2.denom} = {result}");
Console.WriteLine("Нажмите ENTER, чтобы выйти...");
Console.ReadLine();
}
}
В методе NOD должен производиться поиск наибольшего общего делителя дроби, а в методе Simple, исходя из наличия НОД, должно производиться упрощение. Однако, при запуске программы, независимо от введенных данных, результат сложения выдается как "0/0". Если убрать эти два метода, код работает и всё правильно считает. Не могу понять, в чём проблема. Может кто подскажет.
class Fraction
{
public int num;
public int denom;
public Fraction() { }
public Fraction(int N, int D)
{
num = N;
denom = D;
}
public int Numerator
{
get { return num; }
set { num = value; }
}
public int Denominator
{
get { return denom; }
set { denom = value; }
}
public static Fraction Plus(Fraction fract1, Fraction fract2)
{
Fraction result = new Fraction();
if (fract1.Denominator != fract2.Denominator)
{
result.Numerator = fract1.Numerator fract2.Denominator + fract2.Numerator fract1.Denominator;
result.Denominator = fract1.Denominator * fract2.Denominator;
}
else
{
result.Numerator = fract1.Numerator + fract2.Numerator;
result.Denominator = fract1.Denominator;
}
return result;
}
public static Fraction Simple(Fraction result)
{
Fraction simpleResult = new Fraction();
int nod = NOD(simpleResult.num, simpleResult.denom);
if (nod != 0)
{
simpleResult.num /= nod;
simpleResult.denom /= nod;
}
return simpleResult;
}
public static int NOD(int a, int b)
{
while (b != 0)
{
int temp = b;
b = a % b;
a = temp;
}
return a;
}
public override string ToString()
{
return num + "/" + denom;
}
}
class Program
{
static void Main(string[] args)
{
Fraction fract1 = new Fraction();
Console.WriteLine("Введите числитель первой дроби: ");
fract1.num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите знаменатель первой дроби: ");
fract1.denom = Convert.ToInt32(Console.ReadLine());
Fraction fract2 = new Fraction();
Console.WriteLine("Введите числитель второй дроби: ");
fract2.num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите знаменатель второй дроби: ");
fract2.denom = Convert.ToInt32(Console.ReadLine());
Fraction result = Fraction.Plus(fract1, fract2);
result = Fraction.Simple(result);
Console.Write("Результат сложения: ");
Console.WriteLine($"{fract1.num}/{fract1.denom} + {fract2.num}/{fract2.denom} = {result}");
Console.WriteLine("Нажмите ENTER, чтобы выйти...");
Console.ReadLine();
}
}
В методе NOD должен производиться поиск наибольшего общего делителя дроби, а в методе Simple, исходя из наличия НОД, должно производиться упрощение. Однако, при запуске программы, независимо от введенных данных, результат сложения выдается как "0/0". Если убрать эти два метода, код работает и всё правильно считает. Не могу понять, в чём проблема. Может кто подскажет.
Ну давай, расскажи мне, как сделать так, чтобы студия
1. По дефолту делала неймспейс вида: SolutionName.ProjectName.Folder1.SubFolder1.SubSubFilder...
2. При создании проекта в солюшине по дефолту 1. Создавала папку проекта. 2. Кидала исходники в папку src и затем, при создании папки в проекте помещала исходники в эту папку на диске, не переключаясь между режимами папок и солюшинов.
В методе Simple ты создаешь класс Fraction используя стандартный конструктор, т. е. задаешь полям значения по умолчанию, у int это 0, после чего ты делишь эти нули на то, что у тебя вернул метод NOD. Поэтому у тебя всегда будет выдаваться 0.
И тебе нужно использовать автосвойства Numrator и Denominator или хотя бы сделать поля num и denom приватными, иначе никакого смысла в этих свойствах и полях нет.
Спасибо!
Чем плоха конструкция:
List<byte> buf = new List<bute>();
while(stream.DataAvailable)
{
buf.Add((byte)stream.ReadByte());
}
?
крутик
Медленно
Памяти больше жрёт и по скорости проигрывает.
Кароче я тут уже до строк добрался так что заданиями с цифрами вас заебывать не буду ,да и со строками наверное тоже.В общем подскажите где годной инфы глянуть или как гуглить про строки и работу с ними, сейчас нужна информация как определить тип символа в строке (число, буква, пунктуация и т.д.) Ну а елси вы мне тут чутка распишете про подобные методы и как использовать то я прям вам по Имэйлу тонну нефти скину.
Добрый день. Подскажите тупому, что я делаю не так.
Ориентируюсь вот на этот гайд (https://metanit.com/sharp/windowsforms/1.1.php) как простенькое оконное приложение сделать. Но графического редактора не вылезает, всё перепробовал. Так же не добавляются никакие активные элементы ни в какой раздел, всё серого цвета. Вроде редактор XML слева вывел, но он тоже неактивен.
Как бля сделать то это? Визуал перезапускал, проекты новые создавал - нихуя. Всё неактивно. В отладке окно возникает ясен хрен, но как его отредактировать вне отладки то?
Я нуфаг если что. Подскажите, где у меня косяк.
1 пик - редактирование, 2 пик - запущено.
Xaml открывай, а не cs.
char.IsLetterOrDigit
char.IsPunctuation
char.IsSeparator
и т. д. Открываешь мсдн и читаешь всё про класс char и string.
У меня его походу в принципе нет(стоит 2019 комьюнити бесплатная). Как его скачать и он вообще доступен в бесплатной версии?
В этом году вкатился в IT разработчиком на C#, хотя начинал изучать программирование на Java.
Всё получается легко и интуитивно, мне очень нравится новая специальность.
Теперь вопрос. Я сейчас пишу ПО для фреймворка BPM Online. Бэк - C#, по сути ASP.NET, фронт - JS, БД MSSQL, всё работает на IIS.
В какую сторону развиваться теперь?
Сел писать микросервис .NET + React.
Если верить
https://stackoverflow.com/questions/51390971/im-lost-what-happened-to-asp-net-mvc-5
.NET Framework умирает и будет полностью заменён .NET CORE.
Всё верно?
>.NET Framework умирает и будет полностью заменён .NET CORE.
Нахуй ты стэковерфлоу читаешь, когда есть блог майкрософт? В нём они дали понять, что просто объединят Framework и Core и сделают из него Core 3.0 после чего именоваться всё будет только с окончанием Core. Понятно, что упор будет делаться на Core, так время диктует, но и про Framework никто забывать не будет, просто из названия уберут.
С остальным тебе нужно идти сюда https://2ch.hk/pr/res/1512359.html (М) потому что в этом треде 1.5 анона и все они вкатывальщики, ты не вписываешься в рамки текущего треда.
>вкатился в IT разработчиком на C#
>.NET Framework умирает и будет полностью заменён .NET CORE.
Ты или долбоеб или пиздабол. Одно из двух.
.NET core - на текущий момент не может существовать без .net framework, т.к. по сути - это CLR+FCL+ВНИМАНИЕ! Сам .NET Core, как инструмент веб разработки.
Как блять .NET framework может умереть? Произойдет объединение - скорее всего, т.к. потребность в WPF,UWP,Xamarin etc (who knows what else) может банально отпасть. Кто будет сапортить говно 20 летней давности?
Вот это подростковый выкрик.
Спасибо.
генерики
Два раза щелкнуть по Form1 не пробовал?
На NetCore конструктор ещё не допилен. Но он накатывается в виде плагина, гугли в этом направлении.
Алсо, нахуй на NetCore вообще? На Net Framework выбери.
https://gist.github.com/Hotriden/126f74448cadbdbef5f8eb7cebf94bb8
Как по итогу инициализировать классы с DI? Везде создавать экземпляр интерфейса и передавать в конструктор класса?
А с кором теперь можно собрать портабельное WPF с окошками без необходимости ставить фреймворк? Например чтоб на XP завести без ебли с пердолингом дотнета 4.5?
Нет, ты дурачок. Во-первых, твой var делает твой код еще более нечитаемым чем он есть, во-вторых, конструкция !(counter > 3) ничем не отличается от более простого counter <= 3
>твой var делает твой код еще более нечитаемым
тут не соглашусь, все давно привыкли к вар, да и пишут в иде-хах а не блокнотах
>!(counter > 3) ничем не отличается от более простого counter <= 3
Да, но тогда декремент и сравнение не объединятся в один символ в так любимых местными шрифтами с лигатурами. Признайся, ты же подвис, читая эту строчку? Жаль автоформатирование это поломает.
В контейнере регистрируешь соответствие интерфейсов и классов, настраиваешь время жизни и все остальное. Это место называется composition root. И если всё нормально спроектировано, то контейнер сам будет автоматически передавать нужные объекты в конструкторы.
Спасибо, все прочекаю
Облом?
>все давно привыкли к вар, да и пишут в иде-хах а не блокнотах
Дело не в привычке, а в читаемости кода. Пока не прочтешь то что после = не поймешь, что это булевая переменная. Каждый раз тебе нужно либо читать, либо наводить мышку на var. За такое в продакшене пиздят и обоссывают.
> Признайся, ты же подвис, читая эту строчку?
Нет, я сразу понял, что эту хуйню можно переписать в counter <= 3 и мне стало стыдно за человека, который эту строку написал.
>За такое в продакшене пиздят и обоссывают.
Какая-то у вас контора старперов. У нас наоборот стайлгайд предписывает вар использовать.
>я сразу понял, что эту хуйню можно переписать в counter <= 3
Значит код хорошо читаем. Жаль. Думал мозголомку придумал.
>настраиваешь время жизни
Не совсем понял. Насчет привязки интефейс-реализация это я понял - отдельным NinjectService выносить тригер при запуске приложения.
У меня вопрос в передаче интерфейса через конструктор - получается цепь передачи конструкторов через вложение класса с DI контейнером в другие классы. Как пример из гиста:
Я захочу создать класс объеденяющий самураев, к примеру - Baracks, то и в нем мне нужно будет делать передачу интерфейса IWeapon, т.к. вложение самурая требует в конструкторе этот интерфейс.
Тоже самое при инициализации экземпляра у меня должен быть объевлен интерфейс IWeapon для передачи в конструктор.
Так это системой рекомендовано, не все приложения в рамках этой системы заточены на подобное.
Ты тоже читал плохо, походу. Майки пишут, что будет одна ветка - NET 5. Без какого-либо Core. По-сути, это и есть продолжение Core, он теперь и будет основным. Это как раз Core из названия уберут, его влили в основную ветку.
>>512771
>Я сейчас пишу ПО для фреймворка BPM Online. Бэк - C#, по сути ASP.NET, фронт - JS, БД MSSQL, всё работает на IIS.
Хрена себе, я точно на такую же вакансию недавно устроился. Только учил кресты, в основном. А, ну и еще база MySQL и через их прокладку взаимодействие.
В какой энтерпрайз-сфере работаешь-то?
Нет, достаточно прописать в манифест вот это:
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
А с чего ты взял что я пишу dpiaware приложение? может я просто статистику собираю и мне нужно точное разрешение монитора.
Мне похуй что ты пишешь, я сказал как узнать точное разрешение и что для этого ничего придумывать не надо.
НЕТ ТЫ ПРЕДЛАГАЕШЬ ИЗДАТЬ МАНИФЕСТ ВИНДУВСУ ЧТО МОЕ ПРИЛОЖЕНИЕ НЕ НУЖНО СКЕЙЛИТЬ СИСТЕМНЫМИ ФУНКЦИЯМИ ВИНДОВС ПОТОМУ ЧТО Я ЕГО СКЕЙЛЮ САМ СВОИМ ЗАПАТЕНТОВАННЫМ МЕТОДОМ, а я просто хотел посмотреть разрешение экрана.
Ты просто тупой и не знаешь, что эти настройки можно менять в рантайме, а не только в манифесте. Поменял на dpi aware -> узнал разрешение -> поменял на dpi unaware.
Неужели в макдональдсе всё так плохо, что даже такие долбоебы уже в it лезут?
Может это ты тупой? Везде специально для тебя написано, менять в рантайме - STRONGLY UNRECOMMENDED.
Ты сам это подтвердил своими постами.
>Для чего нужны хешкоды в объектах?
Для того чтобы определять одинаковы объекты или нет, используя хэшкод.
>Почему они формируются в Int32, а не в string с символами?
Потому что string это ссылочный тип, а int32 значимый, нет никаких причин для того чтобы использовать дорогостоящий в плане ресурсов ссылочный тип для хранения хэшкода, да и сравниваться такие хэшкоды будут по ссылке, а не по значению. В общем, хранить в int32 легче и выгоднее.
>Где вообще хешкоды применимы помимо Compare?
Везде где тебе нужно узнать уникальность объекта в сравнении с объектами такого же типа.
А ссышь ты тоже в кровать, ну и что что рекомендуют в унитаз, окно открыл, проветрил, можно дальше спать.
>In .Net Framework Strings are immutable reference types. All .net datatypes has default size except string and user type. So String is a Reference type, because it does not have default allocation size.
Пиздец, походу надо виндуос переустанавливать, ниче не работает.
>Для того чтобы определять одинаковы объекты или нет, используя хэшкод.
Не, я, конечно, могу предположить, что в шарпе такая хуйня.
Но с вероятностью 99.9% ты - тупой хуесос, который сам не шарит, и анонов на дваче наебывает
>Спасибо
Он тебя наебал, мудила
Two objects that are equal return hash codes that are equal. However, the reverse is not true: equal hash codes do not imply object equality, because different (unequal) objects can have identical hash codes.
Что сказать то хотел, дурачок? Или ты просто пукнуть сюда зашел?
>>514260
Я пишу:
>Везде где тебе нужно узнать уникальность объекта в сравнении с объектами такого же типа.
А в том что ты процитировал говорится об объектах в целом, без уточнения типа. Ну и конечно нужно учитывать, что GetHashCode это функция которую можно перезаписывать, и долбоеб вроде тебя может создать тип и перезаписать GetHashCode таким образом, что она всегда будет возвращать одинаковое значение, независимо от состояния объекта, поэтому только на неё нельзя полагаться. Но это уже проблема говнокодеров, а не предназначения функции.
обсер на обсире. Not your day bro
Уебок хэш-код нужен для равномерного распределения по корзинам в хэш-структурах. Единственное к нему (нестрогое) требование - именно равномерность. (Ну и, чтобы у двух одинаковых объектов был один хэш-код, чтобы не положить, блядь, их в разные ебаные корзины)
Если ты используешь хеш-код для сравнения объектов на эквивалентность, ты просто безграмотный хуесос.
Тебе два раза об этом сказали. Вместо того, чтобы почесать в затылке и почитать ЭЛЕМЕНТАРНУЮ теорию, ты продолжаешь с надутыми щеками пердеть в лужу.
Пиздец, откуда в шарпном треде макаки с интеллектом яваскриптера?
Вот кстати хорошая статья про json сериализаторы в 3.0
https://michaelscodingspot.com/the-battle-of-c-to-json-serializers-in-net-core-3/
В голосину с этого подрыва. Где я писал
>используешь хеш-код для сравнения объектов на эквивалентность
Или может я написал, что метод Equals - не нужная хуета, потому что есть GetHashCode?
>Ну и, чтобы у двух одинаковых объектов был один хэш-код, чтобы не положить, блядь, их в разные ебаные корзины
Это я и имел ввиду. Хэш код это всего лишь добавление для Equals и существует он в основном для классов Hashtable и Dictionary<TKey, TValue>.
Если ты не способен понять смысла прочитанного, то не нужно на нормальных срываться, это не поможет твоей проблеме.
>Где вообще хешкоды применимы помимо Compare?
>Везде где тебе нужно узнать уникальность объекта в сравнении с объектами такого же типа.
Мы вам перезвоним.
Не очень то и хотелось...
Или если тебе нужно из массива X взять результат, а потом объеденить его с результатом из массива Y, то можно писать так:
from x in xarray
where x.Length > 3
from y in yarray
where y.Length < 3
select new { x, y};
> Где я писал
>используешь хеш-код для сравнения объектов на эквивалентность
Вот здесь:
>Для того чтобы определять одинаковы объекты или нет
>Это я и имел ввиду.
Но написал совершенно другое.
Я понял. Для тебя не только с# непонятен, но и русским ты не владеешь.
Иди на хуй, короче, уебок.
Сри в мозги таким же пидорам, как ты сам, мне больше неинтересно.
Похоже into мне тоже не подходит, он работает с группами или тоже всей последовательностью, а мне надо между элементами последовательность промежуточный разультат хранить.
На входе последовательность в упакованном виде как приращение относительно предыдущего элемента, надо её распаковать.
Я погуглил, вроде это невозможно, по крайней мере на SO сам скит в похоже ситуации советовал кастомный итератор писать.
хуя ты сеньер Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)
Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value.
ДЕБАГ КОНФИГУРАЦИЮ ПОСТАВЬ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
На чем написан? Какой размер проекта, команды? Какие языковые сборки помимо .NET входят?
Это копия, сохраненная 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.