Это копия, сохраненная 22 апреля 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/680675.html (М)
НОВЫЙ ВАРИАНТ ШАПКИ
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Breaking news
Литература и видеокурсы
По поводу литературы на русском: на некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактуальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то можно гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#" или временами заглядывать в соответвующую ветку на рутрекере.
Автор | Название | Описание | Год |
---|---|---|---|
Литература для ньфагов и стремящихся | |||
The C# Player's Guide | The C# Player's Guide, второе издание | Отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода | 2015 |
Joseph Albahari и Ben Albahari | C# 6.0 in a Nutshell | Огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином | 2015 |
Joseph Albahari и Ben Albahari | C# 6.0 Pocket Reference | Просто выжимка из справочника, можно всегда держать рукой | 2015 |
Andrew Troelsen | C# 6.0 and the .NET 4.6 Framework | 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха | 2015 |
Jay Hilyard и Stephen Teilhet | C# 6.0 Cookbook | Книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом | 2015 |
Более серьёзный материал, для освоивших шарп на более-менее серьёзном уровне | |||
Jon Skeet | C# in Depth | Написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются. | 2013 |
Ben Watson | Writing High Performance .NET Code | Просто охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили. | 2014 |
Jeffrey Richter | CLR via C# | Это классика, это знать надо | 2012 |
Еще более хардкорный материал, если уже совсем читать нечего | |||
Mohammad Rahman | C# Deconstructed | Введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата. Из-за обилия WinDBG листинга, реального материала достаточно мало, но можно найти что-то интересное | 2014 |
Mohammad Rahman | Expert C# 5.0 with .NET 4.5 Framework | Еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода. | 2013 |
Serge Lidin | .NET IL Assembler | ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам | 2014 |
Литература по WPF | |||
Matthew MacDonald | Pro WPF 4.5 in C# | - | 2012 |
Pavel Yosifovich | Windows Presentation Foundation 4.5 Cookbook | - | 2012 |
Литература по ASP.NET | |||
Jon Galloway, Brad Wilson, K. Scott Allen, David Matson | Professional ASP.NET MVC 5 | - | 2014 |
Adam Freeman | Pro ASP.NET MVC 5 Platform | - | 2014 |
William Penberthy | Beginning ASP.NET for Visual Studio 2015 | - | 2016 |
Литература по асинхронности, параллелизму и всему такому | |||
Stephen Cleary | Concurrency in C# Cookbook | Книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции | 2014 |
Eugene Agafonov | Multithreading in C# 5.0 Cookbook | В основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная | 2013 |
Richard Blewett и Andrew Clymer | Pro Asynchronous Programming with .NET | Опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg | 2013 |
Литература не по шарпу, но так или иначе связанная с языком | |||
Jeff W. Murray | C# Game Programming Cookbook for Unity 3D | Разработка на шарпе под Unity | 2014 |
Jeff Heaton | Introduction to Neural Networks for C# | Изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов. | 2008 |
James D. McCaffrey | Machine Learning Using C# Succinctly | Довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно. Распространяется бесплатно | 2015 |
Я не умею читать, что посмотреть?
Что еще нужно знать, чтобы взяли работать за еду?
Ресурсы
Онлайн-компиляторы
FAQ
Q: WinForms или WPF?
A: Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
Q: Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
A: Неправда. C# довольно активно развивается, недавно вышел новый компилятор, шестая версия шарпа, и уже активно разработывается седьмая. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
Q: Какую ИДЕ выбрать?
A: Для Windows самым очевидным вариантом будет Visual Studio Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Q: Пригоден ли С# для мобильной разработки
A: Очень даже, гугли Xamarin. Если нужны инструменты для разработке под мобилы, ставь сразу VS2015 и при установке выбирай все нужные компоненты. Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx
Дополнительные инструменты для разработки на C#
Инструмент | Описание |
---|---|
LINQPad | Cорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных. Для большинства задач хватит бесплатной версии, а платную, в случае чего, можно найти в интернетах |
dnSpy | Бесплатный декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии |
dotPeek | Бесплатный декомпилятор от JetBrains |
scriptcs | Для запуска C# кода как скриптов, возможность использовать как REPL |
Полезные расширения для Visual Studio, которые упрощают прощесс разработки
Инструмент | Описание |
---|---|
ReSharper | Одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов |
Supercharger | Показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним |
Indent Guides | Показывает вертикальные линии на каждом уровне отступов |
Format document on Save | Форматирует код каждый раз при сохранении документа |
Code Alignment | Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях |
Разное
- 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 Asyn_chronous 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 Asyn_chronous 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
Для чего эта исламская параша на ОП-пикче нужна? Чтобы вызвать больше ненависти? Нельзя было что-то нейтральное закинуть?
Sasi huy hachik)
Как картинка может ненависть вызывать, ну серьёзно? Это просто полумесяц с решеткой
Ты ещё иди в /po спроси чому синежёлтая тряпка пукан рвет аки в /ukr триколор.
Этож ёбнутые животные, они как православные бабки.
> (Project Rider), вероятно в ближайшее время станут доступны первые EAP
Вообще-то уже доступна и даже было первое обновление с фиксами.
Хотя на OSX CoreClr еще не починили в багтрекер таску уже завели.
У меня, например, отладка не хочет заводиться на созданных в ВС проектах, нужно будет посмотреть в чем там дело, как время будет. С созданными в самом райдере все нормально. Как только это починят и юниттесты завезут, все невинформовые проекты перетащу в rider и буду понемногу привыкать.
В презентации говори что у них сейчас не поддерживается отладка в проектах скомпилированных
под другую архитектуру чем сам Rider (типа x64 на x86 и наоборот).
Нужно в настройках проекта выбрать нужную архитектуру и все заработает наверное.
Майки в своей VSC сейчас переориентировались на JS и подзабили на ASP.NET,
так что хорошая IDE для osx/linux очень нужна.
Да вроде бы x86/x86
Ниша явы – банки. Шарп – прочий энтерпрайз.
Супер хуйлоад финансовый софт, где важна каждая микросекунда анализа бумажек пишутся на плюсах и более низкоуровенных языках.
Там много говна вского, можешь в сторону реддита посмотреть, например. Или на гитхабе следить.
Можно другой формат.
Курлом хтмл всегда можно стянуть
На самом деле Scala
> кросс
сокращение от "кроссовки"
> плат
сокращение от "платить"/"платеж"
> форменный
имеющий форму
а что, не так?
(гугл\стэковерфлоу не помогли)
вобщем нужно печатать много пдф очень разных объемов
сейчас это делаю через
Process p = new Process();
p.StartInfo = new ProcessStartInfo()
{
Verb = "print",
FileName = file
};
p.Start();
и после каждого файла приходится делать Sleep(); чтоб подождать когда оно отправится
на разных компах и на разных файликах это занимает разное время, а ставить для всех одинаково большой слип - не айс
может можно программно узнать, отправился он или нет? чтобы эти слипы не использовать
или может библиотека какая есть (хотя я все перерыл)
для нее разве не надо указывать количество мс, после которых процесс завершится?
это одна из перегрузок метода
https://msdn.microsoft.com/en-us/library/ty0d8k56(v=vs.110).aspx
If the associated process does not exit by the end of the interval because the request to terminate is denied, false is returned to the calling procedure. You can specify a negative number (Infinite) for milliseconds, and Process.WaitForExit(Int32) will behave the same as the WaitForExit() overload. If you pass 0 (zero) to the method, it returns true only if the process has already exited; otherwise, it immediately returns false
Нет, там просто есть перегрузка, в которой можно указать макс. время ожидания. А по умолчанию оно будет вечно ждать завершения.
А это уже тебе к докам акробата
пробовал вместе с WaitForInputIdle, не получилось.
окно при отправке спрятано, а после сразу отображается.
ищу в доках акробата(да и везде в гугле) как не отображать или закрывать после печати, ничего такого нет..:(
навскидку вот че нашел:
http://stackoverflow.com/questions/24913008/print-pdf-using-c-sharp-without-acrobat
на MSDN вообще принт-хелпер придумали, но я ебал такие велосипеды
чо, разве не ответ на твой вопрос:
http://stackoverflow.com/questions/2483659/interop-type-cannot-be-embedded
?
Неа, не помогло
знаю только https://www.youtube.com/channel/UCJIlkaXVl-6vU3ghQkr51nQ/videos
Вот и не знаю. Онли вызов различных параметров (впоследствии вывод в массив нескольких строк)
Ага, спасибо, разберусь.
Спасибо, сейчас попробую.
Сборку начал, ошибки нету, но проект все также запускается только с длл в папке. Именно это я хочу исключить, ибо ради небольшой утилиты приходится добавлять кучу библиотек.
ну ничосе ты захотел, может тебе еще виртуальной машини .NET для работы приложения не надо?
Ты не умеешь в дотнет значит, дллки это норма.
Энивей можешь в сторону ilmerge/ilrepack посмотреть.
1. атрибуты(Test, TestFixture, SetUp, TestFixtureSetUp, Category ...)
2. категории (Include, Exclude)
3. Всякие Assert'ы
4. NUnit.Framework.TestContext. Что такое, зачем нужно?
5. Наследование TestFixture, порядок выполнения методов
Хуй знает, попробуй ilrepack, я давненько пользуюсь, вроде все норм.
ilrepack /targetplatform:v4 /out:output.exe /parallel "my.exe" "my.dll"
Я его не менял, я ручками собрал. Или ты хочешь msbuild-таксу создать? Если так, то отталкивайся от команды
ilrepack /targetplatform:v4 /out:output.exe /parallel ".\WindowsFormsApplication1.exe" .\Newtonsoft.Json.dll
Почитал. Объясните, пожалуйста, что такое TestContext и зачем он нужен? Из документации понял только то, что это что-то про информацию об окружении.
Вот, хороший пример использования:
https://blogs.msdn.microsoft.com/vstsqualitytools/2006/01/09/using-testcontext-in-unit-tests/
Алгоритмы вроде помню с универа а вот с английским похуже.
Есть ли какие еба примеры с объяснениями более менее больших проектов?
Сейчас пробую изучать и у меня просто не складывается картинка как из этих небольших кусочков в итоге собирается некая йоба машина (приложение). А все примеры уровня вот хеллоуврод а вот калькулятор.
Спасибо, но это не NUnit
А я в asp.net core 1.0 влюбляюсь, как же хорошо сделали, модульно, быстро, эх...
литературу говностатейки на хабре по архитектуре проектов пошурши, а там должно быть более-менее ясно, чего да как. хотя, что тут сказать, небольшие кусочки и составляют любое большое приложение. а их взаимосвязь - это уже уровни логики
Компьютер - тупой, представь стандартное обучение, половина программ - просто правильно заученные функции и прям "дико обладать англецким" нужно только в случае, если придется работать с англоязычными клиентами (А также гораздо большее кол-во документации в англ. языке)
Да вот плохо это или хорошо, но хипсто-смуззи-фронтенд теперь там дефакто стандарт. Пиздец, сегодня пол дня убли конфигурируя эти КОМПИЛЯТОРЫ ФРОНТЕНДА,блять.
Хуй знает, я кроме тайпскрипта ничего больше не использую на фронтенде
Шарпач, поздравь меня. Я не завалил "экзамен" и возможно скоро стану тест автомэйшн инженером. :)
На фшарпе можно, например. Вон Леночка в облаках бигдатами жонглирует, и ты так делай.
Леночка?
а мне однажды сказали "мы вам перезвоним"
ну я радостный ждал день, два
но они перезвонили. правда через год когда мне уже нахуй не надо было
Есть SqlDataSource с SELECT запросом который выдает несколько тысяч записей, есть грид у которого он указан в качестве DataSourceID. В гриде есть разбивка по страницам.
Так вот, что конкретно происходит когда я переключаю страницу? Весь запрос делается заново каждый раз? Потому что страницы ну как-то очень уж долго переключаются, хотя грид завернут в ajax-панель и постбеки не делаются.
Как это оптимизировать, не отказываясь при этом от SqlDataSource?
Ну про обращается он или нет - можно легко проверить. Грохнуть базу перед переключением. Ну или, хотя бы, изменить в ней запись, которая должна отобразиться.
По поводу оптимизации - сделать промежуточный шаг со своим кэшем, который будет считывать/записывать когда тебе нужно.
Короче в чем вопрос - если мой игорь не взлетит - я могу куда-нить в приличное место устроится с таким портфолио? Ангельский так себе, но могу подучить - есть сестра репетитор. Также уверен что могу за краткое время выучить любой фреймворк например как-то выучил ВБА и написал для corel draw плагин, что чертит схему скважины по заданным в табличке размерам.
У тебя все охуенно, кроме возраста, но с такими знаниями тебя вполне могут взять сразу миддлом, например. У меня один знакомый такой же был, только ему 28 было, устроился сразу миддлом, никаких проблем с ним не было, все довольны.
По-умолчанию таки обращается каждый раз.
Но кэш уже реализован, изобретать велосипеды не требуется, и я уже нашел как сделать то что мне нужно.
У датасорса добавляем:
EnableCaching="true"
CacheKeyDependency="MyCacheDependency"
В Page_Load:
if (Cache["MyCacheDependency"] == null)
{
Cache["MyCacheDependency"] = DateTime.Now;
}
После любого сохранения в базу данных, когда нам нужно загружать данные заново, а не из кэша:
Cache["MyCacheDependency"] = DateTime.Now;
ContentGrid.DataBind();
>In the book PC 97 Hardware Design Guide,[7] Microsoft deprecated support for the RS-232 compatible serial port of the original IBM PC design. Today, RS-232 has mostly been replaced in personal computers by USB for local communications. Compared with RS-232, USB is faster, uses lower voltages, and has connectors that are simpler to connect and use. However, USB is limited by standard to no more than 5 meters of cable, thus favoring RS-232 when longer distances are needed. Both standards have software support in popular operating systems.
>no more than 5 meters
Ты мог и не отвечать. + большинство устройств часто использует виртуальный COM порт через USB для передачи данных тк это тупо проще и достаточно.
Всюду по разному, конкретно тебе никто не скажет если не был именно там на собеседовании.
собеседования от телефонного разговора до личной беседы. зависит от расположения, наверное
спрашивают как минимум знание типов, обобщения, коллекции, linq, равенство объектов, кое-чо по сборке мусора или рефлексии. также, многопоточность, асинхронность, события, делегаты, скорее всего затронут тему sql, орм-ок (или ado.net). возможно, от конторы зависит, прокатются по вебу и юнит-тестированию
что касаемо тестовых заданий, у меня их было два с половиной, все из них бвыои расчитаны на довольно длительное выполнение (~неделя хз, нахуя). в моей текущей конторе одно время любили давать получасовое задание во время интервью на знание сериализации/коллекций
> любили давать получасовое задание во время интервью на знание сериализации/коллекций
Что за задание?
есть сериализованная коллекция объектов типа:
A ( string[] Items }
найти и вывести N самых встречающихся наборов айтемов
> А он добавляется во все элементы коллекции, то есть замещает все уже существовавшие ранее элементы и новодобавленный
это, условно говоря, в лист {1,2,3,4} добавляется элемент (5) и после этого лист становится таким: {5,5,5,5,5} ?
или чо?
напишу и тут.
Анончики, помогите. Я начал учить c# и теперь пришло попрактиковаться. Хочу запилить приложение для мониторинга сайта-прощадки для продаж. Суть в том, чтобы приложение присылало пользователю ссылки на новые лоты, если в описаннии есть ключевое слово. На чем это возможно реализовать? Куда смотреть? Помогите, очень прошу.
Да. Верно. Но я уже нашел решение.
У меня в цикле постоянно заполнялся один объект класса такого-же, что и List. То есть создан он был перед началом цикла, и каждую итерацию его поля перезаписывались, после чего он добавлялся в List Add-ом. Я лишь добавил в конец цикла вызов конструктора для добавляемого элемента и все заработало.
Но возникли вопросы: Это что получается, каждый элемент List связан с экземпляром который в этот элемент добавляли?
>>698338
а, я в глаза долблюсь
> На чем это возможно реализовать?
ну, консолька, а на чем-то еще)
можно повыебываться, но зачем?
>>698340
>>698338
у площадки нет api. В общем суть: там много обновлений, продавцы постоянно подымают свои старые обявления - и новые теряются в этом мусоре. На сайте есть счетчик просмотров. Нужно чтобы приложение мониторило все объявления по ключевому слову, и если объявление действительно новое - приходило уведомление.
ну парсер. тут готовых решений мало. скорее всего тебе надо будет заюзывать регулярные выражения и все такое. ну а уведомление какое ты хочешь? от Console.WriteLine до почты и push-notification в телефонъ
Для начала хватит Console.WriteLine. У тебя нет каких-то материалов посмотреть или почитать? И спасибо большое, теперь знаю с какой стороны подойти.
материалов по поводу? таким вот жосским парсингом я не занимался никогда максимум, ручной переход и вытягивание значений со страницы браузерной говноигры, но это такое: getElementByTag/Id, foreach
В любом случае спасибо. Сейчас гуглю парсинг, буду разбираться.
каких библиотек? и как это тебе мешает жить? а еще, какая связь между номерами версий библиотек и номером версии фреймворка?
У меня вот такая ошибка
>The reference assemblies for framework ".NETFramework,Version=v4.5" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend.
Introduction to Neural Networks with C# (Jeff Heaton)
Machine Learning Using C# Succinctly (James D. McCaffrey)
Бля, буду делать лабы всем долбоебам с харкача, если кто-нибудь скинет, где эти книги скачать можно
https://www.syncfusion.com/search?keyword=Machine Learning Using C# Succinctly&filter=website
зарегаться и бесплатно скачать
Понравилась компиляция из ресурсов в шапке, немного переделал под ASP.NET и переписал в Markdown.
Хочу распространить среди студентов, и встал вопрос - как ссылаться на оригинал? Просто указать что "материал взят из pastebin\блабла" ?
Да зачем вообще как-то ссылаться? Бери и распространяй. Если есть желание, можешь даже помочь допилить новую шапку, я по асп особо не добавлял материала, т.к. не приходилось близко с ним работать, так что было бы неплохо: https://github.com/CSharpShapka/2ch.hk-pr-Hats/blob/incoming/CSharpThread.html
ну тут же пишут, ты подтянул библиотеку, которая рассчитана на версию фреймворка ниже
>>698590
Я пока просто вырезал WPF и другие десктоп технологии и убрал сленг.
Добавил вот такую интересную штукенцию: http://edu.cbsystematics.com/ru/education/roadmap/
Ну и конечно http://www.w3schools.com/
Это автор вопроса. Короче. Нашел в чем дело. В описании полей не были указаны свойства. Добавил свойства с пустыми гетерами и сетерами и все заработало. Вопрос. Почему так?
Потому что reflection. Через него вытаскиваются свойства, и с ними происходит работа.
Ну скоров винфон вытеснит ведро и серьезно потеснит айос, нужно успеть вкатиться, пока не набежала толпа индусов.
Ну давай, хуячь круды на своё ведро. Скоро отправишься на парашу истории, к лисперам и фортранистам.
Поздравляю, ты только что IPC.
ну, тебе недостаточно только using прописать, вроде бы, нужно в References к проекту подтянуть библиотеку, в которой лежит неймспейс System.Windows.Controls же
Для учебных целей его достаточно, если нет желания устанавливать отдельную IDE или многогиговую Студию.
В WPF наверно надо тестить комманды твоей вьюмодел. А не клики.
во многом. наверное, из общего - это визуально похожий синтаксис и буква С в названии
А что по проектам? Что пишут на с# и не пишут на крестах и наоборот. Какой более востребован. Еще иногда раньше заходил в треды, в них писали о связках языков или что-то в этом роде. То если если я начну с#, то что дальше и что можешь сказать о крестах в этом плане?
с# это энтерпрайз по большому счету (не считая юнити). плюс, работа приложения .net осуществляется посредством виртуальной машины, поэтому, в отличии от ++, здесь гиганский даунгрейд в производительности.
соответственно, шарп очень востребован в вебе, клауде и прочих модных штуках. необходимость в плюсах знаю только в хорошем геймдеве, но я лах и не знаю больше особенностей применения с++
Всё что требовательно к производительности и памяти - плюсы и просто си.
Остальное, где скорость разработки, поддержка и тд важнее - на шарпе.
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
System.Diagnostics.ProcessStartInfo psi;
const string command = "cmd.exe";
psi = new System.Diagnostics.ProcessStartInfo(command,"WHERE /R D:\\ *.cfg");
System.Diagnostics.Process.Start(psi);
}
}
}
Так а что ты хочешь сделать? Если просто выполнить команду, то почему бы батник не написать?
И зачем ты для этого вызываешь внешнюю команду? Лучше в сторону Directory.GetFiles посмотри
ну естественно. следом за process.start у тебя следует нихуя, а, следовательно, нужно завершать приложение. процесс, управляемый твоей консолью, закрывается вместе с родительским
Если паттерн сложнее - можешь энумерировать и сравнивать по регулярке, например
не особо понял, к чему это приписать в моем случае
>>701194
Я только вкатился в C#, не особо понял, что ты имеешь ввиду.
Я просто не знаю какая у тебя там задача, если тебе нужны какие-то особные файлы, с каким-то шаблоном или типа того, можешь использовать что-то вроде
Directory
.EnumerateFiles("directory", ".", SearchOption.AllDirectories)
.Where(f => ...)
Задача:
Поиск файла в определенной директории (первые папки неизвестны, после определения нужной папки - идет точная последовательность папок, и файл с известным названием, текст в котором будет заменен тем текстом того файла, который будет лежать в одной папке вместе с екзешником программы.
т.е. во всех папках, идущих за каким-то хуем следом за ведомой необходимо найти файл с определенным именем и записать в него какую-то НЁХ, содержащуюся в еще одном известном файле, полный путь к которому также будет известен? так?
сам охуевал по мере написания
>>701316
ну, епсель. в общем, к твоим услугам Directory.GetDirectories, foreach, StreamReader, StreamWriter. ну и парочка if, если совсем не еблан
Уже заюзал cmd и рад. Осталось решить проблему с запретом преждевременного закрытия cmdшки.
Process p = new Process();
p.StartInfo = new ProcessStartInfo()
{
// инициализуешь, как тебе надо
}
p.Start();
p.WaitForExit();
На тот момент я пытался бороться с моментальным закрытием консоли. Помог ключ \k перед WHERE
Ну и по факту получишь то же самое, что мог бы получить используя Directory.GetFiles, непонятно чего ты добивался.
Лел, или пиши все на шарпе, или все на скриптах, ты зачем то смешиваешь неудобства каждой технологии, а потом как-то неудобно
s/EnumerateFiles/EnumerateDirectories/
EnumerateDirectories будет перечислять все директории подряд, SkipWhile будет пропускать директории до тех пор, пока не попадется соотв. условию, First и получит эту директорию. А дальше уже по задаче. А вообще тут много деталей неизвестно: порядок обхода директорий/файлов, идти ли в глубину или нет и все такое.
Думал, вроде как средней сложности задача, а так просто пиздец за пиздецом. Может, есть какой то сборник задач, именно под шарп? Просто выкатился из крестов, решил что то еще попробовать.
Ой, для крестовика освоиться в шарпе достаточно просто, видимо посредственным ты крестовиком был.
Да вот именно, что легко, просто все эти подходы настолько легкие и примитивные, что я удивляюсь, почему я не решал взяться за него раньше
А ведь ты прав. Бывает у меня иногда такое, вроде бы очевидное решение, а я все равно лишнюю сущность добавлю и не замечу. Добра тебе.
Хотя с другой стороны ему, вероятней всего, нужно будет этот итератор дальше использовать, чтобы итерировать после SkipWhile'а. У него вроде сначала ищется директория, потом, после того как она найдена, поиск продолжается.
Без подчеркивания естественно
Моя задача
Небольшой текстовый редактор (в качестве диплома), только с разнообразными фичами, вроде сниппетов, вставки формул и т.д.
Очевидное решение
Строить приложение на базе RichTextBox и FlowDocument
Проблема
Не совсем понимаю, как контейнер FlowDocument разбивает содержимое на страницы. Вернее, в какой момент, например, тот же Word понимает, что пора переходить на новую страницу?
Из чего возникает резонный вопрос: если я хочу на UI отображать большой документ на разных визуальных страницах, то как это лучше всего реализовать? Должны ли быть свои RichTextBox на каждую визуальную страницу, или лучше написать свой собственный контейнер FlowDocument (который, очевидно, будет хуже самого ричбокса) разбивающий содержимое на разные страницы.
Кстати, есть мнение, что RichTextBox не является самым оптимальным элементом управления для таких целей.
Помогите советом, пожалуйста.
Ну, немного сложнее, чем в другую сторону. Можешь попробовать по небольшой книге "C# Precisely" пробежаться, на разницу погядеть.
Ну ты если хочешь чтобы за тебя сделали, то пиши полностью что тебе надо.
>>701442
Да тут похоже поиск ветви в дереве, так что с итератором посложнее будет надеюсь, что нет
а это не одно и то же?
Ну лол, ищешь папку, идешь в другую папку по точному пути, берешь в ней файл по известному имени и заменяешь его содержимое из другого файла, имя которого тебе известно, и все это без задней мысли.
Берешь классы File и Directory в неймспейсе System.IO для поиска/замены и решаешь, у тебя же просто несложный алгоритм.
Ты уверен?
ну тебе уже со всех сторон обсосали, что надо сделать. а ты выебываешься еще
структура по-дефолту в стеке сидит жы. или ты ее пакуешь?
ну и по сабжу-то, вроде бы как одна из перегрузок конструктора string принимает char*. не?
хз, принимает ли string char, но вот char инициализироваться string'ом не хочет. насчёт того - пакую ли я структуру - не очень понимаю термин "паковать". имеешь ввиду, заворачиваю ли её в класс? если это имеется ввиду, то нет. просто думал, что unsafe прихуячить к объявлению структуры лишним не будет
struct Foo{
public string Bar;
}
public unsafe void Method(){
Foo obj = new Foo();
fixed(char* str = &obj.Bar){
// code here
}
}
Как-то так, я полагаю.
& там не нужен.
Не совсем то, что мне нужно, по моему. Я хочу эту структуру передавать через windows'овский SendMessage(), и одним из параметров там будет указатель на структуру, значт мне нужно как то этот указатель получить, для этого мне нужно, шобе все поля структуры были типами значения. Вот щас писал это, и у меня закрались сомнения. Если структура - тип значения, значт, по идее хранится в стеке, который у каждого процесса свой (??? или нет, не знаю), то даже если я передаю другим процессам посредством SendMessage указатель на структуру, созданную в другом процессе, в процессе-приёмнике сообщения полученный указатель нихуя мне не даст? Или можно для межпроцессного взаимодействия использовать передачу указателя на структуру всё таки?
>>701520
Ну то есть заворачивал ли её в какой нибудь класс, т.к. любой класс наследует object?
В P/Invoke всё по-другому работает. Там вполне можно использовать StringBuilder в качестве char*, например. А передаваемые структуры должны быть особым образом помечены атрибутами.
Почитай про эту технологию. Извини, я не достаточно компетентен в этом вопросе.
та какой класс, шош ты тугой такой
https://msdn.microsoft.com/en-us/library/yz2be5wk.aspx
есть у тебя struct A {}
var a = new A(); <-- го в стек
var packedA = (object) a; <-- го из стека в кучу
var ololoA = (A) packedA; <-- из кучи в стек
ConcreteStruct s = new ConcreteStruct();
object o = s; // boxing
ConcreteStruct s2 = (ConcreteStruct)o; // unboxing
мимо из JS
Я с байтами ебался раньше, чем ты узнал, что такое шарп. На плюсовика он пиздит, ты гляди.
Вполне
Это как бы подтверждение что ты не писал на плюсах и не видишь разницы с си, а так же эмперическое подтверждение что твоя мать шлюха :3
Думал ещё пол дня потратить на поиск смищной картинки, но понял что большего сын обоссаной шлюхи, который может только менять тему, тащемта не стоит.
О, ты опять выходишь на связь решая все через жопу.
http://stackoverflow.com/questions/1547476/easiest-way-to-split-a-string-on-newlines-in-net
По другому не получилось, ну что ты
Если если например
i=10;
i=i+1;
Это изменит значение в стеке с 10 на 11 или же создаст новое?
структуры иммутабельны
Положит значения в eval stack, сложит их там и заменит значение переменной stloc'ом, вроде бы. Не эксперт в этих делах. Или ты на уровне процессора имеешь ввиду?
https://social.msdn.microsoft.com/Forums/en-US/0eab9d9a-330d-489e-a29f-10ba65296e87/are-integers-immutable-?forum=csharpgeneral
Вот нашел
> From one perspective, value types can be considered mutable, if you interpret "instance of value type" as the variable itself. From another perspective, value types are immutable, if you interpret the variable as holding the "instance of value type".
> What he is saying is that the literal '5' is immutable. You can't change its value. Nor can you change the value of a string "like this one", or the value of null. They are immutable. Integers (as in 'int a') are mutable, unless they are declared const.
Наведите пример, буду благодарен.
foreach / linq
var files = System.IO.Directory.EnumerateFiles("path\\directory");
foreach(string file in files)
Console.WriteLine(file);
добра :)
либо достаточно реализовать IDisposable для класса и вызывать Dispose() у экземпляра DbContext?
либо же вообще положить хуй на это дело ну, если мы, к примеру, имеем дело с веб-приложение и управляет жизнью объектов какой-нибудь IoC-контейнер Per Request и не заморачиваться?
Я тебе еще на стадии проектирования могу сказать, что ты долбоеб.
Свой кастомный же, в моём случае поставил Ax123. Я в зависимости от содержимого структуры хочу выполнять определённые действия. Ты про то, что код не должен быть кратен 2?
Кажись, начал догадываться в чём проблема - неправильный каст, щас попробую скастовать как надо.
Я про маршалинг. Если ты используешь кастомное сообщение ты не можешь просто передать адрес структуры, так как этот адрес имеет смысл только для процесса которое эту структуру создало. В другом приложении этот адрес будет указывать на рандомный кусок памяти.
Кхм, про маршалинг я нихуя не знаю. Не объяснишь, как тогда через sendMessage() отослать другому процессу структуру? Ну или хотя бы линк на достоверный мануал
Я хуй знает как в сишарпе это делается, я прост омимокрокодил. Попробуй что-то типа такого
[DllImport("user32.dll")]
public static extern int GetClassName(IntPtr hwnd,
[MarshalAs(UnmanagedType.LPStr)] StringBuilder buf,
int nMaxCount);
Ну а в целом что означает маршалинг в данном случае? Типа я сообщаю ОС о том, что по такому то адресу находится такая то структура, и после этого по этому адресу любой процесс при правильном касте может получить значения из этой структуры?
Ты сообщаешь системе что данный аргумент - адрес в адресном пространстве процесса, тоесть виртуальный адрес в виртуальной памяти, а не реальный адрес физической ячейки памяти в которую непосредственно вписана структура. Следовательно он не передается напрямую, а определенным образом изменяется, и другой процесс получает (тоже виртуальный скорее всего) адрес по которому он может прочитать структуру.
Зашёл в тред и он пропал. В пхп теперь сделай так. У них в 1 пост не влазит.
Вот этот код прокатил:
(buttonNextClicked — флаг, детектирующий, нажата ли кнопка "Далее")
while (!buttonNextClicked)
{
Application.DoEvents();
}
но теперь, когда тест только начинается, событие ждёт клика в любом месте формы, а уже потом работает адекватно и всё как надо перекулючает. т.е тест запускается — ждёт один клик, до его все кнопки и прочее даже не выделяются — клик происходит — всё пашет как надо.
Поскажите, как эту хрень убрать? Сымитировать нажатие мыши? Или есть более красивые пути?
Я так понял что у него в событии buttonClick висит флаг buttonNextClicked, который в while потом и передаётся, чтобы задетектить, когда остановить while и внешний цикл for пошёл на второй круг. Может не так понял, хз.
Будем-будем
Второй апдейт к 15 студии пришел, кстати
Хотя идея выпустить Visual Studio 15 после Visual Studio 2015 кажется ебически тупой, это же сколько путаницы будет
Думаю да, но вангую, что она пока еще не очень стабильна. Я сейчас на виртуалку поставлю, погоняю немного, и отпишусь.
Очень буду благодарен. А то обычный комунити не ставится, ошибки ошибочки 2016
Сбой пакета пишет. Попозже скрин залью, сейчас удаляю кой-чего
Лол, я вроде коммьюнити качал
Почему мне никто не рассказал про TypeScript.
Такая-то няшка. Типы, классы, интерфейсы.
Ебал я в рот эту динамическую парашу.
Я кончил.
При чем тут вообще GWT?
Апать cmd.exe?нахуй надо,если есть опенсорсный баш,который проще привинтить к винде.
Так это не только баш, а полноценная убунта, с репозиториями, с apt-get'ом, вот этим всем
Наркоман?
При чем тут GWT?
Мне непривычен жс при разработке фронтэнда. Сегодня на build2016 увидел typescript и охуел.
Мы вставили тебе убунту в винду,чтобы ты мог юзать ось конкурентов в то время,когда сидишь в нашей.
Как что-то плохое, юниксовое окружение - это единственное чего мне не хватает в вин, сам сижу с запущенным в headless режиме виртуалбокса арчем, запущенным в нем ssh и общими папками. Неудобно, но тепримо. А вот нативная имплементация это вообще круто, только вангую, что завезут только в десятку, так что мне придется и дальше сидеть как сижу.
sudo apt-get install kaspersky-full-no-reg-sms-free
Майки про семерку уже почти забыли.вангую через годик-другой поддержку прекратят,как хп.
Так у меня и не семерка, 8.1, но подозреваю, что даже на пред. версию не выпустят, не зря же у них такая агрессивная кампания по переводу всех на десятку.
И как 8.1?Лично мне и на семерке норм.
>>703411
у меня, кстати, была такая же фигня и после определения Equals. конечно, я подозреваю в том, что я где-то лажал, но при этом Assert.IsTrue(obj1.Equals(obj2)) не валил тест
м, я переопределял IEquatable<T>. а Assert юзает object'овский equals. вот и причина подъехала, видимо
Поробуй IEquatablе<T> реализовать кастомно.
>Int мутабельный тип?
Вот и засралась голова. Следующий вопрос наверно будет про лямбды: являются они делегатами или просто встраиваются в место вызова.
Алсо, завидую что в новом шарпе есть модификатор inline для методов.
> Алсо, завидую что в новом шарпе есть модификатор inline для методов.
Вут? Ты про AggressiveInlining?
Ни в чем, если ты можешь обращаться к функции и к делегату непосредственно.
Гугли что такое указатели на функции в C++.
не юнити точно но что, не знаю
>>703994
потому, что ты не можешь передать в метод/класс функцию. тут, конечно, можно обойтись интерфейсами но делегаты имеют поддержку на уровне jit
Так завезли, вот как его релизнут так сразу.
>>704024
Спасибо, тоже на него смотрел, просто в доках везде unity.
По дефолту там ничего не встроено, мне самому штоле писать. Можно autofac еще попробовать конечно, ну или new().
можно. но если ты не хочешь привязываться к определенному поведению? вот например, как реализовать выборку IEnumerable.Where() без делегата?
Я сишарп только начинаю изучать, поэтому не особо понимаю работу выборки через этот интерфейс
да забей на ienumerable. если у тебя есть объект или их коллекция, тебе необходимо произвести над ним операцию отсортировать коллекцию, при этом действие не может быть определено статически. i.e. ты это перекладываешь на рантайм
Да.
В нете 3.5 была только опция MethodImplOptions.NoInlining , а с отстальным как решит оптимизатор/повезет. Теперь можно явно сказать компилеру какие методы нужно упаковывать ногами.
AggressiveInlining все равно не гарантирует, что метод будет заинлайнен
Вставь в каждый ListBoxItem по картинке(Image) привязуй их к картинкам(src,вроде).Типа
<ListBox>
<ListBoxItem>
<Image src="{Binding путь_к_картинке}"/>
</ListBoxItem>
......
</ListBox>
там, по-моему, должен быть проперти ItemsSource, к которому надо биндить, не? иначе, откуда ты знаешь, сколько listboxitem-ов тебе нужно наебенить?
НУ НАКАНЕЦТА! Вот теперь заживем. Как же я ненавижу жабу, но эти дикие прайсы были просто пиздец. Кодил со слезами на ней для ведра.
Такая же хуйня, братишка, такая же хуйня. У нас еще и работы на ксамарине все больше становится за последнее время, может с этой новостью все станет еще лучше
Как сделать так, чтобы отображалась палитра контролов WPFToolkit?
Мб автору надо известное количество картинок в листобокс засунуть.А впрочем,ты прав.
Как пройтись по всем аттрибутам в классе?
http://pastebin.com/VciCcBJE
Есть одна программа с расчетом около 40 показателей, каждый считается по своим рукоблудным формулам, пересекаются разве что промежуточные расчеты(средние всякие, проверка на приемлемость отклонений етс).
Правильно ли будет на каждый показатель организовать свой класс, а пересекающиеся расчеты выделить в один общий. Или можно все в одном хуярить.
[code]
Атрибуты полей:
Attribute[] attrs = Attribute.GetCustomAttributes(element, typeof(CustomAttributeType), true);
Атрибуты типа ( [Header("Main")] в твоем случае) :
CustomAttributeType[] typeAttrs = (CustomAttributeType[])type.GetCustomAttributes(typeof(CustomAttributeType));
[/code]
Лол блядь, в ебаной пиздабе нет тега code.
>CustomAttributeType[] typeAttrs = (CustomAttributeType[])type.GetCustomAttributes(typeof(CustomAttributeType));
Type type.
>Attribute[] attrs = Attribute.GetCustomAttributes(element, typeof(CustomAttributeType), true);
MemberInfo element
Слишком общий вопрос, тут может и так и сяк быть лучше. Но в принципе если у твоих показателей нет необходимости включать в себя какие-то дополнительный данные (т.е. у тебя только формула вычисления и зависимости через аргументы), то класс под каждый показатель заводить нахер не надо.
Спасибо.
А если я потом захочу сделать ввод данных выборочно по одному из показателей или по нескольким из, то все же заранее по классам может разнести?
> много ли времени занимает обработка исключения посредством try-catch блоков
по сравнению с
> написанного так, что исключения просто не могут возникнуть
ну конечно медленней. как минимум на время построения экземпляра исключения
> Нормальная ли практика пихать их везде и всюду
ну а сам как думаешь?)
исключение нужно выбрасывать в действительно исключительной ситуации (кэп, здарова).
ну, а также в случае, если тебе необходимо быстро решительно прервать выполнение большого куска бизнес-логики, при некоей возникшей ситуации. отличным примером этому служит Task-и с подключением CancellationToken. либо же прерывание веб-запросов (также, используя CancellationToken)
>много ли времени
Очень много. Пиздец как много на самом деле.
>Нормальная ли практика пихать их везде и всюду
Нет
>>704730
>>704686
>>704685
да это же просто сочный сон! Очень удобно
Теперь может кто-нибудь подскажет как завести entity, чтоб первый запрос двигался как-то побыстрее? Или может есть альтернативы этого изящества?
> как завести entity, чтоб первый запрос двигался как-то побыстрее
шошо?
> Или может есть альтернативы этого изящества
альтернативы EF? ну NHibernate, например
и вообще https://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#.NET
ну чтоб ответ на первый запрос пришел я жду слишком много для 2016 года (несколько секунд), остальные же летят заметно побыстрее. Разве никто не замечал?
entity полностью устраивает за исключением вышеописанного. Это проблема всех orm или только entity?
> ну чтоб ответ на первый запрос пришел я жду слишком много для 2016 года (несколько секунд), остальные же летят заметно побыстрее. Разве никто не замечал?
Это у тебя что-то не так. Может это просто первый запрос, когда разогревается clr, это вообще нормально.
какое блеать разогревается CLR?
это происходит со всем при первом запросе в программе
в веб-приложении не сильно заметно, потому что оно в памяти постоянно, но если iis выгрузит домен веб-приложения, то при запросе на страничку первый запрос к бд долгий. Остальные летят
>>704827
>>704828
Не получается пройтись по аттрибутам свойств в классе. И по самим свойствам тоже.
http://pastebin.com/m6AirJWJ
Ты какой-то тупой.
Где ты видешь в этом коде сохранение параметров конструктора и перегрузку ToString() ?
class Option : Attribute
{
public Option(string op, int hui)
{
}
}
та даже дело не в этом-то
Получить аттрибут класса... и в моём коде это работает.
Не могу получить аттрибуты свойств в этом классе.
Вот эти: [Option("p1", 12)]
ну так посмотри, откуда ты их вообще пытаешься получить
GetType().GetProperties(BindingFlags.GetProperty|BindingFlags.Public|BindingFlags.Instance).SelectMany(mi=>mi.GetCustomAttributes<YourAttribute>())
И еще добавляй Attribute к названиям классов, который наследуется от System.Attribute. Ну типа OptionAttribute вместо просто Option
учту, спасибо
Вот, кстати, немного о паттерн-матчинге в седьмом шарпе
в статье настолько примитивные примеры, либо я правда не понял, зачем оно все это нужно? ну, скажем:
int? value = 25;
if (value is int x)
{
// use x
}
х вместо value.Value задуман ради экономии времени печатанья 10 символов?
Type? v = x?.y?.z;
if (v.HasValue)
{
var value = v.GetValueOrDefault();
WriteLine(value);
}
а тут вообще нихуя не понятно, мы, зная, что nullable-структура содержит данные, лезем в GetValueOrDefault
сможет новый паттерн матчинг позволить напечатать некоторое:
object op = "hui";
if (op is string kek) {}
?
если нет, то зачем все это)
в статье настолько примитивные примеры, либо я правда не понял, зачем оно все это нужно? ну, скажем:
int? value = 25;
if (value is int x)
{
// use x
}
х вместо value.Value задуман ради экономии времени печатанья 10 символов?
Type? v = x?.y?.z;
if (v.HasValue)
{
var value = v.GetValueOrDefault();
WriteLine(value);
}
а тут вообще нихуя не понятно, мы, зная, что nullable-структура содержит данные, лезем в GetValueOrDefault
сможет новый паттерн матчинг позволить напечатать некоторое:
object op = "hui";
if (op is string kek) {}
?
если нет, то зачем все это)
То же, что и сейчас?
Никому не всрался нахуй этот ксамарин, пока там сплошные костыли на каждую платформу и еще приходится тащить с хэловордом по 20-30 мб говна.
снимаю вопрос, лол
>много ли времени занимает обработка исключения посредством try-catch блоков?
Вот эти
>>704945
>>704947
господа абсолютно правы. Ловля исключений - это исключительно долгий процесс. Местами код может исполняться в десятки раз дольше, лол. Ну тащемта ты сам это можешь проверить на примере парсинга относительно большого файла, например.
Поэтому лучше сводить try catch к минимуму, а лучше вообще не использовать. Проверить несколько условий всё равно быстрее, чем в итоге разбираться с исключением.
>>705420
>Xamarin...
Да срали все на эту парашу, пока она платная или я что-то пропустил за время своего мартыханства на asp.net?.
Если да, то какие задачи обычно стоят перед фрилансером? Что нужно знать для их решения?
>Шарп для фриланса подходит?
Да, работы дохуище.
>Если да, то какие задачи обычно стоят перед фрилансером? Что нужно знать для их решения?
С вероятностью овер 90% это будет ASP.NET.
>>Шарп для фриланса подходит?
>Да, работы дохуище.
>
>>Если да, то какие задачи обычно стоят перед фрилансером? Что нужно знать для их решения?
>С вероятностью овер 90% это будет ASP.NET.
В какой момент можно начинать выполнять простые проекты? Как понять, что ты уже готов?
Нет
> Проверить несколько условий всё равно быстрее
от задачи зависит. охренеешь проверять условия, если в глубину нескольких сервисов ушел
А тогда такой вопрос: много ли времени занимает установка трай-кэтч? Например исключение вылетает только в 1% случаев, будет ли просед по производительности в остальных 99% случаев, когда исключение не вылетает, но я навтыкал неведомо сколько траев?
Все норм будет, никаких проседаний
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
Process search = new Process();
search.StartInfo = new ProcessStartInfo("cmd", "/k WHERE /R D:\\ config.cfg > temp.txt && exit");
search.Start();
search.WaitForExit();
string[] paths = File.ReadAllLines("temp.txt");
Console.WriteLine(paths[1]);
Console.ReadLine();
}
}
}
Не буду, я тебе уже и решение с вызовом внешней утилиты давал, и с методами из system.io.file, но ты все равно вернулся к этой хуйне и даже умудрился сделать все еще хуже. Я пас.
Ха, я в этот раз юзнул тот метод, который мне предложили тут.
Почему уебков? Я ему написал 2 решения, объяснил как делать правильно, проверил чтобы все работало, а он опять свою хуйню лепит.
у тебя дефолтный путь для cmd отличается, скорее всего, от пути запуска твоего высера
в шапке одна книга по machine learning
На 148 страниц
я в руби не шарю
Нигде не видел штоб использовали .net, везде руби-хуюби.
Вот например я буду реализовывать свою ниибически крутую идею. Где мне деплоить свой охуительный прототип? bizspark уже требует зарегестрированную компанию, и что-то вроде heroku в мир дотнета не завезли еще appharbor недоделанный какой-то и то есть поддержка от васяна с прикручиванием mono, который тоже не ахти. Ощущение, что все завязано на мелкомягких, и от них просто так не уйти.
Нахуй оно тебе? Возьми Питон и не еби мозга. Или какую-нибудь Джаву/Скалу для йоба-устойчивости/производительности.
В прошлом году дали триал, уже попользовался им. Не хочется регистрировать новый акк для каждой своей затеи. Пошел искать всевозможные варианты и чет приуныл.
Да там же все копейки стоит, хуле того триала.
Просто опыт не хочется проебывать. 4 года уже с ним работаю. C# такая-то няшка.
Врядли у тебя стартап на год фуллтайма. Попробуешь не менее няшную Скулу (Питон не могу назвать нашей, он просто практичный), расширишь сознание кругозор, никуда твой опыт не проебется.
А ты в чем-то прав. Подумал я, что не стоит акцентироваться на одном языке\платформе.
Сейчас же фп модно? Пойду тогда на closure побылдлокожу.
Добра.
Да, фп, еще мощные системы типов (Scala-Kotlin-Swift очень похожи). Хотя динамика тоже полезна весьма.
лень.+ на тостере годную книгу(Саймон Хайкин-"Нейронные сети.Полный курс") нашел
збс, схоронил
Да ты охуел поц, этот сраный XamarinStudio даже C# 6.0 не поддерживает и тормозит нехуйски.
До сих пор ебусь с ней из-за того что работаю на маке (а там нет VS)
Что же делать, неужели переходить на кресты?
С меня тонны нефти
Из полезного смог нагуглить только "давайте создадим сайт" и "давайте поставим СПП дизайнер"
про сарказм не слышал?
на самом деле, конпелятор все-равно сгенерит код, который представил нам неуважаемый аноний
Я бы еще класс sealed сделал, и в unchecked бы GetGrayscale обернул
Параметры по умолчанию для кого придумали?
>>public Color(byte red, byte green, byte blue, byte alpha = 255)
Нет никакой разницы. Не хочешь использовать синтаксический сахар, не используй.
Cпасибо тебе, друг
Хватит ли мне Parallels чтобы полноценно вкатиться в C# и .NET?
Mono хватает только чтобы синтаксис выучить.
Зачем мне новый, если я в итоге хочу в работу вкатиться, а в тырпрайзе все новое не сразу (далеко не сразу).
Там различия не такие уж серьёзные, если что. Можешь писать так, будто бы на пятом асп сидишь, лол.
Ну нативно с виртуалками костыльно будет, купи себе недорогой ноут, поставь туда винду и пиши на нем, я в свое время так сделал.
Я думаю макмини купить для этого, просто с двумя ноутами буду как дебил. С другой стороны что мне с макбуком делать, если я не смогу на нем даже пейсать не дома? А новый макбук пока не осилю купить.
Какая версия востребована более? Какие доп. знания нужны помимо sql того же? В таком роде.
Это все базовый сисярп
товарищ же спрашивает не на собеседование в контору
>>707396
5-6-скоро 7. не думаю, что ты увидишь что-то более древнее. если да, то мне тебя искренне жаль.
что касается EF - умение в Code First
ну, еще, если ты не собираешься макакокодить, то индексы, триггеры, T/SQL
кроме этого основу по веб-говну почитай, наверное
Те вот эта вся херотень, впринципе, не особо нужна, пока ты не познаешь дзен и не начнешь упираться в особенности языка?
Благодарю. Добра тебе.
А как себя отрекламировать? Не будет же заказчик нанимать мимохуя, который никак себя не проявил?
Что полезного можно написать, чтобы взяли на работу?
В Пистоне кручусь около веб-фреймворков, рест-апи, сетевой хуйни.
жалкому кафиру пригорело
Я в курсе что это.
Что можно использовать в приложении, чтобы быть не совсем хуём с горы? Использованием передовых возможностей С# или элегантным паттерном смогу ублажить работодателя?
Если постараешься. Можешь еще количеством попробовать
Task T = Task.Run(()=>
{
//some code
});
===
и
===
Task T = Task.Run(new Action(()=>
{
}));
===
?
Он самый. Можешь в LINQPad сам такие штуки проверять, например.
D3
>>707882 (OP)
Это копия, сохраненная 22 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.