Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
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 - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная
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
есть ли какой-нибудь толк на сегодняшний день в WPF (Silverlight, о боже ты мой)? внезапно для себя спустя дофига времени решил навалять что-нибудь относительно сурьезное, а нужно ли мне это будет?
>>667747 Silverlight мёртв. WPF не мёртв, и на рсдн какой-то инсайдер говорил что над ним ещё даже работают, и что-то там выпустят. Но пока что даже старые баги кажется не фиксят. Но использовать WPF вполне можно.
>>667753 > Как дела с интегацией со студией? Терпимо. Подсветка работает, правда обновления об ошибках упорно идут только в Output окно, в error list постоянно какая-то хуйня - единственное что меня бесит. Для тех же wpf проектов мастер и дизайнер студийный (насчёт последнего не уверен на 100%, может если проект слепить вручную, то заработает) не работают. Формы вроде работают, не пробовал. Если не в курсе, немерловцы щас допиливают Нитру, на которой (через год-два-десять) захерачат немерле2 который меньше тормозит при компиляции и с лучшими макросами. Так что сам немерл сейчас в чём-то вроде лимбо, но работать можно - баги фиксят.
>>667767 > винформы не справляются это типа контрольчик выезжает со скоростью, изменяющейся по логарифмической функцией, с левого верхнего угла, переливаясь всеми цветами радуги и проигрывая произведение Сальери?
>>667788 Ну это все конечно можно имплементировать, но в XAMLе это всего несколько строк кода. Дизайнером хамловским, кстати, уже не пользуюсь наверное полтора года, зависимость есть. Куда быстрее, чем приглядываться к съехавшим пикселям в дизайнере винформ.
Пацы, а если я в цикле хочу насоздавать объектов с именами типа объект_i - как мне это реализовать? Скажите лучше сразу как гуглить, а то что-то не особо пошло.
>>667829 либо T4 шаблоном хуячь (в тексте программы все переменные будут перечислены друг за другом как если бы ты вручную объявлял). А если надо динамическое n то либо никак, либо через кодогенерацию с которой я не знаком и доступ по имени объект_i у тебя не получится а будешь ебаться с AST насколько я понимаю.
перекаты перекатчики дубль Шарпач, я заебался. Поясни за деплой asp .net: есть vs15 community, есть одностраничный mvc-app. Как дебажить его на IIS Express 10, установленный на компе? При чтении есть жопобольное подозрение, что комьюнити может только в свою локальную IIS, либо azure. В чем боль: есть .x3d шник, добавил хэндлер, добавил mime тип конфиге. Не работает. Взял IIS Ex10, залил в его дефолтный апп свою html с x3d (x3dom юзаю), добавил через конфигуратор IIS нужный .x3d тип и mime его model/x3d+xml. Работает, екарный мамай! И не ебу че терь делать, то ли все сносить перенастраивать, то ли инструмент фришный не канает. В Web public только azure и remote server. IIS нету.
>>667847 А как я тебе этот энумерабл заполню в цикле? Вообще цель задачи чисто чтобы вручную словарь не заполнять просто чтобы некоторые функции словаря потестить и интересовало меня только именование новых объектов в цикле - как сделать по-другому не проблема.
>>667857 Забей уже на словарь. Суть не в словаре, а в том чтобы создавать именованные по-разному экземпляры в цикле. Мне нравится for, если тебе важно. >>667858 Я уже понял, что не надо.
>>667862 Вот этолько это говно без задач и никто так делать не будет. Даже во всяких неплохо поддерживающих метапрограммирование языках (ну там вроде руби) такое стараются не делать.
>>667872 >Просто сижу и пробую можно сделать так или этак В немерле так можно, с помощью макросов (позволяют перелопачивать твою программу практически как хочешь в о время компиляции). В принципе особо ужасного ничего нет, просто можешь словить переопределение переменных.
У меня еще вопрос уровня архитектуры, пару дней сижу не знаю как лучше сделать. У меня в приложении есть словарь <дэйттайм, объект> - это основной объект в логике, в нем тысячи объектов, он лежит в классе, окруженный своими методамии прочей логикой. И есть еще другие словари <дэйттайм, объект>, представляющие некоторые значения, привязанные к датам, в которых ну допустим всего штук по пять записей, которые заполняются непосредственно в коде явным образом, т.е. заранее известными значениями. Методы основного словаря используют значения из дополнительных там записаны какие-то значения, актуальные на большом временном промежутке, но это не важно. Так вот в чем мой вопрос: В какое место приложения поместить дополнительные словари? Сделать каждому из них класс в котором и методов то не будет? Нахуярить их все в один общий класс? Обращаться к ним через методы класса, в котором они лежат, а сами их сделать приватными? Обращаться напрямую? Где сделать тот кусок кода, который их непосредственно заполняет? В конструктор? В отдельный класс-инициализатор? Просто в мэйн? Сделать метод в том же классе, где словари лежат? Нихуя не понимаю. Столько вариантов и я никак не пойму что лучше. Короче, где принято объявлять словари?
> Столько вариантов и я никак не пойму что лучше я бы на твоем месте сделал бы как работало, а потом сам увидишь, как лучше. пшта я нихуя не понял, че тебе надо и что тебе мешает, а обьяснить сам ты, по ходу, и не можешь
>>667919 > поместить дополнительные словари в один static класс их положи, назови HuiPizdaDataRepository, например.
>какие-то значения ... но это не важно Что это за значения как раз таки важно. Меняются ли они в рантайме или нет, если меняются то всем ли частям кода стоит разрешать вносить изменения, имеют ли какое-то отношение друг к другу (зависимость, однотипность) и мн. пр.
>>667928 А не особо понял что он имел ввиду, но может ему лучше собрать это все как-то в класс со словарем и связанными методами и работь с экземплярами этого класс? >>667919 Ты лучше хоть кусок кода на ideone или pastebin залей, чтобы хоть примерно понять чего ты добиваешься
>>667919 тебе нужно помнить что каждая эта хуйня это объект, со своими значениями.
Тот метод который создает объект завут конструктором.
Так вот в него можно напихать объявление словаря(питоноеб чтоле)\хеша
если будет считать что каждый объект уникален, то базывые значение он должен хранить в своем личном хеше. Приватном, и доступ к нему только по акцессорам.
>>667923 Што што, мне надо штук пять словарей с заранее известным содержимым для методов основного класса. И я не знаю куда в коде все это запихать чисто арихтектурно чтобы потом не охуевать перекладывать если окажется неудобно. Мне ничего не мешает запихать это все в десять разных мест, в этом и проблема. >>667928 >>667934 По сути у меня выбор из двух стульев - или захуярить их все в один класс или положить каждый в свой класс. Второй вопрос - где их заполнять: в конструкторах или сделать отдельный класс с методами для заполнения. >Что это за значения как раз таки важно. Все они в ключах имеют даты. Вэлью такие: флоат, структ, делегат. В рантайме не меняются, все статично до одури.
>>667938 > Што што, мне надо штук пять словарей с заранее известным содержимым для методов основного класса. И я не знаю куда в коде все это запихать чисто арихтектурно чтобы потом не охуевать перекладывать если окажется неудобно. Мне ничего не мешает запихать это все в десять разных мест, в этом и проблема. Если содержимое заранее известно, то почему не XML какой-то?
>>667939 Я только недавно стал разбираться, в хмл почти нихуя не понимаю - даже в голову не приходило. Может что-то покурю в эту сторону, звучит разумно, тащемто.
>>667938 от разных классов и разных методов насколько я понимаю ты пока ничего не выигрываешь. Забей, клади в один класс, инициализируй в конструкторе.
>>667939 Ну в принципе да, сейчас ему самое время напороться на замечательную фичу .NET в лице несериализуемый словарей в BCL. Или ты имеешь ввиду ручками заполнять?
>>667942 Там можно в полуавтоматическом режиме в хмл сериализовать если что. Еще как вариант serverless бд какие-то, вроде sqlite, если у тебя связи между этими коллекциями какая-то есть.
>>667943 Вчера вот словарик сериализировал таким костылем
var writer = new StringWriter(); var c = description.Select(d => new DummyClass { Name = d.Key, Description = d.Value }); XmlSerializer serializer = new XmlSerializer(typeof(List<DummyClass>)); serializer.Serialize(writer, c.ToList()); writer.ToString().Dump();
>>667953 Да там все просто. Сериализация - это когда ты берешь какой-то экземпляр и сохраняешь его как xml, json или в како-то другом формате файл, который можно где-то хранить. Обратный процесс - десериализация, когда ты из этого xml или json получаешь обратно экземпляр класса.
>>667959 Окей. А можешь еще пояснить про использование потоков? Экзам реф по шарпу начинается с материала по потоком и если в синтаксисе все ясно, то когда их нужно применять и зачем для меня весьма туманно. Единственное что я понял - гуй держать в отдельном треде для отзывчивости. Если я делаю десктопное приложение без серверной части мне вообще оно надо для чего-то другого?
>>667960 не, я об экономии места в стэке, хотя это не критично, думаю, в данном случае
>>667958 нет же, лист - это же ссылочный тип, в стеке для него присутствует только адрес в куче. а в случае с kvp в стек копируется сразу же мешок экземпляров
>>667964 В многоядерных системах. Когда у тебя 16ядерное говно было бы неплохо чтобы каждое ядро выполняло какую-то работу, а не как пикрелейтед. Поэтому параллелить это хорошо. В сишарпе треды сорт от депрекейтед, все уже давно используют таски. Это по сути такая абстракция над тредами, чтобы с многопоточностью было все проще, легко и на небе радуга.
>>667964 > когда их нужно применять когда у тебя присутствуют долговыполняемые задачи
> Если я делаю десктопное приложение без серверной части мне вообще оно надо для чего-то другого? а .NET 4.5 есть жи async/await (аля лайт версия пногопоточности). если есть IO-операции или работа с управляемыми ресурсами, то лучше использовать Async()
>>667970 То есть я правильно понимаю, что если я пишу что-то простенькое для учебных целей - мне проще сначала все написать, а потом сверху навернуть многопоточность где покажется уместным, чем заранее сидеть и планировать? >>667971 Спасибо.
>>667969 >а в случае с kvp в стек копируется сразу же мешок экземпляров Не понимаю где. Мы сравниваем dictionary.Select(new ClassName{...}) (рез-т IEnumerable<ClassName>) c dictionary.ToList() (рез-т List<KeyValuePair<K,V>>) что в первом что во втором случае мы итератором проходит по словарю и больше одного экземпляра KVP за раз в стек не попадает ни там ни там.
>>668002 это implicit cast сработает при присваивании null (или int'а в данном случае, т.к. выбрал Nullable<int>, а вообще любой класс можно было выбрать кроме object) экземпляру MyClass. В результате вместо null мы присваиваем instance возвращаемое значение (new MyClass()) от которого уже вызываем DoJob. Никаких NRE
>>668008 ну если есть операторы, значит это кому-нибудь нужно. а тут ты объявляешь объект как нулл, а он ВНЕЗАПНО и не нулл (да как бы не NRE в коде оператора)
>>668010 Ну тут спросить можно будет с двух людей с человека который не моргнув глазом присваивает нулл структуре с человека который при имплисит касте из нулла создаёт рабочий объект зачем-то в случае с классом руки отрывать только второму. Но вообще да, имплисит касты небезопасная вещь.
>>668013 я с тебой уже готовился кидаться опровержением https://dotnetfiddle.net/tsxsyC а тут выяснилось, что речь о структурах. во я ведь ничего подобного не писал) да и ты декларировал MyClass как class
>>668015 в случае с классом я протупил, там имплисит из нулла не получится, но с присваиванием (Hui)null пройдёт.
>да и ты декларировал MyClass как class Нет, я декларировал MyClass как struct: https://ideone.com/XSxqTs здесь. Ограничения на то чтобы MyClass было классом не было лел
>>668045 Проходил, около 80-90% осилил. На округлениях завалился, на StructLayout и на CorrupterString, хрен бы воообще когда додумался. А штука несомненно крутая, всем советую.
>>668041 Окей, есть вариант делать толстый клиент на WPF+WCF+3dViewPort+WF вместо x3dom, Есть вариант пилить на Java со стеком Spring+JXTA+x3dom+JBPM в формате веба. Проблема первого - отсутствие x3dom-а, придется использовать другие форматы моделей, плюсы: скорее всего шустро, WCF и WF цепляются без пердолинга и костылей. Веб приложение модно круто молодежно, x3dom прекрасен, но p2p сеть для клиентов придется делать незнамо как ибо с JXTA не работал, есть вариант на js писать с webrtc p2p connection сделать. Да и средство для workflow только одно и без понятия насколько оно рабочее. Есть что сказать по хотя бы первому стеку? Суть такова, что нудно запилитьраспределенное приложение для одновременного сценарного выполнения действий с клиентов. У Джавы еще плюс в том, что там будет пресвятая idea, адекватный Spring. В общем, в сомнениях, времени мало
>>668045 This doesn't happen often, but it looks like something is broken. Hitting the back button and trying again might be your best bet. If that doesn't work you can head back to the homepage.
There might be more information on our status page which is reporting All Systems Operational
Как решать проблему с актуальной версией фреймворков.
Если недавно 3.5 был стандартом, то сейчас можно встретить 4, 4.5.2, 4.6, но при этом до сих пор встречается софт версии 2.0, целый зоопарк.
Можно ли как-то сделать NET независимыми windows приложения? То есть как-то паковать или комплилировать унирерсальные приложения под windows вместо компилляции разных версий?
>>668076 Простой пример, нужно запустить приложение на компьютере, на котором нет доступа в глобальную сеть.
В обычном случае, приложение полезет в Интернет и поставит нужную версию или даст ссылку, откуда можно скачать и поставить вручную, если версия стара.
Соответственно приложение не будет работать, так как не стоит фреймворк нужной версии, хотя в приложении не использовались специфичные классы, только базовые, ещё с бородатых времён.
Может есть какой-то способ обмануть винду и заставить её воспринимать приложение подходящей версии.
>>668172 три года отдал быдлозаводу, на котором все макаки писали исключительно на делфе, а понятие связей в реляционной БД отсутствовало как класс про одного недокодера даже была статья в местной газенке уровня "встричайте новый стиф джопс"
Кто-нибудь создаёт веб-приложения на asp.net mvc? Я сейчас вникаю в него и возникла одна проблемка. Все советуют отделять бизнес-логику от контроллеров. В примерах всё выносится в специальные сервисы, которые после внедряются в контроллеры через конструктор. Тут всё понятно.
Как быть, если мне нужно часть функционала одного сервиса использовать в другом? Один сервис отвечает за инвентарь игрока (добавляет/удаляет предметы), второй сервис занимается раздачей призов. Раздача призов подразумевает изменение инвентаря. Я хотел бы в сервисе раздачи использовать сервис инвентаря, так как там есть необходимая логика.
Проблема в том, что 1 метод контроллера = 1 методу сервиса. Сервис выполняет какое-то действие, после вызывает сохранение. Значит я не могу просто взять и внутри использовать какой-то другой сервис. Придётся логику инвентаря выносить куда-то ещё?
Хай кодач. Я студент быдлокодер, знакомый попросил сделать прогу для его фирмы, базу клинтов и их заказов. Решил что буду делать на сишарп и бд sqlite. Хочу от вас советов мудрых, на что обратить внимание, как не обосраться, так как одно дело делать домашки, а другое реальный опыт разработки. Или может среди вас есть кой нить фрилансер что за 100$ поможет мне справиться?
>>668386 Не лучше ли вынести всё это в веб? На какой-нибудь простенький, дешёвый хостинг. Доступ с любого компьютера. И можно не бояться, что данные проебутся вместе с компьютером. http://metanit.com/sharp/mvc/1.1.php
Аноны, я нихуя не пойму, нахуй писать сайты на ASP .NET если уже полно конструкторов сайтов? Есть примеры сайтов которые написали на ASP ? Где посмотреть исходники?
>>668350 1. я чет не понял, что мешает сервису, который раздает подарки, использовать сервис, отвечающий за, собственно инвентарь? добавишь метод и поломается контроллер или чо?
2. по-хорошему, тебе надо будет сделать нечто такое: контроллер --> сервис инвентаря --> доменный хуёменный сервис инвентаря
>>668499 >Опиши подробней что у тебя есть. На чем написано, какую бд использует. Есть база в одну таблицу(мне хватало, но ты же не тупой, добавишь), написано на котлине, это из джавовского стека, интерфейс на джаваэфикс, бд скулыйт, написал же.
>>668588 бОльшую часть коммерческих продуктов ты так в гугле и не встретишь, т.к. разворачиваются в корпоративной подсети. также, с диким развитием мобильных приложений нужен адекватный бэкенд, считай, за каждым четвертым приложением стоит такая себе тима макак
>>668602 Вот теперь я понял. Дело в том, что я хочу написать свой проект на ASP.NET за пол года чтобы его показать будущему работодателю и тот офигел и принял меня на работу. Я нихуя не могу придумать какой проект сделать.
Аноны, помогите обойти проблему в винформс. Суть токова: есть заготовка табличного редактора, для сохранения таблицы использую отдельный тред, в нём через SaveFileDialog.ShowDialog() запрашиваю путь сохранения для новой таблицы. Вот только если создавать объект SaveFileDialog SFD = new SaveFileDialog в методе второстепенного треда, вылазит исключение на вызове SFD.ShowDialog():
An unhandled exception of type 'System.Threading.ThreadStateException' occurred in System.Windows.Forms.dll
Additional information: Текущий поток должен быть задан как поток однопоточного контейнера (STA), чтобы вызовы OLE стали возможны. Проверьте, что ваша функция Main помечена атрибутом
Если вызывать SFD.ShowDialog() инвоуком из другого треда, то программа падает по определённым причинам в определённой ситуации, в связи с конструкцией программы долго объяснять почему, в основном потому, что кто то уебан. Дак вот, как не меняя тип апартаментов на СТА у треда обойти появление этого исключения? И вообще, почему оно возникает, и что такое это ОЛЕ? Вызовы showDialog() в основном треде чтоли происходят вне зависимости от того, где ссылка на объект SaveFileDialog?
Посоны, начал читать книгу Beginning ASP.NET 4.5 in C#, Matthew MacDonald URL. За 40 минут уже на 100-ой странице. Сегодня постараюсь осилить оставшиеся 800 страниц. Завтра начну писать свое первое веб-приложение. >668615 кун
>>669529 Почему? Я только что долистал до конца книгу. Я с APS.NET 5 лет назад сталкивался и чуток программил веб. Сейчас я освежил знания. Теперь надо все практиктой закрепить.
>>670187 Похоже нужно будет идти на пхп погроммиста, чтобы можно было написать про год опыта. С ходу на сишарп можно разве что через стажировку в крупных компаниях, которые проходят в определенное время с большим конкурсом.
>>670362 >С ходу на сишарп можно разве что через стажировку в крупных компаниях, которые проходят в определенное время с большим конкурсом. История моей жизни.
Анунахи, поможите советом в винформс. Нужно ограничить перемещение одной формы внутри другой таким образом, чтобы форма при перетаскивании за пределы основной формы постепенно заходила внутрь (ну то есть исчезала) формы, в которой она должна находиться. Какие есть варианты кроме сделать mdichild'ом внутреннюю форму и обрабатывать событие locationChanged?
Как же я вам завидую, ребята, вы молодые, шутливые, у вас ещё всё впереди. Для вас слово "фреймворк" в новинку, а та же веб-разработка кажется чем-то таинственным и увлекательным. Вы ищите место, куда бы устроиться ради опыта работы в резюме, живёте полной жизнью. Желаю вам удачи по жизни и не разочароваться в профессии.
посоны, вот ставлю я визуал студию. И буду учиться си шарпу и наверное вебу на нем, ведь можно же? Так вот, как бы мне облегчить сборку студии? Места жрет на ссд дохуя, зараза.
Я тебе по секрету скажу, что туда можно смело идти без опыта. В этих "крупных компаниях" тимлид мнит себя богом только потому, что умеет в референс-типы, а джуниоры до сих пор не различают. Шарперов нет на рынке, HR-ы в вакансиях выкобениваются исключительно по старой привычке, да для оправдания собственных фейлов. Если совсем ссыкотно, сделай проект любой рабочий, скажи, что год над ним работал без оформления, и все.
>>670844 ну все делается под задачу, а не: аааааааа, на проект можно накидать еще тыщщу макакJS и срубить больше бабла с клиента, ебошим вебапи!!!!!!!111!!!
Шарпач, есть одна class library. Какие существуют способы инклюдить ее в сборку другого решения кроме неудобного референса через линкование исходников?
>>670894 > Если совсем ссыкотно, сделай проект любой рабочий, скажи, что год над ним работал без оформления, и все. Я указал свой проект в резюме, он работает. Боюсь что там говнокод поэтому на гитхаб не заливал ._. , но похоже придется
Анон, у меня платиновый вопрос. >навыки программирования на одном из языков: C++/Java/C# Что вообще включает в себя "навыки программирования"? Сам я знаю С# на уровне универских лаб, в курсе ООП, ну еще один раз использовал многопоточность в Unity, но до чего-то серьзёного не доходило, то это считается?
>>671182 это значит, что ты в курсе базовых понятий языка и не будешь дуплиться, когда видишь что-то типа public static implicit operator или static Classname() { }
Какие есть ресурсы для быстрого вкатывания в asp.net mvc? Мне не для работы, в универе надо запилить веб-приложение. mvc понимаю если че, раньше на рельсах кодил.
>>671219 а что конкретно непонятно? там же для макак написано: "бомбаните эту строчку, сделается XYZ" кстате, автор этого цикла на связи и не посылает нахуй за вопросы "а у меня так не работает" на крайняк: сливаешь авторский проект из репозитория, открываешь второй вижуалстудио и смотришь, где наёб
>>671230 Ну ладно, я уже начал читать getting started на официальном сайте. В геттинг стартед написано, что мне нужен Azure account, а дальше написано, что там триалка 1 месяц. Че делать-то?
>>671297 ну тыжпрограммист ёбе, тебе показывают, как сделать, чтобы работало. а как работает так, что оно все работает, это: гугл, msdn, Троелсен, etc.
>>671985 да ты ёбнутый. Я даже когда английский знал так себе всё равно читал в оригинале, потому что третье издание рихтера прочитанное медленно с заходами в словарь всё таки было получше вариантом чем прочтение второго с последующим шароёбством по рунету в ожидании переводов актуальных статей.
Пиздец, начал рыться в коде созданного ASP.NET MVC C#. Класс наследует другой класс, класс на основе интерфейса, какие-то квадратные скобки: // POST: /Account/Login [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] Классы с "async". Пиздец, чорт голову скрутит с этими замутами, нагородили огород и понапридумывали всякой хуйни.
>>671985 Для чтения технической литературы нужен самый минимальный уровень знания языка. Вот если человек читает художественную литературу в оригинале - это god tier, а техническую любой даун может читать, потому что там используется словарный запас не больше 1000 слов (помимо терминов из предметной области, которые ты должен знать в любом случае).
>>672131 ты наркоман. Тебе написали "техническую литературу легко читать даже с хуёвым английским", ты спрашиваешь про какой-то иелтс. Ты подорвавшийся неосилятор что-ли? При чём тут иелтс вообще? Ты думаешь что если человек не иммигрировал и не ездил учиться в штаты/европу, то он книги на английском читать не может?
>>672479 ну, очевидно, либо юзать глобальные переменные (что заботливые разработчики, по идее, должны были запретить вовся), либо через какой-то стейт (или like-a-Tag-пропертю) объекта. это, по хорошему, должно быть какой-то базовой базой, я не верю, что ты настолько днище, что не знаешь такие вещи)))))))
>>672481 Говорю же что пиздец дно. Смотри есть скрипт, он, например, считает сколько раз игрок нажал на кнопку. Мне из этого скрипта нужно выдернуть кол-во нажатий и применить это значение в другом.
Анон, помоги, не пойму че за хуйня. Я вот поставил ограничение по внешнему ключу в своей sqlite3 БД. Но почему-то, когда я из приложения передаю в БД недопустимые значения, то они не вызывают ошибки и спокойно записываются в таблицу. То есть ограничение ничего не ограничивает. Почему такое может быть? C# + SQLIte + SQlite-net.
>>672543 > Но почему-то, когда я из приложения передаю в БД недопустимые значения, то они не вызывают ошибки и спокойно записываются в таблицу ну, очевидно, нет никаких ограничений как декларируешь вообще?
>>672548 Да в том и суть, что внешнюю связь я немогу в коде декларировать, потому что SQLite-net их не поддерживает. Поэтому я типа напрямую прописываю - руками в БД.
>>672665 типы данных, работа с типами, упаковка/распаковка, дженерики классы и интерфейсы, наследование механизм исключений строки, StringBuilder коллекции, сравнение, поиск по коллекциям, равенство экземпляров LINQ базовые принципы многопоточности, ограничения, связанные с многопоточностью делегаты, события работа с базами, T/SQL, ОРМки подозреваю, сейчас это обязательно Unit-тестирование, скорее всего, тоже обязательно
да и вообще, ООП, шаблоны проектирования, туда-сюда короче
>>672326 this.gameObject.GetComponent<Script2>().myVar Ну или как-то так, я особо в юнити не вникал. >>672481 Да похуй на инкапсуляцию, это ж не энтерпрайз.
>>672722 >а сюда ли ты зашел-то? >>672730 >Крестотред где-то рядом. В Шарпе же тоже есть указатели и их можно кодить, если сильно захотеть, или я ошибаюсь?
>>672737 генерить unsafe код - нетривиальная задача, уж явно не для джуномиддлов. максимум смогут спросить "а является ли код в # полностью управляемым?"
>>672743 Понял, спасибо. Просто был момент полгода назад пробовался джуном в одну контору в ДС2, в вакансии написано шарп, пришел - посадили, дали листок, ручку, дали задание. Говорят, пиши. В задании указатели на паскале. Я охуел и ушел. Подумал, что надо дальше читать и учить, ну и контору тщательней выбирать.
>>672806 или я чет не понимаю, либо же задача подогнана под ответ в том случае. ибо, во-1х, человек делает return View(dbcontext.DbSet<>). если обернуть этот код в using или ебануть Dispose, то Razor упадет по ObjectDisposedException при попытке проэнумерейтить коллекцию, родитель которой был убит чуть-чуть ранее а во-2х, контекст (и вообще, любой управляемый ресурс) должен жить как можно меньше
>>672828 Я уже немного погонял, функций маловато пока еще, тесты не тянет вроде, вот такие забавные моменты в меню пикрелейтед. Но сука, как же резко работает, ебаный в рот, быстрее студии без решарпера, реально отзывчивая при билде, охуенная идеевская поддержка VCS, nuget вроде тянет. Для первой EAP очень круто
Есть метод в слое доступа к данным public IQueryable<Employee> SelectEmployees(int departmentId)
Этот метод вызывается когда идет присваивание свойству ViewModel public IEnumerable<Employee> Employees { get; set; } вот таким образом Employees = service.SelectEmployees(selectedDept) .OrderBy(е => е.Surname) .Skip((page - 1) * pageSize) .Take(pageSize), В этот метод из-за того что я присваиваю IQueryable к IEnumerable у меня не выгружается все данные из бд в память или это происходит, как обычно, при вызове foreach на Employees?
>>672964 отложенная инициализация же. если хочешь, чтобы сразу при вызове метода происходило присвоение, добавь .ToArray() .ToList() иначе будешь ожидать первого foreach, First(), Signle(), ElementAt(), etc.
Создание на шарпе длл для использования в других прогахАноним02/03/16 Срд 01:44:13#256№672973
АНОН блять пиздец, как же все таки это сделать? Ну создал я либу, ну хули? Мне нужна либа на шарпе, чтобы загрузить ее в автохоткее. Нихуя не получается.
>>672968 > добавь .ToArray() .ToList() Это я знаю Еще есть AsEnumerable который вроде тоже делает запрос, так вот я подумал что присвоив IQueryable к IEnumerable будет тоже самое.
>>672980 Ой, не так. Вот нашел Метод AsEnumerable() в LINQ просто преобразует коллекцию IQueryable к IEnumerable. В простых приложениях, работающих с коллекциями данный метод практически не используется, т.к. в нем нет смысла – интерфейс IQueryable является производным от интерфейса IEnumerable. Но этот метод оказывает существенное влияние при использовании с Entity Framework, указывая, что цепочку методов в запросе до его вызова нужно выполнить, отправив запрос к базе данных, а последующие методы будут оперировать уже на коллекции в памяти приложения. Если вы запустите этот пример, то можете убедиться в его работоспособности.
То есть оно тоже отложено выполняется, но все операции после AsEnumerable обращаются не к базе данных, а к последовательно IEnumerable в памяти.
> AsEnumerable который вроде тоже делает запрос public static IEnumerable<TSource> AsEnumerable<TSource>(this IEnumerable<TSource> source) { return source; }
>>672985 при работе с EF, AsEnumerable нужен в случаях, когда с неинициализованной коллекцией выполняется нестандартная функция, не конвертируемая в SQL. например:
Блядь, Аноны. Я заебался, 3 дня ебусь с многопоточностью. Суть такова: надо спарсить сайт, тоесть по статичной ссылке увеличивая страницу которую гадо спарсить. Я пробовал с thread, backgroundworker,parallel,threadpool, все это нихуя не пашет в моих ебанутых руках. Аноны поясните, как я могу распарсить список из 100к ссылок, в овердохуя потоков? Делал так: количествоНаботыНаПоток = количествоСтраниц/количествоПотоков; сКакойСтраницы = Айдипотока*количествоРаботыНаПоток; поКакуюСтраницу = сКакойСтраницы+количествоРаботыНаПоток; Айди передавала примерно так(для Thread) For(var i=0; i<100;i++){ Var tr = new thread(parase); } В бд в итоге пишется ~100 один и тот же элемент со страницы.
>>672973 И не получится так просто. Гугли ComVisible. >>672989 Если попытаться это написать без AsEnumerable, он ругнется что не может преобразовать linq в sql или что-то такое.
Шарпаны, я вот использую asp.net identity для аутентификации. В вебкофиге у меня написана такая штука как на пике. То есть неавторизованным пользователям доступ запрещен и их редиректит на login.aspx. Так вот, какого хрена на этой самой странице логина не грузятся библиотеки (жквери там всякие с йоба-контролами) и стили? Как это исправить?
>>673160 На других страницах грузится все нормально. Причем если залогиниться, а потом выйти назад на форму логина, то там уже все будет норм (ну видимо из кэша все берет). Пока что просто сделал deny для каждой страницы кроме login.aspx. А что за бандлы?
>>673158 Я делал по разному. В основном я как раз таки делал или анонимные классы потоков, или запихивал их в коллекция, и оттуда вызывал форичем. Вот последний код: http://pastebin.com/NeESHQyg
Хочу создать nuget package для библиотеки классов с автосборкой после успешной сборки проекта. Также нужно сделать multitargeting, т.е. создать дохуя .dll для разных фреймворков и разного рода сильверлайтов. Как это сделать в Visual Studio? Пытался ручками прописывать конфигурации для сборки библиотеки под разные версии фреймворка -- заебало.
>>674014 Ты вручную его включаешь когда работаешь и отключаешь когда перестаёшь. Раз в десять минут (+/- небольшое рандомное время) делается скриншот и тайтл текущего активного окна отсылается вместе с поминутной статистикой кол-ва нажатых клавиш клавы и кнопок мыши.
>>674230 я думаю, в скриншоты никто не смотри, если не работают с тобой впервые, например, или ты где-то конкретно лажаешь/затягиваешь, дабы убедиться, что ты не ракуешь за их счет
из своего опыта фрилансирования с скриншоттрекерами помню, что что не скрин в моем отчете - то асечка открыта, то браузерка какая-нибудь, то гуглтранслейт. хотя я старался филонить по-минимуму на камеру
>>674230 Скрин будет делаться активного монитора, может если только играть пять-максимум семь минут после каждого скрина и потом переключаться обратно на иде/редактор и ждать следующего скрина (там нечётко 10 минут +/- 2 минуты постоянно, может и через семь сделать по-моему - не помню). А вот фильмецы можно запросто смотреть я так часто делал.
>>674233 >из своего опыта фрилансирования У меня наоборот. Даже удалял по 10 минут пару раз из дневника когда неотносящуюся к работе бодягу одеск трекер скринил. Один раз просто папка была открыта со скачивающимся с торрентов сопранос - удалять не стал так как на фоне иде была, клиент на следующий день спросил как мне сериал, оказалось большой фанат.
>>674270 iirc можно только скрин удалить если что, но только из дневника. Если отменять сразу из трекера в течение таймаута, чтобы скрин даже не отсылался, тогда ~10 минут срезается, да.
почему какой-то пидар, не знающий, как из Nullable<T> вытянуть значение или как обратиться к двум БД, находящимся на одном сервере, с одного запроса сидит миддлом и зашибает бабло ))))), а я все еще джун и без толкового занятия?
Пытаюсь вкатится после питона и js. Немного охуел, если честно, с основ.Как будто у каждой проблемы есть решение на уровне синтаксиса. Или не нужно было начинать с курса на pluralsight. Попробую какую-то книжку из оппоста.
>>674753 от меня достаточно инициативы былопровалов в своей инициативе приблизительно столько же. а он просто аморфный пидор. и в чем, собственно, разница?
WPF. Есть модель (какой-то класс с какими-то свойствами), допустим public class Employee { public string Name { get; set; } } Как сделать так, чтобы было MVVM, но чтобы конкретно этот класс менять (реализовывать в нем INotifyPropertyChanged) не нужно было? Чтобы потом эту же самую модель можно было без перепиливания использовать в чем-то отличном от WPF.
>>675473 То есть нужно наследовать? А что если в нем определен метод, который изменяет одно из полей? Допустим public void CapitalizeName() { Name = Name.Substring(0, 1).ToUpper() + Name, Substring(1, Name.Length).ToLower(); } В таком случае если я вызову этот метод, в интерфейсе ведь ничего не обновится. И я же не могу так просто взять и сделать оверрайд в наследнике, методы же не абстрактные. >>675475 Я понимаю что это не вьюмодел. Какую обертку надо написать для такого класса (в нем могут быть не только данные, но и методы работы с ними), чтобы получилось вьюмодел. Ну тип чтоб правильно и без изобретения велосипедов?
>>675498 Прикольная штука. Схоронил, потом попробую.
Алсо, такой вот подход http://www.filedropper.com/timesim сильно индусский? (Рыгахост не работает почему-то) То есть я передаю Action в тот класс, который должен что-то выводить в UI.
Аноны, написал свою "финтифлюшку, пукалку с перделками" которая должна отправлять кое какие jsonушки. Естественно по запросу с клиента(мобильная прилажка, андрюха, виндерфон,). Нужно написать сюрвер. Можете статеек с экзамплами накидать? Только не в стиле "Простенький сервер за 15 минут" и т.п.
Аноны помогайте. Пишу прогу, столкнулся с ошибкой System.OutOfMemoryException. Ну понятно, что не хватает оперативы. Стал тестить - у меня стабильно вылетает когда прога занимает 520 Мб оперативки. Чё за фигня? Система х64, оперативки на борту 12 Гб. Редактор Visual Studio 2010 Express. Потестить на другой машине нет возможности..
>>675898 Эм.. а расширить никак? Пишу типа сервер, расчитывал минимум на 10Гб оперативы а тут.. полазил по гуглу, надо как-то поставить в настройках режим х64, но хз, можно ли это VS2010 Express..
>>675901 сходу спрошу, нахуя тебе это? может быть проблема в говнокоде? 2Гб на объект - это просто дико много (либо массив из миллионов элементов говна, что тоже много)
>>675903 Да дело не в 2 гб на объект. Всё приложение не может занимать более 2 гб, а то и меньше. Ну это как-то неправильно. При этом я пишу сервер онлайн игрушки ой всё и 2 гб тут может оказаться мало. Хочу заранее решить - это глобальная проблема в чём я сомневаюсь, не могут С# проекты быть ограничены 2 гб, взять к примеру 3D max, или просто надо что-то сделать.
>>675948 причем тут версия? хоть в блокноте пиши, ошибка никуда не денется
>>675919 речь не о объеме приложения а памяти, а в размере кучи. что бы ты там не писал, хоть гигапортал какой-то, ты пытаешься создать какой-то совсем дикий объект и это неправильно, естественно
>>675963 Да не в объекте дело. Я могу создать интовский массив на 350 млн. элементов. А вот два массива немогу, эксепшон. Короче ладно, качаю на тест 2015 community версию, буду там тестить. Мож действительно эра VS2010 ушла.
>>676003 Она ушла 6 лет назад. В студии нельзя интегрировать поддержку новых версий шарпа, поэтому со старыми версиями у тебя в любом случае будет куча проблем. Даже в предыдущей 2013ой студии не поддерживается новый шестой шарп, только в 2015
>>676019 По MVVM можешь статейку в википедии прочитать, это не более чем паттерн используемый в WPF. Если хочешь погрузиться именно в WPF, то другое дело, бери "Pro WPF 4.5 in C#"
>>670181 Люблю на собеседованиях спрашивать, как как получить unix timestamp, а когда мне радость пишут, спрашиваю, зачем может быть это нужно и в каких случаях, не считая работ с бд. Половина болванчиков отсеивается сразу.
под мак для работы с winforms (именно редактор визуальный этот) что-нибудь есть нормальное? xamarin не поддерживает (найти не могу хоть убейте), а работы своих студентов надо как-то проверить inb4: virtualbox + vs
>>677014 а что с формами не так? или ты думаешь, что если студентоте показать формы, они их до конца жизни юзать будут? ну я так точно думаю, например. но формы от этого говном не становятся
>>676834 >Dictionary<Type1, List<Type2>> Самофикс. И тайп1-2 ссылочное. >>676912 И на них, и на элементы. Все ключи, каждый элемент в списке значений. >>676995 А если чтоб и все элементы имели новые ссылки? Алсо можешь подробный синтаксис для Клона написать, у меня не видит такого метода
Есть класс MyImage { public int x; public int y; public Bitmap bitmap; } Как коллекцию таких объектов привязать в WPF в какой-нибудь ItemsControl или Canvas или что там есть для отображения графики?
>>677032 >>677039 прочти книгу, Wpf 4.5 Unleashed или Pro Wpf. Wpf довольно сложный фреймфорк (многие считают что даже переусложнённый), с наскока у тебя только будет всё больше и больше тупых вопросов и неидиоматичного wpf кода.
>>667709 (OP) Здарова, обшарпанные! Console.Beep() не производит звуки короче 100мс, а при переходе между звуками (перебираю через цикл) слышны щелчки или помехи, хуй пойми что. В общем, эта хуйня не работает. Где подводные камни?
>>677267 Длительность и высота + длительность пауз это всё, что вообще нужно для музыки. Почему не работает ясное и понятное средство из стандартной библиотеки? И ЗА ЭТУ ХУЙНЮ МЕЛКОМЯГКИЕ ТРЕБУЮТ ДЕНЕГ???
>>677314 8/8 b8 and I'm taking it Во-первых, кто с тебя требует деньги за .net framework? Во-вторых, Console.Beep это не апи для работы со звуком, это функция для работы с пищалкой на материнской плате, так как эмулятору терминала положено уметь пищать. Так что оно работает ясно и понятно, только к музыке не имеет никакого отношения - остынь.
Но я слышу звук из колонок и наушников, а материнка у меня не пищала вообще никогда и походу вообще не должна пищать. А звук между прочим весьма приятный и чистый, если в ноты попадать, и на 8-битную пищалку типа марио или танчиков потянет.
Кстати про пищалки.. Никто годную библиотеку для проигрывания мп3 и огг не скажет? И что б можно было файлы из дллки проигрывать (с потока), а не только с диска?
>>677669 сериализация требует public/internal видимости класса, наличие доступных сеттеров. плюс, возможно, не все есть возможность/необходимость сериализовать по большому счету не вижу разницы
Двач, спаси. У меня намечается кризис среднего программиста. Знаю и работаю по направлению дотнета, асп-макака. И вроде работу выполняю хорошо и без изъебств, но всё такое примитивное, что учиться не получается. Чувствую себя каким-то эникеем на гос. предприятии, который напишет задач за 3 часа и плюёт в потолок остальное время. Меня это угнетает, хочется чего-то нового интересного узнать. Однако когда пытаюсь начать изучать это новое, то даже не представляю пригодится мне это в дальнейшем или останется ненужным говном в памяти, и поэтому бросаю. Что сейчас полезно осваивать? Какие направления или поднаправления для дотнетчика может? Где вообще информацию по трендам брать?
Подскажите, как лучше реализовывать фиксирование изменений в существующий бинарный файл: полностью его переписывать, или читать до момента изменения, записывать новую информацию/считывать в пустоту удалённую, и писать дальше? Или всё зависит от текущих размеров файла с информацией?
>>678701 >Или если читать почти весь файл при записи, то будет уходить больше времени Смотря как организовано это всё. У тебя же это сериализация, нет? До 10-15 метров без разницы вообще.
>>679127 Когда-нибудь, тебе, или еще кому-либо, может понадобиться разобрать это говно, и ты точно не будешь благодарен себе за лишнее потраченное время.
Стоит ли уже использовать ASP.NET 5 и EF 7 для энтерпрайза, как думаете? Вроде бы уже релиз кандидаты, правда только первые версии. Хотелось бы в новом проекте использовать новый ASP, а не тащить старое говно.
>>667844 Как ты себе это представляешь? Ключом будет объект? Ты точно понимаешь, что делаешь? Может все же ключом будет строка Dictionary<string, object>? Или внутри объекта будет свойство, которое содержит в себе объект - Object.AnotherObject?
>>668350 >Как быть, если мне нужно часть функционала одного сервиса использовать в другом? Создай сторонний проект, в нем создай папку services, который и выполняет все необходимые манипуляции, а из методов контроллера работай уже с этими классами, отправляй туда нужные параметры, а класс уже сам будет делать что тебе надо, независимо от того, откуда ты их вызвал.
>>672049 >Класс наследует другой класс >класс на основе интерфейса >какие-то квадратные скобки >Сложночитабельный код >понапридумывали всякой хуйни То ли дело родные mov ah, 04Ch, да?
>>679166 А мне жаль, что я не застал времена доса. Вот бы я писал вирусы под него, да как бы ксорил ворды в уме! Тогда даже было проще впаривать вирусы лохам.
Что происходит при вызове Invoke и beginInvoke для кросс-поточных операций? Имею ввиду, вот, допустим, у меня есть два треда. Из одного треда вызываю метод объекта, созданного в другом треде. Получаю ошибку типа "ой братан кросстредовый вызов запрещённая операция всё такое". Начинаю использовать из второстепенного треда Invoke или BeginInvoke с делегатом метода объекта, созданного в основном треде. И вот что меня интересует: при вызове инвоук/бегин инвоук, я отправляю запрос на работу основному треду, и получается, что то, что я вызываю в инвоуках, происходит в том треде, к которому происходит обращение? Или я просто сообщаю треду-владельцу объекта, что вот мол щас братан вот сюда не обращайся, я пока чу чуть поработаю, и в итоге работа происходит во второстепенном треде, в котором и был вызван инвоук/бегин инвоук?
Антонио, мне нужна актуальная литература (на русском) по шарпу. Если, к примеру, на русском 6.0. нету, тогда годная 5.0. Кодил на уровне быдла на плюсах года три - не мое это, слишком я долбоеб хардкорно .
>>679359 вопрос был поставлен так: что ты хочешь улучшить?
можно написать один уровень абстракции сверху этих двух методов и вынести код туда, можно включить многопоточность, можно нафигачить всяких костылей умных и не очень
>>679384 потому, что Microsoft.Interop.*.Application, Document, Sheet, etc. - это COM-объекты. их надо убивать потому, что они могут висеть даже после закрытия основного потока в отличии от бэкграунд потоков каких-нибудь форм, которые убиваются CLR-ом
>>679388 Лучше ресурса чем ".NET and COM: The Complete Interoperability Guide" от Adam Nathan не встречал. Но тот анон прав - нахер не нужно, проще по мерам сталкивания с проблемами гуглить каонкретные вещи.
>>677765 >Но сейчас мне нужно что-то делать со свободным временем. Английский я уже знаю. >>677759 > который напишет задач за 3 часа и плюёт в потолок остальное время
Есть какая-то тулза, которая позволит промониторит в каких местах проекта занимается файл, в каких освобождается и т.п. Ходить в дебаге по коду и щелкать по файлу unlocker'ом - удовольствие сомнительное.
При каждом вызове метода Fill адаптера таблицы открывается дескриптор файла базы данных. В Unlocker'е это выглядит примерно так. Т.е. в коде у меня строчки dAdaptCars.Fill(dbDataSet.Cars); dAdaptCompany.Fill(dbDataSet.Company); dAdaptGenres.Fill(dbDataSet.Genres); и т.д. и после каждого такого вызова открывается файл и больше не закрывается вплоть до выхода из программы. Это вообще нормально? Куда копать?
В Гугле нашел "DataAdapter will open and close database automatically when they need", но ведь он не закрывает больше! Так и держит все эти соединения. Притом что все загружается в датасет и держать соединение с файлом вообще не нужно.
>>680609 >>680610 В смысле?.. Он же у меня потом используется, для обновлений в бд, получений ключа. Там в двух местах, но все же. Просто зачем открывать соединение с файлом для каждой таблицы отдельно и держать эти соединения открытыми.
>>680630 Я данные вообще не вытягиваю кроме одного раза при вызове Fill, чтобы заполнить датасет. У меня работы с бд реализована через отдельный класс-библиотеку и студия сама сгенерировала эти адаптеры под таблицы. Когда мне нужно обновить таблицу я вызываю
if (dbDataSet.Cars.GetChanges() != null) { dAdaptCars.Update(dbDataSet.Cars); }
Все удобно, но я сейчас заметил, что для каждой таблицы она открывает отдельное соединение и держит его. И мне это не нравится.
>>680640 Ну я попробовал сделать using (db.dbDataSetTableAdapters.CarsTableAdapter dAdaptCars1 = new db.dbDataSetTableAdapters.CarsTableAdapter()) { dAdaptCars1.Fill(dbDataSet.Cars); } И он все равно оставляет открытым дескриптор и файл остается занятым.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
ВСЯ ЛИТЕРАТУРА ВТОРЫМ ПОСТОМ
Breaking news: Microsoft купила Xamarin, JetBrains готовит IDE для шарпа, ведется активная разработка C# 7.0: https://github.com/dotnet/roslyn/issues/2136
1. Ресурсы:
- http://metanit.com/ (на русском)
- 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
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код этой шапки: http://pastebin.com/cKKXYArs
Прошлый тред тонет здесь: https://2ch.hk/pr/res/651013.html