Это копия, сохраненная 21 апреля 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/E8THe9Z1
Прошлый тред тонет здесь: https://2ch.hk/pr/res/1335434.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
>Да, он совершенно прав. Даже микрософт постепенно переходит с шарпа на тайпскрипт. К сожалению, самые крутые языки никому не нужны.
хуета должна быть под спойлером. Но зачем то правду скрывать?
>Даже микрософт постепенно переходит с шарпа на тайпскрипт.
Чаво блять? Как тайпскрипт может заменить C#? Они вообще в разных лигах играют.
>nodejs же
Node.js может конкурировать с .NET, но не с C#. Смешали все в кучу.
>>55907
>тогда у шарпа останется единственная ниша - ынтырпрайз
Ты скозал? Ну все, теперь все послушают твое авторитетное мнение, бросят писать на C#, и он помрет. Ты же конечно знаешь лучше всех, и не можешь ошибаться.
Опять ты, заебал уже, в вебе по скорости ноду ебет врот даже джанго какой-нибудь. От того, что 2.5 имбецила хотят писать бэк на том же языке, на котором они пишут свой кривой фронт, нихуя не поменяется, т.к. это нахуй никому не упало и в любом случае придется искать бэкендеров
Так может одно это инт, второе стринг. Или децимал. Ты их типы вытащи и покажи что там
>тогда у шарпа останется единственная ниша - ынтырпрайз
Если NodeJS откусит рынок ASP NET, то тырпрайза не останется.
>>55914
>.NET, но не с C#.
Кроме ASP NET ничего больше нету.
Десктопы и так мертвы,
>>55934
>в вебе по скорости ноду ебет врот даже джанго какой-нибудь
а юнити это просто юнити.
Когда же уже манячки поймут, что в 2019 году это не главное. А дальше будет еще хуже.
Что интересует - я с 10 лет пишу на сишке, и работаю на ней уже лет 10, будет ли это приемуществом при вкатывании?
И второе я никогда не пользовался идешками кроме терминала, нужно ли перекатываться на винду, или есть на мак/линукс какие крутые опции?
ок, с джанго сейчас пруфов подвезти не могу, хотя, точно видел сравнения, вот здесь, например, явно кор дал всем пососать
https://www.ageofascent.com/2019/02/04/asp-net-core-saturating-10gbe-at-7-million-requests-per-second/
Шапку читать умеешь? Есть относительно швабодный вскод и проприетарный райдер. Ну и кривые плагины под вим/емакс.
> Выражение возвращает фолс
Это если бы ты туда поставил оператор ==. А сейчас у тебя выражение «правда ли что двадцать не равно двадцати?»
А, в глаза ебусь, у тебя там if. Так это, у вас в шарпе сравниваются объекты или ссылки на них? Потому что если это ссылки - вполне понятно почему у тебя if срабатывает.
Точнее модели для цмски.
>Так это, у вас в шарпе сравниваются объекты или ссылки на них?
Ссылочные типы данных по ссылке сравниваются, значимые, по значению. Классы, интерфейсы, делегаты - ссылка. Флоат, инт, хуинт - по значению.
То есть если я создам два обьекта с полностью одинаковыми параметрами, то они не будут равны?
Алсо, если все наследуется от object, то как int, который значимый тип, может быть наследником ссылочного object?
Мамкин вкатывальщик, почитай про упаковку и распаковку. И про то, как считается на самом деле хэш. Дам подсказку - объект там вообще никак не участвует.
Как создашь? Через new? Конечно нет, будет два разных экземпляра, на которые будут две разные ссылки
Int будет в стеке, а object в куче
Нашел инфу для вкатывальщиков про object для значимых типов.
Я пишу чат на сокетах, мне надо сделать так, чтобы клиент мог отправлять сообщения и принимать их от сервера, но без блокировки.
Можете подсказать, в каком направлении думать?
А, все удалось, написал с помощью бегинов.
Но это вроде как старая тема, есть где-нибудь пример, как сделать все с использованием SocketAsyncEventArgs
Какой процесс у тебя блокируется? Сервак слушает порт, приходит от клиента сообщение, читает, асинхронно обрабатывает, слушает дальше. Клиент слушает свой порт, при необходимости, отправляет сообщение на сервак, дальше слушает
Что курить, чтобы понять смысл .NET
Я уже заебался искать, что входит туда (кроме Шарпа), в каком порядке лучше ознакомиться с технологиями.
Я в конец запутался.
Хочу понять не только в теории основы .net, ну и хотя бы на практике чутка.
По вакансиям много где нужен .net, но вот что конкретно учить/читать/практиковать - я в душе не ебу.
Направь меня на путь истинный, анон, уже не раз выручал.
Спасибо!
>Какой процесс у тебя блокируется?
Я оговорился, у меня блокировалась кнопка, я прямо на нее и вешал ожидание ответа от сервера.
>Сервак слушает порт, приходит от клиента сообщение, читает, асинхронно обрабатывает, слушает дальше.
У меня реализация сервера изначально была синхронной, она просто крутилась в отдельном потоке.
>Клиент слушает свой порт, при необходимости, отправляет сообщение на сервак, дальше слушает
А конкретнее? У меня все так работало, пока до асинхронности руки не дошли
Для асинхронности у тебя чтение и запись в сокет должны быть в разных потоках. Если у тебя в разных и все равно что-то блочится то у тебя какие-то обычные дедлоки между потоками.
>у меня блокировалась кнопка, я прямо на нее и вешал ожидание ответа от сервера.
Чо? Зачем на нее вешать ожидание? Вынеси ты это ожидание в отдельный метод асинхронный и ожидание делай await. А так конечно, у тебя будет блокироваться, по сути у тебя программа стопится и ожидает, пока сервак ответит или таймаут закончится. Представь, что у тебя там не ожидание ответа, а метод Sleep(10000), стоит. На десять секунд твоя программа будет просто на паузе.
Есть один простой считатель урона по типу "хп - урон от врага". Ебашу это говно через while - уходит в бесконечный цикл с одной итерацией. НО если я делаю всё то же самое, но только использую вместо "хп - урон" вот этот вот "хп--", то всё нормально считает до самого нуля. В чём может быть проблема? Кроме того, что я тупой дегенерат.
Вот скрины моей параши. Там где желтым помечено - там должны быть вон те 4 переменные выше, которые имеют такие же значения, что и в параметрах метода.
поясняю: когда у тебя стоит хп-- у тебя нормально выполняется проверка health == 0. Потому что декремент -- отнимает по единичке. А если «хп = хп-урон» у тебя хп сваливается ниже нуля потому что здоровье не кратно наносимому урону. Замени проверку равенству нулю на проверку «меньше либо равно нулю» и все заработает.
Васильев А. Н., залогинься
spa имиджборду
Например?
Я уже сделал простой проект, выводящий инфу из базы.
Сделал учебный пример интернет магазина.
Что еще можно сделать?
Бочку. Напиши интерпретатор какого-нибудь скриптового языка.
Много лишнего кода. Поменяй цикл на while(damageCalculated > 0), убери If, убери булевую переменную.
Бамп реквесту, тонны нефти.
Есть метод
public HttpResponse method(HttpRequest request)
Он возвращает
return new HttpResponse(StatusCode.Ok, responce);
когда существует responce.
Иначе же, он возвращает пустой ответ:
return new HttpResponse(StatusCode.Ok, "");
Вопрос. Как не возвращать ответ, пока не появится responce, оставляя запрос - без ответа до тех пор.
https://mva.microsoft.com/ru/training-courses/язык-программирования-c-часть-1--8669?l=MAuqZiG1_4404984382
https://mva.microsoft.com/ru/training-courses/язык-программирования-c-часть-2--8877?l=ATbUZg02_6104984382
Ну либо где можно что-то подобное и годное найти, плюсом будет если дается какой-либо сертификат (хз дает ли какие-то профиты в резюме)
>Стоит ли смотреть это?
для старта не плохо, но не стоит ограничиваться только курсами. Читайте книги, пишите код.
>хз дает ли какие-то профиты в резюме
нихуя не дает. Заведите аккаунт на гитхабе и выкладывайте туда свой код.
Для больших файлов изредка - срабатывает catch, в конструкции:
try
{
File.Delete(filename);
}
catch(Exception e)
{
Console.WriteLine("Файл используется другим процессом");
}
Как правильно удалить файл по таймауту?
Или же как убедиться в том, что файл не используется другим процессом, а потом удалить?
Или же, если всё ещё используется, то как узнать каким именно процессом он продолжает использоваться?
Хуйня, уже проверил, адреса переменных одни и те же.
catch
finally
Нахуя это финали нужно? Типо выполнится все равно, хоть тру, хоть катч, но по сути кто и для чего его использует?
Какой же ты даун, лол.
async Task<HttpResponse> method(HttpRequest request), внутри крутишь цикл, пока не получишь ответ.
Самый банальный пример это блокировки, когда ты вначале try ставишь блок и затем тебе надо в конце в любом из случаев будь то катч или нормальное выполнение снять блокировку.
Или открыл ты файл на чтение и тебе надо обязательно его закрыть.
ОйтиБояри нид хелп
Вообщем есть формочка на ней аш 2 хридвью. Собственно как при двойном клике на перем хридью эта СТРОКА вставала в 2 хридвью?
Ведь там не должно быть ошибки.
ООП
вот есть у меня 3-х уровневая иерархия классов, родительский класс абстрактный, реализовываю я значит в дочернем классе формулу, потом формулу из дочернего в дочерний дочернего, когда вывожу формулу, выводиться только формула, которую реализовал в дочернем дочернем.
Надеюсь понятно объяснил.
Вообщем чьто делать?
Отбой вопросу, это я туплю жёстко уже.
Пикрелейтед - сам блок метода и как я его вызываю. Где я обосрался, анон?
В файнал, как правило, помещается логика по освобождению неуправляемых ресурсов. В нем должно быть минимум кода. Зачем это надо, когда есть кэтч? Причины есть. Finally выполниться и в случае если try отработал нормально без захода в cath и в случае исключения. Может быть несколько caсth'ей - finally выполнится в любом случае. В tyr или catch'e может быть выполнен возврат из метода (return) - finally выполнится. в кетче может быть логика по логированию или другая логика, которая сама может привести к исключению - finally выполнится. Захочется пробросить исключение дальше - пожалуйста, finally выполнится.
Из твоих скринов ничего не понятно. Что это за переменные хуй проссышь, зато ясно одно: твой код - говно. Гоняешь форму по методам (если frm это форма), какие-то данные в классе программ, бррр. На правах ванги можно предположить: 1)Обработчик не подключен к кнопке. 2) Какого-то хрена ты сначала рефрешешь, а потом меняешь текст, почему?
Нахуя тебе цикл, если в итоге будет присвоено значение седьмого элемента? Почему не сделать это сразу?
И в конце концов, б-г дал тебе отладчик - пользуйся.
Но у меня рузен 2700. Одновременно по 2 виртуалки поднимаю, но с ебучим визуал студио не могу справится. Уверен что проблема в софте. Лагает когда работают несколько потоков параллельно.
Посмотрел везде, где он используется, оказалось, что Bitmap лочит файл до .Dispose().
Пока создаётся Bitmap, файл нельзя удалить.
Поэтому, сделал так: файл - в ByteArray, байты эти - в MemoryStream, а потом уже - Bitmap из него.
Но у меня 8 ядер в процике.
В гугле только каждую секунду советуют таймер перезапускать и чекать совпадает ли DateTime с тем, что нужно.
Неужели нет более адекватного способа?
А на сервере что, не бывает планировщиков? Иди читай как cron пользоваться.
У меня страница, которая выводит данные, нужно, чтобы при нажатии на кнопку данные выводились в эксель.
Как можно передать модели напрямую в метод?
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello world");
Console.ReadKey();
}
}
}
Чо?
Каким образом?
У меня есть страница, на ней таблица и ниже под ней лейбл и еще ниже кнопка "Печать".
Вот при нажатии этой самой кнопки у меня и должен скачиваться файл, что я генерю отдельным методом, я не понимаю, как мне из вьюхи передать.
if (obj is var _)
{
// Какое-то действие
}
>Вот при нажатии этой самой кнопки у меня и должен скачиваться файл, что я генерю отдельным методом, я не понимаю, как мне из вьюхи передать.
Тут тебе ajax юзать надо
А в книге наоборот написано, что туда все будет попадать
Короче, вынес все в отдельный статический класс и в статический метод передаю модель.
Это совсем криво или допустимо?
у меня есть ощущение, что мое развитие остановилось. Я довольно плохо знаю базу C#, хотя неплохо разбираюсь в ASP.NET. уменю писать хороший и понятный код, знаю немного паттернов, но не часто их применияю. Алгоритмы вообще не знаю, не знаю этих сортировок наизусть и тп... плохо понимаю многопоточность, хотя работаю с ней. слышал и работал с DI и с ASP.NET Core.
мне кажется, что я топчусь на месте. очень хочу расти и развиваться. Кто-нибудь оказывался в моей ситуации? может мне нужно что-то почитать или задачки какие-то решать?
Он под калбуком яві, тонні рабочих решений и проектов зачем нужен шершавій? Оракл или майкрософ как вендор один йух. Сам с# язік хорош особенно говнокодить в универе или писать веб простой, нет же как платформа кал поній.
Я со всем разобрался, нужно выводить таблицу прямо в форме с помощью цикла for, перед каждым DisplayFor поставить HiddenFor и передать это Post запросом на метод действия, где передать эту коллекцию в другой метод, что сгенерит файл, а его уже вывести пользователя.
Вот теперь оно не нарушает принципы MVC
Шилдт Герберт » C# 4.0: полное руководство почему не работают примеры программы приведённые в книге?
>почему не работают примеры программы приведённые в книге?
Например?
У меня, помню, в с++ за 21 день хеловорд не работал, опечатка была, это было забавно
*/
using System;
class Example3 {
static void Main() {
int ivar; // объявить целочисленную переменную double dvar; // объявить переменную с плавающей точкой
ivar = 100; // присвоить переменной ivar значение 100
dvar = 100.0; // присвоить переменной dvar значение 100.0
Console.WriteLine("Исходное значение ivar: " + ivar);
Console.WriteLine("Исходное значение dvar: " + dvar);
Console.WriteLine(); // вывести пустую строку
// Разделить значения обеих переменных на 3. ivar = ivar / 3;
dvar = dvar / 3.0; -
Console.WriteLine("Значение ivar после деления: " + ivar);
Console.WriteLine("Значение dvar после деления: " + dvar);
}
}
*/
using System;
class Example3 {
static void Main() {
int ivar; // объявить целочисленную переменную double dvar; // объявить переменную с плавающей точкой
ivar = 100; // присвоить переменной ivar значение 100
dvar = 100.0; // присвоить переменной dvar значение 100.0
Console.WriteLine("Исходное значение ivar: " + ivar);
Console.WriteLine("Исходное значение dvar: " + dvar);
Console.WriteLine(); // вывести пустую строку
// Разделить значения обеих переменных на 3. ivar = ivar / 3;
dvar = dvar / 3.0; -
Console.WriteLine("Значение ivar после деления: " + ivar);
Console.WriteLine("Значение dvar после деления: " + dvar);
}
}
В чем толстота? Типичная ситуация, когда на проекте сначала быстро развиваешься, потом основные фичи запилены и ты можешь потом сидеть еще полгода шлифовать, добавлять мелкую хуйню, либо пилить однотипные апи на аспе. У меня примерно так же сейчас, но, надеюсь, скоро перекинут на другой проект.
>>59588
Меняй место работы
У неё нет типа.
int ivar; // объявить целочисленную переменную
double dvar; // объявить переменную с плавающей точкой
Перенести на следующую строку, так как все что после двойного слеша в строке - это комментарий
Ну я и дебил. Спасибо за помощь.
Сап, сишарпаны. Нужно написать прогу мониторищую сервер\другой комп. Суть в том что я совсем не знаю как подойти к делу и единственное решение что приходит в голову это ебашить все через cmd запросыбэкап,мониторинг задач и тд. Поэтому хотелось бы спросить совета в какую сторону стоит идти и что использовать. С меня как обычнонихуя
Делаешь клиент-сервер, на сокетах. А вообще такого в интернете полно.
Я все пытаюсь, но у меня что-то совсем нет желания заниматься им, сколько вообще книг Кантора мне надо прочитать, чтобы можно было на собеседование идти?
Раньше думал, что Рихтер - тягомотина несусветная, а теперь он кажется очень понятным и простым
хотел укатиться в другой язык, но пока не довкатился, надо поддерживать уровень на этой платформе. а мотивации, сука, никакой
просто знайте это
читаешь книги - пишешь код. другого способа не придумали
ну и работать на проектах с реальными требованиями >>>>> чем обмазаться уберрихтерами и пилить свой васяноconsoleapp
>пограничное состояние .net core
В каком месте оно пограничное?
2.1 - LTS.
Уже полгода пишем проект на коре - полет нормальный
>>60383
>хотел укатиться в другой язык, но пока не довкатился
Кек
>>60383
>знайте
Единственный минус который сейчас есть на дотнете - полное отсутствие вакансий на чистый бэкэнд. Раньше было тоже самое, сейчас с этим еще хуже, все больше приходится пердолить фронт.
Рынку нужны фуллстаки, на дотнете тем более. В жабе с этим как-то попроще.
У меня просто уже был опыт в программировании, как-то основы изучаю, дальше не понимаю что делать. Но я по каким-то видео учил на ютубе. Сейчас попробую тогда книги в шапке прочесть
>В каком месте
ну это, вроде как, флагман всея платформы. а до сих пор некоторые не самые васянские фреймворки не спешат суппортить кор. подозреваю, есть веские причины
конечно, проекты на коре есть, но они, почему-то до сих пор, достаточно редки. я работаю не в самой последней конторе, но актуальных кор-проектов ровно ноль. хотя все вголос заявляли, что отныне классический дотнет станет нерелевантным. та даже вынусуть голову за пределы работы - вакансий с кором не так уж и много. да и то, непонятно, только ли там кор, либо есть одна консольная утилита по приколу написаная на новой технологии, вот ее и опишем. аутсорс, офк, не без легаси
>>60395
возьми задачу попроще и запили её. читать ты заебешься, и ничего не запомнишь к тому же
>не самые васянские фреймворки не спешат суппортить кор
Чего именно тебе не хватает? Нюгет завален солюшенами.
>>60398
>достаточно редки
Я не знаю что у вас там редкое.
Наша часть сеньеров обожглась от 1.0 из-за чего писали на MVC5. С релизом 2.0 все стало на свои места и все довольны.
>>60398
>хотя все вголос заявляли, что отныне классический дотнет станет нерелевантным
Так и есть. Он сейчас только под десктопы и легаси.
>>60398
>вакансий с кором не так уж и много
Для зеленых на дотнете (если это не саппорт старых проектов) всегда было мало вакансий на фоне той же жабы, жс и пайтона.
В целом, зеленым действительно делать здесь нечего. Язык и платформа вымирают и по итогу получится паскаль 2.0
Это точно правильное решение?
>Чего именно тебе не хватает?
я навскидку только вспомню MassTransit с ажуровской шиной сообщений. там, причем, не в самом MT сложности, а с зависимостью. еще было похожее решение из мира message driven, но уже сложно вспомнить.
>>Он сейчас только под десктопы и легаси.
"только" это слишком громкое заявление
>>всегда было мало вакансий на фоне той же жабы, жс и пайтона
причем здесь фон каких-то васянских языков? относительно фреймворка работы с кором пока что еще очень мало
так же интересно, если ли шарписты, которые пользуются линуксом?
давно жив mono
с недавних пор родили .net core
мои экс-коллеги, непонятно зачем, покупали маки и ставили на них винды шобы на дотнете писать
> я мои экс-коллеги, непонятно зачем, покупали маки и ставили на них винды шобы на дотнете писать
мне тоже нравятся маки, но такой херней я стардать не хочу. интересно, как аноны шарписты кодят на маках? удобно ли?
Я с месяц назад поставил Xamarin на свой мак, написал приложульку под iOS. В принципе норм работает. Вижуал Студио коммьюнити чутка багованная правда, после ухода компа в спящий режим отваливается автодополнение кода.
> Единственный минус который сейчас есть на дотнете - полное отсутствие вакансий на чистый бэкэнд. Раньше было тоже самое, сейчас с этим еще хуже, все больше приходится пердолить фронт.
> Рынку нужны фуллстаки, на дотнете тем более. В жабе с этим как-то попроще.
Да нет, все норм с этим, в США много вакансий. А если в рашке начал учить C# чтобы бэк писать - то сам себе злой буратино. У нас шарпы даже с фулстаком не нужно особо.
Хочешь бэк - учишь жаву. Хочешь фулстек/на фрилансе работать - учишь пхп и яваскрипт. Хочешь пилить игры - учишь шарп и скачиваешь юнити. Глупо учить шарп и ныть, что он у нас не нужен бэк писать.
так куда эти самые пиндосы аутсорсят свои шарпы с бэкэндом?
Исходя из того, что неизвестно, что у тебя там происходит можно посоветовать только класс глобальной видимости (одиночка/моносостояни/статический клас), можно прикрутить локатор или что-то подобное. Но что бы грамотно разрулить ситуацию нужно понимать что как и почему так, возможно у тебя вся архитектура говно.
Как воможно сделать нечто наподобие:
new WebProxy(socks5 proxy);
Чтобы качать файлы через TOR?
Я показал что происходит. Все остальное вычисления внутри классов не так важны. Программа выполняет обход процесса. Сначала извлекает из него все модули, далее парсит эти модули, находит экспортируемые функции для каждого модуля, создает для них интерфейс и делает обход виртуальных таблиц. Тоже думал на счет синглтона, но не уверен. Поэтому спросил тут. Статический класс не хочу делать, их вообще кто-нибудь использует?
Аноны, я принёс вам метод Питера Гутмана для гарантированного удаления файлов:
Тут исходник: https://github.com/username1565/Gutmann
Бинарник - тут: https://github.com/username1565/Gutmann/releases
Исходник - простой, как угол дома. Но у меня есть вопросы.
Если вы посмотрите туда, там сделано так:
>//затирание Методом Гутмана, затем
>confirm_text = "Delete this file?";
>if(PromptConfirmation(confirm_text)){//by default
>try{
> File.Delete(fileInf.FullName);//Try remove the file
//код...
При этом файл затирается в 35 проходов.
Если же сделать так:
>bool delete = true;
>if(delete==true){//
>try{
> File.Delete(fileInf.FullName);//Try remove the file
>//код...
то пишет, что файл затёрся, и файл даже удаляется, затем,
но по смещению на диске, где находился удалённый файл - видно полный его исходник в WinHEX'e.
Почему так?
Батеньки, да это же первая имплементация сего алгоритма на сиярп - на всея гитхабе, лол.
А как это правильно сделать?
>кто-нибудь использует
наслушался говна, что только индусы юзают статик?
для всего есть свое применение. экстеншены, хелперы, общая логика - это прям первое, для чего нужны статические методы/классы
Значит "обработка исключения" - это то что мы указываем в разделе catch. Вот если я хочу, чтобы в случае неправильного ввода числа, пользователю было предложено ввести заново, то что я должен написать в раздел catch? После обработки происходит возврат в try на строку после возникшей ошибки? То есть для моей задачи нужно сделать цикл while пока не введут верно?
Не надо использовать исключения для обработки пользовательского ввода. Пользователь туп и может ввести любую хрень - это обычное явление и ты должен это нормально обрабатывать. Вот если неверные данные прошли в бизнес логику тогда да - исключение. В твоём случае надо использовать TryParse, если надо перевести строку в число, и метод Check/Validate который покажет допустимо ли значение.
Чего тебе в коммунити не хватает?
То есть try-catch для проверки деления на 0 и прочих подобных ошибок. Правильно?
Типа того.
>То есть try-catch для проверки деления на 0 и прочих подобных ошибок
Он для того, чтобы ты сам мог бросить исключение и обработать его. финалли никто не знает для чего нужен, кстати
там, где мне нужно выполнить какую-то операцию, не смотря на результат основной логики. а ты, долбоеб, сам не понял еще?
>там, где мне нужно выполнить какую-то операцию, не смотря на результат основной логики
Это все хуета из книжек, практический пример будет или ты слит, унижен и обоссан
хуя мамкины синьоры итт без фантазии
открываешь коннекшн с базой данных, в try выполняешь запрос, в finally дропаешь соединение
Так что делать-то блять! Класс процесс не может быть статическим. Вдруг я еще один экземпляр захочу сделать? Думал, может наследоваться от него, но тогда с инкапсуляцией проблемы.
>с инкапсуляцией проблемы
какие проблемы? ты не хочешь, чтобы код, использующий Interface/Module/etc. знал о процессе-паренте?
навскидку, заебашь себе абстрактный класс типа ProcessOwnableItemBase, у которого наружу вынесен метод, в себе дергающий this.Process.MemoryOperationGovno()
module/inteface/etc нужна часть функционала process (memory operations на скрине), но не весь остальной функционал.
Там тупо тыкаешь продлить и она до середины лета у меня продлилась
Хочу намутить себе, на C#, прогульку для RSA енкрипта-декрипта больших файлов.
Без AES и прочих симметричных шифров.
Подскажите какой BigInteger наиболее годный для этих целей?
Чтоб качать файлы через TOR, очевидно же.
я хз, попробуй вынести функционал Process в типы, где он действительно нужен. а Process принимай параметром, если нужны какие-то его данные
тут вряд ли есть проблемы с инкапсуляцией. ты не сможешь изолировать метод от метода, если первый используется только одним потребителем, второй - только другим, без костылей или безосновательного переусложнения простых вещей (в твоем случае все относительно несложно)
Еле нашёл на github'e RSA для файлов, но таки нашёл, подправил исходник и заебенил с этого - рабочий код: https://github.com/bokdong2/rsaVault
Бинарники - тут: https://github.com/username1565/rsaVault/releases
Плюс 32-битный exe-шник.
Аноны, хуле оно так медленно декриптит?
20 мегебайт видос "Pet Shop Boys - 'Twenty-something' (Official Video).mp4"
Минут 15 декриптило, проц от этого - жутко свестел и пердел...
Я понимаю, что (m^e mod N) быстрее вычисляется, чем (c^d mod N), но не думал, что декрипт НАСТОЛЬКО медленнее енкрипта.
Может туда какие-нибудь методы Карацубы напихать?
Нашёл вот такой, недопиленный cs, без Main: https://github.com/carchok/RSA/blob/master/RSA.cs
там есть методы для работы с RSA - в частности метод быстрого возведения в степень по модулю: modPow
Может внатуре заюзать нечто, вроде методов BigInteger?
Схуяли довн?
И да, ведь осилил, тут: https://github.com/username1565/BigInteger.js/blob/81fc87dffcb4722257f3dc21c314d52d322ff14e/BigInteger.js#L304
И даже алго Диффи-Хеллмана на BigInteger'ах запилил: https://username1565.github.io/BigInteger.js/Diffie_Hellman_Key_Exchange_BigInteger.html
Но это всё JS. А здесь - решётка...
Для - подписи EСDSA, А RSA - в том же PGP шифровать может: https://username1565.github.io/pgp/
этот code behind не должен сожержать бизнес-логику, а только вызов васянских сервисов и конвертацию доменной модели в модель вьюшную. идеал mvvm wpf-шного -- это отсуствие кода в ~Window
yield заставляет компилятор написать итератор за тебя.
Чтоб отвязать представление от логики. В итоге получается лучшая поддерживаемость кода, можно писать юнит-тесты для вьюмоделей и вся работа по обновлению данных переходит фреймворку и его системе биндингов.
Проблема в том, что я могу удалить из одной таблицы, но тогда другая таблица будет ссылаться на то значение, которого не существует.
Например, есть таблица "Команды" и таблицы "Игроки", связаны они отношением многие ко многим. Когда я удаляю игрока, то промежуточная таблица будет ссылаться на несуществующего игрока, следовательно я не смогу вывести его в своем приложении.
Надеюсь, что вы все поняли, как это реализуется в нормальных приложениях?
У меня есть мысль добавить в таблицы столбцы, что будут содержать значения 1 и 0 и при удалении в таблице будет просто устанавливаться значение 0 и пользователь не будет видеть его больше
Я
поздравляю. ты только что presentation-шаблоны
>>61530
ты
удаляешь зависимые значения @ удаляешь нужное тебе значение
если 0/1 относится к Игрокам и Командам в одинаковой степени, то как вариант. но не думаю, что есть смысл хранить мусор в твоем случае
но я так понимаю, у тебя нет физической связи между таблицами? такое имеет смысл в продакшн проектах при необходимости, но это, скорее, не самая лучшая практика в общем случае
> но не думаю, что есть смысл хранить мусор в твоем случае
Мне в проге нужно будет выводить отчеты, проводить аналитику и статистику
значит, неправильно думаю. это называется Soft deletion, заводишь поле в таблице IsDeleted и основная логика работает с теми значениями, у которых IsDeleted = 0
ну, например, есть основная(ые) таблица(ы), где происходит операции бизнес-логики. на триггерах (или другим любым удобным механизмом) весь CRUD рефлектится на денормализованную таблицу отчетов
особых приседаний в основной логике это не требует, но при изменении отчетов неиспользованные исторические данные ты уже никак не заюзаешь
еще я только у одного долбоеба видел реализацию дублировать данные в таблицах с префиксом Archive. соотстно в коде приходится вставлять и изменять данные в двух таблицах синхронно, удалять только из основной. репорты, как не трудно догадаться, берутся из архивов. челик считался сеньором в конторе. видимо, за особые заслуги перед родиной
Сейчас бы RSA файлы шифровать. Совсем ебнулись уже?
Есть. Во 2 случае лист копируется в переменную и потом еще раз во время цикла.
Чего блять? Всё что делает форич это получает енумератор и вызывает на нем MoveNext до посинения. Какое копирование?
ОПЫТ РАБОТЫ 3 ГОДА, ЗП 50 ТЫЩ
ОПЫТ РАБОТЫ 5 ЛЕТ, ЗП 100 ТЫЩ
Ахуели совсем блять? Я у бабы сраки в рестике посуду мыл больше получал. Пиздец какой-то нет?
Чё уж сразу не на Q# - под оптические FPGA, квантовые компьютеры и спинорные GPU-акселлераторы.
ты че долбоеб? я полгода назад пошел на аспнеткор 70к, чисто ебанул в качестве тестового рестуху из фримана почти, только с моделями, которые попросили, сейчас уже думаю просить повышения, т.к. я охуел и считаю, что 70к мало.
Сперва был косяк с тем, что заместо русских символов вставлялись знаки вопроса, потом у меня отказалась работать вставка даты, запрос правильный.
Причём он сперва работал, а потом отказался работать, послав меня нахуй, я уже практически все перепробовал
Ну теоретически, на таком можно отсеять говнокод и грязнокод и идти на интервью.
>дотнет4, асп
ебать, я уже представляю себе с какими монстрами-проектами там работать придется
>Чтоб отвязать представление от логики. В итоге получается лучшая поддерживаемость кода, можно писать юнит-тесты для вьюмоделей и вся работа по обновлению данных переходит фреймворку и его системе биндингов.
Блядь, где смысл? Хули там у тебя отвязано, если вьюха все равно к конкретной вьюмодел привязана. Ну пиши юнит тесты к code behind, кто тебе не дает?
>>61410
>идеал mvvm wpf-шного -- это отсуствие кода в ~Window
Я это знаю, но понять не могу почему? Ну нахуя мне создавать отдельный класс вьюмодели и так же точно во вьюхе цепляться к ее свойствам, когда есть code behind, в котором все это можно точно так же прописать?
ньюфаня в треде
получаем все Молы которые есть в бд
> cmd.CommandText = "select * from МОЛ";
cmd.ExecuteNonQuery();
DataTable dt1 = new DataTable();
OleDbDataAdapter da1 = new OleDbDataAdapter(mol);
da.Fill(dt1);
foreach (DataRow dr in dt1.Rows)
{
comboBox2.Items.Add(dr["ФИО"].ToString());
comboBox1.Items.Add(dr["Код"].ToString());
}
con.Close()
хочу что бы при выборке в комбобоксе отоброжались те мц которые за ним закреплены
> public void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT МЦ.Наименование_товара, МЦ.МОЛ FROM Подразделение INNER JOIN (МОЛ INNER JOIN (Ед_Изм INNER JOIN МЦ ON Ед_Изм.Код = МЦ.Единица_измерения) ON МОЛ.Код = МЦ.МОЛ) ON Подразделение.Код = МЦ.Подразделение WHERE (((МЦ.МОЛ)='"+ comboBox1.Items +"')); ";
con.Open();
cmd.ExecuteNonQuery();
con.Close();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
если вместо комбобокситем задаю жестко то все хорошо а если нет то говорит не соответствие типов данных иди нахуй. ЧЯДНТ?
ньюфаня в треде
получаем все Молы которые есть в бд
> cmd.CommandText = "select * from МОЛ";
cmd.ExecuteNonQuery();
DataTable dt1 = new DataTable();
OleDbDataAdapter da1 = new OleDbDataAdapter(mol);
da.Fill(dt1);
foreach (DataRow dr in dt1.Rows)
{
comboBox2.Items.Add(dr["ФИО"].ToString());
comboBox1.Items.Add(dr["Код"].ToString());
}
con.Close()
хочу что бы при выборке в комбобоксе отоброжались те мц которые за ним закреплены
> public void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT МЦ.Наименование_товара, МЦ.МОЛ FROM Подразделение INNER JOIN (МОЛ INNER JOIN (Ед_Изм INNER JOIN МЦ ON Ед_Изм.Код = МЦ.Единица_измерения) ON МОЛ.Код = МЦ.МОЛ) ON Подразделение.Код = МЦ.Подразделение WHERE (((МЦ.МОЛ)='"+ comboBox1.Items +"')); ";
con.Open();
cmd.ExecuteNonQuery();
con.Close();
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
если вместо комбобокситем задаю жестко то все хорошо а если нет то говорит не соответствие типов данных иди нахуй. ЧЯДНТ?
>Я это знаю, но понять не могу почему? Ну нахуя мне создавать отдельный класс вьюмодели и так же точно во вьюхе цепляться к ее свойствам, когда есть code behind, в котором все это можно точно так же прописать?
потому, что это ООП и все есть класс. ну а так же потому, что S.O.L.I.D., KISS, слабая связность и прочая хуита, которой очень любят подрочить на собеседованиях. пока у тебя каждый тип занят какой-то одной задачей, твое приложение без каких-либо ограничений по размерам, сложности логики и древности стека достаточно легко расширяется, модифицируется, и, главное, понимается другими человеками.
тебе никто не мешает писать через button1_Click, протаскивание Form1 в бизнес-логику, дергания базы данных из вью и так далее. и, даже имея десяток функций твоего приложения и пару тыщ строк кода тебе будет относительно просто его поддерживать. но бизнес, не без исключений, хочет чего-то сложнее и долгосрочнее. ну, а главное, дешевле в саппорте
>>61905
>+ comboBox1.Items +
ты посмотри на свой cmd.CommandText. вангую, увидишь много чего интересного
>ты посмотри на свой cmd.CommandText. вангую, увидишь много чего интересного
да хз, этот запрос мне сгенерел аксес и там все хорошо выводится, логика такова: я выбираю в комбобоксе мола и автомат грид выводит всю инфу. Пошаманиф я добился что при выборе мола он мне пустой грид выводит. Куда смотреть я уже хз
Нахуй тебе этот sql? Монгодб охуенен, перешел на него - выпилил дохуище строк кода и ебашу запросы с помощью linq. Да и концепция документов удобнее, чем таблиц.
отбой я дибил помогло это + comboBox2.SelectedItem.ToString() +
>потому, что это ООП и все есть класс
Ну, а code behind это не класс что ли? Класс, причем специально для этого и созданный, автоматом.
>ну а так же потому, что S.O.L.I.D
И какую букву я нарушу, если вместо вьюмодел ебану это все в code behind?
>тебе никто не мешает писать через button1_Click, протаскивание Form1 в бизнес-логику, дергания базы данных из вью
Ты не понял. Я не ратую за то, чтобы всю программу в мейне ебашить и похуй. Просто при создании вьюхи уже по сути есть готовая прикрученная к ней автоматом вьюмодел, нет, блядь, не хочу в ней хуячить, хочу свою создать, точно такую же и в датаконтексте на нее переопределиться
>Монгодб охуенен, перешел на него - выпилил дохуище строк кода и ебашу запросы с помощью linq
Я для тебя открытие, наверное, сделаю, но уже сто лет как есть entity framework, чтобы к sql ебашить запросы с помощью linq
>И какую букву я нарушу, если вместо вьюмодел ебану это все в code behind?
Блядь ебаный дегенерат, иди на хуй с такими вопросами, гуглом научись пользоваться, мразота тугорогая.
Ты если нихуя сам не знаешь и объяснить не можешь, то зачем рвешься то?
>Нахуй тебе этот sql? Монгодб охуенен
dolboebs never change
>>61978
>Ну, а code behind это не класс что ли? Класс, причем специально для этого и созданный, автоматом
ну, это слой ващет. может, у тебя и один клас за все отвечает. но это уже спагетти
>И какую букву я нарушу, если вместо вьюмодел ебану это все в code behind?
S
>Просто при создании вьюхи уже по сути есть готовая прикрученная к ней автоматом вьюмодел
откуда она у тебя там есть? если ты каким-то фреймворком пользуешься или бутстраппером, я тебе ничем ответить не могу. ну или ты делаешь VM к VM. когда я тебе ничем не могу помочь )
>Класс, причем специально для этого и созданный, автоматом
я только сейчас допер, что под code behind ты называешь Window1.cs, который рядом с xaml генерится. так что-ли?
S - потому что у тебя класс mainwindow будет отвечать за всю возможную логику, начиная от открытия файла заканчивая валидацией модели
O - потому что ты полезешь в CB по множеству причин
L - у тебя все прибито гвоздями, тут не о каком замещении не может идти и речи
I - нет никакой сегрегации интерфейсов, все в одном окне
D - нет инверсии, всем управляет окно
>>61904
>пиши юнит тесты к code behind
А может ты попробуешь написать мок окна, чтоб не нести больше хуйню?
Пока ты пишешь один проекты, требования к которым не меняются каждые несколько месяцев ты можешь писать все в одном файле. Но если ты так будешь делать работая в тиме тебя погонят ссаными тряпками очень скоро.
>я только сейчас допер, что под code behind ты называешь Window1.cs, который рядом с xaml генерится. так что-ли?
Ну да, а он что, не так что ли называется?
>ембеддед легаси щит из 90х
>гейдев, который ты не осилишь
>хайлод, в который тебя не возьмут
ты это, заходи, если что
>ембеддед легаси щит из 90х
Ну да..
>гейдев, который ты не осилишь
Так что там осиливать? Фреймворк изучить, весь матан гуглится за 5 минут.
>хайлод, в который тебя не возьмут
Возьмут.
А еще десктоп хотя бы есть. И системное программирование.
Ну, и короче, нахуй нужна эта вм, если можно в этом файле так же точно хуярить, он для этого и создан, блядь. Создаешь модели, где вся бизнес логика и хуяришь в этом файле свойства для вьюхи, хули не так? Нахуя руками создавать точно такой же файл, для тех же самых целей?
>Ну, и короче, нахуй нужны эти классы, если можно в Program.cs так же точно хуярить, он для этого и создан, блядь. Создаешь методы, где вся бизнес логика и хуяришь в этом файле свойства для вьюхи, хули не так? Нахуя руками создавать кучу файлов, для тех же самых целей?
Короче есть много-много экземпляров двух классов.
class A {
// не важно что тут
}
class B {
// держит ссылку на A
private A instA;
}
Нужно их бинарно сериализовать. Если делать это в один файл, то никаких проблем с восстановление правильных ссылок в B на A не будет, но мне нужно сериализовать классы раздельно - все А в fileA, все B в fileB. Ворос: как починить ссылки при загрузке? Это надо делать вручную используя некотрые ИДы?
а тебе принципиально важно, чтобы каждый экземпляр A был уникален в памяти?
сериализуй/десериализуй вложенные типы тоже
если не подходит - то id или любое свойство/набор свойств, которые однозначно идентифицируют отдельный A в сете. при десериализации B ищешь нужный объект A в заранее десериализованной коллекции/наборе
гуглопоиск обезумел
>а тебе принципиально важно, чтобы каждый экземпляр A был уникален в памяти?
Да важно. В логике программы ссылка на А используется для детекта всех B с некоторым общим А.
Короч наколхозил целочисленные ИДы которые создаются при сериализации и читаются при десириализации. Не знаю как по-другому тут сделать, пусть пока так.
>В логике программы ссылка на А используется для детекта всех B с некоторым общим А.
objA может быть равен objB даже если это два изолированных объекта в памяти. и приложение прекрасно это поймет при элементарном подключении IEquatable<>
Есть даже linq to sql
Посоветуйте что прочитать, чтобы вникнуть хотя бы в азы этой хуйни, ну или пинка получить для дальнейшего изучения, а то я тут с ума сойду нахуй скоро.
>ваши эвейт асинки ебаные мне вообще в башку не лезут
Создаешь метод асинк, а затем в нем помечаешь оператор авейт, вот и все. Теперь у тебя оператор будет асинхронно выполняться - ну там таск-хуяск
В очередной раз зашел чтобы насцать за щеку всем кричащим:
"ДОТНЕТ КОР КОКОКОКО КРОССПЛАТФОРМЕНОСТЬ БУДУЩЕЕ"
Кусок говна. EF Core - это вообще полный пиздец.
Захотел распределенные транзакции? А МЫ НЕ ПОДДЕРЖИВАЕМ пока))00.
Сделать что-то сложнее двух джоинов без навигационных свойств? А хуй.
Почти все выражения разворачиваются и исполняются in-memory, еще больше начинает подгорать с комментариев под ишью "ЭТО НЕ БАГ! ЭТО ФИЧА"
EF Core - это когда 3 простых джоина разворачивается в три запроса.
EF Core - это когда у тебя асинхронная версия валится с кучей ошибок, потому что это говно не может построить выражения, но при этом синхронная работает нормально.
Раз такой умный пиздуй в кор разработку и исправляй ситуацию. Хули ноешь то, макака?
>Раз такой умный
>>62676
>пиздуй в кор разработку
Ты меня недооцениваешь. Действительно умный не пойдет допиливать и собирать сопли мелгомягких. Закончив проект я съебусь с дотнетопараши, делать это нужно было сразу после "релиза" asp net core 1.0, но лучше поздно чем никогда.
Меня во всей этой ситуации удивляет вот что: как можно было за 4 года не покрыть основные кейсы которые используются на проектах при этом умудрится назвать свою хуйню LTS 2.1 !111
>Джавалахта, съеби.
Хуяхта.
Сходи что-нибудь сложнее хелоуворлда напиши, поймешь о чем речь идет.
>фичами из коробки
>>62672
>джоинов без навигационных свойств
УУХ, тупая зелень не палится.
Я то думал что lazy loading с тонной навигационных свойств это фичи из коробки.
А оказывается linq, транзакции (которые в 2.0 появились) это уже что-то сверхествественно.
Так может это ты все-таки ты джавалахта, а, пидарок?
Пиздуй свою лабу 1 делать, зелень ебаная.
> неткора даппер дефакто стандарт орм
Дефакто стандарт - не использование сырого говна коим кор и является. Даппер кусок говна, уж лучше хибернейт использовать.
АЛСО, ОТКРЫВАЮ БОЛЬШУЮ ТАЙНУ: что тимлид скажет использовать на проектах - то и будешь жрать. Заказчик проплатил какую-нибудь говнобиблиотеку? ИСПОЛЬЗУЕМ ЕЁ.
Пиздуй дальше писать лабы, через годик или сколько там тебе на вкатывание надо расскажешь что там дефакто стандарт.
class DerivedClass : BaseClass<T> where T : ISomeInterface{}
а как сказать чтобы DerivedClass ещё наследовался от интерфейса ISomeOtherInterface?
если я напишу
class DerivedClass : ISomeOtherInterface, BaseClass<T> where T : ISomeInterface{}
то мне говорят что базовый класс указывается первым.
а если я напишу
class DerivedClass : BaseClass<T> where T : ISomeInterface, ISomeOtherInterface{}
то я перечисляю интерфейсы для T, а не говорю что DerivedClass реализует его
Ничего, паттерны - это одновременно и антипаттерны.
Можешь навернуть "Шаблоны корпоративных приложений".
>class DerivedClass : BaseClass<T> where T : ISomeInterface{}
Тут секция where относится к DerivedClass и ошибку он тебе выдает, что DerivedClass не является обобщеным(<T>) чтобы налагать на него ограничения.
Делать надо так:
class DerivedClass : BaseClass<ISomeInterface>, ISomeOtherInterface
Т.е. сразу задавать специализиацию базовому классу в обявлении.
Либо не задавать, а сделать ее сквозной:
class DerivedClass<T> : BaseClass<T>, ISomeOtherInterface where T : ISomeInterface
а, where можно писать после всего. спасибо!
>Блядь, у меня даже толком нет идей что писать.
Писать то что уже есть, двач бложик, или рестапи интернет магазина.
>Что дальше то делать?
Умирать Не отступать и не сдаваться.
>Захотел распределенные транзакции? А МЫ НЕ ПОДДЕРЖИВАЕМ пока))00.
Дохуя ли ты юзал из в реальной жизни маня? Всем давным давно известно что рт это зло и юзают саги или сортофф евенчуалконсистенси
Алсо все горение с ефкора пушто ебан тупой не осиляет в божественный и быстрый dapper
>рт это зло
ну а когда действительно они необходимы, мы будем юзать именно EF Core )))))))))))))))))))))
какой-то щкальник пришел, новое слово выучил; увидел, что это еще и за него давно сделано было. а ты ему за шмот поясняешь
Спасибо, няш, может правда все на поверхности и попробовать пилить тупо что-то существующее типа сосача.
Ну вообще именно это делать и надо.
Во первых это распрастранненные в комерческой разработке задачи.
Во вторых начинать карьеру с УНИКАЛЬНОГО СТАРТАПА представляется странным если у тебя опыта хуй да нихуяю
Нихуя ты заиграл, конечно...
https://stackoverflow.com/questions/8048455/c-sharp-resize-textbox-to-fit-content
смотри какой элегантный костыль:
I had the same problem and I solved it in a simpler way.
I used the AutoSize property of a Label control.. I added an invisible label to my form, set its AutoSize property True. When the I need to change the size of my TextBox I use this code:
MyLabel.Text = MyTextBox.Text;
MyTextBox.Size = MyLabel.Size;
Суть: в лейбл тоже можно текст добавить и он растянется под его размер. Размер лейбла копируется в текстбокс.
Школьник, иди отсюда нахуй.
А в казиношку я могу устроиться? Много платят?
1. ("foo {0}", bar)
2. ("foo " + bar)
3. ($"foo {bar}")
Что лучше в плане оптимизации ну тут, скорее всего, разницы нет, хрен с ним и читаемости кода?
скорее всего разница, тут есть. и 2й вариант будет оптимальней
если задача стоит к строке прибавить константную приставку/префикс, то лучше воспользоваться плюсом
а обычно люди не ебут себе мозги и делают все через форматированную строку. интерполяция, к слову, в плане читабельности на больших строковых выражениях сильно проигрывает
ебать я первую запятую поставил удачно
конкатенация всегда будет самым компактным вариантом тащемта. разве что в некоторых случаях интерполяция может быть покороче
вообще все зависит, в первую очередь, от привычек. а во вторую от IDE или той среды, где ты на это смотришь. VS, обмазанная решарпером, очень удобно подсвечивает элементы форматированной строки, а в темной теме раскраска постоянно всех цветов радуги, что даст тебе ясную картину происходящего
лично я смотрю на практически все пердоления со строками одинаково. разве что есть дибилы, которые в новомодном формате миксуют {{, }} и подвыражения с тернарными операторами. ну тут мои полномочия всё
Ну, в общем, все сводится к "как тебе удобно, лишь бы строка весь экран не занимала".
Прохожу курсы на ulearn и застрял на псевдотестировании:
https://ulearn.me/Course/BasicProgramming/Praktika_Testirovanie__b0d7bc0f-7309-4ff9-b472-2c19a57f25a4
Конкретно на:
>Поле внутри кавычек может содержать символы кавычек, экранированные символом '\'. Символ '\' также может быть экранирован самим же собой. То есть строка "a \"c\"" содержит одно поле, а строка "\\" b — два поля.
>строка "\\" b — два поля.
Ввожу строки как на пик1 Test(@"""\\"" b", new[] {@"\\", " b"}); и все равно получаю пик2.
Что он хочет и что он требует?
Первый тест прошел строки
>"a \"c\""
прошел
>Test(@"""a \""c\""""", new[] {@"a ""c"""});
Второй вариант читабельнее
>\"a b\" — это два поля \ и a b"
Схуяли тут уже два поля если сказано что \" это " ?
Они там вообще в глаза ебуться? Я нихуя не понимат.
>>63186
На пикче у тебя все варианты однохуйственны и мусорят примерно одинаково.
В плане оптимизации лучше использовать StringBuilder если у тебя очень длинная портянка "foo" + "bar" + MyVar.ToString() + "baz"
>@
Собака превращает все двоные кавычки внутри строки в ординарные, еще не нужны двойные слеши для экранирования.
@"Some string with "" quotation inside."
// даст - Some string with " quotation inside.
@"Some string with \ slash inside."
// даст - Some string with \ quotation inside.
Без собаки нужно экранировать
"Some string with \" quotation inside."
"Some string with \\ slash inside."
Не для лабы. Просто treenode узлы у treeview не вмещают больше 255 символов, а мне надо, чтобы было больше. Я переопределил узел и добавил ему textbox, чтобы текст писался туда, но столкнулся как раз с описанной проблемой.
Находил такой вариант, почему-то у меня не работает. Когда присваиваю лейблу текст, у него размер остается таким же. Плюс, по-моему в лейбл можно записать ограниченное количество символов.
>ну а когда действительно они необходимы
Ну расскажи когда? ) Если ты еба банк то там используются оракловские или сортофф решения для надежных рт за дохулиард денег. И твой ссаный еф тут никак не нужен от слова совсем
>Даппер кусок говна
>уж лучше хибернейт использовать
Написал разрабам стековерфлоу, похихикали с тебя дурачка)
ну так а я о чем пишу? если нужна ультрабыстрая сверхнадежная база с поддержкой ACID, то необходимо быть на голову поехавшим, чтобы пытаться использовать EF, не говоря уже о Core
чтобы пытаться использовать для неё EF
>Че это было, вы не знаете по такому мутному объяснению?
Может и правда бокнот наподобии CherryTree, с деревом и тегами для быстрого поиска. В некоторых и оформление кода поддерживается в один клик.
Спасибо, щас гляну, и видео ещё это нихуя не найти.
Глава 2. Основы ASP.NET Core
Глава 3. Сервисы и Dependency Injection
Глава 4. Конфигурация
Глава 5. Маршрутизация
Глава 6. ASP.NET Core MVC
Глава 7. Контроллеры
Глава 8. Представления
Глава 9. Маршрутизация в ASP.NET Core MVC
Глава 10. View Component
Глава 11. Модели
Глава 12. HTML-хелперы
Глава 13. Tag-хелперы
Глава 14. Метаданные и валидация модели
Глава 15. Работа с данными в Entity Framework
Глава 16. Фильтры
Глава 17. Razor Pages
Глава 18. Web API
Глава 19. Аутентификация и авторизация
Глава 20. ASP.NET Core Identity
Глава 21. Клиентская разработка
Глава 22. Поизводительность и кэширование
Глава 23. Сервер и публикация приложения
Глава 24. Тестирование
Глава 25. URL Rewriting
Глава 26. React.JS
Глава 27. Dapper
Глава 28. Работа с MongoDB
Глава 29. Глобализация и локализация
Глава 30. SignalR Core
Глава 31. CORS и кросс-доменные запросы
Глава 32. Дополнительные статьи
Охуеть, это все прямо знать надо что бы написать сранный RESTful API?
Глава 2. Основы ASP.NET Core
Глава 3. Сервисы и Dependency Injection
Глава 4. Конфигурация
Глава 5. Маршрутизация
Глава 6. ASP.NET Core MVC
Глава 7. Контроллеры
Глава 8. Представления
Глава 9. Маршрутизация в ASP.NET Core MVC
Глава 10. View Component
Глава 11. Модели
Глава 12. HTML-хелперы
Глава 13. Tag-хелперы
Глава 14. Метаданные и валидация модели
Глава 15. Работа с данными в Entity Framework
Глава 16. Фильтры
Глава 17. Razor Pages
Глава 18. Web API
Глава 19. Аутентификация и авторизация
Глава 20. ASP.NET Core Identity
Глава 21. Клиентская разработка
Глава 22. Поизводительность и кэширование
Глава 23. Сервер и публикация приложения
Глава 24. Тестирование
Глава 25. URL Rewriting
Глава 26. React.JS
Глава 27. Dapper
Глава 28. Работа с MongoDB
Глава 29. Глобализация и локализация
Глава 30. SignalR Core
Глава 31. CORS и кросс-доменные запросы
Глава 32. Дополнительные статьи
Охуеть, это все прямо знать надо что бы написать сранный RESTful API?
Не удивительно что питон и го языки будущего.
Приду домой ещё попробую поискать.
>REST
>Введение в ASP.NET Core
>Основы ASP.NET Core
>Представления
>MVC
>View Component
>HTML-хелперы
>Tag-хелперы
>Razor Pages
>Клиентская разработка
>Тестирование
>URL Rewriting
>React.JS
>больше одного ORM, васянские БД
>Глобализация и локализация
>SignalR Core
>Дополнительные статьи
охуеть. ты еще прикати сюда Рихтера и спроси, нужно ли все это зазубрить, чтобы написать hello world
>ы еще прикати сюда Рихтера и спроси, нужно ли все это зазубрить, чтобы написать hello world
Как ты напишешь НОРМАЛЬНЫЙ хеллоуворлд без понимания как работает СЛР, мммм?
1) Как делать нормальный импорт модулей в луастейт из C# кода?
Сделал так, но выглядит это как дикий костыль:
Lua.DoString("SomeModule = require 'LocalPath.SomeModule'", "SM");
Lua["SM"] = null;
Пробовал еще так, но работает неправильно:
Lua["SomeModule"] = mLua.DoFile("LocalPath/SomeModule.lua");
2) Как экспортировать листы в шкрипт на луне?
На луне есть такой код:
SomeTable = { 1, 2, CSharpApi:GetListAInt() }
Результат просто пишет: { 1, 2, "List<Int32>" }
А нужно: { 1, 2, 3, 4, 5, 42 }
Изучал сокеты. Проще было десятки страниц Албахари почитать, чем понять принципы в метаните. Сервис нормальный, но там многие элементы поверхностно описываются.
Да, тормоз. Хули ты хотел, сверхразум ебаный?
Почитал тред и авторитетно заявляю: C# - язык для тупой школоты.
Даже в помойной скриптодристне аля пайтона \ жс школота умнее будет.
проиграл с умных жопоскриптеров
- тырпрайз для бедных
- рофломикросервисы
- мобилки
- виндовссторовские приложения
- легаси щит из конца '10х
Лол, мой знакомый джавист например говорит что на джаве есть только ебучее легаси говно, буквально полутрупы которые писались ещё когда динозавры по земле ходили, жизнь которых надо поддерживать до посинения, ибо всем впадлу писать что-то новое пока старое пердит и трещит по швам, но все же работает. Не хотят делать новое, потому-что это трата бабок и человеко-часов, типичное авось и "и так сойдет" в общем. Жаба судя по тому что про неё говорят и как её ненавидят те кто на ней работают - полумертвый язык.
Касательно плюсов - они хороши, но довольно нишевые, на шарпе легче вкатиться в разы, т.к это и веб и десктоп и геймдев, то что первое в голову приходит, есть ещё ниши, типо приложений для и игр для мобилок, но ту уже спорно, но все же можно найти примеры, очень дохуя игр для мобилок на Юнити, к примеру. По-любому найдешь себе место.
Шарп еще развивается, относительно твоих примеров это очень молодой язык и на мой взгляд он развивается в правильное русло. Мелкомягкие взялись за голову.
Вот о питоне я тоже задумываюсь, собираюсь параллельно шарпу его учить, из того что читал и слышал - годный язык.
>НОРМАЛЬНЫЙ хеллоуворлд
Лови - https://repl.it/@DavidLindes/hello-replit
Питон конечно, но все-же.
Первый и третий варианты лучше.
Понятно что там ничего сложного нет, просто вспомнилось чето.
XAML - это как в виде XML описать создание инстанса через new { PropA = "", PropbB = "" }
в общем-то, на этом весь мануал заканчивается
Некоторые примеры которые пишут типа как делать не надо, такое ощущение что так могут делать только ебанутые.
Вроде то что описывает солид, иногда ахуенно заумными терминами Типа способ постановки Лисков это какая то слишком очевидная в своей сути хуйня.
>СОЛЕД
>Типа способ постановки Лисков
Кстати хотел спросить.
А как же ПОЛИМОРФИЗМ.
Вроде как одна из главных фишек ООП, А солед вроде как требует его избегать, кек.
Виртуальные методы не нужны? Переопределения зашквар?
Вангую ты ничего не писал сложнее laba1.cs.
Иначе бы знвл, что понимать как делать правильно по solid и реально делать правильно на практике без ебанутостей это две большие разницы.
>твои стереотипы
Причем тут стериотипы если эта реальность?
МЕРТВОЕ говно без задач, которым пользуются лишь исключительно школьники да студенты с лаба1.
А тупость дотнетчиков в данном треде - не имеет границ, достаточно 5 минутного чтения написановый выше хуйни.
>>64024
>Мелкомягкие взялись за голову
Да, взялись за голову: добивают мертворожденное говно, развивая TS и все чаще используя ноду.
inb4 сейчас петушня начнет вскукареки, ЧТО КРОМЕ ВЕБА ЕСТЬ ЗАМАРИН, который тоже, кстати, говно
>>64024
>Жаба судя по тому что про неё говорят и как её ненавидят те кто
Работает тонна знакомых на жабе - все давольные и с толстыми котлетами.
Если ты про способ постановки Лисков то там речь идет не о избегании полиморфизма, а о том что полиморфизм не всегда уместен, как пример - плохо если ты пытаешься следовать логике реального мира в разработке ПО упуская из виду то что разработка ПО не работает по логике реального мира.
>ЕСТЬ ЗАМАРИН, который тоже, кстати, говно
У кого ни спрашивал, никто объяснить не может, почему он говно. Вот ты знаешь? Или просто кукарекаешь, потому что все так говорят?
>добивают мертворожденное говно, развивая TS и все чаще используя ноду.
Опять ты, как же ты уже заебал тут срать своими фантазиями.
>А тупость дотнетчиков в данном треде - не имеет границ, достаточно 5 минутного чтения написановый выше хуйни.
Лол ебать, ты на дваче, в любом треде в пр точно такая же хуйня.
>Работает тонна знакомых на жабе - все давольные и с толстыми котлетами.
Работает тонна знакомых на шарпе - все давольные и с толстыми котлетами.
>почему он говно. Вот ты знаешь
Он как был сырым говном n лет назад, так таким и остался. Много времени тратится на то, на что не должно: ковыряние и костыли которые правят замариновский код и баги.
Знакомый доработал на проекте и съебался на свифт и благополучно забыл замарин как страшный сон.
>>64301
>Опять ты
Опять кто?
>>64301
>тут срать своими фантазиями
Какие нахуй фантазии. Посмотри на релиз 8.0
>>64301
>Работает тонна знакомых на шарпе - все давольные и с толстыми котлетами.
С той лишь разницей, что дотнетчики еще защеку закидывают тайпскрипт, а на жаба господа избавлены от такого "удовольствия". Ну и котлеты на жабе, как правило выше.
>Много времени тратится на то, на что не должно: ковыряние и костыли
Конкретика будет или так, только лишь яскозал?
одно из трактований определения L звучит так, что "если класс-наследник поставить на место родительского класса, то изменения в поведении приложения не будет". но тогда паттерн Стратегия идет нахуй потому, что реализация (т.е. итоговое поведение) двух разных имплементаций будет отличаться
короче, мне когда-то подобной парашей проехали по мозгам на собесе в какие-то рога и копыта. тогда я и понял, какие же люди ебланы паттерны и техники - это сверхформализованные правила кодирования
>>64257
люди такой гениальности понапишут, что иногда вспоминать солид, та даже принципы ооп, как-то не к месту
>С той лишь разницей, что дотнетчики еще защеку закидывают тайпскрипт, а на жаба господа избавлены от такого "удовольствия". Ну и котлеты на жабе, как правило выше.
Жабагоспода зачастую наворачивают легаси, которое писалось, когда они еще в школу ходили, дотнетчики избавлены от такого "удовольствия"
>Опять кто?
Долбоеб, который из треда в тред периодически пердит про то, что нода убьет дотнет, а майки этому помогают, развивая тс.
>Конкретика будет или так, только лишь яскозал?
Пиздуешь писать что-нибудь на замарине. Через часок поймешь о чем речь. Но ты ведь так не сделаешь, пиздабол клавиатурный. Ну в гугл сходи хотя бы, для начала.
>>64397
>Жабагоспода зачастую наворачивают легаси
Уж лучше ковыряться в легаси говне чем в тс и жс.
Да и хуевые у вас джависты, раз им приходится ковыряться в легаси.
>>64397
>что нода убьет дотнет
Да мне похуй что на одно, что на другое.
>>64397
> майки этому помогают, развивая тс
Они помогают не развитием тс, а тем что даже в своих поделках используют ноду, а не дотнет.
О каком развитии дотнета вообще идет речь, если даже сами майки его не используют??
>Пиздуешь писать что-нибудь на замарине.
Писал изучая на метаните, все норм работает. Выходит все твои кукареки - это обычное яскозал, ну лан, я даже особо и не удивился
>Писал изучая на метаните
>>64421
>все норм работает
Гагагаг.
Можно даже не комментировать
>>64421
>обычное яскозал
Ну, я не удивлен что у тебя нет знакомых работавших на замарине, ведь единственные твои друзья - школьники\студенты, ведь других то быть не может, комьюнити на дотнете то нету, что не удивительно, откуда у мертвого языка комьюнити?
Ну, ладно, пожалуй выпилюсь с треда, все равно в нем кроме трех школьцов никого нету.
По отдельности методы вижу, а вот все вместе - нет.
https://docs.microsoft.com/ru-ru/dotnet/api/system.type.getmethod?view=netframework-4.7.2#System_Type_GetMethod_System_String_System_Reflection_BindingFlags_
https://docs.microsoft.com/ru-ru/dotnet/api/system.type.getmethod?view=netframework-4.7.2#System_Type_GetMethod_System_String_System_Type___
Sup /pr/c#
я решил вкатиться в волшебный мир погромирования на C# и уже смотрю курс от ITDVN C# Starter.
Но курс то я скачал, а домашки к нему не прилагается.
Поэтому у меня вопросы:
1) Где брать ГОДНЫЕ сборники задач для того,чтобы вкатиться и набить/надрочить руку для c# на джуна.
2)Может у кого есть эти дз и он могёт скинуть?
3) Есть у меня такая идея. Кароче есть сайт binance.ru
и есть один бот, который делает автоматически сделки.
Нет, я не хочу писать бот, который делает сделки на этом сайте- он уже есть и придуман умными людьми.
Вопрос в другом- нужно запилить модуль расчета прибыли,который будет в идеале бы брал данные по ключу API и
расчитывал прибыль с каждой сделки.Т.е. на аккаунте есть ключ API и он забирает с бинанса инфу,передает на сервер,берет курс биткоина и считает, какая прибыль между сделкой на покупку и сделку на продажу на данном аккаунте одной криптовалюты.Т.е. купили яброки по 9 рублей, продали по 10.
Расчитать для груш, апельсинов, ананасов, посчитать среднюю сделку, посчитать месячный процент.
Я пока ещё нубенький, но бинанс позволяет в екселе выгрузить таблицы всех сделок.
И поэтому у меня вопросы.
Как это запилить и какие технологии для этого использовать? Подойдет ли С# для подобного использования? или он бесполезен в этой области?
В идеале,можно ли с помощью шарпа рисовать графики?
4)Насколько я правильно выбрал язык шарп для изучения с целью вкатывания на джуна- тут пишут,что он мёртворожденный, что нужно учить питон. я постоянно слышу подобное про разные языки и меня это деморализует.Я вроде видел ваканскии на хедхантере- там требуются и шарписты и явисты.Двач-помогач, что мне делать у меня паника.
Зигодев-кун
Починил второй вопрос.
Короче в любой непонятной ситуации нужно передавать внутрь апи таблицу луны и там ее заполнять. Тогда не будет лишнего фетча нетовских объектов в скрипт и связанных с этим тормозов.
В скрипте получается такая херня:
local Result = { }
CSharpApi:GetListAInt(Result)
SomeTable.insert(#len, Result)
Довольно многословно получается.
>В идеале,можно ли с помощью шарпа рисовать графики?
Можно же. Брутально создаешь битмап, ручку, выбираешь цвет и поебошил. Потом битмап можно сохранить в файл, запульнуть на форму или отправить юзеру на почту.
А давайте закриптуемся шустро, четырьмя крестами: https://github.com/username1565/WinFormsCryptApp
Расслабиться же. Перед самым приемом лучше всего немного накатить вина. Будешь тормознуто-спокойным, но думалка кпд не потеряет.
лучше плана курнуть чтобы тех. задачки на интервью нестандартно решались
>ГОДНЫЕ сборники задач
годными могут быть только реальные прикладные задачи. говно, типа посчитать количество нулей в веденном пользователе числе и параша на подобном уровне, научит тебя ровно ничему.
вот ты описал какую-то задумку для тебя. если ты хотя бы в общем представляешь, как ты это хочешь делать, - пили. потом, при желании, добавишь взаимодействие с БД, либо незатейливый I/O. далее попробуешь хотя бы прочитать разного рлда принципы, практики, шаблоны, и посмотришь, как можешь свою поделку улучшить. это наиболее удачный старт для кватывание в любой язык
>выбрал язык шарп для изучения с целью вкатывания на джуна
какой-то странный вопрос. ты хочешь вкатиться в C# или куда-нибудь, лишь бы на джуна? если второе - то JS-говно и вперед. порог ультранизкий, джуно-конкуренция где-то соизмерима
>можно ли с помощью шарпа рисовать графики?
с помощью шарпа можно много чего делать, это язык общего назначения. но в реальной жизни - десктоп - наиболее унылое, что может тебе посоветовать рынок. преимущественно это проекты на DevExpress, а это дно из дна легаси. да и чистых десктопных вакансий хуй да нихуя, всем нужны веб-дрочеры фулл-стакеры. по крайней мере в незалежной
>годными могут быть только реальные прикладные задачи. говно, типа посчитать количество нулей в веденном пользователе числе и параша на подобном уровне, научит тебя ровно ничему.
И каким образом выставления бита четности - не реальная задача? Веб макака?
>В идеале, можно ли с помощью шарпа рисовать графики?
Конечно можно, причем довольно легко, за тебя большая часть сделана для этого, тебе только саму логику построения графика надо будет написать по сути. Как взять данные я думаю тоже разберешься, там тоже большая часть за тебя уже написана, я более чем уверен.
В этом на самом деле и вся суть шарпа, он легкий, в .NET много крутых плюшек из коробки и работает он не хуже других.
Туториалов море, только поищи, с твой задачей не могу помочь так как сам не сталкивался.
>у меня паника.
Не волнуйся, в программировании есть хейтеры и фанбои и адекватные люди, которых к сожалению меньшинство, как и везде, на самом деле. Главное сам оставайся адекватным, а на вскукареки и бесконечные срачи хейтерков и фанбоев не обращай внимания, особенно если речь идет о двущах, только запутают тебя молодого-неопытного.
Альзо, выучив один язык на достаточном уровне, поняв принципы именно разработки ПО ты получишь базу которая поможет тебе учить и другие языки в разы быстрее чем твой первый, и потом ты уже сможешь осваивать другие языки по мере необходимости и увеличивать свой стэк технологий.
>но тогда паттерн Стратегия идет нахуй потому, что реализация (т.е. итоговое поведение) двух разных имплементаций будет отличаться
1. Паттерны не всегда и не везде применимы.
2. Тут отлично пояснено, и из этого описания я не вижу противоречий SOLID https://refactoring.guru/ru/design-patterns/strategy
У тебя есть навигатор, его цель прокладывать путь и в зависимости от того какой путь надо прокладывать не должна меняться реализация самого класса навигатора, ты просто передаешь обязанности построения пути другим классам, которые уже строят путь, не вмешиваясь в реализацию класса навигатора, это позволяет расширять и добавлять новые способы построения пути и вообще аккуратнее и удобнее. И опять подчеркну что это не противоречит SOLID ни в какой мере:
У тебя допустим есть абстрактный класс "RouteBuilder" у него есть виртуальный метод "BuildRoute", от него наследуются классы для построения маршрутов, класс навигатора принимает наследника RouteBuilder-а и наследник в зависимости от своего назначения передает навигатору построенный маршрут, поведение наследников в реализации класса навигатора не меняется, меняется только результат их поведения.
Забей, потом разберешься. На практике хватит знания чем отличаются типы значния от ссылочных типов и как рапредеяется под них память. Потом ты догуглишь как цлр грузит сборки и вообще про домен приложения узнаешь и на этом фсе.
При реально разработке тебе это редко будет нужно, почти никогда, просто помни что няшка GC чистит за тебя все говно, "GC защитит" в общем.
Но это фундаментальные основы работы языка и их нужно понимать если ты претендуешь на какую-либо "экспертность".
Соглашусь с коллегой выше, достаточно понимать разницу между стеком и хипом и значимыми и ссылочными типами соответственно.
Там C#+Selenium+SpecFlow. Посоветуйте книжку про использование селениума из C#. На ютубе одни индусы с отвратительным произношением.
Насчёт опыта. Работал с C#+NUnit и с Java+Appium+Cucumber. Т.е. близко к тому что нужно, но не совсем то.
Тяночки в основном функциональным тестированием занимаются. Автотестер, это почти погромист же!
kek
LINQ2Objects - это, всего-то, набор методов-расширений для коллекций для удобного манипулирования ими без написания тонн foreach по каждому поводу и без
Значит, тонны определений мне не нужно, и можно со спокойной душой все это пропускать?
>в .NET много крутых плюшек из коробки и работает он не хуже других.
Графики из коробки в wpf не нарисуешь, не пизди
Ну блять, это же не /b/, тут люди чуть поумнее сидят. Маловероятно, что хуйню скажут.
ну так попробуй запостить хотя бы одно непонятное тебе определение сюда
мне надо чтоб экземпляры класса с конструктором были в цикле и это все потом вышло в текстбокс, пока что ничего не получается, либо все ломается по причине что я не присвоил объект класса, либо пишет какую то хуйню в текстбокс. Тащемта помогите
На какую зп ориентируешься?
Ты в цикле заново для каждого элемента массива создаешь экземпляр пустого класса. Чтобы что-то выводить тебе надо напрямую обращаться к свойствам (direction.Name, например), либо, если ты хочешь писать просто direction, переопредели метод ToString в своем классе.
Не надо создавать в цикле новые классы Philosophy, а нужно собрать их в одну строку через ToString();
Education.TextBox += (direction.ToString() + " ")
А еще ты как-то странно юзаешь текст бокс. Если у тебя выпадающий список, то нужно юзать значение Items для добавления новых вариантов выбора.
>ПОМОГИТЕ НУБАСУ
Задание выложи, а не свои каляки.
Вместо i < 3 используй размер массива. Да и сам массив можно сразу же инициализировать: "int[] a = {1, 2, 3};", не заботясь о фиксированном размере.
Текст можно без цикла получить: String.Join("\n", a);
Кто такое написал то? Тайпскрипт - хуета без задачь. Даже бывалые JS ники блюют глядя наэто всё. К тому-же понижает скорость написания кода раз в 10. Какой-то самоотсос получается.
Медленную хуйню написанную на коленке, которую даже сами разрабы ноды обоссали и в итоге перекочевали на Go (sic!) ты сравниваешь с шарпом? Парень, да ты либо уточка, либо какой-то зомби с промытыми мозгами.
Общеприменительно "Начал пользоваться сначала А, потом Б, считаешь А лучше только потому-что ты с него начинал".
Применительно к ЯП, это когда ты выучил 1 язык или фрэймворк, а на второй язык мозгов уже не хватает. Поэтому начинаешь бегать по интернету и везде кричать что именно твой язык лучше остальных, уже 100500 раз проходили сначала с джввистами, потом с рубистами, потом вылез дарт, потом нода, потом го, потом котлин, потом реакт. На деле никто не спорит что у определённых инструментов есть преимущества. Очевидно иначе бы они не создавались. Но использовать что-то одно для всего на свете довольно глупо.
Захотел посмотреть что за /fg такое.
Захожу на борду, смотрю... удивляюсь.
Моё уважение. Если ты ещё и на C# пишешь, даже захотелось с тобой познакомиться, по крайней мере чаем\колой\винишком и картошкой фри я бы тебя угостил.
Ты хреновый программист если не переодеваешься в маленькую девочку служанку в няшных чулочках во время написание кода дома.
Это даже не смена ориентации или что-то типа того, это что-то на уровне уровня абстракции. Ты больше не 30 летний Юрий Борисовичь с усами, ты можешь забить хуй на проблемы, счета, налоги, расходы, аренду, кредиты и прочую взрослую хуйню. Теперь ты няшная японская тянучка у которой есть C# и список задачь. А все остальные проблемы из головы можно выкинуть.
Производительность повышается в ёбаные разы.
Ну надо объявить массив экземпляров класса, заполнить его с помощью конструктора и на экран вывести
Почему используешь текст бокс? Тебе надо три книжки вывести, или предполагается что будут добавляться новые?
>эти люди пилят ведро линукса
Там с этим всё совсем плохо. Смотрел фотки с их втреч, много кто довольно сильно поехал и даже в ЛГБТ ударился. Тут надо очень хорошо контролировать и понимать для чего ты это делаешь. Ну и за собой следить тоже не помешает.
Значит я гавнокодер, потому что вместо всей этой параши (надевать чулоки под брюки, жрать тонны шоколада и принимать Фенотропил) я просто часок прогуляюсь по улице или схожу в ближайший парк.
Создал базу данных с полями varchar и text форматов.
Создаю в студии сеттеры и геттеры, а там таких типов данных нет. Как так? Как выходить из ситуации?
ListBox или ListView лучше для твоей задачи, и массив не лучший вариант, когда нужно добавлять что-то новое в коллекцию, используй List. Полностью перепиши добавление и вывод под ListView или ListBox, список книг сделай полем класса формы чтобы к нему был доступ из каждого метода класса формы, запили добавление новой книги в коллекцию.
То что написал совсем какая-то хуйня без задач, не знаю насколько ты прошарен, но это не работоспособно от слова совсем. Ну и прости за откровенность, не хотел обидеть.
Почитай про разные конролы в формах, чтобы понимать где лучше применять тот или иной.
ничего, мне не обидно, я не прошарен от слова совсем)
Тебе нужно "SqlConnection" и "SqlCommand" отсюда "System.Data.SqlClient"
Вот как пример кусок кода из моей laba101.cs:
https://ideone.com/kM5H44
Если не тупой поймешь.
Спасибо няша, добра.
>Создаю в студии сеттеры и геттеры, а там таких типов данных нет. Как так? Как выходить из ситуации?
Ты троллишь? С какого хуя мсскуель и шарп вдруг одинаковые данные поддерживают?
Ты траллируешь? Я понимаю какие-то экзотические типы или блобы не саппортить, но варчар и дэйттайм не поддерживать как-то странно в 2019. Или я слишком многово прошу?
Увы, для того чтобы шарпец понимал данные из SQL их нужно приводить к типам шарпца, для этого есть две тонны методов в статическом классе Convert.
>но варчар
Иди читай начальную главу по шарпу, какой, блядь, варчар, ты из паскаля что ли перекатился?
>я сразу написал что я ньюфаг
На будущее, если ты ньюфаг постарайся не вести себя так будто лучше всех шаришь, то что шарп по умолчанию не понимает данные из SQL это мировая практика, т.к в шарпе одни типы данных, а в SQL другие, устроены они по разному, хранятся по разному и т.д, естественно что их к друг-другу надо приводить, иначе и быть не может. Это все равно что в слот под HDMI пихать Дисплей-Порт без переходника, естественно нихуя не получится.
>Вот пикрил из MS SQL Server Managment Studio
Естественно там будут те же типы данных что и в SQL потому-что это программа для работы с SQL сервером.
>Я понимаю какие-то экзотические типы или блобы не саппортить, но варчар и дэйттайм не поддерживать как-то странно в 2019. Или я слишком многово прошу?
Тут например.
Извините, не думал что это будет восприниматься как утверждение, скорее это был вопрос с рассуждением и надеждой на то, что может быть он поддерживает.
Больше я так не буду.
>Ну надо объявить массив экземпляров класса, заполнить его с помощью конструктора и на экран вывести
Ну так и вперед:
MyClass[] arr = {
new MyClass("a", 1),
new MyClass("b", 2),
// и т.д.
};
Текст для вывода всего разом получаешь типа так:
String.Join("\n", arr);
И суешь в свой текстбокс, консоль или куда там тебе надо. Но как тебе писали у твоего класса должен быть свой ToString() реализован, в котором у тебя что-то вроде: "return Text + Num;".
Поясните ньюфагу - нахуя нужна рекурсия в шарпе?
Насколько я понял что все тоже самое можно сделать в цикле/циклами, опять же насколько я понял прироста в производительности как нет ибо во первых создается каждый раз метод в стеке, а потом еще и коллектор за остальными подъезжает, а сам синтаксис ебанутее и не понятнее дефолтных циклов как по мне.
Или я в чем-то не прав?
На собеседованиях на джуна/стажира их спрашивают?
Рекурсия - это весьма тонкий, острый и очень ОЧЕНЬ специфический инструмент хирурга который можно применять строго (СТРОГО БЛЯДЬ) в определённых случаях и строго когда ты понимаешь какую проблему он решит. Тот факт, что большинство преподавателей даже на курсах от самих майк вообще нихуя не вдупляют как их применять и например при мне просто заваливали процессор - является тому доказательством. Делать 99% задач циклом безопаснее и менее подвергнет твою программу воздействию со стороны рекурсий.
В quicksortе
Двачую. В 99.9% можно заменить do while.
>Поясните ньюфагу - нахуя нужна рекурсия в шарпе?
Ну, я ее использовал, например, когда писал программу, что чекает файлы в папках. То есть, ты никогда не знаешь сколько в папке еще папок, в том числе лежащих еще в папках, а рекурсия просто по очереди в каждую заходит и чекает до упора
Хочу данных по реальным (лол) людям. По знакомым джавистам сведений дохуя, а по шарпистам почти нет
>While (true)
>if (!eshe_papki) break;
Назад возвращаться как будешь, маня? Твой цикл дойдет до конца первых папок и все
Ладно, убедил, хотя можно было бы изъебнуться с добавлением директорий в стек наверное.
Другой вопрос, как и каким средством можно отследить вызовы метода кроме как вручную точкой остановки?
>Другой вопрос, как и каким средством можно отследить вызовы метода кроме как вручную точкой остановки?
ЧО?
Ну, добавь в метод
Console.Writline("Методы был вызван");
>Назад возвращаться как будешь, маня?
А как ты в рекурсии возвращаешься маня? Вот и тут также.
Такую хуйню все ждависты говорят. На деле дохрена знакомых работают по банкам за 30-45 тыщь. Ни одного живого не видел кто получает больше.
*в России.
Хочу написать программу, суть такова. Надо хранить кучу сортированной информации с относительно быстрым доступом к ней. Тоесть что-то по типу базы данных. Но заморачиваться со всякими тулзами типа SQL серверов не особо охото. Как в таких случаях взрослые дяденьки выходят из ситуации?
Вот скажем есть программа домашняя бухгалтерия. Там всё расписано по датам, колонкам, сортируется, выбирается. При этом никакой серьёзной БД там нет.
Неплохо. А если юзер будет себе мою прогу качать, это надо будет отдельно ставить или можно будет прикрутить в установщик?
SQLite - просто файлик с расширением .db, поэтому можно тупо в установщик прикрутить.
>>66382
А почему все говорят, что БД сервера огромные и громоздкие? Даже мой батя так говорит он 1сник.
Я сначала пугался, но сейчас монгодб стоит даже на моем некроноуте и ничо - все ноомально работает, как будто никакой БД и нет.
Это фича монгодб или бд начинают жрать ресурсы, когда у них появляется пару миллионов записей?
Найс.
ультрапердолингом
хуки в CLR, но я даже не уверен, что получится сделать как-то обобщенно
либо через Dynamic Proxy, но это вынуждает менять сигнатуру методов, что не всегда оправданно (хотя что в laba1 может быть неоправданным?)
>бд начинают жрать ресурсы, когда у них появляется пару миллионов записей?
как будто любое нечто, где появляется пару миллионов чего-то, не начинает выжирать ресурсы
бд сервер - это не только данные тех двух таблиц, где ты хранишь данные для своего говна, а еще и целая экосистема вокруг, драйвера и прочая поебота. и если она используется раз в день, никакого дискомфорта вызвать чисто физически не может
> как будто любое нечто, где появляется пару миллионов чего-то, не начинает выжирать ресурсы
Справедливо. Но тогда какая разница между скулайт и скуэль-сервер?
> бд сервер - это не только данные тех двух таблиц, где ты хранишь данные для своего говна, а еще и целая экосистема вокруг, драйвера и прочая поебота. и если она используется раз в день, никакого дискомфорта вызвать чисто физически не может
Тогда какая разница между скулайт и скуэль-сервер?
sqlite - встраиваемая, бесплатная, локальная онли
sql server - целая вселенная из всего, поддерживает кучу всякого говна из-под коробки нажатием одной клавиши. платишь дохуя вплоть до использования определенного количества ядер
>скуэль-сервер
SQL Server
не?
вообще, киллер-фича SQLite - это именно встраиваемость. я не знаю других ACID баз данных, которые бы подключались к приложению путем инклуда одной ссаной dll-ки. остальное сравнение можешь наковырять тут https://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
Mysql
А что сложного в рекурсии то? Я наример недавно писал метод который генерирует определенную метадату для типа (все поля и прочее посредством рефлексии)
Рекурсивно делаю метадату т.к некоторые поля типа могут быть сложными обьектами, если так то для каждого подобного сложного обьекта снова вызываю метод GenerateMetadata, в противном случае просто продолжаю
Ещё раз, дело не в сложности, а в том, что она сжирает херову тучу процессора. По факту, когда у тебя много данных рекурсия почти равняется бесконечному циклу.
Бля, сам хочу вкатиться в автотесты, меня тупо разрывает, идти по джаве или по c#?
То-есть ответить на элементарный вопрос ты не смог. Ясно всё с тобой.
По обоим.
Там не рекурсия нихуя, посмотри внимательно, схуяли цикл должен работать как рекурсия?
Ну так ты же пишешь что оно должно работать и так, хотя так оно нихуя не будет работать.
А рекурсивный алгоритм работает.
>так оно нихуя не будет работать.
Как?
>А рекурсивный алгоритм работает.
Ну так покажи.
*Сраная вакаба вместо Enter и переноса строки отправила пост
Я иду писать код без рекурсии если что.
А как это сжирание памяти решается во всяких f# и хацкелях? Там ведь даже циклов нет, все через рекурсию.
Я пищу как-то не так или может что-то у меня со способом выражения мыслей? Где ты прочитал в моём посте про память то?
Когда тебе амазон выставит счёт на 20к баксов за превышение лимитов, тогда и приплывёшь.
>While (true)
>if (!eshe_papki) break;
Анон ответил на это - >>65961
>Назад возвращаться как будешь, маня? Твой цикл дойдет до конца первых папок и все
Ты ответил - >>66374
>А как ты в рекурсии возвращаешься маня?
Цикл не работает как рекурсия точно так же как и рекурсия не работает как цикл, рекурсия пройдет по всем подпапкам, а вот такой цикл пройдет по первой ветке до последней подпапки и будет считать что и так норм.
>>66545
>Ну так покажи.
У тебя нет рук загуглить хотя бы как рекурсия работает? Я на работе, не могу тратить время еще и на написание кода за тебя.
ты работаешь на работе что-ли?
В глаза ебусь. А чем рекурсия жрет процессор? Она ведь только стэк отжирает. Ну и вопрос тот же - как в фп живется, еслм там даже циклов нет и рекурсия быстро переполнит стэк?
Вот и выросло поколение, которое не знает, что именно сжирает рекурсия. (подсказка, не процессор)
Рекурсия потенциально может вызвать исключение переполнения стека, если дерево каталога большое и имеет большой уровень вложения. У меня например на работе каждый блядский второй каталог такой.
>Я на работе, не могу тратить время еще и на написание кода за тебя.
Скорее так, ты в душе не знаешь как писать это рекурсией, но пацаны сказали что это норм. А вот хуй.
Не знаю, видимо там есть какие-то свои заморочки. Опять же судя по тому что я нагуглил, там сильно юзают оптимизацию хвостовой рекурсии, что немного ситуацию "упрощает".
А вообще хаскель видимо поэтому не особо и распространён.
Обойти его циклом будет в разы сложнее, трудозатратнее, неэффективнее и дольше.
1 мб в стеке хватает на все случаи жизни, не представляю каким дерево должно быть чтобы завалить стек при его рекурсивном обходе например в ВУЗике когда мы проходили рекурсию квиксорт на моих глазах отсортировал массив из 200к интовых значений в считанные секунды, тогда как тот-же бабл сорт на это тратил почти две минуты, ничего не завалилось ни у кого, если 1 мб внезапно не хватает, то можно увеличить размер стека. Завалить стек могут кривые руки, но тут сама рекурсия не при чем, потому-что кривые руки могут сделать это и без неё.
Ты видел живых людей которые на этом пишут? Я один раз хаскелиста видел. При этом я два раза в природе в России видел живого дикого медведя. При этом выглядил Хаскелист примерно также. Будто очнулся от 6 месячной спячки и смотрел на меня как на говно.
>1 мб в стеке хватает на все случаи жизни
Дальше можно не читать.
Бери числа фибоначи, вычисляй.
Там был QuickSort как пример рекурсии.
>1 мб в стеке хватает на все случаи жизни
Дадада мальчик, мы помним.
640K ought to be enough for anybody
Сразу видно опытного программиста с примерами из лаб. Спасибо.
> А вообще хаскель видимо поэтому не особо и распространён.
У него проблема в том, что он сильно отличается от других языков. Блять, да в нем даже переменных нет, не говоря уж об ООП и привычных всем паттернах.
>>66592
Ну я сам его немного изучаю. написал хелловорлд месяц назад и забил. Язык мне понравился особенно classtypes, это интерфейсы с дженериками на максималках, не вижу смысла в динамической типизации после них, но в нем все равно есть недостатки - например, все говорят, что тип для входного параметра функции, это ее область значений, но при этом существуют функции типа head, которая должна принимать любой список, но при приеме пустого кидает ексепшн. Ну и нахуй нужны эти типы, если они все равно не работают?
Ну да, опытные программисты же должны по умолчанию избегать какого-либо инструмента, даже когда он уместен, только потому-что страшна що стэк сожрет, при том что оно нихуя не сожрет, если уместно.
>Ой да не сожрёт он стек
>Я лабу делал всё работало
Ты сейчас серьёзно пытаешься выставить это как аргумент?
Я не он, но прекрасно траверсил дерево 60 метрового HIPAA документа.
Ты читать умеешь? Я же написал, что всего этого в хвцкеле нет, впрочем, как и во всей парадигме ФП. Но 99% программистов выучились мыслить м погромировать императивно, поэтому им нахуй не нужен этот ФП.
Хуй в оче, если ты не знаешь как работать с рекурсией - не еби мозг посетителям треда.
Лол, с первого вопроса бомбанул. Суть то твоего поста в чём? В документе деревьев много или что? Или там формат особоый который в 60 метрах миллиард деревьев содержит? Каким хером это хороший пример обьясни?
>ты не знаешь как работать с рекурсией
Я то знаю глупенький. Поэтому и предпочитаю этого не делать. А вот такие выскочки как раз ничего не знают. Слышали что это круто, а как начинаешь распрашивать про примеры и конкретные ситуации - сразу сливаются. Вот и ты слился сразу. Никаких деталей нет, кода нет, дал параметр 60 метров и всё. Молодец. Дальше что?
>Health Insurance Portability and Accountability Act
Один лабу принёс, второй в ворде поработал. Суть всех кто рекурсии юзает. Реальный проект только у анона с директориями, и то он его написал без рекурсий.
Ты уже заебал просто, я не говорю что её надо использовать везде и всегда, мань, хватит выдавать свои мысли за мои аргументы.
А если ты считаешь что рекурсия нинужна, это еще не значит что она не нужна, я это и пытаюсь объяснить. Есть случаи когда она предпочтительнее цикла, если ты это отрицаешь то попадаешь в список долбоебов автоматически.
>>66634
>Реальный проект только у анона с директориями, и то он его написал без рекурсий.
Ты про этого? >>65916 Он же прямым тесктом написал что таки использовал рекурсию.
>Почему ты приводишь именно этот пример, обьясни
>попадаешь в список долбоебов автоматически.
Ну вот видишь как мы с тобой быстро разобрались.
Перекатывай.
Ну да, ты записал себя в долбоебы и слился в пук гринтекстом, быстро с тобой разобрались.
Во первых - ты изначально скатился в оскорбления и неоправданную агрессию к примеру из лабы, хотя пост был вообще не об этом.
Во вторых - я свою позицию давно высказал, не вижу смысла дальше продолжать разговор с тобой, если ты уперся и даже сам не видишь что ты пишешь.
В третьих - школьник тут только ты.
>Это реальный проект?
В смысле "реальный"? Он компилируется и работает. Или ты сейчас попытаешься доебаться что он не написал тебе программу за 5 минут?
>Это хороший код?
Посмотрим что там написали другие аноны? А, ну да, ничего.
>ты изначально скатился в оскорбления и неоправданную агрессию к примеру из лабы
Я написал что человек который применял рекурсии только на лабах - не совсем может судить об их практическом применении. Если его это оскорбляет - её проблемы. Я эту цель не преследовал.
>я свою позицию давно высказал
Ты обосрался с первого же поста и начал всех называть долбоёбами как только у тебя спросили подробности по проекту.
>Ты обосрался с первого же поста и начал всех называть долбоёбами как только у тебя спросили подробности по проекту.
Я анон с лабой, а не анон этот >>66619
Какая разница откуда пример, если рекурсия это только инструмент и успех зависит только от кого кто ей пользуется, это мой изначальный поинт с которым ты по всей видимости не согласен.
>Какая разница откуда пример, если рекурсия это только инструмент и успех зависит только от кого кто ей пользуется, это мой изначальный поинт с которым ты по всей видимости не согласен.
Это и мой пойнт >>65783 Анон дальше привёл пример обхода директорий, я показал его слабые стороны. Ты же приехал с лабой, и сказал что рекурсия лучше потому-что ты 1 раз её применил. Чувствуешь разницу?
Там два или три человека обсуждали рекурсии. Ты ворвался к ним с примером из лабы и решил что ты эксперт с 1 примером и всех можешь поставить на место?
>мой изначальный поинт с которым ты по всей видимости не согласен.
Для информации, ты сейчас взял информацию с потолка и сам на неё обиделся.
Проблема Хаскеля в том, что я года 3 пытаюсь понять что пишут хаскелисты, какие программы, и кто их потом использует. А так да, в чатах постоянно врываются, всем рассказывают какой хороший язык.
Сотона прав, рекурсии могут применять только синьоры помидоры 10+ лет опыта.
public void ProcessingDirectories(string dir1, string dir2)
{
try
{
if (!dir1[dir1.Length - 1].Equals(@"\")) { dir1 += @"\"; };
if (!dir2[dir2.Length - 1].Equals(@"\")) { dir2 += @"\"; };
//Заполняю коллекции именами подкаталогов (без путей) в каждой из папок.
List<string> directoriesInDir1 = (from d in new DirectoryInfo(dir1).GetDirectories() select d.Name + @"\").ToList();
List<string> directoriesInDir2 = (from d in new DirectoryInfo(dir2).GetDirectories() select d.Name + @"\").ToList();
List<string> directoriesTempInDir1 = new List<string>(directoriesInDir1);
List<string> directoriesTempInDir2 = new List<string>(directoriesInDir2);
//Заполняю коллекцию именами подкаталогов, которые встречаются в обеих папках.
List<string> directoriesDelete = (from d in directoriesInDir1 where directoriesInDir2.Contains(d) select d).ToList();
//Оставляю в каждой из коллекций только уникальные подкаталоги.
directoriesDelete.ForEach(d =>
{
directoriesInDir1.Remove(d);
directoriesInDir2.Remove(d);
});
//Создаю новые подкаталоги в каждой из папок в соответствии со списками уникальных подкаталогов.
directoriesInDir1.ForEach(d => { OnStatusWrite(this, "Создаю " + dir2 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir2 + d); });
directoriesInDir2.ForEach(d => { OnStatusWrite(this, "Создаю " + dir1 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir1 + d); });
ProcessingFiles(dir1, dir2);
//Рекурсивно вызываю этот метод (ProcessingDirectories()), для того, чтобы проверить подкаталоги на наличие уникальных
//подкаталогов 2-го, 3-го, 4-го ... N-го уровней. Сначала для подкаталогов первой папки, затем для подкаталогов второй.
directoriesTempInDir1.ForEach(d => ProcessingDirectories(dir1 + d, dir2 + d));
directoriesTempInDir2.ForEach(d => ProcessingDirectories(dir2 + d, dir1 + d));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public void ProcessingDirectories(string dir1, string dir2)
{
try
{
if (!dir1[dir1.Length - 1].Equals(@"\")) { dir1 += @"\"; };
if (!dir2[dir2.Length - 1].Equals(@"\")) { dir2 += @"\"; };
//Заполняю коллекции именами подкаталогов (без путей) в каждой из папок.
List<string> directoriesInDir1 = (from d in new DirectoryInfo(dir1).GetDirectories() select d.Name + @"\").ToList();
List<string> directoriesInDir2 = (from d in new DirectoryInfo(dir2).GetDirectories() select d.Name + @"\").ToList();
List<string> directoriesTempInDir1 = new List<string>(directoriesInDir1);
List<string> directoriesTempInDir2 = new List<string>(directoriesInDir2);
//Заполняю коллекцию именами подкаталогов, которые встречаются в обеих папках.
List<string> directoriesDelete = (from d in directoriesInDir1 where directoriesInDir2.Contains(d) select d).ToList();
//Оставляю в каждой из коллекций только уникальные подкаталоги.
directoriesDelete.ForEach(d =>
{
directoriesInDir1.Remove(d);
directoriesInDir2.Remove(d);
});
//Создаю новые подкаталоги в каждой из папок в соответствии со списками уникальных подкаталогов.
directoriesInDir1.ForEach(d => { OnStatusWrite(this, "Создаю " + dir2 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir2 + d); });
directoriesInDir2.ForEach(d => { OnStatusWrite(this, "Создаю " + dir1 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir1 + d); });
ProcessingFiles(dir1, dir2);
//Рекурсивно вызываю этот метод (ProcessingDirectories()), для того, чтобы проверить подкаталоги на наличие уникальных
//подкаталогов 2-го, 3-го, 4-го ... N-го уровней. Сначала для подкаталогов первой папки, затем для подкаталогов второй.
directoriesTempInDir1.ForEach(d => ProcessingDirectories(dir1 + d, dir2 + d));
directoriesTempInDir2.ForEach(d => ProcessingDirectories(dir2 + d, dir1 + d));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Ну где я сказал что рекурсия лучше? Я сказал что она лучше конкретно применимо к деревьям, а не в 100% случаев.
>>66661
>Ты ворвался к ним с примером из лабы и решил что ты эксперт с 1 примером и всех можешь поставить на место?
Потому-что я считаю что это как отказаться от плоских отверток, и пользоваться только крестовыми, потому-что мы боимся что плоские отвертки не так хорошо закручивают саморезы. Под каждый инструмент есть применение, иначе его бы просто не существовало, это глупо отрицать, таков мой поинт, а анон приебался к тому что я пример из лабы притащил, что-то сродни доебу к грамматике в любом другом споре. Естественно у меня подгорело.
>Самый простейший и лёгкий пример когда стек забивается.
У меня не забивался когда я их вычислял в ВУЗике, или ты имеешь ввиду написать Fib(100500) и посмотреть как все валится? Ну так не мудрено.
>30-45 тыщь
Ну, так-то даже 30 штук баксов в год неплохо для какого-нибудь Мухосранска, чай, не в Калифорнии живёте.
>99% программистов
иссессно. потому, что функциональная парадигма имеет не очень широкий пул применений. и те же 99% погромистов никогда не столкнутся даже с гипотетической необходимостью программировать функционально. а потуги разрабов языков запихнуть фп к себе, шобы быть модными, ничего, кроме фэйспалмов, не вызывает
Да я просто тупой. Не могу понять как там сделать взаимодействие классов друг с другом.
А про какое взаимодействие идет речь/ты подразумеваешь?
Рублей в месяц.
>сидит на /fg
>знает их мемы про уток
>Оправдывается что не из этих
Лол, смешно. Но вообще в случае чего тебя никто не осуждает.
>>1366885 (OP)
>>1335434 (OP)
Анон в каком месте я лажанул?
------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OLD
{
class Human
{
public int Age { get; set; }
public string Sex { get; set; }
public string Name { get; set; }
public void SayHelloToBitch()
{
Console.WriteLine("Ну привет шаболда");
}
}
}
-------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OLD
{
class Boozer : Human
{
private Liver Liver = new Liver();
protected Boaroshnik Boaroshnic = new Boaroshnik();
public void NassatVPadike()
{
Console.WriteLine("Опять кто-то подъезд обоссал");
}
}
static void Main (string[] args)
{
Boozer Seva = new Boozer();
Seva.Name = "Дядя Сева";
Seva.Age = 50;
Seva.Sex = "Мужичара";
Seva.SayHelloToBitch();
Seva.NassatVPadike();
Human man = Seva;
Boozer boozer = man as Boozer;
if(boozer != null)
{
boozer.NassatVPadike();
}
Console.ReadKey();
}
}
-----------------------------------------------
namespace OLD
{
class UltraBoozer : Boozer
{
public void ChoDrink()
{
Console.Writeline(Boaroshnik);
}
}
}
-----------------------------------------------
namespace OLD
{
class Boaroshnik
{
}
}
-------------------------------------------------
namespace OLD
{
class Liver
{
}
}
--------------------------------------------------------------
ОшибкаCS0116Пространство имен не может напрямую включать в себя такие члены, как поля или методы.
ОшибкаCS0117"Console" не содержит определение для "Writeline".
ОшибкаCS0119'Boaroshnik" является тип, который недопустим в данном контексте.
>>1335434 (OP)
Анон в каком месте я лажанул?
------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OLD
{
class Human
{
public int Age { get; set; }
public string Sex { get; set; }
public string Name { get; set; }
public void SayHelloToBitch()
{
Console.WriteLine("Ну привет шаболда");
}
}
}
-------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OLD
{
class Boozer : Human
{
private Liver Liver = new Liver();
protected Boaroshnik Boaroshnic = new Boaroshnik();
public void NassatVPadike()
{
Console.WriteLine("Опять кто-то подъезд обоссал");
}
}
static void Main (string[] args)
{
Boozer Seva = new Boozer();
Seva.Name = "Дядя Сева";
Seva.Age = 50;
Seva.Sex = "Мужичара";
Seva.SayHelloToBitch();
Seva.NassatVPadike();
Human man = Seva;
Boozer boozer = man as Boozer;
if(boozer != null)
{
boozer.NassatVPadike();
}
Console.ReadKey();
}
}
-----------------------------------------------
namespace OLD
{
class UltraBoozer : Boozer
{
public void ChoDrink()
{
Console.Writeline(Boaroshnik);
}
}
}
-----------------------------------------------
namespace OLD
{
class Boaroshnik
{
}
}
-------------------------------------------------
namespace OLD
{
class Liver
{
}
}
--------------------------------------------------------------
ОшибкаCS0116Пространство имен не может напрямую включать в себя такие члены, как поля или методы.
ОшибкаCS0117"Console" не содержит определение для "Writeline".
ОшибкаCS0119'Boaroshnik" является тип, который недопустим в данном контексте.
Это копия, сохраненная 21 апреля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.