Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
3. WinForms или WPF? Шо то хуйня, шо то - все пацаны на электроне ебашат. Еще есть Avalonia, но пока она сырая. Но если уж хочешь гуй на шарпе, то читай: Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить? Да, он совершенно прав. Даже микрософт постепенно переходит с шарпа на тайпскрипт. К сожалению, самые крутые языки никому не нужны. Неправда. C# кое-как развивается, недавно вышла седьмая версия шарпа, и уже активно разработывается восьмая. в ней pattern matching прям как в хацкеле будет! Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать? Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений Для мака и никсов самый юзабельный вариант - Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx ) Rider - платная IDE от JetBrains со всем функционалом решарпера и кроссплатформенностю. Если ты богат и сидишь на линуксе/маке, то это отличная замена VS. Для vim/emacs можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ). Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
6. С# для мобильной разработки Если нужны инструменты для разработке под мобилы, ставь сразу VS2017 и при установке выбирай все нужные компоненты. Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx Из актуальной литературы - Xamarin Mobile Application Development - Xamarin Essentials
7. Дополнительные инструменты для разработки на C# LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии dotPeek - бесплатный декомпилятор от JetBrains scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним Indent Guides - показывает вертикальные линии на каждом уровне отступов. Format document on Save - форматирует код каждый раз при сохранении документа Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
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 Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg
15. Литература не по шарпу, но так или иначе связанная с языком C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов. Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
16. Но я не знаю английский, как я буду это все читать? На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"
17. Что еще нужно знать, чтобы взяли работать за еду? - SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper - Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick - Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун - Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках - Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы - Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST - Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID
>>1366890 >Наконец-то нормальный перекат, без бомжей, школьников и прочей хуеты в шапке. Я ньюфаг, взял прошлый тред и скопировал по инструкции. Прошлые ОПы были настолько тупыми что с этим не могли справиться? Ужас! Ужас просто!
Перетащу из прошлого тренда в этот, для вот этого долбоеба >>1366518 >То-есть ответить на элементарный вопрос ты не смог. Ясно всё с тобой.
Блядь, вы чо, обезумели тут что ли? Вот вам метод из той самой программы с директориями
public void ProcessingDirectories(string dir1, string dir2) { try { if (!dir1[dir1.Length - 1].Equals(@"\")) { dir1 += @"\"; }; if (!dir2[dir2.Length - 1].Equals(@"\")) { dir2 += @"\"; };
//Заполняю коллекции именами подкаталогов (без путей) в каждой из папок. List<string> directoriesInDir1 = (from d in new DirectoryInfo(dir1).GetDirectories() select d.Name + @"\").ToList(); List<string> directoriesInDir2 = (from d in new DirectoryInfo(dir2).GetDirectories() select d.Name + @"\").ToList(); List<string> directoriesTempInDir1 = new List<string>(directoriesInDir1); List<string> directoriesTempInDir2 = new List<string>(directoriesInDir2); //Заполняю коллекцию именами подкаталогов, которые встречаются в обеих папках. List<string> directoriesDelete = (from d in directoriesInDir1 where directoriesInDir2.Contains(d) select d).ToList();
//Оставляю в каждой из коллекций только уникальные подкаталоги. directoriesDelete.ForEach(d => { directoriesInDir1.Remove(d); directoriesInDir2.Remove(d); });
//Создаю новые подкаталоги в каждой из папок в соответствии со списками уникальных подкаталогов. directoriesInDir1.ForEach(d => { OnStatusWrite(this, "Создаю " + dir2 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir2 + d); }); directoriesInDir2.ForEach(d => { OnStatusWrite(this, "Создаю " + dir1 + d.Remove(d.Length - 1)); Directory.CreateDirectory(dir1 + d); });
ProcessingFiles(dir1, dir2);
//Рекурсивно вызываю этот метод (ProcessingDirectories()), для того, чтобы проверить подкаталоги на наличие уникальных //подкаталогов 2-го, 3-го, 4-го ... N-го уровней. Сначала для подкаталогов первой папки, затем для подкаталогов второй. directoriesTempInDir1.ForEach(d => ProcessingDirectories(dir1 + d, dir2 + d)); directoriesTempInDir2.ForEach(d => ProcessingDirectories(dir2 + d, dir1 + d)); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
Теперь понимаешь, почему ты долбоеб и как рекурсия будет назад возвращаться?
>>1366895 Уже и сюда перетащил срачи. Глупенький маленький долбоёб. Иди вот в этот ПРИКРЕПЛЁННЫЙ БЛЯДЬ >>1215536 (OP) пост и читай >Большие куски кода желательно вставлять через ideone или pastebin. Уже само то, что ты неуважительно относишься к посетителям треда и анонам (копируя код просто в вакабу), заставляет к тебе относиться также и оскорблять тебя в ответ. А потом вы удивляетесь что тред скатился. Так вы же сами неуважение проявляете и ожидаете что к вам будут с уважением относиться.
>>1366895 Не совсем понял зачем ты переходишь на личности? Я тебя оскорбил как-то или что? Второе, я увидел твой код и получил ответ на вопрос в прошлом треде, я прочитал твой пост и был удовлетворён ответом (Спасибо кстати что запостил таки). Посему мне не совсем понятно зачем ты этот пост перетащил сюда?
Как удобнее всего отрисовывать быстроменяющиеся графики? Хорошо бы найти библиотеку, не хотелось бы колхозить свой велосипед с нуля Проблема в том, что должна быть возможность мышкой водить по графику и получать конкретные значения в данной точке. Когда "пауза", естественно
>>1366885 (OP) >Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
Большой и жирный пук. Работаю с д365 по хттп запросам - уебищные данные. даже распределить лист листов не могут в жсон. Шарик постоянно лагает, что еще говорить про саму компанию. Ебаный зашквар.
Особенно скобки.
И после всего этого ты такое высираешь? Ну и сиди дальше в своем говне.
>>1366885 (OP) На пикчах Сишный код. Здешние дотнетчики настолько тупые?
>>1367179 >актуальная В то время как нормальные люди с нее укатываются, зелень почему-то наоборот лезет. Возьми себе нормальный язык - го, пайтон, кресты, да даже джаву.
Книжки по асп нету сейчас, ровно как и дока, кроме каких-то избранных глав (web api, middlewares, filters, caching, di) нахуй не нужны, в основом мусор. Остальное по ходу доберешь. Можешь сразу ангуляр идти надрачивать.
>>1366990 >уметь в рэнжи Enumerable.Range существует хуеву тучу лет. Срезы, которые ты называешь "рэнжи", нахуй не нужны, а кому нужны те используют пайтон. Ведь нормальные люди используют язык по назначению, а не тащат его везде
Итак народ. Ситуация такова. Чем заменять циклы и переборы? Имеется задача, в которой надо описать функцию, которая принимает два строковых одномерных массива. Массив А и массив Б. "А" - включает в себя сайтики по которым хочет перейти пользователь. Например: "cards.uk", "smile.ogr", "wartime.de" и так далее. На а "Б" содержит в себе список запрещенных доменов. Если домен заблокирован, то все его суб-домены тоже. К примеру если заблочен "never.smile.org" то на smile.org перейти можно, а вот на "just.never.smile.org" нельзя. Я просто не знаю никакого другого способа, кроме как перебора. Алсо возвращать функция должна целочисленный массив с индексами из "хороших" доменов массива "А". Чем заменять эти циклы с переборами? Рекурсивные функции тоже не вариант, т.к. тоже перебор
>>1367207 >нормальные люди используют язык по назначению, а не тащат его везде анонимные функции, нулл пропагейшен, стрелочные операторы, кортежи и пердолинг вокруг них, async Main, локальные функции - это все для нормальных людей, да? а слайсы, значит, для педиков. я так никогда не проигрывал
>>1367208 если это задача с собеса, предлагаю его дропнуть
>>1367230 ну это по условию задания типа обойтись без циклов и итераций? задача без практического смысла, более того, заставляющая тебя вертеть хуету там, где самый простой способ решения - самый оптимальный. вот я бы человека, решившего подобное, не рискнул себе бы взять в тиму, ибо кто знает, сегодня он массивы знает как не перебирать, а завтра классы с интерфейсами писать перестанет. ну а че, так же можно, все в одном месте, а главное, дебажить удобнее
>>1367233 Да, нужно было взять и проверить на какие сайты заходить можно. А цикл - слишком медленно работал бы. Типо если 1000 хотелок и 100 блокировок. то это 100к переборов. Я уже склоняюсь к тому, что надо массив Б перерабатывать в дерево и через это с ним работать... алсо запросил у них корректное решение, самому пиздец интересно
>>1367208 Есть же методы в стринге - contains или что в котором это есть или это читерство? Если по велосипедному то тут насколько я понял есть правило - домен одинаковый с конца и до какого-то символа, можно либо сабстрингом пердолиться либо строки создавать как-то с индексов чара, или обрезать оригинал и сравнить, правда там все равно внутри есть переборы.
>>1367208 1)заблокированные домены пихаешь в Set 2)пишешь функцию извлечения домена для адреса (если 1 точка - вернуть как есть, если >1 то регуляркой можно (с позитивным просмотром вперёд и символом конца строки,например)) 3)для а пишешь а.вере(адрес => !сет.содержит(домен(адрес)))
человеки челики челибосы, что вас (вы) спрашивают (спрашиваете) на собесах про ASP.NET? время жизни запросов, архитектуры MVC/REST, IIS, валидация модели, фильтры, ViewBag/TempData - это дефолт (из моих воспоминаний). че еще этакого?
Сишарпошки, поясните новичку пожалуйста. Читаю Вайтакера, дошел до рекурсий, но не понимаю одного момента: у меня есть переменная с числом, я сую число в метод с рекурсией, в рекурсии все нормально отрабатывается, число увеличивается, но в главном методе число все еще считается маленьким. Почемууу?
using System; \t\t\t\t\t public class Program { \tpublic static void Main() \t{ \t\tint num = 1; \t\tConsole.WriteLine(num);//здесь num = 1 \t\tnum = Recursia(num);//тут внутри метода num = 25 \t\tConsole.WriteLine(num);//здесь num = 2 \t} \t \tpublic static int Recursia(int i) \t{ \t\tif(i<10) \t\t{ \t\t\ti = i * i;\t \t\t\tConsole.WriteLine("i="+i); \t\t\ti++; \t\t\tRecursia(i); \t\t} \t\treturn i;\t \t}
>>1367432 >i = i * i; >i++; я хуй знает, что за магию ты писал, но это значение изменяется только в пределах метода и результат рекурсивного вызова Recursia(i) не сохраняется
>>1367429 >>1367433 Не слушай местных петухариусов про ссылку и указатель - они долбаебы сами нихуя не поняли и советуют костыли! Ты не совсем правильно понял как работает рекурсия и тебе возвращается изначальный первый проход в котором i = 2 (очевидно). Если ты прошелся бы дебагером то увидел что возврат рекурсивно вызванных методов совершается с конца. Глянь вот это - там разбирается дерево рекурсии https://ulearn.me/Course/BasicProgramming/Derevo_rekursii_670fa739-0f73-450c-b877-eaa6264a34fc И в рекурсии как правило нужно писать условие выхода в начале вот метод без костылей: public static int Recursia(int i) { if (i > 10) return i; i = i * i; i++; Console.WriteLine("i=" + i); return Recursia(i); }
Блядь, это весна что ли началась? Откуда такой набег идиотов? Вон же выше пример кода с рекурсией, погляди как она работает, не доходит? Возьми свой код и гляди дебаггером, что и как изменяется.
>>1367428 Хуй знает, был в январе на 10 собеседованиях - это был просто ёбаный цирк с клоунами и конями. Причём параллельно был на собеседованиях по PHP, даже там было на пару уровней серьёзнее. Суть в том, что ничего из именно программирования меня не спрашивали. Все вопросы были расплывчатыми и обобщёнными. По типу, где работал, что писал, к какой БД конектился, MVC знаешь? Что такое C из MVC? А что он делает. Максимум из профи спрашивали SOLID и core. Ну это тоже изи. У меня создалось впечатление что никто в душе ниибёт что такое ASP и как собеседовать. Зато на вакансию PHP за копейки вопросы блядь такие, что я охуевал просто. Один раз прямо на собеседовании дали ноут и 4 часа на "'Вот практическое задание, вордпреии и плагин, напиши магазин".
>>1367479 обилие фреймворков овер ASP поражает воображение. и большая часть того, что там есть, сделана и так нормально, что челикам даже не нужно знать работу под капотом меня до сих пор бесит вот это "а с ASP работали? ну, с MVC. а с Razor работали? а сессии использовали?". та ебать, это все дефолтная хуйня в асп. с другой стороны, куча дурачков, которая для проекта на ASP.NET писали свои конченые foreach и знать не знали, что есть какие-то модели, роутинги, валидации, сессии, реквесты
>>1367489 >писали свои конченые foreach и знать не знали, что есть какие-то модели, роутинги, валидации, сессии, реквесты Не, норм. Если ты опытный, то быстро всё поймёшь. По крайней мере лучше чем искать документацию к 30 разным хуёвинам которые просто в итоге по разному предоставляют вью.
>>1367494 Я найду что говорить на собесе, не беспокойся. По крайней мере не буду говорить "Ой, тут foreach сделаны, это сложно. Я вот только через фрэймворк velosiped всё делал, это прогрессивно!".
>>1367360 В чем жир? Да, это скриптодристня, но перспективы там лучше. Начиная от спектра задач, котлетой, кривой обучения. Сеньеров дотнетчиков с двумя годами опыта видел? Не видел потому что их нет. На скриптодристне же, сеньеры с двумя годами опыта - вполне Это еще опуская факт того, что там люди приемущественно копаются в пайтоне, а здесь приходится работать еще с ангуляром.
>>1367639 Ты видимо, немного тупенький раз не понял, что речь о частных случаях и не о вкатывальщиках без опыта работы. Поясняю: 2 года опыта на конкретной платформе. По-мимо этих двух лет, еще 2 года НОРМАЛЬНОЙ вышки, благо такая еще осталась. (при условии что человек начал работать на третьем курсе, если нет - тогда 5 лет вышки) Еще бывают и такие варианты: человек отработал 2 года на одном стеке, сменил стек, отработал 2 года, ты можешь сколько угодно доказывать манагерам что человек сильный и тянет на сеньера - им будет похуй.
>>1367660 так я че-то не понял, что мешает подрочить 2 года дотнет при условии наличия опыта на другом языке (допустим даже компилируемом со статической типизацией) и стать сеньором?
>>1367680 >только речь о питоне >>1367680 >бегом рассматривается на сеньорность Не бегом, но там в этом плане проще, разная кривая обучения, этот вариант хотя бы будет рассматриваться. Даже три года на дотнете - это самая низкая планка по сроку для сеньера, при условии что там действительно есть за что его давать. Хотя опять же, это во многом от конторы зависит.
>>1367696 >но там в этом плане проще Потому что уровень питонистов почти всех это вкатывальщики ебаные. В этом говне, если ты с пяток либ сможешь скомпоновать (потому что одна только на одной версии работает, другая на другой, третья с ними конфликтует), то ты уже сеньор-помидор, хуле с этих скриптовых долбоебов взять
>>1367696 в общем вывод такой, что нормальный язык - это потому, что можно стать сеньором за джва года с условным опытом чуть побольше язык только в дата-саенсе используется (потому что именно под него и создавался), и порог вхождения в него - три дня и шесть бутербродов, - это ладно, бывает. в моей конторе есть какие-то мифические Python Backend девелоперы. хуй знает наверное нужными делами занимаются
>>1367766 Пиздец ты охуел? Люди которые с нулевых ебашат как хуй знает кто, вот их действительно можно назвать сеньерами, йоба архитекторами итд. А 2 года в продакшене это только только мидл.
>>1367766 >что можно стать сеньором за джва года с условным опытом чуть побольше
Я не совсем так сказал, но посыл примерно такой. Основная претензия к дотнету - отсутствие альтернатив в плане задач. Что на пайтоне что на жабе есть бигдата, на пайтоне еще машоб. С жабы можно укатится на скалу. А на дотнете что? Нихуя. >>1367766 >Python Backend девелоперы В моей тоже есть. При всём этом: во фронтенде не копаются от слова вовсе, получают не меньше. Итого: зачем тратить пару лет на дотнет? Чтобы ковыряться в тс и ангуляре и получать столько же?
>>1367775 так шарпы - изначально язык общего назначения, но наиболее эффективнен как бекендовый, с развитием кора и адекватной кроссплатформенности это становится еще более явным фактом. легаси никто не отменял, как и винформс с девекспрессом, но это бремя зрелых языков, никуда не денешься. ангуляр и тс - это жопоболь аутсорс-рынка моя, в том числе преимущественно насчет перекатов - изучив один язык, ты можешь перекатиться с условной легкостью куда-то еще, было бы желание. я очень сильно не уверен (хотя не отрицаю), что зная ее-джяву, ты прям на изи въедешь в скалу, или котлин (что там еще на жвм?). так же как и, пиля бигдату на питоне, прям лайк э босс закатишься в машоб
>>1367778 >вкатывайся в бигдату из тырпрайза Если бы будучи зеленым дебилом, устраивался бы на четвертом-пятом курсе, а не на третьем - работал бы дата саентистом. По поводу переката из тырпрайза - тонна знакомых на жабе укатилась в бигдату.
>>1367778 >Магистратуру по выш. мату закончил надеюсь? У меня бакалавр по CS, магистратура как правило это "было бы плюсом", но не обязательное требование. Да и бигдата мне нахуй не нужна, я на машоб целюсь.
>>1367784 >легаси никто не отменял Я не считаю классический MVC легаси, потому что на нем работал. А на проекты на вебформах не кидали, потому что всегда проще снять с текущего проекта людей, который уже знают специфику проект на формах ибо когда-то делали его. Десктопа в конторе нет и слава богу. >что зная ее-джяву, ты прям на изи въедешь в скалу На изи ничего не бывает. Но такая возможность есть, потому что если нужен разработчик на скале, то зеленых брать не будут, а возьмут человека работающего на джаве. С перекатом на сам Kotlin проблем нет, если ты до этого работал на андроиде на джаве. Если со спринга - проблемы будут. >>1367784 >пиля бигдату на питоне, прям лайк э босс закатишься в машоб На "изи" - нет. Там совершенно разные области и разная мат. подготовка.
Всем привет. В конце прошлого года был юристом, теперь работают на C# (а также немного на JS). Всё очень нравится, программисты как люди душевнее привыкших подскакивать кабанчиков юристов, хотя невероятные интроверты. Работаю с CRM-фреймворком, теперь вопросы. Какие инструменты повышения квалификации лучше? Понятно, что читаю Рихтера, изучаю ASP.NET и хочу погрузиться в .NET Core. Про GeekBrains слышал негатив. Очередное высшее образование не рассматриваю, так как хорошо знаю это бесполезное болото изнутри. Как получить максимум возможных знаний наиболее эффективным способом?
Алсо, стоит ли смотреть в сторону Unity и геймдева? У меня прокачанные мягкие навыки, литературные навыки, художественные навыки, организационные. Всё это может пригодиться.
EntityFramework почему-то не обновляет значения навигационных свойств, свойства обычных типов обновляются, а эти нет, в чем может быть дело? Добавлю, что эти навигационные свойства входят в альтернативный ключ, хотя и свойства обычных типов тоже.
Антоны, насколько сильно нужно знать Джаваскрипт, если я хочу устроиться джуном? Что лучше учить, джаваскрипт дальше Я прочитал первую книгу Кантора или выучить asp.net core? Сейчас я знаю только Asp.net MVC
>>1367796 посмотри рынок вакансий, актуально и то и другое, а требования везде разные. по-хорошему, знать бы всего да побольше, но по факту требовать много от джуна бессмысленно
>>1367818 А, да. Блять, я просто туплю как мне сформулировать условие чтобы сравнивать больше ли строка в отсортированом массиве строк? if (valueString > phrases)
/// ///Возвращает индекс левой границы. ///То есть индекс максимальной фразы, которая не начинается с prefix и меньшая prefix. /// Если такой нет, то возвращает -1 ///
>>1367788 >стоит ли смотреть в сторону Unity и геймдева? Только если душа лежит. Так денег мало, а работа тежелее чем на asp веб формочки лепить. И да, нужно уметь в матешу или художественные скиллы.
Можете пожалуйста кинуть решение/помочь ибо код я написал в студии затестил - РАБотает normalno, а в их сендбоксе на каком-то тесте ловлю stack overflow.
>>1367845 >if (string.Compare(prefix, phrases[m], StringComparison.OrdinalIgnoreCase) < 0) return m - 1; Смущает тут -1 в ретурне. Ты проверяешь слово с адесом m, но возвращаешь как заматченое слово (m - 1). Можно словить выход за границы массива.
>>1367845 >if (left - right == Math.Abs(1)) return -1; Тут не проверяется условие на равенство left и right. Если будет ровно ноль, то улетит в сек оверфлов.
Наверно поправить нужно так: (left - right) <= Math.Abs(1)
>>1367856 Я не знаю какие там внутри тесты, а у меня нормальные результаты, скорее всего там реально оверфлоу на каком-то тесте и/или я беру дохуя памяти (>1мб). И почему <= 0 ? Там смысл был в том что если левая граница - правая граница = 1 элемент то значит некуда больше и идти и результат не найден. >>1367857 >поменять местами Абс-костыль это вроде как контролил.
Пиздец какой-то, ЯННП, призываются труъ эксперты. Дошел до теста: Error on: Prefix [a], phrases [ab, ab, ab, ab] result should be -1, but was 0. Получается так что по алгоритму бинарного поиска я какбэ(?) постепенно должен делить массив, я делю первый раз и в данном случае это должен быть 1 -1+(4-(-1)+2) = 1.51.5-1 = 0.5 = 0, но тест требует от меня границы самого первого вхождения. И как это тогда сделать? Добавлю что в метод я не могу добавить дополнительные передаваемые параметры. Или я долбаеб?
>>1367932 Хочу туда на стажировку после диплома ulearn это курсы от СКБ Контур Проходил курс, забросил на 20% первой половины Так как читал книжки, все было знакомо. Но, выполняя практические задания, кое-что попутно узнал: ранее я избегал рекурсию, но было задание подсчитать число високосных лет на отрезке, не используя циклы Набросал пример, он не работал. Переписал, заработал. Попутно загулил, где вообще это применяется, прочитал книгу "Грокаем алгоритмы", где рекурсия да и все остальное объясняется просто охуенно. Раньше не доходило, что все нужно сводить к базовому случаю. В общем, рекурсию я полюбил
Но потом меня утомило, что после каждого задания я ухожу в необязательные дебри — сам курс проходится медленно. Так учу по книжкам и документациям
>>1367943 Впрочем, дело скорее во мне. Конечно, в дебри уходить не нужно, весь материал зачастую тебе дают в роликах. Просто я немного аутист и люблю закопаться поглубже. С таймменеджментом проблема
Сап, аноны. Читаю Троелсена, дошел до момента подписи сборки и всего этого говнеца. Автор создал две сборки и поместил их в GAC. У этих двух сборок одинаковый маркер открытого ключа не ебу как правильно называется мешанина символов после версии сборки. Однако у меня нет. Сейчас не у ПК, скрины сделать не могу, но я делал все то же самое, что и по книге (кроме названия сборки, заместо CarLibrary сделал test_l), но маркер открытого ключа все равно разный у обоих сборок. Меня бы это сильно не волновало, если бы не то, что дальше по книге предлагается в конфиге перезаписать версию используемой сборки, что у меня не получается сделать: приложение все равно использует старую версию. В конфиг файле все перепроверял, ошибок нет. Может ли быть такое, что это именно из-за этого маркера? Или я тупой? Пропускать не хочу, ибо наверняка попадется что-то, что требует знание этого процесса.
>>1367939 Вот только не нужно хуйню нести, ладно? Там начиная с ~половины первого же курса есть таски с реальной хуйни. Ту хуйню над которой я пердолился - поиск возможных слов как в клавиатуре на телефоне. >>1367933 Вон один выше уже дочитался до раздела с рекурсией и нихуя почти не понял.
>>1367798 Поменял в представлении значения, нажал сохранить и перешел в метод где буду все это сохранять. Туда передалась валидная модель со всеми изменениями (только навигационные свойства у нее все null но по идее это ж нормально), вызываю update в котором сперва делаю context.Entry(entity).Attach(); затем context.Entry(entity).State = EntityState.Modified; потом отдельно уже вызываю SaveChanges, который возвращает не 0. В контексте сущность поменялась как в локальном списке, так и не в локальном. Но в базе почему-то нет. При этом, если я после SaveChanges сделаю запрос на получение этой сущности GetByID, то получу сущность с ИЗМЕНЕННЫМИ параметрами как и должно быть. Но потом я делаю редирект на Index и в итоге я в представлении вижу эту сущность, у которой поменялись примитивные свойства, а навигационные - нет, как и в базе этих изменений нет.
>>1367985 >только навигационные свойства у нее все null но по идее это ж нормально отсюда я уже начал теряться ты зависимые модели меняешь через Entity.RelaviteEntity.Property = "42" что-ли?
как-нибудь около-псевдокодно, я не знаю, покажи, как именно ты чего там меняешь. или на пастебин всю простыню заебашь, я не думаю, что у тебя там много всего происходит
>>1367988 Если что, у меня навигационные свойства в модели описаны так: public int RelativePropertyID public RelativePropertyType RelativeProperty Сам я ничего не меняю. У меня в представлении есть форма с полями модели, я делаю submit и у меня в контроллер приходит собранная модель, у которой RelativePropertyID заполнен изменённым значением, а RelativeProperty null. И эту модель из представления я уже пытаюсь сохранить. context.Set<TEntity>().Attach(entityToUpdate); context.Entry(entityToUpdate).State = EntityState.Modified; context.SaveChanges();
>>1367958 Да, кажется, у Троелсена было два примера (про числа Фибоначчи и факториал числа), и этого было мало
Ты уже где-то работал, раз говоришь, что там реальные таски? В таком случае вернусь к курсу. Есть какой-то страх перед тем, что приду на работу, а там все пилят нечто невообразимое
>>1367999 Нет, не работал, но это можно понять с самого задания как я выше навел. Не то чтобы там было что-то невообразимое, там по большей части какая-то простая хрень, но с заготовленной кучей подводных, как в принципе и в реальных заданиях (делал пару петпроджектов, очень сильно была разница между тем что я ожидал и тем что получалось в итоге).
>>1367996 >public RelativePropertyType RelativeProperty чтобы проперти работало как навигационное, нужно его маркать как virtual вообще, для code first есть конвенции
>>1367882 >Или я долбаеб? Нет это они долбоебы. Перед бинарным поиском для повторяемости результата нужно дропнуть дубли. Но они предлагают тебе отгать загадку как там задумано на самом деле и передаю в метод некорректную хуйню.
В нормально коде такой проблемы даже бы не возникло т.к. ты контролируешь его полностью(ну почти).
>>1368051 Хорошо, и как это кроме очевидного перебора можно реализовать? Люди же как-то сдают. >>1368049 Что это велью тайп, я знаю это и просто уточнил. >>1368048 В каких случаях?
Будут ли в EF работать навигационные свойства, если не добавлять им атрибут [ForeignKey]? Если да, то зачем вообще нужны FK в EF? Только для того, чтобы не давать удалять объекты, которые референсятся через FK в другом объекте?
>>1368043 1) Нажимаю в представлении редактировать, перехожу в обработчик Get запроса и получаю там выбранную сущность по ID, на скрине значения. 2) Поменял в представлении Teacher и Semester, нажимаю сохранить перехожу в обработчик Post запроса, мне туда приходит модель из формы с изменёнными значениями. Я делаю update как я уже писал, сначала аттачу ее, потом state=modified, делаю context.savechanges() он возвращает 1 3) Ради интереса делаю запрос на получение этой записи по ID, получаю сущность с изменениями, НО в базе изменений не произошло, все осталось как было.
>>1368101 >если не добавлять им атрибут [ForeignKey] ну есть Fluent API
если так же принцип следования конвенции. если помечать референсы виртуальными и правильно объявить тип/объект, то EF раздуплит связь между энтитями
>зачем чтобы отрефлектить связность таблиц в модели, чтобы дать всему, что отвечает за построение и валидацию модели, полную картину происходящего, дабы потом у тебя запросы работали адекватно. конечно, если у тебя тупой CRUD в каждую таблицу, то все это опционально
>есть так же принцип следования конвенции. если помечать референсы виртуальными и правильно объявить тип/объект, то EF раздуплит связь между энтитями
а если без fluent API, вот проста public int ClassB_Id {get; set;} public virtual ClassB ClassB {get; set;} - вот у этого EF всегда нормально будет ClassB вытягивать из БД без FK?
>>1368103 >запрос на получение этой записи по ID EF достает данные из Local, в рамках уже существующего контекста ты, конечно же, получишь актуальные данные
попробуй повесить интерсептор на свой контекст. и в момент SaveChanges посмотришь, какой запрос улетает на сервер. обновление у тебя происходит, но это може быть обновление совершенно левой записи. опять таки, на словах я не вижу ошибки.
>>1366885 (OP) >>1335434 (OP) Анон в каком месте я лажанул? ------------------------------------------------------------------------ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OLD { class Human { public int Age { get; set; } public string Sex { get; set; } public string Name { get; set; } public void SayHelloToBitch() { Console.WriteLine("Ну привет шаболда"); } } } ------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace OLD { class Boozer : Human { private Liver Liver = new Liver(); protected Boaroshnik Boaroshnic = new Boaroshnik(); public void NassatVPadike() { Console.WriteLine("Опять кто-то подъезд обоссал"); } } static void Main (string[] args) { Boozer Seva = new Boozer(); Seva.Name = "Дядя Сева"; Seva.Age = 50; Seva.Sex = "Мужичара"; Seva.SayHelloToBitch(); Seva.NassatVPadike(); Human man = Seva; Boozer boozer = man as Boozer; if(boozer != null) { boozer.NassatVPadike(); } Console.ReadKey(); } } ----------------------------------------------- namespace OLD { class UltraBoozer : Boozer { public void ChoDrink() { Console.Writeline(Boaroshnik); } } } ----------------------------------------------- namespace OLD { class Boaroshnik { } } ------------------------------------------------- namespace OLD { class Liver { } } -------------------------------------------------------------- Ошибка\tCS0116\tПространство имен не может напрямую включать в себя такие члены, как поля или методы.\t Ошибка\tCS0117\t"Console" не содержит определение для "Writeline". Ошибка\tCS0119\t'Boaroshnik" является тип, который недопустим в данном контексте.
>>1368352 короче. inb4 в EF Core я шарю практически никак. и тот подход, который ты юзал, работал в дефолтном EF от чего у меня знатно подпекало на проектах. я не фанат такого способа обновления данных, и, если я прав и команда Core избавила фреймфорк от подобного инвалидства/костыляния, я апплодирую стоя
я сильно подозреваю, что суть в поведении StateTracker'а, который понятия не имеет об исходном состоянии entityToUpdate, и, соответственно, не видит изменений при попытке их детектирования (я изменил только Semester на UI): пик 1 - значения в базе пик 2 - что StateTracker знает об исходном состоянии энтити пик 3 - что StateTracker получает как "измененный" стэйт энтити
для долбоебов: - контекст только что был создан и там вообще нет никаких локальных данных - ты передаешь какой-то объект в контекст с просьбой помаркать его как измененный - вызывается SaveChanges -- трэкер пытается детектить изменения: -- видит: оригинальный семестр - (2), измененный семестр - (2) -- уволить, отказать. идем дальше (а данных больше и нет) ебошим UPDATE, в котором не апдейтится ничего
я сделал по-еблански: вытащил данные из базы, прошелся по всем пропертям, чтобы обновить их значения на то, что прислал браузер - пик 4. соответственно, unitOfWork.{}.Update я послал к хуям ибо трэкер по-дефолту и так уже в курсе про изменения.
но это привело к ошибке обновления ключа: пик в следующем посте. в душе ниибу, что такое AlternateKey. закомментировал OnModelCreating::modelBuilder.Entity<GroupLoad>().HasAlternateKey и был счастлив
В треде какие-то довны судят о знаниях по времени, мол поработал 2 года и синьор. Охуеть вообще. Синьор это знания и личные качества, а не "Я сидел на стуле 2 года."
>>1368369 То есть, твой подход сработал и данные обновились в базе, но после того как ты закомментил строку с альтернативным ключом? Странно, неужели нельзя у записи менять атрибуты, составляющие альтернативный ключ? Попробую сделать как ты сказал, если интересно, вечером сообщу. БТВ, что за шрифт у тебя в студии?
>>1368368 > видит: оригинальный семестр - (2), измененный семестр - (2) -- уволить, отказать. идем дальше (а данных больше и нет) Не совсем понял. Почему их больше нет?
>>1368196 >И то что он храниться в стеке, а ссылочные типы хранят референс в стеке на объект в куче, так? Так, и что из этого? Меня так на собеседовании дрочили
>>1368484 В стэке хранятся ссылки на ссылочные типы. Когда ты присваиваешь что-то типа object a = new object(); var b = a; То ты переменеой b присваиваешь ссылку на a. И если ты изменишь что-то в a, то изменится и b, так как это один и тот же обьект из кучи. Так же само, когда ты сравниваешь ссылочные типы, ты сравниваешь только ссылки. Значимые типы могут лежать прям в стеке. И при копировании, ты копируешь все значение, а не только ссылку. Так же, значимые типы могут стать ссылочными - когда ты пишешь object o = 5; Ты даешь переменной о ссылку на int 5 в куче. При возврате назад к инту, в стэк будет копироваться значение из кучи. пиздос, как можно идти на собеседование и не знать этого
>>1368368 Бля, чувак, спасибо тебе огромное, я просто супер еблан. Я пытался апдейтить свойство, входящее в альтернативный ключ, а ef это запрещает. Пиздец...
>>1368544 у тебя там явная борода с инициализацией значений базочки про завтыки в самом веб-проекте, я думаю, ты сам знаешь советую после всего просто дропнуть базу, и накатить все по-новой
>>1368004 >Платиновый вопрос: >Нахуя нужен struct если есть class? >Класс - ссылочный тип. >Структура - значимый тип. И чо? Нахуя нужен struct если есть class? Какая разница значимый тип или ссылочный в данном случае? К этому все велось.
>>1368507 >пиздос, как можно идти на собеседование и не знать этого А я где-то написал, что не знал? Вопрос был - нахуя struct, если есть class? Ради радости присваивания через оператор = ? Где реально эти структуры используются, например? Вот вопрос, который меня в тупик на собесе поставил был такой: try catch finally, зачем нужен блок finally? Я грю, ну он сработает после выполнения try или catch в любом случае. Хорошо, а где это используется? Я ни одного примера придумать не смог.
>>1368624 вообще, еще пример, пару раз был пригоден в проектах: нужно выполнить логику без оглядки на результат работы. естественно, в случае фейла, не нужно завалить вызывающий код в таком случае пишешь пустой finally
>>1368588 > Где реально эти структуры используются, например? Инты, даты и булева тебе не нужны? Это ведь был бы пиздец, будь у тебя даже они ссылочными - как тогда вообще построить функцию, котарая берет данные на вход и возвращает что-то обратно, не изменив входные данные? И ты даже никак не узнаешь, изменились в этом ссылочном типе данные или нет. Кароче они нужны когда тебя нужна иммутабельность.
>>1368588 Можно закрыть открытые потоки в файлах. Я знаю одного спросили как закрыть потоки в файлы если метод оче большой и сложный и еще что-то. Ответ - деструктором. Немного не то но похоже.
>>1368741 >Можно закрыть открытые потоки в файлах Это если ты долбоеб и не юзаешь оператор со скобками, который так или иначе закрывает все твои потоки
>>1368756 >пустой catch - это ультрахуевая практика, даже если тебе этот кэтч реально не нужен. пустой finally тебя ни к чему не обязывает Но ведь вопрос был зачем finally нужен. Даже если в catch я кидаю в лог исключение, зачем finally?
>>1368759 та блять. говорят уже раз третий тебе, чтобы гарантированно выполнить какой-то код, даже если основной блок отвалится [/spoiler]самый верняковый пример - закрытие соединения, релиз блокировки или файла
>>1368762 >даже если основной блок отвалится Какого хуя он у тебя отвалился? И пример давай, вот прямо рабочий, что ты там пишешь? Я же тоже сказал, что будет использоваться, по сути в качестве деструктора. Но у меня уточнили, где ты его применял?
>>1368803 Он очевидно говорит про подход аля кресты - делаешь класс аллокатор соединения из пула, освобождение соединения суешь ему в деструктор Dispose.
>>1367843 Вообще, очень лежит, так как энтерпрайза я наелся ещё будучи юристом. Но я прекрасно понимаю, что геймдев - это вовсе не работа-игра, просто нишевая разработка с особенностями.
>>1368812 в следующий раз когда на собеседовании придется рассказать про использование try-finally в проектах, скажи, что это говно без целей и задач, а разрабы языка - долбоебы если спросят, почему так, можно ответить: потому, что пети из двачей не доказали реальные кейсы применения, а подпихнули говнокод, который хуйня
Анончики как быть? Устроился в небольшую фармацевтическую кампанию, поддерживать код на winforms. Все круто. Недавно начальник сказал что будем переходить на asp net, а на winform забиваем. Мне как бы не проблема выучить JavaScript, разметку, бд и СУБД, но мне ближе разработка под десктоп. Я сразу полюбил разработку под десктоп, когда начинал. А вакансий других нету вообще, что делать?
>>1368816 так а кто спорит. а если логика чуть сложнее, чем открыл/закрыл?
>>1368892 страдать. десктоп был мертв еще в момент, когда я пытался вкатиться. у меня на работе есть полностью десктопный челик. взяли его в контору только потому, что была острая нехватка дотнетчиков, а проект стартовать надо прямо уже. конечно, ему пристроили место в UWP-проекте, но много ли таких на рынке? можешь попробовать смигрировать
>>1368905 >так а кто спорит. >а если логика чуть сложнее, чем открыл/закрыл? Блядь, ты привел код, да? Да! Тебе сразу недоджун сказал, почему не через using, finally избыточно в данном случае, ты попой покрутил и сказал, что так и должно быть, не долбоебушка ли ты часом? Логика чуть сложнее, чем открыл/закрыл? Так приведи пример этой логики. Пока что ты хуйню избыточную привел, вместо ответа, зачем finally нужно
>>1368905 >а если логика чуть сложнее, чем открыл/закрыл? А ты пример этой логики приведешь? Мне пока на ум приходит только то, что от сервера можно получить какие-нибудь неверные данные и попробовать еще раз. Но это скорее из джаваскрипта пример, хз, нужно ли такое в шарпе
>>1368998 retry в случае ошибки, да; какой-нибудь пул соединений и/или Unit of Work вообще в приложениях сложнее moy_kursach заботу об управлении коннэкшном (ну и не только, просто это наиболее очевидный/часто встречающийся пример) не берет код/класс, который с этим соединением получает/записывает данные. а раз ты разделяешь ответственность, то появляется соблазн переиспользовать ёмкие ресурсы повторно (например, для какой-нибудь операции, которая выполнится через две строчки кода; или шире: в любом последующем ветвлении какого-то флоу). отсюда тебе мало написать using, ты не знаешь, в какой момент времени еще управляемый объект может понадобиться
могу другой, немного высосанный из пальца пример привести, не связанный с базой: юзер загружает картинку в твое приложение, но оно нарушает правила использования сервиса: - бэкенд принимает файл, записывает его во временный сторадж - идет попытка применения его для данных пользователя с сопутствующей проверкой. например, это аватарка и она хранится в каком-нибудь блоб хранилище - файл нужно удалить из temp, дабы не хламить место, что бы не произошло условно говоря, у тебя будет action контроллера, обернутый ExceptionFilter-ом (соответственно, блок catch в нем будет (скорее всего) отсутствовать), а валидация, сохранение, еще что-то происходит в глубоких ебенях сервисов/репозиториев. и в этом случае try/finally тебе поможет: удалить файл если был выброшен эксепшн; не копипастить логику обработки фильтром ошибки в catch блоке (и не писать catch { File.Delete(); throw; })
Бля, как же меня уже заебал ебучий впф, сука. Впф - это просто кусок сырого непроработанного говна, где ничего не работает, где запилено дохуя говнофункций, которые нигде не используются или замещают друг друга. А впф плюс мввм - это вообще говно мочи. Есть, блять, удобный code behind, где ты спокойно запиливаешь все эвенты, но НЕТ, сука, нельзя так делать, ведь тогда швятой мввм не соблюдается и нужно запиливать все эвенты через злоебучие команды, которые работают через жопу и требуют миллиард дополнительных строк нечитаемого кода. А некоторые эвенты вообще хуй через команды сделаешь. И хули делать? Вот, кто, сука, решил, что чистый code behind - это хорошо? Его что, блять, по приколу что ли запилили?
>>1369105 >мввм не соблюдается и нужно запиливать все эвенты через злоебучие команды, которые работают через жопу и требуют миллиард дополнительных строк нечитаемого кода ты уверен, что все делаешь правильно?
>чистый code behind - это хорошо так нынче хорошо все, что кодогенерацией облегчаетнет/ускоряет разработку. написание приложения через объявление вью-моделей и разбиение логики по командам а-ля десктопный CQRS - это как раз о том
>>1369105 >кусок сырого непроработанного говна >>1369105 >плюс мввм - это вообще говно мочи. >>1369105 >удобный code behind >>1369105 >запиливаешь все эвенты >>1369105 > Его что, блять, по приколу что ли запилили Анекдоты уровня /pr/
На самом деле, ты просто слишком туп, чтобы понять все приемущества и мощь WPF. На твоих хелоуворолдах использовать его нет смысла - используй формочки. Алсо, qt бляди до сих пор завидуют байндингам которые есть в wpf
>>1369011 >retry в случае ошибки, да Минуту, я хуйню сказал, это в catch нужно. >этом случае try/finally тебе поможет: удалить файл если был выброшен эксепшн; не копипастить логику обработки фильтром ошибки в catch блоке Почему "если", через finally в любом случае произойдёт удаление.
>>1369275 >Сидел на обоих, xaml отсасывает у qml с проглотом. О, индивид заявляет что сидел на WPF, но когда ему рассказывают про приемущества Binding выражений и Dependency Property, он начинает сравнивать xaml и qml. Дай угадаю, ты "сидел" ковыряя свою "лаба 1", но при этом не работал, верно?
>>1369187 >ты уверен, что все делаешь правильно? Уверен. Расскажи мне, например, как адекватно реализовать datagrid column header click через команды, но мало того, чтобы команда ещё и объект datagridcolumnheader возвращала. Или как привязать команду к гриду, который находится внутри табконтрола? А никак.
по существу, ты хочешь на любой пук иметь возможность подцепить все, что придет в голову? ну, естественно, такого не бывает. в данном случае надо поднаписать чуть-чуть своей реализации поверх дефолтного контрола. в WPF я редко видел как обходятся стандартным набором компонент, а зачастую, и пишут врапперы поверх библиотечных ты-то вообще сам как хотел бы, чтобы выглядела твоя привязка? я даже не знаю, зачем тебе возврат значения из ICommand.Execute. оно не для того придумано
>>1369501 так биндинг в впф это обертка над ивэнтами тащемто просто чтобы рандомные ивэнты подключить, надо чутка постараться. разрабы решили особо и не стараться
Сисяны, нужен совет. Есть я - изучавший сисярп 2 года детально, так что хоть и дошёл до паттернов основных только, но зато без пустоты в голове и прочего. Но увы, я оступился и залез в каку, имя которой Swift. Сейчас хочу вернуться, посоветуйте, с чего можно освежить память и двинуться дальше
У меня есть многопоточное приложение. Возникла необходимость убивать некоторые потоки в которых сейчас идет работа. Как это реализовать правильно? Погуглил, но нихуя не нашел. Потоки запускаются через Task
>>1369777 по соглашению асинхронные методы имеют в сигнатуре CancellationToken как параметр. потому, что постоянно появляется необходимость что-то отменять
>>1369782 если уж не случилось по разным причинам с CancellationToken, есть воркэраунд на игнорирование результата, но такое может не подойти в некоторых случаях:
var delay = Task.Delay(timeout); var workTask = RunGovnoAsync(); var result = await Task.WhenAny(delay, workTask); if (result == workTask) { azaza }
Delay - просто шикороиспользуемый кейс. в твоем случае это может быть синхронная параша, которая засигнализирует, что надо закругляться
>>1369807 через именованые зависимости. вообще это хак и многие люди не любят такую дрочню. для всех остальных есть чуть более хардкорные вещи, типа условная инжекция в SimpleInjector. точно не помню, но там вроде через цепочку When(x => { }).Resolve<T>() можно подпихнуть что угодно
>В чем основная фишка инверсия зависимости - читай сюда вообще эта херня очень сильно облегчает жизнь при тестировании. ну и уж тем более упрощает разработку в случае, если для целого сервиса оказывается альтернативная реализация, которую вот надо теперь использовать (что бывает нечасто)
>Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде.
Почему за несколько тредов здесь я не увидел за него ни слова? Неужели тут никто не пишет на шарпе под смартфоны? Вроде выглядит секс - мультиплатформа, работаешь в студии даже кривую возможность отладки сразу на телефон завезли. Или это совсем мертвая ебала? Не удивлюсь если на этот пост никто не ответит.
>>1369831 Потому что неосиляторы считают его багованным говном, однако у кого не спрашивал, никто толком объяснить не может, чем он плох. Знаю, что на гознаке прогеры под него пишут, но местным джунам виднее конечно же, что говно, что нет.
>>1370125 Я всегда такой. Чувствую себя отбитым дауном. Раньше ходил в школе на олимпиадное прогоаммирлвание, но в итоге забил - я не умею думать и писать код с такой скоростью.
>>1369831 Ну так. Скорость разработки конечно выше чем на убого android studio. И если формы не трогать. Ну тут нужно учитывать что все библиотеки для android на java, и тебе скорее всего нужно будет самому билдить и настраивать это все для поддержки в C# (для популярных библиотек вроде есть nuget пакеты, но не уверен в их актуальности и работоспособности). Если что-то пойдет не так, тебя ждует охуенные долгие дни поиска причины и ее исправления, т.к. инфы по ксамарину в интернете почти нет.
Тут нужно думать стоит ли оно того. Если ты делаешь простой интерфейс для REST, то можно взять. В остальных случаях нужно нужно думать, написать код для каждой платформы это не такая уж большая проблема на самом деле.
Антоны, можете пояснить, как юзать Ninject в формах? Хочу протестировать кучу всего, но не понимаю. Достаточно ли будет сделать вот так, чтобы модуль работал на всех формах? Kernel = new StandardKernel(); Kernel.Load(new ExampleModule()); Application.Run(new MainForm());
>>1370316 тебе нужно иметь доступ к Kernel из всех своих форм. самый васянский способ - объявить публичный статический класс и там свой Kernel инициализировать
Аноны, подскажите самый быстрый способ рисовать пиксели на форме? Graphics/picturebox - не варианты. Первый срабатывает раз через раз и не несет в себе функции установки единичного пикселя. А DrawLine(x,y,x+1,y+1) я рот ебал. Второй же требует ебанутой конструкции аля image.bimap = null; drawworld(bitmap); image.bitmap = bitmap; и опять же, цикл битмаповых setpixelов съедает всё процессорное время. Помните первохл? Там как раз есть программный рендер. Чем же он выводит кадровый буфер на экран? тут даже вопрос не конкретно по сярпу, а вообще о возможностях винды
>>1370376 >цикл битмаповых setpixelов съедает всё процессорное время А зачем ты цикл крутишь? У тебя мир часто обновляется по пикселям? Вот прямо каждый кадр новые пиксели?
Сделой себе массив с Color и еби его как хочешь за нулевое время, потом конверти в битмап и возможно этот битмап не нужно будет пересоздавать заново для установки в picturebox.
>>1370376 >Чем же он выводит кадровый буфер на экран? Внутрях там наверно крестовый bitblit - это очень быстрая шняга для копирования пикселей куда угодно. Используется в винде повсеместно. Можно поробовать обмазаться этой нативной реализацией если забить на кросплатформу нета.
Антоны, можете пояснить, как работать с Ninject, если у меня 1) Множество конструкторов, что ссылаются друг на друга через this 2) Конструктор ссылается на базовую реализацию через base?
>>1366885 (OP) Привет, ребята. Я хуй без опыта и высшего образования. 26 лвл. Программированием увлекаюсь давно, база хотя бы для джуниора есть с запасом. Хочу в веб. Пока без разницы, во фронт или в бэк. Лишь бы найти какую-нибудь работу. Из серверных языков знаю php, но это мне не очень нравится, все-таки хочется чего-то посерьезнее. В джаву мне путь 100% закрыт. Есть ли шансы вкатиться к вам с такими данными?
Аноны-новосибирцы тут? Скоро буду переезжать в Новосибирск, поизучал вакансии, вроде все неплохо и пару вакансий запретил. А как вообще себя чувствует шарпист в Новосибирске?
Антоны, реально ли на сишарпа написать парсер для чата? Нужно парсер, который бы парусил чат на наличие сообщений от юзера, ничего криминального. Проблема в том, что все грузится динамически, как это можно сделать?
>>1370982 слишком общий вопрос, чтобы отвечать на него как-то конкретно. что и как ты хочешь парсить? если у сайта есть вменяемое API (подозреваю, его нет), то какой-нибудь HttpClient (или напрямую с WebRequest пердолься) с десериализацией респонза в нужный тебе тип если же тебе нужно ебашить разметку, то я лично предпочитаю использовать HtmlAgilityPack. опять таки, для скачивания страницы тебе понадобится нечто вроде HttpClient
>>1371015 >слишком общий вопрос, чтобы отвечать на него как-то конкретно. что и как ты хочешь парсить? Дискорд, у него API только для ботов, но не на свой сервер я, вроде как, добавить бота не могу.
>>1371020 мраземакаба не дает постить ссыль на доку дискордовскую гуглируешь крч: Discord Development Portal / Channel / Get Channel Messages. это разве не оно?
>>1371028 >гуглируешь крч: Discord Development Portal / Channel / Get Channel Messages. это разве не оно? Это все про написание ботов для своего сервера, на другой я его закинуть не могу.
>>1371042 ну тут сыглы. я с дискордом не работал, не могу тебе сказать парсинг разметки в данном случае выглядит как уберпупероверкилл. но, может быть, и единственный выход
>>1371043 >уберпупероверкилл В каком смысле? Не понимаю тебя. Это мне еще надо будет залогиниться, написав POST запрос, потом спарсить страницу, вытащить сообщения и снова спарсить эту страницу, но так, чтобы не выйти из дискорда. Может какой-нибудь Cefsharp сможет помочь сделать все проще?
>>1371050 в смысле, что это стреляние по воробьям из пушки, когда дискорд - достаточно адекватная платформа, чтобы предоставить тебе нужное API (в случае, если кроме бота какое-то API все-таки есть)
если нет, то отписанный тобой процесс. как по мне, CefSharp не даст тебе особого преимущества. ибо тебе все те же процессы придется описывать и производить по такой же схеме. разве что ты будешь оперировать не запросами/ответами/хэдерами, а кнопочками в документе. но можешь начать с него, тебе виднее, как тебе делать удобнее )
>>1371055 Короче, я сделал так, максимально васянским способом Через CefSharp запускаю скрипт и через var div = await chromeBrowser.EvaluateScriptAsync(textBox2.Text); Запускаю команды javascript. У меня пока не получилось сделать нормальный вход и переход по формам, выгрузку картинок и гифок. Думаю, что можно на это забить и сделать имитацию нажатия клавиши и клика мыши.
>>1366885 (OP) Аноны, что делает эта строка: int index = (int)Math.Min(Math.Pow(r.NextDouble(), 0.3) * count, count - 1); Хочу на JS переписать метод, а там - вот это...
>>1371626 Math.Min - выбор наименьшего из двух Mat.Pow - возведение x в степень y * - умножение - - вычитание NextDouble() - случайное значение числа с плавающей точкой от 0 до 1
Привет шарписты, я С господин уже 2й год, мой первый ЯП и основной, полюбил его навсегда, но с ним я никому не нужен кроме себя:) Думаю поплнить ваши ряды и осесть в офисе, интересует Desktop Development, возможно мобильная разработка.
Стоит ли игра свечь в плане вакансий для джунов, сколько времени на перекат и вливание в это опп:(
>>1371876 Ок, я открыт для идей/светов, готов принять любые идеи/светы на рассмотрение, так как есть огромное желание присесть в офис и залезать к дяде в карман 1 раз в месяц, помимо пасивного дохода...
>>1371910 веб-фулстекинг практически гарантирует тебе место в офисе может быть что-то про юнити тебе тут расскажут мобильная разработка, опять-таки. наверное, xamarin жив еще
Антоны, я таки дорос до того, чтобы отправлять дискорду post запрос через Cefsharp. Но мне в ответ приходит {"code": 0, "message": "400: Bad Request"} И я не могу понять, в чем ошибка, как можно посмотреть исходящий запрос из приложения?
>>1371911 Прочитал подробно, что такое full stack developer... это не мое, везде по немногу, но зато везде, а копни такого поглубже в чем либо, лопнет как блять пузырь мыльный! Я предпочитаю знать 1 но идеально, максимум 2 и то второй для дяди или удобства написания проекта.
>>1371948 я тоже так думал сначала, но теперь понимаю тупиковость данного подхода. особенно в дотнете, где умирает легаси из 2010х, но все никак не сдохнет, а кроссплатформенного кора пока не много на рыночке да и знать-то особо нечего. основы языка учатся за месяцы, надрачиваются за пару лет адекватных проектов. дальше расти все-равно в технологии, которые, нынче, привязываются не к одному языку, а к целой россыпи
>>1371930 Ну все, короче, через cefsharp я смог отправить запрос, дискорд выдает токен, пробую перейти на другую страницу, а он мне снова требует войти. Чтобы такого не было мне нужно куки как-то сохранять или он меня по другой причине может слать нахуй?
>>1371950 Значит больше уязвимостей:) От таких спецов, подуй на темную сторону:) ахахаах (Шутка) Спасибо за общение и разъяснения, буду копать еще что нибудь, уверен найду, не может быть, чтобы Сишник был абсолюно не нужным;)
>>1372007 хэдэры проанализируй и вопросы отпадут сами собой
>>1372028 в эмбэддэд тебе что-ли не идется? программить контроллеры там, всю хуйню. оттуда можно в какой-нибудь верилог уехать, плисы конфигурячить (если есть желание)
>>1372035 Там куча всяких скриптов. Ладно, буду входить сам, на крайняк вроде можно куки сохранить и при новом запуске не потребуется аутентификация. А так все работает, получаю информацию через javascript запросы, обрабатываю и шлю ботом в свою конфу, схороняя видео и получая уведомления, когда один пользователь пишет. Полагаю, что надо ещё отрубить отображение в chart после входа, чтобы ресурсы не тратились на отрисовку Сейчас оставил работать на всю ночь, если не упадёт, то буду максимально доволен.
Сисярпач, неосилятор здесь. Думал многопоточка и асихнронщина это легко, но в итоге неистово соснул. Вообщем есть 3 потока (по-мимо основного), 1 из них кеширует данные для последующей обработки другими потокам. Вообщем мне нужно все это синхронизировать. Например посылаю я из основного потока команду стоп, нужно чтобы потоки в определенном порядке закончили свою работу, посылаю команду старт и они запускаются в нужном мне порядке. Как такое правильно реализовать? Чтобы избежать состояние гонки, обработки исключений, костылей с синхронизацией итд.
>>1372231 >потоки в определенном порядке закончили свою работу >запускаются в нужном мне порядке есть под этим подразумевается: убить и создать новый - то какого-нибудь ThreadRofloManager будет достаточно, который будет управлять состоянием потоков
если это все значит, что в методах самих трэдов нужно паузить и возобновлять работу, то ManualResetEvent (или Auto~) тебе в помощь
а вообще идея выглядит костыльно изначально: >1 из них кеширует данные для последующей обработки другими потокам
>>1372484 ну сложно сказать, имея представление только о части реализации задачи я так понял, ты одним трэдом в loop-е асинхронно собираешь задачи, а другие потоки каким-то хуем асинхронно в том же (своем) loop-е их по очереди обрабатывают, чи шо?
>>1372588 mapPic[x, y] у тебя точно в рамках границ обращается? подсвечиваемая строка и реальное место исключение не всегда совпадают, зависит от всякого
Дорогие шарписты может кто помочь? У меня есть главный класс Controller который порождает различные виды NotificationBox (error, message, info). Сами NotificationBox являются Form.
Controller порождает NotificationBox, через передачу в его конструктор enum, нужный тип Box (error, message, info)
После передачи в конструктор Controller в нем есть switch, который смотри какой enum передали и вызывает нужный метод CreateMessageBox, CreateErrorBox
Как мне можно сократить? Ведь если я захочу сделать еще пару типов NotificationBox, мне нужно будет увеличить на n раз свич, добавить в enum нужное n кол-во имен NotificationBox, а в Controller нужно будет добавить еще пару методов создания NotificationBox.
Каждый Form NotificationBox наследовать от INotification.
В самом INotification сделать abstract void метод Create.
В Controller создать глобальный экземпляр INotification. При вызове конструктора Controller switch апкастит нужный Form NotificationBox к глобальному INotification и в конце свитча я вызываю у INotification Create.
>>1372695 увеличения количества кода ты не избежишь, твой вопрос про место, где это кодэ будет прибывать можешь посмотреть в сторону Visitor, если тебе понравится
Здравствуйте люди добрые, такой вопрос, если бы у вас был выбор, работать в C# за 40-50 в месяц или попытаться в веб макакинг на фрилансе, в надежде получать 70-100 (не знаю реальные ли это цифры, поправьте если что), что бы вы выбрали?
>>1370489 Бамп вопросу! Если попытаться скачать файл с releases на github'e, и сразу же приостановить загрузку, а затем скопировать ссылку по которой скачивался файл - она же другая будет, более длинная, да ещё и с разными значениями!
>>1373700 Хз, я шапку скопировал с треда двухлетней давности, я ничего вообще не читал. Если ты ньюфаг, то нихуя тебе не надо читать - пройди любой курс по программированию, желательно там где язык со статической типизацией лично я проходил явараш, потом вообще без проблем перешел на сярп. Демоверсии на 10 уроков хватит для основ, а потом читай metanit.com.
Поясните за дженерики. Нахуй они нужны, если любой обьект можно привести к objecr? Или это просто синтактический сахар над приведением object в другой, более сложный обьект?
>>1374034 Как я понял, единственные проблемы - ебучие значимые типы, которые так же наследуются от ссылочного object. Если б не они, то было бы достаточно сделать синт. сахар, который бы в псевдо-дженерике сохранял изначальный тип, кастовал его к object и при возврате кастовал бы обратно, но без тайпчека.
while (!ffmpeg.StandardError.EndOfStream) { string line = ffmpeg.StandardError.ReadLine(); Debug.WriteLine(line); if (условие) ffmpeg.Kill(); // тут исключение что нет доступа, охуеть! } } [/CODE]
>>1374152 причем, если я правильно понял, вся эта мичпуха разворачивается еще на этапе статической компиляции в кодосгенерированные типы, у которых под капотом T наружу - это Object, T внутри - это скащенный в нужный тип экземпляр возможно, я не прав, но это не делает дженерики джявы неуебищными
Аноны, в visual studio 2017 и 2019 в проекте с тестами при попытке запуска теста выскакивает ошибка cs5001 program doesn't contain static 'Main' method и т.д. Советы из гугла поменять версию языка не помогли. Прошу помощи у местных специалистов.
Сисярпач, я тупой, помоги. Есть: Dictionary<int, Dictionary<float, int>>(); Нужно отсортировать вложенный словарь по ключу ( найти минимальный float ) и вернуть соответственно 2 инта которые соответствую минимальному float.
Анончик, привет помогите пж разобраться что где хранится. Сейчас читаю вот этот курс https://metanit.com/sharp/tutorial/3.3.php. Вроде понятно, а вроде нет. Например: как вы знаете типы данных можно условно разделить на ссылочные и значимые. Значимые типы хранятся в стеке, а ссылочные сохраняют в стэк ссылку на адрес в куче и там хранят своё значение. Вроде понятно, но тут появляется слово static...(тревожная музыка, скример) В статьях не нашёл информации о том меняется тип памяти для статических переменных ссылочных типов. И ещё вопрос, попробую нагуглить, но всё же - можно ли в VS при отладке отобразить в состояние стэка и кучи, желательно в разных окнах. Спасибо, анон
>>1374866 >меняется тип памяти ссылочные типы хранят свои value type значения вместе со всем хламом в куче, этот нюанс разве метанит не пишет? для статических классов правила такие же, как и для динамических
>при отладке отобразить в состояние стэка и кучи если под стэком ты подразумеваешь стэк вызовов, то есть соответствующая вкладка в окнах. если тебя интересуют именно состояние памяти, то только профайлер памяти тебе в помощь (возможно, VS Enterprise дает какие-то ультимативные диагностические фичи, но я не уверен, что тебе покажут побайтово все состояние памяти. да и нахуй оно тебе)
>>1374877 >ссылочные типы хранят свои value type значения вместе со всем хламом в куче, этот нюанс разве метанит не пишет? для статических классов правила такие же, как и для динамических
Я пропустил слово) Хотел просить "Меняется ли тип памяти?" т.е. string ""; - ссылка static string ""; - то же будет ссылкой или нет, раз переменная имеет общее значение для всех объектов класса...хотя это же объект, то получается что в любом случае он будет ссылкой. Как то сам на свой вопрос ответил. Всё равно спасибо)
>да и нахуй оно тебе Я люблю в пошаговом режиме смотреть как меняются ноли и единицы в соответствии с логикой, которую я запиливаю в код...Буга-га)
Сап, нужна помощь. Я ньюфажина, и нужно придумать лайт версию программы на сишарпе консольной, с использованием: 1. Наследования 2. Полиморфизма 3. Интерфейсов 4. Стандартных интерфейсов 5. Делегатов
Просто нужны идеи программ, чтобы я сделал, ибо я не знаю какие могут быть программы с использованием этих функций, но посложнее чем к примеру использования наследования класса как шаблон. Приходит в голову только математическая программа с двумя видами решения, но не знаю какую придумать.
>>1374909 >ты уверен, что правильно понял суть статики? Хороший вопрос) К статической переменной можно обращаться не создавая объект класса. Это я понял) Ещё я понял что значение статической переменной одно на все объекты класса.
>>1374923 >значение статической переменной одно на все объекты класса на какие объекты, какого класса? инстанс статического класса нельзя создать, а статические члены - это члены типа, а не экземпляра
Сколько стоит денег и времени написать С# сервер чтоб он принимал стрим данных с нескольких бирж (трейды, ордербуки), сохранял их в базу, а тем кто залогинен мог отдавать данные как с БД так и пришедшие со стрима. В общем суть затеи иметь возможность смотреть графики цен реалтайм/историю. Также нужен простой аккаунт менеджмент и чат. Какие могут быть подводные камни при найме?
LINQ БОГИ ТУТ? (2) Есть массив строк в котором записаны цифры. Как в условие where можно вставить int.Parse точнее как стучаться к элементам lines в данном контексте? Надо только так.
public static int[] ParseNumbers(IEnumerable<string> lines) { return lines .Where(???)
>>1375118 >в чем ошибка >выдаёт такую хрень Ты стучишся конкретно в перечисление и тебе возвращает тип при таком стучании очевидно. Ошибка в select n, тебе наверное нужно select n.studing_period.
Объясните пожалуйста, почему usually you register for events in OnEnable and unregister in OnDisable? как это вообще возможно, если OnEnable вызывается когда объект становится активным?
Вот код, если можно, объясните вообще что в нем происходит, или может у меня с английским проблемы? void OnEnable() \t{ \t\tDamagePlayerEvent.OnDamagePlayer += DecrementPlayerHealth(метод уменьшает хп); \t}
>>1375225 Вот я бы допустим писал на Скале. По твоему описанию может потребоваться от недели до месяца времени. Вот и прикидывай исходя из рыночных зарплат + надбавка за разовую работу. Но это только бэкенд. И это Скала.
Аноны, есть кто с дс2? Такое ощущение что на с# не нужны погромисты. Откликаюсь на вакансии, сделал пару тестовых, одно из них на asp.net, хотя его даже не начинал еще изучать, только мельком глянул доки. Работодатель начал морозиться по поводу з/п. Даже на самую ссаную стажировку отказ. Они там охуели?
>>1375231 Время не критично, главное результат, поскролил апворк, ничего не понял, расброс цен большой как и почасовая оплата. Все еще не имею представления сколько должен стоить в конечном итоге продукт.
LINQ БОГИ ТУТ? Вообщем в кнопке есть код, в котором лежат 6 экземпляров классов, со всякой мутью в конструкторах. Хочу в другой кнопке делать запросы из этих экземпляров классов, это можно как то реализовать, без ctrl+c ctrl+v в код другой кнопки?
LINQ БОГИ ТУТ? (2) >найти самое длинное слово из этого списка, а из всех самых длинных — лексикографически первое слово в одно выражение кортежами и linq. >Не используйте методы сортировки Я написал пока что: return words .Max(n => Tuple.Create(n.Length,n)); И че дальше, с чем мне его сравнить если я работаю со строкой или как задать нормальное условие?
Нужно срочно решить задание на C# с помощью LINQ, не пойму каким образом разбить жильцов на подъезды с этажами и как вообще правильно решить. Огромное спасибо заранее.
Исходная последовательность содержит сведения о задолжниках по оплате коммунальных услуг, живущих в 144-квартирном 9-этажном доме. Каждый элемент последовательности включает следующие поля: <Фамилия> <Номер квартиры> <Задолженность> Задолженность указывается в виде дробного числа (целая часть — рубли, дробная часть — копейки). В каждом подъезде на каждом этаже располагаются по 4 квартиры. Для каждого из 9 этажей дома вывести сведения о задолжниках, живущих на этом этаже: число задолжников, номер этажа, суммарная задолженность для жильцов этого этажа (выводится с двумя дробными знаками). Сведения о каждом этаже выводить на отдельной строке и упорядочивать по возрастанию числа задолжников, а для совпадающих чисел — по возрастанию этажа. Если на каком-либо этаже задолжники отсутствуют, то данные об этом этаже не выводить.
>>1372588 1. Всю дополнительную инициализацию формы лучше пихать в ивент хэндлер OnLoad. Конструктор может отработать несколько раз, а ивент OnLoad в подавляющем большинстве дергается лишь при непосредственной загрузке формы. 2. Имена классов - только в КэмэлКейсе. 3. Переведи енум на английский, дай значениям явные номера (0,1,2) и заведи аттрибут с дерганием его имени, куда ты и впишешь русское название. Затем напиши метод-расширение, которое дёргает указанное в аттрибуте имя енума.
>>1375695 Группирует их по ключу. В твоем случае ключами будет строка word, а значениями коллекция из строки word (сколько их там будет зависит от того сколько строк word в оригинальной коллекции). То есть ты получишь коллекцию уникальных строк и сколько раз эти строки встречаются в оригинальной коллекции. { жопа, пися, жопа, пися, жопа} -> { жопа => { жопа, жопа, жопа}, пися => { пися, пися } }
>>1375630 .groupby(n => n) - если слова повторяются (нужны только уникальные) .groupby(n => n.lenght).max() - список всех самых длинных слов (одной наибольшей длины) .min() - вернёт тебе первое слово по алфавиту (или чему оно там будет, т.к. сравнение через IComparable)
>>1375767 >Нужно срочно решить задание на C# У тебя деньги есть?
>>1366885 (OP) Господа, разъяснит кто-нибудь, как все-таки проводить интеграционные тесты? не надо затестить слой Бизнес Логики. На примере возьмем 2 функции: добавление пользователя и просмотр списка пользователей. Я делаю тест Add(), в нем формирую сущность юзера (корректную, валидацию запилил уже юнит-тестами) и передаю в существующий слой Data Access Layer (Сейчас это у меня фейк, построенный на коллекции). Так вот, потом я должен вызвать метод GetAll() или GetById(), чтобы проверить наличие юзера в базе и проверить его идентичность с тем, которого добавил или еще что-то? У меня сейчас в классе создание объектов логик идет через обращение к свойству Специального Класса, в котором оно реализовано как синглтон. Т.е. в разных тестах я по сути буду работать с одним и тем же классом и с одной и той же коллекцией в ДАЛ слое. Тут и начинаются непонятки. 1) Часть тестов валилась пока не запилил метод Cleanup(), который после каждого теста удаляет из коллекции все элементы. Но при тесте другого класса логики 1 тест валится при клинапе, а другой наоборот без него. 2) Один ментор мне сказал, что обращение к статик свойству через класс, это норма. Другой ментор сказал, что я тогда начинаю от него зависеть и надо вообще нарямую в тестовом классе создавать объекты и БЛ, и ДАЛ.
Правильно ли я начал вообще, и как лучше? Или почитать дадите где-нибудь, а то все размыто описывают или на MVC примеры приводят. У меня пока обычная 3х-слойка. Заранее благодарю.
>>1375932 Ясен пень, ты забыл имя к свойству припилить>>1375932 Сам-то видишь, что написал? Свойство в методе объявляешь, еще и имя забыл написать. И завязывай с линк синтаксисом, сейчас все методами расширения пишут. И почитай про стрингбилдер, чтобы хуйню со строками эту не делать.
>>1375862 интеграционный тест - это ты сначала делаешь POST в контроллер на добавление юзеров, а потом в GET его наблюдаешь. создавай хоть напрямую, хоть на кривую. если у тебя валятся юнит-тесты от каждого чиха, то ты что-то делаешь не так
>>1375957 Чувак, у меня обычная трехслойка. Никаких контроллеров и запросов у меня нет и в душе не ебу пока, что это. Валились не юнит, а другие интеграционные. Оказалось, когда я их разом запускаю, добавление напрмер происходит в одну статик коллекцию в фейковом ДАЛе и юзеры не проходили проверку по уникальности. Теперь думаю, создавать ли каждый раз нового юзера с другими параметрами, или после каждого теста, удалять всех, чтобы одного и того же можно было добавлять.
>>1375803 >У тебя деньги есть? Господи, какие же русские пидорасы.
>английский форум типо stackoverflow - Ребята, вот такая проблема есть, помогите пожалуйста - Да конечно fam, вот тебе решение, вот тебе совет, удачи в твоих начинаниях buddy:3
>русский форум - Ребята, вот такая проблема есть, помогите пожалуйста - ДЕНЬГИ ЕСТЬ А??? А ЕСЛИ НАЙДУ????? СОБАКА ТЫ КУДА ЛЕЗЕШЬ БЛЯДЬ ТУТ ВСЕ ЗАБИТО А НУ БЫСТРО БЛЯДЬ БРОСИЛ ВСЕМ ЭТИМ ЗАНИМАТЬСЯ ТЫ ЧЕ СУКА НА МОЮ РАБОТУ ПОЗЫРИЛСЯ МРАЗЬ Я ТЕБЯ БЛЯДЬ ЩАС ПРИКОНЧУ ГОВОРИ АДРЕС СЫН СОБАКИ
>>1375276 Нет, я начнающй трейдор, и пытаюсь понять сколько нужно готовить деняк. Сам ебашу фронтенд для своих нужд на юните енжине, но думаю а не сделать ли норм сервак. 1 биток я навреное не против заплатить, как только появится лишний, больше хз, не могу себе повзолить. В идеале найти человека которому трейдинг самому интересен, так как у меня есть еще и бесценные знания, мы можем надолго скопроперироваться. Я не пидор если что.
>>1376100 я половины слов не знаю, но выглядит как хуйня, кроме реалтаймных вещей (те тоже хуйня, но главное не попасть на дебила, который наворотит LINQ или схожей тяжелой залупы) считай как немногим сложные проджект, чем более-менее сносная дипломная работа (мнение нулячего фрилансера)
>>1376129 он медленный. особенно в виде цепочки линка и для большого количества данных. особенно, если есть альтернатива в виде грамотного запроса в базочку
>>1366885 (OP) А какие вообще есть живые альтернативы asp.net core? Nancy кто-нибудь тыкал? Понятно, что asp.net - энтерпрайзный стандарт, но для маленьких любительских проектов хотелось бы что-то полегче. Подскажите что-нибудь пж.
>>1376461 Полегче - именно что более легковесный и не перегруженный таким количеством нюансов. По аналогии с python: если asp.net это django, то что в дотнете bottle?
>>1376511 хз, не питонист все нюансы работают неплохо по дефолту из-под коробки асп.нетом. напиши свою логику в контроллерах и заюзай кестрел (это тебе не иис, который и правда целый мир). самый легкий и эффективный старт веб-приложухи на коре
Здравствуйте, возникло несколько вопросов, помогите пожалуйста разобраться. 1. - Память для статических данных (классы, методы и т.д.) выделяется также как и для динамических (ссылка в стеке на ячейку в "куче")? Можно ли использовать статический класс без создания объекта? Когда и где выделяется для него память? Если мы используем метод из статического класса, то память выделяется для всего класса или только для метода? 2. - Чем статический класс отличается от структуры, кроме того что класс является ссылочным типом?
Тут один умный товарищ проводит семинар https://m.habr.com/ru/company/clrium/blog/446510/ посвещённый памяти clr. Вопрос к понимающим, на сколько это будет полезно? Имею в виду, это для общего развития и понимания, или применимо ирл?
>>1377175 тонкости CLR - эти слишком сложна и нинужна для новичков. нинужна, в большинстве случаев в принципе, и для старичков. но, если будут рассказывать доступно и о насущных вещах, то послушай, хули тут?
>>1377177 Вот я и думаю, хули тут? Но ведь я не профессионал, может это собрание для синьоров, а я припрусь и не пойму ничего? Ну и меня волнует вопрос, это типа как на плюсах в нете можно памятью управлять? Или там о другом?
>>1377182 ну управление памятью есть какое-никакое в дотнетах, но очень кастрированное, по сравнению с плюсами. есть сверхвырвиглазные способы, но они, наверное, чисто 4fun: https://habr.com/ru/post/423657/
да и в статье написано, о чем речь будет идти: >Выделение памяти: все стадии этого интереснейшего процесса >Все фазы работы GC (по 45-50-минутному докладу на фазу. Столько про GC не дадут говорить ни на одной конференции). >Мы также поговорим про System.IO.Pipelines. Наталья Цвилих, моя коллега, расскажет про этот интерфейс много интересного. >Я также затрону вопрос CLR MD. В прошлом CLRium я сделал отличную вводную. Теперь — поговорим подробно. >И многое другое. ни слова об управлении. а под многим другим, небось, какие-нибудь профилирования, диагностики и что-нибудь этакое поверхностно
Вопрос от нуба - мне нужно использовать код, написанный на крестах - http://viennacl.sourceforge.net/ - в шарп-проекте. Одно дело сделать DLL самому, другое дело, что я не шарю, как сделать DLL из чужого C++ кода, тем более, когда там большое количество зависимостей.
>>1376900 F# это мировое будущее, активнейше развивающийся передовой функциональный язык. Мало того, что он мультипарадигмальный так ещё и императивный и объектно-ориентированный. Вот лучший обзор этого всего: https://dungpa.github.io/fsharp-cheatsheet/
LINQ БОГИ ТУТ? Ласт вопрос по этому линку отвечаю. Вообщем из массивов экземпляров класса, мне вот то что выделил красным, надо сделать из этого отдельный массив. В ручную создать новый с такими же данными не проканает
Подскажите, насколько важно знать алгоритмы - по типу жадных алгоритмов и переборов графа при приеме на работу? Я сейчас немного фризы ловлю на них - вроде как суть понимаю, а когда до реализации доходит жидко пукнув обмякаю. На галере в моем мухосранске на сайте в вопросах при приеме только по языку и по большей части ООП.
Анон мне по секрету достался древний двиг восьмибитной игры, полностью написанный на C#, ну а так как я ни разу не кодер, а скорее гавноартист, то решил моддить игру, добавить пару механик и апнуть графику этого убожества, перерисовать спрайты, задники, так вот дошёл до того момента когда нужно было выводить спрайты на экран и обосрался, узнав, что на C# а в частности в вижуал студии, не отображаются прозрачные картинки. Может кто сталкивался с подобным? Перекатиться на юнити или годот прошу не советовать.
>>1378045 >>1378047 Загуглил "редакторское расстояние", в итоге нашёл это: https://ru.wikipedia.org/wiki/Расстояние_Левенштейна Цитата: >Расстояние Левенштейна (редакционное расстояние, дистанция редактирования) — >минимальное количество операций вставки одного символа, >удаления одного символа и >замены одного символа на другой, >необходимых для превращения одной строки в другую. То есть, заменять символы - можно, одной операцией.
>>1378105 С заменами вообще в 4 операции получилось, раз уж речь о минимальном количестве операций: 1. студент + (т - > о) = 2. coудент + (y - > л) = 3. солдент + (e - > a) = 4. солдант - н = солдат
>>1378047 Ай, не обратил внимание на условие на пике. Тогда замену в этих примерах: >>1378037>>1378108 рассмотри как две операции - удаление одного символа и добавление другого. И получишь на выходе - эту свою 7-ку.
>>1378019 >Двач чому тут 7? сТУдЕНт -> сОЛдАт - 7 букв, 7 шагов. 4 удалить, 3 добавить.
>>1377967 В редакторе ты прозрачность и не увидишь. В рантайме прозрачность только к паренту. Если хочешь чтобы твои боксы друг к другу были прозрачны, то отрисовывай их сам в .Paint (событии, а не редакторе) холста, например с помощью DrawImageUnscaled.
>>1378116 В редакторе ты прозрачность и не увидишь. В рантайме прозрачность только к паренту. Если хочешь чтобы твои боксы друг к другу были прозрачны, то отрисовывай их сам в .Paint (событии, а не редакторе) холста, например с помощью DrawImageUnscaled.
Хоспади хоть один адекватный анон. Спасибо, теперь буду знать в какую сторону воевать.
Привет шарписты, есть вопрос. Я ноунейм живу в мухосранске иркутская область. Изучаю шарп уже где-то год. Выучил основу, написал пару программ на wpf и winforms делал только на те темы, которые нравились и понимал. Перехожу на ASP.NET. Паттерны MVC знаю, ибо работал с wpf и winforms, умею работать в Visual Studio. Знаю как заливать и толкать проекты на гит, так же создавать и смержить ветку в мастер. Знаю основы linq, получал запросы с бд. Может скоро остановлюсь и начну js учить или entity framework, пока не решил. Так вот, сам вопрос. Как мне прорваться в ближайшие большие города Красноярск, Новосибирск и найти работу? Хотел бы узнать как принимают на работу, как устроиться, что еще нужно подучить. Спасибо
>>1378250 Всмысле как? Как и все, отрываешь жопу от дивана и ищешь работу. Пиздуешь по вакансиям и собеседованиям. Единственно советую подучить команды гита, ибо когда я в феврале проходил собеседования для меня стало сюрпризом что я могу форкать и комитить А HR ЭТОМУ УДИВЛЯЕТСЯ! Хотя базовые скилы казалось бы. Видимо на рашкорынке вообще остались только JS дебилы.
>>1378295 Понятно, что нужно стучать в каждую дверь и проситься. Я живу в мухосранске, у меня просто нет вакансий шарписта или .net, я хочу узнать как перебраться в другой город.
>>1378302 Ну вот видишь как мы быстро с тобой разобрались. А в энтэрпрайзе вот так вот, потому-что сейчас везде ДЖИРА и КАНБАН с АГИЛА, а битбакет в эту ебанину встроен.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Литература вторым постом
1. Ресурсы:
- https://metanit.com/sharp/
- https://stackoverflow.com/questions/tagged/c%23
- https://www.tutorialspoint.com/csharp/
- https://professorweb.ru
- https://habr.com/ru/hub/csharp/
2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- https://ideone.com/
- https://www.tutorialspoint.com/compile_csharp_online.php
- https://rextester.com/l/csharp_online_compiler
3. WinForms или WPF?
Шо то хуйня, шо то - все пацаны на электроне ебашат. Еще есть Avalonia, но пока она сырая. Но если уж хочешь гуй на шарпе, то читай:
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Да, он совершенно прав. Даже микрософт постепенно переходит с шарпа на тайпскрипт. К сожалению, самые крутые языки никому не нужны.
Неправда. C# кое-как развивается, недавно вышла седьмая версия шарпа, и уже активно разработывается восьмая. в ней pattern matching прям как в хацкеле будет! Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант -
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Rider - платная IDE от JetBrains со всем функционалом решарпера и кроссплатформенностю. Если ты богат и сидишь на линуксе/маке, то это отличная замена VS.
Для vim/emacs можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, ставь сразу VS2017 и при установке выбирай все нужные компоненты.
Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials
7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности C# 8.0: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код старой шапки: https://pastebin.com/cKKXYArs
Код этой шапки: https/://pastebin.com/cKKXYArs
Прошлый тред тонет здесь: https://2ch.hk/pr/res/1335434.html