Это копия, сохраненная 24 июля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Литература вторым постом
1. Ресурсы:
- https://metanit.com/sharp/
- https://stackoverflow.com/questions/tagged/c#
- https://www.tutorialspoint.com/csharp/
- https://professorweb.ru
- https://habr.com/ru/hub/csharp/
2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- https://ideone.com/
- https://www.tutorialspoint.com/compile_csharp_online.php
- https://rextester.com/l/csharp_online_compiler
3. WinForms или WPF?
Шо то хуйня, шо то - все пацаны на электроне ебашат. Еще есть Avalonia, но пока она сырая. Но если уж хочешь гуй на шарпе, то читай:
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Да, он совершенно прав. Даже микрософт постепенно переходит с шарпа на тайпскрипт. К сожалению, самые крутые языки никому не нужны.
Неправда. C# кое-как развивается, недавно вышла седьмая версия шарпа, и уже активно разработывается восьмая. в ней pattern matching прям как в хацкеле будет! Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант -
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Rider - платная IDE от JetBrains со всем функционалом решарпера и кроссплатформенностю. Если ты богат и сидишь на линуксе/маке, то это отличная замена VS.
Для vim/emacs можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, ставь сразу VS2017 и при установке выбирай все нужные компоненты.
Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials
7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn Overview
Новые возможности C# 8.0: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код старой шапки: https://pastebin.com/cKKXYArs
Код этой шапки: https/://pastebin.com/cKKXYArs
Позапрошлый тред тонет здесь: https://2ch.hk/pr/res/1366885.html (М)
Прошлый тред тонет здесь: https://2ch.hk/pr/res/1378307.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
В начале января стал посещать этот тред. Теперь я джун, на испытательном.
Спасибо всем анонам что помогали мне, особенно тем, что создали гайд из оп поста. Всё благодаря вам.
Пидорский тред.
А знаешь почему он такой? Потому-что вы, пидоры 450 постов его не могли перекатить. Страдайте теперь.
Эм, в прошлом тоже феликс был на оппике.
Явараш
Скопируй из учебника первый в списке который.
if(condition)
{
..DoSmthg();
..return true;
}
else
{
..return false;
}
или
if(condition)
{
..DoSmthg();
..return true;
}
return false;
два Roslyn-а в чай этому
leetcode.com
>но когда уже, допустим, ООП начинается, у меня фантазии не хватает
Дом - человек, будка - собака, ошейник - кредиты.
condition ? dosomthing() : false;
dosomthing должен возвращать булевое значение. Если нельзя менять тип возвращаемого значения, то:
condition ? true && "" == dosomthing().toString() : false;
win10 накати, отруби все свистелки и перделки, получится интерфейс как у win2000 но работать будет быстро и стабильно.
>Celeron 4 ram
>win10 накати, будет быстро и стабильно
Лучше крысиного яду накати, будешь здоровым и долго жить.
У меня P4 1.6 3.4 гига оперативки. Поставил вин10, брат жив, работает, прогать можно. Компилируется по 3-4 минуты правда. Но что поделать.
А вообще иди ка ты нахуй, сам спросил, ответ получил, ещё выёбывается сидит. Покупай тогда i5 и 16 гиг оперы, раз ты такой мудак.
>condition ? true && "" == dosomthing().toString() : false;
понимаешь же, что это пиздец не очень?
>>06575
>condition ? true && "" == dosomthing().toString() : false;
Я боюсь людей которые так пишут. Без шуток и сарказма, я жду от таких людей что они сразу после такого написания кода повернутся к коллеге, выколют ему глаз, растегнут ширинку штанов и будут ебать его прямо в глазницу. Но это будет адекватнее поступок, чем этот блядский код.
condition ? true && dosomthing() : false;
Но блядский C# не умеет приводить к булевому типу, поэтому приходиться делать данный work around.
Как ты капчу вводишь??? (Извините за оффтоп)
C# не может (из коробки) приводить примитивные и ссылочные типы к булевому значению, а JS может.
какое-то сильное колдунство
насколько я знаю джаваскрипт это выражение вернет dosomething() если выполнится condition и полностью эквивалентно condition ? dosomething() : false
DoSomething - функция.
Ты пишешь:
if (result) DoSomething;
Тебе не хватает () после DoSomething, поэтому твой код не скомпилируется.
Так себе придирка. Я-то уж думал, у меня какой-то фундаментальный проёб.
Как бы я не выебываюсь, этот чел не я
Я там тоже неправильно написал, в JS нужно писать:
condition ? Boolean(dosomthing()) : false
Тогда выполнится dosomthing и его результат будет приведет к булевому типу. При этом если в dosomthing не определено возвращаемое значение, то нужно писать !Boolean(dosomthing()) если хочешь получить true
Это не придирка, а факт. Непонятно зачем ты этот скриншот высрал. Что ж ты не написал dosomthing, а написал dosomthing(), раз это придирка? Придирка это когда тебе говорят, что ты ошибся, потому что написал x == y, а не y == x, а в твоём случае это грубая ошибка.
public void Dispose() => disposableObj.Dispose();?
вообще преимущество отдается раннему выходу из метода.
вот в таком говне:
var result = {};
#region Boilerplate
...
#endregion
return result
как только появляется необходимость в ифе, сразу такое чудо разрастается до несуппортабельной простыни. и, кроме как тыкнуть вилку в печень автору, ничего не хочется
да
В таком варианте вообще метод test не нужен, если кондишн известен вызывающему методу.
Проблема магических чисел возникает когда ты не знаешь что это за тру и фолс. Но когда ты видишь return true;, ты понимаешь, что этот тру является результатом выполнения функции.
Сем отличается метод от функции? Только ПОЖАЛУЙСТА, без ёьнутых примеров которые неюзабельны на практике. И я в курсе как это всё работает. Но я так и не понял какую задачу решает МЕТОД. Если есть добрый анон няшка, я бы послушал его обьяснения. Потому-что для меня это пока примерно одно и тоже с незначительными различиями.
Согласно общепринятой терминологии в шарпе есть только методы. В других языках есть функции, которые возвращают какой-либо результат (return aa), и есть процедуры которые ничего не возвращают (Console.Write(aa);)
В разных языках разные понятия. В ФП, например, функция это то, что делает преобразования входных данных в выходные и ничего более.
да, но type.GetProperty("%name%") не получает свойство, если оно реализовано в родительском классе
Вакабамарк выебла ньюфага ИТТ. Абу, убери уже вакабамарк, всё равно все форматируют ббкодами.
Самое обидное, когда через полгода всему научился, всё тщательно перепроверяешь, но стоит написать FooBar как сразу вскрикивают "А, это ты ОБАСРАЛСЯ в треде полгода назад! ПАЦАНЫ, НЕ СЛУШАЕТЕ ЕГО СОВЕТОВ! ОН ОБОСРАН!"
>>06715
Разобрался, можешь тогда заодно подсказать как такое намутить
https://dotnetfiddle.net/h7Sx9j ?
https://dotnetfiddle.net/QbBFay
CanWrite: false
если я правильно помню, это костылем ток лечится. но каким, тоже не помню. вообще, рефлексия - это такое себе удовольствие
вдогонку: если private поменять на protected, будет такое:
[System.MethodAccessException: Attempt by method 'Oooo.Program.Main()' to access method 'Oooo.Base.set_Some(Int32)' failed.]
очень вероятно, что это политики выполнения кода в фиддле. потому, что протектед ну точно обходился рефлексией. попробуй на своей пеке запустить кодэ
Когда не знаешь как сделать, пизди код со стековерфлоу
https://dotnetfiddle.net/pKBeta
может если разобраться можно и проще, но нахуй
Нельзя, через сокет ты можешь передать только бинарные данные.
Читай четвертую.
>ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
1. Перестать вводить в заблуждение людей и написать, что на сисярпе пишут только бекенды для богатых папенек.
2. Ты подписываешь автоматом себя на шиндоус.
3. Сисярп никому в этом мире не нужен, все уже давно работает на гошке, жсе, скале, даже на обоссанной жабе.
4. Про мобилки вообще молчу.
5. Ах и да, D365 API просто отвратительное. Тоже самое можно сказать и про SharePoint и так далее.
6. SharePoint лагает. 30 секунд открывается вкладка.
Вот как у меня происходит взаимодействие в приложении:
1) Пользователь авторизируется в систему;
2) Пользователь заходит в меню заказов;
3) Выбирает дату заказа автомобиля и дату возврата в автопарк, марку авто;
Проблема в следующем, пользователей же несколько может быть. Как сделать так, чтобы если пользователь выбрал дату заказа авто, когда она уже заказана была другим человеком - выводилось сообщение что машина недоступна (проблема не с выводом сообщения, а в реализации проверки доступности) + Нужно учесть, что машина должна быть доступна для заказа в другие дни, когда не заказана.
Причём если с товаром ясно, что его нет на складах, то всё - дело с концом. С заказом машин тут ещё с датами работать надо, как правильно запрос к БД написать, подскажите пожалуйста
Я создал три сущности:
client:
{
client_Id;
name;
login;
password;
}
car:
{
car_Id
mark;
price
}
order:
{
order_Id;
orderDate;
returnDate;
client_Id;
car_Id;
}
Сущность машины менял, до этого ещё булевая колонка была, которая проверяла занята ли машина, но тогда получалось, что действовала глобально - тобишь, если isFree = false, то машина занята до тех пор, пока не вернётся. А это накладывает запрет на заказ этой же машины на другую дату.
Как правильно запрос написать? Или дело не в запросе а в архитектуре самой системы, нужно ли что-то поменять?
Посоветуйте пожалуйста литературу/разобранную задачу, где в примерах есть эдакие системы-"букинги", с заказами машин/товаров/услуг, где ещё присутствует и учитывается такой элемент как дата.
Вот как у меня происходит взаимодействие в приложении:
1) Пользователь авторизируется в систему;
2) Пользователь заходит в меню заказов;
3) Выбирает дату заказа автомобиля и дату возврата в автопарк, марку авто;
Проблема в следующем, пользователей же несколько может быть. Как сделать так, чтобы если пользователь выбрал дату заказа авто, когда она уже заказана была другим человеком - выводилось сообщение что машина недоступна (проблема не с выводом сообщения, а в реализации проверки доступности) + Нужно учесть, что машина должна быть доступна для заказа в другие дни, когда не заказана.
Причём если с товаром ясно, что его нет на складах, то всё - дело с концом. С заказом машин тут ещё с датами работать надо, как правильно запрос к БД написать, подскажите пожалуйста
Я создал три сущности:
client:
{
client_Id;
name;
login;
password;
}
car:
{
car_Id
mark;
price
}
order:
{
order_Id;
orderDate;
returnDate;
client_Id;
car_Id;
}
Сущность машины менял, до этого ещё булевая колонка была, которая проверяла занята ли машина, но тогда получалось, что действовала глобально - тобишь, если isFree = false, то машина занята до тех пор, пока не вернётся. А это накладывает запрет на заказ этой же машины на другую дату.
Как правильно запрос написать? Или дело не в запросе а в архитектуре самой системы, нужно ли что-то поменять?
Посоветуйте пожалуйста литературу/разобранную задачу, где в примерах есть эдакие системы-"букинги", с заказами машин/товаров/услуг, где ещё присутствует и учитывается такой элемент как дата.
8. Если и сидеть на сисярпе, то тогда в полностью отданное рабство. На другие языки просто не сможешь смотреть, с непривычки.
>в архитектуре самой системы, нужно ли что-то поменять?
Нужно подумать, и добавить соответствующие поля.
А лучше бы ты бросал это дело. Земля тебе пухом.
1. го имеет самую высокую стату по зарплате. джява, к слову, редко когда опускается ниже
2. как там в 2к10м?
3. понятно
4. понятно
5.
5.1 зачем ты используешь SP, 365? зачем ты винишь в этом дотнет?
5.2 зачем ты долбоеб?
6. --> 5.
7. --> 5.2
8. сознательно сидеть на одном ЯП и винить его в том, что ты не можешь ничему научиться --> 5.2
А можно поподробнее пожалуйста (прошу прощения за наглость)!
У меня просто мозг уже "зациклился"...
так ему и существующих полей достаточно для наколенной реализации
ну, справедливости ради, и Mono существует уже тыщу лет
>поподробнее пожалуйста
Короче, у тебя в БД должна быть таблица с машинами, индексируемая по полю ID и таблица заказов, индексируемая по полю ID, в ней для каждого заказа имеется поле CAR_ID с айдишником машины из таблицы машин, очевидно.
Когда твой клиент логинится в систему и хочет сделать заказ, он открывает каталог и система делает в БД запрос, которым выбирает только те записи из таблицы машин, ID которых нет в таблице заказов на текущий период дат. То есть, если orderDate < now < returnDate, то только тогда car_Id из этой записи НЕ выводим в каталог.
Огромная благодарность Вам!
Спасибо, очень странно, что сам не допёр, видимо плохо соображать начал.
Ещё раз - спасибо!
Обращайтес.
>ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Убрать из неё мутанита или хотя бы написать, что материал не рекомендован для вкатывальщиков и адекватных людей, которые хотят научиться C#.
>Я создал три сущности:
Как бы, типичный пример падавана, который учился у мутанита. Вроде что-то пишет, но ничего не понимает и в голове не структурированные знания, а каша сваренная из верхушек, которую изложил долбоеб ака мутанит.
ня я лично вкатывальщик во фронтэнд и ненавижу бд, но я бы лично сделал всего два класса - клиент и машина, а у машины соответственно помимо цвета, цены и марки был бы массив заказов с датами и при заказе можно было бы чекать этот массив инстанса машины и смотреть какие даты свободны
щас бы скриптомакакам про солид рассказывать
Думаю давно очевидно, что Мелкософт скоро будет никому не нужен и те, кто изучал Шрамы останутся с жизненными шрамами не нужности и опущенности.
ну, конечно, другое дело ты
И Вам спасибо!
как ты создашь связь между машиной и заказами в том же монгодб если не сделаешь заказы субдокументом машины, я не понимаю
постой, двач образовательный же
правильно ли я понимаю что с твоей точки зрения нереляционные бд нарушают принципы солид?
>у машины соответственно помимо цвета, цены и марки был бы массив заказов с датами и при заказе можно было бы чекать этот массив инстанса машины и смотреть какие даты свободны
Итого у тебя за 10 лет получается 3650 КРАСНЫХ BMW машин. Молодец. Нахуя эта информация и как ты будешь её использовать - по прежнему не ясно.
солид это не совсем про базочки
для реляционных есть "нормальные формы". для нереляционных ничего не знаю подобного, денормализация там - это вполне себе дефолтная тема
нани
это массив текущих/будущих заказов, чтобы нашёл машину и проверил когда свободна, зачем там хранить архив
Есть желание изучать и .NET, и Unity, и в моделировать в Blender'е потихоньку для себя. Так вот, насколько перспективно изучать школьнику этот стек технологий для трудоустройства до 18?
Школьнику для начала надо научиться читать правила и следовать им, может тогда школьник перестанет заходить на сайты для 18+ аудитории.
Ощем, я был не прав. было развеселое, прикольное собеседование. результатов не знаю. было практически все что я знаю, и половина про то что я знаю. но не сильно практиковал: многопоточность, исключения в многопоточности, замыкания, expression и работа с linq на уровне выражений, оптимизация запросов sql.
как-то так
шансы 1 из 20.
хз как ща, но в мое время джунам даже на письма не отвечали. ТП не считали своей обязанностью ответить всем подряд: вы нам не подходите.
на удаленке все еще жестче. эта штука сама посебе требует самодисциплины. как правило. от ребята до 18 да и после 18, те кто джун, требовать самодисциплины - глупое дело.
ты читать не умеешь
Поконкретнее можн? Мне нельзя подключаться напрямую к серверное бд, т.к. у клиента права жестко ограничены только добавлением записей.
Я лайкну за один return в конце метода.
Что в твоём понимании "подключаться напрямую к серверной бд"? Пользователь вводит данные, нажимает кнопку, которая отправляет данные на сервер при помощи http запроса, обычно это POST, обычно данные сериализуют в формат json, либо выполняют бинарную сериализацию, отправка идёт на определенный адрес, например https://server.org/db/addData. Но ты можешь их GETом отправлять, можешь PUTом, также как и адрес может быть вообще одним для любого вида запросов, а кто тут клиент/сотрудник/админ решается при помощи заголовков запроса. На сервере данные запроса обрабатываются и добавляются в базу данных, либо отбрасываются как не прошедшие проверку.
Это тоже самое, что после создания объекта, проверять создан он или нет:
MyClass x = new MyClass();
x?.method();
Какой в этом смысл?
Не то же самое. Dispose() ничего не знает о том, как disposableObj был использован. Тот вполне мог быть присвоен null в каком-то из методов:
void DoThings()
{
disposableObj = null;
}
void Dispose()
{
disposableObj.Dispose(); // Тут вылетит NRE, если DoThings() был вызвал во время работы с объектом
}
ситуативная херня. если вложенный IDisposable помечен как readonly, а конструктор писал не школяр и проверяет зависимость на налл, нахер тут этот ? облокотился
Но так уж получается, что композиция, о которой ты говоришь, зависит от такого, как обращаться с объектом, который будет задиспожн.
Он не знает, знает программист, и если у тебя реализован объект при котором создается диспозабл объект, то очевидно, что пока существует этот объект, будет существовать и диспозабл объект, поэтому смысла в проверке на null нет.
Как знаешь. Отлавливать NRE не мне.
На прямую к бд никто и не общается. Сделай апи, которое будет фильтровать запросы и дергать базу, и общайся через него.
Эмм, а я думал так было раньше, до того, как майкрософт изобрели LINQ и теперь можно обращаться к БД не снимая свитер.
Проясните, плз.
ты путаешь механизм непосредственно доступа к данным и разграничение на уровне архитектуры
Поподробнее плиз.
Прост я с БД работал ещё в 2005 году, тогда да, разделялось. А сейчас вот учу шарп и слушаю охуительные истории про LINQ от МСДН.
тебе предлагают:
клиент <-[ ]-> сервер <-[ ]-> бд
где каждый из компонент разделен физически
ты говоришь о сборке, которую нужно подключить на стороне сервера (в твоем случае), которая будет за тебя генерить SQL и материализовывать сущности в .NET-овские классы:
клиент <-[ ]-> (сервер: LINQ ->) <-[ ]-> бд
мс тебе предлагает просто абстрактно получить доступ к любой (условно) базе средствами LINQ
ты говоришь, что из клиента стучать к БД низя
тебе предлагают запилить сервер, с которым будет общаться клиент, который будет стучать в базу
там можешь обмазаться LINQ, EF, Dapper, любым другим говном
ВОПРОС
Как реализовать?
Прочитать гайд по MVC.
Зачем здесь лишняя переменная?
Шо делать? Я уверен процентов на 90%, что проблема заключена в итоговом ключе который генерируется алгоритмом Диффи-Хеллмана, можно ли его каким либо образом привести к нормальному виду, чтобы алгоритм шифрования исправно шифровал текст этим ключом? были мысли про md5 хеширование, но я чет нихуя не понял
алсо, только что глянул метод Aes.GenerateKey(), генерирует он хуйню идентичную моему алгоритму диффи-хеллмана. У меня нет мыслей. Мб можно как то сгенерировать 100% рабочий ключ по кодовому слову, где в качестве кодового слова будет использоваться сгенерированный моим алгоритмом ключ? Аноны, спасайте
Все это уже реализовано. Что ты там собрался получать с криптобирж, лол? Уже есть подобные агрегаторы. Займись делом!
>Мб можно как то сгенерировать 100% рабочий ключ по кодовому слову
лолшто? что ты там генерить собрался?
у тебя ключ должен иметь определенную длину, а не просто рофлонабор говна какого-то
ну так и как мне сделать генерацию ключей чтобы они были не рофлонабором говна? Aes.GenerateKey() мне не подходит, так как обмен ключами производится по незащищенному каналу, т.е. через алгоритм Диффи-Хеллмана
Я же написал, обмен ключами происходит через алгоритм Диффи-Хеллмана. В кратце: передается публичный ключ по открытому каналу, производятся математические операции, клиенты обмениваются промежуточными данными, снова их обрабатывают и таким образом высчитывается закрытый ключ. Товарищ майор, который прослушивает трафик при этом никаким образом не может воссоздать этот закрытый ключ, т.к. у него не хватает некоторых данных, которые генерируются локально у каждого клиента и не передаются по этому каналу
так, теперь все стало на свои места
тебе же говорят:
>Указанный ключ имеет недопустимый размер для этого алгоритма
если ты сам себе рассчитываешь ключанский, так догони его до нужного размера, который угомонит AES. нулями дополни в конце (или в начале), или кусок соли вставь, пускай даже передаваемой открыто
Вот тут вылазит еще одна хуйнюшка о которой я писал в первом посте. Этот закрытый ключ ключ типа BigInteger у меня может иметь длину в 36,37,38,39 символов, при этом ключи этих размеров одинаково рандомно подходят для шифрования. В 50% случаев алгоритм шифрования работает для ключа любой из этих длин, в другой половине случаев выбивает ту ошибку.
Следовательно - я долбаеб и длина ключа считается не количеством цыфарак в ключе? И если я долбаеб, каким образом мне узнать длину сгенерированного ключа и в случае малой длины дописать его до необходимого размера, а в случае если длина больше необходимой - урезать?
в исходниках или документации (хотя я не уверен, криптография не мой профиль)
там простая формула, я просто тупо решарпером смотрел место, откуда такая ошибка возвращалась
йобаная криптография. Хули я на повара учиться не пошел. Спасибо, анон
В любом случае слишком сложно для меня, нормальное неразваливающееся говно сделать не получится.
велкоме ту софтваре девелопмент
Сейчас учусь на похуиста программиста.
Что можно нубу сделать на шарпе, чтобы въехать и чтобы поэтапно, не перескакивая.
1. Хеллоуворлд в консольке.
2. Хеллоуворлд в окне.
3. Хеллоуволдл в окне по нажатию кнопки.
4. Окно с кнопкой и чекбоксом. При отмеченном текстбоксе выводится хеллоуворлд, когда нажимаешь кнопку, при убранном нет.
5. Оконное приложение с кнопкой, чекбоксом и списком. В списке выбираешь фразу и по нажатию кнопки выводится другое окно с этой фразой.
6. Хранение записей в БД и загрузка их в список.
7. Хранение записей на сервере в сети и получение их в список.
8. Кроссплатформенное окно, которое одинаково выглядит в винде и линуксе.
9. То же, что и 8, но ещё и одинаково подтягивающее данные из п. 6 и 7.
Динамическая кодогенерация же, вытворять говно, аналогичное reflection, но не со скоростью черепахи, а со сравнимой с обычными вызовами.
Ежели со скрипом осиливаешь рефлексию, то не лезь туда, оно не про C#, оно глубже - нужно IL знать и прочую поднаготную рантайма. Если сильно хочется - можешь копать в сторону Expression.Compile()
мммм
куда бы свичнуться с этого славного многообразия подводных камней?
на собесах заебали, сижу с дымящейся жопой, учу то что не учил раньше
ох ебать говнище
хуею с таких долбоебов, которые: а) придумывают это; б) спрашивают подобное на собесах
while(true)
Я бы за такое увольнял с работы. А меня за такое хуесосил ещё преподаватель аж лет 8 назад.
А вообще интересует конкретный вопрос, как взять фотки из галереи и пихнуть их в какую-нибудь коллекцию? Где не искал везде решения только о том как открыть выбор фотографий из галереи, а это совсем не то.
Принципы работы CLR, Паттерны MVC и MVVM, ADO.Net(EF и\или Dapper), в зависимости от того что делать собираешься учишь нужный специализированный под что-то конкретное фреймворк типо ASP.NET для веба и пр..
Не надо, прошу.
Лул, недавно знакомый устроился работать на шарпе. Угораю с ебланов у которых нибамбит от собственного ничтожества и они во всем винят язык.
Раньше диды лаптями щи хлебали.
прикол в том, что раньше я думал что Троелсена и 70-483 мне хватит на любое собеседование, а оказывается нет.
я такое 1 раз за посление 3 года такое видел. 1 раз на 1 проекте. на всех остальных такого небыло.
Хм... В EF чтобы создать связь один ко многим или многие ко многим в Code First ты буквально задаешь как виртуальное свойство класса коллекцию или объект той модели с которой связь, это нарушение SOLID? С DB First автоматически сгенереный код тебе такие же модели выдаст. Тоже нарушение SOLID?
Если ему нужна коллекция заказов с которыми связанна машина как свойство класса "машина" - то что в этом плохого и где тут нарушение SOLID? Связь один ко многим ну я предполагаю, тут либо у заказа делать как свойство машину, либо у машины список заказов, нарушения SOLID-а тут нет.
примеры высосанные из пальца под собес, хули ты хотел
в качестве примера можно было ебануть использование Task или каких-нибудь делегатов, но не вот эту пердотню
Возможно ли как-то засунуть условия для using перед namespace,
или try-catch, чтобы сначала проверить есть ли DLL-ка, а потом её юзать,
иначе дефолтный using или вообще нифига...
Если да, то как это правильнее всего реализовывается?
Или в msbuild
<PropertyGroup>
<DefineConstants Condition="Exists('my.dll') ">$(DefineConstants);DLLEXISTS</DefineConstants>
</PropertyGroup>
И потом в блоке using черед директивы препроцессора
#if DLLEXISTS
using Tvoyahuynya;
#endif
А где об этом по хардкору погрызть, а то для меня это просто буквы какие-то?
>>09584
А попроще, никак нельзя?
>>09588
Дело в том, что dll-ки лежат в папке packages, это dll-ки из nupkg-пакетов,
а при компиляции всё это копируются в bin/Releases, которую можно таскать с флэхи на флэху.
В <PropertyGroup> если указать пути к изначальным dll-кам - они уже не будут соответстовать путям вновь создающихся,
ну и конструкция:
#if
#else
#endif
чё-то не пашет внутри самого кода, после using'ов этих.
Поэтому надо бы сделать так, чтобы проверялось наличие DLL-ок в папке с программой,
и если они есть - подключались всякие BouncyCastle, log4net и так далее.
Иначе, если DLL-ок нет, то не загружать методы И КЛАССЫ и даже неймспейсы,
которые их используют а просто юзать System.Security.Cryptography и Console.WriteLine, например.
Короче, надо чтоб софтина, при компиляции - ошибки не била, если DLL-ок нет,
и чтоб, по дефолту, она компилировалось в минимально-возможной рабочей конфигурации.
хочу, чтобы однажды можно было написать такую конструкцию: ¯\_(ツ)_/¯
Java
Пиздец, манагер jetAss проснулся с перепоя и постит хуйню...
Да твой убогий сруйдер не годится ни на что кроме хеллоувордов и упражнений к учебникам по с# писать так как ни шаблонов для проектов промышленного программирования нихуя не имеет ни поддержки всяких xaml и други форматов из winforms/wpf и т.п.
))))))))))))))))))))))))))))))
Похоже на еблю стоя.
| | ||
| | ||
|_ |_ _||_
В ДоДо все пользуются райдером. Студия просто неспособна загрузить решение с двумя сотнями проектов.
студия отлично открывала солюшн на 230+ проектов. естественно, билдится все это говно вечность, но причем тут ide
это та дода, на собесе которой нужно написать мини-ессе о своем опыте разработки? лул, охуенная контора, надо брать пример с ебланов
>Rider удобнее студии в миллиард раз
Нет.
>>09958
>так как ни шаблонов
https://blog.jetbrains.com/dotnet/2017/12/21/project-templates-rider-2017-3/
>ни поддержки всяких xaml
https://blog.jetbrains.com/dotnet/2018/03/29/xaml-preview-tool-window-wpf-rider/
>В ДоДо все пользуются райдером.
Все прыгают с утеса, ну и ты прыгай. Ну, а хули?
>ДоДо
>Две сотни проектов
Не устаю проигрывать с этой секты и их
>У нас сложная предметная область, пиццы бывают половинками...
Кому делать нечего - прицепите-ка сюда: https://github.com/username1565/f5-steganography
авторесайз как-то. Будем в JPEG'aх стеганографироваться!
Авторесайз изначальной пикчи...
Ну, чтобы когда входной файл был большой, изначальный JPEG становился побольше,
чтобы затем, у него увеличивалась capacity, и файл мог быть запакован туда.
Вижу JPEG сохраняется с Image, а Image можно ресайзнуть.
Только там два using'a, блядь, и код какой-то мудрёный.
Алсо, не помешала бы запаковка/распаковка байтовых массивов, а то там Stream сохраняется в файл.
Если получится сделать авторесайз, и прицепить байтовые массивы,
то можно будет f5-jpeg-steganography - встроить в наноборду: https://github.com/username1565/nanoboard/issues/4
И развешивать по бордам жипеги. Лол.
Про sqlCmd.ExecuteScalar()[.ToString()] - знаю, а вот как быть если возвращается несколько значений (одной колонки)?
Подскажите пожалуйста!
Здравь будь, княже!
Даже не знаю, что можно сказать еще долбаебу, который не в состоянии открыть прямую ссылку.
>Read and write operations can be performed simultaneously on an instance of the NetworkStream class without the need for synchronization. As long as there is one unique thread for the write operations and one unique thread for the read operations, there will be no cross-interference between read and write threads and no synchronization is required.
Я правильно понял, что я могу одновременно писать и читать из разных потоков, но если я буду одновременно писать (или читать) с двух потоков, то всё пойдет по пизде?
можно параллельно читать и писать с двух уникальных потоков без синхронизации. все, что больше, требует управления
Compress(...) перенеси в конструктор, там же и ресайз напиши когда все данные не влезут. Иначе нужно будет весь код переделывать. Большая часть данных в конструкторе инициализируется и так просто изменить не получится.
для каждого игрока использовать два tcpclient - один для обмена игровой инфой другой, чтобы посылать "пинги" каждые несколько секунд. Другой вариант тоже самое, но второй udp клиент который шлет каждую секунду сообщение и если не было сообщений n секунд констатировать отвал. Третий вариант - реализовывать все в одном tcp клиенте, но тут хз как все это организовать.
так TcpClient бросается исключением если закрывается соединение. или я с сокетами путаю?
>где можно посмотреть практические задачки разного уровня сложности?
На работе/в опенсорсе/на врилансе
Да но только когда пытаешься прочесть из него. То есть если у меня будет например 5 минут на ход, то если не опрашивать клиента жив ли, то второй игрок может впустую играть до 10 минут.
скажи - это нормально, для человека, который первый раз видит эти алгоритмы в виде текста, стратегии, псевдокода и даже готового решения И НЕ МОЖЕТ блять вот сука тупо взять и написать самому аналогичное дерьмо? мне блять сложно даже понять, что за херота там происходит.
это блять нормально?
Дядь, а тебе зачем, собственно? Работа? Хобби?
Если тебе нужно разобраться в программировании/языке, то пиздуй читать книжки/проходить онлайн курсы. Если есть понимание, что такое ООП, классы/методы/лямбды, то можешь смело искать себе работу/проект/что-там-тебе надо.
Как показывает практика реальные проекты почти всегда состоят из говнокода, в котором хуй разберешься и твоя единственная задача это свести сраный бизнес к сраному говнокоду и понять какие две строчки тебе надо дописать в вашем сраном тырпрайзе.
И никаких тебе космолетов и нейросетей
>Дядь, а тебе зачем, собственно? Работа? Хобби?
Пока что хобби скорее, если нормально пойдет - сделаю работой.
>Если тебе нужно разобраться в программировании/языке, то пиздуй читать книжки/проходить онлайн курсы.
Ну я читаю первый учебник из шапки. Проблема в том, что я как бы понимаю материал и даже усваиваю, но практика очень нужна. Хоть какие-нибудь простецкие задачки на реализацию тех же классов, причем разной сложности, а то я учебник закончу, а применить знания не смогу.
>Хоть какие-нибудь простецкие задачки на реализацию тех же классов, причем разной сложности
Вот в этом фундаментальное отличие Программистов от кодомакак. Программисты не задаются подобными вопросами "дайте мне задачек". У них пытливый ум, который моментально придумывает, как и где применить полученные знания "о, вот тут я могу к системе подключаться и получать модель материнки и проца", о, а вот эта штука неплохо зайдёт для моего мини-органайзера, теперь я наконец знаю, как его сделать" и т.п.
Ну а кодомакаки - простые ремесленники. Даёшь ему задачу и он копипастит говнокод из туториалов.
Без обид, анон. Ничего личного. Займись чем-нибудь другим. Искусство Программирования Машины - не твоё.
>Хоть какие-нибудь простецкие задачки на реализацию тех же классов, причем разной сложности, а то я учебник закончу, а применить знания не смогу.
Ну вот, например:
https://ulearn.me
Там дохера видосов и практик по ним, видосы в целом можешь скипать, если уже знаешь. Там именно что простецкие задачи и практики на пару часов подумать.
Ну а вообще, это все вата и лучше взять и какую-нибудь хуету запилить
>Без обид, анон.
90% обезьян в энтерпрайзах, гордо называющие себя программистами, только и умеют, что кнопки по стаковерфлоу нажимать и ничего, живут
та же проблема. самое обидное, что я могу справляться с всякими там задачами на сетевое взаимодействие, работу с БД, .net core, angular, а вот алгоритмы хоть убей в голову не лезут. и в основном именно алгоритмические навыки смотрят на собеседованиях
О, мой дорогой анон, это же элементарно.
Ангуляры, бд и прочая шелуха, это сиюминутные навыки, которые ты поднимешь за некоторое время. Алгоритмы же показывают умешь ли ты думать в целом, а это гораздо более ценный скилл, в отличие от очередной технологии, которая помрет через пару лет.
алгоритмы банально учатся
в энтерпрайзе думать не положено. мне чому то кажется, что там наоборот важнее как можно быстрее разобраться в чем то, чтобы быстрее заказчику выкатить. разумеется, при этом желательно стремиться говнокодить по минимуму, но вот на бумаге уметь поразрядную сортировку писать для этого, мне кажется, не является необходимым.
https://coursehunters.net/course/polnoe-rukovodstvo-dlya-xamarin-razrabotchika-ios-i-android
Вот годный курс, минимум воды.
>поразрядную сортировку
Ни разу такого не видел, кстати.
Может не в те места ходил.
В основном спрашивают простейшую дичь, типа элементарных рядов или минимальную пространственную геометрию.
Понятно, что сами алгоритмы никому нахер не упали, но если анон не может разобраться в сортировках, то это хороший сигнал на дауна
> суперредко. но бывает, офк
хмм, а как тогда люди на аутсорсе/апворках сидят? Я думал там как раз фишка в том, что на английском только читать\писать надо. Если базарить умеешь, то нах удаленка, сваливать надо.
так аутсорс - это не удаленка) просто ты нанимаешься в контору, которую нанимает продуктовая компания
в апворках не знаю как сейчас, но раньше практически гарантированно был либо периодический созвон, либо интервью по скайпу, либо еще какая-то дичь. чисто на переписках мне повезло только на один проект попасть
это первая линия обороны, о которую разбиваются мечты укатывальщиков
Мне кажется, у тебя подход изначально неправильный. Все твои проблемы разруливаются инверсией и инъекцией зависимостей и любым ioc-контейнером, который умеет в конфиги (тот же Autofac, например).
Не, во встроенную байду которая сериализует всякие настройки в файлик .config
https://stackoverflow.com/questions/13036743/custom-type-in-application-settings
я не проверял, если что. мопед не мой
12Кр.
Всё равно все геи на JS.
На ютабе решается установкой других версий коннектов.Но у меня проблема не решается, двач помоги.
хотя, ебать, какой докер. у тебя же базочка итак нормально развернута
альтернативы?
есишо, мне пiхуй, проще развернуть какой-то энв для мимолетного пердолинга, чем пытаться устанавливать что-то и ловить кросс-платформенные конфликты
каждые две сотни постов одни и те же вопросы
ну нет, блять. нинасколько не реально.
у меня в конторе ща на первой линии поддержки сидит чувак под сорокет, без вышки.
годится только закрывать типовые заявки. копнёшь чуть глубже - или знаний совсем нет, или начинает вещать такую хуйню, что уши вянут.
чудес не бывает!
МСДН читай. УМВР.
гайс, что посоветуте по 70-483?
Всем, ну почти, похуй на корочки
И на возраст тоже
Возраст это риск, но не более
Если докажешь что ты компетентен/обучаем, то похуй вообще
опыта на работе имею ввиду, шарпом уже года 4 увлекаюсь
нахуя ты меня опередил?
Нахуй мне какую-то хуету открывать если и так очевидно что там хуйня? У этих довенов даже решарпер постоянно глючит во всех местах, это при том что это относитеьлно небольшая приблуда, а ты предлагаешь на всю их самопальную ИДЕ перекатиться. Стоит ли говорит, что ты дегенерат-школьник никогда не работвший в промышленноми проектами иначе бы такой хуйни не предлагал? Половины функционала из промышленной разработки у райдера тупо нет, с дизайнерами вообще швах. Даже в студии проблем хватает, а тут блять изначально тупая поделка ни и кому она нужна если речь идет о серьёзной разработке а не поиграться дома вечерком?
И какая же у тебя промышленная разработка, если функционала не то, что Rider, а студии тебе не хватает?
ну хотя бы на словах идею донести надо пробовать
а если ты сам себе не можешь объяснить что к чему, то пытаться в собес тоже занятие сомнительное
У райдера winforms дизайнера нет, нет дизайнеров отчетов ms ReportViewer.
В студии функционал норм, косяков много, например нугет пакеты через жопу работают, в xamarin косяк на косяке.
мне аж как-то стремно защищать руйдер, но приведенные тобой преимущества охуительно конкурентные в 2к19м лол
Двачую этого хипстера. Rider'у далеко до всего функционала студии со всем накопившемся легаси, но бэкенды на коре писать — самое то.
есть книга по подготовке лдя 70-483. читаешь... хорошо так читаешь. потом открываешь дампы и чекаешь правильные/неправильные вопросы/ответы.
если правильных ответов меньше 70% - читаешь еще, гуглишь. пока не будет набираться как минимум 70%
по книге можно подготовить 70% правильных ответов. остальные 30 - только в платных дампах, причем зубрением, т.е. нах ненадо
не в чем, нет вопроса, наслаждаюсь текущим положением вещей
намедни узнал о стандартных вопросах на собеседовании. можете накидать таких? пример:
- найти наибольшую последовательность неповторяющихся букв в строе "аакуаыываииагг"
- поиск анаграмы
- медиана
- полиндром
- двусвязные/односвязные списки
я все это решал. первый раз юзал стэк и хэшсет из хэшсетов ща ебусь с
- найти кратчайшее растояние из А в Б на поле.
причем я перепутал это дерьмо с кратчайшим расстоянием в графах. они вроде как похожие и вроде как про одно и тоже, но первая мне кажется полегче, а эти ебучие графы - это ебаный стыд. у меня опять перед глазами фейлы в школьной информатике, на курсах по информатике, флешбеки из вьетнама и ужасы на улице вязов.
СУУУУКА. ебучий алгоритм из википедии имеет ИМЯ! Друзяка решил пилить алгоритм собственно ручно, а я даже хз как это реализовать, не то что придумать :\
есть входящая строка, состоящая из открывающихся и закрывающихся скобок: ( [ { < и т.д.
проверить, что эта последовательность корректная:
([) - херня
([{}]) - ok
((()())) - ok
[(]) - херня
ну и так далее
ну это изи
перебираем все чары в строке
- если левая скобка - стек.пуш
- если права скобка - стек поп, проверка
-- соединить открывающуюся скобку со второй
-- найти такую пру в хэшмапе
-- true? continue, false? return false
коллекция допустимых пар - это хэш мап с ключем в виде открывающихся скобок, а значением: либо пара. либо закрывающая скобка.
На коре? У меня на нем только сервак, ибо впс на лине можно взять за 100руб/мес.
Так это только вершина айсберга, еще миллион мелочей которые даже не вспомнить с ходу, но как только начнешь кодить будешь с ними ебаццо. Сам подумай, с одной стороны продукт с 20 летней историей от софтверного гиганта с огромной командой разработки, с другой совковоая контора из 3.5 чела которая к тому же пишет на уебанской ДЖЕЗВЕ.
И да, при чем тут легаси? Тот же xamarin хуй на райдере заюзаешь (ебаться в командной строке не предлагать).
ну у меня типа проблема в том, что я понимаю алгоритм и могу даже написать его сидя дома в уютненькой IDE, но времени у меня на это уйдет больше, чем у чистокровного математика
можешь сериализовать данные в json и запихать в стринг
адекватный собеседующий не будет сидеть сорок минут втыкать как ты не можешь из себя выдавить два слова, а начнет: либо наводить на ответ, либо сразу переведет разговор. причем, в интересах же кандидата, вне зависимости от степени прошаренности в вопросе, начинать осуждать решение, даже с самим собой (опять таки, в случае адекватности проводящих собес). если тебя не конпелятор зовут писать или какой-то йобасаенс, в математике контора тоже не нуждается
ньюфаг
Нагрузка на поток высокая. Это появляется один раз при старте, наверное, просто старт тяжелый, т.к. у меня нагрузки то нет считай, на весь код из циклов - один foreach, который два элемента обрабатывает.
Это было еще до перехода на EF.
В общем, это эмулятор андроида сбоил. Вайпнул его и ошибка пропала.
Знаю примерно миллиард людей, которые не решали алгоритмы на собесах и проходили их, как писал анонас выше, кроме узких областей матан не нужен.
Алгоритмы никогда не будут лишними и показывают насколько чел задрочен или соображает, но ключевым критерием редко бывают.
Но при этом просто на похуе отъезжать тоже не стоит и понимать чем двусвязный список от стека отличается и когда надо использовать словарь надо понимать
ну короч, когда ты встречаешь слово, значение которого не знаешь, нужно использовать словарь)
приблизительно во всех случаях, кроме тех, когда его использовать не нужно
я добавил, ригидбади пропадает, сейчас съебу(
>как реализовать 5 пункт
function Form1.OnButton1Pressed(Sender: TObject);
var
text: string;
begin
text := List1.Lines[List1.Selected];
ShowMessage(text);
end;
А нахуя ему именно сокеты то? Для дёрганья клиентов с сервера - можно Signalr прикрутить. Это вообще несложно должно быть. Другое дело - как и насколько он это всё масштабировать собрался, объёмы этих ваших бирж в копеечку обойдутся даже если не через жопу писать.
можно все, что угодно, но сокетами проще (я думаю) ) плюс кроссплатформенно
а вообще, откуда мне знать?
Для начала тебе нужно понять, что такое временная сложность алгоритма. А потом посмотреть сюда:
http://c-sharp-snippets.blogspot.com/2010/03/runtime-complexity-of-net-generic.html
В зависимости от того, какие операции ты будешь над коллекцией совершать полезно выбирать разные структуры, естественно. Чо то я хуйню какую-то объясняю, иди книжки читай короче.
Спасибо, братишечка! Не серчай! Ушол читат.
В IntelJ Idea, на Java, я писал так:
someMetod(); нажимал Ctrl+Alt+v и получал:
SomeClassName variableName = someMetod();
т.е. IntelJ Idea создает за меня имя переменной и укз1ывает тип для нее. Хочу так же в VS. Кто знает как?
Так же, но решорпер поставь
Ему писать лень, какой var?
Добрый день анон. Писал какие нибудь свои "пет проекты" перед рассылкой резюме? Интересно узнать какие?
Завтрак испортился!
Написал сайтик для института с блэкждеком, расписанием, оценками и этим вот всем на ASP core2 и SQL сервере
Консолькой же, очевидно.
как из пушки по воробьям
мог бы и с постгре, чтобы идиоматичненько
Я читал аналогичную книгу по джаве - очень понравилось
>Хуяришь такой 9000 библиотек, не особо заморачиваясь нахуй они вообще нужны и используешь ли ты их
>Линкер идёт по пизде
>Так бля, падажжи ёбана
Я проиграл
https://github.com/aspnet/EntityFrameworkCore/issues/10963
Это, как раз таки, проблема фреймворка.
Судя по тому что проблем уже 10963 - туда сунали вообще все проблемы которые есть в мире.
При этом, ранее проходил курсы JavaRush, но пошёл-таки разработчиком на C#. Отсюда вопрос, какие курсы повышения квалификации выбрать? Меня заваливают спамом GeekBrains от Mail.ru, но я слышал негатив.
Что выбрать? Как повышать квалификацию, чтобы быстрее стать хорошим миддлом?
>JavaRush, но пошёл-таки разработчиком на C#.
Что тебя подтолкнуло к этому? Проще работу найти?
private async T Foo<T>(T task, int num) where T: Task
>The return type of an async method must be void, Task or Task<T>
Меньше порог вхождения, как мне показалось.
На Java я один раз на собеседовании рассказал всё от принципов ООП до того, что под капотом у Hibernate (я к тому моменту написал программу на Spring). Не взяли. С шарпом вышло куда проще.
Окно, в нём листбокс (пик 1), окно по PreviewKeyDown добавляет итемы в листбокс, каждый раз выделяя новый элемент и скролля вниз.
На пике 2 всё норм.
На пике 3 (выделил изменение) уже всё совсем не норм - не выделяет и не скроллирует.
А на пике 4 опять норм.
Почему так?
компилятор в данном случае требует четкого определения границ async-методов. конечно, в твоем случае компилер и так должен гарантировать, что T будет как минимум Task-ом, но тем не менее, много смысла от твоей сигнатуры не видно. т.е. ты не поломаешься, если обьявишь вот так:
private async Task Foo<T>(T task, int num) where T: Task
Пкм на решение, и там есть что-то про порядок сборки
твой листбокс ведет себя правильно во втором случае. по факту ты запихиваешь каждый раз одно и то же строковое значение, которую рантайм интерполирует и не дает тебе создать кучу дублирующих литералов. поэтому на SelectedItem = stroka, лб прошаривает весь список элементов, пока не найдет искомый (который, внезапно, и первый, и последний, и вообще все остальные) и выделяет тебе первый найденный
Я делал метод для выполнения таски с таймаутом и хотел сделать общий генерик метод для Task и Task<T>, но пришлось делать два метода идентичные на 99,9%.
все последствия отсутствия типа Unit в языке
особенно печально было в реальном проекте все делить на "нечто возвращающее значение" и "нечто не возвращающее значение"
можно сделать финт ушами
>пришлось делать два метода идентичные на 99,9%.
Чем отличается Task от Task<T>?
Я к тому, что метод для Task мог бы быть приблизительно таким:
yourType Method() {
var defaultTask = new Task<defaultType>;
return defaultTask.Method(); }
.NET Core
Если ты про разработку на линуксе, то есть IDE Rider от JetBrains и продвинутый текстовый редактор VS Code от MS. Если про разработку под линукс, то как уже написали есть кроссплатформенныый net core.
читаешь новостную хуйню
шоркаешься по всяким реддитам и прочей еботе
смотришь/посещаешь конфочки
впрочем, все как всегда. если ты про практику, то, очевидно, устанавливать и пилить что-то простенькое для понимания возможностей
имхо, нет ничего лучше visual studio под .net
кодерам хорошо, обычным офисным крысам куда хуже в мелких конторках. вот сидишь ты и в ус не дуешь и внезапно узнаешь что надо было сдавать какой-нибудь новый отчет и ты уже просрочил его сдачу...
ок, но ведь просто подписаться на ютубчик макфрософта не совсем работает. Или работает? Интересно, а есть на просторах необъятного инета агрегатор новостей по данной теме?
ютубчик майкрософта постит дрянь какую-то. можешь подписаться на свитер, правда это ограничивает тебя только релизами от непосредственно майкрософта, который, очевидно, не единственный законодатель мод в it
аггрегаторы новостей - это гугл, яндекс, бинг и прочая ебала, в которой есть вкладка "Новости" )
вообще сейчас тысячи источников информации, включая подпивасные конфочки в телеграми и группы во вконташке из 5-ти человек. охуеваешь следить за всем, если сознательно хочешь быть в курсе всего
дальше че?
Не переживай, меняются фреймворки(потом могут закинуть на ксамарин или что-то типа Замарина или WCF), но твой опыт написаний бизнес-логики останется. И на другие проекты идут часто дабы с нуля выучить что-то новое, но зная арихтектуру .NET.
Благодарю.
(Для новичков кстати рекомендую видеокурс ITVDN от Шевчука, вроде вполне норм для начала объясняет, достаточно подробно и разжевано, можно на рутрекере найти полный курс).
тебе себя
так-то можно и .net core хоронить потому, что будет .net 5
в mvc его будет ждать практически все то, что есть и в коре, правда, к названиям классов/методов привыкать сильно не стОит
давненько уже не слежу за развитием .net, если честно. что там про .net 5 говорят? какие киллер фичи заявлены?
он будет поддерживать рантайм всего легаси .net и core
Когда ты пишешь Huj{get; set;} - это называется автосвойство. Компилятор сам создаст приватное поле для хранения значения. Когда ты пишешь Pizda {get {...}; set{...}}, то это обычное свойство и тебя надо самому делать переменную (или не делать если значение высчитывается или берется откуда-то).
public int Height {get; set;} равносильно
private int height;
public Height {
get { return value; }
set { height = value }
}
по сути компилятор за тебя создает вспомогательное приватное поле.
Источник:
https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties
When you declare a property as shown in the following example, the compiler creates a private, anonymous backing field that can only be accessed through the property's get and set accessors.
Есть инфа как в SQLite замутить реляционные отношения между таблицами? OneToMany и OneToOne, и ManyToMany - отсутствуют. Делаю приложение на Xamarin'е (Android native) и только сейчас понял в какую жопу попал.
https://bitbucket.org/twincoders/sqlite-net-extensions/src/master/
Нашёл вот такую ссыль ^^^, но я не очень понимаю как это использовать и внедрить в проект и readme.md у меня не открывается почему-то. Помогите пожалуйста!
Кончил, пока читал.
Благодарю!
есть Interop, есть COM
Сап Шарпач, щас вкатываюсь в ASP.Net Core. Может кто норм книжек посоветовать чтобы IoC и DI разжовывались хоть немного. А то у меня на этапе внедрения AutoFac Требуют такой стек в проект все встало.
Наверно не совсем так меня поняли. Я бы хотел про ASP. NET в целом (ну там особенности, логика работы все в таком духе просто постоянно мониторить MS Docs немного некомфортно) и как пишутся слабосвязные приложения на нем в частности. Я например уже пару дней немогу вдуплиться как внедрить DI для контроллеров
с первых версий кора Autofac работал почти из-под коробки. тебе даже сами факи пишут быстрогайд: https://autofaccn.readthedocs.io/en/latest/integration/aspnetcore.html
обычно это решается осознанием того, что интернет тебе расскажет много интересного, главное научиться спрашивать корректно
Что мне нужно передать?
>А нахуя ты передаешь форму параметром, прости?
Отцы так делали в дельфях, в золотые годы асечки и квипа.
Как можно аккуратно ловить все эксепшены, чтобы чтобы можно было что-то сделать и только после этого завершить приложение?
Так же, как в дельфях ловили, братишка. Сладкий эксепшон.
Спс
Ключ это текст дебага, а значение это различная доп. инфа.
При запуске программы почему-то иногда выскакивает такое исключение, ключ и значения на нулл проверяются, так же в дебаге видно что они не нулл.
При том исключение не стабильно, может за 10 запусков не разу не вылезти, а может 1-2 раза, но после уже не будет выскакивать, в чем прикол?
ты код дикшнаря что-ли привел сюда? нахуя, спрашивается. покажи поделие, в котором ты используешь словарь
Да, но. Когда я вызываю чужой Main он отбирает у меня управление тредом и я не могу коллировать
>Dictionary который я использую для дебага
пиздец
>Ключ это текст дебага, а значение это различная доп. инфа.
пиздец
Нахуй этот колхоз? Ты к нам из похапе пришел чтоле со своими var_dump'ами?
Используй брейкпойнты.
так вопрос был про то, как ловить "все эксепшены", а не как отлавливать исключения в принципе
Там нечего показывать, статичный Dictionary который используется в DebugWindow, в котором статичный метод делает Debug[msg] = AdvancedInformation();
>>17443
У меня программа работает с большими потоками данных которые очень быстро меняются (каждые 10мс), ну и конечно она не хранит все данные в себе, грубо говоря данные получаются и пропускаются через разные системы оставляя только необходимый мне результат, все это еще многопоточное и отловить какую-то логическую ошибку обычными средствами анриал.
А хранить данные для анализа уж тем более, за 1 минуту там данных выйдет под десяток гигов, поэтому когда что-то нужно я подобным образом дамплю необходимые мне данные и уже смотрю их своими средствами.
>>17483
Один брекпоинт занимает около 3-5 секунд для сбора данных об объектах, плюс многие значения затем отваливаются из-за таймаута. Это еще не считая того что многие объекты во время дебага показывают актуальные значения свойств, а не те что были на момент когда мне нужно дебажить.
Ну и многопоточность создает проблемы, из-за нее при дебаге программа ведет себя слегка иначе.
Какой-то вид садизма? Ты хочешь чтоб программа работала и чувствовала как ты дергаешь её за функции?
Всё верно. У программы есть функия, которую она не дает мне вызвать из себя
В конструкторе абстрактного класса я подписываю абстрактный метод этого класса на внешние событие.
В дочернем классе я переопределяю этот метод.
Будет ли в этом случаи срабатывать функции при событии у объектов дочерних классов? Если нет, то как это правильно сделать?
Почему то у меня на событие функция подписывается два раза подряд. В итоге при событии одна и таже функция срабатывает дважды. Почему так происходит? Код такой.
код, видимо, все-таки не такой
Братишка, тебе слова Dapper или Entity о чем-нибудь говорят?
На данный момент я эту процедуру делаю при помощи редактирования файла .csproj (как на пикриле - для каждой dll-ки свой Reference), но это ОЧЕНЬ заёбывает. Без этих записей в итоговой папке оказывается только моя программа без библиотек, что мне не нужно, ибо заливаю на удаленный сервер, на котором они заранее не установлены.
Можно ли это автоматизировать через Visual Studio или каких-нибудь пары строк?
Скорее всего я просто еблан. Простите же за мою тупость, аноны.
Solution Explorer -> %НазваниеПроекта% -> пкм References -> Add Reference -> Browse
dllки откуда берешь? Если из какой-то одной папки, то можно просто <Reference Include="dependencies\*.dll"> прописать.
А потом иди в макдак работать.
>дващ я успешный тяночки говорят что я 100к из 10, но сами на хуй не прыгают а ходить на свиданки мне западло
>ты пиздишь где-то, сдается
Действительно, где?
орнул с тебя, канеш
Офисная зарплата платится в среднем по городу. На ремоуте сейчас мне платят столько же, сколько в местных офисах дают.
>>18523
Я ходил на "свиданки". Спамил на апворке, ещё в других местах, пару раз даже до тестовых доходило. Никуда не взяли. Нихуя я не успешный, выходит. У этих уёбков ещё и за всякие 3-4к$ там такой ебучий список требований, за которые десятку должны платить в буржуйских краях.
Бывает ты просто сидишь дома за компом и пишешь полезные утилитки на шарпе самому себе.
Пробовал Heroku, но наткнулся на подводный камень в виде вайпа файлов при каждом git push-е в репозиторий (необходимо хранить некоторые данные в xml файлах, что из-за их хитровыебанной системы сделать невозможно) + рестарт каждые 24 с лишним часа. На другие бесплатные сервисы не особо надеюсь.
Какой хостингер посоветуете взять нуфажику, чтобы не особо дорого и без навороченных свистелок и перделок? Заранее спасибо.
Лучше мы будем тебя называть гей-кун.
>>19012
Любой бери. Потом уже в зависимости от потребностей выберешь наиболее подходящий. У меня арендован ВПС за 100р/мес на лине, для баловства хватает (5гб ssd 500мб рам анлим Трафика), конечно чему-то серьезному на таком будет грустно, но раз ты не знаешь что тебе надо попробуй такое.
Марио-кун.
invs.ru
Правда у меня там не получилось настроить ubuntu + nginx, но их готовый образ CentOS + Apache работает норм. Но это мое неумение готовить линуксы.
P.S. Если решишь ставить CentOs, то ей 500мб оперативы мало для обновления пакетов, надо включать файл подкачки - гугл в попмощь
Спасибо за рекламу совет, приглянусь и к этому сайту тоже.
Если не похуй: на своём сейчас поставил убунту 16-ую, но пришлось немного потрахаться с установкой dotnet SDK, ибо выебывался на отсутствие оного. Тестирую сейчас - пока все работает стабильно.
Почему везде символы всего девушки? Задолбали дрочеры вонючие без самоуважения.
Ссать на вас телки хотели.
Как сделать программу, что искала бы все zip архивы на наличие файлов с определенным расширениес. Далее анзипповала бы эти ЗИП файлы самостоятельно в указанную папку, и сортировала бы файлыв по типам. Типа jpg в папку jpg, PNG в PNG и тд.
Может ли это ваша системное программирование, или это хуйня собачая, которая не способна решить даже такую тривиальную задачу.
Ну конечно, анзипить наверное это уже год надо код писать...
Уточнение: нужно все эти файлы сначала найти, в заданной папке.
Интересный вопрос, так как сделать этот анзиппинг? Знания парадигм программирования думаю здесь будет недостаточно
Ну программирование это вообще такая вещь что смешны те кто гоовоят что нужно знать алгебру и всё само получится. Ну вот иди своей алгеброй сделай мне анзиппер.
Тут нужны реальная умения. Причем их чето слишком много должно быть
https://docs.microsoft.com/ru-ru/dotnet/api/system.io.compression?view=netframework-4.8
За тебя всё давно сделали, ничтожество.
Просто тред оккупировали фемки
1. Юзай Nuget.
2. Когда заливают на удалённый - билдят приложение в Release, а ещё лучше используй Publish.
Зато я ебал твою мамашу.
Кекнул с говноеда. За такой код надо не то что демотивировать премией, а в жеппу ебать прям перед всем коллективом.
Всмысле зачем? Делаю на веб разработкте для которой ты слишком тупой приличные деньги. А твою парашу никто знать не обязан
Посоветуйте что почитать или же укажите на простенькие примеры взаимодействия все этого.
>как вытаскивать данные из текстбоксов
var dannye = textbox.text;
Или шо ты ещо хочешь вытаскивать?
>и перенаправлять их в пост запрос а потом уже на сервер
var error = server.post(dannye);
Или шо ты хош янипони?
Голова работает, котелок нагрелся. Советуйте лучшую книгу по шарпу для дебила. Пожалуйста.
Типа
1) Найти все ЗИП архивы
2) Из всех найденных архивов найти те, что имеют в себе jpg/pngфайлы
3. Создать папку в заданной директории для каждого найденного типа фоток
4. Экстрактить туда соответствующие файлы.
Если это все, что делает программа, то почему бы ее не написать на баше/повершелле?
Сама программа не предлагает никаких способов защиты для плагинов, но я сделал пару плагинов которые явно интересуют людей и хочу хоть что-то получит за свои труды, но судя по опыту прошлых создателей плагинов если никак не защищать, то находится умник который выкладывает плагин в паблик или начинает вовсе его перепродавать в X раз дешевле, что сводит на нет все желание делится тем что сделал.
Я понимаю что от хороших крякеров защитить прогу на C# практически нереально, но какие есть способы защиты от тех кто хочет легкой наживы за счет чужих трудов?
С вас пять тыщ.
Directory.GetFiles(@"c:\test\", ".zip").ToList().ForEach(s => { var z = Ionic.Zip.ZipFile.Read(s); z?.ExtractSelectedEntries(".png", "", @"c:\test\png\", ExtractExistingFileAction.OverwriteSilently); z?.ExtractSelectedEntries("*.jpg", "", @"c:\test\jpg\"); });
>>19710
Напиши простую проверку по ключу или сертификату. Вынеси её и часть функционального кода в зашифрованный код виртуальной машины, которую сам же и напишешь. В результате чего без ключа дллка не будет работать, а проверка ключа и полезный код будут генерироваться при запуске приложения. В таком случае кулхацкеры не смогут так легко обойди проверку ключа, вырезав этот код. Сверху можно ещё обфускатор накатать, езфускатор какой.
>в зашифрованный код виртуальной машины, которую сам же и напишешь
Не совсем понимаю как это, никогда такого не делал подобное, есть где посмотреть пример?
>ещё обфускатор накатать, езфускатор какой.
С этим я думаю будет сложно, так как в плагине используется АПИ из основной программы и это скорее всего поломает плагин.
>Не совсем понимаю как это
Через System.Reflection.Emit и ILGenerator. Можно Sgil'ом заменить https://github.com/kevin-montrose/Sigil
> скорее всего поломает плагин
Оно даже на юнити работает.
https://www.gapotchenko.com/eazfuscator.net
Денег мне потом занесёте. Один за клиента, другой за тулзу.
>есть где посмотреть пример?
Это довольно комплексный вопрос. Пару примеров скину, остальное сам погуглишь.
http://www.java2s.com/Tutorial/CSharp/0400__Reflection/CodeGeneratorandILGenerator.htm
https://csharp.programmingpedia.net/en/tutorial/667/ilgenerator
В еазфускаторе уже встроенная вм есть. Можешь скачать триал и посмотреть в какой говнокод твой модуль превратиться.
https://www.gapotchenko.com/eazfuscator.net/features/virtualization
Хуй соси губой тряси
Отстань.
Не для продакшена.
Короче я инженер, у нас заменили САПР, и вместо макросов и аддонов на шарпе, все теперь надо переписывать на VBA.
Поискал я инфу и вроде как VBA это VB6. Почему это важно? А потому, что VBA встроен и изучать его в свое свободное время не получится, в то время как VB6 можно установить отдельно. Хотя и надо поплясать с бубенцом, ИБО ЭТО СРАНОЕ ГОВНО МАМОНТА И VB6 ГОВНО МАМОТНА НАХРЕНА ОНИ ЭТО СУЮТ В 21 ВЕКЕ ХОССПАДЕ ЗА ЧТО МНЕ ЭТО
VBA мне реально незнаком, модули какие-то и все такое.
Собственно я слегка запутался. Так как времени в обрез, хотелось бы уточнить у вас - стоит ли начинать с VB.NET как наиболее близкому хотя бы синтактически, или все-таки нырнуть в VB6?
Спасибо.
Сейчас наоборот хоронят vba и переходят на шарп. Странно, что у вас наоборот
По теме ничего не могу сказать, так, перданул с дивана
>хоронят VBA
Об том же и речь, дорогой.
Шарп самое то был. Но на новой программе обещают .net integration через хз сколько лет.
Я подавлен.
легче на powershell сделать это
Блять вот реально, ты не можешь сделать такие простейшие действия. Нахуя ты вообще тогда нужен в разработке? За тебя всё должны сделать аноны?
php скрипт ничего и не возвращает, я просто не понимаю правильно ли я вообще отправляю ему данные, ибо по другому не знаю как
убрать метанит, добавить MSDN
Возможно стоит добать краткое описание кокоре. Писать я его конечно же не буду.
Есть код в нескольких папках и двух-трех десятках файлов.
Везде для чисел с плавающей точкой используется double.
Хочу, чтобы на этапе компиляции я мог в одном месте переключаться между double и float (нужно разобраться в скорости вычислений float'а и получаемых погрешностях в сравнении с double).
Как это сделать?
Найти и заменить - тупое решение (и не работающее, т.к. нельзя просто написать float x = 0.5, будет ошибка).
Можно было бы написать что-то вроде:
Using FLOAT = Double;
//Using FLOAT = Single;
И везде при инициализации писать костыль вроде: FLOAT x = (FLOAT)0.5;
Но Using приходится писать в каждом файле, что тоже коряво.
Есть ли в шарпе для этого нормальный способ, например, как в C++, где это решается единожды написанным #define.
3 часа лежал в ванной скролил двачи и пролежни отмывал и только с твоего поста проиграл с подливой...
И да, соглашусь. Код того анона нужно в рамку и у фейк ресепшена повесить. Кто смог пройти мимо - сливать. Остальных откачивать нашатырём и показывать настоящий путь в офис.
Твоя хуйня в пару строк пишется. Что со стандартными fcl либами что с nugeta от васяна
>Компилировалось это говно секунд 5. Это, бля, нормально?
Ебать, чет реально у вас компляция тут пиздец долгая после clang++ и cpython.
А она была?
В пункте, умирает ли шарпик, можно вырезать к хуям все про ТС и вписать про .NET 5, Blazor и что шарпик живёт и процветает
>php скрипт ничего и не возвращает
Ты ничего и не отправил, а отправляет как раз таки request.GetResponse();
И параметры можно написать как = $"name={textBox1.Text}&akjsfhbkh...";
Нет, "_" на пике считается просто дискард вариеблом. ей ничего не присваивается, у неё нет значения и она нигде не выделятся (стэк, регистры и т.п.).
Вот если бы её раньше объявили "int _;", то была бы обычная переменная с именем "_".
>>20904
>И что он при этом делает?
Там - ничего. А вот в какомнить "if (Int32.TryParse("sosay", out _)){}" уже есть польза.
А, падажжи, она в тело {} попадает как _ ?
то есть можно задать функцию условие, которое выбрасывает булевый результат и любого другого типа переменную? То есть, чтобы:
if (boolfunc(out myvar)) { cosnole.write(myvar); }
В том то и дело, что никуда. Если тебе только важно узнать инта это или нет (т.е. трайпас возвращает труху или фальсу) и похрен на какое там значение. То _ позволяет сэкономить объявление локальной переменной, которую мы использовать не будем:
int inta = 0;
... (..., out inta);
Заменяется на:
... (..., out _);
И уже самим трайпарсом значение никуда не присвоится, т.к. на out стоит дискард.
Дискарды в первую очередь для туплов создавались.
https://docs.microsoft.com/ru-ru/dotnet/csharp/discards
Нет, out указывает лишь что переменная передаётся по ссылке. Но out не требует инициализации переменной, т.е. можно было просто объявить её: "int inta;", а уже метод обязан инициализировать, присвоив какое-то значение.
Этим out и отличается от ref, который требует инициализации до передачи: "int inta = 0;". И от in, которые вообще запрещает изменять переданную переменную, т.е. ридонли.
>out является уже объявлением переменной?
В версии языка 7 можно объявить переменную сразу в аргументе, но для этого нужно указать её тип. Т.е. для объявления нужно было бы написать:
... (..., out int inta);
Но ведь и пустые переменные тоже начиная с 7.0 введены?
Я к чему спрашиваю. Я искал язык в котором возможно сделать такое:
ЕСЛИ бинарнаяфункция(результат) то
функцияработысрезультатом(результат)
ИНАЧЕ
функцияобработкиотказа(результат)
Такое?
if (int.TryParse("123", out int z))
Console.WriteLine("True: " + z);
else
Console.WriteLine("False " + z);
> True: 123
if (int.TryParse("asd", out int z))
Console.WriteLine("True: " + z);
else
Console.WriteLine("False " + z);
> False: 0
Агась!
В формах есть элемент, который позволит обратиться к файлу для дальнейших манипуляций с ним?
я про 300кк/нс
Не лезь дебил в формы они тебя сожрут! Серьезно, займись сначала основами. Элемент, блять, к файлу обратиться, пиздец. Если ты хочешь окно выбора файла, то есть OpenFileDialog, если нет, то научись задавать конкретные вопросы.
Какими основами? Я научился основам С++ и уже работал в формах. Теперь пытаюсь научиться работать с файлами, но это пиздос.
Научиться с ними работать.
Я думал OpenFileDialog это кнопка которая проводник откроет, а ее даже на форме не разместить.
тебе нужно пространство имен System.IO и его классы для работы с файлами.
>это кнопка которая проводник откроет
нет такой кнопки в формах. Тебе в любом случае обычный button на форме размещать придется и создавать свой обработчик события для это кнопки.
>Я научился основам С++ и уже работал в формах.
Не пизди. Вот бы щас сишник-плюсовик не умел интуитивно разобраться в шарпе. Пасаны, не кормите тролля!
>нет такой кнопки в формах
Ну, справедливости ради, наверняка там есть что-то наподобие файлтекстбокс с кнопочкой открытия файл-диалога, но не суть.
>наверняка там есть что-то наподобие
в таком случае использовать User Control или Custom Control, но опять таки говорю, что тогда придется всё равно писать свой собственный обработчик для этого Control`а
Ты хочешь чтоб в стандартной либе был контрол на любой чих? Ебу дал? У тебя есть текстбокс, кнопка и опенфайлдиалог возьми да собери что тебе надо. Ну или если тупенький, то можешь поискать готовое в каких нибудь девекспрессах и прочем, за монеты разумеется.
>Ты хочешь чтоб в стандартной либе был контрол на любой чих? Ебу дал?
В дельфи было. Я щас сходил проверил, да, в винформс такого нет. А в дельфи, в стандартном VCL были компоненты FileTexbox, DateTimeTexbox и т.п. Представляющие собой текстбоксы с кнопачкой справа, вызывающей диалог или комбоокно соответственное.
Получается, по сравнению с 90-2000 это шаг назад.
Но я правда работал. Только там были не сложные приложения с кнопочками и текстбоксами/боксами с картинкой. А тут файлы и я жиденько.
В жавасвинге тоже есть.
> и я жиденько
Хуй тебя знает, как тебе помочь? Я бы на твоём месте написал в гугле "c# открыть файл" и получил бы вот эту ссылку
https://docs.microsoft.com/ru-ru/dotnet/api/system.io.file.open?view=netframework-4.8
И прочитал бы и ознакомился с примером в ней и сделал бы так же.
Но ты пришёл ныть на двач.
Спасибо!
На что вообще смотрят обычно на таких заданиях? Расписывать всё пиздец как подробно, каждой запятой коммент нарисовать или как?
Нет, будем надеяться, что ты не дашь потомство, а сивафля хоть немного приблизится к полиморфизму высоких порядков.
Интерфейсы жи есть
Потому что ты еблан. int (например) без приписки, имеет диапазон от -15куча цифр до +15куча цифр. sint - имеет диапазон от -30куча цифр до -1. uint - имеет диапазон от 0 до 30куча цифр.
А байт, который ты, наверное, вспомнил, когда срал этим постом при byte - от 0 до 255. при sbyte - от -256 до -1
Несмотря на каком языке мы пишем код, всё переходит в одинаковый язык IL?
я так понимаю, тогда и на разных языках, должно быть везде одни и те же действия вызываться
Переменную как назвал, логические пробели, всякие конвеншини. Даже можна ли на класс написать юнит тест.
Да, именно так
Да, я так и понял, спасибо
>sint - имеет диапазон от -30куча цифр до -1. uint - имеет диапазон от 0 до 30куча цифр.
>А байт, который ты, наверное, вспомнил, когда срал этим постом при byte - от 0 до 255. при sbyte - от -256 до -1
Нет?
И как это отвечает на мой вопрос о непостоянности наименований?
Потому что short long - 8 >> 2 = 4 байта, то есть обычный int. На самом деле long потому и лонг, что в два раза длинее обычного int
Так 's' только у байта. Так уж сложилось, что у байта особый путь™ и он чаще имеет смысл в беззнаковой форме, поэтому его злой брат близнец это signed-byte. У остальных числовых типов основная форма знаковая ибо, как правило, они используются для математики, поэтому их антагонисты - это беззнаковые типы, как например unsigned long. Ну и есть еще недочисловой тип char, который вообще не имеет смысла с отрицательным значением, поэтому у него пары нет совсем.
Потому что сборки собирают CIL инструкции, а не инструкции для конкретной платформы, код CIL должен составляться на лету перед использованием.
Что это вообще должно значить?
Дальше, я так понимаю, объясняется, что для составления кода на лету используется JIT.
>CIL должен составляться на лету перед использованием.
CIL должен быть скомпилирован [в машинные инструкции] на лету.
>>22047
>Что это вообще должно значить?
Процессор понятия не имеет не о каком IL коде, ему нужны ассемблерные комманды, JIT как раз и занимается тем, что переводит IL в инструкции проца на котором работает.
А, понял. Я думал IL настолько низкий, что проц всё понимает
Во, благодарю за пояснение.
А, всё, уже прочёл текст в пикче. Вопрос отпадает.
Пацаны памагите.
Нужно:
Смерджить файлы до тех пор, пока они в сумме не будут 15 минут.
Входные данные: путь к wav файлу
Выходные: 15минутый файл
Псевдокод:
GET filepath to music.wav
FULLDURATION = getduration (music.wav)
WHILE FULLDURATION <=15 MINUT DO
{ music.wav + music.wav;
FULLDURATION = getduration(music.wav) + getduration(music.wav)
}
END DO
Create 15min.wav
IF (getduration(15min.wav) >15) THEN
LenghtOtrezat = getduration(15min.wav) - 15
CutFromEnd (15min.wav, LenghtOtrezat )
END IF
Create Create 15min1.wav
_____________________________
Нашёл библиоткеку NAudio для работы со звуком
Помогите пожалуйства
Пацаны памагите.
Нужно:
Смерджить файлы до тех пор, пока они в сумме не будут 15 минут.
Входные данные: путь к wav файлу
Выходные: 15минутый файл
Псевдокод:
GET filepath to music.wav
FULLDURATION = getduration (music.wav)
WHILE FULLDURATION <=15 MINUT DO
{ music.wav + music.wav;
FULLDURATION = getduration(music.wav) + getduration(music.wav)
}
END DO
Create 15min.wav
IF (getduration(15min.wav) >15) THEN
LenghtOtrezat = getduration(15min.wav) - 15
CutFromEnd (15min.wav, LenghtOtrezat )
END IF
Create Create 15min1.wav
_____________________________
Нашёл библиоткеку NAudio для работы со звуком
Помогите пожалуйства
Погуглил немношк. Лютая хрень, но теоретически пригодится, если надо срочно оптимизировать существующий проект, а переписывать в неуправляемый код целиком дорого, а подключать неуправляемые либы запрещено на уровне менеджмента проекта. Так?
> Нашёл библиоткеку NAudio для работы со звуком
Так поди можно просто какой-нибудь ffmpeg для такой задачи обернуть.
Если ты имеешь ввиду кроссплатформу, то да, реально нету. Выше по треду я искал, мне там даже какую-то хуйню советовали. Можешь ознакомиться.
https://pastebin.com/KMGWtXqa
Научись нормальные имена давать, а потом код показывай.
SqlConnection.Open() делал?
Если вдруг все перейдут на новую ОС, не от Майкрософт и винда будет загниваться, то C# тоже уже мало кому будет нужен?
немного .NET Core и .NET 5, если ты уж настолько далеко заглядываешь (а то и 6, 7, 8)
Если бы разрабы лазаруса запилили порт ЛЦЛ на сишарп и добавили сишарп в Лазарус - моему счастью не было бы предела. ибо ваистену ЛЦЛ бьёт рекорды кроссплатформенности: пишешь прогу под линуксом в среде ГТК, компилишь под винду в нэйтив вин32/64 и она работает! И выглядит идентично! Сука, это волшебство нахуй.
Есть ограничения на стороне клиента и на стороне сервера. Твоя 1000 не будет отправляться на сервер, а будет вставать в очередь и отправляться в зависимости от ограничений на количество одновременных соединений. Если сервер не в состоянии обработать сразу 1000 сообщений, то они будут выстраиваться в очередь на хосте, там уже будет либо обработка этих сообщений по мере освобождения нагруженности сервера, либо они все проигнорятся а тебе прилетит ответ с ошибкой 502 или 408.
есть буферы на уровне оси, есть буферы в сетевых устройствах. все, что не влезает в этот буфер, тупо дропается
TCP это транспортный слой, а http это слой приложения. Оба являются протоколами, т. е. используя http ты гарантируешь то, что тебя поймут серверы которые ожидают соответствующих сообщений приходящих из транспортного слоя (т. е. по TCP). Работают на прямую с TCP только в случае если тебе нужно работать с протоколом который известен только тебе и серверу. Если ты будешь посылать неизвестные сообщения используя TCP, то целевой сервер тебя просто не поймёт и проигнорирует.
.NETовский клиент ничего больше, чем обертка над слушателем порта. он даже не узнает, что там какие-то пакеты дропнулись. ему тупо об этом никто не скажет
да и вообще, исключениями бросаться в такой ситуации грешно. у тебя и так инфраструктура разрывается от наплыва данных, а ты еще и дорогущими эксепшнами плюешься
именно поэтому в распределенных хайлоадах разговоров про сеть больше, чем про реальный код. потому, что хуй пойми что там творится: пакеты пришли/не пришли, пакеты пришли, но как-то не так, пакеты даже не отправились чи хуй пойми что происходит
Двач, такой двач: спошные помидоры 300к/с.
>даже не узнает, что там какие-то пакеты дропнулись
>пакеты пришли/не пришли, пакеты пришли, но как-то не так, пакеты даже не отправились чи хуй пойми что происходит
Тебе не кажется, что это как-то не вяжется с идеей TCP?
В общем проверил сам, клиент отправляет 2,5Мб и дальше ждет, пока сервер не прочитает, потом шлет дальше.
кек
ты, как отправитель, понятное дело, получаешь инфу о том, что с данными произошло. но, если ты ось, а у входного устройства уже переполняется буфер и ему еще везут сообщения, ты никак не узнаешь, что там еще пару террабайт ждет обработки. в общем-то об этом я и писал
Нужно инициализировать новую форму в методе, создать там всякие элементы и добавить методы.
Не могу понять, как добавить новые методы в уже экземпляр класса?
Через методы расширения или отражение?
в какой уже экземпляр класса? в который ты сам пишешь что ли?
Task<Int32> t = Task.Run(() => Sum(CancellationToken.None, 10000));
Task cwt = t.ContinueWith(task => Console.WriteLine("The sum is: " + task.Result));
t.ContinueWith выполняется по завершении t и в качестве одного из параметров принимает делегат Action <Task, Object> т. е. в делегат передается сам t, который уже выполнился, следовательно из которого можно получить t.Result, что у тебя и делается в методе task => Console.WriteLine("The sum is: " + task.Result");
Что это?
В общем. Заходишь сюда:
https://docs.microsoft.com/en-us/dotnet/?view=netframework-4.8
Вбиваешь в поиск интересующий метод (в твоём случае это ContinueWith) и смотришь его перегрузки, там всё описано и даже примеры есть.
Ты неправильно понимаешь задание. Тебе надо создать класс формы с элементами и методами. И только затем тебе надо создать во внешнем методе создание экземпляра этой твоей формы. Это классика, это знать надо! (мне из-за этой хуйни не перезвонили когда-то в 2006м году)
https://www.youtube.com/watch?time_continue=1&v=J9Q3i5w6-Ug
Решил вот камбэкнуть и поковырять шарп на досуге, уже работаю фронтенд макакой, но немного заебало и захотелось чего-то нового
Посоветуйте каких-то ресурсов с задачками или идей для небольших петпроджектов, чтобы пощупать всю экосистему в целом.
Ну раз делаешь фронт, сделай бэк на шарпе.
>чтобы пощупать всю экосистему в целом.
и двух жизней не хватит. Выбирай направление, которое интересно и там щупай мэйстрим фреймфорки\либы\етк.
по мне так Core сильно отличается от обычного ASP. Поэтому стоит скорей всего сразу с Core начать. Уже 3.0 скоро на подходе.
Быстро выгоришь.
Если цель именно такая, как ты пишешь, то лучше изучай способы ведения переговоров и составления резюме.
принципы одни и те же
API разное
если знаешь ASP MVC, за пять секунд схватишь, чем из себя является ASP Core. если знаешь Core, переезжать обратно на MVC/WebAPI будет, как минимум, непривычно
Так в какой последовательности лучше изучать?
С твоих слов понял, что лучше начать со старой версии
ну все ситуативно. у тебя вряд ли будет возможность ближайшее время щупать Asp Core 3 ближайшее время. почитай про MVC 5, но практикуйся в параллели на коре. можно наоборот, если у тебя будет хоть немножко гарантии, что Core ты сможешь юзать активно, а не для себя по вечерам
Если бы я был ньюфагом в 2к19 и передо мной стояла такая задача, я бы изучал основы информатики и сетей в псевдокоде с блоксхемами, а из языков учил только тот, за который платят.
Двачую. Языки вообще по большей части условность. Знание нюансов реализаций, особенно когда баги выдают за фичи, типа приведения типов в жаваскрипте, не дает особенных преимуществ. Тем более, что выход за рамки стандартных парадигм в отдельных языках не так уж часто случается. Еще реже - дает какие-либо практические преимущества перед стандартным кодом.
Хз, как по мне, в 2к19 больше смотрят на знание фреймворков.
Прочитал Грокаем алгоритмы и сейчас почитываю Алгоритмы для начинающих от Луридаса.
Не знаю, насколько я хуевый кандидат. Около двух лет неспешно ковырял разные языки, но делал только мелкие утилитки для себя, да лабы студентам на author24
Потом приперло писать диплом. Я выбрал c# и wpf, и это первый "серьёзный" проект. Думаю, надо было изучать asp.net и сделать кроссплатформенное приложение
Смотря в прошлое, кажется, что это все можно было освоить за месяц, если хуи не пинать. Смотрю на хабре, как студенты свои компиляторы ебашат и руки опускаются
такая же хуйня была
но я не забил, просто пытался проходить собеседования уже похуй где и на что. в итоге получил свой оффер, хоть осознавал/осознаю, что, если бы не хуепинание, к моменту когда меня приглашали джуном, мог бы претендовать на уверенного мидла. смертельного нет нихера, но обидно чутка )
Ох епта. Я писал диплом на шарпе + винформс и параллельно жалел, что научник не дал на асп нете делать.
Щито пилишь?
Что ты знал на момент получения оффера? Если еще расскажешь какие очобные проекты пилил в то время, вообще замечательно будет.
>Это разве не равнозначно
Нет. Одно проперти, другое филд. А у свойств и полей разное поведение. Попробуй поле объяви в интерфейсе или свойство по out передай. Свойства можно дебажить, ставя бряки на сеттер/геттер. Их можно биндить как источник данных. Не говоря о том, что светить полями наружу нехорошо. А вообще прочитай про разницу между полями и свойствами.
основы языка (v4-) на уровне джуна, .NET 4/3.5, ASP.NET MVC 4 (онли лол), EF model/database first, SQL на уровне джойнов, че-то по DI и паттерны на уровне "знаю, что такие есть, но вопросы чуть сложнее ставят в тупик"
по проектам ничего особенного, разные рофло-курсовые да и утилитки для себя/работы на тот момент. я тогда самовкатывался в веб, поэтому какое-то поделие было сделано на MVC (я назвал на собеседовании это говно "внутренней информационной системой", по ходу кого-то впечатлило)
Спасибо.
Здраствуйте!
Почему один и тот же быдлокод прекрасно запускается на одном компе, но вываливается в OutOfRange !на этапе компиляции! на другом?
На обоих компах vs2015. На одном 64х десятка, на другом 32х 7ка. В этом может быть проблема?
Компилируй код не под x64 а под x32
Зеленый не бейте
Мне лень запускать студию, я не помню, когда-то давно в дельфи, они оба были для отображения. Что вообще ты подразумеваешь под работой с элементом? Ввод данных? Выбор элемента?
И там и там доступен. Но листвью это более сложный компонент для вывода данных в несколько столбцов или в виде перемещаемых элементом, кароч - окно проводника щиндовс - это листвью.
Используй датагрид и не выебывайся.
Быстрый сетевой код кодим.
Пожалуйста, подскажите что нужно дописать чтобы я вводил число в окно 1 и оно заносилось в список. И смогу ли я его потом сортировать после этого?
Число для примера взял. Оно может быть любым, а клонировать я их не хочу.
Зачем? У меня задание на создание и сортировку массива. У меня нету проблем с ним, но решил усложнить задачу и вывести массив его красиво графически без соснольки. И вот с этим проблема.
Ну споки-ноки. Я тоже пойду пожалуй.
Не слушай чуханов с их листбоксами. Чтобы всё работало тебе нужно привязать контекст датагрида к массиву. Далее при изменения массива, у тебя всё будет обновляться автоматически, как в представлении формы, так и внутри кода.
> хочешь выводить массив графически?
> возьми датагрид и нахуярь стены субэдэшного бойлерплейта
Харош троллить.
это ж автогенеренный код, не тебе же писать тыщи строк копипасты
чисто с позиции нахуяривания это лучший вариант
долбоебы с датагридами - долбоебы
в дополнение сразу скажу, что сама табличка после построения в браузере отображается нормально, все символы в нужной кодировке. но мне ее надо потом преобразовать в картинку (для контроля), а ее в base64 строчку
Ну так и выбирай хоста, который поддерживает .net. Если тебе нужен asp net, ищи хостинг asp net их много. Если просто net, то бери vps на винде, еще можешь переписать на нет коре и взять впс на лине, они дешевле. А еще я слышал, что на хероку можно запустить asp net, если поебаться с докером, но это не точно.
Бесплатный хуй только в глорихоле. VPS на лине можно найти за 100-200 рублей в месяц.
Грубо говоря, есть запрос и ответ. Так как ответы могут прилетать в случайном порядке или не придти совсем, то я решил сделать айди в запросе, и айди запроса в ответе, чтобы потом сопоставить их. Есть идеи лучше буду рад.
поздравляю, ты описал CorellationId в общих чертах
GUID - решение 99.95% таких задач. конечно, от коллизий нельзя быть полностью защищенным, можно пытаться генерировать идентификатор распределенно по правилу {id-хоста}-{id-подгруппы}-{прогнозируемое-локальное-значение}
>>24051
А какой город? Наверное, Москва. В моё мухосрани .NET вакансий ровно джве, причём одна из междугородной компании, которая, как я понял, высвечивается по всей России
Твой пост меня приободрил. Спасибо, анон. Сейчас ещё месяц-другой будет, подготовлюсь к собеседованиям
>>24268
У меня не было жёстких рамок касательно проекта. Делал лабораторные для студентов. Предыдущие программы были написаны ровно двадцать лет назад, и нужно было их обновить, добавив новый функционал. В общем, ничего сложного — специальность у меня связана со связью, и дипломная комиссия просто не знала, какие вопросы мне задавать. Так что защитился на отлично, даже не почувствовав хардкора.
Сейчас переделываю эти лабораторные, чтобы было красиво — связь объектов через интерфейсы, тестирование, все дела. На защиту шел с говнокодом, который в спешке дописывал в последние недели. Переделываю с целью выложить на гитхаб, и потом показывать как портфолио
я с Украшки. переезжал в местное ДС4 (наверное лол). был еще оффер чуть раньше с города попроще, но я его задоджил без объяснимых причин (о чем не жалею, в общем-то)
А какой год? Посмотрел вакансии за 2012 — достаточно было прочитать одну книжку и можно было идти на собеседование. Все же сейчас рынок насытился. Похоже, повторяется ситуация с юристами
Рад, что у тебя все получилось. На ебаное.ит были посты про чёрные списки в Украине, там совсем ад и Израиль
Львов
ну да, я за пол-года, что проходил собесы, наблюдал эволюцию требований от "догадываться как выглядит клавиатура" до "знать и уметь в шаблоны проектирования, MVC, SignalR, WPF и прочие баззворды". на джуна лол. ну, пришлось подстраиваться, а что поделать
Во что лучше углубиться, если интересует повышение квалификации?
>А то выглядит разорвано.
И как бы оно тогда там выглядело?
https://github.com/dotnet/roslyn/blob/master/src/VisualStudio/CSharp/Impl/CSharpPackage.cs#L26
>Можно
Нельзя
допустим у тебя главная ветка - master
создай условно ветку master2 и слей master в master2 используя squash. master удали
конечно не идеальное решение, но у тебя все твои коммиты "склеятся" в один последний (тот, который master --> master2)
если в чем то ошибаюсь, напишите плез
Тоесть по книге я смогу сдать на минималку? О книге вкрсе половину прочитал, остальное сложнее. Очень мало новго узнаю. Нашел бесплатние дамп нотам вопросов маловато только. Но некторие идут очень просто.
Очень удобная фича в жавамирке была, хочу такую в шарпе.
Хотя если такой класс нужен локально, то возможно неким аналогом может стать тульпа кортеж или анонимный класс:
var a = (5, "ss"); //Tuple<int, string>
var b = new {Huj = 21, Pizda = "hairy" };
>выбрасывает исключение InvalidCast
В нём должно быть написано, что и к чему ты пытаешься кастовать.
Я не телепат, поэтому только вангую, что REAL вытягивается как DOUBLE
Конечно метод расширения. Интерфейсный тип ничего не знает про методы класса, которые его реализуют. И не забывай, что методы расширения это всего лишь сахар, который преобразуется в вызов метода статического класса на этапе компиляции.
Там не нужно два массива, там нужен один массив тасков, результат выполнения которых будет передаваться в виде массива выполненных тасков в Action делегат который ты указываешь в качестве второго параметра. Т. е. ты передаешь массив тасков, после чего в делегате работаешь с этим же массивом тасков, но только уже выполненных.
>Ну да, ведь F# от C# отличается только одной буквой в названии.
Как был поставлен вопрос, так и был дан ответ.
>data/case-классов из котла/скалки
>Очень удобная фича в жавамирке была
А если еще и вытащить мозг из жопы, то окажется, что F# идеально подходит для быстрого прототипирования слоя предметной области как изолированная среда - код описывает только правила бизнеса, а не ебёт тебе мозги как передать данные по сокету или еще какой хуйни, которую можно отловить на стадии компиляции или банально встроена в возможности языка. К тому же, никто не запрещает совмещать C# и F# так же легко, как сделано это в жабамире.
Дополнительно, CIL шире, чем возможности C#. Т.е. новые фичи или копи-паста из F#/VB не реализовываются так же кастрировано, как сделано это в жабе. Например, жабагенерики.
Зависит от поставленной задачи. Чаще всего это смесь нескольких языков, которые не обязательно будут из .NET мира. Часто наблюдал и вовсе, казалось бы, симбиоз .NET и Java миров в одном проекте. Тяжело объяснять что-либо тому, кто не понимает, что язык - это лишь инструмент.
А реальность такая, что бизнесу глубоко насрать на каком языке будет реализована поставленная задача. Чаще всего должно быть сделано быстро, качественно и понятно, чтобы смогла поддерживать код даже тупая макака после тебя. Нет? Так это твои проблемы, бизнес просто найдет другого исполнителя.
>>26458
>Видишь ли бро я бы и рад но мне ещё деньги зарабатывать надо
С такой философией можно смело валить в js мирок и не вылазить от туда. Будешь востребованным, вот только работать будешь за гроши и ощущать свою ежедневную умственную деградацию.
>Чаще всего это смесь нескольких языков, которые не обязательно будут из .NET мира.
И сколько тебе времени потребовалось на то чтобы освоить несколько языков на уровне, который позволяет тебе использовать их при выполнении "боевых" задач?
>И сколько тебе времени потребовалось
Большинство языков, с которыми я имел дело, основываются на каких-то общих принципах. Т.е. после некоторого опыта все сводится к банальному заучиванию синтаксических конструкций языка, на что тратится довольно мало времени. Нет необходимости заново изучать наследование или что такое эндоморфизм. А задача сводится к переиспользованию уже наработанной кодовой базы и компоновки с существующей системой.
Типовая задача не требует времени на изучение вообще, так как твоя команда руководствуется уже накопленным опытом.
Нетипичная задача же требует спайк, на основе которого уже и будет приниматься дальнейшее решение. Время варьируется от дня до недели.
И стоит еще понимать, что сейчас много чего сводится больше к знаниям технологий разработки, а не языков, развитие которых тоже не стоит на месте. Но к технологиям такой подход тоже применим.
Почему тогда все так не любят фуллстеков, говоря, что они никогда не достигнут уровня человека, который концентрируется на чём-то одном?
Я этого не знаю. Наверное, одни хотят сэкономить деньги, повесив "гордую" лычку фуллстек, другие - не поспевают за развитием одновременно и фронта, и бека.
Тебе поздним вечером заняться нечем кроме утрирования?
На шарпе много работы, интересной и разной, плюс сам язык в последних версиях все больше берет от лучших ЯПов
На фшарпе 2 вакансии на планету Земля.
Нравится пилить петпрожекты на полумертвом языке - милости прошу, но мой вопрос был про сирешетку.
Пока только выяснил, что оборачиваются методы работы с БД с фоллбеком транкзакции в случае ошибки. Оборачивать все паблик методы сервисов?
Если что, то пишу WPF приложение на MVVM с разделением прожектов на гуй, домен и бизнес леер.
Вообще по бест практисах, если делаешь код которий возвращает статус например ищешь юзера в бизнес логике то статус может бить: найден, не найден, ограничен доступ. То в случаее не найден можно кидать свой appException, которий идет в кетч и обрабативется. А есть более низкоуравнение ексепшини, на пример проверка на null в начале метода, то здесть ексепшин для разработчиков, мол проебался.
условно говоря, все, что может его плюнуть
конечно, это не значит, что нужно каждый вызов метода try/catch-ить, но обычно оборачивается монолитный кусок бизнес-логики или операции, которая на своем уровне считается атомарной
вообще, никто этого тебе и не расскажет, нет такого однозначного правила - что оборачивать, что нет; где плеваться исключением, где возвращать статус-объект. единственное, что можешь точно понимать, это если код критичен к исключениям и выброс его может завалить тебе приложение (а это, даже в нештатной ситуации допускать нельзя), офк трай-кэтчишь
Например, мне из игры нужно текст вывести, как это можно сделать?
С помощью unsafe кода и чтения в нём области памяти которой управляет процесс игры.
Там где результат выполнения кода не зависит от твоего приложения и заранее не известен. Чаще всего это сетевые запросы - обрабатывать каждую ошибку очень муторно, поэтому легче обернуть весь запрос в try catch и на эксепшен не связанный с потерью интернет соединения, делать несколько ретраев, после чего уже останавливать работу приложения и писать в лог.
Если результат известен, но ты обернул код в трай-кетч, то ты даун, потому что такие блоки очень ресурсозатратны .
О, найс, спасибо. У этой штуки тоже есть недостаток, надо в класс десериализовывать, абстрактный JObject/JArray как-то повеселей
Ты все прекрасно описал, именно так и нужно. Наверное, придётся свой парсер запилить, заодно поупражняюсь
Сначала тебе стоит вылечить свою шизу.
ну написать style-ресурс, применяемый к типу MenuItem, где рамка делается прозрачной
тебе не нужно весь UI для контрола переписывать
Так в том то и дело, что через стили не получается, типо через стиль можно у MenuItem убрать границы, а эту белая залупа у выпадающего списка.
ну я не хнаю наизусть всю иерархию контролов. посмотри через TreeView и проперти, где такая белая хрень. на нее стиль и лепи
Не знаю, там где я читал про это было написано мало. Тебе скорее нужны книги не по сисярпу, а по реверс инженерингу.
https://pastebin.com/36HVrP89
>Я вообще не понимаю, как работать
Ну смотри:
В компьютере используются полупроводниковые ячейки памяти, которые могут либо пропускать ток (значение 1) либо блокировать (значение 0). Чтобы компьютер мог компьютить, ученые придумали вот что: они разделили последовательности единиц и нулей на управляющие (команды) и информационные (данные). И тут появляются процессоры. У процессоров есть регистры, в которые учёный может записывать управляющие команды, после чего процессор начинает преобразовывать данные и это назвали программами! Это было опизденительно круто! Лучше чем секс! Тысячи ученых в тот день навечно обросли свитером и бородой! Некоторые стали геями.
Началась стремительная гонка между гиками - за изобретения универсального языка программирования.
У тебя все рандомы с одним сидом созданы - разница во времени несущественна. Используй статик рандом для генерации сидов.
И свойства нормально реализуй.
помоги разобраться свежему вонаби-шарписту
https://pastebin.com/rEAMmPFb
почему выводит 1, а не 4?
и сразу бамп годными колормапами
Потому что инструкция a = a + F() выполняется слева направо, компилятор вначале видит a и подставляет текущее значение 0, после этого он видит F(), выполняет функцию и подставляет значение из нее, в результате выходит a = 0 + 1. Если заменить порядок на a = F() + a, тогда будет так, как ты ожидаешь.
Происходит две вещи:
1. Функция объявлена как возвращающая перечисляемый инт, что позволяет указывать её как множество в foreach.
2. Внутри функции использовано ключевое слово yield, позволяющее отложить выполнение функции до следующего её вызова.
Оператор foreach вызывает функцию, чтобы получить первую итерацию i и получает 0, в значение i, которое выводится в консоль, затем он повторно обращается к функции, но так как по факту перечисление в ней не реализовано, происходит конец цикла, однако второй вызов функции позволяет ей завершиться и вывести "1".
Вы мне перезвоните?
>но так как по факту перечисление в ней не реализовано, происходит конец цикла
Эм, точнее так, поскольку функция возвращает значение только один раз, то цикл завершается. Поскольку отсутствие возвращаемого значения трактуется шарпом, как конец перечисления.
Пробую:
Process.Start("magnet:?xt=urn:btih:9d74bef981a83a9675dcc3103e717b75ceae89f8&dn=%2B%2B%2B%20ABP-878%20%E5%A4%A9%E7%84%B6%E6%88%90%E5%88%86%E7%94%B1%E6%9D%A5%20%E6%B0%B8%E7%80%AC%E3%81%BF%E3%81%AA%E3%82%82%E6%B1%81%20120%EF%BC%85%2059%20%E5%85%A8%E8%BA%AB%E3%81%8B%E3%82%89%E6%B1%97%E3%81%8C%E5%99%B4%E3%81%8D%E5%87%BA%E3%81%99%E3%83%8F%E3%83%BC%E3%83%89%E3%82%BB%E3%83%83%E3%82%AF%E3%82%B9&tr=http%3A%2F%2Fsukebei.tracker.wf%3A8888%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce");
Получаю исключение про то, что указанный файл не найден.
В консольном .NET Framework приложении работает.
как мне посмотреть именно IL-код?
С# 6.0 and Net Framework 4.6. Редакцию вроде 2016 года. Или есть более свежие?
Хочу другую попробовать, а именно
C# Players Guide. Откуда её скачать на русском?
Есть C# 7.0 но она на ангельском.
пиздец какой-то. какого хуя?
Извините. Я хотел сказать "Ну почему так, Господи?"
>Ну почему так, Господи?
Читай спеку, сын мой. Если коротко, то вызывается наиболее специфичный метод.
Удваиваю вопрос. Самом стало интересно. Раньше, у дидов, в иде запускался дебаг либы, затем во втором экземпляре иде запускался дебаг приложения, исключения либы валились в экземпляр 1, исключения приложения в экземпляр 2. Причём, при исключениях в экземпляре 1 экземпляр 2 нельзя было трогать, даже мышкой по нему водить, ибо он вис наглухо.
Есть Шилдт, они примерно одного уровня, но Шилдт для совсем нулевых получше заходит, после него уже Троелсена попробуй. Если в добавок еще и тупой, то попробуй mycsharp.ru, каких-то знаний там там не плучишь, но по-быстрому освоить что куда писать в самый раз.Сам так делал.
Боже, об одном прошу - напиши в двух словах критерии специфичности. О чем конкретно речь?
мое изучение шарпа пока длится менее 10 часов.
почему вызываются методы не те, которые объявлены как оверрайд?
Возьмем вариант без класса С - https://pastebin.com/fr34nfQ2.
Я рассуждаю так. У нас есть виртуальный метод F в классе А. Слово virtual нужно для реализации оверрайда данного метода.
Мы наследует B от А и используем ключевое слово override, чтобы вместо наследуемого из А виртуального метода вызывался определенный в B метод с аналогичным именем и вектором параметров. Соответственно я ожидаю, что именно он и будет вызван. Тем более мы делаем вызов с интовым параметром.
Так почему же вызывается не-override метод?
почему компилится в это
IL_000d: call instance void Problems.Program/B::F(object)
и почему эта строка в IL-коде соответствует не-оверрайд методы?
Опередили. Ты перепутал оверлоад с оверрайдом и не указал оверлоад. Следовательно, без оверлоада метод с совпадающим именем удаляется из интерфейса.
Я опоздал наверное, но можно организовать какой-нибудь пинг или проверку потока пакетов с игрока. Они прекращаются - соединение оборвалось - всё, он оффлайн.
И ещё, похоже указание дженерика недостаточно для оверлоада метода. Проясните, отцы.
Встал вопрос производительности, на какой стул лучше сесть?
1) Оставить тупо new List<MyStruct>() которые в результате каждого вызова аллоцирует новый массив в памяти.
2) Вынести List<MyStruct>() за пределы метода и каждый раз делать .Clear() вначале метода. (Архитектура позволяет, так как этот метод должен и будет работать только в однопоточном коде)
3) Пробегать коллекцию перед анализом лишний раз чтобы узнать необходимый размер и затем делать stackalloc MyStruct[size]
Что по вашему будет давать большую производительность?
size проанализированного массива обычно от 1 до 30-50 элементов, в 90% случаев меньше 10 элементов.
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-334.pdf
эта спека? их прост чёт много.
Угу, в ней параграф 12.6.4. Я в старой смотрел.
>size проанализированного массива обычно от 1 до 30-50 элементов, в 90% случаев меньше 10 элементов.
Разницы не будет. Делай так как тебе удобно.
Преждевременная оптимизация - корень всех зол. Если ты уже определил, что проблема в данном месте, то первое, что стоит сделать это проанализировать алгоритм и используемые структуры данных, если косяк в них, то исправив/улучшив можно увеличить производительность в разы. Ну и последний вариант это байтоебство, тут можно выжимать наносекунды,но если вызовов миллионы в секунду это сложится в некоторый буст.
Вместо List используй OrderedDictionary если нужен доступ по индексу, либо Dictionery если доступ по индексу не нужен. У List сложность O(n), а у OrderedDictionary/Dictionary O(1).
А как же зло аллокации?
Метод 20-30к раз в секунду вызываться будет и получается каждый раз лезть в кучу и нагружать GC затем.
Может быть в работе самого метода разницы не будет, но вот в общем то должно быть.
>>29280
Сейчас же выдали Span и Memory, почему бы не использовать их для временных данных вместо того чтобы создавать массивы в куче, тупо объявлять их на стеке?
>>29301
Плохая идея.
Добавление в любой Ordered это сверх дорогая операция, а к листу и так по индексу 1 сложность, ведь это же тупо доступ в массив.
>Добавление в любой Ordered это сверх дорогая операция, а к листу и так по индексу 1 сложность, ведь это же тупо доступ в массив.
Больше манямирка, пожалуйста.
почему программа не халтится? почему такой вывод?
Тебе про добавление говорят, а ты про получение скрин приклепляешью Двач, двач невер чейнж.
Потому что Data это гет проперти, которое каждый раз возвращает енумератор нового листа.
while (a.Data.MoveNext()) //каждую итерацию создается новый лист
> а к листу и так по индексу 1 сложность, ведь это же тупо доступ в массив.
>Тебе про добавление говорят
Найс манявры.
Тупо доступ в массив.
Добавление в лист по индексу действительно имеет сложность N.
Но я говорил про доступ, он 1 как и обычно add 1.
В моей задаче нужен индекс для получения, а не добавления.
Но любая Ordered коллекция по определению дороже обычной.
Это копия, сохраненная 24 июля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.