Это копия, сохраненная 11 июня 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Литература вторым постом
1. Ресурсы:
- https://metanit.com/sharp/
- https://stackoverflow.com/questions/tagged/c#
- https://www.tutorialspoint.com/csharp/
- https://professorweb.ru
- https://habr.com/ru/hub/csharp/
2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- https://ideone.com/
- https://www.tutorialspoint.com/compile_csharp_online.php
- https://rextester.com/l/csharp_online_compiler
3. WinForms или WPF?
Шо то хуйня, шо то - все пацаны на электроне ебашат. Еще есть Avalonia, но пока она сырая. Но если уж хочешь гуй на шарпе, то читай:
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Да, он совершенно прав. Даже микрософт постепенно переходит с шарпа на тайпскрипт. К сожалению, самые крутые языки никому не нужны.
Неправда. C# кое-как развивается, недавно вышла седьмая версия шарпа, и уже активно разработывается восьмая. в ней pattern matching прям как в хацкеле будет! Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант -
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Rider - платная IDE от JetBrains со всем функционалом решарпера и кроссплатформенностю. Если ты богат и сидишь на линуксе/маке, то это отличная замена VS.
Для vim/emacs можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, ставь сразу VS2017 и при установке выбирай все нужные компоненты.
Больше информации тут - 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# 8.0: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код старой шапки: https://pastebin.com/cKKXYArs
Код этой шапки: https/://pastebin.com/cKKXYArs
Прошлый тред тонет здесь: https://2ch.hk/pr/res/1366885.html (М)
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
>я серьезно говорю. У нас тут лес, электрика и все. Софт или сайты никто не делает, максимум их заказывают из братской компании.
Другово ответа не будет. Отрывай жопу от дивана и бегай в поиске вакансий обновляя линкедин.
У тебя просто настрой странный. Никто не прилетит к тебе домой на крыльях и не ебанёт тебя мешком с долларами по голове. Пробуй Москву, пробуй ASP, вакансий по теме - жопой жуй. Причём с релокейшном каждая четвёртая!
Хоть и странно звучит, но я особо не тяготею к москве, мне быть переехать в Новосибирск или какой-нибудь еще большой город, а там уже видно куда дальше
я тоже вкатывальщик но в мск не особо хочу
владивосток или питер если во владе не найду
мск только самый край
Синьёр C#, ASP, JS, Angular, React programmer. Это со стажем приходит. Чтобы совсем не ебануться и головой не поехать приходится прибегать к нестандартным методам программирования.
У нас было 4 репозитория, 75 микросервисов, 5 различных бандлов юнит тестов, 75000 строк кода на C#, ASP core2 и всего такого, всех версий, а ещё JS, немного React, BD на Oracle, бутсрап и SASS. Не то, чтобы это всё было нужно в вебморде, но раз начал кодить на макбуке, то иди в своём увлечении до конца. Единственное, что меня беспокоило — это NodeJS. В мире нет никого более беспомощного, безответственного и безнравственного, чем человек который кодит для этого дерьма. И я знал, что довольно скоро мы в это окунёмся.
Да ты бы и PHPшника поняшил.
А давайте допилим/перепилим - вот этот клиент нанобороды, написанный на С#: https://github.com/nanoboard/nanoboard/releases
По большей части баги клиента нанобороды 3.0 - исправлены тут: https://github.com/username1565/nanoboard/releases
Коммиты - здесь: https://github.com/username1565/nanoboard/network
Может ещё чё-нить добавить, удалить, исправить?
В общем, нужны прогеры (C#, JS), и тестеры, а также ваши предложения/пожелания,
а то с 2016-го года, на этой НЕУБИВАЕМОЙ И НЕМОДЕРИРУЕМОЙ борде - и ни одного коммита!!!
фреймворк - это набор функционала, делающий Х. обычно гораздо бОльший, чем один публичный метод (что делает его, собственно, фреймворком, а не рофлолибой)
платформа .net - это некая нёх, которая позволяет написать тебе на любом (условно) языке что-то и запустить это под любой (условно) средой. ибо .net - это и CLR (рантайм) и IL(язык)/JIT(компилер) для этого рантайма, и BCL (набор либ, фреймворка, и вообще кодовой базы), и статический компилятор, и GAC, и вообще дохуя всего
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) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
>Английский не очень знаю
Пиздуй учить. Английский - даже ссаные третьеклассники его знают на уровне на котором можно прочитать эти книги.
не совсем
Ну реализуют они соответствующие интерфейсы IAuthorizationFilter, также есть классы, типа AuthorizeAttribute, что наследуются от FilterAttribute
Апи нужен примерно такой {"subscribe":"BTCUSD", "lenght" : 1000, "timeframe": 5, "market":"bitfinex"}, получаешь 1к свечей по заданной паре с таким-то таймфреймом и последующие обновления что-то вроде { "table":"candles", "action":"update", "data":{"open":1544564560000, "high":4567, "low":4564, "volumeSell":0, "volumeBuy" :345}} . На сервере будет сидеть полтора анонимуса, следовательно нагрузки мало, таймфреймы будут заранее пропсаны.
1 Сколько такое обойдется?
2 Где искать хрюлансеров?
3 Как происходит оплата?
where T: EventArgs;
Нахуя так делать, в чем фича? Почему просто не прописать EventArgs args?
Делегат public, а не протектед. Или я что-то не понял?
также хочу уехать из мухосрани
Какой bare minimum нужно уметь, чтобы перейти в аспнет.кор веб? Личная страничка, сделанная на коре+ангуляре с простенькой CRM, авторизацией через JWT - пойдёт как пет-прожект?
За плечами два года ковыряния ERP-системы на заводе, портянки SQL-запросов с всякой бухгалтерской хуетенью, кривой нхибернейт второй версии, дотнет 4.0, девэкспресс. Код ревью не было вообще никогда, разве что я пыжусь, читаю всякие Чистые Коды и соблюдаю единый стиль в своих проектах. Тесты пишу и чиню только я - как главный архитектор и идеолог съебал, все остальные дружно забили хуй. В общем, застой, деградация и профессиональная смерть.
Ну так и причем тут фабрика котроллеров тогда?
Вроде как фреймворк от либы отличает не размер, а инверсия управления. У либы ты дергаешь методы, а фреймворк дает тебе точки расширения, за которые дергает он.
Я пока в веб не суюсь, но насколько я знаю .NetCore это новая опенсурсная реализация .Net (не только для веба). asp.net mvc x это асп ориентированная на паттерн MVC (внезапно). Asp net core это реализация асп нет под кор. MVC нужон потому что большая часть проектов сейчас на нем, новые наверно на коре пилят, но все легаси на мвц.
>List<dynamic>
Нахуа? Почему не обжект? Зачем понадобилось хранить в одном списке разнотипные объекты, если потом надо их обрабатывать в зависимости от типа?
>Как правильно
Правильно так не делать.
Потому что я не знаю заранее будет там int, float или string или вообще что-то еще. У меня есть файл примерно вот такой:
ключ0 - Вася
ключ1 - 5.0f
ключ2 - 153
Мне нужно собрать это все в словарь/лист и далее использовать эти значение. Если строка, то вызвать method_string(), если флоат то вызвать method_float() и так далее. Как реализовать-то?
Используй object и приводи к типу. Хотя я больше чем уверен, что для решения задачи тебе вообще не нужен ни объект, ни динамик.
List<object> ...
switch(i)
{
case int myInt: ...
case float myFloat: ...
case strting myString: ...
}
Ты придумал хуйню и теперь пытаешься с ней справиться с помощью еще большей хуйни. Расскажи какую задачу решаешь, ту которая изначально, а не то что ты придумал как решение. А то может оказаться что джейсона пытаешься парсить.
>>379722
Джейсона и парсю. Я же написал выше. Джосн вида:
"stroka0" : "VASYA",
"stroka1" : 12345,
"stroka2" : 0.030f
Заранее я не знаю, какое значение находится в строках. Мне нужно это как-то обработать и если int вызвать method_int() с этим значением, если string то method_string() с этим значением и так далее.
Что за поехавшее апи возвращает неизвестные типы? В поле возраст может быть значение красный? И что ты собрался делать со значениями если ты не знаешь что это за значения? А вообще ставь Newtonsoft.Josn и парси либо сразу в класс (который можно сгенерировать например на http://json2csharp.com/) либо пердоль через JObject и JToken'ы.
>Что еще за myInt, myFloat, myString?
Твой i распакованный в соответствующий тип для дальнейшего использования. Чтобы дальше мог сразу писать MyFunct(myInt), а не MyFunc((int)i).
https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-7#pattern-matching
Нихуя не понимаю. Мне даже визуал студио тоже самое написать не дает. Во всяких же япах без строгой типизации нормально все работает, значит есть механизм конкретный. Вот схуяли я на шарпе не могу сделать if (object.Type() == Type.String).
То есть, без using system.linq, у меня есть методы find, count и еще какие-то, а с ликью добавляются select, where и тд. Как он это делает?
Если не дает значит либо студия старая, либо в настройках старая версия шарпа, нужна версия 7+. Ты можешь сделать так:
obj.GetType() == typeof(string)
>Мне даже визуал студио тоже самое написать не дает
Ты когда её обновлял то? Седьмая версия языка года три поддерживается уже. До седьмой версии можно только через ифы проверять.
if (i is int) {}
else if (i is string) {}
else if (i is float) {}
...
>Как он это делает?
Гугли методы расширения. Если коротко пишешь
public static void methodname(this IEnumerable<T> en, ..
и твой метод будет у всех реализующих IEnumerable
Ты что, ебанутый? Ты что там делаешь? Ты на какой версии вообще кодируешь? Тред манагеры? Охуеть вообще! Знаю я один тред манагер, thread pool называется. Кури TPL, async/await, мб вообще TPL dataflow, хз чё там у тебя. Такое больше не пиши никогда. Про класс Thread забудь.
Чтобы ты имел возможность сделать дженерик для своего кастомного ивент класса и чтобы потом его не распаковывать???
https://ulearn.me/Course/cs2/Vydelenie_klassa_reshenie_2f6c9fc2-5ac4-4025-9d35-c9ece5b7f381
Пиздатый темнокот. Забрал бы себе на аватарку
Код сборки .Net представляет собой промежуточный код, который интерпретируется на лету в команды конкретного процессора средой CLR, по типу кода Jav-ы исполняющегося на виртуальной машине. То что код должен выполнятся с помощью прослойки в виде CLR делает .Net чем-то большим, чем набором языков, фреймворком или набором либ. Для описание всей совокупности инфраструктуры на которой строится .Net и был использован этот ебнутый абстрактный термин,который хуй где еще встретишь. Короче, под этим понимается вот это вот все что придумано для того чтобы кодить на шарпике.
Этот прав
Чтобы рационально использовать ресурсы, чтобы абстрагироваться от потоков. Он создал руками 16 потоков, чтобы они 95% времени ничего не делали, занимали память, постоянно бились в переключении контекста. При этом ядер у него 2-4. На пике лютый говнокод и фор луп там никак не поможет.
Куда развиваться? В сторону .Net Core смотреть, или может Unity3d? Поясните, как там с рынком труда в игропроме?
Ещё хочу почерпнуть математику, но ещё одно ВО не хочу, ибо неэффективно, дорого, бюрократия. Какие варианты?
Геймдев - переработки за ебаные копейки и местечковость, несерьёзность происходящего.
Типо
ifs.open(filePath, std::ios::binary);
uintmax_t sentbytes = 0;
while (ifs) {
ifs.read(buffer, bufsize);
sentbytes += boost::asio::write(socket_, boost::asio::buffer(buffer, ifs.gcount()));
}
На
FileStream ifs = new FileStream(file, FileMode.Open, FileAccess.Read);
while (ifs) {
...
}
На что заменить while (ifs) ?
Даже если забыть о том, что это код прямо в посте, но боже мой - какой же С++ нечитаемый, блядь, высер.
А что оно делает? Читает до конца? Тогда сравнивай position и length, и не забывай, что read возвращает количество считанных байтов и оно не всегда равно запрошенному количеству. А еще в зависимости от данных можно взять более высокоуровневую обертку, например, Binaryreader, Streamreader etc.
>>380578
Давно меня мучает такой вопрос - как работает пул тредов. Ведь тред на сколько я понимаю это в первую очередь стек, т.е. здоровый кусок памяти нужный для сохранения вызовов функций, ну и небольшие накладные расходы на хранение регистров и может быть еще какая запись в системной табличке. Так вот я не понимаю за счет чего в пуле получается выигрышь, неужели каким то магическим образом тредам в пуле не нужно хранить стек вызовов?
>постоянно бились в переключении контекста
Пруфы что оверхед не больше 0,0000000001 процента
Ты можешь объяснить-то как проблему решить? Я и сам знаю что говнокод, поэтому и спрашиваю совета.
Ну и дальше что, ты совсем тупое ебобо?
Сама задача codewars.com/kata/554ca54ffa7d91b236000023/
Я пока ещё нубас и в процессе изучения, так вот отправив свое решение в виде двух строчек
pastebin.com/ZMqkApS1
ожидал там увидеть в одну, но там какая-то срамота либо O(n^2)
Так вот вопрос, можно ли это запихнуть в одну строчку сохранив O(n)?
>ожидал там увидеть в одну, но там какая-то срамота либо O(n^2)
>Так вот вопрос, можно ли это запихнуть в одну строчку сохранив O(n)?
Чего блядь вообще? Почему программирование так притягивает ебанутых как магнит?
Ты условие не правильно понял (кмк), попробуй тестовый пример хотя бы.
>Ты условие не правильно понял (кмк), попробуй тестовый пример хотя бы.
Хотя нет, тут пожалуй снимаю претензию, но от первой не отказываюсь.
>Хотя нет, тут пожалуй снимаю претензию, но от первой не отказываюсь.
Ты бы хоть пояснил за что предъявляешь долбоеб токсичный. Название функции и агрументов скопированы из тестового примера идущего в комплекте с задачей, 2 строчки написанные мной очевидно легко читаемы.
Держу вкурсе.
https://ulearn.me/Course/cs2/Realizatsiya_interfeysa_reshenie_e68b0a07-5586-4b39-9c45-15ddc697b6be
Разве тут не что-то платиновое с пикселями?
Что за хуйню ты несешь. Пул тредов - это программная сущность, схуйли ты решил, что он построен на допотопном стеке, что он какого-то хуя ресурсоемок. Почитай лучше про треды у Рихтера и не задавай стремных вопросов.
Ну, приятно что хотя бы кто то мне ответил. Еще бы это было не тупорылое уебище не знающее даже что такое стек
>построен на допотопном стеке
расплескал всю подливу. Впрочем, со мной на сосаче только так обычно.
Я спросил про конкретную задачу, которая описывается несколькими словами, и для которой скорее всего есть решение в виде одного linq запроса как задумывал автор, а не про "всё".
Я учил mvc потому что под него больше вакансий.
Но теперь я стою перед вопросом, доучить mvc, наваяв пару проектов или выучить кор и пиздовать на все собеседования
Времени до июля.
В коре тоже есть mvc.
Через буст ASIO передается имя файла (полное имя куда сохранять серверу), размер и сам файл.
https://pastebin.com/RfPTv1mH
Хуй знает как это переписать на C# VSTO.
Полный клиент:
https://pastebin.com/pZbqetTB
Вот сервер на boost
https://pastebin.com/8SKwCqj3
> Хочу использовать двумерный массив
Ну нинад
>Как мне, например, получить первую строку?
double[,] rectArray = new double[n, m];
var target = rectArray.Cast<double>().Skip(m * i).Take(m).ToArray();
Помимо шарпа эта задача доступна еще для десятка языков, в которых о линке и не слышали. Почему ты решил что автор хочет от тебя какое-то конкретное решение непонятно. А еще после решения задачи становятся доступны решения других, среди которых почти всегда есть чудик с решением в одну строку.
> после решения задачи становятся доступны решения других, среди которых почти всегда есть чудик с решением в одну строку
> там какая-то срамота либо O(n^2)
Напомню, что линк это набор методов расширения, внутри которых, внезапно, много строк, поэтому можешь смело написать свой расширяющий метод, который сделает нужное дело за O(n) в несколько строк, и затем вызвать его на коллекции и получить результат в одну строку.
> Помимо шарпа эта задача доступна еще для десятка языков, в которых о линке и не слышали.
На хацкеле как и в любом чистом ФЯП есть только аналог линкью.
Но думаю, что если я еще раз с entity framework буду записывать в базу, получать оттуда данные, делать пагинацию, то я ебнусь.
C чем можно поработать? Думаю, что mongodb подойдет.
На джуна идешь? Если да, то больше по с# будут собеседовать нежели по тонкостях фреймоврка.
Как можно вместе с формой послать файл?
При стандартном подходе шлется не файл, а я, причем нахуй
Может мне сделать отдельную форму для отправки файла и повесить событие, чтобы аякс отсылал и ее по нажатию одной кнопки?
А не, все, я понял, что это не из-за формы, а я с именем внешнего ключа налажал.
Вынеси все что хочешь закодить на Эф в отдельную библеотекуЮ там пиши на эфе а библу подцепи к юнити проекту.
Комментарии об очевидном - плохо же, код должен быть самоописательным, но я заметил, что во многих проектах summary, return, и параметры прописаны вообще для всего.
Как быть?
У нас CI варнинги на код без доков, а так попробуй екстеншен ghost doc.
Я ее эксперт, но шарп это не .нет.
Хочу поставить картинке значение рассчитанное, а он пишет, что оно недопустимо.
А не, все норм
Проект Geo предназначен для платформы 4.6.1, которая не установлена на ПЕКЕ, хули не ясно?
И у меня встал вопрос, как мне проверять, ответили ли на пост?
Как мне реализовать механизм перевода спецсимволов типа в html разметку?
Получается, что мне нужно парсить все посты на наличие реплая? А что, если посты содержат очень много символов и постов под 500?
Это же займет кучу времени?
А все, понял, скриптом все парсить.
Мертвого языка тред
Да-да, проходи, не задерживайся
Антоны, помогите написать хелпер для форматирования сообщения.
Мне нужно игнорить html разметку, что размещает пользователь напрямую, но вместе с этим преобразовать другие символы в разметку
Я составляю запрос к серверу, запрос состоит из стринга, в котором набор данных формата джсон. Сервер принимает ТОЛЬКО определенного вида запрос, например {"query":"queryText"} и все элементы внутри ОБЯЗАТЕЛЬНО должны быть в двойных кавычках. Но блядский формат стринг не позволяет иметь двойные кавычки в внутри, нужно их обходить либо бэкслешем либо @ и дополнительными кавычками внутри. И такую хуйню уже не понимает сервер, если внутри появляются дополнительные символы. Как мне отправить стринг вот такой {"query":"queryText"} без изменений внутри?
Зависит от размеров проекта. Бывает такое, что очевидное на самом деле не очевидное и с какой-нибудь подковыркой. Также, когда изначально пишешь код, то он тебе почти всегда кажется очевидным, а потом может быть такое, что ты половины не понимаешь или чего хуже - думаешь, что понимаешь, а на самом деле не понимаешь. Поэтому если в коде больше 1к строк, то лучше комментировать как можно больше.
Это задел на будущее, когда компьютеры будут настолько мощны, что O(n^2) будет воспроизводится с той же скоростью, что и O(1)
Бекслэш?
Короче, что, кроме юнити есть для сярпика? Просто юнити огромный и непонятный, мне бы что-то попроще и, в основном, для 2д.
лучше .net core и на фронте какую-нибудь известную хуйню аля react/vue/angular, вакансий полно, но советую пиздовать лучше либо на бэк, либо на фронт, иначе будет хуярить фулстеком, при этом платить скорее всего будут столько же
Конечно .Net, геймдев в России есть только на мобилках, а на мобилках нужен Java, а не сисярп.
Предлагаешь ему пикчербоксы по таблице екселя таскать?
monogame - по нему даже гайд на metanit есть(за качество не ручаюсь). Но всё же юнити лучше. Он не сложный, если игра не сложная
гейдев на c# выше уже описали:
>переработки за ебаные копейки и местечковость, несерьёзность происходящего.
мобильный гейдев отлично работает, если работаешь на себя, полностью обеспечивая жизненный цикл игр от идеи до поддержки без посредников. Но это развлечение на любителя
Неужели вообще бессмысленно вкатываться в геймдев через Шарп? И что же тогда, перекатываться на UE4 и С++? Или вообще забить на геймдев?
Смотря что значит "вкатываться в гейдэв"? Если попасть в мажор компанию, то да, он там и нахуй не нужон. А если заниматься самоделом, то заебись. Особенно если найдёшь такого же единомышленника, который готов работать с хуём во рту за идею.
Спасибо за ответ, анон. А вообще, сам по себе сишарп в плане работы и желательно сьеба из России? Я конечно понимаю, что вы тут все без ума от языка (да и мне он очень нравится), но я боюсь проебаться с выбором. Сколько времени нужно, чтобы начать работать в ДС?
съебу из СНГ помогает знание языков/технологий, которые уже устоялись более или менее, но не заехали в аутсорс/широкий продуктовый рынок. какой-нибудь VR, Blockchain сильно возможно. то, чему миллиард лет в обед - ессессно нет. индуса перевезти дешевле будет, даже со всем его кемпингом
Съебу способствует любой стек технологий основанный на любом ЯП из топ-10 списка по популярности, вопрос заключается лишь в том, как хорошо ты этим стеком овладел.
Что-то у вас раздел "Ресурсы" какой-то тухлый. Какая из 3-х ссылок с гайдами наиболее актуальна?
Толсто
Суть - пользователь тыкает кнопочки, данные с каждой кнопки записываются в структуру, структура передается на сервер, сервер ловит ее и записывает в БД похер какую. Интерфейс пользователя на винформс делал по видеоурокам с ютуба, теперь туплю что делать дальше. Подскажите нуфагу, пожалуйста.
Так то да, но щито поделать.
ты сам понял свой вопрос?
ты наваял интерфейс, теперь надо это все упаковать:
>в структуру, структура передается на сервер, сервер ловит ее и записывает в БД похер какую
че не понятно?
Thread thread = new Thread(() => {
...
});
ControlTemplate
-Border
--FrameworkElement1
--FrameworkElement2
-ControlTemplate.Triggers
--Trigger1
Так вот, надо в trigger1 изменить одно из значений в FrameworkElement2, как это прописать?
Отбой, нашел targetname.
>Пацаны, а вы всё комментируете xml-комментариями
Само собой, норм CI не должен вообще позволять запушить недокументированный код.
>где всё ясно из названия метода
Ты методы на русском называешь? Если нет, то из названия метода, который придумал не нейтив обычно всё понятно только тому, что его придумал.
>какой объект он возвращает?
Теги типов аргументов и возвращаемого значения больше нужны для автогенерируемой документации по коду и для того, чтобы в студии при наведении курсором на метод, что ты написал всплывала подсказка с типами и описанием.
>Комментарии об очевидном - плохо же, код должен быть самоописательным
Самодокументируемый код - миф (вероятно придуманный теми, кому лень писать комменты). Правда в последнее время в него почему-то верит всё больше джунов, уж не знаю, где они нахватались этой дряни - приходится выбивать из них эту дурь, ибо каждая минута сэкономленная на написании комментов будет стоить двух при поддежрке проекта.
каждый элемент MyList и будет у тебя object
short x = 10;
short y = 15;
short result = (short)(x + y);
Или :
int x = 10;
int y = 15;
int result = x + y;
Или:
short x = 10;
short y = 15;
int result = x + y;
что ты понимаешь под ресурсоэффективностью?
оператор + для всех не-лонговых целочисленных типов - интовый. наверное, чтобы не оверхедить при парсинге результатов нативных библиотек.
а восприниматься все будет так, как у тебя работает код.
>ресурсоэффективностью
Занимаемое место в памяти, насколько быстро будет работать программа используя предоставленные ресурсы.
С одной стороны записав:
short x = 10;
Я экономлю память, но с другой стороны при использовании данной переменной в операции сложения, эта переменная будет приводится к типу int и возвращаться результат будет в таком же типе. Т. е. чтобы экономить память мне нужно приводить всё к типу short, т. е. я так понимаю будет уже 2 операции - приведение к типу int, а потом приведение к типу short.
Я так понимаю, что стоит приводить только для экономии памяти, но скорость выполнения кода будет выше если везде использовать Int. Или всё не так?
экономия 4х байт даже в разрезе нескольких сотен объектов тебе не даст практически никакой ощутимой выгоды. ты тут не контроллеры программишь, а необходимости в ручном управлении композицией значений в памяти от силы 0.0000000000000000000000000000001%. и то, для этого есть StructLayout, который будет просто работать.
и далее, если ты хочешь сэкономить в памяти, но только для того, чтобы передавать значение как аргумент в методы, эта экономия будет нивелирована ибо значения этих аргументов (вроде бы до 64го байта) передаются через регистры, размер которых нихуя не 4 байта. короче, забей. если тебе для бизнес-логики или для отражения модели БД нужно завести short, пускай это он и будет. для всего остального есть дефолтный int
Какая разница, меня другое интересует - как код быстрее будет работать, а не насколько я выиграю в процентах. Это и так понятно, что практически не имеет смысла считать байты, когда сейчас на телефонах по несколько гигабайт памяти.
возможно, будет работать медленнее на полтора процессорных такта, но это не точно
short
Все кто хотели и знали сисярп успешно съебали.
Но при этом они довольно компетентные спецы
Еще одного недоджуна нахуй никму не надо везти
Ты дурак? Это еще на ПК с соснолями есть варианты, мобильный же гейминг целиком и полностью делается на юнити.
> мобильный гейдев отлично работает, если работаешь на себя, полностью обеспечивая жизненный цикл игр от идеи до поддержки без посредников.
И имеешь с игры от 2 до 10 долларов в месяц. Да, охуенно он работает.
Охуительные истории.
Markdown
так кардинально?
Поясните за WPF. Какими средствами пишутся SPA приложения на нем?
Если я ручками создам в нужном месте cshtml файл с нужным именем, то оно не заработает, котроллер не распознает в нём свой метод и пошлет лесом.
Собственно, вопрос: где явно прописана связь между вот этим вот контроллером и этим вот представлением?
Блэт
Ну ты путь укажи к своему представлению. Типо: return View(path);
metanit это для тех кто уже знает какой-то ЯП, но хочет изучить C#. У него совсем не для ньюфагов написано, но зато для тех кто не ньюфаг хорошо подходит, потому что всё изложено максимально коротко, без разжевывания.
Вот гайд по вкату в сисярп с нуля:
1) пройти бесплатную часть курса явараша
2) прочитать метанит
3) задать миллион тупых вопросов в этот тред
4) ???
5) профит
Перефразирую вопрос, без этой хуйни из проверок можно сделать?
Я шарп не знаю, но блять какого хуя ты творишь?
https://ideone.com/OyFChD
https://docs.microsoft.com/ru-ru/dotnet/standard/base-types/custom-date-and-time-format-strings
DateTime.Now.ToString("HH:mm:ss")
Ты волшебник :3
bump
виртуальный метод уже можно юзать сразу, а абстрактный ещё надо реализовать в потомке и юзать из потомка
Если в базовом классе есть реализация метода, но потомок может изменить реализацию, то виртуал. Если базовый класс имеет метод, но его реализация полностью зависит от потомка, и не может иметь какого-то дефота в базовом, то абстракт (класс соответственно тоже абстракт и не сможет иметь инстансев).
Ты где-то наебался и у тебя идет деление в целых числах с 0ми (черный цвет) на выходе. Смотри RGB<->YUV преобразование.
У меня работа с базой происходит асинхронно, на каждый экземпляр контроллера свой экземпляр DbContext
И да, сразу скажу, что у меня есть только чтение и запись, никаких обновлений и удаления
Слышал, но лень использовать было, теперь буду.
Thread myThread = new Thread(new ParameterizedThreadStart(AsyncStart));
myThread.Start(1);
Thread myThread1 = new Thread(new ParameterizedThreadStart(AsyncStart));
myThread1.Start(2);
То потоки создаются одновременно или сперва создается один поток, он отрабатывается, а потом запускается второй поток?
есть ConcurrencyToken, есть версионирование строк через DB тип RowVersion, есть костыли. смотря, какие у тебя условия работы приложения. вангую, что тебе никаких защит не надо, если ты спрашиваешь
Я правильно понимаю, что это нужно только при редактировании и/или удалении данных.
>при редактировании и/или удалении данных
ну т.е. в 99.9(9)% приложений? офк нет. нужно это, если у тебя есть реальный шанс поймать окно, когда одна и та же запись модифицируется двумя пользователями/процессами, и это сильно бо-бо
Бинарный поиск?
метанита
professorweb
MSDN
2ch.hk
stackoverflow
TSQL Fundamentals by Itzik Ben-Gan
Мурзилка
Переписка К. Маркса и Ф. Энгельса с русскими политическими деятелями
Гарри Поттер и реляционные базы
надо крякнуть прогу.для пикрелейтед нужно сделать декриптор
прога не продается,купить не выйдет
да,я инвалид
class A : IInterface {...}
class B L IInterface {...}
class Test
{
Test(A a) : this(a) {}
Test(B b) : this(b) {}
Test(IInterface obj) {}
...
}
То есть Test test = new Test(new B()); гарантированно вызовет сначала вторичный конструктор Test(B b), который вызовет уже основной?
Он вторичный потому, что его тело пустое и он вызывает цепь конструкторов, которая всегда заканчивается основным.
там помимо этого еще ксор и перевод в байты,кажется
я пробовал писать декриптор,но что-то обсираюсь каждый раз с этими циклами и на выходе выходит хрень
а, я не про тот подумал
ну, не вызваться может Test(A) если в Test(Interface) выехало исключение
Мне нужно разделить строку по этим разделителям и перенести в списке.
Должно работать так: text<tag>text
В списке должно быть text <tag> text
Есть ли какие дефолтные методы это сделать или мне нужно пилить свой метод для этого? Регулярку юзать нежелательно, нужно, чтобы все было быстро.
Я вышел с криокамеры, а здесь Xamarin.Forms только один проект в котором нихуя нету. Как сделать как раньше чтобы сразу и android и iOS и uwp было?
Алсо - все поставил само собой.
Нет, там всё переписать надо. Попробуй.
Есть пользователь никсоса. Под линукс есть вскод, а не нем и автокомплит, и подсветка ошибок, и рефакторинг, и дебагинг. Если ты не какой-то синьйор помидор, который жить не может без ентерпрайз студии с решарпером, то все норм.
Только учитывай, что гуя под нет кор нет, а консольные поделки на шарпе никому нахуй не нужны.
Ну и еще никсос хуево работает с проприетарными иде, поэтому или ебись с докером или ставь другой, менее элитный дистрибутив.
> Мужики,
Как жаль, что я няшный кошко-мальчик, а не суровый мужик и не могу тебе ответить, хоть и знаю ответ :(
У тебя конструкторы сами себя второй раз вызывают, а должна быть цепочка вида
Test(A a) : this(B b) {}
Test(B b) : this(IInterface obj) {}
Test(IInteface obj) {}
И работа будет происходить сверху вниз, т. е. сначала отработает конструктор принимающий IInterface, а потом B b, при условии что ты вызвал его при помощи Test c = new Test(B b);
Какие нахуй юнит-тесты? Ты чё, не мужик что ли? Ебошь так, в ходе работы протестируешь/протестируется и поправишь уже действительные юз-кейс баги, а не хуйню из юнит-тестов.
Начал C# 1-1.5 года назад, вяло перекатываясь в него с VBA. Сейчас заметил, что ничего нового не применяю, всё, что может понадобится, знаю как сделать. Всё, что написано на metanit (кроме сайтоделанья и формочек/рюшечек и т.п.), знаю и понимаю, как мне кажется, достаточно уверенно. С математикой и алгоритмами всё более менее хорошо, для дела хватает.
Подскажите что ли, как и куда дальше развиваться по C#/.NET, чтобы могло пригодиться для дела?
Бамп, никто не знает как?
Охуеть вопросы. Откуда мне знать какие у тебя дела будут? Как раз для деланья и могут пригодиться навыки "сайтоделанья и формочек/рюшечек", но ты их почему-то решил пропустить и ворвался сюда с впросом ЧТО МОЖЕТ ПРИГОДИТЬСЯ ДЛЯ ДЕЛА. Ты сам должен решить, что тебе может пригодиться для дела.
И не известно, что значит "как мне кажется, достаточно уверенно", "для дела хватает", может у тебя там костыль на костыле и вообще полное отсутствие оптимизации и читаемости кода, но тебе для дела хватает и ты считаешь это достаточно уверенным уровнем.
Дело всё тоже - числодробилки и моделирование. В веб-макаки не собираюсь. Тратить время на рисование кнопочных интерфейсов тоже не хочу, ибо практической пользы нет. Ну и у меня есть этот опыт на VBA. Программирование - подспорье к основной работе (инженерия), а не основная профессия.
По алгоритмам и математике я часто гуглю, если чего не знаю, но тут я и сам понимаю, куда развиваться по необходимости.
Я понимаю про сложности алгоритмов, про работу с памятью и т.п. И по факту мой код работает быстро, на уровне коммерческих аналогов.
Читаемость кода есть куда повышать, однако всё же я работаю один, поэтому это не критично.
Это тебе не обрезанный питон с нулевой типизацией, в более-менее серьезном проекте ты запутаешься и перестанешь воспринимать происходящее в твоём коде.
Потому что это функциональный яп, в отличии от объектно-ориентированного сисярпа.
[code]
listBoxRecords.Items.Add(Convert.ToString(sqlReader["Id"]) + " " + Convert.ToString(sqlReader["Name"]) + " " + Convert.ToString(sqlReader["Date"]) + " " + Convert.ToString(sqlReader["Time"]));
[/code]
Ни в других окнах ни в расширениях как на 2 пике.
Стоит 17 студия, что делать?
Тебе русским языком написали про неявное преобразование. Ты вообще читал про касты?
А лучше бросай сисярп. Я серьезно.
мимопроходящий
Есть элемент ListBox, в который загружаются куча записей из базы данных. Можно как то разделить эти записи по колонкам и выравнять, чтобы няшно выглядело?
не хочу дрочить XAML и WPF
Используй ListView
Создаешь класс.
Создаешь в нём делегат.
Связываешь с этим делегатом событие.
Пишешь нужную логику при установке значения класса.
инициализирую разные объекты программно, меняю их положение и размеры также программно, но чтобы их менять с задержкой, приходится использовать Dispatcher
например, если я буду пытаться менять UI кодом https://pastebin.com/VQcb688a то просто всё зависнет
приходится запускать этот код в новом потоке и оттуда, через Dispatcher, менять UI
Можно ли как-то в тупую, в один поток, менять UI, чтобы у всех элементов был доступ к друг другу и при этом интерфейс не зависал?
Через wait / async пробовал?
Ты сам-то понял что сказал, хочешь блокировать UI-нить и при этом что бы она не блокировалась.
для регулярки поставь флаг precompiled
бамп реквесту,сразу кидайте свой биткойн кошелек как напишите - кину что есть
нужна консольная прога,которой можно дешифровать это и наоборот- шифровать нужные строки в этот вид
Хуею с долбоеба. У тебя на скриншоте 1 метод внутри которого используются еще 3 метода (Program.smethod_15, Program.smethod_4, Program.smethod_7)
Ты предлагаешь это дурачку, который соберётся тебе помочь, написать эти методы самому?
Ммммасленко вопросы тайм. Попытка создать быструю сортировку, выкидывает System.StackOwerflowExcepetion, скорее всего бесконечная рекурсия. Также есть ещё два вопроса: менее колхозный способ объединения массивов и добавления разделительного элемента, который у меня гордо зовётся marker.
Язык ведь намного приятнее всякой Java/Javascript пораши (пусть даже язык не выразительный, но все же лучше байтоебства с++)
Дома играюсь с c# unity, на работе пилю wpf Легаси приложения.
Где справедливость? Ворочаешь дженерики 5 дней в неделю, а потолок 120к
>на работе пилю wpf Легаси приложения.
Скажи спасибо, что тебе за эту хуиту вообще платят. Деньги либо в вебе, либо на мобилках, при этом одним знанием C# ты не обойдешься.
Можешь чуть более подробно, ибо я совсем тупой. Это цикл for кривой, или что-то более серьёзное?
когда слишком глубокая рекурсия (дохуя раз вызываешь один и тот же метод с сохранением предыдущего значения в стек), то стек переполняется. поэтому лучше писать код без рекурсии
Не осиливают как раз циклы, потому что через рекурсию выполнить решение легче.
не учил бы папку ебаться, щенок
Зп в ИТ начинают снижаться. Это неизбежно. Падение будет до тех пор, пока не рыночек не выравняет.
С хуя ли какой-нибудь физик или инжинер, которому кодинг и тем более матаху преподавали нормально, должен идти по специальности на 25к, если может повалить джуном на 50-60?
Да и вкатывальщики шатают рыночек. Порог входа очень низкий. Знаю парня, который учился в вузе 8 лет за счёт академов на экономиста. После вуза работал фотографом и т.п. Жил на мамкину зп (мамка бохатая). Сейчас 37 лет ему. Мамка на пенсии, стала его нахуй посылать. Он взял да и вкатился в айти года 2 назад. Сейчас сеньор пхп-макака.
Когда учился в школе, во дворе был парень, он был реально дауном, у него был белый билет. Он даже в 15 лет несколько раз обосрался в штаны. Он ел гусениц и тритонов. Недавно нашел его в вк, списался, пообщался, сейчас он в 1С с зп овер 200к.
Любой, даже старый имбецил, сейчас может вкатиться в айти за пару месяцев и без проблем заменить тебя.
А ещё ведь и индусы напирают.
>Когда учился в школе, во дворе был парень, он был реально дауном, у него был белый билет. Он даже в 15 лет несколько раз обосрался в штаны. Он ел гусениц и тритонов. Недавно нашел его в вк, списался, пообщался, сейчас он в 1С с зп овер 200к.
все что нужно знать об 1с программистах
Так допиши.
Выбираю в дочерней форме прозрачность, а она выдаёт мне не содержимое родительской формы, а просто картинку которую я прилепил по умолчанию на всю родительскую форму.
есть метод в классе
public virtual string[] Search(string findThis)
{
return new string[] {"Default result;" };
}
юзаю значит:
SearchEngine engine1 = new SearchEngine();
string[] defaulResult = engine1.Search("bla bla bla");
Console.WriteLine(defaulResult);
в консоли пишет system.string[], хотя по задумке должен выводить условный "Default result"
как пофиксить?
Обращаться к элементу массива:
Console.WriteLine(defaulResult[0]);
Либо возвращать строку, а не массив строк:
return "Default result;"
Либо перегружать оператор преобразования типов, который будет из твоего string[] делать обычный sting, например, проходясь по массиву и соединяя все элементы в одну строку.
спасибо большое за ответ. чет я прям тупанул
В DataGridViewer заливается вся БД, как отфильтровать отображение, чтобы выводились только записи за 04/30/2019, например?
>В DataGridViewer заливается вся БД
Пиздец.
https://docs.microsoft.com/ru-ru/dotnet/framework/data/adonet/filtering-with-dataview-linq-to-dataset
Допустим, я хочу вести стек для вывода постов на форуме, чтобы помещать вперед наиболее активные, как мне это реализовать, особенно если у меня несколько разделов и один контроллер?
Неужто мне для каждого раздела нужно заранее инициализировать свой стек?
И насколько я понимаю, работу класса нужно будет делать потокобезопасной.
Блджад, а я в этом не шарю.
Логичный варик: Azure. На рандомном VPS на линуксе должно тоже работать, сможешь или нет настроить зависит от отвей обучаемости.
ASP.NET же предлагает тебе DI. Ты внедри свой стек как синглтон (а ещё лучше - в обертке) и при каждом обращении к твоему контроллеру, у тебя будет только один стек.
Я нихуя не понимаю до сих пор.
Для фп
Поюзай LINQ, поймешь зачем делегаты.
Вот отличный пример - элегантный расчёт площади полигона по заданным вершинам:
var points = GetSomePoints();
points.Add(points[0]);
var area = Math.Abs(points.Take(points.Count - 1)
.Select((p, i) => (points[i + 1].X - p.X) * (points[i + 1].Y + p.Y))
.Sum() / 2);
То, что внутри Select, это делегат.
События нужны всяким веб-макакам и фронтенд-формошлёпам.
Лямбда всё равно является делегатом, только анонимным.
Select принимает как аргумент встроенный делегат Func<>, который в данном случае инициализируется лямбдой.
Я юзаю Linq постоянно, не часто передавал лямбда выражения в качестве делегата.
Но я не понимаю внутреннюю механику
В Linq в Select, Where, OrderBy, GroupBy и т.п. ты всегда использовал делегаты.
>Но я не понимаю внутреннюю механику
Сформулируй вопрос свой.
Для того чтобы хранить в себе методы из разных участков кода, а потом вызывать их все в каком тебе нужно месте.
> не часто передавал лямбда выражения в качестве делегата.
А что ты тогда передавал в линкью?
> Но я не понимаю внутреннюю механику
А че там понимать? Обычные функции высшего порядка.
..
События - для реализации паттерна обозреватель.
Ну это описание ни о чем не говорит.
Но я вспомнил как оно работает, мы создаем событие как поле класса и потом передаём экземпляр этого класса в конструктор другого класса, где и регистрируем метод
>75 микросервисов
ААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА СУКА
Какие нахуй экземпляры и конструкторы? Ты можешь создать какой-нибудь базовый класс и объявить в нём делегат и привязать к этому делегату событие. Потом создавать от этого класса производные и использовать это событие во всех классах, после чего ты в методе Main, например, событию базового класса присваиваешь нужный тебе метод или несколько методов и знаешь, что эти методы будут использоваться во всех производных классах. Удобство заключается в том, что тебе не нужно менять каждый класс, добавлять туда какие-либо методы, ты делаешь это всё в одном месте и задаешь нужную тебе логику через один метод. Всё что тебе нужно это знать что именно делает определенный класс и какие параметры он передаёт событию, именно поэтому первым параметром чаще всего будет this для того чтобы в зависимости от класса, обработать полученные данные в одном методе который ты привяжешь к событию нескольких классов.
Да я все уже понял, просто забыл про всякие делегаты типа Func и что мы можем использовать их в качестве параметров методов.
Надо бы самому что-нибудь сделать этакое.
На самом деле синтаксисом из (x, y) => я не использовал пока, не очень понимаю, зачем он нужен.
>>392914
>ASP.NET же предлагает тебе DI
Я юзаю Ninject, как я понял, мне достаточно реализовать привязку через него, указав, что это синглтон, а дальше в контроллере работать с публичными методами моего класса, что работает со стеком?
> На самом деле синтаксисом из (x, y) => я не использовал пока, не очень понимаю, зачем он нужен.
Код явно короче становится.
>Какие нахуй экземпляры и конструкторы?
Я судил по примеру, который дает Рихтер. Он использовал один класс, чтобы уведомлять другие о возникновения события и привязывал метод к событию в конструкторе классов, которые уведомляются.
>что именно делает определенный класс
Можешь показать пример сигнатуры такого делегата?
>this для того чтобы в зависимости от класса, обработать полученные данные в одном методе который ты привяжешь к событию нескольких классов.
А в методе должна реализоваться проверка на класс или как это должно выглядеть?
>Код явно короче становится.
Я понимаю, но как это используется в запросах с where, select, groupby, orderby?
Ах да точно, забыл самое главное. Очевидно что ты можешь отправлять фильтр/логику по которой линкю методы могут выбирать/возвращать элементы.
Ты сам тоже такое можешь написать и принимать на вход метод если ты пишешь какую-то либу/модуль для других разработчиков, а иначе хуй знает как это сделать.
Что-то типа такого:
public static class A<T>
{
public static T Sum(T a, T b)
{
return a + b;
}
}
Гуглил. Вроде нельзя так. Неужели придётся копипастить один и тот же код для разных базовых типов (мне нужен int и double). Как-то тупо.
Ну, во первых js изначально не язык программирования. Его придумали для браузеров, как язык "сценариев" анимации и прочая интерактивность, а как известно, попытки таких вот языков эволюционировать во что-то нормальное - заканчивается костылями и синтаксисом, где от расположения открывающей скобки метода зависит, вернёт метод undefined или null.
1.нельзя, тк у тебя не стоят разграничения обобщений. Вдруг ты в T поставишь какой-нибудь класс.
2.У статик классов нельзя ставить обобщения
Если тебе нужны именно арифметические операции, то просто пиши метод
public static double Sum(T a, T b)
{
return a + b;
}
и если используешь int - приводишь входные к double, а выходные к int
1. Ну может можно написать что-то вроде where T : IArithmetic, или как-то самому такой интерфейс прибабахать к базовым типам.
Кроме-то шаблоны же привязываются на уровне компиляции вроде как, соответственно, компилятор мог бы просто проверять весь код, что вставляется вместо T, и соответствующим образом компилировать, как в C++. Неужели no way?
2. Мне это надо для нестатического класса, это просто пример, но он компилируется и работает, так что можно.
Ну приведение типов решение очевидное, но костыльное, замусоривающее код и вызывающее чувство отрващения к этому дерьму. Лучше уж скопипастить класс для двух реализаций.
1.к сожалению нет
2.Сам не проверял, но это нелогично т.к.: обобщение указывается при объявлении экземпляра типа, а у статик экземпляр объявить нельзя
можно завернуть обобщение в
> от расположения открывающей скобки метода зависит, вернёт метод undefined или null.
Так помоему фича? а зачем нужен undefined
Если память не изменяет - это переменная без типа
>Неужели придётся копипастить один и тот же код для разных базовых типов (мне нужен int и double).
Наверно для таких случаев и придумали перегрузку методов.
Если что-то не то пизданул - прошу подправить, ибо если сейчас не пойму - то всё по пизде пойдёт.
> Я юзаю Ninject, как я понял, мне достаточно реализовать привязку через него, указав, что это синглтон, а дальше в контроллере работать с публичными методами моего класса, что работает со стеком?
Да, блять.
это херня, которая, используя абстракции ADO.NET, реализует подключение к БД так как ей надо
>Основная идея модели фабрик заключается в том, что вы используете единственный объект-фабрику для создания всех прочих необходимых специфичных для поставщика объектов. Затем с этими специфичными для поставщика объектами можно взаимодействовать полностью обобщенным способом, через набор базовых классов.
>Фабрика классов сама по себе специфична для поставщика. Например, поставщик данных SQL Server включает класс по имени System.Data.SqlClient.SqlClientFactory. Поставщик Oracle использует System.Data.OracleClient.OracleClientFactory. На первый взгляд может показаться, что это исключает написание независимого от поставщика кода. Однако на самом деле существует полностью стандартизованный класс, который предназначен для динамического нахождения и создания необходимой фабрики. Это класс System.Data.Common.DbProviderFactories. Он предоставляет статический метод GetFactory(), возвращающий фабрику на основе имени поставщика.
https://professorweb.ru/my/ASP_NET/base/level6/6_5.php
Как реализовать extension метод который принимает IEnumerable<T> и возвращает <Tuple<T, T>?
Есть примерный образец
public static IEnumerable<Tuple<T, T>> ToTuples<T>(this IEnumerable<T> dates)
{
var enumerator = dates.GetEnumerator();
}
и сам вызов метода:
void Main(params Data[] data)
{
var tuples= data.ToTuples()
}
пытался enumerator шаманить с Current и MoveNext ничего не получалось
public static IEnumerable<Tuple<T, T>> ToTuples<T>(this IEnumerable<T> a)
{
var ans = new List<Tuple<T, T>>();
foreach(var v in a) ans.Add(new Tuple<T, T>(v, v));
return ans;
}
Спасибо, близко, но если я подам следующие значения:
11,12,13,20,21
То получу пары 11,11 12,12 13,13 20,20 и т.п
а надо 11,12 12,13 13,20 20,21
public static IEnumerable<Tuple<T, T>> ToTuples<T>(this IEnumerable<T> a)
{
var ans = new List<Tuple<T, T>>();
for(int i = 1; i < a.Count(); i+=2)
{
var v1 = a.ElementAt(i - 1);
var v2 = a.ElementAt(i);
ans.Add(new Tuple<T, T>(v1, v2));
}
return ans;
}
Нихуя себе, а так можно было что-ли?
Если сможешь помочь с последним, то с меня тонна нефти и 2 чаю.
Теперь требуют сделать ленивый возврат через yield return
пытался через foreach сделать:
foreach (var tuple in elements)
{
yield return tuple;
}
ругается и говорит что ленивый возврат не работает
надо сделать как-то через yield return new Tuple<T, T>()
Пытался через:
public static IEnumerable<Tuple<T, T>> Pairs<T>(this IEnumerable<T> dates)
{
if (dates.Count() < 2) throw new ArgumentException();
for (int i = 0; i < dates.Count() - 1; i++)
yield return new Tuple<T, T>(dates.ElementAt(i), dates.ElementAt(i + 1));
}
выдает ошибку Pairs_EnumerateSequenceOnlyOnce
Never enumerate IEnumerable twice! It can be impossible. Also the second enumeration may produce another sequence than the first
Хуйня какая-то
id
Я в одном месте программы получаю список из id постов которые нужно выгрузить в специальном порядке.
Потом, мне нужно взять список и загрузить все посты из базы по id.
Я могу для каждого создавать отдельный запрос через цикл for и добавлять их в новый список, но хотелось бы что-нибудь получше.
В общем, хочу переписать это.
И вообще, на сколько хорошая идея - учить сисярп вторым языком после пистона?
Начинать надо с ассемблера, потом C, потом C++, потом Фортран, потом Java || С#, только потом питон || джаваскрипт.
Без разницы, что в каком порядке учить, для твоей задачи винформы подойдут
Универский курс ВМ, физики и электротехники должен быть пройден, прежде чем приступать к программированию. Алгоритмы, структуры данных, устройство компьютера, архитектура процессора и т.п. следует проходить параллельно кодингу.
Можно конечно без всего это сразу вкатиться и начать быдлокодить, но тогда получим 1С-ника, независимо от языка.
WPF конечно, винформс это прошлый век.
>И вообще, на сколько хорошая идея - учить сисярп вторым языком после пистона?
Переходить с простого на более сложное - всегда хорошая идея и метод.
>Можно конечно без всего это сразу вкатиться и начать быдлокодить, но тогда получим 1С-ника, независимо от языка.
Это же все постирония?
А то я чуть не начал спорить с этим
А в каком они порядке лежат? Сортируй на выходе, по дате, например, или по любому другому свойству
Они лежат уже отсортированные в нужном порядке, мне теперь посты нужно из базы в этом же порядке вытащить.
Ну ирония в этом есть конечно. А в целом нужно различать инженера-программиста с ВО, который должен проектировать и создавать сложные и большие системы, понимая, как там всё работает, который имеет не только опыт (и не только в сраном вебе), но и глубокие знания, и подмастерьев - джамшутов-кнопкодавов, которых и взаправду можно готовить за 21 день и спускать им рутину, которая часто есть.
Но отрасль нынче изобилует именно джамшутами, и результаты на лицо. Компьютеры за последние 10 лет стали быстрее, а софт в среднем - тяжелее, медленнее, и хорошо если по функциональности хуже не стал.
И хорошо, если нужно написать очередную веб-какашку. А ведь если нужен серьезный продукт (космос, оборонка, медицина, банкинг, промышленные процессы, защита данных), то сколько бы денег ты не заплатил, нигде нет гарантии, что не нарвёшься на безрамотных идиотов с лычками сеньора.
>И хорошо, если нужно написать очередную веб-какашку. А ведь если нужен серьезный продукт (космос, оборонка, медицина, банкинг, промышленные процессы, защита данных), то сколько бы денег ты не заплатил, нигде нет гарантии, что не нарвёшься на безрамотных идиотов с лычками сеньора.
Так софт для них - это другая отрасль, думаю, что он не на сишарпе пишется.
Если проект начался в последние годы, а не достался из 90-х, то шарп или джава вполне годное решение зачастую (если мы про софт для ПК говорим).
Юлёрнодебил, иди отсюда
1)События
2)Обработчик событий в форме
3)Обработчик событий в классе
Как сделать так, чтобы обрабатывались в классе, а не в форме и почему это происходит?
я конченный, знаю
Студия пишет ошибку, что target runtime does not support defaullt interface implementaion. При этом скачал последний нет фреймворк 4.8.
To create a suitable project for trying out all currently available C# 8.0 features, you can follow these steps:
1. Create a new .NET Core project of any type.
2. In the Application pane of the project Properties window, make sure that the Target framework is set to .NET Core 3.0.
3. From the Build pane of the project Properties window, open the Advanced Build Settings dialog and select C# 8.0 (beta) as the Language version.
Среда - вижуал студия, язык C#
Если смогу заставить надпись New Game быть прозрачной, то и миникарту смогу бахнуть, но чего-то надпись прозрачна только на самой картинке программы.
1. Заменить все классы на структуры.
2. Все структуры, которые будут использоваться в программе, сразу инициализировать. Т.е. чтобы выделение памяти в куче было только единожды при запуске программы.
3. В методы передавать структуры ref'ом. Не использовать функции, возвращающие структуры. Использовать только процедуры, которые пишут результат своей работы либо в какие-то переменные внутри структуры, либо в переменные, которые переданы как аргумент в функцию, опять же ref'ом.
Правильно ли я понимаю, что если внутри класса есть объект другого класса, то скорость доступа к данным внутреннего объекта имеет накладные расходы, т.к. внутренний класс может лежать в куче очень далеко от внешнего? В случае же использования структур такой проблемы нет, т.к. все внутренние данные структуры по значимым типам лежат одна рядом с другой.
Там ссылки по факту лежат. Накладные расходы будут считаться в наносекундах (я так думаю).
Структура целиком сразу попадает в кэш процессора при чтении, при этом уровень вложенности структур в структуру не имеет значения, доступ к элементу зависит от размера и его относительная ссылка, отсчитанная от ссылки на заголовок структуры, определён во время компиляции.
Время доступа к любой вложенной структуре равен времени чтения кэша процессора.
С классами всё не так. Каждый экземпляр класс занимает своё место в куче. Причём по этому адресу в куче могут лежать не данные, а такие же ссылки на вложенные экземпляры других классов, поскольку экземпляр класса может иметь вложенные экземпляры других классов. Доступ к данным в ОЗУ в разы медленнее, чем к кешу процессора, а то и на порядок. Причем чем больше уровень вложенности, тем больше время доступа, оно линейно возрастает.
Я так всегда проигрываю с этого больше/меньше. Да больше, да на порядок, только конечные расходы все равно будут в наносекундах - перейти по ссылке не дорогая операция.
Время доступа к RAM занимает в несколько раз больше тактов процессора, чем, например, деление чисел с плавающей точкой. Если твоя программа занимается в основном вычислениями, то это очень дорогая операция, т.к. по сути все твои арифметические операции считаются в разы больше времени с учётом времени чтения и записи данных.
>1. Заменить все классы на структуры.
Структуры не поддерживают наследования. Если будешь использовать только структуры, то придётся писать один и тот же код несколько раз.
Все поля структуры должны быть проинициализированы, что будет занимать больше памяти в сравнении с классами, в ситуациях когда не все поля нужно задействовать.
Ну и зачем костыли вида:
2. Все структуры, которые будут использоваться в программе, сразу инициализировать. Т.е. чтобы выделение памяти в куче было только единожды при запуске программы.
3. В методы передавать структуры ref'ом. Не использовать функции, возвращающие структуры. Использовать только процедуры, которые пишут результат своей работы либо в какие-то переменные внутри структуры, либо в переменные, которые переданы как аргумент в функцию, опять же ref'ом.
Если тебе дорога каждая наносекунда, то используй ассемблер, а не изъебывайся с инструментом который предназначен для решения других задач.
Легче купить мощный процессор, потратив 50к, чем ебаться с кодом и тратить на разработку программ в 10 раз больше времени. Ну будет твоя программа летать на маломощных компьютерах, проводить расчеты за 1 секунду, в то время когда моя будет проводить их за 2 секунды. Вот только я уже буду продавать свою программу и набирать аудиторию пользователей, она будет приносить мне прибыль, в то время как ты всё еще пишешь код и трясешься над каждой наносекундой исполнения. К моменту когда ты её выпустишь, никто не захочет на неё переходить, потому что все пользуются менее оптимизированной версией. И это не пример из головы, так оно и работает в большинстве случаев, людям выгодней поддерживать старое, чем переходить на что-то новое ради незначительной выгоды.
>Структуры не поддерживают наследования
Вместо наследования в моём случае можно свитчей понапихать, можно делегаты использовать.
>будет занимать больше памяти в сравнении с классами
Проблемы нехватки памяти не существует. Оптимизация по памяти - зло и легаси из 80-х. Нет никаких проблем увеличить объём ОЗУ хоть в 4 раза, а вот процессор и на 10% едва ли будет быстрее считать.
>Если тебе дорога каждая наносекунда, то используй ассемблер
Сейчас один кейс считается 10 сек. Если он будет считаться 1 сек, а лучше 0.1 сек - это будет охуенно. Но проверять всю эту хуйню тестами и выяснять что и как влияет на производительность я заебусь. Поэтому теоретизирую и спрашивую вумных двачеров, какую не слишком хитрую оптимизацию стоит применить.
Согласен. У меня уже есть работающая версия из дремучего костыльного говнокода, которой люди пользуются и в целом довольны. Но отношение к этому такое - "да, доморощенное говно, но просто ничего другого просто нет в этой нише".
Сейчас возникло желание переписать это и расширить функционал, сделать всё красиво, т.к. мои знания и навыки кратно расширились с тех пор, когда я сделал имеющуюся версию.
>Вместо наследования в моём случае можно свитчей понапихать, можно делегаты использовать.
И будет у тебя монстр который пердит багами каждую секунду.
>Сейчас один кейс считается 10 сек.
>Поэтому теоретизирую и спрашивую вумных двачеров, какую не слишком хитрую оптимизацию стоит применить.
И ты решил, что дело в использовании классов вместо структур, а не в твоём говнокоде, лол? Лучше код оптимизируй, а не закапывай голову в песок, обманывая себя тем, что проблема не в твоём коде, а в его реализации ЯП.
+ не факт что твоя плапша из свитчей и делегатов будет работать быстрее. С 99% уверенностью могу сказать, что по итогу ты со своими структурами придёшь к меньшей производительности, чем с комбинацией классов и структур.
Про Аллаха забыл сын шлюхи! Без богословия ты вобще чёрт независимо от всего. Как отучишся в аль-Азхар тогда думай о вкатывании в шарпы быдло.
Тебч наебали. Рефы ебашат по производительности, как суки MSDN в помощь. Передавать класс, который просто хранит структуру, выгоднее, чем передавать ref структуру.
Зависит от задач, тебе скорее всего надо data oriented design, но он опять же не везде дает выигрыш.
И то о чем ты говоришь уже используется в unity, точнее продвигается, они там используют так же структуры и компоненты, делают из этого чанки и в результате получаются как бы массивы с очень быстрым доступом к данным.
>И ты решил, что дело в использовании классов вместо структур, а не в твоём говнокоде, лол? Лучше код оптимизируй, а не закапывай голову в песок, обманывая себя тем, что проблема не в твоём коде, а в его реализации ЯП.
Ты явно не сталкивался с проблемами стандартных средств. К примеру самый жесткий и очевидный пример это bitmap где setpixel это -100000% производительности и по факту лучше обмазаться unsafe кодом работая с ptr что реально в сотню раз быстрее работает.
Кстати структуры лучше делать НЕИЗМЕНЯЕМЫМИ, это позволяет компилятору оптимизировать код и тогда реально получишь прирост.
>Ты явно не сталкивался с проблемами стандартных средств.
>очевидный пример это bitmap
Ты сравниваешь абстрактный тип данных (класс) с обычным классом, который создан кем-то другим. Никто не мешает тебе создать свой класс bitmap и реализовать в нём методы так как тебе удобно, другое дело классы и структуры, у тебя нет возможности создавать абстрактные типы данных.
Этим ты только заставишь компилятор делать 100500 копий твоей структуры при самых безобидных операциях.
>3. WinForms или WPF?
>Шо то хуйня, шо то - все пацаны на электроне ебашат. Еще есть Avalonia, но пока она сырая. Но если уж хочешь гуй на шарпе, то читай:
>Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
Я недоволен этим ответом в шапке.
Посоветуйте гуй-фреймворк под шарп, обладающий следующими требованиями:
1. Кроссплатформенность (разработка на линуксе и винде как минимум, компиляция пол линукс винду и андроид, минимум).
2. Визуальный редактор форм (вызывыг), доступный из всех платформ разработки (винда и линь).
В качестве примера, чего я хочу: Библиотека LCL (Lazarus Component Library) для IDE Lazarus соответственно, которая спизжена с дельфи, но при этом полностью опенсорсна и кроссплатформенна и приложения на ней можно разрабатывать во всех платформах разработки, переключаясь из одной в другую, с сохранением формошлёпства.
>И то о чем ты говоришь уже используется в unity, точнее продвигается, они там используют так же структуры и компоненты, делают из этого чанки и в результате получаются как бы массивы с очень быстрым доступом к данным.
Можно пример? Не совсем понимаю о чем вы, но выглядит как хорошая идея.
Гугли ECS.
мимо
Вообще, капча "велосипеды" заставила меня напрячься и погуглить для тебя https://habr.com/ru/company/otus/blog/422981/
Порой это эффективнее чем использовать данные из классов.
Те же функциональные языки не раз это доказывали, immutable объекты крайне хороши для многопоточного кода.
Да и unity используя подобный подход показали отличную производительность. Проблема пока что в том что очень малое количество людей способны подобным образом писать код, а точнее эффективно его писать. Если писать в ООП стиле как раньше это будет только хуже, но если писать код вокруг данных, то выйдет эффективнее.
Для большинства программ это не нужно, так как они не так активно работают с данными, но вот те же игры которые фактически и есть поток данных это возможно на текущий момент лучшая парадигма.
Сейчас многие упарываются красотой кода в угоду производительности, порой даже в десятки раз, это хорошо для продуктов которые делают лишь для продажи, но плохо для продуктов которые делают с душой.
Да и копии данных даже в обычных программах 100500 раз делают, к примеру используя тот же LINQ.
Мне всегда казалось это самой байтоебской фишкой.
Компилятор сделает это за тебя.
Будет ли принципиальная разница скажем с unsafe кодом шапра, написанным в стиле С++ (т.е. пиханием повсюду указателей)?
Будет, иначе все бы использовали C#, потому что всё что можно сделать на C++, можно сделать и на С#
Если это свойство, то нет.
Если это метод, то да. (Такое бывает когда у тебя абстракция и тогда это не просто переменной может быть, а реальный подсчет всех элементов)
Плюс сильно зависит от того как ты это используешь, не могу сказать за текущий шарп, но вот в 5.0 помню была задачка по обходу двумерного массива (4000х4000) где часто дергалось одно свойство, кэширование прям перед циклом улучшалось на треть производительность.
Сейчас возможно уже это дело поправили, но встречал часто код когда перед Paralle.For(each) кэшировали свойства, не знаю по привычке это или реально помогает. Возможно это какая-то оптимизация под определенные процессоры.
Естественно С/С++ будет быстрее, даже если код написанный на C# максимально оптимизирован за счет jit'a, unsafe и вообще x64. С/С++ обращается напрямую к операционной системе, каких-то скрытых расходов на производительность нет, ты сам контролируешь ход выполнения программы от А до Я.
Будет лишь при условии что ты реально знаешь что делаешь, иначе скорее всего только хуже сделаешь.
С С++ не все так просто как кажется, там столько костылей для производительности выдумали, к примеру small string optimization.
>>394302
Охуеть сколько "экспертов" повылазило. Какая нахуй виртуальная машина, какое нахуй прямое обращение? Напрямую обращается только ассемблер, в который и компилируется код на других ЯП в т. ч. и С, C++, C#
С++ быстрее за счёт легковесности того кода, который независимо от написанного тобой кода будет компилироваться в итоговый код. Например, сборщик мусора, которого в C++ попросту нет. С одной стороны тебе придется ебаться с управлением памятью, с другой стороны ты создашь не универсальное решение для управления памятью, чем является GC, а частное, за счет чего программа и будет работать быстрее (если руки не из жопы).
Естественно сам ЯП никуда не обращается, лол, но код написанный на C/C++ компилируется в машинный/натив код. Общается такое приложение напрямую с системой. .Net же запускается на виртуалке, которая интерпретирует байткод, чистит мусор, делает все что там нужно и только потом передает управление системе. Ты хуйню написал.
Да. Фреймворк умрет скоро, они сами писали что не будут больше его развивать почти никак.
> вместо него?
Кор. Net Standart 2.1 уже не будет поддерживаться фуллфреймворком, они об этом еще в прошлом году писали. Типа, двадцать лет легаси и все такое, мы не можем сходу брать и пихать все оптимизации и новые фишки в фреймворк с риском сломать старый софт.
Делал проверку при добавлении на нулл и там нет не одного нулл итема, но при потреблении вылетает нуллреференс.
Оказалось что собака зарыта в изменении размера Queue при добавлении, не знаю в чем именно там косяк, но если не указывать явно при создании размер, то вначале он будет маленьким (4 кажется) и при добавлении все будет хорошо, но при потреблении очередь выдаст тупо Нулл если конечно у вас референс тип. И это никак не ловится дебагом, так как при дебаге такого не случается.
А потом еще ругаются что через WriteLine отлаживать нельзя, порой без него просто нереально отладить какой-то тонкий косяк.
Так тогда ты ошибку не поймал и причину не выяснил. В жизни не поверю что внутри там написано что если дебаг то чтобы при потреблении null не выдавало.
Дело не в том что там так написано, просто в дебаг программа работает слегка иначе, скорее всего медленнее и из-за этого такой проблемы нет.
К примеру в многопоточной проге если делать инкремент переменной (около 2000 раз) через дебаг чаще всего не будет гонки, при просто ране гонка будет в 99% случаев. Если сделать 200000 раз то будет наоборот, в ран режиме должно быть число выше чем в дебаг.
Это и вызывало проблему у меня, в ране программа работает слишком быстро и возможно GC при расширении очереди умудряется убить ссылку на то что там хранилось до момента использования, что приводит к использованию null.
Сейчас проверил эту же прогу на ноуте и там такой ошибки не вылазит вообще, а у меня на i7 в большинстве ран запусков вываливается.
> возможно GC при расширении очереди умудряется убить ссылку на то что там хранилось до момента использования, что приводит к использованию null.
Очень маловероятно, если честно.
Но задачка интересная и я бы на твоем месте еще ее поковырял.
Метанита
Может это не GC, а ты присваивал объекту значение null, либо в результате каких-либо действий он получал значение null, до того как использовался в очереди.
Вот делаю я WPF. Добавил картинку в бэкграунд - и на предпросмотре все выглядит как пик 1
При попытке запуска вылезает ошибка - пик 2
Ну и соответственно XAML-код — пик 3
Первый день в WPF
А фиксить это как?
Да этим займусь сейчас, мне бы понять как запустить все это
Есть вот такой гипотетический код, в котором структура реализует интерфейс:
class Program
{
interface I { void Calculate(); }
struct S : I
{
public int X;
public void Calculate() { X += 1; }
}
static void Main(string[] args)
{
S s = new S(); Console.WriteLine(s.X); // s.X == 0
Work(s); Console.WriteLine(s.X); // s.X == 0, но надо сделать, чтобы было s.X == 1!!!
Console.ReadKey();
}
static void Work (I i) { i.Calculate(); }
}
Как в метод, принимающий интерфейс, передать структуру, реализующую интерфейс, по ссылке? Т.е. чтобы после отработки метода Work, поле X структуры S содержало значение 1? Как либо ref сделать не получается, компилятор бухтит.
>придумал гипотетическую проблему
>не смог решить
>Сделал вывод что это язык виноват
Не надо так няша.
Интерфейс - ссылочный тип. Когда ты приводишь структуру к интерфейсу, ты упаковываешь ее и запихиваешь в кучу. Это никак не исправить, так устроен сисярп.
Work (I i)
Здесь ты передаешь копию структуры. И тут
i.Calculate(); у тебя копия структуры с s.X==1
Дальше ты старую копию структуры выводишь где у тебя s.X == 0.
Вот так это дело будет работать как ты хочешь https://pastebin.com/WFifgcBy
И правда, спасибо.
Если кидаю картинку на форму то запись и панель отлично отображается, но как только запускаю программу появляется главная панель и вся прозрачность остаётся только на картинке формы.
Чего делать?
У меня все заебись с прозрачностью. Вообще, нахуй ты труп насилуешь?
>и вся прозрачность остаётся только на картинке формы.
Просто на картинке надпись прозрачна, но я стараюсь сделать прозрачной надпись не на картинке, а на панели со сгенерированными пикчербоксами и миникарте с генерированными маленькими пикчерами.
Я сейчас юзаю EventWaitHandle в колбеке, но чтог-то кажется это криво выглядит.
>я стараюсь сделать прозрачной надпись не на картинке, а на панели со сгенерированными пикчербоксами и миникарте с генерированными маленькими пикчерами
Конечная цель какова? Для чего ты борешься с прозрачностью там, где она практически не используется?
>на панели со сгенерированными пикчербоксами
Так сделай все контролы тоже прозрачными. Только лагать все это будет неимоверно.
Там предлагается ебашить хмл руками. Хмл руками я и в впф могу. Мне нужно визуальное конструирование форм (как в дельфе, охоспаде, да!)
Ладно, поставлю вопрос иначе: Существуют ли отдельные конструкторы форм, которые выдают на выходе сгенерированную хмл-схему?
Берешь и без задней мысли вызываешь .Wait()
Если автор апи не дурак и прописал везде ConfigureAwait(false)
Там олдскульная асинхронность, вызываешь метод в аргументе колбек, он тут же возвращает управление и вызовет колбек при ошибке или когда закончит работу.
На ум тогда ничего не идет, только костыли в виде флажков чтобы поток, вызвавший твой метод с коллбэком, делал sleep пока твой коллбэк не сбросит состояние. И то, если такое вообще получится в старом коде, может, он неизменяемый вообще.
Спасибо за совет! Сразу начал игру делать, а не с прозрачностью бороться!
Да там конфа вообще пиздец, я устал уже читать все статьи из их блогов. Наворотили миллиард всего.
Блять я только-только в это говно начинал залезать и в частности в зэмерин.
И какого хуя мне обратно укатываться?
Призываю любителей зреть в корень, понимающих как всё на нижних уровнях работает.
Есть три стула.
score = score + 1;
score += 1;
score++;
На какой самому садиться, а какой для калькулятора удобен?
Это оптимизация уровня б, или есть подводные?
на оппике шотик или лолька?
Что с дотнетом опяь не так? Поддержку 10- виндоусов отрубят?
Вообще похуй, все три варианта скомпилируются в одни и те же инструкции. С точки зрения читаемости score++ (ибо стандартый оператор инкремента во многих языках), и если прибавить n, то score += 1 (ибо короче, сразу понятно, что добавляется к текущему значению, ну и опять же самый распрастраненный вариант).
https://sharplab.io/#v2:C4LglgNgNAJiDUAfAAgBgATIIwG4CwAUMgMyYBM6AwugN6HoOanIAs6AsgBQCUt9jAsADtg6AM4BjAPYAnAKboAvOlT4CAgZNkLlW+enjpchAJAm9C+MuMEzF+PDUCAvoWdA
Компилятор такое сам оптимизирует. Первые два для него вообще разницы не имеют, третий вернёт значение score, а потом увеличит его на 1, четвертый ++score будет равносилен первым двум.
.NET Core в твоей Вселенной еще не завезли?
Если у тебя главный вопрос - кроссплатформенность, то учи Java, зачем тебе C#?
в дополнение.. еще хотелось бы материала по программированию и проектированию микросервисов
C# продукт microsoft следовательно хуйня
Да да, спасибо. Пока.
.Net Core. Сам недавно арендовал VPS на лине, запустил сервачок на неткоре для своей убер-ААА игры крестики нолики по сети поднял апач, запустил сайт на асп коре, зависимость есть.
При чём здесь продукт, долбоебина? У С# функционал богаче, чем у C++, при этом по производительности он уступает только из-за JIT компиляции, что при необходимости компенсируется при помощи .NET Native/Mono.
> c++ это продукт майкрософта
Хотел подвигать кнопочки на юнити и сделать так игрушку, а по слепленному на коленке видео гайду начал писать код без понимания почти всего. В итоге понял, что без базового курса ниасилить.
Нужны нормальные онлайн-курсы, чтобы можно было делать методы с кластерами без задней мысли. Насколько я понял, ещё и со сборником заданий для кодинга, чтобы руку как-то набить уже в процессе обучения.
Ну и тоненькую книжечку на 20-30 страниц для начального прочтения, обзор всего этого Вашего C# пооностью, чтобы понимать, примерно, каким инструментом я буду пытаться пользоваться.
Если возможно.
1. Ресурсы:
- https://metanit.com/sharp/
- https://stackoverflow.com/questions/tagged/c#
- https://www.tutorialspoint.com/csharp/
- https://professorweb.ru
- https://habr.com/ru/hub/csharp/
?
А книжка-брошюра-введение?
Пидоры, почему меня все игнорируют?
Так я сам не против получить ссылку на нормальный гайд. Пока только "довольствуюсь" метанитом, потому что у него хотя бы что-то в обновленном виде есть + в комментах иногда можно найти полезные обсуждения + это не мой первый ЯП, но даже при всём при этом ресурс хуйня и не должен рекомендоваться к ознакомлению. Вот сейчас его дочитаю и буду искать что-то полезнее.
Я шарп выучил по статьям в МСДН за пару недель. Но, правда я не школота и за плечами у меня бейсик, паскаль, SQL. Поэтому, тут сложно что-то посоветовать. Ссылки в треде вполне годные, по ним можно выучить шарп. То что ТЫ не можешь выучить - это уже твоя проблема. Может тебе сменить род деятельности? Может ты смог бы сделать карьеру в коровнике, выгребая говно вилами?
Можно и мышечную массу набрать, используя только вес своего тела (учить язык по статьям на мсдн), но я предпочитаю ходить в тренажерный зал и добиваться лучшего результата за меньший срок. Поэтому твой высер:
>То что ТЫ не можешь выучить - это уже твоя проблема.
Не имеет никакого основания. Я не говорил, что "не могу выучить", я сказал, что в шапке ссылки на говноресурсы.
P. S. по "я шарп выучил" сразу можно задетектить долбоеба, который написал Hello World и калькулятор, после чего решил, что он "выучил язык".
> >информация 3-х летней давности
Просто пиздец какая трабла и как это пиздец важно ньюфане который будет проходить базовые алгоритмы и базовые термины которые не менялись с начальных версий дотнета.
> >картавое чмо
Большинство преподов по программированию в интернете которые что-то реально понимают - поголовно шизоидные аутисты которые подают сухо и монотонно информацию. Этот на фоне них - Галустян на сборке соца, а сравнивать его и метанит == быть долбаебом.
Но тебе то хули - иди говно наворачивай на вкатываемся в прогромирование за 4 часа и метанит, ведь он картавый.
>Просто пиздец какая трабла и как это пиздец важно ньюфане который будет проходить базовые алгоритмы и базовые термины которые не менялись с начальных версий дотнета.
Если нужны базовые алгоритмы и термины, то лучше посмотреть CS50, пожалуй это единственное, что можно посмотреть не проблевавшись и усвоив полезную информацию. Ну а о том, что для программирования 3 года это не "пиздец какая трабла", будет говорить только мамкина хикка, которая ничего кроме программы для скачивания аниме-тайтлов за свою жизнь не написала.
>Большинство преподов по программированию в интернете которые что-то реально понимают - поголовно шизоидные аутисты которые подают сухо и монотонно информацию
Ох уж этот манямирок и проекции. Так и видишь в этих тщедушных существах своё отражение, да? Спешу тебя огорчить, но большинство шарящих как раз вполне адекватны и речь у них поставлена, вот только времени не хватает на то чтобы записывать обучающие видео, поэтому и лезут всякие дегенераты, которые прочитали пару книжек и возомнили себя охуенными учителями.
> будет говорить только мамкина хикка, которая ничего кроме программы для скачивания аниме-тайтлов за свою жизнь не написала.
Хуя даун, новые фичи за эти 3 года можно выучить за пару дней + студия сама подскажет что у тебя старый стиль который опять же никто не отменял и критически ничего не пизданется + есть куча бугуртов в виде -видим вы прислали нам код, а у нас тимлид пишет на старой версиинейм.
> Так и видишь в этих тщедушных существах своё отражение, да?
Я вижу только твою мозговую деменицию. И имел я ввиду русских преподов по алгоритмам/оптимизации/бигдате/нейронкам.
Покормил вообщем.
Этим тимлидом был ты? Когда там в твоих рогах и копытах праздники закончатся и ты перестанешь здесь срать проекциями из своего манямирка?
> И имел я ввиду русских преподов по алгоритмам/оптимизации/бигдате/нейронкам.
Вот это манёвры. Ничего, что изначально речь шла об обучающих материалах в интернете, долбоебина?
> Вот это манёвры
Госпаде, я за обучающие материалы в интернете писал, можешь зайти нахуй на ютуб - там даже от мылару/яндекса адовые аутисты. Если и есть нормальные (тот же картавый) то это явное исключение из правила.
> Этим тимлидом был ты
Этим тимлидом был альберт эйнштейн блять. Твоя галерка это тоже не весь мир, мань.
Пик 1 - мое главное окно.
Слева - фрейм менюшки (пик2)
Справа - фрейм, в котором должны открываться соответсвенные пункты меню (страницы).
Пытаюсь привязать к первой кнопке взаимодействие с правым фреймом (он называется Pagees), но компилятор пишет, что имя "Pagees" не определено в MainWindow. Как мне тогда к этому фрейму обратиться?
Короче, перефразирую - как обратиться к фрейму в окне, если код пишется в другой странице?
ну сходу ты MVVM не осилишь
Ящитаю, к тому всё и шло все эти годы. МС любит навыдумывать хуйни (дотнет), побочным результатом которой неожиданно выскакивает годнота (шарп) и затем дропать хуиту (дотнет) и поддерживать годноту (шарп).
И раньше можно было. Просто решили объединить .NET 4.8 и .NET Core 3.0 и сделать из него один .NET 5 c возможностями обеих.
Ну и как мне прям вот сейчас свой C# hello world в натив конвертнуть? Нельзя же, че врешь.
Нас там, шарперов, в гд какой-то выскочка унижает.
>Получается, что мне нужно парсить все посты на наличие реплая? А что, если посты содержат очень много символов и постов под 500?
Это же займет кучу времени?
Зачем? Тебе нужна табличка ид_поста - ид_ответа и все. Когда приходит новый пост ты регуляркой получаешь все ответы из текста и чекаешь эти айдишники в БД(тут можно одним запросом все проверить). И добавляешь записи в ту табличку.
Когда нужно посты доставать то просто джойнишь их ответами и выводишь. Изи сервер-сайд карта ответов.
Разумеется при изменении поста(если такое задумывалось) нужно проверять что убрали/добавили и обновлять карту. При удаление там поставишь каскад и всё.
Конечно обычно это делают скриптом, но тут клиенто-независимая карта.
Они там говорили про юнити и годот. И имелось ввиду что чего-то годного по шаблонам не построить и хочешь, нет придётся пилить свой движок для своих нужд. Причём здесь язык?
>на языке, работающего через виртуалку
Он поддерживает AOT компиляцию, которая используется в геймдеве.
А в мухосранях в топе 1с и жабийскрипс+пыха. В 200к селе не встречал вакансий на java/c#.
Ищи в цивилизованном мире. Удаленка щас распространена. Индусы вон работают везде из своей Индии.
Использую низкоуровневую команду KeyDown
но персонаж ведёт себя очень необычно, после нажатия клавиши он поворачивается в нужную сторону замирает на секунду, а потом начинает движение, как мне убрать эту задержку перед движением? KeyPress не работает корректно, персонаж вообще тормозит, а на Preview KeyDown вообще ничего не меняется.
private void FormGame_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.A:board.WalkHero(Arrows.left);break;
case Keys.D:board.WalkHero(Arrows.right);break;
case Keys.W:board.WalkHero(Arrows.up);break;
case Keys.S: board.WalkHero(Arrows.down);break;
//case Keys.Space: board.PutBomb(); break;
}
>низкоуровневую команду KeyDown
Та не. Це высокоуровнева команда. Низко уровнева це була б GetKeyboardDirectState(int DeviceIndex);
у тебя основной поток: считывает события клавиатуры, судя по всему, просчитывает механику движения, отрисовывает UI. че ты хотел-то?
Ну так парсинг файлов
>что именно в данном случае можно выполнять в отдельном потоке
У тебя массив xmlFiles перебирается в одном цикле, очевидно, что можно разбить этот один цикл на несколько и выполнять их в отдельных потоках.
Спасибо, а можно поподробнее? Вот, например, на вход будет подано значение 3 (потока), что мне делать?
Делить длину массива xmlFiles на количество потоков, например, если файлов 12, а потоков 3, то получится 4 файла на поток, в первый ты передаешь перебор с 0 по 3, во второй с 4 по 7, в третий с 8 по последний (в случае если число не делится без остатка в этот поток будет передаваться больше файлов чем в другие).
Использовать покадровую анимацию и списки?
Может спрайтовую и отрисовку внутри методов?
Или написать отдельный класс, к которому следует обращаться при каждой отрисовке всех картинок?
Я просто не знаю, как подступиться. У меня есть полностью работающая игра на пикчербоксах, но ей не хватает анимаций и звуков, так вот прошу мудрого анона кивнуть в ту сторону, в которую воевать.
Можешь перекатиться в vs code и взять это https://marketplace.visualstudio.com/items?itemName=RobbOwen.synthwave-vscode
Правда там написано, что эта штука еще сырая
Используй либу Newtonsoft Json.Net
Спасибо. Выглядит прикольно, жаль vs code не может как rider считай программировать за тебя.
А там чего-то похожего не нашел.
А вообще по мне полезный визуальный эффект, странно что его не внедряют в IDE в дополнение к подчеркиванию например.
Что за ptr?
System.arraycopy
Ты хуйню сделал, а не копию. Объявление new int[massive.length] в твоём случае вообще лишнее, потому что создает массив который ты не используешь, так как ты в цикле постоянно копируешь ссылку на объект, что тоже лишнее, так как можно один раз скопировать её перед циклом.
От тебя требовали сделать как на втором пике, но можно еще использовать стандартный метод класса Object - Clone()
Потому что листы поддерживают многопоточное чтение. Вариантов решения задачи масса, можно заюзать concurrent-коллекции или lock.
Такой долбоеб в нормальную компанию даже на стажировку бы не попал.
Долбоебина, при чем здесь lock вообще и синхронизация доступа к ресурсу. Где в моём посте ты вообще о синхронизации что-либо увидел? Какое нахуй "поддерживают многопоточное чтение"? Ты метанита начитался и у тебя каша в голове которой ты при любом удобном и не удобном случае теперь срёшь?
Пиздос.....ебать я тупой..... А если сделать так? Чего-нибудь изменится?
Так и нужно было сразу сделать.
А можно ли в твоем 2 примере как-нибудь вывести на экран все данные обоих массивов, не используя циклы типа foreach? есть варианты проще?
>Где в моём посте ты вообще о синхронизации что-либо увидел?
Ебать ты дебил, синхронизация потоков. Почитай основы про многопоточность, асинхронность, дедлоки, а потом кукарекай на двачах, "программист".
Нет. Можно только создать метод расширения у нужного тебе типа, в него написать нужную тебе логику и при необходимости каждый раз вызывать его у соответствующего этому типу объекта. Либо можно создать свой класс который будет хранить массив, перезаписать в нём метод ToString() таким образом чтобы он выводил значения этого массива в консоль, тогда этот метод будет вызываться при вызове Console.WriteLine(названиетвоегокласса).
Ладно, это для меня слишком сложно пока, буду пользоваться тем что есть.
Даун, блять, ты понимаешь, что просто начал нести одному тебе понятный бред когда никто об этом и не говорил? Я сказал, что можно разбить массив на N частей и работать с ними в потоках, как обрабатывать результат работы потоков я не говорил.
То что ты даун стало понятно уже после идиотского высера про семафор, который никак не решают проблему параллельного доступа к одним и тем же данным, потому что тебе придётся делать ограничение в 1 поток.
И так глаз замыливается , когда пишешь что-то больше, чем просто хеллоуворлд, а тут еще и такое..
Мб где-то я не очень очевидно выразился, но мне похуй и расписывать я не буду. Факт в том, что сплитить массив, чтобы отдать его в разные потоки это ламерство. А вообще поход в принципе не правильный, есть тпл, все это делается в пару строк и гораздо быстрее.
Первую библиотеку назовём father и она подключается в оба других проекта.
Вторую библиотеку назовём connected - она содержит некоторые методы в классах для работы с father.
Программа будет programнеожиданно и она будет динамически подключаться к connected во время работы использовать методы оттуда через рефлексию.
Так вот. Program передаёт в методы connected типы из father.
Можно ли в connected сразу в параметрах указать father.%TypeName% name и работать с ним как с типом father.
Или можно только object name и дроч типа:
name.GetType().GetProperty("Hyi").GetMethod.Invoke(name, null);
?
>сплитить массив
Слишком гениален для того чтобы передавать в разные потоки разные индексы начала и конца перебора одного массива?
>чтобы отдать его в разные потоки это ламерство
Да-да, уж кому если не тебе об этом судить, долбоеб.
Да это очевидно, лол. Вместо лаконичного решения, читабельного кода и быстродействия с твоим подходом получится полотно дрисни. Ты выбрал самое хуевое решение из возможных. Ты и сам это знаешь, просто у нас срач и ты не истину ищешь, а пытаешься отстоять свои интересы
Через код свойство ItemSource колонки работает, а через XAML разметку, как ему должно подобать, нет. Тупо выводит пустой список
Это уже зависит от того какие данные будут меняться во время работы потоков, если есть вероятность того, что они будут инкрементировать одни и те же переменные, то одной строкой не обойдешься.
Тебе не кажется, что не освоив хотя бы на базовом уровне один язык C# не стоит начинать учить другой язык (какая-то тарабарщина из Python и С#), просто в итоге окажется что я и язык не освою и ничего не сделаю.
Просто это похоже на что-то:
Проблема->поиск решения проблемы->использовать другой инструмент разработки-> Проблема ->...
Так осваивай на базовом уровне C#, почему ты думаешь, что перейдя сразу к практике у тебя что-то получится? Да еще и просишь чтобы получилось всё в оптимизированном виде, хорошо работающим и всё это на чистом C#, лол. Т. е. ты с 0 знанием языка хочешь написать на нём игровой движок, ты это понимаешь?
-> Юнити и C# ->...->Анреал и C++->...-> свали нахуй из геймдева и кодинга.
С демоном работает, держи класс.
>Тебе не кажется, что не освоив хотя бы на базовом уровне один язык
>не стоит начинать учить другой язык
Я уже лет 20 не мыслю такими категориями.
Учить надо алгоритмы и парадигмы. Затем, когда тебе дают новый язык, ты задаёшься совершенно другими вопросами: "Как на этом языке загрузить файл? Как на этом языке создать класс? Как на этом языке сравнить массивы?" и т.п.
А язык? Хули его учить-то? for case while yield скобачки - вот и весь язык.
Поэтому, предлагая там выше тот же годот (или юнити, не суть), я не предлагаю тебе учить другой язык. Я предлагаю тебе уже организованную предметно-ориентированную среду, в которой тебе не придётся лепить велосипеды, которые изобретены 30-40 лет назад. Но нет, гордый ньюфаг будет лепить rts'ку на winforms, ну а как же, он же формошлёпство в совершенстве знает! Он на полном серьёзе считает, что на winforms сделает быстрее.
Быдлокодить можно научиться за пару недель на любом языке, а для того чтобы писать хороший код, изучить все тонкости и аспекты языка и фреймворка нужны годы.
Быдлокодить реально научиться за 1-2 недели на любом языке, если хотя бы какая-то база есть уже.
Со школьным знанием паскаля за месяц вкатился в VBA. Долго на нём сидел. Со временем всё более понимал, что язык мерзок. Однажды созрел и за 2-3 недели въебал метанита по C#, после чего сносно умел всё, что было нужно. Хотя кривизна кода конечно присутствовала.
Далее за 2 недели вкатился в Си.
Далее за неделю вкатился в кресты.
Далее за неделю вкатился в питон.
Также за неделю вкатился в пхп.
ДиджиталМарсДи-чую этого!
Ну конечно, нормальный, ничего особенного здесь же все за месяц и неделю вкатываются на 4 языка.
В том, что придется писать только на элементах функциональщины. ООП нет, состояния нет, даже переменных нет.
Ну и ты понимаешь, что find(x => x == y) это нихуя не ФП.
Если б мне было лет 16 и я рвался кому-то что-то доказывать на двачах, я бы несомненно рванул изучать хаскель и показал бы тебе, что его вполне реально осилить за неделю, а может даже и раньше.
А самому не интересно попробовать что это такое? Ты и сисярп учил чтобы кому-то что-то доказать?
>А самому не интересно попробовать что это такое?
Конкретная задача нужна, которую мне понадобилось бы решить.
Сисярп учил именно так. Понадобился -> выучил.
Или ты быдло, или я аутист.
Учил сисярп просто так, училучу хацкель просто так.
Пробовал питон, но динамическая типизация порвала мне анус - очущение, что создатели ЯП решили усложнить разработчикам жизнь, перекинув проверку типов и документацию на программистов.
ну здрасьте, у тебя ж сокеты. т.е. ты вручную отправляешь сообщения каждому из подключенных клиентов
Да еще ебал бы я как эти сокеты работают. Гугол перелопатил весь, все ограничивается простейшими консольными чятиками, никаких интересных проектов, которые можно было бы разобрать по кускам и понять принцип работы этой херни, ууу сссука. Самое обидное, что это не самая сложная часть проекта, основное я уже сделал, а вот тут завис блять
ты делаешь чятек, но недоволен тем, что люди предлагают для примеров чятеки?
вот тебе вторая ссылка в гугеле про сокеты: http://rsdn.org/article/unix/sockets.xml . как по мне, достаточно хардкорная, хотя я не вчитывался
Кто его хейтит? Самый охуенный ресурс, все структуриповано, подробно рассписано. Как будто золотая середина между документацией и какими-то курсами по языку, где тебе 5 часов разжевывают что такое переменные и дают задания для практики.
Потому что у него там где нужно подробней - всё сжато. Там где нужно сжато - всё подробно. Много грамматических ошибок, которые он и не думает исправлять. Построение предложений вообще оставляет желать лучшего, вот один из примеров:
>Type myType = Type.GetType("TestConsole.User", false, true);
>И третий параметр указывает, надо ли учитывать регистр символов в первом параметре. Значение true означает, что регистр не учитывается.
Очевидно, что третий параметр указывает на необходимость игнорирования регистра. Но у метанита это почему-то "учитывать регистр символов" при этом true означает, что учитывать не надо, лол.
И в целом у него не гайд для вкатывальщиков, а обычный перевод статей с msdn, т. е. подойдёт его писанина только для тех кто уже знаком с языком и хочет освежить знания, своего рода справочник, при этом если ты хорошо знаешь английский, то лучше обратиться к msdn, потому что перевод у него оставляет желать лучшего.
МДСН нельзя читать последовательно. Каждая статья сама по себе. Это не учебное пособие, в отличие от метанита.
Метанит можно наебнуть особо не задумываясь и не обращаясь к другим ресурсам. И весьма глубоко вкатиться.
>Метанит можно наебнуть особо не задумываясь и не обращаясь к другим ресурсам. И весьма глубоко вкатиться.
Только если у тебя за плечами стоит подобный язык программирования, который ты изучал не по гайду от метанита. При этом как раз "глубоко вкатиться" не про метанита, потому что у него всё слишком сжато, не затрагивается внутренняя часть стандартных методов и принципы их работы. Если ты не собираешься делать что-то серьезно, если изучаешь язык для каких-то своих задач, при этом тебе не важно развитие как программиста, то да, метанит подойдет, иначе его можно использовать только как краткий справочник.
>МДСН нельзя читать последовательно. Каждая статья сама по себе.
Ты хоть раз туда заходил? Вот тебе ссылка:
https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task
Там расписан не только сам класс, но и добавлены различные заметки, по ссылкам из статьи ты узнаешь всё о TPL и о том что хоть как-то с ним связано, достаточно просто идти по цепочке ссылок. Чем твой метанит лучше?
> Это не учебное пособие, в отличие от метанита.
Если с метанитом сравнивать, то как раз мсдн это учебное пособие, а метанит это справочник или краткое содержание.
>достаточно просто идти по цепочке ссылок
Ага, примерно как в вики. Это не последовательное изложения. И когда в браузере открывается под сотню непрочитанных вкладок, ты понимаешь, что-то идёт не так. Кроме того, МДСН ОГРОМЕН. Тебе всё это просто не нужно, чтобы вкатиться. Пока не покодишь и не возникнут вопросы, столько инфы не нужно.
Метанит ведёт тебя за руку по основным темам. Ты пробуешь кодить, возникают вопросы, дальше уже сам гуглишь, в том числе и МДСН врубаешь.
Метаинит тебя не за руку водит, а за щеку вводит. Прочитав его в голове останется сумбур из нераскрытых тем и чёрных ящиков. Он говорит жать красную кнопку чтобы загорелась синяя лампочка, но никаких связей между ними не даёт. Если вкатиться это как макака по одному шаблону клепать говно - да, сайт полезный, прямо мануал «как зделоть программу за 5 шагов»
Метанит - это как розовенькие гантельки для дрища, впервые пришедшего в зал и желающего перегнать жир в мышцы бицепса к лету.
Не стоит сразу класть его под штангу, с которой работает стероидный мутант.
Красиво завернул про мутанта, ты прям мастер аналогий. Тебя в университете преподы не любили?
Это даже не совсем чатик, более похоже на мессенджер, аля телега. Алсо уже разобрался и вроде че то работает, только почему то при дисконнекте юзера рандомно в смысле иногда ломается поток на сервере и уводит сервак в бесконечный цикл. Но тут наверное мои про*бы, разберусь
если бы
Ну джуном точно возьмут, а там уже зацепишься -легче будет. Будешь понимать что к чему.
Она становится видна на компе, на котором компилируется VS проект.
А как передать её другому человеку, чтобы он её смог установить? Как создать установщик?
Я хочу также логировать, например, XmlExceptions. Но в консольном приложении try catch их не ловит, а сразу выкидывает ошибку. Как мне лучше поступить в этом случае?
>в консольном приложении try catch их не ловит
ну видимо ты указал перехват конкретного исключения? ибо схуяли
Если я пытаюсь обработать кривой файл, то у меня такая ситуация как на пике 2 вместо того, чтоб написать Something went wrong в консоли. Не очень понимаю, что именно нужно сделать в библиотеке.
там всего 3 основных страницы,и пару сотен людей будет
Значит тот кусок выполняется вне трай/кэтч. Показывай больше кода и желательно не скринами. Заливай на пастебин, если в ваш колхоз еще гит не завезли.
а лендинг?
> после чего заменять try catch на условия.
Ловите наркомана! Ты с какого языка перелез в шарп?
При чем здесь язык, долбоебина? Если у тебя существует возможность того, что путь к файлу будет пустым, то нужно проверять этот путь на пустоту, а не ловить подобное через try catch и уж тем более не генерировать самому исключения, потому что это сильно бьет по производительности.
юзай POST и передавай объект в body вместо урла. но это ебанатизм, равно как и то, что ты делаешь в данный момент
выкачивать производительность из try/catch - это уже удел околохайлоада. в насколько высокоуровневых языках над этом подобным сильно не парятся и исключения являются дефолтной практикой
менять post на get нельзя, проект не мой, а рабочий. у них тут в другом проекте была штука, которая позволяла через get объекты слать, но что-то я ее найти не могу, поэтому свою ставлю
Сериализуй в формат json и шли в строке запроса, раз постом нельзя, в чём проблема?
в том, что это не приходило мне в голову, спасибо
В том и дело, что даже в маленьких проектах это сказывается на производительности, не говоря уже о читаемости кода. try catch используется только в тех местах где вероятность непредвиденной ошибки высока, например в обработке ответов от ресурса за который ты не отвечаешь.
эм, я не спорю насчет производительности. я говорю о том, что зачастую эта потеря оказывается приемлемой (к сожалению)
можно, но это не совсем подходит
Зачем в дебаге делать трай/кэтч, а потом менять на ифы? Почему сразу нельзя делать нормально?
Потому что ты не всегда знаешь какой экспешн может вылезти и поэтому отлавливаешь любой в дебаге с помощью try catch, а потом уже создаешь соответствующее условия. Конечно, если ты знаешь все возможные ситуации, то можно сразу делать без try catch.
>C# теперь кроссплатформ?
Да, если ты не знал.
ASP.NET Core официально работает кроме винды также на линухе и макоси.
Не монстрее джавы.
я вообще пхп макака
1. Божественный C#, а не богомерзкий PHP
2. Что неожиданно от мелкософта - скорость и произволительность. Даёт пыху на клыка так, что тот не разгибается. И вообще, ASP.NET Core нонче в топах на первых строчках торчит по производительности
3. Очень продуманный и удобный MVC-фреймворк
4. Есть божественный LINQ для запросов к базе данных не покидая любимого языка (в самом C# есть подъязык запросов, чем-то похожий на SQL, либа EF Core или любая другая с поддержкой LINQ умеет эти LINQ-запросы транслировать в SQL)
5. По-человечески реализованная асинхронность вида async/await
6. Божественный менеджер пакетов NUGET, никогда ещё не было тянуть и обновлять зависимости проекта так божественно
Ну мне за эти деньги ещё и SQL знать наотлично полагается. То есть писать сложнейшие запросы на несколько страниц как дышать надо. И понимать в оптимизон запросов SQL, разбирать на лету планы запросов.
Вот мне преподов с сухой подачей, если можно. Каких можешь посоветовать?
Целесообразно, если ты его знаешь.
Современный .NET рулит в производительность, так что ставить его на говносерваки невозбранно весьма. На самом деле самая большая просадка по производительности - это база данных (особенно когда запросы идут к таблицам на десятки миллионов строк), но с этим ничего не поделаешь. А у самого .NET сейчас footprint вменяемый.
>Даёт пыху на клыка так, что тот не разгибается
Что за манямирок? Даже майки не скрывают, что пыха быстрее неё, вот пруфы:
https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=fortune
Пыха на две позиции выше
Готовые решения для чего?
А так, ASP.NET Core - это мощный и удобный фреймворк, если ты имеешь в виду наличие фреймворка, в котором есть и генерация страниц по шаблонам, и доступ к БД с мапингом на классы, и всё такое прочее - то это ASP.NET Core и есть.
Вот бы сейчас сравнивать среды, в которых используются разные базы данных. В одной - PostgreSQL, в другой - MySQL! Вот это неожиданность, что PostgreSQL подсасывает у мускуля на простых задачах (но уделывает на сложных).
Алсо, открываем вкладку latency
>asp.net core - 0.7 ms
>swoole - 3.4 ms
Вот это поворот!
В начале треда и в шапке - всё есть.
Ну можешь тут почитать тогда
https://docs.microsoft.com/en-us/aspnet/core/getting-started/?view=aspnetcore-2.2&tabs=windows
Так ты по другим вкладкам побегай. Ты ведь писал, что пыха сосёт, а она не сосёт, а обгоняет в чём-то, в чём-то проигрывает, но в целом лучше.
Приложение тупо выключается и все, никаких признаков жизни, в чем может быть дело?
Нет же, это стало происходить при переносе на другой комп и на Студии 19-го года, на прошлом компе такого не было
А тут я тупо выбираю файл и мне выдает, что Программа "[9252] iisexpress.exe" завершилась с кодом -1 (0xffffffff).
Значит перенёс так. Ты понимаешь, что ты сейчас похож на долбоеба, который говорит мастеру по ремонту компьютеров - у меня комп не включается, скажите что мне нужно починить и сколько это будет стоить? После чего уходит, потому что платить 200 рублей за диагностику, по его мнению, будет только лох, а хороший мастер ответит на его вопрос без диагностики.
Может быть эта проблема является распространенной или хотя бы встречалась кому-нибудь из треда.
Я же вообще не знаю, почему это может происходить, я тупо скопировал проект, установил в студию версию фреймворка 4.7.1, запускаю, выбираю файл и он нахуй крашится.
на прошлом проекте, помню, васяны в продакшн закоммитили изменение списка в foreach. так главное, это всей ихней тимой ревьювили и заапрувили
сука, понабирают метанитщиков по объявлению
Ох лол, я про изменение списка через foreach вообще сам допер, у них какие-то проблемы с головой.
https://metanit.com/sharp/articles/26.php
У меня все равно вырубается, в чем может быть проблема?
Имеется комплексное число z в тригонометрической форме в виде модуля r и аргумента f (в радианах):
z=r(cos(f)+isin(f))
Перегрузить операцию / для выполнения деления двух комплексных чисел в тригонометрической форме:
[r][/1](cos([f][/1])+isin([f][/1])):[r][/2](cos([f][/2])+isin([f][/2]))=r1/r2(cos([f][/1]-[f][/2])+isin([f][/1]-[f][/2]))
А хуй его знает, при отладке на других браузерах iis express не вырубается.
foreach выполняется по неизменной коллекции. в случае какого шороха, выбрасывается IOE "Collection has been changed" или как-то так
Не, я как раз понял, что это хуйня какая-то и все стал через for делать, если нужно изменить коллекцию.
О, ловите долбоеба. Вот потом такие допиральщики хуячат свой говнокод, хвалят мутанита и говорят, что освоили 10 языков программирования за неделю.
Если перебирать через for изменяемую коллекцию, то у тебя индексы по пизде пойдут и там где был индекс 3, после удаления какого-либо элемента будет индекс 2. При этом ошибки никакой не будет и ты прибежишь в тред с удивлённым видом, спрашивать что за хуйня, почему комп хуево работает.
кєк
Ну и че ты меня засрал, теперь чувствую себя довном
>Если перебирать через for изменяемую коллекцию, то у тебя индексы по пизде пойдут и там где был индекс 3, после удаления какого-либо элемента будет индекс 2.
Да, я таки с примером ошибся, просто когда-то пытался изменять коллекцию в цикле foreach и получив ошибку, перешел на for и у меня заработало, только я не помню, что там конкретно было.
В таких случаях надо через while или do while, конечно.
Вполне норм, просто A<int> и A<string> - разные типы каждый со своим набором членов/методов.
Чтобы я нажал на кнопку - фоновая картинка исчезла, нажал снова - появилась.
Перебирать можно любым циклом, хоть рекурсией. А чтобы удалять или добавлять элементы, существует несколько способов, один из них показан выше - создание копии коллекции, перебор этой копии и модификация оригинала. Можно заменять значения которые ты хочешь удалять на определенное значение, после чего вырезать их из коллекции при помощи методов LINQ, либо в отдельном цикле создавая новый массив без этих значений.
для особо одаренных уже несколько лет существует .NET Core
а так, как правило, лицуха для WS на несколько виртуалок обходится дешевле, чем пол-команды говнокодеров. и то, вопрос, что из этого эффективнее работает
Анон, как лучше отдать по URL и загрузить с URL'а JSON, если он большой?
Допустим, есть база в гигабайт,
и таблицы из неё и записи - в JSON конвертируются,
и надо эту базу синхронизировать на сервере,
подключаясь к другому серверу, в качестве клиента.
И, допустим, по GET-запросу на какой-нибудь 127.0.0.1:7346/api/prange/0-100
можно выгрузить 100 записей из базы.
Так вот, в качестве ответа - выдается JSON, в виде HTML,
но размер HTML-страницы ограничен, как и размер ответа на POST-запрос.
Что если этого JSON'a - гигабайты будут? Как его лучше обработать?
Есть функции какие-нибудь в C#?
Эххэххэх! :3 Нет, всё тот же. Лого не менял. Хочу p2p со списком нод и сливом базы с тора заебенить.
Делаю WPF, заполняю в нем ебаный DataGrip. Чтобы проверить корректность заполненной таблицы, приложение каждый раз запускать приходится. Можно как-то предпросмотр включить?
>Можно как-то предпросмотр включить?
Врядли. Я хоть и нуб в шарпе, но не нуб вообще и прекрасно помню, как появились первые виртуалгриды и как все от них охуели и стали невозбранно пихать во все языки и фреймворки. А виртуальный виджет в первую очередь уникален тем, что в нём данные отделены от логики, а значит, пока ты не начнёшь в рантайме подключать к нему данные, ты ничего не увидишь.
Есть программа на c#,накрытая KoiVM+Confuser
Купить не представляется возможным тк автор прикрыл проект.
Чем крякать?де4дот не осиливает виртуализацию никак,в днспай пробовал покопаться,но там ничего отображается+я сам не очень то шарю в реверсе
сэмл могу кинуть в телеге в боте,если нужно @helpmedvach_bot
кто поможет вскрыть - кину беткоенов
>Чем крякать?
IDA Pro 7.0
Вот гайд по РЕ: https://beginners.re/f572d396fae9206628714fb2ce00f72e94f2258f/
Так,за полезную книжку спасибо конечно,почитаю как будет время
А можно более короткий совет как,что и куда?
побыстрее просто нужно(
Охуеть у тебя вопросы. Как что и куда зависит от программы и типа защиты. Устанавливаешь IDA pro покупая на торрентах, запускаешь, если интуитивно не понял что к чему, то без чтения книги не обойтись.
защита = https://github.com/Loksie/KoiVM-Virtualization + https://github.com/yck1509/ConfuserEx
но ладно,все равно большое спасибо за книгу,буду читать
Мда, ппц ты тупенький. Ты скинул линки на обфускаторы, под защитой подразумевается отказ работы программы из-за того что отсутствует лицензия или т. п.
коивм не только обфускатор
для нормальной работы нужной мне программы нужно заменить некоторые переменные на свои значения,что невыходит сделать из-за кои
да,в РЕ ноль,извиняюсь
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d:DataContext="{d:DesignInstance MyGovnoModel}"
обращайся
Я тут мимопроходил и решил спросить, есть ли тут умельцы, которые могут мне зафигачить надстройку к Excel'ю для анализа данных?
1) Она должна уметь считать всякие описательные статистики, вероятности ошибки 1 рода по критериям Стьюдента, Манна-Уитни, Вилкоксона и пр., делать ROC-анализ и регрессионные модели, а также кучу другой статистической фигни.
2) Под эти расчёты генерировать красивые таблицы с описанием переменных
3) Из этих таблиц генерировать отчёт в word с текстовым описанием таблиц, автоматической нумерацией и прочими плюшками
В идеале сам стат анализ не писать ручками, а делать расчёт средствами R или Python.
Где мне можно поискать программиста под мои задачи, если тут никому такое не интересно?
Алсо, сколько примерно может стоить такая надстройка на 20-25 сложных функций?
У меня есть метод действия контроллера, есть еще один метод в контроллере, который помечен, что он не является методом действия.
Но, сцука, при применении маршрутизации по атрибутам он начинает мошнить, что я передаю параметр по ссылке
давай ты как-нибудь код запостишь?
Сто баксов это сто баксов?
Уже написал обертку для получения многих данных из игры теперь встал вопрос об архитектуре бота и тут слегка встрял.
Пишу скорее в целях самообучения чем с целью юзать бота и поэтому хочу сделать хорошую архитектуру, но опыта в этом не особо. Может подскажите примеры с хорошими реализациями или куда копать чтобы потом можно было проще расширять.
Копай в принципы SOLID и паттерны проектирования.
Практиковался при помощи отправки запросов на httpbin, по сравнению с Thread у Task нулевая многопоточность.
Кто-нибудь, поясните, пожалуйста.
А, всё ясно. Чтобы производительность была одинаковой, надо запускать таски с опцией LongRunning. Ебаный мутанит конечно про это ничего не сказал.
И название опции себя не описывает. У меня задачи не LongRunning, но мне нужно использовать эту опцию, иначе запросы будут отправляться в 2 раза медленнее.
Короче, разрулил это дело отдачей в JSON - N-ного числа записей,
по диапазонам, из рассчёта 2,5 MB на HTML-страницу.
Как-то вот так: https://stackoverflow.com/questions/3273205/read-text-from-response/14784904#14784904
LongRunning форсирует создание нового потока, в то время как все остальное использует ThreadPool
и это
> Task это запуск нескольких асинхронных задач в одном потоке
не самое удачное описание. хотя можно натянуть на правду
Он хоть как использует ThreadPool, просто без LongRunning он посчитает не нужным использовать отдельный поток для каждой задачи, будет примерно 2-3 параллельных потока.
Task это тоже самое, что и Thread, просто с возможностью тонкой настройки и дополнительными опциями, если они не нужны и тебе хватает функционала Thread, а также для тебя важна производительность, то лучше использовать его. Хотя и в случае с Task можно сделать упор на производительность, написав нужную логику для TaskScheduler. Task это как C# с его встроенным сборщиком мусора, а Thread это как С++ без сборщика мусора.
Вот как я в итоге всё понял.
Свежий это 2019 года? Есть только 2018.
А задач 50+, поэтому "посчитает не нужным использовать отдельный поток для каждой задачи". Хули ты тупой то такой?
ты какой-то дурачек. только два фактора, а именно:
- вызов через TaskFactory.Run(() => {})
- использование LongRunning
форсирует какой-то пердолинг с потоками. все остальное не гарантирует от слова "не" исполнение кода в другом потоке. даже если у тебя 50+ задач
Долбоеб, какие два фактора, какой пердолинг, какие, блять, гарантии. Это программирование, а не рулетка, в C# есть 2 класса для использования потоков - Thread и Task. Я написал, что используя Task без опции LongRunning он будет оптимизировать работу таким образом, что выполнение задач (в конкретном случае, в остальных не знаю) будет происходить медленнее чем при использовании класса Thread, потому что TaskScheduler в Task будет ограничивать количество параллельных потоков, в отличии от Thread который запускает их до тех пор пока на это есть ресурсы. Ты же несёшь какой то, одному тебе понятный, бред.
Сейчас даже сложно представить работу без веба, не говоря уже о её нахождении. Шарп как раз и создавался с уклоном для удобной работой с вебом, если не хочешь веб, то твой выбор С/C++, но это если ты не был бы тупым. Для тупых существует 1С - веба нет, уровень вкатывания низкий, работы полно.
Коммерческий веб - это продажи и реклама. Веб - это обслуга. Веб не производит, веб продаёт. Это низшее звено пищевой цепи. Веб - это просто вершина айсберга. Веб-программисты, бухгалтера, менеджеры по продажам - тоже нужны. Но не нужно забывать, кто тут соль земли, гегемон, а кто надстройка, сервис.
Веб-программист - это проходимец, случайный человек в профессии. Идти в веб для войтивайтишника - это нормально. Но для грамотного специалиста, который в первую очередь математик, физик и инженер, а знаток модных фреймворков, идти в веб - это зашквар и клеймо в трудовой, после чего остальные дороги перед тобой закроются. Вебошлёп - как опущенный на зоне. Стать им легко, но с нормальными программистами за один стол уже не сядешь.
>я же несу всем понятный бред: он будет оптимизировать работу таким образом, что выполнение задач будет происходить медленнее
>ты несёшь какой то, одному тебе понятный, бред
>в C# есть 2 класса для использования потоков
Task это не класс для использования потоков. Таск тебе позволяет выполнять задачу асинхронно или синхронно, а потоки разруливает clr.
>в конкретном случае, в остальных не знаю
Создание потока оче дорогая операция, поэтому и сделали пул. Если таска маленькая, то быстрее взять из пула, если здоровая, то указывай longrunning и возможно, тебе дадут отдельный поток.
>>402017
>TaskScheduler в Task будет ограничивать количество параллельных потоков,
Больше всех количество потоков ограничивает cpu, создавая кучу потоков ты проебешься на переключении контекста.
Очередной падаван метанита? Зачем вы вообще лезете что-то объяснять? Ты же сам ничего не понимаешь, даже не различаешь асинхронность и многопоточность, но высрать мнение всегда горазд. Прочитай нормальную литературу хотя бы.
>Task это не класс для использования потоков.
Task это класс для использования потоков. Это обычная библиотека для работы с потоками, более высокоуровневая чем Thread.
Да уж, это у тебя каша в голове про асинхронность/многопоточность. Таск (как нетрудно догадаться из названия) это задача, обычно асинхронная. То что таска внутри использует потоки это деталь реализации.
>для использования потоков
ну поуправляй потоками через таску, все посмеемся
>>402358
> Это обычная библиотека
Это не библиотека. Есть TPL - это про многопоточность, сами таски - это асинхронность. И если ты считаешь, что таски это инструмент для работы с многопоточностью, то что тогда в твоем понимании асинхронность?
А ты думаешь тут сидит кто-то кроме студентов-школьников, вкатывальщиков и перезрелых джунов?
>The Task class represents a single operation that does not return a value and that usually executes asynchronously. Task objects are one of the central components of the task-based asynchronous pattern first introduced in the .NET Framework 4. Because the work performed by a Task object typically executes asynchronously on a thread pool thread rather than synchronously on the main application thread, you can use the Status property, as well as the IsCanceled, IsCompleted, and IsFaulted properties, to determine the state of a task. Most commonly, a lambda expression is used to specify the work that the task is to perform.
>For operations that return values, you use the Task<TResult> class.
Какая блядь работа с потоками?
Перетолстил.
>Да уж, это у тебя каша в голове про асинхронность/многопоточность. Таск (как нетрудно догадаться из названия) это задача, обычно асинхронная. То что таска внутри использует потоки это деталь реализации.
Вот это манёвры. Ты же сам себе противоречишь, дурачок. Таск использует потоки, следовательно сам класс используется для использования потоков, о чём я и говорил.
>ну поуправляй потоками через таску, все посмеемся
Задаю задачу для потока, могу её отменить, какое тебе еще управление нужно?
> Есть TPL - это про многопоточность
Таск это часть TPL, хуесосина.
>сами таски - это асинхронность
Асинхронность с использованием потоков.
>то что тогда в твоем понимании асинхронность?
Асинхронность это когда ты работаешь в рамках одного потока, когда выполнение когда асинхронного метода чередуется с выполнением кода в этом потоке.
>>402439
На пикриле.
Был бы хорошим предисловием, если бы не, большей частью, устаревшая информация, например:
Thread myThread = new Thread(new
ParameterizedThreadStart(Count));
myThread.Start(number);
Во-первых, можно писать без new ParameterizedThreadStart, во-вторых, можно передавать лямбда-выражения вместе с функцией, добавляя в неё нужные параметры, тем самым избавившись от необходимости приведения к объекту, как если бы мы передавали параметр в myThread.Start.
Также куча грамматических и стилистических (пример выше по треду) ошибок. Плюс информация дана в сжатом виде, многие моменты не объясняются, он просто говорит - пишит вот это, получишь вот это. Не вдаваясь в подробности, которые важны при разработке приложения сложнее Hello World.
Его можно рекомендовать не вкатывальщикам, которые надеются работу найти, а любителям, которым нужно написать небольшую программу на которой их знакомство с программированием закончится.
>их знакомство с программированием закончится
Закончится их знакомство с метанитом и продолжится знакомство с более сложными ресурсами. В учебнике для начинающих не нужны лямбда-функции. Это же для начинающих!
Они там есть, но не в этом месте.
>продолжится знакомство с более сложными ресурсам
Это хорошо, но не в этом случае, потому что в этом случае им придётся еще и забывать то чему учил метанит, перестраивать всё в своей голове на новый лад и тушить жопу от осознания того, что мутанит их наебал.
Ты это на себе испытал?
>перестраивать всё в своей голове на новый лад
Рофлишь? Это не на функциональщину после трёх лет c#/java переходить. Всякие микромоменты в написании кода типо того, что ты написал про объявления thread на автомате правильно перезапоминаются, просто от практики, а для чего-то сложенее hello world зачастую вообще нет идеального решения и каждый сам доходит до того, что ему кажется лучше.
Двачую. Вообще, начинал с метанита, кодил, задавал вопросы на форумах, гуглил вопросы, курил мдсн параллельно. Отлично всё зашло.
Но метанит был тут краеугольным камнем, потому что он хотя бы вел меня последовательно от простого к сложному.
Имхо, начинать надо как раз, пардон за тавтологию, с начала, потом уже обмазываться сахаром. А то потом будут всякие вопросы из-за непонимания во что оно там превращается компилятором на самом деле а-ля
двач, чому такое ниработаит!!!?!?!
label1.Invoke(()=>label1.Text = "anus");
я сижу)
Не, я когда его начал читать, то понял что это хуйня не для новичков, новичок там просто ничего не поймёт. Поэтому изучил JS по хорошему учебнику Кантора. К мутаниту вернулся только после освоения JS, и только убедился, что это полное дерьмо, а не учебник, поэтому быстро пробежался по нему, а С# учить начал по C# 7.0
in a Nutshell от O’Reilly
>>402553
Это не отменяет того факта, что нужно уточнять как это делают на практике. И в том то и дело, что у него как раз подача материала без малейшего объяснения о том "во что оно там превращается компилятором".
Пилт перекат, анимечник.
Ну это ж вообще не деньги. Лучше уж (с)крипо-макакой на фриланс идти, денег будет столько же, а времени свободного вдвое больше.
Так у нас долбоебов 99%, классик хорошо написал:
К чему стадам дары свободы?
Их должно резать или стричь.
Наследство их из рода в роды
Ярмо с гремушками да бич.
Вся суть русского человека. Готов сосать хуй за 15к уродов с синдромом вахтера (а чем хуже шаражка, тем чсвшней в ней начальство и те кто рядом с ними), когда под носом ворох куча вакансий с хорошей зарплатой, всё что требуется это переместить жопу с насиженного места. Про фриланс ты уже сказал, всё так. Всегда охуеваю, когда слышу, что кто-то со знанием миддла получает 40-70к, когда я со своими знаниями, которые даже на джуна не тянут, зарабатываю по 80-120.
Бля, вы спросили про мухосранск, я вам про мухосранск и ответил. В Томске с зарплатами дела обстоят вот так.
Где ты недоджуном получаешь 80-120? Что за компания? Кинь вакансию
Томск - это не пуп земли. Нет никакого томского рынка труда программистов. Для программистов он международный. Ну ок, английский ты не знаешь. Английский выучить проще, чем Ц++. Но раз ты этого не сделал, ты - второй сорт, и рынок твой - СНГ. Ок, но ты даже не желаешь знать, а как там в соседнем городе, как в ДС с вакансиями для тебя, какие там зп. Тебе это не надо, ты - третий сорт, ты готов получать гроши. Тебе будут платить ровно столько, чтобы ты с голоду не помер, но чтобы не было ни какой возможности скопить на переезд. Даже чтобы получить зарплату ты каждый месяц будешь ходить к начальнику на приём в кабинет, записываясь заранее через секретаршу, и будешь челом бить, мол срок зарплаты уже давно подошел, а мне ещё аванс за прошлый месяц не дали. Будешь умаливать, объяснять, на что это тебе так деньги понадобились, что ты даже потерпеть не можешь, как русский человек. И тогда может быть твой хозяин позвонит в бухгалтерию и даст команду перечислить Сычеву его копейки. Но тебя всё устраивает. Не жили бохато, нехуй начинать.
Замкадск - не пуп земли. Нихуя там нет и не будет. Нихуя там тебя не ждёт, кроме храмов, заборов, исправительных колоний, наглых чиновников и мусоров, агрессивного пьяного вымирающего и к чему не стремящегося в жизни быдла, а также бабок, которые уже сейчас составляют 99% населения сёл, а лет через 10-20 такая же ситуация будет и в ныне ещё относительно крупных 100к+ Засрансках.
Есть единицы, которые не могут переехать по очень специфическим причинам, типа болезней родственников. Но перед большинством все дороги открыты.
Это блять какое-то добровольное крепостничество.
Двачую этого. Начал с себя зимой и уволился с работки, где платили гроши. На выходное купил средства производства. Буду работать на себя!
>Где ты
Дома, сидя в своём комфортном кресле. Я ФрилансоБог. А писал я это к тому, что мухосранские программисты сами создали себе такие позорные зарплаты, потому что если бы они переезжали в ДС/ДС-2, если бы работали удаленно, то уровень зарплат бы резко возрос. Но у нас народ терпеливый, любит лизать барский сапог и говорить, что барину не легче чем ему, что все терпят и он должен терпеть, что это его судьба, а судьбу не изменить и еще куча оправданий.
Шарпоёбочную.
Представь мои чувства, как я переустанавливаю шиндовсы на селе за 12к.
>если бы они переезжали в ДС/ДС-2, если бы работали удаленно, то уровень зарплат бы резко возрос
охуеть манямирок
Он может и неказисто изъясняется, но в целом верно: работодатель платит ровно столько на сколько соглашается работник и ни копейкой больше. Люди о которых тот анон говорит - работают за гроши. И их не жаль. Но они - штрейкбрехеры, которые не позволят тебе потребовать повышенную зарплату. Потому что как только ты захочешь 40К тебя заменят уасей, который готов лизать сапог за 20к.
ну как бы в объективной реальности уровень зарплат и цен в мегаполисах выше, чем в мухосрансках. от того, что четверть людей (уже хуй знает сколько поколений) ездит в москвы на заработки, зарплаты в селах не растут
а от этого:
>тебя заменят уасей
и в дс-ах, уверен, достаточно. возможно, IT - не самый удачный пример рыночка
В шаблоне консольного приложения они есть, в пустом проекте их нет - но в пустом я всё равно могу работать с консолью.
С вот этим вообще не понятно:
https://docs.microsoft.com/en-us/visualstudio/ide/managing-references-in-a-project?view=vs-2017
Before you write code against an external component or connected service, your project must first contain a reference to it. A reference is essentially an entry in a project file that contains the information that Visual Studio needs to locate the component or the service.
Чтобы подключать другие сборки и использовать их во всём проекте. Если удалить ссылку на сборку System, то твой проект не скомпилируется если ты используешь что-либо из System. Помимо этого, если в System есть класс который ты используешь и этот класс, например, возвращает тип или наследует класс/интерфейс из другой сборки, то без ссылки на эту сборку твой проект тоже не скомпилируется.
Что тут непонятного?
>Если удалить ссылку на сборку System, то твой проект не скомпилируется если ты используешь что-либо из System
на самом деле компилятор очень настойчивый и подпихивает тебе System неявно всегда и в любом случае. в .NET Standard, возможно, уже все не так
Не знаю о чём ты, только что удалил System из проекта и он перестал компилироваться.
ну хз, может это дело прошлых дней такое было
вообще, запуск приложения зависит от типов, которые обьявлены в System. т.е. без него сделать принципиально ничего нельзя, даже если ты там чето себе выебываешься и в коде не используешь инты с булами. поэтому логично не давать человеку возможность заниматься глупостями
раскладку QWERTY и название языка программирования
>Что тут непонятного?
Если я создаю пустой проект, то References не заполнены, но использовать ту же консоль я могу.
Вот что не понятно.
void __fastcall TForm1::Button1Click(TObject Sender)
{
Memo1->Lines->Clear();
int A[4]; int B[5];
int m;
String One, Many;
for(int i = 5000; i < 10000; i++)
{
One = IntToStr(i);
for(int j = 0; j < 4; j++)
A[j] = StrToInt(One[j + 1]);
if(A[0] & 1) continue;
m = i 2;
Many = IntToStr(m);
for(int j = 0; j < 5; j++)
B[j] = StrToInt(Many[j + 1]);
if((B[1] == A[3]) && (B[2] == A[0]) && (B[4] == A[0]))
{
Memo1->Lines->Add("ОДИН - " + One);
Memo1->Lines->Add("МНОГО - " + Many);
Memo1->Lines->Add("");
}
}
}
Ты программируешь больше одного дня?
Блять, ты понимаешь, что ты этот пустой проект себе в жопу засунуть можешь и он у тебя не скомпилируется без ссылок? Написать Console.Write() это не значит - использую консоль.
Да.
1. Как вы жили до лямбда-выражений? Анонимными функциями? Или просто тогда иной подход к построению api был?
2. Когда нужна была какая многопоточность/асинхронность (типа доступа в БД, файл, интернет, обработка вэб-запросов) ебашили новые thread's? Или просто меньше с потоками заморачивались?
3. До LINQ коллекции ручками в foreach обрабатывали, или были какие сторонние библиотеки?
4. Как вам вообще развитие дотнета и C#? Есть ощущение, что что в них накапливается устаревший хлам? Или изначально хорошо спроектировано было? Есть какие хотелки? Зачем?
1. анонимные функции - это и есть то, что ты называешь "лямбда-выражениями". и обходились ровно так же, как и компилятор теперь генерит код с анонимными функциями
2. ThreadPool (как и сейчас тащемта). ручное создание потоков - это либо говнокодерство, либо очень специфичный кейс, в котором тебе реально нужно иметь контроль над потоками
3. так расширения LINQ тебе и говнячят foreach. просто приходилось писать свои рофлоитераторы, пытаясь привести все в божеский вид. просто с выходом 3.5 все стало из-под коробки и, наверное, гораздо качественнее
4. все идет в такой синтаксический сахар, что можно пару диабетов себе заработать. причем, профита от подобных "конструкций" ровно нихуя, а иногда даже вреда больше
Спасибо за ответ.
>4. все идет в такой синтаксический сахар, что можно пару диабетов себе заработать. причем, профита от подобных "конструкций" ровно нихуя, а иногда даже вреда больше
Хуя старичка рвёт. Что ты в C# нашел? Пиздуй в С очередной костыль придумывать и изобретать колесо, зато без сахара. Для тебя наверно и нововведенные котрежи тоже сахар и нинужна, да?
хуя ты порвался от того, что меня не порвало. если язык хорош, то должен быть полон сахара, или давать какие-то реальные возможности?
нововведенные кортежи - это ты про такие старые кортежи, только объявленные в скобочках? мне ниинтиресна "развитие", которое не дает новых возможностей языку. все, что нахуярили с 5й версии, за исключением ref struct можно написать по-другому и, очень чаще, гораздо понятнее. лол, до сих пор null-propagation operator нормально не воспринимается Expression Tree. ну, типа, у тебя есть оператор ?, но воспользоваться им, пожалуй, ты не можешь
я это и за развитие не могу посчитать. развивается .NET как таковой, в то время как компилятор только стал рослином, а дальше как бы нахуя?
опять очередной ебанутый сравнивает производительность нативного кода и виртуалки, на ходу генерящей код
производительность донтета, по сравнению с другими языками, выполняющимися через ВМ, достаточно неплоха. но это не значит, что можно положить хуй и не доводить ее до еще более высоких показателей
Он может частично и без виртуалки работать, но даже в таком случае у джавы сосёт.
Дохуя работ вида "Сделать программу в которой будет таблица и возможность подгружать данные формата Word, .csv", дохуя работ вида "Сделать прогу которая будет регать мне аккаунты". С# для этого идеально подходит.
>Так то avalonia есть ещё.
У неё хеллоуворлд без танцев с бубном не заработал, выдав кучу ошибок. А у ето - заработал. 1:0 в пользу ето. Однако же, всё еще не могу найти фреймворк, сходный по функционалу с винформс: Конструирование форм мышкой искаропки на всех поддерживаемых платформах.
Непонятно, что не так с девелопингом? Либо все отказались от формошлёпства, либо я классически не вижу простого и очевидного для всех кроме меня решения.
>>404618
Смотрю сейчас это. После просмотра отпишусь.
https://www.youtube.com/watch?v=8qzqweimcFs
>все пацаны на электроне ебашат.
Блять, стойте. Это тот самый Electron.js на котором можно писать десктопные приложения зная js? Или это просто названия совпадают? Хотя интерфейс у них тоже похож.
Чёт почекал гугол, не нашёл правильного ответа
Удваиваю вопрос.
>>404665
Либо это толстота, либо новичок, который вместо чтения учебников несёт хуйню на двачах.
Такого метода не будет в классе Program, который ни от чего не наследуется.
Как пофиксить?
1. Изучить ООП. Узнать что такое наследование.
2. Изучить дотнет, узнать какие классы отвечают за локализацию.
3. Подключить класс-локализатор (имеющий метод сетлокейл) к своему проекту таким способом, каким это запроектировано.
4. Профит.
лол
Короче, всё на словах круто, а по факту всё привязано к вижуалстудии.
Есть Xamarin'щики в треде?
Бляяяяяяяя, какой же это жопный пиздец, слов нет - хуета зависающая, постоянно вылетающая и работающая через хуй знает что. Ебаный рот, бомбит с этой срани.
Ну да ладно, я отвлёкся. Скажите пожалуйста, где можно найти нормальной информации, актуальной (!) по Xamarin'у. Если что, то пишу под Xamarin.Android, Forms не юзаю - по отзывам говорят, что можно сразу в могилу ложиться.
Интересует темы как замутить простенькую авторизацию (можно без подключения к БД), созданием файлов для хранения данных.
Я в мобильной разработке не бум-бум, последний раз делал что-то 4 года назад, более не пригождалось, а сейчас дали тестовое задание, и там на выбор две задачи: мобильное приложение либо задача на логику с ИИ.
Прошу помощи, нужны книги/документация/видео, буду очень благодарен. На ютубе в основном размещение сраных кнопок.
пик1 - то что должно выводиться
пик2 - то что на самом деле происходит
Добавлю, дома на вижл студио 19-го года всё збс работает, тут на ВС 13-го всё ебётся через жопу
Очевидно, у тебя хуёвый код. Ты, конечно молодец, что не хочешь его показывать и обрезал все по-максимуму, но помочь тебе без кода не получится.
На
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace ConsoleApp58
{
class Program
{
private static char[] NonVariableCharacters = { '+', '-', '/', '', '=' };
private static string[] Riddles =
{
"СИНУС + СИНУС + КОСИНУС = ТАНГЕНС",
"ДВА ДВА = ЧЕТЫРЕ",
"ОДИН + ОДИН = МНОГО"
};
static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
foreach (var riddle in Riddles.OrderBy(a => Guid.NewGuid()).ToArray())
{
bool isSolved;
Console.WriteLine("Riddle:{0} ", riddle);
do
{
Console.Write("Solution: ");
var solution = Console.ReadLine();
isSolved = IsSolutionMatchesRiddlePattern(riddle, solution) &&
IsSolutionCorrect(solution);
Console.WriteLine(isSolved ? "Right" : "Wrong");
} while (!isSolved);
}
}
static bool IsSolutionMatchesRiddlePattern(string riddle, string solution)
{
if (solution == null)
return false;
riddle = riddle.Replace(" ", "");
solution = solution.Replace(" ", "");
if (riddle.Length != solution.Length)
return false;
var mappedChars = new Dictionary<char, char>();
return riddle
.Zip(solution, (riddleChar, solutionChar) =>
{
if (NonVariableCharacters.Contains(riddleChar))
return riddleChar == solutionChar;
if (mappedChars.Keys.Contains(riddleChar))
return mappedChars[riddleChar] == solutionChar;
mappedChars[riddleChar] = solutionChar;
return true;
})
.All(t => t) &&
mappedChars.Values.Distinct().Count() == mappedChars.Values.Count;
}
static bool IsSolutionCorrect(string solution)
{
solution = solution.Replace(" ", "");
var computedParts = solution
.Split('=')
.Select(t => new DataTable()
.Compute(t, null)
.ToString())
.ToArray();
return computedParts.Distinct().Count() == 1;
}
}
}
На
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace ConsoleApp58
{
class Program
{
private static char[] NonVariableCharacters = { '+', '-', '/', '', '=' };
private static string[] Riddles =
{
"СИНУС + СИНУС + КОСИНУС = ТАНГЕНС",
"ДВА ДВА = ЧЕТЫРЕ",
"ОДИН + ОДИН = МНОГО"
};
static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
foreach (var riddle in Riddles.OrderBy(a => Guid.NewGuid()).ToArray())
{
bool isSolved;
Console.WriteLine("Riddle:{0} ", riddle);
do
{
Console.Write("Solution: ");
var solution = Console.ReadLine();
isSolved = IsSolutionMatchesRiddlePattern(riddle, solution) &&
IsSolutionCorrect(solution);
Console.WriteLine(isSolved ? "Right" : "Wrong");
} while (!isSolved);
}
}
static bool IsSolutionMatchesRiddlePattern(string riddle, string solution)
{
if (solution == null)
return false;
riddle = riddle.Replace(" ", "");
solution = solution.Replace(" ", "");
if (riddle.Length != solution.Length)
return false;
var mappedChars = new Dictionary<char, char>();
return riddle
.Zip(solution, (riddleChar, solutionChar) =>
{
if (NonVariableCharacters.Contains(riddleChar))
return riddleChar == solutionChar;
if (mappedChars.Keys.Contains(riddleChar))
return mappedChars[riddleChar] == solutionChar;
mappedChars[riddleChar] = solutionChar;
return true;
})
.All(t => t) &&
mappedChars.Values.Distinct().Count() == mappedChars.Values.Count;
}
static bool IsSolutionCorrect(string solution)
{
solution = solution.Replace(" ", "");
var computedParts = solution
.Split('=')
.Select(t => new DataTable()
.Compute(t, null)
.ToString())
.ToArray();
return computedParts.Distinct().Count() == 1;
}
}
}
В Следующий раз еще скриншот прикрепляй, чтобы выбор был - догадываться в каком месте двач вырезал символы и вставлять их или переписывать код с скриншота.
Хорошо видно скрин, то?
Убери строку Console.OutputEncoding = Encoding.UTF8;
Так никто и не говорит про сисярп. На нём и на фултайме самые низкие зп в отрасли, а на удаленке и вовсе работы нет. После шарпа навернуть джаваскрипт или питон на уровне макаки - это дело пары вечеров.
А вообще я хуею с моноязыковых "программистов". Может у сайтошлепов какая-то своя атмосфера, но я после того, как более менее освоил первый язык (С++), переход на другой язык для решение какой-то специфической задачи, мне казался совершенно обыденным и рутинным делом.
>сайтошлепов
У них нет классов и строгой типизации. После такого сложно привыкнуть и освоить полноценный ЯП.
сохраняй данные построенных фигур куда-нибудь
Короч, нужна срочнопомощ. Ощем в пн у меня будет собес в крутую контору, которая хочет себе C# чела для решения задач с билингом на микросервисах. Я туда не прошел собес 2 года назад и вот, еще раз пригласили. Я знаю что они будут спрашивать, наверно имэто очень надо.
МНЕ НУЖНА ИНФА ПО АЛГОРИТМИИ! Мне нжно понимать во всей это срани, желательно в C#
- сложность алгоритма
- откуда ростут ноги у Dictionary и Hashtable
- стандартные алгоритмы и их сложность
знаю про гугл, но блять нужно что-то простое типа вот этой хуеты: https://refactoring.guru/ru/design-patterns/catalog
Жона Скита не успеваю почитать, увы.
Посоны, я пришёл вас немного пошарпать.
Анус себе шарпай, пёс.
Да.
>читаю ща ментанит
>сложно блять
>собес в крутую контору
>не прошел собес 2 года назад
у меня для тебя очень плохие новости
>Жона Скита не успеваю почитать, увы.
>не прошел собес 2 года назад и вот, еще раз
Два года нихуя не делал, не развивался. Так тебе и надо, поделом!
Да.
Выше всё правильно написали. За 4 дня ты алгоритмы не выучишь. За 4 дня их только повторить можно, но ты ничего про них не знаешь, судя по тому, что для тебя метанит сложный.
Лучше откажись от собеса, а то ведь у них там все данные регистрируются и они знают, что ты собеседовался 2 года назад. Представь как им за тебя будет стыдно за тебя и омерзительно, после того как они узнают, что за 2 года ты никак не улучшил своих знаний.
>им за тебя будет стыдно за тебя
да ладно, если это рили серьезная контора, у них таких дурачков девять из десяти приходят
Тогда не стоит идти из соображений приличия. Зачем отнимать у людей время и пытаться их обмануть?
Майкрософт сейчас пизданули, что и кор тоже не будут апдейтить. типа будет сплошной .NET
https://devblogs.microsoft.com/dotnet/introducing-net-5/
Ты если английский не знаешь, то просто проси чтобы тебе рассказали о чём там в статье говорится. И говорится там как раз противоположное - больше не будет net и net core, а будет новый net - совокупность одного и другого, и упор делается как раз на core потому что он более мультиплатформенный.
Удали это - Console.OutputEncoding = Encoding.UTF8
и если не поможет попробуй поменять шрифт в консольке.
за 2 года у меня
+ 70-487 сертификат
+ ангуляр
+ JS на хорошем уроне
+ azure
+ teamcity
мои потуги с episerver - впизду. увы, но это дерьмо, кроме родных даков никому не всралась :\
>>405129
>>405148
>>405156
вот это >>405183
в конце концов, я ж не вчерашний. я больше боюсь того что меня таки возьмут! а там это дерьмо понадобится
корче, я обмазываюсь манулами на инглише. они какие-то полегче будут + нашел вот это https://github.com/aalhour/C-Sharp-Algorithms
...как-то так
жаль что вы, сука, слишком, блять, умные, нахуй.
короче, ты стал скриптомакакой и узнал, как создавать ресурс-групы в ажуре. ну так и оставайся скриптомакакой, нахуя тебе алгоритмы
хочубольшеденег.
Перегруженная функция - любая функция, которая имеет название какой-то существующей функции, но отличается от неё сигнатурой (входные и выходные параметры)
Ответь для начала, что ты подразумеваешь под оболочкой?
Ты имеешь в виду, есть какой-то промежуточный проект или как?
так шоб было все взаправду,
шоб сразу все понятно
шоб оно там делало как надо, а не вот это вот все.
даффайте, пЕплы. вы можете
+ 70-487 сертификат
+ ангуляр
+ JS на хорошем уроне
+ azure
+ teamcity
Ммм, напомнило те долбоебские резюме, вида:
Знания: html, css, javascript, jquery, json, xml, xaml, http, ajax, ftp, tcp, udp, smtp
и т. д.
За два года ты освоил материал который осваивается (если прям дотошно всё разбирать и очень много практиковаться) за 4 месяца. И добавил расплывчатое "JS на хорошем уровне". Охуенно, что тут можно сказать.
слу. ты знаешь как сложно работать с такими коллегами?
все, фатит. я хочу валить. ничт меня не остановит.
У меня есть собственный проект, который приносит мне 100к в месяц, требуя от меня обычного контроля за выполнением. Я могу позволить себе тратить время на утирание носов таким бездельникам как ты, одновременно изучая новые технологии.
Надо уточнить, что ты называешь выходными параметрами. Если возвращаемый тип, то в шарпе он не является частью сигнатуры метода. Если ты про модификаторы ref/out то таки да, такой вариант допустим
void A(int n) {}
void A(ref int n) {}
но надо помнить, что для clr ref/out/in одна хуйня (разница есть только для компилятора), поэтому так нельзя
void A(out int n) {}
void A(ref int n) {}
Я 40к джуном получаю в ебенях, но в этом треде меня там сверху засрали, что я раб. Ребята наверное думают, что мы тут в ебенях на хаты тратим по 70к как в Москве
Я имел в виду возвращаемый тип, но ты прав, он не является частью сигнатуры
тем что слабо применим в жизни. пример: продукт эволюционировал 3 раза и при этом каждый раз расширял функционал како-либо иерархии.
ты, как программист, глядя на любой класс этой иерархии будешь задаваться вопросоми:
1. а зачем это и где это используется?
2. BaseClass thing = new DescendentClass(new DescendantStrategy())
thing.Go() - комон, как вот глядя на это можно понять что будет делать этот метод?
квадраты, прямоугольники - это понятно. непонятно - где это применять
Написал программу которая приносит мне деньги, сейчас слежу за её работой и обновляю по мере необходимости. Бизнес план свой я тебе тут расписывать конечно не буду, это ты зря с голой жопой просишь.
>Написал программу которая приносит мне деньги
вот это неожиданность
нахуя мне твой бизнес-план? я тебя не прошу идею мне толкать. я если что-то и сделаю, то уж точно не по твоему совету
>где это применять
Везде. Создавая наследника думай о том, что его могут использовать как базовый и если твой класс нарушает принцип Лисков, то твой класс может поломать потребителя.
ну вот, пример же из оттуда
Rectangle rect = new Square();
TestRectangleArea(rect);
он его зарешал через проверку типа. что может быть тупее - яхз.
>>405281
давай, сразу, взял и вставил сюда код из своего проекта. двух-трех строчек должно хватить.
типа, я тут взял и нарушил принцип лисковой, капитально так.
Account<BasePayment> target = new Account<PaypalPayment>(settings);
target.Charge();
Account<BasePayment> target2 = new new Account<PaperPayment>(settings);
target.Charge();
В итоге перерыл кучу всего, но решение нашел случайно, когда узнал, что если поставить в обработчике KeyDown Handled = true, то запись в поле не происходит, что позволило регулярным выражением отсеять все ненужные символы.
стандартные контролы неистово насасывают, а нестандартные - это преимущественно DevExpress. а так-то валидация в WPF реализуется достаточно легко
Ну да, на деле оказалось легко, просто в гугле куча устаревшей информации. Сразу чувствуется умирающий язык, особенно после JS для которого куда не зайди везде куча новой информации, годных примеров и т. п.
Мёртвый тред, мёртвого языка. Хватит уже тыкать палками этот труп, дайте ему спокойно уйти из этого мира.
Квадрипл, а какой язык сейчас норм для написания всякой визуалки? Всякую автоматизирующую поеботу для себя пишу на питоне, но обезьяны клиенты не могут в консольку.
порофлил с тебя
Охуенно.
Это топ по популярности из сильных яп. Если по двачу судить, то ни один из языков не популярен, популярно только социоблядство вида МЫ ВАМ ПЕРЕЗВОНИМ треда.
В интернете.
Для такого, наверное, лучше петон. У него сотни и тысячи либ с готовыми нейронками, которые распознают все подряд на фото.
что-то проде прокси, клиент обращается к прокси, на прокси первичная обработка, а потом это все идет на проект - ядро
я уже все настроил. Использовал предикат и документ обзывал по имени проекта собственно, и сортировал их по содержанию в пути файла имя документа (оно уникально)
начальство не хочет. в итоге использовал преобразование в json, а из json в данные для гет запроса, работает даже со сложными объектами (которые содержат внутри поля/свойтсва других) и с массивами
FromUri может десериализовывать практически так же, как и Json.NET.
про начальство не хочет это рофл, надеюсь? ты внес изменения в публичный API, по хорошему это Breaking Changes, ради какой-то рофло-десериализации, доступной из коробки
я один хер свалю от них через три недели и перекачусь в гейм дев
Двачую питон, основная движуха по нейроночкам на нем.
Но питон это всего лишь фронтенд для нейррнки, а она на самом деле работает на сях и куда, не?
а еще мне кажется, что использовать статически типизируемый компилируемый ынтырпрайз язык для написания скрипта чтобы рассортировать фотогоафии это оверкилл
Когда человек называет возвращаемое значение выходным параметром, становится очевидно что он ноль.
И зачем ты насрал себе в штаны? Выходной параметр это не возвращаемое значение, а параметр передающийся с модификатором out.
Сорта командной строки.
ПХП - дно для веб-макак.
Питон просто не нужен. В 10 раз медленнее шарпа, ебучая динамическая типизация, никаких преимуществ перед выразительными языками с ООП и статической типизацией не имеет. Для школоты пойдёт. Для серьезных проектов - нет.
Единственное преимущество - отсутствие скобок, как наследния 70-х.
>ваш тред активнее
просто обезьянья параша сто лет как протухла. Спасибо за ебанутых мочухов, которые разогнали всех адекватов и стало тихо, как в гробу.
так в вебе ваша доля мизер
> Питон просто не нужен. В 10 раз медленнее шарпа, ебучая динамическая типизация, никаких преимуществ перед выразительными языками с ООП и статической типизацией не имеет. Для школоты пойдёт. Для серьезных проектов - нет.
> Единственное преимущество - отсутствие скобок, как наследния 70-х.
А я недавно стал думать в точности до наоборот. Как говорит юникс философия, каждая программа должна делать одну вещь и делать ее хорошо. В лучшем случае - принимать что-то из стдина и высирать что-то обратно, а потом соединять то, что тебе надо, пайплайнами. прям как функциии и их композиция в ФП
Очевидно, что для таких целей не нужен огромный рантайм, статическая типтзация и прочие фичи шарпа. Для работы с системой хватает си, а для "сложных скриптов" - какого-то перла/питона.
хотя мне пиздец как нравится сисярп и я изучаю хацкель, но я вообще ебу, где, кроме веба/ынтырпрайза их можно применить
На шарпе можно делать игоры (несложные).
В месте ООП, полноценных классов, большей функциональности и строгой типизации.
В прошлом году, в сентябре, перекатился с фрипаскаля на сишарп за две недели, изучая шарп по статьям на мсдн. И собственно говоря, всё изучение свелось к тому, чтобы узнать различия в языковых конструкциях, в остальном весь ООП, вся парадигма и двор работают точно так же в упор.
Перекатился настолько конкретно что паскаль вызывает отвращение: "это что мне опять длинными словами описывать инициализацию экземпляра, когда в шарпе она делается в одну строчку в инициализаторе??7" или "Блять, почему это есть искаропки в РТЛ? А что, так можно было??7"
Мимо 36 ЛВЛ.
>с фрипаскаля
В голос. Ничего, что это компилятор, а не яп? Паскаль это не тоже, что и js/php, это полноценный язык программирования со строгой типизацией, с которого начинают/начинали учить программирование имменно потому что после него тебе легче будет освоить что-то более функциональное.
>с фрипаскаля
>В голос
Двачной дурачок, как обычно голосит со всего подряд, идиотина.
Фрипаскаль - это в первую очередь бренд (несмотря на опенсорсность с бесплатностью).
В скретче, например.
>это в первую очередь бренд
Не перестаю проигрывать с обосравшейся маньки, которая уныло пытается оправдаться. Если уж на то пошло, то это в первую очередь сочетание слов. И таких "в первую очередь" может быть бесчисленное множество, в зависимости от того как сильно ты обосрался и как сильно хочешь перевести разговор в другое русло. Но проблема в том, что от этого free pascal не становится языком программирования с которого можно вкатываться в другие языки, а твои штаны также остаются обосранными.
>консольное приложение
>console.log()
Ну что тут можно сказать. JS-макака as is. Если я создам объект console у которого будет метод log, то это не сделает этот объект консольным приложением.
Это копия, сохраненная 11 июня 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.