Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Breaking news: Microsoft анонсировала MSSQL Server для линукса и купила Xamarin, JetBrains готовит IDE для шарпа, ведется активная разработка C# 7.0
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 - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
9. Что почитать? - The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода. - C# 6.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином - C# 6.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой - C# 6.0 and the .NET 4.6 Framework (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха. - C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
10. Более хардкорный материал - C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются. - Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили. - CLR via C# (Jeffrey Richter) - это классика, это знать надо.
11. Хочу еще хардкорней - C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата. - Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода. - .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам
12. Литература по WPF Из более-менее актуального можно выделить пару книг: - Pro WPF 4.5 in C# (Matthew MacDonald) - Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
13. Литература по ASP.NET - Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson) - Pro ASP.NET MVC 5 Platform (Adam Freeman) - Beginning ASP.NET for Visual Studio 2015 (William Penberthy)
14. Литература по асинхронности, параллелизму и всему такому - Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции - Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная - Pro 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
Аноны, нужна помощь. Пишу UWP приложение с использованием Caliburn.Micro. У меня есть Shell, в котором снизу расположен AppBar. Внутри Shell'а отображаются страницы. Суть в том, что мне в этом AppBar'е нужно отображать команды текущей страницы. Команды должны задаваться в самих страницах. Надеюсь понятно объяснил. Вопрос: как это лучше всего реализовать?
>>680684 > Пишу UWP приложение На твой вопрос, к сожалению, я тебе не отвечу, но буду рад если ты ответишь как оно, писать с использованием UWP, много ли подводных камней, как с перфомансом и насколько все там переусложнено.
>>680692 Очень похоже на WPF, но, разумеется, с отличиями. Очень мало материалов и документации кроме майкрософтовских сайтов, разрабатывать одновременно под десктоп и мобилки не так уж и просто. Переусложнения есть, но они в основном касаются XAML: иногда приходится писать слишком много кода для вроде бы простых вещей. С производительностью проблем вообще не замечал, но это может быть из-за моей нетребовательности. Мало библиотек для всякого бойлерплейта. Есть Template10, но он пиздец глючный. Из плюсов: делать красивый UI проще, чем в том же WPF.
>>680709 Спасибо большое, у нас тоже кое-какие вещи решили с UWP написать, вот я сижу, ищу, а материалов почти нет, как ты и сказал. То что UI красивый делать проще это однозначно хорошо, хотя и не моя часть работы, лол.
>>680957 > Supercharger Для удобнейшей карты файла, с возможностью помечать нужные методы/поля, прыгать по недавним методам, показывать границы конструкций с возможностью их сворачивать, мне это удобно.
А у OzCode так вообще альтернатив нет, без неё отладка в крупных проектах превращается в ад.
Я хочу вывести дерево выражений в виде дерева. Мне нужен метод, принимающий подобные лямбды: (х => х х) ((x, y) => x + y x) Как будет выглядеть сигнатура метода, принимающего экспрешн с любым количеством интовых параметров?
Анон, я маленькая обдолбанная девочка, и мне оче нужен код.. Есть 2 массива. В одном ид, в другом стринговые значения. А еще есть файлы, названные в соответствии с ид 1го массива. Нужно сделать ренейм из ид в значения 2го массива. Набросал что нибудь, моя уже не может думать. Моя не спать 32 часа уже..
>>681154 между этими выражениями > (х => х х) > ((x, y) => x + y x) мало чего общего. разве что, при равном количестве параметров будут происходить одинаковое вычисление. и то, тут, опять таки, лямбдой сходу не напишешь. тебе лучше юзать какие-то говностратегии и засовывать в них параметры в любом количестве, получая в итоге результат
>>680684 Каждая страница имплементит интерфейс / наследуется от базового класса с методом/ свойством GetAppBarCommands. В каждой вьюшке реализуешь свои штуки.
Возможно есть более красивый способ. Ни разу не писал UWP
Вопрос вот в чем: Вроде бы список это ссылочный объект. И если я передаю его в метод, он же не копируется, а передаётся ссылка. Тогда почему когда я ссылке присваиваю измененный список (метод FilterList) нихуя не происходит с исходным листом?
хотя если я вызову в этом мтеоде просто filter.Clear(); исходный лист очистится.
>>681298 я уже понял, братан. Конечно, твоё пояснение так себе. Просто ссылочный объект передается по ссылке, а вот указатель на него - по значению. Потому если я присваиваю указателю новую ссылку (делаю filter.ToList()) я меняю саму ссылку, а не объект.
>>681326 Чтобы чистота. В вызывающем методе и присвоишь его, если надо. Тебе может потом нужно будет еще раз отфильтровать оригинальный список с другим фильтром, а этот список уже проебан. Возможно надо будет проверить, а отфильтровалось ли что нибудь, а оригинальный список уже проебан. Лучше вообще абстрагироваться от реализации и писать через IEnumerable, ведь завтра надо будет фильтровать array, а у тебя ToList()
>>681331 не, я просто хотел продолжить мысль, что если нужно за каким-то хуем присвоить новый объект переменной, передавать out или ref в параметры. но, тащемта, в данном контексте, да и вообще с инициализированными коллекциями, это как-то не прокатывает
>>681333 Ну моя то мысль что если сразу писать, как предлагают - то этой ветки обсуждения и не было бы. А ref и out - нинужны и попали в язык как дань и совместимость с winapi
>>681346 Это все костыли, можно было бы вернуть несколько значений или tulpe и проблемы бы не было. Но вот как с перфомансом в таком случае будет хуй знает. Это если в седьмом таки запилят
>>681458 Эмм, не думаю что будут проблемы, если ты конечно в самой прилажке не напишешь "created in vs community and I want money for this app. And yes, I know that this is illegal."
>>681459 Приложение планируется публиковать в стиме, а там работает юриспруденция сша. Но ладно, я таки решил ставить экспресс. Вижу, что комьюнити скорее для любителей, для тех, кто хочет просто попробоваться эту среду.
>>681462 нельзя узнать никаким макаром, понимаешь? Только если к тебе придет товарищ майор. Все студии юзают один msbuild а ему похуй откуда ты его запустил. Хоть из командной строки.
>>681462 > Вижу, что комьюнити скорее для любителей, для тех, кто хочет просто попробоваться эту среду. Все наоборот, комьюнити полноценная студия, а экспресс - огрызок
>>681462 Ой, да забей. У них упор на корпоративных клиентов, которые тратят огромные деньги на их лицензии и всякие подписки. За рандомного хуя никому нет дела. Ну и плюс ко всему, как уже заметили, генерируемые бинарники ничем не отличаются.
>>681529 Студия - большой блокнот по сути. В билд может зашить что-то msbuild онли (прога что превращает текст в машинный код). Ей похуй откуда ты будешь вызывать из вижлы или из командной строки.
Бля, хочу стать шарп разработчиком. Признаю только бумажную литературу на русском, но выше c# 5.0. нету и то криво перевели . Видео уроки вряд ли покроют все области. Как быть? Английский 4-
>>681458 >В комьюнити смущает лицензия. Если я напишу на ней приложение, смогу ли его продать, не башляя процент мелкософту.
А меня смущает, что там лицензия размером с нихуя, а ты даже её самое начало не смог осилить.
ПУНКТ 1: ПРАВА НА УСТАНОВКУ И ИСПОЛЬЗОВАНИЕ. БУКВА "a": Индивидуальная лицензия. > Если вы являетесь физическим лицом, разрабатывающим собственные приложения для продажи или с какой-либо другой целью, вы можете использовать данное программное обеспечение для разработки и тестирования таких приложений.
Никак не могу разобраться с backgroundworker. Создаю обычный тестовый цикл и такой же цикл в воркер_DoWork, они работают с одинаковой скоростью. Почему? Воркер же должен на потоки разбить, нет? Как заставить его это сделать? И каким образом он разбивает на потоки?
>>681955 Пджди, ты хотел чтобы у процессора вырсоло еще ядро, чтобы воркер работал быстрее? Воркер работает в соседнем потоке и не блочит твой основной, например, поток. Все.
>>681625 >А меня смущает, что там лицензия размером с нихуя, а ты даже её самое начало не смог осилить. И тут я понял, что проблема не в двачах. Хамливые быдланы вроде тебя встречабтся по всем IT форумам.
Анон, как защитить десктопное .NET-овское приложение? Любой, даже самый годный, обфускатор если не снимается полностью в 1 клик, то все равно подчищается и вся часть, ответственная за лицензию, крякается. Что же делать? Проверка лицензии на серверах тоже не прокатит, по причине, указанной ранее. Только вообще всю работу перенести на сервер, а программу использовать как клиент? В чем тогда смысл написания программы на c#, если клиент можно написать на чем угодно. Алсо, заодно реквестирую годные обфускаторы, если такие вообще могут быть. Видел как-то иностранный онлайн-обфускатор, который все расхваливали, но проебал.
Когда в packet manager console пишу update-database кидается эксепшн "wtf", хотя такого юзера в бд нет. При этом роль "admin" нормально создается через миграцию.
>>682850 только в теории в курсе, как это говно работает собственно говоря, в чем проблема, если это будет нечитабельный кусок кала? что там такого нужно будет подсмотреть, чтобы ты сподвигнул себя на обфускацию кода?
>>682848 Бля, а если запустить приложение, то там есть пользователь admin/password. А если открыть таблицу с пользователями через server explorer, то там нет.
Вот в этом и вопрос - как защититься? Благо де4дот уже давно сдох и не обновляется, но использовать поддерживаемые им обфускаторы - это уже бесполезно.
>>682912 Есть dnspy, в нем есть отладка, даже если de4dot не потянет обфускатор, то ручками сидеть дебажить можно. Времени больше потратишь, но если постарасешь, то осилишь и так. Вон ты посмотри внутрь Linqpad, там все очень хитро сделано, но и его ломают. Лучше забей на это дело.
>>682605 Даже таким могу себя таким назвать :( Экслем пользовался максимум чтобы посчтитать по формуле последовательность значений чтобы выводилось в табличке
Сорри за нубячий вопрос, про Winform?... Делаю тест Есть checkedlistbox. Как сделать так, чтобы при выставлении(снятии) галочки в конкретной ячейке, в мою коллекцию переменных записывалось соответственно true или false, в зависимости от того какой по счету элемент(ячейка) checkedlistbox нажат.
Интересует, каким событием это сделать и как получить значение конкретной ячейки(true или false).
То есть. По сути мне нужно получить номер ячейки в которую тыкнули и знать поставили или сняли галку
Извиняюсь, за коряво заданный вопрос, надеюсь понятно)
Платиновые вопросы, но в шапке ответа нет. Сильно похоже на С++? А в чём различия? С какой библиотекой проще всего пилить простенькие приложения с GUI/графикой?
>>683720 > Сильно похоже на С++? А в чём различия? Основная в наличии сборщика мусора, не нужно вручную чистить память. Ну и компилируется в байткод, а не сразу в машинный > С какой библиотекой проще всего пилить простенькие приложения с GUI/графикой? Со стандартной, там поддержка этого всего есть
>>684067 ОК спасибо. Надо дальше читать >>684040 Походу, чтобы понять, как работает ебучая формочка, надо книгу прочесть. Ну ок. Алсо, прикололо, насколько код на С# понятнее и приятнее читать.
>>684083 На C. Вычислительные процессы для аэродинамики крыла в близости от земли. Одно время хеллоувордил на C++, хотел вкатиться в НОВЫЕ ВЕЯНИЯ, но как приложить объекты к моим вычислениям, а главное - зачем, так и не понял.
Кто что скажет о .net core , стоит ли уже юзать его? Какие подводные камни. Олсо. ПОсоветуйте стек для пет-проджекта. Думаю взять или кор или ориджинал дот нет + ангуляр 2 + тайп скрипт + какой-то Цсс фреймворк, не знаю какой, бутсрап не хочу (разве что четвертый)
Можно ли сравнивать массивы не по индексу, а по содержанию? Задача стоит такая: 2 папки, в них сборная солянка, но могут быть и одинаковые файлы. Подскажите как проверить?
>>680684 Я слыхал что UWP работает в песочнице и доступа к многим системным api у него нет, так ли это? Думаю написать пару софтин для себя, дело с с# и разработкой под винду не имел. Из того что хочется написать свой аналог флюкса и пасворд сейфер, буду рад любым советам.
Анон, смотри. Есть окно. В нем изображение. Есть NotifyIcon, через его контекстное меню я управляю прозрачностью окна. Оно работает так, пикрилейтед. Как оно должно работать? Окно самого не должно быть видно, должно быть видно только саму картинку. Как мне добиться желаемого результата? Как я помнял, Opacity это совсем не то с чем мне нужно работать.
случайная сажа Анон, смотри. Есть окно. В нем изображение. Есть NotifyIcon, через его контекстное меню я управляю прозрачностью окна. Оно работает так, пикрилейтед. Как оно должно работать? Окно самого не должно быть видно, должно быть видно только саму картинку. Как мне добиться желаемого результата? Как я помнял, Opacity это совсем не то с чем мне нужно работать.
Дотнетаны подскажите как лучше вкатиться в мир .net: 21лвл, работаю 1сником, учусь на заочке, хочу перекатиться в мир .net. Сейчас читаю C# 6.0 in a Nutshell (Joseph Albahari и Ben Albahari) в русском переводе, разбираю примеры. Пробовал немного asp.net mvc и писал калькулятор для windows phone. Хочу прокачать скил до такого уровня с которым возьмут на работу не джуном ибо вакансий джуна в моём миллионнике нет. Интересно asp.net mvc и разработка мобильных приложений. В какую сторону развиваться, что бы быстрее устроиться на работу с зп ~50к в миллионнике?
>>685578 > пробовал написать пару статей в научные журналы и делал дипломный одногруппнику. хочу прокачать скилл до такого уровня, с которым мне сразу дадут професера и четырех кандидатов наук под руководство ибо аспирантов в моем вузе нет
Пацаны, шарп же лучше жабапараши? Да? Я не холивара ради, просто не могу определиться, хочу с вебпараши перекатиться в мир реальных разработок. Помогите советом, так сказать, наставьте на путь истинный.
>>685968 У обоих языков есть свои преимущества и недостатки. Могу сказать только то, что осилив любой из этих языков на достаточном уровне, перекатиться на другой будет очень просто
>>685970 Я много перелапатил в инете и понимаю что они похожи, но сейчас можно сказать что дело не просто в самом языке, а скорее в платформе. Шарп это дотнет, инфраструктура от майкрософт, ну тут все понятно, а джава это разработка оракла хоть есть и свободное решение, это тонны фрейворков, библиотек хоть и на все случаи жизни но все же наверно на одну задачу их штук двадцать и лучше же знать какую стоит использовать, а какую нет. Скажем, так, что я просто не уверен что действительно стоит учить, я люблю кодить, на жс сейчас пописываю свой торрент клиент и не могу определиться. Буду рад советам и любым мнением, опыту.
>>685974 Что тебе больше по душе, то и учи. По количеству вакансий примерное одинаково (у жабы больше), по ЗП тоже, по функционалу похожи, у обоих есть подобия функциональных языков под их вирт. машины, у обоих много либ, синтаксисы похожи. У джавы лучше с кросплафтформенностью, и шарпа с облаками (azure). Смотри сам короче
>>685982 Да я еще со школы на втором шарпе писал, тогда просто выбора не было, и вот все это время шарп и был основным языком для меня, сейчас работаю на шарпе уже 2 года. Взял бы тогда джаву, возможно джава была бы основным.
>>685985 Понятно, но вот из своего опыта, у тебя же явно есть знакомые которые пишут на яве, можешь как-то ты это описать, свои впечатления, если бы предложили работу на джаве, перешел бы? Что на твой взгляд лучше, пусть это будет и субъективное мнение, но возможно поможет мне.
>>685987 Я перехожу туда, где лучше условия и больше платят, а не из-за яызка. Я в свое время и перлистом и рейлсистом работал. Для меня эти языки взаимозаменяемые во многих случаях.
>>686234 Степан Никифорович, нихуя же не понятно. Но ты проебался еще когда структуру данных выбирал для позиции. Если бы был класс/структура с двумя полями - такой хуйни бы не было.
>>686262 Резонно, попробую сделать просто два поля. У меня просто фантазия разыгралась типа не появится ли там третья координата типа слоя, но на самом деле врятли.
Сап, студентота вещает. Знаю шарп на хорошем уровне, нужно сделать простенькие лабы по считыванию и занесению данных в БД. Что для этого лучше поюзать, чтоб и полезно было, как дотнетчику, и без лишней жопоебли? Понимаю, что в общем принципы похожи, но я например LINQ люблю юзать, с ним видел у SQL запросов построение (а не через строку), может, для Оракла нельзя такое делать, не знаю. И вообще SQL Server вроде как на самом базовом уровне требований для дотнетчика. Какой фреймворк лучше поюзать, из того, что слышал, что АДО.НЕТ устаревает, получается с Entity разбираться? Что посоветуете, шарпаны?
>>686943 это как это ты гуглил? имхо, EF является лучшим решением для 95% случаев. но мне вот любопытно, как это ты определил, судя по гуглу, что он перспективнее?
суп программач, хочу написать гуй для анализа данных с контроллера с модными графиками и вообще и столкнулся с выбором с# или python. Первый нравится теоретической легкостью написания интерфейса (мне сказали легко как в делфи), второй набором библиотек на все случаи жизни. Поясните пожалуйста за C# в контексте работы для человека, который знает программирование довольно поверхностно.
Я по-моему какой-то хуйней занимаюсь, но как привести результат linq к DataRowCollection? Мне нужно передать результат запроса в другой класс, до этого я делал через ToArray и приводил к классу наследуемом от DataRow[] перед тем как передать, то есть в том классе был массив DataRow. Но теперь мне понадобилось в том классе удалять по индексу, все бы хорошо, но метода Remove нет, только Delete, а Delete не удаляет! он помечает! В итоге у меня куча кода с не валидным Count. В общем, ладно, вопрос в другом. DataSet.DateTable.Rows имеет тип DataRowCollection, который меня устроит. Хуйня вроде (DataRowCollection)qq.AsEnumerable() не пешает. Как привести к DataRowCollection?
asp.net mvc 5, разбираюсь с dependency injection. Вот я написал метод public void ConfigureServices(IServiceCollection services) в Startup.cs, а как мне теперь в каком-нибудь рандомном классе получить эти services? Скажем, в бизнес-логике я хочу запросить у di-контейнера ILogger, чтобы че-то записать.
>>688720 Вот в контроллере можно хуйнуть HttpContext.GetService<ILogger>() но в этом все равно смысла нет, потому что можно тупо в конструктор этот ILogger передать, а как в модели получить ILogger?
>>688730 Так у тебя получится ServiceLocator, который сейчас считается анти-паттерном.
Зависимости должны резолвится начиная с контроллера и вниз по дереву-зависимостей. И вроде ASP NET CORE должен сам вызывать конструкторы, подставляя в них нужные параметры.
У меня есть 2 текстовых файла в ресурсах. Как мне их открывать/переписывать? Мне нужно именно получать доступ из ресурсов, а не по адресу, потому что в итоге мне нужен экзешник с пакманом, который будет запускаться на другом компе.
Программач, Почему, при том что C# и Java практически одно и тоже, Java ассоциируется с макаками а C# - серьезный язык? Это только в рекламе разница или есть какие-то существенные отличия? Просто мне нубу интересно.
Че то глянул алгоритмы, оказывается не всё так просто, да? Я то думал это обычные типа схемы как-что делать всегда, а это типа очень полезно? Надо учить, да?
Сюда по стиму, последний раз играл в 2014, сейчас зашел и охуел, там все говорят на русском, как отключить сука, в стиме не меняется в настройках нет, это оФФФФицально или тот мужик с луной-хохлушкой таки пропихнул свое говно?
>>682826 Юзаю https://yck1509.github.io/ConfuserEx/ – этого достаточно для того чтобы хомяки не пытались поиметь профит (de4dot курит в сторонке). Ну а хочешь действительно надёжное решение – пиши свой обфускатор и не показывай его никогда никому.
>>691274 Хуету написал и рад. Как и я: param.Equals(property.GetValue(report)). report, сука. T не нужен просто потому что иди нахуй. foreach еще блядь какой-то, да еще и два раза.
Приет всем шарпобогам. Вопрос вот какой. Нужно на работе запилить утилиту, я её логическую часть почти доделал. Пилю ГУИ. Все казалось бы хорошо, но...нужно, чтобы все это работало и на шиндовс ХР и выше, и на линухе. Сам пишу сейчас в студии. Знаю, что есть монодевелоп. Так вот, пробовал поставить моно девелоп: на ХР сама ИДЕшка не пашет, а проекты, сделанные на моноДевелоп пойдут на ХР и линуксе? Всё 32битное.
>>691738 Это тупик. Моно гавно. Нормального гуи который работает везде не сделаешь. Лучше хорошо подумать и отказаться от гуи на линуксе и сделать всё на божественном впф. Либо веб-гуи.
Аноны, подскажите вот чо: делаю сорт оф текстовый редактор (табличный, формально, но не суть). Ну и разумеется есть возможность сохранять созданные таблицы в файл. Вот только вопрос: как открывать эти таблицы так же, как, к примеру, открываются документы microsoft word, excel и т.д.? Имею ввиду, шобы ты мог дабл кликом на рабочем столе открыть файл своего расширения, после чего тут же открывается твоя программа, которая тут же читает файл, который инициировал запуск программы? И что и где нужно добавить в реестре, чтобы в контекстном меню папок в проводнике была возможность создать файл собственного расширения?
Аноны, помогите оптимизировать SQL запрос к простейшей базе из 3х таблиц(схема приклейтед): нужно вывести список департаментов и для каждого из них совокупный бонус, получаемый всеми сотрудниками департамента. Запрос я написал, работает правильно, но препод говорит чтро это нихуя не оптимально и полная хуйня. Вот мой запрос: SELECT d.Name, d.Id, (SELECT SUM(bns.Amount) FROM dbo.Employee emp JOIN dbo.Bonus bns ON emp.Id = bns.EmployeeId WHERE emp.DepartmentId = d.Id) AS DepartmentTotalBonusSize FROM dbo.Department d
Будет заебись, если поясните даже как написать в LINQ формате, но и так буду оче благодарен.
>>692335 Не хочет выполняться чот. Column 'Department.Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
>>692352 >http://sqlfiddle.com/#!6/264458/1 Спасибо, антош, добра. А если к схеме добавить еще 1 таблицу DepartmentProperty (приклейтед), то можно ли как-то к имеющемуся выводу добавить колонку , содержащую список Property для каждого Department? через запятую например, или пробел
>>692423 Ясно. А может погсредством EF и LINQ можно как-то написать запрос, чтобы массив DepartmentProperty заносился для каждого объекта Department в поле типа List<DepartmentProperty>? Или это хуево по производительности будет?
>>692474 Так модели созданы уже по схеме >>692352 . Вопрос в том, как оптимальным образом написать LINQ query для получения списка DepartmentProperty для каждого Department? Что-то типа такого http://pastebin.com/WZmSkJcX ? Что-то мне подсказывает, что пошлёт меня препод нахуй дальше оптимизировать с этими вложенными запросами.
>>692621 >>692624 Опять проебался. С массивом 3x3 все работает нормально. А если я поменяю размер матрицы (массива) А и B на 5, например, то получаеются большие ебические числа.
посоны, есть массив А (10x10) и массив Б (10x10) Хочу получить сумму соответствующих элементов в массиве C (10x10) Конструкия типа: C[j] = A[j] + B[j]; //не работает.
Могу ли я это реализовать без циклов? или помогите с циклами
>>692687 Да ты заебал со своими матрицами. Может лучше в сторону Python + Numpy или R посмотришь? Они лучше для таких задач подходят, и там можно так делать.
На связи снова анон, делающий табличный редактор на win forms. Разобрался как открывать созданный документ, но не разобрался, как добавить в контекстное меню проводника пункт "создать новую таблицу своего формата". Анонсы, заебся уже гуглить. Пробовал в реестре в ветке classes root в разделе ".%имя моего формата%" добавить подраздел ShellNew, и к нему FileName со значением шаблона в соответствующей папке, но всё равно ничо не происходит. Как заставить пекарню создавать файлы своего формата по ПКМ?
>>692757 А хз, где оно и что творится. У меня не было большого опыта редактирования контекстного меню реестра, в общем то, опыта не было вообще. Потому и прошу тут помощи. Советы с тырнета не помогают.
>>692773 >Ты пробовал SHChangeNotify вызывать после ассоциации? Эта чо и как? Видишь, что ещё интересно: я пробовал создать подраздел ShellNew в разделе .html там же, в classes root, и в контекстном меню появился пункт создания пустого хтмл файла. Но у раздела .html (как и у многих других) есть подраздел PersistentHandler, (при этом у каждого расширения значение в параметре по умолчанию в персистент хэндлере уникальное) а в разделе моего формата, офкорс, нету подраздела персистент хэндлера, и я в душе не ебу что это, и как его создать.
Дальше в функции устанавливаешь ассоциации и в конце вызываешь SHChangeNotify(0x08000000, 0x0000, IntPtr.Zero, IntPtr.Zero);
Ну это как я понимаю, никогда с этими ассоциациями не работал. У расширения, как я понимаю, в Default должен лежать ID, который тоже должен сущестовать и в нем должно быть название HKEY_CLASSES_ROOT --- .твое_расширение ------ (Default) = Blablabla (это ID) --- Blablabla ------ (Default) = Тест, который будет отображаться в меню
>>692802 А без привязки к шарпу это никак не сделать? Имею ввиду, как ручками залезть в реестр и прописать нужные параметры, шобы, блять, эта ебучая скотина уже создавала блять файлы моего формата?
>>692676 самое первое, что приходит в голову - теорема лапласа. ну или можешь какой нибудь алгоритм придумать, ведь определитель - сумма произведения n элементов матрицы, каждый из которых не находится в 1 строке и столбце, и каждое слагаемое ещё умножается на -1 в степени суммы индексов всех элементов. грубо гря - перебрать все сочетания или как там мать их
var q1 = from a in dbDataSet.Album group a by a.ArtistID; foreach (var q in q1) { parentArtist.Nodes.Add((from artist in dbDataSet.Artist where artist.ID == q.Key select artist.Name).FirstOrDefault()); }
Так нормально делать если мне нужно получить все уникальные ArtistID из таблицы Album и добавить затем их по именам в дерево (а имя берется из другой таблицы Artist) Или я занимаюсь говнокодингом? В linq и запросах не очень силен.
>>693190 var artistIDs = (from artist in ctx.Album select artist.ID).Distinct().ToList(); var artistNames = (from artist in ctx.Artist where artistsIDs.Contains(artist.ID) select artist.Name);
>>693227 Одним запросом к базе. Чтобы на выходе получить выборку с уникальными ArtistId из таблицы Album с соответствующим им ArtistName из таблицы Artist
>>693396 Я перекомпилировал ядро, переустановил GCC, и все равно такая ошибка. Спрашивал у программиста - он говорит что синтаксис неправильный, уже неделю пытаюсь что то сделать.
Привет програмач, я решил задрочить с#, а конкретно возможности .NET, я прочитал пару книжек, но удобней и полезней будет твсе освоить на практике. Опытные ананасы, могу ли я попросить у вас списочек приложений в порядке возрастания сложности проекта? Что вроде: 1. Ввод\Вывод хуйни 2. Работа с изображениями 3. Работа с о звуком 4. Сериализация 5. Приложение взаимодействующее с какой нибудь БД .. ну и в таком вот духе
>>693509 > 1. Ввод\Вывод хуйни Блокнот с возможностью загрузки и сохранения > 2. Работа с изображениями Блокном с возможностью вставки картинок > 3. Работа с о звуком Блокнот с возможностью вставить звуковой файл > 4. Сериализация Блокнот, сериализирющий введенные строки в xml > 5. Приложение взаимодействующее с какой нибудь БД Блокнот, сохраняющий и читающий заметки из БД
>>693527 Честно сказать если это действительно так, то я не знаю как ты будешь писать что либо. Из того что ты прочёл хорошо если половина отложилась, если ты не писал что-то попутно.
> 2016 > В ASP.NET 6.0 на линуксе нельзя отресайзить jpeg картинку
А все потому что в MONO для linux испокон веков есть бага (которую никто не правит), из-за которой Jpeg кодировщик игнорирует "jpeg quality" и всегда используется максимальное. Про утечки памяти, можно не говорить.
И ведь нет альтернатив: 1) ImageResizer - в текущей версии это обертка над System.Drawing (в плане кодирования точно) 2) Наработки Microsoft в Core FX - ну так там все на стадии исследований https://github.com/dotnet/corefxlab/tree/master/src/System.Drawing.Graphics 3) Порты jpeg-encoder на C# - прощай производительность
>>694085 "Спасибо" антош, ты ввел меня в более сильное уныние.
Глянул либы из https://www.imagemagick.org/script/api.php и еще погуглил: 1) Magick.NET - развивается и даже есть "поддержка" .net core, но пока работает только на Windows. Проект поддерживатеся одним человеком и в ближайшей перспективе не выйдет на Linux. 2) ImageMagickApp - (проект мертв) просто обертка над вызовами стороннего приложения. Код редкатировался послдений раз в 2008, о поддержки линукса нестоит и заикаться. 3) ImageMagick.NET - (проект мертв) не обновляется с 2009, статус "альфа"
В чём разница между Thread и Task в плане асинхронной работы? Что использовать предпочтительней для метода, который ничо не возвращает? Нужен ли для таска аргумент [MTAThread] над мэином?
>>694256 Думаю после релиза достаточно быстро и под линупсы запилят. В крайнем случае можно и без обвязочек попробовать, вызывая IM напрямую или свои небольшие биндинги под задачу запилить.
>>694261 > разница между Thread и Task децл некорректное сравнение если ты не о new Thread().Start(), но тогда ты просто еблан. если асинхронная задача использует управляемые ресурсы или является I/O операцией - то юзай async/await. в противном случае - ThreadPool.QueueWorkItem
>>694261 + к >>694317 > Нужен ли для таска аргумент [MTAThread] над мэином нет. но если ты умудришься туда засунуть UI-элементы, которые его требуют, то, наверняка, да
Анон, вот смотри, я написал некоторую прикладную йобу, она протестирована, готова и лежит в папке Debug. Теперь, как поступать с инсталляторами, реестрами и прочим, чтобы она выглядела как законченный продукт? Ничего токового не нагуглил.
Аноны, как в win forms обеспечить многопоточность, если для одной задачи нужно постоянно обращаться к контролу, который создать в первоначальном треде? Пытался использовать Thread с его методом Start(), но, если я правильно понимаю, при обращении к контролу из основного треда, я в итоге выполняю задачу не в вспомогательном треде, а в основном, так как постоянно к нему обращаюсь?
>>694352 дк >Executes the specified delegate on the thread that owns the control's underlying window handle. разве не значит, что обращение к контролу будет перехватывать и выполнять тред-владелец контрола, то есть основной тред, а мне нужно, чтобы работа велась в побочном треде. или я непраильно понял?
>>694361 То есть низзя, к примеру, создать в одном треде таблицу, заполнить её, а потом, при желании, в другом треде параллельно выполнять поиск по таблице?
Допустим я хочу читать xml. Допустим я его читаю. Допустим я обращаюсь к атрибутам LC.Zalypa["Duration2"]. Допустим, я не хочу так делать, а хочу обращаться как белый человек LC.Zalypa.Duration2. Это ведь можно сделать в си шарпе, как-то генерировать геттеры по именам атрибутов, а не кодить их вручную?
Короче, аноны. Подскажите советом. Есть приложение вин формс, в котором открываются таблицы, в которых много записей. Пытаюсь организовать параллельный поиск по таблице в реальном времени (как, например, в ворде: типа нажал одну букву, ворд выдаёт все встречающиеся комбинации из 1 буквы, потом ввёл ещё одну - ворд выделяет комбинации из 2х букв и т.д.), и не могу определиться с тем, что использовать: thread, backgroundworker, task или ещё что то, о чём я не знаю? Прочёл, что треды нужны для фоновых задач, а таски - для задач, которые нужно выполнять параллельно. И что из этого верно в моём случае? Или в моём случае вообще можно хоть чо использовать?
>>694476 Потому что либо костыляться придется при доступе, либо маппинги ручками писать. Да и красивей так. Перфманс ниже, да, но это все от задач уже зависит
>>694516 Я все-таки NSIS предпочитаю, но каждому свое. Просто редактировать эти инсталлеры вне студии это тот еще ад. Либо если нужно кастомизировать как-то.
>>694676 Мне essential algorithms понравилась, пиздецки простая книга, с картинками и псевдокодом (а на сайте еще и примеры на шарпе есть). Но на английском.
>>694733 та ну, просто первые полтора результата запроса "essential algorithms торрент скачать бесплатно" приводили на какие-то буржуинские рецензии этой книги, а это значит, что на поиск придется потратить нечеловеческие усилия
>>694730 Почему она плохая? Я думаю прочитать. Про алгоритмы знаю примерно нихуя. Могу написать bubble sort и на бумажке нарисовать что делает quicksort.
Ананасы, возникла проблема с unit тестированием. В тестовом методе создаю два объекта одного класса с одинаковыми параметрами конструктора и сравниваю эти объекты с помощью Assert.AreEqual. Тест завершается неудачей, скрин ниже
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Breaking news: Microsoft анонсировала MSSQL Server для линукса и купила Xamarin, JetBrains готовит IDE для шарпа, ведется активная разработка C# 7.0
ВСЯ ЛИТЕРАТУРА ВТОРЫМ ПОСТОМ
1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- 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%20Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6
Обсуждение фич C# 7.0: https://github.com/dotnet/roslyn/issues/2136
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код этой шапки: http://pastebin.com/cKKXYArs
Прошлый тред тонет здесь: https://2ch.hk/pr/res/667709.html