Это копия, сохраненная 23 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Вся литература вторым постом
1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c#
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/
2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- http://ideone.com/
- http://csharppad.com/
- http://www.tutorialspoint.com/compile_csharp_online.php
- http://rextester.com/l/csharp_online_compiler
3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# довольно активно развивается, недавно вышел новый компилятор, шестая версия шарпа, и уже активно разработывается седьмая. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ).
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.
6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, ставь сразу VS2015 и при установке выбирай все нужные компоненты.
Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials
7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C#-6
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код этой шапки: http://pastebin.com/cKKXYArs
Прошлый тред тонет здесь: https://2ch.hk/pr/res/707882.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 Async_hronous 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 Async_hronous 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
Да ладно, есть же Kotlin плюс как минимум две бесплатные альтернативы (от intel и oracle) robovm.
Котлин не оч, по крайней мере в текущем состоянии.
- Learning WCF: A Hands-on Guide (Michele Bustamante) - Хорошая книга для новичков с пошаговыми уроками по WCF.
- Programming WCF Services (Juval Lowy) - Тоже неплохая книга, но уже для более опытных веб-разработчиков
- MSDN - Всегда ваш, КЭП.
15. Литература по LINQ
- LINQ in Action (Fabrice Marguerie) - единственная, если не ошибаюсь, книга по LINQ.
16. Литература по Workflow Foundation
- Essential Windows Workflow Foundation (Dharma Shukla)
- Programming Windows Workflow Foundation (K. Scott Allen) - две лучшие книги по WF по мнению Stackoverflow
17. Литература по Windows Forms
- Программирование с использованием Microsoft Windows Forms (Чарльз Петцольд) - старая, неактуальная книга, как и сама WinForms.
- Windows Forms Programming in C# (Chris Sells)
Хех, невидимая рука рынка.
var Com = new Com();
Там много подводных камней? Просто намечается огромный проект, где будет ком на коме и меня это пугает.
да не сказал бы. возможно, однажды тебе покажется, что ты программируешь на плюсах с шарпным синтаксисом
Например, есть отдел с коллекций работников(5 человек) помеченный как virtual
Я перебираю этих работников, к бд идет по одному селекту к каждому работнику(5 селектов) или один селект который берет всех работников в этом отделе, но это уже ж eager loading.
если включен LazyLoading для контекста и нет фильтров для коллекции работников, происходит получение всех связанных Employee для каждого отдела
Техлид умеет только в ком и хочет чтобы весь новый проект на комах был. Странно конечно, лол, но платят дохуя, поэтому я не жалуюсь
Нужно больше инфы
Ее нет.
"ID:56;DATE:25.10.2017;NUMBER:00000094"
чтобы на выходе были 1)значения 2)поля?
Обязательно регулярками? Можно же сплитами, так быстрее будет.
А насколько резко реагировать нужно?
Единственная альтернатива это WinAPI:
FindFirstChangeNotification - https://msdn.microsoft.com/en-us/library/windows/desktop/aa364417(v=vs.85).aspx
ReadDirectoryChangesW - https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85).aspx
> как там с производительностью будет
Да хер его знает, тут 99% что тебе никто не скажет.
Сделай да замерь в профайлере.
Ну это и подразумевалось в том числе. Я имею ввиду без чего-то по типу "if (xuy == 'c')". Если, например, в классе объявлена переменная, отвечающая за хоткей, то каким образом реализовать конструкцию вида "if (xuy == class.hotkey)"
Чем вообще не устраивает try/cache?
Меня вот лично раздражает что исключения нельзя вернуть из таски в виде "особого" результата, как это сделано в RX.
Для одного проекта даже написал специальный класс
Optional<T> {
T result;
Exception error;
}
, но что-то тоже не зашло.
в новом стандарте будет возврат нескольких значений. сейчас можно запилить через out параметры
типа
int calc(int p1, int p2, out int errorcode);
Optional это все-таки немного другое
У таска есть же уже и result и error/exception, ти чиво?
> сейчас можно запилить через out параметры
Подожду ка я новый стандарт
> У таска есть же уже и result и error/exception
Приведи пример с async/await методом
https://github.com/MrRoundRobin/telegram.bot.examples/blob/master/Telegram.Bot.Examples.WebHook/Program.cs
вот экземпл, что нужно куда пихать и прописывать?
PS SSL есть
Никак не пойму, когда исполняется блок finally ?
Из-за него нужно закрывать ресурсы в двух местах ?
MemoryStream M;
try
{
M = GetStreamFromCosmos();
// что-то делаем с ним
M.Close();
}
catch { // нужен для пересоздания исключений }
finally
{
if (M != null) M.Close();
}
Так правильно?
> M.Close();
Внутри try не нужно, код внутри finally вызовется в независимости будет ошибка или нет.
А вообще это можно переписать короче
using (var M = GetStreamFromCosmos()) {
// что-то делаем с ним
}
работает аналогично try/catch/finally
он выполняется всегда.
суть в том что, у тебя в трай/катч может быть ретурн и если освобождение ресусров не обернуто в финали, то её придется писать 2 раза - и в катч и в трай.
что-то типо
try { m = trysomesing(); return true; }
catch { return false; }
finally { m.Close(); }
m.Close() выполнится при вызове ретурн в любом случае
Нет, это работает как try/finally .
Блок catch нужен для пересоздания эксепшена с более высокоуровневым описанием.
>>719958
>>719962
Вот: http://pastebin.com/1kQqmAN8
Правильно?
нашел такое
http://texteditors.org/cgi-bin/wiki.pl?action=browse&diff=1&id=CSharpEditorFamily&diffrevision=1
спасибо, гляну
из finally запрещен
> - http://www.java2s.com/ - Огромная база исходных кодов для изучения разных платформ, в том числе и .NET
сразу нахуй пошел
Лел, я потому и написал, что ее нет, потому что ее нет. Фреймворк написан с эксепшонами, и конструкции языка на них опираются. Конечно можно на тасках вызывать continue, и там чекать результат, но это же ебаные колбэки, я не для этого на решеточке пишу.
Вообще к файлу resx уже прилагается статический ResourceManager с такимже именем как у файла, и у него сразу есть куча автогенереных свойств с именами всех загруженых в него ресурсов.
использование пиздец как сложно:
(Image)MyResFile.MyImage;
Это без особых изъёбов делается? И вообще, какую ИДЕ поставить, чтобы попроще? А то я на сишарпе ещё не программировал.
я бы выбрал VS Code или SharpDevelop
Заплатить тому, кто умеет.
Ну тип получаешь ноды, читаешь контент, заполняешь свои модели. Наверняка у сайта погоды есть апи, так что парсить вообще не нужно.
FileSystemWatcher - и есть обертка вокруг этих функций. Ты фактически ему предлагаешь сделать двойную работу.
AngleSharp
Тебя это ебать не должно.
The HtmlAgilityPack (HAP) is a good comparison target, since it is most used and established since a long time. Obviously AngleSharp is a great replacement for HAP due to the following reasons:
Standardized HTML5 parsing model
Much better error correction / handling
Also parses SVG / MathML elements correctly
Can handle CSS (selectors, rules, ...)
Better performance
https://github.com/AngleSharp/AngleSharp/wiki/Performance
Не еби мозг. Хочешь парсь тем, хочешь тем. Хочешь регулярками.
Форма
Класс в другом потоке, который посылает время от времени сообщения на форму
Т.е. чтобы он висел в памяти как формочка. А все примеры с потоками отсылают к выполнению просто некоего кода в потоке и блокировки. А мне не нужно мой класс блокировать (так как ему шлет сообщения другой класс), мне нужно чтобы он висел в памяти.
>>720668-кун
>719939
Спасибо тебе, добрый анон. Всего тебе наилучшего :3
сам разобрался. вторую форму добавил в класс первой, поэтому и не работало
насколько нормально использовать вызов обработчика событий в таком ключе
public void EventName(Object sender, EventArgs e)
{
if (this.InvokeRequired)
{
Invoke(new Action<Object, EventArgs>(EventName), sender, e);
return;
}
... основной код метода
}
Как я понимаю, данный финт ушами проверяет потокобезопасен ли вызов обработчика и в случае необходимости вызывает его в основном потоке?
Максимум пиздец, BackgroundWorker весь твой. Да и то может не нужен, может у тебя форма то и не будет блокироваться.
>BackgroundWorker весь твой
Что?
>может у тебя форма то и не будет блокироваться
У меня не стоит будет ли блокироваться форма или нет, мне надо чтобы это "жило" в другом потоке.
Мне не нужно получать асинхронно данные. Ты бы разобрался что к чему, прежде чем писать.
>нужно не блокировать формочку
>не нужно получать асинхронно
А ты сегодня умный.
Ты просил в другом потоке, вот оно будет в другом потоке.
Хотя бы с тредами не пердолься, возьми таски. Про background worker так и не смог загуглить?
Отсюда кажется что решаешь проблему, которой нет.
SubStorageAliased & SubStorageDirectly vs
AliasedSubStorage & DirectlySubStorage
Сейчас названия просто охуенны(SubStorage и SubStorage2), но мне чому-то говорят, что я больной ублюдок.
Да и вообще с ведущими словами глобальная проблемс, что они похожие классы не наберешь по первым буквам.
ну вроде бы как названия классов должны заканчиваться общими частями/суффиксами. типа ~Form, ~Message, ~Handler. я за второй вариант
не финт ушами, а даже частовстречаемая конструкция. можно треды сравнивать, лол
Лол, я уже сделал первый вариант, префикс специализации хрен наберешь если забудешь, а суфикс иде подскажет. Вообще в проекте все как попало, в половине мест так, в половине по другому.
Алсо, тут посаны на стеке пишут, что в генрериках проверять тип Т зашквар, но что делать если без этого никак не обойтись? Для разных типов нужен разный код, если для каждого плодить по методу, как советуют, то у них обидно совпадают сигнатуры.
если никак без проверки Т, то тебе дженерики не нужны. либо все сделано как-то сложна
Неделю читаю про многопоточность, кучу примеров просмотрел - нихуя не понимаю, треды, таски, синк авэйт, домены, что блять, нахуя такой зоопарк наплодили хуй пойми. Документация в основе старая, каждый хвалит свою хуету. Пиздец блять.
да, многопоточность сложная штука. Тоже плохо в этом разбираюсь, вот думаю че нить к собеседованию повторить/выучить
Забей. Ты никогда не сможешь предсказать что у тебя спросят. Все эти подготовки с собеседованиям это как по мне хуета полная. Надо уметь делать своё дело, и если собеседующий эффективен, то он сможет это задетектить. Если нет - значит нет. Слив на собесе не всегда вина соискателя.
>>721061
>да, многопоточность сложная штука. Тоже плохо в этом разбираюсь, вот думаю че нить к собеседованию повторить/выу
Многопоточность надо на реальных задачах делать, а не просто дрочить теорию. В большинстве случаев для веб-макак достаточно знать что такое lock и всё. Для клиентсайд и этого не надо.
я просто с многопоточностью совсем не работал. Максимум в WPF async/await простенький ебашил и на этом заканчивалось всё.
Просто вспомнить основные вещи щас хочу:
1)OOP
2)Generics
3)Interfaces&abstract classes
4)Lambda and anonymous method
5)delegates&events
6)nullable
ну а дальше что то поидее по многопоточности. Хз :/
>Многопоточность надо на реальных задачах делать
Когда такая куча возможностей реализации многопоточности, что выбрать?
нихуя у тебя все резво
а типы данных в дотнет? а коллекции? а сравнение? а сборка мусора?
многопоточность - это не та штука, которую надо знать (на стажера тем более) от зубов. хотя бы понимать, что такое гонка потоков, как это (для тебя - в теории) можно избежать, зачем это вообще избегать
>>721083
ну, все реализации подходят для своей ниши задач
В 15 студии запилили лябда выражения в Wathch и Value Expression?
Да это еще в 2015 студии было
вот с LINQ ямало работал. Только простенькие запросы писал. Их форсят на собеседовании?
расскажешь, чем отличаются First от Single (OrDefault), считай, на половину вопросов ответил
http://pastebin.com/frCivZ8P
1) Почему вся запихнута в один большой класс?
2) Нахуя нужен класс MyButtonClass? Нельзя те 4 строчки внутри мэйна написать? Что за аргумент в методе run?
Всё кроме using. Класс называется "MyButtonClass".
Кстати, что значит там : Form?
> не тулят все в один метод)
Ну блядь. Там 4 строчки. При том, что в мейне одна.
ммм...ты, очевидно, дошел до UI-ных элементов и не знаешь, что такое Form? или ты не в курсе про синтаксис наследования?
ну, давай автор книги сочинит большую логику и напишет сотню строчек кода, дабы тебе было хорошо, что в методах не по строчке
>ммм...ты, очевидно, дошел до UI-ных элементов и не знаешь, что такое Form? или ты не в курсе про синтаксис наследования?
да ето так
>...
Ой, это же класс конструктор, не заметил. Но вообще понятненько, типа просто так удобнее. А можно было бы и в мэйн захуярить, просто это нелогично.
если MVC, то 5-6-7. если WebAPI, то, по-моему, выше 2й версии не придцмали
если есть знания дотнета, то посмотреть понятия сессий там всяких, фильтров, бандлов, маршрутизация, DI. ну кароч
а вообще, пункт 13 шапки
>все реализации подходят для своей ниши задач
Можешь по хардкору в двух словах описать "тип -> ниша" чтобы знать куда плыть по первой и выбрать правильную реализацию?
- асинхронные делегаты - делаем операцию с возвратом результата и важно этот результат не проебать и использовать после завершения процесса (не всегда это 100% вписывается вписывалось
- ThreadPool.QueueWorkItem, Thread.Start - выполнение операции в фоне и хуй на неё, пускай себе крутится
- Parallel, PLINQ - обработка коллекций вписывалосьбез обязательного сохранения порядка
- таймеры - цикличное выполнение кода, пока не скажут отбой
- ResetEvent - как по мне отличным примером служит управляемая постановка задач в очередь, выполнение которых происходит где-то сбоку
- BackgroundWorker - попросту говоря - операция с прогресс-баром. либо же операция, ход которой важно отслеживать в родительском объекте
async/await вбирают в себя первые три пункта в подавляющем большинстве случаев
вроде бы ничего не забыл?
рачье, не дописал
не всегда это 100% вписывалось в задачу до появления async/await. однако возможности, которые предоставляют делегаты, нацелены на реализацию некого колбэка опосля завершения работы фоновой задачи
Parallel это TPL? Те таски и иже с ними. Просто пишу сейчас простенькое приложение, которое реализует http реквесты с сетевым устройствам, думаю что выбрать для реализации многопоточности.
> Parallel это TPL?
Parallel это TPL
> которое реализует http реквесты с сетевым устройствам
Parallel.ForEach
или, если есть возможность использовать модные штучки
Task.WaitAll
Спасибо за ответы, если смогу родить свою идею в виде приложения обязательно выставлю ее на всеобщее порицание. Осталось только понять, почему не работает сохранение в гитхаб.
и так всегда, собрался мир вверх-ногами переворачивать, а сраный гитхаб все испортил
Не понимаю как использовать pragma statements.
Нагуглил вопрос на SO(http://stackoverflow.com/questions/19369006) и попробовал в конструктор SQLiteConnection передать "Data Source=Sqlitedb.db;PRAGMA journal_mode=MEMORY" вместо просто "Sqlitedb.db". Получилась БД с дефолтными прагмами и стрёмным именем.
Что я делаю не так? :(
http://stackoverflow.com/questions/19369006/sqlite-pragma-settings-with-sqlite-for-windows-runtime
Вот нормальная ссылка на вопрос
В MS Visual Studio 2015 Community Edition в открытом проекте исчезло окно конструктора форм. Как его вернуть ?
Поиск выдаёт примерно это
http://www.cyberforum.ru/visual-studio/thread647992.html
но то, что там описано, не помогает.
>Что я делаю не так?
Я ду но. :\
Ты строчку руками набрал? При копипасте из бровзера иногда захватывает левые символы.
спасибо за быстрый ответ, посмотрю завтра. На другом компьютере с тем же проектом конструктор виден.
1) Как проще всего сохранить изменения конфигурации в программе ? Нужно сохранять и использовать буквально одну строку.
OS программа самая простая, один exe-файл без установщиков и прочего/
Подскажите еще, как сделать, чтобы скомпилированная для Windows (xp, 7, 8) программа работала везде без требования установить какие-нибудь библиотеки ?
Можете ли подсказать, как можно прибиндить массив?
Т.е. в C# Visual Studio нельзя сделать windows-программу, которая бы работала на любых компах с Windows >XP, т.е. ей обязательно NET нужен ?
Мне нужно было сделать простенькую программу с формочками на несколько операций, C# посоветовали как самое простое.. Выход только передалать под что-нибудь другое ? В C++ есть аналогичные возможности работы с формами ? Особенно перетаскивание файлов на панель интересует.
У меня c++ не установлено, создать проект и посмотреть не могу. В микрософте написано, что C++ предложат установить, когда я создам новый проект с++, но у меня выдаётся ошибка что компонентов нет и окно создание проекта открывается еще раз. Если в нём нажать далее, снова выдастся эта ошибка.
Просто установи фреймворк, который уже установлен на 7+ виндах, а хп нинужны.
Это же обычный биндинг коллекции с 2 полями.
У меня количество столбцов может быть от 6 до 30.
чет я тупанул
ну, смотри че еще нашел
http://stackoverflow.com/questions/25266821/wpf-datagrid-binding-a-collection-property-to-column
http://stackoverflow.com/questions/24539022/how-to-bind-wpf-datagrid-to-observablecollection
или тебе прям надо object[,] засандалить в грид и ни шагу в сторону?
Подскажите что делать?
Выпiй йаду.
Найди задачу и реши ее, если ты читал тролсена, значит делал примеры и понял их. Если ты нихуя не понял - значит ты дебил.
Пошел нахуй
>делал примеры
Что значит делал примеры? Ты имеешь ввиду задачи? Там нет задач.
Примеры я просто переписывал и прекрасно понимал как все работает.
пошел нахуй
давай разберем по частям, тобою написанное )) ты для себя сначала определишься, где у тебя начинают возникать сложности
знающий товарищ, опиши, какие в этой срани есть подводные камни? что из описанного в туториалах покрывает 95% задач?
У Троелсена примеры даются "исскуственые", придуманные для решения одной надуманной задачи или чтобы показать как работает та или иная функция. Эти примеры редко бывают бывают больше ста строк.
Сложности у меня возникают с написанием больших(относительно примеров Троелсена) программ. Я вообще не имею понятия как писать большую программу. Не знаю как начать писать такую программу. Мне кажется у меня просто не хватает знаний. Что мне еще прочесть или посмотреть, чтобы у меня решать хотя-бы бытовые проблемы(типа программа, заливающая картинки на какой-то ресурс или программа, которая создает раздачу на рутрекере и т.д.)?
асинхронно загружай контент, колбэком в UIControl.Dispatcher.Invoke тыкай загруженное
https://msdn.microsoft.com/en-us/library/ms144196(v=vs.110).aspx
>>722673
>>722674
static void Main() { new GovnoApp().Start(); }
начни с этого. а там все как-то само загрутится, знаешь ли. боишься наговнокодить? ну, тогда хуй ты что напишешь
Пиздец ты мусор, иди крутить гайки если ты даже не понимаешь зачем ты выучил инструмент.
блокируй обращение потоков к ней, чтобы работали по очереди
Ну я нажал на ссылку, она грузится вплоть до 15 секунд, там пикчи по 5 метров бывают, за это время я успею еще 10 раз по другим прожать и все грузятся в один контрол. Сам контрол при загрузке через UriSource при смене Uri сразу начинает что надо грузить, а тут говно какое-то получится.
Бля, ну нахуй ты это принёс? Попробуй в конвертере так сделать.
я вообще нихуя не понял, как должно происходить в идеале? ты клацнул на картинку, она многометровая и долго грузится, в единственный контрол (!) да, ты перешел к другой картинке, клацаешь на нее. и шо блять тут должно произойти?
С чего ты решил, что я не понимаю зачем я выучил инструмент? Откуда вообще взялась эта немотивированная агрессия? Часто тебя в школе одноклассники дразнили? Девушки возбуждаются, когда узнают, что ты всегда знаешь зачем учишь инструменты?
> и шо блять тут должно произойти?
Сразу начинает грузится другая. При сраных колбэках такого не будет.
>я не понимаю зачем я выучил инструмент
>не могу написать полезную программу
>отсутствие технической фантазии
check
>немотивированная агрессия
>путать агрессию с пренебрежением в 2016
check
>попытка психоанализа по посту в интернете
check
Human trash as is.
ну будет, ачо нет?
для этого надо отменить скачивание как минимум, это да
http://stackoverflow.com/questions/10332506/aborting-a-webclient-downloadfileasync-operation
бамп
>или тебе прям надо object[,] засандалить в грид и ни шагу в сторону?
Да вот не знаю как лучше
У меня в основном операции с массивами (вычисления), а результат надо отобразить в гриде
Что-то вроде такого:
http://pastebin.com/C6GHsCf0
1. Почему непредсказуемая работа сборщика мусора является проблемой, и что вообще делает мусорщик? Как я понял, после выхода из конкретного блока, из стека удаляются переменные по значению, а из кучи удаляются ссылки на объекты/ссылочные типы, но сами объекты остаются в куче? Но разве память при этом считается занятой? Какой алгоритм использования памяти в куче у дотнетовских языков? Разве нельзя просто хуярить в область памяти объекты по новой, если на них не ссылается ни одна ссылочная переменная? Или слишком заёбно проверять каждую область памяти, ссылается ли на неё что нибудь или нет, поэтому, шобы не ебать мозги, пишется в чистую область?
2 В чём разница между Finalize() от Object'a и Dispose() из IDisposable()? Они оба очищают только неуправляемые ресурсы? То есть, нет особого смысла реализовывать IDisposable для класса, в котором не используются неуправляемые ресурсы типа указателей? Или кто нибудь из них всё таки очищает данные об объекте в куче?
позязя не шлите в гугол, сам ищу ответы на свои вопросы параллельно, но хотелось бы из первых уст ответы прочесть.
1. разве работа сборщика непредсказуема? шо правда?
> из кучи удаляются ссылки на объекты/ссылочные типы, но сами объекты остаются в куче
определись, удаляется у тебя че-то из кучи, или не удаляется ничего там не удаляется
> Разве нельзя просто хуярить в область памяти объекты по новой, если на них не ссылается ни одна ссылочная переменная?
ну эээ можно. только ты при создании каждого нового объекта будешь проверять, на что там что ссылается, а на что нет? память забивается до того момента, пока можно. дальше вызывается сборщик и, либо выкидываем мусор и впихиваем новый, либо расширяем память
> Какой алгоритм использования памяти в куче у дотнетовских языков?
я, наверное, вопрос не понял. каков алгоритм чего, поиска для очистки сборщика?
2. сам осилишь?
https://msdn.microsoft.com/en-us/library/system.object.finalize(v=vs.110).aspx
>что вообще делает мусорщик
Обходит граф объектов, отмечает те на которые программа ещё где-то ссылается и удаляет неиспользуемые. Так же раскидывает объекты по поколениям и тд.
>из стека удаляются переменные по значению
Из стёка вообще нихуя не удаляется. Тебе, как дотнет макаке это знать не обязательно, но из стёка обычно вообще нихуя не удаляется - при выходе из скопа просто возвращается указатель на прошлый участок стёка. Поэтому стёк считается небезопасным, страдает переполнениями и есть вероятность получить мусор.
>а из кучи удаляются ссылки на объекты/ссылочные типы, но сами объекты остаются в куче
Сука, что у тебя вообще в голове? Объекты в куче как раз таки чистятся полноценно (хотя это уже зависит от конкретного системного рантайма - в целях оптимизации не все зануляют память и так же попадается мусор).
>шобы не ебать мозги, пишется в чистую область?
Ебааааать ты шизик. Ты сам того не понял, но боишься фрагментации памяти не зная о ней, лел. Расслабь булки - в дотнете присутствуют дефрагментирующий алгоритм работы с памятью, который легко и просто настраивается.
>разве работа сборщика непредсказуема?
Наверно он имел ввиду что порядок вызовов Dispose/Finalize неопределен и как в крестах надеться на правильную последовательность освобождени ресурсов нельзя.
Вот соседняя ссылка: https://msdn.microsoft.com/en-us/library/b1yfkh5e(v=vs.110).aspx
Делай так и не парься за память.
>1. разве работа сборщика непредсказуема?
Да. Непредсказуемо когда он будет вызван, сколько времени отработает (и насколько всё подвиснет) и как отработает (сколько памяти освободит).
>>722275
Спасибо, так и сделаю, наверное, фиг с ним с XP. Какую версию NET минимально надо выбрать для Windows 7 ?
с нулл-кондишном
Поясните за плюсы динамической типизации? Вроде как от этого производительность страдает все дела.
Там где боксится любой тип. А тебе, к примеру, нужно передавать куда-то конкретный тип (а не object).
Асинхронное:
"Выполни пожалуйста работу, как закончишь - сообщи мне, а я пока своими делами займусь".
Параллельное:
"Ребят, вот вам работа, я поделил её поровну между вами. Приступайте, я жду."
Блять, твоего объяснения я ждал столетие.
А как через async/await заставить поток сообщать в основной поток свое состояние с возможностью доступа к элементам управления (граф. интерфейс)?
Лол, всегда проигрываю с таких питухов. Как добавили два сахарка в язык так им резко всем понадобилась ассинхроность и все затопило сатьями "как мы все перtписали заново? но с модной фишечкой".
Тащемта в 3.5 нете для ассинхроности уже все есть, тем кто надо просто брал и пользовался.
Пруфит: https://msdn.microsoft.com/ru-ru/library/2e08f6yc(v=vs.90).aspx
Как будто у тебя нет второго потока.
try
{
//Это граф. интерфейс
Busy.IsBusy = true;
using (Client c = new Client())
//Это граф. интерфейс
dataGrid.ItemSource = await c.Method(...);
}
catch (Exception ex)
{
//Это плюёт в поток граф. интерфейса
ErrorMessageBox.Show(ex.Message);
}
finally
{
//Это граф. интерфейс
Busy.IsBusy = false;
}
А где сам асинхронный вызов? Просто я что-то не понял как он вызывает код в основном потоке.
//WCF асинхронный метод
await c.MethodAsync(...);
//или через Task (void)
await Task.Factory.StartNew(() => { /РАБОТА/ });
//с результатом выполнения
int result = await Task<int>.Factory.StartNew(() => { return 1;});
Эта строка объявления выполняет три функции. Во-первых, объявляется переменная myinfo, относящаяся к типу класса InfoUser. Сама эта переменная не является объектом, а лишь переменной, которая может ссылаться на объект. Во-вторых, создается конкретная, физическая, копия объекта. Это делается с помощью оператора new. И наконец, переменной myinfo присваивается ссылка на данный объект. Таким образом, после выполнения анализируемой строки объявленная переменная myinfo ссылается на объект типа InfoUser.
Оператор new динамически (т.е. во время выполнения) распределяет память для объекта и возвращает ссылку на него, которая затем сохраняется в переменной. Следовательно, в C# для объектов всех классов должна быть динамически распределена память.
> Во-вторых, создается конкретная, физическая, копия объекта. Это делается с помощью оператора new.
разве?
Нашёл в сети решение, в котором предлагается назначить серверному именованному каналу PipeSecurity, содержащий один или более PipeAccessRule. После применения этого подхода серверное приложение падает с исключением System.UnauthorizedAccessException. Подскажите, как по именованному каналу осуществить подключение к службе клиентского приложения, которое запущено без прав админа? Делаю так:
Windows Service:
http://pastebin.com/B1QvFcVU
Клиент:
http://pastebin.com/g6a3CPPH
Пробовал также в коде службы WindowsIdentity.GetCurrent().Name менять на "Everyone", но в этом случае исключение System.Security.Principal.IdentityNotMappedException.
Пробовал передать в PipeAccessRule вместо первого параметра выражение new SecurityIdentifier(WellKnownSidType.WorldSid, null)
Да и остальные способы из гугла пробовал, поэтому сращиваю вашего совета.
Потому что когда у тебя появится баг связанный с контролом тебе прийдеться лазить по всему проекту выискивая места где ты этот контрол дергаешь, вместо того чтобы открыть один класс и посмотреть.
Но ведь студия показывает, где я эту ссылку использую. И вообще, как правильно тогда подобную функциональность реализовывать?
welcome to SOLID. UI должен оставаться UIем, любой другой пиздокласс не должен знать подробности реализации (структуру) формы, даже если взаимодействует с ней как-то напрямую
>>723801
что тебе конкретно надо? можно использовать принцип, заложенный в связывании (binding). один объект (UI) сигнализирует какому-то другому (ViewModel) об изменении состояния чего-то. либо через наблюдателя.
> что тебе конкретно надо?
Чтение/изменение свойств контрола окна из другого класса. Как правильнее такое реализовать?
WPF и MVVM
Ты бы лучше скинул "как дебажить .net приложения в VS Code".
Там (после опыта использования обычной студии) вообще не понятно как запустить в дебаге.
>We support debugging of C# apps cross-platform via Mono
>VS Code Mono debugging integration comes from the 'Mono Debug' extension on the Visual Studio Marketplace.
>If you want the best possible experience for those projects and development on Windows in general, we recommend you use Visual Studio Community
Ну ты понел, сначала надо немношк поебаться
Понял что я не умею пользоваться дебагером, потому что никогда не работал с большими проектами.
Поясните, пожалуйста
Вот, например, выскакивает меседжбокс или выгружаются записи в гридвью где-то
Как определить где это?
Когда просто брейк нажимаешь оно стопает уже после того как все появилось/загрузилось, в коллстэкэ отображаются только вызовы методов в гуи тредах
Есть еще в интелтрейсе опция, чтобы отображать все методы, которые были вызваны, но тогда оно минут 10 доходит до нужного места и дамп вызовов занимает 600 метров.
Я только в лоб вариант нашел, писать поиск по всему солюшену сообщение в меседжбоксе, находится где это храниться в хмл ресурсах, определение айдишника этого ресурса и потом находишь где он в коде используется и ставишь там брейкпойнт. Тогда в коллстеке еще не пропадают вызовы которые мне нужны.
Найди компонент который сообщение то показывает и смотри как он работает, там же и красные кругляши ставить будешь
Что тебе для этого потребовалось изучить, кроме очевидного IL/MSIL?
Можешь взять очевидный деобфускатор вроде de4dot и какой-нибудь анпакер и крякать все что движется прямо сейчас с ILSpy, без знания MSIL
моя не знать, по светлой мне наоборот менее болезненно глазами пробегать
ну, естественно, я сижу не в темноте
Глупая мода.
Сделай обмен через MemoryMappedFiles.
Если не можешь менять тип обмена данных, то хуй его знает, я с Named Pipes никогда не работал.
Уметь разбираться в любом говне, писать алгоритмы, знать язык и основы сраного фреймворка.
как-то слишком обобщенно
Уже неактуально, разобрался.
Как-то можно распарсить имена объектов WFP? Если имя кнопочки такое-то, то делать-то и так далее.
1. создавай словарь <string, object>
2. https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.logicalchildren(v=vs.110).aspx
так, наверное
(collection).Cast(FramewworkElement).Select(e=>e.Name)
Спасибо!
а где ты это, кстати, нашел? на впфах каких-нибудь? я прост не вижу
какой-то агрессивный дятел
ну шо мне, за тебя цвета извлекать?
http://www.colorcombos.com/colors/E67609
http://www.colorcombos.com/colors/E76C23
http://www.colorcombos.com/colors/B94600
хуй его.. но функционалки набирают обороты это однозначно (у нас, к примеру, в конторе банке типочки целую систему нахуярили на эрланге, все пользуются и продают даже). Я решил все-таки подрочить книженцию одну по F#.. посмотрим что выйдет
Премного обязан, чувак
у меня, когда шаурма не зашла, такое же
ифы
Пару тредов назад я задал вопрос по
а именно, зачем такое надо:
http://pastebin.com/PRJAgmbs
Так как я нуб, то и вопрос задал не правильный, меня на самом деле интересовало КАК такое возможно.
Я спросил как это гуглить и вообще как это работает.
Искал довольно долго, но оказалось что все очень просто - polygon переменная ссылочного типа, она содержит ссылку на объект. Я вначале это пропустил.
Теперь, когда я понял этот прикол досканально, изучение пойдет гораздо бодрее!
Спасибо всем тогда мне ответившим, вы мне реально помогли! Спасибо анон!
Ну плис.
Я даже соглашусь что шарп лучший язык эвер.
Только повесьте шапку или банер - шарп лучшее для быстрого заработка денег програмингом или еще что
Я не топлю. Я работаю энтерпрайз макакой.
И меня заебало что половина любого треда состоят из. Посоны почитал. Шилдта как рубить теперь бабки. Посоны какой учебник взять. Посоны я нихуя не понял. Посоны как стать успешной жабамакакой. И так далее.
Ну и заберите их всех себе их себе. Позязя.
Хочу запилить простецкую игрульку на шарпах (для обучения, не для коммерции). Использование для этого WinForms(был опыт по школе) - мазохизм и нахуй надо? Или сразу катиться в Юнити с его скриптами на шарпе и окунаться с головой в неизвестное?
>>728279
Да не, что-то вроде рпг/экономического симулятора на кнопках/пикбоксах с гринданом и дрочем.
> рпг/экономического симулятора
я хз, если это лайт-версия космических рейнджеров без наземных битв и полетов, то можно прикольнуться на WPF. ну а если у тебя стоит на юнити и хочется чисто-конкретно написать что-то этакое, то копай туда
Зависит от уровня экшона. Если нужно перерисовывать игру 30-60 раз в секунду, то таки да, катись в юните или на любую обертку над дх/огл, иначе хватит обычных винформ с их перерисовкой по требованию ирока, но с максимальным ограничением 1-2 кадра в секунду. Короч, последнее подходит для простых пошаговых игрулек.
http://www.ex.ua/72463209
но не знаю, не обмазывался, не заглядывал. но книга лежит с самого начала моего знакомства с сешарпом
Или в мвс 5 все это нахуй выкинуть и юзать model binding, который я пока не пойму никак
применение UoW и model binding зависит от масштабов твоего говнопроекта
если выбирать тут "Repository для каждой сущности или дженерик репозиторий", то конечно Repository<T>
Мне вообще здесь пояснили что репозиторий это устаревшее говно и нахуй не надо.
Ой блин забыл, сейчас он называется EF Core 1.0
Пока RC1 вышел, там точно есть поддержка:
1) Memory
2) MS SQL Server (тестировал на винде)
3) Posterger (тестировал на убунте)
4) Sqlite (тестировал на убунте)
Это, конечно, здорово, но в контексте EF5-6 и MVC5 таки оборачивать DbContext в репозитории и UoW или можно как-то проще?
Просто, DbContext - это уже сам по себе ЮоВ, и в нем есть репозитории, и оборачивать подобное в подобное мне не кажется хорошей идеей, но уровень абстракции, чувствую, какой-то нужен, хотя бы для юнит-тестов или чтобы поменять потом EF можно было на что-то другое
Хотя я ей-богу, не могу представить сценария, в котором будет необходимость последнего
Короче, я запутался немного, разъясните за щеку, пожалуйста
Нужно запилить таймер в формате (Х дней Х часов Х минут)
Можно так сделать через формат? Мануалы читал, но так и не понял как это реализовать.
асинхронные делегаты с коллбэками
и вдогонку, я не уверен, что io операции в тасках будут схуято выполняться последовательно
Уже три таких прочитал. Но нихуя не выходит. Сплошные исключения сыпятся.
ts.ToString("%h hours %m minutes") - что тут не так?
похоже, у этой хуиты проблемы с пробелами. попробуй через string.Format("{0:%h}...", ts)
В этих задачах не программировать нужно уметь, а математику знать. Программирования тут и на базовом уровне аля C# за 2 часа хватит.
Задачи понимаю, не знаю, как написать, весь код в одну систему сложить чтобы работала программа.
Сиськи с супом /pr/ и мы подумаем.
ну ты пробуй, авось что-то получится, а мы подправим, есишо
но товарищ выше прав, черт возьми
Так она не хочет думать, она хочет чтобы за неё подумали мы пока она пососет ашоту за гаражами. Типичная тня короче.
Вы блять серьезно? Это же просто зеленый, который решил развести спермотоксикозников.
на pluralslight
Не вижу твоего клоунского колпака. Зажог бы тред если так редко заходишь.
Прост в начале треда надо задачки вбрасывать уровня спец-олимпиады, хоть обоссать будет что.
Охуенные дженерики, охуенные атрибуты, охуенный LINQ, охуенные ламбада-выражения, охуенное отсутствие заголовочных файлов, охуенное отсутствие секции предварительных объявлений, охуенная возможность писать функции в произвольном порядке, охуенная студия с охуенной подсветкой и охуенной автоиндентацией, охуенная коммьюнити, охуенная библиотека в охуенном стиле охуенного ООП.
Я пишу на шарпе уже 7 лет почти (пиздец как быстро время пролетело, даже на ебаном Delphi я писал всего 6 лет, а кажется будто чуть ли не вечность) и до сих пор тащусь от этого языка. Я его сам выбирал, сравнивал разные языки и шарп как был охуенным, так им и остается.
значца, сделал у нас лид девелопер "решение", позволяющее отвязаться от ссылки на EF в запускаемом веб-проекте путем добавления несложного уровня абстракции и, главное, полным отделением проекта DAL.EF от чего бы то ни было. при этом, дабы естественно, оно все работало, post-build ивентом библиотеки данного проекта вкупе с либами еф копируются в bin веба
на вопрос зачем так, ответ был, как я указал, отсутствие ссылки на еф в главном проекте
на вложенный вопрос нахуя (ссылка есть не просит, дополнительного функционала и неудобств особо не приносит, просто будучи включенной), ответил вотшто: это во-первых круто, мол, отвязываться от конкретных источников данных. также во-вторых сильно уменьшает количество проблем если проект внезапно соскочит на другую орм или (!) на другую субд (не реляционную). ну а -третьих, мол, микрософт так советуют делать, все пошли и я пошел
возникает у меня вдогонку три вопроса к вам человекам:
1 адекватный ли это подход (в целом, включая механизм внедрения библиотек)
2 наличие целого слоя абстракции источника данных - это недостаточный способ отвязать приложения от всего начиная от механизма получения данных, заканчивая субд?
3 разве это не пиздец, если ты вдруг начинаешь переориентировать проект на другой по механизму источник данных? во-первых переход хотя бы от ms к mysql уже создает проблем, не считая замену рсубд<->графы<->досубд
4
а 4 не придумал, да
Не, я слишком нюфаня для такого.
ну серьезно ж, дотнет до 3.5, нф до 5, веб-формы, мвс до 3, впф - это ж все лютый пиздец
Список получается от статического метода, я слишком нюфана чтобы уметь биндить такое.
view model влияет на view, model влияет на view model. не знаю насколько статический метод в твоем случае - разумный выбор, но раз уж так, то пускай будет так
заебись, чотко. только я пишу без использования mvvp тк у меня простенькое приложение и такая монструозность пока ни к чему.
Я вношу предложение, и лучше делать ОПу этого треда, что бы без проблем в шапку добавлять.
можно по фану в мирке еще скооперироваться. а там, глядишь, фидо поднимем
http://pastebin.com/EhBZK61T
Сколько не пытался, не получается прибиндить (MVVM).
Подскажите, как прибиндить её, используя MVVM?
эту команду, помимо всего прочего, нужно всунуть во вью-модел класс, а экземпляр класса сделать DataContext окна (компонента)
>Command="{Binding local:HuiPizda}"
>>730804
>нужно всунуть во вью-модел класс
RelayCommand?
Если в Executed, то ошибка.
Мозг уже кипит...
Исходник прилагаю.
http://rghost.net/7RmRClmsG
а по какому событию у тебя должна вызываться твоя команда? ты её повесил ниначто
Читаешь очередной такой высер и думаешь, то ли сразу скрыть, то ли по тролить?
Пожалуй скрой.
стоит вкатываться в джаву. а отсюда вали к хуям
Кого ты скроешь без айдишника, болезненный?
>а по какому событию у тебя должна вызываться твоя команда? ты её повесил ниначто
В смысле? Сочетание клавиш или что?
>>731084
>соответственно и вешать студия предлагает её на DependencyObject
Не понял. Можно ли поподробнее?
> В смысле? Сочетание клавиш или что?
в какой момент развития вселенной необходимо выполнение команды?
> Не понял. Можно ли поподробнее?
ты говоришь такой своему приложению: вот у меня есть команда, на, короче, забайнди её и запускай когда надо, а по завершению на тебе колбэк. но проблема в том, что приложению непонятно, когда тебе там надо. ты обьявил её в Window.CommandBindings, а остальное тебя не ебёт. связывание происходит со вполне себе конкретной пропертей объекта, либо с триггером какого-либо объекта
Я раньше старался тут всем отвечать и помогать, но сам в итоге нашел работу, лол. Теперь времени почти нет.
но ведь двач - это единственные твои друзья
>связывание происходит со вполне себе конкретной пропертей объекта
В моём случае это свойсво TestCommand, нет?
Вот только я не могу его привязать к Executed.
С простым кликом не было бы проблем.
Если так писать
> foreach (var result in results.Results.Where(r => ...))
Он ведь не будет при каждой итерации запускать выражение? Или нужно отдельную переменную?
Не будет
Не будет, подробнее читай у тролсена в разделе LINQ
> In other words, once a Task has a Status of “Running”, calling Cancel() on the CancellationTokenSource no longer has an effect on the actual Task, it is up to the Action within the Task to respond to the token’s message. Additionally, even though the Task has been “canceled”, it reports a status of “RanToCompletion” as if nothing unusual happened!
Сколько нам открытий чудных он готовит!
Нет конечно.
Все должны отвечать ньюфагам кроме тебя. Какой-то дядя должен прийти и ответить.
У нас тоже самое говорят про "а что если перескачат", ни разу не перескакивали, манагер не разрешит переписывать доменную модель с нуля, это пустая трата человекочасов.
В целом подход норм, но в большинстве случаев достаточно просто ninject сделать и все.
Во-первых, для твоего хелловорлда от тебя никто ничего не требует.
Во-вторых, пейсание без этих паттернов признак говнища только в проектах которые будут расти, ибо иначе получится лапша со вкусом земельки после тёплого летнего дождика. Опять же – не хочешь – пиши как хочешь, всем грубо говоря насрать.
Спасибо, держи снег 1ого мая.
> if(cancellationToken.IsCancellationRequested) cancellationToken.ThrowIfCancellationRequested();
Это единственный легальный способ убивать таск? Везде внутри таска ифы пихать?
интернет лучшего варианта не предложил
А ты как хотел? Тред кикнуть что-ли?
Нормальная практика, в Reactive Extensions тоже самое, только там токен встроен по умолчанию.
А вообще, с жесткой отменой таски слишком много проблем, нужно правильно откатить изменения на каждой стадии.
Проще дать ей закончить и проигнорировать результат.
На самом деле можно спокойно мешать MVVM и заоконный код. За окно смело толкай то, что никогда больше не тронешь. Городить костыли в ViewModel вместо одной строчки за окном - вполне себе говнокод.
>>731426
>>731450
На свежую голову поразбирался ещё.
Привязку можно задать только в объекте DependencyObject.
Поэтому Executed не может получить ICommand из ViewModel.
Как тогда мне скормить ICommand в Executed?
- 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) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
На какой стул первым садится?
в конце темы есть пример кода
немогу понять как у инжектора выбрать процесс целевой. И как настроить длл под фильтр пакетов вида 00 00 00 заменить на 00 00 01 к примеру. анон памаги.
Решили, что в 16 году будем советовать только албахари, а троелсена не будем.
вот у меня есть албахари 5.0 это справочник, забыл - посмотрел, сухая короткая теория. У Троелсена хоть какое никакое применение в обучении
НО... ок спасибо
я про него и говорил
Троелсен мне не понравился. Из него узнал по сути только ADO.NET. Всё остальное какая-то хуйня, очень хуевое изложение. Больше всего понравился John Skeet C# in depth.
Все равно нихера не выходит с заполнением.
Листбокс в хамл
<ListBox x:Name="listBox" Margin="0" FontSize="64" ItemsSource="{Binding Computers, Mode=OneWay}" DisplayMemberPath="Name" MouseDoubleClick="listBox_MouseDoubleClick"/>
http://pastebin.com/virZEfhR код класса.
Что я не так сделал?
>Я так понял у тебя там хоткеи?
Да, хоткеи.
>InputBindings
С его помощью приходится биндить команду минимум в двух местах.
И в случае если источников команды много это будет не очень удобно.
А по поводу этого:
>Как тогда мне скормить ICommand в Executed?
решения нету?
Я хочу сделать так, чтобы весь await async код выполнялся в одном потоке, не в ui приложении. Со всеми плюшками и удобствами.
Мне достаточно для этого реализовать синхрконтекст (как?) или ещё что-то нужно?
Ты имеешь в виду что у тебя будет одна очередь фоновая очередь на выполнения тасок?
Если сможешь это сделать с помощью синх.контекста, отпиши потом как сделал.
Я в свое время смог сделать что-то похожее только с SemaphoreSlim.
У него есть метод "Task WaitAsync()", который удобно использовать в async/await.
В итоге потоки там конечно разные, но не более чем один одновременно-работающий.
Есть вот такой джсон. Цель - получить значение, там где стрелочка. (picrl#1)
Использую Ньютоновский Json.Net
Для проверки (пытаюсь достать значение success) использую такой код и получаю такой результат (picrl #2)
Но когда пытаюсь использовать value[0] вместо value["success"], шлет нахуй, пишет ожидается имя элемента. Как мне получить доступ по индексу? Или узнать какое имя у N-го элемента, чтобы уже использовать имя?
Ну если они в документации могут, то почему я не могу?
https://ulearn.azurewebsites.net/
В этом и проблема твоего жсона.
Надо массив, а у тебя там просто объекты не в массиве. Скинь вообще тот жсон с пика.
Там обращение к массиву, а тебя - не совсем
Что за хуйню я прочитал?
Сформулируй задачу так, чтоб я понял. Ты берешь весь json и обзываешь его value. Потом ты берешь у этого jason корневой элемент success. И разумеется он берется. Но потом ты пишешь какую то хуйню.
Что бы получить то, что sn любовно нарисовал стрелочкой, тебе нужно пройти по всем веткам.
Вот как получить ее:
value["rgDescription"]["цыферки"]["descriptions"][6]["value"] = ""
1. Вместо цыферок, я хочу использовать индекс, потому что нужно пробежаться по всем этим циферкам.
2. Не [6], а ["6"]
> 2. Не [6], а ["6"]
Все что в кавычках считается именем. Если ты впихнешь индекс в кавычки, то будет искать ветку с именем "6", которой там нет. Но .т.к. там просто массив, то нужно ставить именно [6] как индекс.
Так?
Это не работает, если что, но я не могу понять почему. Тип элементов точно JToken, потому что если пытаюсь вывести в textBox без .ToString(), то пишет что нельзя JToken в string неявно
> Так?
Нет, не так. foreach работает только для однотипных коллекций. У тебя в rgDescription условно разные именованные элементы. Сперва получи их набор через Vhildren. Потом уже можешь по ним ходить.
> если пытаюсь вывести в textBox без .ToString(), то пишет что нельзя JToken в string неявно
Самый охуенный способ ухнать тип переменной.
>Ты имеешь в виду что у тебя будет одна очередь фоновая очередь на выполнения тасок?
Да, одна очередь на выполнение всего async кода.
То есть по умолчанию в не UI нет синхронизатион контекста. От чего весь async код отправляется в threadpool. А я хочу сделать синхконтекст как в UI потоке, чтобы все говно исполнялось через очередь.
Кстати читал "Нет никакого потока" https://habrahabr.ru/post/216659/
async/await в C# такие прикольные, это просто коррутины которые вызываются последовательно.
Будет ли это делаться через потоки или IO/прерывания это внутренняя реализация.
Для своих тасок ты можешь написать кастомный TaskScheduler (если это не PCL).
Но если будешь использовать внутри этих тасок вложенные async/await, то там уже меньше контроля.
В все время наебался с PCL (общий код) для Xamarin (Android/iOS/WP) в итоге остановился на SemaphoreSlim
Это самое простое и нет зависимости IO это или какие-то рамдомные методы чужих библиотек.
P.S.
Если кто смог сделать по другому, буду рад услышать.
Его можно юзать из асинк метода? Чтобы не блочило.
А нафига тебе это вообще нужно?
У меня были задачи:
1) сделать загрузку картинок с кэшированием
1.1) загрузки (во временные файлы) были в 3 потока
1.2) модификация дискового кэша (добавление удаление записей) в 1 поток
2) Работа с SQLite базой в 1 потоке, в независимости от того с какого потока она вызывается.
При этом было нужно не держать явно потоки, а пользоваться всеми плюшками стейт-машины async/await
Руководство Microsoft по проектированию архитектуры приложений
>>732577
Вот есть у меня обычный метод string MakeGovno()
Есть async метод нажатия кнопки.
Как мне в этом методе вызывать MakeGovno, чтобы не блокировало вызывающий поток? В данном примере это ui.
Пиздец, чому бы не десериализвать это в нормальные объекты и не ебаться со словарями?
или использовать ссылку на метод (если они оба в одном классе)
public async void ButtonEventHandler(...) {
await Task.Run(MakeGovno);
}
Какими еще словарями?
>десериализвать это в нормальные объекты
Но тогда ведь придётся еще и сам класс-объект этот делать, а это нахуй надо ебаться с таким жсоном большим.
ну разве что если тебе из огромного джейсона нужно полтора проперти
замыканием
1) В новой студии есть генератор классов из JSON "из коробки"
2) http://json2csharp.com
>>732645
пикрил
P.S. Иди уже какую-нибудь книжку по async/await почитай
В чём на первом пике открыт жсон?
рихтер есть в переводе, для общего понимания достаточно
А Рихтер уже ненужен?
Олсо, добавьте это в следующую шапку плз
Спасибо братишка, сотен нефти тебе.
1) В чем прикол использования Equals (вместо ==)?
2) Чем твои InvalidCastException лучше FormatException метода DateTime.Parse?
3) Наверное (надо уточнить) через Select/SelectMany можно сделать это в функциольном/чейнинг стиле.
1) В string без разницы, там он переопределён. В других ссылочных типах производится проверка на то, указывают ли ссылки на один объект в куче
2)Что-то DateTime.Parse мне ничего не бросило, а я просто получил хуйню в результате. Пикрил.
3)Да, я тоже об этом подумал, но по моему помешает var item = new Item(); внутри цикла.
for (int i = 0; i < array.Length; i++)
if (array == array[i + 1])
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(array);
}
else
{
Console.WriteLine(array);
Console.ResetColor();
}
И естественно при такой проверке [i+1] выходит за пределы массива. Как по другому проверить? Или пердолить условие на "проверку проверки"?
Основные 2 мысли которые я хотел донести: не надо if (fieldName == 'yoba') делать, класс у тебя уже есть, имена полей можно взять из него; (int|DateTime|yoba).Parse это конечно здорово и типизированно, но есть Convert.ChangeType
Ещё один нюфаг.
>В чем разница между интерфейсно-ориентированным, объектно-ориентированным и аспектно-ориентированным программированием?
та добавьте вы уже это блять в шапку
Оу жесткий лок. Я правильно понимаю что поток будет заблокирован на время отсутвия заданий в очереди?
Три столпа ООП платина, reference-types vs value-types, GC, как реализовано множественное наследование, если веб-макакой - типы джоинов, путь запроса от клиента до базы и обратно. Возможно, настройка ииса, уметь зайти по рдп.
Не знаю, вдруг ты прочитаешь, но вот как мне и посоветовали, взял Children от rgDescriptions.
Что-то изи какое-то. Хотя у меня на последнюю работу тоже как-то собеседовали так себе.
Какие паттерны работы с базой знаешь, чем гет от поста отличается, что такое индекс бд и какие побочки от него могут быть.
Замедлят вставку, базу в размере разнесёт из очевидных. + Надо следить за индексами: ребилды, дефрагментация, етц.
У меня ощущение будто я в своей провинции макака, а в мегаполисе все умные пиздец, я же ошибаюсь, да?
> Не узнаешь, пока не проверишь. Но на самом деле макаки везде есть.
Ну это правильно, тоже так думаю
> А есть тут такие кто помимо шарпача знают еще один язык?
Я знаю.
> Подумывю вкатиться в мобильную разработку на ведре
Вкатывайся в Xamarin.
Что за второй язык? Ты на нём зарабатываешь или используешь на той же работе(не js, я надеюсь)
Зачем ксамарин? В нём профит если только под ios. В андроиде яву не так уж и сложно осилить.
>>733280
мне сделали предложение на основании собеседования (лол) из шести вопросов
>>733379
тоже фриманов читал для начала. по ходу прочтения мне все больше казалось, что я читаю литературу для аутистов, ибо обьясняют задачи на уточках и пиццах. однако для понимания бОльшей части сложных паттернов это было неплохо
Все равно не поймёшь пока использовать не начнёшь, а для общего понимания можно и на уточках.
>Оу жесткий лок. Я правильно понимаю что поток будет заблокирован на время отсутвия заданий в очереди?
Да.
Бесконечный цикл который ждет пока в очередь что-то не попадет.
Как альтернатива, можно проверять, есть ли в очереди элементы, и если нет, ждать, скажем 100 миллисекунд, и проверять снова.
между ними, вроде бы как, общега ничего и нету
https://habrahabr.ru/post/238737/
Репозиторий представляет сущность как коллекцию в идеале IQueryable
ЮоВ дает возможность в определенный момент времени использовать один источник данных из нескольких местов на самом деле, UoW чутка сложнее
> Что за второй язык?
Java / Kotlin
> В андроиде яву не так уж и сложно осилить.
Java НЕ нужна, из C# гораздо проще вкатится в Kotlin - меньше удивление будет.
В Kotlin есть экстеншен-методами, норм. лямбдами и тд, а скоро и с async/await.
"Краткий обзор Kotlin и сравнение с C#" - https://habrahabr.ru/post/281759/
На последем DotNext его рекомендовали https://www.youtube.com/watch?v=jDrCvq0yo7g
Рассказ о языке с отсылками к C# https://www.youtube.com/watch?v=DQqOCx2UJ10
Я всегда был за более распространенные технологии. Сейчас хайп вокруг котлин пройдет и все про него забудут. А если придется где-то подработать, то там по-любому будет Ява. Пока котлин не толкает гугол, он не нужен. Да и уж лучше бы гугол Свифт выбрал вместо Явы и был бы единый язык для мобильных платформ, но это мечты.
Да и подозреваю толкали его джетбрэйнз.
Есть курсы от ITVDN
-
Нет никаких идей абсолютно, чего покодить? Могу в объектно ориентированное. Идей нет никаких. Где можно почитать про функционал и не ограничиваться говном всяким, типа калькулятооов. Хочу кодить сильно. ЧТО БЫ НАПИСАТЬ, АНОНЫ?
-
И что нужно знать для трудоустройства на должность С# прогера?
Я уже как пару недель пытаюсь написать плоттер/логгер на C#+WPF, чтобы он получал по сериалпорту, сохранял ее и отображал. Оче удобно для самоделок на AVR/STM32. Есть дохуя идей как его потом улучшить, начиная от прикручивания модбаса до создания на его основе центрального сервера с отдельным клиентом. И на каждом участке приходится осваивать что-то новое, постоянно искать инфу что и как лучше сделать.
Так же поскроль тред, такой вопрос уже задавался минимум 2 раза.
>>728399
>>732688
> Есть курсы от ITVDN
Говно. Не понимаю, как это может помочь ньюфагам. Слишком много информации, ньюфагам и половины не надо. Еще хуже, если запомнят не ту половину, которая нужна для вкатывания.
> ЧТО БЫ НАПИСАТЬ, АНОНЫ?
Хоть что для себя, чего тебе не хватает. Сложность не важна. Я начинал при вкате писать десктоп-клиент для одного сайта и спустя столько лет до сих пор допиливаю по вечерам под пивас. Всё что я изучал, осваивалось на практике путём добавления фич в мою софтину.
Нет. Я тогда и на дваче не сидел. Поддвачнул бы соседний тред про падение на дно из-за программирования.
> > Есть курсы от ITVDN
> Говно. Не понимаю, как это может помочь ньюфагам. Слишком много информации, ньюфагам и половины не надо. Еще хуже, если запомнят не ту половину, которая нужна для вкатывания.
Схуяли говно? Смотрел их в дополнение к троэлсону. Как один источник не очень, конечно, но в дополнение норм.
программирую на vusual studio 2015 на C++, если это необходимо знать тебе
>>724808
Ну вот в том то и дело что найти это место в солюшене в 50 проектов не так уже просто, когда в стек трейсе никакой инфы нету.
В предыдущем месте тоже будет одна хуйня с одним потоком, в котором один вызов мэинформ и все. Это совсем неинформативно.
Еще вариант есть на скорость нажать брейк, чтобы словить именно тот момент что нужно, если например в грид некоторое время выводятся данные из бд. Это тоже хуйня какая-то, если повезет.
>.h
а в этой хуйне разве не тупо названия функций прописываются. кресты же в .cpp файлах код хранят, или не?
Так. А где тогда я смогу найти алгоритм/формулу, по которой считаются псевдослучайные числа?
обычно да, таки только заголовки. но ничего не запрещает тебе запихать туда реализацию чего угодно. в случае с шаблонами так ее туда запихивать приходится, ну или дописывать #include "your.cpp"
то есть, я могу на крестах тупо в заголовочных файлах код хуярить? и всё работать будет?
Если ты работаешь в IDE (а не блокноте), то я не советую.
Недавно смотрел трейнинг от JetBrains, они там раскалывали про CLion (C++ IDE).
Из их доклада я понял что все IDE заточены под конкретное построение проектов.
Типа что в h нет рабочего кода и по нему не надо каждый раз делать AST, а можно кэшировать.
Если ты начнешь извращаться, то там все кэши поедут и при каждом изменение будет анализироваться весь проект.
В итоге твоя IDE будет сильно тормозить на больших проектах.
http://www.cyberguru.ru/cpp/pseudo-number-generators-with-applied-crypto-page4.html
Нашел формулу-таки. Но не могу понять, как определяются нужные значения. Допустим, пикр, X0=? X1=41 .... и остальные пишет верно. Где достать цифры?
Тебе ж не надо по всем 50 проектам шароебиться, тебе нужно найти кнопку-хуепку которая вызывает твое сообщение и поставить в ней кругляш.
А для этого как раз и надо шароебиться по 50 проектам, если дебагом никак не отловить.
Ебанулся штоле, документашку почитай/спроси пидоров какой модуль отвечает за эту вьюху.
Документашки вменяемой нету, какой модуль у спрашивать стремно, еще нахуй пошлют(пошлют потому что скорее всего сами не знают)
Такие аутисты хуже червей-пидоров, вместо того чтобы быстро найти бажик и поправить они сидят и медленно их ищут, очень медленно. Ты работать устроился или аутировать?
если пошлют из-за подобного вопроса, знач ты устроился на какое-то дно. а раз так то ты сам чирвяк балотный и мы не будем памагать тибе
>where T: a, b
Предполагая что какой то класс может быть наследником и a и b, ох вейт, у нас же сишарп и компилятор за такую хуйню убивает нахуй.
>знач ты устроился на какое-то дно.
Куда взяли, лол. Первая работа, без опыта
>>734502
Я просто думал может есть какая-то специальная штука в таких случаях, о которой я не знаю. Например как, посмотреть последние 50 действий, если в стектрейсе не видно...
Я то в итоге нахожу баги, но с помощью обходных способов(поиск сообщение меседжбокса по всему солюшену или если повезет когда быстро брейк нажму в стектрейсе останется что-то полезное) которые не для всех случаев годятся
>Проиграл с таких методов разработки.
Ну а что еще делать?
Все тут своими делами занимаются, заебывать даже как-то неудобно
>Приведи, пожалуйста, пример класса, который наследуется и от A и от B, чтобы его можно было передать в твой метод.
но нахуя?
>>734549
Забыл, что можно, лол. Но только от одного, а не от двух.
https://msdn.microsoft.com/en-us/library/d5x73970.aspx
Хз, может интерфейсов можно указывать несколько сразу.
Суть ограничения, тип Т должен наследоваться от A, множественного наследования не завезли и потому еще и тип B ограничениях приводит к еггор.
и вообще этот хуй пишет что можно http://metanit.com/sharp/tutorial/3.12.php
>При этом мы можем задать множество ограничений через запятую:
class Bank<T> where T : Client, Account
{}
там 2 интерфейса,
ошибка 'T" является параметр типа, который недопустим в данном контексте.
чо это значит?
лол, туплю пиздец, ушел пойду спать
если все равно выносить методы в интерфейс, тогда отпадает смысл в шаблонах
вопрос нахуя они такие нужны?
IEnumerable<T> видел? Напиши пожалуйста интерфейс для T
На плюсах достаточно написать "сделай так, я лучше тебя знаю" и все, компилятор не выебывается.
двачую. то, что можешь, не значит, что должен. надо делать как принято. все кресты, по сути, на этом принципе держатся.
Кароч, есть у меня SPA сайт на ангуларе.
Выделил такие бандлы:
main - тут у меня солянка из всяких jquery, angular и прочей сторонней еболе
directives - тут ангуляровые директивы
modules - ангуляровые модули
services - ангуляровые сервисы
app - собсно контроллеры.
В чем жопа. Есть у меня скрипт app.js (главный модуль приложения), который валит все приложение, если его закинуть в мандл app. Работает, только, если его расположить в main. Причем, в таком случае, перестает работать на лисобраузере. И я не понимаю почему.
К слову: все внешние скрипты лежат парами: обычный и .min.js вариант. В бандле прописываю обычный.
Поясните, что я делаю не так?
зачем ты отделяешь скрипты по бандлам, если сиравно их используешь вкупе?
"Activation of app <appname> failed with error: This app does not support the contract specified or is not installed. See the Microsoft-Windows-TWinUI/Operational log for additional information.".
В Operational log написано:
"The app <appname> is not registered for the Windows.BackgroundTasks contract or is not installed."
Референс на проект с таском я добавил, declaration в манифесте есть(даже две штуки т.к. два разных таска регаю), метод для регистрации таска я писал глядя в MSDN т.е. всё должно быть ок.
>public void Enqueue(T item) {
>1 int new_tail = Interlocked.Increment (ref _tail);
>2 _array[new_tail] = item;
>3 Interlocked.Increment (ref _size);
>}
Функция вызывается одновременно из различных потоков.
Внимание вопрос!
Может ли случится так, что, один поток вначале исполнит код 1_1,1_2, и процессор переключится на другой поток, после чего, второй поток, исполнит сразу 2_1, 2_2, 2_3, процессор переключится на первый поток, и тот исполнит 1_3.
public abstract class AggregateRoot<TAggregate, TIdentity> : IAggregateRoot<TIdentity>
where TAggregate : AggregateRoot<TAggregate, TIdentity>
where TIdentity : IIdentity
{...}
Так надо lock делать на этот участок кода. Ну это если тебе самому надо это навелосипедить, а если нет - нужно взять потокобезопасную коллекцию и не пердолиться с низкоуровневыми конструкциями.
Так тут нет наследования от себя, ты просто указываешь constraints для type parameters
ничего необычного, как Guid:IComparable<Guid>, только завернутое в абстракцию
>Так надо lock делать на этот участок кода. Ну это если тебе самому надо это навелосипедить, а если нет - нужно взять потокобезопасную коллекцию и не пердолиться с низкоуровневыми конструкциями.
Лок не подходит. Уж оче кретичен перфоманс.
>нужно взять потокобезопасную коллекцию и не пердолиться с низкоуровневыми конструкциями.
Говно собачье в шарпе эта коллекция. И она ниразу не низкоуровневая, лол.
Она постоянно создает новые сегменты, то есть выделяет память, и при большом потоке сообщений просто пиздец в системе произойдет от нее.
В принципе, лечится запихиванием использованных сегментов в потокобезопастный стек.
Он кстати то-же то еще говно.
И в целом получается оче громоздкое решение. Что тот же лок уже лучше будет работать.
А так, я сделаю на коленки оче маленькую оптимизированную очередь.
В принципе, разобрался что к чему и получилось.
С тем ограничением, что макс размер очереди фиксирован размером внутреннего массива.
Разобрался. Я проебался и вместо Windows runtime компонента создал обычную библиотеку классов.
Это копия, сохраненная 23 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.