Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем 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 - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
>>1406275 (OP) 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
>>1406275 (OP) В начале января стал посещать этот тред. Теперь я джун, на испытательном. Спасибо всем анонам что помогали мне, особенно тем, что создали гайд из оп поста. Всё благодаря вам.
А где можно задачки взять? Так получилось, что я веду С# для детей. Для базового материала я задач и сам напридумывал, но когда уже, допустим, ООП начинается, у меня фантазии не хватает. Где есть хороший задачник?
dosomthing должен возвращать булевое значение. Если нельзя менять тип возвращаемого значения, то: condition ? true && "" == dosomthing().toString() : false;
>>1406538 У меня P4 1.6 3.4 гига оперативки. Поставил вин10, брат жив, работает, прогать можно. Компилируется по 3-4 минуты правда. Но что поделать. А вообще иди ка ты нахуй, сам спросил, ответ получил, ещё выёбывается сидит. Покупай тогда i5 и 16 гиг оперы, раз ты такой мудак.
>>1406488 >>1406575 >condition ? true && "" == dosomthing().toString() : false; Я боюсь людей которые так пишут. Без шуток и сарказма, я жду от таких людей что они сразу после такого написания кода повернутся к коллеге, выколют ему глаз, растегнут ширинку штанов и будут ебать его прямо в глазницу. Но это будет адекватнее поступок, чем этот блядский код.
В JS можно было бы написать condition ? true && dosomthing() : false; Но блядский C# не умеет приводить к булевому типу, поэтому приходиться делать данный work around.
>>1406472 Почему никто не лайкает мой пост? В отличие от этих >>1406330>>1406488>>1406593 у меня нет магических чисел (да-да, мои маленькие сеньоры девелоперы, true и false тоже приравнены к магическим числам).
>>1406593 какое-то сильное колдунство насколько я знаю джаваскрипт это выражение вернет dosomething() если выполнится condition и полностью эквивалентно condition ? dosomething() : false
>>1406611 Я там тоже неправильно написал, в JS нужно писать: condition ? Boolean(dosomthing()) : false
Тогда выполнится dosomthing и его результат будет приведет к булевому типу. При этом если в dosomthing не определено возвращаемое значение, то нужно писать !Boolean(dosomthing()) если хочешь получить true
>>1406615 Это не придирка, а факт. Непонятно зачем ты этот скриншот высрал. Что ж ты не написал dosomthing, а написал dosomthing(), раз это придирка? Придирка это когда тебе говорят, что ты ошибся, потому что написал x == y, а не y == x, а в твоём случае это грубая ошибка.
Как правильно реализовать диспоз? У меня есть класс, который содержит в себе класс, который реализует IDisposable. Достаточно ли мне в своем классе сделать так public void Dispose() => disposableObj.Dispose();?
>>1406615 вообще преимущество отдается раннему выходу из метода. вот в таком говне:
var result = {}; #region Boilerplate ... #endregion return result
как только появляется необходимость в ифе, сразу такое чудо разрастается до несуппортабельной простыни. и, кроме как тыкнуть вилку в печень автору, ничего не хочется
>>1406604 Проблема магических чисел возникает когда ты не знаешь что это за тру и фолс. Но когда ты видишь return true;, ты понимаешь, что этот тру является результатом выполнения функции.
Сап двач. Ньюфаг выходит на связь. Сем отличается метод от функции? Только ПОЖАЛУЙСТА, без ёьнутых примеров которые неюзабельны на практике. И я в курсе как это всё работает. Но я так и не понял какую задачу решает МЕТОД. Если есть добрый анон няшка, я бы послушал его обьяснения. Потому-что для меня это пока примерно одно и тоже с незначительными различиями.
>>1406677 Согласно общепринятой терминологии в шарпе есть только методы. В других языках есть функции, которые возвращают какой-либо результат (return aa), и есть процедуры которые ничего не возвращают (Console.Write(aa);)
Сап, сеньёры. Есть объект Type какого-то класса. Надо из него получить свойство. Сложность в том, что свойство МОЖЕТ находиться в родительском, по отношению к просматриваемому классу, классе. В BindingFlags нет флага для того, чтобы проверять И унаследованные типы.
>>1406708 Самое обидное, когда через полгода всему научился, всё тщательно перепроверяешь, но стоит написать FooBar как сразу вскрикивают "А, это ты ОБАСРАЛСЯ в треде полгода назад! ПАЦАНЫ, НЕ СЛУШАЕТЕ ЕГО СОВЕТОВ! ОН ОБОСРАН!"
>>1406728 https://dotnetfiddle.net/QbBFay CanWrite: false если я правильно помню, это костылем ток лечится. но каким, тоже не помню. вообще, рефлексия - это такое себе удовольствие
>>1406737 вдогонку: если private поменять на protected, будет такое: [System.MethodAccessException: Attempt by method 'Oooo.Program.Main()' to access method 'Oooo.Base.set_Some(Int32)' failed.]
очень вероятно, что это политики выполнения кода в фиддле. потому, что протектед ну точно обходился рефлексией. попробуй на своей пеке запустить кодэ
>>1406275 (OP) >ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ 1. Перестать вводить в заблуждение людей и написать, что на сисярпе пишут только бекенды для богатых папенек. 2. Ты подписываешь автоматом себя на шиндоус. 3. Сисярп никому в этом мире не нужен, все уже давно работает на гошке, жсе, скале, даже на обоссанной жабе. 4. Про мобилки вообще молчу. 5. Ах и да, D365 API просто отвратительное. Тоже самое можно сказать и про SharePoint и так далее. 6. SharePoint лагает. 30 секунд открывается вкладка.
Подскажите пожалуйста, маюсь с такой проблемой - делаю систему для заказов авто (чисто сам для себя), и наткнулся на такую проблему - не могу никак допереть как сохранить состояние машины, а именно того, что она заказана на определённую дату?
Вот как у меня происходит взаимодействие в приложении: 1) Пользователь авторизируется в систему; 2) Пользователь заходит в меню заказов; 3) Выбирает дату заказа автомобиля и дату возврата в автопарк, марку авто;
Проблема в следующем, пользователей же несколько может быть. Как сделать так, чтобы если пользователь выбрал дату заказа авто, когда она уже заказана была другим человеком - выводилось сообщение что машина недоступна (проблема не с выводом сообщения, а в реализации проверки доступности) + Нужно учесть, что машина должна быть доступна для заказа в другие дни, когда не заказана.
Причём если с товаром ясно, что его нет на складах, то всё - дело с концом. С заказом машин тут ещё с датами работать надо, как правильно запрос к БД написать, подскажите пожалуйста
Я создал три сущности: client: { client_Id; name; login; password; }
Сущность машины менял, до этого ещё булевая колонка была, которая проверяла занята ли машина, но тогда получалось, что действовала глобально - тобишь, если isFree = false, то машина занята до тех пор, пока не вернётся. А это накладывает запрет на заказ этой же машины на другую дату.
Как правильно запрос написать? Или дело не в запросе а в архитектуре самой системы, нужно ли что-то поменять? Посоветуйте пожалуйста литературу/разобранную задачу, где в примерах есть эдакие системы-"букинги", с заказами машин/товаров/услуг, где ещё присутствует и учитывается такой элемент как дата.
7. Скобки вырвиглазны, а названия методов просто отвратительны, начиная с кемел кейса. 8. Если и сидеть на сисярпе, то тогда в полностью отданное рабство. На другие языки просто не сможешь смотреть, с непривычки.
>>1407008 1. го имеет самую высокую стату по зарплате. джява, к слову, редко когда опускается ниже 2. как там в 2к10м? 3. понятно 4. понятно 5. 5.1 зачем ты используешь SP, 365? зачем ты винишь в этом дотнет? 5.2 зачем ты долбоеб? 6. --> 5. 7. --> 5.2 8. сознательно сидеть на одном ЯП и винить его в том, что ты не можешь ничему научиться --> 5.2
>>1407013 >поподробнее пожалуйста Короче, у тебя в БД должна быть таблица с машинами, индексируемая по полю ID и таблица заказов, индексируемая по полю ID, в ней для каждого заказа имеется поле CAR_ID с айдишником машины из таблицы машин, очевидно. Когда твой клиент логинится в систему и хочет сделать заказ, он открывает каталог и система делает в БД запрос, которым выбирает только те записи из таблицы машин, ID которых нет в таблице заказов на текущий период дат. То есть, если orderDate < now < returnDate, то только тогда car_Id из этой записи НЕ выводим в каталог.
>>1406275 (OP) >ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ Убрать из неё мутанита или хотя бы написать, что материал не рекомендован для вкатывальщиков и адекватных людей, которые хотят научиться C#.
>>1407009 >Я создал три сущности: Как бы, типичный пример падавана, который учился у мутанита. Вроде что-то пишет, но ничего не понимает и в голове не структурированные знания, а каша сваренная из верхушек, которую изложил долбоеб ака мутанит.
>>1407009 ня я лично вкатывальщик во фронтэнд и ненавижу бд, но я бы лично сделал всего два класса - клиент и машина, а у машины соответственно помимо цвета, цены и марки был бы массив заказов с датами и при заказе можно было бы чекать этот массив инстанса машины и смотреть какие даты свободны
ШаперыШрамеры, как там ваши ШарпыШрамы, до сих пор себя изрезаете и чем глубже у вас анальные шрамы, тем громче вы об этом воете всем окружающим? Думаю давно очевидно, что Мелкософт скоро будет никому не нужен и те, кто изучал Шрамы останутся с жизненными шрамами не нужности и опущенности.
>>1407138 >у машины соответственно помимо цвета, цены и марки был бы массив заказов с датами и при заказе можно было бы чекать этот массив инстанса машины и смотреть какие даты свободны Итого у тебя за 10 лет получается 3650 КРАСНЫХ BMW машин. Молодец. Нахуя эта информация и как ты будешь её использовать - по прежнему не ясно.
>>1407282 солид это не совсем про базочки для реляционных есть "нормальные формы". для нереляционных ничего не знаю подобного, денормализация там - это вполне себе дефолтная тема
Аноны, насколько реально устроиться на удаленку или в своем городе джуниору, преимущественно геймдев направленности? Есть желание изучать и .NET, и Unity, и в моделировать в Blender'е потихоньку для себя. Так вот, насколько перспективно изучать школьнику этот стек технологий для трудоустройства до 18?
>>1405095 Ощем, я был не прав. было развеселое, прикольное собеседование. результатов не знаю. было практически все что я знаю, и половина про то что я знаю. но не сильно практиковал: многопоточность, исключения в многопоточности, замыкания, expression и работа с linq на уровне выражений, оптимизация запросов sql.
хз как ща, но в мое время джунам даже на письма не отвечали. ТП не считали своей обязанностью ответить всем подряд: вы нам не подходите.
на удаленке все еще жестче. эта штука сама посебе требует самодисциплины. как правило. от ребята до 18 да и после 18, те кто джун, требовать самодисциплины - глупое дело.
>>1407654 Что в твоём понимании "подключаться напрямую к серверной бд"? Пользователь вводит данные, нажимает кнопку, которая отправляет данные на сервер при помощи http запроса, обычно это POST, обычно данные сериализуют в формат json, либо выполняют бинарную сериализацию, отправка идёт на определенный адрес, например https://server.org/db/addData. Но ты можешь их GETом отправлять, можешь PUTом, также как и адрес может быть вообще одним для любого вида запросов, а кто тут клиент/сотрудник/админ решается при помощи заголовков запроса. На сервере данные запроса обрабатываются и добавляются в базу данных, либо отбрасываются как не прошедшие проверку.
>>1407817 ситуативная херня. если вложенный IDisposable помечен как readonly, а конструктор писал не школяр и проверяет зависимость на налл, нахер тут этот ? облокотился
>>1407822 Он не знает, знает программист, и если у тебя реализован объект при котором создается диспозабл объект, то очевидно, что пока существует этот объект, будет существовать и диспозабл объект, поэтому смысла в проверке на null нет.
Сап, pr. Есть класса. У него есть нное количество private полей. Класс также реализует getEnumerator тот что для foreach. На каждой итерации, цикла, классобъектвозвращает объект из какого-то из полей. Так вот, можно ли вычислить ПОЛЕ из которого стащили объект?
>>1408172 Поподробнее плиз. Прост я с БД работал ещё в 2005 году, тогда да, разделялось. А сейчас вот учу шарп и слушаю охуительные истории про LINQ от МСДН.
>>1408217 тебе предлагают: клиент <-[ ]-> сервер <-[ ]-> бд где каждый из компонент разделен физически
ты говоришь о сборке, которую нужно подключить на стороне сервера (в твоем случае), которая будет за тебя генерить SQL и материализовывать сущности в .NET-овские классы:
>>1408235 мс тебе предлагает просто абстрактно получить доступ к любой (условно) базе средствами LINQ ты говоришь, что из клиента стучать к БД низя тебе предлагают запилить сервер, с которым будет общаться клиент, который будет стучать в базу там можешь обмазаться LINQ, EF, Dapper, любым другим говном
Имеется mvc приложение абстрактного интернет-магазина. Существует условный продукт, у которого указана цена. В сборке присутствует класс, который принимает курс валюты (в моей случае доллар), по логике, он должен взаимодействовать с сущностью продукта и при выборе валюты, конвертировать цену. ВОПРОС Как реализовать?
Сап программач. Возникли трудности с шифрованием aes256. Суть в чем: я создал класс в котором реализован алгоритм Диффи-Хеллмана, работает исправно, у обоих собеседников совпадают итоговые ключи, проблема одна - итоговый ключ содержит непостоянное количество цифр (ключ состоит целиком из цифр), от 36 до 39, но количество этих цифр на результат работы самого шифрования AES не влияет. При любом количестве цифр в ключе, шифрование происходит через раз, периодически ругаясь для длину ключа "Указанный ключ имеет недопустимый размер для этого алгоритма" Шо делать? Я уверен процентов на 90%, что проблема заключена в итоговом ключе который генерируется алгоритмом Диффи-Хеллмана, можно ли его каким либо образом привести к нормальному виду, чтобы алгоритм шифрования исправно шифровал текст этим ключом? были мысли про md5 хеширование, но я чет нихуя не понял
>>1408479 алсо, только что глянул метод Aes.GenerateKey(), генерирует он хуйню идентичную моему алгоритму диффи-хеллмана. У меня нет мыслей. Мб можно как то сгенерировать 100% рабочий ключ по кодовому слову, где в качестве кодового слова будет использоваться сгенерированный моим алгоритмом ключ? Аноны, спасайте
Какую либу испольовать для написания вебсоскет сервера? Нужно получать данные с криптобирж, обрабатывать и раздавать клиентам, короче как свечки, только рисовать график. Бтв не против заплатить за разработку, можем даже скопроперироваться, и потом трейдить/ботить вместе.
>>1408481 >Мб можно как то сгенерировать 100% рабочий ключ по кодовому слову лолшто? что ты там генерить собрался? у тебя ключ должен иметь определенную длину, а не просто рофлонабор говна какого-то
>>1408521 ну так и как мне сделать генерацию ключей чтобы они были не рофлонабором говна? Aes.GenerateKey() мне не подходит, так как обмен ключами производится по незащищенному каналу, т.е. через алгоритм Диффи-Хеллмана
>>1408557 Я же написал, обмен ключами происходит через алгоритм Диффи-Хеллмана. В кратце: передается публичный ключ по открытому каналу, производятся математические операции, клиенты обмениваются промежуточными данными, снова их обрабатывают и таким образом высчитывается закрытый ключ. Товарищ майор, который прослушивает трафик при этом никаким образом не может воссоздать этот закрытый ключ, т.к. у него не хватает некоторых данных, которые генерируются локально у каждого клиента и не передаются по этому каналу
>>1408564 так, теперь все стало на свои места тебе же говорят: >Указанный ключ имеет недопустимый размер для этого алгоритма если ты сам себе рассчитываешь ключанский, так догони его до нужного размера, который угомонит AES. нулями дополни в конце (или в начале), или кусок соли вставь, пускай даже передаваемой открыто
>>1408568 Вот тут вылазит еще одна хуйнюшка о которой я писал в первом посте. Этот закрытый ключ ключ типа BigInteger у меня может иметь длину в 36,37,38,39 символов, при этом ключи этих размеров одинаково рандомно подходят для шифрования. В 50% случаев алгоритм шифрования работает для ключа любой из этих длин, в другой половине случаев выбивает ту ошибку. Следовательно - я долбаеб и длина ключа считается не количеством цыфарак в ключе? И если я долбаеб, каким образом мне узнать длину сгенерированного ключа и в случае малой длины дописать его до необходимого размера, а в случае если длина больше необходимой - урезать?
>>1408572 в исходниках или документации (хотя я не уверен, криптография не мой профиль) там простая формула, я просто тупо решарпером смотрел место, откуда такая ошибка возвращалась
>>1408579 >>1408591 Кажется я нашел элегантный способ решения моей проблемы - если вдруг кто то столкнется с подобной - в великом и могучем гугле вбейте "деривация ключей"
Нет нихуя, такого нет, я же блядь сам его сделал и сам же на нем торгую ежедневно в плюс по одной эфирке подбираю крохи со стола . Короче сложно болядь ваш сервер, впизду. Буду копить на кодера нормального.
>>1407953 >Может, есть какой-то другой способ решить ее? Есть конечно. Я больше скажу, уже всё решено костылями, но для общего развития полезно и о таком узнать. >>1407874 >универсальным способом нет Жаль
Я ебал, думаю, что сообщения не отправляются, а мне двач бан выписал
Ещё немного вопросов про рефлЕксию. На этот раз более обстрактные. Так вот, кто-нибудь сталкивался c reflection.emit? Если да, то насколько это полезно и чего вообще такого забугорного можно намутить?
Крч, посоны, я ебан, который нихуя не умеет. Сейчас учусь на похуиста программиста. Что можно нубу сделать на шарпе, чтобы въехать и чтобы поэтапно, не перескакивая.
>>1408858 1. Хеллоуворлд в консольке. 2. Хеллоуворлд в окне. 3. Хеллоуволдл в окне по нажатию кнопки. 4. Окно с кнопкой и чекбоксом. При отмеченном текстбоксе выводится хеллоуворлд, когда нажимаешь кнопку, при убранном нет. 5. Оконное приложение с кнопкой, чекбоксом и списком. В списке выбираешь фразу и по нажатию кнопки выводится другое окно с этой фразой. 6. Хранение записей в БД и загрузка их в список. 7. Хранение записей на сервере в сети и получение их в список. 8. Кроссплатформенное окно, которое одинаково выглядит в винде и линуксе. 9. То же, что и 8, но ещё и одинаково подтягивающее данные из п. 6 и 7.
>>1408780 Динамическая кодогенерация же, вытворять говно, аналогичное reflection, но не со скоростью черепахи, а со сравнимой с обычными вызовами. Ежели со скрипом осиливаешь рефлексию, то не лезь туда, оно не про C#, оно глубже - нужно IL знать и прочую поднаготную рантайма. Если сильно хочется - можешь копать в сторону Expression.Compile()
Господа, есть годные туторы по Xamarin? Все что нахожу - какое-то протухшее говно без MVVM и прочих современных плюх.
А вообще интересует конкретный вопрос, как взять фотки из галереи и пихнуть их в какую-нибудь коллекцию? Где не искал везде решения только о том как открыть выбор фотографий из галереи, а это совсем не то.
>>1408917 Принципы работы CLR, Паттерны MVC и MVVM, ADO.Net(EF и\или Dapper), в зависимости от того что делать собираешься учишь нужный специализированный под что-то конкретное фреймворк типо ASP.NET для веба и пр..
>>1407198 Хм... В EF чтобы создать связь один ко многим или многие ко многим в Code First ты буквально задаешь как виртуальное свойство класса коллекцию или объект той модели с которой связь, это нарушение SOLID? С DB First автоматически сгенереный код тебе такие же модели выдаст. Тоже нарушение SOLID?
Если ему нужна коллекция заказов с которыми связанна машина как свойство класса "машина" - то что в этом плохого и где тут нарушение SOLID? Связь один ко многим ну я предполагаю, тут либо у заказа делать как свойство машину, либо у машины список заказов, нарушения SOLID-а тут нет.
>>1409196 примеры высосанные из пальца под собес, хули ты хотел в качестве примера можно было ебануть использование Task или каких-нибудь делегатов, но не вот эту пердотню
>>1406275 (OP) Возможно ли как-то засунуть условия для using перед namespace, или try-catch, чтобы сначала проверить есть ли DLL-ка, а потом её юзать, иначе дефолтный using или вообще нифига... Если да, то как это правильнее всего реализовывается?
>>1409577 А где об этом по хардкору погрызть, а то для меня это просто буквы какие-то? >>1409584 А попроще, никак нельзя? >>1409588 Дело в том, что dll-ки лежат в папке packages, это dll-ки из nupkg-пакетов, а при компиляции всё это копируются в bin/Releases, которую можно таскать с флэхи на флэху.
В <PropertyGroup> если указать пути к изначальным dll-кам - они уже не будут соответстовать путям вновь создающихся, ну и конструкция: #if #else #endif чё-то не пашет внутри самого кода, после using'ов этих.
Поэтому надо бы сделать так, чтобы проверялось наличие DLL-ок в папке с программой, и если они есть - подключались всякие BouncyCastle, log4net и так далее. Иначе, если DLL-ок нет, то не загружать методы И КЛАССЫ и даже неймспейсы, которые их используют а просто юзать System.Security.Cryptography и Console.WriteLine, например.
Короче, надо чтоб софтина, при компиляции - ошибки не била, если DLL-ок нет, и чтоб, по дефолту, она компилировалось в минимально-возможной рабочей конфигурации.
Пиздец, манагер jetAss проснулся с перепоя и постит хуйню... Да твой убогий сруйдер не годится ни на что кроме хеллоувордов и упражнений к учебникам по с# писать так как ни шаблонов для проектов промышленного программирования нихуя не имеет ни поддержки всяких xaml и други форматов из winforms/wpf и т.п.
>>1410013 студия отлично открывала солюшн на 230+ проектов. естественно, билдится все это говно вечность, но причем тут ide это та дода, на собесе которой нужно написать мини-ессе о своем опыте разработки? лул, охуенная контора, надо брать пример с ебланов
Авторесайз изначальной пикчи... Ну, чтобы когда входной файл был большой, изначальный JPEG становился побольше, чтобы затем, у него увеличивалась capacity, и файл мог быть запакован туда. Вижу JPEG сохраняется с Image, а Image можно ресайзнуть. Только там два using'a, блядь, и код какой-то мудрёный. Алсо, не помешала бы запаковка/распаковка байтовых массивов, а то там Stream сохраняется в файл. Если получится сделать авторесайз, и прицепить байтовые массивы, то можно будет f5-jpeg-steganography - встроить в наноборду: https://github.com/username1565/nanoboard/issues/4 И развешивать по бордам жипеги. Лол.
Как можно засунуть в переменные (желательно в List) результат выполнений SQL-запроса? Про sqlCmd.ExecuteScalar()[.ToString()] - знаю, а вот как быть если возвращается несколько значений (одной колонки)? Подскажите пожалуйста!
Вопрос про NetworkStream. На MSDN написано >Read and write operations can be performed simultaneously on an instance of the NetworkStream class without the need for synchronization. As long as there is one unique thread for the write operations and one unique thread for the read operations, there will be no cross-interference between read and write threads and no synchronization is required. Я правильно понял, что я могу одновременно писать и читать из разных потоков, но если я буду одновременно писать (или читать) с двух потоков, то всё пойдет по пизде?
>>1410172 Compress(...) перенеси в конструктор, там же и ресайз напиши когда все данные не влезут. Иначе нужно будет весь код переделывать. Большая часть данных в конструкторе инициализируется и так просто изменить не получится.
Sup /pr. Пишу пошаговую онлайн игру попутно изучая прелести сетевого программирования. Использую TCP клиент и шлю через него различные клаcсы унаследованные от MessageBase. Как лучше отслеживать отключение игрока? Пока есть такие варианты: для каждого игрока использовать два tcpclient - один для обмена игровой инфой другой, чтобы посылать "пинги" каждые несколько секунд. Другой вариант тоже самое, но второй udp клиент который шлет каждую секунду сообщение и если не было сообщений n секунд констатировать отвал. Третий вариант - реализовывать все в одном tcp клиенте, но тут хз как все это организовать.
Сап, ананасы. Начал вкатываться в шарпы по первому учебнику из шапки. 19 параграфов понимал, на 20 охуел и сделал бекфлип, практически списав все решение из учебника, ибо ниасилил написание программы, имея по сути нулевую практику. Посему задаю вопрос: где можно посмотреть практические задачки разного уровня сложности?
>>1410771 Да но только когда пытаешься прочесть из него. То есть если у меня будет например 5 минут на ход, то если не опрашивать клиента жив ли, то второй игрок может впустую играть до 10 минут.
>>1410912 опять, тут любой вариант одинаково плох, если ты своё поделие педалить пытаешься. если у тебя есть централизованная точка, отправляй в неё пинги. если нет, то отправляй пинги между игроками
анон, я осознал что я тупой: я не могу в квик сорт, я не понял мерж сорт, я хз что делать со всей это алгоритмической парашей... с первого раза.
скажи - это нормально, для человека, который первый раз видит эти алгоритмы в виде текста, стратегии, псевдокода и даже готового решения И НЕ МОЖЕТ блять вот сука тупо взять и написать самому аналогичное дерьмо? мне блять сложно даже понять, что за херота там происходит.
>>1410971 Дядь, а тебе зачем, собственно? Работа? Хобби? Если тебе нужно разобраться в программировании/языке, то пиздуй читать книжки/проходить онлайн курсы. Если есть понимание, что такое ООП, классы/методы/лямбды, то можешь смело искать себе работу/проект/что-там-тебе надо.
Как показывает практика реальные проекты почти всегда состоят из говнокода, в котором хуй разберешься и твоя единственная задача это свести сраный бизнес к сраному говнокоду и понять какие две строчки тебе надо дописать в вашем сраном тырпрайзе. И никаких тебе космолетов и нейросетей
>>1411073 >Дядь, а тебе зачем, собственно? Работа? Хобби? Пока что хобби скорее, если нормально пойдет - сделаю работой. >Если тебе нужно разобраться в программировании/языке, то пиздуй читать книжки/проходить онлайн курсы. Ну я читаю первый учебник из шапки. Проблема в том, что я как бы понимаю материал и даже усваиваю, но практика очень нужна. Хоть какие-нибудь простецкие задачки на реализацию тех же классов, причем разной сложности, а то я учебник закончу, а применить знания не смогу.
>>1411083 >Хоть какие-нибудь простецкие задачки на реализацию тех же классов, причем разной сложности Вот в этом фундаментальное отличие Программистов от кодомакак. Программисты не задаются подобными вопросами "дайте мне задачек". У них пытливый ум, который моментально придумывает, как и где применить полученные знания "о, вот тут я могу к системе подключаться и получать модель материнки и проца", о, а вот эта штука неплохо зайдёт для моего мини-органайзера, теперь я наконец знаю, как его сделать" и т.п. Ну а кодомакаки - простые ремесленники. Даёшь ему задачу и он копипастит говнокод из туториалов. Без обид, анон. Ничего личного. Займись чем-нибудь другим. Искусство Программирования Машины - не твоё.
>>1411083 >Хоть какие-нибудь простецкие задачки на реализацию тех же классов, причем разной сложности, а то я учебник закончу, а применить знания не смогу. Ну вот, например: https://ulearn.me Там дохера видосов и практик по ним, видосы в целом можешь скипать, если уже знаешь. Там именно что простецкие задачи и практики на пару часов подумать.
Ну а вообще, это все вата и лучше взять и какую-нибудь хуету запилить
>>1411089 >Без обид, анон. 90% обезьян в энтерпрайзах, гордо называющие себя программистами, только и умеют, что кнопки по стаковерфлоу нажимать и ничего, живут
>>1411003 та же проблема. самое обидное, что я могу справляться с всякими там задачами на сетевое взаимодействие, работу с БД, .net core, angular, а вот алгоритмы хоть убей в голову не лезут. и в основном именно алгоритмические навыки смотрят на собеседованиях
>>1411099 О, мой дорогой анон, это же элементарно. Ангуляры, бд и прочая шелуха, это сиюминутные навыки, которые ты поднимешь за некоторое время. Алгоритмы же показывают умешь ли ты думать в целом, а это гораздо более ценный скилл, в отличие от очередной технологии, которая помрет через пару лет.
>>1411111 в энтерпрайзе думать не положено. мне чому то кажется, что там наоборот важнее как можно быстрее разобраться в чем то, чтобы быстрее заказчику выкатить. разумеется, при этом желательно стремиться говнокодить по минимуму, но вот на бумаге уметь поразрядную сортировку писать для этого, мне кажется, не является необходимым.
>>1411116 >поразрядную сортировку Ни разу такого не видел, кстати. Может не в те места ходил. В основном спрашивают простейшую дичь, типа элементарных рядов или минимальную пространственную геометрию. Понятно, что сами алгоритмы никому нахер не упали, но если анон не может разобраться в сортировках, то это хороший сигнал на дауна
хмм, а как тогда люди на аутсорсе/апворках сидят? Я думал там как раз фишка в том, что на английском только читать\писать надо. Если базарить умеешь, то нах удаленка, сваливать надо.
>>1411165 так аутсорс - это не удаленка) просто ты нанимаешься в контору, которую нанимает продуктовая компания
в апворках не знаю как сейчас, но раньше практически гарантированно был либо периодический созвон, либо интервью по скайпу, либо еще какая-то дичь. чисто на переписках мне повезло только на один проект попасть
>>1409650 Мне кажется, у тебя подход изначально неправильный. Все твои проблемы разруливаются инверсией и инъекцией зависимостей и любым ioc-контейнером, который умеет в конфиги (тот же Autofac, например).
>>1411090 Нуу, когда ты что-то знаешь и умеешь, применение новым знаниям всяко проще найти, чем когда ты мало знаешь и нихуя не умеешь. Вот я и прошу задачки, чтобы хоть что-то уметь. >>1411090 Спасибо, анонче, от души.
Как в параметры приложений Wpf добавить таблицу? Есть небольшая табличка (75x4 или около того). Хочу хранить ее вместе с другими параметрами, но чертов интерфейс не дает возможность добавить какую нибудь коллекцию (хочу String[,]). Думал написать свой класс что бы описать ее, но как добавлять свои типы туда тоже не понял.
>>1411573 альтернативы? есишо, мне пiхуй, проще развернуть какой-то энв для мимолетного пердолинга, чем пытаться устанавливать что-то и ловить кросс-платформенные конфликты
Здорово почаны, вкатывальщик из пятерочки в треде. Помогите определиться, насколько реально вкатиться в бек на шарпе, без вышки, есть подозрение, шансов нет, без технического бекграунда, и дорога только в макаки. Пугает что язык корпоративный и олдовому нерду без корочек, будут не рады.
>>1411658 ну нет, блять. нинасколько не реально. у меня в конторе ща на первой линии поддержки сидит чувак под сорокет, без вышки. годится только закрывать типовые заявки. копнёшь чуть глубже - или знаний совсем нет, или начинает вещать такую хуйню, что уши вянут. чудес не бывает!
Нахуй мне какую-то хуету открывать если и так очевидно что там хуйня? У этих довенов даже решарпер постоянно глючит во всех местах, это при том что это относитеьлно небольшая приблуда, а ты предлагаешь на всю их самопальную ИДЕ перекатиться. Стоит ли говорит, что ты дегенерат-школьник никогда не работвший в промышленноми проектами иначе бы такой хуйни не предлагал? Половины функционала из промышленной разработки у райдера тупо нет, с дизайнерами вообще швах. Даже в студии проблем хватает, а тут блять изначально тупая поделка ни и кому она нужна если речь идет о серьёзной разработке а не поиграться дома вечерком?
>>1412128 ну хотя бы на словах идею донести надо пробовать а если ты сам себе не можешь объяснить что к чему, то пытаться в собес тоже занятие сомнительное
У райдера winforms дизайнера нет, нет дизайнеров отчетов ms ReportViewer. В студии функционал норм, косяков много, например нугет пакеты через жопу работают, в xamarin косяк на косяке.
короче, начал готовить алгоритмы по хардкору. теперь каждый день решаю минимум 1 задачу с литкода либо в шарпе либо в JSе.
намедни узнал о стандартных вопросах на собеседовании. можете накидать таких? пример:
- найти наибольшую последовательность неповторяющихся букв в строе "аакуаыываииагг" - поиск анаграмы - медиана - полиндром - двусвязные/односвязные списки
я все это решал. первый раз юзал стэк и хэшсет из хэшсетов ща ебусь с - найти кратчайшее растояние из А в Б на поле.
причем я перепутал это дерьмо с кратчайшим расстоянием в графах. они вроде как похожие и вроде как про одно и тоже, но первая мне кажется полегче, а эти ебучие графы - это ебаный стыд. у меня опять перед глазами фейлы в школьной информатике, на курсах по информатике, флешбеки из вьетнама и ужасы на улице вязов.
СУУУУКА. ебучий алгоритм из википедии имеет ИМЯ! Друзяка решил пилить алгоритм собственно ручно, а я даже хз как это реализовать, не то что придумать :\
Кто-нибудь юзал F#? Это нормально, что чтобы сделать static class, мне нужно классу дать атрибуты abstract и sealed? Так и должно быть или я просто не туда пихаю static?
перебираем все чары в строке - если левая скобка - стек.пуш - если права скобка - стек поп, проверка -- соединить открывающуюся скобку со второй -- найти такую пру в хэшмапе -- true? continue, false? return false
коллекция допустимых пар - это хэш мап с ключем в виде открывающихся скобок, а значением: либо пара. либо закрывающая скобка.
Так это только вершина айсберга, еще миллион мелочей которые даже не вспомнить с ходу, но как только начнешь кодить будешь с ними ебаццо. Сам подумай, с одной стороны продукт с 20 летней историей от софтверного гиганта с огромной командой разработки, с другой совковоая контора из 3.5 чела которая к тому же пишет на уебанской ДЖЕЗВЕ.
>>1412138 ну у меня типа проблема в том, что я понимаю алгоритм и могу даже написать его сидя дома в уютненькой IDE, но времени у меня на это уйдет больше, чем у чистокровного математика
>>1412304 адекватный собеседующий не будет сидеть сорок минут втыкать как ты не можешь из себя выдавить два слова, а начнет: либо наводить на ответ, либо сразу переведет разговор. причем, в интересах же кандидата, вне зависимости от степени прошаренности в вопросе, начинать осуждать решение, даже с самим собой (опять таки, в случае адекватности проводящих собес). если тебя не конпелятор зовут писать или какой-то йобасаенс, в математике контора тоже не нуждается
Что ошибка может значить? Внешне никак не проявляется, только в отладке, приложение запускается и работает, производительность вроде обычная. Появилась после перехода на Entity Framework. Потоки я специально не прописывал нигде. Xamarin, если это важно. ньюфаг
>>1412371 Нагрузка на поток высокая. Это появляется один раз при старте, наверное, просто старт тяжелый, т.к. у меня нагрузки то нет считай, на весь код из циклов - один foreach, который два элемента обрабатывает. Это было еще до перехода на EF.
>>1412128 Знаю примерно миллиард людей, которые не решали алгоритмы на собесах и проходили их, как писал анонас выше, кроме узких областей матан не нужен.
Алгоритмы никогда не будут лишними и показывают насколько чел задрочен или соображает, но ключевым критерием редко бывают. Но при этом просто на похуе отъезжать тоже не стоит и понимать чем двусвязный список от стека отличается и когда надо использовать словарь надо понимать
>>1413028 >как реализовать 5 пункт function Form1.OnButton1Pressed(Sender: TObject); var text: string; begin text := List1.Lines[List1.Selected]; ShowMessage(text); end;
>>1408639 А нахуя ему именно сокеты то? Для дёрганья клиентов с сервера - можно Signalr прикрутить. Это вообще несложно должно быть. Другое дело - как и насколько он это всё масштабировать собрался, объёмы этих ваших бирж в копеечку обойдутся даже если не через жопу писать.
В зависимости от того, какие операции ты будешь над коллекцией совершать полезно выбирать разные структуры, естественно. Чо то я хуйню какую-то объясняю, иди книжки читай короче.
Подскажите о боги C#, хоткей в VS для создания переменой и объявления ее типа на основе результата выполнения метода. В IntelJ Idea, на Java, я писал так: someMetod(); нажимал Ctrl+Alt+v и получал: SomeClassName variableName = someMetod(); т.е. IntelJ Idea создает за меня имя переменной и укз1ывает тип для нее. Хочу так же в VS. Кто знает как?
ЕБАННЫЙ БЛЯДЬ ENTITY FRAMEWORK НА XAMARINЕ, СУКА, ХУЯ ОН С ЕБАННЫМ ЛИНКЕРОМ НЕСОВМЕСТИМ, ЕБАТЬ ЕГО В РОТ. ПИЗДЕЦ, БЛЯДЬ, Я ЧЁ, ДОЛЖЕН КАЖДУЮ СУКА БИБЛИОТЕКУ ЕГО ПЕРЕБИРАТЬ, ЧТОБЫ ПОНЯТЬ, КАКУЮ ЛИНКЕР ВЫРЕЗАЕТ??!?!?!??!
>>1414154 >Хуяришь такой 9000 библиотек, не особо заморачиваясь нахуй они вообще нужны и используешь ли ты их >Линкер идёт по пизде >Так бля, падажжи ёбана Я проиграл
Сап, у меня есть три проекта в солюшене A B C, С - запускаемый, B и C зависят от A. Можно ли сделать так, что бы когда я жму F5 (ctrl + F5) проект B тоже перестраивался?
Друзья, недавно вкатился в программисты из другой сферы. При этом, ранее проходил курсы JavaRush, но пошёл-таки разработчиком на C#. Отсюда вопрос, какие курсы повышения квалификации выбрать? Меня заваливают спамом GeekBrains от Mail.ru, но я слышал негатив. Что выбрать? Как повышать квалификацию, чтобы быстрее стать хорошим миддлом?
Почему меня студия нахуй шлет, когда я делаю так private async T Foo<T>(T task, int num) where T: Task >The return type of an async method must be void, Task or Task<T>
>>1414204 Меньше порог вхождения, как мне показалось. На Java я один раз на собеседовании рассказал всё от принципов ООП до того, что под капотом у Hibernate (я к тому моменту написал программу на Spring). Не взяли. С шарпом вышло куда проще.
Вопрос по WPF Окно, в нём листбокс (пик 1), окно по PreviewKeyDown добавляет итемы в листбокс, каждый раз выделяя новый элемент и скролля вниз. На пике 2 всё норм. На пике 3 (выделил изменение) уже всё совсем не норм - не выделяет и не скроллирует. А на пике 4 опять норм.
>>1414207 компилятор в данном случае требует четкого определения границ async-методов. конечно, в твоем случае компилер и так должен гарантировать, что T будет как минимум Task-ом, но тем не менее, много смысла от твоей сигнатуры не видно. т.е. ты не поломаешься, если обьявишь вот так: private async Task Foo<T>(T task, int num) where T: Task
>>1414342 твой листбокс ведет себя правильно во втором случае. по факту ты запихиваешь каждый раз одно и то же строковое значение, которую рантайм интерполирует и не дает тебе создать кучу дублирующих литералов. поэтому на SelectedItem = stroka, лб прошаривает весь список элементов, пока не найдет искомый (который, внезапно, и первый, и последний, и вообще все остальные) и выделяет тебе первый найденный
>>1414349 Я делал метод для выполнения таски с таймаутом и хотел сделать общий генерик метод для Task и Task<T>, но пришлось делать два метода идентичные на 99,9%.
>>1414389 все последствия отсутствия типа Unit в языке особенно печально было в реальном проекте все делить на "нечто возвращающее значение" и "нечто не возвращающее значение"
>>1414389 >пришлось делать два метода идентичные на 99,9%. Чем отличается Task от Task<T>? Я к тому, что метод для Task мог бы быть приблизительно таким: yourType Method() { var defaultTask = new Task<defaultType>; return defaultTask.Method(); }
>>1414439 Ничего не понял. Я делал метод, который в случае, если таска выполняется дольше положенного выкидывал бы TimeoutException, вот как у этого анона >>1414395, только он хитро обернул не генерик таску в генерик, а у меня было два отдельных метода для генерик таски и не.
>>1414515 Если ты про разработку на линуксе, то есть IDE Rider от JetBrains и продвинутый текстовый редактор VS Code от MS. Если про разработку под линукс, то как уже написали есть кроссплатформенныый net core.
Хм, я что-то почитывал и задался вопросом, а как вообще не отставать от новшеств? Вот ты пишешь себе на nunit, а тут бах и оказывается есть xunit. Да, его не пользовали в проекте, но всё же, упускать не хочется. Это сугубо пример, но суть я думаю ясна. Буду признателен за идеи.
>>1414688 кодерам хорошо, обычным офисным крысам куда хуже в мелких конторках. вот сидишь ты и в ус не дуешь и внезапно узнаешь что надо было сдавать какой-нибудь новый отчет и ты уже просрочил его сдачу...
>>1414750 ок, но ведь просто подписаться на ютубчик макфрософта не совсем работает. Или работает? Интересно, а есть на просторах необъятного инета агрегатор новостей по данной теме?
>>1414996 ютубчик майкрософта постит дрянь какую-то. можешь подписаться на свитер, правда это ограничивает тебя только релизами от непосредственно майкрософта, который, очевидно, не единственный законодатель мод в it
аггрегаторы новостей - это гугл, яндекс, бинг и прочая ебала, в которой есть вкладка "Новости" ) вообще сейчас тысячи источников информации, включая подпивасные конфочки в телеграми и группы во вконташке из 5-ти человек. охуеваешь следить за всем, если сознательно хочешь быть в курсе всего
Кумовским способом устроился в фирму, в которой сразу влился в ASP.NET WebForms проект. Это мое первое место работы. Так-то учил только С#, немного SQL, HTML. Работаю уже год. Проект развивается, работы на ближайшие лет 10 до хрена и перспективы роста зп тоже имеются. Но это вымирающий WebForms, а мне почти 30. И вот думаю, переучиться на MVC, теряя кучу времени или выучить в совершенстве синицу в руках? Все равно будет сложно найти работу без опыта именно в MVC, наш проект хотя бы долгосрочный.
>>1415117 Не переживай, меняются фреймворки(потом могут закинуть на ксамарин или что-то типа Замарина или WCF), но твой опыт написаний бизнес-логики останется. И на другие проекты идут часто дабы с нуля выучить что-то новое, но зная арихтектуру .NET.
Здрасьте, чёт заинтересовался юнити, решил какую-нибудь простенькую игру в нём написать, а там сишарп, сам я крестоблядь, есть какой-то brief course по перекату в шарписты с плюсов? Или различия незначительны и я в целом сам разберусь по ходу дела?
Привет всем парни, такая хуета короче, 1.5года не писал на шарпе и вообще не прогал, был sql админом баз данных, сейчас сократили, надо возвращаться, начал читать, вспоминать все, и понял что не могу, прямо мутит и выворачивает от всего этого, и мозг не хочет себе вдалбливать знания, и чуть ли не физически выворачивает от взгляда на код. Что делать, как замотивировать себя и заставить все учить? (Для новичков кстати рекомендую видеокурс ITVDN от Шевчука, вроде вполне норм для начала объясняет, достаточно подробно и разжевано, можно на рутрекере найти полный курс).
>>1415784 так-то можно и .net core хоронить потому, что будет .net 5 в mvc его будет ждать практически все то, что есть и в коре, правда, к названиям классов/методов привыкать сильно не стОит
Феликсы, поясните пожалуйста новичку про геттеры, я все равно не отдупляю. Я знаю, что геттеры и сеттеры - это синтаксический сахар, и компилятор все равно делает из них обычные методы доступа к переменным. Так вот, если у меня есть класс Abu, в нем есть два паблик геттера: Height {get;set;} и Weight {get;set;}, то мне надо ниже вручную создавать две закрытые переменные с ростом и весом, или компилятор поймет, что их делать надо?
>>1415803 Когда ты пишешь Huj{get; set;} - это называется автосвойство. Компилятор сам создаст приватное поле для хранения значения. Когда ты пишешь Pizda {get {...}; set{...}}, то это обычное свойство и тебя надо самому делать переменную (или не делать если значение высчитывается или берется откуда-то).
When you declare a property as shown in the following example, the compiler creates a private, anonymous backing field that can only be accessed through the property's get and set accessors.
Есть инфа как в SQLite замутить реляционные отношения между таблицами? OneToMany и OneToOne, и ManyToMany - отсутствуют. Делаю приложение на Xamarin'е (Android native) и только сейчас понял в какую жопу попал.
Нашёл вот такую ссыль ^^^, но я не очень понимаю как это использовать и внедрить в проект и readme.md у меня не открывается почему-то. Помогите пожалуйста!
>>1406275 (OP) Сап Шарпач, щас вкатываюсь в ASP.Net Core. Может кто норм книжек посоветовать чтобы IoC и DI разжовывались хоть немного. А то у меня на этапе внедрения AutoFac Требуют такой стек в проект все встало.
>>1416384 Наверно не совсем так меня поняли. Я бы хотел про ASP. NET в целом (ну там особенности, логика работы все в таком духе просто постоянно мониторить MS Docs немного некомфортно) и как пишутся слабосвязные приложения на нем в частности. Я например уже пару дней немогу вдуплиться как внедрить DI для контроллеров
Есть статичные Dictionary который я использую для дебага. Ключ это текст дебага, а значение это различная доп. инфа. При запуске программы почему-то иногда выскакивает такое исключение, ключ и значения на нулл проверяются, так же в дебаге видно что они не нулл. При том исключение не стабильно, может за 10 запусков не разу не вылезти, а может 1-2 раза, но после уже не будет выскакивать, в чем прикол?
>>1417382 Там нечего показывать, статичный Dictionary который используется в DebugWindow, в котором статичный метод делает Debug[msg] = AdvancedInformation();
>>1417443 У меня программа работает с большими потоками данных которые очень быстро меняются (каждые 10мс), ну и конечно она не хранит все данные в себе, грубо говоря данные получаются и пропускаются через разные системы оставляя только необходимый мне результат, все это еще многопоточное и отловить какую-то логическую ошибку обычными средствами анриал. А хранить данные для анализа уж тем более, за 1 минуту там данных выйдет под десяток гигов, поэтому когда что-то нужно я подобным образом дамплю необходимые мне данные и уже смотрю их своими средствами.
>>1417483 Один брекпоинт занимает около 3-5 секунд для сбора данных об объектах, плюс многие значения затем отваливаются из-за таймаута. Это еще не считая того что многие объекты во время дебага показывают актуальные значения свойств, а не те что были на момент когда мне нужно дебажить. Ну и многопоточность создает проблемы, из-за нее при дебаге программа ведет себя слегка иначе.
Будет ли работать подписка на событие следующим образом: В конструкторе абстрактного класса я подписываю абстрактный метод этого класса на внешние событие. В дочернем классе я переопределяю этот метод. Будет ли в этом случаи срабатывать функции при событии у объектов дочерних классов? Если нет, то как это правильно сделать?
>>1417824 Почему то у меня на событие функция подписывается два раза подряд. В итоге при событии одна и таже функция срабатывает дважды. Почему так происходит? Код такой.
Блядь, как в c# проверить, если у функции реализация? Походу ебучий конструктор вызывается два раза: один раз для абстрактного класса и один раз для класса наследника, при этом дважды подписываясь на одно и тоже событие. Можно ли избежать этого, не вводя при этом статические счётчики созданных объектов?
Аноны, возможно ли как-то в .NET Core приложении используемые библиотеки включать в итоговую сборку (т.е. копирование использующихся dll-ок в папку Debug)?
На данный момент я эту процедуру делаю при помощи редактирования файла .csproj (как на пикриле - для каждой dll-ки свой Reference), но это ОЧЕНЬ заёбывает. Без этих записей в итоговой папке оказывается только моя программа без библиотек, что мне не нужно, ибо заливаю на удаленный сервер, на котором они заранее не установлены. Можно ли это автоматизировать через Visual Studio или каких-нибудь пары строк?
Скорее всего я просто еблан. Простите же за мою тупость, аноны.
>>1418192 Сейчас решил ради теста добавить одну библиотеку, и внезапно в свойствах сборки появилось "Копировать локально". До этого не видел, поиграюсь с этим немного, надеюсь, оно и есть.
>>1418194 С этим тоже потестирую, благодарю за совет.
Где найти работу за доллары? Для апворка я видимо слишком тупой, меня там рыночек решает. Пробовал так же на всяких старт ап сайтах и для ремоут работы искать - тоже по нулям. Челики даже на собеседования не зовут. ИРЛ без проблем дают 100+, я из миллионника, но в офис ебал ходить, сейчас на удалёнке работаю. Как эти 100к превратить хотя бы в чистые 2к$?
>>1418473 >дващ я успешный тяночки говорят что я 100к из 10, но сами на хуй не прыгают а ходить на свиданки мне западло >ты пиздишь где-то, сдается Действительно, где?
>>1418473 Офисная зарплата платится в среднем по городу. На ремоуте сейчас мне платят столько же, сколько в местных офисах дают. >>1418523 Я ходил на "свиданки". Спамил на апворке, ещё в других местах, пару раз даже до тестовых доходило. Никуда не взяли. Нихуя я не успешный, выходит. У этих уёбков ещё и за всякие 3-4к$ там такой ебучий список требований, за которые десятку должны платить в буржуйских краях.
Аноны. Абсолютно нихуя не знаю ни один ЯП, но знаком с программированием на уровне скретча. HTML не знаю. Можно вкатиться в си шарп и на асп сайты делать?
Добрый вечер, аноны. Прошу совета насчёт выбора хостинга для .NET Core приложения. Цель - взаимодействие через API всяких сайтцев (боты, хуе мое) или своих же приложений; возможно установка ASP.NET; прочее, что нужно делать круглосуточно, но нет возможности делать это на своём ПК, ибо жалко платить деньги за электроэнергию. Пробовал Heroku, но наткнулся на подводный камень в виде вайпа файлов при каждом git push-е в репозиторий (необходимо хранить некоторые данные в xml файлах, что из-за их хитровыебанной системы сделать невозможно) + рестарт каждые 24 с лишним часа. На другие бесплатные сервисы не особо надеюсь. Какой хостингер посоветуете взять нуфажику, чтобы не особо дорого и без навороченных свистелок и перделок? Заранее спасибо.
>>1418974 Лучше мы будем тебя называть гей-кун. >>1419012 Любой бери. Потом уже в зависимости от потребностей выберешь наиболее подходящий. У меня арендован ВПС за 100р/мес на лине, для баловства хватает (5гб ssd 500мб рам анлим Трафика), конечно чему-то серьезному на таком будет грустно, но раз ты не знаешь что тебе надо попробуй такое.
>>1419043 invs.ru Правда у меня там не получилось настроить ubuntu + nginx, но их готовый образ CentOS + Apache работает норм. Но это мое неумение готовить линуксы. P.S. Если решишь ставить CentOs, то ей 500мб оперативы мало для обновления пакетов, надо включать файл подкачки - гугл в попмощь
>>1419053 Спасибо за рекламу совет, приглянусь и к этому сайту тоже. Если не похуй: на своём сейчас поставил убунту 16-ую, но пришлось немного потрахаться с установкой dotnet SDK, ибо выебывался на отсутствие оного. Тестирую сейчас - пока все работает стабильно.
>>1406275 (OP) Почему везде символы всего девушки? Задолбали дрочеры вонючие без самоуважения. Ссать на вас телки хотели.
Как сделать программу, что искала бы все zip архивы на наличие файлов с определенным расширениес. Далее анзипповала бы эти ЗИП файлы самостоятельно в указанную папку, и сортировала бы файлыв по типам. Типа jpg в папку jpg, PNG в PNG и тд. Может ли это ваша системное программирование, или это хуйня собачая, которая не способна решить даже такую тривиальную задачу. Ну конечно, анзипить наверное это уже год надо код писать...
>>1419088 Ну программирование это вообще такая вещь что смешны те кто гоовоят что нужно знать алгебру и всё само получится. Ну вот иди своей алгеброй сделай мне анзиппер. Тут нужны реальная умения. Причем их чето слишком много должно быть
>>1419129 Ебать ты тупой. Не можешь просмотреть пару классов их методы, нахуй ты вобоще полез кодить? >>1419130 А зачем тебе винапи? Опять ще для тебя мудака уже сделать удобный высокоуровневый класс Dirrectory.
Сап шарпач, помогите дегенерату, в жизни не работал с потоками и шарпом, необходимо сделать клиент-серверное приложение, с парочкой функций, работать необходимо с битрикс24, сейчас необходимо сделать регистрацию пользователей без использования rest api, данные нужно отправлять пост запросом из textbox-ов. Нашел класс webrequest для установки соединения с сервером, но все еще не понимаю как вытаскивать данные из текстбоксов и перенаправлять их в пост запрос а потом уже на сервер. Посоветуйте что почитать или же укажите на простенькие примеры взаимодействия все этого.
Срочно шок новость как сделать бесплатно без смс поиск PNG файлов в во всех ЗИП архивах в папке.
Типа
1) Найти все ЗИП архивы 2) Из всех найденных архивов найти те, что имеют в себе jpg/pngфайлы 3. Создать папку в заданной директории для каждого найденного типа фоток 4. Экстрактить туда соответствующие файлы.
Есть программа на C# которая реализует плагин систему через динамическую загрузку сборок как защитить сборку от тупого пиратства через распространение длл файла? Сама программа не предлагает никаких способов защиты для плагинов, но я сделал пару плагинов которые явно интересуют людей и хочу хоть что-то получит за свои труды, но судя по опыту прошлых создателей плагинов если никак не защищать, то находится умник который выкладывает плагин в паблик или начинает вовсе его перепродавать в X раз дешевле, что сводит на нет все желание делится тем что сделал. Я понимаю что от хороших крякеров защитить прогу на C# практически нереально, но какие есть способы защиты от тех кто хочет легкой наживы за счет чужих трудов?
>>1419677 С вас пять тыщ. Directory.GetFiles(@"c:\test\", ".zip").ToList().ForEach(s => { var z = Ionic.Zip.ZipFile.Read(s); z?.ExtractSelectedEntries(".png", "", @"c:\test\png\", ExtractExistingFileAction.OverwriteSilently); z?.ExtractSelectedEntries("*.jpg", "", @"c:\test\jpg\"); });
>>1419710 Напиши простую проверку по ключу или сертификату. Вынеси её и часть функционального кода в зашифрованный код виртуальной машины, которую сам же и напишешь. В результате чего без ключа дллка не будет работать, а проверка ключа и полезный код будут генерироваться при запуске приложения. В таком случае кулхацкеры не смогут так легко обойди проверку ключа, вырезав этот код. Сверху можно ещё обфускатор накатать, езфускатор какой.
>>1419722 >в зашифрованный код виртуальной машины, которую сам же и напишешь Не совсем понимаю как это, никогда такого не делал подобное, есть где посмотреть пример?
>ещё обфускатор накатать, езфускатор какой. С этим я думаю будет сложно, так как в плагине используется АПИ из основной программы и это скорее всего поломает плагин.
>>1406488 У меня с твоего поста горит больше, чем со всех багорт-тредов вместе взятых. Скажи честно, это такой тонкий тролинг? Потому что если нет, то мне сейчас очень страшно.
Здравия вам, уважаемые. Короче я инженер, у нас заменили САПР, и вместо макросов и аддонов на шарпе, все теперь надо переписывать на VBA. Поискал я инфу и вроде как VBA это VB6. Почему это важно? А потому, что VBA встроен и изучать его в свое свободное время не получится, в то время как VB6 можно установить отдельно. Хотя и надо поплясать с бубенцом, ИБО ЭТО СРАНОЕ ГОВНО МАМОНТА И VB6 ГОВНО МАМОТНА НАХРЕНА ОНИ ЭТО СУЮТ В 21 ВЕКЕ ХОССПАДЕ ЗА ЧТО МНЕ ЭТО VBA мне реально незнаком, модули какие-то и все такое. Собственно я слегка запутался. Так как времени в обрез, хотелось бы уточнить у вас - стоит ли начинать с VB.NET как наиболее близкому хотя бы синтактически, или все-таки нырнуть в VB6? Спасибо.
>>1419677 Блять вот реально, ты не можешь сделать такие простейшие действия. Нахуя ты вообще тогда нужен в разработке? За тебя всё должны сделать аноны?
Помогите новичку, пытаюсь отправить данные из формы на сервер в пхп скрипт который уже заносит данные в бд, но ничего не происходит и тут я не могу понять либо я неправильно принимаю, либо отправляю
>>1420515 Есть код в нескольких папках и двух-трех десятках файлов. Везде для чисел с плавающей точкой используется double. Хочу, чтобы на этапе компиляции я мог в одном месте переключаться между double и float (нужно разобраться в скорости вычислений float'а и получаемых погрешностях в сравнении с double). Как это сделать? Найти и заменить - тупое решение (и не работающее, т.к. нельзя просто написать float x = 0.5, будет ошибка). Можно было бы написать что-то вроде: Using FLOAT = Double; //Using FLOAT = Single; И везде при инициализации писать костыль вроде: FLOAT x = (FLOAT)0.5; Но Using приходится писать в каждом файле, что тоже коряво. Есть ли в шарпе для этого нормальный способ, например, как в C++, где это решается единожды написанным #define.
>>1406577 3 часа лежал в ванной скролил двачи и пролежни отмывал и только с твоего поста проиграл с подливой...
И да, соглашусь. Код того анона нужно в рамку и у фейк ресепшена повесить. Кто смог пройти мимо - сливать. Остальных откачивать нашатырём и показывать настоящий путь в офис.
>>1420469 >php скрипт ничего и не возвращает Ты ничего и не отправил, а отправляет как раз таки request.GetResponse(); И параметры можно написать как = $"name={textBox1.Text}&akjsfhbkh...";
Заебали превращать сишарп в сахарную говнину. Код на пике считается валидным. Из-за этого подобные конструкции стали использовать там, где их быть блять не должно.
>>1420920 Нет, "_" на пике считается просто дискард вариеблом. ей ничего не присваивается, у неё нет значения и она нигде не выделятся (стэк, регистры и т.п.). Вот если бы её раньше объявили "int _;", то была бы обычная переменная с именем "_".
>>1420904 >И что он при этом делает? Там - ничего. А вот в какомнить "if (Int32.TryParse("sosay", out _)){}" уже есть польза.
>>1420995 А, падажжи, она в тело {} попадает как _ ? то есть можно задать функцию условие, которое выбрасывает булевый результат и любого другого типа переменную? То есть, чтобы: if (boolfunc(out myvar)) { cosnole.write(myvar); }
>>1420995 В том то и дело, что никуда. Если тебе только важно узнать инта это или нет (т.е. трайпас возвращает труху или фальсу) и похрен на какое там значение. То _ позволяет сэкономить объявление локальной переменной, которую мы использовать не будем: int inta = 0; ... (..., out inta); Заменяется на: ... (..., out _); И уже самим трайпарсом значение никуда не присвоится, т.к. на out стоит дискард. Дискарды в первую очередь для туплов создавались. https://docs.microsoft.com/ru-ru/dotnet/csharp/discards
>>1421008 Нет, out указывает лишь что переменная передаётся по ссылке. Но out не требует инициализации переменной, т.е. можно было просто объявить её: "int inta;", а уже метод обязан инициализировать, присвоив какое-то значение. Этим out и отличается от ref, который требует инициализации до передачи: "int inta = 0;". И от in, которые вообще запрещает изменять переданную переменную, т.е. ридонли.
>out является уже объявлением переменной? В версии языка 7 можно объявить переменную сразу в аргументе, но для этого нужно указать её тип. Т.е. для объявления нужно было бы написать: ... (..., out int inta);
>>1421019 Я к чему спрашиваю. Я искал язык в котором возможно сделать такое: ЕСЛИ бинарнаяфункция(результат) то функцияработысрезультатом(результат) ИНАЧЕ функцияобработкиотказа(результат)
Не лезь дебил в формы они тебя сожрут! Серьезно, займись сначала основами. Элемент, блять, к файлу обратиться, пиздец. Если ты хочешь окно выбора файла, то есть OpenFileDialog, если нет, то научись задавать конкретные вопросы.
>>1421300 >это кнопка которая проводник откроет нет такой кнопки в формах. Тебе в любом случае обычный button на форме размещать придется и создавать свой обработчик события для это кнопки.
>>1421294 >Я научился основам С++ и уже работал в формах. Не пизди. Вот бы щас сишник-плюсовик не умел интуитивно разобраться в шарпе. Пасаны, не кормите тролля!
>>1421339 >нет такой кнопки в формах Ну, справедливости ради, наверняка там есть что-то наподобие файлтекстбокс с кнопочкой открытия файл-диалога, но не суть.
>>1421537 >наверняка там есть что-то наподобие в таком случае использовать User Control или Custom Control, но опять таки говорю, что тогда придется всё равно писать свой собственный обработчик для этого Control`а
>>1421537 Ты хочешь чтоб в стандартной либе был контрол на любой чих? Ебу дал? У тебя есть текстбокс, кнопка и опенфайлдиалог возьми да собери что тебе надо. Ну или если тупенький, то можешь поискать готовое в каких нибудь девекспрессах и прочем, за монеты разумеется.
>>1421570 >Ты хочешь чтоб в стандартной либе был контрол на любой чих? Ебу дал? В дельфи было. Я щас сходил проверил, да, в винформс такого нет. А в дельфи, в стандартном VCL были компоненты FileTexbox, DateTimeTexbox и т.п. Представляющие собой текстбоксы с кнопачкой справа, вызывающей диалог или комбоокно соответственное. Получается, по сравнению с 90-2000 это шаг назад.
Котаны-джуны, кто собеседования проходил. Дали тестовое задание написать прогу с аргументами командной строки. Решается в 50 строк, ибо совсем изи, но это без комментариев и проверки инпута. На что вообще смотрят обычно на таких заданиях? Расписывать всё пиздец как подробно, каждой запятой коммент нарисовать или как?
>>1421810 Потому что ты еблан. int (например) без приписки, имеет диапазон от -15куча цифр до +15куча цифр. sint - имеет диапазон от -30куча цифр до -1. uint - имеет диапазон от 0 до 30куча цифр.
А байт, который ты, наверное, вспомнил, когда срал этим постом при byte - от 0 до 255. при sbyte - от -256 до -1
>>1421830 >sint - имеет диапазон от -30куча цифр до -1. uint - имеет диапазон от 0 до 30куча цифр. >А байт, который ты, наверное, вспомнил, когда срал этим постом при byte - от 0 до 255. при sbyte - от -256 до -1 Нет?
И как это отвечает на мой вопрос о непостоянности наименований?
>>1421810 Так 's' только у байта. Так уж сложилось, что у байта особый путь™ и он чаще имеет смысл в беззнаковой форме, поэтому его злой брат близнец это signed-byte. У остальных числовых типов основная форма знаковая ибо, как правило, они используются для математики, поэтому их антагонисты - это беззнаковые типы, как например unsigned long. Ну и есть еще недочисловой тип char, который вообще не имеет смысла с отрицательным значением, поэтому у него пары нет совсем.
Вот этого я вообще не понял. Потому что сборки собирают CIL инструкции, а не инструкции для конкретной платформы, код CIL должен составляться на лету перед использованием. Что это вообще должно значить? Дальше, я так понимаю, объясняется, что для составления кода на лету используется JIT.
>>1422047 >CIL должен составляться на лету перед использованием. CIL должен быть скомпилирован [в машинные инструкции] на лету. >>1422047 >Что это вообще должно значить? Процессор понятия не имеет не о каком IL коде, ему нужны ассемблерные комманды, JIT как раз и занимается тем, что переводит IL в инструкции проца на котором работает.
>>1422254 Погуглил немношк. Лютая хрень, но теоретически пригодится, если надо срочно оптимизировать существующий проект, а переписывать в неуправляемый код целиком дорого, а подключать неуправляемые либы запрещено на уровне менеджмента проекта. Так?
Посоны, че реально гуй фреймворков нормыльных нету? WPF немножк мертвый, Формы - без студии не компильнуть, + вообще не кросс, GTK# - тормозной пиздец, биндинги для Qt кривые.
>>1422285 Если ты имеешь ввиду кроссплатформу, то да, реально нету. Выше по треду я искал, мне там даже какую-то хуйню советовали. Можешь ознакомиться.
Немного ламерский вопрос, на которых я хотел бы получить ответ Если вдруг все перейдут на новую ОС, не от Майкрософт и винда будет загниваться, то C# тоже уже мало кому будет нужен?
>>1422289 Если бы разрабы лазаруса запилили порт ЛЦЛ на сишарп и добавили сишарп в Лазарус - моему счастью не было бы предела. ибо ваистену ЛЦЛ бьёт рекорды кроссплатформенности: пишешь прогу под линуксом в среде ГТК, компилишь под винду в нэйтив вин32/64 и она работает! И выглядит идентично! Сука, это волшебство нахуй.
Если я отправляю с клиента на сервер 1000 сообщений по 1000 байт, а сервер прочитал только одно (всё это через TcpClient), то что происходит с остальными? Они ждут отправки на стороне клиента? В каком-то буфере на сервере? Есть ли ограничение на размер этого буфера? Что если этот буффер переполнится? Отвечайте быстро и четко!
>>1422492 Есть ограничения на стороне клиента и на стороне сервера. Твоя 1000 не будет отправляться на сервер, а будет вставать в очередь и отправляться в зависимости от ограничений на количество одновременных соединений. Если сервер не в состоянии обработать сразу 1000 сообщений, то они будут выстраиваться в очередь на хосте, там уже будет либо обработка этих сообщений по мере освобождения нагруженности сервера, либо они все проигнорятся а тебе прилетит ответ с ошибкой 502 или 408.
>>1422754 TCP это транспортный слой, а http это слой приложения. Оба являются протоколами, т. е. используя http ты гарантируешь то, что тебя поймут серверы которые ожидают соответствующих сообщений приходящих из транспортного слоя (т. е. по TCP). Работают на прямую с TCP только в случае если тебе нужно работать с протоколом который известен только тебе и серверу. Если ты будешь посылать неизвестные сообщения используя TCP, то целевой сервер тебя просто не поймёт и проигнорирует.
>>1422757 Net'овский TcpClient бросит исключение или будет ждать пока освободится буфер или дропнет данные? >>1422760 Опять же мне интересна реализация в дотнете, там я могу слать сообщения в одну сторону без ответа, как оно там на транспортном уровне меня пока не интересует.
>>1422769 .NETовский клиент ничего больше, чем обертка над слушателем порта. он даже не узнает, что там какие-то пакеты дропнулись. ему тупо об этом никто не скажет да и вообще, исключениями бросаться в такой ситуации грешно. у тебя и так инфраструктура разрывается от наплыва данных, а ты еще и дорогущими эксепшнами плюешься именно поэтому в распределенных хайлоадах разговоров про сеть больше, чем про реальный код. потому, что хуй пойми что там творится: пакеты пришли/не пришли, пакеты пришли, но как-то не так, пакеты даже не отправились чи хуй пойми что происходит
>>1422950 Двач, такой двач: спошные помидоры 300к/с. >даже не узнает, что там какие-то пакеты дропнулись >пакеты пришли/не пришли, пакеты пришли, но как-то не так, пакеты даже не отправились чи хуй пойми что происходит Тебе не кажется, что это как-то не вяжется с идеей TCP? В общем проверил сам, клиент отправляет 2,5Мб и дальше ждет, пока сервер не прочитает, потом шлет дальше.
>>1422950 >>1423053 И еще есть проперти с таймаутами (по дефолту бесконечность), по истечении которого выбросится IOException, несмотря на дороговизну, разрыв инфраструктуры и хайлоад.
>>1423053 кек ты, как отправитель, понятное дело, получаешь инфу о том, что с данными произошло. но, если ты ось, а у входного устройства уже переполняется буфер и ему еще везут сообщения, ты никак не узнаешь, что там еще пару террабайт ждет обработки. в общем-то об этом я и писал
Антоны, есть задание про виндовс формы. Нужно инициализировать новую форму в методе, создать там всякие элементы и добавить методы. Не могу понять, как добавить новые методы в уже экземпляр класса? Через методы расширения или отражение?
Антоны, расскажите, откуда result, я не понимаю, как это происходит, ведь вот этот вот task => Console.WriteLine("The sum is: " + task.Result) это же по сути сишарп сам создает метод, как туда попадает предыдущий токен Task<Int32> t = Task.Run(() => Sum(CancellationToken.None, 10000)); Task cwt = t.ContinueWith(task => Console.WriteLine("The sum is: " + task.Result));
>>1423556 t.ContinueWith выполняется по завершении t и в качестве одного из параметров принимает делегат Action <Task, Object> т. е. в делегат передается сам t, который уже выполнился, следовательно из которого можно получить t.Result, что у тебя и делается в методе task => Console.WriteLine("The sum is: " + task.Result");
>>1423525 Ты неправильно понимаешь задание. Тебе надо создать класс формы с элементами и методами. И только затем тебе надо создать во внешнем методе создание экземпляра этой твоей формы. Это классика, это знать надо! (мне из-за этой хуйни не перезвонили когда-то в 2006м году)
Как быстро развиваться программисту? Устроился работать в марте, работаю с ограниченным CRM-фреймворком. Пока работать интересно, но нужно думать о будущем. Читаю Рихтера, изучаю ASP.NET. Что ещё посоветуте? Цель следующей весной зарабатывать как минимум 100 в месяц.
Привет, шарпач! Решил вот камбэкнуть и поковырять шарп на досуге, уже работаю фронтенд макакой, но немного заебало и захотелось чего-то нового Посоветуйте каких-то ресурсов с задачками или идей для небольших петпроджектов, чтобы пощупать всю экосистему в целом.
>>1423703 Ну раз делаешь фронт, сделай бэк на шарпе. >чтобы пощупать всю экосистему в целом. и двух жизней не хватит. Выбирай направление, которое интересно и там щупай мэйстрим фреймфорки\либы\етк.
>>1423747 принципы одни и те же API разное если знаешь ASP MVC, за пять секунд схватишь, чем из себя является ASP Core. если знаешь Core, переезжать обратно на MVC/WebAPI будет, как минимум, непривычно
>>1424007 ну все ситуативно. у тебя вряд ли будет возможность ближайшее время щупать Asp Core 3 ближайшее время. почитай про MVC 5, но практикуйся в параллели на коре. можно наоборот, если у тебя будет хоть немножко гарантии, что Core ты сможешь юзать активно, а не для себя по вечерам
>>1424007 Если бы я был ньюфагом в 2к19 и передо мной стояла такая задача, я бы изучал основы информатики и сетей в псевдокоде с блоксхемами, а из языков учил только тот, за который платят.
>>1424016 Двачую. Языки вообще по большей части условность. Знание нюансов реализаций, особенно когда баги выдают за фичи, типа приведения типов в жаваскрипте, не дает особенных преимуществ. Тем более, что выход за рамки стандартных парадигм в отдельных языках не так уж часто случается. Еще реже - дает какие-либо практические преимущества перед стандартным кодом.
>>1424016 Прочитал Грокаем алгоритмы и сейчас почитываю Алгоритмы для начинающих от Луридаса.
Не знаю, насколько я хуевый кандидат. Около двух лет неспешно ковырял разные языки, но делал только мелкие утилитки для себя, да лабы студентам на author24
Потом приперло писать диплом. Я выбрал c# и wpf, и это первый "серьёзный" проект. Думаю, надо было изучать asp.net и сделать кроссплатформенное приложение
Смотря в прошлое, кажется, что это все можно было освоить за месяц, если хуи не пинать. Смотрю на хабре, как студенты свои компиляторы ебашат и руки опускаются
>>1424047 такая же хуйня была но я не забил, просто пытался проходить собеседования уже похуй где и на что. в итоге получил свой оффер, хоть осознавал/осознаю, что, если бы не хуепинание, к моменту когда меня приглашали джуном, мог бы претендовать на уверенного мидла. смертельного нет нихера, но обидно чутка )
>>1424297 >Это разве не равнозначно Нет. Одно проперти, другое филд. А у свойств и полей разное поведение. Попробуй поле объяви в интерфейсе или свойство по out передай. Свойства можно дебажить, ставя бряки на сеттер/геттер. Их можно биндить как источник данных. Не говоря о том, что светить полями наружу нехорошо. А вообще прочитай про разницу между полями и свойствами.
>>1424270 основы языка (v4-) на уровне джуна, .NET 4/3.5, ASP.NET MVC 4 (онли лол), EF model/database first, SQL на уровне джойнов, че-то по DI и паттерны на уровне "знаю, что такие есть, но вопросы чуть сложнее ставят в тупик" по проектам ничего особенного, разные рофло-курсовые да и утилитки для себя/работы на тот момент. я тогда самовкатывался в веб, поэтому какое-то поделие было сделано на MVC (я назвал на собеседовании это говно "внутренней информационной системой", по ходу кого-то впечатлило)
>>1406275 (OP) Здраствуйте! Почему один и тот же быдлокод прекрасно запускается на одном компе, но вываливается в OutOfRange !на этапе компиляции! на другом? На обоих компах vs2015. На одном 64х десятка, на другом 32х 7ка. В этом может быть проблема?
Хочу сделать отображение чисел которые я занес в массив. Какой элемент в визуале для этого использовать? Скажите пожалуйста название или гайд на его использование. List box или listview? Зеленый не бейте
>>1424651 Мне лень запускать студию, я не помню, когда-то давно в дельфи, они оба были для отображения. Что вообще ты подразумеваешь под работой с элементом? Ввод данных? Выбор элемента?
>>1424653 И там и там доступен. Но листвью это более сложный компонент для вывода данных в несколько столбцов или в виде перемещаемых элементом, кароч - окно проводника щиндовс - это листвью.
>>1424760 >>1424755 А вообще, для академических целей тебе Label простой подойдёт. У тебя всё равно все функции программы будут кнопками выполняться. Вот и выводи результаты в Label.
>>1424765 Зачем? У меня задание на создание и сортировку массива. У меня нету проблем с ним, но решил усложнить задачу и вывести массив его красиво графически без соснольки. И вот с этим проблема.
>>1424735 Не слушай чуханов с их листбоксами. Чтобы всё работало тебе нужно привязать контекст датагрида к массиву. Далее при изменения массива, у тебя всё будет обновляться автоматически, как в представлении формы, так и внутри кода.
>>1424846 это ж автогенеренный код, не тебе же писать тыщи строк копипасты чисто с позиции нахуяривания это лучший вариант долбоебы с датагридами - долбоебы
Народ, как можно конвертировать html табличку в массив byte с сохранением символов на кирилице? я Пользовался методами из nuget'ов например CoreHtmlToImage и получалась такая хрень
>>1424853 в дополнение сразу скажу, что сама табличка после построения в браузере отображается нормально, все символы в нужной кодировке. но мне ее надо потом преобразовать в картинку (для контроля), а ее в base64 строчку
>>1424869 Ну так и выбирай хоста, который поддерживает .net. Если тебе нужен asp net, ищи хостинг asp net их много. Если просто net, то бери vps на винде, еще можешь переписать на нет коре и взять впс на лине, они дешевле. А еще я слышал, что на хероку можно запустить asp net, если поебаться с докером, но это не точно.
Сап, шарпач, нужна твоя помощь, пытаюсь запилить справочник номеров с экспортом в ворд. Сначала запилил вывод в текстбокс, там выводит все отлично, теперь пытаюсь этот цикл поместить в ворд, но выходит лишь как на 1 пике, но нужно, чтобы вышло как на 2. Как это сделать?
Анон, у меня будет генерироваться много объектов, допустим 1к в минуту. У каждого должен быть уникальный идентификатор, сами объекты живут 5-10 минут. На сколько надежно будет генерировать ид стандартным рандомом? Хватит инта или лонга, или генерировать гуид? Следить за уникальностью в одном месте не могу, потому что объекты могут генерироваться на удаленных компах.
>>1424947 Грубо говоря, есть запрос и ответ. Так как ответы могут прилетать в случайном порядке или не придти совсем, то я решил сделать айди в запросе, и айди запроса в ответе, чтобы потом сопоставить их. Есть идеи лучше буду рад.
>>1424954 поздравляю, ты описал CorellationId в общих чертах GUID - решение 99.95% таких задач. конечно, от коллизий нельзя быть полностью защищенным, можно пытаться генерировать идентификатор распределенно по правилу {id-хоста}-{id-подгруппы}-{прогнозируемое-локальное-значение}
Извините, что не отвечал — купил новый телефон, и, соответственно, дашчан со всеми постами остался на старом >>1424051 А какой город? Наверное, Москва. В моё мухосрани .NET вакансий ровно джве, причём одна из междугородной компании, которая, как я понял, высвечивается по всей России Твой пост меня приободрил. Спасибо, анон. Сейчас ещё месяц-другой будет, подготовлюсь к собеседованиям >>1424268 У меня не было жёстких рамок касательно проекта. Делал лабораторные для студентов. Предыдущие программы были написаны ровно двадцать лет назад, и нужно было их обновить, добавив новый функционал. В общем, ничего сложного — специальность у меня связана со связью, и дипломная комиссия просто не знала, какие вопросы мне задавать. Так что защитился на отлично, даже не почувствовав хардкора.
Сейчас переделываю эти лабораторные, чтобы было красиво — связь объектов через интерфейсы, тестирование, все дела. На защиту шел с говнокодом, который в спешке дописывал в последние недели. Переделываю с целью выложить на гитхаб, и потом показывать как портфолио
>>1424979 я с Украшки. переезжал в местное ДС4 (наверное лол). был еще оффер чуть раньше с города попроще, но я его задоджил без объяснимых причин (о чем не жалею, в общем-то)
>>1424981 А какой год? Посмотрел вакансии за 2012 — достаточно было прочитать одну книжку и можно было идти на собеседование. Все же сейчас рынок насытился. Похоже, повторяется ситуация с юристами Рад, что у тебя все получилось. На ебаное.ит были посты про чёрные списки в Украине, там совсем ад и Израиль
>>1424984 Львов ну да, я за пол-года, что проходил собесы, наблюдал эволюцию требований от "догадываться как выглядит клавиатура" до "знать и уметь в шаблоны проектирования, MVC, SignalR, WPF и прочие баззворды". на джуна лол. ну, пришлось подстраиваться, а что поделать
Анон, поясни человеку, пришедшему из Джавы: есть старый .NET Framework для CLR и есть мульти-платформенный .NET Core. Во что лучше углубиться, если интересует повышение квалификации?
>>1425052 допустим у тебя главная ветка - master создай условно ветку master2 и слей master в master2 используя squash. master удали конечно не идеальное решение, но у тебя все твои коммиты "склеятся" в один последний (тот, который master --> master2) если в чем то ошибаюсь, напишите плез
>>1412221 Тоесть по книге я смогу сдать на минималку? О книге вкрсе половину прочитал, остальное сложнее. Очень мало новго узнаю. Нашел бесплатние дамп нотам вопросов маловато только. Но некторие идут очень просто.
Есть в шарпе какой-то внятный аналог data/case-классов из котла/скалки? Чтобы в одну строку определять класс, который не содержит методов а только хранит данные? Очень удобная фича в жавамирке была, хочу такую в шарпе.
>>1425638 Хотя если такой класс нужен локально, то возможно неким аналогом может стать тульпа кортеж или анонимный класс: var a = (5, "ss"); //Tuple<int, string> var b = new {Huj = 21, Pizda = "hairy" };
Как вытащить дробные числа из SQLite ? GetFloat() выбрасывает исключение InvalidCast. Через индексатор обрезает дробную часть. Тип данных в БДшке REAL(3,4). Выручайте ребят.
Сап, двач. Объясни по буквам. Есть интерфейс. Где-то там в далеке в этом же пространстве имён, для него есть метод расширения. Также есть класс, который реализует интерфейс. У этого класса есть метод с такой же смгнатурой. Если, мы создадим объект этого класса, приведём его к интерфейсу, и вызовем у интерфейса метод расширения: будет вызван метод расширения или метод в классе?
>>1426173 >выбрасывает исключение InvalidCast В нём должно быть написано, что и к чему ты пытаешься кастовать. Я не телепат, поэтому только вангую, что REAL вытягивается как DOUBLE
>>1426175 Конечно метод расширения. Интерфейсный тип ничего не знает про методы класса, которые его реализуют. И не забывай, что методы расширения это всего лишь сахар, который преобразуется в вызов метода статического класса на этапе компиляции.
>>1426187 >>1426173 Индексатор возращает Double. Методы GetXXX вызывют внутренее исключение в System.Data.SQLite.SQLiteDataReader.VerifyType(Int32 i, DbType typ) Исключение не выводит ни чего интересного. Пишет что приведение типов недопустимое, кидает пару мертвых ссылок на msdn.
>>1426434 Там не нужно два массива, там нужен один массив тасков, результат выполнения которых будет передаваться в виде массива выполненных тасков в Action делегат который ты указываешь в качестве второго параметра. Т. е. ты передаешь массив тасков, после чего в делегате работаешь с этим же массивом тасков, но только уже выполненных.
>>1425991 >Ну да, ведь F# от C# отличается только одной буквой в названии. Как был поставлен вопрос, так и был дан ответ. >data/case-классов из котла/скалки >Очень удобная фича в жавамирке была
А если еще и вытащить мозг из жопы, то окажется, что F# идеально подходит для быстрого прототипирования слоя предметной области как изолированная среда - код описывает только правила бизнеса, а не ебёт тебе мозги как передать данные по сокету или еще какой хуйни, которую можно отловить на стадии компиляции или банально встроена в возможности языка. К тому же, никто не запрещает совмещать C# и F# так же легко, как сделано это в жабамире.
Дополнительно, CIL шире, чем возможности C#. Т.е. новые фичи или копи-паста из F#/VB не реализовываются так же кастрировано, как сделано это в жабе. Например, жабагенерики.
>>1426503 Зависит от поставленной задачи. Чаще всего это смесь нескольких языков, которые не обязательно будут из .NET мира. Часто наблюдал и вовсе, казалось бы, симбиоз .NET и Java миров в одном проекте. Тяжело объяснять что-либо тому, кто не понимает, что язык - это лишь инструмент.
А реальность такая, что бизнесу глубоко насрать на каком языке будет реализована поставленная задача. Чаще всего должно быть сделано быстро, качественно и понятно, чтобы смогла поддерживать код даже тупая макака после тебя. Нет? Так это твои проблемы, бизнес просто найдет другого исполнителя.
>>1426458 >Видишь ли бро я бы и рад но мне ещё деньги зарабатывать надо С такой философией можно смело валить в js мирок и не вылазить от туда. Будешь востребованным, вот только работать будешь за гроши и ощущать свою ежедневную умственную деградацию.
>>1426529 >Чаще всего это смесь нескольких языков, которые не обязательно будут из .NET мира.
И сколько тебе времени потребовалось на то чтобы освоить несколько языков на уровне, который позволяет тебе использовать их при выполнении "боевых" задач?
>>1426533 >И сколько тебе времени потребовалось Большинство языков, с которыми я имел дело, основываются на каких-то общих принципах. Т.е. после некоторого опыта все сводится к банальному заучиванию синтаксических конструкций языка, на что тратится довольно мало времени. Нет необходимости заново изучать наследование или что такое эндоморфизм. А задача сводится к переиспользованию уже наработанной кодовой базы и компоновки с существующей системой.
Типовая задача не требует времени на изучение вообще, так как твоя команда руководствуется уже накопленным опытом.
Нетипичная задача же требует спайк, на основе которого уже и будет приниматься дальнейшее решение. Время варьируется от дня до недели.
И стоит еще понимать, что сейчас много чего сводится больше к знаниям технологий разработки, а не языков, развитие которых тоже не стоит на месте. Но к технологиям такой подход тоже применим.
>>1426595 Я этого не знаю. Наверное, одни хотят сэкономить деньги, повесив "гордую" лычку фуллстек, другие - не поспевают за развитием одновременно и фронта, и бека.
Так какие вещи оборачивать в try-catch? 99% туториалов рассказывают, как это делать, но где и зачем - полный молчок. Пока только выяснил, что оборачиваются методы работы с БД с фоллбеком транкзакции в случае ошибки. Оборачивать все паблик методы сервисов?
Если что, то пишу WPF приложение на MVVM с разделением прожектов на гуй, домен и бизнес леер.
>>1426927 Вообще по бест практисах, если делаешь код которий возвращает статус например ищешь юзера в бизнес логике то статус может бить: найден, не найден, ограничен доступ. То в случаее не найден можно кидать свой appException, которий идет в кетч и обрабативется. А есть более низкоуравнение ексепшини, на пример проверка на null в начале метода, то здесть ексепшин для разработчиков, мол проебался.
>>1426927 условно говоря, все, что может его плюнуть конечно, это не значит, что нужно каждый вызов метода try/catch-ить, но обычно оборачивается монолитный кусок бизнес-логики или операции, которая на своем уровне считается атомарной вообще, никто этого тебе и не расскажет, нет такого однозначного правила - что оборачивать, что нет; где плеваться исключением, где возвращать статус-объект. единственное, что можешь точно понимать, это если код критичен к исключениям и выброс его может завалить тебе приложение (а это, даже в нештатной ситуации допускать нельзя), офк трай-кэтчишь
>>1426927 Там где результат выполнения кода не зависит от твоего приложения и заранее не известен. Чаще всего это сетевые запросы - обрабатывать каждую ошибку очень муторно, поэтому легче обернуть весь запрос в try catch и на эксепшен не связанный с потерью интернет соединения, делать несколько ретраев, после чего уже останавливать работу приложения и писать в лог. Если результат известен, но ты обернул код в трай-кетч, то ты даун, потому что такие блоки очень ресурсозатратны .
Ебаный рот этого дотнета. Почему в 2014 году никто не догадался встроить в него парсер json? Я в итоге вынужден добавлять в проект всякую вишню, лишь бы парсить хуйню типа {"success":true}. А я бы просто хочу и с жсон работать, и не иметь лишних dll в папке с собранной программой. Разве я многого прошу?
Как в wpf убрать эту ебучую белую рамку у выпадающего списка MenuItem? Только шаблон править и больше никак? И если мне надо только убить эту рамку, а остальное оставить как было, то мне грубо говоря надо скопировать весь стандартный шаблон и в нем убрать границу или можно просто переопределить параметр, который за границу эту отвечает, а то что-то я не нагугли по этому вопросу ничего или просто я долбоеб?
>>1427747 Так в том то и дело, что через стили не получается, типо через стиль можно у MenuItem убрать границы, а эту белая залупа у выпадающего списка.
Решил почитать про/пописать процедурную генерацию, пока делал в одном классе всё было ок, когда решил сделать базовый хранящий карту и методы для отрисовки, а заполнение под подклассам раскидать, с наследованием как-то накосячил, но никак не могу понять что не так.
>>1428181 >Я вообще не понимаю, как работать Ну смотри: В компьютере используются полупроводниковые ячейки памяти, которые могут либо пропускать ток (значение 1) либо блокировать (значение 0). Чтобы компьютер мог компьютить, ученые придумали вот что: они разделили последовательности единиц и нулей на управляющие (команды) и информационные (данные). И тут появляются процессоры. У процессоров есть регистры, в которые учёный может записывать управляющие команды, после чего процессор начинает преобразовывать данные и это назвали программами! Это было опизденительно круто! Лучше чем секс! Тысячи ученых в тот день навечно обросли свитером и бородой! Некоторые стали геями. Началась стремительная гонка между гиками - за изобретения универсального языка программирования.
>>1428417 У тебя все рандомы с одним сидом созданы - разница во времени несущественна. Используй статик рандом для генерации сидов. И свойства нормально реализуй.
>>1428524 Потому что инструкция a = a + F() выполняется слева направо, компилятор вначале видит a и подставляет текущее значение 0, после этого он видит F(), выполняет функцию и подставляет значение из нее, в результате выходит a = 0 + 1. Если заменить порядок на a = F() + a, тогда будет так, как ты ожидаешь.
>>1428663 Происходит две вещи: 1. Функция объявлена как возвращающая перечисляемый инт, что позволяет указывать её как множество в foreach. 2. Внутри функции использовано ключевое слово yield, позволяющее отложить выполнение функции до следующего её вызова. Оператор foreach вызывает функцию, чтобы получить первую итерацию i и получает 0, в значение i, которое выводится в консоль, затем он повторно обращается к функции, но так как по факту перечисление в ней не реализовано, происходит конец цикла, однако второй вызов функции позволяет ей завершиться и вывести "1". Вы мне перезвоните?
>>1428687 >но так как по факту перечисление в ней не реализовано, происходит конец цикла Эм, точнее так, поскольку функция возвращает значение только один раз, то цикл завершается. Поскольку отсутствие возвращаемого значения трактуется шарпом, как конец перечисления.
Блять, скачал книгу Троелсона - ебать , это я чё то недогоняю или как ? Любой код в его книге сложнее Привет мир у меня обязательно не работает блять, хотя я буквально ctrlc-ctrlv делаю. Есть книга которая всё ещё попроще описывает, ибо очко уже горит от практически каждого неработающего кода?
>>1428889 С# 6.0 and Net Framework 4.6. Редакцию вроде 2016 года. Или есть более свежие? Хочу другую попробовать, а именно C# Players Guide. Откуда её скачать на русском?
У меня есть два проекта в солюшене консольное, либа и винфоромс. Консольный запускает форму через процесс.старт. Оба пользуют либу. Я могу как-то дебажить методы либы вызываемые из форм?
>>1429056 Удваиваю вопрос. Самом стало интересно. Раньше, у дидов, в иде запускался дебаг либы, затем во втором экземпляре иде запускался дебаг приложения, исключения либы валились в экземпляр 1, исключения приложения в экземпляр 2. Причём, при исключениях в экземпляре 1 экземпляр 2 нельзя было трогать, даже мышкой по нему водить, ибо он вис наглухо.
>>1428852 Есть Шилдт, они примерно одного уровня, но Шилдт для совсем нулевых получше заходит, после него уже Троелсена попробуй. Если в добавок еще и тупой, то попробуй mycsharp.ru, каких-то знаний там там не плучишь, но по-быстрому освоить что куда писать в самый раз.Сам так делал.
>>1429051 мое изучение шарпа пока длится менее 10 часов.
почему вызываются методы не те, которые объявлены как оверрайд? Возьмем вариант без класса С - https://pastebin.com/fr34nfQ2. Я рассуждаю так. У нас есть виртуальный метод F в классе А. Слово virtual нужно для реализации оверрайда данного метода. Мы наследует B от А и используем ключевое слово override, чтобы вместо наследуемого из А виртуального метода вызывался определенный в B метод с аналогичным именем и вектором параметров. Соответственно я ожидаю, что именно он и будет вызван. Тем более мы делаем вызов с интовым параметром. Так почему же вызывается не-override метод? почему компилится в это IL_000d: call instance void Problems.Program/B::F(object) и почему эта строка в IL-коде соответствует не-оверрайд методы?
>>1429056 >>1429068 Нашел такие два решения: 1. Debug -> Attach to process и там цеплять форму. Вариант не очень, ибо надо это делать каждый раз. 2. Вместо запуска через процесс.старт настроить multiple startup projects в Set sturtup project указав та что дебажить. Уже лучше. Продолжаю искать варианты..
>>1429085 >>1429093 В двух словах не получится (самое короткое и правильное это параграф 7.5.3 спеки). Но во первых не путай override и overload, я думал превый пос про оверлоад, а тут оказывается про оверрйад. Давай ты четко задашь вопрос с минимумом мтодов/классов а я попробую ответить.
>>1429093 Опередили. Ты перепутал оверлоад с оверрайдом и не указал оверлоад. Следовательно, без оверлоада метод с совпадающим именем удаляется из интерфейса.
>>1410724 Я опоздал наверное, но можно организовать какой-нибудь пинг или проверку потока пакетов с игрока. Они прекращаются - соединение оборвалось - всё, он оффлайн.
Есть очень часто вызываемый метод который принимает массив в результате анализа должен создать новый массив и затем используя его вызывать другой метод. Встал вопрос производительности, на какой стул лучше сесть? 1) Оставить тупо new List<MyStruct>() которые в результате каждого вызова аллоцирует новый массив в памяти. 2) Вынести List<MyStruct>() за пределы метода и каждый раз делать .Clear() вначале метода. (Архитектура позволяет, так как этот метод должен и будет работать только в однопоточном коде) 3) Пробегать коллекцию перед анализом лишний раз чтобы узнать необходимый размер и затем делать stackalloc MyStruct[size] Что по вашему будет давать большую производительность? size проанализированного массива обычно от 1 до 30-50 элементов, в 90% случаев меньше 10 элементов.
>>1429121 Преждевременная оптимизация - корень всех зол. Если ты уже определил, что проблема в данном месте, то первое, что стоит сделать это проанализировать алгоритм и используемые структуры данных, если косяк в них, то исправив/улучшив можно увеличить производительность в разы. Ну и последний вариант это байтоебство, тут можно выжимать наносекунды,но если вызовов миллионы в секунду это сложится в некоторый буст.
>>1429121 Вместо List используй OrderedDictionary если нужен доступ по индексу, либо Dictionery если доступ по индексу не нужен. У List сложность O(n), а у OrderedDictionary/Dictionary O(1).
>>1429271 А как же зло аллокации? Метод 20-30к раз в секунду вызываться будет и получается каждый раз лезть в кучу и нагружать GC затем. Может быть в работе самого метода разницы не будет, но вот в общем то должно быть.
>>1429280 Сейчас же выдали Span и Memory, почему бы не использовать их для временных данных вместо того чтобы создавать массивы в куче, тупо объявлять их на стеке?
>>1429301 Плохая идея. Добавление в любой Ordered это сверх дорогая операция, а к листу и так по индексу 1 сложность, ведь это же тупо доступ в массив.
>>1429385 Потому что Data это гет проперти, которое каждый раз возвращает енумератор нового листа. while (a.Data.MoveNext()) //каждую итерацию создается новый лист
>>1429382 Добавление в лист по индексу действительно имеет сложность N. Но я говорил про доступ, он 1 как и обычно add 1. В моей задаче нужен индекс для получения, а не добавления. Но любая Ordered коллекция по определению дороже обычной.
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/1366885.html
Прошлый тред тонет здесь: https://2ch.hk/pr/res/1378307.html