Это копия, сохраненная 13 мая 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/1335434.html (М)
- 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
- 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
Наконец-то нормальный перекат, без бомжей, школьников и прочей хуеты в шапке. Вкатился.
>Наконец-то нормальный перекат, без бомжей, школьников и прочей хуеты в шапке.
Я ньюфаг, взял прошлый тред и скопировал по инструкции. Прошлые ОПы были настолько тупыми что с этим не могли справиться? Ужас! Ужас просто!
>>1366518
>То-есть ответить на элементарный вопрос ты не смог. Ясно всё с тобой.
Блядь, вы чо, обезумели тут что ли? Вот вам метод из той самой программы с директориями
public void ProcessingDirectories(string dir1, string dir2)
{
try
{
if (!dir1[dir1.Length - 1].Equals(@"\")) { dir1 += @"\"; };
if (!dir2[dir2.Length - 1].Equals(@"\")) { dir2 += @"\"; };
//Заполняю коллекции именами подкаталогов (без путей) в каждой из папок.
List<string> directoriesInDir1 = (from d in new DirectoryInfo(dir1).GetDirectories() select d.Name + @"\").ToList();
List<string> directoriesInDir2 = (from d in new DirectoryInfo(dir2).GetDirectories() select d.Name + @"\").ToList();
List<string> directoriesTempInDir1 = new List<string>(directoriesInDir1);
List<string> directoriesTempInDir2 = new List<string>(directoriesInDir2);
//Заполняю коллекцию именами подкаталогов, которые встречаются в обеих папках.
List<string> directoriesDelete = (from d in directoriesInDir1 where directoriesInDir2.Contains(d) select d).ToList();
//Оставляю в каждой из коллекций только уникальные подкаталоги.
directoriesDelete.ForEach(d =>
{
directoriesInDir1.Remove(d);
directoriesInDir2.Remove(d);
});
//Создаю новые подкаталоги в каждой из папок в соответствии со списками уникальных подкаталогов.
directoriesInDir1.ForEach(d => { OnStatusWrite(this, "Создаю " + dir2 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir2 + d); });
directoriesInDir2.ForEach(d => { OnStatusWrite(this, "Создаю " + dir1 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir1 + d); });
ProcessingFiles(dir1, dir2);
//Рекурсивно вызываю этот метод (ProcessingDirectories()), для того, чтобы проверить подкаталоги на наличие уникальных
//подкаталогов 2-го, 3-го, 4-го ... N-го уровней. Сначала для подкаталогов первой папки, затем для подкаталогов второй.
directoriesTempInDir1.ForEach(d => ProcessingDirectories(dir1 + d, dir2 + d));
directoriesTempInDir2.ForEach(d => ProcessingDirectories(dir2 + d, dir1 + d));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Теперь понимаешь, почему ты долбоеб и как рекурсия будет назад возвращаться?
>>1366518
>То-есть ответить на элементарный вопрос ты не смог. Ясно всё с тобой.
Блядь, вы чо, обезумели тут что ли? Вот вам метод из той самой программы с директориями
public void ProcessingDirectories(string dir1, string dir2)
{
try
{
if (!dir1[dir1.Length - 1].Equals(@"\")) { dir1 += @"\"; };
if (!dir2[dir2.Length - 1].Equals(@"\")) { dir2 += @"\"; };
//Заполняю коллекции именами подкаталогов (без путей) в каждой из папок.
List<string> directoriesInDir1 = (from d in new DirectoryInfo(dir1).GetDirectories() select d.Name + @"\").ToList();
List<string> directoriesInDir2 = (from d in new DirectoryInfo(dir2).GetDirectories() select d.Name + @"\").ToList();
List<string> directoriesTempInDir1 = new List<string>(directoriesInDir1);
List<string> directoriesTempInDir2 = new List<string>(directoriesInDir2);
//Заполняю коллекцию именами подкаталогов, которые встречаются в обеих папках.
List<string> directoriesDelete = (from d in directoriesInDir1 where directoriesInDir2.Contains(d) select d).ToList();
//Оставляю в каждой из коллекций только уникальные подкаталоги.
directoriesDelete.ForEach(d =>
{
directoriesInDir1.Remove(d);
directoriesInDir2.Remove(d);
});
//Создаю новые подкаталоги в каждой из папок в соответствии со списками уникальных подкаталогов.
directoriesInDir1.ForEach(d => { OnStatusWrite(this, "Создаю " + dir2 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir2 + d); });
directoriesInDir2.ForEach(d => { OnStatusWrite(this, "Создаю " + dir1 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir1 + d); });
ProcessingFiles(dir1, dir2);
//Рекурсивно вызываю этот метод (ProcessingDirectories()), для того, чтобы проверить подкаталоги на наличие уникальных
//подкаталогов 2-го, 3-го, 4-го ... N-го уровней. Сначала для подкаталогов первой папки, затем для подкаталогов второй.
directoriesTempInDir1.ForEach(d => ProcessingDirectories(dir1 + d, dir2 + d));
directoriesTempInDir2.ForEach(d => ProcessingDirectories(dir2 + d, dir1 + d));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Теперь понимаешь, почему ты долбоеб и как рекурсия будет назад возвращаться?
Уже и сюда перетащил срачи.
Глупенький маленький долбоёб. Иди вот в этот ПРИКРЕПЛЁННЫЙ БЛЯДЬ >>1215536 (OP) пост и читай
>Большие куски кода желательно вставлять через ideone или pastebin.
Уже само то, что ты неуважительно относишься к посетителям треда и анонам (копируя код просто в вакабу), заставляет к тебе относиться также и оскорблять тебя в ответ. А потом вы удивляетесь что тред скатился. Так вы же сами неуважение проявляете и ожидаете что к вам будут с уважением относиться.
Не совсем понял зачем ты переходишь на личности? Я тебя оскорбил как-то или что?
Второе, я увидел твой код и получил ответ на вопрос в прошлом треде, я прочитал твой пост и был удовлетворён ответом (Спасибо кстати что запостил таки). Посему мне не совсем понятно зачем ты этот пост перетащил сюда?
Ну, так ответил бы там, мол так и так, теперь все ясно, а то ни слова, ни полуслова.
Ну, и какие двачи без срачей то?
Чем более культурная обстановка в треде, тем более увлекательны срачи между его посетителями.
Вижу только изнеженного педика, беги мамке пожалуйся, что тебя в интернете нахуй послали
Великовозрастного девственника (тебя) сразу видно.
Чо ебанулся? Чо не 60 с хуем?
Хорошо бы найти библиотеку, не хотелось бы колхозить свой велосипед с нуля
Проблема в том, что должна быть возможность мышкой водить по графику и получать конкретные значения в данной точке. Когда "пауза", естественно
>Как удобнее всего отрисовывать быстроменяющиеся графики?
Отрисовываешь его такой, отрисовываешь. Потом берёшь такой и перерисовываешь.
В телеграмме нету шарпа
Не опы, а один я. И охуенные школьники и мужики были!
Почему этот тред называется "шапка", если так назывался прошлый?
как же меня печет с "развития" языка, начиная с 6й версии
Шарпка
LiveChart
>Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
Большой и жирный пук. Работаю с д365 по хттп запросам - уебищные данные. даже распределить лист листов не могут в жсон.
Шарик постоянно лагает, что еще говорить про саму компанию. Ебаный зашквар.
Особенно скобки.
И после всего этого ты такое высираешь? Ну и сиди дальше в своем говне.
офсайт
На пикчах Сишный код. Здешние дотнетчики настолько тупые?
>>67179
>актуальная
В то время как нормальные люди с нее укатываются, зелень почему-то наоборот лезет. Возьми себе нормальный язык - го, пайтон, кресты, да даже джаву.
Книжки по асп нету сейчас, ровно как и дока, кроме каких-то избранных глав (web api, middlewares, filters, caching, di) нахуй не нужны, в основом мусор. Остальное по ходу доберешь.
Можешь сразу ангуляр идти надрачивать.
>>66990
>уметь в рэнжи
Enumerable.Range существует хуеву тучу лет.
Срезы, которые ты называешь "рэнжи", нахуй не нужны, а кому нужны те используют пайтон. Ведь нормальные люди используют язык по назначению, а не тащат его везде
>нормальные люди используют язык по назначению, а не тащат его везде
анонимные функции, нулл пропагейшен, стрелочные операторы, кортежи и пердолинг вокруг них, async Main, локальные функции - это все для нормальных людей, да? а слайсы, значит, для педиков. я так никогда не проигрывал
>>67208
если это задача с собеса, предлагаю его дропнуть
да верно, и я уже решил ее неправильно. делал рекурсии и лямбды. а почему дропать?
ну это по условию задания типа обойтись без циклов и итераций? задача без практического смысла, более того, заставляющая тебя вертеть хуету там, где самый простой способ решения - самый оптимальный.
вот я бы человека, решившего подобное, не рискнул себе бы взять в тиму, ибо кто знает, сегодня он массивы знает как не перебирать, а завтра классы с интерфейсами писать перестанет. ну а че, так же можно, все в одном месте, а главное, дебажить удобнее
Да, нужно было взять и проверить на какие сайты заходить можно. А цикл - слишком медленно работал бы. Типо если 1000 хотелок и 100 блокировок. то это 100к переборов. Я уже склоняюсь к тому, что надо массив Б перерабатывать в дерево и через это с ним работать... алсо запросил у них корректное решение, самому пиздец интересно
Есть же методы в стринге - contains или что в котором это есть или это читерство?
Если по велосипедному то тут насколько я понял есть правило - домен одинаковый с конца и до какого-то символа, можно либо сабстрингом пердолиться либо строки создавать как-то с индексов чара, или обрезать оригинал и сравнить, правда там все равно внутри есть переборы.
А, перечитал задание - я идиот.
1)заблокированные домены пихаешь в Set
2)пишешь функцию извлечения домена для адреса (если 1 точка - вернуть как есть, если >1 то регуляркой можно (с позитивным просмотром вперёд и символом конца строки,например))
3)для а пишешь а.вере(адрес => !сет.содержит(домен(адрес)))
время жизни запросов, архитектуры MVC/REST, IIS, валидация модели, фильтры, ViewBag/TempData - это дефолт (из моих воспоминаний). че еще этакого?
using System;
public class Program
{
public static void Main()
{
int num = 1;
Console.WriteLine(num);//здесь num = 1
num = Recursia(num);//тут внутри метода num = 25
Console.WriteLine(num);//здесь num = 2
}
public static int Recursia(int i)
{
if(i<10)
{
i = i * i;
Console.WriteLine("i="+i);
i++;
Recursia(i);
}
return i;
}
}
using System;
public class Program
{
public static void Main()
{
int num = 1;
Console.WriteLine(num);//здесь num = 1
num = Recursia(num);//тут внутри метода num = 25
Console.WriteLine(num);//здесь num = 2
}
public static int Recursia(int i)
{
if(i<10)
{
i = i * i;
Console.WriteLine("i="+i);
i++;
Recursia(i);
}
return i;
}
}
>i = i * i;
>i++;
я хуй знает, что за магию ты писал, но это значение изменяется только в пределах метода
и результат рекурсивного вызова Recursia(i) не сохраняется
я пробовал делать глобальную переменную, все равно не получается. Как мне передать число по ссылке, а не по значению тогда?
сделай
>return Recursia(i);
я не уверен, что это то, что тебе надо. но тут больше никак не просматривается ожидаемый результат
это сложно еще
>>67433
Не слушай местных петухариусов про ссылку и указатель - они долбаебы сами нихуя не поняли и советуют костыли!
Ты не совсем правильно понял как работает рекурсия и тебе возвращается изначальный первый проход в котором i = 2 (очевидно). Если ты прошелся бы дебагером то увидел что возврат рекурсивно вызванных методов совершается с конца.
Глянь вот это - там разбирается дерево рекурсии
https://ulearn.me/Course/BasicProgramming/Derevo_rekursii_670fa739-0f73-450c-b877-eaa6264a34fc
И в рекурсии как правило нужно писать условие выхода в начале вот метод без костылей:
public static int Recursia(int i)
{
if (i > 10) return i;
i = i * i;
i++;
Console.WriteLine("i=" + i);
return Recursia(i);
}
>Здешние дотнетчики настолько тупые?
Ну хуй знает, только ты до кода на скриншоте доебался. Скорее всего тупой тут ты.
Ну конечно, фича которая каждый день всеми используется и для которой любой студент может сам написать код - дохуя нужная функция (нет).
Хуй знает, был в январе на 10 собеседованиях - это был просто ёбаный цирк с клоунами и конями. Причём параллельно был на собеседованиях по PHP, даже там было на пару уровней серьёзнее.
Суть в том, что ничего из именно программирования меня не спрашивали. Все вопросы были расплывчатыми и обобщёнными. По типу, где работал, что писал, к какой БД конектился, MVC знаешь? Что такое C из MVC? А что он делает. Максимум из профи спрашивали SOLID и core. Ну это тоже изи.
У меня создалось впечатление что никто в душе ниибёт что такое ASP и как собеседовать.
Зато на вакансию PHP за копейки вопросы блядь такие, что я охуевал просто. Один раз прямо на собеседовании дали ноут и 4 часа на "'Вот практическое задание, вордпреии и плагин, напиши магазин".
Сраться начинаешь со всеми и тред такой сразу расцветает, и аноны набегают, и сразу хуева туча профессионалов.
обилие фреймворков овер ASP поражает воображение. и большая часть того, что там есть, сделана и так нормально, что челикам даже не нужно знать работу под капотом
меня до сих пор бесит вот это "а с ASP работали? ну, с MVC. а с Razor работали? а сессии использовали?". та ебать, это все дефолтная хуйня в асп. с другой стороны, куча дурачков, которая для проекта на ASP.NET писали свои конченые foreach и знать не знали, что есть какие-то модели, роутинги, валидации, сессии, реквесты
>писали свои конченые foreach и знать не знали, что есть какие-то модели, роутинги, валидации, сессии, реквесты
Не, норм. Если ты опытный, то быстро всё поймёшь. По крайней мере лучше чем искать документацию к 30 разным хуёвинам которые просто в итоге по разному предоставляют вью.
Я найду что говорить на собесе, не беспокойся. По крайней мере не буду говорить "Ой, тут foreach сделаны, это сложно. Я вот только через фрэймворк velosiped всё делал, это прогрессивно!".
В чем жир? Да, это скриптодристня, но перспективы там лучше. Начиная от спектра задач, котлетой, кривой обучения. Сеньеров дотнетчиков с двумя годами опыта видел? Не видел потому что их нет. На скриптодристне же, сеньеры с двумя годами опыта - вполне
Это еще опуская факт того, что там люди приемущественно копаются в пайтоне, а здесь приходится работать еще с ангуляром.
Ты видимо, немного тупенький раз не понял, что речь о частных случаях и не о вкатывальщиках без опыта работы.
Поясняю: 2 года опыта на конкретной платформе.
По-мимо этих двух лет, еще 2 года НОРМАЛЬНОЙ вышки, благо такая еще осталась. (при условии что человек начал работать на третьем курсе, если нет - тогда 5 лет вышки)
Еще бывают и такие варианты: человек отработал 2 года на одном стеке, сменил стек, отработал 2 года, ты можешь сколько угодно доказывать манагерам что человек сильный и тянет на сеньера - им будет похуй.
так я че-то не понял, что мешает подрочить 2 года дотнет при условии наличия опыта на другом языке (допустим даже компилируемом со статической типизацией) и стать сеньором?
но как только речь о питоне, тупость и узколобость пропадают, и человек аж бегом рассматривается на сеньорность?
>только речь о питоне
>>67680
>бегом рассматривается на сеньорность
Не бегом, но там в этом плане проще, разная кривая обучения, этот вариант хотя бы будет рассматриваться.
Даже три года на дотнете - это самая низкая планка по сроку для сеньера, при условии что там действительно есть за что его давать. Хотя опять же, это во многом от конторы зависит.
>но там в этом плане проще
Потому что уровень питонистов почти всех это вкатывальщики ебаные. В этом говне, если ты с пяток либ сможешь скомпоновать (потому что одна только на одной версии работает, другая на другой, третья с ними конфликтует), то ты уже сеньор-помидор, хуле с этих скриптовых долбоебов взять
в общем вывод такой, что нормальный язык - это потому, что можно стать сеньором за джва года с условным опытом чуть побольше
язык только в дата-саенсе используется (потому что именно под него и создавался), и порог вхождения в него - три дня и шесть бутербродов, - это ладно, бывает. в моей конторе есть какие-то мифические Python Backend девелоперы. хуй знает наверное нужными делами занимаются
Пиздец ты охуел? Люди которые с нулевых ебашат как хуй знает кто, вот их действительно можно назвать сеньерами, йоба архитекторами итд. А 2 года в продакшене это только только мидл.
>что можно стать сеньором за джва года с условным опытом чуть побольше
Я не совсем так сказал, но посыл примерно такой. Основная претензия к дотнету - отсутствие альтернатив в плане задач. Что на пайтоне что на жабе есть бигдата, на пайтоне еще машоб. С жабы можно укатится на скалу.
А на дотнете что? Нихуя.
>>67766
>Python Backend девелоперы
В моей тоже есть. При всём этом: во фронтенде не копаются от слова вовсе, получают не меньше.
Итого: зачем тратить пару лет на дотнет? Чтобы ковыряться в тс и ангуляре и получать столько же?
Ну вкатывайся в бигдату из тырпрайза, давай. Магистратуру по выш. мату закончил надеюсь?
ты с конца читаешь?
>>67775
так шарпы - изначально язык общего назначения, но наиболее эффективнен как бекендовый, с развитием кора и адекватной кроссплатформенности это становится еще более явным фактом. легаси никто не отменял, как и винформс с девекспрессом, но это бремя зрелых языков, никуда не денешься. ангуляр и тс - это жопоболь аутсорс-рынка моя, в том числе преимущественно
насчет перекатов - изучив один язык, ты можешь перекатиться с условной легкостью куда-то еще, было бы желание. я очень сильно не уверен (хотя не отрицаю), что зная ее-джяву, ты прям на изи въедешь в скалу, или котлин (что там еще на жвм?). так же как и, пиля бигдату на питоне, прям лайк э босс закатишься в машоб
>вкатывайся в бигдату из тырпрайза
Если бы будучи зеленым дебилом, устраивался бы на четвертом-пятом курсе, а не на третьем - работал бы дата саентистом.
По поводу переката из тырпрайза - тонна знакомых на жабе укатилась в бигдату.
>>67778
>Магистратуру по выш. мату закончил надеюсь?
У меня бакалавр по CS, магистратура как правило это "было бы плюсом", но не обязательное требование. Да и бигдата мне нахуй не нужна, я на машоб целюсь.
>легаси никто не отменял
Я не считаю классический MVC легаси, потому что на нем работал. А на проекты на вебформах не кидали, потому что всегда проще снять с текущего проекта людей, который уже знают специфику проект на формах ибо когда-то делали его. Десктопа в конторе нет и слава богу.
>что зная ее-джяву, ты прям на изи въедешь в скалу
На изи ничего не бывает. Но такая возможность есть, потому что если нужен разработчик на скале, то зеленых брать не будут, а возьмут человека работающего на джаве.
С перекатом на сам Kotlin проблем нет, если ты до этого работал на андроиде на джаве. Если со спринга - проблемы будут.
>>67784
>пиля бигдату на питоне, прям лайк э босс закатишься в машоб
На "изи" - нет. Там совершенно разные области и разная мат. подготовка.
Работаю с CRM-фреймворком, теперь вопросы.
Какие инструменты повышения квалификации лучше? Понятно, что читаю Рихтера, изучаю ASP.NET и хочу погрузиться в .NET Core.
Про GeekBrains слышал негатив. Очередное высшее образование не рассматриваю, так как хорошо знаю это бесполезное болото изнутри. Как получить максимум возможных знаний наиболее эффективным способом?
Алсо, стоит ли смотреть в сторону Unity и геймдева? У меня прокачанные мягкие навыки, литературные навыки, художественные навыки, организационные. Всё это может пригодиться.
Что лучше учить, джаваскрипт дальше Я прочитал первую книгу Кантора или выучить asp.net core?
Сейчас я знаю только Asp.net MVC
посмотри рынок вакансий, актуально и то и другое, а требования везде разные. по-хорошему, знать бы всего да побольше, но по факту требовать много от джуна бессмысленно
>string1 = "a";
>string2 = "aa";
>string.Compare(string1, string2, StringComparison.OrdinalIgnoreCase) == -1
>string1 = "a";
>string2 = "b";
>string.Compare(string1, string2, StringComparison.OrdinalIgnoreCase) == -1
>>67802
А, да.
Блять, я просто туплю как мне сформулировать условие чтобы сравнивать больше ли строка в отсортированом массиве строк?
if (valueString > phrases)
макаба съела *phrases[j]
///Возвращает индекс левой границы.
///То есть индекс максимальной фразы, которая не начинается с prefix и меньшая prefix.
/// Если такой нет, то возвращает -1
///
>стоит ли смотреть в сторону Unity и геймдева?
Только если душа лежит. Так денег мало, а работа тежелее чем на asp веб формочки лепить. И да, нужно уметь в матешу или художественные скиллы.
https://ulearn.me/Course/BasicProgramming/Praktika_Levaya_granitsa__2f97664a-375b-4a60-824f-6227008f822a
Можете пожалуйста кинуть решение/помочь ибо код я написал в студии затестил - РАБотает normalno, а в их сендбоксе на каком-то тесте ловлю stack overflow.
Вот код:
https://pastebin.com/veUTMxTz
>if (string.Compare(prefix, phrases[m], StringComparison.OrdinalIgnoreCase) < 0) return m - 1;
Смущает тут -1 в ретурне. Ты проверяешь слово с адесом m, но возвращаешь как заматченое слово (m - 1). Можно словить выход за границы массива.
Здесь не нужно искать заматченое слово, а нужно найти левую границу. И там бы писало index out of range,
>if (left - right == Math.Abs(1)) return -1;
Тут не проверяется условие на равенство left и right. Если будет ровно ноль, то улетит в сек оверфлов.
Наверно поправить нужно так: (left - right) <= Math.Abs(1)
Ну тогда ладно. Но просто писать "левая граница" это как-то ебано, ибо не ясно входит сама граница в интервал или нет.
Ну охуеть, код твой, а поломал я.
Давай дальше ломать. Очевидно у нас один символ теперь не проверяется и условие надо изменить на : abs(left - right) <= 0
Вообще один проход дебагера всё решает, а онлайн-параша это великое зло.
Я не знаю какие там внутри тесты, а у меня нормальные результаты, скорее всего там реально оверфлоу на каком-то тесте и/или я беру дохуя памяти (>1мб).
И почему <= 0 ?
Там смысл был в том что если левая граница - правая граница = 1 элемент то значит некуда больше и идти и результат не найден.
>>67857
>поменять местами
Абс-костыль это вроде как контролил.
Да, частично ты был прав, правда у меня теперь новая проблема:
Как округлить число int в низ при делении?
Дошел до теста:
Error on: Prefix [a], phrases [ab, ab, ab, ab]
result should be -1, but was 0.
Получается так что по алгоритму бинарного поиска я какбэ(?) постепенно должен делить массив, я делю первый раз и в данном случае это должен быть 1 -1+(4-(-1)+2) = 1.5 1.5-1 = 0.5 = 0, но тест требует от меня границы самого первого вхождения.
И как это тогда сделать?
Добавлю что в метод я не могу добавить дополнительные передаваемые параметры.
Или я долбаеб?
Ffgvvbjkl
Хочу туда на стажировку после диплома ulearn это курсы от СКБ Контур
Проходил курс, забросил на 20% первой половины
Так как читал книжки, все было знакомо. Но, выполняя практические задания, кое-что попутно узнал: ранее я избегал рекурсию, но было задание подсчитать число високосных лет на отрезке, не используя циклы
Набросал пример, он не работал. Переписал, заработал. Попутно загулил, где вообще это применяется, прочитал книгу "Грокаем алгоритмы", где рекурсия да и все остальное объясняется просто охуенно. Раньше не доходило, что все нужно сводить к базовому случаю. В общем, рекурсию я полюбил
Но потом меня утомило, что после каждого задания я ухожу в необязательные дебри — сам курс проходится медленно. Так учу по книжкам и документациям
Если есть время — вперёд
Разметка поехала
Впрочем, дело скорее во мне. Конечно, в дебри уходить не нужно, весь материал зачастую тебе дают в роликах. Просто я немного аутист и люблю закопаться поглубже. С таймменеджментом проблема
Читаю Троелсена, дошел до момента подписи сборки и всего этого говнеца. Автор создал две сборки и поместил их в GAC. У этих двух сборок одинаковый маркер открытого ключа не ебу как правильно называется мешанина символов после версии сборки. Однако у меня нет. Сейчас не у ПК, скрины сделать не могу, но я делал все то же самое, что и по книге (кроме названия сборки, заместо CarLibrary сделал test_l), но маркер открытого ключа все равно разный у обоих сборок. Меня бы это сильно не волновало, если бы не то, что дальше по книге предлагается в конфиге перезаписать версию используемой сборки, что у меня не получается сделать: приложение все равно использует старую версию. В конфиг файле все перепроверял, ошибок нет. Может ли быть такое, что это именно из-за этого маркера? Или я тупой?
Пропускать не хочу, ибо наверняка попадется что-то, что требует знание этого процесса.
Поменял в представлении значения, нажал сохранить и перешел в метод где буду все это сохранять. Туда передалась валидная модель со всеми изменениями (только навигационные свойства у нее все null но по идее это ж нормально), вызываю update в котором сперва делаю context.Entry(entity).Attach(); затем
context.Entry(entity).State = EntityState.Modified;
потом отдельно уже вызываю SaveChanges, который возвращает не 0. В контексте сущность поменялась как в локальном списке, так и не в локальном. Но в базе почему-то нет. При этом, если я после SaveChanges сделаю запрос на получение этой сущности GetByID, то получу сущность с ИЗМЕНЕННЫМИ параметрами как и должно быть. Но потом я делаю редирект на Index и в итоге я в представлении вижу эту сущность, у которой поменялись примитивные свойства, а навигационные - нет, как и в базе этих изменений нет.
>только навигационные свойства у нее все null но по идее это ж нормально
отсюда я уже начал теряться
ты зависимые модели меняешь через Entity.RelaviteEntity.Property = "42" что-ли?
как-нибудь около-псевдокодно, я не знаю, покажи, как именно ты чего там меняешь. или на пастебин всю простыню заебашь, я не думаю, что у тебя там много всего происходит
Хер знает как, но, скопировав код со StackOverflow у меня оно заработало. Может, все-таки что-то забыл дописать. Ну и хрен с ним.
Если что, у меня навигационные свойства в модели описаны так:
public int RelativePropertyID
public RelativePropertyType RelativeProperty
Сам я ничего не меняю. У меня в представлении есть форма с полями модели, я делаю submit и у меня в контроллер приходит собранная модель, у которой RelativePropertyID заполнен изменённым значением, а RelativeProperty null. И эту модель из представления я уже пытаюсь сохранить.
context.Set<TEntity>().Attach(entityToUpdate);
context.Entry(entityToUpdate).State = EntityState.Modified;
context.SaveChanges();
Если все равно плохо объяснил, то вечерком код кину, как буду дома.
Да, кажется, у Троелсена было два примера (про числа Фибоначчи и факториал числа), и этого было мало
Ты уже где-то работал, раз говоришь, что там реальные таски?
В таком случае вернусь к курсу. Есть какой-то страх перед тем, что приду на работу, а там все пилят нечто невообразимое
Нет, не работал, но это можно понять с самого задания как я выше навел.
Не то чтобы там было что-то невообразимое, там по большей части какая-то простая хрень, но с заготовленной кучей подводных, как в принципе и в реальных заданиях (делал пару петпроджектов, очень сильно была разница между тем что я ожидал и тем что получалось в итоге).
>public RelativePropertyType RelativeProperty
чтобы проперти работало как навигационное, нужно его маркать как virtual
вообще, для code first есть конвенции
чтобы экономить на памяти, перфомансе и латенси от потенциальных сборок мусора в 2к19м
тааак
у тебя есть Entity (e) и RelativeEntity (r). ты меняешь (e).RID и это сохраняется?
и что не так, в общем-то?
struct выделяется на стеке. храниться она может и в куче при некоторых обстоятельствах
>Или я долбаеб?
Нет это они долбоебы. Перед бинарным поиском для повторяемости результата нужно дропнуть дубли. Но они предлагают тебе отгать загадку как там задумано на самом деле и передаю в метод некорректную хуйню.
В нормально коде такой проблемы даже бы не возникло т.к. ты контролируешь его полностью(ну почти).
>В каких случаях?
когда это часть ссылочного типа, элемент массива, или упаковывается в рантайме
1) Нажимаю в представлении редактировать, перехожу в обработчик Get запроса и получаю там выбранную сущность по ID, на скрине значения.
2) Поменял в представлении Teacher и Semester, нажимаю сохранить перехожу в обработчик Post запроса, мне туда приходит модель из формы с изменёнными значениями. Я делаю update как я уже писал, сначала аттачу ее, потом state=modified, делаю context.savechanges() он возвращает 1
3) Ради интереса делаю запрос на получение этой записи по ID, получаю сущность с изменениями, НО в базе изменений не произошло, все осталось как было.
>если не добавлять им атрибут [ForeignKey]
ну есть Fluent API
если так же принцип следования конвенции. если помечать референсы виртуальными и правильно объявить тип/объект, то EF раздуплит связь между энтитями
>зачем
чтобы отрефлектить связность таблиц в модели, чтобы дать всему, что отвечает за построение и валидацию модели, полную картину происходящего, дабы потом у тебя запросы работали адекватно. конечно, если у тебя тупой CRUD в каждую таблицу, то все это опционально
>ну есть Fluent API
>есть так же принцип следования конвенции. если помечать референсы виртуальными и правильно объявить тип/объект, то EF раздуплит связь между энтитями
а если без fluent API, вот проста
public int ClassB_Id {get; set;}
public virtual ClassB ClassB {get; set;}
- вот у этого EF всегда нормально будет ClassB вытягивать из БД без FK?
>запрос на получение этой записи по ID
EF достает данные из Local, в рамках уже существующего контекста ты, конечно же, получишь актуальные данные
попробуй повесить интерсептор на свой контекст. и в момент SaveChanges посмотришь, какой запрос улетает на сервер. обновление у тебя происходит, но это може быть обновление совершенно левой записи. опять таки, на словах я не вижу ошибки.
Добавил лог, update идет только по одному полю типа int, по остальным ничего, странно..
Почему тред такой активный?
Да, мне нормально зашел.
Объясняют норм и практики интересные.
Но лучше до/в процессе/после все же книжки почитать
>>1335434 (OP)
Анон в каком месте я лажанул?
------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OLD
{
class Human
{
public int Age { get; set; }
public string Sex { get; set; }
public string Name { get; set; }
public void SayHelloToBitch()
{
Console.WriteLine("Ну привет шаболда");
}
}
}
-------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OLD
{
class Boozer : Human
{
private Liver Liver = new Liver();
protected Boaroshnik Boaroshnic = new Boaroshnik();
public void NassatVPadike()
{
Console.WriteLine("Опять кто-то подъезд обоссал");
}
}
static void Main (string[] args)
{
Boozer Seva = new Boozer();
Seva.Name = "Дядя Сева";
Seva.Age = 50;
Seva.Sex = "Мужичара";
Seva.SayHelloToBitch();
Seva.NassatVPadike();
Human man = Seva;
Boozer boozer = man as Boozer;
if(boozer != null)
{
boozer.NassatVPadike();
}
Console.ReadKey();
}
}
-----------------------------------------------
namespace OLD
{
class UltraBoozer : Boozer
{
public void ChoDrink()
{
Console.Writeline(Boaroshnik);
}
}
}
-----------------------------------------------
namespace OLD
{
class Boaroshnik
{
}
}
-------------------------------------------------
namespace OLD
{
class Liver
{
}
}
--------------------------------------------------------------
ОшибкаCS0116Пространство имен не может напрямую включать в себя такие члены, как поля или методы.
ОшибкаCS0117"Console" не содержит определение для "Writeline".
ОшибкаCS0119'Boaroshnik" является тип, который недопустим в данном контексте.
>>1335434 (OP)
Анон в каком месте я лажанул?
------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OLD
{
class Human
{
public int Age { get; set; }
public string Sex { get; set; }
public string Name { get; set; }
public void SayHelloToBitch()
{
Console.WriteLine("Ну привет шаболда");
}
}
}
-------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OLD
{
class Boozer : Human
{
private Liver Liver = new Liver();
protected Boaroshnik Boaroshnic = new Boaroshnik();
public void NassatVPadike()
{
Console.WriteLine("Опять кто-то подъезд обоссал");
}
}
static void Main (string[] args)
{
Boozer Seva = new Boozer();
Seva.Name = "Дядя Сева";
Seva.Age = 50;
Seva.Sex = "Мужичара";
Seva.SayHelloToBitch();
Seva.NassatVPadike();
Human man = Seva;
Boozer boozer = man as Boozer;
if(boozer != null)
{
boozer.NassatVPadike();
}
Console.ReadKey();
}
}
-----------------------------------------------
namespace OLD
{
class UltraBoozer : Boozer
{
public void ChoDrink()
{
Console.Writeline(Boaroshnik);
}
}
}
-----------------------------------------------
namespace OLD
{
class Boaroshnik
{
}
}
-------------------------------------------------
namespace OLD
{
class Liver
{
}
}
--------------------------------------------------------------
ОшибкаCS0116Пространство имен не может напрямую включать в себя такие члены, как поля или методы.
ОшибкаCS0117"Console" не содержит определение для "Writeline".
ОшибкаCS0119'Boaroshnik" является тип, который недопустим в данном контексте.
И то что он храниться в стеке, а ссылочные типы хранят референс в стеке на объект в куче, так?
https://pastebin.com/5PKpeCkE
https://github.com/thallkeer/TeacherLoad/tree/master/TeacherLoadApp
на всякий случай код на github, но там куча всего. Если что, проблемы с GroupLoad
Лол, я рили долбоеб
короче. inb4 в EF Core я шарю практически никак. и тот подход, который ты юзал, работал в дефолтном EF от чего у меня знатно подпекало на проектах. я не фанат такого способа обновления данных, и, если я прав и команда Core избавила фреймфорк от подобного инвалидства/костыляния, я апплодирую стоя
я сильно подозреваю, что суть в поведении StateTracker'а, который понятия не имеет об исходном состоянии entityToUpdate, и, соответственно, не видит изменений при попытке их детектирования (я изменил только Semester на UI):
пик 1 - значения в базе
пик 2 - что StateTracker знает об исходном состоянии энтити
пик 3 - что StateTracker получает как "измененный" стэйт энтити
для долбоебов:
- контекст только что был создан и там вообще нет никаких локальных данных
- ты передаешь какой-то объект в контекст с просьбой помаркать его как измененный
- вызывается SaveChanges
-- трэкер пытается детектить изменения:
-- видит: оригинальный семестр - (2), измененный семестр - (2)
-- уволить, отказать. идем дальше (а данных больше и нет)
ебошим UPDATE, в котором не апдейтится ничего
я сделал по-еблански: вытащил данные из базы, прошелся по всем пропертям, чтобы обновить их значения на то, что прислал браузер - пик 4. соответственно, unitOfWork.{}.Update я послал к хуям ибо трэкер по-дефолту и так уже в курсе про изменения.
но это привело к ошибке обновления ключа: пик в следующем посте. в душе ниибу, что такое AlternateKey. закомментировал OnModelCreating::modelBuilder.Entity<GroupLoad>().HasAlternateKey и был счастлив
Вкатывальщик в треде, все собираемся
То есть, твой подход сработал и данные обновились в базе, но после того как ты закомментил строку с альтернативным ключом? Странно, неужели нельзя у записи менять атрибуты, составляющие альтернативный ключ? Попробую сделать как ты сказал, если интересно, вечером сообщу. БТВ, что за шрифт у тебя в студии?
Fantasque Sans Mono
> видит: оригинальный семестр - (2), измененный семестр - (2)
-- уволить, отказать. идем дальше (а данных больше и нет)
Не совсем понял. Почему их больше нет?
ну это просто единственная запись в чендж-трекере. и то добавленная как DbContext.Entry().State =
>И то что он храниться в стеке, а ссылочные типы хранят референс в стеке на объект в куче, так?
Так, и что из этого?
Меня так на собеседовании дрочили
В стэке хранятся ссылки на ссылочные типы. Когда ты присваиваешь что-то типа
object a = new object();
var b = a;
То ты переменеой b присваиваешь ссылку на a. И если ты изменишь что-то в a, то изменится и b, так как это один и тот же обьект из кучи. Так же само, когда ты сравниваешь ссылочные типы, ты сравниваешь только ссылки.
Значимые типы могут лежать прям в стеке. И при копировании, ты копируешь все значение, а не только ссылку. Так же, значимые типы могут стать ссылочными - когда ты пишешь
object o = 5;
Ты даешь переменной о ссылку на int 5 в куче. При возврате назад к инту, в стэк будет копироваться значение из кучи.
пиздос, как можно идти на собеседование и не знать этого
Бля, чувак, спасибо тебе огромное, я просто супер еблан. Я пытался апдейтить свойство, входящее в альтернативный ключ, а ef это запрещает. Пиздец...
у тебя там явная борода с инициализацией значений базочки
про завтыки в самом веб-проекте, я думаю, ты сам знаешь
советую после всего просто дропнуть базу, и накатить все по-новой
>Платиновый вопрос:
>Нахуя нужен struct если есть class?
>Класс - ссылочный тип.
>Структура - значимый тип.
И чо? Нахуя нужен struct если есть class? Какая разница значимый тип или ссылочный в данном случае? К этому все велось.
>пиздос, как можно идти на собеседование и не знать этого
А я где-то написал, что не знал?
Вопрос был - нахуя struct, если есть class? Ради радости присваивания через оператор = ? Где реально эти структуры используются, например?
Вот вопрос, который меня в тупик на собесе поставил был такой:
try catch finally, зачем нужен блок finally?
Я грю, ну он сработает после выполнения try или catch в любом случае.
Хорошо, а где это используется?
Я ни одного примера придумать не смог.
вообще, еще пример, пару раз был пригоден в проектах: нужно выполнить логику без оглядки на результат работы. естественно, в случае фейла, не нужно завалить вызывающий код
в таком случае пишешь пустой finally
> Где реально эти структуры используются, например?
Инты, даты и булева тебе не нужны? Это ведь был бы пиздец, будь у тебя даже они ссылочными - как тогда вообще построить функцию, котарая берет данные на вход и возвращает что-то обратно, не изменив входные данные? И ты даже никак не узнаешь, изменились в этом ссылочном типе данные или нет. Кароче они нужны когда тебя нужна иммутабельность.
>- делаешь любое действие
>- гарантированно освобождаешь ресурсы
У меня чо, сборщика мусора кто-то отобрал? Может еще и деструкторы дрочить?
>естественно, в случае фейла
есть фейл - работает catch
нет фейла - try
какое третье состояние нужно, чтобы только finally
>Инты, даты и булева тебе не нужны?
А кто мне их в классе мешает использовать? Ты вообще о чем разговор понял?
> А кто мне их в классе мешает использовать?
От того, что они в классе, они не становятся ссылочными.
Он не осознает всех тонкостей, оставь его
Можно закрыть открытые потоки в файлах. Я знаю одного спросили как закрыть потоки в файлы если метод оче большой и сложный и еще что-то. Ответ - деструктором. Немного не то но похоже.
>Можно закрыть открытые потоки в файлах
Это если ты долбоеб и не юзаешь оператор со скобками, который так или иначе закрывает все твои потоки
>пустой catch - это ультрахуевая практика, даже если тебе этот кэтч реально не нужен. пустой finally тебя ни к чему не обязывает
Но ведь вопрос был зачем finally нужен. Даже если в catch я кидаю в лог исключение, зачем finally?
та блять. говорят уже раз третий тебе, чтобы гарантированно выполнить какой-то код, даже если основной блок отвалится
[/spoiler]самый верняковый пример - закрытие соединения, релиз блокировки или файла
какой оператор со скобками?
>даже если основной блок отвалится
Какого хуя он у тебя отвалился? И пример давай, вот прямо рабочий, что ты там пишешь? Я же тоже сказал, что будет использоваться, по сути в качестве деструктора. Но у меня уточнили, где ты его применял?
var connecton = this.ConnectionPool.GetAwailable();
try { return connection.Query<Govno>(queryString, params); }
finally { this.ConnectionPool.Release(connection); }
это не копипаста из проекта, если че (но могла бы быть)
Он очевидно говорит про подход аля кресты - делаешь класс аллокатор соединения из пула, освобождение соединения суешь ему в деструктор Dispose.
Вообще, очень лежит, так как энтерпрайза я наелся ещё будучи юристом. Но я прекрасно понимаю, что геймдев - это вовсе не работа-игра, просто нишевая разработка с особенностями.
в следующий раз когда на собеседовании придется рассказать про использование try-finally в проектах, скажи, что это говно без целей и задач, а разрабы языка - долбоебы
если спросят, почему так, можно ответить: потому, что пети из двачей не доказали реальные кейсы применения, а подпихнули говнокод, который хуйня
Она же полностью синонимична этим вашим try finally.
так а кто спорит.
а если логика чуть сложнее, чем открыл/закрыл?
>>68892
страдать. десктоп был мертв еще в момент, когда я пытался вкатиться. у меня на работе есть полностью десктопный челик. взяли его в контору только потому, что была острая нехватка дотнетчиков, а проект стартовать надо прямо уже. конечно, ему пристроили место в UWP-проекте, но много ли таких на рынке? можешь попробовать смигрировать
Ее можно засунуть в Dispose обычно, но я бы в таком случае предпочёл воспользоваться конструкцией try finally
А если плюнут на все? Подтянуть zenject и внедрение зависимостей, ну или UniRx, хотя вроде он мертв. И уйти в геймдев, еще с детства мечтал
>так а кто спорит.
>а если логика чуть сложнее, чем открыл/закрыл?
Блядь, ты привел код, да? Да! Тебе сразу недоджун сказал, почему не через using, finally избыточно в данном случае, ты попой покрутил и сказал, что так и должно быть, не долбоебушка ли ты часом? Логика чуть сложнее, чем открыл/закрыл? Так приведи пример этой логики. Пока что ты хуйню избыточную привел, вместо ответа, зачем finally нужно
почему долбоеб ты, а стыдно мне?
>а если логика чуть сложнее, чем открыл/закрыл?
А ты пример этой логики приведешь?
Мне пока на ум приходит только то, что от сервера можно получить какие-нибудь неверные данные и попробовать еще раз.
Но это скорее из джаваскрипта пример, хз, нужно ли такое в шарпе
retry в случае ошибки, да; какой-нибудь пул соединений и/или Unit of Work
вообще в приложениях сложнее moy_kursach заботу об управлении коннэкшном (ну и не только, просто это наиболее очевидный/часто встречающийся пример) не берет код/класс, который с этим соединением получает/записывает данные. а раз ты разделяешь ответственность, то появляется соблазн переиспользовать ёмкие ресурсы повторно (например, для какой-нибудь операции, которая выполнится через две строчки кода; или шире: в любом последующем ветвлении какого-то флоу). отсюда тебе мало написать using, ты не знаешь, в какой момент времени еще управляемый объект может понадобиться
могу другой, немного высосанный из пальца пример привести, не связанный с базой: юзер загружает картинку в твое приложение, но оно нарушает правила использования сервиса:
- бэкенд принимает файл, записывает его во временный сторадж
- идет попытка применения его для данных пользователя с сопутствующей проверкой. например, это аватарка и она хранится в каком-нибудь блоб хранилище
- файл нужно удалить из temp, дабы не хламить место, что бы не произошло
условно говоря, у тебя будет action контроллера, обернутый ExceptionFilter-ом (соответственно, блок catch в нем будет (скорее всего) отсутствовать), а валидация, сохранение, еще что-то происходит в глубоких ебенях сервисов/репозиториев. и в этом случае try/finally тебе поможет: удалить файл если был выброшен эксепшн; не копипастить логику обработки фильтром ошибки в catch блоке (и не писать catch { File.Delete(); throw; })
>мввм не соблюдается и нужно запиливать все эвенты через злоебучие команды, которые работают через жопу и требуют миллиард дополнительных строк нечитаемого кода
ты уверен, что все делаешь правильно?
>чистый code behind - это хорошо
так нынче хорошо все, что кодогенерацией облегчаетнет/ускоряет разработку. написание приложения через объявление вью-моделей и разбиение логики по командам а-ля десктопный CQRS - это как раз о том
>Его что, блять, по приколу что ли запилили?
Каэшна, vm руками создавай, для каждого окна, хули ты, не макака что ли?
>кусок сырого непроработанного говна
>>69105
>плюс мввм - это вообще говно мочи.
>>69105
>удобный code behind
>>69105
>запиливаешь все эвенты
>>69105
> Его что, блять, по приколу что ли запилили
Анекдоты уровня /pr/
На самом деле, ты просто слишком туп, чтобы понять все приемущества и мощь WPF. На твоих хелоуворолдах использовать его нет смысла - используй формочки.
Алсо, qt бляди до сих пор завидуют байндингам которые есть в wpf
>Алсо, qt бляди до сих пор завидуют байндингам которые есть в wpf
И чему там завидовать? Можно поподробнее?
>Алсо, qt бляди до сих пор завидуют байндингам которые есть в wpf
С чего бы? Сидел на обоих, xaml отсасывает у qml с проглотом.
>retry в случае ошибки, да
Минуту, я хуйню сказал, это в catch нужно.
>этом случае try/finally тебе поможет: удалить файл если был выброшен эксепшн; не копипастить логику обработки фильтром ошибки в catch блоке
Почему "если", через finally в любом случае произойдёт удаление.
>это такое говно, что пиздец
>>69105
Ниосилятор, съеби уже.
>>69275
>Сидел на обоих, xaml отсасывает у qml с проглотом.
О, индивид заявляет что сидел на WPF, но когда ему рассказывают про приемущества Binding выражений и Dependency Property, он начинает сравнивать xaml и qml.
Дай угадаю, ты "сидел" ковыряя свою "лаба 1", но при этом не работал, верно?
>>69257
>Можно поподробнее
Всему. Binding выражения, Dependency Property, workflow, анимации, тонны вещей из коробки.
>верно
Нет. А вот ты явно не видел как биндинги делаются в кюте, дошло бы какой анальной дрочкой ты занимаешься.
в wpf дефолтный биндинг на уровне <Элемент Свойство="Выражение" />. как еще более удобно/адекватно можно че-то ривязывать?
мимо
Бамп.
Ну возьми второй пример кют биндинга из педивикии https://en.wikipedia.org/wiki/QML#Property_bindings
и попробуй переписать на ксамле/шарпе.
>ты уверен, что все делаешь правильно?
Уверен. Расскажи мне, например, как адекватно реализовать datagrid column header click через команды, но мало того, чтобы команда ещё и объект datagridcolumnheader возвращала. Или как привязать команду к гриду, который находится внутри табконтрола? А никак.
>адекватно
>datagrid column header click
kek
по существу, ты хочешь на любой пук иметь возможность подцепить все, что придет в голову? ну, естественно, такого не бывает. в данном случае надо поднаписать чуть-чуть своей реализации поверх дефолтного контрола. в WPF я редко видел как обходятся стандартным набором компонент, а зачастую, и пишут врапперы поверх библиотечных
ты-то вообще сам как хотел бы, чтобы выглядела твоя привязка? я даже не знаю, зачем тебе возврат значения из ICommand.Execute. оно не для того придумано
вкатывайся в го
>по существу, ты хочешь на любой пук иметь возможность подцепить все, что придет в голову?
Через эвенты это делается за 10 секунд, например.
так биндинг в впф это обертка над ивэнтами тащемто
просто чтобы рандомные ивэнты подключить, надо чутка постараться. разрабы решили особо и не стараться
{
get{return Discont;} set{Discont = value;}
}
Поясните чому оверфлоу и как можно это решить кроме как создания новой переменной?
>public double Discont
>get{return Discont;} set{Discont = value;}
Ты уверен, что ты понимаешь, что ты делаешь?
У меня есть многопоточное приложение. Возникла необходимость убивать некоторые потоки в которых сейчас идет работа. Как это реализовать правильно? Погуглил, но нихуя не нашел. Потоки запускаются через Task
>cancellationtoken
Для него токен надо создавать, не? Потом хранить его где-то. У меня 10-15 потоков параллельно работают
это общепринятый способ завершать работу в TPL. откуда взялась проблема что-то куда-то создавать?
по соглашению асинхронные методы имеют в сигнатуре CancellationToken как параметр. потому, что постоянно появляется необходимость что-то отменять
если уж не случилось по разным причинам с CancellationToken, есть воркэраунд на игнорирование результата, но такое может не подойти в некоторых случаях:
var delay = Task.Delay(timeout);
var workTask = RunGovnoAsync();
var result = await Task.WhenAny(delay, workTask);
if (result == workTask)
{ azaza }
Delay - просто шикороиспользуемый кейс. в твоем случае это может быть синхронная параша, которая засигнализирует, что надо закругляться
Я объебался, имелось ввиду внедрение зависимостей, DI.
Как в Ninject можно привязать несколько реализаций?
через именованые зависимости. вообще это хак и многие люди не любят такую дрочню.
для всех остальных есть чуть более хардкорные вещи, типа условная инжекция в SimpleInjector. точно не помню, но там вроде через цепочку When(x => { }).Resolve<T>() можно подпихнуть что угодно
>В чем основная фишка
инверсия зависимости - читай сюда
вообще эта херня очень сильно облегчает жизнь при тестировании. ну и уж тем более упрощает разработку в случае, если для целого сервиса оказывается альтернативная реализация, которую вот надо теперь использовать (что бывает нечасто)
>Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде.
Почему за несколько тредов здесь я не увидел за него ни слова? Неужели тут никто не пишет на шарпе под смартфоны?
Вроде выглядит секс - мультиплатформа, работаешь в студии даже кривую возможность отладки сразу на телефон завезли.
Или это совсем мертвая ебала?
Не удивлюсь если на этот пост никто не ответит.
Потому что неосиляторы считают его багованным говном, однако у кого не спрашивал, никто толком объяснить не может, чем он плох.
Знаю, что на гознаке прогеры под него пишут, но местным джунам виднее конечно же, что говно, что нет.
Куда выкатываетесь?
Проиграл
Сегодня прям дизмораль словил.
Я всегда такой. Чувствую себя отбитым дауном. Раньше ходил в школе на олимпиадное прогоаммирлвание, но в итоге забил - я не умею думать и писать код с такой скоростью.
Постоянно такое.
Ну это понятно, перекатыватся с жабы на шарп ради xamarina возможно не очень то хочется как и например мне с шарпа на жабу.
Ну так. Скорость разработки конечно выше чем на убого android studio. И если формы не трогать. Ну тут нужно учитывать что все библиотеки для android на java, и тебе скорее всего нужно будет самому билдить и настраивать это все для поддержки в C# (для популярных библиотек вроде есть nuget пакеты, но не уверен в их актуальности и работоспособности).
Если что-то пойдет не так, тебя ждует охуенные долгие дни поиска причины и ее исправления, т.к. инфы по ксамарину в интернете почти нет.
Тут нужно думать стоит ли оно того. Если ты делаешь простой интерфейс для REST, то можно взять. В остальных случаях нужно нужно думать, написать код для каждой платформы это не такая уж большая проблема на самом деле.
Хочу протестировать кучу всего, но не понимаю.
Достаточно ли будет сделать вот так, чтобы модуль работал на всех формах?
Kernel = new StandardKernel();
Kernel.Load(new ExampleModule());
Application.Run(new MainForm());
тебе нужно иметь доступ к Kernel из всех своих форм. самый васянский способ - объявить публичный статический класс и там свой Kernel инициализировать
как-то так
Помните первохл? Там как раз есть программный рендер. Чем же он выводит кадровый буфер на экран?
тут даже вопрос не конкретно по сярпу, а вообще о возможностях винды
>цикл битмаповых setpixelов съедает всё процессорное время
А зачем ты цикл крутишь? У тебя мир часто обновляется по пикселям? Вот прямо каждый кадр новые пиксели?
Сделой себе массив с Color и еби его как хочешь за нулевое время, потом конверти в битмап и возможно этот битмап не нужно будет пересоздавать заново для установки в picturebox.
Вот посмотри тут как быстро ебут пиксели линей в ряд:
https://stackoverflow.com/questions/54553517/c-sharp-bitmap-set-pixel-value-for-format8bppindexed
>Чем же он выводит кадровый буфер на экран?
Внутрях там наверно крестовый bitblit - это очень быстрая шняга для копирования пикселей куда угодно. Используется в винде повсеместно. Можно поробовать обмазаться этой нативной реализацией если забить на кросплатформу нета.
Отвечу третий раз. Прост.
1) Множество конструкторов, что ссылаются друг на друга через this
2) Конструктор ссылается на базовую реализацию через base?
Ninject может работать только с одним конструктором, вроде как. он помечается специальным аттрибутом, или юзает дефолтный без параметров
Как скачать файл с Releases, по ссылке с гитхаба, через webclient, если там, на github'e - редирект.
Привет, ребята. Я хуй без опыта и высшего образования. 26 лвл. Программированием увлекаюсь давно, база хотя бы для джуниора есть с запасом. Хочу в веб. Пока без разницы, во фронт или в бэк. Лишь бы найти какую-нибудь работу. Из серверных языков знаю php, но это мне не очень нравится, все-таки хочется чего-то посерьезнее. В джаву мне путь 100% закрыт.
Есть ли шансы вкатиться к вам с такими данными?
>Есть ли шансы вкатиться к вам с такими данными?
всегда удивляют такие вопросы.
Хочешь в веб, учишь JS. Ну и к нему html+css. Делаешь пет проект и выкладываешь на гитхаб и идешь по собеседованиям.
Ну а типа "потратить 1-2 недели на изучение и сразу на работу" ну тут хз. Как минимум полгода-год уйдет, если не больше.
Нужно парсер, который бы парусил чат на наличие сообщений от юзера, ничего криминального.
Проблема в том, что все грузится динамически, как это можно сделать?
Спасибо, Анон. Можешь кинуть ссылку на какой-нибудь материал, где подобное описывается?
Тебе нужен http и api сервиса, дальше легко.
Олсо, вопрос, правильно ли я понимаю, что для каждого сайта делается отдельный ВебСкраппер или можно унифицировать?
унифицировать ты сможешь только базовые действия
конкретные данные с конкретной разметки ты, конечно же, забираешь индивидуально
А, я понял, парсить по таймеру. Изначально на что-то такое я и рассчитывал.
Только есть вопрос, с помощью какой библиотеки это делать?
слишком общий вопрос, чтобы отвечать на него как-то конкретно. что и как ты хочешь парсить? если у сайта есть вменяемое API (подозреваю, его нет), то какой-нибудь HttpClient (или напрямую с WebRequest пердолься) с десериализацией респонза в нужный тебе тип
если же тебе нужно ебашить разметку, то я лично предпочитаю использовать HtmlAgilityPack. опять таки, для скачивания страницы тебе понадобится нечто вроде HttpClient
>слишком общий вопрос, чтобы отвечать на него как-то конкретно. что и как ты хочешь парсить?
Дискорд, у него API только для ботов, но не на свой сервер я, вроде как, добавить бота не могу.
мраземакаба не дает постить ссыль на доку дискордовскую
гуглируешь крч: Discord Development Portal / Channel / Get Channel Messages. это разве не оно?
>гуглируешь крч: Discord Development Portal / Channel / Get Channel Messages. это разве не оно?
Это все про написание ботов для своего сервера, на другой я его закинуть не могу.
ну тут сыглы. я с дискордом не работал, не могу тебе сказать
парсинг разметки в данном случае выглядит как уберпупероверкилл. но, может быть, и единственный выход
>уберпупероверкилл
В каком смысле? Не понимаю тебя.
Это мне еще надо будет залогиниться, написав POST запрос, потом спарсить страницу, вытащить сообщения и снова спарсить эту страницу, но так, чтобы не выйти из дискорда.
Может какой-нибудь Cefsharp сможет помочь сделать все проще?
в смысле, что это стреляние по воробьям из пушки, когда дискорд - достаточно адекватная платформа, чтобы предоставить тебе нужное API (в случае, если кроме бота какое-то API все-таки есть)
если нет, то отписанный тобой процесс. как по мне, CefSharp не даст тебе особого преимущества. ибо тебе все те же процессы придется описывать и производить по такой же схеме. разве что ты будешь оперировать не запросами/ответами/хэдерами, а кнопочками в документе. но можешь начать с него, тебе виднее, как тебе делать удобнее )
Короче, я сделал так, максимально васянским способом
Через CefSharp запускаю скрипт и через
var div = await chromeBrowser.EvaluateScriptAsync(textBox2.Text);
Запускаю команды javascript.
У меня пока не получилось сделать нормальный вход и переход по формам, выгрузку картинок и гифок.
Думаю, что можно на это забить и сделать имитацию нажатия клавиши и клика мыши.
https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/threading/CancellationTokenSource.cs#L177
я вот лично не вижу ничего, связанного с тредом. и для себя не очень понимаю, почему бы он менялся
Аноны, что делает эта строка:
int index = (int)Math.Min(Math.Pow(r.NextDouble(), 0.3) * count, count - 1);
Хочу на JS переписать метод, а там - вот это...
Math.Min - выбор наименьшего из двух
Mat.Pow - возведение x в степень y
* - умножение
- - вычитание
NextDouble() - случайное значение числа с плавающей точкой от 0 до 1
да
Понял.
Стоит ли игра свечь в плане вакансий для джунов, сколько времени на перекат и вливание в это опп:(
Ок, я открыт для идей/светов, готов принять любые идеи/светы на рассмотрение, так как есть огромное желание присесть в офис и залезать к дяде в карман 1 раз в месяц, помимо пасивного дохода...
веб-фулстекинг практически гарантирует тебе место в офисе
может быть что-то про юнити тебе тут расскажут
мобильная разработка, опять-таки. наверное, xamarin жив еще
Короче никак не миновать бля*кий JS?
Что расскажешь про системного админа, есть мне там что ловить?
Но мне в ответ приходит {"code": 0, "message": "400: Bad Request"}
И я не могу понять, в чем ошибка, как можно посмотреть исходящий запрос из приложения?
Прочитал подробно, что такое full stack developer... это не мое, везде по немногу, но зато везде, а копни такого поглубже в чем либо, лопнет как блять пузырь мыльный! Я предпочитаю знать 1 но идеально, максимум 2 и то второй для дяди или удобства написания проекта.
я тоже так думал сначала, но теперь понимаю тупиковость данного подхода. особенно в дотнете, где умирает легаси из 2010х, но все никак не сдохнет, а кроссплатформенного кора пока не много на рыночке
да и знать-то особо нечего. основы языка учатся за месяцы, надрачиваются за пару лет адекватных проектов. дальше расти все-равно в технологии, которые, нынче, привязываются не к одному языку, а к целой россыпи
Ну все, короче, через cefsharp я смог отправить запрос, дискорд выдает токен, пробую перейти на другую страницу, а он мне снова требует войти. Чтобы такого не было мне нужно куки как-то сохранять или он меня по другой причине может слать нахуй?
Значит больше уязвимостей:) От таких спецов, подуй на темную сторону:) ахахаах (Шутка)
Спасибо за общение и разъяснения, буду копать еще что нибудь, уверен найду, не может быть, чтобы Сишник был абсолюно не нужным;)
Там куча всяких скриптов.
Ладно, буду входить сам, на крайняк вроде можно куки сохранить и при новом запуске не потребуется аутентификация.
А так все работает, получаю информацию через javascript запросы, обрабатываю и шлю ботом в свою конфу, схороняя видео и получая уведомления, когда один пользователь пишет. Полагаю, что надо ещё отрубить отображение в chart после входа, чтобы ресурсы не тратились на отрисовку
Сейчас оставил работать на всю ночь, если не упадёт, то буду максимально доволен.
>потоки в определенном порядке закончили свою работу
>запускаются в нужном мне порядке
есть под этим подразумевается: убить и создать новый - то какого-нибудь ThreadRofloManager будет достаточно, который будет управлять состоянием потоков
если это все значит, что в методах самих трэдов нужно паузить и возобновлять работу, то ManualResetEvent (или Auto~) тебе в помощь
а вообще идея выглядит костыльно изначально:
>1 из них кеширует данные для последующей обработки другими потокам
ну сложно сказать, имея представление только о части реализации задачи
я так понял, ты одним трэдом в loop-е асинхронно собираешь задачи, а другие потоки каким-то хуем асинхронно в том же (своем) loop-е их по очереди обрабатывают, чи шо?
Практической задачи нет, я просто написал парсилку для дискорда.
С авторизацией таки соснул, нужно разбирать скрипты, а они огромные
Надо бы разобраться с тем, как работать с куки, может быть, если я их сохраню и отправлю post, то дискорд меня пустит.
Эта падла прописало мне исключение прямо в лицо, хоть намекните в какую сторону воевать.
mapPic[x, y] у тебя точно в рамках границ обращается?
подсвечиваемая строка и реальное место исключение не всегда совпадают, зависит от всякого
Эта беда вылезла, когда попытался инициализировать
Init()
private void Init()
MainBoard board = new MainBoard (panelGame);
До этого все работало, но мне нужно было вевести пролинейное поле разбитое на квадраты.
Прошу прощение за синтаксис пишу с планшета..
Controller порождает NotificationBox, через передачу в его конструктор enum, нужный тип Box (error, message, info)
После передачи в конструктор Controller в нем есть switch, который смотри какой enum передали и вызывает нужный метод
CreateMessageBox, CreateErrorBox
Как мне можно сократить? Ведь если я захочу сделать еще пару типов NotificationBox, мне нужно будет увеличить на n раз свич, добавить в enum нужное n кол-во имен NotificationBox, а в Controller нужно будет добавить еще пару методов создания NotificationBox.
Я хочу сделать примерно так:
Каждый Form NotificationBox наследовать от INotification.
В самом INotification сделать abstract void метод Create.
В Controller создать глобальный экземпляр INotification. При вызове конструктора Controller switch апкастит нужный Form NotificationBox к глобальному INotification и в конце свитча я вызываю у INotification Create.
увеличения количества кода ты не избежишь, твой вопрос про место, где это кодэ будет прибывать
можешь посмотреть в сторону Visitor, если тебе понравится
Может ещё кто, чего подскажет? Параграф о массивах и исключениях в виде индексов выпадающих из массивов зачитал до дыр.
Если что, то конкретное направление - asp.net mvc
тебе бы посмотреть стек трейс исключения, а не искать помощи по скриншотам. или хотя бы показать его нам, если неосилятор
>Анон в каком месте я лажанал?
В панельгейм.контрольс.адд
Скорее всего у тебя там массив с 0 элементов или что типа того
так Add добавляет в конец ICollection. какая разница, сколько там было изначаьно элементов?
Бамп вопросу!
Если попытаться скачать файл с releases на github'e,
и сразу же приостановить загрузку,
а затем скопировать ссылку по которой скачивался файл - она же другая будет, более длинная, да ещё и с разными значениями!
вот это грамотное решение, зачастую всё нужно подгонять к интерфейсам, удобнее, чем свитч
если ты впервые в .net, то можно читать все, что угодно
Хз, я шапку скопировал с треда двухлетней давности, я ничего вообще не читал. Если ты ньюфаг, то нихуя тебе не надо читать - пройди любой курс по программированию, желательно там где язык со статической типизацией лично я проходил явараш, потом вообще без проблем перешел на сярп. Демоверсии на 10 уроков хватит для основ, а потом читай metanit.com.
>лично я проходил явараш, потом вообще без проблем перешел на сярп
Двачаю. После явараша легко перешёл на шарп.
Как я понял, единственные проблемы - ебучие значимые типы, которые так же наследуются от ссылочного object.
Если б не они, то было бы достаточно сделать синт. сахар, который бы в псевдо-дженерике сохранял изначальный тип, кастовал его к object и при возврате кастовал бы обратно, но без тайпчека.
[CODE]
using (Process ffmpeg = new Process()) {
ffmpeg.StartInfo.FileName = "ffmpeg.exe";
ffmpeg.StartInfo.Arguments = ...
ffmpeg.StartInfo.UseShellExecute = false;
ffmpeg.StartInfo.RedirectStandardError = true;
ffmpeg.StartInfo.CreateNoWindow = true;
ffmpeg.Start();
while (!ffmpeg.StandardError.EndOfStream) {
string line = ffmpeg.StandardError.ReadLine();
Debug.WriteLine(line);
if (условие)
ffmpeg.Kill(); // тут исключение что нет доступа, охуеть!
}
}
[/CODE]
Я конечно не эксперт, но может запусти от админа?
>кастовал его к object и при возврате кастовал бы обратно
ну вот в джяве такая параша придумана. и что из этого получилось?
причем, если я правильно понял, вся эта мичпуха разворачивается еще на этапе статической компиляции в кодосгенерированные типы, у которых под капотом T наружу - это Object, T внутри - это скащенный в нужный тип экземпляр
возможно, я не прав, но это не делает дженерики джявы неуебищными
Есть: Dictionary<int, Dictionary<float, int>>();
Нужно отсортировать вложенный словарь по ключу ( найти минимальный float ) и вернуть соответственно 2 инта которые соответствую минимальному float.
нихуя не проверял, но вроде так:
var dict = new Dictionary<int, Dictionary<float, int>>();
var minDict = dict.OrderBy(t => t.Value.Min(x => x.Key));
Console.WriteLine($"{minDict.First().Key}, {minDict.First().Value.First().Value}");
Всё, спасибо, оказалось, что в солюшене один из проектов был как консольный. А тестовый проект - проект типа Unit Test, библиотека
Спасибо анончик.
>меняется тип памяти
ссылочные типы хранят свои value type значения вместе со всем хламом в куче, этот нюанс разве метанит не пишет? для статических классов правила такие же, как и для динамических
>при отладке отобразить в состояние стэка и кучи
если под стэком ты подразумеваешь стэк вызовов, то есть соответствующая вкладка в окнах. если тебя интересуют именно состояние памяти, то только профайлер памяти тебе в помощь (возможно, VS Enterprise дает какие-то ультимативные диагностические фичи, но я не уверен, что тебе покажут побайтово все состояние памяти. да и нахуй оно тебе)
>ссылочные типы хранят свои value type значения вместе со всем хламом в куче, этот нюанс разве метанит не пишет? для статических классов правила такие же, как и для динамических
Я пропустил слово) Хотел просить "Меняется ли тип памяти?"
т.е. string ""; - ссылка
static string ""; - то же будет ссылкой или нет, раз переменная имеет общее значение для всех объектов класса...хотя это же объект, то получается что в любом случае он будет ссылкой. Как то сам на свой вопрос ответил. Всё равно спасибо)
>да и нахуй оно тебе
Я люблю в пошаговом режиме смотреть как меняются ноли и единицы в соответствии с логикой, которую я запиливаю в код...Буга-га)
>раз переменная имеет общее значение для всех объектов класса
ты уверен, что правильно понял суть статики?
1. Наследования
2. Полиморфизма
3. Интерфейсов
4. Стандартных интерфейсов
5. Делегатов
Просто нужны идеи программ, чтобы я сделал, ибо я не знаю какие могут быть программы с использованием этих функций, но посложнее чем к примеру использования наследования класса как шаблон. Приходит в голову только математическая программа с двумя видами решения, но не знаю какую придумать.
Смешно, но нет, спасибо.
>ты уверен, что правильно понял суть статики?
Хороший вопрос) К статической переменной можно обращаться не создавая объект класса. Это я понял) Ещё я понял что значение статической переменной одно на все объекты класса.
А на остальное? Если можно
Если говорить о классе, то хз - для статического класса, получается нет смысла создавать объекты
Да, для практики, чтобы попробовать сделать что-то по этим темам, ну и чтобы сдать работы в институт завтра.
Мне вот интересно, но я когда приношу, говорят что слабо, и что я могу сильнее программу принести, вот и хотел попросить идей подкинуть.
>значение статической переменной одно на все объекты класса
на какие объекты, какого класса? инстанс статического класса нельзя создать, а статические члены - это члены типа, а не экземпляра
тащемта в чем проблема?
хочу вытащить из studing_period значения больше 4, выдаёт такую хрень.
Где ошибся? Как понять в чем ошибка?
Есть массив строк в котором записаны цифры. Как в условие where можно вставить int.Parse точнее как стучаться к элементам lines в данном контексте?
Надо только так.
public static int[] ParseNumbers(IEnumerable<string> lines)
{
return lines
.Where(???)
>>75118
>в чем ошибка
>выдаёт такую хрень
Ты стучишся конкретно в перечисление и тебе возвращает тип при таком стучании очевидно. Ошибка в select n, тебе наверное нужно select n.studing_period.
.where(n => int.Parse(n) > 3)
как это вообще возможно, если OnEnable вызывается когда объект становится активным?
Вот код, если можно, объясните вообще что в нем происходит, или может у меня с английским проблемы?
void OnEnable()
{
DamagePlayerEvent.OnDamagePlayer += DecrementPlayerHealth(метод уменьшает хп);
}
void OnDisable()
{
DamagePlayerEvent.OnDamagePlayer -= DecrementPlayerHealth;
}
В случае с .NET смогу сам ковырнуть, ну а вообще-то похуй конечно. Для начала хочу понять сколько требуется деняк.
А с мобильного инета - бан тор, впн. Что за хунта? Кто сломал?
Вот я бы допустим писал на Скале. По твоему описанию может потребоваться от недели до месяца времени. Вот и прикидывай исходя из рыночных зарплат + надбавка за разовую работу.
Но это только бэкенд. И это Скала.
Время не критично, главное результат, поскролил апворк, ничего не понял, расброс цен большой как и почасовая оплата. Все еще не имею представления сколько должен стоить в конечном итоге продукт.
помогло, сяп няша
если апи площадок имеется, но недолго
а цена зависит от деталей
ты пытаешься во фриланс и спрашиваешь, сколько тебе заломить, лол?
сука, опять трендель не обновился
$2-5k
Вообщем в кнопке есть код, в котором лежат 6 экземпляров классов, со всякой мутью в конструкторах.
Хочу в другой кнопке делать запросы из этих экземпляров классов, это можно как то реализовать, без ctrl+c ctrl+v в код другой кнопки?
>найти самое длинное слово из этого списка, а из всех самых длинных — лексикографически первое слово в одно выражение кортежами и linq.
>Не используйте методы сортировки
Я написал пока что:
return words
.Max(n => Tuple.Create(n.Length,n));
И че дальше, с чем мне его сравнить если я работаю со строкой или как задать нормальное условие?
>Я не умею читать
Кто-то знает годные по Xamarin'у и в частности xaml'y гайд-видео/туториалы/курсы на русеке?
Исходная последовательность содержит сведения о задолжниках по оплате коммунальных услуг, живущих в 144-квартирном 9-этажном доме. Каждый элемент последовательности включает следующие поля: <Фамилия> <Номер квартиры> <Задолженность> Задолженность указывается в виде дробного числа (целая часть — рубли, дробная часть — копейки). В каждом подъезде на каждом этаже располагаются по 4 квартиры. Для каждого из 9 этажей дома вывести сведения о задолжниках, живущих на этом этаже: число задолжников, номер этажа, суммарная задолженность для жильцов этого этажа (выводится с двумя дробными знаками). Сведения о каждом этаже выводить на отдельной строке и упорядочивать по возрастанию числа задолжников, а для совпадающих чисел — по возрастанию этажа. Если на каком-либо этаже задолжники отсутствуют, то данные об этом этаже не выводить.
Это решается за пару минут и без всяких LINQ, а с LINQ выглядит как задача для школьников.
1. Всю дополнительную инициализацию формы лучше пихать в ивент хэндлер OnLoad. Конструктор может отработать несколько раз, а ивент OnLoad в подавляющем большинстве дергается лишь при непосредственной загрузке формы.
2. Имена классов - только в КэмэлКейсе.
3. Переведи енум на английский, дай значениям явные номера (0,1,2) и заведи аттрибут с дерганием его имени, куда ты и впишешь русское название. Затем напиши метод-расширение, которое дёргает указанное в аттрибуте имя енума.
Группирует их по ключу. В твоем случае ключами будет строка word, а значениями коллекция из строки word (сколько их там будет зависит от того сколько строк word в оригинальной коллекции). То есть ты получишь коллекцию уникальных строк и сколько раз эти строки встречаются в оригинальной коллекции.
{ жопа, пися, жопа, пися, жопа} -> { жопа => { жопа, жопа, жопа}, пися => { пися, пися } }
>>75630
.groupby(n => n) - если слова повторяются (нужны только уникальные)
.groupby(n => n.lenght).max() - список всех самых длинных слов (одной наибольшей длины)
.min() - вернёт тебе первое слово по алфавиту (или чему оно там будет, т.к. сравнение через IComparable)
>>75767
>Нужно срочно решить задание на C#
У тебя деньги есть?
> { жопа, пися, жопа, пися, жопа} -> { жопа => { жопа, жопа, жопа}, пися => { пися, пися } }
Спасибо, с этого надо было и начинать!
Господа, разъяснит кто-нибудь, как все-таки проводить интеграционные тесты? не надо затестить слой Бизнес Логики. На примере возьмем 2 функции: добавление пользователя и просмотр списка пользователей.
Я делаю тест Add(), в нем формирую сущность юзера (корректную, валидацию запилил уже юнит-тестами) и передаю в существующий слой Data Access Layer (Сейчас это у меня фейк, построенный на коллекции).
Так вот, потом я должен вызвать метод GetAll() или GetById(), чтобы проверить наличие юзера в базе и проверить его идентичность с тем, которого добавил или еще что-то?
У меня сейчас в классе создание объектов логик идет через обращение к свойству Специального Класса, в котором оно реализовано как синглтон. Т.е. в разных тестах я по сути буду работать с одним и тем же классом и с одной и той же коллекцией в ДАЛ слое.
Тут и начинаются непонятки.
1) Часть тестов валилась пока не запилил метод Cleanup(), который после каждого теста удаляет из коллекции все элементы. Но при тесте другого класса логики 1 тест валится при клинапе, а другой наоборот без него.
2) Один ментор мне сказал, что обращение к статик свойству через класс, это норма. Другой ментор сказал, что я тогда начинаю от него зависеть и надо вообще нарямую в тестовом классе создавать объекты и БЛ, и ДАЛ.
Правильно ли я начал вообще, и как лучше? Или почитать дадите где-нибудь, а то все размыто описывают или на MVC примеры приводят. У меня пока обычная 3х-слойка.
Заранее благодарю.
Я не он, но думаю
public class TvoyaKnopka {
public NuzhniyClass {get; set;} =
DrugayaKnopka.ExemplyarNuzhnogoClassa;
...
}
В полях/свойствах своей кнопке ссылаешься на поля, которые содержат нужные классы в другой кнопке, если они, конечно, не private.
интеграционный тест - это ты сначала делаешь POST в контроллер на добавление юзеров, а потом в GET его наблюдаешь. создавай хоть напрямую, хоть на кривую. если у тебя валятся юнит-тесты от каждого чиха, то ты что-то делаешь не так
Чувак, у меня обычная трехслойка. Никаких контроллеров и запросов у меня нет и в душе не ебу пока, что это.
Валились не юнит, а другие интеграционные. Оказалось, когда я их разом запускаю, добавление напрмер происходит в одну статик коллекцию в фейковом ДАЛе и юзеры не проходили проверку по уникальности.
Теперь думаю, создавать ли каждый раз нового юзера с другими параметрами, или после каждого теста, удалять всех, чтобы одного и того же можно было добавлять.
>И завязывай с линк синтаксисом, сейчас все методами расширения пишут.
Хорошо учту. А линкю потому что требование лабораторной
>трехслойка
обращаешься в ту часть приложения, что у тебя вывернута наружу. контроллер, сервис или хуй пойми что у тебя
>У тебя деньги есть?
Господи, какие же русские пидорасы.
>английский форум типо stackoverflow
- Ребята, вот такая проблема есть, помогите пожалуйста
- Да конечно fam, вот тебе решение, вот тебе совет, удачи в твоих начинаниях buddy:3
>русский форум
- Ребята, вот такая проблема есть, помогите пожалуйста
- ДЕНЬГИ ЕСТЬ А??? А ЕСЛИ НАЙДУ????? СОБАКА ТЫ КУДА ЛЕЗЕШЬ БЛЯДЬ ТУТ ВСЕ ЗАБИТО А НУ БЫСТРО БЛЯДЬ БРОСИЛ ВСЕМ ЭТИМ ЗАНИМАТЬСЯ ТЫ ЧЕ СУКА НА МОЮ РАБОТУ ПОЗЫРИЛСЯ МРАЗЬ Я ТЕБЯ БЛЯДЬ ЩАС ПРИКОНЧУ ГОВОРИ АДРЕС СЫН СОБАКИ
Проходил мимо, хотел помочь, но с таким отношением точно нет. Удачи.
Нет, я начнающй трейдор, и пытаюсь понять сколько нужно готовить деняк. Сам ебашу фронтенд для своих нужд на юните енжине, но думаю а не сделать ли норм сервак. 1 биток я навреное не против заплатить, как только появится лишний, больше хз, не могу себе повзолить. В идеале найти человека которому трейдинг самому интересен, так как у меня есть еще и бесценные знания, мы можем надолго скопроперироваться. Я не пидор если что.
я половины слов не знаю, но выглядит как хуйня, кроме реалтаймных вещей (те тоже хуйня, но главное не попасть на дебила, который наворотит LINQ или схожей тяжелой залупы)
считай как немногим сложные проджект, чем более-менее сносная дипломная работа (мнение нулячего фрилансера)
он медленный. особенно в виде цепочки линка и для большого количества данных. особенно, если есть альтернатива в виде грамотного запроса в базочку
А какие вообще есть живые альтернативы asp.net core? Nancy кто-нибудь тыкал? Понятно, что asp.net - энтерпрайзный стандарт, но для маленьких любительских проектов хотелось бы что-то полегче. Подскажите что-нибудь пж.
что значит полегче?
ServiceStack дает возможность RESTful сервис построить на базе себя, но не сказать, что он прям какой-то легковесный
Полегче - именно что более легковесный и не перегруженный таким количеством нюансов. По аналогии с python: если asp.net это django, то что в дотнете bottle?
хз, не питонист
все нюансы работают неплохо по дефолту из-под коробки асп.нетом. напиши свою логику в контроллерах и заюзай кестрел (это тебе не иис, который и правда целый мир). самый легкий и эффективный старт веб-приложухи на коре
Ясно, понятно
field1;
field2;
Property1;
Property2;
или
field1;
Property1;
field2;
Property2;
В чем принципиальная разница между ними и аттрибутами типа [HTTPPost]
1. - Память для статических данных (классы, методы и т.д.) выделяется также как и для динамических (ссылка в стеке на ячейку в "куче")? Можно ли использовать статический класс без создания объекта? Когда и где выделяется для него память? Если мы используем метод из статического класса, то память выделяется для всего класса или только для метода?
2. - Чем статический класс отличается от структуры, кроме того что класс является ссылочным типом?
если после троелсена полезешь на метанит, то, конечно, рискованно
Сам вкатывающийся в asp.net ньюфаг.
тонкости CLR - эти слишком сложна и нинужна для новичков. нинужна, в большинстве случаев в принципе, и для старичков. но, если будут рассказывать доступно и о насущных вещах, то послушай, хули тут?
Вот я и думаю, хули тут? Но ведь я не профессионал, может это собрание для синьоров, а я припрусь и не пойму ничего?
Ну и меня волнует вопрос, это типа как на плюсах в нете можно памятью управлять? Или там о другом?
ну управление памятью есть какое-никакое в дотнетах, но очень кастрированное, по сравнению с плюсами. есть сверхвырвиглазные способы, но они, наверное, чисто 4fun: https://habr.com/ru/post/423657/
да и в статье написано, о чем речь будет идти:
>Выделение памяти: все стадии этого интереснейшего процесса
>Все фазы работы GC (по 45-50-минутному докладу на фазу. Столько про GC не дадут говорить ни на одной конференции).
>Мы также поговорим про System.IO.Pipelines. Наталья Цвилих, моя коллега, расскажет про этот интерфейс много интересного.
>Я также затрону вопрос CLR MD. В прошлом CLRium я сделал отличную вводную. Теперь — поговорим подробно.
>И многое другое.
ни слова об управлении. а под многим другим, небось, какие-нибудь профилирования, диагностики и что-нибудь этакое поверхностно
Одно дело сделать DLL самому, другое дело, что я не шарю, как сделать DLL из чужого C++ кода, тем более, когда там большое количество зависимостей.
F# это мировое будущее, активнейше развивающийся передовой функциональный язык.
Мало того, что он мультипарадигмальный так ещё и императивный и объектно-ориентированный.
Вот лучший обзор этого всего: https://dungpa.github.io/fsharp-cheatsheet/
Алсо, как и все другие языки программирования - он позволяет ПРОГРАММИРОВАТЬ БЕЗОШИБОЧНОСТЬ, лол.
Что?
Ласт вопрос по этому линку отвечаю.
Вообщем из массивов экземпляров класса, мне вот то что выделил красным, надо сделать из этого отдельный массив.
В ручную создать новый с такими же данными не проканает
.Select(n => n.3) - Селектор в котором ты указываешь куда там идут твои цифры
.ToArray() - Получаешь массив
Я сейчас немного фризы ловлю на них - вроде как суть понимаю, а когда до реализации доходит жидко пукнув обмякаю.
На галере в моем мухосранске на сайте в вопросах при приеме только по языку и по большей части ООП.
относительно важно
хотя бы понимать, зачем оно что-то делает и описать словами. если предложат реализовать, то тут сыглы
Я пососу.
Пишу допустим:
Console.WriteLine($"short:\t{1}\nlooooooooooooong:\t{2}");
И в итоге выходит нихуя не ровно, хотя \t везде есть.
Перекатиться на юнити или годот прошу не советовать.
>восьмибитная игра
>на сишарпе
>жалуется на то, что из среды для программирования не выходит просмотрщик картинок
Ты там совсем ебобо?
Я знаю какие фильтры существуют, но чем они вызываются?
Активатором действий, фабрикой контроллеров?
Что? И как это мне поможет выводить прозрачные спрайты в моей прогге?
Некий анон посоветовал мне такой способ, но он ни разу не работает.
Ты сказал, что проблема в вижуал студии, но при этом, кидаешь код. Ты ебобо вдвойне?
Первая итерация - т - сходятся.
н != а => добавляем а получается студенат и так далее и походу удаляем потом (или не потом) символы. В 7 действий анриал уложиться.
Или я что-то не понял?
https://ulearn.me/Course/BasicProgramming2/Rasstoyanie_Levenshteyna_48a29bee-2f02-42af-ad1f-df15fa48515b
Я в 6 уложился:
1. студент - первая т =
2. судент - у =
3. сдент + о =
4. содент + л =
5. солдент - е =
6. солднт (н - > а) =
солдат
>>78047
Загуглил "редакторское расстояние", в итоге нашёл это:
https://ru.wikipedia.org/wiki/Расстояние_Левенштейна
Цитата:
>Расстояние Левенштейна (редакционное расстояние, дистанция редактирования) —
>минимальное количество операций вставки одного символа,
>удаления одного символа и
>замены одного символа на другой,
>необходимых для превращения одной строки в другую.
То есть, заменять символы - можно, одной операцией.
С заменами вообще в 4 операции получилось, раз уж речь о минимальном количестве операций:
1. студент + (т - > о) =
2. coудент + (y - > л) =
3. солдент + (e - > a) =
4. солдант - н = солдат
>Двач чому тут 7?
сТУдЕНт -> сОЛдАт - 7 букв, 7 шагов. 4 удалить, 3 добавить.
>>77967
В редакторе ты прозрачность и не увидишь. В рантайме прозрачность только к паренту. Если хочешь чтобы твои боксы друг к другу были прозрачны, то отрисовывай их сам в .Paint (событии, а не редакторе) холста, например с помощью DrawImageUnscaled.
В редакторе ты прозрачность и не увидишь. В рантайме прозрачность только к паренту. Если хочешь чтобы твои боксы друг к другу были прозрачны, то отрисовывай их сам в .Paint (событии, а не редакторе) холста, например с помощью DrawImageUnscaled.
Хоспади хоть один адекватный анон. Спасибо, теперь буду знать в какую сторону воевать.
Паттерны MVC знаю, ибо работал с wpf и winforms, умею работать в Visual Studio.
Знаю как заливать и толкать проекты на гит, так же создавать и смержить ветку в мастер.
Знаю основы linq, получал запросы с бд.
Может скоро остановлюсь и начну js учить или entity framework, пока не решил.
Так вот, сам вопрос. Как мне прорваться в ближайшие большие города Красноярск, Новосибирск и найти работу? Хотел бы узнать как принимают на работу, как устроиться, что еще нужно подучить.
Спасибо
Всмысле как? Как и все, отрываешь жопу от дивана и ищешь работу. Пиздуешь по вакансиям и собеседованиям. Единственно советую подучить команды гита, ибо когда я в феврале проходил собеседования для меня стало сюрпризом что я могу форкать и комитить А HR ЭТОМУ УДИВЛЯЕТСЯ! Хотя базовые скилы казалось бы. Видимо на рашкорынке вообще остались только JS дебилы.
Понятно, что нужно стучать в каждую дверь и проситься. Я живу в мухосранске, у меня просто нет вакансий шарписта или .net, я хочу узнать как перебраться в другой город.
>мы тоже умеем использовать гит
Вопрос прямо с собеседования.
"Закомить в отдельную ветку корпоративного битбакета."
я серьезно говорю. У нас тут лес, электрика и все. Софт или сайты никто не делает, максимум их заказывают из братской компании.
Ну вот видишь как мы быстро с тобой разобрались. А в энтэрпрайзе вот так вот, потому-что сейчас везде ДЖИРА и КАНБАН с АГИЛА, а битбакет в эту ебанину встроен.
Это копия, сохраненная 13 мая 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.